4. MySQL 約束

文章目錄

  • 【 1. 主鍵約束 PRIMARY KEY 】
    • 1.1 在創建表時設置主鍵約束
      • 設置單字段主鍵
      • 在創建表時設置聯合主鍵
    • 1.2 在修改表時添加主鍵約束
    • 1.3 刪除主鍵約束
    • 1.4 主鍵自增長 AUTO_INCREMENT
      • 指定自增字段初始值
      • 自增字段不連續
  • 【 2. 外鍵約束 FOREIGN KEY 】
    • 2.1 在創建表時設置外鍵約束
    • 2.2 在修改表時設置外鍵約束
    • 2.3 刪除外鍵約束
  • 【 3. 唯一約束 UNIQUE KEY 】
    • 3.1 在創建表時設置唯一約束
    • 3.2 在修改表時添加唯一約束
    • 3.3 刪除唯一約束
  • 【 4. 檢查約束 CHECK 】
    • 4.1 選取設置檢查約束的字段
    • 4.2 在創建表時設置檢查約束
    • 4.3 在修改表時添加檢查約束
    • 4.4 刪除檢查約束
  • 【 5. 默認值約束 Default 】
    • 5.1 在創建表時設置默認值約束
    • 5.2 在修改表時添加默認值約束
    • 5.3 刪除默認值約束
  • 【 6. 非空約束 NOT NULL 】
    • 6.1 在創建表時設置非空約束
    • 6.2 在修改表時添加非空約束
    • 6.3 刪除非空約束
  • 【 7. 查看表中的約束 】

  • 在 MySQL 中, 約束 是指對表中數據的一種約束,能夠幫助數據庫管理員更好地管理數據庫,并且能夠確保數據庫中數據的正確性和有效性。

例如,在數據表中存放年齡的值時,如果存入 200、300 這些無效的值就毫無意義了。因此,使用約束來限定表中的數據范圍是很有必要的。

【 1. 主鍵約束 PRIMARY KEY 】

  • 主鍵(PRIMARY KEY) 的完整稱呼是 主鍵約束,是 MySQL 中使用最為頻繁的約束。一般情況下,為了便于 DBMS 更快的查找到表中的記錄,都會在表中設置一個主鍵。
  • 每個表只能定義一個主鍵 ,其它約束可以有多個。
  • 唯一性原則 :主鍵字段的值在表中必須是唯一的,不存在重復的情況,且不能為 NULL。即 設置成主鍵約束的字段的值中不可能存在有相同主鍵值的數據,且不能為NULL ;否則,無法設置主鍵約束。
  • 主鍵分為單字段主鍵和多字段聯合主鍵。在創建數據表時設置主鍵約束,既可以為表中的一個字段設置 單字段主鍵 ,也可以為表中多個字段設置 聯合主鍵

1.1 在創建表時設置主鍵約束

設置單字段主鍵

  • 在 CREATE TABLE 語句中,通過 在字段后面加 PRIMARY KEY 關鍵字來指定主鍵 。基本語法:
<字段名> <數據類型> PRIMARY KEY [默認值]
  • 實例
    在 test_db 數據庫中創建 tb_emp3 數據表,其主鍵為 id
    CREATE TABLE tb_emp3
    (
    id INT(11) PRIMARY KEY,
    name VARCHAR(25),
    deptId INT(11),
    salary FLOAT
    );
    在這里插入圖片描述
  • 也可以在定義完所有字段之后指定主鍵,語法格式如下:
[CONSTRAINT <約束名>] PRIMARY KEY [字段名]
  • 實例
    在數據庫中創建 tb_emp4 數據表,其主鍵為 id。
    CREATE TABLE tb_emp4
    (
    id INT(11),
    name VARCHAR(25),
    deptId INT(11),
    salary FLOAT,
    PRIMARY KEY(id)
    );
    在這里插入圖片描述

在創建表時設置聯合主鍵

  • 聯合主鍵 就是這個主鍵是由一張表中多個字段組成的約束,是指使用 表中的兩個或更多字段的組合來共同作為主鍵,以此來唯一標識表中的記錄 。當單個字段無法唯一標識表中的每一行數據,或者業務邏輯需要多個字段的組合來定義唯一性時,就會使用聯合主鍵。
  • 最小化原則 :聯合主鍵不能包含不必要的多余字段。當把聯合主鍵的某一字段刪除后,如果剩下的字段構成的主鍵仍然滿足唯一性原則,那么這個聯合主鍵是不正確的。
  • 比如,設置學生選課數據表時,使用學生編號做主鍵還是用課程編號做主鍵呢?如果用學生編號做主鍵,那么一個學生就只能選擇一門課程。如果用課程編號做主鍵,那么一門課程只能有一個學生來選。顯然,這兩種情況都是不符合實際情況的。
  • 實際上設計學生選課表,要限定的是一個學生只能選擇同一課程一次。因此,學生編號和課程編號可以放在一起共同作為主鍵,這也就是聯合主鍵了。
  • 基本語法
    • 一個字段名只能在聯合主鍵字段表中出現一次
    • 當主鍵是由多個字段組成時,不能直接在字段名后面聲明主鍵約束。
PRIMARY KEY [字段1,字段2,…,字段n]
  • 實例
    創建數據表 tb_emp5,假設表中沒有主鍵 id,為了唯一確定一個員工,可以把 name、deptId 聯合起來作為主鍵。
    CREATE TABLE tb_emp5
    (
    name VARCHAR(25),
    deptId INT(11),
    salary FLOAT,
    PRIMARY KEY(name,deptId)
    );
    在這里插入圖片描述

1.2 在修改表時添加主鍵約束

  • 基本語法
ALTER TABLE <數據表名> ADD PRIMARY KEY(<字段名>);
  • 實例
    修改數據表 student,將字段 id 設置為主鍵。
    ALTER TABLE student ADD PRIMARY KEY(id);
    在這里插入圖片描述

1.3 刪除主鍵約束

  • 由于主鍵約束在一個表中只能有一個,因此不需要指定主鍵名就可以刪除一個表中的主鍵約束。
    基本語法:
ALTER TABLE <數據表名> DROP PRIMARY KEY;
  • 實例
    刪除 student 表中的主鍵約束。
    ALTER TABLE student DROP PRIMARY KEY;
    在這里插入圖片描述

1.4 主鍵自增長 AUTO_INCREMENT

  • 在 MySQL 中,當主鍵定義為 自增長 后,這個主鍵的值就不再需要用戶輸入數據了,而是由數據庫系統根據定義自動賦值。每增加一條記錄,主鍵會自動以相同的步長進行增長。
    通過給字段添加 AUTO_INCREMENT 屬性來實現主鍵自增長,基本語法
    • 默認情況下,AUTO_INCREMENT 的 初始值是 1,每 新增一條記錄,字段值自動加 1。因此,這個字段不可能出現相同的值。
    • 一個表中只能有一個字段使用 AUTO_INCREMENT 約束,且該字段必須有唯一索引,以避免序號重復(即為主鍵或主鍵的一部分)。
    • AUTO_INCREMENT 約束的字段必須具備 非空 NOT NULL 屬性
    • AUTO_INCREMENT 約束的字段 只能是整數類型 (TINYINT、SMALLINT、INT、BIGINT 等)。
    • AUTO_INCREMENT 約束字段的 最大值受該字段的數據類型約束,如果達到上限,AUTO_INCREMENT 就會失效。
字段名 數據類型 AUTO_INCREMENT
  • 實例
    1. 創建名為 tb_student 的數據表。其中,id 為主鍵,每插入一條新記錄,id 的值就會在前一條記錄的基礎上自動加 1。name 為非空字段,該字段的值不能為空值(NULL)。
      CREATE TABLE tb_student(
      id INT(4) PRIMARY KEY AUTO_INCREMENT,
      name VARCHAR(25) NOT NULL
      );
    2. 向 tb_student 表中插入數據。
      INSERT INTO tb_student(name,id) VALUES('Java',NULL);
      INSERT INTO tb_student(name,id) VALUES('Python',NULL);
      INSERT INTO tb_student(name,id) VALUES('SQL',NULL);
    3. 查看表。
      SELECT * FROM tb_student;
      在這里插入圖片描述

指定自增字段初始值

  • 如果第一條記錄設置了該字段的初始值,那么新增加的記錄就從這個初始值開始自增。
    例如,如果表中插入的第一條記錄的 id 值設置為 5,那么再插入記錄時,id 值就會從 5 開始往上增加。
  • 實例
    1. 創建表 tb_student2,指定主鍵從 100 開始自增長。
      CREATE TABLE tb_student2 (
      id INT NOT NULL AUTO_INCREMENT,
      name VARCHAR(20) NOT NULL,
      PRIMARY KEY(ID)
      )AUTO_INCREMENT=100;
    2. 向 tb_student2 表中插入數據。
      INSERT INTO tb_student2 (name)VALUES('Java');
      INSERT INTO tb_student2 (name)VALUES('Python');
    3. 使用 SELECT 命令查詢表中記錄
      SELECT * FROM tb_student2;
      在這里插入圖片描述

自增字段不連續

  • 當唯一鍵沖突是,再插入新的數據時自增字段會不連續。
  • 實例
    1. 創建表 tb_student3,其中 id 是自增主鍵字段,name 是唯一索引。
      CREATE TABLE tb_student3(
      id INT PRIMARY KEY AUTO_INCREMENT,
      name VARCHAR(20) UNIQUE KEY,
      age INT DEFAULT NULL
      );
    2. 向 tb_student3 表中插入數據。
      INSERT INTO tb_student3 VALUES(1,1,1);
    3. 此時,表 tb_student3 中已經有了(1,1,1)這條記錄,這時再執行一條插入數據命令會報錯。
      這是由于表中已經存在 name=1 的記錄,所以報 Duplicate key error(唯一鍵沖突)。
      INSERT INTO tb_student3 VALUES(null,1,1);
    4. 在這之后,再插入新的數據時,自增 id 就是 3,這樣就出現了自增字段值不連續的情況。
      INSERT INTO tb_student3 VALUES(null,2,66);
    5. 查看結果
      SELECT * FROM tb_student3;
      在這里插入圖片描述

【 2. 外鍵約束 FOREIGN KEY 】

  • MySQL 外鍵約束(FOREIGN KEY) 是表的一個特殊字段,經常與主鍵約束一起使用。對于兩個具有關聯關系的表而言,相關聯字段中主鍵所在的表就是 主表(父表) ,外鍵所在的表就是 從表(子表)外鍵用來建立主表與從表的關聯關系,為兩個表的數據建立連接,約束兩個表中數據的一致性和完整性
    比如,一個水果攤,只有蘋果、桃子、李子、西瓜等 4 種水果,那么,你來到水果攤要買水果就只能選擇蘋果、桃子、李子和西瓜,其它的水果都是不能購買的。
  • 定義外鍵時,需要遵守下列規則:
    • 主表必須已經存在于數據庫中,或者是當前正在創建的表。如果主表當前正在創建,則主表與從表是同一個表,這樣的表稱為 自參照表 ,這種結構稱為 自參照完整性
    • 必須為主表定義主鍵
    • 一個表可以有一個或多個外鍵,外鍵可以為空值,若不為空值,則每一個外鍵的值必須等于主表中主鍵的某個值
    • 在主表的表名后面指定列名或列名的組合,這個列或列的組合必須是主表的主鍵或候選鍵。
    • 從表的外鍵關聯的必須是主表的主鍵,外鍵中列的數目、列的數據類型必須和主表主鍵相同
      例如,兩者都是 INT 類型,或者都是 CHAR 類型。如果不滿足這樣的要求,在創建從表時,就會出現“ERROR 1005(HY000): Can’t create table”錯誤。
  • 主表刪除某條記錄時,從表中與之對應的記錄也必須有相應的改變

2.1 在創建表時設置外鍵約束

  • 基本語法:
[CONSTRAINT <外鍵名>] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES <主表名> 主鍵列1 [,主鍵列2,…]
  • 實例
    1. 創建1個數據表 tb_dept1,并在 tb_dept1 的 id 字段上創建主鍵約束。
      CREATE TABLE tb_dept1
      (
      id INT(11) PRIMARY KEY,
      name VARCHAR(22) NOT NULL,
      location VARCHAR(50)
      );
    2. 創建數據表 tb_emp6,并在表 tb_emp6 上創建外鍵約束,讓它的鍵 deptId 作為外鍵關聯到表 tb_dept1 的主鍵 id。
      CREATE TABLE tb_emp6
      (
      id INT(11) PRIMARY KEY,
      name VARCHAR(25),
      deptId INT(11),
      salary FLOAT,
      CONSTRAINT fk_emp_dept1
      FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
      );
      在這里插入圖片描述

2.2 在修改表時設置外鍵約束

  • 外鍵約束也可以在修改表時添加,但是添加外鍵約束的前提是:從表中外鍵列中的數據必須全部來源于主鍵列或者是為空沒有數據,不過為空的數據跟與之相關聯的表就沒有關系了,一般不采用 。
    基本語法:
ALTER TABLE <數據表名> ADD CONSTRAINT <外鍵名>
FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);
  • 實例
    修改數據表 tb_emp3,將字段 deptId 設置為外鍵,與數據表 tb_dept1 的主鍵 id 進行關聯。
    ALTER TABLE tb_emp3
    ADD CONSTRAINT fk_tb_dept1_2
    FOREIGN KEY(deptId)
    REFERENCES tb_dept1(id);
    在這里插入圖片描述

2.3 刪除外鍵約束

  • 基本語法
ALTER TABLE <表名> DROP FOREIGN KEY <外鍵約束名>;
  • 實例
    刪除數據表 tb_emp3 中的外鍵約束 fk_tb_dept1_2。
    ALTER TABLE tb_emp3 DROP FOREIGN KEY fk_tb_dept1_2;
    在這里插入圖片描述

【 3. 唯一約束 UNIQUE KEY 】

  • MySQL 唯一約束(Unique Key) 是指 所有記錄中字段的值不能重復出現
    例如,為 id 字段加上唯一性約束后,每條記錄的 id 值都是唯一的,不能出現重復的情況。如果其中一條記錄的 id 值為‘0001’,那么該表中另一條記錄的 id 值就不能為‘0001’。
  • 唯一約束與主鍵約束相似的是它們都可以 確保列的唯一性 。不同的是,唯一約束在一個表中可有多個,并且設置唯一約束的列允許只能有一個空值。而主鍵約束在一個表中只能有一個,且不允許有空值
    比如,在用戶信息表中,為了避免表中用戶名重名,可以把用戶名設置為唯一約束。

3.1 在創建表時設置唯一約束

  • 唯一約束可以在創建表時直接設置,通常設置在除了主鍵以外的其它列上。基本語法:
    • 在定義完列之后直接使用 UNIQUE 關鍵字指定唯一約束。
<字段名> <數據類型> UNIQUE
  • 實例
    創建數據表 tb_dept2,指定部門的名稱唯一。
    CREATE TABLE tb_dept2
    (
    id INT(11) PRIMARY KEY,
    name VARCHAR(22) UNIQUE,
    location VARCHAR(50)
    );
    在這里插入圖片描述

3.2 在修改表時添加唯一約束

  • 基本語法
ALTER TABLE <數據表名> ADD CONSTRAINT <唯一約束名> UNIQUE(<列名>);
  • 實例
    ALTER TABLE tb_dept1 ADD CONSTRAINT unique_name UNIQUE(name);
    在這里插入圖片描述

3.3 刪除唯一約束

  • 基本語法
ALTER TABLE <表名> DROP INDEX <唯一約束名>;
  • 實例
    ALTER TABLE tb_dept1 DROP INDEX unique_name;
    在這里插入圖片描述

【 4. 檢查約束 CHECK 】

  • MySQL 檢查約束(CHECK) 是用來 檢查數據表中字段值有效性 的一種手段,設置檢查約束時要根據實際情況進行設置,這樣能夠減少無效數據的輸入。

4.1 選取設置檢查約束的字段

  • 在更新表數據的時候,系統會檢查更新后的數據行是否滿足 CHECK 約束中的限定條件。MySQL 可以使用簡單的表達式來實現 CHECK 約束,也允許使用復雜的表達式作為限定條件,例如在限定條件中加入子查詢。
  • 基本語法
    • “表達式”指的就是 SQL 表達式,用于指定需要檢查的限定條件。
CHECK <表達式>
  • 若將 CHECK 約束子句置于表中某個列的定義之后,則這種約束也稱為 基于列的 CHECK 約束
  • 若將 CHECK 約束子句置于所有列的定義以及主鍵約束和外鍵定義之后,則這種約束也稱為 基于表的 CHECK 約束 。該約束可以同時對表中多個列設置限定條件。

4.2 在創建表時設置檢查約束

  • 在創建表時就可以為字段設置檢查約束。
    基本語法:
CHECK(<檢查約束>)
  • 實例
    創建 tb_emp7 數據表,要求 salary 字段值大于 0 且小于 10000。
    CREATE TABLE tb_emp7
    (
    id INT(11) PRIMARY KEY,
    name VARCHAR(25),
    deptId INT(11),
    salary FLOAT,
    CHECK(salary>0 AND salary<100),
    FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
    );
    在這里插入圖片描述

4.3 在修改表時添加檢查約束

  • 如果一個表創建完成,可以通過修改表的方式為表添加檢查約束。
    基本語法:
ALTER TABLE tb_emp7 ADD CONSTRAINT <檢查約束名> CHECK(<檢查約束>)
  • 實例
    修改 tb_emp7 數據表,要求 id 字段值大于 0。
    ALTER TABLE tb_emp7
    ADD CONSTRAINT check_id
    CHECK(id>0);
    在這里插入圖片描述

4.4 刪除檢查約束

  • 基本語法
ALTER TABLE <數據表名> DROP CONSTRAINT <檢查約束名>;
  • 實例
    刪除 tb_emp7 表中的 check_id 檢查約束。
    ALTER TABLE tb_emp7
    DROP CONSTRAINT check_id;
    在這里插入圖片描述

【 5. 默認值約束 Default 】

  • 默認值(Default)的完整稱呼是 默認值約束(Default Constraint) ,用來指定某列的默認值。在表中插入一條新記錄時,如果沒有為某個字段賦值,系統就會自動為這個字段插入默認值。

5.1 在創建表時設置默認值約束

  • 基本語法
    • 其中,“默認值” 為該字段設置的默認值,如果是字符類型的,要用單引號括起來。
    • 在創建表時為列添加默認值,可以一次為多個列添加默認值,需要注意不同列的數據類型。
<字段名> <數據類型> DEFAULT <默認值>;
  • 實例
    創建數據表 tb_dept3,指定部門位置默認為 Beijing,新插入的記錄如果沒有指定部門位置,則默認都為 Beijing。
    CREATE TABLE tb_dept3
    (
    id INT(11) PRIMARY KEY,
    name VARCHAR(22),
    location VARCHAR(50) DEFAULT 'Beijing'
    );
    在這里插入圖片描述

