Mysql查询语句

Mysql SELECT 查询语法,基本语法

以两个表为基础,分别是部门表、员工表

//部门信息表
CREATE TABLE `dept` (
  `deptno` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '部门id',
  `deptname` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '部门名称',
  PRIMARY KEY (`dempno`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

//员工信息表
CREATE TABLE `emp` (
  `empid` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '员工ID',
  `deptno` int(11) DEFAULT NULL COMMENT '部门ID',
  `ename` varchar(32) COLLATE utf8_unicode_ci DEFAULT '' COMMENT '员工名字',
  `hiredate` date DEFAULT NULL COMMENT '入职时间',
  `sal` decimal(10,2) DEFAULT NULL COMMENT '工资',
  PRIMARY KEY (`empid`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='员工表';

一、查询所有记录

语法:

select * from 表名 [可选的where条件]

//查询部门ID为1的员工信息
select * from emp where deptno = 1;

二、查询自定的字段

语法:

select 字段1,字段2,… from 表名 [可选的where条件]

//例如查询部门ID为1的用户姓名
select ename from emp where deptno = 1;

三、查询不重复的记录(DISTINCT)

语法:

select distinct 字段名 from 表名 [可选的where条件]

//例如查询部门ID为1的用户姓名,去重
select distinct ename from emp where deptno = 1;

四、排序和限制(ORDER BY )

语法:

select [*|多字段] from 表名 [where条件][ORDER BY 字段1 [DESC|ASC], 字段2[DESC|ASC]]
ASC为升序,DESC为倒叙,默认为升序ASC

//1、按照工资高低显示,如果只按照1个字段进行排序,表中重复的记录会无序排列,例如工资相同的
select * from emp order by sal asc;

//2、查寻入职最早的,并且工资最高的,结果能看到同一天入职人员,工资高的
select * from emp order by hiredate asc, sal DESC;

五、查询结果只显示一部门(LIMIT)

语法:

select * from 表名 limit offset_start,row_count;
offset_start,偏移量,默认为0,从第几条开始
row_count,显示行数

注:limit和order by常用语显示分页使用。

//2、查寻入职最早的,并且工资最高的前3名
select * from emp order by hiredate asc, sal DESC limit 0, 3

六、聚合

很多情况下,用户都需要进行一些汇总的操作,例如:统计整个公司的人数或者统计每个部门的人数,这时就用到了聚合操作

语法:

select [*|多字段|func_name] from 表名 [where条件] [group by 字段 desc|asc] [with rollup] [having 条件]

func_name:表示聚合操作,也称聚合函数,常用的有sum(求和)、count(*)(记录数)、max(最大), min(最小),avg(平均数)
group by:表示要分进行分类聚合的字段,比如:按部门统计员工数量,部门就应该写在group by后面
with rollup:是可选语法,表明是否对分类聚合的结果再进行汇总
having:关键字,表示对分类后的结果再进行条件筛选

//统计公司总人数
select count(1) from emp;

//统计各个部门的总人数
select deptno, count(1) from emp group by deptno;

//更细一些,既要统计各部门人数,又要统计总人数
select deptno, count(1) from emp group by deptno with rollup;

在这里插入图片描述

//统计人数大于2人的部门
select deptno, count(1) from emp GROUP BY deptno HAVING count(1) > 2;

在这里插入图片描述

//统计公司所有员工的工资总额,最高和最低薪水
select sum(sal), max(sal), min(sal) from emp;

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值