SQL中的函数

SQL中自带了很多函数,常用的有这几种:

函数 描述
AVG 求平均数
COUNT 计数
DISTINCT 去重
LOWER 小写
UPPER 大写
MAX 取最大值
MIN 取最小值

DISTINCT

假如我们想要查看所有的分类,可以这样子写:

1
SELECT DISTINCT(category) FROM books;

输出:

1
2
3
4
5
6
7
8
┌─────────────────┐
│ category │
├─────────────────┤
│ Fiction │
│ Science Fiction │
│ Fantasy │
│ Classic │
└─────────────────┘

COUNT

查看有多少种分类:

1
SELECT COUNT(DISTINCT(category)) FROM books; 

输出是这样的

1
2
3
4
5
┌───────────────────────────┐
│ COUNT(DISTINCT(category)) │
├───────────────────────────┤
│ 4 │
└───────────────────────────┘

AS

这个“COUNT(DISTINCT(category))”有点太长了,我们可以给它起个别名,比如说叫“n”。

SQL中有一个关键字AS可以实现这个功能。

1
SELECT COUNT(DISTINCT(category)) AS n FROM books; 

输出:

1
2
3
4
5
┌───┐
│ n │
├───┤
│ 4 │
└───┘

WHERE

WHERE可以用来指定选择的条件,如

1
SELECT COUNT(*) FROM books WHERE category = 'Fiction';

结果显示一共有7本小说

1
2
3
4
5
┌──────────┐
│ COUNT(*) │
├──────────┤
│ 7 │
└──────────┘

AND 和 OR

也可以使用AND或者OR来连接多个条件,比如我想知道有哪些经典小说的价格在30或以上。

1
SELECT * FROM books WHERE category = 'Classic' AND price >= 30;

非常简单对吧?

1
2
3
4
5
6
7
8
┌──────────────────────┬───────┬───────┬──────────┐
│ title │ price │ sales │ category │
├──────────────────────┼───────┼───────┼──────────┤
│ The Odyssey │ 30.99 │ 2 │ Classic │
│ To the Lighthouse │ 40.0 │ 4 │ Classic │
│ War and Peace │ 50.99 │ 4 │ Classic │
│ Crime and Punishment │ 35.99 │ 1 │ Classic │
└──────────────────────┴───────┴───────┴──────────┘

也可以自己试试把AND换成OR

题外话

容易注意到,我上面写的SQL语句的关键字都是使用全大写的,其实小写的命令也能被识别,但是大写是一种风格和惯例,将关键字大写,自己取的名字小写有利于区分两者。