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

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

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

    posts - 2,  comments - 0,  trackbacks - 0

    基本概念
    DDL 數(shù)據(jù)定義語言 - 建立數(shù)據(jù)庫對象

    create /alter/ drop/ truncate ……table table_name.

    DML 數(shù)據(jù)操縱語言 - 數(shù)據(jù)的查看和維護(hù)

    select / insert /delete /update

    TCL 事務(wù)控制語言 - 數(shù)據(jù)是否保存到數(shù)據(jù)庫中

    commit / rollback / savepoint

    DCL 數(shù)據(jù)控制語言 -- 查看對象的權(quán)限

    grant / revoke

    數(shù)據(jù)庫設(shè)計

    關(guān)系數(shù)據(jù)模型的組成

    一張或多張表

    表的索引

    視圖

    觸發(fā)器

    表與表的關(guān)系

    數(shù)據(jù)庫Schema
    概念上的 : 一組DDL
    物理上的 : 一個命名空間,包含了表,過程,視圖的集合
    常用命令
    connect 用戶名/密碼 連接到指定用戶
    desc tab_name 察看表tab_name的結(jié)構(gòu)
    quit/exit 退出
    clear screen 清除屏幕
    set linesize 200 設(shè)置一行顯示200個字符
    set pagesize 20 設(shè)置每頁顯示20行
    dbms_output.put_line() 打印,類似于System.out.println();

    set serveroutput on 打開服務(wù)器輸出,否則上面打印語句報錯

    edit 編輯緩存中的語句
    / 執(zhí)行上一次語句塊/可重復(fù)執(zhí)行
    @ sqlpath 執(zhí)行某sql文件
    @@ sqlfile 執(zhí)行sqlpath環(huán)境變量中的文件
    spool file 打印日志到文本文件
    spool off 停止打印
    # 在輸入sql語句的過程中臨時先運行一個sql*plus命令
    --查看大字短的大小
    SELECT DBMS_LOB.GETLENGTH(MYCLOB) FROM ATTACHMENT; //MYCLOB是列名,ATTACHMENT 是表名
    SELECT DBMS_LOB.GETLENGTH(MYBLOB) FROM ATTACHMENT;
    常用表
    user_constraints 用戶約束
    user_tables 用戶表
    all_all_tables 所有用戶表
    all_constraints 所有約束
    user_cons_columns 約束列
    all_cons_columns 所有約束列
    nls_session_parameters 當(dāng)前會話信息
    v$nls_parameters 系統(tǒng)參數(shù)
    數(shù)據(jù)類型
    字符型
    char 最大2000個字節(jié) 定長
    varchar2最大4000個字節(jié) 變長
    數(shù)字類型
    number 10的-38次方 到10的38次方 可以表示小數(shù) 也可以表示整數(shù)
    日期
    date 包含年月日和時分秒 7個字節(jié)
    大對象
    clob 字符型大對象 >4000字節(jié) 最大4G
    blob 二進(jìn)制大對象 圖像/聲音 4G
    偽類型
    %type 可以引用某列的類型
    %rowtype 可以引用某表,作為類型
    rownum 結(jié)果集每行的行號
    表操作基礎(chǔ)
    創(chuàng)建表
    create table tab_name
    (
    column_name data_type ,
    column_name data_type ,
    column_name data_type ,
    ……..
    )
    修改表
    插入列
    alter table tab_name add(column_name data_type)
    修改列
    alter table tab_name modify(column_name data_type)
    刪除列
    alter table tab_name drop column column_name;
    表重命名
    rename tab_name to change_name
    刪除表
    drop table tab_name刪除記錄和結(jié)構(gòu),不可恢復(fù)

    添加數(shù)據(jù)
    insert into tab_name[(column_name , column_name…)] values(value,value…)
    序列 sequence <僅oracle中有>
    創(chuàng)建序列
    create sequence 自定義序列名字;
    獲得下一個值
    seq_name.nextval
    獲得當(dāng)前值
    seq_name.currval
    復(fù)雜序列 序列的nextval是不可逆的
    create sequence 自定義序列名字
    increment by 5 <--遞增5-->
    start with 0 <--從0開始-->
    maxvalue 100 <--最大值 也可以使用nomaxvalue-->
    minvalue -100 <--最小值 也可以使用nominvalue-->
    cycle <--循環(huán)增長 也可以使用nocycle-->
    cache 30 <--緩存 也可以使用nocache-->

    修改數(shù)據(jù)
    update tab_name set expression
    刪除數(shù)據(jù)
    delete tab_name 刪除記錄,不刪除結(jié)構(gòu),可以恢復(fù) ?
    delete tab_name where expression 條件刪除 ?
    truncate table tab_name 僅清除數(shù)據(jù),保留結(jié)構(gòu),不可恢復(fù)
    約束
    主鍵約束 用來唯一表示一條數(shù)據(jù)的字段,其值不能重復(fù),不能為null
    create table test
    (
    nationality varchar2(20),
    city varchar(20),
    constraint nick_pk primary key(nationality,city)
    );
    外鍵約束 引用其他表的主鍵到本表,在本表中叫外鍵,用來做表關(guān)系
    create table test
    (
    nationality varchar2(20),
    city varchar(20),
    constraint nick_fk foreign key(nationality) references
    tab_name(nationality)
    );
    <** create table test1
    (
    id varchar2(20),
    name varchar(20),
    tid varchar(20),
    primary key(id),
    constraint test1 foreign key(tid) references
    test2(tid)
    );
    "constraint test1:外鍵關(guān)聯(lián)名"
    create table test2
    (
    tid varchar2(20),
    descp varchar(20),
    primary key(tid)
    ); **>
    非空約束
    create table test
    (
    nationality varchar2(20) not null,
    );
    唯一約束
    create table test
    (
    nationality varchar2(20) ,
    constraint nick_uk unique(nationality)
    );
    檢查約束
    create table test1
    (
    nationality varchar2(20) ,
    constraint nick_ck check(nationality <> '美國')
    );
    默認(rèn)值
    default
    設(shè)定約束條件無效
    disable|enable constraint_name
    級聯(lián)刪除<級聯(lián)更新要使用觸發(fā)器>
    references … ON DELETE CASCADE
    運算符
    < 小于
    <= 小于等于
    > 大于
    >= 大于等于
    = 等于
    != 不等于
    <> 不等于
    := 賦值
    is null 如果操作數(shù)為null返回true
    like 比較字符串 _代表一個字符 %代表多個字符

    create table test
    (
    a number
    )
    insert into test value(10);
    insert into test value(20);
    insert into test value(30);
    between 驗證值是否在范圍之內(nèi)
    select * from test where a between 10 and 20;
    in 驗證操作書在設(shè)定的一系列值中
    select * from test where a in(1,10,20,30);
    all 表示子查詢返回值中的所有值,相當(dāng)于比較最大值
    select sal from emp where sal > all( select sal from emp where sal<2000);
    any 表示子查詢返回值中的任意值,相當(dāng)于最小值

    and 兩個條件都滿足
    or 只滿足一個
    not 取反
    + 加
    - 減
    * 乘
    / 除
    基礎(chǔ)查詢
    <--基本的select語句-->
    select 列名,列名,.. from 表名,表名,.. where 條件 group by 列名 having 條件
    select 是必須的 ,后面添你要查詢的列名 ,* 代表所有
    from 是必須的 , 后面填寫你要查詢的表名,可以有多個
    where 可選的,后面填寫你的查詢條件
    group by 可選的,對聚合進(jìn)行分組,當(dāng)查詢內(nèi)容多于一列且包含聚合函數(shù)時使用
    having 僅用于group by 的關(guān)鍵字,和where作用一樣

    查詢最大值:
    select * from product where price not in (select p.price from product p, product d
    where p.price<d.price)

    <--消除相同的行-->
    select distinct 列名,列名,..from 表名

    <--排序 order by-->
    select 列名,列名,.. from 表名 order by 要排序的列名

    <--注意:order by指令需聚合函數(shù)配合使用,否則只能是單列-->

    <--聚合函數(shù)-->
    avg 平均值
    select avg(emp.sal) from emp;
    sum 求和
    select sum(emp.sal) from emp;
    max 最大值
    select max(emp.sal) from emp;
    min 最小值
    select min(emp.sal) from emp;
    count 總數(shù)
    select count(emp.sal) from emp;

    <--排序-->
    升序
    select * from emp order by emp.sal ;
    降序
    select * from emp order by emp.sal desc;

    <--數(shù)據(jù)復(fù)制-->
    select * into myemp from emp;

    <--表復(fù)制-->
    create table myemp as select * from emp;
    create view bb as select ………

    <--小技巧-->
    啞元表 在沒有查詢表的情況下使用
    select 1+1 from dual
    查詢分割 ||
    select a.a1 ||'----'|| a.a2 from a;
    查詢行數(shù)限制
    select * from a where rownum<=2;
    查詢表結(jié)構(gòu)
    desc tab_name
    數(shù)據(jù)復(fù)制
    select tab_name into tab_name|var from tab_name

    --檢索訂單總額最大的用戶
    select * from users where id =
    (
    select userid from
    (
    select userid, sum(price*quantity) as total
    from orders group by userid order by total desc
    )
    where rownum=1
    );

    mysql:技巧,可將文件的內(nèi)容插入到表中.
    load data local infile 'd:/sql.txt' into table product;
    高級查詢
    笛卡爾乘積
    select dname,ename from emp,dept; 這種通過多張表簡單對加是沒有太大意義的

    集合運算
    交集 用來得到兩個或者多個不同集合的共同元素,兩個集合的交集就是其中所有屬性相等的元素.交集有一個嚴(yán)格的限制:每個結(jié)果集中所有列都必須匹配相等

    減集 用來查找在一個集合中出現(xiàn)過,而在另一個集合中沒有出現(xiàn)的元素,與交集相反的是: 每個結(jié)果集中所有列都必須匹配不相等

    并集 用來合并兩個或者多個類似的集合

    交集 intersect
    select語句 intersect select語句
    減集 minus
    select語句 minus select語句
    并集 union or union all
    select語句 union select語句

    內(nèi)連接
    在連接條件中使用等于號(=)運算符比較被連接列的列值,其查詢結(jié)果中列出被連接表中的所有列,包括其中的重復(fù)列。
    select dname,ename from dept,emp where dept.deptno = emp.deptno


    外連接
    條件列使用(+),則此列為外連列,主列信息全部顯示,外連列沒有則顯示空
    多行子查詢
    返回多個行,必須包含一個多行運算符。
    視圖
    視圖語法
    創(chuàng)建視圖: create [or replace] view <名字> as <select 語句>
    視圖用于簡化查詢,視圖中實際存放的是一個查詢語句而已,返回的是結(jié)果集
    在視圖中可以修改數(shù)據(jù),但是: 建立視圖的查詢語句必須是一個簡單的select(只查詢一個表,并且不含有分組函數(shù))
    查看視圖: select * from 視圖名;

    程序塊
    在這之前,我們所有的sql語句都是一句一句執(zhí)行的,如果我們把很多事情看作一個整體提交執(zhí)行的話,必須使用程序塊。

    聲明部分:聲名變量及初始化
    關(guān)鍵字:declare

    執(zhí)行部分:存放所有可執(zhí)行的代碼,這些代碼包含在begin/end中
    關(guān)鍵字:begin end

    每個指令結(jié)束用;表示,--表示注釋


    --這是一個示例
    declare
    i number:=5; y number:=6;
    begin
    i:=i+y;
    dbms_output.put_line(i);
    end;
    /
    流程控制
    --條件if......then...elseif.. .end if;
    declare
    i number:=50;
    begin
    if i=50
    then dbms_output.put_line(i);
    elsif i<50
    then dbms_output.put_line(0);
    end if;
    end;
    /
    -----使用loop循環(huán)(exit when 退出條件)
    declare
    i number;
    begin
    i:=0;
    loop
    exit when i=10;
    dbms_output.put_line(i);
    i:=i+1;
    end loop;
    end;

    -----使用while-loop循環(huán)
    declare
    i number;
    begin
    i:=0;
    while i<10
    loop
    dbms_output.put_line(i);
    i:=i+1;
    end loop;
    end;
    /

    -----使用for-loop循環(huán)

    begin
    for i in 1..10
    loop
    dbms_output.put_line(i);
    end loop;
    end;
    /

    -----使用for-loop反序循環(huán)

    begin
    for i in REVERSE 1..10
    loop
    dbms_output.put_line(i);
    end loop;
    end;
    事務(wù)處理
    隔離級別 臟讀 不可重復(fù)讀 虛讀
    讀未提交
    Read uncommitted 可以 可以 可以
    讀已提交
    Read committed 不可以 可以 可以
    可重復(fù)讀
    Repeatable read 不可以 不可以 可以
    可串行化
    Serializable 不可以 不可以 不可以

    臟讀是指當(dāng)一個事務(wù)正在訪問數(shù)據(jù),并且對數(shù)據(jù)進(jìn)行了修改,而這種修改還沒有提交到數(shù)據(jù)庫中,這時,另外一個事務(wù)也訪問這個數(shù)據(jù),然后使用了這個數(shù)據(jù)。
    例如:你銀行有1000塊,你取出500,但沒最終提交,你老婆這時通過ATM查帳,你放棄了取款,這時帳戶應(yīng)該還有1000,但是你老婆看到的是500,于是你老婆提交了,結(jié)果你損失了500

    Ps: 用線程方式理解------讀數(shù)據(jù)不加鎖

    不可重復(fù)讀是指當(dāng)事務(wù)兩次讀取同一行數(shù)據(jù),但每次得到的數(shù)據(jù)都不一樣時,就會發(fā)生這種事件。
    例如:你用網(wǎng)絡(luò)察看你銀行帳戶,你老婆這時用ATM察看,這時你取出了500,你老婆準(zhǔn)備取1000塊發(fā)現(xiàn)不夠了…..

    Ps: 用線程方式理解------讀之前加鎖,讀完放鎖

    臟讀和不可重復(fù)讀的區(qū)別是,一個未提交讀取,一個以提交讀取

    虛讀是指一個事物查詢兩次,另一個事物在這兩次之間插入了數(shù)據(jù),導(dǎo)致兩次查詢的結(jié)果不同
    Ps: 用線程方式理解------讀之前加鎖,讀完不放鎖,直到commit或rollback才放鎖

    串行化-----完全安全的數(shù)據(jù)訪問模式
    Ps: 用線程方式理解------讀之前加條件鎖,讀完不放鎖,直到commit或rollback才放鎖

    commit 提交上一個事物,開始下一個事物
    savepoint var 保存點
    rollback 回滾到事務(wù)開始處,或某保存處
    存儲過程
    語法格式
    create or replace procedure 過程名(參數(shù) 參數(shù)設(shè)置 參數(shù)類型) is
    聲明語句段;
    begin
    執(zhí)行語句段;
    exception
    異常處理語句段;
    end;
    參數(shù)設(shè)置
    in參數(shù):讀入?yún)?shù),主程序向過程傳遞參數(shù)值。
    out參數(shù):讀出參數(shù),過程向主程序傳遞參數(shù)值。
    in out 參數(shù):雙向參數(shù),過程與主程序雙向交流數(shù)據(jù)。
    調(diào)用存儲過程方法
    無返回參數(shù) execute 過程名(參數(shù));
    有返回參數(shù)的要在另一個過程中調(diào)用并賦值

    例子:
    --賦值語句< := >
    create or replace procedure pro4(w in integer,h in integer)
    as
    width integer :=w;
    hight integer :=h;
    area real;
    begin
    area :=(width+hight)*2;
    dbms_output.put_line('area=' || area);
    end;
    /

    --條件語句<if .. then ... end if>
    create or replace procedure myro5(num in integer) as
    n integer :=num;
    begin
    if n=5 then
    dbms_output.put_line('ok');
    else
    dbms_output.put_line('not equals');
    end if;
    end;
    /

    --循環(huán)<while ** loop *** end loop; for * in ***loop end loop;>
    create or replace procedure mypro6(n in integer) as
    con integer :=0;
    begin
    dbms_output.put_line('while loop.=========');
    while con<n loop
    dbms_output.put_line(con);
    con :=con+1;
    end loop;

    dbms_output.put_line('for loop ==========');
    con :=0;
    for con in 1..n loop
    for con in n..1 loop
    dbms_output.put_line('*');
    end loop;
    end loop;
    end;
    /


    --使SQLPLUS控制臺可以輸出
    set serveroutput on
    set serveroutput off

    --控制臺輸出
    declare
    begin
    dbms_output.put_line('this is ');
    end;
    /


    declare
    aaa varchar2(100);
    begin
    dbms_output.put_line((2+3)*6);
    end;
    /
    異常處理
    自定義異常處理

    1. 定義異常處理
    定義異常處理的語法如下:
    declare
    異常名 exception;
    begin
    2. 觸發(fā)異常處理
    觸發(fā)異常處理的語法如下:
    raise 異常名;
    3. 處理異常
    觸發(fā)異常處理后,可以定義異常處理部分,語法如下:
    Exception
    When 異常名1 then
    異常處理語句段1;
    When 異常名2 then
    異常處理語句段2;
    end;
    小技巧
    raise_application_error(錯誤代碼,錯誤原因) 函數(shù)可以直接拋異常
    其中錯誤代碼為-20000到-20999之間,錯誤原因為2000個以內(nèi)的字符
    觸發(fā)器
    觸發(fā)器相當(dāng)于java中的事件監(jiān)聽,當(dāng)某事件發(fā)生時激活特定的事件并執(zhí)行相應(yīng)的邏輯
    DML觸發(fā)器中包含了三種事件 insert update delete
    語法格式
    create [or replace] trigger 觸發(fā)器名
    {before| after | instead of} {insert|delete|update}
    on 表名
    [for each row]
    when 條件
    begin
    end;
    before 在事件開始前執(zhí)行begin/end
    一般應(yīng)用場合:
    1 判斷觸發(fā)事件(一般是一個DML 語句)是否應(yīng)該被執(zhí)行
    2 在觸發(fā)事件之前計算一個列的值

    after 在事件開始后執(zhí)行begin/end

    一般應(yīng)用場合:
    1 完成觸發(fā)事件

    for each row 表示每操作一次都觸發(fā),稱作行級,不寫表示無論操作多少行,只觸發(fā)一次,稱作表級

    when(條件) 必須是行級
    小技巧:
    觸發(fā)器中可以使用三個條件詞 Inserting,deleting,updating
    觸發(fā)器中可以使用兩個變量 :old | :new 分別表示舊有的值和新值,必須是行級(在過程中加:)

    instead of 替代觸發(fā)器: 只能作用在視圖上,用于替代DML語句 ,行級,不可與when同用

    兩個任務(wù):
    第一題
    創(chuàng)建一張表 create table test(aa number primary key);
    執(zhí)行10次 insert into test values(任意整數(shù)) ; 語句
    查詢此表,結(jié)果為 1 2 3 4 5 6 7 8 9 10

    第二題
    創(chuàng)建一觸發(fā)器保證每周的周六周日,以及每天早八點前和晚六點后不允許對emp表進(jìn)行任何的DML(insert,delete,update)操作。
    第三題
    實現(xiàn)emp表中的外鍵deptid的級聯(lián)更新功能

    游標(biāo)
    游標(biāo)是從數(shù)據(jù)表中提取出來的數(shù)據(jù),以臨時表的形式存放在內(nèi)存中,在游標(biāo)中有一個數(shù)據(jù)指針,在初始狀態(tài)下指向的是首記錄,利用fetch語句可以移動該指針,從而對游標(biāo)中的數(shù)據(jù)進(jìn)行各種操作,然后將操作結(jié)果寫回數(shù)據(jù)表中。
    首先我們先看看emp表,select * from scott.emp ;

    EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
    ------ ---------- --------- ---------- ---------- ---------- ---------- ----------
    7369 SMITH CLERK 7902 1980-12-17 800 20
    7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30
    我想查找sal<1000得數(shù)據(jù),
    select * from scott.emp where sal <1000
    返回若干行,返回的若干行事實上是一個臨時表。游標(biāo)的作用是對這個臨時表進(jìn)行逐行處理
    游標(biāo)通常用于在存儲過程及客戶端開發(fā)中
    游標(biāo)流程

    聲明游標(biāo);CURSOR cursor_name IS select_statement

    為查詢打開游標(biāo);OPEN cursor_name

    取得結(jié)果放入PL/SQL變量中;
    FETCH cursor_name INTO list_of_variables;
    FETCH cursor_name INTO PL/SQL_record;
    關(guān)閉游標(biāo);CLOSE cursor_name
    游標(biāo)的屬性
    mycursor%isopen --是否打開
    mycursor%found --fetch有數(shù)據(jù)
    mycursor%notfound –fetch沒有數(shù)據(jù)
    mycursor%rowcount --返回游標(biāo)的行數(shù),若返回值為0,沒有提取出數(shù)據(jù)。

    --最基本的游標(biāo)
    declare
    cursor mycursor is select * from scott.emp where sal > 1000 ;
    temp mycursor%rowtype ;
    begin
    open mycursor ;
    fetch mycursor into temp ;
    dbms_output.put_line(temp.sal);
    close mycursor;
    end;
    /

    --游標(biāo)的滾動
    declare
    num number;
    i emp%rowtype;
    --定義游標(biāo)
    cursor mycursor is
    select * from emp;
    begin
    select count(*) into num from emp;
    if num>0 then
    open mycursor; --打開游標(biāo)
    loop
    fetch mycursor into i; --讀取游標(biāo)中的值到變量中
    exit when mycursor%notfound; --沒有取到記錄時,就退出循環(huán)
    dbms_output.put_line(i.sal);
    end loop;
    close mycursor; --關(guān)閉游標(biāo)
    else
    dbms_output.put_line('emp=0');
    end if;
    end;
    日期函數(shù)
    函數(shù)名: to_date(string)
    含義: 字符串轉(zhuǎn)日期
    示例: select to_date('2002-1-1','yyyy-MM-dd') from dual;
    結(jié)果: 2002-1-1

    函數(shù)名: add_months(date,month)
    含義: 增加或減小月份
    示例: select add_months(sysdate,1) from dual ;
    結(jié)果: xxxx-xx-xx

    函數(shù)名:sysdate
    含義:當(dāng)前日期,可直接加減天數(shù)
    示例:select sysdate+1 from dual
    結(jié)果:當(dāng)前日期+1天

    函數(shù)名: extract(year|month|day from dateType)
    含義:截取日期
    示例: select extract(year from sysdate)"This year" from dual;
    結(jié)果: 2007
    問題:獲取幾個月以后的年份

    函數(shù)名: last_day(dateType)
    含義: 最后一天
    示例: select last_day(sysdate) from dual ;
    結(jié)果: xxxx-xx-xx

    函數(shù)名: months_between(dateType,dateType)
    含義: 返回兩個日期間的月份
    示例: select months_between('2002-1-1','2003-1-1') from dual
    結(jié)果: -12

    函數(shù)名: to_char(dateType,yyyy|dd|mm|hh{12|24}|mi|ss|day|ww|dy)
    含義: 把日期轉(zhuǎn)換為字符串
    示例: select to_char(sysdate,'yyyy-mm-dd-hh24:mi:ss') from dual;
    結(jié)果: xxxxxxxx
    問題: 兩個日期間共有幾星期

    字符串函數(shù)
    函數(shù)名: ASCII(char)
    含義: 返回與指定的字符對應(yīng)的十進(jìn)制數(shù)
    示例: select ascii('孟') from dual;
    結(jié)果: 50127

    函數(shù)名: CHR(int)
    含義: 給出整數(shù),返回對應(yīng)的字符
    示例: select chr(50127) from dual;
    結(jié)果: 孟

    函數(shù)名: CONCAT(string,string)
    含義: 連接兩個字符串
    示例: select concat('我是','孟慶晨') from dual;
    結(jié)果: 我是孟慶晨

    函數(shù)名: INITCAP(string)
    含義: 返回字符串并將字符串的第一個字母變?yōu)榇髮?
    示例: select INITCAP('aaa') from dual;
    結(jié)果: Aaa

    函數(shù)名: INSTR(被搜索字符串,搜索的字符串,搜索的開始位置默認(rèn)為1,第幾次出現(xiàn)默認(rèn)為1)
    含義: 在一個字符串中搜索指定的字符,返回發(fā)現(xiàn)指定的字符的位置
    示例: select INSTR('我是孟慶晨','孟',1,1) from dual;
    結(jié)果: 3

    函數(shù)名: LENGTH(string)
    含義: 返回字符串的長度
    示例: select length('孟慶晨') from dual ;
    結(jié)果: 3

    函數(shù)名: LOWER(string)
    含義: 小寫形式
    示例: select lower('AAA') from dual
    結(jié)果: aaa

    函數(shù)名: UPPER
    含義: 大寫形式
    示例: select upper('aaa') from dual ;
    結(jié)果: AAA

    函數(shù)名: RPAD & LPAD
    含義: 黏貼字符串到目標(biāo)字符串左右
    示例: select lpad('a',10,'*') from dual ;
    結(jié)果: *********a

    函數(shù)名: ltrim & rtrim
    含義: 刪除左邊(右邊)的字符串
    示例: select ltrim('abc','a') from dual ;
    結(jié)果: bc

    函數(shù)名: substr
    含義: 取字符串(原字符串,第幾個開始,取幾個)
    示例: select substr ('abcdefg',3,4) from dual
    結(jié)果: cdef

    函數(shù)名: REPLACE(string,string,string)
    含義: 替換字符串
    示例: select replace('abcde' , 'abc' , 'aaa' ) from dual ;
    結(jié)果: aaade

    數(shù)學(xué)函數(shù)
    函數(shù)名: abs
    含義: 返回指定值的絕對值
    示例: select abs(-10) from dual
    結(jié)果: 10

    自定義函數(shù):

    --函數(shù)function
    create or replace function prices
    (
    proprice in number
    )
    return integer
    is
    pricecount integer;
    begin
    select count(price) into pricecount from product where price>proprice;
    if(pricecount >0) then
    return pricecount;
    else
    return 0;
    end if;
    end prices;

    declare
    counter number := 0;
    begin
    counter := prices(30);
    if counter >0 then
    dbms_output.put_line('counts:'||counter );
    else
    dbms_output.put_line('counts:'||counter );
    end if;
    end;
    /
    常見問題
    1 不能啟動監(jiān)聽
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraHome92TNSListener
    添加字符串項ImagePath,值為c:\oracle\ora90\bin\TNSLSNR
    2 啟動時,監(jiān)聽器不啟動或打開出錯
    錯誤現(xiàn)象:
      Oracle啟動時,監(jiān)聽器不啟動或打開出錯;服務(wù)器端:用username/password登錄正常,但用username/password@alias登錄不成功;客戶端:用username/password@alias登錄不成功
      解決方法
      (1)如果是因為修改了NT的機器名,則把listener.ora文件中的host參數(shù)全部改為新的NT機器名,重新啟動OracleTNSListener80服務(wù)即可。
      
      例如:
      
      LISTENER =
      (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(Host = NT_Name)(Port = 1521))
      (ADDRESS=(PROTOCOL=TCP)(Host=NT_Name)(Port= 1526))
      )

    3 運行oracle后tomcat運行出錯
    原因:端口沖突
    解決方法
    修改tomcat的conf.xml文件,查找8080,修改為其他

    4 本地日期問題
    找到注冊表MACHINE/SOFTWARE/ORACLE/HOME0/
    添加字符串 NLS_DATE_FORMAT 值為yyyy-mm-dd

    posted @ 2009-04-17 19:21 Justjava 閱讀(375) | 評論 (0)編輯 收藏
         摘要:    1. oncontextmenu="window.event.returnValue=false" 將徹底屏蔽鼠標(biāo)右鍵  <table border oncontextmenu=return(false)><td>no</table> 可用于Table  2....  閱讀全文
    posted @ 2009-04-17 18:40 Justjava 閱讀(182) | 評論 (0)編輯 收藏
    <2009年4月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    常用鏈接

    留言簿(2)

    隨筆檔案

    相冊

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费无码一区二区三区| 精品国产污污免费网站入口| 免费女人高潮流视频在线观看| 亚洲欧洲日产国码高潮αv| 校园亚洲春色另类小说合集| 好爽…又高潮了毛片免费看| 青青操在线免费观看| 91手机看片国产永久免费| 免费高清av一区二区三区| 亚洲欧美日韩中文二区| 国产一级在线免费观看| 亚洲色欲色欲www在线丝 | 精品亚洲永久免费精品| 亚洲国产视频一区| 2021在线观看视频精品免费| 国产成人亚洲精品影院| 97在线免费观看视频| 西西人体44rt高清亚洲| 久久久久久精品免费免费自慰| 亚洲永久无码3D动漫一区| 色播在线永久免费视频网站| 久久久亚洲精品视频| 免费v片在线观看视频网站| 亚洲色无码专区一区| 免费在线观看你懂的| 永久免费不卡在线观看黄网站| 亚洲高清无在码在线电影不卡| 精品久久久久久无码免费| 亚洲成Av人片乱码色午夜| 黄页网站在线看免费| 免费无码午夜福利片| 国产免费久久精品| 亚洲欧美黑人猛交群| 亚洲中久无码不卡永久在线观看| 免费一区二区三区| 亚洲精品无码高潮喷水A片软| 亚洲一本大道无码av天堂| **aaaaa毛片免费同男同女| 日韩国产欧美亚洲v片| 四虎成人免费观看在线网址 | 国产精品亚洲专区在线播放 |