【#第一文档网# 导语】以下是®第一文档网的小编为您整理的《数据库SQL部分练习题集》,欢迎阅读!
1.SQL是_结构化查询语言__ 2.SQL语言的功能包括__数据定义___、__数据更新_、_数据查询__、__数据控制_。 3.视图是一个虚表,它是从______中导出的表,在数据库中,只存放视图的____,不存放视图的________。 4.设有如下关系表R:R(No,Name, Sex, Age, Class),主关键字是No,其中No为学号,Name为姓名,Sex为性别,age为年龄,Class为班号,写出实现下列功能的SQL语句。 ① 插入一个记录(25,‘李明’,‘男’,21,‘95031’); ____________________________________________________________ ②插入‘95031’班学号为30,姓名为‘郑和’的学生记录; ____________________________________________________________ ③将学号为10的学生姓名改为‘王华’; ____________________________________________________________ ④将所有‘95101’班号改为‘95091’; ____________________________________________________________ ⑤删除学号为20的学生记录; ____________________________________________________________ ⑥删除姓‘王’的学生记录; ____________________________________________________________ 5.SQL语言是___________的语言,易学习。 A.过程化 B.非过程化 C. 格式化 D.导航式 6.SQL语言是___________语言 A.层次数据库 B.网络数据库 C.关系数据库 D.非数据库 7.SQL语言具有___________的功能。 A. 关系规范化、数据操纵、数据控制 B. 数据定义、数据操纵、数据控制 C. 数据定义、关系规范化、数据控制 D. 数据定义、关系规范化、数据操纵 8.SQL语言具有两种使用方式,分别称为交互式SQL和______________。 A.提示式SQL B.多用户SQL C.嵌入式SQL D.解释式SQL 9.SQL语言中,实现数据检索的语句是____________。 A.SELECT B.INSERT C.UPDATE D.DELETE 10.下列SQL语句中,修改表结构的是_________________。 A.ALTER B.CREATE C.UPDATE D.INSERT 11.试述SQL语言的特点 12.试述SQL语言的功能 13.什么是基本表?什么是视图?两者的区别和联系是什么? 14.所有的视图是否都可以更新?哪些视图不可更新,举例说明? 15.设有关系职工表(职工号,职工名,部门号,工资)和部门表(部门号,部门名,主任),用SQL语句完成下列要求: (1)向职工表中插入行(‘025’,‘王芳’,‘03’,1000) ___________________________________________________ (2)从职工表中删除人事处的所有员工 __________________________________________________________ (3)将职工号为‘001’的员工工资改为700元钱 ____________________________________________________________ (4)查询人事处的员工最高工资 ___________________________________________________________ (5)查询“王芳”所在部门的部门主任 _____________________________________________________________ (6)查询与“王芳”在同一部门的其它员工信息 _____________________________________________________________ (7)建立公司所有部门的公共视图——部门职工视图 _create view部门职工视图 as select 职工号,职工名,部门号,工资,部门名,主任 from 职工 join 部门 on 职工.部门号=部门.部门号 (8)从部门职工视图中查询财务处员工工资高于800元的员工信息 _select * from 部门职工视图 where 部门名=‘财务处’ and 工资 > 800_ 16.设有如下三个关系表: Book(ID,Name,Author,Publish,Price) Reader(ID,Name,Sex,BirthDate) Borrow(BookID,ReaderID,BorrowDate) 写出实现下列功能的SQL语句: (1)向Reader表插入一条读者信息(05A110001,李丹,女,1880-4-1) _____________________________________________________________ (2)将Book表中所有清华大学出版社出版的21元的图书价格改为25元 __________________________________________________________ (3)从Borrow表中删除在2005-1-5之后的读者借书信息 ____________________________________________________________ (4)查询图书表中的所有图书的最高价格 _____select max(price) from book________ (5)查询清华大学出版社出版的定价不超过25元的图书名称 Select name from book where publish=‘清华大学出版社’and price<25 __________ (6)显示姓李且姓名只含两个字的作者撰写的图书信息 Select * from book where author like ‘李_’ (7)求出版图书数量最多的出版社所出版的图书定价的平均值s select publish, avg(price) s from book group by publish having count(*)>=all( select count(*) from book group by publish) (8)求读者胡晓丹所借的图书编号、书名和出版社信息及借书时间 Select book.ID, book.name, publish, borrowdate From book join borrow on book.ID=borrow.bookID Join reader on reader.ID=borrow.readerID Where reader.name=’胡晓丹’ (9)创建一个读者借书的视图R _ B_View ( ReaderName, BookName, BorrowDate) ___________________________________________________________________________ (10)从视图R_B_View中查找2005-5-22日借书的读者姓名和书名 ___________________________________________________________________________ BookAuthor, BookPublish, BookPrice, 1. 请根据如下四张表做后面的练习: 学生表Student ( Sno, Name, Sex, Birthday, Class) 教师表Teacher ( Tno, Name, Sex, Birthday, Prof, Depart) 课程表Course ( Cno, CName, Tno) 成绩表Score ( Sno, Cno, Grade) 其中: Student表中Sno是主码, Teacher表中Tno是主码, Course表中的Tno是Teacher表的外码, Score表中的Sno是Student表的外码、Cno是Course表的外码。 ① 向student表添加Depart列的信息,要求类型为字符串型,最大长度30位; ② 向teacher表插入一条记录(010125,刘冰,女,1975-06-25,助教,电子工程系); insert into teacher(‘010125’,‘刘冰’,‘女’,‘1975-06-25’,‘助教’,‘电子工程系’) ③ 将student表中学号为‘209’的学生班号改为‘95031’ Update student set class=’95031’ where sno=’209’ ④ 删除选修“刘冰”教师所教课程的学生选课信息 Delete from Score where cno in( Select cno from Course where Tno in( Select Tno from Teacher where name=’ 刘冰’)) ⑤ 显示student中‘95031’班或性别为‘女’的同学记录 Select * from student where class=’95031’ or sex=’女’ ⑥ 查找最低分大于70分,最高分小于90分的学生No; Select sno from score Group by sno Having Min(grade)>70 and max(grade)<90 ⑦ 查找score表中至少有5名学生选修的并以3开头的课程号的平均分数 Select cno, avg(grade) from score where cno like ‘3%’ Group by cno Having Count(*)>=5 ⑧ 显示‘95033’班所选课程的平均分; Select avg(grade) from student join score on student.sno=score.sno where class=’95033’ ⑨ 显示“张旭”教师任课的学生成绩。 Select grade from teacher join course on teacher.tno=course.tno join score on score.cno=course.cno where teacher.name=’张旭’ select grade from score where cno in( select cno from course where tno in( select tno from teacher where name=’张旭’)) ⑩ 显示选修某课程的同学人数多于5人的教师姓名 Select score.cno,teacher.name from teacher join course On teacher.tno=course.tno join score on score.cno=course.cno group by score.cno, teacher.tno,teacher.name having count(*)>=5 select name from teacher where tno in( select tno from course where cno in( select cno from score group by cno having count(*)>=5)) (11)显示所有存在85分以上成绩的课程cno Select cno from score where grade>85 (12)显示选修了课程号为‘3-105’课程且成绩高于选修课程号为‘3-245’课程的学生的cno,no和grade。 (13)显示所有未讲课的教师name和depart(只能用子查询) Select name , depart from teacher where tno not in( Select tno from course) (14)显示和李军同性别且同班的同学姓名 Select name from student where sex = ( select sex from student where name=’李军’) and class=( select class from student where name=’李军’) (15)显示所有选修’计算机导论’课程的男同学的成绩表 Select score.* from score join student on student.sno=score.sno join course on course.cno=score.cno Where course.name=’计算机导论’ and sex=’男’ Select * from score where cno in (select cno from course where name=’计算机导论’) and sno in(select sno from student where sex=’男’) (16)显示最高分学生的no,cno和grade列 ---第一种理解:某一课程最高分 Select * from score where grade=(select max(grade) from score) Select * from score where grade>=all(select grade from score) ---第二种理解:该学生总分最高 Select * from score where sno in (select sno from score group by sno having sum(grade)>=all(select sum(grade) from score group by sno)) (17)按班级和年龄从大到小的顺序显示student表的全部记录 Select * from student order by class desc, birthday asc (18)建立一个包含所有学生no,name,cname,grade 和 class字段的视图degrees Create view degrees(no, name, cname, grade, class) As select student.sno, Name, Cname, grade, class From student join score on student.sno=score.sno Join course on course.cno=score.cno (19)根据上题所建视图,查询‘95031’班级的学生选课信息 Select * from degrees where class=’95031’ (20)查询选修四门课以上课程的学生总成绩(不统计不及格的课程) 2. 按照要求用SQL语句创建下面三张表: ⑪. 学生表:表名——Student 属性:Sno 字符型,最大7个字符 表示学生学号 Sname 字符型,最大8个字符 表示学生姓名 Sage 整型 表示学生年龄 Ssex 字符型,最大2个字符 表示学生性别 Sdate 日期时间型 表示学生入学时间 Sdept 字符型,长度为20 表示所在系 约束:主码——Sno 非空属性——Sname 默认入学时间——‘2000-09-01’ Create table student ( Sno char(7) primary key, Sname char(8) not null, Sage int check(sage>10 and sage<60), Ssex char(2) check(ssex=’男’ or ssex=’女’), Sdate datetime default ‘2000-9-1’, Sdept char(20) ) ⑫. 课程表:表名:Course 属性:Cno 字符型,最大4个字符 表示课程编号 Cname 字符型,最大10个字符 表示课程名 Cteacher 字符型,最大8个字符 表示教师姓名 Coffice 字符型,最大20个字符 表示办公室 约束:主码——Cno 非空属性——Cname ⑬. 选课表:表名——SC 属性:Sno 字符型,最大7个字符 表示学生学号 Cno 字符型,最大4个字符 表示课程号 Grade 整型 表示成绩 约束:主码——Sno,Cno; Sno,Cno均为外码) Create table sc( Sno char(7) , Cno char(4), Primary key(sno,cno), Grade int check(grade>=0 and grade<=100) , Foreign key(sno) references student(sno), Foreign key(cno) references course(cno) ) 针对上面的三个基本表做如下的练习: ⑭.向基本表Student中插入学生元组(”0201901”,”ZHAO”,18,”女”,2002-08-31,NULL) ⑮.把WANG同学的选课记录全部删除 ⑯.查询在C117办公室的老师所授课程的课程号和课程名 ⑰.查询平均成绩在75分以上的学生学号和其平均成绩 ⑱.查询其他系比信息系年龄最小的学生还小的学生姓名、年龄 ⑲.查询所有缺考的学生的学号、姓名和系别 ⑳.查询选修了“C01”课程的学生总人数和最高分数 ⑴.查询在2000-8-31日入学的男学生的学号和姓名 ⑵.查询与刘晨选修的一门课程相同的学生姓名 ⑶.查询与QIAN老师在同一个办公室的其它老师的姓名 ⑷.查询至少选修LIU老师所授课程中一门课程的女学生姓名 ⑸.查询哪些课程没有人选修 ⑹.查询选修了课程‘C02’且成绩高于此课程的平均成绩的学生的学号和成绩 ⑺.求平均分最高的学生姓名 ⑻. 显示20岁学生的基本信息和选课信息(课程名和分数),若没有选课,也要将基本信息显示出来 ⑼. 建立计算机系选修了课程‘c01’的学生的视图 ⑽.建立视图(SGrade),包含每个学生的学号(Sno),选课门数(Count_Cno),平均分(Avg_Grade) (21). 利用上述视图进行查询:列出平均分大于80分的学生的学号及其选课门数 (22). 查询选修了3门以上课程的学生学号 (23). 查询以DB开头且倒数第三个字母是i的课程的课程号、课程名 3. 按照要求用SQL语句创建下面三张表: ⑪. 商店表:表名——SHOP 属性:S# 字符型,最大7个字符 表示商店代号 SNAME 字符型,最大20个字符 表示商店名称 WQTY 整型 表示店员人数 CITY 字符型,最大10个字符 表示所在城市 约束:主码——S# 非空属性——Sname 店员人数要大于50人 ⑫. 商品表:表名:GOODS 属性: G# 字符型,最大8个字符 表示商品编号 GNAME 字符型,最大20个字符 表示商品名称 PRICE 数值型,精度4位,小数保留2位 表示商品价格 约束:主码——G# 非空属性——GNAME ⑬. 数量表:表名——STORAGE 属性:S# 字符型,最大7个字符 表示商店代号 G# 字符型,最大8个字符 表示商品编号 QTY 整型 表示该商店所储存的商品数量 约束:主码——S#,G#; S#,G#均为外码 QTY要大于等于0 针对上面的三个基本表做如下的练习: ⑭.向基本表SHOP中插入商店元组(”350”,”家乐福超市”,200,”大连”) ⑮.把家乐福超市储存收音机商品的记录删除 ⑯.将编号为056的商品价格修改为750元 ⑰.查询在北京的商店其平均人员数量 ⑱.查询储藏笔记本数量最多的商店名称(较难) ⑲.查询上海市所有供应手机的商店名 ⑳.查询店员人数不超过100人或者在天津市的所有商店的代号和名称 ⑴.查询至少供应代号为256的商店所供应的全部商品的商店名称和所在城市 ⑵.创建一个北京市的商店供应商品的视图S_G_View ( ShopNo, ShopName, GoodsName, Quantity) Create view S_G_View( ShopNo, ShopName, GoodsName, Quantity) As select Shop.S#, Sname, Gname, QTY From shop join storage on shop.S#=storage.S# Join Goods on Goods.G#=storage.G# Where city=’北京市’ (13). 利用上述视图进行查询:列出北京存储电视机超过800台的商店名称和商品数量 Select shopname, Quantity from S_G_View Where GoodsName=‘电视机’ and Quantity>800 创建如下结构的三张表格,这三张表格在后面的作业中会反复用到,请大家认真完成: ① 图书表 表名:Book 结构:共有5列,具体如下所示 列名 ID 数据类型 CHAR(10) 描述 图书编号 Name NVARCHAR(30) 图书的书名 Author NVARCHAR(10) 图书的作者 Publish NVARCHAR(20) 出版社 Price ② 读者表 表名:Reader 结构:共有列,具体如下所示 列名 ID 数据类型 CHAR(10) 描述 读者编号 Name NVARCHAR(8) 读者姓DECIMAL(6,2) 定价 名 Sex NCHAR(1) 读者性别 BirthDate DATETIME 读者的出生日期 ③ 借阅情况表 表名:Borrow 结构:共有列,具体如下所示 列名 BookID 数据类型 描述 CHAR(10) 图书编号 ReaderID CHAR(10) 读者编号 BorrwoDate DATETIME 借阅日期 作为练习,把下面的数据录入到相对应的表中:Book ID Name Author Publish Price 28.00 A32DT00001 计算机文化基础 A32DT00002 数据库原周文波 清华大学出版社 岳海健 电子工业出版25.00 理 B32DT00001 高等数学 李丹 社 同济大学出版社 42.00 B32DT00002 离散数学 王旭 高等教育出版社 31.00 C32DT00001 毛泽东思想 D32DT00001 大学语文 A32DT00003 操作系统 刘琳 机械工业出版社 18.00 赵阳 周强 水电出版社 清华大学出版社 22.00 24.00 A32DT00004 C语言 谭浩强 清华大学出版社 20.00 B32DT00003 线形代数 李俐 高等教育出版社 12.00 B32DT00004 概率论与数理统计 Reader ID 021B310003 021B310004 021B310005 021B310006 Name 于海颖 胡晓丽 宋玮 施秋乐 颜承伟 机械工业出版社 22.00 Sex 男 女 女 NULL BirthDate NULL 1977-1-26 NULL 1976-9-20 021B310007 021B310008 Borrow BookID 张巍 王金娟 NULL NULL NULL NULL ReaderID BorrwoDate 2005-1-20 2005-1-20 2005-2-1 2005-2-1 2005-2-3 A32DT00002 021B310003 A32DT00001 021B310006 B32DT00001 021B310004 B32DT00002 021B310004 C32DT00001 021B310006 作业: 1. 查询所有图书的平均价格。 Select avg(price) from book 2. 查询姓王的女读者信息 Select * from reader where name like ‘王%’ And sex=’女’ 3. 查询所有读者的借阅信息,按照借阅日期降序排列。 Select * from borrow order by borrowdate desc 4. 查询被借阅过的图书编号 Select distinct book_id from borrow 5. 查询每个出版社出版的图书数量,用中文列名显示出版社和图书数量。 Select publish as 出版社, count(*) as 图书数量 from book group by publish 6. 查询书名包含“数据库”且价格低于40元的图书信息。 Select * from book where name like ‘%数据库%’ and price<40 7. 查询平均价格低于30元的出版社名称。 Select publish from book Group by publish Having avg(price)<30 1. 2. 把Reader表的所有记录显示出来,并且列名用汉字把表Book中的所有数据都显示出来。 表示。 3. 4. 查询borrow表中所有读者借阅图书的信息。 显示所有读者(Reader)的姓名和年龄。 5. 6. 查询所有借书的读者编号。 把表Book中的出版社为“清华大学出版社”的书选出来。 7. 把表Book中出版社为“清华大学出版社”,并且定价不超过25元的书选出来。 8. 把表Book中出版社为“清华大学出版社”,或者定价不超过25元的书选出来。 9. 显示定价在20到25元之间(包含20元和25元)的图书信息。 10.显示定价不在20到25元之间(不包含20元和25元)的图书信息。 11.显示出版社为“清华大学出版社”、“同济大学出版社”或者“高等教育出版社”的图书信息。 12.显示出版社为“清华大学出版社”、“同济大学出版社”或者“高等教育出版社”以外的其它出版社出版的图书信息。 13.显示书名包含“数学”的图书信息。 14.显示姓名为三个字的读者信息。 15.显示由姓李的作者写的书的信息。 16.把所有的图书按照定价由高到低进行排序。 17.把所有的图书按照定价由高到低进行排序,如果定价相同,再按照编号进行升序排列。 18.求定价最低的图书的定价。 19.求由“清华大学出版社”出版的图书的定价的平均值。 20.求读者表(Reader)中有多少位读者。 21.求每一个出版社出版的图书定价的平均值。 22.求出版了两本以上(含两本)图书的出版社所出版的图书定价的平均值。 23.求定价最低的图书的书名以及定价。 24.求在2005年2月3日借书的人的姓名。 25.求平均定价最高的出版社的名称。 26.求在2005年2月3日有哪些人借了哪些书。 综合: (1)向Reader表插入一条读者信息(05A110001,李丹,女,1880-4-1) _____________________________________________________________ (2)将Book表中所有清华大学出版社出版的21元的图书价格改为25元 __________________________________________________________ (3)从Borrow表中删除在2005-1-5之后的读者借书信息 ____________________________________________________________ (4)查询图书表中的所有图书的最高价格 ___________________________________________________________ (5)查询清华大学出版社出版的定价不超过25元的图书名称 _____________________________________________________________ (6)显示姓李且姓名只含两个字的作者撰写的图书信息 _____________________________________________________________ (7)求出版图书数量最多的出版社所出版的图书定价的平均值 ______________________________________________________________ (8)求读者胡晓丹所借的图书编号、书名和出版社信息及借书时间 _______________________________________________________________ (9)创建一个读者借书的视图R _ B_View ( ReaderName, BookName, BorrowDate) ___________________________________________________________________________ (10)从视图R_B_View中查找2005-5-22日借书的读者姓名和书名 BookAuthor, BookPublish, BookPrice, 本文来源:https://www.dywdw.cn/6270e5f16c1aff00bed5b9f3f90f76c661374cdd.html