MYSQL的分类 DDL、DML、DQL、DCL

MySQL的分类 DDL、DML、DQL、DCL

  1. DDL(Data Definition Language,数据定义语言)
  2. DML(Data Manipulation Language,数据操纵语言)
  3. DQL(Data Query Language,数据查询语言)
  4. DCL(Data Control Language,数据控制语言)
1. DDL(Data Definition Language,数据定义语言)

主要用于维护存储数据的结构,这种结构包括数据库,表、视图、索引、同义词、聚簇等。

代表指令:

create 创建数据库和数据库的一些对象

drop 删除数据库/表、索引、条件约束以及数据表的权限等

alter 修改数据库表的定义及数据属性

2. DML(Data Manipulation Language,数据操纵语言)

主要用于对数据库对象中包含的数据进行操作

代表指令:

insert 向数据库中插入一条数据

delete 删除表中的一条或者多条记录

updata 修改表中的数据

3. DQL(Data Query Language,数据查询语言)

主要用于查询数据库当中的数据

代表指令:

selete 查询表中的数据
from 查询哪张表、视图
where 约束条件


4. DCL(Data Control Language,数据控制语言)

主要控制数据库对象的权限管理、事务和实时监视。

代表指令:

grant分配权限给用户
revoke废除数据库中某用户的权限
rollback 退回到某一点 (回滚)
commit 提交


补充:commit

在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。提交数据有三种类型:显式提交、隐式提交及自动提交。

显式提交
用commit命令直接完成的提交为显式提交。commit;

隐式提交
用SQL命令间接完成的提交为隐式提交。这些命令有:

alter、audit、comment、connect、create、disconnect、drop、exit、grant、noaudit、quit、revoke、rename。

自动提交
若把autocommit设置为on,则在插入、修改、删除语句执行后,系统将自动进行提交。set autocommit on;
 

Mysql 有一个坑,当session在执行ddl语句时,root用户具有super权限,执行kill connection时报ERROR 1095 (HY000): You are not owner of thread N,如下: 

| 2714 | root | localhost | pxc_test | Query | 38 | Waiting for table metadata lock | drop table t | 0 | 0 |

mysql> kill 2714;
ERROR 1095 (HY000): You are not owner of thread 2714

其他执行DML语句的连接不受此影响。

猜你喜欢

转载自blog.csdn.net/weixin_42056745/article/details/131891448