Oracle总结

常用总结

查看表结构

desc 表名称

字符串链接

select ‘abc’||‘123’ from dual;

模糊查询

通配符%表示任意多个字符
_表示任意1个字符
例如:查询员工姓名中第2个字母是A员工有哪些人呢?
  select * from emp where eName like ‘_A%’

范围查询,从…到…

关键字:between 小 and 大(类似 >= and <= )

单行函数

转大写 upper(‘字符串’) select upper(‘aBc’) from dual;
转小写 lower(‘字符串’) select lower(‘aBc’) from dual;
首字符大写 initcap(‘字符串’) select initcap(‘miss.wu’) from dual;
字符串链接 concat(‘字符串1’,‘字符串2’) select concat(‘abc’,‘123’) from dual;

数学函数

四舍五入:round(数,精度) select round(125.678,-1) from dual; 130
数字截取:trunc(数,精度)
  select trunc(125.678,2) from dual; 125.67
  select trunc(125.678,-1) from dual; 120

字符转数值

to_number(‘数值字符串’)

多表连接

内链接:显示2个表或多个表之间的共有数据(交集)
外链接:显示主表的所数据,对应从表的数据会补null
外链接关键字:(+)所在方补充null
  select * from dept,emp where dept.deptNo = emp.deptNo(+)

SQL99规范实现多表联合查询

内链接:显示2个表或多个表之间的共有数据(交集) inner join
外连接:
左外链接(left join):显示关键字前(左边)表的所有数据,关键字后(右边)表的数据补NULL
完全外链接(full join):显示关键字前后2个表的所有数据,对应补NULL

DQL语言执行顺序

from>start with>where>group by>having>select>order by

DML 数据操作语言

删除表语法:
  truncate table 表名 会产生rollback,如果删除大数据量的表速度会很慢,同时会占用很多的rollback segments
  delete from 表名 是DDL操作,不产生rollback,速度快
增加:insert into 表名(列名1,列名2,…,列N) values(值1,值2,…,值N)
修改:update 表名 set 列名1=值,…,列N=值 where 修改条件
删除:delete from 表名 where 删除条件

事务管理

事务提交 commit; 保存
设回滚点 savepoint 名; 设置一个名字用于回滚到指定地点
  例:update emp set sal=sal-200 where eName=‘TOM’; savepoint a1
事务回滚 rollback to 名; 取消
  例:rollback to a1

约束总结(需要学习)

主键约束:constraint PK_自定义约束名 primary key(主键列名)
外键约束:constraint FK_自定义约束名 foreign key(外键列名) references 主表(主键名)
唯一约束:constraint Uq_自定义约束名 unique(唯一键列名)
检查约束:constraint CK_自定义约束名 check( 检查条件 )

create table Dept(dName varchar2(15),
	constraint PK_自定义约束名 primary key(列名)
)

进阶学习

视图

create view 自定义视图名 as 查询语句

自定义存储过程(挑时间系统学习)

声明

create procedure 自定义过程名(
	形参变量名1 [in/out/in out] 数据类型,
	... ...
	形参变量名2 [in/out/in out] 数据类型
)
is/as
... 声明区 ...
begin
...代码编辑区...
end;
/

调用:exec 自定义过程名(实参列表,…)

创建
create procedure pro_SaveDept(
	v_loc  dept.loc%type
)
as
begin
insert into dept(loc) values(v_loc);
commit;
end;
/
调用
 exec pro_SaveDept('杭州')

函数(挑时间系统学习)

声明

create function 自定义函数名(
	形参变量名1 [in/out/in out] 数据类型,
	... ...
	形参变量名N [in/out/in out] 数据类型
)
return 返回值类型
as/is
... 声明区...
begin
...函数编辑区...
end;

声明函数,根据每月实际收入计算所得税
create function fun_tax(
	v_sal emp.sal%type
)
return number
as
v_tax emp.sal%type;
begin
if v_sal<=3500 then
v_tax:=0;
elsif v_sal<=5000 then
v_tax:=(v_sal-3500)*0.03;
else
v_tax:=45+(v_sal-5000)*0.25;
end if;
return v_tax;
end;

触发器

行级触发,语句级触发;由DML数据操作语句(inser/update/delete)触发
创建

create trigger 自定义触发器名称
	before|after /*事前发生|事后发生*/
	insert|update|delete /*点火触发事件*/
	on 对象
	for each row /*行级触发频率,对每一行数据对象进行循环遍历*/
	PL/SQL 语句块

create trigger tri_DelDept
	before delete on Dept
	for each row
	begin	--删除部门前,删除这个部门下员工的子记录;
	delete from emp where deptNo= :old.deptNo;
	dbms_output.put_line('员工注销完成!');
	end;

触发只需要创建,无需显示调用。在删除部门时自动点火触发删除员工操作

游标(待总结)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值