1. 程式人生 > >MySQL基礎 -- 練習題

MySQL基礎 -- 練習題

一、已有表文件 STOCK (股票程式碼 C(6),買入價 N(10.2),現價 N(10.2),持有數量 N(10)),按照如下要求寫出SQL語句:

       1、查詢 股票程式碼 為“000625”的股票的持有數量;

       2、利用SQL命令插入記錄("600028",4.36, 4.60, 5500)到stock.dbf表; 

       3、利用SQL命令將stock.dbf表中 股票程式碼為"600007"的股票 現價 改為 8.88; 

       4、利用SQL命令將stock.dbf表中 股票程式碼為"600000"的股票加上刪除標記;

       提示:為了便於批卷,命令動詞和子句均使用小寫並寫完整的命令,命令前不用標註題號;

SELECT 持有數量 FROM STOCK WHERE 股票程式碼 = "000625"
INSERT INTO STOCK(股票程式碼,買入價,現價,持有數量) VALUES ("600028",4.36,4.6,5500)
UPDATE STOCK SET 現價 = 8.88 WHERE 股票程式碼 = "600007"
DELETE FROM STOCK WHERE 股票程式碼 = “600000”

二、已有表文件 STU (學號 C(4), 姓名 C(8), 性別 C(2), 出生日期 D,貸款否 L),寫出下列SQL命令:

       1、查詢所有男生的資訊,並將查詢結果輸出到表文件sta.dbf中; 

       2、利用SQL命令插入記錄("1010","張大兵",男, {^1985/01/10}, .f.)到sta.dbf中;

       3、利用SQL命令將sta.dbff表中姓名為“於修潔”的記錄的出生日期改為 {^1982/10/11};

       4、利用SQL命令將sta.dbf表中貸款否 為 .F.的記錄加上刪除標記;

       提示: 為了便於批卷,命令動詞和子句均使用小寫並寫出完整命令,命令前不用標註題號。

SELECT * FROM STU WHERE 性別 = "男" INTO TABLE STA.DBF
INSERT INTO STU(學號,姓名,性別,出生日期,貸款否) VALUES ("1010","張大兵",男, {^1985/01/10}, .f.)
UPDATE STU SET 出生日期={^1982/10/11} WHERE 姓名="於修潔"
DELETE FROM STU WHERE 貸款否 = .F.

三、已有表文件teacher(教師程式碼(C),姓名(C),學院(C),職稱(C),年齡(N)),按照要求寫出SQL語句:

       1、查詢職稱為"副教授"的教師程式碼,姓名,學院,職稱資訊;

       2、查詢學院為“電信學院”並且職稱為“講師”的所有教師的資訊,並將查詢結果按年齡欄位的降序排序;

       3、將所有教師的年齡加1; 

       4、將表中年齡小於15歲的教師記錄加上刪除標記; 

       提示:為了便於批卷,命令動詞和子句均使用小寫並寫出完整的命令,命令前不用標註題號。

SELECT 教師程式碼,姓名,學院,職稱資訊 FROM TEACHER WHERE 職稱 = "副教授"
SELECT * FROM TEACHER WHERE 職稱 ="講師" AND 學院 ="電信學院" ORDER BY 年齡 DESC
UPDATE TEACHER SET 年齡 = 年齡+1
DELETE FROM TEACHER WHERE 年齡 < 15

四、已有如下圖書資料表文件:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2)),按照以下要求寫出SQL語句:

       1、查詢“工業出版社”出版的所有圖書資訊,並按書名的升序排序;

       2、查詢單價在15元至25元(含15元和25元)之間的圖書的書名、作者、單價和分類號, 結果輸出到表文件ts.dbf中;

       3、將所有的圖書單價都增加5元; 

       4、將表中出版單位為“農業出版社”的所有記錄加上刪除標記;

       提示:為了便於批卷,命令動詞和子句均使用小寫並寫出完整的命令,命令前不用標註題號。

