Copia SQL Ejemplos
Copia SQL Ejemplos
Copia SQL Ejemplos
EJEMPLO 1:
Obtener los créditos de las asignaturas.
SELECT Creditos
FROM ASIGNATURA;
EJEMPLO 2:
Nombres y créditos de las asignaturas.
SELECT Nombre,Creditos
FROM ASIGNATURA;
EJEMPLO 3:
Posibles distintos créditos de asignaturas.
SELECT DISTINCT(Creditos)
FROM ASIGNATURA;
EJEMPLO 4:
Todos los datos de personas.
SELECT *
FROM PERSONA;
EJEMPLO 5:
Mostrar la suma de todos los créditos de las asignaturas.
SELECT SUM(Creditos)
FROM ASIGNATURA;
EJEMPLO 6:
Media de coste básico.
SELECT AVG(CosteBasico)
FROM ASIGNATURA;
EJEMPLO 7:
Coste básico de la asignatura más cara.
SELECT MAX(CosteBasico)
FROM ASIGNATURA;
EJEMPLO 8:
Coste básico de la asignatura más barata.
SELECT MIN(CosteBasico)
FROM ASIGNATURA;
EJEMPLO 9:
Cuantos costes básicos hay.
SELECT COUNT(CosteBasico)
FROM ASIGNATURA;
EJEMPLO 10:
Cuantos costes básicos distintos hay.
SELECT COUNT(DISTINCT(CosteBasico))
FROM ASIGNATURA;
Nota: Válido para ORACLE, no para ACCESS.
EJEMPLO 11:
Cuantas asignaturas hay.
SELECT COUNT(*)
FROM ASIGNATURA;
RENOMBRAMIENTO DE CAMPOS
Podemos renombrar un campo con la instrucción AS en ACCESS o dejando un espacio en blanco en
ORACLE.
EJEMPLO 12:
Suma de los créditos de las asignaturas llamando a la columna resultante "TotalCreditos".
ACCESS:
SELECT SUM(Creditos) AS "TotalCreditos"
FROM ASIGNATURA;
ORACLE:
SELECT SUM(Creditos) "TotalCreditos"
FROM ASIGNATURA;
AND Y Lógico.
OR Ó Lógico.
NOT No Lógico.
TIPOS DE EXPRESIONES
- Un nombre de columna.
- Un valor constante.
COMANDO WHERE
EJEMPLO 14:
Nombre y Apellido de las personas nacidas antes del 1 de enero de 1975.
ACCESS:
SELECT Nombre, Apellido
FROM PERSONA
WHERE FechaNacimiento < #1/01/1975#;
ORACLE:
SELECT Nombre Apellido
FROM PERSONA
WHERE FechaNacimiento < '1/01/1975';
EJEMPLO 15:
Nombre y coste básico de las asignaturas de más de 4,5 créditos.
SELECT Nombre, CosteBasico
FROM ASIGNATURA
WHERE Creditos > 4.5;
EJEMPLO 16:
Nombre de las asignaturas cuyo coste básico esté entre 25 y 35 euros.
SELECT Nombre
FROM ASIGNATURA
WHERE CosteBasico >= 25 AND CosteBasico <= 35;
EJEMPLO 17:
Id de los alumnos matriculados en la asignatura '150212' ó en la '130113' ó en ambas.
ACCESS:
SELECT Nombre
FROM ASIGNATURA
WHERE Cuatrimestre = "2"
AND NOT (Creditos = 6);
ORACLE:
SELECT Nombre
FROM ASIGNATURA
WHERE Cuatrimestre = '2'
AND NOT (Creditos = 6);
EJEMPLO 19:
Mostrar el identificador de los alumnos matriculados en cualquier asignatura excepto la '150212' y
la '130113'.
SELECT IdAlumno
FROM ALUMNO_ASIGNATURA
WHERE NOT (IdAsignatura = "150212" OR IdAsignatura = "130113");
Nota: No está bien del todo. Ver ejemplo 49.
OPERADOR BETWEEN
Equivale a un rango de valores seguidos incluidos entre dos dados.
EJEMPLO 20:
Nombre de las asignaturas cuyo coste básico esté entre 25 y 35 euros. (Idem. 16). Ver ejemplo 16.
SELECT Nombre
FROM ASIGNATURA
WHERE CosteBasico BETWEEN 25 AND 35;
OPERADOR IN
La instrucción IN sirve para encontrar un dato entre un conjunto de valores dados.
Podemos utilizar NOT IN para discriminar un dato que no se encuentre en el conjunto de valores
dados.
EJEMPLO 21:
Id de los alumnos matriculados en la asignatura '150212' ó en la '130113' ó en ambas. (Idem.
17). Ver ejemplo 17.
SELECT IdAlumno
FROM ALUMNO_ASIGNATURA
WHERE IdAsignatura IN ("150212", "130113");
LIKE
La instrucción LIKE permite comparar un valor o dato con un patrón.
EJEMPLO 22:
Nombre y apellido de las personas cuyo apellido comience por 'G'.
SELECT Nombre, Apellido
FROM PERSONA
WHERE Apellido LIKE "G%";
COMODINES:
ACCESS ORACLE
1 carácter ? _
varios caracteres * %
EJEMPLO 23 A:
Nombre de las asignaturas que no tienen dato para el IdTitulacion.
SELECT Nombre
FROM ASIGNATURA
WHERE IdTitulacion IS NULL;
EJEMPLO 23 B:
Nombre de las asignaturas que tienen dato para el IdTitulacion.
SELECT Nombre
FROM ASIGNATURA
WHERE IdTitulacion IS NOT NULL;
EJEMPLO 24:
Nombre de las asignaturas cuyo coste por crédito sea mayor de 8 euros.
SELECT Nombre
FROM ASIGNATURA
WHERE (CosteBasico/Creditos) > 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 CADENAS (& y ||)
Para enlazar cadenas en ORACLE utilizamos || y en ACCESS &.
EJEMPLO 26:
Mostrar el nombre completo en una columna y la dirección completa en otra columna de las personas.
ORACLE:
SELECT Nombre||' '||Apellido DireccionCalle||', '||DireccionNum||' - '||Ciudad
FROM PERSONA;
ACCESS:
SELECT Nombre&" "&Apellido, DireccionCalle&", "&DireccionNum&" - "&Ciudad
FROM PERSONA;
Atributos de ordenación:
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;
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 29:
Construir las tablas anteriores en una base de datos nueva y ejecutar la siguiente consulta:
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;
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 36:
DNI de los alumnos a los que imparte el profesor Jorge Sáenz.
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";
Otra forma de hacer lo mismo es utilizando una subconsulta llamadas también consultas anidadas.
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";
Les dejo esta URL para que consulten los demás
ejemplos.
ftp://iesjuandelacierva.com/pub/pilarbbdd2008-09/bloque%203%20-
%20sql/Apuntes%20Bloque%20SQL/tema4g.html