﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-只有面对现实，你才能超越现实-随笔分类-SQLite</title><link>http://www.cppblog.com/wanghaiguang/category/19871.html</link><description>不要浪费你的生命，在你一定会后悔的地方上。
逆水行舟，不进则退</description><language>zh-cn</language><lastBuildDate>Wed, 05 Sep 2012 16:06:24 GMT</lastBuildDate><pubDate>Wed, 05 Sep 2012 16:06:24 GMT</pubDate><ttl>60</ttl><item><title>SQLite查询空值操作</title><link>http://www.cppblog.com/wanghaiguang/archive/2012/08/10/186824.html</link><dc:creator>王海光</dc:creator><author>王海光</author><pubDate>Fri, 10 Aug 2012 06:15:00 GMT</pubDate><guid>http://www.cppblog.com/wanghaiguang/archive/2012/08/10/186824.html</guid><wfw:comment>http://www.cppblog.com/wanghaiguang/comments/186824.html</wfw:comment><comments>http://www.cppblog.com/wanghaiguang/archive/2012/08/10/186824.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wanghaiguang/comments/commentRss/186824.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wanghaiguang/services/trackbacks/186824.html</trackback:ping><description><![CDATA[<p>SQLite查询空值<br /><br />1、当插入数据位空时（如：Second= &#8220;&#8221;），数据中显示内容为（null）。如图所示。<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/wanghaiguang/image/sqlite1.jpg" width="209" height="97" /><br /><br />查询显示为空的列表：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">1</span>&nbsp;<span style="color: #000000">select&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;from&nbsp;&nbsp;Test&nbsp;where&nbsp;Second&nbsp;</span><span style="color: #0000ff">is</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span></div>
<p><br />显示结果：<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/wanghaiguang/image/sqlite2.jpg" /><br /><br />查询显示不为空的列表：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">1</span>&nbsp;<span style="color: #000000">select&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;from&nbsp;&nbsp;Test&nbsp;where&nbsp;Second&nbsp;not&nbsp;&nbsp;</span><span style="color: #0000ff">null</span></div>
<p><br />2、当插入数据的字段不存在时，数据库中显示为空。如图所示。<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/wanghaiguang/image/sqlite3.jpg" /><br /><br />查询显示为空的列表：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">1</span>&nbsp;<span style="color: #000000">select&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;from&nbsp;&nbsp;Test&nbsp;where&nbsp;Second&nbsp;</span><span style="color: #0000ff">is</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">''</span></div>
<p><br />显示结果<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/wanghaiguang/image/sqlite4.jpg" width="495" height="270" /><br /><br />查询显示不为空的列表：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">1</span>&nbsp;<span style="color: #000000">select&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;from&nbsp;&nbsp;Test&nbsp;where&nbsp;Second&nbsp;</span><span style="color: #000000">&lt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">''</span></div>
<p><br />&nbsp;</p> <img src ="http://www.cppblog.com/wanghaiguang/aggbug/186824.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wanghaiguang/" target="_blank">王海光</a> 2012-08-10 14:15 <a href="http://www.cppblog.com/wanghaiguang/archive/2012/08/10/186824.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLite的SQL语法</title><link>http://www.cppblog.com/wanghaiguang/archive/2012/08/10/186818.html</link><dc:creator>王海光</dc:creator><author>王海光</author><pubDate>Fri, 10 Aug 2012 05:23:00 GMT</pubDate><guid>http://www.cppblog.com/wanghaiguang/archive/2012/08/10/186818.html</guid><wfw:comment>http://www.cppblog.com/wanghaiguang/comments/186818.html</wfw:comment><comments>http://www.cppblog.com/wanghaiguang/archive/2012/08/10/186818.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wanghaiguang/comments/commentRss/186818.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wanghaiguang/services/trackbacks/186818.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: SQLite库可以解析大部分标准SQL语言。但它也省去了一些特性并且加入了一些自己的新特性。这篇文档就是试图描述那些SQLite支持/不支持的SQL语法的。查看关键字列表。如下语法表格中，纯文本用蓝色粗体显示。非终极符号为斜体红色。作为语法一部分的运算符用黑色Roman字体表示。这篇文档只是对SQLite实现的SQL语法的综述，有所忽略。想要得到更详细的信息，参考源代码和语法文件&#822...&nbsp;&nbsp;<a href='http://www.cppblog.com/wanghaiguang/archive/2012/08/10/186818.html'>阅读全文</a><img src ="http://www.cppblog.com/wanghaiguang/aggbug/186818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wanghaiguang/" target="_blank">王海光</a> 2012-08-10 13:23 <a href="http://www.cppblog.com/wanghaiguang/archive/2012/08/10/186818.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sqlite3 分页</title><link>http://www.cppblog.com/wanghaiguang/archive/2012/06/21/179596.html</link><dc:creator>王海光</dc:creator><author>王海光</author><pubDate>Thu, 21 Jun 2012 04:40:00 GMT</pubDate><guid>http://www.cppblog.com/wanghaiguang/archive/2012/06/21/179596.html</guid><wfw:comment>http://www.cppblog.com/wanghaiguang/comments/179596.html</wfw:comment><comments>http://www.cppblog.com/wanghaiguang/archive/2012/06/21/179596.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wanghaiguang/comments/commentRss/179596.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wanghaiguang/services/trackbacks/179596.html</trackback:ping><description><![CDATA[<div id="article_content" class="article_content"><span style="line-height: 28px; font-family: 微软雅黑, Verdana, 宋体, 新细明体, Arial, sans-serif; color: rgb(68,68,68); font-size: 14px"><font face="">Select * From user Limit&nbsp;3 Offset 5;<br style="font-family: 微软雅黑, Verdana, 宋体, 新细明体, Arial, sans-serif; max-width: 100%" /></font></span>
<p><span style="line-height: 28px; font-family: 微软雅黑, Verdana, 宋体, 新细明体, Arial, sans-serif; color: rgb(68,68,68); font-size: 14px"><font face="">以上语句表示从Account表获取数据，跳过5行，取3行</font></span></p>
<p><span style="line-height: 28px; font-family: 微软雅黑, Verdana, 宋体, 新细明体, Arial, sans-serif; color: rgb(68,68,68); font-size: 14px"><br /><font face=""></font></span></p>
<p><span style="line-height: 28px; font-family: 微软雅黑, Verdana, 宋体, 新细明体, Arial, sans-serif; color: rgb(68,68,68); font-size: 14px"><span style="line-height: 25px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; font-size: 14px"><font face=""></font></span></span></p>
<p style="padding-bottom: 0px; line-height: 25px; margin-top: 0px; margin-bottom: 10px; padding-top: 0px"><span style="line-height: 25px; font-weight: bold">用法一</span><br style="line-height: 25px" /></p>
<p style="padding-bottom: 0px; line-height: 25px; margin-top: 0px; margin-bottom: 10px; padding-top: 0px">SELECT `keyword_rank`.* FROM `keyword_rank` WHERE (advertiserid='59') LIMIT 2 OFFSET 1;</p>
<p style="padding-bottom: 0px; line-height: 25px; margin-top: 0px; margin-bottom: 10px; padding-top: 0px">比如这个SQL ，limit后面跟的是2条数据，offset后面是从第1条开始读取。</p>
<p style="padding-bottom: 0px; line-height: 25px; margin-top: 0px; margin-bottom: 10px; padding-top: 0px"><span style="line-height: 25px; font-weight: bold">用法二</span><br style="line-height: 25px" /></p>
<p style="padding-bottom: 0px; line-height: 25px; margin-top: 0px; margin-bottom: 10px; padding-top: 0px">SELECT `keyword_rank`.* FROM `keyword_rank` WHERE (advertiserid='59') LIMIT 2,1;</p>
<p style="padding-bottom: 0px; line-height: 25px; margin-top: 0px; margin-bottom: 10px; padding-top: 0px">而这个SQL，limit后面是从第2条开始读，读取1条信息。</p>
<p style="padding-bottom: 0px; line-height: 25px; margin-top: 0px; margin-bottom: 10px; padding-top: 0px">这两个千万别搞混哦。</p>
<p style="padding-bottom: 0px; line-height: 25px; margin-top: 0px; margin-bottom: 10px; padding-top: 0px"><span style="line-height: 25px; font-weight: bold">用法三</span><br style="line-height: 25px" /></p>
<p style="padding-bottom: 0px; line-height: 25px; margin-top: 0px; margin-bottom: 10px; padding-top: 0px">&nbsp;select * from tablename &lt;条件语句&gt; limit 100,-1</p>
<p style="padding-bottom: 0px; line-height: 25px; margin-top: 0px; margin-bottom: 10px; padding-top: 0px">从第100条后开始-最后一条的记录</p>
<p style="padding-bottom: 0px; line-height: 25px; margin-top: 0px; margin-bottom: 10px; padding-top: 0px"><span style="line-height: 25px; font-weight: bold">用法四</span></p>
<p style="padding-bottom: 0px; line-height: 25px; margin-top: 0px; margin-bottom: 10px; padding-top: 0px">&nbsp;select * from tablename &lt;条件语句&gt; limit 15</p>
<p style="padding-bottom: 0px; line-height: 25px; margin-top: 0px; margin-bottom: 10px; padding-top: 0px">相当于limit 0,15&nbsp;&nbsp; .查询结果取前15条数据</p><span style="line-height: 25px; font-weight: bold">用法五</span><br style="line-height: 25px" />mysql低版本不支持limit offset<br style="line-height: 25px" />limit offset 在mysql 4.0以上的版本中都可以正常运行，在旧版本的mysql 3.23中无效<br style="line-height: 25px" />limit m offset n 等价于 limit m,n<br style="line-height: 25px" /><br style="line-height: 25px" /><span style="line-height: 25px; font-weight: bold">limit 的优化</span><br style="line-height: 25px" /><br style="line-height: 25px" />mysql的limit给分页带来了极大的方便，但数据量一大的时候，limit的性能就急剧下降<br style="line-height: 25px" /><br style="line-height: 25px" />来源：一亩三分地博客&nbsp;<br style="line-height: 25px" />MYSQL的优化是非常重要的。其他最常用也最需要优化的就是limit。mysql的limit给分页带来了极大的方便，但数据量一大的时候，limit的性能就急剧下降。&nbsp;<br style="line-height: 25px" /><br style="line-height: 25px" />同样是取10条数据&nbsp;<br style="line-height: 25px" /><br style="line-height: 25px" />select * from yanxue8_visit limit 10000,10 和&nbsp;<br style="line-height: 25px" />select * from yanxue8_visit limit 0,10&nbsp;<br style="line-height: 25px" />就不是一个数量级别的。&nbsp;<br style="line-height: 25px" /><br style="line-height: 25px" />网上也很多关于limit的五条优化准则，都是翻译自mysql手册，虽然正确但不实用。今天发现一篇文章写了些关于limit优化的，很不错。&nbsp;<br style="line-height: 25px" /><br style="line-height: 25px" />文中不是直接使用limit，而是首先获取到offset的id然后直接使用limit size来获取数据。根据他的数据，明显要好于直接使用limit。这里我具体使用数据分两种情况进行测试。（测试环境win2033+p4双核 (3GHZ) +4G内存 mysql 5.0.19）&nbsp;<br style="line-height: 25px" /><br style="line-height: 25px" />1、offset比较小的时候。&nbsp;<br style="line-height: 25px" /><br style="line-height: 25px" />select * from yanxue8_visit limit 10,10&nbsp;<br style="line-height: 25px" /><br style="line-height: 25px" />多次运行，时间保持在0.0004-0.0005之间&nbsp;<br style="line-height: 25px" />Select * From yanxue8_visit Where vid ＞=(&nbsp;<br style="line-height: 25px" />Select vid From yanxue8_visit Order By vid limit 10,1&nbsp;<br style="line-height: 25px" />) limit 10&nbsp;<br style="line-height: 25px" /><br style="line-height: 25px" />多次运行，时间保持在0.0005-0.0006之间，主要是0.0006&nbsp;<br style="line-height: 25px" />结论：偏移offset较小的时候，直接使用limit较优。这个显然是子查询的原因。&nbsp;<br style="line-height: 25px" /><br style="line-height: 25px" />2、offset大的时候。&nbsp;<br style="line-height: 25px" />select * from yanxue8_visit limit 10000,10&nbsp;<br style="line-height: 25px" /><br style="line-height: 25px" />多次运行，时间保持在0.0187左右&nbsp;<br style="line-height: 25px" />Select * From yanxue8_visit Where vid ＞=(&nbsp;<br style="line-height: 25px" />Select vid From yanxue8_visit Order By vid limit 10000,1&nbsp;<br style="line-height: 25px" />) limit 10&nbsp;<br style="line-height: 25px" /><br style="line-height: 25px" />多次运行，时间保持在0.0061左右，只有前者的1/3。可以预计offset越大，后者越优<span style="line-height: 25px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; font-size: 14px"></span> <br />本文转自：<a href="http://blog.csdn.net/lvwz2008/article/details/7558285">http://blog.csdn.net/lvwz2008/article/details/7558285</a><br /></div> <img src ="http://www.cppblog.com/wanghaiguang/aggbug/179596.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wanghaiguang/" target="_blank">王海光</a> 2012-06-21 12:40 <a href="http://www.cppblog.com/wanghaiguang/archive/2012/06/21/179596.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>