mysql——多表——外連接查詢——左連接、右連接、復合條件查詢


create table employee ( num int(50),
                        d_id int(50),
                        name varchar(50),
                        age int(50),
                        sex varchar(50),
                        homeadd varchar(50)
                       );
insert into employee values(1,1001,'zhangsan',26,'nan','beijing'); insert into employee values(2,1001,'lisi',24,'nv','hunan'); insert into employee values(3,1002,'wangwu',25,'nan','jiangsu'); insert into employee values(4,1004,'aric',15,'nan','yingguo');
select * from employee;




create table department ( d_id int(50), d_name varchar(50), functione varchar(50), address varchar(50) );
insert into department values(1001,'keyanbu','yanfachanpin','3lou5hao'); insert into department values(1002,'shengchanbu','shengchanchanp','5louyiceng'); insert into department values(1003,'xiaoshoubu','cehuaxiaoshou','1louxiaoshoudating');

select * from department;




select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id; 內連接查詢:可以查詢兩個或者兩個以上的表,當兩個表中存在表示相同意義的字段時,可以通過該字段來連接這兩個表; 當該字段的值相等時,就查詢出該記錄。 ====================================================================================================================== 外連接查詢:可以查詢兩個或者兩個以上的表,外連接查詢也需要通過指定字段來進行連。 當該字段取值相等時,可以查詢出該記。 而且該字段取值不相等的記錄也可以查詢出來。 外連接包括:左連接、右連接 語法: select 屬性列表 from 表名1 left | right join 表名2 on 表名1.屬性名1 = 表名2.屬性名2; 屬性列表表示要查詢的字段的名稱,這些字段可以來自不同的表; Left表示左連接查詢; rigth表示右連接查詢; on后面接的是連接的條件; 1、左連接查詢 進行左連接查詢時,可以查詢出表名1所指的表中的所有記錄。而表名2所指的表中,只能查詢出匹配的記錄 select * from employee; select * from department; select num,name,employee.d_id,age,sex,d_name,functione from employee left join department on employee.d_id = department.d_id; 2、右連接查詢 進行右連接查詢時,可以查詢出表名2所指的表中的所有記錄。而表名1所指的表中,只能查詢出匹配的記錄 select * from employee; select * from department; select num,name,employee.d_id,age,sex,d_name,functione from employee right join department on employee.d_id = department.d_id; 復合條件查詢 在連接查詢時,通過增加其他的限制條件,可以使查詢結果更加准確 select * from employee; select * from department; select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id; select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id and age > 24; 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; select 語句先按照內連接的方式從employee和department表中查詢出數據。然后查詢結果按照age字段從小到大的順序進行排序。 =================================================================================================================================

 

前期准備表語句:

create table employee ( num int(50),
                        d_id int(50),
                        name varchar(50),
                        age int(50),
                        sex varchar(50),
                        homeadd varchar(50)
                       );
insert into employee values(1,1001,'zhangsan',26,'nan','beijing'); insert into employee values(2,1001,'lisi',24,'nv','hunan'); insert into employee values(3,1002,'wangwu',25,'nan','jiangsu'); insert into employee values(4,1004,'aric',15,'nan','yingguo');
select * from employee;



create table department ( d_id int(50), d_name varchar(50), functione varchar(50), address varchar(50) );
insert into department values(1001,'keyanbu','yanfachanpin','3lou5hao'); insert into department values(1002,'shengchanbu','shengchanchanp','5louyiceng'); insert into department values(1003,'xiaoshoubu','cehuaxiaoshou','1louxiaoshoudating');
select * from department;

select * from employee;

 

 select * from department;

 

 

左連接查詢:

語法:

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

屬性列表表示要查詢的字段的名稱,這些字段可以來自不同的表;

Left表示左連接查詢;

rigth表示右連接查詢;

on后面接的是連接的條件;


1、左連接查詢

進行左連接查詢時,可以查詢出表名1所指的表中的所有記錄。而表名2所指的表中,只能查詢出匹配的記錄

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

 

 

 

 

 

2、右連接查詢

進行右連接查詢時,可以查詢出表名2所指的表中的所有記錄。而表名1所指的表中,只能查詢出匹配的記錄

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

 

 

 

 

 

 

3、復合條件查詢

在連接查詢時,通過增加其他的限制條件,可以使查詢結果更加准確

 

select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id;

select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id and age > 24;

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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM