一、数据库原理讲解
关系数据模型
---数据库技术 70年代提出共享数据库数据的关系模型 IBM公司---层次模型数据库,网状模型数据库,关系模型数据库、面向对象数据库模型
关系数据库系统---采用关系数据模型的组织方式
关系模型----数据结构 关系的操作集合 关系的完整性的约束
数据结构:是计算机存储、组织数据的方式。 就是指相互之间存在一种或多种特定 关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的云系甘或者存储效率,数据结构往往同高效的索引技术有关
关系数据库最主要的就是数据结构的关系。
实际表示中:
关系:可以由行 和 列
每一列 表示关系的一个属性 每列的名字表示一个属性名称 每一行 表示一个记录,代表一个无视的实体,在所有的数据都是通过表进行存储
在关系模型中 列被称为属性||字段
行:元组|记录
记录集合:关系|实例
候选键:若表中的某个属性|属性组的取值能够唯一标识一行记录。则称该属性或属性组为 候选键。
主键:主属性
外键:假设X是表A中的一个属性组合,若X同时是另一个表的主属性,则称X是表A关于表B的外键
怎么判断是否是候选键
1.唯一规则 在表的记录不可重复
2.不可简化的规则。作为候选键的属性组合中,某属性组合的任意子集都不具备唯一性
{sid,sname,sirthday} 属性组合 | {sid} 二者均可独立标识表中的 每一行, 表现处理 唯一性
二、关系完整性约束
A)实体完整性
主属性 不能取空值
参照完整性
以上两个是必须满足的
用户定义的完整性
关系与关系的模式
型 关系模式是型 关系是值 关系模式是对关系的描述
因为关系实质指的就是一个二维表
R关系名
U该关系的属性集合
dom属性向映射的集合
F 属性之间的依赖关系
简化:
R(a1,a2,a3,a4.....an)
---------------------------------------------------------------------
B)数据库设计
1.信息的收集
2.确定数据
3.建立实体----关系模型
4.进行规范化
5.编写sql语句创建数据库
----------------实体 ---关系模型
E--R
实体 基本对象
属性 实体的特征
联系
1对1
公民---身份证号
1对n
部门 员工
1 n
E-R图
--实体转换表
--实体间的联系 通过外键处理
关系数据库规范化的理论
C)3NF范式
依赖关系
R(U) x与y都是U的子集,若对于R(U)的任意可能关系 r,r中不存在两行记录在x上的值相同,而在y值上不同,则称x依赖于y X--->y
X->Y x不包含于y 非平凡函数
x--y x包含于y 平凡函数
x->y y->x x<- ->y
不依赖
x->y x任意一个子集x' 都有y不依赖于x' y完全依赖于x x完全依赖于y
R(u)
y->x x->z x-/->y y->z y依赖于z
例子:
R(学生,学号,姓名,出生日期,性别,所属院系,系主任姓名,选修课,选修课程号,成绩等)
学号-->姓名
系的名称----系主任名
(sid,stdeo) ---系主人名称
student(学号,姓名,出生日期,性别,系名称)
xi(系名称,系主任)
选修课(课程号,选修课的名称)
xx(sid,cid,成绩);
sd(class 系的名称)
3NF范式
1NF 属性不可分 :如果关系R中的每一个关系都是不可分的 就是第一范式
满足了1NF再考虑 2NF范式, 所有的非主属性都完全依赖于任意候选键
3NF范式 表中的每一个属性都不传递依赖于任何候选键
BCNF范式, 对3NF进行修正和扩展的范式
三、DDL数据操作表
a) 查询数据字典
i. 查看用户定义的表
SELECT table_name
FROM user_tables ;
ii. 查看用户定义的各种数据库对象
SELECT DISTINCT object_type
FROM user_objects ;
iii. 查看用户定义的表, 视图, 同义词和序列
SELECT *
FROM user_catalog ;
b) 创建表
必须具备权限和存储空间两个条件
必须指定表表 列名 数据类型,尺寸
CREATE TABLE dept
(deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13));
数据类型:
varchar2(size) 可变长字符数据 最大长度4000 bytes
char(size) 定长的字符数据 2000
nvarchar2()//根据字符集而定的字符串,主要含有中文
nchar() 根据字符集而定的字符串,主要含有中文
number(p,s) 可变长数值数据 p为有效数字位数指定, s为小数位数指定
Date 日期型数据
Long 可变长字符数据,最大可达到2G
Clob 字符数据,最大可达到4G
raw 原始的二进制数据
blob 二进制数据,最大可达到4G
Bfile 存储外部文件的二进制数据,最大可达到4G
Rowid 行地址
c) 修改表结构
i. 追加新的列
ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[, column datatype]...);
ii. 修改现有的列
ALTER TABLE table
MODIFY (column datatype [DEFAULT expr]
[, column datatype]...);
iii. 为新追加的列定义默认值
ALTER TABLE table
DROP columnss (column);
iv. 删除一个列
ALTER TABLE table_name rename column old_column_name
to new_column_name
d) 删除表
数据和结构都被删除
所有正在运行的相关事物被提交
所有相关索引被删除
DROP TABLE 语句不能回滚
DROP TABLE tablename;
e) 清空表
TRUNCATE TABLE 语句
删除表中所有的数据
释放表的存储空间
TRUNCATE语句不能回滚
f) 重命名
执行RENAME语句改变表, 视图, 序列, 或同义词的名称
RENAME dept TO detail_dept;
必须是对象的拥有者