5.2 在修改表時添加默認值約束

  • 基本語法
ALTER TABLE <數據表名>
CHANGE COLUMN <字段名> <數據類型> DEFAULT <默認值>;
  • 實例
    修改數據表 tb_dept3,將部門位置的默認值修改為 Shanghai。
    ALTER TABLE tb_dept3
    CHANGE COLUMN location
    location VARCHAR(50) DEFAULT 'Shanghai';
    在這里插入圖片描述

5.3 刪除默認值約束

  • 當一個表中的列不需要設置默認值時,就需要從表中將其刪除。
    基本語法:
ALTER TABLE <數據表名>
CHANGE COLUMN <字段名> <字段名> <數據類型> DEFAULT NULL;
  • 實例
    修改數據表 tb_dept3,將部門位置的默認值約束刪除。
    ALTER TABLE tb_dept3
    CHANGE COLUMN location
    location VARCHAR(50) DEFAULT NULL;
    在這里插入圖片描述

【 6. 非空約束 NOT NULL 】

  • MySQL 非空約束(NOT NULL)字段的值不能為空。對于使用了非空約束的字段,如果用戶在添加數據時沒有指定值,數據庫系統就會報錯。可以通過 CREATE TABLE 或 ALTER TABLE 語句實現。在表中某個列的定義后加上關鍵字 NOT NULL 作為限定詞,來約束該列的取值不能為空。

比如,在用戶信息表中,如果不添加用戶名,那么這條用戶信息就是無效的,這時就可以為用戶名字段設置非空約束。

6.1 在創建表時設置非空約束

  • 基本語法
<字段名> <數據類型> NOT NULL;
  • 實例
    創建數據表 tb_dept4,指定部門名稱不能為空。
    CREATE TABLE tb_dept4
    (
    id INT(11) PRIMARY KEY,
    name VARCHAR(22) NOT NULL,
    location VARCHAR(50)
    );
    在這里插入圖片描述

6.2 在修改表時添加非空約束

  • 如果在創建表時忘記了為字段設置非空約束,也可以通過修改表進行非空約束的添加。
    基本語法:
ALTER TABLE <數據表名>
CHANGE COLUMN <字段名>
<字段名> <數據類型> NOT NULL;
  • 實例
    修改數據表 tb_dept4,指定部門位置不能為空。
    ALTER TABLE tb_dept4
    CHANGE COLUMN location
    location VARCHAR(50) NOT NULL;
    在這里插入圖片描述

6.3 刪除非空約束

  • 基本語法
ALTER TABLE <數據表名>
CHANGE COLUMN <字段名> <字段名> <數據類型> NULL;
  • 實例
    修改數據表 tb_dept4,將部門位置的非空約束刪除。
    ALTER TABLE tb_dept4
    CHANGE COLUMN location
    location VARCHAR(50) NULL;
    在這里插入圖片描述

【 7. 查看表中的約束 】

  • 基本語法
SHOW CREATE TABLE <數據表名>;
  • 實例
    1. 創建數據表 tb_emp8 并指定 id 為主鍵約束,name 為唯一約束,deptId 為非空約束和外鍵約束。
      CREATE TABLE tb_emp8
      (
      id INT(11) PRIMARY KEY,
      name VARCHAR(22) UNIQUE,
      deptId INT(11) NOT NULL,
      salary FLOAT DEFAULT 0,
      CHECK(salary>0),
      FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
      );
    2. 查看表中的約束SHOW CREATE TABLE tb_emp8 \G
      在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20157.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20157.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20157.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mybatis數據加密解密

文章目錄 Mybatis數據加密解密一、自定義注解二、自定義參數處理攔截器結果集攔截器加密解密 Mybatis數據加密解密 方案一&#xff1a;Mybatis攔截器之數據加密解密【Interceptor】 攔截器介紹 Mybatis Interceptor 在 Mybatis 中被當作 Plugin(插件)&#xff0c;不知道為什么…

ARM32開發——LED點燈

&#x1f3ac; 秋野醬&#xff1a;《個人主頁》 &#x1f525; 個人專欄:《Java專欄》《Python專欄》 ??心若有所向往,何懼道阻且長 文章目錄 點燈的兩種方式灌入電流法輸出電流法擴展板點燈點燈方式點亮LED1-4完整實現 點燈的兩種方式 不同顏色LED&#xff0c;達到相同亮度…

[數據集][目標檢測]貓狗檢測數據集VOC+YOLO格式8291張2類別

數據集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路徑的txt文件&#xff0c;僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數)&#xff1a;8291 標注數量(xml文件個數)&#xff1a;8291 標注數量(txt文件個數)&#xff1a;8291 標注…

ETLCloud中如何使用Kettle組件

ETLCloud中如何使用Kettle組件在當今數據驅動的時代&#xff0c;數據處理和分析已成為企業決策的關鍵。為了更高效地處理海量數據&#xff0c;ETL&#xff08;Extract, Transform, Load&#xff09;工具變得至關重要。而在眾多ETL工具中&#xff0c;Kettle作為一款開源、靈活且…

c#面向對象:接口詳解

接口&#xff08;interface&#xff09; 抽象類中的抽象方法只規定了不能是 private 的&#xff0c;而接口中的“抽象方法”只能是 public 的。這樣的成員訪問級別就決定了接口的本質&#xff1a;接口是服務消費者和服務提供者之間的契約。既然是契約&#xff0c;那就必須是透…

攻防實戰 | 郵件高級威脅檢測與自動化響應

歷經三個月的時間&#xff0c;年度重磅直播節目Fortinet 2024年度“Demo季”近日終于迎來了備受矚目的壓軸大戲——Demo Day第三期&#xff0c;主題為《新郵件安全下的高級威脅檢測與自動化響應》。繼成功舉辦了前兩期《企業網絡中的多源威脅情報自動化整合與集成》和《應急響應…

【持久層】在Spring Boot中使用Hibernate和Gradle構建項目

Hibernate是一個廣泛使用的Java持久化框架&#xff0c;它使得Java對象與關系數據庫之間的映射變得簡單高效。在Spring Boot應用中&#xff0c;結合Gradle構建工具&#xff0c;能夠方便地集成和使用Hibernate。本文將簡述如何在Spring Boot中使用Hibernate&#xff0c;并通過Gra…

Pycharm使用時的紅色波浪線報錯——形如‘break‘ outside loop

背景&#xff1a; 我在一個方法中&#xff0c;寫了一個if判斷&#xff0c;寫了一個break&#xff0c;期望終止這個函數&#xff0c;編輯器出現報錯 形如下圖 視頻版問題教程&#xff1a; Pycharm下出現波浪線報錯&#xff0c;形如break outside loop 過程&#xff1a; 很奇…

IDEA一鍵啟動多個微服務

我們在做微服務項目開發的時候&#xff0c;每次剛打開IDEA&#xff0c;就需要把各個服務一個個依次啟動&#xff0c;特別是服務比較多時&#xff0c;逐個點擊不僅麻煩還費時。下面來說一下如何一鍵啟動多個微服務。 操作步驟 點擊Edit Configurations 2.點擊“”&#xff0c;…

【設計模式】JAVA Design Patterns——Facade(外觀模式)

&#x1f50d;目的 為一個子系統中的一系列接口提供一個統一的接口。外觀定義了一個更高級別的接口以便子系統更容易使用。 &#x1f50d;解釋 真實世界例子 一個金礦是怎么工作的&#xff1f;“嗯&#xff0c;礦工下去然后挖金子&#xff01;”你說。這是你所相信的因為你在使…

性價比為王,物流商怎么選擇高效的國際物流管理平臺

