Sie sind auf Seite 1von 36

SQL Server 2005

Bases de datos de SQL Server


2005
 Colección de tablas que almacenan datos
estructurados. Se compone de columnas
(atributos) y de filas (registros).
 Tipos:
 OLTP
 Data Warehouse

 Snapshot
Archivos de base de datos
 Cada base de datos tiene dos archivos a
nivel de sistema operativo:
 Un archivo de datos.
 Un archivo de registro.

 Tipos de archivos:
 Primario (.mdf)
 Secundario (.ndf)
 Registro de transacciones (.ldf)

 Los archivos de datos se pueden agrupar


en “filegroups”
Filegroups

 Tipos:
 Primario.
 Definido por el usuario.

 El filegroup primario contiene al archivo


de datos primario y a cualquier archivo
de datos secundario que no ha sido
colocado en otros filegroups.
Archivos y Filegroups
Crear Bases de datos

 Instrucción CREATE DATABASE


 Puede especificarse las características
de cada archivo de base de datos, así
como los filegroups que los contendrán.
 Utilice ALTER DATABASE para
modificar la definición de una base de
datos.
 Utilice DROP DATABASE para eliminar
una base de datos.
CREATE DATABASE
MiBase

CREATE DATABASE MiBase


Filegroup Primario
ON PRIMARY
( NAME = 'MiBase_Primario',
4 MB FILENAME = 'D:\Bases de Datos\MiBase_Primario.mdf',
SIZE = 4MB,
MAXSIZE = 10MB,
FILEGROWTH = 1MB ),
FILEGROUP Secundario1
Filegroup ( NAME = 'MiBase_Secundario1_Datos1',
Secundario1 FILENAME = 'D:\Bases de Datos\MiBase_Secundario1_Datos1.ndf',
SIZE = 1MB,
1 MB MAXSIZE = 10MB,
FILEGROWTH = 1MB ),
( NAME = 'MiBase_Secundario1_Datos2',
FILENAME = 'D:\Bases de Datos\MiBase_Secundario1_Datos2.ndf',
1 MB SIZE = 1MB,
MAXSIZE = 10MB,
FILEGROWTH = 1MB )
LOG ON
Archivo de Registro ( NAME = 'MiBase_Registro',
FILENAME = 'D:\Bases de Datos\MiBase_Registro.ldf',
SIZE = 1MB,
1 MB MAXSIZE = 10MB,
FILEGROWTH = 1MB )
GO
Páginas de datos

 La unidad fundamental de
almacenamiento de datos es la “Página”.
 Las páginas se numeran
consecutivamente dentro de cada
archivo de datos.
 El tamaño de cada página es de 8 KB
(128 páginas por MB).
 Los archivos de registro no contienen
páginas, solamente una serie de
registros.
Tipos de Páginas
 De Datos.
 De Índices.
 De Texto/Imagen
 Global Allocation Map y
Shared Global Allocation
Map
 Page Free Space
 Index Allocation Map
 Bulk Changed Map
 Differential Changed Map
Extensiones
 Unidad básica para la asignación de
espacio.
 Colección de 8 páginas contiguas (64 KB)
 Se alojan 16 Extensiones por MB.
 Tipos:
 Uniformes: todas las páginas tienen datos de un
mismo objeto.
 Mixtas: tienen páginas de datos de diferentes
objetos.
Objetos de una Base de datos de SQL
Server 2005

 Esquemas y Tablas.
 Columnas y Registros.
 Elementos de programación
(procedimientos almacenados,
funciones, desencadenadores,
ensamblados).
 Índices.
 Vistas.
Esquemas
 Un “Esquema” es una colección de elementos
de base de datos bajo un mismo espacio de
nombre.
 En SQL Server 2005, los esquemas son
independientes de los usuarios que los crean.
 Los nombres de objetos completamente
cualificados ahora requieren cuatro partes:
Servidor.BaseDeDatos.Esquema.Objeto
 El esquema predeterminado es “dbo”
 Cada usuario puede tener asignado un
esquema predeterminado distinto.
Crear Esquemas
 Instrucción: CREATE SCHEMA
 Permite crear un esquema, las tablas y
vistas que contendrá, así como asignar,
denegar y revocar permisos.
 Utilice ALTER
o DROP para CREATE
GO
SCHEMA Personal

CREATE SCHEMA Ventas


modificar o CREATE TABLE Pedido
(
eliminar un Numero int,
Fecha smalldatetime,
esquema IDCliente char(12)
)
existente. GO
Tablas

 Una tabla es un objeto de base de datos


que contiene datos.
 Están formadas por un conjunto de
columnas (atributos).
 Los datos están organizados en
formatos fila-columna.
 Cada fila de datos representa un
registro.
 Cada columna representa un campo.
Tipos de datos para columnas
Numéricos Bigint, Int, Smallint, Tinyint, Bit, Decimal,
Exactos Numeric, Money, Smallmoney

Numéricos
Float, Real
Aproximados

Fecha y Hora Datetime, Smalldatetime Otros

Cadenas de Cursor
Char, Varchar, Text
Caracteres Sql_variant

Cadenas de Table
Caracteres Nchar, Nvarchar, Ntext Timestamp
Unicode
Uniqueidentifier
Cadenas Xml
Binarias Binary, Varbinary, Image
Tipos de datos basados en Alias

 Instrucción CREATE TYPE. Reemplaza


a sp_addtype.
 Utilice DROP TYPE para eliminar un
alias de tipo de datos.

CREATE TYPE DNI


FROM char(8) NOT NULL
Tipos CLR definidos por el
usuario
 Definidos con cualquier lenguaje .NET
como una clase (Class) o estructura
(Structure).
 Antes de crearse el tipo, debe registrarse
el ensamblado con CREATE ASSEMBLY.
 Utilice CREATE TYPE para crear el tipo
haciendo referencia al ensamblado.
 Puede crearse directamente con Visual
Studio 2005 e instalarse en SQL Server
2005.
Registrando un tipo CLR
CREATE ASSEMBLY EnsambladoIP
FROM 'C:\MisTiposCLR\TipoIP.dll'
GO

CREATE TYPE IP
EXTERNAL NAME EnsambladoIP.[TipoIP.IP]
GO

DECLARE @IPPC IP
SET @IPPC = '0.0.0.0'
SET @IPPC.DireccionIP1 = 192
SET @IPPC.DireccionIP2 = 168
SET @IPPC.DireccionIP3 = 1
SET @IPPC.DireccionIP4 = 120
SELECT CAST(@IPPC AS Varchar) As IP
Crear una Tabla

 Instrucción CREATE TABLE


 Puede indicarse a qué esquema
pertenecerá la tabla.
 Utilice ALTER TABLE para modificar la
estructura de una tabla.
 Utilice DROP TABLE para eliminar la
tabla.
CREATE TABLE
CREATE TABLE Personal.Empleado
(
DNI DNI,
Apellidos varchar(50) NOT NULL,
Nombres varchar(50) NOT NULL,
FechaContratacion smalldatetime NOT NULL,
Salario decimal(9,2) NOT NULL
)
GO
Agregar y eliminar campos
 Utilice ALTER TABLE junto a ADD o
DROP COLUMN para agregar o eliminar
columnas.
 Se pueden agregar columnas NOT NULL
siempre que la tabla esté vacía.
ALTER TABLE Personal.Empleado
ADD FechaNacimiento smalldatetime NOT NULL

Empleado (Personal) Empleado (Personal)


DNI
ALTER TABLE Personal.Empleado DNI
Apellidos Apellidos
Nombres
FechaContratacion
DROP COLUMN Salario Nombres
FechaContratacion
Salario FechaNacimiento

Antes Después
IDENTITY &
UNIQUEIDENTIFIER
 IDENTITY (Propiedad): crear una columna
auto-numerada en la tabla.
 Sólo puede definirse en una columna por cada
tabla.
 Considere un valor inicial y un valor de incremento.
 No garantiza la unicidad de los valores 1
 UNIQUEIDENTIFIER (GUID)
 Tipo de dato de 16 bytes.
 Inicializado mediante la función NEWID() o desde
una cadena formateada.
 Garantiza la unicidad de los valores
Ejemplo: IDENTITY &
UNIQUEIDENTIFIER
CREATE TABLE Pedido
(
Numero int NOT NULL IDENTITY(1,1),
Fecha smalldatetime NOT NULL,
Cliente varchar(50) NOT NULL,
GUID uniqueidentifier NOT NULL
)
GO

