MySQL 在MySQL中展示TRUE和FALSE值

MySQL 在MySQL中展示TRUE和FALSE值

在MySQL中,我们常常需要处理布尔型数据,例如判断一个值是否为真或假。然而,很多人会发现MySQL中并没有BOOLEAN数据类型,这该怎么办呢?本文将为您介绍在MySQL中展示TRUE和FALSE值的方法。

阅读更多:MySQL 教程

TINYINT数据类型

虽然MySQL中没有BOOLEAN数据类型,但是我们可以使用TINYINT数据类型来代替BOOLEAN。这是因为TINYINT数据类型只占用1个字节,可以存储0或1的值,正好符合TRUE(1)和FALSE(0)的概念。此外,我们还可以通过枚举类型ENUM来展示TRUE和FALSE。

使用TINYINT数据类型

下面是一个案例,假设我们需要记录一个商品是否下架,我们可以使用TINYINT数据类型来代替BOOLEAN。我们将下架的商品标记为1,没有下架的商品标记为0。在MySQL中创建表的SQL语句如下:

CREATE TABLE products (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    price DECIMAL(8,2) NOT NULL,
    is_sold TINYINT(1) NOT NULL DEFAULT 0
);

在上述代码中,我们在products表中新增了一列is_sold,该列的数据类型为TINYINT,长度为1,默认值为0。为了方便查询数据,我们可以在is_sold列上添加索引。

接着,我们往products表中插入几行数据,代码如下:

INSERT INTO products(name, price, is_sold) VALUES
('iPhone 12', 9999.99, 0),
('Mi 11', 3999.99, 1),
('Mate 40', 7999.99, 0),
('Galaxy S21', 7999.99, 1);

上述代码中,我们插入了4行数据,有两个商品已经下架了(is_sold为1),另外两个商品还在销售中(is_sold为0)。

下面是查询使用TINYINT数据类型的SQL语句:

SELECT * FROM products WHERE is_sold = 1;

上述代码表示查询已经下架的商品,它会返回如下结果:

+----+----------+--------+---------+
| id |   name   | price  | is_sold |
+----+----------+--------+---------+
|  2 |   Mi 11  | 3999.99|   1     |
|  4 |Galaxy S21| 7999.99|   1     |
+----+----------+--------+---------+

使用枚举类型ENUM

除了使用TINYINT数据类型外,我们还可以使用枚举类型ENUM来展示TRUE和FALSE。枚举类型可以存储一个固定的值集合,并且可以方便地进行检索和比较。

下面是一个案例,我们将通过枚举类型ENUM来判断一个商品是否下架。与上面的案例相同,我们依旧需要记录商品是否下架。但这一次,我们使用枚举类型来代替TINYINT数据类型。在MySQL中创建表的SQL语句如下:

CREATE TABLE products_enum (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    price DECIMAL(8,2) NOT NULL,
    is_sold ENUM('TRUE', 'FALSE') NOT NULL DEFAULT 'FALSE'
);

在上述代码中,我们新增了一列is_sold,该列的数据类型为ENUM,枚举值为TRUE和FALSE,默认值为FALSE。

接着,我们往products_enum表中插入几行数据,代码如下:

INSERT INTO products_enum(name, price, is_sold) VALUES
('iPhone 12', 9999.99, 'FALSE'),
('Mi 11', 3999.99, 'TRUE'),
('Mate 40', 7999.99, 'FALSE'),
('Galaxy S21', 7999.99,'TRUE');

上述代码中,我们插入了4行数据,有两个商品已经下架了(is_sold为TRUE),另外两个商品还在销售中(is_sold为FALSE)。

下面是查询使用枚举类型ENUM的SQL语句:

SELECT * FROM products_enum WHERE is_sold = 'TRUE';

上述代码表示查询已经下架的商品,它会返回如下结果:

+----+----------+--------+---------+
| id |   name   | price  | is_sold |
+----+----------+--------+---------+
|  2 |   Mi 11  | 3999.99|   TRUE  |
|  4 |Galaxy S21| 7999.99|   TRUE  |
+----+----------+--------+---------+

CASE语句

除了使用TINYINT数据类型和枚举类型ENUM外,我们还可以使用CASE语句来展示TRUE和FALSE值。在MySQL中,CASE语句可以根据某个条件返回不同的结果。

下面是一个案例,假设我们需要记录一个学生是否及格,我们可以使用CASE语句来代替BOOLEAN。我们将及格的学生标记为”PASS”,不及格的学生标记为”FAIL”。在MySQL中创建表的SQL语句如下:

CREATE TABLE students (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    score DECIMAL(8,2) NOT NULL
);

在上述代码中,我们创建了一个名为students的表,该表用于记录学生信息。

接着,我们往students表中插入几行数据,代码如下:

INSERT INTO students(name, score) VALUES
('小明', 85),
('小红', 60),
('小刚', 75),
('小李', 95);

上述代码中,我们插入了4行数据,每个学生的分数不同。

下面是查询使用CASE语句的SQL语句:

SELECT name, score,
CASE
    WHEN score >= 60 THEN 'PASS'
    ELSE 'FAIL'
END AS result
FROM students;

上述代码中,我们使用CASE语句根据学生的分数来返回不同的结果。如果学生的分数大于等于60,返回”PASS”,否则返回”FAIL”。这个CASE语句也会给返回结果起一个别名result。

上面的查询语句会返回如下结果:

+--------+-------+--------+
|  name  | score | result |
+--------+-------+--------+
|  小明  |  85.00|  PASS  |
|  小红  |  60.00|  PASS  |
|  小刚  |  75.00|  PASS  |
|  小李  |  95.00|  PASS  |
+--------+-------+--------+

结论

在MySQL中,我们可以使用TINYINT数据类型、枚举类型ENUM和CASE语句来展示TRUE和FALSE值。针对不同的业务需求,我们可以选择不同的方法。如果需要在代码中进行操作,则TINYINT和枚举类型ENUM会更加方便实现。如果只是简单的展示结果,则CASE语句更易于阅读和理解。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程