事务
一个业务操作包含了多个数据操作(SQL CRUD),被称为一个事务操作,事务操作遵循 ACID 原则
CRUD 增删改查
C
reateR
eadU
pdateD
elete
ACID 原则
A
原子性,事务中的多个数据操作是一个整体,不可分割C
一致性,多个数据操作的执行结果
/状态
一致,都成功(提交),都失败(回滚)I
隔离性,多个事务互相隔离;隔离级别
:- 读未提交
- 读已提交
- 可重复读
- 顺序/串行
D
持久性,事务提交后,状态写入磁盘
导出数据使用 mysqldump
mysqldump -u root -p databaseName > 导出目的地
导入数据使用
1、创建数据库:create databaseName
SQL TCL
begin
开启手动提交方法 / 关闭默认的自动提交commit
提交rollback
回滚 / 撤销savepoint
保存点
存储过程
一个命名的 SQL 程序块,里面有多条 SQL 语句,编译后存储在数据库中,可以直接调用过程
参数的模式
IN
传入参数,默认值OUT
参数值在过程运行结束后可读取INOUT
参数值可传入,可读取
过程 | 函数 | |
---|---|---|
命名程序块 | 命名程序块 | |
存储 | 存储在数据库 | 存储在数据库 |
执行 | 独立执行 | 不能独立执行,嵌入在SQL 中运行 |
参数 | 有,IN,OUT,INOUT,默认IN | 有 |
返回值 | 没有,可以获得OUT,INOUT的参数值 | 必须有 |
调用 | 其他语言可以像使用SQL 一样调用过程 | 不能调用 |
内部 | 声明变量、使用流程控制,SQL | 声明变量、使用流程控制、SQL |
密码加密/编码
select md5('123'), sha1('123'), sha2('123',256);
JDBC 规范:使用Java访问关系数据库,提供一个统一的接口,但没有具体实现,由数据库厂商完成具体实现(驱动程序)
- 导入、加载
JDBC
驱动程序(MySQL、Oracle) - 从驱动管理,
DriverManager
创建数据库连接,Connection
,url、user、password(TCP套接字完成应用与数据库的会话) - 使用
Connection
创建语句Statement
(封装了SQL
语句或者存储过程
) - 填充参数,执行
Statement
语句,返回结果集ResultSet
- 从
ResultSet
获得查询的数据 (遍历结果集) - 操作结束时,释放所有打开的资源,与打开资源的顺序相反
类和接口 java.sql.*
和 javax.sql
java.sql包下
DriverManager
Connection
Statement
这三个是继承关系PreparedStatement
封装预编译
语句CallableStatement
封装call 存储过程
语句
ResultSet
javax.sql包下
javax.sql.DataSource
JDBC
抽象工厂
设计模式
基于反射、字节码生成、XML ——> Hibernate(冬眠)、iBatista/myiBatista、JDO、TopLink
封装了 JDBC 中重复的、模板化的内容框架
— ORM(对象关系映射)