數據庫練習題(2--簡單查詢題)


2、表的結構如下:

student表(id,name,sex,class_id,address);

score表(id,student_id,course_id,score);

class表(id,name,grade_id);

grade表(id,name);

course表(id,name);

1)查詢出“高一年級”下面的所有班級信息

分析:用到的表有grade,class

方法:把grade與class通過年級號聯合后,選出高一年級的班級信息即可

語句:

select s1.* from class s1,grade s2 where s1.grade_id = s2.id and s2.name= '高一年級';

2)查詢出“高一年級”下面的所有班級里面的學生信息

分析:用到的表有grade,class,student

方法:把這三個表聯合后,選出高一年級的學生信息即可

語句:

select s1.* from student s1,class s2,grade s3 where s1.id = s2.student_id and s2.grade_id = s3.id and s3.name = '高一年級';

3)查詢出“高一年級”下面的所有班級里面的男學生信息

分析:所用到的表有student,class,grade

方法:把這三個表進行聯合,然后找出高一年級及性別為男的學生信息即可,即在上面的語句中再加入一個條件s1.sex = '男'

語句:

4)查詢出小於等於90分的學生姓名、性別、科目名稱、分數

分析:所用到的表有student--(姓名,性別),score--分數,course--科目名稱

方法:把三個表進行聯合后,找出小於等於90分的學生的相關信息即可,score.score<=90

語句:

5)查詢高二年級下所有數學成績小於90分的同學的學號和姓名以及分數

分析:所用到的表有student--學號和姓名,score--分數,grade--高二年級,course--數學,class--通過此表與grade表進行聯合

方法:把5個表進行聯合后,從grade表中找出高二年級(grade.name='高二年級'),從course中找出數學課程(course.name='數學'),從score表中找出分數小於90(score.score<90),然后顯示出該同學的學號,姓名及分數即可

語句:略

6)查詢成績表沒有成績的學生學號,姓名

分析:所用的表有student,score

方法:首先找出有成績的學生的學號,然后跟學生表中的學號進行比對,找出不再學生表中的學號即可

語句:

select id,name from student where id not in(select student_id from score);

7)按年級分組統計每個年級下有多少班級

分析:所用的表有class--統計班級數,grade--獲取年級名稱

方法:兩表聯合后,通過對class表中的grade_id進行分組,然后統計出每個年級的班級數就可以了

語句:

select s2.name,count(*) as '班級個數' from class s1,grade s2 where s1.grade_id = s2.id group by s2.id;

8)按年級分組統計每個年級下有多少學生

分析:所用的表有student--統計學生數,class--通過此表按年級分組,grade--找出年級的名稱

方法:把三表聯合后,按年級分組(group by grade),統計出學生的數目即可(count(*))。

語句:

select s3.name,count(*) from student s1,class s2,grade s3 where s1.class_id = s2.id and s2.grade_id = s3.id group by s3.id;

3、表的結構如下:

圖書(圖書號,圖書名,作者編號,出版社,出版日期);

作者(作者姓名,作者編號,年齡,性別);

要求:用SQL語句查詢年齡小於平均年齡的作者姓名、圖書名,出版社。

分析:所用的表有圖書及作者兩個表

方法:把兩表聯合后,找出作者表中的小於平均年齡avg(年齡)的相關信息

注意:這里的平均年齡因為是個動態的值,不能直接用年齡 <avg(年齡)進行比較,要先通過“select avg(年齡) from 作者”得到平均年齡后,才能進行比較

語句:

select s1.作者姓名,s2.圖書名,s2.出版社

from 作者 s1,圖書 s2

where s1.作者編號 = s2.作者編號

and 年齡 < (select avg(年齡) from 作者);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM