0% encontró este documento útil (0 votos)
13 vistas20 páginas

Material MySQL

El documento describe los diferentes tipos de comandos utilizados en bases de datos relacionales como SQL, incluyendo DDL, DML y DQL. También explica conceptos como tablas, claves primarias, claves foráneas y relaciones. Se proporcionan ejemplos de comandos SQL para crear bases de datos y tablas.

Cargado por

Danny
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
13 vistas20 páginas

Material MySQL

El documento describe los diferentes tipos de comandos utilizados en bases de datos relacionales como SQL, incluyendo DDL, DML y DQL. También explica conceptos como tablas, claves primarias, claves foráneas y relaciones. Se proporcionan ejemplos de comandos SQL para crear bases de datos y tablas.

Cargado por

Danny
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 20

Contenido

.....................................................................................................................................................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

WAMP SERVER: https://www.youtube.com/watch?v=AOkJDyUUAoo

Posible problema WAMP SERVER: https://www.youtube.com/watch?v=MZOPA4cbPeE

ARRANCAR MYSQL EN CONSOLA EN WAMP:


https://www.youtube.com/watch?v=JIvwgd3GAas

XAMPP: https://www.youtube.com/watch?v=a4EUpiPcfWs

ARRANCAR MYSQL EN CONSOLA EN XAMPP: https://www.youtube.com/watch?v=iQDS-


nCkXgE

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.

Las características principales del modelo relacional son las siguientes:

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

DDL (Data Definition Language - Lenguaje de Definición de Datos):


Los comandos DDL se utilizan para definir y modificar la estructura de la base de datos, como
crear (CREATE TABLE), modificar (ALTER TABLE) o eliminar (DROP TABLE) tablas y otros objetos
de base de datos.

DML (Data Manipulation Language - Lenguaje de Manipulación de Datos):


Los comandos DML se utilizan para manipular datos en la base de datos, como insertar (INSERT
INTO), actualizar (UPDATE) y eliminar (DELETE) registros en una tabla.
DQL (Data Query Language - Lenguaje de Consulta de Datos):
Los comandos DQL se utilizan para realizar consultas y recuperar datos de la base de datos
(SELECT).
DDL CREAR BASE DE DATOS

CREATE DATABASE: Comando para crear la base de datos.


Parking: nombre de la base de datos. No puede iniciar con número, no puede poseer la letra
“ñ”, símbolos diferentes a “_”, no puede haber 2 bases de datos con el mismo nombre.

MySQL

CREATE DATABASE parking

SHOW DATABASES: Permite ver las bases de datos creadas.

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;

DROP DATABASE parking: Comando para eliminar la base de datos.

DDL CREAR TABLA SIN CLAVES FORANEAS

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.

CREATE TABLE: Comando para crear tabla.

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

CREATE TABLE tipoDocum(


tipoDoc VARCHAR(5) PRIMARY KEY
) ENGINE=InnoDB;
SHOW TABLES: Permite ver las tablas creadas en la base de datos.

DESCRIBE parking: Muestra los campos con sus características de una tabla.

MySQL

DESCRIBE parking

DDL ELIMINAR CLAVE PRIMARIA

ALTER TABLE: Comando para agregar o modificar campos en una tabla.

DROP PRIMARY KEY: Elimina la clave primaria

MySQL
ALTER TABLE tipoDocum
DROP PRIMARY KEY;

DDL CREAR CLAVE PRIMARIA DESPUES DE CREAR LA TABLA

MySQL
ALTER TABLE tipoDocum
ADD PRIMARY KEY (tipoDoc);

DDL MODIFICAR ESTRUCTURA DE LA TABLA

ALTER TABLE: Comando para agregar o modificar campos en una tabla.

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

ALTER TABLE tipoDocum


ADD extra int;

DDL ELIMINAR TABLA

MySQL

DROP TABLE tipodocum;


DDL ELIMINAR LA TOTALIDAD DE REGISTROS DE UNA TABLA

TRUNCATE TABLE: Comando para eliminar la totalidad de los datos que hay en una tabla.
tipoDocum: Tabla elegida para borrar los datos.

MySQL

TRUNCATE TABLE tipodocum;

DDL ELIMINAR TABLA

