标签:MySQL SQL
MySQL CASE和IF语句使用
SQL语句中的case语句与高级语言中的switch语句,是标准SQL的语法,适用于一个条件判断有多种值的情况下分别执行不同的操作。 首先,让我们看一下CASE的语法。在一般的SELECT中,其语法格式如下: CASE <单值表达式> WHEN <表达式值> THEN <SQL语句或……
MySQL查询优化:GROUP BY
一、group by 当我们执行 group by 操作在没有合适的索引可用的时候,通常先扫描整个表提取数据并创建一个临时表,然后按照 group by 指定的列进行排序。在这个临时表里面,对于每一个 group 的数据行来说是连续在一起的。完成排序之后,就可以发现所有的 groups,并可以执行聚集函数(aggregate function)。可以看到,在……
MySQL查询优化:ORDER BY
通常我们通过explain查看MySQL执行计划时,经常会看到在Extra列中显示Using filesort。其实这种情况就说明MySQL使用了排序。Using filesort经常出现在order by、group by、distinct、join查询等情况下。 一、使用索引来满足ORDER BY 为了优化SQL语句的排序性能,最好的情况是避免排序,合理……
MySQL常见的SQL优化案例
前言 MySQL在2016年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来。但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况。阿里云RDS专家服务团队帮助云上客户解决过很多紧急问题。现将《ApsaraDB专家诊断报告》中出现的部分常见SQ……
SQL优化之INSERT、UPDATE、DELETE
一、优化INSERT语句 为了优化插入速度,将许多小型操作组合成一个大的操作。理想情况下,您进行单个连接,一次发送许多新行的数据,并延迟所有索引更新和一致性检查,直到最后。 插入行所需的时间由以下因素确定,其中数字表示大致比例: 连接:(3) 向服务器发送查询:(2) 解析查询:(2) 插入行:(1×行大小) 插入索引:(1×索引数) 结束:(1) 假设……
MySQL使用HeidiSQL工具改库名
HeidiSQL是一款数据库管理工具,它是德国程序员Ansgar Becker和几个Delphi程序员开发的一个开源工具。支持通过多种方式连接管理 MySQL(MariaDB)、MSSQL Server、PostgreSQL数据库,功能强大,完全免费,推荐大家使用。HeidiSQL比起其他客户端工具而言,支持显示库表的索引大小和数据大小,并且支持改库名(是通……
MySQL多表更新或删除案例
我们用到最多的update更新数据都是单表更新了,但有的时候我们不得不使用关联多表进行数据更新了,下面我给各位介绍利用upate实现多表关联更新。另外需要注意的是MySQL从4.0.4版本开始才支持执行一个包含多个表的UPDATE的语句。 下面给出我的实验环境 环境不涉及什么业务场景,纯粹为了达到测试语句的效果,所以不要问这么更新有什么意义之类的?在生产环境……
SQL中的in、not in、exists及not exists的区别
一、in和exists select * from A where cc in(select cc from B) 1 select * from A where cc in(select cc from B) ……
MySQL SQL报错解决:You can’t specify target table ‘work’ for update in FROM clause
下面来对GROUP BY后面有多个字段进行测试。 一、环境搭建 CREATE TABLE `work` ( `id` int DEFAULT 0, `name` varchar(20) DEFAULT NULL, `address` varchar(20) DEFAULT NULL, `work` var……
SQL编程:隐式转换详解
索引问题是 SQL 问题中出现频率最高的,常见的索引问题包括:无索引,隐式转换。当数据库中出现访问表的 SQL 无索引导致全表扫描,如果表的数据量很大,扫描大量的数据,应用请求变慢占用数据库连接,连接堆积很快达到数据库的最大连接数设置,新的应用请求将会被拒绝导致故障发生。 一、什么是隐式转换? 当我们对不同类型的值进行比较的时候,为了使得这些数值「可比较」(……
MySQL文档存储快速入门指南
一、MySQL文档存储说明 关系数据库(如MySQL)通常存储结构化数据,需要提前定义好数据的格式。而NoSQL的出现就是为了打破这种僵局,使得开发人员可以存储非结构化数据,使用文档的方式进行存储数据,无需提前定义数据格式。早先MariaDB也有对非结构化的数据进行存储的方案,称为dynamic column,但是方案是通过BLOB类型的方式来存储。这样导致……
MySQL InnoDB外键约束详解
一、外键使用 在MySQL 3.23版本后,InnoDB引擎类型的表支持了外键约束,外键主要用于引用和参照完整性的约束检查。外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作。但是外键的使用是有一些必要条件的: 1. 两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持); 2. 外键列必须建立……