Está en la página 1de 12

15/12/2011

Lenguajes de bases de datos


Tema 7 En esta unidad se abordan cuestiones que,
aunque estn definidas por el estndar
ANSI/ISO SQL, no estn asumidas al 100%
Elaboracin de consultas por todos los fabricantes. Por tanto, pueden
bsicas de seleccin existir ligeras diferencias de algunos
productos con algunas de las
especificaciones que se aqu se exponen.

SQL bsico
Un lenguaje de bases de datos deber pertenecer
al menos a uno de los siguientes grupos
SQL (Structured Query Language) est compuesto por:
Lenguaje de definicin de datos (DDL). Se
Comandos (verbos) que indican la accin a realizar.SELECT,
usa para la definicin de dominios, tablas, UPDATE, INSERT, CREATE,
vistas y restricciones de integridad. Clusulas que especifican condiciones para definir los datos
Lenguaje de manipulacin de datos (DML). que queremos seleccionar.FROM WHERE ORDER BY, GROUP
Se utiliza para realizar consultas, insertar, BY,
borrar o modificar registros o tuplas. Operadores de comparacin y lgicos.AND, OR, < =,
Funciones de agregado: se usan dentro de una clusula
Lenguaje de control de datos (DCL). Gestiona SELECT en grupos de registros para devolver un nico valor que
privilegios, autorizaciones, usuarios y permisos. se aplica a un grupo de registros (AVG, COUNT, SUM, MAX,
MIN).
En una sentencia SQL se usan conjuntamente todos estos
componentes

1
15/12/2011

CONSULTAS EN SQL. EJEMPLO

El formato genrico de una consulta sencilla es: Por ejemplo:


SQL>SELECT apellido, fecha_alta,
salario, salario + 100000
FROM empleados;

En la condicin se especifican
Donde expre_colum puede ser una columna de una operadores lgicos y/o de
tabla, una constante, una expresin aritmtica, una
funcin o varias funciones anidadas.
comparacin:

FROM WHERE

FROM [nombre_tabla1, nombre_tabla2, nombre_ [WHERE condicin]


tablan ] Obtiene las filas que cumplen la condicin
Especifica la tabla o lista de tablas de las que se expresada. La complejidad de la condicin es
recuperarn los datos. prcticamente ilimitada. El formato de la condicin
Ejemplo: consultamos los nombres de alumnos y es: expresin operador expresin.
su nota de la tabla ALUMNOS: Las expresiones pueden ser: una constante, una
expresin aritmtica, un valor nulo o un nombre
SQL> SELECT apenom, telef de columna. Los operadores de comparacin se
pueden observar en el Cuadro siguiente.
FROM alumnos;

2
15/12/2011

Operadores de comparacin Ejemplo


=, >, <, >=, <=, =, <>, !<, !> WHERE nota = 5
IN, NOT IN, BETWEEN, NOT BETWEEN, WHERE (nota>=10) AND (curso=1)
ANY, SOME, ALL, EXISTS, NOT EXISTS WHERE (nota IS NULL) OR (UPPER (nom_alum) = 'PEDRO')

LIKE, NOT LIKE, IS NOT, IS NOT NULL

Se pueden construir condiciones mltiples usando


los operadores lgicos booleanos estndares:
AND, OR y NOT. Se pueden emplear parntesis
para forzar el orden de evaluacin

