当前位置: 首页 > news >正文

【数据库系统概论】数据库完整性与触发器--复习

在数据库系统概论中,数据库完整性是指确保数据库中数据的准确性、一致性和有效性的一组规则和约束。数据库完整性主要包括实体完整性参照完整性用户定义完整性。以下是详细的复习内容:

1. 数据库完整性概述

数据库完整性是指一组规则,这些规则保证数据库中的数据是有效的、准确的,并且符合预定的要求。它通过一系列的完整性约束来控制数据的有效性和一致性。常见的完整性约束包括:

  • 实体完整性:确保每个实体在表中有唯一标识。
  • 参照完整性:确保表与表之间的引用关系有效。
  • 用户定义完整性:确保数据符合用户定义的特定规则。

2. 实体完整性

实体完整性确保每个关系表中的行(元组)可以通过某一列或一组列来唯一标识,通常使用主键来实现。(即每个关系表中必须要有一个主键,这里的主键可以是单个主键也可以是复合主键)

2.1 定义实体完整性

  • 实体完整性约束:一个关系中的每个元组必须有一个唯一标识符(主键),且主键的值不能为空(NOT NULL)。
  • 实体完整性通过主键来实现,主键中的每个属性都必须有唯一值,并且不能为空。
    ​
    --实体完整性定义的语法
    列名 类名数据类型 PRIMARY KEY,--将该列定义为主键(主码)​

    具体的定义实体完整性的实例代码:

  1. 列级完整性约束定义(即只有一个主码):

    -- 创建学生表,学号作为主键
    CREATE TABLE Students (Sno CHAR(20) PRIMARY KEY,-- Sno 主键约束,确保学号唯一且不为NULLSname CHAR(20) UNIQUE,--这里的UNIQUE是要保证学生名字不重复Sex CHAR(6),Smajor VARCHAR(40)
    );
    
  2. 表级完整性约束(即有多个候选码构成主码):

    -- 创建学生选课表,学号和课程号作为主键
    CREATE TABLE SC(Sno CHAR(8),Cno CHAR(5),Grade SMALLINT,Semester CHAR(5),Teachingclass CHAR(8),,PRIMARY KEY(Sno,Cno)  -- Sno,Cno主键约束,确保(学号,课程号)唯一且不为NULL
    );
    

2.2 实体完整性检查

  • 实体完整性检查是对主键约束的验证,确保插入或更新数据时,主键字段没有重复或空值。

2.3 实体完整性违约检查

  • 当插入的数据违反了主键约束,如主键字段为空或重复,数据库会拒绝插入操作,并返回错误信息。

SQL示例

-- 创建学生表,学号为主键
CREATE TABLE Students (StudentID INT PRIMARY KEY,  -- 主键约束StudentName VARCHAR(50),Age INT
);-- 插入数据(违反实体完整性约束,学号重复)
INSERT INTO Students (StudentID, StudentName, Age)
VALUES (1, 'Alice', 20);INSERT INTO Students (StudentID, StudentName, Age)
VALUES (1, 'Bob', 22);  -- 此操作会失败,因为StudentID=1跟上面那条插入语句里的StudenID重复了,如果这里改成VALUES (2, 'Bob', 22);的话可以成功插入

3. 参照完整性

参照完整性确保数据库表之间的外键关系有效,外键的值必须在被引用的表中存在。

3.1 定义参照完整性

  • 参照完整性约束:表中的外键列的值必须在被引用表的主键列中存在,或者外键列的值可以为NULL
    CREATE TABLE SC(Sno CHAR(8),Cno CHAR(5),Grade SMALLINT,Semester CHAR(5),Teachingclass CHAR(8),PRIMARY KEY(Sno,Cno),--定义表级完整性FOREIGN KEY(Sno) REFERENCES Student(Sno),--在表级定义参照完整性,Sno是外码,被参照表是StudentFOREIGN KEY(Cno) REFERENCES Course(Cno)--在表级定义参照完整性,Cno是外码,被参照表是Course
    );

3.2 参照完整性检查

  • 参照完整性检查的是外键字段的值是否在被引用的父表中存在,或者外键值是否为 NULL(如果外键字段允许为 NULL,则子表中可以有外键列的值为空(NULL)。这样可以确保表与表之间的引用关系是准确和一致的。

3.3 参照完整性违约检查

  • 插入:插入外键值时,必须检查外键值是否在引用表中存在。当向子表插入数据时,数据库会检查外键值是否在父表中存在。如果外键值不在父表的主键或唯一键列中,插入操作将会失败。
    -- 创建父表:Students
    CREATE TABLE Students (StudentID INT PRIMARY KEY,StudentName VARCHAR(50)
    );-- 创建子表:Enrollments,外键StudentID引用Students表中的StudentID
    CREATE TABLE Enrollments (EnrollmentID INT PRIMARY KEY,StudentID INT,CourseName VARCHAR(50),FOREIGN KEY (StudentID) REFERENCES Students(StudentID)  -- 外键约束
    );-- 向Students表插入数据
    INSERT INTO Students (StudentID, StudentName) 
    VALUES (1, 'Alice');-- 尝试向Enrollments表插入数据,插入有效的外键值
    INSERT INTO Enrollments (EnrollmentID, StudentID, CourseName)
    VALUES (1, 1, 'Math');  -- 成功,因为StudentID=1在Students表中存在-- 尝试向Enrollments表插入无效的外键值
    INSERT INTO Enrollments (EnrollmentID, StudentID, CourseName)
    VALUES (2, 2, 'Science');  -- 失败,因为StudentID=2在Students表中不存在
    
  • 删除:如果父表的某行数据被删除,且该行数据在子表中作为外键引用,数据库系统会阻止删除操作,除非使用级联删除(CASCADE DELETE)。在没有级联删除的情况下,父表中的记录不能被删除,因为它们在子表中有外键引用。使用 ON DELETE CASCADE 后,当删除父表中的记录时,相关的子表记录也会被自动删除。
    -- 尝试删除Students表中的学生数据
    DELETE FROM Students WHERE StudentID = 1;  -- 失败,因为该学生在Enrollments表中有外键引用-- 使用级联删除:删除学生时自动删除相关的注册记录
    CREATE TABLE Enrollments (EnrollmentID INT PRIMARY KEY,StudentID INT,CourseName VARCHAR(50),FOREIGN KEY (StudentID) REFERENCES Students(StudentID) ON DELETE CASCADE  -- 级联删除
    );-- 删除学生数据时,相关的注册记录也会自动删除
    DELETE FROM Students WHERE StudentID = 1;  -- 成功,相关的Enrollments记录也被删除
    
  • 更新:当更新父表中的主键值时,数据库会检查是否有子表中的外键引用该主键。如果有引用,数据库会阻止更新操作,除非使用了适当的级联更新(CASCADE UPDATE)操作。
-- 尝试更新父表中的主键
UPDATE Students SET StudentID = 2 WHERE StudentID = 1;  -- 失败,因为StudentID=1在Enrollments表中有外键引用-- 使用级联更新:更新父表主键时自动更新子表中的外键
CREATE TABLE Enrollments (EnrollmentID INT PRIMARY KEY,StudentID INT,CourseName VARCHAR(50),FOREIGN KEY (StudentID) REFERENCES Students(StudentID) ON UPDATE CASCADE  -- 级联更新
);-- 更新父表中的主键时,相关的子表记录中的外键会自动更新
UPDATE Students SET StudentID = 2 WHERE StudentID = 1;  -- 成功,Enrollments表中的外键也被更新

4. 用户定义完整性

用户定义的完整性是数据库中用户根据具体业务需求而设定的规则。这些规则是由数据库的使用者(比如开发者或者数据库管理员)根据实际需要来定义的,主要用来确保数据符合业务逻辑。

4.1 属性上的约束

属性约束是用来限制单个字段中的数据,比如限制字段的值范围或格式,确保数据符合预期。

4.1.1 范围约束(检查字段的值是否在特定范围内)

举个例子,假设我们要求员工的年龄必须大于等于18岁。我们可以在数据库中添加一个约束,确保年龄字段的值始终满足这个条件。

-- 创建员工表,确保年龄大于等于18岁
CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,EmployeeName VARCHAR(50),Age INT CHECK (Age >= 18)  -- 确保员工年龄 >= 18
);

这个约束确保插入的数据中,Age字段的值必须大于或等于18。如果你尝试插入18岁以下的员工,数据库会拒绝这个操作。 

4.1.2 格式约束(确保字段数据格式正确)

有时候,我们希望某个字段的数据符合特定的格式,比如,电子邮件必须符合标准格式。虽然 SQL 本身没有直接的正则表达式支持,但你可以用 CHECK 约束来大致确保格式正确。

-- 创建用户表,确保电子邮件格式正确
CREATE TABLE Users (UserID INT PRIMARY KEY,Email VARCHAR(100),CHECK (Email LIKE '%_@__%.__%')  -- 确保Email符合简单的邮箱格式
);

4.1.3 唯一性约束(确保字段数据唯一) 

有时候,我们希望某个字段的值在表中是唯一的,例如,确保每个用户的邮箱地址唯一。

-- 创建用户表,确保每个邮箱地址唯一
CREATE TABLE Users (UserID INT PRIMARY KEY,Email VARCHAR(100) UNIQUE  -- 确保邮箱地址唯一
);

4.2 元组上的约束

元组约束是对多列(多字段)数据的限制。通常用于确保某些字段的组合是唯一的或满足特定的条件。

4.2.1 组合唯一性约束(确保某些字段组合的值唯一)(组合唯一性约束也叫复合主键唯一性约束)

例如,假设你有一个“学生选课表”,每个学生可以选多门课程,但每个学生只能选一门课程一次。你可以使用组合主键来确保每个学生-课程的组合唯一。

-- 创建学生选课表,确保每个学生只能选修每门课程一次
CREATE TABLE StudentCourses (StudentID INT,CourseID INT,EnrollmentDate DATE,PRIMARY KEY (StudentID, CourseID),  -- 组合主键,确保每个学生每门课程只有一条记录FOREIGN KEY (StudentID) REFERENCES Students(StudentID),FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);

在这个例子中,StudentIDCourseID 组成了一个复合主键,这确保了一个学生不能重复选同一门课程。 

5. 完整性约束命名句子

完整性约束的命名句子通常包括:

  • 主键约束PRIMARY KEY,确保数据行的唯一性。
  • 外键约束FOREIGN KEY,确保表之间的引用关系。
  • 检查约束CHECK,限制数据值的范围。
  • 唯一性约束UNIQUE,确保列中没有重复的值。

6. 触发器

触发器是数据库中一种特殊的对象,它可以在指定的事件发生时自动执行某些操作。换句话说,触发器是一种自动执行的数据库操作,它与某个表或视图关联,并且根据预定义的规则在插入(INSERT)、更新(UPDATE)删除(DELETE)等数据库操作发生时自动触发执行。

6.1 定义触发器

触发器是绑定到表上的一类对象,可以在INSERTUPDATEDELETE等操作前后触发,自动执行相应的操作。

6.2 触发器的应用场景

  • 自动审计:记录表中的数据变化。
  • 数据验证:在数据修改之前,检查数据是否符合规定的规则。
  • 级联操作:在删除父表记录时,自动删除子表中的相关记录(级联删除)。
  • 自动更新:当某一列数据更新时,自动更新其他相关字段。

6.3 触发器的类型

  1. BEFORE 触发器:在数据修改(插入、更新、删除)之前执行。
  2. AFTER 触发器:在数据修改(插入、更新、删除)之后执行。

6.4 创建触发器

触发器可以在数据插入、删除或更新时执行,如日志记录、自动更新其他表等。

CREATE TRIGGER trigger_name  -- 触发器名称
[BEFORE | AFTER] operation  -- 在操作前或后触发
ON table_name  -- 触发器关联的表
[FOR EACH ROW]  -- 针对每一行数据触发
BEGIN-- 触发器中执行的 SQL 操作
END;

6.5 删除触发器

删除触发器是在数据删除时触发的操作,通常用于执行相关的清理或审计任务。

DROP TRIGGER trigger_name;

6.6 实例:创建触发器

例子 1:插入数据时记录日志

假设我们有一个Employees表,用来记录员工信息。每次向Employees表插入数据时,我们希望自动将插入的数据记录到日志表InsertLog中。

步骤

  1. 创建Employees表。
  2. 创建InsertLog表,用来记录插入操作。
  3. 创建触发器,确保每次插入员工信息时,都会记录到日志表。
    -- 创建员工表
    CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,EmployeeName VARCHAR(50),Position VARCHAR(50)
    );-- 创建插入日志表
    CREATE TABLE InsertLog (LogID INT PRIMARY KEY IDENTITY(1,1),EmployeeID INT,LogDate DATETIME,Action VARCHAR(50)
    );-- 创建触发器,每次插入员工数据时自动记录到日志表
    CREATE TRIGGER LogInsert
    ON Employees
    AFTER INSERT  -- 插入数据后触发
    AS
    BEGIN-- 获取插入的员工ID,并记录到InsertLog表中DECLARE @EmployeeID INT;SELECT @EmployeeID = EmployeeID FROM INSERTED;  -- INSERTED是一个虚拟表,包含插入的数据INSERT INTO InsertLog (EmployeeID, LogDate, Action)VALUES (@EmployeeID, GETDATE(), 'INSERT');
    END;
    

解释

  • 当你向Employees表插入数据时,触发器LogInsert会被自动执行。
  • 触发器会从INSERTED虚拟表中获取新插入的EmployeeID,然后将这些信息插入到InsertLog表中,记录日志。
插入数据时触发器自动执行:
-- 向Employees表插入数据
INSERT INTO Employees (EmployeeID, EmployeeName, Position)
VALUES (1, 'Alice', 'Manager');

插入数据后,InsertLog表中会自动生成一条记录,记录该插入操作。


例子 2:删除员工时级联删除其相关数据

假设我们有一个Orders表,记录了员工的订单信息。我们希望在删除Employees表中的员工记录时,自动删除与该员工相关的订单记录。

-- 创建订单表
CREATE TABLE Orders (OrderID INT PRIMARY KEY,EmployeeID INT,OrderDate DATETIME,FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
);-- 创建触发器,在删除员工时级联删除相关订单
CREATE TRIGGER CascadeDeleteOrders
ON Employees
AFTER DELETE  -- 在删除员工后触发
AS
BEGINDECLARE @EmployeeID INT;SELECT @EmployeeID = EmployeeID FROM DELETED;  -- DELETED是一个虚拟表,包含被删除的数据DELETE FROM Orders WHERE EmployeeID = @EmployeeID;
END;

解释

  • 这个触发器在删除Employees表中的员工记录时,会自动删除Orders表中与该员工相关的所有订单记录。
  • DELETED是一个虚拟表,包含已删除的记录。在触发器执行时,DELETED表中会包含被删除的员工信息。

相关文章:

【数据库系统概论】数据库完整性与触发器--复习

在数据库系统概论中,数据库完整性是指确保数据库中数据的准确性、一致性和有效性的一组规则和约束。数据库完整性主要包括实体完整性、参照完整性和用户定义完整性。以下是详细的复习内容: 1. 数据库完整性概述 数据库完整性是指一组规则,这…...

【机器学习:一、机器学习简介】

机器学习是当前人工智能领域的重要分支,其目标是通过算法从数据中提取模式和知识,并进行预测或决策。以下从 机器学习概述、有监督学习 和 无监督学习 三个方面进行介绍。 机器学习概述 机器学习定义 机器学习(Machine Learning&#xff0…...

网关的主要类型和它们的特点

网关,作为网络通信的关键节点,根据其应用场景和功能特点,可以分为多种类型。 1.协议网关 特点: • 协议转换:协议网关的核心功能是转换不同网络之间的通信协议。例如,它可以将IPv4协议的数据包转换为IPv6协…...

NDA:Non-Disclosure Agreement

NDA 是 Non-Disclosure Agreement 的缩写,中文通常翻译为“保密协议”或“非披露协议”。其含义是:在协议约束下,协议的签署方有义务对协议中规定的信息或内容保密,不能向协议之外的第三方披露。 通常,NDA适用于以下场…...

方正畅享全媒体新闻采编系统 imageProxy.do 任意文件读取漏洞复现(附脚本)

0x01 产品描述: 方正畅享全媒体新闻生产系统是以内容资产为核心的智能化融合媒体业务平台,融合了报、网、端、微、自媒体分发平台等全渠道内容。该平台由协调指挥调度、数据资源聚合、融合生产、全渠道发布、智能传播分析、融合考核等多个平台组成,贯穿新闻生产策、采、编、…...

OpenHarmony通过挂载镜像来修改镜像内容,RK3566鸿蒙开发板演示

在测试XTS时会遇到修改产品属性、SElinux权限、等一些内容,修改源码再编译很费时。今天为大家介绍一个便捷的方法,让OpenHarmony通过挂载镜像来修改镜像内容!触觉智能Purple Pi OH鸿蒙开发板演示。搭载了瑞芯微RK3566四核处理器,树…...

代理模式和适配器模式有什么区别

代理模式(Proxy Pattern)和适配器模式(Adapter Pattern)是两种结构型设计模式,它们看似相似,但在设计意图、使用场景以及功能上有一些显著的区别。下面是它们的主要区别: 1. 目的与意图 代理模…...

2025年度全国会计专业技术资格考试 (甘肃考区)报名公告

2025年度全国会计专业技术资格考试 (甘肃考区)报名公告 按照财政部、人力资源和社会保障部统一安排,2025年度全国会计专业技术初级、中级、高级资格考试报名即将开始,现将甘肃考区有关事项通知如下: 一、报名条件 …...

ansible-playbook 搭建JDK

文件目录结构 main.yml #首先检测有无java,没有才会安装,有了就直接跳过 - name: Create installation directoryfile: path/var/www/ statedirectory- name: Check javashell: . /etc/profile && java -versionregister: resultignore_errors…...

数据结构(ing)

学习内容 指针 指针的定义: 指针是一种变量,它的值为另一个变量的地址,即内存地址。 指针在内存中也是要占据位置的。 指针类型: 指针的值用来存储内存地址,指针的类型表示该地址所指向的数据类型并告诉编译器如何解…...

杰盛微 JSM4056 1000mA单节锂电池充电器芯片 ESOP8封装

JSM4056 1000mA单节锂电池充电器芯片 JSM4056是一款单节锂离子电池恒流/恒压线性充电器,简单的外部应用电路非常适合便携式设备应用,适合USB电源和适配器电源工作,内部采用防倒充电路,不需要外部隔离二极管。热反馈可对充电电流进…...

webpack5基础(上篇)

一、基本配置 在开始使用 webpack 之前,我们需要对 webpack 的配置有一定的认识 1、5大核心概念 1)entry (入口) 指示 webpack 从哪个文件开始打包 2)output(输出) 制视 webpack 打包完的…...

快速理解MIMO技术

引言 在无线通信领域,MIMO(Multiple-Input Multiple-Output,多输入多输出)技术是一项革命性的进步,它通过在发射端和接收端同时使用多个天线,极大地提高了通信系统的容量、可靠性和覆盖范围。本文简要阐释其…...

【RTD MCAL 篇3】 K312 MCU时钟系统配置

【RTD MCAL 篇3】 K312 MCU时钟系统配置 一,文档简介二, 时钟系统理论与配置2.1 K312 时钟系统2.1.1 PLL2.1.2 MUX_0系统2.1.3 MUX_6 时钟输出2.1.4 option B推荐方案 2.2 EB 配置2.2.1 General 配置2.2.2 McuClockSettingConfig配置2.2.2.1 McuFIRC配置…...

探索Docker Compose:轻松管理多容器应用

探索Docker Compose:轻松管理多容器应用 在现代软件开发中,容器化已经成为构建、部署和扩展应用的主流方式。而Docker Compose作为Docker生态系统的重要组成部分,可以简化多容器应用的管理。本文将深入探讨Docker Compose的核心功能及应用场…...

计算机网络 (18)使用广播信道的数据链路层

一、广播信道的基本概念 广播信道是一种允许一个发送者向多个接收者发送数据的通信信道。在计算机网络中,广播信道通常用于局域网(LAN)内部的主机之间的通信。这种通信方式的主要优点是可以节省线路,实现资源共享。 二、广播信道数…...

【vLLM 学习】欢迎来到 vLLM!

vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。 更多 vLLM 中文文档及教程可访问 →https://vllm.hyper.ai/ vLLM 是一个快速且易于使用的库,专为大型语言模型 (LLM) 的推理和部署…...

现代网络基础设施中的 TCP 握手之下

TCP 3 次握手 在最简单的形式中,TCP 三次握手很容易理解,并且有 大量在线材料都在讨论这个问题。(如果你能读懂 Chinease,你可以看看我之前的一篇文章。 然而,在实际中理解、练习和解决 TCP 问题 世界是另一回事。随…...

GRAPE——RLAIF微调VLA模型:通过偏好对齐提升机器人策略的泛化能力(含24年具身模型汇总)

前言 24年具身前沿模型大汇总 过去的这两年,工作之余,我狂写大模型与具身的文章,加之具身大火,每周都有各种朋友通过CSDN私我及我司「七月在线」寻求帮助/指导(当然,也欢迎各大开发团队与我司合作共同交付&#xff09…...

NeurIPS 2024 | 像素级LLM实现图像视频理解、生成、分割和编辑大统一(昆仑万维等)

Accepted by NeurIPS 2024 文章链接:https://arxiv.org/pdf/2412.19806 项目链接:https://vitron-llm.github.io/ Github链接:https://github.com/SkyworkAI/Vitron 亮点直击 首次提出了一种通用的视觉多模态大语言模型(MLLM&…...

中药和西药的区别

中药和西药的区别 一、定义与来源 (一)中药 中药主要是在中国传统医学理论指导下用于预防、诊断、治疗疾病或调节人体机能的药物。它的来源广泛,包括植物药、动物药、矿物药等。植物药是中药的主要组成部分,例如人参&#xff0…...

Spring Security(maven项目) 3.0.2.4版本

前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…...

【Ubuntu】安装华为的MindSpore

目录 1 安装Anaconda 2 更换国内源 3 安装MindSpore 1 安装Anaconda 2 更换国内源 具体方法如下: 打开命令行 cmd 工具,输入以下命令。 ① Conda 换源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ c…...

【模型】Qwen2-VL 服务端UI

1. 前言 最近在测试VLM模型,发现官方的网页demo,代码中视频与图片分辨率可能由于高并发设置的很小,导致达不到预期效果,于是自己研究了一下,搞了一个简单的前端部署,自己在服务器部署了下UI界面&#xff0…...

计算机网络•自顶向下方法:网络层介绍、路由器的组成

网络层介绍 网络层服务:网络层为传输层提供主机到主机的通信服务 每一台主机和路由器都运行网络层协议 发送终端:将传输层报文段封装到网络层分组中,发送给边缘路由器路由器:将分组从输入链路转发到输出链路接收终端&#xff1…...

安卓11 SysteUI添加按钮以及下拉状态栏的色温调节按钮

最近客户想要做一个台灯产品,需要实现 串口调节台灯功能 ,其中包括 亮度调节 色温调节 开关 三个功能 话不多说,贴代码 diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml old mode 100644 new …...

多个线程处理不同的数据,等线程都完成后再进行下一步操作

现在有三个任务,三个任务之间没有关联关系,但是第四个任务要等前三个完成之后才能进行,于是使用多线程完成前三个任务节省时间 示例代码: public void saveDataByOnlineTimeNew(LocalDateTime startTime, LocalDateTime endTime) {Objects.requireNonNull(startTime, "开…...

聆听音乐 1.5.9 | 畅听全网音乐,支持无损音质下载

聆听音乐手机版是面向广大音乐爱好者的移动应用程序,用户可以随时随地通过手机享受丰富的音乐资源。它提供了多种魅力功能,让用户在手机上畅享更舒适的音乐体验,每位用户都能享受精彩纷呈的收听体验。此外,软件还支持无损音质音乐…...

Rust 基础入门指南

Rust 基础入门指南 1. Rust 语言概述 Rust 的历史与设计理念 Rust 是由 Mozilla 研究院的 Graydon Hoare 于2010年开始创建的系统编程语言。其设计目标是创建一种安全、并发、实用的编程语言,特别关注内存安全和并发性。 Rust 的核心设计理念包括: …...

青少年编程与数学 02-006 前端开发框架VUE 03课题、编写APP组件

青少年编程与数学 02-006 前端开发框架VUE 03课题、编写APP组件 一、组件二、VUE中的组件三、APP组件四、应用示例1. App.vue - 根组件2. HelloWorld.vue - 子组件3. main.js - 应用入口文件4. router/index.js - 路由配置文件5. index.html - HTML入口文件6. package.json - 项…...