1
1

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 3 years have passed since last update.

SQL 超初心者向け スッキリわかるSQL 2章(基本文法と4大命令)

Last updated at Posted at 2021-07-23

はじめに

さて今回もやってきます!スッキリわかるSQL2章です!
本記事もこのテーブルを題材としています。
スクリーンショット 2021-07-22 18.55.55.png

SQLに共通する基本ルール

どうやらSQLは書き方のルールがあるらしいぞ!
しっかり学んでいかないと!

共通する基本ルール1

・文の途中に改行を入れることができる。
・行の先頭や行の途中に半角の空白を入れることができる

備考
・末尾のセミコロン(;)で、文の終了を表すこともある

わかりやすいSQL文を書くために文中の改行は必須とのこと。

SELECT 費目, 出金額 
  FROM 家計簿 ←改行したほうがわかりやすい
WHERE 出金額 > 3000 

共通する基本ルール2 コメントアウトできる

・ハイフン2つ(--)から行末までコメントになり、無視される
・/*から*/まではコメントになり、無視される

これはコメントアウトのやり方みたいですね。

/* コメントアウト部分  */
SELECT 費目, 出金額 
  FROM 家計簿
WHERE 出金額 > 3000 

共通する基本ルール3 予約語のルール

・SELECT や WHERE などの命令に使う単語は、SQLとして特別な意味をもつ「予約語」である。
・予約語を記述する際は、大文字と小文字の区別はない。
・テーブル名や列名に予約語を利用することはできない。

小文字で書いても処理できます。

データー型のリテラル

記述ルールといえば INSERT文で使われていたシングルクォーテーションが気になった。
➩これはデータの種類を示す為の記法です。

てかそもそもリテラルとは?
➩SQLの文の中に書き込まれたデータそのもののことです。

INSERT INTO 家計簿
VALUES ('2013-02-25', '居住値', '3月の家賃', 0 , 85000)  ←リテラル

0と85000の部分はシングルクォーテーションで囲われていない!

最後の2つのリテラルだけがシングルクォーテーションで囲われていないのは
リテラルの記述に関するルールがある。

リテラルの記述に関するルール

・で囲わない記述は、数値として扱われる。
・逆に'で囲うと基本的には文字列として扱われる
・基本的にはというからには、例外もある。'で囲われる '2013-02-25'のような形式では日付として扱われる。

じゃぁ誤って数字をシングルクォーテーションで囲って文字列情報のSQL文で送ったらどうなんの??
➩大丈夫です。データベースには安全装置が備わっています!

では、安全装置説明します。

INSERT INTO 家計簿
VALUES ('2013-02-25', '居住値', '3月の家賃', '0' , '85000')
数字(0と85000)をシングルクォーテーションで囲って誤ってSQL文を発行しちゃったああ!?

上のSQLを実行すると、DBMSは、入金額や出金額は、数値じゃないじゃん!ってことで 処理を中断するか、うけとった文字列を強制的に数値に変換して格納しようとします!
なぬ!!すごいな!SQL

でもここでさらに疑問が・・・。
え?入金額と出金額が数値じゃないとだめってどうしてわかるんだよ!
➩これは そもそも「数値」しか入らないように設定されているから。

列ごとに格納できるデータの種類をデータ型で定めることになっている。

データ型

あー!Railsでテーブル設計した時にデータ型決めたわ〜! なるほど〜〜!
ではデータ型を説明。

データ型とは?
'列ごとに格納できるデータの種類を表すもの'

代表的なデータ型は下記記事がよかったのではっときます!
代表的なデータ型

意外とわかっているようでわかっていなかった・・・。
復習大事!!

データ型

・テーブルの各列には、データ型が指定されている
・列には、データ型で指定された種類の情報しか格納することはできない
・利用可能なデータ型は、DBMS製品によって異なる

製品によって異なるとこは注意していきたいとこですね!

SQLの命令体系

4つの重要なSQL文

ほとんどの命令文は、1章で学習したSELECT,UPDATE,DELETE,INSERTの4つの命令文で実現可能。 これらは4つの命令はDMLという。 または4大命令という。

なんだ!4大命令さえ覚えておけば楽勝じゃん!!と思った私。
違うんです。4つの命令にさまざまな修飾語を付加することで複雑なデータ操作ができるのは
SQLの特徴らしいです。

えええええ!!パニック!!
「FROMっていろんな命令で書けた気がするけど、どれに使えるん?」
「WHEREって、どの命令にもつけていいんだっけ?」
などなど。頭混乱しますよね。

でも大丈夫。4つの命令文法をスッキリとマスターするコツがある!

4大命令をスッキリ学ぶコツ

データ抽出SELECT文の基本構文

SELECT 列名  ←この列のデータを取得しなさい
  FROM テーブル名 ←このテーブルから
(WHERE) 修飾の部分
※ 修飾の部分はなくてもよい

AS + 任意のキーワードをつけることで、別名を定義できる

SELECT 費目 AS ITEM, 入金額 AS RECEIVE, 出金額 AS PAY
  FROM 家計簿 AS NONEYBOOK
WHERE 費目 = '給料'

抽出した時の名前をASで変えられるみたいです。

ITEM RECEIVE PAY
給料 28000 0

データの書き換えUPDATE文の基本構文

UPDATE テーブル名 ←このテーブル情報を更新しなさい
   SET 列名1= 値1, 列名2=値2・・ ←このデータを
(WHERE) 修飾の部分
※ 修飾の部分はなくてもよい

WHEREでどの行を書き変えるべきか指定する
逆に指定せず、書くと全ての行を書き換えてしまう!!
全部のデータを書き換えって・・・注意が必要ですね。

データの削除DELETE文の基本構文

DELETE ←削除しなさい
   FROM テーブル名 ←このテーブルを
(WHERE) 修飾の部分
※ DELETE文はWHERE基本つけよう!理由は下記

WHEREでどの行を削除するか指定する
逆に指定せず、書くと・・・すべての行が削除対象となる

WHEREのない DELETE命令は全件削除!!!!

怖すぎる・・・。書籍には・・・本能的に「実行をためらうこと」を身につけて下さい・・って書いてある・・

データ追加INSERT文の基本構文

INSERT INTO テーブル名 ←このテーブルに追加しなさい
            (列名1,列名2,列名3) ←この列に
       VALUES (値1, 値2, 値3・・・) ←このデータを

2行目の (列名1,列名2,列名3)を省略した場合、全列に追加できる!!

INSERT INTO テーブル名 ←このテーブルに追加しなさい
       VALUES (値1, 値2, 値3・・・) ←このデータを

気をつけるべきは、 VALUESの並びはテーブルの列と同じじゃないといかんよ。

4大命令のすべてに共通すること

ここまで基礎文法学習したけど、WHEREの前の部分がどれも似ているのに、微妙違ってて
混乱しないか?
➩大丈夫です!ちゃんとルールがある

処理対処となるテーブル名を必ず指定する必要がある

SQL書き方まとめ

①まず、命令文(SELECTやINSERTやUPDATEやDELETE)を書く
②次にテーブル指示
③テーブル指定より後ろの部分を記述する。
④テーブル指定より前の部分を記述する(SELECT文のみ)

この流れを覚えておけば、混乱しなくてすむと思います!

参考記事

  • スッキリわかるSQL入門ドリル
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?