当前位置:   article > 正文

数据库期末复习之例题汇总_大学数据库典型例题

大学数据库典型例题

文章目录

数据库期末复习之例题汇总

第1讲 绪论

数据 - P11

image-20210609152750910 image-20210609152811585

层次模型 - P69

image-20210609154221627 image-20210609154232560

树形结构,双亲唯一,一对多

网状结构 - P81

image-20210609154321224 image-20210609154331309

可以多对多

模式与实例 - P101

image-20210609154558724

实例是模式的一个具体值

第2讲 关系数据库

笛卡尔积 – P13

image-20210609144434529 image-20210609144444870 image-20210609144457840

其中,每一个元素称为元组,如(张清玖,计算机专业,李勇)

元组中每一个值叫分量,如张清玖,计算机专业,李勇

基数计算方法则是每个域中值的个数的乘积

关系模式 - P29

image-20210609150947821

R(U, D, DOM, F)

R:关系名

U:组成该关系的属性名集合

D:U中属性所来自的域

DOM:属性向域的映像集合

F:属性间数据的依赖关系的集合

实体完整性 - P42

image-20210609152154333

关系间的引用 例2.1 - P46

image-20210609152413894

关系间的引用 例2.2 - P47

image-20210609152439899

关系间的引用 例2.3 - P48

image-20210609152510044

外码 例2.1 - P50

image-20210609155348366

F是R的外码

  • F是基本关系R的一个或一组属性,但不是关系R的码
  • F与基本关系S的主码Ks相对应

R:参照关系

S:被参照关系 / 目标关系

通俗的讲外码就是只是参照关系里的普通属性(非码),但是却和被参照关系里的主码对应

外码 例2.2 - P51

image-20210609161228627

外码 例2.3 - P52

image-20210609161803781

参照完整性规则 延申 - P55

image-20210609162408153 image-20210609162450927 image-20210609162503146

对应参照完整性规则2.2

外码要么取空值要么取等于S中某个元组的主码值

用户定义的完整性 - P60

image-20210609162757230

个人理解是满足语义要求即可

集合运算 并(Union) - P66

image-20210609163008824

R ∪ S = { t ∣ t ∈ R ∨ t ∈ S } R \cup S = \{ t|t \in R \vee t \in S \} RS={ttRtS}

集合运算 差(Difference) - P68

image-20210609164629078

R − S = { t ∣ t ∈ ∧ t ∉ S } R-S = \{ t | t \in \wedge t \notin S \} RS={ttt/S}

集合运算 交(Intersection) - P70

image-20210609165204554

R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R \cap S = \{ t|t \in R \wedge t \in S \} RS={ttRtS}

关系运算 笛卡尔积 - P72

image-20210609165402141

R × S = { t r ⌢ t s ∣ t r ∈ R ∧ t s ∈ S } R \times S= \{ t_r\frown t_s | t_r \in R \wedge t_s \in S \} R×S={trtstrRtsS}

象集 - P78

image-20210610130407528

Z x = { t [ Z ] ∣ t ∈ R , t [ X ] = x } Z_x = \{ t[Z] | t\in R, t[X]=x \} Zx={t[Z]tR,t[X]=x}

表示R中属性组X上值为x的诸元组再Z上分量的集合

选择 例2.4 例2.5 - P85

image-20210610131210176 image-20210610130807171 image-20210610131235485

σ F ( R ) = { t ∣ t ∈ R ∧ F ( t ) = ′ 真 ′ } σ_F(R) = \{ t|t \in R ∧ F(t)= '真' \} σF(R)={ttRF(t)=}

投影 例2.6 例2.7 - P88

image-20210610131429335 image-20210610131442126

π A ( R ) = { t [ A ] ∣ t ∈ R } π_A(R) = \{ t[A] | t \in R \} πA(R)={t[A]tR}

A:R中的属性列

连接 例2.8 - P94

image-20210610132133100 image-20210610132143074 image-20210610132154177 image-20210610132211646

看图,不解释

外连接 例2.8延申 - P100

image-20210610132749572 image-20210610132800768

悬浮元组:在自然连接中未被连接的元组

外连接:吧悬浮元组保存在结果关系中,在其他属性上填空值(NULL)

左外连接:只保留左边关系R中的悬浮元组

