MySQL数据库期末复习--这一篇就够了(一)

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: MySQL数据库期末复习--这一篇就够了

一、前言

前段时间有小伙伴私聊我说,快期末考试了,能不能出一个MySQL数据库的教程啊。然后我花了一点时间,从建表到插入数据,从简单的增删改查,再到视图、存储过程、触发器的创建、删除等。其中还包括一些基本概念、E-R图创建及将其转换为关系模式。文章的最后还讲解了关系模式候选码、最小函数依赖集、模式分解的求解过程。文章虽长,但干货满满,希望大家能耐心读下去,最后希望大家能考出理想的成绩。

二、一些基本概念

1、时态数据库

区别于传统的关系型数据库(RDBMS),时态数据库(Temporal Database)主要用于记录那些随着时间而变化的值的历史,而这些历史值对应用领域而言又是重要的,这类应用有:金融、保险、预订系统、决策支持系统等。时态数据库理论提出了三种基本时间:用户自定义时间、有效时间和事务时间。同时把数据库分为四种类型:快照数据库、回滚数据库、历史数据库和双时态数据库。

2、分布式数据库

分布式数据库是指利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。它通常使用较小的计算机系统,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获取更大的存储容量和更高的并发访问量。


3、面向对象数据库

面向对象数据库系统是为了满足新的数据库应用需要而产生的新一代数据库系统。面向对象数据库系统是面向对象的程序设计技术与数据库技术相结合的产物。面向对象数据库系统的主要特点是具有面向对象技术的封装性和继承性,提高了软件的可重用性。它应满足两个标准:首先它是数据库系统,其次它也是面向对象系统。第一个标准即作为数据库系统应具备的能力。第二个标准就是要求面向对象数据库充分支持完整的面向对象概念和控制机制。


4、移动数据库

移动数据库(mobile database)是能够支持移动式计算环境的数据库,其数据在物理上分散而逻辑上集中。它涉及到数据库技术,分布式计算技术,移动通信技术等多个学科,与传统的数据库相比,移动数据库具有移动性,位置相关性,频繁的断接性,网络通讯的非对称性等特征。通俗地讲,移动数据库包括以下两层含义:人在移动时可以存取后台数据库的数据或其副本;人可以带着后台数据库的副本移动。

三、数据库的创建

1、工具

MySQL8.0、Navicat Premiun 15、ProcessOn

2、基本需求

1)下图为其中一个小伙伴的期末复习大纲,后面所有的表和库均以其名字缩写命名

2)建立一个图书管理系统数据库(zyz_library),要求包含的表有:


读者表(zyz_readers)


图书表(zyz_books)


管理员表(zyz_librarian)


借阅表(zyz_borrow)


3)为每张表设置适当的完整性约束(主键约束、唯一性约束、检查约束、默认约束、外键约束),以上五种约束在4张表中加起来至少涉及一次。

3、根据上述需求画出E-R图

E-R图又称实体关系图,是一种提供了实体,属性和联系的方法,用来描述现实世界的概念模型。通俗点讲就是,当我们理解了实际问题的需求之后,需要用一种方法来表示这种需求,概念模型就是用来描述这种需求。


1)E-R图基本要素:实体型,属性和联系


2)E-R图的构建有以下四个部分组成


矩形框:表示实体,在框中写入实体名,比如:读者、图书、管理员等


菱形框:表示联系,在框中写入联系名,比如:读者借阅图书,“借阅”表示两者的联系。


椭圆框:表示实体的属性,比如:读者的属性有姓名、性别、电话号码等


连线用线段分别与有关实体相连接,并在线段上标注上联系的类型(1:1、1:n或m:n)。两个不同实体之间之间的联系可分为一对一联系记为1:1,一对多联系记为1:n,多对多联系记为m:n。比如一个管理员能同时登记多个读者,一个读者某个时间内只能被一个管理员登记,关系即为(1:n)。


3)E-R图的绘制

2ba64fd6f5a2d583187fec0ce8037d53_d000fa35588a4ab6b944f1521c2c1b3a.png

4、将E-R图转换成关系模式

读者(读者编号,读者姓名,性别,联系电话,专业,违规情况,累计借书)

图书(书号,书名,作者,出版社,出版日期,简介)

管理员(工号,姓名,性别,联系电话)

借阅(读者编号书号工号,是否续借,借书日期,还书日期)

5、建立数据表

#读者表
create table gzh_readers
(
  gzh_rno int(15) primary key not null ,
  gzh_rname varchar(30) not null ,
  gzh_rsex char(10)  check(gzh_rsex='男' or gzh_rsex='女'),
  gzh_rphone varchar(50) not null ,
  gzh_speciality varchar(50) not null,
  gzh_remarks varchar(200) not null ,
  gzh_rnum int(40) not null
);
#图书表
create table gzh_books
(
  gzh_bno char(20) primary key not null ,
  gzh_bname char(40) unique key not null ,
  gzh_author varchar(40) not null ,
  gzh_press varchar(50)  not null ,
  gzh_time date not null ,
  gzh_profiles varchar(400) 
);
#管理员表
create table gzh_librarian
(
  gzh_lno varchar(20) primary key not null,
  gzh_lname varchar(20)  not null ,
  gzh_lsex char(10) not null  check(gzh_lsex='男' or gzh_lsex='女'),
  gzh_lphone varchar(50) not null 
);
#借阅表
create table gzh_borrow
(
   gzh_rno int(15)  not null  ,
   gzh_bno char(20)  not null  ,
   gzh_lno varchar(20)  not null  ,
   gzh_renew char(4) not null ,
   gzh_jtime date not null  ,
   gzh_htime date not null  ,
   foreign key(gzh_rno) references gzh_readers(gzh_rno),
   foreign key(gzh_bno) references gzh_books(gzh_bno),
   foreign key(gzh_lno) references gzh_librarian(gzh_lno)
);

