IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],

Slides:



Advertisements
Ähnliche Präsentationen
Sicherheitsaspekte Sicherheit im DBMS
Advertisements

ER-Datenmodell und Abfragen in SQL
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
MySQL.
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
SQL::Geschichte/Normen (Übersicht)
SQL als Abfragesprache
SQL als Abfragesprache
Datensicherheit in DBMS
IS: Datenbanken, © Till Hänisch 2000 Tabellen In relationalen DB werden Daten in Tabellen organisiert Jede Spalte enthält eine bestimmte Art von Information,
Relationaler Datenbankentwurf (I)
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Text-Retrieval mit Oracle Vortrag von Andreas Mück & David Diestel.
Datenintegrität Referentielle Integrität create table
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
1 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe.
1 Kapitel 8: Datenintegrität. 2 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines.
Kapitel 9: Integritätssicherung
Datenbanken 13: Objekt-Klasse-Datenbank
Datenbanken 10: Einfügen, Ändern, Löschen
Erhard Künzel für Info 9. Klasse: Digitale Schule Bayern © Erhard Künzel.
3.5.2 Fremdschlüssel/ Referentielle Integrität (6/9)
3.5.2 Fremdschlüssel/ Referentielle Integrität (1/9)
2.2 Definition eines Datenbankschemas (SQL-DDL)
objekt-relationale Datenbanken
Datenbankentwicklung IV-LK
Relationale Datenbanken III
O.Univ.-Prof. Dr. Dimitris Karagiannis Datenbanken administrieren mit phpMyAdmin Martin Marinschek
FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache.
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #8 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
Datenbanksysteme für hörer anderer Fachrichtungen
Copyright Oracle Corporation, All rights reserved. 6 Unteranfragen (Subqueries)
Relationales Datenmodell und DDL
SQL - Structured Query Language AIFB SS (1/9) Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]
Verdichten von Daten mit Gruppenfunktionen
Structured Query Language
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
Integritätsbedingungen (Constraints)
10 Sichten (Views) Ziele Verständnis einer View Erzeugen einer View Lesen von Daten durch eine Sicht Ändern der Definition von Views Einfügen, Ändern.
7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen.
1 Referenzielle Konsistenz (1) Vorgehensweise: Klausel references mit nachfolgender Spezikation eines Attributs einer anderen Tabelle identifiziert ein.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
11 Zugriffskontrolle (Access Control) Ziele Privilegien Rollen GRANT und REVOKE Befehl Privilegien Rollen GRANT und REVOKE Befehl.
Einfache SQL-Befehle Schedule: Timing Topic 40 minutes Lecture
Prolog: Datenbanken Inhalt - Überblick - Erstellen einer Datenbank
Datenbank für Skriptenverkauf
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken erstellen mit PostgreSQL
Datenbanken abfragen mit SQL
1 Nullwerte Vorgehensweise: Nullwerte als mögliche Belegung eines Attributs können durch die Angabe von not null ausgeschlossen werden. Die Angabe von.
SQL Lutz KleinostendarpJOBELMANN-SCHULE Datendefinition Die Organisation einer Datenbank basiert auf einer Anzahl verschiedener Objekte. Diese können physikalischer.
IS: Datenbanken, © Till Hänisch 2000 SQL Structured Query Language.
IS: Datenbanken, © Till Hänisch 2000 Company: Entity types DEPARTMENT Name, Number, {Location},Manager, Mgr-Start- Date PROJECT Name, Number, Location,
Veranstaltung: Datenbanken I Dozent: Ioannis Papakostas Belegarbeit 6 Online-Bestellung von Büchern Stefan Rüschenberg (Matrikel-Nr.: ) Sebastian.
IS: Datenbanken, © Till Hänisch 2000 Relationenalgebra Die mathematische Grundlage von relationalen Datenbanken.
SQL Structured Query Language Enzio Thiem. INHALT CREATE TABLE Anweisung Gängige Datentypen Beispiel CREATE TABLE Beispiel CREATE TABLE - erweitert Beispiel.
SQL Basics Schulung –
Vorlesung #7 SQL (Teil 4).
Abfragesprache SQL in ORACLE
Abfragesprache SQL in ORACLE
Sichten.
Constraints anlegen und löschen, Data Dictionary Tabellen
Create Table, Rechte und Rollen
(Structured Query Language)
 Präsentation transkript:

IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL], [colconstraint] tableconstraint := CONSTRAINT name constraint-definition colconstraint := constraint-definition (später mehr) CREATE TABLE Person ( name VARCHAR (30), id INT ); mysql> describe person; | Field | Type | Null | Key | Default | Extra | | name | varchar(30) | YES | | NULL | | | id | int(11) | YES | | NULL | |

IS: Datenbanken, © Till Hänisch 2000 Constraints Constraints legen Bedingungen für Konsistenz fest, etwa Primary key Keine doppelten Werte Foreign key Der referenzierte Datensatz muß existieren (NOT) NULL Wert muß vorhanden sein Bei Verletzung wird das entsprechende SQL- Statement nicht ausgeführt (Fehlermeldung) Alternative: Automatische Aktion, z.B. DELETE CASCADE

IS: Datenbanken, © Till Hänisch 2000 Constraints PRIMARY KEY CREATE TABLE Person ( name VARCHAR (100) NOT NULL, vorname VARCHAR (40) NOT NULL, PersonAlter INTEGER NULL, PRIMARY KEY (name, vorname) ); Besserer Stil (constraints sollten benannt werden): CREATE TABLE Person ( name VARCHAR (100) NOT NULL, vorname VARCHAR (40) NOT NULL, PersonAlter INTEGER NULL, CONSTRAINT pk_person PRIMARY KEY (name, vorname) ); Da Entities und Relationships auf Relationen abgebildet werden, sind Beziehungen (Relationships) nicht mehr direkt erkennbar !! Um diese zu definieren (und insb. nur gültige Beziehungen zuzulassen, können FOREIGN KEY Constraints verwendet werden. FKs verweisen auf den PK einer anderen Relation.

IS: Datenbanken, © Till Hänisch 2000 FOREIGN Key constraints CREATE TABLE telefon ( nummer VARCHAR (20) NOT NULL, art CHAR (1) NOT NULL, name VARCHAR (100) NOT NULL, vorname VARCHAR (40) NOT NULL, CONSTRAINT fk_telefon_person FOREIGN KEY (name, vorname) REFERENCES person (name, vorname) ); Bei nicht zusammengesetzten PKs ist einfachere Schreibweise möglich: CREATE TABLE Telefon ( Nummer VARCHAR(30) NOT NULL, Art CHAR(1) NOT NULL, Person INTEGER CONSTRAINT fk_telefon_person REFERENCES Person(ID) );

IS: Datenbanken, © Till Hänisch 2000 andere Constraints UNIQUE Werte der entsprechenden Columns müssen eindeutig sein (PRIMARY KEY impliziert UNIQUE) Eindeutigkeit von Candidate Keys, z.B. Person (ID) U_Person UNIQUE (name, vorname) CHECK Bedingung für ein Attribut z.B. bei Person ( PersonAlter INT NOT NULL CHECK (alter > 18) etwa bei CHAR(1) als Boolean-Ersatz flag CHAR (1) NOT NULL CHECK (flag IN (Y, N)) Bei modernen SQL Dialekten auch Subqueries zulässig, z.B. Preis DECIMAL (10,2) CHECK (preis >= (SELECT stmt.))

IS: Datenbanken, © Till Hänisch 2000 Zugriffskontrolle Jeder Benutzer hat volle Verfügungsgewalt (Lesen, Schreiben, Ändern,...) über die von ihm erzeugten Objekte, andere Benutzer haben keinen Zugriff Benutzer kann Rechte an seinen Objekten für andere freigeben (und wieder sperren) GRANT/REVOKE Privileg {,Privileg} ON objekt TO user {,user} spezieller "Benutzer" PUBLIC steht für alle Benutzer Privileg = SELECT,INSERT,UPDATE,DELETE z.B. GRANT SELECT ON emp TO PUBLIC; Zugriff auf Objekte anderer Benutzer erfolgt durch Qualifizierung mit dem Benutzernamen, z.B. Tabelle "geheim" des Benutzers "max" SELECT * FROM max.geheim;

IS: Datenbanken, © Till Hänisch 2000 Views View = virtuelle, d.h. abgeleitete Relation Aus einer oder mehreren Relationen wird durch Query eine neue virtuelle erzeugt: CREATE TABLE name SELECT...physikalische Relation CREATE VIEW name AS SELECT...virtuelle Relation Wenn sich Tupel der Basisrelation(en) ändern, dann ändert sich automatisch auch der Inhalt des Views. Anmerkung: View-Relationen existieren physikalisch nur als Definition, die Tupel werden bei jedem Zugriff berechnet. Performance View -> Abkürzung (ähnlich Makro) Wozu? Vorformulierung von (häufig benötigten, komplexen) Anfragen z.B. Gehalt der Angestellten CREATE VIEW Gehalt AS SELECT sal+ISNULL(comm,0) AS Total FROM emp; (Sybase) CREATE VIEW Gehalt AS SELECT sal+NVL(comm,0) AS Total FROM emp; (Oracle) Abstraktion von Details (NULL,…), Definition von Business Rules (Gehalt = sal+comm) an einer Stelle

IS: Datenbanken, © Till Hänisch 2000 Views contd. Denormalisierung, z.B. emp,dept CREATE VIEW Angest AS SELECT e.empno,e.ename, d.deptno,d.dname FROM emp e, dept d WHERE e.deptno=d.deptno; Verschiedene Sichten auf Daten (Datenschutz, Vertraulichkeit, Übersicht,...) z.B. Tabelle emp enthält Gehalt, dies darf jedoch nur für Personalabteilung sichtbar sein. Sekretariate benötigen aber Liste der Mitarbeiter. Lösung ? Entweder zusätzliche (redundante) Tabelle, die nur die zugänglichen Informationen enthält, oder CREATE VIEW emp_base AS SELECT ename,empno,deptno,job FROM emp; (vertikaler Ausschnitt) oder: Sekretariat soll vollst. emp-Tabelle, aber nur für die eigene Abteilung sehen (Die Funktion USER liefert unter Sybase den Namen des aktuellen Users zurück) CREATE TABLE userdept (name varchar(20), deptno INTEGER); INSERT INTO userdept VALUES(mueller',30); CREATE VIEW myemp AS SELECT * FROM emp WHERE deptno = ANY (SELECT deptno FROM userdept WHERE name=USER) (horizontaler Ausschnitt)