《oraclesql语句基础-基本函数》由会员分享,可在线阅读,更多相关《oraclesql语句基础-基本函数(25页珍藏版)》请在金锄头文库上搜索。
1、Oracle SQL 语句基础2009-08-28 12:17Oracle SQL 语句基础1、SQL 语句基础下面给出SQL语句的基本介绍。1.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=赵元杰; != 或
2、或= 不等于测试 Select * from emp where name !=赵元杰; 小于测试 Select * from emp where sal 大于测试 Select * from emp where sal 5000; = 小于等于测试 Select * from emp where sal = 大于等于测试 Select * from emp where sal = 5000; Not in 测试某值是否在一个指定的结果集中 Select name,addr from expert where local not in(北京,上海); ANY 将一个值与一组值进行比较,返回满足
3、条件的结果。必须跟!=,= select ename,sal from emp where sal= any(select sal from emp where deptno=10) SOME 同ANY,必须跟!=,= ALL 将一个值与一组值比较,返回满足条件的所有列值。必须跟!=,= Select name,sal from emp w here sal= all ( 500,800,1200); Not betweenA and B 判断某个值是否界于两者之间。 Select name,sal from emp Where sal between 500 and 1200; notexi
4、sts 判断某个列是否存在于一组值中。 select dname,deptno from dept where exists(select * from emp where dept.deptno=emp.deptno) Anotlike b比较两个模式是否相似,当使用like 语句时Oracle不去访问索引。 Select * from empWhere ename like TH%; Is not null 测试值是否为空。 Select ename,deptno from empWhere comm. Is null or comm.=0; Not 对结果的否定。 Select * fr
5、om emp Where sal not(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 用于返回两个查询中
6、相同的行。 Select ename from emp1 intersect select ename from emp2; MINUS 用于返回两个查询中的不同的行。 1.2、简单select查询当我们可以用SQL*PLUS登录到SQL下后,我们可以用DESC 显示某表的结构,也可以用select 语句简单查询表中的一些列的内容。例:要查询EMP表中员工的姓名、工资及出生日期,则:SQLselect ename, sal, hiredate from emp;伪列及伪表Oracle系统为了实现完整的关系数据库功能,系统专门提供了一组称为伪列(Pseudocolumn)的数据库列,这些列不是在
7、建立对象(如建表)时由我们完成的,而是在我们建立对象时由自动Oracle完成的。Oracle目前有以下的伪列:CURRVAL and NEXTVAL 使用序列号的保留字LEVEL 查询数据所对应的级ROWID 记录的唯一标识ROWNUM 限制查询结果集的数量Oracle 还提供了一个DUAL 的伪表,该目的表主要是保证在使用SELECT 语句中语句的完整性而提供的,如:我们要查询当前的系统日期及时间,而系统的日期和时间并是放在一个指定的表里。所以在 from 语句后就没有表名给出。为了使用 from 后有个表名,我们就用DUAL代替。如:例1:查询Oracle系统日期及时间:SQL selec
8、t 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- 55001.3、SELECT语句在关系数据库中,使用频率最高要算SELECT语句了。尽管SELECT 语句的使用非常简单,但确很有学问。下面简单介绍有关SELECT 语句的常用方法。1.命令语法: SELECT 的简单语法:SELECT DISTINCT |
9、 ALL * | column1, column2.FROM table_1 | (subquery) alias, table_2 | (subquery) alias.WHERE conditionCONNECT BY condition START WITH conditionGROUP BY expn HAVING expn UNION ALL | INTERSECT | MINUS SELECT . . . ORDER BY expn ASC | DESC FOR UPDATE OF user.table | view column NOWAIT详细语法结构需查阅最新ORACLE 原
10、版ORACLE8i SQL REFERENCE MANUAL或ORACLE9i SQL REFERENCE MANUAL1.4、SQL中的单记录函数许多资料(包括Oracle 的资料)把Oracle的SQL语句中用到的函数分为单值函数和多值函数,单值函数又分为字符函数和数字函数。下面分别介绍它们。4.1、单记录字符函数函 数 说 明 ASCII 返回对应字符的十进制值 CHR 给出十进制返回字符 CONCAT 拼接两个字符串,与 | 相同 INITCAT 将字符串的第一个字母变为大写 INSTR 找出某个字符串的位置 instrINSTRB 找出某个字符串的位置和字节数 LENGTH 以字符给
11、出字符串的长度 LENGTHB 以字节给出字符串的长度 LOWER 将字符串转换成小写 LPAD 使用指定的字符在字符的左边填充 LTRIM 在左边裁剪掉指定的字符 RPAD 使用指定的字符在字符的右边填充 RTRIM 在右边裁剪掉指定的字符 REPLACE 执行字符串搜索和替换 SUBSTR 取字符串的子串 SUBSTRB 取字符串的子串(以字节) SOUNDEX 返回一个同音字符串 TRANSLATE 执行字符串搜索和替换 TRIM 裁剪掉前面或后面的字符串 UPPER 将字符串变为大写 NVL 以一个值来替换空值1、ASCII()是字符串。返回与指定的字符对应的十进制数。SQL sele
12、ct ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual; A a ZERO SPACE- - - -65 97 48 32SQL select ascii(赵) zhao,length(赵) leng from dual; ZHAO LENG- - 54740 12、CHR(NCHAR)给出整数,返回对应字符。如:SQL select chr(54740) zhao,chr(65) chr65 from dual;ZH C- -赵 A3、CONCAT(,)返回字符串c1与字符串c2合并后的值。例如:SQL select c
13、oncat(010-,8801 8159)|转23 赵元杰电话 from dual;赵元杰电话-010-8801 8159转234、INITCAP()返回字符串c1 并第一个字母变为大写。例如:SQL select initcap(simth) upp from dual;UPP-Simth5、INSTR(, )在一个字符串中搜索指定的字符,返回发现指定的字符的位置。C1: 被搜索的字符串C2: 希望搜索的字符串I: 搜索的开始位置,缺省是1J: 出现的位置,缺省是1。SQL SELECT INSTR (Oracle Training, ra, 1, 2) Instring FROM DUAL;Instring- 96、INSTRB(, )除了返回的字节外 ,与INSTR 相同,7、LENGTH( )返回字符串 c 的长度。SQL l1 select name,length(name),addr,length(addr),sal,length(to_char(sal)2* from nchar_tstSQL /NAME LENGTH(NAME) ADDR