精华内容
下载资源
问答
  • 今天在论坛上看到有一个朋友问到了数据库表的行的问题,我给了一种解决方法,拼Sql脚本。 我想这个问题还是有点普遍性的,所以我把问题答案留在这里,供有类似问题的朋友参考。如果谁有其他的以及更好的办法...
    今天在论坛上看到有一个朋友问到了数据库表的行变列的问题,我给了一种解决方法,拼Sql脚本。
    我想这个问题还是有点普遍性的,所以我把问题和答案留在这里,供有类似问题的朋友参考。如果谁有其他的以及更好的办法,欢迎贴出代码,大家共同进步。
    原帖见:http://forums.microsoft.com/china/ShowPost.aspx?PostID=3059505&SiteID=15&mode=1
    问题:

    名称  价格  类型
    A    23   AA
    A    25   BB
    A    26   CC
    B    23   AA
    B    25   BB
    B    26   cc

    表示成为这种形式:
    名称  AA      BB    CC
    A      23      25      26
    B       23      25      26


    我的解答:
    其中表Tmp就代表你的那个表的名字:

    DECLARE @Sql VARCHAR(8000)
    DECLARE @TypeName VARCHAR(10)
    SET @Sql = 'SELECT 名称'
    DECLARE curType CURSOR READ_ONLY FORWARD_ONLY FOR (
     SELECT Distinct 类型 FROM TMP)
    OPEN curType
    FETCH NEXT FROM curType INTO @TypeName
    WHILE @@Fetch_Status = 0
    BEGIN
     SET @Sql = @Sql + Char(13) + Char(10) + ', Sum(Case When 类型=''' + @TypeName + ''' Then 价格 Else 0 End) AS ' + @TypeName

     FETCH NEXT FROM curType INTO @TypeName
    END
    CLOSE curType
    DEALLOCATE curType
    SET @Sql = @Sql + Char(13) + Char(10) + 'FROM Tmp GROUP BY 名称'
    PRINT @Sql
    Exec(@Sql)

     

    注意,要求你的表中名称和类型2个字段构成唯一索引,否则会把价格合计到一起,就不正确了。

    转载于:https://www.cnblogs.com/Ricky81317/archive/2008/03/25/1122165.html

    展开全文
  • 下面是建表和表数据SQL语句:新建一个tb.txt文本文件,把下面SQL语句复制,然后把文件后缀更改为.sql;然后到数据库运行: /* Navicat Premium Data Transfer Source Server : localhost Source Server ...
    • 首先需要创建一张表比如:
      在这里插入图片描述
    • 下面是建表和表数据的SQL语句:新建一个tb.txt文本文件,把下面的SQL语句复制,然后把文件后缀更改为.sql;然后到数据库运行:
    /*
     Navicat Premium Data Transfer
    
     Source Server         : localhost
     Source Server Type    : MySQL
     Source Server Version : 80015
     Source Host           : localhost:3306
     Source Schema         : infostat
    
     Target Server Type    : MySQL
     Target Server Version : 80015
     File Encoding         : 65001
    
     Date: 02/05/2020 21:15:07
    */
    
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for tb
    -- ----------------------------
    DROP TABLE IF EXISTS `tb`;
    CREATE TABLE `tb`  (
      `name` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `sub` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `result` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of tb
    -- ----------------------------
    INSERT INTO `tb` VALUES ('张三', '语文', '98');
    INSERT INTO `tb` VALUES ('张三', '数学', '114');
    INSERT INTO `tb` VALUES ('李四', '语文', '102');
    INSERT INTO `tb` VALUES ('李四', '数学', '108');
    INSERT INTO `tb` VALUES ('王五', '语文', '112');
    INSERT INTO `tb` VALUES ('王五', '数学', '118');
    INSERT INTO `tb` VALUES ('张三', '物理', '101');
    INSERT INTO `tb` VALUES ('李四', '物理', '98');
    INSERT INTO `tb` VALUES ('王五', '物理', '88');
    
    SET FOREIGN_KEY_CHECKS = 1;
    
    
    • 运行数据库文件:
      在这里插入图片描述
    • 具体的SQL语句:
    select `Name` as 姓名 ,
      max(case Sub when '语文' then Result else 0 end) 语文,
      max(case Sub when '数学' then Result else 0 end) 数学,
      max(case Sub when '物理' then Result else 0 end) 物理
    from tb
    group by `Name`
    
    • 运行结果:
      在这里插入图片描述
    展开全文
  • SQL语句解释大全--从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 --数据定义 CREATE TABLE --创建一个数据库表 DROP TABLE --...
  • mysql数据库中删除某一值重复全部行和只留一条 原创 2013年10月16日 00:29:34 4473 (1)mysql 数据库中删除某一值重复全部行(一个笔试题) 如果要求是多个字段重复...

    mysql数据库表中删除某一列值重复的全部行和只留一条

    原创 2013年10月16日 00:29:34


    (1)mysql 数据库中删除某一列值重复的全部行(一个笔试题)
    如果要求是多个字段重复的就在group后把所有要求重复的字段写上去
    表名:zp
    数据如下(都是int型的 sal:工资)

    要求删除sal列中重复的数据的全部行,即结果如下图:



    说下我的思路吧:
    主要分为3步:(1)select sal,count(sal) salcount from zp group by sal //按sal分组
    运行结果:
    +------+----------+
    | sal  | salcount |
    +------+----------+
    | 22.2 |        3 |
    | 88.8 |        1 |
    | 99.9 |        1 |
    +------+----------+
    (2)select t.sal from ((select sal,count(sal) salcount from zp group by sal) as t) where  t.salcount>1//找出分组后salcount大于1的sal值 
    运行结果:
    +----+
    | sal   |
    +----+
    |  22.2 |
    +-----+
    (3)delete from zp where sal in(select t.sal from ((select sal,count(sal) salcount from zp group by sal) as t) where  t.salcount>1);//从zp表中删除sal满足第二步结果的所有行
    ok:查询一下结果出现了哈哈
    mysql> select * from zp ;
    +----+------+
    | id | sal  |
    +----+------+
    |  4 | 88.8 |
    |  5 | 99.9 |
    +----+------+

    (2)只留一行
    表名:fatie 
    要求:删除name字段中值相同的重复行,且只留一行重复数据
     删除前(原表)如下:
    删除后:

    删除语句:delete from fatie where id not in(select t.id1 from ( (select max(a.id) id1 from fatie a group by a.name)as t));留下的是各组id号最大的,如果留的是最小的话换成min(a.id)就行了
    如果没有加上一个中间表t,即这句话 select t.id from去掉直接写成delete from fatie where id not in(select max(id) a.id1 from fatie a group by a.name);mysql会提示错误:You can't specify target table 'fatie' for update in FROM clause (不能先select出同一表中的某些值,再update这个表(在同一语句中)。这和文章上面的问题一样,也是加了个中间表才可以),网上是这样说的:也就是说将select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和oracle不会出现此问题。
    这样感觉效率会很低的吧,请教大神高效率的sql

    展开全文
  • 数据库的表结构dataset 内数据结构是一致
  • 数据库表存储存储比较

    千次阅读 2013-10-05 15:34:49
    存储法是将数据按照存储到数据库中,与存储类似; 3.1基于行的储存 基于行的存储是将数据组织成多个,这样就能在一个操作中找到所有的列。这种做法缺点是必须每次处理一整行,而不是只处理自己需要的列。...

    行列存储比较

    将表放入存储系统中有两种方法,而我们绝大部分是采用行存储的。行存储法是将各行放入连续的物理位置,这很像传统的记录和文件系统。然后由数据库引擎根据每个查询提取需要的列。列存储法是将数据按照列存储到数据库中,与行存储类似;

    1. 基于行的储存

    基于行的存储是将数据组织成多个行,这样就能在一个操作中找到所有的列。这种做法的缺点是必须每次处理一整行,而不是只处理自己需要的列。不过,这样在处理相同实体的两个或多个列的查询时能够取得更快的速度,而且可以提高更新、插入和删除操作的速度。
    基于行的存储系统可以进行并行处理,并且不需要模仿顺序文件系统,尽管有许多产品仍然在这样做。这种做法的缺点是,一旦确定了这种体系结构,那么使用的代码就不仅仅是“老式代码”,甚至比像“家族的诅咒”那样的代码还要难懂。
    Teradata是一种非常流行的数据仓库产品,它使用了散列处理,并且从一开始就具有并行处理机制。最开始的时候它是一种数据库机,不过当前版本采用的是在标准硬件上建立虚拟机的方式。它从设计上就总是采用并行处理方式。各结点根据实际需要彼此交谈,而不是由一个中央点来控制。万维网就是采用了这种工作方式,因此对程序员而言,这种模型应该不会太陌生。(结点)数量将数据值尽可能均匀地分散到硬件存储设备中。如果结点数改变了,那么系统会重新分布这些数据。由于采用逻辑地址代替了人们在传统索引模型中使用的物理地址,因此用户根本不会看到这些过程。故障结点会对其数据进行重新定位,并将自身从系统中删除。新结点则会从现有结点将数据传送到其本地存储区,刀片服务器上使用了一种建立在内存中的模型。这里没有索引;数据都是尽可能多地保存在主存储器中,并在这里进行扫描。

    2. 基于列的存储

    基于列的访问存在的缺点是载入速度通常比较慢,因为源数据在外部来源中是以行或者记录的形式表示的。这样做的优点是针对某个列中的值进行简单查询的速度非常快,需要的内部存储资源最少。这表示对某个列中特定值的搜索可以直接进入该列的存储区,而不需要扫描整行的数据。这样也使得数据压缩变得更容易,因为一个列中的数据通常具有相同的数据类型。这种体系结构在处理数据仓库使用的海量数据时没有问题,但不适合需要进行大量以行的方式进行访问和更新操作的联机事物处理。就是这种数据库之一。在由一万亿行组成的测试数据集中,输入数据共很明显,这是一种适合数据仓库的技术。这种技术虽然在压缩和快速访问方面有优势,但也存在插入操作复杂的缺点。
    引擎也采用了一种基于列的处理方式,但是它还对值进行标记,以获得更高的速度和更好的数据压缩效果。它们使用一种专用的位向量方案,可以在压缩的状态下进行搜索。这种技术非常适合档案处理,但是必须将标记恢复成其原始数据值才能显示,以及在表达式内使用。不过,在压缩方面鼓励将一个数据列分解成更多更详细的列。
    展开全文
  • 默认已选择数据库crashcourse,其中products为数据库中的】 检索单个:SELCET prod_name FROM products;检索多个:SELCET prod_name, prod_id FROM products;检索所有:SELCET * FROM products; ...
  • 现在我的数据库中有两个一个是学生学号加姓名,一个是学号加各科成绩,两个数据如下 最后效果图如下 代码如下(注意我们是直接操作数据库,生成视图。由于本人也是菜鸟,所有就不胡乱给大家科普类...
  • 请问,如何在一张表中插入一数据时,自动填写该行序号且不重复。序号格式为(字母、数字下划线 中的一个或多个组成)。 求一个示例代码!谢谢!
  • mysql数据库管理系统管理数据库中的库,而在库中存在着许多的表结构,是包含数据库中所有数据数据库对象。数据在组织方式与在电子表格中相似,都是按行和形式组织。其中每一行代表一条唯一...
  • 大多数数据库系统存储一组数据记录,这些记录由表中的列和行组成。字段是列和行的交集:某种类型单个值。 属于同一列的字段通常具有相同数据类型。例如,如果我们定义了一个包含用户数据的表,那么所有用户名...
  • 查询数据库中的表 ...查询数据库中的表 select * from syscat.tables where TYPE='T' ...sysibm.syscolumns:表中存放系统中所有表的数据的描述信息,系统为db2里定义的每个表的每一建立一条记录。
  • 数据库基础学习1——数据库和表的创建基本操作 E-R模型 当前物理的数据库都是按照E-R...关系转换为数据库表中的一个 *在关系型数据库中就是一个对象。也就是在一个表中的某个属性在另外一个表能查询到多
  • 数据库和表的设计

    2021-06-07 09:49:45
    实体就是数据库中所要表示的客观世界中存在的事物 实体完整性将定义为特定表的唯一实体,它规定表的每一记录在表中是唯一的 实体完整性在表中的约束体现为:主键约束,唯一约束, 约束种类 功能描述 ...
  • 在达梦数据库中表的类型有很多种。传统的普通表,堆表,他们都是以的方式来进行存储的,存储是以记录为单位进行存储的,数据页面中存储的是完整的若干条记录。然而随着大数据的发展,有大量以查询为主的分析型...
  • 列存储不同于传统的关系型数据库,其数据在表中是按行存储的,列方式所带来的重要好处之一就是,由于查询的选择规则是通过列来定义的,因此整个...传统的行存储和列存储的区别 1、数据是按行存储的 2、没有索引的查
  • 联系: 视图(view)是在基本表之上建立的表,它的结构(即所定义的内容(即所有数据)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象在...
  • 数据库动态

    2021-06-13 10:56:03
    前言: ...说明:测试使用我们使用简单用户课程结构,方便大家熟悉下行转列的原理。 结构 表中数据 静态 查询SQL: ​​select id,name ,sum(case course when '数学' ...
  • 创建一个表中列的顺序在某些程度上对性能会有一定影响。(表中的列有数据) Oracle对数据存储结构ROW HEADER(行头)COLUMN DATA(数据)。ROW HEADER存储信息是一个FLAG BYTE,...
  • 数据库中表散列

    2017-07-26 10:54:00
    数据库中的散列法是使用计算值来分配表格数据方法,它比在整个索引中搜索要好多。一个哈希散列答应你在数据库表格中存储数据,以便这些行的要害计算相同值存储在相同位置。 只有那种数据量超大数据库才...
  • Oracle对数据存储结构ROW HEADER(行头)COLUMN DATA(数据)。ROW HEADER存储信息是一个FLAG BYTE,一个LOCK BYTE COLUMN,COUNT.COLUMN DATA包含COLUMN LENGTHCOLUMN DATA.  创建一个表中...
  • 开发环境版本:QtCreator5.12.1 + Windows10系统 + MSVC2017_64bit + Oracle12c2数据库 ————在 MySQL 数据库 Sqlite 数据库中... 向数据库中插入88180 数据,每数值为 1~180 , 如下图所示为Oracle数...
  • 数据库中表的基本操作

    千次阅读 2006-11-13 12:35:00
    数据在表行和列的格式组织排列的,每行代表惟一的一条记录,而每列代表记录的一个域. 关系模型与SQL表的对应关系:关系模型==SQL表关系名==表名关系==表关系模式==表的定义属性==表的列或字段属性名==字段名或...
  • 存储法是将数据按照存储到数据库中,与行存储类似,下图是两种存储方法的图形化解释。 应用行式存储的数据库系统称为行式数据库,同理应用式存储的数据库系统称为式数据库。随着式数据库的发展,传统...
  • 数据库中表中关系

    2017-01-17 23:12:23
    在这种关系,A 表中的可以匹配 B 表中的多行,但是 B 表中的只能匹配 A 表中的。例如,publishers  titles 之间具有一对多关系:每个出版社出版很多书,但是每本书名只能出自一个出版社。 ...
  • 数据库中模式基本表的关系

    千次阅读 2016-12-01 18:12:33
    模式与数据库、数据库中表的关系: 1个数据库下,可以有多个模式。 1个模式下,可以有0个或多个表 。 首先我来做一个比喻,什么是User,什么是Database,什么是Schema,什么是Table,什么是,什么是...
  • 项目涉及到nosql建表等等。 而nosql是数据库,没有接触过。于是查了很多资料,浪费了很多时间。...这个存储在电脑内存(RAM)存储(硬盘)。虽然内存硬盘在机制上不同,电脑操作系统是以同样方式存

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,030
精华内容 2,812
关键字:

数据库中表的行和列