「SQL」2. SQL格式规范、基本命令与范例
简述:这里只记录SQL
的部分基本指令,包括SELECT FROM
,WHERE
,GROUP BY
,ORDER BY
。
1 SQL要点
1.1 注释
SQL
语句中的单行注释使用--
,多行注释采用 /*…*/
1.2 代码规范
1.3 执行顺序
SQL
语句有一个让大部分人都感到困惑的特性,就是:SQL
语句的执行顺序跟其语句的语法顺序并不一致。SQL
语句的语法顺序是:
SELECT[DISTINCT]
FROM
WHERE
GROUP BY
HAVING
UNION
ORDER BY
为了方便理解,上面并没有把所有的 SQL
语法结构都列出来,但是已经足以说明 SQL
语句的语法顺序和其执行顺序完全不一样,就以上述语句为例,其执行顺序为:
FROM
WHERE
GROUP BY
HAVING
SELECT
DISTINCT
UNION
ORDER BY
摘自:十步完全理解 SQL
2 查询语句 SELECT FROM
2.1 语句解释
从表中选择数据
1 | SELECT |
2.2 查重语句
1 | SELECT |
2.3 前 N 个语句
1 | SELECT |
2.4 CASE…END 判断语句
1 | CASE |
3 筛选语句 WHERE
3.1 语法
1 | SELECT |
属性名不要求相同。
3.2 运算符/通配符/操作符
operator | 描述 |
---|---|
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
4 分组语句 GROUP BY
4.1 语句解释
GROUP BY
语句根据一个或多个列对结果集进行分组。
1 | SELECT |
属性名不要求相同。
4.2 HAVING子句
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
示例:
1 | SELECT |
5 排序语句 ORDER BY
ORDER BY
语句用于根据指定的列对结果集进行排序。默认按照升序,添加DESC
关键字可改成降序。
5.1 正序、逆序
SQL
默认按照升序(ASC
),添加DESC
关键字可改成降序。
6 简单实操
6.1 查找重复的电子邮箱(难度:简单)
- 创建表,表名
accounts
,再添加records
。Yeah,这就成了。1
2
3
4
5
6
7
8CREATE TABLE email (
ID INT NOT NULL PRIMARY KEY,
Email VARCHAR(255)
);
INSERT INTO email VALUES('1','a@b.com');
INSERT INTO email VALUES('2','c@d.com');
INSERT INTO email VALUES('3','a@b.com');
- 查重 查找结果:
1
2
3
4
5
6
7
8SELECT
Email
FROM
accounts
GROUP BY
Email
HAVING
COUNT(Email)>1;
6.2 查找大国
- 建表,表名
world
,再添加records
。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18CREATE TABLE World (
name VARCHAR(50) NOT NULL,
continent VARCHAR(50) NOT NULL,
area INT NOT NULL,
population INT NOT NULL,
gdp INT NOT NULL
);
INSERT INTO World
VALUES('Afghanistan','Asia',652230,25500100,20343000);
INSERT INTO World
VALUES('Albania','Europe',28748,2831741,12960000);
INSERT INTO World
VALUES('Algeria','Africa',2381741,37100000,188681000);
INSERT INTO World
VALUES('Andorra','Europe',468,78115,3712000);
INSERT INTO World
VALUES('Angola','Africa',1246700,20609294,100990000); - 查找大国(条件:国家的面积超过300万平方公里,或者(人口超过2500万并且
gdp
超过2000万))Here we go!1
2
3
4
5
6SELECT
name, population, area
FROM
world
WHERE
area > 3000000 OR (population > 25000000 and GDP > 20000000);
7系列
以上!
「SQL」2. SQL格式规范、基本命令与范例