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后台开发,热衷分享技术,希望您能给个赞,鼓励一下,亲"
      }
    
    读万卷书,行万里路,方能回到内心深处。
  • 相关阅读:
    mysql.pas
    mysql 动态创建(删除)数据库,表
    界面美化(来自网络)
    串口的一点知识(摘抄)
    移位操作
    快速排序
    oracle和sqlserver互訪
    ASP.NET 无法向会话状态服务器发出会话状态请求 错误的解决方法
    去除 word requirements 工具条
    C# 控件预处理键盘命令
  • 原文地址:https://www.cnblogs.com/gss0525/p/6779721.html
Copyright © 2011-2022 走看看