在全球化貿易日益繁榮的今天&#xff0c;國際物流行業作為鏈接國內商家和海外市場的重要橋梁&#xff0c;發揮著極其重要的作用。 然而&#xff0c;隨著國際物流市場競爭的加劇&#xff0c;對物流商來說&#xff0c;也面臨著成本管控和效率提升的雙重挑戰。今天我們會重點探討…

解決 DataGrip 2024.1.3 連接 Tdengine 時timestamp字段顯示時區不正確問題

設置中找到該設置&#xff0c;將原來的設置 yyyy-MM-dd HH:mm:ss 修改為: yyyy-MM-dd HH:mm:ss.SSS z 即可。 注意&#xff1a;只能修改第一個,修改后提示錯誤&#xff0c;但是查詢數據時能成功格式化時間&#xff0c;修改第二個不生效&#xff0c;可能是 bug 具體格式見: Date…

DOS編程入門:探索基礎、深入技巧與實戰應用

DOS編程入門&#xff1a;探索基礎、深入技巧與實戰應用 DOS編程&#xff0c;作為計算機編程的基石之一&#xff0c;對于初學者來說&#xff0c;既是一種挑戰&#xff0c;也是一次深入了解計算機底層運作的絕佳機會。本文將從四個方面、五個方面、六個方面和七個方面&#xff0…

Opera 瀏覽器與Google聯手,推出由Gemini驅動的全新AI功能

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

JavaScript循環語句

JavaScript中的循環語句有三種&#xff1a;for循環、while循環和do...while循環。這些循環語句可以幫助我們重復執行一段代碼&#xff0c;直到滿足某個條件為止。 for循環&#xff1a; for循環是最常用的循環語句之一&#xff0c;它包含一個初始化表達式、一個條件表達式和一個…

富士攝像機X-H2S MOV格式化后重新寫入后的恢復方法

X-H2S是富士數碼的一款旗艦機型&#xff0c;支持4K/6K高清&#xff0c;視頻編碼為最新的HVC。下面我們來看下富士數碼攝像機恢復案例。 故障存儲:512G存儲卡 Exfat文件系統 故障現象: 512G的卡誤格式化后又進行了拍攝&#xff0c;卡使用了120G不到的空間&#xff0c;其它底…

【副業】12種程序員副業大匯總

1&#xff1a;寫博客。技術能力可以的寫技術文章輸出&#xff0c;比如當前網站、掘金、阿里云社區、騰訊云社區、其他社區。 2&#xff1a;賣課程。大廠高P跟知識付費平臺合作、錄課賣課程、比如極課時間、慕課網、騰訊課堂。 3&#xff1a;寫書。技術大拿出書&#xff0c;掙稿…

簡述Vue中同時發送多個請求怎么操作?

在Vue中同時發送多個請求&#xff0c;我們通常使用axios這個庫&#xff0c;因為它基于Promise&#xff0c;可以很好地處理異步操作。以下是兩種常用的方法來同時發送多個請求&#xff1a; 方法一&#xff1a;使用Promise.all() 定義多個請求&#xff1a; 使用axios.get()或axi…

【EFK日志系統】docker一鍵部署kibana、es-head

docker一鍵部署kibana、es-head kibana部署es-head部署 上一篇文章搭建了es集群 規劃服務器是 es01:172.23.165.185 es02:172.23.165.186 es03:172.23.165.187 那么kibana就搭建在主節點es01:172.23.165.185 按照順序參考&#xff1a; docker一鍵部署EFK系統&#xff08;elas…

使用 Vue 3 和 JsBarcode 開發一維碼顯示組件

在現代前端開發中&#xff0c;條形碼&#xff08;或稱一維碼&#xff09;在許多應用場景中非常常見&#xff0c;例如商品管理、物流跟蹤等。本文將介紹如何使用 Vue 3 和 JsBarcode 庫來創建一個靈活的一維碼顯示組件&#xff0c;并展示如何在應用中使用它。 1. 安裝必要的依賴…