亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

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

Oracle動態交叉表生成

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

  范式下的Oracle數據庫設計

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

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

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

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

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

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

    由此看出,經數據規范化的數據雖然使數據冗余小,便于插入、刪除和更新,但如果直接輸出是不符合人們觀看習慣的,必需要把其輸出為上面表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| 91麻豆精品国产高清在线| 亚洲精品久久久中文字| 日韩女人做爰大片| 韩国毛片| 韩国毛片免费| 黄视频网站免费看| 亚欧成人乱码一区二区| 久久99青青久久99久久| 精品视频一区二区三区免费| 久久成人性色生活片| 日韩免费片| 国产91视频网| 亚州视频一区二区| 人人干人人草| 人人干人人插| 免费一级片在线| 999精品影视在线观看| 91麻豆tv| 欧美激情伊人| 日韩专区亚洲综合久久| 人人干人人插| 精品国产一区二区三区国产馆| 久久国产精品只做精品| 午夜在线亚洲| 成人免费高清视频| 国产伦久视频免费观看视频| 香蕉视频亚洲一级| 成人免费观看视频| 欧美大片aaaa一级毛片| 欧美另类videosbestsex高清| 午夜在线亚洲男人午在线| 精品视频在线看| 欧美国产日韩在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 午夜精品国产自在现线拍| 日韩欧美一及在线播放| 国产伦久视频免费观看 视频| 韩国三级视频在线观看| 日韩女人做爰大片| 精品国产三级a| 国产一区免费观看| 中文字幕一区二区三区精彩视频| 成人免费观看男女羞羞视频| 天天做人人爱夜夜爽2020| 国产视频一区在线| 国产网站麻豆精品视频| 香蕉视频久久| 二级片在线观看| 久久久久久久久综合影视网| 欧美激情一区二区三区在线| 国产麻豆精品免费视频| 日韩综合| 97视频免费在线| 亚洲精品中文一区不卡 | 黄视频网站在线观看| 午夜欧美成人香蕉剧场| 国产网站免费观看| 精品国产一区二区三区国产馆| a级毛片免费全部播放| a级精品九九九大片免费看| 欧美激情伊人| 日韩免费在线| 国产不卡高清在线观看视频| 色综合久久天天综合| 久久99中文字幕| 国产精品12| 欧美a级片视频| 久久精品店| 亚洲第一页乱| 精品视频在线观看一区二区三区| 成人免费一级毛片在线播放视频| 深夜做爰性大片中文| 日韩在线观看视频黄| 高清一级淫片a级中文字幕 | 日本在线不卡免费视频一区| 国产网站免费视频| 99色视频在线观看| 日韩中文字幕在线观看视频| 成人免费高清视频| 青青久久精品| 一级女性全黄久久生活片| 九九九在线视频| 欧美国产日韩在线| 午夜激情视频在线播放| 韩国毛片免费大片| 午夜久久网| 91麻豆精品国产自产在线观看一区 | 欧美激情一区二区三区在线| 久久国产精品自由自在| 精品视频免费观看| 日本特黄特色aa大片免费| 国产91精品一区| 国产伦精品一区三区视频| 99久久精品国产高清一区二区 | 国产精品免费久久| 四虎影视库| 黄视频网站在线看| 你懂的在线观看视频| 欧美激情一区二区三区视频 | 99热热久久| 夜夜操网| 青青青草影院 | 久久国产一区二区| 国产网站免费视频| 999久久66久6只有精品| 亚洲 欧美 成人日韩| 999精品影视在线观看| 精品久久久久久免费影院| 亚洲 激情| 午夜精品国产自在现线拍| 国产伦理精品| 日本在线不卡视频| 国产网站免费视频| 四虎影视库国产精品一区| 亚洲 激情| 欧美激情中文字幕一区二区| 欧美a级片视频| 亚洲天堂一区二区三区四区| 国产亚洲精品aaa大片| 久久久久久久久综合影视网| 国产精品12| 精品国产亚洲人成在线| 免费国产在线观看不卡| 日韩在线观看网站| 99色视频在线观看| 精品国产一区二区三区久| 久久国产一久久高清| 成人高清视频免费观看| 99久久精品国产免费| 日韩中文字幕一区二区不卡| 91麻豆国产| 成人影院久久久久久影院| 青草国产在线| 国产不卡福利| 国产视频一区在线| 精品国产一区二区三区久| 天天色成人| 你懂的在线观看视频| 999精品视频在线| 精品国产亚洲人成在线| 精品视频在线观看一区二区| 国产成人精品一区二区视频| 一级女性全黄生活片免费| 精品久久久久久影院免费| 青青青草影院 | 国产精品免费久久| 99久久精品国产高清一区二区 | 亚洲 男人 天堂| 青青久热| 人人干人人插| 亚洲第一页乱| 精品视频在线观看一区二区| 久久99中文字幕久久| 欧美国产日韩久久久| 精品久久久久久中文字幕2017| 亚久久伊人精品青青草原2020| 毛片高清| 精品在线观看一区| 美女免费精品高清毛片在线视| 四虎影视久久久| 青草国产在线| 久久成人性色生活片| 国产网站免费观看| 可以在线看黄的网站| 国产91精品一区| 国产a免费观看| 精品视频一区二区| 亚洲 国产精品 日韩| 国产一区二区精品在线观看| 九九精品久久久久久久久| 四虎久久精品国产| 一级女性大黄生活片免费| 美国一区二区三区| 日韩在线观看免费完整版视频| 国产伦理精品| 欧美爱色| 成人a大片高清在线观看| 欧美另类videosbestsex视频| 欧美大片aaaa一级毛片| 午夜家庭影院| 国产韩国精品一区二区三区| 国产高清在线精品一区二区| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产91精品一区| 午夜激情视频在线播放| 沈樵在线观看福利| 九九精品久久久久久久久| 午夜欧美成人久久久久久| 你懂的日韩| 久久99爰这里有精品国产| 日韩一级黄色| 国产高清在线精品一区a| 九九免费高清在线观看视频| 久久久久久久男人的天堂|