banner abas system

Introdução a Linguagem SQL — DDL (Parte 3)

Data/Hora Publicação: 21/08/2023 3:35:20 PM
  • Tempo de Leitura: 9 minutos
Imagem de cabeçalho para artigo SQL

Há duas semanas, iniciei uma série de artigos com o intuito de apresentar a forma como eu gostaria de ter sido apresentado a linguagem SQL. Se você ainda não leu as partes 1 e 2, clique nos links abaixo e não perca nenhum detalhe:

No artigo de hoje, como mencionado na parte 2, irei apresentar em detalhes os principais comandos do “sub-grupo” da linguagem SQL — DDL (Data Definition Language — Linguagem de Definição de Dados).

Além dos comandos contidos no grupo DDL, vamos também fazer o download e baixar o SGBD que será utilizado nos exemplos práticos apresentados.

Preparação do ambiente — Download do SGBD

A melhor forma que vejo para se aprender qualquer tecnologia é por meio de exemplos e projetos práticos.

Para tanto vamos utilizar um dos diversos SGBD’s disponíveis atualmente. A escolha do SGBD aqui apresentado não representa minha preferência pessoal nem tão pouco é a melhor solução para todos os problemas. Mas é um banco de dados muito utilizado principalmente em dispositivos móveis e também para armazenamento de configurações e/ou parametrizações de sistemas.

Sem maiores suspense, utilizaremos o SGBD SQLite. A escolha pelo SQLite foi simplesmente pela facilidade quanto a utilização e também por não serem necessárias instalações e/ou configurações avançadas. Nosso foco nesta série de artigos é unicamente a linguagem SQL e não vamos nos atentar a detalhes de SGBD’s comerciais. Caso tenham interesse em algum SGBD específico, deixe nos comentários ou em minhas redes sociais para que no futuro eu crie um conteúdo sobre.

Para download, acesse o link aqui e baixe a versão correspondente ao seu sistema operacional. Dica: opte pela versão pré-compilada do seu sistema (Precompiled Binaries for [seu sistema] e baixe o arquivo compactado que inicia por sqlite-tools-win32-x86…).

Após o download, descompacte o arquivo baixado em um diretório de fácil acesso e, a partir daí poderemos executar nossos comandos (criar um diretório na raiz do seu sistema talvez seja uma solução viável).

Estou utilizando o Microsoft Windows 10 e, todos os exemplos apresentados bem como prints de tela serão neste sistema.

No momento, não vamos fazer uso de nenhum frontend para execução dos nossos comandos. Mas fique à vontade para utilizar se for conveniente pra você. Como sugestão de frontend para SQLite, temos o SQLiteStudio. A utilização do frontend é interessante para armazenar seus comandos SQL’s e também para fácil acesso aos bancos de dados (bem como visualização mais amigável das tabelas).

Após o download e extração do arquivo no diretório de sua escolha, execute o prompt de comando do seu sistema operacional (no meu caso, clico no botão “Windows” e digito “cmd” e já fica disponível o prompt de comando) e navegue até o diretório escolhido para extração e execução dos comandos.

Tutorial SQL: inicialização do prompt de comandos no Windows 10
Imagem 01 — Exemplo de acesso ao prompt de comando (Windows 10)

Na imagem 02 apresento como ficou o diretório que criei em meu computador e também o seu conteúdo após a extração dos arquivos baixados conforme informado anteriormente.

Imagem 02 — Prompt de Comando (Windows 10) com diretório de trabalho preparado
Imagem 02 — Prompt de Comando (Windows 10) com diretório de trabalho preparado

A partir da próxima seção, iremos iniciar a prática de comandos DDL.

Criando o banco de dados

Para criarmos nosso banco de dados no SQLite, uma vez que esteja no diretório que você baixou e descompactou os arquivos citados anteriormente é bastante simples.

Basta para tanto, digitar o nome do executável do SQLite (como pode ser observado na Imagem 03, este arquivo tem o nome sqlite3.exe, porém, não é necessário digitar a extensão do arquivo — .exe). Veja o exemplo a seguir do comando a ser executado:

Execução do comando para criação do banco de dados no SQLite
Imagem 03 — Prompt de Comandos SQLite
				
					sqlite3 dados.db
				
			

Perceba que, após o nome do executável do SQLite (sqlite3) eu digitei o nome do banco de dados (no caso dados.db). A extensão “.db” não é obrigatória e sim uma convenção adotada para facilitar a localização de bancos de dados nos diretórios.

Após executar o comando conforme descrito acima, podemos observar na Imagem 03 que o Prompt do SQLite é acionado e fica disponível para executarmos nossos comandos SQL bem como comandos SQLite.

“Mas Paulo, o que são comandos SQLite? É um tipo novo de SQL?”

Não é um tipo novo de SQL. A explicação é muito simples: comandos SQLite são comandos do próprio banco de dados que irão nos auxiliar em algumas tarefas importantes. Por exemplo, para sair do prompt de Comandos do SQLite, basta digitar .exit e, a partir disto, você estará novamente no prompt de comandos do seu sistema operacional.

Exemplo de comando SQLite. Após digitar o comando .exit, retorna ao prompt de comandos do sistema operacional
Imagem 04 — Exemplo de execução de comando SQLite

Para diferenciar os comandos SQL dos comandos SQLite é bastante simples:

  • um comando SQLite sempre é iniciado por um ponto (“.”) e não há a necessidade de colocar ponto-e-vírgula ao final do comando;
  • um comando SQL, sempre será finalizado ao digitar ponto-e-vírgula (“;”) ao final do comando.

Este artigo ficará restrito a apresentar os principais comandos SQLite necessários para manuseio do banco de dados criado e serão apresentados e explicados sempre que necessário. Para maiores informações de comandos SQLite você pode acessar a documentação completa aqui.

Duas considerações importantes até o momento:

  1. Perceba que a criação do banco de dados pode ser diferente em cada um dos SGBD’s disponíveis. No caso do exemplo aqui apresentado, bastou digitar o executável do SQLite e o nome do banco para a criação do mesmo. No MySQL, por exemplo, a criação de um banco de dados é diferente e um comando DDL é adotado para a criação do banco (CREATE DABATABASE …).
  2. O nome do banco de dados no caso do SQLite não precisa, como já citado, de extensão. Isto é apenas uma convenção para facilitar a localização dos arquivos de dados. Eu utilizo a extensão .db para indicar um banco de dados. Mas você pode usar a extensão que preferir ou não utilizar extensão nenhuma que também irá funcionar.

Criando nossa primeira tabela (Primeiro comando DDL)

Para criação de tabelas, vamos utilizar o comando CREATE.

A sintaxe básica do comando CREATE para criar uma tabela no SQLite é a seguinte:

				
					CREATE TABLE table_name (
   column1 datatype PRIMARY KEY,
   column2 datatype NOT NULL,
   column3 datatype DEFAULT 0,
   ...
);
				
			

Explicando cada parte do comando:

  • CREATE TABLE: especifica que você está criando uma nova tabela
  • table_name: o nome que deseja dar à sua nova tabela
  • column1column2column3, etc.: os nomes das colunas na tabela
  • datatype: o tipo de dados para a coluna (e.g. INTEGER, TEXT, REAL)
  • PRIMARY KEY: identifica a coluna de chave primária para a tabela
  • NOT NULL: especifica que a coluna não pode conter valores NULL
  • DEFAULT: especifica o valor padrão para a coluna

Para nosso exemplo, vamos criar uma tabela para armazenar uma agenda de contatos que contém os seguintes campos:

  • id: será um campo do tipo INTEGER e também será nossa chave primária, ou seja, nosso identificador único para cada contato
  • nome: será do tipo TEXT e irá armazenar o nome do contato
  • celular: será também do tipo TEXT e irá armazenar o número de telefone celular do contato
  • data_nascimento: será do tipo DATE e irá armazenar a data de nascimento do contato.

