一、数据库类型
- 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...

https://blog.csdn.net/a_higher/article/details/120214877
1685

被折叠的 条评论
为什么被折叠?



