ansi-sql92 BACK .. ein paar ANSI-SQL/92-Befehle ============================ ############################################################################### ### ANSI-SQL/92 ############################################################################### # ### erstellt eine Tabelle: > CREATE TABLE [Tabelle] ([Spalte1] INTEGER, [Spalte2] VARCHAR(30)); ### erstellt eine Tabelle mit automatischer Nummerierung (Sequenz): > CREATE SEQUENCE spalten-seqenz; > CREATE TABLE [Tabelle] ([Spalte1] INTEGER PRIMARY KEY DEFAULT nextval('spalten-seqenz'), [Spalte2] VARCHAR(30)); ### traegt einen Datensatz in eine Tabelle ein: > INSERT INTO [Tabelle] ([Spalte1], [Spalte2]) VALUES (1, 2); ### aendert einen Datensatz in einer Tabelle: > UPDATE [Tabelle] SET [Spalte]=[neuer-Wert],[Spalte]=[neuer-Wert] WHERE [Kontroll-Spalte]=[Wert] AND [Kontroll-Spalte]=[Wert] OR [Kontroll-Spalte]=[Wert]; ### zeigt den Inhalt einer Tabelle: > SELECT * FROM [Tabelle1]; ### zeigt den Inhalt einer Tabelle ohne Duplikate: > SELECT DISTINCT * FROM [Tabelle1]; ### zeigt die Anzahl der Zeilen einer Tabelle: > SELECT COUNT(*) FROM [Tabelle1]; ### zeigt die Summe aller Eintraege in der Spalte "alter": > SELECT SUM(alter) FROM [Tabelle1]; ### zeigt den groessten Wert aller Eintraege in der Spalte "alter": > SELECT MAX(alter) FROM [Tabelle1]; ### zeigt den kleinsten Wert aller Eintraege in der Spalte "alter": > SELECT MIN(alter) FROM [Tabelle1]; ### zeigt den Durchschnittswert aller Eintraege in der Spalte "alter": > SELECT AVG(alter) FROM [Tabelle1]; ### zeigt nur die Spalten einer Tabelle, die die "WHERE"-Bedingung erfuellen: > SELECT [Spalte], [Spalte], [Spalte] FROM [Tabelle1], [Tabelle2], [Tabelle3] WHERE [Tabelle1].[Spalte1]=[Tabelle2].[Spalte1] AND [Tabelle1].[Spalte2]=[Tabelle2].[Spalte2]; ### eine Spalte hinzufuehgen: > ALTER TABLE [Tabelle] ADD COLUMN [Spalte] INTEGER; ### loescht eine Tabelle: > DELETE FROM [Tabelle]; ### loescht nur die Spalten einer Tabelle, die die "WHERE"-Bedingung erfuellen: > DELETE FROM [Tabelle] WHERE [...]; ### OUTER JOIN > SELECT * FROM [Tabelle1] LEFT OUTER JOIN [Tabelle2] ON ([Tabelle1].[Spalte] = [Tabelle2].[Spalte]); > SELECT * FROM [Tabelle1] LEFT OUTER JOIN [Tabelle2] USING ([Spalte]); ############################################################################### ### Nicht ANSI-SQL/92 ############################################################################### # ### leeren einer Tabelle: > TRUNCATE TABLE [Tabelle]; ### Namen einer Spalte in einer Tabelle aendern: > ALTER TABLE [Tabelle] RENAME COLUMN [Spalte-alt] TO [Spalte-neu]; ### hinzufuegen einer Spalte in einer Tabelle: > ALTER TABLE [Tabelle] ADD COLUMN [Spalte]; ### loeschen einer Spalte aus einer Tabelle: > ALTER TABLE [Tabelle] DROP COLUMN [Spalte]; #------------------------------------------------------------------------------ ### loeschen einer Tabelle: > DROP TABLE [Tabelle]; #------------------------------------------------------------------------------ Damit auch andere User auf die Datenbank zugreifen duerfen, kann man ihnen die Rechte mit "GRANT" einraeumen: (Mit "REVOKE" koennen diese Rechte wieder Entzogen werden.) Auch der [User] kann einen [Befehl] ausfuehren: > GRANT [SELECT|INSERT|UPDATE|DELETE|RULE|ALL|objekt|PUBLIC|GROUP gruppe|benutzername] ON [Tabelle] TO [User]; objekt: tabelle sicht sequenz gruppe: Name einer "gruppe", der Rechte gewaehrt werden. ALLE User koennen ALLE Befehle ausfuehren: > GRANT ALL ON [Datenbank] TO PUBLIC; Nur Fritz darf ALLE Befehle ausfuehren: > GRANT ALL ON [Datenbank] TO fritz; #------------------------------------------------------------------------------ Beispiele als gepackte SQL-Dateien fuer PostgreSQL. #------------------------------------------------------------------------------ [IMG]