-- Example tabel
CREATE TABLE big_game (berkeley INTEGER, stanford INTEGER, year INTEGER);
INSERT INTO big_game (berkeley, stanford, year) VALUES
(30, 7, 2002),
(28, 16, 2003),
(17, 38, 2014);
-- Selecting From Tables
SELECT [columns] FROM [tables] WHERE [condition] ORDER BY [columns] LIMIT [limit];
sqlite> SELECT berkeley FROM big_game WHERE year > 2002;
28
17
sqlite> SELECT berkeley, stanford FROM big_game WHERE berkeley > stanford;
30|7
28|16
-- SQL运算符
sqlite> select berkeley + stanford from big_game where berkeley > 10 and stanford > 10;
55 -- 输出两队得分均超过 10 分的年份的分数总和
44
-- Joins
CREATE TABLE coaches ( name TEXT, start INTEGER, end INTEGER );
INSERT INTO coaches (name, start, end) VALUES
('Jeff Tedford', 2002, 2012),
('Sonny Dykes', 2013, 2016),
('Justin Wilcox', 2017, 2025);
-- 当我们连接两个或多个表时,默认输出是笛卡尔积。
sqlite> SELECT * FROM big_game JOIN coaches ON year >= start AND year <= end; -- 匹配
sqlite> SELECT b.Berkeley - a.Berkeley, b.Stanford - a.Stanford, a.Year, b.Year ...> FROM big_game AS a, big_game AS b WHERE a.Year < b.Year;
-- 消除歧义
-- SQL Aggregation
CREATE TABLE flights ( departure TEXT, arrival TEXT, price INTEGER); INSERT INTO flights (departure, arrival, price) VALUES
('SFO', 'LAX', 97),
('SFO', 'AUH', 848),
('LAX', 'SLC', 115),
('SFO', 'PDX', 192),
('AUH', 'SEA', 932),
('SLC', 'PDX', 79),
('SFO', 'LAS', 40),
('SLC', 'LAX', 117),
('SEA', 'PDX', 32),
('SLC', 'SEA', 42),
('SFO', 'SLC', 97),
('LAS', 'SLC', 50),
('LAX', 'PDX', 89);
sqlite> SELECT departure, MIN(price) FROM flights GROUP BY departure;
departure MIN(price)
--------- ----------
AUH 932
LAS 50
LAX 89
SEA 32
SFO 40
SLC 42