ORACLE-SQL语句操作

1.select-from语句;

查询列的先后顺序可以与表中的顺序不一致。目标列形式可以为列名,* ,算术表达式,聚集函数。

例:从部门表中查询所有部门信息

select * from dept;

(1)定义列的别名

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

注:列的别名可以用于SELECT和ORDER BY子句中,但是不能用在WHERE子句中。

例如:

 select ename as name ,sal salary from emp;

如果如果别名包含空格,或特殊关键字符,或区分大小写,可以用双引号解决

select ename as "Name" ,sal "an salary" from emp;

(2)连接操作符||:连接符两边的列将组合成一个列作为结果输出。

select dname||'('||deptno||')' as "depts" from dept;

2.SELECT-FROM -WHERE语句

使用WHERE子句限定返回的数据行

select ename,job,sal,deptno from emp where job='CLERK';

注意:在条件语句中,字符串是区分大小写的。

(1)字符串和日期

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

 日期形式默认的日期形式是DD-MON-YY。

例如:

select ename,job,hiredate from emp where hiredate >='17-12月-80';

(2)比较操作符

(3)其他比较运算符

Between…and…:两个值之间(包含边界)
注意:使用 BETWEEN 运算来显示在一个区间内的值

IN:等于列表中的一个
注意:使用IN运算显示列表中的值。

LIKE 模糊查询

使用LIKE来执行字符串通配符查找。
选择条件可以包含字符或数字:
   % 代表零个或多个字符(任意个字符)。
    _ 代表一个字符

注意:还可以使用ESCAPE标识符实现对“%”和 “_”的查找。

ESCAPE:回避特殊符号的:使用转义符。例如:将[%]转为[\%]、[_]转为[\_],然后再加上[ESCAPE ‘\’] 即可。

NULL

注意:is (not) null来判断空值

(4)逻辑运算符

AND要求两个条件都为真结果才为真;

OR 只需要两个条件中的一个为真就能返回真值

NOT运算符:原条件为真,则结果为真,原条件为假,则结果为真

例题:寻找那些工资既不大于3000也不小于1500,也即在1500到3000范围的员工名。

上图查询语句也想当于: 

 select ename,sal from emp where sal between 1500 and 3000;

优先规则

使用括号可以改变运算符的优先原则

使用前:

使用后:

 

3.SELECT语句的分组查询

分组查询的语法格式如下:
SELECT select_value_list FROM table_name WHERE where_condition GROUP BY group_value_list HAVING group_condition
其中,
group_value_list,用于指定分组的依据,主要是列名
group_condition,定义分组后数据应当满足的条件

(1) group by子句

使用GROUP BY 子句将查询结果按group by后面的列进行分组,列值相等的为一组

目的:为了细化集函数的作用对象。

例:在雇员表中,求每个部门的雇员数各有多少。

(2)Having子句

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

例:在雇员表中,求部门的雇员数超过5个人的部门号和部门人数

注意点:

Having子句跟在Group By子句的后面,有GROUP BY才有HAVING。
若用到了分组group by,那么投影的列要么为分组依据的列,要么为聚集函数,不能有其他情况。
group by后面的列名可以不在SELECT列表中
group by后面的列名不能用别名

 

WHERE子句和HAVING短语的根本区别在于作用对象不同。

WHERE子句作用于表(是分组前的整张表),从中选择满足条件的元组(即记录)。 WHERE 子句不能用于限制分组函数
HAVING短语作用于组(是分组后的每个小组),从中选择满足条件的组。

例题:查询每个部门中有获得奖金的雇员人数,要求只显示获得奖金人数超过3人(包含3人)的部门号和雇员人数。

 

(3)ORDER BY子句

使用 ORDER BY 子句对行排序
    ASC:升序,默认值
    DESC:降序

ORDER BY 子句出现在SELECT语句的最后

升序:select ename,sal from emporder by sal

降序:select ename,sal from emporder by sal desc

多列参与排序
ORDER BY 列表的顺序就是数据排列的顺序可以用没有在SELECT列表中出现的列进行排序

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值