1.数据库:能够长久保存,可储存大量数据,减少冗余的数据集合
2.数据库管理系统:创建,维护,管理和使用数据库的软件
3.数据库系统:数据库,数据库管理系统,数据库管理员,用户,程序员,服务器,应用
数据库管理系统的特点:共享性高,冗余度小;具有高度的物理独立性和逻辑独立性;整体结构化,用数据模型描述;由数据库管理系统提供数据安全性、完整性、并发控制和恢复能力
4.逻辑模型:层次,网状,关系(关系就是二维表)
5.sql (1)存储引擎:InnoDB:支持外键,支持事务,性能较慢 MyISAM:不支持外键,不支持事务,性能快
(2)DQL:数据查询语言 DDL:数据定义语言 DCL:数据控制语言 DML:数据操作语言 (交互型) TPL:事务处理语言
(3)distinct:去重 is null: 空值 like:通配符 %:任意长度的任意字符 escape:注册转义字符
(4)笛卡尔积:两个表的所有行进行所有匹配,匹配结果是两个表的乘积
(5)连接分类:内连接 外连接:由于条件导致(null)部分数据被去笛卡尔积,但还要显示
(6)sql99: 交叉连接:cross 自然连接:natural using连接: on连接: 外连接:左外连接:左边表数据无法出现 left outer join 全外连接:full outer join
(7)函数:多行函数(分组函数) sum() avg() max() min(sal) count() 分组语句 group by 分组条件 having 字符类型 trim length char_length repeat reverse 数字类型:round()返回保留小数点后面y位,四舍五入的整数 rand()每次产生不同的随机数 日期类型:now() timestampdiff() 通用类型:case select case 11 when 1 then 'one' when 2 then 'two' else 'more' end; select case when 1>0 then'true' else 'false' end; ifnull select ifnull(comm,0)+sal from emp;
(8)子查询 limit(0,5)
(9)集合:union union all minus intersect 6.dml delete from emp insert into dept()values(); update emp set 7.事务:处理一致性问题 事务结束:提交(操作全部成功) 回滚(全部操作失败) commit rollback savepoint 8.事务特性:一致性:一旦事务完成,不管是否成功,系统数据处于一致状态 原子性:不可分割,操作语句要不全部成功,要不全部失败,不可能出现部分成功的情况 隔离性:一个事务不会被另一个是事务干扰 持久性:永久性,一旦被提交,对数据的改变就是永久的,不可在被回滚
9.ddl 建表 create table tba1( column1 number, column2 char(3), column3 date ) 删除 truncate 删除全表,不可还原 delete 删除数据,性能差,被事务控制 drop 删除表内结构和数据,通过归档可还原
alter table add alter table drop alter table modify
10.char 不可变 varchar 可变 clob 字符文件 blob 二进制文件
11.约束保证数据完整性 非空:not null 唯一:unique 主键:primary key 外键: foreign key check (mysql没有) 列的数据类型来确定值
12.手写约束 create table student( sid number constraint student_pk primary key, sname varchar2(20)) not null, tell number(11)unique, age number(3)check(age>4) )
13.view:视图的本质是有自我权限的查询,优点可以管理自我权限,不限空间
14.索引:提高查询性能,索引加在某列上 使用索引的条件:数据量超过10万,不用频繁修改,查询的量不能占总量太多
15.数据库的选择、投影和连接: 选择和投影一般就是对数据库进行查询,投影运算从表中选出表中选出指定的属性值组成一个新表。符合哪些条件就是选择,从表中选出满足条件的行形成一个新表作为运算结果。联接是由多个表合并成一个表(视图);选择(Selection):选择是是弹幕运算,其运算对象时一个表。该运算按给定的条件,从表中选出满足条件的行形成一个新表作为运算结果,选择运算的记号为σF(R),其中σ是选择运算符,下标F是一个条件表达式,R是被操作的表;投影(Projection):投影也是单目运算,该运算从表中选出指定的属性值组成一个新表,记为:ΠA(R),其中A是属性名(即列名)表,R是表名;连接(JOIN):把两个表中的行按着给定条件拼接而成的新表,执行顺序:自然连接->选取->投影
16.在关系模型中,关系完整性主要是指以下三方面:
1、实体完整性:所谓的实体完整性就是指关系(所谓的关系就是表)的主码不能取空值; 比如学生表的主码通常是取学号为主码
2、参照完整性:是指参照关系中每个元素的外码要么为空(NULL),要么等于被参照关系中某个元素的主码; 比如今天是9月2日是开学日,大学新生刚来报道,在学生表里,有的学生可能还没来得及分配具体的班,所以这些还未来得及分班的学生教务处可以在学生表里的班级属性取空值NULL(空值代表“不确定”),而哪些已分了班的学生就必须取班级表里的某些属性,比如班级类别,即学生属于哪个班.比如取“软件工程”,”计算机技术应用“等等. 参照关系也称为外键表,被参照关系也称为主键表.
3、用户定义的完整性:指对关系中每个属性的取值作一个限制(或称为约束)的具体定义.比如 性别属性只能取”男“或”女“ ,再就是年龄的取值范围,可以取值0-130 ,但不能取负数,因为年龄不可能是负数.
17.完整性控制目的在于保证数据库里的数据语意是正确的,和安全性控制一起属于DBMS提供的数据保护机制。完整性控制包括:完整性约束,并发控制,故障恢复。
完整性约束: 完整性约束是完整性控制的核心。DBMS要提供各种完整性约束的实现机构,保证对数据库的任何更新操作都不会破坏数据语意的正确性和准确性。
并发控制: 并发机制不正确可能导致 脏读 、 幻读 和 不可重复读 等此类问题。 并发控制 的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。在某些情况下,这些措施保证了当用户和其他用户一起操作时,所得的结果和她单独操作时的结果是一样的。在另一些情况下,这表示用户的工作按预定的方式受其他用户的影响。
故障恢复: 故障恢复是第三种完整性控制。在应用系统中,数据库往往是最核心的部分,一旦数据库损坏,将会带来巨大的损失,所以 数据库恢复 越来越重要。使用数据库的过程中,由于断电或其他原因,有可能导致数据库出现一些小错误,比如检索某些表特别慢、查询不到符合条件的数据等。出现这些情况的原因往往是数据库有些损坏或索引不完整。任何 数据恢复 的方法都基于 数据备份 。
18.DBS(数据库系统)包含DB(数据库)和 DBMS(数据库管理系统) 数据库管理系统,database management system,简称dbms,是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。用户通过dbms访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。
19.逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即,当数据的逻辑结构改变时,用户程序也可以不变。
20.未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据。
提交读(Read Committed):只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别 (不重复读)
可重复读(Repeated Read):可重复读。在同一个事务内的查询都是事务开始时刻一致的,InnoDB默认级别。在SQL标准中,该隔离级别消除了不可重复读,但是还存在幻象读
串行读(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞 。
21.(1)锁的类型有三种:
共享(S)锁:多个事务可封锁一个共享页;任何事务都不能修改该页; 通常是该页被读取完毕,S锁立即被释放。
排它(X)锁:仅允许一个事务封锁此页;其他任何事务必须等到X锁被释放才能对该页进行访问;X锁一直到事务结束才能被释放。 更新(U)锁:用来预定要对此页施加X锁,它允许其他事务读,但不允许再施加U锁或X锁;当被读取的页将要被更新时,则升级为X锁;U锁一直到事务结束时才能被释放。
(2) ①一级封锁协议:事务T要修改数据A时必须加X锁(排它锁),直到T结束才释放所。 可以解决丢失修改问题。 ②二级封锁协议:在一级的基础上,读取数据A时必须加S锁(共享锁),读完马上释放S锁。 可以解决读脏数据问题。 ③三级封锁协议:在二级的基础上,读取数据A时必须加S锁(共享锁),事务结束才释放S锁。 可以解决不可重复读问题。 ④两段锁协议:加锁和解锁分为两个阶段进行。 ⑤可串行化调度:通过并发控制,使并发执行的事务结果与某个串行执行的事务结果相同。 ⑥事务遵循两段锁协议是保证可串行化调度的充分条件,不是必要条件。
22.外模式、模式、内模式概念
外模式:又称子模式或用户模式,对应于用户级,是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。外模式反映了数据库的用户观。
模式:又称概念模式或逻辑模式,由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述, 是所有用户的公共数据视图(全局视图)。反映了数据库系统的整体观。
内模式:又称存储模式,对应物理级,是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,描述了数据在存储介质上的存储方式和物理结构, 对应着实际存储在外存储介质上的数据库。是数据库的存储观。 想要 保证数据库物理数据独立性,则跟外模式无关,只需修改模式与内模式之间的映射 。
23.1,Configuration接口:配置Hibernate,根据其启动Hibernate,创建SessionFactory对象;
2,SessionFactory接口:初始化Hibernate,充当数据存储源的代理,创建session对象,SessionFactory是 线程安全的,意味着它的同一个实例可以被应用的多个线程共享,是重量级二级缓存;
3,session接口:负责保存、更新、删除、加载和查询对象,是一个非线程安全的,避免多个线程共享一个session,是轻量级,一级缓存。
4,Transaction接口:管理事务。可以对事务进行提交和回滚; 5,Query和Criteria接口:执行数据库的查询。
24.数据模型的三要素:数据结构,数据操作,数据的约束条件
25.索引 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。update,delete,insert这些操作,改变数据库的内容,需要维护索引
普通索引:没有任何限制 唯一索引:不允许建立索引的列有重复的值,但可以有空值 主索引:特殊的唯一索引,不允许有空值 候选索引:也要求唯一性,一个表中可以有多个候选索引
hash索引不适合做范围索引,比较适合于范围查找,而btree建立在平衡搜索树上,比较适合于范围查找
26. 删除异常:不该删除的被删除
删除失败:该删除的未被删除
插入异常:应该插入的数据未被插入
27.数据库并发的问题
(1)、丢失更新 事务A和事务B同时修改某行的值,其中某个更新可能会丢失
(2)、脏读 当一个事务读取另一个事务尚未提交的修改时,产生脏读
(3)、不可重复读 同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生非重复读。
(4)、幻象读 同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻像读。
28. 层次模型:有且仅有一个节点无父节点,此节点为根节点,其他节点有且仅有一个父节点
网状模型:允许有一个以上的无双亲的节点,一个节点可以有多于一个的双亲
29. 事务故障:事物未达到预期终点
系统故障:造成系统停止运转需重启的任何事件
介质故障:磁盘损坏、磁头碰撞等
计算机病毒
30.打开一个表后,在“视图”中有 设计视图,数据表视图,数据透视表视图和数据透视图视图四种。
在设计视图中可以对表格的结构进行设置,比如有哪些字段,每个字段的类型等。 在数据表视图中可能浏览、修改、增减每条记录的内容, 是最常见也是系统默认的视图。 在数据透视表视图和数据透视图视图中,我们可以根据数据字段,设置交叉统计表格的行字段、列字段等,将数据以分类的方式显示成表格或统计图。
31. 定义: 主键 -- 唯一标识一条记录,不能有重复的,不允许为空 外键 -- 表的外键是另一表的主键 , 外键可以有重复的 , 可以是空值 索引 -- 该字段没有重复值,但可以有一个空值
作用: 主键 -- 用来保证数据完整性 外键 -- 用来和其他表建立联系用的 索引 -- 是提高查询排序的速度
个数: 主键 -- 主键只能有一个 外键 -- 一个表可以有多个外键 索引 -- 一个表可以有多个唯一索引
主属性——包含在任一候选关键字中的属性称主属性。 非主属性——不包含在主码中的属性称为非主属性。
32.
(1).#是把传入的数据当作字符串,如#user_id_list#传入的是1,2,则sql语句生成是这样,in ('1,2') ,
(2).$传入的数据直接生成在sql里,如$user_id_list$传入的是1,2,则sql语句生成是这样,in(1,2).
(3).#方式能够很大程度防止sql注入.
(4).$方式无法方式sql注入.
(5).$方式一般用于传入数据库对象.例如传入表名.
33. 删除异常:不该删除的被删除 删除失败:该删除的未被删除 插入异常:应该插入的数据未被插入
34.关系的5条性质 分量必须取原子值,每个分量必须是不可再分的数据项。 列是同质的,每列中的分量必须是同一类型的数据,来自同一个域。 属性不能重名。 行列的顺序无关。 任何两个元组不能完全相同,这是由主码约束来保证的。但是有些数据库若用户没有定义完整性约束条件,允许有两行以上的相同的元组。
35.数据库完整性(Database Integrity) 是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。数据库完整性约束可以通过DBMS或应用程序来实现,基于DBMS的完整性约束作为模式的一部分存入数据库中。 通过DBMS实现的数据库完整性按照数据库设计步骤进行设计,而由应用软件实现的数据库完整性则纳入应用软件设计。
36.连接
(1)自然连接:必须至少存在一个完全的属性。找出属性属性值相同的部分,然后合并两个表。
(2)外连接:将自然连接中剩下的部分(没有被匹配上的),也加进来(不存在的属性填NULL)
(3)左外连接,将外连接的内容和左边的(如这里的R)进行比较,在R中的(R,null)留下来,在S中的出来;
(4)右外连接同理
37.数据库常用的关系运算为三种: 1、选择。 2、投影。 3、连接。
(1)选择,是从二维表中选出符合条件的记录,它是从行的角度对关系进行的运算。
(2)投影,是从二维表中选出所需要的列,它是从列的角度对关系进行的运算。
(3)连接,是同时涉及到两个二维表的运算,它是将两个关系在给定的属性上满足给定条件的记录连接起来而得到的一个新的关系。
38.触发器定义: 触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。
注意事项:
(1).只有表才可以支持触发器,视图和临时表都不支持触发器
(2).每个表的每个事件只支持一个触发器,因此每个表最多支持6个触发器
(3).单一触发器不能与多个操作相关
(4).触发器不能更新和覆盖,如果想更新一个触发器必须先删除,再创建
39.3种数据不一致性
(1)、丢失修改(lost update) 两个事务T1和T2读入同一数据并修改,T2提交结果破坏了T1提交的结果,到这T1的修改被丢失。
(2)、不可重复读(Non-Repeatable Read) 不可重复读是指事务T1读取数据后,事务T2执行封信操作,使T1无法再现前一次读取的结果
(3)、读“脏”数据(dirty read) 读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改的数据恢复原职,t2读到的数据就与数据库中的数据不一致,则T2读到的数据就是“脏”数据,即不正确的数据