省略了一些基础概念,直接上代码;

--1.创建表空间
create tablespace oyqj
datafile 'c:\oyqj.dbf'
size 100m
autoextend on
next 10m;
/*itcast  为表空间名称
datafile   指定表空间对应的数据文件
size   后定义的是表空间的初始大小
autoextend on   自动增长  ,当表空间存储都占满时,自动增长
next  后指定的是一次自动增长的大小。*/--2.删除表空间
drop tablespace oyqj;--3.创建用户
create user oyqj
identified by oyqj
default tablespace oyqj;
/*identified by  后边是用户的密码
default tablespace 后边是表空间名称
oracle 数据库与其它数据库产品的区别在于,表和其它的数据库对象都是存储在用户下的。
*/
--4.给用户授权
//新创建的用户没有任何权限,登陆后会提示
--oracle数据库中常用角色
connect--连接角色,基本角色
resource--开发者角色
dba--超级管理员角色
--给oyqj用户授予dba角色
grant dba to oyqj;---5.切换到oyqj用户下
//这里使用plsqlDeveloper工具,菜单栏session-> log on -> 输入用户名和密码切换即可---6.创建一个person表
/*与mysql中的创建表格式一样,不同的是oracle中的数据类型有所区别.
这里列出常用数据类型:
varchar2:表示一个字符串,和mysql一样是可变长度; Varchar也是表示字符串,两者差不多但是前者见多;
NUMBER:即可以表示整数,又可以表示小数;NUMBER(n)表示一个整数,长度是 n NUMBER(m,n):表示一个小数,总长度是 m,小数是 n,整数是 m-n
DATA:表示日期类型
CLOB:大对象,表示大文本数据类型,可存 4G
BLOB:大对象,表示二进制数据,可存 4G
*/
create table person(pid number(20),pname varchar2(10)
);---7.修改表结构
---添加一列
alter table person add (gender number(1));
---修改列类型
alter table person modify gender char(1);
---修改列名称
alter table person rename column gender to sex;
---删除一列
alter table person drop column sex;---查询表中记录
select * from person;
----添加一条记录
insert into person (pid, pname) values (1, 'modest');
commit;
--oracle中进行增删改操作需要手动提交业务;
/*因为 oracle 的事务对数据库的变更的处理,我们必须做提交事务才能让数据真正的插入到数
据库中,在同样在执行完数据库变更的操作后还可以把事务进行回滚,这样就不会插入到数据
库。如果事务提交后则不可以再回滚。 提交:commit  回滚:rollback
۶À*/
---修改一条记录
update person set pname='oyqj' where pid = 1;
commit;---删除相关操作
---删除表中全部记录
delete from person;
---删除表结构
drop table person;
truncate table person;--8.序列
/*在很多数据库中都存在一个自动增长的列,如果现在要想在 oracle  中完成自动增长的功能,
则只能依靠序列完成,所有的自动增长操作,需要用户手工完成处理*/
--语法:CREATE SEQUENCE 序列名
create sequence s_person;
/*序列创建完成之后,所有的自动增长应该由用户自己处理,所以在序列中提供了以下的两种操作:
nextval :取得序列的下一个内容
currval :取得序列的当前内容
*/
select s_person.nextval from dual;
--在插入数据时需要自增的主键中可以这样使用
insert into person (pid, pname) values (s_person.nextval, 'modest');
commit;
select * from person;---scott用户,密码tiger
/*SCOTT用户中自带四张表:EMP/dept/SALGRADE/BONUS
*/
--解锁Scott用户
alter user scott account unlock;
--解锁scott的密码(也可以用来重置)
alter user scott identified by tiger;--------切换成scott用户----------
--1.单行函数
--接收字符输入返回字符或者数值,dual 是伪表;
--dual的使用为了完成整个语句的语法结构,没有实际意义;
select upper('modest') from dual;--变大写
select lower('MODEST') from dual;--变小写--round:默认情况下 ROUND 四舍五入取整,可以自己指定保留的位数。 㲨
select round(96.27,-1) from dual;--四舍五入
select trunc(96.27,-1) from dual;--直接截取select mod(96,5) from dual;--取余--2.日期函数
/*Oracle 中提供了很多和日期相关的函数,包括日期的加减,在日期加减时有一些规律
日期  –  数字  =  日期
日期  +  数字  =  日期
日期  –  日期  =  数字
*/
----查询出emp表中所有员工入职距离现在几天。
select sysdate-e.hiredate from emp e;
----算出明天此刻
select sysdate+1 from dual;
----查询出emp表中所有员工入职距离现在几月。
select months_between(sysdate,e.hiredate) from emp e;
----查询出emp表中所有员工入职距离现在几年。
select months_between(sysdate,e.hiredate)/12 from emp e;
----查询出emp表中所有员工入职距离现在几周。
select round((sysdate-e.hiredate)/7) from emp e;--3.转换函数
---日期转字符串
select to_char(sysdate,'fm yyyy-mm-dd hh24:mi:ss') from dual;
---字符串转日期
--(这里的分钟不可以写MM,因为不区分大小写..)
--不足10前面用0代替的,可以用fm去掉前导零
--在hh后面加24,可以使时间变成24小时制
select to_date('2019-3-15 19:15:51','fm yyyy-mm-dd hh24:mi:ss') from dual;select * from emp;
--4.通用函数
-----条件表达式的通用写法,mysql和oracle通用
--空值处理 nvl
--查询所有的雇员的年薪
select ename, nvl(comm,O), sal*12+ nvl(comm,0) from emp;
--给emp表中员工起中文名
select case e.enamewhen 'SMITH' then '史密斯'when 'ALLEN' then '艾伦'when 'WARD' then '韦德'else 'unknown'end
from emp e;
---判断emp表中员工工资,如果高于3000显示高收入,如果高于1500低于3000显示中等收入,
-----其余显示低收入
select e.sal, case when e.sal>3000 then '高收入'when e.sal>1500 then '中等收入'else '低收入'end
from emp e;
----oracle中除了起别名,都用单引号。
----oracle专用条件表达式
--Decode 函数。 类似 if....else if...esle芐̓
select e.ename, decode(e.ename,'SMITH',  '史密斯','ALLEN',  '艾伦','WARD',  '韦德','无名') "中文名" --或者不用双引号, 不可以用单引号
from emp e;--5.多行函数【聚合函数】:作用于多行,返回一个值。
select count(1) from emp;---查询总数量
select sum(sal) from emp;---工资总和
select max(sal) from emp;---最高工资
select min(sal) from emp;---最低工资
select avg(sal) from emp;---平均工资--5.1分组查询
---查询出每个部门的平均工资
select e.deptno,round(avg(e.sal))
from emp e
group by e.deptno;---查询出平均工资高于2000的部门信息
select e.deptno,avg(e.sal) asal
from emp e
group by e.deptno
having avg(e.sal)>2000;---查询出每个部门工资高于800的员工的平均工资
select e.deptno, avg(e.sal) asal
from emp e
where e.sal>800
group by e.deptno
having avg(e.sal)>2000;--5.2多表查询
--笛卡尔积
select * from emp e,dept d;
---等值连接-->相当于mysql中的隐式内连接
select *
from emp e,dept d
where e.deptno = d.deptno;
---内连接
select *
from emp e inner join dept d
on e.deptno = d.deptno;
---查询出所有部门,以及部门下的员工信息。【外连接】
select *
from emp e right join dept d
on e.deptno = d.deptno;---查询所有员工信息,以及员工所属部门
select *
from emp e left join dept d
on e.deptno = d.deptno;
---oracle中专用外连接
select *
from emp e,dept d
where e.deptno(+) = d.deptno;--左表全部select * from emp e,dept dwhere e.deptno = d.deptno(+);--右表全部
select * from emp;
---查询出员工姓名,员工领导姓名
---自连接:自连接其实就是站在不同的角度把一张表看成多张表。
select e1.ename,e2.ename
from emp e1,emp e2
where e1.mgr = e2.empno;
---查询出员工姓名,员工部门名称,员工领导姓名,员工领导部门名称
select e1.ename,e2.ename,d1.dname,d2.dname
from emp e1,emp e2,dept d1,dept d2
where e1.mgr = e2.empno
and e1.deptno=d1.deptno
and e2.deptno=d2.deptno;---6.子查询
---6.1.子查询返回一个值:
---查询出工资和SCOTT一样的员工信息
select * from emp where sal in (select sal from emp where ename ='SCOTT');---6.2.子查询返回一个集合:
---查询出工资和10号部门任意员工一样的员工信息
select * from emp where sal in (select sal from emp where deptno =10);---6.3.子查询返回一张表:
---查询出每个部门最低工资,和最低工资员工姓名,和该员工所在部门名称
---1,先查询出每个部门最低工资
select deptno,min(sal) msal
from emp
group by deptno;
---2,三表联查,得到最终结果。
select t.deptno,t.msal,e.ename,d.dname
from (select deptno,min(sal) msalfrom empgroup by deptno) t,emp e,dept d
where t.deptno =e.deptno
and t.msal=e.sal
and e.deptno = d.deptno;------7.分页查询-------
--完全不同与mysql,重点;
---rownum行号:当我们做select操作的时候,每查询出一行记录,就会在该行上加上一个行号,行号从1开始,依次递增,不能跳着走。
----排序操作会影响rownum的顺序
select rownum,e.*
from emp e
order by e.sal desc
----如果涉及到排序,但是还要使用rownum的话,我们可以再次嵌套查询。
select rownum,t.*
from (select rownum,e.*from emp e order by e.sal desc) t;----emp表工资倒叙排列后,每页五条记录,查询第二页。
----rownum行号不能写上大于一个正数。
/*但是我们不能取到中间几行,因为rownum不支持大于号,只支持小于号,如果想   实现我们的
需求怎么办呢?答案是使用子查询,也正是oracle分页的做法。
*/
select * from (select rownum rn,t.*from (select * from emp order by sal desc) t where rownum<=5
) where rn>=1;

> 自己的学习笔记,上传分享和记录。菜鸟一枚,如有错误,望dalao指正!

Oracle入门学习笔记及练习相关推荐

  1. 01.Java 编程入门学习笔记20210307

    Java 编程入门学习笔记-day01 第0章:编程入门 1.计算机的概述 计算机 = 硬件 + 软件 1.1硬件:冯诺依曼体系 CPU: CPU的衡量标准:速度的计量单位是赫兹(Hz),1Hz相当于 ...

  2. dubbo入门学习笔记之入门demo(基于普通maven项目)

    注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...

  3. Crypto++入门学习笔记(DES、AES、RSA、SHA-256)

    Crypto++入门学习笔记(DES.AES.RSA.SHA-256) 背景(只是个人感想,技术上不对后面的内容构成知识性障碍,可以skip): 最近,基于某些原因和需要,笔者需要去了解一下Crypt ...

  4. oracle入门学习(3) 所用的学习环境介绍与设置

    oracle入门学习(3) 原文见我的QQ空间:http://user.qzone.qq.com/284648964?ptlang=2052 由于原文是写在我的QQ空间,文章转过来的过程中造图片丢失, ...

  5. oracle buffer block,8 Oracle深度学习笔记——BUFFER CACHE深入一

    8.Oracle深度学习笔记--BUFFER CACHE深入一 最近项目一直和ORACLE死磕,感觉总是找不到出口,只能多看书少说话了. 先记录多少是多少吧! BUFFER CACHE在ORACLE的 ...

  6. 机器学习入门学习笔记:(4.2)SVM的核函数和软间隔

    前言 之前讲了有关基本的SVM的数学模型(机器学习入门学习笔记:(4.1)SVM算法).这次主要介绍介绍svm的核函数.软间隔等概念,并进行详细的数学推导.这里仅将自己的笔记记录下来,以便以后复习查看 ...

  7. 机器学习入门学习笔记:(3.2)ID3决策树程序实现

    前言 之前的博客中介绍了决策树算法的原理并进行了数学推导(机器学习入门学习笔记:(3.1)决策树算法).决策树的原理相对简单,决策树算法有:ID3,C4.5,CART等算法.接下来将对ID3决策树算法 ...

  8. 机器学习入门学习笔记:(2.3)对数几率回归推导

    理论推导   在以前的博客(机器学习入门学习笔记:(2.1)线性回归理论推导 )中推导了单元线性回归和多元线性回归的模型.   将线性回归模型简写为:y=ωTx+by = \omega^Tx+b:   ...

  9. 机器学习入门学习笔记:(2.2)线性回归python程序实现

      上一篇博客中,推导了线性回归的公式,这次试着编程来实现它.(机器学习入门学习笔记:(2.1)线性回归理论推导 )   我们求解线性回归的思路有两个:一个是直接套用上一篇博客最后推导出来的公式:另一 ...

最新文章

  1. 两个对于Apriltag图片处理问题讨论
  2. 视图属性+对象动画组件ViewPropertyObjectAnimator
  3. 写得太好了!树莓派安装docker
  4. OCS 2007 R2将前端加入到企业版池
  5. 欧拉函数(简单介绍+例题)
  6. UDLD是一个Cisco私有的二层协议
  7. vuejs项目如何修改node_mudule为公用文件?
  8. B+树索引和哈希索引
  9. Maven 缺省内置变量
  10. 蓝桥杯 ALGO-75 算法训练 筛选号码
  11. 计算学习理论、统计学习基础理论
  12. 【一天一个C++小知识】015:c++11线程创建的三种方法
  13. 分布式机器学习平台比较
  14. 内存的物理结构和工作原理
  15. 创业过程中技术真的那么重要吗
  16. 体系结构学习7-乱序执行
  17. 逆袭-2014年中电投篮球赛札记_02【转】
  18. java-sec-code学习之path_traversal
  19. 亲测可用--word报错:子过程或函数未定义
  20. 搬运视频怎么做成原创 | 短视频批量伪原创

热门文章

  1. 基于人工鱼群算法的路径优化,鱼群算法的原理
  2. DSP和MCU的区别
  3. 01--背包问题以及构造最优解
  4. SQLite Expert 5.X 通用注册版-你的SQL好帮手
  5. 计算机和共享打印机不在一个网络打印机共享,不在同一个局域网怎么样设置打印机共享...
  6. 论文笔记 | code pretraining(代码预训练系列)
  7. Android 解决 adapter.notifyDataSetChanged() 不起作用
  8. 阿里云,华为云哪个好?
  9. 一步步教你创建自己的数字货币(代币)进行ICO
  10. 什么是Apptainer?如何在Ubuntu服务器上安装?