So erstellen Sie eine Datenbank aus einem Skript in MySQL:
- Öffnen Sie eine Abfrage-Registerkarte in MySQL Workbench
- Führen Sie
CREATE DATABASE
aus oderCREATE SCHEMA
-Anweisung zum Erstellen der Datenbank (Beispiel unten)
Dadurch wird eine neue Datenbank erstellt.
Das Skript kann so einfach sein wie CREATE DATABASE myDatabase;
aber dies wird eine leere Datenbank erstellen. Es werden keine Tabellen oder andere Datenbankobjekte erstellt. Um diese zu erstellen, müssen Sie CREATE TABLE
einfügen und andere Anweisungen in Ihrem Skript.
Beispielskripts
Unten finden Sie Beispiele für Skripts, die eine Datenbank erstellen.
Leere Datenbank erstellen
Die folgende Anweisung erstellt eine leere Datenbank namens „Music“. Es werden keine Tabellen erstellt.
CREATE DATABASE Music;
Die folgende Anweisung macht genau dasselbe (CREATE SCHEMA
ist ein Synonym für CREATE DATABASE
). Sie können wählen, welche Sie bevorzugen.
CREATE SCHEMA Music;
Aber NICHT, wenn es bereits existiert…
Hinzufügen von IF NOT EXISTS
erstellt die Datenbank nur, wenn sie noch nicht vorhanden ist.
CREATE DATABASE IF NOT EXISTS Music;
Oder LASSEN Sie es, wenn es bereits vorhanden ist...
Beginnend mit DROP DATABASE IF EXISTS;
löscht die Datenbank, falls sie bereits existiert. Dann CREATE DATABASE
-Anweisung fortfahren und die neue Datenbank wie angegeben erstellen.
DROP DATABASE IF EXISTS Music; CREATE DATABASE Music;
Einfache Datenbank mit einer Tabelle
Das folgende Skript erstellt eine Datenbank (falls noch nicht vorhanden) und erstellt dann eine Tabelle mit zwei Spalten. Es legt die Datentypen der Spalten und die ActorId-Spalte als Primärschlüssel fest.
CREATE DATABASE Movies; USE Movies ; CREATE TABLE Actors ( ActorId INT NOT NULL AUTO_INCREMENT, ActorName VARCHAR(255) NOT NULL, PRIMARY KEY (ActorId));
Datenbank mit 3 Tabellen
Das folgende Skript wurde mithilfe von MySQL Workbench aus einem Diagramm generiert und ist vollständiger als das obige Beispiel.
Dieser löscht jede vorhandene Datenbank dieses Namens, erstellt dann die Datenbank, erstellt die Tabellen, Spalten und ihre Datentypen. Es richtet auch eine Beziehung zwischen den Tabellen unter Verwendung von Primärschlüssel- und Fremdschlüsseleinschränkungen ein.
Außerdem gibt es oben im Skript eine Reihe von SET
Anweisungen, die Prüfungen auf eindeutige Schlüssel und Fremdschlüssel deaktivieren. Diese werden dann unten wieder aktiviert, nachdem das Skript ausgeführt wurde.
Diese Technik wird normalerweise beim Einfügen von Daten in Tabellen mit Beziehungen verwendet. Andernfalls könnten Sie auf triviale Fehler stoßen, nur weil noch nicht alle Daten eingefügt wurden (z. B. wenn ein Fremdschlüsselfeld ausgefüllt wird, bevor das zugehörige Primärschlüsselfeld ausgefüllt wurde).
-- MySQL Script generated by MySQL Workbench -- Mon May 30 11:25:32 2016 -- Model: New Model Version: 1.0 -- MySQL Workbench Forward Engineering SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; -- ----------------------------------------------------- -- Schema Music -- ----------------------------------------------------- DROP SCHEMA IF EXISTS `Music` ; -- ----------------------------------------------------- -- Schema Music -- ----------------------------------------------------- CREATE SCHEMA IF NOT EXISTS `Music` DEFAULT CHARACTER SET utf8 ; USE `Music` ; -- ----------------------------------------------------- -- Table `Music`.`Artists` -- ----------------------------------------------------- DROP TABLE IF EXISTS `Music`.`Artists` ; CREATE TABLE IF NOT EXISTS `Music`.`Artists` ( `ArtistId` INT NOT NULL AUTO_INCREMENT, `ArtistName` VARCHAR(255) NOT NULL, PRIMARY KEY (`ArtistId`)); -- ----------------------------------------------------- -- Table `Music`.`Genres` -- ----------------------------------------------------- DROP TABLE IF EXISTS `Music`.`Genres` ; CREATE TABLE IF NOT EXISTS `Music`.`Genres` ( `GenreId` INT NOT NULL AUTO_INCREMENT, `Genre` VARCHAR(255) NOT NULL, PRIMARY KEY (`GenreId`)); -- ----------------------------------------------------- -- Table `Music`.`Albums` -- ----------------------------------------------------- DROP TABLE IF EXISTS `Music`.`Albums` ; CREATE TABLE IF NOT EXISTS `Music`.`Albums` ( `AlbumId` INT NOT NULL AUTO_INCREMENT, `AlbumName` VARCHAR(255) NOT NULL, `DateReleased` DATETIME NOT NULL, `ArtistId` INT NOT NULL, `GenreId` INT NOT NULL, PRIMARY KEY (`AlbumId`), INDEX `ArtistId_idx` (`ArtistId` ASC), INDEX `GenreId_idx` (`GenreId` ASC), CONSTRAINT `ArtistId` FOREIGN KEY (`ArtistId`) REFERENCES `Music`.`Artists` (`ArtistId`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `GenreId` FOREIGN KEY (`GenreId`) REFERENCES `Music`.`Genres` (`GenreId`) ON DELETE RESTRICT ON UPDATE RESTRICT); SET [email protected]_SQL_MODE; SET [email protected]_FOREIGN_KEY_CHECKS; SET [email protected]_UNIQUE_CHECKS;