zoukankan      html  css  js  c++  java
  • 更新数据

    前面讲解了如何插入数据,数据插入之后,如果想变更,这就需要更新数据表中的数据。MySQL中使用UPDATE语句可以更新表中的数据,语法格式如下所示。

    UPDATE 表名

    SET 字段名1=值1 [,字段名2=值2,……]

    [WHERE条件表达式];

    以上语法格式中,“字段名”用于指定需要更新的字段名称,“值”用于表示字段更新的新数据,如果要更新多个字段的值,可以用逗号分隔多个字段和值,“WHERE条件表达式”是可选的,用于指定更新数据需要满足的条件。UPDATE语句可以更新表中的部分数据和全部数据,接下来对这两种情况详细讲解。

    1.更新全部数据

    当UPDATE语句中不使用WHERE条件语句时,会将表中所有数据的指定字段全部更新。

    接下来通过具体案例演示更新全部数据,如例3-6所示。

    【例3-6将teacher表中的所有表示年龄的age字段更新为30,SQL语句如下所示。

    mysql> UPDATE teacher SET age=30;

    Query OK, 6 rows affected (0.04 sec)

    Rows matched: 6  Changed: 6  Warnings: 0

    以上执行结果可看到执行完成后提示了“Changed:6”,说明成功更新了6条数据。为了进一步验证,使用SELECT语句查看teacher表中的数据,SQL语句如下所示。

    mysql> SELECT * FROM teacher;

    +------+------+------+

    | id   | name | age  |

    +------+------+------+

    |    1 | AA   |   30 |

    |    2 | BB   |   30 |

    |    3 | CC   |   30 |

    |    4 | DD   |   30 |

    |    5 | EE   |   30 |

    |    6 | FF   |   30 |

    +------+------+------+

    6 rows in set (0.00 sec)

    从以上执行结果可看到,teacher表中所有的age字段都更新为了30,证明更新成功。

    2.更新部分数据

    前面讲解了更新全部数据的方法,这种需求一般在实际开发中比较少,而大多数需求是更新表中的部分数据,使用WHERE子句可以指定更新数据的条件。

    接下来通过具体案例演示更新部分数据,如例3-7所示。

    将emp表中姓名为lilei的员工工资修改为5000,SQL语句如下所示。

    mysql> UPDATE emp SET salary=5000 WHERE name='lilei';

    Query OK, 1 row affected (0.03 sec)

    Rows matched: 1  Changed: 1  Warnings: 0

    以上执行结果可看到执行完成后提示了“Changed:1”,说明成功更新了一条数据。为了进一步验证,使用SELECT语句查看emp表中的数据,SQL语句如下所示。

    mysql> SELECT * FROM emp;

    +------+-------+--------+------------+---------+------------+-------------+

    | id   | name  | gender | birthday   | salary  | entry_date | resume_text |

    +------+-------+--------+------------+---------+------------+-------------+

    |    1 | lilei | male   | 1991-05-10 | 5000.00 | 2013-06-10 | none        |

    |    2 | lucy  | female | 1988-03-15 | 6000.00 | 2014-10-20 | none        |

    |    3 | king  | female | 1993-06-15 | 7000.00 | 2014-07-10 | none        |

    |    0 | 2013  | 5000   | 1992-01-01 |    0.00 | 0000-00-00 | 4           |

    |    5 | mary  | female | 1995-07-10 |    NULL | NULL       | NULL        |

    |    6 | rin   | male   | 1996-01-01 |    NULL | NULL       | NULL        |

    +------+-------+--------+------------+---------+------------+-------------+

    6 rows in set (0.00 sec)

    从以上执行结果可看到emp表中姓名为lilei的员工工资成功修改为5000。

    接下来将emp表中id为2的员工工资修改为8000,resume_text修改为“excellent”,SQL语句如下所示。

    mysql> UPDATE emp

        -> SET salary=8000,resume_text='excellent'

        -> WHERE id=2;

    Query OK, 1 row affected (0.04 sec)

    Rows matched: 1  Changed: 1  Warnings: 0

    以上执行结果可看到执行完成后提示了“Changed:1”,说明成功更新了一条数据。为了进一步验证,使用SELECT语句查看emp表中的数据,SQL语句如下所示。

    mysql> SELECT * FROM emp;

    +------+-------+--------+------------+---------+------------+-------------+

    | id   | name  | gender | birthday   | salary  | entry_date | resume_text |

    +------+-------+--------+------------+---------+------------+-------------+

    |    1 | lilei | male   | 1991-05-10 | 5000.00 | 2013-06-10 | none        |

    |    2 | lucy  | female | 1988-03-15 | 8000.00 | 2014-10-20 | excellent   |

    |    3 | king  | female | 1993-06-15 | 7000.00 | 2014-07-10 | none        |

    |    0 | 2013  | 5000   | 1992-01-01 |    0.00 | 0000-00-00 | 4           |

    |    5 | mary  | female | 1995-07-10 |    NULL | NULL       | NULL        |

    |    6 | rin   | male   | 1996-01-01 |    NULL | NULL       | NULL        |

    +------+-------+--------+------------+---------+------------+-------------+

    6 rows in set (0.00 sec)

    从以上执行结果可看到,emp表中id为2的员工工资成功修改为8000,resume_text成功修改为excellent。

    接下来将emp表中所有女性的的工资在原有基础上增加1000元,SQL语句如下所示。

    mysql> UPDATE emp

        -> SET salary=salary+1000

        -> WHERE gender='female';

    Query OK, 2 rows affected (0.07 sec)

    Rows matched: 2  Changed: 2  Warnings: 0

    以上执行结果可看到执行完成后提示了“Changed:2”,说明成功更新了两条数据。为了进一步验证,使用SELECT语句查看emp表中的数据,SQL语句如下所示。

    mysql> SELECT * FROM emp;

    +------+-------+--------+------------+---------+------------+-------------+

    | id   | name  | gender | birthday   | salary  | entry_date | resume_text |

    +------+-------+--------+------------+---------+------------+-------------+

    |    1 | lilei | male   | 1991-05-10 | 5000.00 | 2013-06-10 | none        |

    |    2 | lucy  | female | 1988-03-15 | 9000.00 | 2014-10-20 | excellent   |

    |    3 | king  | female | 1993-06-15 | 8000.00 | 2014-07-10 | none        |

    |    0 | 2013  | 5000   | 1992-01-01 |    0.00 | 0000-00-00 | 4           |

    |    5 | mary  | male   | 1995-07-10 |    NULL | NULL       | NULL        |

    |    6 | rin   | male   | 1996-01-01 |    NULL | NULL       | NULL        |

    +------+-------+--------+------------+---------+------------+-------------+

    6 rows in set (0.00 sec)

    从以上执行结果可看到,emp表中所有gender字段值为female的员工工资增加了1000元。

  • 相关阅读:
    把一个数组forEach循环出来的值用“,”拼接起来
    ES6的解构赋值中使用别名
    数组合并去重和数组对象合并去重
    数组和字符串的相互转换及对象和字符串的相互转换
    当img图片的src为空时会出现边框怎么办?
    当eslint报长度限制的警告(Exceeds maximum line length of 120)
    maven实战-----读书笔记之第十四章
    maven实战-----读书笔记之第九章~~第十二章
    maven实战-----读书笔记之第三章~~第五章
    maven实战--读书笔记之第一章和第二章
  • 原文地址:https://www.cnblogs.com/momenglin/p/10928915.html
Copyright © 2011-2022 走看看