数据库面试重点
- 什么是E—R图?实体关系有哪些?
- E-R图是实体关系图,它提供了表示实体型、属性和联系的方法。
- 实体关系:
- 范式有哪些?分别解决什么问题?
- 第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
- 1NF:表中不能套表(数据不可分割)
- 2NF:非主属性完全依赖于主键
- 3NF:消除传递依赖
- 表的连接方式有哪些?
- 共3种连接方式,内连接、外连接、交叉连接。
- 内连接
- 等值连接 在连接条件中使用=
- 不等值连接 在连接条件中不使用=
- 自然连接(不常用)
- 自连接(不常用)
- 外连接
- 左外连接(LEFT)
- 右外连接(RIGHT)
- 全连接(FULL)
- 交叉连接(CROSS)
- 数据库中能否表达多对多关系?
不能。 - 内连接和外连接有何区别?
- 内连接:内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。
- 外连接:针对的是外键取值为空的情况(非强制关系)。
- 多表连接的SQL语句?
- 将一个的数据写入另一个表?用一句SQL语句实现。
INSRERT INTO empab SELECT empno,ename FROM emp;
- 视图的作用是什么?
- 索引的优缺点?Oracle索引分类?索引放在哪里?
- 优点:提高了查询的速度。缺点:降低了插入和删除的作用。
- B-树索引(二叉树);位图索引
- 索引建立在某个字段上。(经常按某个字段查询,就在该字段建立索引。)
- 写出建表的DDL语句?(尤其是两张表有连接的建表语句)
CREATE TABLE student(
studentid varchar2(20) PRIMARY KEY,
classid varchar2(20) NOT NULL FORIGN KEY REFERENCES calsses(classid),
sname VARCHAR2(10) NOT NULL,
sex CCHAR(2),
birthdate DATE,
score number NOT NULL,
mobile VARCHAR2(11) ,
CONSTRAINT unique_mobile UNIQUE (mobile),/*独立指定*/
CONSTRAINT pk_student PRIMARY KEY(studentid),
CONSTRAINT ck_score CHECK(score>=2.0),
CONSTRAINT fk_student FOREAGN KEY(classid) REFERENCES classes(classid)
); /*建立学生表*/
- 如何修改表的字段名、表名?
ALTER TABLE student MODIFY score VARCHAR2(3);
RENAME student TO stu;/*方法一*/
ALTER TABLE student RENAME TO stu;/*方法二*/
- 数据库的约束条件有哪些?
- 主键约束
- 外键约束
- 非空约束
- Unique 唯一约束
- Check约束 检查约束
- 什么是事务?事务的属性有哪些?如何提交事务?如何回退事务?
- 事务(Transaction)就是一组SQL语句,这组SQL语句是一个逻辑工作单元,也可以认为事务是一组不可分割的SQL语句。
- 事物的属性
(1)原子性(Atomicity):事务中的所有SQL语句的执行是不可分割的
(2)一致性(Consistency):确保数据库的状态是一致的,事务开始时,数据库的状态 是一致的;在事务结 束时候,数据库的状态也是一致的
(3)隔离性(Isolation):多个事务可以独立运行,彼此不产生影响
(4)持久性: (Durability):一旦事务提交,数据库的变化就会永久地保留下来 - 提交事务: COMMIT;
- 回滚或回退事务: ROLLBACK;
- DB和DBMS?
- DB:数据库。
- DBMS:数据库管理系统,包含很多个数据库。
- char和varchar的区别?
- CHAR存储定长数据,CHAR字段上的索引效率级高;
- VARCHAR存储变长数据,但存储效率没有CHAR高;
- 从空间上考虑,用varchar合适;从效率上考虑,用char合适。
- UNION和UNION ALL有何区别?
- Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
- Union All:对两个结果集进行并集操作,包括重复行,不进行排序;
- Union在进行表连接后会筛选掉重复的记录,所以在表连接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
- 而Union all只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
- Oracle、Mysql和Microsoft SQL Server的区别?
简单来说——
Oracle:最贵,功能最多,安装最不方便,Oracle环境里的其他相关组件最多,支持平台数量一般,使用中等方便,开发中等方便,运维中等方便,不开源,速度最慢,最安全。
Microsoft SQL Server:中等贵,功能最少,安装中等方便,Microsoft SQL Server环境里的其他相关组件最少,支持平台最少,使用最方便,开发最方便,运维最方便,不开源,速度中等,一般安全。
Mysql:免费,功能中等,安装最方便,Mysql环境里的其他相关组件数量中等,支持平台最多,使用最不方便,开发最不方便,运维最不方便,有开源版本,速度最快,最不安全。
参见:https://www.zhihu.com/question/19866767
- Oracle语句类型?
- DDL:数据定义语言(Data Defined Language)
- DML:数据操纵语言(Data Manipulation Language)
- DCL:数据控制语言(Data Control Language)。
- DQL:数据查询语言(Data Query Language)
- TCL:事务控制语言(Transaction Control Language)。
- 包括:提交事务(COMMIT);回退事务(ROLLBACK)。
- 什么是PL/SQL?
- PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。
百度百科:https://baike.baidu.com/item/PL/SQL
- 序列的作用?
- 表和视图的关系?
- 视图是基于表建立的,视图相当于一个SQL查询语句。基于该表所创建的视图,称之为该视图的基表。
- 数据库怎样实现每隔30分钟备份一次?
- 通过操作系统的定时任务调用脚本或通过程序导出数据库。
- 比较TRUNCATE和DELETE区别?
- TRUNCATE TABLE
- 删除表中的所有行,但表结构及其列、约束、索引等保持不变。
- DELETE
- 执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。