数据库之应用理论

一、聚合函数

count:统计行数量

sum:获取单个列的合计值

avg:计算某个列的平均值

max:计算列的最大值

min:计算列的最小值

 

二、having和where区别

  二者都是过滤条件,where运行在分组之前,因此不能执行任何聚合函数,having是运行在分组后,只能用作聚合函数的过滤。

 

三、为什么要保证数据库完整性

  为了防止垃圾数据的产生,从而影响数据库的执行效率

 

四、SQL语句执行顺序

1.执行from

2.where条件过滤

3.group by 分组

4.select 投影列

5.having条件过滤

6.执行order by顺序

 

五、外键与外键约束

  外键是指从表的某列与主表的某列存在依附关系。外键约束是指在外键关联主键上强制加上一个约束,如果违反该约束,则不允许该条数据的修改。没有外键约束不等于没有外键。

  添加外键约束的语句:Alter table 从表 add constraint 外键名 foreign key(外键) reference 主表名(主键)

 

六、JDBC(Java Database Connection)

  是java连接数据库的一套规范,该规范中定义了一系列接口,这些接口由数据库厂商根据自身数据库 的特点提供实现类,由用户根据接口调用实现类相关的方法。这样用户可以屏蔽不同数据库的差异,无论连接什么数据库都是一套API

 

七、DAO模式

  建立实体类和数据库表做映射,也就是那个类对应哪个表,哪个属性对应哪个列。而jdbc操作的目的,就是完成对象数据和关系数据的转换。

 

八、DAO操作流程

1.加载驱动,建立连接(Class.forName + DriverManager.Connection)

2.执行SQL语句(PrepareStatement)

3.关闭连接(ps.close()   con.close())

 

九、Statement和PreparedStatement的区别

1.Statement是PreparedStatement的父接口,他们都是sql语句执行的接口。

2.Statement在执行sql语句时,由于sql语句的数据由用户提供,所以只能用拼接字符串的方式将数据库加入sql语句。执行效率低,而且会引起sql注入。

3.PreparedStatement支持占位符的方式天聪数据,无论是什么值都只会编译一次,效率较高。而且无论值是什么,都会当字符串处理,不会引起sql注入

 

sql注入:如果执行sql语句采用拼接字符串的方式进行,那么一旦数据库中含有非法字符,或者sql语句的关键字时,会导致sql语句执行结果不正确或执行失败的情况。

 

十、三层架构

1.持久层:完成数据库相关操作

  采用DAO模式,建立实体类和数据库做映射,也就是说那个表对应哪个类,哪个列对应哪个属性。而持久层的目的就是完成对象数据和关系数据的转换。

2.业务层:完成处理从表现层中得到的数据,和相关的业务操作

  采用实物脚本模式,将当前业务中所有的操作封装成一个方法,保证这些操作同时成功或同时失败。不允许出现部分成功或部分失败,这样引起数据混乱的操作。

3.表现层:完成数据的战士和数据的收集

  采用VMC模式

  M(Model):模式。也就是实体类,用于封装和传输数据

  V:(View):视图。也就是GUI窗体,用于数据库的战士。

  C:(Contral):控制。也就是时间,用于控制业务流程。

 

  层与层之间采用接口做耦合,这样当其中一个层的组件需要更换不会影响其他层的组件。

十一、

  当两个表之间,建立了主外键约束时,删除主表记录时,如果该记录有从表记录引用,那么忧郁有外键约束存在,会报错,无法删除。解决方法:

  1.将从表中引用该主键的记录全部删除,然后再删除主表记录

  2.将从表中引用该主键的记录外键全部设置为null,然后再删除主表记录

 

原文地址:https://www.cnblogs.com/fengxiaopiaoer/p/5447874.html