MySQLのSELECTを理解するLIMITとORDER_BYの使い方


SQL文をたまに使うけどまるで身についてる気がしない寺です。
基本の基から自分で言語化できるかどうかのために書き留めています。

何分初学者ですので変なこと書いてたりする可能性はありますのでツッコミ等お願いいたします。

前回のあらすじ

前回はSELECT文のうちカラムの指定とWHEREを使った取得条件指定を学びました。

数日空いたため軽く忘れてたので復習になりました(自画自賛)

SELECT文

SELECT文はSQLのDMLのうち、データを取得する用途で使うのでした。

SQLにはDDL、DML、DCLの3つの種類があります。
そのうちDMLにはSELECT, INSERT. UPDATE, DELETEの4つがあり、役割はそれぞれ取得・追加・更新・削除となります。

SELECT文のうちカラム指定とWHEREについては前回学びましたので、LIMIT句とORDE BY句による順序の指定を学びます。

SQLの環境については色々ありますが、既に準備された仮想環境内で好き勝手できるEnvaderを利用します。

LIMIT句の使い方

LIMITの役割は行数の上限を指定することです。
これを指定しないと全てのテーブル内容が出力されて見づらくなってしまいます。

取得行数を5行に

 SELECT * FROM テーブル名 LIMIT 5;

LIMIT句は標準SQLではないため、全てのRDBMSで使えるわけではないようです。

OFFSET句でどの位置からデータを取得するか指定できますが、省略して数字だけも指定できます。

SELECT カラム名 [, 複数指定する際のカラム名 ...] FROM テーブル名 LIMIT [OFFSET,] カウント数

10行目から3行取得

 SELECT * FROM テーブル名 LIMIT 10,3;

ORDER BY

データを昇順降順に並び替えるときに使用します。
指定しなければ昇順(ASC)です。

指定する場合は、ASCが昇順、DESCは降順となります。

SELECT * FROM テーブル名 ORDER BY id ASC;

ORDER BY で並び替えた後LIMITで行数指定する

テーブル名evaluationからstore_idを基準に降順に並び替え5行を上限とし取得

select * from  evaluation order by store_id desc limit 5;
+------+---------+----------+---------+
| id   | user_id | store_id | star_id |
+------+---------+----------+---------+
|  240 |      21 |       50 |       2 |
|  431 |      10 |       50 |       4 |
|   21 |      35 |       50 |       4 |
| 1221 |      50 |       50 |       5 |
|  438 |      22 |       50 |       5 |
+------+---------+----------+---------+

コード引用:MySQL SELECTの基本②

以上がORDER BYとLIMITの使い方となります。

学んだこと

  • LIMITは取得上限を指定する
  • ORDER BYは昇順・降順並び替え

前回と合わせてSELECT文の仕組みを理解しました。
SQL文はたまにしか触らないので一週間も間があくと簡単な文法すら一旦手が止まってしまいます。

SQLは手を動かしてなんぼとのことでしたので、今後は100本、200本と言わず手を動かして瞬時に打てるようにしていきたいとおもいます。

なにかオススメ教材ご存じの方教えていただけるとありがたいです。

参考資料