SQL面试题

SQL面试题,第1张

推荐的学习Java的学习顺序如下: 学习Java SE部分的内容,这部分是基础内容。掌握的越扎实,后面的内容学习起来就越容易。学习SQL和数据的内容 ,这个也是非常基础的内容,举个例子:程序员的面试题中一定会有SQL部分的考试。学习HTML、css、JavaScript的内容。学习,JSP、Servlet、JavaBean、标记库、JSTL、MVC、JSP EL等Web编程的部分学习Struts 或者Spring MVC。二者取其一即可,推荐选Struts 学习Java与XML ,重点掌握使用Java技术对XML文件的解析学习Java EE的核心技术 ,例如:JNDI、EJB3等,同时还需要学习使用与配置应用服务器,例如:webLogic Server,Websphere,JBoss 学习Hibernate 等持久层的技术学习Spring 学习AJAX 学习ANT、Subversion等开发工具,熟悉常见的软件开发模型,例如:rup、XP 学习OOA与OOD,uml,设计模式学习Web Services、SOA的原理与应用开发 最后,现在很多公司都使用Linux系统做为服务器系统,并且使用Linux系统进行程序的开发(都是出于使用正版的考虑),所以Linux系统的安装、使用和简单管与配置,也是需要学习,这部分内容,跟其他内容没有关联,可以在任何时候学。推荐学习完SQL与数据库之后进行学习。 你要想找到一份不错的Java程序员工作,最基本的也要把1-12都学习了,当然有的内容需要深入掌握,有的内容可以慢慢的深入掌握的。

关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途:

惟一地标识一行。

作为一个可以被外键有效引用的对象。

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。下面是主键和索引的一些区别与联系。

1 主键一定是唯一性索引,唯一性索引并不一定就是主键。

所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。数据库在设计时,主键起到了很重要的作用。

主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。

2 一个表中可以有多个唯一性索引,但只能有一个主键。

3 主键列不允许空值,而唯一性索引列允许空值。

4 索引可以提高查询的速度。

其实主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是主键不实际存在,而索引实际存在在数据库中,主键一般都要建,主要是用来避免一张表中有相同的记录,索引一般可以不建,但如果需要对该表进行查询 *** 作,则最好建,这样可以加快检索的速度。

1、 客户端访问DOMINO服务器的端口是多少?(5分)

解答:由于Notes使用1352端口,所以要确保服务器和客户端计算机的防火墙都打开1352端口。Domino Server服务器用的是Tcp 1352端口,如果你的Domino Server服务器在局域网里面,那么Notes客户端通过外网连接的时候,服务器需要在他本地网关上做一个Tcp 1352端口的映射,如果外网是通过网页方式连接服务器,则服务器需要在他本地网关上做一个Tcp 80端口的映射。另外如果希望远程管理服务器,还要打开8585端口。

2、 DOMINO系统主要组成部分是什么?(5分)

解答:Notes由DominoR5,DesignerR5,NotesR5和AdministratorR5四个部分组成。前者是服务器端应用,后三者是客户端。DesignerR5是Notes平台上的应用程序开发环境,NotesR5就是工作站应用环境,Administrator R5是用来对服务器进行管理的客户端,只有对服务器有管理员权限的用户才可以用之对服务器进行管理工作。

3、 重启DOMINO服务器的命令是什么?(5分)

解答:res ser

4、 列举DOMINO数据库七大访问级别?(5分)

解答:

l 管理者:修改数据库存取控制列表、加密数据库、修改复制设置、删除数据库

l 设计者:修改所有的数据库设计元素、创建全文搜索索引

l 编辑者:创建文档、编辑所有文档(包括其他人创建的)

l 作者:创建文档、编辑自己创建的文档(如果在表单中有“作者”域并且在“作者名称”域中指定了用户)

l 读者:阅读文档

l 存放者:创建文档

l 不能存取者:无

注意:缺省时,“作者”存取级别不包括“创建文档”的存取权限。当为用户或服务器指定“作者”的存取级别时,必须指定“创建文档”的存取权限。

具有“读者”存取级别的用户可以阅读所有文档,但是如果在表单中设有“读者”域时,则只有当用户的姓名在此域中列出时,才可以阅读文档

5、 描述如何重新验证到期的用户标识符?(5分)

解答:

l 从用户那里拿到ID文件,打开Lotus Domino Administration管理员客户端,并用管理员ID登陆

l 在配置的页面里,展开右面工具里的验证,并选择验证。

l 选择“验证者标识符”按钮

l 选择这个用户ID所在的组织或组织单元的验证者ID

l 输入此验证者ID口令

l 从“选择要验证的标识符”对话框中找到需要验证的过期用户ID

l 输入这个用户的ID口令

l 可选在后面出现的对话框中可以选择下面的选项:新的到期日期,口令安全级别等。

l 点击“验证”按钮即可。

6、 列举创建DOMINO数据库的方法,描述各方法的不同之处。(5分)

解答:创建数据库的方法有以下3种:

一、使用模板。

创建数据库最快的方法是使用Domino模板。Designer包含创建各种应用程序的模板。使用某个Designer模板创建的应用程序可以原样使用,也可以定制后使用。

二、拷贝现有的数据库。

如果某个数据库已包含了所有需要的元素,而且你有权访问该数据库,则可以拷贝设计,并创建一个具有同样特性的新数据库。一旦创建了数据库,就可以对其进行定制以满足公司的需要。

三、从头开始创建数据库。

如果所需的数据库功能独特,那么最好的方法是从头开始创建一个全新的数据库。从头开始新建数据库也就是从空白的或空数据库开始创建所有的设计元素。

第一种方法适合初学者使用。Lotus Notes提供了一系列的模板,可以直接使用这些模板或根据自己的需要订做。尤其是当现有的某个模板基本符合用户的要求时,只要选用该模板建立新数据库即可,用户不必做多少工作;

第二种方法类似于调用模板,不同的是,这种方法除了可以拷贝数据库的结构外,还可以包含数据。当Notes中没有合适的模板,但有合适的数据库时,可以拷贝此库来构造一个新库。

第三种方法相对来说比较费时,它要求用户重新构造每一个域,表单,视图。但是这样用户能完全按自己的想法设计数据库,因此许多有经验的程序员都喜欢用这种方法。

7、 用公式语言:获取当前用户;获取文档ID。(5分)

解答:获取当前用户名:@Name([CN];@UserName)

获取文档ID:@DocumentUniqueID

获取父文档的ID:@InheritedDocumentUniqueID

8、 用JAVA或LOTUSSCRIPT写出获取当前数据库对象;当前文档对象。(5分)

解答:

Dim session As New NotesSession

Dim db As NotesDatabase

Dim wk As New NotesUIWorkspace

Dim uidoc As NotesUIDocument

Set db =sessioncurrentdatabase是获得当前数据库对象

Set uidoc=wkCurrentDocument是获得当前文档对象

dim dbother as new notesdatabase("(ServerName)","aaansf")

set db = new notesdatabase("(ServerName)","aaansf") 是获取其它数据库的对象

SQL(结构化查询语言)是一种设计用于检索和 *** 作数据的数据库。它是美国国家标准协会(ANSI)的标准。此语言用于执行选择,更新,删除和插入等数据任务。

表是在具有列和行的模型中设计的数据集合。在表中,指定了列数,称为字段,但未定义行数,称为记录。

数据库是有序形式的一组信息,用于访问,存储和检索数据。

DBMS是一个控制数据维护和使用的程序。它被认为是管理数据的文件管理器。有四种类型的DBMS:

最有用的DBMS是Relational DBMS。它为数据提供了一个关系运算符。

SQL命令分为以下类型:

它包含来自一个或多个表的行和列,可以定义为虚拟表。它消耗的内存较少。

句法:

Join用于从相关的行和列中检索数据。它在两个或多个表之间工作,并且它从两个表返回至少一个匹配。

连接类型是:

数据库查询是数据库表中的数据请求。查询可以是选择查询或任何其他类型的查询。

子查询是查询的一部分。外部查询已知主查询,内部查询识别子查询。始终首先执行子查询,并将结果传递给主查询。

Autoincrement是一个关键字,用于在表中插入新记录时生成数字。

它可用于设置表中数据类型的限制。在创建或更新表语句时,可以使用约束。一些限制是:

SQL中有不同类型的键:

规范化是一种设计技术,它以减少数据依赖性的方式排列表。它将表分成小模块并按关系链接。

非规范化是一种优化方法,我们将多余的数据增加到表中,并在规范化后应用。

存储过程是一组SQL语句,用作访问数据库的函数。为了减少网络流量并提高性能,我们使用存储过程。

句法:

索引用于加速查询的性能。它可以更快地从表中检索数据。可以在一组列上创建索引。

聚簇索引 - 它有助于轻松检索数据,并且只有一个聚簇索引与一个表一起分配。它会更改记录在数据库中的保存方式。

非聚集索引 - 与聚簇索引相比,非聚簇索引很慢。并且在非集群索引的情况下,该表可以具有多个索引。它为表创建一个对象,该表是搜索后指向表的一个点。

触发器 被 用来执行对表中的特定动作,诸如插入,更新或删除 。它是一种 存储过程 。动作和事件是触发器的主要组成部分。执行Action时,事件响应该 *** 作而出现。

通常,这些属性称为ACID。它们有助于数据库事务。

A tomicity -在一个事务中连接两个或更多个单独的数据块,或者所有的块都致力于,或者一个都不。

C onsistency - 事务或者生成新的有效数据状态,或者如果发生任何失望,则在事务启动之前将所有数据返回到其状态。

I solation - 正在进行且尚未提交的事务必须继续与任何其他 *** 作隔离。

D urability -在此 *** 作中,系统保存提交的数据,每当事件发生故障和系统启动后,所有的数据是可用的正确的位置。

SQL语句分为几类:

它被定义为通过为查询提供条件来设置结果集的限制。他们从整个记录中过滤掉一些行。

一些SQL CLAUSES是WHERE和HAVING。

它是一个返回单个值的数学函数。

SQL中的聚合函数是:

为了 *** 作字符串,我们使用String Function。其中一些是:

排序规则 是一 组规则,用于确定数据如何通过比较进行排序 。例如使用一组规则存储的字符数据,这些规则定义了正确字符的序列以及类型,重音和区分大小写。

在系统内存中执行SQL语句时,会创建一个临时工作区,称为Cursor。在select语句中,游标存储了信息。游标可以使用多行,但一次只能处理一行。这组行称为活动集。

游标有两种类型:

SQL服务器是Microsoft关系数据库管理系统(RDBMS)的一种类型或示例。它在IT氛围中提供广泛的事务处理和商业智能。

运算符是一个保留字,主要用于SQL语句的WHERE子句中以进行 *** 作。

空值是没有值的字段。它与Zero不同。假设有一个表,并且在表中有一个字段,可以在不添加值的情况下将记录插入字段,然后该字段将以NULL值保存。

空白是我们提供的价值。

零只是一个数字。

数据仓库被称为来自多个信息源的中央数据中心。这些数据可用于在线处理和挖掘。

在表中,应该只有一个PRIMARY KEY,但在另一种情况下,UNIQUE KEY可以是任意数量的。

PRIMARY KEYS不允许NULL值,但UNIQUE KEY允许NULL值。

如下这份计算机二级C语言笔试题目对于要考基计算机二级证书的朋友来说,应该会很有帮助,需要的朋友赶紧收藏吧!

一、选择题((1)-(10),(21)-(40)每题2分,(11)-(20)每题1分,共70分)

下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。

1 下列叙述中正确的是

A 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

B 线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

C 线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构

D 上述三种说法都不对 答案:B

2 下列叙述中正确的是

A 在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

B 在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

C 在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

D 上述三种说法都不对 答案:C

3 软件测试的目的是

A 评估软件可靠性 B 发现并改正程序中的错误 C 改正程序中的错误

D 发现程序中的错误 答案:B

4 下面描述中,不属于软件危机表现的是

A 软件过程不规范 B 软件开发生产率低 C 软件质量难以控制

D 软件成本不断提高 答案:A

5 软件生命周期是指

A 软件产品从提出、实现、使用维护到停止使用退役的过程

B 软件从需求分析、设计、实现到测试完成的过程 C 软件的开发过程

D 软件的运行维护过程 答案:A

6 面向对象方法中,继承是指

A 一组对象所具有的相似性质 B 一个对象具有另一个对象的性质 C 各对象之间的共同性质 D 类之间共享属性和 *** 作的机制 答案:D

7 层次型、网状型和关系型数据库划分原则是

A 记录长度 B 文件的大小 C 联系的复杂程度

D 数据之间的**** 答案:D

8 一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是

A 一对一B 一对多C 多对多D 多对一 答案:C

9 数据库设计中反映用户对数据要求的模式是

A 内模式B 概念模式C 外模式D 设计模式 答案:C

10 有三个关系R、S和T如下:则由关系R和S得到关系T的 *** 作是

A 自然连接B 交C 投影D 并 答案:A

11 以下关于结构化程序设计的叙述中正确的是

A 一个结构化程序必须同时由顺序、分支、循环三种结构组成

B 结构化程序使用goto语句会很便捷 C 在C语言中,程序的模块化是利用函数实现的

D 由三种基本结构构成的程序本文由论文联盟>

1泛型可以存放任何的引用或值类型,避免了显式强制转换

List<T> list =new ArrayList<T>();

listadd("可以放个值,也可以放对象")

访问时由于已经指定了存放类型T 所以在取值时不需要强制转换了 可以用foreach(T t in list){

ConsoleWriteLine(""+t属性);

}

使用时很方便 也精简了代码

2MVC设计模式 在使用三层架构时最适合 它将页面和代码很好的分离 也将逻辑代码和显示代码很好的分离开来 易于管理和维护升级

3int[] num1=new int[]{3,5,7,8,9} int[] num2=new int[]{2,4,6,8}

这里要用到两个循环

int commonNumInt=0;

int diffentNumInt=0;

for(int i=0;i<num1length;i++){

for(int j=0;j<num2length;j++){

if(num1[i]==num2[j]){

commonNumInt ++; //相同元素的个数

break;

}else{

if(j==num2length-1){

diffentNumInt ++; //不同元素的个数

}

}

}

}

4杂志信息表 tbl_MagazineInfo

杂志编号:magazineID nvarchar(5) not null

杂志名称:magazineName nvarchar(20) not null

杂志作者:magazineAuthor nvarchar(20) not null

出版时间:magazineTime nvarchar(20) not null

出版社名:magazinePubliName nvarchar(50) not null

期刊表 tbl_Periodical

期刊编号:periodicalID nvarchar(5) not null

杂志编号:magazineID nvarchar(5) not null

期刊名称:periodicalName nvarchar(20) not null

期刊时间:periodicalTime nvarchar(20) not null

select max(periodicalTime) from tbl_Periodical where magazineID in(select magazineID from tbl_MagazineInfo)

5新闻信息 tbl_NewInfo

新闻ID: newID int not null

新闻名称: newName nvarchar(20) not null

标签信息 tbl_MarkInfo

标签ID: markID int not null

标签名称: markName nvarchar(20) not null

中间表 tbl_NandM

ID: id

新闻ID: newID int not null

标签ID: markID int not null

通过指定新闻名获得多个标签

select markName from tbl_markInfo where markID in( select markID from tbl_NandM where newID =(select newID from tbl_NewInfo where newName ='参数'))

通过标签获得多个新闻

select newName from tbl_NewInfo where newID in(select newID from tbl_NandM where markID =(select markID from tbl_MarkInfo where markName ='参数'))

6要在数据库中设计 这里就不做了

7还在考虑筹划之中……

一、简述一下MongoDB的应用场景

mongodb 支持副本集、索引、自动分片,可以保证较高的性能和可用性。

更高的写入负载

默认情况下,MongoDB 更侧重高数据写入性能,而非事务安全,MongoDB 很适合业务系统中有大量 “低价值” 数据的场景。但是应当避免在高事务安全性的系统中使用 MongoDB,除非能从架构设计上保证事务安全。

高可用性

MongoDB 的复副集 (Master-Slave) 配置非常简洁方便,此外,MongoDB 可以快速响应的处理单节点故障,自动、安全地完成故障转移。这些特性使得 MongoDB 能在一个相对不稳定(如云主机)的环境中,保持高可用性。

数据量很大或者未来会变得很大

依赖数据库 (MySQL) 自身的特性,完成数据的扩展是较困难的事,在 MySQL 中,当一个单达表到 5-10GB 时会出现明显的性能降级,此时需要通过数据的水平和垂直拆分、库的拆分完成扩展,使用 MySQL 通常需要借助驱动层或代理层完成这类需求。而 MongoDB 内建了多种数据分片的特性,可以很好地适应大数据量的需求。

基于位置的数据查询

MongoDB 支持二维空间索引,因此可以快速及精确地从指定位置获取数据。

表结构不明确

在一些传统 RDBMS 中,增加一个字段会锁住整个数据库 / 表,或者在执行一个重负载的请求时会明显造成其它请求的性能降级。通常发生在数据表大于 1G 的时候(当大于 1TB 时更甚)。 因 MongoDB 是文档型数据库,为非结构货的文档增加一个新字段是很快速的 *** 作,并且不会影响到已有数据。另外一个好处当业务数据发生变化时,是将不再需要由 DBA 修改表结构。

二、数据库设计经验,为什么进行分表?分库?一般多少数据量开始分表?分库?分库分表的目的?

1、为什么要分表

当一张表的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕。

分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率。数据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据 *** 作,增删改查的开销也会越来越大;另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO 等)是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。

2、分表的方案

做 mysql 集群,有人会问 mysql 集群,根分表有什么关系吗?虽然它不是实际意义上的分表,但是它启到了分表的作用,做集群的意义是什么呢?为一个数据库减轻负担,说白了就是减少 sql 排队队列中的 sql 的数量,举个例子:有 10 个 sql 请求,如果放在一个数据库服务器的排队队列中,他要等很长时间,如果把这 10 个 sql 请求,分配到 5 个数据库服务器的排队队列中,一个数据库服务器的队列中只有 2 个,这样等待时间是不是大大的缩短了呢?

linux mysql proxy 的安装,配置,以及读写分离

mysql replication 互为主从的安装及配置,以及数据同步

优点:扩展性好,没有多个分表后的复杂 *** 作(php 代码)

缺点:单个表的数据量还是没有变,一次 *** 作所花的时间还是那么多,硬件开销大。

三、简述一下数据库主从复制,读写分离

什么是主从复制

主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;

主从复制的原理:

1数据库有个bin-log二进制文件,记录了所有的sql语句。

2只需要把主数据库的bin-log文件中的sql语句复制。

3让其从数据的relay-log重做日志文件中再执行一次这些sql语句即可。

主从复制的作用

1做数据的热备份,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。

2架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问频率,提高单机的I/O性能

3主从复制是读写分离的基础,使数据库能制成更大 的并发。例如子报表中,由于部署报表的sql语句十分慢,导致锁表,影响前台的服务。如果前台服务使用master,报表使用slave,那么报表sql将不会造成前台所,保证了前台的访问速度。

主从复制的几种方式:

1同步复制:所谓的同步复制,意思是master的变化,必须等待slave-1,slave-2,…,slave-n完成后才能返回。

2异步复制:如同AJAX请求一样。master只需要完成自己的数据库 *** 作即可。至于slaves是否收到二进制日志,是否完成 *** 作,不用关心。MYSQL的默认设置。

3半同步复制:master只保证slaves中的一个 *** 作成功,就返回,其他slave不管。

这个功能,是由google为MYSQL引入的。

关于读写分离

在完成主从复制时,由于slave是需要同步master的。所以对于insert/delete/update这些更新数据库的 *** 作,应该在master中完成。而select的查询 *** 作,则落下到slave中。

以上就是关于SQL面试题全部的内容,包括:SQL面试题、面试题 数据库中主键和索引的区别以及使用场景、lotus面试题哪些问题你解决了吗,有答案了吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9460955.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存