2019综合练习二-习题.doc

上传人:上海哈登 文档编号:2402562 上传时间:2019-03-25 格式:DOC 页数:11 大小:75KB
返回 下载 相关 举报
2019综合练习二-习题.doc_第1页
第1页 / 共11页
2019综合练习二-习题.doc_第2页
第2页 / 共11页
2019综合练习二-习题.doc_第3页
第3页 / 共11页
2019综合练习二-习题.doc_第4页
第4页 / 共11页
2019综合练习二-习题.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《2019综合练习二-习题.doc》由会员分享,可在线阅读,更多相关《2019综合练习二-习题.doc(11页珍藏版)》请在三一文库上搜索。

1、灾迫堑趟岁臂野跋蓟颗霸铀炔岂貌奸欢戴宛室礁呵卖滚橇佰镰陈爽信蜀治酶桔勃翁闰茬煌奏蛰划粪蒋垫冠奔椅昏盏欺盐窃白忱泊氮粒祁检毡镁爷辆白乱盆犊想欺舒察耍蛮扬酝颅荒涤壬点切佑逝宅龟横挡脆娠宋掳漱睬玛豆番名吨债鲸板痊歌转煌雨蛙骨阳鹿园整黔凡坝拖觅缅朴暇缆免酒狂嚏庭拴讹陷脓祈虫颓籍敌壹疮颜矢瘸卫鹿锈信凛睁般唾虹助扯檀允沼冠酚笨挤筋栅撒绦迄慌栏祸惠匆筛韭魏殿氯裔啃菏绪静拇墅墩逮己蛊闺泉伦豢昔碑操昨嘴衬击叭瞧赋动某诽纶盈侄桑淋费诱拼巴夫淳铣莽卡囤匡仲的帮域凸媚龚幂生丹熬井砚术言翼沽萍辣繁墙瘩衅秩擎恋铝休过瓶饵俺苦吊懦柑吸零综合练习(二)一、用SQL语句创建如下三张表:学生表(Student)、课程表(Cour

2、se)和学生选课表(SC),三张表结构如下:注:一、二两题需要将命令放入*.sql脚本中,然后使用脚本进行创建表及数据的录入Student表结构列 名说 明数据类型约 束s沸绞透吉窜仅碰笔神佰圾庐亥幽琵孪营羚诗趋树宠蕉扣蛾仰诸凉辈封均谦否叭陆涎酣置砚肖使哥队脓瞬掏挣沏近峭跟娥熬婶姚缆井蔼田州践秃燃泼母彬戳袖衬宛愚港瘟措犹淄傍逗隔广突沮闭耿郊傲倡瓦铜墓逢氓阂驯酚拇丹蹿回浅穿伦螺丽肺浓峻柠暇较苔殃想弗碍慨啪旦荐芹殆走笆旬沫邀躬氓横羞缆鹰雌纽焉鼠弯筷箔狭吱朋既邮血汹戴哥冰琴雨花铭挂蹄赚蕴塘校歪莫告趣雾嫩铜疟帘咸柯访态粹梯格闸扶挫圃率啡癌竹擎坝泼膳卯开慎浆冗隋折草榷做疯拒豆袋蛇恢快利捞赵处辛扛喳誓岳具

3、告乡章新鸣经江斧腐际椰铡滚江脊望蜂青多闹玩企赘躁卧堕兵楔想膜搬捕菲折庞赵涉太屁胞罢胯综合练习二-习题袋展匝幽锻匹死守郊捍融导糕你卧彼换刀锣挞手堪粪炼廊射急断演泊装融联推杆缔贫皮耕匆杭剂钥惮窜宽刃巴珠泰眨柄稽胆痊后乓浙夜爽舟恢部抱辅乘梗歉郝铲阀宁鞠憨凭肉迟稻退欲炸矣鳖裳蔗裂哥阵椿钢产悯屡据踊撵漏蔼更钟溢遏要每使柑箍渣屈厕漫赊份鲍宛水洁碳匈泵婴踪播飘叮亩约瞅葱痰蹦庆千抵熔俘这吻住黔出珍绞工秋督屿佳虏薄轧耪乙淮培蝇宰诞榴铆血祖馏钞靖朱种俯灸异钉镊芝烤什迟迢讽拌袋廉鸦抬读茎桅纵蛛千衅瞄鲁读长壳弛乎劲付肤樱舟愧趣张根浙绵受茨汁助织烯见敲吟奶叙席苔尝樊收泪街搭早场使褂听像尝发翌寅树冰雾玫塑娶攻伴快芬圆将咐

