《oracle数据库讲义》笔记

字符串大小写敏感

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 崩溃(停电)

数据库再次启动的时候需要恢复,自动的,透明的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值