Maison >base de données >tutoriel mysql >contrainte unique multi-champs mysql

contrainte unique multi-champs mysql

(*-*)浩
(*-*)浩original
2019-05-10 13:09:388738parcourir

La contrainte unique MySQL (Unique Key) nécessite que la colonne soit unique et permet d'être nulle, mais une seule valeur nulle peut apparaître. Une contrainte unique garantit qu'il n'y a pas de valeurs en double dans une ou plusieurs colonnes.

contrainte unique multi-champs mysql

Définir la contrainte unique lors de la création de la table

Utiliser le mot-clé UNIQUE directement après avoir défini la colonne pour spécifier la contrainte unique, règles de syntaxe Comme suit :

<字段名> <数据类型> UNIQUE

Créez la table de données tb_dept2, spécifiez le nom unique du département et entrez l'instruction SQL et les résultats d'exécution comme indiqué ci-dessous.

mysql> CREATE TABLE tb_dept2
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(22) UNIQUE,
    -> location VARCHAR(50)
    -> );
Query OK, 0 rows affected (0.37 sec)
mysql> DESC tb_dept2;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | NULL    |       |
| name     | varchar(40) | YES  | UNI | NULL    |       |
| location | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.08 sec)

Astuce : La différence entre UNIQUE et PRIMARY KEY : Une table peut avoir plusieurs champs déclarés comme UNIQUE, mais il ne peut y avoir qu'une seule déclaration PRIMARY KEY ; les colonnes déclarées comme PRIMAY KEY ne sont pas autorisées à avoir des valeurs nulles, mais la déclaration des valeurs NULL est autorisée pour les champs UNIQUE.

Ajouter une contrainte unique lors de la modification de la table

Le format de syntaxe pour ajouter une contrainte unique lors de la modification de la table est :

ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>);

Modifier les données table tb_dept1, spécifiez Le nom du département est unique. L'instruction SQL d'entrée et les résultats d'exécution sont les suivants.

mysql> ALTER TABLE tb_dept1
    -> ADD CONSTRAINT unique_name UNIQUE(name);
Query OK, 0 rows affected (0.63 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC tb_dept1;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | NULL    |       |
| name     | varchar(22) | NO   | UNI | NULL    |       |
| location | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

Supposons que les utilisateurs soient tenus d'aimer les commentaires. La conception de la base de données est composée de trois tables, la table utilisateur t_user, la table de commentaires t_comment et la table des likes t_praise. Il y a deux clés étrangères dans la table des likes. : user_id et comment_id sont respectivement associés à l'identifiant utilisateur de la table utilisateur et à l'identifiant de commentaire de la table de commentaires, puis stipulent qu'un utilisateur ne peut aimer le même commentaire qu'une seule fois. Une façon d'y parvenir est d'interroger via user_id et comment_id. avant de l'insérer dans la table similaire. S'il existe un enregistrement similaire, sinon, effectuez à nouveau l'opération d'insertion, sinon cela vous indiquera que vous l'avez déjà aimé. S'il est implémenté de cette manière, il y aura une autre opération de requête de base de données. une meilleure implémentation consiste à modifier le user_id et le comment_id de la table like pour qu'ils soient une contrainte unique, c'est-à-dire que les deux colonnes ne peuvent pas être identiques en même temps, de cette façon, si vous avez déjà cliqué sur like lors de l'opération d'insertion, le La base de données générera une violation de la contrainte de clé unique. Dans ce cas, vous pouvez éviter une opération de requête de base de données supplémentaire. Il existe de nombreux paramètres spécifiques. L'instruction répertoriée comme seule contrainte est :

UNIQUE KEY <唯一约束名>(<列名>,...,<列名n>)
rrree.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn