MySQL
索引底层
mysql优化
事务ACID原则
事务:要么都成功,要么都失败
ACID原则:
原子性:要么都成功,要么都失败
一致性:事务前后的数据完整性要保持一致
隔离性:多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,事务之间要相互隔离
持久性:事务一旦提交则不可逆,被持久化到数据库中
隔离所导致的问题:
脏读:一个事务读取了另一个事务未提交的数据
幻读(虚读):在一个事务内读到了其他事务插入的数据,导致前后读取不一致
三大范式
1NF
原子性:保证每一列不可再分
2NF
前提:满足第一范式
每张表只描述一件事情
3NF
前提:满足第一二范式
确保数据表中的每一列数据都和主键直接相关,而不能间接相关
规范性和性能问题
关联查询的表不超过3张,考虑商业化的需求和目标(成本,用户体验),数据库的性能更加重要,有时会故意给某些表增加一些冗余字段,从多表查询变为单表查询,还会故意增加一些计算列,从大数据量查询降低为小数据量的查询
JDBC程序
package com.yl.servlet;
import java.sql.*;
public class JDBCDemo {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");//固定写法,加载驱动,具体写法查询版本
//2.用户信息和url
String url = "jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&useSSL=true";//useSSL=false
String username = "root";
String password = "1234";
//3.连接成功,数据库对象
Connection connection = DriverManager.getConnection(url, username, password);
//4.执行SQL的对象
Statement statement = connection.createStatement();
//5.执行SQL的对象去执行SQL,可能存在结果,查看返回结果
String sql = "";
ResultSet resultSet = statement.executeQuery(sql);//执行查询操作
statement.execute(sql);//执行任何操作都可
statement.executeUpdate();//更新、插入、删除操作都可
//如果是查询
while(resultSet.next()){
//查看代码
}
//6.释放连接
resultSet.close();
statement.close();
connection.close();
}
}
浙公网安备 33010602011771号