MySQL中的子查询,最好最全的子查询分类

本文深入探讨了MySQL中的四种子查询类型:表格子查询、柱状子查询、行子查询和标量子查询,通过实例解析了它们在SQL语句中的应用,包括在WHERE、JOIN等场景下的使用,帮助读者更好地理解和掌握子查询的用法。
摘要由CSDN通过智能技术生成

🍃 1. 子查询表达式有四种类型,分别为表格(tabular)、柱形(columnar)、(row)、和标量(scalar)。

🍃 2. 表格子查询:子查询返回一张表,该子查询必须出现在SQL-92中规定的使用位置,即出现在FROM子句中。

🍃 3. 柱状子查询:子查询返回一张仅包含一列的表,这是原SQL-86和SQL-89中的一种重要类型,因为IN<比较操作符>ALL<比较操作符>{ANY|SOME}谓词,将单个列转换成一列由AND或者OR连接的比较运算的语言能力。

🍃 4. 行子查询:行子查询返回单行。在使用行的地方都可以使用此类子查询。这种子查询是嵌入式SQL中使用的单例SELECT语句的基础。这类子查询现在用的并不多。

🍃 5. 标量子查询:标量子查询返回单个标量值。它可以用在任何可使用标量值的地方,即可用于SELECT或WHERER子句中。如果标量子查询返回空结果,则转换为NULL。如果标量子查询返回多行,将返回基数违规错误。

1. 表格子查询

🍂 表子查询:返回一张多行多列的表,可以理解其为一张一次性的视图。此种子查询出现在FROM子句中,执行的时候内部子查询优先执行
🍂子查询查询结果可以作为一张表和别表关联查询。

  • 创建产品(product)表,插入数据:⏬
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for product
-- ----------------------------
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product`  (
  `product_id` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `product_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `product_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `sale_price` int(11) NULL DEFAULT NULL,
  `purchase_price` int(11) NULL DEFAULT NULL,
  `regist_date` date NULL DEFAULT NULL,
  PRIMARY KEY (`product_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of product
-- ----------------------------
INSERT INTO `product` VALUES ('0001', 'T恤', '衣服', 1000, 500, '2009-09-20');
INSERT INTO `product` VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11');
INSERT INTO `product` VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL);
INSERT INTO `product` VALUES ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
INSERT INTO `product` VALUES ('0005', '高压锅', '厨房用具', 6800, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值