delimiter $$
10多年的海西網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整海西建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“海西網(wǎng)站設(shè)計”,“海西網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
mysql
mysql CREATE PROCEDURE myProc() //創(chuàng)建while循環(huán)的存儲過程 if分支語句示例
- BEGIN
-
- DECLARE i int;
- SET i=1;
- loop1: WHILE i=10 DO
- IF MOD(i,2)0 THEN /*Even number - try again*/
- SELECT CONCAT(i," is an odd number");
- END IF;
- SET i=i+1;
- END WHILE loop1;
- END$$
Query OK, 0 rows affected (0.00 sec)
這種也可以
用存儲過程就行了,給你一個能傳參數(shù)的實例吧
drop procedure if exists employee;
delimiter $
create procedure employee(
IN acc int(20))
BEGIN
DECLARE i INT(11);
SET i = 0;
loop1: WHILE i=acc DO
你的sql語句
SET i=i+1;
END WHILE loop1;
end $
delimiter ;
call employee(1000)
mysql常用命令詳解
mysql安裝目錄
數(shù)據(jù)庫目錄
/var/lib/mysql/
配置文件
/usr/share/mysql(mysql.server命令及配置文件)
相關(guān)命令
/usr/bin(mysqladmin mysqldump等命令)
啟動腳本
/etc/init.d/mysql(啟動腳本文件mysql的目錄)
系統(tǒng)管理
連接mysql
格式:
mysql -h 主機地址 -u用戶名 -p用戶密碼
例 1:連接到本機上的 mysql。
hadoop@ubuntu:~$ mysql
-uroot -pmysql;
例 2:連接到遠程主機上的 mysql。
hadoop@ubuntu:~$ mysql -h
127.0.0.1 -uroot -pmysql;
通過一條sql語句實現(xiàn)。具體情形是:有三張表a、b、c,現(xiàn)在需要從表b和表c中分別查幾個字段的值插入到表a中對應(yīng)的字段。對于這種情況,可以使用如下的語句來實現(xiàn):
INSERT INTO db1_name(field1,field2) SELECT field1,field2 FROM db2_name
當然,上面的語句比較適合兩個表的數(shù)據(jù)互插,如果多個表就不適應(yīng)了。對于多個表,可以先將需要查詢的字段join起來,然后組成一個視圖后再select from就可以了:
INSERT INTO a(field1,field2) SELECT * FROM(SELECT f1,f2 FROM b JOIN c) AS tb
其中f1是表b的字段,f2是表c的字段,通過join查詢就將分別來自表b和表c的字段進行了組合,然后再通過select嵌套查詢插入到表a中,這樣就滿足了這個場景了,如果需要不止2個表,那么可以多個join的形式來組合字段。需要注意的是嵌套查詢部分最后一定要有設(shè)置表別名,如下:
SELECT * FROM(SELECT f1,f2 FROM b JOIN c) AS tb
即最后的as tb是必須的(當然tb這個名稱可以隨意?。粗付ㄒ粋€別名,否則在mysql中會報如下錯誤:
ERROR 1248 (42000): Every derived TABLE must have its own alias
即每個派生出來的新表都必須指定別名才可以的。
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數(shù)據(jù)檢測恢復(fù)工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現(xiàn)的結(jié)果說Status是OK,則不用修復(fù),如果有Error,可以用:
repair table tabTest;
進行修復(fù),修復(fù)之后可以在用check table命令來進行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用于MYISAM類型的數(shù)據(jù)表,而isamchk適用于ISAM類型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類型,這里以myisamchk為例子進行說明。當發(fā)現(xiàn)某個數(shù)據(jù)表出現(xiàn)問題時可以使用:
myisamchk tablename.MYI
進行檢測,如果需要修復(fù)的話,可以使用:
myisamchk -of tablename.MYI
關(guān)于myisamchk的詳細參數(shù)說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL服務(wù)器沒有訪問這個數(shù)據(jù)表,保險的情況下是最好在進行檢測時把MySQL服務(wù)器Shutdown掉。
另外可以把下面的命令放在你的rc.local里面啟動MySQL服務(wù)器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監(jiān)聽的Sock文件位置,對于使用RPM安裝的用戶應(yīng)該是/var/lib/mysql/mysql.sock,對于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫存放的位置。
需要注意的時,如果你打算把這條命令放在你的rc.local里面,必須確認在執(zhí)行這條指令時MySQL服務(wù)器必須沒有啟動!檢測修復(fù)所有數(shù)據(jù)庫(表)
delimiter $$// 定義結(jié)束符為 $$
drop procedure if exists wk; // 刪除 已有的 存儲過程
create procedure wk()// 創(chuàng)建新的存儲過程
begin
declare i int;// 變量聲明
set i = 1;
while i 11 do // 循環(huán)體
insert into user_profile (uid) values (i);
set i = i +1;
end while;
end $$ // 結(jié)束定義語句
// 調(diào)用
delimiter ;// 先把結(jié)束符 回復(fù)為;
call wk();
delimter : mysql 默認的 delimiter是; 告訴mysql解釋器,該段命令是否已經(jīng)結(jié)束了,mysql是否可以執(zhí)行了。
基本語法
while 條件 do
要循環(huán)執(zhí)行的代碼;
end while;
結(jié)構(gòu)標識符
基本語法
標識名:while 條件 do
要循環(huán)執(zhí)行的代碼;
end while 標識名;