FROM employees

WHERE salary BETWEEN 2500 AND 3500;

Lower limit Upper limit

IN

使用 IN运算显示列表中的值。

SELECT employee_id, last_name, salary, manager_id

FROM employees

WHERE manager_id IN (100, 101, 201);

LIKE

  • 使用 LIKE 运算选择类似的值
  • 选择条件可以包含字符或数字:

_% 代表零个或多个字符(任意个字符)

_ 代表一个字符

SELECT FROM WHERE

first_name employees

first_name LIKE ‘S%’;

LIKE

  • ‘%’和‘-’可以同时使用。

SELECT last_name

FROM employees

WHERE last_name LIKE ‘_o%’;

NULL

使用 IS (NOT) NULL 判断空值。

SELECT last_name, manager_id

FROM employees

WHERE manager_id IS NULL;

逻辑运算

操作符 含义
AND 逻辑并
OR 逻辑或
NOT 逻辑否

AND

AND 要求并的关系为真。

SELECT employee_id, last_name, job_id, salary

FROM employees

OR

OR 要求或关系为真。

SELECT employee_id, last_name, job_id, salary

FROM employees

WHERE salary >= 10000

OR job_id LIKE ‘%MAN%’;

NOT

SELECT last_name, job_id

FROM employees

WHERE job_id

NOT IN (‘IT_PROG’, ‘ST_CLERK’, ‘SA_REP’);

ORDER BY子句

  • 使用 ORDER BY 子句排序

_ASC(ascend): 升序

_DESC(descend): 降序

  • ORDER BY 子句在SELECT语句的结尾。

ORDER BY hire_date

降序排序

DESC

按别名排序

annsal

多个列排序

  • 按照ORDER BY 列表的顺序排序。

SELECT last_name, department_id, salary

FROM employees

ORDER BY department_id, salary DESC;

  • 可以使用不在SELECT 列表中的列排序。

3 — 分组函数

什么是分组函数

分组函数作用于一组数据,并对一组数据返回一个值。

EMPLOYEES

组函数类型

  • AVG()
  • COUNT()
  • MAX()
  • MIN()
  • SUM()

组函数语法

SELECT [column,] group_function(column), …

FROM table

[WHERE condition]

[GROUP BY column]

[ORDER BY column];

AVG(平均值)和SUM (合计)函数

可以对数值型数据使用AVG 和 SUM 函数。

SELECT AVG(salary), MAX(salary),

MIN(salary), SUM(salary)

FROM employees

WHERE job_id LIKE ‘%REP%’;

MIN(最小值)和 MAX(最大值)函数

可以对任意数据类型的数据使用 MIN 和 MAX 函数。

SELECT MIN(hire_date), MAX(hire_date)

FROM employees;

COUNT(计数)函数

COUNT(*) 返回表中记录总数,适用于任意数据类型

SELECT COUNT(*)

FROM employees

WHERE department_id = 50;

COUNT(计数)函数

COUNT(expr) 返回expr不为空的记录总数*。*

SELECT COUNT(commission_pct)

FROM employees

WHERE department_id = 50;

分组数据

EMPLOYEES

分组数据: GROUP BY 子句语法

可以使用GROUP BY子句将表中的数据分成若干组

SELECT column, group_function(column)

FROM table

[WHERE condition]

[GROUP BY group_by_expression]

[ORDER BY column];

明确:WHERE一定放在FROM后面

GROUP BY 子句

在SELECT 列表中所有未包含在组函数中的列都应该包含在 GROUP BY 子句中。

SELECT department_id, AVG(salary)

FROM employees

GROUP BY department_id ;

GROUP BY 子句

包含在GROUP BY 子句中的列不必包含在SELECT 列表中

SELECT AVG(salary)

FROM employees

GROUP BY department_id ;

使用多个列分组

在GROUP BY子句中包含多个列

SELECT department_id dept_id, job_id, SUM(salary)

FROM employees

GROUP BY department_id, job_id ;

非法使用组函数

• 不能在 WHERE 子句中使用组函数。

• 可以在 HAVING 子句中使用组函数。

SELECT department_id, AVG(salary)

FROM employees

WHERE AVG(salary) > 8000

GROUP BY department_id;

WHERE AVG(salary) > 8000

*

ERROR at line 3:

ORA-00934: group function is not allowed here

WHERE 子句中不能使用组函数

过滤分组

EMPLOYEES

过滤分组: HAVING 子句

使用 HAVING 过滤分组:

  1. 行已经被分组。
  2. 使用了组函数。
  3. 满足HAVING 子句中条件的分组将被显示。

SELECT FROM [WHERE [GROUP BY [HAVING [ORDER BY

column, group_function

table condition]

group_by_expression] group_condition] column];

HAVING 子句

SELECT department_id, MAX(salary)

FROM employees

GROUP BY department_id

HAVING MAX(salary)>10000 ;

4 — 多表查询

beauty表 boys表

  • 如果想查询女神名称和对应男神名称,肿么办?

多表连接

**语法:**select name,boyName from beauty,boys;

beauty表 boys表

笛卡尔集的错误情况:

select count(*) from beauty;

假设输出12行

select count(*)from boys;

假设输出4行

最终结果:12*4=48行

笛卡尔集

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