SQLの基本文法について - Hashimoto-Noriaki/IT-basic GitHub Wiki
SQLとはデータベース言語と言ってプログラミング言語ではありません。
データベースを操作するための言語です。
言い換えるとSQLを使いデータベースに命令を出す言語です。
このSQLからの命令を受け取るのはDBMS(データベース管理システム)
と呼ばれるプログラムです。
字の通りDBを管理するものです。
※ DB(データベースの略称) これからはDBと略します。
これがSQLによりファイルを消したり書き換えたりされます。
SQLの書き方のルールを説明していきます。
①文の途中に改行を入れ、行の先頭や途中に半角のスペースが入れられる
②SQLのコメントアウトの方法 コメントアウトの方法は以下の2つです。 1 -- ハイフン2つ 2 /から/までがコメントになる
/* 野球部の3年生のデータ*/
SElECT 体重, 身長 --体のデータのみ
FROM 3年生
③予約語について SELECTやWHEREなどの命令にう使う単語は***予約語(keyword)***と言って 大文字と小文字の区別がありません。
ex) SELECT * from 3年生 sELect * FroM 3年生
でもデータを取得できたりします。 ただこれだとわかりづらいので大文字や小文字を揃えたりします。
'のようなシングルクオテーションはデータの種類そのものを表します。 数値や文字列など表記どおりの値の総称です。390、"PHP"、2021-12-27といった数値や文字列、 日付がリテラルにあたります。
⚫︎リテラルの記述のルール
・'が使われていない記述は数値として扱われる。
・'が使われている記述は数値文字列として扱われる。
・'が使われていて'2021-12-27'のような記述は日付として扱われる。
ex) 1000は数字として扱われるが、'1000'は文字としての扱い。
INSERT INTO 3年生
VALUES ('2021-12-27','ピッチャー',70) --日付は日付として扱い。ピッチャーは文字列。70は数字
もし数値が下のように文字列としてDBに入れたら大変です。
VAlUES ('70','180')
この数値が 身長や体重のデータだったら尚更大変ですよね?
そこで数値が文字列としてデータの中に入らないための機能がDBにはあります。
DBには複数のテーブルがあり、行と列から成り立っています。
列には名前があり、列ごとに格納できるデータの種類を表すデータ型を定めています。
⚫︎データ型の種類
データ | 区分 | データ型の種類 |
---|---|---|
数値 | 整数値 | INTEGER型 |
数値 | 少数 | DEMICAL型,REAL型 |
文字列 | 固定長 | CHAR型 |
文字列 | 可変長 | VARCHAR型 |
日付と時刻 | DATETIME型,DATE型,TIME型 |
引用 スッキリわかるSQL入門より
特にINTEGER型、CHAR型、VARCHAR型は多くのDBMS製品で利用されているみたいです。
⚫︎補足 DBMSとは https://it-trend.jp/database/article/89-0070
●データ型の特徴
・テーブルの各列にはデータ型が指定
・列には、データ型の種類の情報しか入らない
・DBMS製品によって利用できるデータ型が異なる
⚫︎VARCHAR型(可変長)とCHAR型(固定長)の違い
・VARCHAR型(可変長)は氏名や本やプロジェクト名などのデータの桁数が変動するもの
・CHAR型(固定長)は社員番号やID、郵便番号などのデータの桁数が決まっているもの
⚫︎補足 https://legoliss.co.jp/【sql】統一ルールを作ろう!おすすめsql記述ルール/
⚫︎参考資料 https://www.amazon.co.jp/スッキリわかるSQL入門-第2版-ドリル222問付き-スッキリシリーズ-中山清喬/dp/4295005096
https://qiita.com/chida09/items/d4b33a28b918958f267f
https://rfs.jp/sb/sql/s02/01-20.html#:~:text=と予約語-,リテラル(literal),列、日付がリテラルにあたります。
# **SQLの基本文法について**SQLとはデータベース言語と言ってプログラミング言語ではありません。
データベースを操作するための言語です。
言い換えるとSQLを使いデータベースに命令を出す言語です。
このSQLからの命令を受け取るのはDBMS(データベース管理システム)
と呼ばれるプログラムです。
字の通りDBを管理するものです。
※ DB(データベースの略称) これからはDBと略します。
これがSQLによりファイルを消したり書き換えたりされます。
SQLの書き方のルールを説明していきます。
①文の途中に改行を入れ、行の先頭や途中に半角のスペースが入れられる
②SQLのコメントアウトの方法 コメントアウトの方法は以下の2つです。 1 -- ハイフン2つ 2 /から/までがコメントになる
/* 野球部の3年生のデータ*/
SElECT 体重, 身長 --体のデータのみ
FROM 3年生
③予約語について SELECTやWHEREなどの命令にう使う単語は***予約語(keyword)***と言って 大文字と小文字の区別がありません。
ex) SELECT * from 3年生 sELect * FroM 3年生
でもデータを取得できたりします。 ただこれだとわかりづらいので大文字や小文字を揃えたりします。
'のようなシングルクオテーションはデータの種類そのものを表します。 数値や文字列など表記どおりの値の総称です。390、"PHP"、2021-12-27といった数値や文字列、 日付がリテラルにあたります。
⚫︎リテラルの記述のルール
・'が使われていない記述は数値として扱われる。
・'が使われている記述は数値文字列として扱われる。
・'が使われていて'2021-12-27'のような記述は日付として扱われる。
ex) 1000は数字として扱われるが、'1000'は文字としての扱い。
INSERT INTO 3年生
VALUES ('2021-12-27','ピッチャー',70) --日付は日付として扱い。ピッチャーは文字列。70は数字
もし数値が下のように文字列としてDBに入れたら大変です。
VAlUES ('70','180')
この数値が 身長や体重のデータだったら尚更大変ですよね?
そこで数値が文字列としてデータの中に入らないための機能がDBにはあります。
DBには複数のテーブルがあり、行と列から成り立っています。
列には名前があり、列ごとに格納できるデータの種類を表すデータ型を定めています。
⚫︎データ型の種類
データ | 区分 | データ型の種類 |
---|---|---|
数値 | 整数値 | INTEGER型 |
数値 | 少数 | DEMICAL型,REAL型 |
文字列 | 固定長 | CHAR型 |
文字列 | 可変長 | VARCHAR型 |
日付と時刻 | DATETIME型,DATE型,TIME型 |
引用 スッキリわかるSQL入門より
特にINTEGER型、CHAR型、VARCHAR型は多くのDBMS製品で利用されているみたいです。
⚫︎補足 DBMSとは https://it-trend.jp/database/article/89-0070
●データ型の特徴
・テーブルの各列にはデータ型が指定
・列には、データ型の種類の情報しか入らない
・DBMS製品によって利用できるデータ型が異なる
⚫︎VARCHAR型(可変長)とCHAR型(固定長)の違い
・VARCHAR型(可変長)は氏名や本やプロジェクト名などのデータの桁数が変動するもの
・CHAR型(固定長)は社員番号やID、郵便番号などのデータの桁数が決まっているもの
⚫︎補足 [https://legoliss.co.jp/【sql】統一ルールを作ろう!おすすめsql記述ルール/](https://legoliss.co.jp/%E3%80%90sql%E3%80%91%E7%B5%B1%E4%B8%80%E3%83%AB%E3%83%BC%E3%83%AB%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86%EF%BC%81%E3%81%8A%E3%81%99%E3%81%99%E3%82%81sql%E8%A8%98%E8%BF%B0%E3%83%AB%E3%83%BC%E3%83%AB/)
⚫︎参考資料 [https://www.amazon.co.jp/スッキリわかるSQL入門-第2版-ドリル222問付き-スッキリシリーズ-中山清喬/dp/4295005096](https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8BSQL%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E3%83%89%E3%83%AA%E3%83%AB222%E5%95%8F%E4%BB%98%E3%81%8D-%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E4%B8%AD%E5%B1%B1%E6%B8%85%E5%96%AC/dp/4295005096)
https://qiita.com/chida09/items/d4b33a28b918958f267f
[https://rfs.jp/sb/sql/s02/01-20.html#:~:text=と予約語-,リテラル(literal),列、日付がリテラルにあたります。](https://rfs.jp/sb/sql/s02/01-20.html#:~:text=%E3%81%A8%E4%BA%88%E7%B4%84%E8%AA%9E-,%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB%EF%BC%88literal%EF%BC%89,%E5%88%97%E3%80%81%E6%97%A5%E4%BB%98%E3%81%8C%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB%E3%81%AB%E3%81%82%E3%81%9F%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82)