﻿<?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/ywsky/category/17892.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 06:38:37 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 06:38:37 GMT</pubDate><ttl>60</ttl><item><title>Mysql中的select top</title><link>http://www.blogjava.net/ywsky/archive/2006/11/29/84444.html</link><dc:creator>心远</dc:creator><author>心远</author><pubDate>Wed, 29 Nov 2006 15:27:00 GMT</pubDate><guid>http://www.blogjava.net/ywsky/archive/2006/11/29/84444.html</guid><wfw:comment>http://www.blogjava.net/ywsky/comments/84444.html</wfw:comment><comments>http://www.blogjava.net/ywsky/archive/2006/11/29/84444.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywsky/comments/commentRss/84444.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywsky/services/trackbacks/84444.html</trackback:ping><description><![CDATA[在很多时候我们需要取出前几条记录，像一些论坛上的十大之类的。如果把所有的记录的都取出来，然后再挑出前几条的话肯定是很傻的做法。<br /><br />
以前听说过select top，用它可以取出前几条记录。但是在mysql5.0中好像不支持，不过想想mysql肯定会有另外的支持方式的，在网上搜了会。找到了limit的方法，在mysql5.0中测试一下，no problem。<br /><br />
代码样例：<br /><div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;"><div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: rgb(0, 0, 255);">select</span><span style="color: rgb(0, 0, 0);">  </span><span style="color: rgb(128, 128, 128);">*</span><span style="color: rgb(0, 0, 0);">  </span><span style="color: rgb(0, 0, 255);">from</span><span style="color: rgb(0, 0, 0);"> test </span><span style="color: rgb(0, 0, 255);">order</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">by</span><span style="color: rgb(0, 0, 0);"> id </span><span style="color: rgb(0, 0, 255);">desc</span><span style="color: rgb(0, 0, 0);"> limit </span><span style="color: rgb(128, 0, 0); font-weight: bold;">5</span><span style="color: rgb(0, 0, 0);">;</span></div></div><br />
test：表明<br />
id    ：字段名<br />
5    ： 获得记录条数    <img src ="http://www.blogjava.net/ywsky/aggbug/84444.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywsky/" target="_blank">心远</a> 2006-11-29 23:27 <a href="http://www.blogjava.net/ywsky/archive/2006/11/29/84444.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mysql 学习笔记（三）</title><link>http://www.blogjava.net/ywsky/archive/2006/11/29/84441.html</link><dc:creator>心远</dc:creator><author>心远</author><pubDate>Wed, 29 Nov 2006 15:13:00 GMT</pubDate><guid>http://www.blogjava.net/ywsky/archive/2006/11/29/84441.html</guid><wfw:comment>http://www.blogjava.net/ywsky/comments/84441.html</wfw:comment><comments>http://www.blogjava.net/ywsky/archive/2006/11/29/84441.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywsky/comments/commentRss/84441.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywsky/services/trackbacks/84441.html</trackback:ping><description><![CDATA[
		<div class="postText">
				<p>字符集支持 </p>
				<p>MySQL4.1以后的版本对字符集的支持具有以下新增功能：</p>
				<div class="itemizedlist">
						<ul type="disc">
								<li>
										<p>支持服务器同时使用多种字符集。</p>
								</li>
								<li>
										<p>允许在服务器，数据库，数据表，数据列等多级别上设置不同的字符集。</p>
										<div class="itemizedlist">
												<ul type="circle">
														<li>
																<p>服务器的默认字符集在编译时选定，但可在启动服务器时用--default-character-set选项来更改。</p>
														</li>
														<li>
																<p>用ALTER DATABASE db_name DEFAULT CHARACTER SET charset来设置数据库字符集。 如果只有default参数，则使用服务器的字符集。</p>
														</li>
														<li>
																<p>用CREATE TABLE table_name(...) CHARACTER SET = charset设置数据表字符集。如果charset为default，则使用数据表所在数据库的字符集作为数据表的字符集。</p>
														</li>
														<li>
																<p>在数据列中，可用CHARACTER SET charset属性来设置数据列的字符集。charset不能是default，如果没有该属性，则默认使用数据表的字符集。允许设置字符集的数据列有char，varchar(不带binary属性)及TEXT类型。</p>
														</li>
														<li>
																<p>用_charset
