SlideShare ist ein Scribd-Unternehmen logo
1 von 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.

Weitere ähnliche Inhalte

Was ist angesagt?

Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
Sérgio Souza Costa
 

Was ist angesagt? (20)

ICC - Aula 05 - Estrutura de controle, sequencial e condicional
ICC - Aula 05 - Estrutura de controle, sequencial e condicionalICC - Aula 05 - Estrutura de controle, sequencial e condicional
ICC - Aula 05 - Estrutura de controle, sequencial e condicional
 
Linguagem SQL
Linguagem SQLLinguagem SQL
Linguagem SQL
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumo
 
Consultas SQL
Consultas SQLConsultas SQL
Consultas SQL
 
Aula03 - JavaScript
Aula03 - JavaScriptAula03 - JavaScript
Aula03 - JavaScript
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Modulo 15 PSI
Modulo 15 PSIModulo 15 PSI
Modulo 15 PSI
 
Estruturas de dados
Estruturas de dadosEstruturas de dados
Estruturas de dados
 
Aula 2 - Comandos DDL DML DQL E DCL
Aula 2 - Comandos DDL DML DQL E DCLAula 2 - Comandos DDL DML DQL E DCL
Aula 2 - Comandos DDL DML DQL E DCL
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e Funções
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggers
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Pilha e filas
Pilha e filasPilha e filas
Pilha e filas
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL Básico
 
Comandos ms-dos - Atualizado 29/10/2014
Comandos ms-dos - Atualizado 29/10/2014Comandos ms-dos - Atualizado 29/10/2014
Comandos ms-dos - Atualizado 29/10/2014
 

Andere mochten auch

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

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie Comandos DDL para o MySQL (20)

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
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
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
 
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
 
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
 
Agbd aula4 sql_ddl
Agbd aula4 sql_ddlAgbd aula4 sql_ddl
Agbd aula4 sql_ddl
 
Banco de dados comandos sql
Banco de dados   comandos sqlBanco de dados   comandos sql
Banco de dados comandos sql
 

Kürzlich hochgeladen

Kürzlich hochgeladen (9)

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
 
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
 
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
 
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
 
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
 
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 - 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 - 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 - 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
 

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.