設有三個關系模式如下:
學生 S(S#,SNAME,AGE,SEX)
各屬性的含義為:學號,姓名,年齡,性別
學習 SC(S#,C#,GRADE)
各屬性的含義為:學號,課程號,成績
課程 C(C#,CNAME,TEACHER)
各屬性的含義為:課程號,課程名,教師
基于以上關系模式回答1-8題:
用SQL陳述句建立學生 S關系。
用SQL陳述句查詢成績位于70分至90分之間的學習情況。
用SQL陳述句查詢課程名中包含‘資料’詞語的課程資訊
用SQL陳述句統計男生和女生的人數。
用SQL陳述句查詢教師‘TOM’所授課程的課程號和課程名。
用SQL陳述句將學生的資料庫系統課程成績提高10%。
用SQL陳述句的嵌套子查詢實作以下查詢:沒有選修教師‘TOM’課程的學生姓名。
用SQL陳述句給學習sc模式的成績欄位grade上添加自定義約束,使其取值只能在0-100之間。
設有如下三個關系表:
借書卡:CARD(cno,NAME ,CLASS)
圖書:BOOKS(bnO,BNAME,AUTHOR,PRICE,QUANTITY)
借書記錄:BORROW(cno,BNO,RDATE)
使用SQL陳述句完成如下處理:
用SQL陳述句建立借書記錄:BORROW(cno,BNO,RDATE)關系。
找出借書超過5本的讀者,輸出借書卡號及所借圖書冊數。
查詢借閱了"水滸"一書的讀者,輸出姓名及班級。
查詢過期未還圖書,輸出借閱者借書卡號、書號及還書日期。
查詢書名包括"網路"關鍵詞的圖書,輸出書號、書名、作者。
查詢現有圖書中價格最高的圖書,輸出書名及作者。
從BOOKS表中洗掉當前無人借閱的圖書記錄。
設有如下4個關系模式:S(SN,SNAME,CITY),P(PN,PNAME,COLOR,WEIGHT),J(JN,JNAME,CITY),SPJ(SN,PN,JN,QTY)。其中:S表示供應商,SN為供應商編碼,SNAME為供應商名字,CITY為供應商所在城市;P表示零件,PN為零件編碼,PNAME為零件名字,COLOR為零件顏色,WEIGHT為零件重量;J表示工程,JN為工程編碼,JNAME為工程名字,CITY為工程所在城市;SPJ表示供應關系,QTY表示提供的零件數量。 寫出實作以下各功能的SQL陳述句:
(1)取出所有工程的全部細節。
(2)取出所在城市為南京的所有工程的全部細節。
(3)取出為所在城市為上海的工程提供零件的供應商編碼。
(4)取出為所在城市為上海或北京的工程提供紅色零件的供應商編碼。
(5)取出供應商與工程所在城市相同的供應商提供的零件編碼。
(6)取出至少由一個和工程不在同一城市的供應商提供零件的工程編碼。
(7)取出上海供應商不提供任何零件的工程編碼。
(8)取出所有這樣的一些<CITY,CITY>二元組,使得第1個城市的供應商為第2個城市的工程提供零件。
(9)取出所有紅色零件的全部細節。
(10)取出所有供應商的全部細節。
(11)取出所有零件的全部細節。
(12)取出所有供應關系的全部細節。
(13)取出所在城市為北京的所有工程的工程編碼。
(14)取出所在城市為上海的所有工程的工程名字。
(15)取出為所在城市為南京的工程提供零件的供應商編碼和零件編碼。
uj5u.com熱心網友回復:
--創建學生表CREATE table s
(
s_id int,
SNAME varchar(200),
AGE varchar(10),
SEX varchar(10)
)
--插入學生表資料
INSERT into s VALUES (001,'張三',17,'男')
INSERT into s VALUES (002,'張一',17,'女')
INSERT into s VALUES (003,'張二',18,'男')
INSERT into s VALUES (004,'王一',16,'女')
INSERT into s VALUES (005,'王二',16,'女')
INSERT into s VALUES (006,'王三',18,'男')
--創建課程表
CREATE table C
(
c_id int,
CNAME varchar(200),
TEACHER varchar(200)
)
--插入課程資料
INSERT into c VALUES (1,'高數','祖沖之')
INSERT into c VALUES (2,'國語','屈原')
INSERT into c VALUES (3,'資料','ANY')
INSERT into c VALUES (4,'英語','TOM')
INSERT into c VALUES (5,'政治','ALE')
--創建成績表
CREATE table sc
(
sc_id int,
c_id int,
GRADE float check(GRADE between 0 and 100) --用SQL陳述句給學習sc模式的成績欄位grade上添加自定義約束,使其取值只能在0-100之間
)
-- 插入成績資料
INSERT into sc VALUES (1,1,70)
INSERT into sc VALUES (1,2,90)
INSERT into sc VALUES (1,4,77)
INSERT into sc VALUES (1,5,62)
INSERT into sc VALUES (2,1,80)
INSERT into sc VALUES (2,2,78)
INSERT into sc VALUES (2,3,99)
INSERT into sc VALUES (2,5,72)
INSERT into sc VALUES (3,1,45)
INSERT into sc VALUES (3,2,67)
INSERT into sc VALUES (3,3,83)
INSERT into sc VALUES (3,4,77)
INSERT into sc VALUES (3,5,90)
INSERT into sc VALUES (4,1,76)
INSERT into sc VALUES (4,2,59)
INSERT into sc VALUES (4,3,90)
INSERT into sc VALUES (4,5,79)
INSERT into sc VALUES (5,1,94)
INSERT into sc VALUES (5,2,85)
INSERT into sc VALUES (5,4,69)
INSERT into sc VALUES (5,5,79)
INSERT into sc VALUES (6,1,79)
INSERT into sc VALUES (6,2,88)
INSERT into sc VALUES (6,3,79)
INSERT into sc VALUES (6,5,54)
--用SQL陳述句查詢成績位于70分至90分之間的學習情況。
SELECT s.s_id,s.SNAME ,s.SEX,c.CNAME,SC.GRADE FROM s
left join SC on s.s_id=SC.sc_id
left JOIN C on c.c_id=sc.c_id
WHERE GRADE>=70 AND GRADE<90
--用SQL陳述句查詢課程名中包含‘資料’詞語的課程資訊
SELECT * FROM s
left join SC on s.s_id=SC.sc_id
left JOIN C on c.c_id=sc.c_id
where c.cname='資料'
-- 用SQL陳述句統計男生和女生的人數。
SELECT SEX,COUNT(1) FROM s GROUP BY SEX
--用SQL陳述句查詢教師‘TOM’所授課程的課程號和課程名。
SELECT * FROM C where TEACHER ='TOM'
--用SQL陳述句將學生的資料庫系統課程成績提高10%。
SELECT s.SNAME,C.CNAME,SC.grade,SC.grade*1.1 as 提升成績 FROM s
left join SC on s.s_id=SC.sc_id
JOIN C on c.c_id=sc.c_id
--用SQL陳述句的嵌套子查詢實作以下查詢:沒有選修教師‘TOM’課程的學生姓名。
SELECT * FROM s where s_id NOT in(
SELECT sc_id FROM SC where c_id not IN(
SELECT c_id FROM c
where TEACHER <>'TOM'
))
uj5u.com熱心網友回復:
謝謝呀,第二題第三題會嗎?
uj5u.com熱心網友回復:
CREATE TABLE CARD(
cno int , --卡ID
NAME VARCHAR(30), --學生姓名
CLASS VARCHAR(30) --班級
)
INSERT INTO CARD VALUES(101,'張三','一班')
INSERT INTO CARD VALUES(102,'張一','十一班')
INSERT INTO CARD VALUES(103,'張二','七班')
INSERT INTO CARD VALUES(104,'張五','九班')
INSERT INTO CARD VALUES(105,'張九','五班')
CREATE TABLE BOOKS(
bnO int , --書ID
BNAME VARCHAR(30), --書名
AUTHOR VARCHAR(30) , -- 作者
PRICE float ,--單價
QUANTITY int --數量
)
INSERT INTO BOOKS VALUES(201,'《水滸傳》','施耐庵',100,10)
INSERT INTO BOOKS VALUES(301,'《三國演義》','羅貫中',120,20)
INSERT INTO BOOKS VALUES(211,'《西游記》','吳承恩',110,15)
INSERT INTO BOOKS VALUES(241,'《紅樓夢》','曹雪芹',130,25)
INSERT INTO BOOKS VALUES(341,'《聊齋志異》','蒲松齡',150,100)
INSERT INTO BOOKS VALUES(141,'《儒林外史》','吳敬梓',135,50)
INSERT INTO BOOKS VALUES(111,'《西廂記 》','王實甫',136,70)
INSERT INTO BOOKS VALUES(10011,'《網路》','張全',178,30)
INSERT INTO BOOKS VALUES(1131,'《網路大全》','王校長',145,1)
INSERT INTO BOOKS VALUES(1511,'《網路說明》','李陵',160,10)
CREATE TABLE BORROW(
bnO int , --書ID
cno int, --卡ID
QUANTITY datetime --歸還日期
)
INSERT INTO BORROW VALUES(301 ,101,'2019-12-27')
INSERT INTO BORROW VALUES(211 ,102,'2019-12-26')
INSERT INTO BORROW VALUES(301 ,103,'2019-12-25')
INSERT INTO BORROW VALUES(341 ,104,'2019-12-24')
INSERT INTO BORROW VALUES(301 ,105,'2019-12-29')
INSERT INTO BORROW VALUES(211 ,105,'2019-12-29')
INSERT INTO BORROW VALUES(241 ,105,'2019-12-29')
INSERT INTO BORROW VALUES(341 ,105,'2019-12-29')
INSERT INTO BORROW VALUES(141 ,105,'2019-12-29')
INSERT INTO BORROW VALUES(111 ,105,'2019-12-29')
INSERT INTO BORROW VALUES(201 ,105,'2019-12-31')
select * FROM BORROW
select * from CARD
SELECT * FROM BOOKS
--借書超過5本的讀者,輸出借書卡號及所借圖書冊數。
select a.cno as 卡號, b.QUANTITY as 冊數 FROM (
SELECT * FROM BORROW where cno IN(
select cno from BORROW group by cno having count(cno)>=5)) a
JOIN BOOKS b ON a.bnO=b.bnO
--查詢借閱了"水滸"一書的讀者,輸出姓名及班級。
SELECT a.NAME,a.CLASS FROM CARD a
join BORROW b ON a.cno=b.cno
JOIN BOOKS c ON b.bnO=c.bnO
WHERE c.BNAME='《水滸傳》'
--查詢過期未還圖書,輸出借閱者借書卡號、書號及還書日期。
SELECT c.cno,b.bnO,a.QUANTITY FROM BORROW a
JOIN BOOKS b ON a.bnO=b.bnO
JOIN CARD c ON a.cno=c.cno
where a.QUANTITY<GETDATE()
--查詢書名包括"網路"關鍵詞的圖書,輸出書號、書名、作者。
SELECT bnO,BNAME,AUTHOR FROM BOOKS where BNAME LIKE '%網路%'
--查詢現有圖書中價格最高的圖書,輸出書名及作者。
SELECT a.BNAME,a.BNAME FROM BOOKS a where 1>(select COUNT(*) from BOOKS where PRICE>a.PRICE )
--從BOOKS表中洗掉當前無人借閱的圖書記錄。
DELETE FROM BOOKS WHERE bnO IN(
SELECT bnO FROM BOOKS where bnO NOT IN(
SELECT bnO FROM BORROW
))
uj5u.com熱心網友回復:
在上班,只有空閑時間給你更新,有點慢
uj5u.com熱心網友回復:
CREATE TABLE S(SN int , --供應商編碼
SNAME VARCHAR(30), --供應商名字
CITY VARCHAR(30) --供應商所在城市
)
INSERT INTO S VALUES(101,'張三','成都')
INSERT INTO S VALUES(102,'李四','北京')
INSERT INTO S VALUES(103,'王五','上海')
INSERT INTO S VALUES(104,'陳六','南京')
INSERT INTO S VALUES(105,'趙七','杭州')
CREATE TABLE P(
PN int , --零件編碼
PNAME VARCHAR(30), --零件名字
COLOR VARCHAR(30), --零件顏色
WEIGHT VARCHAR(30) --零件重量
)
INSERT INTO P VALUES(1001,'小螺絲','紅色','1g')
INSERT INTO P VALUES(1002,'中螺絲','藍色','2g')
INSERT INTO P VALUES(1003,'大螺絲','白色','3g')
INSERT INTO P VALUES(2001,'小釘','紅色','4g')
INSERT INTO P VALUES(2002,'中釘','綠色','5g')
INSERT INTO P VALUES(2003,'大釘','黑色','6g')
INSERT INTO P VALUES(2004,'大釘','紅色','6g')
CREATE TABLE J(
JN int , --JN為工程編碼
JNAME VARCHAR(30), --工程名字
CITY VARCHAR(30) --工程所在城市
)
INSERT INTO J VALUES(1,'國貿','成都')
INSERT INTO J VALUES(2,'王府井','北京')
INSERT INTO J VALUES(3,'西單','北京')
INSERT INTO J VALUES(4,'五角大樓','上海')
INSERT INTO J VALUES(5,'萬達','南京')
INSERT INTO J VALUES(6,'IFS','上海')
CREATE TABLE SPJ(
SN int , --供應商編碼
PN int , --零件編碼
JN int , --JN為工程編碼
JNAME float --提供的零件數量
)
INSERT into SPJ VALUES (105,1001,1,500000)
INSERT into SPJ VALUES (105,1003,5,505000)
INSERT into SPJ VALUES (102,1001,2,500000)
INSERT into SPJ VALUES (102,1003,2,600000)
INSERT into SPJ VALUES (102,2001,3,560000)
INSERT into SPJ VALUES (102,2004,3,350000)
INSERT into SPJ VALUES (103,1001,4,100000)
INSERT into SPJ VALUES (103,1003,4,10000)
INSERT into SPJ VALUES (103,2002,4,50000)
INSERT into SPJ VALUES (103,2003,4,700000)
--取出所有工程的全部細節。
SELECT *
FROM J
left JOIN SPJ on J.JN=SPJ.JN
left JOIN S on SPJ.SN=S.SN
--取出所在城市為南京的所有工程的全部細節。
select *
FROM J
left JOIN SPJ on J.JN=SPJ.JN
left JOIN S on SPJ.SN=S.SN
where j.CITY ='南京'
--取出為所在城市為上海的工程提供零件的供應商編碼。
SELECT S.SN as 供應商編碼
FROM J
JOIN SPJ on J.JN=SPJ.JN
JOIN S on SPJ.SN=S.SN
where j.CITY ='上海'
--取出為所在城市為上海或北京的工程提供紅色零件的供應商編碼。
SELECT S.SN as 供應商編碼
FROM J
JOIN SPJ on J.JN=SPJ.JN
JOIN S on SPJ.SN=S.SN
JOIN P on P.PN=SPJ.PN
where j.CITY IN ('上海','北京') AND COLOR='紅色'
--取出供應商與工程所在城市相同的供應商提供的零件編碼。
SELECT P.PN as 零件編碼
FROM J --工程
JOIN SPJ on J.JN=SPJ.JN --關系
JOIN S on SPJ.SN=S.SN -- 供應
JOIN P on P.PN=SPJ.PN -- 零件
where j.CITY = S.CITY
--取出至少由一個和工程不在同一城市的供應商提供零件的工程編碼。
SELECT j.JN as 工程編碼
FROM J --工程
JOIN SPJ on J.JN=SPJ.JN --關系
JOIN S on SPJ.SN=S.SN -- 供應
JOIN P on P.PN=SPJ.PN -- 零件
where j.CITY <> S.CITY
--取出上海供應商不提供任何零件的工程編碼。
SELECT JN as 工程編碼 FROM J where JN NOT IN (
select jN FROM SPJ where SN=103)
--取出所有紅色零件的全部細節。
SELECT * FROM P
where COLOR='紅色'
--取出所有供應商的全部細節。
SELECT * FROM S
--取出所有零件的全部細節
SELECT * FROM P
--取出所有供應關系的全部細節。
SELECT * FROM SPJ
--取出所在城市為北京的所有工程的工程編碼。
SELECT JN FROM J where CITY='北京'
--取出所在城市為上海的所有工程的工程名字
SELECT JNAME FROM J where CITY='上海'
--取出為所在城市為南京的工程提供零件的供應商編碼和零件編碼。
SELECT S.SN as 供應商編碼 ,P.PN as 零件編碼
FROM J --工程
JOIN SPJ on J.JN=SPJ.JN --關系
JOIN S on SPJ.SN=S.SN -- 供應
JOIN P on P.PN=SPJ.PN -- 零件
where j.CITY ='南京'
--取出所有這樣的一些<CITY,CITY>二元組,使得第1個城市的供應商為第2個城市的工程提供零件。
SELECT s.CITY,J.CITY FROM S ,J ,SPJ
where S.SN =SPJ.SN AND J.JN=SPJ.SN --第一種寫法
SELECT s.CITY,J.CITY
FROM S
join SPJ on S.SN =SPJ.SN
JOIN J on J.JN=SPJ.SN -- --第二種寫法
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/81318.html
標籤:基礎類
上一篇:Oracle字符集檢查和修改
