数据库程序员面试分类真题6_第1页
数据库程序员面试分类真题6_第2页
数据库程序员面试分类真题6_第3页
数据库程序员面试分类真题6_第4页
数据库程序员面试分类真题6_第5页
已阅读5页,还剩13页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库程序员面试分类真题6简答题1.

什么是多表连接查询?正确答案:多表连接查询是指基于两个或两个以上的表或视图的查询。在实际应用中,查洵单表不可能满足业务的需求,只能通过多表的连接来获取所需要的(江南博哥)数据。多表连接查询主要分为等值连接、非等值连接、外连接和自连接四类。

需要注意的是,WHERE子句中的连接条件的个数不能少于FROM后表的个数减1,这样可以确保不会形成笛卡儿积。即为了连接n个表,至少需要n-1个连接条件。例如,为了连接5个表,至少需要4个连接条件。[考点]SQL编写

2.

笛卡儿积是什么?正确答案:笛卡儿积是把表中所有的记录做乘积操作,生成大量的结果,而通常结果中可用的值有限。笛卡儿积出现的原因多种多样,通常是由于连接条件缺失造成的。对笛卡儿积的使用,需要注意以下几点:

1)笛卡儿积会在下面条件下产生:

①省略连接条件或连接条件缺失。

②连接条件无效,例如,表A和表B进行连接,但连接条件为A.ID=A.ID,这里的连接条件无效。

③统计信息不准确,例如,表A有1000W的数据量,但是在统计信息中记录的是0行,这种情况下表的连接易形成笛卡儿积。

2)由于笛卡儿积中的所有表中的所有行互相连接,所以,形成笛卡儿积的结果集的记录数是组成它的各个子集的乘积。

3)为了避免笛卡儿积,需要在WHERE字句中加入有效的连接条件。

4)默认情况下,查询会返回全部行,包括重复行。[考点]SQL编写

3.

什么是Fop-N查询?正确答案:在数据库查询中,“Top-N分析”也称“Top-N查询”,就是获取某一数据集合(表或查询结果集)中的前N条记录,例如,考试成绩前三名的学生信息、销量前十名的畅销书信息、从当前时刻开始最早起飞的五次航班信息等,实际应用中Top-N分析经常会用到。以下几点是Top-N的性质:

1)Top-N分析就是查询前几名的意思。

2)在Oracle数据库中,Top-N分析通过ROWNUM实现。

3)Top-N分析中必须使用ORDERBY排序子句。

4)Top-N分析中通常会有内建视图,一般的方法是先对内建视图的某一列或某些列排序,然后对此内建视图使用ROWNUM取前多少行数据。

如果要按照某种规则对符合条件的查询结果进行排序,再返回查询结果中的全部记录行,那么这是很容易做到的。例如,要查询10号和20号部门所有员工的工资信息,可采用如下方式:

SELECTEMPNO,ENAME,SALFROMSCOTT.EMPDWHEREDEPTNOIN(10,20)ORDERBYD.EMPNO;

如果是要在排序查询中进行Top-N分析,那么情况要复杂一些。例如,要求按照工资降序排列,查询10号和20号部门工资最高前五名员工的信息,则SQL语句为

在以上结果中,“原始行号”RN的含义为子查询结果排序前的行号(子查询执行了WHERE子句之后,但尚未执行ORDERBY子句排序时的行号)。ROWNUM是Oracle数据库对查询结果自动添加的一个伪列。简单地说,就是在每一次查询操作中,Oracle都会对符合条件的查询结果中的每一条记录行自动进行编号,该编号总是从1开始,并保存在伪列ROWNUM中。之所以称之为“伪列”,是因为它在物理上(查询目标表中)并不是真的存在,而是在每一次查询过程中动态生成的。此外,由于伪列ROWNUM在物理上并不存在,因此,不允许以任何查询基表的名称作为前缀。[考点]SQL编写

4.

什么是子查询?子查询包括哪几种类型?正确答案:所谓子查询是指嵌套在其他查询中的查询语句,又称为内部查询或嵌套查询。主查询又称为外部查询,是包含其他子查询的查询语句。按照子查询与主查询的关联关系,可以将子查询分为“标量子查询(ScalarSubquery)”和“关联子查询”两种,其中,关联子查询又可以分为相关子查询(CorrelatedSubquery)和非相关子查询(UncorrelatedSubquery),非相关子查询也叫独立子查询。子查询根据返回的行数分为单行子查询和多行子查询,若根据返回的列数则分为单列子查询和多列子查询。子查询的分类可以参考下图。

[考点]SQL编写

5.

什么是合并查询(集合查询)?正确答案:有时在实际应用中,为了合并多个SELECT语句的结果,可以使用集合操作符UNION、UNIONALL、INTERSECT、MINUS,这些集合操作符多用于数据量比较大的数据库,运行速度快,称为合并查询,也叫集合查询。以下分别对这几个命令进行分析与讲解。

1)UNION:该操作符用于计算两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行,只保留重复行的一行结果。需要注意的是:

①当执行联合查询时,必须保证它们具有相同个数的结果列,否则报如下的错误:ORA-01789:查询块的结果列数。

②列的数据类型不同也报错:ORA-01790:expressionmusthavesamedatatypeAScorrespondingexpression。数据类型的长度不一样是可以的,但是必须保证是相同的数据类型。

2)UNIONALL:该操作符与UNION相似,但是它不会取消重复行,而且不会排序。

3)INTERSECT(相交):该操作符用于计算两个结果集的交集。

4)MINUS(相减):该操作符用于计算两个结果集的差集,它只会显示存在第一个集合中,而不存在第二个集合中的数据,而且第一个集合中的相同数据只输出一个。

MINUS具有如下的实用功能:

1)比较两个表中的某一个字段中的不同的数据。

2)比较两个表的结构的不同。示例如下:

SYS@lhrdb>CREATETABLET_LHR_01(IDNUMBER);

Tabletreatcd.

SYS@lhrdb>CREATETABLET_LHR_02(IDNUMBER,NAMEVARCHAR2(255));

Tablecreated.

SYS@lhrdb>SELECTC.COLUMN_NAMEFROMCOLSCWHEREC.TABLE_NAME='T_LHR_02'

2

MINUS

3

SELECTC.COLUMN_NAMEFROMCOLSCWHEREC.TABLE_NAME='T_LHR_01';

COLUMN_NAME

-----------------------

NAME

可见,表T_LHR_02比表T_LHR_01多出一列NAME。[考点]SQL编写

6.

SQL:1999语法是什么?正确答案:Oracle除了自己的连接语法外,同时支持ANSI(AmericanNationalStandardsInstitute,美国国家标准协会)的SQL:1999标准的连接语法。SQL:1999是ANSI制定的通用标准,各数据库厂商都支持的一个标准。

SQL:1999语法格式如下:

SELECTtable.column,

table2.column

FROM

tablel

CROSS

JOINtable2|NATURALJOIN

table2|JOIN

table2

USING

(column_name)|

JOIN

table2

ON

(table1.column_name=table2.column_name)|

LEFT

|RIGHT

|FULL

OUTERJOIN

table2

ON

(table1.column_name=table2.column_name)

WHERE...;

其中,INNERJOIN表示内连接;LEFTJOIN表示左外连接;RIGHTJOIN表示右外连接;FULLJOIN表示完全外连接;ON子句用于指定连接条件。连接分类图如下图所示。

各种表之间的连接方式见下表。

[考点]SQL编写

7.

什么是交叉连接(CrossJoin)?正确答案:交叉连接(CrossJoin)子句是在SQL:1999标准中开始支持的,为了生成笛卡儿积而设计。连接语法中,交叉连接不使用WHERE子句,而是在FROM子句中的两个连接表之间使用CROSSJOIN显式标明。例如:

SELECTEMPNO,ENAME,SAL,EMP.DEPTNO,DNAMEFROM

SCOTT.EMPCROSS

JOINSCOTT.DEPT;

上述语句返回的是被连接的两个表所有符合查询条件记录行的笛卡儿积,其结果集合中的记录行数等于第一个表中符合查询条件的记录行数乘以第二个表中符合查询条件的记录行数,其效果等同于如下语句:

SELECTEMPNO,ENAME,SAL,EMP.DEPTNO,DNAMEFROMSCOTI.EMP,SCOTT.DEP;[考点]SQL编写

8.

什么是内连接(InnerJoin/Join)?正确答案:内连接(InnerJoin/Join)是常用的查询方式,也叫简单连接,是从两个或更多的表中筛选出符合连接条件的数据(记录行),对其连接后再进行查询并返回结果,如果遇到无法满足连接条件的数据,那么将之丢弃。内连接在FROM子句中使用INNERJOIN或JOIN关键字标识,并使用ON子句指定连接条件以及其他的查询限定条件。

内连接可以分为等值连接和非等值连接。例如,“SELECT*FROMA,BWHEREA.FIELD1=B.FIELD2”属于等值连接,它返回满足左表输入与右表输入连接的每一行。[考点]SQL编写

9.

请使用ON子句连接查询SCOTT.EMP和SCOTT.DEPT表,要求显示EMPNO、ENAME、JOB和SAL字段。正确答案:题目要求使用ON子句,这是一个考查点,SQL语句如下:

SYS@LHRDB>SELECTEMPNO,ENAME,JOB,SALFROMSCOTT.EMPEJOINSCOTT.DEPTDONE.DEPTNO=D.DEPTNO;[考点]SQL编写

10.

什么是等值连接?正确答案:等值连接就是当两个表的公共字段相等的时候把两个表连接在一起,它是连接条件中最常见的一种。公共字段是两个表中具有相同含义的列。如下两个连接都属于等值连接:

连接1:

SELECTENAME姓名,(SELECTD.DNAMEFROMSCOTT.DEPTDWHEREE.DEPTNO=D.DEPTNO)部门名称

FROMSCOTT.EMPEORDERBYE.ENAME;

连接2:

SELECTE.ENAME姓名,D.DNAME部门名称

FROMSCOTT.EMPE,SCOTT.DEPTD

WHEREE.DEPTNO=D.DEPTNOORDERBYE.ENAME;[考点]SQL编写

11.

什么是自然连接?正确答案:自然连接属于等值连接的一种特殊形式,它是在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将它们连接起来,并返回所有符合条件的结果。自然连接以相同列为条件创建等值的列,不推荐使用。若没有任何相同的字段,则会产生笛卡儿积,这对数据库的性能有较大影响。

需要注意的是,自然连接只能发生在两个表中有相同名字和数据类型的列上。如果表中的数据列有相同的名字,但数据类型不同,那么自然连接语法会提示错误。

有关自然连接的一些注意事项如下:

1)如果进行自然连接的两个表有多个字段都具有相同名称和类型,那么它们都会被作为自然连接的条件。

2)如果进行自然连接的两个表仅有字段名称相同,而数据类型不同,那么将会返回一个错误。

自然连接自动进行关联字段的匹配。示例如下:

SYS@RACLHR2>SELECT*FROMSCOTT.EMPNATURALJOINSCOTT.DEPT;[考点]SQL编写

12.

什么是自连接?正确答案:自连接(SelfJoin)是SQL语句中的一种特殊连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。

例如,在SCOTT.EMP中的每一个员工都有自己的MGR(经理),并且每一个经理自身也是公司的员工,自身也有自己的经理。如果需要将每一个员工自己的名字及其经理的名字都查询出来,SQL语句应该如何写呢?这个时候就可以用到自连接了。最终SQL如下:

SELECTA.ENAMEWORKER,B.ENAMEMANAGERFROMSCOTT.EMPA,SCOTT.EMPBWHEREA.MGR=B.EMPNOORDERBYA.ENAME;

对于非等值连接,理解起来比较简单,即表和表之间是通过非等值运算符来连接的,例如,<>、BETWEEN...AND...等,如下:

SELECT

EMP.EMPNO,EMP.ENAME,DEPT.LOCFROMSCOTT.EMPINNERJOINSCOTT.DEPTONEMP.DEPTNO<>DEPT.DEPTNO

WHEREEMPNO=7788ORDERBYEMPNO;

13.

外连接包含哪几种类型?正确答案:外连接分为3种,即左外连接(LEFTOUTERJOIN)、右外连接(RIGHTOUTERJOIN)和全外连接(FULLOUTERJOIN),通常可以省略OUTER这个关键字,所以,也称为左连接、右连接和全连接。[考点]SQL编写

14.

使用SCOTT/TIGER用户下的EMP表和DEPT表完成下列练习,表的结构说明如下:

EMP员工表(EMPNO员工号/ENAME员工姓名/JOB工作/MGR上级编号MIREDATE受雇日期/SAL薪金/COMM佣金/DEPTNO部门编号)

DEPT部门表(DEPTNO部门编号/DNAME部门名称/LOC地点)

工资=薪金+佣金

1)列出至少有一个员工的所有部门。

2)列出薪金比“SMITH”多的所有员工。

3)列出所有员工的姓名及其直接上级的姓名。

4)列出受雇日期早于其直接上级的所有员工。

5)列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。

6)列出所有工作为“CLERK”办事员的姓名及其部门名称。

7)列出最低薪金大于1500的各种工作。

8)列出在部门“SALES”销售部工作的员工的姓名,假定不知道销售部的部门编号。

9)列出薪金高于公司平均薪金的所有员工。

10)列出与员工“SCOTT”从事相同工作的所有员工。

11)列出薪金等于部门编号为30的员工的薪金的所有员工的姓名和薪金。

12)列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。

13)列出在每个部门工作的员工数量、平均工资和平均服务期限。

14)列出所有员工的姓名、部门名称和工资。

15)列出所有部门的详细信息和部门人数。

16)列出各种工作的最低工资。

17)列出工作为“MANAGER”的员工的最低薪金。

18)列出所有员工的年工资,按年薪从低到高排序。正确答案:本题考查编写SQL语句的能力,答案如下:

1)考查两个表联合查询,及GROUPBY...HAVING的用法,最终的SQL如下:

SELECTDNAMEFROMSCOTT.DEPTTWHERET.DEPTNOIN(SELECTT.DEPTNOFROMSCOTT.EMPGROUPBYT.DEPTNOHAVINGCOUNT(*)>1)

2)经典的自连接查询,最终的SQL如下:

SELECTENAMEFROMSCOTT.EMPTWHERESAL>(SELECTSALFROMSCOTT.EMPWHEREENAMELIKE='SMITH);

3)多次对自己查询,为表取个别名,内部查询可以像对象一样引用外部的对象的字段,这里引用与编程中的作用域相似,即与{}类比,最终的SQL如下:

SELECTENANE,(SELECTENAMEFROMSCOTT.EMPWHERESCOTT.EMPNOIN(A.MGR))FROMSCOTT.EMPA;

4)日期可直接用来比较,最终的SQL如下:

SELECTENAMEFROMSCOTT.EMPAWHEREHIREDATE<(SELECTHIREDATEFROMSCOTT.EMPWHERESCOTT.EMPNOIN(A.MGR));

5)以SCOTT.DEPT表为主,左连接查询,最终的SQL如下:

SELECTDNAME,B.*FROMSCOTT.DEPTALEFTJOINSCOTT.EMPBONA.DEPTNO=B.DEPTNO;

6)最终的SQL如下:

SELECTENAME,(SELECTDNAMEFROMSCOTT.DEPTWHERET.DEPTNOIN(A.DEPTNO))ASDNAMEFROMSCOTT.EMPAWHEREJOB='CLERK';

7)找出哪些工作的所有员工的薪金都大于1500,最终的SQL如下:

SELECTT.JOBFROMSCOTT.SCOTT.EMPTGROUPBYT.JOBHAVINGMIN(SAL)>1500;

8)经典的两个表连接,最终的SQL如下:

SELECTENAMEFROMSCOTT.EMPWHERET.DEPTNO=(SELECTT.DEPTNOFROMSCOTT.DEPTWHEREDNAME='SALES');

9)反复查自己,最终的SQL如下:

SELECTENAMEFROMSCOTT.EMPWHERESAL>(SELECTAVG(SAL)FROMSCOTT.EMP);

10)排除自己,最终的SQL如下:

SELECTENAMEFROMSCOTT.EMP

