一、常用的sql
1、操作数据库
- 查询:
show database
- 创建:
create database if not exists 数据库名
- 删除:
drop database if exists 数据库名
- 查看当前数据库:
select database())
- 切换数据库:
use 数据库名
2、操作表
- 查询:
show tables
desc 表名
- 创建:
create table 表名(字段名 数据类型 约束,...)
- 删除:
drop table if exists 表名
- 修改:
alert table 表名 rename to 新表名
add 列名 数据类型
modify 列名 新数据类型
change 列名 新列名 新数据类型
drop 列名
3、操作数据
- 添加:
insert into 表名(列名1,列名2...) values(值1,值2...)
- 修改:
update 表名 set 列名1=值1... where 条件
- 删除:
delete from 表名 where 条件
- 查询:满足where才参与分组;起始索引 = (当前页码-1) * 每页条数
select 字段列表
from 表名
where 条件
group by 分组字段
having 分组后的条件
order by 排序字段
limit 起始索引,每页条数
3.1 聚合函数
将一列数据作为一个整体,纵向计算:select 聚合函数名(字段名) from 表
count、max、min、sum、avg(平均值)
4、多表查询
4.1 连接查询
条件就是从表外键=主表主键
4.1.1 内连接
查询两张表交集数据
- 隐式内连接:
select 字段名 from 表1,表2 where 条件
- 显式内连接:
select 字段名 from 表1 inner join 表2 on 条件
4.1.2 外连接
- 左外连接:查询左表的全部数据以及交集部分
select 字段名 from 左表 left join 右表 on 条件
- 右外连接:查询右表的全部数据以及交集部分
select 字段名 from 左表 right join 右表 on 条件
4.2 子查询
查询条件是子查询的结果
二、数据库连接池
1、概念
是管理数据库连接的技术,在程序启动时,预先创造一组数据库连接,在使用时重复使用这些连接,减少创建和销毁连接的开销,提高数据库访问的效率和性能。
2、优点
- 资源复用(节省资源)
- 提升系统响应速度(避免一直创建销毁连接的开销)
- 避免数据库连接遗漏:当连接池资源不够用时,检查是否发生数据库连接遗漏的时候,断开该连接归还给容器。
数据库连接遗漏
:没有正确地关闭Connection、Statement、ResultSet资源,就不能被重复引用。
3、JDBC、DataSource、数据库连接池分别是什么
- JDBC 是Java中用于管理连接、执行查询、处理结果集等功能的一套API(类或接口)
- DataSource是JDBC中的一个接口,用于获取数据库连接
- 数据库连接池是一种技术,用于管理DataSource获取的数据库连接,是DataSource的实现。
4、Druid数据库连接池使用步骤
4.1 导入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
4.2 编写配置文件
放在src的根目录下
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/dbName
username=root
password=123456
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000
4.3 加载配置文件创建连接池
public static void main(String[] args) throws Exception {
Properties properties = new Properties();
//加载数据库连接池的配置文件
properties.load(new FileInputStream("src/druid.properties"));
//根据配置文件创建数据库连接池
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
//获取连接
Connection conn = dataSource.getConnection();
System.out.println(conn);
PreparedStatement preparedStatement = conn.prepareStatement("select * from bank");
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()){
System.out.print(resultSet.getString("bid") + " ");
System.out.print(resultSet.getString("uname") + " ");
System.out.print(resultSet.getString("money"));
System.out.println();
}
}
三、事务
1、概念
事务是一组操作的集合,把所有操作作为一个整体一起向系统提交或撤销。即要么同时成功,要么同时失败
MySQL的事务时自动提交的,当执行一条操作数据语句,MySQL立即隐式提交事务
2、事务控制
数据操作执行了一部分,但是事务还没有被提交,在别的窗口看没有变化,在当前操作的窗口看有变化;事务提交了之后才会改变
开启事务
start transaction
或者begin
提交事务
commit
回滚事务
rollback
3、四大特性
- 原子性:事务是不可分割的最小单元,要么全部成功,要么全部失败
- 一致性:事务完成时,所有数据保持一致状态
- 隔离性:数据库系统提供的隔离机制,保证事务在不受外部影响的独立环境下运行
- 持久性:事务一旦提交或回滚,对数据库的改变都是永久的
四、索引
1、简介
是提高查询效率的数据结构
没有索引的查询:从第一条一直比对到最后一条,叫做全表扫描
通过索引的查询:是B+树的数据结构,每条数据对应节点中的键,有排序规则,查找快
2、优缺点
- 优点:提高查询效率,降低频繁读取比对数据的成本;降低对数据排序的成本;CPU消耗降低
- 缺点:占用存储空间,降低了增删改的效率
3、B+树优化索引
- 以前是红黑树和二叉树,但是最多两个节点,一个节点只存一个键,数据量特别大的情况下,层次深,还是慢,所以优化索引结构就有了B+树
- B+树又叫多路平衡搜索树:每个节点可以有n个键,n个键就有n个子节点,所有数据存在叶子节点,叶子节点形成双链表,便于排序
4、语法
4.1 创建索引
create [unique] index 索引名 on 表名(字段名)
表有主键字段会自动创建主键索引;
为某个字段添加唯一约束时会添加唯一索引,确保值唯一。
4.2 查看索引
show index from 表名
4.3 删除索引
drop index 索引名 on 表名
五、JDBC
六、SpringData
1、SpringData、JDBC、JPA、MongoDB、NoSQL理解
- SpringData、JPA、JDBC都是用来操作数据库的技术
- JDBC和JPA用来操作所有的关系型数据库;SpringData既可以操作关系型数据库,也可以操作非关系型数据库
- 关系型数据库有MySQL、Oracle;非关系型数据库有MongonDB、Redis
- SpringData可以集成JDBC和JPA
- NoSQL,泛指非关系型的数据库。不是某一具体数据库
2、介绍
SpringData是Spring的子项目,用于简化数据库操作,是完全的对象关系映射技术(MyBatis是基于sql的关系对象映射技术),使得开发者不关注SQL编写,专注于业务逻辑。
既可以操作关系型也可以操作非关系型。
它是侵入式组件,需要继承JPARepostry