mysql——多表——外连接查询——左连接、右连接、复合条件查询

你的名字 2023-10-02 08:49 159阅读 0赞
  1. create table employee ( num int(50),
  2. d_id int(50),
  3. name varchar(50),
  4. age int(50),
  5. sex varchar(50),
  6. homeadd varchar(50)
  7. );
  8. insert into employee values(1,1001,'zhangsan',26,'nan','beijing');
  9. insert into employee values(2,1001,'lisi',24,'nv','hunan');
  10. insert into employee values(3,1002,'wangwu',25,'nan','jiangsu');
  11. insert into employee values(4,1004,'aric',15,'nan','yingguo');
  12. select * from employee;
  13. create table department ( d_id int(50),
  14. d_name varchar(50),
  15. functione varchar(50),
  16. address varchar(50)
  17. );
  18. insert into department values(1001,'keyanbu','yanfachanpin','3lou5hao');
  19. insert into department values(1002,'shengchanbu','shengchanchanp','5louyiceng');
  20. insert into department values(1003,'xiaoshoubu','cehuaxiaoshou','1louxiaoshoudating');
  21. select * from department;
  22. select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id;
  23. 内连接查询:可以查询两个或者两个以上的表,当两个表中存在表示相同意义的字段时,可以通过该字段来连接这两个表;
  24. 当该字段的值相等时,就查询出该记录。
  25. ======================================================================================================================
  26. 外连接查询:可以查询两个或者两个以上的表,外连接查询也需要通过指定字段来进行连。
  27. 当该字段取值相等时,可以查询出该记。
  28. 而且该字段取值不相等的记录也可以查询出来。
  29. 外连接包括:左连接、右连接
  30. 语法:
  31. select 属性列表 from 表名1 left | right join 表名2 on 表名1.属性名1 = 表名2.属性名2
  32. 属性列表表示要查询的字段的名称,这些字段可以来自不同的表;
  33. Left表示左连接查询;
  34. rigth表示右连接查询;
  35. on后面接的是连接的条件;
  36. 1、左连接查询
  37. 进行左连接查询时,可以查询出表名1所指的表中的所有记录。而表名2所指的表中,只能查询出匹配的记录
  38. select * from employee;
  39. select * from department;
  40. select num,name,employee.d_id,age,sex,d_name,functione from employee left join department on employee.d_id = department.d_id;
  41. 2、右连接查询
  42. 进行右连接查询时,可以查询出表名2所指的表中的所有记录。而表名1所指的表中,只能查询出匹配的记录
  43. select * from employee;
  44. select * from department;
  45. select num,name,employee.d_id,age,sex,d_name,functione from employee right join department on employee.d_id = department.d_id;
  46. 复合条件查询
  47. 在连接查询时,通过增加其他的限制条件,可以使查询结果更加准确
  48. select * from employee;
  49. select * from department;
  50. select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id;
  51. select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id and age > 24;
  52. select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id order by age asc;
  53. select 语句先按照内连接的方式从employeedepartment表中查询出数据。然后查询结果按照age字段从小到大的顺序进行排序。
  54. =================================================================================================================================

前期准备表语句:

  1. create table employee ( num int(50),
  2. d_id int(50),
  3. name varchar(50),
  4. age int(50),
  5. sex varchar(50),
  6. homeadd varchar(50)
  7. );
  8. insert into employee values(1,1001,'zhangsan',26,'nan','beijing');
  9. insert into employee values(2,1001,'lisi',24,'nv','hunan');
  10. insert into employee values(3,1002,'wangwu',25,'nan','jiangsu');
  11. insert into employee values(4,1004,'aric',15,'nan','yingguo');
  12. select * from employee;
  13. create table department ( d_id int(50),
  14. d_name varchar(50),
  15. functione varchar(50),
  16. address varchar(50)
  17. );
  18. insert into department values(1001,'keyanbu','yanfachanpin','3lou5hao');
  19. insert into department values(1002,'shengchanbu','shengchanchanp','5louyiceng');
  20. insert into department values(1003,'xiaoshoubu','cehuaxiaoshou','1louxiaoshoudating');
  21. select * from department;

select * from employee;

9218c960aae6f873c3e76f2039736d6d.png

select * from department;

1de78f1c3bd934ffb409abeecdb3810b.png

左连接查询:

语法:

select 属性列表 from 表名1 left | right join 表名2 on 表名1.属性名1 = 表名2.属性名2;

属性列表表示要查询的字段的名称,这些字段可以来自不同的表;

Left表示左连接查询;

rigth表示右连接查询;

on后面接的是连接的条件;

1、左连接查询

进行左连接查询时,可以查询出表名1所指的表中的所有记录。而表名2所指的表中,只能查询出匹配的记录

  1. select num,name,employee.d_id,age,sex,d_name,functione from employee left join department on employee.d_id = department.d_id;

7e62322dc2c5d0c6f1893a74d659080e.png

2、右连接查询

进行右连接查询时,可以查询出表名2所指的表中的所有记录。而表名1所指的表中,只能查询出匹配的记录

  1. select num,name,employee.d_id,age,sex,d_name,functione from employee right join department on employee.d_id = department.d_id;

50ae9bd58149f4163472f30361736407.png

3、复合条件查询

在连接查询时,通过增加其他的限制条件,可以使查询结果更加准确

  1. select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id;
  2. select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id and age > 24;
  3. select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id order by age asc;

发表评论

表情:
评论列表 (有 0 条评论,159人围观)

还没有评论,来说两句吧...

相关阅读