Devgym_01_Databases_Foundations Flashcards

1
Q

Single Row vs. Multirow

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

To create a table, you need to specify its:

A
  • Name
  • Columns
  • The data type of each column

If you omit any of these the statement will fail.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Table Clusters

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie kann ich Zeilen einer Tabelle löschen und worauf muss ich achten?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was ist ein Deadlock?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Kann ich so eine Tabelle erstellen?

create table toys (

toy_name varchar2 );

A

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”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was ist eine Virtuelle private Datenbank (VPD)?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

True or false:

You can use aggregate functions directly in a where clause like this:

where count(*) > 10

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wie kann ich eine zusätzliche Spalte (is_deleted) in der Tabelle toys für den Soft Delete hinzufügen?

A

alter table toys

add is_deleted varchar2(1) default ‘N’;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was ist Pessimistisches Sperren (pesimistic locking)? Und in welchen Anwendungen funktioniert das?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Index Organized Table (IOT)

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was ist In-Database Archiving?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was sind Heap Tables?

A

Dies ist der Standard-Tabellentyp. Sie sind gut für den allgemeinen Datenzugriff geeignet. Die meisten der von Ihnen erstellten Tabellen werden Heaps sein.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Aggregate rows: Was ist der Unterschied zwischen

count(NAME OF COLUMN)

und

count(*)

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Welche Tabellentypen werden von einer Oracle Datenbank unterstützt?

A

The table types Oracle Database supports includes:

  • Heap organized
  • Index organized
  • Externally organized
  • Temporary

You can also place heap tables in a cluster.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Was ist eine Transaktion?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Was ist optimistisches Sperren (Optimistic Locking)?

A

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
18
Q

Was ist CLOB?

A

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.

19
Q

Was ist BLOB?

A

BLOB steht für Binary Large OBject. Sie verwenden es für die Speicherung von Binärdaten, wie Bilder, PDFs, Word-Dokumente usw.

20
Q

Wofür können External Table verwendet werden?

A

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.

21
Q

Was macht ROLLUP?

A

Damit können Untermengen gebildet werden. Dabei werden die von rechts nach links gebildet.

22
Q

Wie kann ich die Spalte einer Tabelle komplett anpassen?

A

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

23
Q

How to create an external table?

A

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

);

24
Q

Partitioned Table

A

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.

25
Q

By default you get a heap-organized table. If you want to create a table with different properties, you need to specify this.

For example, to partition it, add a partition by clause:

A
26
Q

A basic insert is made up of:

A
  • The insert keyword
  • An optional columns clause
  • A values clause or a query
27
Q

Was sind softe Löschvorgänge?

A

Soft (oder logische) Löschvorgänge “entfernen” Zeilen aus einer Tabelle, indem eine Markierung in der Tabelle gesetzt wird. Dies ist oft eine is_deleted Ja/Nein-Spalte. Sie kann aber auch andere Formen annehmen, wie z. B. einen deleted_datetime-Zeitstempel.

Wenn Sie der Tabelle Zeilen hinzufügen, setzen Sie is_deleted auf N. Wenn eine Zeile gelöscht werden soll, aktualisieren Sie diese Spalte auf Y.

Sie müssen dann sicherstellen, dass alle Abfragen für aktive Zeilen is_deleted = ‘N’ in der where-Klausel enthalten. Dies verkompliziert Ihren Code und ist leicht zu vergessen. Eine klare Dokumentation, gründliche Testfälle und Codeüberprüfungen tragen dazu bei, dass Sie dies bei Bedarf hinzufügen.

Sie können diesen Prozess auch mit den folgenden in der Oracle-Datenbank verfügbaren Methoden vereinfachen:

  • Erstellen von Views (mit der Klausel where is_deleted = ‘N’)
  • Virtuelle private Datenbank
  • Datenbank-interne Archivierung
28
Q

Wie werden Heap-Tabellen in einer Oracle Datenbank erstellt?

A

Heap-Tabellen sind der Standard in Oracle Database. Sie legen keine Reihenfolge für den physischen Ort der Zeilen fest. Die Klausel “organization heap” ist optional.

Heap-organisierte Tabellen eignen sich gut für die allgemeine Speicherung. Sie sind der flexibelste Tabellentyp und werden von Ihnen am häufigsten erstellt.

Die Syntax zum Erstellen einer solchen Tabelle lautet:

29
Q

Was kann ich in ORACLE mit einem (+) machen?

A

Damit kann ich einen OUTER JOIN kennzeichnen.

SELECT b.id, b.title, b.author, b.year_published, l.name language

FROM books b, library.languages l

WHERE l.id (+) = b.language_id

ORDER BY b.id

FETCH FIRST 10 ROWS ONLY;

30
Q

Was ist der Unterschied zwischen Zustandslos und Zustandsbehaftet?

A

Zustandslos

Ein zustandsloser Prozess oder eine zustandslose Anwendung kann als isoliert verstanden werden. Es gibt keine gespeicherten Kenntnisse oder Verweise auf vergangene Transaktionen. Jede Transaktion wird wie zum ersten Mal von Grund auf neu durchgeführt. Zustandslose Anwendungen bieten einen einzelnen Service oder eine Funktion und verwenden CDN-(Content Delivery Network-), Web- oder Druckserver, um diese kurzfristigen Anforderungen zu verarbeiten.

