数据库管理系统的一个最重要的功能就是数据查询,数据查询不应只是简单的查询数据库中存储的数据,还应该是根据需要对数据进行筛选,以及确定数据以什么样的格式显示。本篇笔记主要介绍单表查询,子查询,连接查询。

MySQL的基本查询语句为SELECT语句,SELECT语句的基本格式为如下,具体的关键词在下文会一一介绍。

select {*|<字段列表>} [form <表一>,<表二>... [where <查询条件> 

[GROUP BY <group by definition>]

[HAVING <expression> [{<operator> <expression>}...]

[ORDER BY <order definition>]

[LIMIT [<offset>,] <row count>]

]}

单表查询

单表查询是指在一张表数据中查询所需的数据。

  • 查询所有字段:使用星号(*)通配符
select * from 表名;
  • 指定字段查询
select 字段名,字段名... from 表名;
  • 带条件查询:通过where子句可以对数据进行过滤
select 字段1,字段2... from 表名 where 查询条件;
  • 带IN关键字的查询:IN操作符用来查询满足指定范围内的条件的记录,IN将所有检索条件用括号括起来,检索条件之间用逗号隔开,只要满足条件范围内的一个值即为匹配项。
select 字段1 from 表名 where 字段 [not]in (1,2,3);
  • 带BETWEEN AND的范围查询:该操作符需要两个参数,即范围的起始值和结束值,如果字段值满足指定范围,则这些记录就被返回。
select 字段1 from 表名 from where 字段 between 1 and 10;
  • 带LIKE的字符匹配查询:和like一起使用的通配符有'%'和'_',’%’可匹配任意长度的字符,包括零字符,‘_’一次只能匹配任意一个字符。
select name from 表名 where name like'王%';
  • 查询空值:空值不同于0,也不同于空字符。空值一般表示数据未知、不适用或将在以后添加数据,在select中使用IS NULL子句。
select 字段1 from 表名 where 字段 is [not]null;
  • 带AND的多条件查询:使用AND操作符限定只有满足所有查询条件的记录才会被返回,多个条件用AND分隔开。
select 字段1,字段2 from 表名 where 条件1 AND 条件2;
  • 带OR的多条件查询:表示只需满足其中一个条件的记录就可以被返回。
select 字段1,字段2 from 表名 where 条件1 OR 条件2;
  • 查询结果不重复:用关键字DISTINCT指示mysql消除重复的记录值。
select distinct 字段1 from 表名;
  • 对查询结果排序:使用ORDER BY子句进行排序,可通过关键字指定排序的方向,默认是升序asc,降序是desc。
select 字段1,字段2 from 表名 order by 字段1 desc,字段2 asc;
  • 限制查询结果的的数量:使用LIMIT关键字,位置偏移量是指从哪一条开始显示,如果不写,则默认从第一条记录开始,即位置偏移量为0。
select 字段1 from 表名 字段1 limit [位置偏移量] 行数;
  • 使用聚合函数查询:聚合函数有五个,分别是返回某列的平均值AVG()、返回某列的行数的COUNT()、返回某列的最大值MAX()、返回某列的最小值MIN()、返回某列值的和SUM()。
select 聚合函数(字段1) from 表名;
  • 分组查询:使用子句GROUP BY创建分组,通常和聚合函数一起使用。使用关键字HAVING过滤分组,在GROUP BY子句中使用WITH ROLLUP使得在记录的最后增添一行,用于统计记录的数量。
select 字段1,count(字段2) from 表名 group by 字段1 [with rollup] [hanving 条件];

子查询

子查询是指一个查询语句嵌套在另一个查询语句内部的查询,故子查询不同于单表查询,并不局限在一个表中查询。子查询中可以使用比较运算符,如“<”、“>”、“<=”、“>=”、“=”、“!=”等。

  • 带ANY、SOME关键字的子查询:ANY和SOME是同义词,表示只要满足内层子查询中的任何一个比较条件,就返回一个结果作为外层查询的条件。
select 字段1 from 表1 where 字段 > any(select 字段2 from 表2);
  • 带ALL关键字的子查询:与ANY不同的是,他需要满足内层查询的所有条件。
select 字段1 from 表1 where 字段 > all(select 字段2 from 表2);
  • 带EXISTS关键字的子查询:判断内层查询是否可以返回记录,如果可以,则EXISTS的值为True,外层语句进行查询,否则为False,外层语句将不进行查询。
select 字段1 from 表1 where [not] exists (select 字段2 from 表2 where 字段3 = xx);
  • 带IN关键字的子查询:内层查询语句仅仅返回一个数据列,这个数据列的值将提供给外层查询语句进行比较操作。
select 字段1,字段2 from 表1 where 字段3 [not] in(select 字段4 from 表2 where 条件);
  • 合并查询结果:用关键字UNION,在各个select中用UNION [ALL]分隔开,不加ALL的话执行的时候会删除重复的记录,所有返回的行都是唯一的,使用ALL的作用是不删除重复行也不对结果进行自动排序。
select 字段1 from 表1 where 条件 union all select 字段2 from 表2 where 条件;

连接查询

连接是关系数据库模型的主要特点。连接查询是关系数据库中最主要的查询,主要包括内连接和外连接。通过连接运算符可以实现多个表的查询。当两个或更多的表中存在相同意义的字段时,便可以通过这些字段对不同的表进行连接查询。

  • 内连接查询:用INNER JOIN连接两个表,用ON替代原来的WHERE。
select 表1.字段1,字段2,表2.字段3 from 表1 inner join 表2 on 条件;
  • 外连接查询分左连接(LEFT JOIN)和右连接(RIGHT JOIN),与内连接不同的是,它返回到结果不仅包含符合连接条件的行,而且包含左表(左连接)、右表(右连接)的所有数据行。
select 表1.字段1,字段2,表2.字段3 from 表1 left outer join 表2 on 条件;
select 表1.字段1,字段2,表2.字段3 from 表1 right outer join 表2 on 条件;

MySQL笔记(二)——查询数据的更多相关文章

  1. Mysql 笔记二

    Mysql 笔记二 Mysql 笔记二 Table of Contents 1. 前言 2. Master Thread 工作方式 2.1. 主循环(loop) 2.2. 后台循(backgroup ...

  2. MySql笔记(二)

    目录 MySQL笔记(二) 一幅画,一次瞬间的回眸,就在那次画展上,那个眼神,温柔的流转,还是那干净的皮鞋,一尘不染,俊朗的眉宇性感的唇,悄悄走近,牵手一段浪漫 MySQL笔记(二) 13.条件查询 ...

  3. mysql笔记03 查询性能优化

    查询性能优化 1. 为什么查询速度会慢? 1). 如果把查询看作是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减 ...

  4. PostgreSQL自学笔记:8 查询数据

    8 查询数据 8.1 基本查询语句 select语句的基本格式是: select {* | 字段1[,字段2,...]} [ from 表1,表2... [where 表达式] [group by & ...

  5. MySql数据库,查询数据导出时会出现重复的记录(数据越多越明显)

    在查询数据时,数据量多的时候,我们会使用分页功能. 每页显示多少数据. 这种情况下,一半看不出什么问题. 而导出数据时,有时就是通过分页的方法,逐步讲数据追加到导出文件中. 当全部数据都导出之后,就有 ...

  6. oracle系列笔记(1)---查询数据

    查询数据 1. 查询(select .. form ..)    (1)普通查询 select * from employees --代表查询employees表中所有数据 select last_n ...

  7. EntityFramework Core笔记:查询数据(3)

    1. 基本查询 1.1 加载全部数据 using System.Linq; using (var context = new LibingContext()) { var roles = contex ...

  8. EFCore笔记之查询数据

    查询数据 基础查询,Linq100实例: https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b using (var context = ...

  9. MySQL 5.6学习笔记(查询数据、插入、更新、删除数据)

    1. 查询语法 SELECT {*|<字段列表>} [FROM table_references [WHERE where_condition] [GROUP BY {col_name | ...

随机推荐

  1. ACM-奇特的立方体

    题目描述:奇特的立方体 任意给出8个整数,将这8个整数分别放在一个立方体的八个顶点上,要求检验每个面上的四个数之和相等这个条件能否被满足. 输入 一次输入8个整数 输出 YES或者NO YES表示可能 ...

  2. ACM-Checker Challenge

    题目描述:Checker Challenge  1000(ms)  10000(kb)  20 / 90 Examine the 6x6 checkerboard below and note tha ...

  3. POJ 3615 Cow Hurdles(最短路径flyod)

    Cow Hurdles Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9337   Accepted: 4058 Descr ...

  4. .NET via C#笔记5——基元类型,引用类型和值类型

    5 基元类型,引用类型和值类型 5.3 值类型的装箱和拆箱 将值类型转化为引用类型需要进行装箱(boxing) 赋值,传参等操作,如果从值类型转为引用类型,都会进行装箱 装箱的代价比较大 申请一块堆内 ...

  5. springboot启动项目报错:ERROR:o.s.b.d.LoggingFailureAnalysisReporter解决办法

    原因是引入了spring security的依赖,将spring security对应的依赖删除即可. 具体可参照: https://blog.csdn.net/qq_37887131/article ...

  6. Webpack - 把json文件打包进js文件

    把html文件打包进index.js   1  新建文件 typings.d.ts    declare module "*.html" {   const content: st ...

  7. JS ~ Promise 对象

    Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及该异步操作的结果值. Promise.all(iterable) 这个方法返回一个新的promise对象,该promise对象在i ...

  8. Essay写作的六大黄金法则以及四大禁区

    虽然Essay这么难写,但是,也有一些可以拿高分的准则,本文小编就为大家分享高分Essay写作必知黄金法则,希望对想要在Essay拿高分的留学生小伙伴们有些帮助. 黄金法则1.关注相关问题的重点词汇 ...

  9. Python 中异常嵌套

    在Python中,异常也可以嵌套,当内层代码出现异常时,指定异常类型与实际类型不符时,则向外传,如果与外面的指定类型符合,则异常被处理,直至最外层,运用默认处理方法进行处理,即停止程序,并抛出异常信息 ...

  10. 实验吧Web-难-头有点大(http头伪造:浏览器、国家、.Net framework版本)

    进去网站显示: 此处告诉我们要干三件事: (1).net framework 版本为9.9 (2)告诉服务器我们的地址为英国 (3)我们访问站点用的是IE 下面我们就抓的包中伪造. 1:.net fr ...