Loading

MySql系列 (一): MySql基础

数据库

顾明思议,数据存储的仓库,大体可以划分为数据库管理、搜索语句处理、数据存储等几部分。

1、数据库划分

数据库一般分为两种:关系型数据库和非关系型数据库。

关系型数据库:将复杂的数据规定成一系列二维表的形式,表格的一行就是一个基本的数据存储单位,对关系型数据库的操作一般是对一个或多个有关联的表进行数据项的存储查询。

Mysql、Oracle就是常见的关系型数据库。

非关系型数据库:以键值对、文档、索引的形式存储数据,事先指定结构存储的数据集合。

Redis是典型的键值对形式、MongDB是文档形式、ES是索引+文档形式等非关系型数据库。

2、MySql层次划分

MySql的层次结构大体可以分成四个层次:


(图片来源于网络)

连接层:负责客户端的连接,授权认证、安全处理、连接池等在这一层做相应处理。

服务层:处理sql语句的解析与优化,及缓存和内置函数处理。

存储引擎层:负责MySql数据的存储和提取,连通文件系统为服务层提供数据的存取服务。

文件系统:MySql数据真正存放的地方,MySql数据文件存储在同级data目录下。

3、MySql的连接方式

使用MySql驱动与数据库建立连接,一般流程都是:连接数据库 -> 执行查询 -> 返回结果。

java代码示例
\\简单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在项目中的使用

java项目为例,一般流行的是配合Mybatis或Mybatis plus的持久层框架使用Mysql,框架的作用大概有:连接池资源管理、缓存功能、动态拼接sql、打印sql日志、sql连接监听等。

框架只是把基本的流程封装好,同时增强一些功能,方便我们开发调用而已,具体的原理或流程也要了解一些。

5、参考

MySQL体系架构

posted @ 2021-09-20 11:00  逝zxq  阅读(35)  评论(0编辑  收藏  举报