PostgreSQL - 文法

こんにちは、未来のデータベース魔术師たち!今日は、PostgreSQLの魔法のような世界に飛び込みます。プログラミングが初めての方でも心配しないでください – この冒険のなかであなたの親切な案内者になるつもりです。では、virtual wand(キーボード)を手にとって、始めましょう!

PostgreSQL - Syntax

SQL 文

PostgreSQLの具体的な内容に飛び込む前に、SQL文について一般的に話しましょう。SQL、すなわち構造化クエリ言語は、データベースの魔法の本に相当します。これは、データベースとコミュニケーションを取り、思い通りに操作するための言語です。

基本構造

SQL文は通常、以下の構造に従います:

COMMAND action_to_perform
[ON object]
[WHERE conditions];

これを分解しましょう:

  1. COMMAND:あなたが行いたいこと(SELECT、INSERT、UPDATEなど)
  2. action_to_perform:コマンドで何をしているかを指定します
  3. ON object:オプションで、どのデータベースオブジェクトを操作しているかを指定します
  4. WHERE conditions:オプションで、特定の条件を設定します

以下に簡単な例を示します:

SELECT first_name, last_name
FROM employees
WHERE department = 'IT';

この魔法...つまり、ステートメントでは:

  • SELECTは私たちのコマンドです
  • first_name, last_nameは取得したい情報です
  • FROM employeesはどのテーブルからデータを取得するかを示します
  • WHERE department = 'IT'は私たちの条件で、IT部門の従業員をフィルタリングします

PostgreSQL SQL コマンド

基本をカバーしたので、具体的なPostgreSQLコマンドを見てみましょう。これらはSQL spellbookの異なる魔法に相当します!

データ定義言語(DDL)コマンド

これらのコマンドは、データベースオブジェクトの構造を定義および修正するために使用されます。

コマンド 説明
CREATE 新しいデータベースオブジェクトを作成します CREATE TABLE students (id INT, name VARCHAR(50));
ALTER 存在するデータベースオブジェクトを修正します ALTER TABLE students ADD COLUMN age INT;
DROP データベースオブジェクトを削除します DROP TABLE students;
TRUNCATE テーブルからすべてのデータを削除します TRUNCATE TABLE students;

CREATEの詳細な例を見てみましょう:

CREATE TABLE wizards (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
house VARCHAR(50),
wand_type VARCHAR(50),
enrollment_date DATE
);

これは、id、name、house、wand_type、enrollment_dateの列を持つ't Wizards'テーブルを作成します。idのSERIAL型は、新しいエントリごとに自動的にインクリメントされます。

データ操作言語(DML)コマンド

これらのコマンドは、テーブル内のデータを操作するために使用されます。

コマンド 説明
SELECT 1つまたは複数のテーブルからデータを取得します SELECT * FROM wizards;
INSERT テーブルに新しいデータを追加します INSERT INTO wizards (name, house) VALUES ('Harry Potter', 'Gryffindor');
UPDATE テーブル内の既存データを修正します UPDATE wizards SET house = 'Slytherin' WHERE name = 'Draco Malfoy';
DELETE テーブルからデータを削除します DELETE FROM wizards WHERE name = 'Voldemort';

より複雑なSELECT文の例を見てみましょう:

SELECT w.name, w.house, s.subject
FROM wizards w
JOIN subjects s ON w.id = s.wizard_id
WHERE w.house = 'Ravenclaw'
ORDER BY w.name;

このクエリは:

  1. Wizardsの名前とhouse、そして科目を取得します
  2. Wizardsテーブルとsubjectsテーブルを結合します
  3. Ravenclawの学生にフィルタリングします
  4. Wizardの名前順に並べ替えます

データ制御言語(DCL)コマンド

これらのコマンドは、データベースのアクセスと権限を制御するためのものです。

コマンド 説明
GRANT ユーザーに特定の権限を与えます GRANT SELECT ON wizards TO student_user;
REVOKE ユーザーから特定の権限を削除します REVOKE INSERT ON wizards FROM student_user;

トランザクション制御コマンド

これらのコマンドは、トランザクション - 同時に実行されるはずのSQLステートメントのグループ - を管理するために使用されます。

コマンド 説明
BEGIN トランザクションを開始します BEGIN;
COMMIT トランザクションの変更を保存します COMMIT;
ROLLBACK トランザクションの変更を撤回します ROLLBACK;

以下は実際にこれらを使用する方法の例です:

BEGIN;
UPDATE account SET balance = balance - 100 WHERE id = 1;
UPDATE account SET balance = balance + 100 WHERE id = 2;
COMMIT;

このトランザクションは、口座1から口座2に100ユニットを移動します。もしこれのどの部分も失敗した場合、ROLLBACKを使用してすべての変更を撤回できます。

ユーティリティコマンド

PostgreSQLにはいくつかの便利なユーティリティコマンドもあります:

コマンド 説明
EXPLAIN ステートメントの実行計画を表示します EXPLAIN SELECT * FROM wizards;
VACUUM ゴミ収集およびオプションでデータベースを分析します VACUUM wizards;

EXPLAINコマンドは特に便利で、クエリを最適化するのに役立ちます。まるで水晶玉でクエリの実行計画を見ることができるかのようです!

EXPLAIN SELECT * FROM wizards WHERE house = 'Hufflepuff';

これは実行計画を表示し、PostgreSQLがクエリをどのように処理しているかを理解するのに役立ちます。最適化できる場所を探します。

そして、若いSQLの弟子たち!私たちはPostgreSQLの基本構文とコマンドをカバーしました。SQLをマスターするには練習が必要です。実験を恐れず、さまざまなコマンドを試してみてください。間もなく、複雑なクエリを簡単に生成できるようになるでしょう!

次回は、データベース設計と高度なクエリの不思議な芸術に深く踏み込みます。それまでに、あなたのクエリが迅速で結果が豊富でありますように!

Credits: Image by storyset