隨筆 - 154  文章 - 60  trackbacks - 0
          <2007年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          聲明:

          該blog是為了收集資料,認(rèn)識(shí)朋友,學(xué)習(xí)、提高技術(shù),所以本blog的內(nèi)容除非聲明,否則一律為轉(zhuǎn)載!!

          感謝那些公開(kāi)自己技術(shù)成果的高人們!!!

          支持開(kāi)源,尊重他人的勞動(dòng)!!

          常用鏈接

          留言簿(3)

          隨筆分類(148)

          隨筆檔案(143)

          收藏夾(2)

          其他

          學(xué)習(xí)(技術(shù))

          觀察思考(非技術(shù))

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          mysql存儲(chǔ)過(guò)程的創(chuàng)建,刪除,調(diào)用及其他常用命令

          mysql 5.0存儲(chǔ)過(guò)程學(xué)習(xí)總結(jié)

          一.創(chuàng)建存儲(chǔ)過(guò)程

          1.基本語(yǔ)法:

           

          create procedure sp_name()
          begin
          ………
          end

          2.參數(shù)傳遞

          二.調(diào)用存儲(chǔ)過(guò)程

          1.基本語(yǔ)法:call sp_name()
          注意:存儲(chǔ)過(guò)程名稱后面必須加括號(hào),哪怕該存儲(chǔ)過(guò)程沒(méi)有參數(shù)傳遞

          三.刪除存儲(chǔ)過(guò)程

          1.基本語(yǔ)法:
          drop procedure sp_name//
          2.注意事項(xiàng)
          (1)不能在一個(gè)存儲(chǔ)過(guò)程中刪除另一個(gè)存儲(chǔ)過(guò)程,只能調(diào)用另一個(gè)存儲(chǔ)過(guò)程

          四.區(qū)塊,條件,循環(huán)

          1.區(qū)塊定義,常用
          begin
          ……
          end;
          也可以給區(qū)塊起別名,如:
          lable:begin
          ………..
          end lable;
          可以用leave lable;跳出區(qū)塊,執(zhí)行區(qū)塊以后的代碼
          2.條件語(yǔ)句

           

          if 條件 then
          statement
          else
          statement
          end if;

          3.循環(huán)語(yǔ)句
          (1).while循環(huán)

          [label:] WHILE expression DO

          statements

          END WHILE [label] ;

           

          (2).loop循環(huán)

           

          [label:] LOOP

          statements

          END LOOP [label];

           

          (3).repeat until循環(huán)

           

          [label:] REPEAT

          statements

          UNTIL expression

          END REPEAT [label] ;

           

          五.其他常用命令

          1.show procedure status
          顯示數(shù)據(jù)庫(kù)中所有存儲(chǔ)的存儲(chǔ)過(guò)程基本信息,包括所屬數(shù)據(jù)庫(kù),存儲(chǔ)過(guò)程名稱,創(chuàng)建時(shí)間等
          2.show create procedure sp_name
          顯示某一個(gè)存儲(chǔ)過(guò)程的詳細(xì)信息

           

          mysql存儲(chǔ)過(guò)程中要用到的運(yùn)算符

          mysql存儲(chǔ)過(guò)程學(xué)習(xí)總結(jié)-操作符

          算術(shù)運(yùn)算符

          +     加   SET var1=2+2;       4
          -     減   SET var2=3-2;       1
          *     乘   SET var3=3*2;       6
          /     除   SET var4=10/3;      3.3333
          DIV   整除 SET var5=10 DIV 3;  3
          %     取模 SET var6=10%3 ;     1

          比較運(yùn)算符

          >            大于 1>2 False
          <            小于 2<1 False
          <=           小于等于 2<=2 True
          >=           大于等于 3>=2 True
          BETWEEN      在兩值之間 5 BETWEEN 1 AND 10 True
          NOT BETWEEN  不在兩值之間 5 NOT BETWEEN 1 AND 10 False
          IN           在集合中 5 IN (1,2,3,4) False
          NOT IN       不在集合中 5 NOT IN (1,2,3,4) True
          =            等于 2=3 False
          <>, !=       不等于 2<>3 False
          <=>          嚴(yán)格比較兩個(gè)NULL值是否相等 NULL<=>NULL True
          LIKE         簡(jiǎn)單模式匹配 "Guy Harrison" LIKE "Guy%" True
          REGEXP       正則式匹配 "Guy Harrison" REGEXP "[Gg]reg" False
          IS NULL      為空 0 IS NULL False
          IS NOT NULL  不為空 0 IS NOT NULL True

          邏輯運(yùn)算符

          (AND)






           

           

          AND

          TRUE

          FALSE

          NULL

          TRUE

          TRUE

          FALSE

          NULL

          FALSE

          FALSE

          FALSE

          NULL

          NULL

          NULL

          NULL

          NULL

          或(OR)

           

           

          OR

          TRUE

          FALSE

          NULL

          TRUE

          TRUE

          TRUE

          TRUE

          FALSE

          TRUE

          FALSE

          NULL

          NULL

          TRUE

          NULL

          NULL

          異或(XOR)

           

           

          XOR

          TRUE

          FALSE

          NULL

          TRUE

          FALSE

          TRUE

          NULL

          FALSE

          TRUE

          FALSE

          NULL

          NULL

          NULL

          NULL

          NULL

          位運(yùn)算符

          |   位或
          &   位與
          <<  左移位
          >>  右移位
          ~   位非(單目運(yùn)算,按位取反)

           

          mysq存儲(chǔ)過(guò)程中常用的函數(shù),字符串類型操作,數(shù)學(xué)類,日期時(shí)間類。

          mysql存儲(chǔ)過(guò)程基本函數(shù)

          一.字符串類 

          CHARSET(str) //返回字串字符集
          CONCAT (string2  [,… ]) //連接字串
          INSTR (string ,substring ) //返回substring首次在string中出現(xiàn)的位置,不存在返回0
          LCASE (string2 ) //轉(zhuǎn)換成小寫(xiě)
          LEFT (string2 ,length ) //從string2中的左邊起取length個(gè)字符
          LENGTH (string ) //string長(zhǎng)度
          LOAD_FILE (file_name ) //從文件讀取內(nèi)容
          LOCATE (substring , string  [,start_position ] ) 同INSTR,但可指定開(kāi)始位置
          LPAD (string2 ,length ,pad ) //重復(fù)用pad加在string開(kāi)頭,直到字串長(zhǎng)度為length
          LTRIM (string2 ) //去除前端空格
          REPEAT (string2 ,count ) //重復(fù)count次
          REPLACE (str ,search_str ,replace_str ) //在str中用replace_str替換search_str
          RPAD (string2 ,length ,pad) //在str后用pad補(bǔ)充,直到長(zhǎng)度為length
          RTRIM (string2 ) //去除后端空格
          STRCMP (string1 ,string2 ) //逐字符比較兩字串大小,
          SUBSTRING (str , position  [,length ]) //從str的position開(kāi)始,取length個(gè)字符,
          注:mysql中處理字符串時(shí),默認(rèn)第一個(gè)字符下標(biāo)為1,即參數(shù)position必須大于等于1

           

          mysql> select substring(’abcd’,0,2);
          +———————–+
          | substring(’abcd’,0,2) |
          +———————–+
          |                       |
          +———————–+
          1 row in set (0.00 sec)

           

          mysql> select substring(’abcd’,1,2);
          +———————–+
          | substring(’abcd’,1,2) |
          +———————–+
          | ab                    |
          +———————–+
          1 row in set (0.02 sec)

          TRIM([[BOTH|LEADING|TRAILING] [padding] FROM]string2) //去除指定位置的指定字符
          UCASE (string2 ) //轉(zhuǎn)換成大寫(xiě)
          RIGHT(string2,length) //取string2最后length個(gè)字符
          SPACE(count) //生成count個(gè)空格 

          二.數(shù)學(xué)類

          ABS (number2 ) //絕對(duì)值
          BIN (decimal_number ) //十進(jìn)制轉(zhuǎn)二進(jìn)制
          CEILING (number2 ) //向上取整
          CONV(number2,from_base,to_base) //進(jìn)制轉(zhuǎn)換
          FLOOR (number2 ) //向下取整
          FORMAT (number,decimal_places ) //保留小數(shù)位數(shù)
          HEX (DecimalNumber ) //轉(zhuǎn)十六進(jìn)制
          注:HEX()中可傳入字符串,則返回其ASC-11碼,如HEX(’DEF’)返回4142143
          也可以傳入十進(jìn)制整數(shù),返回其十六進(jìn)制編碼,如HEX(25)返回19
          LEAST (number , number2  [,..]) //求最小值
          MOD (numerator ,denominator ) //求余
          POWER (number ,power ) //求指數(shù)
          RAND([seed]) //隨機(jī)數(shù)
          ROUND (number  [,decimals ]) //四舍五入,decimals為小數(shù)位數(shù)]

           

          注:返回類型并非均為整數(shù),如:
          (1)默認(rèn)變?yōu)檎沃?br /> mysql> select round(1.23);
          +————-+
          | round(1.23) |
          +————-+
          |           1 |
          +————-+
          1 row in set (0.00 sec)

           

          mysql> select round(1.56);
          +————-+
          | round(1.56) |
          +————-+
          |           2 |
          +————-+
          1 row in set (0.00 sec)

          (2)可以設(shè)定小數(shù)位數(shù),返回浮點(diǎn)型數(shù)據(jù)
          mysql> select round(1.567,2);
          +—————-+
          | round(1.567,2) |
          +—————-+
          |           1.57 |
          +—————-+
          1 row in set (0.00 sec)

          SIGN (number2 ) //返回符號(hào),正負(fù)或0
          SQRT(number2) //開(kāi)平方

           
          三.日期時(shí)間類
           

          ADDTIME (date2 ,time_interval ) //將time_interval加到date2
          CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //轉(zhuǎn)換時(shí)區(qū)
          CURRENT_DATE (  ) //當(dāng)前日期
          CURRENT_TIME (  ) //當(dāng)前時(shí)間
          CURRENT_TIMESTAMP (  ) //當(dāng)前時(shí)間戳
          DATE (datetime ) //返回datetime的日期部分
          DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或時(shí)間
          DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式顯示datetime
          DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上減去一個(gè)時(shí)間
          DATEDIFF (date1 ,date2 ) //兩個(gè)日期差
          DAY (date ) //返回日期的天
          DAYNAME (date ) //英文星期
          DAYOFWEEK (date ) //星期(1-7) ,1為星期天
          DAYOFYEAR (date ) //一年中的第幾天
          EXTRACT (interval_name  FROM date ) //從date中提取日期的指定部分
          MAKEDATE (year ,day ) //給出年及年中的第幾天,生成日期串
          MAKETIME (hour ,minute ,second ) //生成時(shí)間串
          MONTHNAME (date ) //英文月份名
          NOW (  ) //當(dāng)前時(shí)間
          SEC_TO_TIME (seconds ) //秒數(shù)轉(zhuǎn)成時(shí)間
          STR_TO_DATE (string ,format ) //字串轉(zhuǎn)成時(shí)間,以format格式顯示
          TIMEDIFF (datetime1 ,datetime2 ) //兩個(gè)時(shí)間差
          TIME_TO_SEC (time ) //時(shí)間轉(zhuǎn)秒數(shù)]
          WEEK (date_time [,start_of_week ]) //第幾周
          YEAR (datetime ) //年份
          DAYOFMONTH(datetime) //月的第幾天
          HOUR(datetime) //小時(shí)
          LAST_DAY(date) //date的月的最后日期
          MICROSECOND(datetime) //微秒
          MONTH(datetime) //月
          MINUTE(datetime) //分

           

          附:可用在INTERVAL中的類型
          DAY ,DAY_HOUR ,DAY_MINUTE ,DAY_SECOND ,HOUR ,HOUR_MINUTE ,HOUR_SECOND ,MINUTE ,MINUTE_SECOND,MONTH ,SECOND ,YEAR 
          posted on 2007-09-25 12:02 lk 閱讀(274) 評(píng)論(0)  編輯  收藏 所屬分類: DB
          主站蜘蛛池模板: 永昌县| 永德县| 兴业县| 平乡县| 桓仁| 乡城县| 长丰县| 宣汉县| 丰镇市| 垦利县| 玉林市| 桂平市| 清水县| 景宁| 陕西省| 康保县| 古浪县| 龙里县| 柳州市| 天台县| 建平县| 津南区| 达日县| 比如县| 县级市| 英山县| 安远县| 东港市| 察隅县| 荆门市| 阜城县| 中卫市| 富裕县| 望谟县| 观塘区| 齐齐哈尔市| 壶关县| 滨海县| 山东省| 乌鲁木齐市| 桐柏县|