Documente Academic
Documente Profesional
Documente Cultură
P.T.B. en Informtica
Grupo: 5104
SELECT {* | {columna,}+}
FROM {tabla,}+
[WHERE condicin]
[ORDER BY {expresinColumna [ASC | DESC],}+];
Como una primera utilizacin de la sentencia SELECT podemos utilizarla para ver
todas las tablas que tenemos en la base de datos.
Tipos de Columnas
Existen varios tipos de datos en SQL. De esta manera, cada columna puede
albergar una informacin de naturaleza distinta. Los tipos de datos ms comunes y
sus caractersticas se resumen en la siguiente tabla.
Tipo de Dato
Descripcin
VARCHAR2(tamao)
CHAR(tamao)
LONG
NUMBER(dig,dec)
DATE
RAW(tamao)
LONG RAW
Seleccin de Columnas
Las columnas a seleccionar se enumeran sin ms en la clusula SELECT. Si se
desea seleccionar todas las columnas de una tabla se puede hacer enumerando a
todas las columnas o colocando un asterisco, *, en su lugar.
Cuando se consulta una base de datos, los nombres de las columnas se usan
como cabeceras de presentacin. Si ste resulta demasiado largo, corto o crptico,
puede cambiarse con la misma sentencia SQL de consulta, creando un alias de
columna.
Esta en
----------
Administracion
I+D
Produccion
Valladolid
Boecillo
Cigales
Clusula FROM
La clusula FROM define las tablas de las que se van a seleccionar las columnas.
Se puede aadir al nombre de las tablas el usuario propietario de las mismas de la
forma usuario.tabla. De esta manera podemos distinguir entre las tablas de un
usuario y otro. Oracle siempre considera como prefijo el nombre del propietario de
las tablas, aunque no se lo indiquemos. De esta forma dos o ms usuarios pueden
tener tablas que se llamen igual sin que surjan conflictos. Si quisiramos acceder
a las filas de la tabla dep del usuario jperez, (ademas de tener privilegios de
lectura sobre esa tabla) deberamos escribir la siguiente sentencia SQL:
Operadores de Comparacin
Operador
Operacin
Ejemplo
Igualdad
!=, <>, ^=
Desigualdad
<
Menor que
>
Mayor que
<=
>=
in
not in
between
Contenido en el rango
not between
like '_abc%'
Operadores de Aritmticos
Operador Operacin Ejemplo
+
Suma
Resta
Producto
Divisin
Operacin
Ejemplo
||
Concatenacin
Clusula ORDER BY
Se utiliza para especificar el criterio de ordenacin de la respuesta a la consulta.
Por defecto la ordenacin es ascendente, aunque se puede especificar un orden
descendente. La ordenacin se puede establecer sobre el contenido de columnas
o sobre expresiones con columnas. A continuacin se puede ver un ejemplo de
uso de la clusula ORDER BY en la que quiere obtener un listado de los
empleados ordenado de manera descendente por su salario y en caso de igualdad
de salario, ordenado ascendentemente por su nombre.
SQL> select nombre, salario from emp order by salario desc, nombre;
NOMBRE
SALARIO
---------- ---------Cano
450000
Perez
350000
Roncal
Yuste
Recio
Sastre
Martin
Garcia
Garcia
Mateo
Santana
Rueda
Lopez
Sanz
350000
350000
300000
300000
235000
225000
210000
200000
200000
175000
150000
150000
14 rows selected.
Clusula DISTINCT
Cuando se realiza una consulta sobre una tabla en la que se extrae informacin de
varias columnas, puede ocurrir que, si no incluimos la/s columna/s que forman la
clave principal, obtengamos filas repetidas en la respuesta.Si este comportamiento
no nos resulta satisfactorio podemos utilizar la clusula DISTINCT para eliminar
las filas duplicadas obtenidas como respuesta a una consulta.Podemos ver como
funciona en el siguiente ejemplo, en el que preguntamos por los distintos oficios de
nuestros empleados.
SQL> select oficio from emp;
Sin utilizar la clusula DISTINCT obtendremos la siguiente respuesta
OFICIO
----------Presidente
Director
Secretario
Contable
Comercial
Comercial
Director
Analista
Programador
Programador
Director
Analista
Programador
Programador
14 rows selected.
Clusula GROUP BY
SQL nos permite agrupar las filas resultado de una consulta en conjuntos y aplicar
funciones sobre esos conjuntos de filas.
La sintaxis es la siguiente:
SELECT {* | {columna,}+}
FROM {tabla,}+
WHERE condicin
GROUP BY {columna ,}+
HAVING condicin
ORDER BY {expresinColumna [ASC | DESC],}+;
En la clusula GROUP BY se colocan las columnas por las que vamos a agrupar.
Y en la clusula HAVING se especifica la condicin que han de cumplir los grupos
para pasar al resultado.
La evaluacin de las diferentes clusulas en tiempo de ejecucin se efecta en el
siguiente orden:
Cometido
Ejemplo
COUNT(col)
AVG(col)
MAX(col)
from
MIN(col)
SUM(col)
STDDEV(col)
VARIANCE(col)
oficio
from
Hay que tener en cuenta que los valores nulos no participan en el clculo de las
funciones de conjuntos. Estas funciones se pueden utilizar con las
clusulas DISTINCT y ALL. Tambin se pueden utilizar aunque no realicemos
agrupacin alguna en la consulta, considerando a toda la tabla como un grupo.
SQL> select count(*) from emp;
COUNT(*)
---------14
Operaciones matemticas
Desde SQL podemos realizar operaciones a partir de los datos antes de
mostrarlos. Por ejemplo, podemos mostrar cual era la edad de una persona hace
un ao, con
+--------+---------+---------+
| 5/2 | 5 div 2 | 5 mod 2 |
+--------+---------+---------+
| 2.5000 |
2|
1|
+--------+---------+---------+
Para que resulte ms legible, se puede aadir un "alias" a cada "nuevo campo"
que se genera al plantear las operaciones matemticas:
Tambin podramos utilizar incluso operaciones a nivel de bits, como las del
lenguaje C (>> para desplazar los bits varias posiciones a la derecha, << para
desplazar a la izquierda, | para una suma lgica bit a bit, & para un producto lgico
bit a bit y ^ para una operacin XOR):
+---------+---------+---------+---------+---------+
| 25 >> 1 | 25 << 1 | 25 | 10 | 25 & 10 | 25 ^ 10 |
+---------+---------+---------+---------+---------+
|
12 |
50 |
27 |
8|
19 |
+---------+---------+---------+---------+---------+
6.2 Funciones de agregacin
Significado
ALL
AND
ANY
BETWEE
N
EXISTS
IN
LIKE
NOT
OR
SOME
Operador
Descripcin
= (Igual a) (Entity
SQL)
IS [NOT] NULL
(Entity SQL)
(Entity SQL)
[NOT] BETWEEN
(Entity SQL)
= (No es igual a)
(Entity SQL)
"n" = ""
"n" = ""
"A"=""
` etc.
A diferencia de otras comparaciones de cadena, las bsquedas por palabras
claves buscan "palabras" en "textos": las palabras se evalan global e
individualmente. El operador % siempre devuelve False si la bsqueda concierne
varias palabras o slo parte de una palabra (por ejemplo, una silaba). Las
"palabras" son cadenas de caracteres rodeadas por "separadores," que son los
espacios y los caracteres de puntuacin. Los nmeros pueden buscarse porque
son evaluados como cadenas; sin embargo, los separadores decimales ( . , ) y
otros smbolos (moneda, temperatura, etc.) se ignorarn.
"Alpha Bravo Charlie" % "Bravo" ` DevuelveTrue
"Alpha Bravo Charlie" % "vo" ` DevuelveFalse
"Alpha Bravo Charlie" % "Alpha Bravo" ` Devuelve False
"Alpha,Bravo,Charlie" % "Alpha" ` DevuelveTrue
"Software y ordenadores" % "comput@" ` DevuelveTrue
"abcdefghij" = "abc@"
El carcter arroba debe utilizarse en el segundo operando (la cadena a la derecha
del operador) para igualar todo nmero de caracteres. La siguiente expresin es
FALSE, porque la arroba @ se considera como un solo carcter en el primer
operando:
"abc@" = "abcdefghij"
La arroba significa "uno o ms caracteres o nada". Las siguientes expresiones son
TRUE:
"abcdefghij" = "abcdefghij@"
"abcdefghij" = "@abcdefghij"
"abcdefghij" = "abcd@efghij"
"abcdefghij" = "@abcdefghij@"
"abcdefghij" = "@abcde@fghij@"
Por otra parte, en cualquier caso, una comparacin de cadenas con dos arrobas
consecutivas siempre devolver FALSE. La siguiente expresin es FALSE:
"abcdefghij" = "abc@@fg"
Cuando el operador de comparacin es o contiene un smbolo < o >, slo soporta
la comparacin con un solo carcter comodn al final del operando: