oracle學習總結4

來源:互聯網
上載者:User

標籤:

1:三範式
a:一張表裡必須要有主鍵,列不可分。
b:如果一張表裡面,兩個欄位作為主鍵,那麼其他欄位不能夠部分依賴這兩個欄位。


2:pl sql:Procedural language(過程語言)

寫一個輸出hello world的小程式。
begin
dbms.output.put_line(‘hello world!‘);
end;
/

set serveroutput on; --設定伺服器端輸出

寫一個聲明變數,然後賦值,最後輸出的小程式。

declare
v_name varchar(20);
begin
v_name := ‘jack‘;
dbms_output.put_line(v_name);
end;
/

exception 捕捉異常,如果執行程式過程中發生錯誤,會把異常跑到
exception代碼塊,others then就是上面的異常沒有捕捉到時,會捕捉
所有的異常。

declare
v_num number;
begin
v_num := 0;
dbms_output.put_line(2/v_num);
exception
when others then
dbms_output.put_line(‘error‘);
end;
/

3:顯示目前使用者
show user;


4:變數的聲明
declare
id number(4) :=1001;
name varchar2(30) :=‘jack‘;
begin
dbms_output.put_line(name);
end;
/

聲明的變數用來放表裡面的資料,但是表結構可能會產生變化,為了
在表結構產生變化時,聲明的變數的類型也會產生變化,可以使用%type

declare
id number(4) :=1001;
name emp.empno%type :=‘jack‘;
begin
dbms_output.put_line(name);
end;
/


5:聲明資料類型table 代表數群組類型
聲明一個資料類型type_table_name
declare
type type_table_name is table of emp.empno%type index by binary_integer;
v_empnos type_table_name;
begin
v_empnos(0):=1001;
v_empnos(1):=1002;
v_empnos(-1):=1003;
dbms_output.put_line(v_empnos(-1));
end;
/

 

6:聲明資料類型record ,相當於java中的類

declare
type type_record_dept is record
(
deptno dept.deptno%type,
dname dept.dname%type,
loc dept.loc%type
);
v_dept type_record_dept;
begin
v_dept.deptno :=1001;
v_dept.dname :=‘sales‘;
v_dept.loc :=‘shanghai‘;
dbms_output.put_line(v_dept.loc);
end;
/

可以使用%rowtype來聲明record,這樣,即使dept這張表的資料結構發生變化,變數結構
也會隨之發生變化。
declare
v_dept dept%rowtype;
begin
v_dept.deptno :=1001;
v_dept.dname :=‘sales‘;
v_dept.loc :=‘shanghai‘;
dbms_output.put_line(v_dept.loc);
end;
/


7:pl中的select語句

select empno into v_empno from emp where empno=‘1001‘; --pl中的select語句有且僅能查到一條資料

declare
v_empno emp.empno%type;
v_ename emp.ename%type;
begin
select empno,ename into v_empno,v_ename from emp where empno=‘1001‘;
dbms_output.put_line(v_empno || ‘ ‘ || v_ename);
end;
/


使用%rowtype放一條記錄
declare
v_emps emp%rowtype;
begin
select * into v_emps from emp where empno=1001;
dbms_output.put_line(v_emps.empno || ‘ ‘||v_emps.ename ||‘ ‘||v_emps.sal);
end;
/


8:pl sql中的dml語句

向表中插入資料:
declare
v_empno emp.empno%type :=1006;
v_ename emp.ename%type :=‘markson‘;
begin
insert into emp (empno,ename) values(v_empno,v_ename);
commit;
end;
/

更新表中的資料
declare
v_deptno emp.deptno%type;
begin
v_deptno := 10;
update emp set sal=sal/2 where deptno=v_deptno;
dbms_output.put_line(‘影響了‘||sql%rowcount||‘條記錄!‘);
commit;
end;
/

sql%rowcount :sql是一個關鍵字,rowcount表示執行上一條語句產生多少影響。


9:pl sql中ddl語言
在執行語句前面加上 execute immediate,然後create語句放在單引號內,如果單引號內有單引號,
那麼使用雙引號來代替單引號。
begin
execute immediate ‘create table T(id number(4), name varchar(20) not null)‘;
end;

 

10:pl sql中的分支結構if elsif else

declare
v_sal emp.sal%type;
begin
select sal into v_sal from emp where empno=1001;
if(v_sal<=1000) then
dbms_output.put_line(‘low‘);
elsif(v_sal<=2000) then
dbms_output.put_line(‘middle‘);
else
dbms_output.put_line(‘high‘);
end if;
end;
/


11:pl sql中的迴圈結構
pl sql中的迴圈必須以loop開始,以end loop結束
相當於java中的do... while 結構
先迴圈再判斷:
declare
i binary_integer :=1;
begin
loop
dbms_output.put_line(i);
i :=i+1;
exit when(i>=11);
end loop;
end;
/

相當於java中的while結構,先判斷,在迴圈:
declare
i binary_integer :=1;
begin
while(i<11) loop
dbms_output.put_line(i);
i :=i+1;
end loop;
end;
/

for迴圈:相當於java中的forhance迴圈,可以正序,也可以倒序:

declare
i binary_integer :=1;
begin
for k in 1..10 loop
dbms_output.put_line(k);
end loop;

for k in reverse 1..10 loop
dbms_output.put_line(k);
end loop;
end;
/


cursor:遊標
recursion:遞迴
drigger:觸發器

 

oracle學習總結4

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.