美文网首页MySQL
mysql语句进阶

mysql语句进阶

作者: 古巷挂青灯 | 来源:发表于2019-06-10 19:30 被阅读0次

一.alter 修改 create 创建 drop 删除

1、总览库

show databases;

2、创建库db01 设置字符集utf8mb4

create database  db01 charset  utf8mb4;

3、查看数据库db01字符集

show create  database db01;

4、查看建表语句

show create table city;                                                  

5、删除数据库

drop database db01;     

6、修改字符集

alter database xuexiao charset utf8mb4;                                  

7、查看字符集表格

show charset; 

8、删除表t1 (*****禁用)

drop table  t1;                                                  

9、查看学生表的列信息

10、在学生表中追加一列(默认在最后加) 后面注意跟随定义属性信息

alter  table  xuesheng ADD  weibo varchar(64) comment '微博号';          

11、在学校库的学生表中在sname列后追加一列微信(后面注意定义的属性信息)

alter  table  school.xuesheng  add weixin  varchar(64) comment'微信' after sname;   

12、 在学生表的第一列前面加一列(int为属性)

13、删除学生表中的num列

alter  table  xuesheng drop num;

14、属性信息 修改学生表中 sname这一列里面的属性信息

alter  table  xuesheng  modify   sname; 

15、修改学生表中 sname 列的名字为 sn 并修改属性信息

alter  table  xuesheng  change    sname   sn    varchar(32) ;            

16、过滤学生表中id列小于5的

17、(复制结构一样的空表)

create table ceshi like xuesheng;  

18、 查看引擎

select @@default_storage_engine; 

19、表名字

alter  table;

20、 修改表的存储引擎 (也可以整理碎片)

engine  innodb; 

常见表,并定义列的属性
create table xuesheng

| 列1 属性(数据类型、约束、其他属性) ,
列2 属性,
列3 属性
)


二、DQL应用数据查询语句

1、 from子句 select 列1,列2 from 表

where   过滤条件   select * from city where countrycode='chn';

2、group by +常用聚合函数

ax():最大值  min():最小值   avg():平均值  sum():总和  count():个数;

3、group by + 聚合函数公式(类似于组)

select  countrycode  sum(population)  from  city  group by countrycode

4、having (比较大小)

select  district sum(population) from city  where countrycode='chn' group by district   having sum(population) <1000000
统计中国每个省的总人口数,将总人口数小于100w

5、order by + limit( 实现先排序,by后添加条件列 )

select  * from city  where countrycode='chn'  order by population desc  limit 5 , 5 ; (desc 代表从大到小。limit 5 , 5表示忽略前5行从第6行开始取5行,前5行就是limit 5)
查看中国所有的城市,并按人口数进行排序(从大到小)并取第5行到第10行   

6、distinct:去重复

select  disyinct(countrycode)  from  city;

7、join 多表连接查询

四个表 1,2,3,4  要查询的内容 需要1表和2表有关联就要用到join  on
他俩必须有相同项才可以
同理 要查询的内容需要这四张表同时工作的话,
那就是 1表和2表关联 join  on  然后是他们关联的那列,
然后2表和3表关联join  on 关联的内容 ,
然后是3表和4表相关联join  on  关联的内容,
然后就可以查出来要查询的内容了

8、设置权限和密码

grant all on wordpress.* to 'wordpress'@'localhost' identified by 'oldboy123';
所有权限 数据库.表信息   用户信息  允许访问的网段信息  设置密码信息
revoke all on wordpress.*  from  'wordpress'@'localhost'  ;

三、建索引原则

(1) 必须要有主键,如果没有可以做为主键条件的列,创建无关列

(2) 经常做为where条件列  order by  group by   join on, distinct 的条件(业务:产品功能+用户行为)

(3) 最好使用唯一值多的列作为索引,如果索引列重复值较多,可以考虑使用联合索引

(4) 列值长度较长的索引列,我们建议使用前缀索引.

(5) 降低索引条目,一方面不要创建没用索引,不常使用的索引清理,percona toolkit(xxxxx)

(6) 索引维护要避开业务繁忙期

四、mysqldump,mysqlbinlog全备()

  1. mysqldump 全备
mysqldump -uroot -p  -A  -R  -E  --triggers    --master-data=2  --single-transaction --set-gtid-purged=OFF >/data/backup/full.sql;
(--master-data=2  可以在备份好的文件里 大约20行的位置查看到开始备份之前pos号码起始位置信息)
  1. 准备恢复
查看备份文件/data/backup/full.sql下面binlog日志文件以及pos起始信息
利用pos号码查找 gtid信息起始位置 到最后结束的位置(如果有删除的操作,比如最后误删除了数据库或者表,就查找到他的上一次)
进入数据库 show binlog evens in 'mysql-bin.000005'  limt 15;
  1. 截取到恢复数据gtid 并输出到一个以.sql结尾的文件里
mysqlbinlog --skip-gtids  --include-gtids='e56bba59-603b-11e9-9f86-000c29613223:22-25' /data/backup/mysql-bin.000003
>/data/backup/binlog.sql
  1. 恢复
set sql_log_bin=0;  临时关闭
  1. 先恢复全备
