AI智能
改变未来

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


sql基础语句

简单查询语句

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

查询格式

select

列名[列名…]+

from

表名[表名…]+

where

条件+

group by

基于分组的列名+

having

分组条件+

order by

基于排序的列名[ASC|DESC]

Select执行过程

from

where

group by

having

select

order by

select from 查询语句

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

其中,

distinct

表示选择唯一的结果集,即去除重复记录。

*

表示选择所有结果集。

as

后面一般带有别名,可以清晰的告诉我们这个列表示的是什么。

注意

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

定义列的别名

要求:列名和别名之间用空格间隔,或者在列名和别名之间加入可选关键字

as


注意:注:列的别名可以用于

select

order by

子句中,但是不能用在

where

子句中。
如果别名包含空格,或特殊关键字符,或区分大小写,如何显示? 使用双引号来表示。

连接操作符

格式:

列名||列名

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

select from where 查询语句

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

使用

where

子句限定返回的数据行。

where

子句紧跟在

from

后面。

where

语句格式:

where 表达式 操作符 值

字符串和日期

注意:

字符串是区分大小写的


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

DD-MON-YY

比较操作符

其他比较操作符

between...and...

通常用于显示一定范文内的数据行。
常用格式:

select  a,bfrom Awhere b between 100 and 200 ;

in

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

select a,bfrom Awhere b in (1,2);

Like

来执行字符串通配符查找。
查找条件可以包含原义字符串和数字

%

:表示零或任意更多字符。

_

:代表一个字符。
常用格式:

select afrom Awhere a like \'a%\';

使用

like

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

select afrom Awhere a like \'_a%\';

可以用

escape

标识符实现对\”%\”和’’_\”的查找。
常用格式:

select afrom Awhere a like \'%b\\_a%\'escape \'\\\';

IS NULL

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

逻辑运算符


优先规则

使用

()

可以改变运算符的优先原则。

分组查询

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

select select_value_listfrom table _namewhere where_conditiongroup by group_value_listhaving group_condition

其中

select_value_list

表示需要查询的数据列表

table _name

表示数据来源的表名

where _condition

数据过滤的条件表达式

group_value_list

用于指定分组的依据,主要是列名

group_condition

定义分组后数据应当满足的条件

Group By子句

使用

Group By

子句将查询结果按

group by

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

select a,bfrom Agroup by a;

Having子句

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

select a,count(*)from Agroup by ahaving 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,bfrom Aorder by hiredate ASC;

其中

ASC

可加可不加。
DESC:

select a,bfrom Aorder by hiredate DESC;

多列参与排序

order by

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

select a,b,cfrom Aorder by b,c DESC;

注意
在升序排列时,NULL值排在最后。
在降序排列时,NULL值排在最前。
在排序order by子句的末尾可以使用

NULLS FIRST

或者

NULLS LAST

指定空值显示在查询结果的开始或者结尾处。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Oracle数据库课堂笔记之sql基础语句