<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 0, comments - 77, trackbacks - 0, articles - 356
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    oracle sql語句精講

    Posted on 2007-08-23 09:29 semovy 閱讀(468) 評論(0)  編輯  收藏 所屬分類: Oracle數據庫方面
    表 :建立表主要指定義下列信息:
         列定義
         完整性約束
         表所在表空間
         存儲特性
         可選擇的聚集
         從一查詢獲得數據
    語法如下:
    CREATE TABLE tablename (column1 datatype [DEFAULT expression] [constraint], column1 datatype [DEFAULT expression] [constraint], ……)
         例如:
         SQL> create table serv (serv_id number(10),serv_seq_nbr number(3))
    2      tablespace data_bill;
    視圖
    視圖是一個邏輯表,它允許操作者從其它表或視圖存取數據,視圖本身不包含數據。視圖所基于的表稱為基表。
    引入視圖有下列作用:
         提供附加的表安全級,限制存取基表的行或/和列集合。
         隱藏數據復雜性。
         為數據提供另一種觀點。
         促使ORACLE的某些操作在包含視圖的數據庫上執行,而不在另一個數據庫上執行。
    2.1分組視圖
    [例1]簡單的分組視圖
    SQL> create or replace view dept_tot as
    2 select a.dname dept,sum(b.sal) total_sal from scott.dept a,scott.emp b
    3 where a.deptno=b.deptno group by a.dname;

    查看已建立。
    SQL> select * from dept_tot;

    DEPT                   TOTAL_SAL
    --------------               ---------
    ACCOUNTING       8750
    RESEARCH         10875
    SALES                 9400
    [例2]合計視圖
    [例]合計函數視圖實例
    SQL> create or replace view emp_no1 as
    2 select deptno,sum(sal) 工資和,sum(comm) 總和
    3 from scott.emp group by deptno;
    SQL> select * from emp_no1;
    DEPTNO   工資和     總和
    --------- --------- ---------
        10     8750
        20   10875
    30     9400     2200
    索引
    索引是種數據庫對象。對于在表或聚集的索引列上的每一值將包含一項,為行提供直接的快速存取。在下列情況ORACLE可利用索引改進性能:
         按指定的索引列的值查找行。
         按索引列的順序存取表。
    語法:
    create index <index_name> on <table_name(column1,column2…)>
    [storage語句] [其它語句];
    例如:
    SQL> create index idx_serv_01 on serv(srev_id,serv_seq_nbr)
    2   tablespace data_bill_idx
    3   storage (initial 5m next 5m);
    存儲函數
    語法:
    create [or replace] function 函數名(參數1,參數2……) RETURN 類型 IS | AS
         [局部變量說明]
         BEGIN
               執行語句;
         END;
    [例子]:
    建立oracle 的函數
    create or replace FUNCTION SumDeptSalary(dept_no in number)
    return number is
        total number(11,2);
    begin
    select sum(sal) into total from emp where deptno=dept_no;
    return(total);
    end;
    存儲過程
    語法:
    create [or replace] procedure 函數名(參數1,參數2……) IS | AS
         [局部變量說明]
         BEGIN
               執行語句;
         END;
    [例子]
    過程的輸入、輸出參數的用例
    create or replace procedure RaiseSalary(RaiseRate in number,empnum in number,
    outname out varchar2,outsal out number) is
    begin
    update emp set sal=sal*(1+RaiseRate);
    select ename into outname from emp where empno=empnum;
    select sal into outsal from emp where empno=empnum;
    end;
    函數pl/sql 中的過程參數調用示例
    set serveroutput on; //顯示變量值的屬性
    declare name varchar2(10);sal number;
    begin
    RaiseSalary(0.05,7566,name,sal);
    dbms_output.put_line(name);
    dbms_output.put_line(sal);
    end;:
    查找系統時間

    select sysdate from dual;
    系統日期的格式轉換
    select to_char(sysdate,'MM/DD/YYYY HH:MM:SS AM') from dual;
    分解日期
    年 select to_char(sysdate,'year') from dual;
    月 select to_char(sysdate,'mon') from dual;
    月中第幾日 select to_char(sysdate,'dd') from dual;
    一年中的第幾星期 select to_char(sysdate,'ww') from dual;
    季度 select to_char(sysdate,'q') from dual;
    一年中的第幾天 select to_char(sysdate,'ddd') from dual;
    查詢時間
    testdate1 date
    select * from testdate where to_char(trunc(testdate1),'yyyy/mm/dd')='2001/04/09'
    oracle 中使用trunc()函數把所有日期的時間值設置為12:00AM,消除sysdata中的時間
    trunc()函數可進行時間加減
    在select中日期相減得出天數
    select trunc(sysdate)-trunc(hiredate) from emp where trunc(sysdate)-trunc(hiredate)>5000;
    case 語句使用decode()函數替代

    例如:select decode(deptno,10,'十',20,'二十',30,'三十') as chinesecode from emp;
                列名   值 表示值
    decode列乘積的應用
    decode(Yjtx.Lb,0,Yprckmx.Ypsl*Xmxx.Xmpzlbl,1,Yprckmx.Ypsl*Xmxx.Xmpzlbl,2,Yprckmx.Ypsl) as Ypsl
    使用decode函數計算
    select sum(decode(deptno,20,1))-sum(decode(deptno,30,1)) as d from emp;

    偽列
    偽列不是表中真正的列,只是特征與列相同
    ---currval和nextval偽列
    currval和nextval偽列與序列聯合使用。currval偽列返回被引用的序列的當前值;
    nextval偽列增加序列的值,并返回序列的新值。只能用于select values 子句和set 子句
    表中主鍵列增加流水值
    insert into employee
    values(emp_id_seq.nextval,'stanton bernard');
    emp_id_seq為序列
    ---rownum偽列
    rownum偽列指出從表中檢索數據的次序。例如,值為1的rownum表明該記錄是從表中檢索的第一條記錄。
    rownum偽列最常見的用途是用于where子句。例如
    select * from emp where rownum <10;
    建立bh流水序列值
    create sequence seqczyqx
    start with 1
    increment by 1
    nocycle;
    生成表中沒有的列的方法
    select 'testchar' as dd,sysdate deptno from emp,dual;
        字符值   列名
    select 2342345234 as dd,sysdate deptno from emp,dual;
        數值     列名
    ________________________________________________________________________
    返回字符串的一部分
    select substr(ename,1,2) from emp;
    -----------------------------------------------------------------------------------集合操作
    select * from emp where deptno in(10,20);
    -----------------------------------------------------------------------------------
    在表中插入常量
    insert into testdate select 1,sysdate,sysdate from dual;
    -----------------------------------------------------------------------------------
    在select中對多個變量賦值
    SELECT SFBL ,DWBL into XMBL,DWBL FROM HZBL WHERE CFLBBM=CFLBBM AND HZLBBM=HZLBBM and Degree=Hzsf;
    -----------------------------------------------------------------------------------
    比較操作中的空問題
    is null;is not null
    使用nvl()函數
    select count(*),nvl(comm_amt,0) from comm;
    nvl函數用'0'值置換comm_amt表列中值為空的所有數據行
    ------------------------------------------------------------------------------
    ·      從另一張表改進得到
    Sql語句:
    Create Table <新表> As
      Select <列的列表> From <舊表>
      Where <約束條件>[可選]
    ·      拷貝表結構
      Create Table <表名> As
      Select <列的列表>From <舊表>
      Where 1=2
    主站蜘蛛池模板: 不卡一卡二卡三亚洲| 国产成人亚洲合集青青草原精品| 男女作爱在线播放免费网站| 亚洲国产成人精品不卡青青草原| 成年人免费的视频| 免费的黄色网页在线免费观看| 久久久久亚洲精品影视| 毛片免费观看视频| 国产免费阿v精品视频网址| 亚洲AV无码一区二区三区在线| 亚洲免费日韩无码系列 | 国产成人亚洲精品91专区高清| 久久精品国产亚洲| 日本xxwwxxww在线视频免费| 无码av免费一区二区三区| 亚洲日韩在线中文字幕综合| 337p日本欧洲亚洲大胆精品555588 | 亚洲熟女综合一区二区三区| 中文字幕第一页亚洲| 成人人观看的免费毛片| 嫩草在线视频www免费观看| 亚洲av无码专区在线观看下载| 亚洲国产精品久久久久| 又大又硬又爽免费视频| 日本黄网站动漫视频免费| 久久久久免费视频| 美女被暴羞羞免费视频| 亚洲一卡二卡三卡| 亚洲AV日韩AV鸥美在线观看| 免费在线视频一区| 好吊妞在线新免费视频| 91av免费观看| 久久成人免费大片| 国产一级黄片儿免费看| 香蕉视频免费在线| 亚洲AV无码专区在线观看成人| 亚洲一区免费视频| 4480yy私人影院亚洲| 亚洲国产精品lv| 亚洲精品国产成人片| 亚洲国产精品成人网址天堂|