oracle第三天+第四天

逐值替换
decode,组成字符串
extract 年龄相减
TO_char转换函数
日期对象 to_date(不能用中文)
控制转换 nvl()将空值转为0
也可以(comm,10,0)满足是10,不满足是0
分析函数
row_number它是将相同的排名直接列出来
rank()将相同的排名并列,但是下一个就没有了
dense_rank()将相同的排名并列,下面的编号也有
赋权限
grant create synonym to lvmin 给账号赋同义词的权限
grant select,update,delete on scott.emp to lvmin
第一种:私有同义词
谁创建的账号就是谁的,
第二种:共有同义词,
create public synonym a for scott.emp
这个同义词是给表赋予的。

 --逐值替换
   select ename,decode(deptno,10,'开发部',20,'测试部',30,'维护部') from emp;

   -- 年份差
   select ename,extract(year from sysdate) - extract(year from hiredate)as 工龄 from emp

   -- 转换函数
   Select TO_CHAR(0.12355,'$0.9999') FROM DUAL;--转为字符串,四舍五入

   --日期对象
   select to_date('2019-11-11','yyyy-mm-dd')from dual
   --查询每一个人的工资总和
   --控制转换
   select ename,(sal+nvl(comm,0)) as 工资总和 from emp
   select * from emp
   select ename,(sal+nvl2(comm,10,0))as 工资总和 from emp

   --
   SELECT NULLIF(100,200)  FROM DUAL;
   SELECT NULLIF(100,200)  FROM DUAL
   --分析函数
    select ename,sal,row_number() over(order by sal asc) as 排名 from emp
    select ename,sal,rank() over(order by sal asc) as 排名 from emp --相同值并列
    select ename,sal,dense_rank() over(order by sal asc) as 排名 from emp --并列也计算上

    --赋权限,创建同义词的权利
    grant create synonym to lvmin
    --授予可以查询、删除、修改scott.emp的权限
    grant select,update,delete on scott.emp to lvmin;
    --创建私有同义词
    create synonym e for scott.emp
    select * from e
    --创建公有同义词
    create public synonym a for scott.emp
    --
    select * from a 直接给表设别名,查询方便。

--第四天

 --创建序列
    create sequence seq0611
    start with 1
    increment by 1;--序列是一个独立的对象,有点类似于迭代器
    select * from java0611 --无回滚,这个序列就是一个虚拟数。
    insert into java0611 values(seq0611.nextval,'莫风','男',to_date('1991-01-08','yyyy-mm-dd'),222);
    
    select seq0611.currval from dual
    --
    select * from emp
    select * from emp join dept on emp.deptno=dept.deptno
    where dname='SALES'
    --创建视图
    create view dept_emp
    as
    select empno,ename,job,sal,comm,emp.deptno,dname from emp join dept on emp.deptno=dept.deptno
    --利用视图查询其中的某些条件
    select * from dept_emp where dname='SALES'
   
   --修改视图
   create or replace view dept_emp2
   as
   select * from emp order by sal asc
   --删除视图
   drop view dept_emp
   --查询视图
   --给scott授予创建视图的权限
   grant create view to scott
   --创建测试索引
       create table t_testseq
    (
      id number,
      name varchar2(10)
    );
--创建序列,用于自增
create sequence seq_value
start with 1
increment by 1;
--视图
--插入数据
select * from t_testseq where id=69999
--创建索引,提高检索速率
create index in0611 on  t_testseq(id)

猜你喜欢

转载自www.cnblogs.com/a199706/p/11686424.html