数据库实验之《数据定义与简单查询》

博客由来

本人在校学生,希望能借助平台记录下自己的成长,同时也希望分享自己的一些独特的想法。本次上机使用的平台:Windows10,软件:Mysql Workbench 8.0 CE。文末附上完整MySQL源码。

实验目的

1、熟练掌握和使用MySQL创建数据库、表索引和修改表结构,并学会使用Workbench 查询分进行结果分析。

2、掌握查看、修改数据库和表的属性的方法

3、在建立好的数据库表中输入部分虚拟数据,学会如何实现基于单表的简单查询。

实验内容

  1. 使用Mysql Workbench 8.0 创建一个“图书读者数据库”(book_reader_db)
CREATE DATABASE book_reader_db;
  • 使用Workbench查看book_reader_db的数据库属性,并进行修改,使之符合要求。三个表的结构为:
  • 创建三表
create table book(
    bno int primary key,
    bclass varchar(20) not null,
    press varchar(20) not null,
    bname varchar(20) not null,
    price float not null,
    other varchar(50)
);

create table reader(
    rno int primary key,
    rname varchar(10) not null,
    sex enum('男','女') not null,
    depart varchar(20) not null,
    tel bigint
);

create table borrow(
    bno int not null,
    rno int not null,
    bor_date datetime,
    foreign key(bno) references book(bno),
    foreign key(rno) references reader(rno)
);
  1. 实现相关约束:
  • 使用Workbench来建立上述三个表的联系,即实现:借阅表与图书表之间、借阅表与读者表之间的外码约束。
foreign key(bno) references book(bno);
foreign key(rno) references reader(rno);
  • 实现读者性别只能是“男”或“女”的约束。
enum('男','女');
  1. 查询分析器修改表的结构。
    可以查看不同的字段等信息

  2. 在"图书"(book)表中,增加两个字段,分别为"数量"(bnum)和"购买日期"(buy_date)。在“借阅”(borrow)表中增加一个“还书日期"(reb_date)字段。

ALTER TABLE book
ADD bnum INT NOT NULL AFTER bname;

ALTER TABLE book
ADD buy_date DATE NOT NULL AFTER price;

ALTER TABLE borrow
ADD reb_date DATETIME AFTER bor_date;

ALTER TABLE book
ADD author varchar(20) NOT NULL AFTER price;


  1. 插入数据(自己编的,如有雷同,纯属巧合,无意冒犯)
insert into book values(1001,'电子技术','工业出版社','无线电技术',20,58,'李明','2017-03-14','书本正常');
insert into book values(1002,'电脑维修','机械出版社','跟我修电脑',15,49,'张加军','2017-03-14','有2本出现缺页');
insert into book values(1003,'信息技术','清华大学出版社','数据库原理',30,65,'刘智','2016-05-23','书本正常');
insert into book values(1004,'信息技术','北京大学出版社','计算机组成原理',25,56,'王小丽','2016-05-23','暂无');
insert into book values(1005,'电子技术','浙江大学出版社','射频识别',40,62,'唐飞宏','2018-11-12','暂无');
insert into book values(1006,'电脑维修','西部院校出版社','电脑组装那些事',15,42,'李笑容','2018-11-12','暂无');

insert into reader values(20180517,'鲁大势','男','软件学院',13879064214);
insert into reader values(20180214,'尚香','女','艺术学院',16779026573);
insert into reader values(20180319,'章达','男','体育学院',17779014725);
insert into reader values(20180211,'布丘仁','男','机电学院',13879041563);
insert into reader values(20180428,'张小艾','女','信息学院',16779097214);
insert into reader values(20180514,'章小鱼','女','经管学院',1377906542);

insert into borrow values(1003,20180214,'2020-02-14','2020-03-15');
insert into borrow values(1001,20180517,'2020-01-10',null);
insert into borrow values(1002,20180514,'2020-02-11','2020/04/6');
insert into borrow values(1004,20180319,'2019-12-23',null);
insert into borrow values(1006,20180211,'2019-11-16','2019-12-23');
insert into borrow values(1005,20180428,'2020-03-24',null);

