どっこと備忘録群

アウトプットしないとインプットできない私が Androidアプリ開発をメインとした備忘録を載せています。

SQLを扱う

単一のキーをPRIMARY KEYに設定する

テーブルを作成する際に、主キーにしたいカラム名の直後にPRIMARY KEYと指定する。

create table user(id int primary key, name text);

複数のキーをPRIMARY KEYに設定する

複数のカラムを組み合わせて主キーにする場合(複合主キー)は、単一のキーの場合とは書き方が異なり、テーブル定義の最後にPRIMARY KEY節を追加する。 括弧内に主キーに設定したいカラム名をカンマ区切りで記述します。例えば、idsubIdを主キーに設定する場合は以下。

create table user(id int, subId int, value text, ..., PRIMARY KEY(id, subId));

テーブルを内部結合する (INNER JOIN)

内部結合は、結合条件に合致するレコードのみを結果として出力する。

SELECT * FROM table_a INNER JOIN table_b ON table_a.id = table_b.id

テーブルを外部結合する (OUTER JOIN)

外部結合は、結合条件に合致しないレコードもNULLとして出力する結合方法。 すべてのデータを一覧として表示したい場合などに使われる。

SELECT * FROM table_a LEFT JOIN table_b ON table_a.id = table_b.id

上記の例は左外部結合LEFT JOINまたはLEFT OUTER JOIN)。 結合の基準となる左側のテーブル(table_a)のすべてのレコードが結果に含まれ、 右側のテーブル(table_b)に対応するレコードがない場合はNULLが返される。

外部結合には右外部結合RIGHT JOIN)もありますが、基本的にはLEFT JOINを使用すれば、テーブルの順番を入れ替えることで同じ結果が得られる。

テーブルに新しいカラムを追加する

ALTER TABLE文を使う。

サンプル1: シンプルなALTER文

テーブル名カラム名を適切な値に置き換えて使用します。

alter table テーブル名 add column カラム名 型;

サンプル2: デフォルト値付き

新しいカラムにデフォルト値を設定したい場合は、DEFAULT節を追加します。

alter table テーブル名 add column カラム名 型 default 初期値;

例: userテーブルにageカラムをINT型で追加し、デフォルト値を18に設定する場合

alter table user add column age int default 18;

参考

SQL上でビット演算する

SQLで利用可能なビット演算子は以下。

論理積 (AND)

&を使って、2つの値のビットごとの論理積を計算できる。

-- 1 & 1 -> 1
select 1 & 1;

-- 1 & 0 -> 0
select 1 & 0;

論理和 (OR)

|を使って、2つの値のビットごとの論理和を計算できる。

-- 1 | 1 -> 1
select 1 | 1;

-- 1 | 0 -> 1
select 1 | 0;

-- 0 | 0 -> 0
select 0 | 0;

反転 (NOT)

~を使って、値のすべてのビットを反転する。

-- ~0 -> -1
select ~0;

-- ~1 -> 0
select ~1;

左シフト (LEFT SHIFT)

<<を使って、指定したビット数だけ左にシフトする。

-- 1 << 2 -> 4 (2進数の01が100になる)
select 1 << 2;

右シフト (RIGHT SHIFT)

>>を使って、指定したビット数だけ右にシフトする。

-- 4 >> 1 -> 2 (2進数の100が10になる)
select 4 >> 1;

最終更新: 2025.9.7