『SQL入門編1: SQLの基本文法を学ぶ (全7回)』
さぁ、知識ほぼ皆無の『DB/SQL入門編 (全2レッスン) 』をやっていこう。
まずは、『SQL入門編1: SQLの基本文法を学ぶ (全7回)』からだ。
ここで、ようやく覚悟を決めて、MySQLとかphpMyAdminとかのインストールをして、環境構築を行うか〜😕
以下のサイトを参考にインストール作業を進めることにする。
https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04-jahttps://qiita.com/houtarou/items/a44ce783d09201fc28f5
って、いきなり挫折。上記の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の文法に従って記述します。 |
- 代表的なリレーショナルデータベースシステム
- MySQL
- SQLite
- PostgreSQL
- OracleDatabase
- Microsoft SQL Server
- SQLの参考情報
- 初心者でもほぼ無料でSQLを勉強できるコンテンツ8選 - paiza開発日誌
http://paiza.hatenablog.com/entry/2015/06/10/%E5%88%9D%E5%BF%83%E8%80%85%E3%81%A7%E3%82%82%E3%81%BB%E3%81%BC%E7%84%A1%E6%96%99%E3%81%A7SQL%E3%82%92%E5%8B%89%E5%BC%B7%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%848%E9%81%B8 - とりあえずこれだけ知っとけSQL
http://ash.jp/db/sql.htm - 1週間で学ぶIT基礎の基礎 - 忙しいあなたのためのSQL入門---目次:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20061213/256848/ - SQL攻略 - SQL攻略マップ
http://sql.main.jp/cont/sql/map.html - 逆引きSQL構文集
http://www.sql-reference.com/ - MySQL :: MySQL 5.6 リファレンスマニュアル
https://dev.mysql.com/doc/refman/5.6/ja/
- 初心者でもほぼ無料でSQLを勉強できるコンテンツ8選 - paiza開発日誌
#02:データベースを準備しよう
データベースとSQLを学習するため、MySQLとphpMyAdminを使って、簡単なデータベースを作成していく。そして、phpMyAdminでSQLを実行する基本的な操作手順を学んでいきます。
- 簡単に手に入るLAMP環境
- 就活パック LAMP環境を構築しよう - AWS編
https://paiza.jp/works/aws/primer - XAMPP:ローカルPCにインストールできるLAMP環境
https://www.apachefriends.org/jp/index.html
- 就活パック LAMP環境を構築しよう - AWS編
- LAMP:Linux, Apache HTTP Server, MySQL, (Perl, PHP, Python)を総称した頭文字からなる造語。
- phpMyAdminの参考資料
- phpMyAdminの使い方
http://www.dbonline.jp/phpmyadmin/
- phpMyAdminの使い方
#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があればかもしれないけど。
学習ステータス
このレッスン内で、ジョブが、村人→見習い盗賊→若手盗賊→凄腕盗賊と進化していった。
やっぱり盗賊ってあんまり嬉しくない😅
※コメント投稿者のブログIDはブログ作成者のみに通知されます