MST

星途 面试题库

面试题:MariaDB动态列在复杂查询中的应用

在一个使用MariaDB动态列存储产品不同特性的数据库中,已知产品表名为products,动态列存储产品特性。现在需要查询所有具有'waterproof'特性且特性值为'yes'的产品,同时要查询出这些产品的其他特性。请编写相应的SQL查询语句,并解释查询的逻辑和动态列在其中的作用。
47.7万 热度难度
数据库MariaDB

知识考点

AI 面试

面试题答案

一键面试

SQL查询语句

SELECT *
FROM products
WHERE JSON_EXTRACT(features, '$.waterproof') = 'yes';

查询逻辑解释

  1. SELECT *:表示选择products表中的所有列,即除了获取waterproof特性及值为yes外,同时获取这些产品的其他所有特性列。
  2. FROM products:指定要查询的表为products表。
  3. WHERE JSON_EXTRACT(features, '$.waterproof') = 'yes':使用JSON_EXTRACT函数从features这个动态列(假设动态列名为features,存储格式为JSON)中提取waterproof特性的值,并判断其是否等于yes,以此筛选出符合条件的产品记录。

动态列的作用

在这个场景中,动态列(如以JSON格式存储的列)允许在数据库表的单个列中存储多个不同的特性信息。相比传统的设计方式(为每个特性创建一个单独的列),动态列存储方式更加灵活,尤其适用于产品特性数量不固定或者特性结构较为复杂的情况。它可以减少数据库表结构的变更频率,当有新的产品特性出现时,无需修改表结构,直接在动态列中添加新的特性 - 值对即可。