SQL Server 2005 – Parte 3 – Objetos do SQL Server, Databases, Tipos de Dados, Tabelas do Sistema e Criação de Tabelas

Olá pessoal, voltamos com nosso curso básico de SQL Server. Nesta parte, iremos descrever os Objetos do SQL Server, mostrar a definição e criação de um Database, mostrarmos os tipos de dados, as tabelas do sistema e começar a criação das tabelas. Acompanhem:

Objetos do SQL Server – A versão 2005 do SQL Server nos oferece diferentes tipos de objetos, como descrevemos abaixo:

– Database – Os objetos do sistema são criados dentro de uma estrutura lógica que corresponde ao objeto Database, iremos falar dele mais adiante.

– Table – Os dados do sistema são inclusos neste objeto de duas dimensões, que é formado por linhas e colunas.

– Constraint, Default e Rule – Consistem em regras usadas para implementar a consistência e a integridade dos dados. Mais sobre elas em artigos futuros.

– Data Type e User Defined Data Type – Os dados são armazenados no disco sob um formato representado pelo datatype. Um datatype deverá ser atribuído  a cada coluna de uma tabela.

– View – Este objeto nos oferece uma visualização lógica dos dados de uma tabela, de modo que diversas aplicações possam compartilhá-la.

– Index – São objetos responsáveis pela otimização de acesso aos dados de uma tabela, com o objetivo de agilizar determinadas pesquisas de dados.

– Procedure – Neste objeto, encontramos um bloco de comandos Transact-SQL, responsável por uma determinada tarefa. Sua lógica pode ser compartilhada por várias aplicações. Muito utilizado atualmente em praticamente todo tipo de empresa.

– Trigger – Como a Procedure, este objeto também possui um bloco de comandos Transact-SQL. É criado sobre uma tabela e ativado no momento da execução dos comandos UPDATE, INSERT e/ou DELETE.

– Function – Neste objeto, temos um bloco de comandos Transact-SQL responsável por uma determinada tarefa. Como a Procedure, sua lógica pode ser compartilhada por N aplicações. Importante dizer que uma função SEMPRE retornará um valor.

Obs: Os objetos Procedure, Trigger e Function são processados rapidamente, pois seu código tende a ficar compilado na memória. Isso acontece porque estes objetos são executados no servidor de dados.

Databases – Como dito anteriormente, dentro do objeto Database são criados os objetos que fazem parte do sistema, ou seja, uma estrutura lógica formada por dois tipos de arquivo, um responsável pelo armazenamento dos dados e outro que armazena as transações feitas. Ok, mais como eu crio um Database? Simples! Por meio da instrução CREATE DATABASE.

Por exemplo, vamos dizer que quero criar um database chamado Clientes. Para isso, abro o SQL Server, crio uma nova query, digito a instrução CREATE DATABASE Clientes e aperto F5 ou clico em Execute. Veja abaixo:

Como há de se esperar, assim que criamos um database, não há tabelas no mesmo, muito menos registros. Mais, antes que pensemos em inserir tabelas (e registros), precisamos informar ao SQL Server qual database iremos utilizar. Para isso, usamos a instrução USE nomedodatabase. Confira abaixo:

Logo abaixo da minha instrução usei a palavra GO, que nada mais é que uma simples maneira de dizer ao SQL para seguir na respectiva instrução. Esse comando não é obrigatório.

Da mesma forma, se desejarmos excluir o database recém criado, devemos usar a instrução DROP DATABASE. Apenas ressaltando que, se estivermos dentro do database que iremos excluir, o SQL nos impede de fazermos isso. Para resolver isso, simplesmente saia do database e vá para o master por exemplo, como mostra a imagem a seguir:

Podemos notar que o database foi mesmo excluído, pois vemos acima no DropDownList Avaliable Databases.

Tipos de Dados – Os tipos de dados são classificados em diferentes categorias e permitem N formatos. Abaixo uma descrição de cada categoria e de cada tipo de dado do SQL Server 2005:

– Baseados em Caracteres:

– Char(n) – Trata-se de um datatype que aceita como valor qualquer dígito, sendo que o espaço ocupado no disco é de um dígito por caractere. É possível utilizar até 8 mil dígitos.

– Varchar(n) – Também aceita como valor qualquer dígito e o espaço ocupado em disco é de um dígito por caractere. Permite usar também no máximo 8 mil dígitos. A diferença pro Char, é que o Varchar geralmente é usado quando não sei o tamanho fixo de um campo.

– Text – Qualquer dígito pode ser usado neste datatype, sendo ocupado 1 byte por caractere, o equivalente a 2.147.483.647 bytes.

– Baseados em Caracteres Unicode:

– Nchar(n) – Neste datatype, pode usar qualquer dígito, sendo ocupados 2 bytes a cada caractere. É possível usar até 8 mil bytes.

– Nvarchar(n) – Igual ao tipo anterior, com a única diferença que uso esse tipo quando não sei o tamanho fixo de um campo. 2 bytes são ocupados a cada caractere. É possível usar até 8 mil bytes.

– Ntext – Também aceita qualquer digito, 2 bytes são ocupados a cada caractere. Podem ser usados até 1.073.741.823 bytes.

– Baseados em Numéricos Inteiros:

– Bigint – Aceita valores entre -2^63 e 2^63-1, sendo que esse datatype ocupa 8 bytes.

– Int – Os valores aceitos aqui variam entre -2^31 a 2^31-1. Ocupa 4 bytes.

– Smallint – Aceita valores entre -32768 até 32767 e ocupa 2 bytes.

– Tinyint – Os valores aceitos aqui variam entre 0 e 255, ocupa apenas 1 byte.

– Bit – É um tipo de dado inteiro (conhecido também como booleano), cujo valor pode corresponder a NULL, 0 ou 1. Podemos converter valores de string TRUE e FALSE em valores de bit, sendo que TRUE corresponde a 1 e FALSE a 0.

– Baseados em Numéricos Exatos:

– Decimal(P,S) – Os valores aceitos variam entre -10^38-1 e 10^38-1, sendo que o espaço ocupado varia de acordo com a precisão. Se a precisão for de 1 a 9, o espaço ocupado é de 5 bytes. Se a precisão é de 10 a 19, o espaço ocupado é de 9 bytes, já se a precisão for de 20 a 28, o espaço ocupado é de 13 bytes, e se a precisão for de 29 a 38, o espaço ocupado é de 17 bytes.

– Numérico(P,S) – Considerado um sinônimo do datatype decimal, o númerico também permite valores entre -10^38-1 e 10^38-1 e o espaço ocupado é o mesmo do anterior.

– Baseados em Numéricos Aproximados:

– Float[(n)] – O mesmo que double precision quando o valor de n é 53, este datatype aceita valores entre -1.79E + 308 e 1.79E + 308. O espaço ocupado varia de acordo com o valor de n. Se esse valor estiver entre 1 e 24, a precisão será de 7 dígitos, sendo que o espaço ocupado será de 4 bytes. Se o valor de n estiver entre 25 e 53, sua precisão será de 15 dígitos, assim sendo o espaço ocupado será de 8 bytes.

– Real – Este datatype é similar ao float(n) quando o valor de n é 24. Os valores aceitos variam entre -3.40E + 38 e 3.40E + 38. Esse datatype ocupa 4 bytes.

– Baseados em Valores Numéricos Monetários:

– Money – Este datatype aceita valores entre -2^63 e 2^63-1, sendo que 8 bytes são ocupados.

– Smallmoney – É possível usar valores entre -2^31 e 2^31-1, sendo que 4 bytes são ocupados.

– Baseados em Data e Hora:

– Datetime – Permite o uso de valores entre 1/1/1753 e 31/12/9999. Este datatype ocupa 8 bytes e sua precisão atinge 3.33 milisegundos.

– Smalldatetime – Aceita o uso de valores entre 1/1/1900 e 06/06/2079, sendo que sua precisão é de 1 minuto e ocupa 4 bytes em disco.

– Baseados em Binários:

– Binary[(n)] – Este datatype representa os dados que serão usados no formato binário. O espaço ocupado é de n+4 bytes, sendo que n pode variar entre 1 e 8000 bytes.

– Varbinary[(n)] – Aqui também é usado o formato binário, o espaço ocupado e a variação de n é igual ao anterior.

– Image – O formato binário também é usado aqui, sendo que o espaço ocupado é de 2^31-1 bytes ou 2.147.483.647.

– Baseados em Tipos de Dados Especiais:

– Uniqueidentifier – O formato hexadecimal é usado para o armazenamento de dados binários, sendo que este datatype ocupa 16 bytes.

– Timestamp – Um valor binário é gerado pelo SQL Server, sendo que esse datatype ocupa 8 bytes.

– Bit – Este datatype pode apresentar 0, 1 ou NULL, como valor, sendo ocupado 1 byte. Também utilizado como um tipo de dado int.

– Sql_Variant – Os valores aqui podem ser de qualquer datatype, sendo que é possível armazenar até 8016 bytes.

– Cursor – Datatype usado somente quando trabalhamos com variáveis.

– Table – Datatype usado somente quando trabalhamos com variáveis de memória.

– Xml – Por este datatype, podemos armazenar fragmentos de documentos XML em um banco de dados SQL. Estes fragmentos correspondem à instâncias XML que não possuem um determinado elemento de nível superior. Essas instâncias são armazenadas quando criamos variáveis e colunas com datatype XML. O espaço máximo ocupado deve ser de 2GB.

