目录
前言
在数字化时代,数据库应用系统的构建与运用显得尤为重要。今天,我将为大家介绍一个简单的基于MySQL的图书发行数据库应用系统。该系统旨在通过高效的数据管理,为图书发行行业提供强大的数据支持,实现信息的快速查询、统计与分析,从而提升业务效率和用户体验。
正文
题目
构建图书发行数据库应用系统,处理书店(S)向图书馆(L)发行(LBS)图书(B),S﹑L﹑LBS﹑B的数据见附表。
实验目的
要求学生熟练掌握和使用mysql创建数据库﹑基本表﹑视图﹑索引和修改表结构,及向数据库输入数据的操作;学会创建和使用表的主码、外码和约束。
实验要求
本实验针对上述两个题目分别完成以下相应任务:
1﹑创建相应的数据库和查看数据库属性;
2﹑创建基本表﹑确定表的主码和相应的约束,为主码建索引;
3﹑创建﹑查看视图;
4﹑数据库输入数据。
实验内容及步骤
创建相应的数据库和查看数据库属性
CREATE DATABASE BookDistribution;
USE BookDistribution;
show databases;
结果如下
创建基本表﹑确定表的主码和相应的约束,为主码建索引
一共只有四个表,分别为图书馆表L,图书表B,书店表S以及图书发行表LBS
创建图书馆表如下:
CREATE TABLE L (
LNO varchar(5) PRIMARY KEY COMMENT '图书馆编号',
LName VARCHAR(100) NOT NULL COMMENT '图书馆名',
CITY VARCHAR(255) COMMENT '城市',
TEL varchar(10)
)COMMENT '图书馆';
创建图书表:
-- 图书表
CREATE TABLE B (
BNO varchar(5) PRIMARY KEY COMMENT '图书编号' ,
BNAME VARCHAR(100) NOT NULL COMMENT '图书名',
PRICE float COMMENT '价格'
)COMMENT '图书';
创建书店表:
-- 图书表
CREATE TABLE B (
BNO varchar(5) PRIMARY KEY COMMENT '图书编号' ,
BNAME VARCHAR(100) NOT NULL COMMENT '图书名',
PRICE int COMMENT '价格'
)COMMENT '图书';
-- 书店表
CREATE TABLE S (
SNO varchar(5) PRIMARY KEY COMMENT '书店编号',
SNAME VARCHAR(100) NOT NULL COMMENT '书店名',
Address VARCHAR(255) COMMENT '地址'
)COMMENT '书店';
创建图书发行表:
-- 创建图书发行表
CREATE TABLE LBS (
LNO varchar(5) COMMENT '图书馆编号',
BNO varchar(5) COMMENT '图书编号',
SNO varchar(5) COMMENT '书店编号',
QTY int
)COMMENT '图书发行';
在SQL中,当你为表定义一个主码(Primary Key)时,数据库系统会自动为这个主码字段创建一个唯一索引(Unique Index),以确保主码字段的值在整个表中是唯一的,并且提供快速的查找能力。因此,从技术上讲,当你为表定义主码时,你其实已经为该字段创建了一个索引。
所以这里不再为主码插入引索。
sql插入引索方法:
单列引索:CREATE INDEX idx_username ON users(username);
多列引索:CREATE INDEX idx_fullname ON users(first_name, last_name);
唯一引索:CREATE UNIQUE INDEX idx_unique_email ON users(email);
创建﹑查看视图
创建视图以及查询代码如下
-- 创建视图
CREATE VIEW LibraryWithBooks AS
SELECT L.LNO, S.SNO, B.BNO
FROM LBS
JOIN L ON LBS.LNO = L.LNO
JOIN B ON LBS.BNO = B.BNO
JOIN S ON LBS.SNO = S.SNO;
-- 查看视图结构
DESCRIBE LibraryWithBooks;
-- 查询视图数据
SELECT * FROM LibraryWithBooks;
数据库输入数据
只需要一次输入各个表数据即可,这里我们全部直接给出
-- 插入数据
INSERT INTO s (SNO, SNAME,Address) VALUES
('S1', '北京新华书店', '北京'),
('S2', '上海新华书店', '上海'),
('S3', '上海外文书店', '上海'),
('S4', '湖北新华书店', '武汉'),
('S5', '江苏新华书店', '南京');
select * from s;
INSERT INTO b (BNO, BNAME,PRICE) VALUES
('B1','数据库原理',' 9.80'),
('B2', '系统分析与设计',' 8.50'),
('B3', '数据库设计',' 7.10'),
('B4', '计算机原理',' 9.60'),
('B5', '操作系统',' 11.20');
select *from B;
INSERT INTO l (LNO, LNAME, CITY, TEL) VALUES
('L1', '上海图书馆', '上海', '205800'),
('L2', '上海外文书店', '上海', '310310'),
('L3', '北京图书馆', '北京', '282471'),
('L4', '武汉图书馆', '武汉', '812712'),
('L5', '南京图书馆', '南京', '328173');
select *from L;
INSERT INTO lbs (LNO, BNO, SNO, QTY) VALUES
('L1', 'B1', 'S2', 10),
('L1', 'B2', 'S1', 5),
('L1', 'B3', 'S3', 5),
('L1', 'B4', 'S5', 20),
('L2', 'B1', 'S3', 10),
('L2', 'B4', 'S5', 20),
('L2', 'B5', 'S4', 15),
('L4', 'B4', 'S4', 20),
('L4', 'B5', 'S4', 30),
('L5', 'B1', 'S2', 10),
('L5', 'B2', 'S5', 20),
('L5', 'B4', 'S5', 30);
select *from lbs;
代码
CREATE DATABASE BookDistribution;
USE BookDistribution;
show databases;
-- 图书馆表
CREATE TABLE L (
LNO varchar(5) PRIMARY KEY COMMENT '图书馆编号',
LName VARCHAR(100) NOT NULL COMMENT '图书馆名',
CITY VARCHAR(255) COMMENT '城市',
TEL varchar(10)
)COMMENT '图书馆';
-- 图书表
CREATE TABLE B (
BNO varchar(5) PRIMARY KEY COMMENT '图书编号' ,
BNAME VARCHAR(100) NOT NULL COMMENT '图书名',
PRICE float COMMENT '价格'
)COMMENT '图书';
-- 书店表
CREATE TABLE S (
SNO varchar(5) PRIMARY KEY COMMENT '书店编号',
SNAME VARCHAR(100) NOT NULL COMMENT '书店名',
Address VARCHAR(255) COMMENT '地址'
)COMMENT '书店';
-- 创建图书发行表
CREATE TABLE LBS (
LNO varchar(5) COMMENT '图书馆编号',
BNO varchar(5) COMMENT '图书编号',
SNO varchar(5) COMMENT '书店编号',
QTY int
)COMMENT '图书发行';
-- 创建视图
CREATE VIEW LibraryWithBooks AS
SELECT L.LNO, S.SNO, B.BNO
FROM LBS
JOIN L ON LBS.LNO = L.LNO
JOIN B ON LBS.BNO = B.BNO
JOIN S ON LBS.SNO = S.SNO;
-- 查看视图结构
DESCRIBE LibraryWithBooks;
-- 查询视图数据
SELECT * FROM LibraryWithBooks;
-- 插入数据
INSERT INTO s (SNO, SNAME,Address) VALUES
('S1', '北京新华书店', '北京'),
('S2', '上海新华书店', '上海'),
('S3', '上海外文书店', '上海'),
('S4', '湖北新华书店', '武汉'),
('S5', '江苏新华书店', '南京');
select * from s;
INSERT INTO b (BNO, BNAME,PRICE) VALUES
('B1','数据库原理',' 9.80'),
('B2', '系统分析与设计',' 8.50'),
('B3', '数据库设计',' 7.10'),
('B4', '计算机原理',' 9.60'),
('B5', '操作系统',' 11.20');
select *from B;
INSERT INTO l (LNO, LNAME, CITY, TEL) VALUES
('L1', '上海图书馆', '上海', '205800'),
('L2', '上海外文书店', '上海', '310310'),
('L3', '北京图书馆', '北京', '282471'),
('L4', '武汉图书馆', '武汉', '812712'),
('L5', '南京图书馆', '南京', '328173');
select *from L;
INSERT INTO lbs (LNO, BNO, SNO, QTY) VALUES
('L1', 'B1', 'S2', 10),
('L1', 'B2', 'S1', 5),
('L1', 'B3', 'S3', 5),
('L1', 'B4', 'S5', 20),
('L2', 'B1', 'S3', 10),
('L2', 'B4', 'S5', 20),
('L2', 'B5', 'S4', 15),
('L4', 'B4', 'S4', 20),
('L4', 'B5', 'S4', 30),
('L5', 'B1', 'S2', 10),
('L5', 'B2', 'S5', 20),
('L5', 'B4', 'S5', 30);
select *from lbs;
附表:
图书馆 L.DBF
LNO | LNAME | CITY | TEL |
L1 | 上海图书馆 | 上海 | 205800 |
L2 | 上海外文书店 | 上海 | 310310 |
L3 | 北京图书馆 | 北京 | 282471 |
L4 | 武汉图书馆 | 武汉 | 812712 |
L5 | 南京图书馆 | 南京 | 328173 |
图书 B.DBF
BNO | BNAME | PRICE |
B1 | 数据库原理 | 9.80 |
B2 | 系统分析与设计 | 8.50 |
B3 | 数据库设计 | 7.10 |
B4 | 计算机原理 | 9.60 |
B5 | 操作系统 | 11.20 |
书店 S.DBF
SNO | SNAME | ADDRESS |
S1 | 北京新华书店 | 北京 |
S2 | 上海新华书店 | 上海 |
S3 | 上海外文书店 | 上海 |
S4 | 湖北新华书店 | 武汉 |
S5 | 江苏新华书店 | 南京 |
图书发行 LBS.DBF
LNO | BNO | SNO | QTY |
L1 | B1 | S2 | 10 |
L1 | B2 | S1 | 5 |
L1 | B3 | S3 | 5 |
L1 | B4 | S5 | 20 |
L2 | B1 | S3 | 10 |
L2 | B4 | S5 | 20 |
L2 | B5 | S4 | 15 |
L4 | B4 | S4 | 20 |
L4 | B5 | S4 | 30 |
L5 | B1 | S2 | 10 |
L5 | B2 | S5 | 20 |
L5 | B4 | S5 | 30 |
总结
本文先简单介绍了数据库的构建,包括数据库,表以及视图的实现,并把数据导入,了解了基础的mysql的操作方法。接下来,会继续完成该数据库系统的相应的实验任务。