SQL常用语句大全.pdf

上传人:wj 文档编号:3437992 上传时间:2023-05-05 格式:PDF 页数:16 大小:488.02KB
下载 相关 举报
SQL常用语句大全.pdf_第1页
第1页 / 共16页
SQL常用语句大全.pdf_第2页
第2页 / 共16页
SQL常用语句大全.pdf_第3页
第3页 / 共16页
SQL常用语句大全.pdf_第4页
第4页 / 共16页
SQL常用语句大全.pdf_第5页
第5页 / 共16页
SQL常用语句大全.pdf_第6页
第6页 / 共16页
SQL常用语句大全.pdf_第7页
第7页 / 共16页
SQL常用语句大全.pdf_第8页
第8页 / 共16页
SQL常用语句大全.pdf_第9页
第9页 / 共16页
SQL常用语句大全.pdf_第10页
第10页 / 共16页
SQL常用语句大全.pdf_第11页
第11页 / 共16页
SQL常用语句大全.pdf_第12页
第12页 / 共16页
SQL常用语句大全.pdf_第13页
第13页 / 共16页
SQL常用语句大全.pdf_第14页
第14页 / 共16页
SQL常用语句大全.pdf_第15页
第15页 / 共16页
SQL常用语句大全.pdf_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

SQL常用语句大全.pdf

《SQL常用语句大全.pdf》由会员分享,可在线阅读,更多相关《SQL常用语句大全.pdf(16页珍藏版)》请在冰点文库上搜索。

SQL常用语句大全.pdf

SQL语句大全创建数据库创建数据库创建之前判断该数据库是否存在ifexists(select*fromsysdatabaseswherename=databaseName)dropdatabasedatabaseNamegoCreateDATABASEdatabasename删除数据库删除数据库dropdatabasedatabasename备份备份sqlserver-创建备份数据的deviceUSEmasterEXECsp_addumpdevicedisk,testBack,c:

mssql7backupMyNwind_1.dat-开始备份BACKUPDATABASEpubsTOtestBack创建新表创建新表createtabletabname(col1type1notnullprimarykey,col2type2notnull,.)根据已有的表创建新表:

A:

gouse原数据库名goselect*into目的数据库名.dbo.目的表名from原表名(使用旧表创建新表)B:

createtabletab_newasselectcol1,col2fromtab_olddefinitiononly创建序列创建序列createsequenceSIMON_SEQUENCEminvalue1-最小值maxvalue999999999999999999999999999-最大值startwith1-开始值incrementby1-每次加几cache20;删除新表删除新表droptabletabname增加一个列增加一个列Altertabletabnameaddcolnamecoltype删除一个列删除一个列Altertabletabnamedropcolumncolname添加主键添加主键Altertabletabnameaddprimarykey(col)说明:

删除主键:

Altertabletabnamedropprimarykey(col)创建索引创建索引createuniqueindexidxnameontabname(col。

)删除索引:

dropindexidxnameontabname注:

索引是不可更改的,想更改必须删除重新建。

创建视图创建视图createviewviewnameasselectstatement删除视图:

dropviewviewname简单基本的简单基本的sql语句语句

(1)数据记录筛选:

sql=select*from数据表where字段名=字段值orderby字段名descsql=select*from数据表where字段名like%字段值%orderby字段名descsql=selecttop10*from数据表where字段名=字段值orderby字段名descsql=selecttop10*from数据表orderby字段名descsql=select*from数据表where字段名in(值1,值2,值3)sql=select*from数据表where字段名between值1and值2

(2)更新数据记录:

sql=update数据表set字段名=字段值where条件表达式sql=update数据表set字段1=值1,字段2=值2字段n=值nwhere条件表达式(3)删除数据记录:

sql=deletefrom数据表where条件表达式sql=deletefrom数据表(将数据表所有记录删除)(4)添加数据记录:

sql=insertinto数据表(字段1,字段2,字段3)values(值1,值2,值3)sql=insertinto目标数据表select*from源数据表(把源数据表的记录添加到目标数据表)(5)数据记录统计函数:

AVG(字段名)得出一个表格栏平均值COUNT(*;字段名)对数据行数的统计或对某一栏有值的数据行数统计MAX(字段名)取得一个表格栏最大的值MIN(字段名)取得一个表格栏最小的值SUM(字段名)把数据栏的值相加引用以上函数的方法:

sql=selectsum(字段名)as别名from数据表where条件表达式setrs=conn.excute(sql)用rs(别名)获取统计的值,其它函数运用同上。

查询去除重复值:

selectdistinct*fromtable1(5)数据表的建立和删除:

CREATETABLE数据表名称(字段1类型1(长度),字段2类型2(长度)(6)单列求和:

SELECTSUM(字段名)FROM数据表编辑本段编辑本段最新最新sql语句语句查询数据库中含有同一这字段的表:

selectnamefromsysobjectswherextype=uandidin(selectidfromsyscolumnswherename=s3)根据出生日期可以算出年龄:

selectdatediff(year,scrq,2013)as年龄frompage_shsjgrgl根据当前年份自动算出年龄selectdatediff(year,csny,cast(YEAR(GETDATE()aschar)年selectyear(djsj)frompage_shsjgrgl月selectmonth(djsj)frompage_shsjgrgl日selectday(djsj)frompage_shsjgrgl在同一数据库中复制表结构:

select*intoafrombwhere11当IDENTITY_INSERT设置为OFF时,不能为表aa中的标识列插入显式值。

setidentity_insertaaON-设置打开,批量插入:

insertintoaa(Customer_ID,ID_Type,ID_Number)selectCustomer_ID,ID_Type,ID_NumberfromTCustomer;setidentity_insertaaOFF关闭不同数据库之间的复制:

复制结构:

select*intotest.dbo.bfromGCRT.dbo.page_shsjgrglwhere11复制内容:

insertintotest.dbo.b(xm,ssdq)selectxm,ssdqfromGCRT.dbo.page_shsjgrgl查看数据库中所有的数据表表名:

selectnamefromSysObjectswheretype=u查看数据库中所有表含有同一字段的表:

selectnamefromsysobjectswherextype=uandidin(selectidfromsyscolumnswherename=同一字段)查看数据表中的所有字段:

selectnamefromSyscolumnswhereid=object_id(表名)查询数据库时随机10条记录:

selecttop10*fromtd_areacodeorderbynewid()修改字段类型:

ALTERTABLE表名ALTERCOLUMN字段名varchar(30)NOTNULLuseZHJIANGJGYLdeclaretempnvarchar(30)settemp=ZWI4selecthllxfrompage_yljg_zyrywherehllxnotin(selectcasetempwhenthenelseb1endfrom(select*fromTD_Codewherepage_en=page_yljg_zyryandB2=ZWI)swheres.b1!

=casetempwhenthenelsetempend)更改数据库表字段类型:

altertablepage_shsjgrglaltercolumns1int几个高级查询运算词几个高级查询运算词A:

UNION运算符UNION运算符通过组合其他两个结果表(例如TABLE1和TABLE2)并消去表中任何重复行而派生出一个结果表。

当ALL随UNION一起使用时(即UNIONALL),不消除重复行。

两种情况下,派生表的每一行不是来自TABLE1就是来自TABLE2。

B:

EXCEPT运算符EXCEPT运算符通过包括所有在TABLE1中但不在TABLE2中的行并消除所有重复行而派生出一个结果表。

当ALL随EXCEPT一起使用时(EXCEPTALL),不消除重复行。

C:

INTERSECT运算符INTERSECT运算符通过只包括TABLE1和TABLE2中都有的行并消除所有重复行而派生出一个结果表。

当ALL随INTERSECT一起使用时(INTERSECTALL),不消除重复行。

注:

使用运算词的几个查询结果行必须是一致的。

使用外连接使用外连接A、leftouterjoin:

左外连接(左连接):

结果集既包括连接表的匹配行,也包括左连接表的所有行。

SQL:

selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.cB:

rightouterjoin:

右外连接(右连接):

结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

C:

fullouterjoin:

全外连接:

不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

编辑本段编辑本段判断对象是否存在判断对象是否存在判断数据库是否存在判断数据库是否存在ifexists(select*fromsysdatabaseswherename=数据库名)dropdatabase数据库名判断表是否存在判断表是否存在ifnotexists(select*fromsysobjectswherename=表名andxtype=U)begin-这里创建表end判断存储过程是否存在判断存储过程是否存在ifexists(select*fromsysobjectswhereid=object_id(N存储过程名)andOBJECTPROPERTY(id,NIsProcedure)=1)dropprocedure存储过程名判断临时表是否存在判断临时表是否存在ifobject_id(tempdb.#临时表名)isnotnulldroptable#临时表名判断视图是否存在判断视图是否存在-SQLServer2000IFEXISTS(SELECT*FROMsysviewsWHEREobject_id=dbo.视图名-SQLServer2005IFEXISTS(SELECT*FROMsys.viewsWHEREobject_id=dbo.视图名判断函数是否存在判断函数是否存在ifexists(select*fromdbo.sysobjectswhereid=object_id(Ndbo.函数名)andxtypein(NFN,NIF,NTF)dropfunctiondbo.函数名获取创建信息获取创建信息SELECTname,id,crdateFROMsysobjectswherextype=U/*xtype的表示参数类型,通常包括如下这些C=CHECK约束D=默认值或DEFAULT约束F=FOREIGNKEY约束L=日志FN=标量函数IF=内嵌表函数P=存储过程PK=PRIMARYKEY约束(类型是K)RF=复制筛选存储过程S=系统表TF=表函数TR=触发器U=用户表UQ=UNIQUE约束(类型是K)V=视图X=扩展存储过程*/判断列是否存在判断列是否存在ifexists(select*fromsyscolumnswhereid=object_id(表名)andname=列名)altertable表名dropcolumn列名判断列是否自增列判断列是否自增列ifcolumnproperty(object_id(table),col,IsIdentity)=1print自增列elseprint不是自增列SELECT*FROMsys.columnsWHEREobject_id=OBJECT_ID(表名)ANDis_identity=1判断表中是否存在索引判断表中是否存在索引ifexists(select*fromsysindexeswhereid=object_id(表名)andname=索引名)print存在elseprint不存在查看数据库中对象查看数据库中对象SELECT*FROMsysobjectsWHEREname=对象名select*fromtable(所要查询的表名)wherecoloum(条件)编辑本段编辑本段提升提升复制表复制表(只复制结构,源表名:

a新表名:

b)(Access可用)法一:

select*intobfromawhere11法二:

selecttop0*intobfroma拷贝表拷贝表(拷贝数据,源表名:

a目标表名:

b)(Access可用)insertintob(x,y,z)selectd,e,ffroma;跨数据库之间表的拷贝跨数据库之间表的拷贝(具体数据使用绝对路径)(Access可用)insertintob(x,y,z)selectd,e,ffromain具体数据库where条件例子:

.frombin&Server.MapPath(.&data.mdb&where.子查询子查询(表名1:

a表名2:

b)selecta,b,cfromawhereaIN(selectdfromb或者:

selecta,b,cfromawhereaIN(1,2,3)显示文章最后时间显示文章最后时间selecta.title,a.username,b.adddatefromtablea,(selectmax(adddate)adddatefromtablewheretable.title=a.title)b外连接查询外连接查询(表名1:

a表名2:

b)selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c在线视图查询在线视图查询(表名1:

aselect*from(Selecta,b,cFROMa)Twheret.a1;between的用法的用法between为查询某字段的指定范围,限制查询数据范围时包括了边界值,notbetween不包括边界值select*fromtable1wheretimebetweentime1andtime2selecta,b,c,fromtable1whereanotbetween数值1and数值2in的使用方法的使用方法select*fromtable1whereanotin(值1,值2,值4,值6)删除主表没有的信息删除主表没有的信息两张关联表deletefromtable1wherenotexists(select*fromtable2wheretable1.field1=table2.field1四表联查问题四表联查问题select*fromaleftinnerjoinbona.a=b.brightinnerjoincona.a=c.cinnerjoindona.a=d.dwhere.日程安排提前五分钟日程安排提前五分钟SQL:

select*from日程安排wheredatediff(minute,f开始时间,getdate()5一条一条sql搞定数据库页搞定数据库页selecttop10b.*from(selecttop20主键字段,排序字段from表名orderby排序字段desc)a,表名bwhereb.主键字段=a.主键字段orderbya.排序字段前前10条记录条记录selecttop10*fromtable1where范围选择排名选择排名选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等。

)selecta,b,cfromtablenametawherea=(selectmax(a)fromtablenametbwheretb.b=ta.b)派生结果表派生结果表包括所有在TableA中但不在TableB和TableC中的行并消除所有重复行而派生出一个结果表(selectafromtableAexcept(selectafromtableB)except(selectafromtableC)随机取出随机取出10条数据条数据selecttop10*fromtablenameorderbynewid()随机选择记录随机选择记录selectnewid()删除重复记录删除重复记录Deletefromtablenamewhereidnotin(selectmax(id)fromtablenamegroupbycol1,col2,.)列出数据库里的表名列出数据库里的表名selectnamefromsysobjectswheretype=U列出表里的所有的列出表里的所有的selectnamefromsyscolumnswhereid=object_id(TableName)列示排列列示排列列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select中的case。

selecttype,sum(casevenderwhenAthenpcselse0end),sum(casevenderwhenCthenpcselse0end),sum(casevenderwhenBthenpcselse0end)FROMtablenamegroupbytype显示结果:

typevenderpcs电脑A1电脑A1光盘B2光盘A2手机B3手机C3初始化表初始化表table1TRUNCATETABLEtable1选择从选择从10到到15的记录的记录selecttop5*from(selecttop10*from(selecttop15*fromtableorderbyidasc)table_别名orderbyiddesc)table_2orderbyid数据类型转换数据类型转换declarenumidintdeclareidvarchar(50)setnumid=2005setid=convert(varchar,numid)通过上述语句完成数据类型Int转换成varchar,其他转换类似,可参看convert函数编辑本段编辑本段技巧技巧1=1,1=2的使用的使用在SQL语句组合时用的较多“where1=1”是表示选择全部“where1=2”全部不选,如:

ifstrWhere!

=beginsetstrSQL=selectcount(*)asTotalfrom+tblName+where+strWhereendelsebeginsetstrSQL=selectcount(*)asTotalfrom+tblName+end我们可以直接写成setstrSQL=selectcount(*)asTotalfrom+tblName+where1=1and+strWhere收缩数据库收缩数据库-重建索引DBCCREINDEXDBCCINDEXDEFRAG-收缩数据和日志DBCCSHRINKDBDBCCSHRINKFILE压缩数据库压缩数据库dbccshrinkdatabase(dbname)转移数据库给新用户以已存在用户权限execsp_change_users_loginupdate_one,newname,oldnamego检查备份集检查备份集RESTOREVERIFYONLYfromdisk=E:

dvbbs.bak修复数据库修复数据库AlterDATABASEdvbbsSETSINGLE_USERGODBCCCHECKDB(dvbbs,repair_allow_data_loss)WITHTABLOCKGOAlterDATABASEdvbbsSETMULTI_USERGO日志清除日志清除SETNOCOUNTONDECLARELogicalFileNamesysname,MaxMinutesINT,NewSizeINTUSEtablename-要操作的数据库名SelectLogicalFileName=tablename_log,-日志文件名MaxMinutes=10,-Limitontimeallowedtowraplog.NewSize=1-你想设定的日志文件的大小(M)-Setup/initializeDECLAREOriginalSizeintSelectOriginalSize=sizeFROMsysfilesWherename=LogicalFileNameSelectOriginalSizeof+db_name()+LOGis+CONVERT(VARCHAR(30),OriginalSize)+8Kpagesor+CONVERT(VARCHAR(30),(OriginalSize*8/1024)+MBFROMsysfilesWherename=LogicalFileNameCreateTABLEDummyTrans(DummyColumnchar(8000)notnull)DECLARECounterINT,StartTimeDATETIME,TruncLogVARCHAR(255)SelectStartTime=GETDATE(),TruncLog=BACKUPLOG+db_name()+WITHTRUNCATE_ONLYDBCCSHRINKFILE(LogicalFileName,NewSize)EXEC(TruncLog)-Wrapthelogifnecessary.WHILEMaxMinutesDATEDIFF(mi,StartTime,GETDATE()-timehasnotexpiredANDOriginalSize=(S

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2