mysql查询数据知识点

1、基本查询语句

SELECT 
{*|}
[

FROM ,...

[WHERE ]

[GROUP BY ]

[HAVING [{}...]]

[ORDER BY ]

[LIMIT[,]]

]

2、单表查询

        2.1、查询所有字段:

                1)、在SELECT语句中使用‘*’通配符查询所有字段             

SELECT * FROM 表名;

                2)、在SELECT语句中指定所有字段。                     

SELECT s1,s2,s3,...,sn FROM 表名;

        2.2、查询指定字段:

                1)、查询单个字段                  

SELECT 列名 FROM 表名;

                2)、查询多个字段

SELECT s1,s2,s3,...,sn FROM 表名;

        2.3、查询指定记录:

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

        2.4、带IN关键字的查询:

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

SELECT 字段名1,字段名2,...字段名n FROM 表名 WHERE 字段名 IN (条件1,条件2,...条件n);

                2)、NOT IN操作符用来查询不满足指定范围内的条件的记录。

SELECT 字段名1,字段名2,...字段名n FROM 表名 WHERE 字段名 NOT IN (条件1,条件2,...条件n);

        5、带BETWEEN AND的范围查询:

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

SELECT 字段名1,字段名2,...字段名n FROM 表名 WHERE 字段名 BETWEEN 开始值 AND 结束值;

                2)、NOT BETWEEN AND 用来查询指定范围外的值。

SELECT 字段名1,字段名2,...字段名n FROM 表名 WHERE 字段名 NOT BETWEEN 开始值 AND 结束值;

        6、带LIKE的字符匹配查询:

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

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

        7、查询空值:

                1)、IS NULL查询某字段为空值。

                2)、NOT IS NULL 查询某字段不为空值。

        8、带AND的多条件查询

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

        9、带OR的多条件查询:

                只需要满足一个条件的记录即可返回,和IN操作符功能相同,但是IN操作符使得检索语句更加简洁明了,并且IN执行速度快于OR,IN操作符可以执行更加复杂的嵌套查询。OR可以和AND一起使用,但是AND的优先级高于OR。

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

        10、查询结果不重复:

SELECT DISTINCT 字段名 FROM 表名;

        11、对查询结果排序:ORDER BY

                1)、单列排序

                2)、多列排序

                3)、指定排序方向(ASC,DESC)

        12、分组查询:

                1)、创建分组

SELECT 字段名1,字段名2,...字段名n 
FROM 表名 
WHERE 查询条件
[GROUP BY 字段][HAVING ];

                2)、使用HAVING过滤分组

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

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

                4)、多字段组合

                5)、GROUP BY和ORDER BY同时使用

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

                LIMIT [位置偏移量,] 行数

3、使用集合函数查询

        1、COUNT()函数统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数。其使用方法有两种:

                1)、COUNT(*)计算表中总的行数,不管某列有数字或者为空值。

                2)、COUNT(字段名)计算指定列下总的行数,计算时将忽略空值的行。

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

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

        4、MAX()函数返回指定列中的最大值。

        5、MIN()函数返回指定列中的最小值。

4、连接查询

        1、内连接查询:

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

        2、外连接查询:

                1)、LEFT JOIN 左连接:返回包括左表中的所有记录和右表中连接字段相等的记录。

                2)、RIGHT JOIN 右连接:返回包括右表中的所有记录和左表中连接字段相等的记录。

        3、复合条件连接查询:

                在连接查询的过程中,通过添加过滤条件,限制查询的结果,使查询的结果更加准确。

5、子查询

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

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

        2、带ALL关键字的子查询

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

        3、带EXISTS关键字的子查询

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

                NOT EXISTS与EXISTS使用方法相同,返回的结果相反,子查询如果至少返回一行,那么NOT EXISTS的结果为false,此时外层查询语句将不进行查询;如果子查询没有返回任何行,那么NOT EXISTS的结果为true,此时外层语句将进行查询。

        4、带IN关键字的子查询

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

                NOT IN 作用与IN作用相反。

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

                比如">"、"="、""等。

        6、合并查询结果:

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

SELECT column,..... FROM table1

UNION [ALL]

SELECT column,..... FROM table2

        7、为表和字段取别名:

                1)、为表去别名

                        当表名很长或者执行一些特殊查询时,为了方便操作h或者需要多次使用相同表时,可以为表指定别名,用这个别名替代表原来的名称。

                        表名 [AS] 表名

                2)、为字段取别名

                        列名 [AS] 列别名

        8、使用正则表达式查询:(使用REGEXP关键字指定正则表达式的字符匹配模式)

                1)、查询以特定字符或字符串开头的记录

                        字符 '^' 匹配以特定字符或字符串开头的记录

                2)、 查询以特定字符或字符串结尾的记录

                        字符 '$' 匹配以特定字符或字符串结尾的记录

                3)、用符号 '.' 来代替字符串中的任意一个字符

                        字符 '.' 匹配任意一个字符。

                4)、使用"*"和"+"来匹配多个字符

                        "*"匹配前面的字符任意多次包括0次。"+"匹配前面的字符至少一次。

                5)、匹配指定字符串

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

                6)、匹配指定字符中的任意一个

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

                7)、匹配指定字符以外的字符

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

                8)、使用{n,}或者{n,m}来指定字符串连续出现的次数

                        "{n,}"表示至少匹配n次前面的字符;

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

  • 31
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值