面试题首页 > 数据库面试题

数据库原理面试题

001数据、数据库、数据库管理系统和数据库系统概念?

数据:是数据库中存储的基本对象,在计算机中的概念是广义的,描述事物的符号记录称为数据,比如你手机里的音乐、文档和图形都是数据。
数据库:数据库(Database,DB),简单的来讲就是存放数据的仓库,严格来讲,是长期存储在计算机内,有组织、可共享的大量数据集合。
数据库管理系统:数据库管理系统(Database Management System,DBMS)是位于用户与操作系统之间的一层数据管理软件,用来定义数据,管理数据。
数据库系统:数据库系统由数据、数据库、数据库管理系统(及其开发应用工具)、应用程序和数据库管理员(DBA)组成的存储、管理、处理和维护数据的系统,人们通常把它简称为数据库。

002数据模型的分类有哪些?

物理模型是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方法,或在磁盘或磁带上的存储方式和存储方法,是面向计算机系统的。
概念模型实际上是现实世界到机器世界的一个中间层次,用于信息世界的建模,是现实世界到信息世界的第一层抽象。
逻辑模型是按计算机系统的观点对数据建模,主要用于数据库管理系统的实现。常用的逻辑模型主要有层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型和半结构化数据模型。

003概念模型中有一些基本术语。

004简述关系型与非关系型数据库的区别?

关系型数据库是依据关系模型来创建的数据库,所谓关系模型就是“一对一”、“一对多”、“对多对”等。常见的关系型数据库有Oracle、MySQL、SQL Server等。
非关系型数据库主要基于“非关系型模型”,其中非关系型模型有:列模型、键值对模型、文档类模型。比如redis属于键值对模型。

005关系型数据库的优点和缺点?

优点
易于维护:都是使用表结构,格式一致。
使用方便:SQL语言通用,可用于复杂查询。
复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点
读写性能比较差,尤其是海量数据的高效率读写。
固定的表结构,灵活度稍欠。
高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。

006非关系型数据库的优点和缺点?

优点
格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
速度快:nosql可使用硬盘或者随机存储器作为载体,关系型数据库只能使用硬盘。
高拓展性
成本低:nosql数据库部署简单,基本都是开源软件。
缺点
不提供sql支持,学习和使用成本较高。
无事务处理。
数据结构相对复杂,复杂查询方面稍欠。

007E-R模型是什么?

E-R模型是使用E-R图来描述现实世界的概念模型,是描述概念模型的有力工具。

008两个实体之间的关系?

● 1对1(1:1),比如一个客户只有一个会员卡,一个会员卡属于一个客户
● 1对多(1:n),比如一个系有多个班级,一个班级属于一个系
● 多对多(n:m) ,比如一个学生可以选修多门课程,一门课程可以支持多名同学参加

009数据库设计三范式?

第一范式:每个表都应该有主键,并且每个字段要求原子性不可再分。
如以下表存在可再分项(高级职称),所以不满足第一范式。

第二范式:建立在第一范式基础之上,所有非主键字段必须完全依赖主键,不能产生部分依赖。
举例如关系模型(职工号,姓名,职称,项目号,项目名称)中,职工号->姓名,职工号->职称,而项目号->项目名称。显然依赖关系不满足第二范式,常用的解决办法是差分表格,比如拆分为职工信息表和项目信息表。
第三范式:建立在第二范式基础之上,所有非主键字段必须直接依赖主键,不能产生传递依赖。
比如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话)这样一个表结构,就存在上述关系。 学号--> 所在院校 --> (院校地址,院校电话)。我们应该拆开来,如下:(学号,姓名,年龄,性别,所在院校)--(所在院校,院校地址,院校电话)
设计范式的最终目的是:减少数据的冗余。但在实际的开发中,我们以满足客户的需求为目的,有的时候也会拿冗余来换取速度。(建议把这句话说上,体现工作经验)

010MySQL和Oracle的区别?

1)MySQL是一个轻量级的关系型数据库(开源),Oracle是一个重量级的关系型数据库(收费)
2) MySQL支持自增主键(auto increment),而Oracle支持序列
3)MySQL占内存小,Oracle占内存大
4)MySQL字符串用双引号,Oracle用单引号
5)MySQL分页用limit,Oacle使用rownum表名位置,而且只能用小于
6)MySQL用0、1判断真假,Oracle用true、false
7)MySQL的事务级别是repeatable read,oracle的事务隔离性是read committed

011左连接、右连接、笛卡尔积、全连接和内连接的区别?

● 左连接(左外连接):以左表作为基准进行查询,左表数据会全部显示出来,右表如果和左表数据不匹配则显示为null。
● 右连接(右外连接):以右表作为基准进行查询,右表数据会全部显示出来,左表如果和右表的数据不匹配则显示为null。
● 全连接:先以左表进行左外连接,再以右表进行右外连接。
● 内连接:显示表之间有连接匹配的所有行。
● 笛卡尔积也叫交叉连接

012SQL语言包括哪些类型?

数据定义:Create Table,Alter Table,Drop/Truncate Table, Create/Drop Index
数据操纵:Select ,Insert,Update,Delete
数据控制:Grant,Revoke

013SQL 约束有哪几种?

NOT NULL: 用于控制字段的内容一定不能为空(NULL)。
UNIQUE: 控件字段内容不能重复,一个表允许有多个 Unique 约束。
PRIMARY KEY: 也是用于控件字段内容不能重复,但它在一个表只允许出现一个。
FOREIGN KEY: 用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
CHECK: 用于控制字段的值范围。

目录

返回顶部