关于数据库系统的简单介绍
什么是数据库?
数据库的简单概念其实在当我们敲击简简单单的Hello World的时候就已经设计与应用。我们可以有清晰的认知,数据库的成立不仅仅是对于数据管理的有效应用,同时也将是个人信息的终极汇总(这就需要极大的人力与物力去进行总)。
粗鄙的说明,若将一个数据库比作一个有窗户且有门的房子,那关于数据的描述将会是一个个孩子躲在房子中,当需要时会将其叫出来干活,但不需要时就让他老老实实呆在里面,这个整体就可以简单的看作是数据库系统运行。
数据库4个基本概念
- 数据 孩子 数据是数据库中存储的基本对象。我相信不管是哪一本关于数据库的书籍都将会写入这句话。当然描述事务的符号记录就是数据这句话也将体现。
- 数据库 房子
- 数据库管理系统 孩子的父母 父母对于孩子的管理这当然是天经地义的,对家庭的维护也是天经地义的,这也同样应用于这里的概念,例如对数据的组织和管理,对数据库的事务管理等等等等,这都可以形象比喻。
- 数据库系统 整体 这就不用多说了,就是一个小型的环境,一家人和和睦睦生活在这里。
数据库系统的架构概念
外模式 模式 内模式
- 模式 外界环境对家庭所在环境的沟通桥梁 是数据库模式结构的中间层,但不涉及物理与硬件的影响。
- 外模式 外界环境 针对于用户需求,是模式的子集。
- 内模式 家庭所处环境本身 但首先应注意,应充分了解离散数学 ,数据结构才可进行深入学习。
关系数据库
不做具体的描述,但关于形式定义与操作会具体描述
SQL
可以明确所说的是SQL的操作活动在我看来是生命周期中活动最为综合且简单易学的语言。下面将会以简单的演示作为对SQL的讲解。
学生-课程数据库对SQL的讲解
首先定义模式
学生表:Student (Sno,Sname,Ssex,Sage,Sdept)
课程表:Course (Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
1 操作对象 模式SCHEMA, 表TABLE, 视图VIEW,索引INDEX
2 创建 CREATE 删除 DROP 修改 ALTER(但对于模式与视图不可应用)
以实例进行讲解:
//示例一
SELECT* //*即插叙所有情况
FROM Student //从何处表中进行查询
WHERE Sno LIKE '1234566'; //LINK谓词可将=进行替换
//示例二
SELECT Student.Sno,Sname //Student.Sno中点指的是学生表中的某一列
FROM Student,SC
WHERE Student.Sno=SC.Sno AND SC,CNO='2' AND SC.Grade>90; //在其中可以运用连接谓词与选择谓词。并且可以进行嵌套查询。
//示例三
SELECT Sname
FROM Student,(SELECT Sno FROME SC WHERE Cno='1')AS SC1 //生成派生表,别名即SC1不可省略。
WHERE Student=SC1.Sn0;
//示例四
INSERT //插入
INTO Dept_age(Sdept,Avge_age) //指向新建设的表中
SELECT Sdept,AVG(Sage) //AVG即平均操作,还有COUNT SUM MAX MIN操作
FROME Student
GROUP BY Sdept; //将相同的Sdept元组即行为一组
//示例五
CREATE VIEW GOOD_SC //不允许更新,因为所涉及的都为SC,所以更新拒绝
AS //创建视图的操作
SELECT Sno,Cno,Grade
FROM SC
WHERE Grade>
(SELECT AVG(Grade)
FROM SC);
对SQL实例进行讲解
连接查询
1.等值与非等值连接查询
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student,SC
WHERE Student.Sno = SC.Sno;
//自然连接完成 同时进行选择与连接查询 通过WHERE子句组合。
//示例二
SELECT Student.Sno,Sname
FROM Student,SC
WHERE Student.Sno = SC.Sno AND SC.Cno='2'AND SC.Grade>90;
//先进行挑选再其次进行连接得出最后结果。
2.自身连接
//完成该查询
SELECT FIRST.Cno,SECOND.Cpno
FROM Course FIRST,Course SECOND
WHERE FIRST.Cpno=SECOND.Cno;
3.外连接
若因在SC中没有相应的元组,导致信息的丢失。但仍想要以Student表为主体,则可以以NULL为代表进行补充。
// 示例
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student LEFT OUTTER JOIN SC ON (Student.Sno =SC.Sno);
4.多表连接
SELECT Student.Sno,Sname,Cname,Grade
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;
子查询
在返回多值中,要注意相关子查询即x.Sno,t它与父查询有关。
示例一
SELECT Sname,Sage
FROM Student
WHERE Sage<ANY(SELECT Sage FROM Student WHERE Sdept='CS') AND Sdept<>'CS';
实例二
逻辑思想是值得学习的。
数据库安全性控制
在一般的计算机系统中,安全措施是一级一级一层一层进行设置的。系统只有根据用户所出示的标识进行用户身份的鉴定,才可予以进行访问。但用户的身份的识别有区别于其他相关认证,因计算机系统,即所处单位的重要与否,着重于多种口令的鉴别,为防止恶意访问,或窃取修改资料,从而着重发展。
授权:授予与收回
GRANT
//示例一
GRANT SELECT
ON TABLE Student
TO U1;
//把查询Student表的权限给用户U1
//示例二
GRANT ALL PRIVILEGES
ON TABLE Student,Course
TO PUBLIC;
//把对Student表和Course表的全部操作授权于所有用户
REVOKE
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE; //联级收取
//对于用户U5的SC表的INSERT权限收回
强行存储控制方法
由于在计算机系统中,用户对于数据的存储权限是依据个人的,所以用户所拥有的权限是可以自由的授予任何人,这就造成数据的无意识泄露。因为所授予方并不能确定被授予方是否将数据备份进行转卖。也就因此对于数据库系统控制下的所有主客体进行强制存储控制。
(强行存储控制是对数据本身进行的标记,通过对数据分级加密(密级),不过数据如何复制,但标记永远不会缺失,只有达到一定权限,才可进行访问。)
视图机制与审计
1.视图机制
对于不同用户定义不同的视图,从而将数据限制在一定范围中,对于无权存取的用户进行隐藏。
CREATE VIEW CS_Student //建立视图
AS
SELECT *
FROM Student
WHERE Sdept='CS';
GRANT SELECT
ON CS_Student
TO U1; //U1检查限定
GRANT ALL PRIVILEGES
ON CS_Student
TO U2;
2.审计
为了进一步对于数据的保护,从而以日志的方式对于数据库中的所有操作进行记录,但是审计往往是需要耗费大量时间与人力的所以一般用于对于安全性较高的部门。
AUDIT用来设计审计功能,NOAUDIT用于取消。
AUDIT ALTER,UPDATE
ON SC;
//对于SC表的修改(数据与结构)操作进行审计
NOAUDIT ALTER,UPDATE
ON SC;
//取消对于SC表的一切审计。
期望对您有所帮助,如有错误,敬请指正。