MySQL 简介
为什么使用数据库
- 数据可以从内存中保存到磁盘上,当设备掉电时,仍可保留
- 数据查询需要
MySQL8.0 目录
数据存放地址
Data/db_name/xxx.ibd
-
db_name 代指数据库名
-
xxx.ibd 数据库下的表名
软件存放地址
MySQL/bin
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/83f6767a40b12c6189b3541f711946d8.png#pic_center)
数据库相关概念
DB
数据库,即存储数据的“仓库”,其本质是一个文件系统,它保存了一系列有组织的数据
DBMS
数据库管理系统
SQL
结构化查询语言,用来操作数据库的语言
常见的关系型数据库介绍
Oracle
商业数据库
PostgreSQL
稳定性强,最符合SQL标准,开放源码,具备商业级DBMS质量,PG对数据量大的文本以及SQL处理快
SysBase
已淘汰,留下设计工具 PowerDesigner
SQLite
嵌入式的小型数据库,应用在手机端。零配置,SQLite不用安装,不用配置,不用启动 关闭 或配置数据库实例,可自动恢复。
Infomix
IBM 出品,取自Infomation和UNIX结合,它是第一个被移植到Linux上的商业数据库产品,仅运行于unix/linux平台 命令行操作。性能较高,支持集群,适应于安全性比较高的系统,尤其是银行 证券系统的应用。
MySQL 介绍
开放源代码的关系型数据库管理系统,由瑞典mysql ab 迅速发展成数据库的No.1
MariaDB 担心闭源,拉了一个MySQL的分支
MySQL 6.0 后分为社区版和商业版
可定制,采用了GPL协议,可以修改源码开发自己的MySQL系统
支持大型DB,5000万条记录的DB。MyISAM不对它的数据文件的大小做任何限制,文件的大小取决于操作系统对每个文件系统单个文件的限制。innodb MySQL对每个表空间的大小限制为64T,每个表空间可以有一个或多个文件,单个文件的大小同样取决于操作系统,但总体同一表空间的所有文件总和不能超过64T
2015 MySQL5.7 GA发布
2018 MySQL8.0.11 GA发布
为什么这么多公司使用MySQL
- 开放源代码,使用成本低
- 性能卓越,服务稳定
- 社区活跃,遇到问题可求助
- 软件体积小,使用简单,易于维护
- 许多互联网公司在用,经过了时间的验证
Oracle和MySQL
Oracle适合大型跨国企业,对费用不敏感,对性能和安全性有更高的要求
MySQL 体积小,速度快,总体拥有成本低,可处理上千万条记录的大型数据库,尤其是开放源代码
关系型数据库RDBMS
二维表格形式
关系型数据库以行row和列col为格式,在表和表直接的数据记录有关系,现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示
关系型数据库,就是建立在关系模型基础上的数据库
复杂查询:可以用SQL语句方便地在一个表及多个表之间做非常复杂的数据查询
事务支持:使得对安全性很高的数据访问要求得以实现
非关系型数据库(非RDBMS)
非关系型数据库,是传统关系型数据库的阉割版本,基于键值对存储数据,不需要经过SQL层的解析,性能非常高,目前流行的有:
- 文档型数据库 MongoDB
- 搜索引擎数据库 Elasticsearch
- 列式数据库 HBase(降低系统IO)
- 图形数据库
关系型数据库的设计规则
关系型数据库的典型数据结构就是数据表,这些表的组成都是结构化的
将数据放到表中,表再放到库中
一个数据库中可以有多个表,每个表都有一个名字,用来标识自己,表名具有唯一性
表具有一些特性,这些特性定义了数据在表中如何存储,类似Java和python中类的设计
表 记录和字段
E-R(Entity-Relationship 实体-关系) 模型
中的三个主要概念是实体集
联系集
属性
一个实体集(class)对应于数据库中的一个表(table),一个实体(instance) 则对应于数据库表中的一行(row) 也称为一个记录(record),一个属性(attribute)对应于数据表中的一列(column),也称为一个字段(field)
ORM(Object Relationship Mapping)
体现:
-
数据库中的一个表——Java或python中的一个类
-
表中的一个数据——类中的一个对象(或实体)
-
表中的一个列——类中的一个字段 属性(field)
表的关联关系
表与表之间的数据记录有4种关系
一对一关联
一对多关联
多对多关联
自我引用
一对一关联
在实际的开发中应用不多,因为一对一可以创建一张表。
举例:学号,姓名,手机号,班级,系别,身份证号码,家庭住址,籍贯,紧急联系人
拆成两张表,两个表的记录是一一对应的:
-
基础表(主表):学号 姓名 手机号码 班级 系别
-
档案表(从表):学号 身份证号码 家庭住址 籍贯 紧急联系人
若不分成两个表,冗余字段偏多,会造成IO加载次数偏多,影响性能
两种建表原则:
外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一
外键是主键:主表的外键和从表的外键,形成主外键关系
一对多关联
常见实例场景:客户表和订单表,分类表和商品表,部门表和员工表
举例:员工表(主表):部门 姓名 编号 部门表(从表):编号 名称 简介
设计原则:在从表(多方)创建一个字段,字段作为外键,指向主表(一方)的主键
多对多关联
要表示多对多关系,必须建第三个表,该表通常称为联结表,它将多对多关系分成两个一对多关系。将这两个表主键都插入到第三个表中。
- 学生信息表:一行代表一个学生的信息
- 课程表信息表:一行代表一个课程的信息
- 选课信息表:一个学生可以选多个课,一门课可以被多个学生选择
自我引用
员工信息表
编号 | 姓名 | 主管编号 |
---|---|---|
1 | xx | |
2 | yy | 1 |
MySQL的卸载
-
停止MySQL的服务
-
通过控制面板卸载
打开MySQL installer 打开后选择卸载remove
-
删除环境变量
-
删除服务里的MySQL服务
-
清理注册表 regedit
-
重启电脑
MySQL的四大版本
社区版本
企业版本
集群版
高级集群版
MySQL安装
- 选类型:选custom
- 选应用 MySQL server Advanced Operation
- Config type :Development computer, server computer, dedicated computer
- Authentication Method:Use strong Password
MySQL启动
-
net start mysql 管理员身份运行
-
net stop mysql 管理员身份运行
-
select version();
-
show databases;
-
有环境变量 mysql -u root -p
-
无环境变量 在bin下,mysql -u root -p
-
同机器上其他MySQL mysql -u root -P13306 -p
-
异机器上其他 mysql -u root -P3306 -h127.0.0.1 -p
-
查看 show create table employee;
-
查看编码格式 show variables like ‘character_%’;
-
查看编码格式 show variables like ‘collation_%’;
-
如何修改字符集以及修改字符集出现的问题
打开my.ini default-character-set=utf8
后重启mysql,若有需要,可修改建表时的字符集,用DBMS工具时可能出现的问题:
错误代码:2058 plugin caching_sha2_password could not be loaded xxx.
使用MySQL数据库 USE mysql;
修改root@localhost 用户的密码规则的密码 ALTER USER ‘root’ @ ‘localhost’ IDENTIFIED mysql_native_password BY ‘abc123’;
刷新权限 FLUSH VILEGES;