多表查询(连接查询)
日期:2017-06-15
1、 利用from子句进行多表查询
在学生成绩信息表和学生信息表中查询高数成绩大于85分的学生的详细信息。
Select distinct s .学生信息,s.学生姓名,s.性别,s.出生年月,s.年龄,s.所在学院,s.所学专业,m .高数 from tb_stu s, tb_mark m where s.学生编号= m .学生编号 and m .高数>85
2、 使用表别名
表别名可以使用带AS的sql语句 如 tabtable_name as table alias 和不带AS的sql语句如table_name table_alias
在学生信息表和学生分数表中查询计算机学院的学生的学生的成绩
Select s.学生编号,s.学生姓名,m .高数,m .外语,m .马经,s.所在学院 from tb_stu as s,tb_mark as m where s.学生编号=m .学生编号and s.所在学院=’计算机学院’
3、 合并多个结果集
Union运算用于合并多个结果集,它可以将两个或多个select语句的查询结果合并成一个结果集。使用union运算符合并的结果集都必须具额相同的结构,相应结果集中列的数据类型必须兼容。当查询的数据在不同的地方,并且无法用一个查询语句得到时,使用union运算符是非常有用的。
Union的结果集列名与union运算符中第一个select语句的结果集的列名相同,另一个select语句的结果及列名将被忽略。
将顾客表和雇员表中的编号、姓名、地址、邮编字段合并到一个表中
Select 顾客编号 as 编号,顾客姓名 as 姓名,所在城市,邮编 from 顾客表 union select 雇员编号,雇员名称,邮编 from 雇员表
注意
(1) 如果使用union运算符,那么单独的select 语句不能包含其自己的order by 或compute子句,只能在最后一个select 语句的最后面使用一个order by或compute子句,该子句适用于最终的合并结果
(2) 使用union运算符时,引用的表必须具有相似的数据类型和字段数,每个查询中的选择列也必须具有相同的顺序
(3) 如果把一个复杂的查询分解成若干个select语句,并用union运算符合并结果集,有时候会使查询速度有所提高。
在学生成绩信息表和学生信息表中查询高数成绩大于85分的学生的详细信息。
Select distinct s .学生信息,s.学生姓名,s.性别,s.出生年月,s.年龄,s.所在学院,s.所学专业,m .高数 from tb_stu s, tb_mark m where s.学生编号= m .学生编号 and m .高数>85
2、 使用表别名
表别名可以使用带AS的sql语句 如 tabtable_name as table alias 和不带AS的sql语句如table_name table_alias
在学生信息表和学生分数表中查询计算机学院的学生的学生的成绩
Select s.学生编号,s.学生姓名,m .高数,m .外语,m .马经,s.所在学院 from tb_stu as s,tb_mark as m where s.学生编号=m .学生编号and s.所在学院=’计算机学院’
3、 合并多个结果集
Union运算用于合并多个结果集,它可以将两个或多个select语句的查询结果合并成一个结果集。使用union运算符合并的结果集都必须具额相同的结构,相应结果集中列的数据类型必须兼容。当查询的数据在不同的地方,并且无法用一个查询语句得到时,使用union运算符是非常有用的。
Union的结果集列名与union运算符中第一个select语句的结果集的列名相同,另一个select语句的结果及列名将被忽略。
将顾客表和雇员表中的编号、姓名、地址、邮编字段合并到一个表中
Select 顾客编号 as 编号,顾客姓名 as 姓名,所在城市,邮编 from 顾客表 union select 雇员编号,雇员名称,邮编 from 雇员表
注意
(1) 如果使用union运算符,那么单独的select 语句不能包含其自己的order by 或compute子句,只能在最后一个select 语句的最后面使用一个order by或compute子句,该子句适用于最终的合并结果
(2) 使用union运算符时,引用的表必须具有相似的数据类型和字段数,每个查询中的选择列也必须具有相同的顺序
(3) 如果把一个复杂的查询分解成若干个select语句,并用union运算符合并结果集,有时候会使查询速度有所提高。