mysql数据库面试核心概念
数据库基础
1.数据库分类
2.配置文件位置
3.修改密码
4.破解数据库密码
5.慢日志:sql语句的执行时间
6.数据类型
7.导入导出数据
8.truncate和delete
9.事务:一组sql要么全部执行.要么全部不执行
10.mysql的架构
11.范式
12.索引:加速查询数据1.分类关系型数据库:1.数据持久化存储2.结构化存储:字段,表的形式3.数据与表之间建立关联关系非关系型数据库:1.数据灵活存储2.数据存储内存2.配置文件主配置文件/etc/my.cnf扩展配置文件/etc/my.cnf.d/client.cnf:客户端配置文件/etc/my.cnf.d/mysql-server.cnf:服务端配置文件[mysqld]datadir=/var/lib/mysql #存储地址socket=/var/lib/mysql/mysql.sock #本机通信log-error=/var/log/mysql/mysqld.log #日志pid-file=/run/mysqld/mysqld.pid #pid/etc/my.cnf.d/mysql-default-authentication-plugin.cnf:指定加密规则文件3.修改密码1.登录mysqlmysql -hlocalhost -P3306 -uroot -p;-h:指定地址,-P:端口,-u:用户,默认有个root用户,-p:密码2.设置和修改库密码设置:mysqladmin -uroot -p password 'tarena';修改:mysqladmin -uroot -p'tarena' password 'root';4.破解数据库密码1.配置文件/etc/my.cnf.d/mysql-server.cnf添加skip_grant_tables重启:systemctl restart mysql2.更新密码update mysql.user set authentication_string="" where user="root" and host="localhost";3.删除配置文件的:skip_grant_tables,重启服务5.慢日志:sql语句的执行时间show variables like "%slow_query_log":查询变量slow_query_log:开启慢日志参数long_query_time:10m, sql执行时间超过几秒被记录到日志慢日志的配置:/etc/my.cnf.d/mysql-server.cnf[mysqld]slow_query_log = 1slow_query_log_file = /path/to/your/slow_query.loglong_query_time = 2 # 设置慢查询的时间阈值,单位为秒6.数据类型(1)char(字符数),varchar(字符数)区别char:定义多少存多少,空格补齐,最多存255个字符varchar:定义多少存多少,最多存65532个字符(2)整型范围:数字的实际大小unsigned:从正数开始计数(3)float,double:分别为4,8个字节(4)枚举类型分为,ENUM,SETENUM:适用单个值字段。:选择其中的一个值存入SET:适用多个值的字段。:选择多个值存入7.导入导出数据1.查询mysql的系统变量show variables like "secure_file_priv"; 默认目录是:/var/lib/mysql-files/:secure_file_priv 是一个系统变量:MySQL 服务器将只允许SELECT ... INTO OUTFILE 和 LOAD_FILE() 这些操作中使用该目录下的文件。2.修改配置文件/etc/my.cnf.d/mysql-server.cnf,更改默认目录路径secure_file_priv=/myload 3.导入导出语法导入:导入文件的列数要和表的字段相同load data infile "/目录/文件" into table 库.表 \fields terminated by "分隔符" \lines terminated by "\n";--fields:原始文件列的分隔符, lines:指定换行符导出:select 语句 into outfile "/目录/文件名"fields terminated by "分隔符" lines terminated by "\n";8.truncate和delete与 DELETE 语句不同,TRUNCATE 不会逐行删除数据,而是直接释放表所占用的空间并重置表。TRUNCATE 会将表中的自增列重置为其起始值(通常是1)。9.事务:一组sql要么全部执行.要么全部不执行(1)默认自己提交commit,修改变量,改为不自动提交SHOW VARIABLES LIKE 'autocommit';使用SET autocommit = 0;或SET autocommit = OFF;来关闭自动提交模式。使用SET autocommit = 1;或SET autocommit = ON;来开启自动提交模式。(2)取消内存执行的代码,rollback回滚,回滚后数据不写入硬盘性质: 原子,一致,隔离,持久10.mysql的架构客户端连接池管理工具 sql接口 解析器 查询优化器 缓存(图片资源)存储引擎(内存数据写入硬盘)InnoDB,MyISAM,MEMORY系统文件与日志(2)查看存储引擎show engines(3)查看存储引擎的变量show variables like "%engine%";11.范式(1)范式规范1NF:字段不可再分2NF:每个字段都直接依赖主键,否则拆分为多个表格3NF:某个字段的值如果可以通过其它字段求出或确定,则不单独作为一个字段存储.12.索引:加速查询数据分类:(1)作用效果:针对字段值普通索引:index唯一索引:unique主键:primary key(2)存储形式聚簇索引:数据和索引在一起非聚簇索引:(3)数据结构树形索引:btree,b+tree 哈希索引:hash全文索引:fulltext空间索引:(4)作用字段单列索引:作用单个字段复合索引:作用多个字段,使用时从左往右匹配
数据库基础
1.数据库分类
2.配置文件位置
3.修改密码
4.破解数据库密码
5.慢日志:sql语句的执行时间
6.数据类型
7.导入导出数据
8.truncate和delete
9.事务:一组sql要么全部执行.要么全部不执行
10.mysql的架构
11.范式
12.索引:加速查询数据
1.分类
关系型数据库:
1.数据持久化存储
2.结构化存储:字段,表的形式
3.数据与表之间建立关联关系
非关系型数据库:
1.数据灵活存储
2.数据存储内存
2.配置文件
主配置文件
/etc/my.cnf
扩展配置文件
/etc/my.cnf.d/client.cnf:客户端配置文件
/etc/my.cnf.d/mysql-server.cnf:服务端配置文件
[mysqld]
datadir=/var/lib/mysql #存储地址
socket=/var/lib/mysql/mysql.sock #本机通信
log-error=/var/log/mysql/mysqld.log #日志
pid-file=/run/mysqld/mysqld.pid #pid
/etc/my.cnf.d/mysql-default-authentication-plugin.cnf:指定加密规则文件
3.修改密码
1.登录mysql
mysql -hlocalhost -P3306 -uroot -p;
-h:指定地址,-P:端口,-u:用户,默认有个root用户,-p:密码
2.设置和修改库密码
设置:
mysqladmin -uroot -p password 'tarena';
修改:
mysqladmin -uroot -p'tarena' password 'root';
4.破解数据库密码
1.配置文件/etc/my.cnf.d/mysql-server.cnf添加
skip_grant_tables
重启:
systemctl restart mysql
2.更新密码
update mysql.user
set authentication_string=""
where user="root" and host="localhost";
3.删除配置文件的:skip_grant_tables,重启服务
5.慢日志:sql语句的执行时间
show variables like "%slow_query_log":查询变量
slow_query_log:开启慢日志参数
long_query_time:10m, sql执行时间超过几秒被记录到日志
慢日志的配置:/etc/my.cnf.d/mysql-server.cnf
[mysqld]
slow_query_log = 1
slow_query_log_file = /path/to/your/slow_query.log
long_query_time = 2 # 设置慢查询的时间阈值,单位为秒
6.数据类型
(1)char(字符数),varchar(字符数)区别
char:定义多少存多少,空格补齐,最多存255个字符
varchar:定义多少存多少,最多存65532个字符
(2)整型
范围:数字的实际大小
unsigned:从正数开始计数
(3)float,double:分别为4,8个字节
(4)枚举类型分为,ENUM,SET
ENUM:适用单个值字段。:选择其中的一个值存入
SET:适用多个值的字段。:选择多个值存入
7.导入导出数据
1.查询mysql的系统变量
show variables like "secure_file_priv"; 默认目录是:/var/lib/mysql-files/
:secure_file_priv 是一个系统变量:MySQL 服务器将只允许SELECT ... INTO OUTFILE 和 LOAD_FILE() 这些操作中使用该目录下的文件。
2.修改配置文件/etc/my.cnf.d/mysql-server.cnf,更改默认目录路径
secure_file_priv=/myload
3.导入导出语法
导入:导入文件的列数要和表的字段相同
load data infile "/目录/文件" into table 库.表 \
fields terminated by "分隔符" \
lines terminated by "\n";
--fields:原始文件列的分隔符, lines:指定换行符
导出:
select 语句 into outfile "/目录/文件名"
fields terminated by "分隔符"
lines terminated by "\n";
8.truncate和delete
与 DELETE 语句不同,TRUNCATE 不会逐行删除数据,而是直接释放表所占用的空间并重置表。
TRUNCATE 会将表中的自增列重置为其起始值(通常是1)。
9.事务:一组sql要么全部执行.要么全部不执行
(1)默认自己提交commit,修改变量,改为不自动提交
SHOW VARIABLES LIKE 'autocommit';
使用SET autocommit = 0;或SET autocommit = OFF;来关闭自动提交模式。
使用SET autocommit = 1;或SET autocommit = ON;来开启自动提交模式。
(2)取消内存执行的代码,rollback回滚,回滚后数据不写入硬盘
性质: 原子,一致,隔离,持久
10.mysql的架构
客户端
连接池
管理工具
sql接口 解析器 查询优化器 缓存(图片资源)
存储引擎(内存数据写入硬盘)InnoDB,MyISAM,MEMORY
系统文件与日志
(2)查看存储引擎
show engines
(3)查看存储引擎的变量
show variables like "%engine%";
11.范式
(1)范式规范
1NF:字段不可再分
2NF:每个字段都直接依赖主键,否则拆分为多个表格
3NF:某个字段的值如果可以通过其它字段求出或确定,则不单独作为一个字段存储.
12.索引:加速查询数据
分类:
(1)作用效果:针对字段值
普通索引:index
唯一索引:unique
主键:primary key
(2)存储形式
聚簇索引:数据和索引在一起
非聚簇索引:
(3)数据结构
树形索引:btree,b+tree
哈希索引:hash
全文索引:fulltext
空间索引:
(4)作用字段
单列索引:作用单个字段
复合索引:作用多个字段,使用时从左往右匹配