﻿<?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>BlogJava-佛脚-随笔分类-数据库</title><link>http://www.blogjava.net/gen-sky/category/36459.html</link><description>终日昏昏醉梦间，忽闻春尽强登山，  因过竹院逢僧话，偷得浮生半日闲。</description><language>zh-cn</language><lastBuildDate>Wed, 29 Jul 2009 22:50:30 GMT</lastBuildDate><pubDate>Wed, 29 Jul 2009 22:50:30 GMT</pubDate><ttl>60</ttl><item><title>如何才可能写出高效的sql语句呢 ？</title><link>http://www.blogjava.net/gen-sky/archive/2009/07/29/288868.html</link><dc:creator>星期五</dc:creator><author>星期五</author><pubDate>Wed, 29 Jul 2009 04:12:00 GMT</pubDate><guid>http://www.blogjava.net/gen-sky/archive/2009/07/29/288868.html</guid><wfw:comment>http://www.blogjava.net/gen-sky/comments/288868.html</wfw:comment><comments>http://www.blogjava.net/gen-sky/archive/2009/07/29/288868.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gen-sky/comments/commentRss/288868.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gen-sky/services/trackbacks/288868.html</trackback:ping><description><![CDATA[<pre>避免使用IN 操作符 <br />
用IN写出来的SQL的优点是比较容易写及清晰易懂，这比较适合现代软件开发的风格。 <br />
但是用IN的SQL性能总是比较低的，从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别： <br />
ORACLE试图将其转换成多个表的连接，如果转换不成功则先执行IN里面的子查询，再查询外层的表记录，如果转换成功则直接采用多个表的连接方式查询。由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成功，但对于含有分组统计等方面的SQL就不能转换了。 <br />
推荐方案：在业务密集的SQL当中尽量不采用IN操作符。 <br />
NOT IN操作符 <br />
此操作是强列推荐不使用的，因为它不能应用表的索引。<br />
推荐方案：用NOT EXISTS 或（外连接+判断为空）方案代替 <br />
&lt;&gt; 操作符（不等于） <br />
不等于操作符是永远不会用到索引的，因此对它的处理只会产生全表扫描。 <br />
推荐方案：用其它相同功能的操作运算代替，如 <br />
a&lt;&gt;0 改为 a&gt;0 or a&lt;0 <br />
a&lt;&gt;'' 改为 a&gt;'' <br />
IS NULL 或IS NOT NULL操作（判断字段是否为空） <br />
判断字段是否为空一般是不会应用索引的，因为B树索引是不索引空值的。 <br />
推荐方案： <br />
用其它相同功能的操作运算代替，如 <br />
a is not null 改为 a&gt;0 或a&gt;''等。 <br />
不允许字段为空，而用一个缺省值代替空值，如业扩申请中状态字段不允许为空，缺省为申请。 <br />
建立位图索引（有分区的表不能建，位图索引比较难控制，如字段值太多索引会使性能下降，多人更新操作会增加数据块锁的现象） <br />
&gt; 及 &lt; 操作符（大于或小于操作符） <br />
大于或小于操作符一般情况下是不用调整的，因为它有索引就会采用索引查找，但有的情况下可以对它进行优化，如一个表有100万记录，一个数值型字段A，30万记录的A=0，30万记录的A=1，39万记录的A=2，1万记录的A=3。那么执行A&gt;2与A&gt;=3的Ч陀泻艽蟮那鹆耍蛭狝&gt;2时ORACLE会先找出为2的记录索引再进行比较，而A&gt;=3时ORACLE则直接找到=3的记录索引。 <br />
like操作符 <br />
like操作符可以应用通配符查询，里面的通配符组合可能达到几乎是任意的查询，但是如果用得不好则会产生性能上的问题，如like '%5400%' 这种查询不会引用索引，而like 'X5400%'则会引用范围索引。一个实际例子：用YW_YHJBQK表中营业编号后面的户标识号可来查询营业编号 YY_BH like '%5400%' 这个条件会产生全表扫描，如果改成YY_BH like 'X5400%' OR YY_BH like 'B5400%' 则会利用YY_BH的索引进行两个范围的查询，性能肯定大大提高。 <br />
union操作符 <br />
union在进行表链接后会筛选掉重复的记录，所以在表链接后会对所产生的结果集进行排序运算，删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录，最常见的是过程表与历史表union。如： <br />
select * from gc_dfys <br />
union <br />
select * from ls_jg_dfys <br />
这个SQL在运行时先取出两个表的结果，再用排序空间进行排序删除重复的记录，最后返回结果集，如果表数据量大的话可能会导致用磁盘进行排序。 <br />
推荐方案：采用union ALL操作符替代union，因为union ALL操作只是简单的将两个结果合并后就返回。 <br />
select * from gc_dfys <br />
union all <br />
select * from ls_jg_dfys <br />
<br />
转自：  http://zhidao.baidu.com/question/6070526.html<br />
<br />
</pre>
<img src ="http://www.blogjava.net/gen-sky/aggbug/288868.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gen-sky/" target="_blank">星期五</a> 2009-07-29 12:12 <a href="http://www.blogjava.net/gen-sky/archive/2009/07/29/288868.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高效SQL语句            ------------------  查询字段为 null</title><link>http://www.blogjava.net/gen-sky/archive/2009/07/28/288766.html</link><dc:creator>星期五</dc:creator><author>星期五</author><pubDate>Tue, 28 Jul 2009 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/gen-sky/archive/2009/07/28/288766.html</guid><wfw:comment>http://www.blogjava.net/gen-sky/comments/288766.html</wfw:comment><comments>http://www.blogjava.net/gen-sky/archive/2009/07/28/288766.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gen-sky/comments/commentRss/288766.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gen-sky/services/trackbacks/288766.html</trackback:ping><description><![CDATA[<span id="xydwtext"><span id="zoom">
<p style="text-indent: 2em;">假设字段 class 条件如果传入空的话，就查询所有，如果不为空的话，就根据特定条件查找，一般的写好将对其进行判断，然后写两条SQL语句，例如：(假设传入的班级变量为classStr)
</p>
<p style="text-indent: 2em;">if("".equals(classStr))//注意此处这种写好优于classStr.equals(""),这样写的话，假如classStr传入的为Null，则会报错。
</p>
<center><ccid_nobr>
<table bordercolordark="#ffffff" bordercolorlight="black" align="center" border="1" cellpadding="2" cellspacing="0" width="400">
    <tbody>
        <tr>
            <td style="font-size: 9pt;" bgcolor="#e6e6e6">
            <pre><ccid_code>sql="select * from student"; <br />
            <br />
            else <br />
            <br />
            sql = "select * from student where class='"+classStr+"'";</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr></center>
<p style="text-indent: 2em;">若采用逆向思维的话，则写一条语句就可以解决上面的问题。
</p>
<center><ccid_nobr>
<table bordercolordark="#ffffff" bordercolorlight="black" align="center" border="1" cellpadding="2" cellspacing="0" width="400">
    <tbody>
        <tr>
            <td style="font-size: 9pt;" bgcolor="#e6e6e6">
            <pre><ccid_code>sql = "select * from student where  </ccid_code>''<ccid_code> = " + classStr + "' or '"+classStr+"'=class"</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr></center>
<p style="text-indent: 2em;">由上面语句可看出，如果classStr为空的话，则查询所有，若classStr不为空的话，则根据其值进行查询。 </p>
</span></span>
<img src ="http://www.blogjava.net/gen-sky/aggbug/288766.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gen-sky/" target="_blank">星期五</a> 2009-07-28 16:36 <a href="http://www.blogjava.net/gen-sky/archive/2009/07/28/288766.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>当MYSQL 中的字段是 Timestamp  类型时,用查询条件是: 0000-00-00  时,会报以下错误</title><link>http://www.blogjava.net/gen-sky/archive/2009/05/22/277400.html</link><dc:creator>星期五</dc:creator><author>星期五</author><pubDate>Fri, 22 May 2009 10:49:00 GMT</pubDate><guid>http://www.blogjava.net/gen-sky/archive/2009/05/22/277400.html</guid><wfw:comment>http://www.blogjava.net/gen-sky/comments/277400.html</wfw:comment><comments>http://www.blogjava.net/gen-sky/archive/2009/05/22/277400.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gen-sky/comments/commentRss/277400.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gen-sky/services/trackbacks/277400.html</trackback:ping><description><![CDATA[ <img src ="http://www.blogjava.net/gen-sky/aggbug/277400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gen-sky/" target="_blank">星期五</a> 2009-05-22 18:49 <a href="http://www.blogjava.net/gen-sky/archive/2009/05/22/277400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL数据类型简介 </title><link>http://www.blogjava.net/gen-sky/archive/2008/12/30/249059.html</link><dc:creator>星期五</dc:creator><author>星期五</author><pubDate>Tue, 30 Dec 2008 01:50:00 GMT</pubDate><guid>http://www.blogjava.net/gen-sky/archive/2008/12/30/249059.html</guid><wfw:comment>http://www.blogjava.net/gen-sky/comments/249059.html</wfw:comment><comments>http://www.blogjava.net/gen-sky/archive/2008/12/30/249059.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gen-sky/comments/commentRss/249059.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gen-sky/services/trackbacks/249059.html</trackback:ping><description><![CDATA[<span style="border-collapse: separate; color: #000000; font-family: 宋体; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div id="context_title" style="border-style: solid; border-color: #a7c2e7; border-width: 1px 0px; padding: 10px 20px; background-color: #ffffff; text-align: center;">
<h1 style="margin: 10px 0px; padding: 0px; font-size: 24px;">MySQL数据类型简介</h1>
<div id="context_title_detail" style="margin: 10px 0px;">2008-06-18 10:39:11 来源:<a href=" style=" target="color: #003399; text-decoration: none;">中国自学编程网</a> 作者:佚名</div>
</div>
<center><a href="http://nj.onlinedown.net/fetion2008.exe" target="_blank" style="color: #003399; text-decoration: none;"></a></center>
<div id="context_main" style="padding: 0px 20px; font-size: 14px; line-height: 170%;">
<div>其中的长度以字节为单位</div>
<div align="center">
<table style="border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>名称</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>长度</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>用法</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>TINYINT(M)</div>
            <div>BIT,BOOL,BOOLEAN</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>1</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>如果为无符号数，可以存储从0到255的数;</div>
            <div>&nbsp;</div>
            <div>否则可以存储从-128到127的数。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>SMALLINT(M)</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>2</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>如果为无符号数，可以存储从0到65535的数;</div>
            <div>&nbsp;</div>
            <div>否则可以存储从-32768到32767的数。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>MEDIUMINT(M)</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>3</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>如果为无符号数，可以存储从0到16777215的数;否则可以存储从-8388608到8388607的数</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>INT(M)</div>
            <div>&nbsp;</div>
            <div>INTEGER(M)</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>4</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>如果为无符号数，可以存储从0到4294967295的数，否则可以存储从-2147483648到2147483647的数。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>BIGINT(M)</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>8</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>如果为无符号数，可以存储从0到18446744073709551615的数，否则可以存储从-9223372036854775808到9223372036854775807的数。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>FLOAT(precision)</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>4或8</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>这里的precision是可以直达53的整数。如果precision&lt;=24则转换为FLOAT，如果precision&gt;24并且precision&lt;=53则转换为DOUBLE。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>FLOAT(M,D)</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>4</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>单精度浮点数。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>DOUBLE(M,D),</div>
            <div>&nbsp;</div>
            <div>DOUBLE PRECISION,</div>
            <div>&nbsp;</div>
            <div>REAL</div>
            <div>&nbsp;</div>
            <div>&nbsp;</div>
            <div>&nbsp;</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>8</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>双精度浮点。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>DECIMAL(M,D),</div>
            <div>&nbsp;</div>
            <div>DEC,NUMERIC,FIXED</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>M+1或M+2</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>未打包的浮点数。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>DATE</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>3</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>以YYYY-MM-DD的格式显示。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>DATETIME</div>
            <div>&nbsp;</div>
            <div>HH:MM:SS</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>8</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>以YYYY-MM-DD的格式显示。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>TIMESTAMP</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>4</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>以YYYY-MM-DD的格式显示。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>TIME</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>3</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>以HH:MM:SS的格式显示。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>YEAR</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>1</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>以YYYY的格式显示。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>CHAR(M)</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>M</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>定长字符串。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>VARCHAR(M)</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>最大M</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>变长字符串。M&lt;=255.</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>TINYBLOB,</div>
            <div>&nbsp;</div>
            <div>TINYTEXT</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>最大255</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>TINYBLOB为大小写敏感，而TINYTEXT不是大小写敏感的。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>BLOB,</div>
            <div>&nbsp;</div>
            <div>TEXT</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>最大64K</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>BLOB为大小敏感的，而TEXT不是大小写敏感的。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>MEDIUMBLOB,</div>
            <div>&nbsp;</div>
            <div>MEDIUMTEXT</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>最大16M</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>MEDIUMBLOB为大小写敏感的，而MEDIUMTEXT不是大小敏感的。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>LONGBLOB,</div>
            <div>&nbsp;</div>
            <div>LONGTEXT</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>最大4G</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>LONGBLOB为大小敏感的，而LONGTEXT不是大小敏感的。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>ENUM(VALUE1,&#8230;.)</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>1或2</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>最大可达65535个不同的值。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>SET(VALUE1,&#8230;.)</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>可达8</div>
            <div>&nbsp;</div>
            </td>
            <td style="padding: 0cm 5.4pt; background-color: transparent; font-size: 12px; color: #000000; font-family: 宋体;" valign="top">
            <div>最大可达64个不同的值。</div>
            <div>&nbsp;</div>
            </td>
        </tr>
    </tbody>
</table>
</div>
</div>
</span>
<img src ="http://www.blogjava.net/gen-sky/aggbug/249059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gen-sky/" target="_blank">星期五</a> 2008-12-30 09:50 <a href="http://www.blogjava.net/gen-sky/archive/2008/12/30/249059.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ 转 ] mysql修改表结构alter </title><link>http://www.blogjava.net/gen-sky/archive/2008/12/04/244383.html</link><dc:creator>星期五</dc:creator><author>星期五</author><pubDate>Thu, 04 Dec 2008 07:29:00 GMT</pubDate><guid>http://www.blogjava.net/gen-sky/archive/2008/12/04/244383.html</guid><wfw:comment>http://www.blogjava.net/gen-sky/comments/244383.html</wfw:comment><comments>http://www.blogjava.net/gen-sky/archive/2008/12/04/244383.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gen-sky/comments/commentRss/244383.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gen-sky/services/trackbacks/244383.html</trackback:ping><description><![CDATA[<h3 title=""><a href="http://waryist.javaeye.com/blog/104739">mysql修改表结构alter</a></h3>
<table style="table-layout: fixed;" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td width="6">&nbsp;</td>
            <td id="dede_content" style="font-size: 9pt; line-height: 140%;" width="521">
            <table width="100%">
                <tbody>
                    <tr>
                        <td align="right">&nbsp;</td>
                    </tr>
                </tbody>
            </table>
            <p>ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]</p>
            <p>alter_specification:<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADD [COLUMN] create_definition [FIRST | AFTER column_name ]<br />
            &nbsp; or&nbsp;&nbsp;&nbsp; ADD INDEX [index_name] (index_col_name,...)<br />
            &nbsp; or&nbsp;&nbsp;&nbsp; ADD PRIMARY KEY (index_col_name,...)<br />
            &nbsp; or&nbsp;&nbsp;&nbsp; ADD UNIQUE [index_name] (index_col_name,...)<br />
            &nbsp; or&nbsp;&nbsp;&nbsp; ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}<br />
            &nbsp; or&nbsp;&nbsp;&nbsp; CHANGE [COLUMN] old_col_name create_definition<br />
            &nbsp; or&nbsp;&nbsp;&nbsp; MODIFY [COLUMN] create_definition<br />
            &nbsp; or&nbsp;&nbsp;&nbsp; DROP [COLUMN] col_name<br />
            &nbsp; or&nbsp;&nbsp;&nbsp; DROP PRIMARY KEY<br />
            &nbsp; or&nbsp;&nbsp;&nbsp; DROP INDEX index_name<br />
            &nbsp; or&nbsp;&nbsp;&nbsp; RENAME [AS] new_tbl_name<br />
            &nbsp; or&nbsp;&nbsp;&nbsp; table_options</p>
            <p>ALTER TABLE允许你修改一个现有表的结构。例如，你可以增加或删除列、创造或消去索引、改变现有列的类型、或重新命名列或表本身。你也能改变表的注释和表的类型。见7.7 CREATE TABLE句法。 </p>
            <p>如
            果你使用ALTER TABLE修改一个列说明但是DESCRIBE tbl_name显示你的列并没有被修改，这可能是MySQL因为在7.7.1
            隐含的列说明改变中描述的原因之一而忽略了你的修改。例如，如果你试图将一个VARCHAR改为CHAR，MySQL将仍然使用VARCHAR，如果表包
            含其他变长的列。 </p>
            <p>ALTER
            TABLE通过制作原来表的一个临时副本来工作。修改在副本上施行，然后原来的表被删除并且重新命名一个新的。这样做使得所有的修改自动地转向到新表，没
            有任何失败的修改。当ALTER TABLE正在执行时，原来的桌可被其他客户读取。更新和写入表被延迟到新表准备好了为止。 </p>
            <p>为了使用ALTER TABLE，你需要在表上的select、insert、delete、update、create和drop的权限。 <br />
            IGNORE是MySQL对ANSI SQL92 的一个扩充，如果在新表中的唯一键上有重复，它控制ALTER
            TABLE如何工作。如果IGNORE没被指定，副本被放弃并且恢复原状。如果IGNORE被指定，那么对唯一键有重复的行，只有使用第一行；其余被删
            除。 <br />
            你可以在单个ALTER TABLE语句中发出多个ADD、ALTER、DROP和CHANGE子句。这是MySQL对ANSI SQL92的一个扩充，SQL92在每个ALTER TABLE语句中只允许一个子句。 <br />
            CHANGE col_name、DROP col_name和DROP INDEX是MySQL对 ANSI SQL92 的扩充。 <br />
            MODIFY是 Oracle 对ALTER TABLE的扩充。 <br />
            可选的词COLUMN是一个纯粹的噪音且可以省略。 <br />
            如果你使用ALTER TABLE tbl_name RENAME AS new_name而没有任何其他选项，MySQL简单地重命名对应于表tbl_name的文件。没有必要创建临时表。 <br />
            create_definition子句使用CREATE TABLE相同的ADD和CHANGE语法。注意语法包括列名字，不只列类型。见7.7 CREATE TABLE句法。 <br />
            你可以使用CHANGE old_col_name create_definition子句重命名一个列。为了这样做，指定旧的和新的列名字和列当前有的类型。例如，重命名一个INTEGER列，从a到b，你可以这样做： <br />
            mysql&gt; ALTER TABLE t1 CHANGE a b INTEGER;</p>
            <p>如果你想要改变列的类型而非名字，就算他们是一样的，CHANGE语法仍然需要2个列名。例如： </p>
            <p>mysql&gt; ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;</p>
            <p>然而，在MySQL3.22.16a，你也可以使用MODIFY来改变列的类型而不是重命名它： </p>
            <p>mysql&gt; ALTER TABLE t1 MODIFY b BIGINT NOT NULL;</p>
            <p>如果你使用CHANGE或MODIFY缩短一个列，一个索引存在于该列的部分(例如，如果你有一个VARCHAR列的头10个字符的索引)，你不能使列短于被索引的字符数目。 <br />
            当你使用CHANGE或MODIFY改变一个列类型时，MySQL尽可能试图很好地变换数据到新类型。 <br />
            在MySQL3.22或以后，你能使用FIRST或ADD ... AFTER col_name在一个表的行内在一个特定的位置增加列。缺省是增加到最后一列。 <br />
            ALTER COLUMN为列指定新的缺省值或删除老的缺省值。如果老的缺省值被删除且列可以是NULL，新缺省值是NULL。如果列不能是NULL，MySQL赋予一个缺省值。缺省值赋值在7.7 CREATE TABLE句法中描述。 <br />
            DROP INDEX删除一个索引。这是MySQL对 ANSI SQL92 的一个扩充。 <br />
            如果列从一张表中被丢弃，列也从他们是组成部分的任何索引中被删除。如果组成一个索引的所有列被丢弃，该索引也被丢弃。 <br />
            DROP PRIMARY KEY丢弃主索引。如果这样的索引不存在，它丢弃表中第一个UNIQUE索引。(如果没有明确地指定PRIMARY KEY，MySQL标记第一个UNIQUE键为PRIMARY KEY。） <br />
            用 C API 函数mysql_info()，你能找出多少记录被拷贝， 和(当使用IGNORE时)由于唯一键值的重复多少记录被删除。 <br />
            FOREIGN KEY、CHECK和REFERENCES子句实际上不做任何事情，他们的句法仅仅提供兼容性，使得更容易地从其他SQL服务器移植代码并且运行借助引用来创建表的应用程序。见5.4 MySQL缺少的功能。 <br />
            这里是一个例子，显示了一些ALTER TABLE用法。我们以一个如下创建的表t1开始： </p>
            <p>mysql&gt; CREATE TABLE t1 (a INTEGER,b CHAR(10));</p>
            <p>重命名表，从t1到t2: </p>
            <p>mysql&gt; ALTER TABLE t1 RENAME t2;</p>
            <p>为了改变列a，从INTEGER改为TINYINT NOT NULL(名字一样)，并且改变列b，从CHAR(10)改为CHAR(20)，同时重命名它，从b改为c： </p>
            <p>mysql&gt; ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);</p>
            <p>在列d上增加一个索引，并且使列a为主键： </p>
            <p>mysql&gt; ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);</p>
            <p>删出列c： </p>
            <p>mysql&gt; ALTER TABLE t2 DROP COLUMN c;</p>
            <p>增加一个新的AUTO_INCREMENT整数列，命名为c： </p>
            <p>mysql&gt; ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADD INDEX (c);</p>
            <p>注意，我们索引了c，因为AUTO_INCREMENT柱必须被索引，并且另外我们声明c为NOT NULL，因为索引了的列不能是NULL。 </p>
            <p>当你增加一个AUTO_INCREMENT列时，自动地用顺序数字填入列值。</p>
            <p><br />
            </p>
            <p><br />
            </p>
            <p>修改表某字段长度</p>
            <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
            <br />
            Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
            http://www.CodeHighlighter.com/<br />
            <br />
            --><span style="color: #0000ff;">ALTER</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">TABLE</span><span style="color: #000000;">&nbsp;writerfloor&nbsp;MODIFY&nbsp;&nbsp;images&nbsp;</span><span style="color: #000000; font-weight: bold;">varchar</span><span style="color: #000000;">(</span><span style="color: #800000; font-weight: bold;">240</span><span style="color: #000000;">);</span></div>
            <p><br />
            </p>
            <p>添加 area 表的字段 latitude 类型是 char(20)不为空</p>
            <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
            <br />
            Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
            http://www.CodeHighlighter.com/<br />
            <br />
            --><span style="color: #0000ff;">ALTER</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">TABLE</span><span style="color: #000000;">&nbsp;area&nbsp;</span><span style="color: #0000ff;">ADD</span><span style="color: #000000;">&nbsp;latitude&nbsp;</span><span style="color: #000000; font-weight: bold;">char</span><span style="color: #000000;">(</span><span style="color: #800000; font-weight: bold;">20</span><span style="color: #000000;">)&nbsp;</span><span style="color: #808080;">NOT</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">;</span></div>
            <p><br />
            </p>
            修改 kejiyuan 表,字段 <span style="color: #000000;">klongitude </span>改名称为 <span style="color: #000000;">longitude 后面要加上类型</span><br />
            <br />
            <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
            <br />
            Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
            http://www.CodeHighlighter.com/<br />
            <br />
            --><span style="color: #0000ff;">ALTER</span> <span style="color: #0000ff;">TABLE</span><span style="color: #000000;"> </span><span style="color: #000000;">kejiyuan&nbsp;CHANGE&nbsp;klongitude&nbsp;longitude&nbsp;</span><span style="color: #000000; font-weight: bold;">char</span><span style="color: #000000;">(</span><span style="color: #800000; font-weight: bold;">20</span><span style="color: #000000;">);</span></div>
            <br />
            <br />
            <p>
            </p>
            <p><br />
            </p>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/gen-sky/aggbug/244383.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gen-sky/" target="_blank">星期五</a> 2008-12-04 15:29 <a href="http://www.blogjava.net/gen-sky/archive/2008/12/04/244383.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>