orcl數據庫命令——前篇

一、常用基礎命令

1.本機連接虛擬機oracle數據庫
    sqlplus scott/[email protected]:1521/orcl

2.查看當前用戶
    show user;

3.查看員工表結構
    desc emp;
    
4.查看所有表
    select * from tab;
    
5.修改密碼
    sqlplus scott/tiger as sysdba
    alter user scott identified by tiger

6.設置行寬
    set linesize 200

7.設置ename列寬度
    col ename for a8

8.命令行中select查詢中from寫成了form,更改錯誤繼續執行
    a.錯誤行號
    b.c /form/from
    c./

9.SQL語句中的null
    a. 包含null的表達式都爲null
        sal+null=null
    b. null永遠!=null
        is null或is not null
    c.如果集合中含有null,不能使用not in;但可以使用in
    d.oracle中null值最大
    e.組函數自動濾空;可以嵌套濾空函數來屏蔽他的濾空功能

10.清理屏幕命令
    host cls

11.打開本機默認文本編輯器命令
    ed

12.去掉重複記錄關鍵詞
    distinct
    

13.select 3+2 from ? 這個問號處的僞表名
    dual

14.字符串拼接連接符
    ||

15.錄屏
    spool F:/test.txt
    spool off

16.select * from 表名 where 條件
    (包括 between and、in、not in、is null、like...)

17.查看參數設置
    select * from v$nls_parameters;
    
18.修改日期格式
    alter session set NLS_DATE_FORMAT='yyyy-mm-dd'
    
19.轉義字符使用(名字中含有_)
     select * from emp where ename like '%\_%' escape '\'
    
20.排序關鍵字
    order by(升序asc,降序desc)
    
21.設置每頁記錄數
    set pagesize 20

22.排序空值放最後
    select * from emp order by comm desc nulls last  
    
23.字符行數
    (1)大小寫:
        1> lower("hello"): 轉小寫
        2> upper("hello"): 轉大寫
        3>initcap("hello"): 首字母大寫
    (2)截取:
        1> substr(a,b): 從a中,第b位開始取
        2> substr(a,b,c) 從a中,第b位開始取,取c位
    (3)長度:
        1> length('北京'): 字符數
        2> lengthb('北京'): 字節數
    (4)填充:
        1> lpad('abcd',10,'*'): 左填充
        2> rpad('abcd',10,'*'): 右填充
    (5)替換:
        1> replace('Hello World','l','*'): 替換爲指定字符

二、函數部分

24.數值函數
        1> 四捨五入:round(a,b): a:傳入數字,b:保留小數位數
        2> 截斷: trunc(a,b): a:傳入數字,b:截取小數位數
        3> 取餘: mod(a,b): a%b
25.查詢當前時間:
    select sysdate from dual;
    select systimestamp from dual;
        
26.格式化時間:
    to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')
    to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss:ff')
    
27.日期數學運算
    sysdate+1:當前日期加1天
    兩個日期相減,返回相差天數
        
28.日期函數
    1> months_between(sysdate,hiredate):兩個日期之間相差的月數
    2> add_months(sysdate,12),當前日期加上12個月
    3> next_day(sysdate,'星期日'):當前日期的下個星期日
    4> last_day(sysdate): 這個月的最後一天
    5> round(sysdate,'month'): 四捨五入到月; round(sysdate,'year'): 四捨五入到年
    6> trunc(sysdate,'month'): 截取到月; trunc(sysdate,'year'): 截取到年    
    
29.轉換函數:
    1> to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day')結果是: 2016-03-13 15:26:12今天是星期日
    2>  to_char(12345678.23,'L999,999,999.99')結果是: ¥12,345,678.23
    
30.通用函數:
    1> nvl2(a,b,c) 當a=null的時候,返回c;否則返回b
    2> nullif(a,b) 當a=b的時候,返回null;否則返回a
    3> coalesce(a,b,c..) 從左到右 找到第一個不爲null的值
    
31.case表達式:
    case表達式:
        case job when 'PRESIDENT' then sal+1000
                  when 'MANAGER' then sal+800
                  else sal+400
        end
        
32.decode函數:
    decode(job,'PRESIDENT',sal+1000,
                     'MANAGER',sal+800,
                              sal+400)
                              
33.多行函數:
    1> sum、count、avg
    2>分組:group by .. having ..
    
34.group by增強:
    1> select deptno,job,sum(sal) from emp group by rollup(deptno,job);
    2> 格式化:break on deptno skip 2
    3> 取消格式化: break on null

三、多表查詢中的連接

35.等值連接:
    select e.empno,e.ename,e.sal,d.dname
    from emp e,dept d
    where e.deptno=d.deptno;
    
36.不等值連接:
    select e.empno,e.ename,e.sal,s.grade
    from emp e,salgrade s
    where e.sal between s.losal and s.hisal;
    
37.外連接:
    1> 左外連接:where e.deptno=d.deptno(+)
    2> 右外連接:where e.deptno(+)=d.deptno
    
38.自連接: 通過表的別名,將同一張表視爲多張表
    select e.ename 員工姓名,b.ename 老闆姓名
    from emp e,emp b
    where e.mgr=b.empno;
    
39.層次查詢(level僞列):
    select level,empno,ename,mgr
    from emp
    connect by prior empno=mgr
    start with mgr is null
    order by 1; 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章