查询语句是MYSQL数据库中用到的最多的语句。

查询语句分为几种

  1. 单表查询
  2. 集合函数查询
  3. 连接查询
  4. 子查询
  5. 合并查询
  6. 正则表达式查询

一:单表查询

SELECT 属性 FROM 表名 [WHERE 查询条件][GROUP BY 属性名1 [HAVING 分组条件]][ORDER BY 属性2 [ASC/DESC]][LIMIT];

WHERE 查询条件

查询条件 符号或关键字 例子
比较 =、<、<=、>、>=、!=、<>、!>、!< WHERE ID = 1
指定范围 BETWEEN AND、NOT BETWEEN AND WHERE ID BETWEEN 2 AND 3
指定集合 IN、NOT IN WHERE ID IN(1,2,3)
匹配字符 LIKE、NOT LIKE WHERE ID LIKE '1%'
是否为空值 IS NULL、IS NOT NULL WHERE ID IS NULL
多个条件查询 AND、OR WHERE ID > 1 AND ID <3

这里说下LIKE,如果是WHERE ID LIKE 'ID' 这里LIKE等同与‘=’ 就是WHERE ID = 'ID'

'%'可以代表任意长度字符串:WHERE ID LIKE 'I%',这里就是匹配以‘I’开头的任意长度字符串

'_'可以代表一个字符:WHRER ID LIKE 'I_',这里就是匹配以‘I’开头的2个长度的字符串

GROUP BY 属性1 分组

按照属性分组,属性相同的分为一组,但是显示的时候只会显示出每组的第一条记录,所以单独的分组是没意义的,搭配集合函数使用效果会更好

使用GROUP_CONCAT(属性)函数:会把分组中指定的属性列出来

SELECT GROUP_CONCAT(ID) FROM DEMO GROUP BY SEX;

使用COUNT(属性)函数:会计算分组中指定的属性个数

SELECT COUNT(ID) FROM DEMO GROUP BY SEX;

GROUP BY也可以按照多个属性分组

GROUP BY 属性1,属性2,...:先按照属性1分组,如果属性1中有重复的记录再按照属性2分组,一次类推

HAVING 分组条件

HAVING和WHERE不一样,WHERE条件表达式是作用与表和视图中的,HAVING条件表达式是作用于分组后的数据,用于选择满足条件的组

ORDER BY 属性2

按照属性2对查询结果排序,默认的是升序排序

ASC/DESC

ORDER BY 后面可以设置排序方式

ASC:升序排序,默认就是这个

DESC:降序排序

LIMIT

限制查询结果显示数量

LIMIT 2:只显示查询结果中的前2条记录

LIMIT 2, 4:从查询结果中找到第3条记录开始,显示后面的4条记录,结果集下标从0开始算起。

二:集合函数查询

SELECT [[COUNT()][SUM()][AVG()][MIN()][MAX()]] FROM 表名

COUNT(属性):计算属性记录的个数

SUM(属性):计算属性取值的和

AVG(属性):计算属性取值的平均值

MIN(属性):得到属性取值的最小值

MAX(属性):得到属性取值的最大值

三:连接查询

内连接查询:

假如2个表中有表示相同意义的字段,可以通过内连接查询得到该字段在2个表中的结果集

表1

ID USER PWD

表2

USER TIME

SELECT ID,表1.USER,PWD,TIME FROM 表1,表2 WHERE 表1.USER = 表2.USER

得到结果集类似

ID USER PWD TIME

外连接查询:

分为左连接查询和右连接查询,一般用的比较少,这里不做介绍

四:子查询

子查询语句就是将一个查询语句嵌套进一个查询语句中,内层查询语句结果可以作为外层查询语句的查询条件。

子查询中包含比较运算符和一些关键字IN、NOT IN、ANY、ALL、EXISTS、NOT EXISTS等

IN:内层查询语句结果中包含外层查询语句条件的字段

SELECT * FROM 表1 WHERE 字段1 IN (SELECT 字段1 FROM 表2);

NOT IN和IN相反,这个就不多做描述

ANY:表示满足其中任意一个条件。只要内层查询语句返回的结果中的任何一个,就可以通过该条件来执行外层查询语句

SELECT 字段1 FROM 表1 WHERE 字段1 [[<][=][>][<=][>=][<>][!=]] ANY (SELECT 字段1 FROM 表2);

其实到这里IN关键字和ANY关键字在某种情况下是相同的:

SELECT * FROM 表1 WHERE 字段1 IN (SELECT 字段1 FROM 表2);

SELECT * FROM 表1 WHERE 字段1 = ANY (SELECT 字段1 FROM 表2);

ALL:表示满足其中全部条件。只要满足内层查询语句返回的结果中的全部条件,才可以通过该条件来执行外层查询语句。

SELECT 字段1 FROM 表1 WHERE 字段1 [[<][=][>][<=][>=][<>][!=]] ALL (SELECT 字段1 FROM 表2);

ANY 关键字和ALL关键字的意思是相反的,ANY是只要满足其中一个条件,ALL关键字是满足全部条件。

