【MySQL】基本操作 —— DML 与约束

目录

  • DML 基本介绍
  • DML 常见操作
    • 添加数据 insert
      • 给指定字段添加数据
      • 给全部字段添加数据
      • 给指定字段批量添加数据
      • 给全部字段批量添加数据
    • 修改数据 update
    • 删除数据 delete
  • 约束基本概念
  • 约束操作
    • 主键约束
      • 添加单列主键
      • 添加多列主键(联合主键)
      • 修改表结构添加主键
      • 删除主键约束
    • 自增长约束
      • 默认自增字段初始值
      • 指定自增字段初始值
    • 非空约束
      • 添加非空约束
      • 删除非空约束
    • 唯一约束
      • 添加唯一约束
      • 删除唯一约束
    • 默认约束
      • 添加默认约束
      • 删除默认约束
    • 零填充约束
      • 添加零填充约束
      • 删除零填充约束

DML 基本介绍

DML(Data Manipulation Language),数据操作语言,用来对数据库中表的数据记录进行更新

常见的操作有:

  • 添加数据
  • 修改数据
  • 删除数据

DML 常见操作

添加数据 insert

  • 插入数据时,指定的字段顺序需要与值的顺序是一一对应的
  • 字符串和日期型数据应包含在引号中
  • 插入的数据大小应该在字段的规定范围内

给指定字段添加数据

语法格式:

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

代码示例:

-- 创建学生表student
create table if not exists student(id int comment '学号',name varchar(10) comment '姓名',gender char(1) comment '性别'
);
-- 往student表中添加数据
insert into student (id, name) values (1,'张三');

结果如下:
在这里插入图片描述

给全部字段添加数据

语法格式:

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

代码示例:

-- 创建学生表student
create table if not exists student(id int comment '学号',name varchar(10) comment '姓名',gender char(1) comment '性别'
);
-- 往student表中添加数据
insert into student values (1,'张三','男');

结果如下:
在这里插入图片描述

给指定字段批量添加数据

语法格式:

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

代码示例:

-- 创建学生表student
create table if not exists student(id int comment '学号',name varchar(10) comment '姓名',gender char(1) comment '性别'
);
-- 往student表中添加数据
insert into student (id, name) values (1,'张三'),(2,'李四'),(3,'王五');

结果如下:
在这里插入图片描述

给全部字段批量添加数据

语法格式:

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

代码示例:

-- 创建学生表student
create table if not exists student(id int comment '学号',name varchar(10) comment '姓名',gender char(1) comment '性别'
);
-- 往student表中添加数据
insert into student values (1,'张三','男'),(2,'李四','男'),(3,'王五','男');

结果如下:
在这里插入图片描述

修改数据 update

语法格式:

update 表名 set 字段名=值,字段名=值,... [where 条件];

  • where 关键字用来筛选条件
  • 如果没有 where 关键字,则会修改整张表的数据

代码示例:

-- 创建学生表student
create table if not exists student(id int comment '学号',name varchar(10) comment '姓名',gender char(1) comment '性别',address varchar(20) comment '地址'
);
-- 往student表中添加数据
insert into student values (1,'张三','男','上海'),(2,'李四','男','重庆'),(3,'王五','男','北京');
-- 将student表中地址address全部改为广州
update student set address='广州';
-- 将id为1的地址address改为深圳
update student set address='深圳' where id=1;

结果如下:
在这里插入图片描述

删除数据 delete

语法格式:

  • delete from 表名 [where 条件];

  • trancate table 表名;

注意事项:

  • delete 只会删除表中的内容
  • truncate 可以理解为先 drop 表,然后又重新 create 表

代码示例:

-- 创建学生表student
create table if not exists student(id int comment '学号',name varchar(10) comment '姓名',gender char(1) comment '性别',address varchar(20) comment '地址'
);
-- 往student表中添加数据
insert into student values (1,'张三','男','深圳'),(2,'李四','男','重庆'),(3,'王五','男','北京');
-- 删除表中信息
delete from student where address='深圳';

结果如下:
在这里插入图片描述

约束基本概念

约束(constraint),实际上就是表中数据的约束(限制)条件

