MySQL 5.7.22 のORDER BYの順番について
MySQL 5.7.22 のORDER BYの順番について
こんばんは、葛の葉です。
SQLも出来ないの?そんなんじゃ甘いよ。って言われたのでSQLもやってます。ナキソーです。
そこで、Dockerを使ってMySQL 5.7.22のイメージを作って環境を作ってSQLの勉強をしているんです。また、参考書として、下記の物を使用しています。結構砕けた文章なので、読んでいて面白いですよ~ただ、2008年が最新なので古いところが難点かもしれません。 これも読み終わったらレビューをしてみましょうかね。
ORDER BYでのソート順について
上記の本のP.255には、数字とアルファベットと記号が入ったテーブルでORDER BYでソートして、その並び順を確認する、というものがあったと思うのですが、ひらがな、カタカナ、漢字、半角カナ、全角数字も入れた場合はどうなるか、という点は書かれていなかったと思います。ですので、ちょっとやってみました。
CREATE DATABASE sandbox; USE sandbox; CREATE TABLE test( test_char VARCHAR(30) ); INSERT INTO test (test_char) VALUE ('0'),('1'),('2'),('3'), ('A'),('B'),('C'),('D'), ('a'),('b'),('c'),('d'), ('!'),('@'),('#'),('$'), ('%'),('^'),('&'),('*'), ('('),(')'),('-'),('_'), ('+'),('='),('['),(']'), ('{'),('}'),(';'),(':'), ('\''),('\"'),('\\'),('|'), ('\`'),('~'),(','),('.'), ('<'),('>'),('/'),('?'), ('ア'),('イ'),('ウ'),('エ'), ('あ'),('い'),('う'),('え'), ('ア'),('イ'),('ウ'),('エ'), ('亜'),('居'),('兎'),('絵'), ('0'),('1'),('2'),('3'), (NULL);
どうでもいいことなんですけどINSERT INTO table名 VALUE(値);
でもいけますね。要するにカラム名を省略するタイプです。なんか、書くほうが私は好きかも。もう一つどうでもいい話ですが、INSERT INTO table名 (column名) VALUE (値1),(値2),(値3);
で複数レコード作れます。スゴイネ。
そして、SELECT * FROM test ORDER BY test_char;
を実行するとこんな感じ。
+-----------+ | test_char | +-----------+ | NULL | | ! | | " | | # | | $ | | % | | & | | ' | | ( | | ) | | * | | + | | , | | - | | . | | / | | 0 | | 1 | | 2 | | 3 | | : | | ; | | < | | = | | > | | ? | | @ | | A | | a | | b | | B | | c | | C | | d | | D | | [ | | \ | | ] | | ^ | | _ | | ` | | { | | | | | } | | ~ | | あ | | い | | う | | え | | ア | | イ | | ウ | | エ | | 亜 | | 兎 | | 居 | | 絵 | | 0 | | 1 | | 2 | | 3 | | ア | | イ | | ウ | | エ | +-----------+ 65 rows in set (0.00 sec)
さもありなんというか、まぁやっぱり日本語は後ろに来るのね、という印象です。全体をみると、記号、数字、記号、英字、記号となっていておもしろいですね。なんでこうなってるんだろう?まぁアルファベット順になる、数字順になるってのがわかればそれでいいかなぁって思います。記号をソートしたいって思うことないと思うし~
ところで…これであってるんかな(^ω^;)
| @ | | A | | a | | b | | B | | c | | C |
大文字が最初にくるはずなんだけど…AabBcCになってるね…ウーン…Dockerの問題?どういうことだろう…