当前位置: 首页 > article >正文

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


http://www.kler.cn/a/445555.html

相关文章:

  • 未来趋势系列 篇五:自主可控科技题材解析和股票梳理
  • 点击展示大图预览
  • Spring Boot中Bean的 构造器注入、字段注入和方法注入
  • C语言经典100例
  • hive注释comment中文乱码解决
  • 如何利用Python爬虫获得Lazada商品评论列表
  • 网络攻防章节测验
  • 解决QT制作的软件,全屏显示后最小化,点击任务栏图标打开时不是全屏而是窗口状态的问题
  • 【C#】预处理指令
  • 【JAVA】JAVA泛型的<T>一时在前面一时在很后面怎么理解
  • 基于海思soc的智能产品开发(巧用mcu芯片)
  • Mybatis映射关系
  • 【C++】sophus : rxso3.hpp 实现了 3D 空间中的旋转和缩放操作的 RxSO3 类 (二十一)
  • 利用PHP和phpSpider进行图片爬取及下载
  • SpringBoot+Vue3实现阿里云视频点播 实现教育网站 在上面上传对应的视频,用户开会员以后才能查看视频
  • 【信息系统项目管理师】高分论文:论信息系统项目的进度管理(人力资源管理系统)
  • 基于Python3编写的Golang程序多平台交叉编译自动化脚本
  • AlipayHK支付宝HK接入-商户收款(PHP)
  • Java-29 深入浅出 Spring - IoC 基础 启动IoC容器的方式 Java方式与Web(XML、配置)方式
  • 游戏渠道假量解决方案
  • sql-labs 练习笔记
  • 二叉搜索树Ⅱ【东北大学oj数据结构8-2】C++
  • PDFMathTranslate - 基于AI的双语对照 PDF 翻译工具
  • Meta重磅发布Llama 3.3 70B:开源AI模型的新里程碑
  • 如何更改 maven 指定的 java 版本 set JAVA_HOME=C:\Program Files\Java\jdk1.8
  • Unity中对已经烘焙的物体进行复制却没有复制烘焙参数的处理