数据库期末复习(SQL,范式,数据库设计例题)

这篇具有很好参考价值的文章主要介绍了数据库期末复习(SQL,范式,数据库设计例题)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SQL语句

创表
create table 表名(
    id number(10) primary key not null, //列名 类型 主键 不为空
    name varchar(20) not null, //varchar (可变长度,指定最大长度20字节) 不为空
    mobile varchar(11) check(length(mobile)=11) unique //约束长度等于11 取唯一值
    constraint 自命名 foreign key(address) references Massage(address) //address是外码,被参照表是Massage
    constraint 自命名 primary key(mobile)
)
//常用数据类型
// varchar(size) : 存储可变长度字符串, size 规定字符串最大长度
// number(m,n)  : m 表示总长度,n表示小数位的精度,只有m表示可以存入最大为m位的整数
// date : 表示日期和时间,7个字节固定宽度,有7个属性,分别为世纪-年-月-日-小时-分-秒
视图
create view 视图名 as select ....;
drop view 视图名;
view 和 with as 的区别:view 创建后不删除就一直都还在,with as 执行后就不存在了

例题:建立一个视图V1,显示老师与学生的授课关系,包括年份,学期,课程名称,老师ID,老师姓名,学生ID,学生姓名

create view v1 as
select year,semester,title,a.id i_id,d.name
i_name,b.id s_id,c.name s_name
from takes a join teaches b 
using(course_id,sec_id,year,semester)
join student c on(a.id = c.id)
join instructor d on (b.id = d.id)
join course using(course_id)
向表中添加或删除约束
// 添加主键约束
alter table 表名 add constraint 自定义主键名 primary key(字段)
//添加外键约束
alter table 表名 add constraint 自定义外键名 foreign key(外键字段) 
references 表名(字段)
//删除主键约束
alter table 表名 drop constraint 主键名
//删除外键约束
alter table 表名 drop constraint 外键名
添加信息
insert into 表名 values(值1,值2,....);
insert into 表名(字段1,字段3) values(值1,值3);
insert into 表名 select ...;

例题:给“Aufr”同学选上2010年秋季学期的所有课程

insert into takes
select id,course_id,sec_id,semester,year,null
from student a,section b
where a.name='Aufr' and b.year = 2010 and b.semester
= 'Fall';
删除信息
delete from 表名 where 条件;

例题:删除“Comp. Sci.”学院“Ploski”同学,所有成绩为’C-’的选课记录

delete from takes a
where exists(select 1 from student b where a.id=b.id
and b.dept_name = 'Comp. Sci.' and b.name ='Ploski')
and a.grade = 'C-';
更新信息
update 表名 set 字段=new字段 where 条件;

例题: 将“Comp. Sci.” 学院所有低于学校平均工资老师的涨薪10%,但是最高不能超过学校平均工资

update instructor
set salary =
case when salary *1.1 > (select avg(salary) from
instructor) then
(select avg(salary) from
instructor)
else salary * 1.1
end
where dept_name = 'Comp. Sci.'
and salary < (select avg(salary) from instructor);
查询常用函数
avg() :求平均值
distinct : 去重
max() : 求最大值
min() : 求最小值
sum() : 求和
count() : 求记录的行数
count(*) : 包括null
count(字段) : 该字段中不为null 的行数
group by 字段 : 按字段分组
order by 字段,字段 : 按字段排序,desc 降序,默认为升序
union all 合并不去重
//窗口函数
//排序rank(),dense_rank(),row_number()
// row_number 不存在并列,不会有相同的数字
//dense_rank 存在并列,不会跳数字
//rank() 存在并列,会出现数字的中断
select id,score,row_number() over (order by score desc) as row_number,
dense_rank() over (order by score desc) as dense_rank1,
rank() over (order by score desc) as rank1
from scores
//
over : 在什么条件之上
partition by  字段 : 按字段划分
id score row_number1 dense_rank1 rank1
01 99 1 1 1
03 99 2 1 1
02 88 3 2 3
例题:使用标量子查询,查询各院开设课程修课人数最多的前三门课程
with ta as
(select dept_name,course_id,title,count (distinct id) cnt
 from course natural join takes
 group by dept_name,course_id,title),
tb as(
select dept_name,course_id,title,cnt,rank() over(partition 
by dept_name order by cnt desc) rk
from ta)
select * from tb
where rk<=3;
//不使用窗口函数
with ta as
(select dept_name,course_id,title,count(distinct id) cnt
from course natural join takes
group by dept_name,course_id,title),
tb as
(select dept_name,course_id,title,cnt,
(select count(*)+1 from ta b
where a.dept_name = b.dept_name and b.cnt > a.cnt) rk
from ta a)
select * from tb where rk <= 3 order by dept_name,rk
exists 和 not exists 的使用

eixsts()会返回具体的查询到的数据,只是会返回true或者false,如果外层sql的字段在子查询中存在则返回true,不存在则返回false

双not exists 的使用

例题:查询修了ID=‘82402‘同学所有选修课程的同学的ID,姓名

select id, name
//同学
from student a
//不存在
where not exists(
//这样一门课程
    select 1 from takes b
//这门课程82402选了,但她没选
where id='82402' and not exists(
    select 1 from takes c
where a.id=c.id and b.course_id=c.course_id)
);
case 的使用

CASE语句遍历条件并在满足第一个条件时返回一个值(如IF-THEN-ELSE语句)。因此,一旦条件为真,它将停止读取并返回结果。如果没有条件为 true,则返回 ELSE 子句中的值。

如果没有其他部分,并且没有条件为 true,则返回 NULL。

CASE
 WHEN condition1 THEN result1
 WHEN condition2 THEN result2
 WHEN conditionN THEN resultN
 ELSE result
END;

例题:查询各课程各级成绩人数,显示课程名称,A级人数,B级人数,C级人数,总人数

select title,
count(case when grade like 'A%' then 1 else null end) A,
count(case when grade like 'B%' then 1 else null end) B,
count(case when grade like 'C%' then 1 else null end) C,
count(grade) total
from course natural left outer join takes
group by title

范式

超码:超码能唯一确定一个元组
候选码:最小的超码、
1NF:非主属性部分依赖于R的候选码
2NF:非主属性完全函数依赖于R的候选码,存在传递依赖(即非主属性由另一个非主属性决定)
3NF:左边是超码或者右边是主属性
BCNF: 左边都是超码
无损分解

定义:无损连接是指分解后的关系通过自然连接可以恢复成原来的关系,即通过自然连接得到的关系与原来的关系相比,既不多出信息、又不丢失信息。

判断方法: 图示法

保持函数依赖

如果F上的每一个函数依赖都在其分解后的某一个关系上成立,则这个分解是保持依赖的(充分条件)。

如果上述判断失败,并不能断言分解不是保持依赖的,因为上面只是充分条件,还要使用下面的算法来做进一步判断。

对F上的每一个α→β使用下面的过程:

result:=α;
while(result发生变化)do
    for each 分解后的Ri
        t=(result ∩ Ri)+ ∩ Ri
        result=result ∪ t
如果result中包含了β的所有属性,则函数依赖α→β成立,
这时分解是保持依赖的
分解为符合3NF标准

判断是否为3NF

求正则覆盖,求候选码,进行分解

去重

判断有无候选码,无则加上

例题:

数据库范式例题,数据库,sql

数据库范式例题,数据库,sql

分解为符合BCNF标准

函数依赖中非平凡函数依赖的左边都是超码

先判断左边是否为超码,不是则分解为符合超码的集合

例题:

数据库范式例题,数据库,sql

数据库范式例题,数据库,sql

例题:

数据库范式例题,数据库,sql

数据库范式例题,数据库,sql

例题:

数据库范式例题,数据库,sql

数据库范式例题,数据库,sql

正则覆盖和最小函数依赖的区别:最小覆盖的右端必然只有一个属性

推荐课程: 录课|数据库系统概念-范式3NF BCNF分解习题

数据库设计

数据库范式例题,数据库,sql

数据库范式例题,数据库,sql

数据库范式例题,数据库,sql

数据库范式例题,数据库,sql

 文章来源地址https://www.toymoban.com/news/detail-784479.html

