Kuzunoha-NEのブログ

プログラミングなどの勉強をしてます

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の問題?どういうことだろう…