WHEREJOBIN(SELECTJOBFROMSCOTT.EMPWHEREENAME='SCOTT)ANDENAME!='SCOTT;

11)考查ANY的用法,且排除自己,最终的SQL如下:

SELECTENAME,SALFROMSCOTT.EMPWHERESAL=ANY(SELECTSALFROMSCOTT.EMPWHERET.DEPTNO=30)ANDT.DEPTNO!=30;

12)MAX的用法,最终的SQL如下:

SELECTSAL,ENAME

FROMSCOTT.EMPWHERESAL>(SELECTMAX(SAL)FROMSCOTT.EMPWHERET.DEPTNO=30);

13)经典的GROUPBY用法,最终的SQL如下:

SELECTT.DEPTNO,COUNT(*),AVG(A.SAL+COMM),AVG(SYSDATE-HIREDATE)FROMSCOIT.EMPAGROUPBYT.DEPTNO;

14)经典的两个表的连接查询,用具体的名称替换一个表中的主键的ID(解决很多人在实际运用中会遇到的不能绑定多列的问题),也可用WHERE来查询,与题5)比较,最终的SQL如下:

SELECTENAME,SAL+COMM,(SELECTDNAMEFROMSCOTT.DEPTAWHEREA.DEPTNO=B.DEPTNO)ASDNAMEFROMSCOTT.EMPB;

15)因为使用了SELECT*,将显示SCOTT.DEPT和后面临时表B的全部字段(注意:不只是SCOTT.DEPT的字段,注意*号),最终的SQL如下:

SELECT*FROMSCOTT.DEPTALEFTJOIN(SELECTDEPTNO,COUNT(*)FROMSCOTT.EMPGROUPBYDEPTNO)B

ONA.DEPTNO=B.DEPTNO;

16)考查MIN的用法,最终的SQL如下:

SELECTJOB,MIN(SAL)FROMSCOTT.EMPGROUPBYJOB;

17)因为MANAGER是值而不是字段,所以不能用小写,最终的SQL如下:

SELECTMIN(SAL+COMM)FROMSCOTT.EMPWHEREJOB='MANAGER';

18)NVL:空转化函数。最终的SQL如下:

SELECTENAME,(SAL+NVL(COMM,0))*12ASSALFROMSCOTT.EMPORDERBYSAL;[考点]SQL编写

15.

E-R图向关系模型的转换一般遵循哪些原则?正确答案:E-R图向关系模型的转换一般遵循如下原则:

1)一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。

例如,学生实体可以转换为如下关系模式,其中,学号为学生关系的码:

学生(学号,姓名,出生日期,所在系,年级,平均成绩)。同样,性别、宿舍、班级、档案材料、教师、课程、教室、教科书都分别转换为一个关系模式。

2)一个联系转化为一个关系模式,与该联系相连的各实体的码以及联系的属性转化为关系的属性。该关系的码有如下3种情况:

①若联系为1:1,则每个实体的码均是该关系的候选码。

②若联系为1:n,则关系的码为n端实体的码。

③若联系为m:n,则关系的码为诸实体码的组合。

下面分别来讲解这3种情况。

①联系为1:1

一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

a)如果转换为一个独立的关系模式,那么与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。

b)如果与某一端对应的关系模式合并,那么需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。

②联系为1:n

一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。

a)如果转换为一个独立的关系模式,那么与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。

b)如果与n端对应的关系模式合并,那么在n端实体对应模式中加入1端实体所对应关系模式的码,以及联系本身的属性。而关系的码为n端实体的码。

③联系为m:n

一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。

3)同一实体集的实体间的联系,即自联系,也可按上述1:1、1:n和m:n三种情况分别处理。

例如,如果教师实体集内部存在领导与被领导的1:n自联系,那么可以将该联系与教师实体合并,这时主键职工号将多次出现,但作用不同,可用不同的属性名加以区分。例如,在合并后的关系模式中,主键仍为职工号,再增设一个“系主任”属性,存放相应系主任的职工号。

4)具有相同码的关系模式可合并。

为了减少系统中的关系个数,如果两个关系模式具有相同的主键,那么可以考虑将它们合并为一个关系模式。合并方法是将其中一个关系模式的全部属性加入另一个关系模式中,然后去掉其中的同义属性(可能同名也可能不同名),并适当调整属性的次序。[考点]E-R模型

