数据库SQL注入分类及防护思路数据库SQL注入分类及防护思路

数据库SQL注入分类及防护思路数据库SQL注入分类及防护思路
数据库SQL注入分类及防护思路数据库SQL注入分类及防护思路

数据库SQL注入分类及防护思路

作者:安华金和思成

一. 背景

数据库凭借其强大的数据存储能力和卓越的数据处理性能,在各行各业的信息化建设中发挥着关键的作用。随着数据库在各行业的大规模应用,数据泄露事件也频繁发生,这就使数据库安全问题也日益凸显,逐渐变成用户越来越担心的问题。虽然数据库厂商已经做了许多有效的措施来尽量解决数据库存在的安全问题,但至今为止数据库的安全漏洞仍然不断增加。下图为近5年数据库漏洞数量图。

在数据库漏洞中最为常见的漏洞类型是SQL注入漏洞。安华金和数据库攻防实验室结合多年的实践结果总结出了数据库注入的分类分享给大家,以便大家对SQL注入型漏洞有一个更加全面的了解。

SQL注入漏洞不仅出现在WEB端,也出现在数据库的自定义或标准库的存储过程、函数、触发器中。数据库自身的SQL注入漏洞比WEB端的注入漏洞对数据库的威胁性更大。本文对SQL注入的分类是从数据库的角度来划分,不考虑WEB端的角度,这两者在分类上有着不同的角度。

首先在解释不同的数据库SQL注入漏洞之前先简要说明一下数据库攻击者能够进行SQL 注入的主要原理:SQL注入漏洞是用户在输入中混入了程序命令。最直接的例子就是攻击者

在正常的Web 页面中把自己的SQL 代码通过用户输入传输到相应的应用程序中,从而执行

一些非授权的SQL 代码,以达到修改、窃取或者破坏数据库信息的目的。SQL 注入攻击甚至可以帮组攻击者绕过用户认证机制,使其可以完全的操控远程服务器上的数据库。如果应用

程序使用一些用户输入的数据来构造动态的SQL语句去访问数据库,将可能遭受到SQL 注入攻击。同样的如果在代码中使用了存储过程,并且这些存储过程缺乏对用户输入的合理限

制也很容易发生SQL 注入。

二. SQL注入分类

2.1 注入途径分类

SQL注入漏洞按照注入的物理途径可以分成两大类:通过WEB端对数据库进行注入攻

击和直接访问数据库进行注入攻击。

直接访问数据库进行注入攻击是以数据库用户的身份直接连接数据库进行SQL注入攻击。在这种攻击方式中,攻击者可以通过SQL注入来执行SQL语句从而提高用户权限或者越权

执行。而那些在PL/SQL程序中在给用户授权的时候没有使用authidcurrent_user进行定义的存储过程、函数、触发器、程序块将更容易受到SQL注入攻击。

通过WEB应用程序的用户对数据库进行连接并进行SQL注入攻击。在这种类型的SQL 注入攻击中,攻击者多采用拼接语句的方法来改变查询的内容。获取该账号权限下的全部信息。

一些高级的攻击手段往往结合这两种方式,先利用WEB应用程序上的SQL注入漏洞获

取数据库和数据库所在服务器的基本信息。再利用数据库自身SQL注入漏洞对获取的数据库账号进行提权、越权等操作已达到对数据库进行破坏或者获取敏感信息的目的。

2.2 注入方式分类

根据入侵方式,针对数据库的SQL注入攻击可以分为四种类型,分别是SQL Manipulation、Code Injection 、Function Call Injection以及Buffer Overflows 。前两种SQL注入攻击较为常见,多出现在WEB端的SQL注入上,而后两种攻击类型是直接针对数据库自身的攻击方式,所以对数据库的安全威胁更加致命。

1.针对SQL 操作的注入攻击(SQL manipulation)是在所有的SQL 注入攻击类型中最常见的一种类型。这种攻击的原理在于攻击者会试图在已经存在的SQL 语句中通过集合运算符(SET Operator)比如UNION、INTERSECT 或者MINUS 来添加一些内容在WHERE 子句中使其功能产生变化。当然还有可能会有其他的很多变化存在。最经典的SQL manipulation 攻击就存在于登录验证过程中。一个简单的Web 应用程序就可以通过执行以下的SQL 语

句来检查用户认证是否有返回值:

SELECT * FROM users WHERE username = 'admin' and PASSWORD = 'guess'而攻击者就可以尝试修改SQL 语句使其变为:

SELECT * FROM users WHERE username = 'admin' and PASSWORD = 'xxxx'or 'a' =

'a'

通过以上对于WHERE 子句的修改操作可以使用户登录的判定恒为真,这样攻击者便绕过了用户验证获得了进入后台的权利。集合运算符UNION 也常常被用在SQL 注入攻击中,其最主要的目的就是通过操作SQL 语句来从另外一个表中返回某些行。一个WEB 窗体可

以执行以下SQL 语句从一个存在的product 表中返回一个需要的表单:

SELECT product_name FROM all_products WHERE product_name like '%ddd%'

而攻击者可以修改SQL 语句使其变为:

SELECT product_name FROM all_products WHERE product_name like '%ddd%' UNION SELECT username,password FROM dba_users WHERE username like ‘%’这种情况下在执行完这个SQL语句以后所返回的web表单中的结果就会包括

所有的产品名以及所有的数据库用户名和密码(当然需要链接账号具备查询表dba_users 权限)。

2.代码注入攻击(CODE INJECTION)就是尝试在已经存在的SQL 语句中添加额外的SQL语句或者命令。这种类型的攻击会经常的被应用在微软的SQLServer应用程序里。在SQL Server 中EXECUTE 语句经常会成为这种SQL 注入攻击的目标。虽然Oracle 这类数据库中没有相应的语句,在PL/SQL 和Java中,也不支持单个数据库的多条SQL 语句的请求,但一些程序语言或者API 可能允许多个SQL 语句同时执行。PL/SQL 和Java 应用程序可以动态的执行那些容易受到代码注入攻击的匿名PL/SQL 块。所以在特定情况下代码注入攻击对即便不支持多SQL请求的数据库依旧有效。

3.函数调用注入(FUNCTION CALL INJECTION)是因为在数据库函数或者自定义函数中存在某些漏洞,攻击者对问题函数进行SQL 语句注入从而使此函数可以执行非预期功能而达到攻击者的目的。严格讲不光数据库中的函数可能存在这些漏洞存储过程、触发器等也存在类似漏洞。这些函数调用可以被用来在数据库中生成数据或者系统调用。

以Oracle为例,Oracle 数据库允许自定义函数或者包中的函数作为SQL 语句的一部分来执行。同时Oracle 数据库在175 个标准数据库包中提供了1000 多个函数,其中有一小部分有可能遭到SQL 注入攻击,而那些用作网络通信的函数同样可以被攻击者利用。任何的自定义函数或者那些存在于自定义包中的函数都可以在SQL语句中执行。当函数作为SQL SELECT 语句中的一部分来执行的时候对于数据库来说不会造成任何变化除非这个函

数被标记成了“PRAGMATRANSACTION”。只有极少数的标准数据库函数会被自动执行,而那些在插入、更新、删除语句中执行的函数会对数据库中的数据进行修改。当攻击者使用那些有漏洞的标准

Oracle 函数的时候就可以将数据库中的信息发送到远程计算机或者在其他的数据库服务器执行攻击。许多基于Oracle 的应用程序都可能会使用那些有漏洞的数据库软件包,而这些自定义的软件包里就有可能会包括那些可以修改密码或执行那些敏感的应用程序的函数。

对于函数调用注入攻击来说,任何动态生成的SQL 语句都是脆弱的,即使是最简单的SQL 语句都可以被攻击者利用。

例如创建存储过程test说明

用DBA权限建立自定义存储过程

create or replace procedure test (putin varchar2) as

typec_type is ref cursor;

cvc_type;

buffer varchar2(200);

begin

dbms_output.enable(1000000);

open cv for ‘select object_name from all_objects where owner =’’’||putin||’’’and object_type=’’library’’’’;

close cv;

End;

/

这个SQL 语句不容易遭到其它类型的注入攻击,但是却很容易遭受到函数注入攻击。这是因为在这个函数中缺乏对输入变量的约束。攻击者可能会输入的是一个想要执行的命令。例如grant dba to public;

低权限用户构造一个含有想要执行的命令的函数

Create or replace function get_dba return varchar authidcurrent_user is

Pragma autonomous_transaction;

Begin

Execute immediate ‘grant dba to scott’;

End;

/

在这个例子中本来存储过程test是用来查询用户所拥有的库的,但是为了方便其他用户使用test的执行,这一权限被赋予了所有用户,导致任何用户都可以执行test存储过程。但是函数中由于采用了定义者权限定义test,所以造成所有用户在执行test的时候都获得了DBA 权限。

这一过程是低权限用户创建注入函数get_dba。通过test把任意低权限账号提权到DBA 权限。

Exec sys.test(‘AAAA’||username.get_dba()—‘);

至此低权限用户通过漏洞把自身提权到DBA权限可以对整个数据库进行非法控制。数据库厂商的解决方案一般是通过删除存在漏洞函数的public执行权限来解决

4.许多的标准数据库函数都很容易受到缓冲区溢出(BUFFER OVER FLOWS)攻击,这是因为只需要对那些没有及时打补丁的数据库做SQL 注入攻击就可以很容易利用到缓冲区

溢出漏洞。缓冲区溢出漏洞危害很大,往往最终会造成攻击者直接控制数据库或数据库所在操作系统。

以Oracle为例,在某些版本的标准数据库软件包和标准数据库函数中

TZ_OFFSET,TO_TIMESTAMP_TZ, BFILENAME, FROM_TZ, NUMTOYMINTERVAL, andNUMTODSINTERVAL等函数存在缓冲区溢出漏洞。而要使用这些存在缓冲区溢出漏洞的标准数据库包和函数来做缓冲区溢出漏洞攻击就需要利用到之前所介绍的函数注入的方法;当攻击者通过SQL 注入攻击来利用缓冲区溢出漏洞的时候,就可以实现远程连接操作系统。此外,一些应用程序和WEB 服务器都不能够正常处理由于缓冲区溢出所造成的数据库连接中断;通常,Web 进程将会被挂起,甚至导致发生拒绝服务攻击。

三. 防护SQL注入

数据库厂商针对SQL注入进行了大量的工作,其中以oracle为例在Oracle推出10G r2的时候开发了一个dbms_assert补丁包。这个补丁包主要被用来修复sql注入漏洞,加强对用户输入的信息的防守。修复了大量存在的数据库漏洞。但并不能呢彻底解决数据库自身的所有SQL注入漏洞。根据测试DBMS_ASSERT对二阶SQL注入和跨语言传参缺乏有效防守。

数据库厂商虽然一直在努力,但受限于数据库应用环境和场景。很多时候数据库不能及时进行补丁升级,所以很多时候数据库威胁依然存在。安华金和攻防实验室建议广大数据库用户,除了及时更新数据库补丁的同时,必要的时候采用第三方产品来加固数据库的安全。

这里安华金和攻防实验室给出两种数据库加固思路:

1.从信息的源头着手,对敏感信息进行加密。即便被攻击者获取到敏感信息,也保障信息是全密文,攻击者无法获得有价值的信息。

2.从数据库安全加固的角度。数据库防火墙可以有效防护来自外部的攻击行为。专业的数据库防火墙应该是基于数据库协议精确解析,通过对SQL语法/词法中存在的风险进行精确识别,拥有数据库虚拟补丁技术,能够进行细粒度权限管控,行为审计、监测分析等核心功能,以防止攻击者对数据库进行入侵。发挥保护数据库安全的作用。

相信以上无论哪种方式都会使用户数据库中的数据更加安全。

sql数据库期末考试题及答案

一、单选题(共 10 道试题,共 50 分。)V 1. SQL Server中,保存着每个数据库对象的信息的系统表是()。 A. sysdatabases B. Syscolumns C. Sysobjects D. Syslogs 满分:5 分 2. 在存在下列关键字的SQL语句中,不可能出现Where子句的是()。 A. Update B. Delete C. Insert D. Alter 满分:5 分 3. 在查询语句的Where子句中,如果出现了“age Between 30 and 40”,这个表达式等同于()。 A. age>=30 and age<=40 B. age>=30 or age<=40 C. age>30 and age<40 D. age>30 or age<40 满分:5 分 4. 如果要在一管理职工工资的表中限制工资的输入围,应使用()约束。 A. PDRIMARY KEY B. FOREIGN KEY C. unique D. check 满分:5 分 5. 记录数据库事务操作信息的文件是()。 A. 数据文件 B. 索引文件 C. 辅助数据文件 D. 日志文件 满分:5 分 6. 要查询XSH数据库CP表中产品名含有“冰箱”的产品情况,可用()命令。 A. SELECT * FROM CP WHERE 产品名称LIKE ‘冰箱’ B. SELECT * FROM XSH WHERE 产品名称LIKE ‘冰箱’ C. SELECT * FROM CP WHERE 产品名称LIKE ‘%冰箱%’ D. SELECT * FROM CP WHERE 产品名称=‘冰箱’ 满分:5 分 7. 储蓄所有多个储户,储户能够在多个储蓄所存取款,储蓄所与储户之间是()。 A. 一对一的联系 B. 一对多的联系 C. 多对一的联系 D. 多对多的联系 满分:5 分

SQL数据库图书管理系统(完整代码)

作品设计报告书题目:《图书管理系统》 班级网络2012-1班 学号 姓名 课程名称数据库应用技术 指导教师

目录

数据库课程设计报告书 一、设计目标 1.掌握计算机管理信息系统设计的一般方法,主要包括系统分析、系统设计的组织 和实施。 2.关系型数据库管理系统的编程技术,并能独立完成一般小系统的程序设计、调试 运行等工作。 3.培养把所学知识运用到具体对象,并能求出解决方案的能力。 二、数据库存储设计指导思想 在数据库存储设计的无数选择中,简单是系统架构师和DBA 的秘密武器。 简单,有时候就来自于对一个特定的表或表空间没有选择最优I/O 特性,总有这么一种可能,一个富有经验的DBA 拥有高超的存储技能并可以没有时间限制的去为一个非常重要的表或者索引配置一个存储。然而这样做的问题是,就算能达到设计的最佳性能,为了维护原始对象,这也经常造成对一个系统的管理变得更加复杂。好的数据库存储设计的要点是,在一个动态系统上,实现所有目标应该是最初的系统设计的一部分,并应该在数据库运行过程中长期进行。这篇文档简单的最佳实践描述达到了这些目标并且几乎没有性能损失。 三、任务 角色:读者、图书馆馆员、系统管理员;基础数据:读者信息、图书信息、操作员信息;业务数据:借还书记录登记、罚款登记;统计数据:书籍借阅情况统计或读者借阅情况统计。基本要求:利用数据库技术,完成基础数据和业务数据的储存和操作,数据库设计合理1.设计报告:含E-R图、数据字典、关系模式、关系实例、查询描述、关系代数、SQL 实现的查询语言及查询结果。 2.上机实现。

1.问题描述 1.1背景 随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。 另一方面,IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。 提高图书管理工作效率,作到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。 1.2数据需求 图书馆管理信息系统需要完成功能主要有: 1. 读者基本信息的输入,包括借书证编号、读者姓名、读者性别。 2.读者基本信息的查询、修改,包括读者借书证编号、读者姓名、读者性别等。 3.书籍类别标准的制定、类别信息的输入,包括类别编号、类别名称。 4.书籍类别信息的查询、修改,包括类别编号、类别名称。 5.书籍库存信息的输入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期。 6.书籍库存信息的查询,修改,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期登记日期等。 7.借书信息的输入,包括读者借书证编号、书籍编号、借书日期。 8.借书信息的查询、修改,包括借书证编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期等。 9.还书信息的输入,包括借书证编号、书籍编号、还书日期。 10.还书信息的查询和修改,包括还书读者借书证编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。 11.超期还书罚款输入,还书超出期限包括超出期限还书的读者借书证号,书籍编号,罚款金额。

数据库期末考试试题及答案

一、选择题(每题1分,共20分) 1.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。在这几个阶段中,数据独立性最高的是( A )阶段。 A. 数据库系统 B. 文件系统 C. 人工管理 D.数据项管理 2.数据库三级视图,反映了三种不同角度看待数据库的观点,用户眼中的数据库称为(D)。 A. 存储视图 B. 概念视图 C. 内部视图 D. 外部视图 3.数据库的概念模型独立于(A)。 A.具体的机器和DBMS B. E-R图 C. 信息世界 D. 现实世界 4.数据库中,数据的物理独立性是指(C)。 A. 数据库与数据库管理系统的相互独立 B. 用户程序与DBMS的相互独立 C. 用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的 D. 应用程序与数据库中数据的逻辑结构相互独立 5.关系模式的任何属性(A)。 A. 不可再分 B. 可再分 C. 命名在该关系模式中可以不惟一 D.以上都不是 6.下面的两个关系中,职工号和设备号分别为职工关系和设备关系的关键字: 职工(职工号,职工名,部门号,职务,工资) 设备(设备号,职工号,设备名,数量) 两个关系的属性中,存在一个外关键字为( C )。 A. 职工关系的“职工号” B. 职工关系的“设备号” C. 设备关系的“职工号” D. 设备关系的“设备号” 7.以下四个叙述中,哪一个不是对关系模式进行规X化的主要目的( C )。 A. 减少数据冗余 B. 解决更新异常问题 C. 加快查询速度 D. 提高存储空间效率 8.关系模式中各级X式之间的关系为( A )。 A. B. C. D. 9.保护数据库,防止未经授权或不合法的使用造成的数据泄漏、非法更改或破坏。这是指数据的( A )。 A. 安全性 B.完整性 C.并发控制 D.恢复 10.事务的原子性是指( B )。 A. 事务一旦提交,对数据库的改变是永久的 B. 事务中包括的所有操作要么都做,要么都不做 C. 一个事务内部的操作及使用的数据对并发的其他事务是隔离的 D. 事务必须使数据库从一个一致性状态变到另一个一致性状态 11.下列哪些运算是关系代数的基本运算( D )。 A. 交、并、差 B. 投影、选取、除、联结 C. 联结、自然联结、笛卡尔乘积 D. 投影、选取、笛卡尔乘积、差运算

