Download Transact SQL

Document related concepts
no text concepts found
Transcript
Diseñando la arquitectura de aplicaciones
empresariales.
Acceso al SQL Server.Autenticación de usuario:
Diseñando la arquitectura de aplicaciones empresariales
Autenticación de usuario:
Modo de autentificación (acceso al servidor)
Windows
(S.O.) (Inicio de sesión)
Servidor SQL Server
Acceso y gestión de una
BD (autorización)
Permisos a usuarios objetos
de BD
ejecución de sentencias
Permisos a través de roles:
del servidor o de BD
definidos por el usuario
Lección 02
Diseñando la arquitectura de aplicaciones empresariales
Autenticación de usuario:
Jerarquía de permisos
SQL Server 2005
Lección 02
Diseñando la arquitectura de aplicaciones empresariales
Autenticación de usuario:
Inicios de sesión preestablecidos
Lección 02
Diseñando la arquitectura de aplicaciones empresariales
Herramientas de programación de SQL Server.• Integración con Visual Studio
•
Entorno de control de fuentes simplificado y consistente
•
Depuración in-line integrada
Lección 02
Diseñando la arquitectura de aplicaciones empresariales
Lección 02
El lenguaje de programación 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.
Transact SQL es el lenguaje de programación que proporciona SQL Server para
ampliar SQL con los elementos característicos de los lenguajes de programación:
variables, sentencias de control de flujo, bucles ...
Cuando se desea realizar una aplicación completa para el manejo de una base de
datos relacional, resulta necesario utilizar alguna herramienta que soporte la
capacidad de consulta del SQL y la versatilidad de los lenguajes de programación
tradicionales. Transact SQL es el lenguaje de programación que proporciona SQL
Server para extender el SQL estándar con otro tipo de instrucciones.
Con Transact SQL vamos a poder programar las unidades de programa de la base
de datos SQL Server, están son:
Procedimientos almacenados
Funciones
Triggers
Scripts
Diseñando la arquitectura de aplicaciones empresariales
Lección 02
El lenguaje de programación Transact-SQL.Veamos algunos ejemplos:
En ocasiones es necesario separar las sentencias en varios lotes, porque Transact
SQL no permite la ejecución de ciertos comandos en el mismo lote, si bien
normalmente también se utilizan los lotes para realizar separaciones lógicas dentro
del script.
Diseñando la arquitectura de aplicaciones empresariales
Lección 02
El lenguaje de programación Transact-SQL.La sentencia SELECT:
La sentencia SELECT nos permite consultar los datos almacenados en una tabla
de la base de datos.
El formato de la sentencia select es:
SELECT [ALL | DISTINCT ][ TOP expression [ PERCENT ] [ WITH TIES ] ]
<nombre_campos>
FROM <nombre_tabla>
[ INNER | LEFT [OUTER]| RIGHT [OUTER] | CROSS]
[JOIN ] <nombre_tabla> ON <condicion_join>[ AND|OR <condicion>]
[WHERE <condicion> [ AND|OR <condicion>]]
[GROUP BY <nombre_campos>]
[HAVING <condicion>[ AND|OR <condicion>]]
[ORDER BY <nombre_campo> [ASC | DESC]
Diseñando la arquitectura de aplicaciones empresariales
Lección 02
El lenguaje de programación Transact-SQL.La sentencia SELECT:
El siguiente ejemplo muestra una consulta sencilla que obtiene el código y la
"familia" de una tabla llamada familias (representaría familias de productos por
ejemplo).
SELECT CO_FAMILIA, FAMILIA
FROM FAMILIAS
El uso del asterisco indica que queremos que la consulta devuelva todos los campos
que existen en la tabla.
SELECT * FROM FAMILIAS
Diseñando la arquitectura de aplicaciones empresariales
Lección 02
El lenguaje de programación Transact-SQL.La cláusula WHERE:
La cláusula WHERE es la instrucción que nos permite filtrar el resultado de una
sentencia SELECT.
SELECT CO_FAMILIA, FAMILIA
FROM FAMILIAS
WHERE CO_FAMILIA = 1
Por supuesto, podemos especificar varias condiciones para el WHERE:
SELECT * FROM FAMILIAS
WHERE CO_FAMILIA = 1 OR CO_FAMILIA = 2
Siempre que incluyamos un valor alfanumerico para un campo en la condición
WHERE este debe ir entre comillas simples:
SELECT * FROM FAMILIAS
WHERE FAMILIA = 'FAMILIA 1'
Diseñando la arquitectura de aplicaciones empresariales
Lección 02
El lenguaje de programación Transact-SQL.La cláusula ORDER BY:
Podemos especificar el orden en el que serán devueltos los datos a través de la
cláusula ORDER BY
SELECT CO_FAMILIA, FAMILIA
FROM FAMILIAS
ORDER BY FAMILIA DESC
Diseñando la arquitectura de aplicaciones empresariales
Elementos de Transact-SQL.-
Lección 02
Diseñando la arquitectura de aplicaciones empresariales
Elementos adicionales al lenguaje.• Variables locales
• Operadores
• Funciones
• Elementos de flujo de control • Comentarios
Variables locales
• Definido por el usuario con la sentencia DECLARE
• Asigna valores con la sentencia SET o SELECT
DECLARE @nombre char(20)
SET
@nombre
SELECT *
=
‘Alberto’
FROM Autores
WHERE Nombre = @nombre
Lección 02
Diseñando la arquitectura de aplicaciones empresariales
Lección 02
Elementos adicionales al lenguaje.-
Operadores
• Operadores Aritméticos
- Producto (*) - División (/) -Módulo (%)
- Suma (+)
- Resta (-)
• Operadores de comparación
- Igual (=)
- Mayor que (>)
-Menor que (<) - Mayor o igual a (>=)
- Menor o igual a (<=)- Diferente a (<>)
• Operadores de concatenación de cadenas (+)
• Operadores lógicos
- AND, OR y NOT
• Precedencia
- (), * / %, + -, + (concatenación), NOT, AND, OR
Diseñando la arquitectura de aplicaciones empresariales
Lección 02
Elementos adicionales al lenguaje.-
Funciones
• Funciones del conjunto de filas
SELECT a.*
FROM
OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'c:\Mis
Documentos\Ventas.mdb';'admin';'', cliente)AS a
• Funciones agregadas
USE pubs
SELECT COUNT(*) FROM authors
• Funciones escalares
SELECT DB_NAME() AS ‘BaseDatos’
Diseñando la arquitectura de aplicaciones empresariales
Elementos adicionales al lenguaje.-
Elementos de flujo de control
• Nivel de sentencias
-Bloques BEGIN ... END
-Bloques IF ... ELSE
-- Construcción WHILE
• Nivel de fila
- Expresión CASE
Lección 02
Diseñando la arquitectura de aplicaciones empresariales
Lección 02
Elementos adicionales al lenguaje.-
BEGIN ... END y IF ... ELSE
USE northwind
IF EXISTS (SELECT orderid FROM orders
WHERE customerid = 'frank')
PRINT
'El
cliente
no
puede
ser
eliminado' ELSE
BEGIN
DELETE customers WHERE customerid =
'frank' PRINT
'*** Cliente eliminado
***' END
Diseñando la arquitectura de aplicaciones empresariales
DECLARE
@num
int SET @num=1
WHILE @num<=10
BEGIN
SELECT @num
SET @num = @num + 1
END
Lección 02
Construcción
WHILE
DECLARE
@num
int SET @num=1
WHILE @num<=100 BEGIN
SELECT @num
SELECT @num = @num +
1 IF @num=50
BREAK
ELSE
CONTINUE
END
Diseñando la arquitectura de aplicaciones empresariales
Lección 02
Elementos adicionales al lenguaje.-
Expresión CASE
• Sintaxis
CASE expresión
{WHEN expresión
THEN
resultado}
[,...n]
resultado]
END
SELECT
au_fname,
au_lname, CASE state
WHEN 'CA' THEN 'California'
WHEN 'KS' THEN 'Kansas' WHEN
'TN' THEN 'Tennessee' WHEN
'OR' THEN 'Oregon' ELSE 'No
determinado' END AS StateName
FROM pubs.dbo.authors
[ELSE
Diseñando la arquitectura de aplicaciones empresariales
Lección 02
Elementos adicionales al lenguaje.-
Comentarios
• Comentarios en línea
SELECT * -- Lista todas las columnas de
autores FROM authors
• Comentarios en bloque
/*
Este código recupera todas las filas
de autores de la base de datos pubs
*/
SELECT * FROM authors
Diseñar la siguiente Tablas en FoxPro