综合应用题1图书销售(本题10分)题目1题干写出创建如下三张数据表的SQL语句。(本题4分)“图书”表结构:书号:普通编码定长字符类型,长度为10,主键。书名:普通编码可变长字符类型,长度为20,非空。类别:统一字符编码定长字符类型,长度为4,取值为:“高等数学”、“量子力学”、“国学基础”。出版日期:日期类型。单价:整型。“书店”表结构:书店编号:普通编码定长字符类型,长度为20,主键。书店名:普通编码可变长字符类型,长度为30,非空。地址:统一字符编码可变长字符类型,长度为30。“销售”表结构:书号:普通编码定长字符类型,长度为10,引用图书表的外键。书店编号:普通编码定长字符类型,长度为20,引用书店表的外键。销售时间:日期时间类型。销售数量:整型。主键:(书号,书店编号,销售时间)。答:CREATETABLE图书(书号char(10)primarykey,书名varchar(20)notnull,类别nchar(4)CHECK(类别IN('高等数学','量子力学','国学基础')),出版日期date,单价int)CREATETABLE书店(书店编号char(20)primarykey,书店名varchar(30)notnull,地址nvarchar(30))CREATETABLE销售(书号char(10),书店编号char(20),销售时间datetime,销售数量int,Primarykey(书号,书店编号,销售时间),Foreignkey(书号)references图书(书号),Foreignkey(书店编号)references书店(书店编号))题目2题干依据第1题所创建的三张表,写出完成下列操作的SQL语句。(本题4分)1)查询“量子力学”类图书的书名和出版日期。2)查询单价大于等于60的图书的销售情况,列出书名、类别、销售时间和销售数量。3)将“量子力学”类图书的单价降低10。4)在书店表中插入一行数据,书店编号:SD100,书店名:新华书店,地址:西单。答:1)SELECT书名,出版日期FROM图书WHERE类别='量子力学'2)SELECT书名,类别,销售时间,销售数量FROM图书aJOIN销售bONa.书号=b.书号WHERE单价=603)UPDATE图书SET单价=单价-10WHERE类别='量子力学'4)INSERTINTO书店VALUES('SD100','新华书店','西单')题目3题干依据第1题所创建的三张表,写出创建满足如下要求的视图的SQL语句:查询销售了“高等数学”类图书的书店名和地址。(本题2分)答:CREATEVIEWV1ASSELECT书店名,地址FROM书店aJOIN销售bONa.书店编号=b.书店编号JOIN图书cONc.书号=b.书号WHERE类别='高等数学'综合应用题2教师授课(本题10分)题目4题干写出创建如下三张数据表的SQL语句。(本题4分)“教师”表结构:教师号:普通编码定长字符类型,长度为10,主键。教师名:普通编码可变长字符类型,长度为20,非空。所在部门:普通编码可变长字符类型,长度为30。职称:普通编码定长字符类型,长度为6,取值为:“教授”、“副教授”、“其他”。“课程”表结构:课程号:普通编码定长字符类型,长度为20,主键。课程名:普通编码可变长字符类型,长度为40,非空。学时数:微整型。开课学期:微整型。“授课”表结构:教师号:普通编码定长字符类型,长度为10,引用教师表的外键。课程号:普通编码定长字符类型,长度为20,引用课程表的外键。授课时数:整型。授课年份:整型。主键:(教师号,课程号,授课年份)。答:CREATETABLE教师(教师号char(10)primarykey,教师名varchar(20)notnull,所在部门varchar(30),职称char(6)CHECK(职称IN('教授','副教授','其他')))CREATETABLE课程(课程号char(20)primarykey,课程名varchar(40)notnull,学时数tinyint,开课学期tinyint)评分要点:共1分。CREATETABLE授课(教师号char(10),课程号char(20),授课时数int,授课年份int,Primarykey(教师号,课程号,授课年份),Foreignkey(教师号)references教师(教师号),Foreignkey(课程号)references课程(课程号))题目5题干依据第1题所创建的三张表,写出完成下列操作的SQL语句。(本题4分)1)查询“教授”职称的教师姓名和所在部门。2)查询每学期开设的学时数大于40的课程门数。3)查询2016年全部课程的授课情况,列出课程名、学时数、教师名和授课时数。删除没人讲授的课程。答:1)SELECT教师名,所在部门FROM教师WHERE职称='教授'2)SELECT开课学期,COUNT(*)课程门数FROM课程WHERE学时数40GROUPBY开课学期3)SELECT课程名,学时数,教师名,授课时数FROM课程JOIN授课ON课程.课程号=授课.课程号JOIN教师ON教师.教师号=授课.教师号WHERE授课年份=20164)DELETEFROM课程WHERE课程号NOTIN(SELECT课程号FROM授课)题目6题干依据第1题所创建的三张表,写出创建满足如下要求的视图的SQL语句:查询2016授课年份全体授课教师的教师名、所授的课程名和授课时数。(本题2分)答:CREATEVIEWV1ASSELECT教师名,课程名,授课时数FROM授课JOIN教师ON授课.教师号=教师.教师号JOIN课程ON课程.课程号=授课.课程号WHERE授课年份=2016