MySQL 中的安全模式
本教程探討 MySQL 資料庫中安全模式的概念。
大多數使用 MySQL 進行資料分析或視覺化的企業和組織都需要根據進入日期或到期日期或其他一些東西來排序或獲取使用者的不同表值。
另一個要求是根據 MySQL 中某些表中的特定資料獲取資料、更新資料、更改或插入資料。禁用安全模式時可以進行此操作。
但是,有時,需要更新或插入特定表中的資料是不可能的,因為安全模式可能已開啟。它確保表格在任何情況下都不會改變。
本教程將通過開啟和關閉我們的安全模式,然後在 MySQL 表中插入或更新資訊來擴充套件這些知識。
首先,讓我們在 MySQL Workbench 中使用以下查詢關閉 MySQL 中的安全模式。
SET SQL_SAFE_UPDATES = 0;
該查詢不會反映任何行中的任何爭執,但會確保禁用安全模式。
但是,在開始之前,我們建立一個虛擬資料集來使用。在這裡,我們建立了一個表 student_dates_3
以及幾行。
-- create the table student_dates_3
CREATE TABLE student_dates_3(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_date date,
primary key(stu_id)
);
使用 INSERT
語句在 MySQL 的表中插入條目
上面的查詢建立了一個名為 student_dates_3
的表。讓我們使用 INSERT
語句為一些學生新增資料。
該操作可以如下進行。
-- insert rows to the table student_dates_3
INSERT INTO student_dates_3(stu_id,stu_firstName,stu_date)
VALUES(1,"Preet",STR_TO_DATE('24-May-2005', '%d-%M-%Y')),
(2,"Dhruv",STR_TO_DATE('14-June-2001', '%d-%M-%Y')),
(3,"Mathew",STR_TO_DATE('13-December-2020', '%d-%M-%Y')),
(4,"Jeet",STR_TO_DATE('14-May-2003', '%d-%M-%Y')),
(5,"Steyn",STR_TO_DATE('19-July-2002', '%d-%M-%Y')),
(6,"Rutvik",STR_TO_DATE('16-January-2001', '%d-%M-%Y'));
該程式碼將在表 student_dates_3
中輸入學生資料。我們可以使用以下命令視覺化該表。
SELECT * from student_dates_3;
上面的程式碼塊將生成以下輸出。
stu_id stu_firstName stu_date
1 Preet 2005-05-24
2 Dhruv 2001-06-14
3 Mathew 2020-12-13
4 Jeet 2003-05-14
5 Steyn 2002-07-19
6 Rutvik 2001-01-16
如上表所示,我們已成功在表 student_dates_3
中輸入日期。現在讓我們通過開啟安全模式來刪除這個表。
在 MySQL 中開啟安全模式
我們需要在 MySQL 中使用以下查詢來開啟安全模式。
SET SQL_SAFE_UPDATES = 1;
現在讓我們去掉表中的一些資料。讓我們消除名字設定為 Preet
的學生。我們可以使用以下查詢來做到這一點。
DELETE FROM student_dates_3 WHERE stu_firstName like 'Preet';
但是,由於我們已開啟安全模式,因此我們無法執行此操作。如果我們在 MySQL 伺服器上執行查詢,我們將收到以下錯誤。
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
這條訊息告訴我們,我們首先需要在 MySQL 中禁用安全模式才能使操作成功。要禁用安全模式,請切換 Preferences > SQL Editor 選項並重新連線。
在 MySQL 中關閉安全模式
讓我們關閉安全模式,然後再次嘗試此操作。我們可以使用以下查詢來做到這一點。
SET SQL_SAFE_UPDATES = 0;
此查詢將確保已禁用安全模式。現在,讓我們從 student_dates_3
表中刪除某些行。我們可以使用以下查詢來做到這一點。
DELETE FROM student_dates_3 WHERE stu_firstName like 'Rutvik';
正如我們從查詢中看到的那樣,我們正在嘗試消除 Rutvik
。現在我們已經關閉了安全模式,我們應該在沒有錯誤程式碼:1175
的情況下進行操作。
可以使用下面描述的表視覺化查詢來視覺化查詢的輸出。
SELECT * from student_dates_3;
查詢的輸出可以使用以下查詢進行視覺化。
stu_id stu_firstName stu_date
1 Preet 2005-05-24
2 Dhruv 2001-06-14
3 Mathew 2020-12-13
4 Jeet 2003-05-14
5 Steyn 2002-07-19
因此,正如我們所見,安全模式
在某些情況下限制對我們資料的訪問時發揮著關鍵作用。
我們可以使用安全模式幫助限制對錶中更新和刪除的訪問。切換此模式並在我們的表格中製作版本也非常容易。
因此,使用 SET
子句和 DELETE
語句進行更新,我們可以有效地瞭解 MySQL 中安全模式的使用。
下面是一些有助於更好地學習該概念的其他相關主題。
- MySQL 中的
SET
子句。 - MySQL 中的
DELETE
語句。