sql基本語(yǔ)法

DML/DDL/DCL、增刪改查、建表、約束、序列sequence、索引index、游標(biāo)cursor、plsql塊、存儲(chǔ)過(guò)程、function

DDL: CREATE,ALTER,DROP,TRUNCATE

DML: INSERT,DELETE,UPDATE,SELECT

DCL: rollback,commit,grant,revoke,savepoint

表操作:

建表:create table 表名(列1? 數(shù)據(jù)類型,列2? 數(shù)據(jù)類型。。。。。。。)

添加列:alter table 表名 add 列名 數(shù)據(jù)類型

刪除列:alter table 表名 drop column 列名

列重命 名: alter table 表名? rename column 列名 to 新列名

刪除表: drop table 表名

偽列:ROWID和ROWNUM

查詢關(guān)鍵詞:from, where, order by desc/asc,group by [having...],sysdate,like,in,not,exists,null,union [all],join......

函數(shù):

count(*),sum,avg,max,min,trunc,mod

decode(value,if1 then1,if 2,then2,缺省值…..),substr (char, m, n),Concat (expr1,xpr2),Length(char),NVL(value,值)

replace(char, searchstring,[replacement_string]),lower,upper,trim

ADD_MONTHS(day,n),MONTHS_BETWEEN(day1,day2 ),LAST_DAY(day),sysdate,systimestamp

to_char,to_date,to_number

約束:constraint?約束名?primary key/foregin key/unique/check

alter table table_name modify column_name constraint?約束名 not null | null;

alter table table_name?add constraint?約束名?primary key/unique(column_name [, column_name]);

alter table table_name?add constraint?約束名 foregin key(column_name) references ref_table_name (ref_column_name);

alter table table_name?add constraint?約束名?check (expression);

建/刪索引:

create index 索引名 on 表名 (列 ASC );

drop index 索引名;

建/刪序列:currVal,nextVal from dual;

CREATE SEQUENCE 序列名 MINVALUE 10 MAXVALUE 2000?START WITH 10?INCREMENT BY 1 CACHE 10;

drop sequence序列名;

存儲(chǔ)過(guò)程prodcure?:exec存儲(chǔ)過(guò)程名(....);

create or replaceprodcure存儲(chǔ)過(guò)程名[(參數(shù)名1 [in/out/in out] 參數(shù)類型,參數(shù)名2 [in/out/in out] 參數(shù)類型...... )]

is/as

變量定義

begin

程序段;

exception

when 異常[NO_DATA_FOUND] ?then

程序段;

end 存儲(chǔ)過(guò)程名;

/

pl/sql塊:直接執(zhí)行

declare

變量定義

begin

程序段

exception

when 異常[NO_DATA_FOUND] ?then

程序段;

end;

函數(shù):function存儲(chǔ)過(guò)程、pl/sql塊,sql可調(diào)用 需要返回值

create or replacefunction函數(shù)名[(參數(shù)名1 [in] 參數(shù)類型,參數(shù)名2 [in] 參數(shù)類型...... )]

return 數(shù)據(jù)類型[數(shù)據(jù)庫(kù)類型] is/as

變量定義

begin

程序段;

exception

when 異常[NO_DATA_FOUND] ?then

程序段;

end 存儲(chǔ)過(guò)程名;

/

語(yǔ)法:變量定義支持 %TYPE 和 %ROWTYPE 屬性類型

1、條件控制:

a.if條件then程序段;elsif條件then程序段;else程序段;end if;

b.case

whenv_g='指定值1'then程序段;

whenv_g='指定值2'then程序段;.....

else程序段;

end case;

2、循壞控制

a.loop程序段end loop;

b.while條件loop程序段end loop;

c.foriin1..100loop程序段end loop;

3、執(zhí)行動(dòng)態(tài)sql:

EXECUTE IMMEDIATEdynamic_sql_string?[INTO? define_variable_list]?[USING bind_argument_list];

4、異常處理:預(yù)定義異常/自定義異常

預(yù)定義:

異常說(shuō)明

ACCESS_INTO_NULL在未初始化對(duì)象時(shí)出現(xiàn)

CASE_NOT_FOUND在case語(yǔ)句中的選項(xiàng)與用戶輸入的數(shù)據(jù)不匹配時(shí)出現(xiàn)

COLLECTION_IS_NULL在給尚未初始化的表或數(shù)據(jù)賦值時(shí)出現(xiàn)

CURSOR_ALREADY_OPEN在用戶試圖打開已經(jīng)打開的游標(biāo)時(shí)出現(xiàn)。

INVALID_CURSOR執(zhí)行非法游標(biāo)運(yùn)算時(shí)出現(xiàn)

TOO_MANY_ROWS在執(zhí)行select into語(yǔ)句后返回多行時(shí)出現(xiàn)。

ZERO_DIVIDE以零作除數(shù)時(shí)出現(xiàn)

VALUE_ERROR產(chǎn)生大小限制錯(cuò)誤時(shí)出現(xiàn)。如:變量中的列值超出變量的大小

NO_DATA_FOUND在表中不存在請(qǐng)求的行時(shí)出現(xiàn)。

自定義:聲明異常: myexcption exception; ?拋異常: rasie myexcption;

游標(biāo):隱式、顯式、REF

隱式:自動(dòng)聲明,打開,關(guān)閉

隱式游標(biāo)的屬性有:

%FOUND – SQL 語(yǔ)句影響了一行或多行時(shí)為 TRUE

%NOTFOUND – SQL 語(yǔ)句沒(méi)有影響任何行時(shí)為TRUE

%ROWCOUNT – SQL 語(yǔ)句影響的行數(shù)

%ISOPEN? - 游標(biāo)是否打開,始終為FALSE

顯式:

定義:CURSOR IS?SELECT statement FOR UPDATE;

打開: open cursor_name;

使用:

loop

fetch cursor_name into 變量名

EXITWHEN?cursor_name%NOTFOUND;

程序段;

--更新數(shù)據(jù)

UPDATE ?SET ?WHERE CURRENT OF ;

--刪除數(shù)據(jù)

DELETE FROM ?WHERE CURRENT OF ;

end loop;

for 循壞:

for dataAll in cursor_name

loop

程序段;

end loop;

關(guān)閉:close cursor_name;

REF:

聲明:

a. 定義ref:TYPE IS REF CURSOR?[RETURN ];

b. 定義ref變量: ref_var ref_cursor_name;

使用游標(biāo):

open ref_var ?for 'SELECT statement';

loop

fetch cursor_name into 變量名

EXITWHEN?cursor_name%NOTFOUND;

程序段;

end loop;

關(guān)閉游標(biāo):close?ref_var ?;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 語(yǔ)法: 1.SQL 對(duì)大小寫不敏感:SELECT 與 select 是相同的。2.某些數(shù)據(jù)庫(kù)系統(tǒng)要求在每條 SQL...
    小坤老師閱讀 289評(píng)論 0 0
  • INSERT INTO 語(yǔ)句 INSERT INTO 語(yǔ)句用于向表格中插入新的行。 INSERT INTO 表名稱...
    sleepySnail閱讀 115評(píng)論 0 0
  • 「博客搬家」 原地址: CSDN 原發(fā)表時(shí)間: 2016-09-25 本文目前用于 Visual Studio...
    雪中亮閱讀 760評(píng)論 0 0
  • oracle存儲(chǔ)過(guò)程常用技巧 我們?cè)谶M(jìn)行pl/sql編程時(shí)打交道最多的就是存儲(chǔ)過(guò)程了。存儲(chǔ)過(guò)程的結(jié)構(gòu)是非常的簡(jiǎn)單的...
    dertch閱讀 3,622評(píng)論 1 12
  • 今天跟老公一起騎車去離家二十多里的鎮(zhèn)上趕集了。說(shuō)起趕集,只要是生活在農(nóng)村的人就不會(huì)陌生。每個(gè)月的一、三、五也許是這...
    聆聽心泉閱讀 538評(píng)論 3 3

友情鏈接更多精彩內(nèi)容