【mysql】多表查詢、左外連接、內連接、練習題

多表查詢

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FBdzXkoQ-1659581225088)(C:\Users\L00589~1\AppData\Local\Temp\1659337934641.png)]

左外連接&右外連接

-- 查詢emp表所有數據和對應的部門信息
select * from emp left join dept on emp.dep_id = dept.did;-- 右外連接
-- 查詢 dept 表所有數據和對應的員工信息select * from emp right join dept on emp.dep_id = dept.did;

內連接

select * from emp where salary > (select salary from emp where name = '豬八戒')-- 多行單列子查詢
-- 查詢 '財務部' 和 '市場部' 所有員工的信息
select * from emp where dep_id in (select did from dept where dname = '財務部' or dname = '市場部');-- 查詢入職日期是 '2011-11-11' 之后的員工信息和部門信息
select * from (select * from emp where join_date > '2011-11-11') t1, dept where t1.dep_id = dept.did;

查詢練習

DROP TABLE
IFEXISTS emp;
DROP TABLE
IFEXISTS dept;
DROP TABLE
IFEXISTS job;
DROP TABLE
IFEXISTS salarygrade;-- 部門表
CREATE TABLE dept ( id INT PRIMARY KEY, -- 部門iddname VARCHAR ( 50 ), -- 部門名稱loc VARCHAR ( 50 ) -- 部門所在地
) -- 職位表, 職務名稱, 職務描述
CREATE TABLE job ( id INT PRIMARY KEY, jname VARCHAR ( 20 ), description VARCHAR ( 50 ) );-- 員工表
CREATE TABLE emp (id INT PRIMARY KEY,-- 員工 idename VARCHAR ( 50 ),-- 員工姓名job_id INT,-- 職務 idmgr INT,-- 上級領導joindate DATE,-- 入職日期salary DECIMAL ( 7, 2 ),-- 工資bonus DECIMAL ( 7, 2 ),-- 獎金dept_id INT,-- 所在部門編號CONSTRAINT emp_jobid_ref_job_id_fk FOREIGN KEY ( job_id ) REFERENCES job ( id ),CONSTRAINT emp_deptid_ref_dept_id_fk FOREIGN KEY ( dept_id ) REFERENCES dept ( id ) 
);-- 工資等級表
CREATE TABLE salarygrade ( grade INT PRIMARY KEY, -- 級別losalary INT, -- 最低工資hisalary INT -- 最高工資
);-- 添加4個部門
INSERT INTO dept ( id, dname, loc )
VALUES( 10, '教研部', '北京' ),( 20, '學工部', '上海' ),( 30, '銷售部', '廣州' ),( 40, '財務部', '深圳' );-- 添加4個職務
INSERT INTO job ( id, jname, description )
VALUES( 1, '董事長', '管理整個公司,接單' ),( 2, '經理', '管理部門員工' ),( 3, '銷售員', '向客人推銷產品' ),( 4, '文員', '使用辦公軟件' );-- 添加員工
INSERT INTO emp ( id, ename, job_id, mgr, joindate, salary, bonus, dept_id )
VALUES( 1001, '孫悟空', 4, 1004, '2000-12-17', '8000.0', NULL, 20 ),( 1002, '盧俊義', 3, 1006, '2001-02-20', '16000.00', '3000.00', 30 ),( 1003, '林沖', 3, 1006, '2001-02-22', '12500.00', '5000.00', 30 ),( 1004, '唐僧', 2, 1009, '2001-04-02', '29750.00', '5000.00', 30 ),( 1005, '李逵', 4, 1006, '2001-09-28', '12500.00', '14000.00', 30 ),( 1006, '宋江', 2, 1009, '2001-05-01', '28500.00', NULL, 30 ),( 1007, '劉備', 2, 1009, '2001-09-01', '24500.00', NULL, 10 ),( 1008, '豬八戒', 4, 1004, '2007-04-19', '30000.00', NULL, 20 ),( 1009, '羅貫中', 1, NULL, '2001-11-17', '50000.00', NULL, 10 ),( 1010, '吳用', 3, 1006, '2001-09-08', '15000.00', '0.00', 30 ),( 1011, '沙僧', 4, 1004, '2007-05-23', '11000.00', NULL, 20 ),( 1012, '李逵', 4, 1006, '2001-12-03', '9500.00', NULL, 30 ),( 1013, '小白龍', 4, 1004, '2001-12-03', '30000.00', NULL, 20 ),( 1014, '關羽', 4, 1007, '2002-01-23', '13000.00', NULL, 10 );-- 添加5個工資等級
INSERT INTO salarygrade ( grade, losalary, hisalary )
VALUES( 1, 7000, 12000 ),( 2, 12010, 14000 ),( 3, 14010, 20000 ),( 4, 20010, 30000 ),( 5, 30010, 99990 );-- 1、查詢所有員工信息,查詢員工編號,員工姓名,工資,職務名稱,職務描述
SELECTemp.id,emp.ename,emp.salary,job.jname,job.description
FROMemp,job 
WHEREemp.job_id = job.id
ORDER BY(emp.id);-- 2、查詢員工編號,員工姓名,工資,職務名稱,職務描述,部門名稱,部門位置
SELECTemp.id,emp.ename,emp.salary,job.jname,job.description,dept.dname,dept.loc
FROM emp,job,dept
WHERE (emp.job_id = job.id AND emp.dept_id = dept.id)
ORDER BY (emp.id);-- 3、查詢員工姓名,工資,工資等級
SELECT emp.ename,emp.salary,t2.grade
FROMemp, salarygrade t2
WHERE emp.salary >= t2.losalary AND emp.salary <= t2.hisalary;-- 4、查詢員工姓名,工資,職務名稱,職務描述,部門名稱,部門位置,工資等級
SELECT emp.ename,emp.salary,job.jname,job.description,dept.dname,dept.loc,t3.grade
FROMemp
INNER JOIN job ON emp.job_id = job.id
INNER JOIN dept ON emp.dept_id = dept.id
INNER JOIN salarygrade t3 ON emp.salary BETWEEN t3.losalary AND t3.hisalary;-- 5、查詢出部門編號、部門名稱、部門位置、部門人數
SELECTdept.id,dept.dname,dept.loc,count(*) count
FROM emp
INNER JOIN dept ON emp.dept_id = dept.id
GROUP BY(dept_id);

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

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

