Oracle之基本select语句


1、显示所有列
	SQL> select * from dept;

	   DEPTNO DNAME          LOC
	--------- -------------- -------------
	       10 ACCOUNTING     NEW YORK
	       20 RESEARCH       DALLAS
	       30 SALES          CHICAGO
	       40 OPERATIONS     BOSTON
2、显示部分列
	SQL> select dname from dept;

	DNAME
	--------------
	ACCOUNTING
	RESEARCH
	SALES
	OPERATIONS
3、使用表达式
	SQL>  select ename,empno,job,sal,sal*12 from emp;

	ENAME           EMPNO JOB              SAL     SAL*12
	---------- ---------- --------- ---------- ----------
	SMITH            7369 CLERK            800       9600
	ALLEN            7499 SALESMAN        1600      19200
	WARD             7521 SALESMAN        1250      15000
	JONES            7566 MANAGER         2975      35700
	MARTIN           7654 SALESMAN        1250      15000
	BLAKE            7698 MANAGER         2850      34200
	CLARK            7782 MANAGER         2450      29400
	SCOTT            7788 ANALYST         3000      36000
	KING             7839 PRESIDENT       5000      60000
	TURNER           7844 SALESMAN        1500      18000
	ADAMS            7876 CLERK           1100      13200
	JAMES            7900 CLERK            950      11400
	FORD             7902 ANALYST         3000      36000
	MILLER           7934 CLERK           1300      15600

	已选择14行。
4、使用别名
	SQL> select ename as "姓名",empno "编号",job 职位,sal 月薪,sal*12 年薪 from emp;

	姓名             编号 职位            月薪       年薪
	---------- ---------- --------- ---------- ----------
	SMITH            7369 CLERK            800       9600
	ALLEN            7499 SALESMAN        1600      19200
	WARD             7521 SALESMAN        1250      15000
	JONES            7566 MANAGER         2975      35700
	MARTIN           7654 SALESMAN        1250      15000
	BLAKE            7698 MANAGER         2850      34200
	CLARK            7782 MANAGER         2450      29400
	SCOTT            7788 ANALYST         3000      36000
	KING             7839 PRESIDENT       5000      60000
	TURNER           7844 SALESMAN        1500      18000
	ADAMS            7876 CLERK           1100      13200
	JAMES            7900 CLERK            950      11400
	FORD             7902 ANALYST         3000      36000
	MILLER           7934 CLERK           1300      15600

	已选择14行。
	
	注:别名可以省掉""和as,但是列名中如果有空格,则不能省略""
5、空值问题
	(1)问题:有的员工的年薪为空?
		SQL> select ename,empno,job,sal,sal*12+comm from emp;

		ENAME           EMPNO JOB              SAL SAL*12+COMM
		---------- ---------- --------- ---------- -----------
		SMITH            7369 CLERK            800
		ALLEN            7499 SALESMAN        1600       19500
		WARD             7521 SALESMAN        1250       15500
		JONES            7566 MANAGER         2975
		MARTIN           7654 SALESMAN        1250       16400
		BLAKE            7698 MANAGER         2850
		CLARK            7782 MANAGER         2450
		SCOTT            7788 ANALYST         3000
		KING             7839 PRESIDENT       5000
		TURNER           7844 SALESMAN        1500       18000
		ADAMS            7876 CLERK           1100
		JAMES            7900 CLERK            950
		FORD             7902 ANALYST         3000
		MILLER           7934 CLERK           1300

		已选择14行。
	(2)规则:
		<1>任何数和空值运算都为空;
		<2>空值不为空,即null != null;
	(3)解决办法:滤空函数
		<1>nvl(a,b):当a是null的时候返回b(b可以是数字,也可以是字符串,字符串用单引号括起来);
		<2>如何解决之前的年薪问题
		SQL> select ename,empno,job,sal,sal*12+nvl(comm,0) from emp;

		ENAME           EMPNO JOB              SAL SAL*12+NVL(COMM,0)
		---------- ---------- --------- ---------- ------------------
		SMITH            7369 CLERK            800               9600
		ALLEN            7499 SALESMAN        1600              19500
		WARD             7521 SALESMAN        1250              15500
		JONES            7566 MANAGER         2975              35700
		MARTIN           7654 SALESMAN        1250              16400
		BLAKE            7698 MANAGER         2850              34200
		CLARK            7782 MANAGER         2450              29400
		SCOTT            7788 ANALYST         3000              36000
		KING             7839 PRESIDENT       5000              60000
		TURNER           7844 SALESMAN        1500              18000
		ADAMS            7876 CLERK           1100              13200
		JAMES            7900 CLERK            950              11400
		FORD             7902 ANALYST         3000              36000
		MILLER           7934 CLERK           1300              15600

		已选择14行。
6、查询为空和不为空的数据
	(1)查询为空数据
		SQL> select * from emp where comm is null;

		     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM    DEPTNO
		---------- ---------- --------- ---------- -------------- ---------- ---------- ---------
		      7369 SMITH      CLERK           7902 17-12月-80            800                   20
		      7566 JONES      MANAGER         7839 02-4月 -81           2975                   20
		      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                   30
		      7782 CLARK      MANAGER         7839 09-6月 -81           2450                   10
		      7788 SCOTT      ANALYST         7566 19-4月 -87           3000                   20
		      7839 KING       PRESIDENT            17-11月-81           5000                   10
		      7876 ADAMS      CLERK           7788 23-5月 -87           1100                   20
		      7900 JAMES      CLERK           7698 03-12月-81            950                   30
		      7902 FORD       ANALYST         7566 03-12月-81           3000                   20
		      7934 MILLER     CLERK           7782 23-1月 -82           1300                   10

		已选择10行。
	(2)查询不为空的数据
		SQL> select * from emp where comm is not null;

		     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM    DEPTNO
		---------- ---------- --------- ---------- -------------- ---------- ---------- ---------
		      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300        30
		      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500        30
		      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400        30
		      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0        30
7、连接符(||)和伪表(dual)
	SQL> select 'hello' || 'world' from dual;

	'HELLO'||'
	----------
	helloworld
8、删除重复行(distinct)
	(1)修饰单个字段
		SQL> select distinct deptno from dept;

		   DEPTNO
		---------
		       10
		       20
		       30
		       40
	(2)修饰多个字段:会显示多个字段中都不重复的记录
		SQL> select distinct deptno,job from emp;

   	DEPTNO JOB
		--------- ---------
		       20 CLERK
		       30 SALESMAN
		       20 MANAGER
		       30 CLERK
		       10 PRESIDENT
		       30 MANAGER
		       10 CLERK
		       10 MANAGER
		       20 ANALYST

		已选择9行。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值