Les contraintes d'Oracle sont principalement de maintenir l'intégrité des données au niveau de la logique métier. Principalement par les programmeurs pour spécifier des contraintes dans l'application ou en définissant des déclencheurs pour maintenir l'intégrité des données, et enfin en utilisant les propres contraintes d'Oracle pour maintenir l'intégrité des données. Si vous pouvez utiliser les propres contraintes d'Oracle pour répondre aux exigences, essayez d'utiliser les propres contraintes d'Oracle, car l'utilisation de contraintes définies par l'utilisateur telles que des déclencheurs affectera les performances de la base de données. Par exemple : lors de l'utilisation de déclencheurs, la table sera verrouillée et des analyses de table ou d'index seront effectuées, ce qui réduira les performances et la concurrence de la base de données.
Les contraintes Oracle sont principalement divisées dans les types suivants :
not null contrainte non nulle, contrainte unique unique, contrainte de clé primaire de clé primaire, contrainte de clé étrangère de clé étrangère, contrainte de vérification.
not null contrainte non nulle :
Méthode de création : 1. Définir au niveau de la colonne lors de la création de la table (c'est-à-dire que vous ne pouvez écrire la définition de la contrainte qu'après la colonne lors de la définition de la table), 2 méthodes. L’un utilise des noms de contraintes personnalisés et l’autre utilise les noms par défaut du système.
afficher la copie ordinaire dans le presse-papiers ?
créer la table t
(
tid number(8) contrainte NK_t1 non nulle,
tname varchar2(10) non nul
)
créer la table t
(
tid number(8) contrainte NK_t1 non nulle,
tname varchar2(10) non nul
)
afficher la copie ordinaire dans le presse-papiers ?
SQL> sélectionnez t.constraint_name, t.table_name, t.status, t.deferrable à partir de user_constraints t ;
CONSTRAINT_NAME TABLE_NAME STATUT DIFFÉRABLE
-------------------------------------------------- ------ ----------------
NK_T1 T ACTIVÉ NON DIFFÉRABLE
SYS_C003735 T ACTIVÉ NON DIFFÉRABLE
SQL>
SQL> sélectionnez t.constraint_name, t.table_name, t.status, t.deferrable à partir de user_constraints t ;
CONSTRAINT_NAME TABLE_NAME STATUT DIFFÉRABLE
-------------------------------------------------- ------ ----------------
NK_T1 T ACTIVÉ NON DIFFÉRABLE
SYS_C003735 T ACTIVÉ NON DIFFÉRABLE
SQL>
2. Modifiez la table après sa création, mais assurez-vous que les données de la table ne violent pas les contraintes.
afficher la copie ordinaire dans le presse-papiers ?
SQL> alter table t modifier tid non nul ;
Tableau modifié
SQL> sélectionnez t.constraint_name, t.table_name, t.status, t.deferrable à partir de user_constraints t ;
CONSTRAINT_NAME TABLE_NAME STATUT DIFFÉRABLE
-------------------------------------------------- ------ ----------------
SYS_C003736 T ACTIVÉ NON DIFFÉRABLE
SQL>
SQL> alter table t modifier tid non nul ;
Tableau modifié
SQL> sélectionnez t.constraint_name, t.table_name, t.status, t.deferrable à partir de user_constraints t ;
CONSTRAINT_NAME TABLE_NAME STATUT DIFFÉRABLE
-------------------------------------------------- ------ ----------------
SYS_C003736 T ACTIVÉ NON DIFFÉRABLE
SQL>
vérifier les contraintes
Méthode de création : Elle peut être définie au niveau de la table et au niveau de la colonne (elle peut être définie après la colonne ou après la définition de la colonne). Il existe également 2 manières de définition.
afficher la copie ordinaire dans le presse-papiers ?
SQL> créer une table t
2 (
3 jours numéro(8) ,
4 nom de domaine varchar2(10),
5 vérification de contrainte CK_T1 ((tid n'est pas nul) et (tid > 0))
6)
7/
Tableau créé
SQL> modifier la table pour ajouter une contrainte CK_T2 check (tname n'est pas nul) ;
Tableau modifié
SQL> sélectionnez t.constraint_name, t.table_name, t.status, t.deferrable à partir de user_constraints t ;
CONSTRAINT_NAME TABLE_NAME STATUT DIFFÉRABLE
-------------------------------------------------- ------ ----------------
CK_T1 T ACTIVÉ NON DIFFÉRABLE
CK_T2 T ACTIVÉ NON DIFFÉRABLE
SQL>
SQL> créer une table t
2 (
3 jours numéro(8) ,
4 nom de domaine varchar2(10),
5 vérification de contrainte CK_T1 ((tid n'est pas nul) et (tid > 0))
6)
7/
Tableau créé
SQL> modifier la table pour ajouter une contrainte CK_T2 check (tname n'est pas nul) ;
Tableau modifié
SQL> sélectionnez t.constraint_name, t.table_name, t.status, t.deferrable à partir de user_constraints t ;
CONSTRAINT_NAME TABLE_NAME STATUT DIFFÉRABLE
-------------------------------------------------- ------ ----------------
CK_T1 T ACTIVÉ NON DIFFÉRABLE
CK_T2 T ACTIVÉ NON DIFFÉRABLE
SQL>
La contrainte CK_T1 garantit que la colonne tid ne peut pas être vide et est supérieure à 0, et CK_T2 garantit que iname ne peut pas être vide. Les contraintes de vérification peuvent également être des règles entre différentes colonnes d'une même ligne.
contrainte unique
Méthode de création : Si une colonne unique contient une seule colonne, elle peut être définie au niveau de la colonne. Si une colonne unique contient plusieurs colonnes, elle ne peut être définie qu'au niveau de la table.
afficher la copie ordinaire dans le presse-papiers ?
SQL> créer la table t2
2 (
3 contraintes de numéro de vidéo VK_T1 uniques,
4 nom virtuel varchar2(10),
5 vsex varchar2 (10),
6 contrainte VK_T2 unique(vname,vsex)
7)
8/
Tableau créé
SQL> sélectionnez t.constraint_name, t.table_name, t.status, t.validated, t.deferrable à partir de user_constraints t ;
CONSTRAINT_NAME TABLE_NAME STATUT VALIDÉ DIFFÉRABLE
--------------- ---------- -------- ---------- ------- -------
VK_T1 T2 ACTIVÉ VALIDÉ NON DIFFÉRABLE
VK_T2 T2 ACTIVÉ VALIDÉ NON DIFFÉRABLE
SQL>
SQL> créer la table t2
2 (
3 contraintes de numéro de vidéo VK_T1 uniques,
4 nom virtuel varchar2(10),
5 vsex varchar2 (10),
6 contrainte VK_T2 unique(vname,vsex)
7)
8/
Tableau créé
SQL> sélectionnez t.constraint_name, t.table_name, t.status, t.validated, t.deferrable à partir de user_constraints t ;
CONSTRAINT_NAME TABLE_NAME STATUT VALIDÉ DIFFÉRABLE
--------------- ---------- -------- ---------- ------- -------
VK_T1 T2 ACTIVÉ VALIDÉ NON DIFFÉRABLE
VK_T2 T2 ACTIVÉ VALIDÉ NON DIFFÉRABLE
SQL>
Lorsque la contrainte unique est créée, un index sera généré (il peut s'agir d'un index unique, donc il peut également s'agir d'un index non unique, selon que la table est spécifiée lors de la création de la table pour vérifier les contraintes de données immédiatement lorsque la contrainte unique est créée. les données sont insérées) :
afficher la copie ordinaire dans le presse-papiers ?
SQL> sélectionnez t.index_name, t.table_name, t.uniqueness from user_indexes t ;
INDEX_NAME TABLE_NAME UNIQUENESS
---------- ---------- ----------
VK_T1 T2 UNIQUE
VK_T2 T2 UNIQUE
SQL> sélectionnez t.index_name, t.table_name, t.uniqueness from user_indexes t ;
INDEX_NAME TABLE_NAME UNIQUENESS
---------- ---------- ----------
VK_T1 T2 UNIQUE
VK_T2 T2 UNIQUE
Puisqu'il existe un index, vous pouvez spécifier l'emplacement de stockage de l'index et certains paramètres de stockage lors de la création de la table.
afficher la copie ordinaire dans le presse-papiers ?
SQL> créer la table t2
2 (
3 contraintes de numéro de vidéo VK_T1 uniques,
4 nom virtuel varchar2(10),
5 vsex varchar2(10),
6 contraintes VK_T2 uniques (vname, vsex) utilisant l'index tablespace indx
7 stockage (100 000 initiaux, 100 000 pc suivants, augmentation de 0)
8 nologging
9)
10/
Tableau créé
SQL> créer la table t2
2 (
3 contraintes de numéro de vidéo VK_T1 uniques,
4 nom virtuel varchar2(10),
5 vsex varchar2 (10),
6 contraintes VK_T2 uniques (vname, vsex) utilisant l'index tablespace indx
7 stockage (100 000 initiaux, 100 000 pc suivants, augmentation de 0)
8 nologging
9)
10/
Tableau créé
L'espace table dans lequel l'index contraint est stocké est l'espace table indx, la taille du bloc initial est de 100 Ko et aucun journal n'est généré pour les opérations DML (mais les journaux sont également générés pour d'autres raisons, mais il y a moins de journaux que la journalisation par défaut)
clé primaire contrainte de clé primaire
Méthode de création : La clé primaire est principalement composée de non nulles et d'unicité. Une table ne peut contenir qu'une seule clé primaire, mais une clé primaire peut contenir plusieurs colonnes.
afficher la copie ordinaire dans le presse-papiers ?
SQL> créer la table t2
2 (
3 contraintes de numéro de vidéo VK_T1 uniques,
4 nom virtuel varchar2(10),
5 vsex varchar2 (10),
6 contraintes clé primaire VK_T2 (vname, vsex) utilisant l'index tablespace indx
7 stockage (100 000 initiaux, 100 000 pc suivants, augmentation de 0)
8 nologging
9)
10/
Tableau créé
SQL> créer la table t2
2 (
3 contraintes de numéro de vidéo VK_T1 uniques,
4 nom virtuel varchar2(10),
5 vsex varchar2 (10),
6 contraintes clé primaire VK_T2 (vname, vsex) utilisant l'index tablespace indx
7 stockage (100 000 initiaux, 100 000 pc suivants, augmentation de 0)
8 nologging
9)
10/
Tableau créé
clé étrangère clé étrangère
Méthode de création : Les tables impliquées dans la clé étrangère peuvent avoir deux ou une seule table. Dans le cas de deux tables, la clé référencée par un champ dans une table fille doit être la clé primaire de la table la plus grosse. La contrainte est établie dans la table enfant, indiquant que la valeur du champ de la table doit exister dans la table parent ou être une valeur NULL.
afficher la copie ordinaire dans le presse-papiers ?
SQL> créer un département de table
2 (
3 a fait le numéro (8),
4 nom de domaine varchar2(20),
5 contraintes clé primaire PK_DEPT (did)
6)
7/
Tableau créé
SQL>
SQL> créer une table emp
2 (
3 clé primaire du numéro eid (8),
4 nommer varchar2(20),
5 a fait le numéro (8) /*références département(did)*/,
6 nom de domaine varchar2(20),
7 contraintes FK_EMP2 clé étrangère (did) références dept (did)
8)
9/
Tableau créé
SQL> créer un département de table
2 (
3 a fait le numéro (8),
4 nom de domaine varchar2(20),
5 contraintes clé primaire PK_DEPT (did)
6)
7/
Tableau créé
SQL>
SQL> créer une table emp
2 (
3 clé primaire du numéro eid (8),
4 nommer varchar2(20),
5 a fait le numéro (8) /*références département(did)*/,
6 nom de domaine varchar2(20),
7 contraintes FK_EMP2 clé étrangère (did) références dept (did)
8)
9/
Tableau créé
Étant donné que la clé étrangère (clé étrangère) est déterminée par la clé de référence (clé de référence), il y aura des restrictions lors de l'exécution de mises à jour, de suppression, de suppression et d'autres opérations sur la table plus récente. Plus précisément, il est déterminé par l'état des contraintes de clé étrangère.
supprimer sur l'action, supprimer la cascade, supprimer l'ensemble nul
Supprimer lors de l'action est le paramètre par défaut. Si vous supprimez les données de la table précédente, Oracle verrouillera la table de mots, puis analysera la table (s'il y a une colonne de clé étrangère, analysera l'index), puis les données n'existeront pas dans la colonne de clé étrangère dans la table enfant. Suppression autorisée.
delete cascade supprime également la ligne correspondante dans le tableau de mots.
delete set null, les données correspondant à la colonne de clé étrangère dans la table bar deviennent NULL.
afficher la copie ordinaire dans le presse-papiers ?
créer une table emp
(
clé primaire du numéro eid (8),
enname varchar2(20),
a fait le numéro (8) /*références département(did)*/,
nom varchar2(20),
la contrainte FK_EMP2 clé étrangère (did) fait référence au département (did) lors de la suppression de l'ensemble nul
)
créer une table emp
(
clé primaire du numéro eid (8),
enname varchar2(20),
a fait le numéro (8) /*références département(did)*/,
nom varchar2(20),
la contrainte FK_EMP2 clé étrangère (did) fait référence au département (did) lors de la suppression de l'ensemble nul
)