SQL语句的类型
DQL:数据查询语言,select
DML:数据操作语言,insert、delete、update 可以回退(事务)
DDL:数据定义语言,create / drop / truncate / alter table
DCL:数据控制语言,grant、revoke
DML:
- 增加数据insert
insert into 表名(字段名1,字段名2,...) values(字段值1,字段值2,...)
- 批量插入数据
- 1.创建新表(批量插入之前不存在)
create table mycat as select * from emp;
复制一个和emp表数据一样的表mycat
create table mycat2 as select * from emp where 1=0;
快速创建不带数据的表结构
- 2.在旧表中插入(已存在的表)
insert into mycat2(empno,ename,sal)
select empno,ename,sal from emp;
- 3.begin…and
- 1.创建新表(批量插入之前不存在)
- 删除数据delete
delete from 表名 where 条件
注意
:不加where条件则删除全部数据,但是可以通过rollback
语句回退;truncate
语句也可以删除数据,但不能回退。
原因
:DML:insert update delete可以回退,truncate属于DDL
二者比较
:
1.对于少量数据,delete效率高,一行一行删除;对于海量数据,truncate效率高,先drop table丢弃整张表,再重新创建表。
2.delete支持闪回,truncate不支持闪回。
3.delete不会释放空间(只是换两个地方存储数据[undo空间]),truncate会。
4.delete会产生碎片,truncate不会。
如果碎片太多,需要整理碎片:
a.alter table 表名 move;
b.数据导出导入
- 修改update
update 表名 set 字段名1=字段值1,字段名2=字段值2... where...
DDL:
- 创建表
create table 表名
- 修改表
- 追加新列
alter table mytab add myother varchar2(10);
- 修改列
- 修改列的长度
alter table mytab modify myother varchar2(20);
- 修改列的类型
alter table mytab modify myother number;
注意:blob/clob不能修改,需要先删除此列,再追加。 - 删除列
alter table mytab drop column myother;
- 重命名列名
alter table mytab rename column myother to myother1;
- 修改列的长度
- 追加新列
- 删除表
drop table mytab;
–>放在了回收站
查看回收站:show recyclebin;
清空回收站:purpe recyclebin;
还原回收站:闪回 - 删除表 并清空
drop table 表名 purpe;