文系プログラマによるTIPSブログ文系プログラマによるTIPSブログ文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。普段MySQLを使っているのですが、今回SQLServerを触りました。(;^ω^)<待て待て待て!!と思う事に遭遇しました。指定位置にカラムが追加できないのです。正確にはできるのですが、MySQLのようにコマンド1発ではできません。基本的にSQLServerはほとんどの操作をGUIで行う事を想定しているようで、ManagementStudioというWindows専用ツール上でしか操作できないものもあります。ManagementStudio上では、一旦新規カラムを追加して、マウスでドラッグドロップして自由に位置を変更する事ができます。GUI使いたくない・・そもそも私はMacなので、いちいちWindowsを起動しないといけないのが本当に嫌です。ManagementStudioがどうやってカラム位置を変更しているのか、MySQLとどれくらいSQLが違うのか、についてまとめてみます。サンプルケース以下のcreate文を使います。varchar(10));この状態で、カラム2とカラム4の間に、新規にカラム3を追加します。MySQLmysqlの場合は以下のように簡単に追加できます。col2;普通のRDBではこれくらい簡単に指定位置にカラムを追加できます。SQLServer2008SQLServer2008の場合は以下のように追加できます。GOCOMMIT(;^ω^)<何この長さ!?このSQLは、ManagementStudioでGUI上で自動生成されたSQLです。やっていることは、一旦最終形のテーブルを新規に作成し、現行テーブルから新テーブルにデータをinsertし、最後にテーブル名を入れ替えることで、カラム追加を擬似的に再現しています。こんな長いコマンドを実行しないといけないのです。前述の自動生成されたSQLは特に問題ありません。MySQLでも、新旧テーブルを入れ替える手法はよく使われます。ここで問題なのは、コマンド1発で実行できない点にあるのです。col2;これを実行すると、内部的に先ほどの長いSQLに変換して実行してくれるならOKです。それができなからダメなんです。こんな長いコマンドを逐一入力させちゃダメです。実はその長いSQLにも問題があって、「Tmp_test」という名前が自動で振られてますが、既にその名前のテーブルがあったらどうなるのかな、と思います。したら空気呼んでTmp2_testとかしてくれるのでしょうかね。2とか3とかでなく、完全にユニークなテーブル名になるように配慮するべきだと私は思いますが。私はあらゆる操作をコマンドラインのみで操作したい派です。SQLServerはMSの意向??で、GUIを使って欲しいようです。(latin1_swedish_ci...以外と原因に気づかなかったりするんですよねこれ。03:24昔は業務系SIer、今はベンチャー企業でプログラムを書いています。mapDispatchToPropsを撲滅するReactオススメ書籍React自体の基礎、AtomicDesignの適用、CSSの運用手法の歴史的な経緯とメリットデメリット、Reduxの基礎、redux-sagaによる非同期処理、サーバサイドレンダリング、テスト、lint、を学ぶ事ができます。啓太マイナビ出版AmazonAngularオススメ書籍Angularを学ぶなら絶対以下がおすすめです!バインディング、ディレクティブ、パイプ、フォーム、コンポーネント、サービス、ルーティング、httpClientによる非同期httpリクエスト、テスト、angular-cli、を非常に丁寧な説明で網羅的に解説しています。技術評論社AmazonSEOオススメ書籍SEOを学ぶなら絶対以下がおすすめです!クローラに対して何をどうすればサイトの巡回効率・速度を上げる事ができるのか、どういったマークアップをする事が標準仕様なのか。巷に溢れる業者による経験則に基づくオレオレSEO情報は一切無く、全てGoogle等のオフィシャルな情報に基づいて何をすべきか、どんな手段があるのかを解説されています。プログラマな私が業務で行った施策が多く書かれており、プログラマ寄りで高度な内容となっており、巷のビギナー向けの曖昧な情報集とは一線を画しています。Amazonアソシエイト・プログラムの参加者です。reserved.引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。