DROP TABLE: Comando para eliminar tabla.


tipoDocum: Tabla a eliminar.

MySQL

DROP TABLE tipodocum;

DDL CREAR TABLA CON CLAVES FORANEAS

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;

DDL ELIMINAR CLAVE FORANEA

SHOW CREATE TABLE cliente: Muestra el constraint que tiene esa clave foránea.

MySQL

SHOW CREATE TABLE cliente;

DROP FOREIGN KEY: Comando para borrar Foreign Key.


cliente_ibfk_1: Nombre del Index.

MySQL

ALTER TABLE cliente DROP FOREIGN KEY cliente_ibfk_1;


MySQL

DROP INDEX tipoDoc ON cliente;

DDL CREAR CLAVE FORANEA DESPUES DE CREAR LA TABLA


MySQL
ALTER TABLE cliente
ADD FOREIGN KEY(tipoDoc) REFERENCES tipoDocum(tipoDoc);

DML INSERTAR REGISTROS A UNA TABLA


La inserción de datos se sugiere hacer después de creadas todas las tablas con sus respectivas
relaciones y se deben iniciar por las tablas que no tienen foráneas

Si se van a ingresar los datos de todos los campos de una tabla se hace lo siguiente:

INSERT INTO: Comando para insertar datos en la tabla.

tipoDocum: Nombre de la tabla en la que se trabajará.

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

INSERT INTO cliente(numDocum, tipoDoc, telefono) VALUES(12343, "RC", 67899);

DQL CONSULTAR DATOS


La consulta de datos nos sirve para ver qué datos hay en este momento en cada una de
nuestras tablas.

SELECT *: Este comando nos permite ver todos los datos de todos los campos de una tabla.

FROM tipoDocum: Este comando permite elegir la tabla a consultar.


MySQL

SELECT * FROM tipoDocum

SELECT nom, teléfono: Este comando permite hacer una consulta mostrando solo algunos de
los campos de la tabla.

MySQL

SELECT nom, telefono FROM tipoDocum

WHERE: Comando para realizar una búsqueda condiconada.


numDocum=12365: El nombre del campo y la condición que debe cumplir. Se pueden usar los
signos de comparación (=, >, >=, <, <=, !=).

MySQL

SELECT * FROM cliente WHERE numDocum=12365;

&&: 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

SELECT * FROM cliente WHERE numDocum=12365 && telefono >=67891;

ORDER BY: Comando para generar el tipo de orden.


numDocum: Campo por el cual se va a ordenar.
ASC: En orden ASCENDENTE

MySQL

SELECT * FROM cliente ORDER BY numDocum ASC;

DESC: En orden DESCENDENTE

MySQL

SELECT * FROM cliente ORDER BY numDocum DESC;

CONCAT: Une 2 o mas columnas de la tabla.


IF: Permite realizar una consulta condicionada y arrojar el resultado que corresponde.
LIMIT: Limita la cantidad de datos a presentar.

MySQL
SELECT idestacionamiento, CONCAT(numdocum," ", placa), IF(numdocum>12364, "Bueno",
"Malo") FROM ingresosalida LIMIT 3;
(numDocum*idTarifa):Campo Calculado.

MySQL

SELECT idestacionamiento, (numDocum*idTarifa) AS Multiplicacion FROM ingresosalida;

DML ACTUALIZAR REGISTROS

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.

UPDATE: Comando para actualizar

Cliente: Nombre de la tabla a actualizar.

SET: Comando para asignar el campo a actualizar.

nom="Pablo": Campo y el dato que se va a ingresar o a actualizar.

NOTA: Si no se condiciona con el WHERE el sistema procede a actualizar todos los registros en
el mismo campo.

MySQL

UPDATE cliente SET nom="Pablo" WHERE numDocum=12343;

DML ELIMINAR REGISTROS

MySQL

DELETE FROM cliente WHERE numDocum=12343;

EVIDENCIA 2
En la figura 1 encontramos el modelo relacional correspondiente a un sistema de parqueadero,
la evidencia consiste en lo siguiente:

1. Ingresar a la consola de MySQL.


