Mee's Engineer Blog

PHPエンジニアの技術ブログ

SQL Server

SQLServerでIdentityが設定されているテーブルをコピーする方法

SQLServerで本番環境DBのテーブルデータを、試験環境DBのテーブルにコピーする必要がありました。 その際、対象テーブルにIdenityが設定されていた場合、普通にコピーすると採番が再設定されてしまうので 下記の方法で対応しました。 table_1 → コピー元テー…

ログインログからログイン数を集計するクエリ

会員制のシステムでは、大抵ログインログがあるかと思います。 そこからログイン数を集計するクエリはMySQLとSQL SERVERで若干違います。管理ID(id)とログイン時間(login_date)がフィールドに用意されているログインログテーブル(login_log)から アク…

charとvarcharとncharとnvarcharの違い

結構よく使うけれど、ついつい忘れがちなのが char、varchar、nchar、nvarcharの取り扱い方の違い。すごく簡単に説明すると char→文字数固定。全角非推奨。 varchar→最大文字数固定(未満でもOK)。全角非推奨。 nchar→文字数固定。全角半角関係なし。 nvarc…

テーブル数をカウントするクエリ

DBのテーブル情報を棚卸する際に、DBのテーブル数を確認したくなりました。 その際には以下の様なクエリを実行するといいです。MySQL SELECT * FROM sysobjects WHERE xtype = 'u'SQLServer SELECT COUNT(*) FROM `information_schema`.`tables` WHERE `tabl…

SQL ServerでLIMIT句を利用する

DBから指定の数だけレコードを引っ張ってくる際に、MySQLではLIMIT句を使えば簡単にできましたが SQL Serverはひと工夫が必要です。 /* テーブルAからname順に最初の10件のデータを取得する */ SELECT TOP 10 * FROM テーブルA ORDER BY name /* テーブルAか…

別テーブルのデータを引用コピーしたい場合

新しく作成したテーブルの特定のフィールドに、既に存在している別テーブルの特定フィールドのデータを引用コピーしたい、 そんな事がありました。そういう時にどんなUPDATE文を作ればいいのかというと、下記のようになります。UPDATEをかけたいテーブル → …

DB別ユーザーリスト表示クエリ

DBのアクセスユーザー情報を参照したい時に一覧を表示するためのクエリです。MySQL SELECT Host, User, Password FROM mysql.user; SQL Server Management Studio SELECT * FROM sys.server_principals WHERE TYPE IN ('S') AND name NOT LIKE '%##%' ORDER …

SQL Server Management StudioでExcelファイルのデータをインポートする方法

業務中30000レコード程あるデータの更新を依頼され、それがExcelファイルで渡されました。 SQL Server Management StudioではExcelファイルをコピー&ペースト(以下コピペ)でinsertできる機能が備わっているようです。①insertするテーブルのフィールド数と…