【MySQL-3】表的约束

目录

1. 整体学习的思维导图

2. 非空约束

3. default约束

4. No Null和default约束

5. 列描述 comment

6. Zerofill

 7. 主键 primary key

复合主键 

8. 自增长 auto_increment

9. 唯一键

10. 外键

11. 实现综合案例


1. 整体学习的思维导图

 

2. 非空约束

正如该标题一样,这个约束作用于数据是否能为空值。

举例我们有一个Student表,表中含有:

  • 学生姓名name

  • 学生年龄age

  • 学生性别gender

mysql> create table if not exists Student( 
-> name varchar(10), 
-> age tinyint unsigned, 
-> gender char(1) );
Query OK, 0 rows affected (0.01 sec)mysql> desc Student;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| name   | varchar(10)         | YES  |     | NULL    |       |
| age    | tinyint(3) unsigned | YES  |     | NULL    |       |
| gender | char(1)             | YES  |     | NULL    |       |
+--------+---------------------+------+-----+---------+-------+mysql> show create table Student\G;
*************************** 1. row ***************************Table: Student
Create Table: CREATE TABLE `Student` (`name` varchar(10) COLLATE utf8_bin DEFAULT NULL,`age` tinyint(3) unsigned DEFAULT NULL,`gender` char(1) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

我们先进行测试插入:

  • 小明 18 男

  • Null 19 女

mysql> insert into Student(name, age, gender) values('小明', 18, '男');
Query OK, 1 row affected (0.00 sec)mysql> insert into Student(name, age, gender) values(null, 19, '女');
Query OK, 1 row affected (0.00 sec)mysql> select * from Student;
+--------+------+--------+
| name   | age  | gender |
+--------+------+--------+
| 小明   |   18 | 男     |
| NULL   |   19 | 女     |
+--------+------+--------+

我们可以看到,该表格在Null项是允许插入空的,这意味这我们可以不用填入姓名,但是为了表的统一性和规范性,我们要求某些项必须填入信息,这时候就需要使用非空约束了! 

mysql> alter table Student modify name varchar(10) not null;
Query OK, 0 rows affected (0.01 sec)mysql> desc Student;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| name   | varchar(10)         | NO   |     | NULL    |       |
| age    | tinyint(3) unsigned | YES  |     | NULL    |       |
| gender | char(1)             | YES  |     | NULL    |       |
+--------+---------------------+------+-----+---------+-------+

我们再次测试插入:

  • 小明 18 男

  • Null 19 女

mysql> insert into Student(name, age, gender) values('小明', 18, '男');
Query OK, 1 row affected (0.00 sec)mysql> insert into Student(name, age, gender) values(null, 19, '女');
ERROR 1048 (23000): Column 'name' cannot be nullmysql> select * from Student;
+--------+------+--------+
| name   | age  | gender |
+--------+------+--------+
| 小明   |   18 | 男     |
+--------+------+--------+

由此可见非空约束的作用是让表中某一个字段类型为必填项! 

3. default约束

  default约束是当我们没填任何信息时,表中的字段类型会根据之前设定好的default值进行使用! 

mysql> create table tb10( name varchar(10) default '张三', age tinyint default 18 );
Query OK, 0 rows affected (0.01 sec)mysql> desc tb10;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name  | varchar(10) | YES  |     | 张三    |       |
| age   | tinyint(4)  | YES  |     | 18      |       |
+-------+-------------+------+-----+---------+-------+

插入空值后,表中的数据会根据是否有default值进行填写。 

mysql> insert into tb10 values();
Query OK, 1 row affected (0.00 sec)mysql> insert into tb10 values();
Query OK, 1 row affected (0.00 sec)
mysql> select * from tb10;
+--------+------+
| name   | age  |
+--------+------+
| 张三   |   18 |
| 张三   |   18 |
+--------+------+

4. No Null和default约束

那么我们给一个字段类型同时加上No NULL和default会发生怎样的情况呢?

  • 非空约束要求我们必须填入数据,default约束可以在我们没填入的字段数据使用默认值

  • 非空+default可以使我们在不选择填入该字段类型时使用默认数据!

mysql> create table tb11(-> name varchar(10) not null default '张三',-> age tinyint unsigned);
Query OK, 0 rows affected (0.01 sec)mysql> desc tb11;
+-------+---------------------+------+-----+---------+-------+
| Field | Type                | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| name  | varchar(10)         | NO   |     | 张三    |       |
| age   | tinyint(3) unsigned | YES  |     | NULL    |       |
+-------+---------------------+------+-----+---------+-------+
mysql> insert into tb11(name, age) values(null, 18);
ERROR 1048 (23000): Column 'name' cannot be null
mysql> insert into tb11(age) values(18);
Query OK, 1 row affected (0.00 sec)mysql> select * from tb11;
+--------+------+
| name   | age  |
+--------+------+
| 张三   |   18 |
+--------+------+

5. 列描述 comment

列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进行了解。 

mysql> create table student_from(-> name varchar(10) not null comment '学生的姓名',-> age tinyint unsigned comment '学生的年龄',-> id varchar(25) not null default '2023090640XXX' comment '学生的学号'-> );mysql> show create table student_from\G;
*************************** 1. row ***************************Table: student_from
Create Table: CREATE TABLE `student_from` (`name` varchar(10) COLLATE utf8_bin NOT NULL COMMENT '学生的姓名',`age` tinyint(3) unsigned DEFAULT NULL COMMENT '学生的年龄',`id` varchar(25) COLLATE utf8_bin NOT NULL DEFAULT '2023090640XXX' COMMENT '学生的学号'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)

6. Zerofill

 我们之前了解到跟在一个类型后面的数字都会表达一些特殊的含义,那么跟着int(num)的num真正的含义到底是什么呢,这就需要借助zerofill来观察了。

我们创建一个表,两个字段类型一个添加zerofill,一个不添加。

mysql> create table tb_int1(-> num1 int,-> num2 int zerofill-> );
Query OK, 0 rows affected (0.01 sec)mysql> desc tb_int1;
+-------+---------------------------+------+-----+---------+-------+
| Field | Type                      | Null | Key | Default | Extra |
+-------+---------------------------+------+-----+---------+-------+
| num1  | int(11)                   | YES  |     | NULL    |       |
| num2  | int(10) unsigned zerofill | YES  |     | NULL    |       |
+-------+---------------------------+------+-----+---------+-------+

我们任意插入以下数据:

  • 10 10

  • 15 15

mysql> insert into tb_int1 values(10, 10);
Query OK, 1 row affected (0.01 sec)mysql> insert into tb_int1 values(15, 15);
Query OK, 1 row affected (0.00 sec)mysql> select * from tb_int1;
+------+------------+
| num1 | num2       |
+------+------------+
|   10 | 0000000010 |
|   15 | 0000000015 |
+------+------------+

这次可以看到a的值由原来的10变成0000000010,这就是zerofill属性的作用,如果宽度小于设定的宽度(这里设置的是10),自动填充0。要注意的是,这只是最后显示的结果,在MySQL中实际存储的还是1。为什么是这样呢?我们可以用hex函数来证明。 

mysql> select num1, hex(num2) from tb_int1;
+------+-----------+
| num1 | hex(num2) |
+------+-----------+
|   10 | A         |
|   15 | F         |
+------+-----------+

可以看出数据库内部存储的还是1,00001只是设置了zerofill属性后的一种格式化输出而已。 

 7. 主键 primary key

主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型。 

mysql> create table tb12(-> id int unsigned primary key comment '学生的id',-> name varchar(10) default '未知' comment '学生的姓名'-> );
Query OK, 0 rows affected (0.01 sec)mysql> desc tb12;
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id    | int(10) unsigned | NO   | PRI | NULL    |       |
| name  | varchar(10)      | YES  |     | 未知    |       |
+-------+------------------+------+-----+---------+-------+
mysql> insert into tb12(id, name) values(1, '欧阳');
Query OK, 1 row affected (0.00 sec)mysql> insert into tb12(id, name) values(1, '牛马');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

复合主键 

一个表中虽然只能有一个主键,但是一个主键却可以约束多个字段类型!

  • 追加主键

alter table 表名 add primary key(字段列表)  
  • 删除主键

alter table 表名 drop primary key;  
mysql> create table tb13(-> num1 int(1) primary key,-> num2 int(1)-> );
Query OK, 0 rows affected (0.01 sec)mysql> insert into tb13(num1, num2) values(1, 2);
Query OK, 1 row affected (0.00 sec)
mysql> insert into tb13(num1, num2) values(2, 2);
Query OK, 1 row affected (0.00 sec)mysql> alter table tb13 drop primary key;
Query OK, 2 rows affected (0.03 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> alter table tb13 add primary key (num1, num2);
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc tb13;
+-------+--------+------+-----+---------+-------+
| Field | Type   | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+-------+
| num1  | int(1) | NO   | PRI | NULL    |       |
| num2  | int(1) | NO   | PRI | NULL    |       |
+-------+--------+------+-----+---------+-------+

8. 自增长 auto_increment

我们平时注册qq时,输入完手机号和验证码,qq后端注册成功会给我们返回一个qq号,这个qq号就是自增长的产物,比如马总的qq10001,我的qq2331701342,根据注册用户的数量和注册时间分配qq号。

自增长的特点:

  • 任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)

  • 自增长字段必须是整数

  • 一张表最多只能有一个自增长

mysql> create table tb14( 
-> id int unsigned primary key auto_increment, 
-> name varchar(20) not null );mysql> desc tb14;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20)      | NO   |     | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
mysql> insert into tb14(name) values('欧阳');
mysql> insert into tb14(name) values('牛马');
mysql> insert into tb14(name) values('张明东');
mysql> insert into tb14(name) values('鬼哥');mysql> select * from tb14;
+----+-----------+
| id | name      |
+----+-----------+
|  1 | 欧阳      |
|  2 | 牛马      |
|  3 | 张明东    |
|  4 | 鬼哥      |
+----+-----------+

我们可以看到id这一字段类型我们并没插入和干预,它自己增长。

假设我们自主干预插入 10 刘越,后面再次插入韩旭鹏/王星博那么他们的id号又从几号开始呢?

  • 是从5还是从11

mysql> insert into tb14(id,name) values(10, '刘越');
mysql> insert into tb14(name) values('韩旭鹏');
mysql> insert into tb14(name) values('王星博');mysql> select * from tb14;
+----+-----------+
| id | name      |
+----+-----------+
|  1 | 欧阳      |
|  2 | 牛马      |
|  3 | 张明东    |
|  4 | 鬼哥      |
| 10 | 刘越      |
| 11 | 韩旭鹏    |
| 12 | 王星博    |
+----+-----------+

在插入后获取上次插入的 AUTO_INCREMENT 的值(批量插入获取的是第一个值) 

mysql > select last_insert_id();  

9. 唯一键

  • 一张表中有往往有很多字段需要唯一性,数据不能重复,但是一张表中只能有一个主键:唯一键就可以解决表中有多个字段需要唯一性约束的问题,一个表中可以存在多个唯一键。

  • 唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。

关于唯一键和主键的区别:

我们可以简单理解成,主键更多的是标识表之间唯一性的。而唯一键更多的是保证在业务上一张表中不同字段,不要和别的字段信息出现重复。

unique key
mysql> create table tb15(-> id int unsigned unique key,-> name varchar(10)-> );
Query OK, 0 rows affected (0.01 sec)mysql> desc tb15;
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id    | int(10) unsigned | YES  | UNI | NULL    |       |
| name  | varchar(10)      | YES  |     | NULL    |       |
+-------+------------------+------+-----+---------+-------+
mysql> insert into tb15(id,name) values(1, '欧阳');
Query OK, 1 row affected (0.00 sec)mysql> insert into tb15(id,name) values(1, '牛马');
ERROR 1062 (23000): Duplicate entry '1' for key 'id'    -- id唯一mysql> insert into tb15(id,name) values(NULL, '牛马');
Query OK, 1 row affected (0.00 sec)                     -- 但是插入的id可以为NULLmysql> select * from tb15;
+------+--------+
| id   | name   |
+------+--------+
|    1 | 欧阳   |
| NULL | 牛马   |
+------+--------+

10. 外键

        如果我们现在有两张表,一个学生表记录了学生的name,age,telphone,class_id,另外一张class表记录了学生的班级id,和班级名称。我们需要将这两张表的class_id和id关联起来,表面上我们可以通过插入时的判断进行关联,但是插入错误的也不会报错,这时候就需要约束进行强制管理了,这就是外键。 

foreign key (字段名) references 主表(列)  
  • 外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。

mysql> create table class(-> id varchar(10) primary key,-> class_name varchar(10) not null comment '班级名称'-> );mysql> create table stu( -> class_id varchar(10), -> name varchar(20) not null comment '学生姓名', -> age tinyint default 18, telphone varchar(15), -> foreign key(class_id) references class(id));mysql> desc class;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id         | varchar(10) | NO   | PRI | NULL    |       |
| class_name | varchar(10) | NO   |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+mysql> desc stu;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| class_id | varchar(10) | YES  | MUL | NULL    |       |
| name     | varchar(20) | NO   |     | NULL    |       |
| age      | tinyint(4)  | YES  |     | 18      |       |
| telphone | varchar(15) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+mysql> insert into class(id, class_name) values(1, '软件工程001');
mysql> insert into class(id, class_name) values(2, '软件工程002');mysql> select * from class;
+----+-----------------+
| id | class_name      |
+----+-----------------+
| 1  | 软件工程001     |
| 2  | 软件工程002     |
+----+-----------------+mysql> insert into stu values(1, '欧阳', 18, '123456789');
mysql> insert into stu values(1, '牛马', 19, '123456780');
mysql> insert into stu values(2, '张明东', 20, '123456781');
Query OK, 1 row affected (0.00 sec)mysql> insert into stu values(3, '卢智博', 8, '183456781');
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`Class`.`stu`, CONSTRAINT `stu_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class` (`id`))
-- 由于id和class_id的外键约束,并没有3mysql> select * from stu;
+----------+-----------+------+-----------+
| class_id | name      | age  | telphone  |
+----------+-----------+------+-----------+
| 1        | 欧阳      |   18 | 123456789 |
| 1        | 牛马      |   19 | 123456780 |
| 2        | 张明东    |   20 | 123456781 |
+----------+-----------+------+-----------+

11. 实现综合案例

有一个商店的数据,记录客户及购物情况,有以下三个表组成:

  • 商品goods(商品编号goods_id,商品名goods_name, 单价unitprice, 商品类别category, 供应商provider)

  • 客户customer(客户号customer_id,姓名name,住址address,邮箱email,性别sex,身份证card_id)

  • 购买purchase(购买订单号order_id,客户号customer_id,商品号goods_id,购买数量nums)

    • 要求:

      • 每个表的主外键

      • 客户的姓名不能为空值邮箱不能重复

      • 客户的性别(男,女)

mysql> create table if not exists goods(-> goods_id int unsigned not null unique auto_increment comment '商品编号',-> goods_name varchar(30) comment '商品名',-> unitprice float(10,2) comment '单价',-> category varchar(25) comment '商品类别',-> provider varchar(30) comment '供应商'-> );mysql> desc goods;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| goods_id   | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| goods_name | varchar(30)      | YES  |     | NULL    |                |
| unitprice  | float(10,2)      | YES  |     | NULL    |                |
| category   | varchar(25)      | YES  |     | NULL    |                |
| provider   | varchar(30)      | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+mysql> create table if not exists customer(-> customer_id int unsigned primary key auto_increment comment '客户号',-> name varchar(30) not null comment '姓名',-> address varchar(30) comment '住址',-> email varchar(25) unique comment '邮箱',-> sex enum('男', '女') comment '性别',-> card_id varchar(30) unique comment '身份证'-> );mysql> desc customer;
+-------------+-------------------+------+-----+---------+----------------+
| Field       | Type              | Null | Key | Default | Extra          |
+-------------+-------------------+------+-----+---------+----------------+
| customer_id | int(10) unsigned  | NO   | PRI | NULL    | auto_increment |
| name        | varchar(30)       | NO   |     | NULL    |                |
| address     | varchar(30)       | YES  |     | NULL    |                |
| email       | varchar(25)       | YES  | UNI | NULL    |                |
| sex         | enum('男','女')   | YES  |     | NULL    |                |
| card_id     | varchar(30)       | YES  | UNI | NULL    |                |
+-------------+-------------------+------+-----+---------+----------------+create table purchase( -> order_id int unsigned not null unique key, -> customer_id varchar(5), -> goods_id varchar(5), -> nums int unsigned default 0 , -> foreign key(customer_id) references customer(customer_id), -> foreign key(goods_id) references goods(goods_id)
);mysql> desc purchase;
+-------------+------------------+------+-----+---------+----------------+
| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| order_id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| customer_id | varchar(5)       | YES  |     | NULL    |                |
| goods_id    | varchar(5)       | YES  |     | NULL    |                |
| nums        | int(10) unsigned | YES  |     | 0       |                |
+-------------+------------------+------+-----+---------+----------------+

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

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

相关文章

【Linux】Namespace

一、概念 Linux Namespace 是 Linux 内核提供的一种特性,用于对系统资源进行隔离。通过 Namespace,不同的进程组可以拥有独立的系统资源视图,即使它们在同一台物理机器上运行。这种隔离机制使得容器技术成为可能,因为它允许在单个…

在MATLAB中实现自适应滤波算法

自适应滤波算法是一种根据信号特性自动调整滤波参数的数字信号处理方法,其可以有效处理噪声干扰和信号畸变问题。在许多实时数据处理系统中,自适应滤波算法得到了广泛应用。在MATLAB中,可以使用多种方法实现自适应滤波算法。本文将介绍自适应…

Python学习------第十天

数据容器-----元组 定义格式,特点,相关操作 元组一旦定义,就无法修改 元组内只有一个数据,后面必须加逗号 """ #元组 (1,"hello",True) #定义元组 t1 (1,"hello") t2 () t3 tuple() prin…

软件测试—— Selenium 常用函数(一)

前一篇文章:软件测试 —— 自动化基础-CSDN博客 目录 前言 一、窗口 1.屏幕截图 2.切换窗口 3.窗口设置大小 4.关闭窗口 二、等待 1.等待意义 2.强制等待 3.隐式等待 4.显式等待 总结 前言 在前一篇文章中,我们介绍了自动化的一些基础知识&a…

Rust 力扣 - 746. 使用最小花费爬楼梯

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们使用a,b分别记录n - 2层向上爬的最小花费,n - 1层向上爬的最小花费 到达楼梯顶第N层,只能从N - 1层或者N - 2层向上爬 所以爬到第N层的最小花费 第N - 1层向上爬和第N - …

VRT: 关于视频修复的模型

VRT: 关于视频修复的模型 1. 视频修复的背景与重要性背景介绍:重要性: 2. VRT的重要性和研究背景VRT的背景:VRT的重要性: 3. 视频修复概述3.1 定义与目标3.2 与单图像修复的区别3.3 对时间信息利用的需求 4. VRT模型详解4.1 整体框…

关于C++地址交换的实现

关于地址的交换实现&#xff0c;我们要使用指针引用的方式进行&#xff0c;例如&#xff1a; #include <iostream>// 定义函数交换两个整型指针的地址 void swapIntPtrAddresses(int* &ptr1, int* &ptr2) {int *temp ptr1;ptr1 ptr2;ptr2 temp; }int main() …

HarmonyOS ArkUI(基于ArkTS) 常用组件

一 Button 按钮 Button是按钮组件&#xff0c;通常用于响应用户的点击操作,可以加子组件 Button(我是button)Button(){Text(我是button)}type 按钮类型 Button有三种可选类型&#xff0c;分别为胶囊类型&#xff08;Capsule&#xff09;、圆形按钮&#xff08;Circle&#xf…

SpringBoot学习笔记(一)

一、Spring Boot概述 &#xff08;一&#xff09;微服务概述 1、微服务 微服务&#xff08;英语&#xff1a;Microservices&#xff09;是一种软件架构风格&#xff0c;它是以专注于单一责任与功能的小型功能区块 (Small Building Blocks) 为基础&#xff0c;利用模块化的方式…

C++初阶(十三)--STL--vector的使用

目录 ​编辑 一、vector的基本介绍 二、vector的使用 1.构造函数的介绍 2.容量操作 size和capacity reserve和resize empty 3.vector的遍历 operator[ ](size_t n) 迭代器使用 begin和end rbegin和rend 4.vector的增删查改 push_back和pop_back insert和erase fi…

用Python爬虫“偷窥”1688商品详情:一场数据的奇妙冒险

引言&#xff1a;数据的宝藏 在这个信息爆炸的时代&#xff0c;数据就像是一座座等待挖掘的宝藏。而对于我们这些电商界的探险家来说&#xff0c;1688上的商品详情就是那些闪闪发光的金子。今天&#xff0c;我们将化身为数据的海盗&#xff0c;用Python这把锋利的剑&#xff0…

matlab的函数名和函数文件名的关系(编程注意事项)

在MATLAB中&#xff0c;函数名和函数文件名之间有着重要的关系。以下是它们之间的关系以及在编程时需要注意的事项 文章目录 函数名与函数文件名的关系编程时的注意事项结论 函数名与函数文件名的关系 一致性要求&#xff1a; 在MATLAB中&#xff0c;函数文件的文件名必须与函数…

【Redis】持久化机制RDB与AOF

一、RDB RDB模式是就是将内存中的数据存储到磁盘中&#xff0c;等到连接断开的时候会进行持久化操作。但是如果服务器宕机&#xff0c;会导致这个持久化机制不会执行&#xff0c;但是内存中的文件会直接丢失。所以可以设置一个触发机制&#xff0c;save 60 1000 就是代表60秒 执…

基于Lora通讯加STM32空气质量检测WIFI通讯-分享

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着环境污染问题的日益严重&#xff0c;空气质量的监测与管理已经…

【MySQL】ubantu 系统 MySQL的安装与免密码登录的配置

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;MySQL初阶探索&#xff1a;构建数据库基础 欢迎大家点赞收藏评论&#x1f60a; 目录 &#x1f4da;mysql的安装&#x1f4d5;MySQL的登录&#x1f30f;MySQL配置免密码登录 &#x1f4da;mysql的…

【STK学习】part2-星座-目标可见性与覆盖性分析

【Satellite Tool Kit】学习并深入了解卫星/星座生成、可见性分析、覆盖性分析等知识&#xff0c;并基于STK软件实现对应数据的导出&#xff0c;以用于算法的约束输入。 文章目录 一、学习目标二、学习内容2.1 星地可见性分析2.1.1 单星单地2.1.2 单星多地2.1.3 多星单地 2.2 星…

框架实战:SSM整合原理和实战

1. SSM整合理解 1.1. IOC两个容器对应组件 容器名盛放组件web容器web相关组件&#xff08;controller,springmvc核心组件&#xff09;root容器业务和持久层相关组件&#xff08;service,aop,tx,dataSource,mybatis,mapper等&#xff09; 配置文件 配置名对应内容对应容器Web…

自然语言处理:第六十三章 阿里Qwen2 2.5系列

本人项目地址大全&#xff1a;Victor94-king/NLP__ManVictor: CSDN of ManVictor 项目地址: QwenLM/Qwen2.5: Qwen2.5 is the large language model series developed by Qwen team, Alibaba Cloud. 官网地址: 你好&#xff0c;Qwen2 | Qwen & Qwen2.5: 基础模型大派对&a…

i春秋-登陆(sql盲注爆字段,.git缓存利用)

练习平台地址 竞赛中心 题目描述 先登陆再说 题目内容 就是一个登录框 测试登录 用户名&#xff1a;admin or 11# 密码&#xff1a;随便输 返回密码错误 用户名&#xff1a;随便输 密码&#xff1a;随便输 返回用户名不存在 这里就可以确定时一个bool盲注了 这里提供一个lik…

新华三H3CNE网络工程师认证—子接口技术

子接口&#xff08;subinterface&#xff09;是通过协议和技术将一个物理接口&#xff08;interface&#xff09;虚拟出来的多个逻辑接口。在VLAN虚拟局域网中&#xff0c;通常是一个物理接口对应一个 VLAN。在多个 VLAN 的网络上&#xff0c;无法使用单台路由器的一个物理接口…