郑州的兼职网站建设,o2o网站建设市场,做网站接活全流程,美工设计培训网之前学习过的SQL语句笔记总结戳这里→【数据库原理与应用 - 第六章】T-SQL 在SQL Server的使用_Roye_ack的博客-CSDN博客
【数据库原理与应用 - 第八章】数据库的事务管理与并发控制_一级封锁协议_Roye_ack的博客-CSDN博客
目录
一、多表查询
1、概述
#xff08;1#…之前学习过的SQL语句笔记总结戳这里→【数据库原理与应用 - 第六章】T-SQL 在SQL Server的使用_Roye_ack的博客-CSDN博客
【数据库原理与应用 - 第八章】数据库的事务管理与并发控制_一级封锁协议_Roye_ack的博客-CSDN博客
目录
一、多表查询
1、概述
1笛卡尔积
2查询分类
2、连接查询
1内连接
① 隐式内连接
② 显示内连接
2外连接
① 左外连接
② 右外连接
3、子查询
1标量子查询 - 子查询返回的结果为单个值
2列子查询 - 子查询返回的结果是一列
3行子查询 - 子查询返回的结果是一行
4表子查询 - 子查询返回的结果是多行多列
4、案例
二、事务 1、事务的四大特性
三、索引
四、Mybatis
1、入门
1准备工作
2配置Mybatis
3定义mapper接口
4定义测试类
2、JDBC介绍
3、数据库连接池
1定义
2优势
3接口
4、lombook 一、多表查询
1、概述
1笛卡尔积 两个集合A B的所有组合情况 select * from tb_emp,tb_dept;
2查询分类 1、连接查询 内连接相当于AB交集部分外连接 左外连接查询左表的所有数据包括AB交集部分右外连接查询右表的所有数据包括AB交集部分 2、子查询 2、连接查询
1内连接
① 隐式内连接
-- A. 查询员工的姓名 , 及所属的部门名称 (隐式内连接实现)
select tb_emp.name, tb_dept.name
from tb_dept,tb_emp
where tb_dept.id tb_emp.dept_id;-- 起别名
select e.name, d.name
from tb_emp e,tb_dept d
where e.dept_id d.id;② 显示内连接
-- B. 查询员工的姓名 , 及所属的部门名称 (显式内连接实现)
select tb_emp.name, tb_dept.name
from tb_dept inner join tb_emp on tb_dept.id tb_emp.dept_id;
2外连接
① 左外连接 -- A. 查询员工表 所有 员工的姓名, 和对应的部门名称 (左外连接)
select e.name, d.name
from tb_emp eleft join tb_dept d on e.dept_id d.id;
② 右外连接 -- B. 查询部门表 所有 部门的名称, 和对应的员工名称 (右外连接)
select e.name,d.name
from tb_emp eright join tb_dept d on e.dept_id d.id;
3、子查询
1标量子查询 - 子查询返回的结果为单个值
-- 标量子查询
-- A. 查询 教研部 的所有员工信息
select *
from tb_emp
where dept_id (select idfrom tb_deptwhere name 教研部);-- B. 查询在 方东白 入职之后的员工信息
select *
from tb_emp A
where A.entrydate (select B.entrydatefrom tb_emp Bwhere B.name 方东白);
2列子查询 - 子查询返回的结果是一列
in / not in
-- A. 查询 教研部 和 咨询部 的所有员工信息
select *
from tb_emp
where dept_id in (select idfrom tb_deptwhere name in (教研部, 咨询部));
3行子查询 - 子查询返回的结果是一行
-- A. 查询与 韦一笑 的入职日期 及 职位都相同的员工信息 ;
select *
from tb_emp
where (entrydate, job) in (select entrydate, jobfrom tb_empwhere name 韦一笑)
4表子查询 - 子查询返回的结果是多行多列
-- A. 查询入职日期是 2006-01-01 之后的员工信息 , 及其部门名称
select t.*, d.name
from (select * from tb_emp where entrydate 2016-01-01) t,tb_dept d
where t.dept_id d.id;
4、案例 -- 1. 查询价格低于 10元 的菜品的名称 、价格 及其 菜品的分类名称 .
select dish.name, price, category.name
from dishinner join category on dish.category_id category.id
where price 10;-- 2. 查询所有价格在 10元(含)到50元(含)之间 且 状态为起售的菜品名称、价格 及其 菜品的分类名称 (即使菜品没有分类 , 也需要将菜品查询出来).
select dish.name, price, category.name
from dishleft join category on dish.category_id category.id
where price between 10 and 50and dish.status 1;-- 3. 查询每个分类下最贵的菜品, 展示出分类的名称、最贵的菜品的价格 .
select category.name, max(price)
from dishinner join category on dish.category_id category.id
group by category.id;-- 4. 查询各个分类下 状态为 起售 , 并且 该分类下菜品总数量大于等于3 的 分类名称 .
select category.name
from dishinner join category on dish.category_id category.id
where dish.status 1
group by category.id
having count(*) 3;-- 5. 查询出 商务套餐A 中包含了哪些菜品 展示出套餐名称、价格, 包含的菜品名称、价格、份数.
select s.name, s.price, d.name, d.price, sd.copies
from dish d,setmeal s,setmeal_dish sd
where d.id sd.dish_idand s.id sd.setmeal_idand s.name 商务套餐A-- 6. 查询出低于菜品平均价格的菜品信息 (展示出菜品名称、菜品价格).
select name, price
from dish
where price (select avg(price)from dish) 二、事务
Day08-08. MySQL-事务-介绍与操作_哔哩哔哩_bilibili 事务是一组操作的集合这些操作要么同时成功要么同时失败 -- 开启事务
start transaction ;-- 删除部门
delete from tb_dept where id 2;-- 删除部门下的员工
delete from tb_emp where dept_id 2;-- 提交事务
commit;-- 回滚事务
rollback ;1、事务的四大特性 ① 原子性事务中一系列操作是不可再分的工作单位② 一致性事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态③ 隔离性一个事务的执行不能被其他事务所干扰④ 持续性一个事务一旦提交该事务的操作结果永久有效 三、索引 索引是帮助数据库高效获取数据的数据结构 数据结构B树 -- 创建索引
create [unique] index 索引名 on 表名(字段名);-- 查看索引
show index from 表名;-- 删除索引
drop index 索引名 on 表名; 四、Mybatis
解决在idea中构建项目出现不能创建java类只能创建文件的问题~_从未止步..的博客-CSDN博客
1、入门 1准备工作 2配置Mybatis #驱动类名称
spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.urljdbc:mysql://localhost:3306/db01
#连接数据库的用户名
spring.datasource.usernameroot
#连接数据库的密码
spring.datasource.password244537 3定义mapper接口 Mapper //运行时会自动生成该接口的实现类对象代理对象并将该对象交给IOC容器管理
public interface Usermapper {//查询全部用户信息Select(select * from user)public ListUser list();
}
4定义测试类
SpringBootTest
class MybatisApplicationTests {Autowiredprivate UserMapper userMapper;Testpublic void testusermapper() {List User userList userMapper.list();userList.stream().forEach(user - {System.out.println(user);});}
} 2、JDBC介绍
一套操作关系型数据库的API
SpringBootMybatis 完胜 JDBC 3、数据库连接池
1定义 数据库连接池是个容器负责分配管理数据库连接允许应用程序重复使用一个现有的数据库连接不用重新建立释放【空闲时间 最大空闲时间】的连接避免因为没有释放连接而引起的数据库连接遗漏 2优势 资源重用提升系统响应速度避免数据库连接遗漏 3接口
切换Druid连接池在pom.xml文件中添加依赖
dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.2.8/version
/dependency 4、lombook Lombok是一个实用的Java类库能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法并可以自动化生成日志变量简化java开发、提高效率 注解作用Getterl / Setter为所有的属性提供 get/set 方法Tostring会给类自动生成易阅读的toString方法EqualsAndHashCode根据类所拥有的非静态字段自动重写equals方法和 hashcode方法Data提供了更综合的生成代码功能Getter Setter ToString EqualsAndHashcode)NoArgsConstructor为实体类生成无参构造器方法AllArgsConstructor为实体类生成除了static修饰的字段之外带有各参数的构造器方法 import lombok.Data;Data
public class user {private Integer id;private String name;private Short age;private Short gender;private String phone;
}