20190915のMySQLに関する記事は4件です。

未経験で新規案件でインターンして学んだこと(学生です)

どんな目的で記事を書いているか

とにかくアドバイスが欲しいです(切実)
・技術がどう身についていったかの過程を示してエンジニアで人事をやっている方にいい情報が届くといいな
・今エンジニア目指してる人の就活のお助けにもなったらいいな

自分のステータス

・理系大学院生
・開発経験なし、研究のためにプログラミングは少しやっていた
・触れたことある言語はjava,Ruby,ほんの少しC
・今開発で使っているのはphp(laravel),JavaScript(VueとJQuery)
・インターン初めて今ちょうど4ヶ月くらい

何をどう学んだか

インターンで初めて本格的な環境開発した
インターンするまではDocker使ったことなかったです。もうなにも知らなかった。もちろんPHPも触ったことなし。
でも会社入ったら一番最初に環境開発して〜と言われて何もわからずめっちゃDocker勉強しました。開発の環境は先輩に教えてもらいながらなんとかできたけど、理解できていなかったからDockerの参考書使って自分で0から開発環境作ってみました。これでかなり理解深まった。
そして記念すべきQiita初投稿がこれ
Dockerでnginx+MySQL+Laravelの環境構築からプロジェクト作成・DBへのマイグレーションまで

フレームワークってすごい
今までデータベースを扱ったことがなく、sql文とかも勉強しながら開発してたのですが、フレームワークというものがあったおかげでものすごく理解が早くなった。言語の中身・特徴理解する前にフレームワーク使うのはよくないと言われていますが、自分の場合はフレームワークから入って成長できたと思っています。

とにかく実装できないことが恥ずかしいと思って必死に勉強した
これは環境にもよると思いますが、全く未経験なのにガンガンタスク振られて焦りました。できないです、とか間に合わなかったですを言いたくなくて死に物狂いで勉強しました。

人のコード見て学べる、自分のコードのレビューがもらえる
サービス作ってない時は計算できていればいいやと思っていたものが、現場になると可読性や処理速度を気にするようになった。ただ動けば良いだけではないことを実感できた。

コミュニケーションすごく大切
一人でやっていれば仕様に迷いはないですが、チームの開発だと要件にマッチした実装になっているかがすごく大事。「多分こうだろう」と思って実装したことが無駄になったことがあり、仕様の認識違いがないか都度確認することがとても重要だと学びました。

使えるものは使いまくる
案件によるかもしれませんが、便利なライブラリはどんどん使うべきだと思います。最初は知らないものを使うことに抵抗がありましたが今では新しいものどんどん使いたくてたまらない!とうう感じになってます。その例がこの記事。
Lalavel ScoutでAlgoliaを使って全文検索を実装してみた!
ClosureTableを使って〇〇年のアニメを季節ごとに1テーブルで管理する

公式ドキュメントは神!特に英語版!!!!!!
自分はとても英語が苦手だったのですが、物によっては英語のドキュメントしかない場合があります(Algoliaも英語しかない)。どうしても英語を読まなければいけない状況になってから、「英語の方がわかりやすい!」となりました。日本語にこだわらずになんでも英語で調べたり読んだりすると知識増えるなと思います。

新しい情報に敏感になることが大事
ITの世界は多分他の業界より発展速度が速い。いつまでも昔のやり方にとらわれずにどんどん新しいもの使ってあわよくば自分が新しいツール開発するくらいの意気込みを持っていた方が良い。実年齢は年取っても技術の話では若くいたい!

0から作ることは自信になる
まだリリースはしていないのですが、新規だからこそ今自分が作ったものがリリースされるのが楽しみで仕方ないです。ワクワクが止まらん!

書籍は自分で持っていた方がいい
わからないことは調べれば出てくるという人もいますが、自分は本を買うことを勧めます。わからないことを調べているうちに別のことも学べるので絶対投資すべき!

最後に

とにかくいろんな技術者の人と話していろんなことを吸収していきたいです。YYPHPいきたかったのに終わってしまたの悲しい。。。。。何かいいコミュニティあったら教えてください。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MySQLのサーバーはmysql.server startで起動できる。

ローカル環境でサーバー起動、いつも忘れる

ローカル環境でMySQLサーバーを起動、再起動するコマンド。

起動
mysql.server start
再起動
mysql.server restart

こっちとよく間違える

起動
service mysqld start
再起動
service mysqld restart

最後に

まあこの二種類を使ったことがあるのですが、
環境の違いでしょうね。
前者はMacでローカル環境で使ってました。
後者はAWS、EC2、Amazon Linuxの環境で使ってました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SQLの演算子の優先順位について

SQLの演算子に優先順位があるってことを知らなかったのでメモ

spring data jpaのspecificationでクエリを生成しようとしていたところ

生成したいクエリ
SELECT * FROM WHERE 条件A OR (条件B AND 条件C)
実際に生成されたクエリ
SELECT * FROM WHERE 条件A OR 条件B AND 条件C

どう頑張っても期待するクエリにならずハマった。。
が、上記の2つのクエリを叩いてみると・・・取得結果は変わらず、「?」ってなった。

SQLの演算子の優先順位

演算子の優先順位的に括弧が無くても AND が先に処理されるということでした。。必要ないからspecification側で生成されたクエリには括弧が入ってないってだけだったんですね。
参考欄にMySQLとOracleの演算子の優先順について載せておきます。

参考

Mysqlの演算子の優先順位
Oracleの演算子の優先順位

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Yii1.1でSelect句で指定するカラムにSQL関数やCASE文を使用する方法

Yii1.1を使用する案件を対応しているのですが、ナレッジがあまりないので、まとめてみました。

はじめに

YiiではCActiveRecordCDbCriteriaでSelect句を指定しますが、
COUNT関数やSUM関数を指定して取得する事は出来ましたが、
CASE文やDATE_FORMAT関数を指定した場合にエラーになったので、
対処方法をまとめてみました。

対応方法

CDbExpressionを使用して対応します。

$criteria = new CDbCriteria();
$criteria->select = [
   new CDbExpression("DATE_FORMAT('%Y-%m', t.create_date) AS create_date"),
   new CDbExpression("CASE create_id WHEN create_id = 9999999 THEN 管理者 ELSE ... END AS create_user_name"),
   ...
];
...
$result = Post::model()->find($criteria);

CDbExpressionは、公式サイトNOW関数を使うパターンが紹介されています。
今回の実装方法はこの応用になるのかなと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む