--为了方便做题创建了表--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相关推荐

  1. Mysql练习_mysql练习题

    一.数据准备 /* 数据导入: Navicat Premium Data Transfer Source Server : localhost Source Server Type : MySQL S ...

  2. mysql题目_MySQL练习题

    创建下列表并创建相关约束 问题 1:查询出成绩表,而且student_id 后面要有对应的学生名,course_id 后面要有对应的课程名. 1 SELECT2 score.sid,3 score.s ...

  3. mysql练习题及答案_mysql练习题及答案.doc

    mysql练习题及答案 mysql练习题及答案 mysql查询语句练习题 Sutdent表的定义 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id 学号 INT 10 是 否 是 是 是 ...

  4. **MySQL例题一(根据不同问题,多条件查询)**

    MySQL例题一 多方面练习 1. 易错知识点 /* NULL和空值 -NULL也就是在字段中存储NULL值,空值也就是字段中存储空字符(''). select length(NULL), lengt ...

  5. mysql数据库入门第二张试卷_2016计算机二级《MySQL数据库》练习题与答案

    2016计算机二级<MySQL数据库>练习题与答案 一.选择题 下列语句中,________不是表数据的基本操作语句. A)CREATE语句 B)INSERT语句 C)DELETE语句 D ...

  6. 2014年9月计算机二级mysql真题_2017年9月全国计算机二级MySQL考试章节练习题

    2017年9月全国计算机二级MySQL考试章节练习题 计算机二级考试成绩在"及格",即60~89分者,由教育部考试中心发合格证书,考试成绩在"优秀",即90~1 ...

  7. Java中巧算年龄的代码,小学四年级奥数巧算年龄例题及练习题

    [导语]年龄问题是一类与计算有关的问题,它通常以和倍.差倍或和差等问题的形式出现.有些年龄问题往往是和.差.倍数等问题的综合,需要灵活地加以解决.以下是无忧考网整理的<小学四年级奥数巧算年龄例题 ...

  8. mysql练习题解题_2016年计算机二级考试MySQL数据库章节练习题

    一.选择题 不可对视图执行的操作有_______. A)SELECT B)INSERT C)DELETE D)CREATE INDEX 二.填空题 1.在MySQL中,可以使用_______语句创建视 ...

  9. mysql多表操作例题_MySQL 单表和多表的基本练习题

    2 单表 查找部门30中员工的详细信息. SELECT * FROM EMP WHERE DEPTNO = 30; 找出从事clerk工作的员工的编号.姓名.部门号. SELECT EMPNO,ENA ...

最新文章

  1. iPhone12 safeArea顶部区域尺寸变化
  2. svc android,在android中,如何使用 Svc WCF服务_android_开发99编程知识库
  3. linux C语言之called object ‘maze’ is not a function or function pointer printf(“%d\t“, maze(i, j))
  4. QPushButton hover配置
  5. 服务器操作系统与安装步骤,服务器操作系统与安装步骤
  6. 排队论模型(四):M / M / s 混合制排队模型
  7. 微信群聊在哪个服务器,微信怎么找附近的群聊?微信群不见了怎么找?
  8. html禁止查看图片,强看被屏蔽微信朋友圈
  9. 编译开源路由下iNode客户端njit8021xclient
  10. 程序员申请加班调休被HR拒绝:996是行规,不想加班就滚?
  11. Spring核心功能之控制反转(IOC)
  12. Flutter版讯飞语音识别demo
  13. 随机点名器的实现!!!
  14. 浏览器免费安装ChatGPT插件与国内免费ChatGPT分享
  15. 9.ffplayer 原理、架构及代码分析——变速播放的实现
  16. DXP的使用及绘制PCB
  17. u盘安装linux卡logo,安装Ubuntu16.04卡在logo界面
  18. 双模sa_一文看懂华为 Mate 20 X 5G 版中的 “双模、SA 和 NSA”
  19. python期中考试试卷分析_期中考试试卷分析与反思
  20. ue 编写linux脚本,通过什么工具编写shell脚本更方面直观

热门文章

  1. 2.3 《计算机组成原理》之浮点数的表示(基本格式、规格化[左规右规]、表示范围、IEEE754标准详解)
  2. windows server 2012 FTP 服务器 / 虚拟目录
  3. linux下使用make指令生成程序时提示“XXX is up to date”问题的解决办法
  4. 小明分享:Esp32下softAP+tcp_server的简单实现
  5. java 中调用docker_如何通过Java程序执行docker命令
  6. python rest api 测试_如何用Python编写REST API的单元测试
  7. 百度Create大会:百度AI安全研究的进展与愿景
  8. django mysql debug_部署前准备--使用Mysql之Django Debug Toolbar安装以及配置
  9. 这个网盘搜索好像还不错
  10. js处理时间的那些事