mysql基本的常用语句备忘

----------------------------数据库的操作--------------------------------------------


创建数据库

CREATE DATABASE IF NOT EXISTS [数据库名] DEFAULT CHARSET utf8 COLLATE utf8_general_ci;


修改数据库字符集:

alter database [数据库名] character set utf8;


删除数据库

drop database [数据库名]


创建用户

CREATE USER '[用户名]'@'%' IDENTIFIED BY '[用户密码]';


授权该用户访问数据库的所有权限

GRANT USAGE ON *.* TO '[用户名]'@'%' IDENTIFIED BY '[用户密码]' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

GRANT ALL PRIVILEGES ON `[数据库名]`.* TO '[用户名]'@'%';


刷新权限

flush privileges; 


删除mysql用户 

DROP USER '[用户名]'@'%';


删除用户原来的所有权限

REVOKE ALL PRIVILEGES ON `[数据库名]`.* FROM '[用户名]'@'%';


赋予新的只读权限

GRANT SELECT ON `[数据库名]`.* TO '[用户名]'@'%';


备份数据库:

mysqldump -h[主机IP] -u[用户名] -p[密码] [数据库名] > [保存路径]

mysqldump -uroot -hlocalhost -p123456 db_test > "/home/www/db.sql";


显示所有数据库

show databases


查看数据库碎片:

SELECT t.TABLE_SCHEMA, t.TABLE_NAME,t.TABLE_ROWS,t.DATA_LENGTH,t.INDEX_LENGTH,concat(round(t.DATA_FREE / 1024 / 1024, 2), 'M') AS datafree FROM information_schema.tables t WHERE t.TABLE_SCHEMA = '数据库名';


----------------------------表的操作--------------------------------------------

创建表

DROP TABLE IF EXISTS `[表名]`;

CREATE TABLE IF NOT EXISTS `[表名]` (

  `id` bigint(15) unsigned NOT NULL auto_increment COMMENT '自增ID',

  `user_name` varchar(30) NOT NULL default '' COMMENT '账号',

  `password` varchar(50) NOT NULL default '' COMMENT '密码',

  `create_date` int(10) unsigned NOT NULL default '0' COMMENT '创建时间',

  PRIMARY KEY  (`id`),

  UNIQUE KEY `user_name` (`user_name`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户表' AUTO_INCREMENT=1 ;


修改表名

RENAME TABLE [原表名] TO [新表名];


添加字段

ALTER TABLE [表名] ADD [字段名] INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '[备注]'


修改字段名

ALTER TABLE [表名] CHANGE [原字段] [新字段] INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '[备注]'


添加索引

ALTER TABLE [表名] ADD INDEX ([索引字段名])


删除索引

ALTER TABLE [表名] DROP INDEX [索引名]


创建唯一索引

ALTER TABLE [表名] ADD UNIQUE([索引名])


清空表

TRUNCATE TABLE [表名]


删除表

DROP TABLE [表名]


碎片整理

optimize table [表1],[表2]


显示所有表

show tables


查看数据库中所有表的记录数

use information_schema;

select table_name,table_rows from tables where TABLE_SCHEMA = 'db_test';


创建一张临时表 并插入数据

create temporary table [表1] select * from [表2];


把数据批量插入到另外一张表

insert into [表1](f1,f2) select v1,v2 from [表2]


查看表字段

show columns from [表名];


查看表结构

show create table [表名];


查看表索引

show index from [表名];



导入sql

source /root/db.sql;


----------------------------数据库管理维护--------------------------------------------

查看状态

show status like '%abc%';


查看参数的设置情况

show variables like '%abc%';



状态名

作用域

详细解释

Aborted_clients

Global

由于客户端没有正确关闭连接导致客户端终止而中断的连接数

Aborted_connects

Global

试图连接到MySQL服务器而失败的连接数

Binlog_cache_disk_use

Global

使用临时二进制日志缓存但超过binlog_cache_size值并使用临时文件来保存事务中的语句的事务数量

Binlog_cache_use

Global

使用临时二进制日志缓存的事务数量

Bytes_received

Both

从所有客户端接收到的字节数。

Bytes_sent

Both

发送给所有客户端的字节数。

com*


各种数据库操作的数量

Compression

Session

客户端与服务器之间只否启用压缩协议

Connections

Global

试图连接到(不管是否成功)MySQL服务器的连接数

Created_tmp_disk_tables

Both

服务器执行语句时在硬盘上自动创建的临时表的数量

Created_tmp_files

Global

mysqld已经创建的临时文件的数量

Created_tmp_tables

Both

服务器执行语句时自动创建的内存中的临时表的数量。如果Created_tmp_disk_tables较大,你可能要增加tmp_table_size值使临时 表基于内存而不基于硬盘

Delayed_errors

Global

用INSERT DELAYED写的出现错误的行数(可能为duplicate key)。

Delayed_insert_threads

Global

使用的INSERT DELAYED处理器线程数。

Delayed_writes

Global

写入的INSERT DELAYED行数

Flush_commands

Global

执行的FLUSH语句数。

Handler_commit

Both

内部提交语句数

Handler_delete

Both

行从表中删除的次数。

Handler_discover

Both

MySQL服务器可以问NDB CLUSTER存储引擎是否知道某一名字的表。这被称作发现。Handler_discover说明通过该方法发现的次数。

Handler_prepare

Both

A counter for the prepare phase of two-phase commit operations.

Handler_read_first

Both

索引中第一条被读的次数。如果较高,它建议服务器正执行大量全索引扫描;例如,SELECT col1 FROM foo,假定col1有索引。

Handler_read_key

Both

根据键读一行的请求数。如果较高,说明查询和表的索引正确。

Handler_read_next

Both

按照键顺序读下一行的请求数。如果你用范围约束或如果执行索引扫描来查询索引列,该值增加。

Handler_read_prev

Both

按照键顺序读前一行的请求数。该读方法主要用于优化ORDER BY ... DESC。

Handler_read_rnd

Both

根据固定位置读一行的请求数。如果你正执行大量查询并需要对结果进行排序该值较高。你可能使用了大量需要MySQL扫描整个表的查询或你的连接没有正确使用键。

Handler_read_rnd_next

Both

在数据文件中读下一行的请求数。如果你正进行大量的表扫描,该值较高。通常说明你的表索引不正确或写入的查询没有利用索引。

Handler_rollback

Both

内部ROLLBACK语句的数量。

Handler_savepoint

Both

在一个存储引擎放置一个保存点的请求数量。

Handler_savepoint_rollback

Both

在一个存储引擎的要求回滚到一个保存点数目。

Handler_update

Both

在表内更新一行的请求数。

Handler_write

Both

在表内插入一行的请求数。

Innodb_buffer_pool_pages_data

Global

包含数据的页数(脏或干净)。

Innodb_buffer_pool_pages_dirty

Global

当前的脏页数。

Innodb_buffer_pool_pages_flushed

Global

要求清空的缓冲池页数

Innodb_buffer_pool_pages_free

Global

空页数。

Innodb_buffer_pool_pages_latched

Global

在InnoDB缓冲池中锁定的页数。这是当前正读或写或由于其它原因不能清空或删除的页数。

Innodb_buffer_pool_pages_misc

Global

忙的页数,因为它们已经被分配优先用作管理,例如行锁定或适用的哈希索引。该值还可以计算为Innodb_buffer_pool_pages_total - Innodb_buffer_pool_pages_free - Innodb_buffer_pool_pages_data。

Innodb_buffer_pool_pages_total

Global

缓冲池总大小(页数)。

Innodb_buffer_pool_read_ahead_rnd

Global

InnoDB初始化的“随机”read-aheads数。当查询以随机顺序扫描表的一大部分时发生。

Innodb_buffer_pool_read_ahead_seq

Global

InnoDB初始化的顺序read-aheads数。当InnoDB执行顺序全表扫描时发生。

Innodb_buffer_pool_read_requests

Global

InnoDB已经完成的逻辑读请求数。

Innodb_buffer_pool_reads

Global

不能满足InnoDB必须单页读取的缓冲池中的逻辑读数量。

Innodb_buffer_pool_wait_free

Global

一般情况,通过后台向InnoDB缓冲池写。但是,如果需要读或创建页,并且没有干净的页可用,则它还需要先等待页面清空。该计数器对等待实例进行记数。如果已经适当设置缓冲池大小,该值应小。

Innodb_buffer_pool_write_requests

Global

向InnoDB缓冲池的写数量。

Innodb_data_fsyncs

Global

fsync()操作数。

Innodb_data_pending_fsyncs

Global

当前挂起的fsync()操作数。

Innodb_data_pending_reads

Global

当前挂起的读数。

Innodb_data_pending_writes

Global

当前挂起的写数。

Innodb_data_read

Global

至此已经读取的数据数量(字节)。

Innodb_data_reads

Global

数据读总数量。

Innodb_data_writes

Global

数据写总数量。

Innodb_data_written

Global

至此已经写入的数据量(字节)。

Innodb_dblwr_pages_written

Global

已经执行的双写操作数量

Innodb_dblwr_writes

Global

双写操作已经写好的页数

Innodb_log_waits

Global

我们必须等待的时间,因为日志缓冲区太小,我们在继续前必须先等待对它清空


Innodb_log_write_requests

Global

日志写请求数。

Innodb_log_writes

Global

向日志文件的物理写数量。

Innodb_os_log_fsyncs

Global

向日志文件完成的fsync()写数量。

Innodb_os_log_pending_fsyncs

Global

挂起的日志文件fsync()操作数量。

Innodb_os_log_pending_writes

Global

挂起的日志文件写操作

Innodb_os_log_written

Global

写入日志文件的字节数。