SQL SERVER 2008 -- Crear una Tabla

Anuncio
Página 1
SQL SERVER 2008
-- Crear una Tabla
CREATE TABLE nombre_Tabla
( nombreColumna tipoDatos [COLLATE<nombreIntercalación>]
[NULL | NOT NULL]
| nombreColumna AS expresiónColumnaCalculada
[,….n] )
USE tempdb
GO
CREATE TABLE clientes
(
cli_Nombre char(30),
cli_teléfono char(12),
cod_emp char(4)
)
CREATE TABLE clientes (Nombre char(30), teléfono char(12), cod_emp char(4))
-- Usando NULL / NOT NULL y COLLATE
USE tempdb
GO
CREATE TABLE Autos
( Aut_placa char(30) NOT NULL,
Aut_Marca char(12) COLLATE Greek_CI_AS_KS NOT NULL,
Aut_color char(4) NULL
)
INSERT INTO Autos VALUES ('AB2345','LADA','Azul ')
SELECT * FROM Autos
-- Tipos de Datos
USE tempdb
GO
CREATE TABLE alumno
(Carne char(8),
Nombre varchar(20),
Fecha_Nac datetime,
Sexo bit,
Ciclo smallint,
Foto image,
Indice numeric(4,2),
Observaciones text)
Página 2
INSERT INTO alumno (Carne, Nombre, Fecha_Nac,Sexo,Ciclo,Indice,Observaciones)
VALUES ('20003454','Carlos Angulo','12/31/99', 0 , 1 , 21.34,'este es primer ejemplo')
INSERT INTO alumno (Carne, Nombre, Fecha_Nac,Sexo,Ciclo,Indice,Observaciones)
VALUES ('20010054','Luisa Rojas','08/01/87', 1 , 2 , 11.03,'este es segundo ejemplo')
SELECT * FROM alumno
-- Usando una expresión para una columna calculada
CREATE TABLE misnotas
( nota1 int NOT NULL,
nota2 int NOT NULL,
promedio AS (nota1 + nota2)/2 )
GO
INSERT INTO misnotas values(7, 4)
SELECT * FROM misnotas
drop table misnotas
-- Usando IDENTITY(Inicio, incremento)
CREATE TABLE Clientes1
( cli_cod smallint IDENTITY(10,1) NOT NULL,
cli_nombre char(8)
)
INSERT INTO Clientes1 (cli_nombre) VALUES ('Ana')
INSERT INTO Clientes1 (cli_nombre) VALUES ('Paula')
SELECT * FROM Clientes1
drop table Clientes1
CREATE TABLE Clientes1
( cli_cod smallint IDENTITY NOT NULL, -- Por defecto es (1,1)
cli_nombre char(8)
)
-- Utilizando un identificador único
CREATE TABLE Global_Unico_Dato
(guid uniqueidentifier CONSTRAINT Guid_Default DEFAULT NEWID(),
nombre varchar(60),
CONSTRAINT Guid_PK PRIMARY KEY (Guid)
)
-- uniqueidentifier: Es un string que representa
-- un valor de identificación único global(GUID)
-- NEWID(): Es una función que crea un valor único de tipo uniqueidentifier
Página 3
INSERT Global_Unico_Dato (nombre) VALUES ( 'Cecilia')
INSERT Global_Unico_Dato (nombre) VALUES ( 'Jorge')
INSERT Global_Unico_Dato (nombre) VALUES ( 'Luís')
SELECT * FROM Global_Unico_Dato
sp_helpconstraint Global_Unico_Dato
DROP TABLE Global_Unico_Dato
-- Ejemplo
CREATE TABLE Clientes2
(cli_cod uniqueidentifier NOT NULL DEFAULT NEWID(),
cli_nombre varchar(30) NOT NULL,
cli_ruc char(8) NULL
)
INSERT INTO Clientes2 (cli_nombre, cli_ruc) VALUES ('Ana','23432345')
INSERT INTO Clientes2 (cli_nombre, cli_ruc) VALUES ('Paula','76453887')
SELECT * FROM Clientes2
drop table Clientes2
-- Claves primarias
CREATE TABLE Clientes1
(
cli_id int IDENTITY NOT NULL PRIMARY KEY CLUSTERED,
cli_nombre varchar(30) NOT NULL
)
EXEC sp_helpconstraint Clientes1
CREATE TABLE clientes2
(
cli_id int IDENTITY NOT NULL CONSTRAINT cli2_pk PRIMARY KEY
NONCLUSTERED,
cli_nombre varchar(30) NOT NULL,
localidad_num smallint NOT NULL
)
GO
EXEC sp_helpconstraint clientes2
GO
Página 4
CREATE TABLE clientes3
(
cli_id int IDENTITY NOT NULL,
cli_nombre varchar(30) NOT NULL,
CONSTRAINT cli3_PK PRIMARY KEY (cli_id)
) -- CLUSTERED es por defecto
GO
EXEC sp_helpconstraint clientes3
-- Claves foráneas
CREATE TABLE ordenes1
(
orden_id int NOT NULL IDENTITY PRIMARY KEY,
cli_id int NOT NULL REFERENCES Clientes1(cli_id),
fecha datetime
)
EXEC sp_helpconstraint ordenes1
CREATE TABLE ordenes2
(
orden_id int NOT NULL IDENTITY PRIMARY KEY,
cli_id int NOT NULL CONSTRAINT fk_ord2_Cli1 REFERENCES Clientes1(cli_id),
fecha datetime NULL
)
EXEC sp_helpconstraint ordenes2
CREATE TABLE ordenes3
(
orden_id int NOT NULL IDENTITY PRIMARY KEY,
cli_id int NOT NULL,
fecha datetime NULL,
CONSTRAINT fk_ord3_Cli1 FOREIGN KEY (cli_id) REFERENCES Clientes1(cli_id)
)
EXEC sp_helpconstraint ordenes3
-- Ejemplo de dos claves foráneas
CREATE TABLE clientes4
(
cli_id int IDENTITY NOT NULL CONSTRAINT cli4_pk PRIMARY KEY
NONCLUSTERED,
cli_nombre varchar(30) NOT NULL,
localidad_num smallint NOT NULL Unique
)
Página 5
GO
CREATE TABLE ordenes4
(
orden_id int NOT NULL IDENTITY
CONSTRAINT ORDEN_PK PRIMARY KEY NONCLUSTERED,
cli_num int NOT NULL,
cli_loc smallint NULL,
CONSTRAINT fk_ord4_Cli4ID FOREIGN KEY (cli_num)
REFERENCES clientes4 (cli_id),
CONSTRAINT fk_ord4_Cli4LO FOREIGN KEY (cli_loc)
REFERENCES clientes4 (localidad_num)
)
GO
EXEC sp_helpconstraint clientes4
EXEC sp_helpconstraint ordenes4
GO
-- Ejemplo de Clave primaria doble
CREATE TABLE master_clientes
(
cli_id int NOT NULL IDENTITY PRIMARY KEY,
cli_nombre varchar(50) NOT NULL
)
GO
CREATE TABLE cliente_localidad
(
cli_id int NOT NULL,
cli_loc smallint NOT NULL,
CONSTRAINT pk_cliente_localidad PRIMARY KEY (cli_id,cli_loc),
CONSTRAINT fk_cliente_localidad FOREIGN KEY (cli_id)
REFERENCES master_clientes (cli_id)
)
CREATE TABLE ordenes5
(
orden_id int NOT NULL IDENTITY PRIMARY KEY,
cli_id int NOT NULL,
cli_loc smallint NOT NULL,
CONSTRAINT fk_orden_master_cli FOREIGN KEY (cli_id)
REFERENCES master_clientes (cli_id),
CONSTRAINT fk_orden_cli_loc FOREIGN KEY (cli_id, cli_loc)
REFERENCES cliente_localidad (cli_id, cli_loc)
)
Página 6
-- Valores Únicos
CREATE TABLE clientes
(
cli_id int NOT NULL,
localidad_num smallint NULL UNIQUE NONCLUSTERED,
cli_NAME varchar(50) NOT NULL,
)
CREATE TABLE clientes
(
cli_id int NOT NULL,
localidad_num smallint NULL,
cli_nombre varchar(50) NOT NULL,
CONSTRAINT clientes_unq UNIQUE CLUSTERED (cli_id, localidad_num )
)
CREATE TABLE clientes_localidad2
(
cli_id int NOT NULL,
cli_localidad_numero int NOT NULL,
CONSTRAINT clientes_localidad_unique UNIQUE (cli_id, cli_localidad_numero)
) -- NONCLUSTERED es por defecto
GO
EXEC sp_helpconstraint clientes_localidad2
-- Valores por defecto
CREATE TABLE ordenes6
(
orden_id int NOT NULL IDENTITY PRIMARY KEY,
cli_id int NOT NULL,
fecha date DEFAULT (GETDATE())
cli_loc smallint NOT NULL DEFAULT 1,
slogin_id char(8) NULL CONSTRAINT def_loginID DEFAULT SUSER_SNAME(),
Observaciones text DEFAULT 'Ninguna'
CONSTRAINT fk_orden_master_cli FOREIGN KEY (cli_id)
REFERENCES master_clientes (cli_id),
CONSTRAINT fk_orden_cli_loc FOREIGN KEY (cli_id, cli_loc)
REFERENCES clientes_localidad (cli_id, cli_loc)
)
SELECT GETDATE() -- Retorna la fecha y hora del sistema actual.
SELECT SUSER_SNAME() -- Retorna el Nombre de identificación del login.
Página 7
-- Verificando valores
CREATE TABLE publicaciones
(
pub_cod char(4) NOT NULL
CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTERED
CHECK (pub_cod IN ('1389', '0736', '0877', '1622', '1756')
OR pub_cod LIKE '99[0-9][0-9]'), -- Del 9900 hasta el 9999
nombre varchar(40) NULL,
ciudad varchar(20) NULL,
codigo char(2) NULL,
pais varchar(30) NULL DEFAULT('PERU')
)
INSERT INTO publicaciones (pub_cod, nombre, ciudad, codigo)
VALUES ('9923','Anita','Piura','pi')
INSERT INTO publicaciones (pub_cod, nombre, ciudad, codigo)
VALUES ('1389','Pauli','Sullana','su')
SELECT * FROM publicaciones
drop table publicaciones
CREATE TABLE Trabajos
(
Tra_cod smallint IDENTITY(10,5) PRIMARY KEY CLUSTERED,
Tra_desc varchar(50) NOT NULL DEFAULT 'Nueva Posición',
min_valor tinyint NOT NULL CHECK (min_valor >= 10),
max_valor tinyint NOT NULL CHECK (max_valor <= 250)
)
INSERT INTO Trabajos (min_valor, max_valor) VALUES (20,45)
SELECT * FROM Trabajos
drop table Trabajos
CREATE TABLE empleado (
emp_id int NOT NULL PRIMARY KEY
CHECK (emp_id BETWEEN 0 AND 1000),
emp_nombre varchar(30) NOT NULL CONSTRAINT no_numeros
CHECK (emp_nombre NOT LIKE '%[0-9]%'),
mgr_id int NULL REFERENCES empleado(emp_id),
ingreso_fecha datetime NULL CHECK (ingreso_fecha >= CURRENT_TIMESTAMP),
ingresado_por int CHECK (ingresado_por IS NOT NULL),
CONSTRAINT validar_ingreso_by CHECK (ingresado_por = SUSER_SID(NULL) AND
ingresado_por <> emp_id),
CONSTRAINT validar_mgr CHECK (mgr_id <> emp_id OR emp_id=1),
CONSTRAINT fin_de_mes CHECK (DATEPART(DAY, GETDATE()) < 28)
)
GO
Página 8
EXEC sp_helpconstraint empleado
SELECT CURRENT_TIMESTAMP -- Esta función es equivalente a Getdate()
SELECT SUSER_SID() -- Retorna el numero de identificación del "user's login"
INSERT INTO empleado(emp_id, emp_nombre, ingreso_fecha, ingresado_por)
VALUES (1,'Luisa Reyes',getdate(),3)
INSERT INTO empleado VALUES
(2,'Federico Otero',1,getdate(),4)
INSERT INTO empleado VALUES
(7,'Juan Ramos', 1,
getdate(),0x0105000000000005150000003A0C5B29A44ACF1B19774D1AE9030000)
SELECT * FROM empleado
-- Usando la función USER_NAME() para una columna calculada
CREATE TABLE mitabladelogin
( Fecha datetime,
user1_id int,
usuario AS USER_NAME())
SELECT USER_NAME() -- Retorna el Nombre del usuario de la BD que esta en uso
INSERT INTO mitabladelogin VALUES (getdate(),'123')
SELECT * FROM mitabladelogin
Descargar