SlideShare una empresa de Scribd logo
CREACIÓN DE OBJETOS EN MYSQL OPERACIONES CON BASES DE DATOS OFIMÁTICAS Y CORPORATIVAS
Creación de una tabla Se usa la orden CREATE TABLE CREATE TABLE NombreTabla (Columna1 Tipo_dato [NOT NULL], Columna2 Tipo_dato [NOT NULL], ..........................);
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)
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.
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));
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é?
restricciones.  primary key primary key PRIMARY KEY para añadir claves primarias. CREATE TABLE provincias( codigo INTEGER PRIMARY KEY, nombre VARCHAR(20) NOT NULL);
Restricciones.  primary key primary key INSERT INTO provincias VALUES(1,‘Lorca’); INSERT INTO provincas VALUES(1,‘Alhama de Murcia’) => ERROR
restricciones. primary key 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));
valores por defecto. default 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’);
valores por defecto. default default INSERT INTO ciudades(nombre,habitantes) VALUES(‘MURCIA’,300000); INSERT INTO ciudades(nombre,habitantes) VALUES(‘ALICANTE’,250000); SELECT * FROM ciudades;
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.
AUTO_INCREMENT CREATE TABLE animales( id INT NOT NULL AUTO_INCREMENT, nombre VARCHAR(30) NOT NULL, PRIMARY KEY(id));
AUTO_INCREMENT INSERT INTO animales(nombre) VALUES(‘PERRO’); INSERT INTO animales(nombre) VALUES(‘GATO’); SELECT * FROM animales;
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)
CLAVES AJENAS CREATE TABLE personas( nombre VARCHAR(20), edad INTEGER NOT NULL, provincia INTEGER, PRIMARY KEY(nombre), FOREIGN KEY(provincia) REFERENCES provincias(codigo));
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.
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.
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;
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;
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 );
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
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.
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
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.
Verificación de restricciones. Ejemplo CREATE 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)));
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)));
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;
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;
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
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;
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’));
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);
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);
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;
BORRADO DE TABLAS La orden DROP TABLE suprime una o varias tablas de la base de datos. DROP TABLE tabla1, tabla2.
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.
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.
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.
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);
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;
CREACIÓN DE VISTAS COMPLEJAS Se definen sobre más de una tabla CREATE 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;
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;

Más contenido relacionado

PDF
Creación de tablas y relaciones en mysql workbench
PPT
Sql presentacion
PDF
Programación MySQL-Ejercicios
PPTX
Comandos básicos para bases de datos mysql y workbench
DOCX
Ejercicio sql tienda informatica (1)
PDF
Comandos ddl y dml
PPTX
Entorno de Programacion
PPTX
UML - Casos de Uso y Diagramas de Clase
Creación de tablas y relaciones en mysql workbench
Sql presentacion
Programación MySQL-Ejercicios
Comandos básicos para bases de datos mysql y workbench
Ejercicio sql tienda informatica (1)
Comandos ddl y dml
Entorno de Programacion
UML - Casos de Uso y Diagramas de Clase

La actualidad más candente (20)

PPTX
Diseño fisico
PPTX
If then o if then else
DOCX
Pruebas de sistemas y aceptacion
PDF
Unidad 2. modelo entidad relacion
PDF
22 ejercicios base de datos
PPTX
Sql DML Lenguaje de manipulación de datos
PDF
Procedimientos almacenados en MySQL
DOC
Documentos de analisis de requerimientos
PDF
Modelo Entidad Relacion E-R
PPTX
Presentación Introducción al lenguaje HTML
PPTX
Modelo entidad relación de base de datos
PPT
El modelo relacional
PDF
8b Curso de POO en java - paso de diagrama clases a java 1
PPTX
Presentación JavaScript
PDF
Desnormalización de Base de Datos
PDF
Semana 4 Diagrama de Clases y Casos de Uso
PDF
Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uni
DOCX
Ejercicios con diagramas modelo Entidad Relacion
PPT
Sistemas de Gestión de Bases de datos
PPTX
Diagramas de caso de uso
Diseño fisico
If then o if then else
Pruebas de sistemas y aceptacion
Unidad 2. modelo entidad relacion
22 ejercicios base de datos
Sql DML Lenguaje de manipulación de datos
Procedimientos almacenados en MySQL
Documentos de analisis de requerimientos
Modelo Entidad Relacion E-R
Presentación Introducción al lenguaje HTML
Modelo entidad relación de base de datos
El modelo relacional
8b Curso de POO en java - paso de diagrama clases a java 1
Presentación JavaScript
Desnormalización de Base de Datos
Semana 4 Diagrama de Clases y Casos de Uso
Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uni
Ejercicios con diagramas modelo Entidad Relacion
Sistemas de Gestión de Bases de datos
Diagramas de caso de uso
Publicidad

