数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,是开发以数据为中心的应用程序必定会使用到的指令,因此有很多开发人员都把加上SQL的SELECT语句的四大指令以“CRUD”来称呼。
一、数据查询 - Select
select语句完整的句法如下:
select 目标表的列名或列表达式序列
from 基本表名和(或)视图序列
[ where 行条件表达式 ]
[ group by 列名序列
[ having 组条件表达式 ] ]
[ order by 列名[ asc|desc ],… ]
select * from employees where to_char(hire_date,'yyyy-mm') =to_char(sysdate,'yyyy-mm');
注:Oracle入门(十三)之Select
二、数据插入-Insert
功能:在表中插入一条新的数据语法:insert into tablename [(column [,column...])] values(value1 [, value2...])
注意:
Column缺省默认为所有列、如果某列值为空,需设为null例1:
insert into t_gtype values('T00001','日用百货');
例2:
insert into t_gtype(gtname,gtid) values('儿童用品','T00002');
(1)使用函数
insert into t_user
values('000002','李宇',to_date('1989-10-25','yyyy-mm-dd') ,'m','佛山禅城区','0757-89999999');
注:字符串加单引号、字符串日期数据要转换格式
(2)使用表格定义的默认值
insert into t_main_procure(pmid,pdate,pstate,pmemo)
values('P00000000001',default,'1','初始化系统数据');
(3)使用序列
insert into t_user(uiid,uname)
values(user_seq.nextval,'系统管理员');
注:nextval 伪列用于从指定序列中提取连续的序列号。必须用序列名来限定nextval。在引用“序列名.nextval”时,会生成新的序列号,并将当前的序列号放置在currval 中。
注:Oracle入门(十二)之序列(G)
(3)使用select
可以使用INSERT INTO SELECT语句实现在insert语句
中使用子查询
语法格式为:
insert into table2(field1,field2,...)
select value1,value2,... from table1;
三、数据修改-Update
修改表中的数据语法:
update tablename
set column1 = value1 [, column2 = value2, ...]
[where condition];
例子:
update employees set salary = salary + 100;
(1)基于子查询的修改
update tablename
set column1 = (select 子句)
[where condition];
四、数据删除 - Delete
删除表中的数据语法:
delete [from] table
[where condition];
例子:删除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