MEDIA TÉCNICA DESARROLLO DE SOFTWARE GUIA DE APRENDIZAJE # 2 TEMA: Sentencias básicas de sql en MySQL Docente: Juan Carlos Pérez

Alumno: __________________________________________Grado____ Nota____ Fecha:__/___/____ Duración: 6 Horas Justificación: Se pretende con esta contribuir a que el alumno Sea competente para el manejo de bases de datos, recuperación de información, creación y modificación de bases de datos a través del sistema gestor de bd de Mysql como fundamental para el desarrollo de sistemas de información en el acceso y modificación de información Objetivos: Conocer las sentencias básica de MySQL para la selección de Datos. Crear estructuras de MySql para la modificación de tablas. Crear consultas que permitan eliminar y anexar datos. CONTENIDO Si desea trabajar con una base de datos , deberá aprender a hablar en su lenguaje. Las bases de datos hablan un lenguaje estructurado mas conocido como SQL. En lugar de trabajar con un registro a la vez, SQL gestiona grupos de registros como si se tratara de una entidad individual, lo que lo hace un lenguaje estándar en la mayoría de los servidores de bases de datos. Todo parte desde un buen diseño de la base de datos Vea el siguiente Modelo Entidad Relación el cual nos permite ver cómo están relacionados los datos que contenidos en cada tabla figura 1.

Estructura de las tablas figura 2

Preparado por : Juan Carlos Pérez P. Versión 1.1 www.esnips.com/web/desarrollo

1

CREATE TABLE: Crea una tabla CREATE TABLE mascotas ( id int(3) NOT NULL PRIMARY KEY, nombre varchar(20) , propietario varchar(20), especie varchar(20) , sexo char(1), nacimiento date, fallecimiento date); 1. Cree las tablas propuestas en la figura 2 Insert: Permite insertar en una relación una fila mediante la especificación de los valores de cada una de las columnas de la fila, o insertar un grupo de filas especificando una consulta que nos daría el grupo de filas a insertar. Ejemplo inserT into mascotas (id,nombre, propietario, especie,sexo, nacimiento,fallecimiento) values(111,'Fluffy','Arnoldo','Gato','f','1999-02-04',''), (222,'Mau','Juan','Gato','m','1998-03-17',''), (333,'Buffy','Arnoldo', 'Perro','f','1999-05-13',''), (444,'FanFan','Benito','Perro','m','2000-08-27',''), (555,'Kaiser','Diana','Perro','m','1998-08-31','1997-07-29'), (666,'Chispa','Omar','Ave','f','1998-09-11',''), (777,'Bicho','Tomás','Ave','','2000-02-09',''), (888,'Skim','Benito','Serpiente','m','2001-04-29','');

insert into servicios_mascotas (id_mascota,id_servicio,cantidad,valor_unitario,id_propietario) values(111,1,2,25600,1), (111,1,2,0,1), (222,1,2,0,2), (333,2,2,0,1), (444,1,2,0,3), (555,1,2,0,4), (666,1,2,0,5), (777,1,2,0,6), (888,1,2,0,3);

INSERT INTO propietarios (id_propietario,nombre, telefono) values('1','ARNOLDO MARTINEZ','2789456000'), ('2','JUAN PEREZ','299803122'), ('3','BENITO SUAREZ','22713411'), ('4','DIANA MARTINEZ','5848974'), ('5','OMAR ARANGO','2789654'), ('6','TOMAS CIPRIANO','2945656'); INSERT INTO SERVICIOS (ID,NOMBRE, VALOR) values('1','INYECTOLOGIA','15000'), ('2','VACUNACION','20000'), ('3','CIRUGIA EXTREMIDAD','1500000'), ('4','CITA','5000'), ('5','CASTRACION','120000'), ('6','PURGAR PARASITOS','25000'), ('7','PUNTO DE SUTURA','10000'), ('8','MATERNIDAD','500000'), ('9','GUARDERIA','30000');

Consultas Simples: consultas que afectan a una sola tabla de la base de datos.

Preparado por : Juan Carlos Pérez P. Versión 1.1 www.esnips.com/web/desarrollo

2

