一、横表和纵表
横表:通常指我们平时在数据库中建立的表,是一种普通的建表方式。
(主键、字段1、字段2......)如:时间、客户ID,基本通话费、漫游通话费,国内长途费、国际长途费....。
纵表:一般不多见,在表结构不确定的时候,如需增加字段的情况下的一种建表方式。
二、执行效率
横表:后台数据库管理员操作简单,直观,清晰可见,一目了然。但若要给横表中添加一个或者多个字段,就须重建表结构。
纵表:对于横表的弊端,纵表中只需要添加一条记录,就可以添加一个字段,所消耗的代价远比横表小。但是纵表的对于数据描述不是很清晰,而且会造成数据库数
量很多。在查询的时候用到group等函数会大大降低执行效率。纵表的初始映射要慢一些,纵表的变更的映射可能要快一些,如果只是改变了单个字段时,毕竟
横表字段比纵表要多很多。
横表结构: TEST_H2Z ID 姓名 语文 数学 英语 1 张三 80 90 70 2 李四 90 85 95 3 王五 88 75 90 转换后的表结构: ID 姓名 科目 成绩 1 张三 语文 80 2 张三 数学 90 3 张三 英语 70 4 李四 语文 90 5 李四 数学 80 6 李四 英语 99 7 王五 语文 85 8 王五 数学 96 9 王五 英语 88 横表转纵表SQL示例: SELECT 姓名,'语文' AS 科目,语文 AS 成绩 FROM TEST_H2Z UNION ALL SELECT 姓名,'数学' AS 科目,数学 AS 成绩 FROM TEST_H2Z UNION ALL SELECT 姓名,'英语' AS 科目,英语 AS 成绩 FROM TEST_H2Z ORDER BY 姓名,科目 DESC;