MySQL入門(mén)教程2 —— 輸入查詢(xún)及退出查詢(xún)命令
確保你連接上了服務(wù)器,如在上一章節(jié)討論的。連接上服務(wù)器并不代表選擇了任何數(shù)據(jù)庫(kù),但這樣就可以了。知道關(guān)于如何查詢(xún)的基本知識(shí),比馬上跳至創(chuàng)建表、給他們裝載數(shù)據(jù)并且從他們檢索數(shù)據(jù)更重要。本節(jié)描述輸入命令的基本原則,使用幾個(gè)查詢(xún),你能?chē)L試了解mysql是如何工作的。
這是一個(gè)簡(jiǎn)單的命令,要求服務(wù)器告訴它的版本號(hào)和當(dāng)前日期。在mysql>提示輸入如下命令并按回車(chē)鍵:
mysql> SELECT VERSION(), CURRENT_DATE; +-----------------+--------------+| VERSION() | CURRENT_DATE |+-----------------+--------------+| 5.1.2-alpha-log | 2005-10-11 |+-----------------+--------------+1 row in set (0.01 sec)mysql>
這詢(xún)問(wèn)說(shuō)明mysql的幾個(gè)方面:
· 一個(gè)命令通常由SQL語(yǔ)句組成,隨后跟著一個(gè)分號(hào)。(有一些例外不需要分號(hào)。早先提到的QUIT是一個(gè)例子。后面我們將看到其它的例子。)
· 當(dāng)發(fā)出一個(gè)命令時(shí),mysql將它發(fā)送給服務(wù)器并顯示執(zhí)行結(jié)果,然后顯示另一個(gè)mysql>顯示它準(zhǔn)備好接受其它命令。
· mysql用表格(行和列)方式顯示查詢(xún)輸出。第一行包含列的標(biāo)簽,隨后的行是查詢(xún)結(jié)果。通常,列標(biāo)簽是你取自數(shù)據(jù)庫(kù)表的列的名字。如果你正在檢索一個(gè)表達(dá)式而非表列的值(如剛才的例子),mysql用表達(dá)式本身標(biāo)記列。
· mysql顯示返回了多少行,以及查詢(xún)花了多長(zhǎng)時(shí)間,它給你提供服務(wù)器性能的一個(gè)大致概念。因?yàn)樗麄儽硎緯r(shí)鐘時(shí)間(不是 CPU 或機(jī)器時(shí)間),并且因?yàn)樗麄兪艿街T如服務(wù)器負(fù)載和網(wǎng)絡(luò)延時(shí)的影響,因此這些值是不精確的。(為了簡(jiǎn)潔,在本章其它例子中不再顯示“集合中的行”。)
能夠以大小寫(xiě)輸入關(guān)鍵詞(大小寫(xiě)不敏感)。下列查詢(xún)是等價(jià)的:
mysql> SELECT VERSION(), CURRENT_DATE; mysql> select version(), current_date; mysql> SeLeCt vErSiOn(), current_DATE; 這是另外一個(gè)查詢(xún),它說(shuō)明你能將mysql用作一個(gè)簡(jiǎn)單的計(jì)算器:mysql> SELECT SIN(PI()/4), (4+1)*5; +------------------+---------+| SIN(PI()/4) | (4+1)*5 |+------------------+---------+| 0.70710678118655 | 25 |+------------------+---------+
1 row in set (0.02 sec)
至此顯示的命令是相當(dāng)短的單行語(yǔ)句。你可以在一行上輸入多條語(yǔ)句,只需要以一個(gè)分號(hào)間隔開(kāi)各語(yǔ)句:
mysql> SELECT VERSION(); SELECT NOW(); +-----------------+| VERSION() |+-----------------+| 5.1.2-alpha-log |+-----------------+1 row in set (0.00 sec)+---------------------+| NOW() |+---------------------+| 2005-10-11 15:15:00 |+---------------------+1 row in set (0.00 sec)
不必全在一個(gè)行內(nèi)給出一個(gè)命令,較長(zhǎng)命令可以輸入到多個(gè)行中。mysql通過(guò)尋找終止分號(hào)而不是輸入行的結(jié)束來(lái)決定語(yǔ)句在哪兒結(jié)束。(換句話(huà)說(shuō),mysql接受自由格式的輸入:它收集輸入行但直到看見(jiàn)分號(hào)才執(zhí)行。)
這里是一個(gè)簡(jiǎn)單的多行語(yǔ)句的例子:
mysql> SELECT -> USER() -> , -> CURRENT_DATE; +---------------+--------------+| USER()| CURRENT_DATE |+---------------+--------------+| jon@localhost | 2005-10-11 |+---------------+--------------+
在這個(gè)例子中,在輸入多行查詢(xún)的第一行后,要注意提示符如何從mysql>變?yōu)?>,這正是mysql如何指出它沒(méi)見(jiàn)到完整的語(yǔ)句并且正在等待剩余的部分。提示符是你的朋友,因?yàn)樗峁┯袃r(jià)值的反饋,如果使用該反饋,將總是知道m(xù)ysql正在等待什么。
如果你決定不想執(zhí)行正在輸入過(guò)程中的一個(gè)命令,輸入c取消它:
mysql> SELECT -> USER() -> c mysql>
這里也要注意提示符,在你輸入c以后,它切換回到mysql>,提供反饋以表明mysql準(zhǔn)備接受一個(gè)新命令。
下表顯示出可以看見(jiàn)的各個(gè)提示符并簡(jiǎn)述它們所表示的mysql的狀態(tài):
提示符含義mysql>準(zhǔn)備好接受新命令。->等待多行命令的下一行?!?gt;等待下一行,等待以單引號(hào)(“’”)開(kāi)始的字符串的結(jié)束。'>等待下一行,等待以雙引號(hào)(“'”)開(kāi)始的字符串的結(jié)束。`>等待下一行,等待以反斜點(diǎn)(‘`’)開(kāi)始的識(shí)別符的結(jié)束。/*>等待下一行,等待以/*開(kāi)始的注釋的結(jié)束。當(dāng)你打算在一個(gè)單行上發(fā)出一個(gè)命令時(shí),通常會(huì)“偶然”出現(xiàn)多行語(yǔ)句,但是沒(méi)有終止分號(hào)。在這種情況中,mysql等待進(jìn)一步輸入:
mysql> SELECT USER() ->
如果出現(xiàn)這種情況(你認(rèn)為輸完了語(yǔ)句,但是只有一個(gè)->提示符響應(yīng)),很可能mysql正在等待分號(hào)。如果你沒(méi)有注意到提示符的提示,在意識(shí)到你需要做什么之前,你可能會(huì)呆坐一會(huì)兒。輸入一個(gè)分號(hào)完成語(yǔ)句,mysql將執(zhí)行:
mysql> SELECT USER() -> ; +---------------+| USER()|+---------------+| jon@localhost |+---------------+
在字符串收集期間將出現(xiàn) ’> 和 '> 提示符(提示MySQL正等待字符串的結(jié)束)。在MySQL中,可以寫(xiě)由‘’’或‘'’字符括起來(lái)的字符串 (例如,’hello’或'goodbye'),并且mysql允許輸入跨越多行的字符串。當(dāng)看到一個(gè) ’> 或 '> 提示符時(shí),這意味著已經(jīng)輸入了包含以‘’’或‘'’括號(hào)字符開(kāi)始的字符串的一行,但是還沒(méi)有輸入終止字符串的匹配引號(hào)。這顯示你粗心地省掉了一個(gè)引號(hào)字符。例如:
mysql> SELECT * FROM my_table WHERE name = ’Smith AND age < 30; ’>
如果你輸入SELECT語(yǔ)句,然后按Enter(回車(chē))鍵并等待結(jié)果,什么都沒(méi)有出現(xiàn)。不要驚訝,“為什么該查詢(xún)這么長(zhǎng)呢?”,注意'>提示符提供的線(xiàn)索。它告訴你mysql期望見(jiàn)到一個(gè)未終止字符串的余下部分。(你看見(jiàn)語(yǔ)句中的錯(cuò)誤嗎?字符串'Smith丟掉了第二個(gè)引號(hào)。)
走到這一步,你該做什么?最簡(jiǎn)單的是取消命令。然而,在這種情況下,你不能只是輸入c,因?yàn)閙ysql作為它正在收集的字符串的一部分來(lái)解釋它!相反,應(yīng)輸入關(guān)閉的引號(hào)字符(這樣mysql知道你完成了字符串),然后輸入c:
mysql> SELECT * FROM my_table WHERE name = ’Smith AND age < 30; ’> ’c mysql>
提示符回到mysql>,顯示mysql準(zhǔn)備好接受一個(gè)新命令了。
`> 提示符類(lèi)似于 ’> 和'> 提示符,但表示你已經(jīng)開(kāi)始但沒(méi)有結(jié)束以`> 開(kāi)始的識(shí)別符。
知道’>和'>提示符的含義很重要,因?yàn)槿绻沐e(cuò)誤地輸入一個(gè)未終止的字符串,任何后面輸入的行將要被mysql忽略--包括包含QUIT的行!這可能令人相當(dāng)困惑,特別是如果取消當(dāng)前命令前還不知道你需要提供終止引號(hào)。
相關(guān)文章:
1. MYSQL(電話(huà)號(hào)碼,身份證)數(shù)據(jù)脫敏的實(shí)現(xiàn)2. Windows10環(huán)境安裝sdk8的圖文教程3. 根據(jù)IP跳轉(zhuǎn)到用戶(hù)所在城市的實(shí)現(xiàn)步驟4. MySQL兩千萬(wàn)數(shù)據(jù)優(yōu)化&遷移5. navicat for mysql導(dǎo)出數(shù)據(jù)庫(kù)的方法6. 恢復(fù)從 Access 2000、 Access 2002 或 Access 2003 中數(shù)據(jù)庫(kù)刪除表的方法7. mysql查詢(xún)的控制語(yǔ)句圖文詳解8. SQL語(yǔ)句中的ON DUPLICATE KEY UPDATE使用9. MySQL 性能優(yōu)化,讓數(shù)據(jù)庫(kù)跑的更快10. MySQL5.7 mysqldump備份與恢復(fù)的實(shí)現(xiàn)
