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

sql注入后可以通过该数据库获取所有表的字段信息

1.
COLLATIONS表
提供有关每个字符集的排序规则的信息。 COLLATIONS表包含以下列:
  COLLATION_NAME 排序规则名称。
  CHARACTER_SET_NAME 与排序规则关联的字符集的名称。
  ID 排序规则ID。
  IS_DEFAULT 排序规则是否为其字符集的默认值。
  IS_COMPILED 字符集是否已编译到服务器中。
  SORTLEN 这与对字符集中表示的字符串进行排序所需的内存量有关。 

2.
SHOW COLLATION;//也可以查询到排序规则信息

3.
COLLATION_CHARACTER_SET_APPLICABILITY 表
  COLLATION_NAME 排序规则名称。
  CHARACTER_SET_NAME 与排序规则关联的字符集的名称

4.
COLUMNS 提供表中字段的信息

  TABLE_CATALOG 包含该列的表所属的目录的名称。该值始终为def。
  TABLE_SCHEMA 包含字段所在数据库的名称。
  TABLE_NAME 包含字段所在表的名称。
  COLUMN_NAME 字段的名称。
  ORDINAL_POSITION 表中字段的位置。 ORDINAL_POSITION是必要的,因为你可能想说 ORDER BY ORDINAL_POSITION。与SHOW COLUMNS不同,COLUMNS表中的SELECT没有自动排序。show columns的语法是例如:show columns from my_test.user; 

  COLUMN_DEFAULT 字段的默认值。如果字段具有显式缺省值NULL,或者字段定义不包含DEFAULT子句,则此值为NULL。
  IS_NULLABLE 字段可为空性。如果NULL值可以存储在列中,则值为YES,否则为NO。
  DATA_TYPE 字段数据类型。 DATA_TYPE值只是类型名称,没有其他信息。
  COLUMN_TYPE 值包含类型名称以及可能的其他信息,例如精度或长度。
  CHARACTER_MAXIMUM_LENGTH 对于字符串列,最大长度(以字符为单位)。
  CHARACTER_OCTET_LENGTH 对于字符串列,最大长度(以字节为单位)。
  NUMERIC_PRECISION 对于数字字段,数字精度。
  NUMERIC_SCALE 对于数字字段,数字刻度。
  DATETIME_PRECISION 对于时间字段,小数秒精度。
  CHARACTER_SET_NAME 对于字符串字段,字符集名称。
  COLLATION_NAME 对于字符串字段,排序规则名称。
  COLUMN_TYPE 字段数据类型。
  DATA_TYPE 值只是类型名称,没有其他信息。
  COLUMN_TYPE 值包含类型名称以及可能的其他信息,例如精度或长度。

  COLUMN_KEY 名称是否已建立索引
  EXTRA 有关给定字段的任何其他可用信息。
  PRIVILEGES 您对该字段的权限。
  COLUMN_COMMENT 字段定义中包含的任何注释。
  GENERATION_EXPRESSION 对于生成的字段,显示用于计算列值的表达式。

  

原文地址:https://www.cnblogs.com/taoshihan/p/10152228.html

时间: 2024-11-05 15:57:35

[MySQL] INFORMATION_SCHEMA 数据库包含所有表的字段的相关文章

使用sql查询mysql/oracle/sql server/gp数据库中指定表的字段信息(字段名/字段类型/字段长度/是否是主键/是否为空)

1,根据数据库类型拼接不同URL /** * 根据类型不同拼接连接的URL * @param dbType 1:mysql.2:oracle.3:sql server.4:gp * @param ip * @param port * @param databaseName * @return*/ public static String getTestDbUrl(int dbType, String ip, String port, String databaseName){ String ur

Java对比两个数据库中的表和字段,写个冷门的东西

Java对比两个数据库中的表和字段,写个冷门的东西 转载的 来源网络 目前所在的项目组距离下个版本上线已经很近了,就面临了一个问题:开发人员在开发库上根据需要增加数据表.数据字段.或者变更了字段类型或者字段长度等等. 由于时间比较紧迫,导致在开发过程中不可能一一把DDL数据库脚本记录下来,在比较大的项目中,比如我所在项目开发的系统大概包含了800张左右的表,字段上10000个的情况下,人工处理明显不可行,所以我们就得通过程序来判断比对,哪些是我们需要新增加的表,哪些是我们需要新增加的字段,哪些是

常用数据库查询判断表和字段是否存在的SQL

常用数据库查询判断表和字段是否存在的SQL(如果结果为1表示存在,为0表示不存在) 1.MSSQL Server 表: SELECT COUNT(*) FROM dbo.sysobjects  WHERE name= 'table_name'; 字段: SELECT COUNT(*) FROM syscolumns  WHERE id=object_id('table_name') AND name= 'column_name'; 2.My SQL 表: SELECT COUNT(*) FROM

MySQL删除数据库中所有表方法

MySQL删除数据库中所有表方法技术 maybe yes 发表于2015-01-23 12:16 原文链接 : http://blog.lmlphp.com/archives/66  来自 : LMLPHP后院 通过使用 CONCAT 函数将数据库表名称和需要执行的 SQL 语句连接起来,输出在控制台:然后从控制台复制这些内容,粘贴,执行,OK.table_schema 条件为需要操作的数据库名称,参考 SQL 语句如下: SELECT CONCAT('DROP TABLE IF EXISTS 

sql server 查询数据库所有的表名+字段

原文:sql server 查询数据库所有的表名+字段 SELECT * FROM INFORMATION_SCHEMA.columns WHERE TABLE_NAME='Account' SELECT    (case when a.colorder=1 then d.name else '' end) as 表名,--如果表名相同就返回空       a.colorder as 字段序号,       a.name as 字段名,       (case when COLUMNPROPER

mysql查看数据库中所有表的行数,并进行排序

mysql查看数据库中所有表的行数,并进行排序: 进行数据库迁移或还原后,可以通过比较行数,检查数据是否正确. mysql> use information_schema; mysql> select table_name,table_rows from tables where TABLE_SCHEMA= 'kpsumi' order by table_rows desc; 原文地址:http://blog.51cto.com/9285090/2119096

mysql高效获取两张表共同字段的交集数据

问题: 例如下面两站表A,B.A表和B表分别有5-10w数据.A表结构如下:id bid name title publisher extraB表结构如下id bid name title publisher A出版社也为很多人出版了书籍,B出版社也为很多人出版了书籍,有sql语句找出这两个出版社为那些人 共同出版书籍,用innerjoin太慢,有没有什么更好的办法? 解答一: 由于不知道你表的索引情况,至于用join还是in和exists不太好说,理论上讲,exists最快.in次之.join

Mysql MyISAM数据库批量转换表引擎为Innodb

Mysql MyISAM数据库批量转换表引擎为Innodb 最近在做事物处理需要把表结构都改为带有支持事物的Innodb引擎格式, 把里面数据库 用户名.密码 等信息修改为你自己的,放在网站下运行即可.如果想把Innodb改为MyISAM修改里面的  engine='InnoDB'  部分代码. <?php /** * User: Yt * Date: 2016/2/25 0025 */ //连接数据库 $host='localhost'; $user='root'; //数据库用户名 $pas

MySQL使用游标给指定数据库的所有表添加字段

今天,主管让我在数据库的每张表都添加两个字段,数据库里有好几百张表,逐个去添加显然太费时,并且可能会出差错,例如会漏掉几张表没加的情况. 楼主想到使用游标可以轻松地解决这个问题,以下是我用mysql写的测试代码,不多说,直接上代码: use studentcourse; delimiter $$ drop procedure if exists addcolumn; create procedure addcolumn() BEGIN declare tablename varchar(50);