データベースの仕様変更時によくありがちな事案の一つに「データベーステーブルにカラムを追加する」というものがあります。
現在SQLを学習中の方も色々試すにあたり、カラムを追加したり削除したりすることはあるでしょう。
そこで今回は「SQLで列を追加する二つの方法」について解説してみたいと思います。
どちらが良いということはありませんが、両方覚えておくことで学習の意味が更に良いものへと変わるはずです。
カラムを扱う二つの方法
SQLを扱うにあたり、方法は二通りあります。
まず一つ目は”SQL Server Management Studio(SSMS)を使用する方法”です。
こちらはアプリケーションのインターフェースがしっかりしているため、全てをコマンド実行せずともマウスでの操作が可能です。
初心者の方にとってはSSMSを使った方が色々とやり易いと思います。
二つ目の方法としては”Transact-SQLを利用する方法”です。
Transact-SQLとは、コマンドプロンプトに直接コマンドを入力してSQLを実行する方法を指します。
こちらはマウスでの操作が不可能なためSSMSよりは若干難易度は上がりますが、SQL自体がそれほど難易度の高いものではないので、ある程度の知識さえ身につければコーディングに困ることはないでしょう。
SSMSはインストール環境が整っていない場合使用することは出来ませんが、Transact-SQLはプロンプトだけで実行できるため、両方覚えておくことで環境を選ぶ必要がなくなるので、どちらも使えるようになっておくと便利です。
SSMSを使う方法
それでは早速SSMSを使って列を追加する方法について解説していきます。
※SSMSはインストール環境が無いと操作が出来ない為、この記事を読むにあたりSSMSを予めインストールしておいて下さい。
まずスタートアップメニューから「Microsoft SQL Server Management Studio」を開きます。
SSMSの画面が起動したらサーバー選択画面と接続画面が表示されると思いますので、接続してください。
接続が完了するとオブジェクトエクスプローラーが画面左側にありますので、そこから次のように進んでください。
サーバー選択 → データベースフォルダ → データベース選択 → テーブルフォルダ → テーブルを右クリック
ポップアップで色々メニューが出てくると思います。
この中から「デザイン(G)」を選択してください。
すると画面の右側に下の図のようなウィンドウが開きます。
このウィンドウで空欄をクリックすると、新しく列を追加できます。
「列名」「データ型」「NULLを許容」の3項目あると思いますので、それぞれ設定します。
全ての設定が完了しましたら、最後に保存ボタン(オブジェクトエクスプローラー上のバーメニューにあります)を押します。
これでデータベーステーブルに新しく列が追加されました。
このようにSSMSを使用するとほぼマウスのみの動作で列を追加することが出来ます。
※今回はSSMSにスポットを当てた記事ではない為、SSMSの詳しい使い方については省略させていただきます。
Transact-SQLを使う方法
今度はTransact-SQLを使った列の追加方法について解説していきます。
Transact-SQLを利用するにあたり、先ほど説明したSSMSの「サーバー名」「ユーザー名」「パスワード」の3つが必要となるため、予め用意しておいてください。
ではまず、Windowsならコマンドプロンプト、Macならターミナルを開いてください。
※今回はWindowsでの解説をしていきますが、ターミナルでも操作は一緒なのでMacの方もこのまま読み進めてください。
プロンプトが開いたら早速「sqlcmd」というコマンドを利用してサーバーを開きます。
sqlcmdは”SQL Command”の略です。
サーバーを接続するためには必ず必要となるコマンドなので覚えておいてください。
このコマンドの基本的な記述は次の通りです。
sqlcmd -S [Server_name] -U [user_name] -P [Password]
またsqlcmdで使用しているハイフンの付いた文字の意味は次の通りとなっています。
- -S = サーバー名
- -U = ユーザー名
- -P = パスワード
これでコマンドプロンプトとサーバーの接続が完了していると思います。
まず使用するデータベースを選択する必要があるので、確認も兼ねて次のコマンドを入力してみましょう。
USE [database_name]; GO
正しく接続されていれば「データベース コンテキストが ‘[database_name]’ に変更されました。」と表示されます。
これで準備は整ったので、次からは列の追加方法について解説していきます。
ALTER TABLEとADDを使う
transact-SQLで列を追加するためには「ALTER TABLE」と「ADD」という二つの命令句を使用します。
ALTER TABLEはデータベーステーブルの列に何かしらの変更(追加 / 変更 / 削除)をする場合に必ず使用する命令句です。
追加なら「ADD」、定義変更は「UPDATE」、削除は「DROP」をセットで使用しますが、今回は”列の追加”についての記事なので、ADDを使って解説を進めます。
またALTER TABLEの記述ルールは次のようになっています。
ALTER TABLE [table_name] ADD [column_name] [data_type] [NULL or NOT NULL] [default] [first]/[after [target column_name]]
ADDの後にあるステータスは必要に応じて使用してください。
各ステータスの説明は次の通りです。
- column_name = 列名
- data_type = データ型
- NULL or NOT NULL = NULL許容
- default = デフォルト値の指定
では早速、実際に追加してみましょう。
// 今回使用しているサンプルテーブルの構造 id name ------- ---------- ALTER TABLE sample_table ADD age int GO id name age ------- ---------- ------------
データベーステーブルに新たに列が追加されたことが確認できました。
1点注意すべきは、Transact-SQLでコマンドを使用して基本的な列の追加を行った場合、列は末尾に追加されます。
もし列を任意の位置に差し込みたい場合にはSSMSを使用するしかないので注意してください。
複数の列を同時に追加する場合
複数のカラムを追加する場合には、カンマで区切ることでまとめて追加することが出来ます。
// 今回使用しているサンプルテーブルの構造 id name ------- ---------- ALTER TABLE dbo.sample_table ADD age int, flug int NOT NULL default 1, job nchar(50) GO id name age flug job ------- ---------- ------------ -------- ------------
結果を見ると複数の列が一つのクエリで追加されていることが確認できます。
まとめ
いかがでしたか?
今回は「SQLで列を追加」について二つの方法を紹介しました。
Transact-SQLもケースによっては利用することがあると思います。
両方しっかりとマスターしておくと環境の変化で困ることがなくなりますので、しっかりとマスターしておきましょう。