Sunteți pe pagina 1din 53

SQL

Conceptos Generales de Bases de Datos


1. ¿Qué en una Base de Datos?

l El término Base de Datos expresa un conjunto de datos


relacionados entre sí, que están estructurados, de forma que
puede accederse a ellos automática e independientemente de
los programas que gestionan esos datos. Esta independencia
se refiere a la posibilidad de modificar los programas que lo
manipulan.
2. Tablas, campos y registros

l Toda BD está formada por uno o varios bloques de información


llamados Tablas.
l Una Tabla o archivo es un conjunto conexo de información del mismo
tipo. Cada tabla está formada por Registros.
l Un Registro es la unidad elemental de información de la tabla o
archivo. Cada Registro está formado por uno o más elementos
llamados Campos.
l Un Campo es cada una de las informaciones que inetersa almacenar
en cada registro y, por lo tanto, la unidad elemental de información del
registro.
3. Estructura de Base de Datos

l Los SGBD o DBMS organizan y estructuran los datos de forma que


pueden ser manipulados y recuperados por usuarios y programas de
aplicación.
l Las estructuras de los datos y las técnicas de acceso proporcionadas
por un DBMS se denomina Modelo de Datos.
l SQL(Structure Query Languaje) es un lenguaje estándar normalizado
para trabajar con BD. Es un lenguaje para ser usado en BD
relacionales y usa el modelo de datos relacional.

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
3.1 Bases de Datos Relacionales...

l Las tablas son tratadas como conjuntos matemáticos, obtenidas como


subconjuntos del producto cartesiano de los rangos de los posibles
valores de los distintos campos que la componen.

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
3.1 Bases de Datos Relacionales
CAMPOS

COD MATERIA AUTOR TITULO REF AÑO No EJ.

1 Economía R. Tamames Estr.Ec.España E001 1986 3

1 Economía R. Tamames Estr.Ec.España E002 1986 1

3 Polìtica R. Tamames ¿Quo vadis Esp.? P039 1975 1

9 Novela A. Camus El extranjero N069 1940 2

9 Novela R. Tamames Historia de Elio N070 1978 1

1 Economía Fuentes Q. Hacienda Publ. E003 1974 2

1 Economía Lipsey Teoría Econom. E004 1970 2

2 Estadística Arnáiz Estad. Descript. S001 1962 1

2 Estadística Sixti Ríos Métodos Estad. S002 1970 1


4. Operaciones Relacionales Básicas

l Una Base de Datos relacional constará de varias tablas con las que
se pueden efectuar tres operaciones fundamentales, llamadas
operaciones relacionales, que permiten a creación de nuevas tablas a
partir de las ya existentes.

l Selección (Selection)
l Proyección (Projection)
l Concatenación (Join)

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
4.1 Selección
l Consiste en la obtención de una nueva tabla formada por alguna de
las filas (registros) seleccionadas de otra tabla previamente existente.
La selección usa algún criterio.
A B

Selección

COD MATERIA AUTOR TITULO REF AÑO No EJ.

1 Economía R. Tamames Estr.Ec.España E001 1986 3

1 Economía R. Tamames Estr.Ec.España E002 1986 1

3 Polìtica R. Tamames ¿Quo vadis Esp.? P039 1975 1

9 Novela R. Tamames Historia de Elio N070 1978 1


4.2 Proyección
l Consiste en la obtención de una nueva tabla formada por algunas
columnas (campos) seleccionadas de otra tabla previamente
existente. En caso de repetición, sólo aparecerá uno de los registros
repetidos
A B

Proyección

COD MATERIA AUTOR TITULO REF AÑO No EJ. TITULO No EJ.

1 Economía R. Tamames Estr.Ec.España E001 1986 3 Estr.Ec.España 3

1 Economía R. Tamames Estr.Ec.España E002 1986 1


Proyección Estr.Ec.España 1

3 Polìtica R. Tamames ¿Quo vadis Esp.? P039 1975 1 ¿Quo vadis Esp.? 1

9 Novela R. Tamames Historia de Elio N070 1978 1 Historia de Elio 1


4.3 Concatenación
l Consiste en la obtención de una nueva tabla uniendo dos tablas ya
existentes. La unión de registros se efectúa si en ambas tablas
coincide el contenido de un campo prefijado de c/u de ellas.
A B C

