常用sql server 脚本

本文详细介绍了数据库创建、删除、备份、收缩等操作,以及表的创建、字段的添加、删除、修改、添加约束、添加默认值、重命名、数据的插入、删除、更新、查询、存储、随机抽取、连接查询、结果集插入等数据库管理和表操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. --------------------------数据库操作--------------------------   
  2. --建数据库   
  3. create database yongfa365_com   
  4. on  
  5. name = yongfa365_comt,   
  6.   filename = 'd:\yongfa365_com.mdf',   
  7.   size = 4,   
  8.   maxsize = 10,   
  9.   filegrowth = 1   
  10. )   
  11.   
  12.   
  13. --删数据库   
  14. drop database yongfa365_com   
  15.   
  16. --备份数据库   
  17. backup database yongfa365_com to disk='d:\yongfa365_com.bak'  
  18.   
  19. --批量收缩所有数据库  适用SQL Server 2000/2005   
  20. DECLARE cur CURSOR FOR SELECT name FROM Master..SysDatabases WHERE name NOT IN ('master','model','msdb','Northwind','pubs','tempdb')   
  21. DECLARE @tb SYSNAME   
  22.   
  23. OPEN cur   
  24. FETCH NEXT FROM cur INTO @tb   
  25. WHILE @@fetch_status = 0   
  26.     BEGIN  
  27.         DUMP TRANSACTION  @tb  WITH NO_LOG   
  28.         BACKUP LOG  @tb WITH NO_LOG   
  29.         DBCC shrinkdatabase(@tb)   
  30.         FETCH NEXT FROM cur INTO @tb   
  31.     END  
  32. CLOSE cur   
  33. DEALLOCATE cur    
  34.   
  35.   
  36. --批量收缩所有数据库  适用所有SQL Server   
  37. DECLARE cur CURSOR FOR SELECT name FROM Master..SysDatabases WHERE name NOT IN ('master','model','msdb','Northwind','pubs','tempdb')   
  38. DECLARE @tb SYSNAME   
  39.   
  40. OPEN cur   
  41. FETCH NEXT FROM cur INTO @tb   
  42. WHILE @@fetch_status = 0   
  43.     BEGIN  
  44.         EXEC('ALTER DATABASE '+@tb+' SET RECOVERY SIMPLE;')   
  45.         DBCC shrinkdatabase (@tb);   
  46.         EXEC('ALTER DATABASE '+@tb+' SET RECOVERY FULL;')   
  47.            
  48.         FETCH NEXT FROM cur INTO @tb   
  49.     END  
  50. CLOSE cur   
  51. DEALLOCATE cur    
  52.   
  53.   
  54. --删除数据库日志文件(有时能删几十G)   
  55. DBCC ERRORLOG   
  56. GO 6   
  57.   
  58. --------------------------数据库操作--------------------------   
  59.   
  60.   
  61. ----------------------------表操作----------------------------   
  62. --删除表   
  63. drop table movies   
  64.   
  65. --SQL Server通用建表结构   
  66. Create Table [test] (   
  67.   [Id] int primary key identity(1,1),--ID,主键,自动号   
  68.   [txtTitle] nvarchar(255),--标题   
  69.   [txtContent] nvarchar(MAX),--内容   
  70.   [Adder] nvarchar(20),--添加人   
  71.   [AddTime] datetime Default (getdate()),--提交时间   
  72.   [ModiTime] datetime Default (getdate()),--修改时间   
  73.   [Hits] int Default (0),--点击数   
  74.   [Flags] int Default (0) ,--标识   
  75.   [SortID] int Default (0)--排序号   
  76.  )   
  77.   
  78.   
  79. --SQLite建表   
  80. Create Table [test] (   
  81.   [Id] integer Primary key not null,   
  82.   [txtTitle] text null,--标题   
  83.   [txtContent] text null,--内容   
  84.   [Adder]  text null,--添加人   
  85.   [AddTime]  text DEFAULT (datetime('now','localtime')) not null,--提交时间   
  86.   [ModiTime]  text DEFAULT (datetime('now','localtime')) not null,--修改时间   
  87.   [Hits] integer Default (0)  not null,--点击数   
  88.   [Flags] integer Default (0)  not null ,--标识   
  89.   [SortID] integer Default (0)  not null--排序号   
  90.  )   
  91.   
  92. --ACCESS使用SQL语句建表   
  93. CREATE TABLE 表名 (   
  94.   [Id] AutoIncrement NOT NULL ,   
  95.   [AddTime] Date NULL ,   
  96.   [Hits] Integer NULL ,   
  97.   [Title] Text (255) NULL ,   
  98.   [Remark] Memo NULL ,   
  99.   [RMB] Currency NULL ,   
  100.   [Flags] bit NULL ,   
  101.      
  102.   PRIMARY KEY (ID)   
  103. )   
  104.   
  105.   
  106. --重命名表   
  107. sp_rename '表名''新表名''object'  
  108. ----------------------------表操作----------------------------   
  109.   
  110.   
  111. ---------------------------字段操作---------------------------   
  112. --添加字段   
  113. alter table [表名] add [字段名] [varchar] (50) not null default('默认')   
  114.   
  115. --删除字段   
  116. alter table [表名] drop column [字段名]   
  117.   
  118. --修改字段   
  119. alter table [表名] alter column [字段名] varchar(50)   
  120.   
  121. --添加约束   
  122. alter table [表名] add constraint [约束名] check ([约束字段] <= '2009-1-1')   
  123.   
  124. --删除约束   
  125. alter table [表名] drop constraint [约束名]   
  126.   
  127. --添加默认值   
  128. alter table [表名] add constraint [默认值名] default 'http://www.yongfa365.com/' for [字段名]   
  129.   
  130. --删除默认值   
  131. alter table [表名] drop constraint [默认值名]   
  132.   
  133. --让SQL Server 自动编号ID从1开始   
  134. dbcc checkident('表名',reseed,0)   
  135.   
  136. ---------------------------字段操作---------------------------   
  137.   
  138. ----------------------表及字段描述信息------------------------   
  139.   
  140. --为表添加描述信息   
  141. EXEC sp_addextendedproperty N'MS_Description' , N'人员信息表' , N'SCHEMA' , N'dbo' , N'TABLE' , N'表名' , NULL , NULL  
  142.   
  143. --为字段XingMing添加描述信息   
  144. EXEC sp_addextendedproperty N'MS_Description' , N'姓名' , N'SCHEMA' , N'dbo' , N'TABLE' , N'表名' , N'COLUMN' , N'XingMing'  
  145.   
  146. --更新表中列XingMing的描述属性:   
  147. EXEC sp_updateextendedproperty N'MS_Description' , N'真实姓名' , N'SCHEMA' , N'dbo' , 'TABLE' , '表名' , 'COLUMN' , N'XingMing'  
  148.   
  149. --删除表中列XingMing的描述属性:   
  150. EXEC sp_dropextendedproperty N'MS_Description' , N'SCHEMA' , N'dbo' , 'TABLE' , '表名' , 'COLUMN' , N'XingMing'  
  151.   
  152. ----------------------表及字段描述信息------------------------   
  153.   
  154.   
  155. ---------------------------数据操作---------------------------   
  156. --插入数据   
  157. insert into [表名] (字段1,字段2) values (100,'http://www.yongfa365.com/')   
  158.   
  159. --删除数据   
  160. delete from [表名] where [字段名]>100   
  161.   
  162. --删除重复记录(效率低,适合少量数据操作,极不适合ACCESS使用)   
  163. delete from [表名] where id not in (select max(id) from [表名] group by txtTitle,txtContent)   
  164.   
  165. --NOT IN 效率太低,20000条数据都让access死掉了。可行的方法:建个临时表,在需要判断是否重复的字段上加主键,用insert into InfoTemp select * from Info将原表的数据导入临时表, 数据库可以自动筛去重复数据,delete * from Info 清空原表,再用insert into Info select * from InfoTemp 将临时表中数据导回原表   
  166.   
  167. --更新数据   
  168. update [表名] set [字段1] = 200,[字段2] = 'http://www.yongfa365.com/' where [字段三] = 'haiwa'  
  169.   
  170. --多表,用一个表更新另一个表(SQL Server版)   
  171. update 表一   
  172. set 表一.a = 表二.b   
  173. from 表一,表二   
  174. where 表一.id = 表二.id   
  175.   
  176. update 表一   
  177. set a = 表二.b   
  178. from 表二   
  179. where id = 表二.id   
  180.   
  181. --多表,用一个表更新另一个表(ACCESS版)   
  182. update 表一    
  183. inner join 表二   
  184. on 表一.id = 表二.id   
  185. set 表一.a = 表二.b    
  186.   
  187. --查询结果存储到新表   
  188. select * into [新表表名] from [表名]   
  189.   
  190. --从table 表中取出从第 m 条到第 n 条的记录:(not in 版本)   
  191. select top n-m+1 * from [表名] where id not in (select top m-1 id from [表名])   
  192.   
  193. --例:取出第31到第40条记录   
  194. select top 10 * from [表名] where id not in (select top 30 id from [表名])   
  195.   
  196. --从table 表中取出从第 m 条到第 n 条的记录:(ROW_NUMBER 版本)   
  197. SELECT  *   
  198. FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY id DESC ) AS idx ,   
  199.                     *   
  200.           FROM      dbo.Articles   
  201.         ) a   
  202. WHERE   a.idx BETWEEN m AND n   
  203.   
  204. --随机取10条数据,newid()是SQL数据库里的一个函数,跟数据库里的ID没关   
  205. select top 10 * from [表名] order by newid()    
  206.   
  207. --随机取10条数据,如果是ACCESS数据库用order by rnd(数字字段)   
  208. select top 10 * from [表名] order by rnd(id)   
  209.   
  210. --连接查询left join   
  211. select * from Article left join Category on Article.CategoryID=Category.ID   
  212.   
  213.   
  214.   
  215. --查询结果插入到另一个表的相关字段里(可以插入一个表的字段,也可以是一个数字常量)   
  216. insert into desttbl(fld1, fld2) select fld1, 5 from srctbl   
  217.   
  218. --把当前表里的数据再复制一份到这个表里   
  219. insert into [表名] select * from [表名]   
  220.   
  221. --SQL 2008支持這種插入方法,使用,隔開各行   
  222. DECLARE @Student TABLE (NO INT,Name NVARCHAR(4),Sex NVARCHAR(2),Age INT,Dept VARCHAR(2))   
  223. INSERT INTO @Student VALUES  
  224. ( 95001,N'李勇',N'男',20,'CS'),   
  225. ( 95002,N'刘晨',N'女',19,'IS'),   
  226. ( 95003,N'王敏',N'女',18,'IS'),   
  227. ( 95004,N'张立',N'男',19,'MA'),   
  228. ( 96001,N'徐一',N'男',20,'IS'),   
  229. ( 96002,N'张三',N'女',21,'CS'),   
  230. ( 96003,N'李四',N'男',18,'IS')   
  231.   
  232. SELECT * FROM @Student   
  233.   
  234. --以逗号连接结果集所有行,使之变为一行   
  235. DECLARE @result NVARCHAR(MAX)   
  236. SET @result = N''  
  237. SELECT @result = @result + N',' + Name FROM @Student   
  238.   
  239. SELECT RIGHT(@result,LEN(@result) - 1)   
  240.   
  241.   
  242. --向数据库中添加5000条数据   
  243. declare @i int  
  244. set @i=1   
  245. while @i<=5000   
  246. begin  
  247.   insert into users(userid,username) values(@i,'username' convert(varchar(255),@i))   
  248.   set @i=@i+1   
  249. end  
  250. go   
  251.   
  252. --统计SQL语句执行时间   
  253. declare @dt datetime   
  254. set @dt=getdate()   
  255. --要执行的SQL语句   
  256. select [语句执行花费时间(毫秒)]=datediff(ms,@dt,getdate())   
  257.   
  258. --Case When语句   
  259. SELECT UserName,sex=   
  260. CASE  
  261.   WHEN sex='男' THEN '男人'  
  262.   WHEN sex='女' THEN '女人'  
  263.   ELSE '哈哈'  
  264. END  
  265. ,Age   
  266. FROM Users   
  267.   
  268. --having使用方法   
  269. --一个表中的UserName有很多重复,   
  270. --只显示重复项:    
  271. select UserName,COUNT(*) from Users group by UserName having count(*)>1    
  272. --不显示重复项:    
  273. select UserName,COUNT(*) from Users group by UserName having count(*)=1    
  274.   
  275. ---------------------------数据操作---------------------------  
