1.简单查询
1.1 SELECT [DISTINCT] * | 列名称[别名],列名称[别名]...FROM 表名称[别名]
首先查询的是FROM字句,因为必须通过FRMO字句确定来源。
如果要查看表的所有信息,可以使用*,比如:SELECT * FROM emp; 表示查询emp表中所有的数据。
例如:SELECT ename,empno,job,sal FROM emp; 表示从emp表中查询ename,empo和job以及sal。
ENAME EMPNO JOB SAL
---------- ---------- ------------ ----------
SMITH 7369 CLERK 800
ALLEN 7499 SALESMAN 1600
WARD 7521 SALESMAN 1250
JONES 7566 MANAGER 2975
MARTIN 7654 SALESMAN 1250
BLAKE 7698 MANAGER 2850
CLARK 7782 MANAGER 2450
SCOTT 7788 ANALYST 3000
KING 7839 PRESIDENT 5000
TURNER 7844 SALESMAN 1500
ADAMS 7876 CLERK 1100
JAMES 7900 CLERK 950
FORD 7902 ANALYST 3000
MILLER 7934 CLERK 1300
1.2 比如要查询job列,使用语句: SELECT job FROM emp;
JOB
------------
CLERK
SALESMAN
SALESMAN
MANAGER
SALESMAN
MANAGER
MANAGER
ANALYST
PRESIDENT
SALESMAN
CLERK
CLERK
ANALYST
CLERK
但是此时从结果中可以看出,有重复的数据,所以为了消除重复,可以使用语句:SELECT DISTINCT job FROM emp;
JOB
------------
CLERK
SALESMAN
PRESIDENT
MANAGER
ANALYST
可是这是在查询一个列,如果查询多个列,只有多个列的内容全部相同,才会消除重复。
1.3 对查询的数据进行四则运算,比如: SELECT empno, ename, sal*12 FROM emp;
EMPNO ENAME SAL*12
---------- ---------- ----------
7369 SMITH 9600
7499 ALLEN 19200
7521 WARD 15000
7566 JONES 35700
7654 MARTIN 15000
7698 BLAKE 34200
7782 CLARK 29400
7788 SCOTT 36000
7839 KING 60000
7844 TURNER 18000
7876 ADAMS 13200
7900 JAMES 11400
7902 FORD 36000
7934 MILLER 15600
但是从结果中可以看出,SAL*12这个意思并不能表达清楚年薪的含义,所以我们可以使用别名。
例如:SELECT empno, ename, sal*12 INCOME FROM emp;
EMPNO ENAME INCOME
---------- ---------- ----------
7369 SMITH 9600
7499 ALLEN 19200
7521 WARD 15000
7566 JONES 35700
7654 MARTIN 15000
7698 BLAKE 34200
7782 CLARK 29400
7788 SCOTT 36000
7839 KING 60000
7844 TURNER 18000
7876 ADAMS 13200
7900 JAMES 11400
7902 FORD 36000
7934 MILLER 15600
可以看出,此时SAL*12变为了INCOME我们设置的别名。但是不建议使用中文。
2.SELECT语句除了可以进行查询以外,还能声明常量,但是有以下三点说明:
2.1 如果是字符串,使用单引号,比如:'hello'
2.2 如果是数字,直接书写,比如:19
2.3 如果常量是日期,按照日期风格编写:使用"日-月-年"的格式,例如:17-12月-80
3. 直接查询常量:比如:
SELECT '雇员', empno, ename FROM emp;
查询结果:
'雇员' EMPNO ENAME
------------ ---------- -------
雇员 7369 SMITH
雇员 7499 ALLEN
雇员 7521 WARD
雇员 7566 JONES
雇员 7654 MARTIN
雇员 7698 BLAKE
雇员 7782 CLARK
雇员 7788 SCOTT
雇员 7839 KING
雇员 7844 TURNER
雇员 7876 ADAMS
雇员 7900 JAMES
雇员 7902 FORD
雇员 7934 MILLER
3.1 转换显示格式
SELECT empno||ename FROM emp;
查询结果:
EMPNO||ENAME
-----------------
7369SMITH
7499ALLEN
7521WARD
7566JONES
7654MARTIN
7698BLAKE
7782CLARK
7788SCOTT
7839KING
7844TURNER
7876ADAMS
7900JAMES
7902FORD
7934MILLER
从显示结果来看,将两列合并为了一列。
3.2准换显示格式:
例如:雇员编号:7369,姓名:SIMTH,收入:800,假设我们要实现这种显示效果。
很明显,有常量字符串,也有变量。所以可以写成查询语句为:
SELECT '雇员编号:'||empno||', 姓名:'||ename||', 收入: '||sal FROM emp;
'雇员编号:'||EMPNO||',姓名:'||ENAME||',收入:'||SAL
----------------------------------------------------------
雇员编号:7369, 姓名:SMITH, 收入: 800
雇员编号:7499, 姓名:ALLEN, 收入: 1600
雇员编号:7521, 姓名:WARD, 收入: 1250
雇员编号:7566, 姓名:JONES, 收入: 2975
雇员编号:7654, 姓名:MARTIN, 收入: 1250
雇员编号:7698, 姓名:BLAKE, 收入: 2850
雇员编号:7782, 姓名:CLARK, 收入: 2450
雇员编号:7788, 姓名:SCOTT, 收入: 3000
雇员编号:7839, 姓名:KING, 收入: 5000
雇员编号:7844, 姓名:TURNER, 收入: 1500
雇员编号:7876, 姓名:ADAMS, 收入: 1100
雇员编号:7900, 姓名:JAMES, 收入: 950
雇员编号:7902, 姓名:FORD, 收入: 3000
雇员编号:7934, 姓名:MILLER, 收入: 1300
'雇员编号:'||EMPNO||',姓名:'||ENAME||',收入:'||SAL,此时的表名称为这个,很显然,不直观,可以为此表明起一个别名:
SELECT '雇员编号:'||empno||', 姓名:'||ename||', 收入: '||sal Information FROM emp;
值得注意的是,别名虽然是常量字符串,但可以不用单引号进行括起来。
INFORMATION
-------------------------------------------------------------
雇员编号:7369, 姓名:SMITH, 收入: 800
雇员编号:7499, 姓名:ALLEN, 收入: 1600
雇员编号:7521, 姓名:WARD, 收入: 1250
雇员编号:7566, 姓名:JONES, 收入: 2975
雇员编号:7654, 姓名:MARTIN, 收入: 1250
雇员编号:7698, 姓名:BLAKE, 收入: 2850
雇员编号:7782, 姓名:CLARK, 收入: 2450
雇员编号:7788, 姓名:SCOTT, 收入: 3000
雇员编号:7839, 姓名:KING, 收入: 5000
雇员编号:7844, 姓名:TURNER, 收入: 1500
雇员编号:7876, 姓名:ADAMS, 收入: 1100
雇员编号:7900, 姓名:JAMES, 收入: 950
雇员编号:7902, 姓名:FORD, 收入: 3000
雇员编号:7934, 姓名:MILLER, 收入: 1300