关键词不能为空

位置:爱淘啦励志网 > 经典语录 > 文大全-SQL文大全,最完整的SQL在这里,全部由编辑熬夜整理

文大全-SQL文大全,最完整的SQL在这里,全部由编辑熬夜整理

作者:车型网
日期:2020-03-21 04:37:55
阅读:

基于

1、说明:创建数据库create数据库数据库名称

2、说明:删除数据库drop数据库dbname

3、说明: sql server---创建备份数据的deviceusemasterexecsp _ addumpdevice ' disk ',' testBack ',' c:MSSQL7backupmynwind _1. dat '-- -启动备份的back

4、说明:创建新表create table tabname ( col1type1[ not null ] [ primary key ]、col2 type2 [not null] )

从现有表格创建新表格。 a:create table tab _ newliketab _ old (从旧表创建新表) b:create tab _ newassaselectcol 1,col2… from tab_old definition only

5、说明:删除新表drop table tabname

6、说明:列altertabletabnameaddcolumncoltype注意:添加列后无法删除。 不能更改添加到DB2列的数据类型。 唯一可以改变的是增加varchar类型的长度。

7、说明:添加主键: altertabletabnameaddprimarykey ( col )说明:删除主键: altertabletabnamedropprimarykey ( col )

8、说明:创建索引:删除create [ unique ] indexidxnameontabname ( col…)索引: drop index idxname注意:不能更改索引。 必须删除重建才能进行更改。

9、说明:创建视图:删除createviewnameasselectstatement视图: dropviewname

10、说明:一些简单的基本sql语句选择: select * from table1 where范围插入: insert into table1(field1, field2) values(value1) value2)删除: delete from table1 where范围更新: update table1setfield1= value1where范围检索: select * from table1where field1like’ 排序: select * from table1order by field1field2[ desc ]总数: selectcountastotalcountfromtable 1合计: selectsum(field1) assumvaluefromtable1平均: select avg ( field1) as avgvalue from table 1最大值: select max ( field1) asmaxvaluefromtable 1最小值: select min ( field1) asminvalle

11、说明:一些高级查询运算符A: UNION运算符UNION运算符通过将另外两个结果表(如表1和表2 )结合起来并清除表中的重复行来导出结果表。 如果ALL正在UNION中使用( UNION ALL ),则不会删除重复的行。 在这两种情况下,提取表中的每一行都不来自TABLE1,也不来自TABLE2。 B:EXCEPT运算符EXCEPT运算符通过排除所有重复的行(包括TABLE1中但TABLE2中没有的所有行)来导出结果表。 如果ALL与EXCEPT一起使用( EXCEPT ALL ),则不排除重复的行。 C:INTERSECT运算符INTERSECT运算符通过排除所有重复的行(包括同时位于TABLE1和TABLE2中的行)来导出结果表。 如果INTERSECT使用all ( intersect all ),则不排除重复的行。 注:使用运算符的某些查询结果行必须匹配。

12、说明:外连接a,left (outer) join :左外连接(左连接):结果集包括连接表中的匹配行以及左连接表中的所有行。 SQL: select a.a,a.b,a.c,b.c,b.d,b.ffromaleftoutjoinbona.a = b.CB:right ( outer ) join :结果集同时包含连接表的匹配连接行和右连接表的所有行。 C:full/cross (outer) join :完全外连接:不仅包括符号连接表中的匹配行,还包括两个连接表中的所有记录。

12、分组: Group by :一张表,分组完成后,只能得到有关分组的信息。 群组相关资讯:(统计) count、sum、max、min、avg群组条件)如果您使用SQL伺服器来群组:您无法对text、ntext、image类型的栏位进行群组。 根据selecte统计函数中的字段,不能与常规字段一起部署

13 .操作数据库:分离数据库: sp_detach_db; 连线资料库:指示sp_attach_db后面必须有完整的路径名称

14 .如何重命名数据库: sp_renamedb 'old_name ',' new_name '

二、升级1、说明:复制表格(仅限结构,来源表格名称: a新表格名称: b ) (可存取)方法1:select * intobfromarewhere 11 (仅限SQL伺服器)方法select top 0 * into b from a

2、说明:复制表格(复制资料的来源表格名称: a目标表格名称: b ) (可存取)插入insert into b(a,b,c )选取d,e,fdrb;

3、说明:在数据库之间复制表(特定数据使用绝对路径) (启用访问) insert into b(a,b,c) select d,e,fdrominbin‘特定数据库’where条件示例: frominbin ' & server.mapp 是……

4、说明:子查询(表名1:a表名2:b)select a,b,cfromarewherearein ( selectdfromb )或: select a,b,cfromarewherearein ( 1,2,3 )

5、说明:显示文章、提交人和上次回复时间select a.title、a.username、b.adddate from table a、( select max ( addate ) adddatefromtablewheretable.title = a.title ) b

6、说明:外部连接查询(表名1:a表名2:b)select a.a,a.b,a.c,b.c,b.f from a LEFT OUT JOIN b ON a.a = b.c

7、说明:在线查询(表名1:a )select * from (SELECT a,b,c FROM a) T where t.a > 1;

8、说明:当between限制查询的数据范围时,between的用法包括边界值,not between为select * from table1wheretimebetweentime1andtime2selecta,b,c,from table 1

9、说明: in的使用方法select*fromtable1wherea[not]in(‘ (“值1”、“值2”、“值4”、“值6”)

10、说明:删除两个相关表、主表中已不在子表中的信息deletefromtable1wherenotexists ( select * from table2where table1. field1= table2. field1)

11、说明:四表联调查问题: select * fromaleftinnerjoinbona.a = b.brightinnerjoincoona.a = c.cinnerjoindona.a = d.where where _ _ _ _ _

12、说明:时间表提前5分钟SQL: select * from时间表where datediff('minute ',f开始时间,getdate())>5

13、说明: sql语句处理数据库的分页select top 10 b.* from (select top 20主键字段,排序字段from表名order by排序字段desc) a,表名b where b .主键字段= a

declare @start int、@ endint @ SQL nvarchar ( 600 ) set @ SQL =’select top’+ str ( @ end-@ start +1) +’+ fromtswhereridnotin ( select top’+ str ( @ str-1 ) +’)

注意:由于top后面不能直接附加变量,因此在实际的应用程序中只能进行这样的特殊处理。 Rid是id列,如果top后面有具体字段,这是非常好的。 如果顶部字段是逻辑索引,则可避免查询结果后实际表不匹配(逻辑索引中的数据可能与数据表中的数据不匹配,但对于查询,则首先查询索引)。

14、说明:前10条记录select top 10 * form table1 where范围

15、说明:选择各组b值相同数据中最大记录的所有信息(这种用法可用于论坛每月排名、每月流行产品分析、科目成绩排名等)。 select a,b,cfromtablenametawherea = ( select max ( a ) fromtablenametbwheretb.b = ta.b )

16 .说明:排除所有重复的行,包括表a中存在但表b和表c中不存在的所有行,然后选择结果表except ( selectafromtableb ) except ( selectafromtableb )

17、说明:随机抽取10条数据的select top 10 * fromtablenameorderbynewid ( )

18、说明:随机选择记录select newid ( )

19、说明:删除重复记录1 )、deletefromtablenamewhereidnotin ( select max ( id ) fromtablenamegroupbycol 1, col2,... ) selectidistinct * inttenttmrefromtablenamedeletefromtablenameinsertintotablenameselect * from temp评估:此操作与大量数据的移动相关 不适用于大容量数据操作3 )例如,将数据导入到某个外部表时,由于某种原因仅导入了一部分数据,但由于难以确定特定位置,只能导入到以下所有内容中,因此会出现重复字段较多,重复的字段将导致哪些字段

