mysql 之多表

mysql之多表

已知2張基本表:部門表:dept (部門號,部門名稱);員工表 emp(員工號,員工姓名,年齡,入職時間,收入,部門號)

CREATE table dept(dept1 VARCHAR(6),dept_name VARCHAR(20)) default charset=utf8;

INSERT into dept VALUES ('101','財務');

INSERT into dept VALUES ('102','銷售');

INSERT into dept VALUES ('103','IT技術');

INSERT into dept VALUES ('104','行政');

CREATE table emp (sid VARCHAR(6),name VARCHAR(20),age TINYINT(2),woektime_start VARCHAR(10),incoming SMALLINT(10),dept2 VARCHAR(6))default charset=utf8;

insert into emp VALUES ('1789','張三',35,'1980/1/1',4000,'101');

insert into emp VALUES ('1674','李四',32,'1983/4/1',3500,'101');

insert into emp VALUES ('1776','王五',24,'1990/7/1',2000,'101');

insert into emp VALUES ('1568','趙六',57,'1970/10/11',7500,'102');

insert into emp VALUES ('1564','榮七',64,'1963/10/11',8500,'102');

insert into emp VALUES ('1879','牛八',55,'1971/10/20',7300,'103');

insert into emp VALUES ('1880','老九',55,'1971/10/20',8000,'105');

dept.dept1=emp.dept2

一、

1.普通內連接===》只能取到2表交集部分數據

Select * from dept inner join emp on dept.dept1=emp.drpt2

2.基本內連接===》只能取到2表交集部分數據

Select * from dept,emp where dept.dept1=emp.dept2

3.左連接===》以左表為主,左表的數據會全部顯示出來,右邊的數據不夠會補null處理

Select * from dept left join emp on dept.dept1=emp.dept2

4.右連接===》以右表為主,右表的數據會全部顯示出來,左邊的數據不夠會補null處理

Select * from dept right join emp on dept.dept1=emp.dept2

5.左獨有數據===》左表中單獨存在的數據會顯示出來

Select * from dept left join emp on dept.dept1=emp/dept2 where name is null

6.右獨有數據===》右表中單獨存在的數據單獨顯示

Select * from dept right join emp on dept.dept1=emp.dept2 where dept1 is null

7.全外連接(union)

1)內連接+左獨有+右獨有

select * from dept INNER JOIN emp on dept.dept1=emp.dept2

UNION

select * from dept left JOIN emp on dept.dept1=emp.dept2 where name is null

UNION

select * from dept right JOIN emp on dept.dept1=emp.dept2 where dept_name is NULL;

2)左連接+右獨有

select * from dept left JOIN emp on dept.dept1=emp.dept2

UNION

select * from dept right JOIN emp on dept.dept1=emp.dept2 where dept_name is NULL;

3)右連接+左獨有

select * from dept right JOIN emp on dept.dept1=emp.dept2

UNION

select * from dept left JOIN emp on dept.dept1=emp.dept2 where name is null;

二、子查詢

定義:一個查詢中嵌套另一個查詢

1.、子查詢的分類

(1)標量子查詢

(2)列子查詢

(3)行子查詢

(4)表子查詢(運用多)

2、子查詢詳解

(1)標量子查詢(返回一個值)

標量子查詢:把一個sql 執行返回的一個值,作為另一個sql的條件,得到的結果是一行一列,一般出現在where之后,

備注:標量子查詢允許使用的比較運算符號:=,!=,>,<,>=,<=

例子:select ?dept1 from dept ?where dept_name="財務";

select ?sum(incoming) from ?emp ?where ?dept2=(select ?dept1 from dept?where dept_name="財務");

(2)列子查詢(返回的結果是一個列)

定義:返回的是一列值

注意點:通常在where之后使用,使用是in或not in ,不運行使用比較運算符,因為他有多個值。

select ?dept_name ?from ?dept ?where dept1?in (select ?dept2 from ?emp where name="張三" or name="牛八")

(3)列子查詢

定義:返回的結果是一行多列,一般出現在where的后面

select ?* from ?emp where(age,incoming ) in (select ?age,incoming from ?emp ?where name="老九");查詢年紀,收入和老九一樣的所有人的信息

select ?sid from ?emp where(age,incoming ) in (select ?age,incoming from emp ?where name="老九");?查詢年紀,收入和老九相同人的sid.

  1. 表子查詢

定義:返回的結果是多行多列(返回的就是一個表),一般接在from的后面,返回的是一個表。時表: as ?零時表名

select ?* from (select ?* ?from ?dept ?INNER JOIN ?emp ?on dept.dept1=emp.dept2)as s where s.dept2>101

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/91753.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/91753.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/91753.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Django】-6- 登錄用戶身份鑒權

一、&#x1f6e1;? Django 鑒權 & 登錄控制 Django 自帶的鑒權系統&#xff08;用戶身份管理小管家&#xff09;鑒權系統能干啥&#xff1f;Django 自帶的鑒權系統&#xff0c;就像一個 “用戶身份管家” &#xff0c;幫你管好這些事兒&#xff1a;功能類比加密存儲用戶密…

winscp 連openwrt 返回127錯誤碼

winscp 連openwrt 24.10返回127錯誤碼。找了許多原因也沒搞清為啥&#xff08;客戶端加密方式、winscp版本過低等都試過&#xff09;&#xff0c;用SecureFx試了一下&#xff0c;發現是openwrt 24.10固件沒有安裝Sftp服器&#xff0c;用下列命令安裝即可。opkg install openssh…

Python編程基礎與實踐:Python文件處理入門

Python文件處理實戰 學習目標 通過本課程的學習&#xff0c;學員將掌握如何在Python中打開、讀取、寫入和關閉文件&#xff0c;了解文本文件和二進制文件的區別&#xff0c;以及在文件處理中的一些最佳實踐。 相關知識點 Python文件處理 學習內容 1 Python文件處理 1.1 文件的基…

Corrosion2靶機

打開靶機信息收集&#xff1a;kali里使用arp-scan -l或者netdiscover發現主機使用nmap掃描端口nmap -sS -sV -T4 -n -p- 192.168.31.20開啟了22、80、8080端口 8080發現開啟了tomcat服務掃出了他的ip以及他開放的端口&#xff0c;我們接下來拿瀏覽器訪問一下兩個頁面都沒有什么…

編程與數學 03-002 計算機網絡 18_物聯網與網絡

編程與數學 03-002 計算機網絡 18_物聯網與網絡一、物聯網的基本概念&#xff08;一&#xff09;物聯網的架構與層次&#xff08;二&#xff09;物聯網的關鍵技術二、物聯網網絡的構建&#xff08;一&#xff09;物聯網網絡的通信協議&#xff08;二&#xff09;物聯網網絡的拓…

【Kubernetes】ConfigMap配置管理:存儲配置參數,創建到容器掛載

在Kubernetes中&#xff0c;配置管理是應用部署的重要環節。ConfigMap作為存儲非敏感配置數據的資源對象&#xff0c;能幫助我們實現"配置與代碼分離"&#xff0c;讓應用部署更靈活。一、什么是ConfigMap&#xff1f; ConfigMap是Kubernetes中用于存儲非加密配置數據…

Promise和回調地獄

順序執行 vs. 異步操作&#xff1a; 當我們說“順序執行”&#xff0c;通常是指 操作按順序發生。而 異步操作 指的是操作在后臺執行&#xff0c;不會阻塞其他操作&#xff0c;通常會使用回調、Promise 或 async/await 來處理結果。 在 Promise 鏈式調用 的情況下&#xff0c;雖…

LeetCode 65:有效數字

LeetCode 65&#xff1a;有效數字問題本質與挑戰 需判斷字符串是否為有效數字&#xff0c;規則涉及整數、小數、指數&#xff08;e/E&#xff09;的復雜組合&#xff0c;如&#xff1a; 整數&#xff1a;123、-45、678小數&#xff1a;1.2、.3、4.、5.6指數&#xff1a;1e10、2…

數據結構之順序表應用與雙指針法

元素刪除通過元素移動的方式來模擬刪除操作&#xff1a;將指定下標后的所有元素依次向前移動一位&#xff0c;覆蓋要刪除的元素&#xff0c;從而達到 "刪除" 的效果。 通過自定義函數實現刪除功能&#xff0c;需要傳入數組、數組長度的指針&#xff08;因為要修改長度…

Python編程基礎與實踐:Python基礎數據類型入門

Python變量與數據類型實踐 學習目標 通過本課程的學習&#xff0c;學員可以掌握Python中變量的基本概念&#xff0c;了解并能夠使用Python的基本數據類型&#xff0c;包括整型、浮點型、字符串和布爾值。此外&#xff0c;學員還將學習如何在實際編程中聲明和使用這些數據類型。…

深入解析C/C++函數變量傳遞:棧、堆與全局變量的生命周期之旅

資料合集下載鏈接: ?https://pan.quark.cn/s/472bbdfcd014? 在編程學習中,函數是構建程序的基石,而理解變量如何在函數之間正確、安全地傳遞,則是從入門到進階的關鍵一步。我們經常會遇到這樣的困惑:為什么一個指針在某個函數里工作正常,傳遞給另一個函數后卻變成了“…

Ubuntu18網絡連接不上也ping不通網絡配置問題排查與解決方法

Ubuntu 18啟動以后發現連接不上網絡,執行 ip a命令或者ifconfig都顯示不了正確的地址(192.168.xxx.xxx)。 剛裝好系統是沒問題的,打算使用FTP開啟ftp服務與windows互傳文件,安裝了net-tools插件就突然連不上網絡了,懷疑是網絡配置被修改了。 經過了一段時間折騰終于解決了,…

【計算機網絡】Socket網絡編程

目錄 一、主機字節序列和網絡字節序列 二、套接字地址結構 1、IPv4 地址結構 (sockaddr_in) 2、IPv6 地址結構 (sockaddr_in6) 3、通用套接字地址結構 (sockaddr) 4、Unix域套接字地址結構 (sockaddr_un) 5、專用 socket 地址結構 6、套接字地址結構的轉換 字符串轉二進制地址 …

網頁操作自動化解決方案:如何用Browser-Use+CPolar提升企業運營效率

文章目錄前言1. 安裝Ollama2. Gemma3模型安裝與運行3. 虛擬環境準備3.1 安裝Python3.2. 安裝conda4. 本地部署Brower Use WebUI4.1 創建一個新conda環境4.2 克隆存儲庫4.3 安裝依賴環境4.4 安裝瀏覽器自動化工具4.5 修改配置信息5. 本地運行測試6. 安裝內網穿透6.1 配置公網地址…

Pycharm的設置過程

20250802 用于記錄pycharm的設置過程 編輯器相關 python語言設置文件注釋 在設置的編輯器部分&#xff0c;按照需求設置模板&#xff01; 函數生成注釋

GaussDB as的用法

通過使用 SQL&#xff0c;可以為表名稱或列名稱指定別名&#xff08;Alias&#xff09;。1 別名的作用SQL 別名用于為表或表中的列提供臨時名稱。 SQL 別名通常用于使列名更具可讀性。 SQL 一個別名只存在于查詢期間。 提高SQL執行效率與編寫SQL代碼效率。2 使用別名的場景在下…

Prim算法

一&#xff0c;prim算法邏輯1.理解&#xff1a;克魯斯卡爾算法關注的是邊&#xff0c;普里姆算法關注的是點把圖中每個頂點比作孤島&#xff0c;點亮一座孤島就可以解鎖附近的孤島每次解鎖的點都是離自身最近的點2.普里姆算法流程a.采用鄰接矩陣表示&#xff0c;考慮要查找最小…

嵌入式學習之硬件——51單片機 1.0

一、基礎知識1.什么是嵌入式&#xff1f;嵌入式以應用為中心&#xff0c;計算機技術為基礎&#xff0c;軟硬件可裁剪的專用計算機系統&#xff1b;2.嵌入式的應用&#xff1f;消費電子、無人駕駛、儲能、新能源........3.嵌入式發展&#xff1f;&#xff08;1&#xff09;第一階…

51c大模型~合集161

自己的原文哦~ https://blog.51cto.com/whaosoft/14079111 #這家國內公司&#xff0c;在給xx智能技術棧做「通解」 打通機器人智能化的關鍵&#xff1a;眼腦手。 xx智能&#xff08;Embodied Intelligence&#xff09;是 AI 領域里熱度極高的賽道&#xff1a;給大模型…

Linux9 root密碼修改

開機按e進入在linux行即quiet后面輸入rd.break ctrlx進入內核輸入mount -o remount,rw /sysrootchroot /sysrootpasswd root即可修改密碼輸入touch /.autorelabelexitexit等待即可