亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

外鍵約束的表級約束和列級約束

外鍵約束的表級約束和列級約束

無悔欲 2017-09-13 21:33:00
創建表的語法我在官方的文檔中看到了這樣的CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name ? ?(create_definition,...)1. 上面語法中的create definition可以為是?col_name column_definition,對應下面列舉的第一個create_definition: ? ?col_name column_definition ?| [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) ? ? ?[index_option] ... ?| {INDEX|KEY} [index_name] [index_type] (index_col_name,...) ? ? ?[index_option] ... ?| [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] ? ? ?[index_name] [index_type] (index_col_name,...) ? ? ?[index_option] ... ?| {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...) ? ? ?[index_option] ... ?| [CONSTRAINT [symbol]] FOREIGN KEY ? ? ?[index_name] (index_col_name,...) reference_definition ?| CHECK (expr)1中col_name column_definition的column_definition 可以是[reference_definition],對應下面列舉的最后一個column_definition: ? ?data_type [NOT NULL | NULL] [DEFAULT default_value] ? ? ?[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] ? ? ?[COMMENT 'string'] ? ? ?[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}] ? ? ?[STORAGE {DISK|MEMORY|DEFAULT}] ? ? ?[reference_definition]2中的[reference_definition]可以使用下面的語法reference_definition: ? ?REFERENCES tbl_name (index_col_name,...) ? ? ?[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE] ? ? ?[ON DELETE reference_option] ? ? ?[ON UPDATE reference_option]那么問題來了我這么寫為什么不行?t1已經定義了和t2相同的結構CREATE TABLE t2(id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,username VARCHAR(20) REFERENCES t1(username));create_definition: ? ?col_name column_definitionusername VARCHAR(20) REFERENCES t1(username) 對應 create_definitionusername 對應 col_name ?VARCHAR(20) REFERENCES t1(username) 對應column_definitioncolumn_definition: ? data_type ? [reference_definition]VARCHAR(20) 對應 data_type?REFERENCES t1(username) 對應??[reference_definition]reference_definition對應如下的語法。reference_definition: ? ?REFERENCES tbl_name (index_col_name,...) ? ? ?[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE] ? ? ?[ON DELETE reference_option] ? ? ?[ON UPDATE reference_option]最后再問一下,外鍵約束有幾種聲明方式,表級約束和列級約束還是沒搞懂,老師說的那個可以在列定義時聲明,也可以在列定以后聲明,什么是定義時,什么是定以后?例如:CREATE TABLE t2(? ? -> id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,? ? -> name VARCHAR(10) NOT NULL,? ? -> pid TINYINT UNSIGNED ,? ? -> FOREIGN KEY(pid) REFERENCES t1(id)? ? -> );這個是定以時還是定以后?定義時是寫在一個語句中還是在一個括號中?老師說的NOT NULL 和 DEFAULT約束只能是列級約束,意思是只能在一條語句中連著寫,比如name VARCHAR(10) NOT NULL??
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 1876 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號