最近有在追踪一个tp3的事务问题,正好看到事务嵌套的问题,于是整理了出来,本来想等待同事整理,白嫖他,结果等了个寂寞。(1).参考事务嵌套的错误SQL:### 事务1开启 BEGIN;  ## 事务1修改数据  UPDATE hqjf_job_num  SET wx_uname='蒋琦1024' where id = 602;   &nb
给定四个表:student(学生表)teacher(老师表)course(课程表)sc(成绩表)根据题目要求,写出SQL语句。「问题列表」1、查询每个学生的学号、姓名和每门课的成绩2、查询都学过2号同学(sid=2)学习过的课程的同学的学号3、查询“语文(cid=1)”课程比“数学(cid=2)”课程成绩高的所有学生的学号;4、查询平均成绩大于60分的同学的学号和平均成绩;5、查询所有同学的学号、姓名、选课数、总成绩;6、查询姓“李”的老师的个数;7、查询没学过“叶平”老师课的同学的学号、姓名;
什么是索引索引是存储引擎用于快速找到记录的一种数据结构.理解索引一个常见的例子就是书的目录。我们都已经养成了看目录的习惯,拿到一本书时,我们首先会先去查看他的目录,并且当我们要查找某个内容时,我们会在目录中查找,然后找到该片段对应的页码,再根据相应的页码去书中查找。如果没有索引(目录)的话,我们就只能一页一页的去查找了。在MySQL中,假设我们有一张如下记录的表:idnameage1huyan102huiui183lumingfei204chuzihang155nono21如果我们希望查找到年龄
什么是事务事务是逻辑上的一组操作,要么都执行,要么都不执行。事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。事务的特性(ACID)原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起
用途多个查询需要在同一时刻修改数据,会产生并发控制的问题。使用锁可以有效解决这个问题锁的分类按照锁的粒度划分:行锁、表锁、页锁按照锁的使用方式划分:共享锁、排它锁(悲观锁的一种实现)还有两种思想上的锁:悲观锁、乐观锁InnoDB中有几种行级锁类型:Record Lock(在索引记录上加锁)、Gap Lock(间隙锁)、Next-key Lock(临键锁)行锁行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。**行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销
SQL通用优化方案:1. 使用参数化查询:防止SQL注入,预编译SQL命令提高效率2. 去掉不必要的查询和搜索字段:其实在项目的实际应用中,很多查询条件是可有可无的,能从源头上避免的多余功能尽量砍掉,这是最简单粗暴的解决方案。3. 选择最有效率的表名顺序: 数据库的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表放在最后,如果有3个以上的表连接查询,那就需要选择那个被其他表所引用的表放在最后。
数据库命令规范• 所有数据库对象名称必须使用小写字母并用下划线分割• 所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)• 数据库对象的命名要能做到见名识意,并且最后不要超过 32 个字符• 临时库表必须以 tmp_为前缀并以日期为后缀,备份表必须以 bak_为前缀并以日期 (时间戳) 为后缀• 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低
索引相关1. 什么是索引?索引是一种数据结构,可以帮助我们快速的进行数据的查找.2. 索引是个什么样的数据结构呢?索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引.3. Hash索引和B+树所有有什么区别或者说优劣呢?首先要知道Hash索引和B+树索引的底层实现原理:hash索引底层就是hash表,进行查找时,调用一次hash函数就可以获取到相应的键值,之后进行回表查询获得实际数据
(1).查询出现问题的sql:SELECT *  FROM hqjf_express_trace_items  WHERE trace_id in( SELECT trace_id FROM hqjf_express_trace WHERE (STATUS = 1 OR receipt_time > 0 )&nbs
生成sql格式(将qdm723412313_db改为你的数据库名称即可):SELECT concat( 'alter table ', table_name, ' engine=InnoDB CHARSET=utf8mb4; ' )  FROM information_schema.TABLES t  WHERE table_sc
Top