SQL Server 练习题(初学)
一、前言
新学了一门《数据库原理及应用》,布置了一些基础题目,互相学习,不排除所学有限,仍有最优解的情况。
二、准备
SQL Server 现有的版本应该是都可以用的 下载相关可以参考
三、练习
(更进一步,包括多表连接查询,嵌套查询(子查询),集合查询以及数据更新的简单例子)
1.创建练习题目的数据库(新建查询)
下面关于日期的数据类型由 datetime 改为 date 更合适一些,其他的影响不太大,仅供参考。
建好的表如下:
-
图书表 借阅表 读者表
2.练习题
1.新建查询时注意是在 ‘练习’ 数据库中,可以直接在框里选中需要的数据库,也可以在最前面插一条 use 练习 go 2.我们在敲完之后可以自我检验看语法是否通过 3.在执行语句后,如果不确定答案,在符合现实的情况下,可以看看基表,自己比对比对,人工找一下符合条件的结果。如果要查看表的内容,选中要看的表,右键编辑前200行即可。 4.可能数据库跟不上你的速度,刷新即可,有时候已经打开了一个表,当更新了数据后,刷新后也没变化,叉掉打开的表,重新打开这张表就好。 5.对于一些数据更新的题目,建议单独搞一个表练手,对新表进行操作。
-
1.查询图书表中售价介于50元到70元之间的图书的全部信息
SELECT * FROM 图书 WHERE 售价 BETWEEN 50 AND 70
-
2.查询图书表中全部图书的最高售价、最低售价和平均售价。
SELECT MAX(售价) 最高售价,MIN(售价) 最低售价,AVG(售价) 平均售价 FROM 图书
-
3.查询图书的条形码,书名,出版社和出版日期,要求结果按出版社升序排列,出版社相同的数据按出版日期降序排列
SELECT 条形码,书名,出版社,出版日期 FROM 图书 ORDER BY 出版社,出版日期 DESC
-
5.通过图书表,读者表和借阅表,查询读者的借阅情况,要求结果中包含以下字段:账号,姓名,条形码,书名,借书日期和还书日期。
SELECT 借阅.账号,姓名,图书.条形码,书名,借书日期,还书日期 FROM 图书 INNER JOIN(借阅 INNER JOIN 读者 ON 借阅.账号 = 读者.账号) ON 图书.条形码 = 借阅.条形码
-
6.在读者表中查询所有等级为“白银”的读者的余额之和。
SELECT SUM(余额) 白银读者余额之和 FROM 读者 WHERE 等级 = 白银
-
7.通过读者和借阅表,查询读者信息,包括以下字段:账号,姓名,性别,条形码,借书日期和还书日期
select 读者.账号,姓名,性别,条形码,借书日期,还书日期 from 读者 inner join 借阅 on 读者.账号 = 借阅.账号
-
8.查询图书表中有哪些出版社,要求结果没有重复值
SELECT DISTINCT 出版社 FROM 图书
-
9.将图书表中条形码为TP204.2的图书信息删除
delete from 图书 where 条形码 = TP204.2
-
10.在读者表中,查询男女性读者各多少人。
select 性别,count(性别) 人数 from 读者 group by 性别
-
11.在读者表中查询不同等级各自的人数,结果按人数降序排列。(降序的关键字是desc)
select 等级,count(*)as 人数 from 读者 group by 等级 order by 人数 desc
-
12.查询图书表中条形码左边开始三个字符是“TP3”的图书的全部信息
select * from 图书 where 条形码 like TP3%
-
13.将图书表中科学出版社出版的图书价格上涨5%。
UPDATE 图书 SET 售价 = 售价 * 1.05 WHERE 出版社 = 科学出版社
-
16.在读者表中查询余额最高的读者的全部信息。 提示:请使用嵌套查询作答,不能用top
select * from 读者 where 余额 >=all(select max(余额)from 读者)
-
17.根据读者表和借阅表,查询没有借书记录的读者的账号和姓名。提示:使用“带有NOT IN的嵌套查询”
select 账号,姓名 from 读者 where 账号 not in (select 账号 from 借阅 where 借阅.账号=读者.账号)