暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL Server 2-5年经验求职面试题(中高级)

原创 小小亮 2022-11-11
1535

Mindmajix 提供2-3 年经验的高级 SQL Server 面试问题,帮助您完成面试并获得作为 SQL Server 开发人员的梦想职业。 

我们将 SQL Server 面试问题 - 2022(更新)分为 4 个级别,它们是:

  • 2-3年经验
  • 2 - 5 年经验
  • SQL Server 联接
  • SQL Server 查询

SQL Server 面试的 10 大常见问题

1. COALESCE() & ISNULL() 有什么区别?
2.如何从 SQL 生成文件输出?
3.什么是相关子查询?
4.什么是 OSQL 实用程序?
5. UNION 和 UNIONALL 有什么区别?
6.为什么我们使用 OPEN XML 子句?
7.解释 UNION、MINUS、UNION ALL、INTERSECT?
8.写一个查询来显示员工的第三个最高工资?
9.写一个查询来显示基于城市的员工数量?
10.写一个查询,根据地区显示员工的总工资?

SQL Server 2-3年经验面试题 

1) 以什么顺序处理 SQL 语句?

select的子句按以下顺序处理

  1. FROM 子句
  2. WHERE 子句
  3. GROUP BY 子句
  4. HAVING 子句
  5. 选择子句
  6. ORDER BY 子句
  7. TOP 条款

2) 我们可以编写一个分布式查询并获取一些位于另一台服务器和 Oracle 数据库上的数据吗?

SQL Server 可以连接到任何服务器,只要它具有 Microsoft 的 OLE-DB 提供程序以允许链接。

例如,Oracle 有一个用于 Oracle 的 OLE-DB 提供程序,Microsoft 提供该提供程序以将其作为链接服务器添加到 SQL Server 组。

3) 如果我们删除一个表,它是否也会删除相关对象,如约束、索引、列、默认值、视图和存储过程?

的,SQL Server 删除所有相关对象,这些对象存在于表中,如约束、索引、列、默认值等。但是删除表不会删除视图和存储过程,因为它们存在于表外。

您将如何确定数据库运行的时区?

4) 我们可以在十进制数据类型中添加一个标识列吗?

的,SQL Server 支持这个

5) LEFT JOIN with WHERE 子句和 LEFT JOIN with nowhere 子句有什么区别?

如果不明智或不合逻辑地使用,带有 WHERE 子句的 OUTER LEFT/RIGHT JOIN 可以起到 INNER JOIN 的作用。

6) 执行动态查询的多种方式是什么?

  • 执行 sp_executesql,
  • 执行()

7) COALESCE() 和 ISNULL() 有什么区别?

ISNULL 只接受 2 个参数。检查第一个参数是否为 NULL 值,如果为 NULL,则返回第二个参数,否则返回第一个参数。

COALESCE 接受两个或多个参数。可以应用 2 个或多个参数,但它只返回第一个非 NULL 参数,

8) 如何从 SQL 生成文件输出?

在使用 SQL Server Management Studio 或 Query Analyzer 时,我们在 Menu BAR.QUERTY >> RESULT TO >> Result to FILE 中有一个选项

9) 如何防止 SQL Server 在 SQL 语句执行期间和之后向您提供信息性消息?

设置无计数

10)错了,表中存在重复记录,我们如何删除记录的副本? 

with T as
(
    select * , row_number() over (partition by Emp_ID order by Emp_ID) as rank
    from employee
)

delete
from T
where rank > 1
复制

11) 什么操作员执行模式匹配?

模式匹配运算符是 LIKE,它必须与两个属性一起使用

1. % 表示匹配零个或多个字符并且 

2. _(下划线)表示只匹配一个字符

12) 以下 SQL 表达式之间的逻辑差异是什么?

-- Statement 1 
SELECT COUNT ( * ) FROM Employees

-- Statement 2
SELECT SUM ( 1 ) FROM Employees
复制

它们是相同的,除非表 Employee 表为空,在这种情况下,第一个产生一个单列、包含零的单行表,第二个产生一个“包含空值”的单列、单行表。

13) 是否可以更新视图?如果是,如何,如果不是,为什么?

是的,我们可以修改视图,但是连接视图上的 DML 语句只能修改视图的一个基表(因此,即使视图是在多个表的连接上创建的,也只有一个表,键保留表可以通过风景)。

14) 您能否说出 SQL Server 中可用的不同类型的联接?

  • 外连接——左、右、交叉、全;
  • 内部联接

15) 你认为游标或while循环对于事务数据库有多重要?

想尽可能避免在OLTP数据库中使用游标,游标主要只用于维护或仓库操作。

16)什么是相关子查询?

当子查询绑定到外部查询时。主要用于自连接。

17) 关联子查询或内部连接哪个更快?

相关子查询。

18) 你应该从事 SQL 优化工作并选择一个运行得更快、相关子查询还是存在?

存在

19) 我们可以打电话吗?来自 SQL 服务器的 DLL?

是的,我们可以打电话。来自 SQL Server 的 DLL。 

20) 将标量函数放在查询选择列表或 where 子句中的优缺点是什么?

应尽可能避免,因为这些地方的标量函数会使查询显着减慢。

21) 什么是用户定义的数据类型,什么时候应该使用它们?

用户定义的数据类型允许您通过为数据库提供描述性名称和格式来扩展基本 SQL Server 数据类型。例如,在您的数据库中,有一个名为 Flight_Num 的列出现在许多表中。在所有这些表中,它应该是 varchar(8)。在这种情况下,您可以创建一个名为 Flight_num_type of varchar(8) 的用户定义数据类型,并在所有表中使用它。

请参阅在线书籍中的 sp_addtype、sp_droptype。

22) 你能解释一下 SQL Server 2005 和 Visual Studio 2005 之间的集成吗?

这种集成在 CLR 的帮助下为数据库服务器提供了更广泛的开发,因为 CLR 帮助开发人员获得开发数据库应用程序的灵活性,并且还提供了与 Visual C++、Visual Basic .Net 和 Visual C# .Net 一样的语言互操作性。

CLR 帮助开发人员通过 Visual C++ 或 Visual C# 等编程语言获得数组、类和异常处理,这些语言用于存储过程、函数和触发器,以动态创建数据库应用程序,并提供更有效的代码重用和更快的执行的复杂任务。我们特别喜欢 CLR 环境的错误检查能力,它减少了运行时错误

23) 什么是索引、聚簇索引和非聚簇索引?

聚集索引:聚集索引是一种特殊类型的索引,它重新排序表中记录的物理存储方式。因此表可能只有一个聚集索引。

非聚集索引:非聚集索引是一种特殊类型的索引,其中索引的逻辑顺序与磁盘中行的物理存储顺序不匹配。非聚集索引的叶节点不包含数据页。相反,叶节点包含索引行。

24) 写下涵盖所有选项的 SELECT 语句的一般语法。

这是基本语法:(也可以在在线书籍中查看 SELECT 以获得高级语法)

SELECT select_list
[INTO new_table_]
FROM table_source
[WHERE search_condition]
[GROUP BY group_by__expression]
[HAVING search_condition]
[ORDER BY order__expression [ASC | DESC] ]
复制

25)。什么是连接并解释不同类型的连接?

查询中使用连接来解释不同表之间的关系。联接还允许您根据另一个表中的数据从一个表中选择数据。

连接类型:

INNER JOINs,

OUTER JOINs,

CROSS JOINs
复制

OUTER JOIN 进一步分类为

LEFT OUTER JOINS,

RIGHT OUTER JOINS and

FULL OUTER JOINS.
复制

有关更多信息,请参阅在线书籍中标题为“连接基础”和“使用连接”的页面。

26) 什么是 OSQL 实用程序?

OSQL 是一个命令行工具,用于执行查询并显示与查询分析器相同的结果,但一切都在命令提示符下。

27) OSQL 和查询分析器有什么区别?

OSQL 是执行查询并显示结果的命令行工具,与查询分析器相同,但查询分析器是图形的,OSQL 是命令行工具。OSQL 对于批处理或执行远程查询非常有用。

28) 什么是级联删除/更新?

CASCADE 允许键值的删除或更新通过定义为具有外键关系的表级联,这些外键关系可以追溯到执行修改的表。

SQL Server 2-5年经验面试题

29) SQL Server 连接表时使用了哪些连接算法。

  1. 循环连接(索引键无序)
  2. 合并连接(索引键排序)
  3. 哈希联接(非索引键)

30) 单个查询中可以连接的最大表数是多少?

256,检查 SQL Server 限制

31) SQL Server 中的魔术表是什么?

MAGIC 表会自动创建和删除,以防您使用 TRIGGERS。SQL Server 有两个名为 INSERTED 和 DELETED 的魔术表

这些由 SQL 服务器维护以进行内部处理。当我们在表上使用更新插入或删除时,会使用这些魔术表。这些不是物理表,而是内部表。每当我们使用 insert 语句被触发时, Inserted 表就会被新插入的行填充,而每当 delete 语句被触发时,Deleted 表就会被删除的行填充。 

但是在更新语句被触发的情况下,用于记录的插入和删除表在更新之前的原始行存储在删除表中,而更新的新行存储在插入表中。

32) 我们可以禁用触发器吗?如果是怎么办?

是的,我们可以使用“DISABLE TRIGGER triggerName ON <>”禁用数据库上的单个触发器

我们还可以使用“DISABLE Trigger ALL ON ALL SERVER”来禁用所有触发器

33) 为什么需要索引?存储在哪里?模式对象是什么意思?我们使用视图的目的是什么?

我们不能在索引上创建索引...索引存储在 user_index 表中。在 Schema 上创建的每个对象都是 Schema 对象,如表、视图等。如果我们想将特定数据共享给不同的用户,我们必须使用虚拟表作为基表。所以这是一种观点。

索引用于更快的搜索或从各种表中更快地检索数据。包含一组表的模式,基本上模式意味着数据库的逻辑分离。该视图是为更快地检索数据而创建的。这是一个定制的虚拟表。我们可以创建多个表的单个视图。唯一的缺点是……需要刷新视图才能检索更新的数据。

34) UNION 和 UNION ALL 有什么区别?

Union 将从结果集中删除重复的行,而 Union all 不会。

35) 哪个系统表包含有关创建的所有表的约束信息?

USER_CONSTRAINTS,

系统表包含有关创建的所有表的约束信息

SQL Server 加入面试题

35) 有哪些不同类型的连接?

下面是不同类型的SQL Server 连接

  1. 交叉连接:没有 WHERE 子句的交叉连接产生连接中涉及的表的笛卡尔积。笛卡尔积结果集的大小是第一个表中的行数乘以第二个表中的行数。一个常见的例子是,当一家公司想要将每种产品与定价表结合起来以分析每种产品的每种价格时。
  2. 内部联接: 仅显示两个联接表中匹配的行的联接称为内部联接。这是查询和视图设计器中的默认连接类型。
  3. 外连接:包含行的连接即使在连接表中没有相关行也是外连接。您可以创建三个不同的外连接来指定要包含的不匹配行:
    1. 左外连接: 在左外连接中,第一个命名的表(即“左”表)中的所有行都包括在 JOIN 子句中出现在最左边的表中。不会出现右表中不匹配的行。
    2. Right Outer Join: 在 Right Outer Join 中,包含在 JOIN 子句中出现在最右边的第二个命名表(即“右”表)中的所有行。不包括左表中不匹配的行。
    3. 完全外连接: 在完全外连接中,所有连接表中的所有行都包括在内,无论它们是否匹配。
  4. 自连接:这是一种特殊情况,当一个表连接到自身时,使用一个或两个别名以避免混淆。自联接可以是任何类型,只要联接的表相同。自联接相当独特,因为它只涉及与一个表的关系。一个常见的例子是,当一家公司有一个分层报告结构时,一名员工向另一名员工报告。自联接可以是外部联接或内部联接。

36) 什么是数据仓库? 

  1. 面向主题,意味着数据库中的数据被组织起来,以便与同一现实世界事件或对象相关的所有数据元素链接在一起;
  2. 时变,意味着跟踪和记录数据库中数据的变化,以便生成报告显示随时间的变化;
  3. 非易失性,这意味着数据库中的数据永远不会被覆盖或删除,一旦提交,数据是静态的,只读的,但会保留以供将来报告。
  4. 集成,这意味着数据库包含来自组织的大部分或全部运营应用程序的数据,并且这些数据是一致的。

37) 什么是活锁?

活锁就是这样一种,由于一系列重叠的共享锁不断干扰,对独占锁的请求被反复拒绝。SQL Server 在四次拒绝后检测到这种情况并拒绝进一步的共享锁。当读取事务独占表或页面时也会发生活锁,从而迫使写入事务无限期等待。

38) SQL Server 如何执行带有嵌套子查询的语句?

当 SQL Server 执行带有嵌套子查询的语句时,它总是首先执行最里面的查询。此查询将其结果传递给下一个查询,依此类推,直到到达最外面的查询。它是返回结果集的最外层查询。

39) 如何在现有表中添加列?

ALTER TABLE 部门添加(年龄,编号);

40) 可以从表中删除一列吗?

YES,要删除表中的列,请使用 ALTER TABLE table_name DROP COLUMN column_name

41) 您使用哪个语句来消除函数 TO_CHAR(SYSDATE,'Month, DD, YYYY') 中月份和日期值之间的填充空格?

要删除填充空格,请在包含空格的日期元素之前使用“fm”前缀。TO_CHAR(SYSDATE,'fmMonth DD, YYYY')

42) 除了在第二个查询中返回的行之外,您使用哪个运算符从一个查询中返回所有行?

您使用EXCEPT 运算符从一个查询返回所有行,但在第二个查询中发现重复行除外。UNION 运算符返回两个查询中的所有行减去重复项。UNION ALL 运算符返回两个查询中的所有行,包括重复行。INTERSECT 运算符仅返回两个查询中都存在的那些行。 

43) 你将如何创建列别名?

指定列别名时,AS 关键字是可选。 

44) 以什么顺序处理 SQL 语句?

subselect 的子句按以下顺序处理(DB2):

  1. FROM 子句
  2. WHERE 子句 
  3. GROUP BY 子句
  4. HAVING 子句 
  5. 选择子句 
  6. ORDER BY 子句 
  7. FETCH FIRST 子句

45) 我们如何确定用户定义的函数依赖于哪些对象?

sp_depends系统存储过程或查询说取决于系统表以返回用户定义函数所依赖的对象列表

SELECT DISTINCT so1.name, so2.name FROM sysobjects so1
INNER JOIN sysdepends sd
ON so1.id = sd.id
INNER JOIN sysobjects so2
ON so2.id = sd.depid
WHERE so1.name = '<>'
复制

46)。什么是锁升级?

查询首先采用占用空间最小的最低级别锁(行级别)。当太多行被锁定(需要太多 RAM)时,锁定会升级为范围或页面锁定。如果太多页被锁定,它可能会升级为表锁。

47) #temp 表和@table 变量之间的主要区别是什么?首选哪一个? 

  1. SQL Server 可以在 #temp 表上创建列统计信息
  2. 可以在#temp 表上创建索引
  3. @table 变量存储在内存中达到某个阈值。

48) SQL Server 中的检查点是什么?

当我们在未直接提交到数据库的 SQL SERVER 上执行操作时。所有操作都必须登录到事务日志文件,然后它们应该在主数据库上完成。检查点是提醒 SQL Server 将所有数据保存到主数据库的点,如果没有检查点,那么日志文件就会满我们可以使用 Checkpoint 命令提交 SQL SERVER 中的所有数据。当我们停止 SQL Server 时,将需要很长时间,因为 Checkpoint 也会被触发。

49) 为什么我们使用 OPEN XML 子句?

OPENXML 以一种有效的方式解析 SQL Server 中的 XML 数据。它的主要功能是将 XML 数据插入数据库。

50) 我们可以在 SQL Server 表中存储 PDF 文件吗?

是的,我们可以使用 blob 数据类型存储此类数据。

51) 我们可以在 SQL Server 表中存储视频吗?

是的,我们可以使用 SQL Server 2008 中引入的 FILESTREAM 数据类型将视频存储在 SQL Server 中。

52) 我们可以对用户隐藏存储过程的定义吗?

是的,在创建存储过程时,我们可以使用 WITH ENCRYPTION,它将 CREATE PROCEDURE 语句的原始文本转换为加密格式。

