资源描述:
《综合练习(二)-习题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、综合练习(二)一、用SQL语句创建如下三张表:学生表(Student)、课程表(Course)和学生选课表(SC),三张表结构如下:注:一、二两题需要将命令放入*.sql脚本中,然后使用脚本进行创建表及数据的录入Student表结构列名说明数据类型约束sno学号字符串,长度为7主键sname姓名字符串,长度为10非空ssex性别字符串,长度为2取‘男’或‘女’sage年龄整数取值15~45sdept所在系字符串,长度为20默认为‘计算机系’Course表结构列名说明数据类型约束cno课程号字符串,长度为10主键cnam
2、e课程名字符串,长度为20非空ccredit学分整数取值大于0semster学期整数取值大于0period学时整数取值大于0SC表结构列名说明数据类型约束sno学号字符串,长度为7主键,引用Student的外键cno课程号字符串,长度为10主键,引用Course的外键grade成绩整数取值0~100答案:1、Student表CREATETABLEStudent(snoVARCHAR2(7)PRIMARYKEY,snameVARCHAR2(10)NOTNULL,ssexVARCHAR2(2)CHECK(ssex=‘男’O
3、Rssex=‘女’),sageNUMBER(2)CHECK(sage>=15ANDsage<=45),sdeptVARCHAR2(20)DEFAULT‘计算机系’)2、Course表CREATETABLECourse(cnoVARCHAR2(10)NOTNULL,cnameVARCHAR2(20)NOTNULL,ccreditNUMBER(2)CHECK(ccredit>0),semesterNUMBER(2)CHECK(semester>0),periodNUMBER(3)CHECK(period>0),CONTRA
4、INTcourse_cno_pkPRIMARYKEY(cno))3、SC表CREATETABLESC(snochar(7)NOTNULL,cnochar(10)NOTNULL,gradetinyintCHECK(grade>=0ANDgrade<=100),CONTRAINTsc_sno_cno_pkPRIMARYKEY(sno,cno),CONTRAINTstudent_sno_fkFOREIGNKEY(sno)REFERENCEStudent(sno),CONTRAINTcourse_cno_fkFOREIGNKE
5、Y(cno)REFERENCECourse(cno))二、使用SQL语句分别向Student、Course、SC表中加入如下数据:Student表数据snoSnamessexsagesdept9512101李勇男19计算机系9512102刘晨男20计算机系9512103王敏女20计算机系9512104张立男22信息系9512105钱小平女21信息系9512106吴宾女20数学系9512107王大力男19数学系Course表数据cnocnameccreditsemesterc01计算机文化学31c02Java85c03计
6、算机网络43c04数据库基础56c05高等数学62c06数据结构74C07VB34SC表数据snocnograde9512101c01909512101c029512102c01789512102c03669512103c04829512104c0675三、完成如下查询1、查询全体学生的学号和姓名SELECTsno,snamefromStudent2、查询全体学生的姓名、学号和所在系SELECTsname,sno,sdeptfromStudent3、查询全体学生的姓名及其出生年份l分析:由于Student表
7、中只记录了学生的年龄,而没有记录学生的出生年份,所以需要经过计算得到学生的出生年份,即用当前年减去年龄,得到出生年份。SELECTsname,2011–sageFROMStudent―或―SELECTsname,to_number(to_char(sysdate,’yyyy’))–sageFROMStudent4、查询全体学生的姓名和出生年份,并在出生年份列前加入一个列,此列的每行数据均为“YearofBirth”常量值SELECTsnamem,‘YearofBirth’,to_number(to_char(sysda
8、te,’yyyy’))–sageFROMStudent5、在选课表(SC)中查询有哪些学生选修了课程,并列出学生的学号SELECTsnoFROMSC在结果集中会有许多重复的行(实际上一个学生选修了多少门课程,其学号就会在结果集中重复出现多少次)。使用DISTINCT关键字就可以去掉结果集中的重复行。去掉结果集中的重复行SELECT