Skip to content

林豬豬

個人文章或筆記

Menu
  • 首頁
  • PHP
  • MariaDB
  • Mac
  • Windows
  • Java Servlet
  • 軟體設計
  • 其他
Menu

資料定義語言DDL

Posted on 2024 年 1 月 22 日
建立表格與唯一索引
    CREATE Database databaseName;
    CREATE Table tableName;
    CREATE View viewName;
    CREATE Database IF NOT EXISTS databaseName;
    (檢查資料庫是否重複,如果存在就不會再建立。)
    建立欄位:
        CREATE TABLE 學生表{
            學號 CHAR(8),
            姓名 CHAR(4) NOT NULL,
            PRIMARY KEY (學號), //主鍵
            UNIQUE(電話) //唯一索引
        }
修改表格:
    修改欄位:
        ALTER TABLE 資料表名稱 CHANGE COLUMN 舊欄位 新欄位 新形態(新長度) 特殊功能;
        ALTER TABLE `Life` CHANGE COLUMN `accountId` `accountId` int(7) unsigned zerofill NOT NULL;
        NOT NULL 不能空值
        unsigned zerofill補上一堆零
    建立索引:
        ALTER  TABLE  table_name ADD INDEX index_name( column_1,column_2 ) ;
        ADD PRIMARY KEY
        DROP PRIMARY KEY
            Key是PRI, 那么该列是主键的组成部分
        ADD UNIQUE KEY
        DROP UNIQUE KEY
            Key是UNI, 那么该列是一个唯一值索引的第一列(前导列),并别不能含有空值(NULL)
        ADD  INDEX
        DROP INDEX
            Key是MUL, 那么该列的值可以重复, 该列是一个非唯一索引的前导列(第一列)或者是一个唯一性索引的组成部分
    建立欄位:
        ALTER TABLE 學生表 ADD 性別 CHAR(1) Default '男';
        新增性別欄位,並且預設值為男。
    修改欄位:
        ALTER TABLE 學生表 MODIFY 地址 CHAR(50) NOT NULL;
    刪除欄位:
        ALTER TABLE 學生表 DROP 電子信箱;
刪除表格:刪除指定表格欄位內的值
    DELETE FROM table_name WHERE Name='王二';
    DROP Database IF EXISTS databaseName;
    (檢查資料庫是否重複,如果存在就不會再建立。)
關聯表格設定:
    CASCADE:在父表上update/delete記錄時,同步update/delete掉子表的匹配記錄 
    SET NULL:在父表上update/delete記錄時,將子表上匹配記錄的列設為null
            (要注意子表的外鍵列不能為not null)
    NO ACTION:如果子表中有匹配的記錄,則不允許對父表對應候選鍵進行update/delete操作  
    RESTRICT:同no action, 都是立即檢查外鍵約束
    SET NULL:父表有變更時,子表將外鍵列設置成一個默認的值但Innodb不能識別
插入:
    不存在即插入,如果存在則覆寫:
        replace into table(id, name) values(1, '張三') ;
        /*或者*/
        replace into table(id, name) select 1, '張三' ;
    不存在及插入,如果存在則不做處理:
        insert into table(id, name)
        select null, '張三' from DUAL
        where not exists (select id from table where name = '張三') ;
觸發程序(TRIGGER):
    是一種特殊的預存程序。
    當某種條件(新稱、修改、刪除)成立時,事先設定的預存程序會自動被執行。
    被動地執行指令。
    可以確保多個資料異動時,資料表間的一致性。
    (用來確保資料庫的完整性規則)
    例如:刪除一筆學生資料時,順便將該筆資料加入到休退學資料表中。
        刪除一筆文章時,將該筆資料加入到封存查驗資料表中,供未來發生問題時舉證及回朔,而非用開關隱藏。
    AFTER事後處理
    BEFORE事前預防
    建立:
        CREATE TRIGGER 觸發程序名稱 BEFORE/AFTER(事前預防/事後處理) INSERT/UPDATE/DELETE ON 資料表名稱 FOR EACH ROW BEGIN sql指令集 END;
        (FOR EACH ROW BEGIN 影響多行數據或單行時,每一行皆觸發一次)
    刪除:
        DROP TRIGGER IF EXISTS 觸發程序名稱;
        (IF EXISTS 如果存在則執行 可有可無,有此行不報錯。)

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

彙整

  • 2024 年 1 月
  • 2023 年 11 月
  • 2023 年 9 月
  • 2023 年 6 月
  • 2023 年 5 月
  • 2023 年 3 月
  • 2023 年 2 月
  • 2022 年 10 月
  • 2022 年 9 月
  • 2022 年 8 月
  • 2022 年 6 月

近期文章

  • 資料控制語言DLC
  • 資料定義語言DDL
  • Laravel身份認證與Passport身分驗證套件
  • RollBack回到交易機制啟動前的狀態
  • 刪除DELETE

近期留言

  1. 「WordPress 示範留言者」於〈網站第一篇文章〉發佈留言

豬豬説:那些你所逃避的,會在你需要的時候回來賞你一巴掌。

  • GitHub
  • Instagram
  • Mail
©2025 林豬豬 | Design: Newspaperly WordPress Theme