仓酷云

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

[学习教程] MSSQL教程之蛙蛙保举:如何猎取一个表中一切字段的...

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

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

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

x
使为了数据安全,我们搭建了主从。但实时主从备份只能防止硬件问题,比如主库的硬盘损坏。但对于误操作,则无能为力。比如在主库误删一张表,或者一个update语句没有指定where条件,导致全表被更新。
先创立一个视图

Createviewfielddesc
as
selecto.nameastable_name,c.nameasfield_name,t.nameastype,c.lengthas

length,c.isnullableasisnullable,convert(varchar(30),p.value)asdesp
fromsyscolumnsc
joinsystypestonc.xtype=t.xusertype
joinsysobjectsoono.id=c.id
leftjoinsyspropertiesponp.smallid=c.colidandp.id=o.id
whereo.xtype=U

查询时:
Select*fromfielddescwheretable_name=你的表名

另有个更强的语句,是邹建写的,也写出来吧

SELECT
(casewhena.colorder=1thend.nameelseend)N表名,
a.colorderN字段序号,
a.nameN字段名,
(casewhenCOLUMNPROPERTY(a.id,a.name,IsIdentity)=1then√elseend)N标识,
(casewhen(SELECTcount(*)
FROMsysobjects
WHERE(namein
(SELECTname
FROMsysindexes
WHERE(id=a.id)AND(indidin
(SELECTindid
FROMsysindexkeys
WHERE(id=a.id)AND(colidin
(SELECTcolid
FROMsyscolumns
WHERE(id=a.id)AND(name=a.name)))))))AND
(xtype=PK))>0then√elseend)N主键,
b.nameN范例,
a.lengthN占用字节数,
COLUMNPROPERTY(a.id,a.name,PRECISION)asN长度,
isnull(COLUMNPROPERTY(a.id,a.name,Scale),0)asN小数位数,
(casewhena.isnullable=1then√elseend)N同意空,
isnull(e.text,)N默许值,
isnull(g.[value],)ASN字段申明
--into##tx

FROMsyscolumnsaleftjoinsystypesb
ona.xtype=b.xusertype
innerjoinsysobjectsd
ona.id=d.idandd.xtype=Uandd.namedtproperties
leftjoinsyscommentse
ona.cdefault=e.id
leftjoinsyspropertiesg
ona.id=g.idANDa.colid=g.smallid
orderbyobject_name(a.id),a.colorder
这章描述如何检查和处理在MySQL数据库中的数据损坏。如果你的表损坏很多,你应该尝试找出其原因!见G.1调试一个MySQL服务器。
乐观 该用户已被删除
沙发
发表于 2015-1-19 19:12:04 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
柔情似水 该用户已被删除
板凳
发表于 2015-1-26 22:54:37 | 只看该作者
还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。
海妖 该用户已被删除
地板
发表于 2015-2-4 22:01:18 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
逍遥一派 该用户已被删除
5#
 楼主| 发表于 2015-2-10 20:47:25 | 只看该作者
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
小魔女 该用户已被删除
6#
发表于 2015-3-1 13:51:10 | 只看该作者
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
再现理想 该用户已被删除
7#
发表于 2015-3-10 18:32:23 | 只看该作者
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
愤怒的大鸟 该用户已被删除
8#
发表于 2015-3-17 09:10:21 | 只看该作者
原来公司用过MYSQL自己也只是建个表写个SQL
若相依 该用户已被删除
9#
发表于 2015-3-24 05:16:02 | 只看该作者
我们学到了什么?思考问题的时候从表的角度来思考问
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 23:22

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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