【MySQL】查询数据

目录

7.2  单表查询

7.3  使用集合函数查询

7.4  连接查询

7.5  子查询

7.6  合并查询结果

7.7  为表和字段取别名

7.8  使用正则表达式查询


MySQL从数据表中查询数据的基本语句为SELECT语句。

SELECT [不重复distinct] 字段 FROM 表名 WHERE/GROUP BY [HAVING] +[条件]+[升降序];

扫描二维码关注公众号,回复: 3901845 查看本文章

SELECT [字段1,字段2,字段n]

FROM 【表或视图】

WHERE 【查询条件】

[ * |<字段列表>]包含星号通配符选择字段列表,表示查询的字段,其中字段列至少包含一个字段名称,如果要查询多个字段, 多个字段之间用逗号隔开,最后一个字段后不要加逗号

FROM <1>,<2>.,1和表2表示查询数据的来源,可以是单个或者多个。·

WHERE子句是可选项,如果选择该项,将限定查询行必须满足的查询条件。还可以增加调价并用多个AND/OR/连接.

GROUP BY<字段>,该子句告诉MySOL如何显示查询出来的数据,并按照指定的字段分组。. [ORDER BY<字段>],该子句告诉MySOL按什么样的顺序显示查询出来的数据,可以进行的排序有:升序(ASC)、降序(DESC) ..

[LIMIT]每次现实查询出来的数据条数;

 

7.2  单表查询

7.2.1  查询所有字段

1.在SELECT语句中使用星号“*”通配符查询所有字段

2.在SELECT语句中指定所有字段

 

7.2.2  查询指定字段

1.查询单个字段

2.查询多个字段

7.2.3  查询指定记录

在SELECT 语句中通过WHERE子句,对数据进行过滤,语法格式为:

 

SELECT 字段名1,字段名2,…,字段名n

FROM 表名

WHERE 查询条件

 

7.2.4  带IN关键字的查询

IN操作符

查询满足指定范围内的条件的记录,使用IN操作符,将所有检索条件用括号括起来,检索条件用逗号分隔开,只要满足条件范围内的一个值即为匹配项。

 

7.2.5  带BETWEEN AND的范围查询

BETWEEN AND

查询某个范围内的值,该操作符需要两个参数,即范围的开始值和结束值,如果字段值满足指定的范围查询条件,则这些记录被返回。

 

7.2.6  带LIKE的字符匹配查询

● 百分号通配符‘%’,匹配任意长度的字符,甚至包括零字符

● 下划线通配符‘_’,一次只能匹配任意一个字符

 

7.2.7  查询空值

在SELECT语句中使用IS NULL子句,可以查询某字段内容为空记录。

 

7.2.8  带AND的多条件查询

使用AND连接两个甚至多个查询条件,多个条件表达式之间用AND分开。

7.2.9  带OR的多条件查询

OR操作符,表示只需要满足其中一个条件的记录即可返回。OR也可以连接两个甚至多个查询条件,多个条件表达式之间用AND分开。

 

7.2.10  查询结果不重复

在SELECT语句中可以使用DISTINCE关键字指示MySQL消除重复的记录值。

 

SELECT DISTINCT 字段名 FROM 表名

 

7.2.11  对查询结果排序

MySQL中可以通过在SELECT使用ORDER BY +升序ASC/降序DESC 对查询的结果进行排序(默认升序)。

 

  1. 单列排序
    1. 查询尾+order by 字段名 对字段进行(升序)排列;
  2. 多列排序
    1. 查询尾+order by 字段名1,字段名2 对两字段进行排列(前面的优先排序);

3.指定排序方向

       末尾+升序ASC/降序DESC

7.2.12  分组查询

分组查询是对数据按照某个或多个字段进行分组。

[GROUP BY  字段] [HAVING <条件表达式>]

1.创建分组:GROUP BY 字段1,[字段2…] 类似排序显示;

2.使用HAVING+条件 过滤分组,满足条件才显示;

       可以使用GROUP_CONCAT 显示分组中每个字段的值;

3.在GROUP BY子句中使用WITH ROLLUP:增加一条记录,显示统计记录数量。

4.多字段分组

5.GROUP BY和ORDER BY一起使用

 

Where 和 having的区别:

where在分组之前选择记录,排除的不在分组中;

having在分组后过滤显示记录,记录还在分组中;

 

7.2.13  用LIMIT限制查询结果的数量

