Neste post e vídeo aula, vamos aprender como se faz a criação de banco de dados e tabelas no SQL Server via SQL Server management studio e por scripts T-SQL.
Com isto, você poderá criar seus próprios bancos de dados para armazenar informações de uma aplicação ou usuário.
Em seguida, estudaremos, os tipos de dados do SQL Server, o conceito de chave primária e o campo de auto numeração.
Logo na sequência, criaremos tabelas em um banco de dados SQL Server
Por fim, apagaremos tabelas e ao final iremos excluir um banco de dados
Entendendo um banco de dados SQL Server
Um servidor SQL Server pode possuir vários banco de dados que pertencem a diversos usuários.
A instância de um Banco de dados SQL Server possui bancos de dados de sistema como : master , model , tempdb e msdb.
Os bancos dados de sistema permitem ao SQL Server gerenciar o próprio SGDB.
E iremos falar sobre isto em um próximo post e vídeo aula.
Um banco de dados no SQL Server consiste em uma coleção de objetos como: tabelas, visões , índices , triggers e stored procedures, etc…
Já os banco de dados de aplicação ou usuário que são criados pelos dbas ou usuários que possuam esta permissão.
Estes bancos normalmente armazenam informações referentes a uma determinada finalidade, aplicação ou usuário.
Para ter um bom aproveitamento desta vídeo aula na parte prática é muito importante que você possua o SQL Server Instalado em seu computador.
Caso você não tenha estes softwares saiba que já fizemos posts e vídeo aulas para instalação destes produtos.
Confira:
- Instalação SQL Server 2017 Express + SSMS + Adventure Works
- Instalação do SQL Server no Linux
- DBeaver : Alternativa ao SQL Server Management Studio Linux
Scripts e Sintaxe dos Comandos : Criação de Banco de dados e tabelas
Os scripts utilizados neste post e vídeo aula podem ser encontrados em nosso github.
Endereço: https://github.com/webmundi/criacao-de-banco-de-dados-e-tabelas-no-sql-server
Vídeo Aula : Criação de Banco de Dados e Tabelas no SQL Server
Como criar um banco de dados no SQL Server
Agora vamos aprender como podemos criar um banco de dados no SQL Server.
Primeiro temos que conectar no SQL Server com um usuário que possua privilégios para criar bancos de dados e tabelas.
Iremos utilizar um usuário com privilégios para criação de banco de dados e tabelas (conforme nossos posts anteriores).
Existem duas maneiras de efetuar a criação de um database no SQL Server:
- Via SQL Server Management Studio
- Através da Execução de Script Transact SQL (T-SQL)
Neste post e vídeo aula, vamos aprender as 2 formas.
Modelo Banco de Dados a ser criado no SQL Server
Antes de partirmos para a parte prática, elaborei um modelo conceitual do banco de dados que iremos implementar:
Trata-se de um banco de dados para Loja Virtual com o banco de dados e tabelas que iremos criar tanto pelo Management Studio e quanto por scripts transact-sql
Note em nosso modelo que existem relações / ligações entre as Tabelas.
Fique Tranquilo!
Iremos estudar isso nos próximos posts / vídeos
Agora vamos criar o banco de dados e suas tabelas primeiro no Management Studio e depois via script
Criando um banco de dados e Tabelas via SQL Server Management Studio
Para efetuar a criação de um database no SQL server, logue no SQL Server Management Studio e siga os passos exibidos em nosso vídeo:
Criação Banco de Dados Loja Virtual pelo SQL Server Management Studio
Arquivos gerados no sistema operacional na criação de um banco de dados SQL Server
Arquivo.MDF: Armazena os dados
Arquivo_LOG.LDF: Armazena os logs de transações, a ser estudado posteriormente
Normalmente esses arquivos estão localizados na pasta DATA do diretório de instalação do SQL Server.
Assim que são criados, os bancos de dados encontram-se vazios, até que uma tabela seja inserida.
O que são Tabelas (Tables) em um banco de dados relacional ?
Depois de criarmos o banco de dados estamos prontos para criar objetos como tabelas.
Os dados de um sistema são armazenados em objetos denominados tabelas (table).
Mas o que são tabelas ?
Todos os dados são organizados e armazenados em um objeto chamado Tabela ou Table.
As Tabelas armazenam as informações em linhas e colunas como em uma planilha excel.
Cada coluna, também chamada de campo possui um tipo de dado específico (Data Type)
Os dados de um sistema são armazenados em objetos denominados tabelas (table).
Cada uma das colunas de uma tabela refere-se a um atributo associado a uma determinada entidade.
As tabelas armazenam as informações em colunas e linhas.
Como uma planilha do Excel
Cada coluna ou campo possui um tipo de dado específico
Tipos de Dados (Data Types)
O que são tipos de dados ou Data types ?
Os data types (tipos de dados) são os formatos utilizados para a gravação dos dados no disco, deverão ser especificados para cada coluna da tabela.
Uma tabela encontra-se em uma ou várias partições, ou seja, unidade(s) definida(s)
Partições
São unidades definidas para organizar os dados
Uma tabela esta em uma ou mais partições
Por padrão, uma tabela é armazenada em uma única partição, que reside em um arquivo .mdf
Particionamento
Mais adiante, veremos que é possível fazer com que uma tabela possa utilizar múltiplas partições para melhorar a performance de um banco de dados.
Categorias de Tipos de Dados
No SQL Server os tipos de dados estão categorizados.
Cada elemento, como uma coluna, uma variável ou uma expressão possui um tipo de dado.
O tipo de dado especifica o tipo de valor que o objeto pode armazenar, como:
números inteiros, texto, data e hora, etc.
O SQL Server organiza os tipos de dados dividindo-os em categorias.
A seguir, descreveremos as principais categorias de tipos de dados utilizados na linguagem Transact-SQL, bem como o tamanho em disco que cada data type ocupa.
Numéricos exatos
Inteiros
Data Type | Descrição | Tamanho em bytes |
TINYINT | Armazena valores numéricos inteiros, variando de 0 a 256 | 1 byte |
SMALLINT | Armazena valores numéricos inteiros, variando de -32.768 a 32.767 | 2 bytes |
INT | Armazena valores numéricos inteiros, variando de -2.147.483.648 a 2.147.483.647 | 4 bytes |
BIGINT | Armazena valores numéricos inteiros, variando de -9.223.372.036.854.775.808 a -9.223.372.036.854.775.807 | 8 bytes |
Valores monetários ou moeda
Data Type | Descrição | Tamanho em bytes |
SMALLMONEY | Valores numéricos decimais variando de -214,748.3648 a 214,748.3647 | 4 bytes |
MONEY | Valores numéricos decimais variando de -922,337,203,685,477.5808 a +922,337,203,685,477.5807 | 8 bytes |
Decimais e Numéricos
Data Type | Descrição | Tamanho em bytes |
NUMERIC(18,0) | Armazena valores numéricos com casas decimais, utilizando precisão. O primeiro número entre os parênteses, representa a quantidade de inteiros a serem armazenados, o segundo número, indica a quantidade de casas decimais do número. |
5-17 bytes |
DECIMAL(18,0) | Tem as mesmas funcionalidades do tipo NUMERIC, a diferença é que o DECIMAL faz parte do padrão ANSI e NUMERIC é mantido por compatibilidade | 5-17 bytes |
Bit
Data Type | Descrição | Tamanho em bytes |
Bit | Um tipo de dados inteiro que pode aceitar um valor 1, 0 ou NULL | 1 byte |
Numéricos aproximados
Data Type | Descrição | Tamanho em bytes |
FLOAT | Armazena valores numéricos aproximados com precisão de ponto flutuante, variando de -1.79E + 308 a 1.79E + 308 |
4 ou 8 bytes |
REAL | Armazena valores numéricos aproximados com precisão de ponto flutuante, variando de -3.40E + 38 a 3.40E + 38 | 4 bytes |
Data e Hora
Data Type | Descrição | Tamanho em bytes |
SMALLDATETIME | Armazena data e hora, com precisão de minutos. | 4 bytes |
DATETIME | Armazena data e hora, com precisão de centésimos de segundos. | 8 bytes |
TIME | Armazena somente hora. Pode armazenar segundos até a fração de 9999999 | 3-5 bytes |
DATE | Armazena somente data | 3 bytes |
DATETIME2 | É uma combinação dos tipos de dados DATE e TIME. A diferença para o tipo DATETIME é a precisão ao armazenar as horas. | 6-8 bytes |
DATETIMEOFFSET | Armazena valores data e hora com a combinação da hora do dia com o fuso horário. O intervalo de deslocamento do fuso horário é de -14:00 a +14:00 | 8-10 bytes |
TIMESTAMP | Este tipo de dados permite a geração automática de um valor binário para um campo de uma tabela. Armazena um número único que é atualizado sempre que uma linha é criada ou modificada. O valor do timestamp é baseado em um relógio interno e não corresponde ao tempo real. Cada tabela pode ter apenas uma variável timestamp |
Strings de Caracteres
Data Type | Descrição | Tamanho em bytes |
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 | Tamanho Definido |
VARCHAR(N) | Armazena N caracteres (até 8.000) no formato não Unicode | 2 bytes + número de caracteres |
VARCHAR(MAX) | Armazena caracteres no formato não Unicode. MAX indica que o máximo a ser armazenado pode chegar a 2^31-1 bytes | 2 bytes + número de caracteres |
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 | 4 bytes + número de caracteres |
Strings de Caracteres Unicode
Data Type | Descrição | Tamanho em bytes |
NCHAR(N) | Armazena N caracteres fixos (até 4.000) no formato 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 | |
NVARCHAR(N) | Armazena N caracteres (até 4.000) no formato Unicode | |
NVARCHAR(MAX) | Armazena caracteres no formato Unicode. MAX indica que o máximo a ser armazenado pode chegar a 2^31-1 bytes | |
NTEXT | Armazena caracteres no formato Unicode. Esse tipo de dado suporte até 1.073.741.823 caracteres e existem funções específicas para trabalhar com esse tipo de dado |
Strings binárias
Data Type | Descrição | Tamanho em bytes |
BINARY (N) | Armazena dados no formato binário, podendo chegar até 8.000 bytes. Independente da quantidade de dados armazenados, será preenchido com espaços em brancos até completar o tamanho do campo. | |
VARBINARY(N) | Armazena dados no formato binário, podendo chegar até 8.000 bytes | |
VARBINARY(MAX) | Armazena dados no formato binário, podendo chegar até 2^31-1 bytes | |
IMAGE | Armazena dados no formato binário, podendo chegar até 2,147,483,647 bytes |
Outros tipos de Dados
Essa categoria inclui tipos de dados especiais, cuja utilização é específica e restrita a certas situações.
Data Type | Descrição |
SQL_VARIANT | Armazena todos os tipos de dados em um mesmo campo de uma tabela, com exceção dos tipos TEXT, NTEXT, TIMESTAMP e SQL_VARIANT |
UNIQUEIDENTIFIER | Esse tipo de dados é utilizado para a criação de um identificador global e único para uma tabela do SQL Server. |
GEOMETRY | Armazena dados espaciais utilizando representação plana da Terra (Flat Earth) |
GEOGRAPHY | Armazena dados espaciais utilizando representação redonda da Terra (Round Earth) |
HIERARCHYID | É usado para representar uma posição em uma hierarquia. Uma coluna desse tipo não representa automaticamente uma árvore. É até a aplicação para gerar e atribuir valores hierarchyid de tal forma que a relação desejada entre as linhas é refletido nos valores. |
XML | Armazena dados no formato XML, não podendo exceder a 2Gb |
Mais informações sobre tipos de dados do SQL Server em:
Tipos de dados (Transact-SQL) – SQL Server
Chave Primária
As Chaves primárias (em inglês, Primary keys ou “PK”) de um banco de dados relacional são o(s) conjunto(s) de um ou mais campos, cujos valores, considerando a combinação de valores em caso de mais de uma chave primária, nunca se repetem na mesma tabela.
Desta forma, podem ser usadas como um índice de referência para criar relacionamentos com as demais tabela do banco de dados (daí vem o nome banco de dados relacional).
Portanto, uma chave primária nunca pode ter valor nulo, nem repetição.
Fonte: Wikipedia : Chave Primária
Ela tem que ser um número de identificação único para cada registro e possibilitar a consulta e o relacionamento dos dados.
É uma boa prática definir a Chave Primária como a primeira coluna da tabela.
Em outras palavras, normalmente, as tabelas possuem uma coluna ou mais contendo valores capazes de identificar uma linha de forma exclusiva.
Essa(s) coluna(s) recebem o nome de chave primária, cuja a finalidade é assegurar a integridade dos dados da tabela.
Chave estrangeira (Foreign key ou “FK”)
O conceito de chave estrangeira ou chave externa se refere ao tipo de relacionamento entre distintas tabelas de dados do banco de dados. Uma chave estrangeira é chamada quando há o relacionamento entre duas tabelas.
Sempre em chave estrangeira vai haver relacionamentos entre tabelas, por exemplo, se uma tabela que tem uma chave primária de outra tabela.
Fonte: Wikipedia : Chave estrangeira
Campo Auto numeração : Identity
A coluna de identidade, ou campo de auto numeração, é definida pela propriedade IDENTITY.
Ao atribuímos essa propriedade a uma coluna, o SQL Server cria números em sequência para linhas que forem posteriormente inseridas na tabela em que a coluna de identidade está localizada.
É importante destacar que uma tabela pode ter somente uma coluna de identidade.
Além disso, o valor de uma coluna desse tipo é gerado automaticamente pelo SQL Server; não podemos alterá-lo ou inseri-lo.
Criação de Tabelas com SQL Server Management Studio
Apagando Tabelas com SQL Server Management Studio
Apagando Banco de Dados – SQL Server Management Studio
Criando um banco de dados e Tabelas via Script T-SQL
Agora vamos fazer todo o processo de criação de um banco de dados que realizamos anteriormente pelo SSMS, utilizando scripts Transact-SQL.
Os scripts utilizados neste post e vídeo aula podem ser encontrados em nosso github.
Endereço: https://github.com/webmundi/criacao-de-banco-de-dados-e-tabelas-no-sql-server
Criação de banco de dados com Script T-SQL
CREATE DATABASE
Os objetos que fazem parte de um sistema são criados dentro de um objeto denominado database, ou seja, uma estrutura lógica formada por dois tipos de arquivo, um responsável pelo armazenamento de dados e outro que armazena as transações feitas.
Para que um banco de dados seja criado no SQL Server, utilizamos utilizar a instrução CREATE DATABASE, cuja sintaxe é a seguinte:
CREATE DATABASE nome_do_banco_de_dados
A seguir, temos um exemplo de criação de banco de dados:
CREATE DATABASE BD_WEBMUNDI_COM
Como vimos, quando um banco de dados é criado ele está vazio, até que uma tabela ou objeto seja criado.
Sintaxe mais sofisticada do CREATE DATABASE:
CREATE DATABASE [LojaVirtual]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N’LojaVirtual’, FILENAME = N’C:\lojavirtualdatabase\LojaVirtual.mdf’ , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
LOG ON
( NAME = N’LojaVirtual_log’, FILENAME = N’C:\lojavirtualdatabase\LojaVirtual_log.ldf’ , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )
GO
Mais informações:
CREATE DATABASE (Transact-SQL) – SQL Server
Seleção do Banco de dados via T-SQL
Quando usamos t-sql, antes de realizar inclusão das tabelas ou realizar operações, é necessário, informar ao SQL Server a respeito de qual banco de dados utilizaremos.
Para isso, utilizamos o comando USE com a sintaxe a seguir:
USE nome_do_banco_de_dados
Para utilizarmos o banco de dados BD_WEBMUNDI_COM criado, devemos digitar a seguinte linha:
USE BD_WEBMUNDI_COM
Seleção do Banco de dados via SQL Server management studio
Na parte superior esquerda do SQL Server Management Studio, há uma caixa drop-
down denominada Available Databases, que mostra o nome do banco de dados que está em uso no momento.
Criação de Tabelas com Scripts T-SQL
A instrução CREATE TABLE deve ser utilizada para criar tabelas dentro de
bancos de dados já existentes.
A sintaxe simplificada para uso dessa instrução é a seguinte:
CREATE TABLE <nome_tabela>
( <nome_campo> <data_type> [IDENTITY [<inicio>,<incremento>)]
[ NOT NULL] [DEFAULT <exprDef>]
[, “nome campo2> <data type> [NOT NULL] [DEFAULT <exprDef>]
onde:
- <nome_tabela>: É o nome da tabela a ser criada;
- <nome_campo1>, <nome_campo2>: São os nomes dos campos a serem
criados na tabela;
- [IDENTITY [(<inicio>,<incremento>)]: IDENTITY indica que a coluna criada
é uma coluna de identidade.
Uma tabela não pode ter mais de um campo IDENTITY (explicado anteriormente).
<inicio> é o valor da primeira linha a ser carregada na tabela e <incremento> é o valor de incremento a ser somado ao valor de identidade da linha carregada anteriormente;
- [NOT NULL]: Determina que a coluna não aceitará valores nulos;
- <data type> define o tipo de dado para os valores do campo. Os tipos de dados disponíveis para um banco de dados do SQL Server serão descritos ainda neste capítulo;
- [DEFAULT <exprDef>]: DEFAULT determina o valor de uma coluna quando um valor, durante um INSERT, não é especificado de maneira explícita. <exprDef> é o valor padrão definido por DEFAULT. Pode ser uma função do sistema, uma constante ou valor NULL.
Ao criarmos uma tabela, é importante destacar que ela não pode ter mais de 1 chave primária, mas pode ter 1 chave primária composta por vários campos.
Apagando Tabelas via T-SQL
Para apagar tabelas no SQL Server via T-SQL utilizamos o comando DROP TABLE
Sintaxe:
— Syntax for SQL Server and Azure SQL Database
DROP TABLE [ IF EXISTS ] { database_name.schema_name.table_name | schema_name.table_name | table_name } [ ,…n ]
[ ; ]
Mais informações:
DROP TABLE (Transact-SQL) – SQL Server
Apagando Banco de Dados via T-SQL
Para apagar um banco de dados no SQL Server via T-SQL utilizamos o comando DROP DATABASE
Sintaxe:
— SQL Server Syntax
DROP DATABASE [ IF EXISTS ] { database_name | database_snapshot_name } [ ,…n ] [;]
Mais informações:
DROP DATABASE (Transact-SQL) – SQL Server
Referências:
CREATE DATABASE (Transact-SQL) – SQL Server
CREATE TABLE (Transact-SQL) – SQL Server
DROP TABLE (Transact-SQL) – SQL Server
DROP DATABASE (Transact-SQL) – SQL Server
Materiais e leituras que recomendamos para você:
- Instalação SQL Server 2017 Express + SSMS + Adventure Works
- Instalação do SQL Server no Linux
- Livros gratuitos sobre SQL Server
- Monitorar progresso de Backup e Restore no SQL Server
- Obtendo a quantidade de registros das tabelas de um banco de dados SQL Server
- Utilização de Memória no SQL Server
Obrigado
Espero que este tutorial possa lhe ajudar a aumentar seus conhecimentos no banco de dados SQL Server.
Se você gostou desta publicação, compartilhe com seus amigos ou nos acompanhe pelas redes sociais.
Você pode nos ajudar a criar mais conteúdos como este. Como ?
Prestigie nossos anunciantes conhecendo seus produtos e serviços.
É simples e rápido e você certamente ajuda a gente a crescer.
Obrigado e um grande abraço
Renato Sanches