oracle笔记

发布 2021-05-11 22:04:28 阅读 4820

(1)查看表的结构:desc tabledescription)

2)set timing on :打开操作表的时间记录。

3)消除重复行:distinct

4)大小写不区分的是列名,而不是里面的数据。

1)可以对某一列直接进行加减乘除。两列相加。

2)如果有一列为null,所得结果也为空。

使用nvl函数处理null值。

select a*13+nvl(b,0)*13 from emp ;

nvl(列名,0):如果元组的值为null,则取0;否则取列名。

3)大于某日期:date>"1-1月-2010"

4)某段值之间:between a and b;

3 like的使用:

表示任意0到多个字符。

_表示任意单个字符。

a) desc:降序。

b) asc:升序。

c) 可以对函数处理的列 as别名,再处理。

a)数据分组:max,min,**g,sum,count

b)可以对同一列在同一视图进行多次数据分组,但是不能同时查询列,max或min.

c)group by 和 h**ing子句。

group by 用于对查询结果分组统计。

h**ing子句用于限制分组显示结果。

d)f分组函数只能出现在选择列表,h**ing,order by子句中,绝对不能当做where 条件。

e)如果 group by ,h**ing,order by 同时出现在查询语句中,那么它们的顺序是 group by,h**ing,order by。

f)在选择列中如果有列,表达式,分组函数,那么这列和表达式必须有一个出现在group by子句中。

多表查询基于两个或两个以上的表或视图的查询。(产生a*b行)笛卡尔积。

加上正确的where条件去掉笛卡尔积。

规定:多表查询的条件是至少不能少于表的个数-1.

1)自连接(把这张表看做有2张)

2)子查询: 嵌入在其他sql语句中的select语句。

a)单行子查询:只返回一行数据的子查询语句。

b)多行子查询:指返回多行数据的子查询。 如果返回的数据是多行 where 列名 in(select * from emp)

c)all:所有行。取max

d)any:任意行。取min

e)select * from emp where (a,b)=(select a,b,from job)

f)给表取别名能不能加as? oracle 貌似不行!

一共有三种方式!

分页。select a1.*,rownum rn from (select * from emp) a1 where rownum <=10;

显示rownum (oracle 分配的)一次只能用一次。

select * from (select a1.*,rownum rn from (select * from emp) where rownum <=10) where rn >=6;

若需按照某列排序:只需要对最底层的select 进行排序。

其他操作也是一样,只需修改最底层的select。

分页。3.按分析函数来分:row_number()

select * from (select t.*,row_number() from (order by cid desc) rk from emp t) where rk<1000 and rk>600;

这个命令是一中快捷的建表方法。

create table mytable (id ,name,job) as select id,name,job from emp;

有时在实际应用中,为了合并多个select语句的结果,可以使用集合操作符。

1)union

用于取得两个结果的并集,当使用该操作符的时,会自动去掉结果集中的重复行。

select * from a1 union select * from a2; 相当于where or的关系。

2) union all 同union ,区别在于不去掉重复行。

3) intersect 取交集。

4) minus 差集。

9数据库在执行sql 的顺序。

一、sql语句的执行步骤:

1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义。

2) 语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限。

3)视图转换,将涉及视图的查询语句转换为相应的对基表查询语句。

4)表达式转换, 将复杂的 sql 表达式转换为较简单的等效连接表达式。

5)选择优化器,不同的优化器一般产生不同的“执行计划”

6)选择连接方式, oracle 有三种连接方式,对多表连接 oracle 可选择适当的连接方式。

7)选择连接顺序, 对多表连接 oracle 选择哪一对表先连接,选择这两表中哪个表做为源数据表。

8)选择数据的搜索路径,根据以上条件选择合适的数据搜索路径,如是选用全表搜索还是利用索引或是其他的方式。

9)运行“执行计划”

二、oracle 共享原理:

oracle将执行过的sql语句存放在内存的共享池(shared buffer pool)中,可以被所有的数据库用户共享当你执行一个sql语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同, oracle就能很快获得已经被解析的语句以及最好的执行路径。 这个功能大大地提高了sql的执行性能并节省了内存的使用

三、oracle 语句提高查询效率的方法:1: where column in(select * from ..

where ..2:..where exists (select 'x' from ..

where ..第二种格式要远比第一种格式的效率高。在oracle中可以几乎将所有的in操作符子查询改写为使用exists的子查询使用exist,oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间 oracle系统在执行in子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中避免使用h**ing字句避免使用h**ing子句, h**ing 只会在检索出所有记录之后才对结果集进行过滤。

这个处理需要排序,总计等操作。 如果能通过where子句限制记录的数目,那就能减少这方面的开销。

sql select语句完整的执行顺序:

1、from子句组装来自不同数据源的数据;

2、where子句基于指定的条件对记录行进行筛选;

3、group by子句将数据划分为多个分组;

4、使用聚集函数进行计算;

5、使用h**ing子句筛选分组;

6、计算所有的表达式;

7、使用order by对结果集进行排序。

jdbc-odbc

/加载驱动。

/创建连接。

connection ct = ip","name","password");

pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展。pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大。

1.过程,函数,触发器是pl//sql编写的,存放在oracle中的。

是非常强大的数据库过程语言。

3.过程,函数可以在j**a程序中调用。

a提高应用程序的运行性能。

b模块化的设计思想。

c减少网络传输量。

d提高安全性。

不好的地方:

a移植性不好(oracle到db2,过程要重写)

开发工具。1sqlplus :oracle提供的一个工具。

创建一个简单表。

create or replace procdeure sp_01 isreplace :表示如果有sp_01,就替换。

begin

-执行部分。

insert into mytest values(""

end 开始执行。

如何查看错误信息: show error ;

如何调用该过程: 过程名(参数)

2 call 过程名(参数)

2pl/sql developer 开发工具。

pl/sql developer 是用于开发pl/sql块的集成开发环境ide

这是一个独立的产品,而不是oracle的一个附带品。

编写一个存储过程,该过程可以删除某表记录。

create or replace s procedure p_02 is

begin

delete from mytest ;

end;执行:exec sp_02

简单分类。块(编程):block

1.过程(存储过程)

2.函数。3.触发器。

4.包。单行注释 --

多行注释 /*

表示符号的命名规范。

1)当定义变量时,建议用v_sal

2)当定义常量时,建议用c_rate

3)当定义游标时,建议用 _cursor 作为后缀 emp_cursor

4)当定义例外时,建议用 e_作为前缀 e_error

块结构示意图。

declare(可选)

*定义部分---定义常量、变量、游标、例外、复杂数据类型*/

begin(必须)

*执行部分---要执行的pl/sql语句和sql语句*/

exception(可选)

*例外处理部分---处理运行的各种错误*/

end;

Oracle笔记

第1页1.oracle 的使用 1.1.sqlplus 的命令 初始化表的位置 set nls lang american 设置编码才可以使用下面脚本 cd oracle home rdbms cd demo 我们目前使用的是oralce 9i 9201 版本 select from v versi...

oracle笔记

clear 清屏。col title for a20 设置title的字符最多有20个。oracle介绍。rdbsrdb 基本的存储结构是,二维表。表头。行。列。字段。sql的分类 dsl 关键字 select dml 操作 insert delete update ddl 定义 create dr...

Oracle笔记

oracle开发笔记。1.建立自增id字段 a.先建表,将要建自增id字段为number类型 b.建序列sequences c.建立触发器,一定要是before类型的。d.到此自增id字段就建立完成了。2.存储过程,写法,循环,异常实例。create or replace procedure dat...