八、Sql Server 基础培训《进度8-查询多种写法》(实际操作)
知识点:
假设学生表、班级表、年级表
学生表(student)
|
内码 |
学生姓名 |
班级内码 |
|
001 |
张三 |
1002 |
|
002 |
李四 |
1002 |
|
003 |
王五 |
1003 |
|
004 |
钱六 |
1001 |
班级表(class)
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
|
1003 |
3班 |
2 |
|
1004 |
4班 |
3 |
年级表(grade)
|
内码 |
年级名称 |
|
1 |
1年级 |
|
2 |
2年级 |
执行语句如下:
drop table student
create table student
(
内码 int,
姓名 varchar(100),
班级内码 int
)
insert into student
values('001','张三','1002'),
('002','李四','1002'),
('003','王五','1003'),
('004','钱六','1001')
drop table class
create table class
(
内码 int,
班级名称 varchar(100),
年级内码 int
)
insert into class
values('1002','2班','1'),
('1003','3班','2'),
('1004','4班','3')
drop table grade
create table grade
(
内码 int,
年级名称 varchar(100)
)
insert into grade
values('1','1年级'),
('2','2年级')
1、内连接
内连接是在每个表中找出符合条件的共有记录。各表中不符合条件的记录,不写入结果集。
写法1:select t1.*,t2.*
from student t1, class t2
where t1.班级内码=t2.内码
写法2:select t1.*, t2.*
from student t1
join class t2 on t1. 班级内码=t2.内码
写法3:select t1.*, t2.*
from student t1
inner join class t2 on t1. 班级内码=t2.内码
执行过程详解:(此处运算解法仅个人意见,并非系统内部运算原理)
运算1:符合where条件,班级内码相等的情况下,班级内码=1001:
学生表符合条件记录有1条:
|
内码 |
学生姓名 |
班级内码 |
|
004 |
钱六 |
1001 |
班级表符合条件记录有0条:
|
内码 |
班级名称 |
年级内码 |
|
Null |
Null |
Null |
产生的组合1乘0=0种组合:
无结果集
运算2:符合where条件,班级内码相等的情况下,班级内码=1002:
学生表符合条件记录有2条:
|
内码 |
学生姓名 |
班级内码 |
|
001 |
张三 |
1002 |
|
002 |
李四 |
1002 |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
产生的组合2乘1=2种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
运算3:符合where条件,班级内码相等的情况下,班级内码=1003:
学生表符合条件记录有1条:
|
内码 |
学生姓名 |
班级内码 |
|
003 |
王五 |
1003 |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1003 |
3班 |
2 |
产生的组合1乘1=1种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
运算4:符合where条件,班级内码相等的情况下,班级内码=1004:
学生表符合条件记录有0条:
|
内码 |
学生姓名 |
班级内码 |
|
Null |
Null |
Null |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1004 |
4班 |
3 |
产生的组合0乘1=0种组合:
无结果集
运算5:合并运算1结果、运算2结果、运算3结果、运算4结果=3种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
=================================================
=================================================
2、外连接(左连接、右连接、全连接)
左连接是根据最左表的记录,在被连接右表中找出符合条件的记录与之匹配,找不到与左表匹配的,用null填充。
写法1:select t1.*, t2.*
from student t1
left join class t2 on t1. 班级内码=t2.内码
写法2:select t1.*, t2.*
from student t1
left outer join class t2 on t1. 班级内码=t2.内码
执行过程详解:(此处运算解法仅个人意见,并非系统内部运算原理)
运算1:符合where条件,班级内码相等的情况下,班级内码=1001:
学生表符合条件记录有1条:
|
内码 |
学生姓名 |
班级内码 |
|
004 |
钱六 |
1001 |
班级表符合条件记录有0条:(没有符合条件的记录以null填充)
|
内码 |
班级名称 |
年级内码 |
|
Null |
Null |
Null |
产生的组合1乘1=1种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
004 |
钱六 |
1001 |
Null |
Null |
Null |
运算2:符合where条件,班级内码相等的情况下,班级内码=1002:
学生表符合条件记录有2条:
|
内码 |
学生姓名 |
班级内码 |
|
001 |
张三 |
1002 |
|
002 |
李四 |
1002 |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
产生的组合2乘1=2种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
运算3:符合where条件,班级内码相等的情况下,班级内码=1003:
学生表符合条件记录有1条:
|
内码 |
学生姓名 |
班级内码 |
|
003 |
王五 |
1003 |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1003 |
3班 |
2 |
产生的组合1乘1=1种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
运算4:合并运算1结果、运算2结果、运算3结果=4种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
004 |
钱六 |
1001 |
Null |
Null |
Null |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
=================================================
=================================================
3、右连接
右连接则是根据最右表的记录,在被连接的左表中找出符合条件的记录与之匹配,找不到匹配的,用null填充。以下是右连接结果集。
写法1:select t1.*, t2.*
from student t1
right join class t2 on t1. 班级内码=t2.内码
写法2:select t1.*, t2.*
from student t1
right outer join class t2 on t1. 班级内码=t2.内码
执行过程详解:(此处运算解法仅个人意见,并非系统内部运算原理)
运算1:符合where条件,班级内码相等的情况下,班级内码=1002:
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
学生表符合条件记录有2条:
|
内码 |
学生姓名 |
班级内码 |
|
001 |
张三 |
1002 |
|
002 |
李四 |
1002 |
产生的组合1乘2=2种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
运算2:符合where条件,班级内码相等的情况下,班级内码=1003:
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1003 |
3班 |
2 |
学生表符合条件记录有1条:
|
内码 |
学生姓名 |
班级内码 |
|
003 |
王五 |
1003 |
产生的组合1乘1=1种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
运算3:符合where条件,班级内码相等的情况下,班级内码=1004:
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1004 |
4班 |
3 |
学生表符合条件记录有0条:
|
内码 |
学生姓名 |
班级内码 |
|
Null |
Null |
Null |
产生的组合1乘1=1种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
Null |
Null |
Null |
1004 |
4班 |
3 |
运算4:合并运算1结果、运算2结果、运算3结果=4种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
|
Null |
Null |
Null |
1004 |
4班 |
3 |
===================================================
===================================================
4、全连接
返回符合条件的所有表的记录,没有与之匹配的,用null填充。
写法1:select t1.*, t2.*
from student t1
full join class t2 on t1. 班级内码=t2.内码
写法2:select t1.*, t2.*
from student t1
full outer join class t2 on t1. 班级内码=t2.内码
执行过程详解:(此处运算解法仅个人意见,并非系统内部运算原理)
运算1:符合where条件,班级内码相等的情况下,班级内码=1001:
学生表符合条件记录有1条:
|
内码 |
学生姓名 |
班级内码 |
|
004 |
钱六 |
1001 |
班级表符合条件记录有0条:(没有符合条件的记录以null填充)
|
内码 |
班级名称 |
年级内码 |
|
Null |
Null |
Null |
产生的组合1乘1=1种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
004 |
钱六 |
1001 |
Null |
Null |
Null |
运算2:符合where条件,班级内码相等的情况下,班级内码=1002:
学生表符合条件记录有2条:
|
内码 |
学生姓名 |
班级内码 |
|
001 |
张三 |
1002 |
|
002 |
李四 |
1002 |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
产生的组合2乘1=2种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
运算3:符合where条件,班级内码相等的情况下,班级内码=1003:
学生表符合条件记录有1条:
|
内码 |
学生姓名 |
班级内码 |
|
003 |
王五 |
1003 |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1003 |
3班 |
2 |
产生的组合1乘1=1种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
运算4:符合where条件,班级内码相等的情况下,班级内码=1004:
学生表符合条件记录有0条:
|
内码 |
学生姓名 |
班级内码 |
|
Null |
Null |
Null |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1004 |
4班 |
3 |
产生的组合1乘1=1种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
Null |
Null |
Null |
1004 |
4班 |
3 |
运算5:合并运算1结果、运算2结果、运算3结果=4种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
004 |
钱六 |
1001 |
Null |
Null |
Null |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
|
Null |
Null |
Null |
1004 |
4班 |
3 |
===============================================
===============================================
5、交叉连接
笛卡尔积运算,结果集的记录数将等于第一个表的记录数乘以第二个表中的记录数。
写法1:select t1.*,t2.*
from student t1, class t2 --不带where条件的内连接
写法2:select t1.*, t2.*
from student t1
join class t2
写法3:select t1.*, t2.*
from student t1
inner join class t2
写法4:select t1.*, t2.*
from student t1
cross join class t2
本例,学生表4条记录,级表3条记录,结果集为3乘4=12种组合。
执行过程详解:(此处运算解法仅个人意见,并非系统内部运算原理)
运算1:学生表内码=001:
学生表符合条件记录有1条:
|
内码 |
学生姓名 |
班级内码 |
|
001 |
张三 |
1002 |
班级表符合条件记录有3条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
|
1003 |
3班 |
2 |
|
1004 |
4班 |
3 |
产生的组合1乘3=3种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
|
001 |
张三 |
1002 |
1003 |
3班 |
2 |
|
001 |
张三 |
1002 |
1004 |
4班 |
3 |
运算2:学生表内码=002:
学生表符合条件记录有1条:
|
内码 |
学生姓名 |
班级内码 |
|
002 |
李四 |
1002 |
班级表符合条件记录有3条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
|
1003 |
3班 |
2 |
|
1004 |
4班 |
3 |
产生的组合1乘3=3种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
|
002 |
李四 |
1002 |
1003 |
3班 |
2 |
|
002 |
李四 |
1002 |
1004 |
4班 |
3 |
运算3:学生表内码=003:
学生表符合条件记录有1条:
|
内码 |
学生姓名 |
班级内码 |
|
003 |
王五 |
1003 |
班级表符合条件记录有3条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
|
1003 |
3班 |
2 |
|
1004 |
4班 |
3 |
产生的组合1乘3=3种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
003 |
王五 |
1003 |
1002 |
2班 |
1 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
|
003 |
王五 |
1003 |
1004 |
4班 |
3 |
运算4:学生表内码=004:
学生表符合条件记录有1条:
|
内码 |
学生姓名 |
班级内码 |
|
004 |
钱六 |
1001 |
班级表符合条件记录有3条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
|
1003 |
3班 |
2 |
|
1004 |
4班 |
3 |
产生的组合1乘3=3种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
004 |
钱六 |
1001 |
1002 |
2班 |
1 |
|
004 |
钱六 |
1001 |
1003 |
3班 |
2 |
|
004 |
钱六 |
1001 |
1004 |
4班 |
3 |
运算5:合并运算1结果、运算2结果、运算3结果、运算4结果=12种组合:
|
内码 |
学生姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
|
001 |
张三 |
1002 |
1003 |
3班 |
2 |
|
001 |
张三 |
1002 |
1004 |
4班 |
3 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
|
002 |
李四 |
1002 |
1003 |
3班 |
2 |
|
002 |
李四 |
1002 |
1004 |
4班 |
3 |
|
003 |
王五 |
1003 |
1002 |
2班 |
1 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
|
003 |
王五 |
1003 |
1004 |
4班 |
3 |
|
004 |
钱六 |
1001 |
1002 |
2班 |
1 |
|
004 |
钱六 |
1001 |
1003 |
3班 |
2 |
|
004 |
钱六 |
1001 |
1004 |
4班 |
3 |
============================================
============================================
6、自连接
顾名思义,就是连接的表都是同一个表。同样可以有内连接、外连接各种组合方式,按实际应用去组合。(此处略)
===================================================
===================================================
学习作业8:写出学生表、班级表、年级表三表联合的sql语句、运算过程、运算结果,并把查询语句
放在查询分析器中执行,对照你手工计算的结果,和系统计算的结果是否一致。总共需要写出语法
包括:内连接、左连接、右连接、全连接、交叉连接。提交给枫山。
学习作业8答案公布:
一、内连接:
select * from student t1
inner join class t2 on t1.班级内码=t2.内码
inner join grade t3 on t2.年级内码=t3.内码
运算1:班级内码,年级内码相等的情况下, 班级内码=1001时:
学生表符合条件记录有1条:
|
内码 |
姓名 |
班级内码 |
|
004 |
钱六 |
1001 |
班级表符合条件记录有0条:
|
内码 |
班级名称 |
年级内码 |
|
Null |
Null |
Null |
年级表符合条件记录0条
|
内码 |
年级名称 |
|
Null |
Null |
无结果集
运算2:符合where条件,班级内码,年级内码相等的情况下,班级内码=1002:
学生表符合条件记录有2条:
|
内码 |
姓名 |
班级内码 |
|
001 |
张三 |
1002 |
|
002 |
李四 |
1002 |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
年级表符合条件记录有1条:
|
内码 |
年级名称 |
|
1 |
1年级 |
产生2种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
运算3:符合where条件,班级内码,年级内码相等的情况下,班级内码=1003:
学生表符合条件记录有1条:
|
内码 |
姓名 |
班级内码 |
|
003 |
王五 |
1003 |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1003 |
3班 |
2 |
年级表符合条件记录1条:
|
内码 |
年级名称 |
|
2 |
2年级 |
产生1种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
2 |
2年级 |
运算4:符合where条件,班级内码,年级内码相等的情况下,班级内码=1004:
学生表符合条件记录有0条:
|
内码 |
姓名 |
班级内码 |
|
Null |
Null |
Null |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1004 |
4班 |
3 |
年级表符合条件记录0条
|
内码 |
年级名称 |
|
Null |
NULL |
无结果集
运算5:合并运算1结果、运算2结果、运算3结果、运算4结果=3种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
2 |
2年级 |
二、左连接
select * from student t1
left join class t2 on t1.班级内码=t2.内码
left join grade t3 on t2.年级内码=t3.内码
运算1:班级内码,年级内码相等的情况下,班级内码=1002,年级内码=1:
学生表符合条件记录有2条:
|
内码 |
姓名 |
班级内码 |
|
001 |
张三 |
1002 |
|
002 |
李四 |
1002 |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
年级表符合条件记录有1条:
|
内码 |
年级名称 |
|
1 |
1年级 |
产生2种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
运算2:班级内码,年级内码相等的情况下,班级内码=1003,年级内码=2:
学生表符合条件记录有1条:
|
内码 |
姓名 |
班级内码 |
|
003 |
王五 |
1003 |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1003 |
3班 |
2 |
年级表符合条件记录1条:
|
内码 |
年级名称 |
|
2 |
2年级 |
产生的组合1乘1=1种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
2 |
2年级 |
运算3:班级内码,年级内码相等的情况下,班级内码=1001,年级内码=Null:
学生表符合条件记录有1条:
|
内码 |
姓名 |
班级内码 |
|
004 |
钱六 |
1001 |
班级表符合条件记录有0条:(没有符合条件的记录以null填充)
|
内码 |
班级名称 |
年级内码 |
|
Null |
Null |
Null |
年级表符合条件记录0条
|
内码 |
年级名称 |
|
null |
null |
产生1种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
004 |
钱六 |
1001 |
Null |
Null |
Null |
Null |
Null |
运算4:合并运算1结果、运算2结果、运算3结果=4种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
2 |
2年级 |
|
004 |
钱六 |
1001 |
Null |
Null |
Null |
Null |
Null |
三、右连接
select * from student t1
right join class t2 on t1.班级内码=t2.内码
right join grade t3 on t2.年级内码=t3.内码
运算1:班级内码,年级内码相等的情况下,年级内码=1,班级内码=1002:
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
学生表符合条件记录有2条:
|
内码 |
姓名 |
班级内码 |
|
001 |
张三 |
1002 |
|
002 |
李四 |
1002 |
年级表符合条件记录1条:
|
内码 |
年级名称 |
|
1 |
1年级 |
产生2种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
运算2:班级内码,年级内码相等的情况下,年级内码=2,班级内码=1003:
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1003 |
3班 |
2 |
学生表符合条件记录有1条:
|
内码 |
姓名 |
班级内码 |
|
003 |
王五 |
1003 |
年级表符合条件记录1条:
|
内码 |
年级名称 |
|
2 |
2年级 |
产生1种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
2 |
2年级 |
运算3:合并运算1结果、运算2结果=3种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
2 |
2年级 |
四、全连接
select * from student t1
full join class t2 on t1.班级内码=t2.内码
full join grade t3 on t2.年级内码=t3.内码
运算1:班级内码,年级内码相等的情况下,班级内码=1001,年级内码=null:
学生表符合条件记录有1条:
|
内码 |
姓名 |
班级内码 |
|
004 |
钱六 |
1001 |
班级表符合条件记录有0条:(没有符合条件的记录以null填充)
|
内码 |
班级名称 |
年级内码 |
|
Null |
Null |
Null |
年级表符合条件记录0条:
|
内码 |
年级名称 |
|
Null |
Null |
产生的组合1种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
004 |
钱六 |
1001 |
Null |
Null |
Null |
Null |
Null |
运算2:班级内码,年级内码相等的情况下,班级内码=1002,年级内码=1:
学生表符合条件记录有2条:
|
内码 |
姓名 |
班级内码 |
|
001 |
张三 |
1002 |
|
002 |
李四 |
1002 |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
年级表符合条件记录1条:
|
内码 |
年级名称 |
|
1 |
1年级 |
产生的组合2种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
运算3:班级内码,年级内码相等的情况下,班级内码=1003,班级内码=2:
学生表符合条件记录有1条:
|
内码 |
姓名 |
班级内码 |
|
003 |
王五 |
1003 |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1003 |
3班 |
2 |
年级表符合条件记录1条:
|
内码 |
年级名称 |
|
2 |
2年级 |
产生1种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
2 |
2年级 |
运算4:班级内码,年级内码相等的情况下,班级内码=1004,年级内码=null:
学生表符合条件记录有0条:
|
内码 |
姓名 |
班级内码 |
|
Null |
Null |
Null |
班级表符合条件记录有1条:
|
内码 |
班级名称 |
年级内码 |
|
1004 |
4班 |
3 |
年级表符合条件记录0条:
|
内码 |
年级名称 |
|
Null |
Null |
产生1种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
Null |
Null |
Null |
1004 |
4班 |
3 |
Null |
Null |
运算5:合并运算1结果、运算2结果、运算3结果、运算4结果=5种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
2 |
2年级 |
|
004 |
钱六 |
1001 |
Null |
Null |
Null |
Null |
Null |
|
Null |
Null |
Null |
1004 |
4班 |
3 |
Null |
Null |
五、交叉连接
select *
from student t1, class t2,grade t3
运算1:学生表内码=001:
学生表符合条件记录有1条:
|
内码 |
姓名 |
班级内码 |
|
001 |
张三 |
1002 |
班级表符合条件记录有3条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
|
1003 |
3班 |
2 |
|
1004 |
4班 |
3 |
年级表符合条件记录2条:
|
内码 |
年级名称 |
|
1 |
1年级 |
|
2 |
2年级 |
产生6种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
001 |
张三 |
1002 |
1003 |
3班 |
2 |
1 |
1年级 |
|
001 |
张三 |
1002 |
1004 |
4班 |
3 |
1 |
1年级 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
2 |
2年级 |
|
001 |
张三 |
1002 |
1003 |
3班 |
2 |
2 |
2年级 |
|
001 |
张三 |
1002 |
1004 |
4班 |
3 |
2 |
2年级 |
运算2:学生表内码=002:
学生表符合条件记录有1条:
|
内码 |
姓名 |
班级内码 |
|
002 |
李四 |
1002 |
班级表符合条件记录有3条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
|
1003 |
3班 |
2 |
|
1004 |
4班 |
3 |
年级表符合条件记录2条:
|
内码 |
年级名称 |
|
1 |
1年级 |
|
2 |
2年级 |
产生6种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
002 |
李四 |
1002 |
1003 |
3班 |
2 |
1 |
1年级 |
|
002 |
李四 |
1002 |
1004 |
4班 |
3 |
1 |
1年级 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
2 |
2年级 |
|
002 |
李四 |
1002 |
1003 |
3班 |
2 |
2 |
2年级 |
|
002 |
李四 |
1002 |
1004 |
4班 |
3 |
2 |
2年级 |
运算3:学生表内码=003:
学生表符合条件记录有1条:
|
内码 |
姓名 |
班级内码 |
|
003 |
王五 |
1003 |
班级表符合条件记录有3条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
|
1003 |
3班 |
2 |
|
1004 |
4班 |
3 |
年级表符合条件记录2条:
|
内码 |
年级名称 |
|
1 |
1年级 |
|
2 |
2年级 |
产生6种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
003 |
王五 |
1003 |
1002 |
2班 |
1 |
1 |
1年级 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
1 |
1年级 |
|
003 |
王五 |
1003 |
1004 |
4班 |
3 |
1 |
1年级 |
|
003 |
王五 |
1003 |
1002 |
2班 |
1 |
2 |
2年级 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
2 |
2年级 |
|
003 |
王五 |
1003 |
1004 |
4班 |
3 |
2 |
2年级 |
运算4:学生表内码=004:
学生表符合条件记录有1条:
|
内码 |
姓名 |
班级内码 |
|
004 |
钱六 |
1001 |
班级表符合条件记录有3条:
|
内码 |
班级名称 |
年级内码 |
|
1002 |
2班 |
1 |
|
1003 |
3班 |
2 |
|
1004 |
4班 |
3 |
年级表符合条件记录2条:
|
内码 |
年级名称 |
|
1 |
1年级 |
|
2 |
2年级 |
产生6种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
004 |
钱六 |
1001 |
1002 |
2班 |
1 |
1 |
1年级 |
|
004 |
钱六 |
1001 |
1003 |
3班 |
2 |
1 |
1年级 |
|
004 |
钱六 |
1001 |
1004 |
4班 |
3 |
1 |
1年级 |
|
004 |
钱六 |
1001 |
1002 |
2班 |
1 |
2 |
2年级 |
|
004 |
钱六 |
1001 |
1003 |
3班 |
2 |
2 |
2年级 |
|
004 |
钱六 |
1001 |
1004 |
4班 |
3 |
2 |
2年级 |
运算5:合并运算1结果、运算2结果、运算3结果、运算4结果=24种组合:
|
内码 |
姓名 |
班级内码 |
内码 |
班级名称 |
年级内码 |
内码 |
年级名称 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
001 |
张三 |
1002 |
1003 |
3班 |
2 |
1 |
1年级 |
|
001 |
张三 |
1002 |
1004 |
4班 |
3 |
1 |
1年级 |
|
001 |
张三 |
1002 |
1002 |
2班 |
1 |
2 |
2年级 |
|
001 |
张三 |
1002 |
1003 |
3班 |
2 |
2 |
2年级 |
|
001 |
张三 |
1002 |
1004 |
4班 |
3 |
2 |
2年级 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
1 |
1年级 |
|
002 |
李四 |
1002 |
1003 |
3班 |
2 |
1 |
1年级 |
|
002 |
李四 |
1002 |
1004 |
4班 |
3 |
1 |
1年级 |
|
002 |
李四 |
1002 |
1002 |
2班 |
1 |
2 |
2年级 |
|
002 |
李四 |
1002 |
1003 |
3班 |
2 |
2 |
2年级 |
|
002 |
李四 |
1002 |
1004 |
4班 |
3 |
2 |
2年级 |
|
003 |
王五 |
1003 |
1002 |
2班 |
1 |
1 |
1年级 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
1 |
1年级 |
|
003 |
王五 |
1003 |
1004 |
4班 |
3 |
1 |
1年级 |
|
003 |
王五 |
1003 |
1002 |
2班 |
1 |
2 |
2年级 |
|
003 |
王五 |
1003 |
1003 |
3班 |
2 |
2 |
2年级 |
|
003 |
王五 |
1003 |
1004 |
4班 |
3 |
2 |
2年级 |
|
004 |
钱六 |
1001 |
1002 |
2班 |
1 |
1 |
1年级 |
|
004 |
钱六 |
1001 |
1003 |
3班 |
2 |
1 |
1年级 |
|
004 |
钱六 |
1001 |
1004 |
4班 |
3 |
1 |
1年级 |
|
004 |
钱六 |
1001 |
1002 |
2班 |
1 |
2 |
2年级 |
|
004 |
钱六 |
1001 |
1003 |
3班 |
2 |
2 |
2年级 |
|
004 |
钱六 |
1001 |
1004 |
4班 |
3 |
2 |
2年级 |
八、Sql Server 基础培训《进度8-查询多种写法》(实际操作)的更多相关文章
- 五、Sql Server 基础培训《进度5-数据类型(知识点+实际操作)》
知识点: ================================================= ============================================= ...
- 二、Sql Server 基础培训《进度2-关于主键(知识点学习)》
学习作业2: 问题1:主键都有哪些方式? 问题2:本次实战案例建立的主键采用哪种方式? 问题3:猜猜金蝶K3WISE建立的主键采用哪种方式? 问题4:谈谈手工主键增长设置具体实现思路?(选 ...
- SQL Server 基础 05 多链表查询和子查询
连接查询 值得注意的是:字段前必须加表名,以便混淆 -- 多表连接查询和子查询 select * from dbo.stu_info ,dbo.sname2 -- 加连接规则的查询 where se ...
- mysql、sql server、oracle数据库分页查询及分析(操作手册)
1.mysql分页查询 方式1: select * from table order by id limit m, n; 该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录.无疑该查询能够实 ...
- 九、Sql Server 基础培训《进度9-复杂查询练习》(实际操作)
知识点: 复杂查询1:统计全校有多少个男生.有多少个女生? 写法1(分组): select sex as 性别,count(*) as 人数 from student group by sex 写法2 ...
- 四、Sql Server 基础培训《进度4-插入数据(实际操作)》
知识点: 假设有订单表 CREATE TABLE Order ( ID int identity(1,1) not null primary key, --内码 BillNo varchar(100) ...
- 三、Sql Server 基础培训《进度3-是否使用外键(知识点学习)》
学习作业3: 问题1:你觉得外键有哪些适用情况?哪些不适用情况? 问题2:本次实战案例,由你来架构,你觉得有必要建立外键吗? 说明你的理由? ======================= ...
- 一、Sql Server 基础培训《进度1-建库建数据表(实际操作)》
知识点: 1.建数据库示例参考 --创建一个数据库名为‘dbtest’ create database dbtest go --打开数据库 dbtest use dbtest go 2.建表示例参考 ...
- 七、Sql Server 基础培训《进度7-笛卡尔积(知识点+实际操作)》
知识点: 1.笛卡尔介绍 笛卡尔,近代法国著名哲学家.物理学家.数学家.神学家. 主要成就概述 笛卡尔在科学上的贡献是多方面的.笛卡尔不仅在哲学领域里开辟了一条新的道路,同时笛卡尔又是一勇于探索的科学 ...
随机推荐
- Alpha冲刺(4/10)——2019.4.27
所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(4/10)--2019.4.27 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪 ...
- HttpServletResponse常见应用——设置响应头控制浏览器的行为
1.设置http响应头控制浏览器禁止缓存当前文档内容 1 response.setDateHeader("expries", -1); 2 response.setHeader(& ...
- Ubuntu1404 开启定时任务 crontab
crontab -e 这个 我使用vim编辑,所以选择3,进入到 写了两条,的确隔了一分钟在test.txt文件夹里面会多加一条Good morning进去.而且也会执行dingshi.sh这个she ...
- jdk各种包安装方式
大家都知道,现在JAVA的发展可谓是如日中天,它覆盖面非常广泛,小到个人PC,大到商业应用都能见到它的身影.以前它是由SUN公司来维护的,现在已经归属到甲骨文旗下了. 今天我们来学习一下Java JD ...
- IO流(3)—字节流
IO体系: 抽象基类----节点流(文件流) InputStream--FileInputStream(字节流) OutputStream--FileOutputSteam(字节流) Reader - ...
- pygame-KidsCanCode系列jumpy-part2-加速度与摩擦力
上一节,我们整理了一个游戏开发的新框架(即:Game类),本节将运用这个框架,实现基本的加速度及摩托力效果. 先定义游戏的精灵(下面代码命名为sprites.py) from part_02.sett ...
- Cocos Creator下删除AnySDK步骤
1.删除 frameworks/runtime-src/Classes 下的 jsb_anysdk_basic_conversions.cpp manualanysdkbindings.cpp jsb ...
- 20190131 经验总结:如何从rst文件编译出自己的sqlalchemy的文档
20190131 经验总结:如何编译sqlalchemy的文档 起因 www.sqlalchemy.org官网上不去了,不管是直接上,还是用代理都不行. sqlalchemy属于常用工具,看不到官方的 ...
- Jetpack 架构组件 Room 数据库 ORM MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Python3爬虫实例 代理的使用
现在爬虫越来越难了,一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率太快以至于看起来不像正常访客,它可能就会会禁止这个IP的访问. 所以我们需要设置一些代理服 ...