DB Universidad

November 14, 2018 | Author: ZenerOrtiz | Category: Table (Database), Databases, Software Design, Information Science, Information Management
Share Embed Donate


Short Description

sql data...

Description

4.0 - LA BASE DE DATOS UNIVERSIDAD. En estos apuntes vamos a realizar consultas SQL sobre una Base de Datos que llamaremos "UNIVERSIDAD" . Las tablas que componen esta Base de Datos, su estructura, tipos de datos y relaciones son las siguientes:

TABLAS DE LA BASE DE DATOS UNIVERSIDAD PERSONA Nombr Apellid Ciuda DireccionCa DireccionN e o d lle um 1616161 Luis Ramíre Haro Pez 34 6A z 1717171 Laura Beltrán Madrid Gran Vía 23 7A 1818181 Pepe Pérez Madrid Percebe 13 8A 1919191 Sánche Juan Bilbao Melancolía 7 9A z 2020202 Jiméne Luis Nájera Cigüeña 15 0A z 2121212 Rosa García Haro Alegría 16 1A 2323232 Logroñ Jorge Sáenz o Luis Ulloa 17 3A 2424242 Gutiérr Logroñ Avda. de la María 18 4A ez o Paz 2525252 Logroñ Rosario Díaz Percebe 19 5A o 2626262 Gonzále Logroñ Elena z Percebe 20 6A o DNI

Telefono 9411111 11 9121212 12 9131313 13 9441414 14 9411515 15 9411616 16 9411717 17 9411818 18 9411919 19 9412020 20

FechaNacimie Varo nto n 1/1/69

1

8/8/74

0

2/2/80

1

3/3/66

1

3/3/79

1

4/4/78

0

9/9/78

1

10/10/64

0

11/11/71

0

5/5/75

0

ASIGNATURA IdAsignatur a 000115 130113 130122 150212 160002

Nombre Seguridad Vial Programació nI Análisis II Química Física Contabilidad

ALUMNO IdAlumno DNI A010101 21212121A A020202 18181818A

Credito Cuatrimestr CosteBasic IdProfeso IdTitulacio Curs s e o r n o 4,5

1

30,00 € 

P204

9

1

60,00 €

P101

130110

1

9

2

60,00 €

P203

130110

2

4,5

2

70,00 €

P304

150210

1

6

1

70,00 €

P117

160000

1

A030303 A040404 A121212 A131313

20202020A 26262626A 16161616A 17171717A

PROFESOR IdAlumno P101 P117 P203 P204 P304

DNI 19191919A 25252525A 23232323A 26262626A 24242424A

TITULACION IdTitulacion Nombre 130110 Matemáticas 150210 Químicas 160000 Empresariales

ALUMNO_ASIGNATURA IdAlumno A010101 A020202 A020202 A030303 A030303 A030303 A040404 A121212 A131313

IdAsignatura 150212 130113 150212 130113 150212 130122 130122 000115 160002

NumeroMatricula 1 1 2 3 1 2 1 1 4

TIPOS DE DATOS PERSONA Campo DNI Nombre Apellido Ciudad DireccionCalle DireccionNum Telefono

Tipo dato Tamaño Texto-Varchar2 9 Texto 25 Texto 50 Texto 25 Texto 50 Texto 3 Texto 9

Otros Primary Key Requerido - Not Null Requerido - Not Null

FechaNacimiento Fecha/Hora Texto Varon

Fecha corta Fecha corta 1 Check (Varon In ('0','1'))

ASIGNATURA Campo IdAsignatura Nombre Creditos Cuatrimestre CosteBasico IdProfesor IdTitulacion Curso

Tipo dato Tamaño Otros Texto 6 Primary Key Texto 50 Not Null Numérico Simple Check (Creditos In (4.5,6,7.5,9)) Texto 1 Check (Cuatrimestre In ('1','2')) Numérico Simple Number(3,2) Texto 4 References PROFESOR(IdProfesor) Texto 6 References TITULACION(IdTitulacion) Fecha/Hora Fecha corta Check (Curso In ('1','2','3','4'))

ALUMNO Campo Tipo dato Tamaño Otros 7 Primary Key IdAlumno Texto Texto 9 References PERSONA(DNI) DNI

PROFESOR Campo Tipo dato Tamaño Otros 4 Primary Key IdProfesor Texto Texto 9 References PERSONA(DNI) DNI

TITULACION Campo Tipo dato Tamaño Otros 6 Primary Key IdTitulacion Texto Texto 20 Not Null - Unique Nombre

ALUMNO_ASIGNATURA Campo IdAlumno IdAsignatura

Tipo dato Texto Texto

NumeroMatricula Numérico

Tamaño

Otros

7 6

