10 - Guía MySQL
10 - Guía MySQL
10 - Guía MySQL
BASES DE DATOS
CON MYSQL
GUÍA DE BASE DE DATOS
BASE DE DATOS
Una base de datos es un conjunto organizado de datos pertenecientes a un mismo
contexto y almacenados sistemáticamente para su posterior uso. Las bases de datos son
utilizadas para modelar un aspecto relevante de la realidad. En las bases de datos los
datos se almacenan de manera permanente, para luego ser procesados y transformados
en información.
• Compartir una base de datos: permite que varios usuarios y programas accedan a la
base de datos de forma simultánea.
1
• Mantenimiento: una gran base de datos típica puede tener un ciclo de vida de muchos
años, por lo que el DBMS debe ser capaz de mantener el sistema de bases de datos
permitiendo que el sistema evolucione según cambian los requisitos con el tiempo.
• Mayor seguridad (protección de los datos). Por ejemplo, resulta más fácil replicar una
base de datos para mantener una copia de seguridad que hacerlo con un conjunto de
ficheros almacenados de forma no estructurada. Además, al estar centralizado el
acceso a los datos, existe una verdadera sincronización de todo el trabajo que se haya
podido hacer sobre estos (modificaciones), con lo que esa copia de seguridad servirá a
todos los usuarios.
• Monousuario
• Multiusuario
2
MODELO RELACIONAL
El modelo relacional, para el modelado y la gestión de bases de datos, es un modelo de
datos basado en la lógica de predicados y en la teoría de conjuntos. Su idea fundamental
es el uso de relaciones. Estas relaciones podrían considerarse en forma lógica como
conjuntos de datos llamados tuplas. En general, se puede pensar en cada relación como si
fuese una tabla que está compuesta por registros (cada fila de la tabla sería un registro o
"tupla") y columnas (también llamadas "campos"). El modelo relacional es el más utilizado
en la actualidad para modelar problemas reales y administrar datos dinámicamente.
ENTIDAD
El elemento básico representado por el modelo entidad relación es una entidad, que es un
objeto del mundo real con una existencia independiente. Una entidad puede ser un
elemento con una existencia física (por ejemplo, una persona en particular, un coche, una
casa o un empleado) o puede ser un elemento con una existencia conceptual (por ejemplo,
una venta, un trabajo o un curso universitario). Cada entidad tiene atributos (propiedades
particulares que la describen).
ATRIBUTOS
Un atributo es una abstracción que identifica características, propiedades que posee una
entidad. Los atributos de una entidad deben ser:
• Completos: capturar toda la información que interesa del objeto, desde el punto de
vista del sistema.
IDENTIFICADOR ÚNICO
Se denomina identificador a uno o más atributos que identifican unívocamente cada
instancia de una entidad; es conocido también como "clave candidata". Es decir, nunca
puede existir dos instancias de una entidad con el mismo valor de su atributo identificador.
3
RELACIONES
Una relación es la abstracción de un conjunto de asociaciones que existen entre las
instancias de dos entidades, por ejemplo, existe una relación entre Película y PaisDeOrigen.
• Las relaciones existen ya que las entidades representan aspectos del mundo real y en
este mundo los componentes no están aislados, sino que se relacionan entre sí; es por
esto que es necesario que existan las relaciones entre las entidades.
SQL se usa para acceder, actualizar y manipular datos en una base de datos. Su diseño
permite la gestión de datos en un RDBMS, como MYSQL. El lenguaje SQL también se usa
para controlar el acceso a datos y para la creación y modificación de esquemas de Base
de datos. SQL utiliza los términos tabla, fila y columna para los términos relación, tupla y
atributo del modelo relacional formal, respectivamente. Por lo tanto, es posible utilizar
todos estos términos indistintamente.
1. Lenguaje de Definición de Datos (DDL): permite crear y definir nuevas bases de datos,
campos e índices.
campos.
determinado.
4
PASOS PARA IMPLEMENTAR UNA BASE DE DATOS
1. CREATE DATABASE
• Esta sentencia sirve para crear una base de datos con un nombre específico.
• Para poder crear una base de datos, el usuario que la crea debe tener privilegios de
creación asignados.
• IF NOT EXISTS significa: SI NO EXISTE, por lo tanto, esto es útil para validar que la
base de datos sea creada en caso de que no exista, si la base de datos existe y se
ejecuta esta sentencia, se genera un error.
5
2. CREATE TABLE
Ligaduras
• DEFAULT: Esta restricción asigna un valor específico a una columna cuando el valor
para ello no haya sido explícitamente proporcionado para tal columna en una
sentencia "INSERT" o de adición de un nuevo registro en la tabla.
• CHECK: Específica los valores de datos que el DBMS acepta le sean ingresados
para una columna.
Específica que, en una tabla o entidad, todas sus filas tengan un identificador único que
diferencie a una fila de otra y también que se establezcan columnas cuyo contenido es
un valor único que las hace llaves candidatas para un futuro como por ejemplo: número
de cédula, número de seguro social o cuenta de email.
• PRIMARY KEY: Este tipo de restricción se aplica a todas las filas permitiendo que
exista un identificador, que se conoce como llave primaria y que se asegura que los
usuarios no introduzcan valores duplicados. Además, asegura que se cree un índice
para mejorar el desempeño. Los valores nulos no están permitidos para este tipo de
restricción.
6
Tipo: Integridad Referencial
La Integridad Referencial asegura que las relaciones que existe entre llave primaria (en
la tabla referenciada) y la llave foránea (en las tablas referenciantes) serán siempre
mantenidas. Una fila o registro en la tabla referenciada (tabla donde reside la llave
primaria) no puede ser borrada o su llave primaria cambiada si existe una fila o registro
con una llave foránea (en la tabla referenciante) que se refiere a esa llave primaria.
La sentencia para eliminar una tabla y por ende todos los objetos asociados con esa tabla
es DROP TABLE, donde r es el nombre de una tabla existente.
DROP TABLE r
Modificación de Tablas
Después que una tabla ha sido utilizada durante algún tiempo, los usuarios suelen
descubrir que desean almacenar información adicional con respecto a las tablas. La
sentencia ALTER TABLE se utiliza sobre tablas que ya poseen desde cientos a miles de filas
por ser tablas de un sistema de Base de Datos que ya está en producción.
• RENAME TO nuevo_nombre
7
Los cambios que se pueden realizar con la sentencia SQL ALTER TABLE son:
• Añadir una definición de columna a una tabla. Puede crearse con valores nulos o con
valores.
• Eliminar una columna de la tabla. Pero antes de su eliminación deben ser eliminados
por ALTER TABLE todas las restricciones que estén definidas sobre esta columna.
• Definir una llave primaria para una tabla. La columna(s) a la cual se le dará esta
responsabilidad debe contener previamente valores únicos por fila.
• Definir una nueva llave foránea para una tabla. La columna a definir como llave foránea
debe contener previamente valores que corresponden a la llave primaria de otra tabla.
3. INSERT INTO
En su formato más sencillo, INSERT se utiliza para añadir una sola fila a una tabla.
Debemos especificar el nombre de la tabla y una lista de valores para la fila. Los valores
deben suministrarse en el mismo orden en el que se especificaron los atributos
correspondientes en el comando CREATE TABLE.
4. UPDATE
El comando UPDATE se utiliza para modificar los valores de atributo de una o más filas
seleccionadas. Una cláusula WHERE en el comando UPDATE selecciona las filas de
una tabla que se van a modificar. La sentencia UPDATE tiene la siguiente forma:
UPDATE nombre_tabla
SET col_nombre_1={valor1|DEFAULT} [,
col_nombre_2={valor2|DEFAULT}]
8
5. DELETE
El comando DELETE elimina filas de una tabla. Incluye una cláusula WHERE, para
seleccionar las filas que se van a eliminar.
• Las filas se eliminan explícitamente sólo de una tabla a la vez. Sin embargo, la
eliminación se puede propagar a filas de otras tablas si se han especificado opciones
de acciones referenciales en las restricciones de integridad referencial del DDL.
6. SELECT
FROM tablaOrigen
9
Cláusulas:
• SELECT: Se usa para listar las columnas de las tablas que se desean ver en el resultado
de una consulta. Además de las columnas se pueden listas columnas a calcular por el
SQL cuando actué la sentencia. Esta cláusula no puede omitirse.
• FROM: Lista las tablas que deben ser analizadas en la evaluación de la expresión de la
cláusula WHERE y de donde se listarán las columnas enunciadas en el SELECT. Esta
cláusula no puede omitirse.
• GROUP BY: especifica una consulta sumaria. En vez de producir una fila de resultados
por cada fila de datos de la base de datos, una consulta sumaria agrupa todas las filas
similares y luego produce una fila sumaria de resultados para cada grupo de los
nombres de columnas enunciado en esta cláusula. En otras palabras, esta cláusula
permitirá agrupar un conjunto de columnas con valores repetidos y utilizar las
funciones de agregación sobre las columnas con valores no repetidas. Esta cláusula
puede omitirse.
• HAVING: le dice al SQL que incluya sólo ciertos grupos producidos por la cláusula
GROUP BY en los resultados de la consulta. Al igual que la cláusula WHERE, utiliza una
condición de búsqueda para especificar los grupos deseados. La cláusula HAVING es
la encargada de condicionar la selección de los grupos en base a los valores
resultantes en las funciones agregadas utilizadas debidas que la cláusula WHERE
condiciona solo para la selección de filas individuales. Esta cláusula puede omitirse.
• ORDER BY: permitirá establecer la columna o columnas sobre las cuales las filas
resultantes de la consulta deberán ser ordenadas. Esta cláusula puede omitirse.
7. CREATE VIEW
Las vistas pueden considerarse como tablas virtuales. Generalmente hablando, una tabla
tiene un conjunto de definiciones, y almacena datos físicamente. Una vista también tiene
un conjunto de definiciones, que se construye en la patrte superior de la(s) tabla(s) u otra(s)
vista(s), y no almacena datos físicamente. La sintaxis para la creación de una vista es la
siguiente:
FROM nombre_tabla
WHERE condiciones;
10
• OR REPLACE: es opcional y si no se especifica esta cláusula y la vista ya existe, la
sentencia CREATE VIEW producirá un error.
• view_name: el nombre de la vista que se desea crear en MySQL.
• WHERE condiciones: es opcional. Las condiciones deben ser realizadas para los
registros a ser incluidos en la vista.
11
PREGUNTAS DE APRENDIZAJE
Las foreign keys son campos que vinculan una tabla con la clave ( ) ( )
primaria o externa de otra tabla.
El comando DROP se utiliza para eliminar todas las filas de una tabla. ( ) ( )
2. En una cláusula LIKE, ¿cómo se obtienen todos los nombres de personas que tienen
exactamente cuatro caracteres?
a) LIKE "????"
b) LIKE "____"
c) LIKE "...."
d) Las anteriores respuestas no son correctas
a) Todos los registros existentes en la tabla que no estén relacionados con otra tabla
b) Todos los registros existentes en la tabla
c) No se puede ejecutar una sentencia SELECT sin la cláusula WHERE
d) Las anteriores respuestas no son correctas
a) AVG()
b) FLOOR()
c) SUM()
d) Las anteriores respuestas no son correctas
12
5. En una cláusula LIKE, ¿cómo se obtienen todos los nombres de personas que
comienzan con "Juan"?
a) LIKE "Juan%"
b) LIKE "Juan*"
c) LIKE "Juan$"
d) LIKE "Juan&"
6. ¿Qué instrucción se emplea para eliminar todo el contenido de una tabla, pero
conservando la tabla?
a) DELETE TABLE
b) DROP TABLE
c) TRUNCATE TABLE
d) Las anteriores respuestas no son correctas
7. En SQL, para ordenar los datos devueltos por una sentencia SELECT se emplea la
cláusula.
a) ORDER BY
b) ORDERED BY
c) SORT BY
d) SORTED BY
8. ¿En cuál de las siguientes sentencias del lenguaje SQL se emplea la cláusula SET?
a) DELETE
b) DROP
c) SELECT
d) UPDATE
9. En SQL, para modificar la estructura de una tabla de una base de datos se emplea la
instrucción.
a) ALTER TABLE
b) CHANGE TABLE
c) MODIFY TABLE
d) Las anteriores respuestas no son correctas
a) COUNT()
b) LIMIT()
c) MAX()
d) MIN()
13
11. En SQL, ¿cuál de estas sentencias añade una fila a una tabla en una base de datos?
a) ADD
b) INSERT
c) UPDATE
d) INCLUDE
a) DELETE DATABASE
b) DROP DATABASE
c) ERASE DATABASE
d) Las anteriores respuestas no son correctas
13. En SQL, para eliminar las filas duplicadas del resultado de una sentencia SELECT se
emplea.
a) NO DUPLICATE
b) UNIQUE
c) DISTINCT
d) Las anteriores respuestas no son correctas
14. ¿Cuáles de las siguientes sentencias son ciertas sobre las vistas?
a) Una vista representa un subconjunto de los atributos de una tabla y que puede ser
diseñado para facilitar un caso en particular.
b) El manejo de permisos y otras tareas administrativas es mucho más fácil a través de
vistas que a través de tablas.
c) Una vista es utilizada para recuperación rápida de datos.
d) Una vista es una rápida descripción de una base de datos.
a) Integridad Referencial
b) Integridad de los registros
c) Integridad de las columnas
d) Constrainsts de identidad
14
EJERCICIOS DE APRENDIZAJE
PRIMEROS PASOS
1. Para llevar adelante la resolución de esta guía es necesario tener instalado el motor de
base datos MySQL, junto con una herramienta visual de diseño de bases de datos
llamada Workbench. Esta herramienta permite integrar el desarrollo de software, la
administración de bases de datos, el diseño de bases de datos, y la gestión y
mantenimiento para el sistema de base de datos MySQL.
MySQL Installer
MySQL Workbench
https://www.profesionalreview.com/2018/12/13/mysql-windows-10/
https://www.youtube.com/watch?v=myo0ZhJXw1k
https://www.youtube.com/watch?v=DxZfYDziQGE
https://www.youtube.com/watch?v=EVdUYI6Wxw4
15
VIDEO: Introducción Base de Datos
2. Crear una base de datos llamada superhéroes y seleccionarla como base de datos en
uso. Posteriormente, crear las tablas que se muestran en el siguiente modelo de
entidad relación:
Tabla creador
Tabla personajes
16
Una vez insertados todos los registros realizar una selección de todos los atributos para
corroborar que la tablas se encuentren completas.
3. Crear una base de datos llamada “personal” y crear las tablas que se muestran en el
siguiente modelo de entidad relación:
17
ü Obtener los datos de los empleados vendedores, ordenados por nombre
alfabéticamente.
ü Listar el nombre de los departamentos.
VIDEOS:
A) Tablas Relacionadas
B) Join Avanzados
C) Order by, Group by, Having
18
ü Mostrar la lista de los empleados cuyo salario es mayor o igual que el promedio
de la empresa. Ordenarlo por departamento.
ü Hallar los departamentos que tienen más de tres empleados. Mostrar el número
de empleados de esos departamentos.
ü Hallar los departamentos que no tienen empleados
ü Mostrar el nombre del departamento cuya suma de salarios sea la más alta,
indicando el valor de la suma de los salarios.
4. Abrir el script de la base de datos llamada “tienda.sql” y ejecutarlo para crear sus tablas
e insertar datos en las mismas. A continuación, generar el modelo de entidad relación.
Deberá obtener un diagrama de entidad relación igual al que se muestra a continuación:
ü Lista los nombres y los precios de todos los productos de la tabla producto.
ü Lista los nombres y los precios de todos los productos de la tabla producto,
convirtiendo los nombres a mayúscula.
ü Lista los nombres y los precios de todos los productos de la tabla producto,
redondeando el valor del precio.
ü Lista los nombres y los precios de todos los productos de la tabla producto,
truncando el valor del precio para mostrarlo sin ninguna cifra decimal.
19
ü Lista el código de los fabricantes que tienen productos en la tabla producto.
ü Lista el código de los fabricantes que tienen productos en la tabla producto, sin
mostrar los repetidos.
ü Lista los nombres de los productos ordenados en primer lugar por el nombre de
forma ascendente y en segundo lugar por el precio de forma descendente.
ü Lista el nombre y el precio del producto más barato. (Utilice solamente las cláusulas
ORDER BY y LIMIT)
ü Lista el nombre y el precio del producto más caro. (Utilice solamente las cláusulas
ORDER BY y LIMIT)
ü Lista el nombre de todos los productos del fabricante cuyo código de fabricante es
igual a 2.
ü Lista el nombre de los productos que tienen un precio menor o igual a $120.
ü Lista todos los productos que tengan un precio entre $80 y $300. Sin utilizar el
operador BETWEEN.
ü Lista todos los productos que tengan un precio entre $60 y $200. Utilizando el
operador BETWEEN.
ü Lista todos los productos donde el código de fabricante sea 1, 3 o 5. Sin utilizar el
operador IN.
ü Lista el nombre y el precio de los productos en céntimos (Habrá que multiplicar por
100 el valor del precio). Cree un alias para la columna que contiene el precio que se
llame céntimos.
ü Devuelve una lista con el nombre de todos los productos que contienen la cadena
Portátil en el nombre.
20
Consultas multitabla (Composición interna)
ü Devuelve una lista con el nombre del producto, precio y nombre de fabricante de
todos los productos de la base de datos. Ordene el resultado por el nombre del
fabricante, por orden alfabético.
ü Devuelve una lista con el código del producto, nombre del producto, código del
fabricante y nombre del fabricante, de todos los productos de la base de datos.
ü Devuelve una lista de todos los productos del fabricante Crucial que tengan un
precio mayor que $200.
ü Devuelve un listado con todos los productos de los fabricantes Asus, Hewlett-
Packardy Seagate. Sin utilizar el operador IN.
ü Devuelve un listado con todos los productos de los fabricantes Asus, Hewlett-
Packardy Seagate. Utilizando el operador IN.
Resuelva todas las consultas utilizando las cláusulas LEFT JOIN y RIGHT JOIN.
ü Devuelve un listado de todos los fabricantes que existen en la base de datos, junto
con los productos que tiene cada uno de ellos. El listado deberá mostrar también
aquellos fabricantes que no tienen productos asociados.
21
Subconsultas (En la cláusula WHERE)
ü Devuelve todos los productos del fabricante Lenovo. (Sin utilizar INNER JOIN).
ü Devuelve todos los datos de los productos que tienen el mismo precio que el
producto más caro del fabricante Lenovo. (Sin utilizar INNER JOIN).
ü Lista todos los productos del fabricante Asus que tienen un precio superior al precio
medio de todos sus productos.
ü Devuelve el producto más caro que existe en la tabla producto sin hacer uso de
MAX, ORDER BY ni LIMIT.
ü Devuelve el producto más barato que existe en la tabla producto sin hacer uso de
MIN, ORDER BY ni LIMIT.
22
Subconsultas (En la cláusula HAVING)
ü Devuelve un listado con todos los nombres de los fabricantes que tienen el mismo
número de productos que el fabricante Lenovo.
5. Abrir el script de la base de datos llamada “nba.sql” y ejecutarlo para crear todas las
tablas e insertar datos en las mismas. A continuación, generar el modelo de entidad
relación. Deberá obtener un diagrama de entidad relación igual al que se muestra a
continuación:
ü Mostrar el nombre de los jugadores que sean pivots (‘C’) y que pesen más de 200
libras, ordenados por nombre alfabéticamente.
23
ü Mostrar el nombre de los equipos del este (East).
ü Mostrar los equipos donde su ciudad empieza con la letra ‘c’, ordenados por
nombre.
ü Mostrar todos los jugadores y su equipo ordenados por nombre del equipo.
ü Mostrar todos los jugadores del equipo “Raptors” ordenados por nombre.
ü Mostrar los puntos por partido del jugador ‘Pau Gasol’ en la temporada ’04/05′.
ü Mostrar el nombre del equipo, conferencia y división del jugador más alto de la NBA.
ü Mostrar la suma de los puntos por partido de todos los jugadores españoles donde
el equipo donde juegan este en ‘Los Angeles’.
ü Mostrar los puntos de cada equipo en los partidos, tanto de local como de visitante.
24
EJERCICIOS COMPLEMENTARIOS
6. Abrir el script de la base de datos llamada “jardineria.sql” y ejecutarlo para crear todas
las tablas e insertar datos en las mismas. Deberá obtener un diagrama de entidad
relación igual al que se muestra a continuación:
25
A continuación, se deben realizar las siguientes consultas sobre la base de datos:
26
Consultas multitabla (Composición interna)
Resuelva todas las consultas utilizando las cláusulas LEFT JOIN, RIGHT JOIN, JOIN.
ü Devuelve un listado que muestre solamente los clientes que no han realizado
ningún pago.
ü Devuelve un listado que muestre solamente los clientes que no han realizado
ningún pedido.
ü Devuelve un listado que muestre los clientes que no han realizado ningún pago y
los que no han realizado ningún pedido.
ü Devuelve un listado que muestre solamente los empleados que no tienen una
oficina asociada.
ü Devuelve un listado que muestre solamente los empleados que no tienen un cliente
asociado.
ü Devuelve un listado que muestre los empleados que no tienen una oficina asociada
y los que no tienen un cliente asociado.
ü Devuelve un listado de los productos que nunca han aparecido en un pedido.
ü Devuelve las oficinas donde no trabajan ninguno de los empleados que hayan sido
los representantes de ventas de algún cliente que haya realizado la compra de
algún producto de la gama Frutales.
ü Devuelve un listado con los clientes que han realizado algún pedido pero no han
realizado ningún pago.
27
ü Devuelve un listado con los datos de los empleados que no tienen clientes
asociados y el nombre de su jefe asociado.
Consultas resumen
28
Subconsultas con operadores básicos de comparación
ü Devuelve un listado que muestre solamente los clientes que no han realizado
ningún pago.
ü Devuelve un listado que muestre solamente los clientes que sí han realizado ningún
pago.
ü Devuelve un listado de los productos que nunca han aparecido en un pedido.
ü Devuelve un listado de los productos que han aparecido en un pedido alguna vez.
29
7. Importar el script de la base de datos llamada “pokemondb.sql” y ejecutarlo para crear
todas las tablas e insertar los registros en las mismas. A continuación, generar el
modelo de entidad relación y reorganizar las tablas para mayor claridad de sus
relaciones. Deberá obtener un diagrama de entidad de relación similar al que se
muestra a continuación:
30
ü Mostrar todos los pokemon que evolucionan por piedra.
ü Mostrar todos los pokemon que no pueden evolucionar.
ü Mostrar la cantidad de los pokemon de cada tipo.
31