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