16.

假定一个部门的数据库包括以下信息。

1)职工的信息:职工号、姓名、地址和所在部门。

2)部门的信息:部门所有职工、部门名、经理和销售的产品。

3)产品的信息:产品名、制造商、价格、型号及产品的内部编号。

4)制造商的信息:制造商名称、地址、生产的产品名和价格。

试画出这个数据库的E-R图。正确答案:本题对应的E-R图如下图所示。

[考点]E-R模型

17.

某学校学籍科管理中心需建立一个学生选修课数据库,该数据库中需要存储和管理下列信息:

学生:学号,姓名,性别,年龄

课程:课程号,课程名,学时

以上数据存在的约束条件是:

一名学生可以选修多门课程,一门课程可以有多名学生,并且选修课要有成绩的登记。

I)画出该关系的E-R图。

2)用SQL语句创建E-R关系图中所有涉及的表。正确答案:1)建立E-R图如下图所示。

2)建表语句如下:

CREATETABLE学生

学号

VARCHAR(10)PRIMARYKEY,

姓名

VARCHAR(20)NOTNULL

性别

CHAR(2)CHECK(性别IN('男','女')),

年龄

INT);

CREATETABLE

课程(

课程号

VARCHAR(10)PRIMARYKEY,

课程号

VARCHAR(20)NOTNULL,

学时

TNT

);

CREATETABLE选修(

学号

VARCHAR(10),

课程号

VARCHAR(10),

成绩INT,

PRIMARYKEY(学号,课程号),

FOREIGNKEY(学号)REFERENCES学生学号,

FOREIGNKEY(课程号)REFERENCES课程课程号,

);[考点]E-R模型

18.

热备份和冷备份的区别有哪些?正确答案:冷备份和热备份的区别见下表。

冷备份热备份简介冷备份指在数据库已经正常关闭后,将关键性文件复制到另外位置的一种备份方式,适用于所有模式的数据库热备份是在数据库运行的情况下,采用归档方式备份数据的方法。针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份优点1)非常快速的备份方法,只需复制文件,备份与恢复操作相当简单2)容易归档,简单复制即可3)容易恢复到某个时间点上,只需将文件再复制回去即可4)能与归档方法相结合,做数据库“最新状态”的恢复5)低度维护,高度安全1)可在表空间或数据文件级备份,备份时间短2)备份时数据库仍可使用3)可以将数据库恢复到任意一个时间点4)可对几乎所有数据库实体做恢复5)恢复是快速的,大多数情况下在数据库仍工作时恢复缺点1)当单独使用时,只能提供到“某一时间点上”的恢复2)在实施备份的全过程中,数据库必须是关闭状态,所以,在备份的过程中,数据库就不能做其他工作了3)若磁盘空间有限,则复制到磁带等其他外部存储设备上,速度会很慢4)不能按表或按用户恢复1)不能出错,否则后果严重2)若热备份不成功,则所得结果不可用于时间点的恢复3)维护困难,所以,要特别仔细小心,不允许“以失败而告终”的情况发生[考点]热备份和冷备份

19.

SQL注入的含义是什么?正确答案:所谓SQL注入(SQLInjection),就是通过把SQL命令插入WEB表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令的目的。例如,在代码中使用下面的SQL语句:SQL="SELECTTOP1*FROMUSERWHERENAME='''+NAME+'''ANDPASSWORD='''+PASSWORD+'''''来验证用户名和密码是否正确,其中,NAME和PASSWORD是用户输入的内容,当用户输入用户名为AA,密码为“BB或'A'='A'”时,拼接出来的SQL语句就为“SELECTTOP1*FROMUSERWHERENAME='AA'ANDPASSWORD='BB'OR'A'='A'”,那么只要USER表中有数据,这条SQL语句就会有返回结果,这就达到了SQL注入的目的。作为DBA,永远不要信任用户的输入,相反,必须认定用户输入的数据永远都是不安全的,对用户输入的数据必须都进行过滤处理。[考点]SQL注入

20.

有哪些方法可以防止SQL注入?正确答案:为了防止SQL注入,需要注意以下几个要点:

