SlideShare une entreprise Scribd logo
1  sur  3
1 Banco de Dados – Comandos DLL do MySQL – 17.09.2013
BANCO DE DADOS MySQL
1. COMANDOS DDL (Data Definition Language)
1.1. CREATE
Comando usado para criar base de dados, tabelas e views (visões). Veremos VISÕES posteriormente.
Criar uma Base de Dados
Create database <nomeBD>;
Após criar a base de dados, devemos selecioná-la.
Use database <nomeBD>;
Criar uma Tabela
create table filmes (
id int(10) unsigned not null auto_increment,
titulo varchar(80) not null,
ano int(4) unsigned not null,
diretor varchar(80) not null,
primary key (id)
);
TABELA COM CHAVE ESTRANGEIRA
A criação de uma chave estrangeira é bem mais complexa do que uma chave primária. Primeiramente é
necessário nomear a restrição através de uma CONSTRAINT e só então especifica quem é o campo que será
chave estrangeira e a qual tabela e campo ela está REFERENCIANDO. Para questão de padronização você
pode nomear a CONSTRAINT (nomear a restrição) colocando o seguinte nome:
fk_tabelaChaveEstrangeira_tabelaChavePrimária. Abaixo 2 exemplos:
Criar uma Tabela com 1 Chave Estrangeira
create table notafiscal (
numnota int(4) not null auto_increment,
dataEmissao date,
idCliente int(4) not null,
primary key (numnota),
constraint fk_notafiscal_cliente foreign key
(idCliente) REFERENCES cliente(idCliente)
);
Criar uma Tabela com 2 Chaves Estrangeiras
create table itemnota (
numItem int(4) not null,
codItem int(4) not null,
numNota int(4) not null,
qtd int(4),
valorItem float,
primary key (numItem,codItem,numNota),
constraint fk_itemnota_produto foreign key
(codItem) REFERENCES produto(codItem),
constraint fk_itemnota_notafiscal foreign key
(numNota) REFERENCES notafiscal(numNota)
);
1.2. DROP
Comando usado para excluir. Podemos excluir base de dados, tabelas, views.
Excluir uma base de dados
drop database nomeDaBase;
Curso Técnico em Informática – 3º Semestre
Disciplina: Banco de Dados
Professor: Arley Rodrigues
Semestre: 2013.1 Turno: Tarde Data: 17/09/2013
2 Banco de Dados – Comandos DLL do MySQL – 17.09.2013
Excluir uma tabela
drop table nomeTabela;
Excluir uma view
drop view nomeView;
1.3. ALTER
Comando usado para alterar tabelas, colunas, views, índices, chaves (primária, estrangeira e candidata),
etc. As alterações podem ser em nomes, exclusões, inclusões, etc.
Adicionar um índice
ALTER TABLE nomeTabela ADD INDEX nomeIndice;
Remover um índice
ALTER TABLE <nomeTabela> DROP INDEX <nomeIndice>;
Altera o nome de uma tabela
ALTER TABLE <nomeTabela> RENAME TO <novoNome>;
Altera o nome dos campos de uma tabela
ALTER TABLE <nomeTabela> CHANGE <nomeCampo> <novoNomeCampo> <tipo_campo>;
Remove um novo campo de uma tabela
ALTER TABLE <nomeTabela> DROP <nomeCampo>;
Adiciona um novo campo à uma tabela
ALTER TABLE <nomeTabela> ADD <nomeCampo> <tipoCampo>;
Adiciona um novo campo à uma tabela após um campo especificado
ALTER TABLE <nomeTabela> ADD <nomeCampo> <tipoCampo> AFTER <nomeCampoAnterior>;
Adiciona um novo campo à uma tabela na primeira posição
ALTER TABLE <nomeTabela> ADD <nomeCampo> <tipoCampo> FIRST;
Modifica tipo de um campo da tabela indicada
ALTER TABLE <nomeTabela> MODIFY <nomeCampo> <tipoCampo>;
Adicionar um campo como chave primária
ALTER TABLE nomeTabela ADD PRIMARY KEY (<nomeCampo>);
Adicionar vários campos como chave primária
ALTER TABLE nomeTabela ADD PRIMARY KEY (<nomeCampo1>, <nomeCampo2>, etc);
Excluir uma chave primária
ALTER TABLE nomeTabela DROP PRIMARY KEY;
Para inserir uma chave estrangeira é necessário nomeá-la através de uma CONSTRAINT (Restrição)
ALTER TABLE nomeTabela
ADD CONSTRAINT <nomeConstraint>
FOREIGN KEY <nomeCampoFK> REFERENCES <nomeBD>.<nomeTabela> (<nomeCampo>);
Para apagar uma chave estrangeira é necessário excluir através do nome da sua CONSTRAINT
ALTER TABLE nomeTabela DROP FOREIGN KEY nomeConstraint;
3 Banco de Dados – Comandos DLL do MySQL – 17.09.2013
1.4. Informações Adicionais ao Declarar Chave Estrangeira
Como sabemos as chaves estrangeiras garante a integridade referencial em relação aos valores contidos
em uma outra tabela. Podemos controlar o que pode acontecer com os valores contidos nas chaves
estrangeiras quando excluímos ou alteramos valores no campo da chave primária a qual ela faz referência.
Quando criamos uma chave estrangeira ela tem 2 ações: ON DELETE e ON UPDATE.
A ação ON DELETE está condicionada a deleção de um valor ou do campo que faz parte da chave primária,
enquanto o ON UPDATE está com a atualização do mesmo.
As ações ON DELETE e ON UPDATE podem ser configuradas com as opções RESTRICT, CASCADE, SET NULL,
NO ACTION, que significam:
CASCADE: Se houver um DELETE da tabela pai, as tabelas filhas também serão deletadas, evitando
inconsistência de dados. Se houver um UPDATE na chave primária da tabela pai, as chaves estrangeiras das
tabelas filhas também serão atualizadas.
SET NULL: Caso uma a tabela pai seja deletada ou sua chave primária seja alterada, as tabelas filhas terão as
suas chaves estrangeiras setadas para NULL (exceto quando forem criadas com o parâmetro NOT NULL).
NO ACTION: A tentativa de deletar ou atualizar uma tabela pai será ignorada caso ela tenha tabelas filhas.
RESTRICT: O mesmo que NO ACTION.
Por padrão as chaves estrangeiras são criadas com as seguintes configurações: ON DELETE NO ACTION ON
UPDATE NO ACTION.
Para você ver como está criada sua tabela basta executar o comando: SHOW CREATE TABLE <nomeTabela>;
Exemplo de uma tabela criada com outras opções:
CREATE TABLE `cursa` (
`idAluno` int(11) NOT NULL,
`idDisciplina` int(11) NOT NULL,
`semestre` varchar(6) NOT NULL,
PRIMARY KEY (`idAluno`,`idDisciplina`),
CONSTRAINT `fk_cursa_alunos` FOREIGN KEY (`idAluno`) REFERENCES `alunos` (`idAlunos`) ON DELETE
SET NULL ON UPDATE CASCADE,
CONSTRAINT `fk_cursa_disciplina` FOREIGN KEY (`idDisciplina`) REFERENCES `disciplina` (`idDisciplina`)
ON DELETE RESTRICT ON UPDATE NO ACTION
);
Para alterar configurações já existentes:
ALTER TABLE `aluga` DROP FOREIGN KEY `fk_aluga_cliente` ,
ADD CONSTRAINT fk_aluga_cliente FOREIGN KEY (`cod_cliente`) REFERENCES `locadora`.`cliente`
(`codcliente`) ON DELETE NO ACTION ON UPDATE CASCADE ;
ALTER TABLE `aluga` DROP FOREIGN KEY `fk_aluga_dvd` ,
ADD CONSTRAINT fk_aluga_dvd FOREIGN KEY ( `cod_dvd` ) REFERENCES `locadora`.`dvd` (`CodD`) ON
DELETE NO ACTION ON UPDATE CASCADE ;
PRATICAR!!!
Crie tabelas, faça modificações em sua estrutura adicionando, excluindo, alterando suas colunas. Inclua,
exclua chaves primária e estrangeira. Faça testes de restrições referenciais (chave estrangeira), tentando
adicionar valores que ainda não existem na chave primária.

