数据库之应用理论

一、聚合函数

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,然后再删除主表记录

时间: 2024-12-19 09:24:30

数据库之应用理论的相关文章

11-15C#基础--数据库之范式理论

数据库的设计理论与思路 在设计数据库的时候,有一个著名的设计理论---范式理论. 1.内容: 第一范式:每一列的数据类型要单一,必须要统一: 第二范式:在设计主键的时候,主键尽量更能体现表中的数据信息. 例如:分数表中的组合主键 货物编号与出入库的时间设置组合主键 第三范式:一个表中的每一列数据信息尽量直接都与主键相关. 2.什么情况下使用‘范式理论’? 以‘进销存’为例: 外键表的主键设计 数据库表之间的关系: 主外键表的关系:1对n的关系,当出现这种关系时,单独抽出来,设计两个表. 当出现n

数据库--关系数据理论

关系数据理论 本文为复习数据库整理的资料. 参考: https://blog.csdn.net/prdslf001001/article/details/80336835 https://www.bilibili.com/video/av73467859/ https://www.bilibili.com/video/BV1eE411a79r/ 一.数据冗余导致的问题 1)冗余存储:信息被重复存储,导致浪费大量存储空间. 2)更新异常:当重复的信息的一个副本被修改,所有副本都必须进行同样的修改.

L061-老男孩实效教育-数据库入门知识理论讲解-第一部-12节

01-老男孩运维DBA课程开班 02-数据库概念介绍 从架构上解决数据库的瓶颈说明了一个道理,有问题不要自己抗,要团队精神,数据库有问题了不要自己扛,让前端memcache扛,把数据静态化,让web服务器扛 03-数据库种类介绍及关系型数据库原理 04-非关系型数据库介绍 05-非关系型数据库种类介绍 06-关系型数据库产品介绍01 07-关系型数据库产品介绍02 08-非关系型数据库产品介绍01 09-数据库产品排名及发展大事记 10-MySQL数据库产品介绍 11-数据库基础内容小结 12-

MySQL数据库基本知识(理论总结)

定义:数据库就是一个文件系统,通过sql语句来获取数据 关系型数据库:关系型数据库存放的是实体时间的关系,在数据库层面来看就是存放的是表和表之间的关联关系 常见的关系型数据库   MySQL    DB2   sqlserver   oracle    sybase 一台数据库服务器中会创建很多数据库(一个项目,会创建一个数据库). 在数据库中会创建很多张表(一个实体会创建一个表). 在表中会有很多记录(一个对象的实例会添加一条新的记录) 表和表时间会有一些约束 主键约束:primary key

数据库入门理论知识介绍

数据库入门理论知识介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 前言: 1.目前90%以上的公司面临的运维的瓶颈都在后端 最常见的2大瓶颈就是: 1>.数据库(极难扩展): 2>.存储: 所以说做互联网的运维工程师要是把以上两点问题解决就可以轻松的搞定整个架构 2.什么是数据库: 查百度上有长篇大论了一下数据库特点,我们可以简单的理解: 数据库就是一个存放数据的仓库,这个仓库按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数

MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化

MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化 前言: 很多人都认为性能是在通过编写代码(程序代码或者是数据库代码)的过程中优化出来的,其实这是一个非常大的误区.真正影响性能最大的部分是在设计中就已经产生了的,后期的优化很多时候所能够带来的改善都只是在解决前妻设计所遗留下来的一些问题而已,而且能够解决的问题通常也比较有限.本章将就如何在 MySQL 数据库 Schema 设计的时候保证尽可能的高效,尽可能减少后期的烦恼. 9.1 高效的模型设计 最规范的就一定

DOM,API,CSS,href,万方db文章,数据库工程师要求

DOM,文档对象模型(Document Object Model),是W3C组织推荐的处理可扩展标志语言的标准编程接口. API,应用程序接口 (API:Application Program Interface),API就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的API而使操作系统去执行应用程序的命令或动作. CSS,层叠样式表(Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样

写给开发者看的关系型数据库设计

目录 一 Codd的RDBMS12法则——RDBMS的起源 二 关系型数据库设计阶段 三 设计原则 四 命名规则 数据库设计,一个软件项目成功的基石.很多从业人员都认为,数据库设计其实不那么重要.现实中的情景也相当雷同,开发人员的数量是数据库设计人员的数倍.多数人使用数据库中的一部分,所以也会把数据库设计想的如此简单.其实不然,数据库设计也是门学问. 从笔者的经历看来,笔者更赞成在项目早期由开发者进行数据库设计(后期调优需要DBA).根据笔者的项目经验,一个精通OOP和ORM的开发者,设计的数据

软考下午题详解--数据库设计

在前面的两篇博客中,小编分别对软考下午试题中的数据流图设计和uml图的相关知识点进行了详细的阐述,今天我们继续来看软考下午题中的大题部分---数据库设计,数据库的设计我们也已经早早的接触过,在第一次机房收费系统的时候我们直接用的是别人的脚本,也没有想过当时的数据库存在什么样的问题,等到个人重构机房的时候,我们需要重新设计数据库,这个时候,就不再是傻傻的导入数据库脚本文件这么简单了,我们需要从需求分析开始,自己设计数据库,什么三范式,主外键关联这都是我们需要注意的地方,可以这么说数据库设计贯穿我们