alter table tablename--自动添加列add column _ b int identity (1) deletefromtablenamewherecolumn _ bno tin (选择max ( column _ b ) fromtablenamegroup

20、说明:列出数据库中的所有表名selectnamefromsysobjectswheretype = ' u '/u表示用户

21、说明:列出表中的所有列名selectnamefromsyscolumnswhereid = object _ id ( ' tablename ' )

22、说明:列出type、vender、pcs字段,在type字段中排列,case可以简单地实现多个选择,类似于select中的case。 select type,sum ( casevenderwhen ' a ' thenpcselse0end ), casevenderwhen ' c ' thenpcselse 0结束( sum ) casevenderwhen ' b ' thenpcselse 0结束( sum ) fromtablenamegroupbytype结果:类型厂商PCs计算机A 1计算机

23、说明:初始化表table1

TRUNCATE TABLE table1

24、说明:选择10到15条记录select top5* from ( select top 15 * fromtableorderbycidasc ) table _ alias order by _ desc

三、方法1,1 = 1,1 = 2的使用常常被用来组合SQL语句

where 1=1表示未选择所有where 1=2。 下面是一个示例

if @strWhere! = ' ' ' begin set @ strsql = ' select count ( * ) astotalfrom [ ' + @ tblname + ' ] where ' ' @ strwhereendesbeginset @ strsql = ' select count ( * ) astotalfrom [ ' + @ tblom

我们可以直接写

错了! 找不到目录条目。 set @ strsql = ' select count ( * ) astotalfrom [ ' + @ tblname + ' ] where1= 1稳定' + @strWhere 2,缩小数据库--索引dbcdbrendexdbcindexdefrag--缩小和记录数据dbcc

3 .压缩数据库dbcc shrink数据库( dbname )

4 .将数据库迁移到新用户,然后将现有用户权限execsp _ change _ users _ log in ' update _ one ',' newname ',' oldname'go

5 .检查备份集restoreverifyonlyfromdisk = ' e:dvbbs.bak '

6 .数据库alter database [ dvbbs ] sets single _ user godbcc检查db('dvbbs ',repair _ allow _ data _ loss ) withtablockgoalsatedatabase [ dvbbs ] set mu

7 .清除日志setnocountondeclare @ logicalfilenamesysname、@MaxMinutes INT、@NewSize INT

USE tablename --要操作的数据库名称select @ logical filename = ' tablename _ log ',--日志文件名@MaxMinutes = 10,--limitontimeallowedtowraplog.@ new size =1-。

setup/initialize declare @ originalsizeintselect @ originalsize = sizefromsysfileswherename = @ logicalfilenameselect ' original sizeof ' + db + ' LOG is ' + CONVERT(VARCHAR(30 )、@ originalsize ) + '8kpageor ' + convert ( varchar ( 30 ) ( @ originalsize *8/ 1024 ) ) + ' MB ' fromsysfileswherename = @ log is ' + convert

DECLARE @Counter INT、@StartTime DATETIME、@ trunlogvarchar ( 255 ) select @ start time = getdate ( )、@ trun log = ' backup log ' + db _ name ( ) + ' with truncch

dbcc shrinkfile ( @ logical filename,@ new size ) exec ( @ trunc log )-- wrapthelogifnecessary.while @ max minutes > datediff ( mi,@ start time getdate ( @ start time getdate ) --timehasnotexpiredand @ originalsize = ( selectsizefromsysfileswherename = @ logical filename ) and ( @ originalsize *8/ 1024 ) > @ new size begin--

8、说明:修改表execsp _ changeobjectowner ' tablename ',' dbo '

9 .保存所有修改过的表格

createproceduredbo.user _ changeobjectownerrbatch @ oldownerasnvarchar ( 128 )、@NewOwner as NVARCHAR(128)AS

declare @ nameasnvarchar ( 128 ) declare @ ownerasnvarchar ( 128 ) declare @ ownernameasnvarchar ( 128 )

declarecurobjectcursorforselect ' name ' = name,' owner ' = user _ name ( uid ) fromsysobjectswhereuser _ name ( uid ) = @ oldownerorderbyname

opencureobjectfetnextfromcurobjectinto @ name @ owner while (∈fetch _ status =0) begin if @ owner = @ oldowner begin set @ ownername = @ oldowner + ' ' execsp _ changeobjectowner @ owner me、@NewOwnerend-- select @name、@NewOwner、@oldowner

fetchnextfromcurobjectinto @ name,@OwnerEND

closecurobjectdeallocatecurobjectgo

10、直接将数据declare @i intset @i=1while @i周期性地写入SQL SERVER

爱淘啦励志网相关推荐