国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL中UPDATE語句使用的實例教程

2024-07-24 12:45:24
字體:
來源:轉載
供稿:網友

一、UPDATE常見用法
首先建立測試環境:
 

DROP TABLE IF EXISTS t_test;CREATE TABLE t_test ( bs bigint(20) NOT NULL auto_increment, username varchar(20) NOT NULL, password varchar(20) default NULL, remark varchar(200) default NULL, PRIMARY KEY (bs)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=gbk; INSERT INTO t_test VALUES (1,'lavasoft','123456',NULL);INSERT INTO t_test VALUES (2,'hello',NULL,NULL);INSERT INTO t_test VALUES (3,'haha',zz,tt);

 
1、set一個字段
在表t_test中設置第二條記錄(bs為2)的password為'***'。

update t_test t set t.password = '***' where t.bs = 2;

 
2、set多個字段
在表t_test中設置第一條記錄(bs為1)的password為'*'、remark為'*'。

update t_test t set t.password = '*', t.remark = '*' where t.bs = 1;

 
3、set null值
在表t_test中設置第三條記錄(bs為3)的password為null、remark為null。

update t_test t set t.password = null, t.remark = null where t.bs = 3;

 
這個是按照標準語法寫的,在不同的數據庫系統中,update還有更多的寫法,但是標準寫法都是支持的。以上三個例子為了說明情況,每次都更新一行。在實際中,可以通過where語句約束來控制更新行數。

二、UPDATE使用中的相關性能問題以及解決方法
UPDATE的功能是更新表中的數據。這的語法和INSERT的第二種用法相似。必須提供表名以及SET表達式,在后面可以加WHERE以限制更新的記錄范圍。

UPDATE table_anem SET column_name1 = value1, column_name2 = value2, WHERE ;

如下面的語句將users表中id等于123的記錄的age改為24

UPDATE users SET age = 24 WHERE id = 123;

同樣,可以使用UPDATE更新多個字段的值

UPDATE users SET age = 24, name = 'Mike' WHERE id = 123;

上面的UPDATE語句通過WHERE指定一個條件,否則,UPDATE將更新表中的所有記錄的值
百萬級別的數據,對于mysql應該沒有問題。

你這個sql的問題是,相當于修改ONE表里面所有記錄的AGE信息,而修改的過程是,對于每一條ONE里面的記錄,去TWO里面查詢,再修改。而且,期間很可能會有鎖之類的東西。
首先,這種sql不應該出現在業務邏輯里面,而應該是后臺的job里面。
如果一定要這么做,可以試著用相反的方式,如果不一樣的記錄不是特別多,那就找到ONE表里面AGE記錄跟TWO表不一樣的記錄,再修改, 例如大概象下面(可能語法不太對):

update ONE,TWO set ONE.AGE=TWO.AGE where ONE.ID=TWO.ID AND ONE.AGE != TWO.AGE
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 左云县| 盐城市| 宁德市| 镇安县| 清徐县| 麻栗坡县| 常宁市| 吉林市| 石屏县| 昌吉市| 溧水县| 张家港市| 郯城县| 临安市| 塘沽区| 云梦县| 五原县| 呼图壁县| 南漳县| 金秀| 西城区| 大丰市| 方城县| 城步| 邹城市| 茌平县| 恩施市| 永修县| 东源县| 宜兰市| 讷河市| 磐石市| 台南市| 宝坻区| 镇坪县| 嘉善县| 涡阳县| 铜鼓县| 陕西省| 日土县| 石嘴山市|