數據查詢:學生管理系統練習

前言

studentdb數據庫還是用的上篇文章的, 害,一直以爲列名要用英文,知道可以用漢字時,就把自設的英文都改成漢字,舒服了。上篇文章鏈接:https://blog.csdn.net/weixin_43912621/article/details/105517325.

(1)在studentdb數據庫中,運行下列SQL語句將輸出什麼?

① select count(*) from grade
在這裏插入圖片描述
② select substring(姓名,1,2) from student_info
在這裏插入圖片描述
③ select sqrt(分數) from grade where 分數>=85
在這裏插入圖片描述
④ select year(getdate()),month(getdate()),day(getdate())
在這裏插入圖片描述

(2)在studentdb數據庫中使用select語句進行基本查詢。

①在student_info表中,查詢每個學生的學號、姓名和出生日期信息。
②查詢學號爲’0002’的學生的姓名和家庭住址。
③找出所有男同學的學號和姓名。

select 學號,姓名,出生日期from student_info

select 姓名,家庭住址from student_info where 學號=0002

select 學號,姓名from student_info where 性別='男'
(3)使用select語句進行條件查詢。

①在grade表中查找分數在70-90範圍內的學生的學號和分數。
②在grade表中查詢課程編號爲0003的學生的平均分。
③在grade表中查詢學習各門課程的人數。
④將學生信息按出生日期由大到小順序排序。
⑤查詢所有姓“張”的學生的學號和姓名。

select 學號,分數from grade where 分數between 70 and 90

select AVG(分數)as 平均分from grade where 課程編號='0003'

select 課程編號,count(*)as 課程人數from grade group by 課程編號

select* from student_info order by 出生日期

select 學號,姓名from student_info where 姓名like '張%'
(4)對student_info表,按性別順序列出學生的學號、姓名、性別、出生日期及家庭住址,性別相同的按學號由小到大順序排列。
select * from student_info order by 性別,學號
(5)使用group by子句列出各個學生的平均成績。
select 學號,AVG(分數)as 同學平均分from grade group by 學號
(6)使用union運算符將student_info表中姓“張”的學生的學號和姓名與curriculum表的課程編號、課程名稱返回在一個表中,且列名爲u_編號、u_名稱。
select 學號as u_編號,姓名as u_名稱from student_info
where 姓名like'張%' union 
select 課程編號,課程名稱from curriculum
(7)嵌套查詢

① 在student_info表中查找與“劉衛平”性別相同的所有學生的姓名、出生日期。
② 使用in子查詢查找所修課程編號爲0002、0005的學生學號、姓名、性別。
③列出學號爲0001的學生的分數比學號爲0002號的學生的最低分數高的課程編號和分數。
④列出學號爲0001的學生的分數比學號爲0002號的學生的最高成績還要高的課程編號和分數。

select 姓名,出生日期from student_info 
where 性別=( select 性別 from student_info where 姓名='劉衛平')

select a.學號,姓名,性別,課程編號from student_info a, grade b 
where a.學號=b.學號and 課程編號in(0002,0005)

select 課程編號,分數,學號from grade 
where 學號='0001' and 分數>any( select 分數from grade where 學號='0002')

select 課程編號,分數,學號from grade 
where 學號='0001' and 分數>all( select 分數from grade where 學號='0002')
(8)連接查詢。

①查詢分數在80-90範圍內的學生的學號、姓名和分數信息。
②查詢學習“C語言程序設計”課程的學生的學號、姓名和分數。
③查詢所有男同學的選課情況,要求列出學號、姓名、課程名稱和分數。
④查詢每個學生的所選課程的最高成績,要求列出學號、姓名、課程編號和分數。
⑤查詢所有學生的總成績,要求列出學號、姓名、總成績,沒有選修課程的學生的總成績爲空。
⑥ 爲grade表添加數據行:學號爲0004、課程編號爲0006、分數爲76。查詢所有課程的選修情況,要求列出課程編號、課程名稱、選修人數,curriculum表中沒有的課程列值爲空。

select s.學號,s.姓名,分數 from student_info s, grade g 
where s.學號=g.學號and g.分數between 80 and 90

select s.學號,s.姓名,課程名稱,分數from student_info s 
inner join grade g on g.學號=s.學號 
inner join curriculum c on g.課程編號=c.課程編號
where c.課程名稱='C語言程序設計'

select s.學號,姓名,課程名稱,分數 from student_info s 
join grade g on s.學號=g.學號 
join curriculum c on g.課程編號=c.課程編號
where 性別='男'

select s.學號,姓名,課程編號,分數 from student_info s left 
join( select a.學號,課程編號,分數 from grade a,
( select 學號,MAX(分數)最高分from grade g group by 學號) b 
where a.學號=b.學號and a.分數=b.最高分)c on s.學號=c.學號

select s.學號,s.姓名,sum(分數) from student_info s 
left join grade g on s.學號=g.學號
left join curriculum c on g.課程編號=c.課程編號
group by s.學號,s.姓名

insert into grade
values('0004','0006',76,null)
select c.課程編號,課程名稱, COUNT(*) from grade g 
right join curriculum c on c.課程編號=g.課程編號
group by c.課程編號,c.課程名稱
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章