# MySQL 中文速查表

# 连接服务器

使用 mysql 客户端工具连接 MySQL 服务器的命令行如下:

mysql [-h host_name] [-P port_num] [-u user_name] [-p] [-D db_name]
  • host_name 表示服务器主机名,默认为本机;
  • port_num 表示 MySQL 服务端口,默认为 3306;
  • user_name 表示用户名,默认为当前操作系统用户;
  • -p 提示输入密码;db_name 表示要连接的数据库。

# 创建用户

使用CREATE USER语句创建一个用户:

CREATE USER [IF NOT EXISTS] user_name@host IDENTIFIED BY 'auth_string';

# 导入导出数据

mysqldump -h hostname -u username -p database_name -P port > file.sql # 导出数据库
mysql -u username -p database_name < file.sql                         # 导入数据库

SHOW PROCESSLIST; # 显示当前正在运行的查询

# 用户权限

CREATE USER 'user'@'host'; # 创建用户
DROP USER 'user'@'host'; # 删除用户

GRANT ALL PRIVILEGES ON base.* TO 'user'@'host' IDENTIFIED BY 'password'; # 授予使用密码访问base数据库下所有表的所有权限
GRANT SELECT, INSERT, DELETE ON base.* TO 'user'@'host' IDENTIFIED BY 'password'; # 授予使用密码访问base数据库下所有表的查询,插入,删除权限
GRANT ALL PRIVILEGES ON base.* TO 'user'@'host' WITH GRANT OPTION; # 授予数据库的**所有**权限

REVOKE ALL PRIVILEGES ON base.* FROM 'user'@'host'; # 删除base数据库的所有权限
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'host'; # 删除**所有**数据库的权限

FLUSH PRIVILEGES; # 刷新权限 

# 如果您直接使用INSERT,UPDATE或DELETE之类的语句修改授权表,请使用** only **。

# 清空数据库

获取所有清空表数据sql语句 drop table 删除 delete from table

# 生成清空所有表的SQL

select concat('truncate table ',table_name,';') from information_schema.TABLES where table_schema='database';

# 生成删除所有表的SQL

select concat('drop table ',table_name,';') from information_schema.TABLES where table_schema='database';

# delete , drop 和truncate 区别

  • delete 每次删除一行,都在事务日志中为所删除的每行记录一项。产生rollback,事务提交之后才生效;如果有相应的 trigger,执行的时候将被触发,如果删除大数据量的表速度会很慢。
  • delete 删除表中数据而不删除表的结构(定义),同时也不释放空间。
  • truncate 只能操作表,将表中数据全部删除,在功能上和不带where子句的delete语句相同
  • delete 和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除
  • delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