数据库
数据库管理系统应该具备的功能:
数据库定义
数据库操纵
数据库查询
数据库控制
数据库管理
数据库通信(可选,在分布式和网络环境中必须提供)范式
1NF : 属性是原子性的,即不可拆分的;例如姓名这个属性是一般不可拆分的;而社会保险号如果是由出生年月日与姓名缩写构成的话,就是可拆分的:包含可拆分的含义:出生年月日,姓名; 是否可拆分取决于对含义的解释;
2NF:解决了非主键属性对主键属性的部分依赖;如表(A, B, C, D),其中ABCD代表属性,假设(A, B)是主键,若C只依赖于B,则这个表是不符合2NF的,可拆分为(A, B, D)与 (B, C)两张表;很明显,如果主键只有一个属性,那么肯定是2NF
3NF:解决了非主键属性对主键属性的传递依赖;如表(A,B,C,D),如果主键是A, 而B依赖于A,C依赖于B,则这个表有传递依赖,是不符合3NF的;
范式的目的是为了减少/消除冗余;数据库常见的四种故障
(1)事务内部的故障:事务内部故障可分为预期的和非预期的,其中大部分的故障都是非预期的。预期的事务内部故障是指可以通过事务程序本身发现的事务内部故障; 非预期的事务内部故障是不能由事务程序处理的,如运算溢出故障、并发事务死锁故障、违反了某些完整性限制而导致的故障等。
(2)系统故障:系统故障也称为软故障,是指数据库在运行过程中,由于硬件故障、数据库软件及操作系统的漏洞、突然停电灯情况,导致系统停止运转,所有正在运行的事务以非正常方式终止,需要系统重新启动的一类故障。这类事务不破坏数据库,但是影响正在运行的所有事务。
(3)介质故障:介质故障也称为硬故障,主要指数据库在运行过程中,由于磁头碰撞、磁盘损坏、强磁干扰、天灾人祸等情况,使得数据库中的数据部分或全部丢失的一类故障。
(4)计算机病毒故障:计算机病毒故障是一种恶意的计算机程序,它可以像病毒一样繁殖和传播,在对计算机系统造成破坏的同时也可能对数据库系统造成破坏(破坏方式以数据库文件为主) 。
数据模型的组成要素有:
1.数据结构,描述数据库的组成对象以及对象之间的联系,数据结构是所描述的对象类型的集合,是对系统静态特征的描述
2.数据操作,是指对数据库中各种对象的实例允许执行的操作的集合,主要有查询和更新。
3.数据的完整性约束条件,是一组完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的之约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。专门的关系运算包括投影、选择和连接。选择运算是从关系中找出满足给定条件的那些元组,这种运算是从水平方向抽取元组;投影运算是从关系模式中挑选若干属性组成新的关系,这是从列的角度进行的运算,相当于对关系进行垂直分解;连接运算是将两个关系拼接成一个新的关系,生成的新关系中包含满足条件的元组。在一个关系中要找出满足指定条件的元组组成新关系的操作属于选择运算。
更新表 alter table 【最常用的就是定义外键】
// alter table vendors add vend_phone char(20);
//alter table vendors drop column vend_phone;
// alter table stu change stu_name stunames char(2);
//alter table orderitems add constraint fk_orderitems_orders foreign key(order_num) references orders(order_num);
删除表 drop table tname; // 删除的是整个表,删除表没有确认,也不能撤销,
重命名表 rename table tname1 to tname2 , tname3 to tname4;
// 表的重命名,可以多个同时重命名。事务四大特性(简称ACID)
1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。
2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。
3、隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。
4、持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。update,delete,insert这些操作,改变数据库的内容,需要维护索引.
网状模型属于数据库的逻辑数据模型。逻辑数据模型主要有以下几种: 1.层次模型(格式化模型):有且仅有一个节点无父节点,此节点为根节点,其他节点有且仅有一个父节点。 2.网状模型(格式化模型):允许有一个以上的无双亲的节点,一个节点可以有多于一个的双亲。 3.关系模型:单一的数据模型——关系 4.面向对象数据模型:把实体表示成类,一个类表示实体属性和实体行为,分为分类,概括,聚集,联合四类。 5.对象关系数据模型 6.半结构化模型
左外连接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是连接列所匹配的行
右外连接是左向外连接的反向连接。将返回右表的所有行。
全外连接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行。外模式是用户与数据库的接口,是应用程序可见到的数据描述,概念模式是对数据整体的逻辑结构的描述,而内模式描述了数据的物理结构。
Q:定义学生、教师和课程的关系模式S (S#,Sn,Sd,Dc,SA)(其属性分别为学号、姓名、所在系、所在系的系主任、年龄); C(C#,Cn,P#)(其属性分别为课程号、课程名、先修课);SC(S#,C#,G)(其属性分别为学号、课程号和成绩)。包含对非主属性部分依赖的关系是(S(S#,Sn,Sd,Dc,SA))
A:学号—>姓名,学号—>系名,系名—>系主任,(学号,课名)->分数
码:(学号、课名)
主属性:学号,课名
非主属性:姓名,系名,系主任,分数
对于(学号、课名)->姓名,非主属性姓名对码的部分函数依赖;
对于(学号、课名)->系名,非主属性系名对码的部分函数依赖;
不符合2NF的要求。
对于(学号、课名)->系名,系名->系主任,非主属性系主任对码的传递函数依赖;
也不符合3NF的要求。
A:在进行数据库逻辑设计时,可将 E-R 图中的属性表示为关系模式的属性,实体表示为元组,实体集表示为关系,联系表示为关系。故正确答案为 A 。
A:并发操作可能带来的数据不一致不包括 (死锁 )。
A:3NF(消除主属性对码的部分和传递函数依赖)规范化为BCNF。
A:在数据库与宿主语言之间传递信息是通过(局部变量)
A:
一个表的 主键 只能有一个,而唯一索引可以建多个。
主键可以作为其它表的外键。
主键不可为null,唯一索引可以多个数据为null。
A:
不属于数据模型所描述的内容是 数据查询_。
A:
SQL 语言具有(数据定义、数据操纵、数据控制 )的功能。
A: sql server中删除约束的语句是:
alter table 表名 drop constraint 约束名
A:数据库的基本特点是( )。
(1)数据可以共享(或数据结构化) (2)数据独立性
(3)数据冗余小,易扩充 (4)统一管理和控制
A:各分E-R图之间的冲突主要有三类:属性冲突、命名冲突和结构冲突。
A:数据库的网状模型应满足的条件是 (允许一个以上结点无双亲,也允许一个结点有多个双亲 ) 。
Q:对于满足SQL92标准的SQL语句:SELECT foo,count(foo) FROM pokes WHERE foo>10 GROUP BY foo HAVING ORDER BY foo,其执行的顺序应该为( )
A:标准的 SQL 的解析顺序为:
(1)FROM 子句, 组装来自不同数据源的数据
(2)WHERE 子句, 基于指定的条件对记录进行筛选
(3)GROUP BY 子句, 将数据划分为多个分组
(4)使用聚合函数进行计算
(6)计算Select所有的表达式
(7)使用 ORDER BY 对结果集进行排序
//可以按照基本逻辑思路来理解:一步步缩减范围,再在所选范围中计算结果,处理计算出的结果。
1,先确定大范围,选择表,也即是from;
2,再一步步缩减范围,从表中确定符合条件的范围,用where,再group by,再having;
3,确定最终范围后,在范围中进行计算题目要求计算的数,用select;
4,计算之后,对计算结果进行排序,用order by。
A:系统软件,主要指用来运行或控制硬件所开发的计算机软件,如操作系统、解释器、编译器、数据库管理系统、公用程序等面向开发者的软件。
A:模式/内模式映像定义通常包含在模式描述中。当数据库的存储设备和存储方法发生变化时,数据库管理员对模式/内模式映像要做相应的改变,使模式保持不变,从而应用程序也不变,保证了数据与程序的物理独立性,简称为数据的物理独立性。
A:物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。即,数据在磁盘上怎样存储由DBMS管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变。
逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即,当数据的逻辑结构改变时,用户程序也可以不变。
数据库系统的数据可以为多个程序服务,程序也可以调用多个数据库中数据,这就是数据和程序的独立性。
A:
DROP TABLE — 从数据库中删除一个表
SQL92 为 DROP TABLE 声明了一些附加的功能:
RESTRICT
确保只有不存在相关视图或完整性约束的表才可以被删除.
CASCADE
任何引用的视图或完整性约束都将被删除
A:
如需在表中添加列,请使用下列语法:
ALTER TABLE table_name
ADD column_name datatype
要删除表中的列,请使用下列语法:
ALTER TABLE table_name
DROP COLUMN column_name
A:DBS是采用了数据库技术的计算机系统。DBS是一个集合体,包含数据库、计算机软硬件、应用程序和( 数据库管理员 )。
A:设关系R和S的属性个数分别为r和s,则(R×S)操作结果的属性个数为( r+s)。
[分析] 设关系R和关系S的元素分别是r和s,定义R和S的笛卡尔积是一个(r+s)元组的集合,每一个元组前r个分量来自R的一个元组,后s个分量来自S的一个元组。
A:概念模式是模式.
A:SQL 子查询是 一个 SELECT 查询,它返回单个值且嵌套在 SELECT、INSERT、UPDATE、DELETE 语句或其它子查询中。任何允许使用表达式的地方都可以使用子查询。当一个查询是另一个查询的条件时,称之为子查询。 子查询可以使用几个简单命令构造功能强大的复合命令。 子查询最常用于SELECT-SQL命令的WHERE子句中
A:以下关于实体的描述中,错误的是( 实体靠联系来描述 )。
在SQL Server中,实体是指客观存在并且相互区别的事物。实体可以是人,也可是物,可以是实际的对象,也可以是抽象的概念。可以是事物本身,也可以指事物之间的联系。如一个学生,一门课,学生的一次选课,老师与系的工作关系等。
一个实体由若干个属性来刻画。属性是相对实体而言的,是实体所具有特性。如学生实体可以由学号、姓名、性别等属性组成。这些属性组合起来来表征一个学生。
此外,也有关键字,域,实体型等。还有实体之间的联系,如一对一,一对多,多对多。
所以实体不单单是靠联系来描述
A:外模式就是View
(外模式 ) 是用户可以看见和使用的局部数据的逻辑结构和特征的描述。
三级模式结构:外模式、模式和内模式
一、模式(Schema)
定义:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
理解:
① 一个数据库只有一个模式;
② 是数据库数据在逻辑级上的视图;
③ 数据库模式以某一种数据模型为基础;
④ 定义模式时不仅要定义数据的逻辑结构(如数据记录由哪些数据项构成,数据项
的名字、类型、取值范围等),而且要定义与数据有关的安全性、完整性要求,定义这
些数据之间的联系。
二、外模式(External Schema)
定义:也称子模式(Subschema)或用户模式,是数据库用户(包括应用程序员和最终
用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
理解:
① 一个数据库可以有多个外模式;
② 外模式就是用户视图;
③ 外模式是保证数据安全性的一个有力措施。
三、内模式(Internal Schema)
定义:也称存储模式(Storage Schema),它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式(例如,记录的存储方式是顺序存储、按照B树结构存储还是按hash方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储 记录结构有何规定)。
理解:
① 一个数据库只有一个内模式;
② 一个表可能由多个文件组成,如:数据文件、索引文件。
它是数据库管理系统(DBMS)对数据库中数据进行有效组织和管理的方法
其目的有:
① 为了减少数据冗余,实现数据共享;
② 为了提高存取效率,改善性能。
A:
数据库逻辑设计的主要任务是( 创建数据库说明 )。
逻辑结构设计:
1.E-R图向关系模型的转化
2.数据模型的优化
3.设计用户子模式
A:索引的使用限制场合:
1、使用不等于操作符(<>, !=)
2、使用 is null 或 is not null
3、使用函数
4、比较不匹配的数据类型
Q:关于PreparedStatement与Statement描述错误的是(Statement执行扫描的结果集比PreparedStatement大)
A:
Statement statement = conn.createStatement();
PreparedStatement preStatement = conn.prepareStatement(sql);
执行的时候:
ResultSet rSet = statement.executeQuery(sql);
ResultSet pSet = preStatement.executeQuery();
由上可以看出,PreparedStatement有预编译的过程,已经绑定sql,之后无论执行多少遍,都不会再去进行编译,
而 statement 不同,如果执行多变,则相应的就要编译多少遍sql,所以从这点看,preStatement 的效率会比 Statement要高一些.statement cost:95 preStatement cost:90
statement cost:100 preStatement cost:89
statement cost:92 preStatement cost:86
当然,这个也会跟数据库的支持有关系,http://lucaslee.iteye.com/blog/49292 这篇帖子有说明
虽然没有更详细的测试 各种数据库, 但是就数据库发展 版本越高,数据库对 preStatement的支持会越来越好,
所以总体而言, 验证 preStatement 的效率 比 Statement 的效率高
2>安全性问题
这个就不多说了,preStatement是预编译的,所以可以有效的防止 SQL注入等问题
所以 preStatement 的安全性 比 Statement 高
3>代码的可读性 和 可维护性
这点也不用多说了,你看老代码的时候 会深有体会
preStatement更胜一筹.
1.PreparedStatement 接口继承 Statement , PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象。
2 .作为 Statement 的子类, PreparedStatement 继承了 Statement 的所有功能。三种方法 execute 、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数
3.在 JDBC 应用中 , 如果你已经是稍有水平开发者 , 你就应该始终以 PreparedStatement 代替Statement. 也就是说 , 在任何时候都不要使用 Statement.
内模式也称为存储模式/物理模式,一个数据库只有一个内模式,他是数据库物理结构和存储方式的描述,是数据在数据库内部的组织方式。
数据库三模式: 1.概念模式,也称作模式。 2.外模式,也称作逻辑模式。 3.内模式,也称作物理模式,存储模式。
链接:https://www.nowcoder.com/questionTerminal/70100692594e4130a6b3efe344ef3874
来源:牛客网
定义:
主键 – 唯一标识一条记录,不能有重复的,不允许为空
外键 – 表的外键是另一表的主键 , 外键可以有重复的 , 可以是空值
索引 – 该字段没有重复值,但可以有一个空值
作用:
主键 – 用来保证数据完整性
外键 – 用来和其他表建立联系用的
索引 – 是提高查询排序的速度
个数:
主键 – 主键只能有一个
外键 – 一个表可以有多个外键
索引 – 一个表可以有多个唯一索引
null 值不能用=,只能用 is 或is not
all恒成立问题,>=all,也就是>=最大值;
any 和some 存在性问题>=最小值就会存在,
联系英语的语法可知区别在于any用于否定,一般用于!=,some用于肯定。