Orcle基础知识(DML)

SQL语句的类型:

DQL:数据查询语言select
DML:数据操作语言,insert delete update --》可以回退(可以进行事务操作)
DDL :数据定义语言 create/drop /truncate /alter table
DCL:数据控制语言 grant, revoke

DML操作

1增加数据insert

insert into 表名(字段名1,字段名2,…,) values(字段值1,字段值2,…)
字段名和字段值一一对象:数据类型、个数、顺序

insert into emp(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
values(2222,'zhangsan','MANAGER',7788,'19-9月 -88',9998,1000,10);

1.1省略字段名

(1)values插入的数据 必须是 完整的字段,并且顺序和默认顺序一致
(2)目前使用的SQL99标准,可以省略字段名(如果是SQL92则不能省略,MyCat)

insert into emp
values(3322,'LISI','MANAGER',7788,'19-9月 -88',9998,1000,10);

如果插入的数据不完整,可以协商 部分字段名

insert into emp(EMPNO,ENAME,JOB)
values(444,'zhan','MANAGER');

动态输入插入的值(&) Scanner input = new Scanner(System.in); input.next();

insert into emp(EMPNO,ENAME,JOB)
values(&empno,&xxx,&job);
如果是字符、日期: 仍然需要加'   '
insert into emp(EMPNO,ENAME,&otherName)
values('5555','kkk',&otherValue);

1.2批量插入数据

1.2.1创建新表(批量插入之前不存在)

完全复制
emp ->复制 mytab

create table mytab 
as
select *from emp;

部分复制

create table mytab2
as
select empno,ename ,job from emp;
create table mytab3
as
select empno,ename ,job from emp
where sal < 6000;

还可以用于快速创建表结构:
mytab4 -> emp

create table mytab4 
as
select *from emp where 1=0 ;
1.2.2在旧表中插入(已存在的表)
insert into mytab4(empno,ename,sal)
select empno,ename ,sal from emp;
1.2.3 begin …end /
begin
	insert into emp
values(1221,'LISI','MANAGER',7788,'19-9月 -88',9998,1000,10);
	insert into emp
values(1223,'LISI','MANAGER',7788,'19-9月 -88',9998,1000,10);
end ;

海量数据: 数据泵 \ SQL Loader\ 外部表

2删除数据delete

2.1部分删除

delete from emp  where 	empno >7900;

2.2全表删除:

1.回退

//可以回退
delete from emp  ;
//不能回退
truncate table emp  ;

原因: DML:insert update delete ->可以回退
2.测试二者执行时间

//打开执行时间:
set timing on/off

对于少量数据: delete 效率高 ,一行一行删除
对于海量数据:truncate效率高 , a.drop table 丢弃整张表 ,b.重新创建表

3.delete支持闪回, truncate不支持闪回
4.delete不会释放空间 (换个地方存储数据[undo空间]),trucante会
5.delete会产生碎片,trunate不会

如果碎片太多,需要整理碎片:
a. alter table 表名 move ;
b. 导出导入

3修改update

update 表名 set 字段名1=字段名1 , 字段名2=字段名2,字段名3=字段名3… where …

update emp 
set ename = 'x' ,job ='y' 
where empno>7900;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值