Concatenación

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
4.3 Concatenación
l En el ejemplo inicial, concatenamos con una nueva tabla con el
mismo número de registros y cuyos campos sean AUTOR,
NACIONALIDAD Y PROFESIÓN

COD MATERIA AUTOR TITULO REF AÑO No EJ. Nacionalidad Profesión


1 Economía R. Tamames Estr.Ec.España E001 1986 3 Español Catedrático

1 Economía R. Tamames Estr.Ec.España E002 1986 1 Español Catedrático

3 Polìtica R. Tamames ¿Quo vadis Esp.? P039 1975 1 E.E.U.U. Catedrático

9 Novela R. Tamames Historia de Elio N070 1978 1 Español Estadístico

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
5. Operaciones Relacionales y Operadores Booleanos

l Además de las operaciones básicas de selección, proyección y


concatenación, en las bases de datos relacionales pueden realizarse
operaciones similares a las utilizadas en la teoría de conjuntos, por
ejemplo, la Unión, la Intersección, el Complemento y la Diferencia,
siendo los tres primeros equivalentes a los operadores booleanos OR,
AND y NOT.

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
5.1 Unión
l Esta operación tiene como resultado la tabla formada por la
agregación de registros de dos tablas que ya existen. Las tablas con
las que se va a operar han de tener la misma estructura y los mismos
nombres de campo
R UNIÓN S

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
5.2 Intersección
l Esta operación tiene como resultado la tabla formada por los registros
comunes a dos tablas ya existentes. Las tablas con las que se va a
operar han de tener la misma estructura y los mismos nombres de
campo
R INTERSECCIÓN S

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
5.3 Diferencia
l Esta operación tiene como resultado la tabla formada por los registros
de una tabla ya creada que no figura en otra tabla también creada.

S MENOS R R MENOS S

R R

S S

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
6. Crear tablas de una BD Relacional en SQL std

l El primer paso al crear tablas es crear una tabla “vacia”


l Se usa el comando CREATE TABLE de SQL
l Después se utilizan las sentencias SELECT, INSERT, UPDATE,
DELETE
l CREATE TABLE crea un “objeto” (la tabla) dentro del sistema
l Existen otros objetos dentro del sistema, como son los índices, que se
crean con CREATE INDEX
l Objetivos de la creación de tablas
l Establecer nuevas tablas en la BD y darles nombre
l Asignar nombre a las columnas y definir tipos de datos
l Especificar el orden de columnas por defecto
l Especificar columnas NO acepten valores nulos
l Especificar la clave primaria
l Especificar las claves secundarias,externas o foráneas
6.1 Nombres de tablas y de columnas

l Nombres de Tablas
l Tiene un determinado número máximo de caracteres (SGBD)

l Inicia con una letra, seguida de otras letras, dígitos o caracteres

de subrayado
l Se especifica después del comando CREATE TABLE

l Nombres de Columnas
l Se formulan de acuerdo a reglas sintácticas, al igual que los

nombres de tablas.
l Deben ser únicos dentro de una tabla dada.

l Es posible que el mismo nombre de columna aparezca

especificado dentro de varias tablas


6.2 Tipos de datos en SQL estándar

l El tipo de datos de cada columna se especifica después del nombre de


la columna. Estándar ANSI/ISO.
l Cadenas de caracteres de longitud fija: CHAR(L) ó

CHARACTER(L). Nombres, direcciones


l Enteros: INTEGER ó INT. Cantidades, edades

l Números decimales: DECIMAL(p,s) ó NUMBER(p,s) p=precisión

s=escala. Números que tienen parte fraccionaria y deben ser


calculados exactamente. Porcentajes y tasas
l Números en coma flotante: FLOAT. Almacenan números

científicos (en notación exponencial) pesos y distancias

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
6.3 Tipos de datos extendidos en SQL estándar

l Algunos de los tipo de datos extendidos más importantes son:


l Cadenas de caracteres de longitud variable: VARCHAR(n).

Nombres, direcciones
l Importes Monetarios: MONEY(p,s) Cantidades monetarias

l Fechas y horas: DATE, TIME, TIMESTAMP

l Datos booleanos: BIT ó LOGICAL.

l Texto extenso: LONG ó LONG VARCHAR

l Flujos de bytes no estructurados: RAW, LONG RAW,

BINARY(n), VARBINARY(n)

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
6.4 Secuencia de columnas y valores NULL

l Secuencia de valores por defecto: Las columnas de una tabla se


definen especificándolas en cierto orden. Una se define primero, otra
en segundo lugar, etc. Este orden establece la secuencia de las
columnas de izquierda a derecha que se produce por defecto.

l Valores NULL: Un valor nulo es un indicador que dice al usuario que


el dato falta o n es aplicable. Por conveniencia se dice que el dato que
falta tiene el valor NULL. El valor NULL no es un dato numérico real, es
una señal de que el valor de datos falta.

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
6.5 Clave primaria y secundaria

l Clave Primaria: Se recomienda que todas las tablas tengan alguna


columna o grupo de columnas especificadas como la clave primaria de
la tabla. La clave primaria es un campo (o campos) que nunca puede
contener valores NULL y que tiene un valor único para cada fila de la
tabla.

l Clave Secundaria (externa o foránea): Es una columna, o grupo de


columnas, cuyo valor es igual al de alguna clave primaria en una tabla
especificada. Una tabla puede contener más de una clave secundaria
si esta relacionada con más de una tabla adicional.

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
6.6 Un ejemplo...

Considerar una tabla de nombre CURSO que va a formar parte de una


base de datos en un contexto educativo, cuyos campos van a definir
las características de los cursos que van a ser impartidos en las clases
de un centro educativo por varios profesores pertenecientes a diversos
departamentos y en los que se matricularán distintos estudiantes. En el
centro educativo también existe personal no docente.

Directamente relacionada con la tabla CURSO, vamos a considerar la


tabla DEPARTAMENTO, que tiene un registro por cada departamento
académico al que pertenecen los profesores que imparten cursos

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
6.6 Un ejemplo: Estructura
CURSO
Nombre Tipo de datos Longitud Contenido
CNO Carácter 3(fijo) Número de curso (único)
CNOMBRE Carácter 22(variable) Nombre de curso (único)
CDESCP Carácter 25(variable) Descripción del curso (único)
CRED Entero 5 Créditos que vale el curso
CTARIFA Decimal 5,2 Valor tarifa laboratorio
CDEPT Carácter 3(fijo) Depto. Que da el curso

DEPARTAMENTO
Nombre Tipo de datos Longitud Contenido
DEPT Carácter 3(fijo) Departamento (único)
DEDIF Carácter 2(fijo) Edifico
DDESPACHO Entero 3 Despacho
DCHFNO Entero 2 Director
6.6 Un ejemplo: Datos
Tabla CURSO

CNO CNOMBRE CDESCP CRED CTARIFA CDEPT

C11 INTROD. A LAS CC. PARA NOVATOS 3 100.00 CIS

C22 ESTRUCT. DE DATOS MUY UTIL 3 50.00 CIS

C33 MATEMATICAS DISCRETAS ABS. NECESARIO 3 .00 CIS

C44 CIRCUITOS DIGITALES AH AH 3 .00 CIS

C55 ARQUITECT. COMPUTADORES MAQ. VON NEUMANN 3 100.00 CIS

C66 BD RELACIONAL IMPRESCINDIBLE 3 500.00 CIS

P11 EMPIRISMO VERLO PARA 3 100.00 PHIL

P22 RACIONALISMO PARA USARLOS CIS 3 50.00 PHIL

P33 EXISTENCIALISMO PARA USARLOS CIS 3 200.00 PHIL

P44 SOLIPSISMO PARA MI MISMO 6 .00 PHIL

T11 ESCOLASTICISMO PARA BEATOS 3 150.00 THEO

T12 FUNDAMENTALISMO PARA DESCUIDADOS 3 90.00 THEO

T33 HEDONISMO PARA SANOS 3 .00 THEO

T44 COMUN ISMO PARA AVAROS 6 200.00 THEO


6.6 Un ejemplo: Datos

Tabla DEPARTAMENTO

DEPT DEDIF DDESPACHO DCHFNO

THEO HU 200 10

CIS SC 300 80

D.G. SC 100 ---

PHIL HU 100 60

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
7 Constantes en SQL estándar

l SQL ANSI/ISO especifica el formato de las ctes. Numéricas y de


caracteres que representan valores de datos específicos.
l Constantes numéricas:
l Constantes enteras y decimales

l Constantes en coma flotante

l Constantes de cadenas
l Constantes de fecha y hora
l Constantes simbólicas

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
7.1 Expresiones en SQL estándar

l SQL ANSI/ISO especifica cuatro operaciones aritméticas que pueden


ser utilizadas en expresiones:
l Suma: (X + Y)

l Resta: (X – Y)

l Multiplicación: (X * Y)

l División: (X / Y)

l Paréntesis para formar expresiones más complicadas:

(VENTAS * 1.05) – (OBJETIVO * .95)


l Precedencia de los operadores
l Multiplicación y división tienen prioridad sobre suma y resta

l Operadores de la misma prioridad son evaluados de izq-der

l Los paréntesis sos usados para forzar prioridad y claridad


7.2 Funciones en SQL estándar

Funciones de columna {SUM, AVG, MIN, MAX, COUNT

DECIMAL, INTEGER
Conversión de tipos de datos
FLOAT, DIGITS,HEX

Funciones escalares Manipulación de cadenas {LENGTH, SBSTR, VALUE

DATE, DAY, MONTH, TEAR, TIME


Fecha / Hora
TIMESTAMP, SECOND, MINUTE, HOUR
8 Creación de tablas
CREATE [TEMPORARY] TABLE table (campo1 tipo [NOT NULL] [índice1]
[, campo2 tipo [NOT NULL] [índice2] [, ...]
[, CONSTRAINT índiceMúltiplesCampos [, ...])

Argumento Descripción
Tabla El nombre de la tabla que se va a crear
Campo1, campo2 El nombre del campo o de los campos que se van a crear en la nueva tabla.
Debe crearse al menos un campo
Tipo El tipo de datos de campo en la tabla nueva
Índice1, índice2 Una cláusula CONSTRAIN que define un índice de un solo campo
índiceMúltiplesCampos Una cláusula CONSTRAIN que define un índice de múltiples campos

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
8.1 Int. a las restricciones de integridad
Restricción de un solo campo:
CONSTRAIN nombre { [NOT] NULL ! { PRIMARY KEY ! UNIQUE }
! REFRENCES tablaExterna [ ( campoExterno1 [,campoExterno2)]
[on delete cascade ! Set null] }
! CHECK (condicion) }

Restricción de múltiples campos:


CONSTRAIN nombre
{ PRIMARY KEY (principal1 [, principal2 [, ...]])
! UNIQUE (único1 [, único2 [, ...]])
! NOT NULL (noNull1 [, noNull2 [, ...]])
! FOREIGN KEY [NO INDEX] (ref1[, ref2 [, ...]])
REFERENCES tablaExterna [(campoExterno1 [, campoExterno2
[, ...]])] ]ON DELETE {CASCADE ! SET NULL}]
! CHECK (condicion) }

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
8.1 Int. a las restricciones de integridad

Argumento Descripción
Nombre El nombre de la restricción que se va a crear
Principal1, principal2 El nombre del campo o campos que se van a designar como clave principal
Único1, único2 El nombre del campo o campos que se van a designar como clave única
noNull1, noNull2 El nombre del campo o de los campos que se van a limitar a valores que no sean Null
Ref1, ref2 El nombre del campo o de los campos de la clave externa a los que se hace
referencia en otra tabla
tablaExterna El nombre de la tabla externa que contiene el campo o campos dados por
campoExterno
campoExterno1, El nombre del campo o de los campos en tabla externa especificados por ref1, ref2.
campoExterno2 Puede omitir esta cláusula si el campo al que se hace referencia es la clave principal
de tabla externa

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
8.2 Introducir registros en tablas

INSERT INTO destino [(campo1 [, campo2[, ...] ] ) ]


VALUES (valor1 [, valor2[, ...])

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
9 Selección de información
Comando SELECT
SELECT [predicado] { * ! tabla.* ! [tabla.] campo1 [AS alias1]
[, [tabla.]campo2 [AS alias2] [, ...] ] }
FROM expresiónTabla [, ...]
[WHERE ...]
[GROUP BY ...]
[HAVING ...]
[ORDER BY ...]

Argumento Descripción
Predicado Uno de los siguientes predicados: ALL, DISTINCT, DISTINCTROW o TOP
* Selecciona todos los campos de la tablas o tablas
Tabla El nombre de la tabla que contiene los campos a seleccionar
Campo1, campo2 Los nombres de los campos a seleccionar
Alias1, alias2 Los nombres que se van a usar como encabezados

expresiónTabla El nombre de la tabla o tablas que contienen los datos que se desean recuperar

baseDatosExterna El nombre de la base de datos que contiene las tablas si no están en la base de datos activa
9.1 Cláusula FROM, WHERE y GROUP BY
Cláusula FROM
SELECT listaCampos
FROM expresiónTabla [IN baseDatosExterna]

Cláusula WHERE
SELECT listaCampos
FROM expresiónTabla
WHERE criterios

Cláusula GROUP BY
SELECT listaCampos
FROM Tabla
WHERE criterios
[ GROUP BY listaCamposGrupo]
María Teresa Torrijos Muñoz
SQL
Diseño de Bases de Datos
Primavera 2018
9.2 Cláusula ORDER BY
Cláusula ORDER BY
SELECT listaCampos
FROM tabla
WHERE criteriosSelección
[ ORDER BY campo1 [ ASC ! DESC ] [ campo2 [ ASC ! DESC ] ... ]

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
9.3 Cláusula HAVING
Cláusula HAVING
SELECT listaCampos
FROM Tabla
WHERE criterios
GROUP BY listaCamposGrupo
[ HAVING criteriosGrupo ]

Argumento Descripción
listaCampos El nombre del campo o de los campos que se van a recuperar junto con cualquier alias de nombre
de campo, función de agregado SQL, predicado de selección (ALL, DISTINCT,..) u otras opciones
del comando SELECT
Tabla El nombre de la tabla de la que se va a recuperar los registros
criteriosSelección Si la instrucción incluye una cláusula WHERE, Oracle agrupará los valores después de aplicar las
condiciones de la cláusula WHERE a los registros
listaCamposGrupo Los nombres de hasta 10 campos que se van a utilizar para agrupar registros. El orden de los
nombres de los campos en listaCamposGrupo determina los niveles de agrupamiento desde el más
alto hasta el más bajo
criteriosGrupo Una expresión que determina qué registros agrupados se van a mostrar.
10 Operadores de conjuntos
• La tabla siguiente muestra la sintaxis de los operadores
de conjuntos

Operador Propósito Ejemplo


UNION (UNION) Realiza la unión SELECT part FROM order_list1
conjuntista de UNION
resultados de consulta SELECT part FROM order_list2
INTERSECCIÓN Realiza la intersección SELECT part FROM order_list1
(INTERSECT) conjuntista de INTERSECT
resultados de consulta SELECT part FROM order_list2
DIFERENCIA Realiza la diferencia SELECT part FROM order_list1
(MINUS) conjuntista de MINUS
resultados de consulta SELECT part FROM order_list2
UNIÓN REPETIDA Realiza la unión con SELECT part FROM order_list1
(UNION ALL) elementos repetidos UNION ALL
SELECT part FROM order_list2
CONCATENACIÓN Concatena caracteres SELECT “Nombre es “ !! Ename
FROM emp

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
11. La tabla DUAL

l La tabla DUAL es una tabla muy pequeña con únicamente una fila y
una columna. Suele utilizarse para probar<funciones o para realizar
cálculos rápidos.

SQL > select POWER(4,3) from DUAL;

SQL > select 2+2 from DUAL;

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
2 La sentencia SELECT
Sentencia SELECT
SELECT [ { DISTINCT ! UNIQUE } ! ALLL ]
[ * ! [usuario.] tabla.*
! expresión [alias] [expresión [alias] ...] ]
FROM [usuario.] tabla [@enlacebd] [alias]
[, [usuario.] tabla [@enlacebd] [alias] ...]
[WHERE condición]
[CONNECTED BY condición [START WITH condición ] ]
[GROUP BY expresión [,expresión] ...] [HAVING condición] ]
[{ UNION ! UNION ALL ! INTERSECT ! MINUS } SELECT ...]
[ORDER BY {expresión ! posición} [ASC ! DESC]
[, expresión ! posición} [ASC ! DESC] ...]
[FOR UPDATE [OF [ [ usuario,] {tabla ! Vista} . ] columna
[, [usuario, ] {tabla ! Vista}. ] ] ...]
NOWAIT ] ]

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
2.1 Ejemplos relativos a la sentencia SELECT
l Obtener las filas de la tabla EMP cuyo número de departamento es 30 1
l Seleccionar nombre, trabajo, salario y número de departamento excepto para los vendedores del
departamento número 30. 2
l Calcular los salarios máximo y mínimo para los administrativos en cada departamento 3
l Obtener el número de empleados y su salario medio anual a través de todas las posibles
combinaciones de departamento y categoría de trabajo 4
l Calcular los salarios máximos y mínimos para los administrativos en cada departamento siendo
los salarios mínimos inferiores a mil 5
l Obtener los vendedores con todas sus características ordenados en orden descendente de
comisión 6
l Obtener los vendedores ordenados primero por orden ascendente de número de departamento y
después por orden descendente de salario 7
l Determinar, usando subconsultas, quien trabaja en el departamento de TAYLOR. 8

l Selección de todas las tablas de una instancia de BD


l SELECT table_name from user_tables

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
2.2 Selección de Filas y cláusula DISTINCT

l En ocasiones es necesario realizar consultas cuyos resultados


afecten sólo a parte de la fila. Usar la cláusula WHERE
l Muestra toda la información sobre los cursos cuya tarifa es menor que 150 9
l Muestra todas las oficinas en donde las ventas exceden al objetivo 10
l Obtener el nombre, ventas y cuota del empleado número 105 11

l Si una consulta no incluye la clave primaria en la selección, en el


resultado pueden aparecer filas repetidas.
l Esto se puede evitar usando DISTINCT

l SELECT dir FROM oficinas;


l SELECT DISTINCT dir FROM oficinas;

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
2.3 Resultados ordenados de una consulta

l SQL permite ordenar resultados de una consulta incluyendo la


cláusula ORDER BY en la sentencia SELECT.
l Obtener la identificación del departamento, título de empleado y salario para todos los miembros
de la plantilla fijando como campo principal de ordenación el departamento en secuencia
ascendente y como campo secundario de ordenación el salario en secuencia descendente 12
l Mostrar las ventas de cada oficina ordenadas en orden alfabético por región, y dentro de cada
región, por ciudad 13
l Listar las oficinas clasificadas en orden descendente de ventas, de modo que las oficinas con
mayores ventas aparezcan en primer lugar. 14
l Listar las oficinas clasificadas en orden descendente de rendimiento de ventas, de modo que las
oficinas con mayor rendimiento aparezcan primero. 15
l Listar las oficinas en orden alfabético por región, y dentro de cada región en orden descendente
de rendimiento de ventas 16

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
2.4 Cálculo en columnas

l SQL puede utilizar columnas que son el resultado de


operaciones entre otras columnas.
l Obtener el nombre y el nuevo salario de todos los miembros del personal si se les concede un
incremento de sueldo de 100 unidades monetarias.17
l Obtener el nombre y el nuevo salario de todos los miembros del personal cuyo nuevo salario sea
mayor que 25,000 suponiendo que todos los salarios iniciales se han reducido en 100. 18
l Listar la ciudad, región e importe por encima o por debajo del objetivo para cada oficina 19
l Mostrar el valor del inventario para cada producto 20
l Mostrar la nueva cuota consistente en elevar la cuota de cada vendedor un 3% de sus ventas
anuales hasta la fecha correspondiente.21

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
2.5 Cláusula AS

l SQL puede utilizar en la salida nombres de columnas distintos a


los reales
l SELECT ciudad, región, ventas-objetivo AS “SUPERHABIT” from oficinas;

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
3 Consultas con condiciones de búsqueda

l SQL permite realizar consultas que contienen condiciones de


búsqueda o predicados
l Contrastes de comparación: compara el valor de una expresión con
el valor de otra.
l Contrastes de rango: examina si el valor de una expresión cae dentro
de un rango dado
l Contrastes de pertenencia :a un conjunto: comprueba si el valor de
una expresión pertenece a un conjunto dado.
l Contrastes de correspondencia con patrón: comprueba si los datos
cumplen un patrón dado.
l Contrastes de valor nulo: comprueban si existen valores nulos en las
columnas

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
3.1 Contrastes de comparación

l SQL calcula y compara los valores de dos expresiones SQL


para cada fila de datos utilizando los operadores de
comparación.
l Obtener los vendedores contratados antes de 1998 22
l Obtener las oficinas cuyas ventas están por debajo del 80% 23
l Obtener las oficinas no dirigidas por el empleado número 108 24
l Obtener el nombre y el límite de crédito del cliente número 2107 25

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
3.2 Contrastes de rango: BETWEEN...AND

l Comprueba si un valor se encuentra entre dos valores


especificados
l Obtener el nombre del curso y la descripción de todos los cursos cuya descripción comience por
la palabra ES. 26
l Obtener todas las características de los pedidos que se han realizado entre el 1 de octubre y el
31 de diciembre de 1989 27
l Obtener el número del curso y tarifa de todos los cursos de tarifa menor que 50 o mayor que 400
28
l Obtener la lista de los vendedores cuyas ventas no están entre el 80 y el 120% de su cuota 29

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
3.3 Contrastes de pertenencia: IN

l Comprueba si un valor dado coincide con uno de una lista de


valores especificada
l Obtener toda la información disponible sobre cualquier curso que tenga una tarifa coincidente con
algún número del conjunto {12,12,50,75,90,100,500} 30
l Obtener toda la información disponible sobre cualquier curso que no tenga una tarifa coincidente
con algún número del conjunto {12,12,50,75,90,100,500} 31
l Obtener los vendedores que trabajan en la oficina de representación 11, 13 y 22 Ejercicio 32
l Obtener fecha e importe de todos los pedidos que no se hayan remitido en u jueves de enero de
1990 33

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
3.4 Contrastes de patrón: LIKE

l Recuperan filas para las que el contenido de una columna de


texto se corresponde con un texto dado. El signo de porcentaje
% se usa como comodín.
l Obtener la información para cualquier curso que tenga una descripción que comience con la
cadena ‘PARA’ 34
l Obtener el límite de crédito de la compañía Smithson Corp.35
l Obtener todas las empresas cuyo límite de crédito no es 20,000 36
l Obtener la información relativa a todas las empresas que tienen como segunda letra de su
nombre la letra e. 37
l Obtener la información relativa a todas las empresas cuyos nombres empiezan por la letra A 38

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
3.5 Contraste de valor nulo: NULL

l Es muy útil comprobar los valores NULL existentes en una tabla


y manejarlos a nuestro antojo.
l Obtener los nombres, número de ayudante y número de departamento para todos los miembros
de la facultad para los que se sabe si tienen o no ayudantes 39
l Obtener los vendedores que aún no tienen asignada una oficina 40
l Obtener los vendedores a los que se les ha asignado una oficina 41

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
3.6 Contraste compuestos: AND, OR y NOT

l Usando las reglas de la lógica se pueden combinar condiciones


de búsqueda SQL simples para formar condicines compuestas
únicas.

l Obtener toda la información sobre los cursos de tres créditos ofrecidos por el departamento de
Filosofía 42
l Obtener toda la información sobre cualquier curso que tenga una tarifa entre 100 y 500, ambos
inclusive 43
l Obtener los vendedores que están por debajo de la cuota y tienen ventas inferiores a 300,000 44
l Obtener los vendedores que están por debajo de la cuota o con ventas inferiores a 300,000 45

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
3.7 Combinación de consultas: UNION

l Permite combinar los resultados de dos o más consultas en una


única tabla

l Obtener los salarios de todo el personal y del claustro de la facultad en una tabla única 46
l Obtener los salarios de todo el personal y del claustro de la facultad en una tabla única sin
eliminar valores duplicados en el resultado. 47
l Listar todos los productos cuyo precio unitario excede de 2,000 o con importe de pedido superior
a 30,000 usando DISTINCT 48
l Listar todos los productos cuyo precio unitario excede de 2,000 o con importe de pedido superior
a 3,000 sin hacer uso de DISTINCT 49
l El anterior usando UNION ALL 50
l Listar todos los productos cuyo precio unitario excede de 2,000 o con importe de pedido superior
a 3,000, ordenando los resultados por fabricante y número de pedido. 51

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018
4. Ejercicios

l Para esta parte del curso, los ejercicios propuestos se


propondrán en clase

María Teresa Torrijos Muñoz


SQL
Diseño de Bases de Datos
Primavera 2018

S-ar putea să vă placă și