拿出来大家共勉,不足之处请指正。
很久之前的学习笔记了,一直存放在本地中
复制已有数据进行填充
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:尽早执行投影运算。