数据库的精彩笔记

上传人:公**** 文档编号:561809938 上传时间:2023-10-27 格式:DOC 页数:6 大小:30KB
返回 下载 相关 举报
数据库的精彩笔记_第1页
第1页 / 共6页
数据库的精彩笔记_第2页
第2页 / 共6页
数据库的精彩笔记_第3页
第3页 / 共6页
数据库的精彩笔记_第4页
第4页 / 共6页
数据库的精彩笔记_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《数据库的精彩笔记》由会员分享,可在线阅读,更多相关《数据库的精彩笔记(6页珍藏版)》请在金锄头文库上搜索。

1、数据库笔试题数据库1.基础知识点:1NF:第一式。如果关系模式R的所有属性的值域中每一个值都是不可再分解的值,则称R属于第一式模式。第一式的模式要求属性值不可再分裂成更小部分,即属性项不能是属性组合或由组属性组成。2NF:第二式。如果关系模式R为第一式,并且R中每一个非主属性完全函数依赖于R的某个候选键,则称R为第二式模式。(如果A是关系模式R的候选键的一个属性,则称A是R的主属性,否则称A是R的非主属性。) 3NF:第三式。如果关系模式R是第二式,且每个非主属性都不传递依赖于R的候选键,则称R是第三式的模式。 BCNF:BC模式。如果关系模式R是第一式,且每个属性都不传递依赖于R的候选键,那

2、么称R为BCNF的模式。4NF:第四式。设R是一个关系模式,D是R上的多值依赖集合。如果 D中成立非平凡多值依赖XY时,X必是R的超键,那么称R是第四式的模式。2.试题1) 设有关系R(S,D,M),其函数依赖集F=SD,DM。则关系R至多满足2NF。 解析:属于依赖关系,所有至多满足第二式。2) 找出表ppp里面num最小的数,不能使用min函数。 答:select * from ppp where num1)。5) 写出复制表、拷贝表和四表联合的SQL语句。 答:复制表(只复制结构,源表名:A,新表名:B): select * into B from A where 1=0 拷贝表(拷贝结

3、构,源表名:A,新表名:B): select * into B from A 四表联查: select * from A,B,C,D where 关联条件6) 在SQL Server中如何用SQL语句建立一临时表? 答: create table #Temp(字段1 类型,字段2 类型) 注意,临时表要在表名前面加 “”。7) %代表任意长度(长度可以为0)的字符串,_ 代表任意单个字符。如果用户要查询的语句本身就含有%或_,这时就要使用escape短语对通配符进行转义了。8) 集函数SUM,AVG中的列必须是数值型。综合的是选择题9) 每一个部门的每个工种的工资最大值? select dep

4、t_id,job_cat,max(salary)from employee group by dept_id,job_cat;10) 在primary 和unique两种约束的情况下,Oracle数据库会隐形创建一个唯一索引。11) 在select语句中包含一个where关键词,group by关键词一般在where关键词之后,order by 关键词一般在select语句中所有关键词之后。12) select last_name,salary from employees order by salary; select last_name,salary from employees orde

5、r by 2 asc; 这两个SQL语句是一样的结果。13) 如果你想把时间显示成像“2005111014:44: 17”这样的格式,SQL语句: select to_char(sydate,yyyymmdd hh24:mi:ss)from dual;14) select语句中用来连接字符串的符号是+。15) 如果要从字符串“Hello world”中提取出“ello world”这样的结果,SQL语句: select lower(trim(Hfrom Hello world)from dual;3.存储过程和函数的区别是什么?答:存储过程是用户定义的一系列SQL语句的集合,涉与特定表或其他对

6、象的任务,用户可以调用存储过程。而函数通常是数据库已定义的方法,它接受参数并返回某种类型的值,并且不涉与特定用户表。4.事务是什么?答:事务是作为一个逻辑单元执行的一系列操作。一个逻辑工作单元必须有4个属性,称为ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能称为一个事务。5.游标的作用是什么?如何知道游标已经到了最后?答:游标用于定位结果集的行。通过判断全局变量FETCH_STATUS可以判断其是否到了最后。通常此变量不等于0表示出错或到了最后。6.触发器分为事前触发和事后触发,这两种触发有何区别?语句级触发和行级触发有何区别?答:事前触发器运行于触发事件发生之前,而事后触发器运

7、行于触发事件发生之后。语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。7.什么叫做SQL注入式攻击?如何防?答:所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域页面请求的查询字符串中,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的容直接用来构造动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。防SQL注入式攻击闯入:只要在利用表单输入的容构造SQL命令之前,把所有输入容过滤一番就可以了。过滤输入容可以按多种方式进行。第一,替换单引号,即把所有单独出现的单引号改成两个单引号,防止攻击者修改SQL命令的含义

8、。第二,删除用户输入容中的所有连字符,防止攻击者顺利获得访问权限。第三,对于用来执行查询的数据库账户,限制其权限。第四,用存储过程来执行所有的查询。第五,检查用户输入的合法性,确信输入的容只包含合法的数据。数据检查应当在客户端和服务器端都执行。第六,将用户登录名称、密码等数据加密保存。第七,检查提取数据的查询所返回的记录数量。8.为了防止在查询记录的时候被其他用户更改记录,应该采用什么方法?如何用查询语句实现该方法?答: 添加一个“时间戳”类型的字段就可以了。timestamp这种数据类型会根据当前时间自动产生一个时间字符串,确保这些数在数据库中是唯一的。timestamp一般用做给表行加版本

9、戳的机制,存储大小为8个字节。一个表只能有一个timestamp列。每次插入或更新包含timestamp列的行时,timestamp列中的值均会更新。这一属性使timestamp列不适合作为键使用,尤其是不能作为主键使用。对行的任何更新都会更改timestamp值,从而更改键值。9.有一个数据库,只有一个表,包含着1000个记录,你能想出一种解决方案来把第五行到第七行的记录取出来么?不要使用航标和索引。答:第一步建立数据库:declare i intset i=1create table #T(userid int)while (iANY(select top 4 userid from T

10、order by userid)order by userid或者:select top 7 userid from T where userid ALL(select top 4 userid from T order by userid)order by userid10.什么是聚集索引?什么是非聚集索引?什么是主键?答:表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键。聚集索引确定表中数据的物理顺序。一个表中只能包含一个聚集索引。非聚集索引与课本中的索引类似。数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。索引中的项目按索引

11、键值的顺序存储,而表中的信息按另一种顺序存储。11.现有一表,有两个字段:ID,NAME。ID为主键。如果希望查询出所有拥有2个或更多ID 的NAME,查询语句应该如何写?答:select Name from table group by(name) having(count(ID=2)。12.设供应商供应零件的关系模式为SP(Sno,Pno,Qty),其中Sno表示供应商号,Pno表示零件号,Qty表示零件数量。整个数据库如下表:Sno Pno Qty168 r1 3168 r2 4168 r3 7169 r2 1169 r3 5170 r4 8171 r7 5172 r2 1172 r7

12、3请问下面的SQL语句返回值是什么?Select * from SP SPY where exists (select * from SP SPZ where Sno)解析:在exists 中的子查询在这个例子中只返回一个值。因为从子查询中返回的行数至少有一行exits返回为true,这使得表中的所有记录都被显示了出来。请问下面的SQL语句返回值是什么?Select * from SP SPY where exists (select * from SP SPZ where Sno=168 and SPZ.Pno=SPY.Pno);解析:返回与168号供应商所提供零件一样编号的情况。若想得到与

13、168号供应上所提供零件一样的全部供应商的全部产品情况?解析:Select * from SP where Sno in (select Sno from SP where Pno in (select Pno from SP from SP where Sno=168);或者:Select * from SP SPX where exists (select * from SP SPY where SPY.Sno=168 and exists (select * from SP SPZ where SPZ.Sno=SPX.Sno and SPZ.Pno=SPY.Pno);13. 触发器怎么工作的?答:触发器主要是通过事件进行触发而被执行的,当对某一表进行诸如UPDATE、 INSERT、 DELETE 这些操作时,数据库就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。14.在一个文件中有 10G 个整数,乱序排列,要求找出中位数。存限制为 2G。只写出思路即可。(腾讯笔试题)答:(1)把整数分成256M段,每段可以用64位整数保存该段数据个数,256M*8 = 2G存,先清0。(2)读10G整数,把整数映射到256M段中,增加相应段的记数。(3)扫描256M段的记数,找到中位数的段和中位数的段前面所有段的记数,可

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号