学生信息表 -通过选择年级和班级得到详细的学生信息名单

本文介绍了一个使用SQL进行复杂查询的案例,展示了如何通过多个表的连接查询来获取特定年级和班级的学生信息,并计算学生的年龄及预计毕业时间。涉及的知识点包括INNER JOIN的使用、别名设置、DATEADD和DATEDIFF函数的应用。

功能:
通过选择年级和班级得到详细的学生信息名单
知识点:
1. A inner join B on A.id=B.id的应用
    Inner Join 逻辑运算符返回满足第一个(顶端)输入与第二个(底端)输入联接的每一行。
2. A as a 别名的应用
   列别名可以在order by中使用,但不可以用在where,group by,having子句中
3.datediff(datepart,startdate,enddate)的应用
   返回以datepart为单位的enddate-startdate的差值  
   参数说明:
   datepart:是规定了应在日期的哪一部分计算差额的参数

日期部分缩写
yearyy, yyyy
quarterqq, q
Monthmm, m
dayofyeardy, y
Daydd, d
Weekwk, ww
Hourhh
minutemi, n
secondss, s
millisecondms

  startdate:计算的开始时间
   enddate:计算的终止时间
  返回类型:integer
 4.dateadd(datepart,number,date)  
   在向指定日期加上一段时间的基础上,返回新的 datetime
     number:用来增加 datepart 的值
 5.getdate()函数,获取当前日期;
 6.left(char_expr,int_expr) 返回字符串左边int_expr个字符
 7.year()返回表示指定日期中的年份的整数。
SQL语句

ContractedBlock.gifExpandedBlockStart.gif学生信息表(年级,班级,姓名,性别,年龄,毕业时间)
None.gif//学生信息表(年级,班级,姓名,性别,年龄,毕业时间)
None.gif
select 
None.gifg.grade_name  
as 年级,
None.gifc.class_name 
as 班级,
None.gifs.stu_name 
as 姓名,
None.gifs.stu_sex 
as 性别,
None.gif
datediff(year,s.stu_birth,getdate())  as 年龄,
None.gif
year(dateadd(year,3,left(g.grade_name,4))) as 毕业时间
None.gif
from tab_students as s 
None.gif
inner join tab_student_class as sc on s.stu_id=sc.stu_id  
None.gif
inner join tab_classes as c on sc.class_id=c.class_id
None.gif
inner join tab_class_grade as cg on sc.class_id=cg.class_id
None.gif
inner join tab_grades as g on cg.grade_id=g.grade_id
None.gif
where cg.grade_id='3' and cg.class_id='4'
None.gif
go

查询结果
xueshengxinxibiao1.gif

转载于:https://www.cnblogs.com/tenghoo/archive/2006/10/27/541821.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值