SQL数据库技术

2024-08-28

SQL数据库技术(精选十篇)

SQL数据库技术 篇1

1 SQL 访问管理器和 SQL 函数1

为实现组态王和外部数据库之间的数据传输,组态王提供了SQL访问功能,它包括SQL访问管理器和SQL函数两部分。组态王SQL访问管理器主要有创建表格模板和创建记录体两部分功能: 利用表格模板在数据库中创建表格; 利用记录体建立SQL Server数据库中字段与组态王之间的联系。SQL函数是组态王标准函数的扩充,其使组态王可与数据库进行信息交换,利用SQL函数可进行创建表格、编辑已有表格、插入记录、查询已有记录及删除记录等操作。

2 SQL 技术在加热炉数据监测中的应用

2. 1 创建数据源与数据库

首先利用SQL Server2005创建一个数据库,命名为Data Base; 然后利用ODBC数据源管理器中的系统DSN新建一个SQL Sever驱动的数据源,命名为SQL Conn; 最后对SQL Conn数据源进行配置,使其指向Data Base数据库。

2. 2 创建表格模板

在创建表格模板之前,应先定义数据词典,数据词典中存放的是工程中定义的变量和一些系统变量。数据词典中定义的变量如下:

Device ID内存整型

氧含量2内存实型

氧含量3内存实型

一氧化碳2内存实型

一氧化碳3内存实型

排烟温度2内存实型

排烟温度3内存实型

热效率2内存实型

热效率3内存实型

酸露点2内存实型

这些变量可用来实现组态王与SQL Server数据库的联系。

然后在组态王的工程目录显示区中选择SQL访问管理器的表格模板新建表格模板table( 图1) 。后面在创建数据库表格中会用到SQLCreatTable( ) 函数,此函数可以在Data Base数据库中自动建立表格。

2. 3 创建记录体

在组态王的工程目录显示区中选择SQL访问管理器的记录体选项以新建记录体Test( 图2) 。在新建的Test记录体中,表格模板中字段对应的数据类型和名称必须与此字段对应的变量数据类型保持一致,但字段的排列顺序可以不一致。

2. 4 编写命令语言

连接数据库的命令语言为:

SQLConnect ( Device ID," dsn = SQL _ Conn; uid = sa;pwd = " )

上述命令语言实现了组态王与SQL Conn数据源的连接,即与Data Base数据库建立了连接。将此命令写入组态王工程浏览器中应用程序命令语言的启动中,以实现系统开始运行时就可以连接到数据库上。

创建数据库表格的命令语言为:

SQLCreateT able( DeviceI D," KingT able" ," table" )

上述命令语言实现了以表格模板table的格式在数据库中建立名为King Table的表格。也将此命令写入组态王应用程序命令语言的启动中,以实现系统开始运行时就可以自动创建数据库表格。

插入记录的命令语言为:

SQLInsert( DeviceI D," KingT able" ," Test" )

组态王将记录体中相关联的变量当前值插入到Data Base数据库表格中,从而生成一条新的记录,达到将组态王中的数据写到外部数据库的目的。

查询记录的命令语言为:

SQLSelect( DeviceI D," KingT able " ," Test" ," " ," " )

当需要将数据库中的数据调入组态王来显示时,需将此命令写入组态王应用程序命令语言中的运行,并且添加查询下一条记录的命令:

SQLNext( Device ID)

断开连接的命令语言为:

SQLDisconnect( Device ID)

将此命令写入组态王应用程序命令语言中的退出,系统在退出后将自动断开与Data Base数据库的连接。至此,通过组态王SQL数据库技术已经成功连接上SQL Server数据库,并通过上述SQL命令语言实现了写入及查询数据等操作。

2. 5 动态加载方式访问动态链接库

对动态链接库的访问分为隐式链接加载和动态加载两种方式,笔者采用动态加载方式访问组态王提供的链接库Kingvew Cliend. dll。动态库提供的接口函数主要有7个,在整个调用过程中有相应的次序和功能,主程序流程如图3所示,根据主程序流程,利用Visual C ++ 基于对话框模式设计客户端界面,编写应用程序。

3 系统测试

系统测试主要完成对数据传输的测试。图4为应用Visual C ++ 基于对话框模式开发的加热炉数据监测界面,将组态王采集到的实时数据显示到客户端。

进入系统测试时,首先系统自动连接组态王,进入图4所示的监测界面后,可选取需要查看的加热炉运行参数,图中显示了排烟温度、热效率、氧含量和一氧化碳的当前值。图5为组态王的信息窗口,系统自动连接组态王时就会弹出此信息窗口,从图5也可以看出,系统显示的是最后记录,即显示的是运行参数的当前值,实现了数据的实时传输。

系统测试表明: 该系统基本实现了将加热炉现场运行的实时数据传输到客户端界面,工作人员无需到控制现场,在客户端就可以实时查看加热炉运行的状态参数。

4 结束语

SQL数据库技术 篇2

1、实验目的:

(1)了解SQL Server数据库的逻辑结构和物理结构;

(2)掌握使用SQL语句修改数据库的方法;

2、实验准备:

(1)要明确能够修改数据库的用户必须是系统管理员,或者是被授权使用CREATE DATABASE语句的用户;

(2)修改数据库必须要明确:除存储位置,即物理文件名不能修改外,其它项均可以修改,包括数据库名、数据库大小和增长量等数据;

(3)了解使用SQL语句修改数据库的方法。

3、实验内容:

(1)删除实验三中创建的数据库;

(2)用自己名字创建一个数据库,包含一个主数据文件data1和一个日志文件log1,最大值都是5M;增长量分别为10%和1M;存储在自己的文件夹下;

(3)添加一个数据文件data2,最大值为3M;

(4)添加一个日志文件log2,最大值为4M;

(5)添加一个文件组group1;

(6)添加一个次数据文件data3放在文件组group1中;

(7)修改数据文件data2,将最大值改为5M;

(8)删除日志文件log1;

(9)删除次数据文件data3、data2;

(10)修改文件组,将group1改名为group2;

(11)删除文件组group2;

(12)将log2的增长量改为1M。

(13)缩小该数据库的大小,保留自由空间1M,保留释放的文件空间。

(14)将数据库的日志文件log2缩小到3M。

SQL数据库技术 篇3

关键词:SQL语句;优化;智能;自动;数据库;程序

中图分类号:TP311.131 文献标识码:A文章编号:1007-9599 (2010) 09-0000-01

SQL Statement Optimization Study for Database

------- LECCO SQL Expert Analysis and Research

Li Maozhou

(Sichuan Transportation Vocational&Technical College,Chengdu611130,China)

Abstract:Some optimization experts believe that database can get nearly 40% system performance by optimizing SQL statements to high performance of SQL statements about the problem of database SQL statement optimization,which have always been keen on by computer researchers. Through artificial intelligence to automatically optimize on the SQL is re-inputing of the SQL statement for get the optimal SQL statement with the same effect.

Keywords:SQL statement;Optimization;Intelligent;Automatic;

Database;Program

一、对数据库中SQL语句进行优化的背景

我们都知道,对于一个计算机数据库系统的生命周期进行分阶段优化研究,它可以分为设计阶段优化、开发阶段优化、成品阶段优化这三个阶段,在数据库设计阶段优化数据库性能其成本最低收益最大,而对于成品阶段优化而言,这一阶段对数据库性能优化的成本最高收益最小,许多的优化专家都认为,通过对网络、数据库参数、计算机硬件、应用程序等来优化数据库系统可以在很大程度上让计算机数据库系统性能得到提升,据统计数据库系统性能提升的40%来源于对网络、计算机操作系统、数据库参数等的优化,其余的将近60%则是来源于对数据库应用程序的优化,有的优化专家甚至认为对于数据库应用程序中SOL语句的优化占到其中的一半还多,由此可见优化数据库中SQL语句对于计算机数据库系统性能的提升有着很大的影响。

二、在计算机数据库中SQL语句优化的意义

作为对计算机数据库进行操作的唯一途径,SQL语句对于计算机数据库系统的性能直接有着决定性的影响。在数据库资源的消耗中,SQL语句占了总消耗量的70%-90%;基于独立于程序设计逻辑的特点,我们对SQL语句进行优化对于计算机数据库来说,不对造成程序逻辑的混乱。

三、对SQL优化技术的发展历程进行分析

在计算机数据库方面的研究中,对于SQL优化技术而言,它的发展一共经历的三个阶段,在第一阶段是专门针对输入方面的SQL语句执行计划分析的技术,这种从数据库中提取执行计划,而且执行解释关键字含义的技术被称为第一代的SQL优化技术。第二阶段的SQL优化技术是通过对输入的SQL语句的执行计划进行分析,由此来产生是否增加索引的建议,这类技术被称为二代的SQL语句优化工具,它只能提供增加索引的一些建议,最后一阶段的SQL优化技术在分析输入SQL语句执行计划的基础上,同时对输入的SQL语句本身进行语法分析,由此来产生对SQL语句写法上的改进。

四、对于人工智能自动SQL优化技术-----LECCO SQL Expert的分析性研究

(一)对于LECCO SQL Expert优化模块的特点进行研究

LECCO SQL Expert通过独家的人工智能知识库反馈式搜索引擎进行对SQL语句进行优化,通过重写性能优异的SQL语句来达到对数据库系统性能的提升,在保证产生相同结果的接触上,它通过先进的SQL语法分析器来对较为复杂的SQL语句进行分析,通过对优化重写而得出的SQL语句进行测试运行,从而自动的找出性能最好的SQL语句,为应用程序跟数据库提供最为便捷的服务。

其次,LECCO SQL Expert作为非常先进的SQL优化工具,它提供的边做边学式训练模式,可以迅速有效的提升开发人员的SQL编程技能,而且与此同时提供SQL运行状态帮助跟更为便捷的上下文敏感的执行计划帮助系统,提供出独一无二的SQL重写解决方案。

(二)LECCO SQL Expert可以让普通的程序员写出专家级别的SQL语句

对SQL语句的优化变的方便快捷简单是其最大最优特点,笔者认为只要能写出好的SQL语句,它就能为用户提供出最好性能的优化写法,同以往的数据库优化手段进行分析比较,LECCO SQL Expert的出现把数据库优化技术提升了一个很高的层次,在最短的时间内找出所有可能的优化方案,再通过实际的测试,提供出最有效的优化方案,让普通的程序员即可写出专家级别的SQL语句,这一最大的特征让原本传统上由人的来完成的完全依赖于人的经验、受人思维限制的数据库优化手段变得更为简单有效,更为自动准确起来。

五、结束语

總的来说,对于数据库的优化时一个严格复杂的系统工程,在数据库德整体实施过程中影响到数据库系统性能的因素是非常多的,不同项目应用要求也各不相同,我们必须对数据库运行的实际情况加以分析,然后才能得出更好的优化解决方案。通过对计算机数据库中SQL语句的优化研究,一定程度上可以为数据库德更好的维护跟开发提供一些有益的解决办法。

参考文献:

[1]茹蓓.SQL查询语句的优化,《新乡教育学院学报》,2006年第4期

[2]马建霞.巧用执行计划优化SQL Server数据库查询,《电脑与电信》,2010年第6期

关于SQL数据库查询模块应用 篇4

VB6.0全称Visual Basic6.0是Microsoft公司推出的基于Windows环境的计算机程序设计语言,它采用面向对象与事件驱动的程序设计思想,使编程变得更加方便、快捷。是国内外最流行的程序设计语言之一,也是学习开发Windows应用程序首选的程序设计语言。目前已经成为高等院校计算机专业及非计算机专业的重要课程,而倍受程序员及广大电脑爱好者的青睐。另外,由微软的统计数据显示,利用VB开发的应用程序中,有85%以上是和数据库相关的,它在数据库应用方面具有相当强大的功能。

2 查询

查询功能是数据库管理系统中不可缺少的部分,在VB中实现数据库查询的方法有四种,其中Seek、Find、filter三种方法所设计的查询功能通用性和灵活性较差,在此不作介绍。要实现功能强大的查询必须借助于SQL的Select语句来实现,通过“OptionButton”控件为Select提供“单一查询条件”来完成单项查询模块的设计;根据现实管理习惯,通过“ComboBox及TextBox”等控件为Select提供“多项复合条件查询条件”来完成多项查询模块的设计。并将查询的结果放入DBGRID控件中进行浏览。

现以笔者完成的《华南物供应资源管理软件》为例,说明使用SELECT-SQL查询语句实现查询功能的具体方法。

3 SQL查询

SQL即结构化查询语言,它是关系型数据库的标准语言。由于SQL语言使用方便、功能丰富、简单易学得到很快的应用和推广,是各种关系型数据库的公用语言。使用SQL查询可以从一个表或多个表或视图中对数据库进行查询。设计出功能比较强大的数据库MIS.。有关SQL的更多信息,请参阅相关书籍,如:《SQL Server项目开发实践》、《SQL Server教程》等,本文不多介绍)。它的核心语句是Select-SQL语句。

3.1 Select-SQL查询语句的格式

Select[DICTINCT/ALL]——查询目标列

FROM tableexpression——表名/视图名

[WHERE]——条件

[GROUP BY…]——将查询结果的记录分组

[HAVING…]——满足条件的分组

[ORDER BY…]——对查询结果进行排序

3.2 单项查询模块

3.2.1 应用的数据库

hwin_db.mdb中包含表:input字段名:资物名称、供货单位、供货日期、到货数量、总金额…….等等。

3.2.2 定义窗体及控件(见表1)表1

3.2.3 编写程序代码

变量定义

3.3 多项复合查询模块

3.3.1 应用的数据库

hwin_db.mdb中包含表:input字段名:物资名称、供货单位、供货日期、到货数量、总金额等等。

3.3.2 定义窗体及控件

如表2。

3.3.3 编写程序代码

下面程序可实现“物资名称”为某值、供货日期在一定范围的采购明细的查询。

定义变量

4结语

本文对Select-SQL语句进行了详细的介绍,给出了窗体控件的属性和代码的核心部分,并去掉了许多修饰性的内容,在此基础上稍加扩充或修改,便可得到更完善的通用查询模块。以上程序均在Windows XP环境下VB6.0中运行通过。

参考文献

[1]曾强聪.Visual Basic6.0程序设计教程.北京:中国水利水电出版社,2004.

[2]余杰.SQL Server项目开发实践.北京:中国铁道出版社, 2006.

数学函数 sql数据库 篇5

数学函数如下表所示:

函数参数功能ASIN、ACOS、ATAN(float_expr)求float_expr的反正弦、反余弦、反正切ATN2(float_expr1,float_expr2)求float_expr1/float_expr2的反正切SIN、COS、TAN、COT(float_expr)求float_expr的正弦、余弦、正切DEGREES(numeric_expr)将弧度转换为度RADIANS(numeric_expr)将度转换为弧度EXP(float_expr)求float_expr的指数值POWER(numeric_expr,y)求numeric_expr的y次方SQRT(float_expr)求float_expr的平方根LOG(float_expr)求float_expr的自然对数LOGIO(float_expr)求float_expr以10为底的对数ABS(numeric_expr)求numeric_expr的绝对值GEILING(numeric_expr)返回大于等于numeric_expr的最小整数FLOOR(numeric_expr)返回小于等于numeric_expr的最大整数RAND({seed})返回0到1之间的随机浮点数,可能使用整数表达式指定其初值PI返回常数3.141592653589793ROUND(numeric_expr,length)将numeric_expr小数点后的值四舍五入,保留的小数位数为lengthSIGN(numeric_expr)numeric_expr的值为正数、0或负数时分别返回1、0、-1数值

浅析SQL数据库的设计 篇6

关键词:SQL数据库;开发;设计

中图分类号:TP311.138文献标识码:A文章编号:1007-9599 (2013) 06-0000-02

1前言

SQL是一种数据库语言,使用方便、简单易学、功能强大,使用者在操作SQL数据库的过程中不用去考虑“怎么做”,只需要按照自己的意愿给计算机发出“做什么”的命令即可。SQL数据库的应用极为广泛,能够与绝大多数的数据库相通兼容,已经成为了数据库操作的基础。本文以某企业营销数据库为例,就SQL数据库的设计进行探讨。

2SQL数据库的性能调整

2.1系统规划

在整个SQLServer2000数据库中,数据库服务器处于核心地位,整个SQLServer2000数据库直接被数据库服务器的性能高低影响。为了给SQLServer2000数据库更好的性能,可以调整和优化SQL Server2000数据库的许多方面,如备份与恢复、复制、硬件、SQL Server配置、SQL索引、SQL语句、数据库设计其他。

2.2优化SQL语句

SQL语句的优化是一个较为复杂的过程,涉及到诸多缓解,而其实质就是在结果正确的基础前提下,尽量减少表扫描的I/O次数,避免表搜索的发生,将计算机能够识别的语句用优化器进行优化。

2.3存储过程调整

一般都是采用PROCEDURE(属于Transact-SQL语句)来创建SQL Server数据库的存储过程,修改的时候还可以用ALTER PROCEDURE语句。SQL Server数据库的存储过程主要包括看过程参数的说明和过程名称两个部分。

2.4高性能恢复与备份

为了有效地确定应该选择何种还原策略和备份策略,应该及时地对数据的可用性要求进行确定。

3SQL数据库的开发与设计

3.1项目组的建立

现代企业管理中较为重要的理念就是项目管理思想,营销数据库要建立好的管理思想必须要建立一个全面管理、领导、组织、规划SQL数据库开发与管理工作的项目小组,同时还要基于职能范围和工作量的需要来相应设置一些职能小组,以便在组织结构上对于SOL数据库的开发与设计进行保障。

3.2相关人员设备的配置

相关人员配置主要是2类人员,分别是数据库开发管理技术人员和专业人员,二者相互协调,共同解决SOL数据库的开发与设计的技术操作及实际开发问题,用现实的数据库系统资料将营销人员的需求进行转化。与此同时,还应配备好如服务器、电脑等相应的设备保障。硬件和软件条件齐全才能保证数据库的创建和管理能顺利开展。

