mysql單表查詢及多表查詢命令詳解
單表查詢
創(chuàng)建表和數(shù)據(jù)庫(kù)
首先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù) d1 然后創(chuàng)建一個(gè)表,表的內(nèi)容如下:
CREATE TABLE `emp` ( `empno` int(4) NOT NULL, --約束不為空 `ename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, --字符集和校對(duì)字符集 `job` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `mgr` int(4) NULL DEFAULT NULL, `hiredate` date NOT NULL, `sai` int(255) NOT NULL, `comm` int(255) NULL DEFAULT NULL, `deptno` int(2) NOT NULL, PRIMARY KEY (`empno`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; --存儲(chǔ)引擎
“row_format = dynamic” 是 MySQL 中用于設(shè)置表格行格式的一種選項(xiàng)。 它表示表格的行格式是動(dòng)態(tài)的,即每一行可以根據(jù)需要使用不同的格式。 當(dāng)使用 “row_format = dynamic” 時(shí),MySQL 會(huì)自動(dòng)根據(jù)每一行的實(shí)際長(zhǎng)度選擇最適合的行格式,可以是 “fixed”、“dynamic” 或 “compressed”。
表的內(nèi)容如下:
INSERT INTO `emp` VALUES (1001, '甘寧', '文員', 1013, '2000-12-17', 8000, NULL, 20); INSERT INTO `emp` VALUES (1002, '黛綺絲', '銷售員', 1006, '2001-02-20', 16000, 3000, 30); INSERT INTO `emp` VALUES (1003, '殷天正', '銷售員', 1006, '2001-02-22', 12500, 5000, 30); INSERT INTO `emp` VALUES (1004, '劉備', '經(jīng)理', 1009, '2001-04-02', 29750, NULL, 20); INSERT INTO `emp` VALUES (1005, '謝遜', '銷售員', 1006, '2001-09-28', 12500, 14000, 30); INSERT INTO `emp` VALUES (1006, '關(guān)羽', '經(jīng)理', 1009, '2001-05-01', 28500, NULL, 30); INSERT INTO `emp` VALUES (1007, '張飛', '經(jīng)理', 1009, '2001-09-01', 24500, NULL, 10); INSERT INTO `emp` VALUES (1008, '諸葛亮', '分析師', 1004, '2007-04-19', 30000, NULL, 20); INSERT INTO `emp` VALUES (1009, '曾阿牛', '董事長(zhǎng)', NULL, '2001-11-17', 50000, NULL, 10); INSERT INTO `emp` VALUES (1010, '韋一笑', '銷售員', 1006, '2001-09-08', 15000, 0, 30); INSERT INTO `emp` VALUES (1011, '周泰', '文員', 1006, '2007-05-23', 11000, NULL, 20); INSERT INTO `emp` VALUES (1012, '程普', '文員', 1006, '2001-12-03', 9500, NULL, 30); INSERT INTO `emp` VALUES (1013, '龐統(tǒng)', '分析師', 1004, '2001-12-03', 30000, NULL, 20); INSERT INTO `emp` VALUES (1014, '黃蓋', '文員', 1007, '2002-01-23', 13000, NULL, 10); INSERT INTO `emp` VALUES (1015, '張三', '保潔員', 1001, '2013-05-01', 80000, 50000, 50);
1 查詢出部門編號(hào)為30的所有員工
mysql> select ename from emp where deptno=30;
2. 所有銷售員的姓名、編號(hào)和部門編號(hào)。
mysql> select ename, empno,deptno from emp where job="銷售員";
3. 找出獎(jiǎng)金高于工資的員工。
mysql> select ename,sai, comm from emp where comm>sai;
4. 找出獎(jiǎng)金高于工資60%的員工。
mysql> select ename,sai, comm from emp where comm>sai*1.6;
5. 找出部門編號(hào)為10中所有經(jīng)理,和部門編號(hào)為20中所有銷售員的詳細(xì)資料。
mysql> select * from emp where deptno=10 and job="經(jīng)理" or deptno=20 and job="銷售員";
6. 找出部門編號(hào)為10中所有經(jīng)理,部門編號(hào)為20中所有銷售員,還有即不是經(jīng)理又不是銷售員但其工資大或等于20000的所有員工詳細(xì)資料。
mysql> select * from emp where deptno=10 and job="經(jīng)理" or deptno=20 and job="銷售員" or job!="銷售員" and job!="經(jīng)理" and sai>=20000;^C mysql> select * from emp where deptno=10 and job="經(jīng)理" -> or deptno=20 and job="銷售員" -> or job!="銷售員" and job!="經(jīng)理" and sai>=20000;
7. 無(wú)獎(jiǎng)金或獎(jiǎng)金低于1000的員工。
mysql> select ename from emp where comm is null or sai<1000;
8. 查詢名字由三個(gè)字組成的員工。
– 注意:一個(gè)漢字占三個(gè)字節(jié)
mysql> select ename from emp where length(ename)>=9;
length(ename) 判斷中文所占字節(jié)長(zhǎng)度
9.查詢2000年入職的員工。
mysql> select ename from emp where hiredate like "2000%";
10. 查詢所有員工詳細(xì)信息,用編號(hào)升序排序
mysql> select * from emp order by empno ASC;
11. 查詢所有員工詳細(xì)信息,用工資降序排序,如果工資相同使用入職日期升序排序
mysql> select * from emp order by sai desc,hiredate ASC;
12.查詢每個(gè)部門的平均工資
mysql> select deptno,AVG(sai) from emp group by deptno;
13.查詢每個(gè)部門的雇員數(shù)量
mysql> select deptno,count(ename) from emp group by deptno;
14.查詢每種工作的最高工資、最低工資、人數(shù)
mysql> select job,max(sai),min(sai),count(ename) from emp group by job;
多表查詢
1、查詢每個(gè)部門的所屬員工
mysql> select name,group_concat(ename) from emp3 e,dept3 d where e.dept_id=d.deptno group by name;
group_concat 函數(shù)可以把每個(gè)分組的字段值都顯示出來(lái)。
2、查詢研發(fā)部門的所屬員工
mysql> select name,group_concat(ename) from emp3 e,dept3 d where e.dept_id=d.deptno and name="研發(fā)部" group by name;
3、查詢研發(fā)部和銷售部的所屬員工
mysql> select name,group_concat(ename) from emp3, dept3 where emp3.dept_id=dept3.deptno and name in ('研發(fā)部','銷售部')group by name;
4、查詢每個(gè)部門的員工數(shù),并升序排序
mysql> select name,count(ename) from emp3 e,dept3 d where e.dept_id=d.deptno group by name order by count(ename) asc;
5、查詢?nèi)藬?shù)大于等于3的部門,并按照人數(shù)降序排序
mysql> select name,count(ename) from emp3 e,dept3 d where e.dept_id=d.deptno group by name having count(ename)>=3 oreder by count(ename) desc;
到此這篇關(guān)于mysql單表查詢及多表查詢命令的文章就介紹到這了,更多相關(guān)mysql單表查詢及多表查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux/UNIX和Window平臺(tái)上安裝Mysql
這篇文章主要為大家詳細(xì)介紹了Linux/UNIX和Window兩個(gè)系統(tǒng)上采用命令安裝Mysql的方法,感興趣的小伙伴們可以參考一下2016-05-05MySQL修改表結(jié)構(gòu)操作命令總結(jié)
這篇文章主要介紹了MySQL修改表結(jié)構(gòu)操作命令總結(jié),包含如刪除列、添加列、修改列、添加主鍵、刪除主鍵、添加唯一索引、添加普通索引等內(nèi)容,需要的朋友可以參考下2014-12-12SQL實(shí)現(xiàn)LeetCode(182.重復(fù)的郵箱)
這篇文章主要介紹了SQL實(shí)現(xiàn)LeetCode(182.重復(fù)的郵箱),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08Mysql出生日期轉(zhuǎn)換為年齡并分組統(tǒng)計(jì)人數(shù)的方法示例
這篇文章主要給大家介紹了關(guān)于Mysql出生日期轉(zhuǎn)換為年齡并分組統(tǒng)計(jì)人數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11select?into?from和insert?into?select的使用舉例詳解
select into from和insert into select都是用來(lái)復(fù)制表,下面這篇文章主要給大家介紹了關(guān)于select?into?from和insert?into?select使用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04mysql數(shù)據(jù)存儲(chǔ)過程參數(shù)實(shí)例詳解
這篇文章主要介紹了mysql數(shù)據(jù)存儲(chǔ)過程參數(shù)實(shí)例詳解,小編覺得挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。2017-10-10