数据库系统概论(各章知识点总结)

第一章
数据库的4个基本概念:
数据,描述事物的符号记录称为数据
数据库,长期储存在计算机内、有组织的、可共享的大量数据的集合。
数据库管理系统,是计算机的基础软件
数据库系统,是由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统
2.数据模型:是对现实世界数据特征的抽象
3.首先将现实世界抽象为信息世界,然后将信息世界转换为机器世界
4.现实世界中客观对象的抽象过程:现实世界—>认识抽象-->概念模型(信息世界)-->数据库管理系统支持的数据模型(机器世界)
5.数据模型的组成要素:数据结构、数据操作和数据的完整性约束条件三部分组成
6.三级模式:模式:逻辑模式,;外模式:子模式或用户模式,;内模式:存储模式,
7.二级映像:
外模式/模式映像:简称数据的逻辑独立性;
模式/内模式映像:简称数据的物理独立性
8.试述数据库系统的三级模式结构,并说明这种结构的优点是什么:
数据库系统在这三级模式之间提供了两级映像,正式这两级映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性

第二章
1.候选码的诸属性称为主属性,不包括在任何候选码中的属性称为非主属性或非码属性
2.关系代数的运算按运算符的不同可分为传统的集合运算和专门的关系运算
3.传统的集合运算是二目运算,包括并、差、交、笛卡尔积,四种运算;专门的关系运算包括选择、投影、连接、除运算等(运算式P49-50)
4.连接也称⊙连接,他是从两个关系的笛卡尔积中选取属性间满足一定条件的元组(表达式P53)
5.连接运算中有两种最为重要也最为常用的连接,一种是等值连接,另一种是自然连接:⊙为“=”的连接运算称为等值连接;自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉
6.候选码:若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组
7.主码:若一个关系有多个候选码,则选定其中一个为主码
8.全码:在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性是这个关系模式的候选码,称为全码

第三章
SQL的特点:
(1)综合统一;(2)高度非过程化;(3)面向集合的操作方式;(4)以同一中语法结构提供多种使用方式;(5)语言简洁,易学易用。
2.数据库的定义、删除与修改
(1)数据库的定义
Create database <库名>;
Use <库名>;
(2)数据库的删除
Drop database <库名>;
3.基本表的定义、删除与修改
(1)定义基本表
Create table <表名>(<列名><数据类型>[列级完整性约束条件],
<列名><数据类型>[列级完整性约束条件],
                …
[<表级完整性约束条件>]);
[例3.5]建立一个“学生”表Student。
CREATE TABLE Student
     (Sno  CHAR(9) PRIMARY KEY ,
     Sname CHAR(20)UNIQUE,
     Ssex   CHAR(2),
     Sage SMALLINT,
     Sdept CHAR(20));
(2)数据类型
数据类型
含义

CHAR(n),CHARACTER(n)
长度为n的定长字符串,最大长度为n

VARCHAR(n),
CHARACTERVARYING(n)
最大长度为n的变长字符串

INT,INTEGER
长整数(4字节),最大值为9999

SMALLINT
短整数(2字节)

BIGINT
大整数(8字节)

DATE
日期,包含年、月、日,格式为YYYY-MM-DD

TIME
时间,包含一日的时、分、秒,格式为HH:MM:SS

(3)修改基本表
Alter table <表名>
[ADD[Column]<新列名><数据类型>[完整性约束]] 
[ADD <表级完整性约束>]
[DROP [Column] <列名> [Cascade|Restrict]]
[DROP Constraint <完整性约束名>[Restrict|Cascade]]
[Alter Column <列名><数据类型>];
(4)删除基本表
Drop table <表名> [Restrict|Cascade];
(删除表中数据用delete)
4.索引的建立(当表的数据量比较大时,查询操作会比较耗时。建立索引是加快查询速度的有效手段)
Create[Unique][Cluster]Index<索引名>
ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…);
5.数据查询
SELECT [ALL|Distinct]<目标列表达式>[,<目标列表达式>]…
From<表名或视图名>[,<表名或视图名>…]](<SELECT语句>)[AS]<别名>
[WHERE<条件表达式>]
[GROUP BY<列名1>[Having<条件表达式>]]
[ORDER BY<列名2>[ASC|DESC]];
谓词LIKE可以用来进行字符串的匹配。其一般语法格式如下:
[NOT] LIKE '<匹配串>' [ESCAPE '<换码字符>' ]
其含义是查找指定的属性列值与<匹配串>相匹配的元组。<匹配串>可以是一个完整的字符串,也可以含有通配符%和_其中:
·%(百分号)代表任意长度(长度可以为0)的字符串。例如a%b表示以a开头,以b结尾的任意长度的字符串。如acb、addgb、ab等都满足该匹配串
·_(下横线)代表任意单个字符。例如a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb、afb等都满足该匹配串
(3)Group By字句
[例3.46] 求各个课程号及相应的选课人数。
SELECT Cno,COUNT(Sno)
FROM SC
GROUP BY Cno;
(4)聚集函数
为了进一步方便用户,增强检索功能,SQL提供了许多聚集函数,主要有:
COUNT(*).                          统计元组个数
COUNT([DISTINCT|ALL]<列名>)       统计一列中值的个数
SUM([DISTINCT|ALL]<列名>)         计算一列值的总和(此列必须是数值型)
AVG([DISTINCT|ALL]<列名>)        计算一列值的平均值(此列必须是数值型)
MAX([DISTINCT|ALL]<列名>)         求一列值中的最大值
MIN([DISTINCT|ALL]<列名>)         求一列值中的最小值
(6)带有ANY(SOME)或ALL谓词的子查询
表3.7 ANY(或SOME)、ALL谓词与聚集函数、IN谓词的等价转换关系p109 

=
<>或!=
<
<=
>
>=

ANY
IN
--
<MAX
<=MAX
>MIN
>=MIN

ALL
--
NOT IN
<MIN
<=MIN
>MAX
>=MAX

6. 整个SELECT语句的含义是,根据WHERE子句的条件表达式从FROM子句指定的基本表、视图或派生表中找出满足条件的元组,再按SELECT子句中的目标列表达式选出元组中的属性值形成结果表
7.插入数据
插入元组的insert语句格式为
Insert
Into<表名>[(<属性列1>[,<属性列2>]···)]
Values(<常量1>[,<常量2>]···);
[例3.69] 将一个新学生元组(学号:201215128,姓名:陈冬,性别:男,所在系:IS,年龄:18岁)插入到Student表中。
INSERT
INTO Student(Sno, Sname, Ssex, Sdept, Sage)
VALUES('201215128','陈冬','男','IS',18);
[例3.70]将学生张成民的信息插入到Student表中。
INSERT
INTO Student
VALUES(‘201215126’,'张成民','男',18,’CS’);
[例3.71]插入一条选课记录(‘201215128’,’1’)。
INSERT
INTOSC (Sno,Cno)
VALUES(‘201215128’,’1’);
8.修改数据
修改操作又称为更新操作,其语句的一般格式为
UPDATE<表名>
SET<列名>=<表达式>[,<列名>=<表达式>]⋯
[WHERE<条件>];
(1)修改某一个元组的值
[例3.73] 将学生201215121的年龄改为22岁。
UPDATE Student
SET Sage=22
WHERE Sno='201215121';
(2)修改多个元组的值
[例3.74] 将所有学生的年龄增加1岁。
UPDATE Student
Set  Sage=Sage+1;
9.删除数据
删除语句的一般格式为
DELETE
FROM<表名>
[WHERE<条件>];
(1)删除某一个元组的值
[例3.76]删除学号为201215128的学生记录。
DELETE
FROM Student
WHERE Sno=‘201215128’;
(2)删除多个元组的值
[例3.77]删除所有的学生选课记录。
DELETE
FROM SC;
10.建立视图
Create VIEW <视图名>[(<列名>[,<列名>]…)]
AS<子查询>
[WITH CHECK OPTION];
[例3.84] 建立信息系学生的视图。
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student 
WHERE Sdept=’IS’;
11.行列子集视图
若一个视图是从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了主码,则称这类视图为行列子集视图
12.删除视图
DROP VIEW<视图名>[CASCADE];
13.视图消解
从数据字典中取出视图的定义,把定义中的子查询和用户的查询结合起来,转换成等价的对基本表的查询,然后再执行修正了的查询。这一转换过程称为视图消解
14.行列子集视图是可更新的;除行列子集视图外,都不能更新
15.视图的作用
(1)视图能够简化用户的操作;
(2)试图使用户能以多种角度看待同一数据;
(3)视图对重构数据库提供了一定程度的逻辑独立性;
(4)视图能够对机密数据提供安全保护;
(5)适当利用视图可以更清晰地表达查询
16.什么是基本表?什么是视图?两者的区别和联系是什么?
基本表是本身独立存在的表,在SQL中一个关系就对应一个基本表。
视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表。即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。视图在概念上与基本表等同,用户可以如同基本表那样使用视图,可以在视图上再定义视图。
17.试述视图的优点
①视图能够简化用户的操作
②视图使用户能以多种角度看得同一数据
③视图对重构数据库提供了一定程度的逻辑独立性
④视图能够对机密数据提供安全保护

第四章
1.数据库的安全性是指保护数据库以防不合法使用所造成的数据泄露、更改或破坏。(单选判断)
2.数据库的不安全因素:①非授权用户对数据库的恶意存取和破坏②数据库中重要或敏感的数据被泄露③安全环境的脆弱性
3.自主存取控制:用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。因此自主存取控制非常灵活                    
4.强制存取控制:每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。强制存取控制因此相对比较严格
5.GRANT语句
GRANT语句的一般格式为
GRANT<权限>[,<权限>]…
ON<对象类型><对象名>[,<对象类型><对象名>]…
TO<用户>[,<用户>]…
[ WITHGRANTOPTION ];
6.REVOKE语句
REVOKE句的一般格式为
REVOKE<权限>[,<权限>]…
ON<对象类型><对象名>[,<对象类型><对象名>]…
FROM<用户>[,<用户>]…[CASCADE|RESTRICT];
7.在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类;主体:系统中的活动实体,既包括数据库管理系统所管理的实际用户,也包括代表用户的各进程;客体:系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等
8.对任何客体的存取必须遵循如下规则:(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体(2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
9.试述实现数据库安全性控制的常用方法和技术。
①用户身份鉴别:系统提供多种方式让用户标识自己的名字或身份。用户要使用数据库系统时由系统进行核对,通过鉴定后才可以使用数据库。
②多层存取控制:系统提供用户权限定义和合法权限检查功能,用户只有获得某种权限才能访问数据库中的某些数据。
③视图机制:为不同的用户定义不同的视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。
④审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,审计员可以利用审计信息重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
⑤数据加密:对存储和传输的数据进行加密处理,从而使不知道解密算法的人无法获知
数据的内容。

第五章
1.数据库的完整性是指数据的正确性和相容性
2.为维护数据库的完整性,数据库管理系统必须实现一下功能:(1)提供定义完整性约束条件的机制(2)提供完整性检查的方法(3)进行违约处理
3.定义实体完整性
[例5.1]将Student表中的Sno属性定义为码
CREATE TABLE  Student
(Sno CHAR(9) PRIMARY KEY ,
Sname CHAR(20)NOTNULL,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
或者
CREATE TABLE  Student
(Sno CHAR(9),
Sname CHAR(20) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20),
PRIMARY KEY (Sno)
);
4.定义参照完整性
[例5.3] 定义SC中的参照完整性
CREATE TABLE SC
(Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMALLINT,
PRIMARYKEY (Sno, Cno),
FOREIGNKEY (Sno) REFERENCES  Student(Sno),
FOREIGNKEY (Cno) REFERENCES  Course(Cno)
);
5.用户定义的完整性:(1)属性上的约束条件:列值非空(NOT NULL),列值唯一(UNIQUE),检查列值是否满足一个条件表达式(CHECK短语);(2)元组上的约束条件
6.触发器:是用户定义在关系表上的一类由事件驱动的特殊过程
SQL使用 CREATETRIGGER 命令建立触发器,其一般格式为
CREATETRIGGER <触发器名>         *每当触发事件发生时,该触发器被激活*
{BEFORE]AFTER} <触发事件>ON<表名>              *指明触发器激活的时间*
REFERENCINGNEW |OLDROWAS<变量>          * REFERENCING 指出引用的变量*
FOREACH{ROW|STATEMENT}       *定义触发器的类型,指明动作体执行的频率*
[WHEN<触发条件>]<触发动作体>     *仅当触发条件为真时才执行触发动作体*
7.触发时机:AFTER/BEFORE
8.假设有下面两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码;
部门(部门号,名称,经理名,电话),其中部门号为主码
用SQL语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:
(1)定义每个模式的主码;(2)定义参照完整性;(3)定义职工年龄不得超过60岁
CREATE TABLE DEPT
(Deptno NUMBER(2) PRIMARY KEY ,
Deptname VARCHAR(10),
Manager VARCHAR(10),
PhoneNumber  Char(12)
);
CREATE TABLE EMP
( Empno NUMBER (4) PRIMARY KEY ,
Ename VARCHAR(10),
Age NUMBER(2),
Job VARCHAR(9),
Sal NUMBER(7,2),
Deptno NUMBER(2),
CONSTRAINT C1 CHECK (Age<=60),
CONSTRAINT FK_DEPTNO FOREIGNKEY (Depton) REFERENCES DEPT (Deptno));

第六章
1.简答:1NF→2NF
2.作为一个二维表,关系要符合一个最基本的条件:每一个分量必须是不可分的数据项。满足了这个条件的关系模式就属于第一范式(1NF)
3.各范式之间的关系:5NF属于4NF属于BCNF属于3NF属于2NF属于1NF
4.有关系模式 S-L-C(Sno,Sdept,Sloc,Cno,Grade),其中 Sloc 为学生的住处, 并且每个系的学生住在同一个地方。S-L-C的码为(Sno,Cno)。则函数依赖有(183页)

5.为什么不属于2NF:未消除非主属性对码的部分函数依赖
6.函数依赖:设R(U)是属性集U上的关系模式。X,Y是属性集U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X→Y。
完全函数依赖F:在R(U)中,如果X→Y,并且对于X的任何一个真子集X,都有X→Y,则称Y对X完全函数依赖
部分函数依赖P:若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖
传递函数依赖:在关系模式中,如果x->y(y不属于x),y-/->x,y->z,z不属于y,那么称z对x是传递函数依赖,记作x-传递->z

第七章
1.数据库设计的基本步骤:(1)需求分析阶段(2)概念结构设计阶段(3)逻辑结构设计阶段(4)物理结构设计阶段(5)数据库实施阶段(6)数据库运行和维护阶段
2.实体之间的联系:
⑴两个实体型之间的联系:
  两个实体型之间的联系分为以下三种:
  ①一对一联系(1:1)
  ②一对多联系(1:n)
③多对多联系(m:n)
两个以上的实体型之间的联系
单个实体型内的联系
3.E-R图:提供了表示实体型(矩形)、属性(椭圆形)和联系(菱形)的方法
4.关系模式存取方法选择(索引目的:加快搜索效率)
  ⑴B+树索引存取方法的选择:关系上定义的索引数并不是越多越好,系统维护索引要付出代价
  ⑵hash索引存取方法的选择
聚簇存取方法的选择:一个数据库可以建立多个聚簇,一个关系只能加入一个聚簇
5.试述数据库设计过程
数据库设计过程的六个阶段:需求分析、概念结构设计、逻辑结构设计、数据库物理设计、数据库实施、数据库运行和维护。这是一个完整的实际数据库及其应用系统的设计过程。不仅包括设计数据库本身,还包括数据库的实施、运行和维护。设计一个完善的数据库应用系统往往是上述六个阶段的不断反复。
6.某工厂生产若干产品,每种产品由不同的零件组成,有的零件可用在不同的产品上。这些零件由不同的原材料制成,不同零件所用的材料可以相同。这些零件按所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中。请用 E-R图画出此工厂产品、零件、材料、仓库的概念模型。


第八章
1. 过程化SQL块主要有命名块与匿名块;过程和函数是命名块
2.创建存储过程:Create or replace procedure过程名([参数1,参数2,…])
                 AS<过程化SQL块>;
3.删除存储过程:Drop procedure 过程名();

第九章
1.查询优化可分为代数优化(也称为逻辑优化)和物理优化(也称为非代数优化)。
2.关系代数表达式等价变换规则p283
(1)连接、笛卡儿积的交换律(2)连接、笛卡儿积的结合律(3)投影的串接定律(4)选择的串接定律(5)选择与投影操作的交换律(6)选择与笛卡儿积的交换律(7)选择与并的分配律(8)选择与差运算的分配律(9)选择与自然连接的分配律(10)投影与笛卡儿积的分配律(11)投影与并的分配律
3.物理优化的方法:(1)基于规则的启发式优化(2)基于代价估算的优化(3)两者结合的优化方法
4.事务的概念:是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是个不可分割的工作单位
5.恢复技术保证事务的原子性、一致性、永久性(持续性)

第十章
1.事物的ACID特性:原子性、一致性、隔离性和持续性
2.事物的内部故障:用ROLLBACK(回滚)来实现
3.恢复的实现技术靠创建冗余数据实现。建立冗余数据最常见的技术是数据转储和登记日志文件

第十一章 
1.并发操作带来的数据不一致性包括丢失修改、不可重复读和读“脏”数据
2.封锁是实现并发控制的一个非常重要的技术,就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其封锁。基本的封锁类型有两种:排它锁(又称写锁、X锁)【不能加任何锁】和共享锁(读锁、S锁)【不能加排它锁】
若事物T对数据对象A加上S锁则事物T可以读A但不能修改A,其他事务只能只能对A加S锁
若事物T对数据对象A加上X锁则既可读又可修改,其他事务不能再加任何类型的锁

1.某企业集团有若干工厂,每个工厂生产多种产品,且每一种产品可以在多个工厂生产,每个工厂按照固定的计划数量生产产品;每个工厂聘用多名职工,且每名职工只能在一个工厂工作,工厂聘用职工有聘期和工资。工厂的属性有工厂编号、厂名、地址,产品的属性有产品编号、产品名、规格,职工的属性有职工号、姓名
(1)根据上述语义画出E-R图;


(2)将该E-R模型转换为关系模型;
(3)指出转换结果中每个关系模式的主码和外码;
主码 外码
工厂(工厂编号,厂名,地址)
产品(产品编号,产品名,规格)
职工(职工号,姓名,工厂编号,聘期,工资)
生产(工厂编号,产品编号,数量)外码:工厂编号,产品编号
(要求: 1:1和l:n的联系进行合并)
创建数据库;
创建表。
Create database DB;
Use DB;
Create Table Fg(
  Fno Char(10),
  Fname Char(20),
Fadd char(40));
Create Table W(
  Fno Char(10),
  Pno Char(10),
  Count Int,
Primary Key(Fno,Pno),
Foreign key(Fno) References Fg(Fno),
Foreign key(Pno) References W(Pno));

Create Table Product(
  Pno Char(10),
  Pname Char(20),
  Pgg Char(10));
Create Table Clerk(
  Cno Char(10),
  Cname Char(20),
  Fno Char(10),
  Date Char(10),
  Sal Char(5),
  Primary key(Cno),
  Foreign key(Fno) References Fg(Fno));

2.有关系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade),其中Sloc为学生的住处,并且每个系的学生住在同一个地方。
(1)根据语义写出模式R的基本函数依赖和码;
(Sno,Cno)→Grade
Sno→Sdept,(Sno,Cno)→Sdept
Sdept→Sloc
Sno→Sloc,(Sno,Cno)→Sloc
(2)R是否是2NF,如果不是,把R分解成2NF。
S(Sno,Sdept,Sloc)
C(Sno,Cno,Grade)属于2NF
非主属性Sdept、Sloc只是部分依赖于码(Sno,Cno)
分解成2NF M(Sno,Cno,Sdept)
N(Sno,Cno,Sloc)

3.对于关系模式R(职工名,项目名,工资,部门号,部门经理),假设规定,每个职工可以参加多个项目,能领取一份工资,每个项目只属于一个部门管理;每个部门只有一个经理。
(1)根据语义写出模式R的基本函数依赖和码;
(2)R是否是2NF,如果不是,把R分解成2NF。
(1)R(职工名,项目名,工资,部门号,部门经理)
(职工名,项目名)-->工资
项目名-->部门号
部门号-->部门经理
项目名-->部门经理
主码(职工名,项目名)
(2)(职工名,项目名)-F->工资
(职工名,项目名)-P->部门号
(职工名,项目名)-P->部门经理
R不属于2NF
R1(项目名,部门号,部门经理)属于2NF
R2(职工号,项目名,工资)属于2NF

4.[1] 查询全体学生的学号和姓名
SELECT Sno,Sname FROM Student; 
[2] 查询计算机科学系全体学生的名单。
SELECT Sname FROM  Student WHERE  Sdept=‘CS’; 
[3]查询考试成绩有不及格的学生的学号。
   SELECT DISTINCT Sno FROM  SC WHERE Grade<60;
[4]查询学生总人数。
   SELECT COUNT(*) FROM  Student;
[5]查询选修2号课程且成绩在90分以上的所有学生的学号和姓名。
Select Student.Sno, Sname From  Student,SC
Where  Student.Sno=SC.Sno AND SC.Cno=‘2’ 
          AND SC.Grade>90;

  • 21
    点赞
  • 314
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Daniel Hao(找工作中)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值