如何获取Oracle中表中存在的所有约束的列表?

时间:2016-10-11 03:20:27

标签: sql oracle

我有一个名为STUDENT的表,其中包含以下属性:

enroll VARCHAR(20), 
name VARCHAR(50), 
age INT, 
fees FLOAT(6,2)

现在我想知道这个表中是否存在所有约束(如主键,唯一键,NOT NULL等)。请告诉我怎样才能得到这个?

4 个答案:

答案 0 :(得分:1)

您可以从user_constraints

获取
SELECT *
FROM user_constraints
WHERE table_name = 'STUDENT'

确保通过大写字母STUDENT。 table_name区分大小写

要了解约束类型,请检查此列CONSTRAINT_TYPE

约束定义类型:

C (check constraint on a table)
P (primary key)
U (unique key)
R (referential integrity)
V (with check option, on a view)
O (with read only, on a view)

答案 1 :(得分:1)

您可以在两个表 USER_CONSTRAINTS USER_CONS_COLUMNS 上使用JOIN来获取列名,约束类型和表名。

SELECT ucc.COLUMN_NAME, uc.CONSTRAINT_TYPE ,uc.TABLE_NAME 
FROM USER_CONSTRAINTS uc  JOIN  USER_CONS_COLUMNS ucc 
ON uc.CONSTRAINT_NAME = ucc.CONSTRAINT_NAME 
AND uc.TABLE_NAME=ucc.TABLE_NAME
WHERE uc.TABLE_NAME='mytablename';

约束定义可以称为:

C (check constraint on a table)
P (primary key)
U (unique key)
R (referential integrity)
V (with check option, on a view)
O (with read only, on a view)

有关详细信息,请查看Oracle文档here

答案 2 :(得分:0)

尝试此View查询并指定表名以获取所有约束详细信息。

SELECT * FROM user_cons_columns WHERE table_name = '<YOUR_TABLE_NAME>';

或者

SELECT * FROM user_constraints WHERE table_name = '<your table name>' AND constraint_name = '<your constraint name>';

答案 3 :(得分:0)

只需使用describe

describe student 但请记住你应该使用Web浏览器模式