开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 20 天,点击查看活动详情
难度评分
难度评分:⭐
题目
题目详情请点击下述链接,这里就不做介绍。
Create Table
创建名为products
的MySQL数据库表:
该表包含三个列:
product_id
:一个整数类型的列,不为空,主键。low_fats
:一个枚举类型的列,可选值为"Y"
或"N"
,默认值为NULL。recyclable
:一个枚举类型的列,可选值为"Y"
或"N"
,默认值为NULL。 该表使用InnoDB
引擎,字符集为utf8
。
CREATE TABLE `products` (
`product_id` int(50) NOT NULL,
`low_fats` enum('Y','N') DEFAULT NULL,
`recyclable` enum('Y','N') DEFAULT NULL,
PRIMARY KEY (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Insert
插入内容不作额外解释,内容均来自于题目示例的情况。
INSERT INTO `products`(`product_id`, `low_fats`, `recyclable`) VALUES (0, 'Y', 'N');
INSERT INTO `products`(`product_id`, `low_fats`, `recyclable`) VALUES (1, 'Y', 'Y');
INSERT INTO `products`(`product_id`, `low_fats`, `recyclable`) VALUES (2, 'N', 'Y');
INSERT INTO `products`(`product_id`, `low_fats`, `recyclable`) VALUES (3, 'Y', 'Y');
INSERT INTO `products`(`product_id`, `low_fats`, `recyclable`) VALUES (4, 'N', 'N');
SQL
该查询将返回一个列表,该列表是:包含所有同时满足以下条件的产品ID,它必须满足
low_fats
列为"Y"
recyclable
列为"Y"
所以用AND
连接查询条件。
SELECT product_id FROM products WHERE low_fats = 'Y' AND recyclable = 'Y';
备注
这是一道普通的sql
查询题,唯一的小点在于WHERE
中的连接运算符,要分清OR
条件和AND
条件。
额外补充:
枚举类型
创建表的时候有一个特殊的类型enum('值','值',...)
,这个列属性适合一些固定的值。
注意:现今许多数据库,包括 MySQL 和 SQL Server,都支持 ENUM 数据类型。(来自最新官网内容,因为会有帖子说枚举类型是受限,只有在部分数据库中支持)
ENUM
值指定为字符串,但是存储时,为了紧凑存储在存储时会自动编码为数字。(这一段总结话引自互联网)。
例如,在上面提供的示例中,'Y'和'N'是可选值。在存储值时,'Y'会被编码为1,'N'会被编码为0。
所以下述SQL
一样正确。
SELECT product_id FROM products WHERE low_fats = 1 AND recyclable = 1;