mysql 查询超过60分钟的_mysql基础级《简单查询》60分钟搞定
初學者,推薦大家使用----emp(雇員信息表)和dept(部門表),這兩張表的字段及數據內容都設計的比較經典。來吧!先跟著我的操作,導入我提供的數據庫腳本。
導入兩張表sql腳本到數據庫create database testdb;
use testdb;
drop table if exists `emp`;
create table `emp` (
`empno` int(4) default null comment '雇員編號',
`ename` varchar(10) default null comment '雇員名稱',
`job` varchar(9) default null comment '雇員工作',
`mgr` int(4) default null comment '上級領導編號',
`hiredate` date default null comment '雇傭日期',
`sal` decimal(7,2) default null comment '雇員工資',
`comm` decimal(7,2) default null comment '雇員獎金',
`deptno` int(2) default null comment '部門編號'
) 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 '部門編號',
`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');
-- 投影操作
指定查詢結果中能顯示哪些列
-- 選擇操作
指定哪些行出現在結果中
-- 排序操作
指定查詢的結果以什么樣的順序顯示
--查詢語句 select
*是統配符,代表所有的字段。
--查詢所有雇員信息
select * from emp;
--查詢所有雇員的工資、名字、以及工作,
select sal,ename,job from emp;
--表前綴
select emp.ename from emp;
--列別名 -- 別名不影響表的結構
select ename as 雇員姓名 from emp;
--表別名
select e.ename from emp as e;
--計算列
select sal+100 from emp;
--排除重復數據 distinct -- 重要
--查詢雇員信息表,工種有多少種。
select distinct job from emp;
--返回限定行數 limit --分頁
select * from 表名 limit 開始序號,返回的行數;
select * from emp limit 0,5;
從emp表中查詢第3頁的數據,每頁顯示10條。
第幾頁 每頁顯示多少條
頁數: pageSize = 2
條數: indexSize = 5
第一個參數:
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語句,先找輸出什么字段內容,再找條件是什么。
條件運算符
--查詢獎金大于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;
--執行范圍 between and []
--查詢工資大于等于1600小于等于3000的雇員信息
select * from emp where sal >= 1600 and sal <= 3000;
select * from emp where sal between 1600 and 3000; -- 效率高
--定義集合關系(IN或NOT IN)
in
not in
--查詢雇員編號為7369、7698、7788的雇員信息
select * from emp where empno = 7369 or empno = 7698 or empno = 7788;
select * from emp where empno in(7369,7698,7788);
--查詢雇員編號除了7369、7698、7788以外的雇員信息
select * from emp where empno not in(7369,7698,7788);
--模糊查詢 like
通配符
“_”通配符 ? 表示任何單個字符
“%”通配符 ? 表示包含零個或多個任意字符
--查詢雇員姓名是以s開頭的雇員信息
select * from emp where ename like 's%';
--查詢雇員姓名中含s字母的雇員信息
select * from emp where ename like '%s%';
--查詢雇員姓名是以s結尾的雇員信息
select * from emp where ename like '%s';
--查詢雇員姓名是以s開頭第三字母為o的雇員信息
select * from emp where ename like 's_o%';
--查詢雇員姓名是以%開頭的雇員信息
--當模糊查詢中出現通配符_和%時,需用反斜杠\\轉義
select * from emp where ename like '\\%%';
--處理空值數據 is null 、 is not null
--查詢沒有獎金的雇員信息
select * from emp where comm != null; --錯誤的
select * from emp where comm is null; --正確的
--查詢有獎金的雇員信息
select * from emp where comm is not null and comm !=0;
--排序操作 order by
--查詢雇員信息,工資從小到大排序。 asc 升序
select * from emp order by sal asc; --默認可以不寫asc
--查詢雇員信息,工資從大到小排序 desc 降序
select * from emp order by sal desc;
--查詢雇員信息,工資從小到大排序,獎金從大到小。 ---順序確定優先級
select * from emp order by sal asc,comm desc;
SQL操作順序
第一步:執行FROM
第二步:WHERE條件過濾
第三步:執行SELECT投影列
第四步:執行ORDER BY 排序
--查詢雇員工作為‘salesman’的雇員信息,并且按照工資多少降序排序。
select * from emp where job = 'salesman' order by sal desc;
聚合函數的分類
在查詢分析的SQL中我們經常會對一些數據進行統計查詢。
比如統計某個班有多少個學生、全班總分多少、平均分多少、最高分是多少、最低分是多少。要實現這些數據的統計就需要要用到SQL提供的聚合函數。
COUNT:統計行數量
SUM:獲取單個列的合計值
AVG:計算某個列的平均值
MAX:計算列的最大值
MIN:計算列的最小值
--count:統計行數量
--統計emp表中有多少個員工
select count(*) from emp; -- * 所有行,包括null都行
select count(empno) from emp; -- 推薦 ,所有行,只是null排除。
--共計emp表中工作為salesman的人數
select count(empno) from emp where job = 'salesman';
--統計有獎金的人數
select count(comm) from emp;
select count(all empno) from emp; -- all排除了null,加不加都沒關系
--統計emp表中有多少種工作
select count(distinct job) from emp; --去掉重復,再統計。 -- 重點
--SUM:獲取單個列的合計值
--統計所有員工的工資總和
select sum(sal) from emp;
--AVG:計算某個列的平均值
--統計所有員工平均工資
select avg(sal) from emp;
--MAX:計算列的最大值
--查詢工資最高的雇員信息
select ename,max(sal) from emp;
--分組操作 group by
--查詢emp中有多少個工作崗位
select * from emp group by job;
--查詢每個崗位中工資大于1500的員工人數
select job,count(empno) from emp where sal > 1500 group by job;
總結
以上是生活随笔為你收集整理的mysql 查询超过60分钟的_mysql基础级《简单查询》60分钟搞定的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何修改修改服务器风扇转速,DELL服务
- 下一篇: mysql下一个版本号_mysql下一个