不惑にしてまだ何者でもない者のブログ

Arduino関連、Raspberry Pi関連、プログラミング学習

paizaラーニング『SQL入門編1: SQLの基本文法を学ぶ (全7回)』を受講してみた

2021-02-11 12:57:17 | paiza

『SQL入門編1: SQLの基本文法を学ぶ (全7回)』


さぁ、知識ほぼ皆無の『DB/SQL入門編 (全2レッスン) 』をやっていこう。
まずは、『SQL入門編1: SQLの基本文法を学ぶ (全7回)』からだ。

ここで、ようやく覚悟を決めて、MySQLとかphpMyAdminとかのインストールをして、環境構築を行うか〜😕 
以下のサイトを参考にインストール作業を進めることにする。
って、いきなり挫折。上記のURLだとMySQLに関する記事なので、イマイチやりたいこと(phpMyAdminのインストール)につながらない感じだった。

そこで、phpMyAdminのインストール方法が記載されている
をみると、まず前提条件として「Ubuntu 20.04にLAMPスタックをインストールする」必要があるとのことだった。
にしたがって、LAMP環境を構築しようと試みた。
しかし、上記でPHPまでインストールし終えたものの、ブラウザでphpをうまく表示できず、Firefoxだと真っ白の画面となり何も表示されず、Chromeだとソースが表示されるだけだった。
そうこうしてるうち、以下のサイトに行き当たり、
『Apache の設定』の『モジュールの有効化と Apache の再起動』を試したところ、phpのコードが適切に処理され、phpinfoが表示されることを確認できた。

他にも色々試したから、結局何が効いたのかよくわからなくなってしまった😵 
なんか途中でphp7.4-fpmってのをインストールしたせいで、
phpinfoで表示されるConfiguration File (php.ini) Pathがそれになっているけど、
大丈夫なんだろうか?😟 

まぁとりあえずこれで良しとするか。

結局、LAMP環境構築に2日もかかってしまった。

LAMP環境が整ったので、あとは先程のphpMyAdminのインストール方法に従って作業を進めた結果、

と思ったら今度は、MySQLサーバにログインできないっ!?
rootで入ろうとしてダメだったので、
MySQLユーザーアカウントを作成して、データベースへの権限を与えることで、操作できるようにした。

その後、rootユーザーに関する注意書きを読んで、
caching_sha2_passwordプラグインではなく、
mysql_native_passwordでroot認証した方がよい、
とのことで設定し直したところ、ログインすることができた。

つーか、こんなの誰が分かるんだ?😡 

メモ

#01:データベースを知ろう

  • このレッスンでは、データベースとSQL(エスキューエル)について、学んでいく。
  • データベースの構成要素
構成要素意味
テーブルデータを格納する表
行 / レコードテーブルの横のデータの並びを「行」とか「レコード」と呼びます。データは、この行ごとに、ひとつのかたまりになっています。
カラム / 列各レコードが持つデータの要素。
リレーション複数のテーブルを組み合わせる場合の関連付け
SQL代表的なデータベース問い合わせ言語。データベースに対する操作は、プログラムのような文字ベースの命令をSQLの文法に従って記述します。

#02:データベースを準備しよう

データベースとSQLを学習するため、MySQLとphpMyAdminを使って、簡単なデータベースを作成していく。そして、phpMyAdminでSQLを実行する基本的な操作手順を学んでいきます。

#03:テーブルの中身を見てみよう

  • SQL文の例
    • -- 全てのデータを取り出す
      SELECT * FROM players;
    • -- 一部のカラムだけ取得する
      SELECT name, level FROM players;
    • -- 一部の行だけ取得する
      SELECT * FROM players WHERE level >= 7;.
    • -- 複数の条件を組み合わせる
      SELECT * FROM players WHERE level >= 7 AND job_id <> 6;
    • --条件指定とカラム選択を組み合わせる
      SELECT name, level FROM players WHERE level >= 7;
#04:いろいろな情報を取り出そう
  • SQL文の例
    • -- データ件数を表示する
      SELECT COUNT(*) FROM players;
    • --条件に合ったデータの件数を表示する
      SELECT COUNT(*) FROM players WHERE job_id = 6;
    • -- データを並び替えて取得する
      SELECT * FROM players ORDER BY level;
    • -- データを並び替えて取得する 逆順
      SELECT * FROM players ORDER BY level DESC;
    • --上位3件だけ表示す
      SELECT * FROM players ORDER BY level DESC LIMIT 3;
    • -- 職業ごとに人数を集計する
      SELECT job_id, COUNT(*) FROM players GROUP BY job_id;
#05:データを追加・更新・削除しよう
  • SQL文の例
    • -- データを追加する
      INSERT INTO players(id,name,level,job_id) VALUES(11, "霧島1号", 1, 1);
    • -- データを追加して表示する
      INSERT INTO players(id,name,level,job_id) VALUES(12, "霧島2号", 1, 1);
      SELECT * FROM players;
    • -- 一度に複数のデータを追加する
      INSERT INTO players(id,name,level,job_id)
      VALUES
      (13, "霧島3号", 1, 1),
      (14, "霧島4号", 1, 1)
      ;
      SELECT * FROM players;
    • -- データを更新する
      UPDATE players SET level = 10 WHERE id = 11;
      SELECT * FROM players;
    • -- データを更新する。1増加
      UPDATE players SET level = level + 1 WHERE id = 12;
      SELECT * FROM players;
    • -- データを削除する
      DELETE FROM players WHERE id = 13;
      SELECT * FROM players;
    • -- データを削除する
      DELETE FROM players WHERE id >= 11;
      SELECT * FROM players;

#06:2つのテーブルを結合しよう 

  • テーブルの関連付けとは
    テーブルの関連付けとは、重複したデータのテーブルを分割しておいて、必要に応じて、仮想的な1つの表として結合して扱う方法。
  • SQL文の例
    • -- テーブルを結合して表示する(内部結合)
      SELECT * FROM players INNER JOIN jobs ON jobs.id = players.job_id;
    • -- テーブルを結合して表示する(左結合)
      SELECT * FROM players LEFT JOIN jobs ON jobs.id = players.job_id;
    • -- テーブルを結合して表示する(右結合)
      SELECT * FROM players RIGHT JOIN jobs ON jobs.id = players.job_id;
  • 結合の種類
    • - 内部結合(INNER JOIN): 両方のテーブルに共通のデータを表示
    • - 外部結合
      • - 左結合(LEFT JOIN): 左側テーブルを基準に表示
      • - 右結合(RIGHT JOIN): 右側テーブルを基準に表示
      • - 完全外部結合: すべてのデータを表示

#07:結合したテーブルを操作しよう

  • SQL文の例
    • -- 結合したテーブルを操作する
      SELECT * FROM players INNER JOIN jobs ON jobs.id = players.job_id;
    • -- 結合したテーブルで、指定カラムだけ表示
      SELECT name, level, vitality FROM players INNER JOIN jobs ON jobs.id = players.job_id;
    • -- 結合したテーブルで、条件に合った行だけ表示
      SELECT name, level, strength FROM players INNER JOIN jobs ON jobs.id = players.job_id WHERE strength >= 5;
    • -- 職業ごとに人数を集計する
      SELECT job_id, job_name, COUNT(*) FROM players INNER JOIN jobs ON jobs.id = players.job_id GROUP BY job_id;

認定証

環境構築がかなり手こずってしまったが、
データベースのSQLによる操作自体はそんなに難しくはないかな?
もちろんphpMyAdminがあればかもしれないけど。


学習ステータス

このレッスン内で、ジョブが、村人→見習い盗賊→若手盗賊→凄腕盗賊と進化していった。
やっぱり盗賊ってあんまり嬉しくない😅 


最新の画像もっと見る

コメントを投稿