查询练习

  1. 单表查询
-- 查询book表中的所有内容
select * from book;

在这里插入图片描述
2. 带条件查询

--  where后面接条件
select * from book where bclass='信息技术';
  1. 分组查询
-- group by 后面接分组依据 
select count(*) from book group by bclass;
  1. 排序查询
-- order by 后面接排序依据,默认升序(增加asc),降序关键字为desc,接在rno后面。
select rno,count(bno) 
	from borrow 
group by rno 
	order by rno;

寄语

本期就到这里结束了,更多SQL操作将在今后陆续更新!最后,JIAN 祝大家学习进步,生活愉快!

完整源码

use book_reader_db;

-- 创建三表
create table book(
    bno int primary key,
    bclass varchar(20) not null,
    press varchar(20) not null,
    bname varchar(20) not null,
    price float not null,
    other varchar(50)
);

create table reader(
    rno int primary key,
    rname varchar(10) not null,
    sex enum('男','女') not null,
    depart varchar(20) not null,
    tel bigint
);

create table borrow(
    bno int not null,
    rno int not null,
    bor_date datetime,
    foreign key(bno) references book(bno),
    foreign key(rno) references reader(rno)
);

-- 增加字段
ALTER TABLE book
ADD bnum int NOT NULL AFTER bname;

ALTER TABLE book
ADD buy_date date NOT NULL AFTER price;

ALTER TABLE borrow
ADD reb_date datetime AFTER bor_date;

ALTER TABLE book
ADD author varchar(20) NOT NULL AFTER price;

-- 插入数据
insert into book values(1001,'电子技术','工业出版社','无线电技术',20,58,'李明','2017-03-14','书本正常');
insert into book values(1002,'电脑维修','机械出版社','跟我修电脑',15,49,'张加军','2017-03-14','有2本出现缺页');
insert into book values(1003,'信息技术','清华大学出版社','数据库原理',30,65,'刘智','2016-05-23','书本正常');
insert into book values(1004,'信息技术','北京大学出版社','计算机组成原理',25,56,'王小丽','2016-05-23','暂无');
insert into book values(1005,'电子技术','浙江大学出版社','射频识别',40,62,'唐飞宏','2018-11-12','暂无');
insert into book values(1006,'电脑维修','西部院校出版社','电脑组装那些事',15,42,'李笑容','2018-11-12','暂无');

insert into reader values(20180517,'鲁大势','男','软件学院',13879064214);
insert into reader values(20180214,'尚香','女','艺术学院',16779026573);
insert into reader values(20180319,'章达','男','体育学院',17779014725);
insert into reader values(20180211,'布丘仁','男','机电学院',13879041563);
insert into reader values(20180428,'张小艾','女','信息学院',16779097214);
insert into reader values(20180514,'章小鱼','女','经管学院',1377906542);

insert into borrow values(1003,20180214,'2020-02-14','2020-03-15');
insert into borrow values(1001,20180517,'2020-01-10',null);
insert into borrow values(1002,20180514,'2020-02-11','2020/04/6');
insert into borrow values(1004,20180319,'2019-12-23',null);
insert into borrow values(1006,20180211,'2019-11-16','2019-12-23');
insert into borrow values(1005,20180428,'2020-03-24',null);

-- 查询练习
 select * from book;

SELECT * 
	FROM book
WHERE bclass='信息技术';

SELECT * 
	FROM book
GROUP BY bclass;

SELECT * 
	FROM reader;

SELECT *
	FROM borrow;
    
SELECT rno,count(bno)
	FROM borrow
GROUP BY rno
	ORDER BY rno;
    
SELECT bno,count(rno)
	FROM borrow
GROUP BY bno
	ORDER by bno;

猜你喜欢

转载自blog.csdn.net/weixin_43445874/article/details/106182660