3.3SQL数据库的创建

SQL数据库的创建之初就要给定开发方向,制定相应的企业营销数据库适用范围、任务和功能。应该要让数据库开发人员和营销人员都树立起营销数据库的重要性,在企业营销过程中获得客户情况的惟一途径就是建立和管理好营销数据库,数据库的编制务必做到高质量、详尽、准确、全面。首先分析SQL数据库的结构,依据3个内容进行统计:第一,行为特征数据。如购买频率、平均消费金额、历史购买记录、特殊爱好、家庭结构、生活方式等;第二,基本情况数据,包括电子邮件、传真、电话、姓名、地址、性别、教育程度、职业、收入、婚姻状况、年龄等;第三,互动性行为特征,如购买方式、送货方式、支付方式等。

3.4新建SQL数据库的方法

在对象资源管理器里面,右键点击数据库,新建数据库,就可以了;或者在查询分析器里面运行代码也可以:例如创建一个数据库:

USE master

GO

--判断是否存在bankDB数据库

IF EXISTS(SELECT*FROM sysdatabases WHERE name='bankDB')

DROP DATABASE bankDB

GO

--在D盘创建bank文件夹

EXEC xp_cmdshell'mkdir D:bank',NO_OUTPUT

-- 创建数据

CREATE DATABASE bankDB

ON PRIMARY

(

NAME='bankDB_data',

FILENAME='D:\bank\bankDB_data',

SIZE=5MB,

MAXSIZE=500MB,

FILEGROWTH=15%

)

LOG ON

(

NAME='bankDB_log',

FILENAME='D:\bank\bankDB_log',

SIZE=1MB,

MAXSIZE=10MB,

FILEGROWTH=5%

)

3.5典型数据库对象

事务对象:事务对象用于管理数据库的事务,将多个操作合并为一个单一的事务处理。该对象缓存了对数据源的改变,使应用程序有机会选择提交或者回退以往的操作。事务能够提高应用访问数据库的性能,但是OLE DB数据服务器并不要求支持该对象。该对象包括如下接口:

CoType TTransaction{

[mandatory]interface IConnectionPointContainer;

[mandatory]interface ITransaction;

[optional] interface ISupportErrorInfo;

}

命令对象:命令对象用于对数据源发送文本命令。对于支持SQL的数据源,SQL命令同命令对象一起执行,包括两种数据定义语言和产生行集对象的查询,对于其它不支持SQL的数据源,命令对象给数据源发送其它类型的文本命令。但是对于数据提供程序来说,不一定必须支持这个命令对象。一个单独的会话能够产生多个命令对象。该对象包括如下接口:

CoType TCommand{

[mandatory]interface IAccessor;

[mandatory]interface IColumnsInfo;

[mandatory]interface ICommand;

[mandatory]interface ICommandProperties;

[mandatory]interface ICommandText;

[mandatory]interface IConvertType;

[optional]interface IColumnsRowset;

[optional]interface ICommandPrepare;

[optional]interface ICommandWithParameters;

[optional]interface ISupportErrorInfo;

}

4结语

SQL数据库的应用极为广泛,本文就SQL数据库在某企业的设计和开发做了分析和探讨,并对SQL数据库的性能调整进行了分析,在以后的研究中值得进一步深入研究。

参考文献:

[1]丁燕云,魏娟.浅析SQL数据库的性能优化问题[J].科技信息(学术研究),2007(34):112-115.

[2]谷震离.SQL Server数据库应用程序性能优化方法[J].计算机工程与设计,2006(15):102-105.

[3]谷震离,侯迎春.SQL Server数据库性能优化方法[J].商丘职业技术学院学报,2006(05):176-177.

[4]董建华.SQL Server数据库的性能优化技术研究[J].科技广场,2007(05):102-105.

[作者简介]肖念(1984.9-),女,湖北孝感人,武汉信息传播职业技术学院,专职教师,硕士研究生,计算机应用。

SQL数据库的备份与恢复技巧 篇7

1 SQL数据库备份

1.1 数据库备份的类型

SQLServer2005提供了四种备份数据库的类型:它们分别是完整备份、差异备份、事务日志备份和文件和文件组备份。完整备份:备份整个数据库的所有内容, 包括事务日志。该备份类型需要比较大的存储空间来存储备份文件, 备份时间也比较长, 在还原数据时, 也只要还原一个备份文件。差异备份:是完整备份的补充, 差异备份只备份上次完整备份后更改的数据。事务日志备份:事务日志备份只备份事务日志里的内容。事务日志记录了上一次完整备份或事务日志备份后数据库的所有变动过程。文件和文件组备份:如果在创建数据库时, 为数据库创建了多个数据库文件或文件组, 可以使用该备份方式。

备份数据库要充分使用以上不同方式的组合, 使备份时间短、备份数据量小, 恢复操作简单。数据库可以备份到磁盘或磁带中, 如果是备份到磁盘中, 可以有两种形式:一种是文件的形式, 一种是备份设备的形式。但无论是什么形式, 在硬盘中的体现都是文件形式。数据库的备份的是我们数据库管理员的基本操作。

1.2 备份数据库应该考虑的问题

(1) 什么时候备份数据库? (2) 隔多久备份一次数据库?每天数据库里改变的数据有多少?如果一天只有数十条数据改变, 却天天备份数据库, 这也不是一个明智的选择。 (3) 用什么方式备份数据库?每次备份数据库都用完整模式, 还是先用一次完整模式后再用几次差异备份模式? (4) 将数据库备份到哪里?是磁盘中, 还是磁带中? (5) 一旦数据发生问题, 恢复数据要花多少时间?数据能恢复到哪个时间状态?如何备份数据库, 主要是看数据库里每天变动的数据量以及恢复数据时可以允许多大范围内的误差而决定的。

2 恢复模式

在SQL Server 2005事务日志会记录数据库中每一次的数据变动。事实上并不是所有数据库都需要记录每一次的数据操作。如果每个操作都要记录的话, 数据库不但要写数据文件, 而且还要写日志文件, 在操作大量数据时 (如导入数据) , 会降低数据库的性能。在SQL Server 2005可以使用“恢复模式”来设置事务日志的操作方法。SQL Server 2005中的恢复模式分为以下三种:

2.1 完整恢复模式

在该恢复模式下, SQL Server 2005会完整记录下操作数据库的每一个步骤。通常来说, 对数据可靠性要求比较高的数据库需要使用该恢复模式, 如银行、邮电等部门的数据库系统, 任何事务日志都是必不可少的。该恢复模式也是SQL Server 2005默认的恢复模式。使用完整恢复模式可以将整个数据库恢复到一个特定的时间点。是这个时间点可以是最近一次可用的备份、一个特定的日期和时间或标记的事务。在该模式下应该定期做事务日志备份, 否则日志文件将会变得很大。

2.2 大容量日志恢复模式

是对完整恢复模式的补充。在该恢复模式下, 只对大容量操作 (如导入数据、select into等操作) 进行最小记录, 在保护大容量操作不受媒体故障的危害下, 提供最佳性能并占用最小日志空间。例如一次在数据库中插入数十万条记录时, 在完整恢复模式下每一个插入记录的动作都会记录在日志中, 那么数十万条记录将会使日志文件变得非常大。在大容量日志恢复模式下, 只记录必要的操作, 不记录所有日志, 这么一来, 可以大大提高数据的性能, 但是由于日志不完整, 一旦出现问题, 数据将有可能无法恢复。因此, 一般只有在需要进行大量数据操作时才将恢复模式改为大容量日志恢复模式, 将数据处理完毕之后, 马上恢复到完整恢复模式。

2.3 简单恢复模式

在该模式下, 数据库会自动把不活动的日志删除。因此简化了备份的还原, 但是因为没有事务日志备份, 所以不能恢复到失败的时间点。通常只有在对数据库数据安全要求不太高的数据库中使用。在该模式下数据库只能做完整备份和差异备份。

在SQL的对象资源管理器窗口中就可以完成数据库的备份和还原的操作。

3 SQL数据库的恢复技巧

3.1 在SQL Server Management Studio里还原数据的方法

启动【SQL Server Management Studio】, 右击要还原的数据库, 在弹出的快捷菜单里选择【任务】à【还原】à【数据库】, 【弹出】对话框选择【还原数据库】对话框SQL Server 2005在【选择用于还原的备份集】区域里进行了完善工作, 可以一次性选择多个备份集来还原数据库, SQL Server 2005会自动按次序还原这些备份。如果顺利的话, 数据库就还原成功了。

3.2 用T-SQL语言还原数据库

T-SQL语言里提供了RESTORE DATABASE语句来恢复数据库备份, 用该语句可以恢复完整备份、差异备份、文件和文件组备份。如果要还原事务日志备份则还可以用RESTORE LOG语句。虽然RESTORE DATABASE语句可以恢复完整备份、差异备份、文件和文件组备份, 下面简单的介绍还原完全备份的方法, 其它方法可以参考进行。

例如:用名为“Northwind备份”的备份设备来还原Northwind数据库, 其代码如下:

USE master

RESTORE DATABASE Northwind

FROM Northwind备份

3.3 无日志文件的恢复技巧

有时候备份数据库的时候, 丢失或损坏了数据库的日志文件, 导致在附加恢复数据库的时候质疑出错, 我们可以采用下面的办法, 使得数据库恢复成功。例:

被置疑的数据库是sp_detach_db和附加数据库是sp_attach_single_file_db。大致的步骤是:

(1) 新建一个同名的数据库;

(2) 再停掉sql server (注意不要分离数据库) ;

(3) 用原数据库的数据文件覆盖掉这个新建的数据库;

(4) 再重启sql server;

(5) 此时打开企业管理器时会出现置疑, 先不管, 执行下面的语句 (注意修改其中的数据库名) ;

(6) 完成后一般就可以访问数据库中的数据了, 这时, 数据库本身一般还要问题, 解决办法是, 利用数据库的脚本创建一个新的数据库, 并将数据导进去就行了。

USE MASTER

GO

SP_CONFIGURE'ALLOW UPDATES', 1 RECONFIGURE WITH

OVERRIDE

GO

UPDATE SYSDATABASES SET STATUS=32768 WHERENAME='置疑的数据库名

Go

sp_dboption'置疑的数据库名', 'single user', 'true'

Go

DBCC CHECKDB ('置疑的数据库名')

Go

update sysdatabases set status=28 where name='置疑的数据库名'

Go

sp_configure'allow updates', 0 reconfigure with override

Go

sp_dboption'置疑的数据库名, 'single user', 'false'

Go数据库就恢复成功了。

3.4 建立自动备份的维护计划

既然数据库备份如此重要, 作为一个数据库管理员就不得不花大量的时间去给数据库做备份。当一个数据库里数据更新得比较频繁时, 那么一天几次备份是必不可少的, 如果每次都要数据库管理员手动备份数据库, 那将是一个负担不堪的工作任务。SQL Server 2005中可以使用维护计划来为数据库自动备份, 减少数据库管理员的工作负担。其使用方法如下:启动【SQL Server Management Studio】, 在【对象资源管理器】窗口里选择【数据库实例】à【管理】à【维护计划】选项中进行。

4 小结

一个数据库管理员, 为了保证数据库里的数据万无一失, 必须要定期对数据库进行备份, 一旦数据库出现了问题, 可以从备份的文件里最大程度地还原数据。

备份数据库要充分使用几种不同方式的组合, 使备份时间短、备份数据量小, 恢复操作简单高效。要妥善管理好备份设备。备份设备尽量不要与数据库系统放在同一台服务器上, 以免硬件发生故障时备份数据也保不住。如果可能的话, 可以将备份设备刻录到光盘上。使用维护计划可以将数据库管理员从繁重的备份工作里解放出来, 提高数据库的管理效率。

摘要:SQL数据库是现在普遍采用的一种关系型的数据库管理系统。数据库中数据的重要性事显而易见的, 但是因为种种原因, 如磁盘故障、计算机硬件故障、用户操作失误等, 都有可能会损坏数据。为了保证在发生这些意外的时候可以最大限度地挽救数据, 数据库管理员必须要经常备份数据库里的数据, 以便在数据库出现问题的时候还原。本文以SQL2005为例, 介绍了几种数据库备份和恢复的技巧。

关键词:SQL数据库,数据灾难,数据库恢复

参考文献

[1]刘少伟.企业信息系统数据安全性分析[J].商业经济, 2009 (2) .

[2]张跃东.用VFP备份和恢复SQL Server数据库的方法[J].信息技术, 2008 (11) .

[3]Mark Jonikas, 刘国田.SQL数据库服务器Microsoft SQL Server6.0简化了数据库管理[J].个人电脑, 1996 (1)

[4]魏建斌.Informix数据库数据备份与恢复技术初探[J].甘肃高师学报, 2006 (2) .

XML数据写入SQL数据库的方法 篇8

在XML应用日益广泛的今天,经常会遇到用XML进行数据交换的问题。当接收的数据比较复杂,在SQL数据库中要更新不止一个表的时候,如何方便、快捷地把接收的数据写进数据库,这是一个需要认真考虑的问题。下面就通过一个比较典型的例子来探讨一下解决问题的方案。

接收的XML结构如下:

2 实现

XML的数据分为两部分即common(采集器信息)和data(历史数据信息)。接收到数据后,要检查数据库中是否有该采集器信息,如果存在则取得采集器ID;如果不存在,则在表中添加数据,并取得ID。最后在历史数据表中插入data中相应的数据。

3 程序结构

(1)打开XML。

(2)读取common中的数据,在数据库中查询采集器ID。

(3)读取DATA中的数据,填充到与C_meter_history结构一致的DataTable中。

(4)把数据写入数据库。

4 代码说明

4.1 变量定义

4.2 主程序

4.3 取得采集器ID

4.4 写入数据库

5 结语

基于SQL数据库的性能优化研究 篇9

关键词:SQL,优化,研究

引言:随着基于SQL的数据库在现代化信息平台中的广泛应用, 人们开始使用其对大型数据进行高效科学的管理, 其效率问题受到了更多的关注。数据量不断增长, 尤其是联机事务处理系统中, 用户对于数十万级以上的数据查询需要耗费相当多的运行成本。为了节省在大型数据处理中耗费的资源, 提高用户的工作效率, 对数据库系统性能进行优化是至关重要的。

一、数据库优化通用途径

影响数据库运行效率的因素多种多样, 需要针对不同的环节进行优化。主要包括对逻辑数据库设计的优化、物理数据库硬件的优化、服务器硬件平台性能的优化以及SQL语句本身查询的优化。本文即针对SQL语句本身的优化来提高数据库处理的效率。

二、SQL语句优化原理

SQL (Struc ture d Que ry La ng ua g e即:结构化查询语言) 是集数据定义和数据操纵为一体的数据库语言, 是任何一个数据库管理系统 (DBMS) 都应向用户提供的一种交互式语言, 可以作为独立的语言在终端上以交互方式使用, 也可以作为程序设计中的子语言使用, 即嵌入到高级语言中使用, 通过SQL语言的使用, 用户可以方便地从数据库中获得自己需要的信息。SQL语句的优化是将原有的SQL语句转换成为语义相同而处理效率更高的SQL语句。SQL语句的优化原理是尽可能减少查询中各表参与加工的数据量, 从而达到优化时间和空间的目的。查询优化力图找出与给定表达式等价, 但执行效率更高的一个表达式。一个查询往往会有许多实现办法, 关键是如何找出一个与之等价的且操作时间又少的表达式。数据查询处理的代价通常取决于对磁盘的访问, 因为磁盘访问比内存的访问速度要慢。查询优化关注的问题是怎样省时、省空间以及效率高。

三、SQL语句优化以及在实例中的应用

在不同的关系数据库中, 对同一查询会选择不同的优化路径:

(1) 索引优化。索引是常见的数据库对象, 它的设置好坏、使用是否得当, 极大地影响数据库应用程序和数据库的性能。对未建立索引的数据表进行查询时执行的是全表查询, 从磁盘上读取表的全部数据页, 对于大数据量表需要耗费最多的资源, 尤其是I/O开销。索引的方式有多种, 主要有簇索引、非簇索引以及复合索引。本文重点分析簇索引的使用来提高数据库效率。簇索引是对磁盘上实际数据重新组织, 以按指定的一个或多个列的值排序。在簇索引下, 数据在物理上按顺序排在数据页上, 重复值也排在一起, 所以查询时一旦找到符合条件的第一条记录, 具有相同键值或后续键值的行一定在物理上与它连在一起, 而不必进一步搜索, 从而缩小了查询范围, 提高了查询速度。簇索引适用情况如下: (1) 用于范围查询的列; (2) 用于Order By或Group By查询的列; (3) 用于连接操作的列; (4) 返回大量结果集的查询; (5) 不经常修改的列 (对经常变动的列, 列值修改后, 数据行必须移动到新的位置) 。

(2) 视图优化。视图是一种数据库对象, 它是由用户从一个或多个表中建立的一个虚拟表。视图主要分标准视图、索引视图以及分区视图。本文着重分析分区视图对数据库性能提高的应用。分区视图可以提高分布式数据的查询效率。在各个区域的服务器中都存有本区域仓库信息的Warehouse表, 这样在本地服务器上进行查询时可以大大地提高检索的效率。使用这种方法, 在进行很多查询时避免了和其他服务器通信。但是, 有些查询不仅要访问本地仓库信息, 还要访问一个或多个远程仓库信息。分区视图提供了简单的解决方案, 因为它是含有分区数据的表的联合。每个仓库都可根据仓库的ID来辨别属于哪个服务器。分区视图使服务器组中的多个服务器之间可以实现并行处理, 这样, 数据可以分布在多个服务器之间, 查询时根据需要动态合并。它提供了访问不同地址保存的数据的强大功能, 但是管理和使用视图很复杂, 视图生成和使用的规则很多, 因此, 只有遵守所有规则, 才可利用其强大特性。

