SQL Server
SQL Server
-PARTE I-..............................................................................................................3
El lenguaje S.Q.L............................................................................................................3
Introducción..................................................................................................................10
Tipos de datos...............................................................................................................10
Identificadores..............................................................................................................11
Operadores y expresiones.............................................................................................11
Constantes..................................................................................................................13
Operadores aritméticos...............................................................................................13
Operadores de concatenación:.....................................................................................14
Operadores de comparación:.......................................................................................14
Nota sobre la utilización de valores nulos....................................................................15
Operadores logicos: AND, OR y NOT........................................................................17
Precedencia o prioridad en los operadores...................................................................19
Ejemplos de expresiones:............................................................................................20
Funciones predefinidas.................................................................................................21
Funciones numéricas o aritméticas:.............................................................................22
Funciones de caracteres:.............................................................................................22
Funciones de fecha:.....................................................................................................23
Funciones de conversión:............................................................................................24
Otras funciones:..........................................................................................................25
Lenguaje SQL Página 2
Consultas sencillas........................................................................................................28
Condiciones de selección...............................................................................................32
Ordenación................................................................................................................36
Selección de grupos.......................................................................................................41
Lenguaje SQL Página 3
-PARTE I-
lenguaje S.Q.L.
Se trata de un lenguaje definido por el estándar ISO/ANSI SQL que utilizan los
principales fabricantes de Sistemas de Gestión de Bases de Datos Relacionales.
datos.
Una base de datos está constituida por un conjunto de información relevante para una
empresa o entidad y los procedimientos para almacenar, controlar, gestionar y administrar
esa información.
Además, la información contenida en una base de datos cumple una serie de requisitos o
características:
Se emplean métodos determinados para incluir datos nuevos y para borrar, modificar
o recuperar los datos almacenados.
• Manipular los datos. Es decir, insertar nuevos datos, así como modificar, borrar
y consultar los datos existentes.
Éstas últimas son, con diferencia, las más difundidas y utilizadas en la actualidad debido a
su potencia, versatilidad y facilidad de utilización. Se basan en el Modelo Relacional
Lenguaje SQL Página 5
El Modelo Relacional fue enunciado por E.F. Codd. Sus principales componentes son:
Entidad.
Atributo.
Tabla.
2
7900 JIMENEZ EMPLEADO 7782 24/03/8 140000 20
3
Normalmente una tabla representa una entidad aunque también puede representar una
asociación de entidades.
TABLA DE CLIENTES:
TABLA DE PRODUCTOS
TABLA DE PEDIDOS
Relación.
VALENCIA.
Todos los principales SGBDR incorporan un motor SQL en el Servidor de Base Datos,
así como herramientas de cliente que permiten enviar comandos SQL para que sean
procesadas por el motor del servidor. De esta forma, todas las tareas de gestión de la Base
de Datos (BD) pueden realizarse utilizando sentencias SQL.
Entre los trabajos que se pueden realizar en una base de datos podemos distinguir dos
tipos: definición y manipulación de datos. Por ello se distinguen dos tipos de sentencias
SQL:
SQL EN ACCES.
DML
DDL
SELECT
INSERT
DELETE
UPDATE
CREATE
DROP
ALTER
Lenguaje SQL Página 10
Introducción.
1º Se trata de una guía para que sirva de referencia o de consulta cuando se necesite a lo
largo del curso.
2º En esta unidad, al igual que en la última, se abordan cuestiones que, aunque están
definidas por el estándar ANSI/ISO SQL, no están asumidas al 100% por todos los
fabricantes. Por tanto, pueden existir ligeras diferencias de algunos productos con algunas
de las especificaciones que se aquí se exponen.
Tipos de datos.
Las columnas de la base de datos almacenan valores que pueden ser de diversos tipos:
numérico, carácter, fecha, etcétera. A continuación se indican algunos de los tipos más
utilizados.
En Access no se indica ni escala ni precisión. Por defecto crea un tipo Numérico Doble.
Podremos indicar INTEGER, REAL, DOUBLE, BYTE.
Identificadores.
Son nombres que sirven para identificar objetos de la base de datos: usuarios, tablas,
columnas. El estándar define que pueden tener hasta 18 caracteres empezando con un
carácter alfabético y continuando con caracteres numéricos y alfabéticos.
Los ejemplos que aparecen en este curso se corresponden a la notación utilizada por
ORACLE y se ajustan a las especificaciones del estándar ANSI/ISO SQL.
Operadores y expresiones.
Las sentencias SQL pueden incluir expresiones constituidas por nombres de columnas,
constantes, funciones y operadores.
9 filas seleccionadas.
Lenguaje SQL Página 12
Para probar las consultas en Access seguiremos los siguientes pasos:
Abrir la base de datos haciendo doble clic sobre ella. Aparece la ventana de la Base de
datos, a continuación elegimos elConsultas
Objeto y doble clicCrear
en una consulta
en vista Diseño.
Ver Figura1.
Cerramos la ventana
Mostrar Tabla,
a continuación abrimos
vista
la SQLpulsando al
botón de la barra de herramientas. Aparece la ventana para consultas SQL, en esa
ventana escribimos la orden SELECT. Ver Figura 2:
Si pulsamos el botón
Vista , sin desplegar la lista, aparece la vista de
de la consulta, ver Figura
diseño 5. Esta es otra forma de realizar consultas sobre una tabla, sólo
diseño
basta con seleccionar el campo y arrastrarlo a las columnas inferiores.
Vemos que cada columna va acompañada del nombre de la tabla y Access además asigna
un alias a las expresiones (un nombre asociado para identificarlas). Estos cambios los
hace de forma automática, solo si cambiamos
Vista
dediseño
la a la Vista SQL,o
viceversa
.
Si pulsamos al botón
Guarda Access guarda la consulta para una posterior
utilización. Al guardarla
r la damos un
nombre.
Constantes.
En SQL podemos utilizar los siguientes tipos de constantes:
Lenguaje SQL Página 13
Constantes numéricas.
Construidas mediante una cadena de dígitos que puede llevar un punto decimal, y que
pueden ir precedidos por un signo + ó -. (Ej.: -2454.67)
También se pueden expresar constantes numéricas 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, en Oracle y otros productos que soportan este tipo, se
escriben como constantes de cadena sobre las cuales se aplicarán las correspondientes
funciones de conversión (ver TO_DATE en el epígrafe de funciones de conversión de
este mismo capítulo) o bien, el gestor de la base de datos realizará una conversión
automática de tipo. (Ej.: '27-SEP-1997').
En Access las constantes de fecha se definen entre el carácter #fecha#. Por ejemplo
#08-SEP-81#.
Existe una gran cantidad de formatos aplicables a estas constantes (americano, europeo,
japonés, etcétera) . Algunos productos como Oracle pueden trabajar también con FECHA
Y HORA en distintos formatos.
Operadores aritméticos.
Operadores de concatenación:
Para unir dos o más cadenas se utiliza el operador de concatenación ||
Operadores de comparación:
Igual =
!= En Access se utiliza
Distinto <>
Menor que <
Mayor que >
Menor o igual <=
Mayor o igual >=
Otros operadores IS NULL, BETWEN, LIKE,
IN, etcétera
Las expresiones formadas con operadores de comparación dan como resultado un valor
de tipo verdadero/falso (true/false).
Ejemplos:
La expresión: SALARIO > 300000 será verdadera (true) en el caso de que SALARIO
tenga un valor superior a 300000 y falsa (false) en caso contrario.
Para probarlo en Access, desde la Vista SQL, borrar la sentencia anterior y copiar la
nueva sentencia SELECT, ver figura 6:
Figura 6. Vista SQL. Nueva consulta.
Pulsar el botón
Ejecutar consulta o al botón
Vista hoja de datos para ver el
resultado. Ver Figura 7.
Cualquier expresión aritmética que contenga algún valor nulo retornará un valor
nulo.
Así, por ejemplo, si intentamos visualizar la expresión formada por las columnas
SALARIO + COMISION de la tabla empleados la salida será similar a la siguiente:
9 filas seleccionadas.
Para probarlo en Access hacer lo mismo que en el caso anterior. Desde la Vista SQL,
borrar la sentencia anterior y copiar la nueva sentencia SELECT.
6 filas seleccionadas.
Como acabamos de ver los valores nulos en muchas ocasiones pueden representar un
problema, especialmente en columnas que contienen valores numéricos. Para evitar estos
problemas se suele utilizar:
Lenguaje SQL Página 17
• La restricción NOT NULL (es una orden de definición de datos) que impide
que se incluyan valores nulos en una columna.
• La función NVL (que veremos en detalle más adelante) que se utiliza para
devolver un valor determinado en el caso de que el valor del argumento sea
nulo. Por ejemplo NVL(COMISION, 0) retornará 0 cuando el valor de
comisión sea nulo. (En Access se llama NZ)
Supongamos que queremos consultar los empleados cuyo OFICIO = 'VENDEDOR' y que
además su SALARIO > 150000. En este caso emplearemos el operador lógico AND. Este
operador devolverá el valor true cuando los dos operandos o expresiones son
verdaderas. Simplificando podemos decir que se utiliza cuando queremos que se
cumplan las dos condiciones.
Ejemplo:
SQL> SELECT * FROM EMPLEADOS WHERE OFICIO = 'VENDEDOR' AND SALARIO > 150000;
EMP_NO APELLIDO OFICIO DIRECTOR FECHA_AL SALARIO COMISION DEP_NO
---------- -------- ---------- ---------- -------- ---------- ---------- ----------
Cuando lo que queremos es buscar filas que cumplan alguna de las condiciones que se
indican emplearemos el operador OR. Este operador devolverá el valor true cuando
alguno de los dos operandos o expresiones es verdadero (cuando se cumple la primera
condición, o la segunda o ambas).
Ejemplo:
SQL> SELECT * FROM EMPLEADOS WHERE OFICIO = 'VENDEDOR' OR SALARIO > 150000;
El operador NOT se utiliza para cambiar el valor devuelto por una expresión lógica o de
comparación, tal como se ilustra en el siguiente ejemplo:
SQL> SELECT * FROM EMPLEADOS WHERE NOT OFICIO = 'VENDEDOR';
Observamos en el ejemplo anterior que han sido seleccionadas aquellas filas en las que
no se cumple la condición de que el oficio sea vendedor.
Podemos formar expresiones lógicas en las que intervengan varios operadores lógicos de
manera similar a como se haría con expresiones aritméticas en las que intervienen varios
operadores aritméticos.
Ejemplos:
SQL> SELECT * FROM EMPLEADOS WHERE NOT OFICIO = 'VENDEDOR' AND SALARIO >
150000;
SQL> SELECT * FROM EMPLEADOS WHERE OFICIO = 'VENDEDOR' AND SALARIO > 150000
OR DEP_NO = 20;
Lenguaje SQL Página 19
A continuación se detallan las tablas de valores de los operadores lógicos NOT, AND y
OR, teniendo en cuenta todos los posibles valores incluida la ausencia de valor (NULL).
Página 20
Lenguaje SQL
Podemos establecer:
•El operador AND devolverá true cuando los dos operandos sean verdaderos, y
false cuando algún operando sea falso; en el caso de que ambos operandos
tengan valor Null devolverá Null y cuando ningún operando es False y algún
operando es Null también devolverá Null.
•El operador OR devolverá true cuando alguno de los operandos sea verdadero
(con independencia de que el otro sea verdadero, falso o nulo); false cuando los
dos operandos sean falsos; y null en los demás casos (cuando ningún operando
sea verdadero y alguno sea nulo).
•El operador NOT devuelve true cuando el operando es falso, y false cuando el
operando es true; cuando el operando es nulo devuelve null.
Este tipo de expresiones es ilegal y provocará un error ya que al evaluar la primera parte de la
expresión se sustituirá por un valor lógico de tipo true/false y este resultado no puede compararse
con un valor numérico. La expresión correcta sería:
O bien:
Ejemplos de expresiones:
Lenguaje SQL Página 22
SALARIO + COMISION -> Devuelve un valor numérico como resultado de sumar al salario
del empleado la comisión correspondiente.
Lenguaje SQL
COMISION IS NULL -> dará como resultado verdadero si la comisión del empleado
seleccionado no tiene ningún valor.
Funciones predefinidas.
Ejemplos:
Llamada a la función Valor devuelto Explicación.
ABS( -5) 5 el valor absoluto del número.
ROUND(8.66, 0) 9 el número redondeando a cero decimales
8 el número truncando los decimales.
TRUC(8.66, 0). En
Acces
esta función no
se
encuentra.
SIGN(8.88). En Acces se
llama 1 ya que el número es mayor de 0
SGN()
‘Hola’ cadena con el primer carácter en
INITCAP(‘hola’). En mayúsculas.
Acces esta función no
Página 23
se
encuentra.
UPPER(‘hola’). En
Acces ‘HOLA’ cadena en mayúsculas
se llama
UCASE()
SUBSTR(‘hola’, 2, 2). En subcadena tomando dos posiciones
‘ol’
Acces se llama MID() desde la posición 2.
SYSDATE. En Acces se
llama DATE() 01/02/00 la fecha del sistema
USER. En Acces se
CURSOSQL
llama el nombre del usuario en nuestro caso el
CURRENTUSER() que se indica.
Cabe subrayar que la función no modifica el valor del argumento sino que devuelve un
valor creado a partir del argumento que se le pasa en la llamada.
En Access se llama.
ASC
CHR(num) Carácter correspondiente al código indicado por num
del juego de caracteres utilizado.
CONCAT(c1,c2). Concatena c1 con c2. Es equivalente al operador ||.
En Access se llama
LEN().
LOWER(c1) La cadena c1 en minúsculas.
En Access se llama.
LCASE
UPPER(c1) La cadena c1 en mayúsculas.
En Access se llama
UCASE.
LPAD(c1, n, c2) c1 se visualiza con longitud n y justificado a la derecha.
No se encuentra en Si c1 < n, c2 es la cadena con la que se rellena por la
Access izda.
No se encuentra en
Access
LTRIM(c1) Suprime blancos a la izquierda de c1.
RTRIM(c1) Suprime blancos a la derecha de c1.
SUBSTR(c1, n, m)
Devuelve una subcadena a partir de c1 comenzando en
En Access se llama la posición n tomando m caracteres.
MID()
Página 25
No se encuentra en
Access
MONTHS_BETWEEN (f1, f2) Número de meses entre las dos fechas.
En Access se El resultado puede contener decimales
utiliza: correspondientes a fracciones de mes.
DateDiff("m",f1,f2). En el caso de Access podemos saber el número
Los meses. de
DateDiff("d",f1,f2). Los días. días, de años y de
DateDiff("yyyy",f1,f2). Los meses.
años
Fecha actual. También la hora si se especifica en el
SYSDATE. formato. En Access es NOW( la función
) que
En Access se llama DATE().
visualiza la hora y la
fecha.
Funciones de conversión:
Se utilizan para pasar datos de un tipo a otro: carácter a número, fecha a carácter,
etcétera.
Función Valor que devuelve.
En Access se llama
VAL().
Lenguaje SQL Página 26
Para convertir una fecha o un número a cadena Access utiliza la función FORMAT.
Format(fecha, formato)
Format(número, formato)
Ejemplos:
No se encuentra en Access
NVL(exp1, exp2) Si exp1 es nulo devuelve exp2. Sino devuelve
En Access se llama NZ(exp1, exp2) exp1.
Para especificar la sintaxis el estándar SQL ANSI/ISO utiliza una notación muy precisa y
completa pero presenta serios problemas didácticos especialmente para personas que se
inician en este lenguaje. Por esta razón hemos utilizado para especificar los formatos una
notación más sencilla y asequible primando el aspecto didáctico. A este respecto procede
realizar las siguientes puntualizaciones:
Realizar una consulta en SQL consiste en recuperar u obtener aquellos datos que,
almacenados en filas y columnas de una o varias tablas de una base de datos, cumplen
unas determinadas especificaciones. Para realizar cualquier consulta se utiliza la sentencia
SELECT.
Las primeras consultas van a ser escritas con un formato inicial de la sentencia
SELECT, que se irá completando en temas siguientes.
>???????????????????????????????????????????????>;
?ORDER BY especificaciones_para_ordenar?
Tablas utilizadas:
TABLA DE EMPLEADOS
TABLA DE DEPARTAMENTOS
DEP_NO DNOMBRE LOCALIDAD
-------- -------------- --------- 10 CONTABILIDAD BARCELONA 20
INVESTIGACION VALENCIA
Lenguaje SQL Página 30
Consultas sencillas.
La consulta más sencilla consiste en recuperar una o varias columnas de una tabla.
- ALL: obtiene los valores de todos los elementos seleccionados en todas las filas,
aunque sean repetidos. Es la opción por defecto.
Alias de tabla. SQL permite asignar más de un nombre a la misma tabla, dentro
de la misma consulta. Usar alias para una tabla puede es opcional cuando su
finalidad consiste en simplificar su nombre original, y obligatorio en consultas
cuya sintaxis lo requiera.
SELECT .....
FROM empleados e alias de empleados ˘ e
................................
Recuerda: para probar las sentencias SQL en Access, desde la vista de la base de datos,
Lenguaje SQL Página 31
elegir el objeto Consultas y doble clic en Crear una consulta en vista Diseño. Cerrar la
ventana Mostrar Tabla, y a continuación abrir la vista SQL pulsando al botón de
la barra de herramientas. En Access podremos guardar todas las consultas que hagamos
si elegimos la opción Guardar Como del menú Archivo. Tendremos que dar un nombre
a cada consulta. Para ver el resuiltado de la consulta pulsaremos al botón Ejecutar
consulta o al botón Vista hoja de datos .
Ejemplos.
1. Obtener todos los empleados de la tabla empleados con todos sus datos.
7782 MARTINEZ 10
7839 REY 10
Lenguaje SQL Página 32
7844 CALVO 30
Alias de columna. Los títulos o cabeceras que muestra la salida de una consulta para
las columnas seleccionadas, se corresponden con los nombres de las columnas de las
tablas. Para mejorar su legibilidad y estética se utilizan los alias de columna. El alias se
escribe detrás de la columna, separado de ella al menos por un espacio. Si el alias
comprende más de una palabra deberá ir dentro de dobles comillas.
3. Obtener el total a cobrar por cada empleado, suponiendo que se trata de sumar a su
salario la correspondiente comisión, si la tuviera.
En Acces:
SELECT apellido,salario+comision AS Importe_Total FROM empleados;
En esta salida, algunos empleados no llevan importe. El motivo es tener NULL (sin
información) en su comisión, y por lo tanto no se realiza la operación suma. Para
solucionarlo hemos de recurrir al uso de funciones.
El ejemplo anterior debería resolverse con la función NVL que transforma la ausencia
de información al valor que se le especifique, tal como sigue:
FROM empleados;
En Acces:
SELECT apellido,salario+NZ(comision,0)AS Importe_Total FROM empleados;
Empleado y su oficio
----------------------
ALONSO es VENDEDOR
LOPEZ es EMPLEADO
MARTIN es VENDEDOR
GARRIDO es DIRECTOR
MARTINEZ es DIRECTOR
REY es PRESIDENTE
CALVO es VENDEDOR
GIL es ANALISTA
JIMENEZ es EMPLEADO
En Acces:
SELECT APELLIDO + ' ES ' + OFICIO AS EMPLEADO_Y_SU_OFICIO
FROM EMPLEADOS;
5. Obtener la fecha de alta de cada empleado con el nombre del mes completo y en
castellano.
Fecha de alta
--------------
20febrero 81
08mayo 81
28septiembre81
Lenguaje SQL Página 34
01mayo 81
09junio 81
17noviembre 81
08septiembre81
06mayo 82
24marzo 83
En Acces:
SELECT Format(FECHA_ALTA,'DDMMMMYY') AS Fecha_de_alta
FROM Empleados;
Tabla DUAL.
5 Elevado a 5
--------------
3125
En Access no existe la tabla DUAL, sin embargo se pueden realizar operaciones para
probar funciones utilizando una tabla.
Condiciones de selección.
Para seleccionar las filas de la tabla sobre las que realizar una consulta, la cláusula
WHERE permite incorporar una condición de selección a la sentencia SELECT.
>???????????????????????????????????????????????>;
?WHERE condición_de_selección?
. Operadores de comparación.
- aritméticos: =, >, <
- de caracteres: LIKE, máscaras (%, _)
- lógicos: IN, BETWEEN
Ejemplos.
2. Seleccionar aquellos empleados cuyo apellido empiece por “M” y su salario esté
comprendido entre 100.000 y 200.000 pesetas. Visualizar su número de empleado,
apellido y departamento.
El operador LIKE usado con % indica que la comparación del apellido se realiza sólo
en el primer carácter, que debe ser “M”.El % sustituye al resto de los caracteres.
En Access NO se utiliza el carácter %, se utilizan los siguientes caracteres
comodín:
Por ejemplo
Criterio
Resultado
LIKE ‘B*’
Departamentos cuyo nombre de localidad empieza por B
LIKE ‘M????D’
Departamentos cuya localidad empieza por M, seguido de 4 letras cualquiera y terminan en D.
(MADRID, por ejemplo)
LIKE ‘?A*’
Departamentos cuya localidad empieza por cualquier letra, le sigue una A u luego cualquier número de
caracteres.
LIKE ‘B*O’
Departamentos cuya localidad empieza por B y termina en O.
LIKE ‘*O’
Departamentos cuya localidad termina en O.
LIKE ‘*A*’
Todos los departamento que contengan una A en el nombre de la localidad.
Lenguaje SQL Página 37
El operador BETWEEN comprueba si una expresión toma valores dentro del intervalo que le
acompaña.
El mismo ejemplo podría haberse escrito:
En Acces:
SELECT EMP_NO AS NºEMPLEADO ,APELLIDO, DEP_NO AS DEPARTAMENTO
FROM EMPLEADOS WHERE (APELLIDO LIKE 'M*') AND
Salario BETWEEN 100000 AND 200000;;
El operador LIKE usado con ‘_’ indica que ocupa la posición de un carácter.
En Acces:
SELECT EMP_NO AS NºEMPLEADO ,APELLIDO, DEP_NO AS DEPARTAMENTO
FROM EMPLEADOS WHERE (APELLIDO LIKE '?Z*');
En Acces:
SELECT EMP_NO AS NºEMPLEADO ,APELLIDO, DEP_NO AS DEPARTAMENTO
FROM EMPLEADOS WHERE Dep_no=10 OR Dep_no=30;
Ordenación.
Para obtener la salida de una consulta clasificada por algún criterio o especificación,
la sentencia SELECT dispone de la cláusula ORDER BY para ordenar.
>???????????????????????????????????????????????>;
?ORDER BY especificación_para_ordenar?
Ejemplos.
Lenguaje SQL Página 39
1. Obtener relación alfabética de todos los empleados con todos sus datos.
3. Obtener los datos de los empleados clasificados por oficios y en orden descendente
de salarios.
SQL permite agrupar las filas de una tabla, seleccionadas en una consulta, y obtener
salidas, calculadas a partir de los grupos formados.
El criterio para agrupar suele ser una de las columnas de la tabla. Si no se especifica
ninguno, las filas de la tabla, seleccionadas en la consulta, forman un grupo único.
Las salidas obtenidas son los resultados de aplicar funciones de columna a los grupos
de filas.
Funciones de columna
FUNCIONES DESCRIPCIÓN DE LA FUNCIÓN
SUM(expresión/DISTINCT nombre de columna) Calcula la suma de valores de la expresión o de la
columna indicada dentro del paréntesis, teniendo
en cuenta que la cláusula DISTINCT omite
valores repetidos.
AVG(expresión/DISTINCT nombre_ de_columna) Calcula el valor medio de la expresión que se
indique dentro del paréntesis, teniendo en cuenta
que los valores NULL no son incluidos.
MIN(expresión) Devuelve el valor mínimo de la expresión que le
acompaña.
MAX(expresión) Devuelve el valor máximo de la expresión que le
acompaña.
COUNT( nombre_ columna/DISTINCT Cuenta el número de valores de datos que hay en
nombre_de_ columna) una columna, sin incluir los valores NULL
COUNT(*) Cuenta todas las filas de la tabla, sin considerar
que en algunas columnas existan valores NULL.
STDDEV(expresión) Calcula la desviación típica para los valores de la
En Access se llama STDEV( expresió ) expresión.
n
VARIANCE(expresión) Calcula la varianza para los valores de la
En Access se llama VAR( expresió ) expresión.
n
En Access la expresión puede incluir un nombre de campo de una tabla o una
función definida pero NO puede incluir ninguna de las funciones de columna.
Para resolver las consultas que utilizan funciones anidadas realizaremos varias
consultas como se verá más adelante.
SELECT funciones_de_columna
FROM tabla
[WHERE condición];
Lenguaje SQL Página 41
Ejemplos.
SQL>SELECT SUM(salario)
FROM empleados;
SUM(SALARIO)
------------
2310000
SQL>SELECT MAX(salario),MIN(salario),MAX(salario)-MIN(salario)
FROM empleados;
Fecha Al
--------
24/03/83
En Acces el alias no se puede llamar como el nombre de la columna:
Salario medio
-------------
256666,67
En Access:
SELECT AVG(Salario) As Salario_Medio FROM Empleados;
porque COUNT cuenta el número de valores de datos que hay en una columna, sin incluir
los valores NULL, y por el contrario, COUNT(*) cuenta todas las filas de la tabla, sin
considerar que en algunas columnas existan valores NULL.
Lenguaje SQL Página 42
Por lo general, las funciones de columna se utilizan sobre más de un grupo de filas. La
cláusula GROUP BY establece el criterio de agrupación.
>???????????????????????????????????????????????>
?GROUP BY lista_de_columnas_para_agrupar?
>???????????????????????????????????????????????>;
?ORDER BY especificaciones_para_ordenar?
Ejemplos.
En Acess:
SELECT Dep_no As Departamento, COUNT(*) as NUM_Empleados
FROM empleados GROUP BY dep_no;
Lenguaje SQL Página 43
3. Obtener el empleado que mayor salario tiene dentro de cada oficio, excluyendo
alpresidente.
MAX(SALARIO) OFICIO
------------ ---------
335000 ANALISTA
385000 DIRECTOR
140000 EMPLEADO
180000 VENDEDOR
En Acess:
SELECT MAX(salario), oficio FROM empleados
WHERE UCASE(oficio) <>’PRESIDENTE’
GROUP BY oficio;
Selección de grupos
Del mismo modo que la cláusula WHERE permite la selección de filas en una sentencia
SELECT, la cláusula HAVING permite realizar una selección sobre los grupos obtenidos por
la cláusula GROUP BY.
>???????????????????????????????????????????????>
?GROUP BY lista_de_columnas_para_agrupar?
>???????????????????????????????????????????????>
?HAVING condición_de_selección?
>???????????????????????????????????????????????>;
?ORDER BY especificaciones_para_ordenar?
Ejemplos.
OFICIO COUNT(*)
---------- ----------
DIRECTOR 2
EMPLEADO 2
VENDEDOR 3
2. Seleccionar los oficios que tengan dos o más empleados, cuyo salario supere
las140000 ptas.
OFICIO COUNT(*)
---------- ----------
DIRECTOR 2
VENDEDOR 2