查询执行路径中的组件:查询缓存、解析器、预处理器、优化器、查询执行引擎、存储引擎
SELECT语句的执行流程:
FROM Clause --> WHERE Clause --> GROUP BY --> HAVING Clause --> ORDER BY --> SELECT --> LIMIT
单表查询:
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[MAX_STATEMENT_TIME = N]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr [, select_expr ...]
[FROM table_references
[PARTITION partition_list]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[FOR UPDATE | LOCK IN SHARE MODE]]
select DISTINCT Host,User from user;
DISTINCT:数据去重
SQL_CACHE:显示指定存储查询结果于缓存之中
SQL_NO_CACHE:显示查询结果不予缓存
query_cache_type的值为'ON'时,查询缓存功能打开;
SELECT的结果符合缓存条件及会缓存。否则,不予缓存
如果显示指定SQL_NO_CACHE,不予缓存
query_cache_type的值为'DEMAND'时,查询缓存功能按需进行;
显示指定SQL_CACHE的SELECT语句才会缓存;其他均不予缓存
缓存命中次数查看:
SHOW GLOBAL STATUS LIKE 'Qcache%';
Qcache_hits命中次数
查询总数:
SHOW GLOBAL STATUS LIKE 'Com_se%';
Com_select查询总数
字段别名显示:
col1 AS alias1,col2 AS alias2, ...
WHERE子句:指明过滤条件以实现"选择"的功能
过滤条件:布尔型表达式
算数操作符:+ - * / %
比较操作符:= != <> <=> > >= < <=
BETWEEN min_num AND max_num
IN(element1, element2, ...)
IS NULL
IN NOT NULL
LIKE:
%:任意长度的任意字符;
_:任意单个字符;
RLIKE或REGEXP:匹配字符串可用正则表达式书写模式
逻辑操作符:
NOT
AND
OR
XOR
GROUP:根据指定的条件把查询结果进行"分组"以用于做"聚合"运算;
avg() max() min() count() sum()
SELECT avg(rank),sex FROM base_member_info GROUP BY sex;
HAVING:对分组聚合运算后的结果指定过滤条件
SELECT avg(rank) as fansik,sex FROM base_member_info GROUP BY sex HAVING fansik > 60;
ORDER BY:根据指定的字段对查询的结果进行排序
升序:ASC
降序:DESC
SELECT avg(rank) as fansik,sex FROM base_member_info GROUP BY sex HAVING fansik > 60 ORDER BY fansik DESC;
LIMIT [[offset,]row_count]:offset为偏移量,如果只有一个值,那默认表示行数
SELECT weixin_nickname,rank,sex FROM base_member_info ORDER BY rank DESC LIMIT 180,20;
对查询结果中的数据请求施加"锁":
读锁(共享锁):LOCK IN SHARE MODE
写锁(独占锁、排它锁):FOR UPDATE 多表查询:
交叉连接:笛卡尔乘积:
表1有8行数据,表2有8行数据
select * from 表1,表2;
结果会有64行数据,这就是笛卡尔乘积
内连接:
等值连接:让表之间的字段以"等值"建立连接关系
select 表1.name,表2.name from 表1,表2 where 表1.id=表2.id
不等值连接
自然连接
自连接
外连接:
左外连接:
FROM 表1 LEFT JOIN 表2 on 表1.col=表2.col
右外连接
FROM 表1 RIGHT JOIN 表2 on 表1.col=表2.col 子查询:在查询语句嵌套这查询语句(MySQL对于子查询的优化比较查,建议尽量少的使用)
基于某语句的查询结果再次进行查询
用在WHERE子句中的子查询
(1)用于比较表达式中的子查询;子查询仅能返回单个值
SELECT rank,sex FROM base_member_info WHERE rank < (SELECT avg(rank) FROM base_member_info);
(2)用于IN中的子查询:子查询应该单键(一个字段)查询并返回一个或多个值
SELECT nickname,rank,sex FROM base_member_info WHERE rank IN (SELECT rank FROM base_member);
(3)用于EXISTS
用于FROM子句中的子查询
使用格式:SELECT tb_alias.col1,... FROM (SELECT clause) AS tb_alias WHERE Clause;
联合查询:UNION(使用EXPLAIN会看到有三个查询语句)
SELECT Name,Age FROM students UNION SELECT Name,Age FROM teacher

MySQL查询操作的更多相关文章

  1. MySQL 查询操作

    目录 基本语法 查询常量 查看表达式 查询函数 查询指定字段 查询所有列 列别名 表别名 条件查询 条件查询运算符 逻辑查询运算符 排序与分页 排序查询(order by) 排序方式 limit 分组 ...

  2. MySQL查询操作——2

    -----------查询操作--------------------------- 查询表中的所有字段SELECT * FROM employees; 查询常量值SELECT 100;SELECT ...

  3. MYSQL查询操作 详细

    学习目标 1 掌握select查询所有字段.指定字段的数据 2 掌握消除重复行命令distinct 3 掌握as给字段.表起别名 4 掌握条件查询where后跟比较运算符.逻辑运算符的用法 5 掌握条 ...

  4. mysql查询操作之单表查询、多表查询、子查询

    一.单表查询 单表查询的完整语法: .完整语法(语法级别关键字的排列顺序如下) select distinct 字段1,字段2,字段3,... from 库名.表名 where 约束条件 group ...

  5. mysql查询操作1

    ##1.在已有的表中插入一行记录 insert into tb_name values("",""...); ##2.查询语句的框架和用法 select 字段名 ...

  6. MySQL查询操作select

    查找记录 SELECT select_expr [,select_expr ...] [ FROM table_references(表的参照) [WHERE where_condition](条件) ...

  7. C#参数化执行SQL语句,防止漏洞攻击本文以MySql为例【20151108非查询操作】

    为什么要参数化执行SQL语句呢? 一个作用就是可以防止用户注入漏洞. 简单举个列子吧. 比如账号密码登入,如果不用参数, 写的简单点吧,就写从数据库查找到id和pw与用户输入一样的数据吧 sql:se ...

  8. MySQL(三) 数据库表的查询操作【重要】

    序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VARCHAR.BLOB,等), 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对 ...

  9. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

随机推荐

  1. java全局变量使用

    1.在多线程的作用下,全局变量可能被多个程序使用,如果有人修改,全局变量就被修改了,导致别人使用的时候,出现问题 2.解决方法: 全局变量改为私有变量. 或者把全局变量改为final类型,只能读取,不 ...

  2. spring 多个数据库之间切换

    多数据源问题很常见,例如读写分离数据库配置. 原来的项目出现了新需求,局方要求新增某服务器用以提供某代码,涉及到多数据源的问题. 研究成果如下: 1.首先配置多个datasource [html] v ...

  3. Jquery学习笔记(6)--jquery中attr和prop的区别【精辟】

    jquery中attr和prop的区别 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答案很 ...

  4. unix基础杂谈

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...

  5. hadoop本地化运行

    mr的三种运行方式 第一种,打成jar包,在hadoop上运行 第二种,driver端在本地,通过ide连接linux上的hdfs 第三种,windows本地运行 hadoop_dll2.6.0_64 ...

  6. 在ASP.NET MVC3 中利用JSONP跨域登录WEB系统

    在信息系统开发的时,根据相关业务逻辑难免会多系统之间互相登录.一般情况下我们需要在多系统之间使用多个用户名和密码.这样客户就需要在多个系统之间重复登陆.每次登录都需要输入用户名和密码.最近比较流行的就 ...

  7. SQL Server 2008 R2 开启远程连接

    因为sql server 2008默认是不允许远程连接的,sa帐户也是默认禁用的,如果想要在本地用SSMS(SQL Server Management Studio Express) 连接远程服务器上 ...

  8. CentOS下搭建LNMP+WordPress+http2.0教程

    此文是本人CentOS下搭建WordPress的一些笔记,环境搭建时间::将看过的几篇文章总结下来,形成一条龙长文.不用大家再找来找去. 本文大概分为此几部分: 一.基础命令更新: 二.服务器加速(非 ...

  9. python中的json和pickle

    author:headsen chen date::2018-04-10  09:56:54 json模块和pickle模块: 这是用于序列化的两个模块: 概念介绍:json和pickle模块是将数据 ...

  10. 【BZOJ3714】[PA2014]Kuglarz 最小生成树

    [BZOJ3714][PA2014]Kuglarz Description 魔术师的桌子上有n个杯子排成一行,编号为1,2,…,n,其中某些杯子底下藏有一个小球,如果你准确地猜出是哪些杯子,你就可以获 ...