MySQL从入门到进阶,看这一篇文章就够了( 二 )

  • Index 表示被替换的位置, 从 1 开始
  • Lebgth 表示被替换的长度
    • upper(str),ucase(str)将字母改为大写
    • lower(str),lcase(str)将字母改为小写
    • left(str,length)返回 str 字符串的前 length 个字符
    • right(str,length)返回 str 字符串的后 length 个字符
    • substring(str,index,length)返回 str 字符串从 index 位开始长度为 length 个字符(index 从 1 开始)
    • reverse(str)将 str 字符串倒序输出
    日期函数
    • curdate()、current_date( ) 获取当前日期
    • curtime()、current_time( ) 获取当前日期
    • now()获取当前日期和时间
    • datediff(d1、d2)d1 和 d2 之间的天数差
    • adddate(date,num)返回 date 日期开始,之后 num 天的日期
    • subdate(date,num)返回 date 日期开始,之前 num 天的日期
    聚合函数
    • Count(字段)根据某个字段统计总记录数(当前数据库保存到多少条数据)
    • sum(字段)计算某个字段的数值总和
    • avg(字段)计算某个字段的数值的平均值
    • Max(字段)、min(字段)求某个字段最大或最小值
    14. MySQL 中有哪几种锁?MyISAM 支持表锁,InnoDB 支持表锁和行锁,默认为行锁 。
    表级锁:开销小,加锁快,不会出现死锁 。锁定粒度大,发生锁冲突的概率最高,并 发量最低 。
    行级锁:开销大,加锁慢,会出现死锁 。锁力度小,发生锁冲突的概率小,并发度最 高 。
    15. MySQL 数据优化 。
    • 优化数据类型
    1. 避免使用 NULL,NULL 需要特殊处理, 大多数时候应该使用 NOT NULL,或者使用一个特殊的值,如 0,-1 作为默认值 。
    2. 仅可能使用更小的字段,MySQL 从磁盘读取数据后是存储到内存中 的,然后使用 cpu 周期和磁盘 I/O 读取它,这意味着越小的数据类 型占用的空间越小.
    • 小心字符集转换
    1. 客户端或应用程序使用的字符集可能和表本身的字符集不一样,这需要 MySQL 在运行过程中隐含地进行转换,此外,要确定字符集如 UTF8 是否支持多字节字符,因此它们需要更多的存储空间 。
    • _优化 count(mycol) 和 count()*
    • 优化子查询
    1. 遇到子查询时,MySQL 查询优化引擎并不是总是最有效的,这就是为 什么经常将子查询转换为连接查询的原因了,优化器已经能够正确处理 连接查询了,当然要注意的一点是,确保连接表 (第二个表) 的连接列 是有索引的,在第一个表上 MySQL 通常会相对于第二个表的查询子 集进行一次全表扫描,这是嵌套循环算法的一部分 。
    • 优化 UNION
    1. 在跨多个不同的数据库时使用 UNION 是一个有趣的优化方法,UNION 从两个互不关联的表中返回数据,这就意味着不会出现重复的 行,同时也必须对数据进行排序,我们知道排序是非常耗费资源的,特 别是对大表的排序 。
    2. UNION ALL 可以大大加快速度,如果你已经知道你的数据不会包括重 复行,或者你不在乎是否会出现重复的行,在这两种情况下使用 UNION ALL 更适合 。此外,还可以在应用程序逻辑中采用某些方法避 免出现重复的行,这样 UNION ALL 和 UNION 返回的结果都是一样 的,但 UNION ALL 不会进行排序 。

    【MySQL从入门到进阶,看这一篇文章就够了】


    推荐阅读