??xml version="1.0" encoding="utf-8" standalone="yes"?>91亚洲性爱在线视频,亚洲卡一卡2卡三卡4卡无卡三 ,亚洲精品亚洲人成在线观看麻豆 http://blogjava.net/yxhxj2006/category/52373.htmlzh-cnWed, 13 May 2015 01:39:20 GMTWed, 13 May 2015 01:39:20 GMT60Oracle分析函数入门http://m.tkk7.com/yxhxj2006/archive/2015/05/13/425032.html奋斗成就男h奋斗成就男hTue, 12 May 2015 16:46:00 GMThttp://m.tkk7.com/yxhxj2006/archive/2015/05/13/425032.htmlhttp://m.tkk7.com/yxhxj2006/comments/425032.htmlhttp://m.tkk7.com/yxhxj2006/archive/2015/05/13/425032.html#Feedback0http://m.tkk7.com/yxhxj2006/comments/commentRss/425032.htmlhttp://m.tkk7.com/yxhxj2006/services/trackbacks/425032.html一、Oracle分析函数入门

分析函数是什么?
分析函数是Oracle专门用于解决复杂报表l计需?/span>的功能强大的函数Q?span style="line-height: 1.5; color: #ff0000;">它可以在数据中进行分l然后计基于组的某U统计?/span>Qƈ且每一l的每一行都可以q回一个统计倹{?/p>

          

分析函数和聚合函数的不同之处是什么?
普通的聚合函数用group by分组Q?span style="line-height: 1.5; color: #ff0000;">每个分组q回一个统计|而分析函数采用partition by分组Qƈ?span style="line-height: 1.5; color: #ff0000;">每组每行都可以返回一个统计倹{?/p>

              

分析函数的Ş?/strong>
分析函数带有一个开H函数over()Q包含三个分析子?分组(partition by), 排序(order by), H口(rows) Q他们的使用形式如下Qover(partition by xxx order by yyy rows between zzz)?br />注:(x)H口子句在这里我只说rows方式的窗?range方式和滑动窗口也不提

    

分析函数例子(在scott用户下模?

CZ目的Q显C各部门员工的工资,q带显C部分的最高工资?br />

复制代码
--昄各部门员工的工资Qƈ附带昄该部分的最高工资?/span>
SELECT E.DEPTNO,
E.EMPNO,
E.ENAME,
E.SAL,
LAST_VALUE(E.SAL)
OVER(PARTITION BY E.DEPTNO
ORDER BY E.SAL ROWS
--unbounded preceding and unbouned following针对当前所有记录的前一条、后一条记录,也就是表中的所有记?/span>
--unboundedQ不受控制的Q无限的
--precedingQ在...之前
--followingQ在...之后
BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) MAX_SAL
FROM EMP E;
复制代码

q行l果Q?/p>

               

CZ目的Q按照deptno分组Q然后计每l值的d

SELECT EMPNO,
ENAME,
DEPTNO,
SAL,
SUM(SAL) OVER(PARTITION BY DEPTNO ORDER BY ENAME) max_sal
FROM SCOTT.EMP;

q行l果Q?/p>

     

CZ目的Q对各部门进行分l,q带显C第一行至当前行的汇?/span>

复制代码
SELECT EMPNO,
ENAME,
DEPTNO,
SAL,
--注意ROWS BETWEEN unbounded preceding AND current row 是指W一行至当前行的汇?/span>
SUM(SAL) OVER(PARTITION BY DEPTNO
ORDER BY ENAME
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) max_sal
FROM SCOTT.EMP;
复制代码

q行l果Q?/p>

   

CZ目标Q当前行x后一行的汇?/span>

复制代码
SELECT EMPNO,
ENAME,
DEPTNO,
SAL,
--注意ROWS BETWEEN current row AND unbounded following 指当前行到最后一行的汇?/span>
SUM(SAL) OVER(PARTITION BY DEPTNO
ORDER BY ENAME
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) max_sal
FROM SCOTT.EMP;
复制代码

q行l果Q?/p>

   

 CZ目标Q当前行的上一?rownum-1)到当前行的汇?/span>

复制代码
SELECT EMPNO,
ENAME,
DEPTNO,
SAL,
--注意ROWS BETWEEN 1 preceding AND current row 是指当前行的上一?rownum-1)到当前行的汇?
SUM(SAL) OVER(PARTITION BY DEPTNO
ORDER BY ENAME ROWS
BETWEEN 1 PRECEDING AND CURRENT ROW) max_sal
FROM SCOTT.EMP;
复制代码

q行l果Q?/p>

    

CZ目标Q?nbsp;  当前行的上一?rownum-1)到当前行的下辆行(rownum+2)的汇?nbsp;    

复制代码
SELECT EMPNO,
ENAME,
DEPTNO,
SAL,
--注意ROWS BETWEEN 1 preceding AND 1 following 是指当前行的上一?rownum-1)到当前行的下辆行(rownum+2)的汇?/span>
SUM(SAL) OVER(PARTITION BY DEPTNO
ORDER BY ENAME
ROWS BETWEEN 1 PRECEDING AND 2 FOLLOWING) max_sal
FROM SCOTT.EMP;
复制代码

q行l果Q?/p>




]]>
常见分析函数详解http://m.tkk7.com/yxhxj2006/archive/2015/05/13/425033.html奋斗成就男h奋斗成就男hTue, 12 May 2015 16:46:00 GMThttp://m.tkk7.com/yxhxj2006/archive/2015/05/13/425033.htmlhttp://m.tkk7.com/yxhxj2006/comments/425033.htmlhttp://m.tkk7.com/yxhxj2006/archive/2015/05/13/425033.html#Feedback0http://m.tkk7.com/yxhxj2006/comments/commentRss/425033.htmlhttp://m.tkk7.com/yxhxj2006/services/trackbacks/425033.html阅读全文

]]>
ORACLE 常用函数http://m.tkk7.com/yxhxj2006/archive/2015/05/13/425031.html奋斗成就男h奋斗成就男hTue, 12 May 2015 16:37:00 GMThttp://m.tkk7.com/yxhxj2006/archive/2015/05/13/425031.htmlhttp://m.tkk7.com/yxhxj2006/comments/425031.htmlhttp://m.tkk7.com/yxhxj2006/archive/2015/05/13/425031.html#Feedback0http://m.tkk7.com/yxhxj2006/comments/commentRss/425031.htmlhttp://m.tkk7.com/yxhxj2006/services/trackbacks/425031.html  q个pd我将整理一些日常我们经怋用到的ORACLE函数Q鉴于篇q太长,我大体会(x)按下面分cL整理、汇总这些常用的ORACLE函数Q如果有些常用函数没有被整理q来Q也希望大家指点一二?/div>

 1Q?聚合函数

2Q?日期函数
3Q?字符串函?/div>
4Q?格式化函?/div>
5Q?cd转换函数
6Q?加密函数
7Q?控制函?/div>
8Q?数学函数
9Q?pȝ信息函数
10Q分析函?/span>

------------------------------------------聚合函数---------------------------------------------
--1:   AVG(DISTINCT|ALL)

ALL表示Ҏ(gu)有的值求q_?DISTINCT只对不同的值求q_?/span>
SELECT AVG(SAL) FROM SCOTT.EMP;
SELECT AVG(DISTINCT SAL) FROM SCOTT.EMP;
--2:   MAX(DISTINCT|ALL)

求最大?ALL表示Ҏ(gu)有的值求最大?DISTINCT表示对不同的值求最大?相同的只取一?/span>

(加不加查询结果一_(d)不知DISTINCT有什么用途,不同于AVG{聚合函?
SELECT MAX(DISTINCT SAL) FROM SCOTT.EMP;
SELECT MAX(SAL) FROM SCOTT.EMP
--3:   MIN(DISTINCT|ALL)
求最?ALL表示Ҏ(gu)有的值求最?DISTINCT表示对不同的值求最?相同的只取一?/span>
SELECT MIN(SAL) FROM SCOTT.EMP;
SELECT MIN(DISTINCT SAL) FROM SCOTT.EMP;

--4:  STDDEV(distinct|all)
求标准差,ALL表示Ҏ(gu)有的值求标准?DISTINCT表示只对不同的值求标准?/span>
SELECT STDDEV(SAL) FROM SCOTT.EMP;
SELECT STDDEV(DISTINCT SAL) FROM SCOTT.EMP;

--5:   VARIANCE(DISTINCT|ALL)
求协方差  ALL表示Ҏ(gu)有的值求协方?DISTINCT表示只对不同的值求协方?/span>
SELECT VARIANCE(SAL) FROM SCOTT.EMP;
SELECT VARIANCE(DISTINCT SAL) FROM SCOTT.EMP;

--6:  SUM(DISTINCT|ALL)
求和  ALL表示Ҏ(gu)有值求和,DISTINCT表示只对不同值求?相同值只取一?
SELECT SUM(SAL) FROM SCOTT.EMP;
SELECT SUM(DISTINCT SAL) FROM SCOTT.EMP;


--7QCOUNT(DISTINCT|ALL)
求记录、数据个数?ALLҎ(gu)有记录,数组做统计, DISTINCT只对不同值统?相同值只取一?
SELECT COUNT(SAL) FROM SCOTT.EMP;
SELECT COUNT(DISTINCT SAL) FROM SCOTT.EMP;  
 
----8Q?MEDIAN
求中位数
SELECT MEDIAN(SAL) FROM SCOTT.EMP;
SELECT MEDIAN(DISTINCT SAL) FROM SCOTT.EMP;  --错误QDISTINCT 选项在此函数中禁用?/span>
----------------------------------------------------------------------------------------------


]]>linux下导入、导出mysql数据库命?/title><link>http://m.tkk7.com/yxhxj2006/archive/2015/03/26/423853.html</link><dc:creator>奋斗成就男h</dc:creator><author>奋斗成就男h</author><pubDate>Thu, 26 Mar 2015 06:19:00 GMT</pubDate><guid>http://m.tkk7.com/yxhxj2006/archive/2015/03/26/423853.html</guid><wfw:comment>http://m.tkk7.com/yxhxj2006/comments/423853.html</wfw:comment><comments>http://m.tkk7.com/yxhxj2006/archive/2015/03/26/423853.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/yxhxj2006/comments/commentRss/423853.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/yxhxj2006/services/trackbacks/423853.html</trackback:ping><description><![CDATA[<p style="margin-top: 10px; margin-bottom: 10px; color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 24px; background-color: #d6d3d6;">一、导出数据库用mysqldump命o(h)Q注意mysql的安装\径,x命o(h)的\径)Q?br />1、导出数据和表结构:(x)<br />mysqldump -u用户?-p密码 数据库名 > 数据库名.sql<br />#/usr/local/mysql/bin/   mysqldump -uroot -p abc > abc.sql<br />敲回车后?x)提C入密?/p><p style="margin-top: 10px; margin-bottom: 10px; color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 24px; background-color: #d6d3d6;">2、只导出表结?br />mysqldump -u用户?-p密码 -d 数据库名 > 数据库名.sql<br />#/usr/local/mysql/bin/   mysqldump -uroot -p -d abc > abc.sql</p><p style="margin-top: 10px; margin-bottom: 10px; color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 24px; background-color: #d6d3d6;">注:(x)/usr/local/mysql/bin/  --->  mysql的data目录</p><p style="margin-top: 10px; margin-bottom: 10px; color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 24px; background-color: #d6d3d6;"><br />二、导入数据库<br />1、首先徏I数据库<br />mysql>create database abc;</p><p style="margin-top: 10px; margin-bottom: 10px; color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 24px; background-color: #d6d3d6;">2、导入数据库<br />Ҏ(gu)一Q?br />Q?Q选择数据?br />mysql>use abc;<br />Q?Q设|数据库~码<br />mysql>set names utf8;<br />Q?Q导入数据(注意sql文g的\径)<br />mysql>source /home/abc/abc.sql;<br />Ҏ(gu)二:(x)<br />mysql -u用户?-p密码 数据库名 < 数据库名.sql<br />#mysql -uabc_f -p abc < abc.sql</p><p style="margin-top: 10px; margin-bottom: 10px; color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 24px; background-color: #d6d3d6;"><span style="line-height: 1.8 !important; color: #ff0000;">使用W二U方法导入?/span></p><p style="margin-top: 10px; margin-bottom: 10px; color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 24px; background-color: #d6d3d6;">注意Q有命o(h)行模式,有sql命o(h)</p><img src ="http://m.tkk7.com/yxhxj2006/aggbug/423853.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/yxhxj2006/" target="_blank">奋斗成就男h</a> 2015-03-26 14:19 <a href="http://m.tkk7.com/yxhxj2006/archive/2015/03/26/423853.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL 请选择合适的?/title><link>http://m.tkk7.com/yxhxj2006/archive/2014/05/18/413799.html</link><dc:creator>奋斗成就男h</dc:creator><author>奋斗成就男h</author><pubDate>Sat, 17 May 2014 17:05:00 GMT</pubDate><guid>http://m.tkk7.com/yxhxj2006/archive/2014/05/18/413799.html</guid><wfw:comment>http://m.tkk7.com/yxhxj2006/comments/413799.html</wfw:comment><comments>http://m.tkk7.com/yxhxj2006/archive/2014/05/18/413799.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/yxhxj2006/comments/commentRss/413799.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/yxhxj2006/services/trackbacks/413799.html</trackback:ping><description><![CDATA[思维导图 <br />点击囄Q可查看大图?br /> <p><a target="_blank"><img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282555.png" /></a></p>介绍 <div> </div> <div>情况Q如果你的表l构设计不良或你的烦引设计不佻I那么请你优化你的表结构设计和l予合适的索引Q这样你的查询性能p提高几个数量U?#8212;—数据大Q烦引的价D能体现出来?/div> <div> </div> <div>我们要提高性能Q需要考虑的因素:(x)</div> <div> <div>1、设计架?/div> <div>2、设计烦?/div> <div>3、评估查询性能</div></div> <div>  <p><img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282556.png" /></p></div> <div>今天要讲的是表列的设计,暂不谈烦引设计。我?x)在下一章讲索引设计?/div> <div> </div> <div> <div> <div>选择数据cd</div> <div> </div> <div>选择正确的数据类型,对于提高性能臛_重要?/div> <div>下面l出几种<strong>原则</strong>Q有利于帮助你选择何种cd?/div> <div> </div> <div>1、更通常更好?/div> <div>  使用最的数据cd?#8212;—更少的磁盘空_(d)内存和CPU~存。而且需要的CPU的周期也更少?/div> <div> </div> <div>2、简单就好?/div> <div>  整数代h(hun)于字符?#8212;—因ؓ(f)字符集和排序规则使字W比较更复杂?/div> <div>  1>mysql内徏cdQ如timestamp,date)优于使用字符串保存?/div> <div>  2>使用整数保存ip地址?/div> <div> </div> <div>3、尽量避免NULL——如果计划对列q行索引Q尽量避免把列设|ؓ(f)NULL</div> <div>  可能把字段定义为NOT NULL?#8212;—可以攄一个默认|?#8216;'Q?Q特D字W串?/div> <div>  原因Q?/div> <div>    Q?QMYSQL难以优化NULL列。NULL列会(x)使烦引,索引l计和值更加复杂?/div> <div>    Q?QNULL列需要更多的存储I间Q还需要在MYSQL内部q行Ҏ(gu)处理?/div> <div>    Q?QNULL列加索引Q每条记录都需要一个额外的字节Q还DMyISAM中固定大的索引变成可变大小的烦引?/div> <div>  <p><img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282557.png" /></p></div> <p>军_列的数据cdQ我们应该遵循下面两步?/p> <p>W一步、大致决定数据类型?#8212;—判断是数字,字符串还是时间等。这通常很直观?/p> <p>W二步、确定特定的cd?/p> <p>  很多数据cd能够保存同类型的数据Q但是我们要发现Q他们在<strong>存储</strong>的范_(d)<strong>_ֺ和物?/strong>I间之间的差别(盘或内存空_(d)。如Qdatetime和timestamp能保存同L(fng)型的数据Q日期和旉?#8212;—timestamp使用datetime一半的I间;能保存时?拥有Ҏ(gu)的自动更新能力?nbsp;</p> <p><img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282558.png" /></p> <div>品味数据cd</div> <div> </div></div></div> <div>整数</div> <div> </div> <div>1、存储类?#8212;—数据范围?2^(n-1)?^(n-1)-1Q这里的n是所需存储I间的位数?/div> <div>     cd名称    占用位数      数据范围    TINYINT     8   -2^7 ~ 2^7-1   SMALLINT     16     -2^15~2^15-1     MEDIUMINT       24      -2^23~2^23-1   INT     32   -2^31~2^23-1   BIGINT     64    -2^63~2^63-1 <p> 2、unsigned属性表CZ允许负数Qƈ大致把正上限提高了一倍。如TINYINT UNSIGNED保存的范围ؓ(f)0?55而不?127?28</p> <p> </p> <p>3、MYSQLҎ(gu)数类型定义宽度,比如intQ?Q和intQ?2Q对于存储和计算是一L(fng)。只规定了MYSQL的交互工P如命令行客户端)用来昄字符的个数?/p> <p> </p> <p><img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282559.png" /></p> <div>实数</div> <div> </div> <div>实数有分数部分(数部分Q?/div> <div>存储cdQFLOAT和DOUBLEQDECIMAL?/div> <div>占用大小QFLOAT 4个字节,DOUBLE 8个字节。DECIMAL受到MYSQL版本影响Q早期版?54个数字,5.0以上65个数字?/div> <div>区别Q?、FLOAT和DOUBLE支持标准点q算q行q似计算?/div> <div>   2、DECIMALq行DECIMALq算QCPUq不支持对它q行直接计算。Q点运会(x)快一点,因ؓ(f)计算直接在CPU上进行?/div> <div>     3、DECIMAL只是一个存储格式,在计时?x)被转换为DOUBLEcd?/div> <div>   4、DECIMAL(18,9)使用9个字节,数点前4个字节,数?个字节,数点后4个字节?/div> <div>   5、DECIMAL只有对小数进行精计的时候才使用它,如保存金融数据?/div> <div>  <p><img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282560.png" /></p></div> <div>  <div>字符串类?/div> <div> </div> <div>1、varchar</div> <div>  Q?Q保存可变长字符丌Ӏ?/div> <div>    理解Q比固定长度占用更少的存储空_(d)因ؓ(f)它只占用自己需要的I间。例外情况:(x)使用ROW_FORMAT=FIXED创徏的MyISAM表,它ؓ(f)每行使用固定长度的空_(d)可能?x)造成费?/div> <div>  Q?Q存储长度信息。如果定义的列小于或{于255Q则使用1个字节存储长度|假设使用latin1字符集,如varcharQ?0Q将占用11个字节的存储I间。反q来QvarcharQ?000Q,则占?002个字节的存储I间?/div> <div>  Q?Q节U空_(d)Ҏ(gu)能有帮助?/div> <div>  Q?Q?.0版本以上Q无论是取D是保存,MySQL都会(x)保留字符串末I格?/div> <div> <blockquote><strong>只分配真正需要的I间</strong><br />使用varchar(5)和varchar(200)保存'hello'占用I间是一L(fng)?#8212;—q里应该指的是磁盘上的空间?br />那么使用较短列有何优势?——巨大的优?br />  较大的列?x)用更多的内存Q因为MySQL通常?x)分配固定大的内存块(如varchar(200)?x)?00个字W大的内存I间Q来保存?然后对D行trim操作Q最后放入磁?或取倹{?#8212;—q对排序或用基于内存的临时表尤其不好?/blockquote></div> <div> <p><img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282561.png" /></p></div> <div>2、char</div> <div>  Q?Q固定长度?/div> <div>  Q?Q保存值时Q去掉末I格?/div> <div> <p><img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282562.png" /></p> <p>           <img style="vertical-align: middle" alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282563.png" />  ׃再看看varchar</p> <p><img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282564.png" /></p></div> <div>  Q?Qchar常用于很短字W串或长度近似相同的字符串的时候很有用。如存储用户密码的MD5哈希|它的长度L一L(fng)?/div> <div>  char优于varchar的地方?</div> <div>  1>> 对于l常改变的|char优于varcharQ因为固定长度行不容易生碎片?#8212;—当最镉K度远大于q_长度Qƈ且很发生更新的时候,通常适合使用varchar?/div> <div>  2>>对于很短的列Qchar的效率也是高于varchar的。如对于单字节字W集Q如latin1)Qchar(1)只会(x)占用1个字节,而varchar(2)?x)占?个字节(有一个字节用来存储长度的信息Q?/div> <div> </div> <div> <p><img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282565.png" /></p></div> <div> </div> <div> 3、text</div> <div>用于保存大量数据?/div> <div>  Q?QInnoDB在它们较大的时候会(x)使用“外部”存储区域来进行保存?#8212;—所以需要够的外部存储I间来保存实际的倹{?/div> <div>  Q?Q排序方式不同于其他字符cdQ不?x)按照完整长度进行排序,而只是按照max_sort_length规定的前若干个字节进行排序?/div> <div>  <p><img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282566.png" /></p> <p><img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282567.png" /></p></div> <div> </div> <div>4、用ENUM代替字符串类?/div> <div>  Q?QENUM列可以存?5 535个不同的字符丌Ӏ?/div> <div>  Q?Q以紧凑方式保存。根据列表中值的数量Q把它们压羃??个字节中?/div> <div>  Q?QMySQL在内部把每个值都保存为整敎ͼ以表C值在列表中的位置?/div> <div>  Q?Q保留了一?#8220;查找?#8221;Q来表示整数和字W串在表?frm文g中的映射关系?/div> <div>  Q?QENUM字符列是固定的,d、删除字W串M用ALTER TABLE?/div> <div>  Q?Q用案例:(x)权限表中使用ENUM来保存Y值和N倹{?/div> <div> 使用Ҏ(gu)Q?/div> <div> <p><img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282568.png" /></p> <p>           <img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282563.png" />  </p> <p><img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282569.png" /></p> <p>在对enum列用order by的时候,是按数字排序的,而不是字W串排序?/p> <p><img alt="" src="http://files.jb51.net/file_images/article/201205/2012052800282570.png" /></p> <p><strong>日期和时间类?/strong></p> <div>DATETIMEQ保存大范围的倹{封装格式:(x)YYYYMMDDHHMMSS?#8212;—与时区无养I使用8字节存储I间?/div> <p>TIMESTAMPQ保存自1970q??日午夜(格林治标准旉Q以来的U数?#8212;—使用4字节存储I间?/p> <div> <blockquote> <p>通常使用TIMESTAMPQ它比DATETIME更节U空间。有时h们把Unix的时间戳保存为整数|但是q通常没有M好处?#8212;—q种格式处理h不太方便Q我们ƈ不推荐它?/p></blockquote></div></div></div></div> <div> <div> </div> </div> <div> l验交谈</div> <div> </div> <div>  1、我们在为列选择数据cd的时候,不仅要考虑存储cd大小Q还要考虑MySQL如何对它们进行计和比较。例如:(x)MySQL在内部把ENUM和SETcd保存为整敎ͼ但是在比较的时候把它们转换为字W串?/div> <div> </div> <div>  2、我们要在相兌中用同L(fng)cdQ类型之间要_匚wQ包括诸如UNSIGNEDq样的属性?/div> <div> </div> <div>  3、؜合不同的数据cd?x)导致性能问题Q即使没有性能问题Q隐式的cd转换也能D难以察觉的错误?/div> <div> </div> <div>  4、选择最的数据cd要考虑来留出的增长空间。如Q中国的省䆾Q我们知道不?x)有成千上万个,因此不必用INT。TINYINTp够了Q它比INT?字节?/div> <div> </div> <div>  5、整数通常是最佳的数据cdQ因为它速度快,q且能用AUTO_INCREMENT?/div> <div> </div> <div>  6、要可能避免字W串做ؓ(f)列的数据cdQ因为它们占用了很多I间q且通常必整数类型要慢。MyISAM默认情况下ؓ(f)字符串用了压羃索引Q这使查找更为缓慢?/div><img src ="http://m.tkk7.com/yxhxj2006/aggbug/413799.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/yxhxj2006/" target="_blank">奋斗成就男h</a> 2014-05-18 01:05 <a href="http://m.tkk7.com/yxhxj2006/archive/2014/05/18/413799.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入理解where 1=1的用?/title><link>http://m.tkk7.com/yxhxj2006/archive/2014/05/18/413798.html</link><dc:creator>奋斗成就男h</dc:creator><author>奋斗成就男h</author><pubDate>Sat, 17 May 2014 17:04:00 GMT</pubDate><guid>http://m.tkk7.com/yxhxj2006/archive/2014/05/18/413798.html</guid><wfw:comment>http://m.tkk7.com/yxhxj2006/comments/413798.html</wfw:comment><comments>http://m.tkk7.com/yxhxj2006/archive/2014/05/18/413798.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/yxhxj2006/comments/commentRss/413798.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/yxhxj2006/services/trackbacks/413798.html</trackback:ping><description><![CDATA[<p>where 1=1有什么用Q在SQL语言中,写这么一句话p没写一栗?/p> <p>select * from table1 where 1=1与select * from table1完全没有区别Q甚臌有其他许多写法,1<>2Q?a'='a','a'<>'b'Q其目的只有一个,where 的条件ؓ(f)永真Q得到的l果是未加U束条g的?/p> <p>在SQL注入时会(x)用到q个Q例如select * from table1 where name='lala'l强行加上select * from table1 where name='lala' or 1=1q就又变成了无约束的查询了?/p> <p>最q发现的妙用在于Q在不定数量查询条g情况下,1=1可以很方便的规范语句。例如一个查询可能有name,age,height,weightU束Q也可能没有Q那该如何处理呢Q?/p> <p>String sql=select * from table1 where 1=1</p> <p>Z么要写多余的1=1Q马上就知道了?br /></p><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">if</span>(!name.equals("")){<br />sql=sql+"name='"+name+"'";<br />}<br /><span style="color: #0000FF; ">if</span>(!age.equals("")){<br />sql=sql+"age'"+age+"'";<br />}<br /><span style="color: #0000FF; ">if</span>(!height.equals("")){<br />sql=sql+"height='"+height+"'";<br />}<br /><span style="color: #0000FF; ">if</span>(!weight.equals("")){<br />sql=sql+"weight='"+weight+"'";<br />}</div><p>如果不写1=1呢,那么在每一个不为空的查询条仉前,都必d断有没有where字句Q否则要在第一个出现的地方加where</p><p> </p><p>where 1=1的写法是Z化程序中Ҏ(gu)件的?br />打个比方有三个参数a, b, c<br />@sql=select * from tb'<br />q三个参数都可能为空<br />q时你要构造语句的?一个个再写语句就ȝ<br />比如<br />if @a is not null<br />@sql=@sql + " where a=' + @a<br />if @b is not null<br />q里你怎么?要不要加where 或直接用 and ?,你这里还要对@a是否为空q行?/p><p>用上 where 1=1 之后,׃存在q样的问? 条g?and q接and ,是orq接接 or</p><p><strong>拯?<br /></strong>create   table_name   as   select   *   from   Source_table   where   1=1; </p><p> </p><p><strong>复制表结?<br /></strong>create   table_name   as   select   *   from   Source_table   where   1 <> 1; </p><img src ="http://m.tkk7.com/yxhxj2006/aggbug/413798.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/yxhxj2006/" target="_blank">奋斗成就男h</a> 2014-05-18 01:04 <a href="http://m.tkk7.com/yxhxj2006/archive/2014/05/18/413798.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>按某一字段分组取最??值所在行的数?http://m.tkk7.com/yxhxj2006/archive/2012/11/02/390711.html奋斗成就男h奋斗成就男hFri, 02 Nov 2012 11:21:00 GMThttp://m.tkk7.com/yxhxj2006/archive/2012/11/02/390711.htmlhttp://m.tkk7.com/yxhxj2006/comments/390711.htmlhttp://m.tkk7.com/yxhxj2006/archive/2012/11/02/390711.html#Feedback0http://m.tkk7.com/yxhxj2006/comments/commentRss/390711.htmlhttp://m.tkk7.com/yxhxj2006/services/trackbacks/390711.html阅读全文

]]>
通过存储q程对SQLSERVER2005分页http://m.tkk7.com/yxhxj2006/archive/2012/08/29/386542.html奋斗成就男h奋斗成就男hWed, 29 Aug 2012 13:31:00 GMThttp://m.tkk7.com/yxhxj2006/archive/2012/08/29/386542.htmlhttp://m.tkk7.com/yxhxj2006/comments/386542.htmlhttp://m.tkk7.com/yxhxj2006/archive/2012/08/29/386542.html#Feedback0http://m.tkk7.com/yxhxj2006/comments/commentRss/386542.htmlhttp://m.tkk7.com/yxhxj2006/services/trackbacks/386542.html1 通过select topq行分页查询   
/*查询原理Q需要查询第N|Q首先取到前N늚所有数据,然后排除前N-1늚数据Q就是第N늚数据*/  
create  PROCEDURE GetDataWithPage  
(   
       @pageIndex  int = 1,           -- 늠  
      @pageSize   int = 20,          -- 尺?nbsp;   
)  
as  
    begin  
     if @pageIndex < 1  
begin  
Set @pageIndex=1  
end                   
  
  
--如果是第一|要执行的语句  
  if @PageIndex = 1  
      begin  
              select top ((@PageIndex)*@PageSize)   
               field1,field2,--查询字段  
               fieldOrderby --排序字段Q按什么字D分늚字段Q徏议用主键,或者唯一?nbsp; 
               from tableName --查询表名U?nbsp; 
              where id>100 --查询条g  
              order by fieldOrderby --排序字段Q按什么字D分늚字段Q?nbsp; 
             select count(*) as Total from tableName where id>100--q回总记录数  
    end  
  else    
         begin  
                 select top ((@PageIndex)*@PageSize) --取出前PageIndex늚数据  
                            field1,field2,--查询字段  
                            fieldOrderby --排序字段Q按什么字D分늚字段Q徏议用主键,或者唯一?nbsp; 
                            into #tempTable --插入临时?nbsp; 
                            from tableName --查询表名U?nbsp; 
                            where id>100 --查询条g  
                           order by fieldOrderby --排序字段Q按什么字D分늚字段Q?nbsp; 
                  -----取出前pageIndex|据插入(f)时表  
  
                 ------排除前pageIndex-1늚数据Q取出第pageIndex的数?nbsp; 
                  select top (@PageIndex) --  
                             field1,field2,--排序字段  
                            fieldOrderby --  
                           from #tempTable --从(f)时表中取数据  
                          where fieldOrderby --  
                          not in (select  top ((@PageIndex-1)*@PageSize) fieldOrderby from #tempTable)  
                        ---- 从(f)时表取出 pageIndex的数?nbsp;  
                            ----可以Ҏ(gu)升序或者降序把not in 改ؓ(f) <min(fieldOrderby)或?gt;max(fieldOrderby)  
                 select count(*) as Total from tableName where id>100--q回总记录数  
       end  
end  


2通过pȝ存储q程q行分页查询

[sql] view plaincopy
 /*  
 一p回三个表W一个表为空 查询字符串的条g中有 like ,in 可能出现问题Q具体出现原因不明,W二个表包含总页敎ͼ总行敎ͼ  
当前늬三个表包含查询记?nbsp; 
  
*/  
create   procedure [dbo].[GetOnePageData]  
   @sqlstr nvarchar(4000), --查询字符?nbsp; Q就是一般的查询语句Q不需要top关键?nbsp; 
   @currentpage int, --WN?nbsp; 
   @pagesize int --每页行数  
as  
   set nocount on  
   declare @P1 int, --P1是游标的id  
   @rowcount int--  
    exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output  
   --定义与游标和游标选项相关联的 SQL 语句Q然后填充游标?nbsp; 
   --选择总页敎ͼ总行敎ͼ当前?nbsp; 
    select ceiling(1.0*@rowcount/@pagesize) as TotalPages,@rowcount as TotalRows,@currentpage as CurPage  
    set @currentpage=(@currentpage-1)*@pagesize+1  
   --查询记录  
    exec sp_cursorfetch @P1,16,@currentpage,@pagesize --从游标中提取一行或一个行块?nbsp; 
   --q回?nbsp; 
    exec sp_cursorclose @P1--关闭q放游?nbsp; 
     set nocount off  
go  


3 通过新函数ROW_NUMBER()q行分页查询

[sql] view plaincopy
/*  
适用于sql2005Q据调查此方法限制最,性能最?nbsp; 
q回两个表,W一个表包含总行敎ͼW二个表是查询到的记?nbsp; 
--分页查询的原理:(x)  
--1.先将预分内Ҏ(gu)照排序条件加上自增列导入C(f)时表中(或表变量Q?nbsp; 
--2.针对临时表操作,扑ֈ相应的N对应的自增列编码范?nbsp; 
--3.Ҏ(gu)WN对应的自增列编码范_(d)查找WN内?nbsp; 
   
--需要注意的是:(x)  
--W一是添加自增列Q确定行?nbsp; 
--W二~减中间处理q程的操作数据量  
  
*/  
  
create  proc [dbo].[GetOnePageData]--//  
(  
    @page int,  
    @pagesize int  
)  
as  
begin      
        select top  (@pagesize*@page)  ROW_NUMBER() --可以减少处理的数据,加快速度  
         OVER(ORDER BY NodeID) as rowNum,--按什么字D分늚字段Q不需要唯一?nbsp; 
        NodeID,NodeName,ControlIP --查询字段  
        into #temp --插入临时?nbsp; 
        from TableName   --  查询表名U?nbsp;  
        where NodeID>100 --查询条g  
         
       select count(*) from #temp--总记录条?nbsp; 
       select * from #temp where rowNum>@pagesize*(@page-1) and rowNum<=@pagesize*@page--  
end   

  lDQ如果需要通用的存储过E,可以把第一或者第三种分页Ҏ(gu)q行改写Q在数据库拼字符Ԍ但性能?x)差好多。这或许是通用和性能之间的矛监֐?/div>
















]]>SQL分页语句 http://m.tkk7.com/yxhxj2006/archive/2012/08/29/386539.html奋斗成就男h奋斗成就男hWed, 29 Aug 2012 10:36:00 GMThttp://m.tkk7.com/yxhxj2006/archive/2012/08/29/386539.htmlhttp://m.tkk7.com/yxhxj2006/comments/386539.htmlhttp://m.tkk7.com/yxhxj2006/archive/2012/08/29/386539.html#Feedback0http://m.tkk7.com/yxhxj2006/comments/commentRss/386539.htmlhttp://m.tkk7.com/yxhxj2006/services/trackbacks/386539.html有关分页 SQL 的资料很多,有的使用存储q程Q有的用游标。本Z喜欢使用游标Q我觉得它耗资、效率低Q用存储过E是个不错的选择Q因为存储过E是l过预编译的Q执行效率高Q也更灵zR先看看单条 SQL 语句的分?SQL 吧?br />
Ҏ(gu)1Q?br />适用?SQL Server 2000/2005
SELECT TOP 大?nbsp;*
FROM table1
WHERE id NOT IN
          (
          
SELECT TOP 大?/span>*(?/span>数排?/span>-1) id FROM table1 ORDER BY id
          )
