千家信息网

MYSQL数据库的TCL语言和DCL语言是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"MYSQL数据库的TCL语言和DCL语言是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学
千家信息网最后更新 2026年11月01日MYSQL数据库的TCL语言和DCL语言是什么

本篇内容介绍了"MYSQL数据库的TCL语言和DCL语言是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、TCL语言的操作语法,有时候我们的一个需求(一个任务),可能会涉及到多个DML(增删改)操作。那么这一系列操作, 我们要看成一个整体,不可切割。如在一个员工系统中,某员工A的数据可能会存在多个表中,如基本信息表,业务信息表,邮箱信息表等。当我们想删除此人的所有信息时,除了删除这个人的基本信息外,还应该删除与此人有关的其他所有信息,如邮箱,地址等等。这样的操作会涉及到多个DML语句。那么从开始执行到真正结束,就会构成一个事务(Transaction)。对于事务,我们要保证事务的完整性,不能分割。事务要么成功, 要么撤回(回到执行前),不能执行一部分就终止。

  注意,只有DML操作时,才会涉及到事务。而mysql数据库在执行完每一个DML操作时,会默认commit; 可以使用start transaction来取消自动提交

commit:用于提交,表示事务成功结束。用于确认数据的更改,持久化。

rollback:用于回滚,回退到事务开始前。取消所有的DML操作。

savepoint: 设置事务的保存点,可以回退到指定的保存点。

事务有四个基本特征,简称ACID.

(1) 原子性(Atomicity): 即事务要么成功,要么撤回,不可切割。(2) 一致性(Consistency):事务开始前和结束后,要保证数据的一致性。如转账案例,转账前账号A和账号B的钱的总数为10000。转账后账号A和账号B的钱的总数应该还是10000;(3) 隔离性(Isolation):当涉及到多用户操作同一张表时,数据库为会每一个用户开启一个事务。那么当其中一个事务正在进行时,其他事务应该处于等待状态。保证事务之间不会受影响。(4) 持久性(Durability): 当一个事务被提交后,我们要保证数据库里的数据是永久改变的。即使数据库崩溃了,我们也要保证事务的完整性。

关于事务的隔离性,尤为重要。当多用户(多线程)同时操作同一张表时,如果没有隔离机制,可能会发生以下问题:

脏读:事务A读取了事务B刚刚更新的数据,但是事务B回滚了,这样就导致事务A读取的为脏数据,我们称之为脏读。如公司某财务人员更新公司入账报表时,在DML语句中的数字后少添加了一个0,但是未提交,然后吃饭,吃饭回来,发现错误,然后更正后做了提交。而在吃饭期间,老板要求秘书查看一下报表,秘书看到的是少个0的数据。这就是脏读。

不可重复读:事务A读取同一条记录两次,但是在两次之间事务B对该条记录进行了修改并提交,导致事务A两次读取的数据不一致。它和脏读的区别是,脏读是事务A读取了另一个事务B未提交的脏数据,而不可重复读则是事务A读取了事务B提交的数据。多数情况下,不可重复读并不是问题,因为我们多次查询某个数据时,当然要以最后查询得到的结果为主。但在另一些情况下就有可能发生问题,比如,老板让B和C分别核对事务A操作的数据,结果可能不同,老板是怀疑B呢,还是C呢?

幻读:事务A在修改全表的数据,比如将字段age全部修改为0岁,在未提交时,事务B向表中插入或删除数据,如插入一条age为25岁的数据。这样导致事务A读取的数据与需要修改的数据不一致,就和幻觉一样。幻读和不可重复读的相同点:都是针对于另外一个已经提交的事务而言。不同点:不可重复读是针对于同一条记录来说的(delete或update 同一条记录),而幻读是针对于一批数据来说的(insert)

事务的隔离机制有以下四种:

1、未提交读(read uncommitted):就是不做隔离控制,可以读到"脏数据",可能发生不可重复读,也可能出现幻读。2、提交读(read committed):提交读就是不允许读取事务没有提交的数据。显然这种级别可以避免了脏读问题。但是可能发生不可重复读,幻读。这个隔离级别是大多数数据库(除了mysql)的默认隔离级别。 3、可重复读(repeatable read):为了避免提交读级别不可重复读的问题,在事务中对符合条件的记录上"排他锁",这样其他事务不能对该事务操作的数据进行修改,可避免不可重复读的问题产生。由于只对操作数据进行上锁的操作,所以当其他事务插入或删除数据时,会出现幻读的问题,此种隔离级别为Mysql默认的隔离级别。4、序列化(Serializable),在事务中对表上锁,这样在事务结束前,其他事务都不能够对表数据进行操作(包括新增,删除和修改),这样避免了脏读,不可重复读和幻读,是最安全的隔离级别。但是由于该操作是堵塞的,因此会严重影响性能。

相关语法格式如下:

查看数据库的当前隔离机制: select @@tx_isolation;修改数据库的隔离机制:set transaction isolation level 机制名称 或者是 set tx_isolation='机制名称';如:set transaction isolation level read uncommitted 或者 set tx_isolation='read-uncommitted';

二、DCL语言的操作语法

(1)创建用户:create user username@ip identified by newPassword;

(2)修改密码:alter user username@ip identified by newPassword;

(3)显示用户的权限:show grants for username@ip;

(4)授权语句:grant 权限1,权限2,...... on databaseName.* to username@ip;

DDL权限名称: create、alter、drop、truncate 、create view 等等

DML权限名称: insert、delete、update

DQL权限名称: select

(5)撤销权限:revoke 权限1,权限2,..... on databaseName.* from username@ip;

(6)删除用户:drop user username;

(7)权限生效语句:flush privileges;

"MYSQL数据库的TCL语言和DCL语言是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

事务 数据 隔离 权限 数据库 级别 问题 语言 信息 机制 用户 名称 保证 一致 要么 语句 账号 成功 多个 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡豆 互联网属科技 米客互联网科技 赫美联合互联网科技 互联网金融监管科技 甘肃拓世互联网科技有限公司 云创客互联网科技公司 济南华为互联网科技产业总部基地 栖莱科技互联网股份有限公司 速维有品互联网信息科技(苏州)有限公司 互联网科技人工智能实验室 互联网科技如何创业 南通创西澳互联网科技有限公司 有人说阿里系是互联网科技企业 互联网风格科技公司名称 同城互联网络科技 广西泛欧互联网科技有限公司 安徽九吞吴互联网科技有限公司 互联网大会出现的黑科技 广州全民伙伴互联网科技有限公司 中智农互联网科技 齐家互联网科技 广州恒生互联网科技有限 注册互联网科技公司经营范围大全 未来五年的互联网科技 互联网科技创新的路径 中和天地互联网科技有限公司 黑云互联网科技有限公司 富国互联网金融科技混合基金 承德科技产业互联网平台
0