连接数据库
-
登录
mysql远程连接
$ mysql -P [port] -h [hostname|ip] -u db_login__user_name -p[db_user_password]本地连接
$ mysql -u db_login__user_name -p[db_user_password]
操作数据库
-
查看数据库
show databases; -
查看数据库引擎
show engines; -
新建数据库
create database database_namedatabase_name: 需要创建的数据库名称 -
使用数据库
mysql> use database_name; -
显示数据库中的表
mysql> show tables; -
创建表
create table <table_name>; -
修改表名称
ALTER TABLE <table_name> RENAME <new_table_name> -
查看表结构
show columns from <table_name>;也可以使用
describe table_name查看. -
修改表结构
ALTER TABLE <table_name> CHANGE <old_columns_name> <new_columns_name> <字段定义> -
删除表
drop <table_name>;
-
删除数据库
drop database database_name
数据导入导出
-
仅导出表结构
mysqldump -h [hostname] -u [db_user_name] -p[db_user_password] database_name table_name -d > ~/db/mysql/export/table_name.sql -
导出表数据和结构
mysqldump -h [hostname] -u [db_user_name] -p[db_user_password] database_name <table_name> > ~/db/mysql/export/table_name.sql -
仅导出数据库结构
mysqldump -h [host|ip] -u [db_user_name] -p[db_user_password] database_name > ~/db/mysql/export/database_name.sql -
导出数据库结构和数据
mysqldump -h [host|ip] -u [db_user_name] -p[db_user_password] database_name -d> ~/db/mysql/export/database_name.sql -
导入数据
mysql -h [host|ip] -u [db_user_name] -p[db_user_password] database_name < ~/db/mysql/import/data.sql
ALTER TABLE 常用命令
-
修改表名称
ALTER TABLE <表名> RENAME <新表名> -
修改表的存储引擎
ALTER TABLE account ENGINE=MyISAM;ENGINE: ISAM|MYISAM|HEAP|INNODB|BERKLEYDB -
添加字段
ALTER TABLE <表名> ADD <字段名称> <字段定义> -
修改字段名称及字段定义
ALTER TABLE <表名> DROP <字段名称> -
修改字段定义
ALTER TABLE <表名> CHANGE <旧字段名称> <新字段名称> <字段定义> -
删除字段
ALTER TABLE <表名> MODIFY <字段名称> <字段定义>
查询状态
-
查看当前所有连接详情
show full processlist; -
查询状态值
show status like '%var_name%';var_name:
Aborted_clients由于客户没有正确关闭连接已经死掉,已经放弃的连接数量 Aborted_connects尝试已经失败的MySQL服务器的连接的次数 Connections试图连接MySQL服务器的次数 Created_tmp_tables当执行语句时,已经被创造了的隐含临时表的数量 Delayed_insert_threads正在使用的延迟插入处理器线程的数量 Delayed_writes用INSERT DELAYED写入的行数 Delayed_errors用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数 Flush_commands执行FLUSH命令的次数 Handler_delete请求从一张表中删除行的次数 Handler_read_first请求读入表中第一行的次数 Handler_read_key请求数字基于键读行 Handler_read_next请求读入基于一个键的一行的次数 Handler_read_rnd请求读入基于一个固定位置的一行的次数 Handler_update请求更新表中一行的次数 Handler_write请求向表中插入一行的次数 Key_blocks_used用于关键字缓存的块的数量 Key_read_requests请求从缓存读入一个键值的次数 Key_reads从磁盘物理读入一个键值的次数 Key_write_requests请求将一个关键字块写入缓存次数 Key_writes将一个键值块物理写入磁盘的次数 Max_used_connections同时使用的连接的最大数目 Not_flushed_key_blocks在键缓存中已经改变但是还没被清空到磁盘上的键块 Not_flushed_delayed_rows在INSERT DELAY队列中等待写入的行的数量 Open_tables打开表的数量 Open_files打开文件的数量 Open_streams打开流的数量(主要用于日志记载) Opened_tables已经打开的表的数量 Questions发往服务器的查询的数量 Slow_queries要花超过long_query_time时间的查询数量 Threads_connected当前打开的连接的数量 Threads_running不在睡眠的线程数量 Uptime服务器工作了多少秒 -
查看表状态
show table status; -
查看数据库状态
show table status from <table_name> -
查看建表语句
show create table <table_name>; -
查看表字段详情
show full columns from <table_name>;
mysql调优
-
EXPLAIN
EXPLAIN <查询sql>id:SELECT 查询的标识符. 每个 SELECT 都会自动分配一个唯一的标识符.select_type:SELECT 查询的类型.table:查询的是哪个表partitions:匹配的分区type:join 类型possible_keys:此次查询中可能选用的索引key:此次查询中确切使用到的索引.ref:哪个字段或常数与 key 一起被使用rows:显示此查询一共扫描了多少行. 这个是一个估计值.filtered:表示此查询条件所过滤的数据的百分比extra:额外的信息
用户相关
-
查询用户信息
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; -
创建用户
create user <db_user>@'%' identified by <db_user_password>; -
删除用户
DROP USER <db_user>@'localhost'; -
授权
grant all privileges on <db_name>.* to <db_user>@'%' identified by <db_user_password>;