O processo de criação de banco de dados
Um banco de dados bem-estruturado:
• Economiza espaço em disco ao eliminar dados redundantes.
• Mantém a exatidão e a integridade dos dados.
• Oferece acesso aos dados de maneiras úteis.
Criar um banco de dados eficiente e útil é uma questão de seguir o processo
adequado, incluindo as seguintes fases:
1. Análise de requisitos, ou identificação do objetivo do banco de dados
2. Organizando dados em tabelas
3. Especificando chaves primárias e analisando relações
4. Normalizando para padronizar as tabelas
Identificando o objetivo do banco de dados: Análise de requisitos
- Compreender a finalidade do banco de dados servirá de base para informar
suas escolhas durante todo o processo de criação.
- Certifique-se de considerar o banco de dados de todas as perspectivas. Por
exemplo, se você estiver criando um banco de dados para uma biblioteca
pública, seria importante considerar as maneiras pelas quais os usuários e
bibliotecários precisariam acessar os dados.
Algumas maneiras de coletar informações antes de criar o banco de dados:
• Entreviste as pessoas que o usarão
• Analise
formulários corporativos, como faturas, quadros de horários e
pesquisas
• Façaum pente fino em todos os sistemas de dados existentes (incluindo
arquivos físicos e digitais)
- Comece reunindo todos os dados existentes que serão incluídos no banco de
dados.
- Em seguida, liste os tipos de dados que você deseja armazenar e as entidades,
ou pessoas, coisas, locais e eventos que esses dados descrevem.
Por exemplo:
Clientes
• Nome
• Endereço
• Cidade, Estado, CEP
• Endereço de e-mail
Produtos
• Nome
• Preço
• Quantidade em estoque
• Quantidade em pedidos
Pedidos
• ID do pedido
• Representante de vendas
• Data
• Produto(s)
• QUANTIDADE
• Preço
• Total
Linguagem SQL
SQL (Structured Query Language) Linguagem de Consulta Estruturada) é uma
linguagem de consulta voltada para bancos de dados relacionais é a linguagem
padrão em sistemas de gerenciadores de bancos de dados relacionais. É por
meio dela que criamos tabelas, colunas, índices, garantimos e removemos
privilégios a usuários e, principalmente, consultamos os dados armazenados em
tabelas.
O primeiro passo para aprender SQL é entender que se trata de uma linguagem
declarativa, com a qual nos preocupamos menos em como as coisas são feitas
e nosso trabalho passa a ser informar o que queremos fazer combinando um
conjunto de comandos disponibilizado por ela.
Os comandos da linguagem SQL são divididos em conjuntos e essa separação
é feita de acordo com o que cada comando faz. Comandos que fazem atividades
similares são agrupados no mesmo conjunto.
Criando um banco de dados
Antes de criar as tabelas precisa criar um banco de dados utilizando o comando
create database.
Em geral, os comandos no MySQL devem ser finalizados com ; (ponto-e-
vírgula).
Para criar um banco de dados chamado aula4 digite: create database aula4;
Para conectar-se a um banco de dados criado anteriormente utilize o comando
connect ou o comando use. É possível remover um banco de dados com o
comando drop database.
Por exemplo, o comando drop database aula4; remove o banco de dados aula4.
A seguir quais são esses conjuntos com exemplos que apresentam os seus
comandos mais utilizados.
• DDL - Data Definition Language - Conjunto de comandos que lidam com
os objetos, criando bancos de dados, esquemas, tabelas, campos, etc.
Dentre os mais utilizados temos CREATE, ALTER e DROP. Exemplo:
CREATE TABLE produto -- Criação da tabela produto
• DML - Data Manipulation Language - Os comandos aqui lidam com os
dados. Alguns muito comuns são INSERT, UPDATE e DELETE. Exemplo:
INSERT INTO produto (nome, valor) VALUES (‘geladeira’,’1200’)
-- Inserção de valores na tabela produto
• DQL - Data Query Language - Linguagem de consulta de dados conta
com o conjunto da instrução utilizada para a obtenção dos registros dos
bancos de dados. Exemplo:
SELECT nome, valor FROM produto -- Recupera valores da tabela
produto
Vale destacar que algumas literaturas colocam o SELECT como
integrante do grupo DML, já que a sua função nesse grupo seria de
recuperação de dados.
Conjuntos mais específicos são:
• DTL - Data Transaction Language - Linguagem de transação de dados
que conta com o conjunto de instruções usadas para gerenciar as
transações que ocorrem dentro do banco de dados. Exemplo:
BEGIN TRAN -- Inicia uma transação
• DCL - Data Control Language - Linguagem de controle de dados possui
o conjunto das instruções usadas para controlar o acesso e gerenciar
permissões de usuários no banco de dados. Exemplo:
GRANT CREATE TABLE to usuario -- Concede privilégio de criar tabela
a um usuário
Dentre essas subdivisões da linguagem SQL, DDL e DML/DQL contém os
comandos mais utilizados. Em DDL temos comandos que cuidam dos objetos
que compõem um banco de dados, tais como o próprio banco, as tabelas e os
usuários, entre outros. Em DML estão agrupados os comandos para a
manipulação dos dados. Vejamos a seguir mais algumas informações sobre
esses conjuntos.
DDL
Agora veremos alguns comandos do grupo DDL com exemplos de códigos.
Nesse momento não é necessário se preocupar em entender completamente
cada comando, pois em próximos conteúdos abordaremos cada um deles em
mais detalhes.
Os principais comandos agrupados em DDL são:
• CREATE TABLE
• DROP TABLE
• ALTER TABLE
• TRUNCATE
No Abaixo, podemos ver o uso do comando CREATE TABLE.
CREATE TABLE Contato (
Id int,
Nome varchar(255),
Telefone varchar(11)
);
Criação de tabela
Acima, temos a criação de uma tabela no SQL. O comando CREATE TABLE cria
uma tabela, que no nosso exemplo, terá o nome Contato. A estrutura interna da
tabela é inserida dentro dos parênteses, onde vamos colocar as colunas com as
suas propriedades. Nesse caso criamos três colunas, cada uma com um nome
e com o seu tipo.
Além da criação de tabelas, podemos também as excluir. E isso pode ser feito
com o uso do comando DROP, que vemos no Código abaixo.
DROP TABLE Contato
Exclusão de tabela
Com a execução do código acima, excluiremos a tabela Contato. O
comando DROP TABLE serve para remover uma tabela existente de um banco
de dados.
O comando DROP TABLE remove a tabela e todos os dados contidos nela,
então deve ser usado com cautela.
Uma tabela também pode ter sua estrutura alterada. Isso é feito por meio do
comando ALTER TABLE. No Código 3, temos um exemplo no qual adicionamos
uma coluna à tabela Contato.
ALTER TABLE Contato
Add email VARCHAR(255)
Alteração de tabela
Mais um comando DDL é o comando TRUNCATE. Com ele, excluímos todos os
registros de uma tabela, deixando-a do jeito como foi criada. No Código 4, temos
o uso desse comando.
TRUNCATE TABLE Contato
Remoção dos dados da tabela
DML/DQL
Os principais comandos agrupados em DML e DQL são:
• INSERT
• DELETE
• UPDATE
• SELECT
Podemos inserir registros numa tabela por meio do comando INSERT. Nele,
informamos as colunas que queremos inserir os dados, e os valores que
queremos preencher nesses campos da tabela. No abaixo vemos como fica o
uso dessa instrução:
INSERT INTO Cliente(nome, telefone)
VALUES ('Suzana', '99999-9999')
Inserindo dados da tabela
Para a exclusão de registros temos o comando DELETE, que pode ser usado
em junção com a cláusula WHERE. Caso essa condição não esteja presente,
todos os dados da tabela serão apagados. Veja no Código abaixo
DELETE FROM Cliente WHERE id = 2 -- Excluirá apenas o registro com id igual a 2
DELETE FROM Cliente -- Excluirá todos os registros
Deletando dados da tabela
Além de excluir dados, temos casos em que será necessário atualizar valores na
tabela. E para isso temos o comando UPDATE que também pode ser usado com
a cláusula WHERE. Da mesma forma como acontece com o comando DELETE,
se a condição não for usada, todos os dados da tabela serão atualizados.
UPDATE Cliente SET telefone = '99999-9999' WHERE id = 3
-- Atualizará o telefone do cliente com id = 3
UPDATE Cliente SET telefone = '99999-9999'
-- Atualizará o telefone de todos os cliente
Atualizando dados da tabela
Abaixo temos o uso do comando SELECT, com o qual recuperamos informações
de uma tabela. No Código abaixo estamos recuperando as
informações nome e telefone da tabela Cliente.
SELECT nome, telefone FROM Cliente
Selecionando dados da tabela
Em algumas literaturas DQL é um subconjunto de DML. A partir daqui
consideraremos dessa forma.
Com o comando SELECT podemos obter os dados das tabelas que serão
selecionados de acordo com a consulta que estamos fazendo. Devemos indicar
neste comando a tabela que queremos recuperar os dados, se há alguma
condição para os registros serem recuperados, ou se queremos limitar a
quantidade de linhas para ser retornada etc. No Código abaixo, vemos como
isso acontece na prática.
SELECT nome, telefone
FROM Cliente
WHERE nome = 'Ramon'
Delimitando a recuperação de dados
A instrução acima recupera dados de uma tabela com uma condição
especificada. O termo SELECT é usado para informar qual o campo deve ser
recuperado. Após ele, pode ser colocado um ou mais campos que se deseja
obter. Em seguida temos o uso do termo FROM, com o qual indicamos de qual
tabela os dados serão obtidos, tendo na sequência o nome da tabela em que
faremos essa operação. Por fim, usamos o WHERE para definir uma condição
para a obtenção dos dados, que no caso acima define que o campo nome seja
igual a “Ramon”.
Um recurso que é usado com frequência é a junção de duas ou mais tabelas. E
isso é feito por meio da instrução JOIN. No Código abaixo, temos um exemplo
no qual pegamos dados de duas tabelas que pertencem a um registro específico.
Nesse momento não se preocupe em entender a junção e todas as variações
que ela pode ter, pois abordaremos o JOIN com mais detalhes em outro
conteúdo:
SELECT c.nome, c.telefone, p.codigo, p.data_pedido
FROM Cliente c
JOIN Pedido p
ON c.id = p.id_cliente
WHERE c.id = 5
Juntando dados de duas tabelas
Nessa consulta estamos obtendo os dados das tabelas Cliente e Pedido, que
recebem os apelidos c e p respectivamente. Com esses apelidos acessamos os
dados das colunas dessas tabelas. Por exemplo, c.nome é uma coluna da
tabela Cliente, assim como p.codigo é uma coluna da tabela Pedido. Por meio
do JOIN em conjunto com o ON, trazemos os dados que desejamos
no SELECT, especificando qual a coluna que é comum entre as duas tabelas.
Por fim, utilizamos o WHERE especificando que a busca deve ser restrita ao id
da tabela Cliente.