Java学习:MYSQL总结

##知识点思维导图
Java学习:MYSQL总结_第1张图片
##常见误区
###group by
####group by 分组后,前面的列只能出现分组的列和组函数,不能有其他的列。eg:

select sid,avg(score) from sc group by sid;
select sid,cid,avg(score) from sc group by sid;  //(x),不能出现cid,按照sid分组后,一个sid包                              //含很多个cid

####做表的连接时,尤其要注意,容易出现上述错误。
###连接查询和子查询
####连接查询时,对于相同的列要进行表名的限制,可以是表名限制,也可以是表名的扩展名进行限制。eg:

select s.sid,c.cname,count(*) from sc s inner join course c on s.cid=c.cid group by s.cid;
//若前边的s.sid不进行限制,会出现不确定列的错误

####子查询时,把子查询当做一个值需要注意的是:子查询出现的列只能是要与住查询匹配的列,不能出现其他的列。eg:

select sid from sc group by sid having count(*)<(select count(*) from course);

###JDBC中,建立数据库索引
####主键索引和普通索引区别:
#####主键索引会把这一行的值都存储到叶子节点,根据主键可一次找到对应的值。
#####普通索引叶子节点只存储了主键的值和索引列的值,其余列的信息要回主表进行查找。
因此,主键索引比普通索引的速度快。
####普通索引
#####进行select*查询时,会导致回主表,谨慎使用
#####建立复合索引来提高效率,但是,需要注意,只有主键索引和查询的条件与最左边的索引一致时,才会提高效率。eg:

create index idx_name on student (name,sex,age) where sex='男';//这种情况下,是按照、//name排序,按照sex查找时,还是要一个一个进行排查,并没有提高效率。
create index idx_name on student (name,sex,age) where name='李李' and sex='男';//按照最左匹配规则,从最左边进行查询

##总结
这一周,把sql的知识系统的学习了,把前边遗忘和理解有问题的知识点搞清楚了,以上是我在学习中遇到的问题,进行了总结,还有一些不是很容易会范的错误没有写出来,但是后期会进行注意。
这周过的真心充实,静下心,按照自己的计划一步一步的走,查缺补漏,以一种适合自己的方法走才是最重要的。加油吧!努力的女孩结果一定不会那么差

你可能感兴趣的:(Java学习:MYSQL总结)