数据库的子查询、连接查询

新建两个表,teacher student

create table teacher (

id int primary key auto_increment,

name varchar(20)  not null default ‘t‘

)engine innodb character set utf8;

create table student (

id int primary key auto_increment,

name varchar(20) not null default ‘t‘,

id_teacher int

)engine innodb character set utf8;

insert into teacher values(1,‘huangyuanming‘),(2,‘mingbangming‘),(4,‘nihao‘),(3,‘buhao‘);

insert into student values(1,‘ndaf‘,1),(2,‘ddf‘,1),(3,‘faf‘,2),(4,‘dda‘,2),(5,‘ga‘,3);

查询外键角标最大的是多少

select max(id) from student;

查询学生 外键角标最大的详细信息(有点像嵌套)

select * from student where id=(select max(id) from student);

连接查询

连接:外连接和自然连接

外连接又分左外连接和右外连接

基于上面两个表

建立查询

基本语法

左外连接:select +你想要查询的字段+from student(表) left outer join teacher on +条件

select  student.name,teacher.name from student left outer join teacher on student.id_teacher=teacher.id;

右外连接将left outer 改变成right outer 就可以了

内连接将left out 改变成 inner就可以了

自然连接:分自然内连接和自然外连接

自然外连接分自然左外连接和自然右外连接

具体的查询语句如

自然左外连接

select * from teacher natural left join student;

内连接

select * from teacher natural join student;

总结:外连接

右外连接:以右边为基准如果没有对应的自动补为空

左外连接:以左边为基准如果右边的超出了,将不显示

内连接 :不以谁为基准左右都显示

用法:什么时候用呢?

当表的主外键相关联 注意:并没有外键和外键相类是的功能

当你想查询主表和从表相对应的时候查询

自然连接

内连接:为空

自然外连接:

自然左外连接: 以你写的左表为基准 ,不显示右表 注意

如果左表没有的字段 ,右表有,会显示右表的字段但都会赋值为空

右外连接同理,就不多说

使用方式:

当你想查看左右表字段的异同可以用这个自然外连接。

时间: 2024-11-01 18:38:20

数据库的子查询、连接查询的相关文章

MySql学习 - 查询/子查询/连接查询/联合查询

数据库查询 设定两张数据库表 第一个表格user包含: user_id username age sex 1 Alps1992 22 man 第二个表格toy包含 user_id toyname 1 OnePiece 普通查询: 查询关键字: AS, SUM, DESC, GROUP BY, ORDER BY, AVG, MIN, MAX, COUNT, LIMIT; 关键字查询例子 select * from user as u order by age limit 5; // as 用来做别

数据库数据的查询----连接查询

关系型数据库中允许表和表之间存在关系,这种关系可以把两个甚至多个表的数据联系在一起.利用这种关系,可以查询出某种符合条件的数据,这些数据将是一套符合实际业务逻辑的数据,而数据中这些表和表之间的关系将不存在.换句话说,获取真实世界的原始数据后,根据某种规则吧它们拆分成各种独立的数据,加入想从数据库中再次获取数据,那么需要依靠当初拆分的规则.而这种规则也可以看成表和表之间的联系,要再次实现这种联系,需要用到连接查询.连接分为内连接.外链接和全连接,还有一种叫做自连接,其中最常用的是内连接和外连接.

MySQL数据库实验三:连接查询

实验三    连接查询 实验名称:连接查询(2课时) 一.实验目的 理解JOIN语句的操作和基本使用方法,掌握内连接.外连接.自身连接的概念和使用. 二.实验环境 是MS SQL SERVER 2005的中文客户端. 三.实验示例 1. 查询每个学生及其选修课程的情况 SELECT  Student.*,SC.* FROM     Student,SC WHERE  Student.Sno = SC.Sno: 2.检索至少选修课程号为C2和C4的学生学号 SELECT X.S# FROM SC

MySql高级查询--连接查询

前言 我们使用SQL查询不能只使用很简单.最基础的SELECT语句查询.如果想从多个表查询比较复杂的信息,就会使用高级查询实现. 常见的高级查询包括多表连接查询.内连接查询.外连接查询与组合查询等,今天我们先来学习最常用.面试也很容易被问到的连接查询. 我们今天以一个简单的学生信息表(学生ID.学生姓名.学生性别)与一个学生成绩表(学生ID.学生成绩.成绩等级)作演示: student_info表: student_score表: 一.内连接(INNER JOIN) 1.等值连接 概述:指使用等

MySQL复杂查询:连接查询+取某个类型的最大值

本文链接:https://blog.inchm.cn/default/38.html 需求 假设有一个考试,比如CET(包括CET-4和CET-6),学生可以多次报考刷分.现在某教育单位要从考试结果中把每个学生的CET-6最高分拿出来,然后进行一个排名. 表结构 现在有两个数据表:student 和 exam_result,分别表示学生的基本信息和每次考试结果(包括CET-4和CET-6的结果). 这里不考虑表结构的优化和完整,只给出必要字段. student: 字段名 含义 id ID(主键)

MySQL多表查询 三表查询 连接查询的套路

多表查询 * 当我们的一条记录 分散不同的表中时,就需要进行多表查询 例如 一对一 一对多 多对多 1.笛卡尔积查询 意思是将两个表中的所有数据 全部关联在一起   例如 a表 有2条 b表有3条   一共6条   会产生大量的错误数据 需要用添加来过滤select *from 表1,表2,....... where 过滤条件?连接查询内连接查询 inner jon   select *from 表1 join 表2 on 关系过滤条件   两边的数据必须完全匹配成功才显示     select

Oracle学习笔记五 SQL命令(三):Group by、排序、连接查询、子查询、分页

GROUP BY和HAVING子句 GROUP BY子句 用于将信息划分为更小的组每一组行返回针对该组的单个结果 --统计每个部门的人数: Select count(*) from emp group by deptno; --根据部门分组,并统计 Select deptno, count(*) form emp group by deptno; select deptno, avg(sal) from emp group by deptno; --每个部门的平均工资 HAVING子句 用于指定

数据库 - 连接查询、嵌套查询、集合查询

连接查询 连接查询:同时涉及多个表的查询 连接条件或连接谓词:用来连接两个表的条件 一般格式: [<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2> [<表名1>.]<列名1> BETWEEN [<表名2>.]<列名2> AND [<表名2>.]<列名3> 连接字段:连接谓词中的列名称 连接条件中的各连接字段类型必须是可比的,但名字不必是相同的 嵌套循环法(

MySQL数据库联合查询与连接查询

联合查询 基本概念 联合查询是可合并多个相似的选择查询的结果集.等同于将一个表追加到另一个表,从而实现将两个表的查询组合在一起,使用为此为UNINO或UNION ALL 联合查询:将多个查询的结果合并到一起(纵向合并):字段数不变,多个查询的记录数合并 应用场景 1.将同一张表中不同的结果(需要对应多条查询语句来实现),合并到一起展示数据 2.最常见:在数据量大的情况下,会对表进行分表操作,需要对每张表进行部分数据统计,使用联合查询来将数据存放到一起显示 基本语法 select 语句 union

mysql_07_连接查询

#创建数据库CREATE DATABASE db_book; #使用数据库USE `db_book`; #表如果存在则删除DROP TABLE IF EXISTS `t_book`; #创建表CREATE TABLE `t_book` ( `id` int(11) NOT NULL AUTO_INCREMENT, `bookName` varchar(20) DEFAULT NULL, `price` decimal(6,2) DEFAULT NULL, `author` varchar(20)