﻿<?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-followith-随笔分类-Datebase</title><link>http://www.blogjava.net/followith/category/32397.html</link><description>既然我们不能改变周遭的世界，我们就只好改变自己，用慈悲心和智慧心来面对这一切。</description><language>zh-cn</language><lastBuildDate>Fri, 29 Aug 2008 17:26:47 GMT</lastBuildDate><pubDate>Fri, 29 Aug 2008 17:26:47 GMT</pubDate><ttl>60</ttl><item><title>jdbc连接mysql数据库</title><link>http://www.blogjava.net/followith/archive/2008/08/29/225528.html</link><dc:creator>followith</dc:creator><author>followith</author><pubDate>Fri, 29 Aug 2008 03:46:00 GMT</pubDate><guid>http://www.blogjava.net/followith/archive/2008/08/29/225528.html</guid><wfw:comment>http://www.blogjava.net/followith/comments/225528.html</wfw:comment><comments>http://www.blogjava.net/followith/archive/2008/08/29/225528.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/followith/comments/commentRss/225528.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/followith/services/trackbacks/225528.html</trackback:ping><description><![CDATA[一直用的oracle的数据库，今天做测试的时候想用mysql，写了个DBConnect<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: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;DBConnect&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;Connection&nbsp;getConnection()&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;urlstr&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">jdbc:mysql://127.0.0.1:3306/database</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">{<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(</span><span style="color: #000000;">"</span><span style="color: #000000;">com.mysql.jdbc.Driver</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;DriverManager.getConnection(urlstr,</span><span style="color: #000000;">"</span><span style="color: #000000;">username</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">password</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">(ClassNotFoundException&nbsp;ex)&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;conn;<br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">}</span></div>
<br />
<br />
<img src ="http://www.blogjava.net/followith/aggbug/225528.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/followith/" target="_blank">followith</a> 2008-08-29 11:46 <a href="http://www.blogjava.net/followith/archive/2008/08/29/225528.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql和oracle的操作不同处</title><link>http://www.blogjava.net/followith/archive/2008/08/28/225315.html</link><dc:creator>followith</dc:creator><author>followith</author><pubDate>Thu, 28 Aug 2008 07:33:00 GMT</pubDate><guid>http://www.blogjava.net/followith/archive/2008/08/28/225315.html</guid><wfw:comment>http://www.blogjava.net/followith/comments/225315.html</wfw:comment><comments>http://www.blogjava.net/followith/archive/2008/08/28/225315.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/followith/comments/commentRss/225315.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/followith/services/trackbacks/225315.html</trackback:ping><description><![CDATA[<h2>1.自动增长的数据类型处理<br />
MYSQL有自动增长的数据类型，插入记录时不用操作此字段，会自动获得数据值。ORACLE没有自动增长的数据类型，需要建立一个自动增长的序列号，插入记录时要把序列号的下一个值赋于此字段。<br />
<br />
CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE; <br />
其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999<br />
INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL<br />
<br />
2. 单引号的处理<br />
MYSQL里可以用双引号包起字符串，ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换：把所有出现的一个单引号替换成两个单引号。<br />
<br />
3. 翻页的SQL语句的处理<br />
MYSQL处理翻页的SQL语句比较简单，用LIMIT 开始位置,
记录个数；PHP里还可以用SEEK定位到结果集的位置。ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位
置, 并且只能用ROWNUM&lt;100, 不能用ROWNUM&gt;80。<br />
以下是经过分析后较好的两种ORACLE翻页SQL语句( ID是唯一关键字的字段名 )：<br />
语句一：<br />
SELECT
ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM
(SELECT ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2)
WHERE NUMROW ＞ 80 AND NUMROW ＜ 100 ) ORDER BY 条件3; <br />
<br />
语句二：<br />
SELECT
* FROM (( SELECT ROWNUM AS NUMROW, c.* from (select [FIELD_NAME,...]
FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) c) WHERE NUMROW ＞ 80 AND NUMROW
＜ 100 ) ORDER BY 条件3; <br />
<br />
4． 长字符串的处理<br />
<br />
长字符串的处理ORACLE也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于4000个单字节,
如果要插入更长的字符串,
请考虑字段用CLOB类型，方法借用ORACLE里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断，不能为空的字段值和超出长
度字段值都应该提出警告,返回上次操作。<br />
<br />
5. 日期字段的处理<br />
<br />
MYSQL日期字段分DATE和TIME两种，ORACLE日期字段只有DATE，包含年月日时分秒信息，用当前数据库的系统时间为SYSDATE,
精确到秒，或者用字符串转换成日期型函数TO_DATE(&#8216;2001-08-01&#8217;,&#8217;YYYY-MM-DD&#8217;)年-月-日 24小时:分钟:秒
的格式YYYY-MM-DD HH24:MI:SS TO_DATE()还有很多种日期格式, 可以参看ORACLE
DOC.日期型字段转换成字符串函数TO_CHAR(&#8216;2001-08-01&#8217;,&#8217;YYYY-MM-DD HH24:MI:SS&#8217;)<br />
<br />
日期字段的数学运算公式有很大的不同。MYSQL找到离当前时间7天用 DATE_FIELD_NAME ＞
SUBDATE（NOW（），INTERVAL 7 DAY）ORACLE找到离当前时间7天用 DATE_FIELD_NAME ＞SYSDATE
- 7; <br />
<br />
MYSQL中插入当前时间的几个函数是：NOW()函数以`'YYYY-MM-DD
HH:MM:SS'返回当前的日期时间，可以直接存到DATETIME字段中。CURDATE()以&#8217;YYYY-MM-DD&#8217;的格式返回今天的日期，可以
直接存到DATE字段中。CURTIME()以&#8217;HH:MM:SS&#8217;的格式返回当前的时间，可以直接存到TIME字段中。例：insert into
tablename (fieldname) values (now())<br />
<br />
而oracle中当前时间是sysdate<br />
<br />
6. 空字符的处理<br />
<br />
MYSQL的非空字段也有空的内容，ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义ORACLE表结构,
导数据的时候会产生错误。因此导数据时要对空字符进行判断，如果为NULL或空字符，需要把它改成一个空格的字符串。<br />
<br />
7. 字符串的模糊比较<br />
<br />
MYSQL里用 字段名 like '%字符串%',ORACLE里也可以用 字段名 like '%字符串%' 但这种方法不能使用索引, 速度不快，用字符串比较函数 instr(字段名,'字符串')＞0 会得到更精确的查找结果。<br />
<br />
8. 程序和函数里，操作数据库的工作完成后请注意结果集和指针的释放。</h2>
<img src ="http://www.blogjava.net/followith/aggbug/225315.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/followith/" target="_blank">followith</a> 2008-08-28 15:33 <a href="http://www.blogjava.net/followith/archive/2008/08/28/225315.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle和MySQL、PostgreSQL特性对比 </title><link>http://www.blogjava.net/followith/archive/2008/08/28/225312.html</link><dc:creator>followith</dc:creator><author>followith</author><pubDate>Thu, 28 Aug 2008 07:28:00 GMT</pubDate><guid>http://www.blogjava.net/followith/archive/2008/08/28/225312.html</guid><wfw:comment>http://www.blogjava.net/followith/comments/225312.html</wfw:comment><comments>http://www.blogjava.net/followith/archive/2008/08/28/225312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/followith/comments/commentRss/225312.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/followith/services/trackbacks/225312.html</trackback:ping><description><![CDATA[<span style="padding: 0px 18px; display: block; width: 540px; color: #002166; line-height: 25px; text-align: left;">将Mysql、PostgreSQL二个开源数据库和Oracle放在一起对比，多少显得有些不公平，后者是有强大厂商及上千技术人员支持和维护的商用数据库，而前者是开源和免费的产品。但是，这种对比，有助于我们在架构自己的业务和应用时，做出理性的选择。<br />
</span>随着现代数据库可用特征集的迅速增加，很难区分孰好孰坏。例如Oracle里就有许多你可能从来都不需要的高级数据仓库特征。此外也可能有一些其它不可或缺的特征比如ACID事务特性。我们来看一看主要的一些特征，比如<a title="存储" style="color: #000000;" href="http://storage.it168.com/" target="_blank">存储</a>过程，视图，快照，表数据类型和事务等等。同时我们分析一下Postgresql，MySQL和Oracle这几个数据库，然后找出哪个能够满足你的需求。 <br />
存储过程 <br />
<div>　　数据库里的存储应用程序肯定会有它的拥护者和贬低者。在这个问题上我还不清楚自己属于哪一类，所以我尽量对这两个方面都讨论。当你开始在数
据库里放置应用程序代码时，你就处于了彻底不可移植的境地。你把应用程序移植到另一个数据库时，那段代码将不得不被重写。但是它对原来数据库的高度专一性
意味着它可以利用那个引擎，和那个引擎紧紧捆绑在一起。有时候数据库里的存储代码要明显快得多。在对数据做了修改之后，你不得不更新一百万行的某些数据
块。 <br />
</div>
<div>　　在存储过程里，数据的读入、操纵和更新是一步完成的。然而你要在中间层应用程序中做同样事情的话，你就不得不通过<a title="网络" style="color: #000000;" href="http://net.it168.com/" target="_blank">网络</a>发
送数据集，完成数据操纵，然后将它发送回来。这不但使任务的速度变慢，而且竞争同一数据的其他事务有可能不得不等待，因为它需要的数据正处于传送和操纵状
态。存储代码也可以用来密封特定的请求，这对简化你整体的应用程序是很重要的。这三个数据库都支持存储过程和函数。Oracle还支持包，或者说是存储过
程的集合以及几乎没有人用过的各种面向对象特征的集合。还要说明一点，一个数据库引擎实际上是在存储代码和嵌入在里面的SQL代码之间关联转换。
Oracle 9i版本引入了成批绑定技术，所以你能够对许多行进行处理，并且能够一次性更新它们，而不是单个循环迭代。这个特征大幅度改善了性能。 <br />
<br />
<strong>视图</strong> <br />
</div>
<div>　　视图基本上是存储查询，正因为如此执行起来才不会过度复杂。然而当用于查询时，他们必然会使查询复杂化。所以很明显，数据库在视图可用之前
一定要支持子查询。Oracle很早就已经有视图了。从5.0版本开始，MySQL也已经支持视图。跟Oracle一样，MySQL也支持
UPDATEABLE视图，但是有一些限制。Postgres也支持视图和UPDATEABLE视图。更详细的解释见Complex SQL部分。 <br />
</div>
<div><strong>物化图（快照） <br />
</strong></div>
<div>　　不用说，Oracle对它们支持得非常好。作为一种新事物，物化图（我更喜欢快照这个可视化的术语，有点离题了）是一个周期性更新的副本或
者是表的子集。可以把视图看做是查询的一个副本。直到下一次刷新，那个副本是静态的，没从主机那儿更新的。通常要在更新频率和支持它的事务日志（比如索
引）的维护之间做一个折衷。名义上，MySQL和Postgresql不支持物化图，然而互联网上有它的实现，可能会满足你的需求，你要是选择此方案的话
就另外需要一些支持了。一个<a title="存储" style="color: #000000;" href="http://storage.it168.com/" target="_blank">存储</a>程序创建物化图，另一个存储过程刷新它。在本质上，一个CREATE TABLE语句就是AS SELECT..的拷贝。 <br />
<br />
<strong>语言集成 <br />
</strong></div>
<div>　　如今，基于web的编程应用虽然使用了不同的数据库，却是完全平等的。几乎所有的web编程语言都支持这些数据库类型。Java，PHP，Perl，Python，C#/.NET，等等等等。尽情享受编程的乐趣吧！<br />
<br />
<strong>触发器</strong> <br />
</div>
<div>　　MySQL，Oracle和Postgres都支持INSERT，UPDATE和DELETE操作的BEFORE和AFTER事件触发器。就我个人而言，除非万不得已我不会使用触发器。因为他们常常被忘记，有时反而给你添乱。少量使用的话，效果反而会很好。 <br />
<br />
<strong><a title="安全" style="color: #000000;" href="http://safe.it168.com/" target="_blank">安全</a>性 <br />
</strong></div>
所有这三个数据库都有它的脆弱性。<a title="软件" style="color: #000000;" href="http://software.it168.com/" target="_blank">软件</a>肯
定有一些死角故障隐藏其中，这是它的本性。此外，这三个数据库都会定期发布更新包。然而我个人的感觉是，开源意味着必然有更多的目光，并且经常更多的是挑
剔的目光盯在程序上面。而且在开源世界里社区施加的压力要大得多。在商界，当修理费用远远高于等待补丁的费用时，厂家可以并且经常会耍手段。 <br />
在数据库内部的安全性方面，所有这三个数据库都支持口令登录和数据库内部各种类型的加密。Oracle确有一种新特征叫做虚拟专用数据库，其中
表的段和列都可以被编码，对于视图是隐藏的。这对于一些有争议的或是敏感的数据非常有用，DBA和其他管理员对这些数据是无权访问的。<br />
<br />
<strong>结论</strong> <br />
<div>　　很明显，这三个数据库平台都有大量的特征，对于同一问题也有不同的解决方案。就安全性，触发器，视图，物化图和存储过程而言，他们提供了许
多一样的功能，尽管在性能和配置方面有些差异。在第二部分，我们将讨论数据库真正开始千差万别的一些方式，从索引方面，可能最重要的是从它们的优化引擎方
面。 </div>
<div>　　在前面对数据库的比较中，我们提到了几种不同的特征，比如触发器，视图和<a title="存储" style="color: #000000;" href="http://storage.it168.com/" target="_blank">存储</a>过程。虽然在Oracle，Postgresql和MySQL中这几个特征集彼此之间有所不同，但是你遇到的大部分应用都是集中在这几个方面。这一次，我们将讨论这几个平台之间存在明显差异的一些东西，最重要在于它们处理SQL复合语句和优化选择的方式上。 <br />
<br />
SQL复合语句（优化引擎） <br />
</div>
<div>　　不管你选择哪个数据库，SQL语言都是你和数据库交互的最基本和最重要的方式。 这也正是这三个平台开始分道扬镳的地方。
Oracle支持大量复杂的查询,几乎是无限多的表和所有类型的联结以及组合。但这些充其量只是冰山一角，Oracle真正的王牌在于它的Cost
Based Optimizer（基于代价的优化器），它分析SQL语句，如果可能的话会重写和简化它，基于代价选择索引，根据<a title="驱动" style="color: #000000;" href="http://driver.it168.com/" target="_blank">驱动</a>表和其他一些神秘的方式来做出决定。 <br />
</div>
<div>　　读一下MySQL的文档你就会发现性能偏见的来源，这些是厂家细节类型，它使得性能优化和性能调节在任何平台上都很复杂。MySQL能够处
理的任何JOIN或者VIEW语句的固定最大值是61张表。
我个人又有点疑问，不管怎么说，应用程序中表太多了处理起来会更困难，所以正如前面所说，确实是优化器而不是能够查询的最大表规格占上风，等等。 <br />
</div>
<div>　　Postgresql 8.x版支持所有的SQL92规范，几乎没有什么限制。 我再次认为，一种数据库优于其他数据库在于优化程序方面做得好。复合查询很麻烦，所以查询策略就成了你分析性能瓶颈的最好参考。</div>
<div>　　<br />
<strong>索引类型</strong> <br />
</div>
<div>　　索引技术对数据库性能来说是很关键的，Oracle在这方面提供了很多的选择。目前存在着太多的索引类型，从标准的B树到反向键，再到基于
函数的时常误用的位图索引，甚至index-only表。作为附加技术，DBA还可以使用Oracle
Text，它提供了索引能够让你查找CLOB（大字符对象），而且Oracle Spatial提供了基于位置数据的索引。 <br />
</div>
<div>　　在MySQL里，我们发现有B树，哈希表，全文和GIS索引（基于位置数据），还有簇索引，但是如果我在Oracle方面的经验有任何指导
作用的话，我可以说这些跟大多数应用程序都是不相关的。大部分时候，B树索引是我在Oracle，MySQL和Postgres应用中能看到的唯一一种索
引。除此之外，就算作为示例，基于函数的索引在MySQL中也是没有的，但是它们能够靠创建另一列使用那个函数和一些数据来模拟，然后再增加一个触发器使
它更受欢迎。 <br />
</div>
<div>　　Postgresql提供了B树和哈希表，以及r树和它自己个性化的GiST索引类型，它允许创建用户自定义类型和基于函数的索引。
Oracle也提供了一种类似的函数，其中它的基于函数的索引能够用于基于pl/sql的函数，而不仅仅是标准的系统预定义函数，例如那些你可能不会用到
的trunc，UPPER函数。但是你要小心了，这样的索引很可能访问速度极慢，当它从你的表中输入输出数据的时候，速度慢得你甚至都可以放慢语速加入讨
论了。 <br />
</div>
再次强调一下，Oracle真正胜出的地方就在于它的实现方式和优化器选择索引的策略上。 <br />
Oracle允许你通过审核跟踪设施对表和文件启用审计功能。一旦启用，你可以审计插入，更新或者删除一个特定的表，还可以注册，甚至是某一特定用户对数据库全部的访问。你有相当多的选择权，并且启用很容易。 <br />
<div>　　Postgresql也有这个函数，据说跟Oracle的同样灵活、易于配置。 <br />
</div>
另一方面，MySQL的核心函数中好像不提供这个函数，你当然可以构建自己的<a title="存储" style="color: #000000;" href="http://storage.it168.com/" target="_blank">存储</a>过程和触发器来做你想做的事情，并把相应的信息填入一张表中，只是相对麻烦一些。 <br />
<img src ="http://www.blogjava.net/followith/aggbug/225312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/followith/" target="_blank">followith</a> 2008-08-28 15:28 <a href="http://www.blogjava.net/followith/archive/2008/08/28/225312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql使用指南</title><link>http://www.blogjava.net/followith/archive/2008/08/28/225295.html</link><dc:creator>followith</dc:creator><author>followith</author><pubDate>Thu, 28 Aug 2008 06:38:00 GMT</pubDate><guid>http://www.blogjava.net/followith/archive/2008/08/28/225295.html</guid><wfw:comment>http://www.blogjava.net/followith/comments/225295.html</wfw:comment><comments>http://www.blogjava.net/followith/archive/2008/08/28/225295.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/followith/comments/commentRss/225295.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/followith/services/trackbacks/225295.html</trackback:ping><description><![CDATA[<span>一、操作技巧 <br />
&nbsp;&nbsp;1、如果你打命令时，回车后发现忘记加分号，你无须重打一遍命令，只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打，完后用分号作结束标志就OK。 <br />
&nbsp;&nbsp;2、你可以使用光标上下键调出以前的命令。但以前我用过的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win。 <br />
<br />
二、显示命令 <br />
&nbsp;&nbsp;1、显示数据库列表。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show databases; <br />
&nbsp;&nbsp;刚开始时才两个数据库：mysql和test。mysql库很重要它里面有MYSQL的系统信息，我们改密码和新增用户，实际上就是用这个库进行操作。 <br />
&nbsp;&nbsp;2、显示库中的数据表： <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use mysql；&nbsp;&nbsp;&nbsp;／／打开库，学过FOXBASE的一定不会陌生吧 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show tables; <br />
&nbsp;&nbsp;3、显示数据表的结构： <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;describe 表名; <br />
&nbsp;&nbsp;4、建库： <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create database 库名; <br />
&nbsp;&nbsp;5、建表： <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use 库名； <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create table 表名 (字段设定列表)； <br />
&nbsp;&nbsp;6、删库和删表: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drop database&nbsp;&nbsp;库名; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drop table&nbsp;&nbsp;表名； <br />
&nbsp;&nbsp;7、将表中记录清空： <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete from 表名; <br />
&nbsp;&nbsp;8、显示表中的记录： <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select * from 表名; <br />
<br />
三、一个建库和建表以及插入数据的实例 <br />
drop database if exists school; //如果存在SCHOOL则删除 <br />
create database school;&nbsp;&nbsp;&nbsp;//建立库SCHOOL <br />
use school;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//打开库SCHOOL <br />
create table teacher&nbsp;&nbsp;&nbsp;//建立表TEACHER <br />
( <br />
id int(3) auto_increment not null primary key, <br />
name char(10) not null, <br />
address varchar(50) default '深圳', <br />
year date <br />
);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//建表结束 <br />
//以下为插入字段&nbsp;&nbsp;&nbsp;<br />
insert into teacher values('','glchengang','深圳一中','1976-10-10'); <br />
insert into teacher values('','jack','深圳一中','1975-12-23'); <br />
<br />
&nbsp;&nbsp;注：在建表中 <br />
（1）将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key <br />
（2）将NAME设为长度为10的字符字段 <br />
（3）将ADDRESS设为长度50的字符字段，而且缺省值为深圳。varchar和char有什么区别呢，只有等以后的文章再说了。 （4）将YEAR设为日期字段。 <br />
&nbsp;&nbsp;如果你在mysql提示符键入上面的命令也可以，但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql，然后复制到c:下，并在DOS状态进入目录mysqlbin，然后键入以下命令： <br />
&nbsp;&nbsp;&nbsp;mysql -uroot -p密码 &lt; c:school.sql <br />
如果成功，空出一行无任何显示；如有错误，会有提示。（以上命令已经调试，你只要将//的注释去掉即可使用）。 <br />
<br />
<br />
四、将文本数据转到数据库中 <br />
1、文本数据应符合的格式：字段数据之间用tab键隔开，null值用n来代替. <br />
例： <br />
3 rose 深圳二中 1976-10-10 <br />
4 mike 深圳一中 1975-12-23 <br />
2、数据传入命令 load data local infile "文件名" into table 表名; <br />
注意：你最好将文件复制到mysqlbin目录下，并且要先用use命令打表所在的库。&nbsp;&nbsp;<br />
<br />
<br />
五、备份数据库：（命令在DOS的mysqlbin目录下执行） <br />
&nbsp;&nbsp;mysqldump --opt school&gt;school.bbb <br />
注释:将数据库school备份到school.bbb文件，school.bbb是一个文本文件，文件名任取，打开看看你会有新发现。 <br />
<br />
&nbsp;&nbsp;后记：其实MYSQL的对数据库的操作与其它的SQL类数据库大同小异，您最好找本将SQL的书看看。我在这里只介绍一些基本的，其实我也就只懂这些
了，呵呵。最好的MYSQL教程还是&#8220;晏子&#8220;译的&#8220;MYSQL中文参考手册&#8220;不仅免费每个相关网站都有下载，而且它是最权威的。可惜不是象"<a href="http://www.knowsky.com/php.asp" target="_blank" class="ReplaceKeyword">PHP</a>4中文手册"那样是chm的格式，在查找函数命令的时候不太方便。</span>
<img src ="http://www.blogjava.net/followith/aggbug/225295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/followith/" target="_blank">followith</a> 2008-08-28 14:38 <a href="http://www.blogjava.net/followith/archive/2008/08/28/225295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CSV文件格式的使用</title><link>http://www.blogjava.net/followith/archive/2008/08/22/223714.html</link><dc:creator>followith</dc:creator><author>followith</author><pubDate>Fri, 22 Aug 2008 04:15:00 GMT</pubDate><guid>http://www.blogjava.net/followith/archive/2008/08/22/223714.html</guid><wfw:comment>http://www.blogjava.net/followith/comments/223714.html</wfw:comment><comments>http://www.blogjava.net/followith/archive/2008/08/22/223714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/followith/comments/commentRss/223714.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/followith/services/trackbacks/223714.html</trackback:ping><description><![CDATA[csv即Comma Separated Value(逗号分隔符格式文件)，我首先发现它是在excel的导出中，慢慢地发现了这种格式挺简便。<br />
具体文件格式:<br />
a.每条记录占一行;b.以逗号为分隔符;c.逗号前后的空格会被忽略;d.字段中包含有逗号，该字段必须用双引号括起来;e.字段中包含有换行符，该字
段必须用双引号括起来;f.字段前后包含有空格，该字段必须用双引号括起来;g.字段中的双引号用两个双引号表示;h.字段中如果有双引号，该字段必须用
双引号括起来;i.第一条记录，可以是字段名。<br />
参考文档：http://www.creativyst.com/Doc/Articles/CSV/CSV01.htm <br />
在java处理中，有一开源项目opencsv来处理这种格式的文件。<br />
参考：<a href="http://opencsv.sourceforge.net/">http://opencsv.sourceforge.net/</a><br />
from: http://hi.baidu.com/jingleq/blog/item/7f37e2afc175b3ca7cd92ad4.html<br />
<img src ="http://www.blogjava.net/followith/aggbug/223714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/followith/" target="_blank">followith</a> 2008-08-22 12:15 <a href="http://www.blogjava.net/followith/archive/2008/08/22/223714.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>