BASE DE DATOS
Prof. Rafael A. Díaz B.
Universidad de Panamá
Centro Regional de San Miguelito
BASE DE DATOS
Evaluación
Parciales (2) 20%
Asignaciones 15%
Talleres 10 %
Investigación 20%
Semestral 35%
BASE DE DATOS
BASE DE DATOS
Nombre de la Tabla
Nombre de la
Tabla
Nombre de la
Nombre de la Tabla
Tabla
BASE DE DATOS
Caso 1
“Una empresa vende productos a varios clientes. Se necesita conocer los datos
personales de los clientes (nombre, apellidos, dni, dirección y fecha de nacimiento).
Cada producto tiene un nombre y un código, así como un precio unitario. Un cliente
puede comprar varios productos a la empresa, y un mismo producto puede ser
comprado por varios clientes. Los productos son suministrados por diferentes
proveedores. Se debe tener en cuenta que un producto sólo puede ser suministrado
por un proveedor, y que un proveedor puede suministrar diferentes productos. De
cada proveedor se desea conocer el NIF, nombre y dirección”.
BASE DE DATOS
Cliente
Producto
Proveedor
BASE DE DATOS
Compra
Debe aparecer los nombre de los
campos que conforman la tabla
N N
1:N 1:N
Cliente Producto
Debe aparecer los nombre de los Debe aparecer los nombre de los
campos que conforman la tabla 1 1 campos que conforman la tabla
Proveedor
1:N
Debe aparecer los nombre de los
campos que conforman la tabla 1
BASE DE DATOS
Caso 2
“Se desea informatizar la gestión de una empresa de transportes que reparte
paquetes por toda España. Los encargados de llevar los paquetes son los camioneros,
de los que se quiere guardar el dni, nombre, teléfono, dirección, salario y población en
la que vive. De los paquetes transportados interesa conocer el código de paquete,
descripción, destinatario y dirección del destinatario. Un camionero distribuye muchos
paquetes, y un paquete sólo puede ser distribuido por un camionero. De las provincias
a las que llegan los paquetes interesa guardar el código de provincia y el nombre. Un
paquete sólo puede llegar a una provincia. Sin embargo, a una provincia pueden llegar
varios paquetes. De los camiones que llevan los camioneros, interesa conocer la
matrícula, modelo, tipo y potencia. Un camionero puede conducir diferentes camiones
en fechas diferentes, y un camión puede ser conducido por varios camioneros”.
BASE DE DATOS
Compra
Cliente
Producto
Proveedor
BASE DE DATOS
Compra
Cliente
Producto
Proveedor
BASE DE DATOS
Compra
Cliente
Producto
Proveedor
BASE DE DATOS
Caso 3
“Se desea diseñar la base de datos de un Instituto. En la base de datos se desea
guardar los datos de los profesores del Instituto (DNI, nombre, dirección y teléfono).
Los profesores imparten módulos, y cada módulo tiene un código y un nombre. Cada
alumno está matriculado en uno o varios módulos. De cada alumno se desea guardar
el nº de expediente, nombre, apellidos y fecha de nacimiento. Los profesores pueden
impartir varios módulos, pero un módulo sólo puede ser impartido por un profesor.
Cada curso tiene un grupo de alumnos, uno de los cuales es el delegado del grupo”
BASE DE DATOS
Compra
Estudiante
s Modulos
Profesore
s
BASE DE DATOS
Compra
Cliente
Producto
Proveedor
BASE DE DATOS
Compra
Cliente
Producto
Proveedor
BASE DE DATOS
Caso 4
Se desea diseñar una base de datos para almacenar y gestionar la información
empleada por una empresa dedicada a la venta de automóviles, teniendo en cuenta
los siguientes aspectos: La empresa dispone de una serie de coches para su venta. Se
necesita conocer la matrícula, marca y modelo, el color y el precio de venta de cada
coche. Los datos que interesa conocer de cada cliente son el NIF, nombre, dirección,
ciudad y número de teléfono: además, los clientes se diferencian por un código
interno de la empresa que se incrementa automáticamente cuando un cliente se da de
alta en ella. Un cliente puede comprar tantos coches como desee a la empresa. Un
coche determinado solo puede ser comprado por un único cliente. El concesionario
también se encarga de llevar a cabo las revisiones que se realizan a cada coche. Cada
revisión tiene asociado un código que se incrementa automáticamente por cada
revisión que se haga. De cada revisión se desea saber si se ha hecho cambio de filtro,
si se ha hecho cambio de aceite, si se ha hecho cambio de frenos u otros. Los coches
pueden pasar varias revisiones en el concesionario”.
BASE DE DATOS
Compra
Cliente
Producto
Proveedor
BASE DE DATOS
SISTEMA GESTOR DE BASE DE DATOS (SGBD)
BASE DE DATOS
BASE DE DATOS
BASE DE DATOS
BASE DE DATOS
Lenguaje de Definición de Datos
Un lenguaje de definición de datos (Data Definition Language, DDL por sus siglas en
inglés) es un lenguaje proporcionado por el sistema de gestión de base de datos que
permite a los usuarios de la misma llevar a cabo las tareas de definición de las
estructuras que almacenarán los datos así como de los procedimientos o funciones
que permitan consultarlos.
Las principales funcionalidades de SQL como lenguaje de definición (DDL) son la
creación, modificación y borrado de las tablas que componen la base de datos, así
como de los índices, vistas, sinónimos, permisos, etc. que pudieran definirse sobre las
mismas. Este documento introduce los comandos para el trabajo básico con tablas.
○ CREATE TABLE: Crear una tabla
○ USE TABLE: Busca y se posiciona en la tabla que vamos a utilizar
○ SHOW TABLES: mostrar tablas
○ DROP TABLE<nombre de tabla>: Borrar tabla
○ DESCRIBE <nombre de tabla> Mostrar estructura de una tabla
Estas instrucciones se pueden utilizar para crear y manipular una Base de Datos
BASE DE DATOS
Sentencias del Lenguaje DDL de SQL en Mysql
Sentencia que crea una Base de Datos
CREATE DATABASE IF NOT EXISTS nombre_BD CHARACTER SET = utf8mb4
CALLATE = utf8mb4_spanish2_ci
ALTER DATABASE nombre_BD CHARACTER SET = utf8mb4 COLLATE =
utf8mb4_spanish2_ci
Sentencia para consultar las Bases de Datos que están creadas
show databases
Sentencia que permite ubicarse en la Base de Datos
USE nombre_tabla;
Borrar una tabla en la Base de Datos
DROP nombre_BD
BASE DE DATOS
BASE DE DATOS
BASE DE DATOS
BASE DE DATOS
BASE DE DATOS
BASE DE DATOS
BASE DE DATOS
BASE DE DATOS
Sentencias del Lenguaje DDL de SQL en Mysql
Sentencia que crea una Tabla
CREATE TABLE IF NOT EXISTS `pedidos_a` (
`num_pedido` int(11) COLLATE utf8_spanish2_ci NOT NULL,
`clie` int(11) COLLATE utf8_spanish2_ci NOT NULL,
`rep` int(11) COLLATE utf8_spanish2_ci DEFAULT NULL,
`fab` char(3) COLLATE utf8_spanish2_ci NOT NULL,
`producto` char(5) COLLATE utf8_spanish2_ci NOT NULL,
`cant` int(11) COLLATE utf8_spanish2_ci NOT NULL,
`importe` int(11) COLLATE utf8_spanish2_ci NOT NULL,
`fecha_pedido` int(11) COLLATE utf8_spanish2_ci NOT NULL,
PRIMARY KEY (`num_pedido`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_spanish2_ci
BASE DE DATOS
BASE DE DATOS
Sentencias del Lenguaje DDL de SQL en Mysql
Sentencia que crea una Tabla
CREATE TABLE IF NOT EXISTS `pedidos_b` (
`num_pedido` int(11) COLLATE utf8_spanish2_ci NOT NULL,
`clie` int(11) COLLATE utf8_spanish2_ci NOT NULL,
`rep` int(11) COLLATE utf8_spanish2_ci DEFAULT NULL,
`fab` char(3) COLLATE utf8_spanish2_ci NOT NULL,
`producto` char(5) COLLATE utf8_spanish2_ci NOT NULL,
`cant` int(11) COLLATE utf8_spanish2_ci NOT NULL,
`importe` int(11) COLLATE utf8_spanish2_ci NOT NULL,
`fecha_pedido` int(11) COLLATE utf8_spanish2_ci NOT NULL,
PRIMARY KEY (`num_pedido`),
FOREIGN KEY pedidos_b(clie) REFERENCES clientes(clie) ON DELETE CASCADE
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_spanish2_ci
BASE DE DATOS
BASE DE DATOS
Para cambiar el nombre de una tabla
ALTER TABLE nombre actual de Tabla RENAME nombre que se desea poner a la tabla;
RENAME TABLE caso_3 TO caso3
Para borrar el nombre de un campo de una tabla
ALTER TABLE nombre de la tabla DROP nombre del campo que se desea borrar
Se pueden borrar dos campos de una tabla colocando la sentencia “DROP” separados por (,)
ALTER TABLE nombre de la tabla DROP nombre del campo que se desea borrar, DROP nombre del
segundo campo que se desea borrar
Para agregar un campo en una Tabla de la Base de Datos
ALTER TABLE creditos ADD semestre VARCHAR(2) NOT NULL CHECK(semestre <= 2) COLLATE
utf8mb4_spanish2_ci
Para renombrar un campo de la tabla
ALTER TABLE creditos CHANGE COLUMN semestre año VARCHAR(2) NOT NULL
CHECK(semestre <= 2) COLLATE utf8mb4_spanish2_ci
Para cambiar la especificación de los campos en la tabla
ALTER TABLE creditos MODIFY COLUMN año DATE NOT NULL COLLATE utf8mb4_spanish2_ci
BASE DE DATOS
Para vaciar una tabla
TRUNCATE TABLE usuarios
Insertar Datos en una tabla
INSERT INTO «Nombre_Tabla» («columna1», «columna2», etc) VALUES («Dato1», «Dato2», etc);
Ejemplo
INSERT INTO Alumnos (Id, Nombre, Apellido, Direccion, Fecha_nacimiento)
VALUES ('0101', 'Franklin', 'Garcia', 'avenida 01', '12/01/80')
Insertar varios registros
INSERT INTO Alumnos (Id, Nombre, Apellido, Direccion, Fecha_nacimiento)
VALUES ('0104', 'Franklin2', 'Garcia', 'avenida 01', '12/01/80'), ('0105', 'Franklin3', 'Garcia', 'avenida 01', '12/01/80')
BASE DE DATOS
Consultar campos dentro de una tabla
SELECT ListaColumnas FROM Nombre_Tabla
Ejemplo
Consultar algunos campos de la tabla
SELECT Nombre, Apellido, Direccion, Fecha_nacimiento FROM Alumnos
Consultar todos los campos de la Tabla
SELECT * FROM Alumnos
El “*” significa que queremos obtener los datos de todos los campos de la tabla.
BASE DE DATOS
La cláusula where permite especificar una condición que tiene que cumplirse con los registros de uno o varios
campos que especifiquemos, de tal manera que los datos que se encuentren dentro de las condiciones, se incluirán en
los resultados de la consulta que realicemos.
La cláusula where se utiliza en los casos que no requerimos que devuelvan todos los registros de una tabla, sino que
unicamente los datos que cumplan ciertas condiciones.
Las condiciones son expresiones lógicas a comprobar posterior a la cláusula where, el valor que devolverá la
comparación será un valor TRUE o FALSE, en virtud al cumplimiento de la condición especificada. Se puede hacer uso
de cualquier expresión lógica y en ella implementar algún operador de los siguientes:
> “Mayor”
>= “Mayor o igual”
< “Menor”
<= “Menor o igual”
= “Igual” <> o != “Distinto”
IS [NOT] NULL “para validar si el valor de una columna no es nulo, es decir, si contiene o no contiene algún registro”
BASE DE DATOS
Consultar campos dentro de una tabla
SELECT ListaColumnas FROM Nombre_Tabla
Ejemplo
Consultar algunos campos de la tabla
SELECT Nombre, Apellido, Direccion, Fecha_nacimiento FROM Alumnos
Consultar todos los campos de la Tabla
SELECT * FROM Alumnos
El “*” significa que queremos obtener los datos de todos los campos de la tabla.
Se puede hacer un select, asociando dos tablas.
BASE DE DATOS
Para crear Usuarios y dar Privilegios sobre las tablas de la Base de Datos
CREATE USER 'nuevo_usuario'@'localhost' IDENTIFIED BY 'contraseña'
Para darle todos los privilegios del Usuario root
GRANT ALL PRIVILEGES ON * . * TO 'nuevo_usuario'@'localhost'
Para que los cambios tengan efecto inmediatamente
FLUSH PRIVILEGES
Estos son los comandos más utilizados en MySQL para manipulación de los datos en la tablas de la
Base de Datos:
● CREATE: Permite a los usuarios crear una base de datos o una tabla.
● SELECT: Permite a los usuarios recuperar datos.
● INSERT: Permite a los usuarios agregar nuevas entradas en las tablas.
● UPDATE: Permite a los usuarios modificar entradas existentes en tablas.
● DELETE: Permite a los usuarios borrar entradas de la tabla.
● DROP: Permite a los usuarios eliminar tablas de bases de datos completas.
BASE DE DATOS
Aquí se incluye una breve lista de otros posibles permisos comunes que los usuarios pueden
disfrutar.
● ALL PRIVILEGES: Como vimos antes, esto le otorgaría a un usuario de MySQL acceso
completo a una base de datos designada (o si no se selecciona ninguna base de datos,
acceso global a todo el sistema).
● CREATE: Permite crear nuevas tablas o bases de datos.
● DROP: Permite eliminar tablas o bases de datos.
● DELETE: Permite eliminar filas de las tablas.
● INSERT: Permite insertar filas en las tablas.
● SELECT: Les permite usar el comando SELECT para leer las bases de datos.
● UPDATE: Permite actualizar las filas de las tablas.
● GRANT OPTION: Permite otorgar o eliminar privilegios de otros usuarios.
BASE DE DATOS
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'
CREATE USER 'rafaeld'@'localhost' IDENTIFIED BY '1234567'
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost'
GRANT ALL PRIVILEGES ON *.* TO 'rafael'@'localhost'
FLUSH PRIVILEGES
GRANT type_of_permission ON database_name.table_name TO
'username'@'localhost';
GRANT select ON [Link] TO 'rafael'@'localhost'
BASE DE DATOS
BASE DE DATOS