Oracle数据库课堂笔记之sql基础语句

sql基础语句

简单查询语句

查询就是检索操作,是对已经存在的基本表及视图进行数据检索,不改变数据本身

查询格式

select列名[列名…]+from表名[表名…]+where条件+group by基于分组的列名+having分组条件+order by基于排序的列名[ASC|DESC]

Select执行过程

fromwheregroup byhavingselectorder by

select from 查询语句

select [Distinct]{*,列名[[as]别名],...}
from 表名;

其中,distinct表示选择唯一的结果集,即去除重复记录。*表示选择所有结果集。as后面一般带有别名,可以清晰的告诉我们这个列表示的是什么。

注意

SELECT标识出所需的数据列。
FRO M来自哪个表。
查询列的先后顺序可以与表中的顺序不一致。
目标列形式可以为列名, * ,算术表达式,聚集函数。

定义列的别名

要求:列名和别名之间用空格间隔,或者在列名和别名之间加入可选关键字as
注意:注:列的别名可以用于selectorder by子句中,但是不能用在where子句中。
如果别名包含空格,或特殊关键字符,或区分大小写,如何显示? 使用双引号来表示。

连接操作符

格式:列名||列名
用于连接列与列、列与算术表达式或列与常量之间创建一个字符表达式
连接符两边的列将组合成一个列作为结果输出。

select from where 查询语句

select [Distinct]{*,列名[[as]别名],...}
from 表名
where[条件...];

使用where子句限定返回的数据行。where子句紧跟在from后面。
where语句格式:

where 表达式 操作符 值

字符串和日期

注意:字符串是区分大小写的
字符串和日期型数值都要用单引号引起来。
字符型数值是区分大小写,日期型数值是区分日期表达形式的。
默认的日期形式是DD-MON-YY

比较操作符

在这里插入图片描述

其他比较操作符

在这里插入图片描述
between...and...通常用于显示一定范文内的数据行。
常用格式:

select  a,b
from A
where b between 100 and 200 ;

in运算符来测试表中是否包含列表中的一系列值。
常用格式:

select a,b
from A
where b in (1,2);

Like来执行字符串通配符查找。
查找条件可以包含原义字符串和数字
%:表示零或任意更多字符。
_:代表一个字符。
常用格式:

select a
from A
where a like 'a%';

使用like运算符部分匹配查找功能
常用格式:

select a
from A
where a like '_a%';

可以用escape标识符实现对"%"和’’_"的查找。
常用格式:

select a
from A
where a like '%b\_a%'escape '\';

IS NULL空值运算符是用来判定值是否为空。
空值意味着这个值是不可用的、未分配值的、未知的和不可应用的。
因为空值不能等于或不等任何值,因此不能用"="来测试。

逻辑运算符

在这里插入图片描述
优先规则
在这里插入图片描述

使用()可以改变运算符的优先原则。

分组查询

分组查询的语句格式如下:

select select_value_list
from table _name
where where_condition
group by group_value_list
having group_condition 

其中
select_value_list表示需要查询的数据列表
table _name表示数据来源的表名
where _condition数据过滤的条件表达式
group_value_list用于指定分组的依据,主要是列名
group_condition定义分组后数据应当满足的条件

Group By子句

使用Group By子句将查询结果按group by后面的列进行分组,列值相同的为一组
目的:为了细化集函数的作用对象。
如果未对查询结果分组,集函数将作用于整个查询结果
分组后集函数将作用于每一个组,即每一个组都有一个函数值。
常用格式:

select a,b
from A
group by a;

Having子句

如果分组后还要求按一定条件对这些组进行筛选,最终只输出满足指定条件的组,则可以使用Having子句指定筛选条件。
作用:去掉不满足条件的组
常用格式:

select a,count(*)
from A
group by a 
having count(*)>5;

注意
Having子句跟在group by子句后面,有group by才有having
若用到了分组group by,那么投影的列要么是为分组依据的列,要么为聚集函数,不能有其他情况。
group by后面的列名不可以在select列表中
group by后面的列名不能使用别名
where子句与having短语的根本区别在于作用对象不同
where子句作用表(是分组前的整张表),从中选择满足条件的元组(即记录)where子句不能用于限制分组函数
having短语作用于组(是分组后的每个小组),从中选择满足条件的

Order By子句

使用order by子句对行进行排序
其中ASC表示升序,默认值,DESC表示降序。
order by子句出现在select语句的最后。
ASC:

select a,b
from A
order by hiredate ASC;

其中ASC可加可不加。
DESC:

select a,b
from A
order by hiredate DESC;

多列参与排序

order by列表的顺序就是数据排列的顺序
可以用没有在select列表中出现的列进行排序
例如:

select a,b,c
from A
order by b,c DESC;

注意
在升序排列时,NULL值排在最后。
在降序排列时,NULL值排在最前。
在排序order by子句的末尾可以使用NULLS FIRST或者NULLS LAST指定空值显示在查询结果的开始或者结尾处。

猜你喜欢

转载自blog.csdn.net/Vinseny/article/details/105578510
今日推荐