在使用MySQL時,經常需要對表中的數據進行批量處理。這時,我們可以使用for循環語句來完成逐行的數據操作。
USE `test_db`;
-- 創建一個示例表
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL DEFAULT '',
`age` INT(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
-- 插入一些示例數據
INSERT INTO `user` (`name`, `age`) VALUES
('張三', 20),
('李四', 25),
('王五', 30),
('趙六', 35),
('錢七', 40);
-- 使用for循環更新數據
DROP PROCEDURE IF EXISTS `update_user`;
DELIMITER ;;
CREATE PROCEDURE `update_user`()
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE n INT DEFAULT 0;
SELECT COUNT(*) INTO n FROM `user`;
WHILE i<= n DO
UPDATE `user` SET `age`=`age`+1 WHERE `id`=i;
SET i = i + 1;
END WHILE;
END;;
DELIMITER ;
CALL `update_user`;
-- 驗證數據更新結果
SELECT * FROM `user`;
-- 刪除示例數據和表
TRUNCATE `user`;
DROP TABLE `user`;
以上示例中,我們創建了一個名為user
的表,并插入了一些示例數據。然后,我們創建了一個名為update_user
的存儲過程。該存儲過程使用了for循環語句,逐行更新表中age
字段的值。最后,我們通過CALL
語句調用了該存儲過程,并通過SELECT
語句驗證了數據更新的結果。
上一篇mysql auto