zoukankan      html  css  js  c++  java
  • Oracle中基本增删改查

    • 介绍工作中常遇到的,认为值得分享的比较简单的一些点

    给一个表插入数据和增加栏位风险

    • 给一个表制定栏位插入值

    • SD_GSS 以此表为例子

    • 存在另外一个表, SD_GSS1SD_GSS结构完全相同,那么可以用如下插入语句,这只是简单的写法

       INSERT INTO  SD_GSS(YEAR,NO) VALUES ('2015','1')
    
    • 存在一定的风险,下面分享几个,如果两个表,任意一个表有栏位增加,则Oracle会报错,还有数据栏位唯一性,插入语句基于数据库机制都会有报错
       INSERT INTO  SD_GSS
       SELECT *FROM  SD_GSS1 
    
    • 如果你会向一个表中插入资料,但是要用SQL定期检查,某个栏位有无重复,可能会有如下SQL语句,
       SELECT NO FROM  SD_GSS1 WHERE NO=''  GROUP BY  NO HAVING COUNT(*)>1
    
    • 这样可以排查出重复数据,但是你可以对一个栏位下一个唯一性定义,就可以提前避免有重复数据出现
    • 当然实际开发中遇到的SQL语句可能会很长,约束条件也是复杂多样化
       ALTER TABLE SD_GSS
       ADD  UNIQUE (NO)
    

    IN、OR、EXSIT

    • 这些检索条件关键字自然有用,但是对于大的表格来说,相当难用,如下一条SQL就是效率低下的写法,把查询的条件作为结果。用了IN,不会套用至索引上
    • 其余两个等类似,这里先开个头,等时机成熟,好好谈谈SQL写法,和数据库机制,索引等等。
       SELECT NO FROM SD_GSS WHERE NO IN(SELECT NO FROM SD_GSS1 WHERE YEAR='')
    
    • 如果简单优化可以如下
       SELECT A.NO FROM SD_GSS A,SD_GSS1 B WHERE A.NO=B.NO AND B.YEAR='
    
    • LEFT JOIN 深入优化如下,当然,对于大批量数据,没有打上索引的检索条件优化,又会显得毫无意义
       SELECT A.NO FROM SD_GSS A  LEFT JOIN  SD_GSS1 B ON A.NO=B.NO WHERE  B.YEAR=''
    

    感激

    写的比较简单,一切事物发展都有其底层,打好基础。感谢您能在百忙中阅读我的文稿,如有思想交际,不胜荣幸。

    关于作者

      var runoob = {
        nickName  : "墨客码",
        site : "http://www.cnblogs.com/gss0525/"
        descTarget : "本菜鸟做.net后台开发,热衷分享技术,希望您能给个赞,鼓励一下,亲"
      }
    
    读万卷书,行万里路,方能回到内心深处。
  • 相关阅读:
    1094. Car Pooling
    121. Best Time to Buy and Sell Stock
    58. Length of Last Word
    510. Inorder Successor in BST II
    198. House Robber
    57. Insert Interval
    15. 3Sum java solutions
    79. Word Search java solutions
    80. Remove Duplicates from Sorted Array II java solutions
    34. Search for a Range java solutions
  • 原文地址:https://www.cnblogs.com/gss0525/p/6779721.html
Copyright © 2011-2022 走看看