MySQL学习-SELECT语句(二)

201 阅读2分钟

「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战」。

前言

上篇我们学习了一部分SELECT语句,有兴趣的小伙伴可以阅读(MySQL学习-SELECT语句(一) - 掘金 (juejin.cn)
下面继续学习MySQL中的SELECT语句。

去除重复行

关键字DISTINCT去除查询的重复行

  • 举例
SELECT DISTINCT department_id
FROM employees; 查询的结果会去重
  • 错误的写法:
SELECT salary, DISTINCT department_id
FROM employees;
1. 这里DISTINCT需要放在所有列的前面,上面这种写法会报错。
2. 放在所有列的前面表示对后面所有列名的组合进行去重。

空值参与运算

  1. 关键字null表示空值
  2. null不等同于0,'', 'null'
  3. 空值参与运算时,结果也一定为空。
  • 举例
SELECT salary * (1 + commission_pct) * 12 AS "年工资", commission_pct
FROM employees; 这里查出的年工资有null的结果,是因为commission_pct字段
有null值,所以空值参与运算时,结果也一定为空
  • 解决空值方案
SELECT salary * (1 + IFNULL(commission_pc, 0)t) * 12 AS "年工资", commission_pct
FROM employees; 这里引入IFNULL关键字,表示commission_pc字段为空值时,
取值为0进行运算

着重号``

  • 举例
SELECT * FROM ORDER; 运行我们会发现报错,虽然我们有order表,
但是order属于SQL中的关键字,这里程序会认为是关键字ORDER,
没有在FROM后发现表名,所以报错。
  • 解决关键字方案
SELECT * FROM `order`; 这里我们使用着重号``,就可以正确的查询了。
我们需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突,
如果有冲突的情况,使用着重号``可以解决。

查询常数

一般来说我们只从一个表中查询数据,通常不需要增加一个固定的常数列,但是我们想整合不同的数据源,用常数列作为这个表的标记,就需要查询常数。 比如,我们想查询employees表中的员工姓名,同时增加一列字段company,这个字段固定值为"jym",可以这样写:

SELECT 'jym' as company, last_name
FROM employees; 这样就可以查询出有固定列名为company,值都为'jym'的结果。