多表查詢和子查詢

2021-07-09 13:11:15 字數 1407 閱讀 7647

簡要記錄一下自己學習的歷程

1、3張簡單的表

(1)student表

(2)class表

(3)soccer表

2、多表查詢

(1)連線查詢

1. inner join

inner join 把兩個表連線在一起,返回兩個表中相匹配的記錄,是2和3的交集。

2.left outer join

left outer join,左側表所有的記錄都返回,右側匹配的記錄返回,沒有匹配的返回null

3.right outer join

與left outer join相反,右側的記錄返回,左側返回匹配的記錄,沒有匹配返回null

4. full outer join

2和3的並集。

5. cross join

兩個表的笛卡兒積,返回所有可能的值,不允許有連線條件!

(2)子查詢

以查詢條件為條件進行查詢,相當於巢狀sql語句查詢,下面舉個小例子:

三張**的共有條件為name欄位,我們需要通過name欄位查出三張表的其他屬性,如下

首先,我們可以查出兩張表的結果,再和第三張表做查詢。相當於吧綜合查詢分布做,第一步就可以作為子查詢加入到大查詢中去。

第一步:做出子查詢

select m.name 姓名, m.soccer 分數, so.classno 班級 from soccer m ,(select c.name, c.classno from class c) so where m.name = so.name;

綜合:查詢所有

select s.*,s1.soccer 分數, s1.classno 班級 from student s ,(select m.name, m.soccer, so.classno from soccer m ,(select c.name, c.classno from class c) so where m.name = so.name) s1 where s.name = s1.name;

括號中就是第一步的查詢結果,加個別名再加入到外層的查詢中可以的到想要的結果

小結:多表查詢其實很簡單,我們自己要做好邏輯區別,分清步驟就不會慌亂,思路也會清晰、明了。

MySQL約束,多表查詢和子查詢

多表查詢 子查詢主鍵特性 非空唯一 被引用當表的某一列被指定為主鍵後,該列就不能為空,不能有重複值出現 建立表時指定主鍵 方法一 create table emp empno int primary key,ename varchar 20 方法二 create table emp empno in...

MySQL子查詢,多表查詢

為了便於介紹我們建立以下表 create table user info id int 2 primary key,user name varchar 12 unique password varchar 15 not null real name varchar 8 not null age in...

多表查詢 多表查詢 多表查詢

查詢語法 select 列表名稱 from 表明列表 where 笛卡爾積 有兩個集合a,b,取這兩個集合的所有組成情況 要完成多表查詢,需要消除無用的資料 多表查詢分類 1 內連線查詢 1 隱式內連線 使用where消除無用的資料 例子 select t1.name,t1.gender,t2.na...