oracle学习

上一篇:C#学习记录_a_higher的博客-CSDN博客一 数据类型值类型 --简单类型(整型(sbyte,byte,short,ushort,int,uint,long,ulong) ,布尔,浮点型(实数型)(float,double,demcimal),字符型) --结构类型(struct) --枚举类型(enum)引用类型 --class --接口 --delegate(代理方法,他有些重载运算符 + - ) --array编码风格:简单变量用驼峰,高级命名用双大写https://blog.csdn.net/a_higher/article/details/120214877

一、数据库类型

  • char
  • varchar2
  • varchar
  • nchar
  • nvarchar2
  • long
  • ...

二、DDL(Data Definition Language)

create、alter、truncate、drop

create table xxx (

列名 (列类型) default xxx || 5种约束(唯一(unique),外键(foreign key),not null,check,主键(primary key))

...

|| constraint 约束名 5种约束)

注:创建表oracle会自动大写,所以 一般我们用大写,不管表名或字段,还有对于与关键字冲突的字段需要加单引号 

视图(建立一个虚表,是操作简单,利于重构,安全)

create 【or replace】【force | noforce】view  xxx

[alias]

as select xxx

【with check option】

【with read only】

同义词并不占用实际存储空间,可以用于把某个用户的表给其他用户用

create 【or replace】【public】synonym xxx 

序列 来生成唯一编号

create sequence xxx

【increment by n】

【start with n】

【{maxvalue n | nomaxvalue}】

【{mixvalue n | nomixvalue}】

【{cycle | nocycle}】

【{cache | nocache}】

索引(唯一,组合,反向键,位图,基于函数)

作用:提高查询速度

create 【unique】 index xxx

on 表名(列名,...)

【tablespace 表空间名】

alter table xxx add || modify || drop  ...

(追加新列),修改现有列,追加默认值,删除列)

truncate  table xxx

与delete区别:无法回滚,只删除数据,表存储初始化

drop table xxx

无法回滚

三、DML(Data Definition Language)

select、insert、update、delete

查询是个虚拟表,

select * from xxx

insert into xxx 【列名,...】 values(值,...)

update xxx set 列名 = 值,... 【where xxx】

delete from xxx 【where xxx】

四、TCL(Transaction Control Language)

commit

rollback

savepoint

注:DML可以手动rollback(没有手动commit之前都是一个事务),DDL不可以

五、常用关键字和其他聚合函数(查询)

(1)

where

group by是重点

having

(2)distinct 去重

(3)有特殊字符(如:空格),需要加双引号

(4)伪列(只可查)

rowID、rowNum(用于限制返回行数,只能<或<=)

(5)子查询

相关子查询(exists、not exists):与父查询有关,existshou后select只跟*即可

父查询执行一次,子查询执行多次

不相关子查询(比较运算符、any(不建议用any,可以用max或min聚合函数做等价替换)、in、not in)

先执行子查询,得到结果给外层做条件,再执行外查询(即,子查询执行一次,父查询多次)

  • in()适合子表比父表数据小(或者in内是固定项)的情况
  • exists()适合子表比父表数据大的情况
  • 当子表数据与父表数据一样大时,in与exists效率差不多,可任选一个使用.优先使用exists,因为exists能使用索引。

即:IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。

(6)多表查询

内连接(不去重) inner join或者默认

外连接(左、右、全)left | right | full

自然连接(去重)

自然连接是一种特殊的等值连接,他要求两个关系表中进行比较的必须是相同的属性列,无须添加连接条件,并且在结果中消除重复的属性列。

交叉连接(没用过)笛卡尔积

两个表行数的乘积

操作符

 六、PL/SQL

【declare】

xxx

begin

xxx

【exception】

end

七、游标(用于dml和select...into)

隐式游标

执行一条dml后,结果保持在这四个游标属性中

sql%found =》成功 true

sql%notfound =》失败 true

sql%rowcount =》select into 成功为1,否则为0

sql%isopen=》游标打开为true

注:set serverout on;是写在pl/sql

显示游标(自定义名字,用于多行查询)

如:xxx%found

 八、过程(void)和函数(return)

过程:命名的pl/sql程序块,存在数据库,有应用程序或其他pl/sql程序块调用

create 【or replace】 procedure xxx

as | is

xxx

begin

xxx

【exception】

xxx 

end xxx

使用:

exec【ute】 xxxx

参数模式:in、out、in out

函数:和过程类似,但能且只能返回一个值

九、触发器

就像是事件驱动。

限制:create语句不能>32kb,不能事务,只能select ...into...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值