文章目录

  • 1、课程总介绍
    • Oracle由来&埃里森的身世
    • 为什么学习Oracle
  • 2、Oracle安装与配置
  • 3、正式学习部分
    • Oracle体系结构
    • Oracle和MYSQL的差别
    • SQL的简单回顾
    • 虚表的概念
    • 别名查询
    • 去除重复数据
    • 四则运算
    • 字符串拼接
    • 条件查询
    • 模糊查询
    • 排列查询
    • 多行(聚合)函数
    • 数值函数
    • 字符函数
    • 日期函数
    • 转换函数
    • 判断函数:if和case
    • 通用函数

1、课程总介绍

第一天:
  1.Oracle概念和安装
  2.基本查询
  3.条件查询
  4.Oracle中的函数
第二天:
  1.多表查询(mysql中也有,概念一样语法不同,面视重要)
  2.子查询(mysql中也有,概念一样语法不同,面视重要)
第三天:
  1.表空间的概念
  2.用户
  3.视图(mysql中也有,概念一样语法不同,面视重要)
  4.索引(mysql中也有,概念一样语法不同,面视重要)
  5.序列(mysql中也有,概念一样语法不同,面视重要)
  6.同义词
  7.PLSQL编程
第四天:
  1.PLSQL编程
  2.游标
  3.存储过程
  4.存储函数
  5.触发器
掌握前三天可以达到企业要求水平,掌握所有可以直接去拿Oracle的OCA认证甚至更高的凭证,直接胜任Oracle工作

Oracle由来&埃里森的身世

Oracle:起初 4人 2000美元 1200美元60%股份 程序员 写数据
读出数据 处理大量数据
由来:IBM公司某发表一篇论文——R关系型数据库模型,埃里森看到了并自己创造了Oracle的第一个版本,忽悠了中央情报局并卖出,走上人生巅峰,最新一任老婆是个模特

为什么学习Oracle

mysql:开源免费的数据库, 中小型企业, 淘宝网, mysql集群
Oracle:收费的数据库, 国企, 金融, 银行, 证券, 保险, 京东 | 按CPU核数收费, 一核=永久使用费用18万.

2、Oracle安装与配置

Oracle虚拟机安装:
  1. 先安装 vm wareworkstation
  2. 双击纯净版中的 xp_oracle.vmx文件
  3. 关闭防火墙

配置网络:
  1. 编辑 ----> 添加虚拟网络
  2. 设置虚拟机网络为固定IP地址
  3. 测试网络是否ping通

Oracle软件安装:
  1.将Oracle拖到虚拟机中
  2.安装数据库软件
  3.解锁Scott和HR账户(安装完可以登录页面,该页面可以直接管理查看数据库)

  4.配置Oracle的地址为固定IP地址
   C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN
   修改listener和tnsnames的host为对应的ip地址即可
  5.重启Listener 和 ORCL服务
  6.客户端测试访问ORACLE
重点-PLSQLDevelop的安装: (注意:安装在没有中文,没有空格的路径下)
  1.先安装instantclient
  2.配置tools --> preferences --> 配置instantclient的路径
  3.将前面步骤中tnsnames.ora 文件拷贝到本机, 配置TNS_ADMIN环境变量

  
  4.重启PLSQLDevelop
  5.输入用户名和密码测试(新建SQL窗口即可执行命令)

3、正式学习部分

Oracle体系结构

数据库 —> 数据库实例 —> 表空间(逻辑单位)(用户) —> 数据文件(物理单位)
地球  —> 一个国家  —> 省份(逻辑单位)(公民)  —> 山川河流(物理单位)

通常情况下,ORacle数据库只会有一个实例ORCL,

新建一个项目:
  MYSQL : 创建一个数据库,创建相应的表
  Oracle: 创建一个表空间,创建用户,用户去创建表

Oracle和MYSQL的差别

Oracle是多用户的, MYSQL是多数据库的

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

SQL的简单回顾

基本查询:
  SQL : 结构化查询语言
请听题: 请说一下SQL的分类以及每类常见的操作符都有哪些
 四类:
  DDL : 数据定义语言 create alter drop truncate
  DML : 数据操纵语言 insert update delete
  DCL : 数据控制语言 安全 授权 grant revoke
  DQL : 数据查询语言 select from子句 where子句
 查询语句的结构:
  select [列名] [*] from 表名 [where 条件] [group by 分组条件] [having 过滤] [order by 排序]
  select * from emp;
  select 1+1; --在Oracle等于报错 ,在MYSQL中输出结果是2

虚表的概念

/*dual : oracle中的虚表 ,伪表, 主要是用来补齐语法结构
*/
select 1+1 from dual;
select * from dual;
select 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 distinct job from emp;
--多列去除重复的
select distinct job,deptno from emp;

四则运算

select 1+1 from dual;
--查询员工年薪  = 月薪* 12
select sal*12 from emp;--查询员工年薪+奖金
select sal*12 + comm from emp;--nvl 函数 : 如果参数1为null  就返回参数2
select sal*12 + nvl(comm,0) from emp;
注意: null值 , 代表不确定的 不可预知的内容 , 不可以做四则运算

字符串拼接

/*
字符串拼接:java : + 号拼接Oracle 特有的连接符: || 拼接在Oracle 中 ,双引号主要是别名的时候使用, 单引号是使用的值, 是字符concat(str1,str2) 函数, 在mysql和Oracle中都有
*/
--查询员工姓名 :  姓名:SCOTT
select ename from emp;
--使用拼接符
select '姓名:' || ename from emp;
--使用函数拼接
select concat('姓名:',ename) from emp;

条件查询

/*条件查询 : [where后面的写法]   关系运算符: > >= = < <= != <>逻辑运算符: and or not其它运算符:like 模糊查询in(set) 在某个集合内between..and.. 在某个区间内is null  判断为空is not null 判断不为空
*/
--查询每月能得到奖金的员工信息
select * from emp where comm is not null;--查询工资在1500--3000之间的员工信息
select * from emp where sal between 1500 and 3000;
select * from emp where sal >= 1500 and sal <= 3000;--查询名字在某个范围的员工信息 ('JONES','SCOTT','FORD') in
select * from emp where ename in ('JONES','SCOTT','FORD');_   匹配单个字符如果有特殊字符, 需要使用escape转义

模糊查询

/*模糊查询: like%   匹配多个字符
--查询员工姓名第三个字符是O的员工信息
select * from emp where ename like '__O%';--查询员工姓名中,包含%的员工信息
select * from emp where ename like '%\%%' escape '\';
select * from emp where ename like '%#%%' escape '#';

排列查询

/*排序 : order by 升序: asc    ascend降序: desc   descend排序注意null问题 : nulls first | last同时排列多列, 用逗号隔开
*/
--查询员工信息,按照奖金由高到低排序
select * from emp order by comm desc nulls last;--查询部门编号和按照工资  按照部门升序排序, 工资降序排序
select deptno, sal from emp order by deptno asc, sal desc;

多行(聚合)函数

/*函数: 必须要有返回值单行函数: 对某一行中的某个值进行处理数值函数字符函数日期函数转换函数通用函数多行函数: 对某一列的所有行进行处理max()  min count sum avg//直接忽略空值
*/
--统计员工工资总和
select sum(sal) from emp;--统计员工奖金总和  2200
select sum(comm) from emp;--统计员工人数 14
select count(1) from emp;--统计员工的平均奖金  550  错误    2200/14 =
select avg(comm) from emp;--统计员工的平均奖金 157.
select sum(comm)/count(1) from emp;
select ceil(sum(comm)/count(1)) from emp;update emp set ename = 'TUR%NER' where ename = 'TURNER';select * from emp;

数值函数

--数值函数
select ceil(45.926) from dual;  --46
select floor(45.926) from dual; --45
--四舍五入
select round(45.926,2) from dual; --45.93
select round(45.926,1) from dual; -- 45.9
select round(45.926,0) from dual; --46
select round(45.926,-1) from dual; --50
select round(45.926,-2) from dual; --0
select round(65.926,-2) from dual; --100--截断
select trunc(45.926,2) from dual; --45.92
select trunc(45.926,1) from dual; -- 45.9
select trunc(45.926,0) from dual; --45
select trunc(45.926,-1) from dual; --40
select trunc(45.926,-2) from dual; --0
select trunc(65.926,-2) from dual; --0--求余
select mod(9,3) from dual; --0
select mod(9,4) from dual; --1

字符函数

-- substr(str1,起始索引,长度)
--注意: 起始索引不管写 0 还是 1 都是从第一个字符开始截取
select substr('abcdefg',0,3) from dual; --abc
select substr('abcdefg',1,3) from dual; --abc
select substr('abcdefg',2,3) from dual; --bcd--获取字符串长度 24 28
select length('abcdefg') from dual;--去除字符左右两边的空格
select trim('  hello  ') from dual;--替换字符串
Select replace('hello','l','a') from dual;

日期函数

--查询今天的日期
select sysdate from dual;
--查询3个月后的今天的日期
select add_months(sysdate,3) from dual;
--查询3天后的日期
select sysdate + 3 from dual;
--查询员工入职的天数
select sysdate - hiredate from  emp;
select ceil(sysdate - hiredate) from  emp;--查询员工入职的周数
select (sysdate - hiredate)/7 from emp;--查询员工入职的月数
select months_between(sysdate,hiredate) from emp;--查询员工入职的年份
select months_between(sysdate,hiredate)/12 from emp;

转换函数

 (数值转字符 字符转数值  日期)
--字符转数值 to_number(str) 鸡肋
select 100+'10' from dual;  --110  默认已经帮我们转换
select 100 + to_number('10') from dual; --110--数值转字符
select to_char(sal,'$9,999.99') from emp;
select to_char(sal,'L9,999.99') from emp;
/*to_char(1210.73, '9999.9') 返回 '1210.7' to_char(1210.73, '9,999.99') 返回 '1,210.73' to_char(1210.73, '$9,999.00') 返回 '$1,210.73' to_char(21, '000099') 返回 '000021' to_char(852,'xxxx') 返回' 354'
*/--日期转字符 to_char()
select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual;
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
--只想要年
select to_char(sysdate,'yyyy') from dual;  --2017--只想要日
select to_char(sysdate,'d') from dual; --2  代表一个星期中第几天
select to_char(sysdate,'dd') from dual;  --10  代表一个月中的第几天
select to_char(sysdate,'ddd') from dual; --100 代表一年中的第几天select to_char(sysdate,'day') from dual;  --monday
select to_char(sysdate,'dy') from dual;   --mon  星期的简写--字符转日期
select to_date('2017-04-10','yyyy-mm-dd') from dual;--查询1981年 -- 1985年入职的员工信息
select * from emp where hiredate between to_date('1981','yyyy') and to_date('1985','yyyy');

判断函数:if和case

一、单个IF
1、if a=...  then.........end if;2、if a=... then......else....end if;二、多个IFif a=..  then......elsif a=..  then....end if;
这里中间是“ELSIF”,而不是ELSE IF 。这里需要特别注意2、decode函数
DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else)
表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。3、case whencase when a='1'then 'xxxx'when a='2' then 'ssss'else'zzzzz'end as
注意点:
1、以CASE开头,以END结尾
2、分支中WHEN 后跟条件,THEN为显示结果
3、ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加
4、END 后跟别名

通用函数

/* 通用函数:nvl(参数1,参数2) 如果参数1 = null 就返回参数2nvl2(参数1,参数2,参数3) 如果参数1 = null ,就返回参数3, 否则返回参数2nullif(参数1,参数2) 如果参数1 = 参数2 那么就返回 null , 否则返回参数1coalesce: 返回第一个不为null的值
*/
select nvl2(null,5,6) from dual; --6;
select nvl2(1,5,6) from dual; --5;select nullif(5,6) from dual; --5
select nullif(6,6) from dual; --nullselect coalesce(null,null,3,5,6) from dual;  --3select ceil(-12.5) from dual; --12
select floor(12.5) from dual; --12select '  hello  ' from dual;
select * from emp;