ORDER BY id
原理Q?/span>其中id最好是主键或者烦引,q样查询速度比较快)。由늠敎ͼ通过sELECT TOP 大?/span>*(|排序-1) id FROM tablename ORDER BY id 获取最前面的那几行QtopQ,然后通过id not in 表示要查询的那一|最后的那一部分Q而通过top +大表C去最后那一部分记录的最前面的那几天记录Q每记录数Q?/span>
Z么直接取最后那一部分的,因ؓ(f)sql只有d面几条记录topQ而没有去最后几条记录的关键字?/span>
Ҏ(gu)2Q?br />适用?SQL Server 2000/2005
--序写法Q?br /> SELECT TOP 大?nbsp;*
 FROM table1
 WHERE id >=
 (
 SELECT ISNULL(MAX(id),0) 
 FROM 
 (
 SELECT TOP 大?(|-1)+1 id FROM table1 ORDER BY id
 ) A
 )
 ORDER BY id
 
 --降序写法Q?br /> SELECT TOP 大?nbsp;*
 FROM table1
 WHERE id <=
 (
 SELECT ISNULL(MIN(id),0) 
 FROM 
 (
 SELECT TOP 大?(|-1)+1 id FROM table1 ORDER BY id Desc
 ) A
 )
 ORDER BY id Desc

Ҏ(gu)3Q?br />适用?SQL Server 2005
SELECT TOP 大?nbsp;* 
FROM 
        (
        
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
        ) A
WHERE RowNumber > 大?/span>*(|-1)


说明Q页大小Q每늚行数Q页敎ͼ(x)W几c(din)用时Q请?#8220;大?#8221;?#8220;大?(|-1)”替换成数字?/p>

 

 

 

其它的方案:(x)如果没有主键Q可以用临时表,也可以用Ҏ(gu)三做Q但是效率会(x)低?br />优化的时候,加上主键和烦引,查询效率?x)提高?/p>

通过SQL 查询分析器,昄比较Q我的结论是:
分页Ҏ(gu)二:(x)(利用ID大于多少和SELECT TOP分页Q效率最高,需要拼接SQL语句
分页Ҏ(gu)一Q?利用Not In和SELECT TOP分页)   效率ơ之Q需要拼接SQL语句
分页Ҏ(gu)三:(x)(利用SQL的游标存储过E分?    效率最差,但是最为通用



]]>
SQLSERVERl旉函数http://m.tkk7.com/yxhxj2006/archive/2012/08/27/386359.html奋斗成就男h奋斗成就男hMon, 27 Aug 2012 06:59:00 GMThttp://m.tkk7.com/yxhxj2006/archive/2012/08/27/386359.htmlhttp://m.tkk7.com/yxhxj2006/comments/386359.htmlhttp://m.tkk7.com/yxhxj2006/archive/2012/08/27/386359.html#Feedback0http://m.tkk7.com/yxhxj2006/comments/commentRss/386359.htmlhttp://m.tkk7.com/yxhxj2006/services/trackbacks/386359.htmlSql旉函数
一、sql server日期旉函数
Sql Server中的日期与时间函?nbsp;
1.  当前pȝ日期、时?nbsp;
    select getdate()  

2dateadd  在向指定日期加上一D|间的基础上,q回新的 datetime ?br />   例如Q向日期加上2?nbsp;
   select dateadd(day,2,'2004-10-15')  --q回Q?004-10-17 00:00:00.000 

3datediff q回跨两个指定日期的日期和时间边界数?br />   select datediff(day,'2004-09-01','2004-09-18')   --q回Q?7

4datepart q回代表指定日期的指定日期部分的整数?br />  select DATEPART(month'2004-10-15')  --q回 10

5datename q回代表指定日期的指定日期部分的字符?br />   select datename(weekday, '2004-10-15')  --q回Q星期五

6day(), month(),year() --可以与datepart对照一?/span>

select 当前日期=convert(varchar(10),getdate(),120
,当前旉=convert(varchar(8),getdate(),114

select datename(dw,'2004-10-15'

select 本年W多周=datename(week,'2004-10-15')
      ,今天是周?span style="color: #808080; ">=
datename(weekday,'2004-10-15')

二、日期格式{?br />    select CONVERT(varchargetdate(), 120 )
 2004-09-12 11:06:08 
 select replace(replace(replace(CONVERT(varchargetdate(), 120 ),'-',''),' ',''),':','')
 20040912110608
 
 select CONVERT(varchar(12) , getdate(), 111 )
 2004/09/12
 
 select CONVERT(varchar(12) , getdate(), 112 )
 20040912

 select CONVERT(varchar(12) , getdate(), 102 )
 2004.09.12
 
 其它我不常用的日期格式{换方?

 select CONVERT(varchar(12) , getdate(), 101 )
 09/12/2004

 select CONVERT(varchar(12) , getdate(), 103 )
 12/09/2004

 select CONVERT(varchar(12) , getdate(), 104 )
 12.09.2004

 select CONVERT(varchar(12) , getdate(), 105 )
 12-09-2004

 select CONVERT(varchar(12) , getdate(), 106 )
 12 09 2004

 select CONVERT(varchar(12) , getdate(), 107 )
 09 122004

 select CONVERT(varchar(12) , getdate(), 108 )
 11:06:08
 
 select CONVERT(varchar(12) , getdate(), 109 )
 09 12 2004 1

 select CONVERT(varchar(12) , getdate(), 110 )
 09-12-2004

 select CONVERT(varchar(12) , getdate(), 113 )
 12 09 2004 1

 select CONVERT(varchar(12) , getdate(), 114 )
 11:06:08.177
举例Q?br />1.GetDate() 用于sql server :select GetDate()

2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')q回gؓ(f) 514592 U?br />DateDiff('d','2005-07-20','2005-7-25 22:56:32')q回gؓ(f) 5 ?br />
3.DatePart('w','2005-7-25 22:56:32')q回gؓ(f) 2 x期一(周日?Q周六ؓ(f)7)
DatePart('d','2005-7-25 22:56:32')q回gؓ(f) 25?5?br />DatePart('y','2005-7-25 22:56:32')q回gؓ(f) 206卌一q中W?06?br />DatePart('yyyy','2005-7-25 22:56:32')q回gؓ(f) 2005?005q?br />附图
函数参数/功能
GetDate( )q回pȝ目前的日期与旉
DateDiff (interval,date1,date2)以interval 指定的方式,q回date2 与date1两个日期之间的差?date2-date1
DateAdd (interval,number,date)以interval指定的方式,加上number之后的日?/td>
DatePart (interval,date)q回日期date中,interval指定部分所对应的整数?/td>
DateName (interval,date)q回日期date中,interval指定部分所对应的字W串名称

参数 interval的设定值如下:(x)

?/strong>~?写(Sql ServerQ?/strong>Access ?ASP说明
YearYyyyyyq?1753 ~ 9999
QuarterQq?1 ~ 4
MonthMm? ~ 12
Day of yearDyy一q的日数,一q中的第几日 1-366
DayDd日,1-31
WeekdayDww一周的日数Q一周中的第几日 1-7
WeekWkww周,一q中的第几周 0 ~ 51
HourHh? ~ 23
MinuteMi分钟0 ~ 59
SecondSssU?0 ~ 59
MillisecondMs-毫秒 0 ~ 999



]]>
全面Ҏ(gu)T-SQL与PL/SQLhttp://m.tkk7.com/yxhxj2006/archive/2012/08/16/385565.html奋斗成就男h奋斗成就男hThu, 16 Aug 2012 00:46:00 GMThttp://m.tkk7.com/yxhxj2006/archive/2012/08/16/385565.htmlhttp://m.tkk7.com/yxhxj2006/comments/385565.htmlhttp://m.tkk7.com/yxhxj2006/archive/2012/08/16/385565.html#Feedback0http://m.tkk7.com/yxhxj2006/comments/commentRss/385565.htmlhttp://m.tkk7.com/yxhxj2006/services/trackbacks/385565.html阅读全文

]]>
在SqlServer?l计用户表中数据的行?.http://m.tkk7.com/yxhxj2006/archive/2012/08/10/385238.html奋斗成就男h奋斗成就男hFri, 10 Aug 2012 08:16:00 GMThttp://m.tkk7.com/yxhxj2006/archive/2012/08/10/385238.htmlhttp://m.tkk7.com/yxhxj2006/comments/385238.htmlhttp://m.tkk7.com/yxhxj2006/archive/2012/08/10/385238.html#Feedback0http://m.tkk7.com/yxhxj2006/comments/commentRss/385238.htmlhttp://m.tkk7.com/yxhxj2006/services/trackbacks/385238.htmldeclare @sql nvarchar(4000)
declare @count int
set @count=0
set @tableName=''
set @sql = ''

declare cur cursor for
select name from sysobjects
where xtype='U'    --用户?/p>

open cur

fetch next from cur into @tableName

while @@fetch_status=0
begin
    set @sql = N'select @count=count(1) from '+@tableName
    exec sp_executesql @sql,N'@count int output',@count output
--    if(@count>0)
--    begin
        print '表名Uͼ(x)'+@tableName+' 行数Q?+cast(@count as varchar)
--    end
    fetch next from cur into @tableName
end

close cur
deallocate cur



]]>
վ֩ģ壺 ww߹Ƶѹۿw| avۺ| һaƵ| ձһձ| ˾Ʒձֱ| ëƬȫһ| kkk4444߹ۿ| õ998Ƶѹۿ| ŷŷɫ| һƵ | ޳aavҰĦ| 鶹AVþþƷ| 131ŮƵ| վ߹ۿ| Ļר| ߹Ӱվ| ƷպAV| Դ̼ƬƵ| һ| 19ѹۿ| ߹ۿ| AV˿߹ۿ| յӰ߲Ѱ| ˵߲| ˳߹ۿ69ʽСƵ| ձɫվwwwþ| aëƬa԰Ħ| վۿWWW߹ۿ| ղ2021| AҹƬƷվ | պƷվ| ޾ƷĻþò| ѸƵ| Ƶһ| ޾ƷƵ| ƷƵվ| òƵѿ| ޱ龫Ʒһ| ۺAVһҳ| ձ| ѴƬavֻƬ|