oracle复习资料

2019-08-03 13:21

一、简单查询

1. 查询XS表中各个同学的所有信息。

Select * from xs

2. 查询XS表中各个同学的姓名、专业名和总学分。

select xm,zym,zxf from xs;

3. 查询XS表中所有同学的学号、姓名和总学分,结果中各列的标题分别指定为“学号”、

“姓名”和“总学分”。

Select xh as 学号, xm as 姓名,zxf as 总学分 from xs;

4. 查询XS表中的学生数据来自哪些专业(使用DISTINCT子句消除结果集中的重复行)。

Select distinct zym from xs;

5. 查询XS表中每个学生的学号、姓名和年龄信息。

Select xh,xm,

to_number(to_char(sysdate,'yyyy'))-to_number(to_char(cssj,'yyyy')) as nl from xs;

6. 查询XS表中专业为“计算机”的同学的情况。

Select * from xs where zym='计算机'; 7. 查询XS表中1980年出生的学生姓名和专业情况。

Select xm,zym from xs where to_number(to_char(cssj,'yyyy'))=1980; 8. 查询XS表中专业名为“计算机”或“电子”或“应用数学”的学生的情况。

Select * from xs

Where zym in ( '计算机','电子','应用数学'); 9. 查询XS表中姓“张”且单名的学生的情况。

Select * from xs Where xm like '张_';

10. 查询XS表中总学分尚未确定的学生情况。

Select * from xs Where zxf is null

11. 查询XS表中专业为“计算机”且总学分尚未确定的学生情况。

Select * from xs

Where zym='计算机' and zxf is null

12. 从XS表中查询学生的基本信息,要求按照总学分从高到低排序,学分相同时,按学号

由低到高排序。 Select * from xs Order by zxf desc, xh 二、 数据汇总

1. 求选修了“001”课程的学生的平均成绩。

Select avg(cj) as 平均成绩 from xs_kc where kch='001';

2. 求选修了“002”课程的学生的最高分和最低分。

Select max(cj) as 最高分, min(cj) as 最低分 from xs_kc where kch='002'; 3. 求学号为“4102101”学生的总成绩。

Select sum(cj) as 总成绩 from xs_kc where xh='200901'; 4. 求专业为“计算机”的学生的总人数。

Select count(*) as 总人数 from xs where zym='计算机'; 5. 求选修了“001”课程的学生的人数。

Select count(*) 人数 from xs_kc where kch='001'; 6. 求选修了课程的学生的人数。

Select count(distinct xh) 人数 from xs_kc; 7. 统计各个专业的学生数。(按专业分组)

select zym, count(*) as 人数 from xs group by zym;

8. 统计各个专业的男女生人数。格式如下:

专业 ??

性别 ??

人数 ??

select zym,xb, count(*)人数 from xs

group by zym,xb;

9. 查找平均成绩在80分以上的学生的学号和平均成绩。

Select xh, avg(cj) 平均成绩 from xs_kc Group by xh having avg(cj)>=80;

10. 查找选修课程超过2门成绩在80分以上的学生的学号和成绩高于80分的门数。

Select xh, count(*) 门数 from xs_kc Where cj>=80 Group by xh

Having count(*)>=2;

11. 显示每个学生的学号和平均成绩,并显示总平均成绩。(使用NUION子句)格式如下:

学号 ??

平均成绩 ?? ??

总平均成绩

select xh, avg(cj) 平均成绩 from xs_kc group by xh union all

select '总平均成绩',avg(cj) from xs_kc;

12. 产生一个结果集,包括每个专业的学生人数及学生总人数。(使用NUION子句)格式

如下:

专业 ??

人数 ??

总人数 ??

select zym, count(*) 人数 from xs

group by zym union all

select '总人数',count(*) from xs;

表结构操作

1. 创建表XS1(包括学号、姓名、性别和出生日期字段,各个字段属性自定),然后使用

SELECT子句向表XS1中插入多行数据(专业为“计算机”的学生数据)。 Create table xs1

( xh char(6) not null primary key, xm char(8) not null, xb char(2) default(1), cssj date null); go

insert into xs1 select xh,xm,xb,cssj from xs where zym='计算机';

2. 修改XS1表的结构,增加1个“平均成绩”字段,并根据XS_KC表修改每个学生的“平

均成绩”。 Alter table xs1

Add 平均成绩 number default (0) ; Update xs1

Set 平均成绩=(select avg(cj) from xs_kc where xh=xs1.xh); 3. 将XS表中计算机专业的学生的总学分增加10分。

Update xs Set zxf=zxf+10 Where zym='计算机';

4. 将XS表中学号为“200901”的同学的总学分增加4分,备注改为“提前修完一门课程”。

Update xs

Set zxf=zxf+4, bz='提前修完一门课程' Where xh='200901';

5. 将XS_KC表中学号为“4102101”的同学的“计算机基础”课程的成绩增加10分。 方法1: 用连接

Update xs_kc Set cj=cj+10 From kc,xs_kc

Where xs_kc.kch=kc.kch and kcm='计算机基础' and xh='200901';

方法2: 用子查询

Update xs_kc Set cj=cj+10

Where kch= (select kch from kc where kcm='计算机基础') And xh='200901';

6. 修改XS1表的结构,增加1个“总学分”字段,并使其值为该学生所学各门功课的学

分之和。 Alter table xs1

Add zxf number default (0); Go

Update xs1

Set zxf=(select sum(kc.xf) from xs_kc,kc where xs_kc.kch= kc.kch and xs_kc.xh=xs1.xh);

7. 将XS1表中总学分小于40分的学生数据删除。

Delete xs1 Where zxf<40

8. 将XS_KC表中“数据库”课程的所有成绩信息删除。 方法1: 用连接

delete xs_kc From xs_kc,kc

Where xs_kc.kch=kc.kch and kcm='数据库'; 方法2: 用子查询

delete xs_kc

Where kch= (select kch from kc where kcm='数据库');

9. 将XS_KC表中其学号在XS表中不存在或其课程号在KC表中不存在的学生的成绩信息

删除。 Delete xs_kc

Where xh not in (select xh from xs) or kch not in (select kch from kc); 10. 删除XS1表中的所有数据。 Delete xs1;

创建视图:

1. 使用SQL语句创建视图V_SCORE2,显示计算机专业每个学生的学号、姓名、选修的课

程名称及其成绩。

Create or replace view v_score2 As

Select xs.xh,xm,kcm,cj from xs,xs_kc,kc

Where xs.xh=xs_kc.xh and xs_kc.kch=kc.kch And zym='计算机';

2. 使用T-SQL语句修改视图V_SCORE2,使其显示每个专业、每门课程的平均成绩,结果格式为:专业 课程名 平均成绩

??

??

??

Create or replace view v_score2 As

Select zym,kcm,avg(cj) as 平均成绩 from xs,xs_kc,kc

Where xs.xh=xs_kc.xh and xs_kc.kch=kc.kch Group by kcm,zym;

3.通过V_SCORE2查看计算机专业每门课程的平均成绩。

Select * from v_score2 Where zym='计算机';

4.通过V_SCORE2查看各个专业所有课程的平均成绩,结果格式为:

专业 平均成绩 ??

??

select zym, avg(平均成绩) 平均成绩 from v_score2 group by zym;

5.使用视图V_SCORE1向其基表XS表中输入数据(数据自定),并观察什么样的数据可以插入,什么样的数据不可以插入,并解释为什么。

insert into v_score1

values('200914','张强','计算机','男') ;

可以插入,因为插入语句正确,该学生为‘计算机’专业的学生 insert into v_score1

values('200917','王军','电子','男') ;

不可以插入,虽然插入语句正确,但该学生的专业不为‘计算机’,违反WITH CHECK OPTION选项的限定

6.使用SQL语句删除视图V_SCORE1。 Drop view v_score1.


oracle复习资料.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:农村实用人才队伍建设工作总结

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: