Beratung Organisation Softwareentwicklung Einführung EinführungininSQL SQL(Structured (Structured Query QueryLanguage) Language) seit 1969 Einführung in SQL Gliederung Gliederung • Übersicht • Data Definition Language (DDL) – – – – – TABLE VIEW SEQUENCE SYNONYM INDEX • Data Manipulation Language (DML) – – – – – INSERT UPDATE DELETE SELECT COMMIT / ROLLBACK 12.02.2007 PTA GmbH, Unternehmensberatung 2 Einführung in SQL Übersicht Übersicht • SQL (Structured Query Language) ist die Standard-DatenbankZugriffssprache. • Man unterscheidet zwischen: – DDL (Data Definition Language), d.h. Sprachkonstrukten, um Daten zu definieren. – DML (Data Manipulation Language), d.h. Sprachkonstrukten, um Daten in die Datenbank einzufügen, zu ändern, zu löschen oder aus der Datenbank abzurufen. • Syntax und Beispiele orientieren sich an Oracle Version 7. • Nur die wichtigsten Elemente der Syntax werden beschrieben. 12.02.2007 PTA GmbH, Unternehmensberatung 3 Einführung in SQL Gliederung Gliederung • Übersicht • Data Definition Language (DDL) – – – – – TABLE VIEW SEQUENCE SYNONYM INDEX • Data Manipulation Language (DML) – – – – – INSERT UPDATE DELETE SELECT COMMIT / ROLLBACK 12.02.2007 PTA GmbH, Unternehmensberatung 4 Einführung in SQL Gliederung Gliederung • Übersicht • Data Definition Language (DDL) • Data Manipulation Language (DML) • Transaktionssteuerung 12.02.2007 PTA GmbH, Unternehmensberatung 5 Einführung in SQL DDL DDL • Mit DDL-Statements können Schema-Objekte in der Datenbank verwaltet (angelegt, geändert, gelöscht ) werden. • Schemata sind logische Bereiche in der Datenbank, die in der Regel einem Benutzer zugeordnet sind. • Die Objekte, die ein Benutzer erzeugt wie Tabellen, Indizes, Views usw. liegen im Schema dieses Benutzers. 12.02.2007 PTA GmbH, Unternehmensberatung 6 Einführung in SQL DDL DDL-- Beispiel Beispielfür für Schema Schemaund undSchema-Objekte Schema-Objekte User/Schema Schema-Objekte ObjektTyp scott scott.emp scott.dept scott.order scott.orderView scott.order.Seq table 12.02.2007 PTA GmbH, Unternehmensberatung view sequence 7 Einführung in SQL DDL DDL-- Schema-Objekttypen Schema-Objekttypen Schema-Objekt Beschreibung TABLE Eine Tabelle speichert Daten in Zeilen und Spalten. VIEW Eine View ist eine virtuelle Tabelle: sie zeigt Daten aus einer oder mehreren Tabelle(n) oder View(s) basierend auf einer Abfrage. SEQUENCE Eine Sequence ist ein Generator zum Erzeugen von eindeutigen Nummern. SYNONYM Ein Synonym ist ein weiterer Name für ein Schema-Objekt. INDEX Indizes sind Strukturen, die Tabellen (und Clustern) zugewiesen werden können, um SQL-Zugriffe zu beschleunigen. CLUSTER Cluster bieten die Möglichkeit, zusammengehörige Daten mehrerer Tabellen physikalisch zusammenhängend zu speichern. 12.02.2007 PTA GmbH, Unternehmensberatung 8 Einführung in SQL DDL DDL-- CREATE CREATETABLE TABLE(Tabelle (Tabelleanlegen) anlegen) • Syntax: CREATE TABLE [ <schema_name>.]<table_name> ( <column_name> <datatype>[( <size> ) ] [ <column_constraint> ], ... ) [<table_constraint> ] ... [ PCTFREE <percent free space for updates per block>] [ PCTUSED <percent space used for inserts per block> ] [ INITTRANS <initial transaction entries per block> ] [ MAXTRANS <maximal transaction entries per block ] [ TABLESPACE <tablespace_name> ] [ CLUSTER <cluster_name> (<key_column>, ..) ] [ STORAGE <storage clause > ]; 12.02.2007 PTA GmbH, Unternehmensberatung 9 Einführung in SQL DDL DDL-- CONSTRAINT CONSTRAINT(Regeln) (Regeln) • Syntax: <table_constraint> := CONSTRAINT <constraint_name> UNIQUE (<column_name>, ...) PRIMARY KEY (<column_name>, ...) FOREIGN KEY (<column_name>,...) REFERENCES <table_name>[(<column_name> [,..])] USING INDEX [ PCTFREE <percent free space per block> ] [ PCTUSED <percent space used for inserts per block> ] [ INITTRANS <initial transaction entries per block> ] [ MAXTRANS <maximal transaction entries per block ] [ TABLESPACE <tablespace_name> ] [ STORAGE <storage clause > ]; 12.02.2007 PTA GmbH, Unternehmensberatung 10 Einführung in SQL DDL DDL-- STORAGE STORAGE(Speicherdefinition) (Speicherdefinition) • Syntax: <storage clause> STORAGE ( INITIAL <size> K | M NEXT <size> K | M MINEXTENTS <size> MAXEXTENTS <size> | UNLIMITED PCTINCREASE <size> ) 12.02.2007 PTA GmbH, Unternehmensberatung 11 Einführung in SQL DDL DDL-- Beispiele BeispieleCREATE CREATETABLE TABLE create table AUTOR ( ID integer not null, NAME varchar2(40) ); create table LITERATUR ( ID integer not null, TITEL varchar2(40), AUTOR integer, LITERATURTYP integer, ORT varchar2(20), JAHR integer, ZEITSCHRIFT varchar2(40), JAHRGANG varchar2(20), BAND integer, VONSEITE integer, BISSEITE integer ); 12.02.2007 PTA GmbH, Unternehmensberatung 12 Einführung in SQL DDL DDL-- ALTER ALTERTABLE TABLE (Tabelle (Tabelleändern) ändern) • Syntax: ALTER TABLE [ <schema_name>.]<table_name> Spalte hinzufügen ADD ( <column_name> <datatype>[( <size> ) ] [ <column_constraint> ], ... ) (<table_constraint> ... ) / Spalte ändern MODIFY (<column_name> <datatype>[( <size> ) ] [ <column_constraint> ], ... ) Spalte löschen | CONSTRAINT <constraint_name> ] / DROP [ PRIMARY | UNIQUE ( <column> , ... ) | CONSTRAINT <constraint_name> ] [ [ [ [ [ PCTFREE <percent free space for updates per block> ] PCTUSED <percent space used for inserts per block> ] INITTRANS <initial transaction entries per block> ] MAXTRANS <maximal transaction entries per block ] STORAGE <storage clause> ]; 12.02.2007 PTA GmbH, Unternehmensberatung 13 Einführung in SQL DDL DDL-- Beispiele BeispieleALTER ALTERTABLE TABLE alter table Autor add constraint Autor_pk primary key (id) using index tablespace ts4idx; alter table Literatur add constraint Literat_pk primary key (id) using index tablespace ts4idx add constraint Autor_fk foreign key (autor) references Autor(id); 12.02.2007 PTA GmbH, Unternehmensberatung 14 Einführung in SQL DDL DDL-- DROP DROPTABLE TABLE(Tabelle (Tabellelöschen) löschen) • Syntax: DROP TABLE [ <schema_name>.]<table_name> CASCADE CONSTRAINTS; • Beispiel: drop table autor cascade constraints; 12.02.2007 PTA GmbH, Unternehmensberatung 15 Einführung in SQL DDL DDL-- CREATE/DROP CREATE/DROPVIEW VIEW(Sichten (Sichtenauf aufTabellen Tabellen)) • Syntax für das Anlegen/Ändern: CREATE [ OR REPLACE ] [ FORCE | NO FORCE ] VIEW [ <schema_name>.]<view_name> ( <column_alias >, ..... ) AS <subquery> [ WITH READ ONLY | CHECK OPTION [ CONSTRAINT <constraint_name> ] ]; • Syntax für das Löschen: DROP VIEW 12.02.2007 [ <schema_name>.]<view_name>; PTA GmbH, Unternehmensberatung 16 Einführung in SQL DDL DDL-- Beispiel BeispielView View drop view AutorLiteraturView1; create or replace view AutorLiteraturView1 (Autor, Titel, Typ, Ort, Jahr) as select a.name, b.titel, c.beschreibung, b.ort, b.jahr from Autor a, Literatur b, Literaturtyp c where a.id = b.autor and b.literaturtyp = c.id; 12.02.2007 PTA GmbH, Unternehmensberatung 17 Einführung in SQL DDL DDL-- CREATE/DROP CREATE/DROPSEQUENCE SEQUENCE(Zähler) (Zähler) • Syntax für das Anlegen/Ändern einer Zählnummer: CREATE | ALTER SEQUENCE [<schema_name>.]<sequence_name> INCRMENT BY <integer> START WITH <integer> MAXVALUE <integer> MINVALUE <integer> CYCLE | NOCYCLE CACHE | NOCACHE; • Syntax für das Löschen einer Zählnummer: DROP SEQUENCE 12.02.2007 [<schema_name>.]<sequence_name>; PTA GmbH, Unternehmensberatung 18 Einführung in SQL DDL DDL-- Beispiel BeispielSEQUENCE SEQUENCE drop sequence LiteratSeq; create sequence LiteratSeq increment by 1 maxvalue 999999 minvalue 1 cycle cache 100; 12.02.2007 PTA GmbH, Unternehmensberatung 19 Einführung in SQL DDL DDL-- CREATE/DROP CREATE/DROPSYNONYM SYNONYM (Synonym) (Synonym) • Syntax für das Anlegen eines Synonyms: CREATE [ PUBLIC] SYNONYM [<schema_name>.]<synonym_name> FOR <schema_name>.]<object_name>; • Syntax für das Löschen eines Synonyms: DROP SYNONYM [<schema_name>.]<synonym_name>; 12.02.2007 PTA GmbH, Unternehmensberatung 20 Einführung in SQL DDL DDL-- Beispiel BeispielSYNONYM SYNONYM drop synonym literatur; create public synonym literatur for lit.literatur; 12.02.2007 PTA GmbH, Unternehmensberatung 21 Einführung in SQL DDL DDL-- CREATE CREATEINDEX INDEX(Tabellenindex (Tabellenindexanlegen) anlegen) • Syntax für das Anlegen eines Tabellenindex: CREATE INDEX ON [ [ [ [ [<schema_name>.]<index_name> [<schema_name>.]<table_name> ( <column_name>,...) PCTFREE <percent free space per block> ] INITTRANS <initial transaction entries per block> ] MAXTRANS <maximal transaction entries per block ] TAB LESPACE <tablespace_name> ] [ STORAGE <storage clause > ]; 12.02.2007 PTA GmbH, Unternehmensberatung 22 Einführung in SQL DDL DDL-- Beispiel BeispielCREATE CREATEINDEX INDEX create index literat_ort_idx on literat(ort) tablespace ts4idx; 12.02.2007 PTA GmbH, Unternehmensberatung 23 Einführung in SQL DDL DDL-- ALTER/DROP ALTER/DROPINDEX INDEX • Syntax für das Ändern eines Tabellenindex: ALTER INDEX [<schema_name>.]<index_name> [ INITTRANS <initial transaction entries per block> ] [ MAXTRANS <maximal transaction entries per block ] [ STORAGE <storage clause > ]; • Syntax für das Löschen eines Tabellenindex: DROP INDEX 12.02.2007 [<schema_name>.]<index_name>; PTA GmbH, Unternehmensberatung 24 Einführung in SQL Gliederung Gliederung • Übersicht • Data Definition Language (DDL) – – – – – TABLE VIEW SEQUENCE SYNONYM INDEX • Data Manipulation Language (DML) – – – – – INSERT UPDATE DELETE SELECT COMMIT / ROLLBACK 12.02.2007 PTA GmbH, Unternehmensberatung 25 Einführung in SQL DML DML--INSERT INSERT(Tabellenzeilen (Tabellenzeileneinfügen) einfügen) • Syntax - Version 1: INSERT INTO [<schema_name>.]<table_name> | <view_name> (<column_name1>, ...) VALUES ( <value1>, ...); • Syntax - Version 2: INSERT INTO [<schema_name>.]<table_name> | <view_name> (<column_name1>, ...) <subquery>; 12.02.2007 PTA GmbH, Unternehmensberatung 26 Einführung in SQL DML DML--Beispiel BeispielINSERT INSERT insert into topic (id, description) values ( 1, ‘Relational Theory’); insert into work_table (id, description) select id, description from topic; 12.02.2007 PTA GmbH, Unternehmensberatung 27 Einführung in SQL DML DML--UPDATE UPDATE(Tabellenzeile (Tabellenzeileändern) ändern) • Syntax - Version 1: UPDATE [<schema_name>.]<table_name> | <view_name> SET <column1> = <value>, <column2> = <value>, ... [WHERE <condition> ]; • Syntax - Version 2: UPDATE [<schema_name>.]<table_name> | <view_name> SET <column1> = <subquery> [WHERE <condition> ]; 12.02.2007 PTA GmbH, Unternehmensberatung 28 Einführung in SQL DML DML--Beispiel BeispielUPDATE UPDATE update topic set description = ‘Relational Theory’ where id = 1; update work_table a set description = (select description from topic b where a.id = b.id); 12.02.2007 PTA GmbH, Unternehmensberatung 29 Einführung in SQL DML DML--DELETE DELETE(Tabellenzeile (Tabellenzeilelöschen) löschen) • Syntax: DELETE FROM [<schema_name>.]<table_name> | <view_name> [WHERE <condition> ]; • Beispiele: delete from work_table; delete from work_table where description like ‘Relational%’; 12.02.2007 PTA GmbH, Unternehmensberatung 30 Einführung in SQL DML DML--SELECT SELECT(Tabellenzeile (Tabellenzeileauswählen) auswählen) • Syntax: SELECT [DISTINCT | ALL ] * | <column_name1>, <column_name2>, ... FROM [<schema_name>.]<table_name> | <view_name> [WHERE <condition> ] [ORDER BY <column_name1>, ...]; 12.02.2007 PTA GmbH, Unternehmensberatung 31 Einführung in SQL DML DML--Beispiele BeispieleSELECT SELECT select * from topic; select name from lit.autor where id = 3; select a.name, b.titel from autor a, literatur b where a.id = b.autor order by a.name; 12.02.2007 PTA GmbH, Unternehmensberatung 32 Einführung in SQL DML DML--Transaktionssteuerung Transaktionssteuerung • Transaktionen sind atomare, d.h. nicht teilbare logische Arbeitseinheiten; d.h. alle Anweisungen einer Transaktion werden ausgeführt oder nicht ausgeführt. • Transaktionen werden gestartet, sobald das erste datenverändernde SQL-Statement abgesetzt wird. • Alle SQL-Statements bis zum COMMIT oder ROLLBACK gehören zu dieser Transaktion. 12.02.2007 PTA GmbH, Unternehmensberatung 33 Einführung in SQL DML DML--Transaktionssteuerung Transaktionssteuerung • Eine Transaktion wird mit COMMIT abgeschlossen oder mit ROLLBACK zurückgerollt: – Mit COMMIT werden alle Änderungen seit Beginn der Transaktion festgeschrieben. – Mit ROLLBACK werden alle Änderungen seit Beginn der Transaktion wieder rückgängig gemacht. 12.02.2007 PTA GmbH, Unternehmensberatung 34