Использование логического типа данных MySQL

18.06.2021
Как установить MySQL на Ubuntu 16.04

По умолчанию MySQL не предлагает собственный логический тип данных. Однако он предоставляет нам тип данных TINYINT, позволяющий хранить логические значения — например, значения с типом TINYINT.

В этой статье основное внимание будет уделено тому, как использовать тип данных MySQL TINYINT для хранения логических значений.

 

Основное использование

MySQL определяет значение 0 как ложное и ненулевое значение как истинное. Следовательно, чтобы использовать значения логических литералов, вы используете константы TRUE и FALSE, которые оценивают значения 0 и 1.

Пример:

select TRUE, FALSE;

После выполнения вышеуказанного запроса вы получите результат, аналогичный показанному ниже:

mysql> select TRUE, FALSE;

+------+-------+

| TRUE | FALSE |

+------+-------+

|    1 |     0 |

+------+-------+

1 row in set (0.00 sec)

Из вышесказанного мы можем сделать вывод, что MySQL рассматривает 1 и 0 как True и False, соответственно.

Стоит отметить, что в качестве верхнего или нижнего регистра MySQL присваивает True и False 0 и 1, как показано в запросе ниже:

select TRUE, FALSE, true, false, True, False;

Результат показан ниже:

+------+-------+------+-------+------+-------+

| TRUE | FALSE | true | false | True | False |

+------+-------+------+-------+------+-------+

|    1 |     0 |    1 |     0 |    1 |     0 |

+------+-------+------+-------+------+-------+

1 row in set (0.00 sec)

Примеры использования

Давайте воспользуемся примером, чтобы проиллюстрировать, как мы можем использовать логический тип в MySQL.

Начните с создания базы данных и таблицы с названием languages, в которой будет храниться информация о различных языках программирования.

Внутри таблицы у нас есть следующие столбцы:

  1. ID — INT NOT NULL AUTO_INCREMENT
  2. Language_name — VARCHAR (100) NOT NULL
  3. Beginner_Friendly — BOOLEAN

Рассмотрим приведенный ниже запрос для реализации указанной выше базы данных:

CREATE DATABASE sampled;

USE sampled;

CREATE TABLE languages (

ID INT NOT NULL AUTO_INCREMENT,

Language_name VARCHAR(100),

Beginner_friendly BOOLEAN,

PRIMARY KEY (ID)

);

После выполнения вышеуказанного запроса у вас будет выборочная база данных с таблицей языков.

Чтобы получить информацию о таблице выше, мы можем использовать оператор MySQL DESC, как показано в выходных данных ниже:

mysql> DESC languages;

+-------------------+--------------+------+-----+---------+----------------+

| Field             | Type         | Null | Key | Default | Extra          |

+-------------------+--------------+------+-----+---------+----------------+

| ID                | int          | NO   | PRI | NULL    | auto_increment |

| Language_name     | varchar(100) | YES  |     | NULL    |                |

| Beginner_friendly | tinyint(1)   | YES  |     | NULL    |                |

+-------------------+--------------+------+-----+---------+----------------+

3 rows in set (0.01 sec)

Если вы посмотрите на поле Beginner_friendly, которое мы установили как Boolean при создании таблицы, теперь оно показывает Type of TINYINT.

На следующем шаге давайте добавим данные в таблицу, используя запросы, представленные ниже:

INSERT INTO sampled.languages (ID, Language_name, Beginner_friendly) VALUES(1, "Python", True);

INSERT INTO sampled.languages (ID, Language_name, Beginner_friendly) VALUES(2, "C++", False);

Если вы сейчас выберете значения в приведенной выше таблице:

mysql> select * from sampled.languages

-> ;

+----+---------------+-------------------+

| ID | Language_name | Beginner_friendly |

+----+---------------+-------------------+

|  1 | Python        |                 1 |

|  2 | C++           |                 0 |

+----+---------------+-------------------+

2 rows in set (0.00 sec)

Вы увидите, что значения установлены на 0 и 1 соответственно.

ПРИМЕЧАНИЕ. В столбце Boolean можно хранить числовые значения, отличные от значений True и False. Например, рассмотрим запрос ниже:

INSERT INTO sampled.languages (ID, Language_name, Beginner_friendly) VALUES(3, "Go Lang", 10);

Если вы выполните вышеуказанный запрос, MySQL не сообщит об ошибке. Вместо этого он сохранит числовое значение как 10. Рассмотрим результат, показанный ниже:

mysql> select * from sampled.languages;

+----+---------------+-------------------+

| ID | Language_name | Beginner_friendly |

+----+---------------+-------------------+

|  1 | Python        |                 1 |

|  2 | C++           |                 0 |

|  3 | Go Lang       |                10 |

+----+---------------+-------------------+

3 rows in set (0.00 sec)

Логические операторы MySQL

MySQL поддерживает различные логические операторы, такие как IS TRUE, IS FALSE, IS NOT TRUE, и IS NOT FALSE. По названию можно определить, что некоторые делают то же самое.

Например, IS TRUE и IS NOT FALSE похожи. То же самое относится и к другой паре.

Однако мы можем использовать эти операторы для получения набора значений True или False. Например, приведенный ниже запрос получает все значения, где Beginner_friendly — True.

mysql> select * from sampled.languages WHERE Beginner_friendly IS TRUE;

+----+---------------+-------------------+

| ID | Language_name | Beginner_friendly |

+----+---------------+-------------------+

|  1 | Python        |                 1 |

|  3 | Go Lang       |                10 |

+----+---------------+-------------------+

2 rows in set (0.00 sec)

Как видно из выходных данных, мы получаем только значения, в которых значение Beginner_friendly равно True.

Вы также можете получить значения False, используя IS TRUE или IS NOT TRUE .

mysql> select * from sampled.languages WHERE Beginner_friendly IS NOT TRUE;

+----+---------------+-------------------+

| ID | Language_name | Beginner_friendly |

+----+---------------+-------------------+

|  2 | C++           |                 0 |

+----+---------------+-------------------+

1 row in set (0.00 sec)

Заключение

В этой статье показано, как реализовать и использовать логические типы данных MySQL для хранения значений True или False.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала