![](https://img-blog.csdnimg.cn/20190328094740243.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
面试mysql知识点
mysql得知识不是一天得来的,是一步一步积攒出来得。此专栏是博主在工作中和学习中得总结。
韩淼燃
最近在更新运维专栏。欢迎大家来点赞,关注。
展开
-
一条 SQL 引发的事故,同事直接被开除!!
壹dashuju前 言Insert into select请慎用。这天xxx接到一个需求,需要将表A的数据迁移到表B中去做一个备份。本想通过程序先查询查出来然后批量插入。但xxx觉得这样有点慢,需要耗费大量的网络I/O,决定采取别的方法进行实现。通过在Baidu的海洋里遨游,他发现了可以使用insert into select实现,这样就可以避免使用网络I/O,直接使用SQL依靠数据库I/O完成,这样简直不要太棒了。然后他就被开除了。贰dashuju事故发生的...原创 2021-05-13 10:47:15 · 108 阅读 · 0 评论 -
haproxy给mysql做负载均衡
一、首先安装haproxywget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gztar zcvf haproxy-1.4.24.tar.gzcd haproxy-1.4.24make TARGET=linux26 PREFIX=/usr/local/haproxy #将haproxy安装到/usr/loca...原创 2020-02-13 17:17:38 · 285 阅读 · 0 评论 -
mysql数据移植
1.在其它机器上首先安装好需要的mysql 和对应的管理软件(设置的密码和源数据库密码一致)2.将源机器上data下的数据库文件夹(以我的机器为例,就是rubberFactory文件夹,其中,这个文件夹下的数据文件都是一些表结构定义)拷贝到目标机器data下。3. 停止mysql服务,将ibdata1这个文件拷贝到data文件夹下,覆盖原来的ibdata1文...原创 2019-07-15 13:13:19 · 931 阅读 · 0 评论 -
mysql添加字段命令
1) 加索引mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);例子: mysql> alter table employee add index emp_name (name);2) 加主关键字的索引mysql> alter table 表名 add primary key (字段...原创 2019-07-15 13:08:14 · 3372 阅读 · 0 评论 -
mysql客户端连接服务器出错
问题:连接被拒绝,是因为用户root没有访问的权限,也就是连接外部的权限解决办法:给用户root赋予权限首先进入mysql数据库'123'是密码,如果数据库是空密码登录,那'123'改为''@后面的%它的作用是所有ip都可以连接grant all privileges on *.* to 'root'@'%' identified by '' with grantQue...原创 2019-07-11 09:49:16 · 244 阅读 · 0 评论 -
mysql的存储引擎
InnoDB提供了具有提交、回滚和崩溃恢复能力的事务安全。处理效率低,占用磁盘空间多,保存数据和索引Myisam是mysql的默认引擎,不支持事物,也不支持外键,但是访问速度快Memory与MYISAM访问速度相当,但是MEMORY的数据重启mysql服务后数据被丢失Merge一组MyISAM表的组合,这些MyISAM表必须结构完全相同。MERGE表本身没有数据,对ME...原创 2019-07-11 09:47:52 · 102 阅读 · 0 评论 -
mysql 性能优化方案
Qcache_hits:每次查询在缓存中命中时就增大Qcache_inserts:每次插入一个查询时就增大。命中次数除以插入次数就是不中比率。Qcache_lowmem_prunes:缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的 free_blocks和free_memory可...原创 2019-07-09 08:59:40 · 175 阅读 · 0 评论 -
数据库索引,到底是什么做的?
问题1. 数据库为什么要设计索引?图书馆存了1000W本图书,要从中找到《架构师之路》,一本本查,要查到什么时候去?于是,图书管理员设计了一套规则:(1)一楼放历史类,二楼放文学类,三楼放IT类…(2)IT类,又分软件类,硬件类…(3)软件类,又按照书名音序排序…以便快速找到一本书。与之类比,数据库存储了1000W条数据,要从中找到name=”shenjian”的记录,...原创 2019-07-04 13:25:24 · 209 阅读 · 0 评论 -
MySQL 中NULL和空值的区别
NULL和空值NULL也就是在字段中存储NULL值,空值也就是字段中存储空字符('')。1、占用空间区别mysql> select length(NULL), length(''), length('1');+--------------+------------+-------------+| length(NULL) | length('') | length('1'...原创 2019-07-04 13:12:50 · 494 阅读 · 0 评论 -
MySQL5.7 添加用户、删除用户与授权
mysql -uroot -prootMySQL5.7 mysql.user表没有password字段改authentication_string;一. 创建用户:命令:CREATE USER'username'@'host' IDENTIFIED BY 'password';例子: CREATE USER'dog'@'localhost' IDENTIFIED BY '12...原创 2019-06-21 15:15:38 · 99 阅读 · 0 评论 -
关于sql和MySQL的语句执行顺序(必看!!!)
ql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。一、sql执行顺序(1)from(3) join(2) on(4) where(5)group by(开始使用select中的别名,后面的语句中都可以使用)(6) avg,sum....(7)having(8) select(9) distinct(10) order by从这个...原创 2019-04-25 17:17:35 · 376 阅读 · 2 评论 -
Mysql第四课--事务
1>事务是指逻辑上的一组操作,组成这组操作的各个单元,要不全成功要不全失败。 - 支持连续SQL的集体成功或集体撤销。 - 事务是数据库在数据执行方面的一个功能。 - 需要利用 InnoDB 或 BDB 存储引擎,对自动提交的特性支持完成。 - InnoDB被称为事务安全型引擎。-- 事务开启 START TRANSACTION; 或者 BEGIN;...原创 2019-09-16 10:12:35 · 233 阅读 · 0 评论 -
Mysql第三课--备份、还原、视图
1.备份与还原(备份,将数据的结构与表内数据保存起来。利用 mysqldump 指令完成。)-- 导出mysqldump [options] db_name [tables]mysqldump [options] ---database DB1 [DB2 DB3...]mysqldump [options] --all--database1. 导出一张表mysqldump -u用户名...原创 2019-09-16 10:04:33 · 284 阅读 · 0 评论 -
Mysql第二课--建表规范
mysql建表需要遵守三范式:-- Normal Format, NF - 每个表保存一个实体信息 - 每个具有一个ID字段作为主键 - ID主键 + 原子表 -- 1NF, 第一范式 字段不能再分,就满足第一范式。 -- 2NF, 第二范式 满足第一范式的前提下,不能出现部分依赖。 ...原创 2019-09-16 09:58:06 · 225 阅读 · 0 评论 -
Mysql第一课--基本操作
1.基本操作a.登录mysql mysql -uroot -proot -h127.0.0.1 -p33062.数据库的操作a.查看当前数据库show databases;b.显示当前时间、用户名、数据库版本SELECT now(), user(), version();c.创建库create database hello default character set utf...原创 2019-09-16 09:27:58 · 178 阅读 · 0 评论 -
原生php与mysql查询最近一条修改的行数,mysql_affected_rows()函数的使用
原创 2019-12-25 10:17:23 · 338 阅读 · 0 评论 -
原生php与mysql插入数据时,防止sql注入,使用mysql_real_escape_string()
原创 2019-12-25 10:00:15 · 450 阅读 · 0 评论 -
mysql中int(1)和int(11)区别详解
mysql字段定义中INT(x)中的x仅仅指的是显示宽度。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。所以x的定义与存储空间没有任何关系都是4个字节。作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。...原创 2019-04-01 08:50:48 · 8681 阅读 · 0 评论 -
MySQL查询执行路径
1. 客户端发送一条查询给服务器; 2. 服务器先会检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果。否则进入下一阶段; 3. 服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划; 4. MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询; 5. 将结果返回给客户端。 查询缓存(query cache)...原创 2019-04-01 08:50:29 · 3281 阅读 · 0 评论 -
MySQL查看和修改表的存储引擎
1 查看系统支持的存储引擎 show engines;2 查看表使用的存储引擎两种方法:a、show table status from db_name where name='table_name';b、show create table table_name;如果显示的格式不好看,可以用\g代替行尾分号有人说用第二种方法不准确(http://guan...原创 2019-03-31 15:01:47 · 239 阅读 · 0 评论 -
mysql事务处理用法与实例详解
MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID事务、行级锁、并发 3.Berkeley DB:支持事务一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行。换言之,永远不会是完整的事务,除非该组内的每个单独的操作是成功的。如果在事务的任何操作失败,则整个事务将失败。...原创 2019-03-31 13:07:04 · 355 阅读 · 0 评论 -
MySQL事务介绍及原理
1 为什么要事务 事务是一组不可被分割执行的SQL语句集合,如果有必要,可以撤销。银行转账是经典的解释事务的例子。用户A给用户B转账5000元主要步骤可以概括为如下两步。 第一,账户A账户减去5000元; 第二,账户B账户增加5000元; 这两步要么成功,要么全不成功,否则都会导致数据不一致。这就可以用到事务来保证,如果是不同银行之间的转账还...原创 2019-03-31 13:06:10 · 340 阅读 · 0 评论 -
常用的Mysql数据库操作语句大全
零、用户管理: 1、新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2、更改密码: >SET PASSWORD FOR name=PASSWORD('fdddfd'); 3、权限管理 >SHOW GRANTS FOR name; /...原创 2019-03-31 13:05:15 · 396 阅读 · 0 评论 -
MYSQL explain详解
xplain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 虽然这篇文章我写的很长,但看起来真的不会困啊,真的都是干货啊!!!! 先解析一条sql语句,看出现什么内容 EXPLAINSELECTs.uid,s.username,s.name,f.email,f.mobile,f.phone,f.pos...原创 2019-03-29 20:32:17 · 183 阅读 · 0 评论 -
【mysql】count(*),count(1)与count(column)区别
ount(*)对行的数目进行计算,包含NULLcount(column)对特定的列的值具有的行数进行计算,不包含NULL值。count()还有一种使用方式,count(1)这个用法和count(*)的结果是一样的。性能问题1.任何情况下SELECT COUNT(*) FROM tablename是最优选择;2.尽量减少SELECT COUNT(*) FROM tablename W...原创 2019-03-28 10:24:00 · 251 阅读 · 0 评论 -
MySql5.5数据库日志配置方法
1. 先创建保存日志的文件夹(如在E:盘根目录下创建名为mysql-logs的日志文件夹)2. 在mysql安装文件下找到my.ini,打开后找到[mysqld]字段,在下面空白处添加下列内容:log-error="E:/mysql-logs/error.log" # 错误日志 log="E:/mysql-logs/mysql.log"...原创 2019-03-28 09:52:51 · 768 阅读 · 0 评论 -
Mysql存储过程之简单使用
基础查询首先创建一张students学生表,增加字段与插入数据如下创建不带参数的存储过程查看学生个数DROPPROCEDUREIFEXISTSselect_students_count;--没有括号()DELIMITER ;;CREATEPROCEDURE`select_students_count`()BEGINSELECTcount(id...原创 2019-03-28 09:49:45 · 149 阅读 · 0 评论 -
Mysql笔记-事务
事务事务(Transaction)会把数据库从一种一致状态转换为另一种一致状态。在数据库提交工作时,要么所有修改都已经保存了,要么修改都不保存。事务是访问并更新数据库中各种数据项的一个程序执行单元。在执行中要么都做修改,要么都不做修改。InnoDB存储引擎中的事务完全符合ACID的特性。l 原子性(atomicity)原子性是指整个数据库事务是不可分割的工作单元。只有使事务中...原创 2019-03-28 09:45:10 · 129 阅读 · 0 评论 -
Mysql学习-索引总结(B-tree和hash、主键索引、唯一索引、普通索引、全文索引和组合索引)
常用的两种索引结构:B-tree和HASHB-treeB-tree索引能够加快访问数据的速度,因为存储引擎不再需要经行全表扫描来获取需要的数据,取而代之的是从根节点开始搜索。根节点的槽中存放了指向子节点的指针,存储引擎根据这些指针向下查找。通常比较节点页的值和要查找的值可以找到合适的指针进入下层子节点。B-tree通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同。...原创 2019-03-28 09:28:08 · 608 阅读 · 0 评论 -
详解PHPStudy集成环境升级MySQL数据库版本
phpstudy是一个很不错的集成开发环境,提供了很多PHP和Apache、nginx等web服务器各个版本之间的组合。但是,美中不足,phpstudy直至2018版本,其中使用的mysql一直都是5.5版本,而且没有提供设置和升级的地方。很多人都疑惑该如何升级数据库,而且百度搜索中的大部分方法都很复杂而且不是很实用。下面我就把我升级至mysql5.7.18的过程晒出来,跟大家分享。1.从my...原创 2019-03-28 09:54:42 · 658 阅读 · 0 评论 -
MySQL replace into 用法(insert into 的增强版)
MySQL replace into 用法(insert into 的增强版)在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。在 SQL Server 中可以这样处理:if not exists (select 1 from t where id = 1) insert into t(id, update_tim...原创 2019-03-27 09:01:18 · 250 阅读 · 0 评论 -
慢查询日志分析
打开慢查询日志慢查询日志,顾名思义就是记录执行比较慢查询的日志。查看是否开启慢查询日志:show variables like'%slow%';打开慢查询日志。修改MySQL的配置文件my.cn一般是在/etc目录下面,加上下面三行配置后重启MySQL。slow_query_log =ONslow_launch_time=2slow_query_log_file=...原创 2019-03-26 11:24:56 · 473 阅读 · 0 评论 -
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 创建用户: mysql> insert into mysql.user(Host,User,Password) values("...原创 2019-03-25 08:52:01 · 156 阅读 · 0 评论 -
mysql命令行备份数据库
MySQL数据库使用命令行备份|MySQL数据库备份命令例如:数据库地址:127.0.0.1数据库用户名:root数据库密码:pass数据库名称:myweb备份数据库到D盘跟目录mysqldump-h127.0.0.1-uroot-ppass myweb>d:/backupfile.sql备份到当前目录 备份MySQL数据库为带删除表的格式,...原创 2019-03-25 08:51:03 · 318 阅读 · 0 评论 -
MySQL的if,case语句使用总结
Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用:IF表达式IF(expr1,expr2,expr3)如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而...原创 2019-03-24 21:56:05 · 231 阅读 · 0 评论 -
Mysql中的MVCC
Mysql到底是怎么实现MVCC的?这个问题无数人都在问,但google中并无答案,本文尝试从Mysql源码中寻找答案。 在Mysql中MVCC是在Innodb存储引擎中得到支持的,Innodb为每行记录都实现了三个隐藏字段:6字节的事务ID(DB_TRX_ID) 7字节的回滚指针(DB_ROLL_PTR) 隐藏的ID6字节的事物ID用来标识该行所述的事务,7字节的回滚指...原创 2019-03-24 21:31:45 · 131 阅读 · 0 评论 -
关于mysql archive存储引擎
政府还有一个让数据库专家摊上更多事情的职能,就是安全控制和数据审计。那些管理着海量数据仓库的企业官员常常得回答诸如“何人何时修改了什么”或者“何人何时查看了什么”这样的提问。那些拥有数以千计的员工,开展着不计其数的业务的企业,每天都会产生出大量的日志记录数据,而且必须将其好好保存。为了帮助数据库专家应对数据爆炸的挑战,MySQL5.0引入了一种新的数据存储引擎,叫做Archive。这个先进的数据管...原创 2019-03-24 21:28:57 · 1101 阅读 · 0 评论 -
关于将EXCEL文件导入到MYSQL数据库的一些方法
现在我来介绍一下如何利用phpMyAdmin批量导入Excel内容到MySQL。首先你要知道phpMyAdmin是什么(不知道的这篇文章可以跳过了),我今天用的版本是phpMyAdmin 3.2.4,MySQL的版本是5.1.41。1、第一步我们得到了一个excel表,里面有很多需要我们导入的数据。2、删除第1行"准考证号""XXX"....只保留我们需要的数据部分。3...原创 2019-03-24 21:28:16 · 296 阅读 · 0 评论 -
Mysql的存储引擎之:CSV存储引擎
CSV存储引擎是基于CSV格式文件存储数据的。建立CSV存储引擎的表建立一个基于csv存储引擎的表table_csv(注意字段要非空)[sql]view plaincopyprint?mysql>createtabletable_csv(idintnotnull,namevarchar(10)notnull)engine=csv; ...原创 2019-03-24 21:27:25 · 1148 阅读 · 0 评论 -
数据库设计三大范式
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。在实际开发中最为常见的设计范式有三个:1.第一范式(确保每列保持原子性)第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库...原创 2019-03-24 21:26:35 · 219 阅读 · 0 评论