creación de objetos en mysql
DESCRIPTION
Presentación que muestra la forma de crear tablas, vistas y otros objetos en bases de datos MySQLTRANSCRIPT
![Page 1: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/1.jpg)
CREACIÓN DE OBJETOS EN
MYSQL
CREACIÓN DE OBJETOS EN
MYSQLOPERACIONES CON BASES DE DATOS
OFIMÁTICAS Y CORPORATIVASOPERACIONES CON BASES DE DATOS
OFIMÁTICAS Y CORPORATIVAS
![Page 2: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/2.jpg)
Creación de una tabla
• Se usa la orden CREATE TABLE
CREATE TABLE NombreTabla
(Columna1 Tipo_dato [NOT NULL],
Columna2 Tipo_dato [NOT NULL],
..........................);
![Page 3: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/3.jpg)
Tipos de datos
• Tipo_dato indica el tipo de dato de cada columna. Los más utilizados son los siguientes:
INTEGER: Número
DECIMAL(N,M): Número de N cifras con M decimales
DATE: Fecha (AAAA-MM-DD)
TIME: Hora (HH:MM:SS)
![Page 4: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/4.jpg)
Tipos de datos
VARCHAR(N): Cadena variable de longitud N (máximo 255)
TEXT: Cadena variable de longitud tan grande como se quiera.
Hay más tipos de datos: TINYINT, SAMLLINT, FLOAT, DOUBLE, TIMESTAMP, BLOB, etc.
![Page 5: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/5.jpg)
creación de una tabla
CREATE TABLE alumnos(
numero_matricula INTEGER NOT NULL,
nombre VARCHAR(15) NOT NULL,
fecha_nacimiento DATE,
direccion VARCHAR(30),
localidad VARCHAR(15));
![Page 6: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/6.jpg)
creación de una tabla
• INSERT INTO ALUMNOS VALUES(1234,‘Alejandro Pérez’,‘1990/06/05’,’C/ Junterones, 9’,‘Lorca’);
• INSERT INTO ALUMNOS(numero_matricula, direccion) VALUES(4321,’C/ Gran Vía, 4’);
• Error en la última sentencia. ¿Por qué?
![Page 7: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/7.jpg)
restricciones. primary key
• PRIMARY KEY para añadir claves primarias.
CREATE TABLE provincias(
codigo INTEGER PRIMARY KEY,
nombre VARCHAR(20) NOT NULL);
![Page 8: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/8.jpg)
Restricciones. primary key
INSERT INTO provincias VALUES(1,‘Lorca’);
INSERT INTO provincas VALUES(1,‘Alhama de Murcia’) => ERROR
![Page 9: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/9.jpg)
restricciones.primary key
CREATE TABLE
(calle VARCHAR(20) NOT NULL,
numero INT NOT NULL,
piso INT NOT NULL,
puerta INT NOT NULL,
codigo_postal INT,
PRIMARY KEY(calle, numero,piso,puerta));
![Page 10: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/10.jpg)
valores por defecto.default
• Para asignar valores por defecto a las columnas se usa DEFAULT.
CREATE TABLE ciudades
(nombre VARCHAR(20),
habitantes INTEGER,
pais VARCHAR(20) DEFAULT ‘España’);
![Page 11: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/11.jpg)
valores por defecto.default
INSERT INTO ciudades(nombre,habitantes) VALUES(‘MURCIA’,300000);
INSERT INTO ciudades(nombre,habitantes) VALUES(‘ALICANTE’,250000);
SELECT * FROM ciudades;
![Page 12: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/12.jpg)
AUTO_INCREMENT• Se utiliza para columnas con
valores enteros y definidas como claves primarias
• Sólo puede haber una columna AUTO_INCREMENT por cada tabla.
• Cuando se inserta un valor NULL o 0 en una columna AUTO_INCREMENT, la columna tomará el valor mayor actual para la columna +1.
![Page 13: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/13.jpg)
AUTO_INCREMENT
CREATE TABLE animales(
id INT NOT NULL AUTO_INCREMENT,
nombre VARCHAR(30) NOT NULL,
PRIMARY KEY(id));
![Page 14: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/14.jpg)
AUTO_INCREMENT
• INSERT INTO animales(nombre) VALUES(‘PERRO’);
• INSERT INTO animales(nombre) VALUES(‘GATO’);
• SELECT * FROM animales;
![Page 15: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/15.jpg)
CLAVES AJENAS
• Una clave ajena está formada por una varias columnas que están asociadas a una clave primaria de otra o de la misma tabla.
• Se pueden definir tantas como sea preciso.
• FOREIGN KEY(campo1) REFERENCES nombre_tabla(campo2)
![Page 16: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/16.jpg)
CLAVES AJENAS
CREATE TABLE personas(
nombre VARCHAR(20),
edad INTEGER NOT NULL,
provincia INTEGER,
PRIMARY KEY(nombre),
FOREIGN KEY(provincia) REFERENCES provincias(codigo));
![Page 17: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/17.jpg)
claves ajenas
• Las reglas que se pueden utilizar al definir claves ajenas son las siguientes.
• ON DELETE CASCADE: cuando se borran filas con claves primarias, también se borrarán las filas con las claves ajenas que las referencian.
• ON UPDATE CASCADE: cuando se actualicen filas con claves primarias, también se actualizarán las filas con las claves ajenas que las referencian.
![Page 18: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/18.jpg)
claves ajenas
• ON DELETE/UPDATE SET NULL: elimina o actualiza la clave primaria y automáticamente asigna valor nulo a la/s columna/s que formen parte de la clave ajena.
• ON DELETE/UPDATE NO ACTION: Valor por defecto. No se puede eliminar o modificar una clave primaria si es referenciada por una clave ajena.
![Page 19: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/19.jpg)
Claves ajenas
• ZONAS(cod_zona, nombre);
• PERSONAS(dni, nombre, dirección, población, codzona);
CREATE TABLE zonas(
cod_zona INT PRIMARY KEY,
nombre VARCHAR(15)) ENGINE=INNODB;
![Page 20: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/20.jpg)
Claves ajenas
CREATE TABLE peronas(
dni VARCHAR(10) PRIMARY KEY,
nombre VARCHAR(30),
codzona INTEGER NOT NULL,
FOREIGN KEY(codzona) REFERENCES zonas(cod_zona) ON DELETE CASCADE) ENGINE=INNODB;
![Page 21: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/21.jpg)
Restricción unique
• Evita valores repetidos en la misma columna.
• Admite valores NULL.
CREATE TABLE unica(
dni VARCHAR(10) PRIMARY KEY,
nombre VARCHAR(30) UNIQUE);
![Page 22: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/22.jpg)
Restricción unique
• Es similar a PRIMARY KEY
• Son posibles varias columnas UNIQUE definidas en una tabla
INSERT INTO unica VALUES(‘111’,‘Pepa’);
INSERT INTO unica VALUES(‘112’,‘Pepa’); => ERROR
![Page 23: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/23.jpg)
Verificación de restricciones. check
• Con una restricción de verificación se puede expresar una condición que ha de cumplirse para todas y cada una de las filas de la tabla.
• CHECK actúa como una cláusula WHERE
• Puede controlar los valores que se colocan en una columna.
![Page 24: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/24.jpg)
Verificación de restricciones. check
• Actualmente la cláusula CHECK no hace nada
• MySQL la proporciona por compatibilidad, para simplificar la portabilidad de código desde otros servidores SQL y para arrancar aplicaciones que crean tablas con referencias
![Page 25: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/25.jpg)
Verificación de restricciones. Ejemplo
• DNI no puede ser nulo
• La clave primaria es el DNI
• La edad ha de estar comprendida entre 5 y 20 años
• El nombre ha de estar en mayúsculas
• El curso sólo puede almacenar 1, 2 o 3 y no puede ser nulo.
![Page 26: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/26.jpg)
Verificación de restricciones. EjemploCREATE TABLE condiciones(
dni VARCHAR(10),
nombre VARCHAR(30),
edad INTEGER,
curso INTEGER NOT NULL,
CONSTRAINT clave_p PRIMARY KEY(dni),
CONSTRAINT comp_edad CHECK(edad BETWEEN 5 AND 20),
CONSTRAINT nombre_mayus CHECK(nombre=upper(nombre)),
CONSTRAINT comp_curso CHECK(curso IN(1,2,3)));
![Page 27: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/27.jpg)
Verificación de restricciones. Ejemplo
CREATE TABLE condiciones(
dni VARCHAR(10) NOT NULL PRIMARY KEY,
nombre VARCHAR(30) CHECK (nombre=UPPER(nombre)),
edad INTEGER CHECK(edad BETWEEN 5 AND 20),
curso INTEGER NOT NULL CHECK(curso IN(1,2,3)));
![Page 28: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/28.jpg)
Creación de una tabla con datos recuperados DE UNA CONSULTA
• Se lleva a cabo esta acción colacando AS al final de la orden CREATE TABLE
• CREATE TABLE NombreTabla(
• .......
• .......) AS consulta;
![Page 29: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/29.jpg)
Creación de una tabla con datos recuperados DE UNA CONSULTA
• No es necesario especificar tipos ni tamaño de las columnas, ya que vienen determinados por los tipos y tamaños de las recuperadas en la consulta.
• CREATE TABLE emple30 AS SELECT * FROM emple WHERE dept_no=30;
![Page 30: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/30.jpg)
MODIFICACIÓN DE TABLAS
• Con la orden ALTER TABLE.
• ADD para añadir columnas
• DROP para eliminar columnas
• MODIFY para modificar una columna
• ADD PRIMARY KEY para añadir una clave primaria
![Page 31: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/31.jpg)
Modificación de tablas• Añadimos a la tabla ejemplo2 dos
columnas: sexo e importe
• ALTER TABLE ejemplo2 ADD(sexo VARCHAR(1) NOT NULL, importe INTEGER);
• Modificamos las columnas sexo e importe
• ALTER TABLE ejemplo2 MODIFY sexo VARCHAR(10), MODIFY importe INTEGER;
![Page 32: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/32.jpg)
MODIFICACIÓN DE TABLAS
• Se añade a la columna SEXO una restricción para que sólo pueda almacenar los valores “Hombre”, “Mujer”.
• ALTER TABLE ejemplo2 ADD CHECK(sexo IN(‘Hombre’,‘Mujer’));
![Page 33: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/33.jpg)
MODIFICACIÓN DE TABLAS
• Eliminamos las columnas SEXO e importe de la tabla EJEMPLO2.
• ALTER TABLE ejemplo2 DROP COLUMN sexo, DROP COLUMN importe;
• Añadir restricción de clave primaria.
• ALTER TABLE ejemplo2 ADD PRIMARY KEY(dni);
![Page 34: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/34.jpg)
MODIFICACIÓN DE TABLAS
• Se borra la restricción de clave primaria
• ALTER TABLE ejemplo2 DROP PRIMARY KEY;
• Se añade restricción de clave ajena
• ALTER TABLE ejemplo2 ADD FOREIGN KEY(codig) REFERENCES provincias(codigo);
![Page 35: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/35.jpg)
MODIFICACIÓN DE TABLAS
• Cambiamos el nombre de la tabla
• ALTER TABLE ejemplo2 RENAME tablanueva;
• Se borra la restricción de clave ajena
• ALTER TABLE ejemplo2 DROP FOREIGN KEY clave_ajena;
![Page 36: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/36.jpg)
BORRADO DE TABLAS
• La orden DROP TABLE suprime una o varias tablas de la base de datos.
• DROP TABLE tabla1, tabla2.
![Page 37: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/37.jpg)
MANIPULACIÓN DE VIStas
• Una vista es una tabla lógica que permite acceder a la información de una o varias tablas.
• No contienen información por sí mismas, sino que su información está basada en la que contienen otras tablas.
• Si se suprime una tabla, la vista asociada se invalida.
![Page 38: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/38.jpg)
MANIPULACIÓN DE VISTAS
CREATE VIEW NombreVista(columna1, columna2, ....)
AS consulta;
• columna1, columna2 ... son los nombres de las columnas. Si no se ponen, se asumen los nombres de columna devueltos por la consulta.
![Page 39: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/39.jpg)
MANIPULACIÓN DE VISTAS
CREATE VIEW dep30
AS SELECT apellido,oficio,salario
FROM emple WHERE dept_no=30;
• La vista creada se puede usar como si se tratase de una tabla
• Se puede consultar, se pueden borrar filas, actualizar filas siempre y cuando las columnas a actualizar no sean expresiones.
![Page 40: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/40.jpg)
MANIPULACIÓN DE VISTAS
• Se pueden insertar registros en una vista siempre y cuando todas las columnas obligatorias de la tabla asociada estén presentes en la vista.
• La siguiente inserción da error, ¿por qué?
INSERT INTO dept30 VALUES(‘CASTILLO’,‘EMPLEADO’,1300);
![Page 41: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/41.jpg)
MANIPULACIÓN DE VISTAS
• Modificación en la vista del salario de los empleados (también se actualizan en la tabla emple)
• UPDATE dept30 SET sal=sal+1000;
• Borramos todos los registros de la vista (también se borran en la tabla EMPLE)
• DELTE FROM dept30;
![Page 42: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/42.jpg)
CREACIÓN DE VISTAS COMPLEJAS
• Se definen sobre más de una tablaCREATE VIEW emp_dept(emp_no,apellido,dept_no,dnombre)
AS SELECT emp_no,apellido,emple.dept_no,dnombre
FROM emple,depart
WHERE emple.dept_no=depart.dept_no;
![Page 43: CreacióN De Objetos En MySQL](https://reader034.vdocumento.com/reader034/viewer/2022042607/557b6109d8b42a90078b5543/html5/thumbnails/43.jpg)
CREACIÓN DE VISTAS COMPLEJAS
• Creamos una vista con el número de empleados de cada departamento.
CREATE VIEW Contador AS
SELECT dept_no, count(*)
FROM emple
GROUP BY dept_no;