SELECT nombre , propietario FROM mascotas; SELECT: Lista las columnas que se desean en el resultado de la consulta. FROM: Lista una o más tablas que van a ser referidas en la consulta. WHERE: Contiene una condición para seleccionar las filas de las tablas que se dan en la cláusula FROM. SELECT * FROM mascotas WHERE id =111; cuando el campo id está definido como entero(integer), de lo contrario seria sin las comillas dobles y para los datos de tipo fecha se haría lo siguiente Campofecha = '1998-03-17' de acuerdo a la configuración de las tablasque hemos creado La consulta SQL anterior se procesa por el sistema en el orden FROM, WHERE, SELECT. Si no se seleccionan los campos a mostrar , MySql muestran todos los campos “la fila completa”. En la cláusula SELECT se pueden definir cálculos que involucran columnas numéricas y literales numéricos combinados con las operaciones aritméticas estándar agrupadas con paréntesis cuando sea necesario. ORDER BY: Se usa para ordenar el resultado de la consulta en orden alfanumérico ascendente por la columna que se especifique. En orden descendente entonces esto debe especificarse añadiendo a la orden “DESC”. SELECT nombre, propietario, FROM mascotas ORDER BY mascotas.id DESC;

BETWEEN: Puede usarse en la comparación de algún valor con otros dos valores. Para saber si el valor a comparar está entre estos dos valores. SELECT id, nombre FROM mascotas WHERE mascotas.id BETWEEN 111 AND 444 ; Operador de comparación IN: La cláusula WHERE ha evaluado “true” si el tipo del oficio de la fila se encuentra en el conjunto indicado entre paréntesis El operador LIKE Puede usar el operador Como (Like) para especificar criterios inexactos en la cuadrícula de diseño de consultas. Por ejemplo, si escribe Como (Like) "C*" la consulta devuelve todos los valores de campos que comiencen por la letra C. En una consulta de parámetros, puede usar el operador Como (Like) para pedir al usuario un modelo que buscar. Por ejemplo, suponga que tiene una tabla tblPeliculas que incluye un campo Nombre. En la ventana Consulta, cree una nueva consulta Escriba la siguiente SELECT id, nombre FROM mascotas WHERE nombre LIKE [Escriba las primeras letras del nombre ] & "*";

Cuando se ejecuta la consulta, un cuadro de diálogo pide al usuario "Escriba las primeras letras de la mascotas :". Si el usuario escribe Pe en el cuadro de diálogo, la consulta busca el modelo Pe* o sea, todos las mascotas que comiencen por las letras Pe. Like "P[A-F]###" Ahora, los datos escritos en este cuadro de texto deben comenzar por la letra P, seguida por cualquier letra entre A y F y por tres dígitos. se usa para comparar variables de caracteres con literales cuando se utilizan comodines. Consultas Multitablas: SQL conecta los datos entre las tablas de la misma manera que la reunión(join) del

Preparado por : Juan Carlos Pérez P. Versión 1.1 www.esnips.com/web/desarrollo

3

álgebra relacional. Como es usual , la cláusula FROM se procesa primero. En este caso, sin embargo, puesto que hay dos tablas en la cláusula. El sistema crea el producto cartesiano de las filas en estas tablas. Esto significa que se crea(lógicamente) una tabla enorme que consiste de todas las columnas de ambas tablas, emparejando cada fila de una tabla con cada fila en la otra tabla. Después de crear esta relación gigante se aplica la cláusula WHERE, como antes. Se examina cada fila de la relación creada por la cláusula FROM conforme a la cláusula WHERE. No se consideran aquellas que no la satisfacen. SELECT se aplica a las filas restantes. Ejemplo Alias: Nombre alternativo que se le da a una tabla, como se ve en el siguiente ejemplo de consultas multitablas

SELECT m.nombre FROM servicios_mascotas sm, servicios s ,mascotas m WHERE sm.id_servicio =s.id AND sm.ID_MASCOTA = m.id;

GROUP BY: Indica cuáles filas deben agruparse sobre un valor común de las columnas especificadas. SELECT m.nombre,sm.cantidad*sm.valor_unitario AS total FROM servicios_mascotas sm, servicios s ,mascotas m WHERE sm.id_servicio =s.id AND sm.ID_MASCOTA = m.id GROUP BY m.nombre HAVING: Una cláusula que impone condiciones a los grupos. La diferencia entre Having y Where es que se aplica a las filas, mientras que la cláusula Having se aplica a los grupos. SELECT id,nombre , Avg(valor) AS valorpromedio FROM servicios GROUP BY id,nombre HAVING Avg(valor)>2000;

Update: Operación que cambia los valores de las columnas en las filas. UPDATE mascotas SET fallecimiento =’2005-01-01’ WHERE id =555 UPDATE servicios_mascotas SET VALOR_UNITARIO =500000 WHERE ID_SERVICIO ='8'

