Gerenciando banco de dados com MySQL (parte 2)
Nesta segunda parte do artigo irei demonstrar outros comandos SQL, além de mostrar como manter a integridade em suas tabelas e como tornar o seu banco de dados mais seguro.
Parte 2: Restrições de integridade
São regras que servem para prevenir a entrada de informações
inválidas pelos usuários. Para isso, o SGBD provê ferramentas
para regras de integridade, afim de evitar a inconsistência dos
dados que nele serão armazenados.
Para evitar que um campo possa conter valor nulo (ou não conter valor algum) deve-se utilizar a cláusula NOT NULL após a definição da coluna, como já demonstrado anteriormente:
Valores nulos
Para evitar que um campo possa conter valor nulo (ou não conter valor algum) deve-se utilizar a cláusula NOT NULL após a definição da coluna, como já demonstrado anteriormente:
mysql> CREATE TABLE alunos (
-> nome VARCHAR(50) NOT NULL, // não aceita valor nulo
-> endereco VARCHAR(50) NULL // aceita valor nulo
);
-> nome VARCHAR(50) NOT NULL, // não aceita valor nulo
-> endereco VARCHAR(50) NULL // aceita valor nulo
);
Valores Duplicados
Há situações onde o valor armazenado em um campo de um registro deve ser único em relação a todos os registros da tabela, para isso usamos a cláusula UNIQUE:
mysql> CREATE TABLE alunos (
-> nome VARCHAR(50) NOT NULL,
-> CPF INT(11) UNIQUE, // não deve haver dois registro com o mesmo CPF
...
);
-> nome VARCHAR(50) NOT NULL,
-> CPF INT(11) UNIQUE, // não deve haver dois registro com o mesmo CPF
...
);
Valores Inválidos
Há situações onde o valor de um campo deve obedecer a uma regra. Para que ele fique restrito a um conjunto de valores, utiliza-se a cláusula CHECK:
mysql> CREATE TABLE alunos (
-> nome VARCHAR(50) NOT NULL,
-> sexo CHAR(1) CHECK(sexo IN ("M", "F")), // obriga usar M ou F
...
);
-> nome VARCHAR(50) NOT NULL,
-> sexo CHAR(1) CHECK(sexo IN ("M", "F")), // obriga usar M ou F
...
);
Valores default
Pode-se definir um valor padrão para um campo acrescentando à sua definição a cláusula DEFAULT:
mysql> CREATE TABLE alunos (
-> nome VARCHAR(50) NOT NULL,
-> cidade VARCHAR(30) DEFAULT "Nova Friburgo") ...
-> nome VARCHAR(50) NOT NULL,
-> cidade VARCHAR(30) DEFAULT "Nova Friburgo") ...
Campo chave ou chave primária
Como já comentado anteriormente, o campo chave é um campo muito importante para nossa tabela. Sua função é identificar univocamente uma linha do registro da tabela. Toda tabela deve possuir um campo chave. Quando este é definido, fica implícito as cláusulas UNIQUE e NOT NULL para este campo, não sendo necessário a especificação destas.
mysql> CREATE TABLE alunos (
-> matricula VARCHAR(5) NOT NULL,
-> nome VARCHAR(50) NOT NULL,
-> PRIMARY KEY(matricula)); // define o campo matricula como chave
-> matricula VARCHAR(5) NOT NULL,
-> nome VARCHAR(50) NOT NULL,
-> PRIMARY KEY(matricula)); // define o campo matricula como chave
<? $soma = mysql_query("SELECT SUM($ordem) FROM menu_admin");?>
<?echo "Total $soma; "?>;