1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PostgreSQLのテーブル操作

Posted at

PostgreSQLのテーブル操作についてささっと。

今回はhogeDBにcustomerテーブルを作成し、顧客情報を挿入していく。

顧客情報は下記の3人分。

ID name age
0001 山田太郎 29
0002 中村花子 -
0003 佐藤信之 91

テーブルの土台作成

まずはhogeDBにcustomerテーブルを作成していく。
;でそれまでのプログラムが実行されるため、見やすくカラムごとに行分けするのが鉄則。

上の表をテーブルに落とし込むには、以下のコードでOK。
これを1行づつ説明していく

terminal
hoge=# CREATE TABLE Customer
hoge-# (id   char(4)   NOT NULL,
hoge(# name  varchar   NOT NULL,
hoge(# age   INTEGER   ,
hoge(# PRIMARY KEY (id));
CREATE TABLE

テーブル作成の宣言(1行目)

まずCREATE TABLE <Table name>でテーブル作成の宣言をしている

sql
CREATE TABLE Customer

カラムの設定(2~4行目)

今回はカラムがID,name,ageの3つなので、以降はそれぞれについて分かりやすく1行ずつ記述している。

書き方としては<カラム> <型> <制約>,である。1カラムごとに,で区切る。

[idカラム]

idはchar型の4文字で固定し、かつ主キーなので空白を防ぐために制約部分にはNOT NULLが入っている。

sql
id   char(4)   NOT NULL,

[nameカラム]

nameは可変文字長型のvarcharで指定し、空欄は認めてないのでNOT NULL

sql
name  varchar  NOT NULL,

[ageカラム]

ageはINTEGERにし、制約に関しては何も定めていない(空挿入も可)

sql
age   INTEGER   ,

Primary Keyの設定(5行目)

リレーショナルデータベースの概念が崩壊してしまうのでしっかりプライマリーキーを指定する。
書き方はPRIMARY KEY (<主キー>)

sql
PRIMARY KEY (id)

以上でテーブルの土台設定が終わった。

テーブルの土台確認

作ったばかりのcustomerテーブルが出来ているかをpsqlの\dコマンドで確認する

terminal
hoge=# \d
         List of relations
 Schema |   Name   | Type  |    Owner   
--------+----------+-------+-------------
 public | customer | table | sf213471118
(1 row)

テーブルにレコードを挿入する

レコードを挿入する際には2通りの方法がある

列名を指定して挿入する場合

空挿入の部分がある場合や順番の入れ替わりに便利である。
age欄が未記入であるこのレコードは以下のように記述できる。

terminal
hoge=# INSERT INTO Customer(id, name)
VALUES('0002','中村花子');
INSERT 0 1

対応していれば順番を入れ替えても大丈夫

terminal
hoge=# INSERT INTO Customer(name, id)
VALUES('加藤里子',`8888`);

列名を省略して挿入する場合

全ての値を挿入したいときに便利である。
こちらの方が楽だが、順番に全て代入していかなければならない。

terminal
hoge=# INSERT INTO Customer VALUES('0003','佐藤信之',91);
INSERT 0 1

テーブルの中身を確認する

全ての顧客レコードを挿入したので、SQL文を用いて確認する。
SELECT <column> FROM <table>;でOK。今回は一覧で見たいのでcolumn*とする。

terminal
hoge=# SELECT * FROM Customer;
  id  |   name   | age 
------+----------+-----
 0001 | 山田太郎  | 29
 0002 | 中村花子  |  
 0003 | 佐藤信之  | 91
(3 rows)

テーブルのレコードを更新する

下記のようにINSERTされたレコードを

ID name age
0002 中村花子 -

このように変更したい場合は

ID name age
0002 坂井花子 49

以下のように記述する。

sql
UPDATE <Table name> SET <column> = 'xxxxx' WHERE <Primary Key> ='vvvv';

まず 中村花子 >> 坂井花子にする。

terminal
hoge=# UPDATE Staff SET name = '坂井花子' WHERE id ='0002';
UPDATE 1

これで更新された。同じくageNULLから49にしてみる

terminal
hoge=# UPDATE Staff SET age = 49 WHERE id ='0002';
UPDATE 1

この一連の流れでできたテーブルを一応確認する

terminal
hoge=# SELECT * FROM Customer;
  id  |   name   | age 
------+----------+-----
 0001 | 山田太郎  |  29
 0003 | 佐藤信之  |  91
 0002 | 坂井花子  |  49

以上で完成した。

[注意点]

UPDATEを使う際にはWHERE <Primary Key> = 'vvvv'で指定しないとカラム内の全てが変更されてしまう。

試行例:

terminal
hoge=# UPDATE Staff SET age = 49;

試行結果:

terminal
hoge=# SELECT * FROM Customer;
  id  |   name   | age 
------+----------+-----
 0001 | 山田太郎  |  49
 0003 | 佐藤信之  |  49
 0002 | 坂井花子  |  49

全レコードのカラムを全て同じ値にするのには便利そうだが使わなさそう

データを削除する

削除には指定したレコードを消すのと、全行を削除する2通りがある。
データ削除にはDELETEコマンドを使用する。

sql
DELETE FROM <Table name> WHERE <Primary Key> = 'vvvv';

実際に下記のレコードを削除する

ID name age
0003 佐藤信之 91
terminal
hoge=# DELETE FROM Customer WHERE id='0003';
DELETE 1
hoge=# SELECT * FROM Customer;
  id  |   name   | age 
------+----------+-----
 0001 | 山田太郎 |  29
 0002 | 坂井花子 |  49
(2 rows)

しっかり削除されたことが確認できた。

[注意点]

UPDATEと同じく、DELETEを使う際にはWHERE <Primary Key> = 'vvvv'で指定しないとレコードが全て削除されてしまう(空のテーブルができる)

テーブルを削除する

テーブル自体を削除する場合はDROP TABLEコマンドを使用する。

sql
DROP TABLE <Table name>;

実際にこのCustomerテーブルを削除してみる。現段階でテーブルは以下の通り。

terminal
hoge=# \d
         List of relations
 Schema |   Name   | Type  |    Owner   
--------+----------+-------+-------------
 public | customer | table | sf213471118
(1 row)

この状態でテーブルを削除する。

terminal
hoge=# DROP TABLE Customer;
DROP TABLE

\dで削除されているか確認してみる

terminal
hoge=# \d
Did not find any relations.

しっかり削除されていることが確認できた

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?