学习归纳6:MySQL事务、索引、JDBC

-- 事务,一组连续的sql语句,要么全部成功,要么全部失败回滚
-- 开启事务
BEGIN;
-- 包裹的事务体
UPDATE account SET money=money-500 WHERE name='张三';
UPDATE account SET money=money+500 WHERE name='李四';
-- 提交事务,无异常时提交
COMMIT;
-- 单条sql语句自动提交,多条需要手动
-- 查看提交方式,1代表自动提交,0代表手动提交
-- SELECT @@AUTOCOMMIT;
-- 修改提交方式
-- SET @@AUTOCOMMIT=数字;
-- 回滚,出异常时回滚
ROLLBACK;
-- 事务四特性(ACID)
-- 原子性(atomicity),事务包含的所有操作要么全部成功,要么全部失败回滚
-- 一致性(consistency),一个事务执行之前和执行之后都必须处于一致性状态
-- 隔离性(isolcation),多个并发事务之间要相互隔离
-- 持久性(durability),一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的
-- 事务四隔离级别(默认是repeatable read)
-- read uncommitted(读未提交)、read committed(读已提交)、repeatable read(可重复读)、serializable(可串行化)
-- 查询隔离级别(mysql8.0)
-- SELECT @@transaction_isolation;
-- 修改隔离级别
-- SET GLOBAL TRANSACTION ISOLATION LEVEL 事务级别;
-- 事务三问题
-- 不可复读、幻读、脏读
-- 不可复读,同一事务两次查询读取同一数据,得到的结果不一致
-- 幻读,同一事务两次查询同一范围数据,得到的结果不一致
-- 脏读,一个用户读取一个还未提交的数据

-- 索引,是一种数据结构,目的是提高检索效率
-- 索引优点,查询快
-- 索引缺点,索引越多速度越慢,占空间,需要维护
-- 唯一索引、主键索引、普通索引、复合索引和全能索引和空间索引(MySQL不支持,更改配置)
package test;

import com.mysql.cj.x.protobuf.MysqlxDatatypes;
import po.User;

import java.sql.*;

public class Demo {
    public static void main(String[] args) {
        //JDBC(Java Database Connectivity),java语言中规范客户端访问数据库的应用程序接口
        //1.向工程中导入数据库的驱动包
        Connection conn = null;
        PreparedStatement pr = null;
        ResultSet re = null;
        try {
            //2.注册驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //3.创建连接 地址 用户名 密码
            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb", "root", "root");
            //7.?占位符
            String sql = "SELECT * FROM user where name=? and pass=?";
            //4.预执行sql
            pr = conn.prepareStatement(sql);
            //8.给问号赋值
            pr.setString(1,"张三");
            pr.setString(2,"123");
            //5.执行sql,executeUpdate执行增删改,executeQuery执行查询
            //int i = pr.executeUpdate();
            re = pr.executeQuery();
            //.next()判断数据是否存在,取什么类型值就get什么
            while(re.next()) {
                String name = re.getString("NAME");
                String pass = re.getString("pass");
                System.out.println(name+pass);
            }
        }catch (Exception e) {
            System.out.println("出现异常");
        }finally{
            //6.关流
            try {
                if(re != null) {
                    re.close();
                }
                if(pr != null) {
                    pr.close();
                }
                if(conn != null) {
                    conn.close();
                }
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值