zoukankan      html  css  js  c++  java
  • 单表查询Ⅱ

    单表查询

    先把该铺垫的铺垫好

    建表--插入数据--查询数据

    接上一篇~~~~

    4、在SELECT语句中,最常见的是使用WHERE子句指定查询条件对数据进行过滤

         格式:SELECT 字段名1,...,字段名n FROM 表名 WHERE 条件表达式;

    常见的关系运算符

    ①查询表中id4的学生姓名

     

     ②查看表中成绩大于90的数据

     

     5、带IN关键字的查询

      IN关键字用于判断某个字段的值是否在指定集合中

      格式:SELECT *|字段名1,...,字段名n FROM 表名 WHERE

           字段名[NOT] IN(字段名1,...,字段名n)

                                 如上两图所示,很容易看出两者间的区别

                        译1id123的记录

                        译2id不为123的记录

    注意:在上面的语法格式中,“元素1、元素2…”表示集合中的元素,即指定的条件范围。NOT是可选参数,使用NOT表示查询不在IN关       键字指定集合范围中的记录。

    6、带BETWEEN  AND关键字的查询

       格式:SELECT *|字段名1,...,字段名n FROM 表名 WHERE

            字段名[NOT] BETWEEN 值1 ADD 值2

       注意:“值1”表示范围条件的起始值,“值2”表示范围条件的结束值

                通常情况下“值1”小于“值2”,否则查询不到任何结果。

     

                                        如上两图所示,很容易看出两者间的区别

                                 译1id2-5之间的记录

                                 译2id不为2-5之间的记录

    7、空值查询

    使用IS NULL关键字来判断字段的值是否为空值

      格式:SELECT *|字段名1,...,字段名n FROM 表名 WHERE

           字段名 IS [NOT] NULL

     

                            如上两图所示,很容易看出两者间的区别

                          译1gender为空的记录

                          译2gender不为空的记录

    8、DISTINCT关键字的查询

       使用DISTINCT关键字来去掉查询记录中重复的值。

     ①  格式:SELECT DISTINCT 字段名 FROM 表名;

     

    从查询记录可以看到,这次查询只返回了3条记录的gender值,分别为“NULL”,不再有重复值。

    ②DISTINCT关键字作用多个字段

    格式:SELECT DISTINCT 字段名1,字段名2……FROM 表名;

    注意:只有多个字段的值都相同才会被认为是重复的

          (查询表中的gendername字段)

     

    附:为了下面的操作,重新在表中增加了值

    9、带LIKE关键字的查询

    LIKE关键字用于对字符串进行模糊查询

    SELECT *或字段名1,字段名2……

    FROM 表名WHERE 字段名【NOTLIKE “匹配字符串

    匹配字符串指定用来匹配的字符串,其值可以是一个普通字符串,也可以是包含%_的通配字符串。

    使用百分号通配符查询

    百分号通配符:一个百分号可以匹配任意多的字符,包括空字符

    A、格式:SELECT id,name FROM student WHERE name LIKE "s%";

     

     

    翻译:查找表中name字段值以字符“s”开头的学生id

    B、格式:SELECT id,name FROM student_td WHERE name LIKE "w%g";

     

     翻译:查询表中name字段值以字符“w”开始,以字符“g”结束的学生id

    C、格式:SELECT id,name FROM student_td WHERE name LIKE "%y%";

     

    翻译:查询表中name字段值包含字符“y”的学生id

    D、LIKE之前可以使用NOT关键字,用来查询与指定通配字符串不匹配的记录。

       格式:SELECT id,name FROM student_td WHERE name NOT LIKE "%y%";

     翻译:查询表中name字段值不包含字符“y”的学生id

    下划线通配符:一个下划线匹配一个字符,包括空字符

    一个”—”可以匹配一个字符,包括空字符串

    多个”—”可以匹配任意多的字符,包括空字符串

     

     翻译:查询student表中name字段值以字符串“wu”开始,以字符串“ong”结束,并且两个字符串之间只有一个字符的记录

     

    翻译:查询表中name字段值包含7个字符,并且以字符串“ing”结束的记录

    注意:(图中现象)

     因为在-ing前有四个字母,所以在通配字符串中使用了4个下划线通配符,它匹配name字段值中“ing”前面的4个字符,如果不匹配,就是空值

    ③使用百分号和下划线通配符进行查询操作

     注意:百分号和下划线是通配符,它们在通配字符串中有特殊含义,因此,如果要匹配字符串中的百分号和下划线,就需要在通配字        符串中使用右斜线()对百分号和下划线进行转义

    在查询之前先添加一条记录

     

    从上面的执行语句中可以看到,添加的新记录其name字段值为“sun%er”,包含一个百分号字面值

     

     翻译:查询结果可以看到,查出了name字段值为“sun%er”的新记录

    10、AND关键字的多条件查询

       使用AND关键字可以连接两个或者多个查询条件,只有满足所有条件的记录才会被返回

       格式:SELECT *|{字段名1,字段名2,……}

                  FROM 表名

                   WHERE 条件表达式1 AND 条件表达式2 […… AND 条件表达式n];

    注:在WHERE关键字后面跟了多个条件表达式,每两个条件表达式之间用AND关键字分隔

       ①查询一个

     

    翻译:查询表中id字段值小于5,并且gender字段值为“女”的学生姓名

    ②查询多个

     

    用两个AND关键字连接了三个条件表达式

    翻译:查询表中id字段值在78910之中,name字段值以字符串“ng”结束,并且grade字段值小于80的记录

    11、带OR关键字的多条件查询

      在使用SELECT语句查询数据时,也可以使用OR关键字连接多个查询条件,只要记

      录满足任意一个条件就会被查询出来。

    格式:SELECT *|{字段名1,字段名2,……}

               FROM 表名

               WHERE 条件表达式1 OR 条件表达式2 […… OR条件表达式n];

     ①查询一个

     

    翻译:查询表中id字段值小于3或者gender字段值为“女”的学生姓名

    ②查询多个

     翻译:查询表中满足条件name字段值以符“h”开始,或者gender字段值为“女”,或者grade字段值为100的记录

    12、OR和AND关键字一起使用的情况

      注意:AND的优先级高于OR,因此当两者在一起使用时,应该先运算AND两边的条件表达式,再运算OR两边的条件表达式。

     

     翻译:查询表中gender字段值为“女”或者gender字段值为“男”,并且grade字段值为100的学生姓名

    ------------------------------------------------------------------------------------------------------------------

    高级查询

    13、聚合函数

    注意:表中的函数用于对一组值进行统计,并返回唯一值,这些函数被称为聚合函数。

    ①COUNT()函数

    COUNT()函数用来统计记录的条数

    格式:SELECT COUNT(*) FROM 表名;

    翻译:查询表中一共有多少条记录,从查询结果可以看出,表中一共有16条记录

    SUM()函数

    SUM()是求和函数,用于求出表中某个字段所有值的总和

    格式:SELECT  SUM(字段名) FROM 表名;

     翻译:求出表中grade字段的总和,所有学生grade字段的总和为1273

    AVG()函数

    AVG()函数用于求出某个字段所有值的平均值

    格式:SELECT AVG(字段名) FROM 表名;

     

    翻译:求出表中grade字段的平均值,所有学生grade字段的平均值为79.5625

    MAX()函数

    MAX()函数是求最大值的函数,用于求出某个字段的最大值

    格式:SELECT MAX(字段名) FROM 表名;

     

     翻译:求出表中所有学生grade字段的最大值,所有学生grade字段的最大值为100

    MIN()函数

    MIN()函数是求最小值的函数,用于求出某个字段的最小值

    格式:SELECT MIN(字段名) FROM 表名;

    翻译:求出表中grade字段的最小值,所有学生grade字段的最小值为40

    14、对查询结果排序

    为了使查询结果满足用户的要求,可以使用ORDER BY对查询结果进行排序。

    格式:SELECT 字段名1,字段名2,……

               FROM 表名

               ORDER BY 字段名1 [ASC | DESC],字段名2 [ASC | DESC]……

     注意:参数ASC表示按照升序进行排序,DESC表示按照降序进行排序。默认情况下,按照ASC方式进行排序。

     

    翻译:查出表中的所有记录,并按照grade字段进行排序,从查询结果可以看到,返回的记录按照ORDER BY指定的字段grade进行排序,并且默认是按升序排列

    ②利用ASC升序排序

     翻译:查出表中的所有记录,使用参数ASC按照grade字段升序方式排列

          从查询结果可以看到,在ORDER BY中使用了ASC关键字,返回结果和①查询的结果一致。

    ③使用DESC降序排序

    翻译:查出表中的所有记录,使用参数DESC按照grade字段降序方式排列

          从查询结果可以看到,在ORDER BY中使用了DESC关键字,返回的记录按照grade字段的降序进行排列。

    ④一个字段升序一个字段降序

    翻译:查询表中的所有记录,按照gender字段的升序和grade字段的降序进行排列

    15、分组查询

      可以使用GROUP BY按某个字段或者多个字段中的值进行分组,字段中值相同的为一组。

      格式:SELECT 字段1,字段2 ...

                 FROM 表名

                 GROUP BY 字段1,字段2 ...[HAVING 条件表达式];

    指定的字段名1、字段名2等是对查询结果分组的依据。HAVING关键字指定条件表达式对分组后的内容进行过滤。需要特别注意的是,GROUP BY一般和聚合函数一起使用,如果查询的字段出现在GROUP BY后,却没有没有包含在聚合函数中,该字段显示的是分组后的第一条记录的值,这样有可能会导致查询结果不符合我们的预期。

    HAVING是用来对分组后的数据再次进行筛选

    ①单独使用GROUP BY分组

      单独使用group by关键字,查询的是每个分组中的一条记录。

     

     翻译:查询表中的记录,按照gender字段值进行分组

    GROUP BY和聚合函数一起使用

      GROUP BY和聚合函数一起使用,可以统计出某个或者某些字段在一个分组中的最大值、最小值、平均值等等。

     

    翻译:将表按照gender字段值进行分组查询,计算出每个分组中各有多少名学生

    GROUP BYHAVING关键字一起使用

     HAVING关键字和WHERE关键字的作用相同,都用于设置条件表达式对查询结果进行过滤。

    HAVING关键字和WHERE关键字的区别在于HAVING关键字后可以跟聚合函数,而WHERE关键字不能。通常情况下HAVING关键字都和GROUP BY一起使用,用于对分组后的结果进行过滤。

     

    翻译:将表按照gender字段进行分组查询,查询出grade字段值之和小于300的分组

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

       关键字LIMIT可以指定查询结果从哪一条记录开始以及一共查询多少条信息。

         格式:SELECT 字段名1,字段名2,……

                    FROM 表名

                    LIMIT [OFFSET] 记录数

    ①无偏移量

    翻译:查询表中的前4条记录

    注意:从查询结果可以看到,执行语句中没有指定返回记录的偏移量,只指定了查询记录的条数4,因此返回结果从第一条记录开始,一共返回4条记录。

    ②存在偏移量

     

    翻译:查询student表中grade字段值从第5位到第8位的学生(从高到低)

    17、函数(列表)

     

     

     

     ①CONCAT(s1,s2,……)

     

    翻译:查询表中的所有记录,将各个字段值使用下划线_”连接起来

    IF(expr,v1,v2)

     

    翻译:查询表中的idgender字段值,如果gender字段的值为“男”则返回1,如果不为“男”则返回0

    18、为表取别名

    格式:SELECT * FROM 表名 [AS] 别名;

    注意:AS关键字用于指定表名的别名,它可以省略不写

     

     翻译:为表起一个别名s,并查询student表中gender字段值为“女”的记录

    格式:SELECT 字段名 [AS] 别名[,字段名 [AS] 别名,……] FROM 表名;

     

    翻译:查询表中的所有记录的namegender字段值,并为这两个字段其别名stu_namestu_gender

  • 相关阅读:
    通过代码学REST之二——Restlet框架学习
    页面解析工具:HtmlParser学习
    游标的使用
    软件测试工具杂谈
    XUL资料
    MYSQL5.1修改表名与复制表结构的定时器与存储过程
    mysql 5.7以上版本下载及安装
    AnyChart图表控件(一)简介
    AnyChart图表控件(二)优势
    踩坑 Pycharm 2020.1.1 安装/ JetBrains破解/ anacode配置
  • 原文地址:https://www.cnblogs.com/CcCyRrR/p/11935268.html
Copyright © 2011-2022 走看看