TOP

Oracle06、增删改数据(一)
2017-10-16 18:20:02 】 浏览:10157
Tags:Oracle06 删改 数据

昨天整理了关于Oracle的查询的相关知识,今天将之前的学习笔记整理了一下,准备介绍一下关于Oracle增删改的相关知识。之后博主也会将之前学习的一些学习的基础的笔记作为博文发出来,希望读者能够多多指正,毕竟之前的学习肯定存在了些许的不足之处。整理笔记已经按照分类分类完成了。

一、回顾SQL92/99标准的四大类

(1)DML(数据操纵语言):select,insert,update,delete
(2)DDL(数据定义语言):create table,alter table,drop table,truncate table
(3)DCL(数据控制语言):grant select any table to scott/revoke select any table from scott
(4)TCL(事务控制语言):commit,rollback,savepoint to 回滚点

二、增删改数据

/*向emp表中插入一条记录(方式一:按表默认结构顺序)insert into 表名 values ...语法*/
insert into emp values (1111, 'JACK', 'IT', 7788, sysdate, 1000, 100, 40);

/*向emp表中插入一条记录(方式二:按自定义顺序)insert into 表名(列名) values ...语法*/
insert into emp
  (ENAME, EMPNO, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values
  ('MARRY', 2222, 'IT', 7788, sysdate, 1000, 100, 40);

/*向emp表中插入NULL值(方式一:采用显示插入NULL值)*/
insert into emp values (3333, 'SISI', 'IT', 7788, sysdate, 1000, NULL, 40);

/*向emp表中插入NULL值 (方式二:采用隐式插入NULL值),前提是所插入的字段允许插入NULL值*/
insert into emp
  (ENAME, EMPNO, JOB, MGR, HIREDATE, SAL, DEPTNO)
values
  ('SOSO', 4444, 'IT', 7788, sysdate, 1000, 40);

/*使用&占位符,动态输入值,&可以运用在任何一个DML语句中,在values子句中使用,例如:'&ename'和&sal*/
insert into emp
values
  (&empno, '&ename', '&job', &mgr, &hiredate, &sal, &comm, &xxxxxxxx);
注意:&是sqlplus工具提供的占位符,如果是字符串或日期型要加''符,数值型无需加''/*使用&占位符,动态输入值,&可以运用在任何一个DML语句中,在from子句中使用*/
select * from &table;

/*使用&占位符,动态输入值,&可以运用在任何一个DML语句中,在select子句中使用*/
select empno,ename,&colname from emp;

/*使用&占位符,动态输入值,&可以运用在任何一个DML语句中,在where子句中使用*/
select * from emp where sal > &money;

/*使用&占位符,动态输入值,&可以运用在任何一个DML语句中,在group by 和 having子句中使用*/
select &deptno, avg(sal) from emp group by deptno having avg(sal) > &money;

/*删除emp表中的所有记录*/
delete from emp;

/*将xxx_emp表中所有20号部门的员工,复制到emp表中,批量插入,insert into 表名 select ...语法*/
insert into emp
  select * from xxx_emp where deptno = 20;

/*将'SMITH'的工资增加20%*/
update emp set sal=sal*1.2 where ename = upper('smith');

/*将'SMITH'的工资设置为20号部门的平均工资,这是一个条件未知的事物,优先考虑子查询*/
第一:20号部门的平均工资
select avg(sal) from emp where deptno=20;
第二:将'SMITH'的工资设置为2207
update emp set sal=2207 where ename = 'SMITH'; 
子查询:
update emp
   set sal =
       (select avg(sal) from emp where deptno = 20)
 where ename = 'SMITH';

/*删除工资比所有部门平均工资都低的员工,这是一个条件未知的事物,优先考虑子查询*/
第一:查询所有部门的平均工资
select avg(sal) from emp group by deptno;
第二:删除工资比(*,*,*)都低的员工
delete from emp where sal<all(*,*,*);
子查询:
delete from emp where sal < all (select avg(sal) from emp group by deptno);

/*删除无佣金的员工*/
delete from emp where comm is null;

/*将emp表丢入回收站,drop table 表名*/
drop table emp;

/*查询回收站,show recyclebin,但是经过使用发现这个语句不能使用,这里贴出来参考*/
show recyclebin;

/*查询回收站,使用下面语句,亲测可以*/
select * from recyclebin;
create table t_hzp(
       id number(12) primary key,
       name varchar(32)
);--创建表
insert into t_hzp (id,name) values (12,'夜孤寒');--插入数据
select * from t_hzp;--查询表数据
drop table t_hzp;--删除表
select * from t_hzp;--测试表是否已经删除
select * from recyclebin;--查询回收站是否有已删除表

/*从回收站将emp表闪回,flashback table 表名 to before drop*/
flashback table emp to before drop;--亲测可以,但是可能要在command sql窗口使用

/*清空回收站,purge recyclebin*/
drop table t_hzp;--删除表
select * from recyclebin;--查看删除的表是不是在回收站中
purge recyclebin;--  
		
Oracle06、增删改数据(一) https://www.cppentry.com/bencandy.php?fid=57&id=165008

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇连接远程数据库ORACLE11g,错误百.. 下一篇Oracle08、视图+同义词+序列+索引