字串大小寫敏感
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個...