Ein Beispiel für eine zustandslose Transaktion wäre eine Online-Suche, die eine spontane Frage von Ihnen beantwortet. Sie geben Ihre Frage in eine Suchmaschine ein und drücken die Eingabetaste. Wenn Ihre Transaktion versehentlich unterbrochen oder geschlossen wird, starten Sie einfach eine neue. Stellen Sie sich eine zustandslose Transaktion als eine Art Verkaufsautomat vor: eine Anfrage ergibt eine Antwort.

Zustandsbehaftet

Im Gegensatz dazu kann auf Anwendungen und Prozesse, die ihren Zustand behalten oder zustandsbehaftet sind, mehrfach zugegriffen werden, wie beim Online-Banking oder bei E-Mails. Sie werden im Kontext vorangegangener Transaktionen ausgeführt, und die aktuelle Transaktion kann von deren Ablauf beeinflusst werden. Aus diesen Gründen verwenden zustandsbehaftete Apps jedes Mal dieselben Server, wenn sie eine Anforderung eines Nutzers verarbeiten.

Wenn eine zustandsbehaftete Transaktion unterbrochen wird, wurden der Kontext und die Historie gespeichert, sodass Sie mehr oder weniger dort weitermachen können, wo Sie aufgehört haben. Zustandsbehaftete Apps erfassen Dinge wie bevorzugte Einstellungen, die Fensterposition und die letzten Aktivitäten. Sie können sich zustandsbehaftete Transaktionen als ein fortlaufendes Gespräch mit derselben Person vorstellen.

Die meisten Anwendungen, die wir täglich verwenden, sind zustandsbehaftet. Doch mit fortschreitender Technologie erleichtern Microservices und Container das Erstellen und Bereitstellen von Anwendungen in der Cloud.

31
Q

Wie kann man außer DELETE noch Zeilen einer Tabelle löschen?

A
  • Mit TRUNCATE TABLE
  • Dieses Statement ist ein DDL-Befehl und enthält daher einer impliziten COMMIT.
  • Man kann also danach keinen ROLLBACK mehr durchführen.
  • Es kann NICHT mit WHERE verbunden werden. Es werden also alle Zeilen gelöscht.
  • TRUNCATE TABLE employees;
32
Q

Können Zeilen aus einer Tabelle über die dazugehörige VIEW gelöscht werden?

A

Ja, allerdings gibt es ein paar Restriktionen (außerhalb der Beginner).

CREATE OR REPLACE VIEW employees_v AS SELECT * FROM employees;

DELETE FROM employees_v WHERE employee_id = 7369;

1 row updated.

33
Q

Was sind Table Clusters?

A
  • Dadurch können Sie Zeilen aus vielen Tabellen physisch am selben Ort speichern. Dies kann den Abruf zusammengehöriger Zeilen aus verschiedenen Tabellen beschleunigen.
  • Ein Beispiel: Sie haben zwei Tabellen, eine für Teddys und eine für Bausteine. Sie wollen oft alle Steine und Teddys der gleichen Farbe finden. Wenn Sie diese in einem Cluster nach Farben gruppieren, verringert sich der Aufwand für die Suche nach allen roten Gegenständen.
34
Q

By default you get a heap-organized table. If you want to create a table with different properties, you need to specify this.

For example, to create an index-organized table, specify a primary key and add the organization index clause:

A
35
Q

Index Organized Table

A

Hier werden die Daten nach dem Primärschlüssel sortiert gespeichert. Wenn die Primärschlüsselspalte beispielsweise die Werte 1, 2, 3 usw. speichert, liegt die Zeile mit dem Wert 2 garantiert “zwischen” den Zeilen mit 1 und 3.

36
Q

Was macht CUBE?

A

Damit können Untermengen von allen Kombinationen erstellt werden.

37
Q

Temporary Table

A

Diese speichern Daten, die nur für Ihre Sitzung bestimmt sind. Sie sind nützlich, wenn Sie Prozesse haben, die Arbeitsdaten speichern, die Sie entfernen müssen, wenn sie abgeschlossen sind.

38
Q

Wie kann ich einen deadlock vermeiden beim update?

A

In diesen Fällen sollten Sie die Zeilen sperren, bevor Sie eine Aktualisierung durchführen. Sie können dies mit select for update tun. Wie update selbst sperrt es Zeilen, die mit der where-Klausel übereinstimmen. Um es zu verwenden, fügen Sie die “for update“-Klausel nach Ihrer Abfrage ein.

Niemand sonst kann diese Zeilen aktualisieren, löschen oder für die Aktualisierung auswählen, bis Sie eine Commit- oder Rollback-Funktion ausführen.

Im Folgenden werden also alle Zeilen mit der Farbe Rot gesperrt:

select * from bricks

where colour = ‘red’ for update;

39
Q

If you want rows with similar properties to be physically stored near to each-other, you should use one of the following data structures:

A

Die Speicherung von Zeilen mit ähnlichen Eigenschaften in unmittelbarer Nähe zueinander kann den Datenzugriff beschleunigen. Nehmen wir an, Sie ordnen Ihr Spielzeug nach Farben. Das macht es einfacher, alle roten Spielsachen zu finden.

  • Index organized tables
  • Table clusters
  • Partitioning
40
Q

Wie ist die Syntax eines Update Statements?

A

update TABLE_NAME

set COLUMN1 = VALUE1, COLUMN2 = VALUE2, …

[where] – OPTIONAL

An update will change the value of all rows matching the where clause.