无话可说来一个笔记:
MYSQL多表回顾
添加外键(外键的作用 保证数据完整性)
alter table 从表 add foreign key (从表外键列名) references 主表 (主表主键列名)
多表的关系
1对1
外键绑定主键,外键唯一
主键绑定主键
1对多
多的表创建外键指向1的主键
多对多
创建中间表(2列),分别作为外键指向2个表的主键
多表查询
连接查询
内连接
隐式
select * from 表1,表2 where 关联条件 and 判断条件
显式
select * from 表1 join 表2 on 关联条件 where 判断条件
外连接
左外
select * from 表1 left join 表2 on 关联条件 where 判断条件
右外
select * from 表1 right join 表2 on 关联条件 where 判断条件
子查询 select 中嵌套select 用()括起来
any
>any 大于最小
<any 小于最大
all
<all 小于最小
>all 大于最大
事务
事务四大特性
原子
隔离
一致
持久
隔离级别
问题
脏读
不可重复读
虚读(幻读)
JDBC
概念
接口(java)
需要数据库厂商提供实现类(一个个数据库的驱动)
面向接口开发
jdbc步骤
1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
2.获取连接
Connection con = DriverManager.getConnection("jdbc:mysql://数据库服务器地址:3306/数据库名称","root","密码");
3.通过连接创建执行sql的对象
Statement stat = con.createStatement();
4.执行sql获取结果
查询
ResultSet rs = stat.executeQuery("sql语句");
增删改
int row = stat.executeUpdate("sql语句");
5.对结果进行操作
查询
while(rs.next()){rs.getObject("列名")}
增删改
if(row>0) 执行成功 else 增删改失败了
6.释放资源
rs.close()
stat.close()
con.close()
api
DriverManager (驱动管理和创建连接)
Connection (和连接相关操作以及创建执行sql的对象)
Statement (对sql进行操作)
ResultSet (查询后的结果集封装)
next()
getObejct("列名")
getObejct(index)
sql注入(登录的案例)
使用PreparedStatement解决sql注入
JUNIT java单元测试
//方法修饰符必须是public
//方法不能有返回值
//方法不能携带参数
//类名不能叫Test
//JUNIT选择JUNIT4
读取bin目录下的配置文件
Properties properties = new Properties();
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("db.properties");
try {
properties.load(is);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
批处理
addBatch
clearBatch
executeBatch() |
|