SQL

SQL 知识量:22 - 44 - 129

2.2 调整查询结果><

检索不同的值- 2.2.1 -

如果检索的结果中有重复的内容,而在需要排除重复内容的情况下,可以指示SQL只检索不同的值。

例如:学生表中学生的年龄肯定有重复的,如果只想知道学生的年龄都有哪些时,就可以使用distinct关键字进行查询。把distinct放到检索的列名前面即可。

select distinct age from student;

查询结果:

+-----+
| age |
+-----+
|  11 |
|  12 |
|  10 |
|  13 |
+-----+

需要注意的是:distinct关键字作用于所有的列,不仅仅是跟在其后的那一列。因此,如果查询多个列,除非指定的多列完全相同,否则所有的行都会被检索出来。

限制结果- 2.2.2 -

以上查询都是获得了所有的结果,如果只想查询其中的指定行数时(例如前5行),可以让SQL只返回某些行。问题是,在这方面各供应商的DBMS的具体实现是不同的,例如查询学生表student的前5行内容:

SQL Server的查询语句为:

select top 5 * from student;

DB2的查询语句为:

select * from student fetch first 5 rows only;

Oracle的查询语句为:

select * from student where rownum<=5;

MySQL的查询语句为:

select * from student limit 5;

以上查询的结果均为:

+----+-------+-----+--------+
| id | name  | age | sex    |
+----+-------+-----+--------+
|  1 | Susan |  11 | female |
|  2 | Jame  |  12 | male   |
|  3 | Bob   |  11 | male   |
|  4 | Robot |  10 | male   |
|  5 | Jen   |  11 | female |
+----+-------+-----+--------+

需要注意的是:第一个被检索的行是第0行,而不是第1行,SQL计数从0开始。

添加注释- 2.2.3 -

SQL语言支持在SQL语句中添加注释,注释部分不会被执行,但可以用于对语句进行说明解释。注释的方法有多种,例如:

1、使用--(适用于单行注释)

select * --注释
from student;

2、使用#(适用于单行注释)

select * #注释
from student;

3、使用/*和*/(适用于多行注释)

select * /*注释*/
from student;

特别注意的是:不同的DBMS对注释的语法规定是不同的,例如:MySQL支持#和/**/,但是不支持--。