Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

5
6

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】 基本的なCRUD操作

Last updated at Posted at 2019-03-04

#PostgreSQLとは

フリーなオープンソースのリレーショナルデータベース管理システム

簡単にいうとこれに尽きるかと思います。
じゃあ、他のRDBMS(Relational DataBase Management System )との違いは何?と思ってらっしゃる方も多いのでしょうが、またその記事は後日書き記したいと思います。

ひとまず今回は、
「データベースを管理するシステムのことかー」
と思ってくださればOKです。:ok_hand:

#CRUDとは

CRUD = Create(生成)、Read(読み取り)、Update(更新)、Delete(削除)
の操作をまとめてCRUDと呼んでいます。

webアプリケーションでいうと
Create(登録機能)、Read(参照機能)、Update(変更機能)、Delete(削除機能)
となります。

#【PostgreSQL】基本的なCRUDとは

これで、タイトルの「【PostgreSQL】基本的なCRUD操作」の意味がわかったのではないでしょうか。

「データーベースに対する、基本的な登録、参照、変更、削除 の操作」
です。

#基本的なCRUD操作
それでは、基本的なCRUD操作についてご紹介していきたいと思います。
CRUD操作に使用するテーブルはこちらです。
テーブル名はstudentsでid, name, age の列名があります。

id name age
これはCREATE TABLEをして作成しました。今回のCRUD操作とは別ですが、一応記しておきます。

基本構文はこちら:point_down:
CREATE TABLE テーブル名 (列名 データ型 制約 [, 列名 データ型 制約 …] );

例はこちら:point_down:

テーブルの作成
CREATE TABLE students(id CHAR(4) NOT NULL, name TEXT NOT NULL, age INTEGER, PRIMARY KEY (id));

まず、CREATE TABLEでテーブル名 = students を指定します。その後、列名 = idと、そのデータ型 = CHAR(4) と制約 = NOT NULLを指定しています。最後に主キーの指定をしています。


###Create(生成)

まずは、INSERTです。テーブルに対して、値の追加をすることができます。

基本構文はこちら:point_down:
INSERT INTO テーブル名 (列名,列名...) VALUES (値,値...)

例はこちら:point_down:

値の追加
INSERT INTO students (id, name, age) VALUES ('0001', '川端奈緒', 11);

まず、INSERT INTO でテーブル名 = students を指定します。その後、 列名 = id, name, ageを指定しています。 VALUESでは列に入れる値を指定しています。今回の場合は id ='0001', name = '川端奈緒', age = 11 という値を入れています。

この結果

id name age

上記のテーブルが、下記のようになります。

id name age
0001 川端奈緒 11

でも、毎回これをするのはめんどくさいですよね。

値の追加
INSERT INTO students (id, name, age) VALUES ('0001', '川端奈緒', 11);

そういう時は

値の追加
INSERT INTO students (id, name, age) VALUES ('0001', '川端奈緒', 11), ('0002', '安田梨沙', 21);

みたいな感じでVALUES,で繋げると、連続で値を入れてくれます。


###Read(読み取り)

続いてSELECTです。指定した値など様々なデータベースの情報を取得することができます。

基本構文はこちら:point_down:
SELECT 列名 FROM テーブル名

例はこちら:point_down:

データの取得
SELECT * FROM students
```

まず、取得したい列名に`*`を入れているので、全ての列を取得します。どこから列名を取得するのかというと、`FROM` の後に指定した `students`テーブルからです。

この結果はこちら。

|  id  |   name  |   age  |
|:-----|--------:|:------:|
| 0001 | 川端奈緒 |   11   |
全て取得しているので全て表示されます。

では、こちらはどうでしょう。

``````sql:指定したデータの取得
SELECT id FROM students
```
取得する列名のみ`id`に変更しました。

その結果はこちら

|  id  |   
|:-----|
| 0001 |
`id`を指定したので、`id`のみを取得することができました。

---
###Update(更新)

次はUPDATEです。既存の列に入っている値を更新することができます。

基本構文はこちら:point_down:
**UPDATE テーブル名 SET 列名 = **

例はこちら:point_down:

```sql:更新
UPDATE students SET name = '多田典子'
```

`UPDATE`の後に更新対象のテーブル名 = `students` を指定します。その後の`SET`で 更新する`列名 = name`と更新する`値 = '多田典子'`を入れます。

この結果はこちら。

|  id  |   name  |   age  |
|:-----|--------:|:------:|
| 0001 | 多田典子 |   11   |
`name`の列が多田典子に更新されています。
ただし、この場合は`name`の列が全て多田典子になってしまうので、1つの行を特定して更新したい場合は 

**UPDATE テーブル名 SET 列名 =  WHERE 削除する行を特定する条件**

という風に`WHERE`を追加します。

例はこちら:point_down:

```sql:指定したデータの更新
UPDATE students SET name = '多田典子' WHERE id = '0001'
```
例えばこのようなテーブルがあったとします。


|  id  |   name  |   age  |
|:-----|--------:|:------:|
| 0001 | 川端奈緒 |   11   |
| 0002 | 山田智 |   12    |
これに対して先ほどののSQLを流せば、

|  id  |   name  |   age  |
|:-----|--------:|:------:|
| 0001 | 多田典子 |   11   |
| 0002 | 山田智 |   12    |
という風に`WHERE`以降で指定した条件の `id = '0001'`に合致する行のみが更新対象となっています。

---
###Delete(削除)
最後はDELETEです。値の削除をすることができます。

基本構文はこちら:point_down:
**DELETE FROM テーブル名 WHERE 削除する行を特定する条件**

例はこちら:point_down:

```sql:指定したデータの削除
DELETE FROM students WHERE id = '0001'
```

`DELETE FROM`の後に`テーブル名 = students`を指定します。その後、`WHERE` 削除したい行を特定するために `id = '0001'`を指定しました。

|  id  |   name  |   age  |
|:-----|--------:|:------:|
| |  |  |
指定した`id`の列が削除されています。`WHERE`を使用しなかった場合はテーブルすべての行が削除されてしまうので注意してください。

---
#まとめ
今回は、CRUD操作の基礎を書きました。

|  CRUD |                            基本構文                  |
|:------|:-----------------------------------------------------:|
|  INSERT  | INSERT INTO テーブル名 (列名,列名...) VALUES (,...) |
|  SELECT |                 SELECT 列名 FROM テーブル名          |
| UPDATE |                       テーブル名 SET 列名 =        |
| DELETE |    DELETE FROM テーブル名 WHERE 削除する行を特定する条件  |

                 
これはPostgreSQLの基礎中の基礎なので、今後はさらに詳しい記事を作成していきたいと思います。
5
6
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
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?