转自【柳永法】SQL统计:从北京到天津的与从天津到北京的汇总到一起 常用sql语句 SQL Server 生成版权信息及测试环境信息

一、SQL统计:从北京到天津的与从天津到北京的汇总到一起

http://www.yongfa365.com/Item/SQLTongJiCongBeiJingDaoTianJinDeYuCongTianJinDaoBeiJingDeHuiZongDaoYiQi.html

 

 

 

二、常用SQL语句

http://www.yongfa365.com/Item/LiuYongFaChangYongSQLYuJuBeiWang.html

 

 

  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. --批量收缩所有数据库  
  20. DECLARE cur CURSOR FOR SELECT name FROM Master..SysDatabases WHERE name NOT IN ('master','model','msdb','Northwind','pubs')  
  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.   
  37. ----------------------------表操作----------------------------  
  38. --删除表  
  39. drop table movies  
  40.   
  41. --SQL Server通用建表结构  
  42. Create Table [test] (  
  43.   [Id] int primary key identity(1,1),--ID,主键,自动号  
  44.   [txtTitle] nvarchar(255),--标题  
  45.   [txtContent] nvarchar(MAX),--内容  
  46.   [Adder] nvarchar(20),--添加人  
  47.   [AddTime] datetime Default (getdate()),--提交时间  
  48.   [ModiTime] datetime Default (getdate()),--修改时间  
  49.   [Hits] int Default (0),--点击数  
  50.   [Flags] int Default (0) ,--标识  
  51.   [SortID] int Default (0)--排序号  
  52.  )  
  53.   
  54.   
  55. --SQLite建表  
  56. Create Table [test] (  
  57.   [Id] integer Primary key not null,  
  58.   [txtTitle] text null,--标题  
  59.   [txtContent] text null,--内容  
  60.   [Adder]  text null,--添加人  
  61.   [AddTime]  text DEFAULT (datetime('now','localtime')) not null,--提交时间  
  62.   [ModiTime]  text DEFAULT (datetime('now','localtime')) not null,--修改时间  
  63.   [Hits] integer Default (0)  not null,--点击数  
  64.   [Flags] integer Default (0)  not null ,--标识  
  65.   [SortID] integer Default (0)  not null--排序号  
  66.  )  
  67.   
  68. --ACCESS使用SQL语句建表  
  69. CREATE TABLE 表名 (  
  70.   [Id] AutoIncrement NOT NULL ,  
  71.   [AddTime] Date NULL ,  
  72.   [Hits] Integer NULL ,  
  73.   [Title] Text (255) NULL ,  
  74.   [Remark] Memo NULL ,  
  75.   [RMB] Currency NULL ,  
  76.   [Flags] bit NULL ,  
  77.     
  78.   PRIMARY KEY (ID)  
  79. )  
  80.   
  81.   
  82. --重命名表  
  83. sp_rename '表名''新表名''object'  
  84. ----------------------------表操作----------------------------  
  85.   
  86.   
  87. ---------------------------字段操作---------------------------  
  88. --添加字段  
  89. alter table [表名] add [字段名] [varchar] (50)  
  90.   
  91. --删除字段  
  92. alter table [表名] drop [字段名]  
  93.   
  94. --修改字段  
  95. alter table [表名] alter column [字段名] varchar(50)  
  96.   
  97. --添加约束  
  98. alter table [表名] add constraint [约束名] check ([约束字段] <= '2009-1-1')  
  99.   
  100. --删除约束  
  101. alter table [表名] drop constraint [约束名]  
  102.   
  103. --添加默认值  
  104. alter table [表名] add constraint [默认值名] default 'http://www.yongfa365.com/' for [字段名]  
  105.   
  106. --删除默认值  
  107. alter table [表名] drop constraint [默认值名]  
  108.   
  109. --让SQL Server 自动编号ID从1开始  
  110. dbcc checkident('表名',reseed,0)  
  111.   
  112. ---------------------------字段操作---------------------------  
  113.   
  114. ----------------------表及字段描述信息------------------------  
  115.   
  116. --为表添加描述信息  
  117. EXEC sp_addextendedproperty N'MS_Description' , N'人员信息表' , N'SCHEMA' , N'dbo' , N'TABLE' , N'表名' , NULL , NULL  
  118.   
  119. --为字段XingMing添加描述信息  
  120. EXEC sp_addextendedproperty N'MS_Description' , N'姓名' , N'SCHEMA' , N'dbo' , N'TABLE' , N'表名' , N'COLUMN' , N'XingMing'  
  121.   
  122. --更新表中列XingMing的描述属性:  
  123. EXEC sp_updateextendedproperty N'MS_Description' , N'真实姓名' , N'SCHEMA' , N'dbo' , 'TABLE' , '表名' , 'COLUMN' , N'XingMing'  
  124.   
  125. --删除表中列XingMing的描述属性:  
  126. EXEC sp_dropextendedproperty N'MS_Description' , N'SCHEMA' , N'dbo' , 'TABLE' , '表名' , 'COLUMN' , N'XingMing'  
  127.   
  128. ----------------------表及字段描述信息------------------------  
  129.   
  130.   
  131. ---------------------------数据操作---------------------------  
  132. --插入数据  
  133. insert into [表名] (字段1,字段2) values (100,'http://www.yongfa365.com/')  
  134.   
  135. --删除数据  
  136. delete from [表名] where [字段名]>100  
  137.   
  138. --删除重复记录(效率低,适合少量数据操作,极不适合ACCESS使用)  
  139. delete from [表名] where id not in (select max(id) from [表名] group by txtTitle,txtContent)  
  140.   
  141. --NOT IN 效率太低,20000条数据都让access死掉了。可行的方法:建个临时表,在需要判断是否重复的字段上加主键,用insert into InfoTemp select * from Info将原表的数据导入临时表, 数据库可以自动筛去重复数据,delete * from Info 清空原表,再用insert into Info select * from InfoTemp 将临时表中数据导回原表  
  142.   
  143. --更新数据  
  144. update [表名] set [字段1] = 200,[字段2] = 'http://www.yongfa365.com/' where [字段三] = 'haiwa'  
  145.   
  146. --多表,用一个表更新另一个表(SQL Server版)  
  147. update 表一  
  148. set 表一.a = 表二.b  
  149. from 表一,表二  
  150. where 表一.id = 表二.id  
  151.   
  152. update 表一  
  153. set a = 表二.b  
  154. from 表二  
  155. where id = 表二.id  
  156.   
  157. --多表,用一个表更新另一个表(ACCESS版)  
  158. update 表一   
  159. inner join 表二  
  160. on 表一.id = 表二.id  
  161. set 表一.a = 表二.b   
  162.   
  163. --查询结果存储到新表  
  164. select * into [新表表名] from [表名]  
  165.   
  166. --从table 表中取出从第 m 条到第 n 条的记录:(not in 版本)  
  167. select top n-m+1 * from [表名] where id not in (select top m-1 id from [表名])  
  168.   
  169. --例:取出第31到第40条记录  
  170. select top 10 * from [表名] where id not in (select top 30 id from [表名])  
  171.   
  172. --随机取10条数据,newid()是SQL数据库里的一个函数,跟数据库里的ID没关  
  173. select top 10 * from [表名] order by newid()   
  174.   
  175. --随机取10条数据,如果是ACCESS数据库用order by rnd(数字字段)  
  176. select top 10 * from [表名] order by rnd(id)  
  177.   
  178. --连接查询left join  
  179. select * from Article left join Category on Article.CategoryID=Category.ID  
  180.   
  181.   
  182.   
  183. --查询结果插入到另一个表的相关字段里(可以插入一个表的字段,也可以是一个数字常量)  
  184. insert into desttbl(fld1, fld2) select fld1, 5 from srctbl  
  185.   
  186. --把当前表里的数据再复制一份到这个表里  
  187. insert into [表名] select * from [表名]  
  188.   
  189.   
  190. --向数据库中添加5000条数据  
  191. declare @i int  
  192. set @i=1  
  193. while @i<=5000  
  194. begin  
  195.   insert into users(userid,username) values(@i,'username' convert(varchar(255),@i))  
  196.   set @i=@i+1  
  197. end  
  198. go  
  199.   
  200. --统计SQL语句执行时间  
  201. declare @dt datetime  
  202. set @dt=getdate()  
  203. --要执行的SQL语句  
  204. select [语句执行花费时间(毫秒)]=datediff(ms,@dt,getdate())  
  205.   
  206. --Case When语句  
  207. SELECT UserName,sex=  
  208. CASE  
  209.   WHEN sex='男' THEN '男人'  
  210.   WHEN sex='女' THEN '女人'  
  211.   ELSE '哈哈'  
  212. END  
  213. ,Age  
  214. FROM Users  
  215.   
  216. --having使用方法  
  217. --一个表中的UserName有很多重复,  
  218. --只显示重复项:   
  219. select UserName,COUNT(*) from Users group by UserName having count(*)>1   
  220. --不显示重复项:   
  221. select UserName,COUNT(*) from Users group by UserName having count(*)=1   
  222.   
  223. ---------------------------数据操作---------------------------  

 

 

添加主键

 

增加主键约束

ALTER TABLE [dbo].[表名] ADD
 CONSTRAINT [PK_表名] PRIMARY KEY CLUSTERED (
[主键1],[主键2]
)  ON [PRIMARY]
GO


三、SQL Server 生成版权信息及测试环境信息

http://www.yongfa365.com/Item/SQL-Server-CopyRight-Environment.html

 

 

 

四、SQL快速生成大量数据记录及日志记录

http://www.yongfa365.com/Item/SQL-quick-make-big-mdf-log.html

 

  1. use master  
  2. drop database dbname  
  3. create database dbname  
  4. go  
  5. use dbname  
  6.   
  7. go  
  8.   
  9. create table testlog ( usr varchar(50),pwd varchar(100))  
  10.   
  11. go  
  12. --先插入一条数据  
  13. insert into testlog select 'asdfasdfsadfasf','asdfasdfasfdasdf'  
  14.   
  15. go  
  16. --复制表到他本身,执行20次,生成1048576条数据  
  17. declare @i int  
  18. declare @d1 datetime  
  19. set @i=0  
  20. while @i<20  
  21. begin  
  22. set @d1 = getdate()  
  23. insert into [testlog] select * from [testlog]   
  24. set @i=@i+1  
  25. print '第' + Cast(@i as varchar(50)) + '圈,用时:' + Cast(datediff(ms,@d1,getdate()) as varchar(50)) + 'ms'  
  26. end  
  27.   
  28.   
  29. --收缩日志  
  30. use master  
  31. dump transaction [dbname] with no_log  
  32. backup log [dbname] with no_log  
  33. dbcc shrinkdatabase([dbname])  

  1. PRINT REPLICATE('-',82)  
  2. PRINT '-- Subject     : XXXXXXXXXXXXXXXX'  
  3. PRINT '-- Author      : 柳永法(yongfa365) http://www.yongfa365.com/ cto@yongfa365.com'  
  4. PRINT '-- CreateDate  : '+CONVERT(VARCHAR,GETDATE(),20)  
  5. PRINT '-- Environment : 'REPLACE(SUBSTRING(@@VERSION,0,LEN(@@VERSION)),CHAR(9),'--               ')  
  6. PRINT '-- Reference   : XXXXXXXXXXXXXXXX'  
  7. PRINT REPLICATE('-',82)  
  8.   
  9. --生成样式:  
  10. ----------------------------------------------------------------------------------  
  11. -- Subject     : XXXXXXXXXXXXXXXX  
  12. -- Author      : 柳永法(yongfa365) http://www.yongfa365.com/ cto@yongfa365.com  
  13. -- CreateDate  : 2010-05-03 11:28:06  
  14. -- Environment : Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)   
  15. --               Nov 24 2008 13:01:59   
  16. --               Copyright (c) 1988-2005 Microsoft Corporation  
  17. --               Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)  
  18. -- Reference   : XXXXXXXXXXXXXXXX  
  19. ---------------------------------------------------------------------------------- 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值