数据处理

sql语言的类型

​ DML data manipulation language 数据操作语言,对应增删改查
​ DDL data definition language 数据定义语言 create, drop, truncate
​ DCL data control language 数据控制语言 grant, revoke, commit, rollback

  1. 数据库中,称呼增删改查,为DML语句。(Data Manipulation Language 数据操纵语言),就是指代:

​ insert、update、delete、select这四个操作。

  1. DDL语句。(Data Definition Language 数据定义语言)。 如:truncate table(截断/清空 一张表)

​ create table(表)、create view(视图)、create index(索引)、create sequence(序列)、

​ create synonym(同义词)、alter table、drop table。

  1. DCL语句。DCL(Data Control Language数据控制语言)如:

​ commit(提交)、rollback(回滚)

DML语句:

插入和拷贝

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1 insert语句: 
insert into tablename[col1,…] values(val1,…);

--插入全部列
insert into dept values(51,'51name','51loc');
插入所有的数据时,列名可以不写

--插入部分列
insert into dept(deptno, dname) values(55, '55name');

--隐式插入null
insert into dept(deptno,dname) values(52,'52name');

--显示插入null
insert into dept(deptno,dname,loc) values(53,'53name',null);

--&符号的使用:
insert into dept(deptno, dname, loc) values(&t1, &t2, &t3);

拷贝表结构:
create table tname_YYYY_MM_DD as select * from tname_xxxxx where 1=2; ---where条件为假, 之拷贝表结构

批量插入:
insert into tname_bak select * from tname where .....;

修改

1
2
3
4
5
6
7
8
2 update语句: update tablename set col1=val1, col2=val where  cond;
--修改emp表的员工名字为TOM_CAT的员工的薪水为原有薪水加100
update emp set sal=sal+100 where ename='TOM_CAT';

--修改emp表的员工名字为TOM_CAT的员工的薪水为原有薪水加空
update emp set sal=null where ename='TOM_CAT';
**注意: 在update的时候, null可以使用等号
**注意: 在update的时候, 一定要使用where条件, 否则会修改表中所有的记录

删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  3 delete语句: delete from tablename where cond;
delete from emp where ename='TOM_CAT';
delete from dept where ename = &dpt;
**注意: 在使用delete删除的时候一定要有where条件, 否则会删除整个表的记录

truncate table 表名; 删除表中所有数据,不可恢复


--delete和truncate的区别:
1. delete逐条删除表"内容", truncate先摧毁表再重建。
(由于delete使用频繁,Oracle对delete优化后delete快于truncate)

2. delete 是DML语句, truncate是DDL语句
DML语句可以闪回(flashback), DDL语句不可以闪回
(闪回:做错了一个操作并且commit了, 对应的撤销行为)

3. 由于delete是逐条操作数据,所以delete会产生碎片,truncate不会产生碎片。
(同样是由于Oracle对delete进行了优化, 让delete不产生碎片)。
两个数据之间的数据被删除, 删除的数据——碎片, 整理碎片, 数据连续, 行移动

4. delete不会释放空间, truncate会释放空间
用delete删除一张10M的表, 空间不会释放。而truncate会。所以当确定表不再使用,应truncate

5. delete可以回滚rollback, truncate不可以回滚rollback

实验验证一些delete和truncate
通过实验比较, truncate删除的效率比delete快.
打开时间回显: SQL> set timing on;
关闭时间回显: SQL> set timing off;

批量插入

1
2
3
start 脚本名.sql

@ 脚本名.sql