Bases de MySQL – Contraintes

Table des matières

1. Aperçu des contraintes

 2. Classement

3. Testez les contraintes de la table utilisateur

contraintes de clé primaire

Contraintes non nulles et contraintes uniques

Vérifier les contraintes

Contraintes par défaut

4. Contraintes des clés étrangères

Syntaxe des contraintes de clé étrangère

 Comportement de suppression/mise à jour des contraintes de clé étrangère

résumé


1. Aperçu des contraintes

Les contraintes MySQL (Contraintes) sont des règles utilisées pour garantir l'intégrité et la cohérence des données dans une table. Ils définissent des contraintes sur les données dans les tables de base de données pour garantir que les données répondent à des exigences spécifiques.

 2. Classement

  1. Contrainte de clé primaire : une clé primaire est une colonne ou une combinaison de colonnes qui identifie de manière unique chaque ligne d'une table. La valeur de la colonne de clé primaire doit être unique et ne peut pas être NULL. Les contraintes de clé primaire garantissent que chaque ligne de la table possède un identifiant unique.

  2. Contrainte unique : Une contrainte unique garantit que les valeurs d'une colonne ou d'une combinaison de colonnes sont uniques, mais autorise les valeurs NULL. Il est utilisé pour empêcher les données en double d’apparaître dans le tableau.

  3. Contrainte de clé étrangère : les clés étrangères sont utilisées pour établir des relations entre les tables. Les contraintes de clé étrangère garantissent qu'une valeur d'une table existe dans la colonne de clé primaire d'une autre table. Cela permet de maintenir l’intégrité référentielle entre les tables.

  4. Contrainte de vérification : Une contrainte de vérification définit la plage ou les conditions pour les valeurs autorisées dans une colonne. Il peut être utilisé pour garantir l'intégrité des données, par exemple en garantissant que les valeurs de la colonne âge sont supérieures ou égales à 18. (La version requise est après 8.0.16)

  5. Contrainte par défaut : La contrainte par défaut définit la valeur par défaut qui sera insérée lors de l'insertion d'une nouvelle ligne si aucune valeur n'est fournie. Cela permet de garantir que les données du tableau ont toujours certaines valeurs prédéfinies.

  6. Contrainte NOT NULL : La contrainte non nulle garantit que la valeur de la colonne n'est pas vide, c'est-à-dire qu'elle ne peut pas contenir de valeurs NULL.

Dans les tables de données ordinaires, telles que id, il s'agit d'un identifiant unique qui n'est pas vide et grandit généralement tout seul. Il existe certaines restrictions sur ces champs. Si les conditions ne sont pas remplies, les données de la table de données ne peuvent pas être modifiées. de.

Créez une table utilisateur ci-dessous pour tester

create table user(
    id int primary key auto_increment comment  '主键',
    name varchar(10) not null unique comment '昵称',
    age int  check ( age > 0 and age <= 120 ) comment '年龄',
    status char(1) default '1' comment '状态',
    gender char(1) comment '性别'
) comment '用户表'

Ce cas utilise presque toutes les six contraintes ci-dessus. ID a une contrainte de clé primaire, auto_increment est un paramètre d'incrémentation automatique, name a une contrainte non nulle et une contrainte unique, age est une contrainte de vérification et status est une contrainte par défaut.

3. Testez les contraintes de la table utilisateur

contraintes de clé primaire

Insérer des données

insert into user(name, age, status, gender) values ('zs',19,'1','男'), ('ls',13,'0','女')

Après l'exécution, vous pouvez voir que l'identifiant n'a pas été inséré, mais en raison des contraintes de clé primaire et du traitement d'auto-incrémentation que nous avons utilisé, l'identifiant s'incrémentera automatiquement et restera unique.

Pour vérifier davantage l'unicité, vous pouvez exécuter le SQL suivant. Supprimez d'abord les données avec l'ID 2, puis insérez un élément.

delete from user where id = 2;
insert into user(name, age, status, gender) values ('ww',29,'1','男');

