数据库的基本数据类型

news2024/10/3 4:29:41

基本数据类型之整型

【1】整型的分类

tinyint  smallint  mediumint  int  bigint

【2】整型的符号

符号不是用来限制位数的而是用来控制显示长度的

【3】tinyint

  • 是否带符号

    • 默认情况下是带符号, 默认带的符号是 + 号

  • 超出最大范围

    • 超出会报错

【4】unsigned(无符号)

  • 每个整数类型都有无符号的取值范围,超出指定范围就会报错

基本数据类型之浮点型

【1】浮点型的作用

  • 为了更高的精确度

【2】浮点数的分类

  • float   double   decimal

【3】浮点数的精确度标准

double 16

decimal

基本数据类型值字符类型

【1】字符的分类

  • char ---> 默认长度是1个单位

  • varchar --->必须给长度

create table a1(
    age char
);
​
create table a2(
    age varchar(255)
);

【2】char 和 varchar 的区别

  • char :定长 超出长度会报错, 不够机会用空格补 -----以前常用

  • varchar: 不定长 超出长度会报错 ----- 现在常用

【3】char_length : 统计字段长度

select char_length(字段名) from 表名;

select char_length(age) from a2;

【4】char跟varchar 的优缺点:

(1)char

  • 缺点:浪费空间

  • 优点:存储简单

    • 直接按照固定的字符存储数据即可

(2)varchar

  • 优点:节省空间

  • 缺点:存储麻烦

    • 存的时候,在真正数据的前面加报头(表示数据真正大小)

    • 取的时候,需要先读取报头,才能读取真实的数据

以前用 char 现在 varchar 使用较多

基本数据类型之时间类型

【1】时间类型的分类

  • date

    • 年月日

  • datetime

    • 年月日时分秒

  • time

    • 时分秒

  • year

【2】时间类型的创建

create table student(
    id int,
    name varchar(16),
    born_year year,
    birth date,
    study_time time,
    reg_time datetime
);

【3】插入数据

insert into student values(
         1,
    'mao',
    '2001',
    '2001-1-31',
    '11:11:11',
    '2023-6-30 11:11:11'
);

基本数据类型之枚举与集合类型

【1】枚举

(1)枚举类型

enum: 多选一: 多个选择条件只能选择其中一个

(2)集合类型

set: 多选多

【2】枚举的使用方法

create table user(

    id int,

    name char(16),

    gender enum('male','female','others')
);

插入数据
insert into user values(1,'mao','male')

insert into user values(1,'mao','male'),(2,'jing','female'),(3,'yi','others')

只能插入我 定义的 gender enum('male','female','others')

【2】集合类型

create table teacher(

    id int,

    name varchar(16),

    gender enum('male','female','others'),

    hobby set('read books','listen music','play games')

);
插入数据
insert into teacher values('1','bai,'male','read books');

insert into teacher values('2','zhi,'male','listen music');

约束条件

【一】什么是约束条件

  • 约束条件:限制表中的数据,保证添加到数据表中的数据准确和可靠性!凡是不符合约束的数据,插入时就会失败!

  • 约束条件在创建表时可以使用,也可以修改表的时候添加约束条件

【二】约束条件概览

  • 主键约束(primary key)

  • 外键约束(foreign key)

  • 唯一约束(unique)

  • 非空约束(not null / null)

  • 零值填充(zerofill)

  • 无符号(unsigned)

  • 组合约束(not null + unique)

【1】非空约束(not null)

( 1 ) 作用

非空约束要求某个字段的值不能为NULL,即不能为空。

( 2 ) 案例
创建 user 表(id ,name, email), name不为空

varchar(字符长度)

create table t_user(
  id int(10) ,
  name varchar(32) not null,
  email varchar(128)
);

image-20240124152715542

【2】唯一约束(unique)

( 1 ) 作用

唯一约束确保了列中的值是唯一的,但可以为空。与主键约束不同,唯一约束允许空值。

( 2 ) 案例
alter table b1 modify email varchar(255) unique;

image-20240124153345766

创建表时指定唯一约束

create table table_name (
    id int,
    column1 data_type unique,
    ...
);

修改表结构时指定唯一约束

alter table table_name

add unique (column1);

【3】zerofill

填充字段长度的,当字段值不够字段长度的时候会使用0填充至指定长度。

案例:创建表时指定零值填充
create table table_name (
    id int,
    column1 int zerofill,
    ...
);

修改表结构时指定零值填充:

alter table table_name

modify column1 int zerofill;

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

【4】组合使用

( 1 ) 作用
  • 组合约束是指多个约束的组合使用。使用表级约束给多个字段联合添加约束,unique (name,email) 名字和邮箱这两个字段不能同时重复,但是名字和邮箱字段可以单独重复。

  • 可以给表级约束起名字,这样可以便于操作这个操作(删除、修改等)

( 2 ) 案例 not null 和 unique 同时使用(列级约束)
  • 被 not null 和 unique 约束的字段,该字段即不能为 NULL 也不能重复;

创建表
create table b2(

    id int(10),

    name varchar(98) not null unique

);

image-20240124154223621

插入数据
insert into b2(id) values(1);

# ERROR 1364 (HY000): Field 'name' doesn't have a default value   由于name字段不能为空,所以会报错

insert into b2(id,name) values(2,'mao');

​
insert  into b2(id,name) values(3,'mao');

# ERROR 1062 (23000): Duplicate entry 'mao' for key 'b2.name'  由于name字段唯一,所以重复数据会报错

image-20240124154650128

【5】查看当前表的约束条件

  • 给约束条件添加名字

查看数据库
show databases;  

image-20240124155245861

切换数据库
use information_schema;

image-20240124155430919

show tables;

image-20240124155606936

image-20240124155649151

table_constraints 该表专门存储约束信息
desc table_constraints;

image-20240124155734352

查看某张表存在哪些约束条件?
select constraint_name from table_constraints where table_name='表名';

select constraint_name from table_constraints where table_name='b2';

image-20240124155911041

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

【6】主键约束(primary key + auto_increment)

( 1 ) 主键约束、主键字段、主键值三者之间关系
  • 表中某个字段添加主键约束之后,该字段被称为主键字段

  • 主键字段中出现的每一个数据都被称为主键值;

主键是一种唯一标识符,用于在表中标识每一行数据。主键约束确保了主键列中的值是唯一的,且不能为空。

( 2 ) 案例
  • 单一约束:加载建表字段的约束条件里

create table b3(

    id int(4) primary key,

    username char(4),

    password char(4)
);

image-20240124164300197

  • 复合约束:可以给多个字段同时加主键约束

create table b4(

    id int(4),

    username char(42),

    password char(42),

    primary key(id,username)

);

image-20240124164408354

  • 先创建一个b5

create table b5(

    id int(10) primary key, 

    name varchar(98) 
);  
​
# ERROR 1050 (42S01): Table 'b5' already exists

# 已经存在名为b5的表。在MySQL中,每个表的名称必须是唯一的,所以无法创建一个已经存在的表。

image-20240124165855539

  • 查看现有表的创建语句,以获得主键的名称。

show create table b5;

image-20240124170006489

  • 然后,使用ALTER TABLE语句删除现有的主键约束,并使用新的名称创建一个新的主键约束。例如,假设主键约束的名称为id_primary_key,你想将其重命名为new_primary_key

alter table b5

    drop primary key,

    add constraint null primary key(id);

image-20240124170434867

  • 给列重命名

如果你想给已经存在的表中的列重命名,可以使用alter table语句。以下是将b5表中的id列重命名为pass的示例:

alter table b5 change column id pass int(4);

image-20240124170747082

  • 修改主键约束的名称

alter table b5 drop primary key, add constraint id_primary_key primary key(pass);

# primary key(pass)   这个就是键的值   你要确定id里面有没有pass这个值。

image-20240124171318073

【7】主键根据性质分类

  • 自然主键:主键值若是一个自然数,并且这个自然数与业务没有任何关系,这种主键称为自然主键;

  • 业务主键:主键值若和当前表中的业务紧密相关,那么这种主键值被业务主键;如果业务发生改变时,业务主键往往会受到影响,所以业务主键使用较少,大多情况使用自然主键。

【8】自动生成主键 auto_increment

创建一个新的表

create table b6 (
    id int auto_increment primary key,
    name varchar(50),
    age int
);

image-20240124171847064

插入数据时,在需要自动生成主键的列上插入NULL值。MySQL会自动为该列生成唯一的主键值。

insert into b6(name, age) values ('mao', 25),('jing',18);

"b6" 的数据库表中检索所有的数据行和列。

select * from b6;

image-20240124172539617

  • AUTO_INCREMENT 自动递增表示自动递增。这意味着每次向数据表插入新记录时,该字段的值会自动递增生成,而不需要手动指定具体的值。

  • 自增主键的特点就是

    • 在插入数据的时候不指定自增主键的值,就会默认向上增加

    • 再删除该数据后,会发现原来的自增还在,新数据在旧数据的id基础上自增

  • 重置表信息

truncate b6;
# 会将原来的表里面的所有数据都清空,包括你的自增逐渐ID重置为1

image-20240124172907712

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

【9】外键约束FK (foreign key)

外键约束用于定义表之间的关系,在一个表中创建一个外键指向另一个表的主键。
它可以保证数据之间的引用完整性,例如在两个表之间建立关联关系、实现级联删除等。

三个概念

  • 外键约束,外键字段,外键值

  • 外键约束:添加在建表语句字段类型后面的约束条件 foreign key

  • 外键字段:某个·字段添加外键约束之后,该字段为外键字段。

  • 外键值:外键字段中的每一个数据都是外键值。

外键类型

  • 外键字段

    • 逻辑性外键:理论上存在外键关系,实际上没有建立外键联系

    • 物理性外键:理论上存在外键关系,并且字段具有外键约束

【10】外键语法

  • 先要创建表

  • 先有了需要被建立关系的表才能让建立关系的表和他建立关系

create table 表名1 (
    -- 外键自增字段
    id int(4) primary key auto_increment,
    字段名1 字段类型1 约束条件1 comment 注释1,
    字段名2 字段类型2 约束条件2 comment 注释2
);
create table 表名2 (
    id int(4) primary key auto_increment,
    字段名1 字段类型1 约束条件1 comment 注释1,
    字段名2 字段类型2 约束条件2 comment 注释2,
foreign key(在表名2中现实的字段名) references 表名1(表名1中需要建立外键关系的字段名)
    
);
comment 就是在后面添加注释用的参数
​
references  这个是必备参数。如果你不使用 REFERENCES 关键字,就无法创建外键约束,因为它是必需的参数之一。

【11】一对多关系的建表思路

  • 先创建两个表,一个为主表(one)和一个为从表(many)

  • 在“从表”中 创建一个外键列,该外键列引用了“主表”的主键列。

  • 将外键约束添加到“从表”的外键列上,以确定引用的完整性和一致性。

主表:

create table department (
    id int(4) primary key auto_increment comment '部门表的ID',
    department_name varchar(56) comment '部门名称',
    department_desc text comment '部门介绍'
);                     
从表:

create table employees (
  id int(4) primary key auto_increment comment '员工ID',
  name varchar(50) comment '员工名字',
  age int(4) comment '员工年龄',
  department_id int(4) comment '外键关联部门ID',
  foreign key (department_id) references department(id)
);
如果你不使用 references 关键字,就无法创建外键约束,因为它是必需的参数之一。

drop table employees;
drop table department;

image-20240125154457926

image-20240125154515987

  • 创建顺序

    • 先创建被关联的表

    • 再创建需要添加外键字段的表

  • 删除顺序

    • 先删除添加外键字段的表

    • 再删除被关联的表

【12】外键联系的分类

  • 一张表和另一张表建立联系

    • 一对一

    • 一对多

    • 多对多

    • 没关系

【1】一对多关系
  • 以员工表和部门表来说

    • 员工可不可以只对应一个部门?

      • 默认是可以的

    • 部门是不是可以有多个员工?

      • 部门可以有多个员工

  • 总结

    • 部门是一

    • 员工是多

  • 一对多关系将外键建立在哪一方?

    • 将外键建在多的这一方

上面建立部门与员工的表就是一对多的关系

# 员工表
id name age
​
# 部门表
id department_name department_desc


create table department (
    id int(4) primary key auto_increment comment '部门表的ID',
    department_name varchar(56) comment '部门名称',
    department_desc text comment '部门介绍'
);  
​
create table employees (
  id int(4) primary key auto_increment comment '员工ID',
  name varchar(50) comment '员工名字',
  age int(4) comment '员工年龄',
  department_id int(4) comment '外键关联部门ID',
  foreign key (department_id) references department(id)
);

【2】多对多关系
  • 以学生表和课程表来说

    • 一个学生可不可以选择多门课程

      • 默认是可以的

    • 一门课程是不是可以被多名学生选择?

      • 一门课程可以被多名课程选择

  • 总结

    • 学生是多

    • 课程是多

  • 学生跟课程之间的关系就是多对多

-- 建立在第三张表中

第一种:

create table student(
    student_id int primary key auto_increment,
    student_name varchar(23),
    student_grade varcahr(8),
    course_id int,
    foreign key(course_id) references course(id)
);
create table course(
    course_id int primary key auto_increment,
    course_name varchar(23),
    course_grade varcahr(8),
    student_id int,
    foreign key(student_id) references student(id)
);
    # 这个示例中,你试图在学生表和课程表中都添加了一个外键,以建立多对多关系。这样的设计是不正确的,因为它会导致循环依赖和无法创建外键约束。

第二种 针对多对多关系 需要单独开设第三张表专门存储关系

create table student1(
    id int primary key auto_increment,
    student_name varchar(23),
    student_grade varchar(56)
);
​
create table course(
    course_id int primary key auto_increment,
    course_name varchar(23),
    course_grade enum('go','python','java')
    );
​
​
​
create table course_student(
    id int primary key auto_increment,
    student_id int,
    foreign key(student_id) references student1(id),
    course_id int,
    foreign key(course_id) references course(course_id)
    
);

image-20240125165530565

【3】一对一关系

原则是那张使用频率搞,外键字段就在哪一方。

  • 一个是员工表(employee):包含员工的基本信息,如员工编号、姓名等

  • 另一个是工资表(salary):包含员工的薪资信息,如基本工资、津贴等。

    其中,每个员工只有一条薪资记录,一个薪资记录也只对应一个员工。

create table employee (

  employee_id int primary key,

  name varchar(50),

  department varchar(50),

  position varchar(50)

);
​
​
create table salary (

  id int primary key,

  employee_id int unique,

  basic_salary decimal(10, 2),

  allowance decimal(10, 2),

  foreign key (employee_id) references employee(employee_id)

);
​
​
insert into employee (employee_id, name, department, position) values (1, 'alice', 

'sales', 'manager');

insert into employee (employee_id, name, department, position) values (2, 'bob', 

'marketing', 'analyst');
​
insert into salary (id, employee_id, basic_salary, allowance) values (1, 1, 5000.00, 

1000.00);

insert into salary (id, employee_id, basic_salary, allowance) values (2, 2, 4000.00, 

800.00);

image-20240125173024439

image-20240125173046170

image-20240125173100204

数据分类

  • 存储和使用频率高的数据称之为热数据

  • 存储和使用频率低的数据称之为冷数据

【13】级联更新和级联删除

当两个或者多个表之间存在关联关系,且启用了级联更新或者级联删除规则时,对主表中的数据进行更新或者删除操作时,相关联的从表中的数据也会相应进行更新或者删除。

具体来说:

  • 级联更新(on update cascade):当主表中的某一行数据的关联字段(外键字段)发生了更新时,所有相关联的从表中的对应的关联字段也会进行相应的更新。这样可以保证从表中的数据与主表的数据保持一致。

  • 级联删除(on delete cascade):当主表中的某一行数据被删除时,所有相关联的从表中的对应行也会被自动删除。这样可以确保主表和从表之间的数据的完整性,避免出现孤立的数据。

需要注意的是,启用级联更新或级联删除规则需要谨慎操作,因为它们可能会导致连锁反应,对数据库的性能产生影响。

insert into department(department_name,department_desc) values('cook','厨房');

insert into 

department(department_name,department_desc) values('media','传媒部门');

image-20240125190038801

插入employees表中的数据

insert into employees(name,age) values('moajing','21');

insert into employees(name,age) values('baizhi','21');

image-20240125190435623

你可以这样添加级联更新和级联删除 (这种方法是在表没有创建的情况下)

# 创建被约束的表

create table department(

    id int(4) primary key auto_increment comment "部门表id",

    department_name varchar(32) comment "部门名称",

    department_desc text comment "部门介绍"
);
​
# 创建外键约束的表,前提是被建立连接的表先创建

create table employees(

    id int(4) primary key auto_increment  comment "员工id",

    name varchar(32) comment "员工名字",

    age int(4) comment "员工年龄",

    department_id int(4) comment "外键关联部门id",

    foreign key(department_id) references department(id)

    on update cascade

    on delete cascade
);

如果你已经创建表了

alter table employees


# 添加外键约束的语句,并给外键约束命名为"fk_department":

  add constraint fk_department

  foreign key (department_id)

  references department(id)

  on update cascade

  on delete cascade;

查看表的结构

desc employees;

image-20240125191934054

查看表中的所有数据

select * from employees;


select * from department;

image-20240125192123670

查看特定部门的信息

select * from department where id = 1;

image-20240125191755975

######

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

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

相关文章

【C语言】文件操作篇-----程序文件和数据文件,文件的打开和关闭,二进制文件和文本文件,fopen,fclose【图文详解】

欢迎来CILMY23的博客喔,本篇为【C语言】文件操作篇-----程序文件和数据文件,文件的打开和关闭,二进制文件和文本文件【图文详解】,感谢观看,支持的可以给个一键三连,点赞关注收藏。 前言 在了解完动态内存管…

【PHP安全】PHP伪协议

PHP伪协议: file:// #访问本地文件系统http:// #访问HTTPs网址ftp:// #访问ftp URLphp:// #访问输入输出流zlib:// #压缩流data:// #数据(RFC 2397)ssh2:// #security shell2expect:// #处理交互式的流glob:// #查找匹配的文件路径phar:// #P…

【神经网络与深度学习】深度神经网络(DNN)

概述 深度神经网络(Deep Neural Networks,DNN)是一种由多个隐藏层组成的神经网络模型。每个隐藏层由多个神经元组成,这些神经元通过权重和激活函数进行信息传递和计算。 深度神经网络通过多层的非线性变换,可以学习到…

狂雨CMS-采集规则(novelfull.com)

1. 填写采集规则的基本信息 首先点击采集管理中的添加按钮来新建规则: 然后进入到信息页面填写,包括: 规则名称:一般以要采集的源站名命名。 网站编码:默认自动检测即可。 类型:根据网站类型来选择&#x…

遗传算法(GA)求解基于栅格地图的机器人最优路径规划,可以自行修改地图(提供MATLAB代码)

通过栅格法建立栅格地图作为机器人路径规划的工作环境,采用遗传算法作为机器人路径搜索的规则.将所有机器人放置于初始位置.经过NC次无碰撞迭代运动找到最优路径.到达目标位置.为防止机器人在路径搜索过程中没有达到最大迭代次数时路径大小已不发生变化而陷入局部最优。 一、部…

个人博客系列-后端项目-RBAC角色管理(6)

修改上一篇文章创建的用户表 ## 用户表 from django.contrib.auth.hashers import make_password, check_password from django.contrib.auth.models import AbstractBaseUserclass User(AbstractBaseUser):username models.CharField(max_length255, uniqueTrue, verbose_na…

day-18 猜数字游戏

1.由于两个数字位数相同,所以可以遍历字符串吧,找出公牛个数 2.在通过两个数组分别统计两个数字0-9的个数 3.Math.min(arr1[i],arr2[i])即为对应数字的奶牛个数 code class Solution {public String getHint(String secret, String guess) {int arr1[]n…

C++进阶:详细讲解继承

现在也是结束了初阶部分的内容,今天开始就进入进阶部分了。一刻也没有为初阶的结束而哀悼,立刻赶来“战场”的是进阶部分里的继承 文章目录 1.继承的概念和定义1.1继承的概念1.2继承的定义1.2.1继承的格式1.2.2再讲访问限定符(详讲protected)1.2.3**继承…

Android14之解决报错:No module named selinux(一百九十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

HTML静态网页成品作业(HTML+CSS)——花主题介绍网页设计制作(1个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有1个页面。 二、作品演示 三、代…

数据科学中的Python:NumPy和Pandas入门指南【第121篇—NumPy和Pandas】

数据科学中的Python:NumPy和Pandas入门指南 数据科学是当今数字时代中的一个重要领域,而Python是数据科学家们最喜爱的编程语言之一。在这篇博客中,我们将介绍Python中两个强大的库——NumPy和Pandas,它们在数据处理和分析中发挥…

mysql | 查询数据的过程|优化-->索引 |存储引擎

查询的过程 首先确认mysql 服务器是否启动 systemctl mysqld status 登录连接 mysql -h i p − u ip -u ip−uuser -p (-h 指定服务器ip -u 指定用户名 -p 指定密码) mysql 数据包 经过抓包分析(mysql包其实就是基于tcp协议 3306端口) 传输采用mysql 协议&#xff0…

【探索C++容器:set和map的使用】

[本节目标] 1. 关联式容器 2. 键值对 3. 树形结构的关联式容器 1. 关联式容器 在初阶阶段,我们已经接触过STL中的部分容器,比如:vector、list、deque、forward_list(C11)等,这些容器统称为序列式容器,因为其底层为…

【Tauri】(4):整合Tauri和actix-web做本地大模型应用开发,可以实现session 登陆接口,完成页面展示,进入聊天界面

1,视频地址 https://www.bilibili.com/video/BV1GJ4m1Y7Aj/ 【Tauri】(4):整合Tauri和actix-web做本地大模型应用开发,可以实现session 登陆接口,完成页面展示,进入聊天界面 使用国内代理进行加…

农场管理小程序|基于微信小程序的农场管理系统设计与实现(源码+数据库+文档)

农场管理小程序目录 目录 基于微信小程序的农场管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2、农场信息管理 3、公告信息管理 4、论坛信息管理 四、数据库设计 五、核心代码 七、最新计算机毕设选题推荐 八、源码获取&#x…

族群争霸休闲养成小游戏

​游戏概述: 在一个由自然力量支配的幻想世界中,狼族与羊族的战争永无止境。 人族在两者之间寻求和平,建立起坚固的城墙,同时捕捉狼与羊来增强自身实力。 神族则在幕后观察,偶尔以神技介入战场,影响战局…

如何通过隐藏服务器真实IP来防御DDOS攻击

我们知道,服务器对外提供服务,基本上都是放置在公网上的。所以说服务器放置在公网上会面临很多攻击,如果不做好必要的防护措施,服务器被人攻击只是时间上的问题。 而我们面临的众多攻击中,DDoS攻击是最常见同时也是影响…

CSS顶部与JS后写:网页渲染的奥秘

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【linux】01 :虚拟机,Linux系统,远程连接Linux系统

导入:常见操作系统有哪些? PC端:Windows,Linux,MacOS 移动端:Android、IOS、鸿蒙系统 一、Linux 系统的组成 由Linux 系统内核和系统级应用程序两部分组成。 内核提供系统最核心的功能,如:调度 CPU 、调度…

Android Studio在导入项目后编译出现java版本错误解决方法

打开新项目时出现一下错误: Unsupported Java,Your build is currently configured to use Java 17.0.9 and Gradle 5.6.4. 这说明使用的java版本过高,而 gradle5.6.4对应的是java8,最新安装的编译器java版本是17 解决方法是为项…