外键:
学生表的gradeid字段要去引用年级表的gradeid,先定义外键,给这个外键添加约束(执行引用)
references 引用
DML语言:数据操作语言(*)
添加insert
字段名可以省略,后面值需一一对应
修改update
删除delete
事务:
索引原则
不要对进程变动数据加索引
索引一般加在常用来查询的字段上
索引的数据结构
Hash类型的索引
Btrss:InnoDB的默认数据结构
权限管理和备份
用户管理:
用户表:mysql.user
grant:授权
MySQL备份:
直接拷贝物理文件data。
使用命令行导出:mysqldump
mysqldump -h 主机 -u 用户名 -p 密码 数据库 表名 >物理磁盘位置/文件名
数据库的归约,三大范式、
JDBC
添加数据库驱动
连接数据库
1.加载驱动
2.连接数据库 DriverManager
3.获得执行sql的对象 Statement
4.获得返回的结果集
5.释放连接
DriverManager
connection.rollback();
connection.commit();
connection.setAutoCommit();
URL:协议 // jdbc:mysql//主机地址:端口号3306/数据库名?参数1&参数2&参数3
//oralce -- 1521
Statement 执行的SQL的对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要这个对象就可发送语句。 PrepareStatement执行SQL的对象
ResultSet 查询的结果集:封装了所有的查询结果
遍历,指针
获得指定的数据类型
resultSet.next();
resultSet.absolute(row); //移动到指定行
释放资源
如何编写工具类
新建文件:
工具类代码:
调用:
SQL注入的问题
SQL存在漏洞,SQL会被拼接or
PreparedStatement对象:可以防止SQL注入,效率更好![](https://i-blog.csdnimg.cn/blog_migrate/e04252fed049aa0f33b4554e3ca6a426.png)
数据库连接池
池化技术:准备一些预先的资源,过来连接预先准备好的
编写连接池,实现一个接口 DataSource
开源数据源实现
DBCP:commons-dbcp-1.4、commons-pool-1.6
C3P0: c3p0-0.9.5.5、mchange-commons-java-0.2.19
Druid:阿里巴巴