四、sql、数据库连接池、事务、索引

一、常用的sql

1、操作数据库

  1. 查询:show database
  2. 创建:create database if not exists 数据库名
  3. 删除:drop database if exists 数据库名
  4. 查看当前数据库:select database())
  5. 切换数据库:use 数据库名

2、操作表

  1. 查询:show tables desc 表名
  2. 创建:create table 表名(字段名 数据类型 约束,...)
  3. 删除:drop table if exists 表名
  4. 修改:alert table 表名 rename to 新表名
    add 列名 数据类型 modify 列名 新数据类型 change 列名 新列名 新数据类型 drop 列名

3、操作数据

  1. 添加:insert into 表名(列名1,列名2...) values(值1,值2...)
  2. 修改:update 表名 set 列名1=值1... where 条件
  3. 删除:delete from 表名 where 条件
  4. 查询:满足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 内连接

查询两张表交集数据

  1. 隐式内连接:select 字段名 from 表1,表2 where 条件
  2. 显式内连接:select 字段名 from 表1 inner join 表2 on 条件
4.1.2 外连接
  1. 左外连接:查询左表的全部数据以及交集部分
    select 字段名 from 左表 left join 右表 on 条件
  2. 右外连接:查询右表的全部数据以及交集部分
    select 字段名 from 左表 right join 右表 on 条件

4.2 子查询

查询条件是子查询的结果


二、数据库连接池

1、概念

是管理数据库连接的技术,在程序启动时,预先创造一组数据库连接,在使用时重复使用这些连接,减少创建和销毁连接的开销,提高数据库访问的效率和性能。

2、优点

  1. 资源复用(节省资源)
  2. 提升系统响应速度(避免一直创建销毁连接的开销)
  3. 避免数据库连接遗漏:当连接池资源不够用时,检查是否发生数据库连接遗漏的时候,断开该连接归还给容器。
    数据库连接遗漏:没有正确地关闭Connection、Statement、ResultSet资源,就不能被重复引用。

3、JDBC、DataSource、数据库连接池分别是什么

  1. JDBC 是Java中用于管理连接、执行查询、处理结果集等功能的一套API(类或接口)
  2. DataSource是JDBC中的一个接口,用于获取数据库连接
  3. 数据库连接池是一种技术,用于管理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. 原子性:事务是不可分割的最小单元,要么全部成功,要么全部失败
  2. 一致性:事务完成时,所有数据保持一致状态
  3. 隔离性:数据库系统提供的隔离机制,保证事务在不受外部影响的独立环境下运行
  4. 持久性:事务一旦提交或回滚,对数据库的改变都是永久的

四、索引

1、简介

是提高查询效率的数据结构
没有索引的查询:从第一条一直比对到最后一条,叫做全表扫描
通过索引的查询:是B+树的数据结构,每条数据对应节点中的键,有排序规则,查找快

2、优缺点

  1. 优点:提高查询效率,降低频繁读取比对数据的成本;降低对数据排序的成本;CPU消耗降低
  2. 缺点:占用存储空间,降低了增删改的效率

3、B+树优化索引

  1. 以前是红黑树和二叉树,但是最多两个节点,一个节点只存一个键,数据量特别大的情况下,层次深,还是慢,所以优化索引结构就有了B+树
  2. 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理解

  1. SpringData、JPA、JDBC都是用来操作数据库的技术
  2. JDBC和JPA用来操作所有的关系型数据库;SpringData既可以操作关系型数据库,也可以操作非关系型数据库
  3. 关系型数据库有MySQL、Oracle;非关系型数据库有MongonDB、Redis
  4. SpringData可以集成JDBC和JPA
  5. NoSQL,泛指非关系型的数据库。不是某一具体数据库

2、介绍

SpringData是Spring的子项目,用于简化数据库操作,是完全的对象关系映射技术(MyBatis是基于sql的关系对象映射技术),使得开发者不关注SQL编写,专注于业务逻辑。
既可以操作关系型也可以操作非关系型。
它是侵入式组件,需要继承JPARepostry

猜你喜欢

转载自blog.csdn.net/sjdnnd/article/details/140249937