﻿<?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-分享ｊａｖａ带来的快乐-文章分类-mysql</title><link>http://www.blogjava.net/lyjjq/category/19931.html</link><description>我喜欢ｊａｖａ新东西</description><language>zh-cn</language><lastBuildDate>Thu, 31 Jul 2014 19:19:06 GMT</lastBuildDate><pubDate>Thu, 31 Jul 2014 19:19:06 GMT</pubDate><ttl>60</ttl><item><title>浅析MySql二进制日志的应用</title><link>http://www.blogjava.net/lyjjq/articles/403994.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Thu, 12 Sep 2013 07:03:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/403994.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/403994.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/403994.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/403994.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/403994.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: mysql有4种不同的日志，分别是二进制日志，查询日志，慢查询日志和错误日志，这些日记记录着数据库工作的方方面面，可以帮助我们了解数据库的不同方面的踪迹，下面先介绍二进制日志的作用和使用方法，并利用二进制日志对数据库进行各种维护和优化,其他日志也会在后面陆续会做详细的介绍。二进制日志（bin-log日志）在上一篇介绍mysql主从配置的blog中，已经提过bin-log日志的作用和使用，bin-l...&nbsp;&nbsp;<a href='http://www.blogjava.net/lyjjq/articles/403994.html'>阅读全文</a><img src ="http://www.blogjava.net/lyjjq/aggbug/403994.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2013-09-12 15:03 <a href="http://www.blogjava.net/lyjjq/articles/403994.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>缩小mysql数据库的ibdata1文件</title><link>http://www.blogjava.net/lyjjq/articles/403993.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Thu, 12 Sep 2013 07:02:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/403993.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/403993.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/403993.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/403993.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/403993.html</trackback:ping><description><![CDATA[<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 8px; text-transform: none; background-color: rgb(250,253,254); text-indent: 0px; margin: 8px 0px 0px; padding-left: 16px; letter-spacing: normal; padding-right: 16px; font: 14px/25px Verdana, Arial, Tahoma; white-space: normal; color: rgb(85,85,85); border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; word-spacing: 0px; padding-top: 8px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="intro">ibdata1是mysql使用InnoDB引擎的时候需要使用的文件。这个文件有的时候会变得很大，并且在你删除数据的时候，文件也不减小。今天就碰到了一次，导致所有的/var分区都被占用光了。</div>
<div style="padding-bottom: 4px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 4px; letter-spacing: normal; padding-right: 4px; font: 14px/25px Verdana, Arial, Tahoma; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 4px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" onselectstart="return false;" class="content" unselectable="on">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">&nbsp;</div>
<table style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" width="100%">
<tbody style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">
<tr style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">
<td style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">ibdata1是mysql使用InnoDB引擎的时候需要使用的文件。这个文件有的时候会变得很大，并且在你删除数据的时候，文件也不减小。今天就碰到了一次，导致所有的/var分区都被占用光了。</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">下面是处理超大ibddata1文件的步骤：</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">1. 对每张表使用单独的innoDB文件, 修改/etc/my.cnf文件</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">[mysqld]</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">innodb_file_per_table</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">目的很明确，我们可以单独删除每个文件</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">2. 导出所有的数据，重建数据库，然后恢复数据：</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"># /usr/bin/mysqldump -R -q --all-databases &gt; /temp/all.sql</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"># service mysqld stop</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"># rm -fr /var/lib/mysql/*</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"># /usr/bin/mysql_install_db</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"># service mysqld restart</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"># mysql &lt; /tmp/all.sql</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">3. /var/lib/mysql的每个数据库下面，都有会很多的.ibd文件。这些分散的.ibd文件取代了原来的那个ibddata1。</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">以后删除数据库的时候，直接删除某个数据库的目录就可以了。</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">&#8212;&#8212;&#8212;&#8212;-华丽的分隔符&#8212;&#8212;&#8212;&#8212;-</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">mysql 使用的引擎：</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">mysql&gt; show engines;</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">+------------+---------+----------------------------------------------------------------+</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">| Engine&nbsp;&nbsp;&nbsp;&nbsp; | Support | Comment&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">+------------+---------+----------------------------------------------------------------+</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">| MyISAM&nbsp;&nbsp;&nbsp;&nbsp; | DEFAULT | Default engine as of MySQL 3.23 with great performance&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">| MEMORY&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp;&nbsp;&nbsp;&nbsp; | Hash based, stored in memory, useful for temporary tables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">| InnoDB&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp;&nbsp;&nbsp;&nbsp; | Supports transactions, row-level locking, and foreign keys&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">| BerkeleyDB | YES&nbsp;&nbsp;&nbsp;&nbsp; | Supports transactions and page-level locking&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">| BLACKHOLE&nbsp; | NO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | /dev/null storage engine (anything you write to it disappears) |</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">| EXAMPLE&nbsp;&nbsp;&nbsp; | NO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Example storage engine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">| ARCHIVE&nbsp;&nbsp;&nbsp; | NO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Archive storage engine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">| CSV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | NO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | CSV storage engine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">| ndbcluster | NO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Clustered, fault-tolerant, memory-based tables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">| FEDERATED&nbsp; | NO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Federated MySQL storage engine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">| MRG_MYISAM | YES&nbsp;&nbsp;&nbsp;&nbsp; | Collection of identicalMyISAM tables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">| ISAM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | NO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Obsolete storage engine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">+------------+---------+----------------------------------------------------------------+</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">12 rows in set (0.00 sec)</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">For InnoDB tables, OPTIMIZE TABLE is mapped to ALTER TABLE, which rebuilds the table to update index statistics and free unused space in the clustered index.</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">所以不会直接来减少ibdata的文件尺寸。</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">减少ibdata的方法如下</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">- 1. 用mysqldump等工具导出数据</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">- 2. 停止 mysqld</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">- 3. 删除ibdata*, ib_logfile* 文件</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">- 4. 重新启动 mysqld（这时mysqld就会自动创建 idbdata*, ib_logfile* 文件）</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">- 5. 将到出来的数据导回去，体积才会减小。</p></td></tr></tbody></table></div><img src ="http://www.blogjava.net/lyjjq/aggbug/403993.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2013-09-12 15:02 <a href="http://www.blogjava.net/lyjjq/articles/403993.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql 重启数据库</title><link>http://www.blogjava.net/lyjjq/articles/396820.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Thu, 21 Mar 2013 11:47:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/396820.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/396820.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/396820.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/396820.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/396820.html</trackback:ping><description><![CDATA[<div><div></div></div><div>/bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data<br /><br />查看当前mysql正在使用的参数<br /><div>ps ax|grep mysql<br />停止数据库：<br /><div>&nbsp;mysqladmin&nbsp;-uroot&nbsp;-p&nbsp;shutdown</div><div><br />&nbsp;设置自动清理MySQL&nbsp;binlog日志，配置my.cnf：<br /><br />expire_logs_days&nbsp;=&nbsp;10<br /><br />在运行时修改：<br /><br /><br />show&nbsp;binary&nbsp;logs;&nbsp;&nbsp;<br />show&nbsp;variables&nbsp;like&nbsp;'%log%';&nbsp;&nbsp;<br />set&nbsp;global&nbsp;expire_logs_days&nbsp;=&nbsp;10;<br /><br /><br /><br />杨明&nbsp;2014/7/30&nbsp;10:51:47<br /><br />手动删除10天前的MySQL&nbsp;binlog日志：<br /><br />PURGE&nbsp;MASTER&nbsp;LOGS&nbsp;BEFORE&nbsp;DATE_SUB(CURRENT_DATE,&nbsp;INTERVAL&nbsp;10&nbsp;DAY);&nbsp;<br />show&nbsp;master&nbsp;logs;<br /><br /><br /><br /><br /><br /><br /></div></div></div><img src ="http://www.blogjava.net/lyjjq/aggbug/396820.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2013-03-21 19:47 <a href="http://www.blogjava.net/lyjjq/articles/396820.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库链接参数配置</title><link>http://www.blogjava.net/lyjjq/articles/394327.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Wed, 16 Jan 2013 14:23:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/394327.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/394327.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/394327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/394327.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/394327.html</trackback:ping><description><![CDATA[<ol><br /><li style="line-height: 18px;"><br /></li><li style="line-height: 18px;"><span style="color: red;">jdbc.driverClassName</span><span>=</span><span style="color: blue;">oracle</span><span>.jdbc.driver.OracleDriver&nbsp; </span><br /></li><li style="line-height: 18px;"><span style="color: red;">jdbc.url</span><span>=jdbc:oracle:thin:@10.165.153.9:1521:PRDC&nbsp; </span><br /></li><li style="line-height: 18px;"><span style="color: red;">jdbc.username</span><span>=</span><span style="color: blue;">guser</span><span>&nbsp; </span><br /></li><li style="line-height: 18px;"><span style="color: red;">jdbc.password</span><span>=</span><span style="color: blue;">guser</span><span>&nbsp; </span><br /></li><li style="line-height: 18px;"><span>#初始化连接&nbsp; </span><br /></li><li style="line-height: 18px;"><span style="color: red;">jdbc.initialSize</span><span>=</span><span style="color: blue;">0</span><span>&nbsp; </span><br /></li><li style="line-height: 18px;"><span>#连接池的最大活动个数&nbsp; </span><br /></li><li style="line-height: 18px;"><span style="color: red;">jdbc.maxActive</span><span>=</span><span style="color: blue;">20</span><span>&nbsp; </span><br /></li><li style="line-height: 18px;"><span>#没有人用连接的时候，最大闲置的连接个数。&nbsp; </span><br /></li><li style="line-height: 18px;"><span style="color: red;">jdbc.maxIdle</span><span>=</span><span style="color: blue;">100</span><span>&nbsp; </span><br /></li><li style="line-height: 18px;"><span>#没有人用连接的时候，最小闲置的连接个数。&nbsp; </span><br /></li><li style="line-height: 18px;"><span style="color: red;">jdbc.minIdle</span><span>=</span><span style="color: blue;">0</span><span>&nbsp; </span><br /></li><li style="line-height: 18px;"><span>#超时等待时间以毫秒为单位&nbsp; </span><br /></li><li style="line-height: 18px;"><span style="color: red;">jdbc.maxWait</span><span>=</span><span style="color: blue;">10000</span><span>&nbsp; </span><br /></li><li style="line-height: 18px;"><span>#是否自动回收超时连接&nbsp; </span><br /></li><li style="line-height: 18px;"><span style="color: red;">jdbc.removeAbandoned</span><span>=</span><span style="color: blue;">true</span><span>&nbsp; </span><br /></li><li style="line-height: 18px;"><span>#设置被遗弃的连接的超时的时间（以秒数为单位），即当一个连接被遗弃的时间超过设置的时间，则它会自动转换成可利用的连接。默认的超时时间是300秒。&nbsp; </span><br /></li><li style="line-height: 18px;"><span style="color: red;">jdbc.removeAbandonedTimeout</span><span>=</span><span style="color: blue;">60</span><span>&nbsp; </span><br /></li><li style="line-height: 18px;"><span>#是否在自动回收超时连接的时候打印连接的超时错误&nbsp; </span><br /></li><li style="line-height: 18px;"><span style="color: red;">jdbc.logAbandoned</span><span> = </span><span style="color: blue;">true</span><span>&nbsp; </span><br /></li><li style="line-height: 18px;"><span>#给出一条简单的sql语句进行验证&nbsp; </span><br /></li><li style="line-height: 18px;"><span style="color: red;">jdbc.validationQuery</span><span>=</span><span style="color: blue;">select</span><span> 1 from dual&nbsp; </span><br /></li><li style="line-height: 18px;"><span>#在取出连接时进行有效验证&nbsp; </span><br /></li><li style="line-height: 18px;"><span style="color: red;">jdbc.testOnBorrow</span><span>=</span><span style="color: blue;">true</span><span>&nbsp; </span></li></ol><img src ="http://www.blogjava.net/lyjjq/aggbug/394327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2013-01-16 22:23 <a href="http://www.blogjava.net/lyjjq/articles/394327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql创建并调用存储过程</title><link>http://www.blogjava.net/lyjjq/articles/372618.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Sat, 24 Mar 2012 10:32:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/372618.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/372618.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/372618.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/372618.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/372618.html</trackback:ping><description><![CDATA[<h2>1.1<span style='font: 7pt/normal "Times New Roman"; font-size-adjust: none; font-stretch: normal;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE&nbsp; PROCEDURE <br /> </span><span style="font-family: 黑体;">（创建）</span></h2><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><pre><strong><span style='color: red; font-family: "Courier New"; font-size: 9pt;'>CREATE PROCEDURE</span></strong><strong><span style="font-size: 9pt;">存储过程名</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'> (</span></strong><strong><span style="font-size: 9pt;">参数列表</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>)</span></strong></pre><pre><strong> </strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'> <span style="color: red;">BEGIN</span></span></strong></pre><pre><strong> </strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>SQL</span></strong><strong><span style="font-size: 9pt;">语句代码块</span></strong></pre><pre style="text-indent: 13.55pt;"><strong><span style='color: red; font-family: "Courier New"; font-size: 9pt;'>END</span></strong></pre></td></tr></tbody></table><pre><span style="color: red; font-size: 9pt;">注意：</span></pre><pre><span style="font-size: 9pt;">由括号包围的参数列必须总是存在。如果没有参数，也该使用一个空参数列()。每个参数默认都是一个IN参数。要指定为其它参数，可在参数名之前使用关键词 OUT或INOUT</span></pre><pre><span style="font-size: 9pt;">在<strong><span style="font-family: 宋体;">mysql</span></strong>客户端定义存储过程的时候使用</span><span style='font-family: "Courier New"; font-size: 9pt;'>delimiter</span><span style="font-size: 9pt;">命令来把语句定界符从;变为//。</span></pre><pre><span style="font-size: 9pt;">当使用</span><span style='font-family: "Courier New"; font-size: 9pt;'>delimiter</span><span style="font-size: 9pt;">命令时，你应该避免使用反斜杠</span><span style='font-family: "Courier New"; font-size: 9pt;'>(&#8216;"&#8217;)</span><span style="font-size: 9pt;">字符，因为那是</span><span style='font-family: "Courier New"; font-size: 9pt;'>MySQL</span><span style="font-size: 9pt;">的转义字符。</span></pre><pre><span style="font-size: 9pt;">如：</span></pre><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><pre><span style='font-family: "Courier New"; font-size: 9pt;'>mysql&gt; <strong>delimiter //</strong></span></pre><pre><span style='font-family: "Courier New"; font-size: 9pt;'>mysql&gt; <strong>CREATE PROCEDURE simpleproc (OUT param1 INT)</strong></span></pre><pre><span style='font-family: "Courier New"; font-size: 9pt;'>    -&gt; <strong>BEGIN</strong></span></pre><pre><span style='font-family: "Courier New"; font-size: 9pt;'>    -&gt;   <strong>SELECT COUNT(*) INTO param1 FROM t;</strong></span></pre><pre><span style='font-family: "Courier New"; font-size: 9pt;'>    -&gt; <strong>END</strong></span></pre><pre><span style='font-family: "Courier New"; font-size: 9pt;'>    -&gt; <strong>//</strong></span></pre><pre><span style='font-family: "Courier New"; font-size: 9pt;'>Query OK, 0 rows affected (0.00 sec)</span></pre></td></tr></tbody></table><br /><h2>1.2<span style='font: 7pt/normal "Times New Roman"; font-size-adjust: none; font-stretch: normal;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ALTER&nbsp; PROCEDURE <br /></span><span style="font-family: 黑体;">（修改）</span></h2><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><pre><strong><span style='font-family: "Courier New"; font-size: 9pt;'>ALTER PROCEDURE </span></strong><strong><span style="font-size: 9pt;">存储过程名</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>SQL</span></strong><strong><span style="font-size: 9pt;">语句代码块</span></strong></pre></td></tr></tbody></table><pre><span style="font-size: 9pt;">这个语句可以被用来改变一个存储程序的特征。</span></pre><br /><h2>1.3<span style='font: 7pt/normal "Times New Roman"; font-size-adjust: none; font-stretch: normal;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DROP <br /> PROCEDURE </span><span style="font-family: 黑体;">（删除）</span></h2><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>DROP PROCEDURE&nbsp; IF <br /> EXISTS</span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">存储过程名</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>eg:DROP <br />PROCEDURE IF EXISTS proc_employee (proc_employee </span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">存储过程名</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>)</span></strong></p></td></tr></tbody></table><pre><span style="font-size: 9pt;">这个语句被用来移除一个存储程序。不能在一个存储过程中删除另一个存储过程，只能调用另一个存储过程</span></pre><br /><h2>1.4<span style='font: 7pt/normal "Times New Roman"; font-size-adjust: none; font-stretch: normal;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SHOW&nbsp; CREATE <br /> PROCEDURE</span><span style="font-family: 黑体;">（类似于SHOW CREATE TABLE</span><span style="font-family: 黑体;">，查看一个已存在的存储过程）</span></h2><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><pre><strong><span style='font-family: "Courier New"; font-size: 9pt;'>SHOW CREATE PROCEDURE </span></strong><strong><span style="font-size: 9pt;">存储过程名</span></strong></pre></td></tr></tbody></table><br /><h2>1.5<span style='font: 7pt/normal "Times New Roman"; font-size-adjust: none; font-stretch: normal;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SHOW&nbsp; PROCEDURE <br /> STATUS </span><span style="font-family: 黑体;">（列出所有的存储过程）</span></h2><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>SHOW <br /> PROCEDURE&nbsp; STATUS</span></strong></p></td></tr></tbody></table><br /><h2>1.6<span style='font: 7pt/normal "Times New Roman"; font-size-adjust: none; font-stretch: normal;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CALL</span><span style="font-family: 黑体;">语句（存储过程的调用）</span></h2><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>CALL <br /></span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">存储过程名</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>(</span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">参数列表</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>)</span></strong></p></td></tr></tbody></table><pre><span style="font-size: 9pt;">CALL</span><span style="font-size: 9pt;">语句调用一个先前用CREATE PROCEDURE创建的程序。</span></pre><pre><span style="font-size: 9pt;">CALL</span><span style="font-size: 9pt;">语句可以用声明为OUT或的INOUT参数的参数给它的调用者传回值。</span></pre><pre><span style="font-size: 9pt;">存储过程名称后面必须加括号，哪怕该存储过程没有参数传递</span></pre><br /><h2>1.7<span style='font: 7pt/normal "Times New Roman"; font-size-adjust: none; font-stretch: normal;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BEGIN ... <br />END</span><span style="font-family: 黑体;">（复合语句）</span></h2><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><pre><strong><span style='font-family: "Courier New"; font-size: 9pt;'>[<em>begin_label</em>:] </span></strong></pre><pre><strong><span style='font-family: "Courier New"; font-size: 9pt;'>BEGIN</span></strong></pre><pre><strong><span style='font-family: "Courier New"; font-size: 9pt;'>    [<em>statement_list</em>]</span></strong></pre><pre><strong><span style='font-family: "Courier New"; font-size: 9pt;'>END </span></strong></pre><pre><strong><span style='font-family: "Courier New"; font-size: 9pt;'>[end_label]</span></strong></pre></td></tr></tbody></table><br /><p><span style="font-family: 宋体; font-size: 9pt;">存储子程序可以使用</span><span style="font-size: 9pt;">BEGIN ... END</span><span style="font-family: 宋体; font-size: 9pt;">复合语句来包含多个语句。</span></p><br /><p><span style="font-size: 9pt;">statement_list </span><span style="font-family: 宋体; font-size: 9pt;">代表一个或多个语句的列表。</span><span style="font-size: 9pt;">statement_list</span><span style="font-family: 宋体; font-size: 9pt;">之内每个语句都必须用分号（；）来结尾。</span></p><br /><p><span style="font-family: 宋体; font-size: 9pt;">复合语句可以被标记。除非</span><span style="font-size: 9pt;">begin_label</span><span style="font-family: 宋体; font-size: 9pt;">存在</span><span style="font-size: 9pt;">,</span><span style="font-family: 宋体; font-size: 9pt;">否则</span><span style="font-size: 9pt;">end_label</span><span style="font-family: 宋体; font-size: 9pt;">不能被给出</span><span style="font-size: 9pt;">,</span><span style="font-family: 宋体; font-size: 9pt;">并且如果二者都存在</span><span style="font-size: 9pt;">,</span><span style="font-family: 宋体; font-size: 9pt;">他们必须是同样的。</span></p><br /><h2>1.8<span style='font: 7pt/normal "Times New Roman"; font-size-adjust: none; font-stretch: normal;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DECLARE</span><span style="font-family: 黑体;">语句（用来声明局部变量）</span></h2><br /><p><span style="font-size: 9pt;">DECLARE</span><span style="font-family: 宋体; font-size: 9pt;">语句被用来把不同项目局域到一个子程序：局部变量</span></p><br /><p><span style="font-size: 9pt;">DECLARE</span><span style="font-family: 宋体; font-size: 9pt;">仅被用在</span><span style="font-size: 9pt;">BEGIN ... END</span><span style="font-family: 宋体; font-size: 9pt;">复合语句里，并且必须在复合语句的开头，在任何其它语句之前。</span></p><br /><h2>1.9<span style='font: 7pt/normal "Times New Roman"; font-size-adjust: none; font-stretch: normal;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 黑体;">存储程序中的变量</span></span></h2><br /><p style="text-indent: -1cm; margin-left: 49.6pt;"><span style="font-size: 7.5pt;">1.1 </span><span style="font-size: 7.5pt;">DECLARE</span><span style="font-family: 宋体; font-size: 7.5pt;">局部变量</span></p><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><pre><strong><span style='font-family: "Courier New"; font-size: 9pt;'>DECLARE var_name[,...] type [DEFAULT value]</span></strong></pre><pre><strong><span style="font-size: 9pt;">这个语句被用来声明局部变量。</span></strong></pre><pre><strong><span style="font-size: 9pt;">要给变量提供一个默认值，请包含一个</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>DEFAULT</span></strong><strong><span style="font-size: 9pt;">子句。</span></strong></pre><pre><strong><span style="font-size: 9pt;">值可以被指定为一个表达式，不需要为一个常数。</span></strong></pre><pre><strong><span style="font-size: 9pt;">如果没有</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>DEFAULT</span></strong><strong><span style="font-size: 9pt;">子句，初始值为</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>NULL</span></strong><strong><span style="font-size: 9pt;">。</span></strong></pre><pre><strong><span style="font-size: 9pt;">局部变量的作用范围在它被声明的</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>BEGIN ... END</span></strong><strong><span style="font-size: 9pt;">块内。</span></strong></pre><pre><strong><span style="font-size: 9pt;">它可以被用在嵌套的块中，除了那些用相同名字声明变量的块。</span></strong></pre></td></tr></tbody></table><br /><p style="text-indent: -1cm; margin-left: 49.6pt;"><span style="font-size: 7.5pt;">1.2 </span><span style="font-family: 宋体; font-size: 7.5pt;">变量</span><span style="font-size: 7.5pt;">SET</span><span style="font-family: 宋体; font-size: 7.5pt;">语句</span></p><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><pre><strong><span style='font-family: "Courier New"; font-size: 9pt;'>SET var_name = expr [, var_name = expr] </span></strong></pre><pre><strong><span style="font-size: 9pt;">在存储程序中的</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>SET</span></strong><strong><span style="font-size: 9pt;">语句是一般</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>SET</span></strong><strong><span style="font-size: 9pt;">语句的扩展版本。</span></strong></pre><pre><strong><span style="font-size: 9pt;">被参考变量可能是子程序内声明的变量，或者是全局服务器变量。</span></strong></pre><pre><strong><span style="font-size: 9pt;">在存储程序中的</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>SET</span></strong><strong><span style="font-size: 9pt;">语句作为预先存在的</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>SET</span></strong><strong><span style="font-size: 9pt;">语法的一部分来实现。这允许</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>SET a=x, b=y, ...</span></strong><strong><span style="font-size: 9pt;">这样的扩展语法。</span></strong></pre><pre><strong><span style="font-size: 9pt;">其中不同的变量类型（局域声明变量及全局和集体变量）可以被混合起来。</span></strong></pre><pre><strong><span style="font-size: 9pt;">这也允许把局部变量和一些只对系统变量有意义的选项合并起来。</span></strong></pre></td></tr></tbody></table><br /><p style="text-indent: -1cm; margin-left: 49.6pt;"><span style="font-size: 7.5pt;">1.3 </span><span style="font-size: 7.5pt;">SELECT ... INTO</span><span style="font-family: 宋体; font-size: 7.5pt;">语句</span></p><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><pre><strong><span style='font-family: "Courier New"; font-size: 9pt;'>SELECT col_name[,...] INTO var_name[,...] table_expr</span></strong></pre><pre><strong><span style="font-size: 9pt;">这个</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>SELECT</span></strong><strong><span style="font-size: 9pt;">语法把选定的列直接存储到变量。</span></strong></pre><pre><strong><span style="font-size: 9pt;">因此，只有单一的行可以被取回。</span></strong></pre><pre><strong><span style='font-family: "Courier New"; font-size: 9pt;'>SELECT id,data INTO x,y FROM test.t1 LIMIT 1;</span></strong></pre><pre><strong><span style="font-size: 9pt;">注意，用户变量名在</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>MySQL 5.1</span></strong><strong><span style="font-size: 9pt;">中是对大小写不敏感的。</span></strong></pre></td></tr></tbody></table><br /><p style="text-indent: 21pt;"><strong><span style="font-family: 宋体; font-size: 9pt;">重要</span></strong><span style="font-size: 9pt;">: SQL</span><span style="font-family: 宋体; font-size: 9pt;">变量名不能和列名一样。如果</span><span style="font-size: 9pt;">SELECT ... INTO</span><span style="font-family: 宋体; font-size: 9pt;">这样的</span><span style="font-size: 9pt;">SQL</span><span style="font-family: 宋体; font-size: 9pt;">语句包含一个对列的参考，并包含一个与列相同名字的局部变量，</span><span style="font-size: 9pt;">MySQL</span><span style="font-family: 宋体; font-size: 9pt;">当前把参考解释为一个变量的名字。</span></p><br /><h2>1.10<span style='font: 7pt/normal "Times New Roman"; font-size-adjust: none; font-stretch: normal;'>&nbsp;&nbsp;&nbsp;&nbsp; MySQL </span><span style="font-family: 黑体;">存储过程参数类型（in</span><span style="font-family: 黑体;">、out</span><span style="font-family: 黑体;">、inout</span><span style="font-family: 黑体;">）</span></h2><br /><p><span style="color: red; font-family: 宋体; font-size: 7.5pt;">此小节内容来自：</span></p><br /><p><span style="color: red; font-family: 宋体; font-size: 7.5pt;">参见地址：</span><span style="color: red; font-size: 7.5pt;">http://www.blogjava.net/nonels/archive/2009/04/22/233324.html</span></p><br /><p style="margin-left: 21pt;"><strong><span style="font-family: Verdana; font-size: 9pt;">MySQL </span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">存储过程参数（</span></strong><strong><span style="font-family: Verdana; font-size: 9pt;">in</span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">）</span></strong></p><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><br /><p><span style="font-family: Verdana; font-size: 9pt;">MySQL </span><span style="font-family: 宋体; font-size: 9pt;">存储过程</span><span style="font-family: Verdana; font-size: 9pt;"> &#8220;in&#8221; </span><span style="font-family: 宋体; font-size: 9pt;">参数：跟</span><span style="font-family: Verdana; font-size: 9pt;"> C </span><span style="font-family: 宋体; font-size: 9pt;">语言的函数参数的值传递类似，</span><span style="font-family: Verdana; font-size: 9pt;"> MySQL </span><span style="font-family: 宋体; font-size: 9pt;">存储过程内部可能会修改此参数，但对</span><span style="font-family: Verdana; font-size: 9pt;"> in </span><span style="font-family: 宋体; font-size: 9pt;">类型参数的修改，对调用者（</span><span style="font-family: Verdana; font-size: 9pt;">caller</span><span style="font-family: 宋体; font-size: 9pt;">）来说是不可见的（</span><span style="font-family: Verdana; font-size: 9pt;">not visible</span><span style="font-family: 宋体; font-size: 9pt;">）。</span></p></td></tr></tbody></table><br /><p style="margin-left: 21pt;"><strong><span style="font-family: Verdana; font-size: 9pt;">MySQL </span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">存储过程参数（</span></strong><strong><span style="font-family: Verdana; font-size: 9pt;">out</span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">）</span></strong></p><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><br /><p><span style="font-family: Verdana; font-size: 9pt;">MySQL </span><span style="font-family: 宋体; font-size: 9pt;">存储过程</span><span style="font-family: Verdana; font-size: 9pt;"> &#8220;out&#8221; </span><span style="font-family: 宋体; font-size: 9pt;">参数：从存储过程内部传值给调用者。在存储过程内部，该参数初始值为</span><span style="font-family: Verdana; font-size: 9pt;"> null</span><span style="font-family: 宋体; font-size: 9pt;">，无论调用者是否给存储过程参数设置值</span></p></td></tr></tbody></table><br /><p style="margin-left: 21pt;"><strong><span style="font-family: Verdana; font-size: 9pt;">MySQL </span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">存储过程参数（</span></strong><strong><span style="font-family: Verdana; font-size: 9pt;">inout</span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">）</span></strong></p><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><br /><p><span style="font-family: Verdana; font-size: 9pt;">MySQL </span><span style="font-family: 宋体; font-size: 9pt;">存储过程</span><span style="font-family: Verdana; font-size: 9pt;"> inout </span><span style="font-family: 宋体; font-size: 9pt;">参数跟</span><span style="font-family: Verdana; font-size: 9pt;"> out </span><span style="font-family: 宋体; font-size: 9pt;">类似，都可以从存储过程内部传值给调用者。不同的是：调用者还可以通过</span><span style="font-family: Verdana; font-size: 9pt;"> inout </span><span style="font-family: 宋体; font-size: 9pt;">参数传递值给存储过程。</span></p></td></tr></tbody></table><br /><p style="margin-left: 21pt;"><strong><span style="font-family: 宋体; font-size: 9pt;">总结</span></strong></p><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><br /><p><span style="font-family: 宋体; font-size: 9pt;">如果仅仅想把数据传给</span><span style="font-family: Verdana; font-size: 9pt;"> MySQL </span><span style="font-family: 宋体; font-size: 9pt;">存储过程，那就使用</span><span style="font-family: Verdana; font-size: 9pt;">&#8220;in&#8221; </span><span style="font-family: 宋体; font-size: 9pt;">类型参数；如果仅仅从</span><span style="font-family: Verdana; font-size: 9pt;"> MySQL </span><span style="font-family: 宋体; font-size: 9pt;">存储过程返回值，那就使用</span><span style="font-family: Verdana; font-size: 9pt;">&#8220;out&#8221; </span><span style="font-family: 宋体; font-size: 9pt;">类型参数；如果需要把数据传给</span><span style="font-family: Verdana; font-size: 9pt;"> MySQL </span><span style="font-family: 宋体; font-size: 9pt;">存储过程，还要经过一些计算后再传回给我们，此时，要使用</span><span style="font-family: Verdana; font-size: 9pt;">&#8220;inout&#8221; </span><span style="font-family: 宋体; font-size: 9pt;">类型参数。</span></p></td></tr></tbody></table><br /><h2>1.11<span style='font: 7pt/normal "Times New Roman"; font-size-adjust: none; font-stretch: normal;'>&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 黑体;">例子：</span></span></h2><br /><p style="text-indent: -1cm; margin-left: 49.6pt;"><strong><span style="font-size: 9pt;">1.1 </span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">创建存储过程</span></strong></p><br /><p><span style="font-family: 宋体; font-size: 9pt;">带</span><span style='font-family: "Courier New"; font-size: 9pt;'>(</span><span style="font-family: 宋体; font-size: 9pt;">输出参数</span><span style='font-family: "Courier New"; font-size: 9pt;'>)</span><span style="font-family: 宋体; font-size: 9pt;">返回值的存储过程：</span></p><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>--</span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">删除存储过程</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>DROP <br />PROCEDURE IF EXISTS proc_employee_getCount</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>--</span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">创建存储过程</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>CREATE <br />PROCEDURE proc_employee_getCount(out n int)</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>BEGIN</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp;&nbsp; SELECT <br />COUNT(*) FROM employee ;</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>END</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>--MYSQL</span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">调用存储过程</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>CALL <br />proc_employee_getCount(@n);</span></strong></p></td></tr></tbody></table><br /><p><span style="font-family: 宋体; font-size: 9pt;">带输入参数的存储过程：</span></p><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>--</span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">删除存储过程</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>DROP <br />PROCEDURE IF EXISTS proc_employee_findById;</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>--</span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">创建存储过程</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>CREATE <br />PROCEDURE proc_employee_findById(in n int)</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>BEGIN</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp;&nbsp; SELECT <br />* FROM employee where id=n;</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>END</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>--</span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">定义变量</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>SET <br />@n=1;</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>--</span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">调用存储过程</span></strong></p><br /><p><strong><span style='font-family: "Courier New"; font-size: 9pt;'>CALL <br />proc_employee_findById(@n);</span></strong></p></td></tr></tbody></table><br /><p><strong><span style="font-family: 宋体; font-size: 9pt;">操作存储过程时应注意</span></strong><strong><span style='font-family: "Courier New"; font-size: 9pt;'>:</span></strong></p><br /><p style="text-indent: -21pt; margin-left: 21pt;"><span style="color: blue; font-size: 9pt;">1. </span><span style="color: blue; font-family: 宋体; font-size: 9pt;">删除存储过程时只需要指定存储过程名即可，不带括号；</span></p><br /><p style="text-indent: -21pt; margin-left: 21pt;"><span style="color: blue; font-size: 9pt;">2. </span><span style="color: blue; font-family: 宋体; font-size: 9pt;">创建存储过程时，不管该存储过程有无参数，都需要带括号；</span></p><br /><p style="text-indent: -21pt; margin-left: 21pt;"><span style="color: blue; font-size: 9pt;">3. </span><span style="color: blue; font-family: 宋体; font-size: 9pt;">在使用</span><span style="color: blue; font-size: 9pt;">SET</span><span style="color: blue; font-family: 宋体; font-size: 9pt;">定义变量时应遵循</span><span style="color: blue; font-size: 9pt;">SET</span><span style="color: blue; font-family: 宋体; font-size: 9pt;">的语法规则；</span></p><br /><p style="text-indent: 21pt;"><span style="color: blue; font-size: 9pt;">SET @</span><span style="color: blue; font-family: 宋体; font-size: 9pt;">变量名</span><span style="color: blue; font-size: 9pt;">=</span><span style="color: blue; font-family: 宋体; font-size: 9pt;">初始值；</span></p><br /><p style="text-indent: -21pt; margin-left: 21pt;"><span style="color: blue; font-size: 9pt;">4. </span><span style="color: blue; font-family: 宋体; font-size: 9pt;">在定义存储过程参数列表时，应注意参数名与数据库中字段名区别开来，否则将出现无法预期的结果</span></p><br /><h2>1.12<span style='font: 7pt/normal "Times New Roman"; font-size-adjust: none; font-stretch: normal;'>&nbsp;&nbsp;&nbsp;&nbsp; Java</span><span style="font-family: 黑体;">代码调用存储过程(JDBC)</span></h2><br /><p><strong><span style="font-family: 宋体; font-size: 9pt;">相关</span></strong><strong><span style="font-size: 9pt;">API</span></strong><strong><span style="font-family: 宋体; font-size: 9pt;">：</span></strong><span style='color: red; font-family: "Courier New"; font-size: 9pt;'>java.sql.CallableStatement</span></p><br /><p><span style="font-family: 宋体; font-size: 9pt;">使用到</span><span style='color: red; font-family: "Courier New"; font-size: 9pt;'>java.sql.CallableStatement</span><span style="font-family: 宋体; font-size: 9pt;">接口，该接口专门用来调用存储过程</span><span style='font-family: "Courier New"; font-size: 9pt;'>;</span></p><br /><p><span style="font-family: 宋体; font-size: 9pt;">该对象的获得依赖于</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>java.sql.Connection;</span></p><br /><p><span style="color: black; font-family: 宋体; font-size: 9pt;">通过</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>Connection</span><span style="color: black; font-family: 宋体; font-size: 9pt;">实例的</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>prepareCall()</span><span style="color: black; font-family: 宋体; font-size: 9pt;">方法返回</span><span style='font-family: "Courier New"; font-size: 9pt;'>CallableStatement</span><span style="font-family: 宋体; font-size: 9pt;">对象</span></p><br /><p><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>prepareCall()</span><span style="color: black; font-family: 宋体; font-size: 9pt;">内部为一固定写法</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>{call <br /></span><span style="color: black; font-family: 宋体; font-size: 9pt;">存储过程名</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>(</span><span style="color: black; font-family: 宋体; font-size: 9pt;">参数列表</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>1,</span><span style="color: black; font-family: 宋体; font-size: 9pt;">参数列表</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>2)}</span><span style="color: black; font-family: 宋体; font-size: 9pt;">可用</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>?</span><span style="color: black; font-family: 宋体; font-size: 9pt;">占位</span></p><br /><p><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>eg:</span><span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'> <br />connection</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>.prepareCall(</span><span style='color: rgb(42, 0, 255); font-family: "Courier New"; font-size: 9pt;'>"{call <br />proc_employee(?)}"</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>);</span></p><br /><p><strong><span style="color: black; font-family: 宋体; font-size: 9pt;">存储过程中参数处理</span></strong><strong><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>:</span></strong></p><br /><p><span style="color: black; font-family: 宋体; font-size: 9pt;">输入参数</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>:</span><span style="color: black; font-family: 宋体; font-size: 9pt;">通过</span><span style='font-family: "Courier New"; font-size: 9pt;'>java.sql.CallableStatement</span><span style="font-family: 宋体; font-size: 9pt;">实例的</span><span style='font-family: "Courier New"; font-size: 9pt;'>setXXX()</span><span style="font-family: 宋体; font-size: 9pt;">方法赋值，用法等同于</span><span style="font-size: 9pt;">java.sql.PreparedStatement</span></p><br /><p><span style="color: black; font-family: 宋体; font-size: 9pt;">输出参数</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>:</span><span style="color: black; font-family: 宋体; font-size: 9pt;">通过</span><span style='font-family: "Courier New"; font-size: 9pt;'>java.sql.CallableStatement</span><span style="font-family: 宋体; font-size: 9pt;">实例的</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>registerOutParameter(</span><span style="color: black; font-family: 宋体; font-size: 9pt;">参数位置</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>, </span><span style="color: black; font-family: 宋体; font-size: 9pt;">参数类型</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>)</span><span style="font-family: 宋体; font-size: 9pt;">方法赋值</span><span style='font-family: "Courier New"; font-size: 9pt;'>,</span><span style="font-family: 宋体; font-size: 9pt;">其中参数类型主要使用</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>java.sql.Types</span><span style="color: black; font-family: 宋体; font-size: 9pt;">中定义的类型</span></p><br /><p><span style="font-size: 9pt;">Java</span><span style="font-family: 宋体; font-size: 9pt;">代码调用带<span style="color: red;">输入参数</span>的存储过程</span><span style="font-size: 9pt;"> <br />(</span><span style="font-family: 宋体; font-size: 9pt;">根据输入</span><span style="font-size: 9pt;">ID</span><span style="font-family: 宋体; font-size: 9pt;">查询雇员信息</span><span style="font-size: 9pt;">)</span></p><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><br /><p align="left"><strong><span style='color: rgb(127, 0, 85); font-family: "Courier New"; font-size: 9pt;'>public</span></strong><strong><span style='color: rgb(127, 0, 85); font-family: "Courier New"; font-size: 9pt;'>void</span></strong><span style='color: black; font-family: "Courier New"; font-size: 9pt;'> <br />executeProcedure()</span></p><br /><p align="left"><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp; <br />{</span></p><br /><p align="left"> <strong><span style='color: rgb(127, 0, 85); font-family: "Courier New"; font-size: 9pt;'>try</span></strong><span style='color: black; font-family: "Courier New"; font-size: 9pt;'> {</span></p><br /><p align="left"> <span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>/**</span></p><br /><p align="left"> <span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>*</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>callableStatement</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>java.sql.CallableStatement</span></p><br /><p align="left"> <span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>*</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>connection</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>java.sql.Connection</span></p><br /><p align="left"> <span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>*</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>jdbc</span><span style="color: rgb(63, 95, 191); font-family: 宋体; font-size: 9pt;">调用存储过程原型</span></p><br /><p align="left"> <span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>*</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>{call</span><span style="color: rgb(63, 95, 191); font-family: 宋体; font-size: 9pt;">存储过程名</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>(</span><span style="color: rgb(63, 95, 191); font-family: 宋体; font-size: 9pt;">参数列表</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>1,</span><span style="color: rgb(63, 95, 191); font-family: 宋体; font-size: 9pt;">参数列表</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>2)}</span><span style="color: rgb(63, 95, 191); font-family: 宋体; font-size: 9pt;">可用</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>?</span><span style="color: rgb(63, 95, 191); font-family: 宋体; font-size: 9pt;">代替</span></p><br /><p align="left"> <span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>*/</span></p><br /><p align="left"> <span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>callableStatement</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>=</span><span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>connection</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>.prepareCall(</span><span style='color: rgb(42, 0, 255); font-family: "Courier New"; font-size: 9pt;'>"{call <br />proc_employee_findById(?)}"</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>);</span></p><br /><p align="left"> <span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>callableStatement</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>.setInt(1, 1); <br /></span><span style='color: rgb(63, 127, 95); font-family: "Courier New"; font-size: 9pt;'>//</span><span style="color: rgb(63, 127, 95); font-family: 宋体; font-size: 9pt;">设置输入参数</span></p><br /><p align="left"> <span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>resultSet</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>=</span><span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>callableStatement</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>.executeQuery();</span><span style='color: rgb(63, 127, 95); font-family: "Courier New"; font-size: 9pt;'>//</span><span style="color: rgb(63, 127, 95); font-family: 宋体; font-size: 9pt;">执行存储过程</span></p><br /><p align="left"> <strong><span style='color: rgb(127, 0, 85); font-family: "Courier New"; font-size: 9pt;'>if</span></strong><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>(</span><span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>resultSet</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>.next())</span></p><br /><p align="left"><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />{</span></p><br /><p align="left"><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />System.</span><em><span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>out</span></em><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>.println(</span><span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>resultSet</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>.getInt(1)+</span><span style='color: rgb(42, 0, 255); font-family: "Courier New"; font-size: 9pt;'>""t"</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>+</span><span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>resultSet</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>.getString(2));</span></p><br /><p align="left"><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />}</span></p><br /><p align="left"><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /></span><strong><span style='color: rgb(127, 0, 85); font-family: "Courier New"; font-size: 9pt;'>catch</span></strong><span style='color: black; font-family: "Courier New"; font-size: 9pt;'> (SQLException <br />e) {</span></p><br /><p align="left"><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />e.printStackTrace();</span></p><br /><p align="left"><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />}</span></p><br /><p><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp; <br />}</span> </p></td></tr></tbody></table><br /><p><span style="font-size: 9pt;">Java</span><span style="font-family: 宋体; font-size: 9pt;">代码调用带<span style="color: red;">输出参数</span>的存储过程</span><span style="font-size: 9pt;"> <br />(</span><span style="font-family: 宋体; font-size: 9pt;">返回数据库中的记录数</span><span style="font-size: 9pt;">)</span></p><br /><table style="border: currentColor; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td style="padding: 0cm 5.4pt; border: 1pt solid windowtext; width: 426.1pt;" valign="top" width="568"><br /><p align="left"><strong><span style='color: rgb(127, 0, 85); font-family: "Courier New"; font-size: 9pt;'>public </span></strong><strong><span style='color: rgb(127, 0, 85); font-family: "Courier New"; font-size: 9pt;'>void</span></strong><span style='color: black; font-family: "Courier New"; font-size: 9pt;'> <br />executeProcedure()</span></p><br /><p align="left"><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp; <br />{</span></p><br /><p align="left"> <strong><span style='color: rgb(127, 0, 85); font-family: "Courier New"; font-size: 9pt;'>try</span></strong><span style='color: black; font-family: "Courier New"; font-size: 9pt;'> {</span></p><br /><p align="left"> <span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>/**</span></p><br /><p align="left"> <span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>*</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>callableStatement</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>java.sql.CallableStatement</span></p><br /><p align="left"> <span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>*</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>connection</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>java.sql.Connection</span></p><br /><p align="left"> <span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>*</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>jdbc</span><span style="color: rgb(63, 95, 191); font-family: 宋体; font-size: 9pt;">调用存储过程原型</span></p><br /><p align="left"> <span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>*</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>{call</span><span style="color: rgb(63, 95, 191); font-family: 宋体; font-size: 9pt;">存储过程名</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>(</span><span style="color: rgb(63, 95, 191); font-family: 宋体; font-size: 9pt;">参数列表</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>1,</span><span style="color: rgb(63, 95, 191); font-family: 宋体; font-size: 9pt;">参数列表</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>2)}</span><span style="color: rgb(63, 95, 191); font-family: 宋体; font-size: 9pt;">可用</span><span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>?</span><span style="color: rgb(63, 95, 191); font-family: 宋体; font-size: 9pt;">代替</span></p><br /><p align="left"> <span style='color: rgb(63, 95, 191); font-family: "Courier New"; font-size: 9pt;'>*/</span></p><br /><p align="left"> <span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>callableStatement</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>=</span><span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>connection</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>.prepareCall(</span><span style='color: rgb(42, 0, 255); font-family: "Courier New"; font-size: 9pt;'>"{call <br />proc_employee_getCount(?)}"</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>);</span></p><br /><p align="left"> <span style='color: rgb(63, 127, 95); font-family: "Courier New"; font-size: 9pt;'>//</span><span style="color: rgb(63, 127, 95); font-family: 宋体; font-size: 9pt;">设置输出参数</span></p><br /><p align="left"> <span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>callableStatement</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>.registerOutParameter(1, <br />Types.</span><em><span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>INTEGER</span></em><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>);</span></p><br /><p align="left"> <span style='color: rgb(63, 127, 95); font-family: "Courier New"; font-size: 9pt;'>//</span><span style="color: rgb(63, 127, 95); font-family: 宋体; font-size: 9pt;">执行存储过程</span></p><br /><p align="left"> <span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>resultSet</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>=</span><span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>callableStatement</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>.executeQuery();</span></p><br /><p align="left"> <strong><span style='color: rgb(127, 0, 85); font-family: "Courier New"; font-size: 9pt;'>if</span></strong><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>(</span><span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>resultSet</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>.next())</span></p><br /><p align="left"><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />{</span></p><br /><p align="left"><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />System.</span><em><span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>out</span></em><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>.println(</span><span style='color: rgb(0, 0, 192); font-family: "Courier New"; font-size: 9pt;'>resultSet</span><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>.getInt(1));</span></p><br /><p align="left"><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />}</span></p><br /><p align="left"><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /></span><strong><span style='color: rgb(127, 0, 85); font-family: "Courier New"; font-size: 9pt;'>catch</span></strong><span style='color: black; font-family: "Courier New"; font-size: 9pt;'> (SQLException <br />e) {</span></p><br /><p align="left"><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />e.printStackTrace();</span></p><br /><p align="left"><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />}</span></p><br /><p align="left"><span style='color: black; font-family: "Courier New"; font-size: 9pt;'>&nbsp;&nbsp;&nbsp; <br />}</span></p></td></tr></tbody></table><img src ="http://www.blogjava.net/lyjjq/aggbug/372618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2012-03-24 18:32 <a href="http://www.blogjava.net/lyjjq/articles/372618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>删除部分重复字段的记录</title><link>http://www.blogjava.net/lyjjq/articles/357519.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Mon, 29 Aug 2011 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/357519.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/357519.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/357519.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/357519.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/357519.html</trackback:ping><description><![CDATA[<p>创建临时表<br />create table tmp_dur as <br />select a.shop_id,a.city_id,a.product_id,max(a.id) as mid from 51fanli_tuandh_item as a group by a.shop_id,a.city_id,a.product_id having count(*) &gt; 1</p>
<p>查询联合表<br />SELECT a.shop_id,a.city_id,a.product_id from tmp_dur a , 51fanli_tuandh_item b where a.shop_id = b.shop_id and a.city_id = b.city_id and a.product_id = b.product_id</p>
<p>删除重复项目<br />delete from 51fanli_tuandh_item<br />where 51fanli_tuandh_item.id != (<br />SELECT b.mid from tmp_dur b<br />where 51fanli_tuandh_item.city_id = b.city_id and 51fanli_tuandh_item.shop_id = b.shop_id and 51fanli_tuandh_item.product_id = b.product_id<br />);</p>
<p>删除临时表<br />drop tmp_dur;</p>
<p>添加唯一<br />ALTER TABLE&nbsp; `51fanli_tuandh_item` ADD UNIQUE (<br />`shop_id` ,<br />`city_id` ,<br />`product_id`<br />);</p> <img src ="http://www.blogjava.net/lyjjq/aggbug/357519.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2011-08-29 17:32 <a href="http://www.blogjava.net/lyjjq/articles/357519.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>yum 安装mysql</title><link>http://www.blogjava.net/lyjjq/articles/350475.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Wed, 18 May 2011 06:36:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/350475.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/350475.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/350475.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/350475.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/350475.html</trackback:ping><description><![CDATA[<pre class="prettyprint" jquery1305700542456="9"><code><span class="pln">yum install mysql<br />yum install mysql</span><span class="pun">-</span><span class="pln">server<br />yum install mysql</span><span class="pun">-</span><span class="pln">devel<br />chgrp </span><span class="pun">-</span><span class="pln">R mysql </span><span class="pun">/</span><span class="kwd">var</span><span class="pun">/</span><span class="pln">lib</span><span class="pun">/</span><span class="pln">mysql<br />chmod </span><span class="pun">-</span><span class="pln">R </span><span class="lit">770</span><span class="pln"> </span><span class="pun">/</span><span class="kwd">var</span><span class="pun">/</span><span class="pln">lib</span><span class="pun">/</span><span class="pln">mysql<br />service mysqld start <br />mysql<br />SET PASSWORD FOR </span><span class="str">'root'</span><span class="lit">@</span><span class="str">'localhost'</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> PASSWORD</span><span class="pun">(</span><span class="str">'secret_password'</span><span class="pun">);</span><span class="pln"><br /></span></code></pre>
<p>收工！</p>
<p><strong>更新</strong></p>
<p>如要其他机器能访问，在<code>mysql.user</code>中添加一个<code>Host</code>为<code>'%'</code>的<strong>user</strong>,然后<code>flush priviledges;</code>，最后防火墙加一句类似这样的语句即可(开通<code>3306</code>端口)：</p><pre class="prettyprint" jquery1305700542456="10"><code><span class="pun">-</span><span class="pln">A RH</span><span class="pun">-</span><span class="typ">Firewall</span><span class="pun">-</span><span class="lit">1</span><span class="pun">-</span><span class="pln">INPUT </span><span class="pun">-</span><span class="pln">m state </span><span class="pun">--</span><span class="pln">state NEW </span><span class="pun">-</span><span class="pln">m tcp </span><span class="pun">-</span><span class="pln">p tcp </span><span class="pun">--</span><span class="pln">dport </span><span class="lit">3306</span><span class="pln"> </span><span class="pun">-</span><span class="pln">j ACCEPT<br /></span></code></pre>
<p>如果要<strong>reboot</strong>自启动：</p><pre class="prettyprint" jquery1305700542456="11"><code><span class="pln">chkconfig </span><span class="pun">--</span><span class="pln">levels </span><span class="lit">345</span><span class="pln"> mysqld on<br /></span></code></pre><img src ="http://www.blogjava.net/lyjjq/aggbug/350475.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2011-05-18 14:36 <a href="http://www.blogjava.net/lyjjq/articles/350475.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql忘记root密码拯救方法(flush privileges)</title><link>http://www.blogjava.net/lyjjq/articles/346797.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Wed, 23 Mar 2011 00:34:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/346797.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/346797.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/346797.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/346797.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/346797.html</trackback:ping><description><![CDATA[关键字: mysql，root，密码，忘记
<div class="blog_content">
<p>1、结束当前正在运行的mysql进程。<br />
# /etc/init.d/mysql stop<br />
<br />
2、用mysql安全模式运行并跳过权限验证。<br />
# /usr/bin/mysqld_safe --skip-grant-tables<br />
<br />
3、以root身份登录mysql。<br />
# mysql -u root<br />
<br />
4、修改root用户口令。<br />
mysql&gt; use mysql;<br />
Reading table information for completion of table and column names<br />
You can turn off this feature to get a quicker startup with -A<br />
<br />
Database changed<br />
mysql&gt; update user set Password = PASSWORD('root') where User ='root';<br />
Query OK, 3 rows affected (0.00 sec)<br />
Rows matched: 3&nbsp; Changed: 3&nbsp; Warnings: 0<br />
<br />
mysql&gt; exit<br />
<br />
5、结束mysql安全模式，用正常模式运行mysql。<br />
# /etc/init.d/mysql restart<br />
<br />
6、试试你新修改的口令，嘿嘿&#8230;&#8230;屡试屡爽！<br />
&nbsp;<br />
mysql&gt; update mysql.user set password=PASSWORD（'新密码'） where User='root'；&nbsp;<br />
<br />
mysql&gt; flush privileges；<br />
mysql&gt; quit<br />
<br />
<br />
<br />
</p>
</div>
 <img src ="http://www.blogjava.net/lyjjq/aggbug/346797.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2011-03-23 08:34 <a href="http://www.blogjava.net/lyjjq/articles/346797.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql_install_db相关介绍</title><link>http://www.blogjava.net/lyjjq/articles/345778.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Sat, 05 Mar 2011 06:22:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/345778.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/345778.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/345778.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/345778.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/345778.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em">mysql_install_db 脚本的目的是生成新的MySQL授权表。它不覆盖已有的MySQL授权表，并且它不影响任何其它数据。</p>
<p style="text-indent: 2em">如果你想要重新创建授权表，首先停止mysqld服务器（如果它正运行）。然后重新命名数据目录下的MySQL目录并保存，然后运行mysql_install_db。例如：</p>
<p style="text-indent: 2em">shell&gt; mv mysql-da<wbr>ta-directory/mysql mysql-da<wbr>ta-directory/mysql-old</p>
<p style="text-indent: 2em">shell&gt; mysql_install_db --user=mysql</p>
<p style="text-indent: 2em">本节列出了运行mysql_install_db时你可能遇到的问题：</p>
<p style="text-indent: 2em">&#183;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql_install_db fails to install the grant tables </p>
<p style="text-indent: 2em">你会发现mysql_install_db不能安装 授权表，显示下面的消息后终止：</p>
<p style="text-indent: 2em">Starting mysqld daemon with databases from XXXXXX</p>
<p style="text-indent: 2em">mysqld ended</p>
<p style="text-indent: 2em">在这种情况下，你应该很小心地检验日志文件！日志文件应该位于目录<tt>&#8220;XXXXXX&#8221;</tt>，用错误消息命名，并且应该指出为什么mysqld没启动。如果你不理解发生的事情，邮寄一份错误报告，包含日志文件！</p>
<p style="text-indent: 2em">&#183;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 已经有一个amysqld进程在运行</p>
<p style="text-indent: 2em">表示服务器在运行，这种情况下可能已经创建了授权表。如果如此，则不再需要运行mysql_install_db，因为只需要运行一次(当你首次安装MySQL时)。</p>
<p style="text-indent: 2em">&#183;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当一个服务器正运行时，安装第二个服务器不工作</p>
<p style="text-indent: 2em">这只有在当你已经有已存在的MySQL安装但是想要把新安装放在一个不同的地方时才会发生。例如，你可能已经有了一个产品安装，但为了测试想要同时运行2个安装。通常当你试着运行第二个服务器时，发生的问题是它试图和第一个使用同样的套接字和端口。在这种情况下，你将遇到错误消息：</p>
<p style="text-indent: 2em">Can't start server: Bind on TCP/IP port:</p>
<p style="text-indent: 2em">Address already in use</p>
<p style="text-indent: 2em">Can't start server: Bind on unix socket...</p>
<p style="text-indent: 2em">&#183;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 你没有<tt>&#8220; /tmp &#8221;</tt>的写权限</p>
<p style="text-indent: 2em">如果你没有写权限在默认位置(在<tt>&#8220;/tmp&#8221;</tt>里)创建一个Unix套接字文件，或没有<tt>在&#8220;/tmp&#8221;</tt>创建临时文件的许可，在运行mysql_install_db或mysqld服务器时，你将遇到一个错误。</p>
<p style="text-indent: 2em">你可以在开始mysql_install_db或mysqld之前执行以下命令指定一个不同的Unix套接字文件位置和临时目录：</p>
<p style="text-indent: 2em">shell&gt; TMPDIR=/some_tmp_dir/</p>
<p style="text-indent: 2em">shell&gt; MYSQL_UNIX_PORT=/some_tmp_dir/mysql.sock</p>
<p style="text-indent: 2em">shell&gt; export TMPDIR MYSQL_UNIX_PORT</p>
<p style="text-indent: 2em">some_tmp_dir应该是你有写许可的某个目录的全路径。</p>
<p style="text-indent: 2em">然后，你应当能够用这些命令运行mysql_install_db并启动服务器：</p>
<p style="text-indent: 2em">shell&gt; bin/mysql_install_db --user=mysql</p>
<p style="text-indent: 2em">shell&gt; bin/mysqld_safe --user=mysql &amp;</p>
<p style="text-indent: 2em">如果mysql_install_db位于scripts目录下，首先修改命令scripts/mysql_install_db。</p>
<img src ="http://www.blogjava.net/lyjjq/aggbug/345778.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2011-03-05 14:22 <a href="http://www.blogjava.net/lyjjq/articles/345778.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql数据库优化和状态查看，典型语句</title><link>http://www.blogjava.net/lyjjq/articles/344887.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Wed, 23 Feb 2011 01:20:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/344887.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/344887.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/344887.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/344887.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/344887.html</trackback:ping><description><![CDATA[<p>1:显示当前进程列表<br />
<span><span>show&nbsp;full&nbsp;processlist&nbsp;;</span></span></p>
<img src ="http://www.blogjava.net/lyjjq/aggbug/344887.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2011-02-23 09:20 <a href="http://www.blogjava.net/lyjjq/articles/344887.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Client does not support 解决ucenter安装时的错误</title><link>http://www.blogjava.net/lyjjq/articles/330336.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Mon, 30 Aug 2010 13:47:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/330336.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/330336.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/330336.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/330336.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/330336.html</trackback:ping><description><![CDATA[<br />
UPDATE mysql.user SET PASSWORD = OLD_PASSWORD('ucenter') WHERE HOST = 'localhost' AND USER = 'ucenter'; <br />
<br />
FLUSH PRIVILEGES;
<img src ="http://www.blogjava.net/lyjjq/aggbug/330336.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2010-08-30 21:47 <a href="http://www.blogjava.net/lyjjq/articles/330336.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySql数据库彻底删除</title><link>http://www.blogjava.net/lyjjq/articles/301535.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Sat, 07 Nov 2009 04:33:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/301535.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/301535.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/301535.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/301535.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/301535.html</trackback:ping><description><![CDATA[<p>如何正确卸载MySQL，主要是删除注册表中的垃圾信息</p>
<p>卸载MySQL数据库：<br />
先停掉WINDOWS里的MySQL服务；<br />
再到控制面板里的增加删除程序内进行删除，这并没有完整地删除了MySQL；<br />
接着在注册表里清除MySQL服务：<br />
1、HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL 目录删除<br />
2、HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL 目录删除<br />
3、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL 目录删除<br />
注册表中的ControlSet001,ControlSet002,不一定是001和002,可能是ControlSet005,006之类,删除的时候,都删除就可以<br />
检查C:\WINDOWS目录下是否有my.ini文件,将其删除(C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 6.0\)<br />
手工删除MySQL的安装目录</p>
<img src ="http://www.blogjava.net/lyjjq/aggbug/301535.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2009-11-07 12:33 <a href="http://www.blogjava.net/lyjjq/articles/301535.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL GUI 工具汇总</title><link>http://www.blogjava.net/lyjjq/articles/297831.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Sun, 11 Oct 2009 16:15:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/297831.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/297831.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/297831.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/297831.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/297831.html</trackback:ping><description><![CDATA[<div class="articleContent" id="articleBody">
<p>前言</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> MySQL GUI工具很多，常用的如Navicat，PHPMyadmin，SQLyog，MySQL-front，MySQL GUI Tools等。本文就常用的这几款工具的功能做一个详细介绍。</p>
<p><br />
MySQL GUI Tools</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> MySQL官方提供的，免费使用！一个可视化界面的MySQL数据库管理控制台，提供了四个非常好用的图形化应用程序，方便数据库管理和数据查询。这些图形化管理工具可以大大提高数据库管理、备份、迁移和查询效率，即使没有丰富的SQL语言基础的用户也可以应用自如。它们分别是：</p>
<p><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● MySQL Migration Toolkit：数据库迁移</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● MySQL Administrator：MySQL管理器</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● MySQL Query Browser：用于数据查询的图形化客户端</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● MySQL Workbench：DB Design工具</p>
<p><br />
MySQL Query Browser</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> MySQL查询浏览器是为MySQL数据库服务器创造，执行和优化SQL查询的最简单的可视化工具。 MySQL查询浏览器提供一套完整的拖放工具，可视化地建立，分析和管理您的查询。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 查询工具栏轻松地创建和执行查询和浏览查询历史，可以保存查询，打开查询文件 *.qbquery</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 脚本编辑器给你控制手动创建或编辑SQL语句</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 查询结果窗口，让您也可以轻易地比较多个查询</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 对象浏览器让您使用Web浏览器一样的界面管理您的数据库，书签和历史</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 数据库Explorer，您可以选择的表和字段查询，以及创建和删除表</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 表编辑器可让您轻松地创建，修改和删除表</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 内置帮助即时帮助你获得搜选的对象，参数，和职能，可以查看mysql syntax语句句法，函数，参数</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 直观的易于使用的界面</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> MySQL查询浏览器提供了一个易于使用的web浏览器一样的界面，让您即时访问所有查询浏览器的功能。主要的查询窗口，是完全自定义让您可以查看或隐藏个人工具栏。此外，导航按钮，让您浏览您的查询历史，让您可以回顾及重新执行以前的查询。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 使用结果窗口轻松管理多个查询</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 比较多个查询通过查看制表符分隔，或是纵向或是横向联合的显示在结果窗口。此外，解释按钮，可以用来获得解释，输出为当前查询。比较按钮允许您快速比较两个查询的结果，让您确定在何处行已插入，更新或删除。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 轻松地创建，编辑和调试SQL语句</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 该脚本编辑器提供了一个稳健的界面，创建，编辑，和调试的大型涉及多个SQL语句的SQL脚本。脚本区域的特点是编号和语法突出。另外，脚本调试按钮，使您可以设置断点和控制执行该语句和脚本。</p>
<p><br />
MySQL administrator</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> mysql administrator 是一个功能强大的可视化管理工具，让使用者更容易管理和监测你的MySQL环境，并对数据库取得更好的能见度。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> MySQL Administrator主要功能介绍：</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 启动/停止mysql服务</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 用户连接次数，线程 。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 健康状况查看：连接健康实时曲线图查看(连接使用率，流量，sql查询数), 内存健康查看(Query Cache Hitrate,Key Efficiency), 状态变量查看(普通，性能，网络，执行的命令，混合，新变量) , 系统变量查看(普通，连接，SQL,内存，表类型，新变量)</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 启动变量编辑</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 服务器，服务器实例，客户端信息查看</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 备份与恢复整个数据库或1至多个表，定时备份.</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 目录(catalog): 选定数据库创建，编辑表(索引，外键，列，存储引擎，字符集，密码，自动增长，最大行， 最小行等)，维护表(优化，检查，修理)，查看选定数据库的所有索引，创建，删除编辑选定数据库 的视图，存储过程。</p>
<p><br />
Migration Toolkit</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 可以从MS SQL，Oracle等数据库移植复制数据库到Mysql</p>
<p><br />
Mysql workbench</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 添加EER 图表(Extended Entity-Relationship的缩写)</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 使用默认Schema，创建新表,新的视图等对象</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 可以导入SQL脚本</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 缺点：</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> mysql query browser总是做了几个查询之后就使用内存太多</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 手动安裝 MySQL GUI Tools 5.0时，将目录名称取名为中文，或是将它放置在桌面上执行 MySQL Query Browser，在中文系统会产生此问题：..... MySQL GUI Tools 5.0\XML\mysqlqb_functions.xml (error</p>
<p><br />
SQLyog企业版</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 程序本身非常短小精悍！</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 使用MySQL C APIs程序接口直接连接。支持HTTP and SSH和SSL加密连接</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 登录之后，界面就是很值得注意。SQLyog主窗口综合了大多数SQL Server7.0分析器和企业管理的特性于一体。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> MySOL服务器上所有的数据库都显示在一个树型控件上。你只能访问你在登录时授权的那个数据库。如果你点开代表授权给你的那个数据库的树型结构，你就可以看到一系列代表表格的节点。点开表格节点后，你就可以看到一系列显示字段名的节点和另一个代表索引的节点集合。在右下方的面板上，有四个标签页，即：结果（Result）、消息（Message）、对象（Object）和历史（History）。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 除了常见的导入导出，结构与数据同步外,特色功能主要有：</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● Query Builder支持拖拽勾选，方便直观快捷的创建SQL查询语句，易于控制。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 快速执行多重查询并能够返回每页超过1000条的记录集，而这种操作是直接生成在内存中的</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● SQLyog Migration Toolkit：SQLyog提供的数据迁移工具包，从任何ODBC兼容的数据源到MySQL，简化了数据的传输</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 短信通知服务。调度备份短信通知。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 对数据表的诊断分析和优化。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 可以复选表数据行，进行批删除</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● Job管理：管理数据库同步，短信通知，调度备份等job</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 另外，有些功能还是很方便的：</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 插入SQL语句模版，提供常用的一些SQL命令模版</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 添加SQL语句到收藏夹</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 察看操作的历史记录</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 对键盘支持很友好。对爱用键盘操作的朋友是很好的帮助</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 对象列表察看，一目了然</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 缺点：</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 如果你在Win32 Dependency Walker下运行程序的.exe文件，你会发现它引用了COMDLG32.dll文件，而COMDLG32.dll又轮流引用AppHelp。实事上，CommDlg调用AppHelp，而当AppHelp没有请求函数时，CommDlg这么做根本就是浪费资源。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 还有相比Navicat就是界面功能菜单图标小了些，不那么方便。导入导出格式少了些，如导入仅支持csv.导出也仅支持csv,html,xml,SQL，Excel xml等5种格式。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 对中文支持不好</p>
<p><br />
SQLyog厂商：Webyog软件公司</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 是一家私人控股公司，MySQL网络的金牌认证合作伙伴，成立于2001年，总部在印度，提供同类最佳的数据管理工具管理流行的开放源代码数据库。</p>
<p><br />
MySQL-Front</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> MySQL-Front是一款小巧的管理Mysql的应用程序，其主要特性包括多文档界面、语法突出、拖拽方式的数据库和表格、可编辑/可增加/删除的域、可编辑/可插入/删除的记录、可显示的成员、可执行的SQL脚本并提供与外程序接口、保存数据到CSV文件等。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 由于2006年11月23日MySQL-Front曾经宣布停止一段时间开发，后来官网改名：<a href="http://www.sql-front.com/">http://www.sql-front.com</a></p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 最新版本4.2，下载后可以试用30天。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 特色功能介绍：</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 高程度的相容性</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 内部密集的使用Windows API ，以确保以兼容未来的Windows版本</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 支持MySQL数据库开始版本3.23</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 直接访问数据库，而不使用的MySQL的DLL ，以减少安装和连接问题</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 禁止外部HTTP隧道访问数据库</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 拖曳和复制，粘贴支持</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 有效地使用，可通过键盘或鼠标</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 非常快，高效率及多语句支持</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 语言设置（多于30种语言提供， Unicode的支持）</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 支持BLOB 数据类型</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 缺点:</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 客户端使用SET NAMES设置字符集，如中文显示set names gbk；SQL Editor不能用于处理mysql数据库与mysql-front之间的编码</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 导入SQL文件的时候出现错误：SQL文件是可读的不能写或数据库版本问题。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 客户端不能处理"创建存储过程/创建函数/创建视图/创建事件"，因为客户端要使用Delimiter语句，MySQL-Front不能实现。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 日期仅支持从02/Jan/0001开始以后的.</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 无符号的Bigint值仅支持63位(不能大于9223372036854775807)</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 每个表仅支持2147483647条记录。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 支持BLOB 数据类型</p>
<p><br />
PHPMyAdmin</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> PHPMyAdmin是一个专门用于在线管理 My SQL 4.X 和 5.X 版本的My SQL数据库的软件，软件采用PHP编写，目前最高版本是2.7.0-pl1</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 该工具是B/S结构的，基于Web跨平台的管理程序，并且支持简体中文。可以在官方网站免费下载。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 下载后，把它释放到web服务器的根目录下，取个名字，比如就叫phpMyAdmin，然后在浏览器的地址栏输入:http://X.X.X.X/phpMyAdmin/index.php 就可以了。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 如果是phpMyAdmin 2.8.0.2以上版本的，这样使用会报错，因为默认没有这个软件需要的配置文件config.default.php,在2.6.X版本下都有这个文件，只是口令不对。对于2.6.X版本的，可以直接用文本编辑器打开这个文件，把其中第一个$cfg中内容修改成自己的用户名及密码就可以了：</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> $cfg['Servers'][$i]['auth_type'] = 'config'; // Authentication method (config, http or cookie based)?</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> $cfg['Servers'][$i]['user'] = 'root'; // MySQL user</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> $cfg['Servers'][$i]['password'] = '自己的密码';</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 不设置密码的话，系统会提示：</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Access denied for user <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#114;&#111;&#111;&#116;&#39;&#64;&#39;&#108;&#111;&#99;&#97;&#108;&#104;&#111;&#115;&#116;&#39;">'root'@'localhost'</a> (using password: NO)</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 如果是2.8.0.2版本的，程序会提示请运行scripts/setup.php进行配置以生成config.inc.php文件。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> PHPMyAdmin的优势:</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 它在导出和导入数据是直接生成/读取SQL语句，因此可以在导入之前修改SQL文本达到修改数据的目的。而MySQL程序的导出的则是专用格式和base64编码的数据，无法直接修改。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● B/S访问方式</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 缺点：必须安装在你的Web服务器中，所以如果没有合适的访问权限，其它用户有可能损害到你的SQL数据。</p>
<p><br />
Navicat</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Navicat for MySQL是一个强大的MySQL数据库服务器管理和开发工具。它可以与任何3.21或以上版本的MySQL一起工作，并支持大部分的MySQL最新功能，包括触发器、存储过程、函数、事件、视图、管理用户，等等。它不仅对专业开发人员来说是非常尖端的技术，而且对于新手来说也易学易用。其精心设计的图形用户界面（GUI），Navicat for MySQL可以让你用一种安全简便的方式快速并容易地创建，组织，访问和共享信息。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Navicat MySQL在三种平台上是可用的——微软Windows、Mac OS X 和Linux操作系统。它可以使用户连接到本地/远程服务器，提供了几种实用工具，例如数据结构同步、导入/导出、备份和报告，使维护数据的过程很容易。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 除了常规的管理数据库对象外，Navicat功能主要有：</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 多种格式的导入导出能力,使维护数据的过程很容易。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 批量的工作调度处理,有力减轻了数据库管理员的负担。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 快速地实现广域网远程连接,更加安全简便。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 智能地构建复杂的SQL查询语句，提高开发效率。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Navicat优势：</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 下载次数最多的MySQL GUI工具。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 支持Mysql数据库新对象如事件。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 导入导出支持17种格式（slk,dif,wk1,wq1,rtf,mdb,sav,ldif等特殊的格式）。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 报表设计,打印及定制</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 结构同步，数据同步速度快。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 调度，创建Batch Job,设置任务调度. 创建一个设定的计划批处理工作,以计划执行一个或多个定期的，指定开始及结束的日期及时间。批处理可以创建的对象包括查询，报表打印，备份，数据传送，数据同步，导入和导出。发送计划工作的电子邮件通知，产生通知电子邮件给你指定的收件人。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 安装下载非常方便,速度很快。</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 功能缺点：</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 没有ER数据库模型工具。(可能不久就有了)</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ● 数据同步与结构同步时注意保持数据库版本的一致性。</p>
<p><br />
结论</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 市场上对MySQL GUI的评论也各有纷争，作者观点：没有绝对的好坏，只有适合与不适合。</p>
</div>
<img src ="http://www.blogjava.net/lyjjq/aggbug/297831.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2009-10-12 00:15 <a href="http://www.blogjava.net/lyjjq/articles/297831.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>liunx mysql</title><link>http://www.blogjava.net/lyjjq/articles/68553.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Fri, 08 Sep 2006 08:59:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/68553.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/68553.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/68553.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/68553.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/68553.html</trackback:ping><description><![CDATA[<h4 style="margin-bottom: 0px" id="subjcns!246A80F1DC4B57DD!177" class="TextColor1">liunx mysql</h4>
<div id="msgcns!246A80F1DC4B57DD!177">
<p>1.linux 休修改密码:passwd</p>
<p>2.linux 添加用户 useradd</p>
<p>3:mysql 的安装目录在/usr/local/mysql下</p>
<p>4.修改mysql用户的root权限:/usr/bin/mysqladmin -u root password 'new-password'</p>
<p>5.启动MySQL，注意使用用户为mysql： <br />
&nbsp;&nbsp; /usr/local/mysql/bin/mysqld_safe --user=mysql </p>
<p>6.关闭数据库:</p>
<p>&nbsp;mysqladmin -uroot -pxxxx -hxxxxxxxxx&nbsp; shutdown<br />
</p>
<p>7.创建数据库</p>
<p>&nbsp;crate database&nbsp; sms</p>
<p>8.创建用户并且付所有权限</p>
<p>GRANT ALL PRIVILEGES ON *.* TO <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#114;&#111;&#111;&#116;&#64;&#37;"><font color="#0066a7">root</font><font color="#000000">@%</font></a> IDENTIFIED BY 'jiangjianqiang' WITH GRANT OPTION; </p>
<p>9.创建用户,后付所有权限</p>
<p><font size="2">insert into user(host,user,password) values('localhost','test',PASSWORD('t'))；<br />
grant all privileges on usertest.* to test;<br />
flush privileges</font> </p>
<br />
如同楼上朋友说的确定是否设了权限，如果设了还不行的话,最好先彻底卸载mysql<br />
1.rpm -qa|grep mysql<br />
mysql......<br />
<br />
2.rpm -e mysql....<br />
<br />
3.重装,参见：sd44兄的：<a href="http://www.linuxsir.com/bbs/showthread.php?s=&amp;threadid=2085" target="_blank">http://www.linuxsir.com/bbs/showthre...&amp;threadid=2085</a><br />
<br />
4. 初始化 <br />
安装结束后，初始化数据库 <br />
<br />
scripts/mysql_install_db <br />
然后是设置权限<br />
chown -R root /usr/local/mysql <br />
chown -R mysql /usr/local/mysql/var <br />
chgrp -R mysql /usr/local/mysql <br />
(假定mysql装在/usr/local/mysql目录下，运行完scripts/mysql_install_db ，会产生/usr/local/mysql/var 目录，看有没有/usr/local/mysql/var 目录，这步很重要，我前两次装因没彻底卸载mysql<br />
结果就运行完scripts/mysql_install_db 也找不到/usr/local/mysql/var 目录，<br />
所以chown -R mysql /usr/local/mysql/var 就没能运行，结果就出现楼主的问题，不知你是不是这种情况，参考一下）<br />
<br />
5. 为 root 设置密码 <br />
<br />
/usr/local/mysql/bin/mysqladmin -u root -p password 123456 <br />
回车后系统会提示你输入当前密码，应该是像下面这样： <br />
Enter password: <br />
因为此时还没有密码，所以直接回车即可，这时没有任何提示返回提示符状态，而密码已经设置完成。<br />
<br />
6) 调试 自启动<br />
<br />
系统启动时加载mysql <br />
cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysql <br />
cd /etc/rc.d/rc3.d <br />
ln -s ../init.d/mysql S70mysql<br />
<br />
</div>
<img src ="http://www.blogjava.net/lyjjq/aggbug/68553.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2006-09-08 16:59 <a href="http://www.blogjava.net/lyjjq/articles/68553.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在linux自带mysql基础上再装新的mysql</title><link>http://www.blogjava.net/lyjjq/articles/44649.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Fri, 05 May 2006 08:22:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/44649.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/44649.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/44649.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/44649.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/44649.html</trackback:ping><description><![CDATA[预处理：<br />rpm -q mysql;<br />rpm -e --nodeps mysql;<br /><br />1.groupadd mysql<br />2.useradd -g mysql mysql<br />3.下载 mysql-standard-5.0.21-linux-i686-glibc23.tar.gz<br />4.放到/usr/local <br />5.tar -xvzf mysql-standard-5.0.21-linux-i686-glibc23.tar.gz<br />6.ln -s mysql****** mysql (将解压后的mysql目录软连接成mysql，或者直接更名为mysql也可，只是以后没办法看mysql版本)<br />7.chown -R mysql.mysql mysql (一定要带-R)<br />8.执行一下./scripts/mysql_install_db --user=mysql (注意一定要在/usr/local/mysql目录下执行该命令，不能到scripts下执行mysql_install_db,目录结构有关系)<br />9.这时将在/usr/local/mysql/data 生成一个用户数据库(mysql)和一个test数据库 (一定要确认)<br />10.把/etc/my.cnf文件改名或删掉 <br />11.cd /usr/local/mysql/support-file<br />12.cp mysql.server /etc/rc.d/init.d/mysqld <br />13.cp my-huge.cnf ../data <br />14.所有操作都是用root的&nbsp;<br />启动mysql用以下两种方式均可<br />(1)/etc/rc.d/init.d/mysqld start&nbsp;<br />(2)service mysqld start<br />15.修改root密码<br />&nbsp;mysqladmin -u root&nbsp;password 'new-password'<br />16.创建用户,后付所有权限<br /><font size="2">
<p>1 用于程序发布中，指定数据库，指定用户，权限小不影响工作(程序和数据库服务器在同一台机器上,否则用指定IP或域名)<br />grant select, insert, update, delete on notebase.* to <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#110;&#98;&#64;&#108;&#111;&#99;&#97;&#108;&#104;&#111;&#115;&#116;">nb@localhost</a> identified by 'nb123';</p>
<p>不推荐使用%，这样所有的IP都能连接，不过只能对notebase操作<br />grant select, insert, update, delete on notebase.* to <a href='&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#110;&#98;&#64;&#34;&#37;' href_cetemp='mailto:nb@"%'>nb@"%</a>" identified by 'nb123';</p>
<p>2 用于程序开发中，让指定开发人员的机器有最高访问权限<br />grant ALL PRIVILEGES on *.* to <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#114;&#111;&#111;&#116;&#64;&#37;&#50;&#50;&#49;&#48;&#46;&#48;&#46;&#48;&#46;&#49;&#49;" href_cetemp='mailto:root@"10.0.0.11'>root@"10.0.0.11</a>" Identified by "root" WITH GRANT OPTION; <br /></p>flush privileges<br /></font><br />17.进入mysql<br />&nbsp;mysql -uroot -p770511<br />18.关闭数据库:<br />&nbsp;mysqladmin -uroot -pxxxx -hxxxxxxxxx&nbsp; shutdown<br />19(<font color="#ff6666">启动，关闭，连接数据库时可能出现 无法找到/usr/lib/mysql/mysql.sock错误，这是因为，机器本身自带的mysql 把socket通信文件指定在/usr/lib/mysql/mysql.sock，这时只要将本身自带的mysql和mysqladmin命令文件删除，并把/usr/local/mysql/bin置入PATH环境变量即可正常使用</font>) <br /><br /><br /><br />
<p>Installing MySQL system tables...<br />OK<br />Filling help tables...<br />OK</p>
<p>To start mysqld at boot time you have to copy<br />support-files/mysql.server to the right place for your system</p>
<p>PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !<br />To do so, start the server, then issue the following commands:</p>
<p>/usr/local/mysql/bin/mysqladmin -u root password 'new-password'<br />/usr/local/mysql/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'</p>
<p>Alternatively you can run:<br />/usr/local/mysql/bin/mysql_secure_installation</p>
<p>which will also give you the option of removing the test<br />databases and anonymous user created by default.&nbsp; This is<br />strongly recommended for production servers.</p>
<p>See the manual for more instructions.</p>
<p>You can start the MySQL daemon with:<br />cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &amp;</p>
<p>You can test the MySQL daemon with mysql-test-run.pl<br />cd /usr/local/mysql/mysql-test ; perl mysql-test-run.pl</p>
<p>Please report any problems with the /usr/local/mysql/bin/mysqlbug script!</p>
<p>&nbsp;</p><img src ="http://www.blogjava.net/lyjjq/aggbug/44649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2006-05-05 16:22 <a href="http://www.blogjava.net/lyjjq/articles/44649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql 初学指南</title><link>http://www.blogjava.net/lyjjq/articles/9021.html</link><dc:creator>强强</dc:creator><author>强强</author><pubDate>Tue, 02 Aug 2005 06:08:00 GMT</pubDate><guid>http://www.blogjava.net/lyjjq/articles/9021.html</guid><wfw:comment>http://www.blogjava.net/lyjjq/comments/9021.html</wfw:comment><comments>http://www.blogjava.net/lyjjq/articles/9021.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyjjq/comments/commentRss/9021.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyjjq/services/trackbacks/9021.html</trackback:ping><description><![CDATA[<TABLE cellSpacing=0 cellPadding=3 width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=top>
<P><FONT size=2><FONT face=Verdana><FONT class=normalfont><B><FONT color=blue>MYSQL初学者使用指南</FONT></B></FONT><BR></FONT></FONT><FONT size=1><FONT face=Verdana><FONT class=smallfont color=#ff9900>2004-04-23 15:18 pm</FONT><BR></FONT></FONT><FONT class=normalfont><FONT face=Verdana size=2>作者：作者<BR>来自：Linux知识宝库<BR>现载：</FONT><A href="http://www.douzhe.com/linuxtips/1814.html"><FONT face=Verdana color=#666666 size=2>http://www.douzhe.com/linuxtips/1814.html</FONT></A><BR><FONT face=Verdana size=2>地址：无名<BR><BR>有很多朋友虽然安装好了mysql但却不知如何使用它。在这篇文章中我们就从连接mysql、<BR>修改密码、增加用户等方面来学习一些mysql的常用命令。<BR><BR>一、连接mysql。<BR>格式： mysql -h主机地址 -u用户名 －p用户密码<BR>1、 例1：连接到本机上的mysql。<BR>首先在打开DOS窗口，然后进入目录mysqlin，再键入命令mysql -uroot -p， 回<BR>车后提示你输密码，如果刚安装好mysql，超级用户root是没有密码的， 故直接回<BR>车即可进入到mysql中了，mysql的提示符是：mysql&gt;<BR>2、 例2：连接到远程主机上的mysql。假设远程主机的IP为：110.110.110.110， 用户<BR>名为root,密码为abcd123。则键入以下命令：<BR>mysql -h110.110.110.110 -uroot -pabcd123<BR>（注:u与root可以不用加空格，其它也一样）<BR>3、 退出mysql命令：exit（回车）<BR><BR>二、修改密码。<BR>格式：mysqladmin -u用户名 -p旧密码 password 新密码<BR>1、 例1：给root加个密码ab12。首先在DOS下进入目录mysqlbin，然后键入以下命令<BR>mysqladmin -uroot password ab12<BR>注：因为开始时root没有密码，所以-p旧密码一项就可以省略了。<BR>2、 例2：再将root的密码改为djg345。<BR>mysqladmin -uroot -pab12 password djg345<BR>另一种方法：<BR>shell&gt;mysql -u root -p<BR>mysql&gt;SET PASSWORD FOR root=PASSWORD("root");<BR><BR>三、增加新用户。（注意：和上面不同，下面的因为是mysql环境中的命令， 所以后面都带<BR>一个分号作为命令结束符）<BR>格式：grant select on 数据库.* to 用户名@登录主机 identified by "密码"<BR>例1、增加一个用户test1密码为abc，让他可以在任何主机上登录， 并对所有数据库有<BR>查询、插入、修改、删除的权限。首先用以root用户连入mysql，然后键入以下命<BR>令：<BR>grant select,insert,update,delete on *.* to test1@"%" Identified <BR>by "abc";<BR>但例1增加的用户是十分危险的，你想如某个人知道test1的密码，那么他就可以在<BR>internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了，<BR>解决办法见例2。<BR>例2、增加一个用户test2密码为abc,让其只可以在localhost上登录， 并可以对数据库<BR>mydb进行查询、插入、修改、删除的操作（localhost指本地主机， 即mysql数据<BR>库所在的那台主机），这样用户即使用知道test2的密码，也无法从internet上直<BR>接访问数据库，只能通过mysql主机上的web页来访问了。<BR>grant select,insert,update,delete on mydb.* to test2@localhost <BR>identified by "abc";<BR>如果你不想test2有密码，可以再打一个命令将密码消掉。<BR>grant select,insert,update,delete on mydb.* to test2@localhost <BR>identified by "";<BR><BR><BR>有关数据库方面的操作。注意：你必须首先登录到mysql中，以下操作都是在mysql的提<BR>示符下进行的，而且每个命令以分号结束。<BR><BR>一、操作技巧<BR>1、 如果你打命令时，回车后发现忘记加分号，你无须重打一遍命令，只要打个分号回<BR>车就可以了。也就是说你可以把一个完整的命令分成几行来打，完后用分号作结束<BR>标志就OK。<BR>2、 你可以使用光标上下键调出以前的命令。但以前我用过的一个mysql旧版本不支持。<BR>我现在用的是mysql-3.23.27-beta-win。<BR><BR>二、显示命令<BR>1、 显示数据库列表。<BR>show databases;<BR>刚开始时才两个数据库：mysql和test。 mysql库很重要它里面有mysql的系统信息，<BR>我们改密码和新增用户，实际上就是用这个库进行操作。<BR>2、 显示库中的数据表：<BR>use mysql； ／／打开库，学过FOXBASE的一定不会陌生吧<BR>show tables;<BR>3、 显示数据表的结构：<BR>describe 表名;<BR>4、 建库：<BR>create database 库名;<BR>5、 建表：<BR>use 库名；<BR>create table 表名(字段设定列表)；<BR>6、 删库和删表:<BR>drop database 库名;<BR>drop table 表名；<BR>7、 将表中记录清空：<BR>delete from 表名;<BR>8、 显示表中的记录：<BR>select * from 表名;<BR><BR>三、一个建库和建表以及插入数据的实例<BR>drop database if exists school; //如果存在SCHOOL则删除<BR>create database school; //建立库SCHOOL<BR>use school; //打开库SCHOOL<BR>create table teacher //建立表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>); //建表结束<BR>//以下为插入字段<BR>insert into teacher values('','glchengang','深圳一中','1976-10-10');<BR>insert into teacher values('','jack','深圳一中','1975-12-23');<BR><BR>注：在建表中<BR>(1) 将ID设为长度为3的数字字段:int(3)，并让它每个记录自动加一: auto_increment，<BR>并不能为空:not null，而且让它成为主字段primary key<BR>(2) 将NAME设为长度为10的字符字段<BR>(3) 将ADDRESS设为长度50的字符字段，而且缺省值为深圳。varchar和char有什么区别<BR>呢，只有等以后的文章再说了。 <BR>(4) 将YEAR设为日期字段。<BR>如果你在mysql提示符键入上面的命令也可以，但不方便调试。 你可以将以上命令<BR>原样写入一个文本文件中假设为school.sql，然后复制到c:下，并在DOS状态进入目录<BR>mysqlin，然后键入以下命令：<BR>mysql -uroot -p密码 &lt; c:school.sql<BR>如果成功，空出一行无任何显示；如有错误，会有提示。（以上命令已经调试，你<BR>只要将//的注释去掉即可使用）。<BR><BR>四、将文本数据转到数据库中<BR>1、 文本数据应符合的格式：字段数据之间用tab键隔开，null值用来代替。例：<BR>3 rose 深圳二中 1976-10-10<BR>4 mike 深圳一中 1975-12-23<BR>2、 数据传入命令load data local infile "文件名" into table 表名;<BR>注意：你最好将文件复制到mysqlin目录下，并且要先用use命令选表所在的库。<BR><BR>五、导出和导入数据：(命令在DOS的mysqlin目录下执行)<BR>导出表<BR>mysqldump --opt school &gt; school.sql<BR>注释：将数据库school中的表全部备份到school.sql文件，school.sql是一个文本文件，<BR>文件名任取，打开看看你会有新发现。<BR>mysqldump --opt school teacher student &gt; school.teacher.student.sql<BR>注释：将数据库school中的teacher表和student表备份到school.teacher.student.sql文<BR>件，school.teacher.student.sql是一个文本文件，文件名任取，打开看看你会有新发现。<BR><BR>导入表<BR>mysql<BR>mysql&gt;create database school;<BR>mysql&gt;use school;<BR>mysql&gt;source school.sql;<BR>(或将school.sql换为school.teacher.sql / school.teacher.student.sql)<BR><BR>导出数据库<BR>mysqldump --databases db1 db2 &gt; db1.db2.sql<BR>注释：将数据库dbl和db2备份到db1.db2.sql文件，db1.db2.sql是一个文本文件，文件名<BR>任取，打开看看你会有新发现。<BR>(举个例子：<BR>mysqldump -h host -u user -p pass --databases dbname &gt; file.dump<BR>就是把host上的以名字user，口令pass的数据库dbname导入到文件file.dump中。)<BR><BR>导入数据库<BR>mysql &lt; db1.db2.sql<BR><BR>复制数据库<BR>mysqldump --all-databases &gt; all-databases.sql<BR>注释：将所有数据库备份到all-databases.sql文件，all-databases.sql是一个文本文件，<BR>文件名任取。<BR><BR>导入数据库<BR>mysql<BR>mysql&gt;drop database a;<BR>mysql&gt;drop database b;<BR>mysql&gt;drop database c;<BR>...<BR>mysql&gt;source all-databases.sql; (或exit退出mysql后 mysql &lt; all-databases.sql)<BR><BR>后记：<BR>其实mysql的对数据库的操作与其它的SQL类数据库大同小异， 您最好找本将SQL的书看<BR>看。我在这里只介绍一些基本的，其实我也就只懂这些了，呵呵。<BR>最好的mysql教程还是"晏子"译的"mysql中文参考手册"。不仅免费，每个相关网站都有<BR>下载，而且它是最权威的。可惜不象"PHP4中文手册"那样是chm的格式， 在查找函数命令的<BR>时候不太方便。<BR><BR>3.打开数据库：use dbname；<BR>显示所有数据库：show databases;<BR>显示数据库mysql中所有的表：先use mysql；然后show tables;<BR>显示表的列信息：describe user;(显示表mysql数据库中user表的信息）；<BR><BR>4.创建一个可以从任何地方连接服务器的一个完全的超级用户，但是必须使用一个口令something做这个<BR>GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'something' WITH GRANT OPTION;<BR>GRANT ALL PRIVILEGES ON *.* TO monty@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;<BR><BR>5.删除授权：<BR>REVOKE ALL PRIVILEGES ON *.* FROM root@"%";<BR>USE mysql;<BR>DELETE FROM user WHERE User="root" and Host="%";<BR>FLUSH PRIVILEGES;<BR><BR>6. 创建一个用户custom在特定客户端weiqiong.com登录，可访问特定数据库bankaccount<BR>mysql&gt; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON bankaccount.* <BR>TO custom@weiqiong.com IDENTIFIED BY 'stupid';<BR><BR>7.重命名表:<BR>ALTER TABLE t1 RENAME t2;<BR><BR>为了改变列a，从INTEGER改为TINYINT NOT NULL(名字一样)，<BR>并且改变列b，从CHAR(10)改为CHAR(20)，同时重命名它，从b改为c:<BR>ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);<BR><BR>增加一个新TIMESTAMP列，名为d：<BR>ALTER TABLE t2 ADD d TIMESTAMP; <BR><BR>在列d上增加一个索引，并且使列a为主键：<BR>ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);<BR><BR>删除列c：<BR>ALTER TABLE t2 DROP COLUMN c;<BR><BR>增加一个新的AUTO_INCREMENT整数列，命名为c：<BR>ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,ADD INDEX (c);<BR>注意，我们索引了c，因为AUTO_INCREMENT柱必须被索引，并且另外我们声明c为NOT NULL，<BR>因为索引了的列不能是NULL。 <BR><BR>8.删除记录:<BR>DELETE FROM t1 WHERE C&gt;10;<BR><BR>6.改变某几行:<BR>UPDATE t1 SET user=weiqiong,password=weiqiong;<BR><BR>7.使用name列的头10个字符创建一个索引:<BR>CREATE INDEX part_of_name ON customer (name(10));<BR></FONT></FONT><BR></P></TD></TR>
<TR>
<TD colSpan=2><FONT class=middlefont></FONT><BR><FONT class=normalfont face=Verdana size=2>全文结束</FONT> </TD></TR></TBODY></TABLE><img src ="http://www.blogjava.net/lyjjq/aggbug/9021.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyjjq/" target="_blank">强强</a> 2005-08-02 14:08 <a href="http://www.blogjava.net/lyjjq/articles/9021.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>