SQL構文でよく使うものの自分用メモ
参考ページ https://qiita.com/leomaro7/items/4e90f802d0ae7edf6b23
基本コマンド
SELECT文:レコード検索
INSERT文:レコード挿入
UPDATE文:レコード更新
DELETE文:レコード削除
テキストファイルからデータ登録
参考:https://yomikakiexcel.com/sql_server_setup_for_excel/#google_vignette
※ 例 DMS ←データベースは事前に手動で作っておく
※ 例 TEST_TABLE ←テーブルは事前に手動で作っておく
USE [DMS]
BULK INSERT TEST_TABLE
FROM 'C:\temp\Sample_Data.txt'
WITH (
FIELDTERMINATOR = '\t', -- ファイル内のフィールドの区切り文字
ROWTERMINATOR = '\n', -- 行の終わりを示す文字
FIRSTROW = 2, -- ヘッダー行を無視するための指定 (1行目はヘッダーならば2行目からデータと見なす)
TABLOCK -- バルクインサートでテーブルロックを行う
);
抽出表示
※カラム名は []で囲む ただし、囲まなくても動作することもある
SELECT [カラム名], [カラム名] FROM テーブル名
条件指定して抽出表示
SELECT - FROM - WHERE
■ 抽出 条件値に一致する
USE [データベース名]
SELECT
[カラム名], [カラム名]
FROM テーブル名
WHERE
[カラム名] = 100;
■ 抽出 条件値ではない
USE [データベース名]
SELECT
[カラム名], [カラム名]
FROM テーブル名
WHERE
[カラム名] <> 50;
■ 抽出 条件値の範囲内 BETWEEN
例:50未満 または 100を超える
USE [データベース名]
SELECT
[カラム名], [カラム名]
FROM テーブル名
WHERE
[カラム名] BETWEEN 50 AND 100;
■ 抽出 条件値の範囲内ではない NOT BETWEEN
USE [データベース名]
SELECT
[カラム名], [カラム名]
FROM テーブル名
WHERE
[カラム名] NOT BETWEEN 50 AND 100;
■ 抽出 条件リストの中にある IN
例: AかBに一致したら表示
※ IN( のようにスペースは空けない
※ 条件は ' で囲う "では構文エラーになってしまう
USE [データベース名]
SELECT
[カラム名], [カラム名]
FROM テーブル名
WHERE
[カラム名] IN('A', 'B');
■ 抽出 条件リストの中にない NOT IN
例: AかBに一致しないものを表示
USE [データベース名]
SELECT
[カラム名], [カラム名]
FROM テーブル名
WHERE
[カラム名] NOT IN('A', 'B');
■ 抽出 複数条件 AND, OR
USE [データベース名]
SELECT
[カラム名], [カラム名]
FROM テーブル名
WHERE
[カラム名] >=100
AND ([カラム名] = 'A2' OR [カラム名]='A3')
■ ソート ORDER BY
ASC=昇順1,2,3,4,5 DESC=降順 5,4,3,2,1 指定なしならASC
USE [データベース名]
SELECT * FROM テーブル名 ORDER BY [カラム名] ASC;
SELECT * FROM テーブル名 ORDER BY [カラム名] DESC;
■ 指定件数表示 TOP (MySQLとかでは LIMIT)
USE [データベース名]
SELECT TOP 10 * FROM テーブル名
↑最初の10件表示
複数テーブルの結合 JOIN
JOIN = INNER JOIN
※↑ INNERは省略可能
※↑ 両方のテーブルにあるキーだけを表示
LEFT JOIN = LEFT OUTER JOIN
RIGHT JOIN = RIGHT OUTER JOIN
※↑ OUTERは省略可能
※↑ 両方のテーブルにない場合は 片側NULL として表示