Material de Apoyo Unidad 3 MySQL Básico PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 128

UNIDAD 3

CURSO LENGUAJE ESTRUCTURADO DE CONSULTA


MYSQL BÁSICO

GUILLERMO LEÓN VALENCIA


Profesor de sistemas
Tabla de Contenido

1 Parte 1. Contextualización ......................................................................................................... 9


1.1 Comparación conceptual LDD y LDD ..................................................................................... 9
1.2 Subconsulta ......................................................................................................................... 10
1.2.1 Ejemplos. ..................................................................................................................... 10
1.3 Consulta multitabla ............................................................................................................. 12
1.3.1 Sentencia NATURAL JOIN ............................................................................................ 12
1.3.2 Sentencia INNER JOIN ................................................................................................. 12
1.3.3 Sentencia LEFT JOIN .................................................................................................... 13
1.4 Operadores del algebra relacional ...................................................................................... 15
1.4.1 Proyección π ................................................................................................................ 15
1.4.2 Selección σ................................................................................................................... 15
2 Segunda parte: Caso practico ................................................................................................... 18
2.1 Creación de la base de datos empresa................................................................................ 18
2.1.1 Crear esquema empresa ............................................................................................. 18
2.1.2 Crear tabla PROGRAMA .............................................................................................. 18
2.1.3 Crear tabla FABRICANTE.............................................................................................. 19
2.1.4 Crear tabla CLIENTE ..................................................................................................... 21
2.1.5 Crear tabla ALMACENES .............................................................................................. 22
2.1.6 Crear tabla PROG/FAB ................................................................................................. 23
2.1.7 Crear tabla PROG/ALMA ............................................................................................. 25
2.1.8 Crear tabla REGISTRO .................................................................................................. 27
2.1.9 Diseño lógico de la base de datos empresa ................................................................ 28
2.2 Inserción de registros a las tablas de la base de datos empresa ........................................ 29
2.2.1 Registros de la tabla FABRICANTE ............................................................................... 29
2.2.2 Registros de la tabla PROGRAMA ................................................................................ 31
2.2.3 Registros de la tabla ALMACENES ............................................................................... 33
2.2.4 Registros de la tabla CLIENTE ...................................................................................... 33
2.2.5 Registros de la tabla REGISTRO ................................................................................... 34
2.2.6 Registros de la tabla PROG/FAB .................................................................................. 36
2.2.7 Registros de la tabla PROG/ALMA............................................................................... 38
2.3 Consultas de la base de datos empresa .............................................................................. 40
2.3.1 Consulta 1 .................................................................................................................... 40
2.3.2 Consulta 2 .................................................................................................................... 41
2.3.3 Consulta 3 .................................................................................................................... 42
2.3.4 Consulta 4 .................................................................................................................... 43
2.3.5 Consulta 5 .................................................................................................................... 44
2.3.6 Consulta 6 .................................................................................................................... 45
2.3.7 Consulta 7 .................................................................................................................... 46
Obtén el DNI más 4 de todos los clientes. .................................................................................. 46
2.3.8 Consulta 8 .................................................................................................................... 46
2.3.9 Consulta 9 .................................................................................................................... 47
2.3.10 Consulta 10 .................................................................................................................. 48
2.3.11 Consulta 11 .................................................................................................................. 48
2.3.12 Consulta 12 .................................................................................................................. 49
2.3.13 Consulta 13 .................................................................................................................. 50
2.3.14 Consulta 14 .................................................................................................................. 51
2.3.15 Consulta 15 .................................................................................................................. 52
2.3.16 Consulta 16 .................................................................................................................. 52
2.3.17 Consulta 17 .................................................................................................................. 53
2.3.18 Consulta 18 .................................................................................................................. 55
2.3.19 Consulta 19 .................................................................................................................. 57
2.3.20 Consulta 20 .................................................................................................................. 57
2.3.21 Consulta 21 .................................................................................................................. 57
2.3.22 Consulta 22 .................................................................................................................. 58
2.3.23 Consulta 23. ................................................................................................................. 59
2.3.24 Consulta 24. ................................................................................................................. 60
2.3.25 Consulta 25 .................................................................................................................. 61
2.3.26 Consulta 26 .................................................................................................................. 62
2.3.27 Consulta 27 .................................................................................................................. 63
2.3.28 Consulta 28. ................................................................................................................. 64
2.3.29 Consulta 29 .................................................................................................................. 65
2.3.30 Consulta 30 .................................................................................................................. 66
2.3.31 Consulta 31 .................................................................................................................. 68
2.3.32 Consulta 31 .................................................................................................................. 69
2.3.33 Consulta 33 .................................................................................................................. 70
2.3.34 Consulta 33 .................................................................................................................. 71
2.3.35 Consulta 35. ................................................................................................................. 72
2.3.36 Consulta 36 .................................................................................................................. 73
2.3.37 Consulta 37 .................................................................................................................. 74
2.3.38 Consulta 38 .................................................................................................................. 75
2.3.39 Consulta 39 .................................................................................................................. 76
2.3.40 Consulta 40. ................................................................................................................. 77
2.3.41 Consulta 41 .................................................................................................................. 78
2.3.42 Consulta 42 .................................................................................................................. 80
2.3.43 Consulta 43 .................................................................................................................. 81
2.3.44 Consulta 44 .................................................................................................................. 82
2.3.45 Consulta 45 .................................................................................................................. 84
2.3.46 Consulta 46 .................................................................................................................. 86
2.3.47 Consulta 47 .................................................................................................................. 87
2.3.48 Consulta 48 .................................................................................................................. 88
2.3.49 Consulta 49 .................................................................................................................. 89
2.3.50 Consulta 50 .................................................................................................................. 90
2.3.51 Consulta 51 .................................................................................................................. 92
2.3.52 Consulta 52 .................................................................................................................. 93
2.3.53 Consulta 53 .................................................................................................................. 94
2.3.54 Consulta 54 .................................................................................................................. 95
2.3.55 Consulta 55 .................................................................................................................. 96
2.3.56 Consulta 56 .................................................................................................................. 97
2.3.57 Consulta 57 .................................................................................................................. 98
3 Parte 3. Subconsultas. ............................................................................................................. 100
3.1 Subconsulta 1. ................................................................................................................... 100
Mostrar los datos de los empleados que pertenezcan al mismo departamento que ʻGILʼ. ......... 100
3.2 Subconsulta 2 .................................................................................................................... 101
3.3 Subconsulta 3 .................................................................................................................... 102
3.4 Subconsulta 4 .................................................................................................................... 103
3.5 Subconsulta 5. ................................................................................................................... 104
3.6 Subconsulta 6. ................................................................................................................... 105
3.7 Subconsulta 7. ................................................................................................................... 106
3.8 Consulta 8. ......................................................................................................................... 107
3.9 Subconsulta 9. ................................................................................................................... 108
4 Bibliografia .............................................................................................................................. 110
5 Apendice A. Script consultas parte 2....................................................................................... 111
6 Apendice B Script consultas parte 3. ....................................................................................... 127
Tabla de Figuras

Figura 1. Infografía comparativa LDD y LMD. ....................................................................................... 9


