MySQL-INFORMATION_SCHEMA COLUMNS表

在程序中,若想要动态地得到某一个表的具体信息,就使用到了MySQL 中的 INFORMATION_SCHEMA 信息数据库,而它又包含很多表,见下:

INFORMATION_SCHEMA SCHEMATA表

INFORMATION_SCHEMA TABLES表

INFORMATION_SCHEMA COLUMNS表

INFORMATION_SCHEMA STATISTICS

INFORMATION_SCHEMA USER_PRIVILEGES表

INFORMATION_SCHEMA SCHEMA_PRIVILEGES表

INFORMATION_SCHEMA TABLE_PRIVILEGES表

INFORMATION_SCHEMA COLUMN_PRIVILEGES表

INFORMATION_SCHEMA CHARACTER_SETS表

INFORMATION_SCHEMA COLLATIONS表

INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY表

INFORMATION_SCHEMA TABLE_CONSTRAINTS表

INFORMATION_SCHEMA KEY_COLUMN_USAGE表

INFORMATION_SCHEMA ROUTINES表

INFORMATION_SCHEMA VIEWS表

INFORMATION_SCHEMA TRIGGERS表

其中的 COLUMNS 表给出了某一个表中的具体的列信息:我们在 ‘test‘ 库中建立 ‘documents‘ 表,语句如下:

CREATE TABLE `documents` (                           

             `id` int(11) NOT NULL auto_increment,              

             `group_id` int(11) NOT NULL,                       

             `group_id2` int(11) NOT NULL,                      

             `date_added` datetime NOT NULL,                    

             `title` varchar(255) NOT NULL,                     

             `content` text NOT NULL,                           

             PRIMARY KEY  (`id`)                                

           ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=gbk

字段以及索引信息为:

/*字段信息 - test.documents*/

-----------------------------

Field       Type          Collation       Null    Key     Default  Extra           Privileges                       Comment

----------  ------------  --------------  ------  ------  -------  --------------  -------------------------------  -------

id          int(11)       (NULL)          NO      PRI     (NULL)   auto_increment  select,insert,update,references

group_id    int(11)       (NULL)          NO                                       select,insert,update,references

group_id2   int(11)       (NULL)          NO                                       select,insert,update,references

date_added  datetime      (NULL)          NO                                       select,insert,update,references

title       varchar(255)  gbk_chinese_ci  NO                                       select,insert,update,references

content     text          gbk_chinese_ci  NO                                       select,insert,update,references

/*索引信息 - test.documents*/

-----------------------------

Table      Non_unique  Key_name  Seq_in_index  Column_name  Collation  Cardinality  Sub_part  Packed  Null    Index_type  Comment

---------  ----------  --------  ------------  -----------  ---------  -----------  --------  ------  ------  ----------  -------

documents           0  PRIMARY              1  id           A                    4    (NULL)  (NULL)          BTREE

 

好啦!建表结束!先来了解一下 INFORMATION_SCHEMA COLUMNS 表:

下面我们开始了解它!键入 SQL 语句:

SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT

  FROM INFORMATION_SCHEMA.COLUMNS

  WHERE table_name = ‘documents‘

结果如下,可以对照我们刚开始的建表语句以及字段信息:

当然,还可以参照如下格式的 SQL 语句来查看其他字段的查询信息:

SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT

  FROM INFORMATION_SCHEMA.COLUMNS

  WHERE table_name = ‘tbl_name‘

  [AND table_schema = ‘db_name‘]

  [AND column_name LIKE ‘wild‘]

接下来看看 SHOW 语句和它的异同:键入 SQL 语句:

SHOW COLUMNS

  FROM `documents`

结果如下:

SHOW 语句的基本格式为:

SHOW COLUMNS

  FROM tbl_name

  [FROM db_name]

  [LIKE wild]

更多详细的内容,请参看 MySQL 手册。

时间: 2024-12-18 12:51:47

MySQL-INFORMATION_SCHEMA COLUMNS表的相关文章

information_schema.columns 学习

每一个表中的每一列都会在information_schema.columns表中对应一行 1.informaiton_schema.columns 常用列: 1.table_catalog :不管是table | view 这个列的值总是def 2.table_schema  :表 | 视图所在的数据库名 3.table_name  :表名 | 视图名 4.column_name  :列名 5.column_default   :列的默认值 6.is_nullable  :是否可以取空值 7.d

使用INFORMATION_SCHEMA.Columns查询数据表结构

使用情形1:写数据字典(Word文档)时, 需要获取表结构,以加快书写速度,当然,前提是没有文档导出工具. 使用情形2:生成实体时, 前提也是没有代码生成工具. 脚本 SELECT A.COLUMN_NAME, CASE WHEN A.CHARACTER_MAXIMUM_LENGTH IS NULL THEN A.DATA_TYPE WHEN A.CHARACTER_MAXIMUM_LENGTH IS NOT NULL THEN convert(VARCHAR(10), A.DATA_TYPE)

MySQL源码 information_schema新增表

information_schema是MySQL下的DB, 存储了数据库的数据字典,但OS系统上,并没有information_schema下表的数据和结构文件. 所以,MySQL在针对information_schema下的表进行查询的时候,在内存中构造了memory引擎的临时表,把数据填充进去,最后返回给client. 下面看下我们如何来增加一个information_schema下的表,统计一下你想要的信息,供实时查询: 比如select * from information_schema

MySQL information_schema表查询导致内存暴涨

case:下面的一条sql语句,导致mysql实例内存暴涨: select * from tables where table_name not in(select table_name from partitions group by table_name having count(*)>1 ); mysql 5.5, 1w+的innodb表. 下面看下调查的结果: 1.  sql的执行情况以及内存分配:   step1: 构造information_schema.tables临时表 1.1 

[MySQL] INFORMATION_SCHEMA 数据库包含所有表的字段

sql注入后可以通过该数据库获取所有表的字段信息 1. COLLATIONS表 提供有关每个字符集的排序规则的信息. COLLATIONS表包含以下列: COLLATION_NAME 排序规则名称. CHARACTER_SET_NAME 与排序规则关联的字符集的名称. ID 排序规则ID. IS_DEFAULT 排序规则是否为其字符集的默认值. IS_COMPILED 字符集是否已编译到服务器中. SORTLEN 这与对字符集中表示的字符串进行排序所需的内存量有关. 2. SHOW COLLAT

MySQL获取Schema表名和字段信息

MySQL获取Schema表名和字段信息 获取表名 select TABLE_NAME,TABLE_TYPE,ENGINE,TABLE_ROWS,TABLE_COMMENT,CREATE_TIME,UPDATE_TIME, CHECK_TIME from information_schema.TABLES where TABLE_SCHEMA='t_shop' ; 获取字段名 select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,IS_NUL

mysql数据库分表分区

防伪码:博观而约取,厚积而薄发 为什么要分表和分区? 我们的数据库数据越来越大,随之而来的是单个表中数据太多.以至于查询书读变慢,而且 由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性能瓶颈. mysql 中有一种机制是表锁定和行锁定,是为了保证数据的完整性.表锁定表示你们都不能 对这张表进行操作,必须等我对表操作完才行.行锁定也一样,别的 sql 必须等我对这条数 据操作完了,才能对这条数据进行操作.当出现这种情况时,我们可以考虑分表或分区. 1.分表 什么是分表? 分表是将一个大表按

MySQL常见建表选项及约束

一.CREATE TABLE 选项 1.在定义列的时候,指定列选项 1)DEFAULT <literal>:定义列的默认值 当插入一个新行到表中并且没有给该列明确赋值时,如果定义了列的默认值,将自动得到默认值 :如果没有,则为null. mysql> create table people                                                                      -> (    ->  id int not nu

mysql information_schema介绍

mysql information_schema介绍 一.information_schema是什么 information_schema是MySQL自带的一个信息数据库,其保存着关于MySQL服务器所维护的所有其他数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等. 也就是说当你建立一个新的数据库,或者在已有的数据库中增删改表的话,都会记录在information_schema库中. 你可以通过information_schema库来查看各个数据库的信息:有时候是很有用的哦,例如