Está en la página 1de 8

MEDIA TÉCNICA DESARROLLO DE SOFTWARE

GUIA DE APRENDIZAJE # 2.
TEMA: SQL

Docente: Juan Carlos Pérez


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ásicas de MySQL para la selección de datos.
Crear estructuras de MySql para la modificación de tablas.
Definir y aplicar DDL y DML para la creación de una base de 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(por sus siglas
en inglés Structured Query Language; en español lenguaje de consulta estructurada).
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.

“Las sentencias SQL se dividen en dos categorías: lenguaje de definición de datos (DDL) y
lenguaje de manipulación de datos (DML). Las sentencias DDL se utilizan para describir una
base de datos, para definir su estructura, para crear sus objetos y para crear los subobjetos de
la tabla.
La lista siguiente ofrece ejemplos de estos tipos de sentencias DDL:
Creación de tablas (mandato CREATE).
Modificación de la estructura de una tabla (mandato ALTER) sin suprimirla y volver a crearla,
como añadir columnas, eliminar columnas o cambiar definiciones de columna (por ejemplo,
longitud o los valores predeterminados).

Eliminación de objetos (como tablas) de la base de datos (mandato DROP)


Particionado de tablas (mandato PARTITION).

Las sentencias DML se utilizan para controlar la información contenida en la base de datos.
Las listas siguientes ofrecen ejemplos de estos tipos de sentencias DML:

Adición de registros a una tabla (mandato INSERT).

Modificación de la información de una tabla (mandato UPDATE).

Eliminación de registros de una tabla (mandato DELETE).

Si bien todos los motores de réplica de réplica de CDC puede replicar cambios de DML, motor
de réplica de CDC para bases de datos Oracle y motor de réplica de CDC para DB2 para LUW
también incluyen soporte para replicar cambios de DDL, lo que permite una gestión de cambios
más sencilla y automatizada. Los cambios en los datos siguen replicándose, pero ya no es
necesario actualizar manualmente la información de suscripción cuando la estructura de una
tabla cambia si utiliza la característica de réplica de DDL. Por ejemplo, se añaden nuevas
tablas y columnas según la sentencia DDL.
Aunque existe una gran variedad de operaciones de DDL, réplica de CDC replica sólo las que
están relacionadas con tablas y características de tablas; no replica el contexto más amplio de
la base de datos. “
Nota: Mysql es un motor de bases de la empresa sunmicrosystems y fue adquirido por Oracle
al igual que java y oppenoffice.
____________________
Tomado de: https://www.ibm.com/docs/es/idr/11.3.3?topic=console-replicating-data-definition-language-ddl-changes
[24-04-2022:08:35]

Preparado por: Juan Carlos Pérez P. Versión 1.4 2024 1


http://www.juanperezu.com
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.

De acuerdo a la Figura1, una tabla está compuesta de información de un tipo dentro de un


sistema, en este caso tabla de mascota, que contiene a su interior registros de información,
Sobre las mascotas, los cuales están compuestos por campos: id, nombre, propietario,
especie, sexo, nacimiento, fallecimiento. Estos campos albergan un tipo de campo que
almacena un dato de acuerdo a las necesidades básicamente numéricos, cadenas booleanas,
fechas, hora. Cada campo está compuesto a su vez por byte y estos por bits. ver Anexo.

Sintaxis de los DDL y DML.


Para el caso de mysql aunque las diferencias entre un motor de bases de datos y otro son
mínimas. A continuación el ejemplos para la bases de datos de mascotas.

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

Preparado por: Juan Carlos Pérez P. Versión 1.4 2024 2


http://www.juanperezu.com
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',NULL),
(222,'Mau','Juan','Gato','m','1998-03-17',NULL),
(333,'Buffy','Arnoldo', 'Perro','f','1999-05-13',NULL),
(444,'FanFan','Benito','Perro','m','2000-08-27',NULL),
(555,'Kaiser','Diana','Perro','m','1998-08-31','1997-07-29'),
(666,'Chispa','Omar','Ave','f','1998-09-11',NULL),
(777,'Bicho','Tomás','Ave','','2000-02-09',NULL),
(888,'Skim','Benito','Serpiente','m','2001-04-29',NULL);

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.
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 Campo fecha = ‘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

Preparado por: Juan Carlos Pérez P. Versión 1.4 2024 3


http://www.juanperezu.com
“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
á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

Preparado por: Juan Carlos Pérez P. Versión 1.4 2024 4


http://www.juanperezu.com
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;

Preparado por: Juan Carlos Pérez P. Versión 1.4 2024 5


http://www.juanperezu.com
ACTIVIDADES:
Realice los siguientes ejercicios con sentencias SQL que permita:
2. Listar todas las mascotas.
3. Listar todos los propietarios.
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.

21 Hay problemas de normalización en la tabla de mascotas, haga los ajustes necesarios.

22 Agregue las restricciones en las tablas las forenkey claves foráneas)

Preparado por: Juan Carlos Pérez P. Versión 1.4 2024 6


http://www.juanperezu.com
Preparado por: Juan Carlos Pérez P. Versión 1.4 2024 7
http://www.juanperezu.com
MASCOTAS
Anexo

id nombre propietario especie sexo nacimiento fallecimiento


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 2005-01-01
666 Chispa Omar Ave f 1998-09-11
777 Bicho Tomás Ave 2000-02-09
888 Skim Benito Serpiente m 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

ID NOMBRE VALOR ID_PROPIETARIO NOMBRE TELEFONO


1 INYECTOLOGIA 15.000 ARNOLDO
2 VACUNACION 20.000 1 MARTINEZ 2789456000
CIRUGIA 2 JUAN PEREZ 299803122
3 EXTREMIDAD 1.500.000 3 BENITO SUAREZ 22713411
4 CITA 5.000 4 DIANA MARTINEZ 5848974
5 CASTRACION 120.000 5 OMAR ARANGO 2789654
6 PURGAR PARASITOS 25.000 6 TOMAS CIPRIANO 2945656
7 PUNTO DE SUTURA 10.000
8 MATERNIDAD 500.000
9 GUARDERIA 30.000

Preparado por: Juan Carlos Pérez P. Versión 1.4 2024 8


http://www.juanperezu.com

También podría gustarte