Iniciando com MySQL parte 2

Aula 02 - Restrição UNIQUE
CONSTRAINTS são restrições que são estabelecidas em uma coluna de um banco de dados.
Criamos um novo BD baseado no banco da aula anterior. No meu caso criei:
CREATE DATABASE bookstore2; Em seguida criamos uma tabela com as seguintes informações:
create table books
(id int unsigned not null auto_increment,
title varchar(255) not null,
date_publish date,
date_aquisition date,
book_comments varchar(255),
price decimal(10,2) not null,
primary key(id));
A propriedade UNIQUE torna os valores de um campo obrigatóriamente únicos da mesma forma que a PRIMARY KEY, entretanto diferente da segunda pode ser utilizado quantas vezes for necessário em uma tabela.
No banco de dados criamos uma nova tabela authors que terá uma chave do tipo UNIQUE no campo email.
create table authors
(id int unsigned not null auto_increment,
first_name varchar(255) not null,
last_name varchar(255) not null,
gender char(10) not null,
date_of_birth date not null,
email varchar(255) not null,
unique(email), primar key(id));
Para seguir o roteiro da aula alterei o nome do campo id da tabela author pelo Workbench com o comando:
ALTER TABLE `bookstore2`.`authors` CHANGE COLUMN `id` `author_id` INT(10) UNSIGNED NOT NULL ;
ALTER TABLE `bookstore2`.`authors` DROP PRIMARY KEY;
ALTER TABLE authors ADD CONSTRAINT author_id UNIQUE(author_id);
Aula 03 - Restrição chave estrangeira
Uma chave estrangeira é um campo que vincula duas tabelas. É um campo ou um conjunto de campos que se refere a chave primária de outra tabela. Utilizamos essa chave para evitar duplicação de informações.
Para criar uma FOREIGN KEY devemos criar um campo de vínculo entre a tabela que vai receber os dados e o campo que é a chave na outra tabela.
No nosso exemplo fizemos como segue:
ALTER TABLE books ADD COLUMN author_id INT UNSIGNED NOT NULL;
ALTER TABLE books ADD CONSTRAINT FOREIGN KEY (author_id) REFERENCES authors(author_id);
Na aula foi feita a criação através de um DROP e CREATE nas tabelas refazendo todo o processo de criação das tabelas. No meu caso optei por fazer o ALTER TABLE para incluir a coluna e depois para definr a FOREIGN KEY.
Entretanto verifiquei um problema. Meu DB não aceitava a criação da FOREIGN KEY pois estava utilizando uma ENGINE incompatível (para saber a ENGINE utilizada na tabela podemos verificar no Workbench na opção de edição da tabela). Minhas tabelas estavam configuradas para a ENGINE: MyISAM. Pela mensagem de erro era necessário alterar para a ENGINE= InnoDB.
Ainda não aprendi nada sobre essas ENGINES, porém como criei o BD e as tabelas em linha de comando não sei o motivo que ela foi configurada dessa forma.
A alteração da ENGINE foi feita através do seguinte comando: ALTER TABLE `bookstore2`.`authors` ENGINE = InnoDB;
Aula 04 - Restrição CHECK
O comando CHECK permite determinar regras de valores para campos da tabela ou para a tabela inteira.
No nosso exemplo criamos mais uma tabela com dois campos com condições:
CREATE TABLE consumers (
consumer_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
gender CHAR(10) NOT NULL,
age INT,
city VARCHAR(255),
email VARCHAR(255) NOT NULL,
UNIQUE (consumer_id, email),
CHECK (age >= 18 AND city = 'blumenau')
);
Não consegui visualizar o resultado do CHECK na estrutura do BD. Na verdade o CHECK pelo que consegui visualizar não foi definido de modo nenhum.
O MySQL na Hostgator deve estar configurado com a Engine default em MyISAM. Preciso veridicar o arquivo 'my.ini'. Fiz a alteração no arquivo 'my.cnf'. De qualquer modo podemos alterar o ENGINE na criação da tabela incluindo a definição ENGINE=InnoDB após o fechamento do parentese das colunas da tabela.
CREATE TABLE nome_da_tabela (coluna_1...coluna_n)ENGINE=InnoDB;