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.登录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)作用字段
		单列索引:作用单个字段
		复合索引:作用多个字段,使用时从左往右匹配

数据库基础

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)作用字段

单列索引:作用单个字段

复合索引:作用多个字段,使用时从左往右匹配

相关推荐
会飞的爱迪生3 小时前
kalimysql-MHA(无vip漂移版)
mysql·mha
大乔乔布斯9 小时前
MySQL批量删除字段跑路?
数据库·sql·mysql
buyue__10 小时前
MacOS安装MySQL
数据库·mysql
计算机毕设指导610 小时前
基于Springboot林业产品推荐系统【附源码】
java·开发语言·spring boot·后端·mysql·spring·intellij-idea
是十一月末13 小时前
Mysql语法之DQL查询的多行函数
开发语言·数据库·sql·mysql
豪宇刘13 小时前
深入理解 MySQL 索引
数据库·mysql
Dyn's blog13 小时前
MySQL和Oracle的区别
数据库·mysql·oracle
2301_7808538614 小时前
Mysql高级
android·数据库·mysql
阿哈8314 小时前
240004基于ssm+maven+mysql+Java的房屋租赁系统的设计与实现
java·mysql·maven