数据库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用于对一个或多个表单独行的操作

 

posted @ 2022-01-20 16:07  颜子歌  阅读(1950)  评论(0编辑  收藏  举报