MySQL INSERT INTO 查询:如何向表中添加行(示例)

什么是 INSERT INTO?

INSERT INTO 用于在表中存储数据。INSERT 命令会在表中创建一个新行以存储数据。这些数据通常由运行在数据库之上的应用程序提供。

基本语法

让我们看一下 INSERT INTO MySQL 命令的基本语法。

INSERT INTO `table_name`(column_1,column_2,...) VALUES (value_1,value_2,...);

HERE

  • INSERT INTO `table_name` 是告诉 MySQL 服务器向名为 `table_name` 的表中添加新行的命令。
  • (column_1,column_2,…) 指定了新 MySQL 行中要更新的列
  • VALUES (value_1,value_2,…) 指定了要添加到新行中的值

在为要插入新表的数据值提供数据时,应考虑以下几点:

  • 字符串数据类型 – 所有字符串值都应包含在单引号中。
  • 数值数据类型 – 所有数值都应直接提供,不包含在单引号或双引号中。
  • 日期数据类型 – 日期值应包含在单引号中,格式为“YYYY-MM-DD”。


示例

假设我们有以下新图书馆成员列表需要添加到数据库中。

全名 出生日期 性别 邮寄地址 邮政地址 联系电话 电子邮件地址
Leonard Hofstadter Male Woodcrest 0845738767
Sheldon Cooper Male Woodcrest 0976736763
Rajesh Koothrappali Male Fairview 0938867763
Leslie Winkle 14/02/1984 Male 0987636553
Howard Wolowitz 24/08/1981 Male South Park P.O. Box 4563 0987786553 lwolowitz@email.me

让我们逐一插入数据。我们将从 Leonard Hofstadter 开始。我们将把联系电话视为数值数据类型,不将其包含在单引号中。

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Leonard Hofstadter','Male','Woodcrest',0845738767);

执行上述脚本会从 Leonard 的联系电话中删除前导零。这是因为该值将被视为数值,并且开头的零 (0) 会被删除,因为它不重要。

为避免此类问题,必须将该值包含在单引号中,如下所示:

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`)  VALUES ('Sheldon Cooper','Male','Woodcrest', '0976736763');

在上面的情况下,零 (0) 不会被删除。


只要值已正确映射到相应的列,更改列的顺序对 MySQL 中的 INSERT 查询没有影响。

下面的查询演示了这一点。

INSERT INTO `members` (`contact_number`,`gender`,`full_names`,`physical_address`)  VALUES ('0938867763','Male','Rajesh Koothrappali','Woodcrest');

上述查询跳过了出生日期列。默认情况下,MySQL 会在 INSERT 查询中省略的列中插入 NULL 值。

现在让我们插入 Leslie 的记录,其中提供了出生日期。日期值应包含在单引号中,格式为“YYYY-MM-DD”。

INSERT INTO `members` (`full_names`,`date_of_birth`,`gender`,`physical_address`,`contact_number`)  VALUES ('Leslie Winkle','1984-02-14','Male','Woodcrest', '0987636553');

上面所有的查询都指定了列并将它们映射到 MySQL insert 语句中的值。如果我们为主表中的所有列提供值,那么我们可以从 MySQL insert 查询中省略列。

示例:-

INSERT INTO `members`  VALUES (9,'Howard Wolowitz','Male','1981-08-24',
'SouthPark','P.O. Box 4563', '0987786553', 'lwolowitz[at]email.me');

现在让我们使用 SELECT 语句 来查看 member 表中的所有行。

SELECT * FROM `members`;
membership_ number full_ names 性别 date_of_ birth physical_address postal_ address contct_ number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 rm@tstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter Male NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Male NULL Woodcrest NULL 0976736763 NULL
7 Rajesh Koothrappali Male NULL Woodcrest NULL 0938867763 NULL
8 Leslie Winkle Male 14-02-1984 Woodcrest NULL 0987636553 NULL
9 Howard Wolowitz Male 24-08-1981 SouthPark P.O. Box 4563 0987786553 lwolowitz@email.me

请注意,Leonard Hofstadter 的联系电话丢失了开头的零 (0)。其他联系电话没有丢失开头的零 (0)。

从另一个表插入到表中

INSERT 命令还可以用于将数据从一个表插入到另一个表。基本语法如下所示。

INSERT INTO table_1 SELECT * FROM table_2;

现在让我们看一个实际的例子。我们将创建一个用于电影类别的虚拟表。我们将新类别表命名为 categories_archive。下面的脚本 创建表

CREATE TABLE `categories_archive` (    	  `category_id` int(11) AUTO_INCREMENT,    	  `category_name` varchar(150)  DEFAULT NULL,    	  `remarks` varchar(500) DEFAULT NULL,    	  PRIMARY KEY (`category_id`))

执行上述脚本以创建表。

现在让我们将 categories 表中的所有行插入到 categories archive 表中。下面的脚本有助于我们实现这一点。

INSERT INTO `categories_archive` SELECT * FROM `categories`;

执行上述脚本会将 categories 表中的所有行插入到 categories archive 表中。请注意,脚本才能工作,表结构必须相同。更健壮的脚本是将插入表中的列名映射到包含数据的表中的列名。

下面的查询演示了它的用法。

INSERT INTO `categories_archive`(category_id,category_name,remarks)  SELECT category_id,category_name,remarks FROM `categories`;

执行 SELECT 查询

SELECT * FROM `categories_archive`

将产生如下结果。

category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 史诗 Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 行动 NULL
8 Romantic Comedy NULL
9 Cartoons NULL
10 Cartoons NULL

PHP 示例:插入到 MySQL 表

mysqli_query 函数用于执行 SQL 查询。

SQL insert into table 函数可用于执行以下类型的查询:

  • 插入
  • Select
  • 更新
  • 删除

它具有以下语法。

mysqli_query($db_handle,$query);

此处,

“mysqli_query(…)” 是执行 SQL 查询的函数。

“$query” 是要执行的 SQL 查询。

“$link_identifier” 是可选的,可以用来传递服务器连接链接。

示例

$servername = "localhost";
$username = "alex";
$password = "yPXuPT";
$dbname = "afmznf";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}

$sql= "INSERT INTO addkeyworddata(link, keyword)VALUES ('https://guru99.com.cn/','1000')";
		if (mysqli_query($conn, $sql)) {
			echo "New record created successfully".'<br>';
		} else {
		echo "Error: " . $sql. "<br>" . mysqli_error($conn);
	}
}

摘要

  • INSERT 命令用于向表中添加新数据。一旦执行了该命令,MySQL 就会添加一个新行。
  • 日期和字符串值应包含在单引号中。
  • 数值不需要包含在引号中。
  • INSERT 命令也可以用于将数据从一个表插入到另一个表。