第一章 绪论
1.1 数据库系统概述
四个基本概念:
1.数据:数据是数据库中的基本对象。
2.数据库:数据库,顾名思义,是存放数据的仓库。只不过这个仓库是在计算机存储设备上,而且数据是按一定格式存放的。
3.数据库管理系统:数据库管理系统能高效获取和维护数据。
4.数据库系统:数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。
1.2 数据模型
信息世界的基本概念:
1.实体:客观存在并可相互区别的事物称为实体。
2.属性:实体所具有的某一特性称为属性。
3.码:唯一标识实体的属性集称为码。
4.实体型:具有相同属性的实体必然具有共同的特征和性质。
5.实体集:同一类型实体的集合称为实体集。
6.联系:事物之间的关联。
数据模型的组成要素:
1.数据结构:对象及对象之间的联系。
2.数据操作:对象的实例允许执行的操作集合。
3.数据的完整性约束条件:数据的完整性约束条件是一组完整性规则。
关系模型
1.关系:一个关系对应通常说的是一张表。
2.元组:表中的一行即为一个元组,也就是一个实体。
3.属性:表中的一列即为一个属性,给每一个属性起一个名称即为属性名。
4.码:也称为码键。表中的某个属性组,可以唯一确定一个元组。
5.域:是一组具有相同数据类型的值的集合。属性的取值范围来自某个域
6.分量: 元组中的一个属性值
7.关系模式: 对关系的描述,一般表示为关系名
1.3 数据库系统的结构
1.模式:是数据库中全体数据的逻辑结构和特征描述。
2.外模式:它是数据库用户能看见和使用的局部数据的逻辑结构和特征的描述。
3.内模式:一个数据库只有一个内模式,它是数据物理结构和存储方式的描述。
第二章 关系数据库
2.1 关系
关系模型的数据库结构非常简单,只包含单一的数据库结构—关系。
1.域:域是一组具有相同数据类型的值的集合。
2.笛卡尔积:笛卡尔积是域上的一种集合运算。
2.2 关系操作
查询,插入,删除,修改操作
第三章 SQL 概述
3.1 模式的定义与删除
create schema "S-T" authorization wang;
drop schema "S-T";//当模式中没有数据库对象时
drop table "S-T".TAB1;//先删除数据
drop schema "S-T";
3.2 基本表的定义,删除与修改
建立表
create table Student
(Sno char(9) primary key,
Sname char(20) unique,
Ssex char(2),
Sage smallint,
Sdept char(20)
);
create table Course
(Cno char(4) primary key,
Cname char(40) not null,
Cpno char(4),
Ccredit smallint,
foreign key(Cpon) references Course(Cno)
);
create table SC
(Sno char(9),
Cno char(4),
Grade smallint,
primary key(Sno,Cno),
foreign key(Sno) references Student(Sno),
foreign key(Cno) references Course(Cno)
);
修改与删除表
alter table Student add S_entrance date;//增加入学时间列,数据类型为日期型
alter table Student alter column Sage int;//将年龄数据类型修改
alter table Course add unique(Cname);//给课程名称增加条件必须取唯一值的约束条件
--3.删除基本表
drop table 表名;
3.3索引的建立与删除
建立索引
CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
删除索引
3.4单表查询
简单的查询
select*
from student;
带有条件的查询:
查询计算机系学生的姓名
select Sname
from Student
where Sdept='CS';
模糊查询
% (百分号) 代表任意长度(长度可以为0)的字符串
_ (下横线) 代表任意单个字符。
例:查询以“DB_”开头,且倒数第三个字符为i的课程详细信息
select*
from Course
where Cname like 'DB\_%i___'escape '\';
使用 ‘ \ ’ 转义字符将_转换
排序查询
desc:降序
asc:升序
select Sno,Grade
from SC
where Cno='3'
order by Grade desc;
聚集函数
count(*):统计个数
avg():求平均数
max():求最大值
sum():统计加
嵌套查询
将一个查询块嵌套在另一个查询块中
select Sno,Sname,Sdept
from Student
where Sdept in
(select Sdept
from Student
where Sname='刘晨'
);
3.5数据的更新
数据更新的操作:
插入:
insert into Student(Sno,Sname,Ssex,Sdept,Sage)
values('201215128','陈东','男','IS',18);
修改:
update Student
set Sage=22
where Sno='201215128';
select*
from Student;
删除:
delete//删除学生记录
from Student
where Sno='201215128'
delete//删除所以学生的选课记录
from SC;
//带嵌套的删除
delete
from SC
where Sno in(
select Sno
from Student
where Sdept='CS'
);
3.6 视图
1.建立视图:
create view is_student
as
select Sno,Sname,Sage
from Student
where Sdept='IS';
查询视图:
select Sno,Sage
from is_student
where Sage<20;
更新视图:
//将学号为201215200的学生名字修改
update is_student
set Sname='刘辰'
where Sno='201215200';
删除视图:
drop view<视图名>[CASCADE];
第四章 数据库安全性概述
数据库的安全性是指保护数据库以防不合法使用所造成的数据泄密
4.11授予权限
grant<权限>[,<权限>]...
on <对象类型>对象名
to <角色>[,<角色>]...
4.12收回权限
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
4.2数据库角色
角色的创建
给角色授予权限
grant select,update,insert//授予查询,修改,插入权限
on Student
to R1;
把角色授予给用户
grant //这是标准SQL的授予
to U1
revoke R1//收换角色
from U1
角色的权限修改
grant delete//在角色原来的基础上增加修改的功能
on Student
ro R1
在角色这里T-SQL和标准SQL有很多的区别
4.3视图机制
通过建立视图机制把要保密的数据对无权存取的用户隐藏起来
create view CS_student
as
select*
from Student
where Sdept='CS';
4.4审计
为了使数据库管理系统达到一定的安全级别,还需要在其他方面提供相应的支持
1.审计事件
审计事件有多个类别例如:服务器事件,系统权限,语句事件,模式对象事件
2.审计功能
内容为:基本功能,提供多套审计规则,提供审计分析和报表功能,审计日志管理功能,系统提供查询审计设置及审计记录信息的专门视图
3.audit语句和noaudit语句
提供审计和撤回审计
提供审计:对修改SC表结构或修改数据操作进行审计
audit alter,update
on SC;
撤回审计:
noaudit alter,update
on SC;
第五章 数据库完整性
1.实体完整性的定义
create table Student
(Sno char(9) primary key,--限制学号是唯一的
Sname char(20) unique,
Ssex char(2),
Sage smallint,
Sdept char(20)
);--在列级定义
create table Student
(Sno char(9),
Sname char(20) unique,
Ssex char(2),
Sage smallint,
Sdept char(20)
primary key (Sno)--限制学号是唯一的
);--在表级定义
create table SC
(Sno char(9),
Cno char(4),
Grade smallint,
primary key(Sno,Cno)--把学号和课程号两定义为主码
);
2.参照完整性
2.1定义参照完整性
create table SC
(Sno char(9),
Cno char(4),
Grade smallint,
primary key(Sno,Cno),
foreign key(Sno) references Student(Sno),--在表级定义参照完整性
foreign key(Cno) references Course(Cno)
);
2.2参照完整性检查和违约处理
被参照表 | 参照表(例如SC) | 违约处理 |
---|---|---|
可能破坏参照完整性 | 插入元组 | 拒绝 |
可能破坏参照完整性 | 修改外码值 | 拒绝 |
删除元组 | 可能破坏参照完整性 | 拒绝/级联删除/设置为空值 |
修改主码值 | 可能破坏参照完整性 | 拒绝/级联删除/设置为空值 |
例:显示说明参照完整性的违约处理示例
create table SC
(Sno char(9),
Cno char(4),
Grade smallint,
primary key(Sno,Cno),
foreign key(Sno) references Student(Sno),--在表级定义参照完整性
on delete cascade
--级联删除
on update cascade
--级联修改
foreign key(Cno) references Course(Cno)
on delete no action
--当删除参照表元组参照不一样时,拒绝删除
on update cascade
--当更新参照表元组参照不一样时,拒绝删除
);
3.用户定义的完整性
1.属性上约束条件定义
例:在定义SC表时,说明Sno,Cno,Grade属性不允许取空
create table SC
(Sno char(9) not NULL,
Cno char(4) not NULL,
Grade smallint not NULL,
primary key(Sno,Cno)--把学号和课程号两定义为主码
);
使用check短语指定列值满足条件
例:学生表的Ssex只允许取男,女
create table Student
(Sno char(9) primary key,--限制学号是唯一的
Sname char(20) unique,
Ssex char(2)check(Ssex in('男','女')),--限制只能选择这两个,其余的报错
Sage smallint,
Sdept char(20)
);--在列级定义
4.元组上的约束条件
例:当学生性别是男时,其名字不能以ms.打头
create table Student
(Sno char(9) primary key,--限制学号是唯一的
Sname char(20) unique,
Ssex char(2),
Sage smallint,
Sdept char(20),
check(Ssex='女' or Sname not like 'ms.%')--当性别是女或者名字没有ms.时通过语句
);--在列级定义
5.断言
对比与之前的约束,断言可以实现更加复杂的约束操作
1.格式:create assertion <断言名> <check 子句>
6.触发器
触发器是用户定义在关系表上的一类由事件驱动的特殊过程。
触发器的定义格式
create trigger <触发器名>
{before | after} <触发事件> on <表名>
referencing new|old row as<变量>
for each {row | statement}
[when<触发条件>]<触发动作体>
总结:在做总结的过程中复习了之前很多忘记了的知识点,复习过程中也感觉到了sql的趣味,也在一些方面比如说进行一些复杂的查询过程中遇到了一些困难,搞不懂其中的逻辑关系,然后就上网寻求帮助,这样边学习边探索真是一件快乐的事情,也慢慢在这样的过程中慢慢了解这个学科 , 从一开始的对数据库什么都不了解到现在能在数据库中进行一些简单的操作,能看到自己进步真的一件快乐的事情,但是学习真的好幸苦啊(特别是这么多的作业= =!)。