Upload
salvador-ramos
View
5.745
Download
1
Embed Size (px)
DESCRIPTION
Curso de SQL Server, Transact-SQL. Se estudian las diferentes instrucciones del lenguaje SQL: - DDL (create, alter, drop) de diferentes tipos de objetos - DML (select, insert, update, delete) - DCL (grant, revoke) seguridad
Citation preview
SQL Server 2005
Salvador Ramos
www.helpdna.net
Agenda
Visión general del producto
Administración
Implementación (T-SQL)
Agenda (implementación)
Introducción
Elementos de Transact SQL
– DDL, DCL y DML
– Procedimientos almacenados (SP)
– Funciones definidas por el usuario (UDF)
– Triggers (desencadenadores)
Introducción Transact SQL
Cumple ANSI SQL
Extensiones del lenguaje para ampliar su funcionalidad
– Elementos de control de flujo (while, if…)
– Variables, Operadores y Funciones
Ventajas / Desventajas de cumplir ANSI al escribir código
DDL
CREATE
ALTER
DROP
TABLE
INDEX
PROCEDURE
VIEW
FUNCTION
LOGIN
USER
…
DCL
GRANT
DENY
REVOKE
SELECT
INSERT
UPDATE
DELETE
REFERENCES
EXECUTE
T-SQL (DDL y DCL)
Ejercicios
– Vamos a generar la secuencia de comandos de la base de datos de ejemplo, y estudiar su sintaxis Tablas, Contraints, Indices
Permisos
Usuarios
…
DML
SELECT
INSERT
UPDATE
DELETE
SELECT
SELECT [ALL|DISTINCT] [TOP n [PERCENT] [WITH TIES]]<Columnas> FROM <Tablas>] [INTO <NuevaTabla>] [WHERE <Condición>] [GROUP BY <ExprAgrupacion>] [HAVING <Condición>] [ORDER BY <ExprOrden>[ASC|DESC] ]
Like, between, in, not
Subselects, joins y outer joins, unions
Funciones T-SQL
De agregado – COUNT, SUM, MIN, MAX
De cadenas – SUBSTRING, RTRIM, LTRIM, LEN, …
Matemáticas – ROUND, LOG, EXP, …
De fechas – GETDATE, DATEPART, DATEADD, …
De conversión – CAST, CONVERT
SELECT - Ejercicios
Ejercicios
– Realizar ejercicios de la relación.
INSERT
INSERT INTO <Tabla> VALUES <Default | Null | Expresión>
INSERT INTO <Tabla> SELECT …
UPDATE
UPDATE <Tabla> SET Columna = <Valor | Default | Null> [FROM <TablaOrigen>] [WHERE <Condición>]
– FROM evita complejas subselects. Ej: UPDATE titles
SET ytd_sales = titles.ytd_sales + sales.qty
FROM titles, sales
WHERE titles.title_id = sales.title_id AND
sales.ord_date = (SELECT MAX(sales.ord_date)
FROM sales)
DELETE
DELETE FROM <Tabla> [FROM <TablaOrigen>] [WHERE <Condición>]
INSERT/UPDATE/DELETE - Ejercicios
Ejercicios
– Realizar ejercicios de la relación.
Vistas
CREATE VIEW NbVista AS SELECT …
Ventajas
– Evita el acceso a las tablas directamente
– Permiten particionar la información vertical y horizontalmente
– Permiten acceder fácilmente a consultas complejas
– Se pueden crear índices sobre vistas
Vistas
Ejemplos – Los usuarios de Murcia sólo tienen acceso
a los clientes de murcia mediante una vista, y ésta tiene un índice.
– Los empleados tienen acceso a los datos de sus compañeros pero no al importe de la nómina.
– Una consulta compleja se incluye en una vista, y luego utilizamos SELECT * FROM MiVista
Indices - beneficios
Mejoran el rendimiento en:
– Consultas que buscan por valores únicos, o basadas en rangos reducidos.
– Filtrado de valores por claves externas, para resolver operaciones JOIN
– Obtención de datos ordenados
– Evitan duplicados
Indices - optimización
Adicionalmente a aplicar nuestros conocimientos, podemos utilizar una nueva herramienta de rendimiento: “Asistente para optimización del motor de bases de datos”
Procedimientos Almacenados
Mejoran la seguridad
Están precompilados
Mejoran el tráfico de red
Podemos programar su ejecución
Permiten parámetros INPUT/OUTPUT
Se pueden anidar (hasta 32 niveles)
Paginacion
Devolver sólo la información que el usuario va visualizar
Demo
– Realización de procedimientos almacenados que devuelvan datos con paginación
– Realización de procedimientos almacenados para insert/update/delete
Triggers
Se ejecuta cuando sobre la tabla se produce la acción para la que se definió (INSERT, UPDATE, DELETE)
No admite parámetros
Se pueden definir varios sobre una misma tabla
Se pueden deshabilitar
Se pueden anidar
Triggers
Algunas de sus utilidades son:
– Mantener la integridad de dominio
– Mantener datos denormalizados
Tablas Inserted y Deleted
Tipos de triggers
– INTEAD OF (se activan en lugar de)
– AFTER (se activan después de)
Triggers
Ejemplos
– Ver los códigos de ejemplo míos
– Ver las siguientes URLs: http://www.configuracionesintegrales.com/mi
guele/acumulados.asp?articulo=12
http://www.configuracionesintegrales.com/miguele/insteadof.asp?articulo=211
Funciones Definidas por el usuario (UDF)
Ventajas: – Podemos usar su resultado en una
instrucción SELECT
– Puede recibir parámetros, por tanto podemos simular una vista con parámetros. Ej: SELECT * FROM MiFunc(x)
– Podemos crear cualquier función que no venga predefinida. Ej: funciones financieras o matemáticas
UDFs
IMPORTANTE:
– Desde ellas no se pueden modificar datos de tablas, ni llamar a procedimientos almacenados que lo hagan.
Tipos de UDFs
Funciones Escalares (único valor)
– Se pueden utilizar en:
Instrucciones SELECT, INSERT, UPDATE, DELETE
Como valor DEFAULT
En restricciones CHECK
En instrucciones IF o WHILE
En columnas calculadas
Funciones Tabulares (una tabla)
– Se pueden utilizar en:
Instrucciones SELECT, INSERT, UPDATE, DELETE
Funcion EXISTS
Ejercicios
Vamos a realizar una serie de ejercicios con Vistas, Procedimientos Almacenados, Triggers y UDFs
– Procedimientos almacenados para Insert, update y delete, y select paginados
– Triggers (varios)
– UDFs escalares y tabulares (de los b.o.l.)
– Estudiar script de AdvetureWorks
URLs
www.microsoft.com/spanish/msdn/cursos/sqlserver2000.asp
www.solidq.com blogs.solidq.com www.helpdna.net www.sqlserverymicrosoft.net www.portalsql.com www.callsql.com www.siquelnet.com www.sqlserverbyexample.com www.sqlmax.com
www.microsoft.com/spain/servidores www.microsoft.com/spain/technet www.microsoft.com/latam/technet www.microsoft.com/technet www.microsoft.com/spanish/msdn www.microsoft.com/msdn
URLs (english)
www.windowsitpro.com/SQLServer/
www.sqlservercentral.com
www.sqldev.com
www.sqldts.com
www.sqlpass.org
www.sql-server-performance.com
www.sswug.org
www.sqlsecurity.com
www.swynk.com
www.tsqlsolutions.com
www.sqlserver.com
SQL Server 2005
Salvador Ramos
www.helpdna.net www.solidq.com
Microsoft.public.es.sqlserver