Destacado (17)

PDF
Creación de tablas y relaciones en MySQL y SQL yog
PPTX
PPTX
ODP
04 Primeros pasos con my sql
PPTX
Que es ddl
PPTX
PPTX
Data definition language (ddl)
PDF
Fundamentos de DataWareHouse - FISI - UNMSM - DataWareHouse
PDF
Inteligencia de Negocios - FISI - UNMSM - DataWareHouse
PDF
Construcción de un DataWareHouse - FISI - UNMSM - DataWareHouse
PPT
Unidad 6 Lenguaje Sql
PPTX
Introducción a DataWarehouse e Inteligencia de Negocios
PPTX
Sql DDL Lenguaje de definición de datos
PPTX
Lenguajes de bases de datos
PPT
Lenguajes de bases de datos
PPT
Creación de tablas
PPT
DDL - Lenguaje de definición de datos
Creación de tablas y relaciones en MySQL y SQL yog
04 Primeros pasos con my sql
Que es ddl
Data definition language (ddl)
Fundamentos de DataWareHouse - FISI - UNMSM - DataWareHouse
Inteligencia de Negocios - FISI - UNMSM - DataWareHouse
Construcción de un DataWareHouse - FISI - UNMSM - DataWareHouse
Unidad 6 Lenguaje Sql
Introducción a DataWarehouse e Inteligencia de Negocios
Sql DDL Lenguaje de definición de datos
Lenguajes de bases de datos
Lenguajes de bases de datos
Creación de tablas
DDL - Lenguaje de definición de datos
Publicidad

Similar a CreacióN De Objetos En MySQL (20)

PPT
PPT
SQL-DDL
DOCX
1 lab-2 -tablas-y-restricciones
PPT
Sql 2010
PDF
EJERCICIO SENTENCIAS SQL_Completo.pdf
PPT
Sql basico parte_i_
PPT
Sql basico parte_i_
ODP
07 restricciones en atributos
DOC
Sql manipulacion de tabla
PDF
Sql basico parte_i_
DOCX
Command oracle
DOCX
Cuadro de sentencias con descripcion y ejemplo
PPTX
Sql básico - compendio
DOC
Trabajando con sql (parte 1)
PPTX
Tablas y tipos de datos
PPT
Actualización de bases de datos en MySQL
PDF
Guia de ejercicio sql
DOCX
Cheat_MySQL.docx
PPT
Objeto De Aprendizaje
DOCX
SENTENCIAS DE SQL SERVER
SQL-DDL
1 lab-2 -tablas-y-restricciones
Sql 2010
EJERCICIO SENTENCIAS SQL_Completo.pdf
Sql basico parte_i_
Sql basico parte_i_
07 restricciones en atributos
Sql manipulacion de tabla
Sql basico parte_i_
Command oracle
Cuadro de sentencias con descripcion y ejemplo
Sql básico - compendio
Trabajando con sql (parte 1)
Tablas y tipos de datos
Actualización de bases de datos en MySQL
Guia de ejercicio sql
Cheat_MySQL.docx
Objeto De Aprendizaje
SENTENCIAS DE SQL SERVER

Más de alexmerono (20)

PPT
Guía de prevención de riesgos en electricidad
PPT
Guía de prevención de riesgos en carpintería
PPT
Guía de prevención de riesgos en cerrajería. IES San Juan Bosco
PPT
Guía de prevención de riesgos en carnicería. IES San Juan Bosco
PPT
Guía de prevención de riesgos en albañilería. IES San Juan Bosco
PPT
Guía de Prevención de Riesgos Laborales en albañilería
PPT
Implantación de los dispositivos físicos del sistema de información
PPT
Sql Consultas MáS Complejas
PPT
Introducción a Sql
PPT
Elementos de interconexión de redes
PPT
Elementos de interconexión de redes
PPT
Presentacion Tema 4 Imsi
PPT
Presentacion Tema 3 IMSI
PPT
Contenidos tema 2. Líneas de acceso dedicado
PPT
Líneas de acceso conmutado. Resumen
PPT
Sistemas Gestores de Bases de Datos
PPT
Presentacion Ftp
PPT
Resumen IPTABLES
PPT
Presentacion Squid
ODP
Servicio DHCP
Guía de prevención de riesgos en electricidad
Guía de prevención de riesgos en carpintería
Guía de prevención de riesgos en cerrajería. IES San Juan Bosco
Guía de prevención de riesgos en carnicería. IES San Juan Bosco
Guía de prevención de riesgos en albañilería. IES San Juan Bosco
Guía de Prevención de Riesgos Laborales en albañilería
Implantación de los dispositivos físicos del sistema de información
Sql Consultas MáS Complejas
Introducción a Sql
Elementos de interconexión de redes
Elementos de interconexión de redes
Presentacion Tema 4 Imsi
Presentacion Tema 3 IMSI
Contenidos tema 2. Líneas de acceso dedicado
Líneas de acceso conmutado. Resumen
Sistemas Gestores de Bases de Datos
Presentacion Ftp
Resumen IPTABLES
Presentacion Squid
Servicio DHCP

