sql >> Base de Datos >  >> RDS >> Mysql

Cómo crear una base de datos a partir de un script en MySQL

Para crear una base de datos a partir de un script en MySQL:

  1. Abrir una pestaña Consulta en MySQL Workbench
  2. Ejecute un CREATE DATABASE o CREATE SCHEMA instrucción para crear la base de datos (ejemplo a continuación)

Esto creará una nueva base de datos.

El script puede ser tan simple como CREATE DATABASE myDatabase; pero esto creará una base de datos en blanco. No creará ninguna tabla u otros objetos de base de datos. Para crearlos, debe incluir CREATE TABLE y otras declaraciones en su script.

Guiones de muestra

A continuación se muestran ejemplos de secuencias de comandos que crean una base de datos.

Crear una base de datos en blanco

La siguiente declaración crea una base de datos en blanco llamada "Música". No se crean tablas.

CREATE DATABASE Music;

La siguiente instrucción hace exactamente lo mismo (CREATE SCHEMA es un sinónimo de CREATE DATABASE ). Puedes elegir cuál prefieres usar.

CREATE SCHEMA Music;

Pero NO si ya existe...

Agregando IF NOT EXISTS solo creará la base de datos si aún no existe.

CREATE DATABASE IF NOT EXISTS Music;

O ELIMINARLO si ya existe...

Comenzando con DROP DATABASE IF EXISTS; eliminará la base de datos si ya existe. Luego el CREATE DATABASE declaración puede seguir adelante y crear la nueva base de datos como se especifica.

DROP DATABASE IF EXISTS Music;
CREATE DATABASE Music;

Base de datos simple con una tabla

El siguiente script crea una base de datos (si aún no existe), luego crea una tabla con dos columnas. Establece los tipos de datos de las columnas y establece la columna ActorId como clave principal.

CREATE DATABASE Movies;
USE Movies ;

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

Base de datos con 3 tablas

El siguiente script se generó a partir de un diagrama con MySQL Workbench y es más completo que el ejemplo anterior.

Este elimina cualquier base de datos existente con este nombre, luego crea la base de datos, crea las tablas, columnas y sus tipos de datos. También establece una relación entre las tablas utilizando restricciones de clave principal y clave externa.

Además, en la parte superior de la secuencia de comandos, hay un montón de SET sentencias que deshabilitan las comprobaciones de claves únicas y foráneas. Estos se vuelven a habilitar nuevamente en la parte inferior, después de que se haya ejecutado el script.

Esta técnica se usa normalmente cuando se insertan datos en tablas con relaciones. Sin hacer esto, podría encontrarse con errores triviales simplemente porque aún no se han insertado todos los datos (por ejemplo, si completa un campo de clave externa antes de que se complete el campo de clave principal asociado).

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