一、IFNULL函数
语法:
IFNULL(expression_1,expression_2);
如果expression_1
不为NULL
,则IFNULL
函数返回expression_1
; 否则返回expression_2
的结果。
适用场景:
编写一个 SQL 查询,获取并返回 Employee
表中第二高的薪水 。如果不存在第二高的薪水,查询应该返回 null
。【LeetCode--数据库--176】
二、LIMIT子句
LIMIT nums OFFSET start / LIMIT start,nums 检索记录范围为[start,start+nums)
LIMIT nums 检索记录范围为[0,0+nums) //行0~行nums-1
在MySQL中,limit和offset字段后面只接受非负整数(意味着负数、小数都不行)或者单一变量(意味着不能用表达式)。虽然MySQL允许使用0作为LIMIT和OFFSET参数,但在某些其他数据库管理系统中,0可能被视为无效的参数值。因此,在使用其他数据库时,请务必查看其文档以确定正确的语法和选项。
三、rank要加单引号
查询结果中的列名有rank的,要加单引号。
例:
select a.Score as Score,
(select count(distinct b.Score) from Scores b where b.Score >= a.Score) as 'rank'
from Scores a
order by a.Score DESC;
原因: 找不到明确的资料,知道的同学我们在评论区交流!
四、空值检查
在创建表时,表设计人员可以指定其中的列是否可以不包含值。在一个列不包含值时,称其为包含空值NULL。它与字段包含0、空字符串或仅仅包含空格不同。判断某一行的某一列是否为空值时,判断用IS。
例:要求返回没有价格(空prod_price)的所有产品
SELECT prod_name FROM products WHERE prod_price IS NULL;
五、每张表都必须要有主键吗?
主键不是非要不可!
要不要主键主要看业务方面需求
1.是否满足业务要求
2.数据查询效率(主键可以提高查询效率,当然合理的索引替代也可以)
3.看表的功能,如果是用来存储大量数据,并需要经常查询这个表的,建立主键可以加快查询效率从而降低服务器的负担,如无此需求,则不需要,建立反而会占用服务器的资源
4.对多张表没有关联操作的话,不设置也没有什么影响