SQLite データベースの Boolean データ型
SQLite データベースは、組み込みのファイルベースのリレーショナル データベース管理システム (RDBMS) であり、C プログラミング言語で記述されています。 これは、すぐに使えるライブラリの形で利用できます。
ファイルベースのデータベースは、すべてのデータベースとテーブルを格納する単一のファイルを作成します。
SQLite は軽量のデータベースであるため、PostgreSQL や MySQL などの同等のデータベースと比較して、さまざまな制限があります。 たとえば、SQLite は効率的なアクセスを提供しない、スケーラビリティに欠ける、マルチユーザー機能がない、データベース サイズの制約がある、巨大なテーブルの処理が遅い、最小限のセキュリティ、ストアド プロシージャがない、基本的なデータ型などがあります。
SQLite には、基本的なデータ型である Boolean もありません。 この記事では、既存のデータ型を使用して Boolean データ型を実装する方法を説明します。
SQLite データベースの Boolean データ型
SQLite データベースは Boolean データ型をサポートしていません。 ただし、SQLite データベースでブール値を表すには 2つの方法を使用できます。
Boolean データ型を整数として表す
ブール値フィールドは、true
と false
の 2つの値のみを持つことができます。 整数を使用して、true
を 1
として、false
を 0
として表すことができます。
これは、文字列を処理するのに時間がかかり、ストレージにより多くのスペースを占有するため、文字列を使用するよりもブール値を表現するための優れたアプローチです。 0
と 1
の 2つの値が必要なため、ブール型フィールドは 1 ビットでも表すことができます。
例については、次の SQL スクリプトを参照してください。
-- creating a table
CREATE TABLE students (
id INT NOT NULL,
name VARCHAR(100) NOT NULL,
age INT NOT NULL,
international_student INT NOT NULL
);
-- inserting some data into the old table
INSERT INTO students VALUES (1, "Stefan", 13, 1);
INSERT INTO students VALUES (2, "Damon", 14, 0);
INSERT INTO students VALUES (3, "Elena", 12, 1);
INSERT INTO students VALUES (4, "Caroline", 12, 1);
INSERT INTO students VALUES (5, "Bonnie", 13, 0);
-- printing table
SELECT "Students";
SELECT "--------";
SELECT * FROM students;
出力:
Students
--------
1|Stefan|13|1
2|Damon|14|0
3|Elena|12|1
4|Caroline|12|1
5|Bonnie|13|0
Boolean データ型を文字列として表す
true
を "true"
として、false
を "false"
として文字列で表すことができます。 その他の表現スタイルは、T/F
、TRUE/FALSE
、および True/False
です。
例については、次の SQL スクリプトを参照してください。
-- creating a table
CREATE TABLE students (
id INT NOT NULL,
name VARCHAR(100) NOT NULL,
age INT NOT NULL,
international_student VARCHAR(5) NOT NULL
);
-- inserting some data into the old table
INSERT INTO students VALUES (1, "Stefan", 13, "true");
INSERT INTO students VALUES (2, "Damon", 14, "false");
INSERT INTO students VALUES (3, "Elena", 12, "true");
INSERT INTO students VALUES (4, "Caroline", 12, "true");
INSERT INTO students VALUES (5, "Bonnie", 13, "false");
-- printing table
SELECT "Students";
SELECT "--------";
SELECT * FROM students;
出力:
Students
--------
1|Stefan|13|true
2|Damon|14|false
3|Elena|12|true
4|Caroline|12|true
5|Bonnie|13|false