ユーザがデータベースから情報をとってくるときにはGETを使うことが分かりました。
まだ用途を一例でしか把握していないからだと思いますが、半分正解で半分不正解のような感じです。
「データ取得」を基準に理解していらっしゃいますが、「データ送信」を基準に理解するべきです。
POSTについては後述しますが、GETはURLにパラメータを付与して送信する方法です。
「https://hoge.com/huga.php**?id=xxx&age=yyy**」
GETの特徴はURLに残ることです。
つまり、ブログなどではページ数をパラメータとして付与したままブックマークしたり共有できますし、
アンカーリンクがあるページでは、アンカーリンクを付けたまま他人に共有できます。
(teratailでもプログラミング言語などのドキュメントの共有とかでよく見かけますね。)
逆に言えばパラメータが目に見える状態になっているので、パスワードなど人に漏らしてはいけない情報を
送信することに決して使用してはいけません。
上記の特徴から、「データベースから情報をとってくる」と言っても、どんなパラメータからどんな情報を取得するのかによって
GETを使うべきものなのか使ってはいけないものなのかは異なります。
公開されている情報を使ってデータベースから情報を取得するのであればGETで問題ないです。
(ECサイトの商品検索とか、絞り込み検索とか。)
しかし、システム側やユーザ本人しかわからない情報を使ってデータベースから情報を取得するのはGETではダメです。
(システム側で使うユーザの固有IDとか、ログイン時のパスワードとか)
また、別にデータベースの使用が前提のものではないです。
POSTは入力したデータをデータベースに追加更新削除するために使う事がわかりました。
こちらに関しては例外はあるかと思いますが、間違いではないかと思います。
ただし、GET同様データベースありきのものではないので、追加更新削除のためだけではないです。
また、GETで説明しましたが、データベースからデータを取得するときにも使います。
GETはURLにパラメータを付与していましたが、
POSTでのデータ送信はボディ部分にパラメータを付与して送信します。
そのため、見た目上はどんなデータが送られたのかわからないようになっています。
(かと言って絶対安全というわけではないですが。)
URLに、個人情報を扱ったデータ送信に向いている方法なのはもちろん、
付与できる情報量がGETよりも多いので画像などのデータ送信にも向いています。
今まではactionは使わずに書いてきました。
actionが必要なのはメソッドがGETのときのみ必要なのかもしれない、と考えていますがこれは誤りですか?
誤りです。
そもそもactionを書かなくて済むのは同じファイル内で処理する場合であり、
別なファイルに送信後のアクションを促す場合には必要なものです。
決してGET、POSTの違いではありません。
おそらく今は学習段階で1ファイルのみでの実装をしているのかと思いますが、
実際のWebサイトでは1ファイルではすみませんし、ページ遷移やフォームも複数存在することは少なくありません。
そういうときにはきちんとファイルを分け、このフォームではあのファイルのactionをGETで、というような指定する必要があります。
そのフォームのデータ送信はGETで対応できるものかもしれませんし、POSTでないと対応できないものかもしれません。
なので、actionはGET、POSTに関わらずあるべきものだと認識していただければと思います。