人生三大境界
衣带渐宽终不悔,为伊消得人憔悴。
昨夜西风凋碧树,独上高楼,望尽天涯路。
众里寻他千百度,蓦然回首,那人却在灯火阑珊处。

Oracle入门基础(一)一一基本查询

SQL> --当前用户
SQL> show user

SQL>  --当前用户下的表
SQL> select * from tab;
TNAME                          TABTYPE  CLUSTERID                               
------------------------------ ------- ----------                               
DEPT                           TABLE                                            
EMP                            TABLE                                            
BONUS                          TABLE                                            
SALGRADE                       TABLE                                            

SQL> --员工表的结构
SQL> desc emp
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)

SQL> --清屏
SQL> host cls

SQL> --查询所有的员工信息
SQL> select * from emp;
     EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                                                      
      7369 SMITH    CLERK           7902 17-12月-80       800                    20                                     
      7499 ALLEN    SALESMAN        7698 20-2月 -81      1600        300         30 


SQL> --设置行宽
SQL> show linesize
linesize 80
SQL> set linesize 120
SQL> --设置列宽
SQL> col ename for a8
SQL> col sal for 9999

SQL> --通过列名
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp
     EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                                                 
      7369 SMITH    CLERK           7902 17-12月-80       800                    20                                     
      7499 ALLEN    SALESMAN        7698 20-2月 -81      1600        300         30                  
                                   
SQL> SQL优化的原则:
SQL> 1。尽量使用列名

SQL> --查询员工信息:员工号 姓名 月薪 年薪
SQL> select empno,ename,sal,sal*12  from emp;
     EMPNO ENAME      SAL     SAL*12                                                                                                                                                              
      7369 SMITH      800       9600                                                                                    
      7499 ALLEN     1600      19200                                                                                    
   

SQL> --查询员工信息:员工号 姓名 月薪 年薪 奖金 年收入
SQL> select empno,ename,sal,sal*12,comm,sal*12+comm from emp;
     EMPNO ENAME      SAL     SAL*12       COMM SAL*12+COMM                                                                                                                       
      7369 SMITH      800       9600                                                                                    
      7499 ALLEN     1600      19200        300       19500                                                             
   

SQL> /*
SQL> SQL中的null
SQL> 1、包含null的表达式都为null
SQL> 2、null永远!=null
SQL> */
SQL> --nvl(a,b)   nvl2
SQL> select empno,ename,sal,sal*12,comm,sal*12+nvl(comm,0)   from emp;
     EMPNO ENAME      SAL     SAL*12       COMM SAL*12+NVL(COMM,0)                                                                                                       
      7369 SMITH      800       9600                          9600                                                      
      7499 ALLEN     1600      19200        300              19500                                                      

SQL> --2、null永远!=null
SQL> --查询奖金为null的员工
SQL> select *  from emp  where comm=null;
未选定行

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                                     
SQL> host cls

SQL> select empno,ename,sal,sal*12,comm,sal*12+nvl(comm,0)  from emp;
     EMPNO ENAME      SAL     SAL*12       COMM SAL*12+NVL(COMM,0)                                                                                                     
      7369 SMITH      800       9600                          9600                                                      
      7499 ALLEN     1600      19200        300              19500                                                      

SQL> --distinct 去掉重复记录
SQL> select distinct deptno from emp;
    DEPTNO                                                                                                                                                                                                                 
        30                                                                                                              
        20                                                                                                              
        10                                                                                                              

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                                                                                                      
SQL> --distinct作用于后面所有的列



SQL> --连接符 ||
SQL> --concat函数
SQL> select concat('Hello','  World');
select concat('Hello','  World')
                               *
第 1 行出现错误: 
ORA-00923: 未找到要求的 FROM 关键字 


SQL> select concat('Hello','  World') from emp;

CONCAT('HELL                                                                                                            
------------                                                                                                            
Hello  World                                                                                                            
Hello  World                                                                                                            

SQL> select 3+2 from dual;
       3+2                                                                                                                                                                                                                       
         5                                                                                                              

SQL> --dual表:伪表
SQL> --伪列
SQL> select 'Hello'||'  World' 字符串 from dual;

字符串                                                                                                                  
------------                                                                                                            
Hello  World                                                                                                            

SQL> --查询员工信息:***的薪水是****
SQL> select ename||'的薪水是'||sal 信息 from emp;

信息                                                                                                                                                                              
SMITH的薪水是800                                                                                                        
ALLEN的薪水是1600                                                                                                       
posted @ 2019-09-17 16:42  一剑霜寒十九洲  阅读(137)  评论(0编辑  收藏  举报