婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Oracle動態交叉表生成

Oracle動態交叉表生成

熱門標簽:語音電話機器人缺點 宜賓外呼系統廠家 地圖標注原件 語音電話機器人營銷方案 百變地圖標注 廣州市400電話辦理 淮安自動外呼系統開發 南通防封外呼系統運營商 修改高德地圖標注
正在看的ORACLE教程是:Oracle動態交叉表生成。Oracle是應用最廣的大型數據庫,而在范式下進行Oracle數據庫設計則可以大大減少數據冗余,使數據庫維護更方便,可惜范式下的數據表一般不能直接輸出。今天我們就來探討一下范式下的數據表的動態交叉表生成的方法。

  范式下的Oracle數據庫設計

  數據關系的復雜性導致了表中數據冗余的存在,數據冗余增加了維護數據庫的負擔,也占用了大量的磁盤空間,直接造成性能下降。為了消除這些負面影響,就應該對數據庫表格進行規范化,使其遵守一定的規則的,尤其是數據庫設計范式。

  關系必須是規范化的,簡單說來,就是在結構表設計時,消除冗余性和不協調的從屬關系。即每一個分量必須是不可分的數據項,但是這只是最基本的規范化。規范化理論就是研究如何將一個不好的關系模式轉化為好的關系模式的理論,規范化理論是圍繞范式而建立的。規范化理論認為,一個關系數據庫中所有的關系,都應滿足一定的規范(約束條件)。規范化理論把關系應滿足的規范要求分為幾級,滿足最低要求的一級叫做第一范式(1NF),在第一范式的基礎上提出了第二范式(2NF),在第二范式的基礎上又提出了第三范式(3NF),以后又提出了BCNF范式,4NF,5NF,以及“域/關鍵字”范式。范式的等級越高,應滿足的約束集條件也越嚴格。規范的每一級別都依賴于它的前一級別,例如若一個關系模式滿足2NF,則一定滿足1NF。

  在Oracle上設計數據庫時更要符合范式的要求,如果把一個不符合規范的數據庫放在Oracle中,是不會突出Oracle的性能的,甚至是非常糟糕。

  例如:學生的成績表,我們一般都要求打印一目了然。

  這也是符合1NF的,但如果是在數據庫中定義的表結構也這樣,則是不完善的,是有潛在沖突的。如要增加考試科目,就得更改表結構,特別是大學,專業多、科目多,而有些科目是選學的,這將會使表結構變得相當復雜,有多少科目就得有多少個科目的字段,有部分字段值必然為空;這個表是指某次測驗的還是期中或期末考試的成績呢?分辨不出,于是每一次成績都要造一張類似的表,必然表格較多。不僅浪費大量的磁盤空間,還會給程序的編寫帶來極大的困難。

  在數據范式理論的指導下,對數據庫表格進行規范化,使其結構更合理,消除存儲異常,使數據冗余盡量最小,便于插入、刪除和更新,進一步保持了數據的完整性。經過探索,我在成績管理系統的設計上采用了如下的表結構,這個表結構能以不變應用多變,不管是科目的增加,還是教師的變動,都能適應,符合數據的規范要求。 

    由此看出,經數據規范化的數據雖然使數據冗余小,便于插入、刪除和更新,但如果直接輸出是不符合人們觀看習慣的,必需要把其輸出為上面表1的格式才行,這就是列向表生成橫向表的問題,即交叉表的生成。

    動態交叉表的生成

  為了簡述起見,在學生基本信息表中,只建兩個字段,學號、姓名,其他的諸如性別、科代碼等則略。其中班、教師代碼庫、考試次數標志(即第幾次測驗,還是期中、期末考試)等也略,只保留下面數據結構足以能說明交叉表生成的過程。

  各表結構簡化如下:

  學生基本信息表:JBXX

  xh char(13) //學號

  xm char(8) //姓名,針對不同情況,可用變長字符。

  科目代碼表:KMDM

  no  number(3) //科目代號,現可用900多科目可用,若不夠,可定義四位。

  mc varchar(20) //科目中文名稱。

  成績表: CJ

  xh char(13) //學號,關聯JBXX的XH。

  xq  number(2) //學期,指該學生所在校的學期。

  km  number(3) //科目代號。

  cj  number(3) //該科成績。

  至此,數據表結構已全部建好,此時的任務是把下面表3的數據進行生成交叉表,表4。
  
  交叉表的生成,在Oracle中可以用SQL語句實現。

  select jbxx.xh,jbxx.xm , (select cj.cj from cj where cj.xh=jbxx.xh and cj.xq=1 and cj.km=1) as km1 , (select cj.cj from cj where cj.xh=jbxx.xh and cj.xq=1 and cj.km=2) as km2 , (select cj.cj from cj where cj.xh=jbxx.xh and cj.xq=1 and cj.km==3) as km3 from jbxx where 班級或專業條件> order by jbxx.xh

  Java語言有“編寫一次,隨處運行”的跨平臺能力,具有強大的網絡能力。Oracle是一種關系型的大型數據庫,可在多種硬件平臺上運行,支持多種操作系統,支持大數據庫、多用戶的高性能的事務處理,以其強大的功能和穩定性而著稱。因此建議用Java結合Oracle編寫程序。下面給出在Java語言中的具體實現過程。

  注:為了簡述方便,下面的程序已簡略,在實踐應用中,還要考慮很多問題,并且一般把它做成bean來用。

  程序如下:

  import java.sql.*;//導入類庫
  public class sjk{
    public static void main(String[] args)  throws Exception {
  Connection conn;
     try
   {
       Class.forName("oracle.jdbc.driver.OracleDriver");
       String sourceURL="jdbc:oracle:thin:@server:1521:orcl";
       String user="scott";
       String password="tiger";
       conn=DriverManager.getConnection(sourceURL,user,password);
       Statement stmt = conn.createStatement();
       Statement stmt1 = conn.createStatement();
       String sql_km="select no,mc from km";
      // String bb_tj="0441010101";以后實際使用要加上班或級或專業條件.
       ResultSet rs_km = stmt.executeQuery(sql_km);
       String title="  學號     姓名   ";
       String sql1="( select cj.cj from cj where cj.xh=jbxx.xh and cj.xq=1 and cj.km=";
       String sql=" select jbxx.xh,jbxx.xm ,";
        while (rs_km.next())
        {
         String sql_sum=" select sum(cj) as s1 from cj where "+
            " cj.xq=1 and cj.km="; //在實際使用中要加上班級條件
        sql_sum=sql_sum+rs_km.get

[1] [2] 下一頁

正在看的ORACLE教程是:Oracle動態交叉表生成。String(1);//統計該班該科目的總成線。
        ResultSet rs_sum = stmt1.executeQuery(sql_sum);
        rs_sum.next();
         //統計符合班級條件的成績CJ總和,如果為0則認為該班不開設該科目,略掉。
          if (rs_sum.getInt(1)>0)
          {
                title = title + rs_km.getString(2);
       sql = sql + sql1 + rs_km.getString(1) + ") as km" + rs_km.getString(1)+" ,";
  //構造動態語句.
             }
             rs_sum.close();
           } //獲取動態科目及名稱
       sql=sql.substring(1,sql.length()-1); //去掉最后一個逗號。
       sql=sql+"from jbxx order by jbxx.xh"; //在實際使用中要加上班級條件
       ResultSet rs=stmt.executeQuery(sql);
    ResultSetMetaData data = rs.getMetaData();
    int col=data.getColumnCount(); //獲取所有曾生成的字段,實行動態輸出。
    System.out.println(title);
  
       while (rs.next())
       {
         for  (int i=1;i=col;i++)
         {
       if (i==col)
       System.out.println(rs.getString(i));
       else
        System.out.print(rs.getString(i)+"  ");
         }
       }
  System.out.println("數據已打印完成!");
  rs_km.close();
  rs.close();
  stmt1.close();
  stmt.close();
  conn.close();
  
   ///////////////////////////
   }
        catch (Exception  e) {
          System.err.println(e);
   }
  }
  }
  
  以上代碼已在j2sdk1.4.2,Oracle 8.1.7編譯通過,在應用中,一般需要把其做成bean去使用,還可加入學期、班級的動態變量,即可獲得全動態的的數據了。

上一頁  [1] [2] 

標簽:南平 池州 股票投資 聊城 嘉峪關 通化 南平 襄陽

巨人網絡通訊聲明:本文標題《Oracle動態交叉表生成》,本文關鍵詞  Oracle,動態,交叉表,生成,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle動態交叉表生成》相關的同類信息!
  • 本頁收集關于Oracle動態交叉表生成的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲日本成人在线观看| 精品视频资源站| 久久婷婷成人综合色| 亚洲综合色网站| aaa亚洲精品| 国产精品人人做人人爽人人添| 久久精品久久99精品久久| 欧美精品777| 黄色精品一二区| 国产精品国产精品国产专区不蜜| 成人一区二区三区在线观看| 一级中文字幕一区二区| 91高清视频在线| 狠狠色丁香久久婷婷综合丁香| 日韩精品最新网址| 成人免费视频app| 亚洲精选免费视频| 久久日韩粉嫩一区二区三区| 成人免费视频播放| 亚洲精品国产高清久久伦理二区| 欧美精品第1页| www.欧美.com| 欧美日韩一级黄| 麻豆91精品视频| 国产精品网站导航| 成人高清视频在线| 亚洲乱码一区二区三区在线观看| 欧美猛男超大videosgay| 粉嫩在线一区二区三区视频| 亚洲视频在线一区| 久久久蜜臀国产一区二区| 在线免费观看日本一区| 成人三级伦理片| 国产精品自拍在线| 日韩电影免费一区| 亚洲欧美怡红院| 久久久久久久久久久黄色| 欧美日本高清视频在线观看| 在线观看av一区| 国产91精品露脸国语对白| 麻豆成人综合网| 奇米影视一区二区三区| 一区二区三区日韩精品视频| 国产在线播放一区二区三区| 亚洲国产成人av网| 午夜在线成人av| 日韩电影免费一区| 国产美女在线精品| 成人av网址在线观看| 91麻豆自制传媒国产之光| 成人一区二区三区视频在线观看| 国产成人超碰人人澡人人澡| 不卡一区二区三区四区| kk眼镜猥琐国模调教系列一区二区 | 亚洲六月丁香色婷婷综合久久| 中文字幕欧美一| 天堂蜜桃91精品| 国产精品911| 欧美电影一区二区| 久久久精品中文字幕麻豆发布| 国产欧美日产一区| 亚洲午夜羞羞片| 激情小说欧美图片| 色菇凉天天综合网| 日韩欧美国产wwwww| 午夜私人影院久久久久| 国产精品综合视频| 在线播放中文一区| 中文字幕亚洲成人| 免费观看日韩电影| 94-欧美-setu| 久久久久国产精品人| 亚洲精品国产精华液| 国产一区二区三区最好精华液| 91免费观看视频在线| 久久一留热品黄| 午夜天堂影视香蕉久久| 成人精品一区二区三区四区| 日韩精品一区二区三区三区免费| 亚洲婷婷综合色高清在线| 成人一区二区三区视频在线观看 | 亚洲h动漫在线| 中文字幕巨乱亚洲| 亚洲永久免费视频| 成+人+亚洲+综合天堂| 国产一级精品在线| 国产999精品久久久久久| 色香色香欲天天天影视综合网| 欧美日韩亚洲综合一区 | 久久国产人妖系列| 亚洲综合视频网| 国产精品入口麻豆九色| 国产精品久久久久久一区二区三区| 国产日韩欧美综合一区| 国产精品久久久一区麻豆最新章节| 久久一留热品黄| 亚洲欧美偷拍另类a∨色屁股| 亚洲一区二区三区美女| 六月婷婷色综合| 成人黄色av网站在线| 欧美日韩免费高清一区色橹橹| 欧美这里有精品| 久久先锋影音av| 亚洲视频狠狠干| 蜜桃视频在线观看一区| 国产成人午夜高潮毛片| 欧美精品一级二级| 亚洲男女毛片无遮挡| 九九精品一区二区| 不卡一区二区在线| 久久蜜桃一区二区| 天天影视涩香欲综合网 | 最新日韩av在线| 欧美日韩成人综合| 日本va欧美va精品发布| 91精品福利视频| 亚洲日本在线视频观看| 美脚の诱脚舐め脚责91| 中文字幕国产精品一区二区| 亚洲国产精品成人久久综合一区| 亚洲国产成人私人影院tom| 久久精品国产一区二区三区免费看| 国产99久久久国产精品潘金 | 欧美男女性生活在线直播观看| 久久久久久黄色| 国产精品正在播放| 精品国产一区a| 国产成人啪免费观看软件| 精品日韩在线一区| 亚洲欧美日韩一区二区 | jizz一区二区| 91精品国产入口| 日韩电影在线一区二区| 欧美午夜在线观看| 亚洲免费高清视频在线| 国产精品综合二区| 91麻豆精品一区二区三区| 中文字幕亚洲一区二区va在线| 国产一区二区在线看| 天堂在线一区二区| 精品国产露脸精彩对白| 成人免费视频视频在线观看免费 | 久久这里都是精品| 91亚洲国产成人精品一区二三 | 91精品国产91久久久久久最新毛片| 国产综合久久久久久鬼色| 久久久午夜电影| 欧美日韩电影在线| 国产米奇在线777精品观看| 亚洲成人中文在线| 成人欧美一区二区三区在线播放| 精品国产精品一区二区夜夜嗨| 91网站最新地址| 激情综合色综合久久| 日韩精品电影在线| 欧美va在线播放| 99久久婷婷国产综合精品| 色视频成人在线观看免| 欧美福利电影网| 日韩精品久久理论片| 亚洲成人av一区二区| 日韩福利视频网| 久久精品国产99国产| 亚洲国产欧美在线| 亚洲精品国产一区二区精华液| 欧美一级爆毛片| 日韩免费观看高清完整版| 欧美一区二区精品在线| 7799精品视频| 欧美视频一区二区三区在线观看| 91福利国产成人精品照片| 欧美日韩五月天| 制服丝袜亚洲网站| 久久久亚洲精华液精华液精华液| 国产午夜精品一区二区三区四区| 国产欧美日韩在线| 1000精品久久久久久久久| 日本大胆欧美人术艺术动态 | 亚洲乱码一区二区三区在线观看| 亚洲乱码日产精品bd| 五月开心婷婷久久| 蜜桃av一区二区三区| 国产精品一区二区果冻传媒| 99久久精品免费观看| 日韩一区二区中文字幕| 激情小说亚洲一区| 国产精品福利在线播放| 亚洲电影中文字幕在线观看| 亚洲综合丝袜美腿| 国产黑丝在线一区二区三区| 色综合天天综合色综合av| 欧美一区二区三区在线观看 | 一本大道久久a久久综合婷婷| 久久久久久久久蜜桃| 亚洲视频综合在线| 六月丁香婷婷色狠狠久久| 91激情五月电影| 国产欧美一区二区精品性色| www.日本不卡| 国产一区久久久|