什么是Oracle的约束:
Oracle Sql的约束就是表级的强制规定,是数据库对表级和列级的强制规定,规定表级和列级某些约束,添加了约束条件之后在表中操作数据和添加数据是不能违反添加的约束条件,否则操作不成功代码。表中有约束条件的可以修改原有的约束条件的或是删除约束条件,建表的时候可以给表中添加约束条件的或这时建完表之后也可以死添加约束条件,可以在表级或列级定义约束可以通过数据字典视图查看约束。
有以下五种约束:
NOT NULL 非空的
UNIQUE 唯一的
PRIMARY KEY 主键
FOREIGN KEY 外键
CHECK 条件约束
表级约束和列级约束
作用范围:
①列级约束只能作用在一个列上
②表级约束可以作用在多个列上(当然表级约束也可以作用在一个列上)
• 定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是单独定义。
• 非空(not null) 约束只能定义在列上
约束的使用:
1、 在列级添加:下面我是在创建一个表的时候给表和列添加约束,象这句代码“name varchar(10)constraint emp1nmae_nn not null”我给name这个列加上非空约束,添加约束要在列的类型后写上去,添加约束的时候要接上这个单词 “constraint”+约束的名称(如果不加上名称Oracle server 自动按照 SYS_CN 的格式指定约束名)+ 上约束条件了。
2、 在表级添加:在表级添加约束和在列级添加约束差不多的在表级里添加约束要指定在那个列上添加如这句代码“constraint emp1_id_pk primary key(id),–主键约束”在后面括号里有个id,也就是说实在id的列添加约束的。
3、 约束只能添加或删除不能修改约束的
如下面的代码有表级和列级的约束:
• create table emp1(
• --列级约束
• id number(10),
• name varchar(10)constraint emp1nmae_nn not null,
• email varchar(20),
• salary number(10),
• department_id number(8),
•
• --表级约束
• constraint emp1_id_pk primary key(id),–主键约束
• constraint emp1_email_uk unique(email),–唯一性约束
• constraint emp1_depa_id_fk foreign key(department_id) references
departments(department_id)–外键约束
• )
删除约束
你要删除约束,找到对应的表在表下面找到你有删除的约束即可,
第一种用代码删除:
–删除约束
ALter table emp1 drop constraints emp1_salary_nn;
第二种在对象管理:在对象管理找到所对应表里然后找出你要删除的约束名称即可,
无效化和激活约束:
无效化约束把约束禁用的意思约束就不起作用了;激活约束把无效化的约束条件激活,激活约束里面的字段不能违反约束条件违反约束会报错的。
--无效化约束
alter table employees
disable constraint emp_emp_id_pk;
激活约束
--激活约束
alter table employees
enable constraint emp_emp_id_pk;
查询表定义约束的列:
constraint_name:约束名;column_name:列名;table_name = ‘EMPLOYEES’:跟着是表名; 查询某个表里面定义的列如以下代码:
SELECT constraint_name, column_name
FROM user_cons_columns
WHERE table_name = 'EMPLOYEES';
如图所示