君は心理学者なのか?

大学時代に心理学を専攻しなぜかプログラマになった、サイコ(心理学)プログラマかろてんの雑記。

データベース

Go言語製のmigrationツール、sql-migateを使ってみた(postgresSQL編)

経緯 開発環境と本番環境のDB差異をできる限り無くすためにmigrationツールを導入する。 プロジェクトリポジトリと同じリポジトリでマイグレーションファイルを管理することにより、 ソースコードとDBスキーマのバージョンを同期させることができる。 使用す…

【CTF】サーバをハックする〜Simple Auth IIとSQLiteと〜

いきさつ セキュリティの勉強も兼ねてCTFの問題を解いてみた。 サーバをハックするより前にソースコードが見えているので ハックするような大したことはしていない。 問題 ksnctf.sweetduet.info 20ptなので超簡単ということだが。。。? 考えたこと ログイ…

You can't specify target table '***' for update in FROM clause〜MySQLにて、サブクエリのみに適用されるエラーがある〜

こういう感じの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…

MySQLにて、特定のカラムに日本語が含まれているかどうかを抽出

あるカラムに日本語が含まれていることを検出したい 結論 あるカラムに対して、 LENGTH CHARACTER_LENGTH の値が異なることを利用する。 SQLの例 SELECT * FROM table_name WHERE LENGTH(column_name) != CHARACTER_LENGTH(column_name); 解説 LENGTHは「バ…

DockerでMySQLコンテナを起動し、Sequel Proで接続してみる

MySQL、ちょっとだけ試したい時がある 「indexってどうやって貼るんだっけ?」 「外部キー制約ってどういうふうに効いてくるんだっけ?」 「ちょっとSQLの練習がしてみたいなぁ」 というとき、 DBとして残すほどではないけどMySQLを試したいな〜と思います。…

そのテーブルに、idは必要ですか?〜idの必要性とデータの一意性についてもう一度考えてみる

テーブルに必ずと行っていいほど入っているidカラム 普段扱っているテーブルには、だいたいidカラムが含まれている。 Ruby on Railsのmigration機能を使うと勝手にidカラムが入ったりする。 当たり前のように存在するidカラム。 そのidカラムの必要性につい…

なぜ、データベースを正規化するのか。正規化のメリットについてソースコードレベルで考えてみる(第一正規化)

正規化のメリットについてソースコードレベルで考えてみる DB設計をする際、あたりまえのように正規化していたのですが、 「なぜ正規化するか」についてはあまり良くわかっていませんでした。 調べると 正規化の理論は、 データの冗長性を排除し、 更新時の…

データベースの「データ型」とは何か?(その1)

はじめに 皆さん、データベースのデータ型について意識した事はありますか? 「データ型って何?」って思ったそこのRails使いの方! rails db postgres=# \d table_name を叩いてみましょう。 ※ table_nameは存在する適当なテーブル名 すると、以下のテーブ…