20210915のMySQLに関する記事は3件です。

MySQL group by句 が指定すべきカラムについて

MySQLでのGROUP BYの処理 問題演習を行っていた際に躓いた箇所があったため、備忘録として記録します。 以下のリンクの問題で私は 私の回答 SELECT p.name '名前', p.position 'ポジション', p.club '所属クラブ', count(g.id) 'ゴール数' FROM players p LEFT JOIN goals g ON g.player_id = p.id GROUP BY p.name ORDER BY 'ゴール数' DESC; と上記のように回答しました。 しかし、正解は 正解 SELECT p.name AS '名前', p.position AS 'ポジション', p.club AS '所属クラブ', COUNT(g.id) AS 'ゴール数' FROM players p LEFT JOIN goals g ON g.player_id = p.id GROUP BY p.id, p.name, p.position, p.club ORDER BY 'ゴール数' DESC です。 私の回答と正解とで異なる点は「GROUP BY」が指定するカラムです。 私の回答では「p.name」だけであったのに対し、正解では「p.id, p.name, p.position, p.club」とplayersテーブルから抽出する全てのカラムを指定しています。 MySQL 5.6 リファレンスマニュアルによると、 標準 SQL では、GROUP BY 句を含むクエリーは、GROUP BY 句で名前が指定されていない選択リスト内の非集約カラムを参照できません。たとえば、このクエリーは、選択リスト内の name カラムが GROUP BY に表示されていないため、標準 SQL では不正です。MySQL では、選択リストが GROUP BY 句で名前が指定されていない非集約カラムを参照できないように、GROUP BY の使用が拡張されています。つまり、上記のクエリーは MySQL では正当です。この機能を使用すると、不要なカラムのソートおよびグループ化が回避されるため、パフォーマンスを改善できます。ただし、これは主に、GROUP BY で名前が指定されていない各非集約カラム内のすべての値がグループごとに同じである場合に役立ちます。サーバーは各グループから任意の値を自由に選択できるため、同じ値でなければ、選択した値は不確定です。さらに、ORDER BY 句を追加しても、各グループからの値の選択が影響を受ける可能性はありません。値が選択されたあとに結果セットのソートが発生しますが、ORDER BY によって、サーバーで選択された各グループ内の値は影響を受けません。 とのように記述があります。 つまり、私の回答はMySQLにおいては不備にはならないけれども、GROUP BY で名前が指定されていないカラム内の値がグループごとに異なる場合はエラーとなるので気を付けましょうってことです。今回はたまたま、値がおんなじであったためエラーとはならずに出力できました。 まとめ 今後「GROUP BY」を使用する際は、クエリ内の「FROM」で指定したテーブルの全てのカラムを指定することを誓います。 リンク MySQL 5.6 リファレンスマニュアル:https://dev.mysql.com/doc/refman/5.6/ja/group-by-handling.html
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHP初心者に超オススメのUdemy講座6つを厳選!web入門者必見

この記事では、Udemyのオススメ初心者向けPHP講座を紹介します。 ・未経験だけどwebアプリケーションを作れるようになりたい ・将来的にサーバーサイドエンジニアになりたい ・自分でコードを書くかは未定だけど、ウェブサービスを作って起業したい といった人にオススメできるものをチョイスしました。 PHP+MySQL(MariaDB) Webサーバーサイドプログラミング入門 おすすめ度:★★★ ・PHP+MySQL(MariaDB) Webサーバーサイドプログラミング入門 この講座で学べる内容 ・PHPの基礎知識とMySQL(MariaDB)の基礎が修得できる ・SQLの基礎が修得でき、データベースを利用したプログラムを作成できる ・PHPを利用したプログラムを作成でき、サーバーサイドのWebサービスを開発できる ・データベースと連携した、Webサービスを開発・カスタマイズできるようになる 【PHP, MYSQL, Apache】ガチで学びたい人のためのWEB開発の基礎(バックエンド編) おすすめ度:★★★★★ ・【PHP, MYSQL, Apache】ガチで学びたい人のためのWEB開発の基礎(バックエンド編) この講座で学べる内容 ・どのような技術が組み合わさってWEBシステムが動いているのか、その基礎を体系的に学びます。 ・開発に欠かせないWEBの基礎知識について学びます。 ・PHPの基本的な文法について学びます。 ・開発で頻出する正規表現の使い方について学びます。 ・PHPの名前空間、クラスを使った記法について学びます。 ・データベースの実践的な設計手法について学びます。 ・SQLを使ったデータベースの操作方法について学びます。 ・Apacheの設定方法について学びます。 ・サーバーとブラウザのやり取りを可視化し、その仕組みを学びます。 ・Apacheの設定を通してパフォーマンス改善の基礎を学びます。 【HTML,CSS,JS,PHP,Git,Docker】✅ プログラミング初心者OK! ゼロからわかるWebシステム開発 おすすめ度:★★★★ ・【HTML,CSS,JS,PHP,Git,Docker】✅ プログラミング初心者OK! ゼロからわかるWebシステム開発 この講座で学べる内容 ・Webアプリケーションの基礎 ・HTML / CSSを用いた静的なWebページの構築 ・JavaScript を用いたプログラミング入門 ・PHPを用いた動的なWebページの構築 ・ターミナル / コマンド操作の基礎 ・AWS(クラウドコンピューティングサービス)を活用したWebサーバーの構築 ・独自ドメインやSSL/TLSの設定 ・Gitを活用した開発フローの学習 ・Dockerを活用した開発環境の構築 ・プログラミング設計(MVC)/ UnitTest の基礎 PHP 7/8 プログラミング マスター講座 おすすめ度:★★★ ・PHP 7/8 プログラミング マスター講座 この講座で学べる内容 ・PHPを利用したプログラミング開発手法 ・PHP 7以降の新しい言語仕様 ・MAMPを利用したウェブサーバーでの PHP開発手法 ・データベース(MySQL/MariaDB)との連携方法 基礎だけ学ぶ PHPプログラミング講座 おすすめ度:★★★★★ ・基礎だけ学ぶ PHPプログラミング講座 この講座で学べる内容 ・PHPプログラミングの基礎が学べます。 ・Webアプリケーション開発の基礎が学べます。 ・ターミナルでのコマンド操作を学べます。 ・開発環境の作り方など、プログラミングの流れを理解できます。 【3日でできる】はじめてのLinuxサーバー構築入門(CentOS 7・PHP 7・Docker対応) おすすめ度:★★★★★ ・【3日でできる】はじめてのLinuxサーバー構築入門(CentOS 7・PHP 7・Docker対応) この講座で学べる内容 ・さくらのVPS上にCentOS 7をインストールできる ・PHP7で、LAMP環境(Webサーバー)を構築できる ・LAMP環境にWordPressをインストールできる ・DockerでWordPressサイトを作れる Udemy関連記事 ・SQL未経験者にオススメのユーデミー動画講座6選!データ分析したい人向け ・【Python】サーバーサイド初心者にオススメのUdemyのDjango動画講座5選 ・iPhoneアプリ作成入門に最適なUdemyのオススメSwift講座5選 ・【学習効果・高】ブロックチェーン入門に最適なUdemy講座おすすめ6選 ・Typescript入門におすすめのユーデミー講座5選。JS未経験者も可
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

brewでインストール済のローカルMySQL5.7にログインしたらエラー「ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)」が出て、パスワード変更したら無事ログインできた

タイトルの通りです。 背景 HomebrewでMySQL5.7インストール済 rootユーザーでログインできなくなった(以前はできていた) パスワードを変更してみよう 変更前と同じDBがあるか確認もできました 環境 MacOS Bigsur(Ver 11.4) Homebrew 3.2.10 MySQL 5.7.34(Ver 14.14) 手順 rootユーザーログインエラー $ mysql -u root -p #エラー ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) mysqlをストップする $ brew services stop mysql@5.7 Stopping `mysql@5.7`... (might take a while) ==> Successfully stopped `mysql@5.7` (label: homebrew.mxcl.mysql@5.7) mysqlのステータスを確認する $ brew services list Name Status User Plist mysql@5.7 stopped PATHを確認する $ echo $PATH ...../usr/local/opt/mysql@5.7/bin:...... #コロンで区切ってある mysqld_safeで起動(セーフモード) $ /usr/local/opt/mysql@5.7/bin/mysqld_safe --skip-grant-tables #ここで、さっき確認したPATHが必要 #以下が出力される 2021-09-15T06:02:06.6NZ mysqld_safe Logging to '/usr/local/var/mysql/MacBook-Pro.local.err'. 2021-09-15T06:02:06.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql #そのまま以下を入力 update mysql.user set authentication_string=password("新しいパスワード") where user='root'; mysql再起動 sudo mysql.server start いざ、ログイン!! 「update」で新パスワードを設定した後に、画面がなかなか変わらなかったので、ターミナルの別ウィンドウを開いていじってたら、いつの間にか「~ $」(いつもの入力画面)に戻ってました。 ~ $ mysql -u root -p さいごに 新パスワードでログインできた!!! データベースも今まで通りでした。よかった〜 パスワードは変えてないはずだし、ログインできなくなった理由が分からなくて、もやもや。。。 とりあえず今まで通りのDB接続できるので進めます。 参考 Macにbrew installしたmysql Version5.7 rootパスワードを忘れた時の対処方法
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む