Sunteți pe pagina 1din 4

RESTRICCIONES 

NOT NULL 

UNIQUE 

PRIMARY KEY 

FOREIGN KEY 

CHECK 

DEFAULT 

ENUM 

///usando check 

CREATE TABLE parts ( 

    part_no VARCHAR(18) PRIMARY KEY, 

    description VARCHAR(40), 

    cost DECIMAL(10,2 ) NOT NULL CHECK (cost >= 0), 

    price DECIMAL(10,2) NOT NULL CHECK (price >= 0), 

    CONSTRAINT parts_chk_price_gt_cost  

        CHECK(price >= cost) 

); 

// para ver como se crea la tabla 

show create table parts; 

// probando la restriccion 

INSERT INTO parts(part_no, description,cost,price)  

VALUES('A‐001','Cooler',0,‐100); 

// otra prueba 

INSERT INTO parts(part_no, description,cost,price)  

VALUES('A‐001','Cooler',200,100); 

 
//fecha con valor por default 

fecha_dos TIMESTAMP DEFAULT CURRENT_TIMESTAMP 

//agregar un atributo 

ALTER TABLE `mitabla` ADD `fecha` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ; 

//UNIQUE 

CREATE TABLE suppliers ( 

    supplier_id INT AUTO_INCREMENT, 

    name VARCHAR(255) NOT NULL, 

    phone VARCHAR(15) NOT NULL UNIQUE, 

    address VARCHAR(255) NOT NULL, 

    PRIMARY KEY (supplier_id), 

    CONSTRAINT uc_name_address UNIQUE (name , address) 

); 

//AGREGANDO CONSTRAINT UNIQUE 

ALTER TABLE suppliers 

ADD CONSTRAINT uc_name_address  

UNIQUE (name,address); 

//USANDO ENUM 

//POR DEFECTO SE GUARDA EL PRIMER VALOR DE LA LISTA ENUM 

create table postulantes( 

  numero int unsigned auto_increment, 

  documento char(8), 

  nombre varchar(30), 

  sexo char(1), 

  estudios enum('ninguno','primario','secundario', 'terciario','universitario') not null, 

  primary key(numero) 
 ); 

//USANDO SET 

// CUANDO QUEREMOS ALMACENAR VARIAS OPCIONES 

Tampoco importa si se repite algún valor, cada elemento repetido, se ignora y se guarda una vez y 
en el orden que ha sido definido: 

Si ingresamos un valor que no está en la lista "set", se ignora y se almacena una cadena vacía: 

 create table postulantes( 

  numero int unsigned auto_increment, 

  documento char(8), 

  nombre varchar(30), 

  idioma set('ingles','italiano','portuges'), 

  primary key(numero) 

 ); 

On delete on update 

 
En este primer ejercicio no se van a aplicar las opciones CASCADE para visualizar el error que
nos devolverá cuando queramos manipular la información.
CREATE TABLE IF NOT EXISTS `CASCADE`.`CLIENTES` ( 
`dni` INT NOT NULL COMMENT '', 
`nombre` VARCHAR(45) NOT NULL COMMENT '', 
PRIMARY KEY (`dni`) COMMENT '') 
ENGINE = InnoDB; 
  
-- ----------------------------------------------------- 
-- Table `CASCADE`.`CUENTAS` 
-- ----------------------------------------------------- 
DROP TABLE IF EXISTS `CASCADE`.`CUENTAS` ; 
  
CREATE TABLE IF NOT EXISTS `CASCADE`.`CUENTAS` ( 
`id_cuenta` INT NOT NULL COMMENT '', 
`saldo` FLOAT NOT NULL COMMENT '', 
`CLIENTES_dni` INT NOT NULL COMMENT '', 
PRIMARY KEY (`id_cuenta`) COMMENT '', 
INDEX `fk_CUENTAS_CLIENTES1_idx` (`CLIENTES_dni` ASC) COMMENT '', 
CONSTRAINT `fk_CUENTAS_CLIENTES1` 
FOREIGN KEY (`CLIENTES_dni`) 
REFERENCES `CASCADE`.`CLIENTES` (`dni`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION) 
ENGINE = InnoDB; 
  
-- ----------------------------------------------------- 
-- Table `CASCADE`.`COMPRAS` 
-- ----------------------------------------------------- 
DROP TABLE IF EXISTS `CASCADE`.`COMPRAS` ; 
  
CREATE TABLE IF NOT EXISTS `CASCADE`.`COMPRAS` ( 
`idcompra` INT NOT NULL COMMENT '', 
`articulo` VARCHAR(45) NOT NULL COMMENT '', 
`precio` FLOAT NOT NULL COMMENT '', 
`CUENTAS_id_cuenta` INT NOT NULL COMMENT '', 
PRIMARY KEY (`idcompra`) COMMENT '', 
INDEX `fk_COMPRAS_CUENTAS_idx` (`CUENTAS_id_cuenta` ASC) COMMENT '', 
CONSTRAINT `fk_COMPRAS_CUENTAS` 
FOREIGN KEY (`CUENTAS_id_cuenta`) 
REFERENCES `CASCADE`.`CUENTAS` (`id_cuenta`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION) 
ENGINE = InnoDB; 
 

En cuentas 
REFERENCES `CASCADE`.`CLIENTES` (`dni`) 
ON DELETE CASCADE 
ON UPDATE CASCADE) 
 

En compras 
REFERENCES `CASCADE`.`CUENTAS` (`id_cuenta`) 
ON DELETE CASCADE 
ON UPDATE CASCADE) 
 

Ahora si elimnamos un cliente se eliminan sus cuentas y sus compras….. 

S-ar putea să vă placă și