Figura 2. Left Join ................................................................................................................................ 13
Figura 3. Right Join .............................................................................................................................. 14
Figura 4. Creación del esquema Empresa en MySQL Workbench ...................................................... 18
Figura 5. Creación de la tabla Programa dentro de la base de datos empresa .................................. 19
Figura 6. Creación de la tabla fabricante ............................................................................................ 20
Figura 7. Creación de la tabla Cliente.................................................................................................. 22
Figura 8. Creación de la tabla Almacenes ........................................................................................... 23
Figura 9. Creación tabla PROG/FAB .................................................................................................... 25
Figura 10. Creación de la tabla Prog/alma .......................................................................................... 27
Figura 11. Creación de la tabla Registro .............................................................................................. 28
Figura 12. Modelo relacional de la base de datos empresa................................................................ 29
Figura 13. INSERT para la tabla Fabricante ......................................................................................... 30
Figura 14. INSERT tabla Almacenes ..................................................................................................... 33
Figura 15. INSERT tabla Cliente ........................................................................................................... 34
Figura 16. INSERT tabla Registro ......................................................................................................... 36
Figura 17. INSERT tabla Prog/Fab........................................................................................................ 38
Figura 18. INSERT tabla Prog/Alma ..................................................................................................... 40
Figura 19. Consulta DNI Cliente........................................................................................................... 41
Figura 20. Consulta programa ............................................................................................................. 42
Figura 21. Consulta 3. Listado nombre de programas ........................................................................ 43
Figura 22. Consulta comercios ............................................................................................................ 44
Figura 23. Ciudades que venden programas ....................................................................................... 45
Figura 24. Listado de programas ......................................................................................................... 46
Figura 25. Figura 26. DNI 4 de todos los clientes ................................................................................ 46
Figura 27. Listado de códigos de programa multiplicados por 7 ........................................................ 47
Figura 28. Programa cuyo código es menor e igual a 10 .................................................................... 47
Figura 29. Programa cuyo código es 11 .............................................................................................. 48
Figura 30. Fabricantes de Estados Unidos........................................................................................... 49
Figura 31. Fabricantes que no son de España ..................................................................................... 50
Figura 32. Códigos de las distintas versiones de Windows ................................................................. 51
Figura 33. Ciudades donde comercializa programas el Corte Inglés .................................................. 51
Figura 34. Ciudades con comercios diferentes al corte inglés. ........................................................... 52
Figura 35. Listado de códigos de las versiones de Windows y Access ................................................ 53
Figura 36. Consulta con between ........................................................................................................ 54
Figura 37. Comercios de Sevilla y Madrid. .......................................................................................... 56
Figura 38.Clientes que terminan con la letra o ................................................................................... 57
Figura 39. Clientes que terminan en O y mayores a 30 años .............................................................. 57
Figura 40. Programas cuya versión termina en O, o los nombres comienzan en A o W. .................. 58
Figura 41. Consulta 22 ......................................................................................................................... 59
Figura 42. programas cuya versión finalice por una letra i, o cuyo nombre comience por una A y
termine por una S................................................................................................................................ 60
Figura 43. programas cuya versión finalice por una letra i, y cuyo nombre no comience por una A. 61
Figura 44. lista de empresas por orden alfabético ascendente. ......................................................... 62
Figura 45. listado de empresas por orden alfabético descendente .................................................... 63
Figura 46. listado de programas por orden de versión ....................................................................... 64
Figura 47. listado de los programas que desarrolla Oracle. ................................................................ 65
Figura 48. comercios distribuyen Windows ........................................................................................ 66
Figura 49. listado de los programas y cantidades que se han distribuido a El Corte consulta vacía .. 67
Figura 50. listado de los programas y cantidades que se han distribuido a El Corte .......................... 68
Figura 51, fabricante ha desarrollado Freddy Hardest ....................................................................... 69
Figura 52. nombre de los programas que se registran por Internet ................................................... 70
Figura 53. nombre de las personas que se registran por Internet ...................................................... 71
Figura 54. Medios registro Pepito Perez ............................................................................................. 72
Figura 55. usuarios han optado por Internet como medio de registro............................................... 73
Figura 56. programas han recibido registros por tarjeta postal ......................................................... 74
Figura 57. localidades se han vendido productos que se han registrado por Internet ...................... 75
Figura 58. Listado de los nombres de las personas que se han registrado por Internet. .................. 76
Figura 59. listado en el que aparezca cada cliente junto al programa que ha registrado. ................. 77
Figura 60. listado con las ciudades en las que se pueden obtener los productos de Oracle.............. 78
Figura 61. nombre de los usuarios que han registrado Access XP consulta vacia. ............................. 79
Figura 62. nombre de los usuarios que han registrado Access XP ...................................................... 80
Figura 63. número de programas que hay en la tabla programas ...................................................... 81
Figura 64. el número de clientes cuya edad es mayor de 40 años. .................................................... 82
Figura 65. número de productos que ha vendido el establecimiento cuyo CIF es 1. consulta vacia.. 83
Figura 66. número de productos que ha vendido el establecimiento cuyo CIF es 1. ......................... 84
Figura 67. media de programas que se venden cuyo código es 7. Consulta vacía ............................. 85
Figura 68. media de programas que se venden cuyo código es 7 ...................................................... 86
Figura 69. mínima cantidad de programas de código 7 que se ha vendido ....................................... 87
Figura 70. Calcula la máxima cantidad de programas de código 7 que se ha vendido ....................... 88
Figura 71. establecimientos se vende el programa cuyo código es 7 ................................................. 89
Figura 72. Calcular el número de registros que se han realizado por Internet................................... 90
Figura 73. el número total de programas que se han vendido en Sevilla ........................................... 91
Figura 74. Consulta códigos CIF 1 y 4 .................................................................................................. 92
Figura 75. el número total de programas que han desarrollado los fabricantes cuyo país es “Estados
Unidos”. ............................................................................................................................................... 93
Figura 76. nombre de todos los clientes en mayúscula. En el resultado de la consulta debe aparecer
también la longitud de la cadena nombre. ......................................................................................... 94
Figura 77. concatena los campos nombre y versión de la tabla PROGRAMA. .................................... 95
Figura 78. Nombre de aquellos fabricantes cuyo país es el mismo que “Oracle”. ............................. 96
Figura 79. Nombre de aquellos clientes que tienen la misma edad que Pepe Pérez. ........................ 97
Figura 80. listado con los comercios que tienen su sede en la misma ciudad que tiene FNAC .......... 98
Figura 81. Nombre de aquellos clientes que han registrado un producto de la misma forma que
Pepe Perez ........................................................................................................................................... 99
Figura 82. los datos de los empleados que pertenezcan al mismo departamento que ʻGILʼ ........... 101
Figura 83. Mostrar los datos de los empleados que tengan el mismo oficio que ʻCEREZOʼ. ............ 102
Figura 84. Empleados que desempeñen el mismo oficio que ʻJIMÉNEZʼ o que tengan un salario
mayor o igual que ʻFERNÁNDEZ . ...................................................................................................... 103
Figura 85. los empleados del departamento de ʻFERNÁNDEZʼ que tengan su mismo salario. ........ 104
Figura 86. empleados que tengan un salario mayor que ʻGILʼ y que pertenezcan al departamento
número 10. ........................................................................................................................................ 105
Figura 87. empleados que tengan el mismo oficio que ʻGILʼ. ........................................................... 106
Figura 88. empleados que tengan el mismo oficio que ʻGILʼ y que no tengan comisión. ................. 107
Figura 89. empleados cuyo salario sea mayor que la media de todos los salarios. .......................... 108
Figura 90. apellido del empleado que tiene máximo salario. ........................................................... 109
1 Parte 1. Contextualización

1.1 Comparación conceptual LDD y LDD

El manejo de una base datos a través de un Sistema de Gestión de Bases de Datos ( SGBD ) implica

el conocimiento de un lenguaje que permita construir la base de datos, y otro que posibilite

consultarla y manipularla. La siguiente imagen ilustra en forma clara las

diferencias entre los dos lenguajes, pero de igual forma su aspecto complementario.

Figura 1. Infografía comparativa LDD y LMD.

Diseño Power Point anexo carpeta.


1.2 Subconsulta

Es una sentencia SELECT anidada en otra sentencia SQL, que puede ser otro SELECT o bien cualquier

sentencia de manejo de datos (INSERT, UPDATE, DELETE).

Las subconsultas se pueden anidar unas dentro de otras tanto como sea necesario, ya que no existe

un nivel máximo. Se pueden usar las cláusulas WHERE y HAVING para otorgar mayor potencia a la

realización de restricciones.

1.2.1 Ejemplos.

Mostrar los artículos vendidos con descuento mayor del 45%

SELECT *

FROM articulos

WHERE codart IN ( SELECT codart FROM lineas_fac

WHERE dto > 45 );

Seleccionar las facturas con descuento máximo

SELECT *

FROM facturas

WHERE dto = ( SELECT MAX(dto) FROM facturas );


Determinar el número de clientes que no tienen facturas

SELECT COUNT(*)

FROM clientes

WHERE codcli NOT IN ( SELECT codcli FROM facturas

WHERE codcli IS NOT NULL );

Seleccionar las facturas con descuento máximo

SELECT *

FROM facturas

WHERE dto >= ALL ( SELECT COALESCE(dto,0)

FROM facturas );
1.3 Consulta multitabla

Permite realizar consultas que involucran datos de varias tablas utilizando el operador de

concatenación (JOIN).

La concatenación es una de las operaciones más útiles del lenguaje SQL. Esta operación permite

combinar información de varias tablas sin necesidad de utilizar subconsultas para ello.

Los JOIN son usados en una sentencia SQL para recuperar datos de varias tablas al mismo tiempo.

1.3.1 Sentencia NATURAL JOIN

La siguiente sentencia hace una concatenación natural de las tablas FACTURAS y CLIENTES. Ambas

tablas tienen una columna con el mismo nombre, codcli, siendo FACTURAS.codcli una clave ajena a

CLIENTES.codcli (clave primaria):

SELECT * FROM facturas

NATURAL JOIN clientes;

1.3.2 Sentencia INNER JOIN

Cuando se quiere concatenar varias tablas que tienen varios nombres de columnas en común y no

todos han de utilizarse para realizar la concatenación, se puede disponer de la operación INNER

JOIN, que permite especificar las columnas sobre las que hacer la operación mediante la cláusula

USING.
SELECT DISTINCT codcli, clientes.nombre, codpue, pueblos.nombre

FROM facturas

INNER JOIN clientes USING (codcli)

INNER JOIN pueblos USING (codpue);

1.3.3 Sentencia LEFT JOIN

Devuelve todos los resultados que coincidan en la primera tabla, con los datos que tenga de la

segunda. En el caso de que falte algún dato, devolverá un valor null en lugar del dato. Da prioridad

a la tabla de la izquierda y se busca en la derecha.

Figura 2. Left Join

select * from libros

left join editoriales

on editoriales.codigo=libros.codigoeditorial;

Sentencia RIGHT JOIN


Opera del mismo modo que "left join" sólo que la búsqueda de coincidencias la realiza de modo

inverso, es decir, los roles de las tablas se invierten, busca coincidencia de valores desde la tabla de

la derecha en la tabla de la izquierda y si un valor de la tabla de la derecha no encuentra

coincidencia en la tabla de la izquierda, se genera una fila extra (una por cada valor no encontrado)

con todos los campos seteados a "null".

Figura 3. Right Join

Select nombre,titulo

from libros as l

right join editoriales as e

on e.codigo=l.codigoeditorial;
1.4 Operadores del algebra relacional

1.4.1 Proyección π

RUTA

Tabla 1. Tabla principal para hacer la proyección

Id ruta Fecha Origen Hora salida Destino Hora llegada Id Conductor Id Despachador Id Cliente
1 12/08/2019 Bogotá 10:12 a. m. Cali 10:00 a. m. 1 1 1
2 13/08/2019 Cali 11:12 a. m. Pasto 11:00 a. m. 2 2 2
3 14/08/2019 Bogotá 12:12 p. m. Medellin 12:00 p. m. 3 3 3
4 15/08/2019 Cali 1:12 p. m. Bogota 1:00 p. m. 1 1 1
5 16/08/2019 Medellin 2:12 p. m. Bogota 2:00 p. m. 2 2 2
6 17/08/2019 B/quilla 3:12 p. m. Bogota 3:00 p. m. 3 3 3
7 18/08/2019 Bucaramanga 4:12 p. m. Bogota 4:00 p. m. 1 1 1

π Id_Ruta.Destino(RUTA)

Tabla 2. Uso del Operador Proyección

Id ruta Destino
1 Cali
2 Pasto
3 Medellin
4 Bogota
5 Bogota
6 Bogota
7 Bogota

1.4.2 Selección σ

Consiste en recuperar o seleccionar un conjunto de registros de una tabla, indicando las

condiciones que deben cumplir los registros recuperados de tal forma que los registros de vueltos

por la selección han de satisfacer todas las condiciones que se hayan establecido, a esto se le
conoce como consulta, el formato de uso u operador de selección esta representado por la letra

griega sigma (σ) en minúscula.

Dentro de esto puede estar el subíndice condición o predicado y en estas se pueden realizar

diferentes tipos de operaciones, como, comparación y lógicas, por último, resta la relación que es la

tabla donde obtenemos la información

RUTA

Tabla 3. Tabla principal para hacer la selección

Id ruta Fecha Origen Hora salida Destino Hora llegada Id Conductor Id Despachador Id Cliente
1 12/08/2019 Bogotá 10:12 a. m. Cali 10:00 a. m. 1 1 1
2 13/08/2019 Cali 11:12 a. m. Pasto 11:00 a. m. 2 2 2
3 14/08/2019 Bogotá 12:12 p. m. Medellin 12:00 p. m. 3 3 3
4 15/08/2019 Cali 1:12 p. m. Bogota 1:00 p. m. 1 1 1
5 16/08/2019 Medellin 2:12 p. m. Bogota 2:00 p. m. 2 2 2
6 17/08/2019 B/quilla 3:12 p. m. Bogota 3:00 p. m. 3 3 3
7 18/08/2019 Bucaramanga 4:12 p. m. Bogota 4:00 p. m. 1 1 1

σ Destino=”Bogota”(RUTA)

Tabla 4. Uso del operador selección

Id ruta Fecha Origen Hora salida Destino Hora llegada Id Conductor Id Despachador Id Cliente
4 15/08/2019 Cali 1:12 p. m. Bogota 1:00 p. m. 1 1 1
5 16/08/2019 Medellin 2:12 p. m. Bogota 2:00 p. m. 2 2 2
6 17/08/2019 B/quilla 3:12 p. m. Bogota 3:00 p. m. 3 3 3
7 18/08/2019 Bucaramanga 4:12 p. m. Bogota 4:00 p. m. 1 1 1
De la siguiente tabla empleados, crear una lista con todos los empleados mayores a 24 años.

Tabla 5. Tabla Empleados

Id Emp Apellido Nombre Edad Sexo


1 Ortiz Pérez Francisco 24 M
2 Navarrete Juan Esteban 28 M
3 García Juan David 33 M
4 Monson Andrés 26 M
5 León Laura 24 F
6 Rubio Esneider 22 M
7 Cantillo Huertas Omar 35 M
8 Venegas Milena 34 F

σ (condición) R

σ edad > 24

Tabla 6 . Empleados

Id
Apellido Nombre Edad Sexo
Empleados
2 Navarrete Juan Esteban 28 M
3 García Juan David 33 M
4 Monson Andrés 26 M
7 Cantillo Huertas Omar 35 M
8 Venegas Milena 34 F
2 Segunda parte: Caso practico

2.1 Creación de la base de datos empresa

2.1.1 Crear esquema empresa

El diseño físico del esquema de la base de datos se hizo en MySQL Workbench 8.0

CREATE SCHEMA IF NOT EXISTS EMPRESA

Figura 4. Creación del esquema Empresa en MySQL Workbench

2.1.2 Crear tabla PROGRAMA

Mediante la sentencia CREATE TABLE se construyen las tablas de la base de datos empresa.
USE empresa;

