Mysql查询数据

作者: Lucky_ce60 | 来源:发表于2017-10-27 15:34 被阅读85次

    数据库管理系统的一个最主要的功能就是数据查询,它不应只是简单的返回数据库中的数据,还应该是对数据的筛选,以及数据用什么样方式显示出来。

    Mysql从数据表中查询数据的基本语句为SELECT语句。

    1.单表查询:就是从以一张表数据中查询所需的数据。

    • 查询所有字段:
    SELECT * FROM 表名;   
    
    • 查询指定字段:
    SELECT 列名 FROM 表名;   //查询单个字段
    SELECT 字段名1,字段名2,...字段n  FROM 表名;  //查询多个字段
    
    • 查询指定记录:
    SELECT 字段名1,字段名2,...字段名n
    FROM 表名
    WHERE 查询条件;
    
    WHERE条件判断符 说明
    = 相等
    <>,!= 不相等
    < 小于
    <= 小于或者等于
    > 大于
    >= 大于或者等于
    BETWEEN 位于两值之间
    • 带in关键字的查询:用来查询满足指定范围内的条件的记录。
    eg:查询id为101和102的记录
    SELECT ID ,其他字段名,
    FROM 表名
    WHERE ID IN(101,102);
    
    • 带between and 的范围查询:用来查询某个范围内值。反之,加not,查询不在某个范围内。(举例请参考上面例子)
    • 带like的字符匹配查询:(举例请参考上面例子)
      1通配符“%”,匹配任意长度的字符,甚至包括零字符。
      2下划线通配符“_”,一次只能匹配任意一个字符。
    • 查询空值:在WHERE条件中使用IS NULL;
    • 带AND的多条件查询:在WHERE条件中使用AND与多个条件表达式分开;
    • 带OR的多条件查询:表示只需要满足其中一个条件的记录即可,用OR连接;
    • 查询结果不重复:
    SELECT DISTINCT 字段名 FROM 表名; 
    
    • 对查询结果排序:
    SELECT 字段名 FROM 表名 ORDER BY 字段名; // 默认为升序排列,若要降序排序,则在最后加上DESC
    

    2.分组查询:指对数据按照某个或多个字段进行分组,Mysql中使用GROUP BY 关键字对数据分组。

    [GROUP BY 字段] [HAVING <条件表达式>]
    
    • 使用HVAING过滤分组:GROUP BY 和HAVING 一起限定显示
      HAVING和WHERE 区别:having在数据分组之后进行过滤来选择分组,而where在分组之前来选择记录。
    • 在GROUP BY 子句中使用 WITH ROLLUP:指在所有查询出的分组记录之后增加一条记录,该记录是计算查询出的所有记录的总和。
    • 使用LIMIT限制查询结果的数量:
    LIMIT [位置偏移量] 行数;
    

    3.使用集合函数查询:

    • COUNT()函数:统计数据表中包含的记录行的总数,返回某列的行数
    SELECT COUNT(*) AS 字段名 FROM 表名;
    

    注意: count()与count(指定列字段名)的区别:如果指定列的值为空时,计算时就会被忽略;但是count()就不会忽略。

    • SUM函数:求总和,返回指定列值的和
    SELECT SUM(quantity)AS 字段名 FROM 表名 WHERE  [指定条件];
    
    • AVG 函数:计算返回的行数和每一行数据的和,求得指定列数据的平均值。(如sum函数举例)
    • MAX 函数:返回指定列的最大值。(如sum函数举例)
    • MIN 函数:返回指定列的最小值。(如sum函数举例)

    4.连接查询:

    • 内连接:使用比较符进行表间列数据的比较操作,并列出这些表中与连接条件相匹配的数据行,组成新的记录。
      举例:
    SELECT suppliers.s_id,s_name,f_name,f_pirce FROM fruits ,suppliers WHERE fruits.s_id=suppliers.s_id;
    // 其中suppliers和fruits为表名,两个表中都有相同的字段s_id;所以建起连接,新纪录就是两个表中
    具。有相同s_id的列值。因此在比较的时候需要完全限定表名(格式为"表名.列名")
    
    • 外连接查询:连接查询的内查询时,返回查询结果集合中的仅是符合查询条件,但有时还需要查看没有被包含信息的行。包括左连接和右连接。
    • 左连接:左连接的结果包括left outer 子句中的指定的左表的所有行,而不仅仅是连接列所匹配的行。右连接与左连接相反。

    相关文章

      网友评论

        本文标题:Mysql查询数据

        本文链接:https://www.haomeiwen.com/subject/yroxpxtx.html