mysql关系代数怎么写 mysql关系运算符有哪些
请问下面的数据库 关系代数表达式怎么写啊?
1)查询在XYZ工资工作的员工ID和姓名列表。
和静ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
SELECT a.EmployeeId, a.EmployeeName
from Employee a, Working b, Company c
where a.EmployeeId = b.EmployeeId
and b.CompanyId = c.CompanyId
and c.CompanyName = 'XYZ'
2)查找居住地和公司所在地在同一个城市的所有员工
select a.EmployeeId, EmployeeName, a.City
from Employee a, Working b, Company c
where a.EmployeeId = b.EmployeeId
and b.CompanyId = c.CompanyId
and a.city = c.city
3)查找在CITY BANK工作并且工资大于30000美金的员工
Select a.EmployeeId, a.EmployeeName, b.Salary
from Employee a, Working b, Company c
where a.EmployeeId = b.EmployeeId
and b.CompanyId = c.CompanyId
and c.CompanyName = 'City Bank'
and b.Salary 30000
4)查找每个公司员工的人数以及平均工资
SELECT b.CompanyName, COUNT(1) as empcnt, avg(a.salary) as avgsalary
from Working a, Company b
where a.companyid = b.companyid
group by b.companyname
关系代数
传统的集合运算是二目运算,并(∪)、差(−)、交(∩)、笛卡尔积(×)四种运算。
设关系 R 和关系 S 具有相同的目 n(即两个关系都有 n 个属性),且相应的的属性取自同一个域,t 是元组变量,t∈R 表示 t 是 R 的一个元组。
下图分别是具有三个属性列的关系 R、S :
可以定义并、差、交、笛卡尔积运算如下:
关系 R 与关系 S 的并由属于 R 且属于 S 的元组组成。其结果关系仍为 n 目关系。记作:
下图为关系 R 与关系 S 的并:
关系R与关系S的差由属于R而不属于S的所有元组组成。其结果关系仍为n目关系。记作::
下图为关系 R 与关系 S 的差:
关系R与关系S的交由既属于R又属于S的元组组成。其结果关系仍为n目关系。记作:
下图为关系 R 与关系 S 的交:
这里的笛卡尔积严格地讲是广义笛卡尔积(Extended Cartesian Product)。在不会出现混淆的情况下广义笛卡尔积也称为笛卡尔积。
两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1×k2个元组。
记作:
下图为关系 R 与关系 S 的笛卡尔积:
为了叙述上的方便,我们先引入几个记号。
选择又称为限制(Restriction)。它是在关系R中选择满足给定条件的诸元组,记作:
关系R上的投影是从R中选择出若干属性列组成新的关系。记作:
其中A为R中的属性列。投影操作是从列的角度进行运算。
【例】 查询学生的姓名和所在系,即求Student关系上学生姓名和所在系两个属性上的投影:
结果如下图所示,投影之后不仅取消了原关系的某些列,而且还可能取消某些元祖,因为取消了某些属性之后,就可能出现重复行,应取消这些完全相同的行。
结果如下图所示,Student关系原来有4个元组,而投影结果取消了重复的CS元组,因此只有三个元组:
除法运算是一个复合的二目运算。如果把笛卡尔积看作“乘法”运算,则除法运算可以看作这个“乘法”的逆运算。
给定关系R(X,Y)和S(Y,Z),其中X、Y、Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上的分量值x的像集YX包含S在Y上投影的集合。记作:
【例】在关系R中,A可以去4个值{a1,a2,a3,a4},其中:
a1的象集为{(b1,c2),(b2,c3),(b2,c1)};
a2的象集为{(b3,c7),(b2,c3)};
a3的象集为{(b4,c6)};
a4的象集为{(b6,c6)};
S在(B,C)上的投影为{(b1,c2),(b2,c1),(b2,c3)};
显然只有a1的象集包含了S在(B,C)属性组上的投影,所以 R÷S = { a1 }。
连接也称为θ连接,关系R与关系S的连接运算是从两个关系的广义笛卡尔积中选取属性间满足一定条件的元组形成一个新的连接:
θ在“=”时的连接为等值连接。它是从关系R和S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:
自然连接是一种特殊的等值链接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把属性重复的列去掉。即若R和S中具有相同的属性组B,U为R和S的全体属性集合,则自然连接可记作:
在自然连接的基础上加上左边表上不包含自然连接中所含元组(行)的元组。
在自然连接的基础上加上右边表上不包含自然连接中所含元组(行)的元组。
外连接=左连接 并 右连接;
表drivers有两个字段,司机的名字和司机会开的车的id:
表vehicles只有一个字段,即车的id:
使用关系除法的方案,sql为:
参考:
MySQL:关系除法
MySQL基础 -- 关系代数
数据库中用关系代数表达式,查询至少选修两门课程的学生的学号和姓名怎么写?
study(sno,cno,score)查询至少选修了两门课程的学生学号:π1(σ(1=4Λ2!=5)(study x study))。
select sno(学生的学号) from sc(学生选课表)
group by sno having count(*)1
select a.学号,b.姓名,a.cnt as 选修门数 from
(select 学号,count(1) as as cnt from 选课表 group by 学号
having count(1)=(select count(1) from 课程表)) a,
学生表 b where a.学号=b.学号;
扩展资料:
设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的差由属于R而不属于S的所有元组组成。其结果关系仍为n目关系。记作:
R-S={t|t∈R∧t∉S}
设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的交由既属于R又属于S的元组组成。其结果关系仍为n目关系。记作:
R∩S={t|t∈R∧t∈S}
这里的笛卡尔积严格地讲是广义笛卡尔积(Extended Cartesian Product)。在不会出现混淆的情况下广义笛卡尔积也称为笛卡尔积。
两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1×k2个元组。
参考资料来源:百度百科-关系代数
分享名称:mysql关系代数怎么写 mysql关系运算符有哪些
本文路径:http://myzitong.com/article/ddddhpj.html