到了这里,关于数据库期末复习(SQL,范式,数据库设计例题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据库系统概论】期末复习4

    期末复习1 期末复习2 期末复习3 数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。 数据库的完整性是指数据的正确性和相容性。 数据的完整性和安全性是两个不同的概念,但是有一定的联系。前者是为了防止数据库中存在不符合语义的数

    2024年02月02日
    浏览(36)
  • mysql 数据库 期末复习题库

    一、选择题 第 1 章 数据库系统概述 1 . DBS 是(   A )的简写。 A. 数据库系统   B. 数据库管理系统    C. 数据库    D. 操作系统 2.DBMS 是 (  B   ) 的简写 A. 数据库系统   B. 数据库管理系统    C. 数据库    D. 数据 3.DB 、 DBMS 和 DBS 之间的关系是   (  C  ) A. DB 包含 DBMS 和

    2024年02月08日
    浏览(38)
  • 数据库原理与应用期末复习大纲

    ​ 数据库系统(DataBase System,DBS)是采用了数据库技术的计算机系统,一般由 数据库、数据库管理 系统(及相关使用工具)、应用系统、数据库管理员 构成。 ​ 数据库系统是引入了数据库及时的计算机系统,一般由数据库,支持数据库运行的软硬件,数据库管理系统 (及

    2024年02月02日
    浏览(47)
  • 数据库原理及应用期末复习汇总(附某高校期末真题试卷)

    一、选择题 1、数据库系统的基本特征是_________。 A、数据的统一控制 B、数据共享性和统一控制 C、数据共享性、独立性和冗余度小 D、数据共享性和数据独立性 正确答案:C 2、DB、DBMS和DBS三者之间的关系是_________。 A、DBS与DB和DBMS无关 B、DBMS包括DBS和DB C、DB包括DBMS和DBS D、

    2024年02月03日
    浏览(41)
  • 算法设计与分析-期末复习经典例题

    算法设计应满足的目标:正确性,可使用,可读,健壮,高效率,低存储 算法的5个重要特征:有限、确定、可行、输入、输出 通常用 函数的返回值 表示算法能否正确执行,如果某个形参需要将执行结果回传给实参,需要将该形参设计为 引用型参数 算法分析是分析算法 占

    2024年02月03日
    浏览(34)
  • MySQL数据库期末复习--这一篇就够了

    目录 一、前言 二、一些基本概念 1、时态数据库 2、分布式数据库 3、面向对象数据库 4、移动数据库 三、数据库的创建 1、工具 2、基本需求 3、根据上述需求画出E-R图 4、将E-R图转换成关系模式 5、建立数据表 6、每张数据表的结构 四、视图 1、创建视图 2、查看视图  3、更

    2024年02月09日
    浏览(49)
  • 【数据库】MySQL概念性基础知识期末复习

    第一章 3 二维表结构……数据模型—— 关系数据模型 5 描述全部数据整体逻辑结构—— 模式 6 逻辑数据独立性—— 模式变,外模式和应用程序不变 7 物理数据独立性—— 内模式变,外模式和应用程序不变 9 R-(R-S)—— R∩S 10 从两个关系笛卡尔积中选取他们属性间满足一定条

    2024年02月02日
    浏览(106)
  • 数据库设计(三大范式,设计工具)

    1 数据库设计PowerDesigner三大范式 2 命名风格、主键选择、外键、存储过程 3 数据库事务和数据库锁 4 触发器、游标、视图、自定义函数、 5 字段类型、字段可空、统计字段、逻辑删除 1. 数据库设计的重要性 要谈数据库性能—直接和数据库设计挂钩; 如果不合理-----后续的开

    2024年02月15日
    浏览(26)
  • 数据库设计-范式

    范式就是数据库的构建规则,目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),

    2024年02月03日
    浏览(25)
  • 数据库的设计规范:第一范式、第二范式、第三范式、巴斯范式

    目前关系型数据库有六种常见范式,按照范式级别,从低到高分别是: 第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式) 。 数据库的 范式设计越高阶,冗余度就越低 ,同时高阶的范式 一定符合

    2024年02月05日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包