1、数据库划分
数据库一般分为两种:关系型数据库和非关系型数据库。
关系型数据库:将复杂的数据规定成一系列二维表的形式,对关系型数据库的操作一般是对一个或多个有关联的表进行数据项的存储查询。
Mysql、Oracle就是常见的关系型数据库。
非关系型数据库:以键值对、文档、搜索引擎的形式存储数据,事特定结构存储的数据集合。
Redis是典型的键值对形式、MongDB是文档形式、ES是搜索引擎形式的非关系型数据库。
2、MySql架构
MySql的层次结构大体可以分成四个层次:
(图片来源于网络)
连接层:负责客户端的连接,授权认证、安全处理、连接池等在这一层做相应处理。
服务层:处理sql语句的解析与优化,及缓存和内置函数处理。
存储引擎层:负责MySql数据的存储和提取,连通文件系统为服务层提供数据的存取服务。
文件系统:MySql数据真正存放的地方,MySql数据文件存储在同级data目录下。
3、Java连接MySql
原理是加载java的MySql驱动与数据库建立连接,一般步骤就是:连接数据库 -> 执行查询 -> 返回结果。
代码示例
\\简单java连接mysql例子:
public class MySqlDemo {
private static final String USER = "root";
private static final String PASSWORD = "root";
private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
private static final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
public static void main(String[] args) {
Connection conn = null;
Statement stm = null;
try{
// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);
// 打开链接
System.out.println("连接数据库...");
conn = DriverManager.getConnection(DB_URL,USER,PASSWORD);
// 执行查询
System.out.println(" 实例化Statement对象...");
stm = conn.createStatement();
String sql;
sql = "SELECT id, name, age FROM user";
ResultSet rs = stm.executeQuery(sql);
while(rs.next()){
// 通过字段检索
int id = rs.getInt("id");
String name = rs.getString("name");
String age = rs.getString("age");
System.out.println(String.format("id=%s,name=%s,age=%s",id,name,age));
}
// 完成后关闭
rs.close();
stm.close();
conn.close();
}catch(SQLException se){
// 处理 JDBC 错误
se.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}finally{
// 关闭资源
try{
if(stm!=null){
stm.close();
}
}catch(SQLException se2){
}// 什么都不做
try{
if(conn!=null){
conn.close();
}
}catch(SQLException se){
se.printStackTrace();
}
}
System.out.println("end!");
}
}
4、项目中使用MySql
Mysql在java项目的使用,一般都是将连接属性写在配置文件,同时配合一个持久层的框架MyBatis、Spring Data等对数据库的连接和操作语句进行管理。