SQL 知识量:22 - 44 - 129
如果检索的结果中有重复的内容,而在需要排除重复内容的情况下,可以指示SQL只检索不同的值。
例如:学生表中学生的年龄肯定有重复的,如果只想知道学生的年龄都有哪些时,就可以使用distinct关键字进行查询。把distinct放到检索的列名前面即可。
select distinct age from student;
查询结果:
+-----+ | age | +-----+ | 11 | | 12 | | 10 | | 13 | +-----+
需要注意的是:distinct关键字作用于所有的列,不仅仅是跟在其后的那一列。因此,如果查询多个列,除非指定的多列完全相同,否则所有的行都会被检索出来。
以上查询都是获得了所有的结果,如果只想查询其中的指定行数时(例如前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开始。
SQL语言支持在SQL语句中添加注释,注释部分不会被执行,但可以用于对语句进行说明解释。注释的方法有多种,例如:
1、使用--(适用于单行注释)
select * --注释 from student;
2、使用#(适用于单行注释)
select * #注释 from student;
3、使用/*和*/(适用于多行注释)
select * /*注释*/ from student;
特别注意的是:不同的DBMS对注释的语法规定是不同的,例如:MySQL支持#和/**/,但是不支持--。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6