oracle基础一
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了oracle基础一,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4916字,纯文字阅读大概需要8分钟。
内容图文
![oracle基础一](/upload/InfoBanner/zyjiaocheng/567/e82faca3d3694e3dabc3c85e512d3408.jpg)
1.字符串 是匹分大小写的,在使用时要加引号。 在指定别名时,引号可以加,也可以不加。 当含有空格、特殊字符时,一定要加引号。 不加引号时,显示都为大写,加上引号后,就是按所写的显示了。 在使用字符串时,要使用单引号。 在写别名时,要使用双引号。
1.字符串
是匹分大小写的,在使用时要加引号。
在指定别名时,引号可以加,也可以不加。
当含有空格、特殊字符时,一定要加引号。
不加引号时,显示都为大写,加上引号后,就是按所写的显示了。
在使用字符串时,要使用单引号。
在写别名时,要使用双引号。
2.滤空函数:nvl(表达式, 当表达式为空时使用的值)
select empno, ename, sal, sal * 12 as 年薪, nvl(comm, 0), (sal * 12 + nvl(comm,0) ) 总收入
from emp
3.去掉重复的行
– 作用于一列
SQL> select distinct job from emp;
– 作用于多个列,所有列的值加一起重复才算重复的记录
SQL> select distinct job, deptno from emp;
4.如果只查询一个表达式,没有用到任何表的数据,这时也必须得写from…
可以写成 from dual
dual是一个虚表,本身就存在的,可以直接使用。
如:
select 3+2
select ‘Hello’ || ‘World’ from dual;
5.字符串连接符
SQL> select ename || ‘的薪水是’ || sal from emp;
ENAME||’的薪水是’||SAL
———————————————————-
SMITH的薪水是800
ALLEN的薪水是1600
WARD的薪水是1250
JONES的薪水是2975
MARTIN的薪水是1250
BLAKE的薪水是2850
CLARK的薪水是2450
SCOTT的薪水是3000
KING的薪水是5000
TURNER的薪水是1500
ADAMS的薪水是1100
JAMES的薪水是950
FORD的薪水是3000
MILLER的薪水是1300
也可以使用函数 concat():
SQL> select concat(‘Hello’, ‘World’) from dual;
6.like
在使用like时,可以使用 % 与 _,分别表示任意数量的任意字符或任意一个字符。
要想表达%或_本身,需要使用转义符,例:
SQL> select * from emp where ename like ‘KI\%%’ escape ‘\’;
7.BETWEEN
包含两个边界。
一定是小值写到前面,大值写到后面,否则没有结果。
8.IN
where .. in (.., .., .., …) 如果含有null,没有影响。
例:查询所有是经理的员工
SQL> select * from emp where empno in (select mgr from emp);
where .. not in (.., .., …) 如果含有null,则不返回任何结果。
例:查询所有不是经理的员工
SQL> select * from emp where empno not in (select mgr from emp where mgr is not null);
9.MySQL中日期类型:date, time, datetime
Oracle中只有Date
对日期的处理
1,查询指定日期后入职的员工信息
SQL> select * from emp where hiredate>’31-12月-81’;
2,修改日期的格式
SQL> select * from v$nls_parameters;
SQL> alter session set nls_date_format=’yyyy-mm-dd’; // 只对当前session有效
3,使用日期函数的方式:
SQL> select * from emp where hiredate>to_date(‘1981-12-31’, ‘yyyy-MM-dd’);
或
SQL> select * from emp where to_char(hiredate, ‘yyyy-MM-dd’) > ‘1981-12-31’;
语法:TO_CHAR(date, 'format_model')
语法:TO_DATE(str, 'format_model')
格式字符串不区分大小写:
获取当前时间:
SQL> select to_char(sysdate,'YYYY-MM-DD') from dual;
TO_CHAR(SY
----------
2012-03-07
SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;
TO_CHAR(SY
----------
2012-03-07
SQL> select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2012-03-07 02:33:41
10.排序:
order by 列名, …
可以作用在:数字、日期、字符串。
可以使用列名,表达式,别名,序号(表示select中的第几个列)
当order by所在的列中有null,会:
升序时,null的在下面。
降序时,null的在上面。
我们希望,不管升序还是降序,null值的始终在下面
方式一:SQL> select * from emp order by comm desc nulls last;
方式二:
select empno, ename, job, hiredate, sal, nvl(comm, 0)
from emp
order by 6 desc
11.组函数
select
max(sal) 最高工资,
min(sal) 最低工资,
avg(sal) 平均工资,
sum(sal) 所有员工的工资和,
count(sal) 领工资的员工数量
from emp;
12.组函数对null的处理
例,查询所有员工的平均奖金(有人的奖金为null)
select sum(comm)/count(*) 平均奖金 from emp
组函数会自动过滤掉null值。
在使用avg()时要注意处理null值:
select avg( nvl(comm, 0) ) from emp;
函数可以嵌套使用
13.分组
Group by,写在FROM后,如果有WHERE,就在WHERE后面。
查询的列一定要是:
在group by中出现的列(在Select中不一定全写上)
或是使用组函数
按一个列分组
按多个列分组
参与分组的多个列有一个不相同就是不同的组。
14.分组结果过滤
Having,是分完组后再进行过滤,只显示符合条件的结果。
在Group by与Having中都不可以使用别名。
与Where的区别
Having是是分完组后再进行过滤。
Where是先过滤,再进行分组操作。
如果可以,尽量写Where条件,不写Having。
Select
…
From
…
Where
…
Group by
…
Having
…
Order by
…
================================================
15.子查询:
当一步不能求解时,可以使用子查询。
分为:
单行子查询
多行子查询
可以在主查询的select, from, where, having 都可以放子查询
不可以在主查询的group by 放子查询
单行操作符对应单行子查询,多行操作符对应多行子查询
在select中放子查询时,要求只能是单行子查询。
IN:
ANY:
小于某集合中的任意一个值,就是小于集合中的最大值。
大于某集合中的任意一个值,就是大于最小值。
ALL:
小于某集合中的所有值,就是小于最小值。
大于某集合中的所有值,就是大于最大值。
16.rownum是一个伪列,表示记录在结果集中的行号。
1,rownum一旦生成,就不会变化(会先按没有排序时的默认顺序生成rownum,然后再执行排序)。
2,对于rownum,只能使用<与<=,不能使用>与>=与=。
内容总结
以上是互联网集市为您收集整理的oracle基础一全部内容,希望文章能够帮你解决oracle基础一所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。