6、每张数据表的结构


四、视图

1、创建视图

(1)创建单表视图,名字为gzh_view

create view gzh_view
  as 
  select *
  from gzh_readers

(2)创建多表视图,名字为gzh_view_some

CREATE VIEW gzh_view_some AS SELECT
r.gzh_rno AS 读者编号,
r.gzh_rname AS 读者姓名,
r.gzh_rsex AS 性别,
r.gzh_speciality AS 专业,
b.gzh_bname AS 借阅的书籍,
l.gzh_lname AS 管理员姓名,
r.gzh_rnum AS 累积借书,
r.gzh_remarks AS 违规情况,
w.gzh_jtime AS 借书日期,
w.gzh_htime AS 还书日期 
FROM
  gzh_readers r,
  gzh_books b,
  gzh_librarian l,
  gzh_borrow w 
WHERE
  w.gzh_rno = r.gzh_rno 
  AND w.gzh_bno = b.gzh_bno 
  AND w.gzh_lno = l.gzh_lno 
ORDER BY
  r.gzh_rno ASC;

2、查看视图

(1)查看所有视图及表

show TABLES;

ecea3b3ae25e382b7111d605292a6246_9f6ad2ed00ec4918b434aec495663c39.png

(2)查看视图基本信息

desc gzh_view;

(3)查看视图的创建信息

show create view gzh_view;


(4) 用视图查询读者表中不同的专业

select gzh_speciality as 专业 from gzh_view GROUP BY gzh_speciality

3、更新视图数据

(1)利用视图插入一条数据

insert into gzh_view(gzh_rno,gzh_rname,gzh_rsex,gzh_rphone,gzh_speciality,gzh_remarks,gzh_rnum) values
(20,'郭反','男','855585522','网络工程','无违规行为',1);

0f5d619f9273ccc470031f61cdd79686_d4a6d961dd36496b99329d10d5b937a1.png

(2)利用视图更新一条数据

update gzh_view set gzh_rname='郭小姐',gzh_rsex='女' WHERE gzh_rno=20;

4、修改视图

#修改某个视图的字段
alter view  gzh_view as 
select gzh_rno as 读者编号,gzh_rname as 读者姓名,gzh_speciality as 专业,gzh_remarks as 违规情况,gzh_rnum as 累计借书
from gzh_readers;
#查看一下视图字段
SELECT * from gzh_view;

2f64cb3638d7cac56155468e8145f9c2_53b4f0ef7d4443788aa443ea31597627.png

5、删除视图

drop view gzh_view;
show tables;

b544ebcf827e66993fc84cabaaa41824_9237545084ba493992bafdb2c1ac3873.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10月前
|
SQL 存储 关系型数据库
MySQL的基本操作及实用示例(面试真题老实用了)
在MySQL中,行转列是指将数据表的行转换为列,以实现数据在视图中的重组和重塑。通常,行转列用于将多行数据合并为一行,并将多个列值作为新的列。行转列可以使用多种方法实现,包括使用聚合函数、条件筛选和透视(PIVOT)表等。以下是一些常见的行转列方法:1.使用聚合函数可以使用聚合函数如等对数据进行聚合,并使用CASE语句根据条件选择和返回不同的列值。以将不同的行值转换为列值。2.使用条件筛选可以使用条件判断语句,如IF语句或CASE语句。
|
2月前
|
SQL 关系型数据库 MySQL
【2.5w字吐血总结 | 新手必看】全网最详细MySQL笔记
【2.5w字吐血总结 | 新手必看】全网最详细MySQL笔记
58 0
|
7月前
|
存储 安全 数据库
数据库期末复习---简答题整理
数据库期末复习---简答题整理
73 0
|
关系型数据库 MySQL 数据库
MySQL数据库期末复习--这一篇就够了(三)
MySQL数据库期末复习--这一篇就够了
227 0
MySQL数据库期末复习--这一篇就够了(三)
|
存储 SQL 关系型数据库
MySQL数据库期末复习--这一篇就够了(二)
MySQL数据库期末复习--这一篇就够了
129 0
|
存储 缓存 自然语言处理
【JAVA期末复习资源】包含重点知识、踩坑知识,期末复习看这一份就够了
【JAVA期末复习资源】包含重点知识、踩坑知识,期末复习看这一份就够了
251 0
【JAVA期末复习资源】包含重点知识、踩坑知识,期末复习看这一份就够了
|
存储 SQL JSON
MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解(一)
MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解
78 0
|
存储 JSON JavaScript
MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解(二)
MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解
150 0
|
存储 SQL 关系型数据库
【MySQL新手到通关】第六章 时间日期函数
MySQL的日期函数主要用来对日期和时间类型的数据进行计算、格式化和转换,能够帮助程序员更加方便地处理存储在MySQL数据库中的时间数据。使用这些函数可以实现以下功能: 格式化日期和时间:通过指定不同的日期格式输出相应的日期或时间字符串。 提取日期和时间的各个部分:提取一个时间值中的年、月、日、时、分、秒等信息。 进行日期加减操作:在一个日期值上进行加减运算,例如将某一日期加上一天或减去半个月。 返回日期时间差异:计算两个日期或时间的差值,例如计算两个日期之间相隔多少天、小时或分钟等。 循CC