查询语句
select * from emp;
select sal,ename,empno from emp;
列中存储数据是英文的, ALTER SESSION SET nls_date_language='AMERICA‘显示英文。
易读性的提升
为了增加易读性,命令关键字一般为大写,而其他部分一般为小写。
为了增加可读性应该把SQL语句中的每一个子句写在一行上,且最好以缩进法来书写。
注意∶ 一个完整的SQL命令叫语句(statement),每一个关键字和后面跟着的选项叫子句(clause),例如,"SELECT * FROM emp;"叫语句,而"SELECT *"叫子句,"FROM emp"也叫子句。
列值的算术表达式
SQL> SELECT empno,ename,sal,500+sal
FROM emp;
SQL> SELECT empno,ename,sal,500+sal*12
FROM emp;
SQL> SELECT empno, ename,(500+sal)*12 FROM emp;
SELECT empno, ename,
(500+sal)*12 2 FROM emp;
算术运算符的优先级是先乘除后加减
在表达式中同一优先级的运算符计算次序是从左到右;如果使用了括号,括号中的运算优先∶如果有多重括号嵌套,内层括号中的运算优先。
注意∶ 当查询比较大的表时应尽可能地避免使用DISTINCT,因为Oracle系统是通过排序的方式来完成DISTINCT这一功能的,所以它会造成Oracle系统的效率降低。通常您可以使用不同的查询语句来完成同样的工作,例如可以使用例1-19的查询语句来得到所需的部
门的信息。
例1-19查询
SQL> SELECT deptno
2 FROM dept;
例1-19查询与前面的查询一样得到了所有的部门号,但对Oracle系统没什么冲击,因为部门号(deptno)在dept表中本身就是惟一的。
SQL> SELECT DISTINCT deptno,job
FROM emp;
DISTINCT运算符
SQL> SELECT DISTINCT deptno
FROM emp;
连接运算符
SQL> SELECT ename ||' annual salary is '||(500+sal)*12 "Employee's Salary"
FROM emp;
如果使用的是中文操作系统
SQL> SELECT ename ||' 年薪为∶'||(500+sal)*12 "员工的年薪"
FROM emp;
列的别名
SQL> SELECT empno AS "Employee Number",
ename name, (500+sal)*12 "Annual Salary"2
FROM emp;
它减少了输入量。
给一列起一个别名的方法很简单,您只须在列名和别名之间放上AS或空格就可以了。当别名没有被双引号括起来时,别名的显示结果为大写。如果别名中包含了特殊字符,或想让别名原样显示,您就要使用双引号把别名扩起来。
SELECT empno AS "Employee Number",
ename name, (500+sal)*12 "Annual Salary"
FROM emp;
列值的默认显示格式
在本章开始时,已经看到了由于字符集的不同使日期型的显示有些问题。为了解决这个问题可以使用例1-7的SQL语句。
alter session set nls_date_format = 'YYYY-MM-DD';
文本字符串是包含在SELECT子句中的字符、数字或表达式,而不是任何的列名或列的别名。如文本字符是日期型和字符型,您必须将它们用单引号括起来。每个字符串在每行输出结果中都输出一次。