LoginSignup
3
1

More than 5 years have passed since last update.

SQLについて

Posted at

データベースとは??

データ形式をあらかじめ決めて、データを管理する構造のことを指します。
また、データを管理するプログラムとしてDBMS(Database Management System:データベース管理システム)というものがあり、DBMSに命令を与えるのがSQLなどになります。

SQL

クエリとは?

クエリ(query)とは、英語で「問い合わせ(る)」、「訪ねる」などの意味を持つ英語の単語で、ITではソフトウェアに対するデータの問い合わせや要求などを一定の形式で文字に表現することを意味します。
クエリを通じて、データの検索や更新、削除、抽出などの要求をデータベース(DBMS)に送信することができます。

簡単に言うと、データベースへの命令みたいな感じです

SQLとは?

SQL(Structured Query Language)はRDBMSと対話するための言語です。
クエリが命令でSQLが言語です。

ex)

具体例
クエリ おいデータベース!!〇〇の値とってこいや
SQL SELECT 〇〇 FROM △△ ~~

どんな命令があるの?

SQLでデータベースに対するデータの読み書きは、「登録」「読み出し」「更新」「削除」の4つに分類できます。

操作 内容
登録 新たなレコードを書き込むこと
読み出し 既存のレコードを取得すること
更新 既存のレコードの内容を部分的に変更すること
削除 既存のレコードを消し去ること

今回は具体例として下のような大学生の名簿のレコードがあったとしましょう。

名前 学年 性別 住所 出身高校
山田 4 東京 W高校
田中 1 神奈川 K高校
斎藤 3 神奈川 T高校
小林 3 千葉 J高校
吉田 2 埼玉 S高校

日常生活での表現をデータベースでの「登録」「読み出し」「更新」「削除」に当てはめてみると、
・新しい生徒が入学する → 名簿への「登録」
・3年生の一覧を見る  → 名簿の読み出し
・山田さんの住所を変更する  → 名簿の山田さんのレコードの更新
・斎藤さんが退学した → 名簿の斎藤さんのレコードの削除

みたいな感じになります。

実際のSQL文はどんな感じなの??

実際にSQLを紹介していきます。イメージはかなり英語に近いので、あまりプログラミングをしたことがない人でも何をしているのかだいたいつかめると思います。

操作 命令
登録 INSERT INSERT INTO 名簿 VALUES('前田','3年', '女', '東京', 'S高校' )
読み出し SELECT SELECT 名前 FROM 名簿 WHERE 学年='3年'
更新 UPDATE UPDATE 名簿 SET 住所='埼玉' WHRER 名前='山田'
削除 DELETE DELETE FROM 名簿 WHERE 名前='斎藤'

1つ目の登録は「名簿に名前が前田、学年が3年、性別が女、住所が東京、出身高校がS高校のユーザーを登録する」
2つ目の読み出しは「名簿から、学年が3年の人の名前を取得する」
3つ目の更新は「名前が前田のレコードの住所を埼玉に更新する」
4つ目の削除は「名簿から名前が斎藤のレコードを削除します」 

よく使うオプション

WHERE

WHEREは条件を指定することができます。

SELECT 名前 FROM 名簿 WHERE 性別="男"

意味:名簿から「 性別="男"」という条件で名前を読み出せ

結果.
山田
斎藤
小林

LIKE

LIKEを使うと、任意の文字列を指定することができます。

SELECT 名前 FROM 名簿 WHERE 名前 LIKE '%田'

意味:名簿から指名が任意の文字列で末尾が「田」であるという条件で指名を読み出せ

結果.
山田
吉田

ORDER BY

SELECT命令で読みだしたデータを整列させることができます。ORDER BYの後に、整列の対象となる列名を指定し、昇順(ASC)、降順(DESC)を指定します。

SELECT 名前, 学年 FROM 名簿 ORDER BY 学年 DESC 

意味:名簿から名前と学年を読み出し、学年の大きい順に整列せよ。

結果.
山田 4
斎藤 3
小林 3
吉田 2
田中 1

INNER JOIN

INNER JOINは内部結合をします。内部結合とは、指定したそれぞれのカラムの値が一致したものを結合することです。
例えば、名簿に乗ってる人たちのテストの点数のテーブル「得点表」があるとしましょう。

名前 数学 英語 国語
斎藤 99 60 45
落合 3 5 100
山田 80 70 70
小林 87 32 57
清水 60 100 100
SELECT * FROM 得点表 INNER JOIN 名簿 名簿.名前=得点表.名前

意味:得点表から、名簿と得点表のテーブルの、それぞれの名前が一致したものの情報をすべて読み出す

結果.
斎藤 99 60 45
山田 80 70 70
小林 87 32 57

ちなみに、結合した時に、それぞれの名前が一致しなかった場合はnullが入ります。

これからもう少し修正を加えていい記事にしていきます

3
1
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
3
1