【数据库系统概论】第3章 关系数据库标准语言SQL(一)数据定义(超详细)

news2024/11/27 14:40:19

教材:

数据库系统概论(第6版)王珊,杜小勇,陈红编著

目录

一、SQL概述

1.1 SQL 的产生与发展

1.2 SQL的特点

1.3 SQL的基本概念

二、数据定义

2.1 数据库的定义

2.2 数据表的定义

2.3 模式的定义


一、SQL概述

1974年IBM为关系DBMS设计一种查询语言,先在IBM公司的关系数据库系统System R上实现,当时称为SEQUEL,后简称为结构化查询语言SQL(StructuredQuery Language)。
 

SQL 是用户操作关系数据库的通用语言。
SQL已经成为关系数据库的标准语言, 现在所有的关系数据库管理系统都支持SQL。

1.1 SQL 的产生与发展

标准

篇幅(约)/

发布日期/

标准

大致页数

发布日期/

SQL 86

1986

SQL 2003

3 600

2003

SQL 89(FIPS 127-1)

120

1989

SQL 2008

3 777

2008

SQL 92

622

1992

SQL 2011

3817

2011

SQL 99SQL 3

1700

1999

SQL2016

4035

2016

SQL 86SQL 89是单个文档。

SQL 92SQL 99扩展为一系列开放的部分。例如,SQL 92增加了SQL调用接口、SQL永久存储模块;

SQL 99扩展为框架、SQL基础部分、SQL调用接口、SQL永久存储模块、SQL宿主语言绑定、SQL外部数据的管理和SQL对象语言绑定等

SQL2016扩展到了12个部分,引入XML类型、Window函数、TRUNCATE操作、时序数据以及JSONJavaScript Object Notation)类型等

目前,没有一个关系数据库管理系统能够支持SQL标准的所有概念和特性

1.2 SQL的特点

1.功能综合且风格统一

集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。

2. 数据操纵高度非过程化

SQL只要提出“做什么”,无须了解存取路径 存取路径的选择以及SQL的操作过程由系统自动完成

层次、网状模型的数据操纵语言面向过程,必须指定存取路

3. 面向集合的操作方式

SQL采用集合操作方式

操作对象、查找结果可以是元组的集合

一次插入、删除、更新操作的对象也可以是元组的集合

层次、网状模型采用面向记录的操作方式,操作对象是一条记录

4. 以统一的语法结构提供多种使用方式

SQL独立的语言,能够独立地用于联机交互的使用方式

SQL能够嵌入到高级语言(例如CC++JavaPython)程序中,供程序员设计程序时使用

5.语言简洁且易学易用

SQL功能极强,完成核心功能只用9个动词

SQL 功能

动词

数据定义

CREATEDROPALTER

数据查询

SELECT

数据操纵

INSERTUPDATEDELETE

数据控制

GRANTREVOKE

 缺点:缺少流程控制能力

1.3 SQL的基本概念

SQL支持关系数据库三级模式

外模式是用户能够看见和 使用的数据结构——视图,部分基本表

模式——基本表

内模式——存储文件

(1)基本表

基本表是数据库中直接存储数据的表,用于保存原始数据,是数据的基本存储单元。

  • 关系数据库管理系统中一个关系就对应一个基本表
  • 本身独立存在的表   【独立存在
  • 一个或多个基本表对应一个存储文件   【物理存储数据
  • 一个表可以带若干索引   【索引查询

(2)存储文件

存储文件是数据库的物理结构,包含了数据的实际存储形式。

存储文件的逻辑结构与物理结构组成了关系数据库的内模式

物理文件结构是由数据库管理系统(DBMS)设计确定的

(3)视图

  • 从基本表或其他视图中导出的表,是一个虚表
  • 数据库中只存放视图的定义不存放视图对应的数据    【虚拟存储
  • 用户可以在视图上再定义视图

用户可以对基本表和视图进行查询和其他操作

基本表和视图都是关系

二、数据定义

SQL的数据定义功能:

课本:

操作对象

操作方式

创建

删除

修改

数据库模式

CREATE SCHEMA

DROP SCHEMA

*SQL标准无修改语句

CREATE TABLE

DROP TABLE

ALTER TABLE

视图

CREATE VIEW

DROP VIEW

索引

*CREATE INDEX

*DROP INDEX

*ALTER INDEX

  • 一个关系数据库管理系统的实例中可以建立多个数据库
  • 一个数据库中可以建立多个模式
  • 一个模式下通常包括多个表、视图和索引等数据库对象

2.1 数据库的定义

SSMS 菜单操作将具体在另一篇文章中讲解,本篇重点在SQL 语句

以创建一个名为 "EDUC" 的学籍管理系统数据库为例:

(1)SQL 语句创建数据库

CREATE DATABASE <数据库名>
[ON [PRIMARY] (路径/文件大小)]

CREATE DATABASE:这是用于创建数据库的命令。

<数据库名>:这是要创建的数据库的名称。名称不能与现有数据库的名称重复

ON可选,用于指定数据库的数据文件和日志文件的存储位置。

PRIMARY:这是默认的文件组,用于指定主数据文件的位置。在 SQL Server 中,数据文件可以分布在多个文件组中,PRIMARY 是每个数据库必有的文件组。

(路径/文件大小):用于定义主数据文件的具体位置和大小。

示例:

CREATE DATABASE MyDatabase
ON PRIMARY (
    NAME = MyDatabase_Data,
    FILENAME = 'C:\Data\MyDatabase.mdf',
    SIZE = 10MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
)
LOG ON (
    NAME = MyDatabase_Log,
    FILENAME = 'C:\Data\MyDatabase_log.ldf',
    SIZE = 5MB,
    MAXSIZE = 50MB,
    FILEGROWTH = 1MB
);

各参数解释:

NAME:数据文件的逻辑名称

FILENAME:数据文件的物理路径和文件名【存储文件的位置】

SIZE:数据文件的初始大小

MAXSIZE:指定数据文件的最大容量

FILEGROWTH:指定数据文件的增长步长

(2)修改数据库的名称

修改数据库的名称操作的基本语法格式为:

ALTER DATABASE <原数据库名>
MODIFY NAME = <新数据库名>
  • ALTER DATABASE:声明要修改数据库;是 SQL Server 用来修改数据库属性的命令

  • MODIFY NAME:表示要修改数据库的名称。MODIFY:修改现有的数据库属性,NAME:属性中的名称部分

(3)SQL 语句删除数据库

SQL 删除数据库的语法:

DROP DATABASE 数据库名;

如果想一次删除多个数据库,可以在 DROP DATABASE 后面列出多个数据库名称,数据库名称之间用逗号分隔

DROP DATABASE 数据库名1, 数据库名2;

DROP DATABASE永久删除数据库及其所有数据,无法通过 SQL Server 自行恢复数据(除非有备份)

DROP DATABASE <数据库名> [CASCADE | RESTRICT] 是一种更高级的数据库删除方式,在某些数据库管理系统中支持。然而,SQL Server 本身并不直接支持这两个选项(CASCADERESTRICT

在 SQL Server 中,如果你尝试删除一个仍有连接或活动对象的数据库,会得到一个错误。SQL Server 的默认行为等同于 RESTRICT。没有明确的 CASCADERESTRICT 关键字

1. CASCADE级联删除

CASCADE 选项在删除数据库时,会自动删除与该数据库相关的所有对象,包括表、视图、索引、触发器等。执行此操作后,所有相关的数据库对象会一并删除,不可恢复

DROP DATABASE 数据库名 CASCADE;

2. RESTRICT约束式删除)【默认】

RESTRICT 选项会在数据库非空时拒绝删除操作。只有在数据库中没有任何对象(如表、视图、索引等)时,才能删除该数据库。该选项是大多数数据库系统删除操作的默认行为

DROP DATABASE 数据库名 RESTRICT;

在 SQL Server 中,没有显式的 RESTRICT 选项,默认情况下 SQL Server 也是在非空时禁止删除

 

2.2 数据表的定义

在创建一个 SQL 数据库后,接下来可以使用 SQL 语言在数据库中创建基本表。创建表时,必须考虑列的名称、数据类型、长度、小数位数、主键、外键等约束,以保证数据的完整性和高效性

CREATE TABLE 表名 (
    列名1 数据类型 [列约束],
    列名2 数据类型 [列约束],
    ...
    [表级约束]
);
  • 列名:每个列的名称【清晰表达,尽量使用小写或驼峰命名法(firstName )】

  • 数据类型:指定每列可以存储的类型【域的概念

数据类型

含义

CHAR(n), CHARACTER(n)

长度为n的定长字符串

VARCHAR(n),

CHARACTERVARYING(n)

最大长度为n的变长字符串

CLOB

字符串大对象

BLOB

二进制大对象

INT,INTEGER

整数(4字节),取值范围是[-2147483648,2147483647]

SMALLINT

短整数(2字节),取值范围是[-32768,32767]

BIGINT

大整数(8字节),取值范围是[-2^63,2^63-1]

NUMERIC(p, d)

定点数,由p位数字(不包括符号、小数点)组成,小数点后面有d位数字

DECIMAL(p,d), DEC(p, d)

同NUMERIC类似,但数值精度不受p和d的限制

REAL

取决于机器精度的单精度浮点数

DOUBLE PRECISION

取决于机器精度的双精度浮点数

FLOAT(n)

可选精度的浮点数,精度至少为n位数字

BOOLEAN

逻辑布尔量

DATE

日期,包含年、月、日,格式为YYYY-MM-DD

TIME

时间,包含一日的时、分、秒,格式为HH:MM:SS

TIMESTAMP

时间戳类型

INTERVAL

时间间隔类型

  • 列约束:为列设置特定的规则

  • 表级约束:如主键 (PRIMARY KEY) 和外键 (FOREIGN KEY) 的定义完整性约束涉及该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级

案例 "library" 数据库中,三个数据表的关系模式如下所示,使用 SQL语言建立(定义)三个表: 图书(图书编号。图书名,出版社,作者,价格,出版时间); 售书网站(售书网站编号,名称,所在城市,成立时间) ; 售书(图书编号。售书网站编号,数量)

-- 1. 创建数据库
CREATE DATABASE library;
GO

-- 2. 使用刚创建的库
USE library;
GO

-- 3. 创建图书表 (Books)
CREATE TABLE 图书 (
    图书编号 CHAR(5) PRIMARY KEY,                     -- 图书编号,5个字符,主键
    图书名 VARCHAR(50) NOT NULL,                      -- 图书名,最多50个字符,非空
    出版社 VARCHAR(50),                               -- 出版社,最多50个字符,可空
    作者 CHAR(20),                                    -- 作者,最多20个字符,可空
    价格 REAL NOT NULL CHECK (价格 > 0 AND 价格 < 100), -- 价格,浮点数,必须在 0 和 100 之间
    出版时间 CHAR(10)                                 -- 出版时间,10个字符,可空
);
GO

-- 4. 创建售书网站表 (BookStores)
CREATE TABLE 售书网站 (
    售书网站编号 CHAR(6) PRIMARY KEY,                 -- 售书网站编号,6个字符,主键
    名称 VARCHAR(255) NOT NULL,                      -- 售书网站名称,最多255个字符,非空
    所在城市 VARCHAR(100),                          -- 所在城市,最多100个字符,可空
    成立时间 DATE                                    -- 售书网站成立时间
);
GO

-- 5. 创建售书表 (Sales)
CREATE TABLE 售书 (
    图书编号 CHAR(5),                                -- 图书编号,5个字符
    售书网站编号 CHAR(6),                            -- 售书网站编号,6个字符
    数量 INT NOT NULL,                                -- 售书数量,非空
    PRIMARY KEY (图书编号, 售书网站编号),             -- 联合主键
    FOREIGN KEY (图书编号) REFERENCES 图书(图书编号) ON DELETE CASCADE,  -- 外键,引用图书表的图书编号,级联删除
    FOREIGN KEY (售书网站编号) REFERENCES 售书网站(售书网站编号) ON DELETE CASCADE -- 外键,引用售书网站表的售书网站编号,级联删除
);
GO

在 SQL Server 中,GO 是一个批处理终止符,表示执行该批次的 SQL 语句。

USE library 命令将数据库上下文切换到 library 数据库,接下来所有的操作都在这个数据库中进行

