PostgreSQL - 文法
こんにちは、未来のデータベース魔术師たち!今日は、PostgreSQLの魔法のような世界に飛び込みます。プログラミングが初めての方でも心配しないでください – この冒険のなかであなたの親切な案内者になるつもりです。では、virtual wand(キーボード)を手にとって、始めましょう!
SQL 文
PostgreSQLの具体的な内容に飛び込む前に、SQL文について一般的に話しましょう。SQL、すなわち構造化クエリ言語は、データベースの魔法の本に相当します。これは、データベースとコミュニケーションを取り、思い通りに操作するための言語です。
基本構造
SQL文は通常、以下の構造に従います:
COMMAND action_to_perform
[ON object]
[WHERE conditions];
これを分解しましょう:
-
COMMAND
:あなたが行いたいこと(SELECT、INSERT、UPDATEなど) -
action_to_perform
:コマンドで何をしているかを指定します -
ON object
:オプションで、どのデータベースオブジェクトを操作しているかを指定します -
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;
このクエリは:
- Wizardsの名前とhouse、そして科目を取得します
- Wizardsテーブルとsubjectsテーブルを結合します
- Ravenclawの学生にフィルタリングします
- 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