musings

August 1, 2006

MS SQL samples

Filed under: SQL statements — aliaspooryorik @ 8:31 am

Rename a table

Exec sp_rename [CurrentTableName], [NewTableName]

Rename column

EXEC sp_rename '[tablename].[CurrentColumnName]‘, ‘NewColumnName’, ‘COLUMN’

Add a primary key to a table

BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
 ALTER TABLE [dbo].[TableName] WITH NOCHECK ADD
CONSTRAINT [PK_TableName] PRIMARY KEY CLUSTERED
(
	[column_pk]
)  ON [PRIMARY]
GO COMMIT

Add a foreign key

ALTER TABLE [dbo].[TableName] ADD
CONSTRAINT [FK_TableName_column_fk] FOREIGN KEY
(
	[column_fk]
) REFERENCES [dbo].[LinkedTable] (
	[LinkedField]
)
GO

Check if a field exists

if exists (select * from syscolumns where name = 'location_active')
		alter table [location] drop column ‘location_active’
	GO

Looping in an stored procedure

DECLARE oCursor CURSOR FOR
	select advert_id, advert_code
	from [advertising]

OPEN oCursor

Declare @id as int
Declare @code as nvarchar(100)

FETCH NEXT FROM oCursor INTO @id, @code
WHILE @@FETCH_STATUS = 0
BEGIN
	IF @@Fetch_Status<>0 BREAK
	update [_orders] set
	advert_id = @id
	where sourcecode = @code

FETCH NEXT FROM oCursor INTO @id, @code
END

CLOSE oCursor
DEALLOCATE oCursor
GO

Create Table with incrementing primary key

CREATE TABLE [dbo].[Tutors] (
	[tutor_id] [int] IDENTITY (1, 1) NOT FOR REPLICATION  NOT NULL ,
	[tutor_fname] [nvarchar] (30) COLLATE Latin1_General_CI_AS NOT NULL ,
	[tutor_lname] [nvarchar] (50) COLLATE Latin1_General_CI_AS NOT NULL ,
	[tutor_phone] [nvarchar] (50) COLLATE Latin1_General_CI_AS NULL ,
	[tutor_mobile] [nvarchar] (50) COLLATE Latin1_General_CI_AS NULL ,
	[tutor_email] [nvarchar] (150) COLLATE Latin1_General_CI_AS NULL ,
	[tutor_address] [nvarchar] (200) COLLATE Latin1_General_CI_AS NULL ,
	[tutor_active] [bit] NOT NULL ,
	[tutor_created] [smalldatetime] NOT NULL,
	Primary Key (tutor_id)
) ON [PRIMARY]
GO

Return new primary key for Insert

declare @adminid int

insert into administrators
	(admin_username, admin_password, admin_created, admin_active, admin_fname, admin_lname)
	values
	('unknown', 'unknown', '19000101 00:00:00', 0, 'unknown', 'unknown')
	set @AdminId = @@identity

Create a Foreign Key Constraint

ALTER TABLE Books
	ADD CONSTRAINT fk_author
	FOREIGN KEY (AuthorID)
	REFERENCES Authors (AuthorID) ON DELETE CASCADE
	GO

Kill ’sleeping’ users

declare oCursor Cursor for
	select spid, loginame
	from master..sysprocesses
	where status = 'sleeping'
		and loginame <> 'sa'

open oCursor

Declare @spid as int
Declare @loginame as nvarchar(50)
Declare @sql as nvarchar(50)

FETCH NEXT FROM oCursor INTO @spid, @loginame
WHILE @@FETCH_STATUS = 0
BEGIN
	IF @@Fetch_Status<>0 BREAK
		print @loginame + ' = ' + Convert(nvarchar(20), @spid)
		--set @sql = 'kill ' + Convert(char, @spid)
		--exec sp_executesql @sql

FETCH NEXT FROM oCursor INTO @spid, @loginame
END

CLOSE oCursor
DEALLOCATE oCursor
GO

Delimited Data cleansing with CharIndex

update [filestore] set
file_name = Left(file_name, CharIndex(’;', file_name) - 1)
where  file_name IS NOT NULL
and CharIndex(’;', file_name) > 0)

msdn.microsoft.com SQL Server Reference

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

Blog at WordPress.com.