欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 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動態交叉表生成的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    久久久99久久| 韩国精品在线观看| 久久电影网站中文字幕| 国产一区二区精品久久91| 91蝌蚪porny成人天涯| 亚洲av无码国产精品久久| 男人av资源站| 51精品秘密在线观看| 久久久久久电影| 国内精品伊人久久久久av一坑| 成人影视免费观看| 欧美电影免费提供在线观看| 亚洲色图第一区| 精品一区二区av| 亚洲av网址在线| 在线精品视频免费播放| 久久麻豆一区二区| 国产一区 二区| 精品国产精品国产精品| 精品久久久久久久久久久院品网| 亚洲综合色自拍一区| 高清不卡在线观看av| aaaaa一级片| 欧美精品一区二区蜜臀亚洲| 亚洲成人激情综合网| 丰满放荡岳乱妇91ww| 精品国产乱码久久久久久鸭王1 | 91麻豆蜜桃一区二区三区| 色系网站成人免费| 久久精品人人爽人人爽| 奇米精品一区二区三区四区| 美女流白浆视频| 色呦呦网站一区| 亚洲一区二区三区视频在线播放| 成人激情动漫在线观看| 中文字幕有码在线播放| 欧美一级在线观看| 午夜私人影院久久久久| 自拍偷拍亚洲天堂| 精品卡一卡二卡三卡四在线| 国产美女视频一区| 色哟哟国产精品免费观看| 午夜在线电影亚洲一区| 欧美大波大乳巨大乳| 精品少妇一区二区三区在线视频| 国产在线精品免费| 色国产精品一区在线观看| 国产精品乱码人人做人人爱| 国产一区二区三区蝌蚪| 欧洲av一区二区嗯嗯嗯啊| 日韩电影免费一区| 精品视频站长推荐| 欧美高清一级片在线| 五月天久久比比资源色| 免费中文字幕av| 中文字幕+乱码+中文字幕一区| 国产成人精品www牛牛影视| 日韩av网站在线播放| 国产欧美一区二区精品忘忧草| 国产毛片精品视频| 欧美视频日韩视频| 亚洲小说欧美激情另类| 在线视频第一页| 一级中文字幕一区二区| 97人妻人人揉人人躁人人| 一区二区在线观看视频在线观看| 无码人妻丰满熟妇啪啪网站| 欧美一区二区三区视频在线观看| 国产精品亚洲人在线观看| 成年人午夜剧场| 日韩电影在线免费| 色综合一区二区三区| 亚洲最新视频在线播放| a资源在线观看| 亚洲大型综合色站| 三级av在线免费观看| 亚洲综合偷拍欧美一区色| jizzjizz日本少妇| 石原莉奈在线亚洲三区| 欧美黄色高清视频| 亚洲午夜私人影院| 中文字幕影片免费在线观看| 久久久久亚洲蜜桃| www.美色吧.com| 中文字幕在线免费不卡| 亚洲香蕉中文网| 久久综合999| aa级大片欧美| 4438x成人网最大色成网站| 成人av网在线| 欧美一区二区三区视频在线| 99精品国产热久久91蜜凸| 91精品黄色片免费大全| 99久久精品国产一区| 国产欧美一区二区精品秋霞影院| 一区二区三区少妇| 亚洲一区国产视频| 91成人在线免费观看| 国产福利不卡视频| 久久亚洲春色中文字幕久久久| a级一a一级在线观看| 亚洲在线观看免费视频| 色婷婷激情一区二区三区| 国产成人高清在线| 久久免费看少妇高潮| 爱爱免费小视频| 日韩高清欧美激情| 9191成人精品久久| 国产精品日日摸夜夜爽| 亚洲自拍偷拍九九九| 欧美综合一区二区三区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 日韩一区二区三区四区在线| 国产在线精品国自产拍免费| 久久这里只有精品6| 一本加勒比北条麻妃| 奇米精品一区二区三区在线观看| 日韩一级黄色片| av亚洲精华国产精华精华| 国产精品国产三级国产普通话蜜臀 | 91porn在线视频| 国产999精品久久久久久绿帽| 久久久亚洲高清| 男人的天堂av网| 国产一区二区三区香蕉| 日本一区二区三区高清不卡| 国产精品久久久免费看| 国产成人午夜片在线观看高清观看| 久久精品夜色噜噜亚洲a∨| 性少妇xx生活| 奇米精品一区二区三区四区| 欧美成人乱码一区二区三区| ass精品国模裸体欣赏pics| 伦理电影国产精品| 91精品在线免费观看| 欧美在线一级片| 青青草97国产精品免费观看无弹窗版 | 91精品国产综合久久香蕉麻豆| 艳妇乳肉豪妇荡乳xxx| 日韩精品乱码免费| 精品久久久久久久久久久久久久久久久 | 成人激情小说乱人伦| 亚洲精品你懂的| 欧美三级电影网站| av亚洲精华国产精华| 亚洲黄色录像片| 91麻豆精品久久久久蜜臀| 中国毛片在线观看| 国产麻豆午夜三级精品| 日韩一区在线看| 男人的午夜天堂| a美女胸又www黄视频久久| 亚洲综合精品久久| 日韩美女天天操| 羞羞在线观看视频| 99久久精品免费看国产 | 亚洲激情男女视频| 9191成人精品久久| 少妇愉情理伦三级| 99视频一区二区| 视频一区欧美日韩| 日本一区二区三区dvd视频在线| 一本到不卡精品视频在线观看| 国产白袜脚足j棉袜在线观看| 久久国产精品99精品国产| 国产精品久线在线观看| 欧美日本高清视频在线观看| 国产伦精品一区二区三区妓女下载| 亚洲欧美日韩一区二区| 色婷婷综合久久久久中文一区二区 | 国产精品视频看看| 少妇精品无码一区二区| 久草在线在线精品观看| 亚洲欧美精品午睡沙发| 日韩一区二区在线免费观看| 日韩av片在线免费观看| 国产精品91av| 国产麻豆9l精品三级站| 亚洲视频在线一区| 欧美tickle裸体挠脚心vk| 色综合久久99| b站大片免费直播| 国产美女精品在线| 亚洲一卡二卡三卡四卡无卡久久| 久久这里只有精品6| 欧美午夜电影网| 手机看片国产日韩| 一边摸一边做爽的视频17国产| 国产一区在线看| 亚洲国产中文字幕在线视频综合| 久久久电影一区二区三区| 欧美日韩精品系列| frxxee中国xxx麻豆hd| 亚洲欧美日本一区| 99精品久久久久久| 国产乱码一区二区三区| 亚洲.国产.中文慕字在线| 国产精品视频一二三区| 日韩一区二区三区电影在线观看 | 国内精品免费**视频|