目录

入门操作

中级操作

事务

1、事务的定义

2、例子入门

3、事务初体验

springboot初识事务

1、不使用事务

2、添加事务

@Transactional常用参数


入门操作

建立数据库

create database sqltest

建立表

create table students(student_id number(5)  constraint id_pk primary key,moniter_id number(5),name varchar2(10) not null,sex varchar2(6)  constraint sexx_chk check(sex in('男','女')),dob date,specialty varchar2(10));

查看表结构

describe student

增加数据

insert into students (student_id,moniter_id,name,dob,sex,specialty) values(10139,10101,'王二','20-12 月-1989','男',计算机');
insert into studentss values(02222,null,'tom','男','07-5月-1999','计算机');

查询表

select* from studentss;

删除表

drop table studentss;

条件删改查

select name,age from student where id=1select name from teacher where id=(select teacher_id from student where name='licy')update student set name='licy' where id=1delete from student where id=2

添加列

alter table student add birthday datetime

修改列(可以重命名列名)

alter table student change age myage int

修改列(不可以重命名列名)

alter table student modify birthday date

删除列

alter table drop myage

删除数据库

drop database myfirstdatabase

中级操作

建立表

teacher表

student

1、查询教师平均工资

select avg(wage) from teacher;

2、统计学生人数

select count(*) from student;

3、找出全体学生中最大和最小的出生日期

select max(birthday),min(birthday) from student;

4、求全体教师工资方差

select variance(wage) from teacher

5、按系部号对teacher表进行分组

select department_id from teacher group by department_id;

6、查询每一个系部教师工资最大值

select department_id,max(wage) from teacher group by department_id;

7、求每一个系部对教师人数

select department_id,count(*) from teacher group by department_id;

8、求每一个系部工资在2000元以上的教师工资平均值

select department_id,avg(wage) from teacher where wage>2000 group by department_id;

9、求平均工资高于3500顶系部,显示系部号和平均工资

select department_id,avg(wage) from teacher  group by department_id having avg(wage)>3500

10、在工资低于3000元的教师中检索平均工资高于2000的系部,显示系部号和平均工资

select department_id,avg(wage) from teacher where wage<3000  group by department_id having avg(wage)>1700

11、在工资低于3200元的教师中检索平均工资高于2000的系部,显示系部号和平均工资,并将显示结构按平均工资降序进行排列

select department_id,avg(wage) from teacher where wage<3200  group by department_id having  avg(wage)>2000 order by 2 desc;

12、检索student表,显示学生专业这一列

select distinct specialty from student

13、nvl2函数使用,计算教师月总收入,并用函数处理bonus出现null的情况(没建这些字段)

nvl2(1,2,3) 若参数1为空,则执行3,反则执行2

select name as “姓名”,nvl2(bonus,bonus+wage,wage) as  “月总收入”,department_id as “部门”

14、查询工资低于任何一个部门平均工资的教师信息

select * from teacher where wage <all(select avg(wage) from teacher group by department_id)

15、利用子查询,在teacher表中检索在各自部门中工资最低的教师

select * from teacher where (department_id,wage) in (select department_id,min(wage) from teacher group by department_id);

事务

1、事务的定义

一个最小的不可再分的工作单元,通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元)

2、例子入门

银行转账懂吧,大儿给小儿转1000块=>大儿3000,小儿也3000

执行操作语句如下

update account set balance=balance+1000 where id=1
update account set balance=balance-1000 where id=2

如果第一条语句执行成功后,第二条语句执行异常,那么小儿是3000,大儿还是4000,岂不是很危险

这就产生了事务:以上两台DML语句必须同时成功或者同时失败

3、事务初体验

回滚

大儿给小儿汇款5000

第一句语句执行后,第二句语句是有问题的,因为大儿最多4000元,这时候判断资产为负,这整个流程就是有问题的,需要撤销此操作,因此需要事务

提交

给大儿给小儿汇款4000 ​​​​​

资产判断无问题情况下,事务通过,提交

springboot初识事务

1、不使用事务

我是要删除最后一条评论 ,执行删除语句,很简单的大家应该都会

执行结果,抛异常,可是该评论被删掉了(数据库最终执行了删除),显然不符合我们正常业务需求

我们希望当这边执行出错时,不要改变数据库底层数据

2、添加事务

删除最后一条评论,这次我们使用事务注解(下图这注解意思是当出现异常这方法就回滚)

出现异常,但是该评论并没有被删除

@Transactional常用参数

readOnly 该属性用于设置当前事务是否为只读事务,设置为true表示只读,false则表示可读写,默认值为false。例如:@Transactional(readOnly=true)
rollbackFor

该属性用于设置需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。例如:

指定单一异常类:@Transactional(rollbackFor=RuntimeException.class)

指定多个异常类:@Transactional(rollbackFor={RuntimeException.class, Exception.class})

rollbackForClassName

该属性用于设置需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,则进行事务回滚。例如:

指定单一异常类名称:@Transactional(rollbackForClassName="RuntimeException")

指定多个异常类名称:@Transactional(rollbackForClassName={"RuntimeException","Exception"})

noRollbackFor

该属性用于设置不需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,不进行事务回滚。例如:

指定单一异常类:@Transactional(noRollbackFor=RuntimeException.class)

指定多个异常类:@Transactional(noRollbackFor={RuntimeException.class, Exception.class})

noRollbackForClassName

该属性用于设置不需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,不进行事务回滚。例如:

指定单一异常类名称:@Transactional(noRollbackForClassName="RuntimeException")

指定多个异常类名称:@Transactional(noRollbackForClassName={"RuntimeException","Exception"})

@Transactional 注解只能被奏效在 public 方法上

MySql从入门到中级到事务相关推荐

  1. MySQL轻快入门2021.3.18(事务)

    上面说的是隔离性,下面说下原子性 一致性:指的是事务之前和之后它们的业务逻辑上保持总体的一致 持久性指的是commit以后事务就改变不了了.

  2. [MySQL光速入门]020 事务

    TCL 事务控制语言 SQL的四种语言 DDL(Data Definition Language)数据库定义语言 建表, 建库, 修改表结构 DML(Data Manipulation Languag ...

  3. Spring MVC+Spring+Mybatis+MySQL(IDEA)入门框架搭建

    目录 Spring MVC+Spring+Mybatis+MySQL(IDEA)入门框架搭建 0.项目准备 1.数据持久层Mybatis+MySQL 1.1 MySQL数据准备 1.2 Mybatis ...

  4. mysql修行练级之mysql新手入门常用命令

    mysql修行练级之mysql新手入门常用命令 创建时间:2014.08.24 修改时间:2014.09.26 从一个运维工程师和DBA新手的角度出发,学习,实践从而掌握mysql相关操作. 1.登录 ...

  5. [MySQL光速入门]004 作业解答

    创建数据库library create database library character set utf8; use library; 复制代码 创建数据表 图书类别表(booktype) 序号 ...

  6. [MySQL光速入门]003 留点作业...

    创建数据库library 创建数据表 图书类别表(booktype) 序号 属性名称 含义 数据类型 是否为空 备注 1 typeid 类别编号 int not null 主键 2 typename ...

  7. [MySQL光速入门]007 作业解答

    创建数据库library 创建数据表 图书类别表(booktype) 序号 属性名称 含义 数据类型 是否为空 备注 1 typeid 类别编号 int not null 主键 2 typename ...

  8. MySQL基础入门【3】

    文章目录 13 补充知识,查询结果的去重 14 连接查询 14.1 什么是连接查询? 14.2 连接查询的分类? 14.3 基础知识 补充,表的别名 14.4 内连接 等值连接 非等值连接 自连接 1 ...

  9. MySql的入门到入坟

    系列文章目录 本章讲述Mysql的入门和使用. 文章目录 系列文章目录 前言 一.数据库设计分析 1. 软件开发周期 2. 设计数据库的步骤 3. 绘制E-R图 4. 数据库设计范式 二.MySql的 ...

最新文章

  1. [转载]js节流与防抖,防止重复提交、防止频繁重复点击
  2. 向代码节添加代码编程实现
  3. PP后台配置-定义工作中心标准值
  4. Jquery中获取表单提交时不确认个数元素的个数与值的方法
  5. SQL SERVER 2008清理日志
  6. php中的unbuffered_row,php – 加载数据infile和unbuffered查询错误
  7. JUC多线程:JMM内存模型与volatile内存语义
  8. J2ME手机游戏引擎程序结构简述
  9. JS拖拽,移动与拉伸
  10. Dubbo SPI的基础Cooma微容器
  11. 计算机使用快捷键大全
  12. U盘启动装系统的操作方法(U盘PE启动安装GHOST XP)(转载)
  13. 提升 10 倍!阿里云对象存储 OSS 可用性 SLA 技术揭秘
  14. 网页编程设计常用的各类标签
  15. 检测和寻找木马隐藏的位置的方法
  16. vue 根据身份证号获取出生年月,性别,年龄
  17. 【excel】开启了循环引用怎么关闭
  18. 【转】调优方法——warmup
  19. 机器学习项目搭建试验 where2go
  20. PHP Warning: include(./sys/xxx.php): failed to open stream: No such file or directory

热门文章

  1. 微信小程序下载图片与缓存
  2. 电脑桌面app客户端、微信公众号-小程序测试方法
  3. 翻转课堂教学感受调查
  4. 使用canvas实现对图片的翻转
  5. mac m1 解决fatal: unable to access ‘https://github.com/Homebrew/homebrew-core/‘ ;同时指定intel架构的brew 版本
  6. 信念、信仰、理想、梦想
  7. 网页设计配色应用实例之黄色系
  8. “垃圾食品”卫龙欲洗白上市,藏在“辣条一哥”背后的暴利生意经
  9. Winfrom窗体应用程序图标的改变
  10. 向量的夹角余弦公式_向量空间模型(VSM)的余弦定理公式(用余弦定理来表示向量之间的相似度)...