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