本系列链接导航:

[独孤九剑]Oracle知识点梳理(一)表空间、用户

[独孤九剑]Oracle知识点梳理(二)数据库的连接

[独孤九剑]Oracle知识点梳理(三)导入、导出

[独孤九剑]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;

注意:

  1. 使用merge时,update或insert的字段,不能是 on中用于匹配的字段
  2. 对于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的更多相关文章

  1. [独孤九剑]Oracle知识点梳理(十)%type与%rowtype及常用函数

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

  2. [独孤九剑]Oracle知识点梳理(九)数据库常用对象之package

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

  3. [独孤九剑]Oracle知识点梳理(八)常见Exception

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

  4. [独孤九剑]Oracle知识点梳理(七)数据库常用对象之Cursor

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

  5. [独孤九剑]Oracle知识点梳理(六)数据库常用对象之Procedure、function、Sequence

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

  6. [独孤九剑]Oracle知识点梳理(五)数据库常用对象之Table、View

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

  7. [独孤九剑]Oracle知识点梳理(三)导入、导出

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

  8. [独孤九剑]Oracle知识点梳理(二)数据库的连接

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

  9. [独孤九剑]Oracle知识点梳理(一)表空间、用户

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

随机推荐

  1. 41和为S的连续正数序列

    题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...

  2. 教你在树莓派使用上RTC实时时钟,不用再担心断电后时间归零的问题,开机后自动同步RTC时钟!!!

    准备工作:1.系统建议使用官方最新的镜像文件 2.RTC时钟模块板(I2C接口)建议使用DS1307时钟模块,或者RTC时钟模块RTC时钟模块: 大家知道arduino的电平是5V,树莓派是3.3V, ...

  3. 【HackerRank】The Love-Letter Mystery

    James找到了他的朋友Harry要给女朋友的情书.James很爱恶作剧,所以他决定要胡搞一下.他把信中的每个单字都变成了回文.对任何给定的字符串,他可以减少其中任何一个字符的值,例如'd'可以变成' ...

  4. P4340 [SHOI2016]随机序列

    题目 P4340 [SHOI2016]随机序列 思维好题 做法 是否觉得水在于你是否发现加减是会抵消的,所以我们只用考虑乘的部分 一块乘只能前面无号(也就是前缀形式)才统计,所以用线段树维护区间前缀乘 ...

  5. 结合canvas做雨滴特效

    雨滴特效 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  6. Eclipse常用插件安装_PropertiesEditor

    properties文件在项目中多用做i18n国际化支持的配置文件,在properties文件中出现的中文信息都要转换为Unicode文本,一般的做法都是使用JDK自带的native2ascii工具进 ...

  7. firefox和chrome实现页面打印自动分页

    在Firefox和chrome中直接调用打印功能的js方法是 window.print(); 但是如果页面很长,那么就需要分页,这时只需要在页面中添加css属性即可,如果想自动分页,则如下所示 < ...

  8. Luogu-1527 [国家集训队]矩阵乘法

    Luogu-1527 [国家集训队]矩阵乘法 题面 Luogu-1527 题解 昨天学CDQ分治时做了一些题,但是因为题(wo)太(tai)水(lan)了(le)并没有整理 学了一晚上的整体二分,拿这 ...

  9. 将本地jar包制作成maven依赖

    首先,需要配置maven环境,如果没配置,传送门:http://www.cnblogs.com/hyyq/p/6557683.html 然后,需要一个ben地的jar包,这里以阿里云支付宝sdk为例, ...

  10. nova Rescue 和 Unrescue

    usage: nova rescue [--password <password>] [--image <image>] <server> Reboots a se ...