Contenu connexe

Tendances

Aula de Reforço Access
Aula de Reforço Access Aula de Reforço Access
Aula de Reforço Access
Daniel da Silva
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
Armando Daniel
 

Tendances (20)

Aula 1
Aula 1Aula 1
Aula 1
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 
Banco de Dados - Conceitos Básicos
Banco de Dados - Conceitos BásicosBanco de Dados - Conceitos Básicos
Banco de Dados - Conceitos Básicos
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Bootstrap praticas mais usadas
Bootstrap praticas mais usadas Bootstrap praticas mais usadas
Bootstrap praticas mais usadas
 
Introdução a Bancos de Dados
Introdução a Bancos de DadosIntrodução a Bancos de Dados
Introdução a Bancos de Dados
 
Aula 2 - Introdução a Banco de Dados
Aula 2 - Introdução a Banco de DadosAula 2 - Introdução a Banco de Dados
Aula 2 - Introdução a Banco de Dados
 
Aula de Reforço Access
Aula de Reforço Access Aula de Reforço Access
Aula de Reforço Access
 
Estrutura de diretorios
Estrutura de diretoriosEstrutura de diretorios
Estrutura de diretorios
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Aula 10 - Adição no Sistema Binário
Aula 10 - Adição no Sistema BinárioAula 10 - Adição no Sistema Binário
Aula 10 - Adição no Sistema Binário
 
