スポンサードリンク

【SQLServer】よく使うクエリ集

2019.11.04 2019.10.26 13
【SQLServer】よく使うクエリ集

こんばんわ!こふそ(@koheta0325)です!

SQLServerの便利なクエリをメモしておきます。

ここでは簡単なサンプルを紹介しています。

自由に応用して使ってみてください。

全般

テーブルが存在していればテーブルを削除(IF EXISTS)


--その①
IF object_id(N'テーブル名') IS NOT NULL DROP TABLE テーブル名;

--その②
DROP TABLE IF EXISTS テーブル名; 

DBのプロセスを強制中断(KILL)


USE master 
Go Declare @dbname sysname 
Set @dbname = 'データベース名' 
Declare @spid int 
Select @spid = MIN(spid) from master.dbo.sysprocesses 
where dbid = DB_ID(@dbname) 
while @spid is Not Null Begin Execute('kill ' + @spid) 
Select @spid = MIN(spid) from master.dbo.sysprocesses 
where dbid = DB_ID(@dbname) and spid > @spid 
End

AとBテーブルを結合してテーブルAを更新(JOIN UPDATE)


UPDATE テーブルA SET 
テーブルAの更新対象カラム = b.参照カラム 
FROM テーブルA AS a 
INNER JOIN テーブルB AS b ON a.キー = b.キー

重複データの抽出(HAVING)


SELECT * FROM テーブルA a 
WHERE EXISTS (SELECT * FROM テーブルA 
WHERE a.対象カラム=対象カラム GROUP BY 対象カラム HAVING COUNT(*) > 1)

CSVからインポート(BULK INSERT)


BULK INSERT Students FROM 'CSVのファイルパス' 
WITH ( FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' ); 
--あらかじめテーブルの作成が必要。カラムの順番も合わせる必要があります。

連番を生成&○○ケタの番号を生成(ROW_NUMBER)


SELECT 
RIGHT('100' + convert(varchar,1000 + ROW_NUMBER() OVER (ORDER BY カラム名)), 4) AS NewNo 
FROM テーブルA

データベース系

データベースの削除(DROP DATABASE)


EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'データベース名' 
GO 
USE [master] 
GO 
DROP DATABASE [データベース名] 
GO

データベースのバックアップ(BACKUP DATABASE)


BACKUP DATABASE [データベース名] TO DISK = N'D:\保存先パス\backup.bak' 
WITH NOFORMAT, INIT, NAME = N'完全 データベース バックアップ', 
SKIP, NOREWIND, NOUNLOAD, STATS = 10 
GO

データベースのリストア(RESTORE DATABASE)


--※1.あらかじめDBへの接続プロセスがあると削除できない可能性があります。事前にKILLしておく必要があるかもしれません 
--※2.同一の名前のデータベース名があるとリストアできません。同じデータベースがある場合は事前に削除しておく必要があります 
USE [master] RESTORE DATABASE [データベース名] FROM DISK = N'D:\保存先パス\backup.bak' WITH FILE = 1, 
NOUNLOAD, STATS = 5 GO

カラム系

カラムの追加


ALTER TABLE テーブル名 ADD カラム名 nvarchar(4) NULL

カラムの追加をする場合は一番後ろにカラムが追加されます

MySQLのように、カラム追加する位置を指定して追加する(ALTER)ことはできないでようです。

カラムの位置は追加後に手動で位置調整するか、もしくはテーブルを作り直す方がよいです。

カラムの変更


ALTER TABLE テーブル名 ALTER TABLE カラム名 nvarchar(4) NULL

カラムの削除


ALTER TABLE テーブル名 DROP COLUMN カラム名

カラム名変更


EXEC sp_rename 'テーブル名.現在のカラム名','変更するカラム名','COLUMN'