1.存储过程

  

delimiter //
create procedure insert_data(in rows int)
begin
DECLARE n INT DEFAULT 1;
drop table if exists row300w;
create table row300w(id int,name varchar(30));
while n < rows do
insert into row300w(id,name) values(n,concat('alex',rows));
set n = n + 1;
end while;
end//
delimiter ;

  

  1) 模板

    create procedure 存储过程名(

     in 变量表名 数据类型,

out @变量名,                        # 另一种定义变量方式

    inout @变量名)

        begin

          。。。。。

        end

2)  执行存储过程

     call 存储过程名(参数,。。。)

   3)  定义变量

    declare 变量  数据类型

   4) pycharm中调用存储过程

      cursor.callproc('存储过程名',(参数。。。))

5) 常见流程控制语句

     循环语句:

      while 条件 do 。。。 end while;

      repeat 。。。until 条件 end repeat;

      标志:loop 。。。 if 条件 then

      leave 标志;

          end if;

        end loop;

      https://www.cnblogs.com/ClassNotFoundException/p/6369843.html

     CASE语句:可以用到查询,更新等语法中

      https://www.jianshu.com/p/5112428a13b3

      (1)select case 变量   // 或case(变量)

         when 值 then 。。。

         when 值 then 。。。

          。。。。。

       else 。。。

                    end  字段名

     if (条件,条件真时结果,条件假时结果):

     ifnull(a,b) a不为null 返回a,否则返回b

nullif(a,b) 如果a==b 返回null 否则a

2.权限

  1) 创建用户,修改用户名和密码,删除用户

    create user ‘xxx’@‘192.168.1.%’ identified by ‘123’;

    create user ‘xxx’@‘%’ identified by ‘123’;

    rename user ‘用户名’@‘ip地址’ to ‘新用户名’@‘ip地址’

    set password for ‘用户名’@‘ip地址’=password(‘新密码’);

  2) 授权,撤销授权

    grant all privileges on *.* to '用户名'@‘ip地址’

    show grants for '用户'@'IP地址'
    revoke all on *.* from '用户'@'IP地址'
    
    取消来自远程服务器的mjj用户所有数据库的所有的表的权限
    revoke all privileges on *.* from 'mjj'@'%';

3.mysql 备份

  mysqldump -uroot -p 数据库名 > 导出文件路径

  mysqldump -uroot -p  -d 数据库名 > 导出文件路径

  mysqdump -u root -d db10 < db1.sql -p # 导入文件至数据库

4.索引

  写在前面:

    

无索引: 从前往后一条一条查询
有索引:创建索引的本质,就是创建额外的文件(某种格式存储,查询的时候,先去格外的文件找,定好位置,然后再去原始表中直接查询。但是创建索引越多,会对硬盘也是有损耗。 建立索引的目的:
a.额外的文件保存特殊的数据结构
b.查询快,但是插入更新删除依然慢
c.创建索引之后,必须命中索引才能有效

  单例索引:

    普通索引:仅有一个加速查找的作用

      create index 索引名 on 表名(列名);

      create table xxx(

            .....

            index 索引名(列名));

      drop index 索引名 on 表名;

      show index 索引名 from 表名;

    唯一索引:加速查找+唯一约束(可含null)

      创建 create unique index 索引名 on 表名(列名);

      drop index 索引名 on 表名;

    主键索引:加速查找+唯一约束(不含null)

     alter table 表名 add primary key(列名);

     alter table 表名 drop primary key;

     alter table 表名 modify 列名 int ,drop primary key;

  组合索引

    普通组合索引,和索引合并的区别   

    create index 索引名 on 表名(列名1,列名2);

  空间索引

  索引覆盖和索引合并

  正确使用索引:

    创建索引、命中索引、正确使用索引

    尽量避免使用like、函数、or、类型不一致、!=、>、<、order by

  组合索引最左前缀:

5.慢日志

(1) 进入MySql 查询是否开了慢查询
show variables like 'slow_query%';
参数解释:
slow_query_log 慢查询开启状态 OFF 未开启 ON 为开启
slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)

(2)查看慢查询超时时间
show variables like 'long%';
ong_query_time 查询超过多少秒才记录 默认10秒

(3)开启慢日志(1)(是否开启慢查询日志,1表示开启,0表示关闭。)
set global slow_query_log=1;
(4)再次查看
show variables like '%slow_query_log%';

(5)开启慢日志(2):(推荐)
在my.cnf 文件中
找到[mysqld]下面添加:
slow_query_log =1
     slow_query_log_file=C:\mysql-5.6.40-winx64\data\localhost-slow.log
    long_query_time = 1

参数说明:
slow_query_log 慢查询开启状态 1 为开启
slow_query_log_file 慢查询日志存放的位置
long_query_time 查询超过多少秒才记录 默认10秒 修改为1秒

 

6.执行计划

  explain + 查询sql-用于显示SQL执行信息参数,根据参考信息可以进行sql优化;

   主要的type参数:查询的访问方式,性能:

    all < index < range < index_merge < ref_or_null <ref < eq_ref <system/const

    all:  全表扫描 ,有limit则找到不在扫描

    index:  全索引扫描,对索引从头到尾找一遍

    range:  对索引列进行范围查找

    index_merge:  合并索引,使用多个单例索引搜索

    ref:  根据索引找到一个值或多个值

    eq_ref:  连接时使用primarykey 或unique类型

    const:  常量

    system:系统 表仅有一行。  

  。。。。。。。。。。。。

7.分页优化查询

  

python全栈开发day58-mysql存储过程,权限,索引,慢日志,执行计划,分页优化处理的更多相关文章

  1. Python全栈开发:Mysql(二)

    视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT *FROM (SELEC ...

  2. Python全栈开发:Mysql(一)

    一.概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL Serve ...

  3. Python全栈开发之---mysql数据库

    1.数据库的安装和连接 #数据库安装 pip install PyMySQL #数据库操作 import pymysql db = pymysql.connect("数据库ip", ...

  4. 巨蟒python全栈开发数据库攻略6:索引2&重要内容汇总

    1.索引的添加和删除 2.正确命中索引举例,explain优化神奇的简单使用 3.联合索引 4.简述慢日志记录 5.用户创建和权限分配 6.mysqldump逻辑备份,浅谈主从复制和读写分离 7.浅谈 ...

  5. Win10构建Python全栈开发环境With WSL

    目录 Win10构建Python全栈开发环境With WSL 启动WSL 总结 对<Dev on Windows with WSL>的补充 Win10构建Python全栈开发环境With ...

  6. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)

    python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 impor ...

  7. python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...

  8. python全栈开发目录

    python全栈开发目录 Linux系列 python基础 前端~HTML~CSS~JavaScript~JQuery~Vue web框架们~Django~Flask~Tornado 数据库们~MyS ...

  9. Python全栈开发【面向对象进阶】

    Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...

  10. Python全栈开发【面向对象】

    Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...

随机推荐

  1. 通过flask实现web页面简单的增删改查bootstrap美化版

    通过flask实现web页面简单的增删改查bootstrap美化版 项目目录结构 [root@node1 python]# tree -L 2 . ├── animate.css ├── fileut ...

  2. 从外部设置传入Go变量

    前提:必须在build/run时指定 -ldflags="-X main.a=2.0 -X main.b=1" , 且a,b必须是string的变量,不能是常量, 不能是struc ...

  3. a标签的4种状态及设置CSS

    a:link 超链接的默认样式 a:visited 访问过的(已经看过的)链接样式 a:hover 鼠标处于鼠标悬停状态的链接样式 a:active 当鼠标左键按下时,被激活(就是鼠标按下去那一瞬间) ...

  4. ACM-ICPC 2018 焦作赛区网络预赛 G Give Candies

    There are NNN children in kindergarten. Miss Li bought them NNN candies. To make the process more in ...

  5. Gradle更小、更快构建APP的奇淫技巧

    本文已获得原作者授权同意,翻译以及转载原文链接:Build your Android app Faster and Smaller than ever作者:Jirawatee译文链接:Gradle更小 ...

  6. 整理oracle 树形查询

    注:本文参考了<整理oracle 树形查询> sql树形递归查询是数据库查询的一种特殊情形,也是组织结构.行政区划查询的一种最常用的的情形之一.下面对该种查询进行一些总结: create ...

  7. 十大web安全扫描工具

    本文来源:绿盟整理  <十大web安全扫描工具> 十大web安全扫描工具 扫描程序可以在帮助造我们造就安全的Web 站点上助一臂之力,也就是说在黑客"黑"你之前, 先测 ...

  8. 自执行匿名函数: (function() { /* code */ })();

    1,常见格式:(function() { /* code */ })(); 2,解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括 ...

  9. 图书管理系统(无中间件,用装饰器的)-----未基于FORM组件

    目的:实现图书的增删改查 models.py from django.db import models # Create your models here. class Book(models.Mod ...

  10. jenkins持续集成:jenkins+SVN

    实现jenkins从svn拉取最新的代码,再执行驱动脚本进行自动化测试 新建一个任务 输入任务名,选“构建一个自由风格的软件项目”,点左下角“确定” 丢弃旧的构建,如下设置为保留3天内的10条构建记录 ...