SQL SELECT语句:选取数据
SQL SELECT 语句用于从表中选取符合条件的数据,该数据以临时表的形式返回,称为结果集。
WHERE 子句是可选的,您可以不写,此时 SELECT 语句将变成下面的形式:
此外,如果您希望选取所有的列,那么可以使用
语法
SELECT 语句的基本语法如下:
SELECT column1, column2, columnN
FROM table_name
WHERE conditions;
WHERE 子句是可选的,您可以不写,此时 SELECT 语句将变成下面的形式:
SELECT column1, column2, columnN FROM table_name;
不使用 WHERE 子句意味着没有筛选条件,此时表中的所有数据都将被选取。此外,如果您希望选取所有的列,那么可以使用
*
代替所有列名,语法如下:
SELECT * FROM table_name;
SELECT 子句
SELECT 可以结合下面的子句一起使用:- WHERE 子句:用来指明筛选条件,只有满足条件的数据才会被选取。
- ORDER BY 子句:按照某个字段对结果集进行排序。
- GROUP BY 子句:结合聚合函数,根据一个或多个列对结果集进行分组。
- HAVING 子句:通常和 GROUP BY 子句联合使用,用来过滤由 GROUP BY 子句返回的结果集。
示例
现在有如下所示的 website 表:+----+----------------+----------------------------+-----+-------+---------+---------+ | id | name | url | age | alexa | uv | country | +----+----------------+----------------------------+-----+-------+---------+---------+ | 1 | 百度 | https://www.baidu.com/ | 21 | 4 | 5010.5 | CN | | 2 | 淘宝 | https://www.taobao.com/ | 17 | 8 | 3996.75 | CN | | 3 | C语言中文网 | http://c.biancheng.net/ | 12 | 7923 | 11.62 | CN | | 4 | Google | https://www.google.com/ | 23 | 1 | 36474 | US | | 5 | GitHub | https://github.com/ | 13 | 95 | 216.3 | US | | 6 | Stack Overflow | https://stackoverflow.com/ | 16 | 48 | 592.2 | US | | 7 | Yandex | http://www.yandex.ru/ | 11 | 53 | 591.82 | RU | | 8 | VK | https://vk.com/ | 23 | 23 | 1206 | RU | +----+----------------+----------------------------+-----+-------+---------+---------+现在要获取表中所有网站的 id、名字(name)和链接(url),代码如下:
SELECT id, name, url FROM website;执行完成以后将得到下面的结果:
+----+----------------+----------------------------+ | id | name | url | +----+----------------+----------------------------+ | 1 | 百度 | https://www.baidu.com/ | | 2 | 淘宝 | https://www.taobao.com/ | | 3 | C语言中文网 | http://c.biancheng.net/ | | 4 | Google | https://www.google.com/ | | 5 | GitHub | https://github.com/ | | 6 | Stack Overflow | https://stackoverflow.com/ | | 7 | Yandex | http://www.yandex.ru/ | | 8 | VK | https://vk.com/ | +----+----------------+----------------------------+如果希望选取所有字段,并且要求日访问量(uv)大于 800 万,可以使用下面的语句:
SELECT * FROM website WHERE uv > 800;该语句将得到下面的结果:
+----+--------+-------------------------+-----+-------+---------+---------+ | id | name | url | age | alexa | uv | country | +----+--------+-------------------------+-----+-------+---------+---------+ | 1 | 百度 | https://www.baidu.com/ | 21 | 4 | 5010.5 | CN | | 2 | 淘宝 | https://www.taobao.com/ | 17 | 8 | 3996.75 | CN | | 4 | Google | https://www.google.com/ | 23 | 1 | 36474 | US | | 8 | VK | https://vk.com/ | 23 | 23 | 1206 | RU | +----+--------+-------------------------+-----+-------+---------+---------+