求数据库常用语言,详细一些。

SQL查询语言1.基础1.说明:创建数据库CREATEDATABASEdatabase-name2说明:删除数据库dropdatabasedbname3说明:备份sqlserver---deviceUSEmasterEXECsp_制作数据的备份副本。
adddumpdevice'disk','testBack','c:\mssql7backup\MyNwind_1.dat'---开始备份BACKUPDATABASEpubsTOtestBack4,说明:新建表createtabletabname(c)ol1type1[notnull][primarykey],col2type2[notnull],。
.)根据现有表创建新表:A:createtabletab_newliketab_old(使用旧表创建新表table)B:createtabletab_newasselectcol1,col2...fromtab_olddefinitiononly5说明:删除新表droptabletabname6说明:添加列Altertabletabnameaddcolumncoltype。
注意:添加后不能删除该列。
在DB2中,添加列后无法更改数据类型。
唯一可以更改的是增加varchar类型的长度。
7.描述:添加主键:Altertabletabnameaddprimarykey(col)描述:删除主键:Altertabletabnamedropprimarykey(col)8.描述:创建索引:create[unique]indexidxnameontabname(col....)删除索引:dropindexidxname注意:索引不能如果要改变,就必须删除并重建。
9.说明:创建视图:createviewviewnameasselectstatement删除视图:dropviewviewname10说明:更简单的基本sql语句选择:select*fromtable1where范围插入:insertintotable1(field1,field2)values(v.alue1,value2)删除:deletefromtable1where范围更新:updatetable1setfield1=value1where范围搜索:select*fromtable1wherefield1like'%value1%'--likes语法为很精致,查资料排序:select*fromtable1orderfield1,field2[desc]总计:selectnumbernumberfromtable1sum:selectsum(field1)assumvaluefromtable1平均值:selectavg(field1)asavgvaluefromtable1最大值:selectmax(field1)asmaxvaluefromtable1最小值:selectmin(field1)asminvaluefromtable111说明:更高级的查询运算符A:UNION运算符通过组合两个其他结果表(例如TABLE1和TABLE2)并消除结果表表中的任何重复行。
当ALL与UNION(即UNIONALL)一起使用时,不会消除重复行。
在这两种情况下,派生表中的每一行都来自TABLE1或TABLE2。
B:EXCEPT运算符EXCEPT运算符通过包含TABLE1中但不在TABLE2中的所有行并消除所有重复行来派生结果表。
当ALL与EXCEPT(EXCEPTALL)一起使用时,不会消除重复行。
C:INTERSECT运算符INTERSECT运算符通过仅包含在TABLE1和TABLE2中找到的行并消除任何重复行来派生结果表。
当ALL与INTERSECT(INTERSECTALL)一起使用时,不会消除重复行。
注意:使用操作符词的多个搜索结果行必须一致。
12、说明:使用外连接A、左外连接:左外连接(leftjoin):结果集包括连接表中匹配的行,也包括左连接表中的所有行。
SQL:selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.cB:rightouterjoin:右外连接(右连接):结果集既包括被连接表中匹配的连接行,也包括右连接表所有行。
C:fullouterjoin:不仅包括符号连接表中的匹配行,还包括两个连接表中的所有记录。
2、增强功能1、说明:复制表(仅复制结构,源表名:a新表名:b)(可访问)方法一:select*intobfromawhere1<>1方法二:selecttop0*intobfroma2。
复制数据,源表名:a目标表名:b)(可访问)insertob(a,b,c)selected,e,fromb3.描述:数据库之间复制表(具体数据使用绝对路径)(可访问)insertintob(a,b,c)选定,e,ffrombin'特定数据库;'where状态示例:..frombin'"&Server.MapPath(".")&"\data.mdb"&"'where..4.说明:子查询(表名1:a表名2:b)selecta,b,cfromahwhereaIN(selectdfromb)or:selecta,b,cfromaheaIN(1,2,3)5说明:按答案显示文章、作者和最后时间selecta.title,a.username,b.adddatefromtablea,(selectmax(adddate)adddatefromtablewheretable.title=a.title)b6描述:外部join查询(表名1:a表名2:b)select.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c7说明:在线查看查询(表名1:a)select*from(SELECTa,b,cFROMa)Twheret.a>1;8。
说明:使用between,between在限制查询数据范围时包括边界值,notBetween不包括select*fromtable1wheretimeBetweentime1andtime2selecta,b,c,fromtable1whereanotBetweenvalue1andvalue29说明:如何在select*fromtable1wherea[not]in('value1','value2','value4','value6')10.描述:两个相关表i.不在副表中的主表共享tefromtable1wherenotexists(select*fromtable2wheretable1.field1=table2.field1)11、描述:四表联合查询问题:select*fromaleftinnerjoinbona.a=b.brightinnerjoincona.a=c.cinnerjoindona。
a=d哪里。
....12。
说明:提前五分钟安排提醒SQL:select*fromSchedulewheredatediff('一分钟',f开始时间,getdate())>513.from(selecttop20PrimaryKeyfield,sortfieldfromtablenameorderbysortfielddesc)a,tablenamebwhereb.mainKeyfield=a.主键字段排序字段14.说明:前10条记录selecttop10*formtable1whererange15.说明:选择每组数据中a最大的记录中的所有信息(。
类似这样用法可用于每月论坛排名、每月热销产品分析、按主题表现排名等)selecta,b,cfromtablenametawherea=(s)electmax(a)fromtablenametbwheretb.b=ta.b)16.描述:包含TableA中的所有行,但不包括TableB和TableC中的所有行,并消除所有重复行,得到结果表(selecttableA)except(selecttableB)except(select17.C)说明:随机抽取10条数据selecttop10*framtablenameorderbynewid()18、说明:随机选择记录selectnewid()19.描述:删除重复记录Deletefromtablenamewhereidnotin(selectmax(id)framtablenamegroupbycol1,col2,...)20.描述:列出数据库中所有记录表名selectnamefromsysobjectswheretype='U'21.描述:列出所有selectnamefromsyscolumnswhereid=object_id('TableName')22.说明:列表类型、卖家和pcs字段,按type字段排序,case可以轻松实现多种选择,选择类似case。
selecttype,sum(casevenderwhen'A'thenpcselse0end),sum(casevenderwhen'C'thenpcselse0end),sum(casevenderwhen'B'thenpcselse0end)FROMtablenamegroupbytype显示结果:typevenderpcs计算机A1计算机A1CDB2CDA2手机B3手机C323说明:初始化tabletable1TRUNCATETABLEtable124描述:选择10到15条记录selecttop5*from(selecttop15*fromtableorderbyidasc)table_aliasorderbydesc1,3。
2使用,在SQ中组合L语句时经常使用“where1=1”,表示全选“where1=2”而不是全选,例如:if@strWhere!=''beginset@strSQL='selectcount(*)asTotalfrom['+@tblName+']where'+@strWhereendelsebeginset@strSQL='selectcount(*)asTotalfrom['+@tblName+']'end我们可以直接写为set@strSQL='selectcount(*)asTotalfrom['+@tblName+']where1=1stable'+@strWhere2,收缩数据库--重建索引DBCCREINDEXDBCCINDEXDEFRAG--提醒数据和日志DBCCSHRINKDBDBCCSHRINKFILE3收缩数据库dbccshrinkdatabase(dbname)4将数据库传输给具有现有用户权限的新用户execsp_change_users_login'update_one','newname','oldname'go5。
检查备份集RESTOREVERIFYONLYfromdisk='E:\dvbbs.bak'6、修复数据库ALTERDATABASE[dvbbs]SETSINGLE_USERGODBCCCHECKDB('dvbbs',repair_allow_data_loss)WITHTABLOCKGOALTERDATABASE[dvbbs]SETMULTI_USERGO7、日志删除SETNOCOUNTONDECLARE@LogicalFileNamesysname,@MaxMinutesINT,@NewSizeINTUSEtablename--提供服务的数据库名称SELECT@LogicalFileName='tablename_log',--Logfilename@MaxMinutes=10,--Limitontimeallowedtowraplog。
@NewSize=1--要设置的日志文件的大小(M)--设置/初始化DECLARE@OriginalSizeintSELECT@OriginalSize=sizeFROMsysfilesWHEREname=@LogicalFileNameSELECT'OriginalSizeof'+db_name()+'LOGer'+CONVERT(VARCHAR(30),@OriginalSize)+'8Kpageor'+CONVERT(VARCHAR(30),(@OriginalSize*8/1024))+'MB'FROMsysfilesWHEREname=@LogicalFileNameCREATETABLEDummyTrans(DummyColumnchar(8000)notnull)DECLARE@CounterINT,@StartTimeDATETIME,@TruncLogVARCHAR(255)SELECT@StartTime=GETDATE(),@TruncLog='BACKUPLAND'+db_name()+'WITHTRUNCATE_ONLY'DBCCSHRINKFILE(@LogicalFileName,@NewSize)EXEC(@TruncLog)--Wrapthelogifnecessary.WHILE@MaxMinutes>DATEDIFF(mi,@Sta)rtTime,GETDATE())--timehasnotexpiredAND@OriginalSize=(SELECTsizeFROMsysfilesWHEREname=@LogicalFileName)AND(@OriginalSize*8/1024)>@NewSizeBEGIN--Outerloop.SELECT@Counter=0WHILE((@Counter<@OriginalSize/16))AND(@Counter<50000 DELETEDummyTransSELECT@Ccounter=@Counter+1ENDEXEC(@TruncLog)ENDSELECT FROMsysfilesWHEREname=@LogicalFileNameDROPTABLEDummyTransSETNOCOUNTOFF8说明:更改某个表execsp_changeobjectowner>保存并更改所有表CREATEPROCEDUREdbo.User_ChangeObjectOwnerBatch@OldOwnerasNVARCHAR(128)、@NewOwnerasNVARCHAR(128)ASDECLARE@NameasNVARCHAR(128)DECLARE@OwnerasNVARCHAR(128)DECLAREARE@OwnerNameasNVARCHAR(128)DECLAREcurObjectCURSORFORselect'Name'=name,'Owner'=user_name(uid)fromsysobjectswhereuser_name(uid)=@OldOwnerorderbynameOPENcurObjectFETCHNEXTFROMcurObjectINTO@Name,@OwnerWHILE(@@FETCH_STATUS=0)BEGINif@Owner=@OldOwnerbeginset@OwnerName=@OldOwner+'.'+rtrim(@Name)execsp_changeobjectowner@OwnerName,@NewOwnerend--select@name,@NewOwner,@OldOwnerFETCHNEXTFROMcurObjectINTO@Name,@OwnerENDclosecurObjectdeallocatecurObjectGO10,SQLSERVER直接进入循环写入数据declare@iintset@i=1while@i

sql语言主要分为哪几类?

一般来说,SQL语言主要分为:DQL:数据查询语言,用于查询数据,如selectDML:数据操作语言,用于添加、修改和删除数据,如insert、update、deleteTPL:事务处理语言,处理事务,包括begintransaction、commit、rollbackDCL:数据控制语言,用于检索权限和权限,如Grant、Revoke。
DDL:数据定义语言,用于管理数据库和表,如Create、DropCCL:指针控制语言,通过控制指针对表进行操作,如declarecursor传志。
播客数据库的解释非常深入。
你可以先看看他们的免费视频。
如果你觉得不错,可以继续学习!

SQL的组成部分有哪些?

SQL的组成一般可分为六部分,即【数据查询语言】、【数据操作语言】、【事务处理语言】、【数据控制语言】、【数据定义语言】、【指针控制语言】。
1:数据查询语言(DQL:DataQueryLanguage):其语句也称为“数据检索语句”,用于从表中获取数据。
保留字SELECT是最常用的。
DQL中其他常用的保留字包括WHERE、ORDERBY、GROUPBY和HAVING,它们通常与其他类型的SQL语句一起使用。
2:数据操作语言(DML:DataManipulationLanguage):其语句包括动词INSERT、UPDATE和DELETE。
它们分别用于添加、修改和删除表中的行。
也称为动作查询语言。
3:事务处理语言(TPL):它的语句保证受DML语句影响的表的所有行都得到及时更新。
TPL语句包括BEGINTRANSACTION、COMMIT和ROLLBACK。
4:数据控制语言(DCL):其语句通过GRANT或REVOKE获得许可,以确定单个用户和用户组对数据库对象的访问权限。
某些RDBMS可以使用GRANT或REVOKE来控制对表中各个列的访问。
5:数据定义语言(DDL):其语句包括动词CREATE和DROP。
在数据库中创建新表或删除表(CREATTABLE或DROPTABLE);6:指针控制语言(CCL):它的DECLAREECURSOR、FETCHINTO和UPDATEWHERECURRENT等语句用于对一个或多个表的各个行进行操作。