数据库-Sql--模拟插入大量数据、导入/出数据库脚本、时间戳转换以及数据库基础知识

本文介绍了数据库模拟插入大量数据的方法,展示了Java代码实现批量插入,并讲解了数据库连接、脚本导入导出、参照完整性和时间戳转换的概念。此外,还讨论了数据库的三范式、不同类型的连接查询以及视图的使用,最后提到了启发式优化的规则。
摘要由CSDN通过智能技术生成

拿出来大家共勉,不足之处请指正。
很久之前的学习笔记了,一直存放在本地中

复制已有数据进行填充

INSERT into test_batch(name,sex) select name,sex from test_batch

模拟插入大量数据

package cn.fon.bean;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

//进行大批数据的插入,插入到数据库

public class Dbutil {

    private static String url = "jdbc:mysql://127.0.0.1:3306/leave_sys?characterEncoding=utf8&useSSL=false";
    private static String user = "root";
    private static String pwd = "123456";

    public static Connection getConn() throws Exception {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(url, user, pwd);
            return conn;
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }
    }

    public static void main(String[] args) throws Exception {
        Connection conn = getConn();
        Statement stmt = conn.createStatement();
        for (int i = 1; i <= 20; i++) {
            String sql = "insert into sys_student (id,stuID,classID,stuName,sex,address,stuTel,contact,contactTel)values(";
            sql +="'"+ i + "',";
            sql +="'s"+ 2018+i + "',";
            sql +="'c"+ 18+i + "',";
            sql +="'"+ "周晴朗"+ i+ "',";
            sql +="'"+ "女" + "',";
            sql +="'"+ "广州长隆别墅区" + "',";
            sql +="'"+ i+"222222222" + "',";
            sql +="'"+ "刘亦菲"+i + "',";
            sql +="'"+ i + "6666'";
            sql += ")";
            stmt.executeUpdate(sql);
        }

    }
}

代码连接数据库

public class Dbmanage {
public Connection initDB() {
Connection conn = null;
try {
      Class.forName("com.mysql.jdbc.Driver");
      String url = "jdbc:mysql://127.0.0.1:3306/userdb?charaterEncoding=utf-8&useSSL=false";
      conn = DriverManager.getConnection(url, "root", "123456");
} 
      catch (ClassNotFoundException e) {
         e.printStackTrace();
} 
      catch (SQLException e) {
e.printStackTrace();
    }
    return conn;
}

public void closeDB(Statement sta, Connection conn) {
    try {
        sta.close();
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }

}
public void closeDB(ResultSet rs, Statement sta, Connection conn) {
    try {
        rs.close();
        sta.close();
        conn.close();
    } catch (SQLException e) {

        e.printStackTrace();
    }
}

}

导入数据库脚本

脚本中有创建库直接进mysql环境 :source filePath;

还要先use dbname; 先选中数据

没有创建库,进mysql环境然后create database databse_name; use database database_name;source filePath;

注意文件路径filePath---- 不能使用\ 导致Failed to open file
————————

导出数据库脚本

1、在工具里左边一栏 import

参照完整性

定义外码主要是让系统进行参照完整性检查

参照关系中外码的值必须在被参照关系中实际存在或为null

以下行为不破坏参照完整性:

1、插入。

在参照关系里插入元组,要在被参照的关系里已经存在

2、删除。

在被参照关系中删除一个元组,参照关系里的外码值=被参照关系的主码值 ,不允许删除

3、更新。

参照关系更新,更新后的外码值在被参照关系中要实际存在,才可以更新不成功。

被参照关系更新,如果对主码值的更新,对参照关系没有影响,就可以更新。

时间戳转换

用format函数

DATE_FORMAT(b.OutTime-b.InTime,"%d") %d是按照天数输出 format函数会自动转换

三范式

三个范式 数字越大 设计的数据表就越接近规范

1NF

属性是原子性不可以再分

2NF

非主属性都完全函数依赖于候选码——全部是码

3NF

非主属性只能直接依赖于候选码——仅仅是码

连接

左连接

LEFT JOIN (左连接) 左连接是左边表的所有数据都有显示出来,右边的表数据只显示共同有的那部分,没有对应的部分只能补空显示,所谓的左边表其实就是指放在left join的左边的表

A left join B

在这里插入图片描述

右连接

A right join B

全连接

OUTER JOIN(外连接、全连接) 查询出左表和右表所有数据,但是去除两表的重复数据 韦恩图表示如下

A outer join B

视图

优点

1). 为用户集中数据,简化用户的数据查询和处理。

2). 简化操作,屏蔽了数据库的复杂性。

3). 重新定制数据,使数据便于共享。

4). 合并分割数据,便于数据输出到应用程序中。

5). 简化用户权限的管理,增加安全性。

启发式优化

规则1:尽早执行选择运算。

规则2:尽早执行投影运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值