Oracle学习篇章一——基础
Oracle学习一——总体基础
- 一、数据库分类
- 1.1、数据库分类
- 1.2、项目中如何合理地使用数据库,可以依据如下三个方面入手
- 1.3、不同规模类型的数据库区别
- 二、Oracle概念
- 三、Oracle的安装
- 四、Oracle数据库的体系结构
- 4.1、数据库database
- 4.2、实例
- 4.3、数据文件dbf
- 4.4、表空间
- 4.5、用户
- 4.6、SCOTT和HR用户
- 五、Oracle和MYSQL的差别
- 六、基本查询
- 6.1、SQL概念
- 6.2、SQL分类(⭐)
- 6.3、Oracle中的数据字典
- 6.4、查询语句的结构
- 6.5、伪表dual(❓)
- 6.6、别名查询(⭐)
- 6.7、去除重复数据 distinct
- 6.8、查询中四则运算
- 6.9、空值处理函数
- 1)mysql的空值处理
- 2)oracle的空值处理
- 6.10、字符串拼接
一、数据库分类
1.1、数据库分类
1、小型数据库:access、foxbase
2、中型数据库:informix、sql server、mysql
3、大型数据库:sybase、db2、oracle
1.2、项目中如何合理地使用数据库,可以依据如下三个方面入手
1、项目的规模
a、负载量有多大,即用户数有多大
b、成本
c、安全性
1.3、不同规模类型的数据库区别
小型数据库
1、负载量小,用户大概100人之内
比如:留言板、信息管理系统
2、成本在千元之内
3、对安全性要求不高
中型数据库
1、比如负载量 日访问量5000~10000
2、成本在万元内
3、比如商务网站
大型数据库
1、海量负载,可以处理海量数据(sybase<oracle<db2(海量数据处理能力))
2、安全性高,
3、相对贵
下面展示一些 内联代码片
。
提示(2021.07.07):这里数据库分类到时候可以分出来做个详细的文章
二、Oracle概念
oracle数据可系统是美国oracle(甲骨文)公司提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器或B/S体系结构的数据库之一,oracle数据库时目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完善的数据库管理功能,是关系型数据库,比mysql更为庞大,在现行的关系型数据库中排名第一(oracle、mysql、SqlServer),时间是最为精确的。
三、Oracle的安装
提示(2021.07.08):到时候再出一个俩个客户端和服务端Oracle安装
四、Oracle数据库的体系结构
4.1、数据库database
Oracle数据库是数据的物理储存,这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。其实Oracle数据库的概念和其他数据库不一样,这里的数据库时一个操作系统只有一个库,可以看做Oracle就只有一个大数据库。
4.2、实例
一个数据库可以有n个实例,有一系列的后台进程和内存结构组成。
4.3、数据文件dbf
数据文件dbf是数据库的物理储存单位,数据库的数据是储存在表空间中的,真正是在某一个或者多个数据文件中,而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间,一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
4.4、表空间
表空间是Oracle对物理数据库上相关数据文件的逻辑映射,一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构,每个数据库至少有一个表空间(称之为system表空间)
每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件,一个数据文件只能属于一个表空间。
4.5、用户
用户是在实例下建立的,不同实例中可以建相同名字的用户,表的数据是由用户放入某一个表空间的,而这个表龙剑会随机把这些表数据进行管理和存放的,但是表不是由表空间去查询的,而是由用户去查询。
4.6、SCOTT和HR用户
是Oracle帮我们建好的测试账户,Scott账户常用,里面有emp、dept表等。
五、Oracle和MYSQL的差别
1、新建项目的方式
MYSQL : 创建一个数据库,创建相应的表
2、Oracle是多用户的, MYSQL是多数据库的
3、Oracle安全级别要高,MYSQL开源免费
六、基本查询
6.1、SQL概念
结构化查询语言
6.2、SQL分类(⭐)
1、DDL : 数据定义语言 create alter drop truncate
2、DML : 数据操纵语言 insert update delete
3、DCL : 数据控制语言 安全 授权 grant revoke
4、DQL : 数据查询语言 select from子句 where子句
在oracle中将DQL放入DML中,多了TCL:事务控制语言 commit、rollback
6.3、Oracle中的数据字典
所谓数据字典就是编写sql语句,全选可以一次性执行不报错
-- 1.删除数据对象
-- 删除数据表
drop table t_reply;
drop table t_user;
-- 删除序列
drop sequence sq_user;
drop sequence sq_reply;-- 2.创建数据对象 -- 创建数据表
create table t_user(u_id number(4) primary key,u_userName varchar2(40) unique not null,u_password varchar2(50) not null,u_gender number(1) check(u_gender in (0,1,2)),u_age number(3) check(u_age between 12 and 120),u_registeTime date not null
);
create table t_reply(r_id number(10) primary key,r_content varchar2(500) not null,r_userId number(4) not null,foreign key(r_userId) references t_user(u_id)
);
-- 创建序列
create sequence sq_user start with 1001;
create sequence sq_reply start with 10000001;/* 3.添加测试数据 */
-- 处理全新的数据表和全新的序列在使用时取不到初始值的问题
insert into t_user values(1, '1', '1', 1, 25, sysdate);
insert into t_reply values(1, '1', 1);
delete from t_reply;
delete from t_user;
commit;
/*insert into t_user values(1000, 'owner', '9999', 1, 25, sysdate);
insert into t_reply values(10000000, '人员召集...', 1000);*/-- 添加数据
insert into t_user values(sq_user.nextval, 'admin', '9999', 1, 25, sysdate);
insert into t_reply values(sq_reply.nextval, '系统1.0上线...', sq_user.currval);/* 4.提交 */
commit;/* 5.查询语句 */
/*select * from t_user;select * from t_reply;
*/
6.4、查询语句的结构
select [列名] [*] from 表名 [where 条件] [group by 分组条件] [having 过滤] [order by 排序]
6.5、伪表dual(❓)
dual : oracle中的虚表 ,伪表, 主要是用来补齐语法结构
比如:select 1+1 from dual;
注意:直接写一个常量比写 * 要高效
select count(1) from emp;
select count(*) from emp;
6.6、别名查询(⭐)
使用as 关键字, 可以省略,别名中不能有特殊字符或者关键字, 如果有就加双引号(比如空格)
elect ename 姓名, sal 工资 from emp;
select ename "姓 名", sal 工资 from emp;
6.7、去除重复数据 distinct
加在select和列名后面,多列去除重复: 每一列都一样才能够算作是重复
--单列去除重复
select distinct job from emp;--多列去除重复的
select distinct job,deptno from emp;
6.8、查询中四则运算
--需要用到伪表dual
select 1+1 from dual;
--查询员工年薪 = 月薪* 12
select sal*12 from emp;
提示(2021.07.08)
在Oracle 中 ,双引号主要是别名的时候使用, 单引号是使用的值, 是字符
6.9、空值处理函数
注意: null值 , 代表不确定的 不可预知的内容 , 不可以做四则运算
1)mysql的空值处理
ifnull(参数1, 参数2):
判断参数1是否为null,
不为null, 则函数的结果取参数1的值
为null, 则取参数2的值
if(参数1, 参数2, 参数3)
判断参数1是否为null,
为null, 则取参数3的值
不为null, 则取参数2的值
注意if函数只能处理数值字段的空值
SELECT e.`ename` 姓名,e.`sal` 底薪,e.`comm` 奖金,(e.`sal`+e.`comm`) 实发,IFNULL(e.`sal`+e.`comm`, e.`sal`) 实发1,IF(e.`comm`, e.`sal`+e.`comm`, e.`sal`) 实发2
FROM emp e;
2)oracle的空值处理
nvl(参数1,参数2):如果1为null,则返回2,不为null就为1
nvl2(参数1, 参数2, 参数3)1为null,则返回,3,不为null,则返回2
decode(需要判断的字段,
常量值1, 结果值1,
常量值2, 结果值2,
…
常量值n, 结果值n,
默认结果值
)
select e.ename 姓名,e.sal 底薪,e.comm 奖金,nvl(e.sal+e.comm, e.sal) 实发1,nvl2(e.comm, e.sal+e.comm, e.sal) 实发2,decode(e.comm, null, e.sal, e.sal+e.comm) 实发3
from emp e;
6.10、字符串拼接
- Oracle 特有的连接符: || 拼接
- concat(str1,str2) 函数, 在mysql和Oracle中都有
--查询员工姓名 : 姓名:SCOTT
select ename from emp;
--使用拼接符
select '姓名:' || ename from emp;--使用函数拼接
select concat('姓名:',ename) from emp;
Oracle学习篇章一——基础相关推荐
- oracle右对齐,Oracle 学习笔记(基础)
1.基本查询 特殊运算符 运 算 功 能 实 例 [NOT] BETWEEN-AND- 用于测试是否在范围内 Select * from emp Where sal between 1000 and ...
- oracle自学入门教程,Oracle学习快速入门基础教程
修改密码方法:1.SQL>: grant connect to USRNAME identified by USRPWD :2.SQL>: alter user USRNAME ident ...
- 3. oracle学习入门系列之三Unix、Linux历史及基础
oracle学习入门系列之三Unix.Linux历史及基础 终于翻过了前面两篇,喝杯咖啡提下神,咱们继续前行.这次我们要进行操作系统方面知识了,考虑到当前时间上操作系统的多样性.变化性等,蛤蟆斟酌再三 ...
- JNI学习开始篇 基础知识 数据映射及学习资料收集
JNI学习开始篇 基础知识 数据映射及学习资料收集 JNI介绍 JNI(Java Native Interface) ,Java本地接口. 用Java去调用其他语言编写的程序,比如C或C++. JNI ...
- 分享丨10年DBA老司机整理的Oracle学习路线图
微思10年资深DBA吴老师呕心沥血的分享总结-Oracle学习路线图,看完没收获你打我. 学习Oracle的前提是:熟悉Linux操作系统.Unix操作系统. 学习方法 1.sql.pl/sql 作为 ...
- mysql 删除时间一个星期_15天快速学习 数据库Mysql 基础操作命令(第一章)
简言 你还在为不了解不会操作MySQL数据库而苦恼吗? 还为面对冗繁的数据不知怎么提取而愤懑吗? 分享快速学习MySQL及基础操作命令 那就利用闲暇时间和我一起掌握一门MySQL数据库语言操作吧! 入 ...
- Oracle学习计划
这两天,在网上参考了大量的文档,制定了Oracle学习的读书计划,共分三个阶段: 第一阶段: 目标: 系统学习.巩固基础. 书籍: (1)Oracle Concept, Oracle Performa ...
- oracle:oracle学习笔记(四)循环、光标、异常、瀑布模型
oracle学习笔记:循环.光标.异常 文章目录 打印Hello World 定义基本变量 引用型变量(单行)` my_name emp.ename%type ` 记录型变量(多行) `emp_rec ...
- Oracle学习系列1-7
Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...
最新文章
- 如何实现 asp.net core 安全优雅退出 ?
- 【算法系列之十四】最大子序和
- 解决Springboot get请求是参数过长的情况
- IOS上复制粘贴号码到input有空格及input位数限制问题详解
- 蓝桥杯 PREV-27 历届试题 蚂蚁感冒
- Vue系列:通过vue-router如何传递参数
- 计算广告(computational advertising)
- Windows Server 2016 安装OpenSSH Server,并设置密钥
- Apache ProxyPass出现503 Service Temporarily Unavailable 的解决
- MySQL之字符串拼接
- 利用ArcGIS做土地利用转移矩阵
- 计算机注销操作,电脑注销快捷键
- OpenStack必备基础知识
- 学临床专业和计算机哪个好,大学里“炙手可热”的专业,未来10年也不会被淘汰,发展前景更好...
- 【云图】如何制作东莞酒店地图?
- 致得E6协同文档管理软件 推出4.0免费版
- lisp中getword输入默认_autolisp getfiled
- 从写下第1行代码到拿下谷歌百万年薪 ,我是如何在8个月内做到的?
- 单片机学习记录一:c8t6原理图
- 百度细雨算法,旨在提升用户浏览B2B信息体验