oracle筆試題及答案(基礎練習題)


/*1)      創建一張學生表,包含以下信息,學號,姓名,年齡,性別,家庭住址,聯系電話*/
 create table tb_student
 (
     sid int not null unique,
     sname varchar2(50),
     sage int,
     ssex varchar2(50),
     saddress varchar2(500),
     sphonenum int
 )
 
 select * from  tb_student
 
 drop table  tb_student
 delete   tb_student
 truncate table tb_student
 truncate table tb_student
/*2)      修改學生表的結構,添加一列信息,學歷*/

alter table tb_student add sgraduation varchar2(50);
 
alter table tb_student add stodelete varchar2(50);

/* 3)      修改學生表的結構,刪除一列信息,家庭住址*/   

 alter table tb_student drop column stodelete;
 
/*4)      向學生表添加如下信息:
 
學號  姓名 年齡 性別 聯系電話 學歷
1 A 22 男 123456 小學
2 B 21 男 119 中學
3 C 23 男 110 高中
4 D 18 女 114 大學 */

insert into   tb_student(sid,sname,sage,ssex,sphonenum,sgraduation)
values('1','A','22','男','123456','小學');
insert into   tb_student(sid,sname,sage,ssex,sphonenum,sgraduation)
values('2','B','21','男','119','中學');
insert into   tb_student(sid,sname,sage,ssex,sphonenum,sgraduation)
values('3','C','23','女','110','高中');
insert into   tb_student(sid,sname,sage,ssex,sphonenum,sgraduation)
values('4','D','18','男','114','大學');
insert into   tb_student(sid,sname,sage,ssex,sphonenum,sgraduation)
values('5','E','25','女','110','高中');



 
/*5)      修改學生表的數據,將電話號碼以11開頭的學員的學歷改為“大專”*/
 update tb_student a set a.sgraduation = '大專' where a.sphonenum like '11%'
 
 select * from tb_student
/*6)      刪除學生表的數據,姓名以C開頭,性別為‘男’的記錄刪除*/
 
 delete tb_student a where a.sname like 'C%' and a.ssex = '男'
 
/*7)      查詢學生表的數據,將所有年齡小於22歲的,學歷為“大專”的,學生的姓名和學號示出來*/
  select a.sname,a.sid from tb_student a where a.sage <22 and a.sgraduation ='大專'

/*8)      查詢學生表的數據,查詢所有信息,列出前25%的記錄*/
   
  select * from tb_student a where rownum < (select count(*) from tb_student)*0.25
 
/*9)      查詢出所有學生的姓名,性別,年齡降序排列*/
 select a.sname,a.ssex,a.sage from tb_student a order by a.sage desc
 
/*10)   按照性別分組查詢所有的平均年齡*/

select avg(a.sage) from  tb_student a group by a.ssex  

select * from tb_student

/*11)   查詢學生表的數據,查詢所有信息,列出第2-3的記錄*/


 select * from tb_student a where   rownum <3 and a.sid not in ( select a.sid  from tb_student a where   rownum <2  )


 select * from  (select rownum rn ,a.* from tb_student a) where    rn  >1    and rn <4

rownum是對結果集的編序排列,始終是從1開始,所以你的rownum>2永遠為假,所以就沒記錄返回。。。



將rownum實例化就可以了
SELECT empno, ename, job, mgr, hiredate
FROM (SELECT empno, ename, job, mgr, hiredate,
rownum rk
FROM emp) t
WHERE rk > 2

   

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com