当前位置:首页 » 编程语言 » sql关系运算

sql关系运算

发布时间: 2023-04-25 03:31:58

⑴ mysql的 四种关系运算

关系运算包括四种:投影、选择、连接、除。
在任何一种数据库管理系统中(包括MySQL),投影对应于SELECT子句,选择对应于WHERE子句,连接对应于JOIN子句,但除没有直接的对应语句,需要根据题目的实际含义书写复杂的SQL,通常都会包含子查询。

⑵ SQL常用的几种连接(JOIN)小结

连接运算是8种关系运算中的一种。

五种JOIN方式:

1.INNER JOIN or JOIN2.OUTER JOIN
2.1LEFT OUTER JOIN or LEFT JOIN
2.2RIGHT OUTER JOIN or RIGHT JOIN
2.3FULL OUTER JOIN or FULL JOIN3.NATURAL JOIN4.CROSS JOIN5.SELF JOINPS:JOIN中的简写为语法糖,实际中写出来方便读一点而已12345678910

两种连接条件:

1.Equi JOIN 1.1NATURAL 1.2USING(a,b) 1.3= ...2.Theta JOIN 2.1>= 2.2<= 2.3> ...PS:USING(...)指定需要哪些列相等。ON则可以指定任意的连接条件(=,>=,<=,!=,>,<...)123456789101112

JOIN or INNER JOIN

返回两个表中同时满足条件的元组对,不满足的将被丢弃。

OUTER JOIN

LEFT OUTER JOIN

返回左表所有行以及右表满足条件的行,左表有值右表无值填充为null

RIGHT OUTER JOIN

返回右表所有行以及左表满足条件的行,右表有值左表无值填充为null

FULL OUTER JOIN

返回所有表的所有行,在满足条件的行之外,左表满足右表不满足或者相反,均填充null

NATURAL JOIN

1、来自两个关系的元组对在共同属性上的值相同。(不限于一个共同属性,也可以是多个共同属性)
2、去掉重复的属性(列)。
3、列出属性的顺序:先是共同属性,然后是第一个关系的属性,最后是第二个关系的属性。

为了防止两个表有多个共同属性时natural join 会忽略部分需要的元组对,应使用join…using(…),以指定需要哪些列相等
join…using(…)连接只能局限在指定的属性上

CROSS JOIN

返回笛卡儿积

SELF JOIN

相当于A JOIN A

最后放一张图:

⑶ sql,关系代数~~

数据库关系代数表达式学习
关系代数是关系数据库系统查询语言的理论基础。很有必要学习一下,有些是用代数表达式很方便的东西,用SQL写出来还是挺麻烦的,并不是想象当中那么直接。
种操作:一、关系代数的9种操作:
关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。
五个基本操作:五个基本操作:并(∪)、差(-)、笛卡尔积(×)、投影(σ)、选择(π)
四个组合操作:四个组合操作:交(∩)、联接(等值联接)、自然联接(RS)、除法(÷)注2:等值连接表示先做笛卡尔积(×)之后,对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列)注2:自然连接表示两个关系中若有相同名称的属性,则自动作为关联条件,且仅列出一列
二、关系代数表达式:关系代数表达式:
由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。
三、举例说明:举例说明:
设教学数据库中有3个关系:
学生关系S(SNO,SNAME,AGE,SEX)学习关系SC(SNO,CNO,GRADE)课程关系C(CNO,CNAME,TEACHER)
(1)检索学习课程号为C2的学生与成绩-----------------------------------SELECTSNO,GRADEFROMSCWHERECNO='C2'------------------------------------
π
SNO,GRADE(σCNO='C2'(SC))
************************************
(2)检索学习课程号为C2的学生与-----------------------------------SELECTSC.SNO,S.SNAMEFROMSC,SWHERESC.SNO=S.SNOANDSC.CNO='C2'-----------------------------------π
SNO,SNAME(σCNO='C2'(S
SC))
此查询涉及S和SC,先进行自然连接,然后再执行选择投影操作。---π
SNO,SNAME(S)
(πSNO(σCNO='C2'(SC)))
自然连接的右分量为"学了C2课的学生的集合"。此表达式比前一个表达式优化,执行起来要省时间、省空间。************************************
(3)检索选修课程名为MATHS的学生与------------------------------------
SELECTSC.SNO,S.SNAMEFROMSC,S,CWHERESC.SNO=S.SNOANDSC.CNO=C.CNOANDC.CNAME='MATHS'-----------------------------------π
SNO,SANME(σCNAME='MATHS'(S
SCC))
************************************
(4)检索选修课程号为C2或C4的学生-----------------------------------SELECTSNOFROMSCWHERECNO='C2'ORCNO='C4'-----------------------------------π
SNO(σCNO='C2'∨CNO='C4'(SC))
************************************
(5)检索至少选修课程号为C2或C4的学生
-----------------------------------SELECTSA.SNOFROMSCASSA,SCASSBWHERESA.SNO=SB.SNOANDSA.CNO='C2'ANDSB.CNO='C4'-----------------------------------π1(σ1=4∧2='C2'∧5='C4'(SC×SC))************************************
(
6)检索不学C2课的学生与年龄-----------------------------------SELECTSNAME,AGEFROMSMINUSSELECTS.SNAME,S.AGEFROMSC,SWHERESC.SNO=S.SNOANDSC.CNO='C2'(Oracle)------------------------------------
π
SNAME,AGE(S)-πSNAME,AGE(σCNO='C2'(S
SC))
************************************
(7)检索学习全部课程的学生-----------------------------------这个定义用SQL表示比较麻烦,略过-----------------------------------π
SNO,CNO(SC)÷πCNO(C)
先用除法取出选取所有课程的SNO集(除法可以理解为一个Filter)π
SNAME(S
(πSNO,CNO(SC)÷πCNO(C)))
再关联S表取出SNAME************************************
(8)检索所学课程包含S3所学课程的学生-----------------------------------这个定义用SQL表示比较麻烦,略过-----------------------------------π
SNO,CNO(SC)÷
πCNO(σSNO='S3'(SC))
同样运用了除法的特性
************************************
(9)将新课程元组将新课程元组('C10','PHYSICS','YU')插入到关系C中插入到关系-----------------------------------INSERTINTOCVALUES('C10','PHYSICS','YU')-----------------------------------(C∪('C10','PHYSICS','YU'))∪记住该符号的用法************************************
(10)将S4选修课程号为C4的成绩改为85分-----------------------------------UPDATESCSETGRADE=85WHERESNO='S4'ANDCNO='C4'-----------------------------------(SC-('S4','C4',?)∪('S4','C4',85))-∪先用'-'实现DELETE功能,再用'∪'实现INSERT功能-注意使用?来表示检索时忽略该字段值************************************
四、关系代数表达式的优化:关系代数表达式的优化:
目的:为了系统在执行时既省时间又能提高效率。目的基本策略:先做选择,运用投影去除多余属性等等。基本策略优化算法:语法树(尽量提前做选择操作;在每个操作后,应做优化算法个投影操作,去掉不用的属性值)
例如:
ππ
SNO,SNAME(σGRADE>60(S
SC))进行优化后转换为:πSNO(σGRADE>60(SC)))
SNO,SNAME(πSNO,SNAME(S)
--即提前做选择操作;在每个操作后,应做个投影操作,去掉
不用的属性值
又如:
S(S#,SNAME,AGE,SEX)SC(S#,C#,GRADE)C(C#,CNAME,TEACHER)
π
CNAME,TEACHER(σSEX='女'(S
SCC))进行优化后转换为:
πCNAME,TEACHER(CπC#(πS#,C#(SC)πS#(σSEX='女'(S))))
优化前和优化后的语法树如下所示:

⑷ 怎样使用SQL语句实现选择、投影和连接等关系运算

SQL语句中select对卜磨哗孝应投影运算,where语句对应选择运算,from后面的表对应连接运算,其中
from a, b表型芦斗示笛卡尔集
from a join b on a.A=b.A对应自然连接

⑸ SQL语句实现关系代数中的“除法”

给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算可以得到一个新的关系P(X),P是R中满足下列条件的元组在X 属性列上的投影: 元组在X上的分量值x的像集Y(x)包含S在Y上的投影的集合。

第一步:找出关系R和关系S中相同的属性,即Y属性。在关系S中对Y做投影(即将Y列取出);

第二步:被除关系R中与S中不相同的属性列是X,关系R在属性X上做取消重复值的投影;

第三步:求关系R中X属性对应的像集Y;

第四步:判断包含关系,R÷S其实就是判断关系R中X各个值的像集Y是否包含关系S中属性Y的所有值。

R(X,Y)÷S(Y,Z)的运算用结构化语言SQL 语句可表达为下列形式:

⑹ 述关系代数运算中的每一种运算与SQL 查询语句有什么关系

关系运算的投影,就是SQL查询一列(竖),比如Select
sno
from
stu。而关系运算的选择,就是查询几行(横),比如,select
*
from
stu。关系的联接运算,就是SQL的连接查询(内,外,左,右,自然,等值等等),比如
Select
*
(或者某列)
from
stu,sc
where
stu.sno=sc.sno
关系的除运算应用较少也不好理解,这里不考虑。

⑺ sql语句中 <>0什么意思

就是不等于0,<>是关系抄运算符的一袭种,常用的关系运算符有:

<,小于,例如a<b

<=,小于等于,例如a<=b

>,大于,例如a>b

>=,大于等于,例如a>=b

==,等于,例如a==b

!=,不等于,例如a!=b

(7)sql关系运算扩展阅读:

运算符的优先级从高到低排列:

1、括号:( )

2、乘、除、求模运算符: * 、 / 、 %

3、加减运算符: + 、 -

4、比较运算符: = , > , < , >= , <= , <> , != , !> , !<

5、位运算符: ^ , & , |

6、逻辑运算符: NOT

7、逻辑运算符: AND

8、逻辑运算符: OR

⑻ T-sql的关系运算符有哪些

运算符是一些符号,它们能够用来执行算术运算、字符串连接、赋值以及在字段常量和变量之间进碧族隐行比较。在SQL Server 2005中,运算符主要有以下六大类:算术运算符、赋值运算符、位运算符、逻辑运算符以及字符串串联接运算符。

1 .算术运算符:可在两个表达式上执行数学运算,两个表达式可以是数字数据类型分类的任何数据类型。包括: + , - , * , / 和取模( % )。
2 .赋值运算符:Transact - SQL中悔厅的运算符( = ),( = )还可以在列标题和为列定义值的表达式之间建立关系。
3 .位运算符:在整形数据或者二进制数据(image类型除外)之间执行位操作。
运算符 & (按位AND), | (按位OR), ^ (按位异或XOR)都是两上操作数。
4 .比较运算符:比较两个表达式的大小或是否相同,其比较的结果是布尔值,即:true(表达式结果为真)、false、以及unknown。
注: text , ntext ,image数据类型不可用穗橘。
5 .逻辑运算符:可把多个逻辑表达式连接起来。包括AND,OR和NOT等运算符,返回带有true,false值和布尔数据类型。
6 .字符串串联运算符:用 + 加号进行字符串串联,例:语句select ' tai ' + ' hang ' ,其结果为taihang。

运算符的优先级从高到低排列:
1 .括号:( )
2 .乘、除、求模运算符: * 、 / 、 %
3 .加减运算符: + 、 -
4 .比较运算符: = , > , < , >= , <= , <> , != , !> , !<
5 .位运算符: ^ , & , |
6 .逻辑运算符: NOT
7 .逻辑运算符: AND
8 .逻辑运算符: OR

⑼ SQL关系代数,求至少选修了两门以上课的学生的学号,用关系代数写出来。

代码入戏:

use hngy

go

/*查询至少选修两门课程的学生学号*/

select StuNO,count(CNO) 选修门数 from SC

group by StuNO

having count(CNO)>=2

go

(9)sql关系运算扩展阅读

关系代数的运算有集合运算(集合<表>与集合<表>之间的运算)和关系运算(集合<表>内部的运算)集合运算:并运算: R U S 差运算: R - S 友激 交运算: R ∩ B 笛卡儿积: R x S (组合运算)。

并,交,差(是对各集合元组的重新组合;要求:参加集合操作的各结果表的列数必须相同,对应项的数据类型也必须相同)

关系运算:

选择 , σF(R)={t|t∈R∧F(t)=True}σF(R)={t|t∈R∧F(t)=True} ------水平分割表

投影 , πA(R)={t[A]|t∈R}πA(R)={t[A]|t∈R} -------垂直分割表

连接 【/* 这里是比较运算符 */,为大于,小于的连接叫比较连接,为等于的连接叫等值连接,自然连接 ⋈ /*它是等值连接的特殊情况,结果集中公共的属性只保留一个------去除重复桥余列。

两表关联,外敏告滚键主建出现在同一集合里(外键和主键就是重复的列,要去除一列),2*/自然, = σ XθY(R×S),扩展的还有外连接 】

⑽ sql数据库中关系代数的除运算怎么理解

R(A,B)/S(B)
将被除关系R按照除S不包含的属性A进行分组,查看每个分组a,如果分组a中包含的B属性值能够覆盖S中的B属性值,则该分组符合查询条件。

热点内容
网络访问层 发布:2024-11-01 16:18:38 浏览:349
国产系列ftp 发布:2024-11-01 15:49:53 浏览:702
招编程师傅招聘 发布:2024-11-01 15:34:51 浏览:192
kkt编程 发布:2024-11-01 15:31:26 浏览:614
我的世界管理员进服务器提示 发布:2024-11-01 15:21:12 浏览:126
如何删除qq空间访问记录 发布:2024-11-01 15:20:07 浏览:323
微信上传图片失败 发布:2024-11-01 15:19:53 浏览:117
python网站域名服务器搭建 发布:2024-11-01 15:18:36 浏览:693
量产工具加密 发布:2024-11-01 15:14:31 浏览:674
储备存储 发布:2024-11-01 15:14:28 浏览:330