不问收获但问耕耘最好的资料给最好的自己
语录大全_经典SQL语句大全
时间 2021-06-29
一、基础1、说明创建数据库CREATE DATABASE database-name2、说明删除数据库dropdatabasedbname3、说明备份sqlserver---创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk','testBack', 'c:\mssql7backup\MyNwind_1.dat'---开始 备份BACKUPDATABASE pubs TO testBack4、说明创建新表createtabletabname(col1type1 [not nul l] [primary key],col2 type2 [not nul l],. .)根据已有的表创建新表Acreate table tab_new l ike tab_old(使用旧表创建新表)Bcreatetable tab_new as select col1,col2„from tab_old definition only5、说明删除新表drop table tabname6、说明增加一个列Alter tabletabname add column col type注列增加后将不能删除。 DB2中列加上后数据类型也不能改变唯一能改变的是增加varchar类型的长度。
7、说明添加主键 Altertabletabnameadd primary key(col)说明删除主键 Altertabletabnamedrop primary key(col)8、说明创建索引 create[unique] index idxnameon tabname(col„.)删除索引 dropindexidxname注索引是不可更改的想更改必须删除重新建。 9、说明创建视图 createviewviewnameas selectstatement删除视图dropviewviewname10、说明几个简单的基本的sql语句选择 select
* from table1 where范围插入 insert into table1(field1,field2)values(value1,value2)删除deletefrom table1 where范围更新 updatetable1 set field1=value1 where范围查找 select * from table1 where
不问收获但问耕耘最好的资料给最好的自己
field1 l ike ’%value1%’ ---l ike的语法很精妙查资料!排序 select*fromtable1 order byfield1,field2[desc]总数 selectcountastotalcountfrom table1求和 select sum(field1) as sumvalue from table1平均select avg(field1) as avgvalue from table1最大 select max(field1) asmaxvalue from table1最小 select min(field1) as minvalue fromtable111、说明几个高级查询运算词A UNION运算符UNION运算符通过组合其他两个结果表例如TABLE1和TABLE2并消去表中任何重复行而派生出一个结果表。当ALL随UNION一起使用时
即UNION ALL不消除重复行。两种情况下派生表的每一行不是来自 TABLE1就是来自 TABLE2。 B EXCEPT运算符EXCEPT运算符通过包括所有在TABLE1中但不在TABLE2中的行并消除所有重复行而派生出一个结果表。当ALL随EXCEPT一起使用时(EXCEPTALL)不消除重复行。 C I NTERSECT运算符I NTERSECT运算符通过只包括TABLE1和TABLE2中都有的行并消除所有重复行而派生出一个结果表。当ALL随I NTERSECT一起使用时(I NTERSECT ALL)不消除重复行。注使用运算词的几个查询结果行必须是一致的。 12、说明使用外连接A、 left outer join左外连接左连接结果集几包括连接表的匹配行也包括左连接表的所有行。 SQL: selecta.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUTJOIN b ON a.a = b.cB right
outer join:右外连接(右连接) 结果集既包括连接表的匹配连接行也包括右连接表的所有行。 C ful l/cross outer join全外连接不仅包括符号连接表的匹配行还包括两个连接表中的所有记录。12、
不问收获但问耕耘最好的资料给最好的自己
分组:Group by:一张表一旦分组完成后查询后只能得到组相关的信息。组相关的信息 统计信息 count,sum,max,min,avg分组的标准)在SQLServer中分组时不能以text,ntext,image类型的字段作为分组依据在selecte统计函数中的字段不能和普通的字段放在一起
13、对数据库进行操作分离数据库 sp_detach_db;附加数据库sp_attach_db后接表明附加需要完整的路径名14.如何修改数据库的名称:sp_renamedb'old_name', 'new_name'二、提升1、说明复制表(只复制结构,源表名 a新表名 b) (Access可用)法一 select*intobfrom awhere 11 仅用于SQlServer法二 selecttop0*into bfroma2、说明拷贝表(拷贝数据,源表名a 目标表名b) (Access可用)insertinto b(a,b,c)selectd,e,f from b;3、说明跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)insert into b(a,b,c) selectd,e,f from bin ‘具体数据库’ where 条件例子 ..from b in'"&Server.MapPath(".")&"\data.mdb"&"'where. .4、说明子查询(表名
1 a表名2 b)select a,b,cfrom a where a IN(select d from b)或者:select a,b,c from a where a IN(1,2,3)5、说明显示文章、提交人和最后回复时间select a.title,a.username,b.adddate from table a,(selectmax(adddate)adddatefrom tablewheretable.title=a.title)b6、说明外连接查询(表名1a表名2b)selecta.a,a.b,a.c,b.c,b.d,b.f from a LEFTOUTJOIN bON a.a=b.c7、说明在线视图查询(表名1 a)select*from(SELECTa,b,c FROM a)Twheret.a>1;8、说明between的用法,between限制查询数据范围时包括了边界值,not between不包括select * from
不问收获但问耕耘最好的资料给最好的自己
table1 where time between time1 and time2select a,b,c, from table1wherea notbetween数值1 and数值29、说明 in的使用方法select
*fromtable1wherea [not] in( ‘值1’ , ’值2’ , ’值4’ , ’值6’ )10、说明两张关联表删除主表中已经在副表中没有的信息deletefromtable1 where not exists ( select * from table2 wheretable1.field1=table2.field1)11、说明四表联查问题 select*from a leftinner join b on a.a=b.b right inner join c on a.a=c.c inner join d ona.a=d.d where. .12、说明 日程安排提前五分钟提醒SQL: select*from日程安排where datediff('minute',f开始时间,getdate())>513、说明一条sql语句搞定数据库分页select top 10 b.*from(select top 20主键字段,排序字段from表名order by排序字段desc) a,表名 bwhere b.主键字段=a.主键字段order by a.排序字段具体实现关于数据库分页 declare@start int,@end int@sql nvarchar(600)set@sql=’selecttop’ +str(@end-@start+1)+’ +fromTwhere rid not in(selecttop’+str(@str-1)+’ Rid from Twhere Rid>-1) ’ exec sp_executesql@sql注意在top后不能直接跟一个变量所以在实际应用中只有这样的进行特殊的处理。 Rid为一个标识列如果top后还有具体的字段这样做是非常有好处的。因为这样可以避免top的字段如果是逻辑索引的查询的结果后实际表中的不一致逻辑索引中的数据有可能和数据表中的不一致而查询时如果处在索引则首先查询索引 14、说明前10条记录selecttop 10*formtable1where范围15、说明选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的
不问收获但问耕耘最好的资料给最好的自己
用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)select a,b,c from tablename ta where a=(select max(a) fromtablename tb where tb.b=ta.b)16、说明包括所有在TableA中但不在TableB和TableC中的行并消除所有重复行而派生出一个结果表(selecta from tableA)except (select a from tableB)except (select a fromtableC)17、说明随机取出10条数据select top 10*from tablenameorder by newid()18、说明随机选择记录selectnewid()19、说明删除重复记录1),delete from tablename where id not in (select max(id)from tablename group by col1,col2,)2),select distinct * into temp fromtablenamedelete from tablenameinsert into tablename select * fromtemp评价 这种操作牵连大量的数据的移动这种做法不适合大容量但数据操作3),例如在一个外部表中导入数据 由于某些原因第一次只导入了一部分但很难判断具体位置这样只有在下一次全部导入这样也就产生好多重复的字段怎样删除重复字段alter tabletablename--添加一个自增列add column_b int identity(1,1)delete fromtablename where column_b not in(select max(column_b) fromtablename group by column1,column2,)alter table tablename dropcolumncolumn_b20、说明列出数据库里所有的表名selectnamefromsysobjects where type='U'//U代表用户21、说明列出表里的所有的列名selectnamefrom syscolumnswhereid=object_id('TableName')22、说明列示type、 vender、 pcs字段 以type字段排列 case可以方便地实现多重选择类似select中的case。selecttype,sum(casevender
不问收获但问耕耘最好的资料给最好的自己
when 'A' then pcs else0end),sum(casevenderwhen 'C' then pcs else0end),sum(case vender when 'B' then pcs else 0 end) FROM tablenamegroup by type显示结果 typevender pcs电脑A 1电脑A 1光盘B 2光盘A2手机B3手机C323、说明初始化表table1TRUNCATETABLEtable124、说明选择从10到15的记录selecttop 5*from(selecttop15*fromtableorder byid asc) table_别名order byid desc三、技巧1、1=1 1=2的使用在SQL语句组合时用的较多“where 1=1” 是表示选择全部
“where 1=2”全部不选如 if@strWhere!=' 'beginset@strSQL='selectcount(*) as Total from [' + @tblName + '] where ' +@strWhereendelsebeginset@strSQL='select count(*) as Total from['+@tblName + ']'end我们可以直接写成错误未找到目录项。 set@strSQL='select count(*) as Total from['+@tblName+']where 1=1安定'+@strWhere 2、收缩数据库--重建索引DBCC REINDEXDBCCINDEXDEFRAG--收缩数据和日志DBCC SHRINKDBDBCC SHRINKFILE3、压缩数据库dbccshrinkdatabase(dbname)4、转移数据库给新用户以已存在 用 户 权 限 exec sp_change_users_login'update_one','newname','oldname'go5 、 检查备份集 RESTOREVERIFYONLY from disk='E:\dvbbs.bak'6、修复数据库ALTER DATABASE[dvbbs] SET SINGLE_USERGODBCCCHECKDB('dvbbs',repair_al low_data_loss) WITH TABLOCKGOALTERDATABASE [dvbbs] SET MULTI_USERGO7、 日志清除SET NOCOUNT
不问收获但问耕耘最好的资料给最好的自己
ONDECLARE@LogicalFi leName sysname,@MaxMinutes INT,@NewSizeINTUSE tablename --要操作的数据库名SELECT@LogicalFi leName ='tablename_log', -- 日志文件名@MaxMinutes = 10, -- Limit on timeal lowed to wrap log.@NewSize = 1 --你想设定的日志文件的大小(M)Setup / initial izeDECLARE@OriginalSize intSELECT@OriginalSize =sizeFROM sysfi lesWHERE name=@LogicalFi leNameSELECT'Original Sizeof '+db_name()+' LOG is '+CONVERT(VARCHAR(30),@OriginalSize)+'8K pages or ' +CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) +'MB'FROM sysfi lesWHERE name = @LogicalFi leNameCREATE TABLEDummyTrans(DummyColumn char (8000)not nul l)DECLARE@CounterINT,@StartTime DATETIME,@TruncLog VARCHAR(255)SELECT@StartTime=GETDATE(),@TruncLog='BACKUP LOG'+db_name()+ 'WITH TRUNCATE_ONLY'DBCC SHRINKFILE (@LogicalFi leName,@NewSize)EXEC (@TruncLog)-- Wrap the log if necessary.WHILE@MaxMinutes>DATEDIFF (mi,@StartTime,GETDATE()) -- time has notexpiredAND@OriginalSize=(SELECTsize FROM sysfi les WHERE name=@LogicalFi leName)AND(@OriginalSize *8/1024) >@NewSizeBEGIN --Outer loop.SELECT @Counter = 0WHILE ((@Counter BEGIN --updateINSERT DummyTrans VALUES ('Fi l l Log') DELETEDummyTransSELECT @Counter = @Counter + 1ENDEXEC(@TruncLog)ENDSELECT 'Final Size of ' + db_name() + ' LOG is '+CONVERT(VARCHAR(30),size) + ' 8K pages or '
不问收获但问耕耘最好的资料给最好的自己
+CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'FROM sysfi lesWHEREname = @LogicalFi leNameDROP TABLE DummyTransSET NOCOUNTOFF8 、 说明 更改某个表 exec sp_changeobjectowner'tablename','dbo'9 、 存储更改全部表 CREATE PROCEDUREdbo.User_ChangeObjectOwnerBatch@OldOwner asNVARCHAR(128),@NewOwner as NVARCHAR(128)ASDECLARE@Nameas NVARCHAR(128)DECLARE @Owner as NVARCHAR(128)DECLARE@OwnerName as NVARCHAR(128)DECLARE curObject CURSORFORselect 'Name'
=name
= user_name(uid)from sysobjectswhereuser_name(uid)=@OldOwnerorder by nameOPEN curObjectFETCH NEXTFROM curObject INTO @Name,@OwnerWHI LE(@@FETCH_STATUS=0)BEGI Nif
@Owner=@OldOwnerbeginset@OwnerName =@OldOwner + ' . ' +rtrim(@Name)exec sp_changeobjectowner @OwnerName,@NewOwnerend-- select@name,@NewOwner,@OldOwnerFETCH NEXTFROM curObject INTO@Name,@OwnerENDclose curObjectdeal locatecurObjectGO10、 SQL SERVER中直接循环写入数据declare@i intset@i=1whi le@ibegininsert into test (userid)values(@i)set@i=@i+1end案例有如下表要求就裱中所有沒有及格的成績在每次增長0.1的基礎上使他們剛好及格:Name scoreZhangshan 80Lishi 59Wangwu
官方网站:点击访问青云互联官网优惠码:五折优惠码:5LHbEhaS (一次性五折,可月付、季付、半年付、年付)活动方案:的套餐分为大带宽限流和小带宽不限流两种套餐,全部为KVM虚拟架构,而且配置都可以弹性设置1、洛杉矶cera机房三网回程cn2gia 洛杉矶cera机房  ...
提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...
稳爱云(www.wenaiyun.com)是创建于2021年的国人IDC商家,主要目前要出售香港VPS、香港独立服务器、美国高防VPS、美国CERA VPS 等目前在售VPS线路有三网CN2、CN2 GIA,该公司旗下产品均采用KVM虚拟化架构。机房采用业内口碑最好香港沙田机房,稳定,好用,数据安全。线路采用三网(电信,联通,移动)回程电信cn2、cn2 gia优质网络,延迟低,速度快。自行封装的...