sql中如何将已经赋值的字段变为原有的null

sql中如何将已经赋值的字段变为原有的null,第1张

1sql语句

新建一个查询,使用语句设置:update p_order set finish_time=null where id='XXXX'

2navicat for mysql中设置

双击打开p_order表,通过时间排序找到该条需要修改的记录,在该条记录的finish_time上直接右键(不需要删除数据),右键后会有设置为Null(英文是:Set to Null),结果就已经被设置为Null值了。

说明:以上两种方法的前提是finish_time这列在设计时要允许为Null,如果不是,这么设置是不奏效的。

扩展资料:

@表示声明一个局部变量,@@表示声明一个全局变量(比如已经定义好的系统变量)

申明局部变量语法:declare @变量名 数据类型;例如:declare @num int;

赋值:有两种方法式(@num为变量名,value为值)。

set @num=value;   或   select @num=value;

DECLARE @count表示选定变量,SELECT @count=1表示为count赋值;这里的赋值语句还可以使用SET @count=1。

但是select和set在赋值语句中有些区别:SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值,即如果数据表中存在多个count变量,则不能使用SET赋值;例:将变量count值赋值为1:

这条语句应用在MySQL中:

UPDATE COLUMNS SET COLUMNS_DEFAULT=NULL WHERE TABLE_SCHEMA=“表存在数据库的名字” AND TABLE_NAME="表的名字" AND COLUMNS_DEFAULT=0;

最后需要的注意的是权限问题。

数据库中update的用法的用法你知道吗?下面我就跟你们详细介绍下数据库中update的用法的用法,希望对你们有用。

数据库中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=age2, 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 itemsprice=monthprice

WHERE itemsid=monthid;

说明:以上代码显示出了使用逗号 *** 作符的内部联合,但是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 = titlesytd_sales + salesqty

FROM titles, sales

WHERE titlestitle_id = salestitle_id

AND salesord_date = (SELECT MAX(salesord_date) FROM sales)

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

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

复制代码 代码如下:

UPDATE titles

SET ytd_sales =

(SELECT SUM(qty)

FROM sales

WHERE salestitle_id = titlestitle_id

AND salesord_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 authorsau_id = t1au_id

你好,试试把配置改成如下看看,去掉DESCRIPTION那行的if判断

 <update id="updateField" parameterType="map">

  UPDATE SYS_ROLE 

  <trim prefix="SET" suffixOverrides=",">

   <if test="roleName != null">ROLENAME=#{roleName},</if>

   DESCRIPTION=#{description}

  </trim>

   WHERE ID=#{id}

 </update>

以上就是关于sql中如何将已经赋值的字段变为原有的null全部的内容,包括:sql中如何将已经赋值的字段变为原有的null、找到数据库中所有默认为0的字段,然后将默认值改为null,这个mysql语句该怎么写、数据库中update的用法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10192362.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存