久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      一起聊聊MySQL基礎(chǔ)之自定義變量和語(yǔ)句結(jié)束分隔符

      本篇文章給大家?guī)?lái)了mysql中自定義變量和語(yǔ)句結(jié)束分隔符的相關(guān)知識(shí),希望對(duì)大家有幫助。

      一起聊聊MySQL基礎(chǔ)之自定義變量和語(yǔ)句結(jié)束分隔符

      存儲(chǔ)程序

      有時(shí)候?yàn)榱送瓿梢粋€(gè)常用的功能需要執(zhí)行許多條語(yǔ)句,每次都在客戶端里一條一條的去輸入這么多語(yǔ)句是很煩的。設(shè)計(jì)MySQL的大叔非常貼心的給我們提供了一種稱(chēng)之為存儲(chǔ)程序的東東,這個(gè)所謂的存儲(chǔ)程序可以封裝一些語(yǔ)句,然后給用戶提供一種簡(jiǎn)單的方式來(lái)調(diào)用這個(gè)存儲(chǔ)程序,從而間接地執(zhí)行這些語(yǔ)句。根據(jù)調(diào)用方式的不同,我們可以把存儲(chǔ)程序分為存儲(chǔ)例程觸發(fā)器事件這幾種類(lèi)型。其中,存儲(chǔ)例程又可以被細(xì)分為存儲(chǔ)函數(shù)存儲(chǔ)過(guò)程。我們畫(huà)個(gè)圖表示一下:

      一起聊聊MySQL基礎(chǔ)之自定義變量和語(yǔ)句結(jié)束分隔符

      別看出現(xiàn)了很多陌生的概念,別怕,我們后邊會(huì)各個(gè)擊破的。不過(guò)在正式介紹存儲(chǔ)程序之前,我們需要先了解一下MySQL中的自定義變量和語(yǔ)句結(jié)束分隔符的概念。

      自定義變量簡(jiǎn)介

      生活中我們經(jīng)常會(huì)遇到一些固定不變的值,比如數(shù)字100、字符串'你好呀',我們把這些值固定不變的東東稱(chēng)之為常量??墒怯袝r(shí)候?yàn)榱朔奖?,我們?huì)使用某一個(gè)符號(hào)來(lái)代表一個(gè)值,它代表的值是可以變化的。比方說(shuō)我們規(guī)定符號(hào)a代表數(shù)字1,之后我們又可以讓符號(hào)a代表數(shù)字2,我們把這種值可以發(fā)生變化的東東稱(chēng)之為變量,其中符號(hào)a就稱(chēng)為這個(gè)變量的變量名。在MySQL中,我們可以通過(guò)SET語(yǔ)句來(lái)自定義一些我們自己的變量,比方說(shuō)這樣:

      mysql> SET @a = 1; Query OK, 0 rows affected (0.00 sec)  mysql>

      上邊的語(yǔ)句就表明我們定義了一個(gè)稱(chēng)之為a的變量,并且把整數(shù)1賦值給了這個(gè)變量。不過(guò)大家需要注意一下,設(shè)計(jì)MySQL的大叔規(guī)定,在我們的自定義變量前邊必須加一個(gè)@符號(hào)(雖然有點(diǎn)兒怪,但這就是人家規(guī)定的,大家遵守就好了)。

      如果我們之后想查看這個(gè)變量的值的話,使用SELECT語(yǔ)句就好了,不過(guò)仍然需要在變量名稱(chēng)前加一個(gè)@符號(hào):

      mysql> SELECT @a; +------+ | @a   | +------+ |    1 | +------+ 1 row in set (0.00 sec)  mysql>

      同一個(gè)變量也可以存儲(chǔ)存儲(chǔ)不同類(lèi)型的值,比方說(shuō)我們?cè)侔岩粋€(gè)字符串值賦值給變量a

      mysql> SET @a = '哈哈哈'; Query OK, 0 rows affected (0.01 sec)  mysql> SELECT @a; +-----------+ | @a        | +-----------+ | 哈哈哈    | +-----------+ 1 row in set (0.00 sec)  mysql>

      除了把一個(gè)常量賦值給一個(gè)變量以外,我們還可以把一個(gè)變量賦值給另一個(gè)變量:

      mysql> SET @b = @a; Query OK, 0 rows affected (0.00 sec)  mysql> select @b; +-----------+ | @b        | +-----------+ | 哈哈哈    | +-----------+ 1 row in set (0.00 sec)  mysql>

      這樣變量ab就有了相同的值'哇哈哈'!

      我們還可以將某個(gè)查詢的結(jié)果賦值給一個(gè)變量,前提是這個(gè)查詢的結(jié)果只有一個(gè)值:

      mysql> SET @a = (SELECT m1 FROM t1 LIMIT 1); Query OK, 0 rows affected (0.00 sec)  mysql>

      還可以用另一種形式的語(yǔ)句來(lái)將查詢的結(jié)果賦值給一個(gè)變量:

      mysql> SELECT n1 FROM t1 LIMIT 1 INTO @b; Query OK, 1 row affected (0.00 sec)  mysql>

      因?yàn)檎Z(yǔ)句SELECT m1 FROM t1 LIMIT 1SELECT n1 FROM t1 LIMIT 1的查詢結(jié)果都只有一個(gè)值,所以它們可以直接賦值給變量a或者b。我們查看一下這兩個(gè)變量的值:

      mysql> SELECT @a, @b; +------+------+ | @a   | @b   | +------+------+ |    1 | a    | +------+------+ 1 row in set (0.00 sec)  mysql>

      如果我們的查詢結(jié)果是一條記錄,該記錄中有多個(gè)列的值的話,我們想把這幾個(gè)值分別賦值到不同的變量中,只能使用INTO語(yǔ)句了:

      mysql> SELECT m1, n1 FROM t1 LIMIT 1 INTO @a, @b; Query OK, 1 row affected (0.00 sec)  mysql>

      這條查詢語(yǔ)句的結(jié)果集中只包含一條記錄,我們把這條記錄的m1列的值賦值到了變量a中,n1列的值賦值到了變量b中。

      語(yǔ)句結(jié)束分隔符

      MySQL客戶端的交互界面處,當(dāng)我們完成鍵盤(pán)輸入并按下回車(chē)鍵時(shí),MySQL客戶端會(huì)檢測(cè)我們輸入的內(nèi)容中是否包含;、g或者G這三個(gè)符號(hào)之一,如果有的話,會(huì)把我們輸入的內(nèi)容發(fā)送到服務(wù)器。這樣一來(lái),如果我們想一次性給服務(wù)器發(fā)送多條的話,就需要把這些語(yǔ)句寫(xiě)到一行中,比如這樣:

      mysql> SELECT * FROM t1 LIMIT 1;SELECT * FROM t2 LIMIT 1;SELECT * FROM t3 LIMIT 1; +------+------+ | m1   | n1   | +------+------+ |    1 | a    | +------+------+ 1 row in set (0.00 sec)  +------+------+ | m2   | n2   | +------+------+ |    2 | b    | +------+------+ 1 row in set (0.00 sec)  +------+------+ | m3   | n3   | +------+------+ |    3 | c    | +------+------+ 1 row in set (0.00 sec)  mysql>

      造成這一不便的原因在于,MySQL客戶端檢測(cè)輸入結(jié)束用的符號(hào)和分隔各個(gè)語(yǔ)句的符號(hào)是一樣的!其實(shí)我們也可以用delimiter命令來(lái)自定義MySQL的檢測(cè)語(yǔ)句輸入結(jié)束的符號(hào),也就是所謂的語(yǔ)句結(jié)束分隔符,比如這樣:

      mysql> delimiter $ mysql> SELECT * FROM t1 LIMIT 1;     -> SELECT * FROM t2 LIMIT 1;     -> SELECT * FROM t3 LIMIT 1;     -> $ +------+------+ | m1   | n1   | +------+------+ |    1 | a    | +------+------+ 1 row in set (0.00 sec)  +------+------+ | m2   | n2   | +------+------+ |    2 | b    | +------+------+ 1 row in set (0.00 sec)  +------+------+ | m3   | n3   | +------+------+ |    3 | c    | +------+------+ 1 row in set (0.00 sec)  mysql>

      delimiter $命令意味著修改語(yǔ)句結(jié)束分隔符為$,也就是說(shuō)之后MySQL客戶端檢測(cè)用戶語(yǔ)句輸入結(jié)束的符號(hào)為$。上邊例子中我們雖然連續(xù)輸入了3個(gè)以分號(hào);結(jié)尾的查詢語(yǔ)句并且按了回車(chē)鍵,但是輸入的內(nèi)容并沒(méi)有被提交,直到敲下$符號(hào)并回車(chē),MySQL客戶端才會(huì)將我們輸入的內(nèi)容提交到服務(wù)器,此時(shí)我們輸入的內(nèi)容里已經(jīng)包含了3個(gè)獨(dú)立的查詢語(yǔ)句了,所以返回了3個(gè)結(jié)果集。

      我們也可以將語(yǔ)句結(jié)束分隔符重新定義為$以外的其他包含單個(gè)或多個(gè)字符的字符串,比方說(shuō)這樣:

      mysql> delimiter EOF mysql> SELECT * FROM t1 LIMIT 1;     -> SELECT * FROM t2 LIMIT 1;     -> SELECT * FROM t3 LIMIT 1;     -> EOF +------+------+ | m1   | n1   | +------+------+ |    1 | a    | +------+------+ 1 row in set (0.00 sec)  +------+------+ | m2   | n2   | +------+------+ |    2 | b    | +------+------+ 1 row in set (0.00 sec)  +------+------+ | m3   | n3   | +------+------+ |    3 | c    | +------+------+ 1 row in set (0.00 sec)  mysql>

      我們這里采用了EOF作為MySQL客戶端檢測(cè)輸入結(jié)束的符號(hào),是不是很easy?。‘?dāng)然,這個(gè)只是為了方便我們一次性輸入多個(gè)語(yǔ)句,在輸入完成之后最好還是改回我們常用的分號(hào);吧:

      mysql> delimiter ;

      小貼士: 我們應(yīng)該避免使用反斜杠()字符作為語(yǔ)句結(jié)束分隔符,因?yàn)檫@是MySQL的轉(zhuǎn)義字符。

      推薦學(xué)習(xí):mysql視頻教程

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)