表名和字段
–1.學生表
Student(s_id,s_name,s_birth,s_sex) –學生編號,學生姓名, 出生年月,學生性別
–2.課程表
Course(c_id,c_name,t_id) – –課程編號, 課程名稱, 教師編號
–3.教師表
Teacher(t_id,t_name) –教師編號,教師姓名
–4.成績表
Score(s_id,c_id,s_score) –學生編號,課程編號,分數
測試數據
--建表
--學生表
CREATE TABLE `Student`(
? ? `s_id` VARCHAR(20),
? ? `s_name` VARCHAR(20) NOT NULL DEFAULT '',
? ? `s_birth` VARCHAR(20) NOT NULL DEFAULT '',
? ? `s_sex` VARCHAR(10) NOT NULL DEFAULT '',
? ? PRIMARY KEY(`s_id`)
);
--課程表
CREATE TABLE `Course`(
? ? `c_id`? VARCHAR(20),
? ? `c_name` VARCHAR(20) NOT NULL DEFAULT '',
? ? `t_id` VARCHAR(20) NOT NULL,
? ? PRIMARY KEY(`c_id`)
);
--教師表
CREATE TABLE `Teacher`(
? ? `t_id` VARCHAR(20),
? ? `t_name` VARCHAR(20) NOT NULL DEFAULT '',
? ? PRIMARY KEY(`t_id`)
);
--成績表
CREATE TABLE `Score`(
? ? `s_id` VARCHAR(20),
? ? `c_id`? VARCHAR(20),
? ? `s_score` INT(3),
? ? PRIMARY KEY(`s_id`,`c_id`)
);
--插入學生表測試數據
insert into Student values('01' , '趙雷' , '1990-01-01' , '男');
insert into Student values('02' , '錢電' , '1990-12-21' , '男');
insert into Student values('03' , '孫風' , '1990-05-20' , '男');
insert into Student values('04' , '李云' , '1990-08-06' , '男');
insert into Student values('05' , '周梅' , '1991-12-01' , '女');
insert into Student values('06' , '吳蘭' , '1992-03-01' , '女');
insert into Student values('07' , '鄭竹' , '1989-07-01' , '女');
insert into Student values('08' , '王菊' , '1990-01-20' , '女');
--課程表測試數據
insert into Course values('01' , '語文' , '02');
insert into Course values('02' , '數學' , '01');
insert into Course values('03' , '英語' , '03');
--教師表測試數據
insert into Teacher values('01' , '張三');
insert into Teacher values('02' , '李四');
insert into Teacher values('03' , '王五');
--成績表測試數據
insert into Score values('01' , '01' , 80);
insert into Score values('01' , '02' , 90);
insert into Score values('01' , '03' , 99);
insert into Score values('02' , '01' , 70);
insert into Score values('02' , '02' , 60);
insert into Score values('02' , '03' , 80);
insert into Score values('03' , '01' , 80);
insert into Score values('03' , '02' , 80);
insert into Score values('03' , '03' , 80);
insert into Score values('04' , '01' , 50);
insert into Score values('04' , '02' , 30);
insert into Score values('04' , '03' , 20);
insert into Score values('05' , '01' , 76);
insert into Score values('05' , '02' , 87);
insert into Score values('06' , '01' , 31);
insert into Score values('06' , '03' , 34);
insert into Score values('07' , '02' , 89);
insert into Score values('07' , '03' , 98);
SELECT * from course; -- 2.課程表 Course(c_id,c_name,t_id) – –課程編號, 課程名稱, 教師編號
SELECT * from score; -- 4.成績表Score(s_id,c_id,s_score) –學生編號,課程編號,分數
SELECT * from student;-- –1.學生表 Student(s_id,s_name,s_birth,s_sex) –學生編號,學生姓名, 出生年月,學生性別
SELECT * from teacher; -- 教師表? Teacher(t_id,t_name) –教師編號,教師姓名
select 查詢條件 from 表名 where 表1,2之間相同的聯系 group by(分組)...having (對沒有的加一起的列名提出的條件)order by (排序)
-- 1、查詢"01"課程比"02"課程成績高的學生的信息及課程分數
select? e.score,s.*? from score e ,student s
where?
select s.*,e.s_score,a.s_score from student s ,score e,score a
where e.s_id = s.s_id and a.s_id=s.s_id and e.c_id='01' and a.c_id='02' and a.s_score<e.s_score
-- 2、查詢"01"課程比"02"課程成績低的學生的信息及課程分數
select s.*,e.s_score,a.s_score from student s ,score e,score a
where e.s_id = s.s_id and a.s_id=s.s_id and e.c_id='01' and a.c_id='02' and a.s_score>e.s_score
-- 3、查詢平均成績大于等于60分的同學的學生編號和學生姓名和平均成績
SELECT s.s_id,s.s_name,avg(e.s_score)? FROM student s,score e
WHERE e.s_id=s.s_id HAVING AVG(e. s_score)>=60
-- 4、查詢所有同學的學生編號、學生姓名、選課總數、所有課程的總成績
SELECT? s.s_id,s.s_name,COUNT(c_id),SUM(e.s_score)? FROM? student s ,score e
where s.s_id=e.s_id group by s.s_id,s.s_name
-- 5、查詢"李"姓老師的數量
SELECT * from course; -- 2.課程表 Course(c_id,c_name,t_id) – –課程編號, 課程名稱, 教師編號
SELECT * from score; -- 4.成績表Score(s_id,c_id,s_score) –學生編號,課程編號,分數
SELECT * from student;-- –1.學生表 Student(s_id,s_name,s_birth,s_sex) –學生編號,學生姓名, 出生年月,學生性別
SELECT * from teacher; -- 教師表? Teacher(t_id,t_name) –教師編號,教師姓名
select count(t_name) from teacher where t_name like '李%'
-- 6、查詢學過編號為"01"并且也學過編號為"02"的課程的同學的信息
select s.* from student s, score e, score a
WHERE s.s_id=e.s_id and s.s_id=a.s_id
and? e.s_id='01' and a.s_id= '02'
-- 7、檢索"01"課程分數小于60,按分數降序排列的學生信息
select s.*,e.s_score from student s,score e where s.s_id=e.s_id and e.c_id='01' and e.s_score<60 ORDER BY e.s_score DESC
-- 8、查詢不同老師所教不同課程平均分從高到低顯示
select t.t_name,AVG( e.s_score),c.c_name from teacher t,score e ,course c
where c.c_id=e.c_id and c.t_id=t.t_id? GROUP BY t.t_name
ORDER BY avg(e.s_score) DESC
-- 9、查詢每門課程被選修的學生數
SELECT e.c_id,COUNT( *) from score e group by e.c_id
-- 10、查詢男生、女生人數
select s_sex,COUNT(*) from student group by s_sex
-- 11、查詢名字中含有"風"字的學生信息
SELECT * from course; -- 2.課程表 Course(c_id,c_name,t_id) – –課程編號, 課程名稱, 教師編號
SELECT * from score; -- 4.成績表Score(s_id,c_id,s_score) –學生編號,課程編號,分數
SELECT * from student;-- –1.學生表 Student(s_id,s_name,s_birth,s_sex) –學生編號,學生姓名, 出生年月,學生性別
SELECT * from teacher; -- 教師表? Teacher(t_id,t_name) –教師編號,教師姓名
SELECT * from student? where s_name like '風'
-- 12、查詢同名同性學生名單,并統計同名人數
SELECT s_name,COUNT( *) from student GROUP by s_name HAVING COUNT(*)>1
-- 13、查詢1990年出生的學生名單
SELECT * from student where s_birth=1990
-- 14、查詢每門課程的平均成績,結果按平均成績降序排列,平均成績相同時,按課程編號升序排列
select AVG(e.s_score),c.c_name from score e, course c WHERE e.c_id=c.c_id? GROUP BY c.c_name ORDER BY AVG( e.s_score) DESC , e.c_ID ASC
-- 15、查詢平均成績大于等于85的所有學生的學號、姓名和平均成績
select s.s_id,s.s_name,AVG(e.s_score) FROM student s,score e where s.s_id=e.s_id GROUP BY e.s_id HAVING AVG( e.s_score)>85
-- 16、查詢不及格的課程
select c.c_name,s.s_name,e.s_score? from student s,course c, score e where c.c_id=e.c_id and s.s_id=e.s_id? and e.s_score<60
-- 17、查詢課程編號為01且課程成績在80分以上的學生的學號和姓名;
select s.s_id,s.s_name from student s, score e where e.s_score>80 and e.s_id='01' GROUP BY s.s_id
-- 18、求每門課程的學生人數
SELECT * from course; -- 2.課程表 Course(c_id,c_name,t_id) – –課程編號, 課程名稱, 教師編號
SELECT * from score; -- 4.成績表Score(s_id,c_id,s_score) –學生編號,課程編號,分數
SELECT * from student;-- –1.學生表 Student(s_id,s_name,s_birth,s_sex) –學生編號,學生姓名, 出生年月,學生性別
SELECT * from teacher; -- 教師表? Teacher(t_id,t_name) –教師編號,教師姓名
select c_id,count(*) as "學生人數"
from score
GROUP BY C_Id
-- 19、統計每門課程的學生選修人數(超過5人的課程才統計)。要求輸出課程號和選修人數,查詢結果按人數降序排列,若人數相同,按課程號升序排列
select C_Id,count(*) as "學生人數"
from score
GROUP BY "學生人數",c_id ORDER BY "學生人數" DESC ,s_score ASC
-- 20、檢索至少選修兩門課程的學生學號
select s_id from score GROUP BY s_score HAVING COUNT( *)>1