查询执行路径中的组件:查询缓存、解析器、预处理器、优化器、查询执行引擎、存储引擎
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. 最大子矩阵 hdu1081

    To The Max Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  2. jedis CodedInputStream encountered a malformed varint

    原因:从redis数据库中根据String类型的参数取数据时报的异常 解决方法:应该用字节数组读取低层次的数据,因为是我们自定义的一些对象格式,如图: 这样就不报错了,可以正常读取redis数据库中的 ...

  3. scala读写文件

    def main(args: Array[String]): Unit = { //1 read for( i<- Source.fromFile("test.dat").g ...

  4. 使用JSP实现用户登录

    本文讲述使用JSP实现用户登录,包括用户登录.注册和退出功能等. 1.系统用例图 2.页面流程图 3.数据库设计 本例使用oracle数据库 创建用户表 包括id,username,password和 ...

  5. 修改linux系统的时间EDT为CST

    今早看到一台机器时间对不上,本以为系统时间与网络北京时间不同步,就在终端命令执行网络时间同步 [root@localhost ~]# ntpdate time.windows.com 执行完之后,在执 ...

  6. SecureCRT超级终端使用说明

    SecureCRT超级终端使用说明 一.连接POS机 1.运行SecureCRT,选择‘文件’菜单,在下拉菜单中选择‘快速连接’菜单: 2.在弹出的对话框中按如下图选择参数: 3.POS端开机,且数据 ...

  7. windows-redis 集群搭建

    Windows 配置Reids集群 Redis Cluster 1. 下载安装Redis Redis官方不支持Windows,但是Microsoft Open Tech group在 GitHub上开 ...

  8. 广义高斯分布(GGD)

    广义高斯分布(GGD)-Generalized Gaussian Distribution 广义高斯分布及其在图像去噪的应用_百度文库 https://wenku.baidu.com/view/2b8 ...

  9. Python_selenium之窗口切换(二)

    Python_selenium之窗口切换(二)一.思路拆分1. 之前有介绍窗口切换,这里加上断言部分2. 这里还是以百度新闻为例,获取百度新闻网址http://news.baidu.com/3. 同样 ...

  10. php检测非法字符方法

    检测非法字符: [第一种]: 自己搞来玩的... 简单测试了下...暂无发现什么问题...日后再多测试下....日后再更>>>