Mysql命令小记

DDL(数据定义语言)

  • 创建数据库
create database 数据库名称;
  • 查看所有数据库
show databases;

在information_schema数据库下
Mysql命令小记_第1张图片

  • 使用选定的数据库
use 数据库名称;
  • 删除数据库
drop database 数据库名称;
  • 查看所有的表
show tables;
  • 查看表的结构
desc 表名
  • 查看之前创建表的语句
show create tables 表名;
  • 删除表
drop table 表名
  • 修改表
alter table 表名 modify 字段名 字段类型;
#如:alter table city modify province varchar(10);
  • 修改表字段名
alter table 表名 旧字段名 新字段名;
  • 增加表字段名
alter table 表名 add 字段名;
#后面自行添加字段属性,使用after添加字段在指定字段后面
  • 删除表字段名
alter table 表名 drop 字段名;
  • 修改表名
alter table 表名 rename (to) 新表名;
# to 可选

DML(数据操作语言)

  • 插入表数据
insert into 表名(一个或多个字段名) values(各个字段对应的数值) ;
  • 查询表数据
#查询所有的数据
select * from 表名;
#指定字段名查询,可增加where或having语句
select 一个或多个字段名(逗号隔开)from 表名;
  • 更新数据
update 表名 set 字段名=数值 where条件;
#不加where条件会更新所有数据!!!
  • 删除数据
delete from 表名 where条件;
#不加where条件会删除所有数据!!!

DCL(数据控制语言)

  • 创建用户
create user  用户名@ip地址 identified by '密码’;
  • 删除用户
drop user 用户名@ip地址;
  • 用户授权
grant update/insert/delete on 数据库名.表名 to 用户
#授予所有权限
grant all privileges on *.* to 用户;
  • 撤销授权
revoke  权限 on 数据库名.表名 from 用户名;
  • 查看授权
show grants for 用户名;

DQL(数据查询语言)

select 字段名1,字段名2... from 表名 where条件;
#过滤掉重复的列值
select distinct 列名 from 表名;
#连接多个列作为新列
select concat(列名,列名,..) from 表名;
#连接多个列作为新列,使用分隔符分开
select concat_ws('@',列名,列名,..) from 表名;
#给列名起别名
select 列名 as 别名 from 表名;
#模糊查询,比如查询包含hello的列
select 列名 from 表名 where 列名 like '%hello%';#%表示匹配一个或多个字符
#在支持fulltext索引的myisam引擎中使用全文检索
select 列名 from 表名 where match(索引的列名) against(查找的值);
Mysql命令小记_第2张图片

Mysql命令小记_第3张图片

  • 排序
#降序和升序
select  列名 from 表名 order by 排序所依据的列名 desc/asc;
  • 分组查询
select 列名 from 表名 group by 列名;
select 列名 from 表名 group by 列名 having语句;
  • 内连接查询(where可以使用on代替)
    Mysql命令小记_第4张图片
  • 左右连接查询(这里没体现出差异)
    Mysql命令小记_第5张图片
    Mysql命令小记_第6张图片
  • 联合查询
select 语句 union all select语句
  • limit m,n(从第m条开始选择n条记录)

others

  • 连接数据库
mysql -u 用户名 -p 密码;
  • 查看用户与主机的对应关系?
use mysql;#使用默认安装的数据库
#从user表中选出user,host字段,里面记录了数据库用户和主机的对应关系
select user,host from user;

Mysql命令小记_第7张图片

  • 修改用户与主机的对应关系
update user set host where user="用户名";
  • 刷新权限
flush privileges;
  • 修改密码
#终端下,知道原密码的情况下
mysqladmin -u 用户名 -p 原密码 password 新密码
#不知道密码的情况下
https://blog.csdn.net/whimewcm/article/details/83621358
  • 查看编码设置
    Mysql命令小记_第8张图片

  • 查询sql_mode等
    Mysql命令小记_第9张图片

  • 查询autocommit等
    Mysql命令小记_第10张图片

  • 指定引擎和编码

create table 表名(字段...) engine=InnoDB charset=utf8
alter table 表名 engine=Innodb;
  • 查看支持的引擎
show engines;
  • 查看支持的字符集
show character set;
  • 指定字符集编码
