Oracle基本语法

1.日期显示问题依次执行以下命令:

(1)alter session set NLS_DATE_LANGUAGE='AMERICAN;

(2)col hiredate for a15

(3)COL ENAME FOR A8

2.列的别名:

在列名和别名别名之间放上AS或空格就可以了。

当别名没有被双引号括起来时,其显示结果为大写。如果别名中包含了特殊字符,或想让别名原样显示,你就要使用双引号把别名括起来。

SELECT empno AS "Employee Number",ename name,(sal+500)*12 "Annual Salary"

FROM emp;

3.连接字条串:

文本字符串是包含在SELECT子句中的字符、数字或表达式,而不是任何的列名或列的别名。如果文本字符是日期型和字符型,就必须将它们用单引号括起来。每个字符串在每行输出结果中都输出一次。

连接运算符由两个竖线(||)表示,它用于把一个或多个列或字符串连接在一起。

SELECT ename||' 年薪为: '||(sal+500)*12 "员工的年薪"

FROM emp;

4.DISTINCT

SELECT DISTINCT deptno

FROM emp;

当查询比较大的表时应尽可能的避免使用DISTINCT,因为Oracle系统是通过排序的方式来完成DISTINCT这一功能的,所以会造成Oracle系统的效率降低。通常可以使用不同的查询语句来完成同样的工作。如:

SELECT deptno

FROM dept;

5.比较运算符(operator)

条件格式为:

表达式 operator 表达式

Oracle 提供了>(大于),>=(大于等于),<(小于),<=(小于等于),=(等于),<>或!=6(不等于)6个常用的比较运算符。

此外,还提供了BETWEEN AND,IN和LIKE 3个比较运算符。

SQL> SELECT empno,ename,sal
  2  FROM emp
  3  WHERE sal BETWEEN 1500 AND 2900;

BETWEEN运算符用于测试某些值是否在指定的数值范围之内。在BETWEEN和AND之间的值称为下限,AND之后的值称为上限。显示结果包括下限和上限的值。该运算符不但可用于数字型数据,而且还可以用于字符型和日期型数据,但这两种类型的数据必须用单引号括起来。可以在BETWEEN之前加上NOT,用于测试某些值是否在BETWEEN和AND指定的数值范围之内。如:

SQL> SELECT empno,ename,sal,hiredate
  2  FROM emp
  3  WHERE hiredate NOT BETWEEN '01-JAN-81' AND '31-MAY-82';

IN用来测试某些值是否在列表中出现。也可以在IN之前加上否定词NOT。NOT IN用来表示测试的某些值是否不在列表中出现。
SQL> SELECT empno,ename,sal,job
  2  FROM emp
  3  WHERE job NOT IN ('ANALYST','PRESIDENT');

可以使用LIKE运算符进行通配符查询。LIKE运算符可以使用以下两个通配符“%”和“-”。其中:

“%”代表0个或多个字符。

“-”代表一个且只能是一个字符。

SQL> SELECT empno,ename,sal,job
  2  FROM emp
  3  WHERE job LIKE 'S_L_S%';

6.转义操作符:

要查询的字条串中含有“-”或“%”,可以使用转义(escape)关键字实现查询。

SQL> CREATE TABLE dept_temp
  2  AS
  3  SELECT *
  4  FROM dept;

SQL> INSERT INTO dept_temp
  2  VALUES(88,'IT_RESEARCH','BEIJING');

SQL> SELECT *
  2  FROM dept_temp
  3  WHERE dname LIKE 'IT\_%' escape '\';

定义“\”为转义符,即在“\”之后 的“-”字符已不是通配符了,而是它本来的含义,即下划线。没有必要一定使用“\”字符作为转义符,完全可以使用任何你字符作为转义字符。但最好不要将在SQL和SQL*Plus中有特殊含义的字符定义为转义字符,否则使你的WQL语句变得很难理解。

7.ORDER BY

利用ORDER BY子句对查询的结果进行排序。ASC(ascending order)为升序排序(默认),因此,ASC在实际的SQL语句中很少见到。字符型数据的顺序是按ASCII码的次序。DESC(descending order)为降序排序。

如果在查询语句中用使用ORDER BY子句,则查询结果的次序是不确定的,即你写了两个完全相同的查询语句,其执行结果的次序可能是不一样的。

如果使用了ORDER BY子句,则该子句一定是SQL语句的最后一个子句。

SQL> SELECT empno,ename,sal
  2  FROM emp
  3  WHERE sal>=1500
  4  ORDER BY sal DESC;

8.在操作表之前如果想知道表的结构,可以使用DESC【RIBE】命令来实现。

SQL> DESC emp

9.命令SET LINE[SIZE]{80|n},其中n为自然数,80为默认值。该命令是将显示屏的显示输出置为n个字符宽,80个字符为此命令的默认显示宽度。

SQL> SET line 100

10.L命令和n next命令,以及“/”命令:

Oracle的SQL*Plus提供了若干条命令来帮助我们来发现错误和改正错误,其中最常用的这类命令之一就是L(List)命令。该命令用来显示SQL缓冲区中的内容。

SQL> L

此时会显示你刚刚输入的SQL语句,前面的数字表示行号,*表示当前行。

之后可以使用n text命令来修改出错的部分,其中,n为在SQL缓冲区中的SQL语句的行号,text为替代出错部分的SQL语句。

SQL> 2 FROM emp

之后再使用L命令来显示SQL缓冲区中的内容,以检查你的修改是否正确。

SQL> L

“/”(RUN)用来重新运行刚刚修改过的SQL语句。

SQL> /    或   SQL> R

 11.n(设置当前行)命令和A【PPEND】(附加)命令:

SQL> SELECT ename
  2  FROM emp;

使用L命令来显示SQL缓冲中的内容。

SQL> L

2后面的*表示第2行为当前行。为了在ename之后添加“,job,sal”,你应该先把第一行设置为当前行。

SQL> 1

再使用a命令(附加命令)把“,job,sal”添加到SELECT ename之后。

SQL> a,job,sal

使用L命令来检查修改是否正确。

SQL> L

“/”(RUN)用来重新运行刚刚修改过的SQL语句。

SQL> /    或   SQL> R

posted @ 2011-11-29 19:31  残星  阅读(20528)  评论(0编辑  收藏  举报