ORDER BY ORDER BY
[ORDER BY expre_columna [DESC I ASC] [,
As mismo, es posible anidar los criterios. El
expre_columna [DESC I ASC] .. . ]
situado ms a la izquierda ser el principal.
Especifica el criterio de clasificacin del resultado
Ejemplo:
de la consulta. ASC especifica ordenacin
ascendente, y DESC, descendente. SQL> SELECT * FROM alumnos ORDER BY
curso desc, nom_alum;
Puede contener expresiones con valores de
columnas; por ejemplo:
SQL> SELECT * FROM alumnos (ordena por CURSO descendente y por
NOM_ALUM ascendente).
ORDER BY nota/5;

3
15/12/2011

ALL|DISTINCT

ALL
Recupera todas las filas, aunque algunas
estn repetidas. Es la opcin por omisin.
DISTINCT
Slo recupera las filas que son distintas. Por
ejemplo, consultamos los departamentos
(colum-na DEPT_NO) de la tabla EMPLE.

Select SELECCIN DE TODOS LOS


CAMPOS DE UNA TABLA
El formato de SELECT que nos permite SELECT * FROM TABLA;
seleccionar las columnas de una tabla es ste:

SELECT [ALL I DISTINCT] [expre_colum1,


expre_colum2, . ., expre_column | * ]
FROM [ nombre_ tabla1, nombre_ tabla2, ,
nombre_tablan]

4
15/12/2011

Ejemplo Seleccin de columnas o campos

SELECT * Es posible seleccionar solo unos determinados


FROM coches campos:
ORDER BY marca, potencia desc; SELECT campo1,campo2,, campoX
FROM tabla;
Ejemplo1
Ejemplo
SQL> SELECT DNOMBRE, DEPT_NO FROM DEPART;

ALIAS DE COLUMNAS Ejemplo

A veces el nombre de una columna resulta


demasiado largo, si resulta demasiado largo,
corto o crptico, podemos utilizar un alias de
columna. ste se pone entre comillas dobles
a la derecha de la columna. (En Access se
emplea la palabra reservada AS)
SELECT campo1 alias_campo1,
Ejemplo3

5
15/12/2011

Operadores aritmticos Operadores aritmticos. Ejemplo


Sirven para formar expresiones con constantes,
valores de columnas y funciones de valores de Se trata de obtener la nota media de cada
columnas. Devuelven un valor numrico como alumno, visualizamos por cada uno de ellos su
resultado de realizar los clculos indicados.
nombre y su nota media.

SQL> SELECT nombre_alumno "Nombre


Alumno", (nota1+nota2+nota3)/3 "Nota Media"
FROM notas_alumnos ;
SELECT col1+col2, col1*col2, 45*col1
FROM tabla;

Operadores aritmticos Operadores de comparacin

Algunos de ellos se pueden utilizar tambin con Igual =


fechas:
Distinto != (En Access se utiliza <>)
f1 - f2 Devuelve el nmero de das que hay entre
las fechas f1 y f2. Menor que <
f + n Devuelve una fecha que es el resultado de Mayor que >
sumar n das a la fecha f. Menor o igual <=
f n Devuelve una fecha que es el resultado de
restar n das a la fecha f. Mayor o igual >=

6
15/12/2011

Operadores lgicos: AND, OR y NOT. Combinacin de operadores AND y OR


AND. Se utiliza cuando queremos que se cumplan las dos condiciones
a la vez. La condicin resultante ser cierta, solo si ambas son
Estos operadores se pueden combinar de forma ilimitada
ciertas.
pero se deben utilizar parntesis para agrupar aquellas
expresiones que deseamos que se evalen juntas.
SQL> SELECT * FROM EMPLEADOS WHERE OFICIO =
'VENDEDOR' AND SALARIO > 1500;
Select * from emple where salario>2000 and
OR. Se utiliza cuando queramos que se cumpla la primera condicin, o (depart=10 or depart=20); NO ES IGUAL A
la segunda o ambas). La condicin resultante ser cierta si alguna de Select * from emple where salario>2000 and
las dos lo es depart=10 or depart=20;
SQL> SELECT * FROM EMPLEADOS WHERE OFICIO =
'VENDEDOR' OR SALARIO > 1500; La primera obtendr empleados de los departamentos
10 y 20 que tengan sueldos mayores a 2000.
NOT se utiliza cuando no queremos que se cumpla una condicin: La segunda obtendr empleados del departamento 10
SQL> SELECT * FROM EMPLEADOS WHERE NOT OFICIO = con sueldo mauor a 2000 y empleados del departamento
'VENDEDOR'; 20 con cualquier sueldo.

Reglas de precedencia Ejemplo


A partir de la tabla NOTAS_ALUMNOS, deseamos
Operadores de comparacin obtener aquellos nombres de alumnos que tengan un 7
en NOTA1 y cuya media sea mayor que 6
NOT
AND SQL> SELECT nombre_alumno FROM notas_alumnos
OR WHERE nota1=7 AND (nota1+nota2+nota3)/3 >6;

NOMBRE_ALUMNO
---------------------------
Benito Martn, Luis

7
15/12/2011

Operadores de comparacin de Ejemplo


cadenas de caracteres
LIKE: este operador se utiliza para comparar cadenas de LIKE DIRECTOR la cadena 'Director'.
caracteres. Permite utilizar caracteres especiales en las LIKE M% cualquier cadena que empiece por 'M'
cadenas de comparacin:
% representa cualquier cadena de 0 o ms caracteres LIKE %X% cualquier cadena que contenga una 'X'.
_ representa un nico carcter cualquiera LIKE __M cualquier cadena de 3 caracteres
WHERE columna LIKE 'caracteres_especiales' terminada en 'M'.
En una sentencia WHERE se pueden usar varias clusulas LIKE N_ una cadena de 2 caracteres que empiece
LIKE anidadas por operadores AND/OR: por N
LIKE _R% cualquier cadena cuyo segundo carcter
WHERE col1 LIKE 'car_especiales ' AND | OR col2 LIKE sea una R
'car_especiales;

Nota Ejemplo

Hemos de tener en cuenta que las Obtener aquellos apellidos que tengan una 'R' en
maysculas y minsculas son la segunda posicin:
significativas: 'm' no es lo mismo que SQL> SELECT apellido FROM emple
'M' y que las constantes alfanumricas WHERE apellido LIKE '_R%;
deben encerrarse siempre entre
comillas simples. APELLIDO
----------
ARROYO

8
15/12/2011