2. Crear la base de datos con el nombre de parking.
3. Crear cada una de las tablas con sus respectivos campos, tipos de campos, si son algún
tipo de clave.
4. Crear las correspondientes relaciones.

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.

Lineamientos generales para la entrega de la evidencia:


Producto para entregar: Documento con los Script utilizados, Archivo .sql.
Formato: PDF o Word y .sql.
Extensión: libre.

DQL CONSULTAS MULTITABLA


Inner Join: es una forma de realizar una consulta con múltiples tablas y adquirir de ellas los
datos necesarios.

cliente.tipodoc: cliente representa la tabla donde se encuentra el campo tipodoc. Se escribe el


nombre de la tabla ya que hay 2 campos que llevan el mismo nombre.
AS: Este comando hace que se le pueda poner un alias a este campo.

Inner Join: es una forma de realizar una consulta con múltiples tablas y adquirir de ellas los
datos necesarios.

ON: Es donde comenzamos a relacionar las distintas tablas a traer.

MySQL

SELECT numdocum, cliente.tipodoc AS tcliente, nom, telefono, tipodocum.tipodoc AS


tipoDocumento FROM cliente INNER JOIN tipodocum ON Cliente.tipodoc=tipodocum.tipodoc;

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.

AVG(): Calcula el promedio de los valores en un conjunto de resultados.

COUNT(): Cuenta el número de filas en un conjunto de resultados.

MAX(): Encuentra el valor máximo en un conjunto de resultados.

MIN(): Encuentra el valor mínimo en un conjunto de resultados.

SUM(): Calcula la suma de los valores en un conjunto de resultados.

BIT_AND(): Devuelve la operación AND de todos los bits en un conjunto de valores.

BIT_OR(): Devuelve la operación OR de todos los bits en un conjunto de valores.

BIT_XOR(): Devuelve la operación XOR de todos los bits en un conjunto de valores.

COUNT(DISTINCT expr, [expr...]): Cuenta el número de valores distintos en un conjunto de


resultados.

GROUP_CONCAT(expr, [expr...]): Concatena los valores de una columna en un solo string,


opcionalmente separados por un delimitador y ordenados según se especifique.

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.

STDDEV_POP(): Calcula la desviación estándar de una población completa.

STDDEV_SAMP(): Calcula la desviación estándar de una muestra de una población.

VAR_POP(): Calcula la varianza de una población completa.

VAR_SAMP(): Calcula la varianza de una muestra de una población.

EJM: Mostrar cuanto registro hay en la tabla cliente

MySQL

SELECT COUNT(*) FROM cliente;

EJM: Mostrar el promedio de los teléfonos en la tabla cliente

MySQL

SELECT AVG(telefono) FROM cliente;

AGRUPACIONES

La agrupación en MySQL se refiere al proceso de combinar filas de datos en grupos basados en


los valores de una o más columnas, y luego aplicar funciones de agregación a cada grupo para
calcular resúmenes o resultados sobre los datos dentro de cada grupo.

EJM: Según el tipo de documento mostrar cuantos de ellos existen por cada uno en la tabla
cliente.

GROUP BY tipoDoc: Este comando agrupa la consulta por tipo de documento.

MySQL

SELECT tipodoc, COUNT(telefono) AS TOTAL FROM cliente 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.
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.

HAVING COUNT(telefono)>=2: Realiza el filtro por medio de la agregació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

SELECT * FROM ingresosalida WHERE total>ALL(SELECT MAX(total) FROM ingresosalida


WHERE idtarifa=1);

c. Por medio de una subconsulta mostrar los datos de la tabla ingresosalida donde el
total sea mayor a algunos idtarifa 2.

MySQL

SELECT * FROM ingresosalida WHERE total>ANY(SELECT total FROM ingresosalida WHERE


idtarifa=2);
d. Por medio de una subconsulta mostrar los datos de la tabla ingresosalida donde el
total sea mayor a todos idtarifa 2.

MySQL

SELECT * FROM ingresosalida WHERE total>ALL(SELECT total FROM ingresosalida WHERE


idtarifa=2);

EVIDENCIA 3
Realizar los siguientes ejercicios.

e. Mostrar el idestacionamiento, el número de documento, el nombre del cliente y el


