ps :
针对mysql的:
start transaction
drop table t1;
rollback;

无法回滚删除操作,
其他的数据库中也是一样的, 但是除了oracle(flashback)

现在阿里云上, 数据库不建议使用外键,效率问题

存储引擎:

  create table t1(
  id int auto_increment primary key,
  name varchar(32) not null default ''
  )engine=Innodb charset=utf8;

分类: 
  Innodb
  1.(默认版本包含5.5)
  2.支持事务
  3.不支持全文索引
  4.索引和数据都是在同一个文件中, .ibd
    表的结构实在.frm文件中

  MyIsam
  1.(默认版本5.5以下 5.3)
  2.不支持事务
  3.支持全文索引(类似百度搜索框在数据库搜索)
  4..frm: 表结构
  .MYD: 表数据
  .MYI: 表索引

  memory

  全文索引:
    sphinx

  1).文章,新闻等安全性要求不高的,选myisam
  2). 订单,资金,账单,火车票等对安全性要求高的,选用innodb
  3). 对于临时中转表,可以用memory型 ,速度最快

索引:

  作用: 加快查询的速度
    类比: 新华字典的目录, 可以将索引理解成一个特殊的文件, 然后如果没有这个文件的话, 查询是从前到后查找数据的,
    如果有这个文件的话, 会按照一种特殊的数据结构(二叉树)查找数据

  分类:
    主键索引: 加快查询 + 不能重复 + 不能为空 primary key
    唯一索引: 加快查询 + 不能重复 unique(列名)
    联合唯一索引: 加快查询 + 不能重复 unique(列名1,列名2)
    普通索引: 加快查询 index('列名')

  创建:
    主键索引:
      第一种:
        create table t1(
        id int auto_increment primary key,
        name varchar(32) not null default ''
        )engine=Innodb charset=utf8;
      第二种:
        alter table t1 change id id int auto_increment primary key;

    唯一索引:
      第一种:
        create table t1(
        id int auto_increment primary key,
        name varchar(32) not null default '',
        unique ix_name ('name')
        )engine=Innodb charset=utf8;
      第二种:
        create unique index 索引名称(ix_name) on 表名(t1)(name);
        create unique index 索引名称(ix_name_age) on 表名(t1)(name,age);

    普通索引:
      第一种:
        create table t1(
        id int auto_increment primary key,
        name varchar(32) not null default '',
        index ix_name ('name')
        )engine=Innodb charset=utf8;

      第二种:
        create index 索引名称(ix_name) on 表名(t1)(name);

  删除:
    drop 索引名称(ix_name) on 表名(t1);

  查看索引:
    show index from 表名;

  场景:
    使用频繁的列上加一个索引

  索引的缺点:
    版本5.3以下:
    删除和修改的速度就变慢了

    版本5.5以上:
    删除和修改的速度不是特别的慢

    create table t12(
    id int auto_increment primary key,
    name varchar(32) not null default '',
    email varchar(32) not null default ''
    )engine=Innodb charset=utf8;

  索引的使用:

    explain 工具

      查看sql语句是否用的上索引, 或者查看sql执行效率的工具

      给执行的SQL语句出一个报告, 通过此报告来判断sql语句的执行效率和效果

      id
        查询顺序标识
      select_type
        查询类型
        SIMPLE 简单查询
        PRIMARY 最外层查询
        SUBQUERY 映射为子查询
        DERIVED 子查询
        UNION 联合
        UNION RESULT 使用联合的结果