O nome para nossa tabela será agenda_contatos e, o comando completo para criação de nossa tabela é o seguinte:

				
					CREATE TABLE agenda_contatos (
  id INTEGER PRIMARY KEY,
  nome TEXT,
  celular TEXT,
  data_nascimento DATE
);
				
			
Prompt de comandos do SQLite com a execução do script para gerar a tabela agenda_contatos
Imagem 05 — Criação da tabela agenda_contatos pelo prompt de comando

Perceba que não é necessário digitar todo o comando SQL em uma única linha (conforme eu apresento no exemplo do comando e também na imagem 05). O comando SQL digitado só será executado após a inserção do ponto-e-vírgula (“;”). Mas, nada impede que todo o código esteja em uma única linha. Apenas é importante finalizar com ponto-e-vírgula (“;”).

Outra observação que podemos realizar na imagem 05 é que, após o ponto-e-vírgula é exibido novamente o prompt do SQLite. Se isso ocorrer é sinal que seu comando foi executado com êxito e nenhum erro ocorreu. Se alguma coisa estivesse errada, uma mensagem de erro seria exibida e, aí seria necessário analisar para a correção.

“Mas Paulo, como eu vou saber se a tabela realmente foi criada?” Para tanto, no SQLite vamos precisar utilizar outro comando do banco. Para exibir as tabelas que já estão criadas no banco de dados, basta digitar o comando .tables. Perceba na Imagem 06 que logo após executar o comando SQLite é exibida uma linha com o nome agenda_contatos (exatamente o nome que colocamos em nossa tabela).

Prompt de comandos com execução do comando SQLite .tables exibindo a tabela recém-criada (agenda_contatos)
Imagem 06 — Comando .tables executado no prompt de comandos — Exibição de tabelas

Neste ponto, se sairmos do prompt do SQLite e retornamos ao prompt de comandos do Windows 10, ao solicitar para listar os arquivos com o comando dir será apresentado, além dos três arquivos que descompactamos no início do artigo, também um arquivo com a extensão .db — exatamente nosso banco de dados. Observe na Imagem 07 a listagem de arquivos apresentada e também o arquivo que foi adicionado.

Prompt de comando do Windows 10 listando os arquivos do diretório artigo-sql
Imagem 07 — Prompt de comandos listando arquivos do diretório

Alterações em tabela(s) existente(s)

Além de criar uma ou mais tabelas no banco de dados, em algum momento pode ser necessário realizar atualizações e alterações nessas tabelas.

Para tanto, nos comandos DDL temos o comando ALTER. A sintaxe do comando é:

				
					ALTER TABLE nome_da_tabela ação;
				
			

Onde “nome_da_tabela” é o nome da tabela que será alterada e “ação” é a ação a ser realizada, que pode ser:

  • RENAME TO novo_nome: renomeia a tabela para “novo_nome”.
  • ADD COLUMN nome_tipo: adiciona uma nova coluna com o nome “nome” e tipo “tipo”.
  • MODIFY COLUMN nome_tipo: modifica o tipo de dados da coluna “nome” para “tipo”.
  • DROP COLUMN nome: remove a coluna “nome” da tabela.

Alteração no nome da tabela:

Após criar a tabela, pensei melhor e, o nome não ficou legal. Ao invés de agenda_contatos, gostaria que esta tabela fosse nomeada como contatos. Para realizar esta alteração, vamos ao primeiro código de exemplo:

				
					ALTER TABLE agenda_contatos RENAME TO contatos;
				
			
Prompt de comando apresentando a mudança de nome da tabela agenda_contatos para contatos
Imagem 08 — Alteração do nome da tabela

A imagem 08 apresenta o resultado da execução do comando destacado acima.

Antes da alteração, listei as tabelas no banco de dados e, perceba no destaque em vermelho que o nome era agenda_contatos.

Após a execução do comando ALTER TABLE …, ao solicitar a lista de tabelas, é exibido o novo nome: contatos (conforme destacado em verde).

