MySQL INSERT INTO 查询:如何在表中添加行(示例)
INSERT INTO 是什么?
插入 用于在表中存储数据。 INSERT 命令在表中创建一个新行来存储数据。 数据通常由在数据库上运行的应用程序提供。
基本语法
让我们看一下 INSERT INTO 的基本语法 MySQL 命令:
INSERT INTO `table_name`(column_1,column_2,...) VALUES (value_1,value_2,...);
点击这里
- INSERT INTO `table_name` 是告诉的命令 MySQL 服务器在名为“table_name”的表中添加新行。
- (column_1,column_2,…)指定新表中要更新的列 MySQL 行
- VALUES (value_1,value_2,…) 指定要添加到新行的值
在提供要插入到新表中的数据值时,应考虑以下几点:
- 字符串数据类型——所有字符串值都应用单引号括起来。
- 数字数据类型 - 所有数字值都应直接提供,而不必用单引号或双引号括起来。
- 日期数据类型 - 将日期值括在单引号中,格式为“YYYY-MM-DD”。
计费示例:
假设我们有以下需要添加到数据库的新库成员列表。
全名 | 出生日期 | 性别 | 实际地址 | 邮寄地址 | 联络号码 | 电子邮件 |
---|---|---|---|---|---|---|
伦纳德·霍夫施塔特 | (男) | 桂园 | 0845738767 | |||
谢尔顿·库珀 | (男) | 桂园 | 0976736763 | |||
拉杰什·库斯拉帕利 | (男) | 锦绣 | 0938867763 | |||
莱斯利·温克尔 | 14/02/1984 | (男) | 0987636553 | |||
霍华德·沃洛维茨 | 24/08/1981 | (男) | South Park | PO 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。这是因为该值将被视为数值,开头的零 (0) 会被删除,因为它不重要。
为了避免此类问题,必须将值括在单引号中,如下所示 -
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Sheldon Cooper','Male','Woodcrest', '0976736763');
在上述情况下,零(0)不会被删除
更改列的顺序对 INSERT 查询没有影响 MySQL 只要正确的值被映射到正确的列。
下面的查询证明了上述观点。
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 插入语句。如果我们为表中的所有列提供值,那么我们可以省略 MySQL 插入查询。
例子:-
INSERT INTO `members` VALUES (9,'Howard Wolowitz','Male','1981-08-24', 'SouthPark','P.O. Box 4563', '0987786553', 'lwolowitz[at]email.me');
现在让我们使用 选择语句 查看成员表中的所有行。
SELECT * FROM `members`;
会员号码 | 全名 | 性别 | 出生日期 | 实际地址 | 邮寄地址 | 联系电话 | |
---|---|---|---|---|---|---|---|
1 | 珍妮特琼斯 | (女) | 21-07-1980 | 第一街 4 号地块 | 私人包 | 0759 253 542 | janetjones@yagoo.cm |
2 | 珍妮特·史密斯·琼斯 | (女) | 23-06-1980 | 梅尔罗斯 123 | 无 | 无 | jj@fstreet.com |
3 | 罗伯特·菲尔 | (男) | 12-07-1989 | 第三街 3 | 无 | 12345 | rm@tstreet.com |
4 | 格洛丽亚·威廉姆斯 | (女) | 14-02-1984 | 第二街 2 | 无 | 无 | 无 |
5 | 伦纳德·霍夫施塔特 | (男) | 无 | 桂园 | 无 | 845738767 | 无 |
6 | 谢尔顿·库珀 | (男) | 无 | 桂园 | 无 | 0976736763 | 无 |
7 | 拉杰什·库斯拉帕利 | (男) | 无 | 桂园 | 无 | 0938867763 | 无 |
8 | 莱斯利·温克尔 | (男) | 14-02-1984 | 桂园 | 无 | 0987636553 | 无 |
9 | 霍华德·沃洛维茨 | (男) | 24-08-1981 | 南方公园 | PO 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`))
执行上述脚本来创建表。
现在让我们将类别表中的所有行插入到类别存档表中。下面显示的脚本可帮助我们实现此目的。
INSERT INTO `categories_archive` SELECT * FROM `categories`;
执行上述脚本会将类别表中的所有行插入类别存档表。请注意,表结构必须相同,脚本才能正常工作。更强大的脚本是将插入表中的列名映射到包含数据的表中的列名。
下面显示的查询演示了它的用法。
INSERT INTO `categories_archive`(category_id,category_name,remarks) SELECT category_id,category_name,remarks FROM `categories`;
执行 SELECT 查询
SELECT * FROM `categories_archive`
给出如下所示的结果。
类别编号 | CATEGORY_NAME | 备注 |
---|---|---|
1 | 喜剧 | 幽默电影 |
2 | 浪漫 | 爱情故事 |
3 | 史诗 | 故事古装电影 |
4 | 恐怖 | 无 |
5 | 科幻小说 | 无 |
6 | 惊悚 | 无 |
7 | 操作 | 无 |
8 | 爱情喜剧 | 无 |
9 | 卡通 | 无 |
10 | 卡通 | 无 |
PHP 示例:插入 MySQL 表
mysqli_query 函数用于执行 SQL 查询。
SQL 插入表函数可用于执行以下查询类型:
- 插页
- 选择
- 更新
- 删除
它具有以下语法。
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://www.guru99.com/','1000')"; if (mysqli_query($conn, $sql)) { echo "New record created successfully".'<br>'; } else { echo "Error: " . $sql. "<br>" . mysqli_error($conn); } }
总结
- INSERT 命令用于将新数据添加到表。执行该命令后,MySql 将添加新行。
- 日期和字符串值应该用单引号引起来。
- 数值不需要用引号引起来。
- INSERT 命令还可用于将数据从一个表插入到另一个表中。