大佬教程收集整理的这篇文章主要介绍了cgb2109-day03,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
1,如果是SQL,直接ctrl s保存就行 2,也可以把表或者数据库一整个导出–右键–导出–以SQL转储文件…
#练习sql语句:
#练习1:查询部门地址在二区的部门名称
SELECT dname FROM dept WHERE loc='二区'
#练习2:查询部门地址在二区名字里有o的部门编号
SELECT deptno FROM dept WHERE
loc='二区' AND dname LIKE '%o%'
#练习3:查询名字以l开头的员工岗位并去重
SELECT DISTinCT job FROM emp WHERE ename LIKE 'l%'
#练习4:查询15年到19年入职的员工姓名和岗位
SELECT ename,job FROM emp WHERE
#year(hiredate)>=2015 and YEAR(hiredate)<=2019
hiredate>='2015-1-1' AND hiredate<='2019-12-31'
#练习5:查询副总的年薪
SELECT sal*12+IFNULL(comm,0)*12 FROM emp WHERE job='副总'
#1.null的数据用is /is not关键字来过滤
#练习1:查询没有奖金的员工信息
SELECT * FROM emp WHERE comm IS NULL
#练习2:查询有奖金的员工信息
SELECT * FROM emp WHERE comm IS NOT NULL
#练习3:查询工资5000~10000的员工信息
SELECT * FROM emp WHERE
#sal>=5000 and sal<10000
sal betweeN 5000 AND 10000 #[5000,10000]
#练习4:查询2019年入职的员工姓名
SELECT ename FROM emp WHERE
#hiredate between '2019-1-1' and '2019-12-31'
YEAR(hiredate)=2019
#练习5:展示前两条员工数据
SELECT * FROM emp LIMIT 2 #只取前n条
SELECT * FROM emp LIMIT 0,2 #从0+1的数据开始,总共展示2条
#练习6:查询岗位是员工的第一条记录
SELECT * FROM emp WHERE job='员工' LIMIT 0,1#limit通常放最后
#4.order by排序,按照字典顺序排,默认是升序ASC
#练习7:按照工资排序
SELECT * FROM emp ORDER BY sal DESC #按数值降序
#练习8:按照名字排序
SELECT * FROM emp ORDER BY ename DESC #按字母降序
#练习9:按照岗位排序
SELECT * FROM emp ORDER BY job ASC #按汉字对应的编号升序
#练习10:查询15年到19年入职的员工信息只取前两条并按照工资升序排
SELECT * FROM emp WHERE
YEAR(hiredate) betweeN 2015 AND 2019 #区间[2015,2019]
ORDER BY sal #排序,默认的升序
LIMIT 2 #分页,只取前两条,通常放最后
#统计需求
#练习1:统计每个员工的年薪
SELECT sal,comm,sal*16+IFNULL(comm,0)*16 FROM emp
#练习2:统计19年以前入职的员工信息
SELECT * FROM emp WHERE
YEAR(hiredate)<2019
基础函数: upper lower length concat substr replace ifnull now()/date()/year()… 聚合函数: 把一个字段的值聚合起来,进行获取最大值,最小值,平均数,求和,求个数… max() min() sum() avg() count()
#聚合函数max min sum avg count
#最大值 最小值 求和 求平均数
SELECT @H_892_499@mAX(sal),@H_892_499@mIN(sal),SUM(sal),AVG(sal) FROM emp
#求总记录数
SELECT COUNT(*) FROM emp#低效
SELECT COUNT(1) FROM emp#高效
SELECT COUNT(sal) FROM emp#了解,不推荐
SELECT COUNT(comm) FROM emp#按照字段统计时不统计null
#练习1:统计名字里包含a的总记录数
SELECT COUNT(1) FROM emp WHERE ename LIKE '%a%'
#练习2:统计19年入职的员工里的最高薪
SELECT @H_892_499@mAX(sal) FROM emp WHERE YEAR(hiredate)=2019
#练习3:统计2号部门的平均薪资
SELECT AVG(sal) FROM emp WHERE deptno=2
#练习4:统计2号部门一年的工资支出总数
SELECT SUM(sal)*12 FROM emp WHERE deptno=2
把表里的所有数据 按照 合理的维度 分成不同的组
#分组:使用group by
#练习1:统计每个部门的平均薪资
SELECT AVG(sal),deptno FROM emp
GROUP BY deptno #按照部门分组
#练习2:统计每个部门的最高薪资
SELECT @H_892_499@mAX(sal),deptno FROM emp
#口诀1:查询结果中出现了混合列,包括着聚合列和非聚合列,必须分组
GROUP BY deptno
#口诀2:通常按照非聚合列分组
#练习3:统计每年入职的总人数
SELECT YEAR(hiredate),COUNT(1) FROM emp
GROUP BY YEAR(hiredate)
#练习4:统计每个岗位的平均薪资
SELECT AVG(sal),job FROM emp
GROUP BY job
把分组后的数据还想继续过滤,使用group by的固定搭配having
#having
#练习5:统计每个岗位的平均薪资,而且只要>=10000的
SELECT AVG(sal) a,job FROM emp
#where AVG(sal)>=10000
#注意:::where里不能用别名,也不能出现聚合函数
GROUP BY job #按照非聚合列分组
HAVING a>=10000 #分组后的过滤,a是别名
#练习6:统计每年入职的人数,而且只要19年的
SELECT YEAR(hiredate) ,COUNT(1) FROM emp
WHERE YEAR(hiredate)=2019
GROUP BY YEAR(hiredate) #分组
#having a=2019 #分组后的过滤
# where比having 高效,因为执行时机要早一些
1,数据库事务用来保证 多个SQL 要么全成功,要么全失败.英文叫transaction. MySQL数据库会自动管理事务,Oracle数据库需要程序员管理事务. MySQL也允许程序员手动管理事务 2,事务的四大特征:ACID 原子性: 把多条SQL看做一个原子密不可分,要么全成功,要么全失败 一致性: 保证数据守恒,将来广泛的应用到分布式系统里 隔离性: MySQL数据库可以支持高并发,可能会有数据安全的隐患,也有复杂的隔离级别 持久性: 对数据库的操作增删改,有持久影响 3,隔离级别: read uncommitted读未提交:性能好,但是安全性差 read commited读已提交:是Oracle数据库默认的隔离级别,性能较差,但是安全性较好 repeatable read可重复读:是MySQL数据库默认的隔离级别,性能再差一点,但是安全性特别好 serializable串行化:性能非常差,但是安全性比较好 也可以查:SELECT @@tx_isolation;
窗口1:
@H_208_84@mysql> use cgb210901; #使用数据库,准备往表里插入数据 mysql> start transaction; #开启事务start transaction mysql> insert into g values(null,'jack',20);#多条执行增删改的SQL mysql> commit;#提交事务commit,不提交的话别人查不到的,没有持久影响
窗口2:
@H_208_84@mysql> use cgb210901; mysql> SELEct * from g; #窗口1不执行commit,这里永远查不到的
以上是大佬教程为你收集整理的cgb2109-day03全部内容,希望文章能够帮你解决cgb2109-day03所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。