数据库学习(八)
顾颖17021223250
转载自https://blog.csdn.net/tc_1337/article/details/80924588
【嵌牛导读】:单表查询
【嵌牛鼻子】:查询
【嵌牛提问】:如何操作数据库进行表的查询?
【嵌牛正文】:
一、简单查询
SELECT [DISTINCT] * | {字段名1, 字段名2, 字段名3,...}
FROM表名 [WHERE 条件表达式1]
[GROUP BY字段名 [HAVING 条件表达式2]]
[ORDER BY字段名 [ASC | DESC]]
[LIMIT [OFFSET]记录数]
说明: LIMIT[OFFSET]记录数: "LIMIT" 是可选参数,用于限制查询结果的数量. LIMIT后面可以跟两个参数,
第一个参数"OFFSET"表示偏移量, 如果偏移量为0则从查询结果的第一条记录开始,偏移量为1则从查询结
果的第二条记录开始,以此类推. OFFSET为可选值, 如果不指定其默认值为0.第二个参数"记录数"表示返回
查询记录的条数.
1.1查询所有字段
SELECT字段名1, 字段名2, ...FROM 表名;
或
SELECT * FROM表名;
1.2查询指定字段
SELECT字段名1, 字段名2, ... FROM 表名;
二、按条件查询
2.1带关系运算符的查询
SELECT字段名1, 字段名2, ... FROM 表名 WHERE 条件表达式
关系运算符包括:
>, >=, =, <, <= , !=, <>
2.2带IN关键字的查询
IN关键字用于判断某个字段的值是否在指定的集合中,如果字段的值在集合中, 则满足条件,该
字段所在记录将被查询处理.
SELECT * |字段名1, 字段名2, ... FROM 表名
WHERE字段名 [NOT] IN (元素1, 元素2, ...)
2.3使用BETWEEN AND 关键字查询
BETWEEN AND用于判断某个字段的值是否在指定的范围之内,如果字段的值在指定范围则满足条件
该字段所在的记录将被查询出来,反之则不会被查询出来.
SELECT * | {字段名1, 字段名2, ...} FROM 表名
WHERE字段名 [NOT] BETWEEN 值1, AND 值2 ;
其中,值1 和 值2 都包含在结果集之内.
2.4空值查询
SELECT * |字段名1, 字段名2, ... FROM 表名
WHERE字段名 IS [NOT] NULL;
2.5带DISTINCT 关键字的查询
SELECT DISTINCT字段名 FROM 表名;
其中, DISTINCT关键字可以作用于多个字段
SELECT DISTINCT字段名1, 字段名2, ... FROM 表名;
当DISTINCT关键字作用于多个字段时,只有这个多个字段的值都对应相同,才被认为是重复记录.
2.6带LIKE关键字的查询
SELECT * | {字段名1, 字段名2,...} FROM 表名 WHERE 字段名[NOT] LIKE ‘匹配字符串’;
“匹配字符串”是指用来匹配的字符串,其值可以是一个普通字符串,也可以是包含百分号(%)和下划线
(_)的通配符字符串。
百分号(%)通配符:匹配任意长度的字符串,包括空字符串。
下划线(_)通配符:只能匹配单个字符,如果要匹配多个字符,需要使用多个下划线通配符。
如果使用多个下划线匹配多个连续的字符,下划线之间不能有空格。
注意:如果要匹配字符串中的百分号和下划线,就需要在通配字符串中使用右斜线(“\”)对百分号
和下划线进行转义。
2.7带AND关键字的多条件查询
SELECT * | {字段名1, 字段名2,...} FROM 表名
WHERE条件表达式1 AND 条件表达式2 [... AND 条件表达式n];
2.8带OR关键字的多条件查询
只要记录满足任意一个条件就会被查询出来。
SELECT * | {字段名1, 字段名2, ...} FROM 表名 WHERE 条件表达式1 OR 条件表达式2 [...OR条件表达式n];
注意:AND的优先级高于OR,当AND和OR关键字一起使用的时候,先运算AND两边的条件表达式,
再运算OR两边的条件表达式。
三、高级查询'
3.1聚合函数
常见函数:
COUNT( )返回某列的函数 MAX() 返回某列的最大值 MIN() 返回某列的最小值
SUM()返回某列值的和 AVG() 返回某列的平均值
SELECT COUNT(*) FROM表名;
SELECT SUM(字段名) FROM 表名;
SELECT AVG(字段名) FROM 表名;
....
3.2对查询结果排序
SELECT字段名1, 字段名2, ... FROM 表名 ORDER BY 字段名1 [ASC | DESC], 字段名2 [ASC|DESC]
注意:在按照指定字段进行升序排序时,如果某记录的字段值为NULL,则这条记录会在第一条显示,
这是因为NULL值可以被认为是最小值。
3.3分组查询
SELECT字段名1, 字段名2,... FROM 表名 GROUP BY 字段名1, 字段名2,...
[HAVING条件表达式]
说明:指定的字段名1,字段名2等是进行分组的依据。
HAVING关键字指定条件表达式对分组后的内容进行过滤。
GROUP BY和聚合函数一起使用,可以统计出某个或者某些字段在一个分组中的最大值、最小值、平均值等。
注意:HAVING关键字和WHERE关键字作用相同,都用于设置条件表达式对查询结果进行过滤,两者区别在于
HAVING关键字后可以跟聚合函数,而WHERE关键字后不能。
3.4使用LIMIT限制查询结果的数量
可以指定查询结果从哪一条记录开始以及一共查询多少条信息。
SELECT字段名1, 字段名2,... FROM 表名 LIMIT [OFFSET,] 记录数
说明:参数“OFFSET”表示偏移量,如果偏移量为0,则从查询结果的第一条记录开始,偏移量为1
则从查询结果的第二条记录开始,依次类推。
参数“记录数”表示返回查询记录的条数。
四、为表和字段取别名
SELECT * FROM表名 [AS] 别名;
SELECT字段名 [AS] 别名 [, 字段名[AS] 别名...] FROM 表名;