Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créer une base de données à partir d'un script dans MySQL

Pour créer une base de données à partir d'un script dans MySQL :

  1. Ouvrir un onglet Requête dans MySQL Workbench
  2. Exécutez une CREATE DATABASE ou CREATE SCHEMA déclaration pour créer la base de données (exemple ci-dessous)

Cela créera une nouvelle base de données.

Le script peut être aussi simple que CREATE DATABASE myDatabase; mais cela créera une base de données vide. Il ne créera aucune table ni aucun autre objet de base de données. Pour les créer, vous devez inclure CREATE TABLE et d'autres déclarations dans votre script.

Exemples de scripts

Vous trouverez ci-dessous des exemples de scripts qui créent une base de données.

Créer une base de données vierge

L'instruction suivante crée une base de données vierge appelée "Music". Aucune table n'est créée.

CREATE DATABASE Music;

L'instruction suivante fait exactement la même chose (CREATE SCHEMA est un synonyme de CREATE DATABASE ). Vous pouvez choisir celui que vous préférez utiliser.

CREATE SCHEMA Music;

Mais PAS s'il existe déjà…

Ajout de IF NOT EXISTS ne créera la base de données que si elle n'existe pas déjà.

CREATE DATABASE IF NOT EXISTS Music;

Ou DÉPOSEZ-le s'il existe déjà …

Commençant par DROP DATABASE IF EXISTS; supprimera la base de données si elle existe déjà. Puis le CREATE DATABASE peut aller de l'avant et créer la nouvelle base de données comme spécifié.

DROP DATABASE IF EXISTS Music;
CREATE DATABASE Music;

Base de données simple avec une table

Le script suivant crée une base de données (si elle n'existe pas déjà), puis crée une table à deux colonnes. Il définit les types de données des colonnes et définit la colonne ActorId comme clé primaire.

CREATE DATABASE Movies;
USE Movies ;

CREATE TABLE Actors (
 ActorId INT NOT NULL AUTO_INCREMENT,
 ActorName VARCHAR(255) NOT NULL,
 PRIMARY KEY (ActorId));

Base de données avec 3 tables

Le script suivant a été généré à partir d'un diagramme à l'aide de MySQL Workbench et est plus complet que l'exemple ci-dessus.

Celui-ci supprime toute base de données existante de ce nom, puis crée la base de données, crée les tables, les colonnes et leurs types de données. Il établit également une relation entre les tables à l'aide de contraintes de clé primaire et de clé étrangère.

De plus, en haut du script, il y a un tas de SET instructions qui désactivent les vérifications de clés uniques et étrangères. Ceux-ci sont ensuite réactivés en bas, après l'exécution du script.

Cette technique est généralement utilisée lors de l'insertion de données dans des tables avec des relations. Sans cela, vous pourriez rencontrer des erreurs triviales simplement parce que toutes les données n'ont pas encore été insérées (par exemple, si vous remplissez un champ de clé étrangère avant que le champ de clé primaire associé ait été rempli).

-- 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;