MySQL: レコードを昇順・降順にソートして出力 - ORDER BY句
前回はUPDATE文とDELETE文を扱いました。今回は下記のレコードを含むテーブルに対して、SELECT文のORDER BY句を用いて任意のレコードをソートして出力する例を示します。
前回はUPDATE文とDELETE文を扱いました。今回は下記のレコードを含むテーブルに対して、SELECT文のORDER BY句を用いて任意のレコードをソートして出力する例を示します。
前回はレコードの検索クエリの作成方法を扱いましたが、今回は既存のレコードのフィールド値を更新するUPDATE文と、レコードを削除するDELETE文の練習をしてみます。
前回までにテーブルに一定のデータを追加しましたので、今回はそのデータを検索するクエリ文を以下の場合に分けて練習してみます。
まず、扱うテーブル内のレコードの一覧を下記に示します。
INSERT文を用いて1レコードを追加する練習をしてみます。 前回までにテーブルの作成と構造の修正を行いましたが、これから使うテーブルは下記のものにします(少しフィールドを削りました)。
前回までにCREATE TABLE文を用いて以下のようなbook2テーブルを作成しました。
前回までにCREATE USERとGRANTコマンドでbookshelfデータベースを作成し、それを扱う全権限を持つユーザyukunを追加しました。 今回はCREATE TABLEコマンドでデータベースに新しいテーブルを作成し、それをDESCRIBEコマンドで確認してみます。また、それらに関連する他のコマンドも取り上げてみます。
前回はCREATE DATABASEコマンドでbookshelfという名前のDBを作成し、SHOW DATABASESコマンドでそれを確認しました。 一連の操作はroot権限で行いましたがこれはセキュリティ上よろしくないので、今回はrootユーザへのパスワードの設定と、新しくユーザ(ここでは安直に"yukun")を作成しbookshelfを操作する権限を付加してみます。
Windowsに開発用のMySQLを新規にインストールとパス設定した環境で進めていきます。まず、プロンプト上で以下のコマンドを一行打ちMySQLに接続してみます。
レコードの検索や格納処理性能がオープンソースのDBで間に合う程度の問題であれば、積極的に使っていきたいです。それによって、他のロジックのコーディングに傾注できます。また、DBという共通のプラットフォームは複数言語から扱えますので、データの再利用がしやすいです。 さて、今回はPythonからSQLiteを扱うサンプル(pysqliteの使い方)を書いてみます。
# coding: UTF-8
from pysqlite2 import dbapi2 as sqlite
# データベースに接続(作成)
con = sqlite.connect('test1.db')
# テーブルの列要素: 名前、性別(male or female)、年齢
con.execute('CREATE TABLE people (name TEXT, sex TEXT, age INTEGER)')
# テストデータの挿入(1行はタプルで)
con.execute('INSERT INTO people VALUES ("Taro", "male", 22)')
con.execute('INSERT INTO people VALUES ("Hanako", "female", 38)')
con.execute('INSERT INTO people VALUES ("Ranka", "female", 17)')
con.execute('INSERT INTO people VALUES ("Ozuma", "male", 40)')
con.commit() # DBに反映
# データの検索
cur = con.execute('SELECT * FROM people')
# データの出力
print 'NAMEt SEXt AGE'
for row in cur:
print '%-8s %-6s %2d' % row # 1行のデータ構造はタプル
con.close()
NAME SEX AGE
Taro male 22
Hanako female 38
Ranka female 17
Ozuma male 40