Material MySQL
Material MySQL
.....................................................................................................................................................1
SOFTWARE A INSTALAR ...............................................................................................................3
EVIDENCIA 1.................................................................................................................................3
BASE DE DATOS ...........................................................................................................................3
MODELO RELACIONAL .................................................................................................................4
TIPOS DE COMANDOS .................................................................................................................4
DDL (Data Definition Language - Lenguaje de Definición de Datos):......................................4
DML (Data Manipulation Language - Lenguaje de Manipulación de Datos): .........................4
DQL (Data Query Language - Lenguaje de Consulta de Datos): ..............................................4
DDL CREAR BASE DE DATOS ....................................................................................................5
DDL CREAR TABLA SIN CLAVES FORANEAS .............................................................................5
DDL ELIMINAR CLAVE PRIMARIA.............................................................................................6
DDL CREAR CLAVE PRIMARIA DESPUES DE CREAR LA TABLA .................................................6
DDL MODIFICAR ESTRUCTURA DE LA TABLA ..........................................................................6
DDL ELIMINAR TABLA ..............................................................................................................6
DDL ELIMINAR LA TOTALIDAD DE REGISTROS DE UNA TABLA ...............................................7
DDL ELIMINAR TABLA ..............................................................................................................7
DDL CREAR TABLA CON CLAVES FORANEAS ...........................................................................7
DDL ELIMINAR CLAVE FORANEA .............................................................................................7
DDL CREAR CLAVE FORANEA DESPUES DE CREAR LA TABLA ..................................................8
DML INSERTAR REGISTROS A UNA TABLA ..............................................................................8
DQL CONSULTAR DATOS .........................................................................................................8
DML ACTUALIZAR REGISTROS ...............................................................................................10
DML ELIMINAR REGISTROS ...................................................................................................10
EVIDENCIA 2...............................................................................................................................10
DQL CONSULTAS MULTITABLA ..............................................................................................12
FUNCIONES DE AGREGACION ................................................................................................13
AGRUPACIONES .....................................................................................................................14
SUBCONSULTAS .....................................................................................................................15
EVIDENCIA 3...............................................................................................................................16
VISTAS ....................................................................................................................................16
PROCEDIMIENTOS .................................................................................................................17
TRIGGERS O DISPARADORES .................................................................................................19
EVIDENCIA 4...............................................................................................................................20
SOFTWARE A INSTALAR
XAMPP: https://www.youtube.com/watch?v=a4EUpiPcfWs
EVIDENCIA 1
Prueba de conocimientos previos.
https://docs.google.com/forms/d/e/1FAIpQLSdKB67oFJz2JxB-
_dXR5dR7D5cG4g6RPvmfpYEwnkzIAB-8Tg/viewform?usp=sf_link
BASE DE DATOS
FIGURA 1
Una base de datos es un conjunto organizado de datos que se almacena de forma estructurada
en un sistema de almacenamiento, como un disco duro, con el propósito de permitir el acceso,
recuperación y gestión eficiente de la información. En un sentido más amplio, una base de datos
también puede referirse al software que se utiliza para gestionar estos datos.
En una base de datos, los datos están organizados en tablas, que a su vez están compuestas por
filas y columnas. Cada fila representa un registro individual de datos y cada columna representa
un campo o atributo específico de ese registro.
Las bases de datos se utilizan en una amplia variedad de aplicaciones y entornos, desde sistemas
de gestión empresarial hasta sitios web y aplicaciones móviles. Proporcionan una forma
estructurada y eficiente de almacenar, organizar y manipular grandes cantidades de información
de manera segura y confiable.
MODELO RELACIONAL
El modelo relacional es un modelo de datos utilizado en la gestión de bases de datos
relacionales, que fue propuesto por Edgar F. Codd en 1970. Es el modelo más utilizado en
sistemas de gestión de bases de datos (DBMS) modernos.
En el modelo relacional, los datos se organizan en tablas (también conocidas como relaciones),
que consisten en filas y columnas. Cada tabla representa una entidad o relación en el dominio
del problema que se está modelando. Las filas de una tabla representan los registros individuales
(tuplas) y las columnas representan los atributos o campos de los registros.
1. Tablas: Los datos se organizan en tablas bidimensionales con filas y columnas. Cada
tabla tiene un nombre único y cada columna tiene un nombre único dentro de la tabla.
2. Claves Primarias: Cada tabla tiene una clave primaria que identifica de forma única cada
registro en la tabla. La clave primaria garantiza la unicidad de cada fila y se utiliza para
establecer relaciones entre tablas.
3. Claves Foráneas: Una clave foránea, también conocida como clave externa, es un
concepto en bases de datos relacionales que establece una relación entre dos tablas. Es
un campo (o una combinación de campos) en una tabla que hace referencia a la clave
primaria de otra tabla. La clave foránea representa una relación de dependencia entre
los datos en ambas tablas.
4. Relaciones: Las relaciones entre las tablas se establecen mediante claves primarias y
claves foráneas. Una clave foránea en una tabla hace referencia a la clave primaria de
otra tabla y establece una relación entre las dos tablas.
5. Integridad referencial: El modelo relacional incluye la integridad referencial, que
garantiza que todas las referencias entre tablas sean válidas y consistentes. Esto significa
que no se pueden eliminar registros de una tabla si existen referencias a ellos en otras
tablas.
6. Operaciones Relacionales: El modelo relacional define un conjunto de operaciones
relacionales estándar que se pueden aplicar a las tablas para realizar consultas,
actualizaciones y otras operaciones. Estas operaciones incluyen, selección, proyección,
unión, intersección y diferencia.
TIPOS DE COMANDOS
MySQL
USE parking: Para iniciar a trabajar y después de crear la base de datos este comando nos
permite elegir la base de datos con la que vamos a trabajar.
MySQL
USE parking;
NOTA: Una clave foránea (FK) es un campo o un conjunto de campos en una tabla cuyos valores
corresponden a los valores de la clave primaria (PK) de otra tabla. Para poder añadir un campo
con un valor de clave foránea específico, debe existir una fila en la tabla relacionada con el
mismo valor de clave primaria con sus mismas características.
NOTA: Siempre se crean primero todas las tablas que no contengan clave foránea.
tipoDocum: Nombre que se le asigna a la tabla. No puede iniciar con número, no puede poseer
la letra “ñ”, símbolos diferentes a “_”, no puede haber 2 tablas con el mismo nombre.
tipoDoc: Nombre que se le asigna al campo. No puede iniciar con número, no puede poseer la
letra “ñ”, símbolos diferentes a “_”, no puede haber 2 campos con el mismo nombre.
VARCHAR(5): Tipo de campo y la cantidad de caracteres que se pueden ingresar en ese campo.
PRIMARY KEY: Clave primaria, esta debe ser un campo con datos únicos e irrepetibles. Los
campos que no sean claves primarias no necesitan poner este código.
NOTA: AUTO_INCREMENT: Este código convierte a un campo como auto incrementable y solo
puede ser usado por una clave primaria. Este código va inmediatamente después de dar el tipo
de campo el cual obligatoriamente debe ser INT. (idTarifa INT AUTO_INCREMENT PRIMARY
KEY).
MySQL
DESCRIBE parking: Muestra los campos con sus características de una tabla.
MySQL
DESCRIBE parking
MySQL
ALTER TABLE tipoDocum
DROP PRIMARY KEY;
MySQL
ALTER TABLE tipoDocum
ADD PRIMARY KEY (tipoDoc);
ADD: Comando para agregar campo en una tabla. DROP COLUMN es para quitar campo (ALTER
TABLE tipodocum DROP COLUMN extra;), MODIFY COLUMN cambiar tipo de campo (ALTER
TABLE tipoDocum MODIFY COLUMN extra VARCHAR(5);), CHANGE COLUMN cambiar el
nombre del campo(ALTER TABLE tipoDocum CHANGE COLUMN extra extras INT;)
MySQL
MySQL
TRUNCATE TABLE: Comando para eliminar la totalidad de los datos que hay en una tabla.
tipoDocum: Tabla elegida para borrar los datos.
MySQL
MySQL
FOREIGN KEY (tipoDoc): Este comando describe el nombre del campo foráneo.
REFERENCES tipoDocum(tipoDoc): este comando describe el nombre de la tabla y el campo
primario.
MySQL
CREATE TABLE cliente (
numDocum BIGINT PRIMARY KEY,
tipoDoc VARCHAR(5),
nom VARCHAR(30),
telefono BIGINT,
FOREIGN KEY (tipoDoc) REFERENCES tipoDocum(tipoDoc)
)ENGINE=InnoDB;
SHOW CREATE TABLE cliente: Muestra el constraint que tiene esa clave foránea.
MySQL
MySQL
Si se van a ingresar los datos de todos los campos de una tabla se hace lo siguiente:
VALUES: Valores a ingresar a la tabla; si es un solo grupo de datos se ingresa todo entre
paréntesis (), si los datos son de tipo texto deben estar entre comillas (“MySQL”), si los datos
son de tipo numérico o Booleano no deben estar entre comillas (20), si los datos son de tipo
fecha deben estar entre comillas con el formato de AÑO, MES, DIA (“2024-04-01”).
MySQL
INSERT INTO tipoDocum VALUES("RC"), ("TI"), ("CC"), ("PPT"), ("CE"), ("VISA"), ("PASS");
MySQL
INSERT INTO cliente VALUES(12365, "TI", "Andres", 67891),
(12364, "PPT", "Diana", 67892);
NOTA: Si se van a ingresar solo algunos datos de una tabla hay que identificar que campos se
van a llenar aparte de los Primary y Foreign Key ya que estos últimos son obligatorios.
MySQL
SELECT *: Este comando nos permite ver todos los datos de todos los campos de una tabla.
SELECT nom, teléfono: Este comando permite hacer una consulta mostrando solo algunos de
los campos de la tabla.
MySQL
MySQL
&&: Código para que muestre todos los datos que cumplan todas las condiciones que se
pongan en el Script.
||: Código para que muestre todos los datos que cumplan al menos una de las condiciones
que se pongan en el Script.
MySQL
MySQL
MySQL
MySQL
SELECT idestacionamiento, CONCAT(numdocum," ", placa), IF(numdocum>12364, "Bueno",
"Malo") FROM ingresosalida LIMIT 3;
(numDocum*idTarifa):Campo Calculado.
MySQL
Actualizar datos en una tabla se realiza para cambiar o agregar datos en un registro que ya existe,
Se recomienda que se tome como dato de referencia la clave primaria.
NOTA: Si no se condiciona con el WHERE el sistema procede a actualizar todos los registros en
el mismo campo.
MySQL
MySQL
EVIDENCIA 2
En la figura 1 encontramos el modelo relacional correspondiente a un sistema de parqueadero,
la evidencia consiste en lo siguiente:
5. Ingresar los siguientes registros a cada una de las tablas y aumentarle 2 registros mas
a cada una de las tablas.
tipoDocum: Cliente:
tipoVehiculo: Marca:
Vehiculo: Tarifa:
ingresoSalida:
6. En la tabla ingresoSalida insertar la fecha y hora de salida del registro con
idEstacionamiento 2.
Inner Join: es una forma de realizar una consulta con múltiples tablas y adquirir de ellas los
datos necesarios.
MySQL
Left Join: Devuelve todas las filas de la tabla izquierda (primera tabla) y las filas coincidentes de
la tabla derecha (segunda tabla). Si no hay coincidencias en la tabla derecha, se devuelven
valores NULL.
MySQL
SELECT numdocum, cliente.tipodoc AS tcliente, nom, telefono, tipodocum.tipodoc AS
tipoDocumento from cliente LEFT JOIN tipodocum on cliente.tipodoc=tipodocum.tipodoc;
MySQL
SELECT numdocum, cliente.tipodoc AS tcliente, nom, telefono, tipodocum.tipodoc AS
tipoDocumento from tipodocum LEFT JOIN cliente on cliente.tipodoc=tipodocum.tipodoc;
Right join: Devuelve todas las filas de la tabla derecha (segunda tabla) y las filas coincidentes de
la tabla izquierda (primera tabla). Si no hay coincidencias en la tabla izquierda, se devuelven
valores NULL.
MySQL
SELECT numdocum, cliente.tipodoc AS tcliente, nom, telefono, tipodocum.tipodoc AS
tipoDocumento from cliente LEFT JOIN tipodocum on cliente.tipodoc=tipodocum.tipodoc;
MySQL
SELECT numdocum, cliente.tipodoc AS tcliente, nom, telefono, tipodocum.tipodoc AS
tipoDocumento from tipodocum LEFT JOIN cliente on cliente.tipodoc=tipodocum.tipodoc;
Cross join: Devuelve el producto cartesiano de ambas tablas, es decir, combina cada fila de la
primera tabla con cada fila de la segunda tabla.
FUNCIONES DE AGREGACION
Las funciones de agregación en SQL son funciones que operan en un conjunto de valores y
devuelven un solo valor de resumen. Estas funciones se utilizan comúnmente para realizar
cálculos en conjuntos de datos, como calcular la suma, el promedio, el número de filas, el valor
máximo, el valor mínimo, la desviación estándar, la varianza, entre otros.
Las funciones de agregación son útiles cuando necesitas resumir grandes conjuntos de datos en
información más manejable y significativa. Por ejemplo, si tienes una tabla de ventas con cientos
o miles de registros, puedes usar funciones de agregación para calcular el total de ventas, el
promedio de ventas por cliente, la cantidad total de productos vendidos, etc.
JSON_ARRAYAGG(expr): Retorna un array JSON que contiene una expresión no nula en cada fila
de un conjunto de resultados.
JSON_OBJECTAGG(key, value): Retorna un objeto JSON que contiene un par de clave/valor para
cada fila de un conjunto de resultados.
MySQL
MySQL
AGRUPACIONES
EJM: Según el tipo de documento mostrar cuantos de ellos existen por cada uno en la tabla
cliente.
MySQL
EJM: Según el tipo de documento mostrar cuantos de ellos existen por cada uno en la tabla
cliente siempre y cuando su número de documento sea mayor a 12366.
MySQL
SELECT tipodoc, count(telefono) FROM cliente WHERE numDocum>= 12366 GROUP BY
tipoDoc;
EJM: Según el tipo de documento mostrar cuantos de ellos existen por cada uno en la tabla
cliente siempre y cuando su número de documento sea mayor a 12366.
La cláusula HAVING en SQL se utiliza en combinación con la cláusula GROUP BY para filtrar grupos
de filas basándose en una condición específica. Mientras que la cláusula WHERE se utiliza para
filtrar filas individuales antes de que se realice una agrupación, la cláusula HAVING se utiliza para
filtrar grupos de filas después de que se haya realizado una agrupación.
MySQL
SELECT tipodoc, COUNT(telefono) FROM cliente GROUP BY tipoDoc HAVING
COUNT(telefono)>=2;
SUBCONSULTAS
Las subconsultas, también conocidas como consultas anidadas o consultas internas, son
consultas SQL que se incluyen dentro de una consulta más grande. Estas subconsultas se
ejecutan primero y luego se utilizan los resultados obtenidos en la consulta principal.
Las subconsultas pueden aparecer en varias partes de una consulta SQL, como en la cláusula
WHERE, la cláusula FROM, la cláusula SELECT o incluso en la cláusula HAVING. Su objetivo
principal es permitir realizar consultas más complejas y expresivas al permitir la combinación de
múltiples conjuntos de datos y realizar operaciones más avanzadas.
a. Por medio de una subconsulta mirar en la tabla cliente que tipo de documento estan 2
o más veces. Mostrar el tipo de documento y cuantas veces está.
MySQL
SELECT numdocum, tipodoc from CLIENTE WHERE tipodoc IN(SELECT tipodoc FROM cliente
GROUP BY tipodoc HAVING COUNT(tipodoc)>=2);
b. Por medio de una subconsulta mostrar los datos de la tabla ingresosalida donde el
total sea mayor al valor mas alto del idtarifa 1.
MySQL
c. Por medio de una subconsulta mostrar los datos de la tabla ingresosalida donde el
total sea mayor a algunos idtarifa 2.
MySQL
MySQL
EVIDENCIA 3
Realizar los siguientes ejercicios.
f. Por medio de una subconsulta mostrar los datos de la tabla ingresosalida donde el
total sea mayor a todos los idtarifa 2.
g. Por medio de una subconsulta mostrar los datos de la tabla ingresosalida donde el
total sea mayor al valor más bajo de la idtarifa 1.
VISTAS
En MySQL, las vistas son consultas predefinidas que se almacenan en la base de datos y se
comportan como tablas virtuales. Estas consultas se pueden utilizar como si fueran tablas
reales en otras consultas SELECT, lo que simplifica el acceso a datos complejos o utilizados
frecuentemente.
MySQL
CREATE VIEW info1 AS SELECT numdocum, cliente.tipodoc AS tcliente, nom, telefono,
tipodocum.tipodoc AS tipoDocumento FROM cliente INNER JOIN tipodocum ON
cliente.tipodoc=tipodocum.tipodoc;
MySQL
MySQL
MySQL
PROCEDIMIENTOS
En resumen, los procedimientos en MySQL son una característica poderosa que proporciona un
mecanismo flexible y eficiente para implementar lógica de negocio en la base de datos. Permiten
mejorar la organización del código, la seguridad, el rendimiento y la gestión de transacciones en
las aplicaciones.
DELIMITER $$: La delimitación se realiza para que no se cierre la creación del Trigger antes, si
se pone el punto y coma lo más probable es que se cierre.
CREATE PROCEDURE getingresosalida(): Se crea el procedimiento y se le da un nombre
BEGIN: inicia
END$$: Cierra la delimitación del procedimiento.
DELIMITER;: Delimita de nuevo con punto y coma.
MySQL
DELIMITER $$
CREATE PROCEDURE veringresosalida()
BEGIN
SELECT * FROM ingresoSalida;
END$$
DELIMITER ;
MySQL
CALL veringresosalida;
MySQL
DELIMITER $$
CREATE PROCEDURE getingresosalida(IN idEst INT)BEGIN
SELECT * FROM ingresoSalida WHERE idEstacionamiento=idEst;
END$$
DELIMITER ;
MySQL
CALL getingresosalida(4);
MySQL
DELIMITER $$
CREATE PROCEDURE saveMarca(IN idMarc Varchar(15))
BEGIN
INSERT INTO marca VALUES(idMarc);
SELECT CONCAT ("SON", COUNT(idMarc), "MARCAS") FROM marca;
END$$
DELIMITER ;
MySQL
MySQL
TRIGGERS O DISPARADORES
Los triggers, o disparadores en español, son objetos de la base de datos que se activan
automáticamente en respuesta a ciertos eventos en una tabla. Estos eventos pueden ser
operaciones como la inserción, actualización o eliminación de registros en la tabla. Los triggers
permiten ejecutar un conjunto de instrucciones SQL específicas, o "cuerpo del trigger", cuando
ocurre el evento definido.
Los triggers en MySQL son útiles para una variedad de tareas, incluyendo:
MySQL
CREATE TABLE Bitacora(id Int Auto_Increment Primary Key, Accion Varchar(100), fecha
Datetime);
DELIMITER $$: La delimitación se realiza para que no se cierre la creación del Trigger antes, si
se pone el punto y coma lo más probable es que se cierre.
CREATE TRIGGER saveBitacora: Crea el Trigger y se le da un nombre
AFTER: “DESPUES” Es diciendo le Trigger que se dispare después de realizada la acción.
INSERT ON marca: Se trabaja la inserción, actualización o eliminación y hay que especificar la
tabla.
BEGIN: Da inicio al código.
INSERT INTO: Se ingresa el Script de inserción, Actualización o Eliminación.
NEW.idMarc: Va a utilizar el nuevo dato.
NOW(): Función para dar la fecha y hora actual.
END$$: Se termina la delimitación.
DELIMITER ;: Se vuelve a la delimitación por punto y coma.
MySQL
DELIMITER $$
CREATE TRIGGER saveBitacora
AFTER INSERT ON marca
FOR EACH ROW
BEGIN
INSERT INTO bitacora (id, accion, fecha) VALUES(NULL, CONCAT("Se creo la marca:
",NEW.idMarc), NOW());
END$$
DELIMITER ;
MySQL
SHOW TRIGGERS
BORRAR TRIGGERS
MySQL
MySQL
DELIMITER $$
CREATE TRIGGER updBitacora
BEFORE UPDATE ON marca
FOR EACH ROW
BEGIN
INSERT INTO bitacora (id, accion, fecha) VALUES(NULL, CONCAT("Se modificó la marca: ",
OLD.idMarc, “ y se reemplazó con ”, NEW.idMarc), NOW());
END$$
DELIMITER ;
EVIDENCIA 4
1. Realizar 1 VISTA correspondiente a 1 de las tablas de la base de datos Parking.
2. Realizar 1 PROCEDIMIENTO correspondiente a 1 de las tablas de la base de datos
Parking.
3. Realizar 1 TRIGGER que cuando se realice una eliminación esta se guarde en la tabla
bitácora con su respectivo id, guarde un mensaje en acción que diga “Se eliminó la
marca: el dato eliminado”, en fecha la fecha en que se eliminó.