2006-12-27
TAG:数据库相关

原作者:edobnet

项目介绍
政府一个业务系统,
使用范围全国
数据是区域还存储,最大地方,主业务表,一年有600万,工作流表,1年有几千万,迄今为至系统已经运行三年。
其它全国还有46个地点,数据也比较多
新开发系统主要功能,对业务系统的数据进行分析统计.


所以对性能要求比较高。

我们的简要方案。

建立中间表,通过DTS调度每天共步数据。
中间表设计原则
 记录数同原表一样,减少多表连接,保存运算好的值,如果记录修改,根据修改日志,重新计算中间值


增量同步数据(DTS)
 直接从每天的数据库更改日志读取记录,更新中间表,根据服务器空间程度合理调度DTS,减少数据同步时间。

对中间数据进行运算
 查询不作字段运行,所以运算在生成中间表的过程中已经计算

根据查询,优化索引设计
 根据数据查询特性,对where ,GROUP BY等操作字段进行索引设计,提高查询速度 

 优化数据类型
 大量采用Int提高查询、统计速度 

 优化中间表关键字
 采用Int,提高插入速度


数据文件优化设计,一个主要业务,一个数据文件,建数据文件时,估计数据量,一次建一个比较大的文件,这样所分配的文件就是一个连续文件块,


sql server设置区别大小写。初始内存调到一个比较大的内存。



使用我们的Toolkit开发简单分页,相关压力测试,
 测试服务器配制
 2个至强3.0CPU
 2G内存
 150G硬盘
 Window 2000 Advance Server中文版+SP4
 测试数据ENTRY_WORKFLOW表,数据量2,473,437



 页数  界面显示时间  CPU  Reads I/O  Writes I/O  Duration
 第1页  2-3 S  642  10689  0 390
 第100页  3-4S  626  128001  0 423
  
 ....后页业数太多,没有必要




 压力测试

 并发数 平均每秒请求数 未字节响应毫秒数
 50 45.28 20,095.65
 25 45.41 10,043.12



索引优化测试, 

 对分量值小的数据建索引测试,测试语句,GROUP BY 分量值
  一个字段,大概有6个分量值,没有建索引,4S,建索引<1s
 两个分量,不建索引,3S,建索引,<1S
一般来说,对分量小的字段,不建索引,但是我们对性能要求太高,根据我们的测试,数据对分量范围小的也要建索引。

因为一个统计,有一个很多组合的WHERE,比如有十个指标这样会有十次访问原表,这样性能太低,所以我们把where后的数据作



用中间数据,
十个指标对中间数据作查询,中间数据,我们使用临时表,
经测试,10万条记录,插入操作,临时表需要,16s,表变量需要,40S




select ... into #temp from .......
速度极快,2,500,000条记录,16S


一个存储过程样例,有兴趣可以分析一下!

  1SET QUOTED_IDENTIFIER ON 
  2GO
  3SET ANSI_NULLS ON 
  4GO
  5
  6
  7
  8
  9
 10ALTER     Procedure sp_tg009
 11    /* Param List */
 12    @TE_I_E_FLAG varchar(4),/*进出口方式*/
 13    @TE_PASS_RANGE varchar(4),/*关区范围*/
 14    @TE_C_OUTPUT varchar(4),/*输出方式退单理由输出、申报单位输出、全部输出*/
 15    @TE_END_DATE datetime,/**********申报起止日期********/
 16    @TE_END_DATEEND datetime,/*************************/
 17    @TE_MONI_T varchar(4),/*监控类型*/
 18    @USER_ID varchar(64),
 19    @CUSTOMER_CODE varchar(4),
 20    @PAGE_NUMBER int,
 21    @TOTAL_COUNT int OUTPUT
 22AS
 23
 24/******************************************************************************
 25**        File: 
 26**        Name: sp_tg009
 27**        Desc: 通关业务监控-通关规范监控-报关单退(拒)单管理
 28**
 29**        This template can be customized:
 30**              
 31**        Return values:
 32** 
 33**        Called by: 
 34**              
 35**        Parameters:
 36**        Input                            Output
 37**     ----------                            -----------
 38**        
 39**        Auth: chengdj
 40**        Date: 2005-4-7
 41*******************************************************************************
 42**        Change History
 43*******************************************************************************
 44**        Date:        Author:                Description:
 45**        --------    --------        -------------------------------------------
 46**    2005-04-11    chengdj                add HgDiv function
 47**      2005-04-11    chengdj                
 48*******************************************************************************/

 49SET NOCOUNT ON
 50
 51declare @sqlWhere varchar(4000)
 52set @sqlWhere = ''
 53
 54set @TE_END_DATEEND = DATEADD(Day,1,@TE_END_DATEEND)    --结束日期加一天    
 55set @sqlWhere = @sqlWhere + ' TE_END_DATE  >= '''+ CONVERT(varchar(20),@TE_END_DATE+''' and TE_END_DATE < '''+CONVERT(varchar(20),@TE_END_DATEEND)+''''
 56
 57if @TE_I_E_FLAG <> '-2'        ----进出口
 58    set @sqlWhere = @sqlWhere + ' and TE_I_E_FLAG = '''+@TE_I_E_FLAG+''''
 59
 60if @TE_PASS_RANGE <> '-2'        --关区范围
 61        set @sqlWhere = @sqlWhere + ' and TE_PASS_RANGE  in ( SELECT a.GCL_CODE
 62FROM GL_CUSTOMER_LIST a CROSS JOIN
 63      GL_CUSTOMER_LIST b
 64WHERE (a.GCL_LAYER LIKE b.GCL_LAYER + ''%'') AND (b.GCL_CODE = '''+@TE_PASS_RANGE+''')) '
 65
 66/* if @TE_C_OUTPUT<> '-2'        --输出方式
 67    set @sqlWhere = @sqlWhere + 'and '
 68****************监控类型**********************/

 69
 70    /*if @TE_MONI_T <> '-2'    --监控类型
 71        if @TE_MONI_T = '2'
 72                 set @sqlWhere = @sqlWhere + ' AND  TE_SCENE_FLAG = 1 '
 73        else
 74                set @sqlWhere = @sqlWhere + ' AND  TE_WORKER_FLAG  =  ' +@TE_MONI_T + ' '*/

 75/*
 76CREATE TABLE #TG009(            
 77        TE_PASS_RANGE VARCHAR(4) PRIMARY KEY NOT NULL,
 78        MAN_CLE_COUNT int null,            --人工退单报关单总数
 79        MAN_CLE_TOTAL int null,            --人工退单报关单总数
 80        MAN_CLE_PCT float null,            --人工退单率
 81        ELC_CLE_COUNT int null,            --电子退单总数
 82        ELC_CLE_TOTAL int null,            --电子退单总次数
 83        MAN_MU_COUNT int null,            --多次人工退单报关单数
 84        ELC_CLE_PCT float null,            --电子退单率--
 85        RE_COUNT int null,                --现场拒单报关单总数--
 86        RE_TOTAL int null,                --现场拒单报关单总次数--
 87        RE_PCT float null,                --现场拒单报关单率--
 88        MU_ELC_CEL_EXP float null,        --多次电子退单指数
 89        MU_MAN_EXP float null,            --多次人工退单指数
 90        MU_SEC_EXP float null            --多次现场拒单指数
 91)
 92    */

 93    declare @sql varchar(8000)
 94    declare @groupby varchar(50)
 95    
 96    if @TE_C_OUTPUT  = '1'    --按申报单位
 97         set @groupby = 'TE_AGENT_CODE'
 98    else                        --其它按关区
 99         set @groupby = 'TE_PASS_RANGE'
100         
101         declare @sql2 nvarchar(500)
102           set @sql2 = 'select @COUNT = count(distinct('+@groupby+')) from TG_ENTRY where '+@sqlWhere
103    execute sp_executesql 
104          @sql2,
105          N'@COUNT int output',
106          @TOTAL_COUNT output
107          
108DECLARE @START_ID INT
109DECLARE @END_ID INT
110SET @START_ID = (@PAGE_NUMBER - 1* 15 + 1
111SET @END_ID = @PAGE_NUMBER * 15
112     
113     ----
114     ----
115     -----     
116     if @TE_MONI_T = '1'    --人工退单
117                            set @sql = '
118                    select top '+convert(varchar(20),@END_ID)+ ' '+ @groupby +',IDENTITY(int,1,1) AS TID into #PAGE  from TG_ENTRY where '+@sqlWhere +' group by '+@groupby+ ';
119                    CREATE TABLE #TG009(            
120                        '+ @groupby+' VARCHAR(10) PRIMARY KEY NOT NULL,
121                        MAN_CLE_COUNT int null,    
122                        MAN_CLE_TOTAL int null,
123                        MAN_CLE_PCT numeric(10,2) null,
124                        MU_MAN_EXP numeric(10,2) null,
125                        MAN_CLE_TOTAL1 int null,
126                        MAN_CLE_TOTAL2 int null,
127                        MAN_CLE_TOTAL3 int null
128                        );
129
130                    SELECT '+ @groupby+',TE_CANCEL_FLAG,TE_WORKER_FLAG,TE_END_FLAG,TE_CANCEL_TIME INTO #temp1 FROM TG_ENTRY where'+@sqlWhere+' AND '+@groupby+' in ( select  '+ @groupby +' from #PAGE where TID between '+ convert



 
2006-12-13
TAG:数据库相关

数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……

方法一

declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0


方法二

  有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

  1、对于第一种重复,比较容易解决,使用

select distinct * from tableName


  就可以得到无重复记录的结果集。

  如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除

select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp


  发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

  2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下

  假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集

select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)


  最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)

  查询分析器不能单步调试的的原因

  具体步骤如下:

  1、将服务器【身份验证】属性设置成【混合模式】(window与SQL身份验证)

  2、在【控制面板】中打开【服务】将【MS SQL Server】服务打开【属性】,选择【登录】页面,将登录身份设置成服务器本地帐号和该帐号密码,如administrator,密码123;

  3、重新启动SQL Server服务,此时的服务指的是【SQL服务管理器】中的SQL Server服务;假设【帐号】设置为administrator 。此时达到的效果是:服务器本地帐号administrator与客户端上的administrator(并且该帐号的密码要与服务器密码相同)可以通过【查询分析器】进行调试;如果想让【其他帐号】也能够调试,那么还需要如下设置:
  a、在【服务器】上运行dcomcnfg.exe;

  b、在【默认安全机制】中【默认访问权限】右边点击【编辑默认值】选择允许调试的帐号类型,如users用户类型,sample帐号有包含users组;

  c、重新启动SQL Server服务;

  3、在客户端上创建与服务帐号密码一样的用户,如sample;做到这步就可以通过查询分析器的调试功能进行单步调试了。
  注:第二步更改“启动服务帐户”,在第一次登录之前,必须更改用户密码。不然,event log:以当前密码登录的尝试因下列错误而宣告失败: 在第一次登录之前,必须更改用户密码。





 
2006-12-09
TAG:数据库相关
我们就选用SQL Server有的Northwind表作为示例。很明显T-SQL函数不能满足这个要求:

useNorthwind

select rand(), productid, productname from Products

这个方法的问题在于Rand()函数在给定命令里所有行都返回相同的值,见Listing A。

你可能不需要得到这样的结果,则可以给rand()函数提供一个种子值。在下面的代码中,我们在Rand()函数中给定每一行的productid作为种子值。

select top 10

rand(productid) as row, productid, productname

from Products

order by row

返回的结果见Listing B.

不论这个命令运行多少次,虽然随机指派的行返回唯一的值,但是我们的得到的productids数字是10进制的。这个方法还没有起作用。

但是,这里提供了另外一个更有用的函数:NewID(),它返回一个GUID(全局唯一标志符)。我们看看Rand()函数被NewID()函数代替后的结果怎么样:

select top 10

newid() as row, productid, productname

from Products

order by row

运行的结果与Listing C中的结果很相似。

你的结果有点不同,因为NewID()在每一次调用的时候都产生一个GUID,因此,如果将上面的命令运行2到3次,得到的结果是不同的。

这个方法是调用NewID()的值作为一列,然后通过NewID()排列这些值。此方法很简单,并且可以应用到不同的场合。例如:你可能需要创建一些有某种特性的产品的列表或随机挑选10个客户或者100个随机挑选出来的订单的详细资料等。

SQL Server不是设计用于产生随机集的,但是其设计是基于数学而非商学的。幸亏有NewID()函数,我们才能够毫不费力地产生随机数据集。





 
2006-12-08
TAG:数据库相关
第一步:先备份欲压缩数据库
第二步:dbcc shrinkdatabase (数据库名称)
第三步:backup log 数据库名称 with truncate_only
第四步: dbcc shrinkdatabase (数据库名称)
以金王为例  注意第三步  数据库名称  没有圆括号 二、四步有
1.先备份 jwgl
在SQLServer查询分析器里执行下面步骤:

2.dbcc shrinkdatabase (voosay)
3 backup log voosay with truncate_only
4 dbcc shrinkdatabase (voosay)




 
2006-10-03
TAG:数据库相关

因为中国使用方块字,所以对于tag,中国人也喜欢用空格来间隔来表示不是同一个tag

我的解决的方案是这样的 在这里和大家分享,如有好的思路希望可以大家一起讨论.

比如 这里 给用户 一个题目输入框 内容输入框  一个tag输入框 支持tag以空格分割

这里我们重点说明的是程序如何辨别tag空格的 以及插入做操的存储过程。

我是利用正则,获取到字符串中的空格 然后替换成"," 这样我们就可以传入数据库由存储过程来处理了

比如你输入的tag形式如下:voosay  blog  pizi 那么使用正则以后变成 voosay,blog,pizi  这样我们就可以直接交给存储过程来处理了。存储过程代码在最下面。

程序里正则地使用很简单 两行:

string p = @"\s+";
  string result = Regex.Replace("voosay  blog  pizi ",p,",");

以下是存储过程,我加了足够的注释,大家应该可以看得懂





 
2006-08-24
TAG:数据库相关

 用惯了MS的产品,对黑色屏幕恐惧又向往着,小的时候总是认为程序员就应该坐在一个

小黑屋里,面对着黑色背景的屏幕飞快的敲击出一行行白色的代码出来,编程多年,也只有

在c的时候才会有一些这样的感受,但我不喜欢c,因为它没有人情味,最少我感觉如此。

但MYSQL不是 它给的命令在DOS屏幕上敲击出几个简单的命令,就能听着你的命令马上

显示出来,非常容易懂也很简单,虽然玉龙兄向我介绍了SQLyog.exe

这个可视化mysql的工具,但我想再刚刚开始时我先享受享受编写代码的快乐吧!:)





 
2006-08-23
TAG:数据库相关
下列语句部分是Mssql语句,不可以在access中使用。

SQL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)

首先,简要介绍基础语句:
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack',
'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表




 
2006-07-25
TAG:数据库相关

很久以前写的 贴上来也许其他人有用


CREATE  proc insterdata

@QQNO nvarchar(100),--传入的很可能是多个值
@VerSion nvarchar(50),
@inline bit,
@LoginIP nvarchar(50),
@wordback int output

as

declare @int int
declare @num int
declare @word varchar(50)
declare @f varchar(8000)

 set  @int =charindex('.',@QQNO)


if(@int=0)
 begin
   select @num = count(*)from tbQQ where qqNo = @QQNo
        if(@num=0)

        begin

        insert tbQQ(qqNo,version,inline,loginIP)
 values(@QQNO,@VerSion,@inline,@LoginIP)

        end
 else if(@num=1)

        begin

 update tbQQ set version=@VerSion,inline=@inline,loginIP=@LoginIP where qqNo =@QQNO

 end

 end

else

begin
 
 set @f = @QQNO
 set @int =charindex('.',@f)

 while @int<>0 --一次拆分数组的循环插入或更新 比如@QQNO传入的数字是5218.14566
 begin
 
    set @word = left(@f,charindex('.',@f)-1) --拿出来.前的第一个
    select @num=count(*) from tbQQ where qqNo=@word
    if(@num=1)--就是说有重复的 其实也就是@num=1
  
    begin
 
    update tbQQ set version=@VerSion,inline=@inline,loginIP=@LoginIP where qqNo=@word
  
    end
 
    else if(@num=0) --没有重复行 执行插入
  
    begin
 
    insert tbQQ(qqNo,version,inline,loginIP)
    values(@word,@VerSion,@inline,@LoginIP)
 
    set   @f=right(@f,len(@f)-@int)
    set   @int=charindex('.',@f)
 
    end
 
 end

   select @num=count(*) from tbQQ where qqNo=@f
   if(@num=0)

        begin

        insert tbQQ(qqNo,version,inline,loginIP)
 values(@f,@VerSion,@inline,@LoginIP)
        end
 else if(@num=1)

        begin

 update tbQQ set version=@VerSion,inline=@inline,loginIP=@LoginIP where qqNo=@f

 end
  

end
if(@@error<>0)
BEGIN
 set @wordback =1---表明存储过程失败
end
else
begin
 set @wordback=0 ---表明存储过程成功
end
 
 


GO





 
2006-07-01
TAG:数据库相关

在sql server中 要添加 修改 删除表中的字段是非常容易的

sql语句分别是:

添加:alter table diaocha add column [name] ntext

修改:alter table diaocha alter column [name] ntext

删除:alter table diaocha delete column [name] ntext

下面是网页常用代码

如内容超出单元格,则隐藏
style="TABLE-LAYOUT: fixed"

弹出窗口总是在最上面:
不要滚动条? 让竖条没有:
横条没有:
两个都去掉?更简单了
怎样去掉图片链接点击后,图片周围的虚线?
电子邮件处理提交表单


在打开的子窗口刷新父窗口的代码里如何写? window.opener.location.reload()
如何设定打开页面的大小
在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动

各种样式的光标 auto :标准光标
default :标准箭头
hand :手形光标
wait :等待光标
text :I形光标
vertical-text :水平I形光标
no-drop :不可拖动光标
not-allowed :无效光标
help :?帮助光标
all-scroll :三角方向标
move :移动标
crosshair :十字标 e-resize n-resize nw-resize w-resize s-resize se-resize sw-resize

本机ip<%=request.servervariables("remote_addr")%>
服务器名<%=Request.ServerVariables("SERVER_NAME")%>
服务器IP<%=Request.ServerVariables("LOCAL_ADDR")%>
服务器端口<%=Request.ServerVariables("SERVER_PORT")%>
服务器时间<%=now%> IIS
版本<%=Request.ServerVariables"SERVER_SOFTWARE")%>
脚本超时时间<%=Server.ScriptTimeout%>
本文件路径<%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%>
服务器CPU数量<%=Request.ServerVariables("NUMBER_OF_PROCESSORS")%>
服务器解译引擎<%=ScriptEngine & "/"& ScriptEngineMajorVersion &"."&ScriptEngineMinorVersion&"."& ScriptEngineBuildVersion %>
服务器操作系统<%=Request.ServerVariables("OS")%>

文本竖排方式

超链接去虚线边框
在链接中加上onfocus="this.blur()"

网页搜索关键字 头里插入


收藏夹图标


我的电脑
file:///::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
网上邻居
file:///::%7B208D2C60-3AEA-1069-A2D7-08002B30309D%7D
我的文档
file:///::%7B450D8FBA-AD25-11D0-98A8-0800361B1103%7D
控制面板
file:///::{20D04FE0-3AEA-1069-A2D8-08002B30309D}/::{21EC2020-3AEA-1069-A2DD-08002B30309D}
回收站
file:///::%7B645FF040-5081-101B-9F08-00AA002F954E%7D

鼠标控制图片隐现效果
把如下代码加入<body>区域中:

  2、把如下代码加入<body>区域中:
onMouseOver="makevisible(this,0)"
onMouseOut="makevisible(this,1)">

禁止图片下载



页嵌页


隐藏滚动条

CSS文字阴影(定义在
中)
.abc{
FILTER: dropshadow(color=#666666, offx=1, offy=1, positive=1); FONT-FAMILY: "宋体"; FONT-SIZE: 9pt;COLOR: #ffffff;
}

列表/菜单
onchange="location=this.options[this.selectedIndex].value"





 reurl=server.htmlencode(request.ServerVariables("HTTP_REFERER"))

服务器上如何定义连接
MM_www_STRING ="driver={Microsoft access Driver (*.mdb)};dbq=" & server.mappath("../data/www.mdb")

链接到
response.redirect"login.asp"
location.href="xx.asp"

onClick="window.location=login.asp"
onClick="window.open()"

取得IP
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR")

sql="update feedbak set hit=hit+1 where id="&request("id")
conn.execute(sql)

截取字符是否加...
function formatStr(str,len)
if(len(str)>len)
str = left(str,len) + "..."
end if
formatStr = str
end function

接收表单
If Ucase(Request.ServerVariables("REQUEST_METHOD")) = "POST" then
end if


图片宽度

Ill be Back 22:18:06
" border="0" onload="javascript:DrawImage(this);">

跳转


 溢出栏的设制
visible:超出的部分照样显示;
hidden:超出的部分隐藏;
scrool:不管有否超出,都显示滚动条;
auto:有超出时才出现滚动条;

onMouseOver:鼠标移到目标上;
onMouseUp:按下鼠标再放开左键时;
onMouseOut:鼠标移开时;
onMouseDown:按下鼠标时(不需要放开左键);
onClink:点击时;
onDblClick:双击时;
onLoad:载入网页时;
onUnload:离开页面时;
onResize:当浏览者改变浏览窗口的大小时;
onScroll:当浏览者拖动滚动条的时。

CSS样式
a:link:表示已经链接;
a:hover:表示鼠标移上链接时;
a:active:表示链接激活时;
a:visited:表示己点击过的链接。

跳出对话框链接
javascript:alert(lajflsjpjwg)
后退:javascript:history.back(1)
关闭窗口:javascript:window.close();
窗口还原
function restore(){
window.moveTo(8,8);
window.resizeTo(screen.width-24,screen.availHeight-24);
}

head区是指首页HTML代码的和之间的内容。
必须加入的标签

1.公司版权注释


2.网页显示字符集
简体中文:
繁体中文:
英 语:

3.网页制作者信息


4.网站简介


5.搜索关键字


6.网页的css规范

(参见目录及命名规范)

7.网页标题
xxxxxxxxxxxxxxxxxx

.可以选择加入的标签

1.设定网页的到期时间。一旦网页过期,必须到服务器上重新调阅。


2.禁止浏览器从本地机的缓存中调阅页面内容。


3.用来防止别人在框架里调用你的页面。


4.自动跳转。

5指时间停留5秒。

5.网页搜索机器人向导.用来告诉搜索机器人哪些页面需要索引,哪些页面不需要索引。

CONTENT的参数有all,none,index,noindex,follow,nofollow。默认是all。

6.收藏夹图标


所有的javascript的调用尽量采取外部调用.


附标签:
标签不属于head区,这里强调一下,为了保证浏览器的兼容性,必须设置页面背景

flash透明
在flash的源代码中加上:

表格透明
style="FILTER: alpha(opacity=72)"

网址前添加icon的方法
1、上http://www.favicon.com上用他的icon editor online制作一个图标。他会将做好的图标通过email即时发送给你。
2、把这个命名为favicon.ico的图标放置在index.html同一个文件夹中。就可以了。
作一个图标文件,大小为16*16像素。文件扩展名为ico,然后上传到相应目录中。在HTML源文件“<head></head>”之间添加如下代码:
<Link Rel="SHORTCUT ICON" href="http://图片的地址(注意与刚才的目录对应)">
其中的“SHORTCUT ICON”即为该图标的名称。当然如果用户使用IE5或以上版本浏览时,就更简单了,只需将图片上传到网站根目录下,自动识别

可以在收藏夹中显示出你的图标

状态栏连接说明
某某链接

链接说明

禁止鼠标右键
在标签中加入

DW里输入空格
插入N个 

水平线


noshade为有无阴影

表单电子邮件提交
< form name="content" method="post" action="mailto:电子邮箱" >< /form>
文本域名为Subject 为邮件的标题

邮件链接定制
Mailto:地址 ? Subject=邮件的标题 &bc=抄送 &bcc=密件抄送

背景音乐

禁止页面正文选取

消除ie6自动出现的图像工具栏,设置 GALLERYIMG属性为false或no .

防止点击空链接时,页面往往重置到页首端。
代码“javascript:void(null)”代替原来的“#”标记

如何避免别人把你的网页放在框架中

设为首页
设为首页

添加收藏
收藏本站

文字滚动
插入边框为0的1行1列的表格,在表格中输入文字,选中文字,
按ctrl+t输入marquee direction="up", 回车即可让文字在表格区域内向上滚动。
(right、down可用于让文字或图象向右及向下滚动,修改html原代码还可以得到需要的滚动速度。


表单验正

定义鼠标
body{cursor: url(cur.ani或cur);}

以图片方式插视频

层在flash上面
< param name="wmode" value="opaque" >

延迟跳转


导航条变色:
单元格
居中



空链接
javascript:;

标题表格

表格的说明


细线表格
style="BORDER-COLLAPSE: collapse;"

滚动条颜色代码
BODY{
SCROLLBAR-FACE-COLOR: #FFFFFF;
SCROLLBAR-HIGHLIGHT-COLOR: #FFFFFF;
SCROLLBAR-SHADOW-COLOR: #FFFFFF;
SCROLLBAR-3DLIGHT-COLOR: #FFCBC8;
SCROLLBAR-ARROW-COLOR: #FFFFFF;
SCROLLBAR-TRACK-COLOR: #FFFFFF;
SCROLLBAR-DARKSHADOW-COLOR: #FFCBC8;
SCROLLBAR-BASE-COLOR: #FFFFFF
}

连续的英文或者一堆感叹号!!!不会自动换行的问题
只要在CSS中定义了如下句子,可保网页不会再被撑开了

table{table-layout: fixed;}
td{word-break: break-all; word-wrap:break-word;}

注释一下:

1.第一条table{table-layout: fixed;},此样式可以让表格中有!!!(感叹号)之类的字符时自动换行。

2.td{word-break: break-all},一般用这句这OK了,但在有些特殊情况下还是会撑开,因此需要再加上后面一句{word-wrap:break-word;}就可以解决。此样式可以让表格中的一些连续的英文单词自动换行。





 
2006-05-17
TAG:数据库相关

分页之后的需求就是对符合一定条件的内容进行排序按各种条件,当分页提取一定数量的数据时总有可能会因为排序的问题,导致排序失败 对于这个方面不精的朋友。

order by 是如此重要啊

没有时间详说 贴出来 如果哪位有心的话 或许会收获到一些东西 如你有更高明的也请麻烦告诉我 tks

---对付以球队分类的列表 开始
with partdata As (select rownum as rowno, c.* From (Select a.userid,a.gateno,a.joinname,b.timeused,b.correctanswers,a.SupportTeam
 from mycup_pk_userinfo a,mycup_pk_record b
 where a.userid=b.userid and a.gateno=b.gateno And a.SupportTeam='阿根廷'
 Order By a.gateno Desc ,b.timeused) c
)
select * from partdata where rowno Between 1 And 4
---对付以球队分类的列表 结束

--手工关闭 开始
Commit
--手工关闭 结束

--全部成员列表 开始
 with partdata as (select rownum as rowno, d.* from
  (select a.userid,b.JoinName,b.SupportTeam,a.gateno,a.timeused,
  a.correctanswers From  mycup_pk_record a Join mycup_pk_userinfo  b On  b.userid=a.userid  And a.gateno=b.gateno
   order by a.gateno Desc)d) select * from partdata where rowno Between 1 And 4
--全部成员列表 结束





分页 共2页 1 2 下一页 最后一页
wwpizi@gmail.com
emir123456@hotmail.com
emir123456@yahoo.com.cn
我的档案:

访问统计: