您的位置:首页 > 数据库 > Oracle

Oracle学习笔记 2 --简单查询语句(select)

2014-04-08 15:02 330 查看
学习中使用到的表全部都是scott用户下的表,所以了解一下此用户下有哪几张表。

雇员表(emp)、部门表(dept)、工资等级表(salgrade)、奖金表(bonus)。

可以使用 desc  表名 ,来查询表的结构

select查询语句,格式如下:

select  *  |具体的列明(如 empno ,ename)  from emp ;

想要查询表中所有的列 ,执行下面的操作:

SQL> select * from emp;

EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH      CLERK      7902 1980/12/17     800.00               20
7499 ALLEN      SALESMAN   7698 1981/2/20     1600.00    300.00     30
7521 WARD       SALESMAN   7698 1981/2/22     1250.00    500.00     30
7566 JONES      MANAGER    7839 1981/4/2      2975.00               20
7654 MARTIN     SALESMAN   7698 1981/9/28     1250.00   1400.00     30
7698 BLAKE      MANAGER    7839 1981/5/1      2850.00               30
7782 CLARK      MANAGER    7839 1981/6/9      2450.00               10
7788 SCOTT      ANALYST    7566 1987/4/19     3000.00               20
7839 KING       PRESIDENT       1981/11/17    5000.00               10
7844 TURNER     SALESMAN   7698 1981/9/8      1500.00      0.00     30
7876 ADAMS      CLERK      7788 1987/5/23     1100.00               20
7900 JAMES      CLERK      7698 1981/12/3      950.00               30
7902 FORD       ANALYST    7566 1981/12/3     3000.00               20
7934 MILLER     CLERK      7782 1982/1/23     1300.00               10

14 rows selected


如果想要查询出雇员的编号,姓名,工作的话,就需要指定相应的列名,不同列之间用 逗号隔开。

SQL> select empno ,ename , job from emp ;

EMPNO ENAME      JOB
----- ---------- ---------
7369 SMITH      CLERK
7499 ALLEN      SALESMAN
7521 WARD       SALESMAN
7566 JONES      MANAGER
7654 MARTIN     SALESMAN
7698 BLAKE      MANAGER
7782 CLARK      MANAGER
7788 SCOTT      ANALYST
7839 KING       PRESIDENT
7844 TURNER     SALESMAN
7876 ADAMS      CLERK
7900 JAMES      CLERK
7902 FORD       ANALYST
7934 MILLER     CLERK

14 rows selected


* 代表的是查询的表中的所有的列。 如果将 * 换成列明,则表示查询相应的列 。

注意:

SQL语言的大小写不敏感;

SQL可以写在一行上,也可以写成多行,做好写成多行,这样可读性比较的强;

关键字不能被缩写,也不能别分行;

算数运算符 :

查询中可以使用算数运算,数字和日期可以使用算数运算符,算数运算间有优先顺序,先乘除,后加减。

例:查询员工的姓名,月薪及年薪

SQL> select ename , sal , sal*12 from emp ;

ENAME            SAL     SAL*12
---------- --------- ----------
SMITH         800.00       9600
ALLEN        1600.00      19200
WARD         1250.00      15000
JONES        2975.00      35700
MARTIN       1250.00      15000
BLAKE        2850.00      34200
CLARK        2450.00      29400
SCOTT        3000.00      36000
KING         5000.00      60000
TURNER       1500.00      18000
ADAMS        1100.00      13200
JAMES         950.00      11400
FORD         3000.00      36000
MILLER       1300.00      15600

14 rows selected


对日期进行加减运算:

SQL> select sysdate , sysdate+1 ,sysdate -3 from dual ;

SYSDATE     SYSDATE+1   SYSDATE-3
----------- ----------- -----------
2014/4/8 14 2014/4/9 14 2014/4/5 14


注意:

对日期进行加减运算是没有问题的,但是日期不能进行乘除运算,数字加减乘除运算都可以。

上面中列名直接以SYSDATE+1 ,SYSDATE-3 显示了查询的结果,这种列名的意义不是很明确,所以我可以给列起一个别名。列名最好规避中文。
如:
SQL> select sysdate date1 , sysdate-1 yesterday from dual;

DATE1       YESTERDAY
----------- -----------
2014/4/8 14 2014/4/7 14


别名的方式有三种:

1)我们直接在列名的后面,敲一个空格,后面直接加上别名的名字
2)我们可以再列名的后面添加as关键字,后面再加上别名的名字
3)上面两种方式,得到的别名都是大写的,我们可以通过给别名加上双引号,来得到我们想要的列名

SQL> select sal as s , ename  "name" ,sal*12  money from emp ;

S name            MONEY
--------- ---------- ----------
800.00 SMITH            9600
1600.00 ALLEN           19200
1250.00 WARD            15000
2975.00 JONES           35700
1250.00 MARTIN          15000
2850.00 BLAKE           34200
2450.00 CLARK           29400
3000.00 SCOTT           36000
5000.00 KING            60000
1500.00 TURNER          18000
1100.00 ADAMS           13200
950.00 JAMES           11400
3000.00 FORD            36000
1300.00 MILLER          15600

14 rows selected


连接符:

把列与列,列与字符链接在一起, 用'||' 表示 ,可以用来合成列。

SQL> select empno||'编号'||'姓名'||ename||'工资'||sal info from emp ;

INFO
--------------------------------------------------------------------------------
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

14 rows selected


默认情况下查询会返回全部的行,包括重复行。
例:查询表中的工作行
SQL> select job from emp ;

JOB
---------
CLERK
SALESMAN
SALESMAN
MANAGER
SALESMAN
MANAGER
MANAGER
ANALYST
PRESIDENT
SALESMAN
CLERK
CLERK
ANALYST
CLERK

14 rows selected

我们发现有重复的行,那么如何去除呢,就要使用我们的distinct 关键字。
SQL> select distinct job from emp ;

JOB
---------
CLERK
SALESMAN
PRESIDENT
MANAGER
ANALYST


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Oracle select 简单查询