假設你已擁有建立和修改服務器上數據庫所必需的權限,那麼咱們來看一下如何建立數據庫以及數據庫中的表。在本章的示例中,咱們將爲一個虛擬的書店創建一個數據庫:sql
CREATE DATABASE bookstore
經過這條簡單的SQL語句,咱們已經建立了名爲bookstore的數據庫。另外,MySQL語句以及子句中的保留字對大小寫不敏感。數據庫與表名對大小寫是否敏感取決於你所用的操做系統,好比在Linux系統上對大小寫是敏感的,而Window系統對大小寫不敏感。按照一般的習慣,在SQL說明文檔中保留字均使用大寫字母,而數據庫名,表名以及字段名都使用小寫字母。你可能也注意到了SQL語句結尾處的分號。一條完整的SQL語句可能不止一行,直到輸入分號之後,客戶機程序纔會將SQL語句發送到服務器解析執行。數據庫
建立好數據庫後,這雖然只是空庫,可是咱們可經過下面的語句從默認數據庫切換到新數據庫:服務器
USE bookstore
使用上述語句,就沒必要在每一個SQL語句中都指定所用到的數據庫名了。默認狀況下,MySQL會把最後一個指定的數據庫做爲當前使用的數據庫。該語句是基於客戶機程序的SQL語句,因此在句尾沒必要添加分號。spa
下面,咱們將建立第一個表,之後blog將把數據添加到此表中。首先建立一個存放圖書基本信息的數據庫,由於這是書店業務的核心信息:操作系統
CREATE TABLE books ( book_id INT, title VARCHAR(50), author VARCHAR(50) );
上面的SQL語句建立了帶有三個列的圖書信息表。圓括號內是列的所有列表。接下來輸入DESCRIBE語句可查看剛剛建立的表的結果,該結果以表格形式輸出:code
DESCRIBE books;
考慮到書店規模有點大,咱們認爲還須要爲數據元素多添加幾個列:出版商,出版年份,ISBN碼,圖書類型,圖書描述等等。咱們還想讓MySQL自動爲book_id列分配一個數字編號,這樣在添加一行新記錄時就沒必要擔憂有重複問題發生。另外,咱們決定將做者字段的真實做者名改成標識碼,經過標識碼可將本表與包含做者名字段的其餘表關聯起來。這種方式將數據統一塊兒來,能夠簡化數據的輸入,也使排列查找操做更容易實現。輸入下列SQL語句可在已建立好的數據表中完成修改操做:blog
ALTER TABLE books CHANGE COLUMN book_id book_id INT AUTO_INCREMENT PRIMARY KEY, CHANGE COLUMN author author_id INT, ADD COLUMN description TEXT, ADD COLUMN genre ENUM ('novel','poetry','drama'), ADD COLUMN publisher_id INT, ADD COLUMN pub_year VARCHAR(4), ADD COLUMN isbn VARCHAR(20);
在這個SQL語句的起始行後,能夠看到每一個修改或添加字段的子句都是由一個逗號分開的。第二行子句修改book_id列,即使是使用原來的列名和數據類型,咱們也要將其重寫一遍。咱們還要爲其添加AUTO_INCREMENT標記,它負責執行前一段提到的任務,就是將任意一個惟一的值分配給表中的每條記錄。另外,咱們還要將該字段設爲主鍵,以提升數據檢索的速度。索引
第一個CHANGE子句可能會讓人感到迷惑,由於其中列名(book_id)出現了二次。當了解CHANGE子句的語法時,你就會明白其中的意義了,第一個book_id表示將要修改的如今列,該子句餘下的部分用於指定一個新列。要想更好地理解這個子句的意思,可查看第二條CHANGE子句:該子句用新列author_id替代了現有列author。數據表中再也不有名爲author的列。ip
在第三行子句中,咱們修改了author列,令其名稱及數據類型與將要建立的authors表中的名稱與類型一致。如同books表中的索引列表明圖書同樣,authors表中也有一個表明每一個做者的索引列。咱們把books表和authors表關聯起來作查詢操做,這樣就可經過books表的author_id列找到author表中相應的記錄。因爲authors表中相應列的數據類型是INT,因此該子句中author_id列的數據類型也必定是INT。文檔
第四行子句爲每本書添加了一個描述列。該列的數據類型是文本類型,文本類型是可變長數據類型,可支持長度小於64千字節的數據。
在genre列中,爲了確保統一性,事先已列舉了幾個可用的值。該字段容許爲空值或NULL,空值或NULL並不須要指定。
向books表輸入數據以前,咱們先快速創建一個authors表。該表作爲備查表。首先要向authors表中添加數據,由於咱們向books表中添加數據時,須要知道books表中authors列的標識號:
CREATE TABLE authors( author_id INT AUTO_INCREMENT PRIMARY KEY, author_last VARCHAR(50), author_first VARCHAR(50), country VARCHAR(50) );
根據須要,咱們還要把books表與authors表經過author_id字段關聯起來。這個例子先保存起來後面blog再用。