《SQL基础教程》第02章 基本SQL的作成


SELECT基本语法

 SELECT 字段名列表
 FROM   表名列表
[WHERE  检索条件]
[ORDER BY 排序条件]

前2项是必须的,后2项可以省略。

全部列的选择

用"*"代替字段列表,表示选择所有列。注意:在程序中可以通过字段名取值, 如不太清楚字段名时,也可以用序号来取字段的数据。

SQL> select *
  2  from   STUFF;

STDI STDNAME  BUSINESS   LEAD YMD            SALARY COMMISSION DE
---- -------- ---------- ---- ---------- ---------- ---------- --
7360 张妃     班组长     7902 80.12.17         1800            20
7499 关玉     销售       7698 81.02.20         2600       3000 30
7521 刘蓓     销售       7698 81.02.22         2250       5000 30
7566 江叁讲   科长       7839 81.04.02         2975            20
7654 李斯硼   销售       7698 81.09.28         2250      14000 30
9698 邓笑评   科长       7839 81.05.01         3850            30
7782 孙荃     科长       7839 81.06.09         3450            10
7788 周语     主任       7566 87.06.13         3000            20
7839 鲁素     总经理          81.11.17         9000            10
7844 曹草     销售       7698 81.09.08         2500       3000 30
7876 诸葛靓   班组长     7788 87.03.13         2100            20
7902 穆归营   主任       7566 81.01.03         3000            20
7934 花牧岚   班组长     7782 82.01.03         2300            10

已选择13行。

指定列的选择

各字段名之间用","隔开,也可用表达式代替表中并不存在的字段。

SQL> select STDNAME,substr(YMD,1,2)
  2  from   STUFF;

STDNAME  SUBS
-------- ----
张妃     80
关玉     81
刘蓓     81
江叁讲   81
李斯硼   81
邓笑评   81
孙荃     81
周语     87
鲁素     81
曹草     81
诸葛靓   87
穆归营   81
花牧岚   82

已选择13行。

字段别名的指定

对于很长的字段名,或用表达式作字段名时,一般要指定别名。字段名的别名用as来 指定。注意:1. "as"省略也是正确的。2. 在sql*plus中显示的字段名可能被截取,程序 中一定要用字段名或其别名的全称。

SQL> select STDNAME as 姓名,substr(YMD,1,2) as 入厂年份
  2  from   STUFF;

姓名     入厂
-------- ----
张妃     80
关玉     81
刘蓓     81
江叁讲   81
李斯硼   81
邓笑评   81
孙荃     81
周语     87
鲁素     81
曹草     81
诸葛靓   87
穆归营   81
花牧岚   82

已选择13行。

字符串的连接

字符串的连接是用"||",这是运算符号而不是函数。

SQL> select 'my id is ' || STDID,'my name is ' || STDNAME as myname
  2  from   stuff;

'MYIDIS'||STD MYNAME
------------- -------------------
my id is 7360 my name is 张妃
my id is 7499 my name is 关玉
my id is 7521 my name is 刘蓓
my id is 7566 my name is 江叁讲
my id is 7654 my name is 李斯硼
my id is 9698 my name is 邓笑评
my id is 7782 my name is 孙荃
my id is 7788 my name is 周语
my id is 7839 my name is 鲁素
my id is 7844 my name is 曹草
my id is 7876 my name is 诸葛靓
my id is 7902 my name is 穆归营
my id is 7934 my name is 花牧岚

已选择13行。

没有表参与的查询

有时不需要任何表的参与,例如,取数据库中的系统时间等。这时,FROM后面 的表名用'DUAL'。

SQL> select SYSDATE
  2  from   DUAL;

SYSDATE
----------
07-8月 -03