首頁  >  文章  >  資料庫  >  mysql建立資料表時指定預設值教學

mysql建立資料表時指定預設值教學

巴扎黑
巴扎黑原創
2017-05-15 14:19:336128瀏覽

指定預設值

如果在插入行時沒有給予值,MySQL允許指定此時使用的預設值。預設值用 CREATE TABLE 語句的列定義中的 DEFAULT 關鍵字指定。

請看下面的例子:

輸入:

create table orderitems
(
order_num              int                 NOT NULL,
order_item              int                NOT NULL,
prod_id              char(10)            NOT NULL,
quantity                  int                 NOT NULL   DEFAULT1,
item_price         decimal(8,2)      NOT NULL,
PRIMARY KEY ( order_num,order_item)
)ENGINE = InnoDB;

輸出:這條語句建立包含組成訂單的各物品的orderitems 表(訂單本身儲存在orders 表中)。 quantity 欄位包含訂單中每項物品的數量。在此範例中,為該列的描述新增文字 DEFAULT 1 指示MySQL,在未給出數量的情況下使用數量 1 。

不允許函數 與大多數DBMS不一樣,MySQL不允許使用函數作為預設值,它只支援常數。

使用預設值而不是 NULL 值 許多資料庫開發人員使用預設值而不是 NULL 列,特別是對用於計算或資料分組的列更是如此。

延伸知識:

什麼是引擎型別?

你可能已經注意到,迄今為止使用的 CREATE TABLE 語句全都以ENGINE=InnoDB 語句結束。

與其他DBMS一樣,MySQL有一個具體管理和處理資料的內部引擎。當你使用 CREATE TABLE 語句時,該引擎會具體建立表,而在你使用 SELECT語句或進行其他資料庫處理時,引擎會在內部處理你的請求。多數時候,此引擎都隱藏在DBMS內,不需要太多關注它。

但MySQL與其他DBMS不一樣,它具有多種引擎。它打包多個引擎,這些引擎都隱藏在MySQL伺服器內,全都能執行 CREATE TABLE 和 SELECT等指令。

為什麼要發行多種引擎?因為它們具有各自不同的功能和特性,為不同的任務選擇正確的引擎可以獲得良好的功能和靈活性。

當然,你完全可以忽略這些資料庫引擎。如果省略 ENGINE= 語句,則使用預設引擎(很可能是 MyISAM ),多數SQL語句都會預設使用它。但並不是所有語句都預設使用它,這就是為什麼 ENGINE= 語句很重要的原因(也就是為什麼本書的樣本列表中使用兩種引擎的原因)。

以下是幾個需要知道的引擎:

1.InnoDB 是一個可靠的事務處理引擎,它不支援全文本搜尋;

2.MEMORY 在功能等同於MyISAM ,但由於資料儲存在記憶體(不是磁碟)中,速度很快(特別適合臨時表);

3.MyISAM 是一個效能極高的引擎,它支援全文字搜索,但不支援事務處理。

引擎類型可以混用。除 productnotes 表使用 MyISAM 外,本書的範例表都使用 InnoDB 。原因是作者希望支援事務處理(因此,使用 InnoDB ),但也需要在 productnotes 中支援全文本搜尋(因此,使用 MyISAM )。

外鍵不能跨引擎 混用引擎型有一個大缺陷。外鍵(用於強制實施參考完整性)不能跨引擎,即使用一個引擎的表不能引用具有使用不同引擎的表的外鍵。

那麼,你該使用哪個引擎?這有賴於你需要什麼樣的特性。 MyISAM由於其性能和特性可能是最受歡迎的引擎。但如果你不需要可靠的事務處理,可以使用其他引擎。

以上是mysql建立資料表時指定預設值教學的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn