oracle 学习笔记2
1.oracle 中rowid和rownum的区别
oracle 数据库中,每一行都有一个唯一行的标识符,ROWID,数据库内部用来存储行的物理位置。ROWID是一个18位数字,采用base-64编码。用desc table的时候,rowid不显示,所以rowid通常称为伪列。
rownum 通常返回每一行在结果集中的行号。
2.理解空值
数据库中空值,标识该列的值是未知的。
通常用IS NULL 来检查空值,区分空值和空的字符串,通常用函数NVL().
3.SQL中的like操作符
通常要匹配字符串中10% 中的'%',则用 ESCAPE
例如: select name from promotions where name like '%\%%' ESCAPE '\';
4.BETWEEN 用来检索列值包含在指定区间内的行。包含区间的两个端点。
例如: select * from customers where customers_id between 1 and 3. (其中包含1和3.)
5.笛卡尔积
如果在多表中查询不指定表之前的连接关系,就会导致将一个表中的所有行都连接到另外一个表中的所有行上,这种情况就成为笛卡尔积。
例如:第一个表有50行数据,第一张表有100行数据,如果这两个表查询的时候,不使用关联条件,则就会查出来5000行。
6.表之间的链接条件
1)等连接 (=)
2)不等连接(<> , between,<, >, <=, >=, like , in)
3)内连接 只有当连接中的列包含满足连接条件的值时才会返回一行,如果某一行的连接条件中的一列是空值,那么这行就不会返回。
例如: select p.name,pt.name
frm products p inner join product_types pt
on p.product_type_id = pt.product_type_id;
多表的内连接:
sql/86 的查询
select c.first_name ,c.last_name,p.name as product,pt.name as type
from customers c, purchases pr ,products p ,product_types pt
where c.customer_id = pr.customer_id
and p.product_id = pr.product_id
and p.product_type_id = pt.product_type_id
order by p.name;
或者也可以sql/92这样写:
select c.first_name ,c.last_name,p.name as product,pt.name as type
from customers c inner join purchases pr
using (customer_id)
inner join products p
using (product_id )
inner join product_types pt
using (product_type_id)
order by p.name;
如果关联条件连接了2张表的多列,则可以这样处理:
select *
from table1 inner join table2
on table1.col1 = table2.col1
and table1.col2 = table2.col2;
或者:
select * from table1 inner join table2
using (col1,col2);
4)外连接
左外连接:连接符号(+) 实际上在等号的右边,表示等号左边表中有空值的列都得检索出来
(+在等号右边,表示检索表products p中product_type_id有空值的数据都检索出来。)
例如: select p.name, pt.name
from products p, product_types pt
where p.product_type_id = pt.product_type_id(+)
右外连接: 连接符号(+)在等号的左边,表示等号右边的表中有空值的数据都检索出来。
外链接的限制:
不能等号两端都使用连接符号+
例如 : select p.name, pt.name
from products p, product_types pt
where p.product_type_id(+) = pt.product_type_id(+) 错误使用
order by p.name;
不能同时使用外连接和IN 操作符
例如 : select p.name, pt.name
from products p, product_types pt
where p.product_type_id(+) in (1,2,3,4) 错误使用
不能同时使用一个外连接条件和另外一个使用OR操作符的连接条件
例如 : select p.name, pt.name
from products p, product_types pt
where p.product_type_id(+) = pt.product_type_id(+)
or p.product_type_id = 1; 错误使用
5)自连接
自连接是对同一张表的连接,要执行一个自连接,必须要使用不同的表的别名来标识在查询中对表的引用。自连接可以和外链接同时使用
例如:select w.last_name || 'work as' || nvl(m.last_name ,'the shareholders')
from employees w, employees m
where w.manager_id = m.manager_id(+)
order by w.last_name;
oracle 学习笔记2的更多相关文章
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- Oracle学习笔记——点滴汇总
Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster
- Oracle学习笔记之四sp1,Oracle 11g的常用函数
从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...
- Oracle学习笔记之四,SQL语言入门
1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...
- Oracle学习笔记—数据字典和常用命令(转载)
转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...
- oracle学习笔记(一)用户管理
--oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...
- 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子
1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...
- Oracle 学习笔记 11 -- 视图 (VIEW)
本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...
- oracle学习笔记1(环境搭建)
学习的开始先剧透一下,本人有点笨,本来想用oracle vbox,装个red hat+oracle,但是虚拟机一直报错,0x00000000内存不能written.所以便想到其他的办法,刚好接触了go ...
随机推荐
- EF 分组查询
var result = from m in userPrefers.GroupBy(t => new { t.Pet_Preferential.Merchant.MerchantId, t.P ...
- ipad2 恢复
1.用原装充电线连接电脑,并打开itunes~2.同时按住电源键和home键 10秒左右,直到白苹果画面变成黑屏3.按住home键~但要松开电源键,继续等待~直到ipad出现画面(如图) 4.这时候, ...
- tiny4412学习一:编译uboot,体验裸机
首先,我们在ubuntu建立一个自己的文件夹,我的是: /home/wang/tiny_4412下有 datasheet shc(原理图PCB文件夹) src tools src下有 codes ...
- symbol(s) not found for architecture x86_64 之 linker command failed with exit code 1 (use -v to see invocation)解决方案排查
这样的错误 ,我的解决方案是, 第一种: 查看他说在 ****.o 中,你要查看这样的关键点,然后去查看,你 项目中有没有引进这样的文件,在项目中查找,看项目中有没有,如果没有那就是没添加进来,你 ...
- idea添加内存
在idea安装目录下的以下两个文件: 添加内存:
- 写 test-case心得
最近,写ticket较多,由于每天有忙不完的工作加不完的班,心里逐渐有一个小人儿在抱怨了.此种情况下,慢慢的写case时边变得懒散,想钻空闲,于是便简简单单总结几个纲要便完事.提交test-case到 ...
- Python学习二(生成器和八皇后算法)
看书看到迭代器和生成器了,一般的使用是没什么问题的,不过很多时候并不能用的很习惯 书中例举了经典的八皇后问题,作为一个程序员怎么能够放过做题的机会呢,于是乎先自己来一遍,于是有了下面这个ugly的代码 ...
- WS+MQ+WCF+EF(Code First)
前言 有段时间没有更新博文了,一直在忙工作很少有时间静下心来继续研究点东西,说来也惭愧,归咎原因最主要的还是因为懒惰.空想也是不管用的,有时候很多想法被扼杀到了摇篮里,还没开始做就放弃了,这是多数人会 ...
- java 静态代码块 构造块 构造方法
class className{ static{ }//静态代码块 { }//构造代码块 public className(){} //构造方法 }
- 9. js实现java方法:HtmlUtils.htmlEscape()
function htmlEscape(str) { return String(str) .replace(/&/g, '&') .replace(/"/g, '" ...