oracle学习

oracle

1.常用的关系型数据库;
什么是关系数据库?
关系型数据库就是根据关系模型建立起来的数据库,关系模式就是通过相互联系的二维表格的方式存储数据

一个oracle数据库是由多个oracle实例组成的.
表属于用户,而用户属于数据库

2.oracle安装
解锁scott和hr用户
登录管理员账号sys
使用命令:
alter user scott account unlock;解锁scott
alter user scott identified by tiger; 改令牌
conn hr 切换用户

3.dual表

Oracle提供的最小的表,不论进行何种操作(不要删除记录),它都只有一条记录——‘X’。 例如:执行select * from dual,里面只有一条记录;执行insert into dual values(‘Y’)后,再次查询dual表,仍然显示一条记录。
是sys用户下的一张内部表,所有用户都可以使用DUAL名称访问,无论什么时候这个表总是存在。 例如:执行一个查看当前日期的语句 select sysdate from
dual,这条语句在放在放在任何一个oracle数据库当中都不会报错,所以一般做一些特定查询的时候用这个表是最稳妥的。

4.sql中的空值
空值是无效的,未指定的,未知的或不可预知的值,空值不是空格或者0或""

  1. 包含null的表达式都为null
    滤空函数nvl(a,b),如果 a 为 null 则返回 b
  2. null != null
    –查询奖金为null的员工
    sql select * from emp where comm=null; ×
    sql select * from emp where comm is null;√ is / is not

5.基本查询

–当前用户 Show user
–当用户下的表 Select *from tab;
–员工的结构 Desc emp
–查询所有的员工信息 Select * from emp;
–查看行宽 Show linesize
–设置行宽 Set linesize 120
–通过列名查询 Select empno,ename,job.mgr.hiredate,.sal,comm,deptno from emp;

-DISTINCT去掉重复记录
Select deptno from emp;
Select distinct deptno from emp;
Select distinct deptno,job from emp;
distinct作用域后面的所有的列,只要组合起来不重复就可以

-连接符||
select ename||’的薪水是’||sal from emp;

-concat函数
select concat(‘NiHao’,’Oracle’); concat(str1, str2,...) 
返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
	
Select 3+2 from dual;

字符串:
是可以是select列表中的一个字符,数字,日期
日期和字符只能在单引号中出现
每当返回一行是,字符串被输出一次
字符大小写敏感
日期格式敏感
默认的日期根式是DD-MON-RR   21-6月-81='1981-6-21'
修改日期格式Alter session set NLS_DATE_FORMAT=’yyyy-mm-dd’;  仅当前窗口有效

其他比较运算符:
between..and...在两个之间(包含边界)  小在前大在后 包含边界值
in(set)  等于值类名的一个    如果集合中含有null,不能使用 not in ,可以使用in
like 模糊查询(‘%’,,’_’)   转义 \ 
	查询名中含有下划线的员工
	sqlselect * from emp where ename like ‘%\_%’ escape ‘\’;
is null 空值

逻辑运算
and 逻辑并   or逻辑或   not 逻辑否

Order by
Asc :升序  (默认)                    Desc:降序
select * from emp  order by deptno,sal desc;
order by作用与后面的所有列,先按照第一个列表排序,再后面的列进行排序
desc只作用域离他最近的列
当order后会生成一个新的表,就不是原来的表了
null的排序,null值最大  使用滤空函数或者 最后面加上 nulls last;

6.函数

  1. 单行函数

     字符函数:
     Select lower(‘NiHao java’),upper(‘NiHao java’ ) from dual;
     
     --substr(a,b)从a中,第b位开始取
     Select substr(‘NIhao java’,4) from dual;
     --substr(a,b,c)从a中,第b位开始取,取C位
     Select substr(‘NIhao java’,4,3) form dual;
     
     --length 字符数 lengthb字节数
     Select length(‘nihao’),lengthb(‘nihao’) from dual;
     Select length(‘你好),lengthb(‘你好’) from dual;
     
     --replace
     Select replace(‘nihao java’,’a’,’*’)from dual;
     
     --trim去掉前后指定的字符
     Select trim(‘H’ from ‘HelHlo WordH’) from dual;
    
     数值函数
     round四舍五入 trunc截断
     select round(45.926,2),round(45.926,1),round(45.926,0),round(45.926,-1),round(45.926,-2) from dual;
     45.93    45.9    46   50   0
     select trunc(45.926,2),trunc(45.926,1),trunc(45.926,0),trunc(45.926,-1),trunc(45.926,-2) from dual;
     45.92    45.9    45   40   0
     
     假设 sysdate=’25-JUL-95’
     round(sysdate,’month’)--01-AUG-95
     round(sysdate,’year’)------01-JAN-96
     
     日期函数
     oracl中的日期数据时间含有两个值:日期和时间
     默认的日期格式是: DD-MON-RR
     months_between 两个日期的相差的月数
     add_months(date,1) 向指定日期加上若干约束   加1个月
     next_day(date,char)指定日期的下一个日期
     char:为1-7或星期日-星期六  
     last_day 本月的最后一天
     --当前时间
     select sysdate from dual;
     
     格式转换
     to_char
     2021-04-03 15:48:20今天是星期六
     Select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss”今天是”day’) from dual;  字符串需要双引号
     
     to_char 函数对数字的转换
     格式: 9数字  0零   $美元符号   L本地货币符号  .小数点   ,千位符
     查询员工的薪资 :两位小数,千位符,本地货币代码
     select to_char(sal,’L9,999.99’) from emp;   
    
  2. 通用函数
    nvl滤空函数
    条件表达式:在 sql中使用if-then-else
    case表达式:
    语法:
    CASE expr WHEN comparison_exp1 then return_expr1
    [WHEN comparison_exp2 then return_expr2
    WHEN comparison_expn then return_exprn
    ELSE else_expr]
    END
    –给员工涨工资,总裁1000,经理800,其他400
    select ename,job,sal 涨前,
    case job when ‘PRESIDENT’ then sal+1000
    Whe ‘MANAGER’ then sal+800
    else sal+400
    end 涨后 from emp;

      decode函数:oracle自己的语法 ,类似java
     语法:
     DECODE (col|expression,search1,resut1
     [,search2,result2,...,]
     [,default]            
     )
     
     Select ename,job,sal涨前,
      Decode(job,’PRESIDENT’ ,sal+1000,’MANAGER’ ,sal+800,sal+400)涨后
     From emp;
    
  3. 多行函数
    组函数会忽略空值,组函数会自动缕空
    常用的多行函数
    Avg Count Max Min Sum
    –工资总额
    select sum(sal) from emp;
    –人数
    select count(*) from emp;

    select  a,组函数(x)
    from emp
    group by a;
    
    在select列表中,所有未包含在组函数中的列都应该包含在group by 子句中
    包含在group by 子句中的列不必包含在select列表中
    select  a,b,c组函数(x)
    from emp
    group by a,b,c;
    
    非法使用组函数
    select deptno,count(ename)  from emp;
    
    多个列的分组:先按照第一个列分组,如果相同,再第二个列分组,以此类推
    
    group  by增强
    Select deptno,job,sum(sal) from emp group by deptno,job;
    +
    select deptno,sum(sal) from emp group by deptno;
    +
    select sum(sal) from emp 
    =
    select deptno,job,sum(sal) from emp group by rollup(deptno,job);
    
    group by rollup(a,b)  抽象
    =
    group by a,b
    +
    group by a
    +
    没有group by
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值