str转换字符串常数的字符集。如：_utf8 'mysql'，_latinl
'oracle'。该方法只适用于括在引号内的字符串，其它十六进制常数 、字符串表达式等可用CONVERT()函数进行转换，如：SELECT
CONVERT( str USING charset)。</p>
														</li>
												</ul>
										</div>
								</li>
								<li>
										<p>通过MySQL提供的函数可进行字符集转换和查询。</p>
								</li>
								<li>
										<p>新增的COLLATE操作符使我们可按某一种字符集的排序顺序来处理另一种字符集的数据。如：SELECT a from t ORDER BY a COLLATE utf-8；</p>
								</li>
								<li>
										<p>用SHOW CHARACTER SET命令可显示服务器支持的字符集列表。</p>
								</li>
								<li>
										<p>当服务器转换到另一种字符集时，会自动对索引进行重新排序。</p>
								</li>
								<li>
										<p>通过UTF-8和UCS2字符集提供了Unicode支持。</p>
								</li>
						</ul>
				</div>
				<p>MySQL现在还不支持：1,在同一个字符串里混用不同字符集的字符；2,在同一个数据列里混用不同的字符集。</p>
				<p> </p>
				<p>各级字符集的查询方法</p>
				<div class="itemizedlist">
						<ul type="disc">
								<li>
										<p>服务器级</p>
										<pre class="screen">SHOW CHARACTER SET；可查出可供使用的所有字符集。<br />SHOW VARIABLES LIKE 'character_set'；可查出服务器的默认字符集。<br /></pre>
								</li>
								<li>
										<p>可查出数据库级的字符集。</p>
										<pre class="screen">SHOW CREATE DATABASE db_name；<br /></pre>
								</li>
								<li>
										<p>两条命令可查出数据表的字符集。</p>
										<pre class="screen">SHOW CREATE TABLE table_name；<br />SHOW TABLE STATUS LIKE 'table_name'<br /></pre>
								</li>
								<li>
										<p>以下几命令可查出数据列的字符集：</p>
										<pre class="screen">DESCRIBE table_name;<br />SHOW COLUMNS FROM table_name;<br />SHOW CREATE TABLE table_name;<br /></pre>
								</li>
								<li>
										<p>用CHARSET()函数可确定特定字符串，字符串表达式或数据列值相关联的字符串的字符集。如：SELECT CHARSET(str)。</p>
								</li>
						</ul>
				</div>
		</div>
