最近、マイクロソフトのSQL Serverを使っています。
SQL ServerのコマンドラインインターフェースであるT-SQLの簡単な使い方は次の通りです。
SQL Serverのコマンドラインインターフェース(CLI)であるT-SQLを使ってみる
SQL Serverのコマンドラインインターフェース(CLI)を使って、初めてT-SQLを使ってみたのですが、MySQL上がりの私にとっては、何もかもが、とにかく奇妙でした。
何が奇妙かと言うと、文末にセミコロン(;) は必要ない...
これまで使ってみたところ、T-SQLは、コマンドラインインターフェースがMySQLやMariaDBに比べて使いにくいです。
例えば、特定のカラム(列)の後ろにカラムを追加するのに、MySQLでは次のように「AFTER」の後にカラム名を指定します。
1 |
ALTER TABLE tbl_name ADD [COLUMN] column_definition AFTER col_name; |
T-SQLでは、このようなことは出来ないようです。
では、どうすればよいのでしょうか?
SQL Serverでカラムをテーブルの最後に追加する方法
SQL Serverでも、既存のテーブルへのカラム追加は、ALTER TABLE ADD構文で行います。
例えば、ユーザーテーブル(TBL_USER)に年齢カラム(Age)を追加する場合は以下の通りです。
1 |
ALTER TABLE TBL_USER ADD Age int DEFAULT 0 |
この場合、新規のカラムは最後に追加されます。
SQL ServerのT-SQLで、MySQLのように任意のカラムの後に、新規のカラムを追加する方法を調べてみると。。。
なんと!びっくり!
用意されていません。。。
SQL Serverでカラムをテーブルの任意の位置に追加する方法
それでは、任意の位置にカラムを追加するにはどうすればよいのでしょうか。
かなりめんどくさいですが、次の方法を行います。
- テーブルをバックアップ
- テーブルを削除
- テーブルを再作成
- 再作成したテーブルにバックアップからリストア
具体的には次のように行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
-- ①ユーザーテーブルのデータをテンポラリテーブルにバックアップ SELECT * INTO #Temp FROM TBL_USER -- ②ユーザーテーブルを削除 DROP TABLE TBL_USER -- ③年齢カラムを追加してユーザーテーブルを再作成 CREATE TABLE TBL_USER ( UserNo int NOT NULL DEFAULT (0), Name nvarchar(255) NOT NULL DEFAULT (), Age int NOT NULL DEFAULT (0), Addr nvarchar(255) NOT NULL DEFAULT (), Tel nvarchar(255) NOT NULL DEFAULT (), CONSTRAINT TBL_USER_PK PRIMARY KEY CLUSTERED ( UserNo ) ) -- ④テンポラリテーブルからバックアップデータを復元 INSERT INTO TBL_USER SELECT Tmp.UserNo, Tmp.Name, 0, Tmp.Addr, Tmp.Tel FROM #Temp Tmp -- ⑤テンポラリテーブルを削除 DROP TABLE #Temp |
なんとめんどくさい。。。
↓SQL Server関連の書籍として以下があります。
↓SQL Server関連の他の書籍はこちらをご覧ください。
SQL Server関連の書籍
最後まで読んでいただきありがとうござました。
この記事が気に入っていただけたらシェアしてくれると嬉しいです。
コメント