zoukankan      html  css  js  c++  java
  • mysql 查询语句整理

    单表查询

     MySQL从数据表中查询数据最基本的语句是SELECT语句,在前面的“增删查”已经使用过:SELECT * FROM 表名,也就是查询指定数据表中的所有数据。下面将对SELECT语句进行详细介绍。

    查询所有字段

    语法:SELECT 字段名1,字段名2,…

       FROM 表名

    结果:

    注意:字段顺序可以更改则显示的结果也会作出对应的调整:

    4.1.2  在SELECT语句中使用(‘ * ’)通配符代替所有字段

    语法:SELECT * FROM 表名;

    4.1.3  查询指定的部分字段

    语法:SELECT 字段名1,字段名2,… FROM 表名;

    4.2   按条件查询

    4.2.1  带关系运算符的查询

     语法:SELECT 字段名1,字段名2,…

        FROM 表名

          WHERE 条件表达式

    在WHERE子句中可以使用如下关系运算符:

    关系运算符

    说        明

        =

        等于

        <>

        不等于

        !=

        不等于

        <

        小于

        <=

        小于等于

        >

        大于

        >=

        大于等于


    举例:

    4.2.2  带 IN 关键字的查询

    IN关键字用于判断某个字段的值是否在指定集合中,若在,则该字段所在的记录将会被查询出来.

    语法:SELECT * | 字段名1,字段名2,…

       FROM 表名

       WHERE 字段名 [ NOT ]  IN (元素1,元素2,…)

    注意:NOT IN 与 IN 相反,查询的是不在指定范围内的记录。

    4.2.3  带 BETWEEN AND  关键字的查询

    BETWEEN AND 用于判断某个字段的值是否在指定范围之内,若在,则该字段所在的记录会被查询出来,反之不会。

    语法:SELECT * | { 字段名1,字段名2,… }

       FROM  表名

          WHERE 字段名 [ NOT ] BETWEEN  值1  AND  值2;

    注意:NOT BETWEEN AND 表示查询指定范围外的记录。

    4.2.4  空值查询

    在数据表中有些值可能为空值(NULL),空值不同于0,也不同于空字符串,需要使用 IS NULL 来判断字段的值是否为空值。

    语法:SELECT * | 字段名1,字段名2,…

       FROM 表名

       WHERE 字段名 IS [ NOT ] NULL

    注意:IS NOT NULL 关键字用来查询字段不为空值的记录。

    4.2.5  带 DISTINCT 关键字的查询

    很多表中某些字段的数据存在重复的值,可以使用DISTINCT关键字来过滤重复的值,只保留一个值。

    语法:SELECT DISTINCT 字段名 FROM 表名;

    注意:DISTINCT 关键字还可作用于多个字段,则只有多个字段的值都完全相同时才会被认作是重复记录。

    4.2.6  带 LIKE 关键字的查询

    语法:SELECT * | 字段名1,字段名2,…

       FROM 表名

       WHERE 字段名 [ NOT ] LIKE ‘匹配字符串’;

     

    百分号(%)通配符

     

    匹配任意长度的字符串,包括空字符串。例如,字符串“ c% ”匹配以字符 c 开始,任意长度的字符串,如“ ct  ”,“ cut ”,“ current ”等;字符串“ c%g ”表示以字符 c 开始,以 g 结尾的字符串;字符串“ %y% ”表示包含字符“ y ”的字符串,无论“ y ”在字符串的什么位置。

     

    (2)下划线(_)通配符

     下划线通配符只匹配单个字符,若要匹配多个字符,需要使用多个下划线通配符。例如,字符串“ cu_ ”匹配以字符串“ cu ”开始,长度为3的字符,如“ cut ”,“ cup ”;字符串“ c__l”匹配在“ c ”和“ l ”之间包含两个字符的字符串,如“ cool ”。需要注意的是,连续的“_”之间不能有空格,例如“M_ _QL”只能匹配“My SQL”,不能匹配“MySQL”。

    注意:若要查询的字段值本来就含有“ % ”或者“ _ ”,则要用“ ”进行转义,如要查询本身含有“ % ”的字符串,命令应改为 “ %\%%”。

    4.2.7  带 AND 关键字的多条件查询

    在使用SELECT语句查询数据时,优势为了使查询结果更加精确,可以使用多个查询条件,如使用 AND 关键字可以连接两个或多个查询条件。

    语法:SELECT * | 字段名1,字段名2,…

       FROM 表名

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

    4.2.8  带 OR 关键字的多条件查询

    与 AND 关键字不同,OR 关键字只要满足任意一个条件就会被查询出来

    语法:SELECT * | 字段名1,字段名2,…

       FROM 表名

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

    4.2.9   OR 和 AND 一起使用的情况

    OR 和 AND 一起使用的时候,AND 的优先级高于 OR,因此二者一起使用时,会先运算 AND 两边的表达式,再运算 OR 两边的表达式。

    高级查询

    聚合函数

      函数名称

    作用

        COUNT()

        返回某列的行数

        SUM()

        返回某列值的和

        AVG()

        返回某列的平均值

        MAX()

        返回某列的最大值

        MIN()

        返回某列的最小值

    (1)COUNT()函数:统计记录的条数

    语法:SELECT COUNT(*) FROM 表名

    (2)SUM()函数:求出表中某个字段所有值的总和

    语法:SELECT  SUM(字段名) FROM 表名;

     

    (3)AVG()函数:求出表中某个字段所有值的平均值

    语法:SELECT AVG(字段名) FROM 表名;

    (4)MAX()函数:求出表中某个字段所有值的最大值

    语法:SELECT MAX(字段名) FROM 表名;

    (5)MIN()函数:求出表中某个字段所有值的最小值

    语法:SELECT MIN(字段名) FROM 表名;

    4.3.2  对查询结果进行排序

    语法:SELECT 字段名1,字段名2,…

       FROM 表名

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

    在该语法中指定的字段名是对查询结果进行排序的依据,ASC表示升序排列,DESC 表示降序排列,默认情况是升序排列。

    4.3.3  分组查询

    在对表中数据进行统计的时候,可以使用GROUP BY 按某个字段或者多个字段进行分组,字段中值相同的为一组,如男生分为一组,女生分为一组。

    语法:SELECT  字段名1,字段名2,…

       FROM 表名

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

    (1)单独使用 GROUP BY 进行分组

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

    注意:若在此2例中键入命令之后出现“#1055”错误,无法完成分组查询,是由于MySQL版本升级到了5.7,可自行百度“MySQL 1055错误”参考解决办法。

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

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

    (2) GROUP BY 和 HAVING 关键字一起使用

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

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

    语法:SELECT 字段名2,字段名2,…

       FROM 表名

       LIMIT [ OFFSET ,] 记录数

    在此语法中,LIMIT 后面可以跟两个参数,第一个参数“ OFFSET ”表示偏移量,如果偏移量为0,则从查询结果的第一条记录开始,偏移量为1则从查询结果中的第二条记录开始,以此类推。OFFSET为可选值,默认值为0,第二个参数“记录数”表示指定返回查询记录的条数。

    4.4  为表和字段取别名

    4.4.1 为表取别名

    在进行查询操作时,如果表名很长使用起来不方便,可以为表取一个别名来代替表的名称。

    语法:SELECT * FROM 表名 [ AS ] 别名;

    4.4.1 为字段取别名

    语法:SELECT 字段名 [ AS ] 别名 [ ,字段名 [AS] 别名,…]  FROM 表名 ;

  • 相关阅读:
    Windows Azure Storage (17) Azure Storage读取访问地域冗余(Read Access – Geo Redundant Storage, RA-GRS)
    SQL Azure (15) SQL Azure 新的规格
    Azure China (5) 管理Azure China Powershell
    Azure China (4) 管理Azure China Storage Account
    Azure China (3) 使用Visual Studio 2013证书发布Cloud Service至Azure China
    Azure China (2) Azure China管理界面初探
    Azure China (1) Azure公有云落地中国
    SQL Azure (14) 将云端SQL Azure中的数据库备份到本地SQL Server
    [New Portal]Windows Azure Virtual Machine (23) 使用Storage Space,提高Virtual Machine磁盘的IOPS
    Android数据库升级、降级、创建(onCreate() onUpgrade() onDowngrade())的注意点
  • 原文地址:https://www.cnblogs.com/q-1234/p/9584123.html
Copyright © 2011-2022 走看看