total siempre y cuando el total este por encima del mayor de los totales de los clientes
cuyo nombre inicie por A.

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.

Lineamientos generales para la entrega de la evidencia:


Producto para entregar: Documento con los Script utilizados.
Formato: PDF o Word.
Extensión: libre.

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.

CREATE VIEW info1: Crea la vista con el nombre info1.

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

SELECT * FROM info1;


SHOW FULL TABLES WHERE table_type: Permite ver el listado de vistas que hay en la base de
datos.

MySQL

SHOW FULL TABLES WHERE table_type="VIEW";

DROP VIEW IF EXIST: Elimina la vista que desee.

MySQL

DROP VIEW IF EXIST info1;

PROCEDIMIENTOS

Los procedimientos en MySQL son secuencias de comandos SQL almacenadas en el servidor de


la base de datos que pueden ser invocadas y ejecutadas en cualquier momento. Tienen varios
propósitos y beneficios:

1. Reutilización de Código: Los procedimientos permiten encapsular lógica de


negocio compleja o frecuentemente utilizada en un solo lugar. Esto promueve la
reutilización del código y evita la duplicación de lógica en múltiples partes de una
aplicación.
2. Mejora de la Organización: Al agrupar comandos SQL relacionados en un
procedimiento, se mejora la organización y mantenimiento del código. Los
procedimientos facilitan la gestión de la lógica de negocio, especialmente en
aplicaciones con muchas consultas y operaciones complejas.
3. Mayor Seguridad: Los procedimientos pueden ayudar a mejorar la seguridad al
restringir el acceso directo a las tablas y datos subyacentes. Los usuarios pueden
interactuar con la base de datos solo a través de los procedimientos definidos, lo que
limita la exposición de datos sensibles.
4. Optimización del Rendimiento: Al ejecutarse en el servidor de la base de datos,
los procedimientos pueden optimizar el rendimiento al minimizar el tráfico de red y la
sobrecarga asociada con la transferencia de datos entre el cliente y el servidor.
5. Transacciones y Control de Concurrencia: Los procedimientos pueden incluir
múltiples operaciones SQL dentro de una transacción, lo que garantiza la consistencia
de los datos y proporciona un mayor control sobre la concurrencia en entornos
multiusuario.

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;

PROCEDIMEINTO CON ENTRADA

IN: El procedimiento es de entrada.


idEst INT: El nombre de un campo de entrada con su respectivo tipo de campo.

MySQL
DELIMITER $$
CREATE PROCEDURE getingresosalida(IN idEst INT)BEGIN
SELECT * FROM ingresoSalida WHERE idEstacionamiento=idEst;
END$$
DELIMITER ;

MySQL

CALL getingresosalida(4);

PROCEDIMEINTO PARA INSERCION DE DATOS

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 ;

SHOW PROCEDURE STATUS WHERE Db=: Permite ver el listado de procedimientos.

MySQL

SHOW PROCEDURE STATUS WHERE Db="Parking";


DROP PROCEDURE IF EXISTS: borra el procedimiento que desee.

MySQL

DROP PROCEDURE IF EXISTS getingresosalida;

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:

1. Mantenimiento de integridad de datos: Los triggers pueden utilizarse para


garantizar la integridad de los datos en la base de datos. Por ejemplo, puedes utilizar
un trigger para validar ciertos campos antes de que se inserten o actualicen en una
tabla.
2. Auditoría de datos: Los triggers pueden registrar automáticamente los cambios en
una tabla, lo que permite llevar un registro de quién ha modificado los datos y cuándo.
3. Automatización de tareas: Los triggers pueden automatizar tareas repetitivas en
la base de datos. Por ejemplo, puedes utilizar un trigger para actualizar
automáticamente un campo en una tabla cuando se insertan o actualizan registros en
otra tabla.
4. Aplicación de reglas de negocio: Los triggers pueden aplicar reglas de negocio
complejas en la base de datos, asegurando que ciertas condiciones se cumplan antes de
que se realicen ciertas operaciones.

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 ;

MOSTRAR EL LISTADO DE TRIGGERS

MySQL

SHOW TRIGGERS

BORRAR TRIGGERS

MySQL

DROP TRIGGER savebitacora;

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ó.

También podría gustarte