我正在用 MySQL 客户端的时候,突然想到如果可以给查询结果添加排名该多好啊,然后就找到了一个简单的解决办法. 下面是一个示例表的数据:  然后我们要根据 Roll_No 字段进行排序并给出排名,我们首先必须定义一个初始值为0的变量,然后在查询结果中使用这个变量. 如下面的代码: ? 1 2 3 SET @counter=0;    SELECT @counter:=@counter+1 AS Rank,LastName,Roll_no as Roll FROM Students ORDER…
大家都知道在MySQL中,MyISAM比InnoDB查询快,但很多人都不知道其中的原理. 今天我们就来聊聊其中的原理,另外也验证下是否MyISAM比InnoDB真的查询快. 在探索其中原理之前,我们先验证下查询速度. 验证 下面我们一起来验证两个问题: 1.通过主键查询,MyISAM是否比InnoDB查询快? 2.通过非主键字段查询,MyISAM是否比InnoDB查询快? 验证前准备 订单表结构: CREATE TABLE `trade` ( `id` INT(11) NULL DEFAULT…
这篇文章主要介绍了MySQL中TEXT与BLOB字段类型的区别,本文总结了6大区别,需要的朋友可以参考下   在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程序的博主不知道改为自己的博客正文字段选择TEXT还是BLOB类型. 下面给出几点区别: 一.主要差别 TEXT与BLOB的主要差别就是BLOB保存二进制数据,TEXT保存字符数据.目前几乎所有博客内容里的图片都不是以二进制存储在数据库的,而是把图片上传到服务器然后正文里使用<img>标签引用,这样…
方法参考自: http://stackoverflow.com/questions/8422455/performing-a-like-comparison-on-an-int-field 也就是使用CAST转换指定字段,然后进行比较.具体样例代码如下: SELECT ProductID, ProductName FROM Products WHERE CAST(ProductID as CHAR) LIKE '%15%' 但是这样做的话,MySQL不能使用对应int字段索引,而且like本身就…
要查询数据库中哪些表含有目标字段,可以使用语句: SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.`COLUMNS` WHERE COLUMN_NAME='字段名字' 参考:MySQL中,一个字段在多张表都存在,怎么用sql语句一次性查询这些表呢…
※MySQL中的字符编码(注意,utf8中没有'-',跟Java中不一样)SHOW VARIABLES; //查看系统变量//查询字符编码相关的系统变量SHOW VARIABLES WHERE variable_name LIKE 'character%'; 解决MySQK的中文乱码:character_set_client,character_set_connection和character_set_results这三者必须一致(GBK,GB2312,UTF8这三者都可以,但若采用其中一种则3…
mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段 先看一下 怎么实现动态的自定义字段查询: 例如: 而field 就是数据表中的某一个字段 String findContextByGoodsUid(@Param("goodsUid") String goodsUid,@Param("field") String field); <select id="findContextByGoodsUid"…
前言: 多表联合查询,其实就是我们MySQL中的join语句,经常会看到有人说join非常影响性能,不建议使用,你知道这是为什么呢?我们究竟可不可以用呢? 测试数据: CREATE TABLE `t2` ( `id` ) NOT NULL, `a` ) DEFAULT NULL, `b` ) DEFAULT NULL, PRIMARY KEY (`id`), KEY `a` (`a`) ) ENGINE=InnoDB; drop procedure idata; delimiter ;; cre…
一.前言 java 中MySQL JDBC 封装了流式查询操作,通过设置几个参数,就可以避免一次返回数据过大导致 OOM. 二.如何使用 2.1 之前查询 public void selectData(String sqlCmd) throws SQLException { validate(sqlCmd); Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = petad…
正确的做法是这样,对于数据量很大的表,需要添加所有或者修改字段的做法是如下: 1.先创建一张一样的表 create table new_tb like tb_old; 2.修改创建表的字段 alter table new_tb add COLUMN new_column varchar(32) DEFAULT null; 3.原始数据插入到新的数据表中 insert into new_tb (字段) select 字段 from tb_old; 这里需要注意下,你的insert字段和你查询出来的…