最近更新したページ
2013-10-20
2013-09-29
2013-09-23
2012-01-07
2011-11-09
2011-10-23
2011-10-09
2011-10-01
2011-09-29
2011-09-03
2011-08-07
2011-08-02
2011-07-29
2011-07-10
2011-05-05
2011-05-04
2011-04-24
2011-04-13
2011-04-05
2011-03-26
2011-02-18
2011-02-15
2010-12-26
2010-12-07
2010-12-05
2010-11-23
2010-09-28
2010-09-23
2010-08-26
2010-08-22
2010-07-16
2010-01-17
2010-01-11
2009-10-04
2009-08-21
2009-08-13
2009-06-18
2009-06-01
2009-04-29
2009-02-16
2009-02-11
2009-02-03
2008-07-22
2008-07-21
2008-07-15
2008-07-14
2008-07-13
2008-07-12
2008-07-08
2008-07-05
2008-06-28
2008-06-17
2008-06-05
2008-06-02
2008-06-01
2008-05-29
2008-05-26
2008-05-21
2008-05-19
2008-05-18
2007-10-31
2007-10-27
2007-09-28
2007-09-23
2007-09-17
2007-09-16
2007-09-14
2007-09-11
2007-06-18
2007-04-15
2006-12-21
2006-11-30
2006-11-22
2006-08-17
2006-03-29
2006-03-28
2006-03-27

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 の違い



 ※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.NETSQL全般

  • SQL Server 専門・学習・試験対策の良書





wiki内関連ページ



[ 編集 ] ▲上へ
2009年08月21日(金) 20:50:28 Modified by sakura_momo2




スマートフォン版で見る

×

この広告は60日間更新がないwikiに表示されております。