Contents
ProgateでSQLⅠ(基本操作)
SQLとは
データベースに送る命令をSQLと呼びます。
SQL文
/* SELECT文を用いて、データベースからデータを取得 */ select カラム名 from テーブル名; select name from purcharse; select name, price from purcharse; /* 複数のカラムからデータを取得 */ select * from purcharse; /* 全てのカラムからデータを取得 */ /* where句 */ select * from purchases where category = "食費"; /* 「category」が「食費」のデータを検索 */ select * from purchases where price = 1000; /* 数値のデータを検索(クォーテーションで囲まない) */ select * from purchases where purchased_at = "2017-07-01"; /* 日付のデータを検索 */ select * from purchases where price >= 1000; /* priceカラムのデータが「1000以上」のレコードを検索(比較演算子) */ select * from purchases where purchased_at <= "2017-08-01"; /* purchased_atカラムのデータが「2017-08-01以前」のレコードを検索 */ select * from purchases where name like "%プリン%"; /* 「プリン」という文字を含むレコードを検索(LIKE演算子) */ /* NOT演算子 */ select * from purchases where not price > 1000; /* 条件を満たさないレコードを検索 */ select * from purchases where not name like "%プリン%"; /* 「プリン」という文字を含まないレコードを検索 */ /* NULL演算子 */ select * from purchases where price is null; /* 指定されたカラムのデータが「NULL」であるレコードを検索 */ select * from purchases where price is not null; /* 指定されたカラムのデータが「NULL」ででないレコードを検索 */ /* AND演算子とOR演算子 */ select * from purchases where character_name = "ひつじ仙人" and category = "食費"; /* 条件1と条件2を共に満たす */ select * from purchases where character_name = "ひつじ仙人" or character_name = "にんじゃわんこ"; /* 条件1または条件2のどちらかを満たす */ select * from purchases order by price desc; /* データを並び替える */ select * from purchases where 条件 order by price desc; /* order by句は末尾に記述する */ select * from purchases where 条件 limit 5; /* limit句は末尾に記述する */
ProgateでSQLⅡ(集計関数とグループ化)
select name, price * 1.08 from purchases; /* 四則演算 */ select distinct(name) from purchases; /* nameカラムの重複したレコードを省く */ /* 集計関数 */ select sum(price) from purchases; /* SUM関数(合計) */ select avg(price) from purchases; /* AVG関数(平均) */ select count(*) from purchases; /* COUNT関数 */ select max(price) from purchases; /* MAX関数 */ select min(price) from purchases; /* MIN関数 */ /* グループ化 */ select sum(price), purchased_at from purchases group by purchased_at; /* 購入日でグループ化して、金額を集計 */ select sum(price), purchased_at character_name from purchases /* 購入日とキャラクターでグループ化して、金額を集計 */ group by purchased_at, character_name; /* カテゴリが食費のものを検索し、購入日とキャラクターでグループ化して、金額を集計 */ select sum(price), purchased_at character_name from purchases where category = "食費" group by purchased_at, character_name; /* having句(GROUP BYによってグループ化されたデータを検索) */ select sum(price) from purchases group by purchased_at having sum(price) > 1000;
ProgateでSQLⅢ(サブクエリとJOIN)
サブクエリとは
SQLでは、SQL文の中に他のSQL文を入れることができます。この他のSQL文をサブクエリと言います。
select name from players where goals > ( select goals from players where name = "ウィル" /* サブクエリ(ウィルの得点数を取得) */ );
ASの使い方
「カラム名 AS "名前"」で、カラム名などに別名を定義できます。
select goals as "ウィルの得点数" from players where name = "ウィル"; /* 実行結果 */ ウィルの得点数 14
JOIN(テーブルの結合)
ONで条件を指定して、playersテーブルにcountriesテーブルを結合します。
select * from players join countries on players.country_id(外部キー) = countries.id(主キー);
複数テーブルでのカラムの指定
複数のテーブルに同じカラム名が存在する時は、「テーブル名.カラム名」で指定する必要があります。
select players.name, countries.name /* 同じカラム名なので、テーブル名の指定も必要 */ from players join countries on players.country_id = countries.id;
実行順序
SQLは取得するテーブルを形成してから検索を行うので、FROM・JOINが先に行われます。
1 | テーブルの指定 | FROM |
2 | 結合 | ON・JOIN |
3 | 取得条件 | WHERE |
4 | グループ化 | GROUP BY |
5 | 関数 | COUNT・SUM・AVG・MIN |
6 | HAVING | HAVING |
7 | 検索 | SELECT・DISTINCT |
8 | 順序 | ORDER BY |
9 | LIMIT | LIMIT |
LEFT JOIN(外部キーがNULLの場合も含めてレコードを全て取得)
select * from players left join teams on players.previous_team_id(外部キー) = team.id(主キー);
複数テーブルのJOIN
select * from players join countries on players.country_id = countries.id left join teams on players.previous_team_id = teams.id; /* JOINは複数回使用可能 */
WebProgramming入門
- 01a. 開発環境構築(Windows8.1+VMware Player+CentOS)
- 01b. 開発環境構築(Windows 10+Ubuntu)
- 01c. 開発環境構築(Ubuntu18.04(WSL)+Ansible+Serverspec+WP-CLI)
- 01d. 開発環境構築(WSL2+Ubuntu18.04+Docker)(作成中)
- 02a. AWS環境構築(CentOS6)
- 02b. AWS環境構築(CentOS6+LAMP環境+WordPress)
- 02c. AWS環境構築(CentOS7+Django)
- 02d. AWS環境構築(CentOS7+Ansible+Serverspec+WP-CLI+Munin)(作成中)
- 02z. さくらのクラウド環境構築(CentOS7+Ansible+Serverspec+WP-CLI)
- 03a. WordPress制作入門
- 03b. WordPress制作入門
- 04. トラブルシューティング
- 11. HTML/CSS入門
- 11a. ProgateでHTML&CSS初級
- 11b. ProgateでHTML&CSS中級(ランディングページ)
- 11c. ProgateでHTML&CSS上級(レスポンシブデザイン)
- 11d. ProgateでHTML&CSS(Flexbox編)
- 11e. ProgateでSass(CSSをより便利に効果的に操作する言語)
- 11y. ドットインストールでBootstrap4入門
- 11z. PaizaラーニングでBootstrap4入門
- 12. MySQL入門
- 12a. ProgateでSQL Ⅰ~Ⅲ
- 12b. ドットインストールでmongoDB入門
- 13. PHP入門
- 14. ProgateでRubyⅠ~Ⅴ
- 15a. ProgateでRuby on RailsⅠ~Ⅴ
- 15b. ProgateでRuby on RailsⅥ~Ⅷ
- 15c. ProgateでRuby on RailsⅨ~Ⅺ
- 16. ProgateでPythonⅠ~Ⅴ
- 17. paizaラーニングでFlask入門
- 18a. Django入門1(Djangoの基本の理解)
- 18b. Django入門2(Djangoの動作の理解)
- 18c. Django入門3(Djangoのテンプレートとフォームを理解)
- 18d. Django入門4(お勧め店を投稿できるランチマップアプリの作成)
- 18e. Django入門5(Djangoでユーザー管理)
- 19a. ProgateでjQuery初級編
- 19b. ProgateでjQuery中級編
- 19c. ProgateでjQuery上級編
- 20a. ProgateでJavascript(ES6)Ⅰ~Ⅲ
- 20b. ProgateでJavaScript Ⅳ~Ⅴ
- 20c. ProgateでJavaScript Ⅵ~Ⅶ
- 20d. JavaScriptでCRUDアプリを作る(ELOOP)