日期:2014-05-16 浏览次数:20461 次
§1.8 SQL 语句基础 下面给出SQL语句的基本介绍,更详细的描述见后面的章节。 §1.8.1 SQL语句所用符号 操作符 用途 例子 + - 表示正数或负数,正数可省去 + -1234.56 + 将两个数或表达式进行相加 A=c+b - 将两个数或表达式进行相减 34-12 * 将两个数或表达式进行相乘 12*34 / 除以一个数或表达式 18*11 NULL 空值判断 Where name is null; || 字符串连接 ‘101-’||tel_num = 等于测试 Select * from emp where name=’赵元杰’; != 或<>或^= 不等于测试 Select * from emp where name !=’赵元杰’; < 小于测试 Select * from emp Where sal < 5000; > 大于测试 Select * from emp Where sal > 5000; <= 小于等于测试 Select * from emp Where sal <= 5000; >= 大于等于测试 Select * from emp Where sal >= 5000; Not in 测试某值是否在一个指定的结果集中 Select name,addr from expertwhere local not in(‘北京’,’上海’); ANY 将一个值与一组值进行比较,返回满足条件的结果。必须跟!=,<,>,<=,>= select ename,sal from emp where sal<= any(select sal from emp where deptno=10) SOME 同ANY,必须跟!=,<,>,<=,>= ALL 将一个值与一组值比较,返回满足条件的所有列值。必须跟!=,<,>,<=,>= Select name,sal from empWhere sal<= all ( 500,800,1200); Not betweenA and B 判断某个值是否界于两者之间。 Select name,sal from emp Where sal between 500 and 1200; [not]exists 判断某个列是否存在于一组值中。 select dname,deptno from dept where exists(select * from emp where dept.deptno=emp.deptno) A[not]like b[Escape ‘char’] 比较两个模式是否相似,当使用like 语句时Oracle不去访问索引。 Select * from empWhere ename like ‘TH%’; Is [not] null 测试值是否为空。 Select ename,deptno from empWhere comm. Is null or comm.=0; Not 对结果的否定。 Select * from empWhere sal not(sal<1000); 等价于select ename,sal from emp where sal>=1000; AND 用于判断两个条件十分都满足。 Select * from emp where Ename=’SIMTH’ and sal>=1000; OR 用于判断两个条件中是否有一个满足。 Select * from emp where Ename=’SIMTH’ or ename=’SCOTT’; UNION 用于返回(组合)两个查询中所有唯一的行。 Select ename from emp unionSelect ename from emp; UNION ALL 用于返回(组合)两个查询中所有所有的行。 INTERSECT 用于返回两个查询中相同的行。 Select ename from emp1 intersect select ename from emp2; MINUS 用于返回两个查询中的不同的行。
§1.8.2 简单select 查询 当我们可以用SQL*PLUS登录到SQL>下后,我们可以用DESC 显示某表的结构,也可以用select 语句简单查询表中的一些列的内容。 例:要查询EMP表中员工的姓名、工资及出生日期,则: SQL>select ename, sal, hiredate from emp;
§1.9 伪列及伪表 Oracle系统为了实现完整的关系数据库功能,系统专门提供了一组称为伪列(Pseudocolumn)的数据库列,这些列不是在建立对象(如建表)时由我们完成的,而是在我们建立对象时由自动Oracle完成的。Oracle目前有以下的伪列: l CURRVAL and NEXTVAL 使用序列号的保留字 l LEVEL 查询数据所对应的级 l ROWID 记录的唯一标识 l ROWNUM 限制查询结果集的数量 有关伪列的详细解释和使用见相关章节。 Oracle 还提供了一个DUAL 的伪表,该表主要目的是保证在使用SELECT 语句中语句的完整性而提供的,如:我们要查询当前的系统日期及时间,而系统的日期和时间并是放在一个指定的表里。所以在 from 语句后就没有表名给出。为了使用 from 后有个表名,我们就用DUAL代替。如: 例1:查询Oracle系统日期及时间: SQL> select to_char( sysdate,'yyyy.mm.dd hh24:mi:ss') from DUAL; TO_CHAR(SYSDATE,'YY ------------------- 2001.06.02 07:28:09 例2:计算一下 5000+5000*0.1 的结果是多少,则: SQL> select 5000+5000*0.1 from DUAL; 5000+5000*0.1 ------------------- 5500
?