[sql备忘]

好久没怎么用了,本来就不是很扎实的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)
⑴返回一个关系,其中的元组来自指定关系中所有满足指定条件的元组。

⑵选择运算是从关系的水平方向进行运算,是从关系中选择满足给定条件的元组,记作

⑶例:求 ,其结果为
姓名系名性别
赵铭中文系
孙森茂法律系
王捷数学系

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
学号 课程号 成绩
3001193
3001284
3001384
3002283
3002393
1042184
1042282

⑵连接运算是从两个关系R和S的笛卡儿积中选取满足条件的元组。可以认为笛卡儿积是无条件连接,其他连接是有条件连接。

θ连接 :从R与S的笛卡儿积中选取属性间满足一定条件的元组,记作 ,其中,XθY为连接的条件,θ是比较运算符,X和Y分别为R和S上度数相等,且可比的属性组。

等值连接 :当θ为=时,称之为等值连接,记为

自然连接 :是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组并且在结果集中将重复属性列去掉 。一般连接是从关系的水平方向运算,而自然连接不仅要从关系的水平方向,而且要从关系的垂直方向运算。自然连接记为

例1:求 的结果

学号 姓名 性别 系名 年龄 课程号 成绩
3001王平计算机18193
3001王平计算机18284
3001王平计算机18384
3002张勇计算机19283
3002张勇计算机19393
1042樊建玺通信20184
1042樊建玺通信20282

例2:求 的结果

课程号 课程名 学分 学号 成绩
1数据库3300193
1数据库3104284
2数学4300184
2数学4300283
2数学4104282
3操作系统4300184
3操作系统4300293

例3:求 的结果
学号 姓名 性别 系名 年龄 课程号 成绩 课程名 学分
3001王平计算机18193数据库3
3001王平计算机18284数学4
3001王平计算机18384操作系统4
3002张勇计算机19283数学4
3002张勇计算机19393操作系统4
1042樊建玺通信20184数据库3
1042樊建玺通信20282数学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的结果。

 

 

备注:

 

单个关系:[选择运算:水平,投影运算:垂直]

多个关系:【无条件:笛卡尔乘积,有条件:连接运算(连接运算>@连接>等值连接>自然连接)】

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值