2019/5/12 查漏补缺
2019/5/12 查漏补缺
数据类型分为两大类:基本类型和引用类型;
基本类型只能保存一些常量数据,引用类型除了可以保存数据,还能提供操作这些数据的功能;
为了操作基本类型的数据,java也对它们进行了封装, 得到八个类,就是java中的基本类型的封装类;他们分别是:
八种基本类型: byte short int long float double char boolean
对应的包装类 引用类型: Byte Short Integer Long Float Double Character Boolean
java中类的继承关系
其中Iterator未继承 Collection
关于接口
- 声明抽象方法,不用写大括号
- 可以包含实现,必须用staic 修饰
重载和重写
若是重写,返回值类型不可小于父类返回值类型;若是重载需参数列表不同
静态变量
属于类,不可定义于方法中
java中的关键字和保留字
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
数据库操作
实现数据库收回部分权限的操作
实现收回user2查询基本表T的权限
REVOKE SELECT ON T FROM user2
关于数据库错误类型
会发生丢失修改
丢失修改:原本两个事务的目的是T1先把A的值加10,A变为58。然后T2把A的值再减2,即A变成56。但是根据题目中的执行顺序,A的值变为48-2=46,即T2的修改覆盖了T1的修改,这种现象叫做丢失修改。
不可重复读:不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。
读"脏"数据:读"脏"数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤消,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。
SQL四种语言:
DQL(Data Query Language):数据库查询语言。由SELECT、FROM、WHERE等子句组成的查询块。
DML(Data Manipulation Language):数据操纵语言。插入Insert、删除Delete、更新Update。
DDL(Data Definition Language):数据定义语言。创建Create、修改Alter、删除Drop、清空表数据Truncate
DCL(Data Control Language):数据控制语言。授权Grant、回滚Rollback、提交Commit
数据库常见的四种故障
(1)事务内部的故障:事务内部故障可分为预期的和非预期的,其中大部分的故障都是非预期的。预期的事务内部故障是指可以通过事务程序本身发现的事务内部故障; 非预期的事务内部故障是不能由事务程序处理的,如运算溢出故障、并发事务死锁故障、违反了某些完整性限制而导致的故障等。
(2)系统故障:系统故障也称为软故障,是指数据库在运行过程中,由于硬件故障、数据库软件及操作系统的漏洞、突然停电灯情况,导致系统停止运转,所有正在运行的事务以非正常方式终止,需要系统重新启动的一类故障。这类事务不破坏数据库,但是影响正在运行的所有事务。
(3)介质故障:介质故障也称为硬故障,主要指数据库在运行过程中,由于磁头碰撞、磁盘损坏、强磁干扰、天灾人祸等情况,使得数据库中的数据部分或全部丢失的一类故障。
(4)计算机病毒故障:计算机病毒故障是一种恶意的计算机程序,它可以像病毒一样繁殖和传播,在对计算机系统造成破坏的同时也可能对数据库系统造成破坏(破坏方式以数据库文件为主)
数据库设计六个阶段:
1.需求分析:需要什么现实功能
2.概念设计:根据功能将文字用ER图表示出来,实现功能在现实世界到信息世界的转换
3.逻辑设计:ER图转换成关系模式
4.物理设计:决定物理存储方式
5.数据库运行:装入数据,应用程序编写调试(增删改查测试)
6.数据库运行维护:只要运行,永远走在改善数据库性能的路上
Java的异常分为两种
一种是运行时异常(RuntimeException),一种是非运行异常也叫检查式异常(CheckedException)。
1、运行时异常不需要程序员去处理,当异常出现时,JVM会帮助处理。常见的运行时异常有:
ClassCastException(类转换异常)
ClassNotFoundException
IndexOutOfBoundsException(数组越界异常)
NullPointerException(空指针异常)
ArrayStoreException(数组存储异常,即数组存储类型不一致)
还有IO操作的BufferOverflowException异常
2、非运行异常需要程序员手动去捕获或者抛出异常进行显示的处理,因为Java认为Checked异常都是可以被修复的异常。常见的异常有:
IOException
SqlException
外模式,内模式
外模式(子模式),是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是数据的逻辑表示;
内模式(存储模式),它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
数据库范式
第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了。
第二范式: 如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。一个数据表的主键只有单一一个字段的话,它就一定符合第二范式(前提是该数据表符合第一范式)。
第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF.
注:关系实质上是一张二维表,其中每一行是一个元组,每一列是一个属性。
第一范式
定义:如果关系R 中所有属性的值域都是单纯域,那么关系模式R是第一范式的
那么符合第一模式的特点就有
1)有主关键字
2)主键不能为空,
3)主键不能重复,
4)字段不可以再分
第2范式:
数据库表中不存在非关键字段对任一候选关键字段的 部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。
第3范式:
在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的 传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:
关键字段 → 非关键字段x → 非关键字段y
BCNF( 鲍依斯-科得范式 ):
在第三范式的基础上,数据库表中如果不存在任何字段对任一候选关键字段的 传递函数依赖则符合BCNF。
依赖关系:
1.数据依赖
数据依赖指的是通过一个关系中属性间的相等与否体现出来的数据间的相互关系,其中最重要的是函数依赖和多值依赖。
2.函数依赖
设X,Y是关系R的两个属性集合,当任何时刻R中的任意两个元组中的X属性值相同时,则它们的Y属性值也相同,则称X函数决定Y,或Y函数依赖于X。
3.平凡函数依赖
当关系中属性集合Y是属性集合X的子集时(Y?X),存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。
4.非平凡函数依赖
当关系中属性集合Y不是属性集合X的子集时,存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。
5.完全函数依赖
设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
6.部分函数依赖
设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
7.传递函数依赖
设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
语句null的书写
检索NULL时,不能使用=运算符的。用is“WHERE AGE IS NULL”