References ALUMNO(IdAlumno) References ASIGNATURA(IdAsignatura) Not Null - Check(NumeroMatricula>=1 AND NumeroMatricula < >= = 25 AND CosteBasico  8;

EJEMPLO

25:

Nombre y número de horas de todas las asignaturas. (1cred.=10 horas). SELECT Nombre, Creditos*10 AS NUM_HORAS FROM ASIGNATURA;

OPERADORES

DE

Para

en

enlazar

cadenas

CADENAS ORACLE

utilizamos

(& || 

EJEMPLO

y

y en

||) & .

ACCESS

26:

Mostrar el nombre completo en una columna y la dirección completa en otra columna de las personas. ORACLE: SELECT Nombre||' '||Ciudad FROM PERSONA;

'||Apellido

DireccionCalle||',

'||DireccionNum||'

ACCESS: SELECT Nombre&" "&Apellido, DireccionCalle&", "&DireccionNum&" - "&Ciudad FROM PERSONA;

-

FUNCIONES

DE

ORDENACIÓN:

ORDER

BY

Los resultados de un SELECT se pueden ordenar a gusto del usuario mediante la claúsula ORDER BY. Atributos de ordenación: ASC  DESC - Orden descendente. (Por

Orden

defecto

el

creciente.

orden

es

creciente).

EJEMPLO

27:

Datos de personas por orden alfabético de apellidos. SELECT * FROM PERSONA ORDER BY Apellido;

EJEMPLO

28:

Datos de las asignaturas del 2º cuatrimestre por orden alfabético de IdTitulacion. Para cada titulación ordenar por coste mostrando primero las asignaturas más caras y para las asignaturas del mismo coste mostrar por orden alfabético de nombre de asignatura. SELECT * FROM ASIGNATURA WHERE Cuatrimestre = "2" ORDER BY IdTitulacion, CosteBasico DESC, Nombre;

TABLAS

RELACIONADAS

(FROM)

Las consultas pueden relacionar varias tablas que se encuentren nombradas en el FROM. Por ejemplo si tenemos dos tablas TAB1 y TAB2 con dos columnas cada una llamadas T1C1, T1C2, T2C1 y T2C2, 3 filas en TAB1 y 4 filas en TAB2, la siguiente consulta mostrará una macrotabla de 4 columnas por 12 filas.

EJEMPLO

Construir las tablas anteriores en una base de datos nueva y ejecutar la siguiente consulta:

29:

SELECT * FROM TAB1, TAB2;

Guardar

la

base

de

datos

como

ejemplo_from.mdb.

EJEMPLO

29B:

Nombre y apellidos de los profesores. SELECT Nombre, Apellido FROM PERSONA, PROFESOR WHERE PERSONA.DNI = PROFESOR.DNI;

PROCESO DE RESOLUCIÓN DE CONSULTAS 1. Decidir

qué

tablas

están

implicadas

2. Ver cuáles son las relaciones las relevantes para la consulta condiciones en 3. Poner

el

resto

de

condiciones

en

y

ponerlas

entre las en cuestión el el

WHERE,

en

el

FROM.

tablas, seleccionar y ponerlas como WHERE.

ORDER

BY  u

otras.

4. Fijar las columnas a mostrar en el SELECT.

EJEMPLO

Nombre de asignaturas impartidas por profesores de Logroño. SELECT Asignatura.Nombre FROM ASIGNATURA, PROFESOR, PERSONA

30:

WHERE ASIGNATURA.IdProfesor = PROFESOR.IdProfesor AND PROFESOR.DNI = PERSONA.DNI AND Ciudad = "Logroño";

EJEMPLO

Nombre completo (nombre y apellido), en una sóla columna, de los alumnos.

31:

SELECT Nombre&" "&Apellido FROM PERSONA, ALUMNO WHERE PERSONA.DNI = ALUMNO.DNI;

EJEMPLO

DNI, Nombre y Apellido de los alumnos que viven en La Rioja. Como criterio usar el teléfono.

32:

SELECT PERSONA.DNI AS DNI, Nombre, Apellido FROM PERSONA, ALUMNO WHERE PERSONA.DNI = ALUMNO.DNI AND Telefono LIKE "941*";

EJEMPLO

DNI, Nombre y Apellido de los alumnos matriculados en la asignatura "Seguridad Vial".

33:

SELECT PERSONA.DNI AS DNI_, PERSONA.Nombre, Apellido FROM PERSONA, ALUMNO, ALUMNO_ASIGNATURA, ASIGNATURA WHERE PERSONA.DNI = ALUMNO.DNI AND ALUMNO.IdAlumno = ALUMNO_ASIGNATURA.IdAlumno AND ALUMNO_ASIGNATURA.IdAsignatura = ASIGNATURA.IdAsignatura AND ASIGNATURA.NOMBRE = "Seguridad Vial";

EJEMPLO

34:

Id de las titulaciones en las que está matriculado el alumno con DNI 20202020A. Un alumno está matriculado en una titulación si está matriculado en una asignatura de la titulación. SELECT DISTINCT(IdTitulacion) FROM ASIGNATURA, ALUMNO_ASIGNATURA, ALUMNO WHERE ASIGNATURA.IdAsignatura = ALUMNO_ASIGNATURA.IdAsignatura AND ALUMNO_ASIGNATURA.IdAlumno = ALUMNO.IdAlumno AND ALUMNO.DNI = "20202020A";

EJEMPLO

35:

Nombre de las asignaturas en las que está matriculada Rosa García, mostrando también por cada asignatura, el número de matrícula. SELECT ASIGNATURA.Nombre,ALUMNO_ASIGNATURA.IdAlumno FROM PERSONA, ALUMNO, ALUMNO_ASIGNATURA, ASIGNATURA WHERE PERSONA.DNI = ALUMNO.DNI AND ALUMNO.IdAlumno = ALUMNO_ASIGNATURA.IdAlumno AND ALUMNO_ASIGNATURA.IdAsignatura = ASIGNATURA.IdAsignatura AND PERSONA.Nombre = "Rosa" AND PERSONA.Apellido = "García";

EJEMPLO

DNI de los alumnos a los que imparte el profesor Jorge Sáenz.

36:

SELECT ALUMNO.DNI AS DNI_ALUMNO FROM PERSONA, ALUMNO, ALUMNO_ASIGNATURA, ASIGNATURA, PROFESOR WHERE PERSONA.DNI = PROFESOR.DNI AND ALUMNO.IdAlumno = ALUMNO_ASIGNATURA.IdAlumno AND ALUMNO_ASIGNATURA.IdAsignatura = ASIGNATURA.IdAsignatura AND ASIGNATURA.IdProfesor = PROFESOR.IdProfesor AND PERSONA.Nombre = "Jorge" AND PERSONA.Apellido = "Sáenz"; forma de hacer lo mismo es utilizando una subconsulta llamadas también consultas anidadas.

Otra Este tipo de consultas se verán más adelante a partir del ejercicio 49.

SELECT ALUMNO.DNI AS DNI_ALUMNO FROM ALUMNO, ALUMNO_ASIGNATURA, ASIGNATURA WHERE ALUMNO.IdAlumno = ALUMNO_ASIGNATURA.IdAlumno AND ALUMNO_ASIGNATURA.IdAsignatura = ASIGNATURA.IdAsignatura AND ASIGNATURA.IdProfesor IN (SELECT PROFESOR.IdProfesor FROM PERSONA, PROFESOR WHERE PERSONA.DNI = PROFESOR.DNI AND PERSONA.Nombre = "Jorge" AND PERSONA.Apellido = "Sáenz");

EJEMPLO

37:

Cual sería el coste global de cursar la titulación de Matemáticas si el coste de cada asignatura fuera incrementado en un 7%. SELECT SUM(CosteBasico*1.07) FROM ASIGNATURA, TITULACION WHERE ASIGNATURA.IdTitulacion = TITULACION.IdTitulacion

AND TITULACION.Nombre = "Matemáticas";

ftp://iesjuandelacierva.com/pub/pilarbbdd2008-09/bloque%203%20%20sql/Apuntes%20Bloque%20SQL/index-2.html

EJERCICIO 1: Nombres y apellidos de las personas. Ver SQL

EJERCICIO 2: Códigos, nombres y créditos de las asignaturas. Ver SQL

EJERCICIO 3: Datos de las personas de la Base de Datos. Ver SQL

EJERCICIO 4: Posibilidades de créditos de las asignaturas (para usar DISTINCT). Ver SQL

EJERCICIO 5: Posibilidades de coste, en cada curso de las asignaturas. Ver SQL

EJERCICIO 6: Suma del coste de las asignaturas. Ver SQL

EJERCICIO 7: Cuantas asignaturas hay. Ver SQL

EJERCICIO 8: Coste de la asignatura más cara. Ver SQL

EJERCICIO 9: Coste de la asignatura más barata. Ver SQL

EJERCICIO 10: Coste máximo, mínimo y medio de las asignaturas. Ver SQL

EJERCICIO 11: Cuantas posibilidades de créditos de asignatura hay. Ver SQL

EJERCICIO 12: Cuantos cursos hay. Ver SQL

EJERCICIO 13: Cuantas ciudades y nombres distintos hay. Ver SQL

EJERCICIO 14: Nombre y créditos de las asignaturas del primer cuatrimestre Ver SQL

EJERCICIO 15: Nombre y coste básico de las asignaturas de más de 4,5 créditos. Ver SQL

EJERCICIO 16: Nombre de las asignaturas cuyo coste está entre 25 y 35 euros. (Con y sin BETWEEN). Ver SQL

EJERCICIO 17: Mostrar el Id de los alumnos matriculados bien en la asignatura '150212' o bien en la '130113', o en ambas. (Con y sin IN). Ver SQL

EJERCICIO 18: Mostrar el Id de los alumnos matriculados en cualquier asignatura salvo la '150212' o la '130113'. Ver SQL

EJERCICIO 19: Nombre de las asignaturas del segundo cuatrimestre que no sean de 6 créditos. Ver SQL

EJERCICIO 20: Mostrar el nombre de las asignaturas cuyo coste por crédito sea mayor de 8 euros. Ver SQL

EJERCICIO 21: Nombre y número de horas de todas las asignaturas. (1cred = 10h). Ver SQL

EJERCICIO 22: Mostrar el nombre y el apellido de las personas cuyo apellido comience por la letra 'G'. Ver SQL

EJERCICIO 23: Datos de las personas que hayan nacido en 1978. Ver SQL

EJERCICIO 24: Mostrar el nombre de las personas para las que se desconoce la fecha de nacimiento. Ver SQL

EJERCICIO 25: Mostrar las asignaturas que no pertenecen a ninguna titulación. Ver SQL

EJERCICIO 26: Listado del nombre completo de las personas, sus teléfonos y sus direcciones, llamando a la columna del nombre "NombreCompleto"  y a la de direcciones "Direccion" . Ver SQL

EJERCICIO 27: Cual es el día siguiente al día en que nacieron las personas de la B.D.. Ver SQL

EJERCICIO 28: Años de las personas de la Base de Datos. Ver SQL

EJERCICIO 29: Listado de personas ordenadas por apellidos y nombre. Ver SQL

EJERCICIO 30: Listado de personas mayores de 25 años ordenadas por apellidos y nombre. Ver SQL

EJERCICIO 31: Listado que muestre las asignaturas con su coste por crédito ordenadas por su coste por crédito. Ver SQL

EJERCICIO 32: Listado de nombres completos de todos los alumnos. Ver SQL

EJERCICIO 33: Listado de alumnos matriculados que viven en La Rioja. Ver SQL

EJERCICIO 34: Listado de asignaturas impartidas por profesores de Logroño. Ver SQL

EJERCICIO 35: Listado de profesores que además son alumnos. Ver SQL

EJERCICIO 36: Nombres completos de los profesores que además son alumnos. Ver SQL

EJERCICIO 37: Nombres completos de los alumnos que cursan la asignatura de "Seguridad Vial" . Ver SQL

EJERCICIO 38: Nombres completos de los alumnos que cursan alguna asignatura del 2° cuatrimestre. Ver SQL

EJERCICIO 39: Nombres de los profesores que imparten por lo menos una asignatura. Ver SQL

EJERCICIO 40: Suma de los créditos de las asignaturas de Matemáticas. Ver SQL

EJERCICIO 41: Número de asignaturas de la titulación de Matemáticas. Ver SQL

EJERCICIO 42: Id de las titulaciones en las que está matriculado el alumno con DNI '18181818A'  sabiendo que para que un alumno esté matriculado en una titulación basta con que esté matriculado en alguna de sus asignaturas. Ver SQL

EJERCICIO 43: ¿Cual sería el coste global de cursar la titulación de Matemáticas si el coste de cada asignatura fuera incrementado un 7%? Ver SQL

EJERCICIO 44: Profesores que son alumnos indicando la asignatura o asignaturas que cursan. Ver SQL

EJERCICIO 45: Titulaciones (nombres) en las que imparte docencia cada profesor, junto con el nombre de cada profesor. Ver SQL

EJERCICIO 46: Listado ordenado por nombre de titulación y nombre de asignatura de todas las asignaturas, mostrando además la titulación, nombre de asignatura y nombre del profesor. Ver SQL

EJERCICIO 47: Nombres completos de alumnos matriculados en alguna asignatura mostrando cual es la asignatura y la titulación a la que pertenecen las asignaturas. Ver SQL

EJERCICIO 48: Listado que muestre, por cada asignatura, los nombres completos de los alumnos matriculados. Ver SQL

EJERCICIO 48B: Supongamos que tenemos la siguiente tabla, que clasifica los tamaños de las asignaturas en función de su número de créditos. NOMBRE DE LA TABLA: TAMANIOASIGNATURA

Tamanio CreditosMin CreditosMax Corta

0

4.5

Media

6

7.5

Larga

9

100

Obtener un listado de las asignaturas junto con la calificación de su duración según la tabla anterior. Ver SQL

EJERCICIO 49: Asignaturas de la titulación de Matemáticas. Ver SQL

EJERCICIO 50: Listado de asignaturas que tengan más créditos que "Seguridad Vial" . Ver SQL

EJERCICIO 51: Listado de alumnos que son más viejos que los profesores, indicando cada alumno y cada profesor. Ver SQL

EJERCICIO 52: Listado de alumnos que son más viejos que el profesor de mayor edad. Ver SQL

EJERCICIO 53: Cual es el coste de la matrícula de cada titulación. Ver SQL

EJERCICIO 54: Cuantos alumnos hay matriculados en cada asignatura. Ver SQL

EJERCICIO 55: Cuanto paga cada alumno por su matrícula. Ver SQL

EJERCICIO 56: Estadísticas (número y media de edad) de personas por ciudades y sexos. Ver SQL

EJERCICIO 57: Lo mismo que la anterior pero por mes de nacimiento, y sólo para los alumnos. Ver SQL

EJERCICIO 58: Coste medio de las asignaturas de cada titulación para aquellas titulaciones en las que el coste total de la matrícula sea mayor de 60 euros. Ver SQL

EJERCICIO 59: Visualiza la asignatura con más créditos, la media de créditos, la suma de los créditos y la titulación a la que pertenecen, para titulaciones con más de 1 asignatura. Ver SQL

EJERCICIO 60: Que alumnos (nombre completo) están matriculados al menos en dos asignaturas. Ordena el resultado alfabéticamente. Ver SQL

EJERCICIO 61: Listado de alumnos cuya matrícula haya supuesto un coste superior a 50 euros. Ver SQL

EJERCICIO 62: Clasifica las titulaciones por orden descendente en función del total de créditos necesarios para cursarlas. Ver SQL

EJERCICIO 63: Edad del alumno más viejo de cada asignatura. Ver SQL

EJERCICIO 64: Lista de gente ordenada por mes en el que cumplen los años. Ver SQL

EJERCICIO 65: Alumnos matriculados en las asignaturas '150212'  y '130113'  a la vez. Ver SQL

EJERCICIO 66: Nombre de las asignaturas de la titulación '130110'  cuyo coste básico sobrepase el coste básico promedio por asignatura en dicha titulación. Ver SQL

EJERCICIO 67: Lista de las asignaturas en las que no se ha matriculado nadie. Ver SQL

EJERCICIO 68: Nombre de las titulaciones que tengan al menos una asignatura de más de 4,5 créditos. Ver SQL

EJERCICIO 69: Asignaturas con más créditos que alguna de las asignaturas de Matemáticas. Ver SQL

EJERCICIO 70: Listado de personas de mayor edad que todas las personas de Haro. Ver SQL

EJERCICIO 71: Listado de asignaturas que pertenecen al mismo cuatrimestre que la asignatura de menor coste y que tienen unos créditos superiores a la media de las asignaturas. Ver SQL

EJERCICIO 72: Listado de asignaturas cuyo coste es superior al coste medio de las asignaturas que no pertenecen a ninguna titulación. Ver SQL

EJERCICIO 73: Listado de personas que viven en la ciudad que vive más gente. Ver SQL

EJERCICIO 74: Listado de alumnos que nacieron antes que el profesor más joven. Ver SQL

EJERCICIO 75: Asignaturas de la titulación '130110'  en las que no está matriculado el alumno 'A020202' . Ver SQL

EJERCICIO 76: Listado de alumnos cuya edad supera la media de la edad de los profesores. Ver SQL

EJERCICIO 77: Listado de alumnos que asisten a alguna asignatura de las impartidas por los profesores varones de Logroño y cuyo número de compañeros de asignatura sea menor que 10. Ver SQL

EJERCICIO 78: Listado de las asignaturas no cursadas por alumnos de Logroño. Ver SQL

EJERCICIO 79: Para cada asignatura con más de dos matriculados, encuentra el número de alumnos matriculados en ella de más de 25 años. Ver SQL

EJERCICIO 80:

Listado de ciudades en las que ha nacido algún profesor pero no un alumno (y lo contrario). Ver SQL

EJERCICIO 81: Listado de ciudades en las que ha nacido algún profesor y también algún alumno. Ver SQL

EJERCICIO 82: Listado de alumnos (ids) no matriculados en asignaturas de Matemáticas. Ver SQL

EJERCICIO 83: Listar los ids de los alumnos para los que se cumpla que la suma de créditos de las asignaturas en las que está matriculado sea superior a la suma de créditos de todas las asignaturas de Empresariales. Ver SQL

EJERCICIO 84: Identificadores de los alumnos más viejos de cada titulación. Ver SQL

EJERCICIO 85: Listado del DNI de personas relacionadas con la asignatura 'Seguridad Vial' , bien por ser profesor de la misma o por estar matriculado en ella. Ver SQL

EJERCICIO 86: Listado de nombres completos de personas relacionadas con la asignatura 'Seguridad Vial' , bien por ser profesor de la misma o por estar matriculado en ella. Ver SQL

EJERCICIO 87: Escribir una consulta que permita verificar si todas las personas de la B.D. son o bien profesores o bien alumnos, mostrando los DNIs de las personas que no lo cumplen. Ver SQL

EJERCICIO 88: Mostrar el Id de los alumnos matriculados en todas las asignaturas de primer curso de la titulación '130110' . Ver SQL

EJERCICIO 89: Mostrar el Id de los alumnos matriculados en todas las asignaturas de primer curso de Empresariales. Ver SQL

EJERCICIO 90: Estadísticas por titulación (mostrando el nombre de la titulación): coste básico máximo, mínimo y medio y créditos medios de sus asignaturas. Incluye en la lista las asignaturas que no tienen asociada ninguna titulación, mostrando el texto "Asignatura de campus"  en el nombre de la titulación. Ver SQL

INSERCI N, MODIFICACI N Y BORRADO DE DATOS Para insertar, modificar y/o borrar datos de una Base de Datos podemos utilizar los comandos: INSERT, UPDATE y DELETE respectivamente, tal y como se explica en los siguientes ejemplos.

COMANDO INSERT

El comando INSERT se utilizará para añadir filas a una tabla. INSERT INTO VALUES ();

 debe tener tantos valores como columnas haya en la tabla y con el tipo de datos y orden de colocación adecuados.

EJEMPLO 66:

Crear una nueva fila en la tabla TITULACION  con los datos IdTitulacion  = "180100"  y Nombre = "Humanidades" . INSERT INTO TITULACION VALUES ("180100","Humanidades");

En función de como esté definida la tabla se admitirá el valor NULL de forma explícita.

EJEMPLO 67:

Crear una nueva fila en la tabla TITULACION  con los datos IdTitulacion  = "180100"  y Nombre = NULL. INSERT INTO TITULACION VALUES ("180100",NULL);

Podemos insertar los valores de algunas columnas sólamente, siempre que la definición de la tabla lo permita, utilizando la siguiente estructura SQL: INSERT INTO () VALUES ();

 contiene el nombre de las columnas en las que queremos introducir un valor. No es necesario incluir todas las columnas y podemos cambiar el orden. Todas las columnas que no aparezcan en la lista se les da el valor NULL.

EJEMPLO 68:

Crear una nueva fila en la tabla TITULACION  con los datos IdTitulacion  = "180100"  y Nombre = "Humanidades" . (Idem que el 66). INSERT INTO TITULACION (IdTitulacion,Nombre) VALUES ("180100","Humanidades");

O también: INSERT INTO TITULACION (Nombre,Titulacion) VALUES ("Humanidades","180100");

INSERTAR EL RESULTADO DE UNA CONSULTA SELECT: Podemos sustituir los valores de VALUES por los devueltos por una consulta SELECT. Las columnas que aparezcan en el SELECT deben tener el mismo número, tipo y orden que las de la tabla en la que se inserta. Este método nos permite insertar varias filas a la vez.

EJEMPLO 69:

Supongamos que disponemos de una tabla nueva llamada ASIGNATURA_LIBRE_CONFIGURACION , con las mismas columnas que la tabla ASIGNATURA . Insertar las filas de la tabla ASIGNATURA  cuyo IdTitulación  sea NULL. INSERT INTO ASIGNATURA_LIBRE_CONFIGURACION SELECT * FROM ASIGNATURA WHERE IdTitulacion IS NULL;

COMANDO UPDATE El comando UPDATE nos permite modificar el valor o valores de una columna que cumplan una determinada condición. La sintaxis que utilizamos es la siguiente: UPDATE SET  = WHERE ;

EJEMPLO

Por error "Rosario Díez"  se ha almacenado como "Díaz" . Modificarlo para corregir el error.

70:

UPDATE PERSONA SET Apellido = "Díez" WHERE Nombre = "Rosario" AND Apellido = "Díaz";

EJEMPLO

71:

Por motivos técnicos los prefijos telefónicos de La Rioja pasan a ser 991. Actualizar en la Base de Datos este cambio. En ORACLE: UPDATE PERSONA SET Telefono = "991"&SUBSTR(Telefono,4) WHERE SUBSTR(Telefono,1,3) = "941";

En ACCESS: UPDATE PERSONA SET Telefono = "991"&RIGHT(Telefono,6) WHERE Telefono LIKE "941*";

EJEMPLO

Disminuir en un 10% el coste básico de las asignaturas en las que existan más de 100 matriculados.

72:

UPDATE ASIGNATURA SET CosteBasico = CosteBasico*0.9 WHERE IdAsignatura IN (SELECT IdAsignatura FROM ALUMNO_ASIGNATURA GROUP BY IdAsignatura HAVING COUNT(*) > 100);

COMANDO DELETE El comando DELETE  sirve para eliminar filas de una tabla que cumplan una determinada condición. La sintaxis que utilizamos es la siguiente: DELETE FROM WHERE ;

EJEMPLO

La alumna Laura Beltrán deja la Universidad. Darle de baja en todas las tablas. DELETE FROM ALUMNO_ASIGNATURA WHERE IdAlumno = (SELECT IdAlumno FROM ALUMNO, PERSONA WHERE ALUMNO.DNI = PERSONA.DNI AND Nombre = "Laura" AND Apellido = "Beltrán"); DELETE FROM ALUMNO WHERE DNI = (SELECT DNI FROM PERSONA WHERE Nombre = "Laura" AND Apellido = "Beltrán"); DELETE FROM PERSONA WHERE Nombre = "Laura" AND Apellido = "Beltrán";

73:

LENGUAJE DE DEFINICIÓN DE DATOS LDD sirve para crear, borrar y modificar tablas de una Base de Datos.

CREATE TABLE El comando CREATE TABLE se utilizará para crear una nueva tabla en la Base de Datos. Su sintaxis es la siguiente: CREATE TABLE ( [NOT NULL], [NOT NULL],

............................................ [NOT NULL]);

[NOT NULL] es opcional. Por defecto las columnas son NULL, lo que quiere decir que por defecto en cualquier columna se admiten valores nulos. No puede haber dos nombres de columna iguales.

EJEMPLO

Crear la tabla ASIGNATURA que se ha empleado en los temas anteriores.

74:

CREATE TABLE ASIGNATURA (IdAsignatura CHAR(6) NOT NULL, Nombre VARCHAR(50) NOT NULL, Creditos NUMBER(1,1), Cuatrimestre CHAR, CosteBasico NUMBER(3,2), IdProfesor CHAR(4), IdTitulacion CHAR(6), Curso CHAR);

Otra posibilidad de uso de CREATE TABLE  es crear una tabla a partir de la información devuelta por un SELECT. CREATE TABLE (, , ........) AS (SELECT ......... ............................................ );

EJEMPLO

Crear una tabla llamada PERSONA_ALUMNO que contenga los datos personales de los alumnos.

75:

CREATE TABLE PERSONA_ALUMNO AS (SELECT PERSONA.* FROM PERSONA, ALUMNO WHERE PERSONA.DNI = ALUMNO.DNI);

EJEMPLO

76:

Crear una tabla llamada PROFESOR_PRIMER   con columnas "IdProfPrimer", "DNIProfPrimer", "IdAsignatura" que almacene el identificador del profesor, su DNI y el identificador de la asignatura que imparte, para los profesores del primer cuatrimestre. CREATE TABLE PROFESOR_PRIMER (IdProfPrimer, DNIProfPrimer, IdAsignatura) AS (SELECT PROFESOR.*, IdAsignatura FROM PROFESOR, ASIGNATURA WHERE PROFESOR.IdProfesor = ASIGNATURA.IdProfesor AND Cuatrimestre = '1');

DROP TABLE El comando DROP TABLE nos permite borrar una tabla. La sintaxis que utilizamos es la siguiente: DROP TABLE ;

EJEMPLO

77:

Eliminar la tabla ASIGNATURA . DROP TABLE ASIGNATURA;

Nota: Antes de borrar una tabla debemos tener en cuenta las restricciones de integridad de la Base de Datos y como las manipula el Sistema Gestor de la Base de Datos, ya que podemos eliminar datos que afecten a otras tablas. Dependiendo del SGBD puede que en tal caso elimine los datos en cascada, que nos muestre un mensaje de error o que borre la tabla sin tener en cuenta las relaciones. En este último caso puede que la Base de Datos deje de funcionar correctamente.

RENAME El comando RENAME nos permite renombrar una tabla. La sintaxis que utilizamos es la siguiente: RENAME TO

EJEMPLO

78:

Renombrar la tabla PERSONA como PERSONAS. RENAME PERSONA TO PERSONAS;

ALTER TABLE El

comando

ALTER

TABLE  

se

utiliza

insertar,

borrar

o

modificar

columnas

de

INSERTAR UNA O VARIAS La sintaxis que se utiliza para insertar una columna nueva en una tabla es la siguiente:

una

tabla.

COLUMNAS

ALTER TABLE ADD ( [NOT NULL], [NOT NULL],

........................................... [NOT NULL]);

EJEMPLO

79:

Insertar una nueva columna en la tabla TITULACION  que pueda almacenar el tipo de titulación. (p.e.: diplomatura, ingeniería, licenciatura, etc.). ALTER TABLE TITULACION ADD (TipoTitulacion VARCHAR(50) NOT NULL);

(Aparece en la BORRAR UNA COLUMNA  La sintaxis que se utiliza para borrar una columna de una tabla es la siguiente:

versión

9

de

Oracle)

ALTER TABLE DROP ;

EJEMPLO

Borrar la columna creada en el ejemplo anterior.

80:

ALTER TABLE TITULACION DROP TipoTitulacion;

Si no tenemos este comando disponible en nuestro SGBD podemos eliminar una columna realizando los siguientes pasos: 1. Crear una tabla auxiliar con todas las columnas y filas de la tabla que se quiere modificar excepto la columna o columnas a eliminar. 2. Borrar la tabla original.

3. Renombrar la tabla auxiliar con el nombre original.

EJEMPLO

En la tabla PROFESOR_PRIMER  eliminar la columna "DNIProfPrimer".

81:

CREATE TABLE AUXILIAR AS SELECT IdProfPrimer, IdAsignatura FROM PROFESOR_PRIMER; DROP TABLE PROFESOR_PRIMER; RENAME AUXILIAR TO PROFESOR_PRIMER;

MODIFICAR UNA COLUMNA La sintaxis que se utiliza para modificar la definición de una columna de una tabla de la Base de Datos es la siguiente: ALTER TABLE MODIFY ( [] [NULL | NOT NULL]);

EJEMPLO

En la tabla ASIGNATURA  no permitir nulos en el campo "IdTitulacion".

82:

ALTER TABLE ASIGNATURA MODIFY (IdTitulacion NOT NULL);

RENOMBRAR UNA COLUMNA Para renombrar una columna debemos proceder de la siguiente manera: 1. Crear una tabla auxiliar con todas las columnas y filas de la tabla que se quiere modificar. 2. Borrar la tabla original. 3. Renombrar la tabla auxiliar con el nombre original.

EJEMPLO

En la tabla PROFESOR_PRIMER  cambiar el nombre de la columna "IdAsignatura" por "IdAsignaturaImpartida". CREATE TABLE AUXILIAR (IdProfPrimer, IdAsignaturaImpartida) AS SELECT * FROM PROFESOR_PRIMER; DROP TABLE PROFESOR_PRIMER; RENAME AUXILIAR TO PROFESOR_PRIMER;

4.A1 - LISTADO DE LOS EJEMPLOS. 4.A1 - LISTADO DE LOS EJEMPLOS.

LISTADO DE EJEMPLOS DE LOS APUNTES

83:

Los siguientes ejercicios corresponden a los mostrados en los temas de los apuntes de SQL. Cada uno de ellos incluye un enlace a la página en la que aparece explicado y solucionado.

TEMA 4.2 DML (Data Management Languaje) SELECT, FROM Ej. 1: Obtener los créditos de las asignaturas. Ej. 2: Nombres y créditos de las asignaturas. DISTINCT Ej. 3: Posibles distintos créditos de las asignaturas. * Ej. 4: Todos los datos de personas.

TEMA 4.3 FUNCIONES DE AGRUPACIÓN SUM Ej. 5: Mostrar la suma de todos los créditos de las asignaturas. AVG Ej. 6: Media de coste básico. MAX Ej. 7: Coste básico de la asignatura más cara. MIN Ej. 8: CCoste básico de la asignatura más barata. COUNT Ej. 9: Cuantos costes básicos hay. Ej. 10: Cuantos costes básicos distintos hay. Ej. 11: Cuantas asignaturas hay. AS - Renombrar campos Ej. 12: Suma de los créditos de las asignaturas llamando a la columna resultante "TotalCreditos".

TEMA 4.4 OPERADORES. TIPOS DE EXPRESIONES. WHERE. BETWEEN. Operadores: =, NOT, AND, OR; Fechas; Comando WHERE Ej. 13: Nombre y créditos de las asignaturas del primer cuatrimestre. Ej. 14: Nombre y Apellido de las personas nacidas antes del 1 de enero de 1975. Ej. 15: Nombre y coste básico de las asignaturas de más de 4,5 créditos. Ej. 16: Nombre de las asignaturas cuyo coste básico está entre 25 y 35 euros. DISTINCT Ej. 17: Id de los alumnos matriculados en la asignatura '150212' o en la '130113', o en ambas.

Ej. 18: Nombre de las asignaturas del segundo cuatrimestre que no sean de 6 créditos. Ej. 19: Mostrar el identificador de los alumnos matriculados en cualquier asignatura excepto la '150212' y la '130113'. BETWEEN Ej. 20: Nombre de las asignaturas cuyo coste básico esté entre 25 y 35 euros. (Idem. 16).

TEMA 4.5 OPERADORES IN, LIKE, & ||. FUNCI N ORDER BY. Operador IN Ej. 21: Id de los alumnos matriculados en la asignatura '150212' ó en la '130113' ó en ambas. (Idem. 17). Operador LIKE. Comodines ?, _, *, %. Ej. 22: Nombre y el apellido de las personas cuyo apellido comience por la letra 'G'. Operador IS, IS NOT. Ej. 23A: Nombre de las asignaturas que no tienen dato para el IdTitulacion. Ej. 23B: Nombre de las asignaturas que tienen dato para el IdTitulacion. Ej. 24: Nombre de las asignaturas cuyo coste por crédito sea mayor de 8 Euros. Ej. 25: Nombre y número de horas de todas las asignaturas. (1cred.=10 horas). Operadores de cadenas: &, ||. Ej. 26: Mostrar el nombre completo en una columna y la dirección completa en otra columna de las personas. ORDER BY, ASC, DESC. Ej. 27: Datos de personas por orden alfabético de apellidos. Ej. 28: Datos de las asignaturas del 2º cuatrimestre por orden alfabético de IdTitulacion. Para cada titulación ordenar por coste mostrando primero las asignaturas más caras y para las asignaturas del mismo coste mostrar por orden alfabético de nombre de asignatura.

TEMA 4.6 CONSULTAS SOBRE VARIAS TABLAS RELACIONADAS - FROM. TABLAS RELACIONADAS (FROM) Ej. 29: Tablas relacionadas. Ej. 29B: Nombre y apellidos de los profesores. Ej. 30: Nombre de asignaturas impartidas por profesores de Logroño. Ej. 31: Nombre completo (nombre y apellido), en una sóla columna, de los alumnos. Ej. 32: DNI, Nombre y Apellido de los alumnos que viven en La Rioja. Como criterio usar el teléfono. Ej. 33: DNI, Nombre y Apellido de los alumnos matriculados en la asignatura "Seguridad Vial". Ej. 34: Id de las titulaciones en las que está matriculado el alumno con DNI 20202020A. Un alumno está matriculado en una titulación si está matriculado en una asignatura de la titulación. Ej. 35: Nombre de las asignaturas en las que está matriculada Rosa García, mostrando también por cada asignatura, el número de matrícula. Subconsultas - Consultas anidadas. Ej. 36: DNI de los alumnos a los que imparte el profesor Jorge Sáenz. Ej. 37: Cual sería el coste global de cursar la titulación de Matemáticas si el coste de cada asignatura fuera incrementado en un 7%.

TEMA 4.7 CONSULTAS SOBRE TABLAS REPETIDAS - AS. Ej. 38: Nombre de las asignaturas que tienen más créditos que "Seguridad Vial". Ej. 39: DNI, Nombre y Apellido de los alumnos a los que imparte el profesor Jorge Sáenz. Ej. 40: DNI de los profesores que también son alumnos.

TEMA 4.8 SENTENCIA DE AGRUPACIÓN: GROUP BY - HAVING. GROUP BY Ej. 41: Cuantos alumnos hay matriculados en cada asignatura. Ej. 41B: Idem que el ejemplo 41 pero mostrando el nombre de cada asignatura. Ej. 42: Cual es el coste básico total en cada titulación. Crear otra variante mostrando el nombre de la titulación. Ej. 43: Supongamos que cada matrícula adicional supone un 10% de aumento sobre el coste básico, es decir un 10% en 2ª matrícula, un 20% en 3ª matrícula, etc.. Mostrar cuanto ha pagado cada alumno en total por su matrícula. Condiciones sobre el agrupamiento: HAVING. Ej. 44: Coste medio de las asignaturas de cada titulación, para aquellas titulaciones en el que el coste total de la 1ª matrícula sea mayor que 60 euros. Ej. 45: Id de los alumnos matriculados en las asignaturas "150212" y "130113" a la vez. Ej. 46: Id de los alumnos matriculados en las asignatura "150212" ó "130113", en una o en otra pero no en ambas a la vez.

TEMA 4.9 CONSULTAS ANIDADAS - SUBCONSULTAS. CASO 1° - La consulta anidada devuelve un sólo dato. Ej. 47: Nombre de las asignaturas de la titulación "130110" cuyos costes básicos sobrepasen el coste básico promedio por asignatura en esa titulación. CASO 2° - La consulta anidada devuelve más de un valor. Ej. 48: Nombre de las titulaciones que tengan al menos una asignatura de 4.5 créditos. Ej. 49: Mostrar el identificador de los alumnos matriculados en cualquier asignatura excepto la "150212" y la "130113". (Es el ejemplo 19 corregido). Ej. 50: Id de los alumnos matriculados en la asignatura "150212" pero no en la "130113". Ej. 51: Nombre de las asignaturas que tienen más créditos que "Seguridad Vial". (Es igual que el ejemplo 38). Ej. 52: Id de los alumnos matriculados en todas las asignaturas de 1º de Empresariales.

TEMA 4.10 CONSULTAS AVANZADAS: ALL, ANY Y EXISTS. ALL Ej. 53: Nombre de las asignaturas que tengan más créditos. Ej. 54: Personas que viven en la ciudad que vive más gente. ANY Ej. 54B: Personas que viven en cualquier ciudad excepto en la que vive más gente. EXISTS Ej. 55: Lista de asignaturas en las que no se ha matriculado nadie.

Ej. 56: Ciudades en las que vive algún profesor y también algún alumno. Ej. 57: Ciudades en las que vive algún profesor pero ningún alumno.

TEMA 4.11 OPERADORES DE TIPO CONJUNTO. UNION Ej. 58: Mostrar el DNI de alumnos y profesores. Ej. 59: Mostrar las personas que no son ni profesores ni alumnos. Ej. 60: Id de los alumnos matriculados en la asignatura "150212" o en la "130113" o en ambas. (Igual que el ejemplo 17). INTERSECT Ej. 61: DNI de los profesores que también son alumnos. (Igual que el ejemplo 40). MINUS Ej. 62: DNI de personas que no son profesores ni alumnos. (Igual que el ejemplo 59). Ej. 63: Lista de asignaturas en las que no se ha matriculado nadie. (Igual que el ejemplo 55). Ej. 64: Ciudades en las que vive algún profesor y también algún alumno. (Igual que el ejemplo 56). Ej. 65: Ciudades en las que vive algún profesor pero ningún alumno. (Igual que el ejemplo 57).

TEMA 4.12 EJERCICIOS LMD. 90 ejercicios SQL resueltos sobre los temas anteriores. Ej. 1-90 LMD: Ver enunciados de los ejercicios.

TEMA 4.13 INSERCI N, MODIFICACI N Y BORRADO DE DATOS. INSERT Ej. 66: Crear una nueva fila en la tabla TITULACION  con los datos siguientes: IdTitulacion  = "180100"  y Nombre = "Humanidades" . Ej. 67: Crear una nueva fila en la tabla TITULACION  con los datos IdTitulacion  = "180100"  y Nombre = NULL. Ej. 68: Crear una nueva fila en la tabla TITULACION  con los datos siguientes: IdTitulacion  = "180100"  y Nombre = "Humanidades" . (Idem que el 66). Ej. 69: Supongamos que disponemos de una tabla nueva llamada ASIGNATURA_LIBRE_CONFIGURACION , con las mismas columnas que la tabla ASIGNATURA . Insertar las filas de a tabla ASIGNATURA  cuyo IdTitulación  sea NULL. UPDATE Ej. 70: Por error "Rosario Díez"  se ha almacenado como "Díaz" . Modificarlo para corregir el error. Ej. 71: Por motivos técnicos, los prefijos telefónicos de La Rioja pasan a ser 991. Actualizar en la Base de Datos este cambio. Ej. 72: Disminuir en un 10% el coste básico de las asignaturas en las que existan más de 100 matriculados. DELETE Ej. 73: La alumna Laura Beltrán deja la Universidad. Darle de baja en todas las tablas.

TEMA 4.15 LENGUAJE DE DEFINICI N DE DATOS (LDD). CREATE TABLE Ej. 74: Crear la tabla ASIGNATURA que se ha empleado en los temas anteriores. Ej. 75: Crear una tabla llamada PERSONA_ALUMNO  que contenga los datos personales de los alumnos. Ej. 76: Crear una tabla llamada PROFESOR_PRIMER  con columnas "IdProfPrimer", "DNIProfPrimer", "IdAsignatura" que almacene el identificador del profesor, su DNI y el identificador de la asignatura que imparte, para los profesores del primer cuatrimestre. DROP TABLE Ej. 77: Eliminar la tabla ASIGNATURA. RENAME Ej. 78: Renombrar la tabla PERSONA como PERSONAS. ALTER TABLE Ej. 79: Insertar una nueva columna en la tabla TITULACION que pueda almacenar el tipo de titulación. (p.e.: diplomatura, ingeniería, licenciatura, etc.). Ej. 80: Borrar la columna creada en el ejemplo anterior. Ej. 81: En la tabla PROFESOR_PRIMER  eliminar la columna "DNIProfPrimer". Ej. 82: En la tabla ASIGNATURA no permitir nulos en el campo "IdTitulacion". Ej. 83: En la tabla PROFESOR_PRIMER  cambiar el nombre de la columna "IdAsignatura" por "IdAsignaturaImpartida".

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF