查询执行路径中的组件:查询缓存、解析器、预处理器、优化器、查询执行引擎、存储引擎
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. SPI—读写串行 FLASH

    SPI协议简介SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线.它被广泛地使用在 ADC. LCD ...

  2. JVM Specification 9th Edition (4) Chapter 3. Compiling for the Java Virtual Machine

    Chapter 3. Compiling for the Java Virtual Machine 内容列表 3.1. Format of Examples 3.2. Use of Constants ...

  3. spoj7001 Visible Lattice Points 莫比乌斯反演+三维空间互质对数

    /** 题目:Visible Lattice Points 链接:https://vjudge.net/contest/178455#problem/A 题意:一个n*n*n大小的三维空间.一侧为(0 ...

  4. CDH 安装配置指南(Tarball方式)

    采用CDH Tarbal方式安装Hadoop集群. 1. 环境组件版本 组件名称 组件版本 用途 jdk 1.8 jdk-8u191-linux-x64 oracle jdk mysql mysql- ...

  5. Oracle记录学习

    --基本函数--select name,count(id) from work_test group by name having count(id)>1--select upper(name) ...

  6. 如何用redis/memcache做Mysql缓存层

    方法一:直接用MysqlMysql有缓存,实现了类似的功能,如果需要缓存的东西很多,可以把缓存的内存设置大一点.这样的好处就是不用去控制缓存的失效,确保数据一致性. 方法二:启用用DAO框架的缓存比如 ...

  7. ARM汇编语言(3)(寄存器读写控制外设)

    DAY4:ARM汇编(4) 一,GPIO编程     连接内存(二级cache),用来寻址:连接外设,用来控制:   1,GPIO,General-Purpose IO ports,通用输入输出端口, ...

  8. Linux命令下,cp,rm,mv命令的使用

    Linux命令行下的复制.删除与移动:cp,rm,mv cp(copy)复制        cp这个命令的用途很多,除了单纯的复制之外,还可以创建链接文件对比两文件的新旧而予以更新,        以 ...

  9. java读取配置文件(转)

    转载:http://blog.csdn.net/gaogaoshan/article/details/8605887 java 4种方式读取配置文件 + 修改配置文件     方式一:采用Servle ...

  10. iOS开发之--Mac终端命令大全

    目录操作 命令名 功能描述 使用举例 mkdir 创建一个目录 mkdir dirname rmdir 删除一个目录 rmdir dirname mvdir 移动或重命名一个目录 mvdir dir1 ...