Borrar una Tabla : Permite borrar toda la tabla DROP TABLE NOMBRETABLA; Delete: Operación que quita filas de una relación. Las operaciones de DELETE se aplican también a todas las filas que satisfacen la cláusula WHERE en la instrucción DELETE. DELETE FROM servicios_mascotas WHERE id_mascota = 111 AND ID_SERVICIO=1 AND ID_CLIENTE =1; ACTIVIDADES : Realice las siguientes ejercicios con sentencias sql que permita: 2. Listar todas las mascotas 3. Listar todos los propietarios

Preparado por : Juan Carlos Pérez P. Versión 1.1 www.esnips.com/web/desarrollo

4

4. Listar la identificación y el nombre de los propietarios 5. Listar el id y el nombre de los servicios 6. Hallar el nombre y el valor total de todos los servicios utilizados por las mascotas 7. Listar el nombre y le valor total para cada servicio realizado 8. Mostrar el nombre del propietario y el valor total en servicios para la mascota 333 9. Hallar el nombre del servicio, propietario, mascotas para todos los servicios de mascotas 10. Hallar el nombre del servicio, propietario, mascotas para todos los servicios para la mascota 222 11. Crear una consulta que permita modificar el sexo de la mascota Wicho por ‘m’ 12. Crear una consulta que permita modificar todos los valores de los servicios, debido a que se decidió rebajar todos lo servicios en un 20% 13. Modificar el teléfono ’ 2945656’ del propietario con el id 6 por el nuevo teléfono ’2569800’ 14. Modificar el nombre del servicio ‘PURGAR PARASITOS’ con ID 6 por el nombre ‘Desparasitación’ 15. Hallar el nombre del propietario con id = 333, el servicio= 2, nombre de la mascota con id = 333. 16.Cree sentencias sql que permita actualizar cada uno de los registros en el campo valor_unitario en la tabla Servicios_mascotas de acuerdo a la tabla de servicios de acuerdo a la hoja de anexos 17 Seleccione el nombre y valor total pagado por cada mascota 18 Seleccione el nombre y valor total pagado por la mascota con código =111 19 Seleccione el nombre del servicio y valor total pagado para el id del servicio =1 20 Seleccione el nombre del propietario y valor total pagado por el servicio de a su mascota

RECURSOS:

Guía de aprendizaje # 1, 2 Ver tablas al final EVALUACIÓN: Revisar y evaluar las consultas propuestas calificar a cada estudiante la creación y ejecución consultas, sustentando individualmente

BIBLIOGRAFÍA: www.lawebdelprogramador.com www.webestilo.com/mysql/ejecutar-consultas.phtml JHON L. VIESCAS, Running Microsoft Access 97 McGraw Hill Ayudas Microsoft Access 97

Preparado por : Juan Carlos Pérez P. Versión 1.1 www.esnips.com/web/desarrollo

5

MASCOTAS
id 111 222 333 444 555 666 777 888 nombre Fluffy Mau Buffy FanFan Kaiser Chispa Bicho Skim propietario Arnoldo Juan Arnoldo Benito Diana Omar Tomás Benito especie Gato Gato Perro Perro Perro Ave Ave Serpiente sexo f m f m m f m nacimiento fallecimiento 1999-02-04 1998-03-17 1999-05-13 2000-08-27 1998-08-31 2005-01-01 1998-09-11 2000-02-09 2001-04-29

SERVICIOS_MASCOTAS
ID_MASCOTA ID_SERVICIO CANTIDAD VALOR_UNITARIO ID_PROPIETARIO 111 8 2 500.000 1 111 1 2 0 1 222 1 2 0 2 333 2 2 0 1 444 5 2 0 3 555 2 2 0 4 666 1 2 0 5 777 1 2 0 6 888 4 2 0 3

SERVICIOS

PROPIETARIOS
VALOR 15.000 20.000 1.500.000 5.000 120.000 25.000 10.000 500.000 30.000 ID_PROPIETARIO NOMBRE ARNOLDO MARTINEZ 1 2 JUAN PEREZ 3 BENITO SUAREZ 4 DIANA MARTINEZ 5 OMAR ARANGO 6 TOMAS CIPRIANO TELEFONO 2789456000 299803122 22713411 5848974 2789654 2945656

ID NOMBRE 1 INYECTOLOGIA 2 VACUNACION CIRUGIA 3 EXTREMIDAD 4 CITA 5 CASTRACION 6 PURGAR PARASITOS 7 PUNTO DE SUTURA 8 MATERNIDAD 9 GUARDERIA

Preparado por : Juan Carlos Pérez P. Versión 1.1 www.esnips.com/web/desarrollo

6