MySQL入門教程2 —— 輸入查詢及退出查詢命令
確保你連接上了服務(wù)器,如在上一章節(jié)討論的。連接上服務(wù)器并不代表選擇了任何數(shù)據(jù)庫,但這樣就可以了。知道關(guān)于如何查詢的基本知識,比馬上跳至創(chuàng)建表、給他們裝載數(shù)據(jù)并且從他們檢索數(shù)據(jù)更重要。本節(jié)描述輸入命令的基本原則,使用幾個查詢,你能嘗試了解mysql是如何工作的。
這是一個簡單的命令,要求服務(wù)器告訴它的版本號和當(dāng)前日期。在mysql>提示輸入如下命令并按回車鍵:
mysql> SELECT VERSION(), CURRENT_DATE; +-----------------+--------------+| VERSION() | CURRENT_DATE |+-----------------+--------------+| 5.1.2-alpha-log | 2005-10-11 |+-----------------+--------------+1 row in set (0.01 sec)mysql>
這詢問說明mysql的幾個方面:
· 一個命令通常由SQL語句組成,隨后跟著一個分號。(有一些例外不需要分號。早先提到的QUIT是一個例子。后面我們將看到其它的例子。)
· 當(dāng)發(fā)出一個命令時(shí),mysql將它發(fā)送給服務(wù)器并顯示執(zhí)行結(jié)果,然后顯示另一個mysql>顯示它準(zhǔn)備好接受其它命令。
· mysql用表格(行和列)方式顯示查詢輸出。第一行包含列的標(biāo)簽,隨后的行是查詢結(jié)果。通常,列標(biāo)簽是你取自數(shù)據(jù)庫表的列的名字。如果你正在檢索一個表達(dá)式而非表列的值(如剛才的例子),mysql用表達(dá)式本身標(biāo)記列。
· mysql顯示返回了多少行,以及查詢花了多長時(shí)間,它給你提供服務(wù)器性能的一個大致概念。因?yàn)樗麄儽硎緯r(shí)鐘時(shí)間(不是 CPU 或機(jī)器時(shí)間),并且因?yàn)樗麄兪艿街T如服務(wù)器負(fù)載和網(wǎng)絡(luò)延時(shí)的影響,因此這些值是不精確的。(為了簡潔,在本章其它例子中不再顯示“集合中的行”。)
能夠以大小寫輸入關(guān)鍵詞(大小寫不敏感)。下列查詢是等價(jià)的:
mysql> SELECT VERSION(), CURRENT_DATE; mysql> select version(), current_date; mysql> SeLeCt vErSiOn(), current_DATE; 這是另外一個查詢,它說明你能將mysql用作一個簡單的計(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)短的單行語句。你可以在一行上輸入多條語句,只需要以一個分號間隔開各語句:
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)
不必全在一個行內(nèi)給出一個命令,較長命令可以輸入到多個行中。mysql通過尋找終止分號而不是輸入行的結(jié)束來決定語句在哪兒結(jié)束。(換句話說,mysql接受自由格式的輸入:它收集輸入行但直到看見分號才執(zhí)行。)
這里是一個簡單的多行語句的例子:
mysql> SELECT -> USER() -> , -> CURRENT_DATE; +---------------+--------------+| USER()| CURRENT_DATE |+---------------+--------------+| jon@localhost | 2005-10-11 |+---------------+--------------+
在這個例子中,在輸入多行查詢的第一行后,要注意提示符如何從mysql>變?yōu)?>,這正是mysql如何指出它沒見到完整的語句并且正在等待剩余的部分。提示符是你的朋友,因?yàn)樗峁┯袃r(jià)值的反饋,如果使用該反饋,將總是知道m(xù)ysql正在等待什么。
如果你決定不想執(zhí)行正在輸入過程中的一個命令,輸入c取消它:
mysql> SELECT -> USER() -> c mysql>
這里也要注意提示符,在你輸入c以后,它切換回到mysql>,提供反饋以表明mysql準(zhǔn)備接受一個新命令。
下表顯示出可以看見的各個提示符并簡述它們所表示的mysql的狀態(tài):
提示符含義mysql>準(zhǔn)備好接受新命令。->等待多行命令的下一行。’>等待下一行,等待以單引號(“’”)開始的字符串的結(jié)束。'>等待下一行,等待以雙引號(“'”)開始的字符串的結(jié)束。`>等待下一行,等待以反斜點(diǎn)(‘`’)開始的識別符的結(jié)束。/*>等待下一行,等待以/*開始的注釋的結(jié)束。當(dāng)你打算在一個單行上發(fā)出一個命令時(shí),通常會“偶然”出現(xiàn)多行語句,但是沒有終止分號。在這種情況中,mysql等待進(jìn)一步輸入:
mysql> SELECT USER() ->
如果出現(xiàn)這種情況(你認(rèn)為輸完了語句,但是只有一個->提示符響應(yīng)),很可能mysql正在等待分號。如果你沒有注意到提示符的提示,在意識到你需要做什么之前,你可能會呆坐一會兒。輸入一個分號完成語句,mysql將執(zhí)行:
mysql> SELECT USER() -> ; +---------------+| USER()|+---------------+| jon@localhost |+---------------+
在字符串收集期間將出現(xiàn) ’> 和 '> 提示符(提示MySQL正等待字符串的結(jié)束)。在MySQL中,可以寫由‘’’或‘'’字符括起來的字符串 (例如,’hello’或'goodbye'),并且mysql允許輸入跨越多行的字符串。當(dāng)看到一個 ’> 或 '> 提示符時(shí),這意味著已經(jīng)輸入了包含以‘’’或‘'’括號字符開始的字符串的一行,但是還沒有輸入終止字符串的匹配引號。這顯示你粗心地省掉了一個引號字符。例如:
mysql> SELECT * FROM my_table WHERE name = ’Smith AND age < 30; ’>
如果你輸入SELECT語句,然后按Enter(回車)鍵并等待結(jié)果,什么都沒有出現(xiàn)。不要驚訝,“為什么該查詢這么長呢?”,注意'>提示符提供的線索。它告訴你mysql期望見到一個未終止字符串的余下部分。(你看見語句中的錯誤嗎?字符串'Smith丟掉了第二個引號。)
走到這一步,你該做什么?最簡單的是取消命令。然而,在這種情況下,你不能只是輸入c,因?yàn)閙ysql作為它正在收集的字符串的一部分來解釋它!相反,應(yīng)輸入關(guān)閉的引號字符(這樣mysql知道你完成了字符串),然后輸入c:
mysql> SELECT * FROM my_table WHERE name = ’Smith AND age < 30; ’> ’c mysql>
提示符回到mysql>,顯示mysql準(zhǔn)備好接受一個新命令了。
`> 提示符類似于 ’> 和'> 提示符,但表示你已經(jīng)開始但沒有結(jié)束以`> 開始的識別符。
知道’>和'>提示符的含義很重要,因?yàn)槿绻沐e誤地輸入一個未終止的字符串,任何后面輸入的行將要被mysql忽略--包括包含QUIT的行!這可能令人相當(dāng)困惑,特別是如果取消當(dāng)前命令前還不知道你需要提供終止引號。
相關(guān)文章:
1. 淺談MySQL 億級數(shù)據(jù)分頁的優(yōu)化2. 一文總結(jié)MySQL中數(shù)學(xué)函數(shù)有哪些3. Db2數(shù)據(jù)庫中常見的堵塞問題分析與處理方法4. 加密你的Access數(shù)據(jù)庫asp打開方法5. MySql中 is Null段判斷無效和IFNULL()失效的解決方案6. MySQL的雙寫緩沖區(qū)Doublewrite Buffer詳解7. Mysql獲取指定時(shí)間范圍數(shù)據(jù)的各種實(shí)例8. DB2新手使用的一些小筆記:新建實(shí)例、數(shù)據(jù)庫路徑不存在、客戶端連接 .9. access的備注字段限制64K10. MySQL Flink Watermark實(shí)現(xiàn)事件時(shí)間處理的關(guān)鍵技術(shù)
