操作符
1.算术运算
只有加减乘除运算符,出号(/)结构是浮点数,求余运算函数:MOD(X,Y)。
2.关系运算和逻辑运算
3.字符串连接操作符(||)**
(注意:Oracle 中字符串可以用单引号,也可以用双引号,在别名中存在空格时,必须用双 引号。在表名、列名时用双引号。)
高级查询
1. 消除重复行
中结果中,可能出现若干行相同的情况,那么可以使用 DISTINCT 消除重 复行。
SELECT DISTINCT DEPTNO FROM EMP
2.NULL操作
如果某条记录中有缺少的数据值,就是空值(NULL 值)。空值不等于 0 或者空格,空值 是指未赋值、未知或不可用的值。任何数据类型的列都可以包括 NULL 值,除非该列被定义 为非空或者主键。
在查询条件中 NULL 值用 IS NULL 作条件,非 NULL 值用 NOT IS NULL 做条件。
3.IN操作
在 Where 子句中可以使用 IN 操作符来查询其列值在指定的列表中的行。对应 IN 操作的还有 NOT IN,用法一样,结果相反。
4.BETWEEN…AND…
在 WHERE 子句中,可以使用 BETWEEN 操作符来查询列值包含在指定区间内的行。
5.LIKE 模糊查询
在一些查询时,可能把握不准需要查询的确切值,比如百度搜索时输入关键字即可查询 出相关的结果,这种查询称为模糊查询。模糊查询使用 LIKE 关键字通过字符匹配检索出所 需要的数据行。字符匹配操作可以使用通配符“%”和“_”:
- %:表示零个或者多个任意字符。
- _:代表一个任意字符。
语法是:LIKE ‘字符串’[ESCAPE ‘字符’]。匹配的字符串中,ESCAPE 后面的“字符”作为转 义字符。
6.集合运算
集合运算就是将两个或者多个结果集组合成为一个结果集。集合运算包括:
- INTERSECT(交集),返回两个查询共有的记录。
- UNION ALL(并集),返回各个查询的所有记录,包括重复记录。
- UNION(并集),返回各个查询的所有记录,不包括重复记录。
- MINUS(补集),返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩 余的记录。
当使用集合操作的时候,要注意:查询所返回的列数以及列的类型必须匹配,列名可以 不同。
eg:
SQL> SELECT DEPTNO FROM DEPT
2 MINUS
3 SELECT DEPTNO FROM EMP;
7.连接查询
在 SQL Server 中已经学习过内联接(inner join)、外联接(outer join),外联接又分为左外联 接(left outer join)和右外联接(right outer join)。Oracle 中对两个表或者若干表之间的外联接用 (+)表示。
eg:
内联接
SQL> SELECT e.ENAME,e.JOB,e.SAL,d.DNAME
2 FROM emp e,dept d
3 WHERE e.deptno=d.deptno
4 AND e.SAL>2000;
内联接
SELECT e.ENAME,e.JOB,e.SAL,d.DNAME
FROM EMP e INNER JOIN DEPT d ON e.DEPTNO=d.DEPTNO
WHERE e.SAL>2000
这里 INNER JOIN 中,关键字 INNER 可以省略
eg:
请查询出每个部门下的员工姓名,工资。
Emp 表用外键 deptno 引用 Dept 表中的 deptno,在 Dept 表中如果有某些部门没有员工, 那么用内联接,没有员工的部门将无法显示,因此必须以 Dept 表为基准的外联接。
外联接
SQL> SELECT e.ENAME,e.JOB,e.SAL,d.DNAME
2 FROM EMP e ,DEPT d
3 WHERE e.DEPTNO(+)=d.DEPTNO
(+):Oracle 专用的联接符,在条件中出现在左边指右外联接,出现在右边指左外 联接。
SELECT e.ENAME,e.JOB,e.SAL,d.DNAME
FROM EMP e RIGHT OUTER JOIN DEPT d ON e.DEPTNO=d.DEPTNO
这里 RIGHT OUTER JOIN 中,关键字 OUTER 可以省略。