?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
目錄
本章通過演示如何使用mysql客戶程序創(chuàng)造和使用一個(gè)簡單的數(shù)據(jù)庫,提供一個(gè)MySQL的入門教程。mysql(有時(shí)稱為“終端監(jiān)視器”或只是“監(jiān)視”)是一個(gè)交互式程序,允許你連接一個(gè)MySQL服務(wù)器,運(yùn)行查詢并察看結(jié)果。mysql可以用于批模式:你預(yù)先把查詢放在一個(gè)文件中,然后告訴mysql執(zhí)行文件的內(nèi)容。本章將介紹使用mysql的兩個(gè)方法。
要想查看由mysql提供的選擇項(xiàng)目表,可以用--help選項(xiàng)來調(diào)用:
shell> mysql --help
本章假定mysql已經(jīng)被安裝在你的機(jī)器上,并且有一個(gè)MySQL服務(wù)器可以連接。否則,請聯(lián)絡(luò)MySQL管理員。(如果你是管理員,則需要查閱本手冊的其它章節(jié),例如第5章:數(shù)據(jù)庫管理。)
本章描述建立和使用一個(gè)數(shù)據(jù)庫的全過程。如果你僅僅對訪問一個(gè)已經(jīng)存在的數(shù)據(jù)庫感興趣,可以跳過描述怎樣創(chuàng)建數(shù)據(jù)庫及它所包含的表的章節(jié)。
由于本章是一個(gè)教程,省略了許多細(xì)節(jié)。關(guān)于這里所涉及的主題的詳細(xì)信息,請查閱本手冊的相關(guān)章節(jié)。
shell> mysql -h host -u user -p
Enter password: ********
host和user分別代表MySQL服務(wù)器運(yùn)行的主機(jī)名和MySQL賬戶用戶名。設(shè)置時(shí)替換為正確的值。******** 代表你的密碼;當(dāng)mysql顯示Enter password:提示時(shí)輸入它。
如果有效,你應(yīng)該看見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準(zhǔn)備為你輸入命令。
一些MySQL安裝允許用戶以匿名(未命名)用戶連接到本地主機(jī)上運(yùn)行的服務(wù)器。如果你的機(jī)器是這種情況,你應(yīng)該能不帶任何選項(xiàng)地調(diào)用mysql與該服務(wù)器連接:
shell> mysql
成功地連接后,可以在mysql>提示下輸入QUIT (或\q)隨時(shí)退出:
mysql> QUIT
Bye
在Unix中,也可以按control-D鍵斷開服務(wù)器。
在下列章節(jié)的大多數(shù)例子都假設(shè)你連接到了服務(wù)器。由mysql>提示指明。
確保你連接上了服務(wù)器,如在先前的章節(jié)討論的。連接上服務(wù)器并布代表選擇了任何數(shù)據(jù)庫,但這樣就可以了。知道關(guān)于如何查詢的基本知識(shí),比馬上跳至創(chuàng)建表、給他們裝載數(shù)據(jù)并且從他們檢索數(shù)據(jù)更重要。本節(jié)描述輸入命令的基本原則,使用幾個(gè)查詢,你能嘗試了解mysql是如何工作的。
這是一個(gè)簡單的命令,要求服務(wù)器告訴它的版本號(hào)和當(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的幾個(gè)方面:
·???????? 一個(gè)命令通常由SQL語句組成,隨后跟著一個(gè)分號(hào)。(有一些例外不需要分號(hào)。早先提到的QUIT是一個(gè)例子。后面我們將看到其它的例子。)
·???????? 當(dāng)發(fā)出一個(gè)命令時(shí),mysql將它發(fā)送給服務(wù)器并顯示執(zhí)行結(jié)果,然后顯示另一個(gè)mysql>顯示它準(zhǔn)備好接受其它命令。
·???????? mysql用表格(行和列)方式顯示查詢輸出。第一行包含列的標(biāo)簽,隨后的行是查詢結(jié)果。通常,列標(biāo)簽是你取自數(shù)據(jù)庫表的列的名字。如果你正在檢索一個(gè)表達(dá)式而非表列的值(如剛才的例子),mysql用表達(dá)式本身標(biāo)記列。
·???????? mysql顯示返回了多少行,以及查詢花了多長時(shí)間,它給你提供服務(wù)器性能的一個(gè)大致概念。因?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;
這是另外一個(gè)查詢,它說明你能將mysql用作一個(gè)簡單的計(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)短的單行語句。你可以在一行上輸入多條語句,只需要以一個(gè)分號(hào)間隔開各語句:
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è)命令,較長命令可以輸入到多個(gè)行中。mysql通過尋找終止分號(hào)而不是輸入行的結(jié)束來決定語句在哪兒結(jié)束。(換句話說,mysql接受自由格式的輸入:它收集輸入行但直到看見分號(hào)才執(zhí)行。)
這里是一個(gè)簡單的多行語句的例子:
mysql> SELECT
??? -> USER()
??? -> ,
??? -> CURRENT_DATE;
+---------------+--------------+
| USER()??????? | CURRENT_DATE |
+---------------+--------------+
| jon@localhost | 2005-10-11?? |
+---------------+--------------+
在這個(gè)例子中,在輸入多行查詢的第一行后,要注意提示符如何從mysql>變?yōu)?span>->,這正是mysql如何指出它沒見到完整的語句并且正在等待剩余的部分。提示符是你的朋友,因?yàn)樗峁┯袃r(jià)值的反饋,如果使用該反饋,將總是知道mysql正在等待什么。
如果你決定不想執(zhí)行正在輸入過程中的一個(gè)命令,輸入\c取消它:
mysql> SELECT
??? -> USER()
??? -> \c
mysql>
這里也要注意提示符,在你輸入\c以后,它切換回到mysql>,提供反饋以表明mysql準(zhǔn)備接受一個(gè)新命令。
下表顯示出可以看見的各個(gè)提示符并簡述它們所表示的mysql的狀態(tài):