JOIN: 如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 FULL JOIN: 只要其中一个表中存在匹配,就返回行
View Details海量数据(百万以上),其中有些全部字段都相同,有些部分字段相同,怎样高效去除重复? 如果要删除手机(mobilePhone),电话(officePhone),邮件(email)同时都相同的数据,以前一直使用这条语句进行去重: delete from 表 where id not in ( select max(id) from 表 group by mobilePhone,officePhone,email ) or delete from 表 where id not in ( select min(id) from 表 group by mobilePhone,officePhone,email ) 复制代码 其中下面这条会稍快些。上面这条数据对于100万以内的数据效率还可以,重复数1/5的情况下几分钟到几十分钟不等,但是如果数据量达到300万以上,效率骤降,如果重复数据再多点的话,常常会几十小时跑不完,有时候会锁表跑一夜都跑不完。无奈只得重新寻找新的可行方法,今天终于有所收获: //查询出唯一数据的ID,并把他们导入临时表tmp中 select min(id) as mid into tmp from 表 group by mobilePhone,officePhone,email //查询出去重后的数据并插入finally表中 insert into finally select (除ID以外的字段) from customers_1 where id in (select mid from tmp) 复制代码 效率对比:用delete方法对500万数据去重(1/2重复)约4小时 […]
View Details1.SQL SERVER的数据类型 数据类弄是数据的一种属性,表示数据所表示信息的类型。任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少有些不同。SQLServer 提供了 25 种数据类型: ·Binary [(n)] ·Varbinary [(n)] ·Char [(n)] ·Varchar[(n)] ·Nchar[(n)] ·Nvarchar[(n)] ·Datetime ·Smalldatetime ·Decimal[(p[,s])] ·Numeric[(p[,s])] ·Float[(n)] ·Real ·Int ·Smallint ·Tinyint ·Money ·Smallmoney ·Bit ·Cursor ·Sysname ·Timestamp ·Uniqueidentifier ·Text ·Image ·Ntext (1)二进制数据类型 二进制数据包括 Binary、Varbinary 和 Image Binary 数据类型既可以是固定长度的(Binary),也可以是变长度的。 Binary[(n)] 是 n 位固定的二进制数据。其中,n 的取值范围是从 1 到 8000。其存储窨的大小是 n + 4 个字节。 Varbinary[(n)] 是 n 位变长度的二进制数据。其中,n 的取值范围是从 1 到 8000。其存储窨的大小是 n + 4个字节,不是n 个字节。 在 Image 数据类型中存储的数据是以位字符串存储的,不是由 SQL Server 解释的,必须由应用程序来解释。例如,应用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把数据存储在 Image 数据类型中。 (2)字符数据类型 字符数据的类型包括 Char,Varchar 和 Text 字符数据是由任何字母、符号和数字任意组合而成的数据。 Varchar 是变长字符数据,其长度不超过 8KB。Char 是定长字符数据,其长度最多为 8KB。超过 8KB 的ASCII 数据可以使用Text数据类型存储。例如,因为 Html 文档全部都是 ASCII 字符,并且在一般情况下长度超过 8KB,所以这些文档可以 Text 数据类型存储在SQL Server 中。 (3)Unicode 数据类型 Unicode 数据类型包括 Nchar,Nvarchar 和Ntext 在 Microsoft SQL Server 中,传统的非 Unicode 数据类型允许使用由特定字符集定义的字符。在 SQL Server安装过程中,允许选择一种字符集。使用 Unicode 数据类型,列中可以存储任何由Unicode 标准定义的字符。在 Unicode 标准中,包括了以各种字符集定义的全部字符。使用Unicode数据类型,所战胜的窨是使用非 Unicode 数据类型所占用的窨大小的两倍。 在 SQL Server 中,Unicode […]
View DetailsC#的数据类型可以分为3类:数值类型,引用类型,指针类型.指针类型仅在不安全代码中使用. 值类型包括简单类型(如字符型,浮点型和整数型等),集合类型和结构型.引用类型包括类类型,接口类型,代表类型和数组类型.值 类型和引用类型的不同之处是值类型的变量值直接包含数据,而引用类型的变量把它们的引用存储在对象中.对于引用类型的变量,完全有可能让两个不同的变量引 用同一个对象,这样一来,对其中一个变量的操作就会影响到被另一个变量引用的对象.对于值类型的变量而言,每一个变量有它们自己的数值,因此对其中一个变 量的操作不可能影响到另外一个变量.值类型所有的值类型都隐含地声明了一个公共的无参数的构造函数,这个构造函数叫做默认构造函数.默认构造函数返回一个初始为零的值类型的实例,称之为默认值.对于sbyte,byte,short,ushort,int,uint,long,ulong,默认值为0. 对于char,默认值是’"x0000′对于float,默认值是0.0F对于double,默认值是0.0D对于decimal,默认值是0.0M对于bool,默认值是false对于一个枚举类型,默认值是0对于一个结构类型,默认值的设置就是把所有值类型的域都设置为它们各自的默认值,把所有的引用类型的域赋为空简单类型C#提供一套预定义的结构类型叫做简单类型.简单类型用保留字定义,这些保留字仅仅是在System名字空间里预定义的结构类型的化名.比如int是保留字,System.Int32是在System名字空间中预定义类型.一个简单类型和它化名的结构类型是完全一样的,也就是说写int和写System.Int32是一样的.简单类型主要有整型,浮点类型,小数类型,布尔类型,字符型整型C#中支持9种整型:sbyte,byte,short,ushort,int,uint,long,ulong和char.Sbyte:代表有符号的8位整数,数值范围从-128 ~ 127Byte:代表无符号的8位整数,数值范围从0~255Short:代表有符号的16位整数,范围从-32768 ~ 32767ushort:代表有符号的16位整数,范围从-32768 ~ 32767Int:代表有符号的32位整数,范围从-2147483648 ~ 2147483648 uint:代表无符号的32位整数,范围从0 ~ 4294967295Long:代表有符号的64位整数,范围从-9223372036854775808 ~ 9223372036854775808 Ulong:代表无符号的64位整数,范围从0 ~ 18446744073709551615.char:代表无符号的16位整数,数值范围从0~65535.Char类型的可能值对应于统一字符编码标准(Unicode)的字符集.Char类型与其他整数类型相比有以下两点不同之处:1,没有其他类型到char类型的隐式转换.即使是对于sbyte,byte和ushort这样能完全使用char类型代表其值的类型, sbyte,byte和ushort到char的隐式转换也不存在.2,char类型的常量必须被写为字符形式,如果用整数形式,则必须带有类型转换前缀.比如(char)10赋值形式有三种:char chsomechar="A";char chsomechar=""x0065"; 十六进制char chsomechar=""u0065 ; unicode表示法字符型中有下列转义符:1,"’用来表示单引号2,""用来表示双引号3,"" 用来表示反斜杠4, "0 表示空字符5, "a 用来表示感叹号6, "b 用来表示退格7, "f 用来表示换页8, "n 用来表示换行9, "r 用来表示回车10, "t 用来表示水平tab11, "v 用来表示垂直tab浮点类型C#支持两种浮点类型:float和double.Float型所能表示的值的范围大约可以从1.5*10 -45~3.4* 10 38,精确到小数点后面7位.Double型所能表示的值的范围大约可以从5.0*10 -324~1.7* 10 308,精确到小数点后面15位或16位.如果二元操作中的其中一个操作数为浮点类型,那么另外一个操作数是整型或浮点类型,运算规则如下:1,如果其中一个操作数是整型,则操作数被转换为另一个操作数的浮点数类型;2,如果操作数之一为double,则另一操作数也被转换成double类型,运算以double类型的精度和取值范围进行,并且所得结果也为double类型;3,否则,运算至少将以float类型的取值范围和精度进行,并且所得结果也为float型.小数(decimal)类型小数类型非常适用于金融和货币运算.数值范围从1.0*10 -28~7.9* 10 28,精确到小数点后面28位.如果二元操作中的其中一个操作数是小数类型,那么另外一个从操作数是整型或小数类型.整型在运算前被转化为小数类型数.如果一个小数类型的算术运算产生了一个对于小数类型的格式来说太小的值,操作的结果将会变成0.如果一个小数类型的算术运算产生了一个对于小数类型的格式来说太大的值,就会触发溢出错误.小数类型较浮点类型而言,具有更大的精确度,但是数值范围相对小了很多.将浮点类型的数向小数类型的数转化时会产生溢出错误,将小数类型的数向浮点类型的数转化时会造成精确度的损失.因此,两种类型不存在隐式或显式转换.布尔型:值为true或false.没有标准能实现布尔类型和其他类型的转换.枚举类型:枚举类型的元素使用的类型只能是long,int,short,byte.默认类型是int.默认第一个元素的值是0,每一个连续的元素按1递增.可以给元素直接赋值.如:enum monthnames {January=1,February, march=31};可以强制定义其他类型,如:enum monthnames : byte{January ,February,March};结构类型结构类型也是一种值类型,使用它的目的是用于创建小型的对象,用以节省内存.下面的例子表示一个使用byte类型的4个字段的IP地址.using System;Struct IP //声明结构{ public byte b1,b2,b3,b4;}Class test{public static void Main(){IP myIP;myIP.b1=192;myIP.b2=168;myIP.b3=1;myIP.b4=101;Console.Write("{0}.{1}.", myIP.b1, myIP.b2);Console.Write("{0}.{1}", myIP.b3, myIP.b4);}}引用类型引用类型包括类类型,接口类型,代表类型和数组类型.1,类类型类 类型定义了一种数据结构,这个数据结构中包含了数据成员(如常量,字段和事件等),函数成员(如方法,属性,索引,操作,构造函数和析构函数等)和嵌套 类型.支持继承.2,对象类型对象类型是其他所有类型最终的基础类型.在C#中每一种类型都直接或者间接的源于object这个类类型.3,字符串类型字符串类型是直接从object中继承而来的密封类.String类型的值可以写成字符串文字的形式.4,接口类型一个接口声明一个只有抽象成员的引用类型,接口仅仅存在方法标志,但没有执行代码.当定义一个类时,如果类从接口派生,可以派生自多重接口;但是如果类从类派生,就只能从一个类派生.声明方法如例:interface iface{void showmyface();}5,代表类型代表引用一种静态的方法或者对象实例,引用该对象的实例方法.与其接近的是c/c++中的指针,但指针只能访问静态的函数,代表既能访问静态的方法,也能访问实例的方法.6,数组数组是包含一串变量的数据结构.数组变量也称做数组元素,它们具有相同的类型,这种类型也称做数组元素类型.数组的元素类型可以是任何类型,包括数组类型.数组用下标确定每一个数组元素的索引号.只有一个下标的数组称为一维数组,多于一个下标的数组称为多维数组.例:int[] a={0,2,4,6,8}; 等价于int[] a=new int[] {0,2,4,6,8};也可以这样初始化:a[0]=0; a[1]=2; a[2]=4; a[3]=6; a[4]=8;int[] a; //int型的一维数组int[,] […]
View Details下面教程主要介绍如何使用web.config文件显示详细的错误信息,而不是单纯500 error 默认情况下.NET程序出现错误,客户端显示以下错误:引用:Server Error in '/mytestapp' Application.Runtime Error Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed.我们可以通过创建或修改web.config文件使之显示详细的错误:代码1:(适用于GoDaddy Windows IIS6的web.config代码)复制内容到剪贴板代码:<!-- Web.Config Configuration File --> <configuration><system.web><customErrors mode="Off"/></system.web></configuration>代码2:Windows IIS7的用户使用下面的代码:复制内容到剪贴板代码:<configuration><system.webServer><httpErrors errorMode="Detailed" /><asp scriptErrorSentToBrowser="true"/></system.webServer><system.web><customErrors mode="Off"/><compilation debug="true"/></system.web></configuration>设置404错误页面使用web.config文件也可以配置显示错误面其中的mycustompage.htm是你想设置的错误页面复制内容到剪贴板代码:<?xml version="1.0" encoding="utf-8" ?> <configuration><system.web><customErrors mode="On" default Redirect="mycustompage.htm"/></system.web></configuration>Mode值的意思:"On" 始终显示自定义(友好的)信息。 "Off" 始终显示详细的 ASP.NET 错误信息。 "RemoteOnly" 只对不在本地 Web 服务器上运行的用户显示自定义(友好的)信息。出于安全目的,建议使用此设置,以便不向远程客户端显示应用程序的详细信息。 from url:http://www.yinhaoran.cn/article.asp?id=87
View Detailscd 改变当前目录 sys 制作DOS系统盘 copy 拷贝文件 del 删除文件 deltree 删除目录树 dir 列文件名 diskcopy 制磁盘 edit 文本编辑 format 格式化磁盘 md 建立子目录 mem 查看内存状况 type 显示文件内容 rd 删除目录 ren 改变文件名 记得多少啊,忘了就去上课看看,下面四个命令是新的,给出命令格式,你自己试试看,学电脑重要的就是摸索。 cls 清屏 [适用场合] 屏幕上太乱了,或是屏幕上出现乱码了, 清除屏幕上显示内容但不 影响电脑内部任何信息 [用 法] cls 回车 move 移动文件,改目录名 [适用场合] 移动文件到别的目录 [用 法] move [文件名] [目录] 移动文件至新目录下 move [目录名] [目录名] 改目录名 [例 子] c:\>move c:\autoexec.bat c:\old 移动autoexec.bat文件至old目录下 c:\>move c:\config.sys c:\temp 移动config.sys文件至old目录下 more 分屏显示 [适用场合] 当输出很多一屏显示不下时采用,几乎适合所有命令,尤其是type 等命令时很有用。 使用more时磁盘不能有写保护,也不适合光驱。 [用 法] type [文件名] | more 分屏显示文件内容 more < [文件名] 分屏显示文件内容 [例 子] C:\>type msdos.w40 | more xcopy 拷贝目录和文件 [适用场合] 在进行连同子目录一起拷贝时很有用,在拷贝大量文件时比COPY命令 要快得多 [用 法] xcopy [文件名] [目录] 将指定文件拷贝到指定目录 xcopy [源目录] [目的目录] 将源目录连子目录考到目的目录下 xcopy *.* [目录] /s 将文件与非空子目录拷贝到指定目录 其它常用参数还有: v 拷贝后校验,会影响速度 e 与s 相似,但即使子目录是空的也会拷贝。 ——help 我们已经学习了不少DOS命令,是不是感到记忆起来很困难,其实高手都不记命令的用法,而只是知道某个命令可以解决某个问题,或在哪个场合下该用哪个命令,用时就现查该命令的用法(当然这要求你首先得有一定英文基础,而且知道哪个命令是干啥的,如果都不行没办法,就只好记了,或者学windows吧) 那该怎样查一个命令的用法呢?这就要用到help命令,它可提供所有命令的帮助。 help 帮助 [适用场合] 当您想具体了解DOS命令的使用方法时使用 [用 法] help […]
View Detailsusing System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Windows.Forms.Design; using System.DirectoryServices; using System.Reflection; using System.Text.RegularExpressions; int TotalServerCount=0; DirectoryEntry rootfolder = new DirectoryEntry("IIS://localhost/W3SVC"); //TotalServerCount=rootfolder.Children.SchemaFilter.Count; foreach (DirectoryEntry child in rootfolder.Children) { if (child.SchemaClassName == "IIsWebServer") { TotalServerCount+=1; } } //循环获取所有站点详细属性写入数组中 string [] arrayServerID = new string[TotalServerCount];//站点标识符 string [] arrayServerIP = new string[TotalServerCount];//站点主机头 string [] arrayServerPort = new string[TotalServerCount];//站点主机头 string [] arrayServerHeader = new string[TotalServerCount];//站点主机头 string [] arrayServerPath = new string[TotalServerCount];//站点主机头 string [] arrayServerComment = new string[TotalServerCount];//站点主机头 string [] arrayServerBinds = new string[TotalServerCount];//站点主机头 string currentServerBindings;//绑定主机头IP端口字符串 char[] a=":".ToCharArray(); string […]
View Detailsprivate void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e) { string currentServerComment=comboBox1.SelectedItem.ToString(); string currentSiteNum = GetWebSiteNum(currentServerComment); string rootPath = "IIS://localhost/w3svc"; string currentSitePath =rootPath+"/"+currentSiteNum; DirectoryEntry siteEntry = new DirectoryEntry(currentSitePath); string currentServerBindings=siteEntry.Properties["ServerBindings"].Value.ToString(); char[] a=":".ToCharArray(); string [] currentBingdings = null; currentBingdings=currentServerBindings.Split(a); string currentServerIP=currentBingdings[0]; string currentServerPort=currentBingdings[1]; string currentServerHeader=currentBingdings[2]; string currentServerHost=""; string currentServerPath=""; foreach (DirectoryEntry child in siteEntry.Children) { if((child.SchemaClassName == "IIsWebVirtualDir")&&(child.Name=="root")) { currentServerPath = child.Properties["Path"].Value.ToString(); } } textBox2.Text=currentServerIP; textBox3.Text=currentServerPort; textBox4.Text=currentServerPath; textBox5.Text=currentServerHeader; textBox6.Text=currentServerHost; } /// <summary> /// 根据站点名称获取站点标识符 /// </summary> public string GetWebSiteNum(string siteName) { Regex […]
View Details(木野狐 2006-10-29) 由于之前一阵公司一个项目提出的需求,自己也想进行这方面的尝试,我对如何使用 Flash 来做 WinForm 程序的界面产生了兴趣,于是学习了一些资料,摘要于此。 要在 WinForm 中使用 Flash,通常需要用到 Shockwave Flash Object 这个 COM 组件。 (http://www.codeproject.com/csharp/fscommand.asp) (http://www.codeproject.com/useritems/FlashDBInteract.asp) 具体步骤如下: 首先添加对 COM 组件 Shockwave Flash Object 的引用,将该组件拖到窗体上之后,可以设置如下关键属性: Movie: Flash 的存放地址 EmbedMovie: 是否嵌入到程序的资源中。 接下来你可以设置其他一些属性,使得 Flash 的窗口最大化,隐藏掉其宿主程序的 C# WinForm 窗体。 在 Flash 的 ActionScript 中,可以通过 FSCommand 函数与 hosting app 通信,该函数有两个参数,分别是: command: 命令名称 parameters: 参数 例子: on(press){ fscommand("Circule", "Green"); } 在 C# 中,处理 Flash 对象的 FSCommand 事件即可。 如果该事件处理函数的 EventArgs 为 e, 则有如下对应关系: […]
View Details1.asp.net webform用“Request.PhysicalApplicationPath获取站点所在虚拟目录的物理路径,最后包含“\”; 2.c# winform用A:“Application.StartupPath”:获取当前应用程序所在目录的路径,最后不包含“\”;B:“Application.ExecutablePath ”:获取当前应用程序文件的路径,包含文件的名称;C:“AppDomain.CurrentDomain.BaseDirectory”:获取当前应用程序所在目录的路径,最后包含“\”;D:“System.Threading.Thread.GetDomain().BaseDirectory”:获取当前应用程序所在目录的路径,最后包含“\”;E:“Environment.CurrentDirectory”:获取当前应用程序的路径,最后不包含“\”;F:“System.IO.Directory.GetCurrentDirectory”:获取当前应用程序的路径,最后不包含“\”; 3.c# windows service服务中用“AppDomain.CurrentDomain.BaseDirectory”或“System.Threading.Thread.GetDomain().BaseDirectory”;用“Environment.CurrentDirectory”和“System.IO.Directory.GetCurrentDirectory”将得到“ system32”目录的路径;如果要使用“Application.StartupPath”或“Application.ExecutablePath ”,需要手动添加对“System.Windows.Forms.dll ”的引用,并在程序开头用“using System.Windows.Forms”声明该引用; 4.在卸载程序获取系统安装的目录:System.Reflection.Assembly curPath = System.Reflection.Assembly.GetExecutingAssembly();string path=curPath.Location;//得到安装程序类SetupLibrary文件的路径,获取这个文件路径所在的目录即得到安装程序的目录; System.Diagnostics.StackFrame f = new System.Diagnostics.StackFrame(1);MethodBase mb = f.GetMethod();System.Web.HttpContext.Current.Response.Write(mb.DeclaringType.ToString()); 获取调用类的信息,可以从父类知道子类的情况
View Details