MySQL小讲04.基本的SELECT语句

320 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情

基本的SELECT语句

基本语法

SELECT 标识选择哪些列
FROM 标识从哪个表中选择
  • 选择全部列:
SELECT *
FROM departments;

image.png

  • 选择特定的列:
SELECT department_id, location_id
FROM departments;

image.png

列的别名

  • 重命名一个列
  • 紧跟列名,也可以在列名和别名之间加入关键字AS,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。
  • AS 可以省略,建议别名简短,见名知意 ,例:
SELECT last_name AS name, commission_pct comm
FROM employees;

image.png

SELECT last_name "Name", salary*12 "Annual Salary"
FROM employees;

image.png

一般情况下,除非需要使用表中所有的字段数据,最好不要使用通配符'*'。使用通配符虽然可以节省输入查询语句的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。通配符的优势是,当不知道所需要的列的名称时,可以通过它获取它们。在生产环境下,不推荐你直接使用 SELECT * 进行查询。

去除重复行

在SELECT语句中使用关键字DISTINCT去除重复行: 例:

SELECT DISTINCT department_id
FROM employees;

原表:

image.png

image.png

过滤数据

  • 语法
SELECT 字段1,字段2
FROM 表名
WHERE 过滤条件
  • 举例:
SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90;

image.png

空值参与运算

在employees表中,commission_pct字段为null,如下图:

image.png

  • 所有运算符或列值遇到null值,运算的结果都为null
SELECT employee_id,salary,commission_pct,
12 * salary * (1 + commission_pct) "annual_sal"
FROM employees;

image.png

在 MySQL 里面, 空值不等于空字符串。一个空字符串的长度是 0,而一个空值的长度是空。而且,在 MySQL 里面,空值是占用空间的。

  • 把null当做0来计算,使用IFNULL()单行函数进行判断
# IFNULL(exper1,exper2):判断exper1是否为空,是则用exper2代替
# 举例
SELECT employee_id,salary,commission_pct,
12 * salary * (1 + IFNULL(commission_pct, 0)) "annual_sal"
FROM employees;

image.png

  • 判断表中某一字段是否为null 原表中commission_pct为null的记录共有45+27=72条:

image.png

  • 使用等号运算符(=)判断null:
# 查找employees表中commission_pct为null的字段记录
SELECT employee_id
FROM employees
WHERE commission_pct = NULL;
# 结果查找的记录为空,说明等号运算符(=)并不能识别null

image.png

等号运算符(=)判断等号两边的值、字符串或表达式是否相等,如果相等则返回1,不相等则返回0。在使用等号运算符时,遵循如下规则:

  1. 如果等号两边的值、字符串或表达式都为字符串,则MySQL会按照字符串进行比较,其比较的
  2. 是每个字符串中字符的ANSI编码是否相等。
  3. 如果等号两边的值都是整数,则MySQL会按照整数来比较两个值的大小。
  4. 如果等号两边的值一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较。
  5. 如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。
  • 使用安全等于运算符(<=>)判断null
# 查找employees表中commission_pct为null的字段记录
SELECT employee_id
FROM employees
WHERE commission_pct <=> NULL;

image.png

安全等于运算符(<=>)与等于运算符(=)的作用是相似的, 唯一的区别 是‘<=>’可以用来对NULL进行判断。在两个操作数均为NULL时,其返回值为1,而不为NULL;当一个操作数为NULL时,其返回值为0,而不为NULL。

获取testdb.sql

链接:pan.baidu.com/s/1IPjM6E6Z… 提取码:1234