数据准备过程
--数据准备 INSERT INTO students values('101','曾华','男','1997-09-01','95033'); INSERT INTO students values('102','阿明','男','1998-05-21','95031'); INSERT INTO students values('103','王丽','男','1997-04-21','95033'); INSERT INTO students values('104','李俊','男','1997-03-11','95033'); INSERT INTO students values('105','王芳','男','1997-04-23','95033'); INSERT INTO students values('106','陆军','男','1997-09-30','95031'); INSERT INTO students values('107','王五','男','1997-03-02','95033'); INSERT INTO students values('108','张三','男','1997-12-01','95031'); INSERT INTO students values('109','李四','男','1997-09-09','95031'); UPDATE students SET sex = '女' WHERE id = '103' OR id = '105'; SELECT * FROM students; INSERT INTO teachers values('804','李承','男','1958-12-02','副教授','计算机系'); INSERT INTO teachers values('856','张旭','男','1969-03-03','讲师','计算机系'); INSERT INTO teachers values('825','王平','女','1978-12-22','讲师','计算机系'); INSERT INTO teachers values('831','刘冰','女','1988-06-07','助教','计算机系'); SELECT * FROM teachers; INSERT INTO courses values('3-105','计算机导论','825'); INSERT INTO courses values('3-245','操作系统','804'); INSERT INTO courses values('6-166','数字电路','856'); INSERT INTO courses values('9-888','高等数学','831'); SELECT * FROM courses; INSERT INTO scores values('103','3-105','92'); INSERT INTO scores values('103','3-245','86'); INSERT INTO scores values('103','6-166','85'); INSERT INTO scores values('105','3-105','88'); INSERT INTO scores values('105','3-245','75'); INSERT INTO scores values('105','6-166','79'); INSERT INTO scores values('109','3-105','76'); INSERT INTO scores values('109','3-245','68'); INSERT INTO scores values('109','6-166','81'); SELECT * FROM scores;
查询练习
1. 查询students中所有name,sex,class的记录
SELECT * FROM students;
2.查询教师不重复的department
SELECT DISTINCT department FROM teachers;
DISTINCT 为去重关键字
3.查询scores中分数在60-80之间的记录
SELECT * FROM scores WHERE score BETWEEN 60 AND 80; 或 SELECT * FROM scores WHERE score >= 60 and score <= 80;
4.以id升序,score降序查询scores表中的所以记录
select * from scores order by student_id asc,score desc; ORDER BY column_name 为按某项排序,默认为升序排列 ASC 为升序排序, DESC为降序排列。
5.查询‘95031’ 班的人数
SELECT COUNT(*) FROM students WHERE class='95031'; COUNT() 为 统计数目函数
6.查询最高分学生学号与课程号
SELECT student_id,course_id,score FROM scores WHERE score = (SELECT MAX(score) FROM scores); 复合语句,先寻找最大分数,再查找分数为最高分的项
7.查询每门课的平局成绩
select avg(score) from scores where course_id = '3-105'; select avg(score) from scores where course_id = '3-245'; select avg(score) from scores where course_id = '6-166'; 或 select avg(score) from scores group by course_id; AVG()函数为计算平均值。 GROUP BY 为 分组函数
8.查询scores中至少两名学生选修的并且以3开头的课程的平均分数
SELECT course_id,avg(score) FROM scores GROUP BY course_id HAVING COUNT(course_id) AND course_id LIKE '3%'; 分段表达 首先查询课程以及均分,再以having添加查询条件 LIKE为模糊查询 '3%'代表以3开头