【SQL実践】:PostgreSQLで押さえるべき基本クエリ

2025年1月に入社したT.Nと申します。
前職でもSES会社に所属しており、約3年開発の現場に参画しておりました。
今回は覚えておいて損はないPostgreSQLの基本クエリについて
実際に現場で使用した経験を基に記事を作成することにしました。
■PostgreSQLとは
PostgreSQLとはDB(データベース)の一つで、有名なDBの一つです。
他に有名なDBだと、Oracle DatabaseやMySQLなどがありますね!
今回は基本的なクエリを説明できればと思います。
■1.ユーザの作成
◯クエリ
CREATE USER ユーザ名;
◯説明
このクエリではユーザを作成するときに使います。
また、上記のクエリではパスワードがないユーザが作成されます。
このクエリにはオプションが付けられるため、主要なオプション例を紹介します。
例1)パスワード付きユーザの作成
☆CREATE USER ユーザ名 WITH PASSWORD ‘password’;
このオプションではログインする時にパスワード「password」を入れる必要があります。
パスワードが必要なときに上記のオプションで作成します。
例2)DBを作成する事ができるユーザを作成
☆CREATE USER ユーザ名 WITH PASSWORD ‘password’ CREATEDB;
このオプションを付与することでユーザがDBを作成できる様になります。
上記のようにパスワードを設定したり、DB作成の権限を付与したり、
まだまだオプションは存在しますが、今回は基本的なクエリの紹介なのでここまでにします!
■2.ロールの作成
◯クエリ
CREATE ROLE ロール名;
◯説明
このクエリでは名前の通りロール=役割を作成するときに使います。
また、上記のクエリではログイン不可のロールが作成されます。
作成したときにデフォルトでログイン可能なのがユーザ、ログイン不可なのがロールになります。
※ロールですが、オプションでLOGINを付与すればログイン可能になります。
一応ロールとユーザについては明確に使い分けることが推奨されていますが、
現場によっては、ロールとユーザどちらかに統一して運用しているところもあります。
ユーザ/ロールの作成が必要になった際は、一度現場に相談しましょう!!
オプション内容はユーザの作成と似ているため、割愛します。
■3.テーブルの作成
◯クエリ
CREATE TABLE テーブル名 (
カラム名 データ型)
◯説明
このクエリはテーブルを作成するときに使います。
()括弧内にテーブルのカラム名とそのデータ型を指定します。
複数のカラムを設定したい場合、「,(コンマ)」を付けて追記していきます。
テーブルがどういう形式で定義されるのかについて説明します。
テーブルイメージ例)
☆CREATE TABLE テストテーブル (カラム_A 文字列型,カラム_B 数値型)
イメージとしてExcelを想像すると良いでしょう。
この場合、ExcelのA列の名前がカラム_Aとなり、A列には文字列型のみ入れる事が出来ます。
また、B列の名前がカラム_Bとなり、B列には数値型のみ入れる事が出来ます!
このような形式でテーブルを定義できます。
■4.データを追加
◯クエリ
INSERT INTO データを追加するテーブル VALUES (挿入するデータ);
◯説明
このクエリは定義されているテーブルに対してデータを追加するときに使います。
※複数行追加することも可能ですが、1行未満を追加することは出来ません。。
「3.テーブルの作成」で使用したテーブルイメージに対応するクエリを書いてみます!
テーブルイメージに対応するクエリ例)
☆INSERT INTO テストテーブル VALUES (‘test’,123)
先程のExcelイメージの続きになりますが、A列1行目にtestの文字列が挿入され、
B列1行目に123の数字が挿入されました!
■5.テーブルのデータを更新
◯クエリ
UPDATE テーブル名 SET カラム名 = 更新後の値 WHERE カラム名 = 更新前の値;
◯説明
このクエリは定義されているテーブルの対象カラムを更新するときに使います。
変更されるべき列のみをSET句に指定する必要があります。
SET句にて明示的に指定されなかった列の値は変更されません。
「4.データを追加」で挿入したデータを更新してみましょう。
テーブルイメージに対応するクエリ例)
☆UPDATE テストテーブル SET カラム_A = ‘hoge’ WHERE カラム_A = ‘test’;
この場合、カラム_Aにあるtestという文字列がhogeに更新されています。
再度Excelイメージになりますが、現在A列1行目にhogeの文字列があり、
B列1行目には123の数字が入っている状態になります。
■6.削除
◯クエリ
DROP TABLE テーブル名;
◯説明
このクエリは定義したテーブルを削除するときに使います。
テーブル所有者、スキーマ所有者、スーパーユーザのみがテーブルを削除できます。
一度削除すると復旧が難しいため、使用する前に必ず現場上長に確認しましょう!!
このクエリにはオプションが付けられるため、主要なオプション例を紹介します。
例1)存在する場合に削除する
☆DROP TABLE IF EXISTS テーブル名;
このオプションを使うと、存在しないテーブルを指定した場合にエラーになりません。
その場合、警告メッセージが出力されます。
例2)削除するテーブルに依存しているオブジェクトを削除します。
☆DROP TABLE テーブル名 CASCADE;
このオプションを使うと、依存するオブジェクトも自動的に削除されます。
また、このオプションを使用しないと依存しているオブジェクトがある場合に、
テーブルの削除を拒否されます。
いくつか基本的なクエリを紹介致しました。
データベースを触る際は、バックアップを取得し、現場に相談してから作業しましょう!
PostgreSQLは無償で使用できるため、一度インストールしてみて、
今回の記事内容を参考に動かしてみるのも良いと思います!