2. Seção 2: Tipos de dados e tabelas
• Aula 1: Tipos de dados;
• Aula 2: Tabelas;
• Aula 3: Tabelas particionadas;
• Lab: Criando tipos de dados e tabelas;
SQL Server - Módulo I 2
3. Aula 1: Tipos de dados
• O que são tipos de dados de sistema;
• Utilizando tipos de dados de sistema;
• O que são alias de tipos de dados;
SQL Server - Módulo I 3
4. Tipos de dados de sistema
• Tipos de dados definem o tipo de informação aceita por um objeto.
Exemplo: caracteres, inteiros, binários etc;
• Colunas, parâmetros e variáveis possuem um tipo de dados;
• Todos os dados armazenados no SQL Server devem ser compatíveis
com os tipos de dados de sistema;
SQL Server - Módulo I 4
bigint binary bit char CLR
cursor date datetime datetime2 datetimeoffset
decimal float hierarchyid image int
money nchar ntext numeric nvarchar
real rowversion smalldatetime smallint smallmoney
sql_variant table text time timestamp
tinyint varbinary varchar uniqueidentifier xml
5. Categorias de tipos de dados
• Numéricos exatos: decimal e numeric;
• Numéricos aproximados: float e real;
• Caracteres fixos: nchar;
• Caracteres variáveis: nvarchar;
• Data e hora: datetime e smalldatetime;
• Versionamento de linhas: timestamp;
• Grandes volumes de dados: text e image;
• Tamanhos máximos: varchar(max), nvarchar(max), varbinary(max);
SQL Server - Módulo I 5
6. Alias de tipos de dados
• São apelidos para tipos de dados de sistema;
• Podem ser usados quando múltiplas tabelas precisam armazenar o
mesmo tipo de dados. Exemplo: alias chamado ENDERECO para
NVARCHAR(200) NOT NULL;
• Os parâmetros do alias incluem seu nome, tipo de dados e null;
• Se o alias for criado na base Model, ele ficará disponível para todas
as bases de dados da instância;
SQL Server - Módulo I 6
7. Hands-on tipos de dados
SQL Server - Módulo I 7
USE AdventureWorks2017;
GO
CREATE TYPE ENDERECO FROM VARCHAR(200) NOT NULL;
GO
DECLARE @RUA ENDERECO;
SET @RUA = 'Avenida Brasil';
PRINT @RUA
DECLARE @NUMERO INT;
SET @NUMERO = 1500;
GO
DROP TYPE ENDERECO;
GO
8. Aula 2: Tabelas
• O que são tabelas?
• Tipos de tabelas;
• Criando tabelas;
• Gerando scripts T-SQL;
SQL Server - Módulo I 8
9. O que são tabelas?
• São objetos que armazenam todas as informações da base de dados;
• Uma tabela é uma coleção de colunas;
• Os dados são organizados no formato linha-e-coluna, de forma
similar a uma planilha do Excel;
SQL Server - Módulo I 9
10. Tipos de tabelas
• Além das tabelas “normais”, existem alguns tipos especiais de tabelas;
• As tabelas particionadas dividem dados horizontalmente em múltiplos
filegroups.
• Existem dois tipos de tabelas temporárias: locais e globais;
• O SQL Server armazena dados de configuração em tabelas de sistema;
SQL Server - Módulo I 10
11. Criando tabelas
• Uma tabela não pode possuir colunas com nomes iguais;
• Toda coluna precisa ter um tipo de dados definido;
• É possível determinar se a coluna aceita ou não valores nulos;
• Pode-se adicionar colunas computadas, do tipo identity
(autoincrementadas), timestamp (controle de versão) ou uniqueidentifier
(guid);
SQL Server - Módulo I 11
12. Gerando scripts
• O SQL Server Management Studio possui um recurso para gerar o script
de objetos da base de dados;
• Use o botão direito do mouse no Object Explorer e clique em Tasks >
Generate Scripts para abrir o utilitário de geração de scripts;
• É possível gerar scripts de múltiplos objetos de uma vez;
• Pode-se determinar configurações específicas, tais como permissões e
collation;
SQL Server - Módulo I 12
13. Hands-on tabelas
SQL Server - Módulo I 13
CREATE TABLE [dbo].[TabelaTeste](
[Codigo] [int] NOT NULL,
[Descricao] [nvarchar](60) NOT NULL,
[Observacoes] [nvarchar](max) NULL
)
GO
DROP TABLE [dbo].[TabelaTeste];
GO
14. Aula 3: Tabelas particionadas
• O que são tabelas particionadas?
• Funções de particionamento;
• Schemes de particionamento;
• Operações em tabelas particionadas;
SQL Server - Módulo I 14
15. O que são tabelas particionadas?
• São tabelas que permitem a divisão dos dados de forma horizontal;
• Os dados e os índices podem ser separados em múltiplos filegroups;
• As tabelas particionadas dão suporte aos mesmos recursos das tabelas não
particionadas;
• Pode-se obter ganhos de performance com tabelas particionadas desde
que elas tenham sido corretamente projetadas de acordo com sua
frequência de uso e recursos de hardware disponíveis;
SQL Server - Módulo I 15
16. Funções de particionamento
• As funções de particionamento definem os limites (fronteiras) dos
dados nas tabelas;
• Os limites podem ser definidos pela esquerda ou direita (LEFT ou
RIGHT);
SQL Server - Módulo I 16
Menor que 2003 Entre 2003 e 2004 Entre 2004 e 2005 Maior que 2005
CREATE PARTITION FUNCTION pf_OrderDate (datetime)
AS RANGE RIGHT
FOR VALUES ('2003-01-01', '2004-01-01', '2005-01-01')
17. Schemes de particionamento
• Os schemes de particionamento definem os filegroups das partições;
• Permitem o valor de filegroup NEXT. No exemplo abaixo, fg5 é o next;
SQL Server - Módulo I 17
Menor que 2003 Entre 2003 e 2004 Entre 2004 e 2005 Maior que 2005
fg1 fg2 fg3 fg4
CREATE PARTITION SCHEME ps_OrderDate
AS PARTITION pf_OrderDate
TO (fg1, fg2, fg3, fg4, fg5);
GO
18. Operações em tabelas particionadas
• Switch: troca uma tabela ou partição populada em uma tabela ou
partição vazia;
• Merge: mescla duas partições vizinhas em uma partição só partição.
Muito útil caso você deseje deletar uma partição;
• Split: divide uma partição em duas. Ou seja, cria uma nova partição a
partir de uma partição existente. Muito útil para adicionar uma nova
partição para dividir melhor a carga;
SQL Server - Módulo I 18
19. Hands-on tabelas particionadas
SQL Server - Módulo I 19
CREATE PARTITION FUNCTION pf_OrderDate (datetime)
AS RANGE RIGHT
FOR VALUES ('2003-01-01', '2004-01-01', '2005-01-01')
CREATE PARTITION SCHEME ps_OrderDate
AS PARTITION pf_OrderDate
TO (fg1, fg2, fg3, fg4, fg5);
CREATE TABLE dbo.PartitionTable (Id int, Description nvarchar(100), OrderDate datetime PRIMARY KEY)
ON ps_OrderDate (OrderDate) ;
INSERT INTOdbo.PartitionTable VALUES (1, 'Primeira linha', GETDATE());
INSERT INTOdbo.PartitionTable VALUES (2, 'Segunda linha', GETDATE());
INSERT INTOdbo.PartitionTable VALUES (3, 'Terceira linha', GETDATE());
SELECT * FROM dbo.PartitionTable
20. Lab: tabelas e tipos de dados
• Exercício 1: criando tipos de dados;
• Exercício 2: criando tabelas;
• Exercício 3: criando tabelas particionadas;
SQL Server - Módulo I 20