1)查詢在XYZ工資工作的員工ID和姓名列表。
和靜ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信: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)查找每個公司員工的人數(shù)以及平均工資
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
傳統(tǒng)的集合運算是二目運算,并(∪)、差(?)、交(∩)、笛卡爾積(×)四種運算。
設(shè)關(guān)系 R 和關(guān)系 S 具有相同的目 n(即兩個關(guān)系都有 n 個屬性),且相應(yīng)的的屬性取自同一個域,t 是元組變量,t∈R 表示 t 是 R 的一個元組。
下圖分別是具有三個屬性列的關(guān)系 R、S :
可以定義并、差、交、笛卡爾積運算如下:
關(guān)系 R 與關(guān)系 S 的并由屬于 R 且屬于 S 的元組組成。其結(jié)果關(guān)系仍為 n 目關(guān)系。記作:
下圖為關(guān)系 R 與關(guān)系 S 的并:
關(guān)系R與關(guān)系S的差由屬于R而不屬于S的所有元組組成。其結(jié)果關(guān)系仍為n目關(guān)系。記作::
下圖為關(guān)系 R 與關(guān)系 S 的差:
關(guān)系R與關(guān)系S的交由既屬于R又屬于S的元組組成。其結(jié)果關(guān)系仍為n目關(guān)系。記作:
下圖為關(guān)系 R 與關(guān)系 S 的交:
這里的笛卡爾積嚴格地講是廣義笛卡爾積(Extended Cartesian Product)。在不會出現(xiàn)混淆的情況下廣義笛卡爾積也稱為笛卡爾積。
兩個分別為n目和m目的關(guān)系R和S的廣義笛卡爾積是一個(n+m)列的元組的集合。元組的前n列是關(guān)系R的一個元組,后m列是關(guān)系S的一個元組。若R有k1個元組,S有k2個元組,則關(guān)系R和關(guān)系S的廣義笛卡爾積有k1×k2個元組。
記作:
下圖為關(guān)系 R 與關(guān)系 S 的笛卡爾積:
為了敘述上的方便,我們先引入幾個記號。
選擇又稱為限制(Restriction)。它是在關(guān)系R中選擇滿足給定條件的諸元組,記作:
關(guān)系R上的投影是從R中選擇出若干屬性列組成新的關(guān)系。記作:
其中A為R中的屬性列。投影操作是從列的角度進行運算。
【例】 查詢學生的姓名和所在系,即求Student關(guān)系上學生姓名和所在系兩個屬性上的投影:
結(jié)果如下圖所示,投影之后不僅取消了原關(guān)系的某些列,而且還可能取消某些元祖,因為取消了某些屬性之后,就可能出現(xiàn)重復(fù)行,應(yīng)取消這些完全相同的行。
結(jié)果如下圖所示,Student關(guān)系原來有4個元組,而投影結(jié)果取消了重復(fù)的CS元組,因此只有三個元組:
除法運算是一個復(fù)合的二目運算。如果把笛卡爾積看作“乘法”運算,則除法運算可以看作這個“乘法”的逆運算。
給定關(guān)系R(X,Y)和S(Y,Z),其中X、Y、Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運算得到一個新的關(guān)系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上的分量值x的像集YX包含S在Y上投影的集合。記作:
【例】在關(guān)系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 }。
連接也稱為θ連接,關(guān)系R與關(guān)系S的連接運算是從兩個關(guān)系的廣義笛卡爾積中選取屬性間滿足一定條件的元組形成一個新的連接:
θ在“=”時的連接為等值連接。它是從關(guān)系R和S的廣義笛卡爾積中選取A、B屬性值相等的那些元組,即等值連接為:
自然連接是一種特殊的等值鏈接,它要求兩個關(guān)系中進行比較的分量必須是相同的屬性組,并且在結(jié)果中把屬性重復(fù)的列去掉。即若R和S中具有相同的屬性組B,U為R和S的全體屬性集合,則自然連接可記作:
在自然連接的基礎(chǔ)上加上左邊表上不包含自然連接中所含元組(行)的元組。
在自然連接的基礎(chǔ)上加上右邊表上不包含自然連接中所含元組(行)的元組。
外連接=左連接 并 右連接;
表drivers有兩個字段,司機的名字和司機會開的車的id:
表vehicles只有一個字段,即車的id:
使用關(guān)系除法的方案,sql為:
參考:
MySQL:關(guān)系除法
MySQL基礎(chǔ) -- 關(guān)系代數(shù)
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 選修門數(shù) from
(select 學號,count(1) as as cnt from 選課表 group by 學號
having count(1)=(select count(1) from 課程表)) a,
學生表 b where a.學號=b.學號;
擴展資料:
設(shè)關(guān)系R和關(guān)系S具有相同的目n,且相應(yīng)的屬性取自同一個域,則關(guān)系R與關(guān)系S的差由屬于R而不屬于S的所有元組組成。其結(jié)果關(guān)系仍為n目關(guān)系。記作:
R-S={t|t∈R∧t?S}
設(shè)關(guān)系R和關(guān)系S具有相同的目n,且相應(yīng)的屬性取自同一個域,則關(guān)系R與關(guān)系S的交由既屬于R又屬于S的元組組成。其結(jié)果關(guān)系仍為n目關(guān)系。記作:
R∩S={t|t∈R∧t∈S}
這里的笛卡爾積嚴格地講是廣義笛卡爾積(Extended Cartesian Product)。在不會出現(xiàn)混淆的情況下廣義笛卡爾積也稱為笛卡爾積。
兩個分別為n目和m目的關(guān)系R和S的廣義笛卡爾積是一個(n+m)列的元組的集合。元組的前n列是關(guān)系R的一個元組,后m列是關(guān)系S的一個元組。若R有k1個元組,S有k2個元組,則關(guān)系R和關(guān)系S的廣義笛卡爾積有k1×k2個元組。
參考資料來源:百度百科-關(guān)系代數(shù)