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 | |
---|---|---|---|---|---|---|---|
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 命令也可以用于将数据从一个表插入到另一个表。