Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
14 structure query language
1. SISTEMAS DE BASE DE DATOS
Ing. Rafael Rojas Bujaico
UNIVERSIDAD NACIONAL DE
HUANCAVELICA
FACULTAD
INGENIERIA ELECTRONICA-SISTEMAS
COMANDOS EN SQL SERVER
2. La sentencia Select
La sentencia Select es una sentencia SQL, que pertenece al conjunto del Lenguaje de
Manipulación de Datos, y que sirve para recuperar registros de una o varias tablas, de
una o varias bases de datos. Su sintaxis es la siguiente:
SELECT <atributos> FROM <tablas>
[WHERE <condicion>]
[GROUP BY <atributos>]
[HAVING <condición>]
[ORDER BY <atributos>]
Donde las mayúsculas representan palabras reservadas, y lo encerrado entre corchetes
es opcional, puede ser omitido. Una vez vista la anterior forma de representación,
vamos a detenernos en la sintaxis de la sentencia Select.
3. SELECT <atributos>: permite hacer una proyección de las tablas, es decir,
seleccionar los campos que deseamos recuperar de la base de datos, separados por
comas. Si se especifica el símbolo *, se obtendrán todos los campos de la tabla.
FROM <tablas>: permite especificar la tabla de la cual se desean obtener los datos.
Si se especifica más de una tabla, éstas irán separadas por comas.
WHERE <condición>: permite establecer una condición de recuperación de las filas
de la/s tabla/s. Sólo se obtendrán aquellas tuplas que verifiquen dicha condición,
que será opcional. En el caso de que se omita esta parte, se recuperarán todas las
filas.
GROUP BY <atributos>: permite establecer una selección de campos cuando se
utilizan funciones escalares o de conteo (ya se verá más adelante lo que significa.
HAVING <condición>: establece una condición para los atributos obtenidos como
resultado de la aplicación de funciones escalares.
ORDER BY <atributos>: permite obtener el resultado de la consulta ordenado por
los atributos especificados.
4. La cláusula Where
La forma de usar el Transact SQL para realizar consultas realizando una proyección
horizontal (es decir, seleccionando las filas), es mediante la opción WHERE. A
continuación de esta palabra reservada, se debe especificar la condición lógica que se
debe evaluar, para obtener aquellas filas que la cumplen.
Para expresar una expresión lógica se pueden emplear cualquiera de los operadores de
Transact SQL cuyo resultado devuelva un valor lógico, aunque también se pueden utilizar
operadores de cadena. Básicamente son los siguientes:
= : compara si una expresión es mayor que otra
< : compara si una expresión es menor que otra
>= : compara si una expresión es mayor o igual que otra
<= : compara si una expresión es menor o igual que otra
<>: compara si una expresión es distinta que otra
LIKE : compara todas las cadenas que verifican un patrón de búsqueda
NOT LIKE : compara todas las cadenas que no verifican un patrón de búsqueda
BETWEEN : compara todas las cadenas que están comprendidas en un rango de
valores
IN : compara todas las cadenas que están contenidas en una lista
SELECT * FROM titleauthor WHERE royaltyper > 10
SELECT * FROM titles WHERE price <= 2
SELECT au_fname FROM authors WHERE au_fname LIKE '[C-H]urry'
SELECT title FROM titles WHERE price BETWEEN 1 AND 2
5. La cláusula Group by
La cláusula GROUP BY agrupa, como su propio nombre indica, filas que tienen el mismo
valor para un atributo, en grupos distintos. Por ejemplo, si queremos obtener el apellido
de todos los autores, ejecutamos el Código
SELECT nomAutor FROM Autor SELECT nomAutor FROM Autor GROUP BY nomAutor
La cláusula Having
La cláusula HAVING es similar a la cláusula WHERE, salvo que aquella se usa como
condición de búsqueda cuando se especifica la cláusula GROUP BY.
Por lo tanto el funcionamiento es similar al ya visto para WHERE. La única diferencia es
que HAVING se aplica a condiciones de grupo.
Por ejemplo, si dada la sentencia de agrupación (Group By), deseamos que sólo se
muestre el autor cuyo apellido sea por ejemplo “Roger”.
SELECT nomAutor FROM Autor GROUP BY nomAutor HAVING nomAutor = 'Roger'
6. La cláusula Order by
La cláusula ORDER BY determina el orden de visualización de las filas obtenidas en la
sentencia SELECT. A continuación de dicha palabra reservada, se debe especificar el
atributo o los atributos por los cuales se ordenará el resultado obtenido en la consulta.
SELECT nomAutor, apeAutor FROM Autor ORDER BY apeAutor
Funciones escalares para Select
Entendemos por funciones escalares, todas aquellas que permiten realizar operaciones
de conteo de filas, suma de atributos, obtención de medias, etc. Dichas funciones se
especifican a continuación de la palabra reservada SELECT. Las funciones que soporta la
sentencia SELECT en el Transact SQL son las siguientes:
SUM: Realiza una suma acumulativa de un atributo para todas las filas accedidas
mediante una consulta SQL.
SELECT sum(precio) FROM pedido
SELECT sum(precio) FROM pedido WHERE cod_cliente = "R12CE"
7. COUNT: Cuenta todas las filas de las tablas accedidas mediante una consulta SQL.
SELECT count(DNI) FROM cliente
SELECT count(*) FROM cliente
SELECT count(*) FROM cliente WHERE poblacion = “Huancayo"
SELECT count(*) caros FROM titles WHERE price > 20
AVG: Realiza una media aritmética de los atributos para todas las filas accedidas
mediante la consulta SQL.
SELECT avg(cantidad_pedida) FROM material
SELECT avg(price) media FROM titles
MAX: Obtiene el máximo valor del atributo especificado, de entre todas las filas
seleccionadas mediante la sentencia SQL.
SELECT max(price) caro FROM titles
MIN: Obtiene el mínimo valor del atributo especificado, de entre todas las filas
seleccionadas mediante la sentencia SQL.
SELECT min(price) barato FROM titles
8. La sentencia Insert
La otra gran sentencia de manipulación de datos es INSERT. Si SELECT nos permitía
recuperar datos, INSERT nos va a permitir añadirlos al esquema, es decir, con esta
sentencia podemos añadir información a la base de datos.
INSERT INTO tabla (atributos)
VALUES (valores)
INSERT INTO Autor (idAutor, nomAutor, apeAutor)
VALUES ('409-99-9876', ‘Juan', 'Perez')
NOTA: Si el valor a introducir es alfanumérico, deberá ir encerrado entre
comillas, mientras que si es numérico no.
INSERT INTO Autor (idAutor, nomAutor, apeAutor, contacto)
VALUES ('409-99-9876', ‘Juan', 'Perez', 1)
9. La sentencia Update
El objetivo de la sentencia UPDATE es actualizar los valores de una o varias filas de una
tabla, sin necesidad de borrarla e insertarla de nuevo. La sintaxis es la siguiente:
UPDATE tabla SET atributo1 = valor1 , atributo2 = valor2, ...
WHERE condicion
UPDATE Autor SET nomAutor = 'Pepito'
WHERE idAutor = '409-99-9876'
La sentencia Delete
El objeto de la sentencia DELETE es el de borrar filas de una tabla. Para poder borrar
filas en una tabla se deben cumplir las condiciones de seguridad determinadas por el
administrador.
DELETE FROM tabla
WHERE condicion
DELETE FROM Autor
WHERE idAutor = '409-99-9876'
10. Operadores básicos y consideraciones del lenguaje
Entendemos por operadores, aquellas palabras reservadas o símbolos delimitadores que
nos permiten aplicar las diversas técnicas del álgebra relacional. Las principales que
veremos aquí son:
Proyección
Unión
Join o combinación
Operador proyección
El operador de proyección es muy usado, sobre todo para acotar la consulta de tablas.
Dicho operador consiste en restringir la cantidad de información que obtenemos de una
o varias tablas.
SELECT tabla1.campo1, tabla2.campo1 FROM tabla1, tabla2
El método no varia si queremos realizar la proyección sobre más de una tabla.
11. Operador Union
El operador unión consiste, como su propio nombre indica, en unir campos de más de
una tabla. El resultado obtenido contendrá entonces campos de las tablas especificadas
en la cláusula FROM. Este operador casi nunca se utiliza por separado, sino junto con el
de proyección, para obtener el resultado consultando en varias tablas, y quedarnos
luego sólo con la información relevante.
SELECT * FROM tabla1, tabla2 SELECT * FROM tabla1 UNION SELECT * FROM tabla2
Operador join
El operador de join es uno de los más usados en el álgebra relacional. Sirve para
combinar dos tablas entre sí, utilizando un atributo común. Lo que se realiza es una
unión de cada fila de una tabla, con todas las filas de la tabla con la que se hace el join,
cuyos atributos comunes coincidan.
La forma de realizarlo en Transact SQL es especificando en la cláusula WHERE los
atributos por los cuales se va a realizar el join entre ambas tablas.
SELECT * FROM tabla1, tabla2 WHERE tabla1.campo1 = tabla2.campo1
12. El Código anterior realiza un join entre las tablas tabla1 y tabla2, por el campo1 de ambas
tablas.
Veamos un ejemplo de como funciona un join. Supóngase que tenemos las dos
siguientes tablas, y deseamos hacer un join por el atributo campo1 de ambas.
Lo primero que se realiza al hacer un join es una unión de ambas tablas, copiando cada
fila de la primera tabla, y para cada fila cuyo campo común sea igual en ambas tablas,
copiar las filas de la segunda tabla.
13. Como hemos podido comprobar, la tercera fila de la tabla 1, no aparece en el join. Esto es
debido a que el valor del atributo por el que se hace el join (campo1), cuyo valor es 3, no
existe en el atributo campo1 de la tabla 2. A este tipo de join se le denomina inner join.
El otro tipo de join, denominado outer join, consiste en realizar el join, pero incluyendo
todas las filas de ambas tablas, aunque éstas no tengan correspondencia en su homóloga.
Dentro de este tipo de join, existen dos categorías:
Left join: incluyen todas las filas de la primera tabla, aunque éstas no tengan
correspondencia en la segunda. Los campos de la segunda tabla se rellenan con
interrogantes.
SELECT * FROM tabla1
left join tabla2 on tabla1.campo = tabla2.campo2
14. Rigth join: incluyen todas las filas de la segunda tabla, aunque éstas no tengan
correspondencia en la primera. Los campos de la primera tabla se rellenan con
interrogantes.
SELECT * FROM tabla1
rigth join tabla2 on tabla1.campo = tabla2.campo2
SELECT * FROM tabla1, tabla2 WHERE tabla1.campo1 = tabla2.campo1 AND tabla1.campo2 = tabla2.campo2
15. En el lenguaje de manipulación de datos, una de las operaciones más usuales es
precisamente la de join de varias tablas. Veamos un ejemplo de implementación de join
en Transact SQL.
SELECT Libro.titulo, Autor.nomAutor FROM Libro, LibroAutor, Autor
WHERE Libro.idTitulo = LibroAutor.idTitulo
AND LibroAutor.idAutor = Autor.idAutor
En la cláusula WHERE, además de las condiciones de join, podremos especificar otro
tipo de condiciones.
SELECT Libro.titulo, Autor.nomAutor , Libro.precio FROM Libro, LibroAutor, Autor
WHERE Libro.idTitulo = LibroAutor.idTitulo AND LibroAutor.idTitulo.idAutor = Autor.idAutor
AND Libro.precio < 20
16. Operadores propios de Transact SQL
Los operadores que nos proporciona SQL Server se dividen en varios grupos:
Aritméticos: realizan operaciones aritméticas. Ej.: suma, multiplicación, división, etc.
De nivel de bit: realizan operaciones transformando los operandos a bits. Ej.: AND al nivel de bit,
etc.
Lógicos: realizan operaciones que devuelven un resultado lógico. Ej.: comparaciones, etc.
De cadena: realizan operaciones que afectan a strings o cadenas de caracteres. Ej.: concatenación,
búsqueda, etc.
Operadores
Aritméticos
DESCRIPCION EJEMPLO RESUTADO
+ Suma SELECT 2 + 4 6
- Resta SELECT 3 – 1 2
* Multiplicación SELECT 3 * 2 6
/ División SELECT 6 / 2 3
%
Módulo o resto de la
división entera
SELECT 4 % 3 1
17. Operadores
Nivel de Bit
DESCRIPCIÓN EJEMPLO RESULTADO
&
AND binario (1 si los
bits de ambos
operandos son 1)
SELECT 3 & 2 11 & 10 = 10 - > 2
|
OR binario (1 si el bit
de alguno de los dos
operandos es 1)
SELECT 3 | 2 11 | 10 = 11 -> 3
^
OR exclusivo binario
(1 si el bit de los
operandos es distinto)
SELECT 3 ^ 2 11 ^ 10 = 01 -> 1
~
NOT binario (cambia
el bit)
SELECT ~ 2 ~10 = 01 -> 1
18. Operadores
lógicos
DESCRIPCIÓN EJEMPLO RESULTADO
= Igual SELECT 1 = 2 FALSO
< Menor SELECT 1 < 2 VERDADERO
> Mayor SELECT 1 > 3 FALSO
>= Mayor o Igual SELECT 1 >= 1 VERDADERO
<= Menor o Igual SELECT 10 <= 1 FALSO
<> Distinto SELECT 1 <> 2 VERDADERO
!= Distinto SELECT 1 != 1 FALSO
!> No Mayor SELECT 1 !> 3 VERDADERO
!< No Menor SELECT 1 !<1 VERDADERO
19. Operadores
de Cadena
DESCRIPCIÓN EJEMPLO
RESULTA
DO
+ Concatenación SELECT 'A' + 'B' AB
[]
Cadenas coincidentes.
NOT: negación de la
expresión LIKE:
búsqueda por patrón
SELECT * FROM
tabla WHERE
atributo1 LIKE '[CH]urry'
Curry
Hurry
[^]
Cadenas no
coincidentes. NOT:
negación de la
expresión LIKE:
búsqueda por patrón
SELECT + FROM
tabla WHERE
atributo1 NOT LIKE
'[^I-Z]'
J,K,L,M
-
Cadena con ese
carácter coincidente.
NOT: negación de la
expresión
LIKE: búsqueda por
patrón
SELECT * FROM
tabla WHERE
atributo2 like '_urry'
Hurry
20. Otros operadores importantes aplicables a expresiones son los siguientes:
BETWEEN: Verifica los valores comprendidos dentro del rango especificado. La
sintaxis es:
expresion BETWEEN expresion AND expression
SELECT * FROM Libro
WHERE precio BETWEEN 10 AND 50
IN: Verifica si el valor especificado está contenido dentro de una lista de ellos. La
sintaxis es:
expresion IN lista
SELECT nomAutor FROM Autor
where ciudad in ('San Francisco','Salt Lake City')
SELECT nomAutor FROM Autor
where ciudad IN (SELECT ciudad FROM Autor WHERE estado = 'CA')