Javaweb07——MySQL(2)

MySQL note1

#查询所有职员姓名 工资 职位
SELECT ENAME,JOB,SAL FROM emp #查询语句 注意在Navicat中不需要使用;
#查询所有员工的所有信息
SELECT * FROM emp # *是一个通配符 表示临时表中所有字段
#查询所有职位为'clerk'的职员信息
SELECT * FROM emp WHERE JOB='CLERK'
#查询工资小于1500的职员信息
SELECT * FROM emp WHERE SAL<1500
#查询工资在1500和2000之间的销售人员姓名
SELECT ENAME FROM emp WHERE SAL>=1500 and SAL<2000 and JOB='SALESMAN'
SELECT ENAME FROM emp WHERE SAL BETWEEN 1500 and 2000 and JOB='SALESMAN' #BETWEEN..and..
#查询所有项目经理与办事员信息
SELECT * FROM emp WHERE JOB='CLERK' or JOB='MANAGER'
SELECT * FROM emp WHERE JOB NOT IN('CLERK','MANAGER') #IN 同理还有NOT IN 
#查询所有补助未确认的职员信息
SELECT * FROM emp WHERE COMM IS NULL#IS NULL 同理还有IS NOT NULL
#查询所有名称以S开头的职员信息【前置条件模糊查询】
SELECT * FROM emp WHERE ENAME LIKE 'S%' # %表示一个长度任意的字符串
#查询所有名称以S结尾的职员信息【后置条件模糊查询】
SELECT * FROM emp WHERE ENAME LIKE '%s'
#查询所有名称里包含S的职员信息【包含】
SELECT * FROM emp WHERE ENAME LIKE '%s%'
#查询名字中第二个字母是A的职员信息
SELECT * FROM emp WHERE ENAME LIKE '_a%'# _表示一个任意的字符
#查询名字中第三个字母是A的职员信息
SELECT * FROM emp WHERE ENAME LIKE '__a%'
#查询20部门下的最高工资
SELECT MAX(SAL) FROM emp WHERE DEPTNO=20 #MIN(expr)同理
#部门10下所有人工资总和
SELECT SUM(SAL) FROM emp WHERE DEPTNO=10 #同理 AVG([DISTINCT] expr)
#有具体补助的人数
SELECT COUNT(COMM)FROM emp
#部门20下职员人数
SELECT COUNT(*)FROM emp WHERE DEPTNO=20
#查询各个部门下人数
SELECT DEPTNO,COUNT(*) FROM emp GROUP BY DEPTNO
#查询部门30下各个职位的人数
SELECT JOB,COUNT(*) FROM emp WHERE DEPTNO=30 GROUP BY JOB
#查询各个部门下各个职位信息 多字段分组
SELECT DEPTNO,JOB,COUNT(*) FROM emp GROUP BY DEPTNO,JOB
#查询各个部门下各个职位信息 并按照部门进行降序处理
SELECT DEPTNO,JOB,COUNT(*) FROM emp GROUP BY DEPTNO,JOB ORDER BY DEPTNO DESC #升序ASC
SELECT DEPTNO,JOB,COUNT(*) FROM emp GROUP BY DEPTNO,JOB ORDER BY 1 DESC
#查询人数在5人以上的部门
SELECT DEPTNO,COUNT(*) FROM emp GROUP BY DEPTNO HAVING COUNT(*)>=5
#查询工资排在第一名的职员信息
SELECT * FROM emp ORDER BY SAL DESC LIMIT 0,1

相关笔记:

/*
一 FROM命令:
	1执行顺序:MySQL七个查询命令 FROM命令永远第一个执行
	2执行作用:一个读取流 负责将硬盘上的表文件加载到内存中生成一个【临时表】供后续使用
	***查询命令不会对原表造成影响
二 SELECT命令:
	1操作的是FROM生成的临时表
	2SELECT像切蛋糕一样将指定字段数据读取出来 在内容中将其组成一个全新的临时表
三 临时表:
	1定义:由查询命令在执行时生成的表文件
	2作用:每一个查询命令在操作时都是上一个查询命令生成的临时表
	3生命周期:在当前查询命令执行完毕后MySQL自动的将上一个查询命令生成的临时表从内存中销毁
	           用户看到的是最后一个查询命令生成的临时表
四 七个查询命令与临时表的关系
	1只有FROM命令不需要操作临时表 FROM负责将硬盘上的表文件加载到内存中
	2七个查询命令中只有GROUP BY命令在执行完毕后才有机会在内存中生成多个临时表
	3其他五个查询命令执行完毕后只能生成一个临时表
	4在七个查询命令中只有HAVING命令执行完毕后不生成临时表 负责将GROUP BY生成的临时表中
	 不满足条件要求的临时表从内存中进行删除处理
五 WHERE命令
	1书写顺序:写在FROM后面!
	2执行顺序:FROM -> WHERE -> SELECT
	3作用:循环遍历表中所有数据行 每次得到一个数据行 根据判断信息确定数据行是否需要被定位
	       循环完毕后将所有被定位的数据行取出来在内存中生成一个临时表
	4具体运算:
		关系运算:= != > < >= <= 
		逻辑运算:and与 or或  
六 null值
	1MySQL中null值不表示空值 表示不确定的值 所以无法进行任何运算
七 聚合函数
	1定义对临时表指定字段下所有内容进行统计的函数
	2分类:max min sum avg count
		max 返回最大值 min 返回最小值 sum 求和
		count 指定字符下内容不等于null的数据个数
		count(*)统计临时表下面所有数据行个数 不必考虑null
八 GROUP BY
	执行顺序:
		FROM -> WHERE -> GROUP BY -> SELECT
九 SELECT执行原理:
	1select执行特征与提供临时表的命令有关
		由from或where提供 此时select面对的只有一个临时表 将指定字段下所有内容读取出来生成全新临时表
		由GROUP BY 提供 此时select可能面对多个临时表
			①select依次操作每个临时表
			②操作某个临时表时 只会读取【指定字段下第一个数据】
			③将从多个临时表中读取的数据合成一列保存到一个全新的临时表中
	2所以select抓取的数据应该是当前临时表所有数据行的共有特征 即是GROUP by进行分组的字段
十 多字段分组
	分组字段出现顺序对于最终查询结果没有任何影响
十一	排序 ORDER BY
十二	HAVING
十三	LIMIT 将指定位置的数据行截取出来
	MySQL服务器中 表文件字段位置从1开始 表文件数据行位置从0开始
	
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值