国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

縱表和橫表的概念及其相互轉(zhuǎn)換

2019-11-09 13:30:40
字體:
供稿:網(wǎng)友

橫表就是普通的建表方式,如表結(jié)構(gòu)為:主鍵、字段1、字段2、字段3...。 如果變成縱表后,則表結(jié)構(gòu)為: 主鍵、字段代碼、字段值。而字段代碼則為字段1、字段2、字段3...。  具體為電信行業(yè)的例子。以用戶帳單表為例,一般出賬時用戶有很多費用,其數(shù)據(jù)一般存儲為:時間,客戶ID,費用科目,費用。這種存儲結(jié)構(gòu)一般稱為縱表,其特點是行數(shù)多,字段少。縱表在使用時由于行數(shù)多,統(tǒng)計用戶數(shù)或?qū)τ脩暨M行分檔時還需要進行GROUP BY 操作,性能低,且操作不便,為了提高性能,通常根據(jù)需要將縱表進行匯總,形成橫表,比如:時間、客戶ID、基本通話費、漫游通話費、國內(nèi)長途費、國際長途費...。

橫表

優(yōu)點:一行表示了一個實體記錄,清晰可見,一目了然。

缺點:如果現(xiàn)在要給這個表加一個字段,那么就必須重建表結(jié)構(gòu)。

縱表

優(yōu)點:如果現(xiàn)在要給這個表加一個字段,只需要添加一些記錄。

缺點:數(shù)據(jù)描述不是很清晰,而且會造成數(shù)據(jù)庫數(shù)據(jù)很多。另如果需要分組統(tǒng)計,要先group by,較繁瑣。

結(jié)論

應該把不容易改動表結(jié)構(gòu)的設計成橫表,把容易經(jīng)常改動不確定的表結(jié)構(gòu)設計成縱表。 

縱表轉(zhuǎn)橫標

有如下縱表:

將其轉(zhuǎn)為橫表:

[sql] view plain copy PRint?在CODE上查看代碼片select  s.student_name,  sum(case s.subject when '語文' then s.score end)  as 語文,  sum(case s.subject when '數(shù)學' then s.score end)  as 數(shù)學,  sum(case s.subject when '英語' then s.score end)  as 英語  from score_vertical s  group by s.student_name  結(jié)果:

橫表轉(zhuǎn)縱表

有如下橫表:

將其轉(zhuǎn)為縱表:

[sql] view plain copy print?在CODE上查看代碼片select  s.student_name,  '語文' as 科目,  s.語文 as 成績  from score_horizontal s    union all     select  s.student_name,  '數(shù)學' as 科目,  s.數(shù)學 as 成績  from score_horizontal s    union all     select  s.student_name,  '英語' as 科目,  s.英語 as 成績  from score_horizontal s    order by student_name, 科目  

結(jié)果:


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 温宿县| 漯河市| 汉川市| 什邡市| 枞阳县| 荥阳市| 岳阳市| 秭归县| 宝山区| 龙州县| 台东市| 阿瓦提县| 信丰县| 金门县| 奉贤区| 余庆县| 尼勒克县| 汉川市| 隆德县| 邓州市| 霍城县| 如皋市| 仙桃市| 无极县| 金沙县| 民乐县| 南投市| 晋州市| 清水县| 平武县| 彭泽县| 五大连池市| 牟定县| 曲阜市| 阳信县| 区。| 靖江市| 海南省| 新野县| 三台县| 宁海县|