Você está pronto para começar a criar bancos de dados e tabelas com a Linguagem de consulta estruturada? Neste artigo, exploramos o processo de criação de tabelas manualmente com os comandos CREATE DATABASE e CREATE TABLE. Se você é novo no SQL, talvez queira rever alguns princípios básicos do SQL primeiro.
Requisitos de negócio
Antes de nos sentarmos no teclado, precisamos garantir que temos uma sólida compreensão dos requisitos do cliente. Qual é a melhor maneira de obter essa percepção? Conversando com o cliente, claro! Depois de nos sentarmos 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 vários 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 a estrutura de informação e supervisão salarial de cada funcionário. Para atender a esses requisitos, criamos um banco de dados que consiste em três tabelas, mostradas no diagrama Entidade-Relacionamento desta página.
Escolhendo uma plataforma de banco de dados
Decidimos usar um sistema de gerenciamento de banco de dados (ou DBMS) baseado na Linguagem de Consulta Estruturada (SQL). Portanto, todos os nossos comandos de criação de bancos de dados e tabelas 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 suporte o padrão SQL, incluindo Oracle e Microsoft SQL Server. Se você ainda não selecionou uma plataforma para o seu banco de dados, o Database Software Options orientará você pelo 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 só permite a criação simples de um banco de dados. Como com todos os nossos comandos, você pode consultar a documentação do DBMS para determinar se algum parâmetro avançado suportado por seu sistema específico atende às suas necessidades. Vamos usar o comando CREATE DATABASE para configurar nosso banco de dados:
CRIAR o pessoal do DATABASE
Tome nota especial da capitalização usada no exemplo acima. É uma prática comum entre os programadores SQL usar todas as letras maiúsculas para palavras-chave SQL, como "CREATE" e "DATABASE", usando todas as letras minúsculas para nomes definidos pelo usuário, como o nome do banco de dados "pessoal". Essas convenções fornecem fácil legibilidade. 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 XYZ Corporation. Nossa primeira tabela consiste nos dados pessoais de cada funcionário de nossa empresa. Precisamos incluir o nome, salário, ID e gerente de cada funcionário. É uma boa prática de design separar o último e o primeiro nome em campos separados para simplificar a pesquisa de dados e a classificação no futuro. Além disso, acompanharemos o gerente de cada funcionário inserindo uma referência ao ID do 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. 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 gerenciador 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: Pessoal de USE;
Alternativamente, o "pessoal do banco de dados"; comando executaria a mesma função. Agora podemos dar uma olhada no comando SQL usado para criar a tabela de nossos funcionários: Funcionários da CREATE TABLE (employeeid INTEGER NOT NULL, sobrenome VARCHAR (25) NOT NULL, nome VARCHAR (25) NOT NULL, reportsto INTEGER NULL);
Como no exemplo acima, observe que a convenção de programação determina que usemos 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 table_name (opções de tipo de dados attribute_name, …, as opções de tipo de dados attribute_name); No exemplo anterior, o nome da tabela é employees 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 tamanho 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. 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 esse atributo ao adicionar linhas ao banco de dados. Em nosso exemplo, o departamento de RH exige que um ID de funcionário e um nome completo sejam armazenados para cada funcionário. No entanto, nem todos os funcionários têm um gerente (o CEO reporta para ninguém!), Portanto, permitimos entradas NULAS nesse campo.Observe que NULL é o valor padrão e omitir essa opção implicitamente permitirá valores NULL para um atributo. Agora vamos dar uma olhada na tabela de territórios. De uma rápida olhada nesses dados, parece que precisamos armazenar um inteiro e duas seqüências de comprimento variável. Como no nosso exemplo anterior, não esperamos que o ID da região consuma mais de 25 caracteres. No entanto, alguns dos nossos territórios têm nomes mais longos, então expandiremos o tamanho permitido desse atributo para 40 caracteres. Vamos ver o SQL correspondente: Territórios CREATE TABLE (territoryid INTEGER NOT NULL, território Descrição VARCHAR (40) NOT NULL, VARCHAR regionid (25) NOT NULL);
Por fim, usaremos a tabela EmployeeTerritories para armazenar as relações 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, precisamos apenas armazenar os dois números de identificação inteira 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. Esse método de armazenamento de dados reduz a redundância em nosso banco de dados e garante o uso otimizado de espaço em nossas unidades de armazenamento. Cobriremos detalhadamente o comando JOIN em um tutorial futuro. Aqui está o código SQL para implementar nossa tabela final: CREATE TABLE employeeterritories (employeeid INTEGER NOT NULL, territoryid INTEGER NOT NULL); Se você é particularmente astuto hoje, talvez tenha 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 acompanhasse as informações salariais dos funcionários e não fornecíamos isso nas tabelas de 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 é bem parecida com a do comando CREATE TABLE, aqui está: Funcionários da ALTER TABLE ADICIONAR 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. Criando nossa primeira tabela
Atributos e Tipos de Dados
Valores NULOS
Construindo as Tabelas Restantes
O mecanismo SQL fornece para alterar a estrutura de um banco de dados após a criação