TCL语言
2021/8/16 23:36:25
本文主要是介绍TCL语言,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#TCL 语言 #transaction control language 事务控制语言 #事务:一个或一组SQL语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。 /*innodb引擎支持事物*/ #1、事务的ACID属性(原一隔持) /* (1)原子性 一个事物不可分割,要么都发生要么都不发生 (2)一致性 consistency 一个事务执行从一个一致性状态到另一个一致性状态 (3)隔离性 并发执行的各个事务之间不能互相干扰 (4)持久性 一个事物一旦提交,对数据库的数据的改变就是永久性的 */ #2、事务的创建 /* (1)隐式事务:没有明显的开启和结束标记 例如insert、update、delete (2)显式事务:事务具有明显的开启和结束的标记 前提:必须先设置自动提交功能为禁用 set autocommit=0 #只针对当前事物有效 步骤1:开启事务 set autocommit=0; start transaction;[可选的] 步骤2:编写事务的SQL语句(select insert update delete) 步骤3:结束事务 commit;#提交事务 rollback; #回滚事务 */ #开启事物 SET autocommit=0; START TRANSACTION; #编写事务的语句 UPDATE `tab_8` SET `name`="c" WHERE `id`=1; UPDATE `tab_8` SET `name`="e" WHERE `id`=2; #关闭事务 COMMIT; #rollback ,回滚需要结束条件,么有结束条件只保存到内存中,不会对磁盘文件修改 #3、并发事物的解决 /* 多个事物访问数据库中相同的数据,如果没有采取必要的隔离机制,会导致各种并发问题 (1)脏读 (2)不可重复读(针对update) (3)幻读(针对insert) MySQL支持四种隔离级别 脏读 幻读 不可重复读 read uncommitted: ✔ ✔ ✔ read committed: × ✔ ✔ repeatable read: × × ✔ serializable: × × × mysql中默认 第三个隔离级别 repaeatable read oracle 默认第二个 read committed 命令: #查看隔离级别 select @@tx_isolation; set session|global transaction isolation level 隔离级别; 4、savepoint的使用 */ #开启事物 SET autocommit=0; START TRANSACTION; #编写事务的语句 UPDATE `tab_8` SET `name`="c" WHERE `id`=1; SAVEPOINT a;#设置回滚点 UPDATE `tab_8` SET `name`="e" WHERE `id`=2; #关闭事务 ROLLBACK TO a; #回滚到保存点 #另外:delete 支持回滚,truncate不支持回滚 #视图 /* 含义:虚拟表,和普通表一样使用 MySQL 5.1 版本出现的新特性,通过表动态生成的数据 应用场景: 一、多个地方用到同样的查询结果 二、该查询结果使用的SQL语句较复杂 (1)创建 create view 视图名 as 查询语句; */ # 1、查询邮箱中包含a字符的员工名、部门名和工种信息 CREATE VIEW info AS SELECT e.`last_name`,d.`department_name`,j.* FROM `employees` e INNER JOIN `departments` d ON d.`department_id` = e.`department_id` INNER JOIN `jobs` j ON e.`job_id` = j.`job_id`; SELECT `last_name`,`department_name`,`job_id`,`job_title` FROM info WHERE `last_name` LIKE "%a%"; /* 好处: (1)重用SQL语句 (2)简化了复杂的SQL操作,不必知道它的查询细节 (3)保护数据,提高安全性 */ #(2)视图的修改 /* 方式一: create or replace view 视图名 as 查询语句 方式二: 语法: alter view 视图名 as 查询语句 */ #(3)视图的删除 /* 语法:drop view 视图1,视图2 */ #(4)查看视图 DESC info; #(5)视图的更新 /*插入 insert into 修改 uodate set 删除 drop 注意: 具备以下特点的视图不允许更新: (1)包含以下关键字的SQL语句:分组函数、distinct、group by、having、union 或者union all (2)常量视图 (3)select 中包含子查询 (4)join (5)from 一个不能更新的视图 (6)where子句的子查询引用了from中的表 */ #对比 是否占用空间 增删改查 /*视图 create view 几乎不占用 一般不支持 表 create table 占用 支持 */ #测试题 #创建book表 CREATE TABLE book( bid INT PRIMARY KEY, bname VARCHAR(20) UNIQUE NOT NULL, price DOUBLE DEFAULT 10, #foreign key(typeId) references bookType(id) );
这篇关于TCL语言的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-29怎么去掉UniApp中字符串的空格?-icode9专业技术文章分享
- 2024-11-29Warning: Cannot modify header information - headers already sent by 报错信息是什么?-icode9专业技术文章分享
- 2024-11-29Excel中实现拖动排序的简易教程
- 2024-11-29如何在Excel中使用拖动排序功能
- 2024-11-28阿里云 ECS课程:新手入门教程
- 2024-11-27Excel中实现拖动排序的简单教程
- 2024-11-27Rocket消息队列资料:新手入门指南
- 2024-11-27rocket消息队资料详解与入门指南
- 2024-11-27RocketMQ底层原理资料详解入门教程
- 2024-11-27RocketMQ项目开发资料:新手入门教程