Tabelas do Sistema Após instalarmos o SQL Server, são criados alguns bancos de dados que permitem ao software gerenciar os sistemas de usuários, fazendo assim com que a integridade e a segurança dos dados sejam mantidas. Esses bancos de dados são chamados de bancos de dados gerenciais. Dentro deles, são criadas tabelas por meio da instalação do SQL Server, que recebem o nome de system tables. Abaixo descrevo estes bancos de dados:

– Resource – Este banco possui todos os objetos de sistema do SQL Server, os quais são visualizados de forma lógica no esquema sys de todos os bancos de dados. O Resource, que é um banco de dados somente leitura, não possui metadados ou dados dos usuários. Ele permite a rápida atualização de versões e o fácil rollback dos pacotes de serviços. Importante salientar que, em hipótese alguma, devemos mover ou renomear o arquivo do banco de dados Resource pois, se isso acontecer, o SQL Server não será iniciado.

– Master – O banco Master é o responsável por efetuar os registros de todas as informações do nível do sistema. Ele registra as informações para iniciar o SQL Server, contas de login, configurações referentes ao sistema e a existência de outros bancos de dados e seus arquivos. Se este banco estiver indisponível, torna-se inviável iniciar o SQL Server.

– TEMPDB – Este é o banco responsável por manter todo o tipo de armazenamento temporário, inclusive o de tabelas de caráter temporário. Ele é considerado um recurso global, visto que armazena tabelas e stored procedures temporárias que podem ser acessadas por todos os usuários que estiverem conectados. Todas as vezes que o SQL Server é iniciado, este banco é recriado, o que significa que sempre há uma cópia limpa do banco de dados quando o sistema é iniciado. Dessa forma, quando o SQL é encerrado, não existem conexões ativas, sendo que entre uma sessão e outra não há itens a serem salvos em um banco de dados tempdb. Vale ressaltar que não podemos fazer o backup ou restaurar esse banco de dados.

– MODEL – Este banco é usado como modelo para criar todos os outros bancos de dados. Dessa forma, quando solicitamos a criação de um novo banco de dados ao SQL Server, este copia todos os objetos armazenados no MODEL para o novo banco de dados. Caso sejam feitas alterações sobre este banco de dados, todos aqueles criados posteriormente também refletirão tais modificações.

– MSDB – Este banco é usado pelo SQL Server Agent com a finalidade de registrar operadores e programar a execução de jobs e de alerts. O msdb é utilizado para realizar o armazenamento de dados não apenas pelo SQL Server Agent, mais também pelo SQL Server Management Studio. Um histórico completo de backup e restauração online é mantido pelo SQL Server no banco de dados msdb. Esses dados são usados pelo SQL Server a fim de criar um planejamento de restauração do banco de dados e aplicar backups de log de transação. Recomenda-se realizar um backup do msdb com freqüência caso esse banco sofra constantes alterações. Caso esse banco seja danificado, as informações referentes ao backup e à restauração são perdidas, bem como as informações utilizadas pelo SQL Server Agent.

Visualizando os bancos de dados do sistema – Caso você deseje visualizar os bancos de dados do sistema, faça o seguinte: abra o SQL Server, vá a janela Object Explorer (F8), expanda a opção Databases e expanda a opção System Databases, como mostra a imagem a seguir.

Se você quiser ver os databases via instrução SQL, crie uma nova query e digite SELECT * FROM SYSDATABASES. Veja o resultado abaixo:

Criação de Tabelas – Os dados de um sistema são armazenados em objetos denominados tabelas. Cada uma das colunas de uma tabela refere-se a um atributo associado a uma determinada entidade. Os datatypes, ou seja, os formatos usados para a gravação dos dados no disco (descritos um a um anteriormente), deverão ser especificados para cada coluna da tabela. Ok, após descrever de forma resumida a parte teórica, vamos a prática. Para criarmos uma tabela, devemos usar a instrução CREATE TABLE, desde que criemos esta tabela em um banco de dados existente. No exemplo abaixo, crio e me conecto ao database Clientes e crio uma tabela simples de Cliente:

De forma simplificada é assim que criamos nossas tabelas, lembrando sempre de usar esta estrutura CREATE TABLE NomeDaTabela ( ), dentro dos parênteses vai toda a estrutura da minha tabela, como os nomes das colunas e os tipos de dados referentes as colunas. Para exibir minha tabela criada uso a instrução SELECT, que será abordada no próximo artigo.

Desta forma, terminamos aqui mais uma parte de nossa série de artigos, ou melhor dizendo, de nosso mini curso básico de SQL Server. Na próxima parte, começaremos a falar dos comandos DML, como o INSERT e SELECT. Aguardem!

Quaisquer dúvidas, postem.

Abraços.

Até o próximo artigo!

Anúncios

2 comentários sobre “SQL Server 2005 – Parte 3 – Objetos do SQL Server, Databases, Tipos de Dados, Tabelas do Sistema e Criação de Tabelas

Expresse sua opinião!

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s