Mysql数据库操作总结
文章目录
- 1. DDL(Data Definition Language - 数据定义语言)
- 1.1 数据库
- 1.2 数据表(创建+查询+删除)
- 1.3 数据表(修改)
- 2. 数据类型
- 2.1 数值
- 2.2 字符
- 2.3 日期
- 3. 字段约束
- 3.1 约束
- 3.2 主键约束修改
- 3.3 主键自增 + 联合主键
- 4. DML(Data Manipulation Language - 数据操作语言)
- 4.1 添加数据
- 4.2 删除数据
- 4.3 修改数据
- 5. DQL(Data Query Language - 数据查询语言)
- 5.1 查询 + 限制条件(where + and/or)
- 5.2 结果处理(+/-, as, distinct)
- 5.3 模糊查询(like)
- 5.4 结果排序(order by)
- 5.5 聚合函数(count, max, min, sum, avg)
- 5.6 日期与字符串函数[now(), sysdate(), concat(), upper()...... ]
- 5.7 分组(group by) + 分页查询(limit)
- 6. 数据表关联关系(一对一, 一对多, 多对多)
- 6.1 关联关系
- 6.2 外键约束(创建\修改)
- 6.3 外键约束 ------ 级联
- 7. 连接查询
- 7.1 联合查询(join)
- 7.2 嵌套查询
1. DDL(Data Definition Language - 数据定义语言)
1.1 数据库
## 显示数据库
show databases
## 显示指定数据库创建信息
show create database <database_name>
## 数据库创建
create database <database_name>
## 判断数据库是否存在
create database (if not exists) <database_name>
## 创建数据库同时指定数据库字符集(数据存储编码格式 utf8, gbk)
create database <database_name> character set utf8
## 修改数据库字符集
alter database <database_name> character set utf8
## 删除数据库
drop database (if exists) <database_name>
## 使用/切换数据库
use <database_name>
## 注销数据库
exit
1.2 数据表(创建+查询+删除)
## 创建数据库表
create table <table_name>(
id int unique not null,
name varchar(8) unique
);
## 显示数据表
show tables
## 查询数据表
desc <table_name>
## 删除数据表
drop table [if exists] <table_name>
1.3 数据表(修改)
## 修改表名
alter table <table_name> rename to <new_table_name>
## 修改表的字符集
alter table <table_name> character set utf8
## 添加字段(列)
alter table <table_name> add <column_name> <type>
## 修改字段名和类型
alter table <table_name> change <old_column_name> <new_column_name> <type>
## 修改字段类型
alter table <table_name> modify <column_name> <type>
## 删除字段
alter table <table_name> drop <column_name>
2. 数据类型
2.1 数值
2.2 字符
2.3 日期
3. 字段约束
3.1 约束
## 约束
非空约束(not null) : 值不能为 null, 通常默认为可以非空
唯一约束(unique) : 此列的值不能重复
主键约束(primary key) : 非空 + 唯一, 唯一标识数据表中一条数据
外键约束(foreign key) : 建立不同表间联系
3.2 主键约束修改
———— 主键约束修改
## 创建表时添加主键约束
create table t5(
id int primary key,
name varchar(10)
);
create table t(
id int,
name varchar(10),
primary key(id)
);
## 删除数据表主键约束
alter table <table_name> drop primary key
## 创建表之后添加主键约束
alter table <table_name> modify <column_name> <type> primary key
3.3 主键自增 + 联合主键
## 主键自增(保证唯一性, 不保证连续性)
## 定义 int 类型字段自动增长
id int primary key auto_increment;
## 联合主键(将数据表当中多列组合在一起设置为表的主键)
## 定义联合主键(默认全部为 not null)
create table t(
stu_id int,
cou_id int,
primary key(stu_id, cou_id)
);
4. DML(Data Manipulation Language - 数据操作语言)
4.1 添加数据
## 添加数据 (column_name 顺序可以改变, 对应values位置不能改变)
insert into <table_name>(column_name, column_name, .....) values(?, ?, .....)
## 若添加所有字段, 可以省略column_name, 但是values值与表字段顺序必须对应(通常建议全写)
insert into <table_name> values(?, ?, ?, ......)
4.2 删除数据
## 删除数据
delete from <table_name> where <conditions>
## 删除所有数据
delete from <table_name>
4.3 修改数据
## 修改单行数据, 若无[where condition], 直接修改所有行
update <table_name> set column_name = value [where condition]
## 修改多行数据, 若无[where condition], 直接修改所有行
update <table_name> set column_name = value, column_name = value, ....... [where condition]
5. DQL(Data Query Language - 数据查询语言)
5.1 查询 + 限制条件(where + and/or)
## 基本查询语句
select column_name1, column_name2, ..... from <table_name> [where condition]
select * from <table_name> (开发时不建议使用)
## where条件: 在删除,修改及查询语句之后都可以添加 where 子句(条件), 用于筛选满足特定的数据进行删除,修改,查询操作
-- 等于判断: =
-- 不等于判断: != / <>
-- 大于判断: >
-- 小于判断: <
-- 大于等于判断: >=
-- 小于等于判断: <=
-- 区间查询, [a, b]区间内: between a and b
## 多条件查询: 在 where 子句当中通过多个条件通过逻辑运算符(and or)进行连接,通过多个条件筛选要操作的数据
and条件(同时满足): where x and y
or条件(满足其一): where x or y
not取反(范围取反): not between x and y
5.2 结果处理(+/-, as, distinct)
## 查询指定列
- select <column_name1, column_name2> from <table_name> <where condition>
## 计算列
- select name, id - 1 from <table_name>
## 字段取别名 —— as
select <column_name> as <other_name> from <table_name>
## 将查询结果当中重复记录删除 —— distinct
select distinct <column_name, column_name, ....> from <table_name>
5.3 模糊查询(like)
## LIKE子句 -- where子句条件中, 使用like关键字完成模糊查询
% : 表示任意多个字符
_ : 表示一个字符
## 名字当中含有h : select * from stu where name like ‘%h%' (字母不区分大小写)
5.4 结果排序(order by)
## order by 排序
## 默认 asc 升序排序, desc 按照指定列降序排序
## 按照指定列升序
select * from <table_name> [where condition] order by column_name asc
## 按照列1升序,再按照列2降序
select * from <table_name> [where condition] order by column_name1 asc, column_name2 desc
5.5 聚合函数(count, max, min, sum, avg)
## SQL中提供了一些可以对查询的记录的列进行计算的函数 —— 聚合函数
## count()函数: 统计满足满足条件指定字段个数
select count(<column_name>) from <table_name> [where condition]
## max()函数: 统计满足满足条件指定字段值的最大值
select max(<column_name>) from <table_name> [where condition]
## min()函数: 统计满足满足条件指定字段值的最小值
select min(<column_name>) from <table_name> [where condition]
## sum()函数; 统计满足满足条件指定字段值的总和
select sum(<column_name>) from <table_name> [where condition]
## avg()函数: 统计满足满足条件指定字段值的平均值
select avg(<column_name>) from <table_name> [where condition]
5.6 日期与字符串函数[now(), sysdate(), concat(), upper()… ]
## 日期函数和字符串函数
## 日期类型(datetime)
## 1. 可以使用字符串赋值,注意格式(yyyy-MM-dd hh:mm:ss)
insert into t(id, name, time) values(2,"hh", "2021-5-21 09:6:21");
## 2. 获取当前系统时间可以使用 now() 或者 sysdate()
insert into t(id, name, time) values(2,"hh", now());
insert into t(id, name, time) values(2,"hh", sysdate());
## 字符串函数:
## 1. concat(column1, column2)函数: 将多列进行连接
select concat(id, '-', name) from t;
## 2. upper(column)函数: 将字符串中字母全部设置为大写
select upper(name) from t;
## 3. lower(column)函数: 将字符串中字母全部设置为小写
select lower(name) from t;
## 4. substring(column, start, len)函数: 指定列当中截取部分长度
select substring(name, 1, 2) from t;
5.7 分组(group by) + 分页查询(limit)
## 分组查询(默认只显示分组后的第一个元素 - 重复元素不再显示)
## select 分组字段/聚合函数 from 表名 [where 条件] group by 分组列名 [having 条件] [order by]
- 1. 先按照 where 条件进行查询记录
- 2. 对查询记录进行分组
- 3. 执行 having 对分组后的数据再进行筛选
- 4. 执行 order by 排序
- select * 通常显示分组后的第一条记录(通常无意义)
- select * from t group by id;
- select 通常用分组字段和对分组字段进行聚合函数(进行相关计算)
- select id, count(id) from t group by id having id >= 3 order by id desc
## 分页查询(limit x, y)
## 查询[x + 1, x + y + 1]
select * from <table_name> [where condition] limit (pagenum - 1)*pagesize, pagesize
select * from <table_name> limit 0, 5;
6. 数据表关联关系(一对一, 一对多, 多对多)
6.1 关联关系
## 一对一关联
-- 1. 两张数据表主键相同的数据相互对应
-- 2. 唯一外键: 任意一张表添加外键约束与另一张表主键关联,并且将外键添加唯一约束(存在且唯一)
## 一对多关联
-- 1. 在多的一方添加外键,与另一方的主键进行关联
## 多对多关联
-- 1. 额外创建一张关系表,定义两个外键分别与两个数据表中的主键进行关联
6.2 外键约束(创建\修改)
## 外键约束
-- 创建表时定义 cid 字段,并添加外键约束
-- cid列要和 course(课程)表当中的 course_id 进行关联,cid字段类型和长度要和course_id保持一致constraint <外键名> foreign key(列名) references <主表名>(<列名>)create table <table_name>(cid int,constraint fk_students_classes foreign key(cid) references courses(course_id)
);
ALTER TABLE <数据表名> ADD CONSTRAINT <外键名>
FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);## 外键约束修改
-- 创建表之后, 为cid字段添加外键约束
alter table students add constraint fk_students_classes foreign key(cid) references course(course_id)
-- 删除外键约束
alter table students drop foreign key fk_students_classes
6.3 外键约束 ------ 级联
## 外键约束-级联-- 被关联的表当中的主键不能修改和删除(若没有关联信息则可直接修改)-- 如果一定需要修改班级的id信息(3步)
1. 将需要修改class_id对应对应学生记录的cid设置为null
2. 修改想要修改的class_id
3. 将学生表当中cid设置为null的记录重新设置为这个新的class_id
update students set cid = 4 where cid is null;
## 添加外键时同步设置 级联修改 和 级联删除 (修改主表[course]会同步影响副表[students])-- 去除原有的外键约束
alter table students drop foreign key fk_students_classes
-- 级联修改
alter table students add constraint fk_students_classes foreign key(cid) references course(course_id) on update cascade
-- 级联删除
alter table students add constraint fk_students_classes foreign key(cid) references course(course_id) on delete cascade
7. 连接查询
7.1 联合查询(join)
## join实现多表的联合查询 —— 连接查询
## inner join 内连接(两张数据表的笛卡尔集)
select * from <table_name1> inner join <table_name2> [on condition];## leftr join 左连接(左表完全显示,若右表有匹配则显示)
select * from <table_name1> left join <table_name2> [on condition];## right join 右连接(右表完全显示,左表匹配则显示)
select * from <table_name1> right join <table_name2> [on condition];
## where 和 on 设置查询条件## where过滤: 先生成笛卡尔积再过滤(效率低)
select * from <table_name1> inner join <table_name2> where condition;## on设置连接查询条件: 先判断是否成立,成立则连接为一条记录
select * from <table_name1> inner join <table_name2> on condition;
7.2 嵌套查询
## 子查询/嵌套查询## 查询结果(单行单列), 从则可以直接使用关系运算符(=, !=, ...)连接
select * from <table_name> where <column_name> = (select <column_name2> from <table_name2> where ...)## 查询结果(多行单列)
- 传统方式:
select * from students where id = 1 union
select * from students where id = 2 .....
- 子查询方式: in / not in
select * from students where id in (select class_id from classes where ...)## 查询结果(多行多列): 取别名作为新的表继续使用
select * from (select * from students where cid = 1) <table_别名-t> where t.name = "学生1"
相关文章:
Mysql数据库操作总结
文章目录 1. DDL(Data Definition Language - 数据定义语言)1.1 数据库1.2 数据表(创建查询删除)1.3 数据表(修改) 2. 数据类型2.1 数值2.2 字符2.3 日期 3. 字段约束3.1 约束3.2 主键约束修改3.3 主键自增 联合主键 4. DML(Data Manipulation Language - 数据操作语言)4.1 添…...
在 ZBrush、Substance 3D Painter 和 UE5 中创作警探角色(P2)
大家好,下篇分享咱们继续来说警探角色的重新拓扑、UV、材质贴图和渲染处理。 重新拓扑/UV 这是对我来说最不有趣的部分——重新拓扑。它显然是实时角色中非常重要的一部分,不容忽视,因为它会影响大量的 UV、绑定和后期渲染,这里…...
如何在大规模服务中迁移缓存
当您启动初始服务时,通常会过度设计以考虑大量流量。但是,当您的服务达到爆炸式增长阶段,或者如果您的服务请求和处理大量流量时,您将需要重新考虑您的架构以适应它。糟糕的系统设计导致难以扩展或无法满足处理大量流量的需求&…...
【GPT LLM】跟着论文学习gpt
GPT1开山之作:Improving language understanding by generative pre-training 本文提出了gpt1,即使用无标签的数据对模型先进行训练,让模型学习能够适应各个任务的通用表示;后使用小部分 task-aware的数据对模型进行微调ÿ…...
【玩转Docker小鲸鱼叭】Docker容器常用命令大全
在 Docker 核心概念理解 一文中,我们知道 Docker容器 其实就是一个轻量级的沙盒,应用运行在不同的容器中从而实现隔离效果。容器的创建和运行是以镜像为基础的,容器可以被创建、销毁、启动和停止等。本文将介绍下容器的这些常用操作命令。 1、…...
专项练习11
目录 一、选择题 1、执行下列选项的程序,输出结果不是Window对象的是() 2、以下哪些代码执行后 i 的值为10: 二、编程题 1、判断 val1 和 val2 是否完全等同 2、统计字符串中每个字符的出现频率,返回一个 Object&…...
ASP.NET+SQL通用作业批改系统设计(源代码+论文)
随着网络高速地融入当今现代人的生活,学校对网络技术的应用也在不断地提高。学校的教学任务十分复杂,工作也很繁琐,在教学任务中,作业的批改也是一个很重要的环节。为了提高老师工作效率,减轻教师的工作强度,提高作业批改的灵活性,《通用作业批改系统》的诞生可以说是事在…...
基于深度学习的高精度打电话检测识别系统(PyTorch+Pyside6+YOLOv5模型)
摘要:基于深度学习的高精度打电话检测识别系统可用于日常生活中或野外来检测与定位打电话目标,利用深度学习算法可实现图片、视频、摄像头等方式的打电话目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检…...
Vue搭建智能文本检索视频界面
前言 随着人工智能技术的发展,智能文本检索已经成为了一种非常流行的技术。在视频领域中,智能文本检索技术可以帮助用户快速找到自己需要的视频片段,提高用户的观看体验。本文将介绍如何使用Vue框架搭建一个智能文本检索视频界面,…...
软考A计划-系统集成项目管理工程师-一般补充知识-中
点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧ÿ…...
springboot-内置Tomcat
一、springboot的特性之一 基于springboot的特性 自动装配Configuretion 注解 二、springboot内置Tomcat步骤 直接看SpringApplication方法的代码块 总纲: 1、在SpringApplication.run 初始化了一个上下文ConfigurableApplicationContext configurableApplica…...
Flink流批一体计算(2):Flink关键特性
目录 Flink关键特性 流式处理 丰富的状态管理 丰富的时间语义支持 Data pipeline 容错机制 Flink SQL CEP in SQL Flink 应用程序可以消费来自消息队列或分布式日志这类流式数据源(例如 Apache Kafka 或 Kinesis)的实时数据,也可以从各…...
2023软件工程中各种图在现代企业级开发中的使用频率
概览 系统流程图 ✔ 数据流图 不常用 ER图 ✔ 状态转换图 ✔ Warnier图 不常用 IPO图 不常用 Petri网 不常用 层次方框图 不常用 层次图 a.k.a. H图 ✔ 1,层次图描绘软件的层次结构.层层次方框图描绘的是数据结构。 2,层次图的方框表示模块或子模块。层次方框图的方框表示数据结…...
macOS Big Sur 11.7.8 (20G1351) 正式版 ISO、PKG、DMG、IPSW 下载
macOS Big Sur 11.7.8 (20G1351) 正式版 ISO、PKG、DMG、IPSW 下载 本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Window…...
【C++案例】一个项目掌握C++基础-通讯录管理系统
文章目录 1、系统需求2、菜单功能3、退出功能4、添加联系人4.1 设计联系人结构体4.2 设计通讯录结构体4.3 main函数中创建通讯录4.4 封装添加联系人函数4.5 测试添加联系人功能 5、显示联系人5.1 封装显示联系人函数5.2 测试显示联系人功能 6、删除联系人6.1 封装检测联系人是否…...
Triton教程 --- 动态批处理
Triton教程 — 动态批处理 Triton系列教程: 快速开始利用Triton部署你自己的模型Triton架构模型仓库存储代理模型设置优化动态批处理 Triton 提供了动态批处理功能,将多个请求组合在一起执行同一模型以提供更大的吞吐量。 默认情况下,只有当每个输入在…...
Python的并行(持续更新)
0. 参考: 《Python并行编程 中文版》https://python-parallel-programmning-cookbook.readthedocs.io/zh_CN/latest/index.html 1. 线程和进程: 进程可以包含多个并行运行的线程;通常,操作系统创建和管理线程比进程更省CPU资源&am…...
chatgpt赋能python:Python实现Fibonacci数列
Python实现Fibonacci数列 Fibonacci数列是一个非常经典的数列,定义如下: F ( 0 ) 0 , F ( 1 ) 1 F(0)0, F(1)1 F(0)0,F(1)1 F ( n ) F ( n − 1 ) F ( n − 2 ) F(n)F(n-1)F(n-2) F(n)F(n−1)F(n−2) 也就是说,第n个数等于前两个数之和…...
开环模块化多电平换流器仿真(MMC)N=6
模型简介: 运行环境MATLAB2021a 开环模块化多电平换流器仿真(MMC)N=6,连接负载,采用载波移相调制。 可以得到换流器输出N+1=7电平的相电压波形。可考虑线路阻抗。 子模块采用半桥结…...
java springboot整合MyBatis联合查询
前面文章 java springboot整合MyBatis做数据库查询操作写了springboot整合MyBatis的方法 并演示了基础查询的语法 根据id查 那么 我们这次来演示联合查询 我们staff 表 内容如下 每条数据 对应的都有一个departmentid 这是 department部门表的外键id department表内容如下 如…...
windows2022证书配置.docx
Windows证书的配置 要求两台主机,一台作为域,一台进入域 按要求来选择角色服务 确认之后安装 安装完以后配置证书服务 选择服务 按要求配置 注:此处不用域用户登陆无法使用企业CA 按要求来 创建新的私钥 这几处检查无误后默认即可 有效期…...
HCIP网络笔记分享——IA回顾及OSPF协议
第一部分 HCIA回顾1、网络基础2、动态路由协议3、路由认证4、路由控制(AD metric ) 一、知识巩固二、场景模拟1、获取IP地址1.1 DHCP --- 动态主机配置协议1.1.1 DHCP客户端1.1.2 DHCP服务器1.1.3 DHCP客户端1.1.4 DHCP服务器 2、打开浏览器3、路由器进行…...
网络:IP地址、子网掩码、网络地址、广播地址、网段、网关
目录 一、IP地址 二、子网掩码 三、网络地址 四、广播地址 五、网段 六、网关 七、IP地址、子网掩码、网络地址、广指地址、网殷、网关的关系 参考链接 一、IP地址 IP地址是因特网协议(IP)中使用的一种数字标识符,用于唯一地标识网络…...
编程的未来 - 还有未来么?
缘起 唐门教主上个月某天深夜写了一篇博客 --《编程的未来》,要我谈谈感想。 这也是最近软件工程师们聊得比较多的问题,上周,在上海的 “关东小磨” 和十多位 CSDN 博主聚会的时候,大家也稍微谈了一下这个话题,但是谈…...
从零开始搭建群众权益平台(二)
这篇文章我们要建立的群众权益维护平台需要提供用户注册、登录、提交和查看问题或建议的功能,并且支持电话短信登录。在这个过程中,我们需要存储用户的登录信息。 我们将使用Node.js和Express.js作为后端框架,MongoDB作为数据库,并且使用Twilio服务发送短信验证码来实现手…...
Mysql之数据备份
一.日志 1.MySQL 的日志默认保存位置为 /usr/local/mysql/data2.修改日志配置文件 vim /etc/my.cnf [mysqld] ##错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启 log-error/usr/local/mysql/data/mysql_error.log #指定日志的…...
【数据库数据恢复】SQL Server数据表结构损坏的数据恢复案例
数据库故障&分析: SQL server数据库数据无法读取。 经过初检,发现SQL server数据库文件无法被读取的原因是因为底层File Record被截断为0,无法找到文件开头,数据表结构损坏。镜像文件的前面几十M空间和中间一部分空间被覆盖掉…...
C语言/C++ 之 打飞机游戏
【项目简介】 1、设计思想:本项目主要是为了实现打飞机游戏,主要包括5个函数模块,和1个主函数框架。分别是chu_shi_hua();、you_cao_zuo;、wu_cao_zuo();、show();、main();等。项目完成过程中主要运用了C/C中的输入输…...
在 Docker 中部署 Mino 并挂载配置文件
创建本地目录 首先,在主机上创建一个目录,用于存放 Mino 的配置文件。例如,创建一个名为 mino 的目录,用于存放 Mino 的配置文件。 mkdir mino拉取 Mino 镜像 使用以下命令从 Docker Hub 上拉取 Mino 的最新镜像: …...
无限脉动:释放音乐和区块链在音乐领域的力量
音乐是一种永恒的通用语言,它将人们聚集在一起,超越了边界,在我们灵魂深处产生共鸣,创造联系。在当今数字时代,随着区块链技术和去中心化网络的出现,音乐世界正在经历一场深刻的变革。 我们在与艺术家合作&…...
模版建站/推广计划书范文
<1> 字体设置: /* 单词之间间距 */ letter-spacing:3px; /* 定义以空格间隔文字的间距(就是空格本身的宽度) */ word-spacing:50px; /* 定义文本的大小写状态 capitalize首字母大写 | uppercase大写 …...
学校网站建设作用/深圳市企业网站seo营销工具
1)实验平台:正点原子领航者ZYNQ开发板2)平台购买地址:https://item.taobao.com/item.htm?&id6061601087613)全套实验源码手册视频下载地址:http://www.openedv.com/docs/boards/fpga/zdyz_linhanz.htm…...
网站网络拓扑图/公司网站建设方案
还原AdventureWorks2008的时候报了个错 转自 http://msdn.microsoft.com/zh-cn/library/cc645923(vSQL.100).aspx 在开始使用 FILESTREAM 之前,必须在 SQL Server 数据库引擎实例中启用 FILESTREAM。本主题说明了如何使用 SQL Server 配置管理器来启用 FILESTREAM。…...
36氪是wordpress开发的吗/淄博网站优化
在Activity之间数据传递中还有一种比较实用的方式,就是全局对象,使用J2EE的读者来说都知道Java Web的四个作用域,这四个作用域从小到大分别是:Page、Request、Session和Application,其中Application域在应用程序的任何…...
个人网站做接口可以么/网站建设公司地址在哪
【题目链接】:http://codeforces.com/contest/509/problem/E 【题意】 让你计算一个字符串的所有子串里面元音字母出现的频率的和; 【题解】 先处理出前缀和->pre[i]->前i个字母里面元音字母的个数; 设ans[i] 表示长度为i的子串出现的元音字母的个数(重复的也要算…...
ps做网站难吗/seo推广代理
1 int my_sum_func(int i, int k)2 {3 return ik;4 }5 // 定义函数指针的两种方式6 7 // 第一种:声明一个函数指针变量8 int (*func_ptr)(int, int);9 // (int(*)(int, int)) func_ptr; 这种声明方式不合法 10 // 函数指针书写的几个要点: 11 // 1 标…...