SELECT * FROM 圖書 WHERE 出版單位 = "工業出版社" ORDER BY 書名 
SELECT 書名、作者、單價、分類號 FROM 圖書 WHERE 單價 BETWEEN 15 AND 25 INTO TABLE TS.DBF
UPDATE 圖書 SET 單價 = 單價+5
DELETE FROM 圖書 WHERE 出版單位 = "農業出版社"

五、已有表文件:選課.dbf(學號(C),姓名(C),性別(C),課程號(C),課程名(C),成績(N)) ,按照以下要求寫出SQL語句:

       1、查詢選修了“VF程式設計”的學生的學號、姓名、性別、課程名、成績,並將查詢結果輸出到表文件 stu.dbf 中;

       2、查詢“王小麗”所選課程中成績最高的成績資訊; 

       3、利用SQL命令插入記錄("1010","張大兵","男", "105","營銷技巧",89);

       4、將表中成績低於55分的所有記錄加上刪除標記;

       提示:為了便於批卷,命令動詞和子句均使用小寫並寫出完整的命令,命令前不用標註題號;

SELECT 學號、姓名、性別、課程名、成績 FROM 選課.dbf WHERE 課程名 = "VF程式設計" INTO TABLE STU.DBF
SELECT MAX(成績) RROM FROM 選課.dbf WHERE 姓名="王小麗"
INSERT INTO 選課.dbf(學號,姓名,性別,課程號,課程名,成績)VALUES ("1010","張大兵","男", "105","營銷技巧",89)
DELETE FROM 選課.dbf WHERE 成績 < 55

六、已有表文件:Book(書號(C),書名(C),作者(C),借書證號(C),價格(N),借書日期(D),借閱者姓名(C)) ,按照以下要求寫出SQL語句。

       1. 查詢“李亮”所借圖書的書名、作者、價格;

       2. 查詢所有圖書的數量;

       3. 利用SQL命令插入記錄("a101","大學英語","張榮軒","08101",25, {^2009/01/01} ,"王天磊");

       4. 將表中作者為“風華”的所有記錄加上刪除標記; 

       提示:為了便於批卷,命令動詞和子句均使用小寫並寫出完整的命令,命令前不用標註題號。

SELECT 書名、作者、價格 FROM BOOK WHERE 作者 = "李亮"
SELECT 書名,COUNT(書名) FROM BOOK GROUP BY 書名
INSERT INTO Book VALUES ("a101","大學英語","張榮軒","08101",25, {^2009/01/01} ,"王天磊")
DELETE FROM BOOK WHERE 作者 = "風華"

七、已有表文件:成績.dbf(學號(C),姓名(C),班級(C),英語(N),語文(N),數學(N)) ,按照以下要求寫出SQL語句。

       1、查詢“會計1”班英語最高分是多少;

       2、查詢每個班級三門課程的總分,輸出資訊為:班級,英語總分,語文總分,數學總分;

       3、在成績表中插入一條記錄("080001","李明輝","自動化081",88,75,68);

       提示:為了便於批卷,命令動詞和子句均使用小寫並寫出完整的命令,命令前不用標註題號。

SELECT MAX(英語) FROM 成績.dbf  WHERE 班級 = "會計1"
SELECT 班級,SUM(英語) AS 英語總分,SUM(語文) AS 語文總分,SUM(數學)AS 數學總分 FROM 成績.dbf BROUP BY 班級
INSERT INTO 成績.dbf VALUES ("080001","李明輝","自動化081",88,75,68)

八、已有表文件:選課.dbf(學號 C(6),課程號 C(3),成績 N(3)) ,按照以下要求寫出SQL語句。

       1、按成績由低到高的順序輸出:課程號為101的學號、課程號和成績資訊;

       2、求各門課程的平均成績,顯示結果是課程號、平均成績;

       3、在選課表中插入一條記錄("080010","103",88);

       4、將學號為080001且課程號為101的記錄的成績改為100分;

       提示:為了便於批卷,命令動詞和子句均使用小寫並寫出完整的命令,命令前不用標註題號。

SELECT 學號,課程號,成績 FROM 選課.dbf WHERE 課程號 = "101"
SELECT 課程號,AVG(成績) AS 平均成績 FROM 選課.dbf GROUP BY 課程號
INSERT INTO 選課.dbf VALUES ("080010","103",88)
UPDATE 選課.dbf SET 成績 = 100 WHERE 學號 = "080001" 課程號 = "101"

九、已有表文件:  學生表(學號(C),姓名(C),性別(C),出生日期(D),所在學院(C)),按照以下要求寫出SQL語句。

       1、查詢經管學院學生的基本資訊;

       2、統計經管學院的男女學生人數;

       3、向“學生”表中新增一條記錄:(’020314’, ’張三’, ’男’, {^1982/07/01},’軟體學院’);

       4、將學生表中的出生日期為{^1930/01/01}的記錄加上刪除標記;

       注意:為了便於批卷,命令動詞和子句均使用小寫並寫出完整的命令,命令前不用標註題號。

SELECT * FROM 學生表 WHERE 所在學院 = "經管學院"
SELECT 性別,COUNT(性別) AS 人數 FROM 學生表 BROUP BY 性別
INSERT INTO 學生 VALUES ("020314","張三","男", {^1982/07/01},"軟體學院")
DELETE FROM 學生表 WHERE 出生日期 = {^1930/01/01}

十、已有表文件,學生(學號(C),姓名(C),性別(C),出生日期(D),學校編號(C)); 

                             成績(學號(C),語文(N),數學(N),英語(N),總分(N));

       按照以下要求寫出SQL語句(單表查詢):

       1、從成績表中查詢語文成績大於或等於70且小於或等於90分的學生的學號、語文成績,列標題顯示為學號和語文成績;

       2、從成績表中查詢學生的學號、各科成績及總分,查詢結果按照 總分 的降序排序,並輸出到表文件stu.dbf中;

       3、從學生表中分別統計各學校的學生人數;

       注意:為了便於批卷,命令動詞和子句均使用小寫並寫出完整的命令,命令前不用標註題號。

SELECT 學號,語文 AS 語文成績 FROM 成績表 WHERE 語文 >= 70 AND 語文 <= 90
SELECT 學號,語文,數學,英語,總分 FROM 成績表  ORDER BY 總分 DESC INTO TABLE STU.DBF
SELECT 學校編號,COUNT(學校編號) AS 學生人數 FROM 學生表 GROUP BY 學校編號

十一、已有表文件,

       學生表(學號(C),姓名(C),性別(C),出生日期(D),學校編號(C));

       成績表(學號(C),語文(N),數學(N),英語(N),總分(N));

       按照以下要求寫出SQL語句。

       1、查詢學生表中出生日期在1980年至1985之間的學生的學號、姓名、性別和出生日期等資訊;

       2、在成績表中查詢數學良好(75~85分)的學生的學號、語文、數學、英語和總分資訊,並將查詢結果輸出到陣列 aa中;

       3、在成績表中求出所有學生的語文、數學、英語的平均成績,顯示結果為語文平均分數學平均分、英語平均分;

       注意:為了便於批卷,命令動詞和子句均使用小寫並寫出完整的命令,命令前不用標註題號。

SELECT 學號,姓名,性別,出生日期 FROM 學生表 WHERE YEAR(出生日期) BETWEEN 1980 AND 1985
SELECT 學號,語文,數學,英語,總分 FROM 成績表 WHERE 數學 BETWEEN 75 AND 85 AYYAY AA
SELETE AVG(語文) AS 語文平均分,AVG(數學) AS 數學平均分,AVG(英語) AS 英語平均分 FROM 成績表

