欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQL Server 练习题(初学)

程序员文章站 2022-06-24 12:31:23
@TOC一级目录二级目录三级目录use 练习goinsert into 图书(条形码,书名,作者,出版社,出版日期,售价) values ('TP303.5','大学计算机基础','李凯','科学出版社',2018-10-7,50)insert into 图书(条形码,书名,作者,出版社,出版日期,售价) values ('TP304.1','数据库技术及应用','郭栋阳','高教出版社',2017-6-16,42.6)insert into 图书(条形码,书名,作者,出版社,出版日期,售价...

一、前言

新开了一门《数据库原理及应用》,布置了一些基础题目,发出来互相学习,不排除所学有限,仍有最优解的情况。

二、准备

SQL Server 现有的版本应该是都可以用的
下载相关可以参考 SQL Server2019的下载与安装

三、练习

1.创建练习题目的数据库(新建查询)

下面关于日期的数据类型由 datetime 改为 date 更合适一些。

create database 练习
go
use 练习
go
create table 读者
(
	账号 char(4) not null primary key,
	姓名 varchar(6) not null,
	性别 char(2) check (性别 in ('男','女')), 
	等级 varchar(8) check (等级 in ('黄金','青铜','白银','最强王者')),
	出生日期 datetime not null,
	余额 money not null
)
go
insert into 读者(账号,姓名,性别,等级,出生日期,余额) values ('D001','陈诚瑞','男','黄金',1988-7-11,200)
insert into 读者(账号,姓名,性别,等级,出生日期,余额) values ('D002','郭彩霞','女','白银',1987-1-4,500)
insert into 读者(账号,姓名,性别,等级,出生日期,余额) values ('D003','王新英','女','青铜',1978-9-21,20)
insert into 读者(账号,姓名,性别,等级,出生日期,余额) values ('D004','范鼎毅','男','最强王者',1995-4-1,1000)
insert into 读者(账号,姓名,性别,等级,出生日期,余额) values ('D005','钟鸣','女','青铜',2000-4-21,100)
insert into 读者(账号,姓名,性别,等级,出生日期,余额) values ('D006','王协瑞','男','白银',1990-7-14,800)
go
create table 图书
(
	条形码 varchar(7) not null primary key,
	书名 varchar(20) not null,
	作者 varchar(6) not null,
	出版社 varchar(20),
	出版日期 datetime,
	售价 money not null
)
go
insert into 图书(条形码,书名,作者,出版社,出版日期,售价) values ('TP303.5','大学计算机基础','李凯','科学出版社',2018-10-7,50)
insert into 图书(条形码,书名,作者,出版社,出版日期,售价) values ('TP304.1','数据库技术及应用','郭栋阳','高教出版社',2017-6-16,42.6)
insert into 图书(条形码,书名,作者,出版社,出版日期,售价) values ('TP213.5','七彩课堂','朱五书','河北教育出版社',2019-11-8,31.8)
insert into 图书(条形码,书名,作者,出版社,出版日期,售价) values ('TP204.2','钩针编织基础','寿玉梅','科学出版社',2015-9-18,56)
insert into 图书(条形码,书名,作者,出版社,出版日期,售价) values ('TP305.5','C语言程序设计','谭森','高教出版社',2014-1-12,48.5)
insert into 图书(条形码,书名,作者,出版社,出版日期,售价) values ('TP305.6','VB程序设计','钟鸣','人民邮电出版社',2014-7-11,44.6)
go
create table 借阅
(
	账号 char(4) not null,
	条形码 varchar(7) not null,
	借书日期 datetime not null,
	还书日期 datetime not null
	primary key(账号,条形码),
	foreign key(账号)references 读者(账号),
	foreign key(条形码)references 图书(条形码),
)
go
insert into 借阅(账号,条形码,借书日期,还书日期) values ('D001','TP303.5',2018-8-2,2018-10-7)
insert into 借阅(账号,条形码,借书日期,还书日期) values ('D001','TP304.1',2017-3-18,2017-6-16)
insert into 借阅(账号,条形码,借书日期,还书日期) values ('D005','TP303.5',2019-10-3,2019-11-8)
insert into 借阅(账号,条形码,借书日期,还书日期) values ('D002','TP204.2',2015-6-6,2015-9-18)
insert into 借阅(账号,条形码,借书日期,还书日期) values ('D002','TP305.5',2013-12-4,2014-1-12)
insert into 借阅(账号,条形码,借书日期,还书日期) values ('D003','TP305.6',2014-5-1,2014-7-11)
insert into 借阅(账号,条形码,借书日期,还书日期) values ('D003','TP304.1',2020-1-2,2020-3-11)

建好的表如下:

  • 图书表
    SQL Server 练习题(初学)
  • 借阅表
    SQL Server 练习题(初学)
  • 读者表
    SQL Server 练习题(初学)

2.练习题(新建查询时注意是在 ‘练习’ 数据库中)

SQL Server 练习题(初学)

  • 1.查询图书表中售价介于50元到70元之间的图书的全部信息
SELECT *
FROM 图书
WHERE 售价 BETWEEN 50 AND 70

SQL Server 练习题(初学)

  • 2.查询图书表中全部图书的最高售价、最低售价和平均售价。
SELECT MAX(售价) 最高售价,MIN(售价) 最低售价,AVG(售价) 平均售价
FROM 图书

SQL Server 练习题(初学)

  • 3.查询图书的条形码,书名,出版社和出版日期,要求结果按出版社升序排列,出版社相同的数据按出版日期降序排列
SELECT 条形码,书名,出版社,出版日期
FROM 图书
ORDER BY 出版社,出版日期 DESC

SQL Server 练习题(初学)

  • 4.在图书表中插入一条记录,内容是:条形码“TP211.3”,书名“狼图腾”,作者“姜戎”,售价 44.5元
INSERT INTO 图书(条形码,书名,作者,售价)
VALUES ('TP211.3','狼图腾','姜戎',44.5)

SQL Server 练习题(初学)

  • 5.通过图书表,读者表和借阅表,查询读者的借阅情况,要求结果中包含以下字段:账号,姓名,条形码,书名,借书日期和还书日期。
SELECT 借阅.账号,姓名,图书.条形码,书名,借书日期,还书日期
FROM 图书 INNER JOIN(借阅 INNER JOIN 读者 ON 借阅.账号 = 读者.账号)
ON 图书.条形码 = 借阅.条形码

SQL Server 练习题(初学)

  • 6.在读者表中查询所有等级为“白银”的读者的余额之和。
SELECT SUM(余额) 白银读者余额之和
FROM 读者
WHERE 等级 = '白银'

SQL Server 练习题(初学)

  • 7.通过读者和借阅表,查询读者信息,包括以下字段:账号,姓名,性别,条形码,借书日期和还书日期
select 读者.账号,姓名,性别,条形码,借书日期,还书日期
from 读者 inner join 借阅
on 读者.账号 = 借阅.账号

SQL Server 练习题(初学)

  • 8.查询图书表中有哪些出版社,要求结果没有重复值
SELECT DISTINCT 出版社
FROM 图书

SQL Server 练习题(初学)

  • 9.将图书表中条形码为TP204.2的图书信息删除
delete 
from 图书
where 条形码 = 'TP204.2'
  • 10.在读者表中,查询男女性读者各多少人。
select 性别,count(性别) 人数
from 读者
group by 性别

SQL Server 练习题(初学)

  • 11.在读者表中查询不同等级各自的人数,结果按人数降序排列。
select 等级,count(*)as 人数
from 读者
group by 等级
order by 人数 desc

SQL Server 练习题(初学)

  • 12.查询图书表中条形码左边开始三个字符是“TP3”的图书的全部信息
select *
from 图书
where 条形码 like 'TP3%'

SQL Server 练习题(初学)

  • 13.将图书表中科学出版社出版的图书价格上涨5%。
UPDATE 图书
SET 售价 = 售价 * 1.05
WHERE 出版社 = '科学出版社'

SQL Server 练习题(初学)

  • 14.查询图书表中科学出版社出版的价格在50元以上的图书的信息,要求结果中包括书名,作者,出版社和售价4列。(不包括50元)
SELECT 书名,作者,出版社,售价
FROM 图书
WHERE 图书.售价 > 50 and 出版社 = '科学出版社'

SQL Server 练习题(初学)

  • 15.使用IN子句查询所有‘科学出版社’和‘高教出版社’的书名,作者,售价。
SELECT 书名,作者,售价
FROM 图书
WHERE 出版社 in ( '科学出版社','高教出版社')

SQL Server 练习题(初学)

  • 16.在读者表中查询余额最高的读者的全部信息。
    提示:请使用嵌套查询作答,不能用top
select * 
from 读者
where 余额 >=all(select max(余额)from 读者)

SQL Server 练习题(初学)

  • 17.根据读者表和借阅表,查询没有借书记录的读者的账号和姓名。提示:使用“带有NOT IN的嵌套查询”
select 账号,姓名 
from 读者 
where 账号 not in (select 账号 from 借阅 where 借阅.账号=读者.账号)

SQL Server 练习题(初学)

  • 18.通过图书表和借阅表,查询哪本书没有被借阅过,显示它的条形码,书名和作者信息 提示:使用“带IN的嵌套查询”
select 条形码,书名,作者
from 图书
where 条形码 not in (select 条形码 from 借阅 where 借阅.条形码=图书.条形码)

SQL Server 练习题(初学)

本文地址:https://blog.csdn.net/m0_51086313/article/details/110582782