热衷技术,热爱交流
分类: Oracle
2013-05-06 21:55:39
1. 域:域实际就是一个集合,它规定了集合中元素的取值范围(length)以及类型(type)。
2. 笛卡尔积:实际就是多个个域完全连接,以下命令得到的就是笛卡尔积:
select * from course,sc;
笛卡尔积一般是没有意义的,程序设计时候要尽量避免。
3. 关系:域的笛卡尔积的子集叫做关系.
4. 关系种类:基本表,查询表(查询结果表示的表),视图(由基本表或者其他视图导出的表)。
5. 关系模式,R(U,D,DOM,F),关系四元组,U是属性名集合,D是域,DOM是属性向域的映像集合,F为属性之间的依赖关系。
6. 关系数据库:实体以及实体与实体之间的关系构成的集合。
1. 关系操作:包括查询,更新,删除,插入操作
2. 关系语言:包括关系代数语言,关系演算,以及最重要的sql查询语言
1. 实体完整性:每条记录有唯一标识,而且不能为空
实体完整性的理论来源是:现实生活中每个实体都是可以区分的!
alter table STUDENT
add constraint ok primary key (SNO)
using index
tablespace HUANGXING
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
2. 参照完整性:外键在另外一个关系中必须存在。当然本关系中外键也可以留空。实际上,一个关系的内部属性也可能存在相互引用关系,这种方式在软件开发中并不少见。外码并不一定需要与被参照的关系中的主码同名。
下面语句指定表之间的参照完整性,设置为级联删除模式。
-- Create table
create table SC
(
sno NUMBER(5) not null,
cno NUMBER(10) not null,
grade NUMBER(5)
)
tablespace HUANGXING
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 8K
minextents 1
maxextents unlimited
);
-- Create/Recreate primary, unique and foreign key constraints
alter table SC
add constraint PK primary key (SNO, CNO)
using index
tablespace HUANGXING
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
alter table SC
add constraint FK1 foreign key (CNO)
references COURSE (CNO) on delete cascade;
alter table SC
add constraint PK2 foreign key (SNO)
references STUDENT (SNO) on delete cascade;
3. 用户定义完整性:表示一些用户自定义的规则,如某一个属性值必须大于多少。
1. 选择:针对单个关系的行运算
2. 投影:针对单个关系的列运算(选出几列)
3. 连接:从多个关系的笛卡尔积中选择满足条件的元组
连接比较重要,包括:
一般连接:从笛卡尔积选取满足条件的一般连接
等值连接:要求两个关系选取比较的列值要相同
自然连接:实质就是在等值连接的基础上去掉重复的列。
外连接:在等值连接中,会舍去两个关系列中比较的列中不相同的元组。如果保留了这些元组,只是把元组其他不存在的部分设为空值,就叫做外连接
左外连接:只是保存左边关系多余的元组
右外连接:只是保留右边关系多余的元组。
4. 除运算:设关系R(A,B,C),关系S(B,C,D)
R÷S表示:R关系中元组在A属性上的分量的象集(BC)A包含关系S在分量(B,C)上的投影的集合
以选课表为例。
sc(sno,cno,grade)
求至少选修了课程号为1,2的学生的学生号。
首先建立临时关系:K
SQL> select cno from course where cno in (1,2);
CNO
----------
1
2
把SC与关系K做除运算即可
另外几种关系运算:
1.并运算(union,去掉重复行)
select sno from student where sno<=5 union select sno from student where sno>=4 and sno<=8;
SNO
----------
1
2
3
4
5
6
7
8
2. 并运算(union all ,不去重复行)
select sno from student where sno<=5 union all select sno from student where sno>=4 and sno<=8;
SNO
----------
1
2
3
4
5
4
5
6
7
8
3.交运算:(保留相同的行)
select sno from student where sno<=5 intersect select sno from student where sno>=4 and sno<=8;
SNO
----------
4
5