文章目录
- 🔥MySQL中定义空值
- 🔥MySQL中的别名
- 🔥MySQL中去除重复
- 🔥查询中的行选择
- 🔥MySQL中的比较条件
- 🔥其他比较条件
- 🔥逻辑条件
- 🔥优先规则
- 🔥使用 ORDER BY 排序
🔥MySQL中定义空值
如果一行中的某个列缺少数据值,该值被置为 null, 或者说包含一个空。
空是一个难以获得的、未分配的、未知的,或不适用的值。空和 0 或者空格不相同。 0 是一个数字,而空格是一个字符。
算术表达式中的空值
示例:
计算年薪包含佣金。
select 12*salary*commission_pct from employees;
🔥MySQL中的别名
使用列别名
SELECT 列名 AS 列别名 FROM 表名 WHERE 条件;
示例:
查询 employees 表将雇员 last_name 列定义别名为 name。
select last_name as name from employees;
select last_name name from employees;
使用表别名
SELECT 表别名.列名 FROM 表名 as 表别名 WHERE 条件;
示例:
查询 employees 表为表定义别名为emp,将雇员 last_name 列定义别名为 name。
select emp.last_name name from employees emp;
🔥MySQL中去除重复
除去相同的行
SELECT DISTINCT 列名 FROM 表名;
示例:
查询 employees 表,显示唯一的部门 ID。
select distinct department_id from employees;
🔥查询中的行选择
用 WHERE 子句限制从查询返回的行。一个 WHERE 子句包含一个必须满足的条件,WHERE 子句紧跟着FROM 子句。如果条件是 true,返回满足条件的行。
在语法中:
语法 | 含义 |
---|---|
CONDITION | 由列名、表达式、常数和比较操作组成 |
WHERE | 限制查询满足条件的行 |
SELECT * | 投影列 FROM 表名 WHERE 选择条件;
示例:
查询 departments 表中部门 ID 为 90 的部门名称与工作地点 ID。
select department_name,location_id from departments where department_id =4;
🔥MySQL中的比较条件
符号 != 也能够表示不等于条件。
示例一:
查询 employees 表中员工薪水大于等于 3000 的员工的姓名与薪水。
select last_name,salary from employees where salary >= 3000;
示例二:
查询 employees 表中员工薪水不等于 5000 的员工的姓名与薪水。
select last_name,salary from employees where salary<>5000;
🔥其他比较条件
使用BETWEEN条件
可以用 BETWEEN 范围条件显示基于一个值范围的行。指定的范围包含一个下限和一个上限。
示例:
查询 employees 表,薪水在 3000-8000 之间的雇员ID、名字与薪水。
select employee_id,last_name,salary
from employees
where salary between 3000 and 8000;
使用IN条件
示例:
查询 employees 表,找出薪水是 5000,6000,8000 的雇员ID、名字与薪水。
select employee_id,last_name,salary from employees
where salary in(5000,6000,8000);
使用LIKE条件
示例:
查询 employees 中雇员名字第二个字母是 e 的雇员名字。
select last_name
from employees
where last_name like '_e%';
使用NULL条件
NULL 条件,包括 IS NULL 条件和 IS NOT NULL 条件。
IS NULL 条件用于空值测试。空值的意思是难以获得的、未指定的、未知的或者不适用的。因此,你不能用 = ,因为 null 不能等于或不等于任何值。
示例一:
找出 emloyees 表中那些没有佣金的雇员雇员ID、名字与佣金。
select employee_id,last_name,commission_pct
from employees
where commission_pct is null;
示例二:
找出 employees 表中那些有佣金的雇员ID、名字与佣金。
select employee_id,last_name,commission_pct
from employees
where commission_pct is not null;
🔥逻辑条件
逻辑条件组合两个比较条件的结果来产生一个基于这些条件的单个的结果,或者逆
转一个单个条件的结果。当所有条件的结果为真时,返回行。
SQL 的三个逻辑运算符是:
⭐AND
⭐OR
⭐NOT
可以在 WHERE 子句中用 AND 和 OR 运算符使用多个条件。
示例一:
查询 employees 表中雇员薪水是 8000 的并且名字中含有e 的雇员名字与薪水。
select last_name,salary
from employees
where salary = 8000 and last_name like '%e%';
示例二:
查询 employees 表中雇员薪水是 8000 的或者名字中含有e 的雇员名字与薪水。
select last_name,salary
from employees
where salary = 8000 or last_name like '%e%';
示例三:
查询 employees 表中雇员名字中不包含 u 的雇员的名字。
select last_name
from employees
where last_name not like '%u%';
🔥优先规则
在图片的例子中,有两个条件:
● 第一个条件是 job_id 是 AD_PRES 并且薪水高于 15,000。
● 第二个条件是 job_id 是 SA_REP。
在图片中的例子有两个条件:
● 第一个条件是 job_id 是 AD_PRES 或者 SA_REP 。
● 第二个条件是薪水高于$15,000
🔥使用 ORDER BY 排序
在一个不明确的查询结果中排序返回的行。ORDER BY 子句用于排序。如果使用了 ORDER BY 子句,它必须位于 SQL 语句的最后。
SELECT 语句的执行顺序如下:
⭐FROM 子句
⭐WHERE 子句
⭐SELECT 子句
⭐ORDER BY 子句
示例一:
查询 employees 表中的所有雇员,显示他们的ID、名字与薪水,并按薪水升序排序。
select employee_id,last_name,salary
from employees order by salary;
select employee_id,last_name,salary
from employees order by salary asc;
示例二:
查询 employees 表中的所有雇员,显示他们的ID与名字,并按雇员名字降序排序。
select employee_id,last_name
from employees order by last_name desc;
使用别名排序
示例:
显示雇员ID,名字。计算雇员的年薪,年薪列别名为annsal,并对该列进行升序排序。
select employee_id,last_name ,12*salary annsal
from employees order by annsal;
多列排序
示例:
以升叙排序显示 DEPARTMENT_ID 列,同时以降序排序显示 SALARY 列。
select department_id,salary
from employees order by department_id asc ,salary desc;