Base
Base
Base
bases de datos relacionales. Permite realizar consultas y operaciones para recuperar, manipular y
administrar datos de manera eficiente. A continuación, se conceptualizan las siguientes temáticas
en SQL:
Consultas condicionales:
Las consultas condicionales en SQL permiten filtrar los resultados basándose en ciertas
condiciones específicas. Esto se logra utilizando la cláusula WHERE en las sentencias SELECT,
UPDATE, DELETE o INSERT. Por ejemplo, una consulta condicional podría seleccionar solo los
registros de una tabla donde el valor de una columna sea mayor que cierto valor o que cumpla con
otros criterios definidos. Ejemplo:
Vistas:
Las vistas en SQL son consultas predefinidas que se almacenan en la base de datos y actúan como
tablas virtuales. Estas vistas pueden contener datos de una o más tablas y se utilizan para
simplificar consultas complejas, proporcionar una capa de abstracción sobre los datos y controlar
el acceso a los datos. Por ejemplo, una vista puede ser creada para mostrar solo ciertas columnas
de una tabla o para combinar datos de múltiples tablas en una sola vista. Ejemplo:
Disparadores (Triggers):
Los disparadores en SQL son procedimientos almacenados que se ejecutan automáticamente en
respuesta a ciertos eventos en la base de datos, como la inserción, actualización o eliminación de
registros en una tabla. Los disparadores se utilizan para aplicar reglas de negocio, mantener la
integridad de los datos y realizar acciones automáticas en la base de datos. Por ejemplo, un
disparador puede ser utilizado para auditar cambios en una tabla o para actualizar
automáticamente ciertos campos después de una inserción o actualización. Ejmplo:
1
AFTER INSERT OR UPDATE OR DELETE ON empleados
FOR EACH ROW
BEGIN
-- Registro de auditoría
INSERT INTO audit_empleados (accion, fecha, empleado_id)
VALUES ('cambio', NOW(), NEW.empleado_id);
END;
Procedimientos almacenados:
Los procedimientos almacenados en SQL son bloques de código que se almacenan en la base de
datos y pueden ser llamados y ejecutados repetidamente según sea necesario. Estos
procedimientos pueden aceptar parámetros, realizar operaciones complejas y devolver resultados.
Los procedimientos almacenados se utilizan para encapsular lógica de negocio, mejorar el
rendimiento y reutilizar código. Por ejemplo, un procedimiento almacenado puede ser utilizado
para realizar cálculos complejos o para realizar operaciones de actualización en varias tablas.
Ejemplo:
Transacciones:
Las transacciones en SQL son secuencias de operaciones que se ejecutan como una unidad
atómica e indivisible. Esto significa que todas las operaciones dentro de una transacción se
completan con éxito o se deshacen en su totalidad si ocurre algún error. Las transacciones
garantizan la integridad de los datos y la consistencia de la base de datos, permitiendo que las
operaciones se realicen de manera segura y confiable. Por ejemplo, una transacción puede ser
utilizada para transferir fondos entre cuentas bancarias, asegurando que se deduzca dinero de una
cuenta y se acredite en otra de manera precisa y segura. Ejemplo:
1
START TRANSACTION;
-- Deducción de fondos de la cuenta de origen
UPDATE cuentas SET saldo = saldo - 100 WHERE id_cuenta = 101;
-- Acreditación de fondos en la cuenta de destino
UPDATE cuentas SET saldo = saldo + 100 WHERE id_cuenta = 102;
-- Confirmar la transacción
COMMIT;
Ejercicio 2: Crear una base de datos que se denomina bdrh, el motor de bases de
datos que se manejará es MySQL Workbench.
Las sentencias anteriores crean la tabla trabajos la cual almacena los datos de los
puestos de trabajo, incluyendo el título del puesto y el rango salarial con las siguientes
características: (describa las características de cada una de las columnas en la
siguiente tabla)
1
Líne Descripción
a
1 CREATE TABLE trabajos (: Esta línea inicia la definición de una nueva tabla llamada trabajos en la
base de datos.
2 id_trabajo INT(11) NOT NULL,: Esta columna almacena el identificador único de cada puesto de
trabajo como un número entero con una longitud máxima de 11 dígitos. La restricción NOT NULL
asegura que cada registro tenga un valor válido para esta columna.
3 trabajo_nombre VARCHAR(35) NOT NULL,: Esta columna almacena el nombre del puesto de trabajo
como una cadena de texto con una longitud máxima de 35 caracteres. La restricción NOT NULL
asegura que cada registro tenga un valor válido para esta columna.
4 salario_min DECIMAL(10,2) NOT NULL,: Esta columna almacena el salario mínimo asociado al
puesto de trabajo como un número decimal con hasta 10 dígitos en total, de los cuales 2 son decimales.
La restricción NOT NULL asegura que cada registro tenga un valor válido para esta columna.
5 salario_max DECIMAL(10,2) NOT NULL,: Esta columna almacena el salario máximo asociado al
puesto de trabajo como un número decimal con hasta 10 dígitos en total, de los cuales 2 son decimales.
La restricción NOT NULL asegura que cada registro tenga un valor válido para esta columna.
6 PRIMARY KEY (id_trabajo)): Define la columna id_trabajo como la clave primaria de la tabla,
garantizando que cada registro tenga un identificador único.
7 ENGINE = InnoDB;: Especifica que la tabla se creará utilizando el motor de almacenamiento InnoDB,
que ofrece soporte para transacciones y asegura la integridad de los datos.
Las sentencias anteriores crean la tabla regiones, almacena los datos de regiones como
Asia, Europa, América del Norte, America del Sur, África, Oceania con las siguientes
características: (describa las características de cada una de las columnas en la
siguiente tabla)
1
Líne Descripción
a
1 CREATE TABLE regiones (: Esta línea inicia la definición de una nueva tabla llamada regiones en
la base de datos.
2 id_region INT(11) NOT NULL,: Esta columna almacena el identificador único de cada región como
un número entero con una longitud máxima de 11 dígitos. La restricción NOT NULL asegura que
cada registro tenga un valor válido para esta columna.
3 region_nombre VARCHAR(45) NOT NULL,: Esta columna almacena el nombre de la región como
una cadena de texto con una longitud máxima de 45 caracteres. La restricción NOT NULL asegura
que cada registro tenga un valor válido para esta columna.
4 PRIMARY KEY (id_region)): Define la columna id_region como la clave primaria de la tabla,
garantizando que cada registro tenga un identificador único.
5 ENGINE = InnoDB;: Especifica que la tabla se creará utilizando el motor de almacenamiento
InnoDB, que ofrece soporte para transacciones y asegura la integridad de los datos.
Las sentencias anteriores crean la tabla paises, almacena los datos de los países como
Colombia (CO), Mexico (MX), Estados Unidos (US), España (ES) en los que opera la
empresa, con las siguientes características: (describa las características de cada una
de las columnas en la siguiente tabla)
1
Líne Descripción
a
1 CREATE TABLE paises (: Esta línea inicia la definición de una nueva tabla llamada países
en la base de datos.
2 id_pais CHAR(2) NOT NULL,: Esta columna almacena el código de dos letras ISO del
país como caracteres. La restricción NOT NULL asegura que cada registro tenga un valor
válido para esta columna.
3 id_region INT(11) NOT NULL,: Define una columna llamada id_region que almacena el
identificador de la región a la que pertenece el país como un número entero con una
longitud máxima de 11 dígitos. La restricción NOT NULL asegura que cada registro tenga
un valor válido para esta columna.
4 pais_nombre VARCHAR(50) NOT NULL,: Esta columna almacena el nombre del país
como una cadena de texto con una longitud máxima de 50 caracteres. La restricción NOT
NULL asegura que cada registro tenga un valor válido para esta columna.
5 PRIMARY KEY (id_pais),: Define la columna id_pais como la clave primaria de la tabla,
garantizando que cada país tenga un identificador único.
6 FOREIGN KEY (id_region) REFERENCES regiones (id_region): Esta línea establece una
clave externa (FOREIGN KEY) en la columna id_region que referencia la columna
id_region de la tabla regiones. Esto asegura la integridad referencial, lo que significa que
cada valor en la columna id_region de la tabla paises debe existir en la columna id_region
de la tabla regiones.
7 ON DELETE CASCADE: Indica que si se elimina un registro en la tabla regiones, todos
los registros en la tabla paises que hacen referencia a ese id_region también se eliminarán
automáticamente.
8 ON UPDATE CASCADE: Significa que si el valor de id_region en la tabla regiones
cambia, el valor correspondiente en la tabla paises se actualizará automáticamente para
reflejar este cambio.
9 ENGINE = InnoDB;: Especifica que la tabla se creará utilizando el motor de
almacenamiento InnoDB, que ofrece soporte para transacciones y asegura la integridad de
los datos.
CREATE TABLE departamentos (
id_departamento INT(11) NOT NULL,
departamento_nombre VARCHAR(30) NOT NULL,
1
id_ubicacion INT(11) NOT NULL,
PRIMARY KEY (id_departamento),
FOREIGN KEY (id_ubicacion) REFERENCES ubicaciones (id_ubicacion)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
Las sentencias anteriores crean la tabla departamentos, almacena los datos de los
departamentos de la empresa como Ventas, Sistemas, Marketing, con las siguientes
características: (describa las características de cada una de las columnas en la
siguiente tabla)
Líne Descripción
a
1 CREATE TABLE departamentos (: Esta línea inicia la definición de una nueva tabla
llamada departamentos en la base de datos.
2 id_departamento INT(11) NOT NULL,: Esta columna almacena un número entero
de hasta 11 dígitos que sirve como identificador único de cada departamento. La
restricción NOT NULL asegura que cada registro tenga un valor válido para esta
columna.
3 departamento_nombre VARCHAR(30) NOT NULL,: Esta columna almacena el
nombre del departamento como una cadena de texto con una longitud máxima de 30
caracteres. La restricción NOT NULL asegura que cada registro tenga un valor
válido para esta columna.
4 id_ubicacion INT(11) NOT NULL,: Esta columna almacena el identificador único
de la ubicación asociada al departamento. La restricción NOT NULL asegura que
cada registro tenga un valor válido para esta columna.
5 PRIMARY KEY (id_departamento),: Define la columna id_departamento como la
clave primaria de la tabla, garantizando que cada departamento tenga un
identificador único.
6 FOREIGN KEY (id_ubicacion) REFERENCES ubicaciones (id_ubicacion):
Establece una clave externa en la columna id_ubicacion que referencia la columna
id_ubicacion de la tabla ubicaciones. Esto asegura la integridad referencial,
garantizando que cada valor en la columna id_ubicacion de la tabla departamentos
1
coincida con un valor válido en la tabla ubicaciones.
7 ON DELETE CASCADE: Indica que, si se elimina un registro en la tabla
ubicaciones, todos los registros en la tabla departamentos que hacen referencia a ese
id_ubicacion también se eliminarán automáticamente.
8 ON UPDATE CASCADE: Significa que si el valor de id_ubicacion en la tabla
ubicaciones cambia, el valor correspondiente en la tabla departamentos se
actualizará automáticamente para reflejar este cambio.
9 ENGINE = InnoDB; Especifica que la tabla se creará utilizando el motor de
almacenamiento InnoDB, que ofrece soporte para transacciones y asegura la
integridad de los datos.
Las sentencias anteriores crean la tabla empleados, almacena los datos de los
1
empleados de la empresa con las siguientes características: (describa las
características de cada una de las columnas en la siguiente tabla)
Líne Descripción
a
1 CREATE TABLE empleados (: Esta línea inicia la definición de una nueva tabla
llamada empleados.
2 id_empleado INT(11) NOT NULL,: Esta columna almacena un número entero de
hasta 11 dígitos que sirve como identificador único de cada empleado. La
restricción NOT NULL asegura que cada registro tenga un valor válido para esta
columna.
3 nombres VARCHAR(20) NOT NULL,: Esta columna almacena el nombre del
empleado como una cadena de texto con una longitud máxima de 20 caracteres.
La restricción NOT NULL asegura que cada registro tenga un valor válido para
esta columna.
4 apellidos VARCHAR(25) NOT NULL,: Esta columna almacena los apellidos del
empleado como una cadena de texto con una longitud máxima de 25 caracteres.
La restricción NOT NULL asegura que cada registro tenga un valor válido para
esta columna.
5 email VARCHAR(100) NOT NULL,: Esta columna almacena el correo
electrónico del empleado como una cadena de texto con una longitud máxima de
100 caracteres. La restricción NOT NULL asegura que cada registro tenga un
valor válido para esta columna.
6 numero_telefono VARCHAR(20) NOT NULL,: Esta columna almacena el
número de teléfono del empleado como una cadena de texto con una longitud
máxima de 20 caracteres. La restricción NOT NULL asegura que cada registro
tenga un valor válido para esta columna.
7 fecha_ingreso DATE NOT NULL,: Esta columna almacena la fecha de ingreso
del empleado. La restricción NOT NULL asegura que cada registro tenga un
valor válido para esta columna.
8 id_trabajo INT(11) NOT NULL,: Esta columna almacena el identificador único
del trabajo al que está asignado el empleado. La restricción NOT NULL asegura
que cada registro tenga un valor válido para esta columna.
9 salario DECIMAL(10,2) NOT NULL,: Esta columna almacena el salario del
empleado como un número decimal con hasta 10 dígitos en total, de los cuales 2
1
son decimales. La restricción NOT NULL asegura que cada registro tenga un
valor válido para esta columna.
10 id_gerencia INT(11) NULL,: Esta columna almacena el identificador único de la
gerencia a la que pertenece el empleado. Puede contener valores NULL, lo que
indica que no todos los empleados están asignados a una gerencia.
11 id_departamento INT(11) NOT NULL,: Esta columna almacena el identificador
único del departamento al que está asignado el empleado. La restricción NOT
NULL asegura que cada registro tenga un valor válido para esta columna.
12 PRIMARY KEY (id_empleado),: Define la columna id_empleado como la clave
primaria de la tabla, garantizando que cada empleado tenga un identificador
único.
13 FOREIGN KEY (id_trabajo) REFERENCES trabajos (id_trabajo): Establece una
clave externa en la columna id_trabajo que referencia la columna id_trabajo de la
tabla trabajos. Esto asegura la integridad referencial, garantizando que cada valor
en la columna id_trabajo de la tabla empleados coincida con un valor válido en la
tabla trabajos.
14 ON DELETE CASCADE: Indica que, si se elimina un registro en la tabla
trabajos, todos los registros en la tabla empleados que hacen referencia a ese
id_trabajo también se eliminarán automáticamente.
15 ON UPDATE CASCADE: Significa que si el valor de id_trabajo en la tabla
trabajos cambia, el valor correspondiente en la tabla empleados se actualizará
automáticamente para reflejar este cambio.
16 FOREIGN KEY (id_departamento) REFERENCES departamentos
(id_departamento): Establece una clave externa en la columna id_departamento
que referencia la columna id_departamento de la tabla departamentos. Esto
asegura la integridad referencial, garantizando que cada valor en la columna
id_departamento de la tabla empleados coincida con un valor válido en la tabla
departamentos.
17 ON DELETE CASCADE: Indica que, si se elimina un registro en la tabla
departamentos, todos los registros en la tabla empleados que hacen referencia a
ese id_departamento también se eliminarán automáticamente.
18 ON UPDATE CASCADE: Significa que si el valor de id_departamento en la
tabla departamentos cambia, el valor correspondiente en la tabla empleados se
actualizará automáticamente para reflejar este cambio.
19 FOREIGN KEY (id_gerencia) REFERENCES empleados (id_empleado):
Establece una clave externa en la columna id_gerencia que referencia la columna
1
id_empleado de la misma tabla empleados. Esto puede ser un error, ya que
debería referenciar la clave primaria de otra tabla, posiblemente la tabla
"gerencia".
20 ON DELETE CASCADE: Indica que, si se elimina un registro en la tabla
empleados, todos los registros en la misma tabla que hacen referencia a ese
id_gerencia también se eliminarán automáticamente.
21 ON UPDATE CASCADE: Significa que si el valor de id_gerencia en la tabla
empleados cambia, el valor correspondiente en la misma tabla se actualizará
automáticamente para reflejar este cambio.
Las sentencias anteriores crean la tabla dependiente, almacena los datos de los
dependientes del empleado como Hijo, Hija, Esposa, Esposo con las siguientes
características: (describa las características de cada una de las columnas en la
siguiente tabla)
Línea Descripción
1 CREATE TABLE dependientes (: Esta línea inicia la definición de una nueva
tabla llamada dependientes.
2 id_dependiente INT(11) NOT NULL,: Esta columna almacena un número
entero de hasta 11 dígitos que sirve como identificador único de cada
dependiente. La restricción NOT NULL asegura que cada registro tenga un
valor válido para esta columna.
1
3 nombres VARCHAR(50) NOT NULL,: Esta columna almacena los nombres
del dependiente como una cadena de texto con una longitud máxima de 50
caracteres. La restricción NOT NULL asegura que cada registro tenga un
valor válido para esta columna.
4 apellidos VARCHAR(50) NOT NULL,: Esta columna almacena los apellidos
del dependiente como una cadena de texto con una longitud máxima de 50
caracteres. La restricción NOT NULL asegura que cada registro tenga un
valor válido para esta columna.
5 vinculo VARCHAR(25) NOT NULL,: Esta columna almacena el vínculo del
dependiente con el empleado como una cadena de texto con una longitud
máxima de 25 caracteres. La restricción NOT NULL asegura que cada
registro tenga un valor válido para esta columna.
6 id_empleado INT(11) NOT NULL,: Esta columna almacena el identificador
único del empleado al que está asociado el dependiente. La restricción NOT
NULL asegura que cada registro tenga un valor válido para esta columna.
7 PRIMARY KEY (id_dependiente),: Define la columna id_dependiente como
la clave primaria de la tabla, garantizando que cada dependiente tenga un
identificador único.
8 FOREIGN KEY (id_empleado) REFERENCES empleados (id_empleado):
Establece una clave externa en la columna id_empleado que referencia la
columna id_empleado de la tabla empleados. Esto asegura la integridad
referencial, garantizando que cada valor en la columna id_empleado de la
tabla dependientes coincida con un valor válido en la tabla empleados.
9 ON DELETE CASCADE: Indica que si se elimina un registro en la tabla
empleados, todos los registros en la tabla dependientes que hacen referencia a
ese id_empleado también se eliminarán automáticamente.
10 ON UPDATE CASCADE: Significa que si el valor de id_empleado en la
tabla empleados cambia, el valor correspondiente en la tabla dependientes se
actualizará automáticamente para reflejar este cambio.
1
Bibliografía