CREATE TABLE IF NOT EXISTS `EMPRESA`.`PROGRAMA` (

`Codigo` INT NOT NULL,

`Nombre` VARCHAR(50) NOT NULL,

`Version` VARCHAR(50) NOT NULL,

PRIMARY KEY (`Codigo`)

ENGINE = InnoDB;

DESCRIBE PROGRAMA;

Figura 5. Creación de la tabla Programa dentro de la base de datos empresa

2.1.3 Crear tabla FABRICANTE


CREATE TABLE IF NOT EXISTS `EMPRESA`.`FABRICANTE` (

`Id_lab` INT(11) NOT NULL,

`Nombre` VARCHAR(50) NOT NULL,

`Pais` VARCHAR(30) NOT NULL,

PRIMARY KEY (`Id_lab`)

);

Figura 6. Creación de la tabla fabricante


2.1.4 Crear tabla CLIENTE

CREATE TABLE IF NOT EXISTS `EMPRESA`.`CLIENTE` (

`dni` INT(11) NOT NULL,

`Nombre` VARCHAR(50) NOT NULL,

`Edad` INT(11) NOT NULL,

PRIMARY KEY (`dni`)

);

DESCRIBE CLIENTE;
Figura 7. Creación de la tabla Cliente

2.1.5 Crear tabla ALMACENES

CREATE TABLE IF NOT EXISTS `EMPRESA`.`ALMACENES` (

`Cod_Almacen` INT(11) NOT NULL,

`Nombre` VARCHAR(50) NOT NULL,

`Ciudad` VARCHAR(50) NOT NULL,

PRIMARY KEY (`Cod_Almacen`)

);

DESCRIBE ALMACENES;
Figura 8. Creación de la tabla Almacenes

2.1.6 Crear tabla PROG/FAB

CREATE TABLE IF NOT EXISTS `EMPRESA`.`PROG/FAB` (

`Id_lab` INT(11) NOT NULL,

`Codigo` INT(11) NOT NULL,

PRIMARY KEY (`Id_lab`,`Codigo`),

FOREIGN KEY (`Id_lab`) REFERENCES FABRICANTE(`Id_lab`),


FOREIGN KEY (`Codigo`) REFERENCES PROGRAMA(`Codigo`)

);

DESCRIBE `PROG/FAB`;
Figura 9. Creación tabla PROG/FAB

2.1.7 Crear tabla PROG/ALMA

CREATE TABLE IF NOT EXISTS `EMPRESA`.`PROG/ALMA` (

`Cantidad` INT(11) NOT NULL,

`Codigo` INT(11) NOT NULL,

`Cod_Almacen` INT(11) NOT NULL,

PRIMARY KEY (`Codigo`,`Cod_Almacen`),

CONSTRAINT `Distribuye programa`

FOREIGN KEY (`Codigo`)


REFERENCES `EMPRESA`.`PROGRAMA` (`Codigo`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `Distribuye comercio 1`

FOREIGN KEY (`Cod_Almacen`)

REFERENCES `EMPRESA`.`ALMACENES` (`Cod_Almacen`)

ON DELETE NO ACTION

ON UPDATE NO ACTION

);

DESCRIBE `PROG/ALMA`;
Figura 10. Creación de la tabla Prog/alma

2.1.8 Crear tabla REGISTRO

CREATE TABLE IF NOT EXISTS `EMPRESA`.`REGISTRO` (

`Medio` VARCHAR(20) NOT NULL,

`Cod_Almacen` INT(11) NOT NULL,

`Dni` INT(11) NOT NULL,

`Codigo` INT(11) NOT NULL,

PRIMARY KEY (`Cod_Almacen`,`Dni`,`Codigo`),

FOREIGN KEY (`Dni`) REFERENCES `EMPRESA`.`CLIENTE` (`Dni`),


FOREIGN KEY (`Cod_Almacen`) REFERENCES `EMPRESA`.`ALMACENES` (`Cod_Almacen`),

FOREIGN KEY (`Codigo`) REFERENCES `EMPRESA`.`PROGRAMA` (`Codigo`)

);

DESCRIBE REGISTRO;

Figura 11. Creación de la tabla Registro

2.1.9 Diseño lógico de la base de datos empresa

La siguiente imagen muestra en forma gráfica las entidades, los atributos, la cardinalidad, llaves

primarias y llaves foráneas de la base de datos empresa.


Figura 12. Modelo relacional de la base de datos empresa

2.2 Inserción de registros a las tablas de la base de datos empresa

2.2.1 Registros de la tabla FABRICANTE

INSERT INTO Fabricante VALUES (1,'ORACLE','ESTADOS UNIDOS');

INSERT INTO Fabricante VALUES (2,'MICROSOFT','ESTADOS UNIDOS');

INSERT INTO Fabricante VALUES (3,'IBM','ESTADOS UNIDOS');


INSERT INTO Fabricante VALUES (4,'DYNAMIC','ESPAÑA');

INSERT INTO Fabricante VALUES (5,'BORLAND','ESTADOS UNIDOS');

INSERT INTO Fabricante VALUES (6,'SYMANTEC','ESTADOS UNIDOS');

SELECT * FROM FABRICANTE;

Figura 13. INSERT para la tabla Fabricante


2.2.2 Registros de la tabla PROGRAMA

INSERT INTO Programa VALUES (1,'APPLICATION SERVER','9i');

INSERT INTO Programa VALUES (2,'DATA BASE','8i');

INSERT INTO Programa VALUES (3,'DATA BASE','9i');

INSERT INTO Programa VALUES (4,'DATA BASE','10g');

INSERT INTO Programa VALUES (5,'DEVELOPER','10g');

INSERT INTO Programa VALUES (6,'ACCESS','97');

INSERT INTO Programa VALUES (7,'ACCESS','2000');

INSERT INTO Programa VALUES (8,'ACCESS','XP');

INSERT INTO Programa VALUES (9,'WINDOWS','98');

INSERT INTO Programa VALUES (10,'WINDOWS','XP PROFESSIONAL');

INSERT INTO Programa VALUES (11,'WINDOWS','XP HOME EDITION');

INSERT INTO Programa VALUES (12,'WINDOWS','2003 SERVER');

INSERT INTO Programa VALUES (13,'NORTON INTERNET SECURITY','2004');

INSERT INTO Programa VALUES (14,'FREDDY HARDEST',' ');

INSERT INTO Programa VALUES (15,'PARADOX','2');

INSERT INTO Programa VALUES (16,'C++ BUILDER','55');

INSERT INTO Programa VALUES (17,'DB/2','20');

INSERT INTO Programa VALUES (18,'OS/2','10');

INSERT INTO Programa VALUES (19,'JBUILDER','X');


INSERT INTO Programa VALUES (20,'LA PRISION','10');

SELECT * FROM programa;


2.2.3 Registros de la tabla ALMACENES

INSERT INTO Almacenes VALUES (1,'El Corte Inglés','Sevilla');

INSERT INTO Almacenes VALUES (2,'El Corte Inglés','Madrid');

INSERT INTO Almacenes VALUES (3,'Jump','Valencia');

Figura 14. INSERT tabla Almacenes

INSERT INTO Almacenes VALUES (4,'Centro Mail','Sevilla');

INSERT INTO Almacenes VALUES (5,'FNAC','Barcelona');

2.2.4 Registros de la tabla CLIENTE


INSERT INTO Cliente VALUES (1,'PEPITO PEREZ',38);

INSERT INTO Cliente VALUES (2,'JUAN CHARRASQUIADO',55);

INSERT INTO Cliente VALUES (3,'MARTIN PESCADOR',38);

INSERT INTO Cliente VALUES (4,'ROSA CANTOR',25);

SELECT * FROM CLIENTE;

Figura 15. INSERT tabla Cliente

2.2.5 Registros de la tabla REGISTRO


INSERT INTO Registro VALUES ('INTERNET',1,1,1);

INSERT INTO Registro VALUES ('TARJETA POSTAL',1,3,4);

INSERT INTO Registro VALUES ('TELEFONO',4,2,10);

INSERT INTO Registro VALUES ('TARJETA POSTAL',4,1,10);

INSERT INTO Registro VALUES ('INTERNET',5,2,12);

INSERT INTO Registro VALUES ('INTERNET',2,4,15);

SELECT * FROM REGISTRO;


Figura 16. INSERT tabla Registro

2.2.6 Registros de la tabla PROG/FAB

INSERT INTO `PROG/FAB` VALUES (1,1);

INSERT INTO `PROG/FAB` VALUES (1,2);

INSERT INTO `PROG/FAB` VALUES (1,3);

INSERT INTO `PROG/FAB` VALUES (1,4);

INSERT INTO `PROG/FAB` VALUES (1,5);

INSERT INTO `PROG/FAB` VALUES (2,6);


INSERT INTO `PROG/FAB` VALUES (2,7);

INSERT INTO `PROG/FAB` VALUES (2,8);

INSERT INTO `PROG/FAB` VALUES (2,9);

INSERT INTO `PROG/FAB` VALUES (2,10);

INSERT INTO `PROG/FAB` VALUES (2,11);

INSERT INTO `PROG/FAB` VALUES (2,12);

INSERT INTO `PROG/FAB` VALUES (6,13);

INSERT INTO `PROG/FAB` VALUES (3,17);

INSERT INTO `PROG/FAB` VALUES (3,18);


INSERT INTO `PROG/FAB` VALUES (5,19);

INSERT INTO `PROG/FAB` VALUES (5,15);

INSERT INTO `PROG/FAB` VALUES (5,16);

Figura 17. INSERT tabla Prog/Fab

INSERT INTO `PROG/FAB` VALUES (4,14);

INSERT INTO `PROG/FAB` VALUES (4,20);

SELECT * FROM `PROG/FAB`;

2.2.7 Registros de la tabla PROG/ALMA


INSERT INTO `PROG/ALMA` VALUES (10,1,1);

INSERT INTO `PROG/ALMA` VALUES (8,7,2);

INSERT INTO `PROG/ALMA` VALUES (4,9,1);

INSERT INTO `PROG/ALMA` VALUES (6,11,2);

INSERT INTO `PROG/ALMA` VALUES (4,4,4);

SELECT * FROM `PROG/ALMA`;


Figura 18. INSERT tabla Prog/Alma

2.3 Consultas de la base de datos empresa

2.3.1 Consulta 1

Averiguar el DNI de todos los clientes.


SELECT DNI FROM CLIENTE

Figura 19. Consulta DNI Cliente

2.3.2 Consulta 2

Consulta todos los datos de todos los programas.

SELECT * FROM PROGRAMA;


Figura 20. Consulta programa

2.3.3 Consulta 3

Obtén un listado con los nombres de todos los programas.

SELECT Nombre FROM PROGRAMA;


Figura 21. Consulta 3. Listado nombre de programas

2.3.4 Consulta 4

Genere un listado con todos los comercios

SELECT * FROM Almacenes;


Figura 22. Consulta comercios

2.3.5 Consulta 5

Genera un listado de las ciudades con establecimientos donde se venden programas sin que

aparezcan valores duplicados:

SELECT DISTINCT Ciudad FROM ALMACENES;


Figura 23. Ciudades que venden programas

2.3.6 Consulta 6

Obtén una lista con los nombres de programas, sin que aparezcan valores duplicados (utiliza

DISTINCT).

SELECT DISTINCT Nombre FROM ALMACENES;


Figura 24. Listado de programas

2.3.7 Consulta 7

Obtén el DNI más 4 de todos los clientes.

SELECT (DNI+4) AS DNI FROM cliente;

Figura 25. Figura 26. DNI 4 de todos los clientes

2.3.8 Consulta 8

Haz un listado con los códigos de los programas multiplicados por 7.


SELECT CODIGO, CODIGO*7 AS MULTIPLICADOS_POR_7 FROM PROGRAMA;

Figura 27. Listado de códigos de programa multiplicados por 7

2.3.9 Consulta 9

¿Cuáles son los programas cuyo código es inferior o igual a 10?

SELECT CODIGO,NOMBRE FROM PROGRAMA

WHERE CODIGO<=10;

Figura 28. Programa cuyo código es menor e igual a 10


2.3.10 Consulta 10

¿Cuál es el programa cuyo código es 11?

SELECT CODIGO,NOMBRE FROM PROGRAMA

WHERE CODIGO=11;

Figura 29. Programa cuyo código es 11

2.3.11 Consulta 11

¿Qué fabricantes son de Estados Unidos?

SELECT NOMBRE FROM FABRICANTE


WHERE PAIS='ESTADOS UNIDOS';

Figura 30. Fabricantes de Estados Unidos

2.3.12 Consulta 12

¿Cuáles son los fabricantes no españoles? Utilizar el operador IN.

SELECT NOMBRE FROM FABRICANTE WHERE NOMBRE NOT IN('ESPAÑA');


Figura 31. Fabricantes que no son de España

2.3.13 Consulta 13

Obtén un listado con los códigos de las distintas versiones de Windows.


SELECT CODIGO FROM PROGRAMA WHERE NOMBRE='WINDOWS';

Figura 32. Códigos de las distintas versiones de Windows

2.3.14 Consulta 14

¿En qué ciudades comercializa programas El Corte Inglés?

SELECT CIUDAD FROM ALMACENES WHERE NOMBRE='El corte Inglés';

Figura 33. Ciudades donde comercializa programas el Corte Inglés


2.3.15 Consulta 15

¿Qué otros comercios hay, además de El Corte Inglés? Utilizar el operador IN.

SELECT CIUDAD FROM ALMACENES WHERE NOMBRE NOT IN('El corte Inglés');

Figura 34. Ciudades con comercios diferentes al corte inglés.

2.3.16 Consulta 16

Genera una lista con los códigos de las distintas versiones de Windows y Access.

Utilizar el operador IN
SELECT CODIGO FROM PROGRAMA WHERE NOMBRE IN('WINDOWS','ACCESS');

Figura 35. Listado de códigos de las versiones de Windows y Access

2.3.17 Consulta 17

Obtén un listado que incluya los nombres de los clientes de edades comprendidas entre 10 y 25 y

de los mayores de 50 años. Da una solución con BETWEEN y otra sin

BETWEEN.

Solución 1. Con BETWEEN

select * from cliente


where edad between '10' and '25'or edad > '50';
Figura 36. Consulta con between

Solución 2. Sin BETWEEN

select * from cliente


where edad >'10' and edad <= '25' or edad > '50';
2.3.18 Consulta 18

Saca un listado con los comercios de Sevilla y Madrid. No se admiten valores duplicados.

SELECT DISTINCT NOMBRE FROM ALMACENES WHERE CIUDAD IN('Sevilla','Madrid');


Figura 37. Comercios de Sevilla y Madrid.
2.3.19 Consulta 19

¿Qué clientes terminan su nombre en la letra “o”?

SELECT NOMBRE FROM CLIENTE WHERE NOMBRE LIKE '%O';

Figura 38.Clientes que terminan con la letra o

2.3.20 Consulta 20

¿Qué clientes terminan su nombre en la letra “o” y, además, son mayores de30 años?

SELECT NOMBRE FROM CLIENTE WHERE NOMBRE LIKE '%O' AND EDAD>30;

Figura 39. Clientes que terminan en O y mayores a 30 años

2.3.21 Consulta 21
Obtén un listado en el que aparezcan los programas cuya versión finalice por una letra i, o cuyo

nombre comience por una A o por una W.

SELECT NOMBRE FROM PROGRAMA WHERE VERSION LIKE '%i' OR NOMBRE LIKE 'A%'OR NOMBRE

LIKE 'W%';

Figura 40. Programas cuya versión termina en O, o los nombres comienzan en A o W.

2.3.22 Consulta 22

Obtén un listado en el que aparezcan los programas cuya versión finalice por una letra

i, o cuyo nombre comience por una A o por una W.

select * from programas


where nombre like '%i' or nombre like 'a%' or nombre like 'w%';
Figura 41. Consulta 22

2.3.23 Consulta 23.

Obtén un listado en el que aparezcan los programas cuya versión finalice por una letra i, o cuyo
nombre comience por una A y termine por una S.

select * from programas


where version like '%i' or nombre like 'a%' and nombre like '%s';
Figura 42. programas cuya versión finalice por una letra i, o cuyo nombre comience por una A y
termine por una S.

2.3.24 Consulta 24.

Obtén un listado en el que aparezcan los programas cuya versión finalice por una letra i, y cuyo
nombre no comience por una A.

select * from programas


where version like '%i' and nombre not like 'a%';
Figura 43. programas cuya versión finalice por una letra i, y cuyo nombre no comience por una A.

2.3.25 Consulta 25

Obtén una lista de empresas por orden alfabético ascendente.

select * from fabricante


order by nombre asc;
Figura 44. lista de empresas por orden alfabético ascendente.

2.3.26 Consulta 26

Genera un listado de empresas por orden alfabético descendente.

select * from fabricante


order by nombre desc;
Figura 45. listado de empresas por orden alfabético descendente

2.3.27 Consulta 27

Obtén un listado de programas por orden de versión

select * from programas


order by version;
Figura 46. listado de programas por orden de versión

2.3.28 Consulta 28.

Genera un listado de los programas que desarrolla Oracle.

select * from programas


where codigo = ANY (select codigo from prog_fab
where Id_Fab = (select id_fab from fabricante
where nombre = 'oracle')
)
;
Figura 47. listado de los programas que desarrolla Oracle.

2.3.29 Consulta 29

¿Qué comercios distribuyen Windows?

select * from almacenes


where cif = ANY (select cif from prog_alma
where codigo = ANY (select codigo from programas
where nombre = 'windows')
)
;

La consulta regresa vacía, se modifica la tabla Prog_Alma, adicionando la línea 4,10,5.


Figura 48. comercios distribuyen Windows

2.3.30 Consulta 30

Genera un listado de los programas y cantidades que se han distribuido a El Corte Inglés de Madrid.

select * from prog_alma


where cif = (select cif from almacenes
where nombre = 'el corte ingles' and ciudad = 'madrid')
;
Figura 49. listado de los programas y cantidades que se han distribuido a El Corte consulta vacía

Consulta regresa vacía por lo cual se agregan dos filas en la tabla prog_alma

INSERT INTO prog_alma (`Cantidad`, `Codigo`, `CIF`) VALUES ('52', '10', '2');

INSERT INTO prog_alma (`Cantidad`, `Codigo`, `CIF`) VALUES ('12', '16', '2');
Figura 50. listado de los programas y cantidades que se han distribuido a El Corte

2.3.31 Consulta 31

¿Qué fabricante ha desarrollado Freddy Hardest?

select nombre from fabricante


where id_fab = ( select id_fab from prog_fab
where codigo = (select codigo from programas
where nombre = 'FREDDY HARDEST')
Figura 51, fabricante ha desarrollado Freddy Hardest

2.3.32 Consulta 31

Selecciona el nombre de los programas que se registran por Internet.

select nombre from programas


where codigo = any (select codigo from registro
where medio = 'internet')
;
Figura 52. nombre de los programas que se registran por Internet

2.3.33 Consulta 33

Selecciona el nombre de las personas que se registran por Internet.


select nombre from cliente
where dni = any (select dni from registro
where medio = 'internet')
;
Figura 53. nombre de las personas que se registran por Internet

2.3.34 Consulta 33

¿Qué medios ha utilizado para registrarse Pepe Pérez?

select medio from registro


where dni = (select dni from cliente
where nombre = 'pepito perez')
;
Figura 54. Medios registro Pepito Perez

2.3.35 Consulta 35.

¿Qué usuarios han optado por Internet como medio de registro?

select nombre from cliente


where dni = any (select dni from registro

where medio = 'internet');


Figura 55. usuarios han optado por Internet como medio de registro

2.3.36 Consulta 36

¿Qué programas han recibido registros por tarjeta postal?

select nombre from programas


where codigo = any (select codigo from registro
where medio = 'tarjeta postal')
;
Figura 56. programas han recibido registros por tarjeta postal

2.3.37 Consulta 37

¿En qué localidades se han vendido productos que se han registrado por Internet?

select ciudad from almacenes


where cif = any (select cif from registro
where medio = 'internet'
);
Figura 57. localidades se han vendido productos que se han registrado por Internet

2.3.38 Consulta 38

Obtén un listado de los nombres de las personas que se han registrado por Internet,

junto al nombre de los programas para los que ha efectuado el registro.

select cliente.dni, cliente.nombre, registro.medio, programas.nombre from cliente


inner join registro ON cliente.dni = registro.dni
inner join programas ON registro.codigo = programas.codigo
where medio = 'Internet';
Figura 58. Listado de los nombres de las personas que se han registrado por Internet.

2.3.39 Consulta 39

Genera un listado en el que aparezca cada cliente junto al programa que ha registrado,

el medio con el que lo ha hecho y el comercio en el que lo ha adquirido.

select cliente.dni, cliente.nombre, registro.medio, programas.nombre, almacenes.Nombre


from cliente
inner join registro ON cliente.dni = registro.dni
inner join programas ON registro.codigo = programas.codigo
inner join almacenes ON almacenes.cif = registro.cif;
Figura 59. listado en el que aparezca cada cliente junto al programa que ha registrado.

2.3.40 Consulta 40.

Genera un listado con las ciudades en las que se pueden obtener los productos de Oracle.

select ciudad from almacenes


where cif = any (select cif from prog_alma
where codigo = any (select codigo from prog_fab
where id_fab = (select id_fab from fabricante
where nombre = 'oracle')
)
);
Figura 60. listado con las ciudades en las que se pueden obtener los productos de Oracle

2.3.41 Consulta 41

Obtén el nombre de los usuarios que han registrado Access XP.

select nombre from cliente


where dni = any (select codigo from registro
where codigo = (select codigo from programas
where nombre = 'Access' and version = 'Xp')
);
Figura 61. nombre de los usuarios que han registrado Access XP consulta vacia.

Consulta regresa vacía, se ingresa valores adicionales a la tabla registros

INSERT INTO registro (`Medio`, `CIF`, `DNI`, `Codigo`) VALUES ('Internet', '3', '3', '8');
Figura 62. nombre de los usuarios que han registrado Access XP

2.3.42 Consulta 42

Obtener el número de programas que hay en la tabla programas.

select count(*) from programas;


Figura 63. número de programas que hay en la tabla programas

2.3.43 Consulta 43

Calcula el número de clientes cuya edad es mayor de 40 años.

select count(*) from cliente


where edad > '40';
Figura 64. el número de clientes cuya edad es mayor de 40 años.

2.3.44 Consulta 44

Calcula el número de productos que ha vendido el establecimiento cuyo CIF es 1.

select sum(cantidad) as Cantidad from prog_alma


where cif = '1' ;
Figura 65. número de productos que ha vendido el establecimiento cuyo CIF es 1. consulta vacia

La consulta regresa vacía, se modifica la tabla prog_alma agregando registros.

INSERT INTO prog_alma (`Cantidad`, `Codigo`, `CIF`) VALUES ('23', '16', '1');

INSERT INTO prog_alma (`Cantidad`, `Codigo`, `CIF`) VALUES ('78', '10', '1');

INSERT INTO prog_alma (`Cantidad`, `Codigo`, `CIF`) VALUES ('45', '18', '1');
Figura 66. número de productos que ha vendido el establecimiento cuyo CIF es 1.

2.3.45 Consulta 45

Calcula la media de programas que se venden cuyo código es 7.

select avg(cantidad) as cantidad from prog_alma

where codigo = '7';


Figura 67. media de programas que se venden cuyo código es 7. Consulta vacía

Consulta regresa vacia, se agregan filas a la tabla prog_alma

INSERT INTO prog_alma (`Cantidad`, `Codigo`, `CIF`) VALUES ('12', '7', '2');

INSERT INTO prog_alma (`Cantidad`, `Codigo`, `CIF`) VALUES ('23', '7', '5');

INSERT INTO prog_alma (`Cantidad`, `Codigo`, `CIF`) VALUES ('59', '7', '1');
Figura 68. media de programas que se venden cuyo código es 7

2.3.46 Consulta 46

Calcula la mínima cantidad de programas de código 7 que se ha vendido

select min(cantidad) as cantidad from prog_alma


where codigo = '7';
Figura 69. mínima cantidad de programas de código 7 que se ha vendido

2.3.47 Consulta 47

Calcula la máxima cantidad de programas de código 7 que se ha vendido.

select MAX(cantidad) as cantidad from prog_alma


where codigo = '7';
.

Figura 70. Calcula la máxima cantidad de programas de código 7 que se ha vendido

2.3.48 Consulta 48

¿En cuántos establecimientos se vende el programa cuyo código es 7?

Select count(cif) from prog_alma


where codigo = '7';
Figura 71. establecimientos se vende el programa cuyo código es 7

2.3.49 Consulta 49

Calcular el número de registros que se han realizado por Internet.

Select count(medio) from registro


where medio = 'internet';
Figura 72. Calcular el número de registros que se han realizado por Internet

2.3.50 Consulta 50

Obtener el número total de programas que se han vendido en Sevilla.

select sum(cantidad) as cantidad from prog_alma


where cif IN (select cif from almacenes
where ciudad = 'Sevilla')
;
Figura 73. el número total de programas que se han vendido en Sevilla

Se rectifica los valores conociendo que los códigos CIF de las tiendas en Sevilla son 1 y 4.
Figura 74. Consulta códigos CIF 1 y 4

2.3.51 Consulta 51

Calcular el número total de programas que han desarrollado los fabricantes cuyo país es “Estados
Unidos”.

select count(nombre) as 'Numero de Programas' from programas


where codigo = ANY (select codigo from prog_fab
where id_fab = any(select id_fab from fabricante
where pais = 'estados unidos')
);
Figura 75. el número total de programas que han desarrollado los fabricantes cuyo país es “Estados
Unidos”.

2.3.52 Consulta 52

Visualiza el nombre de todos los clientes en mayúscula. En el resultado de la consulta debe


aparecer también la longitud de la cadena nombre.

select upper(nombre) as Nombre,length(nombre) as Longitud from cliente;


Figura 76. nombre de todos los clientes en mayúscula. En el resultado de la consulta debe aparecer
también la longitud de la cadena nombre.

2.3.53 Consulta 53

Con una consulta concatena los campos nombre y versión de la tabla PROGRAMA.

select concat_ws('/', nombre, version ) as 'Programa/Version' from programas;


Figura 77. concatena los campos nombre y versión de la tabla PROGRAMA.

2.3.54 Consulta 54

Nombre de aquellos fabricantes cuyo país es el mismo que “Oracle”. (Subconsulta).

select nombre from fabricante


where pais = (select pais from fabricante
where nombre = 'oracle')
;
Figura 78. Nombre de aquellos fabricantes cuyo país es el mismo que “Oracle”.

2.3.55 Consulta 55

Nombre de aquellos clientes que tienen la misma edad que Pepe Pérez. (Subconsulta).

select nombre from cliente


where edad = (select edad from cliente
where nombre = 'Pepito Perez')
;
Figura 79. Nombre de aquellos clientes que tienen la misma edad que Pepe Pérez.

2.3.56 Consulta 56

Genera un listado con los comercios que tienen su sede en la misma ciudad que tiene

el comercio “FNAC”. (Subconsulta).

select * from almacenes


where ciudad = (select ciudad from almacenes
where nombre = 'FNAC')
;
Figura 80. listado con los comercios que tienen su sede en la misma ciudad que tiene FNAC

2.3.57 Consulta 57

Nombre de aquellos clientes que han registrado un producto de la misma forma que el

cliente “Pepe Pérez”. (Subconsulta).

select nombre from cliente


where dni = any (select dni from registro
where medio = any (select medio from registro
where dni = (select dni from cliente
where nombre = 'Pepito Perez')
)
)
;
Figura 81. Nombre de aquellos clientes que han registrado un producto de la misma forma que Pepe
Perez
3 Parte 3. Subconsultas.

Realizar las Siguientes subconsultas:

3.1 Subconsulta 1.

Mostrar los datos de los empleados que pertenezcan al mismo departamento que ʻGILʼ.

select * from emple


where depart_dept_no = (select depart_dept_no from emple
where apellido = 'gil')
;
Figura 82. los datos de los empleados que pertenezcan al mismo departamento que ʻGILʼ

3.2 Subconsulta 2

Mostrar los datos de los empleados que tengan el mismo oficio que ʻCEREZOʼ. El resultado debe ir
ordenado por apellido.

select * from emple


where oficio = (select oficio from emple
where apellido = 'Cerezo')
order by apellido;
Figura 83. Mostrar los datos de los empleados que tengan el mismo oficio que ʻCEREZOʼ.

3.3 Subconsulta 3

Mostrar los empleados (nombre, oficio, salario y fecha de alta) que desempeñen el mismo oficio
que ʻJIMÉNEZʼ o que tengan un salario mayor o igual que ʻFERNÁNDEZ .

select apellido, oficio, salario,fecha_alt from emple


where oficio = (select oficio from emple
where apellido = 'Jimenez')
or salario >= any (select salario from emple
where apellido = 'Fernandez')
;

Figura 84. Empleados que desempeñen el mismo oficio que ʻJIMÉNEZʼ o que tengan un salario
mayor o igual que ʻFERNÁNDEZ .

3.4 Subconsulta 4

Mostrar en pantalla el apellido, oficio y salario de los empleados del departamento de ʻFERNÁNDEZʼ
que tengan su mismo salario.

select apellido, oficio, salario from emple


where depart_dept_no = (select depart_dept_no from emple
where apellido = 'Fernandez')
and salario = (select salario from emple
where apellido = 'Fernandez')
;
Figura 85. los empleados del departamento de ʻFERNÁNDEZʼ que tengan su mismo salario.

3.5 Subconsulta 5.

Mostrar los datos de los empleados que tengan un salario mayor que ʻGILʼ y que pertenezcan al
departamento número 10.

select * from emple


where salario > any (select salario from emple
where apellido = 'Gil')
and depart_dept_no = '10';
Figura 86. empleados que tengan un salario mayor que ʻGILʼ y que pertenezcan al departamento
número 10.

3.6 Subconsulta 6.

Mostrar el apellido, salario y nombre del departamento de los empleados que tengan el mismo
oficio que ʻGILʼ.

select emple.apellido, emple.salario, depart.dnombre as departamento from emple


inner join depart ON emple.depart_dept_no = depart.dept_no
where oficio = (select oficio from emple
where apellido = 'Gil')
;

Figura 87. empleados que tengan el mismo oficio que ʻGILʼ.

3.7 Subconsulta 7.

Mostrar el apellido, salario y nombre del departamento de los empleados que tengan el mismo
oficio que ʻGILʼ y que no tengan comisión.
select emple.apellido, emple.oficio, emple.salario, depart.dnombre as departamento from emple
inner join depart ON emple.depart_dept_no = depart.dept_no
where oficio = (select oficio from emple
where apellido = 'Gil')
and comision is null ;

Figura 88. empleados que tengan el mismo oficio que ʻGILʼ y que no tengan comisión.

3.8 Consulta 8.

Mostrar los datos de los empleados cuyo salario sea mayor que la media de todos los salarios.
select * from emple
where salario > (select avg(salario) from emple);

Figura 89. empleados cuyo salario sea mayor que la media de todos los salarios.

3.9 Subconsulta 9.

Seleccionar el apellido del empleado que tiene máximo salario.


select apellido, max(salario) from emple;

Figura 90. apellido del empleado que tiene máximo salario.


4 Bibliografia

Camuña, F. J. (2014). Lenguajes de definición y modificación de datos SQL . Antequera: IC Editorial.

Capallo Portilla, J. R., & Nieto Bernal, W. (2017). Diseño de base de datos. Barranquilla: Universidad
del Norte.

Capel Jimenez, M. (2014). Bases de datos relacionales y modelado de datos. Antequera: IC Editorial.

Marques, M. (2011). Bases de datos. Castello de la Plan: Publicaciones campus del Riu.
5 Apendice A. Script consultas parte 2.

-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;

SET @OLD_SQL_MODE=@@SQL_MODE,
SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

-- -----------------------------------------------------

-- Schema Net_Service

-- -----------------------------------------------------

-- -----------------------------------------------------

-- Schema Net_Service

-- -----------------------------------------------------

CREATE SCHEMA IF NOT EXISTS `Net_Service` DEFAULT CHARACTER SET utf8 ;

USE `Net_Service` ;

-- -----------------------------------------------------

-- Table `Net_Service`.`Programa`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `Net_Service`.`Programa` (

`Codigo` INT NOT NULL,

`Nombre` VARCHAR(45) NULL,

`Version` VARCHAR(45) NULL,


PRIMARY KEY (`Codigo`),

UNIQUE INDEX `Codigo_UNIQUE` (`Codigo` ASC) VISIBLE)

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `Net_Service`.`Fabricante`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `Net_Service`.`Fabricante` (

`Id_fab` INT NOT NULL,

`Nombre` VARCHAR(45) NULL,

`Pais` VARCHAR(45) NULL,

PRIMARY KEY (`Id_fab`))

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `Net_Service`.`Prog_Fab`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `Net_Service`.`Prog_Fab` (

`Id_Fab` INT NOT NULL,

`Codigo` INT NOT NULL,

PRIMARY KEY (`Id_Fab`, `Codigo`),

INDEX `Prog/Codigo_idx` (`Codigo` ASC) VISIBLE,

CONSTRAINT `Fabr_Id`

FOREIGN KEY (`Id_Fab`)

REFERENCES `Net_Service`.`Fabricante` (`Id_fab`)

ON DELETE NO ACTION
ON UPDATE NO ACTION,

CONSTRAINT `Prog_Cod`

FOREIGN KEY (`Codigo`)

REFERENCES `Net_Service`.`Programa` (`Codigo`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `Net_Service`.`Almacenes`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `Net_Service`.`Almacenes` (

`CIF` INT NOT NULL,

`Nombre` VARCHAR(45) NULL,

`Ciudad` VARCHAR(45) NULL,

PRIMARY KEY (`CIF`))

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `Net_Service`.`Prog_alma`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `Net_Service`.`Prog_alma` (

`Cantidad` INT NULL,

`Codigo` INT NOT NULL,

`CIF` INT NOT NULL,

PRIMARY KEY (`Codigo`, `CIF`),


INDEX `Prog/alma_idx` (`CIF` ASC) VISIBLE,

CONSTRAINT `Prog_alma`

FOREIGN KEY (`CIF`)

REFERENCES `Net_Service`.`Almacenes` (`CIF`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `Programa_1`

FOREIGN KEY (`Codigo`)

REFERENCES `Net_Service`.`Programa` (`Codigo`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `Net_Service`.`Cliente`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `Net_Service`.`Cliente` (

`DNI` INT NOT NULL,

`Nombre` VARCHAR(45) NULL,

`Edad` INT NULL,

PRIMARY KEY (`DNI`))

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `Net_Service`.`Registro`

-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Net_Service`.`Registro` (

`Medio` VARCHAR(45) NULL,

`CIF` INT NOT NULL,

`DNI` INT NOT NULL,

`Codigo` INT NOT NULL,

PRIMARY KEY (`CIF`, `DNI`, `Codigo`),

INDEX `Prog/Reg_idx` (`Codigo` ASC) VISIBLE,

INDEX `Cliente/registro_idx` (`DNI` ASC) VISIBLE,

CONSTRAINT `Prog/Reg`

FOREIGN KEY (`Codigo`)

REFERENCES `Net_Service`.`Programa` (`Codigo`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `Cliente/registro`

FOREIGN KEY (`DNI`)

REFERENCES `Net_Service`.`Cliente` (`DNI`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `Alm/Reg`

FOREIGN KEY (`CIF`)

REFERENCES `Net_Service`.`Almacenes` (`CIF`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;

SET SQL_MODE=@OLD_SQL_MODE;

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

INSERT INTO `net_service`.`fabricante` (`Id_fab`, `Nombre`, `Pais`) VALUES ('1', 'ORACLE', 'Estados
Unidos');

INSERT INTO `net_service`.`fabricante` (`Id_fab`, `Nombre`, `Pais`) VALUES ('2', 'MICROSOFT',


'Estados Unidos');

INSERT INTO `net_service`.`fabricante` (`Id_fab`, `Nombre`, `Pais`) VALUES ('3 ', 'IBM', 'Estados
Unidos');

INSERT INTO `net_service`.`fabricante` (`Id_fab`, `Nombre`, `Pais`) VALUES ('4 ', 'DINAMIC',
'España');

INSERT INTO `net_service`.`fabricante` (`Id_fab`, `Nombre`, `Pais`) VALUES ('5 ', 'BORLAND', 'Estados
Unidos');

INSERT INTO `net_service`.`fabricante` (`Id_fab`, `Nombre`, `Pais`) VALUES ('6 ', 'SYMANTEC',
'Estados Unidos');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('1',


'APPLICATION SERVER', '9i');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('2', 'DATABASE',


'8i');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('3', 'DATABASE',


'9i');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('4', 'DATABASE',


'10g');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('5', 'DEVELOPER',


'6i');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('6', 'ACCESS',


'97');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('7', 'ACCESS',


'2000');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('8', 'ACCESS',


'XP');
INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('9', 'WINDOWS',
'98');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('10', 'WINDOWS',


'XP PROFESSIONAL');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('11', 'WINDOWS',


'XP HOME EDITION');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('12', 'WINDOWS',


'2003 SERVER');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('13', 'NORTON


INTERNET SECURITY', '2004');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`) VALUES ('14', 'FREDDY HARDEST');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('15', 'PARADOX',


'2');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('16 ', 'C++
BUILDER', '55');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('17', 'DB/2', '0');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('18', 'OS/2', '10');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('19', 'JBUILDER',


'X');

INSERT INTO `net_service`.`PROGRAMAS` (`Codigo`, `Nombre`, `Version`) VALUES ('20', 'LA PRISION
', '10');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('1', '1');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('1', '2');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('1', '4');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('1', '5');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('2', '6');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('2', '7');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('2', '8');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('2', '9');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('2', '10');


INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('2', '11');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('2', '12');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('1', '3');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('6', '13');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('3', '18');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('3', '17');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('5', '19');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('5', '15');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('5', '16');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('4', '14');

INSERT INTO `net_service`.`PRog_fab` (`Id_Fab`, `Codigo`) VALUES ('4', '20');

INSERT INTO `net_service`.`ALMACENES` (`CIF`, `Nombre`, `Ciudad`) VALUES ('1', 'El Corte Ingles',
'Sevilla');

INSERT INTO `net_service`.`ALMACENES` (`CIF`, `Nombre`, `Ciudad`) VALUES ('2', 'El Corte Ingles',
'Madrid');

INSERT INTO `net_service`.`ALMACENES` (`CIF`, `Nombre`, `Ciudad`) VALUES ('3', 'Jump', 'Valencia');

INSERT INTO `net_service`.`ALMACENES` (`CIF`, `Nombre`, `Ciudad`) VALUES ('4', 'Centro Mail',
'Sevilla');

INSERT INTO `net_service`.`ALMACENES` (`CIF`, `Nombre`, `Ciudad`) VALUES ('5', 'FNAC',


'Barcelona');

INSERT INTO `net_service`.`cliente` (`DNI`, `Nombre`, `Edad`) VALUES ('1', 'Pepito Perez', '38');

INSERT INTO `net_service`.`cliente` (`DNI`, `Nombre`, `Edad`) VALUES ('2', 'Juan Charrasquiado',
'55');

INSERT INTO `net_service`.`cliente` (`DNI`, `Nombre`, `Edad`) VALUES ('3', 'Martin Pescador', '38');

INSERT INTO `net_service`.`cliente` (`DNI`, `Nombre`, `Edad`) VALUES ('4', 'Rosa Cantor', '25');

INSERT INTO `net_service`.`registro` (`Medio`, `CIF`, `DNI`, `Codigo`) VALUES ('Internet', '1', '1', '1');
INSERT INTO `net_service`.`registro` (`Medio`, `CIF`, `DNI`, `Codigo`) VALUES ('Tarjeta Posta', '1', '3',
'4');

INSERT INTO `net_service`.`registro` (`Medio`, `CIF`, `DNI`, `Codigo`) VALUES ('Telefono', '4', '2',
'10');

INSERT INTO `net_service`.`registro` (`Medio`, `CIF`, `DNI`, `Codigo`) VALUES ('Tarjeta Postal', '4', '1',
'10');

INSERT INTO `net_service`.`registro` (`Medio`, `CIF`, `DNI`, `Codigo`) VALUES ('Internet', '5', '2', '12');

INSERT INTO `net_service`.`registro` (`Medio`, `CIF`, `DNI`, `Codigo`) VALUES ('Internet', '2', '4', '15');

INSERT INTO `net_service`.`registro` (`Medio`, `CIF`, `DNI`, `Codigo`) VALUES ('Internet', '1', '1', '1');

INSERT INTO `net_service`.`registro` (`Medio`, `CIF`, `DNI`, `Codigo`) VALUES ('Tarjeta Posta', '1', '3',
'4');

INSERT INTO `net_service`.`registro` (`Medio`, `CIF`, `DNI`, `Codigo`) VALUES ('Telefono', '4', '2',
'10');

INSERT INTO `net_service`.`registro` (`Medio`, `CIF`, `DNI`, `Codigo`) VALUES ('Tarjeta Postal', '4', '1',
'10');

INSERT INTO `net_service`.`registro` (`Medio`, `CIF`, `DNI`, `Codigo`) VALUES ('Internet', '5', '2', '12');

INSERT INTO `net_service`.`registro` (`Medio`, `CIF`, `DNI`, `Codigo`) VALUES ('Internet', '2', '4', '15');

Consultas

select dni from cliente;

select * from programas;

select nombre from almacenes;

select distinct ciudad from almacenes;

select distinct nombre from programas;


select (codigo*7) as codigo, nombre from programas;

select * from programas

where codigo <= 10;

select nombre from programas

where codigo =10;

select nombre from fabricante

where pais = 'Estados Unidos';

select nombre from fabricante

where pais not in ( 'Espana');

select codigo from programas

where nombre = 'windows';

select ciudad from almacenes

where nombre = 'El corte Ingles';

select * from almacenes

where nombre not in ('El corte ingles');

select * from programas

where nombre in ('windows','access');

select * from cliente


where edad between '10' and '25'or edad > '50';

select * from cliente

where edad >'10' and edad <= '25' or edad > '50';

select distinct nombre from almacenes

where ciudad in ('sevilla','madrid');

select * from cliente

where nombre like '%o';

select * from cliente

where nombre like '%o' and edad >'30';

select * from programas

where nombre like '%i' or nombre like 'a%' or nombre like 'w%';

select * from programas

where version like '%i' or nombre like 'a%' and nombre like '%s';

select * from programas

where version like '%i' and nombre not like 'a%';

select * from fabricante

order by nombre asc;

select * from fabricante

order by nombre desc;


select * from programas

order by version;

select * from programas

where codigo = ANY (select codigo from prog_fab

where Id_Fab = (select id_fab from fabricante

where nombre = 'oracle')

);

where cif = (select cif from almacenes

where nombre = 'el corte ingles' and ciudad = 'madrid')

select nombre from fabricante

where id_fab = ( select id_fab from prog_fab

where codigo = (select codigo from programas

where nombre = 'FREDDY HARDEST')

select nombre from programas

where codigo = any (select codigo from registro

where medio = 'internet')

select medio from registro

where dni = (select dni from cliente

where nombre = 'pepito perez')

;
select nombre from cliente

where dni = any (select dni from registro

where medio = 'internet');

select nombre from programas

where codigo = any (select codigo from registro

where medio = 'tarjeta postal')

select ciudad from almacenes

where cif = any (select cif from registro

where medio = 'internet'

);

select cliente.dni, cliente.nombre, registro.medio, programas.nombre from cliente

inner join registro ON cliente.dni = registro.dni

inner join programas ON registro.codigo = programas.codigo

where medio = 'Internet';

select cliente.dni, cliente.nombre, registro.medio, programas.nombre, almacenes.Nombre from


cliente

inner join registro ON cliente.dni = registro.dni

inner join programas ON registro.codigo = programas.codigo

inner join almacenes ON almacenes.cif = registro.cif;

select ciudad from almacenes

where cif = any (select cif from prog_alma


where codigo = any (select codigo from prog_fab

where id_fab = (select id_fab from fabricante

where nombre = 'oracle')

);

select nombre from cliente

where dni = any (select dni from registro

where codigo = (select codigo from programas

where nombre = 'ACCESS' and


version = 'XP')

);

select * from registro;

select * from programas;

select count(*) from programas;

select count(*) from cliente

where edad > '40';

select sum(cantidad) as Cantidad from prog_alma

where cif = '1' ;

select avg(cantidad) as cantidad from prog_alma

where codigo = '7';

select * from prog_alma;

select * from programa;


select min(cantidad) as cantidad from prog_alma

where codigo = '7';

select MAX(cantidad) as cantidad from prog_alma

where codigo = '7';

Select count(cif) from prog_alma

where codigo = '7';

Select count(medio) from registro

where medio = 'internet';

select * from registro;

select sum(cantidad) as cantidad from prog_alma

where cif IN (select cif from almacenes

where ciudad = 'Sevilla')

select count(nombre) as 'Numero de Programas' from programas

where codigo = ANY (select codigo from prog_fab

where id_fab = any(select id_fab from fabricante

where pais = 'estados unidos')

select upper(nombre) as Nombre,length(nombre) as Longitud from cliente;

select concat_ws('/', nombre, version ) as 'Programa/Version' from programas;

select nombre from fabricante


where pais = (select pais from fabricante

where nombre = 'oracle')

select nombre from cliente

where edad = (select edad from cliente

where nombre = 'Pepito Perez')

;
6 Apendice B Script consultas parte 3.

use msql1;

show full tables;

select * from emple

where depart_dept_no = (select depart_dept_no from emple

where apellido = 'gil')

select * from emple

where oficio = (select oficio from emple

where apellido = 'Cerezo')

order by apellido;

select apellido, oficio, salario,fecha_alt from emple

where oficio = (select oficio from emple

where apellido = 'Jimenez')

and salario >= any (select salario from emple

where apellido = 'Fernandez')

select apellido, oficio, salario from emple

where depart_dept_no = (select depart_dept_no from emple

where apellido = 'Fernandez')


and salario = (select salario from emple

where apellido = 'Fernandez')

select * from emple

where salario > any (select salario from emple

where apellido = 'Gil')

and depart_dept_no = '10';

select emple.apellido, emple.oficio, emple.salario, depart.dnombre as departamento from emple

inner join depart ON emple.depart_dept_no = depart.dept_no

where oficio = (select oficio from emple

where apellido = 'Gil')

select * from depart;

select * from emple;

select emple.apellido, emple.oficio, emple.salario, depart.dnombre as departamento from emple

inner join depart ON emple.depart_dept_no = depart.dept_no

where oficio = (select oficio from emple

where apellido = 'Gil')

and comision is null ;

select * from emple

where salario > (select avg(salario) from emple);

select apellido, max(salario) from emple;

También podría gustarte