概述
约束:顾名思义指的就是强制规定。而在ORACLE中约束指的是约束是表级的强制规定!!
那么他有几种约束呢:五种
- NOT NULL 指不能我为空
- UNIQUE 指唯一的,独立的
- PRIMARY KEY 指设置主键的
- FOREIGN KEY 指设置外键
- CHECK 指检查性约束
ORACLE 中的注意事项:
如果不指定约束名,Oracle server 自动按照SYS_Cn的格式指定约束名
创建和修改约束:
建表的同时
建表之后
可以在表级或列级定义约束
可以通过数据字典视图查看约束
表级约束和列级约束:
作用范围:
①列级约束只能作用在一个列上
②表级约束可以作用在多个列上(当然表级约束也
可以作用在一个列上)
定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是单独定义。
非空(not null) 约束只能定义在列上
那么我们看下约束的具体用法:
NOT NULL 约束:只能定义在列级
CREATE TABLE employees(
employee_id NUMBER(6),
last_name VARCHAR2(25) NOT NULL,
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
hire_date DATE
CONSTRAINT emp_hire_date_nn
NOT NULL,
UNIQUE 约束:唯一的,独一的,不可以重复,指的是数据不能是多条的,可定义在表级或者是列级
CREATE TABLE employees(
employee_id NUMBER(6),
last_name VARCHAR2(25) UNIQUE,
email VARCHAR2(25),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
hire_date DATE NOT NULL,
PRIMARY KEY 约束:主键约束,也就是说每个表 只有一个主键也只能定义一个主键
CREATE TABLE departments(
department_id NUMBER(4),
department_name VARCHAR2(30)
CONSTRAINT dept_name_nn NOT NULL,
manager_id NUMBER(6),
location_id NUMBER(4),
CONSTRAINT dept_id_pk PRIMARY KEY(department_id));
FOREIGN KEY 约束:外键约束,出了在本表充当主键外,还可以在其他表充当外键,这样主要是为了两表之间的一个连接。
CREATE TABLE employees(
employee_id NUMBER(6),
last_name VARCHAR2(25) NOT NULL,
email VARCHAR2(25),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
hire_date DATE NOT NULL,
department_id NUMBER(4),
CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)
REFERENCES departments(department_id),
CONSTRAINT emp_email_uk UNIQUE(email));
FOREIGN KEY 约束的关键字
FOREIGN KEY: 在表级指定子表中的列
REFERENCES: 标示在父表中的列
ON DELETE CASCADE(级联删除): 当父表中的列被删除时,子表中相对应的列也被删除
ON DELETE SET NULL(级联置空): 子表中相应的列置空
CHECK 约束:定义每一行必须满足的条件,也就是为了检查每行中的条件是否满足之前所定的条件。
..., salary NUMBER(2)
CONSTRAINT emp_salary_min
CHECK (salary > 0),...
添加约束的语法
使用 ALTER TABLE 语句:
添加或删除约束,但是不能修改约束
有效化或无效化约束
添加 NOT NULL 约束要使用 MODIFY 语句
添加约束举例
ALTER TABLE employees
ADD CONSTRAINT emp_manager_fk
FOREIGN KEY(manager_id)
REFERENCES employees(employee_id);
删除约束
ALTER TABLE employees
DROP CONSTRAINT emp_manager_fk;
无效化约束:在ALTER TABLE 语句中使用 DISABLE 子句将约束无效化。
ALTER TABLE employees
DISABLE CONSTRAINT emp_emp_id_pk;
这样的写法是错误的。
激活约束:
ENABLE 子句可将当前无效的约束激活
ALTER TABLE employees
ENABLE CONSTRAINT emp_emp_id_pk;
当定义或激活UNIQUE 或 PRIMARY KEY 约束时系统会自动创建UNIQUE 或 PRIMARY KEY索引。
查询约束
查询数据字典视图 USER_CONSTRAINTS
SELECT constraint_name, constraint_type,
search_condition
FROM user_constraints
WHERE table_name = 'EMPLOYEES';
查询定义约束的列
查询数据字典视图 USER_CONS_COLUMNS
SELECT constraint_name, column_name
FROM user_cons_columns
WHERE table_name = 'EMPLOYEES';
总结:这就是ORACLE中约束的常用的一些举例。
最后
以上就是单身水蜜桃为你收集整理的ORACLE SQL约束constraint的全部内容,希望文章能够帮你解决ORACLE SQL约束constraint所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复