はじめに
概要
リレーショナルデータベースに関する用語を深く理解するため、「phpMyAdmin」というデータベース接続クライアントの活用が効果的です。このツールを使ってリレーショナルデータベースを操作し、実際に手を動かしながら学習を進めましょう。
リレーショナルデータベースの操作には、MySQLやMariaDBなどのRDBMSが「データベースを利用する側」のSQL文の指示に基づいて行うことが分かりました。
しかし、phpMyAdminのような「データベース接続クライアント」を使用すると、SQLで命令文を記述することなく、Webブラウザ上で簡単にRDBMSに指示し、リレーショナルデータベースを操作できます。
phpMyAdminでは、Webブラウザ上の画面操作でデータベースやテーブルを作成できますが、実際には裏でSQL文が自動生成され、そのSQL文によってRDBMSがリレーショナルデータベースを操作しています。
SQLの学習はあとで行います。まずはphpMyAdminを使用して、これまでに学んだデータベース関連の用語についての理解を深めることから始めます。
目標
- phpMyAdminの基本操作を習得する
- リレーショナルデータベースの概念を実践的に理解する
- CRUD操作をマスターする:Create(作成)、Read(読み取り)、Update(更新)、Delete(削除)というデータベース操作の基本をphpMyAdminを用いて実践する
- 外部キー制約を適用してデータ整合性を保つ方法を学ぶ
今回はphpMyAdminを使用して、リレーショナルデータベース内に新たなテーブルを作成します。このデータベースは、以前にrailsコマンドを使用して作成したemployee_management_development
です。
作成済みのデータベース
作成するテーブルには、社員のデータを管理するemployees
と部署のデータを管理するdepartments
が含まれます。
これらのテーブルのカラム名や格納するデータの詳細は、以下の画像に示されています。
データベースに作成するテーブルと格納するデータの詳細
必要な前提条件・事前準備
この章を始める前に、リレーショナルデータベース(RDB)の基本用語についての知識が必要です。リレーショナルデータベースに関連する用語には、データベース、テーブル、カラム、行、主キー、外部キーなどが含まれます。また、phpMyAdminを使ったデータベース操作を行うためには、phpMyAdminへのログインが必要です。
ログインに成功すると、以下のような画面が表示されることになります。
これらの準備を整えた後、次のセクションに進んでください。
データベースの定義
データベースとは、システムやユーザーが扱うデータを1つの場所に集めたものでしたね。そして、リレーショナルデータベースとは、各データを表のような形で整理して、互いに関連付けて扱えるデータベースだと学習しました。
まずは、phpMyAdminを使ってリレーショナルデータベースを作成してみます。
railsコマンドによってリレーショナルデータベースは既に用意されていますが、データ定義をphpMyAdminで学ぶために、別のリレーショナルデータベースを作成します。
データベース一覧を表示しよう
開発環境とテスト環境のデータベースは、railsコマンドで既に作成していました。
以下のように画面上部に表示されている「データベース」をクリックしてください。
クリックすると、データベース一覧画面に遷移します。
以下のようにコマンドで作成した「employee_management_development」と「employee_management_test」のデータベースが表示されますね。
画面上部に表示されている「データベース」をクリックする以外にも、以下のようにサイドバーの「employee」>「management」の中から確認することができます。
データベースを作成しよう
データベースの新規作成は、データベース一覧画面から行えます。
まずは、画面上部に表示されている「データベース」をクリックして、データベース一覧画面にアクセスしましょう。
データベースの新規作成は、「データベースを作成する」の下にある入力欄に「データベースの名前」と「照合順序」を入力して、「作成」をクリックします。
照合順序とは、値を比較する際のルールのことです。
データベース名にpikawaka
と入力し、照合順序にutf8mb4_general_ci
を選んでデーベースを作成してみましょう。
データベース一覧画面を表示してみると、以下のように作成したpikawaka
という名前のデータベースも含まれていることが確認できます。
データベースを削除しよう
データベースの削除は、データベース一覧画面から行います。
以下のようにデータベース一覧画面に表示されるpikawaka
にチェックして、下に表示されている「削除」をクリックしましょう。
「削除」をクリックすると、以下のように確認ダイアログが表示されます。そのまま「OK」をクリックしましょう。
データベース一覧画面を表示すると、pikawaka
という名前のデータベースが削除されていることが確認することができます。
データベースを削除すると、元に戻すことができません。データベースを削除される際には、注意しましょう。
テーブル定義
テーブルとは、データを表のような形で格納する領域のことでしたね。リレーショナルデータベースでデータを扱うには、テーブルを作成する必要があります。
テーブルは、共通点を持った行の集合です。次のように「社員」という共通点を持つ行が集まることでemployees
テーブルができます。
またテーブルの行と列には、レコードとカラムという別名がありましたね。
レコードは「テーブルに格納されたデータ1件分」のことで、カラムは「テーブルに格納されたデータを構成する各項目」のことです。
employee_management_development
のリレーショナルデータベースには、社員と部署の関係性のテーブルを作成していきます。
テーブルの詳細情報を確認しよう
これから作成するテーブルは、社員のデータを管理するemployees
と部署のデータを管理するdepartments
です。
カラムには、「データ型」と「制約」を指定することができましたね。
データ型はテーブルに格納するデータの種類を限定するもので、制約はデータベースに格納するデータが満たさなければならない条件のことです。
NULL自身はデータの値ではなく、値が何も入っていない状態を指します。カラムに対して、「非NULL制約」を設定すると、NULL
を禁止することができます。
employees
とdepartments
の各テーブルで設定するデータ型と制約を確認します。
employeesテーブル
employees
テーブルで設定するデータ型と制約は、以下の通りです。
カラム名 | データ型 | 制約 | その他 |
---|---|---|---|
id | INT型 | 主キー制約(PRIMARY KEY) | AUTO_INCREMENT |
name | VARCHAR型 | 非NULL制約(NOT NULL制約) | |
birthday | DATE型 | デフォルト値: NULL |
|
department_id | INT型 | 外部キー制約(FOREIGN KEY) 非NULL制約(NOT NULL制約) |
主キーであるid
のカラムには、自動的に一意の値を付与してくれるAUTO_INCREMENT
という機能を使用します。departmentsテーブルでも同様です。
ほとんどのカラムには、非NULL制約を設定しますが、birthday
のカラムだけは、デフォルト値をNULL
にできるよう制約を設定しません。
departmentsテーブル
departments
テーブルで設定するデータ型と制約は、以下の通りです。
カラム名 | データ型 | 制約 | その他 |
---|---|---|---|
id | INT型 | 主キー制約(PRIMARY KEY) | AUTO_INCREMENT |
name | VARCHAR型 | 非NULL制約(NOT NULL制約) |
それでは、実際に手を動かしてテーブルを作成していきましょう
データベースを選択しよう
テーブルを作成するデータベースを選びます。
画面上部に表示されている「データベース」をクリックして、データベース一覧画面からemployee_management_development
をクリックしましょう。
以下のようにテーブルの管理画面が表示されます。データベースにはテーブルが作成されていないので、何もない状態です。
departmentsテーブルを作成しよう
作成するテーブル名はdepartments
で、必要なカラムはid
とname
です。
以下のように作成するテーブルの名前をdepartments
、カラム数を4
から2
へ変更して「実行」をクリックしましょう。
クリックすると、以下のように設定画面が表示されます。
こちらのフォームを入力することで、テーブルのカラムに関する設定ができます。
設定画面の「名前」にはカラム名、「タイプ」でデータ型を選ぶことができます。
「AI」とは、自動的に一意の値を付与してくれるAUTO_INCREMENT
のことです。
主キーとなるカラムの「AI」にチェックを入れると、以下のように自動的にインデックスのフォームにPRIMARY
が設定されます。
上のように「AI」にチェックを入れることで、主キー制約を設定することができます。
他にもNULL
を禁止できる「非NULL制約」を設定する場合は、以下のように「NULL」のチェックを外した状態にしておきます。
カラムの「名前」「タイプ」「長さ/値」などを設定していきます。departments
テーブルの2つのカラムについて、以下のように入力しましょう。
名前 | タイプ | 長さ/値 | 照合順序 | インデックス | AI |
---|---|---|---|---|---|
id |
INT |
PRIMARY |
チェックする | ||
name |
VARCHAR |
30 |
utf8mb4_general_ci |
name
カラムのデータ型はVARCHAR
なので、最大の文字数を指定する必要があります。「長さ/値」に30
と指定することで、nameカラムの最大文字数を30
に設定できます。
全て入力したら、以下のように「保存する」をクリックします。
departments
テーブルが作成されると、以下のように画面にはテーブル構造が表示されます。各項目に設定した内容が反映されています。
id
のカラムには「主キー制約」が設定されており、鍵のアイコンが表示されていますね。
テーブル管理画面を開くと、以下のように先ほど作成したdepartments
テーブルが1件表示されています。
この流れでemployees
テーブルも作成していきます。
employeesテーブルを作成しよう
作成するテーブル名はemployees
で、必要なカラムはid
・name
・birthday
・department_id
です。
以下のように作成するテーブルの名前をemployees
、カラム数を4
のままで「実行」をクリックしましょう。
クリックすると、以下のように設定画面が表示されます。
カラムの「名前」「タイプ」「長さ/値」などを設定していきます。employees
テーブルの4つのカラムについて、以下のように入力しましょう。
名前 | タイプ | 長さ/値 | デフォルト値 | 照合順序 | インデックス | AI |
---|---|---|---|---|---|---|
id |
INT |
PRIMARY |
チェックする | |||
name |
VARCHAR |
30 |
utf8mb4_general_ci |
|||
birthday |
DATE |
NULL |
||||
department_id |
INT |
birthday
のカラムには、デフォルト値(何も指定しない場合そのまま使われる値)としてNULL
を設定します。
全て入力したら、以下のように「保存する」をクリックします。
employees
テーブルが作成されると、以下のように画面にはテーブル構造が表示されます。各項目に設定した内容が反映されています。
idのカラムには「主キー制約」が設定されており、鍵のアイコンが表示されていますね。またbirthday
のカラムには、デフォルト値としてNULL
が設定されます。
テーブル管理画面を開くと、以下のように先ほど作成したemployees
テーブルが表示されています。
外部キー制約を設定しよう
employee_management_development
のリレーショナルデータベースには、2つのテーブルを作成することができましたね。
しかし、現時点ではテーブル同士の関連付けが行われていないので、employees
テーブルの情報からdepartments
テーブルの情報を取得することができません。
テーブル同士を関連付けるために「外部キー」が必要で、データの一貫性や正当性を保つためには「外部キー制約」が必要です。
外部キーに関する用語の整理
テーブルのカラムに外部キー制約を設定する前に、少し用語を振り返りましょう。
テーブル同士の関連付けを行うために、他のテーブルの主キーを参照するカラムのことを外部キー(FK:FOREIGN KEY)と呼びましたね。
関連付けられたテーブルは親子関係が成り立っています。参照される側のテーブルを「親テーブル」と呼び、参照する側のテーブルを「子テーブル」と呼びます。
たしか親子関係が成り立つテーブルのデータの一貫性や正当性を保つためには「外部キー制約」を設定する必要があったよね!
親である「部署テーブル」に存在しないデータを子である「社員テーブル」に登録されてしまうと、親テーブルと子テーブルの整合性が崩れてしまいます。
外部キーとして扱いたいカラムに対して、外部キー制約(FOREIGN KEY制約)を設定することで、親テーブルに存在しないデータが子テーブルに間違って登録されないように防止することができます。
親テーブルのデータを削除する場合は、子テーブルにはどのような影響があるでしょうか。
次のように親である部署テーブルのレコードを削除すると、子の社員テーブルのデータの参照先がなくなることになります。親テーブルと子テーブルの整合性が崩れてしまいますね。
整合性を保つために外部キー制約の設定では、2通りの対処方法がありましたね。
親テーブルのデータを削除する際に同じキーを持つ子テーブルのデータもあわせて削除するか、そもそも親テーブルのデータを削除できないようにするかを選択することができます。
今回は、親テーブルのデータを削除できないように設定していきます!
制約を設定するカラムの確認
外部キー制約は、子テーブルであるemployees
テーブルのdepartment_id
のカラムに設定します。
department_id
は、departments
テーブルの主キーであるid
を参照します。
さらに親テーブルと子テーブルの整合性を保つために、外部キー制約を設定する際に親テーブルのデータを削除できないようにRESTRICT
というオプションを付けます。
外部キー制約の設定
それでは、phpMyAdminでカラムに外部キー制約を設定してみます。
続いて、employees
テーブルの画面上部にある「構造」を開き、以下のように「リレーションビュー」をクリックしましょう。
※departmentsテーブルではなく、employeesテーブルの詳細画面で操作してください。
クリックすると、外部キー制約の設定画面が表示されます。
- 制約プロパティ - 制約名や親テーブルに対する削除・更新時の操作を選ぶ
- カラム - 外部キー制約を設定するカラムを選ぶ
- 外部キー制約(INNODB) - 参照先のデータベース・テーブル・カラムを選ぶ
外部キー制約の設定について、以下のように入力しましょう。
全て入力したら、以下のように「保存する」をクリックします。
外部キー制約が設定されると、以下のように画面には設定した内容が表示されます。
実際には裏でSQL文を自動生成しており、そのSQL文によってRDBMSがリレーショナルデータベースを操作しています。
今回の設定で自動生成されたSQL文は、以下の通りです。
1
2
3
4
5
ALTER TABLE `employees`
ADD FOREIGN KEY (`department_id`)
REFERENCES `departments`(`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT;
SQLについては後で学習しますが、上記は「employees
テーブルを変更する。変更内容としては、外部キー制約をdepartment_id
に設定し、departments
テーブルのid
を参照する。親テーブルに対する削除と更新は拒否する。」という内容です。
employees
テーブルの構造で確認すると、department_id
のカラムには「外部キー制約」が設定されており、鍵のアイコンが表示されていますね。
これでemployee_management_development
のデータベースに必要なテーブルを用意することができました。
次はデータ操作について学びます!
データ操作
データ操作では、CRUDに対応する操作をおさえることが重要です。
CRUDとは、Create(作成)・Read(読み込み)・Update(更新)・Delete(削除)の頭文字を繋げた用語で、データ操作の基本となる4つの処理のことです。
RDBMSの標準のデータベース言語であるSQLには、CRUDに対応する操作としてINSERT・UPDATE・DELETE・SELECTという4つの構文が用意されています。
CRUD | SQL構文 | SQL構文の説明 |
---|---|---|
Create(作成) | INSERT文 | テーブルにレコードを挿入する |
Read(読み込み) | SELECT文 | テーブルのレコードを抽出する |
Update(更新) | UPDATE文 | テーブルのレコードを更新する |
Delete(削除) | DELETE文 | テーブルのレコードを削除する |
今回はphpMyAdminを利用して、CRUDのデータ操作を行います。
phpMyAdminを利用することで、SQLで命令文を記述しなくても、Webブラウザ上で容易にRDBMSに指示し、CRUDに対応するデータ操作を行えます。
たしかphpMyAdminってSQL文を記述しなくても操作できるけど、裏では自動生成されたSQL文が実行されているんだよね。
そうだよ!データ操作ではSQL文も表示されるから、次回SQLを学ぶ際にどんな指示が出せるのかイメージを掴みやすくなるよ。
データを挿入しよう
departmentsテーブルに挿入
departmentsテーブルは、部署のデータを管理するテーブルです。
以下のように開発
と営業
を挿入してみます。
id | name |
---|---|
1 |
開発 |
2 |
営業 |
まずは、データベースであるemployee_management_development
のテーブル管理画面からdepartments
テーブルの行にある「挿入」をクリックしましょう。
クリックすると、以下のように挿入するデータの入力画面が表示されます。
デフォルトでは、レコード2件分を挿入できるようにフォームが表示されていますが、「無視」にチェックが付いていあると、チェックボックスの下にあるフォームは利用されず、上にある1件分のデータのみ挿入されます。
departmentsテーブルには2件のレコードを挿入するので、チェックは外しておきましょう。
name
カラムの値に開発
と営業
を入力して、実行をクリックしましょう。
※idにはAUTO_INCREMENT(自動的に一意の値を付与)の機能を設定しているので、何も入力しません。
実行をクリックすると、以下のSQL文により2件分のレコードが挿入されます。
departments
テーブルで「表示」をクリックすると、以下のように挿入したデータを確認することができます。idには値を入力しませんでしたが、自動的に1
と2
が設定されています。
同じ手順でemployeesテーブルにもデータを挿入してみましょう。
employeesテーブルに挿入
employeesテーブルは、社員のデータを管理するテーブルです。
以下のように6件分のデータを挿入してみます。
id | name | birthday | department_id |
---|---|---|---|
1 |
田中太郎 |
1980-10-22 |
1 |
2 |
山田花子 |
1983-08-20 |
1 |
3 |
高橋一朗 |
1986-06-16 |
2 |
4 |
伊藤晴子 |
1987-10-01 |
1 |
5 |
鈴木二郎 |
1990-01-17 |
2 |
6 |
山口冬子 |
1993-05-12 |
2 |
まずは、データベースであるemployee_management_development
のテーブル管理画面からemployees
テーブルの行にある「挿入」をクリックしましょう。
クリックすると、以下のように挿入するデータの入力画面が表示されます。
デフォルトでは、レコード2件分を挿入できるように設定されていますが、6件分のデータを挿入するために、ページ下部にある2
を6
に変更しておきましょう。
id | name | birthday | department_id |
---|---|---|---|
1 |
田中太郎 |
1980-10-22 |
1 |
2 |
山田花子 |
1983-08-20 |
1 |
3 |
高橋一朗 |
1986-06-16 |
2 |
4 |
伊藤晴子 |
1987-10-01 |
1 |
5 |
鈴木二郎 |
1990-01-17 |
2 |
6 |
山口冬子 |
1993-05-12 |
2 |
以下のようにid
以外の値を入力して「実行」をクリックしましょう。フォームにデータを入力すると、自動的に「無視」のチェックが外れます。
※外部キー制約のより、department_idには参照先のdepartmentテーブルのidの値のみ選択可能です。
実行をクリックすると、以下のSQL文により6件分のレコードが挿入されます。
employees
テーブルで「表示」をクリックすると、以下のように挿入したデータを確認することができます。
外部キー制約の設定により、department_id
の値はdepartment
テーブルの主キーを参照します。
以下のようにdepartment_id
の値をクリックすると、参照先のレコードにアクセスすることができます。
次はデータの更新について学ぶよ!
データを更新しよう
employeesテーブルを更新
employees
テーブルのデータを更新してみましょう。
山口冬子さんの生年月日を1993-05-12
から1993-12-12
に更新してみます。
birthday
の値を1993-05-12
から1993-12-12
に更新しましょうまずは、employees
テーブルの「表示」の画面から以下のように6行目にある「編集」をクリックしましょう。
編集をクリックすると、id
が6
のレコードの編集画面が表示されます。
以下のようにbirthday
の値を1993-05-12
から1993-12-12
に変更して「実行」をクリックしてみましょう。
実行をクリックすると、以下のSQL文によりbirthday
の値が更新されます。
departmentsテーブルを更新
前回の正規化で学習しましたが、RDBでは一般にデータ同士の関連を保ったままテーブルを分けて管理することで、データを変更するときに最小限の修正で済みます。
少しおさらいしてみます。「営業部」を今後増やす予定で、従来の営業部は「法人営業部」に変更するとします。次のように1つのテーブルに情報をまとめてしまうと、「営業部」の全ての箇所を「法人営業部」に修正する必要があります。
このときに1件でも修正漏れがあると、データ内容に矛盾が生じてしまいます。
しかし、1つのテーブルにまとまっていた情報を分けて、テーブル同士を関連付けることで、修正は1箇所で済みます。
今回はすでにemployees
とdepartment
のテーブル同士が関連付けられている状態なので、部署を営業
から法人営業
に修正する際には、1箇所だけで済みます。
まずは、departments
テーブルの「表示」の画面から以下のように2行目にある「編集」をクリックしましょう。
編集をクリックすると、id
が2
のレコードの編集画面が表示されます。
以下のようにname
の値を営業
から法人営業
に変更して、「実行」をクリックしてみましょう。
実行をクリックすると、以下のSQL文によりname
の値が更新されます。
employees
テーブルで2
のdepartment_id
の値をクリックすると、以下のように更新された法人営業
が表示されます。
RESTRICT:親テーブルの主キーの値は更新できない
employees
テーブルのdepartment_id
に外部キー制約を設定した際に、親テーブルに対する更新時の操作でRESTRICT
を選択していましたね。
これは「親テーブルに対する更新操作を拒否する」というオプションです。
親テーブルであるdepartment
テーブルのname
カラムの値は更新することができますが、主キーであるid
カラムの値は更新することができません。
更新しようとすると、以下のようにエラーが起こります。
RESTRICT
の設定により、department_id
カラムが参照するdepartment
テーブルの主キーであるid
カラムの値は、更新することができないので注意しましょう。
データを削除しよう
以下のようにemployees
テーブルのid
が6
のレコードを削除してみます。
まずは、employees
テーブルの「表示」の画面から以下のように6行目にある「削除」をクリックしましょう。
以下のようにダイアログが表示されるので、「ok」とクリックします。
okをクリックすると、ダイアログで表示されたSQL文によりid
が6
のレコードが削除されます。以下のようにemployees
テーブルの中に存在しません。
RESTRICT:親テーブルのレコードは削除できない
親テーブルに対する更新操作を拒否したように、外部キー制約の設定により、親テーブルのレコードを削除することもできないので注意してください。
以下のように削除時の操作もRESTRICT
を選択していましたね。
これは「親テーブルに対する削除操作を拒否する」というオプションです。
親テーブルであるdepartment
テーブルのレコードは削除することができません。削除しようとすると、以下のようにエラーが起こります。
データを抽出しよう
各テーブルの画面上部に表示されている「検索」をクリックして、検索条件を設定する画面からテーブルのデータを抽出することができます。
テーブルから特定のカラムの値を抽出
テーブルから特定のカラムの値だけを抽出することができます。検索の条件を設定して、employees
テーブルのデータを抽出してみましょう。
まずは、employees
テーブルの画面上部に表示されている「検索」をクリックして、検索条件を設定する画面を開きましょう。
以下の画面でデータを抽出する条件を設定することができます。
それではオプションを開いて、以下のように表示するカラムでname
を選択して、実行をクリックしましょう。
実行をクリックすると、以下のSQL文によりname
カラムだけの値が表示されます。
このようにオプションを利用することで、テーブルから特定のカラムの値だけを抽出することができます。
特定のレコードを抽出
検索条件を設定する画面の「演算子」を使うことで、特定のレコードを抽出することができます。
department_id = 1
の条件に当てはまるレコードだけ抽出してみましょうまずは、department_id
カラムの値が1
であるレコードだけをemployees
テーブルから抽出してみます。以下のように入力して「実行」をクリックしてください。
以下では、department_id = 1
という条件を設定します。
実行すると、以下のようにdepartment_id = 1
の条件に当てはまるレコードだけが表示されます。
1986-01-01
以降の社員だけを抽出してみましょう以下のように検索条件の画面でbirthday
の行の演算子を>
にして、値を1986-01-01
と入力して「実行」をクリックしましょう。
実行すると、以下のようにbirthday > 1986-01-01
の条件に当てはまるレコードだけが表示されます。
データの整列
検索条件の画面にある「表示順」でデータの整列をすることができます。
以下のようにオプションの「表示順」を入力して、「実行」をクリックしてください。
実行をクリックすると、以下のようにid
の値が降順に並び替えられます。
この章のまとめ
今回の章では、phpMyAdminを用いてリレーショナルデータベースの操作を行いました。SQL文を直接扱わずに、Webブラウザ上で直感的な操作によりデータベースやテーブルの作成が可能であることを学びました。裏側ではSQL文が自動生成され、それによりRDBMSがリレーショナルデータベースを操作しています。
次の章では、SQL文について学習します。この章を終える前に、以下の手順に従って今まで作成したテーブルを削除することを忘れないでください。こうすることで、SQLの章に進む前に環境を整えることができます。
employee_management_development
にあるテーブルを全て削除します。
以下のようにテーブルの管理画面からemployees
テーブルの行にある「削除」をクリックしましょう。子テーブルから削除します。
クリックすると、以下のように確認ダイアログが表示されます。そのまま「OK」をクリックしましょう。
この流れで親テーブルであるdepartment
テーブルを削除しましょう。
親テーブルから削除した場合、以下のように外部キー制約違反でエラーが起こり、テーブルを削除できないので、注意しましょう。
employee_management_development
データベースのテーブルを全て削除すると、以下のようにテーブル数が0
と表示されます。
この章のまとめ
- phpMyAdminとは、リレーショナルデータベースのデータをWebブラウザ上で容易に扱うことができるソフトウェアのこと
- CRUDとは、Create(作成)・Read(読み込み)・Update(更新)・Delete(削除)というデータ操作の基本となる4つの処理のこと
この記事で学んだことをTwitterに投稿して、アウトプットしよう!
Twitterの投稿画面に遷移します