<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      MySQL怎么完成多表查詢?MySQL多表查詢的語句

      [摘要]本篇文章給大家帶來的內容是介紹MySQL如何實現多表查詢?MySQL多表查詢的語句。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有所幫助。創建表# 創建表 create table dep...
      本篇文章給大家帶來的內容是介紹MySQL如何實現多表查詢?MySQL多表查詢的語句。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有所幫助。

      創建表

      # 創建表
      create table department(id int,name varchar(20));
      create table employee1(
      id int primary key auto_increment,
      name varchar(20),
      sex enum('male','female') not null default 'male',
      age int,
      dep_id int
      );
      # 插入數據
      insert into department values(200,'技術'),(201,'人力資源'),(202,'銷售'),(203,'運營');
      
      insert into employee1(name,sex,age,dep_id) values('egon','male',18,200),('alex','female',48,201),('tom','male',38,201),('yuanhao','female',28,202),('lidawei','male',18,200),('jinkezhou','female',18,204);
      
      # 查看表
      mysql> select * from employee1;
      +----+-----------+--------+------+--------+
        id   name        sex      age    dep_id  
      +----+-----------+--------+------+--------+
         1   egon        male       18      200  
         2   alex        female     48      201  
         3   tom         male       38      201  
         4   yuanhao     female     28      202  
         5   lidawei     male       18      200  
         6   jinkezhou   female     18      204  
      +----+-----------+--------+------+--------+
      6 rows in set (0.00 sec)
      mysql> select * from department;
      +------+--------------+
        id     name          
      +------+--------------+
         200   技術        
         201   人力資源    
         202   銷售        
         203   運營        
      +------+--------------+
      4 rows in set (0.00 sec)

      多表連接查詢

      交叉連接

      交叉連接:不適用任何匹配條件。生成笛卡爾積

      mysql> select * from employee1 ,department;

      內連接

      內連接:找兩張表共有的部分,相當于利用條件從笛卡爾積結果中篩選出了正確的結果。(只連接匹配的行)

      # 找兩張表共有的部分,相當于利用條件從笛卡爾積結果中篩選出了正確的結果
      #department沒有204這個部門,因而employee表中關于204這條員工信息沒有匹配出來
      mysql> select * from employee1,department where employee1.dep_id=department.id;
      
      #上面用where表示的可以用下面的內連接表示,建議使用下面的那種方法
      mysql> select * from employee1 inner join department on employee1.dep_id=department.id;
      
      # 也可以這樣表示哈
      mysql> select employee1.id,employee1.name,employee1.age,employee1.sex,department.name from employee1,department where employee1.dep_id=department.id;

      左連接left

      優先顯示左表全部記錄。

      #左鏈接:在按照on的條件取到兩張表共同部分的基礎上,保留左表的記錄
      mysql> select * from employee1 left join department on department.id=employee1.dep_id;
      
      mysql> select * from department left join  employee1 on department.id=employee1.dep_id;

      右連接right

      優先顯示右表全部記錄。

      #右鏈接:在按照on的條件取到兩張表共同部分的基礎上,保留右表的記錄
      mysql> select * from employee1 right join department on department.id=employee1.dep_id;
      mysql> select * from department right join employee1 on department.id=employee1.dep_id;

      全部連接join

      mysql> select * from department full join employee1;

      符合條件多表查詢

      示例1:以內連接的方式查詢employee和department表,并且employee表中的age字段值必須大于25,
      即找出公司所有部門中年齡大于25歲的員工

      mysql> select * from employee1 inner join department on employee1.dep_id=department.id and age>25;

      示例2:以內連接的方式查詢employee和department表,并且以age字段的升序方式顯示

      mysql> select * from employee1 inner join department on employee1.dep_id=department.id and age>25 and age>25 order by age asc;

      子查詢

      #1:子查詢是將一個查詢語句嵌套在另一個查詢語句中。
      #2:內層查詢語句的查詢結果,可以為外層查詢語句提供查詢條件。
      #3:子查詢中可以包含:IN、NOT IN、ANY、ALL、EXISTS 和 NOT EXISTS等關鍵字
      #4:還可以包含比較運算符:= 、 !=、> 、<等

      示例:

      # 查詢平均年齡在25歲以上的部門名
      mysql> select name from department where id in ( select dep_id from employee1 group by dep_id having avg(age) > 25 );
      
      # 查看技術部員工姓名
      mysql> select name from employee1 where dep_id = (select id from department where name='技術');
      
      # 查看小于2人的部門名
      mysql> select name from department where id in (select dep_id from employee1 group by dep_id having count(id) < 2) union select name from department where id not in (select distinct dep_id from employee1);
      # 提取空部門                              
      #有人的部門
      mysql> select * from department where id not in (select distinct dep_id from employee1);

      以上就是MySQL如何實現多表查詢?MySQL多表查詢的語句的詳細內容,更多請關注php中文網其它相關文章!


      學習教程快速掌握從入門到精通的SQL知識。




      日韩精品一区二区三区高清