首页 > 技术文章 > 数据库(查询专项)

cangshuchirou 2018-04-08 16:53 原文

1.基本查询语句(SELECT)

SELECT *|字段列表 FROM 表1,表2,表n WHERE 表达式 GROUP BY HAVING ORDERBY LIMIT ;

SELECT 字段1,字段2,字段n FROM 表或视图 WHERE 查询条件;

 

说明:select语句决定了要查询的值,from语句决定了数据来源.

 

2.单表查询:指从一张表中查询所需数据.

目录

1.查询所有字段

2.查询指定字段

3.查询指定记录

4.带IN关键字的查询

5.带BETWEEN AND的查询范围

6.带LIKE的字符匹配查询

7.查询空值

8.带AND的多条件查询

9.带OR多条件查询

10.查询结果不重复

11.对查询结果进行排序

12.分组查询

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

 

 

 

1.查询所有字段(SELECT * FROM 表名;)注意:效率低

 

 

2.查询指定字段(SELECT 字段名1,字段名2,字段名n FROM 表名;)

 

 

3.查询指定记录(SELECT 字段名 FROM 表名 WHERE 查询条件;)

 

3.1WHERE条件符 

等于 =

不等于 <>,!=

小于<

小于等于<=

大于等于>=

大于>

位于两值之间BETWEEN AND

 

 

4.带IN关键字的查询(SELECT 字段名 FROM 表名 WHERE IN|NOT IN ORDER BY ;)

 

 

5.带BETWEEN AND的查询范围(SELECT 字段名 FROM 表名 WHERE 要查询的字段名 BETWEEN|NOT BETWEEN 值1 AND 值2;)

 

 

6.带LIKE的字符匹配查询(LIKE "%"," _")通配符查询.模糊查找.

1.%百分号通配符.匹配任意长度的字符,包括零字符.

例:1以b开头b%     2以b结尾%b   3只要有b就匹配%b%  3 b开头y结尾b%y

 

2._下划线通配符,一次只能匹配任意一个字符.

例:_ _ _ _y 匹配y结尾的 前面有四位字母的单词.

 

 

7.查询空值(SELECT 字段名 FROM 表名 WHERE IS NULL|IS NOT NULL;)

 

 

8.带AND的多条件查询(WHERE 条件子句1 AND 条件子句2;)优先级高于OR

 

 

9.带OR多条件查询(WHERE 条件子句1 OR 条件子句2;)IN更快,还能嵌套.完成和OR相同功能.   优先级低于 AND

 

 

10.查询结果不重复(SELECT DISTINCT 字段名 FROM 表名;)

 

 

11.对查询结果进行排序(SELECT 字段名1,字段名2 FROM 表名 ORDER BY 要排序的字段名1,要排序的字段名2;)  

ORDER BY 字段名 DESC 降序排列

ORDER BY 字段名 ASC  升序排列(默认)

 

 

12.分组查询(GROUP BY 字段名 HAVING 条件表达式;)

12.1 GROUP BY

GROUP BY通常和数集函数一起使用.

SELECT 数集函数 AS 字段别名 FROM 表名称 GROUP BY

 

12.2 HAVING 过滤

SELECT 字段名 FROM 表名 GROUP BY 字段名 HAVING 条件;

HAVING 用于分组后

WHERE用于分组前

GROUP BY 字段名 WITH ROLLUP

 

 

 

13.使用LIMIT限制查询结果的数量(SELECT *FROM 表名 LIMIT 开始行数参数(默认0),行数参数;)

 

 

 

3.使用集合函数查询

SELECT 聚合函数(字段名) AS 新生成的虚拟字段名(等于改名)

AVG()返回平均值

COUNT(*)返回表中总行数,COUNT(字段名)返回指定字段行数

MAX()返回最大值

MIN()返回最小值

SUM()返回和

 

 

 

 

4.内连接查询(INNER JOIN)

SELECT 要连接的字段名 FROM 表名1 INNER JOIN 表名2 ON 字段1=字段2;

 

SELECT 要连接的字段名 FROM 表名1 ,表名2 WHERE 字段1=字段2;

 

5.外连接查询(LEFT JOIN|RIGHT JOIN )

SELECT 要连接的字段名 FROM 表名1 LEFT|RIGHT JOIN 表名2 ON 字段1=字段2;

 

6.复合条件查询()在连接查询过程中,添加过滤条件从而使结果更加精确

SELECT 要连接的字段名 FROM 表名1 INNER JOIN 表名2 ON 字段1=字段2 条件;

 

7.子查询

一个查询嵌套在另一个查询内部mysql4.1开始引入

7.1.ANY,SOME 关键字表示满足任何一个条件,就可以返回结果作为外层查询条件

SELECT 字段名 FROM 表名 WHERE 条件>ANY|SOME(条件);

 

 

7.2.ALL 关键字要求满足所有内层查询条件,才会返回值

SELECT 字段名 FROM 表名 WHERE 条件>ALL(条件);

 

7.3.EXISTS|NOT EXISTS关键字 查看是否返回行,如果是返回,如果不是|反之相反

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

7.5比较运算符查询.

7.6合并查询结果(UNION|UNION ALL)

7.7为表取别名 (表名1 AS 表名1的别名)

7.8位列取别名(列名1 AS 列名1别名)

 

8. 使用正则表达式查询(REGEXP)

SELECT * FROM 表名 WHERE 表名 REGEXP "正则表达式"

推荐阅读