mysql查看表结构及已有索引信息
使用sql语句查询相应的表结构信息及索引字段等信息
常用的命令有如下:
desc tableName; desc employees.employees;
show columns from tableName; show COLUMNS from employees.employees;
describe tableName; DESCRIBE employees.employees;
这三个显示的结果都是一样的,显示表中filed,type,null,key,default及extra。
show create table tableName; show CREATE TABLE employees.employees;
这个语句会显示这个表的建表语句。
select * from columns where table_name='表名';
select * from information_schema.COLUMNS where TABLE_SCHEMA='employees' and TABLE_NAME='employees';
这个显示的结果就比较全了。
接下来,来点更全的sql,这个是用来同步mysql和orac数据字典的所有sql。
mysql部分:
## 查看所有的库SELECT lower(schema_name) schema_nameFROM information_schema.schemataWHERE schema_name NOT IN ( 'mysql', 'information_schema', 'test', 'search', 'tbsearch', 'sbtest', 'dev_ddl' )## 产看某一个库中的所有表SELECT table_name, create_time updated_at, table_type, ENGINE, table_rows num_rows, table_comment, ceil(data_length / 1024 / 1024) store_capacityFROM information_schema.TABLESWHERE table_schema = 'employees'AND table_name NOT LIKE 'tmp#_%' ESCAPE '#'##查看某一个库下某一个表的所有字段SELECT lower(column_name) column_name, ordinal_position position, column_default dafault_value, substring(is_nullable, 1, 1) nullable, column_type data_type, column_comment, character_maximum_length data_length, numeric_precision data_precision, numeric_scale data_scaleFROM information_schema.COLUMNSWHERE table_schema = 'employees'AND table_name = 'employees';## 查看某一个库下某一张表的索引SELECT DISTINCT lower(index_name) index_name, lower(index_type) typeFROM information_schema.statisticsWHERE table_schema = 'employees'AND table_name = 'employees';## 查看某一个库下某一张表的某一个索引SELECT lower(column_name) column_name, seq_in_index column_positionFROM information_schema.statisticsWHERE table_schema = 'employees'AND table_name = 'employees'AND index_name = 'primary';## 查看某一个库下某一个表的注释SELECT table_comment commentsFROM information_schema.TABLESWHERE table_schema = 'employees'AND table_name = 'employees';## 查看某一个库下某一个表的列的注释SELECT lower(column_name) column_name, column_comment commentsFROM COLUMNSWHERE table_schema = 'employees'AND table_name = 'employees';oracle部分:
#table structure:SELECT lower(table_name) table_name, TEMPORARY, tablespace_name, num_rows, duration, 'ORACLE' table_type, partitioned, ( SELECT ceil(sum(bytes) / 1024 / 1024) FROM dba_segments b WHERE a. OWNER = b. OWNER AND a.table_name = b.segment_name ) AS store_capacityFROM dba_tables aWHERE OWNER = ?AND table_name NOT LIKE 'TMP%';SELECT lower(column_name) column_name, column_id position, data_type, data_length, data_precision, data_scale, nullable, data_default default_value, default_lengthFROM dba_tab_columnsWHERE OWNER = ?AND table_name = ?;# indexSELECT lower(index_name) index_name, index_type typeFROM dba_indexesWHERE OWNER = ?AND table_name = ?AND index_name NOT LIKE 'SYS_IL%';SELECT lower(column_name) column_name, column_position, descendFROM dba_ind_columnsWHERE table_owner = ?AND table_name = ?AND index_name = ?;#collect descriptionSELECT commentsFROM dba_tab_commentsWHERE OWNER = ?AND table_name = ?;SELECT lower(column_name) column_name, commentsFROM dba_col_commentsWHERE OWNER = ?AND table_name = ?;#databaseSELECT lower(username) usernameFROM dba_usersWHERE username NOT IN ( 'STDBYPERF', 'READONLY', 'APPQOSSYS', 'ANYSQL', 'DBFLASH', 'SYS', 'SYSTEM', 'MONITOR', 'TBSEARCH', 'MANAGER', 'SYSMAN', 'EXFSYS', 'WMSYS', 'DIP', 'TSMSYS', 'ORACLE_OCM', 'OUTLN', 'DBSNMP', 'PERFSTAT', 'SEARCH', 'TOOLS', 'TBDUMP', 'DMSYS', 'XDB', 'ANONYMOUS', 'DEV_DDL' );#segsizeSELECT round(sum(bytes) / 1024 / 1024, 0) mbytesFROM dba_segmentsWHERE OWNER = ?AND segment_name = ?;
关于oralce中的segements,可以参考一下这个系列文章。
http://book.51cto.com/art/201108/288137.htm
总结一下,mysql中查看库表字段信息都在information_schemal中,这些是获取数据字典的必备sql。本文中mysql的语句都在本地测试过。另外oracle的结构也要熟悉。
评论

React 18的并发渲染确实是个重大改进,我们在项目中已经升级使用,性能提升明显!