Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

SQL Grundkurs 1: Die Sprache erlernen

Erstellen einer Tabelle

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Und los geht's! Sehen Sie sich dieses Video an und erstellen Sie Ihre erste eigene Tabelle.

Transkript

In diesem Video möchte ich ihnen zeigen, wie sie mit der CREATE TABLE-Anweisung eine Tabelle in Ihrer Datenbank erzeugen. Als Beispiel erzeugen wir eine Tabelle für Schulungen, in der wir Schulungen eintragen können. CREATE TABLE lautet die Anweisung, gefolgt vom Namen der Tabelle. Wenn wir das sauber eingeben, geben wir auch hier das Schema mit an, Schema Wawi und der Name für die Tabelle Schulung. Nun geht man typischerweise in eine neue Zeile und in einem runden Klammern Paar wird die Struktur der Tabelle definiert. Wegen der besseren Lesbarkeit ist es üblich, hier mit einem Tabulator einzurücken. Ich vergebe für die erste Spalte den Namen ID, das wird später mal die Primärschlüsselspalte werden. Hier beim SQL Server verwende ich den Datentyp Integer, Int, für diese Spalte. Wenn ich definieren möchte, dass ich hier immer etwas eintragen möchte für eine Spalte, dann schreibe ich hinten einfach NotNull dazu. Würde ich hier nur Null alleine hinschreiben, würde das bedeuten, dass Null in der Spalte erlaubt ist. Das brauche ich aber gar nicht zu tun, wenn ich das möchte. Denn wenn ich nichts hinschreibe, gilt das auch als Null. Man nennt das auch NullLevel. Ich kann hier Null-Werte stehen lassen, während bei NotNull, muss ich in der Spalte etwas eintragen. Dann vergebe ich eine Bezeichnung. Ich verwende hier einen variablen Character-Datentyp Var Character, weil hier die Länge der Bezeichnungen stark variiert, und es hier keinen Sinn machen würde, einen fixen Character zu verwenden. Die maximale Länge an Zeichen, die hier erfasst werden soll, beträgt 100, und ich möchte, dass hier unbedingt ein Name für die Schulung erfasst wird. Deshalb ergänze ich auch hier den Zusatz NotNull. Weiter möchten wir jede dieser Schulungen einer Kategorie zuordnen. Für die Kategorie werden wir eine zweite Tabelle evtl. einmal ergänzen und das wird die Fremdschlüsselspalte werden. Ich verwende für einen Fremdschlüssel lieber Character als Kürzel , weil man hier oft sprechendere Werte verwenden kann als numerische Werte wie bei einer Kategorie 1, 2, 3, 4, 5, wo man dann später nachsehen muss, was bedeutet eigentlich Kategorie 3? Während, wenn ich z. B. für IT das Kürzel IT verwende, dann ist das sprechend. Ich definiere das hier einfach einmal als Character 2. Was bedeutet jetzt Character ohne Var vorne. Hier handelt es sich um einen fixen Character, der immer zwei Zeichen lang ist. Würde ich nur ein Zeichen erfassen, würde es mit einem Leerzeichen auf die volle Länge von zwei Zeichen aufgefüllt werden. Nachdem ich gerade bei solchen Kürzeln in der Regel immer eine fixe Länge bei den Inhalten verwende, empfiehlt es sich auch, einen fixen Datentyp zu verwenden, denn bei großen Datenmengen ist der Zugriff auf fixe Datentypen schneller. Dann wollen wir als nächstes eine Dauer z. B., das ist die Anzahl der Schulungseinheiten, wir können es auch Einheiten nennen, ich lasse jetzt einmal Dauer stehen, und da wir kaum mehr als 255 Einheiten in einer Schulung unterbringen werden, verwende ich hier Tiny Integer. Tiny Integer ist beim Microsoft SQL Server ein Datentyp, der einen Wertebereich von 0 bis 255 aufweist, d. h., er kann auch nicht negativ sein. NotNull, damit ich etwas erfassen muss. Auch die Kategorie sollten wir als NotNull definieren. Dann möchte ich ein Datum, ab dem diese Schulung verfügbar ist, ab dem dann weitere Termine, die dann in einer eigenen Tabelle gespeichert werden müssen, vergeben werden können. Ich nenne die Spalte Verfügbar, verwende den Datentyp Date. Achtung, wenn Sie den Microsoft SQL Server verwenden: Date, der nur Datum enthält, gibt es erst ab der Version 2008. In früheren Versionen müssen sie DateTime als Datentyp verwenden, der auch eine Uhrzeit enthält. Da ich aber eine aktuelle Version habe und die Uhrzeit nicht benötige, sondern nur das Datum, verwende ich diesen neuen Datentyp. Außerdem kann man einen Standardwert, einen sogenannten Default-Wert, für eine Spalte definieren. Ein Default-Wert wird in dieser Spalte vergeben, wenn beim Einfügen eines Datensatzes, kein anderer Wert dieser Spalte zugewiesen wird. Zu Deutsch sagt man einfach Standardwert. Ich verwende hier die Funktion SysDateTime. Das ist eine neue Funktion für die neuen Datumsdatentypen ab dem SQL Server 2008. Wenn Sie hier eine ältere Version nutzen vom Microsoft SQL Server, verwenden Sie die Funktion GetDate. Dann wollen wir einen Preis, das ist irgendein Verrechnungspreis, interner für eine Schulung, den definieren wir z. B. als SmallMoney. SmallMoney ist ausreichend. Der belegt vier Byte Platz und geht nur bis plus/minus 32.000 und ein bisschen was. Das ist aber vollkommen ausreichend, soviel benötigen wir hier gar nicht. Und als letzte Spalte noch eine Spalte Aktuell, so eine Art Flag, wenn eine Schulung nicht mehr verfügbar sein sollte, dann werden wir hier Aktuell auf Nein setzen. Standardmäßig werden wir hier definieren, dass das als NotNull festgelegt ist, und werden als Default-Wert einsetzen. Was ich hier vergessen habe, deshalb ist auch diese Zeile schon rot markiert, ist der Datentyp. Und Bit ist der Datentyp, den man für boolesche Werte beim SQL Server verwendet. Bit kann die Werte 0 und 1 aufweisen. 1 steht für wahr und 0 für falsch. Das soll fürs Erste auch schon genügen, d. h., ich beende diese Anweisung jetzt und wir können diese Tabelle schon erstellen. Ich markiere die Anweisung und starte die Anweisung. Wir bekommen die Rückmeldung, dass das Erstellen erfolgreich war. Wenn wir jetzt hier im Objekt-Explorer in in der graphischen Darstellungsform die Anzeige aktualisieren, dann sollten wir diese Tabelle Schulungen hier auch schon finden. Um diese Tabelle gleich zu testen, habe ich hier eine Insert- und eine Select-Anweisung schon vorbereitet. Die Insert-Anweisung füllen wir aus, um in dieser soeben erstellten Tabelle einen ersten Datensatz einzufügen. Das hat geklappt, d. h., die Tabelle ist nicht mehr da, sie ist auch schon einsatzbereit. Zeigen wir uns diesen einen Datensatz an, dann sehen wir, dass das Ganze funktioniert hat. Was ändert sich jetzt, wenn wir ein anderes Datenbank-Managementsystem verwenden? Prinzipiell an der Logik und am Aufbau der CreateTable-Anweisung gar nichts. Der einzige Unterschied zwischen den einzelnen Datenbank-Managementsystemen in diesem Bereich, soweit wir es jetzt hier benutzen, sind die Datentypen. Was müssen wir also hier anpassen und ändern, wenn wir z. B. Oracle nutzen? Bei Oracle verwenden wir für die IT anstelle Int, Int gibt es als Datentyp nicht, den Datentyp Number und definieren, wie viele Zeichen es geben soll. Mit Number 6 legen wir z. B. fest, dass es eine sechsstellige Zahl sein soll, ohne Nachkommastellen. Weil, wenn ich nur einen Wert eingebe, ohne mit Komma eine Nachkomma-Anzahl zu definieren, habe ich immer einen ganzzahligen Wert definiert. Var Character könnten wir stehen lassen. Hier die exakte Bezeichnung wäre bei Oracle Var Character 2. Kategorie Character 2 kann auch so bleiben wie es ist. Tiny Integer müssen wir auch ersetzen, da verwenden wir ebenso Number, in dem Fall aber nur zwei oder drei, je nachdem wie viele Einheiten, ob das zwei- oder dreistellig sein soll. Ich glaube, dass zweistellig hier ausreichend sein wird. Was wir natürlich auch anpassen müssen, ist hier die Funktion. Die heißt ja bei Oracle SysDate und wird ohne das Klammernpaar verwendet. Der Datentyp Date lautet hier gleich bei Oracle. Nur ist es nicht wirklich ein Date. Hinter Date verbirgt sich eigentlich ein DateTime , d. h., hier wird eine Uhrzeit mitgespeichert. Bei Oracle gibt es keinen Datentyp, der nur ausschließlich ein Datum ohne Uhrzeit enthält. Auch anpassen müssen wir hier SmallMoney, das ersetzen wir durch Number und definieren hier z. B. 9, 4. Was bedeutet hier 9, 4? Hier haben wir jeweils einen ganzzahligen numerischen Datentyp definiert. 9, 4 bedeutet neun Stellen gesamt, vier davon Nachkommastellen. Mit anderen Worten: fünf Vorkomma-, vier Nachkommastellen. Auch Bit müssen wir durch Number ersetzen. Von den Datenbank-Managementsystemen, die wir hier verwenden, ist Oracle jenes, das die geringste Anzahl an unterschiedlichen Datentypen aufweist. Da wird sehr viel mit denselben Datentypen abgedeckt. In dem Fall reicht eine Stelle aus, und NotNull und Default 1 als Standardwert können wir eigentlich beibehalten. Somit haben wir die Datentypen angepasst, natürlich auch den Namen der Funktion, und können nun diese Tabelle erstellen. Ich führe diese Anweisung aus, und hier haben wir noch einen Fehler eingebaut. Die Fehlermeldung ist jetzt etwas irreführend. Sie sagt, dass hier eine Klammer fehlt. Der genaue Fehler ist, dass wir hier NotNull und Default bei Oracle von der Reihenfolge vertauschen müssen, damit das funktioniert. Ich lösche hier die Fehlerausgabe vor dem nächsten Durchlauf und habe nun erfolgreich diese Tabelle erstellt. Jetzt können wir ebenso hier einen Datensatz einfügen. Ich muss nur das Datumsformat noch anpassen für Oracle. Der 1.9.2011, will ich hier auch verwenden und ich füge diesen Datensatz ein. Letztendlich kontrollieren wir diesen Datensatz und wir sehen: Auch hier hat es funktioniert. Abschließend wenden wir uns noch MySQL zu. Hier haben wir nicht allzuviel zu ändern, weil die Bezeichnung der Datentypen hier sehr ähnlich ist. Integer können wir lassen, Var Character, Character ebenso, Tiny Integer ebenso, Date auch. Was wir hier leider entfernen müssen, ist der Standardwert, denn es gibt momentan noch eine Einschränkung bei MySQL: Wir können nur Default-Werte definieren, so wie hier unten z. B., die einen konstanten Wert haben. Ausdrücke, die eine Funktion enthalten, sind nicht zulässig, d. h., wir können hier nicht einfach hergehen und die Pendantfunktion Now verwenden. Das ist leider nicht möglich. Deshalb muss ich das jetzt entfernen. SmallMoney ist natürlich auch ein Datentyp, den es hier nicht gibt. Ich nehme hier Decimal. Decimal ist dasselbe wie bei Oracle Numeric, und ich definiere hier auch neun Stellen gesamt, fünf Vorkomma- und vier Nachkommastellen. Aktuell kann ich hier z. B. über Bool abbilden. Die Reihenfolge müsste ich hier auch wieder tauschen können. Hinweis zu Bool: Bool ist eigentlich ein synonymer Datentyp. Dahinter verbirgt sich genauer genommen ebenso ein Tiny Integer mit der Länge 1. Und zwar wird er auch etwas anders interpretiert, als beim Microsoft SQL Server, weil Bool bedeutet falsch Null und jede andere Zahl, jeder andere Wert wahr. Ich verwende also hier 1 für wahr. Erzeugen wir nun auch hier diese Tabelle. Wir sehen, es war erfolgreich, d. h., wir können jetzt hier gleich diesen Datensatz auch einfügen, auch das hat funktioniert, und zur Kontrolle diesen Datensatz anzeigen. Sie haben also in diesem Video gesehen, wie Sie mit der CreateTable-Anweisung eine Tabelle erzeugen. Sie definieren den Namen für die Tabelle. Und für jede Spalte, die Sie verwenden wollen, einen Namen und einen entsprechenden Datentyp. Mit NotNull können Sie festlegen, dass für diese Spalte Zwangseingabe von Werten besteht. Einen Standardwert können Sie über den Zusatz Default definieren. Die Unterschiede bei den Datenbank-Managementsystemen beschränken sich auf dieser Ebene auf die unterschiedlichen Datentypen, in erster Linie, und Funktionsnamen.

SQL Grundkurs 1: Die Sprache erlernen

Arbeiten Sie sich in die Grundlagen der Datenbanksprache SQL am Beispiel von Microsoft SQL Server, Oracle und MySQL ein und lassen Sie sich die praktische Nutzung erklären.

14 Std. 40 min (112 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!