首先我们需要想一下,我们为什么需要将表连接在一起呢?换种说法,即我们需要查询的数据不在同一张表里面,而是在A表中查出一部分,然后再去B表中查出一部分,然后两者结合在一起,才是我们需要的部分。那么我们为什么不是把我们需要的数据从A表中查出,再去B表中查出,然后做一个简单的拼接呢?显然这两者契合的数据必然是冗杂de,我们还需要进行进一步的筛选,才能选出我们所需的数据。
我们先来创建两张表:
STUDENT表:
CREATE TABLE STUDENT(
ID VARCHAR(20),
NAME VARCHAR(20),
SCORE NUMBER(5,2),
BANJIID NUMBER(1),
GENDER VARCHAR2(30)
);
TEACHER表:
CREACREATE TABLE TEACHER(
ID VARCHAR(20),
NAME VARCHAR(20),
ADDRESS VARCHAR2(30),
SEX VARCHAR2(20)
);
创建完之后我们往里面输入数据
左连接: 是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。左连接全称为左外连接,是外连接的一种。话说这里的判断条件为什么不同where呢?因为我们连接出来的表是一张临时表,需用on,我们一般的单表查询都是真实存在的表,用where。
图形展示:
左连接题目:查询出所有老师的NAME以及和老师的ID相同的学生的NAME?
我们从这句话里面能够看出主表是老师TEACHER,因为是所有老师的ID嘛。条件是老师和学生的ID相同。
SQL语句:
SELECT A.NAME, B.NAME FROM TEACHER A LEFT JOIN STUDENT B ON A.ID = B.ID;
查询结果显示:
内连接:就是两者相同的部分,两者的相同信息混合在一起,然后进行条件筛选。
图形展示:
内连接 题目:根据两张表的共同ID,查出老师TEACHER表里面的地址ADDRESS和学生STUDENT表里面的成绩SCORE。
SQL语句:
SELECT A.ADDRESS,B.SCORE
FROM TEACHER A
INNER JOIN STUDENT B
ON A.ID=B.ID;
查询结果显示: