全1104文字

データベースを扱うにはSQLの知識が不可欠です。Pythonに付属の「SQLite 3」を使えば、SQLデータベースのプログラミングを手軽に始められます。本特集では、SQLite 3を使ってSQLの基本的な使い方を解説します。

 SQLでデータの取り出しに使われるSELECT文には、まだまだ様々な機能があります。

「LIMIT句」で結果の個数を制限する

 データベースが大きくなると、一般的には、SELECT文で取得できるデータの個数も増えます。しかし、本当に必要なのは限られた個数のデータだけであることがよくあります。そのような場合は、「LIMIT句」を使って、取得するデータの個数を制限します。書式は次の通りです。

SELECT
 列名, ...
FROM
 テーブル名
LIMIT
 制限数

 LIMIT句はORDER BY句と組み合わせることで、「多い順上位X個」や「少ない順上位X個」といったデータを取得するのに使えます。例として、「購入数の少ない順上位3個」のデータを表示してみましょう。

>>> sql = '''
...  SELECT
...   *
...  FROM
...   purchase
...  ORDER BY
...   quantity
...  LIMIT
...   3
... '''
>>> cursor.execute(sql)
<sqlite3.Cursor object at 0x000001E045A5AF10>
>>> print(cursor.fetchall())
[('2021/01/04', 'フェイスシールド', 2), ('2021/01/04', 'アルコール液', 2), ('2021/01/12', 'アクリル パーティション', 2)]

 このように、LIMIT句やORDER BY句などは同時に使えます。ただし、記述する順番は次のように決まっています。

SELECT
FROM
WHERE
ORDER BY
LIMIT

 この点には注意しましょう。

SELECT文で計算式を使う

 SELECT文では計算式を使うことができます。四則演算や剰余演算が可能です。例えば、WHERE句の条件式を「quantity - 5 >= 0」(購入数を-5した値が0以上)にして、実行してみましょう。

>>> sql = '''
...  SELECT
...   *
...  FROM
...   purchase
...  WHERE
...   quantity - 5 >= 0
... '''
>>> cursor.execute(sql)
<sqlite3.Cursor object at 0x000001E045A5AF10>
>>> print(cursor.fetchall())
[('2021/01/04', 'マスク', 20), ('2021/01/11', '除菌シート',10), ('2021/01/12', '手袋', 10)]

 ちゃんと「-5」という引き算が実行され、期待通りの結果を得られました。