...
      table
        正在访问的表名
      type
        查询时的访问方式,性能:all < index < range < index_merge < ref_or_null < ref < eq_ref < system/const
        ALL 全表扫描,对于数据表从头到尾找一遍

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

        RANGE 对索引列进行范围查找

        REF 根据索引查找一个或多个值

      CONST 常量
        表最多有一个匹配行,因为仅有一行,在这行的列值可被优化器剩余部分认为是常数,
        const表很快,因为它们只读取一次。
        select nid from tb1 where nid = 2 ;
      SYSTEM 系统
        表仅有一行(=系统表)。这是const联接类型的一个特例。
      possible_keys
        可能使用的索引

      key
        真实使用的

      key_len
        MySQL中使用索引字节长度

      rows
        mysql估计为了找到所需的行而要读取的行数 ------ 只是预估值

      extra
        该列包含MySQL解决查询的详细信息
      “Using index”
        比较好,使用了索引
      “Using where”
        比较好,使用了索引
      “Using temporary”
        没用到索引,或sql语句有问题
      “Using filesort”

        没用到索引,或sql语句有问题
  ES (elasticsearch )
  SQL语句的规则:
    - 不建议使用 like 进行搜索    

    -不建议使用函数
    -类型不一致(规定的和传入的不一致)
    -order by 排序的列没有索引,不建议

  - 组合索引最左前缀
  如果组合索引为:(name,email)
  where name and email -- 使用索引
  where name -- 使用索引
  where email -- 不使用索引

慢日志查询(slow log):

  日志文件: 记录了执行速度特别慢的SQL语句

  开启的步骤:
    1. show variables like '%query%';
    2. set global long_query_time = 1; 设置慢查询的时间
    3. set global slow_query_log = ON 开启慢日志
    4. set global slow_query_log_file = E:\program\mysql-5.6.44-winx64\data\oldboy-slow.log 慢日志文件

普通日志记录(general log):

  SQL审计 (记录sql的操作语句)

  show variables like '%general%';
  +------------------+------------------------------------------------+
  | Variable_name | Value |
  +------------------+------------------------------------------------+
  | general_log | ON |
  | general_log_file | E:\program\mysql-5.6.44-winx64\data\oldboy.log |
  +------------------+------------------------------------------------+
  set global general_log = ON;

权限管理:

  创建用户
  create user '用户名'@'IP地址' identified by '密码';
  creaee user 'zekai'@'192.168.1.123' identified by '123qwe';
  creaee user 'zekai'@'192.168.1.%' identified by '123qwe';
  create user 'zekai'@'%' identified by '123qwe';

  删除用户
    drop user '用户名'@'IP地址';
  修改用户
    rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
  修改密码
    set password for '用户名'@'IP地址' = Password('新密码')
  查看权限
    show grants for '用户'@'IP地址'

  授权:
    grant 权限 on 数据库.表 to '用户'@'IP地址' -- 授权

    grant select on db1.* to 'zekai'@'%';
    grant select on *.* to 'zekai'@'%';
    grant select, insert, delete on db1.* to 'zekai'@'%';
    *.* 所有
    select, insert, delete 权限
  取消授权:
    revoke 权限 on 数据库.表 from '用户'@'IP地址'

  记住:
    flush privileges;

转载于:https://www.cnblogs.com/klw1/p/11042208.html

day-44(2)mysql相关推荐

  1. 理解 OpenStack 高可用(HA) (6): MySQL HA

    本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...

  2. 数据库系统原理与应用教程(058)—— MySQL 练习题(二):单选题

    数据库系统原理与应用教程(058)-- MySQL 练习题(二):单选题 1.在成绩表中查询绩点在 3.7-4.0 之间,并且挂科数为 0 的学生的所有信息.下列SQL语句不正确的是(D). A.SE ...

  3. Mysql(2)——mysql的配置文件信息(基本信息)

    /etc/mysql/mysql.conf.d/mysqld.cnf该路径是mysql配置文件的路径,用vim编辑器打开:vim /etc/mysql/mysql.conf.d/mysqld.cnf ...

  4. Mysql数据库(九)——mysql高阶语句(下)

    Mysql数据库(九)--mysql高阶语句(下) 一.函数 1.数学函数 2.聚合函数 3.字符串函数 4.日期时间函数 二.存储过程 1.简介 2.优点 3.语法 ①.例 ②.参数分类 ③.带参数 ...

  5. Mysql数据库(八)——mysql高阶语句(中)

    Mysql数据库(八)--mysql高阶语句(中) 一.正则表达式(同shell脚本的正则表达式) 1.以"."代替任意一个字符 2.匹配前面字符多次 3.匹配前面字符至少一次 4 ...

  6. Mysql数据库(七)——mysql高阶语句(上)

    Mysql数据库(七)--mysql高阶语句(上) 一.按关键字排序 1.单字段排序 2.多字段排序 二.或/且的运用 三.查询不重复记录 四.对结果进行分组 五.限制结果条目 六.设置别名 使用场景 ...

  7. Mysql数据库(五)——mysql事务及引擎

    Mysql数据库(五)--mysql事务及引擎 一.事务 1.事务的概念 2.事务的ACID特点 ①.原子性(Atomicity) ②.一致性(Consistency) ③.隔离性(Isolation ...

  8. Mysql数据库(四)——mysql索引相关知识

    Mysql数据库(四)--mysql索引相关知识 一.索引的概念 二.索引的优缺点 1.优点 2.缺点 三.创建索引的原则 四.索引的分类和创建方法 1.普通索引 ①.直接创建索引 ②.修改表方式创建 ...

  9. Mysql数据库(三)——mysql数据库高级操作

    Mysql数据库(三)--mysql数据库高级操作 一.指定主键的另一种方式 二.克隆/复制一个表 1.方法一 2.方法二 三.清空表,删除表内数据 1.方法一 2.方法二 3.方法三 4.三个删除方 ...

  10. Mysql数据库(二)——mysql数据库管理

    Mysql数据库(二)--mysql数据库管理 一.常用数据类型 二.查看数据库结构 1.进入数据库 2.查看数据库的信息 3.查看数据库中表的信息 4.显示数据表的结构(字段) 三.SQL语句概述 ...

最新文章

  1. 勒索软件可能已被“终极”解决
  2. 简明python教程 豆瓣-Python 有哪些入门学习方法和值得推荐的经典教材?
  3. 【MCtalk讨论】 短视频平台出路在何方?
  4. oracel Pipelined pipe row的用法
  5. mac 没有所有开发者_为什么开发人员应该像产品所有者那样思考
  6. jQuery的name选择器 模糊匹配
  7. Linux下openSSL安装并颁发证书
  8. 暑假计划(7月23日-8月21日)
  9. 利用git进行word文档的版本管理
  10. Cypress下载安装+问题记录
  11. cve_2019_0708复现踩坑
  12. 为什么你的有道云笔记越来越不好用?三个细节解决你的烦恼
  13. 电脑中病毒,文件夹变成快捷方式
  14. c++ 统计指定字母开头单词的数量
  15. 免费制作在线网站教程
  16. ajax瀑布流插件,jQuery瀑布流无限加载插件:jquery.falless.js
  17. 申宝在线炒股医药板块大涨
  18. 自己动手、丰衣足食!箭头 → ← → ← ---2
  19. mysql 查询最接近某时间的数据
  20. 常用的DOS命令(cmd基本操作)

热门文章

  1. FPU烤机是什么意思 FPU烤机用什么软件
  2. “校园舆情监测系统”网站设计及网页编辑总结
  3. Live Messenger ,Gmail ,Orkut ,Wallop
  4. linux创建后门账户,Linux后门
  5. java后台程序员转android 之《三B》 支付宝支付 client join server 及采坑记录
  6. 关于DOTS的个人总结
  7. 高权重网站外链如何建设和打造?
  8. YOUTH(年轻)——Samuel Ullman(塞缪尔·乌尔曼)
  9. 桌面一直出现计算机符号,电脑桌面图标有箭头怎么办 电脑桌面图片箭头去掉方法【图文】...
  10. BYOD 2.0的安全管理:MAM