数据库复习重点
- 格式:doc
- 大小:58.00 KB
- 文档页数:7
上课一共讲了11个考点,其中第9个Backup备份不考 1.SQL语句(考的是增删,更新和查询 大概占三十分) 插入insert样例:insert into S values('S004','王萍','女',23,null,'电子系','P003') null表示对应表中该列暂时为空
更新样例: update S set Sage=22 where Snum='S001' 更新S表中Sage=22的这一行,把它的Snum更新成S001。
删除样例: DELETE FROM S WHERE Snum = 'S006'
DELETE FROM SC WHERE Snum IN (SELECT Snum FROM S WHERE Dname='计算机系')
对字段(列名)进行操作: alter table S add Email varchar (30) 在S表中,把Email这一列的属性改成varchar
alter table S alter column Sname varchar(20)在S表中增加一列,名为Sname 属性为 varchar alter table S drop column Email 在S表中把Email这一列删除 查询: select * from s 查询S表中所有信息
SELECT Snum,Sname FROM S WHERE Dname='数学系' 带有条件的查询
Select Snum,Score from SC where Cnum='C1' ORDER BY Score DESC,Snum ASC 查询完后按分数的降序和 学号的升序排列 Select Score*0.8 from SC where Cnum='C1' and Score>80 and Score<90 带有运算和比较的查询
Select * from S where Sname LIKE '王_' and (Dname='计算机系'or Dname='数学系') LIKE查询是一个考点,表示查找的学生是姓王的
select DISTINCT S.Snum, S.Sname, SC.Cnum,SC.Score from S,SC where S.Snum=SC.Snum DISTINCT表示消除结果的重复项,比如说这里的选课记录,如果A同时选了1,2,3,4 四门课 在查找选课记录的时候会输出四次A 使用DISTINCT则只输出一次
select DISTINCT S.Snum, S.Sname, SC.Cnum,SC.Score from S LEFT OUTER JOIN SC ON S.Snum=SC.Snum; 两张表进行左连接查询
Select * From ( S Right Outer Join SC on S.Snum = SC.Snum) 两张表进行右连接查询
select DISTINCT Snum,Sname,SSex,Pname,Capital From ( S Full Outer Join P on S.Pnum = P.Pnum) 两张表进行全外连接查询
以上是重点 还有运用group by 和 having 进行查询 具体参考PPT
2.ER图 考画图 中文版书P74开始 看几个例题即可 做到简单的图会画就行 注意多对一 多对多 一对一的关系(4.1.6)
3.概念模型转化逻辑模型: 模型的转化:内容4.5.1 有例子 就是从ER图转换成 形如 例4.25 Owns(title,year,studioName) 4.关系运算表格的结果 就是一些 集合的并 交 减。上课记的看懂就行 5.范式(考试的最难点) 例题:R(A,B,C,D,E) F(AB→CE,E→AB,C→D) 先计算候选键 L LR R 罗列一下 这五个字母 只出现在左边 左右都有 只在右边的有哪些 0 A D B (A)+ ={A} A能决定的只有自己 这里的加号写在指数位置 C (C)+ ={C,D} C除自己外 还能决定D E (E)+ ={E,A,B}={E,A,B,C}={E,A,B,C,D}=U 所以E是一个候选键 (AC)+ ={A,C,D} 两两组合 或 三个组合 一次判断 (只需判断L和LR下面的元素) (AB)+ =U AB也是一个候选键 所以这道题有两个候选键 AB 和E 判断范式: (满足后面范式的 一定满足前面范式) 第二范式:不存在部分函数依赖 第三范式:不存在函数传递 BC范式: 箭头的左边完全包含一套候选键
现在进行判断 AB这个候选键 含有 A和B两个主属性的元素,对于整个 集合,除A,B,E外都是非主属性元素
此题F中 A和B都没有单独决定其它 非主属性元素 可见 不存在部分函数依赖 则满足第二范式
AB→CE等价为 AB→C 因为C→D 可见C被传递了 并且C是非主属性的 所以存在函数传递,即不满足第三范式 所以要进行分解
把不满足的C→D拎出来 R1(C,D) F1{C→D} 此时C为候选键 且满足BC范式 在原来的F中 去掉 C→D,剩下的组成R2(A,B,E,C) F2(AB→CE,E→AB)候选键经计算仍为E和AB 经判断 箭头左边完全包含一套候选键 则满足BC范式
答:此题满足第二范式 但不满足第三范式 且分解完毕 分解结果为R1,R2两个BC范式
6.自然连接,∞这个符号进行连接 找两张表的公共项 拼接即可。看最后一节课笔记 7.view试图的查询与创建 和 索性 试图样例: (1)请用命令创建一个视图v_StuInfo:包含学生个人信息(包括Snum, Sname, Ssex, Sage, Sphone)以及该学生所在的省市及省会城市(Pname, Capital); (2)再用视图v_StuInfo(用select命令)来查询浙江省的学生个人信息; (3)用命令来删除视图v_StuInfo
create view v_StuInfo as select Snum, Sname, Ssex, Sage, Sphone,pname,Capital from s left outer join P on s.Pnum=p.Pnum ;
select * from v_StuInfo; drop view v_StuInfo; create view v_StuSC as select sname,s.snum,cname,score,cfreq from s inner join sc on s.Snum=sc.Snum inner join C on sc.Cnum=c.Cnum;
select * from v_StuSC; select sname,snum,cfreq from v_StuSC where Cname='数据库系统管理';
索引样例: create index index_S on s(sname); 为S表中的 Sname 创建 名为 index_S 的索引
drop index index_S on s; 删除这个索引 结合书本上的概念进行复习 建议抄到书本上。
8.事务: 样例: 先给学生表添加出生日期字段并创建CHECK约束,使输入的生日小于系统日期 USE 学生选课 GO ALTER TABLE 学生 ADD Sbirthday datetime ALTER TABLE 学生 ADD CONSTRAINT CHECK Sbirthday CHECK(Sbirthday 以上部分为准备部分,考试中应该会给出
以事务方式修改学生表中学号等于'S001'的记录,改名和改出生日期。 USE 学生选课 GO BEGIN TRAN UPDATE 学生 SET Sname='张三' WHERE Snum='S001' UPDATE 学生 SET Sbirthday=GETDATE()+1 WHERE Snum='S001' IF @@error!=0 ROLLBACK TRAN ELSE COMMIT
看一下书本上事务的概念 特点 如 roll back 等 这部分可能不考代码 但是上面的样例还是要记
9.备份不考 问过老师了
10.触发器 考 创建 和 如何触发(概念) 样例: 创建一个触发器:当学生的某一门课的成绩有变化时(update)自动修改Grade值,并进行验证,采用after触发器 create trigger int_Grade on sc 创建语句,要牢记 after insert as begin if ((select score from inserted)< 60) update sc set Grade = 0 from inserted where sc.Snum = inserted.Snum and sc.Cnum = inserted.Cnum and inserted.Score is not null else update sc set Grade = (inserted.Score * 0.1 - 5)*C.Cfreq FROM c,inserted where sc.Snum = inserted.Snum and sc.Cnum = inserted.Cnum and c.Cnum = inserted.Cnum and inserted.Score is not null end
执行部分: insert into sc values ('S006','C3',78,null); select * from SC;
insert into sc values ('S005','C2',90,null); select * from SC;
drop trigger int_Grade; 删除触发器
11.procedure存储过程的 创建和调用