• MySQl总结


    SQL基础

    SQl简介

    SQL全称是structure qurry language,由IBM在上个世纪70年代开发出来。

    SQL语句的分类

    • DDL(数据定义数据)
      • 主要是数据库内部对象的创建,删除,修改的操作语言
      • 创建数据库
        • create database name
      • 使用数据库
        • use dbname
      • 删除数据库
        • drop database name
      • 创建表
        • create table tablename(column_name_1,column_name_2)
      • 删除表
        • drop table name
      • 修改表
        • alter table name modify ename varchar(20)
        • alter table name add age int (3)
        • alter table name drop column age
        • alter table name change age age1 int(4)
        • alter table emp add birth date arter ename
        • alter table name rename new_name
    • DML(数据操作数据)
      • 插入数据
        • insert into tablename(field1,field2 ) values(value1,value2)
      • 更新数据
        • update tablename set field1 = value1,....where condition
      • 删除记录
        • delete from tablename where condition
      • 查询记录
        • select * from tablename where condition
        • 查询不重复的记录
          • select distinct columname from tablename
        • 条件查询
          • select * from tablename where condition
        • 排序和限制
          • select * from tablename where condition order by field1 [desc|asc]
          • select * from limit offset_start,row_count
        • 聚合函数
          • select [field1,field2,...field] fun_name from table_name [where condition] [gruop by field1] [having condiyion]
        • 表连接
          • 左连接
          • 右连接
        • 子查询
          • in
          • not in
          • =
          • !=
            等等
        • 记录联合
          • union 或者union all
    • DCL(数据控制语句)

    数据支持类型

    数值类型

    • tingint
    • smallint
    • mediumint
    • int
    • bigint
    • float
    • double

    日期时间类型

    • date
    • datetime
    • timestamp
    • time
    • year

    ENUM类型

    SET类型

    MYSQL运算符(非常重要,特殊查询时能够用到)

    • 算数运算符
    • 比较运算符
    • 逻辑运算符
    • 位运算符
    • 运算符的优先级

    常用函数

    • 字符串函数
    • 数值函数
    • 日期和时间函数
    • 流程函数
    • 其他函数

    SQL开发

    Mysql引擎概述

    引擎的优缺点

    设置引擎的方式

    MyISAM的特点

    InnoDB的特点

    MERGE的特点

    MeMORY的特点

    合适的数据类型

    • char与varchar
    • TEXT与BLOB
    • 浮点数与定点数
    • 日期类型选择

    字符集

    • Unicode
    • 汉字以及一些常见的字符集
    • 怎么选择合适的字符集
    • 字符集的设置
      • 服务器级
      • 数据库级
      • 表级
      • 字段级
    • 数据库字符集和校验规则
    • 表字符集和校对规则
    • 列字符集和校对规则
    • 连接字符集与校对规则
    • 字符集的修改步骤

    索引的设计和使用

    设计索引的原则

    • 使用唯一索引
    • 使用短索引
    • 不要过度使用索引

    BTREE索引与HASH索引

    视图

    视图的特点

    • 简单
    • 安全
    • 数据独立

    视图操作

    • 创建视图
    • 删除视图
    • 查看视图

    存储过程和函数

    • 什么是存储过程和函数
    • 创建,修改存储过程或者函数
    • 删除存储过程或者函数
    • 查看存储过程和函数
      • 状态
      • 定义
      • 信息
    • 变量使用
      • 定义
      • 赋值
    • 定义条件和处理
      • 条件的定义
      • 条件处理
    • 流程控制
      • if
      • case
      • loop
      • leave
      • iterate
      • repeat
      • while

    触发器

    • 创建触发器
    • 删除触发器
    • 查看触发器
    • 触发器的使用

    事务控制和锁定语句

    • lock table 和 unlock table
    • 事务控制
    • 分布式事务的使用
      • 原理
      • 语法
      • 可能的问题

    SQL安全问题

    sql注入

    • 应对措施
      • prepareStatement + Bind-variable
      • 使用转换函数
      • 自定义函数进行校验

    常用SQL技巧与常见问题

    正则表达式

    rand()提取随机行

    group by 的with rollup 字句做统计

    big group function做统计

    SQL优化

    优化sql的一般步骤,查询sql的执行频率,对频率高的sql语句进行优化能够达到效率提升的作用

    查询SQL的执行频率

    定位执行效率低下的sql语句

    • 日志文件

    分析低效sql的执行计划

    确定问题并采用相应的优化措施

    MySQL使用索引

    • 使用索引
      • 对于创建的多列索引,只要查询条件用到了最左边的列,索引一般会使用
      • 对于like查询,后面如果是常量并且只有%号不在第一个字符串,索引才可能会被使用
      • 对大的文本进行搜索,使用全文索引而不使用like'%...%'
      • 列名是索引,使用column_name is null 将会使用索引
    • 存在索引但不适用索引
    • 查看索引的使用情况

    两个简单的优化方法

    • 定期分析表和检查表
    • 定期优化表

    常用的sql优化

    • 大批量的插入数据
    • 优化insert语句
    • 优化group by 语句
    • 优化order by语句
    • 优化嵌套查询

    使用sql提示

    • use index
    • ignore index
    • force index

    优化数据库对象

    • 优化表的数据类型
    • 拆分提高表的访问效率
    • 逆规范化
    • 使用中间表

    锁问题

    • 表级锁
    • 行级锁
    • 页面锁

    myISAM表锁

    • 查询表级锁的争用的情况

    Mysql表级锁的锁模式

    • 表共享读锁
    • 表独占写锁

    如何加表锁

    并发插入

    MyISAM的锁调度

    事务及其ACID

    • A 原子性
    • C 一致性
    • I 隔离性
    • D 持久性

    并发事务处理带来的问题

    • 更新丢失
    • 脏读
    • 不可重复读
    • 幻读

    事务的隔离级别

    • 未提交读
    • 已提交读
    • 可重复度
    • 可序列化

    间隔锁

    InnoDB在不同级别隔离下的一致性读记锁的差异

    什么时候使用表锁

    死锁

    应用优化

    使用连接池

    减少对MYSQL的访问

    使用查询缓存

    负载均衡

    采用分布式数据库架构

  • 相关阅读:
    java中sleep()和wait()区别
    那些年遇到的坑--------“集合转数组”
    HashMap中推荐使用entrySet方式遍历Map类集合KV而不是keySet方式遍历
    java.util.ConcurrentModificationException 异常原因和解决方法
    java.lang.Exception: No tests found matching
    https和http的主要区别
    交换性别sql
    判断奇偶数
    Jmeter安装使用
    java.io.EOFException: Unexpected EOF read on the socket
  • 原文地址:https://www.cnblogs.com/xiaozhazhahui/p/14616971.html
Copyright © 2020-2023  润新知