Transact-SQL

Anuncio
Computación e Informatica
Transact-SQL
•
•
•
SQL es un lenguaje de consulta para los sistemas de bases de datos relaciónales, pero que no posee la
potencia de los lenguajes de programación.
No permite el uso de variables, estructuras de control de flujo, bucles ... y demás elementos
característicos de la programación.
No es de extrañar, SQL es un lenguaje de consulta, no un lenguaje de programación.
EL EMENTO S DE Tran sact-S QL
Al escribir y ejecutar sentencias Transact-SQL usará:
Declaraciones del Data Control Language (DCL) que se utilizan para determinar quién ve o modifica
los datos.
Declaraciones del Data Definition Language (DDL) que se usan para crear los objetos en la base de
datos.
Declaraciones del Data Manipulation Language (DML) que se usan para consultar y modificar los
datos.
Elementos adicionales del lenguage como: variables, operadores, funciones, sentencias de control de flujo,
y comentarios.
1. Declaraciones del Data Control Language (DCL)
Las declaraciones del DCL se usan para cambiar los permisos o roles asociados con un usuario de la base
de datos. La tabla siguiente describe las declaraciones de DCL.
Sentencia
Descripción
GRANT
Crea una entrada en la seguridad del sistema que le permite a un usuario
trabajar con los datos o ejecutar ciertas sentencias Transact-SQL.
DENY
Crea una entrada en la seguridad del sistema negando un permiso de una
cuenta de seguridad y evita que el usuario, grupo, o rol herede el permiso a
través de su grupo y rol.
REVOKE
Quita un permiso previamente concedido o negado.
Por defecto, sólo miembros con roles sysadmin, dbcreator, db_owner o db_securityadmin pueden
ejecutar las declaraciones DCL.
2. Declaraciones del Data Definition Language (DDL)
Las declaraciones de DDL permiten crear bases de datos, tablas, y tipos de datos definidos por usuarios.
También se usan para manejar los objetos de la base de datos. Algunas declaraciones de DDL son:
CREATE DATABASE
ALTER DATABASE
CREATE TABLA
ALTER TABLA
DROP DATABASE
DROP TABLA
CREATE INDEX
DROP INDEX
-
crea una nueva base de datos
modifica una base de datos
crea una nueva tabla
modifica una tabla
Borra una Base de Datos
Borra una tabla
crea un índice
borra un índice
Por defecto, solo miembros de los roles sysadmin, dbcreator, db_owner, o db_ddladmin pueden
ejecutar las declaraciones DDL. En general, se recomienda que ninguna otra cuenta se use para crear los
objetos de la base de datos. Si diferentes usuarios crean sus propios objetos en una base de datos, cada
Curso: Base de Datos
- 1-
Ing. Fabián Silva Alvarado
Computación e Informatica
dueño de objeto debe conceder los permisos apropiados a cada usuario de esos objetos. Esto causa una
sobrecarga administrativa y debe evitarse.
Ej e m pl o
DROP TABLE
La sentencia DROP TABLE sirve para eliminar una tabla. No se puede eliminar una tabla si está
abierta, tampoco la podemos eliminar si el borrado infringe las reglas de integridad referencial (si
interviene como tabla padre en una relación y tiene registros relacionados).
Curso: Base de Datos
- 2-
Ing. Fabián Silva Alvarado
Computación e Informatica
3. Declaraciones del Data Manipulation Language (DML)
Las declaraciones DML trabajan con la data de la base de datos. Las declaraciones DML incluyen:
SELECT
INSERT INTO
UPDATE
DELETE
–
–
–
–
extrae los datos de la Base de datos
inserta nuevos datos en una base de datos
modifica los datos de la Base de datos
borras los datos de la Base de datos
Por defecto solamente miembros de los roles sysadmin, dbcreator, db_owner o db_datawriter
pueden ejecutar sentencias DML.
La sentencia SELECT
La sentencia SELECT es utilizada para extraer datos de una base de datos.
El resultado es almacenado en una tabla de resultados, llamada el resultado-set.
Sintaxis
SELECT column_name(s)
FROM tabla_name
y
SELECT * FROM tabla_name
Note: SQL no es sensible a las mayúsculas. SELECT es lo mismo que select.
TABLA: DIRECTOR
Ejemplo SELECT
column_name(s)
Se seleccionará el contenido de las columnas llamadas "dir_nomb" y "dir_fnac" de la tabla.
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Curso: Base de Datos
- 3-
Ing. Fabián Silva Alvarado
Computación e Informatica
Ejemplo SELECT *
Seleccionaremos todas las columnas de la tabla “DIRECTOR”.
Se usa la siguiente sentencia SELECT:
Tip: el asterisco (*) es el camino rápido para seleccionar todas las columnas
El conjunto de resultados es:
La navegación por el set de resultados
La sentencia SELECT DISTINCT
En una tabla, algunas de las columnas podrían contener valores duplicados.
Este no es un problema, sin embargo, a veces, usted querrá lista sólo los diferentes (distintos) valores de
una tabla.
La palabra clave DISTINCT puede ser utilizada para regresar sólo distintos (diferentes) valores.
Sintaxis:
SELECT DISTINCT column_name(s)
FROM tabla_name
Ejemplo: La Tabla “DIRECTOR”:
Se seleccionarán solo los valores distintos de la columna llamada "pai_codi" desde la tabla.
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Curso: Base de Datos
- 4-
Ing. Fabián Silva Alvarado
Computación e Informatica
La cláusula TOP
La cláusula TOP es usada para especificar la cantidad de registros que retornara la consulta.
Nota: No todos los sistemas de Base de datos soportan la cláusula top.
SQL Server Sintaxis
SELECT TOP number|percent column_name(s)
FROM tabla_name
Ejemplo: La Tabla “DIRECTOR”
Se pedirá solo los dos primeros registros de la tabla.
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Se seleccionará solo el 50% de los registros de la tabla.
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Curso: Base de Datos
- 5-
Ing. Fabián Silva Alvarado
Computación e Informatica
ORDER BY
La palabra clave ORDER BY es utilizada para ordenar el set de resultado por una columna específica.
La palabra clave ORDER BY ordenar los registros en orden ascendente por defecto. Si usted quiere ordenar
los registros en un orden descendente, se usa el DESC clave.
Sintaxis
SELECT column_name(s)
FROM tabla_name
ORDER BY column_name(s) ASC|DESC
Ejemplo
La Tabla “DIRECTOR”: Se seleccionará todos los directores desde la tabla y se ordenará la lista por
su apellido.
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Ejemplo ORDER BY DESC
Se seleccionará todas las personas desde la tabla y se ordenará la lista por su apellido de manera
descendente.
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Curso: Base de Datos
- 6-
Ing. Fabián Silva Alvarado
Computación e Informatica
La cláusula WHERE
La cláusula WHERE es utilizada para extraer sólo los registros que cumplen un criterio.
Sintaxis
SELECT column_name(s)
FROM tabla_name
WHERE column_name operator value
Ejemplo: La Tabla “Director”: Se seleccionará solo los directores que sean del país con código 502
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
También podemos emplear la cláusula WHERE para hacer una consulta empleando 2 tablas:
Ejemplo
Se seleccionará los campos dir_codi, dir_nomb, dir_tele de la Tabla “Director” y el campo pai_nomb
de la tabla “PAIS”
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
También podemos utilizar Alias para las tablas:
Curso: Base de Datos
- 7-
Ing. Fabián Silva Alvarado
Computación e Informatica
Comillas en los campos de textos
SQL usa comillas simples en los valores de los campos de textos . Mientras tanto los valores numéricos no
están encerrados entre comillas.
Se seleccionará solo los directores que sean del país EEUU
Operadores permitidos en la cláusula WHERE
OPERADOR
=
<>
>
<
>=
<=
BETWENN
LIKE
IN
DESCRIPCION
Igual
Distinto
Mayor que
Menor que
Mayor o igual
Menor o igual
Incluido en un rango
Filtrado por un patrón
Utilizado cuando se conoce
exactamente los valores que se
espera que retorne de una columna
Note: En algunas versiones el símbolo de distinto no es e <> sino que podría escribirse como !=
El operador LIKE
Es usado para buscar por un patrón en una columna.
SQL LIKE Sintaxis
SELECT column_name(s)
FROM tabla_name
WHERE column_name LIKE pattern
EJEMPLO: Se seleccionará los directores cuyos nombres comiencen con “C”.
Se usa la siguiente sentencia SELECT:
El signo "%" puede ser usado para definir un patrón que puede ser usado antes y después del patrón
El conjunto de resultados es:
Curso: Base de Datos
- 8-
Ing. Fabián Silva Alvarado
Computación e Informatica
Se seleccionará los directores cuyos nombres terminen con “C”.
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Se seleccionarán los directores cuyos nombres contiene un patrón “los”
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Se seleccionarán los directores cuyos nombres no contiene un patrón “los”, para ello se utiliza la
palabra NOT
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Comodines
 Los comodines pueden sustituir uno o más caracteres cuando se busca en una base de datos.
 Son usados con el operador SQL LIKE.
 Lista de comodines usados:
