展会信息港展会大全

sql神器 android软件开发教程
来源:互联网   发布日期:2016-02-16 10:35:15   浏览:1885次  

导读:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83...

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

/*

* 创建时间:2011-10-09

* liud

* 使用目录:

*==============================================

* 01==查看表描述信息

*02==添加列(可多列)修改列删除列修改列名

* 03==删除表字段描述

*04==添加表字段描述(方法1、2)

* 05==修改表字段描述

* 06==修改列允许为空或不为空

*07==创建表主键外键索引修改主键

* 08==表列增加、修改默认值

* 09==函数Split

* 10==FOR XML AUTO

* 11==FOR XML PATH多种使用方式

* 12==将指定字符替换stuff('abc',2,1,'B') 结果:aBc

* 13==联合多表Update操作

* 14==日期函数

* 15==行列转换(两种方式)

* 16==删除/创建表建立的约束(如默认值)

* 17==With **AS()使用

* 18==Update 时增加 @ERROR<>0OR @ROWCOUNT<>cnt(影响行数) 判断

* 19==大数据表循环删除脚本

*==============================================

*/

--111111111111111==============================查看表描述信息

SELECT*

FROM::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', 'CONTRACT', 'column', NULL)

--222222222222222==============================添加列(可多列)修改列删除列

ALTER TABLE 表 ADD 列 int,可多列逗号分隔

ALTER TABLE tableName ALTER column columnName varchar(4000)

ALTER TABLE tableName drop column columnName

EXECsp_rename'tableName.column1' , 'column2'--(把表名为tableName的column1列名修改为column2)

--33333333333333==============================删除表字段描述

--

EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','CONTRACT',null,null

EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','CONTRACT','column',BrandId

--4444444444444==============================添加表字段描述(方法1、2)

--表描述

EXEC sp_addextendedproperty N'MS_Description', '添加表描述', N'user', N'dbo', N'table', N'表', NULL, NULL

--方法1

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'添加字段描述1'

, @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表', @level2type=N'COLUMN',@level2name=N'列'

GO

--方法2

EXECUTE sp_addextendedproperty N'MS_Description', '添加字段描述2', N'user', N'dbo', N'table', N'表', N'column', N'列'

GO

--5555555555555==============================修改表字段描述信息

--

EXEC sp_updateextendedproperty 'MS_Description','修改表描述',N'user', N'dbo', N'table','表',null,null

EXEC sp_updateextendedproperty 'MS_Description','修改字段描述',N'user', N'dbo', N'table','表','column',a1

--666666666666666==============================修改列允许为空或不为空

--

--允许为空

alter table 表 ALTER COLUMN 列 bit NULL

alter table 表 ALTER COLUMN 列 BIT NOT NULL

--77777777777777==============================创建表主键索引

--

--检查索引是否存在,存在则删除

if exists (select 1

fromsysindexes

whereid= object_id('dbo.SCCLWayBill')

andname= 'IX_SCCLWayBill_DispatchNo'

andindid > 0

andindid < 255)

drop index dbo.SCCLWayBill.IX_SCCLWayBill_DispatchNo

GO

--创建主键

CREATE TABLE tbname(

id INT NOT NULL,--不为空

NAME NVARCHAR(20) NULL,--可为空

STATUS INT DEFAULT 0,--默认值

constraint PK_tbname primary key (id),--主键

waijian int foreign key(waijian) references A_tablename(AID)--外键

)

--修改主键

--1首先删除主键

ALTERTABLE [tbname] DROPCONSTRAINT [PK_tbname]

--2创建主键

ALTERTABLE [tbname] ADDCONSTRAINT [PK_tbname] PRIMARYKEY

(

column1 ASC,

column2 ASC,

column3 ASC

)

GO

--创建索引

--聚集索引

create index IX_tbname_id on dbo.tbname (

id ASC

)

go

--非聚集索引

CREATE nonclusteredindex IX_tbname_id on dbo.tbname (

id ASC

)

go

--8888888888888==============================表列增加默认值

ALTER TABLE [tbName] ADDCONSTRAINT [约束名(自定义)]DEFAULT ((2)) FOR [ColumnName]

ALTER TABLE [tbName] ADDDEFAULT ((1)) FOR [column]

--如果需要修改默认值

ALTER TABLE [tbName] DROP CONSTRAINT [约束名(自定义)]--删除约束 然后再新增

--

--999999999999999============================Split函数

CREATE Function [Split](@Sql varchar(8000),@Splits varchar(10))

returns @temp Table (a varchar(100))

As

Begin

Declare @i Int

Set @Sql = RTrim(LTrim(@Sql))

Set @i = CharIndex(@Splits,@Sql)

While @i >= 1

Begin

Insert @temp Values(Left(@Sql,@i-1))

Set @Sql = SubString(@Sql,@i+1,Len(@Sql)-@i)

Set @i = CharIndex(@Splits,@Sql)

End

If @Sql <> ''

Insert @temp Values (@Sql)

Return

End

--测试

--SELECT * FROMdbo.Split('L.I.U.D.O.N.G','.')

-------------------10=========================FOR XMLAUTO

DECLARE @temT TABLE(ID INT,NAME NVARCHAR(50))

INSERT INTO @temT VALUEs(1,'liudong');

INSERT INTO @temT VALUEs(2,'shichunjie');

