设为首页 收藏本站
查看: 1383|回复: 0

[经验分享] oracle基础之sql基础知识

[复制链接]

尚未签到

发表于 2016-7-29 10:57:17 | 显示全部楼层 |阅读模式
  1. sql(Structured Query Language)是关系型数据库的基本操作语言。
  包括数据库查询(Data Query),数据操纵(Data Manipulation),数据定义(Data Definition)和数据控制(Data Control)。
         数据库查询(Data Query):用于检索数据,也就是select语句。
         数据操纵(Data Manipulation Language DML):用于改变数据,包括insert,update和delete。DML不会自动提交事物。
         事物控制语句(Transactional Control Language TCL):用于维护数据的一致性,包括commit, rollback和savepoint;其中savepoint语句用于设置保存点,以恢复部分数据的更改。
         数据定义(Data Definition Language DDL):用于建立,修改和删除数据对象。create,alter和 drop;DDL语句会自动提交事物。
         数据控制(Data Control Language DCL):用于分配和收回权限,包括grant和revoke。DCL也会自动提交事物。
  
2.sql语句规则
  sql语句的关键子不区分大小写;对象名和列名不区分大小写。
  
3.pl/sql 是oracle在标准sql基础上的扩展,允许定义变量和常量,允许过程语言结构(条件分支和循环)允许异常处理。
  
  4.distinct 作用是要查询的所有数据,而不仅仅是紧跟它后面的那列。
      selecte distinct a,b from table; --返回数据的条件是a相等且b必须相等distinct 可否放在列的中间那?
  
5.NVL(expr1,expr2)
       如果expr1是null,则返回expr2,否则返回expr1,expr1和expr2可以是任意数据类型,但两者必须匹配。
   NVL2(expr1,expr2,expr3)
       如果expr1不是null则返回expr2,否则返回expr3。expr1可以是任意数据类型,而expr2和expr2可以是除LONG之外的其它类型。但是三者数据类型必须一致。
  
6.插入数据
  不使用列插入单行数据:必须提供所有列的数据,数据的顺序与列的顺序一致。
  insert into emp values(1,'gaci','man');
  使用列插入单行数据:对于未出现的列,默认值为null
  insert into emp(id,name,sex) values(1,'gaci','man');
   使用只查询插入数据:--将表emp2的数据全部复制到emp1里面
  insert into emp1(id,name,sex) select id,name,sex from emp2;
  insert /*+APPEND*/into emp1(id,name,sex) select id,name,sex from emp2;
  /*+APPEND*/表示直接装载方式,主要用于操作大批量数据
   delete删除表中的所有数据时,不会释放表所占用的空间;但是可以回退(roll back)
  truncate不仅删除表的数据,而其释放其空间;不可以回退。
  
  7. 事务控制语句
      事务用于确保数据库的一致性,有一组相关的DML语句组成。事务确保该组DML语句所执行的操作要么全部执行成功,要么全部取消。
      事务主要有insert,update,delete和selete ... for update 组成,当执行这些语句时事务开始;当执行commit货rollback的时候事务结束。
  
  
   当执行事务操作时,oracle会在被操作的表上家上锁,以防止其它用户改变表结构;同时会在被操作的行上加上锁,以防止其它事务在相应的行上执行DML操作。
 
   当执行commit语句之后,会确认事务变化(更新数据等), 结束事务,删除保存点,释放锁。
   当执行DDl语句时会自动提交事物,create , alter,drop 等。
   当执行DCL语句Grant,revoke等
   当退化出sql/plus,pl/sql等
  
回退事务
     保存点(savepoint)--是事务中的一点,用于取消部分事务。
     设置保存点:savepoint a;
     回退保存点:rollback to a ;  -- 会取消a和面的操作
     取消全部事务:rollback;
 
  只读事务(会话级别的) set transaction read only;
    只允许执行查询操作,不允许执行任何DML操作。尽管其它用户会话可能提交新事务,但只读事务不会取得新的数据变化,可以确保用户取得特定时间点的数据信息。
  顺序事务  set transaction isolation level serializable;
     只读事务可以使用户取得特定时间点的数据信息,但是该用户在只读事务期间不能执行dml操作。而顺序事务则可以这样。
 
   数据分组
   数据分组通过使用group by字句,分组函数和having字句共同实现。group by指定要分组的列,分组函数用于统计结果,having用户限制分组显示结果。
  
   分组函数
   只能出现在选择列表,order by 和 having字句中,不能出现在where和group by字句中
   除了count(*)函数外,其它分组函数都会忽略null行
   当执行select语句时,如果选择列表同时包括列,表达式和分组函数,那么这些列和表达式必须出现在group by字句中。
  
  脏数据---未提交事务
  
  --查询带有下划线的名字
 select name from emp where name like '%a_%' ESCAPE 'a' -- a为转义字符

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251116-1-1.html 上篇帖子: oracle学习笔七(数据完整性) 下篇帖子: Oracle Streams学习二(清除流配置)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表