关系型数据库——oracle的sql

oracle的sql:

1.列拼接

select concat(concat(concat(concat(concat('编号是:',empno),'的雇员, 姓名是:'),ename),',工作是:'),job) from emp;

结果:

简单方法:

select '编号是:' || empno || '的雇员, 姓名是:' || ename || ',工作是:' || job from emp;

结果:

2.计算年薪(并去重)

使用nvl(v1,v2)处理空值,v1为空返回V2,不为空返回v1
select ename,sal,comm,sal*12+nvl(comm,0) from emp;

结果:

也可以使用decode
select ename,sal,comm,sal*12+decode(comm,null,0,comm) from emp;

decode(字段或字段的运算,值1,值2,值3)

       这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3

3.查询入职日期在1984/4/2到1985/1/1的员工信息

select * from emp where hiredate between to_date('1981/4/2','yyyy/mm/dd') and to_date('1985/1/1','yyyy/mm/dd')

结果:

4.将每个雇员的名字的首字母大写。

SELECT INITCAP(ename) FROM emp;

5.求字符串的长度

SELECT ename,LENGTH(ename) FROM emp;

结果:

6.使用字母“_”替换掉姓名中的所有字母“A”

SELECT REPLACE(ename,'A','_') FROM emp;

6.字符串截取substr(员工前三位)——第一各参数为要截取名字的列,第二个参数为开始点,开始列可以指定0或者1都一样。

SELECT ename,SUBSTR(ename,1,3) FROM emp;
SELECT ename,SUBSTR(ename,0,3) FROM emp;
SELECT ename,SUBSTR(ename,-2,1) FROM emp;

7.去除两遍边空格


SELECT ename,trim(ename) FROM emp;

8.保留小数的位数(舍弃内容函数)

select trunc(953.6286,2) from dual;--953.62

9.四舍五入

select round(953.6286,2) from dual; --953.63

10.两个日期的天差数(求出每个雇员到尽头为止的雇佣天数)

SELECT ename,hiredate,SYSDATE-hiredate FROM emp;
select trunc(sysdate-a.hiredate) from emp a;

11.本月的最后一天日期

SELECT LAST_DAY(SYSDATE) FROM dual;

12.两个日期间的月份差(month_between)

SELECT ename,hiredate,TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)) FROM emp;

结果:

13.求出4个月之后的日期

SELECT ADD_MONTHS(SYSDATE,4) FROM dual;

14.日期变字符串

select to_char(sysdate,'yyyy-mm-dd') from dual;
select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual;
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
select to_char(sysdate,'yyyy') from dual;
select to_char(sysdate,'mm') from dual;

15.字符串转日期

SELECT TO_DATE('2017-09-07','yyyy-mm-dd') FROM dual;
SELECT TO_DATE('2017-09-07 11:33:22','yyyy-mm-dd hh:mi:ss') FROM dual;

16.内连接和外链接的区别

内连接与表前后关系没有关系,内连接必须两边同时满足条件才能查询出来

存在的问题:例如部门表和员工表 联合查询,没有员工的部门将会丢失。

外链接:解决内连接的问题

17.子查询:

子查询可以放在select后面、where后面、from后面、in里面、

18.exist

Select * from dept where exists (select * from emp where emp.deptno = dept.deptno)

执行过程:

1、先执行外查询得到结果集。

2、取出结果集的第一行数据

3、将数据带入子查询执行

4、如果子查询有返回结果则外查询的该行数据有效,

如果子查询没有返回结果则外查询的该行放弃显示

5.取下一条继续执行第三部

结论:外边每一行的数据去子查询里找是否存在,里外一定要有关联关系。

 

19.查询员工前四条

Select rownum,emp.* from emp where rownum<5

20.提取出6到10条记录

select * from (Select rownum rm, t.* from (select * from emp order by sal desc) t) where rm>5 and rm<11

21.授权用户

grant 权限 to 用户
进入system用户给it用户权限 
grant connect to it
grant dba to it

22.事务隔离级别

oracle支持后三种隔离级别,默认是read commited

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值