回顾

多表关联查询的方式

内连接

根据AB表关联的条件进行过滤查询,只保留满足条件数据

Select * from a,b where a.xxx=b.xxx;Select * from a inner join b on a.xxx=b.xxxxinner join c on a.xxxx=c.xxxx

外连接

左外连接

以左表为驱动表,根据AB表关联的条件进行过滤查询,保留满足条件的数据,以及左边表的所有记录显示

Select * from a left join b on a.xxx=b.xxxxInner join c on b.xxxx=c.xxxxSelect * from a, b(+);

右外连接

和左外连接正好相反

Select * from a right join b on a.xxxx=b.xxxx

等同于: select * from b left join a on a.xxxx=b.xxxx

特殊关联查询

全外连接

左外连接结果+右外连接结果-重复的数据

Select * from a full join b on a.xxxx=b.xxxx

笛卡尔集

两张表或多张表的乘积

Select * froma,bSelect * from a inner join b on 1=1

自连接(A表连接A表进行查询)

Select * froma,aSelect * from a t1 inner join a t2 on t1.xxxx=t2.xxxx

合并查询(union union all)

可以把不同表的结果集合并成一个结果集

(两张表选择列的数量和类型必须保持一致)

SQL1Union [all]SQL2

通过union实现全外连接

Select * from a left join b on a.xxxx=b.xxxxUnion

Select * from a right join b on a.xxxx=b.xxxx

索引

对数据库中表的一列或多列进行排序的一种结构,

使用索引可以快速访问数据库中的特定信息

(空间换时间)

语法

Create [unique] index 索引名 on 表名 (字段1,[字段2])

例如: create index idx_student_name on t_student (student_name);

索引也是一种约束

优势

确保每一行数据的唯一性

加快检索速度

加快多表关联查询的速度

加快分组和排序的查询速度

劣势

创建和维护索引要耗用时间

索引占用数据以外的物理空间,随数量量的增加而增加

当对表中的数据进行增删改,索引也需要更新

视图

视图是从一个或几个基本表中导出的虚拟表。

视图可以把多表关联查询的结果作为一张虚拟表来查询。

可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。

对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。

语法

Create view 视图名称 as 关联查询的SQL语句

优势

简化SQL语句

提高重要数据的安全性

逻辑数据独立性

劣势

增加维护成本

一般运用到的

不希望访问者获取整个表的信息,只暴露部分字段给访问者。

查询的数据来源于不同的表,而查询者希望以统一的方式查询。

内置函数

行转列

列转行

需求

1. 通过decode()函数实现

实现类似if else的功能

思路:分组利用聚合函数扩展字段

语法: decode(字段,条件的值, 当条件成立返回的值,当条件不成立返回的值)

2.Case when语法

列转行

思路:使用union扩展记录数

自定义函数

什么是数据库函数

封装了完成某些特定功能的SQL语句,经过编译后保存在数据库中的一个特殊对象

语法:

create [or replace] function 函数名称(参数1,参数2)

存储过程

类似函数,封装了某些特定功能的SQL语句集,经过编译保存在数据库中的一个特殊对象,存储过程不能出现在SQL中。

存储过程的创建

Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。

1)无参存储过程语法

create orreplaceprocedureNoParProas //声明

;begin //执行

;

exception//存储过程异常

;end;

2)带参存储过程实例

create or replaceprocedure queryempname(sfindno emp.empno%type)assName emp.ename%type;

sjobemp.job%type;begin....

exception

....end;

3)带参数存储过程含赋值方式

应用场景:

统计每月的考勤数据

游标

就在pl中的一个特殊对象,在存储过程中遍历SQL结果集时,可以通过游标来指向结果集每一条记录。

游标的使用可以让用户想操作数组一样操作查询出来的数据集,实际上,它提供了一种从集合性质的结果中提取单挑记录的手段。

游标的种类:

显示游标

隐式游标

触发器

应用场景:主键自增

触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行。

触发器是数据库中的一个特殊的存储过程,由事件触发,当用户对数据进行增删改操作的时候,可以触发该存储过程的执行。

触发器可以分为语句级触发器和行级触发器。

触发器的语法:

create [or replace]tigger 触发器名 触发时间 触发事件on表名[for each row]

beginpl/sql语句end

oracle M4,oracle高级部分 - osc_9gm4ypss的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. npoco oracle,NPOCO总结 - 木筏笔歆的个人空间 - OSCHINA - 中文开源技术交流社区

    1.分页 法1: if (model.PageIndex > 0 && model.PageSize > 0) { query = query.Limit(model.Pa ...

  2. c语言分号的转义字符,C语言中的转义字符 - osc_9gm4ypss的个人空间 - OSCHINA - 中文开源技术交流社区...

    C语言中的转义字符 在字符集中,有一类字符具有这样的特性:当从键盘上输入这个字符时,显示器上就可以显示这个字符,即输入什么就显示什么.这类字符称为可显示字符,如a.b.c.$.+和空格符等都是可显示字 ...

  3. grandle oracle 驱动,oracle权限 - 千言sully的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.用户与模式 用户:对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作 SYS用户,缺省始终创建,且未被锁定,拥有数据字典及其关联的所有对象 SYSTEM用户,缺省始终创建, ...

  4. oracle rman异地备份,Rman 异地备份 - markGao的个人空间 - OSCHINA - 中文开源技术交流社区...

    因为我们数据库服务器的空间有限,同时也考虑到异地备份的好处,虽说异地备份操作比同机备份繁琐,但是我们还是推荐使用Rman 的异地备份. 1.在备份以前请确认数据库的归档方式 RMAN CMD C:\D ...

  5. WSL安装Oracle,WSL安装JDK8 - terwergreen的个人空间 - OSCHINA - 中文开源技术交流社区...

    下载地址 JDK_URL https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html UN ...

  6. oracle查询第二个字为a,Oracle多表查询 - osc_yqnlq679的个人空间 - OSCHINA - 中文开源技术交流社区...

    本节剖析Oracle多表查询中的相关内容. 本文所用到的表为oracle中scott用户下的emp表,dept表,数据如下: 一.笛卡尔集: 概念:假设A,B是2个集合,A X B所形成的集合叫笛卡尔 ...

  7. oracle添加伪列,Oracle伪列 - jifengtang的个人空间 - OSCHINA - 中文开源技术交流社区...

    在oracle10g和下,伪列包括如下内容: lHierarchical Query Pseudocolumns 分级查询是oracle提供的递归查询语法,在这里不做展开.只有在分级查询下,才可以使用 ...

  8. oracle ko16mswin949,mysql字符集 - osc_wq7ij8li的个人空间 - OSCHINA - 中文开源技术交流社区...

    恰当的字符集,畅快的体验! 00.Oracle字符集 Subsets and Supersets   #子集与超集 Table A-11 Subset-Superset Pairs Subset(子集 ...

  9. oracle安装检测空间china,oracle安装 - Ginn的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.oracle服务器安装(安装到虚拟机的win2003中) 1.windows 2003已经在虚拟机部署好 2.将10201_database_win32.zip 从xp本机拖拽拷贝到win2003 ...

最新文章

  1. 【连载】优秀程序员的45个习惯之37——提供有用的错误信息
  2. 那些年借“云”出海的日子
  3. Sratch-gui 中文文档
  4. 带你学python基础:条件控制if与循环语句while、for 以及range函数
  5. 【转帖】.Net中C#的DllImport的用法
  6. Eclipse——通过Eclipse Marketplace安装SVN插件subclipse以及简单使用
  7. jMeter Transaction Controller 学习笔记
  8. 2021牛客暑期多校训练营8 F-Robots(bitset优化dp)
  9. java8 默认方法_Java 8的默认方法:可以做什么和不能做什么?
  10. 使用for语句打印图形
  11. c语言注释换颜色,C语言实现注释转换
  12. 提高GAN训练稳定性的9大tricks
  13. ostringstream 的清空数据方法
  14. bzoj1577 [Usaco2009 Feb]庙会捷运Fair Shuttle
  15. 基于Spring的包含特定注解bean的package扫描工具
  16. matlab zxing ean13,【zxing】Ean13 Contents do not pass checksum
  17. IIS配置文件上传大小限制
  18. 阿里双十一技术揭秘——双十一 手淘技术用了这几招
  19. iOS开发基础-Plist实现嵌套模型
  20. faster RCNN

热门文章

  1. mysql数据冗余_MySQL冗余数据的三种方案
  2. SQL中left join、right join、inner join的区别
  3. HTTPS 工作原理和 TCP 握手机制
  4. 浅谈php7 引入的“??“和 “?:“的区别
  5. 法国spin高等计算机学校,法国顶尖“大矿”,一起去矿校挖矿吧!
  6. linux的as编译文件,Ubuntu Linux14 64位下在Android studio下用gradle编译Andrid项
  7. python mac 安装pillow,关于python:安装了Pillow,但仍然得到“ImportError:没有名为PIL的模块”...
  8. js判断wifi_使用JS在浏览器中判断当前网络连接状态的几种方法
  9. python脚本变成exe_Python脚本转exe文件
  10. python文件式_python中文件操作的六种模式及对文件某一行进行修改的方法