Oracle查询表约束:三步走(oracle查询表的约束)
Oracle 查询表约束是想要检查表相关字段有没有唯一约束或外键等约束信息,是一件费时费力的工作。但是好在 Oracle提供了系统表来查询相关约束信息,用户只需要稍微研究一下,就可以知道细节。本文就将介绍通过3个步骤来查询表的约束信息。
**第一步:查询USER_CONSTRAINTS表**
USER_CONSTRAINTS表存放了用户拥有的约束信息,如果要查询某个表的约束信息,可以用如下SQL语句:
“`sql
SELECT A.TABLE_NAME,
A.CONSTRAINT_NAME,
A.CONSTRAINT_TYPE
FROM USER_CONSTRAINTS A
WHERE A.TABLE_NAME=’table_name’;
“`
其中table_name为你要查询约束的表名,CONSTRAINT_NAME表示约束名称,CONSTRAINT_TYPE表示约束类型,结果类似如下:
Table Name | Constraint Name | Constraint Type
———— | ————- | ————-
T_SCHOOL | PK_SCHOOL | P
N_SCHOOL | FK_CLASSES_SCHOOL | R
**第二步:查询USER_CONS_COLUMNS表**
如果想知道约束在哪些字段上起作用,可以查询USER_CONS_COLUMNS表,用如下SQL语句:
“`sql
SELECT A.COLUMN_NAME,
A.POSITION
FROM USER_CONS_COLUMNS A
WHERE A.CONSTRAINT_NAME=’constraint_name’;
“`
其中constraint_name为前面查询USER_CONSTRAINTS表时返回的约束名称,结果类似如下:
Column Name | Position
———— | ————-
SCHOOL_ID | 1
CLASS_ID | 2
**第三步:查询USER_CONS_COLUMNS表**
当我们需要查询某个字段上定义的约束时,可以查询USER_CONSTRAINTS表,用如下SQL语句:
“`sql
SELECT A.COLUMN_NAME,
B.CONSTRAINT_NAME,
B.CONSTRAINT_TYPE
FROM USER_CONS_COLUMNS A,
USER_CONSTRAINTS B
WHERE A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
AND A.COLUMN_NAME=’column_name’;
“`
其中column_name为要查询的字段名;结果类似如下:
Column Name | Constraint Name | Constraint Type
———— | ————- | ————-
SCHOOL_ID | PK_SCHOOL | P
CLASS_ID | FK_CLASSES_SCHOOL | R
以上就是Oracle表约束查询的三个步骤,简单高效。在查询表约束时只要记住表USER_CONSTRAINTS,USER_CONS_COLUMNS这两个表,就可以实现查询相关约束信息,避免重复设计导致数据出错的问题,有助于提高工作效率。