確保已鏈接到服務器,如上一節中所述。這樣作自己並不會選擇任何可使用的數據庫,但這不要緊,此時,更重要的是要找到一些關於如何發出查詢的信息,而不是直接建立表,將數據加載到它們中以及從中檢索數據。本節介紹了輸入查詢的基本原則,使用你能夠嘗試的幾個查詢來熟悉mysql
的工做原理。mysql
這是一個簡單的查詢,要求服務器告訴你它的版本號和當前日期,在mysql>
提示符後面輸入以下所示,而後按Enter鍵:sql
mysql> SELECT VERSION(), CURRENT_DATE; +-----------+--------------+ | VERSION() | CURRENT_DATE | +-----------+--------------+ | 5.8.0-m17 | 2019-07-09 | +-----------+--------------+ 1 row in set (0.02 sec) mysql>
這個查詢說明了幾個關於mysql
的東西:數據庫
QUIT
就是其中之一,咱們稍後會找到其餘)。mysql
將其發送到服務器執行並顯示結果,而後打印另外一個mysql>
提示符以指示它已準備好進行另外一個查詢。mysql
以表格形式顯示查詢輸出(行和列),第一行包含列的標籤,如下行是查詢結果。一般,列標籤是從數據庫表中提取的列的名稱,若是要檢索表達式的值而不是表列(如剛剛顯示的示例中所示),則mysql
使用表達式自己標記列。mysql
顯示返回了多少行以及執行查詢所需的時間,這使你能夠大體瞭解服務器性能。這些值不精確,由於它們表明時鐘時間(不是CPU或機器時間),而且由於它們受服務器負載和網絡延遲等因素的影響。關鍵字能夠輸入任何大小寫,如下查詢是等效的:segmentfault
mysql> SELECT VERSION(), CURRENT_DATE; mysql> select version(), current_date; mysql> SeLeCt vErSiOn(), current_DATE;
這是另外一個查詢,它演示了你能夠將mysql
用做簡單的計算器:服務器
mysql> SELECT SIN(PI()/4), (4+1)*5; +------------------+---------+ | SIN(PI()/4) | (4+1)*5 | +------------------+---------+ | 0.70710678118655 | 25 | +------------------+---------+ 1 row in set (0.02 sec)
到目前爲止顯示的查詢是相對較短的單行語句,你甚至能夠在一行中輸入多個語句,用分號結尾:網絡
mysql> SELECT VERSION(); SELECT NOW(); +-----------+ | VERSION() | +-----------+ | 8.0.13 | +-----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2019-07-09 00:01:40 | +---------------------+ 1 row in set (0.00 sec)
不須要在一行上給出所有查詢,因此須要多行的長查詢不是問題。mysql
經過查找終止分號來肯定語句的結束位置,而不是查找輸入行的結尾(換句話說,mysql
接受自由格式輸入:它收集輸入行但在看到分號以前不執行它們)。性能
這是一個簡單的多行語句:code
mysql> SELECT -> USER() -> , -> CURRENT_DATE; +---------------+--------------+ | USER() | CURRENT_DATE | +---------------+--------------+ | jon@localhost | 2019-07-09 | +---------------+--------------+
在此示例中,請注意在輸入多行查詢的第一行後,提示如何從mysql>
更改成->
,這就是mysql
如何代表它尚未看到完整的語句而且正在等待其他的語句,提示符號是你的朋友,由於它提供了有價值的反饋。若是你使用該反饋,你始終能夠了解mysql
正在等待什麼。字符串
若是你決定不想執行正在輸入的查詢,請經過鍵入\c
取消它:get
mysql> SELECT -> USER() -> \c mysql>
在這裏,也請注意提示符,鍵入\c
後,它會切換回mysql>
,提供反饋以指示mysql
已爲新查詢作好準備。
下表顯示了你可能看到的每一個提示符,並總結了它們對mysql
所處狀態的含義。
提示符 | 含義 |
---|---|
mysql> |
準備好進行新查詢 |
-> |
等待多行查詢的下一行 |
'> |
等待下一行,等待以單引號(' )開頭的字符串的完成 |
"> |
等待下一行,等待以雙引號(「 )開頭的字符串的完成 |
`> |
等待下一行,等待以反引號(` )開頭的標識符的完成 |
/*> |
等待下一行,等待以/* 開頭的註釋完成 |
當你打算在一行上發出查詢時,一般會出現多行語句,但忘記終止分號,在這種狀況下,mysql
等待更多輸入:
mysql> SELECT USER() ->
若是你遇到這種狀況(你認爲你已經輸入了一個語句但惟一的響應是->
提示符),極可能mysql
正在等待分號。若是你沒有注意到提示符告訴你的內容,你可能會在那裏坐一下子,而後才意識到你須要作什麼,輸入分號以完成語句,mysql
執行它:
mysql> SELECT USER() -> ; +---------------+ | USER() | +---------------+ | jon@localhost | +---------------+
在字符串收集期間發生'>
和「>
提示符(另外一種說法是MySQL等待字符串完成)。在MySQL中,你能夠編寫由'
或"
字符包圍的字符串(例如,'hello'
或「goodbye」
),mysql
容許你輸入跨越多行的字符串。當你看到'>
或「>
提示符時,表示你輸入的行包含以'
或"
引號字符開頭的字符串,但還沒有輸入終止字符串的匹配引號,這一般代表你無心中遺漏了引號字符,例如:
mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30; '>
若是輸入此SELECT
語句,則按回車鍵並等待結果,沒有任何反應,而不是想知道爲何這個查詢花了這麼長時間,請注意'>
提示符提供的線索。它告訴你mysql但願看到未終止的字符串的其他部分(你是否在語句中看到錯誤?字符串'Smith
缺乏第二個單引號)。
此時,你要作什麼?最簡單的方法是取消查詢,可是,在這種狀況下,你不能只鍵入\c
,由於mysql
將其解釋爲它正在收集的字符串的一部分。相反,輸入結束引號字符(因此mysql
知道你已經完成了字符串),而後鍵入\c
:
mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30; '> '\c mysql>
提示符更改回mysql>
,表示mysql
已準備好進行新查詢。
`>
提示符相似於'>
和「>
提示符,但表示你已經開始但未完成反引號引用的標識符。
重要的是要知道'>
、「>
和`>
提示符號是什麼意思,由於若是你錯誤地輸入了一個未終止的字符串,你輸入的任何其餘行彷佛都會被mysql
忽略 — 包括一行包含QUIT
的行。這可能很是使人困惑,特別是若是你不知道在取消當前查詢以前須要提供終止引用。
此時的多行語句是在沒有輔助(
->
或其餘)提示符的狀況下編寫的,以便更容易地複製和粘貼語句,以便你本身嘗試。