数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,是开发以数据为中心的应用程序必定会使用到的指令,因此有很多开发人员都把加上SQL的SELECT语句的四大指令以“CRUD”来称呼。
一、数据查询 - Select
select语句完整的句法如下:
select 目标表的列名或列表达式序列
from 基本表名和(或)视图序列
[ where 行条件表达式 ]
[ group by 列名序列
[ order by 列名[ asc|desc ],… ]
select * from employees where to_char(hire_date,'yyyy-mm') =to_char(sysdate,'yyyy-mm');
二、数据插入-Insert
功能:在表中插入一条新的数据注意:
Column缺省默认为所有列、如果某列值为空,需设为null例1:
insert into t_gtype values('T00001','日用百货');
例2:
insert into t_gtype(gtname,gtid) values('儿童用品','T00002');
(1)使用函数
values('000002','李宇',to_date('1989-10-25','yyyy-mm-dd') ,'m','佛山禅城区','0757-89999999');
注:字符串加单引号、字符串日期数据要转换格式
(2)使用表格定义的默认值
values('P00000000001',default,'1','初始化系统数据');
(3)使用序列
insert into t_user(uiid,uname)
注:nextval 伪列用于从指定序列中提取连续的序列号。必须用序列名来限定nextval。在引用“序列名.nextval”时,会生成新的序列号,并将当前的序列号放置在currval 中。
(3)使用select
可以使用INSERT INTO SELECT语句实现在insert语句
中使用子查询
语法格式为:
select value1,value2,... from table1;
三、数据修改-Update
修改表中的数据语法:
例子:
update employees set salary = salary + 100;(1)基于子查询的修改
update tablename
四、数据删除 - Delete
删除表中的数据语法:
例子:删除t_goods数据
delete from t_goods ;注:delete 只是将数据标记为unused,要清除大表数据存储空间,用truncate
五、事务
commit:发出commit 语句后,当前事务处理结束,所有待定更改变为永久性更改。rollback:发出rollback 语句后,将放弃所有待定更改。
savepoint:在事务处理中创建标记,该标记将事务处理分成几个较小的部分。
rollback to savepoint:允许用户将当前事务处理回退到指定的保存点。
事务处理何时开始或结束事务处理从第一个DML(INSERT、UPDATE、DELETE 或MERGE)语句开始。
出现以下任一情况时事务处理结束:
- 发出了COMMIT 或ROLLBACK 语句
- 发出了DDL和DCL
- 用户退出了iSQL*Plus 或SQL*Plus
文章来源: Oracle入门(十三)之SQL的DML