由外连接:只保留右边关系S中的悬浮元组

除运算 例2.9 - P104

image-20210610134243588 image-20210610140315023

R ÷ S = { t r [ X ] ∣ t r ∈ R ∧ π Y ( S ) ⊆ Y x } R \div S= \{ t_r[X]|t_r \in R∧π_Y(S) \subseteq Y_x \} R÷S={tr[X]trRπY(S)Yx}

Y x Y_x Yx:X在R中的象集, x = t r [ X ] x=t_r[X] x=tr[X]

a1的象集{(b1,c2), (b2,c3), (b2,c1)}

a2的象集{(b3,c7), (b2,c3)}

a3的象集{(b4,c6)}

a4的象集{(b6,c6)}

S在(B,C)上的投影{(b1,c2), (b2,c1), (b2,c3)}

只有a1的象集包含S的投影集,故结果为a1

综合举例 - P106

image-20210610140643615 image-20210610140943862 image-20210610140956913

第3讲 关系数据库标准语言 SQL

定义模式 例3.1 例3.2 - P28

image-20210610144452349

定义模式实际上是定义一个命名空间,在其中可以定义数据库对象(基本表、试图、索引等)

定义模式和表 例3.3 - P30

image-20210610144654167

删除模式 例3.4 - P32

image-20210610144818925

CASCADE(级联):删除模式的同时删除模式中所有数据库对象

RESTRICT(限制):如果模式中定义了下属的数据库对象,则拒绝执行删除;只有当没有下属对象时才能删除。

定义基本表 例3.5-3.7 - P35

image-20210610145049566 image-20210610145115775 image-20210610145129281

修改基本表 例3.8-3.10 - P45

image-20210610145444957 image-20210610145501623

ADD:增加新列、新列级完整性约束条件和新表级完整性约束条件

DROP COLUMN:用于删除表中的列

DROP CONSTRAINT:用于删除指定的完整性约束条件

ALTER COLUMN:用于修改原有的列定义

删除基本表 例3.11-3.12 P48

image-20210610145843721 image-20210610145900793 image-20210610145927223

RESTRICT:存在依赖该表的对象,则不能删除

CASCADE:删除表的同时,删除相关依赖对象

建立索引 例3.13 - P56

image-20210610150210250

修改索引 例3.14 - P57

image-20210610150243994

删除索引 例3.15 - P68

image-20210610150312612

查询表中若干列 例3.16-3.17 - P66

image-20210610150426543

查询全部 例3.18 - P67

image-20210610150455702

查询计算值 例3.19-3.20 - P68

image-20210610150609426 image-20210610150635643 image-20210610150712328

查询-消除重复 例3.21 - P72

image-20210610150911441 image-20210610150923798

查询-比较大小 例3.22-3.24 - P75

image-20210610151102408

查询-范围 例3.25-3.26 - P76

image-20210610151138087

查询-确定集合 例3.27-3.28 - P77

image-20210610151245863

查询-字符匹配 例3.29-3.35 - P79

image-20210610151331117 image-20210610151408017 image-20210610151419944 image-20210610151431445

查询-涉及空值 例3.37 - P83

image-20210610151532863

这里的is不能用**=**代替

查询-多重条件 例3.38 - P84

image-20210610151647274 image-20210610151700949

and优先级高于or

查询-排序 例3.39-3.40 - P88

image-20210610151913069

升序:ASC

降序:DESC

缺省为升序

查询-聚集函数 例3.41-3.45 - P91

image-20210610152251464 image-20210610152342014

查询-分组 例3.46-3.48 - P95

image-20210610152626100 image-20210610152638562 image-20210610152653346

GROUP BY 分组

HAVING短语与WHERE子句作用对象不同

  • WHERE作用于基本表或试图
  • HAVING短语作用组

GROUP BY的作用感觉PPT上写的有点模糊,可以看这里:https://www.cnblogs.com/rainman/archive/2013/05/01/3053703.html

查询-等值连接 例3.49 - P102

image-20210610153910798 image-20210610153923171

查询-自然连接 例3.50 - P108

image-20210610155137783

查询-非等值连接 例3.51 - P109

image-20210610155341671

查询-自身连接 例3.52 - P111

image-20210610155449770 image-20210610155501990 image-20210610155511761

