﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-姚絲麥-随笔分类-数据库</title><link>http://www.blogjava.net/yoursmile/category/33010.html</link><description>來的太晚,去的太快</description><language>zh-cn</language><lastBuildDate>Mon, 14 Jul 2008 12:03:17 GMT</lastBuildDate><pubDate>Mon, 14 Jul 2008 12:03:17 GMT</pubDate><ttl>60</ttl><item><title>MySQL中show 句法得到表列及整个库的详细信息(精品珍藏)</title><link>http://www.blogjava.net/yoursmile/archive/2008/07/14/214721.html</link><dc:creator>姚絲麥</dc:creator><author>姚絲麥</author><pubDate>Mon, 14 Jul 2008 06:19:00 GMT</pubDate><guid>http://www.blogjava.net/yoursmile/archive/2008/07/14/214721.html</guid><wfw:comment>http://www.blogjava.net/yoursmile/comments/214721.html</wfw:comment><comments>http://www.blogjava.net/yoursmile/archive/2008/07/14/214721.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yoursmile/comments/commentRss/214721.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yoursmile/services/trackbacks/214721.html</trackback:ping><description><![CDATA[<p><font face="Courier New">//</font>转载自：<a href="http://www.busfly.cn/csdn/">飞扬部落编程仓库</a> : http://www.busfly.cn/csdn/</p>
<p><font face="Courier New">show databases;<br />
</font><font face="Courier New">show tables from db_name;<br />
</font><font face="Courier New"><br />
</font></p>
<p><font face="Courier New">show columns from table_name from db_name;<br />
show index from talbe_name [from db_name];<br />
<br />
show status;<br />
show variables;<br />
<br />
show [full] processlist;<br />
show table status [from db_name];<br />
<br />
show grants for user;<br />
</font></p>
<p><font face="Courier New">除了status,processlist和grants外，其它的都可以带有like wild选项，它可以使用SQL的'%'和'_'字符；<br />
<br />
show databases like '%t';<br />
<br />
将会列出所有数据库名字末尾为't'字符的数据库<br />
<br />
<br />
</font></p>
<p><font face="Courier New">当然了，在这些sql中，你也可以用db_name.table_name来代替 table_name from db_name这样写会更简便些!<br />
<br />
如果一个用户没有一个表的任何权限，表将不在<code>SHOW TABLES</code>或<code>mysqlshow db_name</code>中的输出中显示<br />
</font></p>
<p><font face="Courier New">大家可能还记得describe table_name ，它实现的是与show columns from db_name.table_name一样的效果<br />
</font></p>
<font face="Courier New">show status将可以用mysqlshow --status 来得到同样的效果<br />
<br />
</font>
<p><font face="Courier New">show status将可以用mysqlshow --status 来得到同样的效果<br />
</font></p>
<p><font face="Courier New">
<table nosave="#101090" border="1" width="100%">
    <tbody>
        <tr>
            <td><strong>列</strong> </td>
            <td><strong>含义</strong> </td>
        </tr>
        <tr>
            <td><code>Name</code> </td>
            <td>表名</td>
        </tr>
        <tr>
            <td><code>Type</code> </td>
            <td>表的类型 (ISAM，MyISAM或HEAP)</td>
        </tr>
        <tr>
            <td><code>Row_format</code> </td>
            <td>行存储格式 (固定, 动态, 或压缩）</td>
        </tr>
        <tr>
            <td><code>Rows</code> </td>
            <td>行数量</td>
        </tr>
        <tr>
            <td><code>Avg_row_length</code> </td>
            <td>平均行长度</td>
        </tr>
        <tr>
            <td><code>Data_length</code> </td>
            <td>数据文件的长度</td>
        </tr>
        <tr>
            <td><code>Max_data_length</code> </td>
            <td>数据文件的最大长度</td>
        </tr>
        <tr>
            <td><code>Index_length</code> </td>
            <td>索引文件的长度</td>
        </tr>
        <tr>
            <td><code>Data_free</code> </td>
            <td>已分配但未使用了字节数</td>
        </tr>
        <tr>
            <td><code>Auto_increment</code> </td>
            <td>下一个 autoincrement(自动加1）值</td>
        </tr>
        <tr>
            <td><code>Create_time</code> </td>
            <td>表被创造的时间</td>
        </tr>
        <tr>
            <td><code>Update_time</code> </td>
            <td>数据文件最后更新的时间</td>
        </tr>
        <tr>
            <td><code>Check_time</code> </td>
            <td>最后对表运行一个检查的时间</td>
        </tr>
        <tr>
            <td><code>Create_options</code> </td>
            <td>与<code>CREATE TABLE</code>一起使用的额外选项 </td>
        </tr>
        <tr>
            <td><code>Comment</code> </td>
            <td>当创造表时，使用的注释 (或为什么MySQL不能存取表信息的一些信息)。 </td>
        </tr>
    </tbody>
</table>
</font><br />
</p>
<p><code>SHOW FIELDS</code>是<code>SHOW COLUMNS</code>一个同义词，<code>SHOW KEYS</code>是<code>SHOW INDEX</code>一个同义词。你也可以用<code>mysqlshow db_name tbl_name</code>或<code>mysqlshow -k db_name tbl_name</code> 列出一张表的列或索引。</p>
<p><code>SHOW INDEX</code>以非常相似于ODBC的<code>SQLStatistics</code>调用的格式返回索引信息。下面的列被返回： </p>
<table nosave="#101090" border="1" width="100%">
    <tbody>
        <tr>
            <td><strong>列</strong> </td>
            <td><strong>含义</strong> </td>
        </tr>
        <tr>
            <td><code>Table</code> </td>
            <td>表名</td>
        </tr>
        <tr>
            <td><code>Non_unique</code> </td>
            <td>0，如果索引不能包含重复。 </td>
        </tr>
        <tr>
            <td><code>Key_name</code> </td>
            <td>索引名</td>
        </tr>
        <tr>
            <td><code>Seq_in_index</code> </td>
            <td>索引中的列顺序号, 从 1 开始。 </td>
        </tr>
        <tr>
            <td><code>Column_name</code> </td>
            <td>列名。 </td>
        </tr>
        <tr>
            <td><code>Collation</code> </td>
            <td>列怎样在索引中被排序。在<strong>MySQL</strong>中，这可以有值<code>A</code>（升序) 或<code>NULL</code>（不排序)。 </td>
        </tr>
        <tr>
            <td><code>Cardinality</code> </td>
            <td>索引中唯一值的数量。这可通过运行<code>isamchk -a</code>更改. </td>
        </tr>
        <tr>
            <td><code>Sub_part</code> </td>
            <td>如果列只是部分被索引，索引字符的数量。<code>NULL</code>，如果整个键被索引。 </td>
        </tr>
    </tbody>
</table>
<p><code>SHOW STATUS</code>提供服务器的状态信息(象<code>mysqladmin extended-status</code>一样)。输出类似于下面的显示，尽管格式和数字可以有点不同： </p>
<pre>+--------------------------+--------+<br />
| Variable_name            | Value  |<br />
+--------------------------+--------+<br />
| Aborted_clients          | 0      |<br />
| Aborted_connects         | 0      |<br />
| Connections              | 17     |<br />
| Created_tmp_tables       | 0      |<br />
| Delayed_insert_threads   | 0      |<br />
| Delayed_writes           | 0      |<br />
| Delayed_errors           | 0      |<br />
| Flush_commands           | 2      |<br />
| Handler_delete           | 2      |<br />
| Handler_read_first       | 0      |<br />
| Handler_read_key         | 1      |<br />
| Handler_read_next        | 0      |<br />
| Handler_read_rnd         | 35     |<br />
| Handler_update           | 0      |<br />
| Handler_write            | 2      |<br />
| Key_blocks_used          | 0      |<br />
| Key_read_requests        | 0      |<br />
| Key_reads                | 0      |<br />
| Key_write_requests       | 0      |<br />
| Key_writes               | 0      |<br />
| Max_used_connections     | 1      |<br />
| Not_flushed_key_blocks   | 0      |<br />
| Not_flushed_delayed_rows | 0      |<br />
| Open_tables              | 1      |<br />
| Open_files               | 2      |<br />
| Open_streams             | 0      |<br />
| Opened_tables            | 11     |<br />
| Questions                | 14     |<br />
| Slow_queries             | 0      |<br />
| Threads_connected        | 1      |<br />
| Threads_running          | 1      |<br />
| Uptime                   | 149111 |<br />
+--------------------------+--------+</pre>
<p>上面列出的状态变量有下列含义： </p>
<table nosave="#101090" border="1" width="100%">
    <tbody>
        <tr>
            <td><code>Aborted_clients</code> </td>
            <td>由于客户没有正确关闭连接已经死掉，已经放弃的连接数量。 </td>
        </tr>
        <tr>
            <td><code>Aborted_connects</code> </td>
            <td>尝试已经失败的MySQL服务器的连接的次数。 </td>
        </tr>
        <tr>
            <td><code>Connections</code> </td>
            <td>试图连接MySQL服务器的次数。 </td>
        </tr>
        <tr>
            <td><code>Created_tmp_tables</code> </td>
            <td>当执行语句时，已经被创造了的隐含临时表的数量。 </td>
        </tr>
        <tr>
            <td><code>Delayed_insert_threads</code> </td>
            <td>正在使用的延迟插入处理器线程的数量。 </td>
        </tr>
        <tr>
            <td><code>Delayed_writes</code> </td>
            <td>用<code>INSERT DELAYED</code>写入的行数。 </td>
        </tr>
        <tr>
            <td><code>Delayed_errors</code> </td>
            <td>用<code>INSERT DELAYED</code>写入的发生某些错误(可能<code>重复键值</code>)的行数。 </td>
        </tr>
        <tr>
            <td><code>Flush_commands</code> </td>
            <td>执行<code>FLUSH</code>命令的次数。 </td>
        </tr>
        <tr>
            <td><code>Handler_delete</code> </td>
            <td>请求从一张表中删除行的次数。 </td>
        </tr>
        <tr>
            <td><code>Handler_read_first</code> </td>
            <td>请求读入表中第一行的次数。 </td>
        </tr>
        <tr>
            <td><code>Handler_read_key</code> </td>
            <td>请求数字基于键读行。 </td>
        </tr>
        <tr>
            <td><code>Handler_read_next</code> </td>
            <td>请求读入基于一个键的一行的次数。 </td>
        </tr>
        <tr>
            <td><code>Handler_read_rnd</code> </td>
            <td>请求读入基于一个固定位置的一行的次数。 </td>
        </tr>
        <tr>
            <td><code>Handler_update</code> </td>
            <td>请求更新表中一行的次数。 </td>
        </tr>
        <tr>
            <td><code>Handler_write</code> </td>
            <td>请求向表中插入一行的次数。 </td>
        </tr>
        <tr>
            <td><code>Key_blocks_used</code> </td>
            <td>用于关键字缓存的块的数量。 </td>
        </tr>
        <tr>
            <td><code>Key_read_requests</code> </td>
            <td>请求从缓存读入一个键值的次数。 </td>
        </tr>
        <tr>
            <td><code>Key_reads</code> </td>
            <td>从磁盘物理读入一个键值的次数。 </td>
        </tr>
        <tr>
            <td><code>Key_write_requests</code> </td>
            <td>请求将一个关键字块写入缓存次数。 </td>
        </tr>
        <tr>
            <td><code>Key_writes</code> </td>
            <td>将一个键值块物理写入磁盘的次数。 </td>
        </tr>
        <tr>
            <td><code>Max_used_connections</code> </td>
            <td>同时使用的连接的最大数目。 </td>
        </tr>
        <tr>
            <td><code>Not_flushed_key_blocks</code> </td>
            <td>在键缓存中已经改变但是还没被清空到磁盘上的键块。 </td>
        </tr>
        <tr>
            <td><code>Not_flushed_delayed_rows</code> </td>
            <td>在<code>INSERT DELAY</code>队列中等待写入的行的数量。 </td>
        </tr>
        <tr>
            <td><code>Open_tables</code> </td>
            <td>打开表的数量。 </td>
        </tr>
        <tr>
            <td><code>Open_files</code> </td>
            <td>打开文件的数量。 </td>
        </tr>
        <tr>
            <td><code>Open_streams</code> </td>
            <td>打开流的数量(主要用于日志记载）</td>
        </tr>
        <tr>
            <td><code>Opened_tables</code> </td>
            <td>已经打开的表的数量。 </td>
        </tr>
        <tr>
            <td><code>Questions</code> </td>
            <td>发往服务器的查询的数量。 </td>
        </tr>
        <tr>
            <td><code>Slow_queries</code> </td>
            <td>要花超过<code>long_query_time</code>时间的查询数量。 </td>
        </tr>
        <tr>
            <td><code>Threads_connected</code> </td>
            <td>当前打开的连接的数量。 </td>
        </tr>
        <tr>
            <td><code>Threads_running</code> </td>
            <td>不在睡眠的线程数量。 </td>
        </tr>
        <tr>
            <td><code>Uptime</code> </td>
            <td>服务器工作了多少秒。 </td>
        </tr>
    </tbody>
</table>
<p>关于上面的一些注释： </p>
<ul>
    <li>如果<code>Opened_tables</code>太大，那么你的<code>table_cache</code>变量可能太小。 </li>
    <li>如果<code>key_reads</code>太大，那么你的<code>key_cache</code>可能太小。缓存命中率可以用<code>key_reads</code>/<code>key_read_requests</code>计算。 </li>
    <li>如果<code>Handler_read_rnd</code>太大，那么你很可能有大量的查询需要MySQL扫描整个表或你有没正确使用键值的联结(join)。 </li>
</ul>
<p><code>SHOW VARIABLES</code>显示出一些<strong>MySQL</strong>系统变量的值，你也能使用<code>mysqladmin variables</code>命令得到这个信息。如果缺省值不合适，你能在<code>mysqld</code>启动时使用命令行选项来设置这些变量的大多数。输出类似于下面的显示，尽管格式和数字可以有点不同： </p>
<pre>+------------------------+--------------------------+<br />
| Variable_name          | Value                    |<br />
+------------------------+--------------------------+<br />
| back_log               | 5                        |<br />
| connect_timeout        | 5                        |<br />
| basedir                | /my/monty/               |<br />
| datadir                | /my/monty/data/          |<br />
| delayed_insert_limit   | 100                      |<br />
| delayed_insert_timeout | 300                      |<br />
| delayed_queue_size     | 1000                     |<br />
| join_buffer_size       | 131072                   |<br />
| flush_time             | 0                        |<br />
| interactive_timeout    | 28800                    |<br />
| key_buffer_size        | 1048540                  |<br />
| language               | /my/monty/share/english/ |<br />
| log                    | OFF                      |<br />
| log_update             | OFF                      |<br />
| long_query_time        | 10                       |<br />
| low_priority_updates   | OFF                      |<br />
| max_allowed_packet     | 1048576                  |<br />
| max_connections        | 100                      |<br />
| max_connect_errors     | 10                       |<br />
| max_delayed_threads    | 20                       |<br />
| max_heap_table_size    | 16777216                 |<br />
| max_join_size          | 4294967295               |<br />
| max_sort_length        | 1024                     |<br />
| max_tmp_tables         | 32                       |<br />
| net_buffer_length      | 16384                    |<br />
| port                   | 3306                     |<br />
| protocol-version       | 10                       |<br />
| record_buffer          | 131072                   |<br />
| skip_locking           | ON                       |<br />
| socket                 | /tmp/mysql.sock          |<br />
| sort_buffer            | 2097116                  |<br />
| table_cache            | 64                       |<br />
| thread_stack           | 131072                   |<br />
| tmp_table_size         | 1048576                  |<br />
| tmpdir                 | /machine/tmp/            |<br />
| version                | 3.23.0-alpha-debug       |<br />
| wait_timeout           | 28800                    |<br />
+------------------------+--------------------------+
<p><code>SHOW PROCESSLIST</code>显示哪个线程正在运行，你也能使用<code>mysqladmin processlist</code>命令得到这个信息。<br />
如果你有<strong>process</strong>权限， 你能看见所有的线程，否则，你仅能看见你自己的线程。<br />
见7.20<code> KILL</code>句法。如果你不使用<code>FULL</code>选项，那么每个查询只有头100字符被显示出来。 </p>
<p><code>SHOW GRANTS FOR user</code>列出对一个用户必须发出以重复授权的授权命令。 </p>
<pre>mysql&gt; SHOW GRANTS FOR root@localhost;<br />
+---------------------------------------------------------------------+<br />
| Grants for root@localhost                                           |<br />
+---------------------------------------------------------------------+<br />
| GRANT ALL PRIVILEGES ON *.* TO 'root''localhost' WITH GRANT OPTION  |<br />
+---------------------------------------------------------------------+</pre>
</pre>
<br />
 <img src ="http://www.blogjava.net/yoursmile/aggbug/214721.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yoursmile/" target="_blank">姚絲麥</a> 2008-07-14 14:19 <a href="http://www.blogjava.net/yoursmile/archive/2008/07/14/214721.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>