MySQL基础(十):视图

【MySQL】视图 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自我们定义视图的查询中使用的表,并且是在使用视图时动态生成的。通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。 阅读详情
  • 本博客是《MySQL基础》系列博客的第十部分,主要介绍MySQL的视图
  • 本博客既为方便自己查看复习而作,亦为你而作,望能有所裨益
  • 学习交流请联系 April_0911@163.com

基本概念

视图是虚拟表,本身不存储数据,而是按照指定的方式进行查询的SQL语句的封装

视图意义

通过定义视图可以

  • 将频繁使用的 SELECT 语句进行封装保存以提高效率
  • 使用户看到的数据更加清晰直观
  • 不对外公开数据表全部字段,增强数据保密性
  • 降低数据冗余

视图应用

为了说明视图的作用,我们在这里举一个例子:


我们要从 sakila 数据库查询出顾客的id号(Customer_id)、姓名(first_name,last_name)、地址(address)、城市(city)、国家(country)这些字段,并将其放在一张表内


因为涉及到多张表,所以这里就涉及到我们先前在《MySQL基础(七):DQL语句》中提到的连接查询。

select customer_id,first_name,last_name,ad.address,city,co.country from customer cu
join address ad on ad.address_id = cu.address_id
join city on city.city_id = ad.city_id
join country co on co.country_id = city.country_id
; -- 表后可加别名,用以简化书写,如此处address的别名为ad

但是这种复杂的多重查询语句不可能每次查询都写一遍,因此我们想是不是可以像其他语言一样封装下方便重复利用呢?
于是便有了视图。

创建视图

create view <视图名> as  <所封装的语句> 

create view v_customer_info as 
select customer_id,first_name,last_name,ad.address,city,co.country from customer cu
join address ad on ad.address_id = cu.address_id
join city on city.city_id = ad.city_id
join country co on co.country_id = city.country_id;

查看视图

show full tables where table_type like '%VIEW%'; -- 查看当前数据库下已创建的所有视图
show create view <视图名>; -- 查看创建视图的SQL语句

使用视图

select * from <视图名>; -- 调用视图,即执行所封装的SQL语句 

修改视图

create or replace view <视图名> as <所封装的语句>
-- 有则改之,无则加之
alter view <视图名> as <所封装的语句>

删除视图

drop view <视图名>;
Mysql视图更新详解 MySQL视图更新操作示例解析 摘要:本文通过四个典型示例分析MySQL视图的可更新性。基础视图(含主键且单表)支持更新、删除和插入操作,而缺少关键列、含JOIN或多表关联的视图则存在操作限制。聚合视图(如GROUP BY)因涉及计算值而无法直接修改。关键点在于:视图必须能准确定位基表行(含主键或唯一列)且仅关联单个基表才可更新。多表视图和聚合视图由于数据映射关系复杂或被计算产生,MySQL无法保证操作的安全性和确定性。 阅读详情

相关推荐

【MySQL】mysql 视图转物化视图

create view stu_class (编号,姓名,班级)asselect student.id,student.name,stu_info.class from student,stu_info where student.id=stu_info.id;例一:现有一stu_info表(id,class,address),id为学生编号,创建视图,包含编号,姓名,班级。例一:现有student表(id,name,math,chinese),创建视图包含数学成绩,语文成绩,总成绩。

wjianwei666的专栏 1380

mysql中的语法,比如*星号

mysql中的语法,比如*星号 #语法正确,不报错 SELECT *, department_name FROM departments;#语法错误,会报错 SELECT department_name, * FROM departments; #语法正确,不报错 SELECT department_name, departments.* FROM departments; #语法正确,不报错 ...

一只苟延残喘的卑微蝼蚁 2782

意图识别和纠错问题

可想而知,错误的意图识别会带来多大的负面影响。基于词典,就是对用户query内容和词典内容进行比对,比较常见的方式是序列标注问题里用的最大逆向匹配,通过这种方式找到词典里的实体词,匹配触发了自然就有意图了,而在词典匹配的时候,不是使用链表之类的来构造匹配结构,而是使用搜索树的结构,这种匹配的复杂度最低,速度也快,两者结合,其速度甚至比很多模型要快得多(基本上1ms以内就能完成),fasttext速度非常快,但是textcnn之类的其实就已经达到ms级别以上,bert甚至在10ms级别。

TURING.DT 4573

MySQL中的星号(*)和百分号(%)代表表示什么,MySQL的库名、表名、字段名、字段值是否区分大...

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33941350的博客 1万+

保姆级教程:用AdGuard DNS代理实现全设备广告过滤(含Win/Mac/安卓/iOS配置)

本文提供了一份详尽的AdGuard DNS代理配置指南,帮助用户在全设备(Win/Mac/安卓/iOS)上实现广告过滤。通过系统级DNS设置,AdGuard能有效拦截广告、跟踪器和恶意网站,提升隐私保护和浏览效率。教程涵盖原理说明、各平台配置步骤及高级优化技巧,适合不同技术水平的用户。

