CreacióN De Objetos En MySQL

10,894 views

Published on

Presentación que muestra la forma de crear tablas, vistas y otros objetos en bases de datos MySQL

Published in: Technology, Education
2 Comments
4 Likes
Statistics
Notes
No Downloads
Views
Total views
10,894
On SlideShare
0
From Embeds
0
Number of Embeds
393
Actions
Shares
0
Downloads
470
Comments
2
Likes
4
Embeds 0
No embeds

No notes for slide

CreacióN De Objetos En MySQL

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

×