数据库及OLEDB类别知识汇总

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据库及OLEDB类别知识汇总一、_variant_t_variant_t变体的成员中:bVal并不是bool型的,而是一个无符号的整型。通过SQLServer返回值时,如果是bit型的1,bVal会返回255。boolVal也不是bool型的,而是short型的。二、ADODataSetBackupADODataSetBackup.close;ADODataSetBackup.commandtext='Selectfromtablename';ADODataSetBackup.open;...备份ADODataSetBackup.savetofile('备份文件名');...恢复ADODataSetRestore.loadfromfile('备份文件名');ADODataSetRestore.post;三、char和varchar的区别CHAR的长度是固定的,VARCHAR2的长度是可以变化的。比如,存储字符串“abc,对于CHAR(10),存储的字符将占10个字节(包括7个空字符),VARCHAR2(10)只占用3个字节的长度,10只是最大值,当存储的字符小于10时,按实际长度存储。CHAR的效率比VARCHAR2的效率稍高。目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系。VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的“以空间换效率”。VARCHAR2虽然比CHAR节省空间,但如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起“行迁移”(RowMigration)现象,造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。四、表结构里的默认值的设定正数:(默认值)负数:((默认值))字符串:('默认值')五、二进制字符串的提取当必须从二进制的字符串、表列中的字符串值或是字符串表达式中提取部分字符串时,有以下两种办法:一、如果提取的是以从起始字节开始的子串,那么可以利用varbinary变量来截取。二、如果提取的是中间的某一部分,则需要用SubString函数。该函数语法如下:SubString(targetstring,start,length)start并不是指的起始字符,而是指的起始位置。即selectSubString('UserDefData','7','6')是指从UserDefData中取出第七个字符开始的6个字符组成的字串(7~12)如果不知道字符串的实际长度,只要指定让SubString函数返回的最大数目的字符号串。当SubString函数发现targetstring从start(起点)到字符串尾部的长度比length个字符串短时,就返回从start位置到结尾时的字符串(不报告错误)。由此,可以通过同一语句来获取诸如Pcm360、Pcm360DB、Pcm360DB_1这三个结果。如果targetstring是NULL,SubString函数将返回NULL值。类似的,如果指定的start比targetstring的长度还大,某些DBMS产品将返回NULL结果。另一些,例如MS-SQLServer将返回空的字符串(长度为0)。六、经典SQL语句集锦SQL分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)--备份库USEmasterexecsp_addumpdevice'disk','testBack','C:\...'BACKUPDATABASEpubsTOtestBack--创建表CREATETABLEtab_newliketab_oldCREATETABLEtab_newASSELECTColumn1,Column2…FROMtab_oldDEFINITIONONLY--修改表ALTERTABLETableNameADDCOLUMNColumnNameElemTypeAllowNullALERTTABLETableNameADDPRIMARYKEY(ColumnName)ALERTTABLETableNameDROPPRIMARYKEY(ColumnName)注1:所有DBMS中,列增加后将不能删除。注2:DB2中列增加后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。--创建索引CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXIndexNameONTableName(Column1,Column2…)注:索引是不可更改的,想更改必须删除重新建。--创建和删除视图CREATEVIEWViewNameASSELECT…DROPVIEWViewNameUNION运算符:UNION运算符通过组合其他两个结果表(例如TABLE1和TABLE2)并消去表中任何重复行而派生出一个结果表。当ALL随UNION一起使用时,不消除重复行。两种情况下派生表的每一行不是来自TABLE1就是来自TABLE2。EXCEPT运算符:EXCEPT运算符通过包括所有在TABLE1中但不在TABLE2中的行并消除所有重复行而派生出一个结果表。当ALL随EXCEPT一起使用时(EXCEPTALL),不消除重复行。INTERSECT运算符:INTERSECT运算符通过只包括TABLE1和TABLE2中都有的行并消除所有重复行而派生出一个结果表。当ALL随INTERSECT一起使用时(INTERSECTALL),不消除重复行。注:使用运算符的几个查询结果行必须是一致的。LEFTOUTERJOIN:结果集既包括连接表的匹配行,也包括左连接表的所有行。RIGHTOUTERJOIN:结果集既包括连接表的匹配连接行,也包括右连接表的所有行。FULLOUTERJOIN:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。复制表(只复制结构。源表名:a,新表名:b)(Access可以用)法一:SELECT*INTObFROMaWHERE11法二:SELECTTOP0*INTObFROMa拷贝表(拷贝数据。源表名:a,目标表名:b)(Access可以用)INSERTINTOb(a,b,c)SELECTd,e,fFROMb跨数据库之间表的拷贝(数据使用绝对路径)(Access可以用)INSERTINTOb(a,b,c)SELECTd,e,fFROMbIN'&Server.MapPath(.)&\data.mdb&'WHERE…子查询(表名1:a表名2:b)SELECTa,b,cFROMaWHEREaIN(SELECTdFROMb)SELECTa,b,cFROMaWHEREaIN(1,2,3)外连接查询(表名1:a表名2:b)SELECTa.a,a.b,a.c,b.c,b.d,b.fFROMaLEFTOUTJOINbONa.a=b.c在线视图查询(表名1:a)SELECT*FROM(SELECTa,b,cFROMa)TWHEREt.a1BETWEEN限制查询数据范围时包括了边界值,NOTBETWEEN不包括边界值。SELECT*FROMtable1WHEREtimeBETWEENtime1ANDtime2SELECTa,b,cFROMtable1WHEREaNOTBETWEENa1ANDa2Conn.Execute说明Execute方法该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:1.执行SQL查询语句时,将返回查询得到的记录集。用法为:Set对象变量名=连接对象.Execute(SQL查询语言)Execute方法调用后,会自动创建记录集对象,并将查询结果存储在该记录对象中,通过Set方法,将记录集赋给指定的对象保存,以后对象变量就代表了该记录集对象。2.执行SQL的操作性语言时,没有记录集的返回。此时用法为:连接对象.ExecuteSQL操作性语句[,RecordAffected][,Option]RecordAffected为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进行了操作。Option可选项,该参数的取值通常为adCMDText,它用于告诉ADO,应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数,可使执行更高效。BeginTrans、RollbackTrans、CommitTrans方法这三个方法是连接对象提供的用于事务处理的方法。BeginTrans用于开始一个事物;RollbackTrans用于回滚事务;CommitTrans用于提交所有的事务处理结果,即确认事务的处理。事务处理可以将一组操作视为一个整体,只有全部语句都成功执行后,事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并恢复到处里前的状态。BeginTrans和CommitTrans用于标记事务的开始和结束,在这两个之间的语句,就是作为事务处理的语句。判断事务处理是否成功,可通过连接对象的Error集合来实现,若Error集合的成员个数不为0,则说明有错误发生,事务处理失败。Error集合中的每一个Error对象,代表一个错误信息。七、哪种命令可以用来压缩数据库容量数据库在使用一段时间后,时常会出现因数据删除而造成数据库中空闲空间太多的情况,这时就需要减少分配给数据库文件和事务日志文件的磁盘空间,以免浪费磁盘空间。当数据库中没有数据时,可以修改数据库文件属性直接改变其占用空间,但当数据库中有数据时,这样做会破坏数据库中的数据,因此需要使用压缩的方式来缩减数据库空间。可以在数据库属性选项中选择“Autoshrink”选项,让系统自动压缩数据库,也可以用人工的方法来压缩。人工压缩数据库可以用EnterpriseManager压缩数据库,也可以用Transact-SQL命令压缩数据库:DBCCSHRINKDATABASE:对数据库进行压缩。命令语法如下:DBCCSHRINKDATABASE(database_name[,target_percent][,{NOTRUNCATE|TRUNCATEONLY}])各参数说明如下:target_percent:指定将数据库压缩后,未使用的空间占数据库大小的百分之几。如果指定的百分比过大,超过了压缩前未使用空间所占的比例,则数据库不会被压缩。并且压缩后的数据库不能比数据库初始设定的容量小。NOTRUECATE:将数据库缩减后剩余的空间保留在数据库,中不返还给操作系统。如果不选择此选项,则剩余的空间返还给操作系统。TRUNCATEONLY:将数据库缩减后剩余的空间返还给操作系统。使用此命令时SQLServer将文件缩减到最后一个文件分配,区域但不移动任何数据文件。选择此项后,target_percent选项就无效了。DBCCSHRINKDATABASE(mytest,20):数据库mytest的未使用空间为数据库大小的20%。运行结果如下:DBCCexecutioncompleted.IfDBCCprintederrormessages,contactyoursystemadministrator.DBCCSHRIN

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功