1.sql語句邏輯執行順序 (7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_type> JOIN <right_table> (2) ON <join_condition> (4) WHERE <where_ ...
1.sql語句邏輯執行順序
(7) SELECT
(8) DISTINCT <select_list>
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) HAVING <having_condition>
(9) ORDER BY <order_by_condition>
(10) LIMIT <limit_number>
2.外鍵約束
添加外鍵:
alter table person add CONSTRAINT fk_id FOREIGN key(dept_id) REFERENCES dept(did);
刪除外鍵
alter table person DROP FOREIGN key fk_id
註:插入數據時,先插入主表中的數據,再插入從表中的數據。
刪除數據時,先刪除從表中的數據,再刪除主表中的數據。
3.唯一約束
create table t4(
id int(10) not null,
name varchar(255) ,
unique id_name(id,name)
);
ALTER table t4 add UNIQUE id_name(id,name)
alter table t4 DROP index id_name
4.預設值約束
create table t5(
id int(10) not null primary key,
name varchar(255) default '張三'
);
INSERT into t5 VALUES(3,DEFAULT),(4,DEFAULT);
5.表與表之間關係
1.一對多 ,一對一 ,多對多
7.資料庫設計三範式
1.第一範式(確保每列保持原子性)
第一範式是最基本的範式。如果資料庫表中的所有欄位值都是不可分解的原子值,就說明該資料庫表滿足了第一範式。
第一範式的合理遵循需要根據系統的實際需求來定。比如某些資料庫系統中需要用到“地址”這個屬性,本來直接將“地址”屬性設計成一個資料庫表的欄位就行。但是如果系統經常會訪問“地址”屬性中的“城市”部分,那麼就非要將“地址”這個屬性重新拆分為省份、城市、詳細地址等多個部分進行存儲,這樣在對地址中某一部分操作的時候將非常方便。這樣設計才算滿足了資料庫的第一範式
2.第二範式(確保表中的每列都和主鍵相關)
第二範式在第一範式的基礎之上更進一層。第二範式需要確保資料庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)。也就是說在一個資料庫表中,一個表中只能保存一種數據,不可以把多種數據保存在同一張資料庫表中。
3.第三範式(確保每列都和主鍵列直接相關,而不是間接相關)
第三範式需要確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關。