第一节 数据库的基本概念

1.1什么是数据库

数据库是按照数据结构来组织、存储和管理数据的仓库

数据库是一个数据的集合

其本质是一个文件系统,以文件的方式,将数据保存在电脑上

1.2 为什么要使用数据库

数据库

  • 优点

    • 海量数据存储,提供不错的查询效率
    • 数据可以永久保存(本质是落盘了的)
    • 方便存储和管理数据
    • 使用统一的方式操作数据库
  • 缺点
    • 占用资源(重型武器)——在企业里,在使用数据库的时候往往会把软件安装在服务器上,那么这个机器因为安装了数据库软件,被称为数据库服务器。甚至数据库还搞一个集群,投入几台几十台上百台机器
    • 有些数据库需要付费

1.3 数据库与数据库管理系统

数据库(DB):指的是按照一定结构组织的数据集合,由存储数据的文件组成。

数据库管理系统(DBMS):是一款管理软件。

它用于对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过 DBMS

访问数据库中的数据,数据库管理员也通过 DBMS 进行数据库的维护工作。DBMS 允许多

个应用程序或多个用户使用不同的方法,在同一时刻或不同时刻去建立、修改和询问数据

库。

Oracle 公司的 Oracle (收费)和 MySQL(社区版和商业版)

IBM 公司的 DB2

Microsoft 公司的 Access 和 SQL Server

注意:我们通常所说的数据库其实是DBMS,后面不再强调。

1.4 数据库分类

如果按照业务分类,比如存储地位位置的数据库,被称为地理信息数据库,商标数据库

以下按照技术类型划分:

关系型数据库(RDB: Relationship DataBase)

关系型数据库可以使用SQL语言/SQL语句来操作,是创建在关系模型基础上的数据库

 

关系模型:

典型代表有:MySQL、Oracle、Microsoft SQL Server、Access、PostgreSQL、DB2等。

非关系型数据库(NoSQL)

常规情况我们是不能使用SQL进行操作的,它不是关系模型,比较松散,就好像记事本那些记录差不多吧?

非关系型数据库也被称为 NoSQL 数据库,NoSQL 并不是某个具体数据库,它泛指所有非关

系型数据库。

典型代表有:Hbase、MongoDB、Redis(k/v)、CouchDB等

但Hbase在大数据,尤其是数据开发领域是会涉及到

1.5 数据库排行

Oracle和MySQL是世界市场占比最高的两种数据库

  • Oracle:有钱的大企业采用,互联网企业之外使用第一。
  • MySQL:互联网高速发展,互联网企业使用第一。

IOE: IBM 小型机 ,Oracle数据库,EMC易安信(美国的存储设备提供商)

有钱的行业金融,石油会去采购

阿里云后来说去IOE

1.6 关系型数据库主要对象

对象示例:以Excel为例对比,sheet就是Excel中的对象

关系型数据库的使用架构(MySQL为例)

使用SQL操作数据库,其实就是操作数据库中的对象,从无到有的流程该怎样?

(此处我们可以对比Excel)

Excel:创建一个Excel文档 —> 创建一个sheet —> 在sheet中进行数据操作

MySQL数据库:创建一个数据库 —> 创建一个数据 —> 在表中记录数据

表是包含数据库中所有数据的数据库对象,由行和列组成(二维表格模型,就类似于

Sheet),用于组织和存储数据。

  • 字段

表中每一列称为一个字段,字段有自己的属性,如字段类型、字段大小等。其中,字段类

型是字段最重要的属性,它决定了字段能够存储哪种数据。

和Excel不同,这里针对列(字段要求比较严格),该列存储什么类型数据,长度多少都应

该提前(建表的时候)进行定义

  • 索引

索引是一个单独的、物理的数据库结构。它是依赖于表建立,在数据库中使用索引,无须

对整个表进行扫描,就可以找到需要的数据。

  • 视图

视图是从一张或多张表中导出的表(也称虚拟表),是用户查看数据表中数据的一种方

式。

第二节 MySQL数据库

2.1 MySQL数据类型

MySQL数据库中的每一条数据都有其数据类型,主要分为数值型、字符串型和日期型三大类。

  • 数值类型

TINYINT - 一个非常小的整数,可以带符号。如果是有符号,它允许的范围是从-128到127。如果是无符号,允许的范围是从0到255。

如果是数值范围没那么大的,可以选用这个,因为占据的内存相对比较小。

INT - 正常大小的整数,可以带符号。如果是有符号的,它允许的范围是从-2147483648到

2147483647。如果是无符号,允许的范围是从0到4294967295。

BIGINT - 一个大的整数,可以带符号。如果有符号,允许范围为-9223372036854775808到

9223372036854775807。如果无符号,允许的范围是从0到18446744073709551615。

FLOAT(M,D) - 不能使用无符号的浮点数字。可以定义显示长度(M)和小数位数(D)。这不是必需的,并且默认为10,2。其中2是小数的位数,10是数字(包括小数)的总数。float(5,2) 999.99

DOUBLE(M,D) - 不能使用无符号的双精度浮点数。可以定义显示长度(M)和小数位数(D)。 这不是必需的,默认为16,4,其中4是小数的位数。

  • 字符串类型

短文本:char varchar 比如名字的长度基本都差不多

CHAR(M) - 固定长度的字符串是以长度为1到255之间个字符长度(例如:CHAR(5)),存储右空格填充到指定的长度。 限定长度不是必需的,它会默认为1。 char(5) abcde ab 内存空间会浪

费。当字符基本都是固定的类型,会用到CHAR查询的效率会高些,eg:性别:男/女 char(1)

VARCHAR(M) - 可变长度的字符串是以长度为1到255之间字符数(高版本的MySQL超过255); 例如: VARCHAR(25). 创建VARCHAR类型字段时,必须定义长度。 5 10 12 节省内存空间

abcde

BLOB 或 TEXT - 字段的最大长度是65535个字符。 BLOB是“二进制大对象”,并用来存储大的二进制数据,如图像或其他类型的文件。定义为TEXT文本字段还持有大量的数据; 两者之间的区别是,排序和比较上存储的数据,BLOB大小写敏感,而TEXT字段不区分大小写。不用指定BLOB或TEXT的长度。

  • 日期和时间类型

DATE - 以YYYY-MM-DD格式的日期,在1000-01-01和9999-12-31之间。 例如,1973年12月30日将被存储为1973-12-30。

DATETIME - 日期和时间组合以YYYY-MM-DD HH:MM:SS格式,在1000-01-01 00:00:00 到

9999-12-31 23:59:59之间。例如,1973年12月30日下午3:30,会被存储为1973-12-30

15:30:00。

TIMESTAMP - 1970年1月1日午夜之间的时间戳,到2037的某个时候。这看起来像前面的

DATETIME格式,无需只是数字之间的连字符; 1973年12月30日下午3点30分将被存储为

19731230153000(YYYYMMDDHHMMSS)。

TIME - 存储时间在HH:MM:SS格式。

YEAR(M) - 以2位或4位数字格式来存储年份。如果长度指定为2(例如YEAR(2)),年份就可以为

1970至2069(70〜69)。如果长度指定为4,年份范围是1901-2155,默认长度为4。

第三节 MySQL的安装和配置

查看

方式一:“计算机”右击,“管理”,“服务和应用程序”,“服务”

方式二:cmd→输入net start MySQL(启动)/net stop MySQL(停止)

(省略)

第四节 SQL语句操作详解

4.1 SQL 通用语法

就是增删改查

C:create 增加

R:retrieve 获取/查询

U:update 更新

D:delete 删除

需要使用client端写/发送SQL语句到Sever端

按照功能,往往分成以下几类:

新建Excel--sheet--填入数据;

新建数据库(DataBase)→新建数据表(Table)→插入数据/更改数据/删除数据

  • DDL语句(Date Definition Language 数据定义语言):创建数据库、创建表、修改表结构

——结构性操作,创建或修改数据库/表结构,不涉及具体存储的数据

  • DML语句(Data Manipulation Language 数据操作语言):针对Table数据表中数据的增删改,使用DML
  • DQL语句(Data Query Language 数据控制语言 ):针对Table数据表中数据的查询操作,使用DQL语句
  • DCL语句(Data Control Language 数据控制语言):用于定义用户的访问权限和安全级别

——SQL语句可以单行或者多行书写,以分号结尾;(sqlyog中可以不用分号)

可以使用空格和缩进来增加语句的可读性

MySQL中使用SQL不区分大小写,一般关键字大写,数据库名 表名列名 小写

4.2 注释方式

单行注释:"#" OR "-- "(后面有个空格)

多行注释:

/*

balabala

*/

快捷键:选中需要注释的文本,ctrl+/

4.3 DDL操作数据库

1)创建数据库

create database 数据库名; →创建指定名称的数据库

create database 数据库名 character set 字符集; →创建指定名称的数据库,并且指定字符集(一般都指定utf8)

代码示例:

-- 方式一,直接指定数据库名进行创建

create database db1;

-- 方式二,指定数据库名称,指定数据库的字符集一般指定utf8

create database db1_1 character set utf8;

2)查看/选择数据库

use 数据库; →切换数据库

select database(); →查看当前正在使用的数据库

show database; →查看Mysql中都有哪些数据库

show create database 数据库名; →查看一个数据库的定义信息

代码示例:

-- 切换数据库 从db1 切换到db1_1

use db1_1;
-- 查看当前正在使用的数据库select database();
-- 当有多个数据库的时候,想要查看当前使用的是哪个,用SELECTshow databases;
-- 查看Mysql中有哪些数据库show create database db1_1;
-- 查看一个数据库的定义信息

3)修改数据库

修改数据库字符集

alter database 数据库名 character set 字符集; →数据库的字符集修改操作

代码示例:

ALTER DATABASE db1 CHARACTER SET utf8;
-- 将数据库db1 的字符集修改为utf8SHOW CREATE DATABASE db1;
-- 查看修改后数据库db1的定义信息,发现信息已更改:CREATE DATABASE db1 /*!40100 DEFAULT CHARACTER SET utf8 */ /*!80016 DEFAULT ENCRYPTION='N' */

4)删除数据库

drop database 数据库名; →从Mysql中永久删除某个数据库

代码示例:

DROP DATABASE db1_1;

4.4 DDL操作数据表

一个数据表中可以n个表,表中又有字段(列),在建表的时候就需要定义好字段(指定字段属性→字段数据类型+字段长度等)

常用的数据类型:

类型

描述

INT

整型

DOUBLE

浮点型

VARCHAR

字符串型

DATE

日期类型,给是为2020-11-30,只有年月日,没有时分秒

注意:

char类型是固定长度的,适合存储 固定长度的字符串,比如密码、性别一类;

查询效率高,但耗费空间;

varchar类型是可变长度,适合存储 在一定范围内,有长度变化的字符串;

查询效率不高,但节省空间

eg:保存字符串“abc”

x char(10)占用10个字节

y varchar(10)占用3个字节

1)创建表

在MySQL当中,左列选择对应的数据库,如db1,双击选择下面的“表”,之后点击“新建查询”;

在书写语句之前,检查一下上面的位置是否是对应数据库

语法格式:

CREATE TABLE 表名(

字段名称1 字段类型(长度),

字段名称2 字段类型 #注意 最后一列不要加逗号

);

代码示例:

USE db1;
-- 切换到数据库db1-- 创建表1
CREATE TABLE category(cid INT,cname VARCHAR(20));-- 创建表2
CREATE TABLE test1(tid INT,tname DATE
);

2)快速创建一个表结构相同的表(复制表结构)

语法格式:

create table 新表名 like 旧表名;

代码示例:

CREATE TABLE test2 like test1;
-- 创建一个表结构与test1相同的test2表,只复制表结构,不会复制数据DESC test2;
-- 查看表结构

3)查看表

语法格式:

show table; →查看当前数据库中的所有表名

desc 表名; →查看数据表的结构

代码示例:

-- 查看当前数据库中所有的表名
SHOW TABLES;-- 显示当前数据表的结构
DESC category;-- 查看创建表的SQL语句
SHOW CREATE TABLE category;

4)删除表

语法格式:

drop table 表名; →删除表(从数据库中永久删除某一张表)

drop table if exists 表名; →判断表是否存在,存在的话就删除,不存在不执行删除

