数据库MySql阶段总结

S1数据库中最重要的是查询,对于查询要有一个好的理解模型是很关键的:

1. 每一个查询都会返回一个结果集,这个结果集可能是一个值,一个字段或者一个记录,甚至可能是一个表

返回一个值

  1. SELECT * FROM score WHERE cno='3-105'
  2. AND degree>(SELECT degree FROM score WHERE sno='109'AND cno='3-105');

2. 每一个结果集都可以作为另一个查询语句的对象

3. 表中的属性(字段)可以看作是一个变量,可以参与运算

  1. -- 38,查询Student表中每个学生的姓名和年龄。
  2. SELECT sname 姓名,YEAR(NOW())-YEAR(sbirthday) 年龄 FROM student;

4. 查询的模式 一: 把所有的有关系的表不出现重复数据的连接在一起然后筛选符合条件的结果集

  1. -- 45,查询所有选修"计算机导论"课程的"男"同学的成绩表。
  2. SELECT * FROM course JOIN score ON course.cno=score.cno
  3. JOIN student ON student.sno=score.sno
  4. WHERE cname='计算机导论' AND ssex='男';

5. 查询的模式 二: 利用条件把有关的表连接起来,通过底层的查询,层层查询,直到查询到符合条件的,这是一种嵌套查询

  1. -- 24,查询选修某课程的同学人数多于5人的教师姓名
  2. SELECT tname FROM teacher WHERE tno IN
  3. (SELECT tno FROM course WHERE cno IN
  4. (SELECT cno FROM score GROUP BY cno HAVING COUNT(*)>5));

6. 尽量用IN和NOT IN 避免出现错误

7. 只有在子查询用到父查询的条件的时候,才用相关子查询

8. 分组查询只有在显示所分组的字段的时候才有意义,要不没有意义

9. 每一条查询语句都有自己的执行顺序,有的时候执行顺序的不同, 可能造成查询结果的偏差

转载于:https://www.cnblogs.com/zhengfengyun/p/5288960.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值