Neste artigo estarei demonstrando como trabalhar com o SQL Server 2008 junto com sua Ferramenta de gerenciamento de Banco de Dados. Explicarei alguns tópicos importantes e essenciais para administração e criação do mesmo.
Antes de começarmos, gostaria de informar que estaremos com o SQL Server Management Studio aberto, rodando em uma máquina local. No Pesquisador de Objetos (Object Explorer) encontraremos vários itens do Banco de Dados, especificamente neste artigo abordaremos alguns subitens do Item “Banco de Dados”. Segue abaixo as principais características do mesmo.
Criando uma Base de Dados
Podemos conferir o Item “Banco de Dados do Sistema”, onde ficam as informações internas do SQL Server, como por exemplo: o Banco “master”, “model”, “msdb” e “tempdb”. É importante informar que estes Bancos contêm dados internos do SQL Server que estaremos estudando em uma aula posterior. Voltando ao assunto, no nosso caso, criaremos uma Base de Dados de usuário, para isto clique com o botão direito sobre o item Bancos de Dados e escolha a opção “Novo Banco de Dados”.
Figura 01: Novo Banco de Dados.
Definimos assim no Nome do Banco de Dados: DB_THECLUB e automaticamente será criado um arquivo de Dados e um arquivo de Log. Este arquivo de Log contém registros das operações de atualização que ocorrem em um Banco de Dados, que no nosso caso irá possuir informações referentes ao Banco de Dados DB_THECLUB.
Esta mesma tarefa também poderia ser realizada por linha de comando, veja abaixo:
CREATE DATABASE [DB_THECLUB] ON PRIMARY
( NAME = N'DB_THECLUB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\DB_THECLUB.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'DB_THECLUB_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\DB_THECLUB_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
Explorando as propriedades do Banco DB_THECLUB
Clique com o botão direito em cima do DB_THECLUB e escolha Propriedades.
Figura 02: Propriedades do Banco de Dados.
Podemos encontrar algumas propriedades na região esquerda desta janela, detalhamos a seguir as principais características:
· Geral: Informações de Backup, Nome, Status, Proprietário Data da Criação, tamanho entre outras informações.
· Arquivos: Nesta aba encontraremos informações sobre o arquivo de Dados (.mdf) e o de Log (.ldf), tais como: Grupo de Arquivos, tamanho em MB, Tipo de Crescimento de dados, Caminho e Nome do Arquivo.
Podemos calcular os espaços utilizados para os Dados e Arquivos de Log. O SQL Server possui comandos e recursos para isto que estarei demonstrando. O comando abaixo nos retorna os seguintes resultados: Ver Figura 03.
DBCC SHOWFILESTATS
Figura 03: Resultado da Consulta SQL.
A coluna TotalExtents e UsedExtents indicam respectivamente o Total de MB reservado para os Dados e o Total utilizado.
Mas aí vem a pergunta, O que significa 48? O que significa 23? Estes números são chamados “Extents”. Uma unidade interna que SQL utiliza. Para sabermos o resultado em MB basta multiplicarmos por 64, tendo o seguinte resultado:
TotalExtents : 48 * 64 = 3072 (3 MB)
UsedExtents: 23 * 64 = 1472 (aproximadamente 1,5 MB)
Já o comando abaixo indica a utilização do Arquivo de Log.
DBCC SQLPERF(LOGSPACE)
Figura 04: Resultado da consulta SQL.
Neste caso, o resultado da instrução SQL trouxe todos os arquivos de Log utilizados na Base de Dados. A última linha indica a Base de Dados DB_THECLUB, temos a Coluna “Log Size” (que seria o tamanho em MB do arquivo) e a coluna “Log Space Used” ( que seria a Porcentagem do espaço utilizado).
Também podemos obter estes resultados utilizando outros recursos do SQL Server, na forma de gráficos. Para isto clique com o Botão direito sobre o Banco, escolha Relatórios e em seguida Relatórios Padrão. Notem que temos vários tipos de relatórios, no nosso caso específico escolheremos a Primeira Opção, “Relatório do uso do Disco”. Ver Imagem 05.
Figura 05: Relatório de Uso do Disco.
Neste Relatório podemos conferir com clareza todas as características acima criadas por linha de comando. Um detalhe interessante que vale a pena destacar é que podemos imprimir este tipo de Relatório.
· Grupos de Arquivos: Todo Banco de Dados possui um grupo de arquivo primário. Este grupo de arquivo contém o arquivo de dados primário e qualquer um dos arquivos secundários que não foram colocados em outros grupos de arquivos. Grupos de arquivos definidos pelo usuário podem ser criados para agrupar os arquivos de dados para fins administrativos, de alocação de dados e de posicionamento. No nosso caso usaremos apenas um grupo de arquivo Primário.
· Opções: Temos algumas propriedades importantes nesta aba, como: Tipos de Agrupamento, Modelo de Recuperação e Nível de Compatibilidade entre outras Opções. No Nível de Compatibilidade podemos mudar até para o SQL Server 2000.
Tabelas (Tables)
Depois da criação da Base Dados, a criação de tabelas é a parte mais importante de um Banco de Dados. É nela onde armazenamos as informações para consultas, alterações. Para criarmos as Tabelas podemos utilizar tanto a interface de Comando quanto a gráfica, inicialmente criaremos utilizando a interface gráfica, para isto Clique com o Botão direito em cima de Tabelas e escolha a Opção “Nova Tabela”. Na próxima janela aparecerão três colunas, com o Nome do campo, o Tipo de Campo e se permite nulo ou não. Em Tipo de Campos, observaremos que o SQL Server possui muitos tipos de dados para se trabalhar. É importante conhecer estes tipos de dados disponíveis, para utilizá-los da melhor forma no seu projeto de Banco de Dados. Usando corretamente o tipo de dado nas colunas das tabelas, possibilitará uma boa performance, escalabilidade e integridade da informação ali armazenada. Em seguida explicarei alguns campos mais utilizados no SQL Server 2008.
Tipos Numéricos:
- TINYINT: Armazena valores numéricos inteiros, com variações de 0 a 256.
- SMALLINT: Armazena valores numéricos inteiros, com variações de -32768 a 32767
- SMALLINT: Armazena valores numéricos inteiros, com variações de -32768 a 32767
- INT: Armazena valores numéricos inteiros, com variações de -2.147.483.648 a 2.147.483.647
- BIGINT: Armazena valores numéricos inteiros, com variações de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807
- MONEY: Armazena valores numéricos decimais, com variações de - 922,337,203,685,477.5808 a 922,337,203,685,477.5807
- FLOAT: Armazena valores numéricos aproximados com precisão de ponto flutuante, variando de -1.79E + 308 a 1.79E + 308
- REAL: Armazena valores numéricos aproximados com precisão de ponto flutuante, variando de -3.40E + 38 a 3.40E + 38
Para o campo NUMERIC(18,0), temos o armazenamento com precisão. O primeiro número entre os parênteses representa a quantidade de inteiros a serem armazenados e o segundo número indica a quantidade de casas decimais do número. Já o campo DECIMAL(18,0) Possui as mesmas funcionalidades do tipo NUMERIC, a diferença é que o DECIMAL faz parte do padrão ANSI e NUMERIC é mantido por compatibilidade.
Tipos Datas:
- DATETIME: Armazena data e hora, com precisão de centésimos de segundos.
- TIME: Armazena somente hora. Pode armazenar segundos até a fração de 9999999.
- DATE: Armazena somente data.
Já para os tipos Caracteres:
- CHAR(N): Armazena N caracteres fixos (até 8.000) no formato não Unicode. Independente da quantidade de caracteres utilizados, irá sempre armazenar o tamanho de caracteres do campo, sendo preenchido o restante com espaços em branco.
- VARCHAR(N): Armazena N caracteres (até 8.000) no formato não Unicode.
- TEXT: Armazena caracteres no formato não Unicode. Esse tipo de dado suporte até 2.147.483.647 caracteres e existem funções específicas para trabalhar com esse tipo de dado.
Foram apresentados apenas alguns dos principais tipos de campos do SQL Server. Importante ressaltar que existem muitos outros para serem estudados e utilizados.
Depois de conhecermos os tipos de campos, criaremos duas tabelas para nosso exemplo, uma de Pedidos de Vendas e outra dos itens do Pedido de Venda. Veja abaixo os campos utilizados:
Nome campo | Tipo campo |
COD_PED | INT |
COD_CLI | INT |
DAT_PED | DATETIME |
DAT_ENT | DATETIME |
TOT_PED | NUMERIC(18,2) |
Tabela: TB_ITE
Nome campo | Tipo campo |
COD_ITE | INT |
COD_PED | INT |
COD_PRO | INT |
QUA_PRO | NUMERIC(18,2) |
VAL_UNI | NUMERIC(18,2) |
TOT_PRO | NUMERIC(18,2) |
Um recurso interessante do SQL Server seria o de auto-incremento. Uma forma fácil para incrementar nosso campo inteiro, economizando código e outros recursos do Banco de Dados. Utilizaremos para os campos Primary Key (PK) de nossas tabelas (COD_PED da tabela TB_PED e COD_ITE da tabela TB_ITE). Para isto siga os passos abaixo:
Na criação dos campos, clique em Propriedades da Coluna e no item “Especificação de Identidade” e altere a propriedade para SIM.
· Incremento de Identidade: Valor a ser utilizado para o primeiro valor inserido na coluna, deixe o valor 1.
· Semente de Identidade: Valor a ser incrementado a cada nova inserção, deixe o valor 1.
Figura 06: Propriedades da Coluna.
Segue abaixo a linha de comando referente às tabelas criadas anteriormente:
Tabela TB_PED
CREATE TABLE [dbo].[TB_PED](
[COD_PED] [int] IDENTITY(1,1) NOT NULL,
[COD_CLI] [int] NULL,
[DAT_PED] [datetime] NULL,
[DAT_ENT] [datetime] NULL,
[TOT_PED] [numeric](18, 2) NULL,
CONSTRAINT [PK_CAD_PED] PRIMARY KEY CLUSTERED
(
[COD_PED] ASC
)
)
Tabela TB_ITE
CREATE TABLE [dbo].[TB_ITE](
[COD_ITE] [int] IDENTITY(1,1) NOT NULL,
[COD_PED] [int] NULL,
[COD_PRO] [int] NULL,
[QUA_PRO] [numeric](18, 2) NULL,
[VAL_UNI] [numeric](18, 2) NULL,
[TOT_PRO] [numeric](18, 2) NULL,
CONSTRAINT [PK_TB_ITE] PRIMARY KEY CLUSTERED
(
[COD_ITE] ASC
))
Neste caso de Mestre-Detalhe, devemos criar uma Chave Estrangeira na Tabela TB_ITE, para isto usaremos o comando ALTER TABLE para adicionarmos uma CONSTRAINT, observem o código abaixo.
ALTER TABLE TB_ITE
ADD CONSTRAINT FK_TB_ITE FOREIGN KEY (COD_PED) REFERENCES TB_PED (COD_PED)
Diagrama de Banco de Dados (Database Diagrams)
Para visualisar graficamente o relacionamento acima criado podemos usar o recurso de criação de diagramas. Clique em “Diagrama de Banco de Dados” e com o botão direito escolha “Novo Diagrama de Banco de Dados”. Em seguida aparecerá uma tela com as tabelas criadas anteriormente, selecione as duas e adicione na tela. Ver Imagem 07.
Figura 07: Diagrama de Banco de Dados.
Todos os relacionamentos criados aparecerão no nosso diagrama. Ressalto também que todas as alterações realizadas graficamente afetará a tabela internamente. Podemos criar relacionamentos facilmente clicando em um campo de uma tabela e arrastando para a outra. Uma tarefa que se torna muito fácil e produtiva.
Exibições (Views)
As Views são entidades que permitem a visualização do conteúdo das tabelas existentes no Banco de Dados, são “tabelas” sem existência física. Seria uma maneira alternativa de visualisação do conteúdo de uma ou de várias tabelas.
No SQL Server, temos várias Exibições do Sistema (System Views). Elas podem nos trazer muitas informações como de Colunas, Objetos, Parâmetros, Restrições, etc.
Criando uma View
O SSMSE nos fornece muitos recursos e facilidades para se trabalhar com Views. Podemos criar sem nenhuma linha de código, para isto clique com o botão direito e escolha “Nova Exibição”. No nosso caso faremos uma junção da tabela TB_PED com a TB_ITE usando um JOIN simples. Adicione as duas tabelas na tela e vejam que automaticamente o código é criado. Adicionaremos alguns campos das tabelas. Veja Figura 08.
Figura 08: View Criada.
Para Executar esta View é muito fácil, basta pressionar F5 ou clicar na exclamação vermelha na região superior da tela.
Esta View (Exibição) também poderia ser criada por linha de comando, acompanhe com a instrução SQL abaixo:
CREATE VIEW [dbo].[View_Pedido]
AS
SELECT
dbo.TB_ITE.COD_PRO,
dbo.TB_ITE.COD_ITE,
dbo.TB_ITE.QUA_PRO,
dbo.TB_ITE.VAL_UNI,
dbo.TB_ITE.TOT_PRO,
dbo.TB_PED.COD_CLI,
dbo.TB_PED.DAT_PED,
dbo.TB_PED.DAT_ENT,
dbo.TB_PED.TOT_PED
FROM dbo.TB_ITE
INNER JOIN
dbo.TB_PED ON dbo.TB_ITE.COD_PED = dbo.TB_PED.COD_PED
Para executá-la utilize o seguinte código:
SELECT * FROM VIEW_PEDIDO
Conclusão
Nesta primeira etapa foram exploradas algumas das principais características para se trabalhar com o SQL Server 2008. Procurei apresentar algumas funcionalidades do SQL Server Management Studio Express (SSMSE). Vou ficando por aqui, um forte abraço a todos e até o mês que vem!
Nenhum comentário:
Postar um comentário