Unidad4 sql

15
Guía rápida SQL Server 2000 División Empresas Unidad 4: Introducción a Transact-SQL Panorama general. Transact-SQL es un lenguaje de definición, manipulación y control de datos. El lenguaje de programación Transact-SQL El American National Standards Institute (ANSI) y el Internacional Standards Organization (ISO) definieron estándares para SQL. Utilizando Transact-SQL, Microsoft SQL Server 2000 soporta el nivel de implementación de SQL-92, El SQL estándar publicado por ANSI e ISO en 1992. Transact SQL también contiene algunas extensiones que incrementan su funcionalidad. Tipos de sentencias de Transact-SQL Para escribir y ejecutar una sentencia de Transact- SQL, deberá utilizar: Sentencias del Lenguaje de Definición de Datos (DDL), que permiten crear objetos en la base de datos. Sentencias del Lenguaje de Control de Datos (DCL), que permiten determinar quien puede ver o modificar los datos. Sentencias del Lenguaje de Manipulación de Datos (DML), que permiten consultar y modificar los datos. Sentencias del Lenguaje de Definición de Datos Permiten crear bases de datos, tablas y tipos de datos definidos por el usuario. También puede utilizar las sentencias DDL para administrar los objetos de bases de datos. Algunas sentencias DDL son: CREATE nombre_objeto ALTER nombre_objeto DROP nombre_objeto Por defecto, solo los miembros de sysadmin, dbcreator, db_owner, o db_ddladmin pueden ejecutar sentencias DDL. Ejemplo USE Northwind CREATE TABLE custumer (cust_id int, company varchar(40), contact varchar(30), phone char(12)) GO Unidad 4 - 1 - www.icam.com.mx

Transcript of Unidad4 sql

Page 1: Unidad4 sql

Guía rápida SQL Server 2000 División Empresas

Unidad 4: Introducción a Transact-SQL

Panorama general. Transact-SQL es un lenguaje de definición, manipulación y control de datos.

El lenguaje de programación Transact-SQL El American National Standards Institute (ANSI) y el Internacional Standards Organization (ISO) definieron estándares para SQL. Utilizando Transact-SQL, Microsoft SQL Server 2000 soporta el nivel de implementación de SQL-92, El SQL estándar publicado por ANSI e ISO en 1992. Transact SQL también contiene algunas extensiones que incrementan su funcionalidad.

Tipos de sentencias de Transact-SQL Para escribir y ejecutar una sentencia de Transact- SQL, deberá utilizar:

• Sentencias del Lenguaje de Definición de Datos (DDL), que permiten crear objetos en la base de datos.

• Sentencias del Lenguaje de Control de Datos (DCL), que permiten determinar quien puede ver o modificar los datos.

• Sentencias del Lenguaje de Manipulación de Datos (DML), que permiten consultar y modificar los datos.

Sentencias del Lenguaje de Definición de Datos Permiten crear bases de datos, tablas y tipos de datos definidos por el usuario. También puede utilizar las sentencias DDL para administrar los objetos de bases de datos. Algunas sentencias DDL son:

• CREATE nombre_objeto • ALTER nombre_objeto • DROP nombre_objeto

Por defecto, solo los miembros de sysadmin, dbcreator, db_owner, o db_ddladmin pueden ejecutar sentencias DDL. Ejemplo USE Northwind CREATE TABLE custumer (cust_id int, company varchar(40), contact varchar(30), phone char(12)) GO

Unidad 4 - 1 - www.icam.com.mx

Page 2: Unidad4 sql

Guía rápida SQL Server 2000 División Empresas

Sentencias del Lenguaje de Control de Datos Son utilizadas para cambiar los permisos asociados con un usuario de bases de datos. La siguiente tabla describe las sentencias DCL Sentencia Descripción GRANT Crea una entrada en el sistema de seguridad que permite a un

usuario de la base de datos actual trabajar con datos de la base de datos actual o ejecutar instrucciones Transact-SQL específicas.

DENY Crea una entrada en el sistema de seguridad que deniega un permiso de una cuenta de seguridad en la base de datos actual e impide que la cuenta de seguridad herede los permisos a través de los miembros de su grupo o función.

REVOKE Quita un permiso otorgado o denegado previamente de un usuario de la base de datos actual.

Ejemplo USE Northwind GRANT SELECT ON products TO public GO Sentencias del Lenguaje de Manipulación de Datos Estas sentencias trabajan con los datos en la base de datos. Puede cambiar datos o recuperar información. Las sentencias DML incluyen:

• SELECT • INSERT • UPDATE • DELETE

Ejemplo USE Northwind SELECT categoryid, productname, productid, unitprice FROM products GO

Unidad 4 - 2 - www.icam.com.mx

Page 3: Unidad4 sql

Guía rápida SQL Server 2000 División Empresas

Sintaxis de los elementos de Transact-SQL Las sentencias DML son construidas utilizando un número de elemento de sintaxis. Estos incluyen:

Directivas de Batch Un Batch es una colección de una o más instrucciones SQL que el cliente envía en una unidad. Hay dos métodos básicos para controlar procesos por lotes: GO Las herramientas de SQL Server interpretan GO como una señal de que deben enviar el lote actual de instrucciones Transact-SQL a SQL Server. Una instrucción Transact-SQL no puede ocupar la misma línea que un comando GO, GO no es una instrucción de Transact-SQL. EXEC Ejecuta una función definida por el usuario y devuelve valores escalares, un procedimiento del sistema, un procedimiento almacenado definido por el usuario o un procedimiento almacenado extendido. Admite también la ejecución de una cadena de caracteres en un proceso por lotes Transact-SQL.

Comentarios Los comentarios son cadenas de texto incluidas en el código de un programa que no se ejecutan. Pueden ser utilizados de dos formas, en línea con la sentencia o como un bloque. Comentarios en línea Puede crear comentarios en línea utilizando dos guiones (--). Ejemplo USE northwind SELECT productname , (unitsinstock – unitsonorder) -- Calcula el inventario , supplierid FROM products GO

Unidad 4 - 3 - www.icam.com.mx

Page 4: Unidad4 sql

Guía rápida SQL Server 2000 División Empresas

Comentarios en bloque Puede crear un bloque de comentarios colocando el carácter (/*) al inicio del bloque y finalizar el comentario con el carácter (*/). Ejemplo /* Este código recupera todas las líneas de la tabla productos y muestra el precio unitario, el precio unitario se incrementado un 10%, y el nombre del producto. */ USE northwind SELECT unitprice, (unitprice * 1.1), productname FROM products GO

Identificadores SQL Server proporciona una serie de reglas para nombrar identificadores normales de objetos y un método de utilizar delimitadores para identificadores que no son normales. Identificadores normales Reglas de los identificadores normales:

• El primer carácter debe ser alguno de los siguientes: o Una letra, de la "a" a la "z" y de la "A" a la "Z. o El signo de subrayado (_), arroba (@) o número (#).

