内文皆使用 MySQL 语法
参考资料CONSTRAINT (预设值)
用来限制哪一些资料可以存入表格中用于 CREATE TABLE 或后续 ALTER TABLE常见限制
AUTO_INCREMENT 自动 +1 (该栏位不需要自行传入,会自动产生)NOT NULL (不可为空)UNIQUE (独特、唯一、不可重複)CHECK (可带入判断式、MySQL无法使用此)DEFAULT (设定预设值)PRIMARY KEY 主键FOREIGN KEY 外来键 CREATE TABLE users ( -- 主键 必带有 UNIQUE 特性 id INT AUTO_INCREMENT, name VARCHAR(100) UNIQUE, phone VARCHAR(10) NOT NULL, location VARCHAR(100) DEFAULT 'taiwan', -- MySQL 无法使用 CHECK age INT(10) CHECK (age>0), CONSTRAINT pk_UserID PRIMARY KEY (id,name) )
主键
主键 为各 TABLE 的唯一数值,用以判断每行资料主键 可为资料中的栏位(name)、与资料无关的栏位(id)主键 亦可包含多个栏位,又称组合键 (Composite Key)Why use 组合键? 因为被组合的栏位皆非 Unique,但组合后可为 Unique主键 亦可由外来键组成 CREATE TABLE users ( -- 主键 必带有 UNIQUE 特性 id INT AUTO_INCREMENT, name VARCHAR(50), CONSTRAINT pk_UserID PRIMARY KEY (id,name) ); -- 变更主键 (必须确定该栏位为 NOT NULL) ALTER TABLE users ADD PRIMARY KEY (id); ALTER TABLE users ADD PRIMARY KEY (id, name); -- 外来键 组成 主键 CREATE TABLE sc( sno VARCHAR(10), -- 学生编号 (学生资料表主键) cno VARCHAR(10), -- 课程编号 (课程资料表主键) score INT(4), -- 分数 CONSTRAINT pk_score PRIMARY KEY (sno,cno) );
外来键
指向另一个表格的主键栏位目的: 确定两个资料表的关联性 CREATE TABLE ORDERS ( Order_ID INT(100) AUTO_INCREMENT, Order_Date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, Customer_SID INT(100), AMOUNT INT(100), PRIMARY KEY (Order_ID), FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID) ); -- 新增外来键 ALTER TABLE ORDERS ADD FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);