Escolar Documentos
Profissional Documentos
Cultura Documentos
Estudiar la sentencia SELECT, que permite recuperar datos de una o varias tablas. La sentencia
SELECT es la ms compleja y potente de las sentencias SQL.
Esta sentencia forma parte del DML (lenguaje de manipulacin de datos)
El resultado de la consulta es una tabla lgica, porque no se guarda en el disco sino que est en
memoria y cada vez que ejecutamos la consulta se vuelve a calcular.
Sintaxis de la sentencia SELECT (consultas simples)
SELECT ...
FROM tabla1 AS t1 Es equivalente a la sentencia anterior.
La lista de seleccin
En la lista de seleccin <lista_seleccion> indicamos las columnas que se tienen que
visualizar en el resultado de la consulta.
<lista_seleccion> ::=
{ *
| {nombre_tabla|nombre_vista|alias_tabla}.*
| { [{nombre_tabla|nombre_vista|alias_tabla}.]
{nb_columna|$IDENTITY|$ROWGUID}
|<expresion>
}[[AS] alias_columna]
| alias_columna = <expresion>
} [ ,...n ]
Separamos la definicin de cada columna por una coma y las columnas del resultado
aparecern en el mismo orden que en la lista de seleccin.
Para cada columna del resultado su tipo de datos, tamao, precisin y escala son los
mismos que los de la expresin que da origen a esa columna.
Podemos definir las columnas del resultado de varias formas, mediante:
Una expresin simple:
o
una constante
Una subconsulta escalar, que es otra instruccin SELECT que devuelve un nico
valor y se evala para cada fila del origen de datos (esto no lo veremos de
momento).
Una expresin compleja generada al usar operadores en una o ms expresiones
simples.
La palabra clave *.
La asignacin de variables con el formato @variable_local = expresin.
La palabra clave $IDENTITY.
La palabra clave $ROWGUID
Antonio Viguer
nombre
12
oficina
contrato
1986-10-20
Alvaro Jaumes
21
1986-12-10
Juan Rovira
12
1987-03-01
Jos Gonzlez
12
1987-05-19
Vicente Pantalla
13
1988-02-12
Luis Antonio
11
1988-06-14
Jorge Gutirrez
22
1988-11-14
Ana Bustamante
21
1989-10-12
Mara Sunta
11
1999-10-12
Juan Victor
NULL
1990-01-13
idproducto
41001
descripcion
arandela
precio
0,58
aci
41002
bisagra
0,80
aci
41003
art t3
1,12
aci
41004
art t4
1,23
aci
4100x
junta
0,26
aci
4100y
extractor
28,88
aci
4100z
mont
26,25
bic
41003
manivela
6,52
bic
41089
rodamiento
2,25
Alias de columna
Por defecto, en el encabezado de cada columna del resultado, aparece el nombre de la
columna origen, pero esto se puede cambiar definiendo un alias de columna, el alias de
columna es un nombre alternativo que se le da a esa columna.
El alias de columna se indica mediante la clusula AS. Se escribe el nuevo texto tal cual
sin comillas siguiendo las reglas de los identificadores.
Ejemplo:
SELECT numclie,nombre AS nombrecliente
FROM clientes;
El resultado ser:
Numclie
nombrecliente
2101
Luis Garca Antn
2102
Alvaro Rodrguez
2103
Jaime Llorens
en vez de:
Numclie
nombre
2101
Luis Garca Antn
2102
Alvaro Rodrguez
2103
Jaime Llorens
La palabra AS es opcional.
SELECT numclie,nombre nombrecliente
FROM clientes;
Sera equivalente a la consulta anterior
Si queremos incluir espacios en blanco en el nombre lo debemos encerrar entre
corchetes.
SELECT numclie,nombre AS [nombre cliente]
FROM clientes;
Nota importante: Este nombre de alias se podr utilizar en la lista de seleccin y en la
clusula ORDER BY pero no en la clusula WHERE
Funciones
Existen funciones que podemos utilizar en la lista de seleccin, e incluso en otras
clusulas que veremos ms adelante, como el WHERE. Las principales funciones son las
siguientes:
Funciones de fecha:
Funcin
GETDATE
Descripcin
Devuelve la fecha actual.
GETUTCDATE
DATEPART
DAY
MONTH
YEAR
DATENAME
DATEADD
Devuelve un valor datetime nuevo que resulta de sumar un intervalo de tiempo a una
fecha especificada.>
DATEDIFF
@@DATEFIRST
SET
DATEFIRST
Funciones de cadena:
Funcin
ASCII
Descripcin
Devuelve el valor de cdigo ASCII del carcter situado ms a la izquierda de una
expresin de caracteres.
CHAR
NCHAR
UNICODE
LEN
Devuelve el total de caracteres de una cadena, excluidos los espacios en blanco finales.
LTRIM
RTRIM
LEFT
RIGHT
SUBSTRING
LOWER
UPPER
REPLACE
STUFF
QUOTENAME
Devuelve una cadena Unicode con los delimitadores agregados para convertirla en un
identificador delimitado vlido de Microsoft SQL Server 2005.
SPACE
STR
REPLICATE
REVERSE
CHARINDEX
PATINDEX
Funcin
ROUND
Descripcin
Redondea un valor a la longitud y precisin indicadas.
CAST y CONVERT
CASE
ISNULL
COALESCE
Columnas calculadas
Adems de las columnas que provienen directamente de la tabla origen, una consulta
SQL puede incluir columnas calculadas cuyos valores se evalan a partir de una
expresin.
La expresin puede contener cualquier operador vlido (+, -, *, /, &), cualquier funcin
vlida, nombres de columnas del origen de datos, nombres de parmetros o constantes y
para combinar varias operaciones se pueden utilizar los parntesis.
Ejemplos de columnas calculadas:
Listar la ciudad, regin y el supervit de cada oficina. Consideraremos el supervit
como el volumen de ventas que se encuentran por encima o por debajo del objetivo de la
oficina.
SELECT ciudad, region, (ventas-objetivo) AS superavit
FROM oficinas;
El resultado ser:
ciudad
Valencia
este
region
superavit
11800,00
Alicante
este
-6500,00
Castellon
este
1800,00
Badajoz
oeste
11100,00
A Corua
oeste
-11400,00
Madrid
centro
NULL
Madrid
centro
-10000,00
Pamplona
norte
NULL
Valencia
este
-90000,00
idproducto
descripcion
valoracion
aci
41001
arandela
160,66
aci
41002
bisagra
133,60
aci
41003
art t3
231,84
aci
41004
art t4
170,97
aci
4100x
junta
9,62
aci
4100y
extractor
722,00
aci
4100z
mont
735,00
bic
41003
manivela
19,56
bic
41089
rodamiento
175,50
Fab
aci
Producto
Precio
4100z
2,50
110037
rei
2a44l
4,50
112963
aci
41004
0,117
112968
aci
41004
1,17
112975
rei
2a44g
3,50
112979
aci
4100z
25,00
112983
aci
41004
1,17
112987
aci
4100y
25,00
112989
fea
114
2,43
112992
aci
41002
0,76
112993
rei
2a45c
0,79
112997
bic
41003
6,52
113003
imm
779c
18,75
113007
imm
773c
9,75
113012
aci
41003
1,07
113013
bic
41003
6,52
113024
qsa
xk47
3,55
113027
aci
41002
8,3333
113034
rei
2a45c
0,79
113042
rei
2a44r
45,00
113045
rei
2a44r
45,00
113048
imm
779c
18,75
113049
qsa
xk47
3,88
113051
qsa
xk47
3,55
113055
aci
4100x
0,25
113057
aci
4100x
NULL
113058
fea
112
1,48
113062
bic
41003
2,43
113065
qsa
xk47
3,55
113069
imm
773c
14,25
41002
bisagra
NULL
aci
41003
art t3
NULL
aci
41004
art t4
NULL
aci
4100x
junta
NULL
aci
4100y
extractor
NULL
aci
4100z
mont
NULL
bic
41003
manivela
19,56
bic
41089
rodamiento
175,50
bic
41672
plato
0,00
fea
112
cubo
170,20
fea
114
cubo
36,45
imm
773c
reostato
273,00
imm
775c
reostato 2
71,25
imm
779c
reostato 3
0,00
imm
887h
caja clavos
120,42
imm
887p
perno
6,00
imm
887x
manivela
152,00
qsa
xk47
red
134,90
qsa
xk48
red
272,02
qsa
xk48a
red
54,76
rei
2a44g
pas
49,00
rei
2a44l
bomba l
540,00
rei
2a44r
bomba r
540,00
rei
2a45c
junta
165,90