Download create table
Document related concepts
Transcript
UNIDAD 3 - MySQL Rafael Albertti SQL Structured Query Language (en español Lenguaje Estructurado de Consultas) Ya muchos productos son compatibles con SQL y se ha hecho un estándar de bases de datos relacionales. Componentes de SQL Lenguaje de definición de datos (LDD). El LDD de SQL proporciona órdenes para la definición de esquemas de relación, borrado de relaciones, creación de índices y modificación de esquemas de relación. Lenguaje interactivo de manipulación de datos (LMD). El LMD de SQL incluye un lenguaje de consultas, basado tanto en el álgebra relacional como en el cálculo relacional de tuplas. Incluye también órdenes para insertar, borrar y modificar tuplas de la base de datos. Definición de vistas. El LDD de SQL incluye órdenes para la definición de vistas. Control de transacciones. SQL incluye órdenes para la especificación del comienzo y final de transacciones. SQL incorporado y SQL dinámico. SQL dinámico e incorporado define cómo se pueden incorporar las instrucciones SQL en lenguajes de programación de propósito general, tales como C, C++, Java, PL/I, Cobol, Pascal y Fortran. Integridad. El LDD de SQL incluye órdenes para la especificación de las restricciones de integridad que deben satisfacer los datos almacenados en la base de datos. Las actualizaciones que violen las restricciones de integridad se rechazan. Autorización. El LDD de SQL incluye órdenes para especificar derechos de acceso para las relaciones y vistas. Comandos SQL Principales comandos para empezar a administrar. Comando show databases; create database nombre_BD use nombre_BD Descripción Mostrar todas las bases de datos que tenemos Crear una base de datos Usar una base de datos de las disponibles Comandos SQL Existen dos tipos de comandos SQL: 1. LDD que permiten crear y definir nuevas bases de datos, campos e índices. 2. LMD que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos. 3. Lenguaje de Control de Datos (LCD): Algunas instrucciones de SQL que no pertenecen al LDD ni al LMD. Comandos SQL Lenguaje de Definición de Datos (LDD). Comando CREATE DROP ALTER Truncate Descripción Podemos crear tablas, campos y la base de datos. Nos permite eliminar tablas. Permite modificar las tablas agregando campos o cambiando la definición de los campos. Vacía la Tabla Comando CREATE Podemos crear una base de datos: Create database nombre_BD O crear una tabla: Create table nombres de campos y tipos de datos Ejemplo de crear Tabla CREATE TABLE JUEGOS (id INT not null AUTO_INCREMENT, nombre VARCHAR (50) not null , empresa VARCHAR (50) not null , plataforma VARCHAR (50) not null, copias INT (3) not null, PRIMARY KEY (id)); id 1 2 3 4 5 6 7 nombre Dark Souls II Mario Kart 8 Uncharted Grand Theft Auto V Destiny King of Fighters 2002 Fifa 15 JUEGOS empresa From Software Nintendo Sony Rockstar Bungie Studios SNK EA plataforma Playstation 4 WII Playstation 4 XBOX ONE XBOX ONE PC Playstation 4 copias 12 10 11 13 9 4 14 Comando TRUNCATE Permite vaciar la tabla: TRUNCATE TABLE nombre_tabla Ejemplo id nombre JUEGOS empresa TRUNCATE TABLE JUEGOS plataforma copias Comando ALTER Permite agregar y quitar columnas ALTER TABLE `nombre_tabla` ADD `campo` char(100) NOT NULL alter table NOMBRETABLA drop column NOMBRECAMPO Cambiar nombre al campo ALTER TABLE nombre_tabla CHANGE nombre_campo_actual nuevo_nombre varchar(30) Cambiar nombre Tabla RENAME TABLE nombre_tabla TO nuevo_nombre_tabla Eliminar SQL Se puede eliminar tanto la tabla como la Base de datos. Drop table nombre_tabla Drop Database nombre_BD Comandos SQL Lenguaje de Manipulación de Datos (LMD). • Consultas de selección. • Consultas de acción. • Consultas de control de concurrencia. Consulta de Selección Comando SELECT Descripción Filtra registros sin modificar información. Ejemplo de Selección SELECT nombre FROM prueba.juegos JUEGOS nombre Dark Souls II Mario Kart 8 Uncharted Grand Theft Auto V Destiny King of Fighters 2002 Fifa 15 Ejemplo de Selección SELECT * FROM juegos WHERE nombre = "Mario Kart 8" id nombre 2 Mario Kart 8 JUEGOS empresa Nintendo plataforma copias WII 10 Ejemplo de Selección SELECT * FROM juegos WHERE nombre = "Mario Kart 8" OR copias = 12 id 1 2 nombre Dark Souls II Mario Kart 8 JUEGOS empresa From Software Nintendo plataforma Playstation 4 WII copias 12 10 Ejemplo de Selección id nombre JUEGOS empresa plataforma copias SELECT * FROM juegos WHERE nombre = "Mario Kart 8" AND copias = 12 Ir al menú Selección de dos o más tablas Select campos From tabla1, tabla2 where tabla1.id = tabla2.id Ir al menú Selección con INNER JOIN SELECT * FROM tabla1 INNER JOIN tabla2 ON tabla2.id_tabla1 = tabla1.id INNER JOIN tabla3 ON tabla2.id = tabla3.id_tabla2 Ir al menú Comando ORDER BY Permite ordenar el resultado Ejemplo: select campos from nombre_tabla order by campo Ir al menú Consultas de Acción Para modificar la base de datos. Comando UPDATE Descripción Puede insertar grandes cantidades de datos. Modifica o actualiza registros. DELETE Elimina registros de la base de datos. INSERT Insertar datos Insert into nombre_tabla (campo) values ( ‘valor’) Insertar varios datos ejemplo insert into ciudad1 (nombre, poblacion) values('México','Tlalpan'),('Nuevo Leon','Monterrey'); Modificar registros UPDATE nombre_tabla SET campo = 20 WHERE campo = 12 Modificar registros ejemplo UPDATE juegos SET copias = 20 WHERE copias = 12 Eliminar datos En MySQL Workbench hay una protección para modificar o eliminar datos, para quitarla: 1. Vamos al menú en la opción “edit”. 2. Seleccionamos la opción preferencias. Quitar opción “Safe Updates” Eliminar datos Ahora si podemos eliminar DELETE FROM nombre_tabla WHERE campo = valor Consultas de control de concurrencia Comando COMMIT ROLLBACK Descripción Se graban las ultimas modificaciones en la base de datos de manera permanente. Permite volver al estado en el que estaba la base de datos tras el último COMMIT. Comandos SQL Lenguaje de Control de Datos (LCD). Comando GRANT REVOKE Descripción Se emplea para dar permisos a los usuarios. Con él podemos eliminar permisos a los usuarios. Operadores agregados SQL tiene algunos operadores que funcionan con el nombre de un atributo, estos son: AVG, COUNT, SUM, MIN, MAX Valores agregados AVERAGE Se obtiene un promedio. Ejemplo en la table llamada producto: SELECT AVG (precio) FROM producto Valores agregados COUNT Cuenta el número de registros, los registros repetidos son descartados. Ejemplo: SELECT COUNT(DISTINCT nombres) FROM productos_orden; Resultado = 2 Valores agregados SUM Suma los registros. Ejemplo: select sum(precio) from producto Valores agregados SUM Suma los registros. Ejemplo: select sum(precio) from producto Valores agregados MAX Muestra el valor máximo. Ejemplo: select max(precio) from producto Valores agregados MIN Muestra el valor mínimo. Ejemplo: select min(precio) from producto Respaldo en MySQL workbench El respaldo es importante en cualquier manejador. Respaldo BD Respaldo BD Respaldo BD Vistas En SQL las vistas (“views”) son un mecanismo que permite generar un resultado a partir de una consulta (query) almacenada, después se puede utilizar como si fuera una tabla existente. Ejemplo CREATE VIEW vista_paises AS SELECT nombre_pais, nombre_estado, nombre_municipio FROM pais INNER JOIN estado ON estado.id_pais = pais.id INNER JOIN municipio ON estado.id = municipio.id_estado Tipos de datos Int Varchar Char Float Llaves Superclave. Conjunto de atributos que permiten distinguir de forma única a una entidad dentro del conjunto de entidades. Por ejemplo, {Rfc} es una superclave de la entidad CONTRIBUYENTE, también {Rfc, Nombre} es una superclave, pero {Nombre} no es una superclave, pues varios contribuyentes pueden tener el mismo nombre. Clave Candidata El concepto de clave candidata sirve para definir conjuntos con cardinalidad mínima de atributos que identifiquen a las entidades. Pueden existir varias claves candidatas para cada entidad. Clave Primaria Clave candidata que elige el diseñador para distinguir a las entidades dentro del conjunto de entidades. Clave Alterna Clave candidata que no es la clave primaria. Uso de Llave Foránea Una llave foránea ayuda a relacionar tablas, haciendo referencia a la llave primaria de otra tabla. Una llave foránea también puede ser llave primaría o incluso ser eliminada automáticamente si se elimina la llave primaria a la que hace referencia. Uso de Llave Foránea con restricción de borrado CREATE TABLE producto ( id INT NOT NULL, precio FLOAT, PRIMARY KEY (id)); Uso de Llave Foránea con restricción de borrado CREATE TABLE productos_orden (no_orden INT NOT NULL AUTO_INCREMENT, nombre VARCHAR(30) NOT NULL, producto_id INT(2) NOT NULL, PRIMARY KEY(no_orden), FOREIGN KEY (producto_id) REFERENCES producto(id)); Borrar llave primaria en cascada Crear tabla sucursal CREATE TABLE sucursal (id INT NOT NULL, nombre VARCHAR(50), PRIMARY KEY (id)); Crear tabla cuenta create table cuenta(id INT NOT NULL, id_sucursal INT (3) not null, foreign key (id_sucursal) references sucursal (id) on delete cascade on update cascade) LIKE en SQL Permite hacer una selección de datos que empiecen, terminen o contengan ciertos caracteres. Que la palabra empiece con M atributo LIKE ‘M%')) Que la palabra termine con M atributo LIKE '%M')) Que contenga la letra M atributo LIKE '%M%')) Tipos de JOIN INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN CROSS JOIN Practica 1. Crear una base de datos llamada países 2. Crear 3 tablas: 3. Países, estados y municipios 4. Relacionarlos entre sí (llaves foráneas) 5. Insertar 15 municipios en una sola consulta 6. Insertar 10 estados en una sola consulta 7. Insertar 2 países en una sola consulta 8. Hacer una selección y mostrar un país con su respectivo estado y municipio. 9. Respaldar la base de datos Practica resultado 1. Crear una base de datos llamada países Create database países 2. Crear 3 tablas: Países, estados y municipios, relacionarlos entre sí. CREATE TABLE `paises` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nombre_pais` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) CREATE TABLE `estados` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nombre_estado` varchar(50) NOT NULL, `id_pais` int(3) NOT NULL, PRIMARY KEY (`id`) ) CREATE TABLE `municipios` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nombre_municipio` varchar(50) NOT NULL, `id_estado` int(3) NOT NULL, PRIMARY KEY (`id`) ) Practica resultado 5. Insertar 7 municipios en una sola consulta INSERT INTO `municipios` VALUES (1,'San Juan del Río',1),(2,'Pachuca',2),(3,'Zimapán',2),(4,'Cadereyta',1),(5,'Iztapalacra',3),(6,'Ja lpan',1),(7,'Tlalpan',3); 6. Insertar 3 estados en una sola consulta INSERT INTO `estados` VALUES (1,'Querétaro',1),(2,'Hidalgo',2),(3,'DF',3); 7. Insertar 2 países en una sola consulta INSERT INTO `paises` VALUES (1,'México'),(2,'Argentina'); Practica resultado 8. Hacer una selección y mostrar un país con su respectivo estado y municipio (INNER JOIN). SELECT nombre_pais, nombre_estado, nombre_municipio FROM países INNER JOIN estados ON estados.id_pais = paises.id INNER JOIN municipios ON estados.id = municipios.id_estado Where nombre_pais = "México“ 9. Respaldar la base de datos Referencias Silverschatz, A., Korth, H., Sudarshan, S. (2010). http://luismido.wikidot.com/sql:structured-querylanguage Fundamentos de Base de Datos (pp. 107-110) USA. Mc Graw Hill.