[MySQL] Restrições de integridade da tabela - restrições de chave não estrangeira

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

Acho que você gosta

Origin blog.csdn.net/hold_on_qlc/article/details/129806437
Recomendado
Clasificación