文章目录
一、数据库基本概念
1、DB与DBMS
概念 | 解释 |
---|---|
数据库(DB) | 按照某些数据结构、专门存储和维护信息的容器 |
数据库管理系统(DBMS) | 管理数据库的软件 |
数据字典 | 记录数据库中存放的各种对象的一些定义和辅助管理信息的数据,也称为元数据 |
2、数据库系统的构成
3、数据管理发展过程
阶段 | 数据的管理者 | 特点 |
---|---|---|
手工管理阶段 | 应用程序 | 数据不保存、不共享、不具有独立性 |
文件管理阶段 | 文件系统 | 数据可长期保存 数据共享性差、冗余度大、独立性差 |
数据库管理阶段 | 数据库系统 | 数据结构复杂、冗余小、易扩充、独立性较高,有统一的数据控制 |
- 数据库系统是由计算机软件和硬件资源组成的系统。
- 数据库系统实现了有组织地、动态地存储大量关联数据,便于多用户访问。
- 数据库系统与文件系统的重要区别是,数据的充分分享、交叉访问、应用程序的高独立性。
4、数据库
特点
- 数据结构化
- 实现数据共享
- 减少数据冗余
- 数据独立性
数据库的类型以及特点
类型 | 举例 | 特点 |
---|---|---|
网状型数据库 | 地图 | 采用记录类型为节点的网状数据模型 |
层次型数据库 | 族谱 | 采用层次模型(树形结构) |
关系型数据库 | 二维表 | 采用二维表结构组织和管理数据,规定表内、表间的依赖关系 |
5、关系型数据库
关系型数据库是指一些相关的表和其他数据库对象的集合。
表格由行、列组成,在数据库中表格的相关概念有以下别名
表格中的项 | 数据库中的别名1 | 数据库中的别名2 |
---|---|---|
行 | 属性 | 字段 |
列 | 记录 | 元祖 |
单元格 | 数据项 | 字段值 |
Tips:对数据库来说,关系就是表的同义词。
二、MySQL安装与卸载
可以参考这几篇博客
- MySQL社区版安装:https://god-excious.blog.csdn.net/article/details/104770214
- MySQL社区版卸载:https://god-excious.blog.csdn.net/article/details/104777367
- MySQL绿色版安装:尚未过审
三、与MySQL相关的常用命令
命令 | 效果 |
---|---|
C:XXX> net start mysql |
启动MySQL的服务 |
C:XXX> net sop mysql |
关闭MySQL的服务 |
C:XXX> mysql -uroot -p密码 |
本地登录 |
C:XXX> mysql -h具体ip -uroot -p密码 C:XXX> mysql --host=具体ip --user=root --password=密码 |
远程登录 |
mysql> select version(); |
查看MySQL版本 |
mysql> quit mysql> exit mysql> \q |
退出MySQL命令行 |
mysql> show databases; |
显示当前MySQL服务器下、当前用户权限范围以内的所有数据库 |
mysql> create database 数据库名; |
创建相应数据库 |
mysql> use 数据库名; |
进入相应数据库 |
mysql> show tables; |
显示当前数据库下的表 |
mysql> desc 表名; mysql> describe 表名; |
查看具体表结构 |
mysql> show engines; |
查看MySQL服务实例支持的引擎 |
mysql> set default_storage_engine=MyISAM; |
“临时地”将MySQL“当前会话”的存储引擎设置为MyISAM |
注:以C:XXX>
开头代表在cmd的命令行的输入,以mysql>
开头代表在MySQL的命令行的输入
四、MySQL相关概念
1、MySQL体系结构
一个由多个子系统构成的层次化系统,如下图所示
2、MySQL存储引擎
MySQL最与众不同的特点——插件式存储引擎
插件式存储结构
- 插件式存储结构是底层物理结构的实现,主要负责为数据库执行实际的IO操作
- 插件式存储结构是基于表的而不是基于数据库的(不同的表可以有不同的引擎)
- 插件式存储结构的核心是文件访问层的一个接口,任何人都可以利用这个API接口去建立新的文件访问机制
存储引擎
- 存储引擎就是如何存储数据、如果为存储的数据建立索引、如何更新与查询数据等技术的实现方法
- 存储引擎简而言之就是指表的类型
- 数据库的存储引擎决定了表在计算机中的存储方式
- 在Oracle、SQL Server等数据库中只有一种存储引擎,而MySQL数据提供了多种存储引擎,这也是MySQL的核心
- MySQL的默认引擎是InnoDB,这也是我们使用最多的引擎
MySQL中一些常用的存储引擎及其特点
存储引擎 | 优点 | 缺点 | 适用情形 |
---|---|---|---|
InnoDB存储引擎 |
|
|
|
MyISAM存储引擎 |
|
|
|
Memory存储引擎 |
|
|
|
几种存储引擎的对比
功能\引擎 | InnoDB | MyISAM | Memory |
---|---|---|---|
存储限制 | 64TB | 256TB | RAM |
支持事务 | √ | × | × |
支持外键 | √ | × | × |
支持数据缓存 | √ | × | × |
空间占用 | ★★★ | ★☆☆ | ★☆☆ |
内存占用 | ★★★ | ★☆☆ | ★★★ |
插入数据速度 | ★☆☆ | ★★★ | ★★★ |
3、MySQL字符集与字符序
概念 | 解释 | 举例 |
---|---|---|
字符 | 人类语言最小的表义符号 | `A’、‘B’、…… |
编码 | 给定一系列字符,每一个字符对应一个数值,该数值即为编码 | |
字符集 | 给定一些列字符,并赋予对应编码后,所有这些字符和编码对组成的集合即为字符集 | latin1、utf8、gbk、…… |
字符序 | 同一字符集内字符之间的比较规则 |
字符序与字符集的对应关系
- 一个字符序唯一对应一种字符集
- 一个字符集可以对应多种字符序(每个字符集都有一个默认字符序)
MySQL中字符序的命名规则
- 以字符序对应的字符集名称开头
- 以国家名居中(或以general居中)
- 以ci/cs/bin结尾
▷ 以ci结尾的字符序表示对大小写不敏感
▷ 以cs结尾的字符序表示对大小写敏感
▷ 以bin结尾的字符序表示按编码值比较
字符序命名规则举例
- latin1字符集对应有latin1_swedish_ci、latin1_spanish_ci、latin1_german1_ci等字符序
- 在字符序gbk_general_ci中,'a’与’A’等价
常用的字符集
utf-8
、gbk
、latin1
.
字符集等信息查询常用sql
- 查看数据库的默认字符集
show variables like '%char%';
- 查看数据库的默认编码
show create database 数据库名;
- 查看数据库中表格的字符集(以下两种方式均可)
Tips:[]
中的内容代表可以缺省,实际写的时候不需要加[]
show table status from 数据库名 [like '表格名字匹配'] \G; show create table 表名;
字符集的继承
在服务器端,有以下等级的字符集
- 服务器端的字符集
- 数据库的字符集
- 表的字符集
- 字段的字符集
如果某一个级别没有设置字符集,将会继承上一级的字符集
问题1:无法存储中文
原因:表或字段字符集不支持中文
问题2:中文乱码
存、取数据时分别需要编码、解码,过程如下
- 存入 字符 编码 数值
- 取出 数值 解码 字符
分析上述过程,可以知道产生乱码的原因是编码和解码使用的字符集不一致
character_set_client
与实际客户端不一致character_set_results
与实际客户端不一致