cgb2110-day03

news/2024/10/25 19:25:59/

文章目录

    • 一,练习
      • --1,测试
    • 二,统计案例
      • --1,测试
    • 三,聚合函数
      • --1,测试
    • 四,分组
      • --1,测试
      • --2,分组后的过滤
    • 五,事务
      • --1,概述
      • --2,测试
    • 六,字段约束
      • --1,默认约束
      • --2,检查约束
      • --3,外键约束

一,练习

–1,测试

#练习22:模拟用户登录的过程.
#就是拿着用户名和密码 去查库,查到了就登录查不到就不行
SELECT * FROM USER WHERE NAME='jack' AND pwd='xyz'
#练习23:模拟用户注册的过程.
#就是拿着用户名和密码 去入库
INSERT INTO USER VALUES(5,'张飞','123',28);

二,统计案例

–1,测试

#练习1:统计部门的工资支出
SELECT sal,comm,sal+IFNULL(comm,0) FROM emp#月薪
SELECT sal,comm,sal*16+IFNULL(comm,0)*16 FROM emp#年薪
#练习2:统计2019年以前入职的员工信息
SELECT * FROM emp WHERE YEAR(hiredate)<2019
SELECT * FROM emp WHERE hiredate<'2019-1-1'

三,聚合函数

–1,测试

#2.聚合函数: max min sum avg  count,重点!!
#练习3:获取最大值
SELECT sal FROM emp
SELECT MAX(sal) FROM emp
#练习4:获取最小值
SELECT MIN(sal) FROM emp
#练习5:求工资的总和
SELECT SUM(sal) FROM emp
#练习6:求平均工资
SELECT AVG(sal) FROM emp
#练习7:求个数
SELECT COUNT(comm) FROM emp#不推荐!!不统计null的,低效
SELECT COUNT(sal) FROM emp#不推荐!!
SELECT COUNT(*) FROM emp#高效
SELECT COUNT(1) FROM emp#高效#练习8:统计2019年以前入职的员工人数
SELECT COUNT(1) FROM emp WHERE YEAR(hiredate)<2019
#练习9:统计2019年以前入职的员工的平均工资
SELECT AVG(sal) FROM emp WHERE YEAR(hiredate)<2019
#练习10:统计2号部门的最高薪
SELECT MAX(sal) FROM emp WHERE deptno=2
#练习11:统计岗位是员工的平均工资
SELECT AVG(sal) FROM emp WHERE job='员工'

四,分组

–1,测试

#1.分组:使用group by
#问题1:什么时候必须要分组???查询结果中出现了混合列
#问题2:按啥分组???按照非聚合列分组#当查询结果中,出现了混合列的时候,必须分组!!!
#聚合列,使用了聚合函数.非聚合列,没有使用聚合函数
SELECT job,AVG(sal) FROM emp #不对
#按照合理的需求分组:job deptno hiredate
#练习1:统计每个岗位的平均薪资
SELECT job,AVG(sal) FROM emp 
GROUP BY job #按照岗位分组
#练习2:统计每个岗位的员工人数并排序
SELECT job,COUNT(1) a FROM emp
GROUP BY job#分组
ORDER BY a DESC#降序,默认是升序
#练习3:统计每个部门的最高薪
SELECT deptno,MAX(sal) FROM emp 
GROUP BY deptno
#练习4:统计每个部门的总人数
SELECT deptno,COUNT(*) FROM emp
GROUP BY deptno
#练习5:统计每年入职的总人数
SELECT YEAR(hiredate),COUNT(1) FROM emp
GROUP BY YEAR(hiredate)
#练习6:统计每年入职的工资总支出
SELECT YEAR(hiredate),SUM(sal)*12 FROM emp
GROUP BY YEAR(hiredate)

–2,分组后的过滤

#2.分组后的过滤having
#练习7:统计每年入职的工资总支出,只要15年以后的数据 
SELECT YEAR(hiredate) a,SUM(sal) FROM emp
GROUP BY a #按照非聚合列分组
HAVING a>2015 #分组后的条件
#练习8:统计每个部门的总人数,只要人数>2的数据
SELECT deptno,COUNT(1) a FROM emp
GROUP BY deptno
HAVING a>2

五,事务

–1,概述

用来保证 多条SQL 要么全成功要么全失败.
四大特征:ACID
1,原子性: 多条SQL是一个密不可分的整体
2,一致性: 分布式系统里,数据的一致性
3,隔离性: 数据库支持高并发,使用了锁的机制保证了数据的安全
4,持久性: 是指对数据的增删改是持久生效的

隔离级别:
1,read uncommitted:读未提交, 安全性最差,但是效率高
2,read committed:读已提交, 安全性较好,但是效率较差,也是Oracle的默认级别
3,repeatable read:可重复读,安全性适中,但是效率一般,也是MySQL的默认级别
4,serializable:串行化,安全性最高,但是效率太差

–2,测试

MySQL已经为我们提供了事务管理,默认是一条SQL一个事务,如果想要自己管理事务必须有下面的步骤:
1,开启事务:start transaction;
2,执行SQL:增删改的SQL
3,结束事务:commit提交

第一个窗口:

mysql> use cgb211001;
mysql> show tables;
mysql> start transaction;  #开启事务
mysql> insert into dept values(null,'java','beijing'); #执行了增删改的SQL
mysql> commit;  #提交事务,否则,别人查不到

第二个窗口:

mysql> use cgb211001;
mysql> select * from dept; #如果1号窗口提交了事务就能查到新数据,否则查不到

六,字段约束

–1,默认约束

给字段添加默认值

#1.默认约束:使用DEFAULT设置默认值
DROP TABLE x1; #删表
CREATE TABLE x1( #建表id INT PRIMARY KEY AUTO_INCREMENT, #主键约束sex CHAR(3) DEFAULT '男' #默认约束
)
#插入数据时,仍然需要指定具体值(用的少)
INSERT INTO x1 VALUES(NULL,NULL)
INSERT INTO x1 VALUES(NULL,'男')

–2,检查约束

#2.检查约束:检查字段值是否合法
CREATE TABLE x2(id INT PRIMARY KEY AUTO_INCREMENT,age INT ,CHECK(age<100)#检查约束,满足条件才能保存!
)

在这里插入图片描述

–3,外键约束

#3.外键约束:::::
#约束情况1:子表中的主键的值必须取自主表,
#约束情况2:主表的记录想要删除,必须保证子表没用过
CREATE TABLE tb_user(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(10),age INT
)
CREATE TABLE tb_user_address(user_id INT PRIMARY KEY , #主键address VARCHAR(100),#1,创建外键:描述和tb_user的关系#语法:foreign key(当前表的主键名) references 对方表名(对方表主键)FOREIGN KEY(user_id) REFERENCES tb_user(id)
)

http://www.ppmy.cn/news/170892.html

相关文章

cgb2110-day06

文章目录 一,模拟用户登录过程--1,需求--2,测试--3,程序优化 二,SQL攻击/注入--1,概述--2,解决方案--3,修改代码--4,两种传输器的区别 三,练习新的传输器--1,测试--2,标准的关闭资源--3,优化关闭资源封装工具类,提供close()改造代码 四,Maven--1,概述--2,Maven的四个特性仓库re…

cgb2111-day03

文章目录 一,条件查询--1,order by--2,limit--3,统计 二,聚合函数--1,概述--2,测试 三,分组--1,group by--2,having 四,事务--1,概述--2,事务管理的方式 五,字段约束--1,默认约束--2,检查约束--3,外键约束 一,条件查询 –1,order by #练习:条件查询CRUD #练习1:修改1号部门的…

cgb2110-day07

文章目录 一,HTML--1,概述--2,入门案例 二,HTML的常用标签--1,标题 & 列表 & 图片标签--2,a & input 标签--3,table 标签 三,form 表单标签--1,概述--2,测试--3,添加name,提交数据 一,HTML –1,概述 是超文本标记语言,专门用来完成网页的制作 是由大量的 标记/标…

Rainbow的商店

Rainbow的商店 查看提交统计提问 总时间限制: 1000ms 内存限制: 262144kB 描述 Rainbow开了一家商店&#xff0c;在一次进货中获得了N个商品。 已知每个商品的利润和过期时间。 Rainbow每天只能卖一个商品&#xff0c;并且过期商品不能再卖。 Rainbow也可以选择在每天出售哪…

120G彩虹rainbow

http://www.rootkit.com.cn/viewthread.php?tid31&extrapage%3D1

分享一个奇葩SM2258XT板子(100-H00112581-590)没有CE跳线,只有CE飞线,顺便量产开卡

朋友那收来3个相同的2258xt板子&#xff0c;想贴4个nw838&#xff08;2ce b0k&#xff09;&#xff0c;贴第一个板子的时候CE开卡的时候会偏移&#xff0c;第一位ID和第二位ID相同&#xff0c;报错。然后就打算换个同样的板子&#xff0c;图如下&#xff1a; 然后贴正面两个颗粒…

Rainbow的相关资料

Rainbow的asp.net 2.0版本还没有正式发布,从他的代码库可看出来,asp.net 2.0的版本将是非常不错的一个产品。 官方网站&#xff1a;http://www.rainbowportal.net/Download - www.rainbowportal.net/site/3326/download.aspxFeatures - www.rainbowportal.net/site/3361/feat…

LED七彩芯片IC 跑马鞋灯 两线四线RGB控制鞋灯闪灯方案

一&#xff1a;产品名称 1.1&#xff1a;鞋灯。 二&#xff1a;技术参数 2.1&#xff1a;输入电压/power Source&#xff1a;3-4.2v/DC&#xff08;锂电池供电&#xff09; 2.2&#xff1a;工作负载/Rated Load &#xff1a;RGB三色灯 2.3&#xff1a;工作温度/Working Te…