您的位置:首页 > 数据库 > Oracle

oracle 10g 学习之数据进行增删改查、数据库事务、约束(8)

2013-12-07 16:07 477 查看
目标

通过本章学习,您将可以:

l 使用 DML 语句

l 向表中插入数据

l 更新表中数据

l 从表中删除数据

l 控制事务

l 描述约束

l 创建和维护约束

数据控制语言

l DML(Data Manipulation Language – 数据操作语言) 可以在下列条件下执行:

向表中插入数据

修改现存数据

删除现存数据

l 事务是由完成若干项工作的DML语句组成的

从其它表中拷贝数据

INSERT INTO sales_reps(id, name, salary, commission_pct)

SELECT employee_id, last_name, salary, commission_pct

FROM employees

WHERE job_id LIKE '%REP%';

数据库事务

数据库事务由以下的部分组成:

l 一个或多个DML 语句

l 一个 DDL(Data Definition Language – 数据定义语言) 语句

l 一个 DCL(Data Control Language – 数据控制语言) 语句

l 以第一个 DML 语句的执行作为开始

l 以下面的其中之一作为结束:

l COMMIT 或 ROLLBACK 语句

l DDL 或 DCL 语句(自动提交)

l 用户会话正常结束

l 系统异常终了

控制事务

l 使用 SAVEPOINT 语句在当前事务中创建保存点。

l 使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。

UPDATE...

SAVEPOINT update_done;

INSERT...

ROLLBACK TO update_done;

如果直接ROLLBACK将会全部回滚

什么是约束

l 约束是表级的强制规定

l 有以下五种约束:

• NOT NULL

• UNIQUE

• PRIMARY KEY

• FOREIGN KEY

• CHECK

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

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) 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));

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 语句:

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

l 有效化或无效化约束

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

ALTER TABLE table

ADD [CONSTRAINT constraint] type (column);

ALTER TABLE employees

ADD CONSTRAINT emp_manager_fk

FOREIGN KEY(manager_id)

REFERENCES employees(employee_id);

删除约束

ALTER TABLE employees

DROP CONSTRAINT emp_manager_fk;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: