3.4. 獲得數據庫和表的信息
如果你忘記數據庫或表的名字,或給定的表的結構是什麼(例如,它的列叫什麼),怎麼辦?MySQL通過提供數據庫及其支持的表的信息的幾個語句解決這個問題。
你已經見到了SHOW DATABASES,它列出由服務器管理的數據庫。爲了找出當前選擇了哪個數據庫,使用DATABASE()函數:
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| menagerie |
+------------+
如果你還沒選擇任何數據庫,結果是NULL。
爲了找出當前的數據庫包含什麼表(例如,當你不能確定一個表的名字),使用這個命令:
mysql> SHOW TABLES;
+---------------------+
| Tables in menagerie |
+---------------------+
|event |
|pet |
+---------------------+
如果你想要知道一個表的結構,可以使用DESCRIBE命令;它顯示表中每個列的信息:
mysql> DESCRIBE pet;
+---------+-------------+------+-----+---------+-------+
| Field |Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name | varchar(20) |YES | | NULL | |
| owner | varchar(20) | YES | | NULL | |
| species | varchar(20) | YES | | NULL | |
| sex |char(1) | YES | |NULL | |
| birth |date | YES | | NULL | |
| death |date | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
Field顯示列名字,Type是列的數據類型,Null表示列是否能包含NULL值,Key顯示列是否被索引而Default指定列的默認值。
如果表有索引,SHOW INDEX FROM tbl_name生成有關索引的信息。
在前面的章節中,你交互式地使用mysql輸入查詢並且查看結果。你也可以以批模式運行mysql。爲了做到這些,把你想要運行的命令放在一個文件中,然後告訴mysql從文件讀取它的輸入:
shell> mysql < batch-file
如果在Windows下運行mysql,並且文件中有一些可以造成問題的特殊字符,可以這樣操作:
C:\> mysql -e "source batch-file"
如果你需要在命令行上指定連接參數,命令應爲:
shell> mysql -h host -u user-p < batch-file
Enter password: ********
當這樣操作mysql時,則創建一個腳本文件,然後執行腳本。
如果你想在語句出現錯誤的時候仍想繼續執行腳本,則應使用--force命令行選項。
爲什麼要使用一個腳本?有很多原因:
· 如果你需要重復運行查詢(比如說,每天或每周),可以把它編成一個腳本,則每次執行時不必重新鍵入。
· 可以通過拷貝並編輯腳本文件從類似的現有的查詢生成一個新查詢。
· 當你正在開發查詢時,批模式也是很有用的,特別對多行命令或多語句命令序列。如果你犯了一個錯誤,你不必重新輸入所有內容,只需要編輯腳本來改正錯誤,然後告訴mysql再次執行腳本。
· 如果你有一個產生多個輸出的查詢,你可以通過一個分頁器而不是盯着它翻屏到屏幕的頂端來運行輸出:
· shell> mysql < batch-file | more
· 你可以捕捉文件中的輸出以便進行進一步的處理:
· shell> mysql < batch-file > mysql.out
· 你可以將腳本分發給另外的人,以便他們也能運行命令。
· 某些情況不允許交互地使用,例如, 當你從一個cron任務中運行查詢時。在這種情況下,你必須使用批模式。
當你以批模式運行mysql時,比起你交互地使用它時,其默認輸出格式是不同的(更簡明些)。例如,當交互式運行SELECTDISTINCT species FROM pet時,輸出應爲:
+---------+
| species |
+---------+
| bird |
| cat |
| dog |
| hamster |
| snake |
+---------+
但是當以批模式運行時,輸出應爲:
species
bird
cat
dog
hamster
snake
如果你想要在批模式中得到交互輸出格式,使用mysql -t。爲了回顯以輸出被執行的命令,使用mysql -vvv。
你還可以使用源代碼或 \.命令從mysql提示符運行腳本:
mysql> source filename;
mysql> \. filename