On peut voir que bien que les données avec id=2 soient supprimées après exécution, parce qu'elles ont existé, l'id passera à 3 afin de conserver l'unicité.

Contraintes non nulles et contraintes uniques

Selon le processus ci-dessus, nous insérons à nouveau l'élément portant le nom « ww » et une erreur sera signalée lors de l'exécution de SQL.

insert into user(name, age, status, gender) values ('ww',29,'1','男');

 Exécutez un tel SQL, le champ de nom est nul ou n'est pas inséré

insert into user(name, age, status, gender) values (null,29,'1','男');
insert into user( age, status, gender) values (20,'1','男')

Une erreur comme celle-ci se produira

Vérifier les contraintes

 Lors de l'insertion d'une telle donnée, l'âge est évidemment plus grand que la plage dont nous avons besoin, et des erreurs correspondantes apparaîtront également à ce moment-là.

insert into user(name, age, status, gender) values ('ll',121,'1','男');

Contraintes par défaut

 L'exécution d'une telle instruction SQL sans insérer de statut remplira le « 1 » par défaut

insert into user(name, age, gender) values ('pp',11,'男');

4. Contraintes des clés étrangères

 D'après la classification précédente, vous pouvez probablement connaître le rôle des contraintes de clé étrangère, qui consiste à associer une table à une autre table via un certain champ, comme dans la situation suivante.

Créer une table SQL :

create table dept(
    id int auto_increment primary key,
    name varchar(40) not null comment '部门名称'
) comment '部门表';
insert into dept (name) values ('研发部'),('市场部'),('财务部');


create table spm(
    id int auto_increment primary key ,
    name varchar(50) not null ,
    age int,
    job varchar(40) comment  '职位',
    dept_id int comment '部门ID'
) comment '员工表';

insert into spm ( name, age, job, dept_id) values ('zs',20,'前端',1),('ls',30,'销售',2);

Il y a une table des employés ici en ce moment

et une table de département

Le dept_id dans la table des employés est associé à la table des services. Si nous modifions les données qu'elle contient à ce moment-là, car aucune contrainte de clé étrangère n'est utilisée, elles ne seront pas affectées les unes par les autres. Il s'agit uniquement d'une association de contraintes théorique. Si nous voulons faire Pour les associer véritablement, des contraintes de clés étrangères doivent être utilisées.

Syntaxe des contraintes de clé étrangère

 Donner des contraintes de clé étrangère lors de la création d'une table

create table 表名(
    字段名 数据类型,
    ...
    [constraint] [外键名称] foreign key(外键字段名) references 主表(主表列名)
)

Parce que j'ai déjà créé la table auparavant, je ne peux désormais utiliser que la deuxième méthode.

alter table spm add constraint fk_spm_dept_id foreign key (dept_id) references dept(id);

Désormais, si nous voulons supprimer les données de la table des départements, une erreur apparaîtra.

À ce stade, la connexion a été établie. Afin de garantir l'intégrité des données, les données ne peuvent pas être supprimées à volonté. À ce stade, l'objectif d'intégrité et de cohérence est atteint.

Supprimer l'association

alter table spm drop foreign key fk_spm_dept_id;

 Comportement de suppression/mise à jour des contraintes de clé étrangère

L'objectif principal de la suppression/mise à jour des contraintes de clé étrangère est de maintenir l'intégrité et la cohérence des données et de garantir que les relations entre les tables sont maintenues.

