99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2023-11-01 閱讀量: 2631
CDA一級SQL學(xué)習(xí)之要查詢“計算機(jī)” 系的沒有不及格成績的學(xué)生學(xué)號和姓名

單選題:有關(guān)系S(SNO,SNAME,SDEPT,SAGE),C(CNO,CNAME),Sc(SNO,CNO,GRADE)。其中SNO是學(xué)生號,SNAME是學(xué)生姓名,SDEPT是系別,SAGE是學(xué)生年齡,CNO是號,CNAME是課程名稱,GRADE是成績。要查詢“計算機(jī)”系的沒有不及格成績的學(xué)生學(xué)號和姓名 ( )

A.SELECT Sno, Sname FROM S WHERE Sdept='計算機(jī)' INTERSECT SELECT Sno, Sname FROM SC WHERE GRADE>=60;

B.SELECT Sno, Sname FROM S WHERE Sdept='計算機(jī)' and Sno not in (SELECT SNO FROM SC WHERE GRADE<60);

C.SELECT Sno, Sname FROM S WHERE Sdept='計算機(jī)' EXCEPT SELECT SNOFROM SC WHERE GRADE<60;

D.SELECT Sno, Sname FROM S WHERE Sdept='計算機(jī)' and SNO in (SELECT SNO FROM SC WHERE GRADE>=60);

b3b19a5da6460f683e97aaecfad18b1.png

答案:選B

解析:

首先提示一點(diǎn),一個學(xué)生會對應(yīng)多個課程,會存在有的課程及格有的課程不及格,如下表所示:

學(xué)號 課程 成績

學(xué)生A 課程1 66

學(xué)生A 課程2 55

學(xué)生A 課程3 44

其次沒有不及格成績的學(xué)生學(xué)號和姓名,意味著這個學(xué)生的所有課程成績都要及格,上表中的學(xué)生A這類有的課程及格有的課程不及格的學(xué)生不符合條件

小伙伴大多疑問D選項(xiàng),對于SELECT SNO FROM SC WHERE GRADE>=60這個子查詢,學(xué)生A這類有的課程及格有的課程不及格的學(xué)生會出現(xiàn)在子查詢結(jié)果中,進(jìn)而最后結(jié)果中也會出現(xiàn)學(xué)生A這類有的課程及格有的課程不及格的學(xué)生,因此D不是正確的答案。


詳細(xì)探討

A. SELECT Sno, Sname FROM S WHERE Sdept='計算機(jī)’INTERSECT SELECT Sno, Sname FROM SC WHERE GRADE>=60;

首先 其中SELECT Sno, Sname FROM SC WHERE GRADE>=60錯誤,Sname 不在SC中,這個子查詢無法執(zhí)行。

其次這個查詢語句使用了INTERSECT操作符來獲取同時滿足兩個條件的學(xué)生學(xué)號和姓名。首先,在第一個子查詢中,我們選擇S表中Sno和Sname列,限定條件是Sdept為“計算機(jī)”。然后,在第二個子查詢中,我們選擇SC表中Sno和Sname列,限定條件是GRADE大于等于60, 學(xué)生A這類有的課程及格有的課程不及格的學(xué)生會被查詢到,。最后,使用INTERSECT操作符來獲取兩個子查詢的交集。然而,學(xué)生A這類有的課程及格有的課程不及格的學(xué)生會出現(xiàn)在最后結(jié)果中,因此不是正確的答案。

B. SELECT Sno, Sname FROM S WHERE Sdept='計算機(jī)' and Sno not in (SELECT SNO FROM SC WHERE GRADE<60);

這個查詢語句使用了NOT IN關(guān)鍵字來排除主查詢中的學(xué)生學(xué)號在子查詢中出現(xiàn)的情況。首先,在主查詢中,我們從S表中選擇Sno和Sname列,限定條件是Sdept為“計算機(jī)”。然后,在子查詢中,我們選擇SC表中的SNO列,限定條件是GRADE小于60。最后,使用NOT IN關(guān)鍵字來排除主查詢中的學(xué)生學(xué)號在子查詢中出現(xiàn)的情況。這樣,只有在S表中的學(xué)生學(xué)號不在SC表中的不及格成績學(xué)生學(xué)號列表中的學(xué)生才會被選擇。因此,這個查詢語句是正確的答案。

C. SELECT Sno, Sname FROM S WHERE Sdept='計算機(jī)’ EXCEPT SELECT Sno FROM SC WHERE GRADE<60;

會報措提示:列數(shù)不一致 Error Code: 1222. The used SELECT statements have a different number of columns。EXCEPT前后列數(shù)不一致,無法執(zhí)行。改為:SELECT Sno FROM S WHERE Sdept='計算機(jī)’ EXCEPT SELECT Sno FROM SC WHERE GRADE<60;可以得到結(jié)果,但是結(jié)果無學(xué)生姓名Sname 。因此不是正確的答案。

D. SELECT Sno, Sname FROM S WHERE Sdept='計算機(jī)’ and SNO in (SELECT SNO FROM SC WHERE GRADE>=60);

對于SELECT SNO FROM SC WHERE GRADE>=60這個子查詢,學(xué)生A這類有的課程及格有的課程不及格的學(xué)生會出現(xiàn)在子查詢結(jié)果中,進(jìn)而最后結(jié)果中也會出現(xiàn)學(xué)生A這類有的課程及格有的課程不及格的學(xué)生,因此D不是正確的答案

綜上所述,B是正確的答案


備注:比較新的 MySQL 8.0.31 版本支持INTERSECT 和 EXCEPT,老版本不支持


以下是我對于此題的SQL建表建數(shù)實(shí)踐,感興趣的伙伴可以試試。


##建表建數(shù)實(shí)踐:

#創(chuàng)建S表:

#DROP TABLE S;

CREATE TABLE S (

Sno CHAR(10) PRIMARY KEY,

Sname VARCHAR(20) NOT NULL,

Sdept VARCHAR(20) NOT NULL,

Sage INT NOT NULL

);


INSERT INTO S VALUES ('S001', '張三', '計算機(jī)', 20);

INSERT INTO S VALUES ('S002', '李四', '數(shù)學(xué)', 21);

INSERT INTO S VALUES ('S003', '王五', '計算機(jī)', 19);

INSERT INTO S VALUES ('S004', '趙六', '物理', 20);

INSERT INTO S VALUES ('S005', '錢七', '計算機(jī)', 22);


#創(chuàng)建C表:

#DROP TABLE C;

CREATE TABLE C (

Cno CHAR(10) PRIMARY KEY,

Cname VARCHAR(20) NOT NULL

);


INSERT INTO C VALUES ('C001', '數(shù)據(jù)庫');

INSERT INTO C VALUES ('C002', '數(shù)據(jù)結(jié)構(gòu)');

INSERT INTO C VALUES ('C003', '計算機(jī)組成原理');

INSERT INTO C VALUES ('C004', '操作系統(tǒng)');

INSERT INTO C VALUES ('C005', '計算機(jī)網(wǎng)絡(luò)');


#創(chuàng)建SC表:

#DROP TABLE SC;

CREATE TABLE SC (

Sno CHAR(10) NOT NULL,

Cno CHAR(10) NOT NULL,

Grade INT NOT NULL,

PRIMARY KEY (Sno, Cno),

FOREIGN KEY (Sno) REFERENCES S(Sno),

FOREIGN KEY (Cno) REFERENCES C(Cno)

);


INSERT INTO SC VALUES ('S001', 'C001', 66);

INSERT INTO SC VALUES ('S001', 'C002', 55);

INSERT INTO SC VALUES ('S001', 'C003', 44);

INSERT INTO SC VALUES ('S002', 'C001', 75);

INSERT INTO SC VALUES ('S002', 'C002', 80);

INSERT INTO SC VALUES ('S002', 'C003', 70);

INSERT INTO SC VALUES ('S003', 'C001', 90);

INSERT INTO SC VALUES ('S003', 'C002', 95);

INSERT INTO SC VALUES ('S003', 'C003', 85);

INSERT INTO SC VALUES ('S004', 'C001', 70);

INSERT INTO SC VALUES ('S004', 'C002', 80);

INSERT INTO SC VALUES ('S004', 'C003', 75);

INSERT INTO SC VALUES ('S005', 'C001', 85);

INSERT INTO SC VALUES ('S005', 'C002', 90);

INSERT INTO SC VALUES ('S005', 'C003', 80);



A.SELECT Sno, Sname FROM S WHERE Sdept='計算機(jī)' INTERSECT SELECT Sno, Sname FROM SC WHERE GRADE>=60;


B.SELECT Sno, Sname FROM S WHERE Sdept='計算機(jī)' and Sno not in (SELECT SNO FROM SC WHERE GRADE<60);


C.SELECT Sno, Sname FROM S WHERE Sdept='計算機(jī)' EXCEPT SELECT SNOFROM SC WHERE GRADE<60;


D.SELECT Sno, Sname FROM S WHERE Sdept='計算機(jī)' and SNO in (SELECT SNO FROM SC WHERE GRADE>=60);






0.0000
0
關(guān)注作者
收藏
評論(0)

發(fā)表評論

暫無數(shù)據(jù)
推薦帖子