1.笛卡尔积: 指在数学中,两个集合A集合 和 B集合的所有组合情况
2.去除无效笛卡尔积:select * from A , B where A.外键 = B.主键;
内连接:相当于查询A、B交集部分数据 所有链接都可再表名后设置别名后,只能用别名指定字段 | |
隐式内连接 |
select 字段列表 from 表1 ,表2 where 条件 ... ; |
显式内连接 |
select 字段列表 from 表1 [ inner ] join 表2 on 连接条件 ... ; |
外连接:分为两种,分别是:左外连接 和 右外连接。 select 字段列表 from 表1 left [ outer ] join 表2 on 条件 ... ; select 字段列表 from 表1 right [ outer ] join 表2 on 条件 ... ; 查询一边的所有数据和两表交集的数据 | |
子查询:SQL语句中嵌套SELECT语句,称为嵌套查询 | |
标量子查询(子查询结果为单个值) |
select * from A where B_id = (select id from B where 条件); |
列子查询(子查询结果为一列) |
select * from A where 字段1 > (select 字段1 from A where 条件); |
行子查询(子查询结果为一行) |
select * from A where B_id in (select id from B where 条件(一个字段多个值)); |
表子查询(子查询结果为多行多列)作为表 |
select e.*, d.* from (条件后还是多行多列数据作为表使用) e left join dept d on e.dept_id = d.id |
- 事务是一组操作的集合,是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
开启事务 |
START TRANSACTION 或 BEGIN ; |
事务内容 |
要处理的事务(如删除数据) |
提交事务(成功时执行) |
COMMIT; |
回滚事务(出错时执行) |
ROLLBACK; |
- 四大特性(简称:ACID)
原子性(Atomicity) |
事务是不可分割的最小操作单元,要么全部成功,要么全部失败。 |
一致性(Consistency) |
事务完成时,必须使所有的数据都保持一致状态。 |
隔离性(Isolation) |
数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。 |
持久性(Durability) |
事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。 |
- Mybatis:一款优秀的 持久层 框架,用于简化JDBC的开发。
- 是 Apache的一个开源项目iBatis, 2010年这个项目由apache迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
- 用Mybatis查询数据库中的用户数据
1.创建springboot工程,导入mybatis起步依赖、mysql驱动包 2.创建数据库表格,创建对应的实体类 3.编写application.properties,配置数据库连接信息 4.编写持久层接口UserMapper,及SQL 5.单元测试 |
- JDBC:( Java DataBase Connectivity ),就是使用Java语言操作关系型数据库的一套API,
sun公司官方定义的一套操作所有关系型数据库的规范,即接口,数据库实现这接口,提供数据库驱动jar包,使用这套接口(JDBC)编程,执行的代码是驱动jar包中的实现类。
9.数据库连接池:是个容器,负责分配、管理数据库连接(Connection),重复使用现有数据库连接,而不是新建立。好处:1)资源重用,2)提升系统响应速度,3)避免数据库连接遗漏
10.常见的数据库连接池:1)C3PO, 2)DBCP, 3)Druid 4)Hikari(springboot默认),其中Druid(德鲁伊)是阿里巴巴开源的数据库连接池项目,功能强大,性能优秀,是Java语言最好的数据库连接池之一(添加方法:创建时勾选,或加依赖)
11.lombok是个实用的java工具包,可通过简单的注解来简化和消除一些必须有但显得很臃肿的Java代码
注解(在实体类上) |
作用 |
@Getter/@Setter |
为所有的属性提供get/set方法 |
@ToString |
会给类自动生成易阅读的 toString 方法 |
@EqualsAndHashCode |
根据类所拥有的非静态字段自动重写 equals 方法和 hashCode 方法 |
@Data |
提供了更综合的生成代码功能(@Getter + @Setter + @ToString + @EqualsAndHashCode) |
@NoArgsConstructor |
为实体类生成无参的构造器方法 |
@AllArgsConstructor |
为实体类生成除了static修饰的字段之外带有各参数的构造器方法。 |
@Slf4j |
private static final Logger log = LoggerFactory.getLogger(LogExample.class); |
@Builder |
自动生成一个Builder类,以便我们可以轻松地构建对象实例 |
使用:创建时勾选,或加入依赖 |