您的位置:首页 > 数据库 > Oracle

Oracle-SQL03

2016-04-19 21:22 501 查看

SQL查询条件

别名:使用语法是列的别名跟在列名后,中间可以加或不加一个“AS”关键字,别名可以直接写,不必用双引号引起来,但是如果希望别名中区分大小写字符,或者别名中包含字符或空格,则必须用双引号引起来

别名作用:可以为查询的字段制定一个名字,这样在查询出的结果集中,对应该字段的名字就是别名, 使用别名是为了增加结果集的可读性,因为当查询的字段含有函数或者表达式时,该字段在结果集就是这个函数或表达式,可读性差

SQL中!=等价于<>,一般建议使用<>

AND(并且),OR(或)关键字:AND的优先级高于OR,可以通过括号来提高OR的优先级

LIKE条件:用于模糊查询字符串,支持两个通配符,“_”表示任意一个字符,“%”表示任意多个字符(0-多个)

IN,NOT IN:比较操作符:IN用于判断等于列表之一,NOT IN用于判断不再列表中,IN常用于子查询

BETWEEN…AND…:用来查询符合某个值域范围条件的数据

IS NULL,IS NOT NULL:空值NULL是一个特殊的值,比较的时候不能使用“=”号,必须使用IS NULL,否则不能得到正确的结果

ANY,ALL:用于判断诸如:>,>=,<,<=进行判断的,判断与一个列表中的内容的比较,列表中内容通常是一个查询的结果集,而不是给定的具体值,否则无意义

>ANY:大于列表其一(大于最小),*

SQL排序

ORDER BY子句:会根据其后指定的字段的值进行升序或降序将结果集进行排列后显示

*升序(ASC):ASC可以不写,默认升序 降序(DESC):从大到小

*也可对多列进行排序,排序优先级从左到右,每个字段可以单独指定排序顺序

*排序的字段中若有NULL值,NULL被认作最大值

*该子句必须写在SELECT语句的最后一个句子上

聚合函数

聚合函数会将指定字段查询出的每一条记录对应的值全部进行统计,然后得出一个结果

MAX,MIN:求指定字段在查询出的所有记录中最大值与最小值

AVG,SUM:求平均值和总和

聚合函数忽略NULL值

COUNT:统计给定字段有值(不为NULL)的记录条数,查看表中记录总数用COUNT(*)

WHERE 不能使用聚合函数作为过滤条件,原因在于:时机不对

分组

GROUP BY 子句:是配合聚合函数进行分组统计结果使用的

*会根据后面给定的字段值相同的记录进行分组,然后配合聚合函数根据每个组再统计结果

*当SELECT子句中有聚合函数时,凡不在聚合函数中的其他字段都必须出现在GROUP BY子句中,反过来则不是必须的

*GROUP BY 可以按照多个字段分组,分组原则是这些记录的指定字段值的组合相同

HAVING 子句:必须跟在GROUP BY子句之后,作用是在分组统计后,基于统计结果再次进行过滤使用的

*其中可以使用聚合函数的统计结果作为过滤条件来筛选分组

*WHERE的过滤时机是在第一次检索表中数据时进行过滤的,WHERE决定着从表中查询出多少数据,HAVING是在分组统计后再进行过滤的,而分组是在查询出的数据基础上进行的,所以HAVING的过滤是在WHERE之后进行的,决定着取舍哪些分组

查询语句执行顺序

当一条查询语句中包含所有的子句,执行顺序依下列子句次序:

1.FROM 子句:执行顺序为从后往前,从右到左,数据量较少的表尽量放在后面

2.WHERE 子句:执行顺序为自下而上,从右到左,将能过滤掉最大数量记录的条件写在WHERE 子句的最右

3.GROUP BY:执行顺序从左往右分组,最好在GROUP BY前使用WHERE将不需要的记录在GROUP BY之前过滤掉

4.HAVING 子句:消耗资源,尽量避免使用,HAVING 会在检索出所有记录之后才对结果集进行过滤,需要排序等操作

5.SELECT 子句:少用星号,尽量取字段名称,ORACLE 在解析的过程中, 通过查询数据字典将*号依次转换成所有的列名, 消耗时间

6.ORDER BY 子句:执行顺序为从左到右排序,消耗资源

关联查询

将多张表数据联系起来,进行相关的查询工作

表可以使用别名,这样字段可以用表的别名标注以避免SQL语句过于繁琐

关联查询必须定义连接条件,若不定义则会出现”笛卡尔积

*”笛卡尔积”:一个无意义的结果集,会将参与关联的两张表每条数据都连接一遍,产生的数据量是两张表总数据量的乘积

*N张表联合查询,至少要定义N-1个连接条件

等值连接是连接查询中最常见的一种,通常是在有主外键关联关系的表间建立,并将连接条件设定为有关系的列,使用等号”=”连接相关的表

内连接:另外一种关联查询 语法:表1 JOIN 表2 ON 连接条件

外连接:关联查询中不会将不满足连接条件的记录查询出来,当需要跑将不满足连接条件的记录也查询出来时,要使用外连接,外连接分为:左外连接,右外连接,全外连接

*左外连接:语法:表1 LEFT OUTER JOIN 表2 ON 连接条件 ,也可在连接条件右侧后面加个加号表示

以JOIN左侧的表作为驱动表,该表中的数据全部要显示出来,那么不满足连接条件的记录在结果集中来自右侧表中的字段全部以NULL作为值显示

*右外连接:语法:表1 RIGHT OUTER JOIN 表2 ON 连接条件,也可在连接条件左侧后面加个加号表示

*全外连接:语法:表1 FULL OUTER JOIN 表2 ON 连接条件

自连接:自己表中的一条数据对应自己表中的多条数据,然后进行关联查询

*自连接是用来解决相同数据但是又存在父子级关系的树状结构时使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: