数据库面试知识点总结

数据库面试重点
  1. 什么是E—R图?实体关系有哪些?
  • E-R图是实体关系图,它提供了表示实体型、属性和联系的方法。
  • 实体关系:
    • 一对一(1:1)
    • 一对多(1:n)
    • 多对多(m:n)
  1. 范式有哪些?分别解决什么问题?
  • 第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
    • 1NF:表中不能套表(数据不可分割)
    • 2NF:非主属性完全依赖于主键
    • 3NF:消除传递依赖
  1. 表的连接方式有哪些?
  • 共3种连接方式,内连接、外连接、交叉连接。
    • 内连接
      • 等值连接 在连接条件中使用=
      • 不等值连接 在连接条件中不使用=
      • 自然连接(不常用)
      • 自连接(不常用)
    • 外连接
      • 左外连接(LEFT)
      • 右外连接(RIGHT)
      • 全连接(FULL)
    • 交叉连接(CROSS)
  1. 数据库中能否表达多对多关系?
    不能。
  2. 内连接和外连接有何区别?
  • 内连接:内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。
  • 外连接:针对的是外键取值为空的情况(非强制关系)。
  1. 多表连接的SQL语句?
  1. 将一个的数据写入另一个表?用一句SQL语句实现。
INSRERT INTO empab SELECT empno,ename FROM emp;
  1. 视图的作用是什么?
  • 简化查询
  • 限制对数据的访问(保护数据)
  1. 索引的优缺点?Oracle索引分类?索引放在哪里?
  • 优点:提高了查询的速度。缺点:降低了插入和删除的作用。
  • B-树索引(二叉树);位图索引
  • 索引建立在某个字段上。(经常按某个字段查询,就在该字段建立索引。)
  1. 写出建表的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)
	); /*建立学生表*/
  1. 如何修改表的字段名、表名?
  • 修改字段名
	ALTER TABLE student MODIFY score VARCHAR2(3);
  • 修改表名
	RENAME student TO stu;/*方法一*/
	ALTER TABLE student RENAME TO stu;/*方法二*/
  1. 数据库的约束条件有哪些?
  • 主键约束
  • 外键约束
  • 非空约束
  • Unique 唯一约束
  • Check约束 检查约束
  1. 什么是事务?事务的属性有哪些?如何提交事务?如何回退事务?
  • 事务(Transaction)就是一组SQL语句,这组SQL语句是一个逻辑工作单元,也可以认为事务是一组不可分割的SQL语句。
  • 事物的属性
    (1)原子性(Atomicity):事务中的所有SQL语句的执行是不可分割的
    (2)一致性(Consistency):确保数据库的状态是一致的,事务开始时,数据库的状态 是一致的;在事务结 束时候,数据库的状态也是一致的
    (3)隔离性(Isolation):多个事务可以独立运行,彼此不产生影响
    (4)持久性: (Durability):一旦事务提交,数据库的变化就会永久地保留下来
  • 提交事务: COMMIT;
  • 回滚或回退事务: ROLLBACK;
  1. DB和DBMS?
  • DB:数据库。
  • DBMS:数据库管理系统,包含很多个数据库。
  1. char和varchar的区别?
  • CHAR存储定长数据,CHAR字段上的索引效率级高;
  • VARCHAR存储变长数据,但存储效率没有CHAR高;
  • 从空间上考虑,用varchar合适;从效率上考虑,用char合适。
  1. UNION和UNION ALL有何区别?
  • Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
  • Union All:对两个结果集进行并集操作,包括重复行,不进行排序;
  • Union在进行表连接后会筛选掉重复的记录,所以在表连接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
  • 而Union all只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
  1. Oracle、Mysql和Microsoft SQL Server的区别?
    简单来说——
    Oracle:最贵,功能最多,安装最不方便,Oracle环境里的其他相关组件最多,支持平台数量一般,使用中等方便,开发中等方便,运维中等方便,不开源,速度最慢,最安全。
    Microsoft SQL Server:中等贵,功能最少,安装中等方便,Microsoft SQL Server环境里的其他相关组件最少,支持平台最少,使用最方便,开发最方便,运维最方便,不开源,速度中等,一般安全。
    Mysql:免费,功能中等,安装最方便,Mysql环境里的其他相关组件数量中等,支持平台最多,使用最不方便,开发最不方便,运维最不方便,有开源版本,速度最快,最不安全。

    参见:https://www.zhihu.com/question/19866767

  2. Oracle语句类型?
  • DDL:数据定义语言(Data Defined Language)
    • 包括:创建数据库,建表、修改表等。
  • DML:数据操纵语言(Data Manipulation Language)
    • 包括:INSERT、UPDATE、DELETE
  • DCL:数据控制语言(Data Control Language)。
    • 包括:GRANT、REVOKE、DENY
  • DQL:数据查询语言(Data Query Language)
    • 包括:SELECT…
  • TCL:事务控制语言(Transaction Control Language)。
    • 包括:提交事务(COMMIT);回退事务(ROLLBACK)。
  1. 什么是PL/SQL?
  • PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。

    百度百科:https://baike.baidu.com/item/PL/SQL

  1. 序列的作用?
  • 生成不重复的数字,一般用于给主键赋值。
  1. 表和视图的关系?
  • 视图是基于表建立的,视图相当于一个SQL查询语句。基于该表所创建的视图,称之为该视图的基表。
  1. 数据库怎样实现每隔30分钟备份一次?
  • 通过操作系统的定时任务调用脚本或通过程序导出数据库。
  1. 比较TRUNCATE和DELETE区别?
  • TRUNCATE TABLE
    • 删除表中的所有行,但表结构及其列、约束、索引等保持不变。
  • DELETE
    • 执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值