單錶查詢
一般的,查詢單張表,我們可能是進行如下的操作。
select empname from employee;
多表查詢
但是如果是兩張表聯絡在一起的話,我們查詢的方式就需要改變一下了。下面將說下如何進行多表查詢操作。
(1)建立兩張表
-- 部門表
create
table dept(id int
primary
key,deptname varchar(20
));-- 員工表
create
table employ(id int
primary
key,ename varchar(20
),deptid int
,constraint employ_dept_fk foreign
key(deptid)
references dept(id)
);
(2)插入資料到表中:
- - 插入部門表
insert into dept(id,deptname) values(1,'軟體開發部');
insert into dept(id,deptname) values(2,'應用維護部');
insert into dept(id,deptname) values(3,'秘書部');
- - 插入資料到員工表
insert into employ(id,ename,deptid) values(1,'周杰倫',1);
insert into employ(id,ename,deptid) values(2,'李易峰',2);
insert into employ(id,ename,deptid) values(3,'鹿別山',3);
(3)要求:查詢員工姓名及所在部門
多表查詢的規則:
確定哪些表
確定哪些字段
表與表之間的連線條件(規律:連線條件數量是表數量-1)
使用內連線查詢(使用頻率最多的情況)
select empname,deptname -- 2 : 確定查詢哪些字段
from employee,dept -- 1 : 確定是哪些表
where employee.deptid=dept.id;
-- 3 :表與表之間的連線條件
內連線的另外一種寫法select empname,deptname
from employee
inner
join dept
on employee.deptid=deptid;
針對部分有null的情況下的查詢左外鏈結查詢,左邊的資料一定會先顯示出來
select d.deptname, e.empname
from dept d
left
outer
join employee e
on d.id=e.deptid;
右外鏈結查詢,右邊的資料一定會先顯示出來select d.deptname, e.empname
from employee e
right
outer
join dept d
on d.id=e.deptid;
個人**:
mysql多表 MySQL 多表查詢
多表查詢 select listname from tablename1,tablename2 笛卡爾積 多表查詢中,如果沒有連線條件,則會產生笛卡爾積 數學中的定義 假設集合a 集合b 則兩個集合的笛卡爾積為 實際執行環境下,應避免使用笛卡爾積 解決方案 在where加入有效的連線條件 等值連線 ...
mysql多表查詢方式 MySQL多表查詢方式問題
你的 sql 沒有用到任何索引,對 a b 兩個表都是全表掃瞄,在資料量小的時候是沒有問題的,但是如果資料量超過 100 萬,效能問題就會突顯出來。這裡不清楚你的 created at 欄位是什麼型別,不過從你的 date format created at,y m d 看來,應該是 datetim...
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...