Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

quarta-feira, 5 de outubro de 2011

SQL Server 2008 - Modulo 02 - Curso 6232

--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

Related Posts Plugin for WordPress, Blogger...