第3章:复习篇——第4节:创建、管理视图与索引---题库

目录

一、单选题

[1.数据库中只存放视图的( )。](#1.数据库中只存放视图的( )。)

[2.视图是从一个表或者多个表导出的( )。](#2.视图是从一个表或者多个表导出的( )。)

[3.对于视图的数据源,描述不正确的是( )。](#3.对于视图的数据源,描述不正确的是( )。)

[4.下面用来创建视图的语句是( )。](#4.下面用来创建视图的语句是( )。)

[5.下面用来修改视图的语句是( )。](#5.下面用来修改视图的语句是( )。)

[6.下面用来删除视图的语句是( )。](#6.下面用来删除视图的语句是( )。)

[7.已知存在学生表 Student(Sno char (10), Sname nvarchar (20), Sage int),要创建视图 v_Stu_18,只包含年龄为 18 岁的学生姓名和学号,正确的 CREATE VIEW 语句是 ( )。](#7.已知存在学生表 Student(Sno char (10), Sname nvarchar (20), Sage int),要创建视图 v_Stu_18,只包含年龄为 18 岁的学生姓名和学号,正确的 CREATE VIEW 语句是 ( )。)

[8.执行 "CREATE VIEW v_StuAvg AS SELECT Sdept, AVG (Sage) AS AvgAge FROM Student GROUP BY Sdept;" 创建视图后,下列操作能成功执行的是( )](#8.执行 “CREATE VIEW v_StuAvg AS SELECT Sdept, AVG (Sage) AS AvgAge FROM Student GROUP BY Sdept;” 创建视图后,下列操作能成功执行的是( ))

二、实践题

1.使用SQL语句创建的视图Goods_con_woman,要求筛选出性别为"女"的客户信息。

2.使用SSMS创建视图Goods_view1,显示客户编号、姓名、收货地址、订单编号、销售数量。

3.使用SQL语句创建视图Goods_view2,显示顾客反馈为好评的商品信息,即显示商品编号、商品名称、品牌、商品表述、反馈评论。

4.使用SQL语句修改视图Goods_con_woman中陈梅的信息,将地址修改为"西安市鄠邑区国防学院"。

5.使用SSMS查看Goods_view2的属性,并删除此视图。

6.在订单表的"商品ID"列上创建一个非聚集索引,索引名为ix_goods。

7.在客户表的"账号"和"姓名"列上创建一个复合索引,索引名为acc_name。

8.把客户表的索引acc_name重命名为ix_acc_name。

9.使用ix_acc_name查询"李丽"该客户的信息。




一、单选题

1.数据库中只存放视图的( )。

  • *A、*操作
  • *B、*对应数据
  • *C、*定义
  • *D、*限制

答案:C

解析:视图是基于基表的虚拟表,数据库中并不会存放视图对应的实际数据,只存储视图的定义(即创建视图的 SQL 语句)。当查询视图时,数据库会根据视图定义去基表中提取数据,而非提前存储视图的操作、对应数据或限制。

2.视图是从一个表或者多个表导出的( )。

  • *A、*基表
  • *B、*虚表
  • *C、*索引
  • *D、*记录

答案:B

解析:视图本身不存储实际数据,而是从一个或多个基表(或其他视图)中导出的虚表。它的本质是一条预定义的 SELECT 查询语句,查询视图时才会动态从基表获取数据;基表是存储实际数据的表,索引是提升查询效率的结构,记录是表中的行数据,均不符合视图的特性。

3.对于视图的数据源,描述不正确的是( )。

  • *A、*视图中的数据允许来源于一个或多个表
  • *B、*如果视图中的列直接来源于表的某列,可以直接使用数据源表的列名或数据类型
  • *C、*如果视图的列来源于表的列表达式,则有必要对表达式定义别名,数据类型就是表达式结果的数据类型
  • *D、*视图中的数据允许来源于其他数据库的表

答案:D

解析:

  • A 正确:视图的数据源可以是单个表,也可以是多个表(多表连接);
  • B 正确:若视图列直接来自基表列,无需额外定义,可直接沿用基表列的名称和数据类型;
  • C 正确:若视图列是表达式(如Sage+1),必须给表达式定义别名,数据类型由表达式计算结果决定;
  • D 错误:常规视图的数据源仅能来自当前数据库的表 / 视图,无法直接引用其他数据库的表(跨库需通过特定方式如链接服务器实现,并非视图本身的默认支持)。

4.下面用来创建视图的语句是( )。

  • *A、*create table
  • *B、*alter view
  • *C、*drop view
  • *D、*create view

答案:D

解析:CREATE VIEW是创建视图的标准 T-SQL 语句;CREATE TABLE用于创建表,ALTER VIEW用于修改视图,DROP VIEW用于删除视图。

5.下面用来修改视图的语句是( )。

  • *A、*create table
  • *B、*alter view
  • *C、*drop view
  • *D、*create view

答案:B

解析:ALTER VIEW用于修改已存在的视图定义;CREATE TABLE创建表,DROP VIEW删除视图,CREATE VIEW是新建视图,而非修改。

6.下面用来删除视图的语句是( )。

  • *A、*create table
  • *B、*alter view
  • *C、*drop view
  • *D、*create view

答案:C

解析:DROP VIEW用于删除已创建的视图;CREATE TABLE创建表,ALTER VIEW修改视图,CREATE VIEW新建视图。

7.已知存在学生表 Student(Sno char (10), Sname nvarchar (20), Sage int),要创建视图 v_Stu_18,只包含年龄为 18 岁的学生姓名和学号,正确的 CREATE VIEW 语句是 ( )。

  • *A、*CREATE VIEW v_Stu_18 AS SELECT Sno, Sname FROM Student WHERE Sage=18;
  • *B、*CREATE v_Stu_18 VIEW AS SELECT Sno, Sname FROM Student WHERE Sage=18;
  • *C、*CREATE VIEW v_Stu_18 SELECT Sno, Sname FROM Student WHERE Sage=18;
  • *D、*CREATE VIEW v_Stu_18 AS (SELECT Sno, Sname FROM Student WHERE Sage=18);

答案:A

解析:创建视图的正确语法是 CREATE VIEW 视图名 AS SELECT 查询语句

  • A:符合CREATE VIEW 视图名 AS SELECT的标准语法;
  • B:VIEW关键字位置错误,应在视图名前;
  • C:缺少AS关键字,语法不完整;
  • D:子查询无需额外加括号,属于多余语法。

8.执行 "CREATE VIEW v_StuAvg AS SELECT Sdept, AVG (Sage) AS AvgAge FROM Student GROUP BY Sdept;" 创建视图后,下列操作能成功执行的是( )

  • *A、*INSERT INTO v_StuAvg VALUES (' 计算机 ', 20);
  • *B、*UPDATE v_StuAvg SET AvgAge=21 WHERE Sdept=' 计算机 ';
  • *C、*SELECT Sdept, AvgAge FROM v_StuAvg;
  • *D、*DELETE FROM v_StuAvg WHERE Sdept=' 计算机 ';

答案:C

解析:该视图基于GROUP BY聚合查询创建(包含平均值计算),属于不可更新视图(聚合视图、带分组 / DISTINCT / 联合的视图均无法执行增删改操作):

  • A、B、D 错误:INSERT/UPDATE/DELETE 均为数据修改操作,无法对聚合视图执行;
  • C 正确:SELECT 是查询操作,视图的核心用途就是提供查询接口,可正常执行。



二、实践题

数据库代码,适合下面所有题

复制代码
---创建数据库Goods
USE  MASTER
IF  EXISTS(SELECT * FROM  sysdatabases WHERE  name ='Goods') --判断数据库是否存在
   DROP DATABASE Goods  --如果存在,删除该数据库
GO
CREATE DATABASE Goods
  ON PRIMARY
	(NAME='Goods',
	FILENAME='d:\database\Goods.mdf',
	SIZE=10MB,
	MAXSIZE=60MB,
	FILEGROWTH=2MB)   
  LOG ON
	(NAME='Goods_log',
	FILENAME='d:\database\Goods_log.ldf',
	SIZE=15MB,
	MAXSIZE=UNLIMITED,
	FILEGROWTH=10%)
GO

--创建客户表Consumer表
USE Goods               --将当前数据库设置为Goods.
GO
IF EXISTS(SELECT * FROM  sys.sysobjects  WHERE  name='Consumer' and type='U')
DROP  TABLE  Consumer       --如果存在,删除Consumer表
Go
CREATE  TABLE Consumer
(Consumer_Id  nvarchar(30) NOT NULL PRIMARY KEY,
 Account	varchar(20) NOT NULL UNIQUE,
Password varchar(20),
Name nvarchar(20),
Sex nchar(1),
Tel varchar(20),
Address nvarchar(60)
)	
GO

--给Consumer表中的Sex字段设置检查约束,在输入值时只允许输入"男"或"女",约束名为CK_CSex。
ALTER TABLE Consumer  
     ADD CONSTRAINT CK_CSex  CHECK(Sex='男' or  Sex='女')

--创建员工表Employee
USE Goods               --将当前数据库设置为Goods.
GO
IF EXISTS(SELECT * FROM  sys.sysobjects  WHERE  name='Employee' and type='U')
DROP  TABLE  Employee       --如果存在,删除Employee表
Go
CREATE  TABLE Employee
(Employee_Id  nvarchar(30)  Not null  PRIMARY KEY,
Account  varchar(20) Not null UNIQUE,
Password varchar(20),
Name nvarchar(20),
Sex nchar(1),
Tel varchar(20)
)
GO

--给Employee表中的Sex字段设置检查约束,在输入值时只允许输入"男"或"女",约束名为CK_ESex。
ALTER TABLE Employee 
     ADD CONSTRAINT CK_ESex  CHECK(Sex='男' or  Sex='女')

--创建商品类别表Category表
USE Goods
IF EXISTS(SELECT * FROM  sys.sysobjects  WHERE  NAME='Category' and TYPE='U')
    DROP  TABLE  Category
GO
CREATE  TABLE  Category
(Category_Id  nvarchar(30) Not null PRIMARY KEY,
Name nvarchar(30)
)
GO


--创建商品表Shop_goods
USE Goods
IF OBJECT_ID('Shop_goods')  is NOT NULL
 DROP  TABLE  Shop_goods
GO
CREATE TABLE Shop_goods
(Goods_Id nvarchar(30) Not null PRIMARY KEY,
Name nvarchar(30)	Not null,
Brand nvarchar(30),
Size nvarchar(30),
Price decimal(8,2) Not null check(Price>0),
Stock int Not null check(Stock>0 or Stock=0),
Image_Url varchar(50),
Description nvarchar(100),
Category_Id nvarchar(30) Not null,
CONSTRAINT FK_goods_Category FOREIGN KEY(Category_Id) REFERENCES Category(Category_Id)
)
GO


--创建订单表Shop_Order
USE Goods
IF OBJECT_ID('Shop_Order')  is NOT NULL
	DROP TABLE Shop_Order
GO
CREATE TABLE Shop_Order
(Order_Id nvarchar(30) Not null PRIMARY KEY,
Goods_Id nvarchar(30) Not null,
Quantity int check(Quantity>0),
Order_Date date,
Status nvarchar(10),
Consumer_Id nvarchar(30) Not null,
Comment nvarchar(100),
Employee_Id nvarchar(30) Not null,
Shipping_Date date,
CONSTRAINT FK_Order_Goods FOREIGN KEY(Goods_Id)  REFERENCES  Shop_goods(Goods_Id),
CONSTRAINT FK_Order_Consumer FOREIGN KEY(Consumer_Id)  REFERENCES  Consumer(Consumer_Id),
CONSTRAINT FK_Order_Employee FOREIGN KEY(Employee_Id)  REFERENCES  Employee(Employee_Id)
)
GO


--往Consumer表中添加记录
INSERT  INTO Consumer VALUES('c0001','356985284','fgg32658','陈梅','女','13897565789','西安市荣成花园')
INSERT  INTO Consumer VALUES('c0002','987546562','khe65489','郭琳','女','13759846248','西安市翡翠大厦')
INSERT  INTO Consumer VALUES('c0003','898475681','rkb46822','王亮','男','13526897524','西安市荣成花园')
INSERT  INTO Consumer VALUES('c0004','345698752','kdr58854','张晶','女','13562595326','西安市科创小区')
INSERT  INTO Consumer VALUES('c0005','659875421','iua25867','李丽','女','13798265256','咸阳市彩虹花园')
INSERT  INTO Consumer VALUES('c0006','957894532','itv18866','赵静','女','13657892384','咸阳市彩虹花园')
INSERT  INTO Consumer VALUES('c0007','459726863','psj25632','王甜','女','13789524561','咸阳市中天小区')
INSERT  INTO Consumer VALUES('c0008','985423853','tfj95632','郭凯','男','13895456232','西安市枫林华府')
INSERT  INTO Consumer VALUES('c0009','689413352','pub4983','李馨','女','13894578923	','西安市西仪小区')
INSERT  INTO Consumer VALUES('c0010','796325633','sef36971','陈媛','女','13789546289','西安市恒大城')

--往Employee表中添加记录
INSERT  INTO Employee VALUES('e001','2018001', 'xs18001','张兴龙','男','13897654224')
INSERT  INTO Employee VALUES('e002','2018002', 'xs18002','李小萌','女','13789221453')
INSERT  INTO Employee VALUES('e003','2018003', 'xs18003	','赵春燕','女','13678248632')
INSERT  INTO Employee VALUES('e004','2018004', 'xs18004','王凯强','男','13679525421')
INSERT  INTO Employee VALUES('e005','2019001', 'fh19001','陈东强','男','13892463262')
INSERT  INTO Employee VALUES('e006','2019002', 'fh19002','马家辉','男','13756921532')
INSERT  INTO Employee VALUES('e007','2019003', 'fh19003','蔡春涛','男','13952153685' )
INSERT  INTO Employee VALUES('e008','2019004', 'fh19004	','何萌萌','女','13895214832' )
INSERT  INTO Employee VALUES('e009','2020001', 'kf20001','李晓敏','女','13789542789' )
INSERT  INTO Employee VALUES('e010','2020002', 'kf20001','张小慧','女','13689326854' )
GO

--往Category表中添加记录
INSERT  INTO Category VALUES('b001','蔬菜')
INSERT  INTO Category VALUES('b002','水果')
INSERT  INTO Category VALUES('b003','肉蛋')
INSERT  INTO Category VALUES('b004','美食')
INSERT  INTO Category VALUES('b005','饮品')
INSERT  INTO Category VALUES('b006','零食')
INSERT  INTO Category VALUES('b007','粮油')
INSERT  INTO Category VALUES('b008','日化')
INSERT  INTO Category VALUES('b009','百货')
Go

--往Shop_goods 表中添加记录
INSERT  INTO Shop_goods VALUES('g0001','胡萝卜','秦农','500g',2.3,600,'d:\b001\g0001.jpg','脆嫩多汁无农药残留','b001')
INSERT  INTO Shop_goods VALUES('g0002','青菜','秦农','500g',4.2,300,'d:\b001\g0002.jpg','本地鲜菜','b001')
INSERT  INTO Shop_goods VALUES('g0003','西瓜','绿源','500g',1.2,800,'d:\b002\g0003.jpg','宁夏富硒西瓜','b002')
INSERT  INTO Shop_goods VALUES('g0004','石榴','绿源','500g',3.5,500,'d:\b002\g0004.jpg','临潼石榴酸甜多汁','b002')
INSERT  INTO Shop_goods VALUES('g0005','鸡蛋','凤鸣','500g',4.5,800,'d:\b003\g0005.jpg','天然谷物饲养','b003')
INSERT  INTO Shop_goods VALUES('g0006','鸡小腿','凤鸣','500g',8.9,600,'d:\b003\g0006.jpg','天然谷物饲养','b003')
INSERT  INTO Shop_goods VALUES('g0007','手抓饼','安井','400g',6.3,300,'d:\b004\g0007.jpg','葱香浓郁','b004')
INSERT  INTO Shop_goods VALUES('g0008','素水饺','思念','500g',7.2,250,'d:\b004\g0008.jpg','皮薄馅大','b004')
INSERT  INTO Shop_goods VALUES('g0009','饮用水','康师傅','1.5L*6',7.99,800,'d:\b005\g0009.jpg','纯净健康','b005')
INSERT  INTO Shop_goods VALUES('g0010','酸牛奶','蒙牛','200g*10',38.8,200,'d:\b005\g0010.jpg','点滴纯粹乳此简单','b005')
INSERT  INTO Shop_goods VALUES('g0011','巧克力','金帝','135g',19.5,100,'d:\b006\g0011.jpg','颗颗香浓粒粒丝滑','b006')
INSERT  INTO Shop_goods VALUES('g0012','麻花','于香缘','330g',6.9,100,'d:\b006\g0012.jpg','酥脆可口唇齿留香','b006')
INSERT  INTO Shop_goods VALUES('g0013','大米','五湖','5kg',31.9,100,'d:\b007\g0013.jpg','香软可口','b007')
INSERT  INTO Shop_goods VALUES('g0014','小麦粉','金沙河','5kg',19.9,100,'d:\b007\g0014.jpg','绿色种植光照充足','b007')
INSERT  INTO Shop_goods VALUES('g0015','洗衣皂','中华','110g*6',9.9,200,'d:\b008\g0015.jpg','天然材料安心健康','b008')
INSERT  INTO Shop_goods VALUES('g0016','牙膏','两面针','105g*2',7.8,200,'d:\b008\g0016.jpg','草本护龈','b008')
INSERT  INTO Shop_goods VALUES('g0017','早餐杯','玻爵','2个',8.8,100,'d:\b009\g0017.jpg','网红早餐杯','b009')
INSERT  INTO Shop_goods VALUES('g0018','筷筒','东升','1个',5.88,50,'d:\b009\g0018.jpg','304食品级不锈钢','b009')
Go

--往Shop_Order表中添加记录
INSERT  INTO Shop_Order VALUES('1','g0001',1,'2020-8-01','已发货','c0001','好评','e005','2020-8-01')
INSERT  INTO Shop_Order VALUES('2','g0001',1,'2020-8-02','已发货','c0003','好评','e005','2020-8-02')
INSERT  INTO Shop_Order VALUES('3','g0004',2,'2020-8-03','已发货','c0002','好评','e005','2020-8-03')
INSERT  INTO Shop_Order VALUES('4','g0004',2,'2020-8-03','已发货','c0001','好评','e005','2020-8-03')
INSERT  INTO Shop_Order VALUES('5','g0004',4,'2020-8-03','已发货','c0004','好评','e005','2020-8-03')
INSERT  INTO Shop_Order VALUES('6','g0006',2,'2020-8-03','已发货','c0005','好评','e006','2020-8-03')
INSERT  INTO Shop_Order VALUES('7','g0006',2,'2020-8-03','已发货','c0006','好评','e006','2020-8-03')
INSERT  INTO Shop_Order VALUES('8','g0007',2,'2020-8-03','已发货','c0006','中评','e007','2020-8-04')
INSERT  INTO Shop_Order VALUES('9','g0010',1,'2020-8-04','已发货','c0007','好评','e008','2020-8-04')
INSERT  INTO Shop_Order VALUES('10','g0012',2,'2020-8-04','已下单','c0007','','e008','2020-8-05')
INSERT  INTO Shop_Order VALUES('11','g0015',1,'2020-8-04','已下单','c0008','','e008','2020-8-05')
INSERT  INTO Shop_Order VALUES('12','g0016',1,'2020-8-04','已下单','c0008','','e008','2020-8-05')

GO

1.使用SQL语句创建的视图Goods_con_woman,要求筛选出性别为"女"的客户信息。

复制代码
use goods;
go

-- 创建视图,筛选性别为"女"的客户全部信息
create view goods_con_woman
as
select * from consumer where sex = '女';
go

-- 验证视图(可选)
select * from goods_con_woman;

2.使用SSMS创建视图Goods_view1,显示客户编号、姓名、收货地址、订单编号、销售数量。

  • 打开 SSMS,连接数据库实例,展开Goods数据库 → 展开 "视图" → 右键 "新建视图";
  • 在 "添加表" 窗口,勾选Consumer(客户表)和Shop_Order(订单表),点击 "添加"→"关闭";
  • 在视图设计界面,依次勾选字段:
    • Consumer表的Consumer_Id(客户编号)、Name(姓名)、Address(收货地址);
    • Shop_Order表的Order_Id(订单编号)、Quantity(销售数量);
  • 点击 "保存",输入视图名Goods_view1,点击 "确定";
  • 验证:展开 "视图"→ 右键Goods_view1→"选择前 1000 行",查看结果。
复制代码
use goods;
go

-- 创建视图Goods_view1,关联客户表和订单表
create view goods_view1
as
select 
    c.consumer_id as 客户编号,   -- 客户表的客户编号
    c.name as 姓名,             -- 客户表的姓名
    c.address as 收货地址,      -- 客户表的收货地址
    so.order_id as 订单编号,     -- 订单表的订单编号
    so.quantity as 销售数量      -- 订单表的销售数量
from consumer c
join shop_order so on c.consumer_id = so.consumer_id;  -- 按客户编号关联两张表
go

-- 验证视图(可选):查询视图数据
select * from goods_view1;

3.使用SQL语句创建视图Goods_view2,显示顾客反馈为好评的商品信息,即显示商品编号、商品名称、品牌、商品表述、反馈评论。

复制代码
use goods;
go

-- 创建视图,关联商品表和订单表,筛选好评商品
create view goods_view2
as
select 
    sg.goods_id as 商品编号,
    sg.name as 商品名称,
    sg.brand as 品牌,
    sg.description as 商品表述,
    so.comment as 反馈评论
from shop_goods sg
join shop_order so on sg.goods_id = so.goods_id
where so.comment = '好评';
go

-- 验证视图(可选)
select * from goods_view2;

4.使用SQL语句修改视图Goods_con_woman中陈梅的信息,将地址修改为"西安市鄠邑区国防学院"。

复制代码
use goods;
go

-- 视图本质关联基表,修改视图数据即修改基表数据
update goods_con_woman
set address = '西安市鄠邑区国防学院'
where name = '陈梅';
go

-- 验证修改结果(可选)
select * from goods_con_woman where name = '陈梅';

5.使用SSMS查看Goods_view2的属性,并删除此视图。

步骤 1:查看属性

  1. 展开Goods数据库 → 展开 "视图" → 右键Goods_view2 → 选择 "属性";

  2. 在属性窗口可查看视图的所有者、创建日期、是否可更新等信息。

步骤 2:删除视图

  • 方式 1(图形化):右键Goods_view2 → 选择 "删除" → 在 "删除对象" 窗口点击 "确定";方式 2(SQL 语句,备用):

    use goods;
    go
    drop view if exists goods_view2;
    go

6.在订单表的"商品ID"列上创建一个非聚集索引,索引名为ix_goods。

复制代码
use goods;
go

-- 非聚集索引:不改变数据物理存储,提升查询效率
create nonclustered index ix_goods
on shop_order (goods_id);
go

7.在客户表的"账号"和"姓名"列上创建一个复合索引,索引名为acc_name。

复制代码
use goods;
go

-- 复合索引:基于多个字段创建,适合同时按账号+姓名查询的场景
create nonclustered index acc_name
on consumer (account, name);
go

8.把客户表的索引acc_name重命名为ix_acc_name。

复制代码
use goods;
go

-- SQL Server重命名索引需用sp_rename存储过程
exec sp_rename 
    @objname = 'consumer.acc_name',  -- 原索引名(格式:表名.索引名)
    @newname = 'ix_acc_name',        -- 新索引名
    @objtype = 'index';              -- 指定对象类型为索引
go

9.使用ix_acc_name查询"李丽"该客户的信息。

复制代码
use goods;
go

-- 强制使用指定索引(确保使用ix_acc_name)
select * from consumer with (index(ix_acc_name))
where name = '李丽';
go
相关推荐
爱学习的潇潇2 小时前
Postman学习之常用断言
自动化测试·软件测试·功能测试·学习·程序人生·lua·postman
李慕婉学姐2 小时前
Springboot旅游景点管理系统2fj40iq6(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
JeffDingAI2 小时前
【Datawhale学习笔记】NLP 概述
笔记·学习·自然语言处理
非凡ghost2 小时前
SoftPerfect Network Scanner(网络扫描管理工具)
网络·windows·学习·软件需求
tobias.b2 小时前
408真题解析-2009-35-网络-后退N帧协议
网络·计算机考研·408真题解析
早日退休!!!2 小时前
Roofline模型核心原理:延迟、吞吐与并发的底层逻辑
大数据·网络·数据库
tobias.b2 小时前
408真题解析-2009-37-网络-最短帧长和争用期计算
网络·计算机考研·408考研·408真题解析
寒山李白2 小时前
全面股市知识普及:从概念到实践
学习·投资·概念·理财·股市
是娇娇公主~2 小时前
TCP和UDP的区别全面对比讲解
网络·tcp/ip·udp