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的更多相关文章

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. oracle学习笔记第一天

    oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字   1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...

  3. Oracle学习笔记——点滴汇总

    Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster

  4. Oracle学习笔记之四sp1,Oracle 11g的常用函数

    从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i)    分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...

  5. Oracle学习笔记之四,SQL语言入门

    1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...

  6. Oracle学习笔记—数据字典和常用命令(转载)

    转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...

  7. oracle学习笔记(一)用户管理

    --oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...

  8. 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子

    1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...

  9. Oracle 学习笔记 11 -- 视图 (VIEW)

    本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...

  10. oracle学习笔记1(环境搭建)

    学习的开始先剧透一下,本人有点笨,本来想用oracle vbox,装个red hat+oracle,但是虚拟机一直报错,0x00000000内存不能written.所以便想到其他的办法,刚好接触了go ...

随机推荐

  1. EASYUI 表单(FORM)用法

    提交表单 $('#addform').form('submit', { url: '/Admin/AdminUser/AddAdminUser', onSubmit: function () { re ...

  2. 25+ Useful Selenium Web driver Code Snippets For GUI Testing Automation

    本文总结了使用Selenium Web driver 做页面自动化测试的一些 tips, tricks, snippets. 1. Chrome Driver 如何安装 extensions 两种方式 ...

  3. [DFNews] Fire-Eye与Fox IT联合推出Cryptolocker解锁网站

    Cryptolocker是臭名昭著的勒索程序,使用AES加密后密钥回传,用户除了缴纳赎金之外基本无法解密数据. 近日,知名安全公司Fire-Eye与Fox IT联合推出了针对该勒索程序的解锁网站 ht ...

  4. javascript实现原生ajax的方法

    <script> var xmlHttp; function createxmlHttpRequest() { if (window.ActiveXObject) { xmlHttp = ...

  5. NSRunLoop详解

    1.NSRunLoop是IOS消息机制的处理模式 NSRunLoop的主要作用:控制NSRunLoop里面线程的执行和休眠,在有事情做的时候使当前NSRunLoop控制的线程工作,没有事情做让当前NS ...

  6. Bootstrap框架(基础篇)之列表,表格,表单

    继续上篇的基础部分延伸,主要说一下列表,表格,表单相关Bootstrap框架变化以及基础知识. 1.列表篇 除了HTML提供的三种基本列表样式: 无序列表 <ul> <li>… ...

  7. linux中的进程和线程

    应用程序:可以被操作系统执行的一组指令和参数的集合,是静态的,并存储在磁盘空间中: 进程:在操作系统中在运行程序后,处于运行状态的程序,是应用程序的一个执行过程,同时也是操作系统分配内存,cpu等系统 ...

  8. 2016年Java服务器端开发面试总结

    因为一些个人原因,陆陆续续参加了一些校招补招.社招的笔试和面试(BAT),也包括一些国外公司(Spotify, Google, Ericsson),最后有幸被网易收入麾下,拿到了S.下面罗列一些我复习 ...

  9. idea 小技巧

    idea tomcat.debug显示如下 2.项目中java文件导入一个包下的多个文件时,idea默认超过3个时会用*代替.如果不想这样,操作如下 3.java类实现Serializable,自动生 ...

  10. java 使用递归获取指定文件路径目录,删除指定的文件后缀(可扩展,根据具体需要的删除的后缀进行配置)~~

    在工作开发过程中,每次用SVN提交代码全选择的时候,发现会产生很多不需要的文件后缀垃圾文件,感觉挺烦人的,一个一个删太麻烦了,如果产生多种后缀文件时,那删起来多费劲,是吧?想想,就写了一段程序通过递归 ...