Oracle基础笔记八

第八章 数据处理


1.数据操纵语言

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

向表中插入数据

修改现存数据

删除现存数据

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

2.INSERT 语句语法

使用 INSERT 语句向表中插入数据。

使用这种语法一次只能向表中插入一条数据。

INSERT INTO table [(column [, column...])]

VALUES (value [, value...]);

2.1插入数据

为每一列添加一个新值。

按列的默认顺序列出各个列的值。

在 INSERT 子句中随意列出列名和他们的值。

字符和日期型数据应包含在单引号中。

例如:

INSERT INTO departments(department_id, department_name,

manager_id, location_id)

VALUES      (70, ‘Public Relations‘, 100, 1700);

INSERT INTO employees(employee_id,last_name,email,hire_date,job_id)

VALUES  (300,’Tom’,’[email protected]’,to_date(‘2012-3-21’,’yyyy-mm-dd’),’SA_RAP’);

1 row created.

2.2向表中插入空值

隐式方式: 在列名表中省略该列的值。

INSERT INTO departments (department_id,

department_name    )

VALUES (30, ‘Purchasing‘);

显示方式: 在VALUES 子句中指定空值。

INSERT INTO departments

VALUES (100, ‘Finance‘, NULL, NULL);

2.3插入指定的值

INSERT INTO employees (employee_id,

first_name, last_name,

email, phone_number,

hire_date, job_id, salary,

commission_pct, manager_id,

department_id)

VALUES   (113,

‘Louis‘, ‘Popp‘,

‘LPOPP‘, ‘515.124.4567‘,

SYSDATE, ‘AC_ACCOUNT‘, 6900,

NULL, 205, 100);

2.4从其它表中拷贝数据,在 INSERT 语句中加入子查询。

INSERT INTO emp2

SELECT *

FROM employees

WHERE department_id = 90;

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

SELECT employee_id, last_name, salary, commission_pct

FROM   employees

WHERE  job_id LIKE ‘%REP%‘;

不必书写 VALUES 子句。

子查询中的值列表应与 INSERT 子句中的列名对应

3.使用 UPDATE 语句更新数据。

UPDATE table

SET column = value [, column = value, ...]

[WHERE condition];

3.1使用 WHERE 子句指定需要更新的数据。

UPDATE employees

SET    department_id = 70

WHERE  employee_id = 113;

如果省略 WHERE 子句,则表中的所有数据都将被更新

UPDATE copy_emp

SET     department_id = 110;

22 rows updated.

3.2在 UPDATE 语句中使用子查询

题目:更新 114号员工的工作和工资使其与205号员工相同。

UPDATE   employees

SET      job_id  = (SELECT  job_id

FROM    employees

WHERE   employee_id = 205),

salary  = (SELECT  salary

FROM    employees

WHERE   employee_id = 205)

WHERE    employee_id    =  114;

题目:调整与employee_id 为200的员工job_id相同的员工的department_id为employee_id为100的员工的department_id。

UPDATE  copy_emp

SET     department_id  =  (SELECT department_id

FROM employees

WHERE employee_id = 100)

WHERE   job_id         =  (SELECT job_id

FROM employees

WHERE employee_id = 200);

注意更新中的数据完整性错误

4.DELETE 语句,使用 DELETE 语句从表中删除数据。

DELETE FROM  table

[WHERE  condition];

使用 WHERE 子句删除指定的记录。

DELETE FROM departments

WHERE  department_name = ‘Finance‘;

如果省略 WHERE 子句,则表中的全部数据将被删除

DELETE FROM  copy_emp;

22 rows deleted.

4.2在 DELETE 中使用子查询,使删除基于另一个表中的数据。

题目:从emp1表中删除dept1部门名称中含Public字符的部门id

DELETE FROM emp1

WHERE  department_id =

(SELECT department_id

FROM   dept1

WHERE  department_name LIKE ‘%Public%‘);

5.数据库事务

事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。

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

一个或多个DML 语句

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

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

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

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

COMMIT 或 ROLLBACK 语句

DDL 语句(自动提交)

用户会话正常结束

系统异常终止

COMMIT和ROLLBACK语句的优点:

使用COMMIT 和 ROLLBACK语句,我们可以:

确保数据完整性。

数据改变被提交之前预览。

将逻辑上相关的操作分组。

回滚到保留点:

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

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

UPDATE...

SAVEPOINT update_done;

Savepoint created.

