李文軒 2019-06-28
聲明:這是本人學習極客時間的SQL必知必會的筆記,有侵權請聯(lián)系我。
- DDL的基礎語法
- DDL在定義數(shù)據(jù)表的時候的約束行
- DDL在設計數(shù)據(jù)庫的時候的重要原則
基礎語法
- Data Definition Language,數(shù)據(jù)定義語言;它定義了數(shù)據(jù)庫和數(shù)據(jù)表的結構。
- 增刪改,分別對應的命令是
CREATE、DROP、ALTER
-- 對數(shù)據(jù)庫基本語法
CREATE DATABASE <db_name>;
DROP DATABASE <db_name>;
-- 對數(shù)據(jù)表基本語法
CREATE TABLE <table_name> (
column_name datatype(size) optional_setting,
...
);
- 表的創(chuàng)建
DROP TABLE IF EXISTS `<table_name>`;
CREATE TABLE `<table_name>` (
`<column_name>` datatype(size) NULL|NOT NULL,
...,
PRIMARY KEY (`<one_of_above>`),
UNIQUE INDEX (`<one_of_above>`
);
- 增加一個字段
ALTER TABLE <table_name> ADD (<column_name> datatype(size));
- 修改一個字段
ALTER TABLE <table_name> RENAME COLUMN <exists_column> to <column_new_name>;
- 修改字段的數(shù)據(jù)類型
ALTER TABLE <table_name> MODIFY (<column_name> new_datatype(size));
- 刪除字段
ALTER TABLE <table_name> DROP COLUMN <column_name>;
數(shù)據(jù)表的常見約束
對鍵的約束
- 主鍵約束
- 唯一標識一條記錄
- 不能重復,不能為空,即
UNIQUE + NOT NULL - 一個數(shù)據(jù)表的主鍵只能有一個
- 主鍵可以由一個字段組成,也能有多個字段符合組成
- 外鍵約束
- 確保表與表之間引用的關聯(lián)性,一個表的外鍵對應另一張表的主鍵
- 外鍵可以是重復的,也可以為空
對字段的約束
- 唯一性約束
- 表明字段在表中的數(shù)值是唯一的,即兩條記錄的同一字段的值不能相等
- 除了主鍵,其他字段也能被唯一性約束
- 和普通索引的區(qū)別:唯一性約束相當于創(chuàng)建了一個約束和普通索引,目的是保證字段的正確性;普通索引只是提升數(shù)據(jù)檢索的速度,并不對字段進行約束。
- NOT NULL約束
- 表明該字段不能為空
- DEFAULT約束
- 表明該字段有默認值。
- 插入記錄時沒有給這個字段的值的話,自動填入默認值
- CHECK約束
- 檢查字段取值范圍的有效性
- CHECK約束的結果為 FALSE時,記錄會插入無效;或者字段值更新失敗。
設計數(shù)據(jù)表的原則
- 數(shù)據(jù)表的個數(shù),越少越好
- 數(shù)據(jù)表的個數(shù)越少,數(shù)據(jù)庫的實體和聯(lián)系設計越簡潔
- 方便理解和操作
- 數(shù)據(jù)表中的字段個數(shù),越少越好
- 相對的少,不是絕對的少;在數(shù)據(jù)冗余和檢索效率中尋找平衡
- 字段個數(shù)越多,數(shù)據(jù)冗余的可能性越大
- 數(shù)據(jù)表中聯(lián)合主鍵的字段個數(shù),越少越好
- 主鍵是為了確定唯一性
- 當一個字段無法保證唯一性,就需要多個字段復合組成主鍵
- 聯(lián)合主鍵的字段越多,占用的索引空間越大;加大理解難度和增加運行時間。
- 使用主鍵和外鍵,越多越好
- 表和字段的關系越多,冗余度越低,利用率越高
- 不僅保證了數(shù)據(jù)表之間的獨立性,還提升了相互之間的關聯(lián)使用率。