仓酷云

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

[学习教程] MSSQL网页设计SQL摹拟达芬奇暗码中文站首页数字游戏

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

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

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

x
由MySQL用来存储数据的文件格式以已经被广泛地测试过,但是总是有外部情况可以导致数据库表被破坏:中文
最近达芬奇暗码热抄,也从网上找来看了,对中文官网首页的游戏发生了乐趣.因为是小时分看过这个数学题,如今俄然看到备感亲热.以是用SQL摹拟了一个.(中文官方网站见http://davincicode.leiling.com/)

createprocdavinci(@intarrayvarchar(1000))as--******************--2004.7--******************declare@spvarchar(1)set@sp=,

declare@iint,@jint,@maxqint

--初始化ifcharindex(@sp,@intarray)=0beginifobject_id(tempdb..##t)isnotnulldroptable##t

ifisnumeric(@intarray)=0beginprint输出参数必需是数字。returnendcreatetable##t(idintidentity(1,1),qint)set@i=floor(10+rand()*30)insertinto##t(q)values(@i)print方针:+cast(@iasvarchar(2))end

--循环游戏elsebegin--判别游戏是不是停止ifobject_id(tempdb..##t)isnullbeginprint本回合已停止,年夜侠请从头来过!returnend

--考证用户输出数正当性ifisnumeric(right(@intarray,charindex(@sp,reverse(@intarray))-1))=0beginprint输出参数必需是数字。returnendset@i=cast(right(@intarray,charindex(@sp,reverse(@intarray))-1)asint)set@maxq=(selectmax(q)from##twhereid>1)if@i<=isnull(@maxq,0)beginprint输出参数必需年夜于以后最年夜数。returnendif@i-isnull(@maxq,1)>3beginprint输出参数凌驾局限。returnendif@i>(selectqfrom##twhereid=1)beginprint输出参数不得年夜于方针数。returnend

--拔出用户输出数insertinto##t(q)values(@i)print你输出:+cast(@iasvarchar(2))--判别胜败if@i=(selectqfrom##twhereid=1)begindroptable##tprint-------------------------------------print胜负乃兵家常事,年夜侠请从头来过!returnendif@i=(selectqfrom##twhereid=1)-1begindroptable##tprint达芬奇:+cast(@i+1asvarchar(2))print-----------------print祝贺!你得胜了。returnend

--拔出达芬奇应对数if(selectq-1from##twhereid=1)%4=0set@j=(selectcount(id)from##twhereid%2=1)*4elsebeginset@j=(selectq-1from##twhereid=1)%4+((selectcount(id)from##twhereid%2=1)-1)*4if@j<(selectmax(q)from##twhereid>1)set@j=@j+4endif@i=@jset@j=@j+floor(1+rand()*3)insertinto##tvalues(@j)print达芬奇:+cast(@jasvarchar(2))end

--完全版显现select方针数=q,你输出=null,达芬奇=null,下次输出=1,2,3from##twhereid=1unionallselect方针数=null,你输出,达芬奇,下次输出=casewhencharindex(,+方针数+,,,+下次输出+,)=0then下次输出elseleft(left(下次输出,charindex(,+方针数+,,,+下次输出+,)+len(方针数)),len(left(下次输出,charindex(,+方针数+,,,+下次输出+,)+len(方针数)))-charindex(,,reverse(left(下次输出,charindex(,+方针数+,,,+下次输出+,)+len(方针数)))))endfrom(select方针数,你输出,达芬奇,下次输出=cast(达芬奇+1asvarchar(2))+,+cast(达芬奇+2asvarchar(2))+,+cast(达芬奇+3asvarchar(2))from(select方针数=cast((selectqfrom##twhereid=1)asvarchar(2)),你输出=max(casewhenid%2=0thenqelse0end),达芬奇=max(casewhenid%2=1thenqelse0end)from##twhereid>1groupbyfloor(id/2))a)b

/*--简化版显现selectcasewhenid=1then方针数:whenid%2=0then你输出:whenid%2=1andid>1then达芬奇:end,qfrom##t*/

游戏划定规矩:体系随机发生方针数,两边从数字1入手下手循环应对,数字必需一连,每回合最多能够选择3个数字,先到方针数者为负。

游戏申明:实行execdavinci2入手下手程序,个中数字2能够为恣意数字,体系发生随机方针数。你入手下手应对,应对数以逗号『,』分开,如:execdavinci2,1,然后体系主动回应对,如4。接着入手下手下一轮应对:execdavinci2,1,6………
目前的方案是用mysqlbinlog工具,增加一个Flashback参数,输出结果为一个新的binlog文件――姑且叫做flashbacklog,这个flashbacklog顺序执行,可制定某张表和执行到哪个pos,来实现数据库的闪回。
乐观 该用户已被删除
沙发
发表于 2015-1-19 16:25:18 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-28 08:28:07 | 只看该作者
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
深爱那片海 该用户已被删除
地板
发表于 2015-2-5 20:10:31 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
蒙在股里 该用户已被删除
5#
发表于 2015-2-13 11:39:17 | 只看该作者
原来公司用过MYSQL自己也只是建个表写个SQL
愤怒的大鸟 该用户已被删除
6#
发表于 2015-3-3 20:51:01 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
飘灵儿 该用户已被删除
7#
发表于 2015-3-11 13:40:12 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
活着的死人 该用户已被删除
8#
发表于 2015-3-18 21:20:14 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
兰色精灵 该用户已被删除
9#
发表于 2015-3-26 17:57:45 | 只看该作者
光写几个SQL实在叫无知。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 19:56

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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