首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

利用EF Core的Join进行多表查询

数据库的设计 人表 宠物表 通过表可以知道,宠物通过Owner指向主人的Id。 问题来了,我要和故事开头一样,老公-狗,老婆-猫,对应起来,怎么查询呢? 有同学说这还不简单?两个遍历一下不就行了。...首先 取出 List集合,再根据宠物的主人Id去查找对应的主人信息就好了。 如果这样设计,那么将会执行3次查询: l  查出所有的宠物。 l  查出阿猫的主人。 l  查出阿狗的主人。...数据量不大还好,数据量要是大一点这是非常影响速度的。这时,我们可以用到EF Core所有的Join方法进行多表查询。...好处 原本需要进行3次查询的,用了Join方法后一次查询即可取到所需要的结果。我们看看这条Sql语句的样子: 我们看到其实这个需求是EF通过再sql语句中执行INNER JOIN实现的。...完整项目代码: https://github.com/liuzhenyulive/EF-CORE-JOIN-Demo 您的支持是我最大的动力,如果满意,请帮我点击推荐。

4.7K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ①【数据库操作】 MySQL数据库的查询、创建、删除、使用。

    数据操作语言,用来对数据库表中字段进行增删改 ③DQL:数据查询语言,用来查询数据库中表的记录 ④DCL:数据控制语言,用来创建数据库用户,控制数据库的访问权限 关系型数据库(RDBMS):建立在关系模型基础上...,由多张相互连接的二维表组成的数据库。...特点: ①使用表存储数据,格式统一,便于维护 ②使用SQL语言操作,标准统一,使用方便 数据库的查询、创建、删除、使用。...DDL - 操作数据库: 查询数据库 ①查询所有数据库 SHOW DATABASES; ②查询当前数据库 SELECT DATABASE(); 创建数据库 CREATE DATABASE [IF NOT...EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则]; -- 演示: -- 创建一个名为SQLstudy的数据库 CREATE DATABASE `SQLstudy

    38720

    EF Linq中的左连接Left Join查询

    linq中的join是inner join内连接,就是当两个表中有一个表对应的数据没有的时候那个关联就不成立。 比如表A B的数据如下 ?...from a in A join b in B on a.BId equals b.Id select new {a.Id, b.Id} 的结果是 {1,1} {2,2} {4,4} 因为3在B表中不存在...,所以连接失败,不返回,但是当我们需要返回一个{3, null}的时候怎么办呢,这就是左连接,反之,如果是{null,3} 则是右连接。...re这个IEnumerable中了,所以select的时候从re集合去取 这样即是左连接,返回结果是 {1,1} {2,2} {3,null} {4,4} 可以看到和直接内连接的join差距在多了into...,把可能为空的那个集合(表)放到一个集合,然后再对接进行DefaultIfEmpty(),再从这个结果中去取 重点就是into到集合,再DefaultIfEmpty()

    5K10

    ②【MySQL表操作】 数据库表的创建、查询、修改、删除

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 数据库表的创建、查询、...数据类型 数据库表中的数据类型: 数值类型: TINYINT:小整数 SMALLINT:大整数 MEDIUMINT:大整数,范围大于SMALLINT INT/INTEGER:大整数,范围大于MEDIUMINT...DDL - 表操作 DDL-表操作: 查询表信息 ①查询当前数据库所有表 SHOW TABLES; ②查询表结构 DESC 表名; ③查询指定表的建表语句 SHOW CREATE TABLE 表名; 创建表操作...字段n 字段n类型 [COMMENT 字段n注释] )[COMMENT 表注释]; -- 演示: -- 创建表tb_user -- 注释内容使用一对英文的单引号括起来'' -- 整型用int表示 --...表名' DROP TABLE aaa; -- 使用关键字IF EXISTS -- 当要被删除表不存在时,不会再删除,也不会报错 DROP TABLE IF EXISTS aaa; ②删除指定表,并重新创建该表

    52950

    sql server创建数据库与相关查询操作

    我是在官网上下载的develop版本 创建操作 CREATE DATABASE TestData ON PRIMARY ( Name='TestData',--主数据库的逻辑名称 FileName...='I:\sqlserverdata\TestData_Data.mdf',--主数据库文件的物理名称 Size=10MB,--主数据库文件的初始大小值 MaxSize=6000MB,--主数据库文件的最大值...\TestData_Data.ldf', Size=10MB, MaxSize=20MB, FileGrowth=1MB ) GO 查询语句相关操作,与一般的数据库相差不大: SELECT...Size=10MB,--主数据库文件的初始大小值 MaxSize=6000MB,--主数据库文件的最大值 FileGrowth=2%--主文件数据库的增长率 ) LOG ON (...GO 表的增加约束以及插入数据 --创建约束 ALTER TABLE Admin ADD CONSTRAINT UQ_LoginId --约束名 UNIQUE --约束类型 (LoginId) --

    1.1K20

    数据库查询优化的一般步骤_sql创建数据库失败

    所以在创建联合索引的时候一定要注意索引字段顺序,常用的查询字段放在最前面。...在日常中你会发现全模糊匹配的查询,由于 MySQL 的索引是 B+ 树结构,所以当查询条件为全模糊时,例如 %AB%、%AB,索引无法使用,这时需要通过添加其他选择度高的列或者条件作为一种补充,从而加快查询速度...11、禁止使⽤负向查询 禁止使⽤负向查询,例如:not in、!=、、not like。 12、范围查询 在对字符串类型的索引进行大于运算时,会导致全表扫描。...当然,union all 的前提条件是两个结果集没有重复数据。 16、减少与数据库交互 尽量采用批量 SQL 语句,减少与数据库交互次数。...「重点总结一下」:SQL 的执行过程->查询优化器的工作原理->SQL 执行计划的解读->MySQL 慢查询日志和分析->SQL 常用的优化手段->SQL 编写规范->深入实际业务对数据库访问进行优化。

    1.2K20

    在企业级数据库GaussDB中如何查询表的创建时间?

    一、 背景描述 在项目交付中,经常有人会问“如何在数据库中查询表的创建时间?” ,那么究竟如何在GaussDB(DWS)中查找对象的创建时间呢?...二、 操作演练 方法1:视图查询方法 DBA_OBJECTS视图存储了数据库中所有数据库对象的相关信息, GaussDB(DWS)支持通过DBA_OBJECTS视图进行查询,字段和详细说明如下: 注意...创建测试表 创建测试表,用于后续查询测试。 --定义一个表,使用HASH分布。...select current_timestamp; 测试表创建完成后查看当前系统时间作为参考。 image.png 2. 查询创建时间 通过DBA_OBJECTS视图查看表对象创建时间。...如果对应的二进制位取值为0,表示不审计对应的数据库对象的CREATE、DROP、ALTER操作;取值为1,表示审计对应的数据库对象的CREATE、DROP、ALTER操作。

    3.6K00

    MySQL数据库的查询

    区域表效果图 例1:查询省的名称为“广东省”的所有城市 创建areas表: create table areas( id varchar(30) not null primary key,...); 3、小结 子查询是一个完整的SQL语句,子查询被嵌入到一对小括号里面 数据库设计之三范式 1、数据库设计之三范式的介绍 范式: 对设计数据库提出的一些规范,目前有迹可寻的共有8种范式,一般遵守3范式即可...,需要通过一个字段存储在表中 1对1关系,在表A或表B中创建一个字段,存储另一个表的主键值 一对多的关系: 说明: 1对多关系,在多的一方表(学生表)中创建一个字段,存储班级表的主键值 多对多的关系:...E-R模型由 实体、属性、实体之间的关系构成,主要用来描述数据库中表结构。...1、数据准备 -- 创建 "京东" 数据库 create database jing_dong charset=utf8; -- 使用 "京东" 数据库 use jing_dong; -- 创建一个商品

    18.5K30

    【MySQL】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)

    本章主要内容面向接触过C++ Linux的老铁 主要内容含: 一.DDL-数据库操作 总览 查询 SHOW DATABASES; //查询所有数据库 SELECT DATABASE...() ; //查询当前数据库 展示所有数据库 查看当前数据库是什么(图中所示是itcast) 记得加() 创建 加上[IF NOT EXISTS]:如果不存在就创建;如果存在就不执行其他操作...字符集][COLLATE 排序规则]; 第一次创建 第二次创建——>报错 加入[IENOT EXISTS], 重复创建不报错 加上[DEFAULTCHARSET], 指定utf8mb4字符集...utf8支持3字节,utf8mb4支持4字节 删除 加上[IF NOT EXISTS]:如果不存在就删除;如果存在就不执行其他操作(可省略) DROP DATABASE[IF EXISTS]数据库名...; 使用 USE 数据库名; 切换数据库

    14310

    数据库之连表查询_数据库怎么查询表的内容

    大家好,又见面了,我是你们的朋友全栈君。 什么是多表关联查询? 有时一个查询结果需要从两个或两个以上表中提取字段数据,此时需要使用的就是多表关联查询。...链接查询主要分为三种:内连接、外连接、交叉连接。 内连接 使用比较运算符(包括=、>、、>=、 和!的比较操作,查询与连接条件相匹配的数据。...关键字:INNER JOIN 1.等值连接/相等连接: 使用”=“关系将表连接起来的查询,其查询结果中列出被连接表中的所有列,包括其中的重复列 2.自然连接 等值连接中去掉重复的列,形成的链接。...3.自连接 如果在一个连接查询中,涉及到的两个表是同一个表,这种查询称为自连接查询。...交叉连接/笛卡尔积 关键字:CROSS JOIN 两个表做笛卡尔积,得到的结果集的行数是两个表中的行数的乘积。 实践能让你快速理解。

    5.7K20

    sqlserver怎么用语句创建表_mysql查询表的创建语句

    创建表的语句写法,供您参考,希望可以让您对SQL Server创建表方面有更深的认识。...,全局临时表才会被删除 4:创建主键、外键关联的数据库表 [sql] view plain copy use db_sqlserver; go create table...else print ‘该数据库表名不存在,可以利用该名创建表’ 10:查看表的各种信息,可以查看指定数据库表的属性、表中字段属性、各种约束等信息 [sql] view plain...注意,也可以先删除引用该表的数据库表,然后 即可删除该表, http://www.yiibai.com/sql/sql-create-table.html 创建基本表中涉及命名表并定义其列...可以使用CREATE TABLE语句和SELECT语句的组合来创建从现有表的副本。您可以查看完整的详细信息使用另一个表创建表 。

    8.7K120

    Mysql数据库--聚合查询、分组查询、联合查询(不同的连接方式)

    1.查询的进阶版 1.1查询搭配插入进行使用 我们首先创建两张表,一个叫做student,一个叫做student2,两个表都是只有这个int和varchar 的数据类型,这个时候,我们向这个第一个表里面直接使用这个...,下面我们会依次去演示这个例如count,sum,min,max的用法; 首先还是要创建一张表,然后向这个表里面插入一些数据,例如下面的这个所示,我下面的这个演示也是基于下面的这个表进行的: 下面的这个就是聚合查询里面的这个...,因此我们首要的任务就是创建一张表:我下面的这个是一个简单的和这个公司的业务类型以及这个薪资,姓名制作的一张表; 这个时候,我们计算一下这几个人的平均的薪资,使用的就是我们的这个avg聚合函数:...,我们的第一个表里面的每一行都要和第二个表里面的内容进行组合,因此这个新的表的列数就是两个表的和,新的表的行数就是两个表的行的乘积(数学知识,不难理解哈); 我们首先创建四张表: 学生表,班级表,分数表和课程表...,这个时候的连接就会出现问题; 下面的这个是建议的写法:指出来自己的这个咧处于哪一个表里面: 下面的这个就是我们只需要选择出来这个成绩的name是许仙的: select * from student

    25410

    EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型

    view=aspnetcore-2.1 使用EF CodeFirst在MySql中创建新的数据库,我们首先在appsettings.json文件夹中,使用json对来给出mysql数据库连接语句,其次在...新建一个类,用来做数据表的基类,同是派生一个继承自DbContext的数据库上下文类,注意!这个新的数据库上下文一定要有构造函数。...做好之后,使用如下命令创建新的数据库: 首先打开Nuget管理控制台: Add-Migration xxxx Update-Database 如果我们就生成了数据库了,还会给我们生成一个Migration...那么如果有了数据库怎么使用DbContext呢? 从现有的MySql数据库中使用DB First来创建数据表模型 在这种方案下,我们只需要引入第三方的mysql数据库驱动就可以。...然后就执行下面的命令 第一种方案、 从现有Mysql数据库添加到EF Core,使用 程序包控制台(PM): Scaffold-DbContext "server=localhost;port=3306

    44820
    领券