mysql得emp表查詢 MySQL 多表查詢

2021-10-20 23:10:03 字數 2114 閱讀 5777

正文查詢的一些概念和操作進行學習。

二話不說,直接建立乙個例子:

create table dept(

id int primary key auto_increment,name varchar(20)

insert into dept values (null,'法師'),(null,'坦克'),'劍客'),'戰士');

create table emp(

id int primary key auto_increment,name varchar(20),dept_id int

insert into emp values (null,'佐伊',1),'扎克',2),'亞索',3),'蓋倫',4)

一、笛卡爾積查詢

-- 直接書寫兩張表的名稱進行查詢即可獲取笛卡爾積查詢的結果

select * from dept,emp;-- 兩張表資料相乘

-- 在笛卡爾積查詢的結果中需要篩選出正確的資料(類似內連線查詢)

二、內連線查詢

-- 在笛卡爾積查詢的結果之上,獲取兩邊表都有的記錄。

-- 選擇指定內容顯示

select emp.name as 英雄,dept.name as 職業 from dept inner join emp

on dept.id = emp.dept_id;

-- 給表起別名,所有的字段需要用別名獲取

select e.name as 英雄,d.name as 職業 from dept d inner join emp e

三、外連線查詢

左外連線

在內連線查詢的基礎上獲取【左邊表有而右邊沒有的資料】。

首先先新增一下這樣的資料測試一下:

insert into dept values (null,'射手');

-- 左外連線

右外連線

在內連線查詢的基礎上獲取【左邊表沒有而右邊有的資料】。

還是再新增乙個測試資料:

insert into emp values(null,'菲茲',6);

-- 右外連線

全外連線

在內連線查詢的基礎上獲取【左邊表沒有而右邊有的資料+左邊表有而右邊沒有的資料】。

mysql中沒有全外連線的關鍵字 full join,只能通過union實現全外連線的查詢效果。

再union中,如果結果有相同的資料,則只會保留乙份。

-- 全外連線

select * from dept left join emp on dept.id = emp.dept_id

union-- 全外連線關鍵字

select * from dept right join emp on dept.id = emp.dept_id ;

相關總結

MySQL那張著名的emp 練習表

create table dept deptno int 2 not null,部門編號 dname varchar 14 部門名稱 loc varchar 13 部門位址 alter table dept add constraint pk dept primary key deptno 設定主鍵...

Oracle筆記(1) emp表查詢(1)

1 擷取函式 trunc 的用法 select trunc 789.652 擷取小數,trunc 789.652,2 擷取兩位小數,trunc 789.652,2 取整 2 查詢雇員編號,雇員姓名,僱傭日期 沒有使用擷取函式trunc select empno 雇員編號,ename 雇員姓名,hir...

mysql表檔案建立 php檔案建立mysql的表

乙個php檔案,裡面內容是建表語句,如下,怎麼操作這個php檔案才能在mysql中建表啊?createtableifnotexists category id.乙個php檔案,裡面內容是建表語句,如下,怎麼操作這個php檔案才能在mysql中建表啊?create table if not exist...