Think Twice
IT技術メモ | SQL Serverのメモ
Created: 2020-10-15 / Updated: 2020-12-16

SQL ServerのTips

ここではSQL ServerのちょっとしたTipsをまとめておきます。

目次

テーブルをバックアップするSQL

(2020-07-15 作成 / 2020-10-15 更新)

テーブルをサクっとバックアップしたい場合に使えるSQLです。

テーブルをバックアップするSQL
SELECT * INTO <新しいテーブル名> FROM <テーブル名>;

以下SQLを実行すると、M_USERと同じレイアウトのM_USER_20201015という名前のテーブルが作成されます。

SELECT * INTO M_USER_20201015 FROM M_USER;
このページのトップへ

IDENTITY指定された列に明示的な値をINSERTする

(2020-12-04 作成)

IDENTITYが指定された列の値を直接指定したINSERT文はエラーとなって実行できません。
そこで、IDENTITY_INSERTONに設定することでそれを一時解除できます。

IDENTITY_INSERTをONにする
SET IDENTITY_INSERT <テーブル名> ON;

INSERT文を作るときに、列名は明示的に指定する必要があるようです。

元に戻す場合は、OFFにします。

IDENTITY_INSERTをOFFにする
SET IDENTITY_INSERT <テーブル名> OFF;

参考

このページのトップへ

照合順序設定を確認するSQL

(2020-12-11 作成)
サーバーの照合順序設定を確認するSQL
SELECT CONVERT (varchar(256), SERVERPROPERTY('collation'));
データベースの照合順序設定を確認するSQL
SELECT name, collation_name FROM sys.databases;
テーブルと列の照合順序設定を確認するSQL
SELECT
    t.name AS TableName,
    c.name AS ColumnName,
    collation_name
FROM
    sys.columns c
    inner join
    sys.tables t on t.object_id = c.object_id;

参考

このページのトップへ

SELECT結果をINSERTするSQL

(2020-12-16 作成)

いわゆるINSERT-SELECTです。

TABLE2の内容をすべてTABLE1にINSERTする(列定義がすべて同じ場合)
INSERT INTO TABLE1
SELECT * FROM TABLE2
TABLE2の内容を列指定してTABLE1にINSERTする
INSERT (COL1, COL2) INTO TABLE1
SELECT COL1, COL2 FROM TABLE2
TABLE2の内容を条件で絞り込んでTABLE1にINSERTする
INSERT (COL1, COL2) INTO TABLE1
SELECT a.COL1, a.COL2 FROM TABLE2 a
WHERE a.COL3 = 条件1 AND a.COL4 = 条件2

SELECTの方はテーブルに別名を付けたりもできる。(上記のa)

参考

このページのトップへ