十二、現有的關係資料庫如下所示:

       資料庫名稱:Studb資料庫,有學生表S、課程表C、成績表SC;

       S  (Sno(學號)、Sname(學生名)、Ssex(性別)、Sbirthday(生日)、Sclass(班級名稱));

       C  (Cno(課程號)、Cname(課程名)、Ctype(課程型別)、CT(學分)、Tno(教師號));

       SC (Sno(學號), Cno(課程號), Score (成績));

       使用SQL語句完成以下查詢:

       1、查詢成績表中成績記錄人數大於30的各課程的人數;

select Cno,count(Sno) from SC where sum(Sno) >= 30 group by Cno

       2、查詢學號10701001的學生所修讀的課程號、成績;

select Cno,Score from SC where Sno = "10701001"

       3、查詢 10701 班的學生的所有成績及格的學生名、課程名、成績;

select s.Sname,sc.Cname,sc.Score from S as s join SC as sc on s.Sno = sc.Sno where 班級名稱 = "10701" and 成績>=60

       以上 SQL 語句等價於:

select S.Sname,SC.Cname,SC.Score from S,SC where S.Sno = SC.Sno and Sclass = "10701" and Score >= 60

       4、查詢與學號為10701001學生的同班學生的學號、課程號及成績;

select Sno,Cno,Score from SC where Sclass = (select Sclass from S where Sno = "10701001")

       5、查詢課程表的課程號為 00100001 的課程名和學分;

select Cno,CT from C where Cno = "00100001"

       6、查詢所有學分等於4的課程的課程號和課程名;

selelct Cno,Cname from C where CT = 4

       7、查詢成績表中成績小於80分或大於90分的學生號、課程名、成績;

selelct SC.Sno,C.Cname,SC.Score from C join SC on C.Cno = SC.Cno where Score > 90 or Score < 80

       8、查詢成績表中課程號為 00100001 的學生號、課程號和成績,結果按成績升序排列;

select Sno,Cno,Score from SC where Cno = "00100001" order by Score

      9、查詢成績表中學號為 10701001 的學號、課程號和成績,要求結果集中各欄標題分別為“學號”、“課程號”和“成績”;

selelct Sno as "學號",Cno as "課程號",Score as "成績" from SC where Sno = "10701001"

       10、查詢所有基礎課程的課程號和課程名;

select Cno,Cname from C where Ctype = "基礎課程"

       11、查詢所有課程名中含“電”的課程的課程號和課程名;

selelct Cno,Cname from SC where Cname like '%電%'

       12、查詢成績在80-90之間的學生的學生號、課程號、成績;

select Sno,Cno,Score from SC where Score between 80 and 90

       13、查詢成績表中課程號為 00100001 的學號、課程號和成績,結果按學號升序和成績降序排序;

selelct Sno,Cno,成績 from SC where Cno = "00100001" order by Sno,Score desc

       14、查詢所有選修了課程的學生的學號,要求無重複;

select distinct Sno from SC

       15、查詢成績表中各門課程的最高分,要求大於90分;

select Cno,max(Score) from SC where Score > 90 order by Cno

       16、查詢“高等數學”課程所有的學號、學生名、課程號及成績;

select S.Sno,S.Sname,C.Cno,SC.Score from S,C,SC where S.Sno = SC.Sno and C.Cno = Sc.Cno and Cname = "高等數學"

g       17、查詢班級名稱為電子200701,電子200702,機電200701,機電學生200702的學生的學號、課程號及成績;

selelct Sno,Cno,Score from S join SC on S.Sno = SC.Sno where Sclass in('電子200701','電子200702','機電200701','機電200702')

       18、查詢20702班比10701班所有學生都要小的學生的學號、課程號和成績;

select Sno,Cno,Score from S join SC on S.Sno = SC.Sno where (selelct year(getdate())-year(Sbirthday) 
from SC where Sclass = "20702") < (selelct min(year(getdate())-year(Sbirthday)) from S where Sclass = "10701")

       19、查詢比所有10701班學生的平均分高的學生的學號、課程號和成績;

select Sno,Cno,Score from S join SC on S.Sno = SC.Sno where Score > (selelct avg(Score) from S join SC on S.Sno = SC.Sno where Sclass = "10701")