SQL-Skript-Zusammenfassung

Zusammenfassung des 300 Seiten Skriptes

Zusammenfassung des 300 Seiten Skriptes


Marko Kiebitz
Diese Lernkarten bieten eine umfassende Übersicht über SQL-Skriptierung auf Universitätsebene, mit Fokus auf Tabellen, Datenbanken, Triggern, Stored Routines, Transaktionen und Joins. Sie decken Themen wie Tabellenstrukturen, Beziehungen, Locking, Isolierungsebenen und Berechtigungen ab. Ideal für Informatikstudenten, die ihre SQL-Kenntnisse vertiefen und praktische Beispiele sowie Syntax verstehen möchten.
Flashcards
375
Students
5
Language
German
Category
Computer Science
Level
University
Created / Updated
05.04.2015 / 14.12.2017

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

Nullwerte verhindern/zulassen
I Tabelle Autoren erstellen, Nachname darf nicht leer sein
II Einfügen eines Autors mal nur Vorname Agatha mal nur Nachname Chriestie G066

.

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) );

Eindeutigkeit – Erzeuge Tabelle Autoren, wo Nachname und Vorname max 50 Zeichen haben dürfen und BEIDE ZUSAMMEN nur einmal vorkommen dürfen! G067

.

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 : - )

Beispiel für Kombinationen, es gilt(2) G068

Optionen sind kombinierbar, OHNE KOMMA


Die Rehenfolge der Optionen ist beliebig, solange 1. Attributname, 2. Datentyp (incl. unsigned/binary), 3. Etwaige Optionen

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 Referentielle Integrität (3) (G069)

-Stellt sicher, dass sich Fremdschlüsselwerte einer Detailtabelle stets auf gültige existierende Primärschlüssel einer Mastertabelle beziehen
-Wichtig für Konsistez des Datensatzes
-Verlangsamt Einfüge, Änderungs und Löchoperationen

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)

create table bestellungen (
  bestellungid int primary key auto_increment,
  bestelldatum date not null,
  fk_kundeid int,
 foreign key (fk_kundeid) references kunden(kundeif)  );

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 Beispiel cascade (G071)

.

RI Beispiel set null (g072)

.

RI – Optionen für Update und Delete beziehen sich auf und werden wo definiert (G073)

„on delete“ / „on update“ beziehen sich auf Änderungs/Löschvorgänge in der MASTER-Tabelle
Definiert werden sie aber in der Detail Tabelle

RI – Häufige Fehler (2)

Tabellen/Attributnamen falsch geschrieben
Datentypen müssen exact übereinstimmen

Study