MySQL基础(3)——查询数据

来源:互联网 发布:outlook邮箱的smtp端口 编辑:程序博客网 时间:2024/09/21 08:19

一、单表查询

1、查询所有字段

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

2、查询指定字段

查询单个字段

SELECT 列名 FROM 表名;

查询多个字段

SELECT 字段名1,字段名2,...,字段名n FROM 表名;

3、查询指定记录

SELECT 字段名1,字段名2,...,字段名n FROM 表名 WHERE 查询条件;

4、带IN关键字的查询

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

5、带BETWEEN AND的范围查询

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

BETWEEN AND操作符前可以加关键字NOT,表示指定范围之外的值,如果字段值不满足指定的范围的值,则这些记录被返回。

6、带LIKE的字符匹配查询

(1)、百分号通配符“%”,匹配任意长度的字符,甚至包括零字符

“%”可以匹配多个字符

(2)、下划线通配符“_”,一次只能匹配任意一个字符

只能匹配任意单个字符,如果匹配多个字符,则需要使用相同个数的“_”

7、查询空值

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

8、带AND的多条件查询

MySQL在WHERE子句中使用AND操作符限定只有满足所有查询条件的记录才会被返回。可以使用AND连接两个甚至多个查询条件,多个条件表达式之间用AND分开。

9、带OR的多条件查询

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

10、查询结果不重复

在SELECT语句中,可以使用DISTINCT关键字指示MySQL消除重复的记录值,语法格式:

SELECT DISTINCT 字段名FROM 表名;

11、对查询结果排序

使用ORDER BY 子句对指定的一列或多列数据进行排序

查询数据按字母升序进行排序(从A~Z),但数据的排序并不仅限于此,还可以使用ORDER BY 对查询结果进行降序排序(从Z~A),这可以通过关键字DESC实现。

12、分组查询

分组查询是对数据按照某个或多个字段进行分组,MySQL中使用GROUP BY关键字对数据进行分组,语法形式:

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

字段值为进行分组是所依据的列名称:“HAVING<条件表达式>”指定满足表达式限定条件的结果将被显示。

(1)、创建分组

GROUP BY 关键字通常和集合函数一起使用,例如:MAX()、MIN()、COUNT()、SUM()、AVG()

(2)、使用HAVING过滤分组

GROUP BY可以和HAVING一起限定显示记录所需满足的条件,只要满足条件的分组才会被显示。

(3)、在GROUP BY 子句中使用WITH ROLLUP

使用WITH ROLLUP关键字之后,在所有查询出的分组记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计记录数量

(4)、多字段分组

使用GROUP BY可以对多个字段进行分组,GROUP BY关键字后面跟需要分组的字段,MySQL根据多字段的值来进行层次分组,分组层次从左到右,即先按第1字段分组,然后在第1个字段值相同的记录中,再根据第2个字段的值进行分组...一次类推。

(5)、GROUP BY和ORDER BY一起使用

13、使用LIMIT限制查询结果的数量

SELELCT返回所有匹配的行,有可能是表中所有的行,如仅仅需要返回第一行或者前几行,使用LIMIT关键字,基本语法格式:

LIMIT[位置偏移量] 行数;

第一个“位置偏移量”参数指示MySQL从哪一行开始显示,是一个可选参数,如果不指定“位置偏移量”,将会从表的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1...以此类推);第二条参数“行数”指示返回的记录条数。

二、使用集合函数查询

COUNT()函数:返回某列的行数

SUM()函数:返回某列值的和

AVG()函数:返回某列的平均值

MAX()函数:返回某列的最大值

MIN()函数:返回某列的最小值

三、连接查询

在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当查询数据时,通过连接操作查询出存放在多个表中的不同实体的信息。当两个或多个表中存在相同意义的字段时,便可以通过这些字段对不同的表进行连接查询。

1、内连接查询

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

两个表之间的关系通过INNER JOIN指定。连接条件使用ON子句给出而不是WHERE,ON和WHERE后面指定的条件相同。

2、外连接查询

左连接:

左连接的结果包括LEFT OUTER子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果行中,右表的所有选择列均为空值。

右连接:

右连接(RIGHT OUTER)是左连接的反向连接,将返回右表的所有行。如果右表的某行在左表中没有匹配行,左表将返回空值。

三、子查询

1、带ANY、SOME关键字的查询

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

ANY关键字接在一个比较操作符的后面,表示若与子查询返回的任何值比较为TRUE,则返回TRUE。

2、带ALL关键字的子查询

使用ALL时需要同时满足所有内层查询的条件。

ALL关键字接在一个比较操作符的后面,表示与子查询返回的所有值比较为TRUE,则返回TRUE。

3、带EXISTS关键字的子查询

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

EXISTS关键字可以和条件表达式一起使用。

NOT EXISTS与EXISTS使用方法相同,返回的结果相反。

4、带IN关键字的子查询

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

在处理SELECT语句的时候,MySQL实际上执行了两个操作过程,即先执行内层子查询,再执行外层查询,内层子查询的结果作为外部查询的比较条件。

SELECT语句中可以使用NOT IN关键字,其作用与IN正好相反。

5、带比较运算符的子查询

子查询是还可以使用其他的比较运算符,如“<”、“<=”、“=”、“>=”和“!=”等。

四、合并查询结果

利用UNION关键字,可以给出多条SELECT语句,并将它们的结果组合成单个结果集。合并时,两个表对应的列数和数据类型必须相同。各个SELECT语句之间使用UNION或者UNIONALL关键字分隔。UNION不使用关键字ALL,执行的时候删除重复的记录,所有返回的行都是唯一的;只用关键字ALL的作用不删除重复行也不对结果进行自动排序。基本语法格式:

SELECT column,... FROM table1

UNION [ALL]

SELECT column,... FROM table2

原创粉丝点击