Skip to content

Criação de bancos de dados e tabelas em SQL

9 de abril de 2021

Neste artigo

Você está pronto para começar a criar bancos de dados e tabelas com a Structured Query Language? Neste artigo, exploramos o processo de criação de tabelas manualmente com os comandos CREATE DATABASE e CREATE TABLE. Se você é novo em SQL, talvez queira revisar alguns princípios básicos de SQL primeiro.

Requisitos de negócio

Antes de nos sentarmos ao teclado, precisamos garantir que temos um conhecimento sólido dos requisitos do cliente. Qual é a melhor maneira de obter esse insight? Conversar com o cliente, claro! Depois de conversar com o Diretor de Recursos Humanos da XYZ, descobrimos que eles são uma empresa de vendas de widgets e estão principalmente interessados ​​em rastrear informações sobre sua equipe de vendas. A XYZ Corporation divide sua força de vendas nas regiões leste e oeste, cada uma delas dividida em muitos territórios cobertos por representantes de vendas individuais. O departamento de RH gostaria de rastrear o território coberto por cada funcionário, bem como as informações salariais e a estrutura de supervisão de cada funcionário. Para atender a esses requisitos, projetamos um banco de dados que consiste em três tabelas, mostradas no diagrama Entidade-Relacionamento nesta página.

Escolhendo uma plataforma de banco de dados

Decidimos usar um sistema de gerenciamento de banco de dados (ou DBMS) baseado na Structured Query Language (SQL). Portanto, todos os nossos comandos de criação de banco de dados e tabela devem ser escritos com o padrão ANSI SQL em mente. Como benefício adicional, o uso de SQL compatível com ANSI garantirá que esses comandos funcionem em qualquer DBMS que ofereça suporte ao padrão SQL, incluindo Oracle e Microsoft SQL Server. Se você ainda não selecionou uma plataforma para seu banco de dados, Opções de software de banco de dados o orienta durante o processo de seleção.

Criando o banco de dados

Nosso primeiro passo é criar o próprio banco de dados. Muitos sistemas de gerenciamento de banco de dados oferecem uma série de opções para personalizar os parâmetros do banco de dados nesta etapa, mas nosso banco de dados permite apenas a criação simples de um banco de dados. Como acontece com todos os nossos comandos, você pode desejar consultar a documentação de seu DBMS para determinar se algum parâmetro avançado compatível com seu sistema específico atende às suas necessidades. Vamos usar o comando CREATE DATABASE para configurar nosso banco de dados: CREATE DATABASE staff

Preste atenção especial à capitalização usada no exemplo acima. É prática comum entre os programadores de SQL usar todas as letras maiúsculas para palavras-chave SQL, como “CREATE” e “DATABASE”, enquanto usa todas as letras minúsculas para nomes definidos pelo usuário, como o nome do banco de dados “pessoal”. Essas convenções fornecem legibilidade fácil. Agora que projetamos e criamos nosso banco de dados, estamos prontos para começar a criar as três tabelas usadas para armazenar os dados pessoais da Corporação XYZ.

Criando nossa primeira mesa

Nossa primeira tabela consiste em dados pessoais de cada funcionário de nossa empresa. Precisamos incluir o nome, salário, carteira de identidade e gerente de cada funcionário. É uma boa prática de design separar o sobrenome e o nome em campos separados para simplificar a pesquisa e classificação de dados no futuro. Além disso, acompanharemos o gerente de cada funcionário inserindo uma referência à ID de funcionário do gerente em cada registro de funcionário. Vamos primeiro dar uma olhada na tabela de funcionários desejada. O atributo ReportsTo armazena o ID do gerente para cada funcionário. A partir dos registros de amostra mostrados, podemos determinar que Sue Scampi é a gerente de Tom Kendall e John Smith. No entanto, não há informações no banco de dados sobre o gerente de Sue, conforme indicado pela entrada NULL em sua linha. Agora podemos usar o SQL para criar a tabela em nosso banco de dados pessoal. Antes de fazermos isso, vamos garantir que estamos no banco de dados correto emitindo um comando USE: USE staff;

Alternativamente, o “pessoal DATABASE;” comando desempenharia a mesma função. Agora podemos dar uma olhada no comando SQL usado para criar a tabela de nossos funcionários: CREATE TABLE workers
(ID do funcionário INTEIRO NÃO NULO,
sobrenome VARCHAR (25) NÃO NULO,
nome próprio VARCHAR (25) NÃO NULO,
relatórios para INTEGER NULL);

Como no exemplo acima, observe que a convenção de programação determina que devemos usar todas as letras maiúsculas para palavras-chave SQL e letras minúsculas para colunas e tabelas nomeadas pelo usuário. O comando acima pode parecer confuso no início, mas na verdade existe uma estrutura simples por trás dele. Aqui está uma visão generalizada que pode esclarecer um pouco as coisas: CREATE TABLE nome_tabela
(opções de tipo de dados attribute_name,
…,
opções de tipo de dados attribute_name);

Atributos e tipos de dados

No exemplo anterior, o nome da tabela é funcionários e incluímos quatro atributos: employeeid, lastname, firstname e reportsto. O tipo de dados indica o tipo de informação que desejamos armazenar em cada campo. O ID do funcionário é um número inteiro simples, portanto, usaremos o tipo de dados INTEGER para o campo employeeid e o campo reportsto. Os nomes dos funcionários serão cadeias de caracteres de comprimento variável e não esperamos que nenhum funcionário tenha um nome ou sobrenome com mais de 25 caracteres. Portanto, usaremos o tipo VARCHAR (25) para esses campos.

Valores NULL

Também podemos especificar NULL ou NOT NULL no campo de opções da instrução CREATE. Isso simplesmente informa ao banco de dados se valores NULL (ou vazios) são permitidos para aquele atributo ao adicionar linhas ao banco de dados. Em nosso exemplo, o departamento de RH requer que uma ID de funcionário e um nome completo sejam armazenados para cada funcionário. No entanto, nem todo funcionário tem um gerente (o CEO não se reporta a ninguém!), Portanto, permitimos entradas NULL nesse campo. Observe que NULL é o valor padrão e a omissão dessa opção permitirá implicitamente valores NULL para um atributo.

Construindo as tabelas restantes

Agora vamos dar uma olhada na tabela de territórios. Olhando rapidamente para esses dados, parece que precisamos armazenar um número inteiro e duas strings de comprimento variável. Como em nosso exemplo anterior, não esperamos que o ID da região consuma mais do que 25 caracteres. No entanto, alguns de nossos territórios têm nomes mais longos, então vamos expandir o comprimento permitido desse atributo para 40 caracteres. Vejamos o SQL correspondente: CREATE TABLE territories
(territorid INTEGER NOT NULL,
território Descrição VARCHAR (40) NOT NULL,
regionid VARCHAR (25) NÃO NULO);

Por fim, usaremos a tabela EmployeeTerritories para armazenar os relacionamentos entre funcionários e territórios. Informações detalhadas sobre cada funcionário e território são armazenadas em nossas duas tabelas anteriores. Portanto, só precisamos armazenar os dois números de identificação inteiros nesta tabela. Se precisarmos expandir essas informações, podemos usar um JOIN em nossos comandos de seleção de dados para obter informações de várias tabelas. Este método de armazenamento de dados reduz a redundância em nosso banco de dados e garante o uso ideal do espaço em nossas unidades de armazenamento. Abordaremos o comando JOIN em detalhes em um tutorial futuro. Aqui está o código SQL para implementar nossa tabela final: CREATE TABLE Employeeterritories
(ID do funcionário INTEIRO NÃO NULO,
territorid INTEGER NOT NULL);

O mecanismo que SQL fornece para alterar a estrutura de um banco de dados após a criação

Se você for particularmente astuto hoje, deve ter notado que “acidentalmente” omitimos um dos requisitos de design ao implementar nossas tabelas de banco de dados. O Diretor de RH da XYZ Corporation solicitou que o banco de dados rastreasse as informações de salários dos funcionários e deixamos de fornecer isso nas tabelas do banco de dados que criamos. No entanto, nem tudo está perdido. Podemos usar o comando ALTER TABLE para adicionar este atributo ao nosso banco de dados existente. Queremos armazenar o salário como um valor inteiro. A sintaxe é bastante semelhante à do comando CREATE TABLE, aqui está: ALTER TABLE funcionários
ADICIONE salário INTEGER NULL;

Observe que especificamos que valores NULL são permitidos para este atributo. Na maioria dos casos, não há opção ao adicionar uma coluna a uma tabela existente. Isso se deve ao fato de que a tabela já contém linhas sem entrada para este atributo. Portanto, o DBMS insere automaticamente um valor NULL para preencher o vazio.