MySQL 常用命令

数据库操作篇

命令 解释
mysql -u <username> -p -P <port> 登录 MySQL 数据库
mysql -h <ip_address> -P <port> -u <username> -p<password> 远程登录数据库
show databases 查看所有数据库
use <database_name> 选择数据库并使用
drop database <database_name> 删除数据库
show create schema <database_name> 显示创建数据库语句
create schema <schema_name> default character set utf8; 创建数据库

表操作篇

命令 解释
show tables 查看所有数据表
desc <table_name> 查看表结构
show create table <table_name> 查看表定义
show create table <table_name> \G 查看表定义(详细)
drop table <table_name> 删除表
alter table <table_name> modify <column_name> <data_type> 修改表字段
alter table <table_name> add column <column_name> <data_type> 添加表字段
alter table <table_name> drop column <column_name> 删除表字段
alter table <table_name> change <column_name> <new_column_name> <data_type> 字段改名
alter table <table_name> rename <new_table_name> 修改表名

索引操作篇

命令 解释
show index from <table_name> 查看表索引
repair table <table_name> quick 重建索引命令
alter table <table_name> add index <index_name> (column list) 创建联合索引
alter table <table_name> add unique <index_name> (column list) 创建普通索引
alter table <table_name> add primary key <index_name> (column list) 创建主键索引
explain + <sql> 分析 sql 是否语句是否走上索引

数据操纵语句 DML 篇

插入记录

命令 解释
insert into <table_name> (<column_name1>,<column_name2>,…) values (<value1>,<value2>,…) 指定名称插入
insert into <table_name> values (<value1>,<value2>,…) 不指定名称插入
insert into <table_name> values(<value1>,<value11>…),(<value2>,<value22>…) 批量插入数据

修改记录

命令 解释
update <table_name> set <column_name> = <value>, <column_name> = <value>,… where <column_name>=<value> … 修改记录

删除记录

命令 解释
delete from <table_name> where <column_name> = <value> … 删除记录

查询记录

命令 解释
select * from <table_name> 查询所有记录
select distinct <column_name> from <table_name> 查询不重复的记录
select * from <table_name> where <column_name> = <value> and <column_name> < <value> 条件查询
select * from <table_name> order by <column_name> desc limit 100 排序和限制
select * from <table_name> order by <column_name> desc limit 0,10 分页查询(查询从第0条记录开始10条)
select <column_name>,count(1) from <table_name> group by <column_name> having count(1) > 1 聚合
select * from <table_name1> t1 left join <table_name2> t2 on t1.<column_name> = t2.<column_name> 连接查询
select * from <table_name1> where <column_name> in (select column_name from <table_name2>) 子查询
<select-sql> union <select-sql> 记录联合

数据控制语句 DCL 篇

权限相关

命令 解释
grant select,insert on test.* to ‘test‘@’localhost’ identified by ‘123’ 授予操作权限(将 test 数据库中所有表的 select 和 insert 权限授予 test 用户)
show grants for ‘test‘@’localhost’ 查看账号权限
revoke insert on test.* from ‘test‘@’localhost’ 收回操作权限
grant all privileges on . to ‘test‘@’localhost’ 授予所有数据库的所有权限
grant all privileges on . to ‘test‘@’localhost’ with grant option 授予所有数据库的所有权限(包括 grant)
grant super,process,file on . to ‘test‘@’localhost’ 授予 SUPER PROCESS FILE 权限(系统权限不能指定数据库)
grant usage on . to ‘test‘@’localhost’ 只授予登录权限

帐号相关

命令 解释
drop user ‘test‘@’localhost’ 删除账号
set password = password(‘123’) 修改自己的密码
set password for ‘test‘@’localhost’ = password(‘123’) 管理员修改他人密码

数据导入导出操作篇

命令 解释
source db.sql 执行 .sql 脚本
mysqldump -h <host> -u<user_name> -p <database_name> > dump.sql dump 整个数据库的表结构和数据
mysqldump -h <host> -u<user_name> -p <database_name> <table_name> > dump.sql dump 单个数据库表结构和数据
mysqldump -h <host> -u<user_name> -p -d <database_name> > dump.sql dump 整个数据库的表结构
mysqldump -h <host> -u<user_name> -p -d <database_name> <table_name> > dump.sql dump 单个数据库表结构
mysqldump -h <host> -u<user_name> -p -t <database_name> > dump.sql dump 整个数据库的数据,不添加 create table
mysql -u<user_name> -p<password> -h<host> -P<port> -D <database_name> –default-character-set=utf8 -e “select * from custom where com_uid = ‘001’” > test.csv 将数据库中的数据导出到 excel 文件中 user_name = 数据库用户名 password = 数据库密码 host = 主机名称 db_name = 数据库名称
mysqldump -u<user_name> -p<password> -h<host> -P <port> <database_name> <table_name> –where=”com_uid=’001’” > /Users/dump.sql 将数据库中的数据 dump 到 sql 文件中 user_name = 数据库用户名 password = 数据库密码 host = 主机名称 db_name = 数据库名称 table_name = 表名

其它操作篇

字符集相关

命令 解释
show variables like ‘character%’ 查看字符集
create database <database_name> character set utf8 创建数据库时指定字符集

时区相关

命令 解释
show variables like “%time_zone%” 查看当前时区(UTC 为世界统一时间,中国为 UTC+8)
set global time_zone = ‘+8:00’ 修改 mysql 全局时区为北京时间,即我们所在的东8区
set time_zone = ‘+8:00’ 修改当前会话时区
flush privileges 立即生效
本文结束啦 感谢您阅读
如果你觉得这篇文章对你有用,欢迎赞赏哦~
0%