苦手だった副問い合わせ/サブクエリ ~SQL編~ | 名も無い文系プログラマーのブログ

名も無い文系プログラマーのブログ

String [] StudyContents = {"Java", "IT関連の資格", "IT業界", "English", "Trip"};

for(int i = 0; i < StudyContents.length; i++){

System.out.print("学んでいく内容は" + StudyContents[ i ] + "の事です。");

}

おはようございますウシシ

 

今日は今週の研修内容を共有します!

 

先週は前記事にある通りPHPの研修をしていました。

今週はSQLを基本から学び始めて、HTMLのinputタグからPHPの処理を通して直接データベースへ送受信する所まで進みました。

 

 

SQLはいくつかありますがSenはMySQLのphpMyAdminの少し古い5.6くらいのバージョンを使って練習していました。

 

phpMyAdminは本来のSQLの様にCUI(Character User Interface)だけでなくGUI(Graphical User Interface)でデータベースを更新できる優れものです。

 

しかし研修では基本コマンドを打ちました笑

 

まずSQLの課題内容を共有したいと思います!

課題に入る前にeducationデータベースを作成して社員テーブル(Human_Master)、給与テーブル(Allowance_Master)、年齢テーブル(Age_Master)の三つを作成します。

 

 

さっそくデータベース作成とテーブル作成にDDL(Data Difinition Language)を使用します。

 

あっ!! 何それって思ったらすぐググりましょう笑

SenがDDLとは〜である。

 

という方が親切で読みやすいブログなのは分かりますが、プログラマーたるものGoogle先生とは常に会話が必要になるので普段から仲良くしておくことが仕事の効率化に繋がります。

 

 

はい。話それました。

 

データベース作成コマンド

============================================

CREATE DATABASE education;

============================================

色々オプションで加えられますが、シンプルにいきましょう。

シンプルイズザベストオブマイライフ!

セミコロン!!!!!!セミコロン!!!!!!!

プログラマーにとって命の次に大切なセミコロン!!!!!

忘れずに。

 

 

テーブル作成コマンド

============================================

CREATE TABLE education.Human_Master (

id int AUTO_INCREMENT,

name varchar(20),

gender varchar(20),

date_birth date,

date_hire date,

PRIMARY KEY(id)

);

 

CREATE TABLE education.Allowance_Master (

id int AUTO_INCREMENT,

Salary int,

PRIMARY KEY(id)

);

 

CREATE TABLE education.Age_Master (

id int AUTO_INCREMENT,

age int,

PRIMARY KEY(id)

);

 

============================================

 

こんな感じに設計!!

ここまで完了したら、少し面倒ですが手打ちでHuman_Materにだけあなたの好きなヒューマンを作成してください。

あっ作成にはDML(Data Manipulation Language)を使用します。

 

それではここまで準備が整ったら課題の始まり始まり〜〜

============================================

課題1

社員テーブルに社員を10人追加(insert)

 

課題2

給与テーブルに給与を10分適当に追加(insert)

 

課題3

年齢テーブルに社員全員分の年齢を社員テーブルのdate_birthカラムからSQLで設定(insert)

 

課題4

社員テーブルの全件全項目を表示(select)

 

課題5

社員テーブルの男性のみ表示(select)

 

課題6

社員テーブルも未成年のみ表示(select)

 

課題7

社員テーブルの入社順序が古い人から5人表示(select)

 

課題8

社員全員分のID・名前・年齢・給与を表示(select)

 

課題9

入社順が新しい方から5人、そこから年齢が若い順に4人、そこから給与が安い順に3人に絞ってID・名前・年齢・給与を表示(select) 最終的に3人だけ出力される。

 

課題10

社内ルールが変更になり年収=年齢*150.000円になったため、給与テーブルにこの変更を適用する。

給与=月収(年収の1/12)とする。

一回の更新で全社員の給与を変更する。

 

課題11

給与が1番安い1名が退職することになったため、Deleteで削除

(Deleteする前にSelectでwhere句による対象者の絞り込みが正しい確証を得てから実施)

削除対象は社員テーブル、給与テーブル、年齢テーブルの3テーブルです。

 

課題12

所属する男性社員の名前と給与だけを表示

 

課題13

成人している男性社員の名前と年齢だけを表示

 

課題14

社員マスタと給与マスタから女性社員のデータを表示

============================================

 

この課題をしていて面白かったのが、研修生それぞれ色んな書き方をしていました笑

なのでみんな実行速度もバラバラだし、ネットに載ってるのにバージョンの関係で使えないコマンドがあったりして苦戦していたことです。

 

もちろんSenもその一人です笑

 

 

 

この後にトランザクションについても学びました。

学んで思ったのは課題11あたりを一つのトランザクションにまとめて実行してみることです。

ぜひ時間があったら試してみてください。

 

課題を解いていてわからないことあったらコメントいつでも待ってます真顔

 

今までコメントなんてもらったことがなくて前記事でいただいたレスポンスが遅くなってしまいました。

 

これからはこまめに登録したアドレステェックしまーす。

 

 

 

 

それではアディオスメラメラ

 

今週の靴磨き

手前からUnion Imperial prestige, Edward Green, Carmina Pattern Orderです。

 

$Leather_Shoes = array("Union Imperial", "Edward Green", "Carmina Pattern Order");

foreach($Leather_Shoes as $value) {

     echo $value."<br>";

};