MySQL 中的安全模式

Preet Sanghavi 2023年1月30日 MySQL MySQL Mode
  1. 使用 INSERT 语句在 MySQL 的表中插入条目
  2. 在 MySQL 中打开安全模式
  3. 在 MySQL 中关闭安全模式
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 中安全模式的使用。

下面是一些有助于更好地学习该概念的其他相关主题。

  1. MySQL 中的 SET 子句。
  2. MySQL 中的 DELETE 语句。
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub