Mysql学习笔记2

来源:互联网 发布:淘宝苹果4s外壳多少钱 编辑:程序博客网 时间:2024/06/05 19:48

where查询子句:
select goods_id,cat_id,goods_name from goods where goods_id in (select max(goods_id) from goods group by cat_id);
通过where的查询子句能够很好的扩张查询效率,它是内层的查询结果作为外层的比较条件。
mysql> select goods_id,cat_id,goods_name from goods where goods_id in (select max(goods_id) from goods group by cat_id);
+———-+——–+——————————+
| goods_id | cat_id | goods_name
+———-+——–+——————————+
| 6 | 11 | 胜创kingmax内存卡
| 7 | 8 | 诺基亚n85原装立体声耳机hs-82
| 16 | 2 | 恒基伟业g101
| 18 | 4 | 夏新t5
| 23 | 5 | 诺基亚n96
| 26 | 13 | 小灵通/固话20元充值卡
| 28 | 15 | 联通50元充值卡
| 30 | 14 | 移动20元充值卡
| 32 | 3 | 诺基亚n85
+———-+——–+——————————+
from型子查询:(把内层的查询结果供外层再次查询)
定义:from子查询就是把子查询的结果(内存里的一张表)当作一张临时表,然后再对它进行处理。
exists型子查询:(把外层查询结果拿到内层,看内层的查询是否成立)
定义:exists子查询就是对外层表进行循环,再对内表进行内层查询。和in ()差不多,但是它们还是有区别的。主要是看两个张表大小差的程度。若子查询表大则用exists(内层索引),子查询表小则用in(外层索引);
关于Mysql中的连接查询:
在mysql中连接查询主要有三种方式:内连接查询(inner join),左连接查询(left join),右连接查询(right join)。
内连接查询主要实在两张表中做并集,取出两张表有相关的元素,左连接是取出左边表全部,但是除了交集部分的元素时为空的,右连接和左连接是差不多的情况。
union查询是吧两条或者多条结果集合并成一条结果集。union语句必须满足一个条件:各语句的列数要相同,列名称未必要一致,列名称会使用第一条sql语句的列名称为准。
注意:使用union是完全相等的行会进行合并,合并是比较耗时的操作,一般不然union进行合并,使用union all语句可以阻止合并。
还需要注意的一点是,union子句中不用写order by
在mysql中float,double类型的数据会有精度损失的,而定点型的数据decimal是很精确的没有精度损失。
主键与自增
primary key,auto_increment,在Mysql中,primary key中的列元素不能重复,它能识别每一行。在一张表中只有一列为auto_increment,且该列必须加索引(index(列名)或者key(列名))。
存储的引擎之间的区别(Myisam和InnoDB):

这里写图片描述