Mysql
 sql >> Database >  >> RDS >> Mysql

Come creare un database da uno script in MySQL

Per creare un database da uno script in MySQL:

  1. Apri una scheda Query in MySQL Workbench
  2. Esegui un CREATE DATABASE o CREATE SCHEMA istruzione per creare il database (esempio sotto)

Questo creerà un nuovo database.

Lo script può essere semplice come CREATE DATABASE myDatabase; ma questo creerà un database vuoto. Non creerà tabelle o altri oggetti di database. Per crearli, devi includere CREATE TABLE e altre affermazioni nel tuo script.

Script di esempio

Di seguito sono riportati esempi di script che creano un database.

Crea un database vuoto

La seguente istruzione crea un database vuoto chiamato "Music". Nessuna tabella creata.

CREATE DATABASE Music;

La seguente istruzione fa esattamente la stessa cosa (CREATE SCHEMA è sinonimo di CREATE DATABASE ). Puoi scegliere quale preferisci utilizzare.

CREATE SCHEMA Music;

Ma NON se esiste già...

Aggiunta di IF NOT EXISTS creerà il database solo se non esiste già.

CREATE DATABASE IF NOT EXISTS Music;

Oppure LASCIAlo se esiste già...

A partire da DROP DATABASE IF EXISTS; eliminerà il database se esiste già. Quindi il CREATE DATABASE istruzione può andare avanti e creare il nuovo database come specificato.

DROP DATABASE IF EXISTS Music;
CREATE DATABASE Music;

Banca dati semplice con una tabella

Lo script seguente crea un database (se non esiste già), quindi crea una tabella con due colonne. Imposta i tipi di dati delle colonne e la colonna ActorId come chiave primaria.

CREATE DATABASE Movies;
USE Movies ;

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

Database con 3 tabelle

Lo script seguente è stato generato da un diagramma utilizzando MySQL Workbench ed è più completo dell'esempio precedente.

Questo elimina qualsiasi database esistente con questo nome, quindi crea il database, crea le tabelle, le colonne e i relativi tipi di dati. Inoltre, stabilisce una relazione tra le tabelle utilizzando i vincoli di chiave primaria e chiave esterna.

Inoltre, nella parte superiore dello script, c'è un sacco di SET istruzioni che disabilitano i controlli di chiavi univoche ed esterne. Questi vengono quindi riabilitati nuovamente in fondo, dopo che lo script è stato eseguito.

Questa tecnica viene in genere utilizzata per l'inserimento di dati in tabelle con relazioni. Senza farlo, potresti incorrere in errori banali semplicemente perché tutti i dati non sono stati ancora inseriti (ad esempio, se si compila un campo di chiave esterna prima che il campo di chiave primaria associato sia stato popolato).

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