本文共 3656 字,大约阅读时间需要 12 分钟。
SELECT *|{ [DISTINCT] column|expression [alias],...}FROM tableWHERE condition(s)};
操作符 | 含义 |
---|---|
= | 等于( 不 是 = = \color{red}{不是==} 不是==) |
> | 大于 |
>= | 大于、等于 |
< | 小于 |
<= | 小于、等于 |
<> | 不等于( 也 可 以 是 ! = \color{red}{也可以是 !=} 也可以是!=) |
操作符 | 含义 |
---|---|
BETWEEN…AND… | 在两个值之间( 包 含 边 界 \color{red}{包含边界} 包含边界) |
IN(set) | 等于值列表中的一个 |
LIKE | 模糊查询 |
IS NULL | 空值 |
操作符 | 含义 |
---|---|
AND | 逻辑并 |
OR | 逻辑或 |
NOT | 逻辑否 |
示例:查询名叫KING的员工
select * from emp where ename='KING';
示例:查询入职日期是17-11月-81的员工
select * from emp where hiredate='17-11月-81';
示例:查询每月能得到奖金的雇员
分析:只要字段中存在内容表示不为空,如果不存在内容就是null。 语法:列名 IS NOT NULL 为空:列名 IS NULLselect * from emp where sal is not null;
select * from emp where sal > 1500 or comm is not null;
select * from emp where not(sal > 1500) and comm is null;
示例:基本工资大于1500但是小于3000的全部雇员
分析:sal>1500, sal<3000select * from emp where sal>1500 and sal<3000;
select * from emp where sal between 1500 and 3000;
示例:查询1981-1-1到1981-12-31号入职的雇员
分析:between and 不仅可以使用在数值之间,也可以用在日期的区间select * from emp where hiredate between '1-1月-1981' and '31-12月-1981';
示例:查询雇员编号是7369,7499,7521的雇员编号的具体信息
分析:此时指定了查询范围,那么可以使用 I N \color{red}{IN} IN关键字 语法:其中的值不仅可以是数值类型,也可以是字符串
select * from emp where empno in (7369,7499,7521);
示例:查询雇员姓名是‘SMITH’,‘ALLEN’,‘WARD’的雇员具体信息
select * from emp where ename in ('SMIT','ALLEN','WARD');
注 意 : 如 果 集 合 中 含 有 n u l l , 不 能 使 用 n o t \color{red}{注意:如果集合中含有null,不能使用not} 注意:如果集合中含有null,不能使用not i n ; 但 可 以 使 用 i n \color{red}{ in;但可以使用in} in;但可以使用in
示例:查询不是10和20号部门的员工select * from emp where deptno not in (10,20);
select * from emp where deptno not in (10,20,null);
在常用的网站中经常会有模糊查询,即:输入一个关键字,把符合的内容全部的查询出来,在sql中使用 L I K E \color{red}{LIKE} LIKE语句完成。
在LIKE中主要使用一下两种通配符示例:查询出所有雇员姓名中第二个字符包含“M”的雇员
select * from emp where ename like '_M%';
在LIKE中如果没有关键字表示查询全部
示例:查询名字中带有“M”的雇员
select * from emp where ename like '%M%';
在oracle中不等号的用法可以有两种形式“<>”和"!="
示例:查询雇员编号不是7369的雇员信息select * from emp where empno <> 7369;select * from emp where empno != 7369;
查 询 带 有 特 殊 字 符 的 关 键 字 \color{red}{查询带有特殊字符的关键字} 查询带有特殊字符的关键字
插入一条数据:insert into emp (empno,ename) values(14,'TOM_CAT');
示例:查询名字含有下划线的员工
分析:使用escape关键字声明转义字符,一般使用“\”select * from emp where ename like '%\_%' escape '\';
SQL优化
select * from emp where condition1 and condition2
在 O r a c l e 中 , w h e r e 子 句 是 从 右 向 左 进 行 解 析 的 。 \color{red}{在Oracle中,where子句是从右向左进行解析的。} 在Oracle中,where子句是从右向左进行解析的。
所以,在and条件中,我们应尽量把可能为false的条件放在右边,这样就可以短路计算提升效率。排序的语法:
在sql中可以使用ORDER BY 对查询结果进行排序 语法:SELECT * | 列名 FROM 表名 { WHERE 查询条件} ORDER BY 列名1 ASC|DESC,列名2...ASC|DESC
示例:查询雇员的工资从低到高
分析:ORDER BY 列名 默认的排序规则是升序排列,可以不指定ASC,如果按着降序排列必须指定DESCselect * from emp order by sal;
select * from emp order by sal asc, hiredate desc;
select empno,ename,sal,sal*12 年薪 from emp order by 年薪 desc;
注 意 : O R D E R \color{red}{注意:ORDER } 注意:ORDER B Y 语 句 要 放 在 最 后 执 行 \color{red}{BY 语句要放在最后执行 } BY语句要放在最后执行
示例:查询雇员信息,按奖金升序排序:
select * from emp order by comm;
示例:查询雇员信息,按奖金降序排序:
select * from emp order by comm desc;
select * from emp order by comm desc nulls last;
转载地址:http://qjsqb.baihongyu.com/