博文

使用SQL存储过程有什么好处(2005-06-24 16:40:00)

摘要:使用SQL存储过程有什么好处 ■SQL存储过程执行起来比SQL命令文本快得多。当一个SQL语句包含在存储过程中时,服务器不必每次执行它时都要分析和编译它。 ■调用存储过程,可以认为是一个三层结构。这使你的程序易于维护。如果程序需要做某些改动,你只要改动存储过程即可 ■你可以在存储过程中利用Transact-SQL的强大功能。一个SQL存储过程可以包含多个SQL语句。你可以使用变量和条件。这意味着你可以用存储过程建立非常复杂的查询,以非常复杂的方式更新数据库。 ■最后,这也许是最重要的,在存储过程中可以使用参数。你可以传送和返回参数。你还可以得到一个返回值(从SQL RETURN语句)。 环境:WinXP+VB6+sp6+SqlServer2000 数据库:test 表:Users CREATE TABLE [dbo].[users] (        [id] [int] IDENTITY (1, 1) NOT NULL ,        [truename] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,        [regname] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,       [pwd] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,        [sex] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,       [email] [text] COLLATE Chinese_PRC_CI_AS NULL ,        [jifen] [decimal](18, 2)......

阅读全文(4022) | 评论:0

SQL Server SQL语句导入导出大全2(2005-06-24 14:45:00)

摘要:SQL Server SQL语句导入导出大全 类型:转载   简介:微软SQL Server数据库SQL语句导入导出大全,包括与其他数据库和文件的数据的导入导出。 /*******  导出到excel EXEC master..xp_cmdshell ’bcp SettleDB.dbo.shanghu out c:temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""’ /***********  导入Excel SELECT * FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’,   ’Data Source="c:test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+’ ’ 转换后的别名 FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’,   ’Data Source="c:test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions /** 导入文本文件 EXEC master..xp_cmdshell ’bcp "dbname..tablename" in c:DT.txt -c -Sservername -Usa -Ppassword’ /** 导出文本文件 EXEC master..xp_cmdshell ’bcp "dbname..tablename" out c:DT.txt -c -Sservername -Usa -Ppassword’ 或 EXEC master..xp_cmdshell ’bcp "Select * from dbname..tablename" q......

阅读全文(2140) | 评论:0

SQL(2005-06-24 14:42:00)

摘要: SQL Server SQL语句导入导出大全         简介:微软SQL Server数据库SQL语句导入导出大全,包括与其他数据库和文件的数据的导入导出。 /*******  导出到excel EXEC master..xp_cmdshell ’bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""’ /***********  导入Excel SELECT * FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’,   ’Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+’ ’ 转换后的别名 FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’,   ’Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions /** 导入文本文件 EXEC master..xp_cmdshell ’bcp "dbname..tablename" in c:\DT.txt -c -Sservername -Usa -Ppassword’ /** 导出文本文件 EXEC master..xp_cmdshell ’bcp "dbname..tablename" out c:\DT.txt -c -Sservername -Usa -Ppassword’ 或 EXEC master..xp_cmdshell ’bcp &qu......

阅读全文(1897) | 评论:0

五种提高 SQL 性能的方法(2005-06-24 14:20:00)

摘要:五种提高 SQL 性能的方法 有时,为了让应用程序运行得更快,所做的全部工作就是在这里或那里做一些很小调整。啊,但关键在于确定如何进行调整!迟早您会遇到这种情况:应用程序中的 SQL 查询不能按照您想要的方式进行响应。它要么不返回数据,要么耗费的时间长得出奇。如果它降低了报告或您的企业应用程序的速度,用户必须等待的时间过长,他们就会很不满意。就像您的父母不想听您解释为什么在深更半夜才回来一样,用户也不会听你解释为什么查询耗费这么长时间。(“对不起,妈妈,我使用了太多的 LEFT JOIN。”)用户希望应用程序响应迅速,他们的报告能够在瞬间之内返回分析数据。就我自己而言,如果在 Web 上冲浪时某个页面要耗费十多秒才能加载(好吧,五秒更实际一些),我也会很不耐烦。 为了解决这些问题,重要的是找到问题的根源。那么,从哪里开始呢?根本原因通常在于数据库设计和访问它的查询。在本月的专栏中,我将讲述四项技术,这些技术可用于提高基于 SQL Server? 的应用程序的性能或改善其可伸缩性。我将仔细说明 LEFT JOIN、CROSS JOIN 的使用以及 IDENTITY 值的检索。请记住,根本没有神奇的解决方案。调整您的数据库及其查询需要占用时间、进行分析,还需要大量的测试。这些技术都已被证明行之有效,但对您的应用程序而言,可能其中一些技术比另一些技术更适用。 * 本页内容 从 INSERT 返回 IDENTITY     从 INSERT 返回 IDENTITY 内嵌视图与临时表     内嵌视图与临时表 避免 LEFT JOIN 和 NULL     避免 LEFT JOIN 和 NULL 灵活使用笛卡尔乘积     灵活使用笛卡尔乘积 拾遗补零     拾遗补零 从 INSERT 返回 IDENTITY 我决定从遇到许多问题的内容入手:如何在执行 SQL INSERT 后检索 IDENTITY 值。通常,问题不在于如何编写检索值的查询,而在于在哪里以及何时进行检索。在 SQL Server 中,下面的语句可用于检索由......

阅读全文(2161) | 评论:0


SQL 语法参考手册(SQL)
(2005-06-24 14:18:00)

摘要:SQL 语法参考手册(SQL) DB2 提供了关连式资料库的查询语言 SQL (Structured Query Language),是一种非常口语化、既易学又易懂的语法。此一语言几乎是每个资料库系统都必须提供的,用以表示关连式的*作,包含了资料的定义(DDL)以及资料的处理(DML)。SQL原来拼成SEQUEL,这语言的原型以“系统 R“的名字在 IBM 圣荷西实验室完成,经过IBM内部及其他的许多使用性及效率测试,其结果相当令人满意,并决定在系统R 的技术基础发展出来 IBM 的产品。而且美国国家标准学会(ANSI)及国际标准化组织(ISO)在1987遵循一个几乎是以 IBM SQL 为基础的标准关连式资料语言定义。 一、资料定义 DDL(Data Definition Language) 资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系、表格内的有什麽栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。 1、建表格: CREATE TABLE table_name( column1 DATATYPE [NOT NULL] [NOT NULL PRIMARY KEY], column2 DATATYPE [NOT NULL], ...) 说明:  DATATYPE --是资料的格式,详见表。 NUT NULL --可不可以允许资料有空的(尚未有资料填入)。 PRIMARY KEY --是本表的主键。 2、更改表格  ALTER TABLE table_name ADD COLUMN column_name DATATYPE 说明:增加一个栏位(没有删除某个栏位的语法。 ALTER TABLE table_name ADD PRIMARY KEY (column_name) 说明:更改表得的定义把某个栏位设为主键。 ALTER TABLE table_name DROP PRIMARY KEY (column_name) 说明:把主键的定义删除。 3、建立索引  CREATE INDEX index_name ON table_name (column_name) 说明:对某个表格的栏位建立索引以增加查询时的速度。 4、删除  DROP table_name DROP......

阅读全文(2297) | 评论:0

根据表名自动生成INSERT,UPDATE,DELETE,SELECT的SQL语句(2005-06-24 14:17:00)

摘要:根据表名自动生成INSERT,UPDATE,DELETE,SELECT的SQL语句 TBPROC     CREATE Procedure TbProc @model varchar(2),@pagename varchar(32),@object varchar(32),@autoField varchar(32)=null as set nocount on select @model=upper(@model) select @pagename=lower(@pagename) select @object=upper(@object) declare @head varchar(100),@headfct varchar(105),@para varchar(1500),@content varchar(5000) declare @paravar varchar(2000) ,@saveStr varchar(3000) ,@deleteStr varchar(500) ,@selectFieldStr varchar(1000) ,@returnPk varchar(250),@pkeyStr varchar(500),@pkeyParaStr varchar(500) select @head='',@headfct='',@para='',@content='' exec TbField @object,@autofield,@paravar output ,@saveStr output ,@deleteStr output ,@selectFieldStr output,@pkeyStr output,@pkeyParaStr output select @head='create procedure p'+@model+@pagename+'_' --Head print '注意:单位换算和货币换算都是在存储过程里实现!' --Sav select @headfct=@head+'Sav' select @para=@paravar select @content=@saveStr select @headfct+char(13)+@para+char(13)+'as'+char(13)+@conten......

阅读全文(2588) | 评论:0

SQL 语句导入导出(2005-06-24 14:15:00)

摘要:SQL语句导入导出大全     ******* 导出到excel EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""' /*********** 导入Excel SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /*动态文件名 declare @fn varchar(20),@s varchar(1000) set @fn = 'c:\test.xls' set @s ='''Microsoft.Jet.OLEDB.4.0'', ''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0''' set @s = 'SELECT * FROM OpenDataSource ('+@s+')...sheet1$' exec(@s) */ SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+' ' 转换后的别名 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /********************** EXCEL导到远程SQL insert OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名 (......

阅读全文(2216) | 评论:0