SQL Server Management Studio(SSMS)のSQLクエリエディターでは、SQLの入力をサポートしてくれるIntelliSense(インテリセンス)機能がデフォルト(初期状態)で使えるようになっています。
ユーザー(開発者)のキー入力を監視し、入力しようとしているワードを推測して自動補完(オートコンプリート)したり、入力候補をリストで表示して選択することで入力できるようにしてくれます。
IntelliSenseは、SQL Server Management Studioの他にも、Microsoft Visual Studioの統合開発環境で使用されています。
目次
IntelliSense(インテリセンス)の機能
IntelliSenseには、様々な機能があります。
入力補完
IntelliSenseは、テーブル名や列名などの入力候補を補完してくれます。
例えば、SELECTの後に文字列を入力すると、入力した文字列が部分的に一致するオブジェクト名の候補を表示してくれます。
FROMの後に文字列を入力すると、今度はテーブルやビューなどの入力候補を表示してくれます。
SELECTの後の入力補完では、列名だけでなくテーブル名も入力候補にあがってきていますが、FROMの後の入力補完では、テーブル名だけが候補にあがってきています。
SQL Server Management StudioのIntelliSenseでは、入力する場所によって適切な入力候補を表示してくれます。
オブジェクトの情報の表示
IntelliSenseは入力補完をするだけではなく、テーブルや列などのオブジェクトの情報も表示してくれます。
テーブル名にマウスカーソルを合わせると、以下のようにテーブルの情報を表示してくれます。
テーブルの情報では 、テーブルが属しているデータベース、スキーマなどが表示されます。
列名にマウスカーソルを合わせると、以下のように列の情報を表示してくれます。
列の情報では、データ型やNULLが許容されるかどうか、プライマリキーであるかどうかなどが表示されます。
エラーの検知
IntelliSenseは入力にエラー(オブジェクト名の間違いや構文の間違い)があると赤い波線を表示して知らせてくれます。
エラーが表示されている箇所にマウスカーソルを合わせると、エラーの内容が表示されます。
IntelliSenseが反映されない場合
クエリエディターを開いた状態で、新しいデータベースのオブジェクト(テーブルや列など)を作成した場合、そのオブジェクトはIntelliSenseに反映されません。
例えば、クエリエディターを開いたまま、テーブル、ビュー、ユーザー定義ファンクション(関数)、ストアードプロシージャなどを作成したり、テーブルの列(カラム)を変更した場合は、入力候補として表示されません。
また、作成、変更したオブジェクトを入力してもエラーとして検知されてしまいます。
ここでは、「Staff」というテーブルを作成していますが、無効であるというエラーが表示されています。
これは、IntelliSenseが最新の状態に更新されていないために起こる現象です。
クエリエディターを開いたままでは、IntelliSenseの情報が更新されないので、手動で更新してやる必要があります。
IntelliSenseのローカルキャッシュの更新
IntelliSenseを最新の状態への更新は、メニューバーの「編集」から行います。
メニューバーの「編集」をクリックすると、サブメニューに「IntelliSense」が表示されますのでクリックします。
「IntelliSense」をクリックすると、さらにサブメニューが開きますので「ローカル キャッシュの更新」をクリックします。
「ローカル キャッシュの更新」をクリックすると、既に開いているクエリエディターでのIntelliSenseが最新になりますので、追加したオブジェクトが入力候補に表示されるようになり、情報を参照することができるようになります。
IntelliSenseのローカルキャッシュを更新したので、エラーが表示されていた「Staff」テーブルの情報が正しく表示されています。
ローカル キャッシュの更新のショートカットキー
「ローカル キャッシュの更新」にはショートカットキーが割り当てられているので、慣れてくればショートカットキーを使う方がSQLをスムーズに編集することができます。
ショートカットキーは、Ctrl + Shift + Rキーに割り当てられています。
補足
SQLの入力にエラーがある状態では、IntelliSenseが正常に動作しない場合があります。
IntelliSenseが機能していない場合は、SQLの入力に誤りがないかを確認することも必要です。