sql语句基础
- 格式:doc
- 大小:76.00 KB
- 文档页数:7
下面给出SQL语句的基本介绍。
1.1、SQL语句所用符号下面给出SQL语句的基本介绍。
1.1、SQL语句所用符号操作符用途例子+ - 表示正数或负数,正数可省去+-1234.56+ 将两个数或表达式进行相加A=c+b- 将两个数或表达式进行相减34-12* 将两个数或表达式进行相乘12*34/ 除以一个数或表达式18*11NULL 空值判断Where name is null;|| 字符串连接…101-‟||tel_num= 等于测试Select * from emp wherename=‟赵元杰‟;!= 或<>或^= 不等于测试Select * from emp wherename !=‟赵元杰‟;< 小于测试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 expert where 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 emp w here sal<= all( 500,800,1200);Not between A and B 判断某个值是否界于两者之间。
Select name,sal from empWheresal between 500 and 1200;[not]exi sts 判断某个列是否存在于一组值中。
select dname,deptno from deptwhere exists(select * from emp where dept.deptno=emp.deptno)A[not]lik e b 比较两个模式是否相似,当使用like 语句时Oracle不去访问索引。
Select * from empWhere ename like …TH%‟;Is [not] null 测试值是否为空。
Select ename,deptno from empWhere comm. Is null orcomm.=0;Not 对结果的否定。
Select * from emp Where salnot(sal<1000); 等价于selectename,sal from emp wheresal>=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 union Select ename from emp;UNION ALL 用于返回(组合)两个查询中所有所有的行。
INTERS ECT 用于返回两个查询中相同的行。
Select ename from emp1intersect select ename fromemp2;MINUS 用于返回两个查询中的不同的行。
当我们可以用SQL*PLUS登录到SQL>下后,我们可以用DESC 显示某表的结构,也可以用select 语句简单查询表中的一些列的内容。
例:要查询EMP表中员工的姓名、工资及出生日期,则:SQL>select ename, sal, hiredate from emp;2、伪列及伪表Oracle系统为了实现完整的关系数据库功能,系统专门提供了一组称为伪列(Pseudocolumn)的数据库列,这些列不是在建立对象(如建表)时由我们完成的,而是在我们建立对象时由自动Oracle完成的。
Oracle目前有以下的伪列:CURRVAL and NEXTVAL 使用序列号的保留字LEVEL 查询数据所对应的级ROWID 记录的唯一标识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-------------------55003、SELECT语句在关系数据库中,使用频率最高要算SELECT语句了。
尽管SELECT 语句的使用非常简单,但确很有学问。
下面简单介绍有关SELECT 语句的常用方法。
1.命令语法:SELECT 的简单语法:SELECT [DISTINCT | ALL] {* | column1[, column2]...}FROM {table_1 | (subquery)} [alias][, {table_2 | (subquery)} [alias]]...[WHERE condition][CONNECT BY condition [START WITH condition][GROUP BY expn] [HAVING expn][{ UNION [ALL] | INTERSECT | MINUS } SELECT . . . ][ ORDER BY [expn ] [ ASC | DESC][ FOR UPDATE [OF [user.]table | view] column ][NOWAIT]详细语法结构需查阅最新ORACLE 原版《ORACLE8i SQL REFERENCE MANUAL》或《ORACLE9i SQL REFERENCE MANUAL》、SQL中的单记录函数许多资料(包括Oracle 的资料)把Oracle的SQL语句中用到的函数分为单值函数和多值函数,单值函数又分为字符函数和数字函数。
下面分别介绍它们。
字符函数函数说明ASCII 返回对应字符的十进制值CHR 给出十进制返回字符CONCAT 拼接两个字符串,与|| 相同INITCAT 将字符串的第一个字母变为大写INSTR 找出某个字符串的位置INSTRB 找出某个字符串的位置和字节数LENGTH 以字符给出字符串的长度LENGTHB 以字节给出字符串的长度LOWER 将字符串转换成小写LPAD 使用指定的字符在字符的左边填充LTRIM 在左边裁剪掉指定的字符RPAD 使用指定的字符在字符的右边填充RTRIM 在右边裁剪掉指定的字符REPLACE 执行字符串搜索和替换SUBSTR 取字符串的子串SUBSTRB 取字符串的子串(以字节)SOUNDEX 返回一个同音字符串TRANSLATE 执行字符串搜索和替换TRIM 裁剪掉前面或后面的字符串UPPER 将字符串变为大写NVL 以一个值来替换空值1、ASCII(<c1>)<c1>是字符串。
返回与指定的字符对应的十进制数。
SQL> select 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(<I>[NCHAR])给出整数,返回对应字符。
如:SQL> select chr(54740) zhao,chr(65) chr65 from dual;ZH C-- -赵A3、CONCAT(<c1>,<c2>)返回字符串c1与字符串c2合并后的值。
例如:SQL> select concat('010-','8801 8159')||'转23' 赵元杰电话from dual; 赵元杰电话-----------------010-8801 8159转234、INITCAP(<c1>)返回字符串c1 并第一个字母变为大写。
例如:SQL> select initcap('simth') upp from dual;UPP-----Simth5、INSTR(<c1>,<c2>[,<I>[,<j>] ] )在一个字符串中搜索指定的字符,返回发现指定的字符的位置。
C1: 被搜索的字符串C2: 希望搜索的字符串I: 搜索的开始位置,缺省是1J: 出现的位置,缺省是1。
SQL> SELECT INSTR ('Oracle Training', 'ra', 1, 2) "Instring" FROM DUAL;Instring----------96、INSTRB(<c1>,<c2>[,<I>[,<j>] ] )除了返回的字节外,与INSTR 相同,7、LENGTH( <c> )返回字符串c 的长度。