Oracle数据库(一):安装函数查询条件查询相关推荐

  1. 【从零开始学习Oracle数据库】(3)函数与子查询和连接查询

    #-- --查询语句的基本格式 --select 字段 1 , 字段 2 , 字段 3 , 表达式 , 函数 , ... --from 表名 --where 条件 --group by 列名 --ha ...

  2. 【数据库】第二章 基础函数、聚合函数、条件查询、子查询和多表查询

    [数据库]第二章 基础函数.条件查询.聚合函数.多表查询和子查询 文章目录 [数据库]第二章 基础函数.条件查询.聚合函数.多表查询和子查询 一.基础函数 二.聚合函数 1.COUNT 2.MAX/M ...

  3. day01 与MySQL的第一次亲密接触基础查询条件查询

    <尚硅谷>MySQL系统课程一共6天,下面介绍第1天的学习内容,主要涉及MySQL的内容介绍.进阶1基础查询和进阶2条件查询.干货满满,跟着课程的进度来的,可能篇幅略长,但是看完一定会有收 ...

  4. Oracle数据库之安装教程

    一.从官网下载oracle数据库或者我的博客 官网地址:Oracle数据库下载地址 博客地址:博客下载地址 二.安装数据库 注意: 10g的数据库只能在xp操作系统中才有效. 建议安装在虚拟机上,这样 ...

  5. Oracle数据库之单行函数

    oracle安装参照: Oracle数据库之安装教程 Oracel数据库总结: Oracle数据库之基本查询 Oracle数据库之单行函数 Oracle数据库之多行函数 Oracle数据库之多表查询 ...

  6. oracle开窗函数是什么,ORACLE数据库(六)-----开窗函数

    ORACLE数据库(六)-----开窗函数 开窗函数又名分析函数.窗口函数.OLAP(数据分析)函数 聚合函数:将数据按照一定的规则分组,统一分析各组的某项情况,每个分组返回一行结果 开窗函数:将数据 ...

  7. Oracle数据库的安装和配置

    我们今天开始学习ORACLE,ORACLE来学习SQL和PL/SQL,前一个阶段我们已经学习了JAVA基础,Java基础是我们学习的第一个阶段,有了JAVA语言,JAVA应用程序,我们就可以访问WEB ...

  8. 在linux操作系统中启动oracle数据库程序,Linux系统下Oracle数据库的安装和启动关闭操作教程...

    这篇文章主要介绍了Linux系统下Oracle数据库的安装和启动关闭操作教程,并针对在sqlplus下所需执行的命令进行讲解,需要的朋友可以参考下 1.准备: df -H 查看空间剩余   一般准备最 ...

  9. oracle数据库安装提示M,Python第13课:oracle数据库的安装

    Python第13课:oracle数据库的安装 时间 2019-01-22下午4:30 主讲 罗恒丰 地点 四楼电教室 版本:11.2 大小:2.06G 安装文件在专班ftp里python安装文件的文 ...

最新文章

  1. mysql修改用户密码
  2. 无需人脸检测,实时3维人脸姿态估计img2pose 2020
  3. My MPC系列·暴风影音 V5.00 RC3
  4. c语言sizeof和strlen哪个大,C语言的sizeof和strlen区别与联系
  5. 普通html和vue单选框的样式,vue2实现自定义样式radio单选框
  6. 6.1树的定义和存储
  7. APUE 12.7 取消选项
  8. MySql中左连接查询突然变得很慢
  9. oracle中LAG()和LEAD()等分析统计函数的使用方法(统计月增长率)
  10. 【报告分享】2020年她趋势报告.pdf(附下载链接)
  11. RubyCritic:一款不错的检测代码质量工具
  12. Ubuntu通过apt-get安装OpenCV
  13. java spring初始化_Spring框架初始化解析
  14. qt的opengl开发(qopenglwidget)(初始化,画线,平移,局部缩放)2d开发
  15. cad没有命令输入框_cad2017命令输入框没了
  16. mac上好用的chm阅读器
  17. 【牛客网】马三来刷题之串的模式匹配
  18. 计算机专业考研2021,2021考研:计算机专业考研方向有哪些?
  19. 【leetcode】字符串(KMP、滑动窗口)
  20. win7如何创建宽带连接

热门文章

  1. MATLAB曲线拟合工具箱(cftool)介绍(完结)
  2. 二叉树平衡、深度、路径
  3. UVA1339 古老的密码 Ancient Cipher 题解
  4. mysql 创建表普通索引_MySQL索引篇,创建表时创建索引
  5. 在linux操作系统安装运行tomcat,修改默认端口
  6. 学网页UI设计培训后能做什么呢
  7. BeeWare开发安卓app科目三灯光模拟器
  8. layui实现上传图片鼠标悬浮展示删除及预览图标
  9. Oracle与PL/SQL是什么关系
  10. 【数据结构】时间复杂度和空间复杂度