MySql基础补漏笔记
Posted wujingtaocoding
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySql基础补漏笔记相关的知识,希望对你有一定的参考价值。
在mysql教程|菜鸟教程系统复习的时候有一些知识点还没掌握透的或者思维方式还没完全跟上的地方,写了一个笔记,讲道理此笔记对除我之外的任何读者不具有任何实用价值,只针对我在复习MySQL基础过程中的查漏补缺。
MySQL查询:
MySQL不支持全连接,所以用左连接+union+右连接实现完全连接。
MySQL中union操作符用于连接两个以上的select语句的结果组合到一个查询结果中。
多个select语句union时会删除重复的数据。
NULL值处理:
MySQL中 NULL=NULL 返回false,所以用is null/is not null 来操作值为NULL的字段。
任何值=NULL 都返回false.
正则表达式:
给出正则模式用于REGEXP操作符
regexp操作符的使用实例:查询user表中字段name以wu开头的所有记录
select * from user where name regexp ‘^wu‘;
MySQL事务:
使用场景:处理操作量大、复杂度高的数据。操作量大是指关联较多的数据。
在MySQL中只有使用了Innodb数据库引擎的库、表才支持事务。
使用作用:维护数据完整性
事务满足4个特性(ACID):
原子性、一致性、隔离性、持久性
一致性:在事务开始之前及事务的结束之后,数据的完整性没有被破坏
隔离性:控制事务并发访问的级别
MySQL存储过程:
输入参数 in:
存储过程可访问输入参数的初始值,可在存储过程内部修改,但不能将修改结果返回。
输出参数 out:
存储过程不可访问输出参数的初始值,可在存储过程内部修改,并且可以将修改结果返回。
输入参数、输出参数的区别可以理解为java中参数传递的值传递和引用传递的区别。
输入输出参数 inout:
存储过程既能访问 inout参数的初始值,也能在存储过程内部修改值并且将修改结果返回。
索引:
使用索引可快速访问表中特定的信息,索引是对表中一列或多列的值进行排序的一种结构,类似书籍的目录。
创建索引会提高查询效率,但会降低更新表的效率,因为更新数据不但要保存数据,还需要维护表中的索引文件,因此索引的使用场景是在数据量大且更新操作少的表中。
MySQL序列:
可设置除主键之外的其他自增字段。
以上是对知识点的查漏补缺,下面是关于处理数据过程中思维方式的应用。
重复数据操作:
防止重复数据出现:表设计时可通过对不允许重复的一列或几列进行联合主键限制,或通过unique设置单列的唯一值属性来限制。
统计重复数据:统计person表中lastname、firstname都不重复并且记录数大于1条的数据
select count(*) as rep ,lastname,firstname from person
group by lastname,firstname
having on rep>1;
思维模式:
确定重复列 lastname firstname
在列选择列表(select 后的字段)列出重复列及count(*)
在group by 中列出重复列
Having 子句设置重复数限制
过滤重复数据的两种操作:
1.select distinct ...
2.select ... group by x,y
删除重复数据的两种操作:
1.通过临时表
过滤重复数据插入临时表
删除原表
将临时表重命名为原表
2.通过添加索引或主键来删除表中重复数据
alter ignore table person add primary key(lastname,firstname);--多列不重复
alter table person add unique(firstname);--单列不重复
以上是关于MySql基础补漏笔记的主要内容,如果未能解决你的问题,请参考以下文章