DB

Datenbanken

Datenbanken


T. G.
Diese Lernkarten behandeln fortgeschrittene SQL-Konzepte für Universitätsstudenten in der Informatik. Sie decken Themen wie Tabellen, Relationen, Integrität, SQL-Befehle und Optimierung ab, mit Fokus auf Klauseln, Indizes und Performance-Tuning. Nutzer lernen, effiziente Abfragen zu schreiben und Datenbanken zu optimieren, was für Datenbankadministratoren und Entwickler besonders nützlich ist.
Flashcards
152
Students
5
Language
German
Category
Computer Science
Level
University
Created / Updated
15.02.2015 / 05.03.2016

Flashcards

Wie wird eine Sequence beim EInfügen mittels UPDATE-Statement erhöht ? 

INSERT INTO Kunden (Kunden_ID , Name) VALUES 
(Kunden_ID_Sequencename.NEXTVAL , 'Horst' ) ; 

Welche der folgenden ALTER-TABLE Anweisungen sind gültig ? 

Was tut : 
DROP TABLE kunden CASCADE CONSTRAINTS ;   ? 

Entfernt eine Tabelle samt Indizes, Views und Constraints , 
auch FK-Constraints, die nicht ohne weiteres entfernt werden könnten werden durch CASCADE CONSTRAINTS gelöscht 

Welche Aussagen sind wahr? 

Welche dieser Befehle sind gültige SQL DAL Befehle? 

Was wird unter Oracle jedem Datenbankuser automatisch zugeordnet? 

Unter Oracle wird jedem Nutzer automatisch ein Datenbankschema zugeordnet, welche Vorteile hat dies? 

Jeder Nutzer arbeitet in seinem eigenen Namensraum , d.h zwei Nutzer können die gleichen Tabellennamen ohne Konflikte vergeben. Zusätzlich dazu kann Nutzer1 die Tabellen von Nutzer2 über Nutzer2.Tabellenname ansprechen 

Welche dieser Ausdrücke bezeichnen Sichten im Oracle Data Dictionary ? 

Welche Befehle kennt die SQL DML ? 

Worin unterscheiden sich : 

INSERT INTO Teile (TNr, Typ, Bezeichnung) VALUES (38, 'Baugruppe', 'Dynamo');
INSERT INTO Teile VALUES (38, 'Baugruppe', 'Dynamo');

? 

Wenn die Spaltennamen angegeben sind , ist die Reihenfolge der Werte beliebig . 
Wenn die Spaltennamen fehlen , müssen die Werte in richtiger Reihenfolge /Datentypen sein 

Was passiert bei dieser Anweisung mit den Spalten , die nicht in der Spaltenliste aufgeführt sind? 

INSERT INTO Kunden (Kun_Nr, Nachname) SELECT Ang_Nr, Nachname FROM Angestellte;

Sie werden mit NULL-Werten aufgefüllt. Falls Sie keine NULL-Werte erlauben schlägt das Ausführen dieser Anweisung fehl. 

Ändern Sie in der Tabelle „Items“ alle Bezeichnungen „Harry P “ in „Hermine G“!

UPDATE ITEMS SET Bezeichnung='Hermine G' WHERE Bezeichnung='Harry P'

Übersetze folgende Änderung in ein UPDATE-Statement : 
Allen Angestellten(Tabellenname) der Abteilung 7 werden 20 % vom Gehalt abgezogen.

UPDATE angestellte SET gehalt=gehalt*0.9 WHERE abteilung_nr=7 ; 

Eine andere Form der UPDATE -Klausel ist die MERGE Klausel, die seit SQL Standard 3 (2003) existiert .
Was unterscheidet MERGE von UPDATE? 

Merge ändert /fügt Daten hinzu , jenachdem ob der Datensatz schon existiert oder nicht. 
 

Ein Teil der DML ist die DELETE- Klausel . 
Was tut :
DELETE FROM angestellte; 

löscht alle Datensätze aus der Tabelle angestellte 

Eine Transaktion ist in SQL eine Folge von DQL und DML Anweisungen , der die ACID-Eigenschaften erfüllt. 
Welche Eigenschaften sind das? 

A - Atomicity - Transaktionen sind atomar und als unteilbare Einheiten auszuführen 
C - Consisteny - Eine Transaktion bringt eine Datenbank von einem konsistenten Zustand in einen weiteren. 
I  - Isolation - Änderungen laufen Isoliert voneinander ab . Mehrbenutzerbetrieb wird nur simuliert. 
D - Durability - DIe Ergebnisse einer Transaktion werden dauerhaft in der Datenbank gespeichert 
 

Welche dieser Ausdrücke bezeichnen einen Teil der sog. ACID - Eigenschaften von SQL Transaktionen? 

Wenn ein Constraint mit Prüfzeitpunkt "defferable initially DEFERRED" angegeben wird, wann wird die Prüfung dann durchgeführt? 
 

Was passiert wenn ein mit defferable initially immediate definierter Constraint einen Fehler wirft? 

Was passiert, wenn ein mit defferable initially deffered definiertes Constraint einen Fehler wirft ? 

Aus wievielen Befehlen kann eine Transaktion bestehen ,die ein CREATE , ALTER oder DROP Statement enthält? 

Eine Transaktion wird unter SQL immer mit COMMIT abgeschlossen . 
DIe 3 Befehle der DDL (CREATE , ALTER , DROP ) beinhalten alle ein implizites COMMIT , 
daher stellt jeder dieser Befehle auch eine eigene Transaktion dar. 

Man kann den Start und das Ende einer Transaktion explizit angeben . Mit welchen Schlüsselworten können Transaktionen begonnen , bzw beendet werden ? 

START TRANSACTION ; 
-- hier DML , DQL Anweisungen 

COMMIT ;  oder ROLLBACK ; 

Welche Probleme können bei Multinutzer Betrieb auftreten ? 

Was tut : 
SET CONSTRAINTS constraintname DEFERRED ; 

Ändert den Prüfungszeitpunkt eines als IMMEDIATE definierten Constraints in DEFERRED :

Was passiert im Fehlerfall bei PK, CHECK , UNIQUE , NOT NULL Constraints  ?
Was kann bei Feherfall eines FK Constraints eingestellt werden ? 

Beim Fehlerfall von PK , UNIQUE , NOT NULL und CHECK wird ein ROLLBACK ausgeführt. 
Wenn bei einem FK Constraint ein Fehler geworfen wird kann eine automatische Fehlerkorrektur eingestellt werden 

Welche Klauseln kennt das Select-Statement ? 
Welche sind obligatorisch ? 

Select kennt : 

SELECT (obligatorisch)
FROM(obligatorisch)
WHERE 
GROUP BY 
HAVING 
ORDER BY 
 

Was unterscheidet die WHERE von der HAVING Klausel? 

WHERE selektiert Datensätze aus Tabellen  
HAVING selektiert Gruppen und darf auch Aggregat / Gruppenfunktioen enthalten . 

Beispiel : 
SELECT * 
FROM store_info 
GROUP BY store_location 
HAVING AVG(verlaufszahlen)>1500;

Wie kann man folgende Aufgabe elegant lösen : 
Zeigen SIe alle Angestellten (Nachname + Vorname in einer Spalte) . 

SELECT vorname || ' ' ||nachname 
FROM angestellte; 

Das || ' ' || fügt zwischen den selektierten Spalten noch ein leerzeichen ein 

Erkläre die Syntax und Semantik  von folgendem Ausdruck : 
SELECT DISTINCT c.area , f.image
FROM countrys c JOIN flags f 
ON c.countrycode = f.countrycode; 

Syntax:
-DISTINCT unterdrückt doppelte Tupel ( Defautl : ALL ) 
- in der Select Anweisung Tabellennamen auch Abkürzungen sein ,die in der FROM Klausel vergeben werden 
- c und f sind Abkürzungen für die Tabellen 
- in der Fromklausel werden die beiden Tabellen Countrys und Flags mit einem Join nach der Selektionsbedingung countrycode= countrycode Verbunden . 

Semantik : Zeigt alle Countrys, die auch in der Flags Tabelle vorhanden sind mit ihren Fahnen an. 
 

Zeige mittels SELECT alle Angestellten ( Ang_ID ) , die in den Tabellen "Abteilungen" , "Angestellte" und "Lieferanten" vorkommen. Dabei soll kein Join Verwendet werden , die Spalte "Ang _ID" heißt in allen Tabellen gleich ,darf aber als 3 Spalten ausgegeben werden. 

SELECT Abt.Ang_ID,Ang.Ang_ID , Lie.Ang_ID 
FROM Abteilungen Abt , Angestellte Ang , Lieferanten Lie ; 

Was tut : 
SELECT * 
FROM angestellte , kunden ;  
?

Die Select Anfrage hat nur die beiden obligatorischen Klauseln . 
Wenn keine WHERE oder JOIN Klausel angegeben ist, gibt dieser Ausdruck das Kartesische Produkt der beiden Eingangsmengen aus.  

Gebe das kartesische Produkt der beiden Tabellen Kunden und Angestellte mittels Select aus. 

SELECT * 
FROM kunden , angestellte ;

oder

SELECT *
FROM kunden 
CROSS JOIN  angestellte ; 

Was tut folgender Ausdruck : 
SELECT * 
FROM kunden , angestellte 
USING id , name 

Die FROM-Klausel stellt das kartesische Produkt der beiden Tabellen her , 
Die USING-Klausel erweitert diese Funktion wie ein natural join , die Spalten hinter USING sind die Namensgleichen Spalten beider Tabellen , deren Ihalt verglichen werden soll

Nenne eine andere Schreibweise für : 
SELECT * 
FROM tabelle1
NATURAL JOIN tabelle2 ; 

SELECT * 
FROM tabelle1 
INNER JOIN tabelle2 
ON tabelle1.spalte1 = tabelle2.spalte1; 

Oder : 
SELECT * 
FROM tabelle1 , tabelle2 
WHERE tabelle1.spalte1=tabelle2.spalte1

Wo liegt der Unterschied zwischen : 

SELECT * 
FROM tabelle1 
RIGHT JOIN tabelle2 
USING (spalte1); 

SELECT *
FROM tabelle1 
RIGHT JOIN tabelle2
ON tabelle1.spalte1=tabelle2.spalte1 
 

Es besteht kein Unterschied, die Verwendung von USING setzt jedoch voraus, dass die beiden Tabellen eine gemeinsame Spalte haben . 

Kann man in der ON- Klausel auch Bedingungen angeben ? 
Nenne ein Beispiel . 

SELECT * 
FROM tabelle1 
INNER JOIN tabelle2 
ON tabelle1.spalte1 = tabelle2.spalte1 AND name='horst' ; 

Welche Aussagen bezüglich der dreiwertigen Logik sind wahr? 

Selektieren Sie alle Angestellten, die der Abteilung 2 oder keiner Abteilung angehören und jeweils weniger als 5000 Euro verdienen.

Tabelle : Angestellte 

SELECT * 
FROM angestelle 
WHERE  ( abteilung=2 OR abteilung IS NULL ) AND gehalt<5000;

false AND unknown = ? 
true AND unknown = ? 

(dreiwertige Logik) 

false AND unknown = false 
true AND unknown = unknown 

Was tut : 

SELECT * 
FROM veranstaltung 
WHERE datum BETWEEN (
    TO_CHAR(01.01.1992 , 'DD.MM.YYYY')
     AND
    TO_CHAR(01.01.1993 , 'DD.MM.YYYY''));

Selektiert alle Tupel aus "veranstaltung" mit einem Austragungsdatum 
zwishen 01.01.1992 und 01.01.1993

Study