一、jdbc
1、驱动 jar包
java database connector
a、加载驱动。拥有能够链接数据库的能力 :
Class.forName("com.mysql.jdbc.Driver")
b、创建链接。获得数据库的链接 :
Connection coon=DriverManager.getConnection
("jdbc:mysql://localhost:3306/subway","root","root");
通过链接发送Sql,获得语句对象 :
Statement stmt =coon.createStatement();
执行sql 查询会返回结果集 :
ResultSet rs=stmt.executeQuery(sql语句); // 返回结果
int i=stmt.executeUpdate(sql); while( i>0) // 大于0运行成功
while(rs.next()) {
emp e=new emp();
e.setEid(rs.getInt(1));
e.setEname(rs.getString(2));
list.add(e);
}
rs.close();
stmt.close();
coon.close();
二、sql注入 (第一代漏洞)
预编译语句对象 prepareStatement(sql);
PrepareStatement ps=coon. prepareStatement(sql);
ps.setString(1," ");
优点:编译一次,可以执行多次,效率快,安全
参数用户可控,可读性高,预编译空间有限
三、
1、dao、
data access object
数据访问对象
dao 层 数据库交互,定位错误
2、view 视图层
3、service 逻辑层
4、model entiy 实体类
5、tools 工具层
四、数据库索引、(index)
索引有哪些优缺点?
索引的优点
- 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
- 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
索引的缺点
- 时间方面:创建索引和维护索引要耗费时间,具体地,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,会降低增/改/删的执行效率;
- 空间方面:索引需要占物理空间。
索引的基本数据类型
- 普通索引 INDEX : 基本的索引类型,没有唯一性的限制,允许为NULL值。
可以通过ALTER TABLE table_name ADD INDEX index_name (column);创建普通索引
可以通过ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);创建组合索引
- 主键索引 PRIMARY KEY : 数据列不允许重复,不允许为NULL,一个表只能有一个主键。
- 唯一索引 UNIQUE : 数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引。
可以通过 ALTER TABLE table_name ADD UNIQUE (column); 创建唯一索引
可以通过 ALTER TABLE table_name ADD UNIQUE (column1,column2); 创建唯一组合索引
- 全文索引 FULLTEXT : 是目前搜索引擎使用的一种关键技术。
索引的数据结构(b树,hash)
索引的数据结构和具体存储引擎的实现有关,在MySQL中使用较多的索引有Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引。对于哈希索引来说,底层的数据结构就是哈希表,因此在绝大多数需求为单条记录查询的时候,可以选择哈希索引,查询性能最快;其余大部分场景,建议选择BTree索引。
where后面多次出现的字段加索引,通常主键加索引
表删除,索引不再起作用
五、视图、(view)、
视图的作用:
1、保证了安全性,对不同的用户设定不同的视图,限制用户的访问权限,起到保密作用
2、简化操作,把经常使用的数据设定视图
3、 操纵视图数据改变基表本身,操纵视图字段不会改变基表
视图的创建:
create
view '数据库' . '视图'
as
(select 字段 from 表);
虚表(伪表):dual 系统提供或不在表的字段里