SELECT * FROM @temT FOR XML AUTO

-------------------11=========================FOR XMLPATH

SELECT * FROM @temT FOR XML PATH

SELECT * FROM @temT FOR XML PATH('T')

SELECT * FROM @temT FOR XML PATH('')

SELECT cast(id AS NVARCHAR(10))+',',NAME+'.' FROM @temT FOR XML PATH('')

-------------------12=========================stuff('abc',2,1,'B')

select stuff('abc',2,1,'B') --结果 aBc

--

-------------------13=========================联合多表Update操作

--

UPDATE t1 SET tclo=1 FROM t1,t2WHERE t1.id=t2.id

-------------------14=========================日期函数

--

--datediff(ex,begin,end)

--时差--ex:表达式,begin:开始时间,end:结束时间,ex=end-begin

SELECT DATEDIFF(hh,'2012-03-03 10:11','2012-03-04 09:11')

--加时--ex:表达式,加时,时间

SELECT DATEADD(hh,24,'2012-03-03 10:11')

-------------------15=========================行列互转(两种方式)

--1 定义变量

DECLARE @result VARCHAR(255)

SET @result = ''

SELECT@result = @result + cast(tdd.[name] as varchar(255)) +','

FROM T tdd(NOLOCK) WHERE1=1

IF(len(@result) - 1<0) SELECT '' AS [name]

ELSESELECTLEFT(@result,len(@result) - 1)AS [name]

--2 使用 for xmlpath(''),使用stuff函数将第一个,号替换掉

SELECT

[name]=stuff((select ','+cast(tt.[name] AS VARCHAR(10))

from T tt where 1=1 for xml path('')), 1, 1, '')

FROM @temp

-------------------16=========================查看/删除/创建表约束

--查看表约束

sp_helpconstraint表名

--删除表约束

ALTER TABLE 表名 DROP CONSTRAINT 约束名

--创建表约束

ALTER TABLE 表名 ADDCONSTRAINT 约束名DEFAULT ('') FOR 字段

-------------------17===========================With **AS()使用

--- 临时表

WITH tt AS (

SELECT * FROM tab

)

-- 递归

WITH dept AS(

SELECT cd.Code,cd.CodeName

FROM CostDept cd(NOLOCK) WHERE cd.Code='0123'

UNION ALL

SELECT cd1.Code,cd1.CodeName

FROM dept JOIN CostDept cd1(NOLOCK) ON dept.Code=cd1.ParentCode

)

SELECT * FROM dept

-------------------------------------------------------------------------------

SELECT tt.DeliveryOrderNO,tt.SysOrderTypeFROM (

SELECT T.DeliveryOrderNO,

SysOrderType=stuff((select ','+cast(tt.SysOrderType AS VARCHAR(10))

from TMS_DeliveryOrderDetail tt where tt.DeliveryOrderNO=T.DeliveryOrderNOfor xml path('')), 1, 1, '')

FROM (

SELECT tdo.DeliveryOrderNO

FROM TMS_DeliveryOrder tdo

WHERE 1=1

and tdo.ReceivedDate>='2012-03-01 01:01'AND tdo.ReceivedDate<=GETDATE()

AND tdo.OrderType=2

--ANDtdo.DeliveryOrderNO='0103Y1203010001'

) T ) TT WHERE1=1

-- and(charindex('13',SysOrderType)>0 OR charindex('13',SysOrderType)>0 ORcharindex('16',SysOrderType)>0 OR charindex('17',SysOrderType)>0 ORcharindex('18',SysOrderType)>0)

--ANDcharindex('13',SysOrderType)=0 AND charindex('16',SysOrderType)=0 ANDcharindex('18',SysOrderType)=0

AND (charindex('10',SysOrderType)>0 OR charindex('17',SysOrderType)>0)

AND (charindex('13',SysOrderType)=0 AND charindex('16',SysOrderType)=0AND charindex('18',SysOrderType)=0)

SELECT * FROM TMS_DeliveryOrderDetail tdod WHERE tdod.FactoryID IS NOT NULL

-------------------18================Update 时增加@ERROR<>0 OR @ROWCOUNT<>cnt(影响行数) 判断

IF(@@ERROR<>0 OR @@ROWCOUNT<>1)

BEGIN

ROLLBACK

PRINT 'RollBack'

RETURN

END

PRINT 'Commit Start'

COMMIT

PRINT 'Commit Over'

SELECT * FROM TMS_DeliveryOrderDetail tdod

WHERE EXISTS(

SELECT * FROM TMS_SYN_Redeploy tsr WHERE

tsr.RedeployCode IN

(

)

--------------------19=====================大数据表循环删除脚本

DECLARE @icount INTEGER;

DECLARE @StartDate date;

DECLARE @EndDate date;

SET @StartDate = CONVERT(date,'2012-08-01');

SET @EndDate = CONVERT(date,'2012-08-31');

;

WHILE 1=1

BEGIN

DELETE TOP (20000)

FROM [dbo].[ForecastBaseData]

WHERE CreateDate>=@StartDate

and CreateDate<=@EndDate

;

SET @icount = @@ROWCOUNT

;

IF @icount<>20000

BREAK

;

WAITFOR DELAY '00:00:05'

END

--------------------19END=====================

赞助本站

人工智能实验室

相关热词: 开发 编程 android

相关内容
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港