Oracle-select基本查询

-- 注释
sqlplus  -- 自带工具
regedit  -- 注册表

--------------------以下必须登录管理员-----------------------------
--解锁  锁定用户
alter  user 用户名  account  lock;
alter  user 用户名  account  unlock;
--修改用户密码  (没有密码找回)
alter user  用户名 identified by 密码; 


------ 管理 服务 
net start  OracleOraDb11g_home1TNSListener --监听服务
net start OracleServiceORCL  ---基础服务
-------------------------------------------------
--- 查询emp表中 所有数据
select *from emp; 
--查询emp表中  指定 ename   job  数据
selecT 
eName ,  job   
from Emp
;

-- 查询当前用户下的所有 表 对象
select *from  user_tables

-- 虚拟表 dual
select    1+3    from dual;
 
select 1/3 from dual;
select 1/(3+1)    from dual;
select 1/3,EMP.* from emp;
---给所有员工涨工资
select   sal+1500  from  emp;  

--空值问题  ORACLE   
--空值是无效的,未指定的,未知的或不可预知的值。
--空值不是空格或者0
--空值参与的表达式   结果一定为空 (需要后期的函数 解决)

--- 每个员工的总工资
select sal+COMM   from  emp;
select  COMM   from  emp;
---列 别名   
select sal+COMM   aaa    from emp;
select sal+COMM as 总工资    from emp;

--""  不是字符串     列的别名  使用 " " 可以包含特殊符号 区分 内容的大小写 
select sal+COMM  "总工资 aaa"    from emp;
--''  表示字符串  
select   "1"  from emp;--别名  
select   '1'  from emp; 

select  "as as".COMM    from EMP "as as";

select ENAME ,EMPNO from emp;

---  拼接  我是 ? 我的工作是 ? 我的薪资是?
select 
'我是'||ename ||',我的工作是' ||job ||',我的薪资是'||sal 
as 个人信息
from emp;

---重复行
select  deptno  from emp ;

--查询所有员工所在的部门编号   --去除重复行 
select distinct   deptno  ,ename  from emp


----where子句 ----   '10' 可以表示 数字10
select  *from emp where deptno=10
select  *from emp where deptno='10' 

--字符大小写敏感
select *from  emp where job='CLERK'

select *from  emp where job='clerk'


---日期       工具--首选项  --时间格式  nfl-option   oracle 格式  ‘01-1月-1982’
-- oracle 中文乱码 几乎没有乱码 jdbc   mysql --- url  
select  * from  emp where hiredate='17-12月-1980'  

--  and  逻辑与    or 逻辑或
---查询 job 是CLERK  并且  sal 大于 1000  

select *from  emp where job='CLERK' and sal>1000
---查询 job 是CLERK    或者      sal 大于 1000 且部门编号是20号部门  
select *from emp where job='CLERK' or  (sal>1000 and deptno=20)

----  >  >=  <  <=  <>  !=

--日期大于 81 年     sal大于 2000  不是 20号部门了

select *from emp where hiredate>'01-1月-1981' and sal>2000  and  deptno!=20

-------  between   值1 and    值2  [ 值1, 值2]    等价于  >= and <=    值1< = 值2

--sal  1000-3000之间     
select *from emp where sal>=1500 and sal<=3000
select *from emp where sal  between  1500 and 3000; 
select *from emp where sal  not between  1500 and 3000;

--- in (值列表)  等值 比较   等价      or
--- sal  800 or 1000 or 3000

select *from emp where sal=800 or sal=1000 or sal=3000
select *from emp where sal in(800,1000,3000)

-- like  模糊查询  %  [0-∞ )   _ [1]  占位符   
--select  *from emp where ename like 'S' ====== select  *from emp where ename= 'S'
select  *from emp where ename like 'S%'
select  *from emp where ename like '%T'
select  *from emp where ename like '%S%'

--第二位 D 
select *from emp where ename like  '_D%' 
--倒数第二位 D
select *from emp where ename like  '%T_' 

--- is null    是否是 空
---查老板
select  *from  emp where mgr is null

--- and  or  not 
--- not between  ... and ...
select *from emp where sal  not between  1500 and 3000;
--- not in (1,2,3)
select *from emp where sal not in(3000,5000 );
---not like     
select *from emp where   ename not   like  'S%'
---is  not  null

--查询  有奖金
select  *from emp where comm is not null
---order by 子句   排序子句   默认升序  ASC  DESC 降序
--- order by  排序的是 返回的所有数据  
select   empno,ename,sal  工资    from  emp         order  by  工资
---  别名 不能直接使用在 自己的 where 子句中
--select   empno,ename,sal  工资    from  emp     where 工资 >1000

select empno ,ename,sal from emp  where sal>1000  order by sal  
select empno ,ename,sal from emp  where sal>1000  order by sal   desc

---根据多个条件排序

select  empno ,ename,sal from emp   order by sal  

----单行函数-------

---------字符函数-------------------------------

select  lower(ename) from emp   where deptno=10; 

select upper('zhaoxiaogang')  from dual;
--job 是clerk 的员工 实现不区分大小写
select  *from  emp where job=upper('clerk');
select  *from  emp where lower(job)= lower('clerk');
select  initcap('shi hao chen')  from  dual

---拼接
select concat ( concat('姓名:',ename) ,'----哈哈')   焦心  from emp;

---截取  substr
select  substr('java1014',5,8) from dual -- 从第 5位开始  到 第8位  都是包含  下标从1开始
select  substr('java1014',5) from dual  -- 从第 5位开始 后面所有
select  substr('java1014',9) from dual 

-- length 长度
select  length('java1014') from dual;
select  substr('java1014',5,length('java1014')) from dual 

--instr  返回  指定字符第一次出现的下标
select  instr('java1014','a1') from  dual; 
--instr  返回  指定字符第一次出现的下标 指定从 第3位开始
select  instr('java1014','a1',3) from  dual; 

---左补   lpad   rpad
select  lpad('java1014',10,'e')    from dual;

select  rpad('java1014',10,'e')    from dual;

---trim  去除左右两边的指定字符
select  ' java1014 ' from  dual
select trim(' '  from  ' java1014 ' ) from  dual
select trim('j'  from  'jjjjjjjava1014jjjjjj' )    from  dual

--replace  替换
select replace('java1014','ava','bvd') from dual;
--------------------------数字函数
---四舍五入
select round(66.66) from dual; --默认到各位

select round(66.66,0) from dual;

select round(66.66,1) from dual;

select round(66.66,-1) from dual;
select round(66.66,-2) from dual;

select  trunc(66.66) from dual
select  trunc(66.66,1) from dual
select  trunc(66.66,-1) from dual


select  ceil(66.000000)  from dual;

select  floor(66.66)  from dual;

---mod  求余
select  mod(12,0) from dual;
select  mod(12,11) from dual;
select  mod(11,12) from dual;
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值