還暦過ぎたエンジニアの挑戦

還暦過ぎても好奇心だけは忘れない エンジニア ひかるです

MENU

転ぶ前に読め-mysql

日付フォーマットで瞬間悩んだら

日付だけでよいのにと思ったら 文字列を日付っぽくして、0埋めしてフォーマット 文字列を日付っぽくして、0埋めしてフォーマット(その2) 日付だけでよいのにと思ったら select now(); select date_format(now(), '%Y-%m-%d'); 結果 2021-04-09 21:59:05 2…

UPDATEは極力プライマリキーで

今日の教訓は 標題そのまんまです。 UPDATE テーブル名 SET カラム名=値 WHERE 条件式 WHERE条件式には、 特定できるなら極力プライマリキーを使う。 それがだめならせめてkeyを持つカラムで 対象を特定できる条件を作る。 keyの存在も確かめず(あるに違い…

検索結果と同時に件数も取得する

MySQLで検索結果と同時に件数も取得することはできないことだとずっと思っていました。。。でも

テーブルのカラム内容をGETするには

テーブルのカラム内容をGETするには'SHOW COLUMNS'

データベースのテーブル数を知るには

SELECT count(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = {データベース名};

足枷でもある - mysql

データベースの設計をするときに、データの正規化、整合性を担保したいという気持ちはわからなくもない。 こっちのテーブルAにある値は別のテーブルBに存在するものじゃなきゃいけない。。。みたいなの 設計者の気持ちもわからなくはないが、でも、そういっ…

コメントぐらい修正しようよ その2 - mysql

以前に書いた記事 blog.yutenji.biz では、カラムのコメントの修正はカラムの再定義になる。。。 というところが、ちょっとだけリスクを感じるけど、 テーブルの説明文(COMMENT)は 「ただ書く」 だけなので、サボらないようにしようと思う。 今日初めて見…

INSERTしたオートインクリメントのIDを取得する - mysql

これもあまり普段は使わないので記憶もあいまいになる。 この関数ではAuto Increment のkeyしか掴めないんだけど。。。 って、そりゃそうだ - 自分で指定したkeyならわかってるに決まっている! なにが使われているかわからないから掴みたい。 INSERT INTO …

IF NOT EXISTSは必ず書くよ - mysql

CREATE TABLE IF NOT EXISTS テーブルネーム ちょっとまずいケースがあったので。 CREATE TABLEは基本的に一度実行すれば良いことなので、どっちでも良いかな。。。 ぐらいに考えていたら今日はちょっと失敗した。 書いておいて害はないので、転ばぬ先の杖。…

DDLこそエンジニアのセンス - mysql

DMLとDDL 大嫌いなアルファベット3文字語 しかも似てるし。 どうしてもっと日本語を大切にしないのかな。 って思う で、 DDL = Data Definition Language Definition - 定義 が問題だな。 舌噛みそうだし! 要するにデータ定義言語だそうです。 データベース…

コメントぐらい修正しようよ - mysql

ALTER TABLE (テーブル名) CHANGE COLUMN (コメント修正するカラム名) (コメント修正するカラム名)(属性) COMMENT '修正コメント'; ことある度に、 「やったほうがいいよな~」 と思うのに、つい通り過ぎてしまうエンジニアのあるあるかもしれない。 …

LIKEなんかじゃ物足りない - mysql

例えばemailが'hi'で始まって'com'で終わる人を検索する where email REGEXP '^hi.+com$' ちょっと複雑で、でも端的に絞りたい時はやはりこれしかない。 もちろん「=」で検索できればそれに越してことはないが、世の中そんなに甘くない。 で、正規表現で検索…

timestampで保存されてもね - mysql

困るんですよ。ピンとくる人なぞいないので SELECT FROM_UNIXTIME(1582473112); → '2020-02-24 00:51:52' SELECT UNIX_TIMESTAMP('2020-02-24 00:51:52'); → 1582473112