表格的關連及限制用法_PK_FK_UK_INDEX
例:
建立user table
CREATE TABLE user (
id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '這是PK_ID',
username varchar(20) NOT NULL DEFAULT '名字',
account_number varchar(20) NOT NULL COMMENT '帳號',
password varchar(255) NOT NULL DEFAULT '123' COMMENT '密碼預設為123',
PRIMARY KEY(id),
UNIQUE KEY account_number (account_number)
)AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
新增user table 資料
INSERT INTO user (id,username,account_number)
VALUES (1,'Mr. Wu','wu123'),
(2,'Mr. Wang','wang1'),
(3,'Mr. Lin','lin'),
(4,'Mr. ERIC','eric');
建立 user 的職業occupation
CREATE TABLE occupation (
id bigint(20) NOT NULL AUTO_INCREMENT ,
occupation CHAR(20) NOT NULL COMMENT '職業',
salary int(20) NOT NULL DEFAULT 0,
user_id bigint(20) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY fk_occupation(user_id) REFERENCES user(id)
)AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
occupation table 資料
INSERT INTO occupation (occupation,salary,user_id)
VALUES ('軍人',40000,1),
('老師',45000,2),
('商人',98000,3),
('敗家',-35000,4),
('業務',25000,2);
說明:
1、PRIMARY KEY 主鍵設定
PRIMARY KEY 是設定此表格欄位值獨一無二的值
PRIMARY KEY (欄位名稱)
例:在user table 及 occupation table 的主鍵名稱是id
PRIMARY KEY (id)
2、FOREIGN KEY 外來鍵
FOREIGN KEY 是設定此表格有參考(關連)到其它表格的值
FOREIGN KEY 建立FK的名稱且是資料庫唯一的名稱(欄位名稱)
REFERENCES 參考表格(欄位名稱)
例:在occupation table 有個欄位user_id參考 user table id
FOREIGN KEY fk_occupation(user_id) REFERENCES user(id)
3、UNIQUE KEY 唯一鍵
UNIQUE KEY 是設定表格欄位值不重複的值
UNIQUE KEY 建立名稱(欄位名稱)
例:在user table 有個帳號的欄位account_number不可以重複值
UNIQUE KEY account_number (account_number)
4、NOT NULL
設定不可以有null值
5、AUTO_INCREMENT
是自動產生主鍵值
最後要加起始值
AUTO_INCREMENT=1
6、COMMENT '這是PK_ID'
說明或註解
7、DEFAULT
設定初值,
如果你沒有insert 此欄位,會自動補初值。
8、DEFAULT CHARSET=utf8
設定編碼為utf8
表格的關連及限制用法INDEX
INDEX|KEY} [index_name
] [index_type
] (index_col_name
,...)
CREATE TABLE user (
id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '這是PK_ID',
username varchar(20) NOT NULL DEFAULT '名字',
account_number varchar(20) NOT NULL COMMENT '帳號',
password varchar(255) NOT NULL DEFAULT '123' COMMENT '密碼預設為123',
PRIMARY KEY(id),
UNIQUE KEY account_number (account_number),
KEY(username)
)AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
PK 預設就有INDEX了。
參考資料
其它文章
留言列表