学生信息表(student)
姓名name | 学号code |
---|---|
张三 | 001 |
李四 | 002 |
马五 | 003 |
甲六 | 004 |
考试信息表(exam)
学号code | 学科subject | 成绩score |
---|---|---|
001 | 数学 | 80 |
002 | 数学 | 75 |
001 | 语文 | 90 |
002 | 语文 | 80 |
001 | 英语 | 90 |
002 | 英语 | 85 |
003 | 英语 | 80 |
004 | 英语 | 70 |
1)、查询出所有学生信息,sql怎么编写?
select * from student;
2)、新学生小明,学号为005,需要将信息写入学生信息表,sql语句怎么编写?
insert into student values ('小明',005);
3)、李四语文成绩被登记错误,成绩实际为85分,更新到考试信息表中,sql语句怎么编写?
updata exam set score=85 where subject=‘语文’ and code=(select code from student where name="李四")
4)、查询出各科成绩的平均成绩,显示字段为:学科、平均分,sql怎么编写?
select subject,avg(score) from exam group up subject;
5)、查询出所有学生各科成绩,显示字段为:姓名、学号、学科、成绩,并以学号与学科排序,没有成绩的学生也需要列出,sql怎么编写?
select student.name,student.code,exam.subject,exam.score from student left join exam on student.code=exam.code order by code asc,subiect asc;
6)、查询出单科成绩最高的,显示字段为:姓名、学号、学科、成绩,sql怎么编写?
select student.name,student.code,exam.subject,exam.score from student left join exam on student.code=exam.code where (exam.subject,exam.score) in (select subject,max(score) from exam group by subject);
三、如下手数据表:
b1
主码 | 列标题 | 列名 | 数据类型 | 宽度 | 小数位数 | 是否空值 |
---|---|---|---|---|---|---|
P | 书号 | TNO | char | 15 | no | |
书名 | TNAME | varchar | 50 | no | ||
作者姓名 | TAUTHOR | varchar | 8 | no | ||
出版社编号 | CNO | char | 5 | yes | ||
书类 | TCATEGORY | varchar | 20 | yes | ||
价格 | TPRICE | numeric | 8 | 2 | yes |
b2
主码 | 列标题 | 列名 | 数据类型 | 宽度 | 小数位数** | 是否空值 |
---|---|---|---|---|---|---|
p | 出版社编号 | CNO | char | 5 | NO | |
出版社名称 | CNAME | varchar | 20 | NO | ||
出版社电话 | CPHONE | varchar | 15 | YES | ||
出版社城市 | CCITY | varchar | 20 | YES |
1)、查询出版过“计算机”类图书的出版社编号(若一个出版社出版过多部“计算机”类图书,则在查询结果中该出版社编号只显示一次)
select distinct CNO from b1 where TCATEGORY='计算机';
2)、查询南开大学出版社的“经济”类或“数学”类图书的信息
select * from b1,b2 where b1.CNO=b2.CNO and b2.CNAME='南开大学' and (b1.TCATEGORY='经济' or b1.TCATEGORY='数学');
3)、查询编号为“00001”的出版社出版图书的平均价
select avg(TPRICE) from b1 where CNO='00001';
4)、查询至少出版过20套图书的出版社,在查询结果中按出版社编号的升序顺序显示满足条件的出版社编号、出版社名称和每个出版社出版的图书套数
select b2.CNAME from b1,b2 where b1.CNO=b2.CNO and group by b1.CNO having count(b1.CNO)>20;
5)、查询比编号为“00001”的出版社出版图书套数多的出版社编号
select CNO from b1 group by CNO having count(*)>(select count(*) from b1 where CNO='00001');