查询-外连接 例3.53 - P116

image-20210610155934761 image-20210610160002452

外连接会将主题表中不满足连接条件的元组一并输出而普通连接不会

查询-多表连接 例3.54 - P119

image-20210610160216636

查询-嵌套-IN 例3.55-3.56 - P126

image-20210610160533371 image-20210610160549105 image-20210610160603466 image-20210610160628102 image-20210610160705016 image-20210610160716105

查询-嵌套-比较 例3.57 - P133

image-20210610160953132 image-20210610161006226 image-20210610161103955 image-20210610161113860 image-20210610161125055

查询-嵌套-ALL/ANY 例3.58-3.59 - P141

image-20210610161334294 image-20210610161424737 image-20210610161527402 image-20210610161646269 image-20210610161708828
image-20210610161301499 image-20210610161309094 image-20210610161632521

查询-嵌套-EXISTS(难点) 例3.60-3.63 - P150

image-20210610161813355 image-20210610161826337 image-20210610161901111 image-20210610161911425

3.62的思路可以先看3.63

下面两个式子要记住:

$(\forall ) P \equiv \neg ( \exist x (\neg P) ) $

$p \rightarrow q \equiv \neg p \vee q $

image-20210610162858229 image-20210610162914439 image-20210610163008586

查询-集合操作 例3.64-3.68 - P161

image-20210610164436424 image-20210610164447433 image-20210610164457471 image-20210610164506980 image-20210610164519597 image-20210610164533397 image-20210610164542211 image-20210610164550130

并:UNION

交:INTERSECT

差:EXCEPT

查询-派生表 例3.57+3.60 - P170

image-20210610165544786 image-20210610165621849

在FROM里面加个子查询并将查询结果作为一个新表

插入元组 例3.69-3.71 - P184

image-20210610170511981 image-20210610170542501 image-20210610170553808

插入子查询结果 例3.72 - P188

image-20210610170705245

修改一个元组的值 例3.73 - P193

image-20210610170800426

修改多个元组的值 例3.74 - P194

image-20210610170833700

带子查询的修改 例3.75 - P195

image-20210610170959025

删除一个元组的值 例3.76 - P200

image-20210610171035966

删除多个元组的值 例3.77 - P201

image-20210610171102522

带子查询的删除 例3.78 - P202

image-20210610171139794

空值的产生 例3.79-3.80 - P205

image-20210610171302955 image-20210610171311568

空值的判断 例3.81 - P207

image-20210610171400469

NOT NULL 和 UNIQUE 和 码属性 不能取空值

空值的运算 例3.82-3.83 - P211

image-20210610171735368 image-20210610171749546

空值算数运算为空值 空值比较运算为UNKNOWN

建立试图 例3.84-3.90 - P221

image-20210610171906620 image-20210610171916356 image-20210610172320477 image-20210610172331937 image-20210610172410510 image-20210610172421230 image-20210610172440398

删除视图 例3.91 - P230

image-20210610172551011

如果一个试图上还导出了其他试图,使用CASCADE级联删除

查询视图 例3.92-3.94 - P233

image-20210610172736570

试图消解法

  • 进行有效性检查
  • 转换成等价的对基本表的查询
  • 执行修正后的查询
image-20210610172904372 image-20210610172920139 image-20210610173003816 image-20210610173020243

更新视图 例3.95-3.97 - P239

image-20210610173135476 image-20210610173150766 image-20210610173631356
image-20210610173915161 image-20210610173950606 image-20210610174000158

第4讲 数据库安全性

授权 例4.1-4.7 - P50

image-20210611163232717 image-20210611163359074 image-20210611163539070 image-20210611163607929 image-20210611163619423 image-20210611163810747

image-20210611165028637image-20210611165045407

WITH GRANT OPTION 可传播权限,如果没有这句话默认不可传播

回收权限 例4.8 - P58

image-20210611164904260 image-20210611164922791 image-20210611164958024 image-20210611165115945

创建用户 - P63

image-20210611170155567 image-20210611170205540

数据库角色 例4.11-4.13 - P72

image-20210611170352326 image-20210611170430356 image-20210611170642903 image-20210611170735593

数据库角色:被命名的一组与数据库操作相关的权限

  • 角色是权限的集合
  • 可以为一组具有相同权限的用户创建一个角色
  • 简化授权过程

视图机制 例4.14 - P86

image-20210611172010304 image-20210611172040804

审计 例4.15-4.16 - P95

image-20210611172811193

第5讲 数据库完整性

实体完整性定义 例5.1-5.2 - P12

image-20210611192052690 image-20210611193437796 image-20210611193500946

两个字段作为联合主键,这两个变量可以有重复,但是不能两个同时重复。

比如说我们拿id和name作为联合主键,name可以重复,id也可以重复,但是不能有两个元组同时拥有一样的id和name。

参照完整性 例5.3 - P23

image-20210611200946079

破坏参照完整性

  • SC表中增加一个元组,该元组的Sno值在Student表中找不到一个元组的Sno值与之对应
  • 修改SC表中一个元组,修改后找不到元组与之对应
  • 从Student表中删除一个元组,删除后SC表中元组Sno值找不到对应
  • 修改Student表中一个元组,修改后SC表中元组Sno值找不到对应

参照完整性违约处理 例5.4 - P30

image-20210611203125563 image-20210611203256962

处理方式

  • NO ACTION : 拒绝执行
  • CASCADE : 级联操作
  • SET_NULL : 设置为空值

属性上约束条件的定义 例5.5-5.8 - P37

image-20210611203620086 image-20210611203632055 image-20210611203640844 image-20210611203651066

定义属性上的约束条件

  • NOT NULL : 列值非空
  • UNIQUE : 列值唯一
  • CHECK : 检查列值是否满足一个条件表达式

元组上约束条件的定义 例5.9 - P44

image-20210611203801158

元组级的约束可设置不同属性之间的取值的相互约束条件

不满足条件拒绝执行

完整性约束命名子句 例5.10-5.13 - P48

image-20210611204535076 image-20210611204943632 image-20210611205519640 image-20210611205532747

断言 例5.18-5.20 - P54

image-20210611205741291 image-20210611205750160 image-20210611205758417

删除断言:DROP ASSERTION <断言名>;

定义触发器 例5.21-5.23 - P67

image-20210611210522842 image-20210611210554661 image-20210611210617544

语法样式

  • image-20210611211056613

触发事件

  • INSERT, DELETE, UPDATE
  • AFTER / BEFORE 表示触发时间(在事件发生前后)

触发器类型

  • FOR EACH ROW : 行级触发器
  • FOR EACH STATEMENT : 语句级触发器

触发条件

  • 缺省WHEN,则触发器激活后立即执行

激活触发器

  • 事件触发
  • 多个触发器
    • 执行该表上BEFORE触发器
    • 激活触发器的SQL语句
    • 执行该表上的AFTER触发器

删除触发器

  • DROP TRIGGER <触发器名> ON <表名>;

第6讲 关系数据理论

问题的提出 例6.1 - P12

image-20210611212509565 image-20210611212519195 image-20210611212539597

Student<U,F>中存在的问题

U:属性,F:属性上的一组数据依赖

  • 数据冗余:系主任名字重复出现
  • 更新异常:更换系主任要改好多次
  • 插入异常:一个系刚成立无学生,则无法存入系主任信息
  • 删除异常:删除所有学生的信息时,会把系和系主任一起删了

解决:

image-20210611213020821

函数依赖 - P25

image-20210611213529875 image-20210611214333294

这里有错误,应该是圈出两个S1

image-20210611214358836

函数依赖:X→Y(X确定Y / Y依赖于X):不可能存在一个元组,X上值相等而Y上值不等

完全函数依赖与部分函数依赖 - P32

image-20210611215709192

F:完全函数依赖

  • X里面任何一个真子集都不能确定Y

P:部分函数依赖

  • X中存在一个真子集能确定Y

平凡的函数依赖

  • Y是X的一个子集

非平凡的函数依赖

  • Y不是X的一个子集

传递函数依赖 - P33

image-20210611220335019

码 例6.2-6.3 - P37

image-20210611221611635

候选码(Candidate Key):K为R<U,F>中的属性或属性组合且U完全依赖于K,则K为R的一个候选码

超码(Superkey):U部分依赖于K,则K为超码

主码(Primary key):若关系模式R有多个候选码,则选一个为主码

主属性(Prime attribute):包含在任何一个候选码中的属性

非主属性(Nonprime attribute)或非码属性(Non-key attribute):不包含在任何码中的属性

全码(All-key):整个属性组是码

外码 - P38

image-20210611222306609

2NF 例6.4 - P43

image-20210612095224567 image-20210612095320183 image-20210612100210139 image-20210612100221194 image-20210612100230141

2NF要求每个主属性都必须完全依赖于任何一个候选码

3NF - P49

image-20210612100438736

3NF要求无传递依赖

BCNF 例6.5-6.8 - P53

image-20210612101454519 image-20210612101548980 image-20210612101559111 image-20210612102203870

BCNF:每一个决定属性集都包含候选码

多值依赖 例6.9 - P60

image-20210612102549006 image-20210612102600056 image-20210612102643606 image-20210612102704934

缺点:

  • 数据冗余度大
  • 增加操作复杂性
  • 删除操作复杂
  • 修改操作复杂

原因:存在多值依赖

image-20210612103313496

不得不说,数据库在定义说明上有一手的,属实难理解。

个人理解:

  • 就拿上面这个例子来说,我们可以取很多个(C,B),C相同,B不同,此时T都有一组值与之对应。

  • 说白了就是对于(X,Y,Z)一个X对应多个Y,然后一组(X,Z)对应多个Y。

  • 如果实在不理解就采用最简单粗暴的方式,X→→Y中一个X对应多个Y

image-20210612104138506 image-20210612104242619 image-20210612104252097

补充:多值依赖的性质 P74

image-20210612105449725

多值依赖于函数依赖区别:

XY为W的子集,W为U的子集

  • X→→Y 在U上成立,则W上一定成立
  • X→→Y 在W上成立,在U上未必成立
  • 这个实际上就是大范围推小范围

Y‘为Y的真子集

  • X→Y 则 X→Y’

  • X→→Y 不能断言 X→→Y’

4NF - P82

image-20210612110127640

第7讲 数据库设计

E-R模型 - P60

image-20210612141150111 image-20210612141041833 image-20210612141208751 image-20210612141228742 image-20210612141346746 image-20210612141402744 image-20210612141417239 image-20210612141427404 image-20210612141440093

image-20210612141449874image-20210612141457997

image-20210612142950262 image-20210612141513672

为啥这里的一个联系名用的是仓库

概念结构涉及 例1-3 - P73

image-20210612141720635 image-20210612141749161 image-20210612141808673

概念结构设计 例7.1 - P76

image-20210612143139484 image-20210612143228173

image-20210612143238004image-20210612143248039

image-20210612143320828

ER图-合并 - P87

image-20210612144759281

ER图-消除冗余 - P89

image-20210612144946194

ER图-视图集成

image-20210612152729159 image-20210612153537487 image-20210612153758747

ER图转换关系模型 - P107

image-20210612155103019 image-20210612155110298

聚簇存取方法 - P141

image-20210612161447403

数据存放位置 - P150

image-20210612161908071

第8讲 数据库编程

数据库连接+游标 例8.1 - P26

image-20210612165744841

image-20210612165757458image-20210612165805916

image-20210612165817877 image-20210612165828554

建立数据库连接

  • EXEC SQL CONNECT TO target [AS connection-name] [USER user-name];
  • target为要连接的数据库服务器
  • connect-name是可选的连接名

关闭数据库连接

  • EXEC SQL DISCONNECT [connection];

不用游标 例8.2 - P33

image-20210612172821648

用into子句指定存放查询结果的主变量

查询结果为单记录的SELECT语句 例8.3 - P35

image-20210612172950111

非CURRENT形式的增删改语句 例8.4-8.5 - P36

image-20210612173146572 image-20210612173155739

对于多条记录等的必须使用游标

  • 说明游标

    • EXEC SQL DECLARE <游标名> CURSOR FOR <SELECT 语句>;
  • 打开游标

    • EXEC SQL OPEN <游标名>;
  • 推进游标指针并取当前记录

    • EXEC SQL FETCH <游标名> INTO <主变量>[<指示变量>] [,<主变量>[<指示变量>]]…;
  • 关闭游标

    • EXEC SQL CLOSE <游标名>;

动态SQL 例8.6-8.7 - P53

