Criar tabelas, alterar e apagar com create table, alter e drop
Veja o tutorial que mostra através de exemplos simples como criar tabela com create table, alterar com alter table e apagar com drop table, em linguagem SQL. Veja os exemplos com uma tabela e com múltiplas tabelas e relacionamentos.
Índice deste artigo
Em linguagem SQL as instruções DDL (Data Definition Language) são usadas para definir a estrutura dos dados, isto é, tudo que diz respeito à criação de tabelas e demais objetos de banco de dados, alteração e exclusão destas estruturas.
Trabalhar com as estruturas das tabelas basicamente envolve três operações: Criar, alterar ou excluir a tabela. No processo de alteração ocorre ainda outra divisão, ou seja, a alteração envolve incluir campos, alterar ou remover um ou mais campos da tabela.
Criar tabela com create table
Para criar tabelas em um banco de dados, usamos o comando create table.
Exemplo:
CREATE TABLE empregados (
codigo_empregado int identity primary key,
nome varchar(60),
data_nascimento datetime,
salario decimal(10,2),
cidade varchar(60),
estado varchar(30)
)
Vamos ver o que significa cada termo acima:
- CREATE TABLE - comando usado para criar uma tabela no banco de dados
- empregados - nome da tabela
- codigo_empregado,nome,data_nascimento,salario,cidade e estado - nome dos campos ou colunas da tabela empregados
- int, varchar, decimal e datetime - define o tipo de dados que cada campo irá receber
- identity - (apenas SQL Server) indica que o campo terá o seu valor preenchido automaticamente com um número sequencial e não reaproveitável.
- primary key - indica que o campo será uma chave do tipo primária
- varchar(xx) - como visto o varchar indica o tipo de dado que o campo vai receber e o xx é a quantidade máxima de caracteres.
- decimal(10,2) - decimal é o tipo, 10 indica que o campo poderá receber até 10 posições, sendo 8 inteiro e 2 para as casas decimais.
Existem diversos tipos de campos que podemos usar no SQL Server, veja a lista dos principais:
- Int - Este campo armazenará um valor numérico inteiro
- Decimal - Aceita valores numéricos com casas decimais, neste caso deve ser informado a quantidade de casas decimais desejadas. Exemplo: decimal(10,2), indica que iremos armazenar oito posições numéricas e duas casas decimais.
- Varchar - Aceita valores do tipo texto. É necessário especificar o tamanho desejado.
- Text - Aceita valores do tipo texto
- Datetime - Aceita valores do tipo data e hora. O formato de gravação será mm/dd/aaaa hh:mm:ss
- Bit - Valor inteiro 0 ou 1
Alterar tabela com alter table
Uma vez criada, uma tabela poderá sofrer alterações em sua estrutura, para realizar essas alterações usamos o comando ALTER TABLE.
As alterações na estrutura da tabela podem ser para:
- Adicionar um campo
- Alterar um campo
- Remover um campo
Adicionar um campo
Vamos adicionar o campo sexo na tabela empregados criada no post anterior.
ALTER TABLE empregados ADD sexo varchar(10)
Observe que usamos a condição ADD que indica que estamos adicionando.
É possível ainda adicionar mais de um campo de uma mesma vez, para isto basta usar uma vírgula para separar a os itens da lista de campos a serem inseridas. Veja o próximo exemplo onde iremos adicionar os campos CPF e RG na tabela empregados.
ALTER TABLE empregados ADD cpf varchar(20),rg varchar(15)
Alterar um campo
Para alterar o campo sexo já existente, usamos a condição MODIFY COLUMN. Exemplo:
ALTER TABLE empregados ALTER COLUMN sexo varchar(30)
Podemos alterar o tipo e o tamanho, mas não o nome do campo. Veja ainda outro exemplo onde estaremos alterando o tipo de dados do campo cpf.
ALTER TABLE empregados ALTER COLUMN cpf int
Remover um campo
Para excluir um campo usamos a condição DROP COLUMN. Exemplo:
ALTER TABLE empregados DROP COLUMN sexo
ou ainda
ALTER TABLE empregados DROP COLUMN cpf,rg
Apagar tabela com drop table
Para excluir uma tabela do nosso banco de dados, usamos o comando DROP TABLE como no exemplo a seguir.
DROP TABLE empregados
Ao excluir uma tabela todos os dados serão excluídos, naturalmente.
Múltiplas tabelas e relacionamentos
Os exemplos acima foram feitos com uma única tabela, mas é possível criar várias tabelas em um banco de dados, fazendo um relacionamento entre elas. Este relacionamento é feito com o uso de chaves primária e estrangeira e permite implementar a chamada integridade referencial, onde o próprio banco gerencia as transações e assim permite a integridade dos dados.
Veja abaixo um exemplo da criação de três tabelas com relacionamento entre elas:
CREATE TABLE autores(
idAutor int primary key,
nome varchar(60)
);CREATE TABLE livros(
isbn varchar(30) primary key,
titulo varchar(60),
numPaginas int,
idAutor int,
CONSTRAINT fkLivros FOREIGN KEY (idAutor)
REFERENCES autores(idAutor)
);CREATE TABLE Edicoes(
numEdicao int,
data datetime,
quantidade int,
isbn varchar(30),
CONSTRAINT fkEdicoes FOREIGN KEY (isbn)
REFERENCES livros(isbn)
);
Algumas observações sobre o código acima:
Observe que os campos idAutor e isbn, nas tabelas autores e livros, respectivamente, são criados como chave primária (primary key).
Esses mesmos campos serão criados como chave estrangeira (foreign key) nas tabelas autores e edicoes, respectivamente. ou seja, idAutor é chave primária em autores e chave estrangeira em livros, isbn é chave primária em livros e chave estrangeira em edicoes.
Observe que ao criar a chave estrangeira é necessário informar onde ela é chave primária (REFERENCES).
Agora imagine que eu tenha feito os seguintes inserts na tabela autores:
INSERT INTO autores(idAutor,nome) Values(1,'Machado da Silva');INSERT INTO autores(idAutor,nome) Values(2,'Paulo da silva');
INSERT INTO autores(idAutor,nome) Values(3,'Mario da Silva');
INSERT INTO autores(idAutor,nome) Values(4,'Maria da Silva');
INSERT INTO autores(idAutor,nome) Values(5,'Madalena da Silva');
Se eu fizer os dois inserts abaixo na tabela livros, o primeiro irá funcionar, mas o segundo não.
INSERT INTO livros(isbn,titulo,numPaginas,idAutor) Values('85-111','A noite',158,2);INSERT INTO livros(isbn,titulo,numPaginas,idAutor) Values('85-222','O Dia',418,7);
Por quê?
Perceba que no segundo insert, para o campo idAutor eu coloquei o valor 7. Como este campo é uma chave estrangeira, quando eu executar este insert o banco vai seguir o References e procurar pela chave primária dele que no caso está na tela autores. Chegando lá ele encontra a chave primária que é o idAutor, mas não vai encontrar o valor 7, pois no nosso insert em autores colocamos até o 5. Se não existe este valor na chave primária, ele não pode existir na chave estrangeira e com isso dará um erro na inclusão.
Outras operações de insert, update e delete vão seguir esta mesma lógica. Por exemplo: Se eu tentar remover o autor Paulo da Silva também dará um erro, pois este autor, cujo idAutor é 2, tem um registro na chave estrangeira dele na tabela livros e não é possível remover a primária sem antes remover a estrangeira.
Veja também
- 10 itens sobre o currículo ou curriculum para arrumar emprego
- As lotéricas são filiais ou franquias da Caixa?
- Carteira de identidade ou RG - Onde solicitar e documentos necessários
- Créditos da Nota Fiscal Paulista no IPVA, Conta Corrente ou Poupança
- Curso de Tecnologia em Radiologia: Faculdade a Distância ou Gratuita
- Administração, pedagogia ou direito: Qual curso é mais concorrido?
- Faculdade gratuita em Ribeirão Preto: Presencial e a distância - EAD
- Quais os cursos e faculdades em Guarulhos na Grande SP?
- Real Expresso: Horário de ônibus para várias cidades do Brasil
- Viação São Luiz: Horário de Ônibus e venda de Passagens