Nota e dica importante: não é muito comum alterar o nome de tabelas e campos após a disponibilização do banco de dados para produção. Se for alterar o nome de uma tabela ou nome de um campo é importante verificar em todos os locais que o banco de dados é utilizado para não “quebrar” nada em produção.

Adicionando coluna em tabela existente

Para adicionar uma ou mais colunas em uma tabela existente utilizamos também o comando ALTER TABLE seguido da ação ADD COLUMN.

Vamos adicionar um campo endereço em nossa tabela de contatos e, essa coluna será do tipo TEXT. O comando para realizar esta alteração é:

				
					ALTER TABLE contatos ADD COLUMN endereco TEXT;
				
			
Alteração da tabela contatos adicionando o campo endereço
Imagem 09 — Adição de campo endereço na tabela contatos

A imagem 09 apresenta o comando executado na tabela contatos.

Para as demais ações disponíveis no SQL (MODIFY COLUMN e DROP COLUMN) a lógica de execução é a mesma.

Considerações Finais

Este artigo da série ficou um pouco maior que o esperado. Mas era necessário não fragmentar este conteúdo para a leitura ser mais fluida.

Uma última consideração é que os comandos DDL não se restringem aos que apresentei neste artigo. Temos comandos para adição, exclusão e alteração de index, exclusão de tabelas etc. Não vou listar todos (e nem todas as possíveis variações). Ficaríamos com um livro para tanto material (risos).

O importante é lembrar que os comandos do “sub-grupo” DDL são utilizados para definir a estrutura do banco de dados. Percebam que ao longo de todo este artigo, em nenhum momento eu adicionei dados à tabela criada. Nós criamos apenas a “forma” que irá receber os dados.

No próximo artigo, apresentarei os comandos DML e, estes sim popularão nossa tabela com os dados.

Fiquem de olhos nas minhas redes sociais e acompanhem aqui pelo blog ou pelo Medium para não perder nenhuma parte.

E se tiver dúvidas e/ou sugestões, deixa nos comentários ou envie uma mensagem nas redes sociais que responderei o mais breve possível.

Até o próximo!


Artigo publicado originalmente na plataforma Medium em 20 de abril de 2023. O acesso ao artigo original pode ser realizado aqui

Referências

Sistemas de banco de dados / Ramez Elmasri e Shamkant B. Navathe, 4ª Edição, 2009, Editora Pearson Addison Wesley;

Database Design for Mere Mortals: A Hands-On Guide to Relational Database Design / Michael J. Hernandez, 3ª Edição, 2021, Editora Addison-Wesley Professional

SQLite: https://sqlite.org/index.html, acessado em 04/04/2023 às 8h37.

foto Paulo embaixo da Harbour Bridge em Sydney na Austrália

Sobre o autor

Paulo Fernando Abse Benassi é formado em Sistemas de Informação pela Libertas – Faculdades Integradas de São Sebastião do Paraíso/MG. Analista de Sistemas, desenvolvedor web e analista de dados. Trabalha na área de tecnologia desde 2003. Desde o início da carreira, começou a estudar sobre a área tecnológica e nunca mais parou. Em aprendizado contínuo. Clique aqui para analisar os projetos e atividades desempenhadas pelo autor.

Artigos relacionados

Neste artigo, falarei sobre a linguagem de consulta estruturada (SQL na sigla em inglês) e como ela processa e armazena informações em bancos de dados relacionais.
Nesta segunda parte da Introdução a Linguagem SQL, apresento os dois principais sub-grupos da linguagem SQL - DDL e DML.
Nesta quarta e última parte da nossa série de artigos, apresentarei os principais comandos do “sub-grupo” da Linguagem SQL — DML (Data Manipulation Language — Linguagem de Manipulação de Dados).

1 comentário em “Introdução a Linguagem SQL — DDL (Parte 3)”

  1. Pingback: Introdução a Linguagem SQL — DML (Parte 4 — final) - ABAS System

Deixe um comentário

Rolar para cima