第一篇:SQL数据库题库及答案 (6)
实训11用户自定义函数及存储过程
--
1、创建一个存储过程,查看student表里的所有记录,并运行该存储过程。其代码如下: CREATE PROC pr_studentCodes AS SELECT * FROM student GO EXEC pr_studentCodes
--
2、修改pr_studentcodes存储过程,使其按照学号排序 ALTER PROC pr_studentCodes AS SELECT * FROM student ORDER BY Studentid EXEC pr_studentCodes
--
3、删除存储过程Pr_studentCodes drop procedure pr_studentCodes
--
4、创建向Class表中插入一条记录(‘’,‘电子UI班’,null,)的存储过程pr_InsertClass create procedure pr_InsertClass as insert into Class values('10901','电子UI班',null,1)go exec pr_InsertClass--5 创建存储过程up_Add,要求该存储过程能够实现对输入的两个数相加,并将结果输出 create proc up_Add @num1 int,@num2 int,@sum int output as
begin select @sum=@num1+@num2 end
--6 执行存储过程up_Add,计算加上的和。declare @he int exec up_Add @num1=78,@num2=82,@sum=@he output print '结果是:'+convert(char,@he)
--
三、阅读代码写结果--1 create proc pr_grade(@sno char(9), @cname char(8), @grade int output)as select @grade=score from score,course where score.courseid=course.courseid and studentid=@sno and coursename=@cname--2 declare @score int exec pr_grade '10701001','高等数学',@score output select @score
--3 create proc pr_count(@classid varchar(8), @num int output)as select @num=count(*)from student where Classid=@classid--4 declare @peop int exec pr_count @classid='10701',@num=@peop output select @peop
drop procedure pr_count
第二篇:SQL数据库选择题及答案
1、在数据库技术中,独立于计算机系统的模型是_C__。A、面向对象的模型B、关系模型C、E-R模型D、层次模型
2、数据库系统的控制中枢是__B_。A、数据库、b、数据库管理系统C、数据库管理员D、数据库应用系统
3、使用SQL命令将学生表STUDENT中的学生年龄AGE字段的值增加1岁,应该使用的命令是__C_。
A、UPDATE SET AGE WITH AGE+1
B、REPLACE AGE WITH AGE+1
C、UPDATE STUDENT SET AGE=AGE+1
D、UPDATE STUDENT AGE WITH AGE+1
4、在关系数据库中,建立数据库表时,将年龄字段值限制在12~40岁之间的这种约束属于__B__。
A、视图完整性约束B、域完整性约束C、参照完整性约束D、实体完整性约束
5、在 SQL 语句中,与 X BETWEEN 20 AND 30 等价的表达式是__D_。A、X>=20 AND X<30
B、X>20 AND X<30
C、X>20 AND X<=30
D、X>=20 AND X<=30
6、在数据库中,概念模型是_D__。A、用于现实的建模,与具体的DBMS有关B、用于信息世界的建模,与具体的DBMS有关
C、用于现实的建模,与具体的DBMS无关D、用于信息世界的建模,与具体的DBMS无关
7、数据库的并发操作可能带来的问题包括__B_。A非法用户的使用B丢失更新C数据独立性会提高D增加数据冗余度
8、在关系数据库中,模式对应的是__A___。A、视图和所有基本表
B、视图和部分基本表
C、基本表
D、索引
9、能实现绝对的与平台无关性的Web数据库访问技术是_D_。A、ADO
B、ActiveX
C、WebbaseAPI
D、JDBC
10、在下列描述中,正确的描述是__B___。
A、SQL 是一种过程化语言B、SQL 采用集合操作方式
C、SQL 不能嵌入到高级语言程序中
D、SQL 是一种 DBMS
11、数据库系统是由__A__组成的。A、数据库、数据库管理系统和用户
B、数据文件、命令文件和报表
C、数据库文件结构和数据
D、常量、变量和函数
12、在SQL查询时,使用WHERE子句指出的是__B__。A、查询目标B、查询条件C、查询视图D、查询结果
13、在下列 RDMBS 产品中,属于小型数据库系统的是_A_。A、Access B、Oracle C、Sybase D、Informix
14、数据库类型是按照_A_来划分的。
A、数据模型B、记录形式C、数据存取方法D、文件形式
15、作为Microsoft Office家族成员之一的_A_数据库,能够与其他Office组件进行数据交换共享数据资源,易于生成集文字处理、图表生成和数据管理于一体的办公自动化系统。A、Access
B、Oracle
C、Sybase
D、Informix
16、数据库管理系统更适合于_D_方面的应用。A、CAD
B、过程控制C、科学计算D、数据处理
17、下列四组SQL命令,全部属于数据定义语句的命令是_C__。A、CREATE,DROP,ALTER
B、CREATE,DROP,UPDATE
C、CREATE,DROP,GRANT
D、CREATE,DROP,SELECT
18、通过Internet及浏览器处理的数据库,应该是_C__处理。A、集中式
B、分布式
C、主从结构式D、以上3种模式
19、数据的逻辑独立性是指__D_。A、数据与存储结构的逻辑独立性 B、数据元素之间的逻辑独立性
C、存储结构与物理结构的逻辑独立性
D、数据与程序的逻辑独立性
20、在数据库技术中,独立于计算机系统的模型是_C__。A面向对象的模型
B关系模型
C、E-R模型
D、层次模型
21、关系代数的3个基本运算是–D--、投影、连接。A、关系与B、蕴含C、关系或D、选择
22、下面命题不正确的是:A、若冗余数据可以控制,则数据更新的一致性得以保证
B、数据库减少了不必要的数据冗余C、数据库的数据可以共享D、数据库中不存在数据冗余
23、在基本SQL中不可以实现: A、定义视图B、并发控制C、定义基表D、查询视图和基表
24、用二维表来表示实体及实体之间联系的数据模型称为_C___。
A、实体-联系模型B、层次模型C、关系模型D、网状模型
25、查找工资在600元以上并且职称为工程师的纪录,逻辑表达式为_D___。
A、“工资”>600.OR.职称=“工程师”
B、工资>600.AND.职称=工程师
C、“工资”>600.AND.“职称”=“工程师”
D、工资>600.AND.职称=“工程师”
26、数据库镜像可以用于__C_。(1分)
A、实现数据库的安全性
B、实现数据共享C、进行数据库恢复或并发操作D、保证数据库的完整性
27、在下列类型的数据库系统中,应用最广泛的是__C___。(1分)
A、分布型数据库系统B、逻辑型数据库系统C、关系型数据库系统D、层次型数据库系统
28、在下列描述中,正确的描述是__B__。(1分)A、SQL 是一种过程化语言B、SQL 采用集合操作方式
C、SQL 不能嵌入到高级语言程序中
D、SQL 是一种 DBMS
第三篇:数据库 sql习题及答案
/*
Question 1:Find the titles of all movies directed by Steven Spielberg.select title from movie where director='Steven Spielberg'
Question 2:Find all years that have a movie that received a rating of 4 or 5, and sort them in increasing order.select distinct year from movie,rating where movie.mid=rating.mid and stars in(4,5)order by year
Question 3:Find the titles of all movies that have no ratings
select title from movie where mID in
(select mid from Movie except
select mid from rating)
select title from movie except
select title from movie,rating where movie.mid=rating.mid
Question 4:Some reviewers didn't provide a date with their rating.Find the names of all reviewers who have ratings with a NULL value for the date.select name from reviewer,rating where reviewer.rid=rating.rid and ratingdate is null
Question 5:Write a query to return the ratings data in a more readable format: reviewer name, movie title, stars, and ratingDate.Also, sort the data, first by reviewer name, then by movie title, and lastly by number of stars.select name,title,stars,ratingdate from movie,rating,reviewer where movie.mid=rating.mid and reviewer.rid=rating.rid order by name,title,stars
Question 6:For all cases where the same reviewer rated the same movie twice and gave it a higher rating the second time, return the reviewer's name and the title of the movie.select name,title
from rating as F,Rating as S,Movie,Reviewer where F.rID=S.rID and F.mID=S.mID and F.stars and F.ratingDate select name,title from movie,reviewer,(select r1.rid,r1.mid from rating as r1,rating as r2 where r1.rid=r2.rid and r1.mid=r2.mid and r1.ratingdate>r2.ratingdate and r1.stars>r2.stars)as r where movie.mid=r.mid and reviewer.rid=r.rid Question 7:For each movie, find the highest number of stars that movie received as a rating.Return the movie title and number of stars.Sort by movie title.select title,MAX(stars)as max_star from rating,Movie where Rating.mID=Movie.mID group by title order by title select title,maxrating from movie,(select mid,max(stars)as maxrating from rating group by mid)as r where movie.mid=r.mid order by title Question 8:For each movie, return the title and the ‘rating spread(范围)', that is, the difference between highest and lowest ratings given to that movie.Sort by rating spread from highest to lowest, then by movie title.select title,MAX(stars)-MIN(stars)as rating_spread from rating,Movie where Rating.mID=Movie.mID group by title order by rating_spread desc,title select title,spread as “rating spread” from movie,(select mid,max(stars)-min(stars)as spread from rating group by mid)as r where movie.mid=r.mid order by spread desc,title Question 9:Find the difference between the average rating of movies released before 1980 and the average rating of movies released after 1980.(Make sure to calculate the average rating for each movie, then the average of those averages for movies before 1980 and movies after.Don't just calculate the overall average rating before and after 1980.) select F.avg_star-S.avg_star from,(select AVG(avg_star)as avg_star from(select Rating.mID,AVG(stars)as avg_star from Rating left join Movie on Rating.mID=Movie.mID where year>=1980 group by Rating.mID)as S(select AVG(avg_star)as avg_star from(select Rating.mID,AVG(stars)as avg_star from Rating left join Movie on Rating.mID=Movie.mID where year<1980 group by Rating.mID)as F)as F)as S select r1979.avgm-r1980.avgm from ,Question 10:Add the reviewer Roger Ebert to your database, with an rID of 209.insert into Reviewer values(209,'Roger Ebert') Question 11: Insert 5-star ratings by James Cameron for all movies in the database.Leave the review date as NULL.insert into Rating(rID,mID,stars)select rid,mID,5 as stras from movie,(select rid from Reviewer where name='James Cameron')as T insert into rating(rid,mid,stars)select rid,mid,5 from reviewer,movie where name='James Cameron' Question 12:For all movies that have an average rating of 4 stars or higher, add 25 to the release year.(Update the existing tuples;don't insert new tuples.) update Movie set year=year+25(select sum(avgrating)/count(*)as avgM from (select avg(stars)as avgrating from rating,movie where movie.mid=rating.mid and year>=1980 group by movie.mid)(select sum(avgrating)/count(*)as avgM from (select avg(stars)as avgrating from rating,movie where movie.mid=rating.mid and year<1980 group by movie.mid) as r) as r1979 as r) as r1980 where mID in (select mID from Rating group by mID having AVG(stars)>=4) */ SQL Server数据库试题七及答案 一.单项选择题(每题2分,计30分) 1._______是数据库系统的核心,它负责数据库的配置、存取、管理和维护等工作。(c)A、操作系统 B、关系模型 C、数据库管理系统 D、数据库 2.SQL Server2000是一款基于_________体系的关系型数据库管理系统。(A)A、客户机/服务器 B、主机 C、N层 D、单机 3.下面哪一个不是SQL Server2000的基本数据类型(A)A、VARIANT B、VARCHAR C、VARBINARY D、NVARCHAR 4.下面的类型中宽度最大的是(C)A、CHAR(5)B、VARCHAR(5)C、NCHAR(5)D、BIGINT 5.表达式LEN('电子学院')+ DATALENGTH(GETDATE())的值为(C)A、8 B、10 C、12 D、16 6.在SQL Server2000中,数据存储的基本单位是页,页的大小是(D)A、1K B、2K C、4K D、8K 7.在使用CREATE DATABASE命令创建数据库时,FILENAME选项定义的是(D)A、文件增长量 B、文件大小 C、逻辑文件名 D、物理文件名 8.关于表结构的定义,下面说法中错误的是(C)A、表名在同一个数据库内应是唯一的 B、创建表使用CREATE TABLE命令 C、删除表使用DELETE TABLE命令 D、修改表使用ALTER TABLE命令 9.下面哪一个约束用来禁止输入重复值?(A)A、UNIQUE B、NULL C、DEFAULT D、FOREIGN KEY 10.下面关于登录账户、用户和角色的说法错误的是(C)A、登录账户是服务器级的 B、用户是登录账户在某个数据库中的映射 C、用户不一定要和登录账户相关联 D、角色其实就是用户组 11.在SELECT语句中,用于去除重复行的关键字是(B)A、TOP B、DISTINCT C、PERCENT D、HAVING 12.若想查询出所有姓张的、且出生日期为空的学生信息,则WHERE条件应为(C)A、姓名 LIKE ‘张%’ AND 出生日期 = NULL B、姓名 LIKE ‘张*’ AND 出生日期 = NULL C、姓名 LIKE ‘张%’ AND 出生日期 IS NULL D、姓名 LIKE ‘张_’ AND 出生日期 IS NULL 13.下面关于视图的说法中,错误的是(C)A、视图是个虚拟表 B、可以使用视图更新数据,但每次更新只能影响一个表 C、不能为视图定义触发器 D、可以创建基于视图的视图 14.下面关于触发器的描述,错误的是(A)A、触发器是一种特殊的存储过程,用户可以直接调用 B、触发器表和DELETED表没有共同记录 C、触发器可以用来定义比CHECK约束更复杂的规则 D、删除触发器可以使用DROP TRIGGER命令,也可以使用企业管理器 15.下面关于事务的描述,错误的是(D)A、事务可用于保持数据的一致性 B、事务应该昼小且应尽快提交 C、应避免人工输入操作出在在事务中 D、在事务中可以使用ALTER DATEABSE 二.填空题(每空1分,计20分) 1.SQL Server是作为Windows NT或2000的一个__服务________运行的,用户可以启动、暂停或停止它。 2.SQL Server服务包括有__ SQL Server服务________、___ SQL Server Agent服务_______、Microsoft Search和MS DTC服务。 3.SQL Server有两类数据库,__系统数据库________和用户数据库。其中为新的用户数据库提供模板的系统数据库是____ model ______。 4.所有的数据库都有一个____主数据文件______和一个或多个事务日志文件,此外,还可能有_____次要数据文件_____。 5.向表中添加数据应使用___ INSERT(或填INSERT INTO)_______命令,更新数据应使用___ UPDATE _______命令。 6.在SQL Server2000中,约束有非空约束、缺省约束、_主键约束_________、____外键约束______、检查约束和唯一约束等6种类型。 7.对象权限是指用户基于数据库对象层次上的访问和操作权限,共有5种:SELECT、INSERT、DELETE、___ UPDATE_______和____ EXECUTE ______。(或填更新、执行) 8._____ UNION _____可以把两个或多个SELECT语句的查询结果组合成一个结果集,使用时要求所有SELECT语句的列数应_______相同___,对应列的数据类型相容。 9.索引表的顺序与数据行的物理顺序相同的索引称为___聚集(或聚簇 或簇)_______索引。 10.使用游标的一般步骤应为:__创建游标 ________、_____打开游标_____、从游标的结果集中读取数据、对游标中的数据逐行操作、关闭游标和释放游标。 11.___事务_______是指一个操作序列,这些操作序列要么都被执行,要么都不被执行。 12.___差异备份_______只记录自上次完整数据库备份后发生更改的数据。 三.判断题(每题1分,计10分) 1.外键是指一个表中含有与另外一个表的主键相同的列或列组,外键不要求惟一。(√)2.SQL Server2000支持Unicode字符集,相应数据类型为text、char和varchar。(×) 3.企业管理器是SQL Server提供的最主要的数据库管理工具,它以树形结构的形式来管理数据库服务器、数据库和数据库中的对象。(√) 4.全局变量与局部变量一样,用户必须进行声明后才能使用。(×)5.在SQL Server2000中,由于不能跨页存储数据行,所以页中每一行最多包含的数据量是8060B。(√) 6.数据完整性就是指数据的正确性、完备性和一致性。(√) 7.若使用REVOKE命令撤消某用户创建表的权限,则该用户将肯定无权创建表。(×) 8.WITH CHECK OPTION表示使用视图更新数据时应满足视图定义中设置的条件(√)9.表的每个触发动作只能有一个INSTEAD OF触发器。(√) 10.在使用差异数据库备份还原数据库时,应先还原最新的完整数据库备份。(√) 四.查询设计(每题5分,计25分)某个学籍数据库有如下表结构: 学生(学号,姓名,性别,出生日期,班级)课程(课程号,课程名称,课程类别,课时)选课(学号,课程号,成绩)请完成下列查询要求。 1.查询出“软件041”班的所有男生的学号和姓名。 SELECT 学号, 姓名 FROM学生 WHERE班级 = ‘软件041’ AND性别 = ‘男’ 2.查询出所有姓张的同学的姓名和班级。SELECT * FROM课程 WHERE课程名称 LIKE ‘%语言%’ 3.查询出“C语言”课程成绩前5名的学生的学号、姓名和班级。SELECT TOP 5学生.学号, 姓名, 班级 FROM学生 JOIN 选课 ON 学生.学号 = 选课.学号 JOIN 课程 ON课程.课程号 = 选课.课程号 WHERE课程名称 = ‘C语言’ ORDER BY 成绩 DESC 4.查询出各班级学生人数。SELECT 班级, COUNT(*)AS 人数 FROM 学生 GROUP BY班级 5.查询出“计算机应用基础”课程成绩高于张三同学此门课程成绩的学生的学号和姓名。 SELECT学生.学号, 姓名 FROM 学生JOIN 选课 ON 学生.学号 = 选课.学号 JOIN 课程 ON课程.课程号 = 选课.课程号 WHERE课程名称 = ‘计算机应用基础’ AND 成绩 >(SELECT成绩 FROM 学生JOIN 选课 ON 学生.学号 = 选课.学号 JOIN 课程 ON课程.课程号 = 选课.课程号 WHERE课程名称 = ‘计算机应用基础’ AND姓名 = ‘张三’) 五.综合题(每空3分,计15分) 根据下面某教学管理数据库的表结构,完成下面的程序填空题。教师(职工号,姓名,学历,职称)课程(课程号,课程名称,课程类别)任课(职工号,课程号,周课时) 1.补填下面的存储过程的定义,使其被调用时,能根据调用程序提供的教师姓名使用输出参数返回该教师任课的课程数。CREATE PROCEDURE 按教师姓名查询任课课程数 @姓名 VARCHAR(10), @课程数 INT __ OUTPUT ___________________ AS SELECT __@课程数 = COUNT(*)___________________ FROM 教师 JOIN 任课 ON 教师.职工号 = 任课.职工号 WHERE ____姓名 = @姓名_________________ 2.完成下面的触发器的定义,当向任课表中插入记录时,触发器能判断若插入的记录使该教师的任课周课时总计超过20,则回滚插入操作。CREATE TRIGGER 添加教学任务 ON 任课 AFTER INSERT AS DECLARE @总课时 INT SELECT @总课时 = SUM(任课.周课时)FROM 任课 JOIN _ INSERTED ON任课.职工号 = INSERTED.职工号 ____________________ IF @总课时 > 20 _____ ROLLBACK TRANSACTION ________________ 参考答案 一.单项选择题(每题2分,计30分)1.C 2.A 3.A 4.C 5.C 6.D 7.D 8.C 9.A 10.C 11.B 12.C 13.C 14.A 15.D 二.填空题(每空1分,计20分)1.服务 2.SQL Server服务 SQL Server Agent服务(或填主服务、代理服务)3.系统数据库 model 4.主数据文件 次要数据文件 5.INSERT(或填INSERT INTO)UPDATE 6.主键约束 外键约束 7.UPDATE EXECUTE(或填更新、执行)8.UNION 相同 9.聚集(或聚簇 或簇)10.创建游标 打开游标 11.事务 12.差异备份 三.判断题(每题1分,计10分)1.√ 2.× 3.√ 4.× 5.√ 6.√ 7.× 8.√ 9.√ 10.√ 四.查询设计(每题5分,计25分) 1.查询出“软件041”班的所有男生的学号和姓名。SELECT 学号, 姓名 FROM学生 WHERE班级 = ‘软件041’ AND性别 = ‘男’ 2.查询出所有姓张的同学的姓名和班级。SELECT * FROM课程 WHERE课程名称 LIKE ‘%语言%’ 3.查询出“C语言”课程成绩前5名的学生的学号、姓名和班级。SELECT TOP 5学生.学号, 姓名, 班级 FROM学生 JOIN 选课 ON 学生.学号 = 选课.学号 JOIN 课程 ON课程.课程号 = 选课.课程号 WHERE课程名称 = ‘C语言’ ORDER BY 成绩 DESC 4.查询出各班级学生人数。SELECT 班级, COUNT(*)AS 人数 FROM 学生 GROUP BY班级 5.查询出“计算机应用基础”课程成绩高于张三同学此门课程成绩的学生的学号和姓名。 SELECT学生.学号, 姓名 FROM 学生JOIN 选课 ON 学生.学号 = 选课.学号 JOIN 课程 ON课程.课程号 = 选课.课程号 WHERE课程名称 = ‘计算机应用基础’ AND 成绩 >(SELECT成绩 FROM 学生JOIN 选课 ON 学生.学号 = 选课.学号 JOIN 课程 ON课程.课程号 = 选课.课程号 WHERE课程名称 = ‘计算机应用基础’ AND姓名 = ‘张三’)五.综合题(每空3分,计15分) 1.OUTPUT @课程数 = COUNT(*)姓名 = @姓名 2.INSERTED ON任课.职工号 = INSERTED.职工号 ROLLBACK TRANSACTION 先创建下面三个表: (book表) (borrow表) (reader表) 1)找出姓李的读者姓名(NAME)和所在单位(COMPANY)。 2)列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。3)查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。 4)查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。 5)查找书名以”计算机”开头的所有图书和作者(WRITER)。 6)检索同时借阅了总编号(BOOK_ID)为112266和449901两本书的借书证号(READER_ID)。 ##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。 9)* 无重复地查询2006年10月以后借书的读者借书证号(READER_ID)、姓名和单位。 ##10)* 找出借阅了 11)找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。12)查询2006年7月以后没有借书的读者借书证号、姓名及单位。#13)求”科学出版社”图书的最高单价、最低单价、平均单价。##14)* 求”信息系”当前借阅图书的读者人次数。 #15)求出各个出版社图书的最高价格、最低价格和总册数。#16)分别找出各单位当前借阅图书的读者人数及所在单位。 17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。18)分别找出借书人次数多于1人次的单位及人次数。 19)找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。 20)查询经济系是否还清所有图书。如果已经还清,显示该系所有读者的姓名、所在单位和职称。 附录:建表语句 创建图书管理库的图书、读者和借阅三个基本表的表结构: 创建BOOK:(图书表) CREATE TABLE BOOK(BOOK_ID int, SORT VARCHAR(10), BOOK_NAME VARCHAR(50), WRITER VARCHAR(10), OUTPUT VARCHAR(50), PRICE int); 创建READER:(读者表) CREATE TABLE READER(READER_ID int, COMPANY VARCHAR(10), NAME VARCHAR(10), SEX VARCHAR(2), GRADE VARCHAR(10), ADDR VARCHAR(50)); 创建BORROW:(借阅表) CREATE TABLE BORROW(READER_ID int, BOOK_ID int, BORROW_DATE datetime) 插入数据: BOOK表: insert into BOOK values(445501,'TP3/12','数据库导论','王强','科学出版社',17.90);insert into BOOK values(445502,'TP3/12','数据库导论','王强','科学出版社',17.90);insert into BOOK values(445503,'TP3/12','数据库导论','王强','科学出版社',17.90);insert into BOOK values(332211,'TP5/10','计算机基础','李伟','高等教育出版社',18.00);insert into BOOK values(112266,'TP3/12','FoxBASE','张三','电子工业出版社',23.60);insert into BOOK values(665544,'TS7/21','高等数学','刘明','高等教育出版社',20.00);insert into BOOK values(114455,'TR9/12','线性代数','孙业','北京大学出版社',20.80);insert into BOOK values(113388,'TR7/90','大学英语','胡玲','清华大学出版社',12.50);insert into BOOK values(446601,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(446602,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(446603,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(449901,'TP4/14','FoxPro大全','周虹','科学出版社',32.70);insert into BOOK values(449902,'TP4/14','FoxPro大全','周虹','科学出版社',32.70);insert into BOOK values(118801,'TP4/15','计算机网络','黄力钧','高等教育出版社',21.80);insert into BOOK values(118802,'TP4/15','计算机网络','黄力钧','高等教育出版社',21.80); READER表: insert into reader values(111,'信息系','王维利','女','教授','1号楼424');insert into reader values(112,'财会系','李 立','男','副教授','2号楼316');insert into reader values(113,'经济系','张 三','男','讲师','3号楼105');insert into reader values(114,'信息系','周华发','男','讲师','1号楼316');insert into reader values(115,'信息系','赵正义','男','工程师','1号楼224');insert into reader values(116,'信息系','李 明','男','副教授','1号楼318');insert into reader values(117,'计算机系','李小峰','男','助教','1号楼214');insert into reader values(118,'计算机系','许鹏飞','男','助工','1号楼216');insert into reader values(119,'计算机系','刘大龙','男','教授','1号楼318');insert into reader values(120,'国际贸易','李 雪','男','副教授','4号楼506');insert into reader values(121,'国际贸易','李 爽','女','讲师','4号楼510');insert into reader values(122,'国际贸易','王 纯','女','讲师','4号楼512');insert into reader values(123,'财会系','沈小霞','女','助教','2号楼202');insert into reader values(124,'财会系','朱 海','男','讲师','2号楼210');insert into reader values(125,'财会系','马英明','男','副教授','2号楼212'); BORROW表: insert into borrow values(112,445501,'3-19-2006');insert into borrow values(125,332211,'2-12-2006');insert into borrow values(111,445503,'8-21-2006');insert into borrow values(112,112266,'3-14-2006');insert into borrow values(114,665544,'10-21-2006');insert into borrow values(120,114455,'11-2-2006');insert into borrow values(120,118801,'10-18-2006');insert into borrow values(119,446603,'11-12-2006');insert into borrow values(112,449901,'10-23-2006');insert into borrow values(115,449902,'8-21-2006');insert into borrow values(118,118801,'9-10-2006'); 现有关系数据库如下: 数据库名:图书借阅管理系统 读者表(读者编号 char(6),姓名,性别,年龄,单位,身份证号,职称)图书表(图书编号char(6),图书名称,出版社,作者)借阅表(读者编号,图书编号,借阅时间)用SQL语言实现下列功能的sql语句代码。(1)创建数据表book; book表(图书编号 char(6),图书名称,出版社,作者)要求使用:主键(图书编号)、非空(图书名称),非空(作者)(2)创建数据表reader表; 学生信息表(reader编号 char(8),姓名,性别,年龄,工作单位,身份证号,职称)要求使用:主键(reader编号)、默认(职称)、非空(工作单位,姓名)、唯一(身份证号)、检查(性别),检查(年龄)(3)创建借书表borrow; borrow(ID,读者编号,图书编号,借书日期)要求使用:外键(学号,课号)(4)将下列课程信息添加到book表的代码 图书编号 名称 100101 数据库原理 100102 数据结构 修改 课号为100102的图书名称:数据结构与算法 删除 课号为100101的图书信息(5)创建视图读者借书信息的代码; 读者借书信息视图(读者编号,姓名,图书编号,图书名称,借书日期)(6)从读者表book中查询姓李的女读者的情况:姓名、性别、工作单位。(7)查询统计出借书量超过5本的单位平均年龄 (8)创建带参数的存储过程[借某图书的读者高低均年龄]、执行该过程的代码 存储过程功能:查询借阅某图书的的读者最高年龄、最低年龄、平均年龄; 执行该过程,查询所有借阅’数据库基础’这本书的读者的最高年龄、最低年龄、平均年龄; 1)找出姓李的读者姓名(NAME)和所在单位(COMPANY)。 SELECT NAME,COMPANY FROM READER WHERE NAME LIKE '李%' 2)列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。 SELECT BOOK_NAME, OUTPUT FROM BOOK 3)查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。 SELECT BOOK_NAME,PRICE FROM BOOK WHERE OUTPUT='高等教育出版社' ORDER BY PRICE DESC 4)查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。 SELECT SORT,OUTPUT,PRICE FROM BOOK WHERE PRICE BETWEEN 10 AND 20 ORDER BY OUTPUT ,PRICE 5)查找书名以”计算机”开头的所有图书和作者(WRITER)。 SELECT BOOK_NAME,WRITER FROM BOOK WHERE BOOK_NAME LIKE '计算机%' 6)检索同时借阅了总编号(BOOK_ID)为112266和449901两本书的借书证号(READER_ID)。 SELECT A.READER_ID FROM BORROW A,BORROW B WHERE A.BOOK_ID='112266' AND B.BOOK_ID='449901' AND A.READER_ID=B.READER_ID ##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。 SELECT DISTINCT NAME,COMPANY FROM READER,BORROW WHERE BORROW.READER_ID=READER.READER_ID 8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。 SELECT BOOK.BOOK_NAME,BORROW.BORROW_DATE FROM BOOK,BORROW,READER WHERE BOOK.BOOK_ID=BORROW.BOOK_ID AND READER.READER_ID=BORROW.READER_ID AND READER.NAME LIKE '李%' 9)* 无重复地查询2006年10月以后借书的读者借书证号(READER_ID)、姓名和单位。 SELECT READER_ID,NAME,COMPANY FROM READER WHERE READER_ID IN(SELECT READER_ID FROM BORROW WHERE BORROW_DATE >='2006-10-1') ##10)* 找出借阅了 SELECT DISTINCT READER_ID FROM BORROW,BOOK WHERE BORROW.BOOK_ID=BOOK.BOOK_ID AND BOOK.BOOK_NAME LIKE 'FoxPro大全' 11)找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。 SELECT NAME,COMPANY,BORROW_DATE FROM READER,BORROW WHERE BORROW.READER_ID=READER.READER_ID AND BORROW_DATE IN(SELECT BORROW_DATE FROM BORROW,READER WHERE BORROW.READER_ID=READER.READER_ID AND NAME='赵正义') 12)查询2006年7月以后没有借书的读者借书证号、姓名及单位。 SELECT READER_ID,NAME,COMPANY FROM READER WHERE READER_ID NOT IN(SELECT READER_ID FROM BORROW WHERE BORROW_DATE>='2006-7-1') #13)求”科学出版社”图书的最高单价、最低单价、平均单价。 SELECT MAX(PRICE)最高单价,MIN(PRICE)最低单价,AVG(PRICE)平均单价 FROM BOOK WHERE OUTPUT='科学出版社' ##14)* 求”信息系”当前借阅图书的读者人次数。 SELECT COUNT(DISTINCT READER_ID)当前借阅图书的读者人次数FROM BORROW WHERE READER_ID IN(SELECT READER_ID FROM READER WHERE COMPANY IN('信息系')) #15)求出各个出版社图书的最高价格、最低价格和总册数。 SELECT MAX(PRICE)最高价格,MIN(PRICE)最低价格,COUNT(PRICE)总册数FROM BOOK GROUP BY OUTPUT #16)分别找出各单位当前借阅图书的读者人数及所在单位。 SELECT COUNT(COMPANY)读者人数,COMPANY FROM BORROW,READER WHERE BORROW.READER_ID=READER.READER_ID GROUP BY COMPANY 17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。 SELECT NAME 读者姓名,COMPANY 单位FROM READER WHERE READER_ID IN(SELECT READER_ID FROM BORROW GROUP BY READER_ID HAVING COUNT(*)>=2) 18)分别找出借书人次数多于1人次的单位及人次数。 SELECT COMPANY,COUNT(*)人次数 FROM READER,BORROW WHERE BORROW.READER_ID=READER.READER_ID GROUP BY COMPANY HAVING COUNT(*)>1 19)找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。 SELECT OUTPUT,COUNT(*)书籍的总册数,SUM(PRICE)书的价值总额 FROM BOOK GROUP BY OUTPUT 20)查询经济系是否还清所有图书。如果已经还清,显示该系所有读者的姓名、所在单位和职称。 SELECT NAME,COMPANY FROM READER WHERE NOT EXISTS(SELECT* FROM READER,BORROW WHERE READER.READER_ID=BORROW.READER_ID AND COMPANY='经济系')第四篇:SQL Server数据库试题七及答案
第五篇:数据库sql课后练习题及答案解析