[独孤九剑]Oracle知识点梳理(四)SQL语句之DML和DDL
本系列链接导航:
[独孤九剑]Oracle知识点梳理(四)SQL语句之DML和DDL
[独孤九剑]Oracle知识点梳理(五)数据库常用对象之Table、View
[独孤九剑]Oracle知识点梳理(六)数据库常用对象之Procedure、function、Sequence
[独孤九剑]Oracle知识点梳理(七)数据库常用对象之Cursor
[独孤九剑]Oracle知识点梳理(八)常见Exception
[独孤九剑]Oracle知识点梳理(九)数据库常用对象之package
[独孤九剑]Oracle知识点梳理(十)%type与%rowtype及常用函数
4、SQL语句
Oracle 将sql语句分为一下几类:
a) 数据操作语言语句[Data manipulation language,DML],如select、insert、update、delete、merge、lock、fetch等
b) 数据定义语言语句[Data definition language,DDL],如create、alter、drop、rename、truncate、grant、revoke、audit、noaudit、comment等
c) 事务控制语句[transaction control statement],如commit、rollback、savepoint、set transaction等
d) 会话控制语句[session control statement]
d.1 执行特定操作,修改当前会话,例如启用或禁用 SQL 跟踪功能[SQL trace facility](ALTER SESSION);
d.2 为当前会话启用或禁用角色[role](即一组权限的集合)(SET ROLE)
e) 系统控制语句[system control statement],alter system 是唯一的系统控制语句
f) 嵌入 SQL 语句[embedded SQL statement]
f.1 cursor的定义(declare cursor)、打开(open)、关闭(close),
f.2 选择一个oracle数据库并进行连接 declare database,connect
f.3 分配变量名 declare statement
f.4 初始化描述符[descriptor](DESCRIBE)
f.5 设定如何处理错误及警告(WHENEVER)
f.6 解析并执行 SQL 语句(PREPARE,EXECUTE,EXECUTE IMMEDIATE)
f.7 从数据库中取回数据(FETCH)
我操作最多的是a,b,c和f中的部分。
4.1、DML
4.1.1、增删改查的语法使用标准sql语句即可:
select * from table1;
insert into table1(f1,f2,f3) values(v1,v2,v3);
update table1 t set t.f1=v1 where t.f2=v2;
delete table1 t where t.f2=v2;
rownum,是oracle中特有的一个关键字,当select一张表时,oracle会对查询结果进行标记,rownum是number类型的,每次都是从1开始,如果查询出10行数据,那么rownum就会从1到10,按查询结果的顺序标记。
rownum是不可以跳跃的,即可以使用where rownum=1,但不可以使用where rownum=2; 可以使用rownum <5,但不可以使用rownum>5,而where rownum=0可以得到表结构。
4.1.2、分页查询:
select tt.* from (select t.*,rownum rn from table1 t where rownum<=10) tt where tt.rn>=1; --这就是使用rownum的最好例子
4.1.3、联合查询
- where方式关联:
select t1.*,t2.* from table1 t1,table2 t2 where t1.f1=t2.f2 --同inner join
select t1.*,t2.* from table1 t1,table2 t2 where t1.f1(+)=t2.f2 --同left join
select t1.*,t2.* from table1 t1,table2 t2 where t1.f1=t2.f2(+) --同right join
- join方式关联:
select t1.* from table1 t1
join table2 t2
on t1.f1=t2.f2
where t1.fx>10 and t2.fy>100
left join 、right join、outer join 方式与标准sql一致,略。
4.1.4、merge 合并
该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据.
/*涉及到两个表关联的例子*/
merge into toTable a --需要更新的表
using fromTable b --关联表(数据源表)
on (a.id=b.id) --关联条件
when metched then --匹配关联条件,做更新处理
update set a.f1=b.f1, a.f2=b.f2+1
when not metched then --不匹配关联条件,做插入处理
insert values(b.f1,b.f2,b.f3...);
/*涉及到多个表关联的例子,有3个表,table1 是目标表,table2和table3需要关联后,作为table1的数据源;并且只做更新操作*/
merge into table1 a
using (select t2.id,t2.f1,t2.f2,t3.f1 from table t2 join table2 t3 on t2.id=t3.id) b
4 on (a.id=b.id)
when matched then
update set a.f1=b.f1,a.f2=b.f2+1;
注意:
- 使用merge时,update或insert的字段,不能是 on中用于匹配的字段
- 对于update和insert语句,都可以使用where条件;where中可针对a表,也可针对b表进行过滤
4.2、DDL
create用于创建table、view、procedure、function、sequence等。
alter用于修改
drop用于删除table、view、procedure、function、sequence等。
grant、revoke用于给用户赋权限和取下权限
audit、noaudit用于审计功能
comment用于添加备注信息
truncate用于截断表,不能回滚
rename用于重命名
第5节,在介绍table、view、procedure、function、sequence时,使用的都是DDL语句
4.3、其他类型的SQL语句
略( ̄▽ ̄)"
[独孤九剑]Oracle知识点梳理(四)SQL语句之DML和DDL的更多相关文章
- [独孤九剑]Oracle知识点梳理(十)%type与%rowtype及常用函数
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
- [独孤九剑]Oracle知识点梳理(九)数据库常用对象之package
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
- [独孤九剑]Oracle知识点梳理(八)常见Exception
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
- [独孤九剑]Oracle知识点梳理(七)数据库常用对象之Cursor
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
- [独孤九剑]Oracle知识点梳理(六)数据库常用对象之Procedure、function、Sequence
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
- [独孤九剑]Oracle知识点梳理(五)数据库常用对象之Table、View
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
- [独孤九剑]Oracle知识点梳理(三)导入、导出
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
- [独孤九剑]Oracle知识点梳理(二)数据库的连接
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
- [独孤九剑]Oracle知识点梳理(一)表空间、用户
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
随机推荐
- 搭建backup服务器基本流程
守护进程实现,将daemon配置在backup服务器,因为这样其他服务器就能通过服务推即可. 服务端配置流程: 前提两台服务41为backup服务 31是其他服务器即客户端 在41服务器中配置 ...
- bfc (收集的)
一些基本概念 viewport: 展现网页的媒体,比如窗口或者某个区域,它的大小是有限制的,为了不被平台术语所束缚,我们给他起名viewport,中文意思就是视口. canvas: 而我们在渲染网页的 ...
- Adjust Linux Mint Mouse Scroll (Normal/Reverse)
Set Scroll Normal 1 echo "pointer = 1 2 3 4 5 6 7 8 9 10 11 12" > ~/.Xmodmap && ...
- 大数据架构之:Spark
Spark是UC Berkeley AMP 实验室基于map reduce算法实现的分布式计算框架,输出和结果保存在内存中,不需要频繁读写HDFS,数据处理效率更高Spark适用于近线或准实时.数据挖 ...
- Django 路由、模板和模型系统
一.路由系统 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个URL调用这 ...
- 吴恩达深度学习笔记(九) —— FaceNet
主要内容: 一.FaceNet人脸识别简介 二.使用神经网络对人脸进行编码 三.代价函数triple loss 四.人脸库 五.人脸认证与人脸识别 一.FaceNet简介 1.FaceNet是一个深层 ...
- BASE64Encoded() 方法报错说方法未定义
代码: String enParams = new BASE64Encoder().encode(strParams.getBytes()); 出错,显示方法未定义 解决方法:项目右键——>pr ...
- java中集合类详解
集合类说明及区别 Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └W ...
- windows下如何查看端口占用
1.查看端口使用情况netstat -aon(以3306为例) 2.根据3306端口号查看对应的进程号(进程号就是进程的唯一标识,根据这个进程号就能找到对应的应用) 3.根据进程号查询相应的应用占用端 ...
- DataWarehouse- 从面试定位自己的水平
1.讲一下什么是维度表和事实表.用户资料表算是什么类型表. 2. 维度建模属于第几范式,让你对维度建模改进,有什么思路吗. 3. 了解数据血缘分析吗,让你实现的话有什么技术方案,感觉难点在哪. 4. ...