一、SELECT
1、了解| [ ] {}在命令介绍中的意义,以及基本的SELECT查询表中数据,主要使用SELECT命令。
SELECT *|{[DISTINCT] column|expression [alias],...} FROM table;
在这种命令描述方式中:| :表示或者,像上面的*|{……},也就是你可以使用*,它表示显示所有列,也可以使用大括号中的内容。
{}:表示必选项。[ ]:表示可选项,也就是中括号中的内容,可要可不要。当然选择与否中括号中的命令,表示了不同的意义。
{[DISTINCT] column|expression [alias],...}这一串的意义是,[DISTINCT]是可选项,可以不加。column|expression [alias] ,上面已经说过了,要么使用column ,它是列的名字,如select id,name from t1(试一下)。要么使用expression [alias],expression这个单词通常是表达式的意思。表达式通常指一些加减运算式:select salary+1000 from t1(试一下), salary+1000 就是一个表达式。额外说一点啊,表达式这个词,我们在以后的命令中,会经常的用到。它可以代表一切,数据、运算式子等等。
2、在一条命令中,我们可以在某处使用column,在别一处使用expression [alias],比如:
select name,salary+1000 from t1(试一下); name是直接使用列名,salary+1000是表达式。这条命令的显示结果如下:
gyj@OCM> select name,salary+1000 from t1;
NAME SALARY+1000
---------- -----------
gyj2 9000
gyj3 11000
gyj4 16000
3、我们还可以为表达式指定别名,expression [alias]中,可选项[alias]就是别名。我们上面的命令就省略了。下面加上别名试试:
gyj@OCM> select name,salary+1000 salary from t1;
NAME SALARY
---------- ----------
gyj2 9000
gyj3 11000
gyj4 16000
注意显示出来的表头,变成了别名。如果别名中包含空格或有特殊的符号,要加双引号:
gyj@OCM> select name,salary+1000 "My Salary" from t1;
NAME My Salary
---------- ----------
gyj2 9000
gyj3 11000
gyj4 16000
gyj@OCM> select name,salary+1000 "Salary(bonus)" from t1;
NAME Salary(bonus)
---------- -------------
gyj2 9000
gyj3 11000
gyj4 16000
二、常用运算符
了解||的使用,还有单、双引号的区别
在表达式中,常用的运算符有+,-,*,/ 和(),这些大家看PPT即可我就不多说了。这些都是针对数字型的。
1、针对字符,还有一个常用的连接符:|| 。它可以把两个字符连在一起:
gyj@OCM> select 'www.'||name||'.com' from t1;
'WWW.'||NAME||'.CO
------------------
www.gyj2.com
www.gyj3.com
www.gyj4.com
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/
这个例子主要为了演示||的作用,www. 和 name列的值,和com连在了一起。
注意这里单、双引号的使用,如果将www. .com外的单引号换为双引号,结果如下:
gyj@OCM> select "www."||name||".com" from t1;
select "www."||name||".com" from t1
*
ERROR at line 1:
ORA-00904: ".com": invalid identifier
我们刚才在列别名"My Salary" 中使用了双引号,如果换为单引号:
gyj@OCM> select name,salary+1000 'My Salary' from t1;
select name,salary+1000 'My Salary' from t1
*
ERROR at line 1:
ORA-00923: FROM keyword not found where expected
一样会报错,这说明单、双引号并不通用。到底什么时候该用单引号,什么时候用双引号呢?区分起来很简单。如果你的显示结果,是针对表头部分的,那么就用双引号。"My Salary"就是只显示在表头中,下面的列数据中没有"My Salary"。而’www.’、’.com’,则是显示在下面的列数据中,这就要加单引号了。
2、还有一点关于 || ,它并不只能连接字符,它也可以对数字和时间也发挥作用:
gyj@OCM> select name||'''s salary is '||salary||' at '||to_date(sysdate,'yyyy-mm-dd') from t1;
NAME||'''SSALARYIS'||SALARY||'AT'||TO_DATE(SYSDATE,'YYYY-MM-DD')
-------------------------------------------------------------------------------
gyj2's salary is 8000 at 13-FEB-20
gyj3's salary is 10000 at 13-FEB-20
gyj4's salary is 15000 at 13-FEB-20
这里有两个知识点,一是SALARY是数字型的列,sysdate是系统时间,它们都也可以和字符一起连接。还有就是单引号已经是一种特殊的字符了,它不再是一般意义上的单引号,它是ORACLE的字符分界标志。但像gyj2's salary is 8000这串英文中的’,却是一个普通意义上的引号。在以单引号括起来的字符串中,又出现单引号时,就像'gyj2's salary is 8000',为了避免ORACLE将这个单引号误认为是字符串的结束,需要将单引号连打两次,即'gyj2's salary is 8000',这样就可以了。这就是'''s salary is '的意议,第一个单引号和最后一个单引号是字符串的分界。第一个单引号连续两个单引号,只是想表示一个普通意义上的单引号。