当前位置:文档之家 > msyql 多表查询

msyql 多表查询

多表查询

1. 简单查询

内连接查询

1】简单的连接查询

给两个表找中间桥梁: select 字段列表 from 表1, 表2 where 表1.s_di=表2.s_id; eg: select s_name,marks from student_info,marks_info where student_info.s_id=marks_info.s_id;

eg: select s_name,marks,c_name from

student_info,marks_info,class_info where marks_info.s_id=student_info.s_id and marks_info.c_id=class_info.c_id;

问题: 如果表名很长,书写繁琐,代码不清晰。

解决: 使用表别名

定义格式 :1】表名 as 别名

2】表名 别名

别名作用域只在本查询语句中

eg : select s_name,c_name,marks from student_info s,marks_info m,class_info c where s.s_id=m.s_id and m.c_id=c.c_id

查询学生的编号,姓名,科目,成绩

问题: 如果查询的字段在多个表中存在,那么就必须在字段前添加表名或表的别名

select s.s_id,s_name,c_name,marks from student_info s,marks_info m,class_info c where s.s_id=m.s_id and m.c_id=c.c_id

2】SQL 内外连接 (是SQL 语言中的多表分类, 查询效率比简单查询和子查询在某种情况下要高)

内连接格式:select 字段列表 from 表1 inner join 表2 on 表1. 字段=表2. 字段

eg :查询学生的姓名和成绩

select s_name,c_name,marks from student_info inner join marks_info on

student_info.s_id=marks_info.s_id inner join class_info on

marks_info.c_id=class_info.c_id;

(我试了下,这个作用其实和那个把两个表中相同的如ID 号再把其对应的字段放在一起。和 select * from table1,table2 where table1.id=table2.id差不多,效果一样)
3】自然查询 : 是简单的查询中去掉重复的记录 在字段中添加distinct 外连接查询 outer join

(我试了下,这个作用其实和那个把两个表中相同的如ID 号再把其对应的字段放在一起。和 select * from table1,table2 where table1.id=table2.id差不多,效果一样) 3】自然查询 : 是简单的查询中去掉重复的记录 在字段中添加distinct 外连接查询 outer join

1】左连接 (left join)select 字段列表 from 表1 left join 表2 on 表1. 字段=表2. 字段

(查询语句以表1为参照表) 如果表2中有与表1相匹配的记录,那么就显示记录,如果表2中没有与表1相匹配的记录则在相对应的字段上填充null)

问题:如果查询的记录,必须以某个表作为参照表,打印出记录相同的所有的记录 SELECT s_name, marks FROM student_info s LEFT JOIN marks_info m ON s.s_id = m.s_id

2】右连接 (right join) (查询语句以表2为参照表)

下载Word文档免费下载:

msyql 多表查询下载

(共17页)

TOP相关主题