Aula 12 – Sistema de Numeração (Conversão de Bases)
Aula 12 – Sistema de Numeração (Conversão de Bases)Aula 12 – Sistema de Numeração (Conversão de Bases)
Aula 12 – Sistema de Numeração (Conversão de Bases)
 
Ebook AngularJS | Guia Introdutório
Ebook AngularJS | Guia Introdutório Ebook AngularJS | Guia Introdutório
Ebook AngularJS | Guia Introdutório
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
02 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.502 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.5
 
Trabalho uml
Trabalho umlTrabalho uml
Trabalho uml
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 

En vedette

Banco de Dados MySQL
Banco de Dados MySQLBanco de Dados MySQL
Banco de Dados MySQL
Marcus Couto
 

En vedette (20)

Microsoft sql server
Microsoft sql serverMicrosoft sql server
Microsoft sql server
 
Mysql
MysqlMysql
Mysql
 
Acces definicion
Acces definicionAcces definicion
Acces definicion
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
 
Db2 (2)
Db2 (2)Db2 (2)
Db2 (2)
 
Aula 08 meios de comunicação de dados
Aula 08 meios de comunicação de dadosAula 08 meios de comunicação de dados
Aula 08 meios de comunicação de dados
 
Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1
 
MySQL - Workshop Buscapé
MySQL - Workshop BuscapéMySQL - Workshop Buscapé
MySQL - Workshop Buscapé
 
Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1
 
Db2
Db2Db2
Db2
 
Banco de Dados MySQL
Banco de Dados MySQLBanco de Dados MySQL
Banco de Dados MySQL
 
Aula 05 instalação de hardware
Aula 05 instalação de hardwareAula 05 instalação de hardware
Aula 05 instalação de hardware
 
Aula 03 instalação de hardware
Aula 03 instalação de hardwareAula 03 instalação de hardware
Aula 03 instalação de hardware
 
Psi-mod-15
Psi-mod-15Psi-mod-15
Psi-mod-15
 
CONEXÃO BANCO DE DADOS MYSQL COM JAVA
CONEXÃO BANCO DE DADOS MYSQL  COM JAVACONEXÃO BANCO DE DADOS MYSQL  COM JAVA
CONEXÃO BANCO DE DADOS MYSQL COM JAVA
 
Aula 06 instalação de hardware
Aula 06 instalação de hardwareAula 06 instalação de hardware
Aula 06 instalação de hardware
 
Aula 04 instalação de hardware
Aula 04 instalação de hardwareAula 04 instalação de hardware
Aula 04 instalação de hardware
 
Aula 07 instalação de hardware
Aula 07 instalação de hardwareAula 07 instalação de hardware
Aula 07 instalação de hardware
 
Aula 12 instalação de hardware
Aula 12 instalação de hardwareAula 12 instalação de hardware
Aula 12 instalação de hardware
 
Aula 12 banco de dados
Aula 12   banco de dadosAula 12   banco de dados
Aula 12 banco de dados
 

Similaire à Comandos DDL para o MySQL

Banco de dados aula 4
Banco de dados aula 4Banco de dados aula 4
Banco de dados aula 4
Ed W. Jr
 
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxintroduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
SaraR49
 
Principais instruções em sql
Principais instruções em sqlPrincipais instruções em sql
Principais instruções em sql
Charleston Anjos
 

Similaire à Comandos DDL para o MySQL (20)

Modulo 15 PSI
Modulo 15 PSIModulo 15 PSI
Modulo 15 PSI
 
Bd08
Bd08Bd08
Bd08
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
Basesdedados
BasesdedadosBasesdedados
Basesdedados
 
Aula10 sql-ddl
Aula10 sql-ddlAula10 sql-ddl
Aula10 sql-ddl
 
Apostila de sql
Apostila de sqlApostila de sql
Apostila de sql
 
Curso de Certificação Linux LPI - Terminal Root
Curso de Certificação Linux LPI - Terminal RootCurso de Certificação Linux LPI - Terminal Root
Curso de Certificação Linux LPI - Terminal Root
 