作用:表在设计的时候加入约束的目的就是为了保证表中记录的完整性和有效性,比如用户有些列的值(手机号)不能为空,有些列的值(身份证号)不能重复

分类:

  • 主键约束 primary key PK
  • 自增长约束 auto_increment
  • 非空约束 not null
  • 唯一性约束 unique
  • 默认约束 default
  • 零填充约束 zerofill
  • 外键约束 foreign key FK

约束操作

主键约束

概念:

  • MySQL 主键约束是一个列或者多个列的组合,其值能唯一地标识表中的每一行,方便在 RDBMS 中尽快找到某一行
  • 主键约束相当于 唯一约束 + 非空约束的组合,主键约束列不允许重复,也不允许出现空值。
  • 每个表最多只允许一个主键
  • 主键约束的关键字是:primary key
  • 当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引

操作:

  • 添加单列主键
  • 添加多列联合主键
  • 删除主键

添加单列主键

创建单列主键有两种方式:

  • 在定义字段的同时指定主键
  • 定义完字段之后指定主键

方式 1:在定义字段的同时指定主键

语法格式:

create table 表名(......字段名 数据类型 primary key,......
);

代码示例:

-- 创建学生表student并将学号id设为主键
create table student(id int primary key,name varchar(10),gender char(1)
);
-- 查看表结构
desc student;

结果如下:
在这里插入图片描述

方式 2:定义完字段之后指定主键

语法格式:

create table 表名(......[constraint <约束名>] primary key [字段名]
);

代码示例:

-- 创建学生表student并将学号id设为主键
create table student(id int,name varchar(10),gender char(1),constraint pk_id primary key(id)
);
-- 查看表结构
desc student;

结果如下:
在这里插入图片描述

验证主键的作用

唯一约束

代码示例:

-- 创建学生表student并将学号id设为主键
create table student(id int,name varchar(10),gender char(1),constraint pk_id primary key(id)
);
-- 添加数据
insert into student values (1,'张三','男'),(1,'李四','男');

执行了添加数据的代码后,将会得到以下结果:

在这里插入图片描述

这段报错信息告诉我们主键不能重复,验证了约束的唯一性

非空约束

代码示例:

-- 创建学生表student并将学号id设为主键
create table student(id int,name varchar(10),gender char(1),constraint pk_id primary key(id)
);
-- 添加数据
insert into student values (1,'张三','男'),(null,'李四','男');

执行了添加数据的代码后,将会得到以下结果:

在这里插入图片描述

这段报错信息告诉我们主键不能为空值,验证了约束的非空性

添加多列主键(联合主键)

联合主键就是一个主键由表中多个字段组成的

注意事项:

  • 当主键是由多个字段组成时,不能直接在字段名后面声明主键约束
  • 一张表只能有一个主键,联合主键虽然由多个字段组成,但也是一个主键

语法格式:

create table 表名(......primary key(字段1,字段2,...,字段n)
);

代码示例:

-- 创建学生表student并将学号id,电话号码phone_num设为主键
create table student(id int,name varchar(10),phone_num int(11),gender char(1),primary key(id,phone_num)
);

结果如下:
在这里插入图片描述

注意事项:

  • 联合主键的字段值可以有相同的,但不能是构成主键的所有字段值相同
  • 联合主键的字段值每一个都不能为空值

修改表结构添加主键

主键约束不仅可以在创建表的同时创建,也可以在修改表时添加

语法格式:

create table 表名(......
);
alter table 表名 add primary key(字段列表);

代码示例:

-- 创建学生表student
create table student(id int,name varchar(10),phone_num int(11),gender char(1)
);
-- 将学号id,电话号码phone_num设为主键
alter table student add primary key(id,phone_num);

结果如下:
在这里插入图片描述

删除主键约束

一个表中不需要主键约束时,就需要从表中将其删除

语法格式:

alter table 表名 drop primary key;

代码示例:

-- 创建学生表student
create table student(id int,name varchar(10),phone_num int(11),gender char(1)
);
-- 将学号id,电话号码phone_num设为主键
alter table student add primary key(id,phone_num);
-- 将主键删除
alter table student drop primary key;

结果如下:
在这里插入图片描述

自增长约束

概念:

  • 在 MySQL 中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值,每增加一条记录,主键会自动以相同的步长进行增长

  • 通过给字段添加 auto_increment 属性来实现主键自增长

默认自增字段初始值

语法格式:

字段名 数据类型 auto_increment

代码示例:

-- 创建学生表student
create table student(id int primary key auto_increment,name varchar(10),phone_num char(11),gender char(1)
);
insert into student values(null,'张三',12345678901,'男'),(null,'李四',12345678902,'男');
insert into student(name) values ('王五');

结果如下:
在这里插入图片描述

注意事项:

  • 默认情况下,auto_increment 的初始值是 1,每新增一条记录,字段值自动加 1

  • 一个表中只能有一个字段使用 auto_increment 约束,且该字段必须有唯一索引,以避免序号重复(即为主键或主键的一部分)

  • auto_increment 约束的字段必须具备 NOT NULL 属性。

  • auto_increment 约束的字段只能是整数类型(TINYINTSMALLINTINTBIGINT 等)。

  • auto_increment 约束字段的最大值受该字段的数据类型约束,若达到上限,auto_increment 就会失效。

  • 尽量不要混合使用显示和隐式 id 值,MySQL 在批量插入时会按行数增加 auto_increment 计数器,即使显式指定的 id 看似“跳过”了自动分配的值,导致后续插入得到的 id 比预期多

代码示例:

-- 创建学生表student
create table student(id int primary key auto_increment,name varchar(10),phone_num char(11),gender char(1)
);
insert into student values(1,'张三',12345678901,'男'),(null,'李四',12345678902,'男');
insert into student(name) values ('王五');

结果如下:
在这里插入图片描述

指定自增字段初始值

如果第一条记录设置了该字段的初始值,那么新增加的记录就从这个初始值开始自增,例如:如果表中插入的第一条记录的 id 值设置为 5,那么再插入记录时,id 值就会从 5 开始往上增加

方式 1:创建表时指定

语法格式:

create table 表名(......字段名 数据类型 primary key auto_increment,......
)auto_increment=100;

代码示例:

-- 创建学生表student
create table student(id int primary key auto_increment,name varchar(10),phone_num char(11),gender char(1)
)auto_increment=100;
insert into student values(null,'张三',12345678901,'男'),(null,'李四',12345678902,'男');
insert into student(name) values ('王五');

结果如下:
在这里插入图片描述

方式 2:创建表后指定

语法格式:

create table 表名(......字段名 数据类型 primary key auto_increment,......
);
alter table 表名 auto_increment=100;

代码示例:

-- 创建学生表student
create table student(id int primary key auto_increment,name varchar(10),phone_num char(11),gender char(1)
);
alter table student auto_increment=100;
insert into student values(null,'张三',12345678901,'男'),(null,'李四',12345678902,'男');
insert into student(name) values ('王五');

结果如下:

在这里插入图片描述

删除记录后自增列的变化

  • delete 数据之后自动增长从断点开始
  • truncate 数据之后自动增长从默认起始值开始

非空约束

概念:MySQL 非空约束(not null)指字段的值不能为空,对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错

添加非空约束

方式 1:创建表时指定

语法格式:

create table 表名(......字段名 数据类型 not null,......
);

代码示例:

-- 创建学生表student
create table student(id int primary key auto_increment,name varchar(10) not null ,phone_num char(11) not null ,gender char(1)
);
alter table student auto_increment=100;
insert into student values(null,'张三',12345678901,'男'),(null,'李四',12345678902,'男');

结果如下:

在这里插入图片描述

方式 2:创建表后指定

语法格式:

create table 表名(......字段名 数据类型,......
);
alter table 表名 modify 字段名 数据类型 not null;

代码示例:

-- 创建学生表student
create table student(id int primary key auto_increment,name varchar(10),phone_num char(11),gender char(1)
);
alter table student modify name varchar(10) not null;
alter table student modify phone_num char(11) not null;
insert into student values(null,'张三',12345678901,'男'),(null,'李四',12345678902,'男');

结果如下:

在这里插入图片描述

删除非空约束

语法格式:

alter table 表名 modify 字段名 数据类型;

代码示例:

-- 创建学生表student
create table student(id int primary key auto_increment,name varchar(10) not null ,phone_num char(11) not null ,gender char(1)
);
alter table student modify name varchar(10);
alter table student modify phone_num char(11);
insert into student values(null,null,12345678901,'男'),(null,'李四',null,'男');

结果如下:

在这里插入图片描述

唯一约束

概念:唯一约束(unique)是指所有记录中字段的值不能重复出现,例如:为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况

添加唯一约束

方式 1:创建表时指定

语法格式:

create table 表名(......字段名 数据类型 unique,......
);

代码示例:

-- 创建学生表student
create table student(id int unique,name varchar(10),gender char(1)
);
insert into student values(1,'张三','男'),(null,'李四','男'),(null,'王五','男');

结果如下:

在这里插入图片描述

注意事项:在 MySQL 中 null 值与任意值都不想等包括 null 值

方式 2:创建表后指定

语法格式:

create table 表名(......字段名 数据类型,......
);
alter table 表名 add constraint 约束名 unique(字段名);

代码示例:

-- 创建学生表student
create table student(id int,name varchar(10),gender char(1)
);
alter table student add constraint id_unique unique(id);
insert into student values(1,'张三','男'),(null,'李四','男'),(null,'王五','男');

结果如下:
在这里插入图片描述

删除唯一约束

语法格式:

alter table 表名 drop index 约束名;

代码示例:

-- 创建学生表student
create table student(id int,name varchar(10),gender char(1)
);
alter table student add constraint id_unique unique(id);
alter table student drop index id_unique;
insert into student values(1,'张三','男'),(1,'李四','男'),(1,'王五','男');

结果如下:

在这里插入图片描述

默认约束

概念:默认约束(default)用来指定某列的默认值

添加默认约束

方式 1:创建表时指定

语法格式:

create table 表名(......字段名 数据类型 default 默认值,......
);

代码示例:

-- 创建学生表student
create table student(id int,name varchar(10),gender char(1),address varchar(20) default '北京'
);
insert into student(id, name, gender) values (1,'张三','男')
insert into student values(2,'李四','男',null),(3,'王五','男','上海');

结果如下:

在这里插入图片描述

方式 2:创建表后指定

语法格式:

create table 表名(......字段名 数据类型,......
);
alter table 表名 modify 字段名 数据类型 default 默认值;

代码示例:

-- 创建学生表student
create table student(id int,name varchar(10),gender char(1),address varchar(20)
);
alter table student modify address varchar(20)  default '北京';
insert into student(id, name, gender) values (1,'张三','男')
insert into student values(2,'李四','男',null),(3,'王五','男','上海');

结果如下:

在这里插入图片描述

删除默认约束

语法格式:

alter table 表名 modify 字段名 数据类型 default null;

代码示例:

-- 创建学生表student
create table student(id int,name varchar(10),gender char(1),address varchar(20)
);
alter table student modify address varchar(20)  default '北京';
alter table student modify address varchar(20)  default null;
insert into student(id, name, gender) values (1,'张三','男')
insert into student values(2,'李四','男',null),(3,'王五','男',null);

结果如下:

在这里插入图片描述

零填充约束

概念:

  • 插入数据时,当该字段的值的长度小于定义的长度时,会在该值的前面补上相应的 0。
  • zerofill默认为int(10)
  • 当使用zerofill时,默认会自动加unsigned(无符号)属性,使用unsigned属性后,数值范围是原值的 2 倍。例如,有符号TINYINT为 - 128~+127,无符号为 0~256。

添加零填充约束

语法格式:

create table 表名(字段名 数据类型 zerofill,......
);

代码示例:

-- 创建学生表student
create table student(id int zerofill,name varchar(10)
);
insert into student values (1,'张三'),(2,'李四'),(3,'王五');

结果如下:

在这里插入图片描述

删除零填充约束

语法格式:

alter table 表名 modify 字段名 数据类型;

代码示例:

-- 创建学生表student
create table student(id int zerofill,name varchar(10)
);
insert into student values (1,'张三'),(2,'李四'),(3,'王五');
alter table student modify id int;
insert into student values (4,'赵六');

结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx配置转发到另一个网站或另一台服务器的服务

需求背景 在一台服务器上安装了一个服务&#xff0c;不想使用ip:port方式&#xff0c;想使用域名打开这个服务的地址。 1. 配置转发 1.1 参数解释 listen&#xff1a;指定 Nginx 监听的端口。在上面的例子中&#xff0c;Nginx 监听 8888 端口。server_name&#xff1a;用于…

HarmonyOS三层架构实战

目录&#xff1a; 1、三层架构项目结构1.0、三层架构简介1.1、 common层&#xff08;主要放一些公共的资源等&#xff09;1.2、 features层&#xff08;主要模块定义的组件以及图片等静态资源&#xff09;1.3、 products层&#xff08;主要放主页面层和一些主要的资源&#xff…

macOS homebrew - 切换源

https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/ 环境变量中 添加&#xff1a; export HOMEBREW_BREW_GIT_REMOTE"https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git" export HOMEBREW_CORE_GIT_REMOTE"https://mirrors.tuna.tsinghua.edu.cn…

ETL中的实用功能以及数据集成方式

在企业数字化转型的进程中&#xff0c;数据集成扮演着至关重要的角色。它不仅是实现信息流动和系统协同的关键步骤&#xff0c;更是提升企业运营效率和决策能力的核心驱动力。ETL&#xff08;Extract&#xff0c;Transform&#xff0c;Load&#xff09;作为数据集成的重要工具&…

基于Springboot+Typst的PDF生成方案,适用于报告打印/标签打印/二维码打印等

基于SpringbootTypst的PDF生成方案&#xff0c;适用于报告打印/标签打印/二维码打印等。 仅提供后端实现 Typst2pdf-for-report/label/QR code github 环境 JDK11linux/windows/mac 应用场景 适用于定制化的报告模板/标签/条码/二维码等信息的pdf生成方案。通过浏览器的p…

OSG简介

OSG OpenSceneGraph (简称 OSG) 是一个开源的高性能3D图形库。 作用 它为开发者提供了一个强大的API&#xff0c;处理和渲染复杂的3D图形。 特点 OSG基于OpenGL构建&#xff0c;提供了对现代图形技术的支持&#xff0c;如着色器、纹理映射、光照模型等高级特性。 跨平台支…

简述下npm,cnpm,yarn和pnpm的区别,以及跟在后面的-g,--save, --save-dev代表着什么

文章目录 前言一、npm&#xff0c;cnpm&#xff0c;yarn和pnpm的基本介绍和特点1.npm (Node Package Manager)2. Yarn3. cnpm (China npm)4. pnpm 二、简述npm和pnpm 的存储方式和依赖数1.存储方式2.依赖树 三、两者依赖树的差异导致结果的对比四、简单说说-g&#xff0c;--sav…

三分钟掌握视频剪辑 | 在 Rust 中优雅地集成 FFmpeg

前言 在当今的短视频时代&#xff0c;高效的视频剪辑已成为内容创作者和开发者的迫切需求。无论是裁剪视频开头结尾、提取高光时刻&#xff0c;还是制作 GIF、去除广告&#xff0c;剪辑都是必不可少的一环。 然而&#xff0c;批量处理大量视频并非易事&#xff0c;常见的挑战…

Python 视频爬取教程

文章目录 前言基本原理环境准备Python安装选择Python开发环境安装必要库 示例 1&#xff1a;爬取简单直链视频示例 2&#xff1a;爬取基于 HTML5 的视频&#xff08;以某简单视频网站为例&#xff09; 前言 以下是一个较为完整的 Python 视频爬取教程&#xff0c;包含基本原理…

ollama搭建deepseek调用详细步骤

在使用 Ollama 搭建 DeepSeek 并投喂数据的过程中,你需要几个主要步骤来确保一切顺利进行。以下是详细的指南,涵盖了从准备工作到实际投喂数据的所有环节。 准备环境确保你的计算机具备足够的硬件资源: CPU: 至少8核处理器(推荐12核以上)内存: 至少32GB RAM(推荐64GB以上…

VSCode C/C++ 开发环境完整配置及常见问题(自用)

这里主要记录了一些与配置相关的内容。由于网上教程众多&#xff0c;部分解决方法并不能完全契合我遇到的问题&#xff0c;因此我选择以自己偏好的方式&#xff0c;对 VSCode 进行完整的配置&#xff0c;并记录在使用过程中遇到的问题及解决方案。后续内容也会持续更新和完善。…

如何搭建一个安全经济适用的TRS交易平台?

TRS&#xff08;总收益互换&#xff09;一种多方参与的投资方式&#xff0c;也是绝对收益互换&#xff08;total return swap&#xff09;的一种形式。 它是一种衍生合约&#xff0c;是一种金融衍生品的合约&#xff0c;是指交易双方在协议期间将参照资产的总收益转移给信用保…

SpringMVC(四)Restful软件架构风格

目录 ​编辑 API接口设计的架构风格 一 Dao层实现&#xff08;处理数据库&#xff09; 二 Sercice层实现&#xff08;处理业务逻辑&#xff09; 三 Controller层&#xff08;处理http请求&#xff09; 四 补充知识点 1 PathVariable - 路径变量 2 CrossOrigin(Origins …

Docker搭建MySQL主从服务器

一、在主机上创建MySQL配置文件——my.cnf master服务器配置文件路径&#xff1a;/data/docker/containers/mysql-cluster-master/conf.d/my.cnf slave服务器配置文件路径&#xff1a; /data/docker/containers/mysql-cluster-master/conf.d/my.cnf master服务配置文件内容 …

鸿蒙路由 HMrouter 配置及使用一

1、学习链接 HMRouter地址 https://gitee.com/hadss/hmrouter/blob/dev/HMRouterLibrary/README.md 2、工程配置 下载安装 ohpm install hadss/hmrouter 添加编译插件配置 在工程目录下的build-profile.json5中&#xff0c;配置useNormalizedOHMUrl属性为true (我这项目创…

智能家居分享

因为最近沉迷智能家居&#xff0c;所以来给大家分享一些轻松改变生活体验的小家具 1&#xff1a; 智能门锁 出门忘记带钥匙是许多人都遇到过的尴尬事&#xff0c;智能门锁的出现完美解决了这个困扰。智能门锁采用指纹识别、密码、刷卡、手机等多种开锁方式&#xff0c;大大增…

C#入门学习记录(四)C#运算符详解:掌握算术与条件运算符的必备技巧+字符串拼接

一、运算符概述 运算符是程序进行数学运算、逻辑判断的核心工具&#xff0c;C#中的运算符分为&#xff1a; 算术运算符 → 数学计算&#xff08; - * / %&#xff09; 条件运算符 → 三目判断&#xff08;?:&#xff09; 关系运算符 → 比较大小&#xff08;> < &#…

Linux中安装Git

安装Git 安装git&#xff0c;我们可以使用yum指令在线安装&#xff0c;这里&#xff0c;我们先对yum做一个简单介绍。 执行下面命令 #查看可用的git安装包 yum list git #安装git yum install -y git 查看git安装包 安装git 验证是否安装成功 安装完毕之后&#xff0c;我们…

开源免费一句话生成儿童故事视频核心思想解析

再看一个演示视频&#xff0c;学会核心思想后&#xff0c;可以打造自己的内容生成工具&#xff0c;后文有基于飞书多维表格的实现效果&#xff1a; 一句话灵感生成儿童故事视频演示 这是一款专门为内容素材创作打造的创新工具&#xff0c;可根据用户输入的主题&#xff0c;快速…

Linux上的`i2c-tools`工具集的详细介绍;并利用它操作IMX6ULL的I2C控制器进而控制芯片AP3216C读取光照值和距离值

IC-Tools 工具集介绍 i2c-tools 是 Linux 下用于 IC 设备调试 的用户空间工具集(你也可以把它看成是一个库&#xff0c;类似于之前自己用过的触摸屏库tslib库、FreeType矢量字符库)&#xff0c;它提供了一系列命令行工具&#xff0c;可以扫描、读取、写入 IC 设备&#xff0c;…