A. 在sql語言的SELECT語句中,對投影操作進行說明的是哪個子句
SELECT
B. 怎樣使用SQL語句實現選擇、投影和連接等關系運算
SQL語句中select對應投影運算,where語句對應選擇運算,from後面的表對應連接運算,其中
from a, b表示笛卡爾集
from a join b on a.A=b.A對應自然連接
C. 2個表的笛卡爾積怎麼用sql語句表示
第一個表的行數乘以第二個表的行數等於笛卡爾積結果集的大小
SELECT * FROM table1 CROSS JOIN table2
select a.*,b.* from table1 a ,table2 b
D. SQL三張表連接笛卡爾積是多少
table1(2條數據)
結論: 最終得到的數量為table1 join table2後的交集在×table3的數量
2x2=4
E. 問一道SQL語言的題目
1.寫一個視圖,列出每個國家人口最多的城市的人口數量,欄位列表為(國名,人口)
create view v_max_population
as
select 國家.國名,max(城市.人口) from 國家
inner join 城市 on 國家.首都名=城市.首都名
group by 國家.國名
思路:
這里要使用 inner join ,內聯結,否則結果雖似正確,但某些情況下就可能出錯。按 國名 進行分組,再用max取出最大值。另外,這資料庫的建模本身就不符合3NF,之間的外鍵聯系居然是首都名,這樣不僅造成冗餘,也不方便修改。
2.在國家表中增加一列:城市數量(int)
alter table 國家 add 城市數量 int
3.在國家表新增的城市數量欄位中,填寫表中每個國家的城市數量
update 國家 N set N.城市數量=
(
select count(城市.城市名) from 城市 C
where N.首都名=C.首都名
)
思路:子查詢,從外邊的國家N表中傳數據進去里邊的查詢使用,從而得出該國家城市數量
4.列出每個國家中人口數最少的城市名稱和人口數量
select 城市.城市名,min(城市.人口) from 城市
inner join 國家 on 國家.首都名=城市.首都名
group by 國家.國名
思路:同1。inner join是進行笛卡爾積的運算,也就是說,將兩張表合為一張。
如合成後的新表為:
國名,首都名,面積,城市名,首都名,人口
F. sql 有關笛卡爾積的問題
我測試建了幾個表,你自己對照改成你得表名列名就行了
create table student
(
sid int identity primary key,
name nvarchar(50)
)
insert into student
select 'aaa' union
select 'bbb' union
select 'ccc'
go
create table F
(
fid int identity primary key,
fname nvarchar(50)
)
go
insert into F
select '數學' union
select '語文' union
select '英語'
go
create table Score
(
cid int identity primary key,
sid int,
fid int,
score int
)
go
insert into score
select 1,1,60 union
select 1,2,70 union
select 1,3,80 union
select 2,1,90
go
select * from student
select * from f
select * from score
go
select s.sid,f.fid,s.name,fname
from student s
cross join score c
cross join f
where
not exists
(
select cid from score where s.sid=score.sid and f.fid=score.fid
)
group by s.sid,s.name,fname,f.fid
order by sid
G. 若有關系R (A,B,c,D)和S(C,D,E),則與表達式π3,4,7(σ4<5 (R×S))等價的SQL語句是什麼
若有關系R (A,B,C,D)和S(C,D,E),則與表達式π3,4,7(σ4<5 (R×S))等價的SQL語句是SELECT R.C,R.D,S.EFROM R, S WHERER.D<S.C。
兩個集合X和Y的笛卡爾積,表示為X×Y,是指第一個對象是X的成員,而第二個對象是Y的所有可能有序對的其中一個成員。假設集合A={a, b},集合B={0, 1, 2},則兩個集合的笛卡爾積為{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。等價的SQL語句是SELECT*FROM R, S。
σ4<5是限制關系代數,用對關系的運算來表達查詢。等價的SQL語句是R.D<S.C。
π3,4,7是獲取查詢表裡的對應的數據。等價的SQL語句是R.C,R.D,S.E。
(7)投影笛卡爾積對應的sql題目擴展閱讀:
關系代數用到的運算符包括四類:集合運算符、專門的關系運算符、算術比較符和邏輯運算符比較運算符和邏輯運算符是用來輔助專門的關系運算符進行操作的,所以按照運算符的不同,主要將關系代數分為傳統的集合運算和專門的關系運算兩類。
笛卡爾積RxS是一個(m+n)目關系,前n列是關系R的屬性,後n列是關系S的屬性。每個元組的前n個屬性是關系R的一個元組,後m個屬性是關系S的一個元組。若關系R有p個元組,關系S有q個元組,關系RxS有pxq個元組,且每個元組的屬性為(m+n)。
H. SQL的笛卡爾積問題,我現在需要從這3張表中取出這些數據,但出現重復,求正確語句
消除笛卡爾乘積最根本的原因在於唯一ID,就像學號,一個學生就只有一個學號,學號就是這個學生的唯一標識碼。使用左連接,當左邊的ID和右邊ID都是唯一時,就不會產生笛卡爾現象。 Selectwms_process_doc.CODE,wms_process_doc.COMPANY_ID,wms_process_doc.DESCRIPTION,wms_process_doc.CREATED_TIME,wms_process_doc.STORAGE_DATE,wms_processplan.CODE, wms_processplan.NAME, wms_processplan.PACKAGE_UNIT_ID, wms_process_doc.EXPIRE_DATE, wms_process_doc.PRODUCE_DATE, wms_process_doc.PROCESS_QUANTITY, wms_processplan_detail.QUANTITY_BU, wms_process_doc.LOCATION_CODE,wms_process_doc.BILL_TYPE_ID,wms_process_doc.PICKED_QUANTITY FROM wms_process_doc left join wms_processplan on wms_process_doc.XX = s_processplan.XX left join wms_processplan_detail ON s_processplan.XX = wms_processplan_detail .XX
I. SQL資料庫常用命令及語法舉例
下面是一些常用的SQL語句,雖然很基礎,可是卻很值得收藏,對於初學者非常實用