Aula 05 acessando o mysql
Aula 05   acessando o mysqlAula 05   acessando o mysql
Aula 05 acessando o mysql
 
Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
 
Revisao_SQL_Parte_I.ppt
Revisao_SQL_Parte_I.pptRevisao_SQL_Parte_I.ppt
Revisao_SQL_Parte_I.ppt
 
um breve treinamento sobre SQL e suas funcionalidades
um breve treinamento sobre SQL e suas funcionalidadesum breve treinamento sobre SQL e suas funcionalidades
um breve treinamento sobre SQL e suas funcionalidades
 
Banco de dados aula 4
Banco de dados aula 4Banco de dados aula 4
Banco de dados aula 4
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQL
 
SQL DDL
SQL DDLSQL DDL
SQL DDL
 
Bd sql (1)
Bd sql (1)Bd sql (1)
Bd sql (1)
 
Python 04
Python 04Python 04
Python 04
 
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxintroduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8
 
Principais instruções em sql
Principais instruções em sqlPrincipais instruções em sql
Principais instruções em sql
 

Dernier

Dernier (9)

Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Comandos DDL para o MySQL

  • 1. 1 Banco de Dados – Comandos DLL do MySQL – 17.09.2013 BANCO DE DADOS MySQL 1. COMANDOS DDL (Data Definition Language) 1.1. CREATE Comando usado para criar base de dados, tabelas e views (visões). Veremos VISÕES posteriormente. Criar uma Base de Dados Create database <nomeBD>; Após criar a base de dados, devemos selecioná-la. Use database <nomeBD>; Criar uma Tabela create table filmes ( id int(10) unsigned not null auto_increment, titulo varchar(80) not null, ano int(4) unsigned not null, diretor varchar(80) not null, primary key (id) ); TABELA COM CHAVE ESTRANGEIRA A criação de uma chave estrangeira é bem mais complexa do que uma chave primária. Primeiramente é necessário nomear a restrição através de uma CONSTRAINT e só então especifica quem é o campo que será chave estrangeira e a qual tabela e campo ela está REFERENCIANDO. Para questão de padronização você pode nomear a CONSTRAINT (nomear a restrição) colocando o seguinte nome: fk_tabelaChaveEstrangeira_tabelaChavePrimária. Abaixo 2 exemplos: Criar uma Tabela com 1 Chave Estrangeira create table notafiscal ( numnota int(4) not null auto_increment, dataEmissao date, idCliente int(4) not null, primary key (numnota), constraint fk_notafiscal_cliente foreign key (idCliente) REFERENCES cliente(idCliente) ); Criar uma Tabela com 2 Chaves Estrangeiras create table itemnota ( numItem int(4) not null, codItem int(4) not null, numNota int(4) not null, qtd int(4), valorItem float, primary key (numItem,codItem,numNota), constraint fk_itemnota_produto foreign key (codItem) REFERENCES produto(codItem), constraint fk_itemnota_notafiscal foreign key (numNota) REFERENCES notafiscal(numNota) ); 1.2. DROP Comando usado para excluir. Podemos excluir base de dados, tabelas, views. Excluir uma base de dados drop database nomeDaBase; Curso Técnico em Informática – 3º Semestre Disciplina: Banco de Dados Professor: Arley Rodrigues Semestre: 2013.1 Turno: Tarde Data: 17/09/2013
  • 2. 2 Banco de Dados – Comandos DLL do MySQL – 17.09.2013 Excluir uma tabela drop table nomeTabela; Excluir uma view drop view nomeView; 1.3. ALTER Comando usado para alterar tabelas, colunas, views, índices, chaves (primária, estrangeira e candidata), etc. As alterações podem ser em nomes, exclusões, inclusões, etc. Adicionar um índice ALTER TABLE nomeTabela ADD INDEX nomeIndice; Remover um índice ALTER TABLE <nomeTabela> DROP INDEX <nomeIndice>; Altera o nome de uma tabela ALTER TABLE <nomeTabela> RENAME TO <novoNome>; Altera o nome dos campos de uma tabela ALTER TABLE <nomeTabela> CHANGE <nomeCampo> <novoNomeCampo> <tipo_campo>; Remove um novo campo de uma tabela ALTER TABLE <nomeTabela> DROP <nomeCampo>; Adiciona um novo campo à uma tabela ALTER TABLE <nomeTabela> ADD <nomeCampo> <tipoCampo>; Adiciona um novo campo à uma tabela após um campo especificado ALTER TABLE <nomeTabela> ADD <nomeCampo> <tipoCampo> AFTER <nomeCampoAnterior>; Adiciona um novo campo à uma tabela na primeira posição ALTER TABLE <nomeTabela> ADD <nomeCampo> <tipoCampo> FIRST; Modifica tipo de um campo da tabela indicada ALTER TABLE <nomeTabela> MODIFY <nomeCampo> <tipoCampo>; Adicionar um campo como chave primária ALTER TABLE nomeTabela ADD PRIMARY KEY (<nomeCampo>); Adicionar vários campos como chave primária ALTER TABLE nomeTabela ADD PRIMARY KEY (<nomeCampo1>, <nomeCampo2>, etc); Excluir uma chave primária ALTER TABLE nomeTabela DROP PRIMARY KEY; Para inserir uma chave estrangeira é necessário nomeá-la através de uma CONSTRAINT (Restrição) ALTER TABLE nomeTabela ADD CONSTRAINT <nomeConstraint> FOREIGN KEY <nomeCampoFK> REFERENCES <nomeBD>.<nomeTabela> (<nomeCampo>); Para apagar uma chave estrangeira é necessário excluir através do nome da sua CONSTRAINT ALTER TABLE nomeTabela DROP FOREIGN KEY nomeConstraint;
  • 3. 3 Banco de Dados – Comandos DLL do MySQL – 17.09.2013 1.4. Informações Adicionais ao Declarar Chave Estrangeira Como sabemos as chaves estrangeiras garante a integridade referencial em relação aos valores contidos em uma outra tabela. Podemos controlar o que pode acontecer com os valores contidos nas chaves estrangeiras quando excluímos ou alteramos valores no campo da chave primária a qual ela faz referência. Quando criamos uma chave estrangeira ela tem 2 ações: ON DELETE e ON UPDATE. A ação ON DELETE está condicionada a deleção de um valor ou do campo que faz parte da chave primária, enquanto o ON UPDATE está com a atualização do mesmo. As ações ON DELETE e ON UPDATE podem ser configuradas com as opções RESTRICT, CASCADE, SET NULL, NO ACTION, que significam: CASCADE: Se houver um DELETE da tabela pai, as tabelas filhas também serão deletadas, evitando inconsistência de dados. Se houver um UPDATE na chave primária da tabela pai, as chaves estrangeiras das tabelas filhas também serão atualizadas. SET NULL: Caso uma a tabela pai seja deletada ou sua chave primária seja alterada, as tabelas filhas terão as suas chaves estrangeiras setadas para NULL (exceto quando forem criadas com o parâmetro NOT NULL). NO ACTION: A tentativa de deletar ou atualizar uma tabela pai será ignorada caso ela tenha tabelas filhas. RESTRICT: O mesmo que NO ACTION. Por padrão as chaves estrangeiras são criadas com as seguintes configurações: ON DELETE NO ACTION ON UPDATE NO ACTION. Para você ver como está criada sua tabela basta executar o comando: SHOW CREATE TABLE <nomeTabela>; Exemplo de uma tabela criada com outras opções: CREATE TABLE `cursa` ( `idAluno` int(11) NOT NULL, `idDisciplina` int(11) NOT NULL, `semestre` varchar(6) NOT NULL, PRIMARY KEY (`idAluno`,`idDisciplina`), CONSTRAINT `fk_cursa_alunos` FOREIGN KEY (`idAluno`) REFERENCES `alunos` (`idAlunos`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `fk_cursa_disciplina` FOREIGN KEY (`idDisciplina`) REFERENCES `disciplina` (`idDisciplina`) ON DELETE RESTRICT ON UPDATE NO ACTION ); Para alterar configurações já existentes: ALTER TABLE `aluga` DROP FOREIGN KEY `fk_aluga_cliente` , ADD CONSTRAINT fk_aluga_cliente FOREIGN KEY (`cod_cliente`) REFERENCES `locadora`.`cliente` (`codcliente`) ON DELETE NO ACTION ON UPDATE CASCADE ; ALTER TABLE `aluga` DROP FOREIGN KEY `fk_aluga_dvd` , ADD CONSTRAINT fk_aluga_dvd FOREIGN KEY ( `cod_dvd` ) REFERENCES `locadora`.`dvd` (`CodD`) ON DELETE NO ACTION ON UPDATE CASCADE ; PRATICAR!!! Crie tabelas, faça modificações em sua estrutura adicionando, excluindo, alterando suas colunas. Inclua, exclua chaves primária e estrangeira. Faça testes de restrições referenciais (chave estrangeira), tentando adicionar valores que ainda não existem na chave primária.