《oracle資料庫講義》筆記

2021-08-21 09:15:26 字數 4657 閱讀 2909

字串大小寫敏感

insert into t2(c1) values('beijing ');

insert into t2(c1) values('beijing ');

主健是通過索引實現

索引的名稱和約束的名稱相同

刪除節點,下級保留

select level,empno,ename,mgr from emp

where ename<>'blake'

start with (ename='king')

connect by prior empno=mgr;

blake 乙個人刪除,不影響他的下屬

刪除枝幹

select level,empno,ename,mgr from emp

start with (ename='king')

connect by prior empno=mgr

and ename<>'blake';

blake 和他的整個部門

將**站的表還原

flashback table t2 to before drop;

primary key 主健約束

乙個表只能有乙個主健

主健要求唯一並且非空

可以是聯合主健,聯合主健每列都要求非空

主健能唯一定位一行,所以主鍵也叫邏輯 rowid

主健不是必需的,可以沒有

主健是通過索引實現的

索引的名稱和主健名稱相同

外來鍵約束的作用,是保證字表某個字段取值

全都與另乙個資料表主鍵字段相對應。也就是說,只要外來鍵約束存在

並有效,就不允許無參照取值出現在字表列中。

指定在表的列上

引用本表其它列,或其它表的其它列

被引用的列得有唯一約束或者主健約束,因為引用的是索引的鍵值,而不是真正的表。

目的是維護資料的完整性

核心是一列是另外一列的子集,null 除外

建立被級連的外健

alter table e add constraint fk_e foreignkey (deptno) references d(deptno) ;

alter table e add constraint fk_e foreignkey (deptno)

references d(deptno) on delete set null;

alter table e add constraint fk_e foreignkey (deptno)

references d(deptno) on delete cascade;

intersect

將t1 的結果和t2 的結果的共有部分顯示。

含有排序操作,也去掉重複的行。

group by rollup(a,b,c,d)

的結果集為,共n+1 個集

group by a,b,c,d

union all

group by a,b,c

union all

group by a,b

union all

group by a

union all

group by null

grouping(列名稱)的使用,為了表達該列是否參加了分組活動。

0 為該列參加了分組,1 為該列未參加分組操作

selectdeptno,job,grouping(deptno),grouping(job),sum(sal)

from emp group by rollup(deptno,job);

cube 分組

select deptno,job,grouping(deptno),

grouping(job) ,sum(sal) from emp group bycube(deptno,job);

結果集為,2**n個結果集

select deptno,job,sum(sal) from emp groupby deptno,job

union all

select deptno,null,sum(sal) from emp groupby deptno

union all

select null,job,sum(sal) from emp group byjob

union all

select null,null,sum(sal) from emp;

使用隱式游標的屬性來控制dml,有四種隱式的游標。

sql%rowcount

sql%found

sql%notfound

sql%isopen

分支if-then-end if

if-then-else-end if

if-then-elsif-end if

if condition then

statements;

[elsif condition then

statements;]

[else

statements;]

end if;

case 語句

declare

v1 char(1) := upper('&v1');

v2 varchar2(20);

begin

v2 :=case v1

when 'a' then 'excellent'

when 'b' then 'very good'

when 'c' then 'good'

else 'no such grade'

end;

dbms_output.put_line ('級別為: '|| v1|| ' 是 ' || v2);

end;

loop:

declare

v1 number(2) :=1;

begin

loop

insert into t1 values(v1);

v1:=v1+1;

exit when v1>10 ;

end loop;

end;

while 迴圈,先判定條件,每次迴圈時條件都要變化,如果不變化就是死迴圈。

declare

v1 number(2) :=1;

begin

while v1<10 loop

insert into t1 values(v1);

v1:=v1+1;

end loop;

end;

for 迴圈,pl/sql 中的最常見的迴圈,是和游標操作的絕配。方便而直觀。

begin

for v1 in 1..9 loop

insert into t1 values(v1);

end loop;

end;

%rowtype 記錄結構

字首為表的名稱

內部域的屬性為表中列的資料型別

域的名稱為列的名稱

便於儲存表的一行

v1 emp%rowtype;

v2 dept%rowtype;

使用記錄

set serveroutput on

declare

v1 dept%rowtype;

begin

select * into v1 from dept where rownum=1;

dbms_output.put_line(v1.deptno);

dbms_output.put_line(v1.dname);

dbms_output.put_line(v1.loc);

end;

停止資料庫的四種模式

該實驗的目的是區分不同的停止資料庫的方式.

四種停止資料庫的方式各不相同,用於不同的情況,一般我們採用 shutdown immediate 方式停止資料

庫,下面是每種停止資料庫方式的差別.

shutdown normal

shutdown transactional

shutdown immediate

shutdown abort

shutdown normal

新的會話不接受

等待非活動的會話結束

等待事物結束

產生檢查點

停止資料庫

shutdown transactional

新的會話不接受

不等待非活動的會話結束

等待事物結束

產生檢查點

停止資料庫

shutdown immediate

新的會話不接受

不等待非活動的會話結束

不等待事物結束

產生檢查點

停止資料庫

shutdown abort

新的會話不接受

不等待非活動的會話結束

不等待事物結束

不產生檢查點

停止資料庫

一致性 shutdown,產生檢測點

shutdown normal

shutdown transactional

shutdown immediate

資料庫再次啟動的時候不要恢復

不一致性 shutdown,不產生檢測點

shutdown abort

startup force

instance 崩潰(停電)

資料庫再次啟動的時候需要恢復,自動的,透明的。

oracle資料庫筆記

資料庫的匯入匯出 匯出 備份 exp 使用者名稱 密碼 要連線的遠端計算機ip 搜尋要備份的遠端資料庫名稱 file 檔案路徑 匯入 imp同上 例 exp kw kw2014 192.168.1.114 1521 orcl file f kw.dmp compress y imp kw kw201...

oracle資料庫筆記

基礎知識 1.ddl 資料定義語言。create drop alter 對錶的操作 2.dml 資料操作語言。insert update delete對資料的操作 3.tcl transaction control language 事務控制語言 commit 提交 rollback 取消 4.dq...

Oracle筆記之Oracle資料庫資料型別

1 char 定長,create table tablename filed1 char 32 最大2000個字元,存放時超過報錯,不足補空格。補 dump函式,檢視字段資訊。select filed1,dump filed1 from tablename 2 varchar2 變長,最大4000個...