- 使用SHOW語句找出服務(wù)器上當(dāng)前存在什么數(shù)據(jù)庫:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| nba |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.03 sec)
如果test數(shù)據(jù)庫存在,嘗試訪問它:
mysql> USE test
Database changed
注意,USE刁赦,類似QUIT,不需要一個(gè)分號(hào)闻镶。(如果你喜歡甚脉,你可以用一個(gè)分號(hào)終止這樣的語句;這無礙)USE語句在使用上也有另外一個(gè)特殊的地方:它必須在一個(gè)單行上給出铆农。
你可列在后面的例子中使用test數(shù)據(jù)庫(如果你能訪問它)牺氨,但是你在該數(shù)據(jù)庫創(chuàng)建的任何東西可以被訪問它的其它人刪除,因此墩剖,你應(yīng)該詢問MySQL管理員許可你使用自己的一個(gè)數(shù)據(jù)庫猴凹。假定你想要調(diào)用你的menagerie,管理員需要執(zhí)行這樣一條命令:
mysql> GRANT ALL ON menagerie.* TO 'your_mysql_name'@'your_client_host';
這里your_mysql_name是分配給你的MySQL用戶名岭皂,your_client_host是所連接的服務(wù)器所在的主機(jī)郊霎。
創(chuàng)建并選擇數(shù)據(jù)庫
如果管理員在設(shè)置權(quán)限時(shí)為你創(chuàng)建了數(shù)據(jù)庫,你可以開始使用它爷绘。否則歹篓,你需要自己創(chuàng)建數(shù)據(jù)庫:
mysql> CREATE DATABASE menagerie;
Query OK, 1 row affected (0.01 sec)
在Unix下,數(shù)據(jù)庫名稱是區(qū)分大小寫的(不像SQL關(guān)鍵字)揉阎,因此你必須總是以menagerie訪問數(shù)據(jù)庫,而不能用Menagerie背捌、MENAGERIE或其它一些變量毙籽。對(duì)表名也是這樣的。(在Windows下毡庆,該限制不適用坑赡,盡管你必須在一個(gè)給定的查詢中使用同樣的大小寫來引用數(shù)據(jù)庫和表。但是么抗,由于多種原因毅否,作為最好的慣例,一定要使用與數(shù)據(jù)庫創(chuàng)建時(shí)的同樣的大小寫蝇刀。)
創(chuàng)建數(shù)據(jù)庫并不表示選定并使用它螟加,你必須明確地操作。為了使menagerie
成為當(dāng)前的數(shù)據(jù)庫,使用這個(gè)命令:
mysql> use menagerie
Database changed
數(shù)據(jù)庫只需要?jiǎng)?chuàng)建一次捆探,但是必須在每次啟動(dòng)mysql
會(huì)話時(shí)在使用前先選擇它然爆。你可以根據(jù)上面的例子執(zhí)行一個(gè)USE語句來實(shí)現(xiàn)。還可以在調(diào)用mysql時(shí)黍图,通過命令行選擇數(shù)據(jù)庫曾雕,只需要在提供連接參數(shù)之后指定數(shù)據(jù)庫名稱。例如:
C:\Users\Administrator>mysql -h localhost -u root -p menagerie
Enter password: ******
注意助被,剛才顯示的命令行中的menagerie不是你的 密碼剖张。如果你想要在命令行上在-p選項(xiàng)后提供 密碼,則不能插入空格(例如揩环,如-pmypassword搔弄,不是-p mypassword)
。但是,不建議在命令行輸入密碼须床,因?yàn)檫@樣會(huì)暴露 密碼性置,能被在機(jī)器上登錄的其它用戶窺探到。
創(chuàng)建表
創(chuàng)建數(shù)據(jù)庫是很容易的部分蹦渣,但是在這時(shí)它是空的,正如SHOW TABLES
將告訴你的:
mysql>SHOW TABLES;
Empty set (0.00 sec)
較難的部分是決定你的數(shù)據(jù)庫結(jié)構(gòu)應(yīng)該是什么:你需要什么數(shù)據(jù)庫表貌亭,各數(shù)據(jù)庫表中有什么樣的列柬唯。
你將需要一個(gè)包含你每個(gè)寵物的記錄的表。它可稱為pet表圃庭,并且它應(yīng)該包含锄奢,最少,每個(gè)動(dòng)物的名字剧腻。因?yàn)槊直旧聿皇呛苡腥ぞ醒耄響?yīng)該包含另外的信息。例如书在,如果在你豢養(yǎng)寵物的家庭有超過一個(gè)人灰伟,你可能想要列出每個(gè)動(dòng)物的主人。你可能也想要記錄例如種類和性別的一些基本的描述信息儒旬。
年齡呢栏账?那可能有趣,但是存儲(chǔ)到一個(gè)數(shù)據(jù)庫中不是一件好事情栈源。年齡隨著時(shí)間流逝而變化挡爵,這意味著你將要不斷地更新你的記錄。相反,
存儲(chǔ)一個(gè)固定值例如生日比較好甚垦,那么茶鹃,無論何時(shí)你需要年齡涣雕,可以以當(dāng)前日期和出生日期之間的差來計(jì)算它。MySQL提供了日期運(yùn)算函數(shù)前计,因此這并不困難胞谭。存儲(chǔ)出生日期而非年齡還有其它優(yōu)點(diǎn):
· 你可以使用數(shù)據(jù)庫完成這樣的任務(wù),例如生成即將到來的寵物生日的提示男杈。(如果你認(rèn)為這類查詢有點(diǎn)蠢丈屹,注意,這與從商務(wù)數(shù)據(jù)庫來識(shí)別出不久要發(fā)給生日祝賀的客戶是同一個(gè)問題伶棒,因?yàn)橛?jì)算機(jī)幫助私人聯(lián)絡(luò)旺垒。)
· 你可以相對(duì)于日期而不止是當(dāng)前日期來計(jì)算年齡。例如肤无,如果你在數(shù)據(jù)庫存儲(chǔ)死亡日期先蒋,你能很容易地計(jì)算出一只寵物死時(shí)有多大。
你可能想到pet表中其它有用的其它類型信息宛渐,但是到目前為止這些已經(jīng)足夠了:名字竞漾、主人、種類窥翩,性別业岁、出生和死亡日期。
使用一個(gè)CREATE TABLE語句指定你的數(shù)據(jù)庫表的布局:
mysql>CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
VARCHAR適合于name寇蚊、owner和species列笔时,因?yàn)榱兄凳亲冮L(zhǎng)的。這些列的長(zhǎng)度不必都相同仗岸,而且不必是20允耿。你可以挑選從1到65535的任何長(zhǎng)度,從中選擇一個(gè)最合理的值扒怖。(如果選擇得不合適较锡,后來證明你需要一個(gè)更長(zhǎng)的字段,MySQL提供一個(gè)ALTER TABLE語句盗痒。)可以用多種類型的值來表示動(dòng)物記錄中的性別念链,例如,"m"
和"f"积糯,或"male"和"female"。使用單字符"m"和"f"是最簡(jiǎn)單的方法谦纱。
很顯然看成,birth和death列應(yīng)選用DATE數(shù)據(jù)類。
創(chuàng)建了數(shù)據(jù)庫表后跨嘉,SHOW TABLES應(yīng)該產(chǎn)生一些輸出:
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| a |
| pet |
+----------------+
2 rows in set (0.00 sec)
為了驗(yàn)證你的表是按你期望的方式創(chuàng)建川慌,使用一個(gè)DESCRIBE/DESC語句:
mysql> desc 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 | |
+---------+-------------+------+-----+---------+-------+
你可以隨時(shí)使用DESCRIBE,例如,如果你忘記表中的列的名稱或類型時(shí)梦重。