(3) 语句优化。 (1) 子查询“展开”技术。子查询“展开”指将子查询转变为链接, 从而达到优化查询的目的。下面这个查询是找出有学生总分超过650分的学生的学校名称。Select学校名From学校Whe re学校代号In (Se le c t学校代号From学生Whe re总分>650) ;缺点:此查询将扫描学校的每一行查找所有满足子查询条件的学生记录。通常, 这不是一种高效的执行策略。优化:可以将学校表作为链接的内表, 在这种情况下, 查询作为通常的链接来执行, 首先用分组语句对学生表进行唯一的学校代号筛选, 以消除冗余的学校代号。转化后的SQL语句为:Select D.学校名From (Se le c t学校代号From学生Whe re总分>650 Group b y学校代号) E, 学校D Where E.学校代号=D.学校代号。 (2) 模糊查询的优化。在查找中, 有时需要对字符串进行比较。使用Like运算符可以完成对字符串的模糊匹配, 但大量的字符逐个比较操作, 查找效率会大大降低。如:药品分类按26个英文字母和数据组合来分类, 下面的SQL语句用于查找所有属于‘A1’类药品的销售额。Select分类号, Sum (数量*单价) From销售明细表where分类号Like‘A1%’Group by分类号;可以用以下语句, 实现查询范围的缩减, 从而提高查询速度:Select商品分类号, Sum (数量*单价) From销售明细where商品分类号>=‘A1’And商品分类号<‘A2’Group b y分类号。 (3) 链接查询的优化。链接查询是相当重要的一类查询, 同时也是极难优化的一类查询, 目前大多数优化方法使用画查询图 (QUERYDIAGRAMS) 方法来优化查询计划。该方法要求程序员更多地了解数据库信息, 要想获得较优的查询性能, 程序员就必须对表的大小、索引设计和查询路线图进行仔细的设计。链接查询优化原则首先是驱动表的选择:一般数据库优化程序把在FROM子句最右端的表作为驱动表, 其数据规模要求小, 因为其一般是要选作全表扫描的表。其次是在WHERE子句中追加必要的条件, 书写SQL语句时尽量使索引可用。对于仅有一个索引可用的情况, 通常用其他表作为驱动表。如销售明细中单号列建立了索引而销售主表中单号列没有建索引, 则下面查询以销售主表作为驱动表:Select商品编号, 数量, 金额, 经手人, 单号From销售明细, 销售主表Where销售明细.商品类型=‘食品’And销售明细.单号=销售主表.单号。

结束语:查询优化是取得良好执行性能并简化管理的关键因素。SQL查询不是一个无序的查询, 不同语句的使用和使用顺序将直接影响其查询速度。目前数据库由于版本各异, 要求用户对数据库优化工具和相应的优化知识掌握非常多, 优化依靠程序员的经验, 所以数据库应用系统性能会因人而异。目前有些软件公司采用知识库的方法共享SQL优化方面的知识来提高程序员水平。数据库容量正飞速增加, 数据库优化的研究工作任重而道远。

参考文献

[1]张莉, 王强.SQL SERVER数据库原理及应用教程[M].北京:清华大学出版社, 2003.

[2]郑谦益.SQL SERVER性能优化技术及应用研究[J].微机发展, 2003 (3) .

[3]冬盈.SQL语句的自动化[J].计算机世界, 2002 (4) .

SQL数据库技术 篇10

1 Oracle数据库SQL语句优化方案

可以从三个方面来考虑Oracle的查询优化:选择一个比较合适的Oracle优化器模式,选用访问数据表的方式,尽量共享SQL语句。

1.1 选用适合的ORACLE优化器模式

ORACLE的优化器共有3种:RULE(基于规则)、COST(基于成本)、CHOOSE(选择性)。

默认情况下,ORACLE采用CHOOSE优化器,这样可以避免不必要的全表扫描。但是如果要进行全表扫描,则要尽量采用基于规则或基于成本的优化器模式。

我们可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明来设置优化器模式,当然通过SQL语句或会话也可以更改优化器模式。使用基于成本的优化器,可以提高数据库中的对象统计信息的准确性,但是必须经常运行analyze命令;至于基于规则的优化器模式,要求所有操作都要遵循规则,否则会带来非常糟糕的执行计划,现在已经不建议使用;如果数据库的优化器模式设置为选择性(CHOOSE),那么实际的优化器模式将和是否运行过analyze命令有关。

1.2 访问数据表的方式

Oracle采用两种访问表中记录的方式:全表扫描、索引扫描。

在Oracle中,对于没有索引列的表或是简单的表的访问是通过全表扫描的方式进行数据表访问的,即按顺序访问表中每条记录。在ORACLE中采用一次读入多个数据块的方式优化全表扫描,其成本是表的数据块总数/多块读取。

索引扫描是通过ROWID访问数据表的,可以大大提高效率。ROWID包含了表中记录的物理位置信息。ORACLE采用索引实现了数据和存放数据的物理位置(ROWID)之间的联系。通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高。

1.3 共享SQL语句

在Oracle中,服务器第一次解析SQL语句后,会将SQL语句存放在位于系统全局区域SGA的共享池的内存中,从而提高执行效率。这个共享池可以被所有的数据库用户共享。因此,当我们执行一个SQL语句时,服务器会将它和之前执行过的语句进行比较,如果完全相同,ORACLE直接执行共享池中的那条已经解析过的SQL语句。从而大大提高了执行速度,也节省了内存开销。

那么满足什么样条件的SQL语句可以共享呢?在这里ORACLE采取的是一种严格匹配的比较方式,SQL语句必须完全相同(包括字符大小写,空格,换行等)的语句才能共享,归纳起来就是以下三种情况:

(1)两个SQL语句字符完全相同。即当前被执行的语句和共享池中的语句必须字符完全相同。例如:SELECT*FROM DEPT和下列每一条语句都不同。

Select*From Dept;(字母大小写与先前的不一致)

SELECT*FROM DEPT;(空格数与先前的不一致)

(2)两个SQL语句所指的对象完全相同,包括数据库用户名、对象名及访问方式完全一致。

(3)两个SQL语句中所绑定的变量也必须使用相同名字。

2 SQL语句优化方法

数据库应用程序的执行最终将归结为数据库中的SQL语句执行,SQL语句消耗了数据库的大部分资源。因此SQL语句的执行效率最终决定了ORACLE数据库的性能,也就决定的应用系统的性能。下面通过实例介绍SQL语句优化的若干方法。

2.1 建立有效的索引

Oracle服务器索引是一种模式对象,通过指针访问来提高检索数据的速度。如果没有为表建立索引,检索数据将会扫描整个表。建立索引后,对于索引列的访问,可以通过指针快速定位表中的数据,从而有效减少磁盘的I/O操作。如果多表之间经常联接,那么可以在外键表的外键列上创建索引,这样可以提高查询与主键表的主键列匹配记录的速度。

索引也不是越多越好,因为每一次对含有索引的表进行DML操作后就意味着索引必须更新,这也是要花费相当时间的。一般以下情况可以建立索引:

(1)经常用于WHERE子句或作为连接条件的列;

(2)所含数据值范围比较的列;

(3)含有大量空值的列;

(4)绝大多数情况下只查询出其总记录的2%~4%的表。

2.2 在SELECT中尽量不要使用“*”

当我们想显示某表中的所有列时,一般在SELECT语句中使用“*”,这是一个比较方便的方法。例如select*from dept,但是这种方法非常低效。ORACLE服务器在解析的过程中,会通过数据字典将“*”依次转换成所有的列名,这意味着将耗费更多的时间来完成,所以建议使用select deptno,dname,loc from dept这个命令,书写起来似乎麻烦一些,但是执行效率高多了。

2.3 减少访问数据库的次数

每条SQL语句被执行时,Oracle服务器需要完成一系列任务:解析SQL语句、估算索引的利用率、绑定变量、读数据块等。因此减少数据库访问,就能减少服务器工作量。

例如,要想查询deptno是20与40的这两个部门的信息时,用一条最高效的命令就是select deptno,dname,loc from dept where deptno in(20,40),而不需要用两条查询命令或其他什么方法来完成,会无形中增加访问数据库的次数,从而降低效率。

2.4 尽量多使用COMMIT

Oracle服务器基于事务确保数据一致性,在数据变化上事务可以提供更好的灵活性和操作性,并且在用户操作失败或系统故障时可以保持数据的一致性。事务中的数据变化都是暂时的,直到事务提交。除了执行DDL语句与DCL语句后事务会自动提交外,其余都要遇到COMMIT语句才会提交。执行COMMIT语句后,数据变化写入数据库,所有锁定的记录被释放,所有存储节点被清除,大大节约了Oracle内部资源。

2.5 用TRUNCATE替代DELETE

当执行DELETE这个语句时,其删除的内容通常情况下在回滚段(rollback segments)中暂时保存着,以便意外时需要恢复,直到执行COMMIT语句时才真正生效。而当执行TRUNCATE时,回滚段不保存任何可被恢复的信息,执行该命令后,表中所有记录被删除,数据不能被恢复,因此占用很少的资源,执行时间也会很短。因此如果删除表中所有记录时,建议使用TRUNCATE命令。

2.6 使用表的别名(Alias)

当要查询的信息来自多个表时,建议在SQL语句中使用表的别名,并把别名前缀加于每个列上。这样一来,就可以减少Oracle服务器解析的时间,也减少那些由列歧义引起的语法错误。

例如select e.empno,e.ename,d.deptno,d.dname from emp e,dept d where e.deptno=d.deptno;

2.7 用EXISTS替代IN

在许多查询中,为了满足一个条件,往往需要对另一个表进行查询。在这种情况下,使用EXISTS比使用IN通常将提高查询的效率。例如:

Select ename,job from emp where deptno in(select deptno from dept where dname='SALES');(低效)

Select ename,job from emp where exists(select deptno from dept where emp.deptno=dept.deptno and dname='SALES');(高效)

2.8 多表查询选择最优的表顺序(只在基于规则的优化器中有效)

Oralce服务器在解析多表查询的SQL语句时,按照从右到左的顺序处理FROM子句中的表,因此FROM子句中写在最后的表将被最先处理。在FROM子句中包含多个表时,我们需要选择记录数最少的表放在最右边。Oracle服务器在处理时,首先扫描FROM子句最右边的表并对记录进行排序,然后扫描倒数第二个表,最后将所有从倒数第二个表中检索出的记录与第一个表中合适记录进行合并。

2.9 用修改语句(UPDATE)代替插入语句(INSERT)

如果需要向一个大型表中填入大量数据行(是已经能确定的几万条记录),一般常用的方法是使用INSERT语句,但事实证明,这并不是一个很好的选择。如果该表有主键约束且是聚族索引,并且插入的数据行并不能保证按主键值的顺利进行时,当数据量达到上千条后,插入的速度将明显减慢。比较可取的方法是,先按主键值顺序将主键值插入表中,其他列值都为空,然后用修改语句来修改每个记录的值,用具体值替代空值,速度会明显加快。

3 结束语

在信息管理系统或应用系统中数据库管理是核心。而查询又是数据库的最基本、最常用、最复杂的操作,因此查询语句的执行效率决定了应用系统的性能。论文从ORACLE数据库中SQL语句优化的三种方案入手,介绍了如何选择SQL优化器模式、如何进行表访问、如何共享SQL语句。然后通过若干个实例,介绍了优化SQL语句的具体方法。需要说明的是,SQL语句优化的方法还有很多,这里没有一一列举,这需要我们在应用中细心观察,及时总结,这样才能编写出高性能的应用系统。

参考文献

[1]Joseph C,Johoson.OCP:Oracle9i性能调整学习指南[M].北京:电子工业出版社,2003.

[2]娄建安,余建华.Oracle SQL&PL/SQL基础教程[M].北京:科学出版社.2005.

上一篇:称重系统下一篇:成本费用预算