SQL-Skript-Zusammenfassung
Zusammenfassung des 300 Seiten Skriptes
Zusammenfassung des 300 Seiten Skriptes
-
- 1 / 375
-
Flashcards
Was entfernt distinct?
Nur Duplikat-ZEILEN, keine einzelnen Attribute
Wie wird distinct eingesetzt
Direkt nach dem select, weil es sich auf ganze Zeilen und nicht auf Attribute bezieht
select distinct ort, anrede
from personal;
Suche nach Zeichenketten, Suchoperatoren und Bedeutung (2)
Mit „=“ – es wird immer die KOMPLETTE Zeichenkette verglichen
Mit „like“ – ist ein Operator und kann TEILE von Zeichenketten auswerten
Die beiden Platzhalter bei der Suche nach Zeichenketten(2)
„_“ genau ein(!) beliebiges Zeichen
„%“ Bliebig viele (auch kein) Zeichen
Gib mir alle Artikelnamen und Einzelpreise, wo Artikelnamen mit G anfangen
select artikelname, einzelpreis
from artikel
where artikelname like 'g%‘
Ausgabe soll „blabla“ enthalten
Where firma like '%blabla%‘
Listenauswahl – Ausgabe aller firmennamen und Ort der Kunden aus Berlin, London, Madrid
select firma, ort
from kunden
where ort in ('berlin‘, 'london‘, 'madrid‘);
Ergebnisbeschränkung – ausgabe Bestelldatum und Empfänger von Besztellungen wo das Bestelldatum vor dem 01.01.1997 ist… Aufpassen ;-)
select bestelldatum, empfaenger
from bestellungen
where bestelldatum < '1997-01-01‘;
Ergebnisbeschränkung – nur die ersten 10 Treffer…
limit 10;
Ergebnisbeschränkung – Ausgabe der Top10 teuersten Artikelnamen und dazugehörige Einzelpreise…
select artikelname, einzelpreis
from artikel
order by einzelpreis desc
limit 10;
Tabellenerstellung, Spaltenoptionen (5)
NOT NULL – Nullwerte erlaubt oder nicht
DEFAULT – Standardwerte
UNIQUE – Eindeutigkeit
PRIMARY KEY – Primärschlüssel festlegen
AUTO_INCREMENT automatische Durchnummerierung
Optionen der Tabellenerstellung sind (2)
Kombinierbar OHNE Komma hintereinander schreiben(!!)
Reihenfolge egal, solange 1. Attributname 2. Datentyp 3. Optionen
Standardwerte – Erstelle die Tabelle Bücher, mit Spalte Titel und Auflage, letztere soll als Defaultwert die 1 haben.
Create table buecher (
Titel varchar(80),
auflage tinyint default 1);
ACHTUNG KEIN „=“ benutzen!!
Standardwerte – füge in die Tabelle Bücher ein „Winnetou I“
Iinsert into buecher (titel)
values (‚Winnetou I‘);
Hinweis:Der Default greift nur, wenn ein Attributname weggelassen wird!
Standardwerte – wie wird ein fixes Datum als Standard genutzt?
Default '2015-01-01‘
WICHTIG, in Hochkommas setzen!
Alternativ geht auf TIMESTAMP;
Eindeutigkeit – erzeuge Tabelle Buecher mit 13 stelligen ISBN-Nummern die eindeutig sein sollen und einem variablen titel der max 80 Zeichen haben darf
create table buecher (
isbn char(13) unique,
titel varchar(80) );
Primärschlüssel ist immer (2)
Eindeutig und nicht leer
„unique“ und „not null“ kann man sich sparen
Primärschlüssel – Verhältnis zu unique-Attributen?
Es kann nur einen PS geben aber durchaus mehrere unique Attribute
Primärschlüssel – erzeuge Tabelle buecher mit einer Spalte buchid welche aus Zahlen besteht und ein PS sein soll, und einer Spalte titel mit variabler max länge 80
create table buecher
buchid int primary key,
titel varchar(80));
Primärschlüssel – erzeuge Tabelle bestelldetails, spalten bestellid und artikelid, beides zahlen die nicht leer sein dürfen, eine spalte Anzahl mit kleinen Zahlen und der primärschlüssel wird zusammengesetzt aus bestellid und artikelid
Create table bestelldetails (
bestelledetails int not null,
artikelid int not null,
anzahl tinyint,
primary key (bestellid, artikelid) );
Automatische Durchnummerierung – erzeuge Tabelle autoren, die Spalte autorid ist eine Zahl, primary key und soll automatisch hoch gezählt werden, dazu nachname und vorname, jeweils max 50 Zeichen.
create table autoren (
autoren id int primary key auto_increment,
nachname varchar(50),
vorname varchar(50) );
Befüllen der Tabelle autoren, deren autorenid automatisch hochgezählt wird mit Agatha Christie
insert into autoren (nachname, vorname)
values (‚Christie‘, ‚Agatha‘);
Bezogen auf voriges Beispiel:
Befüllen der Tabelle autoren mit
insert into autoren
values (null, ‚Christie‘, Agatha‘);
Was passiert mit dem Wert für die autorenid?
Es wird trotzdem der Auto-Wert gesetzt : - )
Bedingtes Anlegen und Löschen von Datenbankobjekten : Befehle (2)
If not exists
If exists
Info: Etwaige Warnungen können ignoriert werden
Erzeuge Datenbank xzy nur wenn sie noch nicht existiert
create database if not exists xyz
Lösche Datenbank xyz wenn sie vorhanden ist
delete database if exists xyz
Info: so geht das auch mit tables
RI Detailstabelle, Mastertabelle andere Namen(2)
child
parent
RI Aktivierung – was ist zu beachten (2)
Die Datentypen (z.B: int+int) müssen kompatibel sein!
Die Attribut und Tabellennamen extact gleich schreiben
RI welche beiden Befehle(2)
foreign key
references
RI (1/2) Mastertabelle: erzeuge Tabelle kunden mit Spalte kundenid, zahl, als primary key und automatischer hochzählung mit Spalte nachname, max 50 Zeichen
create table kunden (
kundeid int primary key auto_increment,
nachname varchar(50) );
RI (2/2) Detailtabelle: erzeuge Tabelle bestellungen, mit Spalte bestellungid, zahl, primary key und autom. Hochzählung, bestelldatum mit datum das nicht leer sein darf und einer verknüpften spalte kundenid, die auf die (1/2) Tabelle verlinkt. (G070)
Delete/Update in der Mastertabelle(4)
Restrict – Die Operation wird nicht ausgeführt (standard)
Cascade – Datensätze der Detailtabelle werden ebenfalls gelöscht (bei Delete) bzw deren Fremdschlüssel entsprechend angepasst (bei Update mit Änderung des PS)
Set null – die Fremdschlüssel der Detailtabelle werden auf NULL gesetzt
No Action – Operation betrifft nur Mastertabelle – Datenbestand wird inkonsistent
RI – Häufige Fehler (2)
Tabellen/Attributnamen falsch geschrieben
Datentypen müssen exact übereinstimmen