--AULA 01 - Creating Data Types
CREATE DATABASE DB6232
GO
USE DB6232
GO
CREATE TABLE inflacao
(
dia SMALLDATETIME DEFAULT GETDATE(),
inflacao_dia FLOAT,
versao ROWVERSION --Antigo TIMESTAMP
)
GO
SELECT TOP 10 * FROM inflacao
INSERT INTO inflacao (inflacao_dia)
VALUES (0.33333), (1.09483)
--O valor gerado pelo tipo ROWVERSION é único no banco de dados
--Um novo ROWVERSION é gerado quando um INSERT ou UPDATE ocorre.
--Buscando o ROWVERSION atual do banco
SELECT @@DBTS
SELECT TOP 10 * FROM inflacao
--BEFORE
/*
*/
UPDATE inflacao
SET inflacao_dia = 0.55555
WHERE inflacao_dia = 0.33333
SELECT TOP 10 * FROM inflacao
--AFTER
/*
*/
--Tipo de dado TABLE
DECLARE @tabela TABLE
(
codigo int,
nome nchar(30)
)
INSERT INTO @tabela VALUES (1,'Rodrigo')
INSERT INTO @tabela VALUES (2,'Mario')
INSERT INTO @tabela VALUES (3,'Letícia')
SELECT TOP 10 * FROM @tabela
CREATE TABLE tipo_sql_variant
(
codigo int primary key,
sql_v sql_variant
)
GO
INSERT INTO tipo_sql_variant VALUES (1, 1)
INSERT INTO tipo_sql_variant VALUES (2, 1.0)
INSERT INTO tipo_sql_variant VALUES (3, '1')
INSERT INTO tipo_sql_variant VALUES (4, 0x01)
INSERT INTO tipo_sql_variant VALUES (5, 'Testando')
SELECT sql_v FROM tipo_sql_variant
CREATE TABLE varchar_max
(
codigo INT NOT NULL,
texto VARCHAR(MAX) NOT NULL
)
GO
INSERT varchar_max (codigo, texto)
VALUES (1, 'Estou testando o campo VARCHAR(MAX).' )
SELECT TOP 10 * FROM varchar_max
UPDATE varchar_max
SET texto.WRITE (' Adicionando mais texto.' , NULL, NULL)
WHERE codigo = 1
SELECT TOP 10 * FROM varchar_max
UPDATE varchar_max
SET texto.WRITE('Testamos', 0, 14)
WHERE codigo = 1
SELECT texto FROM varchar_max
WHERE codigo = 1
CREATE TABLE minha_tabela
(
NomeArquivo NVARCHAR(60),
TipoArquivo NVARCHAR(60),
Documento VARBINARY(MAX)
)
GO
INSERT INTO minha_tabela(NomeArquivo, TipoArquivo, Documento)
SELECT 'arq1.txt', '.txt',
* FROM OPENROWSET(BULK 'F:\BACKUP\arq1.txt', SINGLE_BLOB) AS Documento
GO
SELECT * FROM minha_tabela
EXEC sp_spaceused minha_tabela
CREATE TYPE dbo.codigo_pais
FROM char(2)
NOT NULL
CREATE TABLE pais
(
cod_country codigo_pais,
name_country char(20)
)
INSERT INTO pais VALUES ('BR','Brasil'),
('US','United States'), ('PT','Portugal')
SELECT TOP 10 * FROM pais
sp_help pais
DROP TYPE codigo_pais
ALTER TABLE pais
ALTER COLUMN cod_country CHAR(02) NOT NULL
sp_help pais
DROP TYPE codigo_pais
/*
1 = varchar(max), nvarchar(max), varbinary(max) and xml columns in the table
are stored out of row, with a 16-byte pointer to the root.
0 = varchar(max), nvarchar(max), varbinary(max) and xml values are stored
directly in the data row, up to a limit of 8000 bytes and as long as the
value can fit in the record. If the value does not fit in the record, a
pointer is stored in-row and the rest is stored out of row in the LOB
storage space.
Source: Books On Line
*/
USE AdventureWorks
GO
--Enable
EXEC sp_tableoption 'HumanResources.JobCandidate',
'large value types out of row', 1
--Disable
EXEC sp_tableoption 'HumanResources.JobCandidate',
'large value types out of row', 0
CREATE TABLE tabela_unique
(
coluna_unica UNIQUEIDENTIFIER DEFAULT NEWID(),
texto VARCHAR(10)
)
GO
INSERT INTO tabela_unique(texto) VALUES ('abc')
INSERT INTO tabela_unique VALUES (NEWID(), 'def')
GO
SELECT * FROM tabela_unique
CREATE TABLE DataHora
(
ID INT PRIMARY KEY,
Hora TIME DEFAULT GETDATE(),
Data DATE DEFAULT GETDATE(),
DataPequena SMALLDATETIME DEFAULT GETDATE(),
DataHora DATETIME DEFAULT GETDATE(),
DataHora2 DATETIME2 DEFAULT GETDATE(),
FusoHorario DATETIMEOFFSET DEFAULT GETDATE()
)
GO
INSERT INTO DataHora (ID) VALUES (1), (2), (3), (4), (5)
--Horário de Londres
INSERT INTO DataHora (ID, FusoHorario)
VALUES (6, '2010-02-25 11:35:00+02:00')
--Horário de Sydney na Austrália
INSERT INTO DataHora (ID, FusoHorario)
VALUES (7, '2010-02-25 11:35:00+10:00')
SELECT * FROM DataHora
--AULA 02 - Creating Partitioned Tables
--PASSO 1 - Criando o banco de dados
--Antes de executar o script abaixo, crie a seguinte pasta:
--F:\DADOS
USE [master]
GO
CREATE DATABASE TabelaParticionada
ON PRIMARY
(NAME='Data_Primary',
FILENAME= 'F:\DADOS\Data_Primary.mdf',
SIZE=5,
MAXSIZE=50,
FILEGROWTH=1 ),
FILEGROUP [FG2]
(NAME = 'Data_FG2',
FILENAME = 'F:\DADOS\Data_FG2.ndf',
SIZE = 5MB,
MAXSIZE=50,
FILEGROWTH=1 ),
FILEGROUP [FG3]
(NAME = 'Data_FG3',
FILENAME = 'F:\DADOS\Data_FG3.ndf',
SIZE = 5MB,
MAXSIZE=50,
FILEGROWTH=1 ),
FILEGROUP [FG4]
(NAME = 'Data_FG4',
FILENAME = 'F:\DADOS\Data_FG4.ndf',
SIZE = 5MB,
MAXSIZE=50,
FILEGROWTH=1)
GO
--Verificando os arquivos do banco de dados PartitionDB
sp_helpdb TabelaParticionada
--PASSO 2 - Criando a Partition Function
USE TabelaParticionada
GO
CREATE PARTITION FUNCTION pf_range_id (int)
AS RANGE LEFT FOR VALUES (100000)
--PASSO 3 - Criando e associando a Partition Function com a Partition Scheme
CREATE PARTITION SCHEME ps_esquema_FG2_FG3
AS PARTITION pf_range_id
TO (FG2, FG3)
--PASSO 4 - Criando a tabela particionada
CREATE TABLE vendas
(
id int NOT NULL,
data datetime,
valor money
)
ON ps_esquema_FG2_FG3 (id)
--Verificando em qual Filegroup a tabela foi criada
sp_help vendas
--PASSO 5 - Inserindo dados na tabela
INSERT INTO vendas VALUES (1, getdate(), 1.99)
INSERT INTO vendas VALUES (2, getdate(), 2.99)
INSERT INTO vendas VALUES (100, getdate(), 3.99)
INSERT INTO vendas VALUES (100000, getdate(), 4.99)
INSERT INTO vendas VALUES (100001, getdate(), 5.99)
INSERT INTO vendas VALUES (100002, getdate(), 5.99)
INSERT INTO vendas VALUES (100003, getdate(), 5.99)
SELECT TOP 20 * FROM vendas
--Onde estão os registros
SELECT *, $PARTITION.[pf_range_id](id) AS [Partição #]
FROM vendas
--Informações sobre as Partitions
SELECT * FROM sys.partitions
WHERE OBJECT_ID = OBJECT_ID('vendas')
Nenhum comentário:
Postar um comentário