设为首页 加入收藏

TOP

sql&plugs(六)
2014-11-24 02:52:24 来源: 作者: 【 】 浏览:17
Tags:sql&plugs
中介绍)。

空值与字符型、数字型的运算:

null + <数字>=null (空值+数字仍是空值)

null > <数字>=null (空值与数字比较结果为空值)

null || '字符串' = 字符串

number类型与以下类型具有同等的值域:

DEC

Decimal

Double PREcision

Float

Integer

Int

Numeric

Real

Smallint

提示:虽然Oracle可以使用上面的子数据类型,但建议还是采用NUMBER(n,m)为好。因为如果使用子数据类型定义字段类型不当,可能引起数据在运算方面的问题。

Long数据类型的限制:

l select中可以用long;

l update中可以用select子句;

l insert中可以用Valus子句;

l 每个表只能允许一个long列;

l long列不能列出完整性约束(null、not null除外);

l long列不能被索引;

l 过程或存储函数不能接收long型函数;

l 存储函数不能返回long型值。

long 目前不能出现在以下情况中:

l select中的Where,Group by,order by,Connect by,distinct;

l 不能对long列作substr,instr;

l 表达式或条件;

l 子查询或集合中不能用long;

l Create table ...as select 中不能用long;

§1.8 SQL 语句基础

下面给出SQL语句的基本介绍,更详细的描述见后面的章节。

§1.8.1SQL语句所用符号

操作符 用途 例子

+ - 表示正数或负数,正数可省去+ -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

首页 上一页 3 4 5 6 下一页 尾页 6/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇存储过程或视图的字符串查询 下一篇第四章、PL/SQL基础

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Sphinx : 高性能SQL (2025-12-24 10:18:11)
·Pandas 性能优化 - (2025-12-24 10:18:08)
·MySQL 索引 - 菜鸟教 (2025-12-24 10:18:06)
·Shell 基本运算符 - (2025-12-24 09:52:56)
·Shell 函数 | 菜鸟教 (2025-12-24 09:52:54)