COMODIN
%
Un sustituto para cero o más caracteres
_
Un sustituto para estrictamente un carácter
[charlist]
[^charlist]
Curso: Base de Datos
DESCRIPCION
Algún carácter en la lista mostrada
Algún carácter que no está en la lista mostrada
- 9-
Ing. Fabián Silva Alvarado
Computación e Informatica
Usando el comodín _
Se seleccionará los directores cuyos nombres comiencen con un carácter y continúa con “_a”.
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Se seleccionará el Director cuyo nombre comienza con “c” y continúa con un carácter, sigue
con “rl” otro carácter y continúa con “s”.
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Usando los comodines de una lista
Se seleccionará las personas con los apellidos que comienzan con „c‟ , „d‟ o „e‟.
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Se seleccionará las personas con el nombre que no comienzan con „c‟ , „d‟ o „e‟.
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Curso: Base de Datos
- 10 -
Ing. Fabián Silva Alvarado
Computación e Informatica
El operador IN
El operador IN permite especificar múltiples valores en una cláusula WHERE
SELECT column_name(s)
FROM tabla_name
WHERE column_name IN (value1,value2,...)
Ejemplo
Se seleccionará los Directores con código igual “DI003" o "DI005".
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
El operador BETWEEN
Selecciona un rango de datos entre dos valores. El valor puede ser números, textos, o fechas.
SELECT column_name(s)
FROM tabla_name
WHERE column_name
BETWEEN value1 AND value2
Ejemplo
Se seleccionarán los Directores con código entre "DI003" y"DI005".
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Curso: Base de Datos
- 11 -
Ing. Fabián Silva Alvarado
Computación e Informatica
De acuerdo a los sistemas de base de datos utilizados los valores mostrados pueden incluir los valores
solicitados o excluirlos, o puede incluir el primero y excluir el último.
Se seleccionarán los Directores que están fuera del rango entre "DI003" y"DI005".
El conjunto de resultados es:
Se seleccionarán los Directores cuya fecha de nacimiento este comprendida en los años 1970 y
1975.
Operador AND & OR
El operador AND muestra un registro si la primera y la segunda condición son verdaderas. El operador
OR muestra un registro en donde la primera condición o la segunda condición son verdaderas.
Ejemplo AND
Seleccionar sólo los directores que su nombre empiece con “C” y sea de sexo “F”
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Ejemplo OR
Seleccionar solo los Directores cuyos nombres comiencen con “D” o “C”
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Curso: Base de Datos
- 12 -
Ing. Fabián Silva Alvarado
Computación e Informatica
Seleccionar los Directores que no tienen registrado teléfono ni Email
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Seleccionar los Directores que no tienen registrado teléfono o Email.
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Combinando AND & OR
Se puede combinar AND y OR (usar paréntesis parar formar expresiones complejas).
Seleccionar solo las Directores cuyos apellidos comiencen con “d” o “r”
registrado un número telefónico.
y que no tengan
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
Curso: Base de Datos
- 13 -
Ing. Fabián Silva Alvarado
Computación e Informatica
JOIN
La palabra clave JOIN es usada en las sentencias SQL para consultar tablas de dos o más tablas, basada
sobre una relación entre columnas de estas tablas
Una tabla en la base de datos menudo son relacionadas a otra con una clave (PK, FK)
Una Clave Primaria PK es una columna ( o combinación de columnas) con un único valor distinto para cada
fila. Cada valor de la PK debe ser único en cada tabla. El propósito es el de vincular datos juntos cruzando
tablas, sin repetir todos los datos en cada tabla.
La Tabla “PAIS”:
Notar que la columna pai_codi es la clave primaria en la tabla “Pais”. Esto significa que dos filas no
pueden tener el mismo pai_codi.
La Tabla “DIRECTOR”:
Notar que la columna dir_codi es la clave primaria en la tabla Director y que la columna pai_codi hace
referencia a los países en la tabla Director sin usar sus nombres.
La relación entre las dos tablas está dada por la columna "pai_codi".
Diferentes tipos de SQL JOINs
Antes de continuar con ejemplos, se listaran los tipos de JOIN que pueden ser usados y la diferencia
entre ellos.
JOIN: Retorna las filas cuando hay al menos una concordancia entre ambas tablas
LEFT JOIN: Retorna todas las filas desde la tabla de la izquierda, aunque no haya coincidencias en
la tabla derecha
RIGHT JOIN: Retorna todas las filas desde la tabla de la derecha ,aunque no haya coincidencias
en la tabla izquierda
FULL JOIN: Retorna filas cuando hay una coincidencia en una de las tablas
Curso: Base de Datos
- 14 -
Ing. Fabián Silva Alvarado
Computación e Informatica
Palabra clave INNER JOIN
La palabra clave INNER JOIN retorna filas cuando hay al menos una coincidencia en ambas tablas.
Sintaxis
SELECT column_name(s)
FROM tabla_name1
INNER JOIN tabla_name2
ON tabla_name1.column_name=tabla_name2.column_name
PS: INNER JOIN es lo mismo que JOIN.
SQL INNER JOIN Ejemplo
Se listara los países que tengan al menos un director registrado.
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
La palabra clave INNER JOIN retorna las filas si hay al menos una coincidencia en ambas tablas. Si
hay filas en "Pais" que no tienen coincidencias en "Director", estas filas NO serán listadas.
Palabra clave LEFT JOIN
La palabra clave LEFT JOIN retorna todas las filas desde la tabla de la izquierda (tabla_name1), siempre que
no haya coincidencias en la tabla derecha (tabla_name2).
Sintaxis
SELECT column_name(s)
FROM tabla_name1
LEFT JOIN tabla_name2
ON tabla_name1.column_name=tabla_name2.column_name
Nota: En algunas bases de datos la palabra clave LEFT JOIN es llamada LEFT OUTER JOIN.
Curso: Base de Datos
- 15 -
Ing. Fabián Silva Alvarado
Computación e Informatica
LEFT JOIN Ejemplo
Se listara todos los países y Directores, si este existe.
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
La palabra clave LEFT JOIN retorna todas las filas
desde la tabla izquierda (Personas), aunque no
haya coincidencia en la tabla derecha (Orden).
Palabra clave RIGHT JOIN
La palabra clave RIGHT JOIN retorna todas las filas desde la tabla derecha (tabla_name2), aunque no haya
coincidencia en la tabla izquierda (tabla_name1).
RIGHT JOIN Sintaxis
SELECT column_name(s)
FROM tabla_name1
RIGHT JOIN tabla_name2
ON tabla_name1.column_name=tabla_name2.column_name
Nota: En algunas bases de datos la palabra calve RIGHT JOIN es llamada RIGHT OUTER JOIN.
RIGHT JOIN Ejemplo
Se listara todos los Directores y países contenidos si estas existen.
Se usa la siguiente sentencia SELECT:
El conjunto de resultados es:
La palabra clave RIGHT JOIN retorna todas
las filas desde la tabla derecha (Orden),
aunque no existan coincidencias en la tabla
izquierda (Personas).
Curso: Base de Datos
- 16 -
Ing. Fabián Silva Alvarado
Descargar