java 获取数据库元_获取数据库元数据

本文介绍了通过Java获取MySQL数据库元数据的两种方法:1) 使用SHOW语句,如SHOW DATABASES, SHOW TABLES等;2) 查询INFORMATION_SCHEMA数据库,如SCHEMATA, TABLES等表。详细讲解了各个语句和表项的作用,为数据库管理和开发提供了便利。" 114205793,10540043,Java Servlet 实现用户注册登录功能详解,"['Java Servlet', '用户认证', 'JDBC', 'Web开发', '数据库交互']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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: 240MAX_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: NULLTABLE_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: 21MAX_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: NULLTABLE_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: 60MAX_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: NULLTABLE_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_infoDatabase: 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 阅读(518) 评论(0)  编辑  收藏 所属分类: 数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值