SELECT语句
SELECT语句是SQL语言的核心,其基本语法格式如下:
语法格式:
SELECT [ALL | DISTINCT | DISTINCTROW ] 列名或表达式 ...
/*SELECT子句*/
[FROM 源表... ] /*FROM子句*/
[WHERE 条件] /*WHERE子句*/
[GROUP BY {列名| 表达式 | position} [ASC | DESC], ... [WITH ROLLUP]] /*GROUP BY子句*/
[HAVING 条件] /*HAVING 子句*/
[ORDER BY {列名 | 表达式 | position} [ASC | DESC] , ...] /*ORDER BY子句*/
[LIMIT {[offset,] row_count | row_count OFFSET offset}] /*LIMIT子句*/
说明:
(1)SELECT子句:用于指定要显示的列或表达式。
(2)FROM子句:用于指定查询数据来源的表或视图,可以指定一个表,也可以指定多个表。
(3)WHERE子句:用于指定选择行的条件。
(4)GROUP BY子句:用于指定分组表达式。
(5)HAVING 子句:用于指定满足分组的条件。
(6)ORDER BY子句:用于指定行的升序或降序排序。
(7)LIMIT子句:用于指定查询结果集包含的行数
投影查询
投影查询用于选择列,投影查询通过SELECT语句的SELECT子句来表示。
语法格式:
SELECT [ALL | DISTINCT | DISTINCTROW ] 列名或表达式 ...
其中,如果没有指定这些选项ALL | DISTINCT | DISTINCTROW,则默认为ALL,即返回投影操作所有匹配行,包括可能存在的重复行。如果指定DISTINCT或DISTINCTROW,则清除结果集中重复行。DISTINCT与DISTINCTROW为同义词。
例如课本上的例6.1
【例6.1】查询student表中所有学生的学号、姓名和专业。
mysql> SELECT sno, sname, speciality
-> FROM student;
查询结果:
+----------+-----------+--------------+
| sno | sname | speciality |
+----------+-----------+--------------+
| 191001 | 刘清泉 | 计算机 |
| 191002 | 张慧玲 | 计算机 |
| 191003 | 冯涛 | 计算机 |
| 196001 | 董明霞 | 通信 |
| 196002 | 李茜 | 通信 |
| 196004 | 周俊文 | 通信 |
+----------+-----------+--------------+
6 rows in set (0.00 sec)
投影全部列
在SELECT子句指定列的位置上使用*号时,则为查询表中所有列。
【例6.2】查询student表中所有列。
mysql> SELECT *
-> FROM student;
该语句与下面语句等价
mysql> SELECT sno, sname, ssex, sbirthday, speciality, tc
-> FROM student;
修改查询结果的列标题
为了改变查询结果中显示的列标题,可以在列名后使用AS <列别名>。
语法格式:
SELECT ... 列名 [AS 列别名]
计算列值
使用SELECT子句对列进行查询时,可以对数字类型的列进行计算,可以使用加(+)、减(-)、乘(*)、除(/)等算术运送符,SELECT子句可使用表达式。
语法格式:
SELECT <表达式> [ , <表达式> ]
去掉重复行
去掉结果集中的重复行可使用DISTINCT关键字。
语法格式:
SELECT DISTINCT <列名> [ , <列名>…]