數據庫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 <數據對象> TO <數據庫用戶>
  • revoke 語句:可以廢除某用戶或某組或所有用戶訪問權限。
    -- 回收 數據庫用戶 在 數據庫對象(表、視圖、字段)的 權限(select,insert,update,delete)
    REVOKE <權限> ON <數據對象>  FROM <數據庫用戶名>

   實戰:

-- 創建數據庫的用戶 允許所有ip進行鏈接(通過通配符%來表示)
CREATE USER 'selectonly'@'%' IDENTIFIED BY 'S3lect@only';
-- 創建數據庫的用戶 允許指定ip:localhost進行鏈接
CREATE USER 'selectonly'@'localhost' IDENTIFIED BY 'S3lect@only';

-- 刪除指定用戶
DROP USER 'selectonly'@'%';

-- 給用戶授權只讀權限select
GRANT select ON sc_golden_panda.* TO 'selectonly'@'%';
-- 允許訪問所有數據庫下的所有表
GRANT all privileges on *.* to '新用戶名'@'ip' identified by '新用戶密碼';
-- 指定數據庫test下的指定表test
GRANT all privileges on test.test to '新用戶名'@'ip' identified by '新用戶密碼';
-- 設置用戶擁有查詢插入的權限
GRANT select,insert on *.* to '新用戶名'@'ip' identified by '新用戶密碼' WITH GRANT OPTION;

-- 取消用戶查詢的查詢權限
REVOKE select ON sc_golden_panda.* FROM 'selectonly';

--修改后刷新權限
FLUSH PRIVILEGES;

-- 查看指定用戶被授予的權限
SHOW grants for 'selectonly'@'%';

 

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:將數據從硬盤加載到數據緩沖區,方便對接下來的數據進行操作。
    ②ON:join on實現多表連接查詢,推薦該種方式進行多表查詢,不使用子查詢。

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

    ④WHERE:從基表或視圖中選擇滿足條件的元組。(不能使用聚合函數)
    ⑤GROUP BY:分組,一般和聚合函數一起使用。
    ⑥HAVING:在元組的基礎上進行篩選,選出符合條件的元組。(一般與GROUP BY進行連用)
    ⑦SELECT:查詢到得所有元組需要羅列的哪些列。
    ⑧DISTINCT:去重的功能。
    ⑨UNION:將多個查詢結果合並(默認去掉重復的記錄)。
    ⑩ORDER BY:進行相應的排序。
    ⑪LIMIT 1:顯示輸出一條數據記錄(元組)

 

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

  • 事務處理語句能確保被DML語句影響的表的所有行及時得以更新DPL語句包括BEGIN TRANSACTIONCOMMITROLLBACK
  -- 實際使用示例
  -- 開啟事務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用於對一個或多個表單獨行的操作

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM