随笔分类 -  数据库

摘要:oracle对无order by的语句返回的结果不进行排序,oracle此时的处理方式是按照数据的物理存储顺序来读取数据。因为rowid是每行数据的地址,所以有时候看起来会像是使用rowid排序的。但这个顺序是可能被打乱的,在表的数据被删除后,rowid会被新插入的数据占用。所以一个无order by查询结果看起来也可能是个杂乱无章的。Select 语句如果不加 “Order By”, MySQL会怎么排序呢?* 不能依赖 MySQL 的默认排序* 如果你想排序,总是加上 Order By* GROUP BY 强加了 Order By,对于 MyISAM 表MySQL Select 默认排序是 阅读全文
posted @ 2012-09-07 16:44 zhwj184 阅读(1039) 评论(0) 推荐(0)
摘要:今天使用sql在oracle直接insert update一个表时,出现ORA-01704: string literal too long的错误,我们的sql是update mall_config a set a.category_info='|标准件:1040140,1035382,1036586,1035383,1032451,1032469,141903,1036587,1044047,1035380,1035385,1455,1035379,1035376,1035464,141906,1046869,1035386,141909,1035377,141901,1046875 阅读全文
posted @ 2012-08-28 16:29 zhwj184 阅读(858) 评论(0) 推荐(0)
摘要:jetty7对sessionId的处理,首先入口在SessionHandler.java的doScope方法,jetty的源码分析可以参考这篇http://zhwj184.iteye.com/admin/blogs/1161542。 /* ------------------------------------------------------------ */ /* * @see org.eclipse.jetty.server.Handler#handle(javax.servlet.http.HttpServletRequest, javax.servlet.http... 阅读全文
posted @ 2012-07-29 10:52 zhwj184 阅读(476) 评论(0) 推荐(0)
摘要:第二章:乱穿马路 2.1 目标:存储多值属性 2.2 反模式:格式化的逗号分隔列表 模糊匹配无法使用索引,影响性能;多表关联麻烦,却极大影响性能;执行聚合查询不方便开发和调试;更新某个字段值必须执行两次;字段内容出错数据很难恢复修正;选择一个用不用到的分隔符,无法确认不适用;列表长度限制; 2.3 解决方案:创建一张交叉表,实现两张表的多对多的关联第三章:单纯的树 目标:分层存储和查询 案例:文章和评论 每篇文章有多篇评论,每个评论可以引用另外的评论。 反模式: 最简单的解决方案就是在同一张表中存储该评论id的父节点id(parent_id) 邻接表的使用查询:select c1.... 阅读全文
posted @ 2012-07-21 20:49 zhwj184 阅读(253) 评论(0) 推荐(0)
摘要:表结构:create table view(id int unsigned NOT NULL AUTO_INCREMENT, catid int,title varchar(256),picture MEDIUMBLOB, content TEXT,PRIMARY KEY (id));java类操作:import java.awt.Image; import java.io.*; import java.nio.ByteBuffer; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQ 阅读全文
posted @ 2012-06-16 14:41 zhwj184 阅读(1318) 评论(0) 推荐(0)
摘要:oracle里面要获取每个分组里面的topN可以采用:select * from (select emp_id, name, occupation, rank() over ( partition by occupation order by emp_id) rank from employee) where rank <= 3 select * from (select emp_id, name, occupation,rank() over ( partition by occupation order by emp_id,RowNum) ... 阅读全文
posted @ 2012-06-02 08:28 zhwj184 阅读(182) 评论(0) 推荐(0)
摘要:mysql> show table status like 'mytable' \G;*************************** 1. row *************************** Name: mytable 表名 Engine: InnoDB 存储引擎伟InnoDB Version: 10 mysql版本 Row_format: Compact 行格式。有Dynamic,fixed,Compact等格式。Dynamic是动态行,表字段里面宝航varchar,BloB等不定长字段。fixed是定长行。Compact是行压缩。 Ro... 阅读全文
posted @ 2012-05-31 13:38 zhwj184 阅读(154) 评论(0) 推荐(0)
摘要:1.避免在where子句中对字段施加函数,这样将导致索引失效,比如:select * from user where to_char(create_time,'yyyymmdd')='20090101';原因:在建立index的时候是根据字段来建立的,也就是说oracle在inidex的时候是索引的字段的值,如果提供给oracle的是一个需要经过函数处理的比较,oracle就没办法通过索引中的索引键值来进行相应的比较,所以就不会走到索引上2.避免在SQL中发生隐式类型转换如:select * from user where id='123'; - 阅读全文
posted @ 2010-01-15 13:42 zhwj184 阅读(150) 评论(0) 推荐(0)
摘要:编译和连接程序 MySQL中有一个特殊的脚本,叫做mysql_config. 它会为你编译MySQL客户端,并连接到MySQL服务器提供有用的信息.你需要使用下面两个选项. 1. --libs 选项 - 连接MySQL客户端函数库所需要的库和选项. $ mysql_config --libs 2. --cflags 选项 - 使用必要的include文件的选项等等. $ mysql_config --cflags 你需要将上面两个选项加入到对源文件的编译命令中. 所以,要编译上面的程序,要使用下面的命令: $ g++ -o output-file $(mysql_config ... 阅读全文
posted @ 2009-11-24 19:12 zhwj184 阅读(216) 评论(0) 推荐(0)
摘要:1.在创建表的同时创建索引 CREATE TABLE material(id INT NOT NULL, name char(40) NOT NULL, resistance INT, INDEX index1(id,name), UNIQUE INDEX index2(name)) 第一个索引,名为index1,由id和name两个字段组成。第二个索引只包含name,并指明name字段的值必须是唯一的。2.插入数据,可以通过其他某个表中的数据填充新表以插入新数据 INSERT INTO foods(name,fat) SELECT food_name, fat_grams FROM reci 阅读全文
posted @ 2009-10-26 21:16 zhwj184 阅读(107) 评论(0) 推荐(0)