INSERT...

ROLLBACK TO update_done;

Rollback complete.

时间: 2024-10-15 06:02:19

Oracle基础笔记八的相关文章

Oracle基础笔记十

第十章 视图 1.视图:从表中抽出的逻辑上相关的数据集合. 视图是一种虚表. 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表. 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句. 视图向用户提供基表数据的另一种表现形式 2.为什么使用视图 控制数据访问 简化查询 避免重复访问相同的数据 3.分类:简单视图和复杂视图 特性           简单视图       复杂视图 表的数量        一个       一个或多个 函数    

Oracle基础笔记

=====================================第一章:oracle数据库基础============================================= Orace特点: 1.跨操作系统,跨硬件平台的数据操作能力 2.支持多用户,大事务量的处理 3.在保持数据安全性和完整性方面的性能优越 4.支持分布式数据处理,具有可移植性 Sqlserver特点: 1.只能在windows上运行 Oracle和Sqlserver两者的共同点: 1.都是关系型数据库 表

Oracle学习笔记八 表空间

表空间 表空间是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间 . 分区表 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区.表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表. 注意:已经存在的表没有方法可以直接转化为分区表 Oracle允许用户将一个表分成多个分区,用户可以执行查询,只访问表中的特定分区,也

Oracle基础笔记九

第九章 约束 1.什么是约束 约束是表级的强制规定 有以下五种约束:NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK 2.注意事项 如果不指定约束名 ,Oracle server 自动按照 SYS_Cn 的格式指定约束名 创建和修改约束: 建表的同时 建表之后 可以在表级或列级定义约束 可以通过数据字典视图查看约束 3.表级约束和列级约束 作用范围: ①列级约束只能作用在一个列上 ②表级约束可以作用在多个列上(当然表级约束也 可以作用在一个列上) 定义方

Oracle基础笔记十一

第十一章 其他数据库对象 1.什么是序列? 序列:提供有规律的数值. 序列: 可供多个用户用来产生唯一数值的数据库对象 自动提供唯一的数值 共享对象 主要用于提供主键值 将序列值装入内存可以提高访问效率 1.2.定义序列 CREATE SEQUENCE 语句 CREATE SEQUENCE sequence [INCREMENT BY n]  --每次增长的数值 [START WITH n]    --从哪个值开始 [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n

Oracle基础笔记七

第七章 创建和管理表 1.常见的数据库对象 对象 描述 表              基本的数据存储集合,由行和列组成. 视图 从表中抽出的逻辑上相关的数据集合. 序列 提供有规律的数值. 索引 提高查询的效率 同义词 给对象起别名 2.命名规则 表名和列名: 必须以字母开头 必须在 1–30 个字符之间 必须只能包含 A–Z, a–z, 0–9, _, $, 和 # 必须不能和用户定义的其他对象重名 必须不能是Oracle 的保留字 3.数据类型 数据类型                 描述

Oracle学习笔记(八)

十一.子查询 1.子查询概述 学习子查询的原因 事例:查询工资比SCOTT高的员工信息 思路:1.scott的工资 select sal from emp where ename='SCOTT'; 2.比3000高的员工信息 select * from emp where sal>3000; 子查询方式: select * from emp where sal> (select sal from emp where ename='SCOTT'); 2.子查询的使用 子查询注意的10个问题 (a

Oracle基础 (八) 数据完整性

一.数据完整性 数据完整性要求数据库中的数据具有准确性.准确性是通过数据库表的设计和约束来实现的.为了实现数据完整性,数据库需要做两方面的工作: 确保每行的数据符合要求. 去报没咧的数据符合要求. 为了实现以上要求,Oracle提供了一下4种类型的约束(Constraint). 1.实体完整性约束 实体完整性要求表中的每一行数据都反映不同的实体,不能存在相同的数据行.通过主键约束,唯一约束来实现实体完整性. (1)主键约束: 表中的一列或者纪略组合的值能用来唯一的表示表中的每一行,这样的一列或者

Oracle基础笔记四

第四章 多表查询 1.笛卡尔集 笛卡尔集会在下面条件下产生: 省略连接条件 连接条件无效 所有表中的所有行互相连接 为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件. 2.Oracle 连接 使用连接在多个表中查询数据. select table1.column,table2.column from table1,table2 where table1.column = table2.column 在 WHERE 子句中写入连接条件. 在表中有相同列时,在列名之前加上表名前缀 2.1等