DECLARE @Contador int


SET @Contador = 1
WHILE @Contador < 10
BEGIN
INSERT INTO Pedido (Fecha, Cliente, GUID)
VALUES (GETDATE(), CHAR(64 + @Contador), NEWID())
SET @Contador = @Contador + 1
END

SELECT * FROM Pedido


RESTRICCIONES
Integridad
de Dominio
CHECK TABLA
DEFAULT
FOREIGN KEY

TABLA

Integridad
de Entidad
PRIMARY KEY
UNIQUE CHECK
FOREIGN KEY
Integridad
Referencial
Restricción de Clave Primaria
 Instrucción PRIMARY KEY.
 Puede ser simple o compuesta.
 Formada sólo por columnas NOT NULL.
 Sólo una restricción de clave primaria por tabla.
 Crea un índice único.
 Al crearse una clave primaria, se verifica que:
 Las columnas que la conforman no acepten valores nulos.
 La combinación de valores para dichas columnas no se
duplique.
 No puede eliminar una clave primaria cuando:
 Ésta es referenciada por otra tabla (clave foránea).
 La tabla tiene un índice primario XML.
 Consulte la vista sys.key_constraints para obtener información de
las restricciones existentes.
Ejemplo: Restricción PRIMARY
KEY
CREATE TABLE Producto
( IdProducto int NOT NULL
CONSTRAINT PK_Producto_IdProducto PRIMARY KEY,
NombreProducto varchar(30) NOT NULL,
FechaIngreso smalldatetime NOT NULL,
)

CREATE TABLE Producto


( IdProducto int NOT NULL,
NombreProducto varchar(30) NOT NULL,
FechaIngreso smalldatetime NOT NULL,
CONSTRAINT PK_Producto_IdProducto PRIMARY KEY (IdProducto)
)

CREATE TABLE Producto


( IdProducto int NOT NULL,
NombreProducto varchar(30) NOT NULL,
FechaIngreso smalldatetime NOT NULL,
)
ALTER TABLE Producto
ADD CONSTRAINT PK_Producto_IdProducto PRIMARY KEY (IdProducto)
Restricción de Valor Único
 Instrucción UNIQUE.
 Puede ser simple o compuesta.
 Puede estar formada por columnas NULL.
 Más de una restricción de valor único por tabla.
 Puede ser referenciada por otra tabla (clave foránea)
 Al crearse una restricción de valor único, se
verifica que:
 La combinación de valores para dichas columnas no
se duplique.
 No puede eliminar una restricción de valor único
cuando:
 Ésta es referenciada por otra tabla (clave foránea).
 Si la columna es utilizada como clave para búsqueda
de texto completo (Full Text Search) en la tabla.
 Consulte la vista sys.key_constraints para obtener información de
las restricciones existentes.
Ejemplo: Restricción UNIQUE
CREATE TABLE Alumno
( Codigo char(6) NOT NULL,
Nombre varchar(20) NOT NULL
CONSTRAINT UQ_Alumno_Nombre UNIQUE,
Direccion varchar(30) NOT NULL,
)

CREATE TABLE Alumno


( Codigo char(6) NOT NULL,
Nombre varchar(20) NOT NULL,
Direccion varchar(30) NOT NULL
CONSTRAINT UQ_Alumno_Nombre UNIQUE(Nombre)
)

CREATE TABLE Alumno


( Codigo char(6) NOT NULL,
Nombre varchar(20) NOT NULL,
Direccion varchar(30) NOT NULL
)
ALTER TABLE Alumno
ADD CONSTRAINT UQ_Alumno_Nombre UNIQUE(Nombre)
Restricción de Valor por Defecto
 Instrucción DEFAULT.
 Utilizada con sentencias INSERT.
 Sólo una restricción de valor por defecto por
cada columna.
 No pueden definirse en columnas IDENTITY,
timestamp o ROWGUIDCOL.
 Utilice la cláusula DEFAULT VALUES en una
instrucción INSERT para forzar la inserción de
los valores por defecto definidos en las
columnas.
 Consulte la vista sys.default_constraints para obtener
