SQL限定查询

SQL限定查询

WHERE

运算符

  • 关系运算:>、<、=、!=(<>)
  • 范围运算:BETWEEN…AND
  • 空判断:IS NULL、IS NOT NULL
  • IN判断:IN、NOT、EXISTS()(复杂查询)
  • 模糊查询:LIKE、NOT LIKE

各关系运算符之间可用逻辑运算符(AND、OR)进行连接。

NO

查找工资低于2000的雇员信息:

SELECT *
FROM EMP
WHERE NOT SAL > 2000;

BETWEEN…AND

主要功能是进行范围的查询,效率比关系与逻辑的组合更高一些。

WHERE 字段|数值 BETWEEN 最小值 AND 最大值

查询出工资在1500~3000的雇员信息:

SELECT *
FROM EMP
WHERE SAL BETWEEN 1500 AND 3000;

日期判断

查询所有在1981年雇佣的雇员信息:

SELECT *
FROM EMP
WHERE HIREDATE BETWEEN '01-1月-81' AND '31-12月 -1981';

IS NULL & IS NOT NULL

在数据库里,关系可以判断数据,但null既不是字符串,也不是数字,所以在SQL中只能够通过IS NULL与IS NOT NULL来判断是否为空。

查询奖金为NULL的雇员信息:

SELECT *
FROM EMP
WHERE COMM IS NULL;

IN

IN指的是根据一个指定的范围进行数据查询。

1)查询出雇员编号是7369、7566、7788、9999的雇员信息:

SELECT *
FROM EMP
WHERE EMPNO IN7369,7566,7788,9999);

2)IN和NOT IN

在使用NOT IN的时候如果查找的数据范围之中包含有NULL值,那么不会有任何的结果返回,IN操作无此操作。

SELECT *
FROM EMP
WHERE EMPNO NOT IN7369,7566,7788,9999,null);

结果不会有任何数据返回。所以使用NOT IN操作时要保证没有null出现。

LIKE

实现模糊查询,使用LIKE必须使用一下两个匹配符号:

  • “_”:匹配任意的一位符号;
  • “%”:匹配任意的符号(包含匹配0位、1位、多位)。

查询所有雇员姓名中以字母A开头的雇员信息:

SELECT *
FROM EMP
WHERE ENAME LIKE 'A%';

注意:

  • 如果在使用LIKE进行限定查询的时候,没有设置任何关键字,那么表示查询全部。
  • LIKE可以在任意的数据类型(数值、字符串、日期等)上使用(原生支持)。

查询排序

1)语法格式及执行顺序

【③选出所需的数据列】SELECT [DISTINCT] *|列 [别名], 列 [别名], 列 [别名]…..

【①确定数据来源】FROM 表名称 [别名]

【②筛选数据】[WHERE 限定条件(s)]

【④数据排序】[ORDER BY 排序字段[ASC|DESC], 排序字段[ASC|DESC], …..];

由于ORDER BY子句在SELECT之后执行,所以可以使用别名。

  • ASC:升序(默认);
  • DESC:降序,从高到低。

2)查询所有的雇员信息,按工资从高到低排序:

SELECT *
FROM EMP
ORDER BY SAL DESC;

排序可以在任意数据类型上进行。

3)查询所有的雇员信息,按雇佣日期从早到晚排序:

SELECT *
FROM EMP
ORDER BY HIREDATE;

4)混合排序

按照工资由高到低排序,如果相同,则按雇用日期由早到晚排序:

SELECT *
FROM EMP
ORDER BY SAL DESC, HIREDATE;

查询出所有办事员的编号、姓名、职位、年薪,按年薪由高到低排序:

SELECT EMPNO,ENAME,JOB,SAL*12 INCOME
FROM EMP
WHERE JOB = 'CLERK'
ORDER BY INCOME DESC;

猜你喜欢

转载自blog.csdn.net/qq_34802416/article/details/79866240