一,概述 1,作用 主要用户操作处理量大,复杂度高的数据。要保证sql语句,要么全执行,要么全不执行,但它必须要满足四个条件:原子性,一致性,隔离性,持久性。...事务有两种处理方法 【用 BEGIN, ROLLBACK, COMMIT来实现】 BEGIN 开始一个事务 ROLLBACK 事务回滚 COMMIT 事务确认 【直接用 SET 来改变 MySQL...的自动提交模式】 SET AUTOCOMMIT=0 禁止自动提交 SET AUTOCOMMIT=1 开启自动提交 二,代码 1,shell中对mysql的使用 BEGIN ; insert into...2,php中对mysql的使用 <?...utf8"); mysqli_select_db( $conn, 'RUNOOB' ); mysqli_query($conn, "SET AUTOCOMMIT=0"); // 设置为不自动提交,因为MYSQL
安装完mysql以后,在桌面上可以找到mysql自带的mysql command line client(命令行客户端),点击它,之后输入自己的密码,就进去了!...马克-to-win:但如果有时进不去,可能你的mysql服务器没有启动。你可以到控制面板/管理工具/服务:找到mysql,右键点击它,选中启动。mysql就启动了!
UNION的使用 合并查询结果 利用UNION关键字,可以给出多条SELECT语句,并将它们的结果组合成单个结果集。合并时,两个表对应的列数和数据类型必须相同,并且相互对应。...各个SELECT语句之间使用UNION或UNION ALL关键字分隔。 语法格式: SELECT column,......FROM table2 UNION操作符 [在这里插入图片描述] UNION 操作符返回两个查询的结果集的并集,去除重复记录。...UNION ALL操作符 [在这里插入图片描述] UNION ALL操作符返回两个查询的结果集的并集。对于两个结果集的重复部分,不去重。...注意:执行UNION ALL语句时所需要的资源比UNION语句少。如果明确知道合并数据后的结果数据不存在重复数据,或者不需要去除重复的数据,则尽量使用UNION ALL语句,以提高数据查询的效率。
student表的字段有id,name,class,number score表中的字段有number,chinese,math,english 创建表 create table student(`id`...table score(`number` char(40),`chinaese` char(40),`math` char(40),`english` char(40)); image.png 当前的表...= b.number; 这样就将两张表连接到了一起 image.png 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/1064.html 按照知识共享署名-非商业性使用
从逻辑上说,该语句与用于删除所有行的DELETE语句等同,但是在有些情况下,两者在使用上有所不同。...对于InnoDB表,如果有需要引用表的外键限制,则TRUNCATE TABLE被映射到DELETE上;否则使用快速删减(取消和重新创建表)。...对于其它存储引擎,在MySQL 5.1中,TRUNCATE TABLE与DELETE FROM有以下几处不同: TRUNCATE不可以使用where删除特定的记录。...只要表定义文件tbl_name.frm是合法的,则可以使用TRUNCATE TABLE把表重新创建为一个空表,即使数据或索引文件已经被破坏。...表管理程序不记得最后被使用的AUTO_INCREMENT值,但是会从头开始计数。 即使对于MyISAM和InnoDB也是如此。MyISAM和InnoDB通常不再次使用序列值。
这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引 key_len:使用的索引的长度...在不损失精确性的情况下,长度越短越好 ref:显示索引的哪一列被使用了,如果可能的话,是一个常数 rows:MYSQL认为必须检查的用来返回请求数据的行数 Extra:关于MYSQL如何解析查询的额外信息...for each Record(index map:#):没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。...这是使用索引的最慢的连接之一 Using filesort: 看到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。...因为只有一行,这个值实际就是常数,因为MYSQL先读这个值然后把它当做常数来对待 eq_ref:在连接中,MYSQL在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用
安装mysql服务器的时候,我们将用户身份切换为root,安装好之后普通用户也是可以通过MySQL命令行式的客户端来访问mysqld服务,初期学习MySQL的时候建议直接使用root的身份来进行学习,快速上手基本的...ls /var/lib/mysql中的内容是上一个mysql数据库中所残留的数据,MySQL服务在卸载的时候,默认不会将数据删除掉,这些数据我们可以不用管,他们并不影响我们后续MySQL服务的安装和使用...(5)现在我们就可以使用yum命令一键安装mysql服务了,使用sudo yum install -y mysql-community-server,此时yum就会按照自己的yum源自动的帮我们一键安装...至此为止,我们就搞定了MySQL的登录问题,但还差一件事就是配置my.cnf文件,主要配置的是MySQL客户端和服务端的编码格式,我们统一使用utf8的编码格式,保证客户端和服务端使用的编码是一致的。...通过show engines就可以看到我们当前的MySQL服务使用的默认的存储引擎就是我们当时在my.cnf中配置好的InnoDB存储引擎,除InnoDB外,另一个常用的存储引擎就是MyISAM,我们主要学习和使用的是
一、MySQL基本查询 1.对表内容进行Create(增加) 1.1 insert语句的使用 1. 之前我们所学的都是DDL语句,接下来所学的才是真正的DML语句。...实际中非常不建议使用全列查询,因为这需要显示表的所有数据,而部分的数据可能此时并不在内存中,则mysqld服务还需要磁盘IO来加载表的剩余数据,降低MySQL查询的性能,同时全列查询还无法使用索引来优化查询过程...除此之外,实际公司使用的MySQL数据库,存储的数据最少也几百万条记录打底,一旦全列查询,则查询结果会疯狂刷屏到显示器上,看也没法看,而且还有可能导致mysqld服务卡死,所以平常我们自己敲一些简单的数据库...MySQL一定是不支持的。...4.其他函数 下面是MySQL中一些常见的其他函数,可以自己看一下使用案例。
这个时候如果MySQL使用的是InnoDB引擎,那么在数据库恢复后或是重新通电后,会执行崩溃恢复,就是未执行完的事务会继续执行,该回滚的回滚,该执行完的执行完,能确保数据的一致性。...但是如果MySQL是使用的MyISAM引擎,那么首先MyISAM不支持事务,所以会造成数据的不一致性,而且如果在对表进行操作时断电,导致没有正确的关闭表,还会导致存储文件的损坏,在恢复通电后对这张表的任何读写操作都不能执行了...尽量避免使用TEXT\BLOB等类型的大字段。 拆分大字段和访问频率低的字段,分离冷热数据。 不同的业务使用不同的数据库,禁止混合使用。...目前的MySQL确实是有最左前缀的规则,即a_b_c索引,查询b和c时不走联合索引,但是随着MySQL的不断发展,现在又出现了一种叫做“索引下推”的概念,虽然不是代表着b和c使用时就能走索引了,但是看趋势可能以后会出现这种优化...高效SQL开发 SQL优化--设计基本原则 SQL尽可能简单,线上尽可能少使用大SQL,使用简单小SQL。 尽可能少使用存储过程/触发器/函数,减少MySQL端的数学运算和逻辑判断。
环境 macOS 10.13.2 docker 17.12.0 mysql镜像版本 5.7.21 确保docker运行 安装mysql镜像 到官网查看mysql镜像相关信息,使用docker指令pull...-e 为设置执行时的环境变量,在这里我设置mysql的root密码,相关变量可参考官网 -d 为设置镜像,镜像名:版本 完成后使用docker命令ps查看是否成功运行 docker ps 1 使用终端登录数据库...sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -p' 1 -it 使用交互模式 –link 连接运行的容器 mysql.5.7.21 为之前首次运行时创建的容器名...:5.7.21 --format "{{.ID}}") 1 $() 可获取一条指令的返回值,指令为获取运行镜像mysql:5.7.21容器的ID 再次运行容器 先查看有哪些已存在的容器,并使用...ID启动容器 docker ps -a 1 2 启动 docker start 60a4f6de39c2 1 使用cli登录同上一节第二个指令 导出数据 导出创建的数据库test 要保持mysql
其实python带的SQLite还是很方便使用的,但是SQLite不支持远程访问。 python使用mysql,需要安装 MySQLdb 模块。...总体感觉操作还是比较简单的。遇到其他再重新整理。...%s)' param = ('The Shawshank Redemption', 9.6, 1994) n = cursor.execute(sql, param) # 会返回执行操作的条数
删除 mysql sudo apt-get autoremove --purge mysql-server-5.0 sudo apt-get remove mysql-server sudo apt-get...autoremove mysql-server sudo apt-get remove mysql-common //这个很重要 上面的其实有一些是多余的。...sudo apt-get install mysql-client-core-5.7 安装MySQL Client sudo apt-get install mysql-client-5.7...安装MySQL Server sudo apt-get install mysql-server-5.7 检查mysql是否启动 查看mysql进程是否运行 ps -ef | grep mysql...mysql stop Mysql 服务启动 service mysql start Mysql 服务重启 service mysql restart Mysql 服务远程访问 注释绑定127.0.0.1
今天无意间发现mysql的coalesce, coalesce()解释:返回参数中的第一个非空表达式(从左向右依次类推); 使用示例:a,b,c三个变量。...Return 2 select coalesce(null,null,3); // Return 3 select coalesce(1,2,3); // Return 1 通过上面例子可以看出,他的作用是将返回传入的参数中第一个非...null的值,再比如 SELECT COALESCE(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1); -- Return 1 如果传入的参数所有都是...null,则返回null,比如 SELECT COALESCE(NULL, NULL, NULL, NULL); -- Return NULL 这个参数使用的场合为:假如某个字段默认是null,...你想其返回的不是null,而是比如0或其他值,可以使用这个函数 SELECT COALESCE(字段名,0) as value from t;//(如果数据库提成字段默认值不是为0值的话肯定是开发那个的错
数据操作语言:聚合函数 什么是聚合函数 聚合函数在数据的查询分析中,应用十分广泛。聚合函数可以对 数据求和、求 最大值 和 最小值 、求 平均值 等等。 求公司员工的评价月收入是多少?...SELECT MAX(comm) FROM t_emp; 问题1:查询10和20部门中,月收入最高的员工?...SELECT MAX(LENGTH(ename)) FROM t_emp; MIN 函数 MIN 函数用于获得非空值的最小值。...,COUNT(列名) 用于获得包含非空值的记录数。...,底薪超过公司平均底薪的员工数量?
数据操作语言:HAVING 子句 分组查询遇到的困难?...1982 年以后入职的员工超过 2 个人的部门编号。...查询每个部门中,1982年以后入职的员工超过2个人的部门编号 SELECT deptno FROM t_emp WHERE hiredate>="1982-01-01" GROUP BY deptno...HAVING COUNT(*)>=2 AND AVG(sal)>=2000; 错误示范 # 查询每个部门中,1982年以后入职的员工超过2个人的部门编号 SELECT deptno FROM t_emp...1 分组,MySQL 会依据 SELECT 子句中的列进行分组,HAVING 子句也可以正常使用 SELECT deptno,COUNT(*) FROM t_emp GROUP BY 1; SELECT
常用于判断时间的处理 判断phone_time 大于 xxxx-xx-xx的数据 DATE_FORMAT(phone_time, '%Y-%m-%d') >= "xxxx-xx-xx" 常见出错:2020...-1-1 不是 2020-01-01 切记 特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。...以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!
没想到还有开发人员居然去使用。从名字解析可能类似Oracle的merge into update的做法先实验看看实际效果为了观察binlog,新刷新一个。...`t2`从效果看,在刚才的t1和t2的end_log_pos 366和658后面新多了2行953和1245的两个insert。其中一个是insert t1的一个是insert t2的。...d2表的主键是(id,time) d1表的主键是id。这又是会怎么样的火花?顺便说一下这就是一个非分区表改成分区表的一个迁移,只迁移最近的就行的这种。...这就是出问题的点。这里由于d2表的time列是有默认值的,所以这样就会产生重复数据了。...其实在这种前提下,d2表是 id+time的联合主键,那么d1表时间只要改变,那么送过来的数据都会重复的落在d2表中。具体看下面的实操。
如果值设置为ON,则会记录所有没有利用索引的查询(性能优化时开启此项,平时不要开启) 5、使用慢查询日志示例 cat -n /data/mysql/mysql-slow.log ?...1、使用mysqldumpslow进行分析【第一种方式】 mysqldumpslow -t 10 /data/mysql/mysql-slow.log #显示出慢查询日志中最慢的10条sql ?...2、使用pt-query-digest工具进行分析 mysqldumpslow是mysql安装后就自带的工具,用于分析慢查询日志,但是pt-query-digest却不是mysql自带的,如果想使用pt-query-digest...(3)使用 pt-query-digest /data/mysql/mysql-slow.log 查询出来的结果分为三部分 ?...key_len:使用的索引的长度,在不损失精确性的情况下,长度越短越好。 ref:表示索引的哪一列被使用了,如果可能的话,是一个常数。 rows:Mysql认为必须检查的用来返回请求数据的行数。
它基于 MySQL 原生词法解析,再结合 SQL 中的 where 条件以及字段选择度、聚合条件、多表 Join 关系等最终输出最优的索引优化建议。...目前 SQLAdvisor 在公司内部大量使用,较为成熟、稳定。 项目 GitHub 地址:https://github.com/Meituan-Di......二、SQLAdvisor 的优点 基于 MySQL 原生词法解析,充分保证词法解析的性能、准确定以及稳定性; 支持常见的 SQL(Insert/Delete/Update/Select); 支持多表 Join...percona-release-latest.noarch.rpm yum -y install Percona-Server-shared-56 3.3 编译依赖项sqlparser 1. cmake -DBUILD_CONFIG=mysql_release...四、 SQLAdvisor使用 4.1 --help输出 # .
带有输出参数的存储过程 MySQL 支持 in (传递给存储过程),out (从存储过程传出) 和 inout (对存储过程传入和传出) 类型的参数。...存储过程的代码位于 begin 和 end 语句内,它们是一系列 select 语句,用来检索值,然后保存到相应的变量 (通过 into 关键字) -- 根据姓名查询学生信息,返回学生的城市 delimiter...使用存储过程进行增加、修改、删除 增加 delimiter ;; create procedure insert_student( _id int, _name varchar(255)...查询存储过程 查询所有的存储过程: select name from mysql.proc where db='数据库名'; ?...---- 本文永久更新地址:https://github.com/nnngu/LearningNotes/blob/master/MySQL/01%20MySQL%20%E5%AD%98%E5%82%A8%