`

database 关联操作

阅读更多
1.SQL join
a:从一个和多个表中,根据指定的字段的关联关系,查询出数据
b:join 分为
   inner join: 返回在两个表中至少一个匹配的行
  left join:返回左表中的所有行,即使右表没有匹配的记录
  right join:返回右表中的所欲行,即使左表没有匹配的记录
  full join: 返回那些在其中一个表中匹配的行

  C:例子




2.行转列的例子

2.1 成绩表 将其 通过行转列转化如下结果
create table score(username varchar(100),
                    subject varchar(100),
                    score float);
初始化数据:
insert into score(username,subject,score)values('aa','chinese',100.0);
insert into score(username,subject,score)values('aa','math',90.0);
insert into score(username,subject,score)values('aa','eng',10.0);
insert into score(username,subject,score)values('ab','chinese',30);
insert into score(username,subject,score)values('ab','math',12);

要求输出
username chinese  math, eng
        aa        100.0   90.0 10.0
        ab        30      12    0


这样的结果。

mysql> select username,
      (case subject when 'chinese' then score else 0 end) as 'Chinese' , (case subject when 'math' then score else 0 end) as 'Math',
  (case subject when 'eng' then score else 0 end) as 'Eng'
  from score;
+----------+---------+------+------+
| username | Chinese | Math | Eng  |
+----------+---------+------+------+
| aa       |     100 |    0 |    0 |
| aa       |       0 |   90 |    0 |
| aa       |       0 |    0 |   10 |
| ab       |      30 |    0 |    0 |
| ab       |       0 |   12 |    0 |
+----------+---------+------+------+

select a.username,
       ifnull(sum(a.Chinese),0) as 'Chinese',
       ifnull(sum(a.Math),0) as 'Math',
       ifnull(sum(a.Eng),0) as 'Eng'

from(
select username,
    (case subject when 'chinese' then score else 0 end) as 'Chinese' ,
     (case subject when 'math' then score else 0 end) as 'Math',
    (case subject when 'eng' then score else 0 end) as 'Eng'
   from score 
) a
group by a.username


或者修改为:

select username,
   max(case subject when 'chinese' then score else 0 end) as 'Chinese' , max(case subject when 'math' then score else 0 end) as 'Math',
    max(case subject when 'eng' then score else 0 end) as 'Eng'
   from score group by username;



3.列转行的例子 通过union all
select ProgrectName,'Oversea'as supply,OverseaSupply as total from  ProgrectDetail
union all
select ProgrectName,'Native' as supply ,NativeSupply as total from  ProgrectDetail
union all
select ProgrectName,'South' as supply ,SouthSupply as total from  ProgrectDetail
union all
select ProgrectName,'North'as supply,NorthSupply as total from  ProgrectDetail;



4.删除重复行的例子
  a:先创造一个空的备份表
   create table ProgrectDetail_bak where 1=0;
  b:将源表中的数据group by 出来 insert 新表中
 insert into ProgrectDetail_bak
select a.ProgrectName ,a.OverseaSupply,a.NativeSupply,a.SouthSupply,a.NorthSupply
from(
select   ProgrectName ,OverseaSupply,NativeSupply,SouthSupply,NorthSupply,count(*) as cn
from ProgrectDetail
group by ProgrectName ,OverseaSupply,NativeSupply,SouthSupply,NorthSupply
)a



  c: 删除源表
  drop table ProgrectDetail
  d:将备份表重命名为源表
  alter table ProgrectDetail_bak rename to ProgrectDetail;
a: 首先为原来的表添加伪列


5.构造伪列
SELECT @rownum:=@rownum+1 AS rownum, ProgrectDetail.*
   FROM (SELECT @rownum:=0) r, ProgrectDetail

分享到:
评论

相关推荐

    AXPPacker+DataBaseEditor

    同时,DataBaseEditor为用户提供了一种直观的方式来管理这些数据库,进行数据的添加、删除、修改等操作。 总之,AXPPacker和DataBaseEditor是开发和管理数据库应用的实用工具。前者专注于应用程序的打包,后者则...

    各种数据库连接工具Database4,用起来很方便

    在查询功能上,Database4内置了SQL编辑器,支持编写和执行复杂的SQL语句,包括SELECT、INSERT、UPDATE、DELETE等操作,同时提供自动完成和语法高亮功能,提高开发人员的编写效率。用户还可以通过查询结果集进行排序...

    Office 2016 Access DataBase Engine 64位

    "Office 2016 Access Database Engine 64位" 是微软Office 2016版本中的一个组件,它主要用于处理和操作Access数据库文件(.mdb和.accdb格式)。这个64位版本是专为64位操作系统设计的,允许用户在64位环境下连接和...

    sampledatabase.zip

    这些表之间的关联可以通过外键实现,使你可以进行复杂的联表查询,以获取更丰富的信息。 在实际应用中,你可以根据需要对这些数据进行查询、更新和分析,例如,找出最畅销的产品、统计用户的购买行为、或者通过JOIN...

    j2EE对oracle数据库Dept和Emp进行关联操作

    7. **查(SELECT)**: 查询操作,可能涉及JOIN操作来获取部门和其关联员工的信息: ```java String selectSql = "SELECT d.dept_id, d.dept_name, e.emp_id, e.emp_name FROM Dept d JOIN Emp e ON d.dept_id = e....

    android ormlite多表关联实例

    本实例将深入探讨如何在Android项目中使用ORMLite实现多表关联操作。 首先,我们需要理解ORMLite的基础概念。ORMLite允许我们将Java对象映射到数据库表,通过注解或配置文件定义类与表的关系。当我们创建一个实体类...

    delphi6database编程

    4. 数据绑定:Delphi 6中的数据绑定机制允许开发者将数据库字段直接与控件关联,如将TDBEdit与数据库字段绑定,数据的更改会实时反映在界面上,极大地提高了开发效率。 5. SQL查询:Delphi 6支持编写SQL语句来操作...

    Android Database SQLite 多表操作源码

    SQLite支持多种数据库操作,包括创建、查询、更新和删除等,尤其在处理多表操作时,能够帮助开发者实现复杂的数据关联和业务逻辑。本源码示例专注于Android数据库SQLite的多表操作,适用于那些希望深入理解并实践...

    Beginning Database Design 数据库入门

    表与表之间可以通过键(Key)建立关联,如主键和外键。理解这些概念对于设计高效的数据模型至关重要。 数据库设计的首要步骤是需求分析,这涉及到识别用户对数据的需求,确定需要存储的信息类型以及它们之间的关系...

    Laravel开发-laravel-database-helpers

    时间相关的操作在数据库管理中很常见,`laravel-database-helpers` 可能包含了对日期和时间的处理,如时间戳转换、时区处理等,使得时间相关的操作更加直观。 10. **数据库迁移** 在项目迭代过程中,数据库结构的...

    AccessDatabaseEngine_X64

    在压缩包子文件的文件名称列表中,我们看到"AccessDatabaseEngine_X64.exe",这是安装程序的可执行文件,用户可以通过运行这个文件在他们的64位操作系统上安装Access数据库引擎。安装过程中,系统会添加必要的驱动...

    modern management database PPT

    而数据挖掘技术如关联规则、聚类和分类,能从海量数据中发现隐藏模式,辅助业务决策。 安全性是数据库管理不可忽视的一环。PPT可能涵盖了访问控制、加密、审计和防火墙等措施,以保护数据免受未授权访问和篡改。...

    如何实现多数据表关联呢?Delphi的方法实例..rar

    10. **使用ADO或BDE**:Delphi支持两种数据访问技术:Borland Database Engine (BDE) 和 ActiveX Data Objects (ADO)。BDE适用于较旧的数据库系统,而ADO则更现代,支持更多的数据库驱动。两者都可以用来实现多表...

    Realm Building Modern Swift Apps with Realm Database

    4. ** CRUD操作**:掌握创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据的基本方法,包括异步操作和事务处理。 5. ** 查询语言**:学习 Realm 的强大查询语法,包括过滤、排序、分组和连接,...

    database-installation-guide-linux.pdf

    Oracle Database 12c Release 2(12.2)安装指南针对Linux系统是一份详细的英文指南,用于指导用户如何在Linux操作系统上安装和配置Oracle Database 12c版本。该指南涉及了安装前的准备、安装过程、配置、以及安装后...

    AccessDatabaseEngine2010.rar

    标签“access”、“microsoft.ACE.ol”进一步确认了讨论的主题,即与Microsoft Access数据库及其关联的OLEDB接口有关的技术问题。 压缩包中的“AccessDatabaseEngine.exe”文件很可能是用于安装Access Database ...

    搭建springboot与redis集群关联操作.doc

    搭建 Spring Boot 与 Redis 集群关联操作 本文档主要讲解如何搭建 Spring Boot 与 Redis 集群的关联操作,包括搭建 Redis 集群、Spring Boot 配置调用 Redis、实例代码操作和运行结果展示。同时,也会涉及到 Redis ...

    Laravel开发-database

    模型与表之间的关联是通过定义模型类中的属性和方法实现的。例如,`protected $table = 'users';`用来指定模型对应的数据库表。`public $timestamps = true;`则表示Laravel会自动管理`created_at`和`updated_at`这两...

    RapidMiner9.3 关联分析+数据可视化.zip

    在RapidMiner中,我们可以使用“Apriori”或“Frequent Itemset Mining”操作来执行关联规则学习。这些操作帮助我们找出哪些商品经常一起被购买,从而为市场营销策略提供依据。关联分析通常涉及到支持度、置信度和...

    Microsoft Access Database Driver.rar

    【Access EF6】标签暗示了这个驱动与Entity Framework 6的关联。Entity Framework是微软的一款开源对象关系映射(ORM)框架,它允许开发者使用.NET语言(如C#或VB.NET)来操作数据库,而无需编写SQL查询。EF6支持...

Global site tag (gtag.js) - Google Analytics