MySQL数据库使用的一些基础

本文详细介绍了SQL执行的顺序,并对比了UNION与UNIONALL的区别。此外还讲解了LEFT JOIN、RIGHT JOIN与INNER JOIN的不同之处及使用注意事项。同时提到了一些函数使用的注意事项以及常用的SQL命令。

一、SQL 执行顺序

熟悉SQL的执行顺序才能写出效率高的SQL语句
(8)SELECT (9)DISTINCT (11)<Top Num> <select list>
(1)FROM [left_table]
(3)<join_type> JOIN <right_table>
(2)ON <join_condition>
(4)WHERE <where_condition>
(5)GROUP BY <group_by_list>
(6)WITH <CUBE | RollUP>
(7)HAVING <having_condition>
(10)ORDER BY <order_by_list>

其中UNION ALL在ORDER BY之前

二、UNION和UNION ALL

1.使用准则
a)所有查询中的列数和列的顺序必须相同。
b)数据类型必须兼容。
UNION:会删除相同的记录并按照查询字段的先后进行排序。如(SELECT name,age from test_data,会以name为标准优先排序)
UNION ALL:保留重复记录,不进行排序。

三、LEFT JOIN、RIGHT JOIN和INNER JOIN

(为方便描述,把三个JOIN 左边的表叫左表,右边的表叫右表)

1.LEFT JOIN 是以左表为基准,把左表的每一条数据遍历右表的每一条数据,ON为条件,只要ON条件成立则连接成功。ON条件不成立的保留左表内容,以null填补空缺字段。
2.RIGHT JOIN 与 1 相反
3.INNER JOIN 也是遍历每一条数据,然后保留左表和右表共同存在的数据。
4.LEFT JOIN、RIGHT JOIN和INNER JOIN使用的一些注意事项

a)当进行关联操作时,关注其中一张表的关联条件字段是否会造成影响(ON条件关联字段)。如进行数据统计等会造成数据偏大,不准确。见下图


b)关联时应该使数据量尽量小,因为他们要比对(左表行数*右表行数)次

c)进行过滤时针对实际情况进行条件选择(如过滤条件:on后面用and进行连接或者on后面用where进行过滤,on后面跟 and 过滤效率更高,但是要考虑使用情况,如left join等等。on后面跟where进行条件过滤会在左表和右表关联完成以后再次进行过滤,效率较低。具体问题具体分析,根据实际需要选择and和where)

四、一些函数的使用时候的注意事项

1.SUM() 当字段不存在数据时,返回的是null,需要在java程序中进行null判断处理
2.count()当表为空时返回是0,不用处理。

五、一些常用的命令

1.查看表结构的三种方式
a)desc tablename;
b)show create table tablename;
c)use information_schema;select * from columns where table_name='tablename';

2.查看执行状态
show processlist;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值