数据库期末复习知识点

news2024/10/7 4:24:59

A卷

1. 选择题(30')

2. 判断范式(10')

判断到第三范式

3. 程序填空(20')

4. 分析填空(15')

5. 写SQL(25')

5'一题

恶性

B卷

1. 单选(30')

2. 填空 (20')

3. 程序填空(20')

4. 写SQL(30')

知识点

第一章

数据库管理系统(DBMS)

 主要功能

  1. 数据定义功能 (DDL, 数据定义语言, create, drop, alter)
  2. 数据操纵功能 (DML, 增删改查)
  3. 数据库的事务管理和运行管理功能 (DCL., 保护功能)
    1. 安全性 (不合法使用)
    2. 完整性 (数据正确, 不符合语义)
    3. 并发控制
    4. 恢复 (冗余存在)
  1. 数据库的建立和维护功能

数据库系统(DBS)

数据库系统的特点

  1. 结构化
  2. 共享性强
  3. 独立性强
    1. 物理独立性 (外层)
    2. 逻辑独立性 (内层)
  1. 数据由数据库管理系统统一管理和控制
    1. 安全性
    2. 完整性
    3. 并发性
    4. 恢复

er模型

概念
  1. 实体 => 客观存在并可相互区别的事物
  2. 属性 => 实体所具有的某一特性
  3. 码 => 唯一标识实体的属性集
ER模型三要素
  1. 实体
  2. 属性
  3. 实体间的联系
联系
  1. 一对一 (1: 1)
  2. 一对多 (1: n)
  3. 多对多 (n: n)
数据模型三要素
  1. 数据结构
  2. 数据操纵
  3. 完整性约束

P24 两级映像, 数据独立性

P27 数据库系统怎么组成

  1. 硬件平台
  2. 软件平台
  3. 人员
    1. 数据库管理员
    2. 系统分析员和数据库设计员
    3. 应用程序员
    4. 最终用户

第二章

P34关系模型

概念

域 => 是一组具有相同数据类型的值的集合

笛卡尔积 => 域上的一种集合运算

第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员

关系 => 只有笛卡尔积的某个真子集才有实际含义

 有三种类型 => 基本关系, 查询结果, 视图

P37性质

列的方向 行的方向

  1. 列是同质的
  2. 不同的列可出自同一个域, 称其中的每一列为一个属性, 不同的属性要给予不同的属性名
  3. 列的顺序无所谓
  1. 任意两个元祖的候选码不能选相同的值
  2. 行的顺序无所谓,
  3. 分量必须取原子值

p41 关系操作操作方式

 关系操作的特点是集合操作方式, 操作的对象和结果都是集合

实体完整性, 参照完整性, 用户定义的完整性

  1. 实体完整性 => 主属性非空
  2. 参照完整性 => 外键
  3. 用户定义的完整性

关系代数

传统集合运算, 并差交, 笛卡尔积, 选择 投影P51'除'不考

第三章 SQL语言

create table 表名
(
    列名1  数据类型  列属性,
    列名2  数据类型  列属性
);

 

    

约束

说明

default

默认值

not null

非空, 不允许为空

auto_increament

自动递增

check

条件检查

unique

唯一键

primary key

主键

foreign key

外键

drop table 表名;


// 改表名
alter table 旧表名
rename to 新表名

// 增加字段
alter table 表名
add 字段名 数据类型

// 删除字段
alter table 表名
drop 字段名

// 修改字段
alter table 表名
change 原字段名 新字段名 新数据类型

// 修改数据类型
alter table 表名
modify 字段名 新数据类型


// 查看当前数据库中的表
show tables;

// 查看某个表对应的建表语句
show create table 表名;

// 查看表结构
describe 表名;
desc 表名;


// 只复制结构
create table 新表名
like 旧表名;

// 同时复制结构和数据
create table 新表名
as (select * from 旧表名)


 

P78 索引 不考

数据

// 增
insert into 表名(列名1, 列名2)
values
(值1_1, 值1_2),
(值2_1, 值2_2);
// 增 - 更改主键
replace into

// 删 - delete
delete from 表名
where 条件;
// 删 - 全部 delete
delete from 表明;
// 删 - 全部 truncate
truncate from 表名;

// 改
update 表名
set 列名1 = 值1,
    列名2 = 值2;


delete from s
where sname in ('小明', '小王');


 

数据查询
select 列名
from 表名
where 条件
group by 列名
having 条件
order by 列名
limit n;


// like 
where 列名 like '%str%'
where 列名 like '\%str%'
where 列名 like '_str_' 
where 列名 like '\_str_'


// in,  not in
select name, price
from fruit
where season = '夏' and price in (
    select price from fruit where season = '秋'
);

// all
select name, price
from fruit
where season = '夏' and price > all (
  select price from fruit where season = '秋'
);

// any, some
select name, price
from fruit
where season = '夏' and price = any (
  select price from fruit where season = '秋'
);


 

P95 外连接 不考P103 带有exists的子查询 没刻意考

内连接
select 列名
from 表A
inner join 表B
on 表A.列名 = 表B.列名

select from staff.id, staff.name, market.month, moarket.sales
from staff
innner join market
on staff.id = market.id;


 

 集合查询
// 并 - 去重
select 列名 from 表A
union
select 列名 from 表B;
// 并 - 不去重
select 列名 from 表A
union all
select 列名 from 表B;

// 交
select distinct 列名
from 表A
where 列名 IN (select 列名 from 表B);

// 差集
select 列名 from 表A where 列名 not in (select 列名 from 表B);
SELECT * FROM Student WHERE Sdept ='CS' UNION
SELECT * FROM Student WHERE Sage <=19


SELECT Sno FROM SC  WHERE Cno = '1'
AND Sno IN (
SELECT Sno FROM SC WHERE Cno = '2')

SELECT Sno FROM SC SCX WHERE Cno = '1'
AND EXISTS (SELECT Sno FROM SC SCY WHERE Cno = '2'
            AND SCX.Sno = SCY.Sno)

笛卡尔积连接
select 列名
from 表名1, 表名2;


 

自连接
select 列名
from 表名1 as 别名1, 表名1 as 别名2;


select s1.name, s1.age, count(*) as 排名
from staff as s1, staff as s2
where s1.age < s2.age
group by s1.id
order by 排名;


 

P107 派生表 不考

视图 必考
// 增
create view 视图名
as 查询语句;

// 删
drop view if exists 视图名1, 视图名2;

// 改 -  alterview
alter view 视图名
as 查询语句;

// 改 -  create or replace view -- 不管原先存不存在, 都能改掉
create or replace view 视图名
as 查询语句

// 查
describe 视图名;
show table status like '视图名'; // like 接字符串, 所以需要单引号
show create view 视图名;


// 增
insert into 视图名
values();

// 删
delete from 表名
where 列名 = '';

// 改
update 视图名
set 列名 = 新值;

// 查
select * from 表名;

空值

定义: 空值是一个很特殊的值, 含有不确定性

4 安全性

安全性的定义

保护数据库以防止不合法使用所造成的数据泄露, 更改或破坏

 安全性控制的方法

// 增
grant 权限名1, 权限名2
on '数据库名.表名'
to '用户名' @ '主机名'
with (grant_option)

// 删
revoke 权限名1, 权限名2
on '数据库名.表名'
from '用户名' @ '主机名'

// 查
show grants for '用户名' @ '主机名';

  1. 用户身份鉴别
  2. 多层存取控制
  3. 审计
  4. 视图
  5. 数据加密

存取控制


 

参数

说明

grant_option

被授予的用户可以将这些权限授予别的用户

create view CS_s
as select * from s
where smajor = '计算机'
with cheak option;

grant select ON CS_s to 王平;
grant all previleges on CS_s to 张明


 

 审计-存取日志

审计把用户对数据库的所有操作自动记录下来放入审计日志

第5章 数据库完整性

 完整性定义

数据库数据的正确性和和相容性

第6章 关系数据库

概念

主属性

一个属性只要在任何一个候选码中出现过,这个属性就是主属性。

非主属性

与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。

实体

现实世界中客观存在并可以被区别的事物。比如一个学生一本书一门课等等。值得强调的是这里所说的事物不仅仅是看得见摸得着的东西,它也可以是虚拟的,比如说老师与学校的关系

属性

教科书上解释为:实体所具有的某一特性,由此可见,属性一开始是个逻辑概念,比如说,性别的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是表的一列

元组

表中的一行就是一个元组

分量

元组的某个属性值。在一个关系数据库中,它是一个操作原子,即关系数据库在做任何操作的时候,属性是不可分的。否则就不是关系数据库了

表中可以唯一确定一个元组的某个属性(或者属性组), 如果这样的码有不止一个, 那么大家都叫候选码, 我们从候选码中挑一个出来做老大, 它就叫主码

函数依赖

  1. 完全函数依赖

两个男人A和B;一个女人L男人A和B一起能满足女人L的需求而男人A或B任意一个人都不能满足女人L的需求,要两个人一起才能满足叫做女人L完全依赖于两个男人A和B男人A和B共同一起成为主属性,女人L当成非主属性

  1. 部分函数依赖

两个男人A和B;一个女人L男人A和B一起能满足女人L的需求,但是男人A或B其中一个人就能满足女人L的需求,叫做女人L部分依赖于两个男人A和B

  1. 传递函数依赖 - 定义6.3

在关系R(学号, 宿舍, 费用)中, (学号) -> (宿舍), 宿舍 != 学号,(宿舍) -> (费用), 费用 != 宿舍, 所以符合传递函数的要求

范式 NF

第二范式

若R是第一范式 + 每一个非主属性完全函数依赖于任何一个候选码

消除非主属性对候选码的部分依赖

第三范式

每一个非主属性既不传递依赖于码, 也不部分依赖于码

全是主属性一定满足第三范式

 BC范式 (A卷没出现BC范式选择题, B有一个选择)

属性不传递依赖于候选键

每一个决定因素都包含码

求候选码

算法6.1 求属性集的闭包 看ppt

由公式推得属性闭包

现有的元素组合在一起,推出新元素

候选码看视频!!!!

     External Player - 哔哩哔哩嵌入式外链播放器   

第8章 数据库编程

存储过程

// 增 - 无参数
create procedure 存储过程名()
begin

end;
// 增 - 带参数 默认都是in
create procedure 存储过程名(a float, b float)
begin
  select name, price
  from fruit
  where price between a and b;
end;
// 增 - out参数
create procedure test(out n int)
begin
  select n;
  set n = 20;
  select n;
end;

set @b = 10;
call test(@b);
// 以上输出结果   null  20


// 增 - inout参数
create procedure test(inout n int)
begin
  select n;
  set n = 20;
  select n;
end;

set @b = 10;
call test(@b);
// 以上输出结果 10  20





// 删
drop procedure 存储过程名;

// 改 - 简单了解, 只能修改存储过程的特征
alter procedure 存储过程名()
begin

end;

// 查
show procedure status like '存储过程名';
show create procedure 存储过程名;
DROP PROCEDURE IF EXISTS ps;

CREATE PROCEDURE ps(IN sid CHAR(12), OUT avgs DECIMAL)
BEGIN
SELECT AVG(score)
INTO avgs
FROM sc
WHERE sc.snum = sid
END;

--
CALL ps('202205010229', @s);
SELECT @s;


 

触发器

// 增
CREATE trigger triggerName
after/before insert/update/delete on 表明
for each row #这句话在Mysql固定
begin
    sql语句;
end;

// 删
drop trigger 触发器名;

// 查
show triggers;


 

第11章 恢复技术

事务的定义

用户定义的一个数据库操作序列, 这些操作要么全做, 要么不做, 是一个不可分割的单位

事务四大特性

原子, 一致, 隔离, 持续

故障种类

恢复技术

第12章 并发控制

并发的概念

  1. 事务是并发控制的基本单位
  2. 保证事务的隔离性和一致性

三种不一致现象

  1. 丢失修改

两个事务读同一个数据, 各自修改. T2提交的结果会破坏T1提交的结果

  1. 脏读

T1修改某数据, 写回磁盘, T2读取这一数据, T1因某种原因被撤销, T1恢复原值, T2读到的数据与数据库不一致

  1. 不可重复读

T1读取数据后, T2执行更新, T1再次读取时, 得到与前一次不一样的值

P337 封锁

三级封锁协议

死锁怎么产生, 诊断与解除

1.1. 产生的原因
  1. 竞争资源
  2. 进程间推进顺序非法
1.2. 诊断与解除

选择一个处理思索代价最小的事务, 将其撤销, 释放此事务持有的所有锁

  1. 超时法

如果一个事物的等待时间超过了规定的时限, 就认为发生了死锁

  1. 事务等待图法

若有向图中存在回路, 则发生了死锁

DROP TABLE IF EXISTS s;
CREATE TABLE s
(
  snumber INT,
  snum CHAR(12) NOT NULL,
  sname VARCHAR(50),
  enterdate DATETIME DEFAULT now(),
  ssex ENUM('男', '女'),
  score DECIMAL(4, 2),
  -- ssex CHAR(1) CHECK(ssex = '男' or ssex = '女'),
  PRIMARY KEY(snum, sname)
  -- FOREIGN KEY(sname) references sch(sname)
);

sql

SQL语句:一定要加关键字 TABLE

AUTO_INCREMENT 只能作为主键使用


 

DECIMAL(4, 2) (精度, 标度) 精度总位数, 标度小数位数

CHECK语句:

ssex CHAR(1) CHECK(ssex = '男' or ssex = '女'),
 

修改表结构

基本查询语句

SELECT *
FROM s
LIMIT 2500, 10;

 

从第2501个开始 一共10个

/不用看

分组,并对结果进行汇总:

select ssex, COUNT(snum)

from s

group by ssex

WITH ROLLUP;

SELECT ttitle, GROUP_CONCAT(tname)

FROM t

GROUP BY ttitle;

/

SELECT sc.snum, s.sname, cnum, score
FROM sc, s
WHERE sc.snum = s.snum;


SELECT s2.sname, s2.ssex
FROM s s1, s s2 
WHERE s1.sname = '沈羿' AND s1.dnum = s2.dnum;


SELECT dname, COUNT(*)
from d, s
WHERE d.dnum = s.dnum
GROUP BY s.dnum
ORDER BY COUNT(*) DESC


SELECT MAX(tsalary), MIN(tsalary), AVG(tsalary)
FROM t, coll
WHERE tsex = '男' AND collname = '信息工程学院' AND coll.collnum = t.collnum
GROUP BY ttitle
HAVING AVG(tsalary) > 7000
ORDER BY AVG(tsalary) DESC;


SELECT sname, snum
FROM s
WHERE snum IN(SELECT snum FROM sc WHERE cnum = 'B3503021');


SELECT snum, sname
FROM s
WHERE EXISTS(SELECT *
from sc
WHERE sc.snum = s.snum AND cnum = 'B3503021');


SELECT snum, sname
FROM s
WHERE NOT EXISTS(select *
FROM sc
WHERE sc.snum = s.snum AND cnum = 'B3503021');


DECLARE num int default 0;
SET num = 10;


SELECT AVG(score) INTO @ave
FROM sc;
SET @ave = 10;


 

变量都是使用SET关键词重新赋值的

IF、ELSE IF语句后面要加THEN

语句说明完要加最后IF语句结束也要加ENDIF;

DROP PROCEDURE IF EXISTS blesoo;
CREATE PROCEDURE blesoo()
BEGIN
DECLARE ccount INT DEFAULT(0);
DECLARE ave INT DEFAULT(0);
SELECT COUNT(*)
INTO ccount
from sc;
SELECT AVG(score)
INTO ave
FROM sc;
IF(ave > ccount) THEN
SELECT ave;
ELSE
SELECT ccount;
END IF;
END;

CALL blesoo();


 

CASE语句 里面用

CASE

WHEN..THEN..

ELSE...

END CASE;

LOOP语句:

循环名:LOOP
 

ITERATE 循环名;跳过本次循环

触发器
CREATE TRIGGER BLESOO
AFTER INSERT
ON sc
FOR EACH ROW
BEGIN
IF(SELECT COUNT(*) FROM sc WHERE sc.snum = new.snum) > 5 THEN
SIGNAL SQLSTATE'45000'SET MESSAGE_TEXT = '你的选课已经超过5门了,不能再选了!';
END IF;
END;


 

修改数据只能BEFORE

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1857081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二证券股市知识:小白炒股是做长线好还是短线好?

关于小白来说&#xff0c;挑选炒长线比炒短线要好一些&#xff0c;其间原因如下&#xff1a; ​ 1、对出资者技能要求相对较低 短线出资&#xff0c;需要出资者对个股的走势掌握比较精确&#xff0c;才干通过高抛低吸赚取必定的差价&#xff0c;否则很容易让散户卖飞个股&am…

快速记忆成百上千个账号密码

在日常生活中&#xff0c;我们不仅需要记忆6位数字的银行卡密码&#xff0c;还需要记忆各式各样网站和应用的账号密码&#xff0c;可能我们自己也不记得曾经注册过多少个账号。账号和密码如此繁多&#xff0c;管理这些账号和密码&#xff0c;也是一个让人头疼的问题。 最原始的…

前两天上线了一个小功能,差点把我们项目搞崩溃

项目场景&#xff1a; 最近一直在迭代公司的系统&#xff0c;业务提出需要增加一个消息通知的功能&#xff0c;对接完需求之后&#xff0c;我们就 开始热火朝天的编码、测试、上线&#xff0c; 就是右上角这个小图标&#xff0c;为了提升用户体验&#xff0c;我们采用每隔20S…

有效利用MRP能为中小企业带来什么?

在离散制造企业&#xff0c;主流的生产模式主要为面向订单生产和面向库存生产&#xff08;又称为预测生产&#xff09;&#xff0c;在中小企业中&#xff0c;一般为面向订单生产&#xff0c;也有部分面向库存和面向订单混合的生产方式&#xff08;以面向订单为主&#xff0c;面…

windows系统docker镜像导出

docker镜像导入导出(windows)_windowdocker下载镜像导出-CSDN博客https://blog.csdn.net/qq_22211217/article/details/93936363

网页设计软件Bootstrap Studio6.7.1

Bootstrap Studio是一个适用于Windows的程序,允许您使用流行的fre***orca Bootstrap创建和原型网站。您可以将现成的组件拖动到工作区并直观地自定义它们。该程序生成干净和语义的PDF、CSS和JS代码,所有Web浏览器都支持这些代码。 Bootstrap Studio有一个漂亮而强大的界面,它…

[个人感悟] MySQL应该考察哪些问题?

前言 数据存储一直是软件开发中必不可少的一环, 从早期的文件存储txt, Excel, Doc, Access, 以及关系数据库时代的MySQL,SQL Server, Oracle, DB2, 乃至最近的大数据时代f非关系型数据库:Hadoop, HBase, MongoDB. 此外还有顺序型数据库InfluxDB, 图数据库Neo4J, 分布式数据库T…

linux系统指令查漏补缺

目录 一.磁盘操作 二.lvm 三.top 4.nohup 一.磁盘操作 1. lsblk -f 显示磁盘和它的相关内容 2.tuen2fs -c -1 /dev/sdx 关闭某个磁盘的自检 3.修改配置&#xff0c;使文件系统不要开机自检 cat /etc/fstab 全0表示开机不自检 全1表示开机自检 同时在这个文件中可添加…

计算机网络面试HTTP篇二

HTTP/1.1 如何优化&#xff1f; 问你一句&#xff1a;「你知道 HTTP/1.1 该如何优化吗&#xff1f;」 我们可以从下面这三种优化思路来优化 HTTP/1.1 协议&#xff1a; 尽量避免发送 HTTP 请求&#xff1b;在需要发送 HTTP 请求时&#xff0c;考虑如何减少请求次数&#xff…

Nature推荐的三种ChatGPT论文写作指令

1. 润色学术论文 ChatGPT学术润色指令&#xff1a; “I’m writing a paper on [topic]for a leading [discipline] academic journal. WhatItried to say in the following section is [specific point]. Please rephrase itfor clarity, coherence and conciseness, ensuri…

C语言---数据结构(1)--时间复杂和空间复杂度计算

1.什么是时间复杂度和空间复杂度 1.1算法效率 算法效率分为时间效率和空间效率 时间效率被称为时间复杂度&#xff0c;而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度&#xff0c;而空间复杂度主要衡量一个算法所需要的额外空间&#xff0c;在计算…

麦肯锡:量子传感究竟在何处可以发光发热

量子传感技术已经提供价值&#xff0c;潜在的应用案例可以塑造多个行业。有四种核心技术具有应用前景&#xff1a;固态自旋、中性原子、超导电路和离子阱&#xff0c;它们具有在广泛的物理属性上的传感能力&#xff0c;包括磁场、电场、旋转、温度、重力、时间和压力。选择哪种…

spring cloud Alibaba 整合 seata AT模式

准备工作&#xff1a; 1、MySQL正常安装并启动 2、nacos正常部署并启动 3、下载 Seata-1.4.2 源码包和 seata-server-1.4.2 服务端源码包&#xff08;版本根据自己的需要选择&#xff0c;我这里选择1.4.2&#xff09; 下载地址&#xff1a; Seata&#xff1a;https://gite…

区间问题——905. 区间选点

目录 区间问题 定义 运用情况 注意事项 解题思路 AcWing 905. 区间选点 题目描述 运行代码 代码思路 改进思路 其它代码 代码思路 区间问题 定义 区间通常是指一个连续的范围&#xff0c;可以用数轴上的一段来表示。 运用情况 在数学中广泛用于表示变量的取值范…

【初阶数据结构】深入解析栈:探索底层逻辑

&#x1f525;引言 本篇将深入解析栈:探索底层逻辑&#xff0c;理解底层是如何实现并了解该接口实现的优缺点&#xff0c;以便于我们在编写程序灵活地使用该数据结构。 &#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1…

Paimon Trino Presto的关系 分布式查询引擎

Paimon支持的引擎兼容性矩阵&#xff1a; Trino 是 Presto 同项目的不同版本&#xff0c;是原Faceboo Presto创始人团队核心开发和维护人员分离出来后开发和维护的分支&#xff0c;Trino基于Presto&#xff0c;目前 Trino 和 Presto 都仍在继续开发和维护。 Trino 生态系统-客…

YOLOv8改进 | SPPF | 具有多尺度带孔卷积层的ASPP【CVPR2018】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有40篇内容&#xff0c;内含各种Head检测头、损失函数Loss、…

基于SSM+Jsp的校园餐厅管理

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

【C语言】函数执行背后的秘密:函数栈帧的创建和销毁超详解

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 目录 1. 什么是函数栈帧 2. 理解函数栈帧能解决什么问题呢&#xff1f; 3. 函数栈帧的创建和销毁解析 3.1 什么是栈&#xff1f; 3.2 认识相关寄存器和汇编指…

感恩父爱 健康同行 宁夏康源父亲节特惠普查

父亲&#xff0c;是那道坚实的屏障&#xff0c;为孩子们挡风遮雨。父亲&#xff0c;是那颗明亮的灯塔&#xff0c;为孩子们指明前进的方向。然而岁月无情&#xff0c;随着年龄的增长&#xff0c;曾经为我们遮风挡雨的父亲如今也逐渐进入了各种疾病的高发期。感恩父爱&#xff0…