1)永远不要信任用户的输入。可以通过正则表达式或限制长度的方式对用户的输入进行校验;对单引号进行转换等。

2)永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询、存取。

3)永远不要使用管理员权限的数据库连接,建议为每个应用赋予单独的权限。

4)不要把机密信息直接存放,建议对密码或敏感信息进行加密或:HASH处理。

5)应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装。

6)SQL注入的检测一般采取辅助软件或借助网站平台,软件一般采用SQL注入检测工具JSKY,网站平台就有亿思网站安全平台检测工具MDCSOFTSCAN等。[考点]SQL注入

21.

UML主要应用于哪些行业?正确答案:目前,UML已成功应用于电信、金融、政府、电子、国防、航天航空、制造与工业自动化、医疗、交通、电子商务等领域中。在这些领域中,UML的建模包括大型、复杂、实时、分布式、集中式数据或者计算,以及嵌入式系统等,而且还用于软件再生工程、质量管理、过程管理、配置管理的各方面。在软件无线电技术中,UML的应用是可行的,而且具有优势。[考点]UML

22.

什么是OLAP和OLTP?它们之间的适用场景有什么不同?正确答案:数据处理大致可以分成两大类:OLTP(On-LineTransactionProcessing,联机事务处理)和OLAP(On-LineAnalyticalProcessing,联机分析处理)。

OLTP是传统的关系型数据库的主要应用,即记录实时的增、删、改,主要是执行基本的、日常的事务处理,例如,在银行存取一笔款,就是一个事务交易。OLTP系统强调数据库处理效率,强调内存各种指标的命中率,强调绑定变量,强调并发操作。一般情况下,OLTP系统数据量少,DML操作比较频繁,并行事务处理多,但是一般都比较短。OLTP表示事务性非常高的系统,一般都是高可用的在线系统,以小的事务以及小的查询为主。评估系统的时候,一般看其每秒执行的事务数以及SQL执行的数量。在OLTP系统中,单个数据库每秒处理的事务数往往超过几百个,或者是几千个,SELECT语句的执行量每秒几千甚至几万个。典型的OLTP系统有电子商务系统、银行、证券等,例如,美国eBay的业务数据库就是很典型的OLTP数据库。在Oracle中创建OLTP系统时,使用一般用途或事务处理(GeneralPurposeorTransactionProcessing)模板。

具体而言,OLTP的特点一般有以下几点:

1)实时性要求高。

2)数据量不是很大。

3)交易一般是确定的,所以,OLTP是对确定性的数据进行存取。例如,存取款都有一个特定的金额。

4)并发性要求高,并且有严格的事务完整性、安全性。例如,有可能你和你的家人同时在不同的银行取同一个账号的存款。

OLAP的特点一般有以下几点:

1)实时性要求不是很高,很多应用都是每天晚上更新一次数据。

2)数据量大,因为OLAP支持的是动态查询,用户需要统计很多数据以后才能得到想要知道的信息,所以,OLAP处理的数据量很大。

3)因为重点在于决策支持,所以,OLAP查询一般是动态的,也就是说允许用户随时提出查询的要求。于是在OLAP中通过一个重要概念“维”来搭建一个动态查询的平台(或技术),供用户自己去决定需要知道什么信息。

OLAP和OLTP的区别见下表。区分维度OLTP|OLAP用户操作人员、低级管理人员决策人员、高级管理人员功能日常操作处理分析决策DB设计面向应用,事务驱动面向主题,面向分析,分析驱动数据原始的、当前的、最新细节的、二维的、分立的、实时更新的历史的、聚集的、多维的、集成的、统一的、导出的、综合性的、提炼性的、不实时更新但周期性刷新存取读或写数十条记录,一次处理的数据量小读上百万条记录,一次处理的数据量大工作单位简单的事务,DML操作比较频繁,并行事务处理多复杂的查询,数据量大,DML操作少用户数上千个上百个DB大小100MB-GB100GB-TB时间要求具有实时性对时间要求不严格主要应用数据库数据仓库[考点]OLAP和OLTP

23.

分布式数据库有哪些优点?正确答案:分布式数据库的优

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论