• mysql教程
  • Linux和windows下用mysql c++ library操作Mysql数据库
  • mysql 5.7下载安装配置详细教程
  • Python的MySQLdb模块安装
  • mysql jdbc连接mysql数据库步骤及常见参数详解
  • Win7 64位下mysql 下载、安装与配置图文教程
  • mysql update语句的用法详解
  • mysql 存储过程实例和基本语法
  • MySQL Workbench的下载安装与使用教程
  • mysql安装图解
  • mysql 命令大全及导入导出表结构或数据
  • mysql数据库下载安装教程和使用技巧
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • centos安装mysql,连接时'Can't connect to local MySQL server through socket '/tmp/mysql
  • VS2012+MySQL+SilverLight5的MVVM开发模式介绍
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • MySQL索引基本知识
  • 在Linux内安装了Mysql,无法进入Mysql.
  • Mysql设置查询条件(where)查询字段为NULL
  • 怎样在linux终端输入mysql直接进入mysql?
  • mysql中字符串和时间互相转换的方法(自动转换及DATE_FORMAT函数)
  • c++中关于#include <mysql/mysql.h>的问题?
  • java将类序列化并存储到mysql(使用hibernate)
  • mysql -u root mysql 怎么解释
  • Mysql索引类型:B-Tree索引介绍
  • mm.mysql那里可以下载?www.mysql.com根本下载不了。谢谢了
  •  
    当前位置:  数据库>mysql

    mysql update语句的用法详解

     
    分享到:
        发布时间:2017-2-22  


        本文导语: mysql update语句的用法详解首先,单表的UPDATE语句:UPDATE [LOW_PRIORITY] [IGNORE] tbl_nameSET col_name1=expr1 [, col_name2=expr2 ...][WHERE where_definition][ORDER BY ...][LIMIT row_count]其次,多表的UPDATE语句:UPDATE [LOW_PRIORITY] [IGNORE] table_referencesSET c...

    mysql update语句的用法详解 

    首先,单表的UPDATE语句:

    UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_definition]
    [ORDER BY ...]
    [LIMIT row_count]

    其次,多表的UPDATE语句: 

    UPDATE [LOW_PRIORITY] [IGNORE] table_references
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_definition]

    UPDATE语法可以用新值更新原有表行中的各列。

    SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。
    如果没有WHERE子句,则更新所有的行。如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。
    LIMIT子句用于给定一个限值,限制可以被更新的行的数目。

    UPDATE语句支持以下修饰符:

    1,如果您使用LOW_PRIORITY关键词,则UPDATE的执行被延迟了,直到没有其它客户端从表中读取为止。

    2,如果您使用IGNORE关键词,则即使在更新过程中出现错误,更新语句也不会中断
    如果出现了重复关键字冲突,则这些行不会被更新。如果列被更新后,新值会导致数据转化错误,则这些行被更新为最接近的合法的值。

    如果您在一个表达式中通过tbl_name访问一列,则UPDATE使用列中的当前值。

    例如,把年龄列设置为比当前值多一: 

    mysql> UPDATE persondata SET age=age+1; 

    UPDATE赋值被从左到右评估。

    例如,对年龄列加倍,然后再进行增加:

    mysql> UPDATE persondata SET age=age*2, age=age+1;

    如果您把一列设置为其当前含有的值,则MySQL会注意到这一点,但不会更新。

    如果您把被已定义为NOT NULL的列更新为NULL,则该列被设置到与列类型对应的默认值,并且累加警告数。
    对于数字类型,默认值为0;对于字符串类型,默认值为空字符串('');对于日期时间类型,默认值为“zero”值。

    UPDATE会返回实际被改变的行的数目。Mysql_info() C API函数可以返回被匹配和被更新的行的数目,以及在UPDATE过程中产生的警告的数量。

    您可以使用LIMIT row_count来限定UPDATE的范围。LIMIT子句是一个与行匹配的限定。
    只要发现可以满足WHERE子句的row_count行,则该语句中止,不论这些行是否被改变。

    如果一个UPDATE语句包括一个ORDER BY子句,则按照由子句指定的顺序更新行。

    您也可以执行包括多个表的UPDATE操作。table_references子句列出了在联合中包含的表。

    例子:

    复制代码

    代码如下:

    SQL>UPDATE items,month SET items.price=month.price
    WHERE items.id=month.id;

    说明:以上代码显示出了使用逗号操作符的内部联合,但是multiple-table UPDATE语句可以使用在SELECT语句中允许的任何类型的联合,比如LEFT JOIN

    注释:不能把ORDER BY或LIMIT与multiple-table UPDATE同时使用。

    在一个被更改的multiple-table UPDATE中,有些列被引用。您只需要这些列的UPDATE权限。有些列被读取了,但是没被修改。您只需要这些列的SELECT权限。

    如果您使用的multiple-table UPDATE语句中包含带有外键限制的InnoDB表,则MySQL优化符处理表的顺序可能与上下层级关系的顺序不同。

    在此情况下,语句无效并被 回滚。同时,更新一个单一表,并且依靠ON UPDATE功能。
    该功能由InnoDB提供,用于对其它表进行相应的修改。

    目前,不能在一个子查询中更新一个表,同时从同一个表中选择。

    update语句的几种基本用法

    A. 使用简单的 UPDATE

    下列示例说明如果从 UPDATE 语句中去除 WHERE 子句,所有的行会受到什么影响。

    下面这个例子说明,如果表 publishers 中的所有出版社将总部搬迁到佐治亚州的亚特兰大市,表 publishers 如何更新。

    代码如下:

    UPDATE publishers
    SET city = 'Atlanta', state = 'GA'

    本示例将所有出版商的名字变为 NULL。

    代码如下:

    UPDATE publishers
    SET pub_name = NULL

    也可以在更新中使用计算值。本示例将表 titles 中的所有价格加倍。

    代码如下:

    UPDATE titles
    SET price = price * 2

    B.把 WHERE 子句和 UPDATE 语句一起使用
    WHERE 子句指定要更新的行例如,在下面这个虚构的事件中,北加利福尼亚更名为 Pacifica(缩写为 PC),而奥克兰的市民投票决定将其城市的名字改为 Bay City。这个例子说明如何为奥克兰市以前的所有居民(他们的地址已经过时)更新表 authors。

    代码如下:

    UPDATE authors
        SET state = 'PC', city = 'Bay City'
           WHERE state = 'CA' AND city = 'Oakland'

    必须编写另一个语句来更改北加利福尼亚其它城市的居民所在的州名。

    C.通过 UPDATE 语句使用来自另一个表的信息
    本示例修改表 titles 中的 ytd_sales 列,以反映表 sales 中的最新销售记录。

    代码如下:

    UPDATE titles
        SET ytd_sales = titles.ytd_sales + sales.qty
           FROM titles, sales
              WHERE titles.title_id = sales.title_id
              AND sales.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

    这个例子假定,一种特定的商品在特定的日期只记录一批销售量,而且更新是最新的。如果不是这样(即如果一种特定的商品在同一天可以记录不止一批销售量),这里所示的例子将出错。例子可正确执行,但是每种商品只用一批销售量进行更新,而不管那一天实际销售了多少批。这是因为一个 UPDATE 语句从不会对同一行更新两次。

    对于特定的商品在同一天可销售不止一批的情况,每种商品的所有销售量必须在 UPDATE 语句中合计在一起,如下例所示:

    代码如下:

    UPDATE titles
        SET ytd_sales = 
           (SELECT SUM(qty)
              FROM sales
                 WHERE sales.title_id = titles.title_id
                 AND sales.ord_date IN (SELECT MAX(ord_date) FROM sales))
        FROM titles, sales

    D. 将 UPDATE 语句与 SELECT 语句中的 TOP 子句一起使用
    这个例子对来自表 authors 的十个作者的 state 列进行更新。

    代码如下:

    UPDATE authors
    SET state = 'ZZ' 
    FROM (SELECT TOP 10 * FROM authors ORDER BY au_lname) AS t1
    where authors.au_id = t1.au_id

    以上就是mysql update语句用法的全部内容,希望对大家有所帮助。


    • 本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
      本站(WWW.169IT.COM)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
      转载请注明:文章转载自:[169IT-IT技术资讯]
      本文标题:mysql update语句的用法详解
    相关文章推荐:
  • 深入mysql YEAR() MONTH() DAYOFMONTH()日期函数的详解
  • MySql实现跨表查询的方法详解
  • 基于mysql 5.5 设置字符集问题的详解
  • 深入mysql并发插入优化详解
  • 详解MySQL中DROP,TRUNCATE 和DELETE的区别实现mysql从零开始
  • MYSQL 批量替换之replace语法的使用详解
  • 详解MySQL中SlowLog的配置方法(图文)
  • 基于mysql数据库的密码问题详解
  • 3步搞定纯真IP数据导入到MySQL的方法详解
  • MySQL Left JOIN时指定NULL列返回特定值详解
  • 深入MYSQL字符数字转换的详解
  • windows环境中mysql忘记root密码的解决方法详解
  • MySQL查询优化之索引的应用详解
  • Linux下MySQL安装配置 MySQL配置参数详解
  • 关于MySQL数据迁移--data目录直接替换注意事项的详解
  • 减少mysql主从数据同步延迟问题的详解
  • Python下的Mysql模块MySQLdb安装详解
  • MySQL数据入库时特殊字符处理详解
  • MySQL分表实现上百万上千万记录分布存储的批量查询设计模式详解
  • 深入mysql存储过程中表名使用参数传入的详解


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号