Les plus courants sont les suivants

  1. AUCUNE ACTION : Lors de la suppression/mise à jour de l'enregistrement correspondant dans la table parent, vérifiez d'abord si l'enregistrement possède une clé étrangère correspondante. Si c'est le cas, la suppression/mise à jour n'est pas autorisée. (Identique à RESTRICT).

  2. SET NULL : lors de la suppression de l'enregistrement correspondant dans la table parent, vérifiez d'abord si l'enregistrement a une clé étrangère correspondante, et si c'est le cas, définissez la valeur de la clé étrangère dans la table enfant sur null (cela nécessite que la clé étrangère autorise null)' .

  3. SET DEFAULT : Lorsque la table parent change, la table enfant définit la colonne de clé étrangère à une valeur par défaut (Innodb ne prend pas en charge cela)

  4. RESTRICT : Lors de la suppression/mise à jour de l'enregistrement correspondant dans la table parent, vérifiez d'abord si l'enregistrement a une clé étrangère correspondante. Si c'est le cas, la suppression/mise à jour n'est pas autorisée. (Conforme à AUCUNE ACTION)

  5. CASCADE : Lors de la suppression/mise à jour de l'enregistrement correspondant dans la table parent, vérifiez d'abord si l'enregistrement a une clé étrangère correspondante. Si c'est le cas, supprimez/mettez à jour l'enregistrement avec la clé étrangère dans la table enfant.

Cas:

Établir une connexion en cascade

alter table spm add constraint fk_spm_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade ;

Une fois la connexion établie à ce moment, tant que les données de la table parent sont modifiées, la table qui lui est associée sera également modifiée, comme décrit ci-dessus.

résumé

  1. Le rôle des contraintes :

    • Les contraintes sont un outil important pour garantir l'intégrité et la cohérence des données dans une base de données.
    • Ils définissent des règles et des restrictions pour les données des tables de base de données afin d'empêcher les données invalides ou incohérentes d'entrer dans la base de données.
  2. Principaux types de contraintes :

    • Contrainte de clé primaire (PRIMARY KEY) : utilisée pour identifier de manière unique chaque ligne du tableau, garantissant que chaque valeur est unique et que les valeurs NULL ne sont pas autorisées.
    • Contrainte unique (UNIQUE) : ​​garantit que les valeurs de la colonne sont uniques, mais autorise les valeurs NULL.
    • Contraintes de clé étrangère (FOREIGN KEY) : utilisées pour établir des relations entre les tables, garantir l'intégrité référentielle, empêcher les références invalides et maintenir la cohérence des données.
    • Vérifier les contraintes (CHECK) : Définissez la plage ou les conditions des valeurs autorisées dans la colonne pour garantir que les données répondent à des règles spécifiques.
  3. La différence entre clé primaire et contrainte unique :

    • Une clé primaire est une contrainte unique spéciale qui identifie de manière unique une ligne et n'autorise pas les valeurs NULL.
    • Une contrainte unique garantit que les valeurs de la colonne sont uniques, mais autorise une valeur NULL.
  4. Le rôle des contraintes de clés étrangères :

    • Les contraintes de clé étrangère sont utilisées pour établir des relations entre les tables afin de garantir que les données référencées existent dans la table référencée.
    • Il peut être configuré sous forme de mises à jour ou de suppressions en cascade pour maintenir la cohérence des données.
    • Les contraintes de clé étrangère aident à éviter les données orphelines et à maintenir l’intégrité des données.
  5. Vérifiez l'effet des contraintes :

    • Une contrainte de vérification définit une plage ou une condition pour les valeurs autorisées dans une colonne.
    • Il est utilisé pour garantir que les données répondent à des règles spécifiques, telles que des plages de dates, des plages numériques, etc.
  6. Création et gestion des contraintes :

    • Les contraintes peuvent être définies lors de la création de la table, ou elles peuvent ALTER TABLEêtre modifiées ou supprimées à l'aide d'instructions ultérieures.
    • Il peut s'agir d'une contrainte au niveau de la colonne ou de la table, selon la portée de la contrainte.

Dans MySQL, l'utilisation correcte des contraintes peut vous aider à concevoir une base de données plus robuste et plus fiable, à garantir l'intégrité et la cohérence des données et à fournir de puissantes fonctions de relations entre les données. Une compréhension approfondie et la maîtrise de l’application de ces contraintes sont importantes pour le développement et la gestion de bases de données.

おすすめ

転載: blog.csdn.net/m0_64642443/article/details/133281657