中移在线数据库面试题(仅根据朋友去面试的基础上总结)

 最近朋友去中移在线面试了数据分析,流程就是先去测评然后一面,在测评进行二面做笔试题,在进行视频面试,以下就是面试官视频面试问到的关于数据库的问题,也有问了关于hadoop及聚类等问题。

1.视图和表的区别与联系

区别:

      1、视图是已经编译好的sql语句,而表不是   

      2、视图没有实际的物理记录,而表有。
      3、表是内容,视图是窗口
      4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改。
      5、表是内模式,试图是外模式
      6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
      7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表(虚拟的表)。 

      8、视图的建立和删除只影响视图本身,不影响对应的基本表。

联系:

视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。

2.主键和索引的区别

定义:

主键:唯一标识一条记录,不能有重复的,不允许为空

外键:表的外键是另一表的主键, 外键可以有重复的, 可以是空值

索引:是对数据库表中一列或多列的值进行排序的一种结构

作用:

主键:用来保证数据完整性

外键:用来和其他表建立联系用的

索引:是提高查询排序的速度

个数:

主键:主键只能有一个

外键:一个表可以有多个外键

索引:一个表可以有多个唯一索引

添加:

主键:ALTER TABLE “表名” ADD PRIMARY KEY (字段名)

外键:ALTER TABLE “表名” ADD FOREIGN KEY (字段名) REFERENCES “另一张表名”( 字段名)

索引:ALTER TABLE “表名” ADD INDEX (字段名)

主键主索引类比,及其他们的作用? 
主键是为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,主键也是一个特殊索引。 
数据表中只允许有一个主键,但是可以有多个索引。 
使用主键数据库会自动创建主索引,也可以在非主键上创建索引,方便查询效率。 
索引可以提高查询速度,它就相当于字典的目录,可以通过它很快查询到想要的结果,而不需要进行全表扫描。 
主键索引外索引的值可以为空。 
主键也可以由多个字段组成,组成复合主键,同时主键肯定也是唯一索引。 
唯一索引则表示该索引值唯一,可以由一个或几个字段组成,一个表可以有多个唯一索引。

3.数据库字段类型

4.如何插入数据记录

INSERT [INTO] tab_name [(col_name,...)] VALUES(val,)

5.升序和降序

SELECT * FROM  table_name  ORDER BY field ASC
SELECT * FROM  table_name  ORDER BY field DESC

解析:

MySQL语句中desc和asc的意思: 
desc是descend 降序意思 
asc 是ascend 升序意思

注意:

1.你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。 
2.你可以设定多个字段来排序。 
3.你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。 
4.你可以添加 WHERE…LIKE 子句来设置条件。

6.选择最大值

sql 语句 获取一列中的最大值使用MAX() 函数

一、MAX 函数功能:返回一列中的最大值。NULL 值不包括在计算中。

二、SQL MAX() 语法:

SELECT MAX(column_name) FROM table_name

注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。

7.二叉树

二叉树的前序遍历、中序遍历、后续遍历:前中后三个词是相对于根来讲的,前序是【根-->左-->右】,中序是【左-->根-->右】,后续是【左-->右-->根】。具体操作为:

先序遍历(D L R): 访问根结点,按先序遍历左子树,按先序遍历右子树。

中序遍历(L D R): 按中序遍历左子树,访问根结点,按中序遍历右子树。

后序遍历(L R D): 按后序遍历左子树,按后序遍历右子树,访问根结点。

  下面以中序遍历为例,来讲解实际的解题方法:对一棵树,将根结点下的左子树用一个椭圆圈起来,右子树也用一个椭圆圈起来。之后,在左子树上标记上1,在根结点标记上2,在右子树上标记上3。对在左边椭圆内的左子树,现在把它单独拿出来分析。把它的左子树圈起来标上1.1,根结点标记上1.2,右子树标上1.3。按照上述方法依次往下,直到树不能拆分,然后按照“左-->根--->右”的顺序写出结点的访问先后即可。

先写这么多了!

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值