SQL Server 练习题(初学)

数据库 同时被 2 个专栏收录
8 篇文章 0 订阅
8 篇文章 0 订阅

一、前言

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

二、准备

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

三、练习

SQL Server 实例二(更进一步,包括多表连接查询,嵌套查询(子查询),集合查询以及数据更新的简单例子)

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)

建好的表如下:

  • 图书表
  • 借阅表
  • 读者表

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

在这里插入图片描述

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

在这里插入图片描述

  • 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 出版社 = '科学出版社'

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

SQL是高级的非过程化编程语言,是沟通数据库服务器和客户端的重要工具,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以,具有完全不同底层结构的不同数据库系统,可以使用相同的SQL语言作为数据输入与管理的SQL接口。 它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使它具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。    结构化查询语言(Structured Query Language)最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、DB2、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC上常用的数据库开发系统,都支持SQL语言作为查询语言。    美国国家标准局(ANSI)与国际标准化组织(ISO)已经制定了SQL标准。ANSI是一个美国工业和商业集团组织,负责开发美国的商务和通讯标准。ANSI同时也是ISO和International Electrotechnical Commission(IEC)的成员之一。ANSI 发布与国际标准组织相应的美国标准。1992年,ISO和IEC发布了SQL国际标准,称为SQL-92。ANSI随之发布的相应标准是ANSI SQL-92。ANSI SQL-92有时被称为ANSI SQL。尽管不同的关系数据库使用的SQL版本有一些差异,但大多数都遵循 ANSI SQL 标准。SQL Server使用ANSI SQL-92的扩展集,称为T-SQL,其遵循ANSI制定的 SQL-92标准。    SQL语言包含4个部分:    数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。    数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。    数据查询语言(DQL),例如:SELECT语句。    数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。    SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。
设计一个图书管理系统,图书管理系统是图书馆的重要组成部分,设计和开发一个中小型高校图书馆管理系统,阐述了高校图书管理软件中所应具有的功能、设计、实现,主要是针对图书信息、读者信息、读者的借阅信息进行管理。包括对新书的入库信息进行详细记录,包括书名、书号、作者、单价、出版社数量等,对各种图书的借阅情况进行详细的记录,对图书信息进行各种查询,对新读者信息进行详细的记录以及对读者信息进行详细的查询,对读者借阅情况进行查询,以及对图书的挂失、借阅证的挂失等。 2. 设计意义 通过本图书管理系统软件,能帮助图书库存管理人员利用计算机,快速方便的对图书进行管理、读者信息记录、借阅信息记录、查找所需操作,主要是针对图书信息、读者信息、读者的借阅信息进行管理。图书管理系统主要是为图书借阅人提供方便快捷的服务,以及为图书管理人员提供可靠的信息与帮助,其具体的意义如下: 1. 提高图书管理的效率,节约相关的管理成本。 2. 为学校提供系统,规范的图书管理手段。 3. 增强图书管理的安全性。 4. 满足借阅人和图书管理人员以及相关学校领导的不同层次和不同方面的需要。 3. 主要功能 1. 对图书馆的各种图书的详细信息进行录入; 2. 记录新图书的入库等信息,对图书的借阅信息进行各种查询,以及对读者的详细信息进行查询。
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值