información de las restricciones existentes.
Ejemplo: Restricción DEFAULT
CREATE TABLE Producto
( IdProducto int NOT NULL,
NombreProducto varchar(30) NOT NULL,
FechaIngreso smalldatetime CONSTRAINT
DF_Producto_FechaIngreso DEFAULT GETDATE()
)

CREATE TABLE Producto


( IdProducto int NOT NULL,
NombreProducto varchar(30) NOT NULL,
FechaIngreso smalldatetime NOT NULL,
)
ALTER TABLE Producto
ADD CONSTRAINT DF_Producto_FechaIngreso
DEFAULT GETDATE() FOR FechaIngreso

Utilice la instrucción DEFAULT en INSERT para forzar la inserción del valor por
defecto
INSERT INTO Producto VALUES (25, 'Leche Gloria', DEFAULT)
Restricción de Validación
 Instrucción CHECK.
 Utilice una expresión lógica para validar el valor
de una columna.
 Pueden existir múltiples restricciones de
validación para las columnas de una tabla.
 Sólo se comprueban en sentencias INSERT y
UPDATE.
 Evite la conversión de tipos en esta clase de
restricción.
 Consulte la vista sys.check_constraints para
obtener información de las restricciones
existentes.
Ejemplo: Restricción CHECK

CREATE TABLE Cliente


(
Dni char(8) NOT NULL,
Nombre varchar(30) NOT NULL,
Apellidos varchar(40) NOT NULL,
Sexo char(1) NOT NULL,
Salario smallmoney NOT NULL,

CONSTRAINT CK_Cliente_Dni CHECK


(Dni LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
CONSTRAINT CK_Cliente_Sexo CHECK (Sexo IN ('M','F')),
CONSTRAINT CK_Cliente_Salario CHECK
(Salario>0 And Salario<=2500)
)
Restricción de Clave Foránea
 Instrucción FOREIGN KEY.
 Referencia a restricciones PRIMARY KEY o
UNIQUE.
 Puede admitir valores nulos.
 Puede especificar acciones de integridad
referencial.
 Se recomienda no crear más de 253
restricciones de este tipo por tabla.
 Consulte la vista sys.foreign_keys para obtener
información de las restricciones existentes.
Ejemplo: Restricción FOREIGN
KEY
CREATE TABLE Cliente
(
DNI char(8) NOT NULL,
Nombre varchar(30) NOT NULL,
Apellidos varchar(40) NOT NULL,
Direccion varchar(10) NOT NULL,
Telefono varchar(10) NULL,

CONSTRAINT PK_Cliente_DNI PRIMARY KEY (DNI)


)
CREATE TABLE Cuenta
(
Numero int NOT NULL,
Saldo float NOT NULL DEFAULT 800,
TipoMoneda char(1) DEFAULT 'S',
DNI_Propietario char(8) NOT NULL,

CONSTRAINT PK_Cuenta_Numero PRIMARY KEY (Numero),


CONSTRAINT FK_Cuenta_Cliente
FOREIGN KEY (DNI_Propietario) REFERENCES Cliente(DNI)
)
Acciones de Integridad
Referencial
 Aplicadas en actualizaciones (UPDATE) y
eliminaciones (DELETE).
 Acciones (en filas relacionadas):
 NO ACTION (Predeterminada). Previene la
actualización o eliminación de filas en la tabla padre.
 CASCADE. Las filas correspondientes son
actualizadas o eliminadas cuando se actualiza o
elimina una fila de la tabla padre.
 SET NULL. Las columnas son establecidas en NULL
y las filas de la tabla padre son actualizadas o
eliminadas.
 SET DEFAULT. Las columnas son establecidas al
valor por defecto especificado y las filas de la tabla
padre son actualizadas o eliminadas.
Recursos e información
SQL Server 2005
http://www.microsoft.com/latam/sql/

SQL Server 2005 Express Edition


http://msdn.microsoft.com/sql/express/

SQL Server 2005 Express Edition Download


http://www.microsoft.com/downloads/details.aspx?familyid=220549b5-
0b07-4448-8848-dcc397514b41&displaylang=en

Videos MSDN sobre SQL Server 2005


http://www.microsoft.com/spanish/msdn/latam/video/sql
server.asp

Das könnte Ihnen auch gefallen