Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CRIANDO O BANCO E AS TABELAS COM OS ÍNDICES:
- CREATE DATABASE `fk` DEFAULT CHARACTER SET `utf8` DEFAULT COLLATE `utf8_unicode_ci`;
- USE `fk`;
- CREATE TABLE parent(id INT AUTO_INCREMENT PRIMARY KEY);
- CREATE TABLE child(id INT AUTO_INCREMENT PRIMARY KEY, parent_id INT, INDEX parent_id (parent_id), CONSTRAINT fk_child_parent FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE RESTRICT ON UPDATE CASCADE);
- // Observação: O campo da coluna que poderá ser setado ao se deletar como NULL (caso o programador posteriormente queira), não pode ter sido criado com o parâmetro "NOT NULL" na hora do "CREATE TABLE", se não ocasionará o erro 1005, o que ocasionará conflito
- INSERINDO OS DADOS:
- INSERT INTO parent VALUES(NULL);
- INSERT INTO parent VALUES(NULL);
- INSERT INTO parent VALUES(NULL);
- INSERT INTO child VALUES(NULL, 1);
- INSERT INTO child VALUES(NULL, 1);
- INSERT INTO child VALUES(NULL, 2);
- INSERT INTO child VALUES(NULL, 2);
- INSERT INTO child VALUES(NULL, 3);
- INSERT INTO child VALUES(NULL, 3);
- SELECIONANDO OS DADOS:
- SELECT * FROM parent;
- SELECT * FROM child;
- TENTANDO DELETAR DADOS NA TABELA PAI QUE POSSUEM REFERÊNCIA NA TABELA FILHO:
- //Você observará que não será possível a exclusão na tabela pai, justamente por causa do parâmetro RESTRICT
- DELETE FROM parent WHERE id=1;
- DELETANDO UMA FOREIGN KEY:
- //Observe o nome da sua chave estrangeira na tabela, que nesse caso é: "fk_child_parent"
- SHOW CREATE TABLE child;
- //A seguir, delete-a
- ALTER TABLE child DROP FOREIGN KEY fk_child_parent;
- ALTERANDO (ADICIONANDO) UMA FOREIGN KEY:
- ALTER TABLE child ADD CONSTRAINT fk_child_parent FOREIGN KEY(parent_id) REFERENCES parent(id) ON DELETE SET NULL;
- DELETANDO UM ÍNDICE:
- //DELETE primeiramente a chave estrangeira envolvida, e depois EXECUTE o seguinte código
- DROP INDEX parent_id ON child;
- CRIANDO UM ÍNDICE FORA DO CREATE TABLE:
- // Os índices auxiliam os grandes SGBDs a recolherem os seus dados em menor tempo, através de uma espécie de uso de "atalho rápido"
- CREATE INDEX parent_id ON child(parent_id);
- DEFINIÇÕES DO ON DELETE:
- RESTRICT - Opção DEFAULT. Esta opção não permite a exclusão na tabela pai de um registro cuja chave primária exista em alguma tabela filha.
- CASCADE - Esta opção realiza a exclusão em todas AS tabelas filhas que possua o valor da chave que será excluída na tabela pai.
- SET NULL - Esta opção atribui o valor NULO nas colunas das tabelas filhas que contenha o valor da chave que será excluída na tabela pai.
- PARÂMETRO NOT NULL WITH DEFAULT:
- Preenche o campo com valores pré-definidos, de acordo com o tipo do campo, caso não seja especificado o seu conteúdo no momento da inclusão do registro.
- Os valores pré-definidos são:
- 1) Campos numéricos - Valor zero.
- 2) Campos textos - Espaço em branco.
- 3) Campo formato DATE - DATA corrente.
- 4) Campo formato TIME - Horário corrente.
- RENOMEANDO TABELAS:
- ALTER TABLE child RENAME filha;
- RENOMEANDO COLUNAS:
- //Uma coluna não pode ser renomeada caso haja uma chave estrangeira linkada à ela, é necessário deletá-la primeiro e depois criá-la novamente (A FK)
- ALTER TABLE child CHANGE parent_id pai_id INT;
- MODIFICANDO OS TIPOS DE DADOS DAS COLUNAS SEM RENOMEÁ-LAS:
- ALTER TABLE child MODIFY parent_id INT NOT NULL;
- ADICIONANDO COLUNAS À TABELA:
- //Novas colunas podem ser adicionadas para posicionarem-se na PRIMEIRA POSIÇÃO(FIRST) ou subsequentes à alguma outra coluna(AFTER nome_coluna_desejada)
- ALTER TABLE parent ADD COLUMN parent_name VARCHAR(30) NOT NULL FIRST;
- ALTER TABLE ADD COLUMN child_name VARCHAR(30) NOT NULL WITH DEFAULT AFTER id;
- //Orientado-a para uma nova posição
- ALTER TABLE parent MODIFY parent_name VARCHAR(30) NOT NULL AFTER id;
- ZERANDO UM AUTO_INCREMENTO:
- ALTER TABLE parent AUTO_INCREMENT=1;
- SQL UNIQUE CONSTRAINT ON ALTER TABLE
- ALTER TABLE parent ADD CONSTRAINT unq_parent_name UNIQUE (parent_name);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement