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.

Home » Tecnologia

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:

CANAL NO YOUTUBE

INSCREVA-SE:



Sistemas Web

Playlist de SQL

Youtube Youtube Youtube
© 2021 - Utilidade Pública: Tecnologia, Educação e Cidadania.