Julián Castiblanco P. [email protected] Líder ITPros-DC MCITP Database Administrator SQL Server2008 MCTS Database Developer SQL Server 2008 Microsoft Certified Training
Julián Castiblanco [email protected]
Líder ITPros-DCMCITP Database Administrator SQL Server2008
MCTS Database Developer SQL Server 2008
Microsoft Certified Training
Primera Sesión:
Modelos Relacionales
Normalización
Ejemplo
Segunda Sesión:
Creación de Bases de datos
Creación de Tablas
Creación de restricciones
Introducción a Transact SQL
Ejemplo
Tercera Sesión:
Creación de Procedimientos
Creación de Vistas
Seguridad de Bases de datos
» Creación de Bases de Datos
» Creación de Tablas
» Creación de Restricciones
» Introducción a Transact SQL
Cliente
Servidor de BaseDe Datossqlservr.exe
Archivo de LogTransaccional
*.LDF
Archivo de Datos*.MDF, *. NDF
12 3 4
C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA
T1 T3
T4
T2
MDF, NDF
LDF
DistribuciónFísica
DistribuciónLógica
Filegroup 1
Filegroup 2
DatabaseLanguage
92
DDL
CREATE
DROP
ALTER
DML
SELECT ... FROM ... WHERE ...
INSERT INTO ... VALUES ...
UPDATE ... SET ... WHERE ...
DELETE FROM ... WHERE ...
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt
» CREATE DATABASE [Facturacion] ON PRIMARY
» ( NAME = N'Facturacion', FILENAME = N'C:\ProgramFiles (x86)\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Facturacion.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
» LOG ON
» ( NAME = N'Facturacion_log', FILENAME = N'C:\ProgramFiles (x86)\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Facturacion_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
» GO
» Creación de Bases de Datos
» Creación de Tablas
» Creación de Restricciones
» Introducción a Transact SQL
» USE Facturacion
» GO
» CREATE TABLE dbo.Producto
» (
» id smallint NOT NULL,
» name varchar(69) NOT NULL
» ) ON [PRIMARY]
» GO
» sp_help Producto
» GO
» ALTER TABLE dbo.Producto
» ADD precio numeric(12,2)
» go
Función de sistema para verificar estructura de
Objetos
Type From To
bigint -9,223,372,036,854,775,808 9,223,372,036,854,775,807
int -2,147,483,648 2,147,483,647
smallint -32,768 32,767
tinyint 0 255
bit 0 1
decimal -10^38 +1 10^38 –1
numeric -10^38 +1 10^38 –1
money -922,337,203,685,477.5808 +922,337,203,685,477.5807
smallmoney -214,748.3648 +214,748.3647
Numerics
Type From To
datetime (3.33 milliseconds accuracy)
Jan 1, 1753 Dec 31, 9999
smalldatetime (1 minute accuracy) nuevos Date/ Time
Jan 1, 1900 Jun 6, 2079
DATE, TIME, DATETIME2, and DATETIMEOFFSET /SQL SERVER 2008
Type Description
charFixed-length non-Unicode character data with a maximum length of 8,000 characters.
varcharVariable-length non-Unicode data with a maximum of 8,000 characters.
varchar(max)
Variable-length non-Unicode data with a maximum length of 231 characters (SQL Server 2005 only).
textVariable-length non-Unicode data with a maximum length of 2,147,483,647 characters.
Date &
Time
Character
Strings
Type From To
float -1.79E + 308 1.79E + 308
real -3.40E + 38 3.40E + 38
Approximate
Numerics
Type Description
binaryFixed-length binary data with a maximum length of 8,000 bytes.
varbinary
Variable-length binary data with a maximum length of 8,000 bytes.
varbinary(max)
Variable-length binary data with a maximum length of 231 bytes (SQL Server 2005 only).
imageVariable-length binary data with a maximum length of 2,147,483,647 bytes.
Binary
» Creación de Bases de Datos
» Creación de Tablas
» Creación de Restricciones
» Introducción a Transact SQL
Llave PrimariaTipo especial de restricción que identifica a una
o varias columnas que permiten identificar como único a un registro en una tabla.
Llave ForáneaEstablece y forza la relación entre tablas.
Ayudan a mantener la integridad referencial.
Llave Primaria» CREATE TABLE Ciudad (
» CiudadID int NOT NULL PRIMARY KEY,
» CiudadNombre varchar(40) NOT NULL)
» CREATE TABLE Person.EducationType
» (EducationTypeID int NOT NULL,
» EducationTypeNM varchar(40) NOT NULL)
» ALTER TABLE Person.EducationType
» ADD CONSTRAINT PK_EducationType
» PRIMARY KEY (EducationTypeID)
Cuando la tabla ya existe!!!
Llave Foránea
» CREATE TABLE Person.EmergencyContact (» EmergencyContactID int NOT NULL PRIMARY KEY,» BusinessEntityID int NOT NULL,» ContactFirstNM varchar(50) NOT NULL,» ContactLastNM varchar(50) NOT NULL,» ContactPhoneNBR varchar(25) NOT NULL)
» ALTER TABLE Person.EmergencyContact» ADD CONSTRAINT FK_EmergencyContact_Employee» FOREIGN KEY (BusinessEntityID)» REFERENCES HumanResources.Employee (BusinessEntityID)
Llave ArtificialSon llaves no propiamente del negocio
utilizadas normalmente para identificar a un registro como único en una tabla.
» CREATE TABLE Factura» (FacturaID int NOT NULL IDENTITY(1,1) PRIMARY KEY,» ClienteID int NOT NULL ,» VendedorID int NOT NULL,» fecha datetime NOT NULL DEFAULT GETDATE())
El documento no es la llave principal de la tabla, pero debe
ser único
Unique ConstraintAdemás de tener la llave primera,
podríamos requerir que algunas columnas fueran únicas en nuestra tabla.
» CREATE TABLE dbo.Cliente (» ClienteID int NOT NULL IDENTITY(1,1) PRIMARY KEY,» Nombre varchar(90) NOT NULL,» Documento varchar(90) NOT NULL UNIQUE)
Check Constraint
Valida que los datos a guardarse en una columna, cumplan ciertas reglas.
» CREATE TABLE Empleado(» EmpleadoID int NOT NULL PRIMARY KEY,» Nombre varchar(59) NOT NULL,» ProfesionID int NULL,» Salario numeric(12,2) NOT NULL CHECK (Salario > 1 AND GPA
<=10000000))
Default ConstraintSi no se ingresa valor al momento de ingresar el registro, el sistema guarda
uno por defecto.
» CREATE TABLE Empleado (» EmpleadoID int NOT NULL PRIMARY KEY,» Nombre varchar(90) NOT NULL,» FechaVinculacion smalldatetime NOT NULL DEFAULT GETDATE(),» Salario numeric(12,2) NOT NULL )
» Creación de Bases de Datos
» Creación de Tablas
» Creación de Restricciones
» Introducción a Transact SQL
SELECTSentencia que permite traer de la base de
datos la información almacenada en las tablas.
SELECT nombre,Documento,SalarioFROM dbo.Empleado
SELECT *FROM dbo.Empleado Devuelve
todas las columnas
SELECT…FROM…WHERELa clausula WHERE permite condicionar los
resultados recibidos de una consulta.
SELECT nombre,Documento,SalarioFROM dbo.EmpleadoWHERE Documento=80222075
SELECT *FROM dbo.EmpleadoWHERE Genero=‘F’AND Salario>5000000
Negación de CondiciónPermite negar condiciones en la clausula
WHERE.
SELECT *FROM dbo.EmpleadoWHERE NOTGenero=‘M’AND Salario>5000000
OPERADORES!< > EXISTS!= >= FREETEXT!> ALL IN< ANY IS<= BETWEEN LIKE<> CONTAINS NOT= ESCAPE SOME
SubconsultasPermiten que el resultado de una consulta sea
parte de la condición para otra consulta
SELECT DISTINCT s.PurchaseOrderNumberFROM Sales.SalesOrderHeader sWHERE EXISTS ( SELECT SalesOrderIDFROM Sales.SalesOrderDetailWHERE UnitPrice BETWEEN 1000 AND 2000 ANDSalesOrderID = s.SalesOrderID)
» https://www.microsoftmva.com/
» http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt
» SQL and Relational Theory. C.J. Date. Junio 2009
» SQL Server 2008 Transact-SQL Recipes. Joseph Sack. 2008