微信扫一扫,移动浏览光盘
简介
本书是Oracle 11g的入门教材,是初学者快速掌握Oracle数据库的途
径,尤其适合Oracle数据库应用开发人员阅读,来获得应具备的数据库方
面的知识和技能。本书从如何安装Oracle数据库入手,到如何掌握和
Oracle交互的SQL语言和PL/SQL编程,逐步延伸至数据库的体系结构,并以
此为基础,介绍数据库的SQL语句优化和备份恢复等内容。
本书内容共11章,分为5个部分。第1部分是Oracle基础,包括Oracle
11g的安装、SQL语言、数据库对象的管理、PL/SQL编程等;第2部分是
Oracle体系结构;第3部分是Oracle数据库的用户及安全管理;第4部分是
数据库中的SQL语句优化;第5部分是从程序员的角度来看数据库的备份和
恢复。
目录
第1章oracle 11g的安装1
1.1安装要求2
1.2下载oracle数据库2
1.3安装oracle数据库3
1.4oracle的启动和关闭7
1.5下载oracle帮助文档8
本章小结8
第2章sql基础9
2.1数据库管理系统(dbms)概述10
2.1.1数据库的产生10
2.1.2关系型数据库10
2.1.3常见的关系型数据库12
2.2sql概述13
2.2.1sql语言的定义13
2.2.2sql语言的特点14
2.2.3sql语言的分类14
2.2.4sql语言的编写规范15
2.3oracle数据库概述16
2.3.1oracle数据库的发展史16
2.3.2oracle数据库对象17
.2.3.3oracle数据库中的用户18
2.3.4oracle数据库中样例表19
2.4oracle的主要开发工具sql*plus21
2.4.1sql*plus简介21
2.4.2sql*plus的启动和退出21
2.4.3sql*plus编辑命令24
2.4.4sql*plus文件命令27
2.4.5sql*plus格式化输出结果命令29
2.4.6sql*plus环境设置和显示命令33
2.4.7sql*plus中的交互命令36
2.4.8定制sql*plus环境参数40
2.5oracle其他开发工具介绍41
2.5.1oracle sql developer41
2.5.2toad for oracle application developers45
2.5.3pl/sql developer45
2.5.4几种开发工具的对比46
本章小节47
练习题47
第3章sql查询51
3.1基本查询50
3.1.1简单查询语句50
3.1.2查询所有的列50
3.1.3查询指定列50
3.1.4去掉重复值51
3.1.5查询语句中使用算术表达式53
3.1.6查询语句中使用列的别名53
3.1.7查询语句中使用连接表达式54
3.1.8处理空值(null)54
3.1.9查询日期列56
3.2限制查询结果58
3.2.1在weher子句中使用简单比较操作符58
3.2.2在where子句中使用between…and…60
3.2.3在where子句中使用in(list)60
3.2.4在where子句中使用like61
3.2.5在where子句中使用is null62
3.2.6在where子句中使用and62
3.2.7在where子句中使用or63
3.2.8在where子句中使用not63
3.2.9运算符的优先级规则64
3.3查询结果排序64
3.3.1升序排序64
3.3.2降序排序65
3.3.3使用非选择列表排序66
3.3.4使用表达式排序67
3.3.5使用列别名排序67
3.3.6使用列位置排序68
3.3.7使用多列排序69
3.4分组查询69
3.4.1分组函数的使用70
3.4.2group by短语及其子句71
3.5连接查询77
3.5.1等值连接78
3.5.2非等值连接80
3.5.3自连接80
3.5.4内连接和外连接81
3.6子查询85
3.6.1单行子查询86
3.6.2多行子查询87
3.6.3多列子查询88
3.6.4其他子查询89
3.6.5使用子查询需要注意的问题90
3.7集合操作90
本章小结92
练习题93
第4章sql单行函数97
4.1单行函数的定义98
4.2字符函数98
4.2.1大小写转换函数upper、lower、initcap98
4.2.2字符串连接函数concat100
4.2.3获取子串函数substr100
4.2.4获取字符串长度函数length101
4.2.5获取子串在字符串中的位置函数instr102
4.2.6补位函数lpad、rpad102
4.2.7截去子串函数trim、ltrim、rtrim103
4.2.8替换函数replace104
4.2.9ascii码和字符的对应函数ascii、chr104
4.3数字函数105
4.3.1round、trunc105
4.3.2ceil、floor106
4.3.3abs、mod、sign、power、sqrt106
4.4日期函数107
4.4.1sysdate107
4.4.2add_months108
4.4.3next_day108
4.4.4last_day109
4.4.5month_between110
4.4.6round,trunc110
4.4.7sessiontimezone111
4.4.8extract112
4.5转换函数112
4.5.1日期到字符转换函数to_char112
4.5.2字符到日期转换函数to_date113
4.5.3数字到字符转换函数to_char114
4.5.4字符到数字转换函数to_number115
4.6null函数116
4.6.1coalesce116
4.6.2nvl,nvl2116
4.6.3nullif117
4.6.4lnnvl118
4.7比较函数119
4.8环境和标识函数120
4.8.1syscontext120
4.8.2user121
4.9其他函数122
4.9.1decode122
4.9.2vsize123
4.9.3dump124
本章小结124
练习题125
第5章数据操纵与事务控制129
5.1数据操纵简介130
5.2插入数据130
5.2.1用于插入数据的insert语句130
5.2.2使用values子句插入单行数据130
5.2.3通过子查询插入多条数据132
5.2.4多表insert语句133
5.3更新数据134
5.3.1一般update语句134
5.3.2使用子查询更新数据136
5.4删除数据136
5.4.1一般delete语句136
5.4.2使用子查询删除数据137
5.4.3删除主表数据的问题137
5.5merge操作137
5.5.1使用merge语句修改表数据137
5.5.2省略insert或update子句139
5.5.3带条件的insert或update子句141
5.5.4无条件insert子句141
5.5.5delete子句142
5.6事务控制142
5.6.1事务概念142
5.6.2提交事务144
5.6.3回退事务和保存点145
5.6.4只读事务147
5.6.5顺序事务147
本章小结148
练习题148
第6章数据库对象的创建和管理149
6.1数据库的主要对象150
6.1.1数据库的主要对象150
6.1.2常用数据类型150
6.1.3数据定义语言(ddl)命名规则151
6.1.4数据字典152
6.2表154
6.2.1表的简介154
6.2.2创建表154
6.2.3修改表156
6.2.4截断表158
6.2.5删除表159
6.2.6给表增加注释159
6.2.7在数据字典中查看表信息159
6.3约束条件161
6.3.1约束条件简介161
6.3.2非空(not null)163
6.3.3唯一(unique)164
6.3.4主键(primary key)166
6.3.5外键(foreign key)168
6.3.6检查(check)171
6.3.7禁用和启用约束条件172
6.3.8修改约束条件名称174
6.3.9删除约束条件174
6.4视图175
6.4.1视图简介175
6.4.2创建视图176
6.4.3修改视图178
6.4.4删除视图179
6.4.5在数据字典中查看视图信息179
6.5索引180
6.5.1索引简介180
6.5.2创建索引181
6.5.3重建索引182
6.5.4删除索引182
6.5.5在数据字典中查看索引信息182
6.6序列183
6.6.1序列简介183
6.6.2创建序列183
6.6.3修改序列184
6.6.4删除序列185
6.6.5在数据字典中查看序列信息185
6.7同义词186
6.7.1同义词简介186
6.7.2创建同义词186
6.7.3删除同义词187
6.7.4在数据字典中查看同义词信息188
本章小结188
练习题190
第7章pl/sql开发193
7.1了解pl/sql194
7.1.1pl/sql语言194
7.1.2pl/sql程序块的基本结构195
7.1.3在开发工具中编写简单的pl/sql程序198
7.1.4pl/sql编码规范199
7.1.5pl/sql中的注释200
7.2pl/sql的变量201
7.2.1简单变量201
7.2.2复合变量203
7.3pl/sql的基本语法206
7.3.1赋值语句206
7.3.2表达式207
7.3.3在pl/sql中使用sql语句209
7.3.4条件判断语句214
7.3.5循环语句217
7.3.6pl/sql程序块的作用域220
7.4处理游标221
7.4.1游标变量221
7.4.2隐式游标222
7.4.3显式游标222
7.4.4参数游标225
7.4.5游标变量227
7.4.6游标的for循环228
7.4.7更新或删除游标行229
7.5异常处理231
7.5.1异常概述231
7.5.2基本语法232
7.5.3预定义异常232
7.5.4非预定义异常234
7.5.5用户自定义异常235
7.5.6sqlcode和sqlerrm236
7.6pl/sql程序单元237
7.6.1程序单元分类及基本规则237
7.6.2过程238
7.6.3函数244
7.6.4包249
7.6.5触发器255
7.6.6pl/sql程序单元总结268
本章小结269
练习题270
第8章oracle体系结构和管理基础273
8.1oracle体系结构基本概念274
8.2oracle内存结构275
8.2.1概述275
8.2.2共享池(shared pool)276
8.2.3数据高速缓存区(data buffer area)277
8.2.4重做日志缓存区(redo log buffer)279
8.2.5大缓存池(large pool)280
8.2.6java池(java pool)280
8.2.7程序全局区(pga)280
8.3oracle后台进程280
8.3.1检查点(checkpoint)和scn(system change number)281
8.3.2dbwr282
8.3.3lgwr282
8.3.4ckpt283
8.3.5smon284
8.3.6pmon284
8.3.7arch284
8.4oracle存储结构285
8.4.1数据文件和表空间285
8.4.2重做日志文件289
8.4.3控制文件290
8.4.4其他文件291
8.5oracle逻辑结构和物理结构的关系293
8.6数据字典294
8.6.1数据字典定义294
8.6.2数据字典命名规则295
8.6.3常用的数据字典296
8.6.4常用的动态性能视图301
8.7sql语句执行过程305
8.7.1连接到数据库服务器305
8.7.2连接和会话306
8.7.3执行查询操作307
8.7.4执行dml操作309
8.7.5事务提交310
8.7.6事务撤销310
8.8oracle初始化参数311
8.8.1初始化参数文件311
8.8.2显示参数314
8.8.3常用的初始化参数315
8.8.4修改初始化参数317
8.9数据库的启动和停止317
8.9.1启动数据库318
8.9.2将数据库启动到指定状态320
8.9.3停止数据库321
8.9.4使用诊断文件监视实例322
本章小结324
练习题325
第9章数据库用户及安全管理329
9.1数据库安全概述330
9.2用户管理331
9.2.1oracle数据库的初始用户331
9.2.2方案(schema)331
9.2.3和用户相关的属性332
9.2.4创建用户333
9.2.5修改用户335
9.2.6删除用户336
9.2.7获取和用户有关的信息336
9.3权限管理336
9.3.1权限概述336
9.3.2系统权限管理337
9.3.3对象权限管理339
9.3.4获取和权限有关的信息341
9.4角色管理342
9.4.1角色概述342
9.4.2系统预定义角色343
9.4.3创建自定义角色344
9.4.4角色授权344
9.4.5修改角色348
9.4.6删除角色348
9.4.7查询角色信息349
9.5资源配置349
9.5.1资源配置概述349
9.5.2创建资源配置350
9.5.3修改资源配置351
9.5.4删除资源配置352
9.5.5查询资源配置352
本章小结352
本章练习题353
第10章sql语句优化355
10.1sql优化原则356
10.1.1为什么要优化sql语句356
10.1.2一般sql优化原则356
10.1.3在表连接中的优化原则360
10.1.4合理使用索引360
10.1.5动态性能视图362
10.2oracle优化器和执行计划363
10.2.1oracle优化器363
10.2.2查看oracle执行计划364
10.2.3执行计划释义369
10.2.4sql执行计划管理380
10.2.5sql计划基线381
10.2.6测试执行计划管理383
10.3oracle性能顾问385
10.3.1addm386
10.3.2awr387
10.3.3sql调优顾问388
10.3.4sql访问顾问388
本章小结389
练习题390
第11章简单备份与恢复391
11.1oracle备份与恢复综述392
11.1.1为什么要备份和恢复392
11.1.2备份和恢复基础392
11.1.3备份与恢复的基本原则394
11.1.4备份与恢复涉及主要数据结构394
11.2备份基础396
11.2.1失败种类396
11.2.2需要备份的信息404
11.2.3备份的种类405
11.3恢复基础406
11.3.1恢复的工作原理406
11.3.2恢复的种类407
11.4备份和恢复408
11.4.1备份和恢复方法408
11.4.2制定恢复策略411
11.4.3制定备份策略412
11.4.4备份和恢复的配制414
11.5rman426
11.5.1rman功能组件427
11.5.2rman恢复目录429
11.5.3连接到rman环境431
11.5.4rman备份集435
11.5.5rman映像副本442
11.5.6rman备份443
11.5.7rman恢复449
11.6expdp和impdp453
11.7exp和imp458
本章小结461
练习题462
1.1安装要求2
1.2下载oracle数据库2
1.3安装oracle数据库3
1.4oracle的启动和关闭7
1.5下载oracle帮助文档8
本章小结8
第2章sql基础9
2.1数据库管理系统(dbms)概述10
2.1.1数据库的产生10
2.1.2关系型数据库10
2.1.3常见的关系型数据库12
2.2sql概述13
2.2.1sql语言的定义13
2.2.2sql语言的特点14
2.2.3sql语言的分类14
2.2.4sql语言的编写规范15
2.3oracle数据库概述16
2.3.1oracle数据库的发展史16
2.3.2oracle数据库对象17
.2.3.3oracle数据库中的用户18
2.3.4oracle数据库中样例表19
2.4oracle的主要开发工具sql*plus21
2.4.1sql*plus简介21
2.4.2sql*plus的启动和退出21
2.4.3sql*plus编辑命令24
2.4.4sql*plus文件命令27
2.4.5sql*plus格式化输出结果命令29
2.4.6sql*plus环境设置和显示命令33
2.4.7sql*plus中的交互命令36
2.4.8定制sql*plus环境参数40
2.5oracle其他开发工具介绍41
2.5.1oracle sql developer41
2.5.2toad for oracle application developers45
2.5.3pl/sql developer45
2.5.4几种开发工具的对比46
本章小节47
练习题47
第3章sql查询51
3.1基本查询50
3.1.1简单查询语句50
3.1.2查询所有的列50
3.1.3查询指定列50
3.1.4去掉重复值51
3.1.5查询语句中使用算术表达式53
3.1.6查询语句中使用列的别名53
3.1.7查询语句中使用连接表达式54
3.1.8处理空值(null)54
3.1.9查询日期列56
3.2限制查询结果58
3.2.1在weher子句中使用简单比较操作符58
3.2.2在where子句中使用between…and…60
3.2.3在where子句中使用in(list)60
3.2.4在where子句中使用like61
3.2.5在where子句中使用is null62
3.2.6在where子句中使用and62
3.2.7在where子句中使用or63
3.2.8在where子句中使用not63
3.2.9运算符的优先级规则64
3.3查询结果排序64
3.3.1升序排序64
3.3.2降序排序65
3.3.3使用非选择列表排序66
3.3.4使用表达式排序67
3.3.5使用列别名排序67
3.3.6使用列位置排序68
3.3.7使用多列排序69
3.4分组查询69
3.4.1分组函数的使用70
3.4.2group by短语及其子句71
3.5连接查询77
3.5.1等值连接78
3.5.2非等值连接80
3.5.3自连接80
3.5.4内连接和外连接81
3.6子查询85
3.6.1单行子查询86
3.6.2多行子查询87
3.6.3多列子查询88
3.6.4其他子查询89
3.6.5使用子查询需要注意的问题90
3.7集合操作90
本章小结92
练习题93
第4章sql单行函数97
4.1单行函数的定义98
4.2字符函数98
4.2.1大小写转换函数upper、lower、initcap98
4.2.2字符串连接函数concat100
4.2.3获取子串函数substr100
4.2.4获取字符串长度函数length101
4.2.5获取子串在字符串中的位置函数instr102
4.2.6补位函数lpad、rpad102
4.2.7截去子串函数trim、ltrim、rtrim103
4.2.8替换函数replace104
4.2.9ascii码和字符的对应函数ascii、chr104
4.3数字函数105
4.3.1round、trunc105
4.3.2ceil、floor106
4.3.3abs、mod、sign、power、sqrt106
4.4日期函数107
4.4.1sysdate107
4.4.2add_months108
4.4.3next_day108
4.4.4last_day109
4.4.5month_between110
4.4.6round,trunc110
4.4.7sessiontimezone111
4.4.8extract112
4.5转换函数112
4.5.1日期到字符转换函数to_char112
4.5.2字符到日期转换函数to_date113
4.5.3数字到字符转换函数to_char114
4.5.4字符到数字转换函数to_number115
4.6null函数116
4.6.1coalesce116
4.6.2nvl,nvl2116
4.6.3nullif117
4.6.4lnnvl118
4.7比较函数119
4.8环境和标识函数120
4.8.1syscontext120
4.8.2user121
4.9其他函数122
4.9.1decode122
4.9.2vsize123
4.9.3dump124
本章小结124
练习题125
第5章数据操纵与事务控制129
5.1数据操纵简介130
5.2插入数据130
5.2.1用于插入数据的insert语句130
5.2.2使用values子句插入单行数据130
5.2.3通过子查询插入多条数据132
5.2.4多表insert语句133
5.3更新数据134
5.3.1一般update语句134
5.3.2使用子查询更新数据136
5.4删除数据136
5.4.1一般delete语句136
5.4.2使用子查询删除数据137
5.4.3删除主表数据的问题137
5.5merge操作137
5.5.1使用merge语句修改表数据137
5.5.2省略insert或update子句139
5.5.3带条件的insert或update子句141
5.5.4无条件insert子句141
5.5.5delete子句142
5.6事务控制142
5.6.1事务概念142
5.6.2提交事务144
5.6.3回退事务和保存点145
5.6.4只读事务147
5.6.5顺序事务147
本章小结148
练习题148
第6章数据库对象的创建和管理149
6.1数据库的主要对象150
6.1.1数据库的主要对象150
6.1.2常用数据类型150
6.1.3数据定义语言(ddl)命名规则151
6.1.4数据字典152
6.2表154
6.2.1表的简介154
6.2.2创建表154
6.2.3修改表156
6.2.4截断表158
6.2.5删除表159
6.2.6给表增加注释159
6.2.7在数据字典中查看表信息159
6.3约束条件161
6.3.1约束条件简介161
6.3.2非空(not null)163
6.3.3唯一(unique)164
6.3.4主键(primary key)166
6.3.5外键(foreign key)168
6.3.6检查(check)171
6.3.7禁用和启用约束条件172
6.3.8修改约束条件名称174
6.3.9删除约束条件174
6.4视图175
6.4.1视图简介175
6.4.2创建视图176
6.4.3修改视图178
6.4.4删除视图179
6.4.5在数据字典中查看视图信息179
6.5索引180
6.5.1索引简介180
6.5.2创建索引181
6.5.3重建索引182
6.5.4删除索引182
6.5.5在数据字典中查看索引信息182
6.6序列183
6.6.1序列简介183
6.6.2创建序列183
6.6.3修改序列184
6.6.4删除序列185
6.6.5在数据字典中查看序列信息185
6.7同义词186
6.7.1同义词简介186
6.7.2创建同义词186
6.7.3删除同义词187
6.7.4在数据字典中查看同义词信息188
本章小结188
练习题190
第7章pl/sql开发193
7.1了解pl/sql194
7.1.1pl/sql语言194
7.1.2pl/sql程序块的基本结构195
7.1.3在开发工具中编写简单的pl/sql程序198
7.1.4pl/sql编码规范199
7.1.5pl/sql中的注释200
7.2pl/sql的变量201
7.2.1简单变量201
7.2.2复合变量203
7.3pl/sql的基本语法206
7.3.1赋值语句206
7.3.2表达式207
7.3.3在pl/sql中使用sql语句209
7.3.4条件判断语句214
7.3.5循环语句217
7.3.6pl/sql程序块的作用域220
7.4处理游标221
7.4.1游标变量221
7.4.2隐式游标222
7.4.3显式游标222
7.4.4参数游标225
7.4.5游标变量227
7.4.6游标的for循环228
7.4.7更新或删除游标行229
7.5异常处理231
7.5.1异常概述231
7.5.2基本语法232
7.5.3预定义异常232
7.5.4非预定义异常234
7.5.5用户自定义异常235
7.5.6sqlcode和sqlerrm236
7.6pl/sql程序单元237
7.6.1程序单元分类及基本规则237
7.6.2过程238
7.6.3函数244
7.6.4包249
7.6.5触发器255
7.6.6pl/sql程序单元总结268
本章小结269
练习题270
第8章oracle体系结构和管理基础273
8.1oracle体系结构基本概念274
8.2oracle内存结构275
8.2.1概述275
8.2.2共享池(shared pool)276
8.2.3数据高速缓存区(data buffer area)277
8.2.4重做日志缓存区(redo log buffer)279
8.2.5大缓存池(large pool)280
8.2.6java池(java pool)280
8.2.7程序全局区(pga)280
8.3oracle后台进程280
8.3.1检查点(checkpoint)和scn(system change number)281
8.3.2dbwr282
8.3.3lgwr282
8.3.4ckpt283
8.3.5smon284
8.3.6pmon284
8.3.7arch284
8.4oracle存储结构285
8.4.1数据文件和表空间285
8.4.2重做日志文件289
8.4.3控制文件290
8.4.4其他文件291
8.5oracle逻辑结构和物理结构的关系293
8.6数据字典294
8.6.1数据字典定义294
8.6.2数据字典命名规则295
8.6.3常用的数据字典296
8.6.4常用的动态性能视图301
8.7sql语句执行过程305
8.7.1连接到数据库服务器305
8.7.2连接和会话306
8.7.3执行查询操作307
8.7.4执行dml操作309
8.7.5事务提交310
8.7.6事务撤销310
8.8oracle初始化参数311
8.8.1初始化参数文件311
8.8.2显示参数314
8.8.3常用的初始化参数315
8.8.4修改初始化参数317
8.9数据库的启动和停止317
8.9.1启动数据库318
8.9.2将数据库启动到指定状态320
8.9.3停止数据库321
8.9.4使用诊断文件监视实例322
本章小结324
练习题325
第9章数据库用户及安全管理329
9.1数据库安全概述330
9.2用户管理331
9.2.1oracle数据库的初始用户331
9.2.2方案(schema)331
9.2.3和用户相关的属性332
9.2.4创建用户333
9.2.5修改用户335
9.2.6删除用户336
9.2.7获取和用户有关的信息336
9.3权限管理336
9.3.1权限概述336
9.3.2系统权限管理337
9.3.3对象权限管理339
9.3.4获取和权限有关的信息341
9.4角色管理342
9.4.1角色概述342
9.4.2系统预定义角色343
9.4.3创建自定义角色344
9.4.4角色授权344
9.4.5修改角色348
9.4.6删除角色348
9.4.7查询角色信息349
9.5资源配置349
9.5.1资源配置概述349
9.5.2创建资源配置350
9.5.3修改资源配置351
9.5.4删除资源配置352
9.5.5查询资源配置352
本章小结352
本章练习题353
第10章sql语句优化355
10.1sql优化原则356
10.1.1为什么要优化sql语句356
10.1.2一般sql优化原则356
10.1.3在表连接中的优化原则360
10.1.4合理使用索引360
10.1.5动态性能视图362
10.2oracle优化器和执行计划363
10.2.1oracle优化器363
10.2.2查看oracle执行计划364
10.2.3执行计划释义369
10.2.4sql执行计划管理380
10.2.5sql计划基线381
10.2.6测试执行计划管理383
10.3oracle性能顾问385
10.3.1addm386
10.3.2awr387
10.3.3sql调优顾问388
10.3.4sql访问顾问388
本章小结389
练习题390
第11章简单备份与恢复391
11.1oracle备份与恢复综述392
11.1.1为什么要备份和恢复392
11.1.2备份和恢复基础392
11.1.3备份与恢复的基本原则394
11.1.4备份与恢复涉及主要数据结构394
11.2备份基础396
11.2.1失败种类396
11.2.2需要备份的信息404
11.2.3备份的种类405
11.3恢复基础406
11.3.1恢复的工作原理406
11.3.2恢复的种类407
11.4备份和恢复408
11.4.1备份和恢复方法408
11.4.2制定恢复策略411
11.4.3制定备份策略412
11.4.4备份和恢复的配制414
11.5rman426
11.5.1rman功能组件427
11.5.2rman恢复目录429
11.5.3连接到rman环境431
11.5.4rman备份集435
11.5.5rman映像副本442
11.5.6rman备份443
11.5.7rman恢复449
11.6expdp和impdp453
11.7exp和imp458
本章小结461
练习题462
Oracle 11g数据库编程入门与实战
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×