SET ZXF=ZXF+ 4,
BZ= '提前修完《数据结构》,并获得学分'
插入后可用命令:select * from table_name where (条件);查看。 9.将数据恢复到刚插入时的状态(即把修改过的表清空再插入)。 10.了解一下同义词,知道同义词的作用(不作重点)。 四、上机作业
手工安装数据库实例xscj和数据库xscj (快速安装),用户表空间myts后,为用户system创建3个表XSB、KCB和CJB,并插入所有数据。
五、心得体会
这次学习的表创建,删除和修改的学习使我对数据库的表的认识更进一步。通过这次的学习,学会对表的创建、修改、删除。创建表就是按格式写些代码;修改(UPDATE+表名+需修改的内容)和删除(DROP TABLE + 表名)就是使用指定的指令对表进行操作,使之完成想要的目的。
WHERE XM='李明';
实验五:数据库查询练习
一、实验目标:
学习数据库数据查询语句的基本方法以及视图的使用方法。 二、实验学时数
第16页
6学时
三、实验步骤和内容:
课本例子:4.5,4.6,4.8,4.9,4.12(2),4.14,4.15(2),4.16,4.17 4.18,4.19,4.28,4.29,4.37,4.39(1),(3),4.42,4.43,4.46 (一)学习和掌握课本查询语句的基本语法和使用方法,完成下面练习(*为必做,@为选做)。
*1、查询所有计算机系学生的信息 。 Select * from xsb; *2、查询王同学所修的学号
Select kch from xsb where xm like '王%'; *3、查询出生于85和86年的女同学的学号和姓名。 Select xh,xm from xsb where cssj between
to_date('19900101','yyyymmdd') and to_date('19911231','yyyymmdd')and xb='女';
*4、查询学号为101104所选修的全部课程成绩。 Select cj from cjb where xh='101104'; *5、检索每个学生的姓名和年龄。
Select xm,to_char(sysdate,'yyyy')-to_char(cssj,'yyyy') as 年龄 from xsb;
*6、在XS表中检索学生的姓名和出生年份,输出的列名为姓名和生年 Select xm,to_char(cssj,'yyyy') as 出生时间 from xsb;
*7、在XS_KC表中,求选修课程206的学生的学号和得分,并将结果按分数降序排序。
第17页
Select xh,cj from cjb where kch=’206’ order by cj desc; *8、把课程名为软件工程的成绩从学生选课数据表XS_KC中删除。 Delete from kcb where kcm=(select kch from kcb where kcm=‘软件工程’);
*9、把女同学的成绩提高10%。
Update cjb set cj=cj*1.1 where xh in (select xh from xsb where xb='女') and cj<=90;
*10、如果学号为061106的学生的成绩少于90,则加上10分。 Update cjb set cj=cj+10 where xh=’061106’and cj<90; *11、查询学号为061104的学生选修的课程号和课程名。
Select xh,xm from xsb where xh in (select xh from cjb where kcb=’061104’;
*12、检索学习课程号为206的学生学号与姓名。 Select xm,xh from xsb where kch=’206’; *13、检索‘李明’所选修的全部课程名称。
Select kcm from kch where xm=(select xm from xsb where xm=’李明’); *14、查找每个同学的学号及选修课程的平均成绩情况。 Select xh,avg as 课程号 平均成绩 from cjb; *15、求选修了各课程的学生的人数。
Select count(distinct xh) as 选修课程总人数 from cjb; Select kch as课程号 ,count (xh) as 选修人数 group by kch;
第18页
*16、查询平均成绩都在80分以上的学生学号及平均成绩。 Select xh,cj from cjb group by xh having avg(cj)>80;
Select xh,cj from cjb group by xh having avg(cj)>80 order by avg(cj); Select xh,cj from cjb group by xh having avg(cj)>80 order by avg(cj) desc;
*17、查询至少有6人选修的课程号。
Select kch as 课程号 from cjb group by having count(*)>=6; *18、检索选修课程号为101或102的学生学号,姓名和所在系
Select xh,xm,zy from kch=(select kch from kcb where kch=’101’and kch= ‘102’;
*19、统计被学生选修的课程门数。 Select cjb
每个学生情况以及选修课程情况
Select * from xsb inner join cjb on xsb.xh=cjb.xh
Select xsb .*,cjb.* from xsb,cjb where xsb.xh=cjb.xh *20、查询没有选修数据库的学生学号,姓名和专业名。
@21、取出选修‘操作系统’课程的学生姓名。
@22、检索至少选修课程“数据结构”和“计算机基础”的学生学号。 @23、检索至少选修课程号为101和206的学生姓名。 @24、列出学生所有可能的选课情况。 @25、查询101号课程得最高分的学生的学号
@26、‘计算机基础’课程得最高分的学生的姓名、性别、所在系。
第19页
@27、将成绩最低的学生的成绩加上10分。 @28、所有成绩都在70分以上的学生姓名及所在系。 @29、列出选修课程超过3门的学生姓名及选修门数。 @30、至少选修了两门课及以上的学生的姓名和性别 @31、检索至少有两名男生选修的课程名。
@32、统计每门课程的学生选修人数(超过10人的课程才统计)。 @33、计算机基础成绩比离散数学成绩好的学生
@34、列出每个同学的学号、姓名及选修课程的平均成绩情况,没有选修的同学也列出。
@35、列出每个同学的学号及选修课程号,没有选修的同学也列出 (二)视图
1、创建一个名为zy_view的视图,该视图可以用来查看每个系名称和学生人
Create or replace view zy_view(专业,专业人数) as select zy,count(xh) from xsb group by zy;
2、创建一名为xs_view的视图,该视图可以用来查看每个学生的姓名、选修的课程名和成绩。查看视图。
Create or replace view xs_view(姓名,课程名,成绩) as select xm kcm cj from xsb,kcb,cjb where xsb.xh=cjb.xh and cjb.kch=kcb.kch;
3、创建一个名为kc_view的视图,该视图可以用来查看每门课的课程号,课程名,选修人数和平均成绩。
Create or replace view kc_view(课程号,课程名,选修人数,平均成绩) as select kcb.kch,kcm,count(xh),avg(cj) from cjb,kcb where cjb.kch=kcb.kch group by kcb.kch,kcm;
4、利用kc_view视图,查看平均成绩最高的课程名。
Select 课程名 from kc_view where 平均成绩=(select max(平均成绩) from kc_view);
5、修改xs_view视图,将视图重定义为每个学生的姓名、选课门数和平均
第20页