Oracle学习一
Posted money131
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle学习一相关的知识,希望对你有一定的参考价值。
/*
数据库 --
1.遵循SQL标准
2.不同厂商,不同的数据库产品,但是有自己的方言
3.使用自己的方言,也能够完成相同的功能
4.oracle安全级别要高一些,mysql开源
*/
select 1+1 --在Oracl等于报错,在mysql中输出结果=2
/*
dual : oracle中的虚表,为表,主要是用来不起语法结构
*/
select 1+1 from dual; select * from dual;
selsct 1 from emp;
--直接写一个常量辟邪 * 要高效
select count(1) from emp; select count(*) from emp;
/*
别名查询:使用 as 关键字,可以省略
别名中不能有特殊字符或者关键字,如果有就加双引号
*/
select ename 姓名,sal 工资 from emp; select ename "姓 名",sal 工资 from emp;
/*
去除重复数据 distinct
多列去除重复:每列都一样才能算够做事重复
*/
--查询表
select * from ACCQRYBYPKS;
--添加用例
insert into ACCQRYBYPKS(PK_ACCASOA,PK_ACCCHART) values(02,‘测试一班‘);
--单列去除重复
select distinct PK_ACCASOA from ACCQRYBYPKS;
--多列去除重复
select distinct PK_ACCASOA,PK_ACCCHART from ACCQRYBYPKS;
/*
模糊查询 : like
匹配多个字符
匹配单个字符
*/
insert into ACCQRYBYPKS(PK_ACCASOA,PK_ACCCHART) values(02,‘测试一班‘); insert into epm () values() select *from emp; insert into emp (ID,NAME,JOB,PLANT,MONTH,YEAR) values(‘01‘,‘li三‘,‘程序员‘,‘北京‘,‘500‘,‘6000‘) insert into emp (ID,NAME,JOB,PLANT,MONTH,YEAR) values(‘01‘,‘里斯‘,‘程序员‘,‘石家庄‘,‘500‘,‘6000‘) insert into emp (ID,NAME,JOB,PLANT,MONTH,YEAR) values(‘01‘,‘我爱‘,‘程序员‘,‘河南‘,‘500‘,‘6000‘) insert into emp (ID,NAME,JOB,PLANT,MONTH,YEAR) values(‘01‘,‘破解‘,‘程序员‘,‘上海‘,‘500‘,‘6000‘)
--查询员工姓名第三个字符是0的员工信息
select * from emp where name like ‘l%‘
--查询远工姓名中,包含%的员工信息
--转移字符
select * from emp where name like ‘%\%%‘ escape ‘\‘;
/*
排序:order by
升序: asc ascend
降序:desc descend
排序注意null问题: nulls first | last
*/
--查询员工信息,按照id由高到低排序
select * from emp order by id desc nulls last;
--日期函数
--查询今天的日期
select sysdate from dual;
--查询3个月后的今天的日期
select add_maonths(sysdate,3) from dual;
--查询3天后的日期
selet sysdate + 3 from dual;
--转换函数 数值转字符 字符转数值 日期
--字符转数值 to_number(str)
select 100+‘10‘ from dual; --110 默认一转换 select 100 + to_number(‘10‘) from dual; --110
--日期转换字符 to_char()
select to_char(sysdate,‘yyyy-mm-dd hh:mi:ss‘) from dual;
--只想要年
select to_char(sysdate,‘yyyy‘) from dual; select to_char(sysdate,‘d‘) from dual; --代表一个型其中的第几天 select to_char(sysdate,‘dd‘) from dual; --代表一个月中的第几天 select to_char(sysdate,‘ddd‘) from dual; --代表一年中的第几天 select to_char(sysdate,‘day‘) from dual; --monday select to_char(sysdate,‘by‘) from dual; --mon 星期的简写
--字符转日期
select to date(‘2019-08-27‘,‘yyyy-mm-dd‘) from dual;
--查询1981年 --1985年入职的员工信息 to_date转换字符
select * from emp where (出生年) between to_date(‘1981‘,‘yyyy‘) and to_date(‘1985‘,‘yyyy‘);
/*
条件表达式
case 字段
when 值1 then 值
when 值2 then 值
else
默认值
end
case..when 通用的写法mysql 和 oracle 中都可以使用
特有写法:decode(字段,if1,hen1,if2,then2,else)
*/
-- 给表中姓名取一个中文名
select case ename when ‘mar‘ then ‘刘备‘ when ‘all‘ then ‘关羽‘ else ‘路人甲‘ end "中文名" from emp;
/*
分组表达式 group by
select 分组的条件,分组之后的操作 from 表名 group by 分组条件 having 条件过
SQL的编写顺序:
select..from..where..group by .. having ..ordey by
SQL的执行顺序:
from..where..group by .. having ..select..ordey by
*/
--分组统计所有部门的平均工资,找出平均工资大于两千的部门
select deptno,avg(sa1) from emp group by deptno;
--过滤处大于2000的
select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;
以上是关于Oracle学习一的主要内容,如果未能解决你的问题,请参考以下文章
Oracle学习-Power Designervisio 2003Oracle sql developerOEMexpdp