PostgreSQLでCRUDのクエリを書こう①

お疲れ様です。今日はPostgreSQLについて紹介します。PostgreSQLは1996年に市場に出てから多くの参考書や動画で色々説明しているので詳しい説明は省きます。

知っておくべきことを順番にまとめたので分からないところは自分で調べてください。

PostgreSQLがインストールされているところまで進めてもらえると分かりやすいです。

PostgreSQLってなに?

リレーショナルデータベースのことです。

SQLのクエリを使ってデータベースを操作することができます。

テーブルって何?

MSのエクセルやスプレッドシートをイメージしてください。

テーブルはカラム(行)とロウ(段)でできています。そこにデータが保管されます。

PgAdmin4

PgAdmin4はPostgreSQLが提供するUIツールです。ここでデータベースの操作を画面を使って操作できます。PostgreSQLのインストールの際に一緒にインストールしたかと思います。

スキーマ(Schema)って何?

テーブルをまとめているものです。

なぜSQLを書く必要があるの

もし、UIパネルから同じことができるならなぜSQLを書く必要があるのでしょうか?

それは、PythonなどでPosgreSQLに指示をする際にコードで書いてあげないといけないからです。

これらを自動化するためにはやはりクエリを覚えておかないといけないのですね。

SQLを書く

では、PgAdmin4からQueryToolを開きましょう。

;(セミコン)を忘れない

;(セミコロン)はクエリの最後に必ずつけます。これでクエリが終わりであることを宣言してあげます。

これがないとエラーが出るので忘れないように。

テーブルを作る

では、クエリツールを開いたら下記のようにクエリを書いていきます。プロフィールのテーブルを例とします。

CREATE TABLE profile(
	id SERIAL PRIMARY KEY,
	name VARCHAR(255),
	email VARCHAR(255),
	password VARCHAR,
	age INT
);

SQLの世界では、CREATE TABLEやPRIMARY KEYなどのキーワードは大文字で書きます。(大文字でなくても実行できますが)

テーブルに関係するもの、自分で命名したもの(カラム名など)は小文字で書きます。

この場合、id、name、email、password、ageはカラム名になります。その右にあるのがデータタイプです。

VARCHARはストリング(文字、テキスト)のデータタイプになります。(255)は最大で255文字まで入力できるという事になります。

INTは数字のデータになります。

指定した以外のデータはそれぞれのカラムに入力できないようになっています。

SERIALはデータが作成されるとデータベース側で自動で数字が+1されます。

PRIMARY KEYはユニークなデータで他のデータと被らないものになります。

クエリを実行する

では、クエリツールの再生ボタンを押して、書いたクエリを実行します。

※テーブルを作成するデータベースが選択されていることを確認してね。

サクセス(成功)の返事が返ってきました。ありがとう。

作成したテーブルを見る

では、スキーマの下にTable(テーブル)があるのでそれをクリックして先ほど作成したProfileテーブルを右クリックしてViewを押し、表示させます。

データが空のテーブルが表示されました!

テーブル名は慣習的にsの付かない単数形で記載することが多いです。なのでprofilesではなくprofileになります。(どっちでもいいんだけどね)

ユーザーテーブルを作成する

では、先ほどのProfileテーブルを削除します。単純にテーブルのアイコンを右クリックしてDelete/Dropを押すだけです。データがある場合はそれも全部消えてしまいます。

次にユーザーテーブルを同じクエリで作成してみます。

CREATE TABLE 'user'(
	id SERIAL PRIMARY KEY,
	name VARCHAR(255),
	email VARCHAR(255),
	password VARCHAR,
	age INT
);

ここで気が付いてほしいのが”user”とダブルクオーテーションで囲っていることです。userやtableはpostgresのキーワードなので、このようにキーワードをストリングにしてあげないといけないのですね。

ちなみにシングルクォーテーションではエラーが出ます。

データを追加する

では下記のようにデータを追加するクエリを書きます。

INSERT INTO "user" (email, name, age, password) VALUES ('asameshi@code.com', 'Dan', 30, 'himitsu');

VALUESの後に、指定した順に、データを教えてあげます。ストリングのデータはシングルクオートで囲ってあげます。ここはダブルクォーテーションだとエラーが出ます。

で、実行してあげると同じようにテーブルにデータが追加されました。

IDも自動で追加されましたね。

データを表示させる

では追加したデータを表示させる(選択する)クエリを書きます。

SELECT * FROM "user"

SELECTは選ぶ、*はすべてのカラム(データ全部)をという意味になります。FROMでテーブルを指定してあげていますね。

SELECT name, email FROM "user"

これで選択したカラムだけのデータが表示されますね。

条件を指定したい場合はWHEREを使います。

SELECT * FROM "user" WHERE name = 'Pochi';

名前がPochiのカラムだけを表示させます。

SELECT * FROM "user" WHERE id > 1
IDが1よりも大きいデータが返ってきます。

データを修正する

ではUPDATEとSETを使ってデータをアップデートしていきます。

UPDATE "user" SET age = 30;

このままだとすべてのデータがage = 30になってしますので条件を指定してあげます。

UPDATE "user" SET age = 30 WHERE id = 1;

他のプログラミング言語だと=と==で変数にデータを割り当てるのか、それともデータが等しいのか区別します。SQLの場合はSETやWHEREのキーワードで区別するので覚えておきましょう。

データを削除する

DELETEのキーワードでデータを削除しましょう。

全部消したい場合はこれね。
DELETE FROM "user" 

条件を指定しましょう。
DELETE FROM "user" WHERE id = 2;

これでCRUD(Create,Read,Update,Delete)のデータ操作ができました。

では、今日はここまで!

次回では基本に入るので是非読んでください。

1 thought on “PostgreSQLでCRUDのクエリを書こう①”

Comments are closed.