image-20210612174057797 image-20210612174311870

存储过程的用户接口 例8.8-8.9 - P79

image-20210612175433874 image-20210612175446613 image-20210612175455090 image-20210612175548661 image-20210612175607410

看看就好,感觉应该不会考吧

创建、执行、修改和删除的代码见PPT - P78 P83 P85

函数见PPT - P88

ODBC工作流程 例8.11-8.12 - P118

image-20210612181101158 image-20210612181128307

操作步骤

  • 配置数据源
  • 初始化环境
  • 建立连接
  • 分配语句句柄
  • 执行SQL语句
  • 结果集处理
  • 中止处理
image-20210612191922075 image-20210612191933512 image-20210612191944311 image-20210612191956880 image-20210612192015518

image-20210612192046278image-20210612192126321

image-20210612192126321 image-20210612192256494

这个简单看吧 这个排版有点糟糕,建议看书,书上的排版赏心悦目

第9讲 关系查询处理和查询优化

选择操作的实现 例9.1 - P18

image-20210612194545030image-20210612194713115

image-20210612194642498 image-20210612194654543 image-20210612194747362 image-20210612194808996

连接操作的实现 例9.2 - P24

image-20210612194858015 image-20210612194912704 image-20210612194928489 image-20210612194940999 image-20210612195016657 image-20210612195031599 image-20210612195039400 image-20210612195117164

查询优化 例9.3 - P43

image-20210612200453081 image-20210612200511608 image-20210612200524220 image-20210612200534418 image-20210612200711052 image-20210612200726131 image-20210612200747872 image-20210612200921129 image-20210612201047666 image-20210612201104312 image-20210612201251566 image-20210612201538132 image-20210612201600948 image-20210612201724711

这个其实不难理解,先选择完再连接的消耗比连接完再选择要低得多。

PS:连接操作时查询处理中最耗时的操作之一 - P24

通过索引来选择比顺序查找效率高。

查询树的启发式优化 例9.4 - P73

image-20210612204233807image-20210612204329105

image-20210612204352951

第10讲 数据库恢复技术

事件-一致性于原子性 - P13

image-20210612210603529

数据库的ACID特性

  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔离性(Isolation)
    • 不可被干扰
  • 持续性(Durability)
    • 一旦事物被提交,改变为永久性的

恢复的实现技术 - P41 P57

image-20210612211707089

恢复的实现技术

  • 数据转储
  • 登记日志文件

检查点 - P83

image-20210612212733328

第11讲 并发控制

并发控制-不一致性 例11.1 - P11

image-20210612213555126

丢失修改

image-20210612213756475

不可重复读

脏数据 - P20

image-20210612213907292

image-20210612213915559image-20210612214157943

一级封锁 - P35

image-20210612214157943

一级封锁:事务T在修改R之前必须加X锁,知道事务结束才释放

  • 没有共享锁,所以不能保证可重复性读和不读脏数据

二级封锁 - P37

image-20210612214401319

二级封锁:一级封锁协议加上事务T在读数据R之前必须对其加S锁,读完即可释放S锁

  • 读完数据即可释放S锁,不能保证可重复性读

三级封锁协议 - P39

image-20210612214638290

三级封锁:一级封锁加上事务T在读数据R之前必须先对其加S锁,知道事务结束才可释放

  • 三级封锁可防止丢失修改、读脏数据和不可重复读

可串行化调度 例11.2 - P67

image-20210612215348341

image-20210612215447578

image-20210612215528618

image-20210612215528618

image-20210612215554148image-20210612215733504

冲突可串行化 例11.3-11.4 - P76

image-20210612215733504

image-20210612215848463image-20210612220033109

两段锁协议 - P81

image-20210612220033109

两阶段:

  • 一阶段:只能获得锁
  • 二阶段:只能释放锁

两段锁仍然可能发生死锁:两段锁不是一次性对要用的数据全部加锁

image-20210612220410432image-20210612220643489

封锁粒度 - P89

image-20210612220643489 image-20210612220659495

意向锁 - P107

image-20210612221321059

IS锁:对后裔结点加S锁

IX锁:对后裔结点加X锁

SIX锁:加S锁,再加IX锁

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/602577
推荐阅读
相关标签
  

闽ICP备14008679号