天天看點

資料庫DDL、DML、DCL、DQL、DPL、CCL的全稱和使用

資料庫DDL、DML、DCL、DQL、DPL、CCL的全稱和使用

簡介:

  SQL (Structure Query Language):結構化查詢語言,一種特殊目的的程式設計語言,一種資料庫查詢和程式設計語言,用于存取資料以及查詢、更新和管理關系資料庫系統。結構化查詢語言是進階的非過程化程式設計語言,允許使用者在高層資料結構上工作。它不要求使用者指定對資料的存放方法,也不需要使用者了解具體的資料存放方式,是以具有完全不同底層結構的不同資料庫系統, 可以使用相同的結構化查詢語言作為資料輸入與管理的接口。結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。

DDL (Data Definition Language):資料定義語言

  • create語句:可以建立資料庫和資料庫的一些對象。

    建立資料庫:

    CREATE DATABASE [database_name];      

    建立資料庫表: 

    CREATE TABLE [table_name]
    (
        id datatype,
        column_name2 datatype,
        column_name3 datatype,
        ...,
        PRIMARY KEY (`id`)
    );      
  • drop語句:可以删除資料表、索引、觸發程式、條件限制以及資料表的權限等。

    删除資料庫:

    DROP DATABASE [database_name];      

    删除資料庫中的表:

    DROP TABLE [table_name];      

    删除資料庫表的索引:

    -- mysql
    ALTER TABLE [table_name] DROP INDEX [index_name];
    -- DB2 和 Oracle
    DROP INDEX [index_name];          
  • alter語句:修改資料表定義及屬性。  

    在已經存在的表中添加字段:

    ALTER TABLE [table_name] ADD [column_name] [datatype];
    -- 房間表添加業态
    ALTER TABLE `room_info` ADD COLUMN business_type tinyint(4) DEFAULT '1' COMMENT "業态" AFTER new_room_id;      

    删除表中已經存在的字段:

    ALTER TABLE [table_name] DROP COLUMN [column_name];      

    修改表中已經存在的字段的類型:

    -- 将 table_name表 中的字段 column_name 修改為新的資料類型
    ALTER TABLE [table_name] ALTER COLUMN [column_name] 新資料類型;
    ALTER TABLE [table_name] MODIFY COLUMN [column_name] 新資料類型;      

    修改表中字段名為新的字段:

    -- 将 table_name 的 column_name 字段修改為 datatype 類型的 new_column_name字段
    ALTER TABLE [table_name] CHANGE COLUMN [column_name] [new_column_name] [datatype] COMMENT "描述";
    -- 實際操作
    ALTER TABLE bs_area CHANGE COLUMN `data_states` `data_state` int(11) COMMENT "狀态";      

DML (Data Manipulation Language):資料操作語言

  • insert 語句:向資料表中插入記錄。
    -- 将table_name表中的每一個字段都插入值
    INSERT INTO [table_name] VALUES (value1,value2,...);
    -- 将table_name表中的特定字段插入值
    INSERT INTO [table_name](column_name1, column_name2,...) VALUES (value1, value2,...);      
  • delete 語句:删除資料表中的一條或多條記錄,也可以删除資料表中的所有記錄。
    DELETE FROM [table_name] WHERE [column_name] = [value];      
  • update 語句:用于修改已存在表中的記錄的内容。 
    UPDATE [table_name] SET [column_name1] = [value1] WHERE [column_name2] = [value2];      
  • truncate 語句:清除表中所有資料。
    -- 對比drop的操作,僅清除表中的資料
    TRUNCATE TABLE [table_name]      

DCL (Data Control Language):資料控制語言

  • grant 語句:允許對象的建立者給某使用者或某組或所有使用者(PUBLIC)某些特定的權限。
    -- 向 資料庫使用者 授權 資料庫對象(表、視圖、字段)的 權限(select,insert,update,delete)
    GRANT <權限> ON <資料對象> FROM <資料庫使用者>      
  • revoke 語句:可以廢除某使用者或某組或所有使用者通路權限。
    -- 回收 資料庫使用者 在 資料庫對象(表、視圖、字段)的 權限(select,insert,update,delete)
    REVOKE <權限> ON <資料對象>  FROM <資料庫使用者名>      

DQL (Data Query Language):資料查詢語言

  • select 語句:資料檢索語句,用于從表中擷取資料。
    SELECT [column_name1] FROM [table_name] WHERE [column_name2] = [value2];      
  • select 語句中所有關鍵字書寫順序

    ①SELECT [DISTINCT]

    ②FROM

    ③JOIN

    ④ON

    ⑤WHERE

    ⑥GROUP BY

    ⑦HAVING

    ⑧UNION

    ⑨ORDER BY

    ⑩LIMIT

  • 執行順序

    ①FROM:将資料從硬碟加載到資料緩沖區,友善對接下來的資料進行操作。

    ②WHERE:從基表或視圖中選擇滿足條件的元組。(不能使用聚合函數)

    ③JOIN:(如right left 右連接配接-------從右邊表中讀取某個元組,并且找到該元組在左邊表中對應的元組或元組集)

    ④ON:join on實作多表連接配接查詢,推薦該種方式進行多表查詢,不使用子查詢。

    ⑤GROUP BY:分組,一般和聚合函數一起使用。

    ⑥HAVING:在元組的基礎上進行篩選,選出符合條件的元組。(一般與GROUP BY進行連用)

    ⑦SELECT:查詢到得所有元組需要羅列的哪些列。

    ⑧DISTINCT:去重的功能。

    ⑨UNION:将多個查詢結果合并(預設去掉重複的記錄)。

    ⑩ORDER BY:進行相應的排序。

    ⑪LIMIT 1:顯示輸出一條資料記錄(元組)

DPL (Data Processing Language):事務處理語言

  • 事務處理語句能確定被DML語句影響的表的所有行及時得以更新DPL語句包括BEGIN TRANSACTION、COMMIT和ROLLBACK
  -- 實際使用示例
  -- 開啟事務t1 BEGIN {TRAN | TRANSACTION} [transaction_name]
  begin tran t1;
  -- 事務中的多個操作 insert/update/delete
  update ...;
  insert into ...;
  update ...;
  delete ...;
  -- 事務commit或者rollback
  commit;      

CCL (Cursor Control Language):指針控制語言

  • DECLARE CURSOR、FETCH INTO和UPDATE WHERE CURRENT用于對一個或多個表單獨行的操作