Tabla Trabajo
CREATE TABLE trabajos (id_trabajo INT (11) NOT NULL, trabajo_nombre VARCHAR
(35) NOT NULL, 3 salario_min DECIMAL (10,2) NOT NULL, salario_max DECIMAL
(10,2) NOT NULL, PRIMARY KEY (id_trabajo)) ENGINE = InnoDB;
Línea Descripción
1 Esta es una columna de tipo entero (INT) con una longitud máxima de 11
dígitos. La restricción NOT NULL indica que esta columna no puede tener
valores nulos
2 Esta es una columna de tipo cadena de caracteres (VARCHAR) con una longitud
máxima de 35 caracteres. Al igual que id_trabajo, la restricción NOT NULL
indica que esta columna no puede tener valores nulos.
3 Esta es una columna de tipo decimal con una precisión total de 10 dígitos, de los
cuales 2 son decimales. La restricción NOT NULL indica que esta columna no
puede tener valores nulos.
4 Similar a salario_min, esta es una columna de tipo decimal con una precisión
total de 10 dígitos, de los cuales 2 son decimales. La restricción NOT NULL
indica que esta columna no puede tener valores nulos.
5
6
7
La tabla trabajo es una tabla en una base de datos que tiene las siguientes características:
id_trabajo INT(11) NOT NULL: Esta es la clave primaria de la tabla. Es un identificador
único para cada registro en la tabla. Es un entero con una longitud máxima de 11 dígitos y
no puede ser nulo.
trabajo_nombre VARCHAR(35) NOT NULL: Esta columna almacena el nombre del
trabajo. Es una cadena de caracteres con una longitud máxima de 35 caracteres y no puede
ser nulo.
salario_min DECIMAL(10,2) NOT NULL: Esta columna almacena el salario mínimo para
el trabajo. Es un número decimal con una precisión total de 10 dígitos, de los cuales 2 son
decimales y no puede ser nulo.
salario_max DECIMAL(10,2) NOT NULL: Esta columna almacena el salario máximo para
el trabajo. Es un número decimal con una precisión total de 10 dígitos, de los cuales 2 son
decimales y no puede ser nulo.
La tabla utiliza el motor de almacenamiento InnoDB, que proporciona características como
integridad referencial y transacciones, lo que lo hace adecuado para sistemas de bases de
datos relacionales.
Tabla regiones
CREATE TABLE regiones (
id_region INT (11) NOT NULL,
region_nombre VARCHAR (45) NOT NULL,
PRIMARY KEY (id_region))
ENGINE = InnoDB;
Línea Descripción
1 La sentencia SQL es para crear una tabla llamada regiones
2 Esta es la clave primaria de la tabla. Es un identificador único para cada registro
en la tabla. Es un entero con una longitud máxima de 11 dígitos y no puede ser
nulo.
3 Esta columna almacena el nombre de la región. Es una cadena de caracteres con
una longitud máxima de 45 caracteres y no puede ser nulo.
4 Esta es una restricción que indica que la columna id_region es la clave primaria
de la tabla. La clave primaria es un identificador único para cada registro en la
tabla. Esto significa que no puede haber dos filas en la tabla con el mismo valor
de id_region.
5 Este es el motor de almacenamiento que se utilizará para la tabla. InnoDB es un
motor de almacenamiento para MySQL que proporciona características como
integridad referencial y transacciones, lo que lo hace adecuado para sistemas de
bases de datos relacionales.
6
7
Tabla Paises
CREATE TABLE paises (
id_pais CHAR(2) NOT NULL,
id_region INT(11) NOT NULL,
pais_nombre VARCHAR(50) NOT NULL,
PRIMARY KEY (id_pais),
FOREIGN KEY (id_region) REFERENCES regiones (id_region)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
Línea Descripción
1 La sentencia SQL es para crear una tabla llamada países
2 Esta es la clave primaria de la tabla. Es un identificador único para cada registro
en la tabla. Es un carácter con una longitud de 2 y no puede ser nulo.
3 Esta columna almacena el identificador de la región a la que pertenece el país. Es
un entero con una longitud máxima de 11 dígitos y no puede ser nulo.
4 Esta columna almacena el nombre del país. Es una cadena de caracteres con una
longitud máxima de 50 caracteres y no puede ser nulo.
5 Esta es una restricción que indica que la columna id_pais es la clave primaria de
la tabla. La clave primaria es un identificador único para cada registro en la
tabla. Esto significa que no puede haber dos filas en la tabla con el mismo valor
de id_pais.
6 Esta es una restricción de clave foránea que establece una relación entre la
columna id_region en la tabla paises y la columna id_region en la tabla regiones.
7 a restricción ON DELETE CASCADE significa que si se elimina una fila en la
tabla regiones, todas las filas correspondientes en la tabla paises también se
eliminarán.
8 La restricción ON UPDATE CASCADE significa que si se actualiza el valor de
id_region en la tabla regiones, todos los valores correspondientes en la tabla
paises también se actualizarán
9 Este es el motor de almacenamiento que se utilizará para la tabla. InnoDB es un
motor de almacenamiento para MySQL que proporciona características como
integridad referencial y transacciones, lo que lo hace adecuado para sistemas de
bases de datos relacionales.
Tabla Ubicaciones
CREATE TABLE ubicaciones (
id_ubicacion INT(11) NOT NULL,
direccion VARCHAR(40) NOT NULL,
codigo_postal VARCHAR(12) NULL,
ciudad VARCHAR(30) NOT NULL,
estado_provincia VARCHAR(25) NOT NULL,
id_pais CHAR(2) NOT NULL,
PRIMARY KEY (id_ubicacion),
FOREIGN KEY (id_pais) REFERENCES paises (id_pais)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
Línea Descripción
1 Esta línea indica el inicio de la definición de una nueva tabla llamada
"ubicaciones"
2 Aquí se define la primera columna de la tabla llamada "id_ubicacion" de tipo
entero (INT) con una longitud máxima de 11 dígitos. La cláusula "NOT NULL"
significa que esta columna no puede contener valores nulos, es decir, debe tener
un valor en cada fila de la tabla.
3 Esto define la segunda columna llamada "direccion" de tipo VARCHAR (cadena
de caracteres) con una longitud máxima de 40 caracteres. Al igual que la
columna anterior, esta columna no permite valores nulos.
4 Aquí se define la tercera columna llamada "codigo_postal" de tipo VARCHAR
con una longitud máxima de 12 caracteres. La diferencia aquí es que esta
columna puede contener valores nulos, ya que se especifica "NULL".
5 Se define la cuarta columna llamada "ciudad" de tipo VARCHAR con una
longitud máxima de 30 caracteres. Al igual que la primera columna, esta
columna no permite valores nulos.
6 La quinta columna llamada "estado_provincia" es de tipo VARCHAR con una
longitud máxima de 25 caracteres y no permite valores nulos.
7 La sexta columna llamada "id_pais" es de tipo CHAR (caracteres) con una
longitud fija de 2 caracteres y no permite valores nulos.
8 Esta línea define la clave primaria de la tabla, que consta de la columna
"id_ubicacion". La clave primaria asegura que cada fila en la tabla tiene un valor
único en esta columna.
9 Aquí se define una clave externa (FOREIGN KEY) que establece una relación
con la tabla "paises". La columna "id_pais" en la tabla "ubicaciones" se relaciona
con la columna "id_pais" en la tabla "paises".
10 Esta parte de la línea especifica que si se elimina una fila en la tabla "paises",
todas las filas relacionadas en la tabla "ubicaciones" también se eliminarán en
cascada. En otras palabras, se elimina en cascada.
11 Esto indica que si se actualiza el valor de la columna "id_pais" en la tabla
"paises", se actualizarán en cascada todas las filas relacionadas en la tabla
"ubicaciones".
12 Finalmente, esta línea especifica el motor de almacenamiento de la tabla, que en
este caso es InnoDB. InnoDB es un motor de almacenamiento comúnmente
utilizado en sistemas de gestión de bases de datos MySQL.
Tabla Departamentos
CREATE TABLE departamentos ( id_departamento INT(11) NOT NULL, departamento_nombre
VARCHAR(30) NOT NULL, 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;
Línea Descripción
1 Esta línea inicia la creación de una nueva tabla llamada "departamentos". Los
paréntesis abiertos indican que se van a definir las columnas y propiedades de la
tabla.
2 Esta línea define la primera columna de la tabla. "id_departamento" es el nombre
de la columna, y se define como un tipo de dato "INT" (entero) con una longitud
máxima de 11 dígitos. La cláusula "NOT NULL" significa que esta columna no
puede contener valores nulos, es decir, siempre debe tener un valor.
3 Esta línea define la segunda columna de la tabla. "departamento_nombre" es el
nombre de la columna y se define como un tipo de dato "VARCHAR" (cadena
de caracteres) con una longitud máxima de 30 caracteres. Al igual que la
columna anterior, la cláusula "NOT NULL" significa que no se permiten valores
nulos en esta columna.
4 Esta línea define la tercera columna de la tabla, que se llama "id_ubicacion". Es
de tipo "INT" con una longitud máxima de 11 dígitos y tampoco permite valores
nulos.
5 Esta línea define la clave primaria de la tabla. La clave primaria se utiliza para
identificar de forma única cada fila en la tabla. En este caso, la columna
"id_departamento" se establece como la clave primaria.
6 Esta línea establece una clave externa (foreign key) en la columna
"id_ubicacion". Esto significa que la columna "id_ubicacion" está relacionada
con una columna llamada "id_ubicacion" en otra tabla llamada "ubicaciones".
Esta relación asegura que los valores en la columna "id_ubicacion" deben
coincidir con los valores existentes en la columna "id_ubicacion" de la tabla
"ubicaciones". Si no hay una coincidencia, no se permitirá la inserción o
actualización de datos en esta tabla.
7 Esta parte de la línea define una acción de cascada que se ejecutará cuando se
elimine una fila en la tabla "ubicaciones" a la que se hace referencia. En este
caso, si se elimina una fila en la tabla "ubicaciones," todas las filas relacionadas
en la tabla "departamentos" también se eliminarán automáticamente.
8 Similar a la línea anterior, esta parte de la línea define una acción de cascada que
se ejecutará cuando se actualice una fila en la tabla "ubicaciones" a la que se
hace referencia. En este caso, si se actualiza una fila en la tabla "ubicaciones,"
todas las filas relacionadas en la tabla "departamentos" también se actualizarán
automáticamente.
9 Esta línea especifica el motor de almacenamiento que se utilizará para esta tabla.
En este caso, se utiliza el motor InnoDB, que es uno de los motores de
almacenamiento disponibles en MySQL y es conocido por ser transaccional y
compatible con características de integridad referencial
Tabla Empleados
CREATE TABLE empleados (
id_empleado INT(11) NOT NULL,
nombres VARCHAR(20) NOT NULL,
apellidos VARCHAR(25) NOT NULL,
email VARCHAR(100) NOT NULL,
numero_telefono VARCHAR(20) NOT NULL,
fecha_ingreso DATE NOT NULL,
id_trabajo INT(11) NOT NULL,
salario DECIMAL(10,2) NOT NULL,
id_gerencia INT(11) NULL,
id_departamento INT(11) NOT NULL,
PRIMARY KEY (id_empleado),
FOREIGN KEY (id_trabajo) REFERENCES trabajos (id_trabajo)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (id_departamento) REFERENCES departamentos (id_departamento)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (id_gerencia) REFERENCES empleados (id_empleado)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
Línea Descripción
1 Inicia la creación de la tabla llamada "empleados
2 Define una columna llamada "id_empleado" de tipo INT con una longitud
máxima de 11 dígitos y la indica como no nula (NOT NULL).
3 Define una columna llamada "nombres" de tipo VARCHAR con una longitud
máxima de 20 caracteres y la indica como no nula.
4 Define una columna llamada "apellidos" de tipo VARCHAR con una longitud
máxima de 25 caracteres y la indica como no nula.
5 Define una columna llamada "email" de tipo VARCHAR con una longitud
máxima de 100 caracteres y la indica como no nula.
6 Define una columna llamada "numero_telefono" de tipo VARCHAR con una
longitud máxima de 20 caracteres y la indica como no nula.
7 Define una columna llamada "fecha_ingreso" de tipo DATE y la indica como no
nula.
8 Define una columna llamada "id_trabajo" de tipo INT con una longitud máxima
de 11 dígitos y la indica como no nula.
9 Define una columna llamada "salario" de tipo DECIMAL con un total de 10
dígitos, incluyendo 2 decimales, y la indica como no nula.
10 Define una columna llamada "id_gerencia" de tipo INT con una longitud
máxima de 11 dígitos, que puede admitir valores nulos (NULL).
11 Define una columna llamada "id_departamento" de tipo INT con una longitud
máxima de 11 dígitos y la indica como no nula.
12 Establece la columna "id_empleado" como la clave primaria de la tabla, lo que
garantiza que los valores en esta columna sean únicos.
13 Esta línea define una restricción de clave foránea en la columna "id_trabajo" de
la tabla "empleados". La restricción hace referencia a la tabla "trabajos" y su
columna "id_trabajo". Esto significa que la columna "id_trabajo" en la tabla
"empleados" debe contener valores que existan en la tabla "trabajos" en la
columna "id_trabajo".
14 Esta línea especifica que, si se elimina una fila en la tabla "trabajos", todas las
filas en la tabla "empleados" que tengan el mismo valor en la columna
"id_trabajo" se eliminarán automáticamente en cascada. En otras palabras, esta
acción "CASCADE" asegura que las filas relacionadas se eliminen si se elimina
una fila en la tabla principal.
15 Similar a la línea anterior, esta línea especifica que si se actualiza el valor de la
columna "id_trabajo" en la tabla "trabajos", se actualizarán automáticamente
todas las filas en la tabla "empleados" que tengan el mismo valor en la columna
"id_trabajo". Esto garantiza que las relaciones se mantengan actualizadas en
cascada.
16 Esta línea define otra restricción de clave foránea en la columna
"id_departamento" de la tabla "empleados". La restricción hace referencia a la
tabla "departamentos" y su columna "id_departamento", asegurando que los
valores en la columna "id_departamento" de la tabla "empleados" existan en la
tabla "departamentos".
17 Al igual que en la restricción anterior, esta línea especifica que si se elimina una
fila en la tabla "departamentos", las filas en la tabla "empleados" con el mismo
valor en la columna "id_departamento" se eliminarán automáticamente en
cascada.
18 De manera similar, esta línea asegura que si se actualiza el valor de la columna
"id_departamento" en la tabla "departamentos", se actualizarán automáticamente
las filas correspondientes en la tabla "empleados" con el mismo valor en la
columna "id_departamento".
19 Esta línea define una restricción de clave foránea en la columna "id_gerencia" de
la tabla "empleados". Sin embargo, parece haber un error en esta línea, ya que
está haciendo referencia a la misma tabla "empleados" y su columna
"id_empleado". Normalmente, las claves foráneas hacen referencia a otras tablas,
no a la misma tabla.
20 Al igual que en la restricción anterior, esta línea especifica que si se elimina una
fila en la tabla "departamentos", las filas en la tabla "empleados" con el mismo
valor en la columna "id_departamento" se eliminarán automáticamente en
cascada.
21 De manera similar, esta línea asegura que si se actualiza el valor de la columna
"id_departamento" en la tabla "departamentos", se actualizarán automáticamente
las filas correspondientes en la tabla "empleados" con el mismo valor en la
columna "id_departamento".
22 Esta línea especifica el motor de almacenamiento InnoDB para la tabla
"empleados". InnoDB es conocido por sus características de integridad
referencial y transacciones.
Tabla Dependientes
CREATE TABLE dependientes (
id_dependiente INT(11) NOT NULL,
nombres VARCHAR(50) NOT NULL,
apellidos VARCHAR(50) NOT NULL,
vinculo VARCHAR(25) NOT NULL,
id_empleado INT(11) NOT NULL,
PRIMARY KEY (id_dependiente),
FOREIGN KEY (id_empleado) REFERENCES empleados (id_empleado)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
Línea Descripción
1 Inicia la creación de la tabla llamada "dependientes
2 Define una columna llamada "id_dependiente" de tipo INT con una longitud
máxima de 11 dígitos y la indica como no nula (NOT NULL).
3 Define una columna llamada "nombres" de tipo VARCHAR con una longitud
máxima de 50 caracteres y la indica como no nula.
4 Define una columna llamada "apellidos" de tipo VARCHAR con una longitud
máxima de 50 caracteres y la indica como no nula.
5 Define una columna llamada "vinculo" de tipo VARCHAR con una longitud
máxima de 25 caracteres y la indica como no nula.
6 Define una columna llamada "id_empleado" de tipo INT con una longitud
máxima de 11 dígitos y la indica como no nula (NOT NULL).
7 Establece la columna "id_dependiente" como la clave primaria de la tabla, lo que
garantiza que los valores en esta columna sean únicos.
8 Define una restricción de clave foránea en la columna "id_empleado" que hace
referencia a la tabla "empleados" y su columna "id_empleado". Esta restricción
garantiza que los valores en la columna "id_empleado" de la tabla
"dependientes" estén relacionados con valores existentes en la tabla
"empleados".
9 Especifica que si se elimina una fila en la tabla "empleados", las filas
relacionadas en la tabla "dependientes" se eliminarán automáticamente en
cascada. Esto mantiene la integridad de los datos entre ambas tablas.
10 Indica que si se actualiza el valor de la columna "id_empleado" en la tabla
"empleados", se actualizarán automáticamente las filas correspondientes en la
tabla "dependientes". Esto garantiza que las relaciones se mantengan
actualizadas en cascada.
11 Especifica el motor de almacenamiento InnoDB para la tabla "dependientes".
InnoDB es conocido por sus características de integridad referencial y
transacciones.
Crear consulta que liste nombre del departamento, dirección, ciudad de los departamentos
ubicados en Colombia.
SELECT d.departamento_nombre, [Link], [Link]
FROM departamentos d
JOIN ubicaciones u ON d.id_ubicacion = u.id_ubicacion
JOIN paises p ON u.id_pais = p.id_pais
WHERE p.pais_nombre = 'Colombia';
Crear consulta que liste nombres, apellidos, número telefónico, nombre del
trabajo de los empleados del departamento de Ventas.
SELECT [Link], [Link], e.numero_telefono, t.trabajo_nombre
FROM empleados e
JOIN departamentos d ON e.id_departamento = d.id_departamento
JOIN trabajos t ON e.id_trabajo = t.id_trabajo
WHERE d.departamento_nombre = 'Ventas';
Crear consulta que liste Nombres, Apellidos y los años que llevan trabajando los
empleados del departamento de Sistemas.
SELECT [Link], [Link], YEAR(NOW()) - YEAR(e.fecha_ingreso) AS
anos_trabajando
FROM empleados e
JOIN departamentos d ON e.id_departamento = d.id_departamento
WHERE d.departamento_nombre = 'Sistemas';
Crear consulta del promedio de años que llevan trabajando los empleados del
departamento de Marketing.
SELECT AVG(YEAR(NOW()) - YEAR(e.fecha_ingreso)) AS promedio_anos_trabajando
FROM empleados e
JOIN departamentos d ON e.id_departamento = d.id_departamento
WHERE d.departamento_nombre = 'Marketing';
Crear consulta que liste los empleados que trabajen en la ciudad XX (agregar la
ciudad según los registros ingresados)