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

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
10月前
|
存储 设计模式 Java
Java 期末考试不挂科必背基础知识点复习笔记整理
这是一份全面的Java基础知识点复习笔记,涵盖核心特性、数据类型、流程控制、数组、异常处理、JVM原理、多线程、设计模式及Java 8+新特性等内容。结合买飞机票、验证码生成和评委打分等应用实例,助你掌握考试重点,轻松应对Java期末考试,避免挂科!附带代码资源,供深入学习使用。链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)
504 0
|
5月前
|
人工智能 自然语言处理 开发者
周报不是流水账,这个AI指令帮你写出让老板点赞的工作汇报
一个帮助技术人快速生成专业工作周报的AI指令,通过结构化输入和价值导向表达,让你的周报从流水账变成让老板点赞的高质量汇报,15分钟搞定原本需要1小时的周报撰写。
1474 80
|
存储 数据处理 数据库
深入了解达梦数据库的增删查改操作:从入门到精通
深入了解达梦数据库的增删查改操作:从入门到精通
1514 4
|
Java Maven Spring
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
这篇文章介绍了在IntelliJ IDEA社区版中创建Spring Boot项目的三种方法,特别强调了第三种方法的详细步骤。
15707 0
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
|
人工智能 前端开发 JavaScript
在线课堂|基于Springboot+Vue实现在线学习平台
本项目基于Springboot和Vue开发实现了一个大学生在线课程学习平台。平台用户有三类:学生、教师、管理员。学生注册登录后可以查看相关课堂,在线播放课程视频进行学习,并可以购买课程,完成课程交易,对课程进行评价,添加学习记录进行记录,在线咨询留言等。教师账户由管理员分配,登录后可以添加课程,添加课程对应的学习视频,查询课程评价并进行回复,查看学生的学习记录,回复学生咨询信息等。管理员主要对平台的所有信息进行相应的管理,包含学生管理、教师管理、课程管理、分类管理、视频管理、咨询管理、学习记录管理、轮播图管理、友情链接管理等,并包含了课程销售的图形报表统计,采用Echart来进行实现。具体见下
1238 0
|
算法 开发者 索引
【C++11算法】random_shuffle和shuffle
【C++11算法】random_shuffle和shuffle
1042 0
|
安全 数据安全/隐私保护
WiFi工作原理及WiFi接入过程
【9月更文挑战第17天】WiFi(Wireless Fidelity)是一种基于IEEE 802.11标准的无线局域网技术,使用2.4GHz和5GHz频段进行数据传输,并通过正交频分复用(OFDM)技术提高传输效率。WiFi网络通常由接入点和客户端组成,采用IEEE 802.11系列协议实现通信。接入WiFi网络需经历扫描、选择网络、身份验证和关联等步骤,最终实现数据传输。
2788 4
|
语音技术 传感器
51单片机智能小车(循迹、跟随、避障、测速、蓝牙、wifie、4g、语音识别)总结-1
51单片机智能小车(循迹、跟随、避障、测速、蓝牙、wifie、4g、语音识别)总结-1
51单片机智能小车(循迹、跟随、避障、测速、蓝牙、wifie、4g、语音识别)总结-1
|
语音技术 物联网 程序员
51单片机智能小车(循迹、跟随、避障、测速、蓝牙、wifie、4g、语音识别)总结-2
51单片机智能小车(循迹、跟随、避障、测速、蓝牙、wifie、4g、语音识别)总结-2
51单片机智能小车(循迹、跟随、避障、测速、蓝牙、wifie、4g、语音识别)总结-2
|
JavaScript 前端开发 Docker
全栈开发实战:结合Python、Vue和Docker进行部署
【4月更文挑战第10天】本文介绍了如何使用Python、Vue.js和Docker进行全栈开发和部署。Python搭配Flask创建后端API,Vue.js构建前端界面,Docker负责应用的容器化部署。通过编写Dockerfile,将Python应用构建成Docker镜像并运行,前端部分使用Vue CLI创建项目并与后端交互。最后,通过Nginx和另一个Dockerfile部署前端应用。这种组合提升了开发效率,保证了应用的可维护性和扩展性,适合不同规模的企业使用。
1150 4