weixin_42656416的博客 824

AXI VIP配置全指南:从报错到成功仿真的完整流程(Vivado 2023版)

本文详细解析了在Vivado 2023环境中配置AXI Verification IP(VIP)进行协议仿真的完整流程。针对常见的include和import报错问题,提供了具体的解决方案和代码示例,指导用户从IP核创建、参数化配置,到构建可工作的仿真测试平台,最终实现成功仿真。

gpt4scribbler的博客 233

基于mysql的sakila数据库脚本分析

本例是基于mysql的sakila数据库脚本的复杂查询分析,大家可以去mysql官网上下载此脚本;也可以进入我的资源页进行下载: 关系图如下: 下面是查询的案例: 1.查询某部电影的所属类别,语言 SELECT film.title AS '电影名称', category.name AS '种类名称', language.name A...

weixin_38168728的博客 914

FPGA新手必看:Quartus生成jic文件全流程详解(附AS/JTAG模式选择指南)

本文详细解析了在Quartus中生成JIC文件以固化FPGA程序到Flash的全流程。核心在于理解JIC文件作为连接JTAG调试与AS固化的桥梁作用,并重点阐述了Convert Programming Files工具的关键配置步骤、AS与JTAG模式的选择逻辑,以及烧录过程中的常见问题排查指南,帮助开发者实现程序断电不丢失。

weixin_29271053的博客 275

Sakila——MySQL样例数据库解析

建库建表sql语句 一、Introduction Sakila可以作为数据库设计的参考,也可作为实验数据。我是用作数据仓库和ODI学习的实验数据。 The Sakila sample database was developed by Mike Hillyer, a former member of the MySQL AB documentation team, an...

tao_wei162的博客 2239

Claude Code 学习笔记之一:理解 Agentic Loop 与内置工具

本文介绍了Claude Code这一终端智能助手的工作原理与使用方式。作者从ABAP开发经验出发,指出学习Claude Code的高级用法具有长期价值。文章详细解析了Claude Code的Agentic Loop机制:通过大语言模型进行推理,借助各类工具执行任务,并循环收集上下文、执行操作、验证结果三个步骤。系统阐述了Claude Code支持的五大类工具及其扩展方式,说明了其访问本地资源的范围和自治处理能力,同时介绍了权限模式等安全机制。最后提供了从小任务开始、充分探索、及时引导、使用CLAUDE.md

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 547

YOLOv13改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计

实时检测器架构的轻量级设计GsConv。

Limiiiing的博客 91

Sakila样本数据库

-- ------------------------------------------------------------ select * from actor; -- 演员表 1.代理主键 2.演员名字 3.演员的姓 4.创建或最近更新行的时间 select * from `address`; -- 地址表 1.代理主键 2.地址1 3.地址2 4.地址的区域 5. city...

博客 1406

华为用自研的MetaERP替换全球顶级的SAP ERP系统,其难度与风险远超一次普通的技术升级,它是一场战略级的、涉及业务筋骨的系统性工程

华为成功用自研MetaERP替换SAP系统,这是一项极具挑战的战略工程。面临四大难度:业务复杂度高(170多国业务)、数据迁移量大(20年历史数据)、技术集成复杂(重构生态系统)、人员适应周期长。同时伴随四大风险:业务中断、数据失真、成本超支、供应链协同问题。华为成功的关键在于:生存压力驱动的战略决心、强大的软件研发能力、以自身业务为试验场、分步实施策略。这一案例证明中国企业能攻克高端软件壁垒,但对大多数企业而言,核心系统替换需谨慎评估风险,建议采用渐进式替代策略。

金牌架构师 535

(十)MySQL基础——视图

一、视图的介绍 含义:虚拟表,和普通表一样使用。行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果。(mysql5.1版本出现的新特性,是通过表动态生成的数据) 应用场景:多个地方用到同样的查询结果  或者  该查询结果使用的sql语句比较复杂。 类比生活中实际的例子来说,视图和普通表的区别就像临时组件的表演班和正常上课的班级之间的区别...

Steriles_的博客 379

【异常】OpenClaw LLM请求超时异常LLM request timed out.的技术分析与解决方案

LLM请求超时是OpenClaw工程化落地中最常见的链路稳定性问题,排查处置需遵循标准化的分级流程。绝大多数场景可通过重试、调整超时配置、优化模型选型快速解决;针对顽固型异常,可通过全链路日志拆解超时阶段,精准定位根因并完成针对性修复,最终保障OpenClaw业务链路的稳定运行。

奶爸的编程之路,也就一周冷个三天 1988

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Mysql视图

