连接利用Oracle SQL左边连接实现数据表联合查询
在Oracle SQL中,我们可以通过连接来实现多个数据表的联合查询。其中之一是左边连接,又称为左外连接或左联接。左边连接可以按照指定的条件从左边的表中选取符合要求的数据并与右边的表进行关联查询,如果左边表中的数据不存在匹配关系,则以null值来填充。
下面我们通过一个实际的案例来看一下如何利用左边连接实现数据表联合查询。我们准备两个数据表,分别为学生表(Student)和成绩表(Score)。学生表包含学生的基本信息,如学号、姓名、性别、年龄等;成绩表包含学生的各科成绩,如语文、数学、英语、体育等。这两个表可以通过学号来关联起来。
建表语句如下:
CREATE TABLE Student(
s_id varchar2(10) primary key not null,
s_name varchar2(20) not null,
s_gender varchar2(10) not null,
s_age number(3) not null
);
CREATE TABLE Score(
s_id varchar2(10) not null,
s_chinese number(3),
s_math number(3),
s_english number(3),
s_sports number(3),
primary key(s_id),
foreign key(s_id) references Student(s_id)
);
接下来,我们往两个表里插入一些数据。Student表的数据如下:
INSERT INTO Student VALUES('101', 'Lucy', 'Female', 18);
INSERT INTO Student VALUES('102', 'Tom', 'Male', 19);
INSERT INTO Student VALUES('103', 'Lily', 'Female', 20);
INSERT INTO Student VALUES('104', 'Jim', 'Male', 18);
INSERT INTO Student VALUES('105', 'Amy', 'Female', 19);
Score表的数据如下:
INSERT INTO Score VALUES('101', 80, 90, 85, 90);
INSERT INTO Score VALUES('102', 90, 85, 80, 75);
INSERT INTO Score VALUES('103', 85, 90, 80, 85);
INSERT INTO Score VALUES('105', 80, 75, 90, 85);
现在我们想要查询每个学生的基本信息以及所有科目的成绩,如果某个学生没有成绩,则显示null值。这时候我们可以使用左边连接来实现。
查询语句如下:
SELECT s.s_id, s.s_name, s.s_gender, s.s_age, c.s_chinese, c.s_math, c.s_english, c.s_sports
FROM Student s LEFT JOIN Score c ON s.s_id = c.s_id;
执行结果如下:
S_ID S_NAME S_GENDER S_AGE S_CHINESE S_MATH S_ENGLISH S_SPORTS
101 Lucy Female 18 80 90 85 90
102 Tom Male 19 90 85 80 75
103 Lily Female 20 85 90 80 85
104 Jim Male 18 null null null null
105 Amy Female 19 80 75 90 85
从上面的执行结果可以看出,左边连接把两个表的数据按照学号进行关联查询,并将学生表中所有的数据都显示出来了,而成绩表中没有对应关系的学生则以null值填充。
综上所述,左边连接是Oracle SQL中一种实用的数据表联合查询方法,可以帮助我们轻松查询多个数据表之间的关联关系,从而实现更加复杂的数据分析操作。