Learning to Code

プログラミング勉強記録

SQLの書き方 GROUP BYとORDER BYの違いなど

バックエンドの言語としてPHPを勉強することにした。
RubyよりPHPのほうが求人が多かった、というだけの理由だ。
PHPというとやはりLAMPとして使用するケースが多いのか、ウェブ上で教材を探すと
ApacheMySQLの知識をある程度前提として書かれているものが多い気がする。
データベースの勉強は今まで全くしてきていないので、基礎知識だけでもやっておこうと思っている。

参考にしているのはこちら ⇛ SQL SELECT Statement

・クエリ 基本の構文

全部はカバーできないが見直し用も兼ねて一部だけまとめる。

SELECT * FROM table_1;

SELECTでデータベースから特定のデータを取り出す。
アスタリスクは全てのデータを取り出す時に使う。FROMでテーブルを指定する。
文末にはセミコロンをつける。
大文字・小文字はどちらも機能するが大文字が一般的?

SELECT * FROM Customers WHERE Name='Taro' OR Name='Ken';

WHEREで特定の条件に一致するデータのみ抽出するようフィルターをかけられる。
ORやANDでつなげることによって複数条件の設定が可能。

SELECT * FROM Guests WHERE NOT Country='Spain' AND NOT Country='France';

このようにWHERE NOT、AND NOTとNOTによる探し方も可能。
この場合は国がSpainでもなく、 かつFranceでもない(両方を満たす)データだけが抽出される。

SELECT * FROM Customers ORDER BY Country DESC;

ORDER BYで結果を昇順/ 降順に並べて抽出できる。昇順はASC (ascending)、降順はDESC (descending)。

INSERT INTO Guests (FirstName, LastName, Address, Sex, ZipCode, Country) 
VALUES ('Taro', 'Sato', 'Chuo-ku, Tokyo', 'Male', '123-4567', 'Japan');

INSERT INTOでテーブルに値を挿入できる。
INTOの後に挿入箇所、VALUESの後に挿入する値を入れる。順番が一致するよう注意。
※IDはデータ追加すると勝手に連番で追加されるので手動で追加は必要ない。

UPDATE Characters
SET CharacterName = 'Isono', City= 'Tokyo'
WHERE CharacterID = 1;

UPDATEはデータの上書きをする。WHEREで指示しないと全データが上書きされるので要注意!
DELETEもほぼ同じ使い方だがDELETE FROMとなる。

SELECT SUM(column_name) FROM table_name WHERE condition;

SUM、AVG、MIN、MAXなどExcelっぽい機能も利用可能。
SELECT SUM(column_name) AS XXXと記述するとAS以降で指定した列名でデータを抽出できる。

SELECT * FROM Customers WHERE CustomerName LIKE '_r%';

LIKEを使うと条件検索する場合に部分一致でも検索できる。
"%" と "" (アンダースコア)をワイルドカードとして使う。
%は0もしくは任意の(字数は問わない)文字、
は任意の1文字を表す。
上の例だと、CustomerNameの2文字目が"r"のデータを抽出する。

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;

GROUP BYはSUMやAVGなど集計機能と一緒に使われることが多い。
上の例ではGROUP BYがないとCustomerIDの合計件数だけが抽出されるが、
GROUP BYによって国別のデータが取れる。

...残りは後日。。