Mysql查詢?cè)斀猓l件查詢敦捧、子查詢、模糊查詢碰镜、連接查詢兢卵。。绪颖。)


Mysql練習(xí)題秽荤,可對(duì)本章學(xué)習(xí)的內(nèi)容進(jìn)行鞏固


一、創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表

在這里插入圖片描述

dept.sql

部門表

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for dept
-- ----------------------------
DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept`  (
  `DEPTNO` int(2) NOT NULL,
  `DNAME` varchar(14) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `LOC` varchar(13) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`DEPTNO`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of dept
-- ----------------------------
INSERT INTO `dept` VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO `dept` VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO `dept` VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO `dept` VALUES (40, 'OPERATIONS', 'BOSTON');

SET FOREIGN_KEY_CHECKS = 1;

emp.sql

員工表

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for emp
-- ----------------------------
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp`  (
  `EMPNO` int(4) NOT NULL,
  `ENAME` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `JOB` varchar(9) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `MGR` int(4) NULL DEFAULT NULL,
  `HIREDATE` date NULL DEFAULT NULL,
  `SAL` double(7, 2) NULL DEFAULT NULL,
  `COMM` double(7, 2) NULL DEFAULT NULL,
  `DEPTNO` int(2) NULL DEFAULT NULL,
  PRIMARY KEY (`EMPNO`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of emp
-- ----------------------------
INSERT INTO `emp` VALUES (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800.00, NULL, 20);
INSERT INTO `emp` VALUES (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600.00, 300.00, 30);
INSERT INTO `emp` VALUES (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250.00, 500.00, 30);
INSERT INTO `emp` VALUES (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975.00, NULL, 20);
INSERT INTO `emp` VALUES (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250.00, 1400.00, 30);
INSERT INTO `emp` VALUES (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850.00, NULL, 30);
INSERT INTO `emp` VALUES (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450.00, NULL, 10);
INSERT INTO `emp` VALUES (7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000.00, NULL, 20);
INSERT INTO `emp` VALUES (7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000.00, NULL, 10);
INSERT INTO `emp` VALUES (7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500.00, 0.00, 30);
INSERT INTO `emp` VALUES (7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100.00, NULL, 20);
INSERT INTO `emp` VALUES (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950.00, NULL, 30);
INSERT INTO `emp` VALUES (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000.00, NULL, 20);
INSERT INTO `emp` VALUES (7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300.00, NULL, 10);

SET FOREIGN_KEY_CHECKS = 1;

salgrade.sql

等級(jí)劃分表

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for salgrade
-- ----------------------------
DROP TABLE IF EXISTS `salgrade`;
CREATE TABLE `salgrade`  (
  `GRADE` int(11) NULL DEFAULT NULL,
  `LOSAL` int(11) NULL DEFAULT NULL,
  `HISAL` int(11) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of salgrade
-- ----------------------------
INSERT INTO `salgrade` VALUES (1, 700, 1200);
INSERT INTO `salgrade` VALUES (2, 1201, 1400);
INSERT INTO `salgrade` VALUES (3, 1401, 2000);
INSERT INTO `salgrade` VALUES (4, 2001, 3000);
INSERT INTO `salgrade` VALUES (5, 3001, 9999);

SET FOREIGN_KEY_CHECKS = 1;


二柠横、簡單查詢

語法格式:==select 字段1窃款,字段2,字段3,...... from 表名;==

查詢每個(gè)員工的工資

SELECT ename,sal from emp;
在這里插入圖片描述

給查詢列起別名

SELECT ename,sal as '工資' from emp;

注意:字符串要使用單引號(hào)括起來牍氛,盡量別使用雙引號(hào)

在這里插入圖片描述

三晨继、條件查詢

條件查詢需要用到where語句,where語句必須放到from語句后面搬俊。

==語法格式如下==

select 
    字段,字段...
from 
    表名
where 
    條件;

==條件查詢支持以下運(yùn)算符==

運(yùn)算符 說明
= 等于
<>或 != 不等于
< 小于
> 大于
<= 小于等于
>= 大于等于
between ... and 兩個(gè)值之間踱稍,等同于 >= and <=
is null 為null
and 并且
or 或者
in 包含,相當(dāng)于多個(gè)or(not in 則是不在這個(gè)范圍中)
not not 可以取非悠抹,主要用在 is 或 in 中
like like 稱為模糊查詢,支持%或下劃線匹配

==查詢工資為5000的員工姓名==

select 
    ename,sal 
from 
    emp 
where 
    sal = 5000;

在這里插入圖片描述

==查詢工資小于3000的員工姓名==

select 
    ename,sal 
from 
    emp 
where 
    sal < 3000;
在這里插入圖片描述

其余可參考之前的表格扩淀,這里我不做過多演示楔敌。


條件查詢between and

between and 在使用的時(shí)候必須是左小右大

select 
    ename,sal 
from 
    emp 
where 
    sal between 2000 and 3000;
在這里插入圖片描述

between and 還可以使用在字符串方面(左為閉區(qū)間,右為開區(qū)間)

select 
    ename 
from 
    emp 
where 
    ename between 'A' and 'C';
在這里插入圖片描述

條件查詢 is null 驻谆、is not null

在數(shù)據(jù)庫當(dāng)中NULL不是一個(gè)值卵凑,代表什么也沒有庆聘,為空∩茁空不是一個(gè)值伙判,不能用等號(hào)判斷,必須使用 is null 或 is not null 進(jìn)行判斷黑忱。

查詢comm為null的數(shù)據(jù)

select 
    ename,comm 
from 
    emp 
where 
    comm is null;
在這里插入圖片描述

查詢comm為不為null的數(shù)據(jù)

select 
    ename,comm 
from 
    emp 
where 
    comm is not null;
在這里插入圖片描述

條件查詢 in

select 
    ename,sal 
from 
    emp 
where 
    sal in(3000,5000);

in:sal值為3000和5000的數(shù)據(jù)

在這里插入圖片描述
select 
    ename,sal 
from 
    emp 
where 
    sal not in(3000,5000);

not in:sal不在(3000,5000)這幾個(gè)值中

在這里插入圖片描述

四宴抚、模糊查詢

==搭配%使用==

%代表一個(gè)或多個(gè)字符的通配符

(1)

select 
    ename,sal 
from 
    emp 
where 
    ename like '%S%';

ename like '%S%'; 名稱中帶有S的名字

在這里插入圖片描述

(2)

select 
    ename,sal 
from 
    emp 
where 
    ename like 'S%';

查詢名稱中開始字符為S的數(shù)據(jù)

在這里插入圖片描述

(3)

select 
    ename,sal 
from 
    emp 
where 
    ename like '%S';

插敘名稱中最后一個(gè)字符為S的數(shù)據(jù)

在這里插入圖片描述

==搭配_使用==

_代表僅僅一個(gè)字符的通配符

select 
    ename,sal 
from 
    emp 
where 
    ename like 'KIN_';
在這里插入圖片描述

五、分組查詢

group by :按照某個(gè)字段或者某些字段進(jìn)行分組
having:having是對(duì)分組之后的數(shù)據(jù)進(jìn)行再次過濾甫煞。

select 
    AVG(sal),deptno 
from 
    emp 
group by 
    deptno;
在這里插入圖片描述
select 
    deptno 
from 
    emp 
group by 
    deptno 
having 
    deptno >= 20;
在這里插入圖片描述

==注意事項(xiàng)==

  • GROUP BY后不可以接列的別名
  • GROUP BY 后不能接數(shù)字
  • GROUP BY 后不可以接select后沒有的列名
  • 如果一個(gè)SELECT中使用了分組函數(shù)菇曲,任何不在分組函數(shù)中的列(表達(dá)式)必須要在GROUP BY中

六、連接查詢

在使用數(shù)據(jù)庫查詢語句時(shí)抚吠,單表的查詢有時(shí)候不能滿足項(xiàng)目的業(yè)務(wù)需求常潮,在項(xiàng)目開發(fā)過程中,有很多需求都是要涉及到多表的連接查詢

==連接查詢分類==

  • 內(nèi)連接
    • 等值連接
    • 非等值連接
    • 自連接
  • 外連接
    • 左外連接(左連接)
    • 右外連接 (右連接)
  • 全連接

內(nèi)連接


等值連接

特點(diǎn):條件是等量關(guān)系

查詢每個(gè)員工的部門名稱楷力,要求顯示員工名和部門名

select 
    e.ename,d.dname 
from 
    emp e 
join 
    dept d
on 
    e.deptno = d.deptno;
在這里插入圖片描述

非等值連接

特點(diǎn):連接條件是非等量關(guān)系

找出每個(gè)員工的工資等級(jí)喊式,要求顯示員工名、工資萧朝、工資等級(jí)

select 
    e.ename,e.sal,s.grade  
from 
    emp e 
join 
    salgrade s 
on  
    e.sal between s.losal and s.hisal;
在這里插入圖片描述

自連接

特點(diǎn):一張表當(dāng)成兩張表岔留。自己連接自己

找出每個(gè)員工的上級(jí)領(lǐng)導(dǎo),要求顯示員工名和對(duì)應(yīng)的領(lǐng)導(dǎo)名稱

select 
    e.ename,m.ename
from 
    emp e
left join 
    emp m 
on 
    e.mgr = m.empno;
在這里插入圖片描述

外連接

假設(shè)A和B表進(jìn)行連接剪勿,使用外連接的話贸诚,AB兩張表中有一張表是主表,一張表是副表厕吉,主要查詢主表中的數(shù)據(jù)酱固,捎帶著查詢副表,當(dāng)副表中的數(shù)據(jù)沒有和主表中的數(shù)據(jù)匹配上头朱,副表自動(dòng)模擬出NULL與之匹配运悲。

外連接分類

  • 左外連接(左連接):表示左邊的這張表是主表。
  • 右外連接(右連接):表示右邊的這張表是主表项钮。
#基本語法
左表 left/right join 右表 on 左表.字段=右表.字段

七班眯、子查詢

==1、where后面嵌套子查詢==

select 
    ename,sal
from 
    emp 
where 
    sal > (select avg(sal) from emp);
在這里插入圖片描述

==2烁巫、from后面嵌套子查詢==

列出各種工作的最低工資及從事此工作的雇員姓名

select 
    e.ename,t.* 
from 
    emp e 
join 
    (select job,min(sal) as minsal from emp group by job) t 
on 
    e.job=t.job and e.sal=t.minsal;
在這里插入圖片描述

3署隘、select后面嵌套子查詢

查詢每個(gè)員工所在部門名稱

select 
    e.ename,d.dname,
    (select d.dname from dept d where e.deptno = d.deptno) as dname 
from 
    emp e;
在這里插入圖片描述

覺得不錯(cuò)的小伙伴可以點(diǎn)贊關(guān)注和收藏哦!如有錯(cuò)誤可以指出來亚隙。

<font size="4">Java學(xué)習(xí)路線目錄索引</font>

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末磁餐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子阿弃,更是在濱河造成了極大的恐慌诊霹,老刑警劉巖羞延,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異脾还,居然都是意外死亡伴箩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門鄙漏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嗤谚,“玉大人,你說我怎么就攤上這事泥张『腔郑” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵媚创,是天一觀的道長渗钉。 經(jīng)常有香客問我,道長钞钙,這世上最難降的妖魔是什么鳄橘? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮芒炼,結(jié)果婚禮上瘫怜,老公的妹妹穿的比我還像新娘。我一直安慰自己本刽,他們只是感情好鲸湃,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著子寓,像睡著了一般暗挑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斜友,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天炸裆,我揣著相機(jī)與錄音,去河邊找鬼鲜屏。 笑死烹看,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的洛史。 我是一名探鬼主播惯殊,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼也殖!你這毒婦竟也來了靠胜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浪漠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霎褐,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡址愿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冻璃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片响谓。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖省艳,靈堂內(nèi)的尸體忽然破棺而出娘纷,到底是詐尸還是另有隱情,我是刑警寧澤跋炕,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布赖晶,位于F島的核電站,受9級(jí)特大地震影響辐烂,放射性物質(zhì)發(fā)生泄漏遏插。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一纠修、第九天 我趴在偏房一處隱蔽的房頂上張望胳嘲。 院中可真熱鬧,春花似錦扣草、人聲如沸了牛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鹰祸。三九已至,卻和暖如春上岗,著一層夾襖步出監(jiān)牢的瞬間福荸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國打工肴掷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留敬锐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓呆瞻,卻偏偏與公主長得像台夺,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子痴脾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容