一二三四五 上山打老虎

数据库知识复习

1.范式

参考:关系型数据库设计:三大范式的通俗理解 - 景寓6号 - 博客园 (cnblogs.com)

范式:关系数据库中的关系要满足一定的要求,满足不同程度要求的为不同范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

第一范式 1NF

要求数据库表的每一列都是不可分割的原子数据项,即每一列不可再分。

第二范式 2NF

在1NF的基础上,非主属性必须完全函数依赖于任何一个候选码,即在1NF基础上消除非主属性对主码的部分函数依赖,也就是 每个表只跟一件事有关

第三范式 3NF

在2NF基础上,确保数据表中的每一列数据都和主键直接相关,而不能间接相关,即不存在传递依赖。

规范性和性能问题:

关联查询的表 最好不得超过三张表。

  • 考虑商业化需求和目标(成本,用户体验等),数据库的性能更加重要
  • 规范和性能要平衡,适当考虑规范性。
  • 故意给某些表增加冗余的字段,可以将多表查询变为单表查询,从而提高性能。

2. JDBC

Java操作数据库的的规范,俗称JDBC

标程:

Mavn 加入依赖

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
package com.example.onlineexam;
import java.sql.*;
public class mysqltest {
    public static void main(String[] args) throws Exception {
        try {
            // 1.加载驱动类
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 2.建立连接 建立数据库对象
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&&characterEncoding=utf8&useSSL=true","root", "123456");

            // 3.创建Statement对象,Sql执行对象
            Statement stmt = conn.createStatement();
            // 4.执行SQL语句


            //插入
            String sql = "insert into emp values(1,'li',123,21,'man')";
            stmt.executeUpdate(sql);
            //删除
            String sql2 = "delete from emp where eid=1 ";
            stmt.executeUpdate(sql2);
            //更新
            String sql3 = "update emp set eage='56' where eid=1";
            stmt.executeUpdate(sql3);

            stmt.executeUpdate(sql);
            //5.查询结果集
            ResultSet rs  = stmt.executeQuery("select * from emp");
            System.out.println("eid\tename\tesalary\teage\tesex");
            while (rs.next()) {
                System.out.println(rs.getInt(1) + "\t" + rs.getString(2)
                        + "\t\t" + rs.getInt(3) + "\t\t" + rs.getInt(4) + "\t\t"+ rs.getString(5));
            }
            //6.释放链接
            rs.close();
            conn.close();
            stmt.close();

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {

        }

    }
}

posted @ 2021-06-25 17:26  黒川川  阅读(139)  评论(0)    收藏  举报