zoukankan      html  css  js  c++  java
  • 05、MySql表的操作(下)

    数据库中表的操作也有增删改查。此篇主要讲解查询。

    1、创建表

      CREATE TABLE table_name(

        字段名1  数据类型[数据宽度]  约束条件,

        字段名2  数据类型[数据宽度]  约束条件

        ……

      )ENGINE=InnoDB DEFAULT CHARSET=utf8;

           详细请看上一篇。

    2、删除数据表

      drop table table_name;

    3、修改表

      上一篇

    4、插入数据

      1、插入一条记录

      insert into talble_name (field1,field2……,fieldN)

          values

          value1,value2……,valueN);

      2、插入多条记录

      insert into talble_name (field1,field2……,fieldN)
          values
          (value1,value2……,valueN),
          (value1,value2……,valueN),
          (value1,value2……,valueN);

      当值和字段名全部对应时,可以不用写字段名,如下:

      insert into talble_name
          values
          (value1,value2……,valueN),
          (value1,value2……,valueN),
          (value1,value2……,valueN);

    5、查询表

      SELECT column_name,column_name
         FROM table_name
          [WHERE Clause]
          [OFFSET M ]

          [LIMIT N];

       查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。

       SELECT 命令可以读取一条或者多条记录。

       你可以使用星号(*)来代替所有字段,SELECT语句会返回表的所有字段数据

              你可以使用 WHERE 语句来包含任何条件。

              你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
              你可以使用 LIMIT 属性来设定返回的记录数。

    6、where子句

      查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
      你可以在WHERE子句中指定任何条件。
      你可以使用AND或者OR指定一个或多个条件。
      WHERE子句也可以运用于SQL的 DELETE 或者 UPDATE 命令。
      WHERE 子句类似于程序语言中的if条件,根据 MySQL 表中的字段值来读取指定的数据。

      例如:查询成绩表中数学成绩高于80的学生的所有信息。

      select * from score

        where

          score_name = "math"

            and

          grade >= 80;

    7、update语句

      UPDATE table_name SET field1=new-value1, field2=new-value2
      [WHERE Clause]
        你可以同时更新一个或多个字段。
        你可以在 WHERE 子句中指定任何条件。
        你可以在一个单独表中同时更新数据。
      当你需要更新数据表中指定行的数据时 WHERE 子句是非常有用的。
      例如:把学生表中4号同学的成绩改为89分
      update student 
        set
          grade = 89 
        where
          stu_id = 4;
     
    8、DELETE 语句
      DELETE FROM table_name [WHERE Clause]
        如果没有指定 WHERE 子句,MySQL表中的所有记录将被删除。
        你可以在 WHERE 子句中指定任何条件
        您可以在单个表中一次性删除记录。

      例如:删除成绩表中4号同学的信息;

       delete student where stu_id = 4;

      例如:删除数据表student中的所有信息:

       delete student;   

         drop、truncate和delete都是删除的关键词,下一篇介绍三者间的区别。

    9、like子句

    SELECT field1, field2,...fieldN
      FROM table_name
        WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
        你可以在 WHERE 子句中指定任何条件。
        你可以在 WHERE 子句中使用LIKE子句。
        你可以使用LIKE子句代替等号 =。
        LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
        你可以使用 AND 或者 OR 指定一个或多个条件。
        你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。
     
        例如:查询student表中所有姓刘的学生
      select * from student 
        where stu_name like "刘%"
     
    10、UNION子句
      UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。若想重复的不覆盖,则用UNION ALL。
      
    SELECT expression1, expression2, ... expression_n
    FROM tables
    [WHERE conditions]
    UNION [ALL | DISTINCT]
    SELECT expression1, expression2, ... expression_n
    FROM tables
    [WHERE conditions];

        expression1, expression2, ... expression_n: 要检索的列。

        tables: 要检索的数据表。
        WHERE conditions: 可选, 检索条件。
        DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。
        ALL: 可选,返回所有结果集,包含重复数据。
     
      例如:
    SELECT country FROM Websites
    UNION
    SELECT country FROM apps
    ORDER BY country; 

    11、排序

      使用 ORDER BY 子句将查询数据排序后再返回数据:

      SELECT field1, field2,...fieldN FROM table_name1, table_name2...
      ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
     
          你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
          你可以设定多个字段来排序。
          你可以使用 ASCDESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
          你可以添加 WHERE...LIKE 子句来设置条件。
     
    12、group by语句
      GROUP BY 语句根据一个或多个列对结果集进行分组。
      在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。
     
    SELECT column_name, function(column_name)
      FROM table_name
        WHERE column_name operator value
          GROUP BY column_name;

     

      WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。

      例如我们将以上的数据表按名字进行分组,再统计每个人登录的次数:

      SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;

    SELECT name, SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;
    +--------+--------------+
    | name   | singin_count |
    +--------+--------------+
    | 小丽 |            2 |
    | 小明 |            7 |
    | 小王 |            7 |
    | NULL   |           16 |
    +--------+--------------+
    4 rows in set (0.00 sec)

      我们可以使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:

    select coalesce(a,b,c);

    参数说明:如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。

    以下实例中如果名字为空我们使用总数代替:

    mysql> SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;
    +--------------------------+--------------+
    | coalesce(name, '总数') | singin_count |
    +--------------------------+--------------+
    | 小丽                   |            2 |
    | 小明                   |            7 |
    | 小王                   |            7 |
    | 总数                   |           16 |
    +--------------------------+--------------+
    4 rows in set (0.01 sec)
  • 相关阅读:
    2018-2019-1 20165231 实验三 实时系统
    2018-2019-1 20165231 《信息安全系统设计基础》第七周学习总结
    2018-2019-1 20165231 《信息安全系统设计基础》第六周学习总结
    2018-2019-1 20165232 20165231 20165235实验二——固件程序设计
    2018-2019-1 20165231《信息安全系统设计基础》第五周学习总结
    2018-2019-1 20165231 20165232 20165235 实验一 开发环境的熟悉
    2018-2019-1 20165231 《信息安全系统设计基础》第四周学习总结
    20165115 2017-2018-2《Java程序设计》课程总结
    结对编程练习_四则运算 第二周总结 20165115
    20165115 实验二《Java面向对象程序设计》实验报告
  • 原文地址:https://www.cnblogs.com/Tumbler-zeng/p/12515800.html
Copyright © 2011-2022 走看看