MySQL库表结构等查询

Posted 康威特也楼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL库表结构等查询相关的知识,希望对你有一定的参考价值。

1.查询所有数据库

SHOW DATABASES;

 

2.查询库中所有表

写法1:

USE [DATABASE_NAME];
② SHOW TABLES; 

写法2:

SHOW TABLES FROM [DATABASE_NAME]

 

3. 查询表结构

写法1:

USE [DATABASE_NAME];
② SHOW CREATE TABLE [TABLE_NAME];

 

写法2:

SHOW CREATE TABLE [DATABASE_NAME.TABLE_NAME];

 

4. 查询表所有字段

写法1:

USE [DATABASE_NAME];
② SHOW COLUMNS FROM [TABLE_NAME];

 

写法2:

SHOW COLUMNS FROM [DATABASE_NAME.TABLE_NAME];

 

 

写法3:

USE [DATABASE_NAME];
② SHOW FIELDS FROM [TABLE_NAME];

 

写法4:

SHOW FIELDS FROM [DATABASE_NAME.TABLE_NAME];

 

扩展mysql安装完成后,一般会有mysql库、information_schema库、test库等,而infomation_schema库中有一个表为COLUMNS 的表,这个表记录了所有数据库所有表的字段信息,因此可以通过这个表查询某个表的字段信息,但这样查的话会查出所有同名的表

写法5:

SELECT COLUMN_NAME, COLUMN_TYPE from information_schema.COLUMNS WHERE TABLE_NAME = \'[TABLE_NAME]\';

 

因此还可以约束所在库,例如

写法6:

SELECT COLUMN_NAME, COLUMN_TYPE from information_schema.COLUMNS WHERE TABLE_SCHEMA = \'[DATABASE_NAME]\' AND TABLE_NAME = \'[TABLE_NAME]\';

 

5. 查询表所有字段及详细信息

写法1:

USE [DATABASE_NAME];
② SHOW FULL COLUMNS FROM [TABLE_NAME];

 

写法2:

SHOW FULL COLUMNS FROM [DATABASE_NAME.TABLE_NAME];

 

写法3:

USE [DATABASE_NAME];
② SHOW FULL FIELDS FROM [TABLE_NAME];

 

写法4:

SHOW FULL FIELDS FROM [DATABASE_NAME.TABLE_NAME];

 

6. 查询表中所有索引

写法1:

USE [DATABASE_NAME];
② SHOW INDEX FROM [TABLE_NAME];

 

写法2:

SHOW INDEX FROM [DATABASE_NAME.TABLE_NAME];

 

7. 查询MySQL系统环境变量

SHOW VARIABLES;

直接使用此语句查询结果非常多!

 

用此命令查询当前MySQL 默认编码集:进入MySQL后直接输入命令

SHOW VARIABLES LIKE \'CHARACTER_SET_DATABASE\';

 

用此命令查询某个库的编码集:

USE [DATABASE];
② SHOW VARIABLES LIKE \'CHARACTER_SET_DATABASE\';

 

8. 查看当前连接数,root账号可以看到所有连接,普通账号只能看到自己的连接

SHOW PROCESSLIST;

 

9. 查询用户权限

SHOW GRANTS FOR [USER];

 

10.删除默认值,反引号(`)可加可不加

ALTER TABLE myemployees.jobs ALTER `job_id` DROP DEFAULT;

 

11.设置默认值、如存在则覆盖默认值

ALTER TABLE myemployees.jobs ALTER `job_id` SET DEFAULT 0;

 

12.修改字段类型

ALTER TABLE myemployees.jobs MODIFY `job_id` INT(2);
ALTER TABLE myemployees.jobs CHANGE `job_id` `job_id` INT(2);

 

13.修改字段名字

ALTER TABLE myemployees.jobs CHANGE `job_id` `job_id_new` INT(2);

 

14.查看数据存放目录

show variables like \'%datadir%\';

 

15.查看当前数据库使用线程相关信息

show status like \'Threads%\';

Thread_cached:The number of threads in the thread cache.
线程缓存中的线程数,代表mysql管理的线程池中还有多少可以被复用的资源

Thread_connected:The number of currently open connections.
当前打开的连接数,mysql当前连接数,等于show processlist

Thread_created:The number of threads created to handle connections.
为处理连接而创建的线程数,代表新创建的thread,如果thread_created增大迅速,需要适当调高thread_cache_size

Thread_running:The number of threads that are not sleeping.
未睡眠的线程数,即此时真正运行的线程数,如果是等于1的话,一般就是调用show status命令本身占用的线程

 

16.修改索引名称

ALTER TABLE table_name RENAME INDEX old_index_name TO new_index_name;

 

17.修改表的编码

ALTER TABLE `jobs` CONVERT TO CHARACTER SET utf8mb4;

 

以上是关于MySQL库表结构等查询的主要内容,如果未能解决你的问题,请参考以下文章

MySQL慢查询的可能原因及解决思路

Mysql之库表操作(胖胖老师)

MySQL 性能调优——SQL 查询优化

MySQL查询性能优化

MySQL查询性能优化

mysql主从复制,要主库和从库表结构一致才能复制吗