53) 当我们谈论 SQL Server 索引时,包含哪些列?

包含列的索引是在 SQL Server 2005 中开发的,它有助于覆盖查询。包含列的索引是非聚集索引,

具有以下优点:

  • 在 include 语句中定义的列(称为非键列)不计入
    数据库引擎的列数中。
  • 以前无法在查询中使用的列,例如 nvarchar(max),可以
    作为非键列包含在内。
  • 最多可以使用 1023 个附加列作为非键列。

54)。什么是执行计划?您如何看待执行计划?

执行计划基本上是一个路线图,它以图形或文本的方式显示 SQL Server 查询优化器为存储过程或即席查询选择的数据检索方法,是开发人员了解查询性能特征的非常有用的工具或存储过程,因为计划是 SQL Server 将放置在其缓存中并用于执行存储过程或查询的计划。

在查询分析器中有一个名为“显示执行计划”的选项(位于查询下拉菜单中)。如果打开此选项,它将在再次运行查询时在单独的窗口中显示查询执行计划。

55)。解释 UNION、MINUS、UNION ALL、INTERSECT?

INTERSECT 返回两个查询选择的所有不同行。

MINUS:返回第一个查询而不是第二个查询选择的所有不同行。

UNION:返回任一查询选择的所有不同行

UNION ALL:  返回任一查询选择的所有行,包括所有重复行

SQL Server 查询面试问题及答案

SQL Server DATEADD() 函数

56) 写一个查询来显示 15 天后的日期? 

SELECT DATEADD(dd, 15,getdate())
复制

57) 编写查询以显示 12 个月后的日期?

SELECT DATEADD(mm, 2, getdate())
复制

58) 编写查询以显示 15 天之前的日期? 

SELECT DATEADD(dd, -15, getdate())
复制

SQL Server DATEDIFF() 函数

59) 编写查询以显示员工详细信息以及 exp?

SELECT *
DATEDIFF(yy, doj, getdate()) AS ‘Exp’ FROM employee
复制

60) 写一个查询来显示在 ECE 部门工作的员工的详细信息以及他有 3 年以上的经验?

SELECT *
DATEDIFF(yy, doj, getdate()) AS ‘Exp’ 
FROM employee 
WHERE DATEDIFF(yy, doj, getdate())>3 AND dept_name=’ECE’
复制

61) 编写查询以显示员工详细信息和年龄?

SELECT *
DATEDIFF(yy, dob, getdate()) AS ‘Age’ FROM employee
复制

62) 编写查询以显示年龄>18 岁的员工详细信息?

SELECT *
DATEDIFF(yy, dob, getdate()) AS ‘Age’ FROM employee
WHERE DATEDIFF(yy, dob, getdate())>18
复制

SQL Server 多行函数

63) 编写查询以显示员工的最低工资?

SELECT MIN (salary)
FROM employee
复制

64) 编写查询以显示员工的最高工资?

SELECT MAX(salary)
FROM employee
复制

65) 写一个查询来显示所有员工的总工资?

SELECT SUM(salary) FROM employee
复制

66) 编写查询以显示员工的平均工资?

SELECT AVG(salary) FROM employee
复制

67) 写一个查询来计算在公司工作的员工人数?

SELECT COUNT(*) FROM employee
复制

68) 编写查询以显示员工的最低和最高工资?

SELECT MIN(salary) AS ‘min sal’, MAX(salary) AS ‘max sal’ FROM employee
复制

69) 写一个查询来计算在 ECE 部门工作的员工人数?

SELECT COUNT(*) FROM employee WHERE dept_name=’ECE’
复制

70) 编写查询以显示员工的第二个最高工资?

SELECT MAX(salary)
FROM employee
WHERE salary < (SELECT MAX(salary) FROM emp)
复制

71) 编写查询以显示员工的第三个最高工资?

SELECT MAX(salary)
FROM employee
WHERE salary < (SELECT MAX(salary) FROM emp where salary < (SELECT MAX(salary) FROM emp))
复制

SQL SERVER:GROUP BY 子句

72) 编写查询以显示基于城市的员工总工资?

SELECT city, SUM(salary) 
FROM employee 
GROUP BY city;
复制

73) 编写一个查询来显示基于城市的员工数量?

SELECT city, COUNT(emp_no) 
FROM employee
GROUP BY city;
复制

(或者)

SELECT city, COUNT(emp_no) AS ‘no.of employees’ 
FROM employee 
GROUP BY city;
复制

74) 编写查询以显示基于地区的员工总工资?

SELECT region, SUM(salary) AS ‘total_salary’ 
FROM employee
GROUP BY region;
复制

75) 写一个查询来显示在每个区域工作的员工数量?

SELECT region, COUNT(gender) 
FROM employee
GROUP BY region;
复制

(或者) 

SELECT region, COUNT(gender) AS ‘no.of males’
FROM employee
GROUP BY region;
复制

76) 编写查询以根据部门名称显示最低工资和最高工资?

SELECT dept_name, MIN(salary) AS ‘min sal’, MAX(salary) AS ‘max sal’ 
FROM employee
GROUP BY dept_name
复制

77) 编写一个查询以根据部门名称显示员工的总工资?

SELECT dept_name, SUM(salary) AS ‘total_sal’ 
FROM employee
GROUP BY dept_name
复制

78) 编写查询以显示编号。每个部门的男性人数?

SELECT dept_name, COUNT(gender) 
FROM employee
GROUP BY dept_name 
WHERE gender=’male’
复制

(或者)

SELECT dept_name, COUNT(gender) AS ‘no.of males’ 
FROM employee
WHERE gender=’male’ 
GROUP BY dept_name;
复制

注意:如果我们想应用 use having 子句,我们不能在 GROUP BY CLAUSE 中应用 where 条件。

我们必须在 GROUP BY 之前使用 WHERE 条件,但不能在 GROUP BY 之后应用 where 条件。

SQL SERVER:有子句

79) 编写一个查询,根据总工资> 12000 的员工显示总工资?

SELECT city, SUM(salary) AS ‘total_salary’ 
FROM employee
GROUP BY city
HAVING SUM(salary)>12000;
复制

80) 写一个查询,显示一个城市平均工资>= 23000 的所有员工的总工资?

SELECT city, SUM(salary) AS ‘total_salary’ 
FROM employee
GROUP BY city
HAVING AVG(salary)  >= 23000;
复制

SQL 服务器:子查询

81) 编写查询以显示员工编号为 101、102 的员工详细信息?

SELECT *
FROM employee
WHERE Emp_No in (101, 102)
复制

(或者)

SELECT * FROM employee
WHERE Emp_No in (select emp_no from emp)
复制

82) 编写查询以显示属于 ECE 部门的员工详细信息?

SELECT Emp_No, Emp_Name, Salary
FROM employee
WHERE dept_no in (select dept_no from dept where dept_name = ‘ECE’)
复制

SQL SERVER TOP 子句

83) 编写一个查询来显示表中的第一条记录?

SELECT TOP 1 * 
FROM employee
复制

84) 编写一个查询来显示表中的前 3 条记录?

SELECT TOP 3 *
FROM employee
复制

85) 编写一个查询来显示表中的最后一条记录?

SELECT TOP 1 *
FROM employee 
ORDER BY emp_no descending
复制

SQL SERVER:排名函数

学生详情表:

学生_没有学生姓名百分比行 IDRank_IDDenseRank_ID
105詹姆士87111
106约翰83222
101阿尼尔83322
104维杰83422
108拉克什76553
102苏尼尔76653
103阿杰76753
107内存75884

86) 编写一个查询来显示学生详细信息以及按学生姓名排列的 row_no 顺序?

SELECT *, ROW_NUMBER() OVER (ORDER BYstudent_name) AS ‘Row_ID’
FROM employee
复制

87) 编写一个查询来显示表中的偶数记录?

SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY student_no) AS ‘ Row_ID’ FROM student)
WHERE row_id %2=0
复制

88) 编写一个查询来显示学生表中的奇数记录?

SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY student_no) AS Row_ID FROM student)
WHERE row_id %2!=0
复制


原文标题:SQL Server Interview Questions for 2-5 Years Experienced

原文链接:https://mindmajix.com/sql-server-interview-questions-for-2-5-years


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论