MySQL练习(学生表,课程表,选课表)超详解
生活随笔
收集整理的這篇文章主要介紹了
MySQL练习(学生表,课程表,选课表)超详解
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
mysql練習(xí)
- 一、題目:
- 二、創(chuàng)建學(xué)生,課程,選課表并插入數(shù)據(jù)
- 三、習(xí)題答案
環(huán)境: win10系統(tǒng),MySQL數(shù)據(jù)庫(kù)
一、題目:
已知關(guān)系: S(Sno,Sname,Sage,Ssex,Sdept) C(cno,cname,cpno,ccredit) SC(sno,cno,grade) (其中sno:學(xué)號(hào);sname:姓名;Ssex:性別;Sdept:系別;Sage :年齡;cno:課程號(hào);cname:課程名; cpno: 直接先行課;ccredit:學(xué)分;grade:成績(jī)), 1、查詢(xún)“CS”系學(xué)生的基本信息;2、查詢(xún)“CS”系學(xué)生年齡不在19到21之間的學(xué)生的學(xué)號(hào)、姓名;3、查詢(xún)學(xué)生中的最大年齡;4、找出“計(jì)算機(jī)”系年齡最大的學(xué)生,顯示其學(xué)號(hào)、姓名;5、統(tǒng)計(jì)各系學(xué)生的人數(shù),結(jié)果按升序排列;6、按系統(tǒng)計(jì)各系學(xué)生的平均年齡,結(jié)果按降序排列;7、查詢(xún)選修了“1”或“2”號(hào)課程的學(xué)生學(xué)號(hào)和姓名;8、查詢(xún)選修了課程名為“數(shù)據(jù)庫(kù)”且成績(jī)?cè)?span id="ozvdkddzhkzd" class="token number">60分以下的學(xué)生的學(xué)號(hào)、姓名和成績(jī);9、查詢(xún)選修了3門(mén)以上課程的學(xué)生學(xué)號(hào);10、查詢(xún)選修課程成績(jī)至少有一門(mén)在80分以上的學(xué)生學(xué)號(hào);11、查詢(xún)選修課程成績(jī)均在80分以上的學(xué)生學(xué)號(hào);12、查詢(xún)選修課程平均成績(jī)?cè)?span id="ozvdkddzhkzd" class="token number">80分以上的學(xué)生學(xué)號(hào)13、找出各系年齡最大的學(xué)生,顯示其學(xué)號(hào)、姓名;二、創(chuàng)建學(xué)生,課程,選課表并插入數(shù)據(jù)
首先選擇數(shù)據(jù)庫(kù),然后直接執(zhí)行下面代碼 【設(shè)置字符集為utf8】
CREATE DATABASE IF NOT EXISTS test DEFAULT CHARSET utf8; use test; #創(chuàng)建學(xué)生表:包括學(xué)號(hào),姓名,年齡,性別,院系 CREATE TABLE s ( Sno VARCHAR(7)PRIMARY KEY, Sname VARCHAR(10)NOT NULL, Sage INT, Ssex VARCHAR(2), Sdept VARCHAR(20) DEFAULT '計(jì)算機(jī)系' );#創(chuàng)建課程表:包括課程號(hào),課程名,選修課課程號(hào),學(xué)分 CREATE TABLE c ( Cno VARCHAR(10)PRIMARY KEY, Cname VARCHAR (20)NOT NULL, Cpno VARCHAR(10), Ccredit INT );#創(chuàng)建選課表 CREATE TABLE sc ( Sno VARCHAR(7), Cno VARCHAR(10), grade INT, FOREIGN KEY (sno) REFERENCES s(Sno), FOREIGN KEY (cno) REFERENCES c(cno) );# 向?qū)W生表S中插入數(shù)據(jù) INSERT INTO s(Sno,Sname,Sage,Ssex,Sdept) VALUE("10001","張三",20,'男','計(jì)算機(jī)'),("10002","李梅",19,'女','計(jì)算機(jī)'),("10003","王五",18,'男','CS'),("10004","小明",21,'男','計(jì)算機(jī)'),("10006","黎明",18,'男','藝術(shù)表演'),("10008","杰克",21,'男','計(jì)算機(jī)'),("10005","小紅",22,'女','CS');# 向課程表C中插入數(shù)據(jù) INSERT INTO c(Cno,Cname,Cpno,Ccredit) VALUE("1","離散數(shù)學(xué)",NULL,5),("2","線(xiàn)性代數(shù)",'3',6),("3","高等數(shù)學(xué)",NULL,4),("4","數(shù)據(jù)結(jié)構(gòu)",'3',6),("5","操作系統(tǒng)",'1',4),("6","數(shù)據(jù)庫(kù)",'4',5);# 向選課表SC中插入數(shù)據(jù) INSERT INTO sc(Sno,Cno,grade) VALUE("10001","1",70),("10001","6",56),("10003","4",90),("10003","5",83),("10004","1",75),("10004","3",90),("10008","1",70),("10008","5",70),("10008","6",88),("10002","1",85),("10002","6",89);三、習(xí)題答案
# 1、查詢(xún)“CS”系學(xué)生的基本信息; SELECT * FROM s WHERE Sdept="CS";# 2、查詢(xún)“CS”系學(xué)生年齡不在19到21之間的學(xué)生的學(xué)號(hào)、姓名; SELECT Sno,Sname,Sage,Sdept FROM s WHERE (Sage<19 OR Sage>21) AND Sdept = "CS";# 3、查詢(xún)學(xué)生中的最大年齡; SELECT MAX(Sage) FROM s;# 4、找出“計(jì)算機(jī)”系年齡最大的學(xué)生,顯示其學(xué)號(hào)、姓名; SELECT Sno, Sname FROM s WHERE Sdept="計(jì)算機(jī)" ORDER BY Sage DESC LIMIT 1;# 5、統(tǒng)計(jì)各系學(xué)生的人數(shù),結(jié)果按升序排列; SELECT Sdept,COUNT(*) '人數(shù)' FROM s GROUP BY Sdept ORDER BY '人數(shù)';# 6、按系統(tǒng)計(jì)各系學(xué)生的平均年齡,結(jié)果按降序排列; SELECT Sdept,AVG(Sage) '平均年齡' FROM s GROUP BY Sdept ORDER BY '平均年齡'DESC;# 7、查詢(xún)選修了“1”或“2”號(hào)課程的學(xué)生學(xué)號(hào)和姓名; SELECT s.Sno,Sname FROM s JOIN sc ON s.`Sno`=sc.`Sno` WHERE Cno IN ("1","2");# 8、查詢(xún)選修了課程名為“數(shù)據(jù)庫(kù)”且成績(jī)?cè)?0分以下的學(xué)生的學(xué)號(hào)、姓名和成績(jī); SELECT s.Sno,Sname FROM s JOIN sc ON s.`Sno`=sc.`Sno` JOIN c ON sc.`Cno`=c.`Cno` WHERE Cname ="數(shù)據(jù)庫(kù)" AND grade<60;# 9、查詢(xún)選修了3門(mén)以上課程的學(xué)生學(xué)號(hào); SELECT sno FROM sc GROUP BY sc.Sno HAVING COUNT(*)>=3;# 10、查詢(xún)選修課程成績(jī)至少有一門(mén)在80分以上的學(xué)生學(xué)號(hào); SELECT sno FROM sc GROUP BY sc.Sno HAVING MAX(grade)>80;# 11、查詢(xún)選修課程成績(jī)均在80分以上的學(xué)生學(xué)號(hào); SELECT sno FROM sc GROUP BY sc.Sno HAVING MIN(grade)>80;# 12、查詢(xún)選修課程平均成績(jī)?cè)?0分以上的學(xué)生學(xué)號(hào) SELECT sno FROM sc GROUP BY sc.Sno HAVING AVG(grade)>80;# 13、找出各系年齡最大的學(xué)生,顯示其學(xué)號(hào)、姓名; SELECT sno,Sname FROM s JOIN (SELECT Sdept,MAX(Sage) SageFROM sGROUP BY Sdept) a ON (s.`Sage`=a.Sage AND s.`Sdept` = a.Sdept) ;如果對(duì)你有幫助,請(qǐng)點(diǎn)個(gè)贊。
總結(jié)
以上是生活随笔為你收集整理的MySQL练习(学生表,课程表,选课表)超详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MYSQL创建课程表course_MyS
- 下一篇: mysql数据库资源池是否耗尽_高性能数