gpt4 book ai didi

MySQL数据库操作

转载 作者:行者123 更新时间:2023-11-29 10:34:00 25 4
gpt4 key购买 nike

如果我想从 mysql 数据库读取表 ID 以便将其添加到写入操作中,我需要执行两个查询吗?或者有没有办法在使用mysql时只执行一个?根据经验,您很少需要两个查询,但单个操作不应超过两个查询,对吗?

最佳答案

我可以使用一个查询吗?

当您说“table id”时,我想您指的是表的id列...无需使用两个查询。您可以使用一个查询,如果您愿意,还可以一次插入多条记录(推荐)。

示例:将 products 列表中的两个产品作为订单的新条目(order_id 为 37)插入到 orders 表中。每个 product_id(2、3)将根据指定的 product_code 值(6587、resp. 9678)从 products 表中读取.

INSERT INTO orders (
order_id,
product_id
) VALUES (
37,
(SELECT id FROM products WHERE product_code = 6587)
), (
37,
(SELECT id FROM products WHERE product_code = 9678)
)

其中表具有以下结构:

CREATE TABLE `products` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`product_code` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

CREATE TABLE `orders` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`order_id` int(11) DEFAULT NULL,
`product_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

并且表products具有以下值:

INSERT INTO `products` (`id`, `product_code`)
VALUES
(1,'1234'),
(2,'6587'),
(3,'9678'),
(4,'5676');

orders 表中的结果将如下所示:

id  order_id    product_id
--------------------------
1 37 2
2 37 3

经验法则

我也从未听说过这样一个关于操作所需查询数量的规则。无论如何,这些是我严格遵守的一些主要规则:

  • 如果您有机会仅使用一个查询来实现特定的数据访问操作(即使它变得非常复杂),那么请毫不犹豫地这样做。只要有机会,就让数据库引擎发挥最大作用,即使“分块”数据库操作并受益于某些编程语言的功能来运行它们似乎更容易。
  • 利用良好设计的索引。它们在速度优化方面非常强大。使用EXPLAIN来检查它们。
  • 以这样的方式设计表格,以便在其中找不到冗余数据。例如,与上面的示例类似,product_code 应该仅保存在 products 表中,即使也保存在 orders 中可能有意义 表。
  • 在一个/所有数据库中的表中“标准化”您自己的命名规则。

祝你好运!

关于MySQL数据库操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46842268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com