赞
踩
试述数据、数据库、数据库管理系统、数据库系统的概念。
数据:描述食物某一方面的符号记录
数据库:指长期存储在计算机内有组织可共享的大量数据的集合
数据库管理系统:是位于用户和操作系统之间的一层软件管理系统
数据库系统:指计算机引入数据库后,由数据库系统运行环境,数据库管理系统及开发工具,数据库管理员以及用户组成的系统。
使用数据库系统有什么好处?
1.可以大大提高系统开发效率,因为在数据库系统中,应用程序不必关心数据的定义,存储,以及存取路径,这些都有DBMS完成
2.提供数据与程序之间的独立性:大大减少应用程序的维护和修改
3.使用数据库可以减少数据库管理人员的工作负担
试述文件系统与数据库系统的区别和联系。
文件系统和数据库系统之间的区别:
(1) 文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据;
(2) 文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离;
(3) 文件系统用操作系统中的存取方法对数据进行管理,数据库系统用DBMS统一管理和控制数据;
(4) 文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。
文件系统 | 数据库管理系统 |
---|---|
某一应用 | 现实世界 |
共享性差,冗余度大 | 共享性高,冗余度小 |
记录内有结构,整体无结构 | 整体结构化,用数据模型描述 |
应用程序自己控制 | 由数据库管理系统提供数据安全性,完整性,并发控制和恢复能力 |
独立性差 | 具有高度的物理独立性和一定的逻辑独立性 |
文件系统和数据库系统之间的联系: | |
(1) 均为数据组织的管理技术; | |
(2) 均由数据管理软件管理数据,程序与数据之间用存取方法进行转换; | |
(3) 数据库系统是在文件系统的基础上发展而来的。 | |
举出适合用文件系统而不是数据库系统的应用例子,以及适合用数据库系统的应用例子。 | |
适用于文件系统:数据的备份,应用程序使用过程中产生的临时数据,本身功能简单,结构固定的应用都适合用于文件系统。 适用于数据库系统:绝大部分现实情形都可以使用数据库系统。例如公司的信息管理系统,学校的图书馆管理系统等 |
数据库的数据保护都有哪些?怎么实现的?
有防止非法使用数据库,造成的数据泄露,更改或破坏;
防止多个用户同时存取同一数据,造成的数据不一致。
可通过四方面实现:
安全性控制
完整性控制
并发性控制
数据恢复。
关系数据库有哪些操作
选择、投影、连接、除法
数据库系统相对于文件系统的好处
数据库有哪些数据模型
层次模型 网状模型 关系模型 对象关系模型 对象模型
数据库的第三范式
3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余
数据库的设计过程
需求分析阶段
概念结构设计
逻辑结构设计
物理结构设计
数据库实施
数据库运行和维护
数据库系统和文件系统相比有哪些优势
提高了数据的共享性,使多个用户能够同时访问数据库中的数据
提高了数据的一致性和完整性
提供数据与应用程序的独立性
文件系统和数据库系统之间的区别
文件系统 | 数据库系统 |
---|---|
用文件将数据长期保存在外存上 | 用数据库统一存储数据 |
程序和数据有一定的联系 | 程序和数据分离 |
用操作系统的存取方法对数据进行管理 | 用DBNS统一管理和控制数据 |
以文件为单位的数据共享 | 以记录和字段为单位的数据共享 |
文件系统和数据库系统之间的联系
数据库设计过程(6个步骤)
云计算
云计算是通过网络提供可伸缩的廉价分布式计算能力。
云计算是一种商业计算模型。它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够更具获取计算力、存储空间和信息服务。提供资源的网络被称作云。云中的资源在使用者看来是可无限扩展的,并且可以随时获取、按需使用、随时扩展、按使用付费,就像煤气水电一样,取用方便
、费用低廉。
普适计算
通过在日常环境中广泛部署微小的计算设备,人们能够在任何时间和任何地点获取并处理信息,计算将最终和环境融为一体。这就是普适计算。
UML
统一建模语言(UML,Unified Modeling Language)是面向对象软件的标准化建模语言。UML因其简单、统一的特点,而且能表达软件设计中的动态和静态信息,目前已经成为可视化建模语言的工业标准,
- 组成 模型元素(Model Element):代表面对对象中的类、对象、消息和关系等概念,是构成图的最基本的长面向对象系统分析与设计方法概念。 图(Diagram):是模型元素集的图形表示,通常是由弧(关系)和顶点(其他模型元素)相互连接构成的。 视图(View):是表达系统的某一方面的特征的UMI,建模元素的子集,由多个图构成,是在某一个抽象层上,对系统的抽象表示。 通用机制(General Mechanism):用于表示其他信息,比如注释、模型元素的语义等。另外,UMI。还提供扩展机制,使UML语言能够适应一个特殊的方法(或过程),或扩充至一个组织或用户。 - 五种类图定义 1.用例图:从用户角度描述系统功能,并指各功能的操作者。 2.静态图:包括类图,包图,对象图。 - 类图:描述系统中类的静态结构 - 包图:是包和类组成的,表示包与包之间的关系,包图描述系统的分层结构. - 对象图:是类图的实例. 3.行为图:描述系统动态模型和对象组成的交换关系。包括状态图和活动图 - 活动图:描述了业务实现用例的工作流程 - 状态图:是描述状态到状态控制流,常用于动态特性建模 4.交互图:描述对象之间的交互关系 顺序图:对象之间的动态合作关系,强调对象发送消息的顺序,同时显示对象之间的交互 合作图:描述对象之间的协助关系 5.实现图: 配置图:定义系统中软硬件的物理体系结构
完整性约束
数据库事务ACID四大属性,事务的概念
事务(Transaction)指要做的或所做的事情。在计算机属于中指访问并可能更新数据库中各种数据项的一个程序执行单位(unit)。
事务是恢复和并发控制的基本单位。
事务4个属性:原子性、一致性、隔离性、持久性。这四个属性常称为ACID特性。
原子性(atomicity):一个事务是一个不可分割的单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation):一个事务的执行不能被其他事物干扰。即一个事务内部的操作及使用的数据对并发的其他事物是隔离带,并发执行的各个事物之间不能互相干扰。
持久性(durability):又称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性高度。接下来的其他操作或故障不应该对其有任何影响。
ER模型
全称实体关系模型(Entity-relationship model)
提供不受任何DBMS约束的面向用户的表达方法,在数据库设计中被广泛用作数据建模的工具。
主要有实体、属性、联系三部分组成。
- 实体是一个数据的使用者,其代表软件系统中客观存在的生活中的实物,如人、动物,物体、列表、部门、项目等。
- 实体中的所有特性称为属性.如用户有姓名、性别、住址、电话等. "实体标识符"是在一个实体中,能够唯一表示实体的属性和属性集的标示符.但针对于一个实体只能使用一个"实体标识符"来标明。实体标识符也就是实体的主键。属性用椭圆型的符号现况表示出来,添加了下划线的名字就是我们所说的标识符。
- 在我们生活的世界中,实体不会是单独存在的,实体和其他的实体之间是有着千丝万缕的联系的。举例某一个人在公司的某个部门工作,其中的实体有"某个人"和"公司的某个部门",他们之间的有着很多的联系联系。
存储过程(stored Procedure)
是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数来执行它。存储过程是数据库中的一个重要对象。
相当于数据库中的函数。
类比:假如你每天要开车完成一些列重复的操作:车钥匙启动车,倒车。现在出现了一款新车,可以自动的完成这些重复的工作。每次你上车以后,车就自动帮助你倒出来了。
在工作里也会经常遇到重复性的工作,这时候就可以把常用的SQL写好存储起来,这就是存储过程。这样下次遇到同样的问题,直接使用存储过程就可以了,就不需要再重新写一遍SQL
用什么来调用
1)可以用一个命令对象来调用存储过程。
2)可以供外部程序调用,比 如:java 程序。
存储过程优缺点
优点 :
1)存储过程是预编译过的,执行效率高。
2)存储过程的代码直接存放于数据库中,通过存储过程名直接调用,减少网络通讯。
3)安全性高,执行存储过程需要有一定权限的用户。
4)存储过程可以重复使用,可减少数据库开发人员的工作量。
缺点: 移植性差
存储过程和函数的区别
存储过程 | 函数 |
---|---|
用于在数据库中完成特定的操作或者任务(如插入、删除等) | 用于特定的数据(如选择) |
程序头部声明用procedure | function |
程序头部声明时不需要描述返回类型 | 要描述返回类型而且PL/SQL块中至少要包括一个有效的return语句 |
可以使用 in/out/in out 三种模式的参数 | 可以使用 in/out/in out 三种模式的参数 |
可作为一个独立的 PL/SQL 语句来 执行 | 不能独立执行,必须作为表达式的一部分调用 |
可以通过 out/in out 返回零个或多 个值 | 通过 return 语句返回一个值,且改值要与声明部分 一致,也可以是通过 out 类型的参数带出的变量 |
SQL 语句(DML 或 SELECT)中不可调用存储过程 | SQL 语句(DML 或 SELECT)中可以调用函数 |
使用存储过程需要:
1)先定义存储过程
2)使用已经定义好的存储过程
分表:针对每个时间周期产生大量的数据,可考虑采用一定的策略将数据存到多个数据表中
分库:将系统按照模块相关的特征分布到不同的数据中,以提高系统整体的负载能力
数据库笛卡尔问题:数据库表连接数据,使用叉乘的方法
范式
范式是符合某一种级别的关系模型的集合。关系数据库中的关系必须满足一定更多要求。
第一范式(1NF):
数据库中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑性、日期型等。
定义:如果一个关系模式 R 的所有属性都是不可分的基本数据项,则 R 属于 1NF。
例如,下面的数据库表是符合第一范式的:字段 1 字段 2 字段 3 字段 4
而这样的数据库表是不符合第一范式的:字段 1 字段 2 字段 3 字段 4 字段 3.1 字段 3.2
很显然,在当前的任何关系数据库管理系统(DBMS)中,谁也不可能做出不符合第 一范式的数据库,因为这些 DBMS 不允许你把数据库表的一列再分成二列或多列。因此,想 在现有的 DBMS 中设计出不符合第一范式的数据库都是不可能的。
第二范式(2NF):
数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。
假定选课关系表为 SelectCourse(学号,姓名,年龄,课程名称,成绩,学分), 关键字 为组合关键字(学号,课程名称), 因为存在如下决定关系: (学号,课程名称) → (姓名,年龄,成绩,学分) 这个数据库表不满足第二范式, 因为存在如下决定关系: (课程名称) → (学分) (学号) → (姓名,年龄) 即存在组合关键字中的字段决定非关键字的情况。 由于不符合 2NF,这个选课关系表会存在如下问题: (1) 数据冗余: 同一门课程由 n 个学生选修,"学分"就重复 n-1 次;同一个学生选修了 m 门课程,姓 名和年龄就重复了 m-1 次。 (2) 更新异常: 若调整了某门课程的学分,数据表中所有行的"学分"值都要更新,否则会出现同一门 课程学分不同的情况。 (3) 插入异常: 假设要开设一门新的课程,暂时还没有人选修。这样,由于还没有"学号"关键字,课 程名称和学分也无法记录入数据库。 (4) 删除异常: 假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是, 与此同时,课程名称和学分信息也被删除了。很显然,这也会导致插入异常。 把选课关系表 SelectCourse 改为如下三个表: 学生:Student(学号,姓名,年龄); 课程:Course(课程名称,学分); 选课关系:SelectCourse(学号,课程名称,成绩)。 这样的数据库表是符合第二范式的, 消除了数据冗余、更新异常、插入异常和删除异常。 另外,所有单关键字的数据库表都符合第二范式,因为不可能存在组合关键字。
第三范式(3NF)
在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则 C 传递函数依赖于 A。因此,满足第三范式的数据库表应该不存在如下依赖关系:关键字段 → 非关键字段 x → 非关键字段 y
假定学生关系表为 Student(学号,姓名,年龄,所在学院,学院地点,学院电话),关键字为单一关键字"学号",因为存在如下决定关系:
(学号) → (姓名,年龄,所在学院,学院地点,学院电话) 这个数据库是符合 2NF 的,但是不符合 3NF,
因为存在如下决定关系: (学号) → (所在学院) → (学院地点,学院电话)
即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖。
它也会存在数据冗余、更新异常、插入异常和删除异常的情况,读者可自行分析得知。
把学生关系表分为如下两个表:
学生:(学号,姓名,年龄,所在学院);
学院:(学院,地点,电话)。
这样的数据库表是符合第三范式的,消除了数据冗余、更新异常、插入异常和删除异常。
鲍依斯-科得范式(BCNF)
在第三范式的基础上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合第三范式。
假设仓库管理关系表为 StorehouseManage(仓库 ID,存储物品 ID,管理员 ID,数量),且有一个管理员只在一个仓库工作,一个仓库可以存储多种物品。
这个数据库表中存在如下决定关系:
(仓库 ID,存储物品 ID) →(管理员 ID,数量)
(管理员 ID,存储物品 ID) → (仓库 ID,数量)
所以(仓库 ID,存储物品 ID)和(管理员 ID,存储物品 ID)都是 StorehouseManage 的候选关键字,表中的唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:
(仓库 ID) → (管理员 ID)
(管理员 ID) → (仓库 ID)
即存在关键字段决定关键字段的情况,所以其不符合 BCNF 范式。
它会出现如下异常情况:
(1) 删除异常: 当仓库被清空后,所有"存储物品 ID"和"数量"信息被删除的同时,"仓库 ID"和"管理员 ID"信息也被删除了。
(2) 插入异常: 当仓库没有存储任何物品时,无法给仓库分配管理员。
(3) 更新异常: 如果仓库换了管理员,则表中所有行的管理员 ID 都要修改。 把仓库管理关系表分解为二个关系表:
仓库管理:StorehouseManage(仓库 ID,管理员 ID);
仓库:Storehouse(仓库 ID,存储物品 ID,数量)。
这样的数据库表是符合 BCNF 范式的,消除了删除异常、插入异常和更新异常。
三级模式
自主存储控制和强制存储控制区别
公共秘钥和传统秘钥的区别和优势
公共密钥密码术利用两个密钥取代常规的一个密钥:
一个公共密钥被用来加密数据,
而另一个私人密钥被用来解密数据。
这两个密钥在数字上相关,但是即便使用许多计算机协同运算,要想从公共密钥中逆算出对应的私人密钥也是不现实的。 发送和接收数据的双方,使用相同的或对称的密钥对明文进行加密解密运算的加密方法。
传统密码的缺点:
(1)收发双方持有相同密钥,密钥分配困难。KE=KD
(2)不能方便的实现数字签名,应用不方便。(数字签名概念下面有)
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上 的普通的物理签名,但是使用了公钥加密领域的技术来实现 的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。
与传统加密方法相比,公共密钥加密系统具有以下三个比较突出的优点:
①用户可以把用于加密的密钥,公开地分发给任何用户。
谁都可以使用这把公共的加密密钥与该用户秘密通信。除了持有解密密钥的收件方用户外,没有人能够解开密文。这样,传统加密方法中令人头痛的、代价沉重的密钥分发问题就转变为一个性质 完全不同的公共密钥分发问题。
②公共密钥加密系统允许用户事先把公共密钥发表或刊登出来。
例如,用户可以把它和电话号码、产品说明等一起刊登出来,让任何人都可以查找并使用。这使得公共密钥应 用的范围不再局限于信息加密,还可以应用于身份鉴别、权限区分等各种领域。例如, 大家熟知的各种应用软件,如 Windows 95/98 等系统安装时需要的产品序列号,其实就是公共密钥,它通常印在产品授权书的封面或封底上,供安装时鉴别用户的授权身份。
③公共密钥加密不仅改进了传统加密方法,而且还提供了传统加密方法所不具备的应用,即数字签名的公开鉴定系统。
orm
对象-关系映射(OBJECT/RELATIONALMAPPING,简称 ORM),是随着面向对象的软件开发方法发展而产生的。用来把对象模型表示的对象映射到基于SQL的关系模型数据库结构中去。这样,我们在具体的操作实体对象的时候,就不需要再去和复杂的 SQL语句打交道,只需简单的操作实体对象的属性和方法。ORM 技术是在对象和关系之间提供了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化 。
Sql 优化
在表中建立索引,优先考虑 where、group by 使用到的字段。
尽量避免使用 select * ,返回无用的字段会降低查询效率。
SELECT * FROM t
优化方式:使用具体的字段代替*,只返回使用到的字段
尽量避免使用 in 和 not in,会导致数据库引擎放弃索引进行全表扫描。
SELECT * FROM t WHERE id IN (2,3)
SELECT * FROM t1 WHERE username IN (SELECT username FROM t2)
优化方式:
如果是连续数值,可以用 between 代替。
如下: SELECT * FROM t WHERE id BETWEEN 2 AND 3
如果是子查询,可以用 exists 代替。
如下: SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t2 WHERE t1.username = t2.username)
尽量避免使用or,会导致数据库引擎放弃索引进行全表扫描
SELECT * FROM t WHERE id = 1 OR id = 3
优化方式:可以用 union 代替 or。如下:
SELECT * FROM t WHERE id = 1 UNION SELECT * FROM t WHERE id = 3 (PS:如果 or 两边的字段是同一个,如例子中这样。貌似两种方式效率差不多,即使 union 扫描的是索引,or 扫描的是全表)
尽量避免在字段开头模糊查询,会导致数据库引擎放弃索引进行全表扫描。如下:
SELECT * FROM t WHERE username LIKE '%li%'
优化方式:尽量在字段后面使用模糊查询。如下:
SELECT * FROM t WHERE username LIKE 'li%
尽量避免进行 null 值的判断,会导致数据库引擎放弃索引进行全表扫描。如下:
SELECT * FROM t WHERE score IS NULL
优化方式:可以给字段添加默认值 0,对 0 值进行判断。如下:
SELECT * FROM t WHERE score = 0
尽量避免在 where 条件中等号的左侧进行表达式、函数操作,会导致数据库引擎放弃索 引进行全表扫描。如下:
SELECT * FROM t2 WHERE score/10 = 9 SELECT * FROM t2 WHERE SUBSTR(username,1,2) = 'li'
优化方式:可以将表达式、函数操作移动到等号右侧。如下:
SELECT * FROM t2 WHERE score = 10*9 SELECT * FROM t2 WHERE username LIKE 'li%'
当数据量大时,避免使用 where 1=1 的条件。通常为了方便拼装查询条件,我们会默认 使用该条件,数据库引擎会放弃索引进行全表扫描。如下:
SELECT * FROM t WHERE 1=1
优化方式:用代码拼装 sql 时进行判断,没 where 加 where,有 where 加 and。
关系代数
是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。
关系代数的运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括四类: 集合运算符、专门的关系运算符、算术比较符和逻辑运算符比较运算符和逻辑运算符是用来辅 助专门的关系运算符进行操作的,所以按照运算符的不同,主要将关系代数分为传统的集合运 算和专门的关系运算两类。有并、交、差、除、笛卡尔积等运算。
触发器的作用
触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会 导致该表触发器被触发。
例如:创建一个触发器,当插入或更新成绩列时,检查插入的数据是否在合法范围内
索引的作用以及优缺点
索引就一种特殊的查询表,数据库的搜索
优点可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。
缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
什么字段适合建索引
唯一、不为空、经常被查询的字段
索引类型
逻辑上:单行索、 多行索引、唯一索引、 非唯一索引、函数索引、域索引
物理上:分区索引、非分区索引
B-tree :正常型 B 树、反转型 B 树 Bitmap 位图索引
锁
在所以的 DBMS 中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。
视图:是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改会影响基本表。它使得我们获取数据更容易,相比多表查询。
表和视图的关系
视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图的相关数据。表就是关系数据库中实际存储数据用的。
视图优缺点:
游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。
列举几种表连接方式,有什么区别?
内连接、自连接、外连接(左右全)、交叉连接
主键和外键的区别?
主键在本表中是唯一的、不可为空的,
外键可以重复、可以为空
外键和另一张表的主键关联,不能创建对应表中不存在的外键
union和union all有什么不同?
Union在进行表链接后会筛选掉重复的记录,所有在表链接后会对所产生的 结果进行排序运算,删除重复的记录再返回结果。实际大部分应用中不会产生重复的记录,最常见的是过程表与历史表Union。
Union all 只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上说,Union all要比union快得多,所以,如果可以去人合并的两个结果集中不包含重复的数据的话,就使用union all。
Varchar2 和 varchar 有什么区别?
1.长度上的区别
char的长度是固定的,而varchar2的长度是可以变化的。
比如,表示你存储的字符将占 20 个字节,包含 17 个空,而同样的 varchar2(20)只占了 3 个字节,20 只是最大值,当你存储的字符小于 20 时,按实际长度存储。 char 的效率要比 varchar2 的效率高。
2.意义上的区别
目前 varchar 是 varchar2 的同义词,工业标准的 varchar 类型可以存储空字符串,但Oracle ['ɔrək(ə)l] 自己开发了一个数据类型 varchar2,这个类型不是一个标准的 varchar,他将在数据库中 varchar 列可以存储空字符串的 特性改为存储 null 值,如果你想有向后兼容的能力,oracle 建议使用 varchar2 而不是 varchar。
3.空间大小上的区别
Varchar2比char要节省空间,varchar2效率也比char差一些,所以如果想获得效率,就必须牺牲一定的空间,以空间换效率。VARCHAR2虽然比CHAR节省空间,但如果一个VARCHAR2列经常被修改,且每次被修改数据的长度不同会引起‘行迁移’现象。
Oracle 和 Mysql 的区别?
1)库函数不同。
2)Oracle 是用表空间来管理的,Mysql 不是。
3)显示当前所有的表、用户、改变连接用户、显示当前连接用户、执行外部脚本的语句的不同。
4)分页查询时候,mysql 用 limit,oracle 用 rownum
select * from (select t.,rownum row_num from mytable t) b where b.row_num between 1 and 10
select * from ( select a., rownum rn from mytable a where rownum <= 10 ) where rn >= 1
select * from scott.emp where rowid in (select rd from (select rowid as rd ,rownum as rn from scott.emp ) where rn<=6 and rn>3)
从数据库中随机取50条
select * from (select * from t_example order by dbms_random.random) where rownum <= 50
Oracle 语句有多少类型
Oracle 语句分三类:DDL、DML、DCL。
order by 与 group by 的区别
order by 排序查询,group by 分组查询
order by:默认是ASC,按升序排列,DESC降序排列。order by执行后会进行全表扫描,降低性能,如果数据量特别大的时候,要排序的话尽量按照组合索引中的字段进行order by。后面可以跟多个字段,优先级按先后顺序。
group by:把相同的列放到一组。group by的实现过程除了要使用排序操作外,还要进行分组操作。group by操作想要利用索引,必须满足group by字段必须同时存放于同一个索引中,且该索引是一个有序索引,而且,使用不同的聚合函数也会影响是否使用索引来实现group by操作。
having 只能用于 group by 子句、 作用于组内,having 条件子句可以直接跟函数表达式。使用 group by 子句的查询语句需要使用聚合函数。
commit 在哪里会运用
oracle 的 commit 就是 DML 语句提交数据,在未提交前你前面的操作更新的都是内存,没有更新到物理文件中。 执行 commit 从用户角度讲就是更新到物理文件了,事实上 commit 时还没有写 date file,而是记录了 redo log file,要从内存写到 data 物理文 件,需要触发检查点,由 DBWR 这个后台进程来写,可理解成commit即为从内存更新到物理文件
行转列、列换行怎么转
1)使用decode函数
2)使用case when语句
什么是PL/SQL?
PL/SQL是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 PL/SQL 的。
序列的作用
Oracle使用序列来生成唯一编号,用来处理一个表中自增字段。 Oracle序列是原子对象,并且是一致的。也就是说,一旦您访问一个序列号,Oracle将在处理下一个请求之前自动递增下一个编号,从而确保不会出现重复值。
oracle基本数据类型
1)字符串类型 char、nchar、varchar、varchar2、nvarchar2
2)数字类型 number、integer
3)浮点类型 binary_float、binary_double、float
4)日期类型 date、 timestamp
5)LOB类型 blob、clob、nclob、bfile 。存储大对象的数据类型,如医学记录(如X-射线)、视频、图像等。
CLOB:存储大量、单字节、字符数据,存储在内部表空间,用于存储字符串类型的Lob,如文本和XML文件等,字符串已数据库字符集编码。
NLOB:存储定宽、多字节、字符数据,多字节国家字符数据,存储在内部表空间。
BLOB:存储较大无结构的二进制数据,存储在内部表空间。
BFILE:将二进制文件存储在数据库外部的操作系统文件中。存放文件路径。数据库存储一个执行外部文件的指针,所以它是只读的。
truncate与 delete区别
TRUNCATE['trʌŋ.keɪt] TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。
TRUNCATE TABLE
:删除内容、释放空间但不删除定义。DELETE TABLE
: 删除内容不删除定义,不释放空间。DROP TABLE
:删除内容和定义,释放空间。oracle获取系统时间
select to_char(sysdate, 'yyyy-MM-dd HH24:mi:ss') from dual;
oracle怎么去除去重
使用distinct关键字。
distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。
select distinct 字段名1,字段名2 from 表格 order by 字段名
select *, count(distinct name) from table group by name
数据独立性
指应用程序和数据结构之间相互独立、互不影响。在三层模式体系结构中数据独立性是指数据库系统在某一层次模式上的改变不会使它的上一层模式也发生改变的能力。数据独立性包括数据逻辑独立性和数据物理独立性。
物理独立性
是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。即数据在磁盘上怎样存储由 DBMS 管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变。
逻辑独立性
是指用户的应用程序与数据库的逻辑结构是相互独立的,即当数据的逻辑结构改变时,用户程序也可以不变。
数据模型
是数据特征的抽象。数据(Data)是描述事物的符号记录,模型(Model)是现实世界的抽象。数据模型是对现实世界数据特征的模拟和抽象
概念模型
(Conceptual Data Model),是一种面向用户、面向客观世界的模型,主要用来描述世界的概念化结构,它是数据库的设计人员在设计的初始阶段,摆脱计算机系统及DBMS的具体技术问题,集中精力分析数据以及数据之间的联系等,与具体的数据管理系统(Database Management System,简称DBMS)无关。概念数据模型必须换成逻辑数据模型,才能在DBMS中实现 。逻辑模型
(Logical Data Model),是一种面向数据库系统的模型,是具体的 DBMS 所支持的数据模型,如网状数据模型(Network Data Model)、层次数据模型(Hierarchical Data Model)等等。此模型既要面向用户,又要面向系统,主要用于数据库管理系统(DBMS)的实现。物理模型
(Physical Data Model),是一种面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的 DBMS 有关,而且还与操作系统和硬件有关。每一种逻辑数据模 型在实现时都有其对应的物理数据模型。DBMS 为了保证其独立性与可移植性,大部分物理数据模型的实现工作由系统自动完成,而设计者只设计索引、聚集等特殊结构。having 和 where 的联系与区别?
联系:都用去筛选
区别:where是一个约束声明,使用where来约束老子数据库的数据;where是在结果返回之前起作用的;whrere中不能使用聚合函数(如SUM, COUNT, MAX, AVG);where不需要分组,在分组前过滤数据
having是一个过滤声明;在查询返回结果集后对查询结果进行的过滤操作;在having中可以使用聚合函数。having要配合group by使用,在分组后过滤数据。
where在group by之前执行 ,having在group by之后执行。
规范化理论
用来改造关系模式,通过分解关系模式来消除其中不适合的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。
是数据库逻辑设计的指南和工具,具体表现在三个方面:
函数依赖是唯一确定的关系,例如在一个表授课(课程号,课程名,课程学分,教师 号,教师姓名,参考书号,参考书名)。当然这个表的主键是(课程号,教师号,参考 书号)课程名和课程学分函数依赖课程号,也就是说课程号唯一确定名字和学分;同 理,教师姓名函数依赖教师号;参考书名函数依赖参考书号。但是,教师号可能多值 依赖课程号,因为给定一个(课程号,参考书号)的组合,可能有对应多个教师号。 这是因为多个老师可以使用相同或不同的参考书上同一门课。 简单点讲,函数就是唯 一确定的关系;多值依赖却不能唯一确定。
从已知的一些函数依赖,可以推导出另外一些函数依赖,这就需要一系列推理规则,这些规则常被称作“Armstrong 公理”
。
数据库设计(Database Design)
是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统DBMS 常用存取方式:
共享锁【S 锁】 又称读锁,若事务 T 对数据对象 A 加上 S 锁,则事务 T 可以读 A 但不能修改 A,其他事务只能再对 A 加 S 锁,而不能加 X 锁,直到 T 释放 A 上的 S 锁。这保证了其他事务可以读 A,但在 T 释放 A 上的 S 锁之前不能对A做任何修改。
排他锁【X 锁】 又称写锁。若事务 T 对数据对象 A 加上 X 锁,事务 T 可以读 A 也可以修改 A,其他事务不能再对 A 加任何锁,直到 T 释放 A 上的锁。这保证了其他事务在 T 释放 A 上的锁之前不能再读取和修改 A。
关系数据库
是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据,同时也是一个被组织成一组拥有正式描述性的表格,该形式的表格作用 的实质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存取或重新 召集而不需要重新组织数据库表格。关系数据库的定义造成元数据的一张表格或造成表格、 列、范围和约束的正式描述。每个表格(有时被称为一个关系)包含用列表示的一个或更多的数据种类。 每行包含一个唯一的数据实体,这些数据是被列定义的种类。当创造一个关系数据库的时候,你能定义数据列的可能值的范围和可能应用于那个数据值的进一步约束。 而 SQL 语言是标准用户和应用程序到关系数据库的接口。
其优势是容易扩充,且在最初的数据库创造之后,一个新的数据种类能被添加而不需要修改所有的现有应用软件。主流的关系数据库有 oracle、db2、sqlserver、sybase、mysql 等。
操作
◇查询:选择、投影、连接、除、并、交、差
◇数据更新:插入(insert)、删除(delete)、修改(update)
DBMS 支持哪几种数据模型?SQL 的四个组成部分是什么?
常用的是层次模型,网状模型和关系模型
(最重要)
SQL的四个组成部分:
模式定义
语言(Database schema definition language)DDL:create用来创建数据库中的各种对象——表、视图、索引、同义词、聚簇等查询
语言(Data query language)dql:基本结构是由SELECT子句,FROM子句和WHERE子句组成的查询块操纵
语言(data manipulation language)dml:插入INSERT、更新UPDATE和删除DELETE控制
语言(Data control language)dcl:用来授予或回收访问数据库的某种特权,并控制数据库操纵事物发生的时间和效果,对数据库实行监视等介绍下有哪些应用数据库?
SQL数据库,DB2数据库,access 数据库,Oracle 数据库等等。
什么是数据独立性。
数据独立性是指包括物理独立性和逻辑独立性。
物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。
逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即,当数据的逻辑结构改变时,用户程序也可以不变。
DBMS支持那几种数据模型
层次模型、网状模型、关系模型、面向对象模型?
数据库:索引的优缺点,什么是事务,事务的特性
关系与关系模式、关系数据库的区别:
关系实际上就是关系模式
数据库的关系操作有哪些,各有什么作用
数据库保护(访问)的内容有哪些
INF 是啥数据模式
数据库管理员的作用是什么
DBA的职责是什么
在可变分区管理需要哪些硬件机制
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。