テーブルをコピーする
USE データベース名
SELECT * INTO コピー先テーブル名 FROM コピー元テーブル名;
※実行する時点でコピー先テーブルが存在しない状況で使用できる。
コピー先テーブルがあらかじめ用意されている場合はエラーになる。
SELECTで取得した結果をそのままINSERTする
USE データベース名
INSERT INTO 挿入先テーブル
(
[列名1],
[列名2],
[列名3]
)
SELECT
[列名1],
[列名2],
[列名3]
FROM
挿入元テーブル名;
※実行する時点で挿入先テーブルはあらかじめ用意しておかなければならない。
TRUNCATE TABLE
TRUNCATE TABLE テーブル名
BULK INSERT
USE ST_DB;
GO
BULK INSERT T_MAIN FROM 'CSVファイルの絶対パス'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
GO
AccessのテーブルをSQLServerへ移行するときは、
1.Accessを起動し、テーブルを右クリックし、[エクスポート]->[Excel]をクリックし、エクセル形式でファイルをエクスポートする
2.エクスポートしたエクセルを開き、名前をつけて「CSV(コンマ区切り)(*csv)」形式で保存する
3.上記のBULK INSERT構文を実行する
参考↓
https://docs.microsoft.com/ja-jp/sql/relational-databases/import-export/import-data-from-excel-to-sql?view=sql-server-ver15#bulk-insert
INTERSECT
二つのクエリ結果の重複行をピックアップする。
テーブル名1
INTERSECT
テーブル名2
二つのクエリ結果の列構成は一致していなければならない。エイリアスは異なってもよいが、列順は一致させなければならない。
EXCEPT
1番目のクエリ結果から、二番目のクエリ結果と重複する行を除いた行を取得する。
※二番目のクエリ結果にだけある行が取得されることはない。
テーブル名1
EXCEPT
テーブル名2
二つのクエリ結果の列構成は一致していなければならない。エイリアスは異なってもよいが、列順は一致させなければならない。
WITH
With エイリアス名 AS (
SELECT文
)
EXISTS
Where exists サブクエリ のような感じで記述する。特徴は以下2つ。
サブクエリの中で外側のクエリと結合しない場合
サブクエリの中での実行結果件数が1行以上あれば外側のクエリを実行する。なければ返さない。
例1:サブクエリの結果が1行以上だった
Select
*
From T_DATA1
Where exists (
Select
*
From T_DATA2
Where Item3 = '03'
)
and Item3 = '01'
例2:サブクエリの結果が0行だった
サブクエリの結果が0件だった時点で外側のクエリ結果は0になる。
Select
*
From T_DATA1
Where exists (
Select
*
From T_DATA2
Where Item3 = '999'
)
and Item3 = '01'
サブクエリの中で外側のクエリと結合する場合
外側のクエリ結果の中から一致した行を返す。
Select
*
From T_DATA1 t1
Where exists (
Select
*
From T_DATA2 t2
Where t1.Item3 = t2.Item3 --サブクエリの中で外側のクエリと何をもって一致するか定義する
)