SQL数据库系统期末试题

. 蚌埠学院2013—2014学年第一学期 《SQL 数据库系统》期末考试试题(A ) 注意事项:1、适用班级:11计算机科学与技术(本1、本2、本3班) 2、本试卷共2页。满分100分。 3、考试时间120分钟。 4、考试方式:闭卷 一、选择题(每小题1分,共25分) 1、在SQL SERVER 中,使用update 语句更新数据库表中的数据,以下说法正确的是( b )。 (A )每次只能更新一行数据 (B )每次可以更新多行数据 (C )如果没有数据项被更新,将提示错误信息 (D )更新数据时,必须带有WHERE 条件子句 2、在SQL Server 2008中,要防止大于100的数据被保存到int 类型的列,可以使用( d )。 (A )主键约束 (B )限制约束 (C )外键约束 (D )检查约束 3、在SQL Server 2008 中,有students(学生)表,包含字段:Sid(学号),SName(姓名),Grade(成绩)。现要将所有学员的成绩加10分。下列SQL 语句正确的是( d )。 (A )update students set Grade=Grade+10 where Sid=1 (B )update * set Grade=Grade+10 (C )update * from students set Grade=Grade=Grade+10 (D )update students set Grade=Grade+10 4、在SQL Server 2008 中,有一个product(产品)表,包含子段:pname(产品名称),要从此表中筛选出产品名称为“苹果”或者“香蕉”的记录,下列语句正确的是( c )。 (A ) SELECT*FROM product ON pname=’苹果’OR pname=’香蕉’ (B ) SELECT*FROM product ON pname=’苹果’ AND pname=’香蕉’ (C ) SELECT*FROM product WHERE pname=’苹果’ OR pname=’香蕉’ (D ) SELECT*FROM product WHERE pname=’苹果’ AND pname=’香蕉’ 5、在SQL Server 2008中,附加数据库操作是指( b )。 (A )把SQL Server 数据库文件保存为其他数据库文件。 (B )根据数据库物理文件中的信息,把数据库在SQL Server 2008中恢复。 (C )把所有该数据库表的数据清空。 (D )把数据库删除掉。 6、在SQL Sever 2008中,假设表 users 包含主键列 id ,那么执行“Update users SET id=20 WHERE id=30”,执行的结果可能有( c )。 (A )如果表中含有id 为30的记录,但不包含id 为20的记录,则更新失败。 (B )执行出错,因为主键列不可以被更新。 (C )如果表中同时含有id 为20和id 为30的记录,则更新失败。 (D )如果表中不包含id 为20 和id 为30 的记录,则更新一行记录。 7、在SQL Sever 2008中,查找 student 表中所有身份证号码CardNo 的前三位为010或020的记录,以下语句正确的是( c )。 (A )select * from student where cardno like ‘010%’ and cardno like ‘020%’ (B )select * from student where cardno like ‘010%’ or ‘020%’ (C )select * from student where cardno like ‘0[1,2]0%’ (D )select * from student where cardno like ‘0(1,2)0%’ 8、在SQL Sever 2008中,学生表student 中包含以下字段:学生编号 sid (主键),学生姓名 sName ,现在查询所有姓名重复的记录,以下语句正确的是( b )。 (A )select * from student where count(sid)>1 (B )select a. * from student a, student b where a.sname=b.sname (C )select a.* from student a, student b where a.sname=b.sname and a.sid<>b.sid (D )select * from student group by sName where count(sid)>1 9、在SQL Sever 2008 中,有系统数据库和用户数据库,下列不属于系统数据库的是( d )。 (A ) master (B ) model (C ) msdb (D ) pubs 10、在SQL Server 2008中,外键用于将一个表中的列与另一表中的列关联起来,为了确保引用的完整性,要求( a )。 装 订 线 内 不 要 答 题

sql数据库期末考试题及答案

sql数据库期末考试题及答案 一、单选题(共10道试题,共50分。)1. SQL Server中,保存着每个数据库对象的信息的系统表是 (C)。 A. sysdatabases B. Syscolu mns C. Sysobjects D. Syslogs 2. 在存在下列关键字的SQL语句中,不可能出现Where子句的是(D )。 A. Update B. Delete C. I nsert D. Alter 3. 在查询语句的Where子句中,如果出现了" age Between 30 and 40 ” ,这个表达式等同于( A) A. age>=30 and age<=40 B. age>=30 or age<=40 C. age>30 and age<40 D. age>30 or age<40 4. 如果要在一张管理职工工资的表中限制工资的输入范围,应使用( D )约束。 A. PDRIMARY KEY B. FOREIGN KEY C. uni que D. check 5. 记录数据库事务操作信息的文件是( D )。 A.数据文件 B.索引文件 C.辅助数据文件 D.日志文件 6. 要查询XSH数据库CP表中产品名含有“冰箱”的产品情况,可用( C)命令。 A. SELECT * FROM CP WHERE 产品名称LIKE '冰箱’ B. SELECT * FROM XSH WHERE 产品名称LIKE '冰箱’ C. SELECT * FROM CP WHERE 产品名称LIKE '淋箱% D. SELECT * FROM CP WHERE 产品名称='冰箱’ 7. 储蓄所有多个储户,储户能够在多个储蓄所存取款,储蓄所与储户之间是( D )。 A. 一对一的联系 B. 一对多的联系 C.多对一的联系 D.多对多的联系 8. SQL的聚集函数COUN T SUM AVG MAX MIN不允许出现在查询语句的( D)子句之中。 A. SELECT B. HAVING C. GROUP BY- HAVING D. WHERE 9. 列值为空值(NULL)则说明这一列(C)。 A.数值为0 B. 数值为空格 C.数值是未知的 D. 不存在 10. 数据库的数据一般存放在(D )中。 A.内存 B. CPU C. 寄存器 D. 磁盘 SQL Server数据库试题十及答案 一、单项选择题(每题2分,共15题) 1. SQL Server 2000 是一个(C )的数据库系统。 (A)网状型 (B)层次型(C)关系型(D)以上都不是 2. DTS是一个简称,它的全称是(B )。 A.数据运输系统 B.数据传输服务 C.数据库传输系统 D.数据库运输服务 3. SQL Server 2000 采用的身份验证模式有( D)。 (A)仅Windows身份验证模式(B)仅SQL Server身份验证模式 (C)仅混合模式(D) Windows身份验证模式和混合模式 4. SQL语言按照用途可以分为三类,下面选项中哪一种不是的:(C) (A) DML (B) DCL (C) DQL (D) DDL 5. 在SELECT语句的WHER子句的条件表达式中,可以匹配0个到多个字符的通配符是(B ) (A) * (B) % (C) - (D) ? 6. SQL Server提供的单行注释语句是使用( B)开始的一行内容。 (A) “/* ”( B) “-- ”( C) “{”( D) “/” 7. 以下那种类型能作为变量的数据类型( C)。 (A) text (B) ntext (C) table ( D) image 8.下面不属于数据定义功能的SQL语句是:(C)

MySQL数据库系统及应用综合练习

一、单项选择题(只有一个正确答案) 【1】执行语句“SELECT '2008-01-20'+ INTERVAL 2 DAY; ”结果为 A: 2008-01-22 B: 2010-01-20 C: 2008-02-11 D: 2008-03-20 答案: A 【2】下列哪个是不正确的MySQL的变量命名方式 A: _name B: n$ame C: name D: name! 答案: D 【3】字符串‘hel’lo’输出结果为 A: hel'lo B: 'hello' C: hel\'lo D: 'hel lo' 答案: A 【4】关系数据库模型是以下哪种方式组织数据结构 A: 树状 B: 文本 C: 二维表 D: 网状 答案: C 【5】使用下列哪个语句可以删除表中所有数据,但保留表结构 A: truncate table B: rename table C: delete D: drop talbe 答案: A 【6】E-R图设计属于()。 A: 概念结构设计 B: 物理结构设计 C: 逻辑结构设计 D: 需求分析设计 答案: B 【7】执行语句“GREATEST(10,9,128,1)”结果为()。 A: 9

B: 10 C: 128 D: 1 答案: C 【8】在一个关系中,若有这样一个属性存在,它的值能唯一地标识关系中的每一个元组,则称这个属性为 A: 数据项 B: 候选码 C: 主键 D: 主键值 答案: C 【9】数据库管理系统能实现对数据库中数据的查询、插入、修改和删除等操作。这种功能称为()。 A: 数据控制功能 B: 数据操纵功能 C: 数据管理功能 D: 数据定义功能 答案: B 【10】1999年10月1日在mysql中表示方法错误的是: A: "1999-10-01" B: "1999%10%01" C: "1999\10\01" D: "1999/10/01" 答案: D 【11】两个表中的行按照给定的条件进行拼接而形成新表的运算为 A: 连接 B: 投影 C: 集合 D: 选择 答案: A 【12】向表中插入一个行新的纪录的命令为 A: replace into B: insert into C: replace from D: insert from 答案: B 【13】\n在MySQL中表示 A: " B: 退格符 C: 回车符

SQL Server 数据库试题与答案B卷

《SQL Server 数据库》B卷系别:________班级:________学号:________姓名:________ 1.本试卷为闭卷考试。 2.考试时间:120分钟 3.本试卷满分:100分 4.试卷适用班级:09高职软件技术班 一、单选题:(共2分,共30题,每小题的四个备选项中,只有一项是正确的,不选,错选均不得分) 1、Microsoft SQL Server是一种基于客户机/服务器的关系型数据库管理系统,它使用( B )语言在服务器和客户机之间传送请求。 A)TCP/IP B)T-SQL C)C D)ASP 2、( A )是一个图形界面的查询工具,用它可以提交T—SQL语言,然后发送到服务器,并返回执行结果,该工具支持基于任何服务器的任何数据库连接。 A)SQL Server Management Studio B)事件探查器 C)SQL管理对象D)DTS 3、( A )是用于存储、处理和保护数据的核心组件。 A)数据库引擎B)集成服务 C)报表服务D)通知服务 4、( A )是一个具有访问网络资源权限的Windows操作系统账户。 A)本地系统账户B)网络服务账户 C)本地服务账户D)域用户账户 5、数据库系统中负责数据库系统的建立、维护和管理的人员是( D ) A)最终用户 B)应用程序员 C)系统分析员 D)数据库管理员 6、数据库设计过程中,( C )将E—R图转换为关系模式并进行关系规范化。 A)需求分析阶段 B)概念结构设计阶段 C)逻辑结构设计阶段D)物理结构设计阶段 7、强制关系中的主属性不能为空,满足以下( A ) A)实体完整性B)参照完整性 C)用户定义完整性D)域完整性 8、数据库设计规范化的第三范式除了要满足第一、第二范式外,还要满足( C )A)每个记录的列只能有一个值 B)所有非主键列的值都只能由主键列中决定

SQL数据库管理系统 A

绝密★启用前学院 学年第二学期期末考试 级专业()《SQL数据库管理系统》试卷A 一、选择题(共20分,每题1分) 1、SQL-server数据库文件的扩展名为()。 A、.ndf B、.ldf C、.mdb D、.mdf 2、数据库文件初始大小,在SQL- server 2000 中默认值为()。 A、1MB B、2MB C、3MB D、4MB 3、SQL- server 2000辅助数据库文件的扩展名为()。 A、.ldf B、.ndf C、.mdb D、.mdf 4、创建用户数据库的Transact-SQL命令是()。 A、create table B、create C、create database D、drop 5、使用Transact-SQL语句创建数据库时,()关键字是用于指定数据库的事务日志文件。 A、log on B、primary C、filename D、filegrowth 6、在SQL中,create table为( )数据库中基本表结构的命令。 A、建立 B、修改 C、删除 D、查询 7、在SQL中,alter table为( )数据库中基本表结构的命令。 A、建立 B、修改 C、删除 D、查询 8、Microsoft公司的SQLServer2000数据库管理系统一般只能运行于( )。 A、Windows平台 B、UNIX平台 C、LINX平台 D、NetWare平台 9、SQLServer2000标准版不支持的操作系统是( )。 A、Windows 2000 Server B、Windows NT Server C、Windows98 D、Windows 2000 Advanced Server 10、在SQL Server2000中.( )为用户建立数据库提供模板。 A、master B、model C、tempdb D、msdb 11、SQL Server系统中的所有系统级信息存储于哪个数据库( )。 A、master B、model C、tempdb D、msdb 12、下列语句中正确的是()。表 score(sti_id,names,math,English,VB) A、select stu_id,sum(math) from score B、select sum(math),avg(VB) from score C、select * ,sum(english) from score D、delete * from score 13、表设计器的“允许空”单元格用于设置该字段是否可输入空值,实际上就是创建该字段的() 约束。 A、主键 B、外键 C、NULL D、CHECK 14、在Transact-SQL语句中,用以修改数据库结构的命令是()。 A、create database B、drop database C、alter database D、alter table 15、在Transact-SQL语句中,用以删除数据库的命令是()。 A、create database B、drop database C、alter database D、drop table 16、整数数据类型int的存储大小为()。 A、1B B、2B C、3B D、4B 17、money型数据的存储大小为()。 A、2B B、4B C、8B D、10B 18、SQL-server数据库中每个表至多可以有()列。 A、1024 B、512 C、256 D、65536 19、数据表的名称最长不超过()个字符。 A、64 B、128 C、256 D、512 20、每个表允许存在()个住键约束。 A、1 B、2 C、3 D、4 二、填空题(共20分,每空1分) 1、数据库系统由__________和__________________两部分组成。 2、在SQL中,主码约束的关键字为__________,外码约束的关键字为____________。 3、数据库管理系统的基本功能包括____________、____________、____________和___________。 4、数据完整性可以分为____________、___________、____________和用户自定义完整性。 5、在SQL中,create view、update和drop view命令分别为_______、_______和_______视图的 命令。 6、在新版的SQL中,表之间的连接共有三种方式,对应的关键字分别为_____________、 ______________和right join。 7、SQL Server采用的结构化查询语言称为__________________。 8、一般可以使用______命令来标识 Transact-SQL批处理的结束。 9、SQL Server中的整数类型包括bigint、________、___________和tinyint四种。 三、简答题(共20分,每个5分) 1、SQL-server注释语句有哪几种符号?各用于什么情况? 2、简述索引的分类。 3、什么叫存储过程?存储过程分为哪三类?

SQL数据库考试试题

1 SQL数据库试题 一、单项选择题(每小题1分,共10分) 1.下列四项中,不属于数据库特点的是( C )。 A.数据共享 B.数据完整性 C.数据冗余专门高 D.数据独立性高 2.下列四项中,不属于SQL2000有用程序的是( D )。 A.企业治理器 B.查询分析器

C.服务治理器 D.媒体播放器 3.SQL Server安装程序创建4个系统数据库,下列哪个不是 ( C )系统数据库。 A.master B.model C.pub D.msdb 4.( A )是位于用户与操作系统之间的一层数据治理软件,它属于系统软件,它为用户或应用程序 提供访问数据库的方法。数据库在建立、使用和维护时由其统一治理、统一操纵。 A.DBMS B.DB

C.DBS D.DBA 5. 在SQL中,建立表用的命令是 ( B )。 A.CREATE SCHEMA B.CREATE TABLE C.CREATE VIEW D.CREATE INDEX 6.SQL语言中,条件年龄 BETWEEN 15 AND 35表示年龄在15至35之间,且( A )。 A.包括15岁和35岁 B.不包括15岁和35岁 C.包括15岁但不包括35岁

D.包括35岁但不包括15岁 7.下列四项中,不正确的提法是( C )。 2 A.SQL语言是关系数据库的国际标准语言 B.SQL语言具有数据定义、查询、操纵和操纵功能 C.SQL语言能够自动实现关系数据库的规范化 D.SQL语言称为结构查询语言 8.在MS SQL Server中,用来显示数据库信息的系统存储过程是( D )。

SQL数据库系统期末试题

蚌埠学院2013—2014学年第一学期 《SQL 数据库系统》期末考试试题(A ) 注意事项:1、适用班级:11计算机科学与技术(本1、本2、本3班) 2、本试卷共2页。满分100分。 3、考试时间120分钟。 4、考试方式:闭卷 一、选择题(每小题1分,共25分) 1、在SQL SERVER 中,使用update 语句更新数据库表中的数据,以下说法正确的是( b )。 (A )每次只能更新一行数据 (B )每次可以更新多行数据 (C )如果没有数据项被更新,将提示错误信息 (D )更新数据时,必须带有WHERE 条件子句 2、在SQL Server 2008中,要防止大于100的数据被保存到int 类型的列,可以使用( d )。 (A )主键约束 (B )限制约束 (C )外键约束 (D )检查约束 3、在SQL Server 2008 中,有students(学生)表,包含字段:Sid(学号),SName(姓名),Grade(成绩)。现要将所有学员的成绩加10分。下列SQL 语句正确的是( d )。 (A )update students set Grade=Grade+10 where Sid=1 (B )update * set Grade=Grade+10 (C )update * from students set Grade=Grade=Grade+10 (D )update students set Grade=Grade+10 4、在SQL Server 2008 中,有一个product(产品)表,包含子段:pname(产品名称),要从此表中筛选出产品名称为“苹果”或者“香蕉”的记录,下列语句正确的是( c )。 (A ) SELECT*FROM product ON pname=’苹果’OR pname=’香蕉’ (B ) SELECT*FROM product ON pname=’苹果’ AND pname=’香蕉’ (C ) SELECT*FROM product WHERE pname=’苹果’ OR pname=’香蕉’ (D ) SELECT*FROM product WHERE pname=’苹果’ AND pname=’香蕉’ 5、在SQL Server 2008中,附加数据库操作是指( b )。 (A )把SQL Server 数据库文件保存为其他数据库文件。 (B )根据数据库物理文件中的信息,把数据库在SQL Server 2008中恢复。 (C )把所有该数据库表的数据清空。 (D )把数据库删除掉。 6、在SQL Sever 2008中,假设表 users 包含主键列 id ,那么执行“Update users SET id=20 WHERE id=30”,执行的结果可能有( c )。 (A )如果表中含有id 为30的记录,但不包含id 为20的记录,则更新失败。 (B )执行出错,因为主键列不可以被更新。 (C )如果表中同时含有id 为20和id 为30的记录,则更新失败。 (D )如果表中不包含id 为20 和id 为30 的记录,则更新一行记录。 7、在SQL Sever 2008中,查找 student 表中所有身份证号码CardNo 的前三位为010或020的记录,以下语句正确的是( c )。 (A )select * from student where cardno like ‘010%’ and cardno like ‘020%’ (B )select * from student where cardno like ‘010%’ or ‘020%’ (C )select * from student where cardno like ‘0[1,2]0%’ (D )select * from student where cardno like ‘0(1,2)0%’ 8、在SQL Sever 2008中,学生表student 中包含以下字段:学生编号 sid (主键),学生姓名 sName ,现在查询所有姓名重复的记录,以下语句正确的是( b )。 (A )select * from student where count(sid)>1 (B )select a. * from student a, student b where a.sname=b.sname (C )select a.* from student a, student b where a.sname=b.sname and a.sid<>b.sid (D )select * from student group by sName where count(sid)>1 9、在SQL Sever 2008 中,有系统数据库和用户数据库,下列不属于系统数据库的是( d )。 (A ) master (B ) model (C ) msdb (D ) pubs 10、在SQL Server 2008中,外键用于将一个表中的列与另一表中的列关联起来,为了确保引用的完整性,要求( a )。 装 订 线 内 不 要 答 题

MySQL数据库系统及应用综合练习

一、单项选择题(只有一个正确答案) 【1】执行语句“ SELECT '2008-01-20'+ INTERVAL 2 DAY; ”结果为 A: 2008-01-22 B: 2010-01-20 C: 2008-02-11 D: 2008-03-20 答案: A 【2】下列哪个是不正确的MySQL的变量命名方式 A: @_name B: @n$ame C: @name D: @name! 答案: D 【3】字符串‘ hel ' lo '输出结果为 A: hel'lo B: 'hello' C: hel\'lo D: 'hel lo' 答案: A 【4】关系数据库模型是以下哪种方式组织数据结构 A: 树状 B: 文本 C: 二维表 D: 网状 答案: C 【5】使用下列哪个语句可以删除表中所有数据, 但保留表结构 A: truncate table B: rename table C: delete D: drop talbe 答案: A 【6 】E-R 图设计属于()。 A: 概念结构设计 B: 物理结构设计 C: 逻辑结构设计 D: 需求分析设计答案: B 【7】执行语句“ GREATEST(10,9,128,1)”结果为()。 A: 9

B: 10 C: 128 D: 1 答案: C 【8】在一个关系中,若有这样一个属性存在,它的值能唯一地标识关系中的每一个元组,则称这个 属性为 A: 数据项 B: 候选码 C: 主键 D: 主键值 答案: C 【9】数据库管理系统能实现对数据库中数据的查询、插入、修改和删除等操作。 这种功能称为()。 A: 数据控制功能 B: 数据操纵功能 C: 数据管理功能 D: 数据定义功能 答案: B 【10 】1999 年10 月1 日在mysql 中表示方法错误的是: A: "1999-10-01" B: "1999%10%01" C: "1999\10\01" D: "1999/10/01" 答案: D 【11 】两个表中的行按照给定的条件进行拼接而形成新表的运算为 A: 连接 B: 投影 C: 集合 D: 选择 答案: A 【12 】向表中插入一个行新的纪录的命令为 A: replace into B: insert into C: replace from D: insert from 答案: B 【13】\n在MySQL中表示 A: " B: 退格符 C: 回车符

sql数据库期末考试题与答案

一、单选题(共10 道试题, 共 50 分。)V1.SQLServer 中,保存着每个数据库对象的 信息的系统表是 ( C)。 A.sysdatabases B.Syscolumns C.Sysobjects D.Syslogs 2. 在存在下列关键字的SQL语句中,不可能出现Where子句的是(D)。 A.Update B.Delete C.Insert D.Alter 3. 在查询语句的Where子句中,如果出现了“ageBetween30 and40”,这个表达式等同于(A)。 A.age>=30andage<=40 B.age>=30orage<=40 C.age>30andage<40 D.age>30orage<40 4. 如果要在一张管理职工工资的表中限制工资的输入范围,应使用(D)约束。 A.PDRIMARYKEY B.FOREIGNKEY C.unique D.check 5. 记录数据库事务操作信息的文件是(D)。 A.数据文件 B.索引文件 C.辅助数据文件 D.日志文件 6. 要查询XSH数据库CP表中产品名含有“冰箱”的产品情况,可用(C)命令。 A.SELECT*FROMCPWHERE产品名称LIKE ‘冰箱’ B.SELECT*FROMXSHWHERE产品名称LIKE ‘冰箱’ C.SELECT*FROMCPWHERE产品名称LIKE ‘%冰箱%’ D.SELECT*FROMCPWHERE产品名称=‘冰箱’ 7. 储蓄所有多个储户,储户能够在多个储蓄所存取款,储蓄所与储户之间是(D)。 A.一对一的联系 B.一对多的联系 C.多对一的联系 D.多对多的联系 8.SQL的聚集函数COUNT、SUM、AVG、MAX、MIN不允许出现在查询语句的(D)子句之中。 A.SELECT B.HAVING C.GROUPBY?HAVING D.WHERE

sql数据库期末考试题及答案完整版

s q l数据库期末考试题 及答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

一、单选题(共 10 道试题,共 50 分。)V 1. SQL Server中,保存着每个数据库对象的信息的系统表是( C)。 A. sysdatabases B. Syscolumns C. Sysobjects D. Syslogs 2. 在存在下列关键字的SQL语句中,不可能出现Where子句的是(D )。 A. Update B. Delete C. Insert D. Alter 3. 在查询语句的Where子句中,如果出现了“age Between 30 and 40”,这个表达式等同于(A )。 A. age>=30 and age<=40 B. age>=30 or age<=40 C. age>30 and age<40 D. age>30 or age<40 4. 如果要在一张管理职工工资的表中限制工资的输入范围,应使用(D )约束。 A. PDRIMARY KEY B. FOREIGN KEY C. unique D. check 5. 记录数据库事务操作信息的文件是(D )。 A. 数据文件 B. 索引文件 C. 辅助数据文件 D. 日志文件 6. 要查询XSH数据库CP表中产品名含有“冰箱”的产品情况,可用( C)命令。 A. SELECT * FROM CP WHERE 产品名称 LIKE ‘冰箱’ B. SELECT * FROM XSH WHERE 产品名称 LIKE ‘冰箱’ C. SELECT * FROM CP WHERE 产品名称 LIKE ‘%冰箱%’ D. SELECT * FROM CP WHERE 产品名称=‘冰箱’ 7. 储蓄所有多个储户,储户能够在多个储蓄所存取款,储蓄所与储户之间是(D )。 A. 一对一的联系 B. 一对多的联系 C. 多对一的联系 D. 多对多的联系 8. SQL的聚集函数COUNT、SUM、AVG、MAX、MIN不允许出现在查询语句的( D)子句之中。 A. SELECT B. HAVING C. GROUP BY… HAVING D. WHERE

SQLServer数据库试题九及答案.doc

SQL Server 数据库试题九及答案 一、选择题 (每题 2 分,共 30 分 ) 1、下面不属于数据定义功能的SQL 语句是:() A.CREAT TABLE B.CREAT CURSOR C.UPDA TE D.ALTER TABLE 2、 SQL 数据库中的视图与下列哪项是对应的()。 A. 关系模式 B.存储模式 C.子模式 D.以上都不是 3、下列选项中不是数据库复制类型的是()。 A. 快照复制 B.差异复制 C.事务复制 D. 合并复制 4、下列说法错误的是 : ()。 A. 一个基本表可以跨一个或多个存储文件 B. 一个存储文件可以跨一个或多个基本表 C.每个存储文件与外部存储器上一个物理文件对应 D.每个基本表与外部存储器上一个物理文件对应 5.显示包含警告信息或其他信息的消息框,应该使用的操作是()。 A . Echo B .Message C. Warn D . MsgBox 6、在 SQL Server 2000 中,索引的顺序和数据表的物理顺序相同的索引是()。 A. 聚集索引 B.非聚集索引 C.主键索引 D. 唯一索引 7. SQL Server 的字符型系统数据类型主要包括()。 A.Int 、 money、 char B. char、 varchar、 text C. datetime、 binary 、 int D. char 、 varchar、 int 8、以下选项中哪一项不是访问数据库系统的接口()。 A.ODBC B.OLE DB C.API D.ADO 9、在 SELECT 语句的 WHERE 子句的条件表达式中,可以匹配0 个到多个字符的通配符是() A.* B.% C.- D.? 10、 SELECT 语句中与HAVING 子句同时使用的是()子句。 A.ORDER BY B.WHERE C.GROUP BY D.无需配合 11~15 题使用如下数据: 当前盘当前目录下有数据库db_stock, 其中有表stock 的内容是 : 股票代码股票名称单价交易所 600600 青岛啤酒7.48 上海 600601 方正科技15.20 上海 600602 广电电子10.40 上海 600603 兴业房产12.76 上海 600604 二纺机 9.96 上海 600605 轻工机械14.59 上海 000001 深发展 7.48 深圳 000002 深万科 12.50 深圳 11、有如下SQL 语句 create view stock_view as select * from stock where 交易所 =”深圳” 执行该语句后产生的视图包含的记录个数是() A.1 B.2 C.3 D.4 12、有如下SQL 语句

SQL数据库图书管理系统(完整代码)

广西交通职业技术学院信息工程系作品设计报告书题目:《图书管理系统》 班级网络2012-1班 学号 20120404026 姓名唐张森 课程名称数据库应用技术 指导教师乐文行 二O一三年六月

目录

数据库课程设计报告书 一、设计目标 1.掌握计算机管理信息系统设计的一般方法,主要包括系统分析、系统设计的组织 和实施。 2.关系型数据库管理系统的编程技术,并能独立完成一般小系统的程序设计、调试 运行等工作。 3.培养把所学知识运用到具体对象,并能求出解决方案的能力。 二、数据库存储设计指导思想 在数据库存储设计的无数选择中,简单是系统架构师和DBA 的秘密武器。 简单,有时候就来自于对一个特定的表或表空间没有选择最优I/O 特性,总有这么一种可能,一个富有经验的DBA 拥有高超的存储技能并可以没有时间限制的去为一个非常重要的表或者索引配置一个存储。然而这样做的问题是,就算能达到设计的最佳性能,为了维护原始对象,这也经常造成对一个系统的管理变得更加复杂。好的数据库存储设计的要点是,在一个动态系统上,实现所有目标应该是最初的系统设计的一部分,并应该在数据库运行过程中长期进行。这篇文档简单的最佳实践描述达到了这些目标并且几乎没有性能损失。 三、任务 角色:读者、图书馆馆员、系统管理员;基础数据:读者信息、图书信息、操作员信息;业务数据:借还书记录登记、罚款登记;统计数据:书籍借阅情况统计或读者借阅情况统计。基本要求:利用数据库技术,完成基础数据和业务数据的储存和操作,数据库设计合理1.设计报告:含E-R图、数据字典、关系模式、关系实例、查询描述、关系代数、SQL 实现的查询语言及查询结果。 2.上机实现。

相关文档
最新文档