SQL in Visual FoxPro

Download Report

Transcript SQL in Visual FoxPro

SQL in Visual FoxPro
SQL Historie







SQL - Structured Query Language
In den 70er Jahren von IBM entwickelt
1986 zum ANSI Standard erhoben
1987 Übernahme des Standard von ISO
1989 erweitert wobei der 86er Standard als
SQL89/Level1 übernommen wurde
Letzte Erweiterung von 1992 wird SQL2 oder
SQL92 genannt.
Heute die Abfragesprache für alle relationalen
Datenbanksysteme
© 1999 TMN-Systemberatung GmbH
SQL - SELECT (1)

SELECT Select_Item
FROM Table

Sortierung
ORDER BY Feldname
ASC (Default) | DESC

Selektion
WHERE Klausel
© 1999 TMN-Systemberatung GmbH
SELECT * ;
FROM CUSTOMER
SELECT NAME,VORNAME ;
FROM CUSTOMER
SELECT * ;
FROM CUSTOMER ;
ORDER BY NAME ASC , ;
VORNAME DESC
SELECT * ;
FROM CUSTOMER ;
WHERE NAME = „Alt“ ;
ORDER BY VORNAME
SQL - SELECT (2)

BETWEEN ;
Wert1 AND Wert2
(Grenzwerte sind inklusive)

IN (Wert1,Wert2,Wert3)
Wertegruppe prüfen

LIKE
Zeichenkettenvergleich mit
Wildcards:
–
–
„_“ ein bel. Zeichen
„%“ beliebige Anzahl bel.
Zeichen
© 1999 TMN-Systemberatung GmbH
SELECT * ;
FROM CUSTOMER ;
WHERE PLZ BETWEEN ;
74000 AND 74999
SELECT * ;
FROM CUSTOMER ;
WHERE PLZ IN (74072, 74076)
SELECT * ;
FROM CUSTOMER ;
WHERE NAME LIKE „A%“
(Alle Kunden deren Name
mit A beginnt)
SQL - SELECT (3)

GROUP BY (Gruppierung)
mit GROUP BY können Sie
Sätze des Ergebnis Cursors
zu einem Satz
zusammenfassen


AS Klausel
Der entstehenden Spalte
einen definieren Namen
zuordnen
COUNT(*)
Anzahl der Datensätze
zählen.
© 1999 TMN-Systemberatung GmbH
SELECT COUNTRY, ;
COUNT(*) AS ANZAHL ;
FROM CUSTOMER ;
GROUP BY COUNTRY
SQL - SELECT (4)

HAVING - Einschränken
des Ergebnis Cursors

FUNKTIONEN:
–
–
–
MIN, MAX
SUM, AVG, COUNT
Sinnvoller Einsatz nur bei
Gruppierung
© 1999 TMN-Systemberatung GmbH
SELECT Region, ;
COUNT (*) AS ANZAHL ;
FROM CUSTOMER ;
GROUP BY REGION ;
HAVING ANZAHL > 1
(Alle Regionen, welche mehr als
einen Datensatz enthalten)
SQL - SELECT (5)

SELECT COUNT DISTINCT PLZ;
DISTINCT
AS ANZAHL ;
Nur unterschiedliche
Werte werden beachtet. FROM CUSTOMER
(Anzahl der unterschiedlichen
Postleitzahlen in der Tabelle ausgeben)

UNTERABFRAGEN
© 1999 TMN-Systemberatung GmbH
SELECT NAME
FROM CUSTORMER ;
WHERE UMSATZ >= ;
( SELECT AVG(UMSATZ) ;
FROM STATISTIK )
(Alle Kunden, welche den Max Umsatz
erreicht haben heraussuchen)
SQL - SELECT (6)

UNTERABFRAGEN mit
WHERE :
–
ALL
ANY
EXISTS
–
IN
–
sowie mit NOT kombiniert
(Rushmoore greift nicht ! )
–
–
© 1999 TMN-Systemberatung GmbH
WHERE UMSATZ > ALL (SELECT...)
WHERE UMSATZ < ANY (SELECT...)
WHERE EXISTS (SELECT...)
(Vergleich Unterabfrage leer .T. / .F.)
WHERE KDNR IN (SELECT KDNR
FROM ...)
SQL - SELECT (7)

SELECT über mehrere
Tabellen
SELECT Customer.NAME, ;
Orders.Summe ;
FROM Customer, Orders ;
WHERE Customer.id = ;
Orders.CustormerId

lokaler Alias
ODER verkürzt:
SELECT C1.NAME, O1.Summe ;
FROM Customer C1, Orders O1;
WHERE C1.id = O1.CustormerId
© 1999 TMN-Systemberatung GmbH
SQL - SELECT (8)

LEFT
–

RIGHT
–

Alle Daten der rechten Tabelle,
und die übereinstimmenden der
linken Tabelle
INNER
–

Alle Daten der linken Tabelle, und
die übereinstimmenden der rechten
Tabelle
JOINS
nur die übereinstimmenden
Daten der linken und rechten
Tabelle
FULL
–
Alle Daten der rechten Tabelle, sowie alle Daten der linken Tabelle, wobei
übereinstimmende Sätze zugeordnet werden.
© 1999 TMN-Systemberatung GmbH
SQL - SELECT (8)

AUSGABE des Ergebnisses in:
–
–
–
–
–
–
INTO CURSOR [NOFILTER]
INTO DBF | TABLE
INTO ARRAY
TO FILE [ADDITIVE]
TO PRINTER
TO SCREEN
© 1999 TMN-Systemberatung GmbH
VFP Neuerungen (1)

SELECT TOP
Selektion der ersten xx
Sätze wobei die Order By
Klausel entscheidend ist

SELECT TOP PERCENT

Selektion der ersten xx
Prozent der Sätze wobei die
Order BY Klausel
entscheidend ist.
Achtung: Sätze welche in
der Sortierfolge übereinstimmen werden nur einmal
gezählt -> event. mehr Sätze
im Ergebnis als erwartet.
© 1999 TMN-Systemberatung GmbH
SELECT TOP 10 NAME ;
FROM CUSTOMER ;
ORDER BY UMSATZ
SELECT TOP 10 PERCENT NAME ;
FROM CUSTOMER ;
ORDER BY UMSATZ
VFP Neuerungen (2)

FORCE
–
Mit FORCE können Sie erzwingen, daß die WHERE
Bedingung von Links nach Rechts abgearbeitet wird.
(Dies macht vor allem für die Optimierung größerer Abfragen Sinn.)

NOFILTER
–
–
Mit NOFILTER können Sie erzwingen, daß ein temporäre
Tabelle erstellt wird !
Nur NOFILTER Cursor können Sie mit SELECT
weiterverarbeiten
© 1999 TMN-Systemberatung GmbH
SQL - SELECT im Überblick
SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]]
[Alias.] Select_Item [AS Column_Name]
[, [Alias.] Select_Item [AS Column_Name] ...]
FROM [FORCE]
[DatabaseName!]Table [[AS] Local_Alias]
[[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN
DatabaseName!]Table [[AS] Local_Alias]
[ON JoinCondition …]
[[INTO Destination]
| [TO FILE FileName [ADDITIVE] | TO PRINTER [PROMPT]
| TO SCREEN]]
[PREFERENCE PreferenceName]
[NOCONSOLE]
[PLAIN]
[NOWAIT]
[WHERE JoinCondition [AND JoinCondition ...]
[AND | OR FilterCondition [AND | OR FilterCondition ...]]]
[GROUP BY GroupColumn [, GroupColumn ...]]
[HAVING FilterCondition]
[UNION [ALL] SELECTCommand]
[ORDER BY Order_Item [ASC | DESC] [, Order_Item [ASC | DESC] ...]]
© 1999 TMN-Systemberatung GmbH
Weitere SQL Befehle

INSERT INTO dbf_name [(fname1 [, fname2, ...])]
VALUES (eExpression1 [, eExpression2, ...]) oder:

INSERT INTO dbf_name FROM ARRAY ArrayName |
FROM MEMVAR

UPDATE [DatabaseName!]TableName
SET Column_Name = eExpression
[WHERE FilterCondition]

DELETE FROM [DatabaseName!]TableName
[WHERE FilterCondition]
© 1999 TMN-Systemberatung GmbH
SQL zu Wartungszwecken




CREATE DATABASE
CREATE TABLE
ALTER TABLE
CREATE CURSOR
temporäre Tabelle erstellen, diese kann wie jede andere
VFP Tabelle verwendet werden. (Also nicht
schreibgeschützt !)

CREATE SQL VIEW
© 1999 TMN-Systemberatung GmbH
Anregungen und Fragen
TMN-Systemberatung GmbH
Allee 62
74072 Heilbronn
http://www.tmn-systemberatung.de
[email protected]
© 1999 TMN-Systemberatung GmbH