MySQLのスクリプトからデータベースを作成するには:
- MySQLWorkbenchで[クエリ]タブを開きます
-
CREATE DATABASE
を実行します またはCREATE SCHEMA
データベースを作成するステートメント(以下の例)
これにより、新しいデータベースが作成されます。
スクリプトは、CREATE DATABASE myDatabase;
のように単純にすることができます。 ただし、これにより空のデータベースが作成されます。テーブルやその他のデータベースオブジェクトは作成されません。それらを作成するには、CREATE TABLE
を含める必要があります およびスクリプト内の他のステートメント。
サンプルスクリプト
以下は、データベースを作成するスクリプトの例です。
空のデータベースを作成する
次のステートメントは、「音楽」と呼ばれる空のデータベースを作成します。テーブルは作成されません。
CREATE DATABASE Music;
次のステートメントはまったく同じことを行います(CREATE SCHEMA
CREATE DATABASE
の同義語です )。どちらを使用するかを選択できます。
CREATE SCHEMA Music;
しかし、それがすでに存在する場合はそうではありません…
IF NOT EXISTS
を追加する データベースがまだ存在しない場合にのみデータベースを作成します。
CREATE DATABASE IF NOT EXISTS Music;
または、すでに存在する場合は削除します…
DROP DATABASE IF EXISTS;
で始まる データベースがすでに存在する場合は、データベースを削除します。次に、CREATE DATABASE
ステートメントは先に進み、指定されたとおりに新しいデータベースを作成できます。
DROP DATABASE IF EXISTS Music; CREATE DATABASE Music;
テーブルを使用した単純なデータベース
次のスクリプトは、データベースを作成し(データベースがまだ存在しない場合)、2つの列を持つテーブルを作成します。列のデータ型を設定し、ActorId列を主キーとして設定します。
CREATE DATABASE Movies; USE Movies ; CREATE TABLE Actors ( ActorId INT NOT NULL AUTO_INCREMENT, ActorName VARCHAR(255) NOT NULL, PRIMARY KEY (ActorId));
3つのテーブルを持つデータベース
次のスクリプトは、MySQL Workbenchを使用して図から生成されたものであり、上記の例よりも完全です。
これは、この名前の既存のデータベースをすべて削除してから、データベースを作成し、テーブル、列、およびそれらのデータ型を作成します。また、主キーと外部キーの制約を使用してテーブル間の関係を設定します。
また、スクリプトの上部には、一連のSET
があります。 一意キーおよび外部キーチェックを無効にするステートメント。スクリプトが実行された後、これらは下部で再び有効になります。
この手法は通常、関係のあるテーブルにデータを挿入するときに使用されます。これを行わないと、すべてのデータがまだ挿入されていないという理由だけで、些細なエラーが発生する可能性があります(たとえば、関連する主キーフィールドに入力する前に外部キーフィールドに入力する場合)。
-- 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;