SQL_2_查询语句
一、投影
selcet语句:
指定要查看的列(字段)信息,设计结果集的样式,可以使用*表示显示所有列信息。
select distinct 'id=' || id,name,age as '年龄'
1、列可以进行运算。
2、任何值与NULL运算得NULL,除了<=>运算符,它会在两边都为null时返回1。
3、列可以取别名,在结果集中会显示别名,别名使用双引号括起来。
4、Oracle可以使用连接符 || 合并列或数据,在结果集中把连接的列或数据显示在同一个列。
5、结果集可以添加常量列,常量为字符串或日期时候需要使用单引号。
6、使用distinct关键字可以在结果集中去除重复行,它必须在select后面。
7、合集:使用union all可以将两个查询语句的结果集拼接在一起,all省略时去除重复行。
8、交集:使用intersect可以将两个查询语句的结果集相同的行取出来。
9、差集:前面的结果集去除后面的结果集的结果。
二、来源
from语句:
说明查询的数据表是哪一个,可以指定多个表,也可以是一个结果集。
from student
三、筛选
where语句:
在结果集中过滤符合条件的行数据,它必须跟在from语句后面。
where ( id between 1 and 30 ) or (name in('lurenjia','ergouzi','sanwazi'))
1、常见的比较条件:大于、小于、大于等于、小于等于、等于、不等于。
2、常见的其它比较条件:
between ... and ... 在两者之间的值。
in(.....) 在in集合中的值。
is null、is not null 值是否为null。
like '...' 模糊查询,包含指定字符串的值。
/** 模糊查询使用通配(%)符或占位符(_)确定格式。 若要查找%或者_可以使用关键字escape 定义转义字符。使用转义字符使其失去特殊意义。 例如:查询jiob_id中包含A_的数据,job_id like '%A#_%' escape '#' */
3、逻辑条件:and or not
注意:where语句中不能使用多行函数。
四、排序
order by语句:
指定结果集的排序顺序,它的位置是查询语句的最后。
order by id,age desc
asc:(默认的)升序。
desc:降序排序,null是最大的。
1、可以使用索引指定,select中的第一个字段为1,第二个字段为2...
2、先按字段1排序,若相同,则按字段2排序。
五、分组
group by语句:
创建分组
例子:查询学生的班级,以及班级对应的学生数量。
select student_classroom,count(student_name) from students group by student_classroom
注意:要是某个字段和组函数同时显示在结果集中,字段必须作为分组条件。否则执行失败。
分组可以多重分组。
六、分组后筛选
having语句:
对组中数据再进行过滤,作用与where一样。
一般having在group by语句后。
例子:查询学生的班级,以及班级中大于60分的学生数量,只显示数量大于5的班级。
select student_classroom,count(student_name) from students where student_scores > 60 group by student_classroom having count(student_name) >5
其中可以使用多行函数。