0% encontró este documento útil (0 votos)
6 vistas55 páginas

SQL Lectura U1

El documento proporciona una introducción al lenguaje de programación Transact-SQL, que se basa en el estándar ANSI SQL-92 y ofrece funcionalidades ampliadas. Se describen los tipos de instrucciones de Transact-SQL, incluyendo las de definición, control y tratamiento de datos, así como los elementos de su sintaxis y las directrices para la creación de tipos de datos y tablas. Además, se abordan aspectos de la integridad de datos y la implementación de restricciones en las bases de datos.

Cargado por

valesmhpt02
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
6 vistas55 páginas

SQL Lectura U1

El documento proporciona una introducción al lenguaje de programación Transact-SQL, que se basa en el estándar ANSI SQL-92 y ofrece funcionalidades ampliadas. Se describen los tipos de instrucciones de Transact-SQL, incluyendo las de definición, control y tratamiento de datos, así como los elementos de su sintaxis y las directrices para la creación de tipos de datos y tablas. Además, se abordan aspectos de la integridad de datos y la implementación de restricciones en las bases de datos.

Cargado por

valesmhpt02
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 55

Introducción a

Transact-SQL
Introducción

 E lenguaje de programación Transact-SQL


 Tipos de instrucciones de Transact-SQL
 Elementos de la sintaxis de Transact-SQL
El lenguaje de programación Transact-SQL

 Implementa el estándar ISO del nivel básico de la


especificación ANSI SQL-92
 Se pueden ejecutar desde cualquier producto que
cumpla los requisitos básicos
 Incluye una funcionalidad ampliada
 Tipos de instrucciones de Transact-SQL

 Instrucciones del Lenguaje de definición de datos


 Instrucciones del Lenguaje de control de datos
 Instrucciones del Lenguaje de tratamiento de datos
Instrucciones del Lenguaje de definición de datos

 Definen los objetos de la base de datos


 CREATE nombreObjeto
 ALTER nombreObjeto
 DROP nombreObjeto
 Deben tener los permisos adecuados

USE northwind
CREATE TABLE customer
(cust_id int, company varchar(40),
contact varchar(30), phone char(12) )
GO
Instrucciones del Lenguaje de control de datos

 Establecer o cambiar los permisos


 GRANT
 DENY
 REVOKE
 Deben tener los permisos adecuados

USE northwind
GRANT SELECT ON products TO public
GO
Instrucciones del Lenguaje de tratamiento de datos

 Las instrucciones DML se utilizan para cambiar datos o


recuperar información
 SELECT

 INSERT

 UPDATE

 DELETE

 Deben tener los permisos adecuados

USE northwind
SELECT categoryid, productname, productid, unitprice
FROM products
GO
 Elementos de la sintaxis de Transact-SQL

 Directivas de proceso  Funciones del sistema


por lotes
 Operadores
 Comentarios
 Expresiones
 Identificadores
 Elementos del lenguaje
 Tipos de datos de control de flujo
 Variables  Palabras clave
reservadas
Directivas de proceso por lotes

 GO
 Envía lotes de instrucciones de Transact-SQL a las
herramientas y utilidades
 No se trata, realmente, de una instrucción de
Transact-SQL
 EXEC
 Ejecuta una función definida por el usuario, un
procedimiento de sistema, un procedimiento
almacenado definido por el usuario o un procedimiento
almacenado extendido
 Controla la ejecución de una cadena de caracteres
dentro de un lote de Transact-SQL
Comentarios

 Comentarios de línea Ejemplo 1


SELECT productname
, (unitsinstock - unitsonorder) -- Calcula el inventario
, supplierID
FROM products
GO

 Comentarios de bloque Ejemplo 3


/*
Este código devuelve todas las filas de la tabla
products y muestra el precio por unidad, el precio
aumentado en un 10 por ciento y el nombre del producto.
*/
USE northwind
SELECT unitprice, (unitprice * 1.1), productname
FROM products
GO
 Identificadores

 Identificadores estándar
 El primer carácter debe ser un carácter alfabético
 Otros caracteres pueden incluir letras, números o símbolos
 Los identificadores que comienzan con un símbolo tienen
usos especiales
 Identificadores delimitados
 Se utilizan cuando los nombres contienen espacios
incrustados
 Se utilizan cuando partes de los nombres incluyen
palabras reservadas
 Deben encerrarse entre corchetes ([ ]) o dobles comillas (" ")
Directrices de denominación para los identificadores

 Poner nombres cortos


 Utilizar nombres significativos cuando sea posible
 Utilizar una convención de denominación clara y
sencilla
 Utilizar un identificador que distinga el tipo de objeto
 Vistas
 Procedimientos almacenados
 Hacer que los nombres de los objetos y de los usuarios
sean únicos
 Tabla sales y función sales
Tipos de datos

 Números  Variaciones de SQL


 Fechas  Texto e imagen
 Caracteres  Tablas
 Binario  Cursores
 Identificadores únicos  Tipos de datos definidos
(GUID) por el usuario
Variables

 Variable definida por el usuario en una instrucción


DECLARE @
 Valores asignados con una instrucción SET o SELECT @
 Las variables tienen el ámbito Local o Global

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
 Funciones del sistema

 Funciones de agregado
USE northwind
SELECT AVG (unitprice) AS AvgPrice FROM products
GO

 Funciones escalares
USE northwind
SELECT DB_NAME() AS 'database‘
GO

 Funciones de conjunto de filas


SELECT *
FROM OPENQUERY
(OracleSvr, 'SELECT name, id FROM owner.titles')
Ejemplos de función del sistema

Ejemplo 1
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

Style
ANSI: 1998.03.19
Japanese: 1998/03/19
European: 19 Mar 1998 16:34:40:616
Operadores

 Tipos de operadores
 Aritmético
 Comparación
 Concatenación de cadenas
 Lógico
 Niveles de precedencia de los operadores
Expresiones

 Combinación de símbolos y operadores


 Evaluación de valores escalares simples
 El tipo de datos del resultado depende de los
elementos que forman la expresión

SELECT OrderID, ProductID


,(UnitPrice * Quantity) as ExtendedAmount
FROM [Order Details]
WHERE (UnitPrice * Quantity) > 10000
GO
Elementos del lenguaje de control de flujo
Ejemplo 2
DECLARE @n tinyint
SET @n = 5
 Nivel de instrucción IF (@n BETWEEN 4 and 6)
BEGIN
 Bloques BEGIN … END WHILE (@n > 0)
BEGIN
 Bloques IF … ELSE SELECT @n AS 'Number'
,CASE
 Construcciones WHILE WHEN (@n % 2) = 1
THEN ‘ODD'
 Nivel de fila ELSE ‘EVEN'
END AS 'Type'
 CASE expresión SET @n = @n - 1
END
END
ELSE
PRINT ‘NO ANALYSIS‘
GO
Palabras clave reservadas

 Nombres de identificadores que tienen un significado


especial
 Palabras clave de Transact-SQL
 Palabras clave ANSI SQL-92
 Palabras clave reservadas de ODBC
 No utilice palabras clave reservadas para nombres de
identificadores
Creación de tipos de
datos y tablas
Introducción

 Creación de los tipos de datos


 Creación de tablas
 Generación de valores de columnas
 Generación de secuencias de comandos
 Creación de los tipos de datos

 Tipos de datos del sistema


 Creación y eliminación de tipos de datos definidos por
el usuario
 Directrices para especificar tipos de datos
Tipos de datos del sistema

 Numérico
 Entero
 Numérico exacto
 Numérico aproximado
 Moneda
 Fecha y hora
 Carácter y caracteres Unicode
 Binario
 Otros
Creación y eliminación de tipos de datos definidos
por el usuario

Creación

EXEC sp_addtype city, 'nvarchar(15)', NULL


EXEC sp_addtype region, 'nvarchar(15)', NULL
EXEC sp_addtype country, 'nvarchar(15)', NULL

Eliminación

EXEC sp_droptype city


Directrices para especificar tipos de datos

 Si la longitud de la columna varía, utilice uno de los


tipos de datos variables
 Use tinyint adecuadamente
 Para tipos de datos numéricos, use los decimales más
frecuentes
 Si el almacenamiento es superior a 8000 bytes, utilice
text o image
 Para la moneda utilice el tipo de datos money
 No utilice float y real como claves principales
 Creación de tablas

 Cómo SQL Server organiza los datos en filas


 Cómo SQL Server organiza los datos text, ntext e image
 Creación y eliminación de una tabla
 Agregar y quitar columnas
Cómo SQL Server organiza los datos en filas

Datos

Encabezado Datos fijos NB VB Datos variables

4 bytes
Bloque
nulo
Bloque
variable
Cómo SQL Server organiza los datos text, ntext e
image
Fila de datos
Puntero
de texto

Estructura raíz

Nodo intermedio Nodo intermedio

bloque 1 bloque 2 bloque 1 bloque 2


Creación y eliminación de una tabla

 Creación de una tabla


NULL o
Nombre de columna Tipo de datos
NOT NULL
CREATE TABLE dbo.Categories
(CategoryID int IDENTITY
(1,1) NOT NULL,
CategoryName nvarchar(15) NOT NULL,
Description ntext NULL,
Picture image NULL)

 Intercalación de columnas
 Especificación de NULL o NOT NULL
 Columnas calculadas
 Eliminación de una tabla
Agregar y quitar columnas

AGREGAR ALTER TABLE CategoriesNew


ADD Commission money null

Customer_name Sales_amount Sales_date Customer ID Commission

QUITAR
ALTER TABLE CategoriesNew
DROP COLUMN Sales_date
 Generación de valores de columnas

 Uso de la propiedad Identity


 Uso de la función NEWID y el tipo de datos
uniqueidentifier
Uso de la propiedad Identity

 Requisitos para utilizar la propiedad Identity


 Sólo se permite una columna de identidad por tabla
 Utilizar con tipos de datos integer, numeric y decimal
 Recuperar información acerca de la propiedad Identity
 Utilizar IDENT_SEED e IDENT_INCR para información
de definición
 Utilizar @@identity para determinar el valor más
reciente
 Administrar la propiedad Identity
Uso de la función NEWID y el tipo de datos
uniqueidentifier

 Estas características se utilizan juntas


 Asegurar valores únicos globales
 Utilizar con la restricción DEFAULT

CREATE TABLE Customer


(CustID uniqueidentifier NOT NULL DEFAULT NEWID(),
CustName char(30) NOT NULL)
Generación de secuencias de comandos

 Generación del esquema como una secuencia de comandos de


Transact-SQL
 Mantener una copia de seguridad
 Crear o actualizar una secuencia de comandos de desarrollo de la
base de datos
 Crear una prueba o un entorno de desarrollo
 Formar empleados recién contratados
 Qué se genera
 Toda la base de datos en un sólo archivo de comandos
 Sólo el esquema de las tablas
 El esquema de las tablas y los índices
Implementación de la
integridad de datos
Introducción

 Tipos de integridad de datos


 Exigir la integridad de los datos
 Definición de restricciones
 Tipos de restricciones
 Deshabilitación de restricciones
 Uso de valores predeterminados y reglas
 Decisión del método de implementación que va a
utilizar
Tipos de integridad de datos
Integridad de dominio
(columnas)

Integridad de entidad (filas)

Integridad referencial
(entre tablas)
Exigir integridad de los datos

 Integridad de datos declarativa


 Los criterios se definen en la definición del objeto
 Asegurada automáticamente por SQL Server
 Implementada mediante restricciones, valores
predeterminados y reglas
 Integridad de datos procedimental
 Los criterios se definen en una secuencia de comandos
 Asegurada mediante secuencia de comandos
 Implementada mediante desencadenadores y
prodedimientos almacenados
 Definición de restricciones

 Determinación del tipo de restricción que se va a utilizar


 Creación de restricciones
 Consideraciones para el uso de restricciones
Determinación del tipo de restricción que se va a
utilizar

Tipo de integridad Tipo de restricción


DEFAULT
Dominio CHECK
REFERENTIAL
PRIMARY KEY
Entidad
UNIQUE
FOREIGN KEY
Referencial
CHECK
Creación de restricciones

 Utilizar CREATE TABLE o ALTER TABLE


 Puede agregar restricciones a una tabla con datos
existentes
 Puede aplicar restricciones a una sola columna o a
varias columnas
 Una sola columna, se llama restricción de columna
 Varias columnas, se llama restricción de tabla
Consideraciones para el uso de restricciones

 Pueden cambiarse sin volver a crear una tabla


 Requieren comprobación de errores en aplicaciones y
transacciones
 Comprueban los datos existentes
 Tipos de restricciones

 Restricciones DEFAULT
 Restricciones CHECK
 Restricciones PRIMARY KEY
 Restricciones UNIQUE
 Restricciones FOREIGN KEY
 Integridad referencial en cascada
Restricciones DEFAULT

 Sólo se aplica a las instrucciones INSERT


 Sólo una restricción DEFAULT por columna
 No se puede utilizar con la propiedad IDENTITY o el tipo
de datos rowversion
 Permite que se especifiquen algunos valores
proporcionados por el sistema
USE Northwind
ALTER TABLE dbo.Customers
ADD
CONSTRAINT DF_contactname DEFAULT 'UNKNOWN'
FOR ContactName
Restricciones CHECK

 Se utilizan con las instrucciones INSERT y UPDATE


 Pueden hacer referencia a otras columnas en la misma
tabla
 No pueden:
 Utilizarse con el tipo de datos rowversion
 Contener subconsultas
USE Northwind
ALTER TABLE dbo.Employees
ADD
CONSTRAINT CK_birthdate
CHECK (BirthDate > '01-01-1900' AND BirthDate <
getdate())
Restricciones PRIMARY KEY

 Sólo una restricción PRIMARY KEY por tabla


 Los valores deben ser exclusivos
 No se permiten valores nulos
 Crea un índice exclusivo en las columnas especificadas

USE Northwind
ALTER TABLE dbo.Customers
ADD
CONSTRAINT PK_Customers
PRIMARY KEY NONCLUSTERED (CustomerID)
Restricciones UNIQUE

 Permite un valor nulo


 Permite varias restricciones UNIQUE en una tabla
 Definidas con una o más columnas
 Exigida con un índice único

USE Northwind
ALTER TABLE dbo.Suppliers
ADD
CONSTRAINT U_CompanyName
UNIQUE NONCLUSTERED (CompanyName)
Restricciones FOREIGN KEY
 Deben hacer referencia a una restricción PRIMARY KEY o
UNIQUE
 Proporcionan integridad referencial de una o de varias
columnas
 No crean índices automáticamente
 Los usuarios deben tener permisos SELECT o
REFERENCES en las tablas a las que se hace referencia
 Usa sólo la cláusula REFERENCES en la tabla de ejemplo
USE Northwind
ALTER TABLE dbo.Orders
ADD CONSTRAINT FK_Orders_Customers
FOREIGN KEY (CustomerID)
REFERENCES dbo.Customers(CustomerID)
Integridad referencial en cascada

NINGUNA CASCADA
Customers Customers
ACCIÓN CustomerID (PK)
CustomerID (PK)
1 1
INSERT new UPDATE CustomerID
CustomerID
CASCADA
Orders
CustomerID (FK) Orders
2 CustomerID (FK)
UPDATE old
CustomerID to new
CustomerID

Customers
CustomerID (PK)
3
DELETE old
CustomerID
 Deshabilitación de restricciones

 Deshabilitación de la comprobación de las restricciones


en los datos existentes
 Deshabilitación de la comprobación de las restricciones
al cargar datos nuevos
Deshabilitación de la comprobación de las
restricciones en los datos existentes

 Se aplica a las restricciones CHECK y FOREIGN KEY


 Utilice la opción WITH NOCHECK cuando agregue una
restricción nueva
 Utilizar si los datos existentes no cambian
 Se pueden cambiar los datos existentes antes de
agregar restricciones
USE Northwind
ALTER TABLE dbo.Employees
WITH NOCHECK
ADD CONSTRAINT FK_Employees_Employees
FOREIGN KEY (ReportsTo)
REFERENCES dbo.Employees(EmployeeID)
Deshabilitación de la comprobación de las
restricciones al cargar datos nuevos

 Se aplica a las restricciones CHECK y FOREIGN KEY


 Utilizar si:
 Los datos cumplen las restricciones
 Carga datos nuevos que no cumplen las restricciones

USE Northwind
ALTER TABLE dbo.Employees
NOCHECK
CONSTRAINT FK_Employees_Employees
Uso de valores predeterminados y reglas
 Como objetos independientes:
 Se definen una vez
 Pueden vincularse a una o más columnas
o a tipos de datos definidos por el usuario
CREATE DEFAULT phone_no_default
AS '(000)000-0000'
GO
EXEC sp_bindefault phone_no_default,
'Customers.Phone'

CREATE RULE regioncode_rule


AS @regioncode IN ('IA', 'IL', 'KS', 'MO')
GO
EXEC sp_bindrule regioncode_rule,
'Customers.Region'
Decisión del método de implementación que va a
utilizar

Componente de Costos de Antes o después


Funcionalidad
integridad de datos rendimiento de la transacción

Restricciones Media Baja Antes

Valores predetermi-
Baja Baja Antes
nados y reglas

Desencadenadores Alta Medio-alto Después

Tipos de datos,
Baja Baja Antes
Null/Not Null

También podría gustarte