mysql不僅用于表數據操縱,而且還可以用來執行數據庫和表的所有操作,包括表本身的創建和處理。
一般有兩種創建表的方法:
1.使用具有交互式創建和管理表的工具;
2.表也可以直接用MySQL語句操縱。
為了用程序創建表,可使用SQL的 CREATE TABLE 語句。值得注意的是,在使用交互式工具時,實際上使用的是MySQL語句。但是,這些語句不是用戶編寫的,界面工具會自動生成并執行相應的MySQL語句(更改現有表時也是這樣)。
表創建基礎
為利用 CREATE TABLE 創建表,必須給出下列信息:
1.新表的名字,在關鍵字 CREATE TABLE 之后給出;
2.表列的名字和定義,用逗號分隔。
CREATE TABLE 語句也可能會包括其他關鍵字或選項,但至少要包括表的名字和列的細節。下面的MySQL語句創建本書中所用的 customers 表:
輸入:
create?table?customers ( cust_id????????????????int???????????????NOT?NULL?AUTO_INCREMENT, cust_name?????????char(50)?????NOT?NULL, cust_address?????char(50)?????NULL, cust_city?????????????char(50)?????NULL, cust_state??????????char(5)???????NULL, cust_zip?????????????char(10)?????NULL, cust_country??????char(50)????NULL, cust_contact??????char(50)????NULL, cust_email?????????char(255)??NULL PRIMARY?KEY?(cust_id) )ENGINE?=?InnoDB;
分析:從上面的例子中可以看到,表名緊跟在 CREATE TABLE 關鍵字后面。實際的表定義(所有列)括在圓括號之中。各列之間用逗號分隔。這個表由9列組成。每列的定義以列名(它在表中必須是唯一的)開始,后跟列的數據類型(關于數據類型的解釋,請參閱第1章。此外,附錄D列出了MySQL支持的數據類型)。表的主鍵可以在創建表時用PRIMARY KEY 關鍵字指定。這里,列 cust_id 指定作為主鍵列。整條語句由 右 圓 括 號 后 的 分 號 結 束 。( 現 在 先 忽 略 ENGINE=InnoDB 和AUTO_INCREMENT ,后面會對它們進行介紹。)
語句格式化 可回憶一下,以前說過MySQL語句中忽略空格。語句可以在一個長行上輸入,也可以分成許多行。它們的作用都相同。這允許你以最適合自己的方式安排語句的格式。前面的 CREATE TABLE 語句就是語句格式化的一個很好的例子,它被安排在多個行上,其中的列定義進行了恰當的縮進,以便閱讀和編輯。以何種縮進格式安排SQL語句沒有規定,但我強烈推薦采用某種縮進格式。
處理現有的表 在創建新表時,指定的表名必須不存在,否則將出錯。如果要防止意外覆蓋已有的表,SQL要求首先手工刪除該表,然后再重建它,而不是簡單地用創建表語句覆蓋它。如果你僅想在一個表不存在時創建它,應該在表名后給出 IF NOT EXISTS 。這樣做不檢查已有表的模式是否與你打算創建的表模式相匹配。它只是查看表名是否存在,并且僅在表名不存在時創建它。