EXISTS:表示存在,使用EXISTS关键字时,内层查询语句不返回查询记录,而是返回一个真假值,如果为真(true)则执行外层查询语句,如果为假(false)则不执行外层查询语句。

SELECT * FROM 表1 WHERE EXISTS (SELECT * FROM WHERE...);

NOT EXISTS关键字和EXISTS关键字意思相反,这里就不多做描述。

五:正则表达式查询

待续。。。

六:合并查询结果

有时候我们要把两个SELECT语句查询得到的结果合并在一起,我们要用到UNION和UNION ALL关键字

UNION:合并两个SELECT语句查询结果,并且去掉重复的记录。

UNION ALL:合并两个SELECT 语句查询结果。

SELECT ... [[UNION][UNION ALL]] SELECT ...

七:为表和字段取别名

在实际使用的时候有些表的名称和字段的名称都比较长,SELECT语句写出来显的有点臃肿或者不易于阅读,我们可以给表和字段取别名来解决这个问题。

给表取别名:表名 表的别名

给字段取别名:字段名 [AS] 字段的别名

SELECT * FROM TABLE1 T1 WHERE T1.ID = 1;

SELECT ID AS T1ID FROM TABLE1 WHERE T1ID = 1;

转载于:https://www.cnblogs.com/roddy/p/4799665.html

MYSQL数据库学习----查询相关推荐

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

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

  2. java查询mysql装载bean_jsp与javabean链接mysql数据库并查询数据表的简单实例源码

    jsp与javabean链接mysql数据库并查询数据表的简单实例源码.这个简单的实例是给新手学习的,或者一些高手临时忘记怎么使用jsp操作mysql数据库时候查找的,包括了建立mysql数据库连接的 ...

  3. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

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

  4. MySQL 数据库学习(一)

    MySQL 数据库学习 数据库 1. 数据库的介绍 2. 数据库的分类 3. 数据库的作用 4. 数据库的特点 5. 小结 MySQL数据库 1. MySQL数据库的介绍 2. MySQL数据库的安装 ...

  5. 研一寒假MySQL数据库学习笔记(三)

    研一寒假MySQL数据库学习笔记(三) 本节记录数据库高级查询部分的内容,整理于此便于之后回顾. 1. 上一节补充内容 1.1 案例练习 现在有一个员工表.部门表,两张表之间是一个部门多个员工,一个员 ...

  6. MySQL数据库学习日志(六):索引和视图

    MySQL数据库学习日志(六):索引和视图 MySQL数据库学习日志(六):索引和视图 索引 (一)索引概述 (二)优缺点 (三)分类 1. 按照底层实现的方式 2. 按照功能划分 普通索引 唯一索引 ...

  7. linux数据库创建score表,MySQL数据库学习笔记

    MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...

  8. php 查看mysql连接数据库_php基础之连接mysql数据库和查询数据

    php基础之连接mysql数据库和查询数据 文章主要介绍了php连接mysql数据库和查询数据的方法和示例,需要的朋友可以参考下,就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕 ...

  9. 查询 oracle_关于oracle和mysql数据库的查询问题

    近期在写mysql数据库报表时,需要给查询排序后的数据增加一列序号,用来统计查询数据的排名,在这里遇到一个视图和排序冲突的问题. Part 1 在oracle数据库中可以直接给查询语句增加一列ROWN ...

最新文章

  1. Flex和java开发的参考书
  2. [JDBC技术]3.JDBC数据库连接池实例
  3. TIOBE 8 月榜单:Groovy 和 Objective-C 重返前二十
  4. python画图-Python 绘图,我只用 Matplotlib(二)
  5. WordCount代码详解
  6. linux进程中对信号的屏蔽,linux进程中的信号屏蔽
  7. boost::contract模块实现简单queue的测试程序
  8. android-波浪效果ripple-background
  9. 32位、64汇编区别
  10. 中国计算机学会推荐的国际学术刊物
  11. Bootstrap创建按钮组
  12. Docker安装tomcat出现404问题
  13. Sql注入基础_mysql注入
  14. 嵌入式Linux开发板移植SSH
  15. 小米路由r2d论坛_维修一台亮黄灯的R2D小米路由器2
  16. 部标设备JTT808数据模拟器+Socket数据发送(JAVA版)
  17. TaHomA:一套让你在iPad上控制房子,将其变身智能房屋的神奇系统
  18. 刷脸时代:勿信谣言,告诉你真实的刷脸支付系统
  19. Linux文件解hgc,Linux shell I/O重定向详解
  20. Free-Form Image Inpainting with Gated Convolution

热门文章

  1. 和老公去出吃饭,每次我出钱。这样正常吗?
  2. 我见过不少赚了钱,投资孵化一堆店铺的,一般而言后续发展都会出问题的
  3. 揭开发家致富的2个途径
  4. 一个人越来越有潜力的3个迹象
  5. 这个世界最贵的奢侈品永远是事业
  6. 我们的内存中都放了什么
  7. 响应函数sys_xxx
  8. 写ios系统和安卓系统的人到底有多牛?
  9. 为什么有的人手机通知栏显示的是4G+而有的是HD?
  10. 利用T-SQL处理SQL Server数据库表中的重复行