mysql学习路线
- 简介
- 特点
- 架构
- 目录结构
- 下载地址
- 常用命令总结
- MySql的常用对象
- 存储引擎
- 库
- information_schema
- performance_schema
- mysql
- 库的基操
- 分库
- 表
- 字段
- 索引
- 视图
- 存储过程
简介
mysql是目前最为流行的开源数据库管理系统
特点
特点:
- 1,多用户,多线程充分利用CPU资源
- 2,C和C++编写
- 3,跨平台
- 4,为多种语言提供了丰富的API
- 5,优化Sql查询算法
- 6,即可当做独立应用,也可作为库嵌入至其他软件
- 7,提供丰富的连接途径 TCP/IP ODBC JDBC
- 8,提供用于管理,检查,优化的工具
- 9,轻松处理上千万条记录的大型数据库
架构
目录结构
源码目录
BUILD:里面包含各个平台,各个编译器下进行编译的脚本; CMakeLists.txt:CMake入口编译文件;
client: 客户端工具,所有客户端工具都在这里,比如mysql,mysqlbinlog,mysqladmin,mysqldump等;
cmake:为CMake编译服务的,这里定义了很多在CMake编译时使用的方法或变量; cmd-line-utils:一些小工具;
config.h.cmake:用于生成编译时配置头文件的.cmake文件;
dbug:提供一些调试用的宏定义,可以很好地跟踪数据库执行到的执行函数、运行栈桢等信息,可以定位一些问题;
extra:包含了用来做网络消息认证的SSL包,并提供了comp_err、resolveip等小工具;
include:MySQL代码包含的所有头文件,这里不包括存储引擎的头文件; libbinlogevents:MySQL 5.7
引擎开始新增的、用于解析Binlog的lib服务; libmysql:用来创建嵌入式系统的MySQL客户端API;
libmysqld:MySQL服务器的核心级API文件,也用来开发嵌入式系统; mysql-test:mysqld的测试工具;
mysys:MySQL自己实现的一些常用的数据结构和算法,比如array,list和hash,以及一些区分不同底层操作系统平台的函数封装,比如my_file,my_fopen等函数,这一类型的函数都以my开头;
mysys_ssl:MySQL中SSL相关的服务;
plugin:包括一些系统内置的插件,比如auth,password_validation等,同时包含了可动态载入的插件,比如fulltext,semisync等;
regex:一些关于正则表达式的算法实现;
scripts:包含一些系统工具脚本,比如mysql_install_db,mysqld_safe及mysqld_multi等;
sql:MySQL服务器主要代码,这里包含了main函数(main.cc),将会生成mysqld可执行文件;
sql-common:存放部分服务器端和客户端都会用到的代码;
storage:所有存储引擎的源代码都在这个目录中,文件夹名一般就是其存储引擎的名称,包括innobase,myisam,blackhole,ndb及perfschema等;
strings:包含很多字符串处理的函数,比如strmov,strappend及my_atof等函数;
support-files:my.cnf示例配置文件及编译所需的一些工具; unittest:单元测试文件目录;
vio:虚拟网络IO处理系统,是对不同平台或不同协议的网络通信API的封装; win:在windows平台编译所需的文件和一些说明;
zlib:zlib压缩算法库;
安装目录
1、bin目录
用于放置一些可执行文件,如mysql.exe、mysqld.exe、mysqlshow.exe等。
2、data目录
用于放置一些日志文件以及数据库。
3、include目录
用于放置一些头文件,如:mysql.h、mysql_ername.h等。
4、lib目录
用于放置一系列库文件。
5、share目录
用于存放字符集、语言等信息。
6、my.ini
是MySQL数据库中使用的配置文件。
7、my-huge.ini
适合超大型数据库的配置文件。
8、my-large.ini
适合大型数据库的配置文件。
9、my-medium.ini
适合中型数据库的配置文件。
10、my-small.ini
适合小型数据库的配置文件。
11、my-template.ini
是配置文件的模板,MySQL配置向导将该配置文件中选择项写入到my.ini文件。
12、my-innodb-heavy-4G.ini
表示该配置文件只对于InnoDB存储引擎有效,而且服务器的内存不能小于4GB。
下载地址
官方下载地址
安装教程比较简单,自行百度
常用命令总结
MySQL中有很多的基本命令,show命令也是其中之一,在很多使用者中对show命令的使用还容易产生混淆,本文汇集了show命令的众多用法。
- show tables或show tables from database_name; – 显示当前数据库中所有表的名称。
- show databases; – 显示mysql中所有数据库的名称。
- show columns from table_name from database_name; 或show columns from database_name.table_name; – 显示表中列名称。
- show grants for user_name; – 显示一个用户的权限,显示结果类似于grant 命令。
- show index from table_name; – 显示表的索引。
- show status; – 显示一些系统特定资源的信息,例如,正在运行的线程数量。
- show variables; – 显示系统变量的名称和值。
- show processlist; – 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。
- show table status; – 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间。
- show privileges; – 显示服务器所支持的不同权限。
- show create database database_name; – 显示create database 语句是否能够创建指定的数据库。
- show create table table_name; – 显示create database 语句是否能够创建指定的数据库。
- show engines; – 显示安装以后可用的存储引擎和默认引擎。
- show innodb status; – 显示innoDB存储引擎的状态。
- show logs; – 显示BDB存储引擎的日志。
- show warnings; – 显示最后一个执行的语句所产生的错误、警告和通知。
- show errors; – 只显示最后一个执行语句所产生的错误。
- show [storage] engines; --显示安装后的可用存储引擎和默认引擎。
MySql的常用对象
存储引擎
库
MySQL 库的概念比较简单,主要用于存放表.比较值得深究的是mysql的默认基础库
information_schema
information_schema //信息模式
performance_schema
performance_schema // 性能模式
mysql
mysql // mysql
库的基操
库的基操
分库
表
表基于库,由行和列组成,用于组织和存储数据结构
表的基操
什么是表空间
分库分表
字段
表中的每一个列我们称其为字段,字段具有自己的属性,如大小类型等等;SQL规范支持五种基本字段类型:
字符型
数值型
文本型
逻辑型
时间型
索引
索引是一个单独的,物理的数据库结构,它依赖于表建立,在数据库中索引使数据库无需对整个表进行扫描,就可以再其中找到所需的数据.
视图
视图是从一张或多张表中导出的表,是用户查看数据表中数据的一种方式,表中包括几个被定义的数据列与数据行,其结构和数据建立在对表的查询基础之上.
存储过程
存储过程是一组为了完成特定功能的sql语句集合,例如查询,插入,删除,更新等!经编译后以名称的形式存储在sql server服务端的数据库中,由用户通过指定存储过程的名字执行,当这个存储过程被调用执行时,这些操作也会同时执行.