Database fundamental itprosdc_chapter2

25
Julián Castiblanco P. http://julycastiblanco.blogspot.com/ [email protected] MCT-MCITP-MCTS SQL Server 2008/2005 Líder ITPros-DC SESIÓN 2

Transcript of Database fundamental itprosdc_chapter2

Julián Castiblanco P.http://julycastiblanco.blogspot.com/

[email protected]

MCT-MCITP-MCTS SQL Server 2008/2005

Líder ITPros-DC

SESIÓN 2

CONTENIDO DEL CURSO

CONTENIDO DEL CURSO

• Tipos de Datos

• Creación de Tablas

• Creación de Vistas

• Creación de Procedimientos y funciones

Agenda Primera Sesión

Tipos de Datos

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

Tipos de Datos

http://msdn.microsoft.com/en-us/library/ms187745(v=sql.100).aspx

Tipos de Datos

http://msdn.microsoft.com/en-us/library/ms186724(v=sql.100).aspx

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

Entendiendo Tablas

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

Entendiendo Vistas

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.

Entendiendo Procedimientos Almacenados

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.