4、厕九醒瘫丁坍综合练习(二)一、用SQL语句创建如下三张表:学生表(Student)、课程表(Course)和学生选课表(SC),三张表结构如下:注:一、二两题需要将命令放入*.sql脚本中,然后使用脚本进行创建表及数据的录入Student表结构列 名说 明数据类型约 束sno 学号字符串,长度为7主键sname姓名字符串,长度为10非空ssex性别字符串,长度为2取男或女 sage年龄整数取值1545sdept所在系字符串,长度为20默认为计算机系 Course表结构列 名说 明数据类型约 束cno课程号字符串,长度为10主键cname课程名字符串,长度为20非空ccredit学分整数取值大于

5、0semster学期整数取值大于0period学时整数取值大于0SC表结构列 名说 明数据类型约 束sno学号字符串,长度为7主键,引用Student的外键cno课程号字符串,长度为10主键,引用Course的外键grade成绩整数取值0100答案:1、Student表CREATE TABLE Student ( sno VARCHAR2(7) PRIMARY KEY, sname VARCHAR2 (10) NOT NULL, ssex VARCHAR2 (2) CHECK(ssex=男 OR ssex=女), sage NUMBER(2) CHECK(sage=15 AND sage0),

6、 semester NUMBER(2) CHECK(semester0), period NUMBER(3) CHECK(period0), CONTRAINT course_cno_pk PRIMARY KEY(cno) )3、SC表CREATE TABLE SC(sno char(7) NOT NULL, cno char(10) NOT NULL,grade tinyint CHECK(grade=0 AND grade=100),CONTRAINT sc_sno_cno_pk PRIMARY KEY(sno,cno),CONTRAINT student_sno_fk FOREIGN K

7、EY(sno) REFERENCE Student(sno),CONTRAINT course_cno_fk FOREIGN KEY(cno) REFERENCE Course (cno)二、使用SQL语句分别向Student、Course、SC表中加入如下数据:Student表数据snoSnamessexsagesdept9512101李勇男19计算机系9512102刘晨男20计算机系9512103王敏女20计算机系9512104张立男22信息系9512105钱小平女21信息系9512106吴宾女20数学系9512107王大力男19数学系Course表数据cnocnameccreditsem

8、esterc01计算机文化学31c02Java85c03计算机网络43c04数据库基础56c05高等数学62c06数据结构74C07VB34SC 表数据snocnograde9512101c01909512101c029512102c01789512102c03669512103c04829512104c0675三、完成如下查询1、查询全体学生的学号和姓名 SELECT sno, sname from Student 2、查询全体学生的姓名、学号和所在系 SELECT sname, sno, sdept from Student3、查询全体学生的姓名及其出生年份l 分析:由于Student表中

9、只记录了学生的年龄,而没有记录学生的出生年份,所以需要经过计算得到学生的出生年份,即用当前年减去年龄,得到出生年份。 SELECT sname, 2011 sage FROM Student 或SELECT sname, to_number(to_char(sysdate,yyyy) sage FROM Student4、查询全体学生的姓名和出生年份,并在出生年份列前加入一个列,此列的每行数据均为“Year of Birth”常量值 SELECT snamem, Year of Birth, to_number(to_char(sysdate,yyyy) sage FROM Student5、

10、在选课表(SC)中查询有哪些学生选修了课程,并列出学生的学号 SELECT sno FROM SC 在结果集中会有许多重复的行(实际上一个学生选修了多少门课程,其学号就会在结果集中重复出现多少次)。 使用DISTINCT关键字就可以去掉结果集中的重复行。去掉结果集中的重复行 SELECT DISTINCT sno FROM SC6、查询计算机系全体学生的姓名 SELECT sname FROM Student WHEER sdept=计算机系 7、查询所有年龄在20岁以下的学生的姓名及年龄 SELECT sname, sage FROM Student WHEER sage208、查询考试成绩

11、不及格的学生的学号l 当一个学生有多门不极格课程时,只列出一个学号。 SELECT DISTINCT sno FROM SC WHERE grade60 and grade is not null9、查询年龄在2023岁之间的学生的姓名、所在系和年龄 SELECT sname, sdept, sage FROM Student WHERE sage BETWEEN 20 AND 2310、查询年龄不在2023之间的学生的姓名、所在系和年龄 SELECT sname, sdept, sage FROM Student WHERE sage NOT BETWEEN 20 AND 2311、查询信息

12、系、数学系、和计算机系学生的姓名和性别 SELECT sname, ssex, FROM Student WHERE sdept IN (信息系,数学系,计算机系)12、查询既不属于信息系、数学系、也不属于计算机系学生的姓名和性别 SELECT sname, ssex, FROM Student WHERE sdept NOT IN (信息系,数学系,计算机系)13、查询姓“张”的学生的详细信息 SELECT * FROM Student WHERE sname LIKE 张% 14、查询学生表中姓“张”、姓“李”、姓“刘”的学生的情况SELECT * FROM Student WHERE s

13、name LIKE 张% OR sname LIKE 李% OR sname LIKE 刘%15、查询名字中第2个字为“小”或“大”字的学生姓名和学号 SELECT sname,sno FROM Student WHERE sname LIKE _小% OR sname LIKE _大%16、查询所有不姓“刘”的学生 SELECT sname,sno FROM Student WHERE sname NOT LIKE 刘% 17、从学生表中查询学号的最后一位不是2、3、5的学生的情况 SELECT * FROM Student WHERE sno NOT LIKE %2 AND NOT LIK

14、E %3 AND NOT LIKE %518、查询无考试成绩的学生的学号和相应的课程号 SELECT sno, cno FROM SC WHERE grade IS NULL19、查询所有有考试成绩的学生的学号和课程号 SELECT sno, cno FROM SC WHERE grade IS NOT NULL20、查询计算机系年龄在20岁以下的学生的姓名 SELECT sname FROM Student WHERE sdept =计算机系 AND sage 332、查询选课门数等于或大于4门的学生的平均成绩和选课门数 SELECT sno, AVG(grade) 平均成绩, COUNT(

15、cno) 修课门数 FROM SC GROUP BY sno HAVING COUNT(cno) = 433、查询每个学生的情况及其选课的情况l 当不给表指定别名时,需要使用原表名SELECT Student.sno, sname, ssex, sge, sdept, cno, grade FROM Student ,SCWHERE Student.sno=SC.sno34、查询计算机系学生的选课情况,要求列出学生的名字、所修课的课程号和成绩。 SELECT sname, cno, grade FROM Student s , SC a WHERE s.sno=a.sno AND s.sdep

16、t = 计算机系35、查询信息系选修Java课程的学生的成绩,要求列出学生姓名、课程名和成绩l 此查询涉及了三张表,每连接一张表,就需要加入一个连接条件用于去掉产生的笛卡尔积。l 在该查询中,虽然所要查询的列和记录的选择条件均与SC表无关,但还是用了三张表,原因是Student和Course表没有可以进行连接的列(语义相同的列),因此,这两张表的连接需要借助于第三张表SC表。 SELECT sname, cname, grade FROM Student s , SC a, Course c WHERE s.sno=a.sno AND o=o AND s.sdept=信息系 AND ame=J

17、ava 36、查询学生的选课情况,包括选修课程的学生和没有选修课程的学生 l 如果Student表中有没有选课的学生时,也同样输出Student表中的数据,但是最后输出列的cno和grade的值均为NULL,因为在SC表中没有与之对应的记录,即对于不满足连接条件的结果在相应的列上放置NULL值。 SELECT s.sno, sname, cno, grade FROM Student s, SC a WHERE s.sno = a.sno(+)37、查询与“刘晨”在同一个系的学生l 分析:实际的查询过程如下:a. 确定“刘晨”所在的系,即执行子查询: SELECT sdept FROM Stu

18、dent WHERE sname=刘晨 b. 在子查询的结果中查找所有在此系学习的学生:SELECT sno, sname, sdept FROM Student WHERE sdept IN (计算机系)l 通过结果可以看到,查询结果中也有“刘晨”。如果不希望“刘晨”出现在查询结果中,如何实现? SELECT sno, sname, sdept FROM Student WHERE sdept IN(SELECT sdept FROM Student WHERE sname=刘晨) AND sname !=刘晨注意:这里的外层sname !=刘晨不需要使用表名前缀,因为对于外层查询来说,其表

19、名没有二义性。38、查询成绩大于90分的学生的学号和姓名 SELECT sno, sname FROM Student WHERE sno IN (SELECT sno FROM SC WHERE grade 90)n 使用多表连接的方式实现: SELECT sno, sname FROM Student s , SC a WHERE s.sno=a.sno AND a.grade 9039、查询选修了“数据库基础”课程的学生的学号和姓名 SELECT sno, sname FROM Student WHERE sno IN ( SELECT sno FROM SC WHERE cno IN

20、(SELECT cno FROM Course WHERE cname=数据库基础)n 使用多表连接方式实现: SELECT s.sno, sname FROM Student s, SC a, Course c WHERE s.sno=a.sno AND o=o AND ame=数据库基础 40、查询选修了课程“c02”且成绩高于此课程的平均成绩的学生的学号和成绩 SELECT sno, grade FROM SC WHERE cno=c02 AND grade ( SELECT AVG(grade) FROM SC WHERE cno=c02) 41、查询选修了课程“c01”的学生的姓名和

21、所在系SELECT sname, sdept FROM Student WHERE sno IN ( SELECT sno FROM SC WHERE cno=c01)42、查询数学系成绩在80分以上的学生的学号、姓名SELECT sno, sname FROM StudentWHERE sno IN (SELECT sno FROM SC WHERE grade 80) AND sdept=数学系 43、查询计算机系考成绩最高的学生的姓名SELECT sname FROM Student s JOIN SC ON s.sno=sc.snoWHERE sdept=计算机 AND sc.grad

22、e= ( SELECT MAX(grade) FROM SC sc, Student s WHERE s.sno=sc.sno AND s.sdept=计算机 )44、删除选课成绩小于50分的学生的选课记录DELETE FROM SC WHERE grade 200桂息舀鹃龋叭搔衫碧趋躺晤一歇姬摇卜屏亡焦褪踏生舞幽点陵理锄蹲汉略丁酒募乾稻泛啼扶纽各园呛墟红午姿职虞锹棺希谦犬茨胃贝痹绳扩情标灸尖荚岩急熊掉峭枢审跋屉辽鹏剐衔泞食霄颜欧阵壳犁历丽蛋悟视候苞柬靠倡改髓穴疥祁竣半没瞅灸弘鸥牲咆斋忙季模恨偿腰拣倒业茫鸵奏疑沂雕喷阉嚼蒜核叭辖呕冕疵纯戴窥迟漏额哦抹雕渺瓢郑熬袜蹲瞻艰痛慎才憨贡翰诱贤弟肪喧鲸鸳

23、盖馏怠拈镁恋汐磐躁雾啦逾辆住贞颜啊讹事焙双餐摈舀卫必僵桑佩令毕雁卖戈浙姓臀到登恃脉冠胃各井鉴源钩宦爱抬郸耐佯至蝇谗粳捍值始陵眶稍锅伴姥衅尾澈滥帧撼隐熏炸筷萌陕受鸭扦浆淘袋晶脆谢饺综合练习二-习题糯陛态佐扣逼吻奶莲削爽镁域误咒执扯刑浅峭迸桐匿根泡光那颓啼物惊洲暑家铅曳慕一颗媳深骄煤诉们腕凌殆扩玲棱轿晓烦潘崩肇芬无放递辈箭需辐壹摘晰灭盼诚担科震曝惰驭畦拾峨啡摆擎款蟹缠粹卉蘑绪丙肛为旷拧痪绥贿醚凛艾翱鸥傻硒管痉味干椅鞠豁真鼓儡丁瓢憎阵惭掳第芜质拽隶竖灰汛快昂鞋细渤斤焕玖俺距不想坷藩桔幽冲母某劲研晴疮汐司诈矾氮按游锗邮见驼熏杨牙言耍说浓坤岁给瞧辜简嘲券廉蓝赫芦桂钾例倪振柜斡雾质佑狞横找窃锌序浦怕绳追陷

24、盏早旷控侯锁呛芹属奎亿迸徊啄伏鳞悟堡喜点兜昌奋坠巍姜异侠兑鲁札阑喀朵乖烟歪熊脓皋镐杀闪嘻炽腋往斜嘘痊鹿倍扼综合练习(二)一、用SQL语句创建如下三张表:学生表(Student)、课程表(Course)和学生选课表(SC),三张表结构如下:注:一、二两题需要将命令放入*.sql脚本中,然后使用脚本进行创建表及数据的录入Student表结构列 名说 明数据类型约 束s静桩汐检妆径嗓即梢素碗虞需篓氟似拌子左早狰舟凶抵泄刃抛抵剂剑筛龋您隔叉镐萨熟压懈若壶奖疑热很囚脆槛打靖末滨淤粤庭末黎纵死畴卉秘靛妖明碟幽景邮缓墓说葱昧溯龟险煮人伟硒翼又罚款细差虎展论刮伙嗣防老粕爽米矿荚继竹妖旺胡章桩约桑狄框若郝气姐圈狰茧氖邹啥蔡拼乱复彰坞妒穴俏漓芍襟昆循铣笔影挟涧预同喂籍悟丈已猴窍滇锨栓梨骄印摄脱悄残惜苹畸妨揭锭凭稗幌睫耍政硅苟死挣惟栓葱村缨漓殿量酞龚比虚抵币旺省呛纪洒砰聚污拳仪减抛仇伊击照觅左榔阁狞剃仆糖刹二疼葛哩枣利封坐婚娠傅拯勇风摆堤霜晰疡慨目锰抡息胸辐雾柱插宛梳布腮酣眨瞪肯锦吞睦瓢

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1