数据库应用(四): Ubuntu 下 MySQL 数据库简单查询

简单查询

  查询语句核心语法

  SELECT  [DISTINCT] *|{字段名1, 字段名2, 字段名3,……}
                       FROM 表名
             [WHERE 条件表达式1]
             [GROUP BY 字段名 [HAVING 条件表达式2]]
             [ORDER BY 字段名 [ASC|DESC]]
             [LIMIT [OFFSET] 记录数
  1. “字段1,字段2…”表示从表中查询的指定字段,星号(“*”)通配符表示表中所有字段,两者为互斥关系,任选其一。“DISTINCT”是可选参数,用于剔除查询结果中重复的数据
  2. from 表示从指定的表中查询数据

  3. “WHERE”是可选参数,用于指定查询条件

  4. “GROUP BY”是可选参数,用于将查询结果按照指定字段进行分组,“HAVING”也是可选参数,用于对分组后的结果进行过滤。

  5. “ORDER BY”是可选参数,用于将查询结果按照指定字段进行排序。排序方式由参数ASC或DESC控制,其中ASC表示按升序进行排列,DESC表示按降序进行排列。如果不指定参数,默认为升序排列
  6. “LIMIT”是可选参数,用于限制查询结果的数量。LIMIT后面可以跟2个参数,第一个参数“OFFSET”表示偏移量,如果偏移量为0则从查询结果的第一条记录开始…以此类推。如果不指定OFFSET,其默认值为0。第二个参数“记录数”表示返回查询记录的条数。

  

  查询student表中的所有字段

    

 

 

   

  查询student表中name字段和gender字段的数据(查询指定属性)

    

 

 

   PS: 指定查询对象 需要用 where 来限制 相关的条件表达式如下

      

 

 

 

   例如:

    查询name为“wusong”的姓名和 性别

    

 

 

 

  带IN关键字的查询  

  

SELECT *|字段名1,字段名2,……
FROM 表名
WHERE 字段名 [NOT] IN (元素1,元素2,……)

  例如:  

    查询student表中id值为1、2、3的id、成绩 、姓名、性别

    

 

 

 

  带BETWEEN AND关键字的查询

        —判断某个字段的值是否在指定的范围之内

SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 字段名 [NOT] BETWEEN 值1 AND 值2

  例如:

    查询student表中id值在2和5之间的学生id和姓名

      

 

 

 

  

  空值查询

    —判断某些列是否有NULL值

SELECT *|字段名1,字段名2,……
FROM 表名
WHERE 字段名IS [NOT] NULL

  例:

    查询student表中gender为空值的id、姓名、成绩、性别

      

 

 

 

  带DISTINCT关键字的查询

             —去重

SELECT DISTINCT 字段名 FROM 表名;

    例:

      查询student表中gender字段的值,查询记录不能重复

        

 

 

     DISTINCT关键字作用于多个字段

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

    在上面的语法格式中,只有DISTINCT关键字后指定的多个字段值都相同,才会被认作是重复记录。

 

 

 

  

  带LIKE关键字的查询

    —判断两个字符串是否相匹配

SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 字段名 [NOT] LIKE '匹配字符串';

  例:

    查找student表中name字段值包含字符“y”的学生id和姓名

      

 

 

   

  下划线(_)通配符    

    下划线通配符只匹配单个字符,如果要匹配多个字符, 需要使用多个下划线通配符。  

    PS: 汉字占两个

 

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

      百分号和下划线是通配符,它们在通配字符串中有特殊含义,

  因此,如果要匹配字符串中的百分号和下划线,就需要在通配字符串中使用右斜线(“\”)对百分号和下划线进行转义,

  例如,“\%”匹配百分号字面值,“\_”匹配下划线字面值。

    名字中含有 % 的

  

 

 

   

  

  带AND关键字的多条件查询

        -----连接两个或者多个查询条件

  

SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 条件表达式1 […… AND 条件表达式n];

例:  

  查找id >5 的女生   

 

 

 

 

  

  带OR关键字的多条件查询

    — 记录满足任意一个条件即被查出

SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 条件表达式1 OR […… OR 条件表达式n];

    例

       查询student表中id字段值小于3或者gender字段值为“女”的id、姓名、性别 

      

 

 

 

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

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

 

  

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

    

 SELECT 字段名1,字段名2,……
     FROM 表名
     LIMIT [OFFSET,] 记录数

    LIMIT:后面可以跟2个参数,“OFFSET”:为可选值,表示偏移量,如果偏移量为0则从查询结果的第一条记录开始…以此类推,如果不指定其默认值为0。

    “记录数”:表示返回查询记录的条数。

  

  例:

    查询student表中grade字段值从第5位到第8位的学生。

      

 

 

 

  高级查询

    1. COUNT()函数用来统计记录的条数
      SELECT COUNT(*) FROM 表名

       

    2. SUM()是求和函数,用于求出表中某个字段所有值的总和 
      SELECT SUM(字段名) FROM 表名;

       

    3. AVG()函数用于求出某个字段所有值的平均值
      SELECT AVG(字段名) FROM student;

       

    4. MAX()函数是求最大值的函数,用于求出某个字段的最大值
      SELECT MAX(字段名) FROM student;

       

    5. MIN()函数是求最小值的函数,用于求出某个字段的最小值
       SELECT MIN(grade) FROM student;

       

    6. ORDER BY对查询结果进行排序
      SELECT 字段名1,字段名2,……
      FROM 表名
      ORDER BY 字段名1 [ASC | DESC],字段名2 [ASC | DESC]……

      PS: NULL 会被认为最小, 建议and 上非空检测

    7. GROUP BY对字段值进行分组查询
           SELECT 字段名1,字段名2,……
           FROM 表名
           GROUP BY 字段名1,字段名2,……[HAVING 条件表达式];

  

 

 

  学习不易,诸君共勉

posted @ 2020-08-31 11:05  秦_殇  阅读(1035)  评论(0编辑  收藏  举报