メモの日々


2022年07月11日(月) [長年日記]

[db][dev][howto][windows] SQL Serverにコマンドラインでアクセス

SQL Serverにはsqlcmdコマンドが付属していて、コマンドラインからSQL(を拡張したTransact-SQL)を発行できる。

データベース名を変更する例をメモ。

PS C:\> sqlcmd -S localhost\インスタンス名 -U ユーザ名

1> select name from sys.databases
2> go

1> alter database [古い データベース名] modify name = [新しい データベース名]
2> go
  • goが面倒。
  • データベース名にスペースが含まれている場合、上のように名前を角括弧で囲えば処理ができるようになる。

2022年07月29日(金) [長年日記]

[db] SELECT文で非表示にするカラム名の方を指定したい

テーブルから一部のカラムを除いた検索をしたいときに、その除く方のカラム名を指定して検索したいことがある(対象テーブルのカラム数がとても多いときなど)。

でも通常のSQLではそのような指定の仕方はできないようだ。が、

の回答は使えると思った。

  1. 検索したいテーブルを一時テーブルにコピーする
  2. 一時テーブルから不要なカラムを削除する
  3. 一時テーブルに対してカラム名に「*」を指定して検索する

これで長々とカラム名を羅列せずに済む。

-- SQL Server用のSQL
-- 検索したいテーブルを一時テーブルにコピーする
select * into #tmp from tableA;
-- 一時テーブルから不要なカラムを削除する
alter table #tmp drop column columnA;
-- 一時テーブルに対してカラム名に「*」を指定して検索する
select * from #tmp;
-- 要らなくなったら一時テーブルを削除
drop table #tmp;

SQL Serverではテーブル名を「#」一つではじめるとローカル一時テーブルになると知った。