?
This document uses PHP Chinese website manual Release
目錄
本章通過演示如何使用mysql客戶程序創(chuàng)造和使用一個簡單的數(shù)據(jù)庫,提供一個MySQL的入門教程。mysql(有時稱為“終端監(jiān)視器”或只是“監(jiān)視”)是一個交互式程序,允許你連接一個MySQL服務器,運行查詢并察看結(jié)果。mysql可以用于批模式:你預先把查詢放在一個文件中,然后告訴mysql執(zhí)行文件的內(nèi)容。本章將介紹使用mysql的兩個方法。
要想查看由mysql提供的選擇項目表,可以用--help選項來調(diào)用:
shell> mysql --help
本章假定mysql已經(jīng)被安裝在你的機器上,并且有一個MySQL服務器可以連接。否則,請聯(lián)絡MySQL管理員。(如果你是管理員,則需要查閱本手冊的其它章節(jié),例如第5章:數(shù)據(jù)庫管理。)
本章描述建立和使用一個數(shù)據(jù)庫的全過程。如果你僅僅對訪問一個已經(jīng)存在的數(shù)據(jù)庫感興趣,可以跳過描述怎樣創(chuàng)建數(shù)據(jù)庫及它所包含的表的章節(jié)。
由于本章是一個教程,省略了許多細節(jié)。關(guān)于這里所涉及的主題的詳細信息,請查閱本手冊的相關(guān)章節(jié)。
shell> mysql -h host -u user -p
Enter password: ********
host和user分別代表MySQL服務器運行的主機名和MySQL賬戶用戶名。設置時替換為正確的值。******** 代表你的密碼;當mysql顯示Enter password:提示時輸入它。
如果有效,你應該看見mysql>提示符后的一些介紹信息:
shell> mysql -h host -u user -p
Enter password: ********
Welcome to the MySQL monitor.? Commands end with ; or \g.
Your MySQL connection id is 25338 to server version: 5.1.2-alpha-standard
?
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
?
mysql>
mysql> 提示符告訴你mysql準備為你輸入命令。
一些MySQL安裝允許用戶以匿名(未命名)用戶連接到本地主機上運行的服務器。如果你的機器是這種情況,你應該能不帶任何選項地調(diào)用mysql與該服務器連接:
shell> mysql
成功地連接后,可以在mysql>提示下輸入QUIT (或\q)隨時退出:
mysql> QUIT
Bye
在Unix中,也可以按control-D鍵斷開服務器。
在下列章節(jié)的大多數(shù)例子都假設你連接到了服務器。由mysql>提示指明。
確保你連接上了服務器,如在先前的章節(jié)討論的。連接上服務器并布代表選擇了任何數(shù)據(jù)庫,但這樣就可以了。知道關(guān)于如何查詢的基本知識,比馬上跳至創(chuàng)建表、給他們裝載數(shù)據(jù)并且從他們檢索數(shù)據(jù)更重要。本節(jié)描述輸入命令的基本原則,使用幾個查詢,你能嘗試了解mysql是如何工作的。
這是一個簡單的命令,要求服務器告訴它的版本號和當前日期。在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是一個例子。后面我們將看到其它的例子。)
·???????? 當發(fā)出一個命令時,mysql將它發(fā)送給服務器并顯示執(zhí)行結(jié)果,然后顯示另一個mysql>顯示它準備好接受其它命令。
·???????? mysql用表格(行和列)方式顯示查詢輸出。第一行包含列的標簽,隨后的行是查詢結(jié)果。通常,列標簽是你取自數(shù)據(jù)庫表的列的名字。如果你正在檢索一個表達式而非表列的值(如剛才的例子),mysql用表達式本身標記列。
·???????? mysql顯示返回了多少行,以及查詢花了多長時間,它給你提供服務器性能的一個大致概念。因為他們表示時鐘時間(不是 CPU 或機器時間),并且因為他們受到諸如服務器負載和網(wǎng)絡延時的影響,因此這些值是不精確的。(為了簡潔,在本章其它例子中不再顯示“集合中的行”。)
能夠以大小寫輸入關(guān)鍵詞。下列查詢是等價的:
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()?????? |
+-----------------+
| 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)?span>->,這正是mysql如何指出它沒見到完整的語句并且正在等待剩余的部分。提示符是你的朋友,因為它提供有價值的反饋,如果使用該反饋,將總是知道mysql正在等待什么。
如果你決定不想執(zhí)行正在輸入過程中的一個命令,輸入\c取消它:
mysql> SELECT
??? -> USER()
??? -> \c
mysql>
這里也要注意提示符,在你輸入\c以后,它切換回到mysql>,提供反饋以表明mysql準備接受一個新命令。
下表顯示出可以看見的各個提示符并簡述它們所表示的mysql的狀態(tài):