好久没怎么用了,本来就不是很扎实的sql知识更加模糊了,特作文予以记录。
http://www.chinesewalker.ik8.com/teacher/databaselesson/index.htm
1、下载了 SQL循序渐进教程 [CHM].rar
2、http://sql.1keydata.com/cn/sql-links.php 这个网站还不错
3、http://www.chinesewalker.ik8.com/teacher/databaselesson/chapter01.htm 关系数据库的一些基本知识
4、http://www.chinesewalker.ik8.com/teacher/databaselesson/chapter02.htm
5、第三章 关系数据库标准语言SQL http://www.chinesewalker.ik8.com/teacher/databaselesson/chapter03.htm#node1
与 或 非 异或
与 是两个都为1时 返回1
或 是两个有一个为1时 返回1
异或 是两个不同时 返回1
非 是单目 是0就返回1 是1就返回0
按位的意思是转换成二进制形式 然后对每一位进行运算后返回
逻辑的意思是转换成Boolen形式 然后进行运算
逻辑与 &&
逻辑或 ||
逻辑异或 (bool)num1 != (bool)num2
逻辑非 !
按位与 &
按位或 |
按位异或 ^
按位非 ~
二、传统的关系运算 (集合运算)
1、简述
⑴交、差、并、笛卡儿积(二目运算)涉及两个关系的运算。在做交 、差 、并 操作时,必须保证两个关系相容 ,即:两个关系有相同的目或度,也就是有相同的属性个数,并且对应的属性取自相同的域。
⑵关系运算还涉及到比较运算和逻辑运算,其运算符分别是
比较运算符:> 、≥ 、< 、≤ 、= 、≠
逻辑运算符:┐ (非)、∧ (与)、∨ (或)
⑶我们以下列两个关系来说明传统的关系运算
◎篮球兴趣小组(设为关系R )
姓名 | 系名 | 性别 |
王捷 | 数学系 | 男 |
张炎 | 物理系 | 男 |
陈仪 | 外语系 | 女 |
●计算机兴趣小组(设为 关系S )
姓名 | 系名 | 性别 |
赵铭 | 中文系 | 男 |
陈仪 | 外语系 | 女 |
孙森茂 | 法律系 | 男 |
王捷 | 数学系 | 男 |
2、并操作∪(或)UNION
⑴返回的关系由两个指定关系中所有的元组构成。
⑵重复元素的处理,由属于关系R或 属于关系S的元组组成,其运算结果仍为关系。
⑶关系代数中的并,不是通常数学中的并;它是一种特殊类型的并,要求两个参与操作的关系是同一类型。如果两个关系属于同一类型,那就可以进行并操作,得到的结果是一个相同类型的关系;封闭的特性被保持了下来。
例 :篮球兴趣小组(关系R)∪计算机兴趣小组(关系S)的结果是
姓名 | 系名 | 性别 |
赵铭 | 中文系 | 男 |
陈仪 | 外语系 | 女 |
张炎 | 物理系 | 男 |
孙森茂 | 法律系 | 男 |
王捷 | 数学系 | 男 |
3、交操作∩(且)INTERSECT
⑴返回关系由同时出现在两个指定关系中的元组构成。
⑵由属于关系R同时又 属于关系S的元组组成,其运算结果是关系。
例:篮球兴趣小组(关系R)∩计算机兴趣小组(关系S)的结果是
姓名 | 系名 | 性别 |
王捷 | 数学系 | 男 |
陈仪 | 外语系 | 女 |
4、差操作-MINUS
⑴R-S返回的关系由那些属于第一个关系却不属于第二个关系的元组构成。
⑵如果是R-S,则由属于关系R而不属于关系S的元组组成,其运算结果是关系。
例:篮球兴趣小组(关系R)-计算机兴趣小组(关系S)的结果是
姓名 | 系名 | 性别 |
张炎 | 物理系 | 男 |
⑶差操作要注意注意次序,如果是S-R,则由属于关系S而不属于关系R的元组组成,其运算结果也是关系,就像通常数学中的减法(“5-2”和“2-5”不是同一件事情)。
例:计算机兴趣小组(关系S)-篮球兴趣小组(关系R)的结果是
姓名 | 系名 | 性别 |
赵铭 | 中文系 | 男 |
孙森茂 | 法律系 | 男 |
5、笛卡儿积×TIMES
返回一个关系,包含任意两个分别来自两个指定关系的元组组合的所有可能的元组。
例: 计算机兴趣小组(关系S)×篮球兴趣小组(关系R)的结果是
R.姓名 | R.系名 | R.性别 | S.姓名 | S.系名 | S.性别 |
王捷 | 数学系 | 男 | 赵铭 | 中文系 | 男 |
王捷 | 数学系 | 男 | 陈仪 | 外语系 | 女 |
王捷 | 数学系 | 男 | 孙森茂 | 法律系 | 男 |
王捷 | 数学系 | 男 | 王捷 | 数学系 | 男 |
张炎 | 物理系 | 男 | 赵铭 | 中文系 | 男 |
张炎 | 物理系 | 男 | 陈仪 | 外语系 | 女 |
张炎 | 物理系 | 男 | 孙森茂 | 法律系 | 男 |
张炎 | 物理系 | 男 | 王捷 | 数学系 | 男 |
陈仪 | 外语系 | 女 | 赵铭 | 中文系 | 男 |
陈仪 | 外语系 | 女 | 陈仪 | 外语系 | 女 |
陈仪 | 外语系 | 女 | 孙森茂 | 法律系 | 男 |
陈仪 | 外语系 | 女 | 王捷 | 数学系 | 男 |
1、选择、投影、连接和除法
2、 选择运算(Selection)
⑴返回一个关系,其中的元组来自指定关系中所有满足指定条件的元组。
⑵选择运算是从关系的水平方向进行运算,是从关系中选择满足给定条件的元组,记作
![](http://www.chinesewalker.ik8.com/teacher/databaselesson/img/guanxi-01.jpg)
⑶例:求
![](http://www.chinesewalker.ik8.com/teacher/databaselesson/img/guanxi-07.jpg)
姓名 | 系名 | 性别 |
赵铭 | 中文系 | 男 |
孙森茂 | 法律系 | 男 |
王捷 | 数学系 | 男 |
3、投影运算(Projection)
⑴返回一个关系,由去掉若干属性列后的指定关系中剩余的所有(子)元组组成。
⑵投影关系是从关系的垂直方向进行运算,即在关系R中选择出若干属性列A组成新的关系,记作 。
⑶例:求 ,其结果为
姓名 | 系名 |
王捷 | 数学系 |
张炎 | 物理系 |
陈仪 | 外语系 |
4、连接运算(Join)
⑴连接分为θ连接 、等值连接 和自然连接 三种。鉴于自然连接在实际操作中的重要性,以下面三个关系为例集中阐述自然连接的具体使用。由于连接运算的目的是操作不同的关系从而求出所需的数据,相对来说复杂些。
关系S
学号 | 姓名 | 性别 | 系名 | 年龄 |
3001 | 王平 | 女 | 计算机 | 18 |
3002 | 张勇 | 男 | 计算机 | 19 |
4003 | 黎明 | 女 | 机械 | 18 |
4004 | 刘明远 | 男 | 机械 | 19 |
1041 | 赵国庆 | 男 | 通信 | 20 |
1042 | 樊建玺 | 男 | 通信 | 20 |
关系C
课程号 | 课程名 | 学分 |
1 | 数据库 | 3 |
2 | 数学 | 4 |
3 | 操作系统 | 4 |
4 | 数据结构 | 3 |
5 | 数字通信 | 3 |
6 | 信息系统 | 4 |
7 | 程序设计 | 2 |
关系SC
学号 | 课程号 | 成绩 |
3001 | 1 | 93 |
3001 | 2 | 84 |
3001 | 3 | 84 |
3002 | 2 | 83 |
3002 | 3 | 93 |
1042 | 1 | 84 |
1042 | 2 | 82 |
⑵连接运算是从两个关系R和S的笛卡儿积中选取满足条件的元组。可以认为笛卡儿积是无条件连接,其他连接是有条件连接。
⑶θ连接 :从R与S的笛卡儿积中选取属性间满足一定条件的元组,记作 ,其中,XθY为连接的条件,θ是比较运算符,X和Y分别为R和S上度数相等,且可比的属性组。
⑷等值连接 :当θ为=时,称之为等值连接,记为 。
⑸自然连接 :是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组 ,并且在结果集中将重复属性列去掉 。一般连接是从关系的水平方向运算,而自然连接不仅要从关系的水平方向,而且要从关系的垂直方向运算。自然连接记为 。
例1:求 的结果
学号 | 姓名 | 性别 | 系名 | 年龄 | 课程号 | 成绩 |
3001 | 王平 | 女 | 计算机 | 18 | 1 | 93 |
3001 | 王平 | 女 | 计算机 | 18 | 2 | 84 |
3001 | 王平 | 女 | 计算机 | 18 | 3 | 84 |
3002 | 张勇 | 男 | 计算机 | 19 | 2 | 83 |
3002 | 张勇 | 男 | 计算机 | 19 | 3 | 93 |
1042 | 樊建玺 | 男 | 通信 | 20 | 1 | 84 |
1042 | 樊建玺 | 男 | 通信 | 20 | 2 | 82 |
例2:求 的结果
课程号 | 课程名 | 学分 | 学号 | 成绩 |
1 | 数据库 | 3 | 3001 | 93 |
1 | 数据库 | 3 | 1042 | 84 |
2 | 数学 | 4 | 3001 | 84 |
2 | 数学 | 4 | 3002 | 83 |
2 | 数学 | 4 | 1042 | 82 |
3 | 操作系统 | 4 | 3001 | 84 |
3 | 操作系统 | 4 | 3002 | 93 |
例3:求
![](http://www.chinesewalker.ik8.com/teacher/databaselesson/img/guanxi-10.jpg)
学号 | 姓名 | 性别 | 系名 | 年龄 | 课程号 | 成绩 | 课程名 | 学分 |
3001 | 王平 | 女 | 计算机 | 18 | 1 | 93 | 数据库 | 3 |
3001 | 王平 | 女 | 计算机 | 18 | 2 | 84 | 数学 | 4 |
3001 | 王平 | 女 | 计算机 | 18 | 3 | 84 | 操作系统 | 4 |
3002 | 张勇 | 男 | 计算机 | 19 | 2 | 83 | 数学 | 4 |
3002 | 张勇 | 男 | 计算机 | 19 | 3 | 93 | 操作系统 | 4 |
1042 | 樊建玺 | 男 | 通信 | 20 | 1 | 84 | 数据库 | 3 |
1042 | 樊建玺 | 男 | 通信 | 20 | 2 | 82 | 数学 | 4 |
5、除法(Division)
⑴映射是指两个非空集合A、B之间的一种对应法则,若对应法则f使得A中任一元素与B中唯一元素对应,则f叫作A到B的映射,记作f:A→B,A叫作这个映射的原象集 ,B叫作象集 。
⑵在关系中对于象集 :给定一个关系R(X,Z),X和Z为属性组。我们定义,当t[X]=x时,x在R中的象集(Images Set)为:Zx ={t[Z]|t∈R, t[X]=x},它表示R中属性组X上值为x的诸元组在Z上分量的集合。
⑶除运算是同时从关系的水平方向和垂直方向进行运算。给定关系R(X,Y)和S(Y,Z),X、Y、Z为属性组。R÷S应当满足元组在X上的分量值x的象集Yx 包含关系S在属性组上投影的集合。
⑷在进行运算时,将被除关系R的属性分成两部分:与除关系相同的部分Y和不同的部分X。在被除关系R中,按X的值分组,即相同X值的元组分为一组。除法的运算是求包括除关系中全部Y值的组,这些组中的X值将作为除结果的元组。
⑸除法含有“for all ”的语义,这个含义非常重要。
⑹例1:设有如下关系R、S,求R÷S的结果
关系R:
X
|
Y
|
X1
|
Y1
|
X2
|
Y1
|
X2
|
Y2
|
X2
|
Y3
|
关系S:
Y
|
Z
|
Y1
|
Z1
|
Y2
|
Z2
|
解题过程如下:
被除数R中有X1,X2两个值,X1的象集是{Y1};X2的象集是{Y1,Y2,Y3}
除数S在Y上的投影为{Y1,Y2}
只有X2的象集包含了S在Y上的投影
所以R÷S的结果是:
X
|
X2
|
⑺例2:设有如下关系R、S,求R÷S的结果
关系R:
学号
|
课程号
|
3001
|
1
|
3001
|
3
|
3002
|
2
|
3003
|
1
|
3003
|
2
|
3003
|
3
|
关系S:
课程号
|
学分
|
1
|
3
|
2
|
4
|
3
|
4
|
解题过程如下:
被除数R中有3001、3002、3003三个值,3001的象集是{1,3};3002的象集是{2};3003的象集是{1,2,3}
除数S在课程号上的投影为{1,2,3}
只有3003的象集包含了S在课程号上的投影
所以R÷S的结果是
学号
|
3003
|
请思考本例R÷S结果的实际意义,在实际应用中,该结果其实常被描述成“查询选修了所有课程的学生学号 ”
⑻例3:求SC÷C的结果。
备注:
单个关系:[选择运算:水平,投影运算:垂直]
多个关系:【无条件:笛卡尔乘积,有条件:连接运算(连接运算>@连接>等值连接>自然连接)】