数据库原理实验2:使用Select语句查询数据(一)——简单查询

1.找出机械工业出版社图书的书号,书名,作者,价格信息;
select book_number,book_name,author,price
from book
where publisher = '机械工业出版社';
运行结果:


2.查询借了书的读者编号
select distinct reader_number
from borrow_book;
运行结果:


3.查询所有图书信息,并要求对查询结果按总藏书量的降序排列,如果总藏书量相同则按价格的升序排列;
select *
from book
order by book_total desc,price asc;
运行结果:



4.查询2002年1月1日以前(不含此日期)的借阅信息;
select *
from borrow_book
where borrow_time<'2002.01.01';
运行结果:


5.找出高等教育出版社和电子工业出版社的图书信息;
(select * from book where publisher = '电子工业出版社')
union
(select * from book where publisher = '高等教育出版社');

 SELECT *

FROM  book

WHERE publisher IN('高等教育出版社','电子工业出版社');

SELECT *

FROM  book

WHERE publisher ='高等教育出版社' OR publisher ='电子工业出版社';

运行结果:


6.查询机械工业出版社价格在15-50之间的图书的书名,价格;
select book_name,price
from book
where publisher = '机械工业出版社' AND price between 15 and 50;
运行结果:


7.查询书名中含有“数据”字样的图书信息;
select *
from book
where book_name like '%数据%';
运行结果:


8.计算3本1004号图书的总价。
select book_number,price*3 as total_price
from book
where book_number = '1004';
运行结果:


9.查询姓“张”,且姓名只有两个字的读者信息。
select *
from reader
where name like '张_';
运行结果:

 
10.查询总藏书量在8本以上(含8本)的计算机类图书信息。
Select *
From book
Where book_total>=8 and book.category='计算机'

运行结果:

books_db.sql:
-- 创建数据库
CREATE DATABASE IF NOT EXISTS books_db DEFAULT CHARACTER SET utf8;
use books_db ;

-- 删除表
drop table if exists borrow_book;
drop table if exists return_book;
drop table if exists book;
drop table if exists reader;

-- 创建表
CREATE TABLE book(
book_number     char(10) PRIMARY KEY,
category     varchar(12),
book_name     varchar(30) NOT NULL,
publisher    char(30) NOT NULL,
author         char(10),
price         numeric(6,2),
book_total     int NOT NULL,
inventory      int  NOT NULL) ;

CREATE TABLE  reader(
reader_number     char(10    ) PRIMARY KEY,
name             varchar(8)     NOT NULL,
department         char(20),
gender           char(2) NOT NULL,
telephone         char(15)) ;

CREATE TABLE  borrow_book(
reader_number    char(10) NOT NULL,
book_number        char(10) NOT NULL,
borrow_time        datetime NOT NULL,
PRIMARY KEY(book_number,reader_number),
FOREIGN KEY(book_number) REFERENCES  book(book_number),
FOREIGN KEY(reader_number) REFERENCES  reader(reader_number)
);

CREATE TABLE  return_book(
reader_number    char(10) NOT NULL,
book_number        char(10) NOT NULL,
return_time        datetime NOT NULL,
PRIMARY KEY(book_number,reader_number),
FOREIGN KEY(book_number) REFERENCES  book(book_number),
FOREIGN KEY(reader_number) REFERENCES  reader(reader_number)
);

-- 插入数据
INSERT INTO book
VALUES('1001','计算机','数据结构','机械工业出版社','王民',80,5,5);
INSERT INTO book
VALUES('1002','计算机','计算机应用','机械工业出版社','张建平',20,8    ,7);
INSERT INTO book
VALUES('1003','计算机','数据库技术','电子工业出版社','王敏',15,10,8);
INSERT INTO book
VALUES('1004','计算机','C语言','电子工业出版社','谭浩强',25,4,2);
INSERT INTO book
VALUES('1005','英语','应用文写作','中国人民大学出版社','张锦芯',25,10,8);
INSERT INTO book
VALUES('1006','管理','管理学','高等教育出版社','Robison',15,7,7);
INSERT INTO book
VALUES('1007','管理','工业管理','机械工业出版社','Fayol',70,9,8);
INSERT INTO book
VALUES('1008','数学','线性代数','机械工业出版社','李平',50,6,4);
INSERT INTO book
VALUES('1009','管理','公司的概念','机械工业出版社','Durark',14,8,6);
INSERT INTO book
VALUES('1010','数学','统计学','机械工业出版社','徐新国',15,11,5);

INSERT INTO reader
VALUES('1001','赵菁菁','数学院','男','81234567');
INSERT INTO reader
VALUES('1002','李勇','经济学院','男','52234564');
INSERT INTO reader
VALUES('1003','张力','管理学院','女','63234569');
INSERT INTO reader
VALUES('1004','张衡','文学院','男','74234568');
INSERT INTO reader
VALUES('1005','张向东','历史文化学院','女','35234562');
INSERT INTO reader
VALUES('1006','张向丽','物理学院','男','66234566');
INSERT INTO reader
VALUES('1007','王芳','生命科学院','女','97234563');
INSERT INTO reader
VALUES('1008','王民生','化学院','男','48234565');
INSERT INTO reader
VALUES('1009','王小民','信息学院','女','39234566');
INSERT INTO reader
VALUES('1010','李晨','计算机学院','女','50234565');

INSERT INTO borrow_book
VALUES('1003','1001','2000-01-01');
INSERT INTO borrow_book
VALUES('1002','1001','2001-01-01');
INSERT INTO borrow_book
VALUES('1005','1002','2002-03-05');
INSERT INTO borrow_book
VALUES('1008','1003','1998-06-18');
INSERT INTO borrow_book
VALUES('1003','1004','1997-12-08');
INSERT INTO borrow_book
VALUES('1010','1005','2001-05-04');
INSERT INTO borrow_book
VALUES('1001','1006','2005-07-25');
INSERT INTO borrow_book
VALUES('1006','1006','2009-07-25');
INSERT INTO borrow_book
VALUES('1010','1007','1997-11-03');
INSERT INTO borrow_book
VALUES('1009','1008','2004-02-01');
INSERT INTO borrow_book
VALUES('1008','1008','2004-06-01');
INSERT INTO borrow_book
VALUES('1004','1009','1996-09-01');
INSERT INTO borrow_book
VALUES('1008','1010','2000-06-04');

附:各表数据

       (1)图书表:

书号

类别

书名

出版社

作者

价格

总藏书量

库存

1001

计算机

数据结构

机械工业出版社

王民

80

5

5

1002

计算机

计算机应用

机械工业出版社

张建平

20

8

8

1003

计算机

数据库技术

电子工业出版社

王敏

15

10

10

1004

计算机

C语言

电子工业出版社

谭浩强

25

4

4

1005

英语

应用文写作

中国人民大学出版社

张锦芯

25

10

10

1006

管理

管理学

高等教育出版社

Robison

15

7

7

1007

管理

工业管理

机械工业出版社

Fayol

70

9

9

1008

数学

线性代数

机械工业出版社

李平

50

6

6

1009

管理

公司的概念

机械工业出版社

Durark

14

8

8

1010

数学

统计学

机械工业出版社

徐新国

15

11

11

(2)读者表:

读者编号

姓名

单位

性别

电话

1001

赵菁菁

数学院

81234567

1002

李勇

经济学院

52234564

1003

张力

管理学院

63234569

1004

张衡

文学院

74234568

1005

张向东

历史文化学院

35234562

1006

张向丽

物理学院

66234566

1007

王芳

生命科学院

97234563

1008

王民生

化学院

48234565

1009

王小民

信息学院

39234566

1010

李晨

计算机学院

50234565

(3)借书表:

读者编号

书号

借书时间

1003

1001

2000-1-1

1002

1001

2001-1-1

1005

1002

2002-3-5

1008

1003

1998-6-18

1003

1004

1997-12-8

1010

1005

2001-5-4

1001

1006

2005-7-25

1006

1006

2009-7-25

1010

1007

1997-11-3

1009

1008

2004-2-1

1008

1008

2004-6-1

1004

1009

1996-9-1

1008

1010

2000-6-4

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图书管理系统其实是一个很复杂的信息管理系统,它包括很多分类、检索等方面的内容。因为其复杂性,建立这样一个系统更加能体现出运用SQL Server数据库进行数据处理的优越性。本课题将实现一个简化的图书管理系统的功能。 1.系统功能设计 (1)信息录入功能 1)添加新图书信息。当图书馆收藏新图书时,系统向用户提供新图书信息录入功能,由于同一种可能会有多本,因此,新图书的信息有两类:某一个ISBN类别的图书信息,包括:ISBN图书类别、书名作者出版社、出版日期、价格、馆藏数量、可借数量、图书简介;另一个具体到每一本的信息,包括:ISBN图书、是否可借。每一个ISBN和同一个ISBN的多本之间是一对多的关系,每一本图书是唯一的。 2)添加读者信息。用于登记新读者信息。包括:借、姓名、性别、身份证、职称、可借数量、已借数量、工作部门、联系电话等。 3)借阅信息。用于登记读者的借阅情况信息。包括:借、借阅、借出日期、借阅期限、归还日期等信息。归还日期为空值表示该图书未归还。 (2)数据修改和删除功能 1)修改和删除图书信息。图书被借出时,系统需要更新图书信息的可借数量,当可借数量为0时,表示该图书都已被借出。当输入的图书信息有错误或需要进行必要更新时,可以修改图书信息;当一种图书所有馆藏图书都已损毁或遗失并且不能重新买到时,该图书信息需要删除。 2)修改和删除读者信息。当读者的自身信息发生变动,如部门间调动或调离本单位,或违反图书馆规定需要限制其可借阅图书数量时,需要修改读者信息。 3)还处理。读者归还图书时,更新图书借阅信息表中的归还日期,读者信息表中的已借数量及ISBN类别信息表中该图书的可借数量。 (3)查询和统计功能 1)图书查询功能。根据图书的各种已知条件来查询图书的详细信息,如书名作者出版社、ISBN等支持模糊查询。 2)读者信息查询。输入读者的借、姓名、工作部门等信息,查询读者的基本信息。对查询到的每一个读者,能够显示其未归还的图书书名。 3)查询所有到期未归还的图书信息。要求结果显示图书书名、读者姓名、借码、借出日期等信息。 4)统计指定读者一段时间内的某类图书或所有类别图书借阅次数及借阅总次数。 2.数据表的创建 根据功能要求的说明创建下列数据表: (1)图书ISBN类别信息表 图书ISBN类别信息表包括以下字段: ISBN图书类别、书名作者出版社、出版日期、价格、馆藏数量、可借数量、图书简介。 (2)图书信息表 图书信息表包括以下字段: ISBN图书、是否可借。 (3)读者信息表 读者信息表包括以下字段: 借、姓名、性别、出生年月、身份证、职称、可借数量、已借数量、工作部门、家庭地址、联系电话。 (4)借阅信息表(图书-读者关系) 借阅信息表包括以下字段: 借、借阅、借出日期、借阅期限、归还日期。 3.数据库完整性设计 设计者应认真分析和思考各个表之间的关系,合理设计和实施数据完整性原则。 1) 给每个表实施主键及外键约束。 2) 设定缺省约束。如性别。 3) 设置非空约束如图书信息表中的书名。 4) 实施CHECK约束。如ISBN类别表中的可借数量小于馆藏数量。 5) 实施规则。如身份证码必须为15为或18位。 4.SQL Server数据库对象设计 1)设计一个存储过程,以图书为输入参数,返回借阅该图书但未归还的读者姓名和借。 2)读者资料查询:设计一个有多个输入参数的存储过程,返回读者的详细信息。设计另一存储过程并以读者借为输入参数,返回该读者未归还的图书名称和图书。 3)到期图书查询:设计一个视图,返回所有逾期未归还的图书的编书名、读者姓名等信息。 4)统计图书借阅次数:设计一个以两个日期作为输入参数的存储过程,计算这一段时间内各类别图书被借阅的次数,返回图书类别、借阅次数的信息。 5)加快数据检索速度,用图书图书信息表建立索引。 6)为读者信息表创建一个删除触发器,当一个读者调出本单位时,将此读者的资料从读者信息表中删除。注意实施业务规则:有借阅的读者不得从读者信息表中删除。 7)借阅处理:为借阅信息表设计INSERT触发器,在读者借阅时更改ISBN类别信息表,且可借数量减1,图书信息表是否可借列的值变为“不可借”,读者信息表中该类读者已借阅数加1。 8)还处理:为借阅信息表设计UPDATE触发器,在该表的归还日期列被更改后,将图书信息表的是否可借列的值变为“可借”,读者信息表中已借数量减1及ISBN类别信息表中可借数量加1。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值