代码示例:

-- 直接删除test1 表
DROP TABLE test1;-- 先判断 再删除test2表
DROP TABLE IF EXISTS test2;

5)修改表

①表名

语法格式:

rename table 旧表名 to 新表名;

代码示例:

RENAME TABLE category TO category1;

②向表中添加列,关键字ADD

语法格式:

alter table 表名 add 字段名称 字段类型

代码示例:

-- 分类表添加一个新的字段为 分类描述 cdesc varchar(20)
ALTER TABLE categor ADD cdesc VARCHAR(20);

③修改表中列的 数据类型或长度,关键字MODIFY

语法格式:

alter table 表名 modify 字段名称 字段类型

代码示例:

-- 对分类表的描述字段进行修改,类型varchar(50)
ALTER TABLE category MODIFY cdesc VARCHAR(50);

④修改列名称,关键字CHANGE

语法格式:

alter table 表名 change 旧列名 新列名 类型(长度)

代码示例:

-- 对分类表中的desc字段进行更换,更换为description varchar(30)
ALTER TABLE category CHANGE cdesc decription VARCHAR(30);

⑤删除列,关键字DROP

语法格式:

alter table 表名 drop 列名;

代码示例:

-- 删除分类表中description这列
ALTER TABLE category DROP description;

4.5 DML操作表中数据

1)插入数据

语法格式:

insert into 表名 (字段名1, 字段名2...) values (字段值1,字段值2...);

——字段名1和字段值1,字段名2和字段值2是一 一对应

代码示例:

/* 创建一个学生表
表名:student
表中字段:
学员ID,sid int
姓名,sname varchar(20)
年龄,age int
性别,sex char(1)
地址,address varchar(40)
*/CREATE TABLE student(sid INT,sname VARCHAR(20),age INT,sex CHAR(1),address VARCHAR(40)
);

②向学生表中添加数据,3种方式

A、插入部分/全部字段,将所有字段名都写出来
INSERT INTO student(sid, sname, age, sex, address) VALUES(1, '孙悟空', 20, '男', '花果山');B、插入全部字段,不写字段名
INSERT INTO student VALUES(2, '猪八戒', 20, '男', '高老庄') ;C、插入指定字段的值
INSERT INTO category(cname) VALUES('白骨精');D、多个字段插入,字段后面直接接需要插入数据
create table emp20(eid int primary key auto_increment,ename VARCHAR(20),sex char(1)
);
insert into emp20 values(null,'michael','男');
insert into emp20(ename,sex) values('zhubajie','男');
insert into emp20 values(null,'sunwukong','男'),(null,'白骨精','女'),(null,'蜘蛛精','女')

注意:

1.值与字段必须要对应

2.值的大小必须在字段指定的范围内

3.除了数值类型以外,其他类型都需要使用 单引号包裹

4.插入空值,可以忽略不写字段,或者插入空值NULL

5.如果插入指定字段的值,必须要写上列名

2)更改数据

语法格式1:不带条件的修改

update 表名 set 列名 = 值;

语法格式2:带条件的修改

update 表名 set 列名 = 值 [where 条件表达式:字段名 = 值];

代码示例:

-- 不带条件修改,将所有的性别改为女
-- 全部更改(慎用!!)
UPDATE student SET sex='女';
UPDATE student SET sex='男';-- 带条件更改
UPDATE student SET sex='女' WHERE sid=3;-- 一次修改多个列
UPDATE student SET age='30', address='盘丝洞', sname='白骨精' WHERE sid=3;

3)删除数据

语法格式1:删除所有数据

delete from 表名;

语法格式2:指定条件 删除数据

delete from 表名 where 字段名 = 值;

代码示例:

-- 删除指定数据
DELETE FROM student WHERE sid=1;-- 删除表中所有数据
DELETE FROM student;

注意:

如果要删除表中的所有数据,有两种做法:

1.delete from 表名; 不推荐,有多少记录 就执行多少次删除 效率低

2.truncate table 表名; 推荐,先删除整张表格,然后再重新建一张一模一样的表,效率高

当一个表中条数非常多,又要做删除动作的时候,如果用delete会很慢,那我们可以使用truncate(但是删除后不能恢复)

