程序员面试笔试宝典学习记录(三)(数据库相关知识)

关系数据库系统与文件数据库系统的区别如下:

(a)关系数据库系统的主要特征是数据的结构化,而文件数据库系统是数据的非结构化。

(b)关系数据库系统中,用户看到的逻辑结构是二维表,而文件数据库系统中,基本元素是文件。

(c)文件数据库系统可以实现多媒体文件管理,支持C/S工作模式。

acid,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability)。

数据查询:select select * from table where 条件语句

数据操作:insert into table(字段名1,字段名2...)values(值1,值2...)

update table set 字段名=字段值 where 条件语句

delete from table where 条件表达式

数据定义:create table tablename(字段1,字段2...)

drop table tablename

数据控制:grant <系统权限>|<角色>[,<系统权限>|<角色>]...to <用户名>|<角色>|public[,<用户名>|<角色>]...[with admin option]

revoke <系统权限>|<角色>[,<系统权限>|<角色>]...from <用户名>|<角色>|public[,<用户名>|<角色>]...

内连接和外连接的区别

存储过程,SQL语句执行的时候要先编译,然后再被执行。在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定存储过程的名字来调用执行。

在数据库中,锁主要是堆数据进行读/写的一种保护机制,从数据库系统的角度来看,一般可以将锁分为共享锁和互斥锁。共享锁简称S所,也叫读锁。互斥锁简称X锁,也叫排他锁,用于数据的修改操作。

常见的范式有1NF,2NF,3NF,BCNF,以及4NF。

视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,不同于基本表。它是一个虚表,在数据库中,存放的只是视图的定义而已,不存放视图包含的数据项,这些项目仍然存放在原来的基本表结构中。

触发器是一种特殊类型的存储过程,它由事件触发,而不是程序调用或手工启动。当数据库有特殊的操作时,对这些操作由数据库中的事件来出发,自动完成这些SQL语句。使用触发器可以用来保证数据的有效性和完整性,完成比约束更复杂的数据约束。

事前触发发生在事件之前验证一些条件或进行一些准备工作;事后触发发生在事件发生之后,做收尾工作,保证事务的完整性。而事前触发可以获得之前和新的字段值。语句级触发器可以在语句执行之前或之后执行,而行级触发在触发器所影响的每一行触发一次。

索引是一种提高数据库查询速度的机制,它是一个在数据库的表或视图上按照某个关键字段的值,升序或降序排序创建的对象。当用户查询索引字段时,它可以快速地执行检索操作,借助索引,在执行查询的时候不需要扫描整个表就可以快速的找到所需要的数据。索引是与表或视图关联的磁盘上的结构,即对表中列值排序的一种结构,可以加快从表或视图中检索行的速度,执行查询时不必扫描整个表就能更快的访问数据库中的信息。

索引结构一般B树,B+树,当然也可以使哈希表。创建索引可以大大提高系统的性能:

(a)通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

(b)通过索引,可以大大加快数据的检索速度。

(c)通过索引可以加速表和表之前的连接,从而有效实现数据的参考完整性。

(d)在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

(e)通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

B+树最常用,性能也不差,用于范围查询和单值查询都可以。特别是范围查询,非得用B+树这种顺序的才可以了。

HASH的如果只是对单值查询的话速度比B+树快一些。

位图的使用情况很局限,只有很少的情况才能用,一定要确定真正合适使用这种索引采用(值的类型很少并且需要复合查询),否则建立一大堆位图一点意义都没有了。

游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。

程序员面试笔试宝典学习记录(三)(数据库相关知识),布布扣,bubuko.com

时间: 2024-12-15 01:39:30

程序员面试笔试宝典学习记录(三)(数据库相关知识)的相关文章

《PHP程序员面试笔试宝典》——如何回答系统设计题?

如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 应届生在面试时,偶尔也会遇到一些系统设计题,而这些题目往往只是测试求职者的知识面,或者测试求职者对系统架构方面的了解,一般不会涉及具体的编码工作.虽然如此,对于此类问题,很多人还是感觉难以应对,也不知道从何处答题. 如何应对此类题目呢?在正式介绍基础知识之前,首先列举几个常见的系统设计相关的面试.笔试题. 题目1:设计一个DNS的Cache结构,要求能够满足5000次/s以上的查询,满足IP数据的快速插入,查询的速度要快(题目

《Java程序员面试笔试宝典》终于在万众期待中出版啦~

<Java程序员面试笔试宝典>终于在万众期待中出版啦~它是知名畅销书<程序员面试笔试宝典>的姊妹篇,而定价只要48元哦,恰逢求职季节,希望本书的出版能够让更多的求职者能够走进理想的企业 在这里,众多知名企业面试官将为你撕开神秘的求职面纱: 在这里,各种求职达人将现身说法为你揭开求职谜团: 在这里,各种类型的企业招聘细节都会被展露无疑: 在这里,我们将为你抽丝剥茧,还原IT行业的真相: 在这里,我们将为你指点迷津,告诉你职场上的风风雨雨: 在这里,我们将为你点石成金,成为那盏指引你前

《PHP程序员面试笔试宝典》——如何巧妙地回答面试官的问题?

如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 所谓"来者不善,善者不来",程序员面试中,求职者不可避免地需要回答面试官各种"刁钻".犀利的问题,回答面试官的问题千万不能简单地回答"是"或者"不是",而应该具体分析"是"或者"不是"的理由. 回答面试官的问题是一门很深的学问.那么,面对面试官提出的各类问题,如何才能条理清晰地回答呢?如何才能让自己的回答不至

《PHP程序员面试笔试宝典》——如何回答算法设计问题?

如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 程序员面试中的很多算法设计问题,都是历年来各家企业的"炒现饭",不管求职者以前对算法知识掌握得是否扎实,理解得是否深入,只要面试前买本<程序员面试笔试宝典>,应付此类题目完全没有问题.但遗憾的是,很多世界级知名企业也深知这一点,如果纯粹是出一些毫无技术含量的题目,对于考前"突击手"而言,可能会占尽便宜,但对于那些技术好的人而言是非常不公平的.所以,为了把优秀的求职者与一般的求

《PHP程序员面试笔试宝典》——如何应对面试官的“激将法”语言?

如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> "激将法"是面试官用以淘汰求职者的一种惯用方法,它是指面试官采用怀疑.尖锐或咄咄逼人的交流方式来对求职者进行提问的方法.例如,"我觉得你比较缺乏工作经验""我们需要活泼开朗的人,你恐怕不合适""你的教育背景与我们的需求不太适合""你的成绩太差""你的英语没过六级""你的专业和我们不对口"&

《PHP程序员面试笔试宝典》——如果面试问题曾经遇见过,是否要告知面试官?

如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 面试中,大多数题目都不是凭空想象出来的,而是有章可循,只要求职者肯花时间,耐得住寂寞,复习得当,基本上在面试前都会见过相同的或者类似的问题(当然,很多知名企业每年都会推陈出新,这些题目是很难完全复习到位的).所以,在面试中,求职者曾经遇见过面试官提出的问题也就不足为奇了.那么,一旦出现这种情况,求职者是否要如实告诉面试官呢? 选择不告诉面试官的理由比较充分:首先,面试的题目60%-70%都是已见题型,见过或者见过类似的不足为奇

《PHP程序员面试笔试宝典》——如何应对自己不会回答的问题?

如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 在面试的过程中,对面试官提出的问题求职者并不是都能回答出来,计算机技术博大精深,很少有人能对计算机技术的各个分支学科了如指掌.而且抛开技术层面的问题,在面试那种紧张的环境中,回答不上来的情况也容易出现.面试过程中遇到自己不会回答的问题时,错误的做法是保持沉默或者支支吾吾.不懂装懂,硬着头皮胡乱说一通,这样会使面试气氛很尴尬,很难再往下继续进行. 其实面试遇到不会的问题是一件很正常的事情,没有人是万事通,即使对自己的专业有相当的

《Java程序员面试笔试宝典》之字符串创建与存储的机制是什么

在Java语言中,字符串起着非常重要的作用,字符串的声明与初始化主要有如下两种情况:(1) 对于String s1=new String("abc")语句与String s2=new String("abc")语句,存在两个引用对象s1.s2,两个内容相同的字符串对象"abc",它们在内存中的地址是不同的.只要用到new总会生成新的对象. (2) 对于String s1 = "abc"语句与String s2 = "

《Java程序员面试笔试宝典》之为什么需要public static void main(String[] args)这个方法

public staticvoid main(String[] args)为Java程序的入口方法,JVM在运行程序的时候,会首先查找main方法.其中,public是权限修饰符,表明任何类或对象都可以访问这个方法,static表明main方法是一个静态方法,即方法中的代码是存储在静态存储区的,只要类被加载后,就可以使用该方法而不需要通过实例化对象来访问,可以直接通过类名.main()直接访问,JVM在启动的时候就是按照上述方法的签名(必须有public与static修饰,返回值为void,且方