1
00:00:00,360 --> 00:00:03,690
相当于把行的数量给削减了
2
00:00:03,700 --> 00:00:10,540
你看,T4等于所有
3
00:00:10,550 --> 00:00:12,660
符合这种条件的,e属于T3
4
00:00:12,670 --> 00:00:15,210
然后性别是男性
5
00:00:15,220 --> 00:00:16,810
然后薪水大于2500的
6
00:00:17,810 --> 00:00:20,440
就从T3里面筛选
7
00:00:20,940 --> 00:00:23,940
筛选出两行,两个元组
8
00:00:24,390 --> 00:00:25,440
性别是男的
9
00:00:25,820 --> 00:00:26,920
一共有4个
10
00:00:26,930 --> 00:00:28,360
大概2500的2个
11
00:00:28,770 --> 00:00:31,630
12
00:00:35,380 --> 00:00:42,680
投影和限制
13
00:00:42,690 --> 00:00:45,810
下一个要讲就是表的连接了
14
00:00:46,260 --> 00:00:48,570
这个连接我们跟前面函数
15
00:00:48,580 --> 00:00:50,580
那个是类似的
16
00:00:50,670 --> 00:00:51,860
我们前面函数说
17
00:00:51,870 --> 00:00:52,980
可兼容
18
00:00:52,990 --> 00:00:56,540
可连接,条件
19
00:00:56,550 --> 00:01:02,940
就是它的定义域是一样的(口误)
20
00:01:03,350 --> 00:01:06,630
在定义域有交集的地方
21
00:01:07,280 --> 00:01:09,640
它的函数值是一样的
22
00:01:09,650 --> 00:01:11,520
23
00:01:11,690 --> 00:01:12,600
这叫兼容
24
00:01:16,190 --> 00:01:19,950
连接我们来看,R是一个表,T是一个表
25
00:01:20,270 --> 00:01:26,110
这两个表连接就一个圆圈
26
00:01:27,080 --> 00:01:28,240
里面一个乘号
27
00:01:29,580 --> 00:01:30,650
那就等于什么
28
00:01:34,390 --> 00:01:38,030
针对R里面的一个元素r
29
00:01:38,750 --> 00:01:44,170
而且T里面一个元素t
30
00:01:44,180 --> 00:01:47,170
而且r和t兼容
31
00:01:49,450 --> 00:01:50,680
符合这些条件的
32
00:01:51,140 --> 00:01:52,710
把所有的这些
33
00:01:52,990 --> 00:01:54,350
符合这些条件的
34
00:01:54,360 --> 00:01:57,210
这些r和t,把它并起来
35
00:01:58,540 --> 00:02:03,520
把兼容的这些函数都并起来
36
00:02:03,980 --> 00:02:06,210
就得到一个并集
37
00:02:06,540 --> 00:02:13,270
就得到新的一个表了
38
00:02:13,950 --> 00:02:15,790
当然R跟T可以是同一个表
39
00:02:15,880 --> 00:02:22,550
表跟表自己做一个连接也可以的
40
00:02:23,590 --> 00:02:25,020
它自己跟自己肯定兼容的
41
00:02:25,030 --> 00:02:26,340
因为是同一个表
42
00:02:27,110 --> 00:02:28,430
你看,比如说T6
43
00:02:29,400 --> 00:02:31,070
T7两个表
44
00:02:34,030 --> 00:02:37,550
这两个表有没有相交的定义域
45
00:02:38,090 --> 00:02:41,170
有的,相交的就是部门编码
46
00:02:43,190 --> 00:02:44,300
这相交
47
00:02:46,180 --> 00:02:47,690
部门编码相交的
48
00:02:49,650 --> 00:02:53,060
49
00:02:53,070 --> 00:03:00,400
所以部门编码这个属性就相当于叫连接属性
50
00:03:00,610 --> 00:03:02,640
连接属性,类似于我们平时
51
00:03:02,650 --> 00:03:04,320
外键、主键
52
00:03:04,530 --> 00:03:07,090
连起来
53
00:03:07,510 --> 00:03:13,160
T6连接T7,就相当于什么
54
00:03:13,170 --> 00:03:18,050
101,。。。。。
55
00:03:18,380 --> 00:03:20,590
部门编码10之后
56
00:03:20,600 --> 00:03:21,630
10这里
57
00:03:22,250 --> 00:03:25,990
之后它就把10这个地方接到后面来
58
00:03:26,000 --> 00:03:26,470
59
00:03:26,860 --> 00:03:28,300
那必然就有重复的了
60
00:03:28,310 --> 00:03:29,580
你看这有冗余了
61
00:03:29,590 --> 00:03:31,040
你看一模一样
62
00:03:31,050 --> 00:03:32,650
因为10带过来的
63
00:03:34,860 --> 00:03:36,270
10这个带过来的
64
00:03:36,810 --> 00:03:38,320
这有重复的
65
00:03:40,350 --> 00:03:46,020
得到一个新的表,表的定义域或者表头
66
00:03:47,830 --> 00:03:48,520
拉长了
67
00:03:48,530 --> 00:03:56,870
相当于把前面的两个表的表头给并了一下
68
00:03:57,890 --> 00:03:59,400
并了一下之后
69
00:04:00,780 --> 00:04:05,260
相同的部分就已经合并成一个了
70
00:04:08,890 --> 00:04:14,240
这个连接假设两个表是没有相同的连接属性集
71
00:04:14,580 --> 00:04:17,790
就是连接属性集为空的
72
00:04:19,300 --> 00:04:23,730
两个表头里面都没有一样的
73
00:04:25,440 --> 00:04:29,310
那么这个连接就很直接了
74
00:04:29,520 --> 00:04:33,750
直接两个相乘,前面讲的笛卡尔积
75
00:04:37,030 --> 00:04:40,780
这个的话往往会得到一个很大的表
76
00:04:41,590 --> 00:04:45,430
但这种往往是没有太多的用处的
77
00:04:45,440 --> 00:04:48,400
我们也不会用这个来做什么
78
00:04:48,770 --> 00:04:49,920
有意义的事情了
79
00:04:49,930 --> 00:04:53,510
一般很少有用这样的来做计算
80
00:04:53,760 --> 00:04:57,560
都是因为它们之间有一定联系
81
00:04:57,570 --> 00:04:59,560
我们才会把它连在一起
82
00:04:59,980 --> 00:05:04,280
没有联系的,两个表正交,交过来
83
00:05:04,290 --> 00:05:05,840
搞这个有什么意义
84
00:05:11,490 --> 00:05:15,640
下一个就是一些聚合的计算
85
00:05:18,340 --> 00:05:19,770
对SQL语句熟悉的
86
00:05:19,780 --> 00:05:20,810
都了解
87
00:05:21,100 --> 00:05:22,930
求和、平均值什么之类的
88
00:05:23,730 --> 00:05:24,760
这是一个表
89
00:05:25,540 --> 00:05:30,010
假设要针对这个部门号是10的
90
00:05:31,660 --> 00:05:37,060
然后针对薪水这一列做一个统计有多少
91
00:05:37,970 --> 00:05:40,810
然后针对它做最小值统计多少
92
00:05:41,050 --> 00:05:43,840
平均多少