source  /data/backup/full.sql;           全备恢复
source   /data/backup/binlog.sql;     当天数据恢复

五、xbk增量全被操作

1.全被

innobackupex --user=root --password=456 --no-timestamp /data/backup/full &>/data/backup/full.log   
(--on-timestamp 加上后可以指定文件的名字,如果不加会默认会在目录下生成一个以时间为名字的。)

2.增量

innobackupex --user=root --password=456 --no-timestamp --incremental --incremental-basedir=/data/backup/full  /data/backup/inc1 &>/data/backup/inc1.log

3.增量

innobackupex --user=root --password=456 --no-timestamp --incremental --incremental-basedir=/data/backup/inc1  /data/backup/inc2 &>/data/backup/inc2.log
===================================(以下为出现问题后的操作)

4.查看全备及增量的 xtrabackup_checkpoints 文件看lsn能否对上

cat full/xtrabackup_checkpoints 
cat inc1/xtrabackup_checkpoints     
cat inc2/xtrabackup_checkpoints    对面lsn号

5.查看事故前一天增量的gtid号 方便后期找回

cat  inc2/xtrabackup_binlog_info

6.全备整理

  innobackupex --apply-log --redo-only /data/backup/full

7.合并inc1到full中

innobackupex --apply-log --redo-only --incremental-dir=/data/backup/inc1 /data/backup/full

8.合并inc2到full中

innobackupex --apply-log  --incremental-dir=/data/backup/inc2 /data/backup/full(少了一个--redo-only是因为inc2是最后一天备份的)
(有几次增量备份就合并几次)

9.最后一次整理备份全部

 innobackupex --apply-log  /data/backup/full

10.截取周二 23:00 到drop 之前的 binlog

mysqlbinlog --skip-gtids --include-gtids='1afe8136-601d-11e9-9022-000c2928f5dd:7-9' /data/binlog/mysql-bin.000009 >/data/backup/binlog.sql

11.进行恢复

[root@db01 backup]# mkdir /data/mysql/data2 -p
[root@db01 full]# cp -a * /data/mysql/data2  (覆盖形式的恢复)                         
 innobackupex   --copy-bak  /data/backup/full    (此方法目标目录必须为空)
[root@db01 backup]# chown -R mysql.  /data/* 
[root@db01 backup]# systemctl stop mysqld
vim /etc/my.cnf
     datadir=/data/mysql/data2
     systemctl start mysqld
     Master [(none)]>set sql_log_bin=0;
     Master [(none)]>source /data/backup/binlog.sql

12、查看 gtid日志路径

Master [(none)]>Master [(none)]>show binlog  events  in  'mysql-bin.000012'; 

13、source 恢复数据的目标路径

mysqlbinlog --skip-gtids --include-gtids='6799bcdc-55bf-11e9-8e74-000c2978b5d1:14-17' /data/binlog/mysql-bin.000012 >/data/backup/bin.sql

change master to
master_host='10.0.0.220',
master_user='repl',
master_password='123' ,
MASTER_AUTO_POSITION=1;

grant replication slave on . to repl@'10.0.0.%' identified by '123';

六、

Mysql忘记密码
Mysql_safe --skip-grant-tables --skip-networking
--skip-grant-tables 在连接层关闭验证模块,所有验证表不加载内存
--skip-networking 关闭tcp/ip协议,跳过网络
Mysql 登陆修改密码
Flush privileges 手动加载授权表
Alter user root@’localhost’ identified by ‘123’;

show status like 'innodb_row_lock%'; 查询锁

相关文章

  • Java进阶-MySQL-进阶

    一、Java进阶-MySQL-进阶 1.1 单表访问方法   MySQL执行查询语句的方式称之为访问方法或者访问类...

  • mysql语句进阶

    一.alter 修改 create 创建 drop 删除 1、总览库 2、创建库db01 设置字...

  • MySql笔记——常用命令篇

    mysql 命令 DDL 语句 分组统计进阶 elt + interval 实现分组统计 case when实现分...

  • Mysql——进阶语法

    Mysql-进阶语法 导语 在上一篇《MySQL的基本语法》中我们了解了mysql基本的增删改查的语句。本篇我们将...

  • php操作mysql语句

    mysql语句 php操作mysql语句

  • 2018-03-20

    MYSQL查询语句 MYSQL复杂操作语句 MYSQL多表查询方法 函数部分

  • java基础-day44-MySQL进阶

    Mysql进阶 存储过程 1 什么是存储过程 1.存储过程,带有逻辑的sql语句2.之前的sql没有条件判断,没有...

  • BigData-MySQL总结大全(一)苏暖人

    BigData之MySQL总结大全 MYSQL常用的基本语句 MYSQL常用的基本语句 例:SELECT TOP ...

  • mysql常用语句

    一、Mac端:打开MYSQL服务器语句:brew services start mysql关闭MYSQL服务器语句...

  • MySQL常用语句

    MySQL常用语句 tags: MySQL 常用语句 语法 随便写的标签 建表 insert 语句 msyql 把...

网友评论

    本文标题:mysql语句进阶

    本文链接:https://www.haomeiwen.com/subject/dhutfctx.html