一、初识MySQL

  数据库(DataBase,DB)是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合,在关系数据库中,数据库表是一系列二维数组的集合。

    • 数据定义语言(DDL):DROP、CREATE、ALTER

    • 数据操作语言(DML):INSERT、UPDATE、DELETE

    • 数据查询语言(DQL):SELECT

    • 数据控制语言(DCL):GRANT、REVOKE、COMMIT、ROLLBACK

1.1、查看MySQL的数据存储位置

ps –ef | grep mysql  
# 脚本
/bin/sh /usr/local/jdy/mysql/bin/mysqld_safe 
# 数据存储文件
--datadir=/data/mysqldata 
--pid-file=/data/mysqldata/s1.pid
mysql      2620   1539  0 Nov29 ?        
00:11:27 /usr/local/jdy/mysql/bin/mysqld 
# 安装路径
--basedir=/usr/local/jdy/mysql 
--datadir=/data/mysqldata 
--plugin-dir=/usr/local/jdy/mysql/lib/plugin 
--user=mysql --log-error=/data/mysqldata/mariadb.log 
--pid-file=/data/mysqldata/s1.pid 
# 网络信息
--socket=/tmp/mysql.sock --port=3306

1.2、存储数据的文件说明

# 创建库
CREATE DATABASE if not exists mysql_test;
# 切换库
use mysql_test;
# 创建存储引擎是InnoDB的表
create table a(id bigint primary key)engine='InnoDB';
# 创建存储引擎是MyIsam的表
create table b(id bigint primary key)engine='MyIsam';
# 查看数据文件结构
ll /data/mysqldata/mysql_test/

  • MyISAM 类型表

    • 对应三个文件:.frm, .MYD, .MYI

  • CSV 类型表

    • 对应三个文件:.frm, .CSV, .CSM

  • InnoDB 类型表

    • 对应文件: .frm, .ibd

  1. *.frm是描述了表的结构,保存了每个表的元数据,包括表结构的定义等,该文件与数据库引擎无关

  2. *.MYD保存了表的数据记录,

  3. *.MYI是表的索引

  4. *.ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per_table = 1)产生的存放该表的数据和索引的文件。

  如果global变量innodb_file_per_table=0或OFF,则不会生成ibd文件,在设置innodb_file_per_table = 1之前创建的innodb表也不会生成ibd文件。是可以通过.frm和ibd文件进行数据恢复的

  innodb如果不按照表存储的话,会将数据存储在 ..../data/ibdata1中

  db.opt 文件是MySQL建库过程中自动生成的,是用来记录该库的默认字符集编码和字符集排序规则用的,如果你创建数据库指定默认字符集和排序规则,那么后续创建的表如果没有指定字符集和排序规则,那么该新建的表将采用db.opt文件中指定的属性。

1.3、mysql逻辑架构介绍

  mysql 插件式的存储引擎架构将查询处理和其他的系统任务以及数据的存储结构提取分离。

    • 连接层:最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类型tcp/ip的通信。主要完成一些类似连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全连接。服务器也会在安全接入的每个客户端验证它所具备的操作权限。

    • 服务层:第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询。SQL的分析和优化及部分内置函数的执行,所有跨存储引擎的功能也在这一层实现,如过程,函数等,在该层服务器会解析查询并创建相应的内部解析树。并对其完成相应的优化,如确定查询表的顺序,是否利用索引等,最后生成相应的执行操作,如select语句,服务器还会查询内部的缓存,如缓存空间大小,这样在解决大量读操作环境中能够很好的提升系统的性能。

    • 引擎层:存储引擎层,存储引擎真正的负责mysql中数据的存储和提取,服务器通过API与存储引擎进行通信,不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取。

    • 存储层:数据存储层,主要是将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互。

1.4、常见命令

  • 启动mysql服务

net start mysql
service mysql start
  • 关闭mysql服务

net stop mysql
service mysql stop
  • 登录mysql

mysql -h localhost -P 3306 -u root -p
  • 退出mysql

exit
  • 展示所有数据库

show databases;
  • 切换收据库

use test;
  • 查看其他数据库的表

show tables from mysql;
  • 查看当前所在库

select database();
  • 查看表结构

desc table_name
  • 查看版本

select version()
原文地址:https://www.cnblogs.com/jdy1022/p/14023104.html