SQL-基础多表查询(datagrip开发工具)

一.多表关系

概念:在项目的开发中进行的数据库结构设计时,根据业务的需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以以各表结构之间存在着各种联系。

表联系分类:

  1. 一对多:主要有部门与员工之间的关系,主要通过多的一方建立外键,直向一的一方的主键。
  2. 多对多:主要有学生与课程关系(一个学生可以选修多门课程,一门课程也可以供多个学生选择),主要通过建立第三张中间表,中间表至少包括两个外键,分别关联两方主键。
  3.    一对一:用户与用户详情的关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中。主要通过在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(unique)。

二.多表查询

概念:指从多张表中查询数据

笛卡尔积:笛卡尔乘积是指在数学中,两个集合A集合和B集合的所有组合情况(多表查询需要消除无效的笛卡尔积)

多表查询分类:

  连接查询:1.内连接:相当于查询A,B交集部分数据。

                    2.外连接:

                             左外连接:查询左表所有数据,以及两张表交集部分数据。

                             右外连接:查询右表所有数据,以及两张表交集部分数据。

                    3.自连接:当前表与自身的连接查询,自连接必须使用表别名。

  子查询:SQL语句中嵌套的select语句,称嵌套查询又子查询。

内连接查询语法:

  1.   隐式内连接:select 字段列表 from 表1,表2 where 条件
--查询每一个员工及所属的部门
--表结构:emp2,dept
--连接条件:emp2.dept_id = dept.id

select emp2.name ,dept.name from emp2 , dept where emp2.dept_id = dept.id;
  1.   显式内连接:select 字段列表 from 表1 [inner] join 表2 on 连接条件....;
--inner join...on....

select e.name, d.name from emp2 e inner join dept d on  e.dept_id = d.id

结果:

外连接查询语法:

  1. 左外连接:select 字段列表 from 表1 left [outer] join 表2 on 条件......(相当于查询表1(左表)的所有数据和表1和表2 交集的数据)

用于将员工表和部门表连接在一起

--查询emp2表所有数据,和对应部门直接的信息
--表结构:emp2,dept
--连接条件:emp2.dept_id = dept.id

select e.*, d.name from emp2 e left join dept d on e.dept_id = d.id;

  1. 右外连接:select 字段列表 from 表1 right [outer] join 表2 on 条件.....(相当于查询表1(右表)的所有数据和表1和表2 交集的数据)
--查询emp2表所有数据,和对应部门直接的信息(右外连接)
--表结构:emp2,dept
--连接条件:emp2.dept_id = dept.id

select d.*, e.* from emp2 e right join dept d on e.dept_id = d.id;

 

自连接的语法结构:

  1.   自连接:select 字段列表 from 表A 别名A join 表A 别名B on 条件......
--自连接
--查询员工及所属领导的名字(将一张员工表看作两张表相互连接)
--表结构:emp2
select a.name, b.name from emp2 a, emp2 b where a.managerid = b.id;

联合查询union(去重)-union all(会将查询到的所有数据全部合并)

  1. 联合查询:就是把多次查询的结果合并起来,形成一个新的查询结果集。(查询的多张表的列数必须保持一致,字段类型也需要保持一致)
    select 字段列表 from 表a
    union [all]
    select 字段列表 from 表b
    

子查询:嵌套查询

  1. 语法:select * from t1 where column = (select column 1 from t2);-----外部语句可以是insert/update/delete/select的任意一个
  2. 查询结果不同:标量子查询(单个数据),列子查询(查询一列),行子查询(查询一行),表子查询(查询多行多列)。
  3. 根据子查询位置,分为:where之后,from之后,select之后。

标量子查询:返回的结果是单个值(数字,字符串,日期等)。

--1.查询‘销售部’的所有员工
--首先查询‘销售部’部门id
select id from dept where name = '销售部';
--根据部门id查询员工信息
select * from emp2 where dept_id = 4;/
select * from emp2 where dept_id =(select id from dept where name = '销售部');/一样的/
--2.查询员工入职信息
--查询相应员工入职日期
select entrydate from emp2 where name = '猪八戒';

--查询指定入职时间后入值的员工
select * from emp2 where entrydate > (select entrydate from emp2 where name = '猪八戒');

  列子查询:返回的数据是一列,可以是多行。

--列子查询
--1.查询‘销售部’和‘技术部’的所有员工信息
--首先查询部门id
select id from dept where name = '销售部' or name = '技术部';
--根据id查询员工信息
select * from emp2 where dept_id in (select id from dept where name = '销售部' or name = '技术部');
--2.查询研发所有人工资都高的员工信息
--首先查询研发部id
select id from dept where name = '研发部';
--查询财务部工资
select salary from emp2 where dept_id = (select id from dept where name = '研务部');
--比研发部工资高的员工
select * from emp2 where salary > all(select salary from emp2 where dept_id = (select id from dept where name = '研务部'));

行子查询:返回数据为一行 

--3.查询唐僧薪资和直属领导
--首先查询唐僧相关信息
select salary, managerid from emp2 where name = '唐僧';
--查询和唐僧相同的员工信息
select * from emp2 where (salary,managerid) = (select salary, managerid from emp2 where name = '唐僧');

 表子查询:返回结果多行多列

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 要在DataGrip中导入.sql文件,请按照以下步骤操作: 1. 打开DataGrip并连接到您的数据库。 2. 在左侧导航栏中选择您要导入.sql文件的数据库。 3. 单击“文件”菜单,然后选择“导入”。 4. 在弹出的窗口中,选择要导入的.sql文件并单击“打开”。 5. 在下一个窗口中,选择您要将.sql文件导入的数据库表。 6. 点击“下一步”按钮,然后选择您要使用的导入选项。 7. 点击“下一步”按钮,然后预览导入数据的摘要。 8. 点击“完成”按钮,然后等待导入完成。 完成后,您应该能够在您选择的数据库表中看到导入的数据。 ### 回答2: DataGrip是一款强大的数据库管理和开发工具,它支持多种数据库,包括MySQL、Oracle、PostgreSQL等。在使用DataGrip时,我们可能会需要导入.sql文件,以便在数据库中执行文件中所包含的SQL语句。 首先,我们需要打开DataGrip并连接到我们想要导入.sql文件的数据库。然后,在所连接的数据库的根目录上右键单击,选择“SQL文件”菜单项,并在弹出的菜单中选择“导入文件”。 在打开的文件对话框中,我们可以选择要导入的.sql文件并指定所需的选项。DataGrip提供了几个重要的选项,包括选择编码类型、处理语法错误、选择导入数据库的对象等。我们可以根据需求选择这些选项,并单击“导入”按钮将文件导入到数据库中。 一旦文件被成功导入,DataGrip会提示我们导入的结果,包括导入的表、视图、存储过程等。我们可以在数据库浏览器中查看这些对象,并在查询编辑器中执行我们想要的SQL语句。 总体而言,DataGrip为我们提供了一个简单而强大的方法来导入.sql文件。无论我们是将数据从一个数据库迁移到另一个数据库,还是执行我们自己编写的SQL脚本,DataGrip都是一个非常有用的工具。 ### 回答3: Datagrip是一种集成开发环境,它作为JetBrains公司的一个产品,提供了许多便利的数据管理功能。在Datagrip中,我们可以方便地管理数据库、创建表格、增删改查等等。本文将详细介绍如何导入.sql文件到Datagrip中。 首先,我们需要在Datagrip中连接到我们的数据库。此时,如果我们还没有连接到我们的数据库,可以在Datagrip的"Database"面板中点击"New"按钮,然后选择我们想要连接的数据库的类型,比如MySQL或Oracle等等。在"Database"面板中,我们可以看到我们已经连接到的数据库列表。 接下来,我们需要找到我们想要导入的.sql文件。这个文件可以在我们的电脑或者网络上,如果是在网络上,我们也可以使用Datagrip提供的网络功能进行导入。在本地文件中,我们可以通过"File"->"Open"来打开.sql文件,或者使用快捷键"Ctrl+O"来打开。 打开.sql文件之后,我们需要选择我们要导入的数据库。在Datagrip的编辑面板中,我们可以看到一个小的下拉列表,通过这个下拉列表,我们可以选择我们要导入的数据库。此时,我们需要确保我们已经在Datagrip中连接到了我们想要导入的数据库,否则我们无法进行下一步的操作。 接下来,我们需要运行我们的.sql文件。在编辑面板中,我们可以选择"Run"或者使用"Ctrl+Alt+Enter"来运行我们的.sql文件。此时,Datagrip将会执行我们.sql文件中的命令,在我们的数据库中创建相应的表格和数据。 在执行完毕之后,我们可以在Datagrip的"Database"面板中选择我们想要查看的数据库,然后在"Tables"列表中看到我们创建的表格。此时,我们可以对这些表格进行增删改查等操作。 综上所述,导入.sql文件到Datagrip中非常简单,只需要连接到我们的数据库,打开我们的.sql文件,选择我们的数据库,运行我们的.sql文件即可。如果您对Datagrip的使用还有疑问,可以参考官方文档或者进行相应的在线学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菜机一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值