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 借阅.账号=读者.账号)
经验分享 程序员 微信小程序 职场和发展