LIMIT关键字可以返回指定位置的记录。

 

LIMIT [位置偏移量,] 行数

 

7.3  使用集合函数查询

COUNT()函数统计数据表中包含的记录行的总数,或者根据查询结果返回的列中包含的数据行数。

● COUNT(*) 。

● COUNT(字段名) 。

 

7.3.2  SUM()函数

SUM()是一个求总和的函数,返回指定列值的总和。

 

7.3.3  AVG()函数

AVG()函数通过计算返回的行数和每一行数据的和,求得指定列数据的平均值。

 

7.3.4  MAX()函数

MAX()返回指定列中的最大值。

 

7.3.5  MIN()函数

MIN()返回查询列中的最小值。

 

7.4  连接查询

7.4.1  内连接查询

内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行,组合成新的记录,也就是说,在内连接查询中,只有满足条件的记录才能出现在结果关系中。

 

7.4.2  外连接查询

返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接或左连接)、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行。

LEFT JOIN(左连接) 。

RIGHT JOIN(右连接) 。

 

7.4.3  复合条件连接查询

复合条件连接查询是在连接查询的过程中,通过添加过滤条件,限制查询的结果。

 

7.5  子查询

7.5.1  带ANY、SOME关键字的子查询

ANY和SOME关键字是同义词,表示满足其中任一条件,它们允许创建一个表达式对子查询的返回值列表进行比较,只要满足内层子查询中的任何一个比较条件,就返回一个结果作为外层查询的条件。

 

7.5.2  带ALL关键字的子查询

ALL关键字与ANY和SOME不同,使用ALL时需要同时满足所有内层查询的条件。

 

7.5.3  带EXISTS关键字的子查询

EXISTS关键字后面的参数是一个任意的子查询,系统对子查询进行运算以判断它是否返回行,如果至少返回一行,那么EXISTS的结果为true,此时外层查询语句将进行查询;如果子查询没有返回任何行,那么EXISTS返回的结果是false,此时外层语句将不进行查询。

 

 7.5.4  带IN关键字的子查询

IN关键字进行子查询时,内层查询语句仅仅返回一个数据列,这个数据列里的值将提供给外层查询语句进行比较操作。

 

 7.5.5  带比较运算符的子查询

在前面介绍的带ANY、ALL关键字的子查询时使用了>比较运算符,子查询时还可以使用其他的比较运算符,如<、<=、=、>=和!=等。

 

7.6  合并查询结果

利用UNION关键字,可以给出多条SELECT语句,并将它们的结果组合成单个结果集。合并时,两个表对应的列数和数据类型必须相同。各个SELECT语句之间使用UNION或UNION ALL关键字分隔。

 

7.7  为表和字段取别名

7.7.1  为表取别名

为了方便操作或者需要多次使用相同的表时,可以为表指定别名,用这个别名替代表原来的名称。

表名 [AS] 表别名

 

7.7.2  为字段取别名

MySQL可以指定列别名,替换字段或表达式。

列名 [AS] 列别名

 

7.8  使用正则表达式查询

7.8.1  查询以特定字符或字符串开头的记录

字符‘^’匹配以特定字符或者字符串开头的文本。

 

7.8.2  查询以特定字符或字符串结尾的记录

字符‘$’匹配以特定字符或者字符串结尾的文本。

 

7.8.3  用符号"."来替代字符串中的任意一个字符

字符‘.’匹配任意一个字符。

7.8.4  使用"*"和"+"来匹配多个字符

星号‘*’匹配前面的字符任意多次,包括0次。

加号‘+’匹配前面的字符至少一次。

 

7.8.5  匹配指定字符串

正则表达式可以匹配指定字符串,只要这个字符串在查询文本中即可,如要匹配多个字符串,多个字符串之间使用分隔符‘|’隔开。

 

 7.8.6  匹配指定字符中的任意一个

方括号“[]”指定一个字符集合,只匹配其中任何一个字符,即为所查找的文本。

 

7.8.7  匹配指定字符以外的字符

“[^字符集合]”匹配不在指定集合中的任何字符。

 

7.7.8  使用{M}或者{M,N}来指定字符串连续出现的次数

“字符串{n,}”表示至少匹配n次前面的字符。“字符串{n,m}”表示匹配前面的字符串不少于n次,不多于m次。

猜你喜欢

转载自blog.csdn.net/dreamengsoul/article/details/83110425