mysql例题_mysql练习题1
--为了方便做题创建了表--drop table if exists student;create table student(
s_id bigint,
s_name char(10),
s_birth date,
s_sex char(5));
drop table if exists course;
create table course(
c_id int,
c_name char(20),
t_id int);
drop table if exists teacher;
create table teacher(
t_id int,
t_name char(10));
drop table if exists score;
create table score(
s_id int,
c_id int,
s_score int);
insert into student values(20644101,'小明','1992-10-14','男');
insert into student values(20644102,'小红','1990-11-15','女');
insert into student values(20644103,'小江','1993-12-16','女');
insert into student values(20644104,'小月','1994-12-17','女');
insert into student values(20644105,'小青','1996-07-14','女');
insert into student values(20644106,'小龙','1995-12-12','男');
insert into student values(20644107,'小磊','1997-12-18','男');
insert into student values(20644108,'小坤','1998-06-14','男');
insert into student values(20644109,'小强','1990-05-14','男');
insert into course values(01,'语文',101);
insert into course values(02,'数学',102);
insert into course values(03,'英语',103);
insert into course values(04,'体育',104);
insert into course values(05,'物理',105);
insert into course values(06,'化学',106);
insert into teacher values(101,'赵三');
insert into teacher values(102,'钱二');
insert into teacher values(103,'孙强');
insert into teacher values(104,'李红');
insert into teacher values(105,'周五');
insert into teacher values(106,'郑前');
insert into score values(20644101,01,98);
insert into score values(20644101,02,92);
insert into score values(20644101,03,96);
insert into score values(20644101,04,90);
insert into score values(20644102,01,98);
insert into score values(20644103,02,98);
insert into score values(20644104,03,98);
insert into score values(20644105,04,90);
insert into score values(20644106,05,60);
insert into score values(20644107,06,55);
insert into score values(20644108,01,45);
insert into score values(20644109,02,90);
insert into score values(20644102,03,98);
insert into score values(20644103,04,98);
insert into score values(20644104,05,98);
insert into score values(20644105,06,90);
insert into score values(20644106,01,60);
insert into score values(20644107,02,55);
insert into score values(20644108,03,45);
insert into score values(20644109,04,90);
常见的sql笔试题和面试题上
1、查询课程编号为“001”的课程比“002”的课程成绩高的所有学生的学号。
select a.s_id from
(select s_id,s_score from score where c_id=01) a
join
(select s_id,s_score from score where c_id=02) b
on a.s_id=b.s_id
where a.s_score > b.s_score
;
2、查询平均成绩大于60分的学生的学号和平均成绩
select s_id
,avg(s_score)as avg_score
from score
group by s_id
having avg(s_score)>60;
3、查询所有学生的学号、姓名、选课数、总成绩
select a.s_id
,a.s_name
,b.co
,b.sum_score
from(select s_id,s_name from student) a
join (select s_id
,count(c_id) as co
,sum(s_score) as sum_score
from score
group by s_id) b
on a.s_id=b.s_id;
##简便select a.s_id,a.s_name,count(b.c_id),sum(b.s_score)
from student a
join score b
on a.s_id=b.s_id
group by a.s_id,a.s_name;
4.查询姓“赵”的老师的个数
select count(t_id) from teacher
where t_name like '赵%';
5.查询没学过“赵三”老师课的学生的学号、姓名
select a.s_id
,a.s_name
from student a
where s_id not in
(select s_id from score,course,teacher
where score.c_id=course.c_id
and teacher.t_id=course.t_id
and teacher.t_name='赵三' );
6、查询学过“赵三”老师所教的所有课的同学的学号、姓名
select a.s_id
,a.s_name
from student a
where s_id in
(select s_id from score,course,teacher
where score.c_id=course.c_id
and teacher.t_id=course.t_id
and teacher.t_name='赵三' );
7、查询学过编号为“01”的课程并且也学过编号为“02”的课程的学生的学号、姓名
select s.s_id
,s.s_name
from student s
join
(select s_id
,c_id
from score
where c_id=01
) b
on s.s_id=b.s_id
join
(select s_id
,c_id
from score
where c_id=02) c
on s.s_id=c.s_id ;
8、查询课程编号为“02”的总成绩
select sum(s_score) from score
where c_id=02;
9、查询所有课程成绩小于60分的学生的学号、姓名
select s.s_id
,s.s_name
from student s
join
(select s_id from socre
where s_score<60) b
on s.s_id=b.s_id;
便于检查:
select s.s_id
,s.s_name
,b.s_score
from student s
join
(select s_id
,s_score
from score
where s_score<60) b
on s.s_id=b.s_id;
10、查询没有学全所有课的学生的学号、姓名
select s.s_id
,s.s_name
,b.co
from student s
join
(select s_id
,count(c_id) as co
from score
group by s_id
having count(c_id)
on s.s_id=b.s_id;
11、查询至少有一门课与学号为“1001”的学生所学课程相同的学生的学号和姓名
select s.s_id
,s.s_name
from student s
join
(select s_id from score
where c_id in (select c_id from score where s_id=20644101)) b
on s.s_id=b.s_id;
--简便写法
select student.s_id, student.s_name
from student, score
where student.s_id = score.s_id
and c_id in (select c_id from score where s_id=20644101);
12、:查询和“20644101”号同学所学课程完全相同的其他同学的学号
select s.s_id from student s
join
(select s_id from score
where c_id in (select c_id from score where s_id=20644101)) b
on s.s_id=b.s_id
group by s.s_id
having count(*)=(select count(*) from score where s_id=20644101);
13、把“SCORE”表中“赵三”老师教的课的成绩都更改为此课程的平均成绩
update score set s_score=(select c_id
,avg(s_score)
from score
where c_id in
(select c_id from course c
join
(select t_id,t_name from teacher
where t_name='赵三') t
on c.t_id=t.t_id)
group by c_id);
----赵三老师的课程
select c_id
,avg(s_score)
from score
where c_id in
(select c_id from course c
join
(select t_id,t_name from teacher
where t_name='赵三') t
on c.t_id=t.t_id)
group by c_id;
--14、查询和“20644102”号的同学学习的课程完全相同的其他同学学号和姓名
select s_id from score where c_id in
(select c_id from score where s_id=20644102)
group by s_id
having count(*)=
(select count(*) from score where s_id=20644102);
select s.s_id
,s.s_name
from student s
join
(select s_id from score where c_id in
(select c_id from score where s_id=20644102)
group by s_id
having count(*)=
(select count(*) from score where s_id=20644102)) t
on s.s_id=t.s_id;
15、删除学习“赵三”老师课的SC表记录
select t_id from teacher
where t_name='赵三'
select c_id
,t_id
from course
select c_id
,s_score
from score
---delete score from course,teacherwhere course.c_id=socre.c_id
and course.t_id=teacher.t_id
and t_name='赵三';
16、向SC表中插入一些记录这些记录要求符合以下条件:没有上过编号为“003”课程的学生的学号、编号为002的课程的平均成绩
insert score select s_id
,(select avg(s_score) from score where s_id=20644102) avg_score
from score
where s_id not in
(select s_id from score where c_id=03);
--------------------------------------------select s_id,(select avg(s_score) from score where s_id=20644102) avg_score
from score
where s_id not in
(select s_id from score where c_id=03);
17、按平均成绩从高到低显示所有学生的“数据库”(c_id='004')、“企业管理”(c_id='001')、“英语”(c_id='006')三门的课程成绩,按如下形式显示:学生ID,数据库,企业管理,英语,有效课程数,有效平均分
select s_id as '学生ID'
,(select s_score from score where score.s_id=t.s_id and c_id=02) as dbm
,(select s_score from score where score.s_id=t.s_id and c_id=03) as mang
,(select s_score from score where score.s_id=t.s_id and c_id=04) as edg
,count(*) as '有效课程数'
,avg(t.s_score) as'平局成绩'
from score as t
group by s_id
order by avg(t.s_score)
;
18、查询各科成绩最高和最低的分: 以如下的形式显示:课程ID,最高分,最低分
select c_id as '课程ID'
,max(s_score) as '最高分'
,min(s_score) as '最低分'
from score
group by c_id;
19、按各科平均成绩从低到高和及格率的百分数从高到低排列,以如下形式显示:课程号课程名平均成绩及格百分数
---两个字段排序处理
select s.c_id
,c.c_name
,avg( coalesce(s.s_score,0)) as avg_score
,100*sum(case when coalesce(s.s_score,0)>=60 then 1 else 0 end)/count(*) as percent
from score s
join course c
on s.c_id=c.c_id
group by s.c_id
,c.c_name
order by 100*sum(case when coalesce(s.s_score,0)>=60 then 1 else 0 end)/count(*) desc,avg( coalesce(s.s_score,0)) asc
;
20、查询如下课程平均成绩和及格率的百分数(用1行显示),其中企业管理为001,马克思为002,UML为003,数据库为004
select c_id
,avg(s_score)
,sum(case when coalesce(s_score,0)>=60 then 1 else 0 end)/count(*)
from score
where c_id in (01,02,03,04)
group by c_id
;
21、查询不同老师所教不同课程平均分从高到低显示
select c.c_id
,t.t_id
,avg(coalesce(s.s_score,0))
from course c,teacher t ,score s
where c.t_id=t.t_id
and c.c_id=s.c_id
group by c.c_id
,t.t_id
order by avg(coalesce(s.s_score,0)) desc
;
22、查询如下课程成绩第3名到第6名的学生成绩单,其中企业管理为001,马克思为002,UML为003,数据库为004,以如下形式显示:
select t.c_id
,t.s_score
from
(select row_number()over(partition by c_id order by s_score desc) r1
,s_score
,c_id
from score) t
where t.r1 >=3
and t.r1 <=6
group by t.c_id
,t.s_score
order by t.c_id asc,s_score desc
;
23、使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计各分数段人数:课程ID和课程名称
select c.c_id
,c.c_name
,sum(case when s.s_score between 85 and 100 then 1 else 0 end ) as [85-100]
,sum(case when s.s_score between 70 and 85 then 1 else 0 end ) as [70-85]
,sum(case when s.s_score between 60 and 70 then 1 else 0 end)as [60-70]
,sum(case when s.s_score <60 then 1 else 0 end ) as [<60]
from course c, score s
group by c.c_id
,c.c_name
;
24、查询学生平均成绩及其名次
select t.s_id
,t.r1
,avg(t.s_score) as avg_score
from
(select s_id
,s_score
,row_number()over(partition by s_id order by avg(s_score)) as r1
from score
group by s_id
,s_score) t
group by t.s_id
,t.r1
25、查询各科成绩前三名的记录(不考虑成绩并列情况)
select t.s_id
,t.r1
,t.c_id
from
(select s_id
,c_id
,row_number()over(partition by c_id order by s_score desc) as r1
from score) t
where t.r1<3
group by t.s_id
,t.r1
,t.c_id
;
26、查询每门课程被选修的学生数
select count(s_id) as co
,c_id
from score
group by c_id
order by c_id
;
27、查询出只选修了一门课程的全部学生的学号和姓名
select s.s_id
,s.s_name
,count(c.c_id) as co
from score c ,student s
where c.s_id=s.s_id
group by s.s_id
,s.s_name
having count(c.c_id) =1
;
select s.s_id
,s.s_name
,count(c.c_id) as co
from score c ,student s
where c.s_id=s.s_id
group by s.s_id
,s.s_name
having count(c.c_id) =2
;
28、查询男生、女生人数
select sum(case when s_sex='女' then 1 else 0 end) as '女生人数'
,sum(case when s_sex='男' then 1 else 0 end) as '男生人数'
from student
;
29、查询姓“小”的学生名单
select * from student
where s_name like '小%'
;
30、查询同名同性学生名单并统计同名人数///查询姓“小”的学生人数
select s_name,count(*) from student
group by s_name
having count(*)>1
;
select count(*) from student
where s_name like '小%'
;
31、1981年出生的学生名单(注:Student表中s_birth列的类型是datetime)
select * from student
where year(s_birth)=1992
;
-----mysql里面没有datepart
select s_name
,convert(char(11),datepart(year,s_birth))as age
from student
where convert(char(11),datepart(year,s_birth))='1992'
;
------日期函数
SELECT DATE_FORMAT( deteline, "%Y-%m-%d %H" ) , COUNT( * )
FROM test
GROUP BY DATE_FORMAT( deteline, "%Y-%m-%d %H" )
;
------------注意order by和having的顺序--------------32、查询平均成绩大于85的所有学生的学号、姓名和平均成绩select s.s_id
,s.s_name
,avg(r.s_score)
from student s,score r
where s.s_id=r.s_id
group by s.s_id,s.s_name
having avg(r.s_score) > 85
order by avg(r.s_score) desc
;
33、查询每门课程的平均成绩,结果按平均成绩升序排序,平均成绩相同时,按课程号降序排列
select c_id
,avg(s_score)
from score
group by c_id
order by avg(s_score),c_id desc
;
34、查询课程名称为“数据库”且分数低于60的学生姓名和分数
select s.s_name
,coalesce(r.s_score,0)
,c.c_name
from student s,score r ,course c
where s.s_id=r.s_id
and c.c_id=r.c_id
and r.s_score <60
and c.c_name='语文'
;
35、查询所有学生的选课情况
select s.s_id
,c.c_id
,s.s_name
,c.c_name
from student s,course c,score r
where s.s_id=r.s_id
and c.c_id=r.c_id
;
37、查询不及格的课程并按课程号从大到小排列
select s_id
, c_id
,s_score
from score
where s_score<60
group by s_id,c_id,s_score
order by c_id desc
;
38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名
select s.s_id
,s.s_name
from student s,score r
where s.s_id=r.s_id
and r.s_score>80
and c_id=03
;
39、查询选了课程的学生人数
select count(distinct s_id) from score;
---40、查询选修“赵三”老师所授课程的学生中成绩最高的学生姓名及其成绩
select s.s_name
,r.s_score
from student s, course c,teacher t,score r
where s.s_id=r.s_id
and r.c_id=c.c_id
and c.t_id=t.t_id
and t.t_name='赵三'
and r.s_score=(select max(s_score) from score where c_id=c.c_id )
;
41、查询各个课程及相应的选修人数
select count(distinct s_id)
,c_id
from score
group by c_id
;
--42、查询有2门不同课程成绩相同的学生的学号、课程号、学生成绩
select distinct a.s_id,a.c_id,b.s_score from score a,score b
where a.s_score=b.s_score
and b.c_id<>a.c_id
;
43、查询每门课程成绩最好的前两名
select s.s_id
,s.r1
,s.c_id
from
(select s_id
,c_id
,row_number()over(partition by c_id order by s_id) as r1
from score) s
where r1<3
;
44、统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排序,若人数相同,按课程号升序排序
select c_id
,count(*) as co
from score
group by c_id
having count(*) >=2
order by count(*) desc,c_id asc
;
45、查询至少选修两门课程的学生学号
select s_id
,count(distinct c_id) as co
from score
group by s_id
having count(distinct c_id)>=2
;
---46、查询全部学生都选修的课程的课程号和课程名
select c.c_id,c.c_name from course c ,score r,student s
where s.s_id=r.s_id
and c.c_id=r.c_id
and (select count(*) from student) in (select count(*) from score group by c_id)
;
select c_id ,c_name from course
where c_id in (select c_id from score group by c_id);
47、查询没学过“赵三”老师讲授的任一门课程的学生姓名
select s_name from student
where s_id not in
(select s.s_id from score s,course c,teacher t
where s.c_id=c.c_id
and c.t_id=t.t_id
and t.t_name='赵三')
;
48、查询两门以上不及格课程的同学的学号及其平均成绩
select t.s_id,t.avg_score
from
(select s_id,avg(score) as avg_score
from score
group by s_id) t
where t.avg_score<60
having count(*)>1
;
select s_id,avg(s_score)from score
where s_id in (select s_id from score where s_score<60 group by s_id having count(*)>1)
group by s_id;
49、检索课程编号为“04”且分数大于60的学生学号,结果按按分数降序排列
select s_id,s_score from score
where c_id=04
and s_score>60
order by s_score desc
;
50、删除学生编号为“002”的课程编号为“001”的成绩
delete from score
where s_id=20644102
and c_id =01
;
常见的sql笔试题和面试题下
1.SQL语言允许使用通配符进行字符串匹配的操作,其中‘%’可以表示: C
A.零个字符
B.1个字符
C.多个字符
D.以上都是
2.通过 SQL,如何从 "Persons" 表中选取 "FirstName" 列?B
A、SELECT Persons.FirstName
B、SELECT FirstName FROM Persons
C、EXTRACT FirstName FROM Persons
3.通过 SQL,如何从 "Persons" 表中选取所有的列?C
A、SELECT [all] FROM Persons
B、SELECT Persons
C、SELECT * FROM Persons
D、SELECT *.Persons
4.通过 SQL,如何从 "Persons" 表中选取 "FirstName" 列的值等于"Peter" 的所有记录?D
A、SELECT [all] FROM Persons WHERE FirstName='Peter'
B、SELECT * FROM Persons WHERE FirstName LIKE 'Peter'
C、SELECT [all] FROM Persons WHERE FirstName LIKE 'Peter'
D、SELECT * FROM Persons WHERE FirstName='Peter'
5通过 SQL,如何从 "Persons" 表中选取 "FirstName" 列的值以 "a" 开头的所有记录?A
A、SELECT * FROM Persons WHERE FirstName LIKE 'a%'
B、SELECT * FROM Persons WHERE FirstName='a'
C、SELECT * FROM Persons WHERE FirstName LIKE '%a'
D、SELECT * FROM Persons WHERE FirstName='%a%'
6请判断下列说法是否正确:当所列出的某个条件为 true 时,OR 运算符会显示记录。当列出的所有条件为 true 时,AND 运算符会显示记录。A
A、正确
B、错误C
7.通过 SQL,您如何在表 Persons 中选择 FirstName 等于 Thomas 而 LastName 等于 Carter 的所有记录?C
A、SELECT * FROM Persons WHERE FirstName LIKE 'Thomas' AND LastName LIKE 'Carter'
B、SELECT FirstName='Thomas', LastName='Carter' FROM Persons
C、SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'
8通过 SQL,您如何按字母顺序选取 Persons 表中 LastName 介于 Adams 和 Carter 的所有记录?A
A、SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter'
B、SELECT * FROM Persons WHERE LastName>'Adams' AND LastName
C、SELECT LastName>'Adams' AND LastName
9哪条 SQL 语句可返回唯一不同的值?B
A、SELECT DIFFERENT
B、SELECT DISTINCT
C、SELECT UNIQUE
10哪个 SQL 关键词用于对结果集进行排序?D
A、ORDER
B、SORT BY
C、SORT
D、ORDER BY
11通过 SQL,您如何根据 "FirstName" 列降序地从 "Persons" 表返回所有记录?B
A、SELECT * FROM Persons SORT 'FirstName' DESC
B、SELECT * FROM Persons ORDER BY FirstName DESC
C、SELECT * FROM Persons ORDER FirstName DESC
D、SELECT * FROM Persons SORT BY 'FirstName' DESC
12通过 SQL,您如何在 "Persons" 表中删除 "FirstName" 等于 "Fred" 的纪录?A
A、DELETE FROM Persons WHERE FirstName = 'Fred'
B、DELETE FirstName='Fred' FROM Persons
C、DELETE ROW FirstName='Fred' FROM Persons
13通过 SQL,如何返回 "Persons" 表中记录的数目?D
A、SELECT COLUMNS() FROM Persons
B、SELECT COLUMNS(*) FROM Persons
C、SELECT COUNT() FROM Persons
D、SELECT COUNT(*) FROM Persons
mysql例题_mysql练习题1相关推荐
- Mysql练习_mysql练习题
一.数据准备 /* 数据导入: Navicat Premium Data Transfer Source Server : localhost Source Server Type : MySQL S ...
- mysql题目_MySQL练习题
创建下列表并创建相关约束 问题 1:查询出成绩表,而且student_id 后面要有对应的学生名,course_id 后面要有对应的课程名. 1 SELECT2 score.sid,3 score.s ...
- mysql练习题及答案_mysql练习题及答案.doc
mysql练习题及答案 mysql练习题及答案 mysql查询语句练习题 Sutdent表的定义 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id 学号 INT 10 是 否 是 是 是 ...
- **MySQL例题一(根据不同问题,多条件查询)**
MySQL例题一 多方面练习 1. 易错知识点 /* NULL和空值 -NULL也就是在字段中存储NULL值,空值也就是字段中存储空字符(''). select length(NULL), lengt ...
- mysql数据库入门第二张试卷_2016计算机二级《MySQL数据库》练习题与答案
2016计算机二级<MySQL数据库>练习题与答案 一.选择题 下列语句中,________不是表数据的基本操作语句. A)CREATE语句 B)INSERT语句 C)DELETE语句 D ...
- 2014年9月计算机二级mysql真题_2017年9月全国计算机二级MySQL考试章节练习题
2017年9月全国计算机二级MySQL考试章节练习题 计算机二级考试成绩在"及格",即60~89分者,由教育部考试中心发合格证书,考试成绩在"优秀",即90~1 ...
- Java中巧算年龄的代码,小学四年级奥数巧算年龄例题及练习题
[导语]年龄问题是一类与计算有关的问题,它通常以和倍.差倍或和差等问题的形式出现.有些年龄问题往往是和.差.倍数等问题的综合,需要灵活地加以解决.以下是无忧考网整理的<小学四年级奥数巧算年龄例题 ...
- mysql练习题解题_2016年计算机二级考试MySQL数据库章节练习题
一.选择题 不可对视图执行的操作有_______. A)SELECT B)INSERT C)DELETE D)CREATE INDEX 二.填空题 1.在MySQL中,可以使用_______语句创建视 ...
- mysql多表操作例题_MySQL 单表和多表的基本练习题
2 单表 查找部门30中员工的详细信息. SELECT * FROM EMP WHERE DEPTNO = 30; 找出从事clerk工作的员工的编号.姓名.部门号. SELECT EMPNO,ENA ...
最新文章
- iPhone12 safeArea顶部区域尺寸变化
- svc android,在android中,如何使用 Svc WCF服务_android_开发99编程知识库
- linux C语言之called object ‘maze’ is not a function or function pointer printf(“%d\t“, maze(i, j))
- QPushButton hover配置
- 服务器操作系统与安装步骤,服务器操作系统与安装步骤
- 排队论模型(四):M / M / s 混合制排队模型
- 微信群聊在哪个服务器,微信怎么找附近的群聊?微信群不见了怎么找?
- html禁止查看图片,强看被屏蔽微信朋友圈
- 编译开源路由下iNode客户端njit8021xclient
- 程序员申请加班调休被HR拒绝:996是行规,不想加班就滚?
- Spring核心功能之控制反转(IOC)
- Flutter版讯飞语音识别demo
- 随机点名器的实现!!!
- 浏览器免费安装ChatGPT插件与国内免费ChatGPT分享
- 9.ffplayer 原理、架构及代码分析——变速播放的实现
- DXP的使用及绘制PCB
- u盘安装linux卡logo,安装Ubuntu16.04卡在logo界面
- 双模sa_一文看懂华为 Mate 20 X 5G 版中的 “双模、SA 和 NSA”
- python期中考试试卷分析_期中考试试卷分析与反思
- ue 编写linux脚本,通过什么工具编写shell脚本更方面直观
热门文章
- 2.3 《计算机组成原理》之浮点数的表示(基本格式、规格化[左规右规]、表示范围、IEEE754标准详解)
- windows server 2012 FTP 服务器 / 虚拟目录
- linux下使用make指令生成程序时提示“XXX is up to date”问题的解决办法
- 小明分享:Esp32下softAP+tcp_server的简单实现
- java 中调用docker_如何通过Java程序执行docker命令
- python rest api 测试_如何用Python编写REST API的单元测试
- 百度Create大会:百度AI安全研究的进展与愿景
- django mysql debug_部署前准备--使用Mysql之Django Debug Toolbar安装以及配置
- 这个网盘搜索好像还不错
- js处理时间的那些事