TRUNCATE TABLE student;

4.6 DQL查询表中数据

1)准备数据

/*
表名 emp
表中字段:
eid 员工id,int
ename 姓名,varchar
sex 性别,char
salary 薪资,double
hire_date 入职时间,date
dept_name 部门名称,varchar
*/-- 代码:
CREATE TABLE emp(eid INT,ename VARCHAR(20),sex CHAR(1),salary DOUBLE,hire_date DATE,dept_name VARCHAR(20)
);#准备数据
-- 添加数据
INSERT INTO emp VALUES(1,'孙悟空','男',7200,'2013-02-04','教学部');
INSERT INTO emp VALUES(2,'猪八戒','',3600,'2010-12-02','教学部');
INSERT INTO emp VALUES(3,'唐僧','男',9000,'2008-08-08','教学部');
INSERT INTO emp VALUES(4,'白骨精','女',5000,'2015-10-07','市场部');
INSERT INTO emp VALUES(5,'蜘蛛精','女',5000,'2011-03-14','市场部');
INSERT INTO emp VALUES(6,'玉兔精','女',200,'2000-03-14','市场部');
INSERT INTO emp VALUES(7,'林黛玉','女',10000,'2019-09-14','财务部');
INSERT INTO emp VALUES(8,'黄蓉','女',3500,'2011-09-14','财务部');
INSERT INTO emp VALUES(9,'吴承恩','男',20000,'2000-03-14',NULL);
INSERT INTO emp VALUES(10,'孙悟饭','男',10,'2020-03-14','财务部');
INSERT INTO emp VALUES(11,'兔八哥','女',300,'2010-03-14','财务部');
INSERT INTO emp VALUES(12,'露娜','女',40000,'2018-05-09','财务部');
INSERT INTO emp VALUES(13,'刘备','男',6000,'2017-08-06','教学部');
INSERT INTO emp VALUES(14,'刘婵','男',4600,'2018-09-10','幼儿园');
INSERT INTO emp VALUES(15,'孙尚香','女',5000,'2011-04-05','市场部');
INSERT INTO emp VALUES(16,'小乔','女',6000,'2019-08-09','市场部');
INSERT INTO emp VALUES(17,'大乔','女',8000,'2010-09-10','财务部');

2)简单查询

查询所有数据:select * from emp;

查询部分字段数据:select ename, salary from emp;

查询部分字段,指定别名(AS可省略):select ename as '员工姓名',salary '工资' from emp;

给表取别名:select * from emp e where e.ename='黄蓉';

去重选择:select distinct  dept_name from emp;

将所有员工的工资 +1000 元进行显示:select ename,salary+1000 from emp;

3)条件查询

语法格式:select 列名 from 表名 where 条件表达式;

比较运算符

运算符

说明

>、<、<=、 >= 、<> OR !=

大于、小于、大于等于、小于等于、不等于

between...and...

显示在某一区间的值

例如:2000-10000之间:between 2000 and 10000

IN(集合)

集合表示多个值,使用逗号分隔,例如:where sname in('孙悟空','猪八戒')

in中的每个数据都会作为一次条件,只要满足条件就会显示

WHERE SNAME LIKE'%王%'

LIKE '王%'

LIKE '%王'

模糊查询,有王字就可以

开头是王字,

结尾是王字

is null

查询某一列为null的值,注:不能写 = NULL

逻辑运算符

运算符

说明

AND & &

多个条件同时成立

Or ||

多个条件任一成立

NOT

不成立,取反

模糊查询 通配符

通配符

说明

%

表示匹配任意多个字符串

_

表示匹配 一个字符

代码示例:

# 查询含有'精'字的所有员工信息
select * from emp e where e.ename like '%精%';# 查询以'孙'开头的所有员工信息
select * from emp e where e.ename like '孙%';# 查询第二个字为'兔'的所有员工信息
select *from emp e where e.ename like '_兔%';# 查询没有部门的员工信息
select * from emp e where dept_name is null;# 查询有部门的员工信息
select * from emp e where dept_name is not null;

语句汇总图

MySQL-基础(一)相关推荐

  1. mysql基础之视图

    原文:mysql基础之视图 在查询中,我们经常把查询结果 当成临时表来看. View是什么? View可以看一张虚拟表. 是表通过某种运算得到的一个投影. 既然视图只是表的某种查询的投影,所以主要步骤 ...

  2. MySQL基础day03_数据的导入、导出-MySQL 5.6

    MySQL基础day03_数据的导入.导出-MySQL 5.6 注:把数据按照一定格式存放到文件里才能进行数据的导入. 1,数据导入的条件 把文件里的内容保存到数据的表里: 把数据按照一定格式存放文件 ...

  3. MySQL基础篇:子查询

    文章目录 概述 where型子查询 from型子查询 EXISTS型子查询 复制表子查询 概述 在某些情况下,当进行一个查询时,需要的条件或数据要用另一个select语句的结果,这个时候,就要用到** ...

  4. mysql 存储引擎 面试_搞定PHP面试 - MySQL基础知识点整理 - 存储引擎

    MySQL基础知识点整理 - 存储引擎 0. 查看 MySQL 支持的存储引擎 可以在 mysql 客户端中,使用 show engines; 命令可以查看MySQL支持的引擎: mysql> ...

  5. mysql 基础篇(二) 账号、权限管理

    mysql 基础篇(二) 账号.权限管理.备份与还原 建立账号密码: Grant all on test.* to "cj"@"localhost" ident ...

  6. MySQL:基础—数据分组

    MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...

  7. linux mysql运维_Linux运维常用的 MySQL基础命令

    # MySQL基础命令 ------------- ### 创建MySQL库,授权. >create database mysqldb character set utf8; >grant ...

  8. mysql基础(全,必看)

    MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...

  9. mysql核心数据库_从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程...

    从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程 课程目录 (1) 01MySQL基础_课程引入.avi (2) 02MySQL基础_为什么学习 ...

  10. MySQL 笔记2 -- MySQL 基础

    MySQL 笔记2 – MySQL 基础 MySQL 系列笔记是笔者学习.实践MySQL数据库的笔记 课程链接: MySQL 数据库基础入门教程 参考文档: MySQL 官方文档 一.MySQL 简介 ...

最新文章

  1. MPB:邓晔、王尚等-​环境样本中的细菌总量测定—流式细胞法
  2. rabbitmq消费固定个数消息_SpringBoot+RabbitMQ (保证消息100%投递成功并被消费)
  3. 复选框选择变化(可以演化成简单的字符串拼接)
  4. python 学习笔记day03-python基础、python对象、数字、函数
  5. liunx 详细常用操作
  6. DOMJavaScript示例练习
  7. 简述 JavaScript 作用域与词法分析
  8. 企业运维几百个重点面试题汇总(老男孩)
  9. 天天早上慢跑一小时对身体好吗?
  10. 牵手高通的百度是要拿科大讯飞开刀了?
  11. 快速图像检索(Deep Learning of Binary Hash Codes for Fast Image Retrieval)
  12. c盘local文件太大_win7 c盘清理的方法教程
  13. 计算机行业未来作文,未来的计算机作文
  14. 安卓psp模拟器哪个好_手机psp模拟器哪个好_安卓PSP模拟器中文官方版下载_66游戏网...
  15. PHPMywind while 二级嵌套循环
  16. 王刚日记:在互联网第一次赚到钱
  17. JavaPOI导出Excel合集——Java导出全内容
  18. 如何使用docker容器中的redis
  19. X86 Debuggers And Tools-x86_en-us 下载及使用
  20. AJAX异步判断注册用户名是否重复

热门文章

  1. OpenGL学习笔记(四)-光照-材质-光照贴图
  2. excel的【分类汇总】无法使用
  3. 项目变更控制委员会(CCB)
  4. linux能用airport吗_为什么都用Linux作为云主机的操作系统?
  5. 服务器机柜透明显示屏展示,透明液晶显示屏原理和构成简介
  6. 计算机应用实验室管理制度,计算机应用实验室管理规章制度.doc
  7. 110个经典Photoshop文字制作教程
  8. 火影603~630 不管是真的假的,写的够精彩的。
  9. win10 任务栏右下角 图标间距变大 问题解决方法
  10. python爬虫初战之小说爬取