分享一下工作中常见的mysql脚本,此次分享的内容如下:

ColumnsViews

一、Columns

1. 列出 MySQL 数据库中的表列

selecttab.table_schemaasdatabase_schema,tab.table_nameastable_name,col.ordinal_positionascolumn_id,col.column_nameascolumn_name,col.data_typeasdata_type,casewhencol.numeric_precisionisnotnullthencol.numeric_precisionelsecol.character_maximum_lengthendasmax_length,casewhencol.datetime_precisionisnotnullthencol.datetime_precisionwhencol.numeric_scaleisnotnullthencol.numeric_scaleelse0endas'precision'frominformation_schema.tablesastabinnerjoininformation_schema.columnsascoloncol.table_schema=tab.table_schemaandcol.table_name=tab.table_namewheretab.table_type='BASE TABLE'andtab.table_schemanotin ('information_schema','mysql','performance_schema','sys')--uncommentlinebelowforcurrentdatabaseonly--andtab.table_schema=database() --uncommentlinebelowandprovidespecificdatabasename--andtab.table_schema='your_database_name'orderbytab.table_name,col.ordinal_position;

注意:要查看特定数据库中的列,请取消注释上述子句之一。

说明:

schema_name– 数据库名称table_name– 表名column_id– 表列 id,每个表从 1 开始column_name– 列的名称data_type– 列数据类型max_length– 数据类型最大长度precision- 数据类型精度

2. 列出 MySQL 数据库中特定表中的所有列

selectordinal_positionascolumn_id,column_nameascolumn_name,data_typeasdata_type,casewhennumeric_precisionisnotnullthennumeric_precisionelsecharacter_maximum_lengthendasmax_length,casewhendatetime_precisionisnotnullthendatetime_precisionwhennumeric_scaleisnotnullthennumeric_scaleelse0endasdata_precision,is_nullable,column_defaultfrominformation_schema.columnswheretable_name='table name'--puttablenamehere--andtable_schema='schema name'--putschemanamehereorderbyordinal_position;

说明:

column_id– 表中的列位置,从 1 开始column_name– 表中列的名称data_type– 列数据类型max_length– 数据类型最大长度data_precision– 数据类型精度is_nullable– 如果列可以为空,则为 YES,否则为 NOcolumn_default– 列的默认表达式

3. 列出 MySQL 数据库中所有包含详细信息的表列(PKs、UKs、FKs、Default、Computed 等)

说明:

database_name– 数据库(模式)名称table_name– 表名column_name– 列名data_type– 数据列的类型包含精度- 数字类型的精度或日期时间类型的小数位数numeric_scale– 数字数据类型的比例char_length– 最大字符长度column_default– 列的默认值PK– 指示列是否为主键FK– 指示列是否为外键UQ– 指示列是否必须在表中具有唯一值is_nullable– 指示列是否可以为空

​​

4. 列出 MySQL 数据库中所有计算(生成)的列

selecttable_schemaasdatabase_name,table_name,column_name,data_type,generation_expressionfrominformation_schema.columnswherelength(generation_expression) >0andtable_schemanotin ('information_schema', 'sys','performance_schema', 'mysql')orderbytable_schema,table_name,column_name;

说明:

database_name– 包含表的数据库(模式)名称table_name– 表名column_name– 列的名称data_type– 列的数据类型generation_expression– 计算公式

二、Views

1. 列出 MySQL 数据库中的视图

selecttable_schemaasdatabase_name,table_nameasview_namefrominformation_schema.viewswheretable_schemanotin ('sys','information_schema','mysql', 'performance_schema')--andtable_schema='database_name'--putyourdatabasenamehereorderbytable_schema,table_name;

说明:

database_name– 包含视图的数据库(模式)的名称view_name– 视图名称

2. 列出 MySQL 中的视图及其定义

selectvw.table_schemaasdatabase_name,vw.table_nameasview_name,vw.view_definitionasdefinition,tb.table_commentasdescriptionfrominformation_schema.viewsasvwinnerjoininformation_schema.tablesastbontb.table_name=vw.table_name--wherevw.table_schema='your database name'orderbydatabase_name, view_name;

注意:如果您需要特定数据库(模式)的信息,请取消注释 table_schema 行并提供您的数据库名称。

说明:

schema_name– 视图的数据库(模式)名称view_name– 视图的名称定义- 视图的定义脚本描述- 视图的描述

3. 列出 MySQL 数据库中的视图中的所有列

selectcol.table_schemaasdatabase_name,col.table_nameasview_name,col.ordinal_position,col.column_name,col.data_type,casewhencol.character_maximum_lengthisnotnullthencol.character_maximum_lengthelsecol.numeric_precisionendasmax_length,col.is_nullablefrominformation_schema.columnscoljoininformation_schema.viewsvieonvie.table_schema=col.table_schemaandvie.table_name=col.table_namewherecol.table_schemanotin ('sys','information_schema','mysql', 'performance_schema')--andvie.table_schema='database_name'--putyourdatabasenamehereorderbycol.table_schema,col.table_name,col.ordinal_position;

说明:

database_name– 数据库(模式)名称view_name– 视图名称column_name– 列名data_type– 列数据类型max_length- 列长度:对于字符串列,以字符为单位的最大长度;对于数值列,数值精度。is_nullable– 指示列是否允许空值的标志

4. 列出 MySQL 数据库中视图使用的表

查询在8.0.13 MySQL 版本下执行。

selectvtu.view_schemaasdatabase_name,vtu.view_nameasview_name,vtu.table_schemaasreferenced_database_name,vtu.table_nameasreferenced_object_name,tab.table_typeasobject_typefrominformation_schema.view_table_usagevtujoininformation_schema.tablestabonvtu.table_schema=tab.table_schemaandvtu.table_name=tab.table_namewhereview_schemanotin ('sys','information_schema','mysql', 'performance_schema')--andtab.table_schema='database_name'--putyourdatabasenamehereorderbyvtu.view_schema,vtu.view_name;

说明:

database_name– 查看数据库(模式)名称view_name– 视图名称referenced_database_name– 视图引用的表数据库名称referenced_object_name– 视图引用的表名object_type- 引用对象的类型:BASE TABLE;VIEW

​​