仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1745|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网页编程之列出SQL SERVER 一切表、字段界说,范例...

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:40:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活。excel|server
SETANSI_NULLSOFF

GO

SETNOCOUNTON

GO





















SETLANGUAGESimplifiedChinese

go

DECLARE@tblnvarchar(200),@fldnvarchar(200),@sqlnvarchar(4000),@maxlenint,@samplenvarchar(40)





















SELECTd.nameTableName,a.nameFieldName,b.nameTypeName,a.lengthLength,a.isnullableIS_NULLINTO#t

FROMsyscolumnsa,systypesb,sysobjectsd

WHEREa.xtype=b.xusertypeanda.id=d.idandd.xtype=U





















DECLAREread_cursorCURSOR

FORSELECTTableName,FieldNameFROM#t





















SELECTTOP1_TableNameTableName,

FieldNameFieldName,TypeNameTypeName,

LengthLength,IS_NULLIS_NULL,

MaxLenUsedASMaxLenUsed,SampleValueSample,

CommentCommentINTO#tcFROM#t





















OPENread_cursor





















FETCHNEXTFROMread_cursorINTO@tbl,@fld

WHILE(@@fetch_status-1)---failes

BEGIN

IF(@@fetch_status-2)--Missing

BEGIN

SET@sql=NSET@maxlen=(SELECTmax(len(cast(+@fld+asnvarchar)))FROM+@tbl+)

--PRINT@sql

EXECSP_EXECUTESQL@sql,N@maxlenintOUTPUT,@maxlenOUTPUT

--print@maxlen

SET@sql=NSET@sample=(SELECTTOP1cast(+@fld+asnvarchar)FROM+@tbl+WHERElen(cast(+@fld+asnvarchar))=+convert(nvarchar(5),@maxlen)+)

EXECSP_EXECUTESQL@sql,N@samplevarchar(30)OUTPUT,@sampleOUTPUT

--forquickly

--SET@sql=NSET@sample=convert(varchar(20),(SELECTTOP1+@fld+FROM+

--@tbl+orderby1desc))

PRINT@sql

print@sample

print@tbl

EXECSP_EXECUTESQL@sql,N@samplenvarchar(30)OUTPUT,@sampleOUTPUT

INSERTINTO#tcSELECT*,ltrim(ISNULL(@maxlen,0))asMaxLenUsed,

convert(nchar(20),ltrim(ISNULL(@sample,)))asSample,CommentFROM#twhereTableName=@tblandFieldName=@fld

END

FETCHNEXTFROMread_cursorINTO@tbl,@fld

END





















CLOSEread_cursor

DEALLOCATEread_cursor

GO





















SETANSI_NULLSON

GO

SETNOCOUNTOFF

GO

selectcount(*)from#t

DROPTABLE#t

GO





















selectcount(*)-1from#tc





















select*into##txfrom#tcorderbytablename

DROPTABLE#tc





















--select*from##tx





















declare@dbnvarchar(60),@sqlnvarchar(3000)

set@db=db_name()

--请修正用户名和口令导出到Excel中

set@sql=execmaster.dbo.xp_cmdshellbcp..dbo.##txoutc:+@db+_exp.xls-w-C936-

Usa-Psa

print@sql

exec(@sql)

GO

DROPTABLE##tx

GO
修复过程包含最多4个阶段,在下面描述。在你开始前,你应该cd到数据库目录和检查表文件的权限,确保他们可被运行mysqld的Unix用户读取(和你,因为你需要存取你正在检查的文件)。如果它拒绝你修改文件,他们也必须是可被你写入的。
小女巫 该用户已被删除
沙发
发表于 2015-1-17 15:51:12 | 只看该作者
另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);
不帅 该用户已被删除
板凳
发表于 2015-1-20 19:51:24 | 只看该作者
只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。
第二个灵魂 该用户已被删除
地板
发表于 2015-2-6 03:13:58 | 只看该作者
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
爱飞 该用户已被删除
5#
发表于 2015-2-15 08:37:29 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
再见西城 该用户已被删除
6#
发表于 2015-3-4 11:23:57 | 只看该作者
相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐
冷月葬花魂 该用户已被删除
7#
发表于 2015-3-11 18:54:15 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
再现理想 该用户已被删除
8#
发表于 2015-3-19 07:59:28 | 只看该作者
对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。
深爱那片海 该用户已被删除
9#
发表于 2015-3-27 15:11:02 | 只看该作者
如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-23 14:18

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表