使用SQL進(jìn)行集合查詢和數(shù)據(jù)維護(hù)

使用SQL進(jìn)行集合查詢和數(shù)據(jù)維護(hù)

[TOC]

1.分別查詢“計(jì)科系學(xué)生”和“所有男生”的并集,交集和差集。(15分)

--并集

SELECT *

FROM Student

WHERE Sdept='計(jì)算機(jī)系'

UNION

SELECT *

FROM Student

WHERE Sex='男'

--交集

SELECT *

FROM Student

WHERE Sdept='計(jì)算機(jī)系'

INTERSECT

SELECT *

FROM Student

WHERE Sex='男'

--差集

SELECT *

FROM Student

WHERE Sdept='計(jì)算機(jī)系'

EXCEPT

SELECT *

FROM Student

WHERE Sex='男'

2.查詢選修了“10001”號課程或選修了“10005”課程的學(xué)生學(xué)號。(5分)

SELECT Sno

FROM SC

WHERE Cno='10001'

UNION

SELECT Sno

FROM SC

WHERE Cno='10005'

3.查詢同時(shí)選修了“10001”和“10005” 號課程的學(xué)生學(xué)號。(5分)

SELECT Sno

FROM SC

WHERE Cno='10001'

INTERSECT

SELECT Sno

FROM SC

WHERE Cno='10005'

4.查詢選修了“10001”號課程,但沒選“10005” 號課程的學(xué)生學(xué)號。(5分)

SELECT Sno

FROM SC

WHERE Cno='10001'

EXCEPT

SELECT Sno

FROM SC

WHERE Cno='10005'

? *維護(hù)操作*

5.在學(xué)生表中插入一條新的學(xué)生記錄,數(shù)據(jù)可自擬。(注意,插入的數(shù)據(jù)需滿足完整性約束)(5分)

INSERT INTO Student

VALUES('20030101','王芳','女',19 ,'計(jì)算機(jī)系')

6.插入一條選課記錄,學(xué)號:10010118,課程號:20008,能否插入成功?為什么?(5分)

INSERT INTO SC(Sno,Cno)

VALUES('10010118','20008')

不能,錯(cuò)誤提示:NSERT 語句與 FOREIGN KEY 約束"FK_Sno"沖突。Cno是外鍵,參照Course中Cno的數(shù)值,Course中不存在課程號為“20008”的課程記錄。

7.查詢每個(gè)系及其人數(shù),將查詢結(jié)果插入到新表Sdept_Count中(10分)

--創(chuàng)建表

CREATE TABLE Sdept_Count(

? Sdept varchar(50),

? SNum int

)

--插入操作

INSERT INTO Sdept_Count(Sdept,SNum)

SELECT Sdept,COUNT(Sno)

FROM Student

GROUP BY Sdept

8.將學(xué)生“徐慶”的所在系修改為“計(jì)算機(jī)系”(5分)

UPDATE Student

SET Sdept='計(jì)算機(jī)系'

WHERE Sname='徐慶'

9.將所有課程的學(xué)分Credit提高1分。(5分)

UPDATE Course

SET Credit=Credit+1

10.將“徐慶”同學(xué)的學(xué)號修改為“19010101”,能否修改成功?為什么?(5分)

UPDATE Student

SET Sno='19010101'

WHERE Sname='徐慶'

不能修改成功,因?yàn)樵撋赟C表中存在選課記錄。

11.將選修了“計(jì)算機(jī)基礎(chǔ)”這門課的學(xué)生成績提高0.2(10分)

UPDATE SC

SET Score=Score*1.2

WHERE Sno IN(SELECT SNO

? FROM SC

? WHERE Cno=(SELECT Cno

? FROM Course

? WHERE Cname='計(jì)算機(jī)基礎(chǔ)'))

12.刪除學(xué)號為“10010118”的學(xué)生記錄。能否成功刪除?不能刪除的原因?如何解決?(10分)

不能刪除,原因是SC表中還存在外鍵的約束,即“10010118”的選課記錄。如果要成功刪除學(xué)生“10010118”,需要先刪除其所有選課記錄。

DELETE FROM SC

WHERE Sno='10010118'

``

DELETE FROM Student

WHERE Sno='10010118'

13.刪除“計(jì)算機(jī)基礎(chǔ)”這門課不及格的選課記錄(10分)

DELETE FROM SC

WHERE Score<60 AND Cno=

(SELECT Cno

FROM Course

WHERE Cname='計(jì)算機(jī)基礎(chǔ)')

14.把選課表SC清空。(5分)

DELETE FROM SC

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1).創(chuàng)建數(shù)據(jù)庫 create database學(xué)生選課數(shù)據(jù)庫 2).創(chuàng)建四張表 Create table Stu...
    blvftigd閱讀 1,692評論 0 0
  • 一。數(shù)據(jù)庫基本概念:數(shù)據(jù)、數(shù)據(jù)庫。數(shù)據(jù)模型/DBMS(數(shù)據(jù)庫管理系統(tǒng))/DBS(數(shù)據(jù)庫系統(tǒng))二。數(shù)據(jù)庫內(nèi)部組成二維...
    S_s_s_a53f閱讀 572評論 0 0
  • 單表查詢 只在一個(gè)表中查詢數(shù)據(jù) 多表查詢 同時(shí)查詢多個(gè)表 說明:這是在學(xué)生表student和成績表SC中查詢成績大...
    愛撒謊的男孩閱讀 1,264評論 0 2
  • 介紹多表查詢等復(fù)雜SQL語句。 關(guān)系數(shù)據(jù)庫的查詢結(jié)果都是一個(gè)結(jié)果表(也是關(guān)系) 集聚函數(shù) 基本語法 統(tǒng)計(jì)元組個(gè)數(shù)C...
    zealscott閱讀 913評論 0 0
  • 作為一枚Java后端開發(fā)者,數(shù)據(jù)庫知識必不可少,對數(shù)據(jù)庫的掌握熟悉度的考察也是對這個(gè)人是否有扎實(shí)基本功的考察。特別...
    丶Orz丶閱讀 569評論 0 0

友情鏈接更多精彩內(nèi)容