mysql

Re: MyISAMで第2カラムのAUTO_INCREMENTを使ってるテーブルを洗い出すSQL

yoku0825 さんが、面白そうなブログを書いていました。 yoku0825.blogspot.com MySQLの auto_increment 列は キーカラムである必要がありますが、このキーは複合キーでも構わない。ただし 複合キーの場合は、InnoDB ではキー指定のうちの1つめのカラムである…

OSC2020新潟オンライン 参画

オープンソースカンファレンス2020新潟オンライン(OSC2020 Online Niigata)に参加してみました。ospn.connpass.com 新潟でのOSCは、とにかくお酒とごはんのおいしさと、東京(上野)からも電車一本で行ける気軽さ故、毎年の開催を楽しみにしていたOSCのひと…

日本MySQLユーザ会会開催しました(2020年7月版)

日本MySQLユーザ会会(MyNA会)と銘打つものとしては久しぶりに、イベントを開催しました。 いつものMyNA会は、そのタイミングでお話したいネタを持っている方に話していただくということで、多岐に亘る話題となることが多いのですが、今回はイベント全体にテ…

メモ:MySQLの NOW() と SYSDATE()

MySQLで、NOW()もSYSDATE()も、大雑把には「現在時刻を返す関数」なのですが、実はその挙動は異なります。 現在時刻とは何か、つきつめると「時間とは何か」という哲学的なテーマになるのですが、ここではそんな難しい話ではなく、さしあたって MySQL では、…

MySQL徹底入門4版 ここがすごい!...かもしれない

9年ぶりの全面改定「MySQL徹底入門 第4版」がいよいよ発売日になるので、私の主観と、思い入れと、おふざけ心を駆使して、「MySQL徹底入門 第4版 ここがすごい!」・・・かもしれないところを紹介したいと思います。MySQL徹底入門 第4版 MySQL 8.0対応作者:y…

MySQLのレプリケーションで「master」と「slave」が廃止へ!(用語の話)

本件、いろいろ思うところや意見はあるのだけど、それはtwitterで書いたので、ここでは淡々と紹介します。 本日、MySQL High Availability ブログにて、MySQL内での用語の変更について、以下の発表がありました。https://mysqlhighavailability.com/mysql-te…

『MySQL徹底入門第4版』が 本当に 出ます!(MySQL 8.0 対応)

MySQL を知りたい人向けの定番入門書として名高い『MySQL徹底入門』という本があります。2020年6月現在、第3版が出ていて、その発行は2011年、対応バージョンがMySQL 5.5でした。 そして来月 2020年7月。待望の第4版が出版されます。 第4版は、過去3つの版の…

OSC2020-Online Hokkaido 参画

オープンソースカンファレンス(OSC)2020 Online Hokkaido に参加してきました。 event.ospn.jp もともと、「普通」に札幌現地で開催される予定だったイベントですが、「新しい普通」にオンラインで開催へと変更されました。飛行機等を早めに取っていたので、…

MySQL道普請123回のUPDATE前にロッキングリードの話を読んでの感想と実験(追試)の結果

gihyo.jpの連載「MySQL道普請便り」の最新回(第123回)は、ロッキングリード(SELECT ~ FOR UPDATE)のつかいどころのお話が興味深かったです。gihyo.jp 乱暴に要約すると、例えば 5000枚のチケットを捌くUPDATEは、いきなり UPDATE するのではなくて、SELEC…

MySQL25年&MyNA(ユーザ会)20年記念イベントを開催しました

わざわざ普段のMySQL勉強会で「10年前はこんなのでした」「15年前のバージョンでこんなのがあってね」なんて話をする奴は、いない。やっぱりみんな、最新バージョンでどうなったのか、どう使っているのか、という話をしたいし、聞きたい。だからこそ、振り返…

MySQLでCTEを使ってマンデルブロを描く

MySQL に CTEが入ったんですよという話題の中で、PostgreSQLのCTEの定番でこんなものがあるんですよ、とPostgreSQLの(というかSRA OSSの)石井さんに教えていただきました。Mandelbrot set - PostgreSQL wiki もちろんこのままではMySQLでは動かないのです…

MySQL: CHAR(0)の動作が変わっていた

11年ほど前に書いた日記がふと目にとまりました。CHAR(0)という列を定義できるというお話。 sakaik.hateblo.jp 当時のバージョンが明記されていないため、よくわからないのですが、最新の 8.0.20では挙動が変わっているようです。 mysql> CREATE TABLE t1 ( …

こんにちはこんにちはこんにちは!を出すSQL

slack とかを使っていると、新たに部屋に参加した人は挨拶するじゃないですか。「こんにちは!」って。そしたら、既に部屋にいる人は「こんにちはこんにちは!」って返しますよね。その後に入ってきた人は、これを見て「こんにちはこんにちはこんにちは!」…

MySQLで未定義のユーザ変数の表示がおかしい(8.0.20)

MySQL では @ で始まるユーザ定義変数を使うことができます。 mysql> SET @v1=123, @s1="ABC"; Query OK, 0 rows affected (0.00 sec) こんなふうに定義すると、SELECTなどで使うことができます。 ここで、上で定義した2つの変数と、未定義の変数をSELECT文…

MySQL: COUNT(*) は 1 ??

Twitterに書き殴ったのですが、流れてしまうので、一応こちらにもまとめておこうかと。これって、何を数えているんでしたっけ?mysql> SELECT COUNT(*);+----------+| COUNT(*) |+----------+| 1 |+----------+— 坂井 恵(SAKAI Kei) (@sakaik) 2020年5月1日 …

とみたさんの記事を見てUDFにトライ

とみたさんの UDF を作ろう記事を、そのまま試してみました。tmtms.hatenablog.comほとんど、書かれているとおりにソースコードをコピーして gcc かけて プラグイン動作させれば良いです。が、少しだけ悩んだ点があるので、そこだけ補足的メモ。 gcc がなか…

メモ:MySQLのサーバサイドでのプリペアド・ステートメント

通常は各プログラム言語側で プレースホルダ含みのSQLを書いたりするけど、 サーバ側での(というかSQLレベルでの)プリペアド・ステートメントの書き方に触れる機会があったので、メモとして記す。 テーブルの用意 とりあえず、id と name を格納するテーブ…

MySQLで今月の日付一覧を得る(追記あり)

ふと、今月の日付一覧が欲しくなって、MySQLでやってみた。以前は、カマセデータ用に一時的にテーブルを作る必要があったけど、今は VALUES文のおかげで、随分ラクになった、、、、かな。 今月ついたちの日付を得るのは、色々なやり方があるけれども、これが…

MySQLとの戯れ:カラムの別名とグルーピングの動作について

この日記は、少し時間が取れるようになった私が自由気ままにMySQLと戯れた結果を、つらつらと書き殴ったものです。明確な目的もなく、ただただMySQLと会話をして(そう、MySQLには「対話モード」があるのですよ)、楽しかったぁ、という日記です:-) 今回は、…

個性的なcsvからデータを取り出した話

コンピュータシステム周辺に関わっているとCSVファイルとのお付き合いは避けて通れないものと言えるでしょう。みなさんはどんなCSVとお付き合いしたことがありますか。 セパレータが明確でない(というか明確なのだけど例外例外の積み重ねが意外とややこしい…

Geospatial Hackers Program に参加して優秀な成績を収めた話

少し前の話になるのですが、Geospatial Hackers Program (GHP)というイベントに参加して来ました。実は、ハッカソンなるものに参加するのは初めてのことで、勝手も分からずに緊張していたのですが、素敵な仲間たちと出会い、心地よく参加させていただくこと…

Ubuntu仮想環境 "Multipass" にトライした話(1)

Ubuntu の仮想マシンをぽんぽん立ち上げられる "Multipass" というものがあると知り、興味を持ちました。 例えば MySQL のレプリケーションの例を示す時にも、MySQLサーバがどのように動作しているかを理解している人向けには「ポートを変えて立ち上げていま…

きょうMySQLユーザ会20周年イベントをやっているはずだった

2020年、日本MySQLユーザ会(MyNA)は設立20年を迎えます。15周年の時にはコロプラさんに全面的にご支援いただいて、記念イベントを開催しました。コロプラさん、その節はどうもありがとうございました。このご恩は5年経っても、たぶん10年経っても忘れません!…

MySQLの生成列を使って緯度・経度の列をGEOMETRYに

緯度と経度それぞれが別々のカラムに格納されているデータに対して、生成列を使ってGEOMETRY型のカラムとして扱えるようにする方法を考えてみました。速度面で何かディスアドバンテージがあるのか否かは未知数ですが、こんな方法もあるのだというヒントにな…

(メモ)Ubuntu 18.04 にMySQLを初めてインストール

普段は CentOS を使っているのですが(と言っても、使っていると胸張れる程は使っていない)、今回はじめて Ubuntu に MySQL をインストールしたので、メモ。 もしかしたら不要な操作が含まれているかもしれないけど、OS: Ubuntu 18.04 amd 64 環境: さくら…

MySQL Casual Talks #13 に参加してきました

MySQL Casual Talks #13 に参加してきました。 ただ聞きに行くだけのつもりでしたが、発表枠が開いているようだったので、前日だったかな、急遽発表枠に入れていただきました。ありがとうございます。 connpassで、改めて発表枠に申込しなおそうと、一般参加…

OSC2020-Osakaに行ってきました

オープンソースカンファレンス2020大阪(OSC2020-Osaka)に行ってきました。・・・と書くと、普段は MySQLユーザ会としてブースを出したり、セミナーをやったりしてきました!という意味だったのですが、今回は申込期間中に参加可否が決められずに、出展をし…

MySQL8.0.19で加わった VALUES を試してみる

MySQL 8.0.19。MySQL 8.0 の「メンテナンスリリース」です。 8.0.19より前のMySQLには、「標準SQLのひとつであるVALUES文が実装されていない」という重大な不具合が含まれていたため、バグ修正として本リリースに含まれたようです(真に受ける人がいると困る…

MySQLのSRID()でSRID変換する際にaxis-orderで悩んだ話

訳あって、MySQLで「GEOMETRY型のカラムに、いったん SRID=0で登録したあと、一気に正しいSRIDに変換する」ということをやろうとしたところ、思惑通りにいかず随分悩んだので、整理しておきます。 やろうとしたこととエラー発生 ここではシンプルな例に置き…

MySQLのDROP DATABASEでWARNINGが表示されない事象

DROP DATABASE IF EXISTS ... で存在しないデータベースをドロップしようとしたときに、WARNING が表示されない事象があったので紹介します。 IF EXISTS (テーブルの場合) MySQL のDROP文には "IF EXISTS" というオプションがあり、たとえばテーブルの場合は…