予備知識ポートのデフォルトは3306大文字小文字は区別されない。混じっていても実行できる。nullを指定するselectでつけた別名はorderby区でも使えるログインするuseしたいデータベースがあれば引数で指定できる。user();データベースを表示する。information_schema/performance_schema/mysqlはmysqlが管理しているものなので、うっかり消さないように注意すること。データベース名;ユーザを作成・設定するlocalhostはローカルホストからアクセスしてくるユーザという意味。byはパスワードを設定する用語。dbuser01/dbuser01にした。grant命令allは全ての権限を与える。onでDB名を指定、*が全てのテーブルに対してという意味。これでrootユーザを抜けて、一般ユーザで入ってもデータベースにアクセスできる。databases;で確認しても権限を与えられたDBしか見れない。user();で確認してもちゃんと一般ユーザの名前が表示される。ユーザー名@localhost;ユーザを削除するlocalhostはどこからアクセスしているのかを示す。mysql.user;コマンドを書かれた外部ファイルを作る。テキストファイルを作るのだが、拡張子をsqlにする。tables;これでviewも一緒に見ることができる。unsigned文字列string固定長ならchar可変長ならvarcharかtext長さがわからない可変長はtext商品コードのようなものはchar、メールアドレスのように長さが変わるものはvarcharなどの使い分けをするとよい。複数の文字列から1つだけを格納できるデータ型。この中の1つしか格納できない。これ以外のデータを格納しようとすると、何も代入されない。有効なデータ以外を無効にすることができる。3のように指定することもできる。enum('gold','silver','bronze')set型enum型は1つしか選べないが、set型は複数選ぶことができる。値を代入するときはカンマ区切りで渡す。テーブル名が基本、その後にaddやdropやchangeなど何をするのかが来る。判定するbinary演算子binaryをつけたら、tanakaは含まれない。len条件分岐をするif文scoreを比較して3つ目のカラムにOKやNGを表示する。resultfromusers;条件分岐をするcase文case文の最後はendで締める。asを使って別名をつける方がベター。下記はtypeという別名。users;whenのところに直接書く書き方もある。tableをしつつ、asをつけて後ろにselect文。users;行数をカウントするnullがあるカラムを指定するとそれは除外される。havingwhereと一緒に使った場合は、where条件で集計した後にhavingで抽出することになる。10;サブクエリ集計用の別テーブルを作る手間を省ける。transactionからcommitという処理は必ずまとめて行われる保証がされる。ちなみに下記2行目のupdateをupdataにして、やってみると、1行目は成功して、2行目は失敗だけど、両方の数字は変わらなかった。transactionをつけなければ、確かに1行目だけ実行されてしまった。'taguchi';commit;索引を設定する(データ抽出が早くなる効果)ちなみにPrimaryKeyには必ず索引が作られる。索引はデータの追加や更新処理を行うたびに作り直されるので、逆にそちらの処理が遅くなるデメリットもあるので、考えて索引を付けるようにすること。アプリケーションの速度が遅い場合は索引を付けたり外したりして調整してみるのも良い。users;索引が使われているか確認する索引を設置したscoreをwhere文で使うと、explainのpossible_keysで使っているのが解る。逆にnameをwhere文で使うと、explainで何も表示されない。join2つのテーブルに共通のデータだけを取得する方法。カラムを指定する場合は、テーブル名を前につけるが、同じものが無い場合はつけなくてもよい。join2つのテーブルで一致しないデータも含めてデータを取得する方法。外部結合はどちらのテーブルを軸にするかで構文が異なる。outerは省略できる。comments.post_id;外部キー制約ウチでいう、JNF010が無いのに、JNF020が作られるのはおかしい。それをそもそもそういった変なデータが登録できない制約をかける。設定するときは関連づけるカラムの型が一致していないとダメ。これを設定してからいわゆるJNF020側に一方的に追加した場合、エラーメッセージが表示され、登録されない。データの整合性をとるには便利な仕組み。外部キーが設定されていれば、削除することも難しくなる。last_insert_id()下記の例ではcommentsのpost_idに使っている。これはpostsのincreamentのIDと同じ値なので、直前の値を取得すればOK。comments内の1つ前のIDをincrement的に取得するのではないので注意。ちなみにこの下に同じinsert文を付けるのはダメ。すると、commentsに挿入したIDを取得してしまうから。直前のIDということ。post');トリガーを使うテーブルに処理を施したのをイベントとして処理を施す。使い方次第で、insert/update/deleteの前や後に処理を追加することができる。afterではなくbeforeにすることで処理前のデータを取得できる。post_insert_trigger;トリガーの一覧を表示する\Gをつけると見やすく表示してくれる。小文字のGはエラーになる。\G;区切り文字;を変更する終わったらまたdelimiterで元に戻しておくこと。;トリガーの中で処理前や処理後のカラムの値を取得するpostsテーブルをupdateした後に処理が走る。oldとnewで値を取得できる。2;NOTを使ういつもwhere文の否定は<>で判定しているが、NOTを使うのも悪くないかも。最大で何件データを取得するかLIMIT使い方は簡単。BYとLIMITを併用する場合は、LIMITの方を後にする。重複データを省くDISTINCT使い方はSELECTの後に指定するだけ。いままで括ったことなかったけど、カッコでくくるらしい。BYでやっていたけど、よく考えたらDISTINCTでいいんだよな。グルーピングして金額を集計するとかそういのじゃなくて、単なる項目をリスト化するだけならこちらの方が使いやすそう。BYでまとめたけど、特に集計したい項目が無い場合はこちら。NULLのデータはカウントされないたとえばCOUNT関数しようと思っても、NULLがあるカラムのNULLデータはカウントされない。NULLも含めてカウントしたいのならCOUNT(*)にすること。すればレコード数でカウントしてくれる。by->関数->HavingHAVINGの注意点Whereで絞り込み、Groupbyで集計された後のデータをさらに絞り込む場合に使う。指定するカラムは必ずグループ化された後のカラムを使うこと。DBクラスとクエリビルダとEloquentをそれぞれprint_rしてみた青本で学習しながら、開発しながらを繰り返してなんとかやっている。私の場合はAS400(DB2)の開発にLaravelを使っているので、データベースに関しては神経を使っている。サブファイルのフィールドごとに文字色を変えるこんなことは当たり前の話かもしれないが、講習会に行くお金も出ない会社でずっと黙々と自社で開発していると、こんな情報も入ってこない悲しい話。簡単な説明Windowsではテキストファイルを編集するとき、メモ帳やTeraPadなどを使いますが、LinuxではVimというのを使います。たかがテキストの編集だろと思ったら大間違い。1/3とりあえず前回の回までで、XAMPP環境でAS400のGUI化を構築して運用する手順は完成しました。出向中の先輩から、「ウチの会社のTwitterをプロジェクターで映したいのだがいい方法はないか」と相談を受けた。満潮時に潮干狩りはできません江戸川放水路でアサリとマテ貝を捕る江戸川放水路のカキを喰ってみた&潮干狩り江戸川放水路でホンビノスカーニバルジャキン!扇子を買いました。満潮時に潮干狩りはできません江戸川放水路でアサリとマテ貝を捕る江戸川放水路のカキを喰ってみた&潮干狩り江戸川放水路でホンビノスカーニバルジャキン!扇子を買いました。