from electron 2 web

インターネットのリソースを無駄遣いして検索におけるUXを下げてごめんなさい

圧倒的文章力のNASAでゴミみたいなチラ裏のようなメモを量産してしまい全ての"Web開発者"にごめんなさい

mysqlをいじりまくる

初心者なので当たり前のこと書いてても許してくらさい

  • create tableで主キー作ると自動的にindexが張られる。

初めて知った。ていうかcreate tableするときauto_incrementの場合は_いるのにprimary keyはいらないの罠。

  • indexを見るときはshow index from XXXでいける。

インデックスにもいろいろ種類とかオプションとかあるっぽい。

  • indexは一つのテーブルに一つしか設定できない、またauto_incrementをつけるとdefaultは設定できない。

かなり意外だった。

ERROR 1067 (42000): Invalid default value for 'user_id'

ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

列単位で間違ってると前者で表単位で間違ってると後者になる?

  • パフォーマンスを計測するときselectの前にexplainをつけると面白い。

面白い(コナミ

なんか普通のselect文と180度ぐらい違う表が出てくる。読み方がわかるとは言ってない

  • drop tableにfromはいらない。

たまにミスる。こういうのがサラッとできるようになれば初心者脱出かな? あとdelete とdropもたまにミスる。

  • nullについて

is nullで取れる。=ではとれない。昔やったのにすっかり忘れてたな。

nullはfalseの象徴なので他の何と比較しても=falseになる。

なつかしいなあ。

  • column*column

出来た。

mysql> select ido*keido as 'waros',ido,keido from XXXXX;
+-------+------+-------+
| waros | ido  | keido |
+-------+------+-------+
|  4224 |   32 |   132 |
|  4692 |   34 |   138 |
|  4200 |   30 |   140 |
+-------+------+-------+

へえ。

表同士の結合で遊ぼう!

闇を見に行く。

  • 結合の種類

innerjoin,outer join,それぞれleftとrightがある。cross join、クロス結合。

cross joinのaliasとして,がある(しってた

しかし名前的なaliasを忘れてた。直積だった。クロス結合は覚えてた。あともう一つあった気がする。

left inner joinについて

そんなのないって言われたんだけど。。。あれ?あった気がするんだけどなあ?まあいっか

innner joinとleft joinはちがうよ!

顧客表のすべての行を表示させたいときには、外部結合であるLEFT JOINまたはRIGHT JOINを指定する。

これ魔剤!?くぁwせdrftぐじこlp

left joinとかright joinとか内部結合にも外部結合にもあると思ってた。。。

left joinはleft outer joinのalias。だからleft outer join使おうな。

あとfull outer joinもある。

条件を指定しないinner joinはcross join

  • 自分と結合

select * from ng_word self join ng_word;

  • natural join

PS: natural joinもcontextによって変わる。データべース概論的な意味だとnatural joinはouter joinとかのsuper class.

つまりnatural join∋inner joinやouter join。

実戦的な意味だとouter join とかでon句でcolumn指定するけどそれを自動的にmysqlが理解して省くための機構。

まぎらわしい・・・

selectとかはdml,create tableとかはddl,commitとかはdcl

感想

疲れた・・・

dbの練習って操作するのがめんどくさいから嫌い。練習が簡単にできない。 (まあ練習じゃなくて本番データで遊んでるんですけどね)