Einführung in ORACLE SQL SQL Datendefinition Datenmanipulation Zugriffsrechte • Basiert auf dem Aufsatz von E. Codd 1970 “A Relational Model for Large Shared Data Banks” Benutzer anlegen GRANT <privilege> TO <user>; • Deskriptive Sprache basierend auf dem Relationenkalkül (Prädikatenlogik 1. Ordnung) Benutzer löschen REVOKE <privilege> FROM <user>; • Anlegen von Tabellen Rollen • Nutzerbereiche einrichten CREATE ROLE <role> IDENTIFIED BY <password>; GRANT <role> TO <user>; • Zugriffsrechte bestimmen Passwort ändern ALTER USER <user> IDENTIFIED BY <password>; • Einfügen, Ändern, Suchen & Löschen von Daten • Steuerung von Transaktionen oder einfacher in SQL*Plus: PASSW[ORD] berlin Technische Universität Berlin LV Datenbanksysteme berlin LV Datenbanksysteme Technische Universität Berlin Computergestützte Informationssysteme (CIS) Computergestützte Informationssysteme (CIS) Datendefinition: Tabellen (1) Datendefinition: Tabellen (2) Tabellen anlegen CREATE TABLE <name> ( { <columnElement> | <tableConstraint>} [, { <columnElement> | <tableConstraint> } ]… ); <columnElement> ::= <colName> { VARCHAR(<size>) | DATE | NUMBER (<s>,<nk>) } [ <columnConstraint> ] Beispiel CREATE TABLE Ergebnis (PNr NUMBER (2) ,MatNr NUMBER (7) ,Pruefer VARCHAR (20) ,Termin DATE ,Note NUMBER (2,1) ); Zum Datentyp DATE Das Grundformat für den Datentyp DATE lautet: ‘24-Apr-98’ Zum Datentyp CHAR Das Grundformat für den Datentyp CHAR lautet: ‘text’ Computergestützte Informationssysteme (CIS) LV Datenbanksysteme Technische Universität Berlin berlin berlin LV Datenbanksysteme Technische Universität Berlin CHECK (Note < 6) ,PRIMARY KEY (PNr, MatNr) ,FOREIGN KEY (PNr) REFERENCES Pfach ,FOREIGN KEY (MatNr) REFERENCES Student <columnConstraint> ::= [ DEFAULT <value>] [NOT NULL] [ UNIQUE | PRIMARY KEY ] [ CHECK (<condition>) ] <tableConstraint> ::= FOREIGN KEY (<columnName) REFERENCES [<user>.] <table> PRIMARY KEY (<columnName> [, <columnName> ]…); NOT NULL NOT NULL NOT NULL Computergestützte Informationssysteme (CIS) Datendefinition: Tabellen (3) Datenmanipulation (1) Tabellen löschen DROP TABLE <name>; Attribute hinzufügen ALTER TABLE <name> ADD ( { <columnElement> | <tableConstraint>} [, { <columnElement> | <tableConstraint>} ]… ); Attributtyp Ändern Daten einfügen ALTER TABLE <name> MODIFY ( <columnElement> [, <columnElement> ]… ); Anzeigen der Definition DESCRIBE <table>; Anzeigen aller Defs. SELECT * FROM cat; INSERT INTO <table> [ ( <column> [, <column>]… ) ] VALUES ( <value> [, <value>]… ); INSERT INTO Ergebnis VALUES ( 6, 951058, ‘Oheim’, ‘19-DEC-97’, 2.0); Konvertierung und Formatmasken INSERT INTO Ergebnis VALUES ( 6, 951058, ‘Oheim’, TO_DATE(‘19.2.2000’, ‘DD.MM.YYYY’), 2.0); Suchen SELECT [ DISTINCT ] { * | <attr> [ , <attr>]… } FROM <table> [, <table>]… WHERE <condition>; SELECT s.MatNr, Name, Note FROM Ergebnis erg, Student s WHERE s.Matnr = erg.Matnr and Note < 3; LV Datenbanksysteme berlin Technische Universität Berlin berlin LV Datenbanksysteme Technische Universität Berlin Computergestützte Informationssysteme (CIS) Computergestützte Informationssysteme (CIS) Datenmanipulation (2): Anfragen mit Funktionen Datenmanipulation (3) Funktionen Für Berechnungen über Spalten stellt SQL Funktionen wie COUNT, MIN, MAX, AVG, SUM, VARIANCE & STDDEV bereit Daten löschen DELETE [ FROM ] <table> [ WHERE <condition> ]; DELETE FROM Student WHERE MatNr = ‘951570’; Beispiel: Das (digitale) Prüfungsamt interessiert sich für die Durchschnittsnote aller Studenten Daten ändern UPDATE <table> SET <column> = <expr> [ , <column> = <expr> ]… WHERE condition; SELECT AVG(Note) FROM Ergebnis; Gruppen Beispiel: Das (digitale) Prüfungsamt interessiert sich für die Anzahl der abgelegten Prüfungen und den Durchschnitt der jeweiligen Studenten UPDATE Student SET Name = ‘Meyer’ WHERE MatNr = 951058; Transaktionen Eine Folge von SELECT, DELETE & UPDATE kann zu Transaktionen zusammengefaßt werden SELECT erg.MatNr, Name, Vorname, COUNT(Note), AVG(Note) FROM Ergebnis erg, Student s WHERE s.MatNr = erg.MatNr GROUP BY erg.Matnr, Name, Vorname; • • COMMIT; ROLLBACK; Computergestützte Informationssysteme (CIS) LV Datenbanksysteme Technische Universität Berlin berlin Technische Universität Berlin berlin LV Datenbanksysteme Bestätigen der Transaktion Verwerfen der Transaktion Computergestützte Informationssysteme (CIS) Datendefinition: Views Views Optimierung der Datendefinition • Views erzeugen virtuelle Tabellen auf der Basis von Anfragen • Views definieren das externe Schema auf Basis der bestehenden Tabellen (konzeptuelles Schema) CREATE VIEW <name> AS <query>; Sekundärschlüssel anlegen CREATE INDEX <name> ON <table> (<column> {ASC | DESC} [, <column> {ASC | DESC} ]… ); Schlüsselwerte erzeugen CREATE SEQUENCE <name> [ INCREMENT BY <step> ] [ START WITH <value> ] ; CREATE VIEW GimGepruefteStudenten AS SELECT s.MatNr, Name, Note FROM Student s, Ergebnis erg, Pfach p WHERE Fach = 'GIM' AND p.Pnr = erg.Pnr AND erg.MatNr = s.MatNr; CREATE SEQUENCE PNrSequence; INSERT INTO Pfach VALUES (PNrSequence.nextval, …); Synonyme anlegen SELECT * FROM GimGepruefteStudenten WHERE Name = 'Meier'; CREATE SYNONYM <name> FOR [<user>.] { <table> | <sequence> | <synonym> }; Technische Universität Berlin Computergestützte Informationssysteme (CIS) Computergestützte Informationssysteme (CIS) SQL*Plus Der Zeileneditor SQL*Plus besitzt einen primitiven Zeileneditor, der die folgenden Möglichkeiten zur Verfügung stellt: c/<old>/<new> r SQL Skripte ersetzt <old> durch <new> im letzten Kommando führt das letzte Kommando nochmals aus Eine Folge von SQL Befehlen kann in einer Datei gesammelt und als Skript in SQL*Plus ausgeführt werden. Beispiel: “~cispub/datenbanken/WS-0304/Oracle-Sourcen/pruefung.sql” SQL> @/home/cis/cispub/datenbanken/WS-0304/Oracle-Sourcen/pruefung berlin LV Datenbanksysteme Technische Universität Berlin Computergestützte Informationssysteme (CIS) LV Datenbanksysteme berlin Technische Universität Berlin berlin LV Datenbanksysteme