面试题 | 数据库笔试题集合·之·数据库章节(1)

    /    2019-08-07

第1章 数据库章节

1.1 选择

1.1.1 Having 子句的作用是(C)。

A.查询结果的分组条件 

B.组的筛选条件 

C.限定返回的行的判断条件 

D.对结果集进行排序 

1.1.2 最常用的一种基本数据模型是关系数据模型,它的表示采用(D) 

A.树 B.网络 

C.图 D.二维表 

1.1.3 数据库系统的核心是(B) 

A.数据模型 B.数据库管理系統 

C.数据库 D.数据库管理员 

1.1.4 关系表中每一横行称为(B) 

A.元组 B.字段 

C.属性 D.码 

1.1.5 数据库管理系统维护中,最重要的是(数据维护) 

程序维护 数据维护 

编码维护 硬件维护 

1.1.6 以下那些不是 NoSQL?

mssql memcached mongodb 

postgresql cassandra 

couchdb redis 

1.1.7 PHP 和 MYSQL 的联合使用解决了(C) 

A 在 proxy 上处理数据库访问问题 

B 在 www 服务器上处理黑客的非法访问问题 

C 在 www 服务器上处理数据库的访问问题 

D 在 sendmail 邮件系统是上处理数据库的访问问题 

1.1.8 以下哪个端口为远程登陆默认端口(3306)

1433 3389 33062 

1.2 填空

1.2.1 如何通过 shell 登录 mysql?(mysql -u -p -h -P)

1.2.2 数据库触发器能监控的触发事件有 监视地点(table) 监视事件(insert/update/delete) 触发时间(after/before) 触发事件(insert/update/delete) 

1.2.3 数据库系统的组成部分有:硬件、软件、数据库、用户、(数据库管理员) 

1.2.4 实现多台交换机或集线器连接在一起只能通过级联的方式(级联复制) 

1.2.5 远程连接 mysql 数据库的命令是什么__mysql -u -p -h -P__

1.2.6 当删除一个数据库后,仅能用__binlog  物理备份__数据重建以前的数据库中的数据。

1.2.7 SQL 中定义别名的三种方法是___列 AS 别名___列 别名___别名= 列___

1.2.8 mysql 服务器默认的监听端口是:_3306__ ,mysql 的配置文件是:_/etc/my.cnf__

1.3 简答

1.3.1 简述 mysql 单机安装过程 

1.在官网下载二进制包 

2. 解压,并修改/etc/my.cnf 文件 

3.初始化数据 

4.启动 

1.3.2 mysql 登录命令 

mysql -u -p -h -P 

1.3.3 说明数据库内存结构中 SGA 和 PGA 的组成,以及这两个内存区存放信息的区别? 

SGA 区由数据缓冲区、共享池、重做日志缓冲区、大型池、JAVA 池构成;PGA 区由排序区、私有 SQL 区以及堆栈构成。

SGA 区是由 Oracle 分配的共享内存结构,包含一个数据库实例共享的数据和控制信息。当多个用户 同时连接同一个实例时,SGA 区数据供多个用户共享,所以 SGA 区又称为共享全局区。用户对数 据库的各种操作主要在 SGA 区中进行。该内存区随数据库实例的创建而分配,随实例的终止而释 放。PGA 区是在用户进程连接数据库,创建一个会话时,由 Oracle 为用户分配的内存区域,保存当 前用户私有的数据和控制信息,因此该区又称为私有全局区。每个服务器进程只能访问自己的 PGA 区,所有服务器进程 PGA 区总和即为实例的 PGA 区的大小。

1.3.4 说明数据库表空间的种类,以及不同类型表空间的作用 

共享表空间,独立表空间。

共享表空间是一个库的数据都存放一个文件内,独立表空间是一个表一个 ibd 与 frm 文件 

1.3.5 mysql 表中的中文字体乱码,原因可能是什么?如何修改 ?

字符集编码问题

ALTER TABLE 表名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 

1.3.6 mysql 忘记密码如何操作?

--skip-grant-tables ----> 跳过授权表(mysql.user) 

--skip-networking ----> 跳过网络用户连接 

1.3.7 请写出目前市场上最常见的 2-5 种关系型数据库厂家,并注明他们产品的最新版和你熟悉的或 者解除过的版本: 

厂家: 最新版本: 熟悉的版本: 接触过的版本 

mysql 5.6 5.7  

Oracle、MsSQL(SQL Server)、PG 

1.3.8 如何修改 mysql 的 root 密码

set password for 用户名@localhost = password('新密码');

1.3.9 请举出几个你熟悉的关系型数据库管理系统和非关系型数据库管理系统,非关系型数据库相比 之下有什么不同之处(好处和不足)? 

关系型:mysql,Oracle;

非关系型:redis,mongodb;

非关系快,操作简单,有几率丢数据 

1.3.10 存储过程与函数的区别?

存储过程是用户定义的一系列 sql 语句的集合,涉及特定表或其它对象的任务,用户可以调用存储 过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户 表。

1.3.11 什么是视图,游标是什么? 

视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图通常是 有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易, 相比多表查询。

游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结 果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理 数据的时候,游标显得十分重要。

1.3.12 你对数据库了解吗?你们公司的数据库是什么样的?

我们公司是高可用 MySQL 及主从架构与读写分离,使用的 MySQL 

1.3.13 你们公司数据库最大连接数是多少? 

目前了解并发不到 2000 

1.3.14 MySQL 数据库 storage engine 中的 myisam、innodb 有什么差别?

myisam 是表级锁,不支持事务,支持温备

innodb 是行级锁,支持事务,自动故障恢复,外键,热备 

1.3.15 请列举几个常见的 nosql db 你最熟悉那个? 

redis memcached mongodb 

1.3.16 简述 where 和 having 的区别?

Where 子句是用来指定 "行" 的条件的,而 Having 子句是指定“组”的条件的

所以 Where 子句 = 指定行所对应的条件

所以 Having 子句 = 指定组所对应的条件

当在 Where 子句和 Having 子句中都可以使用的条件,从语句的执行效率来看,最好写在 Where 子句中。

在使用 Count 函数等对表中的数据进行聚合操作时,DBMS 内部会进行排序处理,而排序操作会增加机器的负担,减少排序的行数,可以增加处理速度。

使用 Where 子句指定条件时,由于排序之前就对数据进行了过滤,所以能够减少排序的数据量。但是 Having 子句是在排序之后才对数据进行分组的,因此与前者相比,需要排序的数据量就要多得多。

第三,使用 Where 子句更具速度优势的另一个理由是,可以对 Where 子句指定条件所对应的列创建 索引,这样可以大幅提高处理速度。 

第四,Where 子句中不能使用聚合函数,而 Having 子句中可以。


往期推荐:

MongoDB入门篇 · 数据库管理系统和NoSQL

MongoDB学习篇:MongoDB是什么?

深入学习MongoDB分片(Sharding)集群技术
MySQL的体系结构和基本管理是怎么样的?

Linux | 关于日志切割,你了解Logrotate吗?

Linux系统优化如何操作?教你看Linux优化体系

内附视频 · Linux | 那些年学习Linux你被坑过的故障集合

内附视频 | 学习Linux云计算运维后选择什么样的工作好呢?

内附视频丨听老男孩谈:大龄IT工程师的出路在哪里?

了解MySQL数据库?看郭导教你如何探索MySQL之路~



(0)

分享至