01_基本SQL SELECT语句 - Oracle学习笔记



1 登录

普通用户登录
C:\>sqlplus scott/11  quit退出 用户名+密码
超级用户登录

C:\>sqlplus /nolog

SQL*Plus: Release 10.1.0.2.0 - Pr

Copyright (c) 1982, 2004, Oracle.

SQL> connect /as sysdba   //操作用户登录方式
已连接。

查看用户下有什么表

SQL> select * from tab; tab是数据字典 (oracle超级管理员分配给普通用的资源....,tab关键字....)


SQL> select * from dept; 查询表的所有记录

    DEPTNO(部门编号) DNAME 部门名称        LOC 位置
---------- -------------- -------------
       10 ACCOUNTING     NEW YORK
       20 RESEARCH       DALLAS
       30 SALES          CHICAGO
       40 OPERATIONS     BOSTON




SQL> desc dept
名称                                      是否为空? 类型
----------------------------------------- -------- ----------------------------
DEPTNO                                    NOT NULL NUMBER(2)
DNAME                                              VARCHAR2(14)
LOC                                                VARCHAR2(13)

SQL>
基本命令


> set linesize 150 设置行宽
set pagesize 140 设置页大小


SQL> select * from emp;


    EMPNO(员工编号) ENAME (员工名字)   JOB 工种编号           
    MGR HIREDATE(日志时间)     SA(工资)L  
    COMM(奖金)     DEPTNO(部门编号)
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
     7369 SMITH      CLERK           7902 17-12月-80            800                    20
     7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30
     7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30
     7566 JONES      MANAGER         7839 02-4月 -81           2975                    20
     7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30
     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
     7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30
     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

已选择14行。

--- 设置列宽
数字SQL> col empno for 99999999999999999999

字符方式设置列宽
SQL> col ename for a20
SQL> select * from emp;

---清屏
host cls

======================================
select 语言(*检索所有列 部分列   表达式 别名)
select * from emp;
---显示员工姓名 员工编号 工作  月薪 年薪
select ename, empno, job, sal , sal*12 from emp;

select ename as "员工姓名" , empno "编号", job 工作, sal 月 薪 , sal*12  年薪 from emp;
--1别名: 省掉"" as 
--2类名,有空格时, 不能省掉""




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行。


===============
---显示员工姓名 员工编号 工作  月薪 年收入(月薪*12+comm)

select ename, empno, job, sal , sal*12+comm from emp ;


空值问题:
1 NULL空值 任何数和null运算都为null    (null无穷大)

2 空值不是空  null != null

null滤空函数 nvl (a, b) -- 当a是空的时候,返回b( 其中 b可以是数字/字符串)
---字符串和日期在sql语言用单引号扩起来...


select ename, empno, job, sal , nvl (sal*12+comm, 0) from emp 

SQL> ed
已写入 file afiedt.buf


  1* select ename, empno, job, sal , nvl (sal*12+comm, 0) from emp
SQL> edit
已写入 file afiedt.buf


  1  select ename, empno, job, sal , sal*12+ nvl(comm,0) 年收入
  2* from emp
SQL> /


ENAME                     EMPNO JOB              SAL     年收入
-------------------- ---------- --------- ---------- ----------
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行。


查询奖金为空的员工
select * from emp
where comm is null
 1  select * from emp
 2*                    where comm is null
SQL> /

    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

查询奖金不为空的员工
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


========null 捣蛋鬼 ======


---连接符 
select 'hello' || 'world' from emp;

select 'hello' || 'world' from dual;  --伪表


dual是数据字典 (oracle超级管理员分配给普通用的资源....,tab关键字....)

SQL> select sysdate from dual;

SYSDATE
--------------
07-10月-14

SQL>
----DISTINCT 1)作用去除重复的行



 1* select DISTINCT deptno from emp
SQL> /

   DEPTNO
----------
       30
       20
       10

SQL> \

2)DISTINCT 修饰多个字段的时, 当部门编号和工种都一样的时候,认为是重复的...
否则 不同行.
====DISTINCT 2个字段
select DISTINCT deptno, job from emp



SQL 和 SQL*Plus

insert
update
select
delete


ed ed
col

ibm db2
infomix





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值