mysql 中的 set 语句 是什么意思?

mysql 中的 set 语句 是什么意思?,第1张

update a set flag='p' where flag is null

你这图片不是插入页吗?

如果你确定真没有值写入,首先查一下,你的set列中是否有'p'还是'P',更新完后可以用show warnings查看警告信息

补充:

很有可能你指的空值不是null,而是'',所以应该

update a set flag='p' where flag=''

尝试一下。

在存储过程中常看到declare定义变量和@set定义的变量。简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量。

1、declare定义的变量类似java类中的局部变量,仅在类中生效。即只在存储过程中的begin和end之间生效。

2、@set定义的变量,叫做会话变量,也叫用户定义变量,在整个会话中都起作用(比如某个应用的一个连接过程中),即这个变量可以在被调用的存储过程或者代码之间共享数据。如何理解呢?可以看下面这个简单例子,很好理解。

(1)先执行下面脚本,创建一个存储过程,分别有declare形式的变量和@set形式的变量

DROP PROCEDURE IF EXISTS temp

DELIMITER //CREATE PROCEDURE temp()BEGIN

DECLARE a INT DEFAULT 1 SET a=a+1 SET @b=@b+1 SELECT a,@bEND//DELIMITER

(2)接着为b变量初始化。

SET @b=1

(3)然后重复调用这个存储过程。

CALL temp()

(4)会发现a的值不改变,而b的值会一直增加。

所以,总结起来就是开头那句话,declare定义的类似是局部变量,@set定义的类似全局变量。

update set命令用来修改表中的数据。update set命令格式:update 表名 set 字段=新值,… where 条件。

举例如下:mysql>update MyClass set name='Mary' where id=1单表的MySQL 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子句用于给定一个限值,限制可以被更新的行的数目。


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

原文地址:https://54852.com/zaji/8657117.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存