VSCode と SQL Server Local DB でSQLを勉強する軽い環境を整える

### はじめに

SQL のクエリをちょっと試したり、勉強したりするのに、Visual Studio や SSMS を起動するのは重すぎる。なるべく軽い環境を整えたい、と思って整えた手順を共有します。

### 1. VS Code に mssql 拡張機能をインストール

"mssql" で検索し、「SQL Server (mssql)」をインストールする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548326/6c5dfdfc-dad2-7893-bb11-d85ad6906462.png)

参考：
[Visual Studio Code の mssql 拡張機能の概要 - SQL Server | Microsoft Learn](https://learn.microsoft.com/ja-jp/sql/tools/visual-studio-code/mssql-extensions?view=sql-server-ver16)

### 2. SQL Server Express LocalDB をインストール

以下、LocalDB と略す。
~~Visual Studio を~~ Visual Studio Community 2022 を標準インストール済みの場合は、既に LocalDB がインストールされている。

参考：
[SQL Server Express LocalDB - SQL Server | Microsoft Learn](https://learn.microsoft.com/ja-jp/sql/database-engine/configure-windows/sql-server-express-localdb?view=sql-server-ver16)

### 3. LocalDB の自動インスタンスを開始

LocalDB のインストール時に自動的に作成されたインスタンス（MSSQLLocalDB）の状態を確認する。
PowerShell を開いて、sqllocaldb ユーティリティを使う。

参考：
[SqlLocalDB ユーティリティ - SQL Server | Microsoft Learn](https://learn.microsoft.com/ja-jp/sql/tools/sqllocaldb-utility?view=sql-server-ver16)

```powershell:PowerShell
PS C:\> sqllocaldb info
MSSQLLocalDB

PS C:\> sqllocaldb info "MSSQLLocalDB"
Name:               MSSQLLocalDB
Version:            15.0.4153.1
Shared name:
Owner:              xxx
Auto-create:        Yes
State:              Stopped
Last start time:    2024/07/19 23:02:38
Instance pipe name:
```

`State: Stopped` の場合は、開始する。

```powershell:PowerShell
PS C:\> sqllocaldb start "MSSQLLocalDB"
LocalDB instance "MSSQLLocalDB" started.

PS C:\> sqllocaldb info "MSSQLLocalDB"
Name:               MSSQLLocalDB
Version:            15.0.4153.1
Shared name:
Owner:              xxx
Auto-create:        Yes
State:              Running
Last start time:    2024/07/21 21:33:07
Instance pipe name: np:\\.\pipe\LOCALDB#AC10748A\tsql\query
```

`State: Running` になった。

### 4. VS Code から Local DB に接続

左端のアクティビティバーから「SQL Server」アイコンをクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548326/a5989032-c843-67ce-b5aa-c0b18715e483.png)

「+ Add Connection」をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548326/2e543e40-8a80-0324-f434-30f8e721cba9.png)

```Server=(localdb)\MSSQLLocalDB;Integrated Security=true```
を入力（するか貼り付けて）、Enter キーを押す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548326/cbfca0a9-b04b-d3b3-33e5-7eae781df9af.png)

プロファイル名 ```mslocaldb``` を入力して、Enter キーを押す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548326/08bfb08e-434b-f73c-0c99-bf0c1454fce8.png)

接続できた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548326/75799017-b7c0-657a-5fb6-47bb73636193.png)

接続プロファイル mslocaldb を右クリックして、新しいクエリを開く。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548326/cdf9c988-af45-3563-4b11-9f4f165ab6e4.png)

`sql` と入力すると、いろいろ出てくる。
たとえば、CreateTable を選ぶ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548326/9e18abf9-1957-a9eb-6e3f-6b795281e590.png)

`Table1` → Tabキー → `dbo` → Tabキー
の入力で、CREATE TABLE の雛形をつくってくれる。
（テーブル名 Table1 、スキーマ dbo の場合。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548326/8fc5538a-6b29-7158-8b2a-70894290dbf8.png)

Ctrl + Shift + E で クエリ を実行。
キーを 3 つも押さないといけないのがちょっと面倒。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548326/1516e9d7-a2c4-d7df-a490-7c9a32b65505.png)

テーブル dbo.Table1 が作成された。

Express LocalDB といっても、トランザクションもウィンドウ関数も備えているので、SQL の勉強には必要十分。VSCode とともに、軽量っていいものですね。