Devgym_01_Databases_Foundations Flashcards
Single Row vs. Multirow
Eine mehrzeilige Einfügung verwendet eine Unterabfrage anstelle der Werte-Klausel. Dadurch wird der Zieltabelle für jede von der Select-Anweisung zurückgegebene Zeile eine Zeile hinzugefügt.
Mehrzeilige Anweisungen sind in der Regel schneller als einzeilige Einfügungen. Das liegt daran, dass für jede neue Anweisung, die Sie ausführen, ein gewisser Overhead entsteht. Es ist in der Regel schneller, so viele Zeilen mit so wenigen Ausführungen wie möglich zu verarbeiten.
Aber Einfügungen sind so schnell, dass Sie diesen Unterschied nur bemerken, wenn Sie eine große Anzahl von Zeilen hinzufügen. Für die meisten Anwendungen, bei denen nur wenige Zeilen auf einmal eingegeben werden, ist es also in Ordnung, die Werteklausel zu verwenden.
To create a table, you need to specify its:
- Name
- Columns
- The data type of each column
If you omit any of these the statement will fail.
Table Clusters
- Dies ist eine Datenstruktur, die viele Tabellen enthalten kann. Zeilen aus verschiedenen Tabellen mit demselben Cluster-Schlüssel befinden sich am selben Ort.
- Dadurch kann der Zugriff auf verwandte Zeilen aus geclusterten Tabellen viel schneller erfolgen als bei nicht geclusterten Tabellen.
- Dies liegt daran, dass nicht geclusterte Tabellen die Zeilen immer an unterschiedlichen Orten speichern.
Wie kann ich Zeilen einer Tabelle löschen und worauf muss ich achten?
- Mit einem DELETE Statement kann ich Zeilen entfernen. Ohne eine WHERE Klausel werden alle Zeilen entfernt.
- z.B. werden mit DELETE FROM employees alle Zeilen entfernt.
- Eingrenzen kann ich dass z.B. mit WHERE employee_id = 7399
- Danach ist ein COMMIT notwendig, ansonsten kann auch ein ROLLBACK gemacht werden.
Was ist ein Deadlock?
Die überwiegende Mehrheit der Deadlocks wird durch schlechtes Anwendungsdesign und Bugs verursacht. Sie entstehen, wenn zwei oder mehr Sessions versuchen, die gleichen Zeilen in unterschiedlicher Reihenfolge zu aktualisieren.
z.B. wenn ein Konto gleichzeitig bearbeitet wird
Kann ich so eine Tabelle erstellen?
create table toys (
toy_name varchar2 );
This choice is incorrect, but you got it wrong.
You must specify a maximum size for varchar2 columns. But this doesn’t have one! So it fails with “ORA-00906: missing left parenthesis”.
Was ist eine Virtuelle private Datenbank (VPD)?
VPD definiert Richtlinien für Ihre Daten. Sie verknüpfen Funktionen mit jeder Richtlinie. Diese können je nach Benutzer und anderen Sitzungseinstellungen eine Where-Klausel zu Ihren Abfragen hinzufügen.
Sobald die Richtlinie eingerichtet ist, fügt Oracle Database die Where-Klausel bei Bedarf automatisch hinzu. Sie brauchen also Ihren Code nicht zu ändern. Das bedeutet weniger Arbeit für Sie!
Wenn Sie VPD verwenden, kann sich die Abfrage, die Sie in Ihrem Code sehen, von der Abfrage unterscheiden, die Ihr Benutzer ausführt. Das kann die Fehlersuche in Ihrer Anwendung erschweren. Außerdem ist VPD eine Funktion, die nur in der Enterprise Edition enthalten ist und Ihnen daher möglicherweise nicht zur Verfügung steht.
True or false:
You can use aggregate functions directly in a where clause like this:
where count(*) > 10
FALSE
You can filter the result of an aggregate function in the having clause. For example, to return the number of rows in the bricks table only if there are more than 10 rows, you can write:
select count(*) from bricks having count(*) > 10
Wie kann ich eine zusätzliche Spalte (is_deleted) in der Tabelle toys für den Soft Delete hinzufügen?
alter table toys
add is_deleted varchar2(1) default ‘N’;
Was ist Pessimistisches Sperren (pesimistic locking)? Und in welchen Anwendungen funktioniert das?
Damit werden die Zeilen gesperrt, wenn der Benutzer sie mit select for update liest. Dies blockiert alle anderen Aktualisierungen oder Versuche, sie zu sperren. So kann niemand sonst die betroffenen Zeilen ändern. Dadurch wird sichergestellt, dass die Benutzer immer mit der aktuellen Sicht auf die Daten arbeiten. Sie können also immer die Aktualisierungen der anderen sehen.
Dies ist einfach zu programmieren. Aber pessimistisches Sperren funktioniert nur in zustandsabhängigen (stateful) Anwendungen. Webanwendungen sind in der Regel zustandslos (stateless).
Lesen und Schreiben der Daten sind also getrennte Transaktionen. Das macht diese Methode in diesen Umgebungen unbrauchbar.
Index Organized Table (IOT)
- Ein IOT speichert Daten physisch geordnet nach dem Primärschlüssel.
- Sie sind am besten geeignet, wenn Sie einen schnellen Datenzugriff über diesen Schlüssel sicherstellen wollen.
Was ist In-Database Archiving?
Die datenbankinterne Archivierung übernimmt das Ausblenden von gelöschten Zeilen für Sie. Dazu wird eine ora_archive_state-Spalte zu Ihren Tabellen hinzugefügt. Oracle Database verbirgt dann alle Zeilen, in denen diese Spalte gesetzt ist. Sie können diese Zeilen wieder sichtbar machen, indem Sie in Ihrer Sitzung die Sichtbarkeit der Zeilenarchivierung zwischen “aktiv” und “alle” umschalten.
Dazu aktivieren Sie die Zeilenarchivierung für eine Tabelle wie folgt:
alter table TABLENAME row archival;
Diese Funktion ist neu in Oracle Database 12c.
Was sind Heap Tables?
Dies ist der Standard-Tabellentyp. Sie sind gut für den allgemeinen Datenzugriff geeignet. Die meisten der von Ihnen erstellten Tabellen werden Heaps sein.
Aggregate rows: Was ist der Unterschied zwischen
count(NAME OF COLUMN)
und
count(*)
- Wenn Sie eine Spalte an count übergeben, wird die Anzahl der Werte, die nicht null sind, zurückgegeben.
- Wenn Sie Star verwenden, erhalten Sie die Gesamtzahl der Zeilen, die die Abfrage zurückgibt.
Welche Tabellentypen werden von einer Oracle Datenbank unterstützt?
The table types Oracle Database supports includes:
- Heap organized
- Index organized
- Externally organized
- Temporary
You can also place heap tables in a cluster.
Was ist eine Transaktion?
Eine Transaktion ist eine Verarbeitungseinheit, die in einer Datenbank durchgeführt wird. Transaktionen sind Einheiten oder Sequenzen von Vorgängen, die in einer logischen Reihenfolge ausgeführt werden, entweder manuell durch einen Benutzer oder automatisch durch ein Datenbankprogramm.
Eine Transaktion ist die Weitergabe einer oder mehrerer Änderungen an die Datenbank. Wenn Sie z. B. einen Datensatz erstellen, aktualisieren oder aus einer Tabelle löschen, führen Sie eine Transaktion in dieser Tabelle durch. Es ist wichtig, diese Transaktionen zu kontrollieren, um die Datenintegrität zu gewährleisten und um Datenbankfehler zu behandeln.
In der Praxis werden Sie viele SQL-Abfragen in einer Gruppe zusammenfassen und sie alle zusammen als Teil einer Transaktion ausführen.