Documente Academic
Documente Profesional
Documente Cultură
PRIMERO DE ASIR
Pgina 1
PRIMERO DE ASIR
Pgina 2
Lo siguiente que tenemos que hacer es poner el nombre que queramos a la base de datos y pulsamos en aceptar.
PRIMERO DE ASIR
Pgina 3
Para empezar a utilizarla lo nico que tendramos que hacer seria pulsar en nueva consulta y escribir use seguido del nombre de la base de datos, en este caso como vemos use SQL una vez escrito esto ejecutaramos la consulta y ya empezaramos a utilizar la base de datos.
PRIMERO DE ASIR
Pgina 4
TABLA COMPONENTES
CREATE TABLE Componentes (C# CHAR(3), CNombre VARCHAR(20), Color CHAR(10), Peso INT, Ciudad VARCHAR(30), CONSTRAINT C#_pk PRIMARY KEY(C#))
PRIMERO DE ASIR
Pgina 5
TABLA ARTICULOS
CREATE TABLE Articulos (T# CHAR(3), TNombre VARCHAR(20), Ciudad VARCHAR(30), CONSTRAINT T#_pk PRIMARY KEY(T#))
TABLA ENVIOS
CREATE TABLE Envios (P# CHAR(3) CONSTRAINT P# REFERENCES Proveedores(P#), C# CHAR(3) CONSTRAINT C# REFERENCES Componentes(C#), T# CHAR(3) CONSTRAINT T# REFERENCES Articulos(T#), Cantidad INT)
PRIMERO DE ASIR
Pgina 6
PRIMERO DE ASIR
Pgina 7
PRIMERO DE ASIR
Pgina 8
En este caso la fila que hemos introducido, contendr valores NULL o valores predeterminados como podemos ver en la siguiente imagen.
PRIMERO DE ASIR
Pgina 9
Solucin al problema anterior, para que esto no se produzca, si tenemos desordenados los datos de las tablas, tendramos que especificar especificando el orden de los nombres de las columnas como vemos a continuacin. insert into articulos (tnombre,ciudad,t#) values ('perforadora','malaga','t2')
PRIMERO DE ASIR
Pgina 10
insert into envios values ('p1','c1','t1',200), ('p1','c1','t4',700), ('p2','c3','t1',400), ('p2','c3','t2',200), ('p2','c3','t3',200), ('p2','c3','t4',500), ('p2','c3','t5',600), ('p2','c3','t6',400), ('p2','c3','t7',800), ('p2','c5','t2',100), ('p3','c3','t1',200), ('p3','c4','t2',500), ('p4','c6','t3',300), ('p4','c6','t7',300), ('p5','c2','t2',200), ('p5','c2','t4',100), ('p5','c5','t4',500), ('p5','c5','t7',100), ('p5','c6','t2',200), ('p5','c1','t4',100), ('p5','c3','t4',200), ('p5','c4','t4',800), ('p5','c5','t5',400), ('p5','c6','t4',500)
PRIMERO DE ASIR
Pgina 11
2. Obtener todos los valores de P# para los proveedores que abastecen el articulo Tl.
Ahora en este ejemplo vemos que lo que hacemos es obtener los valores de p# para esto hacemos un select sobre este desde la tabla a la que pertenece ENVIOS donde t# es uno, para asi obtener los proveedores que estan relacionados con el artculo T1. SELECT P# FROM ENVIOS WHERE T#= T1
PRIMERO DE ASIR
Pgina 12
[EJERCICIOS SQL 1-14] 3. Obtener la lista de pares de atributos {COLOR, CIUDAD) de la tabla componentes eliminando los pares duplicados.
En este tercer ejercicio lo que estamos haciendo es utilizar la funcion DISTINCT de color y ciudad ,la cual realiza una seleccin de filas cuyos valores en la columna especificada no estn duplicados sobre componentes. SELECT DISTINCT COLOR, CIUDAD FROM COMPONENTES
4. Obtener de la tabla de artculos los valores de T# y CIUDAD donde el nombre de la ciudad acaba en D o contiene al menos una E.
Hacemos un selecet de T# y ciudad desde artculos donde el nombre de la ciudad acabe en D o contiene al menos una de, esto lo hacemos con el operador LIKE, como podemos ver en el cdigo. SELECT T#, CIUDAD FROM ARTICULOS WHERE CIUDAD LIKE '%D' OR CIUDAD LIKE '%E%'
PRIMERO DE ASIR
Pgina 13
[EJERCICIOS SQL 1-14] 5. Obtener los valores de P# para los proveedores que suministran para el artculo T1 el componente Cl.
Obtenemos los valores de P# mediante un select desde la tabla envios cuando se cumple la condicion que le indicamos mediante el wher que son cuando suministran el artculo T1 y el componente C1. SELECT P# FROM ENVIOS WHERE T#=T1 AND C#=C1
6. Obtener los valores de TNOMBRE en orden alfabtico para los artculos abastecidos por el proveedor P1.
Hacemos un select sobre TNOMBRE para los artculos que son abastecidos por el proveedor P1 para ello tendremos que hacer el INNER JOIN correspondiente entre las tablas artculos y envios. SELECT TNOMBRE FROM ARTICULOS INNER JOIN ENVIOS ON ENVIOS.P#='P1' AND ENVIOS.T#=ARTICULOS.T#
PRIMERO DE ASIR
Pgina 14
[EJERCICIOS SQL 1-14] 7. Obtener los valores de C# para los componentes suministrados para cualquier articulo de MADRID.
Aqui lo que hacemos es obtener los valores de C#, es decir de los componentes suministrados para cualquier artculo de madrid para ello utilizamos la funcion distinct evitando as valores duplicados y hacemos un inner join entre la tabla articulos y envios para ello hacemos despues la comparacion correspondiente entre el valor que se va a comparar articulos y metemos la concicion de que estos articulos tengan como valor dentro del campo ciudad Madrid SELECT DISTINCT ENVIOS.C# FROM ARTICULOS INNER JOIN ENVIOS ON ARTICULOS.T#=ENVIOS.T# WHERE ARTICULOS.CIUDAD='MADRID'
8. Obtener todos los valores de C# de los componentes tales que ningn otro componente tenga un valor de peso inferior.
Con este selec obtenemos el valor de c# para el componente o componentes con el minimo valor en peso, que es lo que le indicamosen la condicin, lo unico digamos a destacar esque esta condicion esta formada por un select. SELECT c# FROM componentes WHERE peso = (SELECT MIN(peso) FROM componentes );
PRIMERO DE ASIR
Pgina 15
[EJERCICIOS SQL 1-14] 9. Obtener los valores de P# para los proveedores que suministren los artculos T1 y T2.
Hacemos una primera consulta simple que nos de los valores de P# para los proveedores que suministran los artculos cuyo valor para T# es T1 y otra consulta igual pero donde el valor de T# sea T2 despus unimos las dos utilizando el operador INTERSECT para devolver todas las filas comunes a estas dos consultas. SELECT ENVIOS.P# FROM ENVIOS WHERE T#='T1' INTERSECT SELECT ENVIOS.P# FROM ENVIOS WHERE T#='T2'
PRIMERO DE ASIR
Pgina 16
[EJERCICIOS SQL 1-14] 10. Obtener los valores de P# para los proveedores que suministran para un artculo de SEVILLA o MADRID un componente ROJO.
Hacemos un select de p# evitando los valores duplicados desde envos y componentes poniendo la igualdad comparativa sobre los componentes, hacemos un JOIN de nuevo poniendo la comparacin correspondiente en los artculos sobre la tabla envos y artculos y despus ponemos las condiciones que se nos pide donde los componentes sean para Sevilla o Madrid y que el color sea rojo. SELECT DISTINCT ENVIOS.P# FROM (ENVIOS JOIN COMPONENTES ON ENVIOS.C#=COMPONENTES.C#) JOIN ARTICULOS ON ENVIOS.T#=ARTICULOS.T# WHERE (ARTICULOS.CIUDAD='SEVILLA' OR ARTICULOS.CIUDAD='MADRID') AND (COMPONENTES.COLOR='ROJO')
PRIMERO DE ASIR
Pgina 17
[EJERCICIOS SQL 1-14] 11. Obtener mediante subconsultas los valores de C# para los componentes suministrados para algn artculo de SEVILLA por un proveedor de SEVILLA.
Como vemos es un ejercicio parecido al anterior, obtenemos los valores de C# evitando duplicaciones desde envos donde t# es decir el articulo provenga de sevilla y donde p# a su vez tambin pertenezca a Sevilla SELECT DISTINCT C# FROM ENVIOS WHERE T# IN( SELECT T# FROM ARTICULOS WHERE CIUDAD='SEVILLA') AND P# IN ( SELECT P# FROM PROVEEDORES WHERE CIUDAD='SEVILLA')
12. Obtener los valores para los artculos que usan al menos un componente que se puede obtener con el proveedor P1.
Hacemos un select sobre los artculos desde envos donde la clave de algn componente de estos artculos se encuentre en los componentes suministrados desde envos por P1. SELECT DISTINCT T# FROM ENVIOS WHERE C# IN( SELECT DISTINCT C# FROM ENVIOS WHERE P#='P1')
PRIMERO DE ASIR
Pgina 18
[EJERCICIOS SQL 1-14] 13. Obtener todas las ternas (CIUDAD, C#, CIUDAD) tales que un proveedor de la primera ciudad suministre el componente especificado para un artculo montado en la segunda ciudad.
Como vemos recuperamos los valores que se nos indican mediante un select, esto lo hacemos desde envos proveedores y artculos y en la condicin indicamos que un proveedor de la primera ciudad suministre el componente especificado para un artculo montado en la segunda ciudad. SELECT P.Ciudad ,E.C#, A.Ciudad FROM Envios E, Proveedores P, Articulos A WHERE E.P#=P.P# AND E.T#=A.T#;
PRIMERO DE ASIR
Pgina 19
[EJERCICIOS SQL 1-14] 14. Repetir el ejercicio anterior pero sin recuperar las ternas en los que los dos valores de ciudad sean los mismos.
Como vemos el ejercicio es el mismo que el anterior, solo que ahora solo se muestra el resultado cuando se cumple la nueva regla dentro de la condicin WHERE, que es la que hemos introducido y que evita que los dos valores de ciudad sean los mismos, como indicamos. SELECT P.Ciudad, C#, A.Ciudad FROM Envios E, Proveedores P , Articulos A WHERE E.P#=P.P# AND E.T#=A.T# AND P.Ciudad <> A.Ciudad
PRIMERO DE ASIR
Pgina 20