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;//213select 'abc' + 90;//90select 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: 使用场景1: case 要判断的字段或表达式 when 常量1 Then 要显示的值1或语句1 when 常量2 Then 要显示的值2或语句2 else 默认值 end 使用场景2: case 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.索引一般加在常用查询字段上