约束:PRIMARY KEY,意味着这是图书表的主键,保证每本书的编号唯一

约束条件:CHECK (价格 > 0 AND 价格 < 100),使用 CHECK 来限制字段的值范围。

价格 REAL NOT NULL DEFAULT 50,

 CHECK 约束用于限制表中列的值范围,确保数据符合某些规则或条件。当插入或更新数据时,CHECK 约束会验证列的值是否满足指定条件,如果不满足条件,则会阻止操作

CHECK (条件表达式)


CHECK (LEN(名称) >= 3)  --确保 名称 字段的长度不能少于 3 个字符。

DEFAULT 关键字用于为表中的列指定默认值。当在插入新记录时,如果没有为该列提供值,数据库将使用指定的默认值 

列名 数据类型 DEFAULT 默认值

PRIMARY KEY (图书编号, 售书网站编号),这里定义了联合主键

外键和级联删除(ON DELETE CASCADE):FOREIGN KEY 约束用于确保引用完整性。通过 FOREIGN KEY售书 表中的 图书编号售书网站编号 都引用了其他表的主键。这意味着在添加或更新 售书 表中的数据时,必须确保 图书售书网站 中有对应的记录。ON DELETE CASCADE 的作用是,当 图书 表或 售书网站 表中的某一条记录被删除时,相关联的 售书 表中的记录也会被自动删除。这有助于保持数据的一致性,避免孤立的记录。

(2)修改数据表

使用 ALTER TABLE 语句可以对已有的数据表进行结构上的修改

常见的修改操作包括添加列、删除列、修改列的数据类型或约束

-- 1. 修改数据表,添加新列
ALTER TABLE 表名
ADD 列名 数据类型 [约束];           

-- 2. 修改数据表,删除列

ALTER TABLE 表名
DROP COLUMN 列名;

-- 3. 修改数据表,修改列的数据类型

ALTER TABLE 表名
ALTER COLUMN 列名 数据类型 [约束];

在 SQL Server 中,当您向一个已有数据的表添加一个新列时,如果该列被定义为 NOT NULL,那么数据库系统会要求您提供一个默认值;否则,它会将新列填充为 NULL

  • 新列默认为 NULL:在添加新列时,如果未定义默认值,数据库会将该新列的所有现有行的值设置为 NULL,即使新列被定义为 NOT NULL

  • 必须提供默认值:如果希望新列能成功添加且不包含 NULL,您必须指定一个默认值。否则,将会导致添加失败

 (3)删除数据表

 使用 DROP TABLE 语句可以删除整个数据表及其包含的所有数据。

删除操作是不可恢复的,因此在执行此操作时要谨慎。

DROP TABLE 表名;

2.3 模式的定义

(1)创建模式

在 SQL 中,模式(Schema)是一种用于组织和管理数据库对象(如表、视图、存储过程等)的结构。

使用 CREATE SCHEMA 语句可以创建一个新的模式。创建模式可以指定模式的名称和授权用户

CREATE SCHEMA 模式名 AUTHORIZATION 用户名;

 示例:为用户 LQ 创建一个名为 S-T 的学生课程模式

CREATE SCHEMA "S-T" AUTHORIZATION LQ;  -- 创建名为 "S-T" 的模式,授权给用户 LQ

双引号用于支持模式名称中包含特殊字符(短横线) 

AUTHORIZATION LQ:指定模式的拥有者为用户 LQ。这意味着该用户将拥有对该模式中所有对象的控制权限。

(2)模式与表
通过使用 SET search_path 语句,您可以定义数据库在查找对象时的搜索顺序。第一个匹配的模式将被使用。在设置了搜索路径后,创建表而不必指定模式名。系统将使用搜索路径中第一个可用的模式。

-- 设置搜索路径,优先使用模式 "S-T"
SET search_path TO "S-T", PUBLIC;

-- 在当前搜索路径下创建名为 Student 的基本表
CREATE TABLE Student (
    StudentID INT PRIMARY KEY,         -- 学生编号,主键
    Name VARCHAR(50) NOT NULL,        -- 学生姓名,非空
    Course VARCHAR(50)                 -- 课程名称
);

相应的实验练习:【SQL实验】数据库、表、模式的SQL语句操作-CSDN博客

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

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

相关文章

3.cpp基本数据类型

cpp基本数据类型 1.cpp基本数据类型 1.cpp基本数据类型 C基本数据类型和C语言的基本数据类型差不多 注意bool类型&#xff1a;存储真值 true 或假值 false&#xff0c;C语言编译器C99以上支持。 C语言的bool类型&#xff1a;要添加 #include <stdbool.h>头文件 #includ…

【C++ 同余 裴蜀定理 中位数贪心 并集查找】2607. 使子数组元素和相等|2071

本文涉及知识点 C贪心 数论&#xff1a;质数、最大公约数、菲蜀定理 C图论 LeetCode2607. 使子数组元素和相等 给你一个下标从 0 开始的整数数组 arr 和一个整数 k 。数组 arr 是一个循环数组。换句话说&#xff0c;数组中的最后一个元素的下一个元素是数组中的第一个元素&a…

windows系统中,在cmd窗口演练 Redis 基本操作命令

文章目录 一、Redis 介绍1.1 Redis 的应用场景1.2 Redis 的特点 二、Windows版Redis安装三、Redis Desktop Manager安装四、Redis 常用基本操作4.1 查看操作4.2 操作string类型的命令4.2.1 设置获取Key4.2.2 MSET&#xff08;Multi&#xff09;支持批量设置key、MGET支持批量获…

擎创科技声明

近日&#xff0c;我司陆续接到求职者反映&#xff0c;有自称是擎创科技招聘人员&#xff0c;冒用“上海擎创信息技术有限公司”名义&#xff0c;用“126.com”的邮箱向求职者发布招聘信息&#xff0c;要求用户下载注册APP&#xff0c;进行在线测评。 对此&#xff0c;我司郑重…

前端算法合集-2(含面试题-美团一面)

主要考察的就是数组扁平化,由浅入深吧 ①利用tostring()和split() let arr [1, 2, 3, [4, 5, 6], [7, 8, [9, 10, 11], 12], [13, 14, 15]] let newarrarr.toString().split(,) let numarrnewarr.map((item)>{itemNumber(item)return item }) console.log(numarr) ②利用…

【SpringCloud】Gateway微服务网关(gateway快速⼊⻔ 断⾔⼯⼚ 过滤器⼯⼚ 浏览器同源策略)

Gateway微服务网关 Gateway服务网关什么是Gateway网关&#xff1f;为什么需要网关&#xff1f; Gateway快速入门创建gateway服务&#xff0c;引入依赖编写配置文件yaml和路由规则重启测试 断言工厂过滤器工厂路由过滤器的种类请求头过滤器默认过滤器全局过滤器【可写自定义逻辑…

IT监控(基础篇):好的it监控系统具备什么特点?

好的IT监控系统&#xff0c;应该是什么样的呢&#xff1f; 在当今数字化时代&#xff0c;IT系统已成为企业运营的命脉。因此&#xff0c;一个高效、可靠的IT监控平台对于确保业务连续性和提高运维效率至关重要。那么&#xff0c;一个好的IT监控平台究竟应该具备哪些特点呢&…

Adobe Acrobat DC 打印PDF文件,没有打印出注释的解决方法

adobe acrobat在打印的时候&#xff0c;打印不出来注释内容&#xff08;之前一直可以&#xff0c;突然就不行&#xff09;&#xff0c;升级版本、嵌入字体等等都试过&#xff0c;也在Google找了半天和问了GPT也么找着办法。 无奈之下&#xff0c;自己通过印前检查&#xff0c;…

ARL 灯塔 | CentOS7 — ARL 灯塔搭建流程(Docker)

关注这个工具的其它相关内容&#xff1a;自动化信息收集工具 —— ARL 灯塔使用手册 - CSDN 博客 灯塔&#xff0c;全称&#xff1a;ARL 资产侦察灯塔系统&#xff0c;有着域名资产发现和整理、IP/IP 段资产整理、端口扫描和服务识别、WEB 站点指纹识别、资产分组管理和搜索等等…

Elasticsearch是做什么的?

初识elasticsearch 官方网站&#xff1a;Elasticsearch&#xff1a;官方分布式搜索和分析引擎 | Elastic Elasticsearch是做什么的&#xff1f; Elasticsearch 是一个分布式搜索和分析引擎&#xff0c;专门用于处理大规模数据的实时搜索、分析和存储。它基于 Apache Lucene …

Spring MVC 原理与源码

Spring MVC 整体代码量有 5w 行&#xff0c;通过本专栏&#xff0c;可以快速的研读核心部分的代码&#xff0c;节省你的时间。 DispatcherServlet 的流程处理如下图&#xff1a; 但是随着前后端分离&#xff0c;后端大多提供 Restful API &#xff0c;里面的 ViewResolver 和 …

监控易监测对象及指标之:Kafka中间件JMX监控指标解读

监控易作为一款功能强大的监控软件&#xff0c;旨在为企业提供全方位的IT系统监控服务。其中&#xff0c;针对Kafka中间件的JMX监控是监控易的重要功能之一。本文将详细解读监控易中Kafka的JMX监控指标&#xff0c;帮助企业更好地理解并运用这些数据进行系统性能调优和故障排查…

onlyoffice docker启用jwt并生成jwt

一、说明 本文是docker教程&#xff0c;linux/win的安装版本也类似&#xff0c;只需要修改配置文件中的secrt就可以了【Configuring JWT for ONLYOFFICE Docs - ONLYOFFICE】 二、正文开始 docker启动时候如果不想使用jwt&#xff0c;加上参数-e JWT_ENABLEDfalse就可以了&…

软件I2C的代码

I2C的函数 GPIO的配置——scl和sda都配置为开漏输出 void MyI2C_Init(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitTypeDef GPIO_InitStruture;GPIO_InitStruture.GPIO_Mode GPIO_Mode_Out_OD;GPIO_InitStruture.GPIO_PinGPIO_Pin_10 | GPIO_Pin_…

Maven 项目管理工具

目录 Maven简介 Maven快速上手 Maven详细介绍 Maven工作机制 Maven安装及配置 使用IDEA创建Maven Web工程 Maven简介 Maven是 Apache 开源组织奉献的一个开源项目&#xff0c;可以翻译为“专家”或“内行”。 Maven 的本质是一个项目管理工具&#xff0c;将项目开发和管…

Ansible自动化工具

一、Ansible概述 1.1 什么是Ansible Ansible 是一个开源的自动化工具&#xff0c;用于配置管理、应用程序部署和任务自动化。它让你可以通过编写简单的 YAML 文件&#xff08;剧本&#xff0c;Playbooks&#xff09;&#xff0c;轻松管理和配置多个服务器。Ansible 的特点是无…

爬虫逆向-js进阶(续写,搭建网站)

1.搭建简单网站1 from flask import Flask,render_template import requests import json app Flask(name)# **location**的温度是**temp**度&#xff0c;天气状况&#xff1a;**desc**app.route(/) # 绑定处理函数 def index_url():location 101010100data get_weather(lo…

Rust语言编程环境的安装

简介 Rust是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。 Rust语言的特点 系统级编程:Rust语言非常适合进行底层系统级编程,如操作系统、网络协议栈、设备驱动程序等。 内存安全:Rust使用所有权(ownership)系统来…

Scrapy | 爬取笑话网来认识继承自Spider的crawlspider爬虫类

crawlspider 1. 创建crawlspider爬虫2. 实战-爬取笑话网笑话 本篇内容旨在拓展视野和知识&#xff0c;了解crawlspider的使用即可&#xff0c;主要熟悉掌握spider类的使用 CrawlSpider 提供了一种更高级的方法来定义爬取规则&#xff0c;而无需编写大量的重复代码。它基于规则…

【功能安全】汽车功能安全个人认证证书

目录 1、证书 2、课程信息 &#x1f4d6; 推荐阅读 1、证书 汽车功能安全工程师去拿类似莱茵、SGS、南德颁发的证书&#xff0c;如下&#xff1a; 2、课程信息 一般上什么课程了&#xff0c;课程信息大概如下&#xff1a; 汽车功能安全工程师认证课 &#xff08;3天&#…