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;

 

转载于:https://www.cnblogs.com/money131/p/11421179.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值