`
lhgyy00
  • 浏览: 139587 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

数据库(SQL 基础)

阅读更多

1.使用子查询插入数据时,可以将其他表的数据直接插入到这张表中
insert into employee(empno,ename,sal,deptno)
select empno,ename,sal,deptno from emp
where deptno=20;
--可以用apend表示直接装载方式
2.insert直接给多张表插入数据
insert all
when deptno=10 then into dept10
when deptno=20 then into dept20
when deptno=30 then into dept30
when job='clerk' then into clerk
else into other
select * from emp;

3.插入多行数据的时候,可以使用first表示插入最先符合条件的
如:
insert first
when deptno=10 then into dept10
when deptno=20 then into dept20
when deptno=30 then into dept30
when job='clerk' then into clerk
else into other
select * from emp;
4.使用子查询更新数据
update emp set (job,sal,comm)=(select job,sal,comm from emp where ename='SMITH') where ename = 'scott';
5.表中的数据更改时,要复制表的数据
update employee set deptno=(select deptno from emp where empno=7788)
where job=(select job from emp where empno=7788);
5.删除表的数据的另一种方法
truncate table如: truncate table emp;
区别:delete语句可以回退,truncate语句不可以回退
6.事务控制语句,要么全部成功,要么全部失败,当执行commite或者rollback的时候表示事物的结束
oracle为了数据库的度一致性,是不允许读取脏数据的
savepoint a;
rollback to a ;
rollback;
7.只读事务,处理某个时间段内数据
set transaction read only;
8.但使用分组函数的时候,除了count(*)其他会忽略null
count(distinct deptno) as distinct_dept from emp;


select ename ,job,sal,deptno from emp where job in (select distinct job from wmp where deptno =10);
9.相关子查询是通过谓词exists实现的
如:select ename ,job,sal,deptno from emp where exists(select 1 from dept where dept.deptno=emp.deptno and dept.loc='NEW YORK')
结果存在为true,否则为false
from
如:select ename,job,sal from emp,(select deptno,avg(sal) avgsal from emp group by deptno ) dept
where emp.deptno=dept.deptno and sal>dept.avgsal;
create or replace view dept_10 as
select empno,ename,job,sal,deptno from emp
where deptno =10 order by empno;
10.合并查询结果,可以使用集合操作符union,union all, intersect,minus取得交集

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics