单表查询

任务七:查询单表

7.1 简单查询
7.1.1 SELECT语句
- SELECT语句的基本语法格式如下:
SELECT [DISTINCT]  * |(字段名1, 字段名2, .....)
             FROM 表名
             [WHERE 条件表达式 1]
             [GROUP BY 字段名 [HAVING 条件表达式 2]]
             [ORDER BY 字段名[ASCIDESC]]
             [LIMIT [OFFSET] 记录数]
7.1.2 查询所有字段
1、在SELECT语句中指定所有字段
在SELECT语句中列出所有字段名来查询表中的数据,其语法格式如下:
         SELECT 字段1,字段2, …… FROM 表名 ;
:" 字段名1、字段名2, …… " 表示查询的字段名,这里需要列出表中所有的字段名。
:字段的顺序是可以改变的,无需按照其表中定义的顺序进行排列,查询结果中字段显示的顺序也会做相应改变。
2、在SELECT语句中使用星号(“*”)通配符代替所有字段
在SELECT语句中使用(“*”)来查询表中的数据,其语法格式如下:
         SELECT * FROM 表名 ;
7.1.3 查询指定字段
在SELECT语句的字段列表中指定要查询的字段,这种方式只针对部分字段进行查询。
         SELECT 字段名1,字段名2, …… FROM 表名 ;
:“字段名1,字段名2,……”表示表中的字段名称,这里只需指定表中部分字段的名称
7.2 按条件查询
7.2.1 关系运算符的查询
在SELECT语句中,最常见的是使用WHERE子句指定查询条件对数据进行过滤,其语法格式如下:
         SELECT 字段名1,字段名2, …… FROM 表名 WHERE 条件表达式;

:说明“<>”运算符和“!=”,都表示不等于
例:查询student表中id为4的学生姓名,SQL语句如下所示:
   SELECT id,name FROM student WHERE id=4;
7.2.2 带IN关键字的查询
IN关键字用于判断某个字段的值是否在指定集合中,如果字段的值在集合中,则满足条件,该字段所在的记录将被查询出来。语法格式如下所示:
          SELECT * | 字段名1,字段名2, …… FROM 表名 WHERE 字段名 [NOT] IN (元素1,元素2, ……);
:“元素1、元素2…”表示集合中的元素,即指定的条件范围。使用NOT表示查询不在IN关键字指定集合范围中的记录
7.2.3 带BETWEEN  AND关键字的查询
BETWEEN AND 用于判断某个字段的值是否在指定的范围之内,该字段所在的记录将被查询出来。语法格式如下所示:
          SELECT * | 字段名1,字段名2, …… FROM 表名 WHERE 字段名 [NOT] BETWEEN 值1 AND 值2;
“值1”表示范围条件的起始值,“值2”表示范围条件的结束值
7.2.4 空值查询
在数据表中,某些列的值可能为空值(NULL),空值不同于0,也不同于空字符串。语法格式如下所示:
          SELECT * | 字段名1,字段名2, …… FROM 表名 WHERE 字段名 IS [NOT] NULL;
7.2.5 带DISTINCT关键字的查询
在SELECT语句中,可以使用DISTINCT关键字来去掉查询记录中重复的值。语法格式如下:
          SELECT DISTINCT 字段名1,字段名2,…… FROM 表名;
7.2.6 带LIKE关键字的查询
LIKE关键字,用于对字符串进行模糊查询。语法格式如下:
          SELECT * | 字段名1,字段名2,…… FROM 表名 WHERE 字段名 [NOT] LIKE '匹配字符串';
:NOT是可选参数,使用NOT表示查询与指定字符串不匹配的记录。“匹配字符串”指定用来匹配的字符串,其值可以是一个普通字符串,也可以是包含百分号(%)和下划线(_)的通配字符串。百分号和下划线统称为通配符
(1)、百分号(%)通配符可以匹配任意长度的字符串,包括空字符串。
(2)、下划线(_)通配符可以一个长度的字符串,包括空字符串。
7.2.7 带AND关键字的多条件查询
使用AND关键字可以连接两个或者多个查询条件,只有满足所有条件的记录才会被返回。语法格式如下所示:
         SELECT * | 字段名1,字段名2,…… FROM 表名 WHERE 条件表达式1 AND 条件表达式2 […… AND 条件表达式n];
7.2.8 带OR关键字的多条件查询
使用OR关键字连接多个查询条件,只要记录满足任意一个条件就会被查询出来。
         SELECT * | 字段名1,字段名2,…… FROM 表名 WHERE 条件表达式1 OR 条件表达式2 […… OR 条件表达式n];
:OR和AND关键字一起使用的情况,AND的优先级高于OR,应该先运算AND两边的条件表达式,再运算OR两边的条件表达式。
7.3高级查询
7.3.1 聚合函数

1、COUNT()函数

COUNT()函数用来统计记录的条数。语法格式如下所示:
         SELECT COUNT(*) FROM 表名;
2、SUM()函数
SUM()是求和函数,用于求出表中某个字段所有值的总和。语法格式如下所示:
        SELECT SUM(字段名) FROM 表名;
3、AVG()函数
AVG()函数用于求出某个字段所有值的平均值。语法格式如下所示:
        SELECT AVG(字段名) FROM 表名;
4、MAX()函数
MAX()函数是求最大值的函数,用于求出某个字段的最大值。语法格式如下所示:
        SELECT MAX(字段名) FROM 表名;
5、MIN()函数
MIN()函数是求最小值的函数,用于求出某个字段的最小值。语法格式如下所示:
        SELECT MIN(字段名) FROM 表名;
7.3.2 对查询结果排序
使用ORDER BY对查询结果进行排序。语法格式如下所示:
        SELECT * | 字段名1,字段名2,…… FROM 表名 ORDER BY 字段名1 [ASC | DESC],字段名2 [ASC | DESC]…… ;
:参数ASC表示按照升序进行排序,DESC表示按照降序进行排序。默认情况下,按照ASC方式进行排序。
7.3.3 分组查询
使用GROUP BY按某个字段或者多个字段中的值进行分组,字段中值相同的为一组。语法格式如下所示:
        SELECT * | 字段名1,字段名2,…… FROM 表名 GROUP BY 字段名1,字段名2,…… [HAVING 条件表达式];
:HAVING关键字指定条件表达式对分组后的内容进行过滤。需要特别注意的是,GROUP BY一般和聚合函数一起使用,如果查询的字段出现在GROUP BY后,却没有没有包含在聚合函数中,该字段显示的是分组后的第一条记录的值。
 1、单独使用GROUP BY分组
单独使用GROUP BY关键字,查询的是每个分组中的一条记录
例: 查询student表中的记录,按照gender字段值进行分组,SQL语句及其执行结果如下所示:

2、GROUP BY和聚合函数一起使用

GROUP BY和聚合函数一起使用,可以统计出某个或者某些字段在一个分组中的最大值、最小值、平均值等等。
例: 将student表按照gender字段值进行分组查询,计算出每个分组中各有多少名学生,SQL语句及其执行结果如下所示:

:HAVING关键字和WHERE关键字的作用相同,都用于设置条件表达式对查询结果进行过滤。HAVING关键字和WHERE关键字的区别在于,HAVING关键字后可以跟聚合函数,而WHERE关键字不能。通常情况下HAVING关键字都和GROUP BY一起使用,用于对分组后的结果进行过滤。

7.3.4 使用LIMIT限制查询结果的数量
使用LIMIT关键字可以指定查询结果从哪一条记录开始以及一共查询多少条信息。语法格式如下所示:
            SELECT * | 字段名1,字段名2,…… FROM 表名 LIMIT [OFFSET,] 记录数;
OFFSET偏移量是可选关键字,若没有默认从1开始查询,若有为n,则从n+1开始查询。
7.4.1 为表取别名
在查询操作时,如果表名很长使用起来就不太方便,这时可以为表取一个别名,用这个别名来代替表的名称。格式如下所示:
            SELECT * FROM 表名 别名;
原文地址:https://www.cnblogs.com/zmy2001/p/12111344.html