SQL脚本修改表结构

SQL脚本修改表结构 
新建表:
create table [表名]
(
[自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,
[字段1] nVarChar(50) default '默认值' null ,
[字段2] ntext null ,
[字段3] datetime,
[字段4] money null ,
[字段5] int default 0,
[字段6] Decimal (12,4) default 0,
[字段7] image null ,
)

删除表:
Drop table [表名]

Truncate table [表名] --不写log 而且自增字段复位从1开始

插入数据:
INSERT INTO [表名] (字段1,字段2) VALUES (1,'ABC')

删除数据:
DELETE FROM [表名] WHERE [字段名]>100

更新数据:
UPDATE [表名] SET [字段1] = 1,[字段2] = 'ABC' WHERE [字段三] = 'what'

新增字段:
ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL

删除字段:
ALTER TABLE [表名] DROP COLUMN [字段名]

修改字段名称:

sp_rename   'IncidentReport.CompletedById ', 'CompletedBy', 'column '    

修改字段:
ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR (50) NULL

重命名表:(Access 重命名表,请参考文章:在Access数据库中重命名表)
sp_rename '表名', '新表名', 'OBJECT'

新建约束:
ALTER TABLE [表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] <= '2010-12-1')

删除约束:
ALTER TABLE [表名] DROP CONSTRAINT 约束名

删除索引:

DROP INDEX [IX_afk_ProtectionRisk_ProtectionDepartment] ON [ProtectionRisk] ;
go

新建默认值
ALTER TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT 'ABC' FOR [字段名]

删除默认值
ALTER TABLE [表名] DROP CONSTRAINT 默认值名

 

新增主外键关系:

ALTER TABLE [dbo].[IncidentReport] WITH CHECK ADD CONSTRAINT [FK_IncidentReport_IncidentReportTemplate] FOREIGN KEY([IncidentReportTemplateId])
REFERENCES [dbo].[IncidentReportTemplate] ([Id])
GO

新增字段含默认值

ALTER TABLE incidenttemplate ADD IsShowHealthCheck bit NOT NULL default 1

--Synchronize field 'AspNetIsApproved' with field 'IsApproved'
WITH Users AS
(
SELECT u.UserName,m.IsApproved FROM [AspNetApplicationServices].[dbo].[aspnet_Membership] m JOIN [AspNetApplicationServices].[dbo].[aspnet_Users] u ON m.UserId=u.UserId
)
UPDATE dbo.UserProfile SET AspNetIsApproved=Users.IsApproved FROM dbo.UserProfile,Users WHERE dbo.UserProfile.UserName=Users.UserName
--插入自增长字段值
set IDENTITY_INSERT  entityformatGroup ON
INSERT INTO entityformatGroup (id) VALUES (1)
set IDENTITY_INSERT  entityformatGroup OFF
--判断数据是否存在
IF (exists (select * from sys.objects where name = 'UpdateTranslationForDynamicTextTrigger'))
    ...
go

添加一行新数据:

IF ((Select count(*) from [dbo].[DifficultyLevel]) = 0)

       BEGIN

              SET IDENTITY_INSERT [dbo].[DifficultyLevel] ON

             

              INSERT [dbo].[DifficultyLevel] ([Id]) VALUES (1)

              INSERT [dbo].[DifficultyLevelTranslation] ([Id], [Language], [TITLE], [IsSynchronized]) VALUES (1, 'xx-XX', 'Default',1)

 

              SET IDENTITY_INSERT [dbo].[DifficultyLevel] OFF

       END

将已经存在数据的列修改为自增长列:

begin transaction
 
create table test_tmp
(
Id int not null identity(1,1) PRIMARY KEY
)
go
 
set identity_insert test_tmp on
go
 
if exists(select * from dbo.ReportText)
exec(' insert into test_tmp(Id) select id from ReportText with(holdlock tablockx)')
go
 
set identity_insert test_tmp off
go
 
ALTER TABLE [ReportText] DROP CONSTRAINT FK_ReportText_OpModelWorkstream
ALTER TABLE [dbo].[ReportTextTranslation] DROP CONSTRAINT FK_ReportTextTranslation_ReportText

Drop table [ReportText]
go
 
exec sp_rename N'test_tmp' ,N'ReportText' , 'OBJECT'
GO


ALTER TABLE [dbo].ReportTextTranslation WITH CHECK ADD CONSTRAINT FK_ReportTextTranslation_ReportText FOREIGN KEY([Id])
REFERENCES [dbo].ReportText ([Id])
GO
 
commit
 
GO

 FUNCTION:

CREATE FUNCTION [dbo].[udf_GetLanguageFromUserName]
(    
    -- Add the parameters for the function here
    @UserName NVARCHAR(255)
)
RETURNS @rTable TABLE 
(
Id NVARCHAR(5),
Language NVARCHAR(2),
Country NVARCHAR(2),
Name NVARCHAR(120)
)
AS

BEGIN

DECLARE @IsAdministrator BIT
DECLARE @UserLanguage NVARCHAR(5)
SELECT @IsAdministrator = IsAdministrator, @UserLanguage = LanguageId
FROM UserProfile
WHERE UserName = @UserName

-- === 
IF @IsAdministrator = 1 OR RIGHT(@UserLanguage, 2) = 'XX'
    BEGIN
        --- Admin - return all languages
        INSERT INTO @rTable(Id, Language, Country, Name)
        SELECT Id, LEFT(Id, 2) AS Language, RIGHT(Id, 2) AS Country, Name
        FROM [Language] L
    END
ELSE
    BEGIN
        --- Not Admin - return languages that match with the users country
        INSERT INTO @rTable(Id, Language, Country, Name)
        SELECT Id, LEFT(Id, 2) AS Language, RIGHT(Id, 2) AS Country, L.Name
        FROM [Language] L INNER JOIN UserProfile UP ON RIGHT(L.Id, 2) = RIGHT(UP.LanguageId, 2)    
        WHERE UP.UserName = @UserName
    END
    
-- === 
RETURN
-- === 
END

 

转载于:https://www.cnblogs.com/cw_volcano/archive/2012/02/01/2334873.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值