随笔分类 -  mysql

摘要:今天写存储过程时,遇到要将表名最为参数的问题,如果不涉及到游标的话,使用prepare可以解决问题,但是,动态表名要运用在游标中的话,则prepare就得靠边站了。 集众人之智慧,最后,使用临时表解决了问题。 如何在MySQL的存储过程中实现把过程参数用在游标定义的SELECT命令里面作为表名引用 阅读全文
posted @ 2019-12-22 17:36 那些年的代码 阅读(3843) 评论(0) 推荐(0)
摘要:use eepm_push; DROP PROCEDURE IF EXISTS FountTable; delimiter $$ create procedure FountTable() begin declare TableName varchar(64); DECLARE cur_FountT 阅读全文
posted @ 2019-12-22 17:34 那些年的代码 阅读(1082) 评论(0) 推荐(0)
摘要:begin declare b int; declare use_no varchar(10); declare use_name varchar(400); declare card_id varchar(400); declare count int; declare cur_1 cursor  阅读全文
posted @ 2019-12-22 17:33 那些年的代码 阅读(1439) 评论(0) 推荐(0)
摘要:MYSQL在一个字段值后面加字符串,如下: member 表名 card 字段名 update member SET card = '00' || card; (postgreSQL 用 || 来连贯字符串) MySQL连贯字符串不能利用加号(+),而利用concat。 比方在aa表的name字段前 阅读全文
posted @ 2019-12-22 17:29 那些年的代码 阅读(1508) 评论(0) 推荐(0)
摘要:前面几篇关于数据库底层磁盘文件读取,数据库索引实现细节进行了深入的研究,但是没有串联起来的讲解为什么数据库索引会采用B树和B+树而不是其他的数据结构,例如平衡二叉树、链表等,因此,本文打算从数据库文件存储以及读取说起,讲解数据库索引的由来。 我们以抛出问题的形式开始讲解: (1)数据库文件存储的方式 阅读全文
posted @ 2019-12-20 14:59 那些年的代码 阅读(1857) 评论(0) 推荐(0)
摘要:原因就是为了减少磁盘io次数,因为b+树所有最终的子节点都能在叶子节点里找见, 所以非叶子节点只需要存`索引范围和指向下一级索引(或者叶子节点)的地址` 就行了, 不需要存整行的数据,所以占用空间非常小,直到找到叶子节点才加载进来整行的数据。 B树非叶子节点也会存数据,所以不适合mysql(以后研究 阅读全文
posted @ 2019-12-20 14:41 那些年的代码 阅读(3907) 评论(0) 推荐(0)
摘要:在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使用B+树! 学过数据结构的一般对最基础的树都有所认识,因此我们就从与我们主题更为相近的二叉查找树开始 阅读全文
posted @ 2019-12-19 17:54 那些年的代码 阅读(343) 评论(0) 推荐(0)
摘要:MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 MySQL InnoDB 锁 MySQL InnoDB MVCC MySQL InnoDB 实现高并发原 阅读全文
posted @ 2019-12-10 17:04 那些年的代码 阅读(561) 评论(0) 推荐(0)
摘要:阅读目录(Content) 1 简要说明 2 SELECT_TYPE 2 TYPE 3 ref 4 extra 回到顶部(go to top) 1 简要说明 id 表格查询的顺序编号。 降序查看,id相同的从上到下查查看。 id可以为null ,当table为( union ,m,n )类型的时候, 阅读全文
posted @ 2019-12-10 17:04 那些年的代码 阅读(354) 评论(0) 推荐(0)
摘要:一。什么是数据库执行计划: MySQL执行计划是sql语句经过查询优化器后,查询优化器会根据用户的sql语句所包含的字段和内容数量等统计信息,选择出一个执行效率最优(MySQL系统认为最优)的执行计划,然后根据执行计划,调用存储引擎提供的接口,获取数据。执行计划,简单的来说,是SQL在数据库中执行时 阅读全文
posted @ 2019-12-10 17:02 那些年的代码 阅读(645) 评论(0) 推荐(1)
摘要:项目开发中,性能是我们比较关注的问题,特别是数据库的性能;作为一个开发,经常和SQL语句打交道,想要写出合格的SQL语句,我们需要了解SQL语句在数据库中是如何扫描表、如何使用索引的; MySQL提供explain/desc命令输出执行计划,我们通过执行计划优化SQL语句。 下面我们以MySQL5. 阅读全文
posted @ 2019-12-10 15:58 那些年的代码 阅读(3377) 评论(0) 推荐(0)
摘要:mybatis批量查询 注意这里的 in 和 <trim prefix="(" suffix=")"> 以及 in ( )的三种方式的(例1(推荐),例2,例3(推荐))等价使用 例1: 1 List<UBaseMenu> findMenuName(List<String> valueList); 阅读全文
posted @ 2019-12-09 11:00 那些年的代码 阅读(567) 评论(0) 推荐(0)
摘要:数据库设计范式 什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些 规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。 什么是三大范式: 第一范式:当关系模式R的所有属性都不能在分解为更基本的数 阅读全文
posted @ 2019-12-09 10:46 那些年的代码 阅读(299) 评论(0) 推荐(0)
摘要:非常实用的数据库设计优化,拿来与大家分享;静下心来慢慢体会,当你真正用到的时候便会豁然开朗;学无止境、继续前行! 1 一、树型关系的数据表 不少程序员在进行数据库设计的时候都遇到过树型关系的数据,例如常见的类别表,即一个大类,下面有若干个子类,某些子类又有子类这样的情况。当类别不确定,用户希望可以在 阅读全文
posted @ 2019-12-09 10:26 那些年的代码 阅读(775) 评论(0) 推荐(0)
摘要:物理设计: 物理设计要做什么? 选择合适的数据库管理系统。 考虑因素:成本,业务场景,开发语言,功能,操作系统等。 数据库类型 成本 开发语言 支持系统 业务场景 Oracle 商业型 php,java,python等 windows/liunx系统 企业级 SQLServer 商业型 .NET,C 阅读全文
posted @ 2019-12-06 11:00 那些年的代码 阅读(444) 评论(0) 推荐(0)
摘要:在做教务系统的时候,一个学生(alumni_info)有多个教育经历(alumni_education),使用的数据库是mysql,之前使用左链接查询的,发现数据量才只有几万条时,查询就很慢了,早上想到用子查询in,感觉效率还不是很高,结果想到用exists,效率高了很多。由于是第一次在mysql中 阅读全文
posted @ 2019-12-04 17:03 那些年的代码 阅读(11967) 评论(0) 推荐(1)
摘要:表展示 首先,查询中涉及到的两个表,一个user和一个order表,具体表的内容如下: user表: order表: in 确定给定的值是否与子查询或列表中的值相匹配。in在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选。所以相对内表比较小的时候,in的速度较快 阅读全文
posted @ 2019-12-04 17:00 那些年的代码 阅读(301) 评论(0) 推荐(0)
摘要:结论 1. in()适合B表比A表数据小的情况 2. exists()适合B表比A表数据大的情况 当A表数据与B表数据一样大时,in与exists效率差不多,可任选一个使用. select * from Awhere id in(select id from B) 以上查询使用了in语句,in()只 阅读全文
posted @ 2019-12-04 16:55 那些年的代码 阅读(175) 评论(0) 推荐(0)
摘要:SELECT * FROM product_db.productinfo pi WHERE pi.isvalid = 1 AND pi.id IN (22, 60) 下面将使用一个简单的过程来演示这个操作下面这个是mybatis的映射文件 <select id="queryAllOpenProduc 阅读全文
posted @ 2019-12-04 11:20 那些年的代码 阅读(3020) 评论(0) 推荐(0)
摘要:触发器(trigger):监视某种情况,并触发某种操作。 触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete) 语法: create trigge 阅读全文
posted @ 2019-11-19 18:57 那些年的代码 阅读(230) 评论(0) 推荐(0)