
Oracle
文章平均质量分 64
主要是一些关于Oracle的知识(DML、DDL、表设计、用户与角色、索引、视图、函数、触发器、储存过程、游标等)
JAVA开发区
热爱编程的一枚小青年
展开
-
Oracle21c下载与安装教程
Oracle数据库21c版本的安装教程原创 2023-05-11 10:31:41 · 7868 阅读 · 3 评论 -
Oracle笔记之DML
DML(数据操作语言)1. 序列1.1. 创建1.2. 使用1.3. 删除2. insert2.1. 添加记录时需要满足一下条件2.2. 添加数据2.3. 操作实例2.4. 查看数据3. update3.1. 更改数据3.2. 操作实例4. delete5. 截断数据DML(Data Manipulation Language 数据操控语言)用于操作数据库对象中包含的数据,也就是说操作的单位是记录。DML 的主要语句(操作)语句作用Insert向数据表张插入一条记录De原创 2021-12-04 16:19:20 · 961 阅读 · 3 评论 -
Oracle笔记之DDL
DDL(数据定义语言)1. 创建表2. 删除表3. 修改表结构SQL语言结构:DDL(Data Definition Language 数据定义语言)用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,像:表、视图等等,DDL 对这些对象和属性的管理和定义具体表现在create、drop 和 alter 上。特别注意:DDL 操作的“对象”的概念,”对象“包括对象及对象的属性,而且对象最小也比记录大个层次。以表举例:create 创建数据表,alter 可以更改该表的字段,drop 可以原创 2021-12-03 22:02:51 · 846 阅读 · 1 评论 -
Oracle笔记之表设计
表设计一、设计表1.1. 确定表名1.2. 确定字段名 类型 +约束(主键 外键 非空 默 检查认 唯二、 创建表2.1. 创建表(不加约束)2.2. 创建表(同时创建约束+默认名称)2.3. 创建表(同时创建约束+指定名称)2.4. 创建表(追加创建约束+指定名称)2.5. 已有表中拷贝结构三、约束(了解)3.1. 查看某个用户的约束3.2. 查看表的约束3.3. 查看 字段名+约束3.4. 约束的禁用与启用3.5. 删除约束3.6. 修改约束一、设计表前提: 设计表首先应该按需遵循三范式复习一下3原创 2021-12-02 20:18:14 · 1884 阅读 · 0 评论 -
Oracle笔记之设计表遵循三范式
Oracle设计表设计表遵循三范式简述一下就是1NF–>列不可再分最小原子 (避免重复);2NF–>主键依赖 (确定唯一);3NF–>消除传递依赖 (建立主外键关联 拆分表);具体就是1NF:是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一原创 2021-11-18 21:56:54 · 314 阅读 · 0 评论 -
Oracle笔记之select查询
Oracle笔记之select查询概述本篇博文中主要探讨以下内容:查询列(字段)1.1. 部分列1.2. 所有列1.3. 去除重复1.4. 别名1.5. 字符串1.6. 伪列1.7. 虚表1.8. null查询行(记录)2.1. 比较条件2.2. 且 或 非2.3. null2.4. 集合操作2.5. like :模糊查询2.6. in 与 exists2.7. 获取所有行的记录2.8. 排序SELECT [DISTINCT] {*,column ali原创 2021-11-18 22:49:26 · 1132 阅读 · 4 评论 -
Oracle笔记之用户与角色
Oracle笔记之用户与角色(一)授权对象权限(二)授予系统权限(三)查看用户拥有的系统权限(四)回收系统权限(五)查看对象权限(六)回收对象权限(七)查询一个用户开放哪些权限给别的用户(八)同义词(九)角色(十)查询角色的系统权限和对象权限(十一)删除角色(十二)从角色删除权限(十三)关于审计–创建一个用户create user user_test identified by 123;grant connect,resource to user_test;conn user_test/123;原创 2021-11-21 17:21:15 · 876 阅读 · 1 评论 -
Oracle笔记之表连接
概述本篇博文中主要探讨以下内容:表连接(92、99)笛卡尔积等值连接自连接、内连接、外连接、全连接Oracle表连接1. 表连接(92)1.1. 笛卡尔积1.2. 等值连接1.3. 非等值连接1.4. 自连接1.5. 外连接1.6. 内连接2. 表连接(99)2.1. 交叉连接2.2. 自然连接2.3. using 连接2.4. on 连接2.5. 外连接2.6. 全连接当我们获取的数据不是来自于同一张表而是来自于多张表时就需要使用到表连接1. 表连接(92)select * fro原创 2021-12-01 16:25:05 · 270 阅读 · 1 评论 -
Oracle笔记之索引
Oracle索引索引的语法索引的**优点和缺点**1. 示例2. 不同的选择率(基数)会影响索引的使用3. 使用绑定变量会使用语句会使用软解析成为可能,但是有可能影响正确使用执行计划4. 查询索引的信息5. 基于函数的索引6. 索引的重建(比删除后再建立高效)7. 更改索引的名称索引的语法CREATE UNIUQE | BITMAP INDEX <schema>.<index_name> ON <schema>.<table_name>原创 2021-11-25 18:16:32 · 573 阅读 · 1 评论 -
Oracle笔记之视图
Oracle视图视图1.普通视图(无法实现数据持久化)2. 物化视图(可以实现数据持久化)视图视图:建立在表|结果集|视图上的虚拟表,有以下作用简化:select 查询语句重用:封装select语句 命名隐藏:内部细节区分:相同数据不同查询不是所有的用户都有创建视图的权限前提: create view -->组 connect resource dba授权: -->sqlplus /nologa)、sys登录 conn sys/123456@orcl as sysdba原创 2021-11-25 18:56:19 · 293 阅读 · 1 评论 -
Oracle笔记之函数
概述本篇博文中主要探讨以下内容:Oracle中的单行函数和多行函数重点:to_char和to_dateOracle函数1. 单行函数1.1. 日期函数1.1.1. 当前时间1.1.2. 修改日期(天数加+减-)1.1.3. 修改月份1.1.4. 月份之差1.1.5. 最后一天1.1.6. 下一个星期的时间1.2. 转换函数(重点)1.3. 查询82的员工信息1.4. 其他函数 (保证类型兼容)1.5. 分析函数 (了解)2. 多行|聚合|组函数2.1. count: 求和2.2. max min原创 2021-11-24 20:43:04 · 425 阅读 · 0 评论 -
Oracle笔记之rowid 与 rownum
rowid与rownum1. rowid2. rownumROWID 是 ORACLE 中的一个重要的概念。用于定位数据 库中一条记录的一个相对唯一地址值。通常情况下,该值在该行数据插入到数据库表时即被确定且唯一。 ROWID 它是一个伪列,它并不实际存在于表中。它是 ORACLE在读取表中数据行时,根据每一行数据的物理 地址信息编码而成的一个伪列。所以根据一行数据的 ROWID能找到一行数据的物理地址信息。从而快速地定 位到数据行。数据库的大多数操作都是通过ROWID 来完 成的,而且使用ROWID来原创 2021-11-30 15:19:13 · 585 阅读 · 0 评论 -
Oracle笔记之Oracle触发器
Oracle触发器概述本篇博文中主要探讨以下内容:为什么要使用触发器?DML触发器(insert、update、delete等操作之前或者之后触发的事件)系统事件触发器(系统事件和用户事件)替代触发器(instead of)设置触发器的开关(开启和禁用)一个典型的问题 ,在Oracle中怎样实现自增字段?Oracle中可没有AUTO_INCREMENT关键字,只有MySQL中才有AUTO_INCREMENT,那么在Oracle中怎么实现id字段自增呢?这就要用到我们提到的触发器了原创 2021-11-18 21:44:30 · 1112 阅读 · 6 评论 -
Oracle笔记之存储过程和函数
概述本篇博文中主要探讨以下内容:存储过程和存储函数1. 匿名块2. 命名块(存储过程)3. 存储函数Oracle中的存储过程和存储函数1.PL/Sql块2. 过程(procedure)2.1过程一(无参存储过程)2.过程二(有参存储过程)3.过程三(有参存储过程,且返回多个值)4.调用方法5.在存储过程中实现判断语句、多分支语句6.通过id 取工资(存储过程实例)7.删除存储过程3.存储函数4.存储过程和存储函数的区别:1.PL/Sql块--在用到dbms_output.put_line()原创 2021-11-27 18:06:58 · 2063 阅读 · 0 评论 -
Oracle笔记之存储过程经典案例
--记录变量declare type emp_record_type is record(v_name emp.ename%type,v_sal emp.sal%type); emp_record emp_record_type;begin select ename ,sal into emp_record from emp where empno=&no; dbms_output.put_line('name: ' || emp_rec原创 2021-11-28 19:30:19 · 407 阅读 · 0 评论 -
Oracle笔记之游标
游标cursor一、游标的概念二、游标的属性三、使用 fetch bulk collect into 批量提取数据四、通过游标修改数据一、游标的概念游标是一种访问机制,它允许用户访问单独的数据行(对数据逐行进行操作),而非对整个结果行集进行操作.简而言之:游标就是位于内存中的数据集,加快对数据的操作使用游标的步骤:创建游标打开游标存取游标关闭游标--创建表SQL> create table stu(id number(5),name varchar(10));SQL&g原创 2021-11-28 21:04:27 · 286 阅读 · 0 评论 -
Oracle笔记之异常
异常处理(一)处理系统异常情况(二)处理非预定义异常(有代码,但没有标识)(三)自定义异常(预定义异常和非预定义异常都与oracle有关,并且发生错误时隐含的触发,而自定义则与oracle没有关系,它必须要显式的触发)异常:提高程序的健壮性DECLARE BEGIN --触发异常EXCEPTION --处理异常END;如果不处理异常,会将异常传递到应用环境create or replace procedure get_name as v_name emp.ena原创 2021-11-29 19:34:33 · 244 阅读 · 0 评论 -
Oracle练习题(一)
Oracle练习题(一)说明:以下查询以scott模式下emp表和dept表为操作对象(1) 查询20号部门的所有员工信息select * from emp where deptno = 20;(2) 查询所有职业为CLERK的员工号、员工姓名和部门号select empno,ename,deptno from emp where job = ‘CLERK’;(3) 查询资金高于工资的员工信息select * from emp where nvl(comm,0)>sal;(原创 2021-12-26 14:29:40 · 1152 阅读 · 0 评论 -
Oracle练习题(二)
Oracle练习题(二)说明:以下查询以scott模式下emp表和dept表为操作对象(1) 以首字母大写的方式显示所有员工的姓名select initcap(ename) from emp;(2) 将员工的职位用小写显示select lower(job) from emp;(3) 将员工的名字分别用大写和小写显示select upper(ename),lower(ename) from emp;(4) 将员工名字,首字母小写,其他字母大写的方式显示sele原创 2021-12-26 14:28:35 · 2994 阅读 · 0 评论 -
Oracle练习题(三)
Oracle练习题(三)说明:以下查询以scott模式下emp表和dept表为操作对象(1) 查询一个月前入职的员工select * from emp where months_between(sysdate,hiredate) > 1;(2) 显示在一个月为30天的情况所有员工的日薪,忽略余数select ename,trunc(sal/30) “日薪” from emp;(3) 显示员工在此公司工作了几个月(要求结果是整数)select round(month原创 2021-12-25 15:17:44 · 1498 阅读 · 0 评论 -
Oracle练习题(四)
Oracle练习题(四)(1) 查询至少有一个员工的部门信息select d.* from dept d,(select count(*) c,deptno from emp group by deptno ) e where d.deptno = e.deptno and c>=1;或者select * from dept where dept.deptno in(select emp.deptno from emp group by deptno having count(1) &原创 2021-12-24 16:44:09 · 830 阅读 · 0 评论 -
Oracle练习题(五)
Oracle练习题(五)(1) 查询平均工资低于2000的部门及其员工信息select * from emp where deptno in (select deptno from emp group by deptno having avg(sal)<2000);(2) 查询每个部门中的员工数量、平均工资和平均工作年限select deptno,count(*),avg(sal),trunc(avg(months_between(sysdate,hir原创 2021-12-21 22:11:46 · 1444 阅读 · 0 评论 -
Oracle练习题(六)
Oracle练习题(六)(1) 通过create table emp_bak as select * from emp 语句创建表 emp_bakcreate table emp_bak as select * from emp;(2) 在emp_bak 表中插入一条记录insert into emp_bak values(1234,‘zhangsan’,‘clerk’,‘7902’,sysdate,2500,100,30);(3) 删除原创 2021-12-20 21:36:06 · 662 阅读 · 0 评论 -
Oracle练习题(七)
Oracle练习题(七)(1) 创建表student(sno,sname,sage,ssex,address) 其中sno为主键,并使用序列自动生成sno。create table student(sno number(10),sname varchar2(10) not null ,sage number(3) not null,ssex varchar2(3) not null,address varchar2(20) not null,constraint pk_sno primary原创 2021-12-20 21:33:22 · 1170 阅读 · 0 评论 -
Oracle练习题(八)
Oracle练习题(八)(1) 创建新用户 TEST 密码为123456,默认表空间为USERScreate user TEST identified by 123456 default tablespace users;(2) 让TEST用户连接数据库服务器grant connect to TEST;conn TEST/123456;(3) 让TEST用户可以建表conn sys/123456 as sysdba;grant create table to TEST;(4) 授予T原创 2021-12-13 21:43:46 · 840 阅读 · 0 评论 -
Oracle练习题(九)
Oracle练习题(九)(1) 创建一个存储过程,以员工号为参数,输出该员工的工资--创建存储过程create or replace procedure print_sal(n number) as val_sal emp.sal%type;begin select emp.sal into val_sal from emp where empno = n; dbms_output.put_line(n||'号员工的工资为:'||val_sal);end;--执行原创 2021-12-12 12:53:52 · 3885 阅读 · 0 评论 -
Oracle笔记之期末总复习
Oracle期末总复习第一章 truncate table 与 delete 区别(一)关于truncate table 与 delete 区别第二章 表连接(一)多个表的连接(二)外连接(三)SQL/923.1 inner join3.2 left outer join3.3 right outer join3.4 full outer join第三章 函数(一) replace()(二) trim()(三) round()(四) trunc()(五) mod()(六) months_between()(原创 2021-12-06 17:44:30 · 775 阅读 · 0 评论