Oracle实战练习(续二)
来源:互联网 发布:lrc字幕制作软件 编辑:程序博客网 时间:2024/05/24 04:18
#rownum的使用
select empno, ename, rownum from emp where rownum<=5;
select empno, ename from emp where rownum>10; #未选定行, 因为rownum只能与小于或小于等于号一起使用
select rownum r ,ename from emp;
select rownum, ename from emp;
select ename from (select rownum r, ename from emp) where r>10;
# 求薪水最高的前5名
select ename, sal from emp order by sal desc;
select ename, sal from emp where rownum<=5 order by sal desc; #这个是错误的,因为选出来的是前5条记录,然后再排序.
#应该是先排序后再选择前5名
select ename, sal from (select ename, sal from emp order by sal desc) where
rownum <=5;
#求薪水最高的第6位与第10位之间
#1.先排序
select ename, sal from emp order by sal desc;
#2. 显示rownum, 如果是在上面显示的话就错误.
select ename, sal, rownum from (select ename, sal from emp order by sal desc);
#3.薪水最高的第6位与第10位之间
select ename, sal, rownum r from
(select ename, sal, rownum r from
(select ename, sal from
emp order by sal desc ) ) where r between 6 and 10;
# 或者
select ename, sal, rownum r from
(select ename, sal, rownum r from
(select ename, sal from
emp order by sal desc ) ) where r >= 6 and r <= 10;
#SQL面试题
/*有三个表S,C,SC
S(sno, sname) 代表(学号, 姓名)
C(cno,cname,cteacher) 代表(课号,课名, 教师)
SC(sno, cno, scgrade) 代表(学号, 课号成绩)
问题:
1.找出没选过"黎明"老师的所有学生姓名
2.列出2门以上(含2门)不及格学生姓名及平均成绩
3.求学过1号课程又学过2号课程所有学生的姓名
*/
# 建表,并插入实验数据
create table S(sno number(10), sname varchar2(10));
create table C(cno number(10), cname varchar2(10), cteacher varchar2(20));
create table SC(sno number(10), cno number(10), scgrade number(3));
insert into S values(20090701, '邓永胜');
insert into S values(20090702, '邓永寿');
insert into S values(20090703, '邓永红');
insert into S values(20090704, '邓雄展');
insert into S values(20090705, '邓伟新');
insert into S values(20090706, '邓嘉谊');
insert into S values(20090707, '邓嘉健');
insert into C values('1001', '英语', '张三');
insert into C values('1002', '语文', '李四');
insert into C values('1003', '数学', '王五');
insert into C values('1004', '化学', '刘六');
insert into C values('1005', '物理', '黎明');
insert into SC values(20090701,'1001', 85);
insert into SC values(20090702,'1002', 95);
insert into SC values(20090703,'1003', 86);
insert into SC values(20090704,'1004', 89);
insert into SC values(20090704,'1005', 89);
insert into SC values(20090705,'1004', 55);
insert into SC values(20090705,'1005', 55);
insert into SC values(20090705,'1006', 53);
insert into SC values(20090706,'1005', 58);
insert into SC values(20090707,'1005', 51);
#1.找出没选过"黎明"老师的所有学生的姓名
select sname from s join sc on(s.sno = sc.sno) join c on(c.cno = sc.cno) where c.cteacher <>'黎明';
#2.列出2门以上(含2门)不及格学生姓名的平均成绩
select avg(scgrade) from s join sc on (s.sno = sc.sno) where sname in (select sname from s where sno in(select sno from sc where scgrade <60 group
by sno having count(*)>=2));
#3.求学过1号课程又学过2号课程的所有学生的姓名
select sname from s where sno in (select sno from sc where cno = '1' and sno in(select sno from sc where cno = '5'));
update emp2 set sal = sal*2; #update 语句
delete from dept2;
insert into salgrade values(6,10000,20000);
rollback; # 事务回滚, 先前的SQL语句无效
select * from salgrade; #可以看到rollback后,上面的SQL语句无效
select sal from emp2; #可以看到rollback后,上面的SQL语句无效
update emp2 set sal = sal*2;
select * from emp2;
select sal from emp2 where ename = 'KING'; #此时的KING的sal是10000
commit; # 提交事务
rollback; #提交事务后再回滚,不起作用
#查询一下
select sal from emp2 where ename = 'KING'; # 此时的KING的sal还是10000, 因为已经提交了事务
#当在事务提交前插入DDL语句或者DCL语句, 那么事务回滚无效
#如下所示:
update dept2 set deptno = deptno +3;
select * from dept2;
create table tt(aa varchar2(10));
rollback;
select * from dept2; # 此时的deptno 是加上了3 的, 事务回滚无效
#当用户正常断开的时候,事务自动提交
#断电(非正常)
- Oracle实战练习(续二)
- Oracle实战练习(续一)
- Oracle实战练习(续三)
- Oracle实战练习(续四)
- Oracle实战练习
- oracle存储过程实战练习
- oracle练习(二)
- oracle练习(二)
- Oracle练习总结二
- Oracle实战二
- oracle练习(mldn视频)二
- oracle数据库SQL查询语句练习二
- oracle自带表练习(二)
- ORACLE存储过程实战之二:游标
- oracle 实战二 之数据库掉电篇
- [oc实战练习二]程序里面的网络请求
- MapReduce实战练习二:两张表的合并汇总
- 练习(二)
- Making a CAB file which doesn’t prompt for installation location
- 暑假数据库知识小结
- ASP.NET控件开发
- 批处理查杀不正常svchost进程
- sql anywhere 的unload和reload(数据迁移) 用微软sql server 的DTS实现从 ORACLE导出数据到Sql Anywhere数据库中
- Oracle实战练习(续二)
- 如何部署.NET Compact Framework2.0 应用程序到Windows Mobile(制作CAB文件)
- 文字翻页 防Google分页
- 智能指针CComPtr 和 CComQIPtr
- web developer tips (29):在web应用项目里启用“编辑并继续”功能
- Linux命令的一些记录(四):rpm命令的一些使用
- tomcat 元素分类
- cx_Oracle Module
- C# 创建Oracle odbc