# 8、MYSQL命令整理



### 查询

```
show table status from mysql like 'user'\G;**   **该命令将输出Mysql数据库管理系统的性能及统计信息**
grant select,insert,update,****DELETE****,****CREATE****,****DROP** **on mysql.\* to 'tom'@'localhost' identified by '123456';     授权tom用户，查询、插入、更新、删除、创建、删除库 的权限**
desc table;                       显示数据表的属性，属性类型，主键信息 ，是否为 NULL，默认值等其他信息。**
show index from table;            显示数据表的索引信息，包括PRIMARY KEY(主键)**
show status like 'Threads%';      查看当前连接数据库的数量** Threads_connected**、当前并发数**Threads_running
show processlist;                 查看当前连接的状态**
show variables like '%max_connections%'         查看当前数据库设置的最大连接数！** set GLOBAL max_connections=256; 
show global status like 'Max_used_connections'; 查看服务器响应的最大连接数，**服务器响应的最大连接数值占服务器上限连接数值的比例值在10%以上

create table t1(t1_id int not null auto_increment,
​    -> t1_title varchar(100) not null,
​    -> t1_author varchar(100) not null,
​    -> submission_data date,
​    -> primary key (t1_id)
​    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;                   创建t1表，设置t1_id 主键，并自动增加，并设置submission_data 日期自动更新，但是不能自动添加时间
insert into t1(t1_title, t1_author, submission_data) value('aa', 'bb', NOW());      插入数据，时间会自动更新


SELECT * from tutorials_tbl WHERE BINARY tutorial_author='sanjay';    数据库默认不比较字符串大小写，使用binary，区分大小写
select * from t1 where t1_title like "%jay";                          查询表中已“jay”结尾的所有记录
```

### 修改

```
alter table t1 modify submission_data datetime;                      修改t1表中submission_data类型
alter table t1 add  column  t1_end  varchar(100)  default  null;     在表中增加一个列t1_end
alter table t1 drop column  t1_end;                                  删除表中一列t1_end
alter table t1 rename t2;                                            修改表的名字
alter table t1 add primary key;                                      删除表中设置的主键索引，如果删除不了，请先修改列的类型，把自动增长auto_increment 给更改
alter table t1  add  primary key(t1_id);                             设置某列为主键
```

### 更新

```
update students set name="小明", age=19 where tel="13288097888";    将手机号为 13288097888 的姓名改为 "小明", 年龄改为 19
update students set tel=default where id=5;                         将 id 为 5 的手机号改为默认的
update students set age=age+1;                                      将所有人的年龄增加 1
UPDATE runoob_tbl SET runoob_title = REPLACE(runoob_title, 'C++', 'Python') where runoob_id = 3;   更新 runoob_id 为 3 的runoob_title 字段值的 "C++" 替换为 "Python"：
```

### 删除

```
DELETE FROM tl WHERE tl_id=3;           删除 tl表中t1_id=3 的数据
```

***

### 多表联合查询

```
https://www.cnblogs.com/tugenhua0707/p/10771935.html

1）内连接：join, inner join
2）外连接：left join, left outer join, right join, right outer join, union;
3) 交叉连接：cross join
join的含义是：用于多表中字段直接的联系。
基本语法如下：
select * from table1 inner|left|right join table2 on conditiona
说明：table1 是指第一张表。table2是指第二张表。 on 后面的含义是：满足这个条件。
join按照功能可以分成如下三类：
1) inner join(内连接，或叫等值连接)：取得两个表中存在连接匹配关系的记录。
2）left join(左连接)：取得左表(table1)完全记录，右表(table2)如果有条件相符合的记录就匹配，否则为null;
3) right join(右连接)： 取得右表(table2)完全记录，左表(table1)如果有条件相符合的记录就匹配，否则为null;
```
