Está en la página 1de 14

Tipo de datos sp_addtype nmeros telefnicos no son sometidos a operaciones aritmticos asi como fechas (cadena o numricos-datetime(se convierte

a una cadena numrico parte entera y parte decimal)) nvarchar(cadenas variables o constantes-los vacios no ocupan espacio los espacios vacias) char(cadena constante-los vacios ocupan espacio) ejemplos:
--creacion de tipo de datos definidos por el usuario use master; go EXEC sp_addtype ssn,'varchar(11)','not null'; go use master; go EXEC sp_addtype birthay,datetime,'null'; go use master; go EXEC sp_addtype telephone,'varchar(24)','null'; go EXEC sp_addtype fax,'varchar(24)','null';

Creacion de table con alias definidos por el usuario

use master; go if OBJECT_ID('CarteraCliente') is not null drop table CarteraCliente; go create table CarteraCliente( codigo int constraint pk_cod primary key identity(100,1), honomastico birthay, aximil fax, tlfCia telephone );

--auscultar objetos exec sp_columns @table_name='CarteraCliente' exec sp_helpconstraint @objname='CarteraCliente'

Eliminar un tipo de datos alias No podemos eliminar el objeto porque esta sieno usado tendriamos que eliminar la refrecnai primero

Ejemplo : use master; GO EXEC sp_droptype 'birthay'; go

En cambio ssn que es un dato no usado lo vamos a poder eliminar


use master; GO EXEC sp_droptype 'ssn'; go

Ahora vamos a crear una base de datos y usaremos datos creados Ojo(cualquier objeto creado a travs de la base de datos model va a heredar las dems bases de datos en este caso los tipo de datos que creamos )
use model; go EXEC sp_addtype ID,smallint,'not null'; go EXEC sp_addtype DNI,'char(8)','not null'; go EXEC sp_addtype TLF,'char(9)','null'; go

--Crear Db de usuario use Master; go if DB_ID('ContactoDB')is not null

drop database ContactoDB; go create database ContactoDB on ( name=ContactoDB_dat, filename='C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\ContactoDB_dat.mdf' ) Go

/* creacion de tablas-------------Configurar UDT con objetos relacionales */ use ContactoDB if OBJECT_ID('Agenda') is not null drop table Agenda; go create table Agenda( identificador id primary key identity, cliente varchar(50) not null, docIdentidad DNI, TlfCasa TLF ); ------Agregar datos usando vista------if exists(select TABLE_NAME from INFORMATION_SCHEMA.VIEWS where TABLE_NAME='v_agregarEnAgenda') drop view v_agregarEnAgenda; go create view v_agregarEnAgenda as select cliente, docIdentidad, TlfCasa from ContactoDB.dbo.Agenda go --Insertar datos usando : v_agregarEnAgenda insert into v_agregarEnAgenda values('Ancieta Ruiz','11223344','555566660'); insert into v_agregarEnAgenda values('Hurtado Diaz','22334455','666677770'); insert into v_agregarEnAgenda values('Gutierrez Hugaz','33445566','777788800'); --agregando un dato mas insert into v_agregarEnAgenda values('Barrera lazo','44556677','888888800'); --examinar datos select * from ContactoDB.dbo.v_agregarEnAgenda

select * from ContactoDB.dbo.Agenda

Indices
--creando indices para tablas bases use Northwind; go if exists(select name from sys.indexes where name=N'IDX_Customers_contactName') drop index IDX_Customers_contactName on Northwind.dbo.Customers go create index IDX_Customers_contactName on Northwind.dbo.Customers(contactname); go

Ojito :Los clustered son uno por tabla

Viendo los objetos con plan de ejecucin

Chequenado ndice
--sale ordenado porque el inidce de ContactName select ContactName from Northwind.dbo.Customers

--creando indices para tablas bases pais y ciudad noclustered use Northwind; go if exists(select name from sys.indexes where name=N'IDX_Customers_Country_City') drop index IDX_Customers_Country_City on Northwind.dbo.Customers go create nonclustered index IDX_Customers_Country_City on Northwind.dbo.Customers(Country,City); go ---Auscultar obj. View: DX_Customers_Country_City select * from Northwind.dbo.Customers;---viendo el indice select Country,City from Northwind.dbo.Customers;--

Otra creacion de indice


use ContactoDB; go if exists(select name from sys.indexes where name=N'IDX_Agenda_Cliente') drop index IDX_Agenda_Cliente on ContactoDB.dbo.Agenda; go create unique index IDX_Agenda_Cliente on ContactoDB.dbo.Agenda(cliente); go ---Auscultar obj. View: DX_Customers_Country_City select name from sysindexes where name ='IDX_Agenda_Cliente' --viendo el indice select identificador,cliente from ContactoDB.dbo.Agenda --como vemos mantiene el indice de cliente ordenado

Ignorando dato duplicado


use ContactoDB; go create table #TestAgenda( C1 int primary key, C2 NVARCHAR(50) --C3 DNI, --C4 TLF ); CREATE UNIQUE INDEX IDX_Test_cliente ON #TestAgenda(C2) with(IGNORE_DUP_KEY=ON); GO INSERT INTO #TestAgenda values(1,N'Ancieta Ruiz'); insert into #TestAgenda select identificador,cliente from ContactoDB.dbo.Agenda; go select * from #TestAgenda select COUNT(*)as "numero de rows" from #TestAgenda go drop table #TestAgenda

También podría gustarte