mysql 匿名块,达梦7入门技术总结-

说明:

1)该实验所有过程均是本人亲自敲命令完成,所有代码运行正确

2)安装过程使用的是suse11 sp3操作系统,后续的实验过程换成了麒麟中标,因此部分路径可能存在差异

3)安装过程使用了命令行安装,图形界面简单,因此本文没有介绍

4)job部分命令行操作太繁琐,建议使用图形界面操作,因此本文也跳过了此内容

正文

1. 安装

1.1 创建安装用户组

#groupadd dinstall

1.2 创建安装用户

#useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

#useradd -g dinstall dmdba

1.3 初始化用户密码

#passwd dmdba

1.4 修改系统限制

#vi /etc/security/limits.conf

dmdba soft nofile 4096

dmdba hard nofile 65536

1.5 挂载镜像文件

#mkdir /dmdb

#mount -t iso9660 -o loop /root/dm7_setup_rh6_64_ent_7.6.0.197_20190917.iso /dmdb

1.6 更改权限

#chown dmdba.dinstall -R /dmdb

#chmod 755 -R /dmdb

1.7 修改环境变量

#su - dmdba

#vi .bashrc

export DM_HOME=/home/dmdba/dmdbms

export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH

1.8 采用命令行模式安装

#su - dmdba

#cd /dmdb

#./DMInstall.bin -i

1)Please select the installer"s language (E/e:English C/c:Chinese) [E/e]:e

2)Whether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:n

3)Whether to Set The TimeZone? (Y/y:Yes N/n:No) [Y/y]:y

4)Please Select the TimeZone [21]:21

5)Installation Type:

1 Typical

2 Server

3 Client

4 Custom

Please Input the number of the Installation Type [1 Typical]:1

6)Please Input the install path [/home/dmdba/dmdbms]:

7)Please Confirm the install path(/home/dmdba/dmdbms)? (Y/y:Yes N/n:No) [Y/y]:y

8)Confirm to Install? (Y/y:Yes N/n:No):y

9)Please execute the commands by root:

/home/dmdba/dmdbms/script/root/root_installer.sh

1.9 初始化数据

#/home/dmdba/dmdbms/bin

#./dminit

input system dir: /home/dmdba/dmdbms

input db name: dmdb01

input port num: 5236

input page size(4, 8, 16, 32): 8

input extent size(16, 32): 16

input sec priv mode(0, 1): 0

input time zone(-12:59,+14:00): +08:00

string case sensitive? ([Y]es, [N]o): n

which charset to use? (0[GB18030], 1[UTF-8], 2[EUC-KR]): 1

length in char? ([Y]es, [N]o): y

enable database encrypt? ([Y]es, [N]o): n

page check mode? (0/1/2): 0

input elog path: /home/dmdba/dmdbms/log

auto_overwrite mode? (0/1/2): 2

1.10 启动数据库服务

#cd /home/dmdba/dmdbms/script/root

./dm_service_installer.sh -t dmserver -p dmdb01 -i /home/dmdba/dmdbms/dmdb01/dm.ini

提示信息:

Move the service script file(/home/dmdba/dmdbms/bin/DmServicedmdb01 to /etc/init.d/DmServicedmdb01)

insserv: warning: current stop runlevel(s) (empty) of script `DmServicedmdb01" overwrites defaults (2 3 4 5).

insserv: Service network is missed in the runlevels 4 to use service mysql

DmServicedmdb01 0:off 1:off 2:on 3:on 4:on 5:on 6:off

Finished to create the service (DmServicedmdb01)

#service DmServicedmdb01 start

1.11 连接验证(默认密码)

#/home/dmdba/dmdbms/bin/disql

username:sysdba

password:SYSDBA

2.通过vnc调出管理工具

#xhost +

#su - dmdba

#export DISPLAY=127.0.0.1:1.0

#/home/dmdba/dmdbms/tool/manager

3.修改参数(v$parameter)

3.1 参数类型

0 Sys/session 动态参数,同时修改内存和配置文件

1 Read only 在数据库运行状态时,不能修改。

2 In file 静态参数,修改后,重启服务生效。

示例:

SQL> Select para_name,para_value from v$dm_ini where para_name="BUFFER_POOLS";

LINEID para_name para_value

---------- ------------ ----------

1 BUFFER_POOLS 3

3.2 命令

SP_PARA_SET_VALUE(SCOPE,PARA_NAME,PARA_VALUE);

SCOPE值:

1: 修改配置文件和内存

2:只修改配置文件

示例:

SQL> SP_SET_PARA_VALUE(2,’BUFFER’,1000);

4.重做日志

4.1 视图

v$rlogfile

v$rlog

SQL> select * from v$rlogfile;

说明:这里查出来的rlog_size大小单位是bit,因此再下面添加日志大小的时候需要除以两次1024转成M

4.2 添加日志文件

SQL> alter database add logfile "/home/dmdba/dmdbms/dmdb01/dmdb0103.log" size 256;

说明:默认单位是M,不需要加单位。并且需要和原来的日志文件大小一致

4.3 修改日志文件大小

SQL> alter database resize logfile "/home/dmdba/dmdbms/dmdb01/dmdb0103.log" to 300;

说明:所有的日志文件要大小一致

5.表空间

5.1视图

dba_tablespaces

v$tablespace

v$huge_tablespace

5.2 表空间说明

SQL> select TABLESPACE_NAME,STATUS from dba_tablespaces;

System表空间: 数据字典和全局的系统数据。

ROLL表空间:存放了数据库运行过程中产生的回滚记录。

TEMP表空间:临时表空间。

MAIN表空间:数据库默认的表空间,创建数据对象时,如果不指定存储位置,默认存放到该表空间。

HMAIN表空间:huge 表空间

5.3 查询所有表空间信息

SQL> Select name from v$tablespace union select name from v$huge_tablespace;

5.4 创建表空间

表空间初始文件大小是页大小的4096倍

示例1:表空间初始大小50M,每次扩展1M,最大100M

SQL> create tablespace tbs1 datafile "/dm7/data/dm01/tbs01.dbf" size 50 autoextend on next 1 maxsize 100;

示例2:表空间初始50M,表空间由2个数据文件组成,分别存储到不同的磁盘上,每次扩展1m,每个数据文件最大100M.

SQL> create tablespace tbs2 datafile "/dm7/data/dm01/tbs02_1.dbf" size 50 autoextend on next 1 maxsize 100,"/dm7/data/tbs02_2.dbf" size 50 autoextend on next 1 maxsize 100;

5.5 维护表空间

最常用的方式就是增加数据文件

SQL> alter tablespace tbs2 add datafile "/dm7/data/dm01/tbs02_3.dbf" size 50 autoextend on next 1 maxsize 100;

5.6 更换文件存储位置

注意:SYSTEM,ROLL, TEMP 不能offline;

SQL> alter tablespace tbs2 offline;

SQL> alter tablespace tbs2 rename datafile "/dm7/data/tbs02_2.dbf" to "/dm7/data/dm01/tbs02_2.dbf";

SQL> alter tablespace tbs2 online;

5.7 删除表空间

SQL> drop tablespace tbs2;

如果表空间存有数据,不允许直接删除!

6.用户管理

6.1 视图

dba_users

6.2 内置用户

sys --- 达梦数据库的内置管理用户,不能登录数据库,数据库使用的大部分的数据字典和动态性能视图

Sysdba --- 数据库的管理员

Sysauditor --- 审计用户

Syssso --- 安全用户

sysdbo --- 数据操作员(安全版有,四权分立)

6.3 命名规则

字母开头,a-z,0-9,$#_

6.4 口令策略

用户密码最长为48个字节,创建用户语句使用 password policy 子句来指定口令策略(DM.INI PWD_POLICY).

系统支持的口令策略:

0 无策略

1 禁止与用户名相同

2 口令长度不小于9

4 至少包含一个大写字母(A-Z)

8 至少包含一个数字(0-9)

16 至少包含一个标点符号(英文状态输入,除”和空格外)

口令可以单独使用,也可以组合使用,比如需要应策略1和2,则设置口令策略为:3

密码尝试登录次数 FAILED_LOGIN_ATTEMPS

密码失败锁定时间 PASSWORD_LOCK_TIME

密码过期时间 PASSWORD_LIFE_TIME

6.5 用户权限

系统权限: create drop alter 能够对数据库做什么操作。

对象权限(表,视图,过程等等): select delete update insert

角色: dba、public等

6.6 查看用户权限:

SQL> select grantee,granted_role from dba_role_privs where grantee="USER1";

行号 GRANTEE GRANTED_ROLE

---------- ------- ------------

1 USER1 PUBLIC

6.7 查看角色拥有的权限

SQL> select grantee,privilege from dba_sys_privs where grantee="PUBLIC";

行号 GRANTEE PRIVILEGE

---------- ------- ----------------

1 PUBLIC INSERT TABLE

2 PUBLIC UPDATE TABLE

3 PUBLIC DELETE TABLE

4 PUBLIC SELECT TABLE

5 PUBLIC REFERENCES TABLE

6 PUBLIC GRANT TABLE

.....

6.8 示例

示例1:为数据库设置一个用户,该用户可以创建自己的表,有属于自己的独立表空间,用户密码要求每60天变更一次。

SQL> create tablespace tbs3 datafile "/dm7/data/dm01/tbs03.dbf" size 32;

SQL> create user user1 identified by user1user1 limit password_life_time 60 default tablespace tbs3;

示例2:创建一个用户,该用户每60天变更一次密码,密码尝试连接2次失败,账户锁定5分钟,用户还可以查询dmhr.employee表

SQL> create user user2 identified by user2user2 limit password_life_time 60, FAILED_LOGIN_ATTEMPS 2 ,PASSWORD_LOCK_TIME 5 default tablespace tbs3;

SQL> grant select on dmhr.employee to user2;

示例3:企业招聘一批录入人员,权限是固定的,只有录入CITY表的权限

角色:一类权限的集合

SQL> create role role1;

SQL> grant insert on dmhr.city to role1;

SQL> grant references any table to role1;

SQL> grant role1 to user2;

6.9 用户维护

1)撤销权限

SQL> revoke select on dmhr.employee from user2;

2)解锁用户

SQL> alter user user2 account unlock;

3)修改密码

SQL> alter user user2 identified by user3user3;

4)删除用户

SQL> drop user user2;

5)删除用户(级联删除)

SQL> drop user user2 cascade;

7.dmsql

说明:由于SQL查询内容比较复杂,并且作为数据管理型DBA SQL开发也不是重点,所以这里只总结了大概内容。

7.1 常识

dmsql主要基于sql92,部分sql99

SQL:结构化查询语言

DDL: 定义 create drop alter truncate

DML: 管理 select update delete insert

DCL:控制 grant revoke

TCL:事务控制:commit rollback

7.2 select

简单查询:select () from ();

过滤查询:select () from () where ();

多表链接:select() from () join() on();

分组查询:select 聚合函数() from () group by () having ();

子查询:

7.3 insert into

7.4 delete

7.5 update

8.表的管理

8.1 达梦数据库支持的表

索引组织表(默认的表)、堆表、临时表、分区表、外部表等。

8.2 创建表时包含的内容

命名:字母开头 a-z,0-9,$#_

数据类型:int char varchar date clob blob number等等。

存储位置:自已的规划的表空间。

约束(5大约束): 非空约束,唯一约束,主键,检查,外键

注释:comment

遵循3范式

8.3 示例

1)要求

表名:STU

学号(id char(10)),

姓名(sname varchar(20) not null),

性别 (sex char(1))

年龄(age int)

电话(tel varchar(15) not null)

家庭住址:(address varchar(50))

表空间:TBS2

约束:主键列---学号 非空---姓名,电话

备注:学员信息表

2)SQL语句

create table USER2.STU

(

ID CHAR(10) not null ,

SNAME VARCHAR(20) not null ,

SEX CHAR(1),

AGE INT,

TEL VARCHAR(15) not null ,

ADDRESS VARCHAR(50),

primary key(ID)

) storage (on TBS2);

comment on table USER2.STU is "学员信息表";

comment on column USER2.STU.ID is "学号";

comment on column USER2.STU.SNAME is "姓名";

comment on column USER2.STU.SEX is "性别";

comment on column USER2.STU.AGE is "年龄";

comment on column USER2.STU.TEL is "电话";

comment on column USER2.STU.ADDRESS is "家庭住址";

8.4 查看表结构

注意:用户名、表名都要大写

SQL> sp_tabledef("USER2","STU");

行号 COLUMN_VALUE

---------- -------------------------------------------------------------------

1 CREATE TABLE "USER2"."STU" (

"ID" CHAR(10) NOT NULL,

"SNAME" VARCHAR(20) NOT NULL,

"SEX" CHAR(1), "AGE" INT,

"TEL" VARCHAR(15) NOT NULL,

"ADDRESS" VARCHAR(50),

CLUSTER PRIMARY KEY("ID"))

STORAGE(ON "TBS2", CLUSTERBTR) ;

或者:

SQL> select dbms_metadata.get_ddl("TABLE","STU","USER2");

8.5 查看表所属表空间

SQL> select table_name,tablespace_name from dba_tables where table_name="STU";

行号 TABLE_NAME TABLESPACE_NAME

---------- ---------- ---------------

1 STU TBS2

8.6 查看表有哪些约束

SQL> select table_name,constraint_name,constraint_type from dba_constraints where table_name="STU";

行号 TABLE_NAME CONSTRAINT_NAME CONSTRAINT_TYPE

---------- ---------- --------------- ---------------

1 STU CONS134218774 P

8.7 创建表时指定约束

1)非空约束

SQL> create table user2.t1(id int);

SQL> alter table user2.t1 modify id int not null;

或者:

SQL> create table user2.t2(id int not null);

2)唯一约束

SQL> create table user2.t3(id int unique);

3)主键约束

SQL> create table user2.t4(id int primary key);

4)检查约束

SQL> create table user2.t5(id int check(id>=5));

5)外键约束

SQL> create table user2.t6(id int primary key ,sid int foreign key references user2.t4(id));

说明:作为外键约束的列必须是另外一个表的主键

8.8 表的注释

SQL> comment on column user2.t1.id is "编号";

8.9 导入数据到表中

1)编写a.sql脚本:

insert into user2.t1(id) values(1);

insert into user2.t1(id) values(2);

insert into user2.t1(id) values(3);

insert into user2.t1(id) values(4);

commit;

2)然后:

SQL> start /tmp/a.sql

3)也可以用图形界面的DTS工具去做。

8.10 维护表

1)重命名

SQL> alter table user2.t6 rename to tt6;

2)增加删除列

SQL> alter table user2.tt6 add name varchar(10);

SQL> alter table user2.tt6 drop name;

3)启用禁用约束

SQL> select table_name,constraint_name,constraint_type from dba_constraints where table_name="T4";

行号 TABLE_NAME CONSTRAINT_NAME CONSTRAINT_TYPE

---------- ---------- --------------- ---------------

1 T4 CONS134218776 P

SQL> alter table user2.t4 disable constraint CONS134218776;

SQL> alter table user2.t4 enable constraint CONS134218776;

9.视图管理

9.1 视图分类

简单视图,复杂视图,物化视图

注:简单视图和复杂视图不占磁盘空间

物化视图占磁盘空间

9.2 创建视图

create view () as select () from () where ();

SQL> create view v1 as select * from user2.t1;

SQL> select * from v1;

行号 ID

---------- -----------

1 1

2 2

3 3

4 4

9.3 查看视图

SQL> select view_name,text from dba_views where view_name="V1";

行号 VIEW_NAME TEXT

---------- --------- ---------------------------------

1 V1 SELECT USER2.T1.ID FROM USER2.T1

9.4 修改视图

SQL> create or replace view v1 as select * from user2.t2;

SQL> select * from v1;

未选定行

10.序列管理

10.1 创建序列

SQL> create sequence user2.s1

start with 1 ----序号起始

increment by 1 --自增多少

maxvalue 50 ---最大值

nocache ---是否缓存

nocycle; ---是否循环

10.2 序列的应用

SQL> insert into user2.t1 values(user2.s1.nextval);

SQL> insert into user2.t1 values(user2.s1.nextval);

向表中插入两条记录。

SQL> select * from user2.t1;

行号 ID

---------- -----------

1 1

2 2

3 3

4 4

5 1

6 2

6 rows got

11.同义词管理

11.1 创建同义词

公共:SQL> create public synonym ss1 for dmhr.employee;

普通:SQL> create synonym ss2 for dmhr.employee;

SQL> select count(*) from ss1;

行号 COUNT(*)

---------- --------------------

1 856

11.2 修改同义词

SQL> create or replace synonym ss2 for dmhr.city;

11.3 删除同义词

SQL> drop synonym ss2;

SQL> drop public synonym ss1;

12.索引管理

12.1 达梦支持的索引

二级索引、位图索引、唯一索引、复合索引、函数索引、分区索引等。

默认的表是索引组织表,是利用rowid创建一个默认的索引,所以创建的索引称为二级索引。

12.2 查看表的索引

SQL> select table_name,index_name from dba_indexes where table_name="T1";

行号 TABLE_NAME INDEX_NAME

---------- ---------- -------------

1 T1 INDEX33555470

12.3 索引的作用

加快表的查询,对数据库做DML操作的时候,数据库会自动维护索引。索引是一棵倒置的树,使用索引,就是对这棵索引树做遍历。

12.4 建立索引的规则

1)适合建立索引的情况

经常查询的列

接条件列

谓词经常出现的列(where)

查询是返回表的一小部分数据

2)不适合做索引的情况:

列上有大量的null

列上的数据有限(例如性别)

12.5 创建索引

规划索引表空间

表的数据是无序的,索引的数据是有序的

示例:在Emp中的employee_id 建立索引。

1)建立表

SQL> create table user2.emp as select * from dmhr.employee;

2)建立索引表空间

SQL> create tablespace tbs_idx1 datafile "/dm7/data/dm01/tbs_idx101.dbf" size 32;

3)建立索引:

SQL> create index ind_emp on user2.emp(employee_id) tablespace tbs_idx1;

4)查询索引:

SQL> select table_name,index_name from dba_indexes where table_name="EMP";

行号 TABLE_NAME INDEX_NAME

---------- ---------- -------------

1 EMP INDEX33555479

2 EMP IND_EMP

12.6 重建索引

SQL> alter index user2.IND_EMP rebuild;

13.备份还原

13.1 备份分类

物理备份、逻辑备份

13.2 物理备份

1)工具简介

冷备:(dmap服务打开的状态下,数据库是关闭的)

热备:(dmap服务一定是打开的,数据库也是打开的,数据库要开归档)

导入导出:dexp dimp

集群:数据守护(dw),dsc(rac)

达梦支持第三方的备份软件:爱数,鼎甲

2)物理备份过程(冷备)

第一步:创建归档日志存放路径

#mkdir /dm7/data/dm01/arch

第二步:开归档

SQL> alter database mount;

SQL> alter database add archivelog "type=local,dest=/dm7/data/dm01/arch,file_size=64,space_limit=0";

SQL> alter database archivelog;

SQL> alter database open;

SQL> select ARCH_MODE,STATUS$ from v$database;

行号 ARCH_MODE STATUS$

---------- --------- -----------

1 Y 4

第三步:停止数据库服务

[dmdba@localhost dm01]$ service DmServicedm01 stop

第四步:使用dmrman备份

说明:dmrman 命令必须在命令所在的bin目录下执行才行

[dmdba@localhost bin]$ pwd

/dm7/bin

[dmdba@localhost bin]$ ./dmrman

RMAN> backup database "/dm7/data/dm01/dm.ini";

根据提示信息找到备份文件位置

3) 使用命令行备份(热备)

使用命令行备份,同样需要开归档,但是不需要停数据库服务

#mkdir /dm7/data/backup

SQL> backup database full backupset "/dm7/data/backup/full_bak";

增量备份

SQL> insert into user2.t1 values(user2.s1.nextval);

SQL> select checkpoint(1);

SQL> backup database increment backupset "/dm7/data/backup/incr_bak";

13.3 还原数据

1)选择实验用户和实验表空间

SQL> select username,default_tablespace from dba_users where username="USER2";

行号 USERNAME DEFAULT_TABLESPACE

---------- -------- ------------------

1 USER2 TBS3

2)模拟表空间文件损坏

#mv tbs03.dbf tbs03.dbf.bak

3)重启服务

#service DmServicedm01 stop

#service DmServicedm01 start

4)手动打开数据库

SQL> alter database open;

5)查看表空间状态

SQL> select TABLESPACE_NAME,STATUS from dba_tablespaces where tablespace_name="TBS3";

行号 TABLESPACE_NAME STATUS

---------- --------------- -----------

1 TBS3 1

6)恢复数据

SQL> restore tablespace tbs3 from backupset "/dm7/data/backup/full_bak";

7)online表空间

SQL> alter tablespace tbs3 online;

8)查看表空间状态

SQL> select TABLESPACE_NAME,STATUS from dba_tablespaces where tablespace_name="TBS3";

行号 TABLESPACE_NAME STATUS

---------- --------------- -----------

1 TBS3 0

9)查询数据

SQL> select * from user2.t1;

行号 ID

---------- -----------

1 1

2 2

3 3

4 4

5 1

6 2

7 3

8 4

8 rows got

13.4 逻辑导入导出

1)工具简介

Dexp 逻辑导出 dimp 逻辑导入

Dexp和dimp是DM自带的工具,分为四种级别:

数据库级,用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:

数据库级(full):导出或导入整个数据库中的访问对象。

用户级(owner):导出或导入一个或多个用户所拥有的所有对象。

模式级(schemas):导出或导入一个或多个模式下的所有对象。

表级(table):导出或导入一个或多个指定的表或表分区。

2)实验过程

第一步:备份user2下的数据

[dmdba@localhost bin]$ pwd

/dm7/bin

[dmdba@localhost bin]$./dexp sysdba/SYSDBA file=/dm7/data/backup/user2.dmp log=/dm7/data/backup/user2.log owner=user2

第二步:恢复数据到user1下

[dmdba@localhost bin]$ pwd

/dm7/bin

[dmdba@localhost bin]$./dimp sysdba/SYSDBA file=/dm7/data/backup/user2.dmp log=/dm7/data/backup/user1.log fromuser=user2 touser=user1

第三步:数据确认(两次SQL语句是导入数据前后的对比)

SQL> select * from user1.t1;

select * from user1.t1;

[-2106]:Error in line: 1

Invalid table or view name [t1].

used time: 1.538(ms). Execute id is 0.

SQL> select * from user1.t1;

LINEID id

---------- -----------

1 1

2 2

3 3

4 4

5 1

6 2

6 rows got

14.达梦SQL开发

14.1 配置ODBC(linux下)

1)安装(root用户)

#tar -xvf unixODBC-2.3.0.tar.gz

#cd unixODBC-2.3.0

# ./configure --enable-gui=no

#make

#make install

# odbc_config --version

2.3.0

#odbc_config --odbcini

/usr/local/etc/odbc.ini

#odbcinst -j

unixODBC 2.3.0

DRIVERS............: /usr/local/etc/odbcinst.ini

SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini

FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources

USER DATA SOURCES..: /root/.odbc.ini

SQLULEN Size.......: 8

SQLLEN Size........: 8

SQLSETPOSIROW Size.: 8

2)修改配置文件

#cd /usr/local/etc

#vi odbc.ini

[dm7]

Desription=DM ODBC DSND

Driver = DM7 ODBC DRIVER

SERVER = localhost

UID = SYSDBA

PWD = Abcd.1234

TCP_PORT = 5236

#vi odbcinst.ini

[DM7 ODBC DRIVER]

Description = ODBC DRIVER FOR DM7

Driver = /dm7/bin/libdodbc.so

3)修改文件权限

#chmod 775 odbc.ini

#chmod 775 odbcinst.ini

4)测试

#su - dmdba

#isql dm7

+---------------------------------------+

| Connected! |

| |

| sql-statement |

| help [tablename] |

| quit |

| |

+---------------------------------------+

14.2 存储过程

1)匿名块

SQL> set serveroutput on

SQL> begin

print("hello world");

end;

/

2)命名块(存储过程)

SQL> CREATE OR REPLACE PROCEDURE USER2.P1

AS

BEGIN

SELECT * from USER2.T1;

END;

/

SQL> call user2.p1;

LINEID id

---------- -----------

1 1

2 2

3 3

4 4

5 1

6 2

6 rows got

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值