mysql笔记

218 阅读4分钟

Mysql学习笔记

1.函数

  • 1.Year 函数:获取datetime数据类型的年份,可以group by操作

  • 2.truncate() 函数:截取字符串 truncate(68.88,0)=68

  • 3.Date_format() 函数:日期格式化操作

    Date_format(1996-03-12 19:23:22,'%Y/%m/%d') // 1996/03/12

  • 4.group_concat() 函数:把字符串拼接在一起。

  • 5 分页函数

    select * from job limit 3; //只取前三条数据

    select * from job limit 2,3; //从第二条开始,取前三条数据

  • 6.+号的作用:

    select '123' + 90;//213

    select 'abc' + 90;//90

    select null + 90;//null

  • 7.concat():字符串拼接;

    cancat(str1,str2);//如果有null则整个为null

  • 8.like通配符的问题:_ 转异

    like '_$_%' escape '$'//转义字符

  • 9.<=>:安全等于 判断是否等于,可以为NULL

2.单行函数:

  • 1.字符函数:

      length:获取字节个数
      concat:拼接
      upper: 大写
      lower: 小写
      substr,substring:截取字符串
      	substr('abcde',3)//从第3开始截全部cde
      	substr('abcde',1,3)//abc
      instr:返回字串在主串中存在的最大索引。不存在为0
      	instr('abcde','cde');//3,
      trim:去除前后空格。
      	trim('a' from 'aaa12a2aa');//12a2
      lpad:用指定的字符实现左填充长度
      lpad('aa',7,'*')//*****aa*/
      rpad:
      replace:替换指定的值
      replace(str1,1,2);`
    
  • 2.数学函数:

      round:四舍五入
         round (-1.55);//-2
         round (1.567,2);//1.57
      ceil:向上取整
      floor:向下取整
      truncate:截断
      	truncate(1.669,1);1.6
      mod:取余 mod(a,b) =a-a/b*b`
    
  • 3.日期函数:

      now:返回系统日期+当前时间
      curdate:返回系统日期,不包括时间	
      curtime:返回当前时间,不包括日期
      year(time);返回年
      month(time);返回月名
      monthName(time);返回英文月名
      str_to_date();将日期格式的字符串转换成日期
      	str_to_date('1996-03-12','%Y/%m/%d') //%c月份不带0
      date_format();将日期转换成字符
      	//Date_format(1996-03-12 19:23:22,'%Y/%m/%d')
      DATEDIFF(date1,date2);两日期相差的天数
    
  • 4.其他函数:

  • 5.流程控制函数:

      `if:if(a>b,a,b):true 返回a,false 返回b`
      
      case:
      	使用场景1case 要判断的字段或表达式
      	  when 常量1 Then 要显示的值1或语句1
      	  when 常量2 Then 要显示的值2或语句2
      	  else 默认值 
      	  end
      	使用场景2case
      	  when 条件1 then 要显示的值1
      	  when 条件2 then 要显示的值2
      	  else 默认值
      	  end
    

`

  • 6.分组函数:

    ` sum, avg, max, min,:可以与distinct一起用

      count(*),count(1)
    
      MYISAM存储引擎下,count(*)效率高
    
      INNODB存储引擎下,count(*)和count(1)效率差不多
    
      分组查询:分组前查询where:表中的信息能直接查到的
      	  分组后查询having:表中信息不能直接查询到的,需要通过分组后来查询的。
      	
      group_by 可以支持函数和多个字段分组。`
    
  • 7.子查询:

      标量子查询 一行一列
      
      列子查询   多行1列
      
      行字查询   多行多列
    
  • 8.分页查询:

    limit offset,size offset :要显示条目的起始索引,(起始索引为0) size:要显示的条目的个数。

  • 9.联合查询:

      union 会去重
      union All 不会去重
      
    

开启事务:

1.开启事务
	set sutocommit=0;
	start transaction;
2.编写sql语句
3.结束事务
	commit;提交事务
	rollback;回滚事务

事务隔离级别: 并发产生的问题

1.脏读:更新的问题

2.不可重复读:

3.幻读:插入的问题

隔离级别:

	 1.读未提交

	  2.读已提交
	  
	  3.可重复读
	  
	  4.串行化

Mysql的逻辑架构: 连接层

数据库的引擎

		INNODB      MYISAM
`事务		支持		不支持

数据行锁定	支持		不支持

外键约束	支持		不支持

全文索引	不支持		支持

表空间大小	较小		较大`

MYISAM:节约空间,速度较快

INNODB:安全性高,事务处理,夺标多用户操作

索引:是帮助MySql高效获取数据的数据结构。 提取句子主干,就可以得到索引的本质,

索引的分类:
		主键索引(primary key)
			唯一标识,主键不可重复,只能有一个列
		唯一索引(unique key)
			避免重复的列出现,唯一索引可以重复,可以多个列都标识唯一索引
		常规索引(key/index)
			默认的,index,key关键字来设置
		全文索引(FullText)
			快速定位数据

显示所有的索引信息。

show index from table

增加索引:

alter table table add 索引名 列名 
explan 分析sql执行的状况

索引原则:

1.索引不是越多越好
2.不要对经常变动数据加索引
3.小数据量的表不需要加索引
4.索引一般加在常用查询字段上