Supabase を使う際に知っておくと便利な SQL コマンド
こんにちは、皆さん。バックエンドの知識がない私ですが、最近 Supabase を使ってユーザー投稿型のアプリケーションを開発していて、SQL コマンドに助けられる場面が本当に多いと思っています。
特に、ちょっとテーブルの構造を確認したいとか、RLS ポリシーを確認したいとか。そういうときにパッと使える便利なコマンドをここにまとめておきました。
任意のテーブルを確認する
特定のテーブルのカラム情報を確認するには、このコマンドが役に立ちます。テーブル名を指定することで、そのテーブルのカラム名、データ型、NULL 許容かどうか、デフォルト値などの情報を取得できます。
すべての RLS ポリシーを表示する
RLS(Row-Level Security)のポリシーをすべて確認するには、このコマンドを使います。これにより、スキーマ名、テーブル名、ポリシー名、コマンドなどの情報が一覧表示されます。
テーブルに新しいカラムを追加する
例えば、posts
テーブルに pickup
という boolean 型のカラムを追加したい場合、以下のコマンドを使います。デフォルト値は false
に設定されています。
全てのテーブル構造と外部キー情報を含む全テーブルの情報を取得する
全てのテーブルの構造や外部キー情報を確認するのに役立つコマンドです。データベース内のすべてのテーブルについて、カラムの情報や関連する外部キーの詳細を取得できます。
外部キー(FOREIGN KEY)を設定する
外部キーは、他のテーブルの主キー(PRIMARY KEY)を参照することで、テーブル同士の関係性を保つ制約です。例えば、comments
テーブルが posts
テーブルを参照するように外部キーを設定することができます。
この例では、comments
テーブルの post_id
カラムが posts
テーブルの id
カラムを参照する外部キーを設定しています。また、ON DELETE CASCADE
によって、参照先の posts
レコードが削除されたときに、関連する comments
のレコードも自動で削除されるようになっています。
INSERT(インサート)
INSERT は、新しい行をテーブルに挿入するためのコマンドです。例えば、新しい投稿を posts
テーブルに追加したい場合、以下のように書きます。
UPDATE(アップデート)
UPDATE は、テーブル内の既存の行を更新するために使います。特定の投稿のタイトルを変更したい場合、次のように書きます。
DELETE(デリート)
DELETE は、テーブル内の行を削除するためのコマンドです。特定の投稿を削除するには、以下のようにします。
SELECT(セレクト)
SELECT は、テーブルからデータを取得するために使います。すべての投稿を取得したい場合、以下のように書きます。
WHERE(ウェア)
WHERE は、クエリの結果をフィルタリングする条件を指定するために使用します。特定のユーザーの投稿を取得したい場合、以下のように書きます。
AND(アンド)
AND は、複数の条件を組み合わせてクエリを絞り込む際に使用します。例えば、特定のユーザーの投稿で、かつ作成日が特定の日付以降のものを取得したい場合です。
OR(オア)
OR は、複数の条件のいずれかが成立する場合に結果を返します。例えば、ユーザー ID が 1 または 2 の投稿を取得したい場合、以下のように書きます。
IN(イン)
IN は、指定した値のいずれかに一致する行を返します。例えば、ユーザー ID が 1 または 2 の投稿を取得するには、以下のように書けます。
BETWEEN(ビトウィーン)
BETWEEN は、指定した範囲内の値に一致する行を返します。例えば、特定の期間内に作成された投稿を取得したい場合、次のように書きます。
おわりに
こういった SQL コマンドを知っておくと、Supabase での開発が格段にスムーズになります。特にデータベース構造をよく理解しながら開発することができるので、エラーも減って生産性も向上しますよね。これからも Supabase を使ってどんどん開発を進めていく中で、新しい便利なコマンドがあればどんどんシェアしていきますね。