视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Oracle11g第十章知识点总结约束
2020-11-09 07:58:47 责编:小采
文档


Oracle 11g 第十章知识点总结——约束 知识点预览 复习 约束 复习 --主键primarykey--(非空唯一) --唯一能够标识表里的一条记录--非空 not null--唯一性约束unique--检查约束 check(gender in('男','女')) --外键 --当前表里的这个外键是另外一张表里的主键

Oracle 11g 第十章知识点总结——约束


知识点预览

复习

约束

复习


--主键
primarykey
--(非空+唯一)
 --唯一能够标识表里的一条记录
--非空
 not null
--唯一性约束
unique
--检查约束
 check(gender in('男','女'))
 
--外键
 --当前表里的这个外键是另外一张表里的主键
 --必须和哪个主键的数据类型和长度保持一致
 
 
--删除表
 drop table table_name
 --产生乱码
 purge table "BIN$2RcRpY2KSLy+FONALkCBUw==$0";
 purge table t_tes;--错误
 
 
--DBA
 
 
--创建表
--分类表
--基表
 
 create tablecategory (
 idnumber(3) primary key,
 namevarchar2(20) not null
 );
--产品表
--从表
 
 create table product(
 idnumber(10) primary key,
 namevarchar2(20) not null,
 cidnumber(3),
 constraintscott_product_cid_FK foreign key(cid) references category(id)
 );
 
 insert into categoryvalues(1,'电脑');
 insert into productvalues(1,'IBM',1);
 
 insert into categoryvalues(2,'食品');
 insert into productvalues(2,'牛肉干',2);
 
--删除
--先删除从表数据
--后删主表数据
 delete category where id=1;
 



约束


1. 什么是约束

a) 约束是表级的强制规定

b) 约束放置在表中删除有关联关系的数据

c) 有以下五种约束:

i. NOT NULL

ii. UNIQUE

iii. PRIMARY KEY

iv. FOREIGN KEY

v. CHECK


2. 注意事项

a) 如果不指定约束名 Oracle server 自动按照 SYS_Cn 的格式指定约束名

b) 在什么时候创建约束:

i. 建表的同时

ii. 建表之后

c) 可以在表级或列级定义约束

d) 可以通过数据字典视图查看约束


3. 定义约束

a) 语法

CREATE TABLE[schema.]table

(columndatatype [DEFAULT expr]

[column_constraint],

...

[table_constraint][,...]);

CREATE TABLEemployees(
 employee_id NUMBER(6),
 first_name VARCHAR2(20),
 ...
 job_id VARCHAR2(10) NOT NULL,
 CONSTRAINT emp_emp_id_pk
 PRIMARYKEY (EMPLOYEE_ID));


b) 列级

column [CONSTRAINT constraint_name]constraint_type,

c) 列级

column,...

[CONSTRAINT constraint_name]constraint_type

(column, ...),

4. NOT NULL 约束

a) 保证列值不能为空:

b) 只能定义在列级:



5. UNIQUE 约束

可以定义在表级或列级:

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,
... 
 CONSTRAINT emp_email_uk UNIQUE(email));


6. PRIMARY KEY 约束

可以定义在表级或列级:

CREA TETABLE 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 PRIMARYKEY(department_id));


7. FOREIGN KEY 约束

可以定义在表级或列级:

CREATE TABLEemployees(
 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));


8. FOREIGN KEY 约束的关键字

a) FOREIGN KEY: 在表级指定子表中的列

b) REFERENCES: 标示在父表中的列

c) ON DELETE CASCADE: 当父表中的列被删除是,子表中相对应的列也被删除

d) ON DELETE SET NULL: 子表中相应的列置空


9. CHECK 约束

a) 定义每一行必须满足的条件

b) 以下的表达式是不允许的:

i. 出现CURRVAL, NEXTVAL, LEVEL, 和ROWNUM 伪列

ii. 使用 SYSDATE, UID, USER, 和 USERENV 函数

iii. 在查询中涉及到其它列的值

..., salary NUMBER(2)
 CONSTRAINT emp_salary_min 
 CHECK (salary > 0),...


10. 添加约束的语法

使用 ALTER TABLE 语句:

添加或删除约束, 但是不能修改约束

有效化或无效化约束

添加 NOT NULL 约束要使用 MODIFY 语句

ALTER TABLE table

ADD [CONSTRAINT constraint]type (column);

11. 添加约束举例

ALTER TABLE employees
ADDCONSTRAINT emp_manager_fk
 FOREIGN KEY(manager_id)
 REFERENCES employees(employee_id);


Table altered.


12. 删除约束

a) 表 EMPLOYEES 中删除约束

ALTER TABLE employees
DROPCONSTRAINT emp_manager_fk;


Table altered.

b) 使用CASCADE选项删除约束

ALTER TABLE departments
DROP PRIMARY KEYCASCADE;


Table altered.


13. 无效化约束

a) 在ALTER TABLE 语句中使用 DISABLE 子句将约束无效化。

b) 使用 CASCADE 选项将相关的约束也无效化

 
ALTER TABLE employees
DISABLE CONSTRAINT emp_emp_id_pk CASCADE;


Table altered.


14. 激活约束

a) ENABLE 子句可将当前无效的约束激活

ALTER TABLE employees
ENABLECONSTRAINT emp_emp_id_pk;


Table altered.

b) 当索引定义或激活UNIQUE 或 PRIMARY KEY 约束时系统会自动创建UNIQUE 或 PRIMARY KEY

15. 及连约束

a) CASCADE CONSTRAINTS 子句在 DROP COLUMN 子句中使用

b) 在删除表的列时 CASCADE CONSTRAINTS 子句指定将相关的约束一起删除

c) 在删除表的列时 CASCADE CONSTRAINTS 子句同时也删除多列约束

d) 及连约束举例:

ALTER TABLEtest1
DROP (pk)CASCADE CONSTRAINTS;


Table altered.

ALTER TABLEtest1
DROP (pk, fk,col1) CASCADE CONSTRAINTS;


Table altered.


16. 查询约束

查询数据字典视图 USER_CONSTRAINTS

SELECT constraint_name, constraint_type,
search_condition
FROM user_constraints
WHERE table_name = 'EMPLOYEES';


17. 查询定义约束的列

查询数据字典视图 USER_CONS_COLUMNS

SELECT constraint_name, column_name
FROM user_cons_columns
WHERE table_name = 'EMPLOYEES';

下载本文
显示全文
专题