MySQL原生语句个人补漏

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL原生语句个人补漏insert插入insert into table_name (field1,field2...fieldn) values (value1,value2...valuen);所有列需添加可不写列名。

MySQL原生语句个人补漏

insert插入

insert into table_name (field1,field2...fieldn) values (value1,value2...valuen);所有列需添加可不写列名。
多条插入:insert into table_name (field1,field2...fieldn) values (value1,value2...valuen), (valuea,valueb...valuen), (valueA,valueB...valueN);

where子句

select * from table_name where BINARY field = 'php / PHP';where子句字符串比较不区分大小写,要求区分时引入BINARY关键字。

update更新

update table_name set field1 = new value1, field2 = new value2, ... (+ where);
update table_name set field1 = REPLACE(field1, 'old_string', 'new_string')(+ where);替换字段中的字符。

delete删除

delete from table_name where field = value;不加where,表数据全灭。

union组合结果集

select value from table_name1(+ where) union all / distinct(default) select value from table_name2(+ where) orderby value;union组合两个以上的结果集输出新集,关键字默认distinct去重,为空不写,关键字all取全部数据包括重复。

where,having

某种程度where与having作用相同,区别where筛选表字段;having对筛选字段进行再筛选,且常与聚合函数出没。

join连接

inner join返回字段匹配的结果集(交集);left join返回左表所有记录和字段匹配的结果集;right join返回右表所有记录和字段匹配的结果集。

sql执行顺序

写:select[distinct] - from - join - on - where - group by - having - union - order by - limit[offset]
执行:from - on - join - where - group by - having - select[distinct] - union - order by

NULL

select * from table_name where field IS NULL; IS NOT NULL非null值。

索引

常用类型;primary key,unique,index,fulltext index,组合索引;
创建:create index indexname on table_name(field); alter table table_name add index indexname(field);
删除:drop index indexname on table_name; alter table table_name drop index indexname;

and,or连接

and,or执行等级并列,多个or只执行首个,所以and出现在or之后一般不生效,二者同时应用时应写为“(or语句)”;

explain执行分析

explain模拟执行SQL语句,分析查询语句和性能瓶颈;

执行计划包含信息:

  • id:查询序列号,执行顺序由上到下;如果是子查询,id会递增,id值与执行优先级成正比;相同id遵循由上到下原则;
  • select_type:
  • --simple简单子查询,不含子查询或union;
  • --primary包含复杂的子部分,外部被标记为primary;
  • --subquery,select或where列表包含了子查询;
  • --derived,from列表中的子查询标记为derived(衍生),结果存放临时表;
  • --union,通过union连接多个结果,第二个select后的为union;
  • table:当前执行表
  • type:查询类型
  • --最佳到最差:system - const - eq_ref - ref - range - index - all;一般至少达到range,最好达到ref,避免all;
  • --system,表只有一行记录(等同于系统表,const类型特例,忽略不计);
  • --const,通过索引一次找到;
  • --eq_ref,唯一性索引扫描,对于每个索引键,表只有一条记录匹配(主键或唯一键索引);
  • --ref,非唯一性索引,所有匹配索引值的行全部读取;
  • --range,检索给定范围的行,使用一个索引选择行
  • --index,与all相同(读全表),但index只遍历索引树,索引文件比数据文件小;
  • --all,数据文件查全表;
  • possible_keys:可能应用的索引;其中会出现已有索引并按优劣顺序排列,开发者编写测试sql的时候要注意,若是有效的索引应让这些索引(按顺序)尽量生效;
  • key:引用的索引,没选择索引为NULL;
  • key_len:索引长度,越短越好;
  • ref:显示使用哪个列或常数与key一起执行;
  • rows:得到结果集需查询的行数,越少越好(多行相乘可以估算要处理的行数);
  • Extra:解决查询的详情;
  • --Using filesort,mysql使用外部索引排序,而不是按照表内索引顺序读取;
  • --Using temporary,使用了临时表保存中间结果,对查询结果排序时使用了临时表,常见order by,group by;
  • --Using index,相应select操作使用了覆盖索引,避免了访问表的数据行,效率很高。如果同时出现using where表示索引被用来执行索引键值的查找,没出现using where表示读取动作;
  • --Using where,使用where过滤;
  • --Using join buffer,使用了连接缓存;
  • --impossible where,where子句值为false,不能用来获取任何元组;
  • --select tables optimized away,在没有GROUPBY子句的情况下,基于索引优化MIN/MAX操作或者对于MyISAM存储引擎优化COUNT(*)操作,不必等到执行阶段再进行计算,查询执行计划生成的阶段即完成优化;
  • --distinct,优化distinct操作,找到第一匹配的元组后即停止查找同样值的动作;
    原文地址https://www.cnblogs.com/liwei101282/p/10741822.html
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
关系型数据库 MySQL PHP
PHP 原生操作 Mysql
PHP 原生操作 Mysql
81 0
|
7月前
|
关系型数据库 MySQL 数据库连接
PHP 原生连接 Mysql
PHP 原生连接 Mysql
107 0
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
阿里云原生数据库 PolarDB MySQL:云原生时代的数据库新篇章
阿里云原生数据库 PolarDB MySQL,它是阿里云自主研发的下一代云原生关系型数据库。PolarDB具有多主多写、多活容灾、HTAP等特性,交易性能和存储容量均表现出色。此外,PolarDB MySQL Serverless具有动态弹性升降资源和全局一致性等特性,能够适应高吞吐写入和高并发业务场景。本文详细分析了PolarDB的性能、稳定性和可扩展性,以及它在成本、性能和稳定性方面的优势。PolarDB为企业提供了高效、可靠的数据库解决方案,是值得考虑的选择。
301 0
|
3月前
|
SQL 存储 缓存
SQL语句在MySQL中是如何执行的
SQL语句在MySQL中是如何执行的
45 0
|
7月前
|
关系型数据库 MySQL 数据库连接
PHP 原生操作 Mysql 增删改查案例
PHP 原生操作 Mysql 增删改查案例
87 0
|
4月前
|
存储 负载均衡 关系型数据库
MySQL 原生分布式
MySQL 原生分布式
|
6月前
|
数据采集 数据安全/隐私保护
采用SpringBoot+原生HTML+MySQL开发的电子病历系统源码
本套电子病历系统主要面向医疗机构医生、护士,提供对住院病人的电子病历书写、保存、修改、打印等功能。本系统基于云端SaaS服务方式,通过浏览器方式访问和使用系统功能,提供电子病历在线制作、管理和使用的一体化电子病历解决方案,为医疗机构的电子病历业务开展提供支撑。
|
SQL 存储 缓存
一文搞懂MySQL中一条SQL语句是如何执行的
一文搞懂MySQL中一条SQL语句是如何执行的
|
9月前
|
存储 缓存 NoSQL
【Java面试八股文宝典之MySQL篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day23
【Java面试八股文宝典之MySQL篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day23
77 0
|
SQL 关系型数据库 MySQL
软件开发入门教程网之MySQL GROUP BY 语句
软件开发入门教程网之MySQL GROUP BY 语句