码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【数据库】期末复习(计科版)


    P.S:按书本习题题号写标题
    适用于XBL老师班级的考点范围
    目录上标注(选择题和简答题)、例题是样卷上截下来的

    目录

    • 第一章
      • 1、试述数据、数据库、数据库系统、数据库管理系统的概念。
        • 例题
      • 2、使用数据库系统的好处?
      • 5、数据库系统的特点?
        • 例题
      • 6、(选择/判断题)数据库管理系统的功能有哪些?
      • 7、什么是概念模型?概念模型的作用?
        • 例题
      • 14、关系数据库的特点?
      • 15、数据库系统的三级模式结构?这种结构的优点?
      • 18、数据库系统的组成
      • 数据模型和数据结构
        • 例题
    • 第二章(重要!!)
      • 7、等值连接和自然连接的区别和联系
        • 例题
      • 关系代数题目
        • 第一题
        • 第二题
        • 第三题 关系代数五种基本的运算有
        • 第四题 给出关系模式找等价的关系代数
        • 第五题 关系代数操作的对象和结果是是什么?
    • 第三章(重要!!)
      • 实验课的命令:
      • 实验1:
        • (1) 检索"信息(IS)"专业学生所学课程的信息,包括学号、姓名、课程名和分数。
        • (2) 检索"数据库"课程成绩高于 90 分的所有学生的学号、姓名、专业和分数;
        • (3) 检索没有任何一门课程成绩不及格的所有学生的信息,包括学号、姓名和专业;*
        • (4) 检索年龄大于 23 岁的男学生的学号和姓名。
        • (5) 检索王敏同学不学的课程的课程号。
        • (6) 检索至少选修两门课程的学生学号。
        • (7) 检索全部学生都选修的课程的课程号与课程名。
        • (8) 统计有学生选修的课程门数。
        • (9) 求选修 4 课程的学生的平均年龄。
        • (10) 统计每门课程的学生选修人数(超过 10 人的课程才统计)。
        • (11) 检索学号比王敏同学大,而年龄比他小的学生姓名。
        • (12) 检索姓名以 王 打头的所有学生的姓名和年龄。
        • (13) 在 SC 中检索成绩为空值的学生学号和课程号。
        • (14) 求年龄大于女同学平均年龄的男学生姓名和年龄。
        • (15) 求年龄大于所有女同学年龄的男学生姓名和年龄。
      • 实验二
        • 2.查询选修了课程的学生人数
        • 3.查询计算机系(CS)选修了两门及以上课程的学生的学号,姓名
        • 4.将95001学生选修3号课程的成绩改为该课的平均成绩
        • 5.查询student表与sc表基于学号sno的等值连接/自然连接
        • 6.查询课程之先修课的先修课的课程号(自身连接)
        • 7.查询学生及其选修课程、成绩等情况(不管是否选修均需列出学生信息)
        • 8.查询性别为男、课程成绩及格的学生信息及课程号、成绩
        • 9.查询与’张立’在同一个系学习的学生信息
        • 10.查询选修了课程名为“数据库”的学生学号、姓名和所在系
        • 11.查询哪些课程只有女生选修
        • 12.查询所有未选修1号课程的学生姓名
        • 13.查询平均成绩大于85分的学号、姓名、平均成绩
      • 实验三
        • (1)往基本表 Student 中插入一个学生元组('95999','张三', 18)。
        • (2)在基本表 Student 中检索每一门课程成绩都大于等于 80 分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表 S (Sno , SNAME ,SEX)。(需要先建立基本表S)
        • (3)在基本表 SC 中删除尚无成绩的选课元组。
        • (4)把姓王的同学的选课记录全部删去。
        • (5)把选修 MATHS 课不及格的成绩全改为空值。
        • (6)把低于总平均成绩的女同学成绩提高 5% 。
        • (7)在基本表 SC 中修改 C4 课程的成绩,若成绩小于等于 75 分时提高 5% ,若成绩大于 75 分时提高 4% (用两个 UPDATE 语句实现)。
      • 课本视图的创建、修改例题
        • (1)建立信息系学生的视图,并且在修改、插入操作时仍需要保证该视图只有信息系的学生
        • (2)建立信息系选修了1号课程的学生的视图(包括学号、姓名、成绩)
        • (3)建立信息系选修了1号课程且课程在90分以上的学生的视图
        • (4)定义一个反映学生出生年份的视图
        • (5)将学生的学号及平均成绩定义为一个视图
        • (6)将student表中所有女生记录定义为一个视图
        • (7)删除视图
        • (8)在信息系学生的视图中找出年龄小于20岁的学生
        • (9)查询选修了1号课程的信息系学生
        • (10)在S_G视图中查询平均成绩在90分以上的学生学号和平均成绩
        • (11)更新视图
        • (12)向信息系学生视图IS_Student中插入一个新的学生记录
        • (13)删除上面的赵新的记录
      • 1、SQL语言的特点
        • 例题
      • 5、SQL操作课本例题
      • 6、什么是基本表?什么是视图?两者的区别和联系?
        • 例题
      • 7、(选择/判断题)视图的优点?
      • 8、哪类视图可以更新?哪类视图是不可更新?举一例。
    • 第四章
      • 1、什么是数据库的安全性?
        • 例题
      • 2、举例说明对数据库安全性产生威胁的因素。
      • 4、(选择/判断题)数据库安全性控制的常用方法和技术
      • 5、什么是数据库中的自主存取控制方法和强制存取控制方法?
      • 7、对关系模式,用GRANT和REVOKE语句完成以下授权定义或存取控制功能。
      • 例题 删除基本表和删除基本表的元组的语句
    • 第五章
      • 1、什么是数据库的完整性?
        • 例题
      • 2、(简答题)数据库的完整性概念与数据库的安全性概念有什么区别和联系?
      • 3、什么是数据库的完整性约束条件?
        • 例题
      • 4、关系数据库管理系统的完整性控制机制应具有哪三方面的功能?
      • 5、数据完整性分为四类:
    • 第六章 关系数据库理论
      • 1、术语定义
      • 2、建立一个关系数据库
      • 6、给关系模式,判断范式类型。
      • 7、(判断题)判断范式类型
      • 8、(计算题)给关系,写闭包,判断候选码,判断第几范式
      • 范式判断笔记:
        • 例题
      • 9、最小函数依赖集
    • 第七章 数据库设计
      • 1、(简答题)数据库设计过程是什么?
      • 6、概念模型中的术语
      • 10、E-R图转换为关系模型
      • 11、第十题里面的候选码属于第几范式?会产生什么更新异常?
      • 例题 E-R图转换为关系模式的原则(大作业用到)
    • 第十章(不考,但以防万一)
      • 1、事务
      • 2、事务的ACID特性
    • 考后反馈

    第一章

    1、试述数据、数据库、数据库系统、数据库管理系统的概念。

    答:
    (1)数据:描述事物的符号记录称为数据。数据与其语义是不可分的。

    (2)数据库(DB):数据库是长期储存在计算机内的、有组织的、可共享的数据集合。

    (3)数据库系统(DBS):由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成的系统。

    (4)数据库管理系统(DBMS):数据库管理系统是位于用户与操作系统之间的一层数据管理软件。

    例题

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    DDL是数据定义语言
    DCL是数据控制语言

    在这里插入图片描述
    在这里插入图片描述

    2、使用数据库系统的好处?

    答:

    1. 有利于数据的集中管理,控制数据冗余,提高数据的利用率和一致性
    2. 有利于应用程序的开发和维护。

    5、数据库系统的特点?

    答:数据库系统的特点:

    1. 数据结构化
    2. 数据的共享性高、冗余度低且易扩展
    3. 数据独立性高
    4. 数据由数据库管理系统统一管理和控制

    例题

    在这里插入图片描述

    6、(选择/判断题)数据库管理系统的功能有哪些?

    答:

    1. 数据定义功能
    2. 数据组织、存储和管理
    3. 数据操纵功能
    4. 数据库的事务和运行管理
    5. 数据库的建立和维护功能
    6. 其他功能

    在这里插入图片描述

    7、什么是概念模型?概念模型的作用?

    答:概念模型是现实世界到机器世界的一个中间层次。是按用户的观点来对数据和信息建模,主要用于数据库设计。

    例题

    在这里插入图片描述

    概念模型的一种表示方式:E-R模型

    在这里插入图片描述

    14、关系数据库的特点?

    答:

    1. 数据集中控制;
    2. 数据独立性高;
    3. 数据共享性好;
    4. 数据冗余度小;
    5. 数据结构化;
    6. 统一的数据保护功能。

    15、数据库系统的三级模式结构?这种结构的优点?

    答:数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成。
    (1)模式
    模式也称为逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
    (2)外模式
    外模式也称为子模式或用户模式,能够看见和使用局部数据的逻辑结构和特征描述,是数据库用户的数据及视图,是与某一应用右端的数据的逻辑表示。
    (3)内模式
    内模式也称为存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。

    优点:把数据的具体组织留给数据库管理系统,使用户能逻辑地、抽象地处理数据,而不必关心数据在计算机中的具体表现方法与存储方式。

    样卷答案:
    在这里插入图片描述

    18、数据库系统的组成

    答:数据库系统一般由数据库、数据库管理系统、应用程序和数据库管理员构成。具体是指:

    1. 硬件平台及数据库
    2. 软件
    3. 人员

    数据模型和数据结构

    例题

    在这里插入图片描述

    在这里插入图片描述

    第二章(重要!!)

    7、等值连接和自然连接的区别和联系

    在这里插入图片描述

    例题

    在这里插入图片描述

    关系代数题目

    第一题

    在这里插入图片描述
    答:
    在这里插入图片描述

    第二题

    在这里插入图片描述
    答:
    在这里插入图片描述

    第三题 关系代数五种基本的运算有

    1. 并
    2. 差
    3. 笛卡尔积
    4. 选择
    5. 投影

    ps:交、连接、除都可以用上面五种方法表示。

    第四题 给出关系模式找等价的关系代数

    在这里插入图片描述

    第五题 关系代数操作的对象和结果是是什么?

    在这里插入图片描述

    第三章(重要!!)

    SQL语句

    实验课的命令:

    在这里插入图片描述

    注意:
    (3)(5)的外层的查询都不是在SC表格里面查找的,而是Student和Course表,因为要找到符合条件的全部的学生名字和课程名。
    (6)(8)记得加上distinct。
    (7)有三层select,注意每一层是在哪个表查询。
    (10)有升降排序。
    (12)字符匹配用 LIKE,NOT LIKE
    (13)空值 IS NULL,IS NOT NULL

    实验1:

    (1) 检索"信息(IS)"专业学生所学课程的信息,包括学号、姓名、课程名和分数。

    select SC.Sno,student.Sname,Course.Cname,SC.Grade
    From Student,Course,SC
    where Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Student.Sdept='IS'
    
    • 1
    • 2
    • 3

    (2) 检索"数据库"课程成绩高于 90 分的所有学生的学号、姓名、专业和分数;

    select SC.Sno,student.Sname,Student.Sdept,SC.Grade
    From Student,Course,SC
    where Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Course.Cname='数据库' AND SC.Grade>90
    
    • 1
    • 2
    • 3

    (3) 检索没有任何一门课程成绩不及格的所有学生的信息,包括学号、姓名和专业;*

    select Student.Sno,Student.Sname,Student.Sdept
    from Student
    where sno in(
    	select distinct sno
    	from sc
    	where Sno not in(
    		select Sno
    		from sc
    		where grade<60
    	)
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    (4) 检索年龄大于 23 岁的男学生的学号和姓名。

    select Sno,Sname
    from Student
    where Sage > 23 and Ssex='男'
    
    • 1
    • 2
    • 3

    (5) 检索王敏同学不学的课程的课程号。

    select cno
    from Course
    where cno not in(
    	select Course.cno
    	from SC
    	inner join Student on SC.Sno =Student.Sno
    	where Student.Sname='王敏'
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    select Cno
    from course
    where cno not in(
    	select cno
    	from Student,sc
    	where Student.Sno=SC.cno and Student.sname='王敏'
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    (6) 检索至少选修两门课程的学生学号。

    select distinct SC.sno
    from SC
    group by sno
    having count(SC.cno)>=2
    
    • 1
    • 2
    • 3
    • 4

    (7) 检索全部学生都选修的课程的课程号与课程名。

    select Course.Cno,Course.Cname
    from Course
    where Course.Cno in(
    	select SC.cno
    	from SC
    	group by SC.cno
    	having count(SC.sno)= (select count(sno)
    							from Student)
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    (8) 统计有学生选修的课程门数。

    select count(distinct SC.cno)
    from SC
    
    • 1
    • 2

    (9) 求选修 4 课程的学生的平均年龄。

     select AVG(Student.Sage)
    from Student,SC
    where Student.sno=SC.sno AND SC.cno='4'
    
    • 1
    • 2
    • 3

    (10) 统计每门课程的学生选修人数(超过 10 人的课程才统计)。

    要求输出课程号和选修人数,查询结果按人数降序排列,
    若人数相同,按课程号升序排列。

    select Cno as '课程号',COUNT(Sno) as '选课人数'
    from SC
    group by Cno
    Having COUNT(Sno)>10
    order by count(Sno) desc, Cno
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (11) 检索学号比王敏同学大,而年龄比他小的学生姓名。

    select sname
    from student
    where sno >(
    	select sno
    	from student
    	where sname='王敏'
    )
    and sage <(
    	select sage
    	from student
    	where sname='王敏'
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    方法二:这里的first和second都是student表,看成两个表格去对比

    select first.sname
    from student first, student second
    where first.sno>second.sno and first.sage> second.sage and second.Sname='王敏'
    
    • 1
    • 2
    • 3

    (12) 检索姓名以 王 打头的所有学生的姓名和年龄。

    select Sname,Sage
    from Student
    where Sname like '王%'
    
    • 1
    • 2
    • 3

    (13) 在 SC 中检索成绩为空值的学生学号和课程号。

    select Sno, Cno
    from SC
    where grade is null
    
    • 1
    • 2
    • 3

    (14) 求年龄大于女同学平均年龄的男学生姓名和年龄。

    select sname,sage
    from student
    where sage >(
    	select AVG(sage)
    	from student
    	where Ssex='女'
    )
    and Ssex='男'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    (15) 求年龄大于所有女同学年龄的男学生姓名和年龄。

    select sname,sage
    from student
    where Ssex='男' and sage> all(
    	select sage
    	from student
    	where Ssex='女'
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这里也可以把all改成max

    实验二

    注意:
    这里的2.和实验一的(8)是查询不同的东西
    7.要student表进行左连接,才能保证所有学生名单都会出现

    2.查询选修了课程的学生人数

    select count(distinct sno)
    from sc
    
    • 1
    • 2

    3.查询计算机系(CS)选修了两门及以上课程的学生的学号,姓名

    select sno,sname
    from student
    where sno in(
    select sno
    from sc
    group by sno
    having count(sc.cno)>=2)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    –老师给的答案:

    select student.sno,student.sname
    from student,sc
    where Student.sno = SC.Sno
    group by student.sno,student.sname
    having count(sc.cno)>=2
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4.将95001学生选修3号课程的成绩改为该课的平均成绩

    –老师给的答案:

    update sc
    set grade = (
    select avg(grade)
    from sc
    where cno = '3'
    )where sno = '95001' and cno = '3'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    5.查询student表与sc表基于学号sno的等值连接/自然连接

    select Student.Sno, Sname,Ssex,Sage,Sdept,Cno,Grade
    from Student inner join SC
    on Student.sno=SC.Sno
    
    • 1
    • 2
    • 3

    写法2:

    select Student.Sno, Sname,Ssex,Sage,Sdept,Cno,Grade
    from Student, SC
    where Student.Sno=SC.sno
    
    • 1
    • 2
    • 3

    –注意这里不能写成select *,因为会出现重复的sno列

    6.查询课程之先修课的先修课的课程号(自身连接)

    select first.Cpno, second.Cpno
    from Course first, Course second
    where first.Cpno=second.Cno
    
    • 1
    • 2
    • 3

    –变式:查询课程之先修课的先修课的课程名

    select x.cname, z.cname
    from course x, course y, course z
    where x.cpno = y.cno and y.cpno = z.cno
    
    • 1
    • 2
    • 3

    7.查询学生及其选修课程、成绩等情况(不管是否选修均需列出学生信息)

    select Student.Sno, Sname,Ssex,Sage,Sdept,Cno,Grade
    from student left outer join SC
    on Student.Sno=SC.Sno
    
    • 1
    • 2
    • 3

    8.查询性别为男、课程成绩及格的学生信息及课程号、成绩

    select Student.*,Cno,Grade
    from Student,sc
    where Student.Sno=SC.Sno and SC.Grade>=60 and Student.Ssex='男'
    
    • 1
    • 2
    • 3

    写法二:

    select Student.*,Cno,Grade
    from Student inner join SC 
    on Student.Sno=Sc.sno
    where SC.Grade>=60 and Student.Ssex='男'
    
    • 1
    • 2
    • 3
    • 4

    –变式:再加一个“没有挂科记录”的条件

    select Student.*,Cno,Grade
    from Student,sc
    where Student.Sno=SC.Sno and SC.Grade>=60 and Student.Ssex='男' and Student.Sno  not in
    (
    	select sno
    	from sc
    	where Grade<60
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    9.查询与’张立’在同一个系学习的学生信息

    select *
    from Student
    where Sdept in(
    	select Sdept
    	from Student
    	where Sname='张立'
    )and sname !='张立'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    –这里的Sdept in()也可以写成Sdeot =(),因为子查询只返回一个值。
    –最后别忘了把张立剔除

    10.查询选修了课程名为“数据库”的学生学号、姓名和所在系

    select Student.Sno,Sname,Sdept
    from Student,SC,Course
    where Student.Sno=SC.Sno and SC.cno=Course.Cno and Course.Cname='数据库'
    
    • 1
    • 2
    • 3

    11.查询哪些课程只有女生选修

    –错误写法:(忽略了“只有”的条件,这样找出来的可能含男生女生都修了的课程)

    select distinct Course.Cname
    from Course,SC,Student
    where Student.Sno=SC.Sno and SC.cno=Course.Cno and Student.Ssex='女'
    
    • 1
    • 2
    • 3

    –不要忘记加上distinct
    –要在SC表格里面找,不要在Course表里面找。不然会出现男生女生都没修的课程。
    –老师给的答案:

    select distinct cno
    from sc
    where cno not in(
    	select distinct cno
    	from student,sc
    	where student.sno = sc.sno and ssex = '男'
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    12.查询所有未选修1号课程的学生姓名

    select Student.sname
    from Student
    where not exists(
    	select sno
    	from sc
    	where student.sno=sc.sno and cno='1'
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    –老师给的答案:

    select Student.sname
    from Student
    where sno not in(
    	select sno
    	from sc
    	where cno='1'
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    –not exists也可以写成 not in
    –但是这里不要写成where cno<>‘1’,不然会有既选修了1号课程又修了其他课程的学生名字出现

    13.查询平均成绩大于85分的学号、姓名、平均成绩

    select Student.Sno,Sname, AVG(SC.Grade) as avg_grad
    from Student inner join SC on Student.sno=sc.sno
    group by Student.Sno,Sname
    having AVG(SC.Grade)>85
    
    • 1
    • 2
    • 3
    • 4

    –查询sno和sname,group by中要把这两个都写进去(刚好sno和sname是一一对应的),不然会报错
    不要忘记把inner join那一行写上

    实验三

    (1)往基本表 Student 中插入一个学生元组(‘95999’,‘张三’, 18)。

    insert
    into Student(Sno,Sname,Sage)
    values('95999','张三',18)
    
    select * from Student
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (2)在基本表 Student 中检索每一门课程成绩都大于等于 80 分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表 S (Sno , SNAME ,SEX)。(需要先建立基本表S)

    create table S(
    	Sno char(5) primary key,
    	Sname char(20),
    	Sex char(2)
    );
    insert
    into S(Sno,Sname,Sex)
    
    select distinct Student.Sno,Sname,Ssex
    from Student
    where Sno in(
    --写法一:
    	select Sno
    	from SC
    	where Sno not in(
    		select Sno
    		from SC
    		where grade<80
    	)
    )
    
    select * from S
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    –写法二:这种最外层不需要distinct

    select sno
    from sc
    group by sno
    having min(grade)>=80
    
    • 1
    • 2
    • 3
    • 4

    (3)在基本表 SC 中删除尚无成绩的选课元组。

    delete
    from sc
    where Grade is null
    
    select * from sc
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (4)把姓王的同学的选课记录全部删去。

    delete
    from sc
    where sno in(
    	select sno
    	from Student
    	where sname like '王%')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    (5)把选修 MATHS 课不及格的成绩全改为空值。

    –插入了测试数据:
    insert
    into sc(sno,cno,grade)
    values(‘95004’,‘2’,55)

    –更新表格

    update sc
    set grade = null
    where Grade<60 and cno = (
    	select cno
    	from course
    	where cname='数学'
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    select * from sc

    –删除测试数据:
    delete
    from sc
    where grade is null

    (6)把低于总平均成绩的女同学成绩提高 5% 。

    update sc
    set grade=grade*1.05
    where grade in(
    	select distinct grade
    	from Student,sc
    	where student.sno=sc.sno and student.Ssex='女' and sc.grade < (
    		select avg(Grade)  --前面的题目加了null值,记得删除掉再算平均比较好
    		from sc
    	)
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    –写法2:

    update sc
    set grade=grade*1.05
    where grade<(
    	select AVG(Grade)
    	from sc inner join Student on student.sno = sc.sno
    	where Ssex='女'
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    –老师给的答案:

    update sc
    set grade=grade*1.05
    where grade<(
    	select avg(grade)
    	from sc
    )and sno in(
    	select sno
    	from student 
    	where ssex = '女'
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    (7)在基本表 SC 中修改 C4 课程的成绩,若成绩小于等于 75 分时提高 5% ,若成绩大于 75 分时提高 4% (用两个 UPDATE 语句实现)。

    update sc
    set grade = grade*1.04
    where grade>75 and cno='4'
    
    update sc
    set grade = grade*1.05
    where grade<=75 and cno='4'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    –这道题居然有顺序?!
    –如果先修改了小于75分的,可能分数上升到75分,再对大于75分的处理,就变成了两次修改成绩,这就出错了!

    课本视图的创建、修改例题

    (1)建立信息系学生的视图,并且在修改、插入操作时仍需要保证该视图只有信息系的学生

    go
    create view IS_Student
    as
    select sno,sname,sage
    from Student
    where Sdept='IS'
    with check option
    go
    
    select * from IS_Student
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    (2)建立信息系选修了1号课程的学生的视图(包括学号、姓名、成绩)

    go
    create view IS_S1(Sno,Sname,Grade)
    as
    select Student.sno,sname,grade
    from Student,SC
    where Sdept='IS' and Student.Sno=SC.Sno and SC.Cno='1';
    go
    
    select * from IS_S1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    (3)建立信息系选修了1号课程且课程在90分以上的学生的视图

    go
    create view IS_S2
    as
    select sno,sname,grade
    from IS_S1
    where grade>=90;
    go
    
    select * from IS_S2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    (4)定义一个反映学生出生年份的视图

    go
    create view BT_S(sno,sname,sbirth)
    as
    select sno,sname,2014-sage
    from student
    go
    
    select * from BT_S
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    (5)将学生的学号及平均成绩定义为一个视图

    go
    create view S_G(Sno,Gavg)
    as
    select sno,AVG(Grade)
    from sc
    group by Sno
    go
    
    select * from S_G
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    (6)将student表中所有女生记录定义为一个视图

    go
    create view F_Student(F_sno,name,sex,age,dept)
    as
    select *
    from student
    where Ssex='女';
    go
    
    select * from F_Student
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    (7)删除视图

    drop view BT_S
    
    • 1

    (8)在信息系学生的视图中找出年龄小于20岁的学生

    select sno,sage
    from IS_Student
    where sage<20
    
    • 1
    • 2
    • 3

    (9)查询选修了1号课程的信息系学生

    select IS_Student.Sno,Sname
    from IS_Student,SC
    where IS_Student.Sno = SC.Sno and SC.Cno = '1';
    
    • 1
    • 2
    • 3

    (10)在S_G视图中查询平均成绩在90分以上的学生学号和平均成绩

    select *
    from S_G
    where Gavg>=90;
    
    • 1
    • 2
    • 3

    –写法2:子查询生产一个派生表S_G

    select *
    from (select sno,AVG(grade)
    	from sc
    	group by sno
    ) as S_G(sno,Gavg)
    where Gavg>=90;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    (11)更新视图

    –将信息系学生视图IS_Student中学号为“95002”的学生姓名改为“刘辰”

    update IS_Student
    set Sname='刘辰'
    where sno='95002'
    
    • 1
    • 2
    • 3

    (12)向信息系学生视图IS_Student中插入一个新的学生记录

    insert
    into IS_Student
    values('95009','赵新','20')
    
    select * from Student
    
    • 1
    • 2
    • 3
    • 4
    • 5

    –注意上面这种写法IS_Student不会显示,因为专业sdept被默认为是null了

    (13)删除上面的赵新的记录

    delete
    from IS_Student
    where Sno='95009'
    
    • 1
    • 2
    • 3

    1、SQL语言的特点

    在这里插入图片描述
    在这里插入图片描述

    例题

    在这里插入图片描述
    在这里插入图片描述

    5、SQL操作课本例题

    表格:S供应商 P零件 J工程项目 SPJ供应情况表
    在这里插入图片描述

    题目:
    在这里插入图片描述
    注意:
    (3)(7)有DIST
    (8)-(11)是更新、删除、插入操作语句

    6、什么是基本表?什么是视图?两者的区别和联系?

    答:
    在这里插入图片描述

    例题

    在这里插入图片描述

    7、(选择/判断题)视图的优点?

    答:

    1. 视图能够简化用户的操作;
    2. 视图使用户能以多种角度看待同一数据;
    3. 视图对重构数据库提供了一定程度的逻辑独立性;
    4. 视图能够对机密数据提供安全保护。

    8、哪类视图可以更新?哪类视图是不可更新?举一例。

    答:基本表的行列子集视图一般是可更新的。
    若视图的属性来自集合函数、表达式,则该视图肯定是不可以更新的。

    所有的视图是否都可以更新?为什么?
    答:不是。视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。因为有些视图的更新不能惟一有意义地转换成对相应基本表的更新,所以,并不是所有的视图都是可更新的。

    第四章

    1、什么是数据库的安全性?

    在这里插入图片描述

    例题

    在这里插入图片描述

    2、举例说明对数据库安全性产生威胁的因素。

    答:

    1. 非授权用户对数据库的恶意存储和破坏。(黑客和犯罪分子再用户存取数据库时猎取用户名和用户口令)
    2. 数据库中重要或敏感的数据被泄露。
    3. 安全环境的脆弱性。(例如操作系统和网络)

    4、(选择/判断题)数据库安全性控制的常用方法和技术

    答:
    在这里插入图片描述

    5、什么是数据库中的自主存取控制方法和强制存取控制方法?

    答:在这里插入图片描述

    7、对关系模式,用GRANT和REVOKE语句完成以下授权定义或存取控制功能。

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    例题 删除基本表和删除基本表的元组的语句

    在这里插入图片描述

    第五章

    1、什么是数据库的完整性?

    答:数据库的完整性指数据的正确性和相容性。

    例题

    在这里插入图片描述

    2、(简答题)数据库的完整性概念与数据库的安全性概念有什么区别和联系?

    答:
    在这里插入图片描述

    3、什么是数据库的完整性约束条件?

    答:完整性约束条件是指数据库中的数据应该满足的语义约束条件。
    一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。

    • 静态列级约束是对一个列的取值域的说明,包括以下几个方面:(1)对数据类型的约束,包括数据的类型、长度、单位、精度等:(2)对数据格式的约束;(3)对取值范围或取值集合的约束:(4)对空值的约束;(5)其他约束。
    • 静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。
    • 静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。
      常见的静态关系约束有:(1)实体完整性约束;(2)参照完整性约束;(3)函数依赖约束。
    • 动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:(1)修改列定义时的约束。(2)修改列值时的约束。
    • 动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。
    • 动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。

    例题

    在这里插入图片描述
    在这里插入图片描述

    4、关系数据库管理系统的完整性控制机制应具有哪三方面的功能?

    答:DBMS 的完整性控制机制应具有三个方面的功能:

    1. 定义功能,即提供定义完整性约束条件的机制;
    2. 检查功能,即检查用户发出的操作请求是否违背了完整性约束条件;
    3. 违约反应,如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保正数据的完整性。

    5、数据完整性分为四类:

    1. 实体完整性(关系中的主属性值不能为Null且不能有相同值。定义表中的所有行能唯一的标识,一般用主键,唯一索引 unique关键字,及identity属性比如说我们的身份证号码,可以唯一标识一个人。)
    2. 参照完整性(关系中的外键必须是另一个关系的主键有效值,或者是NULL。 参考完整性维护表间数据的有效性,完整性,通常通过建立外部键联系另一表的主键实现,还可以用触发器来维护参考完整性)
    3. 用户定义的完整性。

    第六章 关系数据库理论

    下方第1、2题超长答案预警!
    我自己都看困了😴
    看 视频的P2 速成吧

    1、术语定义

    • 函数依赖
    • 部分函数依赖
    • 完全函数依赖
    • 传递依赖
    • 候选码
    • 主码
    • 外码
    • 范式

    答:
    在这里插入图片描述
    在这里插入图片描述

    2、建立一个关系数据库

    补充:关于最小函数依赖的知识点

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    6、给关系模式,判断范式类型。

    在这里插入图片描述
    答:
    (1)BC也是R的候选码
    (2)BCE、ACE、CDE
    (3)R的候选码BCE、ACE、CDE,没有非主属性对码部分依赖或传递依赖,所以R属于3NF。而三个函数依赖中,决定因素都不包含码,所以R不属于BCNF。

    7、(判断题)判断范式类型

    在这里插入图片描述
    这题答案来自这篇文章

    答:
    (1)任何一个二目关系是属于3NF的。

    正确。只有两个属性不存在传递函数依赖。

    (2)任何一个二目关系是属于BCNF的。

    正确。只有两个属性,决定因素必含有码。

    (3)任何一个二目关系是属于4NF的。

    正确。只有两个属性不存在非平凡的多值依赖。

    (4)当且仅当函数依赖A→B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。

    错误。当函数依赖B→A在R上成立时,关系R(A,B,C)也等于其投影R1(A,B)和R2(A,C)的连接。

    (5)若R.A→R.B,R.B→R.C则R.A→R.C。

    正确。

    (6)若R.A→R.B,R.A→R.C,则RA→R.(B,C)。

    正确。

    (7) 若R.B→R.A,R.C→R.A,则R.(B,C)→R.A。

    正确。

    (8)若R.(B,C)→R.A,则R.B→R.A,R.C→R.A。

    错误。根据B、C两个属性才能确定A。例如知道学号和课程才能确定成绩,只知道学号或是只知道课程都不能确定成绩。

    8、(计算题)给关系,写闭包,判断候选码,判断第几范式

    以下是必看例题!!!
    例题

    范式判断笔记:

    在这里插入图片描述

    例题

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    9、最小函数依赖集

    在这里插入图片描述

    第七章 数据库设计

    1、(简答题)数据库设计过程是什么?

    答:

    1. 需求分析
    2. 概念结构设计
    3. 逻辑结构设计
    4. 物理结构设计
    5. 数据库实施
    6. 数据库运行和维护

    详细版:

    在这里插入图片描述

    6、概念模型中的术语

    在这里插入图片描述

    10、E-R图转换为关系模型

    题目:
    在这里插入图片描述

    可以看这个视频理解过程:

    在这里插入图片描述

    11、第十题里面的候选码属于第几范式?会产生什么更新异常?

    答案看这篇博客

    例题 E-R图转换为关系模式的原则(大作业用到)

    在这里插入图片描述
    在这里插入图片描述

    第十章(不考,但以防万一)

    1、事务

    事务时用户定义的一个数据库操作序列,是不可分割的工作单位。是数据恢复和并发控制的基本单位。

    2、事务的ACID特性

    Atomicity 原子性
    Consistency 一致性
    Isolation 隔离性
    Durability 持续性

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    这就是全部范围了。

    考后反馈

    考了多对多关系的ER图、写关系模型,找出模型中的外码
    还考察了逻辑蕴含,还要证明是否是3NF
    还有封锁粒度
    考了数据、数据库等那4各概念的简答

    END

  • 相关阅读:
    如何在VC++ 6.0中实现拖动指令改变执行路径 (指令飞越)?
    LVS集群
    Paparazzi: Surface Editing by way of Multi-View Image Processing
    Zookeeper
    Linux命令(79)之tr
    Snipaste 截图悬浮工具【实用教程】
    使用Vite快速构建Vue3+ts+pinia脚手架
    机器学习基础:大数定律与中心极限定理
    【Window10 】删除‘设备和驱动器’中的百度网盘、酷狗音乐、迅雷下载等
    技术分享 | my2sql 与 binlog2sql 解析效率 battle
  • 原文地址:https://blog.csdn.net/qq_51669241/article/details/125230852
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号