上一章节里我们使用了WHERE关键字进行了条件的筛选,实际上这样的关键字还有很多,以下是常用的一些。

GROUP BY

将数据按某个字段分组

1
SELECT category, COUNT(*) FROM books GROUP BY category;

输出:

1
2
3
4
5
6
7
8
┌─────────────────┬──────────┐
│ category │ COUNT(*) │
├─────────────────┼──────────┤
│ Classic │ 6 │
│ Fantasy │ 4 │
│ Fiction │ 7 │
│ Science Fiction │ 3 │
└─────────────────┴──────────┘

ORDER BY

按某个字段排序,例如按每种分类的个数排序。

1
SELECT category, COUNT(*) FROM books GROUP BY category ORDER BY COUNT(*);

输出:

1
2
3
4
5
6
7
8
┌─────────────────┬──────────┐
│ category │ COUNT(*) │
├─────────────────┼──────────┤
│ Science Fiction │ 3 │
│ Fantasy │ 4 │
│ Classic │ 6 │
│ Fiction │ 7 │
└─────────────────┴──────────┘

默认是升序排列的,如果我们想要降序排列,需要在后面加上DESC(Descending,降序)。默认情况和后面加上ASC是一样的(Ascending,升序)

1
SELECT category, COUNT(*) FROM books GROUP BY category ORDER BY COUNT(*) DESC;

输出

1
2
3
4
5
6
7
8
┌─────────────────┬──────────┐
│ category │ COUNT(*) │
├─────────────────┼──────────┤
│ Fiction │ 7 │
│ Classic │ 6 │
│ Fantasy │ 4 │
│ Science Fiction │ 3 │
└─────────────────┴──────────┘

LIMIT

LIMIT可以限制最多显示的数据条数,让我们看看最贵的5本书:

1
SELECT title, price FROM books ORDER BY price DESC LIMIT 5;

输出:

1
2
3
4
5
6
7
8
9
┌────────────────────────┬───────┐
│ title │ price │
├────────────────────────┼───────┤
│ The Catcher in the Rye │ 60.99 │
│ Brave New World │ 60.3 │
│ The Lord of the Rings │ 55.99 │
│ The Alchemist │ 55.99 │
│ The Great Gatsby │ 50.99 │
└────────────────────────┴───────┘

LIKE

LIKE字句允许你使用通配符进行模糊匹配。

  1. “%” 表示0或任意个字符(包括数字)
  2. “_” 表示1个字符(包括数字)

我想找出所有以“The”开头的书,可以这样:

1
SELECT title FROM books WHERE title LIKE 'The%'; 

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
┌──────────────────────────────┐
│ title │
├──────────────────────────────┤
│ The Great Gatsby │
│ The Catcher in the Rye │
│ The Hobbit │
│ The Lord of the Rings │
│ The Chronicles of Narnia │
│ The Odyssey │
│ The Adventures of Tom Sawyer │
│ The Alchemist │
│ The Picture of Dorian Gray │
└──────────────────────────────┘