Ejemplo NULL y NOT NULL


Se dice que una columna de una fila es NULL si est
Obtener aquellos apellidos que empiecen por 'A' y completamente vaca. Para comprobar si el valor de
tengan una 'O' en su interior: una columna es nulo empleamos la expresin:
SQL> SELECT apellido FROM emple columna IS NULL.
Si queremos saber si el valor de una columna no es
WHERE apellido LIKE 'A%O%';
nulo, utilizamos: columna IS NOT NULL.
Cuando comparamos con valores nulos o no nulos no
APELLIDO
podemos utilizar los operadores de igualdad, mayor o
---------- menor.
ARROYO Cualquier expresin aritmtica que contenga algn
ALONSO valor nulo retornar un valor nulo.
Salario*comision retornar valor NULL si alguno de los
dos operandos es NULL

Ejemplo Comprobaciones con conjuntos de


valores
Si queremos consultar los apellidos de los Hasta ahora, todas las comprobaciones
empleados cuya comisin no sea nula lgicas que hemos visto comparan una
teclea-remos esto: columna o expresin con un valor. Ejemplo:
SQL> SELECT apellido FROM emple OFICIO = 'ANALISTA' AND DEPT_NO=10;
WHERE comision IS NOT NULL; Pero tambin podemos comparar una
columna o una expresin con una lista de
valores utilizando los operadores IN y
BETWEEN.

9
15/12/2011

IN Ejemplo

El operador IN nos permite comprobar si una Consultar los apellidos de la tabla EMPLE
expresin pertenece o no (NOT) a un conjunto de cuyo nmero de departamento sea 10 30:
valores, haciendo posible la realizacin de
comparaciones mltiples; su formato es:
SQL> SELECT apellido FROM emple
<expresin> [NOT] IN (lista de valores separados
WHERE dept_no IN (10,30);
por comas).

Ejemplo Ejemplo

Consultar los apellidos de la tabla EMPLE cuyo Consultar los apellidos de la tabla EMPLE
nmero de departamento no sea ni 10 ni 30: cuyo oficio sea 'VENDEDOR', 'ANALISTA' o
'EMPLEADO':
SQL> SELECT apellido FROM emple
WHERE dept_no NOT IN(10,30); SQL> SELECT apellido FROM emple
WHERE oficio IN
('VENDEDOR','ANALISTA','EMPLEADO');

10
15/12/2011

Ejemplo BETWEEN

Consultar los apellidos de la tabla EMPLE Este operador comprueba si un valor est
cuyo oficio no sea ni 'VENDEDOR' ni comprendido o no dentro de un rango de
'ANALISTA' ni 'EMPLEADO': valores, desde un valor inicial a un valor final.
[NOT] BETWEEN valor_ini AND valor_fin
SQL> SELECT apellido FROM emple
WHERE oficio NOT IN
('VENDEDOR','ANALISTA','EMPLEADO');

Ejemplo Ejemplo

A partir de la tabla EMPLE, obtener el apellido y el A partir de la tabla EMPLE, obtener el apellido y el
salario de los empleados cuyo SALARIO est salario de los empleados cuyo SALARIO no est
comprendido entre 150000 y 200000: comprendido entre 150000 y 200000

SQL> SELECT apellido, salario FROM emple SQL> SELECT apellido, salario FROM emple
WHERE salario BETWEEN 150000 AND 200000;
WHERE salario NOT BETWEEN 150000 AND
200000;

11
15/12/2011

Nota Operadores de concatenacin

Un error relativamente frecuente consiste en utilizar Para unir dos o ms cadenas se utiliza el
expresiones del tipo:
operador de concatenacin ||
1000 <= SALARIO <= 2000
Este tipo de expresiones es ilegal y provocar un error
ya que al evaluar la primera parte de la expresin se Ej.: 'buenos' || 'das' dara como resultado
sustituir por un valor lgico de tipo true/false y este 'buenosdias'
resultado no puede compararse con un valor
numrico. La expresin correcta sera:
SALARIO BETWEEN 1000 AND 2000 En Access para concatenar cadenas se utiliza
O bien: el signo +, no reconoce ||
SALARIO >= 1000 AND SALARIO <= 2000

Constantes Precedencia o prioridad en los


Constantes numricas. operadores.
Construidas mediante una cadena de dgitos que puede llevar
un punto decimal, y que pueden ir precedidos por un signo
+ -.
Tambin se pueden expresar constantes numricas
empleado el formato de coma flotante. Ej.: 34.345E-8).
Constantes de cadena.
Consisten en una cadena de caracteres encerrada entre
comillas simples. (Ej.: 'Hola Mundo').
Constantes de fecha.
En realidad las constantes de fecha se escriben como
constantes de cadena sobre las cuales se aplicarn las
correspondientes funciones de conversin ( TO_DATE) o
bien, el gestor de la base de datos realizar una conversin
automtica de tipo. (Ej.: '27-SEP-1997').

12

También podría gustarte