<img src ="http://www.blogjava.net/ywsky/aggbug/84441.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywsky/" target="_blank">心远</a> 2006-11-29 23:13 <a href="http://www.blogjava.net/ywsky/archive/2006/11/29/84441.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mysql 学习笔记（二）</title><link>http://www.blogjava.net/ywsky/archive/2006/11/29/84440.html</link><dc:creator>心远</dc:creator><author>心远</author><pubDate>Wed, 29 Nov 2006 15:12:00 GMT</pubDate><guid>http://www.blogjava.net/ywsky/archive/2006/11/29/84440.html</guid><wfw:comment>http://www.blogjava.net/ywsky/comments/84440.html</wfw:comment><comments>http://www.blogjava.net/ywsky/archive/2006/11/29/84440.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywsky/comments/commentRss/84440.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywsky/services/trackbacks/84440.html</trackback:ping><description><![CDATA[
		<h3 class="title">数值类的数据列类型</h3>
		<p>数值型的列类型包括整型和浮点型两大类。</p>
		<img _fckanchor="true" _fckrealelement="3" _fckfakelement="true" src="http://writeblog.csdn.net/fckeditor/editor/images/spacer.gif" class="FCK__Anchor" />
		<table summary="数值类数据列类型" border="1">
				<colgroup>
						<col />
						<col />
						<col />
				</colgroup>
				<thead>
						<tr>
								<th>数据列类型</th>
								<th>存储空间</th>
								<th>描述</th>
						</tr>
				</thead>
				<tbody>
						<tr>
								<td>TINYINT</td>
								<td>1字节</td>
								<td>非常小的正整数，带符号：-128~127，不带符号：0~255</td>
						</tr>
						<tr>
								<td>SMALLINT</td>
								<td>2字节</td>
								<td>小整数，带符号：-32768~32767，不带符号：0~65535</td>
						</tr>
						<tr>
								<td>MEDIUMINT</td>
								<td>3字节</td>
								<td>中等大小的整数，带符号：-8388608~8388607，不带符号：0~16777215</td>
						</tr>
						<tr>
								<td>INT</td>
								<td>4字节</td>
								<td>标准整数，带符号：-2147483648~2147483647，不带符号：0~4294967295</td>
						</tr>
						<tr>
								<td>BIGINT</td>
								<td>8字节</td>
								<td>大整数，带符号：-9223372036854775808~9233372036854775807，不带符号：0~18446744073709551615</td>
						</tr>
						<tr>
								<td>FLOAT</td>
								<td>4字节</td>
								<td>单精度浮点数，最小非零值：+-1.175494351E-38，最大非零值：+-3.402823466E+38</td>
						</tr>
						<tr>
								<td>DOUBLE</td>
								<td>8字节</td>
								<td>双精度浮点数，最小非零值：+-2.2250738585072014E-308，最大非零值：+-1.7976931348623157E+308</td>
						</tr>
						<tr>
								<td>DECIMAL</td>
								<td>M+2字节</td>
								<td>以字符串形式表示的浮点数，它的取值范围可变，由M和D的值决定。</td>
						</tr>
				</tbody>
		</table>
		<br />
		<h4 class="title">1. 整型数据列类型</h4>
		<p>MySQL有五种整型数据列类型，即TINYINT，SMALLINT，MEDIUMINT，INT和BIGINT。它们之间的区别是取值范围不同，存储空间也各不相同。在整型数据列后加上UNSIGNED属性可以禁止负数，取值从0开始。</p>
		<p>声
明整型数据列时，我们可以为它指定个显示宽度M(1~255)，如INT(5)，指定显示宽度为5个字符,如果没有给它指定显示宽度，MySQL会为它指
定一个默认值。显示宽度只用于显示，并不能限制取值范围和占用空间，如：INT(3)会占用4个字节的存储空间，并且允许的最大值也不会是999,而是
INT整型所允许的最大值。</p>
		<div class="sect3" lang="en">
				<div class="titlepage">
						<div>
								<div>
										<h4 class="title">
												<img _fckanchor="true" _fckrealelement="2" _fckfakelement="true" src="http://writeblog.csdn.net/fckeditor/editor/images/spacer.gif" class="FCK__Anchor" />2. 浮点型数据列类型</h4>
								</div>
						</div>
				</div>
				<p>MySQL有三种浮点型数据列类型，分别是：FLOAT，DOUBLE和DECIMAL。浮点类数据类型有一个最大可表示值和一个最小非零可表示值，最小非零可表示值决定了该类型的精确度。</p>
				<p>MySQL 4.0.2版之后，FLOAT和DOUBLE都可以指定UNSIGNED属性。当指定该属性时，取值范围不平移到正数区间，而只是简单地把浮点类型的负数部份去掉。</p>
				<p>浮
点类型也有M(1~255)和D(1~30，且不能大于M-2)。分别表示显示宽度和小数位数。M和D在FLOAT和DOUBLE中是可选的，默认，当
MySQL版本大于3.23.6时，FLOAT和DOUBLE类型将被保存为硬件所支持的最大精度。DECIMAL的M和D值在MySQL3.23.6后
可选，默认D值为0,M值为10。 </p>
		</div>
		<div class="sect3" lang="en">
				<div class="titlepage">
						<div>
								<div>
										<h4 class="title">
												<img _fckanchor="true" _fckrealelement="1" _fckfakelement="true" src="http://writeblog.csdn.net/fckeditor/editor/images/spacer.gif" class="FCK__Anchor" />3. 如何选择数值类数据列类型？</h4>
								</div>
						</div>
				</div>
				<p>为
了节省存储空间和提高数据库处理效率，我们应根据应用数据的取值范围来选择一个最适合的数据列类型。如果把一个超出数据列取值范围的数存入该列，则
MySQL就会截短该值，如：我们把99999存入SMALLINT(3)数据列里，因为SMALLINT(3)的取值范围是-32768~32767，
所以就会被截短成32767存储。显示宽度3不会影响数值的存储。只影响显示。</p>
				<p>对于浮点数据列，存入的数值会被该列定义的小数位进行四舍五入。如把一个1.234存入FLOAT(6.1)数据列中，结果是1.2。</p>
				<p>DECIMAL
与FLOAT和DOUBLE的区别是：DECIMAL类型的值是以字符串的形式被储存起来的，它的小数位数是固定的。它的优点是，不会象FLOAT和
DOUBLE类型数据列那样进行四舍五入而产生误差，所以很适合用于财务计算；而它的缺点是：由于它的存储格式不同，CPU不能对它进行直接运算，从而影
响运算效率。DECIMAL(M，D)总共要占用M+2个字节。</p>
		</div>
		<div class="sect3" lang="en">
				<div class="titlepage">
						<div>
								<div>
										<h4 class="title">
												<img _fckanchor="true" _fckrealelement="0" _fckfakelement="true" src="http://writeblog.csdn.net/fckeditor/editor/images/spacer.gif" class="FCK__Anchor" />4. 数值类数据列的属性</h4>
								</div>
						</div>
				</div>
				<div class="itemizedlist">
						<ul type="disc">
								<li>
										<p>ZEROFILL属性适用于所有数值类数据列类型，作用是，如果数值的宽度小于定义的显示宽度，则在数值前填充0。</p>
								</li>
								<li>
										<p>UNSIGNED属性不允许数据列出现负数。</p>
								</li>
								<li>
										<p>AUTO_INCREMENT属性可生成独一无二的数字序列。只对整数类的数据列有效。</p>
								</li>
								<li>
										<p>NULL和NOT NULL属性设置数据列是否可为空。</p>
								</li>
								<li>
										<p>DEFAULT属性可为数据列指定默认值。</p>
								</li>
						</ul>
				</div>
		</div>
<img src ="http://www.blogjava.net/ywsky/aggbug/84440.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywsky/" target="_blank">心远</a> 2006-11-29 23:12 <a href="http://www.blogjava.net/ywsky/archive/2006/11/29/84440.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mysql 学习笔记（一）</title><link>http://www.blogjava.net/ywsky/archive/2006/11/29/84438.html</link><dc:creator>心远</dc:creator><author>心远</author><pubDate>Wed, 29 Nov 2006 15:10:00 GMT</pubDate><guid>http://www.blogjava.net/ywsky/archive/2006/11/29/84438.html</guid><wfw:comment>http://www.blogjava.net/ywsky/comments/84438.html</wfw:comment><comments>http://www.blogjava.net/ywsky/archive/2006/11/29/84438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywsky/comments/commentRss/84438.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywsky/services/trackbacks/84438.html</trackback:ping><description><![CDATA[在将一些数据写入到数据库中时，我们常常需要做一些字符的转化，以防止sql注入等情况。<br /><br />下面列出mysql的转义序列：<br /><br /><table summary="转义序列" border="1"><thead><tr><th>转义序列</th><th>含义</th></tr></thead><tbody><tr><td>\0</td><td>NUL(ASCII的0值)</td></tr><tr><td>\'</td><td>单引号</td></tr><tr><td>\"</td><td>双引号</td></tr><tr><td>\b</td><td>后退符</td></tr><tr><td>\n</td><td>换行符</td></tr><tr><td>\r</td><td>回车符</td></tr><tr><td>\t</td><td>制表符</td></tr><tr><td>\\</td><td>反斜杠</td></tr><tr><td>\Z</td><td>Ctrl+Z</td></tr></tbody></table> <img src ="http://www.blogjava.net/ywsky/aggbug/84438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywsky/" target="_blank">心远</a> 2006-11-29 23:10 <a href="http://www.blogjava.net/ywsky/archive/2006/11/29/84438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>