oracle整理笔记
数据库对象:
1.函数(方法):
function
2.触发器:
trigger
3.表:
table
4.索引:
index
5.视图:
view
6.序列:
sequence
7.用户:
user
8.同义词:
synonym
9.表空间:
tablespace
授权:
grant ... to
撤销权限:
revoke ... from
Oracle学习重点:
1.标识列(序列+触发器)
2.分页sql代码
sqlserver的数据类型:
1.字符串:
varchar
2.整数:
int
3.小数:
float/money
4.时间:
datetime
5.布尔:
bit
Oracle的数据类型:
1.字符串:
varchar2
2.整数/小数:
number(p,s) p:精度 s:小数位数
例如 number(5,2) 123.45
3.日期时间:
date
--创建表
create table tb_0723(
sid number primary key,
sname varchar2(50),
ssex varchar2(10)
)
六大约束:
1.主键
2.非空
3.检查
4.唯一
5.外键
6.默认
--创建表空间
create tablespace tbs_0723
datafile 'D:\app\0723.dbf'
size 50M
--创建用户
create user lx
identified by 123
default tablespace tbs_0723
--授权
grant connect,resource to lx
--撤销
revoke connect from lx
数据库:让数据持久性的
SqlServer
登录用户:
创建库==》创建表
一个用户对应多个库
Oracle
创建数据库:
创建用户==》指定表空间
一个库对应多个用户
伪列 :
rownum,rowid
分页案例:
每页3条数据
第一页:1~3
第二页:4~6
第三页:7~9
页码:pageIndex 1 2 3
每页数据条数:pageSize 3
开始:pageStart 1 4 7
结束:pageEnd 3 6 9
上一页的最后一条+1 就是本页的第一条
pageStart=(pageIndex-1)*pageSize+1
pageEnd=pageIndex*pageSize
函数:
日期函数:
获取月份:
add_months
获取当前系统时间:
sysdate
获取当前时间:
current_date
取整(四舍五入):
round
取整 只取年月日:
trunc
本月最后一天:
last_day
下周几为几号:
next_day(星期一、星期二、星期三、星期四、星期五、星期六、星期日)
字符串函数:
小转大:
upper
大转小:
lower
去掉左边的指定字符:
ltrim
去掉右边的指定字符:
rtrim
在字符串中第一次出现的位置:
instr
截取:
substr
连接:
concat、||
哈希码:
ascii
编码对应的字符:
chr
字符串字符长度:
length
左填充:
lpad
右填充:
rpad
判断 字符为什么
decode('b', 'a','周' , 'b',2 , 'c','嗯呐' , 'd',4)
反序:
reverse
数学函数:
向上取最小的整数:
ceil
取整数位:
floor、trunc
四舍五入:
round
求余:
mod
开平方:
sqrt
正负数:
sign
nvl:
nvl(comm,0)--工资+奖金
查询每个员工的工资减去1250:案例
select ename, decode(sign(sal-1250),-1,'不纳税',0,'刚刚好',1,'纳税') from emp;
代码块:
begin
.....
end
打印语句:
dbms_output.put_line('');
赋值:
into、:=
扫描器:键盘输入 &
字段类型:
%type
行类型:
%rowtype
条件分支:
一种可能
if 条件 then
end if;
两种可能
if 条件 then
else
end if;
三种 或 三种以上可能
if 条件 then
elsif 条件 then
....
else ..
end if;
case:
case when then
case 变量
when 值1 then 代码1;
when 值2 then 代码2;
when 值3 then 代码3;
....
else 代码n;
end case;
循环:loop
begin
<<循环体名字>>[可写可不写]
loop
打印语句
循环条件
判断语句
end loop;--停止
end;
案例:循环打印1--100之间所有的整数
declare i number:=1;
begin
<<a>>--给循环起名字为a
loop
dbms_output.put_line(i);
i:=i+1;--每循环一次 i的值加1
exit a when i=101;
end loop;
end;
while:
while(循环条件) loop
循环体;
打印语句
end loop;
案例:循环打印1--100之间所有的整数
declare i number:=1;
begin
while(i<=100) loop
dbms_output.put_line(i);
i:=i+1;
end loop;
end;
for:
begin
for i in 数字..数字(循环条件、从小到大) loop
打印语句
end loop;
end;
案例:循环打印1--100之间所有的整数
begin
for i in 1..100 loop
dbms_output.put_line(i);
end loop;
end;
mod:余
案例:求出1--100之间所有能被3 和 5整除的数字之和
declare i number:=1;
begin
loop
if(mod(i,3)=0)then
if(mod(i,5)=0)then
dbms_output.put_line(i);
end if;
end if;
i:=i+1;
exit when i>100;
end loop;
end;
异常:
no_data_found
too_many_rows
自定义异常:
1、定义行类型
2、查询数据
3、打印定义
4、exception when 异常 then
5、打印输出
案例:
declare mrow emp%rowtype;
begin
select*into mrow from emp where empno =6666;
dbms_output.put_line(mrow.ename);
exception when too_many_rows then
dbms_output.put_line('查询数据太多');
when no_data_found then
dbms_output.put_line('查询不到数据');
end;
抛出异常:
1、定义变量
2、定义异常
3、抛出异常
4、处理异常:
案例:查询指定工号的员工工资,如果工资低于1250 就抛出工资太低异常
declare
msal number;--定义变量存工资
me exception;--定义异常
begin
select sal into msal from emp where empno=7566;
if(msal < 1250) then
raise me;--抛出异常
end if;
exception when me then--处理异常
dbms_output.put_line('工资有点不高呀');
end;
函数function:
1、创建一个函数
2、返回值类型
3、定义变量
4、查询语句
5、返回值
案例:
1、无参:定义一函数查询到工号为7369的员工姓名
create or replace function getname
return varchar2 is
sname varchar2(20);
begin
select ename into sname from emp where empno=7369;
return sname;
end;
2、有参:定义一个函数,接收工号,返回这个员工的工资
create or replace function getsal(sid number)
return number is --返回值类型
msal number;--定义变量
begin
select sal into msal from emp where empno=sid;
return msal;--返回值
end;
使用函数:
1、无参:
select 对象名() from dual;
2、有参:
select 对象名(值) from dual;
游标:
隐式游标
显式游标:遍历多行数据
REF游标(自定义游标)
打印:属性、一行中的属性
隐式游标:SQL
属性:
%found:受影响行数>0就为true
%notfound:受影响行数<1就为true
%rowcount:受影响行数
%isopen:判断游标是否打开,始终为false
显式游标:
1、定义游标
2、打开游标
3、提取数据
4、关闭游标
案例:
declare
cursor 游标名 is sql语句;
begin
open 游标;
loop
fetch 游标 into 变量;
exit when 游标%notfound;
dbms_output.put_line();
end loop;
close 游标
end;
嵌套:
loop(显式游标):
1、定义变量
2、定义游标
3、定义第二个变量
4、sql语句
5、打开游标
6、提取游标数据
7、打印语句
8、打开第二个变量的游标
9、提取第二个变量的数据
10、再次打印语句
11、关闭两个游标
案例:打印部门编号的同时,打印该部门的所有员工信息
declare
dr dept%rowtype;--部门变量
cursor dc is select * from dept;--部门游标
er emp%rowtype;--员工信息变量
cursor ec(dno number) is select * from emp where deptno=dno;--员工信息游标\
begin
open dc;--打开部门游标
loop
fetch dc into dr;--提取部门游标中的数据
exit when dc%notfound;
dbms_output.put_line('部门编号:'||dr.deptno);--打印部门编号、每得到一个部门编号,就查询该部门下的员工
open ec(dr.deptno);--打开员工游标
loop
fetch ec into er;--提取员工游标中的数据
exit when ec%notfound;
dbms_output.put_line(' 姓名:'||er.ename||' 工资:'||er.sal);
end loop;
close ec;--关闭员工游标
end loop;
close dc;--关闭部门游标
end;
for:
1、定义游标
2、定义第二个游标
3、for循环,打开游标,提取数据
案例:打印部门编号的同时,打印该部门的所有员工信息
declare
cursor dc is select * from dept;--部门游标
cursor ec(dno number) is
select * from emp where deptno=dno;--员工游标
begin
for dr in dc loop--循环 打开游标 提取数据
dbms_output.put_line(dr.deptno);
for er in ec(dr.deptno) loop
dbms_output.put_line(' 姓名:'||er.ename||' 工资:'||er.sal);
end loop;
end loop;
end;
序列:sequence
创建序列
create sequence 名字;
获取序列的当前值:
select 名字.currval from dual;
获取序列的下一个值:
select 名字.nextval from dual;
删除序列
drop sequence 名字;
同义词:synonym
案例:创建私有同义词
create synonym sb for scott.emp;
共有同义词:public synonym
创建公有同义词:
create public synonym sss for scott.emp;
创建视图:
案例:
create view v_info
as
select a.empno,a.ename,a.deptno,b.dname,b.loc
from emp a
join dept b
on a.deptno=b.deptno
授权视图:
grant create view to scott;
连接外键:references 表名(字段名)
提交事物:commit;
回滚(撤回):rollback
多行数据插入表二中:
insert into 表1 select * from 表2;
复制数据及表字段并创建表2:
create table 表2as select *from 表1
默认单词:default
默认为系统时间:
to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')
去重:distinct
oracle整理笔记相关推荐
- oracle正整数集,Oracle 整理
[Oracle 整理]的更多相关文章 [Oracle整理]ORA-12705(字符集问题) 2017年5月11日 18:11 [Oracle整理]ORA-12705(字符集问题) 说明:本内容是工 ...
- 达内oracle教材,达内学习心得oracle数据库笔记
达内学习心得oracle数据库笔记 达内学员: oracle 数据库笔记获奖学员:王梓祺所获奖项:三等奖内容:/*前言:这份资料是结合老师笔记,课堂案例, TTS6.0 课件以及个人的理解整理,时间仓 ...
- 初学Oracle的笔记(2)——基础内容(实时更新中..)
续 初学Oracle的笔记(1)--基础内容(实时更新中..) 1.oracle中创建一张表,写法与sql server中的一样. SQL> create table Course 2 ( cn ...
- html css整理笔记,HTML CSS整理笔记 (八) 定位网页元素
----8 定位网页元素---- 51.Position属性:指定盒子的位置,相对它父级的位置或它自身应该在的位置. (1)static 默认无定位,元素按照标准文档布局. (2)relative相对 ...
- Oracle安装笔记
Oracle安装笔记 出现错误后不要慌,最主要的是看log文件的提示,其中比较简单的文件是install目录下的make.log 错误一: client_shared For example: /us ...
- xmpp整理笔记:xmppFramework框架的导入和介绍
一个将要开发xmpp的项目,建议在项目刚创建就导入框架,这样可以避免一些自己操作失误造成不必要的损失. xmpp中最常用的框架就是 xmppFrameWork 往期回顾: xmpp整理笔记:环境的快速 ...
- C#中使用Oracle 存储过程笔记
C#中使用Oracle 存储过程笔记 1. 调用包含out/ in out类型参数的存储过程 存储过程: CREATE OR REPLACE PROCEDURE "SITE_EDITSI ...
- 开发整理笔记Markdown基本使用
Mou for Mac 整理笔记方便后期查看及使用 #标题 *无序排列 1.有序排列 引用 插入链接及插入图片: .代码框. 粗体 *斜体 表格如下图,较麻烦: ***分割线
- oracle:oracle学习笔记(四)循环、光标、异常、瀑布模型
oracle学习笔记:循环.光标.异常 文章目录 打印Hello World 定义基本变量 引用型变量(单行)` my_name emp.ename%type ` 记录型变量(多行) `emp_rec ...
最新文章
- Java并发编程—notify和notifyAll有什么区别?
- Zing加快了JVM应用程序的预热
- 第一阶段:前端开发_Mysql——表与表之间的关系
- [html] 浏览器是怎么对HTML5的离线储存资源进行管理和加载的
- [.net 面向对象程序设计进阶] (9) 序列化(Serialization) (一) 二进制流序列化
- R Markdown 简介
- Ubuntu16.04 +cuda8.0+cudnn+caffe+theano+tensorflow配置明细
- 全局变量不能放在头文件其中
- 【微信读书】《我不过低配的人生》- 雾拦满江 读书笔记
- java中this有什么作用_Java中this有什么用
- TFT-ST7789 方向调整
- 服务器上修改websphere变量,WebSphere常用设置
- 针对OpenSSL吐嘈的吐嘈-如此唱反调
- 国外14部经典励志电影推荐
- IDEA编辑页面html jsp js java无法即时生效
- VMware虚拟机中安装Win10系统
- 没有50W彩礼 女友被强行拽走! Python分析全国彩礼情况,心凉了!
- 20140419-MCSA 2012 Server R2 IntegrationService
- 量子计算机科学家,再破纪录!中国科学家实现18个量子比特纠缠 为量子计算机奠基...
- Python实现选择排序算法
热门文章
- 摩拜上海涨价,已成全国最贵单车,一月运维花4亿全年亏45亿
- 饿了么前端教程简明笔记
- 计算机在未来是否会代替人工,别惊讶!未来70%的工作会被人工智能替代
- 医疗器械产品 EMC 测试与整改思路
- php中可以用于执行sql语句的函数是,在PHP中,使用()函数执行SQL语句。
- 《龙虎门》--动作电影新希望
- 六度分离【Floyd】
- 142、解密POE交换机供电秘密,8芯网线断芯不再害怕!
- 跟着川川学习python爬虫的第一天
- <<多模态预训练>>2022:CoCa: Contrastive Captioners are Image-Text Foundation Models