Oracle 学习笔记

Oracle 学习笔记

Day_1

工具安装:

pysql 安装:不能安装再有中文,空格的路径下

然后破解(百度破解)

select *  from tab
/* 数据库-数据库实例-表空间-数据文件
通常情况下,orcale 只有一个是实例。
新建项目时的区别:
MYsql: 创建一个数据库,创建相应的表
ORACLE: 创建一个表空间,创建用户,再由用户创建相应的表

oracie是多用户的,MYsQL是多数据库的
1.遵循sQL标准
2.不同厂商,不同的数据库产品,但是有自己的方言
3.使用自己的方言,也能够完成相同的功能
4. oracle安全级别要高,MYSQL开源免费

*/
  • 基本查询

    SQl:结构化查询语言

    SQL的分类以及常见的操作符:
    四类:
    DDL∶数据定义语言.create.4ler drop truncateDML :数捂操纫语言insert update delete
    DCL :数据控制语言安全授权grant revoke
    DQL :数据查询语言select from子句where子句

  • 查询语句的结构

    select [列名] [*] from tablename [where 条件] [group by 分组条件] [having 过滤] [order by 排序 ] 
    select 1+1 --抛出异常(但是在MySQL正常运行,同样是sql 标准 ,执行的方言和标准不同)
    select 1+1 daul --在Oracle 中建立虚表伪表,补齐语法结构,系统提供。
    
    
    --别名查询,使用as 关键字
    select ename 姓名 ,sal 工资 from emp;
    /*
    别名不允许存在特殊字符(&,%《%#@)关键字,如果有加双引号*/
    
    --去除重复数据 distinct(每一列都一样,才是重复)
    
    select distinct name from emp --单例去除重复
    select distinct  job,name from emp --多例去除重复
    
    
    --查询中的四则运算
    select 1+1 from dual
    --查询员工年薪
    select SAl* 12 from emp
    
    --查询员工年薪+奖金
    
    select SAL*12+comm from emp   --出现NULL 
    
    select SAL*12+nal(comm,0)  --nal(a,b) => com==True?comm,0
    /*
    注意:null值,代表不确定的不可预知的内容,不可以做四则运算
    */
    
    

    image-20201224181050684

员工表

出现空:

image-20201224181300161

--字符串拼接  java : +  ; oracle :||
--查询员工姓名  姓名:scott

select * from emp;
select '姓名:' || ename from emp; --使用连接符 ||
select concat('姓名:',ename) from --函数查询 concat()

  • 条件查询
/*
条件查询: where[后面的写法]
关系运算符:>>==<<= :=<>逻辑运算符: and or not
其它运算符:
like模糊查询
in(set)在某个集台内
between. .and. .在某个区/间内is null 判断为空
is not nuli郑断不为空r
*/
--查询每个月能的能得到奖金的员工信息
select * from emp where comm is not null ;
select * from emp where sal >=1500 and sal <=3000;

--查询缪个名字在某个范围的员工信息("json",'scott','ford') in
select * from emp where ename in ('Jones','ford','scott');

员工信息表:

image-20201224182758195

  • 模糊查询
/*
模糊查询:like
% 匹配多个字符
- 匹配单个字符
*/
select * from emp where eanme like '__O%'; --查询第三个字符是)

--查询员工姓名中包含% 的员工信息

select * from emp where eame like '%\%%' escape '\' --告诉Oracle '\' 是转义字 符 


  • 排序
/*
排序: order by
排序:按

升序:asc
升序:asc

ascend
扬升

降序:desc
降序:DESC

descend
下降

*/
--查询员工信息,按照奖金由高到低排序

select * from emp order by comm desc --此时默认nulls first 也就是 null 类型默认排列在前面

select * from emp order by comm desc nulls last --null 类型排列在最后

select sum(sal) from emp;

select count(1) from emp;

select avg() 

image-20201224201210219

  • 数值函数
--数值函数
select ceil(45.975) from dual;

select floor(23.4) from dual;
--四舍五入
select round (34.923,-2) from dual;

select round (34,999,-3) from dual;

--截断

select trunc(234.432,-2) from dual; --234.43

--求余

select mod(9,3) from dual; --0

select mod(9,4) from dual; --1

--字符函数  substr(str1,起始索引,长度)

select substr('lloveyou',0,3) from dual;

select substr('loveyou',1,3,) from dual;

select lengh('loveyou') from dual;

--去除字符串的空格

select trim('   loveyou    ') from dual;

--替换字符串
select replace ('loveyou ','o','l') from dual; --替换o 为 l


  • 日期函数
select add_month(sysdate,3) from dual ; --第三天

select sysdate-hiredate from dual;

select ceil(sysdate -hiredate)/7 from emp;

--查询员工入职的天数 
select months_between(sysdate,hiredate)/12 from emp;

  • 转换函数
--转换函数数值转字符字符转数值日期
--字符转数值to_number (str)鸡肋

select 110+'12' from dual --122 自动转换

--年
select to_char(sysdate ,'yyyy') from dual;

--日

select to——char(sysdate,'dd') from dual

--字符转日期

select to_date ('2017-04-10','yyyy-mm-dd') from dual;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eab2DdyN-1608898881220)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20201224214424499.png)]

员工查询:

image-20201224214829738

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RMPXCOYM-1608898881224)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20201224214851748.png)]

  • 通用函数
/*
通用函数:
nvi(参议i,参数2)如果参数1 = null就返回参数2
nvl2(参数1,参数2,参数3)如果参数1 = null,就返回参数3,否则返回参数2
nullif(参数1,参谈2)如果参数1 = 参数二2 ,那么就返回null,否则就返回参数1
coalesce :返回第一个不为空的数。
*/
  • 条件表达式
/*条件表达式:
case 字段:
when 值ithen值when值2then值eise
默认值end
*/
select 
	case ename 
	 when 'smith' then '刘备小二'
	 when 'alien' then '诸葛村夫'
	 else 
	 	'路人甲'
	 end '中文名'
from emp;

--对应英文取一个中文名

select decode (ename,'smith','诸葛菜鸡','allth','刘备小二','black','张飞飞') from emp ;

image-20201224215653369

image-20201224215912706

  • 分组查询
/*
分组表达式group by
select 分组的条件,分组之后的操作 from 表名 group by 分组的条件 having 条件过滤
*/
--分组统计所有部门的平均工资,找出平均工资大于2000的部门。
select deptno ,avg(sal) from emp group by deptno ;

--过滤大于2000的

select deptno ,avg(sal) from emp group by deptno having avg(sal) >2000;

--where和having的区别: 
--  where后面不能接聚合函数,可以接单行函数
--  having是在group by之后执行,可以接聚合函数
 
/*
sql的编写顺序:
select . . from ... where ..group by having .. order by
from .. where group by  having ..select ..order by 
*/

SQL 的执行顺序:

大于2000的

select deptno ,avg(sal) from emp group by deptno having avg(sal) >2000;

–where和having的区别:
– where后面不能接聚合函数,可以接单行函数
– having是在group by之后执行,可以接聚合函数

/*
sql的编写顺序:
select . . from … where …group by having … order by
from … where group by having …select …order by
*/


**SQL 的执行顺序:**

![image-20201224221251962](https://img-blog.csdnimg.cn/img_convert/70db80fff05dce1f30a1b6d1ddb0813c.png)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值