SQL Server:SSMSE
SSMSE の基本的な使い方
- SSMSE
- Microsoft SQL Server Management Studio Express は、Transact-SQL の使用の他、SQL Server の各操作を GUI ベースで容易に操作可能な SQL Server の管理ツール。
SSMSE を使用した Transact-SQL の操作は別途記載済み。
ここでは、SSMSE で SQL文に拠らない簡単な操作方法のメモを記載する。
Transact-SQL の index はこちら
[ 編集 ] ▲上へ
まとめと補足
SSMSE の管理機能を使ってもデータベースの作成から操作までの手順が、SQL文 による操作手順とほぼ同じである。GUI で操作できるため容易に操作が出来て便利である。
SQL Server に限らず、データベース操作を調べる、学習するにあたって避けられないのが、専門用語。意味が判らなければ如何に優れた説明、書籍を参考にしても・・・ちんプン・・・となる。
一般的に統一された用語なので、まず覚えておくべき。
テーブル作成時のテータ型は、SQL文使用時の並べ替えなどが必要な場合、よく考えて決定する必要がある。
後でデータの追加やデータ型の変更できたり自由度が高いのでどうにでもなるが、最低限の知識が無いとデータファイルを作成するのにも手間惑うことになる。
データベース用語集
- SQL(Structured Query Language)
- DBMS のデータ読書・操作を行うための対話型汎用言語。ただし DBMS 事に方言はある。
DBMS へ対話的に命令を遅れる他、ストアドプロシージャと呼ばれる一連の作業を登録したスクリプト?として実行するとか・・・。 - データベース
- データファイル&データ管理システムの1セット。
- DBMS(Data Base Management System)
- データを管理するシステム。名前の通り・・・データに対する要求応答とかセキュリティとか・・・ database file に対する OS のような、データ処理要求に対する Web サーバーのようなもの・・・?
一般敵に RDBMS として使う場合が殆ど?(と思う) - RDBMS(Relational DataBase Management System )
- 単一構造のテーブルだけでなく、関連した統一データについては別テーブルを準備し、メインデータの管理やサイズ縮小が出来るような複数データテーブルを組み合わせた DBMS ・・・でいいと思うが・・・。
※例:顧客マスタを作る際にマスターテーブルの他、都道府県テーブルを別途準備してリレーションさせデータ構造を最適化する・・・とか、商品マスタにメーカ(仕入先)マスタを関連付けるとか・・・。 - スキーマ(schema)
- 列の属性・制約・テーブル間のリレーションなどの定義。
外部スキーマ、概念スキーマ、内部スキーマなど・・・。
定義とか概念とか・・・。 - トランザクション
- トランザクション処理・・・複数アクセス時のデータ整合性を保持(保証)するために1クッション置くような中間にデータ・・・?事無く処理可能な場合データベースファイルへ処理が反映され、何れか失敗すれば双方破棄されやり直しを要求するような目的もある。他にトランザクションファイルとか・・・。
[ 編集 ] ▲上へ
SQL Server 2005 のデータ型
(※覚書)たとえばソートする場合 char なら OK だが、verchar や Text だと NG のようである。
しかし、同一レコード中に可変長データが混在するのは問題無い様である。多分別領域の該当ポイントを保持するような仕組み(固定フィールド)なのではないか?
標準 SQL | SQL Server 2005 | |||
SQL99 | 分類 | データ型 | 説明 | |
int | tinyint | 0 ~ 255 までの整数 (MySQL に有) | ||
SMALLINT | 〃 | smallint | (2byte) -32,768 ~ 32,767 までの整数 | |
INTEGER / INT | 〃 | * | int | (4byte) -2,147,483,648 ~ 2,147,483,647 までの整数 |
〃 | bigint | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 までの整数 (MySQLに有) | ||
DECIMAL | decimal / numeric | decimal | -10^38+1 ~ 1038-1 までの固定長有効桁数と総数点部桁数の数値データ | |
NUMERIC | 〃 | * | numeric | decimal型と同じ |
REAL | 数値 | real | (4byte) 単精度浮動小数点 | |
DOUBLE PRECISION | 〃 | (8byte) 倍精度浮動小数点 | ||
FLOAT | 〃 | ? | float | |
money and smallmoney | money | 通貨単位の 10,000分の1までの精度で、-2^63 ~ 2^63-1 までの金額データ | ||
〃 | * | smallmoney | 通貨単位の 10,000分の1までの精度で、-214,748.3648 ~ +214,748.3647 までの金額データ | |
CHARACTER / CHARA | 文字列型 | * | char | sort ok:8,000 文字以内の固定長 Unicode 以外の文字データ |
CHARACTER VARYING / VARCHAR | 〃 | * | varchar | ng sort:8,000 文字以内の可変長 Unicode 以外の文字データ |
CHARACTER LARGE OBJECT / CLOB | 〃 | * | text | ng sort:2,147,483,647 文字以内の可変長の Unicode 以外のデータ |
? | verchar(max) | |||
NATIONAL CHARACTER | Unicode 文字型 | nchar | 4,000 文字以内の固定長 Unicode データ | |
NATIONAL CHARACTER VARYING | 〃 | nvarchar | 4,000 文字以内の可変長 Unicode データ | |
NATIONAL CHARACTER LARGE OBJECT | 〃 | ntext | 1,073,741,823 文字以内の可変長 Unicode データ | |
? | nvarchar(max) | |||
※n〜*** の変数は、Unicode として扱うという他に、半角、全角にかかわらず1文字として扱うという特徴がある。まあ、Unicode なので当然といえば・・・ってな感じですが・・・。 | ||||
BIT | bit | bit | 1 or 0 の整数データ型 (標準と違?) | |
BIT VARYING | ||||
BOOLEAN | 真理値型 | True / False -> bit 型で代用 | ||
バイナリ型 | binary | 8,000 byte 以内の固定長バイナリデータ | ||
〃 | * | varbinary | 8,000 byte 以内の可変長バイナリデータ | |
〃 | * | image | 2,147,483,647 byte 以内の可変長バイナリデータ | |
? | varbinary(max) | |||
BINARY LARGE OBJECT / BLOB | varbinary , image varbinary(max) 等が対応? | |||
DATE | 日付型 | SQL Server 2008 対応済み | ||
TIME | 時刻型 | 〃 | ||
日付・時刻型 | ? | datetime | ||
〃 | ? | smalldatetime | ||
TIMESTAMP | 時刻印 | ? | timestamp | |
INTERVAL | 時間隔データ型 | |||
XML | ? | xml | ||
その他データ型 | cursor | カーソルへの参照を格納するデータ型 | ||
〃 | sql_variant | text型、ntext型、timestamp型、sql_variant型を除き、SQL Server でサポートされる各種データ型 | ||
〃 | table | 皇族処理に備えた結果セットを格納する特別なデータ型 | ||
〃 | uniqueidentifier | グローバル一意識別子(GUID)を格納する | ||
※SQL99 のデータ型・SQL Server のデータ型は参考までの近似を表にしただけなので必ずしも一致するものでは無い。(と思う) |
※かなりアバウトなので → http://www.e-typedesign.co.uk/japan/sqlserver/2005... 参照
隠しデータ型?(システム用?)もあるようで、Phone flag とか?固有データベースでユーザー型作るとデータベース固有に登録される? → ピンポォ〜ンです。
SQL Server 2005 / 2008 の違い
- SQL Server のデータ型はかなり変わっているとかいないとか?・・・未確認。
この辺かな? http://msdn.microsoft.com/ja-jp/library/ms172136.a...
※2008 に date / time 型が新設されている。2005 では datetime 型のみ。
- 以下 SQL文 は 2008 で使えるが、2005 で NG
insert into table_name ( user_no , user_name , yosingaku , keiyakubi ) values ( 1 , '山田 太郎' , 500000 , '2002/4/1' ) , ( 2 , '大伴 三郎' , 300000 , '2003/3/3' ) , ( 3 , '山本 仁' , 1000000 , '2005/12/1' ) , ( 5 , '横山 紀子' , null , null )
※この記述は 2008 で追加されたもの。2005 ではフィールドレコード数だけ insert 文を記述しないとエラー。
- 2008 「MERGE」ステートメント の新規サポート
MERGE INTO T1 /* << Table_Name >> T1 */ /* 元データ問合/絞込要求? */ USING ( SELECT ・・・ FROM T2 ) mg /* << Ailias_Name? >> mg */ ON T1.field_a = mg.field_a /* 結合条件 */ /* 書換(更新)記述 */ WHEN MATCHED THEN UPDATE SET T1.field_b = mg.field_b , T1.field_c = mg.field_c , … WHERE ( 条件 ) /* 有れば・・・ */ /* 追加要素列記 */ WHEN NOT MATCHED THEN INSERT VALUES ( mg.field_a , mg.field_b , mg.field_c , … ) ;※こんな感じと思うが・・・内容非保証!
※USING 句に csv ファイルを指定することも可能。但しフォーマットファイル(fmt)の事前準備と特別な記述が必要。多分 xls , mdb なども可能と思う(・・・これなら fmt が必要ない?・・・)が・・・、思うだけかも。
- 2008 クエリエディッタ上で「インテリセンス(自動補完)」機能が追加された。
他の開発環境で有って当たり前の機能だが、日頃「うざ〜」とか思っていても無いと不便かも・・・。
- 2005 で不便と感じてるのが、クエリエディタで行番号が表示出来ないこと。
外部エディタ割り当て機能が無い?のも不便。2008 での対応状況は不明。
- 2008 / 2005 の操作環境は、基本的にマイナーチェンジのようで、ほぼ共通するらしい。
2008 で強力になったのがセキュリティ関連とバックアップ機能らしい。
[ 編集 ] ▲上へ
SSMSE の GUI 操作による作成・登録・更新操作
データベース作成
- データベースエンジン接続
- オブジェクトエクスプローラの「データベース」を右クリック
- 「新しいデータベース」→開いたウィンドウでデータベース名を入力
- 「OK」を押すか「スクリプト」押下で作成された SQL を実行する。
テーブルのを作成
- オブジェクトエクスプローラの「データベース」を展開
- 作成したデータベースを展開→「テーブル」を選択して右クリック
- 「新しいテーブル」で表示されるテーブル編集ウィンドウから登録する。
- 「列名」「データ型」「Nullを許容」の登録と必要に応じ列のプロパティなどを変更。
- 適当な名称をつけて保存するとテーブルが追加される。
データの登録と更新
- 作成したテーブルを右クリック
- テーブルを開く→レコードを登録可能な表が表示される。
- 各フィールド(セル)への直接入力、レコード登録、セル編集・レコード削除などが可能。
- レコードが確定されるとそのままデータに反映する。
SQL文の実行
- 「新しいクエリ」→SQL編集画面が開く。
- 実行したい SQL文を入力 → 「実行」
- 「エディッタでクエリをデザイン」ボタンを使うと、SQL 文を選択しながら作れるウィンドウが開く。
SSMSE によるデータベースのバックアップと復元
完全/差分バックアップ
- [オブジェクトエクスプローラー] → バックアップするデータベースを「右クリック」
- [タスク] → [バックアップ] → [データベースのバックアップ]ダイアログ表示
- 完全バックアップならそのまま [OK] でバックアップされる。
- 差分をとるなら[差分]を選んで [OK] 押下。
バックアップデータの復元(リストア)
復元作業は、データベースを使っていると出来ない作業なので、初めに開いているデータベース画面などは全て閉じてしまう必要がある。
- データベース画面を全て閉じる。
- バックアップと同じ手順でコンテキストメニュー表示
- [タスク] → [復元] → [データベース] → [データベースの復元]ダイアログ表示
- [オプション/] → [復元オプション] → [既存のデータベースを上書きする] → OK で復元される。
- select 文で復元されていることを確認。
※複数接続があって、接続ユーザーがいる場合。→ どうもエラーが出るらしいので、実稼動システムの場合、多分 SQL Server の該当データベース接続サービスを障害復旧の名目で停止する必要があると思われる。実際こうした必要が発生すると案外厄介な復旧(復旧ポイント以降の差分に対する手作業も含めると眩暈がする・・・)作業が必要となりそう。
SQL Server その他の覚書
※以下項目は SQL Server:関連メモ(覚え書き) へ移動しました。
- 「ネットワーク接続の有効化」
- 「sqlcmd コマンドで cmd 上で SQL 文を実行」
- 「スクリプトをバック グラウンドで実行」
- 「コマンドプロンプト使用上のワンポイント」
SSMSE による SQL ステートメントの自動生成
- 1).既存テーブルから自動生成する
- オブジェクトエクスプローラ → 対象テーブル右クリック
- コンテキストメニューから [名前を付けてテーブルをスクリプト化] → スクリプト化したい SQL ステートメントを選択。
- CREATE, SELECT, INSERT ・・・ など実行可能なものを選択。
- INSERT 等の場合、INSERT ステートメントの雛型のような(テンプレ?)のが自動生成されるので、少し直せば楽ちん!
- ***.sql として別途使用するとか・・・便利かも。
- 2).クエリデザイナを使って SQL 文を生成する
- [新しいクエリ] → [エディタでクエリをデザイン]
- 表示された[テーブルの追加]ダイアログから表示に使うテーブルを選択
- 各種項目を設定 → [OK] で SQL 文が自動で生成される
- [実行] → エラーや設に定誤りが無ければ ・・・ SQL 文を書かなくても実行可能。
※いづれもきれいなソースを出すことは、殆ど無い(汚い)。
[ 編集 ] ▲上へ
データベース・SQL文・SQLクエリー(query)関連リンク
参考になる書籍など
・SQL Server ・データベース・プログラミング ・ASP.NET ・SQL全般
- SQL Server 専門・学習・試験対策の良書
wiki内関連ページ
- SQL文:SQLステートメント
- SQLステートメント
- SQLクエリー
- SQL文:ユニオンクエリー
- SQL文:パススルークエリー?
- SQL文:データ定義クエリー
- SQL文:サブクエリー?
- VB2005リファレンス(覚え書き)
- Microsoft SQL Server 関連
[ 編集 ] ▲上へ
2009年08月21日(金) 20:50:28 Modified by sakura_momo2