Vorlesung Datenbanken Wintersemester 2013/14 Anhang SQL: Syntaxzusammenfassung CREATE TABLE <table name> ( <column name> <column type> [<attribute constraint>] {, <column name> <column type> [<attribute constraint>]} [<table constraint> {, <table constraint>}] ) DROP TABLE <table name> ALTER TABLE <table name> ADD <column name> <column type> Prof. Dr. Dietmar Seipel 979 Vorlesung Datenbanken Wintersemester 2013/14 SELECT [ DISTINCT ] <attribute list> FROM ( <table name> {<alias>} | <joined table> ) {, (<table name> {<alias>} | <joined table> ) } [ WHERE <condition> ] [GROUP BY <grouping attributes> [HAVING <group selection condition> ] ] [ ORDER BY <column name> [ <order> ] {, <column name> [ <order> ] } ] <attribute list> ::= ( * | ( <column name> | <function>( ( [ DISTINCT]<column name> | * ) ) ) {, ( <column name> | <function>( ( [ DISTINCT]<column name> | * ) ) ) } ) <grouping attributes> ::= <column name> {, <column name>} Prof. Dr. Dietmar Seipel 980 Vorlesung Datenbanken Wintersemester 2013/14 <order>::=(ASC | DESC) INSERT INTO <table name> [ ( <column name> {, <column name> } ) ] VALUES ( <constant value> { , <constant value> } ) { , ( <constant value> { , <constant value> } ) } | <select statement> DELETE FROM <table name> [ WHERE <select condition> ] UPDATE <table name> SET <column name>=<value expression> {, <column name>=<value expression>} [ WHERE <select condition> ] Prof. Dr. Dietmar Seipel 981 Vorlesung Datenbanken Wintersemester 2013/14 CREATE [ UNIQUE] INDEX <index name> ON <table name> (<column name> [ <order> ] {, <column name> [ <order> ] }) [ CLUSTER] DROP INDEX <index name> CREATE VIEW <view name> [ (<column name> {, <column name>})] AS <select statement> DROP VIEW <view name> Prof. Dr. Dietmar Seipel 982 Vorlesung Datenbanken Wintersemester 2013/14 SELECT etwas ausführlicher select–expression ::= SELECT [ ALL | DISTINCT] list–of–select–itmes FROM list–of–table–references [ WHERE condition] [ GROUP BY list–of–column–names] [ HAVING condition] select–item ::= { * | expression } expression ::= term | expression { + | – } term term ::= factor | term {* | /} factor Prof. Dr. Dietmar Seipel 983 Vorlesung Datenbanken Wintersemester 2013/14 factor ::= [ + | – ] primary primary ::= column–name | scalar–function | aggregate–function | ( expression ) aggregate–function ::= COUNT(*) | { AVG | MAX | MIN | SUM | COUNT } ( [ ALL | DISTINCT] expression ) table–reference ::= table–name [ [ AS ] range–variable [ ( list–of–column–names ) ] ] ( table–expression ) [ AS ] range–variable [ ( list–of–column–names ) ] join–table–expression table–expression ::= join–table–expression | nonjoin–table–expression Prof. Dr. Dietmar Seipel 984 Vorlesung Datenbanken Wintersemester 2013/14 join–table–expression ::= table–reference [ NATURAL ] [ join–type ] JOIN table–reference [ ON condition | USING ( list–of–column–names ) ] | table–reference CROSS JOIN table–reference | ( join–table–expression ) join-type ::= INNER | { LEFT | RIGHT | FULL } [ OUTER ] | UNION nonjoin–table–expression ::= select–expression | select–expression { UNION | EXCEPT | INTERSECT } select–expression condition ::= condition–term | condition OR condition–term Prof. Dr. Dietmar Seipel 985 Vorlesung Datenbanken Wintersemester 2013/14 condition–term ::= condition–factor | condition–term AND condition–factor condition–factor ::= [ NOT ] condition–test condition–test::= condition–primary [ IS [ NOT ] { TRUE | FALSE | UNKNOWN } ] condition–primary ::= simple–condition | ( condition ) simple–condition ::= compare–condition | between–condition | like–condition | in–condition | exists–condition | unique–condition compare–condition ::= Prof. Dr. Dietmar Seipel 986 Vorlesung Datenbanken Wintersemester 2013/14 expression IS [ NOT ] NULL | expression { =|<|≤|>|≥|<> } { expression | ( select–expression ) } between–condition ::= expression [ NOT ] BETWEEN expression AND expression like–condition ::= column–name [ NOT ] LIKE ’string’ in–condition ::= expression [ NOT ] IN { ( select–expression | table–expression ) } exists–condition ::= EXISTS ( table–expression ) unique–condition ::= UNIQUE ( table–expression ) Prof. Dr. Dietmar Seipel 987 Vorlesung Datenbanken Wintersemester 2013/14 Datenbank–Dumps in MyS QL Mit dem Befehl mysqldump kann man die Datenbank company in eine Datei company.sql speichern, welche aus lauter S QL–Befehlen besteht. % mysqldump --opt company > company.sql % echo "create database co; use co;" > h.sql; % cat h.sql company.sql > mysql Wenn man die Datei company.sql zusammen mit den S QL–Statements create database co; use co; auf die Kommandozeile von MyS QL schickt, so wird eine neue Datenbank co angelegt mit demselben Inhalt wie company – die entsprechenden Tabellen einer eventuell bereits vorhandenen Datenbank namens co würden überschrieben. Prof. Dr. Dietmar Seipel 988 Vorlesung Datenbanken Wintersemester 2013/14 company.sql: -- MySQL dump 8.22 --- Host: localhost Database: company ---------------------------------------------------------- Server version 3.23.52-log --- Table structure for table ’department’ -DROP TABLE IF EXISTS department; CREATE TABLE department ( DNAME varchar(15) NOT NULL default ’’, DNUMBER int(11) NOT NULL default ’0’, MGRSSN varchar(9) NOT NULL default ’’, MGRSTARTDATE date default NULL, PRIMARY KEY (DNUMBER), UNIQUE KEY DNAME (DNAME) ) TYPE=MyISAM; /*!40000 ALTER TABLE department DISABLE KEYS */; Prof. Dr. Dietmar Seipel 989 Vorlesung Datenbanken Wintersemester 2013/14 --- Dumping data for table ’department’ -- LOCK TABLES department WRITE; INSERT INTO department VALUES (’Research’,5,’222222222’,’1978-05-22’), (’Administration’,4,’333333333’,’1985-01-01’), (’Headquarters’,1,’111111111’,’1971-06-19’); /*!40000 ALTER TABLE department ENABLE KEYS */; UNLOCK TABLES; Für jede Tabelle gibt es die entsprechenden Statements • CREATE TABLE • INSERT INTO Prof. Dr. Dietmar Seipel 990 Vorlesung Datenbanken Wintersemester 2013/14 Arbeiten mit MyS QL % mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is .... to server version: 3.23.52-log Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer. mysql> use company; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +-------------------+ | Tables_in_company | +-------------------+ | department | | dependent | | dept_locations | | employee | | project | | works_on | +-------------------+ 6 rows in set (0.00 sec) Prof. Dr. Dietmar Seipel 991 Vorlesung Datenbanken Wintersemester 2013/14 mysql> describe department; +--------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+-------+ | DNAME | varchar(15) | | UNI | | | | DNUMBER | int(11) | | PRI | 0 | | | MGRSSN | varchar(9) | | | | | | MGRSTARTDATE | date | YES | | NULL | | +--------------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) mysql> select * from department; +----------------+---------+-----------+--------------+ | DNAME | DNUMBER | MGRSSN | MGRSTARTDATE | +----------------+---------+-----------+--------------+ | Research | 5 | 222222222 | 1978-05-22 | | Administration | 4 | 333333333 | 1985-01-01 | | Headquarters | 1 | 111111111 | 1971-06-19 | +----------------+---------+-----------+--------------+ 3 rows in set (0.00 sec) Prof. Dr. Dietmar Seipel 992 Vorlesung Datenbanken Wintersemester 2013/14 Literatur C.J. Date, H. Darwen: A Guide to the S QL Standard. 4th Edition, Addison–Wesley, 1997. R. Elmasri, S.B. Navathe: Fundamentals of Database Systems. 3rd Edition, Benjamin Cummings, 2000. A. Kemper, A. Eickler: Datenbanksysteme – Eine Einführung. 6. Auflage, Oldenbourg, 2006. R. Ramakrishnan, J. Gehrke: Database Management Systems. 3rd Edition, McGraw–Hill, 2004. J.D. Ullman: Principles of Database and Knowledge–Base Systems, Volumes I,II. Computer Science Press, 1989. G. Vossen: Datenmodelle, Datenbanksprachen und Datenbank–Management–Systeme. 4. Auflage, Oldenbourg, 2000. Prof. Dr. Dietmar Seipel 993 Vorlesung Datenbanken Wintersemester 2013/14 Index Äquivalenz Konflikt–Äquivalenz, 476 View–Äquivalenz, 469 von fd–Mengen, 207 3NF, 248, 254 3NF–Kompatibilität, 257 3NF–Test, 256 Abhängigkeit Abhängigkeits–Erhaltungs–Eigenschaft, 188 Abhängigkeitsbasis, DEP G (X), 273 direkte, 250 Existenzabhängigkeit, 46 funktionale, fd, 198 join, jd, 277 logische Folgerung, |=, 264 mehrwertige, mvd, 264 Schlüsselabhängigkeit, 281 transitive, 250 Prof. Dr. Dietmar Seipel 994 Vorlesung Datenbanken Wintersemester 2013/14 ACID–Prinzip, 444 Algorithmus Á Priori, 651 Basis–TO, 526 Dekomposition, 298 Graham–Reduktion, GYO, 378 ID3–classification of Quinlan, 632 K–means, 706 Synthese, 315 Tableau, 327 association rules, 673 Á Priori algorithm, 651 confidence, 673 support, 673 Attribut, 22 Attributmenge, 22 Hülle, 224 hidden attribute, 967 Nichtschlüsselattribut, NSA, 246 NOTNULL, 66 prim, 246 Schlüsselattribut, 22, 246 transitiv, 250 Prof. Dr. Dietmar Seipel 995 Vorlesung Datenbanken Wintersemester 2013/14 universelle Attributmenge, 64 visible attribute, 967 Wertebereich, dom(A), 22, 64 ausführen, 500 Azyklizität, 373 Basis, 309 BCNF, 248, 254 BCNF–Kompatibilität, 257 BCNF–Test, 256 Bedingung interrelationale, 78 intrarelationale, 66 Kardinalitätsbedingung, 42 BLOB, 971 Checkpoint, 441 class, 970 class hierarchy, 968 classification classification rule, 579 decision tree, 586 entropy, 605 Prof. Dr. Dietmar Seipel 996 Vorlesung Datenbanken Wintersemester 2013/14 horizontal decomposition, 616 ID3–algorithm of Quinlan, 632 clustering, 703 cluster centers, 710 hierarchical, 731 K–means–algorithm, 706 Commit Commit–Punkt, 440 Commit–Serialisierbarkeit, 490 committed, 440 committed projection, 462 Crash, 442 data mining, 577 association rules, 642 classification, 579 clustering, 703 Daten Data Dictionary, 12 Datenabstraktion, 12 Datenintegration, 12 Datenkonsistenz, 12 Datenschutz, 14 Prof. Dr. Dietmar Seipel 997 Vorlesung Datenbanken Wintersemester 2013/14 Datensicherheit, 14 Datenteilung, 13 Datenunabhängigkeit, 12 Meta–Daten, 12 Persistenz, 14 Datenbank, 1 C OMPANY, 54 U NIVERSITY, 4 Datenbank–Management–System, DBMS, 2 Datenbanksystem, 2 Instanz, 78 relationale, DB, 78 relationales Datenbankschema, DBS, 78 temporale, 532 Datenbankbenutzer Administrator, DBA, 16 Anwendungsprogrammierer, 17 Designer, 16 Endbenutzer, 16 Operateure und Betriebspersonal, 18 Programmierer, 18 Systemanalytiker, 17 Tool–Entwickler, 18 Prof. Dr. Dietmar Seipel 998 Vorlesung Datenbanken Wintersemester 2013/14 Deadlock, 513, 516 Verhinderung, 520 Verhinderung: wait–die, 520 Verhinderung: wound–wait, 520 deductive databases, 855 DATALOG, 855 DD BASE, 895 F N Query, 951 P ROLOG, 855, 877 transitive closure, 868 Definitionsbereich, 66 delay, 500 dirty data, 431 Division, 91 domain, 960, 965 Einschränkung, 373 Entity, 22 Entity–Menge, 21 Entity–Typ, 21 schwacher Entity–Typ, 48 starker Entity–Typ, 48 equal Prof. Dr. Dietmar Seipel 999 Vorlesung Datenbanken Wintersemester 2013/14 deeply equal, 962 shallow equal, 962 ER Entity–Relationship–Modell, 21 ER–Ausprägung, 33 ER–Datenbank, 33 ER–Schema, 33 ER–Symbole, 53 Erweiterungen des ER–Modells, 41 execute, 500 Faktorisierung, 91 fd, 198 Äquivalenz von fd–Mengen, 207 Hülle, 224 linke Seite, 198 rechte Seite, 198 foreign key, 68 format, 965 freigegeben, 440 Fremdschlüssel, foreign key, 68 frequent itemsets, 643 confidence, 643 Prof. Dr. Dietmar Seipel 1000 Vorlesung Datenbanken Wintersemester 2013/14 support, 643 transactions, 643 function, 968 Hostsprache, 184 Hypergraph, 365 Reduktion, 370 Inferenzregeln Akkumulation, 216 Armstrong, 211 Augmentierung, 211 Erweiterung, 269 fd, 211, 216 Koaleszenz, 270 Komplement, 269 mvd, 269 mvds und fds, 270 Projektion, 216 Pseudo–Transitivität, 216, 269 Reflexivität, 211, 269 Replikation, 270 Transitivität, 211 Prof. Dr. Dietmar Seipel 1001 Vorlesung Datenbanken Wintersemester 2013/14 Vereinigung, 216 Zerlegung, 216 inheritance, 968 multiple inheritance, 973 selective inheritance, 973 jd, 277 Join, 86 Join Tree, 387 Konstruktion eines, 398 Kompatibilitätsmatrix, 506 Konflikt bereinigte Konfliktrelation, 472 Konflikt–Äquivalenz, 476 Konflikt–Serialisierbarkeit, 476 Konfliktgraph, 478 Konfliktrelation, 472 Konsistenz, 351 global, 351 paarweise, 351 Lesen Prof. Dr. Dietmar Seipel 1002 Vorlesung Datenbanken Wintersemester 2013/14 Lese–Sperre, 504 Lese–Zeitstempel, 524 Liest–Von, 465 lock, 504 certify lock, 536 read lock, 504 write lock, 504 Log–Buch, 436 Mediafehler, 537 Mehrversionen–Zeitstempelverfahren, 533 message, 967 message passing, 967 Mini–Welt, 1 mvd, 264 nested relation, 965 tuple, 965 Normalform Boyce–Codd, BCNF, 248, 254 dritte, 3NF, 248, 254 erste, 1NF, 243 Prof. Dr. Dietmar Seipel 1003 Vorlesung Datenbanken Wintersemester 2013/14 fünfte, 5NF, 281 Non–First–Normal–Form, NF2 , 965 Projekt–Join, PJNF, 281 vierte, 4NF, 281 zweite, 2NF, 247, 254 Nullwert, 64 object complex, 960 configuration of a complex object, 974 object identifier, OID, 960 object–oriented database application domains, 958 encapsulation, 967 Online Analytical Processing, OLAP, 542 Online Transaction Processing, OLTP, 541 ontology, OWL, 939 Overhead–Kosten, 20 Pfad, 371 polymorphism, 972 Primärschlüssel, primary key, 66 Projektion, 85, 239 Prof. Dr. Dietmar Seipel 1004 Vorlesung Datenbanken Wintersemester 2013/14 Recovery after image, AFIM, 539 before image, BFIM, 539 reject, 500 Relation, 65, 67 relationale Algebra, 81 Division, Faktorisierung, 91 Join, 86 Projektion, 85 Selektion, 85 spezifische relationale Operatoren, 85 Suchprädikate, 83 Umbenennung, Renaming, 91 Relationenschema, 66, 200 informelle Design–Richtlinien, 189 referenzierendes, 68 referenziertes, 68 Relationship, 25 Relationship–Typ, 25 binär, 25 informationstragend, 25 Renaming, 91 Retrieve, 1 Prof. Dr. Dietmar Seipel 1005 Vorlesung Datenbanken Wintersemester 2013/14 Richtlinie überflüssige Tupel, 194 informelle Design–Richtlinien, 189 Nullwerte, 193 Semantik der Attribute, 189 Vermeidung von Redundanz, 189 Vermeidung von Update–Anomalien, 189 Schedule, 448, 456 Abschluß, 462 commit–abgeschlossen, CA, 490 Dirty Read, Temporary Update, 431 fehlerhafte Zusammenfassung, 432 freigegebene Projektion, 462 konflikt–serialisierbar, CSR, 476 Lost Update–Problem, 430 Phantom–Problem, unrepeatable read, 430 präfix–abgeschlossen, PA, 490 präfix–commit–abgeschlossen, PCA, 490 Projektion, 462 rücksetzbar, recoverable, RC , 493 seriell, 456 strikt, ST , 493 Prof. Dr. Dietmar Seipel 1006 Vorlesung Datenbanken Wintersemester 2013/14 vermeidet kaskadierende Aborts, ACA, 493 view–serialisierbar, VSR, 469 vollständiger, 455 Scheduler, 500 aggressiv, 503 Daten–Manager, DM, 501 erzeugbare Schedules, 503 f–sicher, 503 konservativ, 503 konservativ, statisch, C2PL, 509 s–sicher, 503 sicher, 503 streng, dynamisch, S2PL, 509 zweiphasig, 2–Phase Locking, 2PL, 509 Schema–Tableau, 326 Schlüssel, 224 Fremdschlüssel, foreign key, 68 globaler, 48 lokaler, 51 Nichtschlüsselattribut, NSA, 246 Oberschlüssel, 224 Primärschlüssel, primary key, 66 Schlüsselabhängigkeit, 281 Prof. Dr. Dietmar Seipel 1007 Vorlesung Datenbanken Wintersemester 2013/14 Schlüsselattribut, 22, 246 Schreiben Schreib–Sperre, 504 Schreib–Zeitstempel, 524 Schreibregel von Thomas, 529 Search, 1 Selektion, 85 Semi–Join, 354 Semi–Join–Programm, SJP, 359 voll reduzierendes SJP, 359, 403 Serialisierbarkeit Commit–Serialisierbarkeit, 490 Konflikt–Serialisierbarkeit, 476 View–Serialisierbarkeit, 469 Shadow–Paging, 538 Shuffle–Produkt, 455 Sicht, 12 Sperre, 504 Rücksetzen einer, 504 Sperrprotokoll, 506 zweiphasig, 509 SQL, 95 Aggregatsfunktionen, 151 Prof. Dr. Dietmar Seipel 1008 Vorlesung Datenbanken Wintersemester 2013/14 Aliasing, 127 Anfragen, 114 ANSI–Standards, 95 Datendefinition, 95 Datentypen, 102 Embedded SQL, 184 Gruppierung, 151 Hostsprache, 184 Indexe, 182 Integritätsbedingungen, 181 Sichten, 172 Syntaxzusammenfassung, 995 Trigger, 181 Typ–Definition, 111 Update–Statements, 166 Views, 172 SQL–Syntax *, 130 A LTER TABLE, 112 AVG, 151 C OUNT, 151 C REATE DATABASE, 97 C REATE D OMAIN, 111 Prof. Dr. Dietmar Seipel 1009 Vorlesung Datenbanken Wintersemester 2013/14 C REATE TABLE, 98 D ELETE, 169 D ROP S CHEMA, 111 D ROP TABLE, 111 E XISTS, 142 G ROUP B Y, 151, 162 H AVING, 151, 162 I NSERT, 166 L IKE, 163 M AX, 151 M IN, 151 S ELECT–F ROM –W HERE, 114 S UM, 151 U PDATE, 170 arithmetische Operatoren, 164 explizite Joins, 147 explizite Mengen, 139 geschachtelte Anfragen und Mengenvergleiche, 134 NULL–Werte, 140 Ordnung, 164 Tabellen als Mengen, 132 Teilstring–Vergleiche, 163 Umbenennung von Attributen, 147 Prof. Dr. Dietmar Seipel 1010 Vorlesung Datenbanken Wintersemester 2013/14 star schema, 545 ROLL U P–Operator, 571 data cube, 569 dicing, 556 dimension tables, 545 drill–down, 556 fact table, 545 roll–up, 556 slicing and dicing, 552 star joins, 551 C UBE–operator, 565 starvation, 531 Systemfehler, 537 Systemkatalog, 12 Transaktion, 427, 454 Atomarität, atomicity, 444 Index, 454 Isolation, 445 Konsistenz, consistency, 444 locked transaction, 505 Persistenz, durability, 445 Status, 459 Prof. Dr. Dietmar Seipel 1011 Vorlesung Datenbanken Wintersemester 2013/14 Transaktionsfehler, 537 Transaktionsmanager, TM, 500 Transaktionsverwaltung, 13 transitiv transitive Abhängigkeit, 250 transitives Attribut, 250 Tupel, 65 type sub–type, 970 super–type, 970 type constructors, 960 type hierarchy, 969 Umbenennung, 91 universelle Attributmenge, 64 Wertemenge, 64 unlock read unlock, 504 write unlock, 504 Update, 1 direkter, 538 Update–Anomalie, 189 Prof. Dr. Dietmar Seipel 1012 Vorlesung Datenbanken Wintersemester 2013/14 Update–Konzepte, 538 verzögerter, 538 Verbund Verbund, Join, 86 Verbundabhängigkeit, jd, 277 verlustfreie Verbund–Eigenschaft, 188 Verhungern, 531 version graph, 974 verzögern, 500 View, 12 Wartegraph, 516 web databases Java applets, 834 Java server pages, 835 connections in P HP, 844 servlets, 823 X ML X ML schema, 750 document type definition, DTD, 743 name spaces, 749 Prof. Dr. Dietmar Seipel 1013 Vorlesung Datenbanken Wintersemester 2013/14 XQuery, 777 XPATH, 777 aggregation, 807 axes, 780 FLWOR expressions, 792 joins, 798 let, 805 location step, 778 nested queries, 797 recursive queries, 811 Zeitstempel, 524 Zeitstempelordnung, 525 Zeitstempelverfahren, 499 Zerlegung, 289 unabhängig, 289 verlustfrei, 289 zurückweisen, 500 Zusammenhangskomponente, 371 Zwei–Phasen–Sperrprotokoll, 499 2PL, 509 Mehrversionen–2PL, 535 Prof. Dr. Dietmar Seipel 1014