正文查詢的一些概念和操作進行學習。
二話不說,直接建立乙個例子:
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...