Primeiro, as restrições de integridade da tabela
Para evitar que dados não compatíveis sejam armazenados no banco de dados , o MySQL fornece um mecanismo para verificar se os dados no banco de dados atendem às condições especificadas quando os usuários inserem, modificam e excluem dados para garantir a precisão dos dados no banco de dados .Consistência e consistência, este mecanismo é restrições de integridade .
O MySQL suporta principalmente os seguintes tipos de restrições de integridade, conforme mostrado na tabela. A restrição Check é o suporte fornecido no MySQL8.
2. Restrições de chave não estrangeira
1. Restrições de chave primária e restrições de incremento automático
Uma restrição de chave primária significa que, se uma restrição de chave primária for adicionada a um campo, o valor desse campo poderá identificar exclusivamente um registro. Uma restrição de incremento automático significa que o valor do campo restrito é incrementado automaticamente. Restrições de chave primária e restrições de auto-incremento são geralmente usadas juntas e frequentemente usadas em números de sequência de restrição.
Uma restrição de incremento automático (AUTO_INCREMENT) pode aumentar automaticamente o valor de um campo em uma tabela. Só pode haver um campo de incremento automático em uma tabela e o campo deve ter uma restrição definida (a restrição pode ser uma restrição de chave primária, uma restrição exclusiva ou uma restrição de chave estrangeira). campo de incremento automático, o banco de dados exibirá o erro "Definição de tabela incorreta; pode haver apenas uma coluna automática e ela deve ser definida como uma chave".
Como as restrições de incremento automático geram automaticamente IDs exclusivos, as restrições de incremento automático geralmente são usadas com chaves primárias e são aplicáveis apenas a tipos inteiros. Em geral, o valor do campo de restrição de incremento automático começará em 1 e o valor do campo aumentará em 1 para cada registro adicional.
create table student(
stu_id int(10) primary key,
stu_name varchar(3),
stu_sex varchar (1)
);
/*为student表中的主键字段添加自增约束*/
alter table student11 modify stu_id int(10) auto_increment;
Use a instrução ALTER TABLE para descartar a restrição de incremento automático:
alter table student modify stu_id int(10);
2. Restrições não vazias
Os valores dos campos restritos não podem estar vazios.
3. Restrição única
O valor de um campo com uma restrição única não pode ser repetido.
4. Verifique as restrições
Ao adicionar uma restrição de verificação, você pode definir o intervalo de valores e os valores que não atendem ao intervalo não serão adicionados à tabela do banco de dados.
5. Restrições de valor padrão
Depois de adicionar uma restrição de valor padrão a um campo, se o campo não tiver um valor passado, o valor padrão será usado.
3. Classificação de restrições de chave não estrangeira
As restrições de chave não estrangeira podem ser divididas em duas categorias em termos de função:
- Restrições em nível de tabela : qualquer um ou mais campos na tabela podem ser restringidos. É independente da definição da coluna e não está incluída na definição da coluna; é separada da definição por uma vírgula; deve ser indicado o nome da coluna a ser restringida; por exemplo:
constraint pk_stu primary key (sno) -- pk_stu 主键约束的名字
- Restrições em nível de coluna : incluídas em uma definição de coluna, imediatamente após outras definições para essa coluna, separadas por espaços; nenhum nome de coluna é necessário; por exemplo:
sno int(6) primary key auto_increment
1. Crie uma tabela usando restrições em nível de coluna . A estrutura gramatical é: nome da coluna, tipo de coluna nome da restrição
Ao criar a tabela contendo os dados do aluno, adicione várias restrições de chave não estrangeira a ela:
create table t_student(
sno int(6) primary key auto_increment, -- 自增约束+主键约束
sname varchar(5) not null, -- 非空约束
sex char(1) default '男' check(sex='男' || sex='女'), -- 检查约束+默认值约束
age int(3) check(18<=age<35),
enterdate date,
classname varchar(10),
email varchar(15) unique -- 唯一约束
);
2. Use restrições de nível de tabela para construir uma tabela. A estrutura gramatical é: restrição O nome dado a esta restrição Nome da restrição (nome do campo + condição)
Ao criar a tabela contendo os dados do aluno, adicione várias restrições de chave não estrangeira a ela:
create table t_student(
sno int(6) auto_increment,
sname varchar(5) not null,
sex char(1) default '男',
age int(3),
enterdate date,
classname varchar(10),
email varchar(15),
constraint pk_stu primary key (sno), -- pk_stu 主键约束的名字
constraint ck_stu_sex check (sex = '男' || sex = '女'),
constraint ck_stu_age check (age >= 18 and age <= 50),
constraint uq_stu_email unique (email)
);
Existe outra maneira de escrever restrições em nível de tabela, que é adicionar restrições por meio de instruções SQL após a criação da tabela, por exemplo:
alter table t_student add constraint pk_stu primary key (sno) ; -- 主键约束
alter table t_student modify sno int(6) auto_increment; -- 修改自增条件
alter table t_student add constraint ck_stu_sex check (sex = '男' || sex = '女');
alter table t_student add constraint ck_stu_age check (age >= 18 and age <= 50);
alter table t_student add constraint uq_stu_email unique (email);