SQL必知必會04:使用DDL的注意事項

李文軒 2019-06-28
聲明:這是本人學習極客時間的SQL必知必會的筆記,有侵權請聯(lián)系我。


  1. DDL的基礎語法
  2. DDL在定義數(shù)據(jù)表的時候的約束行
  3. DDL在設計數(shù)據(jù)庫的時候的重要原則

基礎語法

  • Data Definition Language,數(shù)據(jù)定義語言;它定義了數(shù)據(jù)庫和數(shù)據(jù)表的結構。
  • 增刪改,分別對應的命令是 CREATEDROP、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ù)表的常見約束

對鍵的約束

  1. 主鍵約束
    • 唯一標識一條記錄
    • 不能重復,不能為空,即 UNIQUE + NOT NULL
    • 一個數(shù)據(jù)表的主鍵只能有一個
    • 主鍵可以由一個字段組成,也能有多個字段符合組成
  2. 外鍵約束
    • 確保表與表之間引用的關聯(lián)性,一個表的外鍵對應另一張表的主鍵
    • 外鍵可以是重復的,也可以為空

對字段的約束

  1. 唯一性約束
    • 表明字段在表中的數(shù)值是唯一的,即兩條記錄的同一字段的值不能相等
    • 除了主鍵,其他字段也能被唯一性約束
    • 和普通索引的區(qū)別:唯一性約束相當于創(chuàng)建了一個約束和普通索引,目的是保證字段的正確性;普通索引只是提升數(shù)據(jù)檢索的速度,并不對字段進行約束。
  2. NOT NULL約束
    • 表明該字段不能為空
  3. DEFAULT約束
    • 表明該字段有默認值。
    • 插入記錄時沒有給這個字段的值的話,自動填入默認值
  4. CHECK約束
    • 檢查字段取值范圍的有效性
    • CHECK約束的結果為 FALSE時,記錄會插入無效;或者字段值更新失敗。

設計數(shù)據(jù)表的原則

  1. 數(shù)據(jù)表的個數(shù),越少越好
    • 數(shù)據(jù)表的個數(shù)越少,數(shù)據(jù)庫的實體和聯(lián)系設計越簡潔
    • 方便理解和操作
  2. 數(shù)據(jù)表中的字段個數(shù),越少越好
    • 相對的少,不是絕對的少;在數(shù)據(jù)冗余和檢索效率中尋找平衡
    • 字段個數(shù)越多,數(shù)據(jù)冗余的可能性越大
  3. 數(shù)據(jù)表中聯(lián)合主鍵的字段個數(shù),越少越好
    • 主鍵是為了確定唯一性
    • 當一個字段無法保證唯一性,就需要多個字段復合組成主鍵
    • 聯(lián)合主鍵的字段越多,占用的索引空間越大;加大理解難度和增加運行時間。
  4. 使用主鍵和外鍵,越多越好
    • 表和字段的關系越多,冗余度越低,利用率越高
    • 不僅保證了數(shù)據(jù)表之間的獨立性,還提升了相互之間的關聯(lián)使用率。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重復值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,980評論 0 9
  • 目錄鏈接:http://www.itdecent.cn/p/2c104aaadb03 DDL 的基礎語法 DDL...
    leacoder閱讀 1,398評論 0 1
  • 第三課: 排序檢索數(shù)據(jù) distinct關鍵字:distinct 列名1,列名2,列名3DISTINCT 關鍵字會...
    VictorBXv閱讀 1,619評論 0 8
  • 數(shù)據(jù)表是數(shù)據(jù)庫中最重要、最基本的操作對象,是數(shù)據(jù)存儲的基本單位。數(shù)據(jù)表被定義為列的集合,數(shù)據(jù)在表中是按照行和列的格...
    假正經(jīng)乄閱讀 2,080評論 0 2
  • 一、 列屬性 真正的對列的約束是依賴于數(shù)據(jù)的類型,但是這種約束比較單一,所以需要更多的約束,整個時候就是用到了字段...
    致自己_cb38閱讀 486評論 0 0

友情鏈接更多精彩內容