`
在下个路口
  • 浏览: 110009 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

初识SQL

 
阅读更多
    SQL语句,个人觉得逻辑性很强,特别是查询语句,查询语句写的好坏直接决定了程序的运行效率,而且在以后的项目中,数据库是必须的,所以学习好数据库语句是十分重要的。
     这些天也刚刚接触了SQL语句,下面就学生表,选课表,教师表,成绩表,给出一些比较经典的学生表查询语句,攻克select语句,那么离掌握数据库还远吗?
      


       有四张表,如下:
学生表(student) 属性:s_no,s_name,s_age,s_sex(s_age列类型是datetime)

课程表(course)) 属性:c_no,c_name,t_no

成绩表(sc)            属性:s_no,c_no,score

教师表(Teacher)    属性:t_no,t_name


  数据库经典题型 :
1. 查询同时选择编号1课程和编号2课程且1课程比2课程分数高的学生的学号
select t1.s_no from(select s_no,score  from sc where c_no=1) t1,(select s_no,score from sc where c_no=2) t2 where t1.s_no=t2.s_no and t1.score>t2.score;     
关键:t1.s_no=t2.s_no




2. 查询平均成绩大于80分的同学的学号和平均成绩
select s_no,avg(score) from sc group by s_no having avg(score)>80;




3. 查询所有同学的学号、姓名、所学课程数、总成绩
select student.s_no,student.s_name,count(sc.c_no),sum(score) from student left outer join sc on student.s_no=sc.s_no group by student.s_no,s_name;





4. 查询没有选全所有课的同学的学号、姓名
 

这里因为创建表的时候,没有考虑好各种情况,在这里没有选全所有课的同学为empty




5. 查询学过编号1并且也学过编号2课程的同学的学号、姓名
select student.s_no,student.s_name from student,sc where student.s_no=sc.s_no and sc.c_no=1 and exists(select *from sc as sc_2 where sc_2.s_no=sc.s_no and sc_2.c_no=2);






9. 查询男生、女生人数
Select s_sex,count(s_sex) from student group by s_sex;





10. 1993年出生的学生名单
   select *from student where s_age like "%1993%"; 模糊查询





          这里只是挑选比较典型的select语句,当然还有很多比这更复杂的语句,所以,任重道远!


  • 大小: 26.8 KB
  • 大小: 10.8 KB
  • 大小: 16.6 KB
  • 大小: 6.4 KB
  • 大小: 11.4 KB
  • 大小: 17.5 KB
  • 大小: 14.6 KB
  • 大小: 35 KB
  • 大小: 16.7 KB
  • 大小: 11.8 KB
  • 大小: 24.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics