MySQL数据库使用笔记(一):终端使用与约束

本笔记来自bilibili:一天学会 MySQL 数据库
以及参考某位大佬的笔记
MySQL数据库使用笔记(一):终端使用与约束
MySQL数据库使用笔记(二):范式设计
MySQL数据库使用笔记(三):查询练习
MySQL数据库使用笔记(四):链接查询与事务

MySQL数据库使用笔记(一):终端使用与约束

如何使用终端操作数据库?

如何登陆数据库服务器?

windows安装完MySql之后,点击下图,输入密码即可进入。
在这里插入图片描述

如何查询数据库服务器中所有的数据库?

输入:show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| bilibili           |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.02 sec)

如何选择数据库?

输入:use test;
输出:Database changed

如何查看该数据库中有哪些表?

输入:show tables;
输出:Empty set (0.00 sec)

如何查询表中的数据?

输入:select * from tableName;

如何退出数据库服务器?

输入:exit;

如何在数据库服务器中创建自己的数据库?

输入:create database databaseName;

如何创建一个数据表? 创建一个pet表

输入:

CREATE TABLE pet(
                   name VARCHAR(20),
                   owner VARCHAR(20),
                   specise VARCHAR(20),
                   sex CHAR(1),
                   brith DATE,
                   death DATE );

注意事项:

  • 1:var()与varchar()的区别在于var()是定常的,哪怕存储的字符串没有达到"()“中数字的上限,var()依然会占用空格来填充空间.
    而varchar()则是不定长的,没有达到”()"中的上限则会自动去掉后面的空格;
  • 2:性别不要用:sex 要用:gender 一个是性 一个是性别;
  • 3:定义最后一个字段的时候不要加",";
  • 4:上面的"VAR",“VARCHAR”,"DATE"可以用小写.不过最好用大写来表示区分关键字,若不然也许写到后面你自己都不知道这个词是数据库中的关键字还是你自己自定义的一些数据,同时一定要用英文的标点符号也必须半角输入

如何查看数据表的架构?

输入:describe pet;

+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | varchar(20) | YES  |     | NULL    |       |
| owner   | varchar(20) | YES  |     | NULL    |       |
| specise | varchar(20) | YES  |     | NULL    |       |
| sex     | char(1)     | YES  |     | NULL    |       |
| brith   | date        | YES  |     | NULL    |       |
| death   | date        | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
6 rows in set (0.02 sec)

如何插入数据?

输入:INSERT INTO pet VALUES('black','jack','dog','1','2020-05-29',null);
输出:Query OK, 1 row affected (0.02 sec)

  • NULL:代表的是空,表示该字段还没有数据.千万不要主动填写’NULL’,这代表你的字段有一个值叫做'null'.
  • 还有一种写法:INSERT INTO pet(name,owner) VALUES ('xx','cc');。代表我只在name和owner字段上面插入的一条,其他皆为NULL/默认值的数据

查看刚刚插入的数据:select * from pet;

+-------+-------+---------+------+------------+-------+
| name  | owner | specise | sex  | brith      | death |
+-------+-------+---------+------+------------+-------+
| kk    | cc    | dog     | 1    | 1998-08-02 | NULL  |
| black | jack  | dog     | 1    | 2020-05-29 | NULL  |
+-------+-------+---------+------+------------+-------+
2 rows in set (0.00 sec)

mysql 常用数据类型

(来自菜鸟教程)
MySQL中定义数据字段的类型对你数据库的优化是非常重要的。
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

  • 数值类型

在这里插入图片描述

  • 日期和时间类型
    在这里插入图片描述
  • 字符串类型
    在这里插入图片描述

如何删除/修改数据

首先插入数据:

       INSERT INTO pet VALUES('n1','o1','dog1','1','2020-1-2',null);
       INSERT INTO pet VALUES('n2','o2','dog2','0','2020-2-2',null);
       INSERT INTO pet VALUES('n3','o3','dog3','1','2020-3-2','2020-12-2');
       INSERT INTO pet VALUES('n4','o4','dog4','0','2020-4-2',null);
  • 删除语句:delete from tablesName where 条件;
    比如:delete from pet where name='n1';

  • 修改数据:update tableName set 字段1=值1,字段2=值2 ... where 条件;
    比如:update pet set name='newn2' where name='n2';

数据记录常见操作?

  • 增加:INSERT
  • 删除:DELETE
  • 修改:UPDATE
  • 查询:SELECT

mysql建表中的约束

1.主键约束:

它能够唯一确定一张表中的一条记录,增加主键约束之后,就可以使得字段不重复而且不为空 。
先创建一个表:

create table user(
    id int PRIMARY KEY,
    name VARCHAR(20)
);

查看表的描述:describe user;

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.04 sec)

插入数据:INSERT INTO user VALUES (1,'张三'); 再次插入报错:ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'。这是PRIMARY KEY造成的,所有可以改成:INSERT INTO user VALUES (2,'张三');
插入完后查看:select * from user;

+----+------+
| id | name |
+----+------+
|  1 | 张三 |
|  2 | 张三 |
+----+------+

其实id是不可以为null 而且 key的值 也变为:PRI(primary)。

2.联合主键:

只要联合的主键值加起来不重复就可以

CREATE TABLE user2(
    id INT,
    name VARCHAR(20),
    password VARCHAR(20),
    PRIMARY key(id,name)
);

这里把idname进行联合约束。
查看表的描述:describe user2;

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | 0       |       |
| name     | varchar(20) | NO   | PRI |         |       |
| password | varchar(20) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

插入数据:

INSERT INTO user2 VALUES (1,'老王','123456');
INSERT INTO user2 VALUES (2,'老王','123456');
INSERT INTO user2 VALUES (1,'老李','123456');

查看数据:SELECT * FROM user2;

+----+------+----------+
| id | name | password |
+----+------+----------+
|  1 | 老李 | 123456   |
|  1 | 老王 | 123456   |
|  2 | 老王 | 123456   |
+----+------+----------+
3.自增约束

先创建一个表:

CREATE TABLE user3(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(20)
);

查看描述:describe user3;

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

插入数据:INSERT INTO user3(name) VALUES('张三');INSERT INTO user3(name) VALUES('李四');
查看数据:SELECT * FROM user3;

+----+------+
| id | name |
+----+------+
|  1 | 张三 |
|  2 | 李四 |
+----+------+

没有自定义id值 但是自动生成了id,并且id自增。

  • 如果说我们创建表的时候,忘记创建主键约束了?改怎么办?
create table user4 (
id int,
name varchar(20 )
);
alter table user4 add primary key(id);
  • 使用modify 修改字段,添加约束
alter table user4 modify id int primary key;
4.唯一约束:

约束修饰的字段的值不可以重复
创建表:

CREATE TABLE user5(
    id INT ,
    name VARCHAR(20)
);

新增name为唯一约束:alter table user5 add unique(name);
查看表:describe user5;

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(20) | YES  | UNI | NULL    |       |
+-------+-------------+------+-----+---------+-------+

name那个地方有了UNI
插入数据:insert into user5 values(1, 'jack');,再次插入,报错:ERROR 1062 (23000): Duplicate entry 'jack' for key 'name',修改name值,再次插入:insert into user5 values(1, 'rose');
查看数据:select * from user5;

+------+------+
| id   | name |
+------+------+
|    1 | jack |
|    1 | rose |
+------+------+
  • 如何删除一个约束?
alter table tablename drop index name ;
  • modify添加约束:
alter table tablename modify name varchar(20) unique;

总结一下:

  • 1、建表的时候就添加约束
  • 2、可以使用alter。。。add。。。。添加约束
  • 3、alter。。。modif。。。添加约束
  • 4、删除约束alter。。。。drop。。。

主键约束(primary key)中包含了唯一约束
场景:业务需求:设计一张用户注册表,用户姓名必须要用手机号来注册,而且手机号和用户名称都不能为空,那么:

CREATE TABLE user_test(
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT'主键id',
    name VARCHAR(20) NOT NULL COMMENT'用户姓名,不能为空',
    phone_number VARCHAR(20) UNIQUE NOT NULL COMMENT'用户手机,不能重复且不能为空'
);

运行 DESCRIBE user_test;

+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
| id           | int(11)     | NO   | PRI | NULL    | auto_increment |
| name         | varchar(20) | NO   |     | NULL    |                |
| phone_number | int(11)     | NO   | UNI | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+

这样的话就达到了每一个手机号都只能出现一次,达到了每个手机号只能被注册一次.
用户姓名可以重复,但是手机号码却不能重复,复合正常的逻辑需求。

5.非空约束

修饰的字段不能为空NULL
创建表:

CREATE TABLE user9(
    id INT ,
    name VARCHAR(20) NOT NULL
);

查看表:desc user9;

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(20) | NO   |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

插入数据:insert into user9 (id) values(1);报错:ERROR 1364 (HY000): Field 'name' doesn't have a default value
重新插入:

insert into user9 values(1,'张三');
insert into user9 (name) values('jack');

查看数据:select * from user9;

+------+------+
| id   | name |
+------+------+
|    1 | 张三 |
| NULL | jack |
+------+------+
6.默认约束

当插入字段值的时候,如果没有传值,就会使用默认值
创建表:

CREATE TABLE user10(
    id INT ,
    name VARCHAR(20),
    age int default 10
);

查看表:desc user10;

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| age   | int(11)     | YES  |     | 10      |       |
+-------+-------------+------+-----+---------+-------+

插入数据:insert into user10 (id, name) values(1, 'zhangsan' ) ;
查看数据:select * from user10;

+------+----------+------+
| id   | name     | age  |
+------+----------+------+
|    1 | zhangsan |   10 |
+------+----------+------+

其中age为默认值10
传了值,就不会使用默认值:insert into user10 values(1, 'zhangsan', 19);

+------+----------+------+
| id   | name     | age  |
+------+----------+------+
|    1 | zhangsan |   10 |
|    1 | zhangsan |   19 |
+------+----------+------+

应用场景:
业务需求:找正常的用户,对这些正常用户进行发放优惠卷或者积分之类的东西,而被禁封的用户我们不让其参加多动.
我们想要封用户只要将status的值从0改为1就行了,当然我们取用户的时候必须要先判断status是否是0.若是1.说明该用户已经被禁封.
先封手机号为’1234’的用户:

UPDATE user6 SET status = 1 WHERE phone_number= '1234';
SELECT * FROM user6;
+----+------+--------------+--------+
| id | name | phone_number | status |
+----+------+--------------+--------+
|  1 | aa   | 123          |      0 |
|  2 | bb   | 1234         |      1 |
|  3 | cc   | 1263456      |      0 |
+----+------+--------------+--------+

status为1,说明用户已经被封,该用户不可以参加活动

我们取用户的时候加上status的判断,如:

SELECT * FROM user6 WHERE status = 0;
+----+------+--------------+--------+
| id | name | phone_number | status |
+----+------+--------------+--------+
|  1 | aa   | 123          |      0 |
|  3 | cc   | 1263456      |      0 |
+----+------+--------------+--------+
7.外键约束

涉及到两个表:父表,子表(主表,副表)。
创建班级表:

CREATE TABLE classes(
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT'班级表id',
    name VARCHAR(20) COMMENT'班级名称'
);

查看班级表:

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

创建学生表:desc classes;

CREATE TABLE student(
   id INT PRIMARY KEY AUTO_INCREMENT COMMENT'学生表id',
   name VARCHAR(20) COMMENT'学生姓名',
    class_id int COMMENT'教室id,这张表中的class_id是classes表中id的值',
    FOREIGN KEY (class_id) REFERENCES classes(id)
);
//FOREIGN :外来  REFERENCES:应用,参考

查看学生表:desc student;

+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| name     | varchar(20) | YES  |     | NULL    |                |
| class_id | int(11)     | YES  | MUL | NULL    |                |
+----------+-------------+------+-----+---------+----------------+

classes表插入数据:

insert into classes values(1,'一班');
insert into classes values(2,'二班');
insert into classes values(3,'三班');
insert into classes values(4,'四班');

查看数据:select * from classes;

+----+------+
| id | name |
+----+------+
|  1 | 一班 |
|  2 | 二班 |
|  3 | 三班 |
|  4 | 四班 |
+----+------+

student表插入数据:

insert into student values(1001, '张三', 1);
insert into student values(1002, '张三', 2);
insert into student values(1003, '张三', 3);
insert into student values(1004, '张三' ,4);

查看student数据:select * from student;

+------+------+----------+
| id   | name | class_id |
+------+------+----------+
| 1001 | 张三 |        1 |
| 1002 | 张三 |        2 |
| 1003 | 张三 |        3 |
| 1004 | 张三 |        4 |
+------+------+----------+

再次插入数据:insert into student values(1005, 'jack' ,5);
报错:

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`bilibili`.`student`, CONSTRAINT `student_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `classes` (`id`))

classes表中没有班级5,所有student不可能有班级5

删除数据:delete from classes where id=4;
报错:

ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`bilibili`.`student`, CONSTRAINT `student_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `classes` (`id`))

这是因为student中已经创建了class_id = 4的数据,所以class不能删除。
总结一下:

  • 1.主表classes 中没有的数据值,在副表中,是不可以使用的。
  • 2.主表(父表)中的记录被副表(子表)引用,是不可以被删除的。
  • 3.若要想删除,先将附表中的数据删除在删除主表数据
  • 4.对于外键约束大家可以联想 省,市 来进行联想 (市必须要依赖于省,只要省还有一个市在引用,那么就不可以删除省,要不然市就没有省了. 那么我们想删除省,必须要将该省下所有的市全部删除之后,才可以删除这个省)
8.如何建表之后添加主键约束
CREATE TABLE user4(
    id INT,
    name VARCHAR(20)
);

运行DESCRIBE user4;

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

加入主键约束:

ALTER TABLE user4 add PRIMARY KEY(id);

再次运行DESCRIBE user4;

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

删除主键约束:

ALERT TABLE user4 DROP PRIMARY KEY;

运行DESCRIBE user4查看表结构:

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

使用modify 修改字段.添加约束:

ALTER TABLE user4 MODIFY id INT PRIMARY key;

使用DESCRIBE user4 查看表结构:

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

给主键设置自增长:

ALTER TABLE user4 MODIFY id INT AUTO_INCREMENT;

运行 DESCRIBE user4 查看表结构:

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、基本命令 1、启动服务, 已管理员身份运行cmd net satrt mysql 2、停止服务 net stop 服务名称 3、连接数据库 mysql -u 用户名 -p 4、断开连接 输入exit或quit 5、查看mysql版本:select version(); 6.查看当前时间select now(); 7、远程连接 mysql -h ip地址 -u 用户名 -p 二、数据库操作 1、创建数据库: create database 数据库名 charset = utf8; 2、删除数据库 :drop database 数据库名; 3、切换数据库 use 数据库名 4、查看当前选择的数据库 select database(); 5、查看有多少数据库: show databases; 三、表操作 1、查看当前数据库所有表show tables; 2、创建表 create table 表名(列及类型) creat table student(id int auto_increment primary key,name varchar(20) not null,age int not null,gender bit default 1,address varchar(20), isDelete bit default 0) 3、删除表 drop table 表名; 4、查看表结构desc 表名; 5、查看建表语句show create table 表名; 5、重命名表名: rename table 原表名 to 新表名; 6、修改表结构 alter table 表名 add|change|drop 列名 数据类型 7、数据修改: 1、增加数据: a: 全列插入:insert into 表名 values(0,”lin”,”yellow”,200,0) 说明:主键是不用输入的,但是全列插入时要用0占位,实际以自动生成的为准 b:缺省插入:有默认值而却不需要添加时使用 Insert into 表名(列名1,列名2......) values(值1,值2.......) C:多条插入:insert into 表名 values(值1,值2,。。),(值1,值2,。。。) 多条插入也支持缺省输入 2、删除数据 delete from 表名 where 条件; delete from stu where id = 9; 没有条件是全部删除,慎用 3、改数据 update 表名 set 列1 =值1,列2 = 值2 where 条件; 不写条件就都修改了 4、查询数据: a:查询表中全部数据 select * from 表名; 四、查数据 1、基本语法 格式:select * from 表名; 说明: a、from关键字后面是表名,表示数据来源于这个表 b、Select后面写表中的列名,如果是*表示在结果集中显示表中的所有列。 c、在select后面的列名部分,可以使用as为列名起别名,这个别名显示在结果集中,但是再用别名找找不到该列。 d、如果想查询多个列,之间用逗号分隔 2、消除重复行 在select后面列的前面使用distinct可以不显示重复的行 3、条件查寻 a、语法: Select * from 表名 where 条件 B、比较运算符: 等于 = 大于> 小于 < 大于等于>= 小于等于<= 不等于!=或<> b、逻辑运算符 And or not C、模糊查寻 Like %表示任意多个字符 _表示一个任意字符 D、范围查询 In 表示在一个非连续的范围内 Between.......and.............表示在一个连续的范围内 需求:查询编号是8,10,12的数据 实例:select * from stu where id in (8,10,12); 需求:查询id在6-8的学生 E、空判断 注意null 与””不同 判断空:is null 判断非空:is not null 查询没有地址的同学; Select * from stu where address is null; e、优先级 小括号,not ,比较运算符 ,逻辑运算符,and比or优先级高,如果同时使用,建议使用(); 4、聚合 为了快速得到统计的数据,提供了5个聚合函数 Select 函数() from 表名; 1、count(*) 表示计算总行数,()中可以写*或列名 2、max(列名) 表示求此列的最大值 3、min(列名) 表示求此列的最小值 4、sum(列名) 表示求此列的和 5、avg(列名) 表示求平均数值 需求:查询女生id的最大值: 需求:查看“l”开头的学生年龄和 5、分组 分组是为了将分组后的数据通过聚合函数显示使用,按照字段进行分组,表示此字段相同的数据会被放到一个集合中 分组后,只能查询出相同的数据列,对于有差异的数据列,无法显示在结果集中,可以对分组后的数据进行聚合运算 语法 select 列1,列2,聚合.............From 表名 group by 列1,列2,........ 需求,查询男生,女生分别有多少人 分组后的数据筛选语法 select 列1,列2,聚合.............From 表名 group by 列1,列2,........ having 列1,列2 6、排序 语法:select * from 表名 order by 列1 asc|desc, 列2 asc|desc..... 说明: A、将数据按照列1 进行排序,如果列1数据相同,则按照列2进行排序,....... B、默认升序 C、Asc表示升序 D、Desc表示降序 如果需要筛选,where 条件要放在表名后面 7、分页 Select * from stu limit srart count 八、关联: 建表语句: 1/create table class(id int auto_increment primary key,name varchar(20) not null ,stuNum int not null); 2/create table students(id int auto_increment primary key,name varchar(20) not null ,gender bit default 1,classid int not null,foreign key (classid) references class(id)); 关联查询 select students.name,class.name from class inner join students on class.id = students.classid; 分类: 1、关联查询 select students.name,class.name from class inner join students on class.id = students.classid; 2、left join 会将A中有的填充到左边,没有用null填充 3,rightjoin 会将b中有填充到右边,没有用null填充 使用python写代码前,要退出mysql,要用pip install PyMySql添加库

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值