子查询:
select * from (select * from student where age>20 ) stu
多表查询:
获取学生各科的成绩后应该怎样存储:
eg.张三 2017846550 计科 数据库 数据库 80
张三 2017846550 计科 java 数据库 80
李四 2017846550 计科 数据库 数据库 80
李四2017846550 计科 数据库 80
应该将学生信息和学生成绩分别列为两个表避免数据的冗余
假设表1 student 数据:学号 姓名 性别 年龄 专业
假设表2 stu_score数据:ID stu_no subject score
(注:若设置字节长度为50无论你写了几个字都占用50个字节)
select student.*, stu_score.* from student,stu_score
两个表通过学生编号进行关联将按照某种条件进行综合排序
select student.*, stu_score.* from student,stu_score where student.stu_no=stu_score.stu_no
链接分为交叉连接 外连接 内连接,下面对各个连接进行介绍
交叉连接:
select student.*, stu_score.* from student
内连接:
1,select student.*, stu_score.* from student inner join stu_score on student.stu_no=stu_score.stu_no
其中的* 号可以随便的添加自己需要的条件
2,select student.stu_name,student.stu_no, stu_score.subject, stu_score.score from student inner join stu_score on student.stu_no=stu_score.stu_no
外连接:
1.左链接:select student.stu_name,student.stu_no, stu_score.subject, stu_score.score from student left join stu_score on student.stu_no=stu_score.stu_no
左边的student 表用于统计作为主表,主表有的信息就显示,右边不存在信息就为空
2.右链接:select student.stu_name,student.stu_no, stu_score.subject, stu_score.score from student right join stu_score on student.stu_no=stu_score.stu_no
右边的st_score 表用于统计作为主表
以上