多表查詢(一)

2022-03-29 04:38:09 字數 3563 閱讀 5086

多張表聯合索引

select

ename, dname

from

emp, dept;

等價於select

a表與b表連線,只查詢匹配記錄

等值連線:inner-join

#查詢每乙個員工所在部門的名稱,要求最終顯示員工姓名和對應的部門名稱

select

ename, dname

from

empinner

join

dept

on emp.deptno = dept.deptno

非等值連線

查詢員工姓名,薪水,薪水對應等級

方法一:

select

e.ename, esal, e.grade

from emp as e inner

join salgrade as

son e.sal >= s.losal and e.sal <=

s.hisal;

方法二:

select

ename, sal, grade

from emp as e inner

join salgrade as

son e.sal between s.losal and s.hisal

自連線

select

emp.ename empname, emp.empno, empmgr.ename

as marname, empmgr.empno as

mgrno

from

empinner

join emp as

empmgr

on emp.mgr = empmgr.empno

兩張表聯合查詢,一張表為主,關聯另外一張表的匹配字段,如果沒有匹配上,在這個主表的連線顯示上顯示null佔位

練習:查詢所有殺手和殺手中被殺清單上的資訊名單

#查詢沒有在被殺名單上的殺手資訊

查詢被殺名單以及上面的殺手資訊

查詢被殺名單中不是殺手的資訊

select user2.user_name, user2.over, user1.over

from

user1

right

join

user2

on user1.user_name

= user2.user_name

where user1.over

isnull

注意:where條件跟的user1.over是select後面查出來以後的值user1.over

定義:包含左,右兩個表的全部行,不管另外乙個表中是否存在與他們匹配的行。

full-join沒有直接實現的語句,需要通過來擬合表結構實現

#查詢殺手清單上的資訊,殺手在被殺清單上的資訊,被殺清單上的資訊,被殺清單上的殺手資訊

合併結果集的時候,每個查詢表中的字段個數要相同

union—合併相同的資料

union all 不會合併相同的資料

select ename, job from emp where job =

『manager』

union

allselect ename, job from emp where job = 『clerk』;

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

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

mysql 多表查詢or MySQL 多表查詢

前期準備 建表create table dep id int,name varchar 20 create table emp id int primary key auto increment,name varchar 20 enum male female not null default ma...

查詢 多表查詢。。。

此時你得使用鏈結條件。通過存在於相對應列中的公共值,乙個表中的資料可以被另乙個表的資料鏈結,通常都是主鍵和外來鍵進行鏈結。一般鏈結條件寫在where子句裡。select empno,emp.deptno,loc from emp,dept where emp.deptno dept.deptno 對...