データベース
経緯 開発環境と本番環境のDB差異をできる限り無くすためにmigrationツールを導入する。 プロジェクトリポジトリと同じリポジトリでマイグレーションファイルを管理することにより、 ソースコードとDBスキーマのバージョンを同期させることができる。 使用す…
いきさつ セキュリティの勉強も兼ねてCTFの問題を解いてみた。 サーバをハックするより前にソースコードが見えているので ハックするような大したことはしていない。 問題 ksnctf.sweetduet.info 20ptなので超簡単ということだが。。。? 考えたこと ログイ…
こういう感じのSQLを書いた UPDATE parent SET name = 'hogehoge' WHERE parent_id IN ( SELECT parent.parent_id FROM parent LEFT JOIN children as c ON parent.parent_id = c.parent_id ); そしたらこんなエラーが出てきた You can't specify target tab…
あるカラムに日本語が含まれていることを検出したい 結論 あるカラムに対して、 LENGTH CHARACTER_LENGTH の値が異なることを利用する。 SQLの例 SELECT * FROM table_name WHERE LENGTH(column_name) != CHARACTER_LENGTH(column_name); 解説 LENGTHは「バ…
MySQL、ちょっとだけ試したい時がある 「indexってどうやって貼るんだっけ?」 「外部キー制約ってどういうふうに効いてくるんだっけ?」 「ちょっとSQLの練習がしてみたいなぁ」 というとき、 DBとして残すほどではないけどMySQLを試したいな〜と思います。…
テーブルに必ずと行っていいほど入っているidカラム 普段扱っているテーブルには、だいたいidカラムが含まれている。 Ruby on Railsのmigration機能を使うと勝手にidカラムが入ったりする。 当たり前のように存在するidカラム。 そのidカラムの必要性につい…
正規化のメリットについてソースコードレベルで考えてみる DB設計をする際、あたりまえのように正規化していたのですが、 「なぜ正規化するか」についてはあまり良くわかっていませんでした。 調べると 正規化の理論は、 データの冗長性を排除し、 更新時の…
はじめに 皆さん、データベースのデータ型について意識した事はありますか? 「データ型って何?」って思ったそこのRails使いの方! rails db postgres=# \d table_name を叩いてみましょう。 ※ table_nameは存在する適当なテーブル名 すると、以下のテーブ…