Database fundamental itprosdc_chapter2
-
Upload
julian-castiblanco-p -
Category
Technology
-
view
872 -
download
0
Transcript of Database fundamental itprosdc_chapter2
Julián Castiblanco P.http://julycastiblanco.blogspot.com/
MCT-MCITP-MCTS SQL Server 2008/2005
Líder ITPros-DC
SESIÓN 2
• Tipos de Datos
• Creación de Tablas
• Creación de Vistas
• Creación de Procedimientos y funciones
Agenda Primera Sesión
Tipos de Datos
Toda Columna, variable, expresión o parámetro tiene un tipo de dato
Numéricos Exactos
Numéricos Aproximados
Fecha y Hora
Texto
Texto no-unicode
Cadenas Binarias
Otros Tipos
Tipos de Datos por Categoría
Tipos de Datos
• Exact numerics: bigint, numeric, bit, smallint, decimal, smallmoney, int, tinyint, money
• Unicode character strings: nchar, nvarchar, ntext• Approximate numerics: float, real • Binary strings: binary, varbinary, image• Date and time: date, datetimeoffset, datetime2,
smalldatetime, datetime, time • Other data types: cursor, timestamp, hierarchyid,
uniqueidentifier, sql_variant, xml, table• Character strings: char, varchar, text
http://go.microsoft.com/fwlink/?LinkID=127223
Escenario
Pamela quiere diseñar una base para almacenar información sobre todos los perfumes y splash que hay en el mercado; con el fin de almacenar información detallada como tipo de aroma, precio, ,cantidad, tamaño, casa, nombre, y lugar para conseguirlo.
1. Qué tipo de campo debería usar para almacenar el nombre del producto?1. Char, varchar2. Name3. Integer
2. Cual tipo de dato para almacenar la cantidad en onzas ?1. Float2. Integer3. Tiny
3. En que tipo de dato almacenaría el precio del producto?1. Money2. Int3. Float
ANSI SQL
Nombre Comentarios
SQL-86 Primera publicación hecha por ANSI. Confirmada por ISO en 1987.
SQL-89 Revisión menor.SQL-92 Revisión mayor.
SQL:1999Se agregaron expresiones regulares, consultas recursivas (para relaciones jerárquicas), triggers y algunas características orientadas a objetos.
SQL:2003Introduce algunas características de XML, cambios en las funciones, estandarización del objeto sequence y de las columnas autonumericas. (Ver Eisenberg et al.: SQL:2003 Has Been Published.)
SQL:2006
ISO/IEC 9075-14:2006 Define las maneras en las cuales el SQL se puede utilizar conjuntamente con XML. Define maneras de importar y guardar datos XML en una base de datos SQL, manipulándolos dentro de la base de datos y publicando el XML y los datos SQL convencionales en forma XML
SQL:2008Permite el uso de la cláusula ORDER BY fuera de las definiciones de los cursores. Incluye los disparadores del tipo INSTEAD OF. Añade la sentencia TRUNCATE. (Ver [1].)
http://es.wikipedia.org/wiki/SQL
Tablas
• Son el objeto básico de las bases de datos.
• Deberá proveer un nombre, (un esquema), el nombre de las columnas y el tipo de datos.
• De ser necesario definir una llave primaria (esto forzará a que hayan registros únicos.
• Definir que columnas podrán tener valores nulos.
Tablas
CREATE TABLE dbo.Products (
ProductID int PRIMARY KEY NOT NULL, ProductName varchar(25) NOT NULL,
Price money NULL,
ProductDescription text NULL)
GO
Tablas
ALTER TABLE dbo.Products
ADD Reference varchar(29) NOT NULL
ALTER TABLE Production.TransactionHistoryArchiveWITH NOCHECK ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID) WITH (FILLFACTOR = 75, ONLINE = ON, PAD_INDEX = ON); GO
Escenario
Pamela ya tiene claro los tipos de datos que utilizará para su tabla. Ella planea utilizar las propiedades ANSI SQL y planea reutilizar lo aprendido anteriormente:
1. ANSI SQL se refiere a un conjunto de reglas que:1. Decide si un campo puede contener datos nulos o no.2. Define el tamaño de todos los datos3. Gobierna la estructura y contenido de las sentencias.
2. Cual comando debe ser utilizado para crear una nueva tabla?1. CREATE TABLE perfumes ( nombre varchar(29), precio money, cantidad tinyint…2. ADD TABLE perfumes ( nombre varchar(29), precio money, cantidad tinyint…3. INSERT TABLE perfumes ( nombre varchar(29), precio money, cantidad tinyint…
3. Basados en la información de Pamela cual campo debería hacer parte de la llave primaria?
1. Cantidad2. Nombre3. Nombre y la cantidad
Vistas
• Una vista puede ser entendida como una tabla virtual generada de una consulta almacenada.
• Los datos accedidos mediante la consulta de la tabla NO están almacenados en la base de datos como un objeto. Lo que se almacena es la sentencia SELECT que genera el resultado.
• Desde SQL Server 2005 es posible crear vistas Indexadas las cuales crean un índice único agrupado para mejorar el rendimiento de las consultas hechas a las vistas.
CREATE VIEW [dbo].[Alphabetical list of products] ASSELECT Products.ProductName, Categories.CategoryNameFROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryIDWHERE (((Products.Discontinued)=0))
Vistas
• Es utilizada para:
– Restringir a usuarios a un set de datos específico.
– Restringir a usuarios a un conjunto específico de columnas.
– Unir columnas de multiples tablas y verlas como una sola tabla.
– Agregar información en vez de entregar detalles. Es posible utilizar funciones como SUM, AVG, MAX, MIN.
– Simplificar el código utilizado en los procedimientos almacenados.
Escenario
Pamela ha identificado los siguientes requerimientos para su aplicación:• Lista del nombre de productos con precio y cantidad (oz)• Crear una lista de productos por fabricante.• Calcular el costo promedio por casa, el costo máximo, el mínimo y el número de productos.
1. Cuál sería la mejor solución que debería implementar Pamela:1. Crear vistas separadas para cada requerimiento.2. Crear una nueva tabla para cada requerimiento.3. Crear una sola vista que pueda cumplir con todos los requerimientos.
2. Cuál es el beneficio más importante del uso de vistas?1. Restringir el acceso a la información de las tablas.2. Reducir el espacio utilizado en disco.3. Asegurar la integridad de la información.
3. Qué es una vista indexada?1. Es una vista construida sobre los índices de las tablas origen2. Una vista ordenada por un campo específico de la consulta.3. Una vista a la que se le ha creado un índice.
Procedimientos
• Son sentencias de T-SQL que se almacenan en el servidor. Utilizado para almacenar tareas repetitivas que se ejecutan eficientemente en el servidor.
• Aceptan parámetros y retornan parámetros cuando son invocados.
• Las reglas de negocio encapsuladas en un procedimiento puede ser cambiada en un solo objeto y todos los clientes utilizan el mismo objeto lo que asegura la consistencia en acceso y modificación de datos
• El modelo ER puede ser oculto a los usuarios finales.
• Se pueden otorgar privilegios de ejecución aún si estos no tienen acceso a las tablas y vistas referenciadas.
• Se reduce el tráfico de datos en la red.
• Puede mejorar el desempeño de las aplicaciones.
Procedimientos
• Existen propiedades adicionales para los procedimientos como las siguientes:– With Recompile: Cada vez que se ejecuta se recrea el plan de ejecución
– With Encryption: Oculta la lógica (TSQL statement) que genera el dataset de respuesta.
– Execute AS: La consulta interna en el procedimiento se ejecuta con los privilegios de un usuario diferente al que lo invocó.
CREATE Procedure pGetEmployeeLogin
@NationalIDNumber nvarchar(15)
AS
SELECT NationalIDNumber,
LoginID
FROM HumanResources.Employee
WHERE NationalIDNumber = @NationalIDNumber
GO
•
Procedimientos
• Porque mejoran el performance de las aplicaciones?
– Todo se basa en los planes de ejecución de SQL Server
Parcing Resolving Optimizing Compiling Executing
Cuando se ejecuta un procedimiento almacenado, este utiliza los planes de ejecución creados con anterioridad, lo que reduce el tiempo de ejecución de las consultas.
Bibliografía
• http://msdn.microsoft.com/en-us/library/ms365414.aspx
• http://go.microsoft.com/fwlink/?LinkID=127223
• http://msdn.microsoft.com/en-us/library/ms187745(v=sql.100).aspx
• http://msdn.microsoft.com/en-us/library/ms186724(v=sql.100).aspx
• http://es.wikipedia.org/wiki/SQL
• Course 2778A, Writing Queries Using Microsoft® SQL Server® 2008 Transact-SQL