SQLの基本と４大文法を理解するための初学者向け記事

# 対象者
こちらは、プログラミング学習を始めたばかりの方やSQLの概要について調べている方、SQLの４つの基本文法を学習している方が対象になるかと思います！
こちらの記事をお読みいただき、他の詳しい記事等で学習していただければと考えています。 

※当方もプログラミング初学者で学習途中でございますので、間違い等のご指摘いただければ幸いでございます。
# そもそも、SQLって？
SQLとは、データベース言語の１つです。ユーザーが入力したデータなどを蓄積させているデータベースというものを操作して、欲しい情報を引き出したり加工したりします。その際の「操作」に使用されるのがSQLという言語です。JavaやCなどのプログラミング言語で開発されたシステムやアプリでも、データベースにアクセスをして情報を活用します。
要するに、
#### SQLは、データを操作するための言語
と言うことを理解していただければ最初のうちはいいと思います。

SQLを学ぶ上で、重要である４つの文法を以下では解説しますのでぜひSQLについての概要を理解していただければと思います。

なお、当方こちらの記事でも主要プログラム言語の解説を順次行っていきますので、ご興味があれば参照していただければと思います！
※随時更新中です！

https://qiita.com/shooooooohify/items/446d3ee02c693b7ddc06

また、この記事では深く言及しませんが、データベースの概要についてもさらっと学習しておきましょう。
### データベースとは？
データベースは、前述の通りデータを蓄積している箱のようなもので、そのデータをどのように管理しているかというと、複数の表にして管理することが多いそうです。(身近なもので言うと、Excelを思い浮かべていただくと良いかもしれないです。)
この表の形式で管理されているものをリレーショナルデータベース(以下、RDB)と呼びます。
表の形式で確認してみましょう。

テーブル名：会員管理表
| id | name     | age  |
|:---|---------:|:----:|
| 1  | Yamada   | 24   |
| 2  | Tanaka   | 54   |
| 3  | Ono      | 34   |
| 4  | Maeda    | 23   |
| 5  | Arata    | 27   |
| 6  | Yoshida  | 76   |

会員管理表とは、テーブル名で表の総称のことと考えていただければと思います。
id,name,ageは列名と呼ばれます。2行目以下に記載されている実際の数字や名前を値と呼びます。
この列や値をSQLを用いて操作していきます。テーブル名や値は以下の解説で、出てきますので適宜確認していただければと思います。

## 文法
ここから本題である、SQLの文法について学習していきたいと思います。文法と聞くと、「いろんな種類があって覚えられない...」と思われる方もいるかもしれませんが、SQLをざっくり理解する上で必要な文法は、４つなんです。（細かく使いこなそうとすると、いろんな記法や句等を覚えないといけませんが、ここではSQLの概要を理解することが目的なので割愛します。)

基本的には、【SELECT】【UPDATE】【DELETE】【INSERT】になります。これら４つのSQL命令は、DML(Data ManipulationLanguage)と総称されています。Ruby等で学習するCRUD等のイメージですかね。
以下では、この4大命令を理解してざっくりSQLではこんなことができるのかというイメージをつかんでいただければ、目的達成です。

### SELECT
データベースとデータのやりとりで最も頻繁に使用されるのがこのSELECT文になります。
具体的には、データベースに蓄積されているデータの条件を指定して取得する目的で使用されます。
基本構造としては、
##### SELECT 欲しいデータ名　FROM　テーブル

WHEREやASといった用語を用いることで、さらに細かな条件や操作ができるので、興味のある方は、こちらの記事も参照して見てください！

https://www.sejuku.net/blog/72964

### UPDATE
UPDATEは、すでにテーブルに存在するデータを書き換えるために用いられます。
具体的には、データを間違えた時や入力し直したい時に用いられるとのことです。
基本構造としては、
##### UPDATE　テーブル名　SET　列名1＝値1
のような形で記述します。この場合は、「テーブル名の中の列名1の値1に変更する」という意味になります。この場合、列名1は全て値1に変更されてしますので、適宜WHEREを用いて条件を決めてあげる必要があります。
より詳しく学習したいという方は、こちらを参照にして見てください！

https://www.sejuku.net/blog/73780

### DELETE
DELETEとは、すでにテーブルに存在している行を削除するための命令です。
具体的には、行を丸ごと削除する機能であるため、特定の列のみ削除するということはできない。
##### DELETE　FROM　テーブル名
のような記述方法を取ります。前述の通り、WHERE等の条件をつけない限り、全ての行が削除されてしまうので、注意が必要ですね！
詳しくはこちらを参照していただければ、深く理解できるかと思います！

https://www.sejuku.net/blog/72944
### INSERT
INSERTは、テーブルに新たなデータを追加するための命令で使用されます。
これまで解説してきた３つの文法とは違い、INSERTは行の指定をする（WHERE)のような仕組みがないです。その分、どこに、どのデータを追加するのかを指定できます。
##### INSERT INTO テーブル名
##### (列名1,列名2,列名3...)
##### VALUES(値1,値2,値3...)
のように記述し、「テーブルの列名1に値1を追加する」のようなイメージです。少しわかりにくいかもしれないので、先ほどの会員管理表テーブルを例にして記述してみます！
##### INSERT INTO 会員管理表
##### (id,name,age)
##### VALUES(7,'長野',50)
この場合、「会員管理表のid,name,ageにそれぞれ、7,長野,50を追加してください」と指定しています！
少しわかりにくいですが、VALUESはプログラミングにおいて、値という意味で使われたりするのでその基礎知識があれば理解しやすいかもしれないですね。
こちらの記事もぜひ読んで理解を深めていただければと思います。

https://www.sejuku.net/blog/82957



## まとめ
いかがでしょうか？皆さんもSQLという言語を少しは理解してくださいましたか？
当方もSQLに関しては、それほど深く学習してきませんでしたので、今後は基礎をしっかり抑えていきたいと思います。
お読みいただきありがとうございました！
以下の、dokoQLを用いることで、簡単な命令操作を行うことができるのでぜひ活用して見てください。

https://dokoql.com/

※各文法で参照している参照記事ですが、侍エンジニアの回し者みたいになっていますね。（笑)
当方は侍エンジニアと全く関係ないですが、わかりやすい記事ですしSEO対策がしっかりされていて検索上位に毎回食い込んできていたので、是非読んでみてください！では！