1.初识视图 1.视图的概念和作用 什么是视图:是从一个或多个表中导出来的表,它是一种虚拟存在的表,表的结构和数据都依赖于基本表。 作用: 简化查询语句:简化用户的查询操作,使查询更加快捷。 安全性:更方便的进行权限控制。 逻辑数据独立性:屏蔽真实表结构变化带来的影响。 2.创建视图语法 CREATE[OR REPLACE][ALGORITHM = {UNDEFINED |MERGE│TEMPTABLE] [DEFINER= { user | CURRENT_USER] [SQL SECURITY { DE

海盗船长y的博客 5584

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【MySQL进阶】MySQL视图详解

小杨带你学MySQL进阶内容视图的相关知识,一文让你掌握视图的概述,视图的增删查改操作,视图数据的增删查改操作,视图的级联检查和非级联检查以及视图的优缺点。

小杨的博客 5431

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MySql基础:MySql视图

某些视图是可更新的。也就是说,可以使用 UPDATE、DELETE 或 INSERT 等语句更新基本表的内容。对于可更新的视图,视图中的行和基本表的行之间必须具有一对一的关系。还有一些特定的其他结构,这些结构会使得视图不可更新。

xinghaoyan的专栏 1155

Mysql学习总结十:视图使用详解

Mysql学习总结十:视图使用详解1、视图概述1.1 为什么要使用视图?1.2 视图的理解2、创建视图2.1 创建单表视图2.2 创建多表联合视图2.3 基于视图创建视图3、查看视图4、更新视图4.1 一般情况4.2 不可更新的视图5、修改、删除视图5.1 修改视图5.2 删除视图6、视图的优缺点6.1 视图的优点6.2 删除的缺点 1、视图概述 1.1 为什么要使用视图?   视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。   比如,针对一个公司的销售人

xueping_wu的博客 1191

MySQL:视图【详解】

MySQL视图

2401_83595513的博客 1933

MySQL:视图

视图是基于一个或多个基本表或其他视图的查询结果集视图本身不存储数据,而是通过执行查询来动态生成数据视图本身并不占用物理存储空间。

zm3rttqs9f的博客 1802

MySQL(十)之视图

前言 前面给大家介绍了查询语句,感觉写的还不错的,喜欢的可以去查看。今天给大家分享的是MySQL中的视图。 视图(View):视图是由查询结果形成一张虚拟的表。非临时表,只要不删除的话就会一直存放在磁盘上,但是没有对应的文件。视图的使用和正常的表的使用一样。 一、什么是视图   视图是数据库数据的特定子集。可以禁止所有用户访问数据库表,而要求用户只能通过视图操作数据,这种方法可以...

a878787877的专栏 229

MYSQL基础之 视图

概念 什么是视图? 视图是基于 SQL 语句的结果集的可视化的表。 当然视图也是数据库中对象之一,其它的对象包括:表,数据字典,约束,索引,触发器,存储过程,以及存储函数。这些后面再聊,本篇主要聊的就是视图。 而视图本身不存储数据,而是通过映射原表,方便用户对数据进行查看和操作。 视图让用户使用表或者多个表的一部分数据,而不是所有的表数据。这样可以针对不同的用户定制不同的查询视图,这样让同样的数据对不同的人呈现不同的假表数据,其实保证了数据的安全。 视图时一种虚拟表,本身是不具有数据,占用很少的内存空间,是

u011863822的博客 3585

十六、MySQL 视图详解

本章对MySQL数据库中视图的概念和作用进行了详细讲解,并且讲解了创建视图、查看视图、修改视图、更新视图和删除视图的方法。创建视图和修改视图是本章的重点内容,并且需要在计算机上实际操作。读者在创建视图和修改视图后,一定要查看视图的结构,以确保创建和修改的操作正确。更新视图是本章的一个难点,因为实际中存在一些造成视图不能更新的因素,希望读者在练习中认真分析。

XAMO Lab|代码、调试与复盘笔记 2360

十、使用MySQL的视图

1、什么是视图? 将SELECT的结果像表一样保留下来的虚表就是视图。视图不是表。因此,视图中并没有保存记录或者列中的数据。视图是一种信息。 2、使用视图 2.1、创建视图 格式: CREATE VIEW 视图名 AS SELECT 列名 FROM 表名 WHERE 条件; 演示: 2.2、通过视图更新列的值 操作命令: UPDATE v1 SET name='书记*张三' WHERE name='张三'; 演示: 由此我们可以得知,如果更新视图的值,其基表的记录也会随之更

lbq15735104044的博客 285

MYSQL入门学习之十:视图的基本操作

一、视图的基本介绍         视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。         使用视图需要MySQL5及以后的版本支持。         下面是视图的一些常见应用:         重用SQL语句;         简化复杂的SQL操作;         使用表的组成部分而不是整个表;         保护数据;         更

1198
上一篇: MySQL基础(四):表的完整性约束
下一篇: MySQL基础(十一):基本运算
April_0911
博客等级 码龄10年 1404粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值