Devgym_01_Databases_Foundations Flashcards
(40 cards)
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.
Was ist optimistisches Sperren (Optimistic Locking)?
Hier werden die Zeilen zwischen dem Lesen und Schreiben nicht gesperrt. Daher kann jemand anderes zwischen diesen Schritten Änderungen vornehmen. Um zu verhindern, dass Ihre Aktualisierung die der anderen überschreibt, prüft die Where-Klausel, ob die Daten dieselben sind wie beim Lesen. Optimistisches Sperren dient dazu, verlorene Aktualisierungen (lost updates) zu verhindern. Sie dient nicht der Verhinderung von Deadlocks.
Es gibt mehrere Möglichkeiten, optimisches Sperren durchzuführen, darunter:
- Hinzufügen einer Versionsnummerspalte zur Tabelle
- Verwendung einer Prüfsumme oder eines Hashes über alle Spaltenwerte
- Vergleich aller ursprünglichen Spaltenwerte
Was ist CLOB?
CLOB stands for Character Large OBject. You can use this to store text up to (2^32 - 1 bytes) * (database block size). The default block size in Oracle Database is 8k (8 * 2^10). Which gives a maximum size of 2^45 - 1 bytes.
Was ist BLOB?
BLOB steht für Binary Large OBject. Sie verwenden es für die Speicherung von Binärdaten, wie Bilder, PDFs, Word-Dokumente usw.
Wofür können External Table verwendet werden?
Sie können externe Tabellen verwenden, um Nicht-Datenbankdateien mit SQL zu lesen. Diese sind ideal, wenn Sie CSV-Dateien (comma separate value) in Ihre Datenbank laden müssen.
Was macht ROLLUP?
Damit können Untermengen gebildet werden. Dabei werden die von rechts nach links gebildet.
Wie kann ich die Spalte einer Tabelle komplett anpassen?
Sie können eine Spalte mit Bezug auf ihren aktuellen Wert ändern. Um zum Beispiel einer Spalte einen Wert hinzuzufügen, schreiben Sie:
set column = column + 1
How to create an external table?
To create an external table, you must first create a directory. This provides the location on the database server your files are in. Note you’re not able to create these on LiveSQL, so the statement fails with an “insufficient privileges” error.
create** **or** **replace** **directory tmp** **as** **‘/tmp’
An external table reads from the file listed in location (file.txt) in the folder the directory points to.
create table toys_ext (
toy_name varchar2(100)
)
organization external (
default directory tmp
location (‘toys.csv’)
);
Partitioned Table
Durch die Partitionierung wird Ihre Tabelle in kleinere Tabellen aufgeteilt. Sie können Heap-Tabellen und IOTs partitionieren. Wie bei einer Standard-Heap-Tabelle fügt Oracle Database Zeilen zu einem partitionierten Heap hinzu, wo immer in der Partition Platz ist. Zeilen in einem partitionierten IOT müssen jedoch an der richtigen Stelle innerhalb der durch den Primärschlüssel definierten Partition eingefügt werden.
Sie müssen eine Partitionierungsstrategie wählen, um dies zu nutzen. Diese legt fest, wie Oracle Database die Zeilen den Partitionen zuordnet. Die verfügbaren Methoden sind Hash, Range und List. Weitere Einzelheiten hierzu finden Sie im Handbuch Partitionierungskonzepte.
Hinweis: Partitionierung ist eine kostenpflichtige Option! Vergewissern Sie sich, dass Sie für die Verwendung dieser Option lizenziert sind, bevor Sie damit beginnen.