⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_48203.htm

📁 一些关于vc的问答
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<p>
序号:48203 发表者:KasonWu 发表日期:2003-07-29 12:30:34
<br>主题:SQL的命令
<br>内容:本人在网上抄过来的,和大家一起分享:<BR>.SQL常用命令使用方法:&nbsp;&nbsp;<BR>(1)数据记录筛选:&nbsp;&nbsp;<BR>sql="select*from数据表where字段名=字段值orderby字段名[desc]"&nbsp;&nbsp;<BR>sql="select*from数据表where字段名like'%字段值%'orderby字段名[desc]"&nbsp;&nbsp;<BR>sql="selecttop10*from数据表where字段名orderby字段名[desc]"&nbsp;&nbsp;<BR>sql="select*from数据表where字段名in('值1','值2','值3')"&nbsp;&nbsp;<BR>sql="select*from数据表where字段名between值1and值2"&nbsp;&nbsp;<BR><BR>(2)更新数据记录:&nbsp;&nbsp;<BR>sql="update数据表set字段名=字段值where条件表达式"&nbsp;&nbsp;<BR>sql="update数据表set字段1=值1,字段2=值2……字段n=值nwhere条件表达式"&nbsp;&nbsp;<BR><BR>(3)删除数据记录:&nbsp;&nbsp;<BR>sql="deletefrom数据表where条件表达式"&nbsp;&nbsp;<BR>sql="deletefrom数据表"(将数据表所有记录删除)&nbsp;&nbsp;<BR><BR>(4)添加数据记录:&nbsp;&nbsp;<BR>sql="insertinto数据表(字段1,字段2,字段3…)values(值1,值2,值3…)"&nbsp;&nbsp;<BR>sql="insertinto目标数据表select*from源数据表"(把源数据表的记录添加到目标数据表)&nbsp;&nbsp;<BR><BR>(5)数据记录统计函数:&nbsp;&nbsp;<BR>AVG(字段名)得出一个表格栏平均值&nbsp;&nbsp;<BR>COUNT(*&amp;brvbar;字段名)对数据行数的统计或对某一栏有值的数据行数统计&nbsp;&nbsp;<BR>MAX(字段名)取得一个表格栏最大的值&nbsp;&nbsp;<BR>MIN(字段名)取得一个表格栏最小的值&nbsp;&nbsp;<BR>SUM(字段名)把数据栏的值相加&nbsp;&nbsp;<BR>引用以上函数的方法:&nbsp;&nbsp;<BR>sql="selectsum(字段名)as别名from数据表where条件表达式"&nbsp;&nbsp;<BR>setrs=conn.excute(sql)&nbsp;&nbsp;<BR>用rs("别名")获取统的计值,其它函数运用同上。&nbsp;&nbsp;<BR><BR>(5)数据表的建立和删除:&nbsp;&nbsp;<BR>CREATETABLE数据表名称(字段1类型1(长度),字段2类型2(长度)……)&nbsp;&nbsp;<BR>例:CREATETABLEtab01(namevarchar(50),datetimedefaultnow())&nbsp;&nbsp;<BR><BR>DROPTABLE数据表名称(永久性删除一个数据表)&nbsp;&nbsp;<BR>4.记录集对象的方法:&nbsp;&nbsp;<BR>rs.movenext将记录指针从当前的位置向下移一行&nbsp;&nbsp;<BR>rs.moveprevious将记录指针从当前的位置向上移一行&nbsp;&nbsp;<BR>rs.movefirst将记录指针移到数据表第一行&nbsp;&nbsp;<BR>rs.movelast将记录指针移到数据表最后一行&nbsp;&nbsp;<BR>rs.absoluteposition=N将记录指针移到数据表第N行&nbsp;&nbsp;<BR>rs.absolutepage=N将记录指针移到第N页的第一行&nbsp;&nbsp;<BR>rs.pagesize=N设置每页为N条记录&nbsp;&nbsp;<BR>rs.pagecount根据pagesize的设置返回总页数&nbsp;&nbsp;<BR>rs.recordcount返回记录总数&nbsp;&nbsp;<BR>rs.bof返回记录指针是否超出数据表首端,true表示是,false为否&nbsp;&nbsp;<BR>rs.eof返回记录指针是否超出数据表末端,true表示是,false为否&nbsp;&nbsp;<BR>rs.delete删除当前记录,但记录指针不会向下移动&nbsp;&nbsp;<BR>rs.addnew添加记录到数据表末端&nbsp;&nbsp;<BR>rs.update更新数据表记录&nbsp;&nbsp;<BR>---------------------------------------&nbsp;&nbsp;<BR>Recordset对象方法&nbsp;&nbsp;<BR>Open方法&nbsp;&nbsp;<BR>recordset.OpenSource,ActiveConnection,CursorType,LockType,Options&nbsp;&nbsp;<BR>Source&nbsp;&nbsp;<BR>Recordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored <BR>Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。&nbsp;&nbsp;<BR><BR>ActiveConnection&nbsp;&nbsp;<BR>Recordset对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。&nbsp;&nbsp;<BR><BR>CursorType&nbsp;&nbsp;<BR>Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:&nbsp;&nbsp;<BR>--------------------------------------------------------------&nbsp;&nbsp;<BR>常数常数值说明&nbsp;&nbsp;<BR>-------------------------------------------------------------&nbsp;&nbsp;<BR>adOpenForwardOnly0缺省值,启动一个只能向前移动的游标(ForwardOnly)。&nbsp;&nbsp;<BR>adOpenKeyset1启动一个Keyset类型的游标。&nbsp;&nbsp;<BR>adOpenDynamic2启动一个Dynamic类型的游标。&nbsp;&nbsp;<BR>adOpenStatic3启动一个Static类型的游标。&nbsp;&nbsp;<BR>-------------------------------------------------------------&nbsp;&nbsp;<BR>以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。&nbsp;&nbsp;<BR>-------------------------------------------------------------&nbsp;&nbsp;<BR>Recordset属性adOpenForwardOnlyadOpenKeysetadOpenDynamicadOpenStatic&nbsp;&nbsp;<BR>-------------------------------------------------------------&nbsp;&nbsp;<BR>AbsolutePage不支持不支持可读写可读写&nbsp;&nbsp;<BR>AbsolutePosition不支持不支持可读写可读写&nbsp;&nbsp;<BR>ActiveConnection可读写可读写可读写可读写&nbsp;&nbsp;<BR>BOF只读只读只读只读&nbsp;&nbsp;<BR>Bookmark不支持不支持可读写可读写&nbsp;&nbsp;<BR>CacheSize可读写可读写可读写可读写&nbsp;&nbsp;<BR>CursorLocation可读写可读写可读写可读写&nbsp;&nbsp;<BR>CursorType可读写可读写可读写可读写&nbsp;&nbsp;<BR>EditMode只读只读只读 <BR>只读&nbsp;&nbsp;<BR>EOF只读只读只读 <BR>只读&nbsp;&nbsp;<BR>Filter可读写可读写可读写可读写&nbsp;&nbsp;<BR>LockType可读写可读写可读写可读写&nbsp;&nbsp;<BR>MarshalOptions可读写可读写可读写可读写&nbsp;&nbsp;<BR>MaxRecords可读写可读写可读写可读写&nbsp;&nbsp;<BR>PageCount不支持不支持只读只读&nbsp;&nbsp;<BR>PageSize可读写可读写可读写可读写&nbsp;&nbsp;<BR>RecordCount不支持不支持只读只读&nbsp;&nbsp;<BR>Source可读写可读写可读写可读写&nbsp;&nbsp;<BR>State只读只读只读只读&nbsp;&nbsp;<BR>Status只读只读只读只读&nbsp;&nbsp;<BR>AddNew支持支持支持支持&nbsp;&nbsp;<BR>CancelBatch支持支持支持支持&nbsp;&nbsp;<BR>CancelUpdate支持支持支持支持&nbsp;&nbsp;<BR>Clone不支持不支持&nbsp;&nbsp;<BR>Close支持支持支持支持&nbsp;&nbsp;<BR>Delete支持支持支持支持&nbsp;&nbsp;<BR>GetRows支持支持支持支持&nbsp;&nbsp;<BR>Move不支持支持支持支持&nbsp;&nbsp;<BR>MoveFirst支持支持支持支持&nbsp;&nbsp;<BR>MoveLast不支持支持支持支持&nbsp;&nbsp;<BR>MoveNext支持支持支持支持&nbsp;&nbsp;<BR>MovePrevious不支持支持支持支持&nbsp;&nbsp;<BR>NextRecordset支持支持支持支持&nbsp;&nbsp;<BR>Open支持支持支持支持&nbsp;&nbsp;<BR>Requery支持支持支持支持&nbsp;&nbsp;<BR>Resync不支持不支持支持支持&nbsp;&nbsp;<BR>Supports支持支持支持支持&nbsp;&nbsp;<BR>Update支持支持支持支持&nbsp;&nbsp;<BR>UpdateBatch支持支持支持支持&nbsp;&nbsp;<BR>--------------------------------------------------------------&nbsp;&nbsp;<BR>其中NextRecordset方法并不适用于MicrosoftAccess数据库。&nbsp;&nbsp;<BR><BR>LockType&nbsp;&nbsp;<BR>Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:&nbsp;&nbsp;<BR>-------------------------------------------------------------&nbsp;&nbsp;<BR>常数常数值说明&nbsp;&nbsp;<BR>--------------------------------------------------------------&nbsp;&nbsp;<BR>adLockReadOnly1缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法&nbsp;&nbsp;<BR>adLockPrssimistic2当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。&nbsp;&nbsp;<BR>adLockOptimistic3当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。&nbsp;&nbsp;<BR>adLockBatchOptimistic4当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、&nbsp;&nbsp;<BR>删、改的操作。&nbsp;&nbsp;<BR>Sqlserver数据库asp调用的特殊部分&nbsp;&nbsp;<BR>&lt;%&nbsp;&nbsp;<BR>response.writews2(1)&nbsp;&nbsp;<BR>w2=ws2(2)&nbsp;&nbsp;<BR>response.write"a"&nbsp;&nbsp;<BR>response.write"b"&amp;ws2(3)&amp;"c"&nbsp;&nbsp;<BR>response.write"d"&amp;w2&nbsp;&nbsp;<BR>%&gt;&nbsp;&nbsp;<BR><BR>建立一个表&nbsp;&nbsp;<BR>createtablefriends(name1varchar(10),phonevarchar(15))&nbsp;&nbsp;<BR><BR><BR>跟access不同,sqlserver默认的数据库只能向后读取,非常严格。&nbsp;&nbsp;<BR><BR>在数据库之间拷贝复制表格&nbsp;&nbsp;<BR>select*intocoolhe.dbo.mainfrommain&nbsp;&nbsp;<BR><BR>删除数据库&nbsp;&nbsp;<BR>dropdatabasecoolhe&nbsp;&nbsp;<BR><BR>查找替换功能&nbsp;&nbsp;<BR><BR>updatecommend&nbsp;&nbsp;<BR>setGIF图片=stuff(GIF图片,1,21,"http://192.168.1.2")//替换GIF图片字段从头开始的21个字符为&lt;http://192.168.1.2&gt;&nbsp;&nbsp;<BR><BR>更改记录&nbsp;&nbsp;<BR>自动增加的字段无法更改&nbsp;&nbsp;<BR>解决办法如下&nbsp;&nbsp;<BR><BR>CREATETABLEnew_employees&nbsp;&nbsp;<BR>(&nbsp;&nbsp;<BR>id_numintIDENTITY(1,1),&nbsp;&nbsp;<BR>fnamevarchar(20),&nbsp;&nbsp;<BR>minitchar(1),&nbsp;&nbsp;<BR>lnamevarchar(30)&nbsp;&nbsp;<BR>)&nbsp;&nbsp;<BR><BR>INSERTnew_employees&nbsp;&nbsp;<BR>(fname,minit,lname)&nbsp;&nbsp;<BR>valueS&nbsp;&nbsp;<BR>('Karin','F','Josephs')&nbsp;&nbsp;<BR><BR><BR>修改某个记录&nbsp;&nbsp;<BR>updatemain&nbsp;&nbsp;<BR>setGIF图片=’新的’whereid=4331&nbsp;&nbsp;<BR><BR>添加一条记录&nbsp;&nbsp;<BR>insertarticles&nbsp;&nbsp;<BR>(category,title,link,updatetime)&nbsp;&nbsp;<BR>values&nbsp;&nbsp;<BR>('CPU','AMDAthlonXP处理器技术与架构','20011024/01.asp','10-24-2001')&nbsp;&nbsp;<BR><BR>从一个表添加记录道另一个表&nbsp;&nbsp;<BR>insertmain&nbsp;&nbsp;<BR>selecta,b,c,dfromnew&nbsp;&nbsp;<BR><BR>当main有一个字段为自动增加时,新表不能选取自动增加的字段,而避开该字段以上例的形式书写&nbsp;&nbsp;<BR><BR>查找数据库中所有的表&nbsp;&nbsp;<BR><BR>select*fromsysobjectswherextype='u'&nbsp;&nbsp;<BR><BR>计算某个字段的和&nbsp;&nbsp;<BR><BR>select'downloadcount'=sum(下载次数)&nbsp;&nbsp;<BR><BR>检索表定义信息&nbsp;&nbsp;<BR><BR>sp_help表名&nbsp;&nbsp;<BR><BR>修改表名&nbsp;&nbsp;<BR><BR>sp_rename'cool','commend'&nbsp;&nbsp;<BR><BR>添加表字段(如果一次添加多字段后面不加bit)&nbsp;&nbsp;<BR><BR>ALTERTABLEmain&nbsp;&nbsp;<BR>ADD开关bit&nbsp;&nbsp;<BR><BR>altertablemainadd年龄char(3),姓名varchar(8),性别char(2)&nbsp;&nbsp;<BR><BR>修改表字段类型&nbsp;&nbsp;<BR>原先姓名字段的类型是char(10)&nbsp;&nbsp;<BR>altertabletablenamealtercolumn姓名varchar(20)&nbsp;&nbsp;<BR><BR>修改密码&nbsp;&nbsp;<BR>EXECsp_passwordNULL,'ok','Victoria'(密码为空时)Victoria为login的用户名&nbsp;&nbsp;<BR>EXECsp_password'ok','coffee'密码从ok改到coffee&nbsp;&nbsp;<BR><BR>altertabletable_nameaddcolumncolumn_namedatatype <BR><BR>  说明:增加一个栏位(没有删除某个栏位的语法。)&nbsp;&nbsp;<BR><BR>  altertabletable_nameaddprimarykey(column_name)&nbsp;&nbsp;<BR><BR>  说明:更改表得的定义把某个栏位设为主键。&nbsp;&nbsp;<BR>  &nbsp;&nbsp;<BR>  altertabletable_namedropprimarykey(column_name)&nbsp;&nbsp;<BR><BR>  说明:把主键的定义删除&nbsp;&nbsp;<BR><BR>将一个字段的默认值设置成0&nbsp;&nbsp;<BR><BR>ALTERTABLEtable_nameADDCONSTRAINTDF_Test_FieldNameDEFAULT(0)FORFieldName&nbsp;&nbsp;<BR><BR>DF_Test_FieldName不要变动&nbsp;&nbsp;<BR><BR>更改字段名称&nbsp;&nbsp;<BR>sp_rename'tablename.fieldname','newname','column';&nbsp;&nbsp;<BR>column不要变动&nbsp;&nbsp;<BR><BR>注释&nbsp;&nbsp;<BR>/*select*fromnews*/或者--select*fromnews--&nbsp;&nbsp;<BR>其中横线用于插入式注释&nbsp;&nbsp;<BR><BR>setrs=cn.execute(sql)此语句返回一个SQL语句执行后的结构,把结果赋值给RS&nbsp;&nbsp;<BR>cn.Executesql此语句只是执行SQL语句&nbsp;&nbsp;<BR><BR>数据类型+++++++++++++++++++++++++++++++++++++++++++++++++datatypes&nbsp;&nbsp;<BR>  smallint&nbsp;&nbsp;<BR>  16位元的整数。&nbsp;&nbsp;<BR><BR>  interger&nbsp;&nbsp;<BR>  32位元的整数。&nbsp;&nbsp;<BR><BR>  decimal(p,s)&nbsp;&nbsp;<BR>  p精确值和s大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数後有几位数。如果没有特别指定,则系统会设为p=5;s=0。 <BR><BR>  float&nbsp;&nbsp;<BR>  32位元的实数。&nbsp;&nbsp;<BR><BR>  double&nbsp;&nbsp;<BR>  64位元的实数。&nbsp;&nbsp;<BR><BR>  char(n)&nbsp;&nbsp;<BR>  n长度的字串,n不能超过254。&nbsp;&nbsp;<BR><BR>  varchar(n)&nbsp;&nbsp;<BR>  长度不固定且其最大长度为n的字串,n不能超过4000。&nbsp;&nbsp;<BR><BR>  graphic(n)&nbsp;&nbsp;<BR>  和char(n)一样,不过其单位是两个字元double-bytes,n不能超过127。这个形态是为支援两个字元长度的字体,例如中文字。&nbsp;&nbsp;<BR><BR>  vargraphic(n)&nbsp;&nbsp;<BR>  可变长度且其最大长度为n的双字元字串,n不能超过2000。&nbsp;&nbsp;<BR><BR>  date&nbsp;&nbsp;<BR>  包含了年份、月份、日期。&nbsp;&nbsp;<BR><BR>  time&nbsp;&nbsp;<BR>  包含了小时、分钟、秒。&nbsp;&nbsp;<BR><BR>  timestamp&nbsp;&nbsp;<BR>  包含了年、月、日、时、分、秒、千分之一秒。&nbsp;&nbsp;<BR><BR><BR><BR>在SQLServer中提供了这种恢复方式的存储过程。&nbsp;&nbsp;<BR><BR>1.sp_attach_db[@dbname=]dbname,[@filename1=]filename_n <BR><BR>  给系统添加一个数据库,在dbname指定数据库名称,filename_n指定数据库的文件和日志文件。比如我有一个voogiya的库,停止SQLServer服务备份voogiya_data.mdf,voogiya_log.ldf,启动SQLserver,删除掉这个库,然后再把这两上文件拷到sqlserver DATA目录中,在QueryAnalyzer中执行如下语句:&nbsp;&nbsp;<BR><BR>EXECsp_attach_db@dbname=Nvoogiya,&nbsp;&nbsp;<BR>@filename1=Nd:\mssql7\data\voogiya_data.mdf,(不加N时成功)&nbsp;&nbsp;<BR>@filename2=Nd:\mssql7\data\voogiya_log.ldf(不加N时成功)&nbsp;&nbsp;<BR><BR>就会把这个库加入到SQLServerGroup中.&nbsp;&nbsp;<BR>2.sp_attach_single_file_db[@dbname=]dbname,&nbsp;&nbsp;<BR>[@physname=]physical_name <BR><BR>  这个命令和上面的功能一样,在physical_name中只要写上据库的物理文件名就可以了,日志文件SQLserver会重新建立。这个存储过程的运行要先执行下面的存储过程: <BR><BR>sp_detach_db@dbname=dbname <BR><BR>  同样以上面的为例:&nbsp;&nbsp;<BR><BR>EXECsp_detach_db@dbname=voogiya&nbsp;&nbsp;<BR>EXECsp_attach_single_file_db@dbname=voogiya,&nbsp;&nbsp;<BR>@physname=d:\mssql7\data\voogiya_data.mdf <BR><BR>  要注意执行以上存储过程的用户要在sysadmin中&nbsp;&nbsp;<BR>&nbsp;&nbsp;
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:利 回复日期:2003-07-29 13:47:30
<br>内容:收藏起来.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -