qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          獲取數據庫元數據

            MySQL 提供幾種辦法以使獲取關于數據庫和數據庫里各種對象(也就是數據庫的元數據)的信息,如下:

            1、SHOW語句,如SHOW TABLES等等。

            2、INFORMATION_SCHEMA數據庫里的數據表。

            3、命令行程序,如mysqlshow或者是mysqldump。

            一、用SHOW語句獲取

            獲取服務器所管理的數據庫。
            SHOW DATABASES;
            查看給定數據庫的創建語句。
            SHOW CREATE DATABASE db_name;

            列出默認數據庫里的所有數據表。
            SHOW TABLES;

            列出給定數據庫里的所有數據表。
            SHOW TABLES FROM db_name;

            查看給定數據表的創建語句。
            SHOW CREATE TABLE tbl_name;

            查看指定數據表的數據列和索引信息。
            SHOW COLUMNS FROM tbl_name;  這個語句和DESC 的輸出是一樣的。
            SHOW INDEX FROM tbl_name;

            有幾種SHOW語句還可以帶有LIKE 'pattern'子句,用來把SHOW語句的輸出限定在給定范圍,并且允許使用通配符號。

            二、從INFORMATION_SCHEMA數據庫獲取元數據

            可以將這個數據庫看成一個虛擬的數據庫,這個數據庫里的數據表是一些由不同的數據庫元素數據構成的視圖,這個數據庫里有以下數據表項:

          mysql> show tables from information_schema;
          +---------------------------------------+
          | Tables_in_information_schema          |
          +---------------------------------------+
          | CHARACTER_SETS                        |
          | COLLATIONS                            |
          | COLLATION_CHARACTER_SET_APPLICABILITY |
          | COLUMNS                               |
          | COLUMN_PRIVILEGES                     |
          | ENGINES                               |
          | EVENTS                                |
          | FILES                                 |
          | GLOBAL_STATUS                         |
          | GLOBAL_VARIABLES                      |
          | KEY_COLUMN_USAGE                      |
          | PARTITIONS                            |
          | PLUGINS                               |
          | PROCESSLIST                           |
          | PROFILING                             |
          | REFERENTIAL_CONSTRAINTS               |
          | ROUTINES                              |
          | SCHEMATA                              |
          | SCHEMA_PRIVILEGES                     |
          | SESSION_STATUS                        |
          | SESSION_VARIABLES                     |
          | STATISTICS                            |
          | TABLES                                |
          | TABLE_CONSTRAINTS                     |
          | TABLE_PRIVILEGES                      |
          | TRIGGERS                              |
          | USER_PRIVILEGES                       |
          | VIEWS                                 |
          +---------------------------------------+
          28 rows in set (0.01 sec)

          分別對這些列簡單的說明。

            1、SCHEMATA、TABLES、VIEWS、ROUTIMES、TRIGGERS、EVENTS、PARTITIONS、COLUMNS,表示的信息分別是數據庫,數據表,視圖,存儲例程,觸發器,數據庫里的事件,數據表分區和數據列的信息,以數據表為例,就是TABLES表,有以下列:

          mysql> show columns from INFORMATION_SCHEMA.COLUMNS;
          +--------------------------+---------------------+------+-----+---------+-------+
          | Field                    | Type                | Null | Key | Default | Extra |
          +--------------------------+---------------------+------+-----+---------+-------+
          | TABLE_CATALOG            | varchar(512)        | YES  |     | NULL    |       | 
          | TABLE_SCHEMA             | varchar(64)         | NO   |     |         |       | 
          | TABLE_NAME               | varchar(64)         | NO   |     |         |       | 
          | COLUMN_NAME              | varchar(64)         | NO   |     |         |       | 
          | ORDINAL_POSITION         | bigint(21) unsigned | NO   |     | 0       |       | 
          | COLUMN_DEFAULT           | longtext            | YES  |     | NULL    |       | 
          | IS_NULLABLE              | varchar(3)          | NO   |     |         |       | 
          | DATA_TYPE                | varchar(64)         | NO   |     |         |       | 
          | CHARACTER_MAXIMUM_LENGTH | bigint(21) unsigned | YES  |     | NULL    |       | 
          | CHARACTER_OCTET_LENGTH   | bigint(21) unsigned | YES  |     | NULL    |       | 
          | NUMERIC_PRECISION        | bigint(21) unsigned | YES  |     | NULL    |       | 
          | NUMERIC_SCALE            | bigint(21) unsigned | YES  |     | NULL    |       | 
          | CHARACTER_SET_NAME       | varchar(32)         | YES  |     | NULL    |       | 
          | COLLATION_NAME           | varchar(32)         | YES  |     | NULL    |       | 
          | COLUMN_TYPE              | longtext            | NO   |     | NULL    |       | 
          | COLUMN_KEY               | varchar(3)          | NO   |     |         |       | 
          | EXTRA                    | varchar(27)         | NO   |     |         |       | 
          | PRIVILEGES               | varchar(80)         | NO   |     |         |       | 
          | COLUMN_COMMENT           | varchar(255)        | NO   |     |         |       | 
          +--------------------------+---------------------+------+-----+---------+-------|

            這是我查看一些數據表的記錄

          mysql> SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA != 'information_schema' and TABLE_SCHEMA!='mysql'\G;
          *************************** 1. row ***************************
            TABLE_CATALOG: NULL
             TABLE_SCHEMA: db_info
               TABLE_NAME: i_node
               TABLE_TYPE: BASE TABLE
                   ENGINE: MyISAM
                  VERSION: 10
               ROW_FORMAT: Dynamic
               TABLE_ROWS: 11
           AVG_ROW_LENGTH: 21
              DATA_LENGTH: 240
          MAX_DATA_LENGTH: 281474976710655
             INDEX_LENGTH: 2048
                DATA_FREE: 0
           AUTO_INCREMENT: 16
              CREATE_TIME: 2012-09-07 03:07:37
              UPDATE_TIME: 2012-09-23 07:57:37
               CHECK_TIME: NULL
          TABLE_COLLATION: latin1_swedish_ci
                 CHECKSUM: NULL
           CREATE_OPTIONS: 
            TABLE_COMMENT: 
          *************************** 2. row ***************************
            TABLE_CATALOG: NULL
             TABLE_SCHEMA: db_info
               TABLE_NAME: test
               TABLE_TYPE: BASE TABLE
                   ENGINE: MyISAM
                  VERSION: 10
               ROW_FORMAT: Fixed
               TABLE_ROWS: 3
           AVG_ROW_LENGTH: 7
              DATA_LENGTH: 21
          MAX_DATA_LENGTH: 1970324836974591
             INDEX_LENGTH: 1024
                DATA_FREE: 0
           AUTO_INCREMENT: NULL
              CREATE_TIME: 2012-09-22 02:25:01
              UPDATE_TIME: 2012-09-22 02:37:18
               CHECK_TIME: NULL
          TABLE_COLLATION: latin1_swedish_ci
                 CHECKSUM: NULL
           CREATE_OPTIONS: 
            TABLE_COMMENT: 
          *************************** 3. row ***************************
            TABLE_CATALOG: NULL
             TABLE_SCHEMA: test
               TABLE_NAME: test
               TABLE_TYPE: BASE TABLE
                   ENGINE: MyISAM
                  VERSION: 10
               ROW_FORMAT: Dynamic
               TABLE_ROWS: 3
           AVG_ROW_LENGTH: 20
              DATA_LENGTH: 60
          MAX_DATA_LENGTH: 281474976710655
             INDEX_LENGTH: 1024
                DATA_FREE: 0
           AUTO_INCREMENT: NULL
              CREATE_TIME: 2012-09-07 20:44:41
              UPDATE_TIME: 2012-09-07 20:44:41
               CHECK_TIME: NULL
          TABLE_COLLATION: latin1_swedish_ci
                 CHECKSUM: NULL
           CREATE_OPTIONS: 
            TABLE_COMMENT: 
          3 rows in set (0.00 sec)

           2、FILES。關于NDB硬盤數據文件的信息。

            3、TABLE_CONSTRAINS、KEY_COLUMN_USAGE:關于數據表和數據列上的約束條件的信息,一般唯一化索引和外鍵都屬于這些約束條件。

            4、STATISTICS。關于數據表索引特性的信息。

            5、REFERENTIAL_CONSTRAINS。關于外鍵的信息。

            6、CHARACTER_SETS、COLLATIONS、COLLATION_CHARACTER_SET_APPLICABILITY。關于所支持的字符集,每種字符集的排序方式、每種排序方式與它的字符集的映射關系信息。

            7、ENGINES、PLUGINS。關于存儲引擎和服務器插件的信息。

            8、USER_PRIVILEGES、SCHEMA_PRIVILEGES、TABLE_PRIVILEGES、COLUMN_PRIVILEGES。全局、數據庫、數據表和數據列的權限信息。這些信息分別來自mysql數據庫里的user,db,tables_priv,column_priv數據表。

            9、PROCESSLIST。在服務器內執行的線程的信息。

            10、GLOBAL_VARIABLES、SESSION_VARIABLES、GLOBAL_STATUS、SESSION_STATUS。全局和會話級系統變量和狀態變量的值。

            三、從命令行獲取元數據

            先介紹一個命令的使用:mysqlshow。

          mysqlshow[選項] [db_name [tbl_name [col_name]]]

            1、如果沒有給出數據庫,顯示所有匹配的數據庫。

            2、如果沒有給出表,顯示數據庫中所有匹配的表。

            3、如果沒有給出列,顯示表中所有匹配的列和列類型。

            說明幾個常用的選項信息:

            1、--keys。查看某給定數據表里的索引信息。

            2、--status。查看某給定數據庫里的數據表的描述性信息。如:

          [root@localhost ~]# mysqlshow --status db_info
          Database: db_info
          +--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+
          | Name   | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length  | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Collation         | Checksum | Create_options | Comment |
          +--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+
          | i_node | MyISAM | 10      | Dynamic    | 11   | 21             | 240         | 281474976710655  | 2048         | 0         | 16             | 2012-09-07 03:07:37 | 2012-09-23 07:57:37 |            | latin1_swedish_ci |          |                |         |
          | test   | MyISAM | 10      | Fixed      | 3    | 7              | 21          | 1970324836974591 | 1024         | 0         |                | 2012-09-22 02:25:01 | 2012-09-22 02:37:18 |            | latin1_swedish_ci |          |                |         |
          +--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------

            在使用該工具的時候,如果沒有默認的數據庫服務例程,不要忘了加上--host --user --password甚至是 --socket等信息。


          posted on 2012-09-26 10:24 順其自然EVO 閱讀(615) 評論(0)  編輯  收藏 所屬分類: 數據庫

          <2012年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 时尚| 盐亭县| 靖州| 连平县| 石柱| 上饶县| 丰镇市| 德令哈市| 竹溪县| 苗栗县| 高密市| 新闻| 江阴市| 同仁县| 昔阳县| 昌乐县| 云梦县| 武山县| 霍林郭勒市| 平山县| 临泉县| 昌乐县| 甘南县| 清流县| 天长市| 乐平市| 宿迁市| 藁城市| 河池市| 宜春市| 区。| 潍坊市| 天津市| 黄冈市| 宕昌县| 蒙阴县| 合作市| 井陉县| 调兵山市| 简阳市| 迭部县|