oracle数据库(五)DML操作

1 SQL语句的类型:

1 DQL:数据查询语言select

2 DML:数据操作语言,insert delete update --》可以回退(可以进行事务操作)

3 DDL :数据定义语言 create/drop /truncate /alter table

4 DCL:数据控制语言 grant, revoke

2.1 DML:

2.1.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.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.创建新表(批量插入之前不存在)
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 ;

2.在旧表中插入(已存在的表)
	insert into mytab4(empno,ename,sal)
	select empno,ename ,sal from emp;

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.1.2 删除delete

delete from 表名 ;
delete from emp where empno >7900;
1.加where
2. delete from 表名 ;

全表删除:

  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.导出导入

2.1.3 修改 update/delete :where

修改update

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

update emp set ename = ‘x’ ,job =‘y’ where empno>7900;

3 DDL: create/drop/truncate/alter

3.1创建表

create table mytab6
(
id number ,
name varchar(10),
age number
)
;
注意事项:
1.权限和空间问题
2.表名的规定:
a.必须以字母开头
b.表名只能包含: 大小写字母、数字、_、KaTeX parse error: Expected 'EOF', got '#' at position 2: 、#̲ c.长度 1-30个字符…reserved_words order by keyword asc ;

设置某个字段的宽度:
字符
	col KEYWORD for a10
数字
col  LENGTH for 9999

3.2修改表:

a.追加新列

alter table mytab6 add myother varchar2(10) ;

b.修改列
修改列的长度
alter table mytab6 modify myother varchar2(20) ;
修改列的类型

		alter table mytab6 modify  myother number ;
	注意: blob/clob不能修改  ->先删除此列,重新追加

		alter table mytab6 add myother2 blob ;

		alter table mytab6 modify  myother2 number ;

c删除列
alter table mytab6 drop column myother2 ;

d重命名列
alter table mytab6 rename column myother to myother3 ;

3.3删除表

select *from tab; 表以及回收站中的表
drop table mytab6;  -->放在了回收站
查看回收站		
show recyclebin;

清空回收站
	purge recyclebin;

还原回收站
	闪回

删除表 并清空: drop table test02 purge ;

猜你喜欢

转载自blog.csdn.net/qq_36869436/article/details/91907751