Sie sind auf Seite 1von 7

--Creando una Base de Datos con Filegroups

USE Master
/*select * from sysdatabases---para obtener informaciongeneral de todas
las bases de datos*/
IF EXISTS (SELECT * FROM sysdatabases WHERE name = 'ventas')
DROP DATABASE ventas
CREATE DATABASE Ventas
ON
PRIMARY ( NAME = 'Ventas_dat',
FILENAME = 'C:\Datos\DataPrincipal\ventas_dat.mdf',
SIZE = 20,
MAXSIZE = 50,
FILEGROWTH = 5 ), --crecimiento de 5mb
FILEGROUP Datos2
( NAME = 'Ventas2_dat',
FILENAME = 'C:\Datos\DataSecundaria\ventas2_dat.ndf',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 10% )
LOG ON
( NAME = 'Ventas_log',
FILENAME = 'C:\Datos\LogPrincipal\ventas_log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
USE Ventas
SELECT * FROM sysfilegroups /*muestra los grupos de trabajo del sistema
ventas y permite administrarlo*/
SELECT * FROM sysfiles --muestra el nombre de las bases de datos creadas
--Creando una tabla por defecto
CREATE TABLE Cliente(
CodigoCliente char(10),
NombreCliente varchar(60) )
sp_help Cliente /*esto es un procedimiento alamacenado del sistema ,me
muestra las caracteristicas de la tabla cliente*/
DROP TABLE Cliente
CREATE TABLE Cliente(
CodigoCliente char(10),
NombreCliente varchar(60) )
ON [PRIMARY]
sp_help Cliente
DROP TABLE Cliente
CREATE TABLE Cliente(
CodigoCliente char(10),

NombreCliente varchar(60) )
ON Datos2
/* "ON" especifica en que grupo de archivos queremos crear un tabla*/
sp_help Cliente
DROP TABLE Cliente
--Creando CONSTRAINTS -- DA RESTRICCIONES A DETERMINADOS CAMPOS
CREATE TABLE Cliente(
CodigoCliente char(10) not null PRIMARY KEY,
NombreCliente varchar(60) null,
RUC varchar(11) null CHECK( RUC >= 15000000000 ) UNIQUE,
LimiteCredito int null CHECK( LimiteCredito > 0 and LimiteCredito <
1000 ),
Direccion varchar(60) null DEFAULT 'Direccin Local',
Celular char(9) null CHECK( Celular LIKE '[0-9][0-9][-][0-9][0-9][09][0-9][0-9][0-9]')
)
ON Datos2
/*"CHECK" ME DA UNA RESTRICCION A UN VALOR
"UNIQUE" PARA QUE SENA VALORES NICOS Y NO ADMITA REPETIDOS
"DEFAULT" INDICA QUE SO INGRESA ALGUN DATO, VA A APARECER Direccion Local
"CHECK ...LIKE ME INDICA EL FORMATO QUE VA A ACEPTAR UN DETERMINADO
CAMPO"*/
SELECT * FROM syscomments /*PERMITE VISUALIZAR LOS CONSTRAINS QUE SE HAN
CREADO EN LA BD DE UNA DETERMINADA TABLA*/
INSERT INTO Cliente VALUES('001', 'ABC', 20345678912, 500, 'Lima 1', '99123456')
INSERT INTO Cliente VALUES('001', 'BBB', 20765432198, 400, 'Lima 1','97654987') --nO SE EJECUTA XQ HAY REPETICION DE PK
INSERT INTO Cliente VALUES('002', 'BBB', 20765432198, 400, 'Lima 1','97654987')
INSERT INTO Cliente VALUES('003', 'CCC', 10678912345, 800, 'Lima 1','98454546')--NO EJECUTA XQ EL RUC TIENE QUE SER MAYOR A 15000000000
INSERT INTO Cliente VALUES('003', 'CCC', 15678912345, 800, 'Lima 1','98454546')
INSERT INTO Cliente VALUES('004', 'DDD', 15678912345, 100, 'Lima 2','99546488')-- NO EJECUTA POR QUE REPITE EL RUC Y ESTE TIENE QUE SR UNICO
INSERT INTO Cliente VALUES('004', 'DDD', 15944686456, 100, 'Lima 2','99546488')
INSERT INTO Cliente VALUES('005', 'EEE', 20464654210, 1000, 'Lima 4','99879845')--NO EJECUTA XQ EL LIMETE ES TIENE Q SER MENOR A 1000
INSERT INTO Cliente VALUES('005', 'EEE', 20464654210, 990, 'Lima 4', '99879845')
INSERT INTO Cliente VALUES('006', 'FFF', 15354661234, -10, 'Lima 3', '97465448')--LIMITE NO PUEDE SER NEGATIVO
INSERT INTO Cliente VALUES('006', 'FFF', 15354661234, 10, 'Lima 3', '97465448')
INSERT INTO Cliente VALUES('007', 'GGG', 20146431356, 10, 'Lima 3', '97465448')
INSERT INTO Cliente VALUES('008', 'HHH', 20874646466, 450, 'Lima
1','98946546')--LE FALTA EL GUION AL CAMPO CELULAR
INSERT INTO Cliente VALUES('008', 'HHH', 20874646466, 450, 'Lima 1','98946546')

SELECT * FROM Cliente


INSERT INTO Cliente (CodigoCliente, NombreCliente) VALUES('009', 'III')
INSERT INTO Cliente (CodigoCliente, NombreCliente) VALUES('010', 'MMM')
SELECT * FROM Cliente
CREATE TABLE Factura(
Serie char(3) not null CHECK( Serie LIKE '[0][1-9][1-9]'),
Numero char(7) not null PRIMARY KEY (Serie, Numero),
FechaEmision datetime not null DEFAULT GETDATE(),
CodigoCliente char(10) REFERENCES Cliente(CodigoCliente)
)
ON Datos2
/*GETDATE REGISTRA LA FECHA DEL SISTEMA*/
INSERT INTO Factura VALUES('026', 1234567, '20031010', '001' )
SELECT * FROM Factura
DELETE FROM Cliente
DELETE Cliente
DROP TABLE Cliente
--Aadiendo columnas a la tabla Factura
--modificar
ALTER TABLE Factura
ADD Subtotal float null
SELECT * FROM Factura
--solo eliminar una columna que no sea un cosnterns o indice
ALTER TABLE Factura
DROP COLUMN Subtotal
SELECT * FROM Factura
--CUANDO UNA COLUMNA TIENE UN CONSTRAINS NO SE PUEDE ELIMINAR
ALTER TABLE Factura
ADD Subtotal decimal(10,4) null CHECK( Subtotal > 0 )
ALTER TABLE Factura
DROP COLUMN Subtotal
sp_help Factura
ALTER TABLE Factura
DROP CONSTRAINT CK__Factura__Subtota__0425A276
ALTER TABLE Factura
DROP COLUMN Subtotal
SELECT * FROM Factura
ALTER TABLE Factura

ADD Subtotal decimal(10,4) null DEFAULT 0 WITH VALUES


SELECT * FROM Factura
ALTER TABLE Factura
ADD IGV decimal(10,4) null DEFAULT 0 WITH VALUES CHECK( IGV > 0 )
ALTER TABLE Factura
ADD IGV decimal(10,4) null DEFAULT 0 WITH VALUES CHECK( IGV >= 0 )
SELECT * FROM Factura
ALTER TABLE Factura
ADD Total AS ( Subtotal + IGV ),
Estado char(1) null CHECK( Estado in ('I', 'C', 'A') )
SELECT * FROM Factura
INSERT INTO Factura (Serie, Numero, FechaEmision, CodigoCliente,
Subtotal,
IGV, Estado) VALUES( '027', '1122333', '20031010', '002', 10, 1.8, 'X')
INSERT INTO Factura (Serie, Numero, FechaEmision, CodigoCliente,
Subtotal,
IGV, Estado) VALUES( '027', '1122333', '20031010', '002', 10, 1.8, 'I')
SELECT * FROM Factura
ALTER TABLE Factura
DROP COLUMN Total
SELECT * FROM Factura
--Aadiendo CONSTRAINTS
DROP TABLE Cliente
DROP TABLE Factura
DROP TABLE Cliente
CREATE TABLE Cliente(
CodigoCliente char(10) not null,
NombreCliente varchar(60) null,
RUC varchar(15) null,
LimiteCredito int null,
Direccion varchar(60) null,
Celular char(9) null
)
ON Datos2
ALTER TABLE Cliente
ADD CONSTRAINT PK_Cliente_CodigoCliente
PRIMARY KEY (CodigoCliente)
sp_help Cliente
ALTER TABLE Cliente

DROP CONSTRAINT PK_Cliente_CodigoCliente


ALTER TABLE Cliente
ADD CONSTRAINT PK_Cliente_CodigoCliente
PRIMARY KEY NONCLUSTERED (CodigoCliente)
sp_help Cliente
ALTER TABLE Cliente
DROP CONSTRAINT PK_Cliente_CodigoCliente
ALTER TABLE Cliente
ADD CONSTRAINT PK_Cliente_CodigoCliente
PRIMARY KEY CLUSTERED (CodigoCliente)
ALTER TABLE Cliente
DROP CONSTRAINT PK_Cliente_CodigoCliente
ALTER TABLE Cliente
ADD CONSTRAINT PK_Cliente_CodigoCliente
PRIMARY KEY CLUSTERED (CodigoCliente) WITH FILLFACTOR = 100 --FILLFACTOR
define el factor de llenado
--para las tablas en moviemiento fillfactor debe estar en 10 o 20
--unidad minima de almacenacion es una pagina
--el indice fisico define el indice de las filas
sp_help Cliente
ALTER TABLE Cliente
DROP CONSTRAINT PK_Cliente_CodigoCliente
ALTER TABLE Cliente
ADD CONSTRAINT PK_Cliente_CodigoCliente
PRIMARY KEY CLUSTERED (CodigoCliente) WITH FILLFACTOR = 10 ON [PRIMARY]
sp_help Cliente
ALTER TABLE Cliente
ADD CONSTRAINT CK_Cliente_RUC
CHECK( RUC >= 15000000000 )
ALTER TABLE Cliente
ADD CONSTRAINT UQ_Cliente_RUC
UNIQUE (RUC)
ALTER TABLE Cliente
ADD CONSTRAINT CK_Cliente_LimiteCredito
CHECK( LimiteCredito > 0 and LimiteCredito < 100 )
ALTER TABLE Cliente
ADD CONSTRAINT DF_Cliente_Direccion
DEFAULT 'Direccion Local' FOR Direccion
ALTER TABLE Cliente
ADD CONSTRAINT CK_Cliente_Celular
CHECK( Celular LIKE '[0-9][0-9][-][0-9][0-9][0-9][0-9][0-9][0-9]')

CREATE TABLE Factura(


Serie char(3) not null,
Numero char(7) not null,
FechaEmision datetime not null,
CodigoCliente char(10),
Subtotal decimal(10,4),
IGV decimal(10,4),
Total decimal(10,4),
Estado char(1)
)
ON Datos2
ALTER TABLE Factura
ADD CONSTRAINT PK_Factura_Serie_Numero
PRIMARY KEY(Serie, Numero)
ALTER TABLE Factura
ADD CONSTRAINT CK_Factura_Serie
CHECK( Serie LIKE '[0][1-9][1-9]')
ALTER TABLE Factura
ADD CONSTRAINT DF_Factura_FechaEmision
DEFAULT GETDATE() FOR FechaEmision
ALTER TABLE Factura
ADD CONSTRAINT FK_Factura_CodigoCliente
FOREIGN KEY (CodigoCliente)
REFERENCES Cliente(CodigoCliente)
ALTER TABLE Factura
ADD CONSTRAINT CK_Factura_Total
CHECK(Total = Subtotal + IGV)
ALTER TABLE Factura
ADD CONSTRAINT CK_Factura_Estado
CHECK(Estado in ('I', 'C', 'A'))
INSERT INTO Factura
VALUES('001','1234567','20031010','123',100,18,119,'S'
INSERT INTO Factura
VALUES('011','1234567','20031010','123',100,18,119,'S'
INSERT INTO Factura
VALUES('011','1234567','20031010','123',100,18,118,'S'
INSERT INTO Factura
VALUES('011','1234567','20031010','123',100,18,118,'I'
INSERT INTO Factura
VALUES('011','1234567','20031010','001',100,18,118,'I'
SELECT * FROM Factura
CREATE TABLE Producto(
CodigoProducto char(3) not null PRIMARY KEY,
Descripcion varchar(60) null,
Precio decimal(10,3) null CHECK(Precio > 0),
Cantidad int null
)

)
)
)
)
)

CREATE TABLE FacturaDetalle(


Serie char(3) not null,
Numero char(7) not null,
Item int not null PRIMARY KEY(Serie, Numero, Item),
CodigoProducto char(3) not null REFERENCES Producto(CodigoProducto),
Cantidad int null
)
--Ingresar registros
ALTER TABLE FacturaDetalle
ADD CONSTRAINT FK_Factura_Detalle
FOREIGN KEY (Serie,Numero)
REFERENCES Factura(Serie,Numero)

Das könnte Ihnen auch gefallen