数据库上机题
- 格式:doc
- 大小:86.50 KB
- 文档页数:13
现有一个商店的数据库,记录顾客及其购物情况,由下面三个表组成:商品(商品号,商品名,单价,商品类别,供应商);顾客(顾客号,姓名,住址);购买(顾客号,商品号,购买数量);建表,在定义中要求声明:1)每个表的主外码;2)顾客的姓名和商品名不能为空值;3)单价必须大于0,购买数量必须在0到20之间;1.往表中插入数据:商品(M01,佳洁士,8.00,牙膏,宝洁;M02,高露洁,6.50,牙膏,高露洁;M03,洁诺,5.00,牙膏,联合利华;M04,舒肤佳,3.00,香皂,宝洁;M05,夏士莲,5.00,香皂,联合利华;M06,雕牌,2.50,洗衣粉,纳爱斯;M07,中华,3.50,牙膏,联合利华;M08,汰渍,3.00,洗衣粉,宝洁;M09,碧浪,4.00,洗衣粉,宝洁)顾客(C01,Dennis,海淀;C02,John,朝阳;C03,Tom,东城;C04,Jenny,东城;C05,Rick,西城;)购买(C01,M01,3;C01,M05,2;C01,M08,2;C02,M02,5;C02,M06,4;C03,M01,1;C03,M05,1;C03,M06,3;C03,M08,1;C04,M03,7;C04,M04,3;C05,M06,2;C05,M07,8;)2.用SQL语句完成下列查询:(1)检索购买了供应商"宝洁"产品的所有顾客;(2)检索买的商品包括了顾客"Dennis"所购买商品的顾客(姓名);(3)检索牙膏卖出数量最多的供应商。
(4)检索至少购买了两种商品的所有顾客(5)检索全部顾客都购买过的商品(6)将所有的牙膏商品单价增加10%。
(7)删除从未被购买的商品记录。
现要为学校建立一个数据库,设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生..现要建立关于系、学生、班级的数据库,关系模式为:学生STUDENT(学号,姓名,年龄,班号)班CLASS(班号,专业名,系名,入学年份)系DEPARTMENT(系号,系名)试用SQL语言完成以下功能:1建表,在定义中要求声明:(1)每个表的主外码.(2)每个班级的人数不能超过30人.(3)学生的年龄介于15到40岁之间.(4)学生姓名不能为空.(5)只有班里没有学生的时候,才能删除该班级.2插入如下数据CLASS(101,软件,计算机,1995;102,微电子,计算机,1996;111,无机化学,化学,1995;112,高分子化学,化学,1996;121,统计数学,数学,1995;131,现代语言,中文,1996;141,国际贸易,经济,1997;142,国际金融,经济,1996;)STUDENT(8101,张三,18,101;8102,钱四,16,121;8103,王玲,17,131;8105,李飞,19,102;8109,赵四,18,141;8110,李可,20,142;8201,张飞,18,111;8302,周瑜,16,112;8203,王亮,17,111;8305,董庆,19,102;8409,赵龙,18,101;8510,李丽,20,142)DEPARTMENT(001,数学;002,计算机;003,化学;004,中文;005,经济;)3完成以下查询功能(1)找出所有姓李的学生,并按其年龄由小到大排序.(2)列出所有开设超过两个专业的系的名字.(3)列出学生人数大于等于2的系的编号和名称.4学校又新增加了一个物理系,编号为006.5学生张三转到化学系111班,请更新相关的表.设计零售公司的数据库:售货员(员工号,姓名,住址),商品(商品号,商品名,单价),制造商(制造商名,制造商地址,电话),多个商品可以由一个售货员售出,一个商品也可以由多个人员售出,一件商品可以有多个制造商. 要求:1建表:要有主外码定义,商品价格大于0.2插入:每个表最少4条,保证查询结果不为空.3找出Mike卖出的所有商品的商品名.4找出提供商品种类最多的制造商名.5更新:将“统一冰红茶“的价格降低3%.6删除:单价低于一元的商品.有某个学生运动会比赛信息的数据库,保存了如下的表:运动员(运动员编号,运动员姓名,运动员性别,所属系号)项目(项目编号,项目名称,项目比赛地点)成绩(运动员编号,项目编号,积分)请用SQL语句完成如下功能:1.建表,注意满足如下要求:a)表名必须加自己的帐号作前缀,比如“d1*******运动员”b)定义各个表的主码外码约束c)运动员的姓名和所属系别不能为空值.d)积分要么为空值,要么为6,4,2,0,分别代表第一,二,三名和其他名次的积分,注意名次可以有并列名次,后面的排名不往前提升,例如,如果有两个并列第一,则没有第二名.2.往表中插入数据:运动员(1001,李明,男,计算机系1002,张三,男,数学系1003,李四,男,计算机系1004,王二,男,物理系1005,李娜,女,心理系1006,孙丽,女,数学系)项目(x001,男子五千米,一操场x002,男子标枪,一操场x003,男子跳远,二操场x004,女子跳高,二操场x005,女子三千米,三操场)积分(1001,x001,61002,x001,41003,x001,21004,x001,01001,x003,41002,x003,61004,x003,21005,x004,61006,x004,4)3.完成如下查询a)求出目前总积分最高的系名,及其积分.b)找出在一操场进行比赛的各项目名称及其冠军的姓名c)找出参加了张三所参加的所有项目的其他同学的姓名4.经查张三因为使用了违禁药品,其成绩都记0分,请在数据库中作出相应修改.5.经组委会协商,需要删除女子跳高比赛项目.设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生..现要建立关于系、学生、班级的数据库,关系模式为:班CLASS(班号,专业名,系名,入学年份,人数)学生STUDENT(学号,姓名,年龄,班号)系DEPARTMENT(系号,系名)试用SQL语言完成以下功能:1建表,在定义中要求声明:(1)每个表的主外码.(2)每个班级的人数不能超过30人.(3)学生的年龄介于15到40岁之间.(4)学生姓名不能为空.2插入如下数据CLASS(101,软件,计算机,1995,20;102,微电子,计算机,1996,30;111,无机化学,化学,1995,29;112,高分子化学,化学,1996,25;121,统计数学,数学,1995,20;131,现代语言,中文,1996,20;141,国际贸易,经济,1997,30;142,国际金融,经济,1996,14;)STUDENT(8101,张三,18,101;8102,钱四,16,121;8103,王玲,17,131;8105,李飞,19,102;8109,赵四,18,141;8110,李可,20,1428201,张飞,18,111;8302,周瑜,16,112;8203,王亮,17,111;8305,董庆,19,102;8409,赵龙,18,101;8510,李丽,20,142)DEPARTMENT(001,数学;002,计算机;003,化学;004,中文;005,经济;)3完成以下查询功能(1)找出所以姓李的学生.(2)列出所有开设超过两个专业的系的名字.(3)列出人数大于等于2的系的编号和名字.4学校又新增加了一个物理系,编号为006.5学生张三退学,请更新相关的表.三个表:用户(用户编号,用户名,级别)题目(题目编号,分值,题目说明,难度)历史记录(用户编号,题目编号,flag,做题时间)建表说明:1.用户名不能为空2.难度只能取值1~33.flag要么取0,要么取1,0代表做错,1代表做对4.各表的主外键表名和字段名与题目相同(是汉字就用汉字,英文就用英文),各表均用"表名_准考证号"做为考生的表名数据:1用户表:u00001,xiaoli,0u00002,xiaowang,1u00003,zhaosi,2u00004,wangwu,1u00005,lina,2 题目表:q00001,3,aljflkajfklsdjfk,1q00002,6,lajfklsdjfkjdklfklasfjfklj,2q00003,8,klajfkdjfjdklfjklasjf,2q00004,10,jfklasdjfk3历史记录表:u00001,q00001,0,2004-02-1012:00:00 u00001,q00002,1,2004-02-1212:00:00 u00001,q00003,1,2004-02-1312:30:00 u00001,q00004,1,2004-02-1513:00:00 u00002,q00002,1,2004-02-1708:30:00 u00002,q00003,1,2004-02-1614:00:00 u00003,q00001,0,2004-02-1810:30:00 u00004,q00003,0,2004-02-1513:00:00 u00004,q00004,1,2004-02-2012:30:00 u00005,q00002,0,2004-02-1914:00:00 u00005,q00003,1,2004-02-2112:00:00数据是凭记忆写的,大体差不多,个别值有出入,不影响解题查询:1.a.列出所有答对难度为3的题目的用户,要求按用户名升序排序, 用户名相同的按用户编号排序(升,降均可)b.列出每个用户答对的同一难度题目分值的平均分.(该题有二义,就看你理解是否跟阅卷老师一样了, 为北大控制及格率埋下了伏笔,唉~~~~~~~~~~~~)c.求总分最高的用户.(小心该题,答对了才有分的啊~~~)2.列出在最近时间内答错题目的前三位用户.3.如果当用户答对5个题目,并且满足下列条件: a5个题目中至少有2个题目的难度在2级以上b5个题目的总分在25分以上就将该用户的级别升高一级.现有一个学生选修课程的数据库,其中存放以下三个表:学生(学号,姓名,性别,年龄,系别)课程(课程号,课程名,任课教师)选修(学号,课程号,分数)试用SQL语言完成下列功能:1建表,在定义中要求声明:(1)每个表的主外码;(2)学生的年龄介于16到40之间;(3)学生的姓名和课程名不能为空值;( 4)选课成绩要么为空值,要么取0到100之间的整数.2往表中插入数据学生(101,张三,男,18,计算机;102,李四,男,16,数学;103,王玲,女,17,中文;105,李飞,男,19,计算机;109,赵四,女,18,历史;110,李平,男,20,化学)课程(203,操作系统,程羽;279,高等数学,王备;210,现代文学,王丹;243,有机化学,沈同;204,数据结构,张青;)选修(101,203,82;105,203,59;102,279,90;101,279,88;105,279,82;110,279,68;109,210,72;103,210,90;110,243,92;101,204,85;105,204,91;102,204,56)3用SQL语句完成下列查询:(1)列出张三同学选修的所有课程的名称及其成绩.(2)列出所有课程都及格了的同学的名字.(3)列出在选修张青老师所教授课程的学生中,成绩最高的学生姓名及其成绩. 4删除所有成绩不及格的选课记录.5将105号同学选修203号课程的成绩改为该门课程的平均成绩某公司有很多类型的货车(小型货车,双轴货车,16轮货车等),货车要有货车号,货车类型(小型货车,双轴货车,16轮货车),载重量,有很多司机,每个司机可开多种类型的货车,司机要有司机号,姓名,地址,薪水,司机运输货物时有货物名称,目的地,出发时间,返回时,要更新记录,有返回时间,驾驶时间,公司有很多技师维修货车,技师要有技师号,姓名,地址,薪水,货车维修要有维修时间,取车时间,费用.要求:1.姓名不能为空,载重量大于3吨,司机的薪水不能少于2000,技师的薪水不能少于1500,每个表至少插入4条记录,能满足以下的查询2.求开过司机Joe开过的货车的司机的ID,姓名3.求货车维修费用的平均值4.对驾驶时间超过50小时的司机增加薪水5%,没超过的加3%5.删除维总修费用超过100,000的记录某汽车保险公司数据库需要保存人员,汽车,事故的信息.人员有社会保险号,姓名, 地址;汽车有牌照,生产年月,型号;事故有日期,驾驶员,事故损失量.假定每个人可以有多辆汽车.要求:1.设计数据库,建立必要的表来保存上述信息,定义表的时候要给出需要的主外定义,要求姓名不为空.2.插入相应数据使下诉检索不为空.3.找出在1998年其车辆出过车祸的人员总数.4.找出没有出过交通事故的人员的姓名5.统计每种车型所出的交通事故的总的数量.6.删除与JohnSmith有关的事故的记录.试创建一个公司雇员数据库,雇员有姓名、地址、所在城市,公司有公司名,以及公司所在城市,公司和雇员之间有雇佣关系,每个公司可雇佣多名雇员,该关系中还包括雇员的薪水,雇员和雇员之间有一个管理关系,每一个雇员都有另外一名雇员作为他的经理,一个经理人可以管理多名雇员.要求:设计你的数据库,并往数据库中插入一些数据.1、求为第一百货工作的所有雇员的姓名以及他们居住的城市.2、求数据库中比第一百货的所有雇员的薪水都高的雇员的姓名.3、删除为第一百货工作的所有雇员的记录.4、给第一百货的所有雇员加薪,若薪水高于一万,增加3%,否则增加5%.假定需要保存“图书“,读者,借阅和‘作者’信息以及他们之间的关系.其中图书有总编号,书名,作者,出版单位,单价等信息,读者有借书证号,姓名,性别,地址,作者有姓名,单位,性别,出生年月等信息,每位读者可以接阅多本书,每本书可以由多位读者借阅,借书时有借书日期.要求:1:设计数据库,建立合适的表来包出需要的信息,定义表的时候要给出外码的定义,书名,作者, 姓名不能为空,性别只能取男或女,借书日期必须许在1980年1月1日到2050年12月31日之间.2:往每个表中至少插入4条记录,并保证后面的查询结果不为空,.3:找出借书日期在2002年12月之前的读者和书名.4:给出每个出版社出版的单价在20元以下的书的总数.5:作者‘李通’现在改为笔名‘李不通’,请在数据库内作出相应的改变.6:删除所有在本数据库中没有其写的书的作者的信息.现有一个公司的部门及雇员的数据库,由下面三个表组成:雇员(雇员号,姓名,年龄,地址,薪水)部门(部门号,部门名,部门经理)工作(雇员号,部门号,在该部门工作的年限)试用SQL语言完成下列功能:①建表,在定义中要求声明⑴每个表的主外码⑵雇员的年龄介于18到55之间⑶雇员姓名和部门名不能为空⑷薪水取1000到50000之间整数②往表中插入数据雇员(E01,tom,35,海淀,8000 E02,dennis,24,朝阳,5000 E03,john,20,海淀,4000E04,rick,41,朝阳,7000 E05,bill,45,西城,7500 E06,frank,35,海淀,6000 E07,jank,25,东城,3000 E08,mike,23,东城,3500)部门(D01,人事,E04 D02,信息,E01 D03,销售,E05 D04,财务,E06)工作(E01,D02,6 E01,D03,1 E01,D04,2 E02,D01,2 E02,D04,0 E03,D02,0 E04,D01,4 E04,D02,1 E05,D03,2 E06,D04,4 E07,D04,1 E08,D03,2)③用SQL语句完成下列查询⑴求同时在三个部门工作的雇员和姓名⑵列出各部门的职工的工资总额,并按照总额大小降序排列⑶求和其部门经理住址相同的员工的姓名及经理姓名④为财务部门的雇员加薪,5年以下加5%,5年以上加3%⑤删除部门工作年限为0的工作记录,若删除后有雇员没有任何部门工作,删除其雇员记录设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生..现要建立关于系、学生、班级的数据库,关系模式为:班CLASS(班号,专业名,系名,入学年份,人数)学生STUDENT(学号,姓名,年龄,班号)系DEPARTMENT(系号,系名)试用SQL语言完成以下功能:1建表,在定义中要求声明:(1)每个表的主外码.(2)每个班级的人数不能超过30人.(3)学生的年龄介于15到40岁之间.(4)学生姓名不能为空.2插入如下数据CLASS( 101,软件,计算机,1995,20;102,微电子,计算机,1996,30;111,无机化学,化学,1995,29;112,高分子化学,化学,1996,25;121,统计数学,数学,1995,20;131,现代语言,中文,1996,20;141,国际贸易,经济,1997,30;142,国际金融,经济,1996,14; )STUDENT(8101,张三,18,101;8102,钱四,16,121;8103,王玲,17,131;8105,李飞,19,102;8109,赵四,18,141;8110,李可,20,142;8201,张飞,18,111;8302,周瑜,16,112;8203,王亮,17,111;8305,董庆,19,102;8409,赵龙,18,101;8510,李丽,20,142)DEPARTMENT(001,数学;002,计算机; 003,化学;004,中文; 005,经济;)3完成以下查询功能(1)找出所以姓李的学生.(2)列出所有开设超过两个专业的系的名字.(3)列出人数大于等于2的系的编号和名字.4学校又新增加了一个物理系,编号为006.5学生张三退学,请更新相关的表.。