目录
1. MySQL启示录
(1)为什么要使用数据库?
持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。
持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数 据文件中。
(2)关系型数据库设计规则
一个数据库中可以有多个表,每个表都有一个名字,用来标识自己;表名具有唯一性!
表具有一些特性,这些特性定义了数据在表中如何存储,类似Java和Python中 “类”的设计!
(1)ORM思想(Object Relational Mapping)体现:
所谓的ORM就是对象关系映射,表示数据库表中的数据实际上是和一个类有着对应关系的!
①数据库中的一个表 <------------> Java或Python中的一个类
②表中的一条数据 <------------> 类中的一个对象(或实体)
③表中的一个列 <------------> 类中的一个字段(或属性)
(2)E-R(entity-relationship,实体-联系)模型
E-R(entity-relationship,实体-联系)模型中有三个主要概念是: 实体集 、 属性 、 联系集。一个实体集(class)对应于数据库中的一个表(table),一个实体(instance)则对应于数据库表 中的一行(row),也称为一条记录(record)。一个属性(attribute)对应于数据库表中的一列 (column),也称为一个字段(field)。
(3)表的关联关系
表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。 四种:一对一关联、一对多关联、多对多关联、自我引用。
(1)一对一关联(one-to-one)
在实际的开发中应用不多,因为一对一可以创建成一张表。
举例:设计 学生表 :学号、姓名、手机号码、班级、系别、身份证号码、家庭住址、籍贯、紧急 联系人、... 拆为两个表:两个表的记录是一一对应关系。
①基础信息表 (常用信息):学号、姓名、手机号码、班级、系别
②档案信息表 (不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、...
两种建表原则:
外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一。
外键是主键:主表的主键和从表的主键,形成主外键关系。
处理方式:主键共享或者外键唯一!
(2)一对多关系(one-to-many)
常见实例场景: 客户表和订单表 , 分类表和商品表 , 部门表和员工表 。
举例:
①员工表:编号、姓名、...、所属部门
②部门表:编号、名称、简介
一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键
处理方式:两张表,多的表加外键
(3)多对多关联
要表示多对多关系,必须创建第三个表,该表通常称为 联接表(关系表) ,它将多对多关系划分为两个一对多关 系。将这两个表的主键都插入到第三个表中。
举例1:学生-课程
学生信息表 :一行代表一个学生的信息(学号、姓名、手机号码、班级、系别...)
课程信息表 :一行代表一个课程的信息(课程编号、授课老师、简介...)
选课信息表 :一个学生可以选多门课,一门课可以被多个学生选择
举例2:产品-订单
“订单”表和“产品”表有一种多对多的关系,这种关系是通过与“订单明细”表建立两个一对多关系来 定义的。一个订单可以有多个产品,每个产品可以出现在多个订单中。
①产品表 :“产品”表中的每条记录表示一个产品。
②订单表 :“订单”表中的每条记录表示一个订单。
③订单明细表 :每个产品可以与“订单”表中的多条记录对应,即出现在多个订单中。一个订单可以与“产品”表中的多条记录对应,即包含多个产品。
处理方式:三张表,关系表两个外键
(4)自我引用
领导也是属于员工的,一个员工也可能是领导!
2. MySQL的安装
MySQL的4大版本:
①MySQL Community Server 社区版本,开源免费,自由下载,但不提供官方技术支持,适用于大多数普通用户。
②MySQL Enterprise Edition 企业版本,需付费,不能在线下载,可以试用30天。提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高的企业客户。
③MySQL Cluster 集群版,开源免费。用于架设集群服务器,可将几个MySQL Server封装成一个Server。需要在社区版或企业版的基础上使用。
④MySQL Cluster CGE 高级集群版,需付费。
官网下载地址:MySQL :: Download MySQL Installer
注:官网中有两种格式:压缩包.zip和.msi。使用.msi安装和配置一步就下来了,而.zip需要安装好后再去单独的配置;所以建议下载.msi格式的安装包!
对于Mysql低版本的安装步骤:
(1)双击我们去官网下载好的MySQL
(2) 一直点下一步,直到遇到以下界面
(3)选择Typical,会进行跳转,点击Install
(4)等待下载完成,点击next
(5)来到以下界面,点击Finish来到配置界面
(6)点击next开始进行配置
(7)默认选项,详细的配置
(8) 继续选择默认的开发机器
(9)选择默认的事务支持
(10) 一直默认下一步,直到遇到MySQL的3306端口(文件下载的端口:21、上网端口:80、MySQL端口:3306、Oracle端口:1521)
(11)选择数据库字符集
(12)默认MySQL服务名称;选择bin目录到配置PATH,后面就不要再手动配置;也可以不选上,后面进行手动配置环境变量
(13)设置超级用户root的密码后,继续下一步:
(14)在点击执行Execute,直到四个对勾全打上,安装成功!
对于Mysql高版本的安装步骤(8.0版本以上,也就是5.8以上):
(1)选择自定义模式
(2) 添加你需要安装的产品
细节:此时如果直接“Next”(下一步),则产品的安装路径是默认的。如果想要自定义安装目录,则可以选中 对应的产品,然后在下面会出现“Advanced Options”(高级选项)的超链接。
选择软件安装的目录和存储数据的目录
(3)进行安装
(4)安装成功
(5)配置MySQL8.0(进行配置)
步骤1:在上一个小节的最后一步,单击“Next”(下一步)按钮,就可以进入产品配置窗口。
配置主机的类型和端口号
其中,“Config Type”选项用于设置服务器的类型。单击该选项右侧的下三角按钮,即可查看3个选项,如 图所示:
Development Machine(开发机器) :该选项代表典型个人用桌面工作站。此时机器上需要运行多个应用程序,那么MySQL服务器将占用最少的系统资源。
Server Machine(服务器) :该选项代表服务器,MySQL服务器可以同其他服务器应用程序一起 运行,例如Web服务器等。MySQL服务器配置成适当比例的系统资源。
Dedicated Machine(专用服务器) :该选项代表只运行MySQL服务的服务器。MySQL服务器配置成使用所有可用系统资源。
步骤3:单击“Next”(下一步)按钮,打开设置授权方式窗口。其中,上面的选项是MySQL8.0提供的新的授权方式,采用SHA256基础的密码加密方法;下面的选项是传统授权方法(保留5.x版本兼容性)。
步骤4:单击“Next”(下一步)按钮,打开设置服务器root超级管理员的密码窗口,如图所示,需要输入两次同样的登录密码。也可以通过“Add User”添加其他用户,添加其他用户时,需要指定用户名、允许 该用户名在哪台/哪些主机上登录,还可以指定用户角色等。
步骤5:单击“Next”(下一步)按钮,打开设置服务器名称窗口,如图所示。该服务名会出现在Windows服务列表中,也可以在命令行窗口中使用该服务名进行启动和停止服务。本书将服务名设置为“MySQL80”。如果希望开机自启动服务,也可以勾选“Start the MySQL Server at System Startup”选项(推 荐)。选择以什么方式运行服务?可以选择“Standard System Account”(标准系统用户)或者“Custom User” (自定义用户)中的一个。这里推荐前者。
步骤6:单击“Next”(下一步)按钮,打开确认设置服务器窗口,单击“Execute”(执行)按钮。
步骤7:完成配置,如图所示。单击“Finish”(完成)按钮,即可完成服务器的配置。
步骤8:如果还有其他产品需要配置,可以选择其他产品,然后继续配置。如果没有,直接选择“Next”(下一步),直接完成整个安装和配置过程。
步骤9:结束安装和配置。
注:安装好以后把MySQL安装目录下的bin目录配置到环境变量Path中去!
3. MySQL的启动与停止
我们安装的时候,默认是启动MySQL,也可以手动进行启动!
方法1:
win+r 输入services.msc;找到MySQL,手动进行启动和停止
方法2:
以管理员身分打开dos命令窗口,输入以下命令
net stop MySQL #停止
net start MySQL #启动
4. 客户端连接
方式一:
使用MySQL提供的客户端命令行工具;在开始菜单中,找到MySQL命令行工具
会得到以下界面,直接输入密码进行登录即可:
方式二:利用dos窗口登录
第一种直接登录方式:mysql -uroot -p123456
直接回车,出现以下界面就说明登录成功;但这种方法有弊端,别人能看到我们输入的密码
第二种登录方式:先输入:mysql -uroot -p回车,
然后在输入密码,别人就看不到我们的密码了
5. MySQL完美卸载
第一步:重新打开我们的安装包,找到以下界面:
最后再点击Remove
或者通过控制面板---》找到程序进行卸载
第二步:删除两个文件
(1)我们默认安装路径下的MySQL文件夹(这个文件会随着我们上面的卸载被删除)
(2)删除隐藏在ProgramData文件夹下的MySQL文件夹(存放数据的,需要我们手动删除);
对于ProgramData是一个隐藏文件,要想让它显示出来:点击查看,勾上隐藏的项目即可
第三步:删除Path中的环境变量的配置
第四步:关闭服务;电脑右击鼠标---》管理---》服务
注:使用控制面板卸载,卸载的是比较干净的,卸完软件后,实际上服务也没了。
6. MySQL的编码设置
MySQL5.7中:掺入中文会乱码
问题解决
步骤1:查看编码命令
show variables like 'character_%'; # 默认是拉丁的字符集
show variables like 'collation_%'; # 默认是拉丁的字符集
步骤2:修改mysql的数据目录下的my.ini配置文件
①[mysql] #大概在63行左右,在其下添加
...
default-character-set=utf8 #默认字符集
②[mysqld] # 大概在76行左右,在其下添加
...
character-set-server=utf8
collation-server=utf8_general_ci
步骤3:重启服务
步骤4:再次查看编码命令
MySQL8.0中
在MySQL 8.0版本之前,默认字符集为latin1,utf8字符集指向的是utf8mb3。网站开发人员在数据库设计的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL 8.0开始,数据库的默认编码改为 utf8mb4 ,从而避免了上述的乱码问题!
7. MySQL图形化管理工具
MySQL图形化管理工具极大地方便了数据库的操作与管理,常用的图形化管理工具有:MySQL Workbench、phpMyAdmin、Navicat Preminum、MySQLDumper、SQLyog、dbeaver、MySQL ODBC Connector。
工具1. MySQL Workbench
MySQL官方提供的图形化管理工具MySQL Workbench完全支持MySQL 5.0以上的版本。MySQL Workbench分为社区版和商业版,社区版完全免费,而商业版则是按年收费。
MySQL Workbench 为数据库管理员、程序开发者和系统规划师提供可视化设计、模型建立、以及数据库 管理功能。它包含了用于创建复杂的数据建模ER模型,正向和逆向数据库工程,也可以用于执行通常需 要花费大量时间的、难以变更和管理的文档任务。
下载地址:MySQL :: Download MySQL Workbench
使用步骤:
首先,我们点击 Windows 左下角的“开始”按钮,如果你是 Win10 系统,可以直接看到所有程序。接着, 找到“MySQL”,点开,找到“MySQL Workbench 8.0 CE”。点击打开 Workbench,如下图所示:
左下角有个本地连接,点击,录入 Root 的密码,登录本地 MySQL 数据库服务器,如下图所示:
操作
工具2. Navicat
Navicat MySQL是一个强大的MySQL数据库服务器管理和开发工具。它可以与任何3.21或以上版本的MySQL一起工作,支持触发器、存储过程、函数、事件、视图、管理用户等,对于新手来说易学易用。 其精心设计的图形用户界面(GUI)可以让用户用一种安全简便的方式来快速方便地创建、组织、访问和 共享信息。Navicat支持中文,有免费版本提供。
下载地址:https://www.navicat.com/en/
工具3. SQLyog
SQLyog 是业界著名的 Webyog 公司出品的一款简洁高效、功能强大的图形化 MySQL 数据库管理工具。 这款工具是使用C++语言开发的。该工具可以方便地创建数据库、表、视图和索引等,还可以方便地进行 插入、更新和删除等操作,同时可以方便地进行数据库、数据表的备份和还原。该工具不仅可以通过SQL文件进行大量文件的导入和导出,还可以导入和导出XML、HTML和CSV等多种格式的数据。
下载地址:Webyog | Tools for MySQL and MariaDB Databases
工具4:dbeaver
DBeaver是一个通用的数据库管理工具和 SQL 客户端,支持所有流行的数据库:MySQL、PostgreSQL、SQLite、Oracle、DB2、SQL Server、 Sybase、MS Access、Teradata、 Firebird、Apache Hive、Phoenix、Presto等。DBeaver比大多数的SQL管理工具要轻量,而且支持中文界面。DBeaver社区版作为一个免费开 源的产品,和其他类似的软件相比,在功能和易用性上都毫不逊色。
下载地址:Download | DBeaver Community
细节问题:有些图形界面工具,特别是旧版本的图形界面工具,在连接MySQL8时出现“Authentication plugin 'caching_sha2_password' cannot be loaded”错误。
出现这个原因是MySQL8之前的版本中加密规则是mysql_native_password,而在MySQL8之后,加密规则 是caching_sha2_password。解决问题方法有两种:第一种是升级图形界面工具版本,第二种是把MySQL8用户登录密码加密规则还原成mysql_native_password。
第二种解决方案如下,用命令行登录MySQL数据库之后,执行如下命令修改用户密码加密规则并更新用户密码,这里修改用户名为“root@localhost”的用户密码规则为“mysql_native_password”,
#使用mysql数据库
USE mysql;
#修改'root'@'localhost'用户的密码规则和密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
#刷新权限
FLUSH PRIVILEGES;
8. MySQL目录结构与源码
主要目录结构
MySQL 源代码获取
首先进入 MySQL下载界面。 这里你不要选择用默认的“Microsoft Windows”,而是要通过下拉栏, 找到“Source Code”,在下面的操作系统版本里面, 选择 Windows(ArchitectureIndependent),然后点击下载。
MySQL 是用 C++ 开发而成的,MySQL 各部分组件的源代码:
sql 子目录是 MySQL 核心代码;
libmysql 子目录是客户端程序 API;
mysql-test 子目录是测试工具;
mysys 子目录是操作系统相关函数和辅助函数;
源代码可以用记事本打开查看,如果你有 C++ 的开发环境,也可以在开发环境中打开查看