MySQL(全稱為:My Structured Query Language)是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),廣泛應(yīng)用于各類Web應(yīng)用程序的開發(fā)中。在MySQL的使用過程中,遍歷數(shù)據(jù)是一個常見的操作,本文將介紹MySQL如何遍歷。
首先要知道的是,MySQL提供了多種遍歷數(shù)據(jù)的方式,常用的有“循環(huán)遍歷”和“游標遍歷”兩種。
循環(huán)遍歷
DELIMITER $$ CREATE PROCEDURE loop_traversal() BEGIN DECLARE i INT DEFAULT 0; DECLARE num INT; SELECT COUNT(*) into num FROM user; simple_loop: LOOP SET i = i + 1; SELECT * FROM user LIMIT i-1, 1; IF i = num THEN LEAVE simple_loop; END IF; END LOOP; END $$ DELIMITER ;
上面的代碼使用MySQL存儲過程,通過簡單的循環(huán)語句遍歷user表中的數(shù)據(jù)。SELECT * FROM user LIMIT i-1, 1這條語句表示每次僅查詢一條記錄,隨著循環(huán)次數(shù)的增加,實現(xiàn)了數(shù)據(jù)的逐個遍歷。
游標遍歷
DELIMITER $$ CREATE PROCEDURE cursor_traversal() BEGIN DECLARE done INT DEFAULT FALSE; DECLARE id INT; DECLARE name VARCHAR(30); DECLARE email VARCHAR(30); DECLARE cur CURSOR FOR SELECT id, name, email FROM user; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur; read_loop: LOOP FETCH cur INTO id, name, email; IF done THEN LEAVE read_loop; END IF; SELECT CONCAT(id, ' - ', name, ' - ', email) AS 'user info'; END LOOP; CLOSE cur; END $$ DELIMITER ;
上面的代碼使用MySQL存儲過程,通過游標的方式遍歷user表中的數(shù)據(jù)。DECLARE cur CURSOR FOR SELECT id, name, email FROM user;語句表示將id、name、email三個字段組成一個游標,在遍歷的時候使用FETCH cur INTO id, name, email;將數(shù)據(jù)一行一行讀取出來,實現(xiàn)了數(shù)據(jù)的逐個遍歷。