Último (20)

PDF
taller de informática - LEY DE OHM
PDF
ACTIVIDAD 2.pdf j
PDF
Temas y subtemas de las fichas 1 y 2.pdf
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
clase auditoria informatica 2025.........
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PDF
Conceptos básicos de programación tecnología.pdf
PDF
diagrama de pareto.pdf valerie giraldo diaz
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
Administración se srevidores de apliaciones
PPT
Que son las redes de computadores y sus partes
PDF
La electricidad y la electrónica .pdf n
PDF
Maste clas de estructura metálica y arquitectura
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PDF
Estrategia de apoyo tecnología miguel angel solis
DOCX
Trabajo colaborativo Grupo #2.docxmkkkkkkl
taller de informática - LEY DE OHM
ACTIVIDAD 2.pdf j
Temas y subtemas de las fichas 1 y 2.pdf
Presentación PASANTIAS AuditorioOO..pptx
Plantilla para Diseño de Narrativas Transmedia.pdf
introduccion a las_web en el 2025_mejoras.ppt
clase auditoria informatica 2025.........
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
Conceptos básicos de programación tecnología.pdf
diagrama de pareto.pdf valerie giraldo diaz
historia_web de la creacion de un navegador_presentacion.pptx
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Administración se srevidores de apliaciones
Que son las redes de computadores y sus partes
La electricidad y la electrónica .pdf n
Maste clas de estructura metálica y arquitectura
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
Estrategia de apoyo tecnología miguel angel solis
Trabajo colaborativo Grupo #2.docxmkkkkkkl

CreacióN De Objetos En MySQL

  • 1. CREACIÓN DE OBJETOS EN MYSQL OPERACIONES CON BASES DE DATOS OFIMÁTICAS Y CORPORATIVAS
  • 2. Creación de una tabla Se usa la orden CREATE TABLE CREATE TABLE NombreTabla (Columna1 Tipo_dato [NOT NULL], Columna2 Tipo_dato [NOT NULL], ..........................);
  • 3. 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)
  • 4. 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.
  • 5. 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));
  • 6. 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é?
  • 7. restricciones. primary key primary key PRIMARY KEY para añadir claves primarias. CREATE TABLE provincias( codigo INTEGER PRIMARY KEY, nombre VARCHAR(20) NOT NULL);
  • 8. Restricciones. primary key primary key INSERT INTO provincias VALUES(1,‘Lorca’); INSERT INTO provincas VALUES(1,‘Alhama de Murcia’) => ERROR
  • 9. restricciones. primary key 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));
  • 10. valores por defecto. default 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’);
  • 11. valores por defecto. default default INSERT INTO ciudades(nombre,habitantes) VALUES(‘MURCIA’,300000); INSERT INTO ciudades(nombre,habitantes) VALUES(‘ALICANTE’,250000); SELECT * FROM ciudades;
  • 12. 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.
  • 13. AUTO_INCREMENT CREATE TABLE animales( id INT NOT NULL AUTO_INCREMENT, nombre VARCHAR(30) NOT NULL, PRIMARY KEY(id));
  • 14. AUTO_INCREMENT INSERT INTO animales(nombre) VALUES(‘PERRO’); INSERT INTO animales(nombre) VALUES(‘GATO’); SELECT * FROM animales;
  • 15. 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)
  • 16. CLAVES AJENAS CREATE TABLE personas( nombre VARCHAR(20), edad INTEGER NOT NULL, provincia INTEGER, PRIMARY KEY(nombre), FOREIGN KEY(provincia) REFERENCES provincias(codigo));
  • 17. 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.
  • 18. 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.
  • 19. 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;
  • 20. 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;
  • 21. 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 );
  • 22. 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
  • 23. 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.
  • 24. 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
  • 25. 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.
  • 26. Verificación de restricciones. Ejemplo CREATE 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)));
  • 27. 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)));
  • 28. 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;
  • 29. 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;
  • 30. 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
  • 31. 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;
  • 32. 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’));
  • 33. 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);
  • 34. 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);
  • 35. 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;
  • 36. BORRADO DE TABLAS La orden DROP TABLE suprime una o varias tablas de la base de datos. DROP TABLE tabla1, tabla2.
  • 37. 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.
  • 38. 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.
  • 39. 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.
  • 40. 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);
  • 41. 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;
  • 42. CREACIÓN DE VISTAS COMPLEJAS Se definen sobre más de una tabla CREATE 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;
  • 43. 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;