题型:
分析题、应用题、编程题、设计题
设计题两道 每题十分,其他五分一提
分数分布:
第一章 5-10分 10分
1.5 我课堂没有讲,也属于考核范围,请使用教材复习
概念
第二章 5-10分 10分
关系模型 关系运算是重点,概念和运算
- 关系代数表达式:
先看要求哪些列,而这些列是在哪个表中的
有”至少“ ”全部“要用到÷
没有挑选的话直接连接关系,不用 π - 关系模型组成:数据结构,数据操作,数据关系约束
- 关系的特征:
- 表中每行存储实体的一个实例数据
- 表中每列包含实体的一项属性数据
- 表中单元格只能存储单个值
- 不允许有重复的行、列
- 列、行顺序可任意
1、计算 除/象集
先看重合的列,R中A的取值对应的BC的对,哪个全部涵盖了S,最后答案就是哪个A
2、连接
只有一个蝴蝶结是自然连接
自然连接和等值连接类似,自然连接是去掉了相等的行
3、选择
右下角是选择条件,右边的括号里是整体的范围,一般是表格
4、投影
5、代数表达式综合
第三问:
查找过程:要查学生姓名,先写个 兀NAME。首先在C表中找程军对应的所有课程号(得到一个符合条件的只有C#列的表),然后看SC表课程号对应的学号(选择出SC表中的S#,C#,让这两列的表÷C表中只有符合条件的C#的列的表,得出的就是只有S#这一列的表),所以学号找到了,就去S表中(连接运算)找学号对应的姓名。
第5问:
至少修2门课的学生号,没有说是哪两门课---->用笛卡尔积
SC×SC,就有六列,选择条件----S#=S# C≠C 然后选择S就好了
第6问:
全部学生选修了的课程号:就让SC前两列表÷S的学号表,就得全部学生都选了的课程号表
第三章 20分 20分
SQL语句 都用单引号
- 两个主键可以写在一起,CONSTRANIT 表名_PK PRIMARY KEY(列,列);
两个外键要分开写:CONSTRAINT 列名_FK FOREIGN KEY(列) REFERENCES 表(列); - 预算在两万—五万之间:BETWEEN …AND…
- Insert into 后面如果已经有了中间变量的值,就直接values(放中间变量)
没有就要 后面加 SELECE - 触发器要有返回值NEW 或OLD
1、修改表的信息用UPDATE
数据更新中要有WHERE条件,否则会更新所有行中该列的值
在学生信息表中Student,“赵东”原有的Email数据为空,现在需要更新为“zhaodong@163.com”,出生日期更新为‘1999-11-15’
UPDATE Student
SET Email='zhaodong@163.com',Birthday='1999-11-15'
WHERE StudentName='赵东';
2、创建索引
CREATE INDEX 索引名 ON 表(列)
CREATE INDEX Birthday_Idx ON Student (Birthday);
3、有效性检查CHECK 和 缺省值
CourseType varchar(10) NULL CHECK(CourseType IN('基础课','专业课','选修课')
TestMethod varchar(10) NULL DEFAULE '闭卷考试'
4、数据库表修改SQL语句
1、语句类型
- 增加新列或列完整性约束:ADD
ALTER TABLE <表名> ADD <新列名称> <数据类型> 或[完整性约束];
- 删除:DROP (列或完整性约束)
ALTER TABLE <表名> DROP COLUMN<列名>;
ALTER TABLE <表名> DROP CONSTRANIT<完整性约束名>;
- 修改表名称,列名称:RENAME TO
ALTER TABLE <表名> RENAME TO <新表名>;
ALTER TABLE <表名> RENAME <原列名> TO <新列名>;
- 修改列的数据类型:ALTER
ALTER TABLE <表名> ALTER COLUMN<列名> TYPE<新的数据类型>;
5、挑选表中的数据赋给中间变量(一般用于存储过程)
SELECT AVG(age) into avg_age from student where class=class_name;
6、分组之后求每一组的数量----就直接COUNT(*) 数行就用这个
SELECT 供应商代码
FROM 供应零件
GROUP BY 供应商代码
HAVING COUNT(*)>5;
7、数据删除(删除一行)
WHERE条件
删除姓名为张亮的学生数据
DELETE
FROM Student
WHERE StudentName='张亮';
8、创建触发器
CREATE TRIGGER score_audit_trigger
AFTER INSERT OR UPDATE OR DELETE ON student_score
FOR EACH ROW EXECUTE PROCEDURE scour_audit();
9、权限
grant <权限名> on