介绍就不多说了,下边是部分目录,觉得有用的话就顶一个C:.│ sqlserver2000.txt│ ├─第01章│ 1.9.1 设置内存选项.sql│ 1.9.2(2) 使用文件及文件组.sql│ 1.9.2(3) 调整tempdb数据库的文件属性.sql│ ├─第02章│ │ 2.1 日期概念理解中的一些测试.sql│ │ 2.2.4 CONVERT在日期转换中的使用示例.sql│ │ 2.3.3 SET DATEFORMAT对日期处理的影响.sql│ │ 2.3.4 SET LANGUAGE对日期处理的影响示例.sql│ │ 2.4.1 日期格式化处理.sql│ │ 2.4.2 日期推算处理.sql│ │ 2.4.3 特殊日期加减函数.sql│ │ 2.5.1 查询指定日期段内过生日的人员.sql│ │ 2.5.2 生成日期列表的函数.sql│ │ 2.5.3 工作日处理函数(标准节假日).sql│ │ 2.5.3 工作日处理函数(自定义节假日).sql│ │ 2.5.4 计算工作时间的函数.sql│ │ │ └─其他│ 交叉表.sql│ 任意两个时间之间的星期几的次数-横.sql│ 任意两个时间之间的星期几的次数-纵.sql│ 复杂年月处理.sql│ 统计--交叉表+日期+优先.sql│ ├─第03章│ │ 3.2 各种字符串分拆处理函数.sql│ │ 3.3 各种字符串合并处理示例.sql│ │ 3.4.1 分段截取函数.sql│ │ 3.4.2 分段更新函数.sql│ │ 3.4.3 IP地址处理函数.sql│ │ 3.5.1 字符串比较函数.sql│ │ 3.5.2 字符串并集&交集处理示例.sql│ │ 3.5.3 字符串分拆并统计的处理示例.sql│ │ 3.5.5 字符串处理示例--列车车次查询.sql│ │ 3.6.2 字符串在编号查询中的应用示例及常见问题.sql│ │ 3.6.3 动态参数的存储过程示例.sql│ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql│ │ 3.7.3 text与ntext字段的复制和合并处理示例.sql│ │ 3.7.4 text与image字段转换处理示例.sql│ │ 3.7.5 ntext字段的REPLACE处理示例.sql│ │ │ └─其他│ varbinary转换成字符串.sql│ 关键字搜索.sql│ 分解公式.sql│ 字符串分拆--格式化.sql│ 得到一个字符串在另一个字符串中出现的次数.sql│ 数字转换成十六进制.sql│ 比较第一与第二个字符串,是否有连续的5个字符相同.sql│ 生成查询的模糊匹配字符串.sql│ 简繁转换.sql│ 统计一个表中某个字符出现最多的字母.sql│ 非法字符串处理.sql│ ├─第04章│ │ 4.1.5 在各种处理中应用排序规则的示例.sql│ │ 4.2.1 排序规则在拼音处理中的应用.sql│ │ 4.2.2 排序规则在全角与半角处理中的应用.sql│ │ │ └─其他│ 生成GB2312汉字表.sql│ 生成GBK汉字表.sql│ 自动获取汉字笔画.sql│ ├─第05章│ │ 5.1.1 SET IDENTITY_INSERT 中的几个问题.sql│ │ 5.1.1 修改标识值的示例.sql│ │ 5.1.1 标识列与普通列互相转换的示例.sql│ │ 5.2.1 查表法按日期生成流水号的示例.sql│ │ 5.2.1 查表法生成流水号的示例.sql│ │ 5.2.2 使用编号表按日期生成流水号的示例.sql│ │ 5.2.2 使用编号表生成流水号的示例.sql│ │ 5.2.3 生成纯字母随机编号的示例(仅大小或者小写).sql│ │ 5.2.3 生成纯字母随机编号的示例(大小写混合).sql│ │ 5.2.3 生成纯数字随机编号的示例.sql│ │ 5.3.2 融合了补号处理的编号生成处理示例.sql│ │ 5.3.3 使用UPDATE进行编号重排的处理示例.sql│ │ 5.3.3 使用临时表进行编号重排的处理示例.sql│ │ 5.3.3 使用子查询进行编号重排的处理示例.sql│ │ 5.3.3 名次查询的处理示例.sql│ │ 5.4.1 查询已用编号分布情况的示例(临时表法).sql│ │ 5.4.1 查询已用编号分布情况的示例(子查询法).sql│ │ 5.4.2 查询缺号分布情况的示例.sql│ │ 5.4.3 返回已用编号、缺号分布字符串的处理示例.sql│ │ 5.4.4 缺勤天数统计的处理示例.sql│ │ │ └─其他│ -补位法.sql│ 以另一个表的字段做默认值.sql│ 以另一表的字段生成编号.sql│ 关联部门流水号.sql│ 十六进制.sql│ 学号.sql│ 开票统计--涉及到连号处理.sql│ 新编号查询示例(分类查询).sql│ 新编号查询示例.sql│ 日期流水号.sql│ 材料流水号.sql│ 流水号.sql│ 箱编号连号处理.sql│ 类别自动生成编号示例.sql│ 自已做标识列的例子.sql│ 触发器自动维护已用&未用编号.sql│ 连续编号.sql│ 防止重复的示例.sql│ 项目编号=各项目独立流水号&各年不同.sql│ ├─第06章│ │ 6.1.1 NULL对IN的查询的影响及解决示例.sql│ │ 6.1.2 各种联接的使用示例.sql│ │ 6.1.2 多表联结导致记录重复的示例.sql│ │ 6.1.3 使用UNION实现库存报表的示例.sql│ │ 6.1.5 按指定上下限区间进行数据统计的示例.sql│ │ 6.1.6 随机出题的示例.sql│ │ 6.2.1 ROLLUP实现的分级汇总示例(定义各汇总列标题).sql│ │ 6.2.1 ROLLUP实现的分级汇总示例(带排序及汇总列标题处理).sql│ │ 6.2.1 ROLLUP实现的分级汇总示例(带排序处理).sql│ │ 6.2.1 ROLLUP实现的分级汇总示例.sql│ │ 6.2.1 UNION ALL实现的分级汇总示例.sql│ │ 6.3.1 简单的交叉报表处理示例.sql│ │ 6.3.2 多列转换为行的交叉报表处理示例.sql│ │ 6.3.3 行值动态变化的交叉报表处理示例(转换多列).sql│ │ 6.3.3 行值动态变化的交叉报表处理示例.sql│ │ 6.3.4 化解字符串不能超过8000的方法.sql│ │ 6.3.5 特殊的交叉报表处理示例.sql│ │ 6.4.1 库存明细帐处理示例(包含结存数).sql│ │ 6.4.1 库存明细帐处理示例.sql│ │ 6.4.2 同期及上期数据对比处理示例.sql│ │ 6.4.3 动态分组处理示例.sql│ │ 6.4.4 排行榜处理示例.sql│ │ │ └─其他│ 交叉表--复杂名次.sql│ 交叉表-优先级处理.sql│ 交叉表分析.sql│ 分级汇总.sql│ 分组交叉表.sql│ 列转行.sql│ 固定行列报表.sql│ 复杂交叉表.sql│ 复杂交叉表1.sql│ 多栏显示.sql│ 日期+星期+时间.sql│ 格式化报表.sql│ 横转竖-1.sql│ 横转竖-字段名.sql│ 横转竖-生成字段名.sql│ 横转竖.sql│ 行列互换的复杂交叉表.sql│ 限制列数的交叉表.sql│ ├─第07章│ │ 7.1 splitpage.asp│ │ 7.2.1 TOP n 实现的通用分页存储过程.sql│ │ 7.2.2 字符串缓存实现的通用分页存储过程.sql│ │ 7.2.3 临时表缓存实现的通用分页存储过程.sql│ │ 7.2.4 使用系统存储过程实现的通用分页存储过程.sql│ │ 7.3.1 实现随机分页的通用分页存储过程.sql│ │ 7.3.2 根据分类表实现的分页存储过程.sql│ │ │ └─其他│ sp_cursor.sql│ 基本方法.sql│ ├─第08章│ │ 8.1.2 树形数据分级汇总示例.sql│ │ 8.1.3 树形数据编号重排的通用存储过程.sql│ │ 8.1.3 树形数据编号重排示例.sql│ │ 8.1.4 实现编码规则调整处理的通用存储过程.sql│ │ 8.1.4 生成编码规则调整处理T-SQL语句的函数.sql│ │ 8.1.5 删除节点处理的通用存储过程.sql│ │ 8.1.5 移动节点处理的通用存储过程.sql│ │ 8.2.2 树形数据层次显示处理示例.sql│ │ 8.2.2 树形数据广度排序处理示例.sql│ │ 8.2.2 树形数据深度排序处理示例(模拟单编号法).sql│ │ 8.2.2 树形数据深度排序处理示例(递归法).sql│ │ 8.2.3 查找指定节点的所有子节点的示例函数.sql│ │ 8.2.4 查找指定节点的所有父节点的示例函数.sql│ │ 8.2.5 校验插入指定结点是否导致编码循环的示例函数.sql│ │ 8.2.5 校验表中数据是否有循环编码的通用存储过程.sql│ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例(借鉴方式排序法).sql│ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例.sql│ │ 8.2.7 实现删除指定结点及所有子节点的处理触发器.sql│ │ 8.2.8 逐级汇总示例(循环逐级累计法).sql│ │ 8.2.8 逐级汇总示例(用户定义函数法).sql│ │ 8.3.1 产品配件清单查询示例.sql│ │ 8.3.2 最短乘车路线查询示例.sql│ │ │ └─其他│ xml菜单.sql│ 宝塔形数据的处理-1.sql│ 宝塔形数据的处理.sql│ 树形数据生成xml.sql│ ├─第09章│ │ 9.1.3 访问外部数据源方法总结.sql│ │ 9.5.1 二进制文件存取示例(T-SQL).sql│ │ 9.5.1 二进制文件存取示例(VB&VBA).vbs│ │ a.txt│ │ Schema.ini│ │ │ └─其他│ bcp-数据导入导出(全).sql│ bcp-数据导入导出-二进制文件.sql│ bcp-数据导出为文件.sql│ bcp表数据存为XML.sqlSQL Server到Oracle连接服务器的实现.sqlSQL ServerSQLBASE连接服务器的实现.sqlSQL Server到SYBASE连接服务器的实现.sqlsql导出mysql.sql│ textcopy实现文件存取.sql│ Vb程序实现文件存取.sql│ 导入文本文件时如何指定字段类型.sql│ 导出northwind中Employees的图像.sql│ 将某个目录上的Excel表,导入到数据库中.sql│ 数据导入导出基本方法.sql│ 用ASP上传&下载文件.sql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值