create database 数据库名 character set gbk;
create table 表名(字段名..) charset=gbk;  
  • 查看表状态
show table status\G;
  • transaction
使用transaction使得commit(确认修改)或rollback(撤销操作)之前的语句能够不中断的执行。结构如下:
start transaction
一系列sql语句
commit /rollback
  • 关闭自动提交(不写入硬盘,先保存在内存,直到手动commit)
set autocommit=0
  • 创建视图
create view 视图名(字段名.....) as select语句;
  • 修改视图
alter view 视图名(字段名...) as select语句;
  • 删除视图
drop view 视图名 if exists 视图名;
  • 触发器
create trigger 触发器名 before/after insert/update/delete on  表名 for each row
begin
	sql语句
end;
  • 修改分界符
delimiter //
#可以将结束符;修改为//
  • 删除触发器
drop trigger 触发器名;

sql语句优化查询

  • 开启慢查询日志(记录查询时间较长的查询语句)
show variables like "%slow%";
 Variable_name             | Value                                                         |
+---------------------------+---------------------------------------------------------------+
| log_slow_admin_statements | OFF                                                           |
| log_slow_slave_statements | OFF                                                           |
| slow_launch_time          | 2                                                             |
| slow_query_log            | OFF                                                           |
| slow_query_log_file       | xxxx											|
#slow_query_log默认关闭,使用下列语句打开
set global log_slow_queries=on;
  • 修改query_time对应的时间值
show variables like "%long%";
+----------------------------------------------------------+-----------+
| Variable_name                                            | Value     |
+----------------------------------------------------------+-----------+
| long_query_time                                          | 10.000000 |
| performance_schema_events_stages_history_long_size       | 10000     |
| performance_schema_events_statements_history_long_size   | 10000     |
| performance_schema_events_transactions_history_long_size | 10000     |
| performance_schema_events_waits_history_long_size        | 10000     |
+----------------------------------------------------------+-----------+
set long_query_time=0.5;
  • 查看语句执行的详细信息
explain 查询语句;
  • 性能分析工具profiling
show variables like "%profiling%";
#打开
set profiling=on;
#查看语句运行性能
show profiles;
+----------+------------+-----------------------------------+
| Query_ID | Duration   | Query                             |
+----------+------------+-----------------------------------+
|        1 | 0.00234400 | show variables like "%profiling%" |
|        2 | 0.00016400 | ste profiling=off                 |
+----------+------------+-----------------------------------+
#指定query_id查询,找到耗时大的status处理;
show profile for query 2;
+---------------+----------+
| Status        | Duration |
+---------------+----------+
| starting      | 0.000108 |
| freeing items | 0.000051 |
| cleaning up   | 0.000005 |
+---------------+----------+
  • 查询缓存
show variables like "%cache%";
  • 建立索引
alter table  表名 add index 索引名(列名);
create index 索引名 on 表名(列名);
  • 导入和导出
#导入
load data infile "文件路径名" into table 表名;
#导出
select 列名,列名... into outfile '导出文件名路径' from 表名;
  • 备份数据库
#使用mysql自带的mysqldump
mysqldump -u 用户名 数据库名>备份文件名;
mysqldump -u 用户名 数据库名 表名>备份文件名;
  • 修改auto_increment的起始值
alter table 表名 auto_increment=100#从100开始递增
  • 复制表
#列属性和索引都相同,但是是空表。
create table 新表名 like 旧表名;
#完全复制表
create table 新表名  select * from 旧表名;
  • 修改用户名
rename user 旧用户名 to 新用户名;
  • 修改密码
set password=password("密码");#修改当前用户密码
set password for user=password("密码");
  • 导入数据库
#如果你想批量处理某些SQL语句或者某些语句内容比较多,您可以考虑将SQL语句放到一个文件
#中然后告诉mysql从该文件读取输入。实现过程为:创建一个文本文件textfile,并包含你想
#要执行的语句。然后在命令行终端调用mysql:
mysql db name< text file --user=root;
#如果text_file文件中已经使用了USE db_name 指定了数据库,那么可以直接在命令行输入:
mysql< text_file --user=root;
  • 为字段追加默认值
 alter table school alter column subordinated_to set default '教育部';

你可能感兴趣的:(mysql)