Un identificador que empieza con el signo arroba indica un parámetro o una variable local. Un identificador que empieza con un signo número indica una tabla o procedimiento temporal. Un identificador que empieza con un signo de número doble (##) indica un objeto temporal global.

• Los caracteres subsiguientes pueden ser: o Letras o Números o El signo de arroba, dólar ($), número o subrayado.

• El identificador no debe ser una palabra reservada de Transact-SQL. SQL Server reserva las versiones en mayúsculas y minúsculas de las palabras reservadas.

• No se permiten los caracteres especiales o los espacios incrustados.

Unidad 4 - 4 - www.icam.com.mx

Page 5: Unidad4 sql

Guía rápida SQL Server 2000 División Empresas

Identificadores delimitados Si un identificador cumple todas las reglas de formato de los identificadores, se puede utilizar con o sin delimitadores. Si un identificador no cumple las reglas de formato de los identificadores normales, debe aparecer siempre delimitado. Los identificadores delimitados se utilizan en estas situaciones:

• Cuando los nombres contienen espacios • Cuando las palabras reservadas se usan para los nombres de objeto o

partes de los nombres de objeto.

• Los identificadores entre corchetes aparecen delimitados por corchetes ([ ]): SELECT * FROM [Blanks In Table Name]

• Los identificadores entrecomillados aparecen delimitados por comillas

dobles ("): SELECT * FROM "Blanks in Table Name"

Los identificadores entre comillas dobles sólo son válidos si la opción SET QUOTED_IDENTIFIER es ON.

Sugerencias para nombrar identificadores • Utilice nombres cortos • Utilice nombres que tengan un significado • Utilice las convenciones para nombrar identificadores • Use Un identificador que distinga el tipo de objeto

o Vistas o Procedimientos almacenados

• Utilice nombres de objetos y nombres de usuarios únicos o Tabla Ventas y rol Ventas

Tipos de datos Los tipos de datos son los tipos de valores que se pueden almacenar en una base de datos. Números Este tipo de datos representa valores numéricos e incluye enteros como int, tinyint, smallint y bigint. También incluyen valores con precisión decimal como es numeric, decimal, money, smallmoney. Estos incluyen valores con punto flotante como son float y real.

Unidad 4 - 5 - www.icam.com.mx

Page 6: Unidad4 sql

Guía rápida SQL Server 2000 División Empresas

Fechas Este tipo de datos representa fechas y horas. Los dos tipos de fechas son datetime, que tiene una precisión de 3. 33 milisegundos, y smalldatetime, que tiene una precisión de intervalos de un minuto. Caracteres Este tipo de datos es utilizado para representar datos de tipo carácter o cadena e incluye tipos de datos de tamaño fijo como son char y nchar, así como tipos de datos de longitud variable como son varchar y nvarchar. Binario Este tipo de datos es muy similar al tipo carácter en términos de almacenamiento y estructura, excepto que el contenido de los datos son una serie de bytes. El tipo de dato binario incluye binary y varbinary. Un dato de tipo bit indica un valor simple de cero o uno. Identificadores únicos Este tipo especial de datos es un uniqueidentifier que representa un identificador global único (GUID), el cual es un valor hexadecimal de 16-bytes. SQL Variant Este tipo de dato puede representar valores de varios tipos soportados por SQL Server, con excepción de text, ntext, image, timestamp y rowversion. Imagen y texto Estos tipos de datos son estructuras de objetos largos binarios (BLOB) que representan tipos de datos de longitud fija y variable para almacenar caracteres no-Unicode y Unicode y datos binarios, como es image, text y ntext. Tablas El tipo de dato tabla puede ser utilizado sólo para definir varios locales de tipo tabla o retornar valores de una función definida por el usuario. Tipos de datos definido por el usuario Este tipo de dato es creado por el administrador de base de datos y está basado en tipos de datos del sistema. Utilice tipos de datos definidos por el usuario cuando algunas tablas deban almacenar el mismo tipo de datos en una columna y quiera asegurarse que las columnas tienen exactamente el mismo tipo de datos, longitud.

Unidad 4 - 6 - www.icam.com.mx

Page 7: Unidad4 sql

Guía rápida SQL Server 2000 División Empresas

Variables Las variables son elementos del lenguaje con valores asignados. Puede utilizar variables locales en Transact-SQL. Una variable local es definida por el usuario utilizando la sentencia DECLARE, asignando en un valor inicial en un SET o SELECT, y entonces utilizarla con la sentencia o procedimiento por lotes en el cual fue declarada. El ámbito de una variable local abarca el procedimiento en el cual fue definida. Para una variable local se utiliza un símbolo @antes del nombre. Sintaxis DECLARE {@ variable_local tipo_dato} [...n] SET @nombre_variable_local = expresión Ejemplo Use northwind DECLARE @EmpID varchar(11), @vlName char(20) SET @vlname = ‘Dodsworth’ SELECT @EmpID = employeeid FROM employees WHERE LastName = @vlname SELECT @EmpID AS EmployeeID GO Resultado EmployeeID 9 (1 row(s) affected)

Unidad 4 - 7 - www.icam.com.mx

Page 8: Unidad4 sql

Guía rápida SQL Server 2000 División Empresas

Funciones del sistema Puede utilizar funciones, incluyendo funciones de sistema, en cualquier parte que una expresión lo permita en una consulta. Transact-SQL proporciona algunas funciones que retornan información. Aquí hay tres tipos de funciones con las que debería estar familiarizado: Funciones de agregado Operan sobre una colección de valores y devuelven un solo valor de resumen. Ejemplo USE northwind SELECT AVG(unitprice) AS AvgPrice FROM products GO Resultado AvgPrice 28.8663 (1 row(s) affected) Funciones escalares Operan sobre un valor y después devuelven otro valor. Las funciones escalares se pueden utilizar donde la expresión sea válida. Esta tabla clasifica las funciones escalares. Categoría de la función

Explicación

Funciones de configuración

Devuelven información acerca de la configuración actual.

Funciones de cursor Devuelven información acerca de los cursores. Funciones de fecha y hora

Realizan una operación sobre un valor de entrada de fecha u hora, y devuelven un valor de cadena, numérico o de fecha y hora.

Funciones matemáticas

Realizan un cálculo sobre valores de entrada proporcionados como parámetros de la función y devuelven un valor numérico.

Funciones de metadatos

Devuelven información acerca de la base de datos y los objetos de la base de datos.

Funciones de seguridad

Devuelven información acerca de usuarios y funciones.

Unidad 4 - 8 - www.icam.com.mx

Page 9: Unidad4 sql

Guía rápida SQL Server 2000 División Empresas

Funciones de cadena

Realizan una operación sobre un valor de entrada de cadena (char o varchar) y devuelven un valor de cadena o numérico.

Funciones del sistema

Realizan operaciones y devuelven información acerca de valores, objetos y configuraciones de Microsoft® SQL Server™.

Funciones de estadísticas del sistema

Devuelven información estadística acerca del sistema.

Funciones de texto e imagen

Realizan una operación sobre un valor o una columna de texto o imagen, y devuelven información acerca del valor.

Ejemplo USE northwind SELECT DB_NAME() AS ‘database’ GO Resultado Database Northwind (1 row(s) affected)

Ejemplos de funciones de sistema Las funciones del sistema son comúnmente utilizadas cuando convierte datos de tipo fecha de un formato de un país a otro. Ejemplo 1 Este ejemplo demuestra como puede convertir fechas a diferentes estilos. SELECT ‘ANSI:’, CONVERT (varchar(30), GETDATE(), 102) AS Style UNION SELECT ‘japanese:’, CONVERT (varchar(30), GETDATE(), 111) UNION SELECT ‘European:’, CONVERT (varchar(30), GETDATE(), 113) GO Resultado Estilo European: 20 Nov 1998 16:44:12:857 Japanese: 11/20/98 ANSI: 1998.11.20

Unidad 4 - 9 - www.icam.com.mx

Page 10: Unidad4 sql

Guía rápida SQL Server 2000 División Empresas

Ejemplo 2 Este ejemplo utiliza la opción DATEFORMAT de la sentencia SET para formatear fechas. Esta configuración es utilizada solo en la interpretación de caracteres tipo cadena que son convertidos a tipo fecha. No tiene efectos en el despliegue de los valores. SET DATEFORMAT dmy GO DECLARE @vdate datetime SET @vdate = ‘29/11/98’ SELECT @vdate GO Resultado 1998-11-29 00:00:00.000 (1 row(s) affected) Ejemplo 3 Este ejemplo retorna el nombre de usuario actual y la aplicación que el usuario está utilizando. El usuario en este ejemplo es un miembro de sysadmin. USE library SELECT user_name(), app_name() GO Resultado Dbo MS SQL Query Analyzer Ejemplo 4 Este ejemplo determina si la columna firstname en la tabla member de la base de datos library permite valores nulos. Un resultado de cero (falso) significa que los valores nulos no son permitidos, y un resultado de uno (verdadero) significa que los valores nulos son permitidos. Note que la función OBJECT_ID es incrustada en la función COLUMNPROPERTY. Esto le permite obtener el objeto id de la tabla member. USE library SELECT COLUMNPROPERTY(OBJECT_ID(‘member’), ‘firstname’, ‘allowsNull’) GO Resultado 0 (1 row(s) affected)

Unidad 4 - 10 - www.icam.com.mx

Page 11: Unidad4 sql

Guía rápida SQL Server 2000 División Empresas

Operadores Los operadores son símbolos que realizan cálculos matemáticos, concatenaciones de cadena, comparaciones entre columnas, constantes y variables. Pueden ser combinados y utilizados en condiciones de búsqueda. Cuando se combinan, el orden en el cual son procesados se basa en la prioridad establecida.

Tipos de operadores SQL Server soporta cuatro tipos de operadores: Aritméticos Los operadores aritméticos realizan cálculos con columnas numéricas o constantes. Transact-SQL soporta multiplicación (*), división (/), módulo (%), suma (+) y resta (-). Comparación Los operadores de relación comparan dos expresiones. Las comparaciones pueden ser entre variables, columnas y expresiones del mismo tipo. Los operadores de comparación se incluyen en la siguiente tabla. Operadores Significado = Igual a > Mayor que < Menor que >= Mayor o igual que <= Menor o igual que <> No igual que Concatenación de cadenas El operador de concatenación de cadenas (+) concatena valores de cadena. Lógicos Los operadores lógicos AND, OR y NOT permiten unir condiciones en la cláusula WHERE.

Unidad 4 - 11 - www.icam.com.mx

Page 12: Unidad4 sql

Guía rápida SQL Server 2000 División Empresas

Niveles de prioridad de los operadores Si utiliza múltiples operadores (lógicos o aritméticos) para combinar expresiones, SQL Server procesa los operadores en el orden de su prioridad, lo cual puede afectar el valor del resultado. Los operadores tienen la siguiente prioridad de (de más alto más bajo). Tipo Operador Símbolo Agrupar Agrupación primaria ( ) Aritmético Multiplicativos * / % Aritmético Aditivos - + Otros Concatenación + Lógico NOT NOT Lógico AND AND Lógico OR OR Expresiones Las expresiones son una combinación de símbolos y operadores que se evalúan para generar un simple valor. Pueden ser simples cómo es una constante, variable, columna o valor escalar o expresiones complejas creadas por la conexión de una o más expresiones simples con operadores. Ejemplo El siguiente ejemplo calcula el monto total de un producto en una orden, multiplica el precio unitario por la cantidad ordenada, y entonces se filtran los resultados para aquellos que el monto total es mayor de $10,000.00. USE northwind SELECT orderID, ProductID ,(UnitPrice * Quantity) as ExtendedAmount FROM [Order Details] WHERE (UnitPrice * Quantity) > 1000 GO Resultado OrderID ProductID ExtendedAmount 10353 38 10540.0000 10417 38 10540.0000 10424 38 10329.2000 10865 38 15810.0000 10889 38 10540.0000 10981 38 15810.0000 (6 row(s) affected)

Unidad 4 - 12 - www.icam.com.mx

Page 13: Unidad4 sql

Guía rápida SQL Server 2000 División Empresas

Elementos del lenguaje de control de flujo Transact-SQL contiene algunos elementos del lenguaje que controlan el flujo lógico. También contiene la función CASE que permite utilizar condiciones lógicas en una fila simple con una sentencia SELECT o UPDATE.

Nivel de sentencia Los siguientes elementos le permiten controlar el flujo lógico con un script: BEGIN ... END Blocks Estos elementos encierran una serie de sentencias. IF ... ELSE Blocks Estos elementos especifican que SQL Server deberá ejecutar la primera alternativa si la condición es verdadera. De lo contrario, SQL deberá ejecutar la segunda alternativa. WHILE Constructs Estos elementos ejecutar una sentencia repetidamente mientras la condición especificada es verdadera. Las sentencias BREAK y CONTINUE controlan la operación de las sentencias dentro del ciclo WHILE. Ejemplo 1 Éste ejemplo determina si un cliente tiene alguna orden antes de borrar el cliente de la lista. USE northwind IF EXISTS (SELECT * FROM orders WHERE customerid = ‘frank’) PRINT ‘*** El cliente no puede ser borrado ***’ ELSE BEGIN DELETE customers WHERE customerid = ‘frank’ PRINT ‘*** Cliente eliminado***’ END GO

Nivel de fila Una función CASE evalúa una lista de condiciones y devuelve como resultado una de las distintas expresiones posibles. CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END

Unidad 4 - 13 - www.icam.com.mx

Page 14: Unidad4 sql

Guía rápida SQL Server 2000 División Empresas

Ejemplo 2 El siguiente ejemplo declara una variable local, evalúa para ver si es igual a 4, 5, o 6, y si lo es, un contador a través de un ciclo WHILE determina si el valor actual es un número par o impar. DECLARE @n tinyint SET @n = 5 IF (@n BETWEEN 4 and 6) BEGIN WHILE (@n > 0) BEGIN SELECT @n AS ‘Numero’ ,CASE WHEN (@N % 2) = 1 THEN ‘IMPAR’ ELSE ‘PAR’ END AS ‘Type’

SET @n = @n – 1 END END ELSE PRINT ‘NO ANALIZADO’ GO Resultado Numero Tipo 5 IMPAR (1 row(s) affected) Numero Tipo 4 PAR (1 row(s) affected) Numero Tipo 3 IMPAR (1 row(s) affected) Numero Tipo 2 PAR (1 row(s) affected) Numero Tipo 1 IMPAR (1 row(s) affected)

Unidad 4 - 14 - www.icam.com.mx

Page 15: Unidad4 sql

Guía rápida SQL Server 2000 División Empresas

Palabras clave reservadas. SQL Server reserva ciertas palabras clave para su uso exclusivo.

• Nombres de identificadores que tienen significado especial o Palabras claves de Transact-SQL o Palabras claves de ANSI SQL-92 o Palabras claves de ODBC

• No utilice palabras claves reservadas para nombres de identificadores

Unidad 4 - 15 - www.icam.com.mx