一开始,因为这一科目非常无聊就没有好好学,现在趁着考试又重新学了一遍,好好整理一下相关的内容。后期如果还能用到就可以有资料学习了。
a.数据库系统知识
b.数据模型
c.SQL语言
d.数据库设计
e.ACCESS数据库
a.基础知识
1.各种概念:DB\DBMS\DBS,技术其根本目的是解决数据共享的问题。DBMS目标是提高存储空间利用率+方便存+数据安全。
2.三级模式两级映射

1.内模式:内模式处于最底层,是对数据在数据库底层的存储的描述。
内模式:
1)数据物理结构和存储方式的描述
2)是数据在数据库内部的表示方式
Ⅰ.记录的存储方式:如顺序存储,按B树结构存储,Hash存储
Ⅱ.索引的组织方式:B+树索引,hash索引,Join index索引
Ⅲ.数据是否压缩存储
Ⅳ.数据是否加密
注:一个数据库只有一个内模式。
2.模式:模式就是所有人都看到的数据的样子 ,也称为逻辑模式**。**
1)它是数据库中全体数据的逻辑结构和特征的描述;(例如在学生选课数据库模式中,包含学生记录、课程记录和学生选课记录,这就是一个逻辑模式)
2)模式是所有用户的公共数据视图。因为数据库是多人共享使用的,模式就是大家都看到的样子,综合了所有用户的数据需求。
注意:
1)一个数据库只有一个模式。
2)与数据库的物理存储无关。
3)与具体的应用程序、开发工具和开发语言无关。(意思就是可以使用各种开发工具和开发语言来使用数据库)
那么如何对模式进行定义呢?
模式的定义就是对 数据的逻辑结构 进行定义(包括数据项的名字、类型、取值范围等)
3.外模式:外模式是模式的一部分,是部分用户看到的数据库的样子。
1)数据库的用户使用的局部数据的逻辑结构和特征的描述
2)数据库用户的数据视图,是与某一应用程序有关的数据的逻辑表示。(如应用程序A只能看见其相对于的外模式1,应用程序B只能看见其相对于的外模式2,不能看见不属于自己的外模式。相当于是模式的一个子集)
外模式的地位:介于模式与应用之间。
模式与外模式的关系:一对多
1)外模式是模式的子集
2)一个数据库可以有多个外模式,反应了不同的用户的应用需求、看待数据的方式、对数据保密的要求。
3)对于模式中的同一个数据,不同外模式可以对数据的长度、类型等有不同的定义。
外模式与应用的关系:一对多。
1)同一外模式可以为某一个用户的多个应用系统所使用
2)但一个应用程序只能使用一个外模式
外模式的用途:
1)保证数据库安全,每个用户只能看见自己对应外模式的数据
2)保证数据独立性。
内模式(存储、物理模式)、模式(概念、逻辑模式)、外模式(子模式、用户模式)
内模式与模式===》物理独立型;外模式与模式==》逻辑独立性
b.数据模型
数据模型= 概念 (数据)模型(E-R图 ) +关系 模型(二维表)
数据结构(对象+关系)
数据模型构成= 数据操作(动作+状态)
完整性约束(唯一确定)
常用数据类型:层次(树状)模型、网状模型、关系模型


概念模型之E-R图 实体-联系模型

概念模型变关系模型(手写)规律:
实体------>关系:++名字(属性)主键++ 直接照搬
供应商(供应商 ID, 名称,地址,联系方式) 主键:供应商 ID
联系------>关系: ++名字(实体+联系的所有属性)主键is任意\n的一端\m+n两端主键++
供应 (供应商 ID, 项目 ID, 零件 ID, 供应量) 主键:供应商 ID + 项目 ID + 零件 ID 外键:供应商 ID(关联供应商表)、项目 ID(关联项目表)、零件 ID(关联零件表)
关系模型:
完整性约束:实体完整性(主码)、参照完整性(外码完整)、用户定义完整性(域完整)
运算:并、差、笛卡尔积、投影、选择

c.SQL语言=结构化查询语言
数据类型:Char(n) \ int \ Float \ Date \ Time

建立表
create table student(sno char(10) primary key,sname char(18) unique,ssex char(2),sage int);
修改表
alter table student add new_col int / alter column new_col int / drop unique(sname);
删除表
drop table student;
删除整理:delete(删单元格、行)<alter(删列)<drop(删表)
数据操作:
查询语句:select、from、where、group by ...having、order by...asc升/desc降
例子:
1.查询全体学生的学号与姓名。SELECT Sno,Sname FROM Student
2.查询学生的全部信息。SELECT * FROM Student
3.查询全体学生的姓名及出生年份。SELECT Sname,2017-Sage FROM Student
4.查询选修了课程的学生学号。SELECT Sno FROM SC
5.查询计算机科学系全体学生的名单。SELECT Sname FROM Student WHERE Sdept = 'CS'
6.查询所有年龄在20 岁以下的学生姓名及其年龄。SELECT Sname,Sage FROM Student WHERE Sage<20;
7.查询考试成绩有不及格的学生的学号。SELECT DISTINCT Sno FROM SC WHERE Grade<60;
8.查询年龄在20 至23 之间的学生的姓名、 系别和年龄。
SELECT Sname,Sage,Sdept FROM Student WHERE Sage BETWEEN 20 AND 23;
- 查询计算机科学系(CSCS)、数学系(MAMA)和信息系(ISIS)学生的姓名和性别。
SELECT Sname,Ssex FROM Student WHERE Sdept IN('CS','MA','isis');
10.查询学号为201715121 的学生的详细情况。SELECT * FROM Student WHERESno LIKE '201715121';
- 查询所有姓刘的学生、 学号和性别。SELECT Sname Sno,Ssex FROM Student WHERE Sname LIKE ' 刘%'
12.查询姓刘且全名为2 个汉字的学生的姓名和学号。
SELECT Sname Sno FROM Student WHERE Sname LIKE ' 刘_'
-
查询缺少成绩的学生的学号和相应的课程号。SELECT Sno,Cno FROM SC WHERE Grade IS NULL;
-
查询所有有成绩的学生学号和课程号。SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;
15.查询计算机科学系年龄在20 岁以下的学生姓名。
SELECT Sname FROM Student WHERE Sdept = 'CS' AND Sage<20
- 查询选修了3 号课程的学生的学号及其成绩,查询结果按分数的降序排列。
SELECT Sno,Grade FROM SC WHERE Cno ='3' ORDER BY Grade
17.查询学生总人数。SELECT COUNT(*) FROM Student;
-
计算3 号课程的学生平均成绩。SELECT AVG(Grade) FROM SC WHERE Cno = '3'
-
查询各个课程号与相应的选课人数。 (查询选修每门课的人数)。
SELECT Cno ,COUNT(*) FROM SC GROUP BY Cno;
- 查询选修各门课程的平均成绩和选修该课程的人数。
SELECT Cno,AVG (Grade) AS 平均成绩, Sno ) AS 选修人数 FROM SC GROUP BY Cno;
- 查询选修了3 门及3 门以上课程的学生的学号。
SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*) >=3;
- 查询每个学生及其选修课程的情况。
SELECT Student.*, SC.* FROM Student,Sc WHERE Student.Sno SC.Sno
- 查询选修了3 号课程且成绩在75 分以上的学生的姓名及成绩。
SELECT Sname,Grade FROM Student,SC WHERE Student.Sno SC.Sno AND Cno = '3' AND Grade>=75;
- 新增一个学生信息,学号:201715128201715128,姓名:张三,年龄:2525,性别:男,系别:计算机系。
INSERT INTO Student (Sno,Sname , Sage,Ssex , Sdept )VALUES('201715128', ' 张三',25, 男', '计算机');
-
将所有学生的年龄加1 。UPDATE Student SET Sage=Sage+1;
-
将学号为"201715125" 学生的年龄改为24 。UPDATE Student SET Sage=24 WHERE
Sno = '201715125';
- 删除CS 系不及格学生的选课记录。
DELETE FROM SC WHERE Grade < 60 AND Sno IN (SELECT Sno FROM Student WHERE Sdept = 'CS')
-
把查询Student 表权限授给用户U1 。GRANT SELECT ON TABLE Student TO U1;
-
把对学生表Student 的查询和修改权限授予用户U2 和U3 。
GRANT SELECT, UPDATE ON TABLE Student TO U2,U3;
- 将用户U1 获得的权限收回。REVOKE SELECT, UPDATE ON TABLE SC FROM U1;
d.数据库设计
基本步骤+关系数据库范式理论
需求设计、概念结构设计(E-R图)、逻辑结构设计(转换成关系模式)、数据库的物理设计(选择存取路径)、数据库实施(数据入库)、数据库运行维护
范式理论(NF、2NF、3NF)用于衡量关系模式优劣的标准。
首先说一下完全函数依赖、部分函数依赖、传递函数依赖的概念。
完全函数依赖例子:***(职称,课程号)->课时费。必须两个属性都具备才能决定课时费多少,少一个都不行。
部分函数依赖例子:***(学号,身份证号)->姓名,(学号)->姓名,(身份证号)->姓名。由此知姓名部分依赖(学号,身份证号)
传递函数依赖例子:***(学号,姓名,性别,系号,系名,系主任名)。这个关系中存在"学号->系号"、"学号->系主任名"这两个函数依赖。因此这个关系中就有传递函数依赖。
第一范式:要求表的每一列都不可以再分
第二范式:1NF+要求非主键所在列都必须完全函数依赖于主键。
例子:选课关系SCI(SNO,CNO,GRADE,CREDIT),其组合关键字是(SNO,CNO)
注意:第二范式有数据冗余的问题(如同一门课学分一致,就会冗余),一般拆开分成多个,如
SC1(SNO,CNO,GRADE)、C2(CNO,CREDIT)
第三范式:2NF+要求非主键列对主键都不存在传递依赖,而是直接依赖。

e.ACCESS数据库
扩展名: .mdb
软件部分待更新....