相關文章

noi2018

day0 筆試沒啥問題&#xff0c;基本都是100 day1 時間有點緊&#xff0c;念了2h題目&#xff0c;能寫80848&#xff0c;第一題不會可持久化所以只能暴力。第二題感覺沒第三個好做。第三題sa亂搞&#xff0c;隨機串只hash長度小于20的。 最后幾分鐘才改過了所有小樣例&#xff0…

Python自建collections模塊

本篇將學習python的另一個內建模塊collections,更多內容請參考:Python學習指南 collections是Python內建的一個集合模塊&#xff0c;提供了許多有用的集合類。 namedtuple 我們知道tuple可以表示不變集合&#xff0c;例如&#xff0c;一個點的二維左邊就可以表示成&#xff1a;…

Thymeleaf th:include、th:replace使用

最近做到頁面數據展示分頁的功能&#xff0c;由于每個模塊都需要分頁&#xff0c;所以每個頁面都需要將分頁的頁碼選擇內容重復的寫N遍&#xff0c;如下所示&#xff1a; 重復的代碼帶來的就是CtrlC&#xff0c;CtrlV ,于是了解了一下thymeleaf的fragment加載語法以及th:includ…

(OS X) OpenCV架構x86_64的未定義符號:錯誤(OpenCV Undefined symbols for architecture x86_64: error)...

原地址&#xff1a;http://www.it1352.com/474798.html 錯誤提示如下&#xff1a; Undefined symbols for architecture x86_64:"cv::_InputArray::_InputArray(cv::Mat const&)", referenced from:_main in test-41a30e.o"cv::namedWindow(std::__1::basic…

【算法】大根堆

const swap (arr, i, j) > {const tmp arr[i];arr[i] arr[j];arr[j] tmp; } const heapInsert (arr , i) > { // 插入大根堆的插入算法while(arr[i] > arr[Math.floor((i - 1) / 2]) {swap(arr, i, Math.floor((i - 1) / 2);i Math.floor((i - 1) / 2; } } cons…

[CF1082E] Increasing Frequency

Description 給定一個長度為 \(n\) 的數列 \(a\) &#xff0c;你可以任意選擇一個區間 \([l,r]\) &#xff0c;并給區間每個數加上一個整數 \(k\) &#xff0c;求這樣一次操作之后數列中最多有多少個數等于 \(c\)。 \(n,c,a_i\leq 10^5\) Solution 假設當前選擇區間的右端點為 …

Thymeleaf select 使用 和多select 級聯選擇

1.使用select 并且回綁數據; 頁面&#xff1a; 狀態&#xff1a; <select name"status" th:field"*{status}" id"idstatus" class"input-select" th:value"*{status}"> <option value"">--請選擇-…

Switch語句的參數是什么類型的?

在Java5以前&#xff0c;switch(expr)中&#xff0c;exper只能是byte&#xff0c;short&#xff0c;char&#xff0c;int類型。 從Java5開始&#xff0c;java中引入了枚舉類型&#xff0c;即enum類型。 從Java7開始&#xff0c;exper還可以是String類型。 switch關鍵字對于多數…

【LOJ】#2184. 「SDOI2015」星際戰爭

題解 直接二分然后建圖跑網絡流看看是否合法即可 就是源點向每個激光武器連一條二分到的時間激光武器每秒攻擊值的邊 每個激光武器向能攻擊的裝甲連一條邊 每個裝甲向匯點連一條裝甲值的邊 代碼 #include <bits/stdc.h> #define fi first #define se second #define pii …

表達式符號

Thymeleaf對于變量的操作主要有$*#三種方式&#xff1a; 變量表達式&#xff1a; ${…}&#xff0c;是獲取容器上下文變量的值.選擇變量表達式&#xff1a; *{…}&#xff0c;獲取指定的對象中的變量值。如果是單獨的對象&#xff0c;則等價于${}。消息表達式&#xff1a; #{……

Java學習的快速入門:10行代碼學JQuery

生活在快速發展時代的我們&#xff0c;如果不提速可能稍不留神就被時代淘汰了。快節奏的時代成就了快餐&#xff0c;亦成就了速成教育。尤其是身處互聯網行業的我們&#xff0c;更新換代的速度更是迅速&#xff0c;快速掌握一門技術已經成為潮流趨勢。怎樣才能快速入門學習java…

項目管理

項目先后銜接的各個階段的全體被稱為項目管理流程。項目管理流程對于一個項目能否高效的執行起到事半功倍的效果。接下來我會利用36張的ppt&#xff08;當然了這里我只用部分圖片展示要不然就太多圖片了&#xff09;&#xff0c;介紹項目管理的整體流程。 1.項目管理的五大過程…

docker——三劍客之Docker Machine

Docker Machine是Docker官方三劍客項目之一&#xff0c;負責使用Docker的第一步&#xff0c;在多種平臺上快速安裝Docker環境。它支持多種平臺&#xff0c;讓用戶在很短時間內搭建一套Docker主機集群。Machine項目是Docker官方的開源項目&#xff0c;負責實現對Docker主機本身進…

egret:什么是臟矩形

臟矩形是2D圖形性能優化一個重要的概念。Egret2.5開始臟矩形完全可以由引擎自動計算&#xff0c;即大名鼎鼎的"自動臟矩形"。 簡單說臟矩形&#xff0c;就是畫面刷新時&#xff0c;產生變化而需要重繪的舞臺局部區域。 什么叫臟&#xff0c;即什么情況下會弄臟&#…

軟件項目管理(一)

首先軟件項目管理&#xff0c;什么是項目&#xff1f;什么是軟件項目&#xff1f; 項目是唯一的&#xff0c;臨時的&#xff0c;即在一定的時間內完成。 具體定義&#xff1a;項目是為了創造一個唯一的產品或提供一個唯一的服務而進行的臨時性的努力。 項目的特征&#xff1a; …

strace參數

strace參數 strace參數 -c 統計每一系統調用的所執行的時間,次數和出錯的次數等. -d 輸出strace關于標準錯誤的調試信息. -f 跟蹤由fork調用所產生的子進程. -ff 如果提供-o filename,則所有進程的跟蹤結果輸出到相應的filename.pid中,pid是各進程的進程號. -F 嘗試跟蹤vfork調…

軟件項目管理(二)

根據上次的路線圖 從項目初始開始&#xff1a;包括項目確立和生存期 項目確立分成 項目立項、項目招投標、項目授權 項目立項&#xff1a;確定項目的目標、時間、資源、資金&#xff0c;關鍵在于得到項目發起人的認可 一個軟件項目的立項開始于軟件項目的啟動&#xff0c;只…

centos6.5和centos7.5統一字符集為zh_CN.UTF-8解決系統和MySQL數據庫亂碼問題

linux的服務器需要做的操作 centos6.5下&#xff1a; 修改默認字符集為 zh_CN.UTF-8&#xff0c;如果沒有中文語言包可能需要安裝中文語言包支持 [rootmeinv01 ~]# yum groupinstall chinese-support [rootmeinv01 ~]# cat /etc/sysconfig/i18n #<修改此配置文件為如下 L…

軟件項目管理(三)

上次講完了項目初始部分&#xff0c;包括立項、招投標、授權 在進入第二部分&#xff0c;項目計劃 前我們要先了解軟件的需求以及任務的分解 軟件需求管理 軟件需求定義&#xff1a;用戶對軟件功能和性能的要求 軟件需求管理過程&#xff1a;需求獲取、需求分析、需求規格…

Winform-圖片上傳

1.界面上拖個.pictureBox(pictureBox1) //上傳點擊按鈕 private void button1_Click(object sender, EventArgs e) { OpenFileDialog fileDialog new OpenFileDialog(); DialogResult result fileDialog.ShowDialog(); if (result DialogResult.OK) { this.pictureBox1.Imag…