mysql 查询超过60分钟的_mysql基础级《简单查询》60分钟搞定
初學(xué)者,推薦大家使用----emp(雇員信息表)和dept(部門表),這兩張表的字段及數(shù)據(jù)內(nèi)容都設(shè)計(jì)的比較經(jīng)典。來吧!先跟著我的操作,導(dǎo)入我提供的數(shù)據(jù)庫(kù)腳本。
導(dǎo)入兩張表sql腳本到數(shù)據(jù)庫(kù)create database testdb;
use testdb;
drop table if exists `emp`;
create table `emp` (
`empno` int(4) default null comment '雇員編號(hào)',
`ename` varchar(10) default null comment '雇員名稱',
`job` varchar(9) default null comment '雇員工作',
`mgr` int(4) default null comment '上級(jí)領(lǐng)導(dǎo)編號(hào)',
`hiredate` date default null comment '雇傭日期',
`sal` decimal(7,2) default null comment '雇員工資',
`comm` decimal(7,2) default null comment '雇員獎(jiǎng)金',
`deptno` int(2) default null comment '部門編號(hào)'
) engine=innodb default charset=utf8;
insert into `emp`(`empno`,`ename`,`job`,`mgr`,`hiredate`,`sal`,`comm`,`deptno`) values (7369,'smith','clerk',7902,null,'800.00',null,20),(7499,'allen','salesman',7698,null,'1600.00','300.00',30),(7521,'ward','salesman',7698,null,'1250.00','500.00',30),(7566,'jones','manager',7839,null,'2975.00',null,20),(7654,'martin','salesman',7698,null,'1250.00','1400.00',30),(7698,'blake','manager',7839,null,'2850.00',null,30),(7782,'clark','manager',7839,null,'2450.00',null,10),(7788,'scott','analyst',7566,null,'3000.00',null,20),(7839,'king','president',null,null,'5000.00',null,10),(7844,'turner','salesman',7698,null,'1500.00','0.00',30),(7876,'adams','clerk',7788,null,'1100.00',null,20),(7900,'james','clerk',7698,null,'950.00',null,30),(7902,'ford','analyst',7566,null,'3000.00',null,20),(7934,'miller','clerk',7782,null,'1300.00',null,10);
drop table if exists `dept`;
create table `dept` (
`deptno` int(2) not null comment '部門編號(hào)',
`dname` varchar(14) default null comment '部門名稱',
`loc` varchar(13) default null comment '部門地址'
) engine=innodb default charset=utf8;
insert into `dept`(`deptno`,`dname`,`loc`) values (10,'accounting','new york'),
(20,'research','dallas'),(30,'sales','chicago'),(40,'operations','boston');
-- 投影操作
指定查詢結(jié)果中能顯示哪些列
-- 選擇操作
指定哪些行出現(xiàn)在結(jié)果中
-- 排序操作
指定查詢的結(jié)果以什么樣的順序顯示
--查詢語句 select
*是統(tǒng)配符,代表所有的字段。
--查詢所有雇員信息
select * from emp;
--查詢所有雇員的工資、名字、以及工作,
select sal,ename,job from emp;
--表前綴
select emp.ename from emp;
--列別名 -- 別名不影響表的結(jié)構(gòu)
select ename as 雇員姓名 from emp;
--表別名
select e.ename from emp as e;
--計(jì)算列
select sal+100 from emp;
--排除重復(fù)數(shù)據(jù) distinct -- 重要
--查詢雇員信息表,工種有多少種。
select distinct job from emp;
--返回限定行數(shù) limit --分頁
select * from 表名 limit 開始序號(hào),返回的行數(shù);
select * from emp limit 0,5;
從emp表中查詢第3頁的數(shù)據(jù),每頁顯示10條。
第幾頁 每頁顯示多少條
頁數(shù): pageSize = 2
條數(shù): indexSize = 5
第一個(gè)參數(shù):
int firstParam = (pageSize-1)*indexSize;
select * from emp limit firstParam,indexSize;
--選擇條件 where
--查詢雇員姓名為smith的員工信息
select * from emp where ename = 'smith';
--查詢雇員工作為salesman的員工的姓名和工資
select ename,sal from emp where job = 'salesman';
--查詢雇員工資大于1600的雇員姓名
select ename from emp where sal > 1600;
注意:寫sql語句,先找輸出什么字段內(nèi)容,再找條件是什么。
條件運(yùn)算符
--查詢獎(jiǎng)金大于100的雇員工資
select sal from emp where comm > 100;
--多條件的操作
and 與 并且
or 或
--查詢工作為salesman并且工資大于1600的雇員信息
條件:job = 'salesman' and sal > 1600
輸出信息:雇員信息
select * from emp where job = 'salesman' and sal > 1600;
--執(zhí)行范圍 between and []
--查詢工資大于等于1600小于等于3000的雇員信息
select * from emp where sal >= 1600 and sal <= 3000;
select * from emp where sal between 1600 and 3000; -- 效率高
--定義集合關(guān)系(IN或NOT IN)
in
not in
--查詢雇員編號(hào)為7369、7698、7788的雇員信息
select * from emp where empno = 7369 or empno = 7698 or empno = 7788;
select * from emp where empno in(7369,7698,7788);
--查詢雇員編號(hào)除了7369、7698、7788以外的雇員信息
select * from emp where empno not in(7369,7698,7788);
--模糊查詢 like
通配符
“_”通配符 ? 表示任何單個(gè)字符
“%”通配符 ? 表示包含零個(gè)或多個(gè)任意字符
--查詢雇員姓名是以s開頭的雇員信息
select * from emp where ename like 's%';
--查詢雇員姓名中含s字母的雇員信息
select * from emp where ename like '%s%';
--查詢雇員姓名是以s結(jié)尾的雇員信息
select * from emp where ename like '%s';
--查詢雇員姓名是以s開頭第三字母為o的雇員信息
select * from emp where ename like 's_o%';
--查詢雇員姓名是以%開頭的雇員信息
--當(dāng)模糊查詢中出現(xiàn)通配符_和%時(shí),需用反斜杠\\轉(zhuǎn)義
select * from emp where ename like '\\%%';
--處理空值數(shù)據(jù) is null 、 is not null
--查詢沒有獎(jiǎng)金的雇員信息
select * from emp where comm != null; --錯(cuò)誤的
select * from emp where comm is null; --正確的
--查詢有獎(jiǎng)金的雇員信息
select * from emp where comm is not null and comm !=0;
--排序操作 order by
--查詢雇員信息,工資從小到大排序。 asc 升序
select * from emp order by sal asc; --默認(rèn)可以不寫asc
--查詢雇員信息,工資從大到小排序 desc 降序
select * from emp order by sal desc;
--查詢雇員信息,工資從小到大排序,獎(jiǎng)金從大到小。 ---順序確定優(yōu)先級(jí)
select * from emp order by sal asc,comm desc;
SQL操作順序
第一步:執(zhí)行FROM
第二步:WHERE條件過濾
第三步:執(zhí)行SELECT投影列
第四步:執(zhí)行ORDER BY 排序
--查詢雇員工作為‘salesman’的雇員信息,并且按照工資多少降序排序。
select * from emp where job = 'salesman' order by sal desc;
聚合函數(shù)的分類
在查詢分析的SQL中我們經(jīng)常會(huì)對(duì)一些數(shù)據(jù)進(jìn)行統(tǒng)計(jì)查詢。
比如統(tǒng)計(jì)某個(gè)班有多少個(gè)學(xué)生、全班總分多少、平均分多少、最高分是多少、最低分是多少。要實(shí)現(xiàn)這些數(shù)據(jù)的統(tǒng)計(jì)就需要要用到SQL提供的聚合函數(shù)。
COUNT:統(tǒng)計(jì)行數(shù)量
SUM:獲取單個(gè)列的合計(jì)值
AVG:計(jì)算某個(gè)列的平均值
MAX:計(jì)算列的最大值
MIN:計(jì)算列的最小值
--count:統(tǒng)計(jì)行數(shù)量
--統(tǒng)計(jì)emp表中有多少個(gè)員工
select count(*) from emp; -- * 所有行,包括null都行
select count(empno) from emp; -- 推薦 ,所有行,只是null排除。
--共計(jì)emp表中工作為salesman的人數(shù)
select count(empno) from emp where job = 'salesman';
--統(tǒng)計(jì)有獎(jiǎng)金的人數(shù)
select count(comm) from emp;
select count(all empno) from emp; -- all排除了null,加不加都沒關(guān)系
--統(tǒng)計(jì)emp表中有多少種工作
select count(distinct job) from emp; --去掉重復(fù),再統(tǒng)計(jì)。 -- 重點(diǎn)
--SUM:獲取單個(gè)列的合計(jì)值
--統(tǒng)計(jì)所有員工的工資總和
select sum(sal) from emp;
--AVG:計(jì)算某個(gè)列的平均值
--統(tǒng)計(jì)所有員工平均工資
select avg(sal) from emp;
--MAX:計(jì)算列的最大值
--查詢工資最高的雇員信息
select ename,max(sal) from emp;
--分組操作 group by
--查詢emp中有多少個(gè)工作崗位
select * from emp group by job;
--查詢每個(gè)崗位中工資大于1500的員工人數(shù)
select job,count(empno) from emp where sal > 1500 group by job;
總結(jié)
以上是生活随笔為你收集整理的mysql 查询超过60分钟的_mysql基础级《简单查询》60分钟搞定的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何修改修改服务器风扇转速,DELL服务
- 下一篇: mysql下一个版本号_mysql下一个