Mysql 入门概览
文章目录
- 1. Mysql 是什么
- 1.1 Mysql结构
- 2. Mysql 为什么存在
- 3. Mysql下相关概念
- 3.1 库,表,数据类型
- 3.2 mysql操作
- 3.3 mysql索引
- 3.4 mysql事务
- 3.5 mysql用户管理
1. Mysql 是什么
Mysql,全称为My structured query language,中文翻译过来就是,我的结构化请求语言(实际上M是开发者女儿名,不过也经常被视为My),本质是一种数据库。
mysql本质是由客户端和服务端共同构成的:mysql
客户端,mysqld
服务端。
mysql
分为客户端和服务端,说明mysql
是支持远程连接的。实际上,mysql
设置了两套逻辑——一套是域间套接字,用于本地通信;另一套是基于TCP的网络服务,用于网络通信。
1.1 Mysql结构
mysql
客户端与服务端建立网络连接。mysqld
使用连接池技术进行双端连接的持久化管理,对于网络通信中获得的sql
语句进行解析和优化,然后交由下层特定的数据引擎进行执行(常用的有InnoDB和MyISAM),通过特定数据引擎实现与最底文件系统中磁盘数据的交互。
mysqld
服务端还存在相关缓存,即内存中的一大块空间,当然还有一些其它结构。
2. Mysql 为什么存在
数据的存储,最终都是通过文件存储在磁盘上,亦或是临时存储在内存中,为什么要专门设计mysql进行数据存储呢?
如果我们仅以正常写入文件的方式去写入数据,那么想要进行特定行为的数据查询,是非常复杂耗时的事情。mysql本质也是数据存储,最终数据存储到磁盘上也是文件,只不过mysql自身设计了独特的数据存储方式——数据按照一定形式存储,再按照相应形式,就能快捷地进行某些数据查询行为。
对于一大批数据,存储工作往往是一次的,但是查询却要反复进行——为了通过特定存储形式实现高效查询,mysql的存在毋庸置疑。
3. Mysql下相关概念
3.1 库,表,数据类型
mysql库:
mysql客户端一定要工作在具体的库中。库就是mysql服务端特定路径下,通常是/var/lib/mysql下的目录文件,库中包含表。
mysql表:
表是mysql
中进行数据增删查改操作的直接对象。一般都是对表中数据进行操作,表本质是相应库目录文件中的普通文件。
数据类型:
mysql 表中存储各种数据,不同的数据具有不同的类型,mysql
中有自己的一套数据类型。
mysql数据存储是结构化的,数据查询也是结构化,通常查询数据会以表格形式呈现,即行列结构——column,表示field,即不同属性栏;row,一行则是mysql表中的一个对象的数据。
3.2 mysql操作
mysql中操作,或者说sql语句分为三类:
- DDL:数据定义语言。mysql中用户,库,表结构相关操作。
- DML:数据操纵语言。对表中数据的操作。
- DCL:数据控制语言。对用户进行权限管理的操作。
3.3 mysql索引
mysql
中大部分时候都是在进行查询操作,如何更加高效地查询?
mysql
中引入索引index
,往往与键值(主键或唯一键) 关联,将特定数据的查询由线性遍历优化为常数时间B复杂度下的查询。
索引底层借助B+树实现,查询的高效率,来源于B+树排除非目标数据的高效性。
3.4 mysql事务
mysqld
作为服务端,提供网络服务,支持多客户端同时连接,那么必然存在多客户端同时操作相同数据的情况,即必然存在并发。
mysql
事务概念是为了有效解决并发数据库操作而引入的。
一个完整事务具备四大性质:原子性,一致性,隔离性和持久性。mysql中所有表数据操作,本质都是事务操作,mysql通过锁等机制合理维护了完整事务的四大性质,也就合理解决了并发问题。
mysql事务主要是针对于DML语句,某些DDL语句也会受影响。
3.5 mysql用户管理
mysqld
服务器支持网络服务,允许不同ip
的不同user
进行连接(使用ip + user进行用户管理),所以mysqld
是多用户的,自然要做好用户管理工作。
存在多用户,不同的用户自然可能要给予不同权限,所以mysqld
还要做好用户权限管理。
mysqld
中存在root
超级用户,拥有最高权限。