SQL - Python - SELECT文 - 天賦のデータ検索 - whene句, NOT, IN, AND, OR
Head First SQL ―頭とからだで覚えるSQLの基本、 Lynn Beighley(著)、 佐藤 直生(監訳)、 松永 多苗子(翻訳)、 オライリージャパンの 2章(SELECT文 - 天賦のデータ検索)、p.112(エクササイズ)の解答を求めてみる。
schema12.sql
drop table if exists black_book;
create table black_book
(
date_name text,
rating text
);
insert into black_book
(
date_name, rating
) values
('アレックス', '斬新'),
('ジェームス','退屈'),
('イアン','驚くべき'),
('ポリス','つまらない'),
('メルビン','下層階級'),
('エリック','情けない'),
('アンソニー','楽しい'),
('サミー','かなりいい'),
('イヴァン','陰気'),
('ヴィック','話にならない');
schema12_0.sql
select drink_name from easy_drinks
where amount1 >= 1.5;
schema12_1.sql
select drink_name from drink_info
where ice <> 'Y';
schema12_2.sql
select drink_name from drink_info
where calories >= 20;
schema12_3.sql
select drink_name from easy_drinks
where main in (
'チェリージュース',
'トニックウォーター'
);
schema12_4.sql
select drink_name from drink_info
where calories <> 0;
schema12_5.sql
select drink_name from drink_info
where carbs < 3
or carbs > 5;
schema12_6.sql
select date_name from black_book
where not (
date_name like 'ア%'
or date_name like 'イ%'
);
コード
sample12.py
#! /usr/bin/env python3
import sqlite3
con = sqlite3.connect('sample.db')
cur = con.cursor()
with open(f'schema12.sql') as f:
cur.executescript(f.read())
for i in range(7):
print(i)
with open(f'schema12_{i}.sql') as f:
cur.execute(f.read())
if (d := cur.description) is not None:
print([t[0] for t in d])
for row in cur.fetchall():
print(row)
cur.close()
con.close()
入出力結果(Terminal, Zsh)
% ./sample12.py
0
['drink_name']
('ブラックソーン',)
('オーマイゴッシュ',)
('ライムフィズ',)
('キスオンザリップス',)
('ホットゴールド',)
('ローンツリー',)
('グレイハウンド',)
('インディアンサマー',)
('ブルフロッグ',)
('ソーダアンドイット',)
1
['drink_name']
('ホットゴールド',)
('インディアンサマー',)
('ソーダアンドイット',)
2
['drink_name']
('ブラックソーン',)
('オーマイゴッシュ',)
('ライムフィズ',)
('キンオンザリップス',)
('ホットゴールド',)
('グレイハウンド',)
('インディアンサマー',)
('ブルフロッグ',)
3
['drink_name']
('ブラックソーン',)
('キスオンザリップス',)
4
['drink_name']
('ブラックソーン',)
('ブルームーン',)
('オーマイゴッシュ',)
('ライムフィズ',)
('キンオンザリップス',)
('ホットゴールド',)
('ローンツリー',)
('グレイハウンド',)
('インディアンサマー',)
('ブルフロッグ',)
('ソーダアンドイット',)
5
['drink_name']
('ブラックソーン',)
('オーマイゴッシュ',)
('ライムフィズ',)
('キンオンザリップス',)
('ホットゴールド',)
('グレイハウンド',)
('インディアンサマー',)
('ブルフロッグ',)
6
['date_name']
('ジェームス',)
('ポリス',)
('メルビン',)
('エリック',)
('サミー',)
('ヴィック',)
%