C# Programming

SQL 2008

データ型・定義

SQL Server 2005ではデータ型が変更になるので、注意が必要です。

1.目次

1.目次
2.SQL Server 2000 のデータ型
3.名前の規則
4.グローバル変数
5.ユーザー定義データ型
6.データの定義
7.完全修飾名
8.DateTime
9.Transact-SQLの要素
10.DBCCステートメント

.SQL Server 2000 のデータ型

 

赤い文字がSQL Server 2000で将来削除される可能性があるデータ型。

青い文字がSQL Server 2005で追加されるデータ型。

分類データ型 SqlDbType説明サイズ
Exact NumericsbigintInt64-2^63 (-9,223,372,036,854,775,808) 〜2^63-1 (9,223,372,036,854,775,807)8 Bytes
intInt32-2^31 (-2,147,483,648) 〜 2^31-1 (2,147,483,647)4 Bytes
smallintInt16-2^15 (-32,768) 〜 2^15-1 (32,767)2 Bytes
tinyintByte0 〜 255(Unsigned)1 Byte
bitBoolean0、1、NULL のいずれか。複数の列がある場合は、8bit ごとにパックされる。可変
decimalDecimal 固定長の有効桁数と小数点以下桁数を指定した固定小数点データ。十進での最大有効桁数は、38桁。デフォルトでは18桁。可変
numericDecimaldecimal型と同じ可変
money Decimal-922,337,203,685,477.5808 〜 922,337,203,685,477.58078 Bytes
smallmoney Decimal- 214,748.3648 〜 214,748.36474 Bytes
Approximate Numericsfloat [ ( n ) ] Double倍精度浮動小数点実数。
- 1.79E + 38 〜 -2.23E - 38,
0,
2.23E -38 〜 1.79E + 38

nは1-53。デフォルトで53。
SQL 2005 では、1<=n<=24の場合は、24の単精度浮動小数点実数として扱われる。25<=n<=53の場合は53として扱われる。

4 Bytes(1<=n<=24)
8 Bytes(25<=n<=53)
real Signle単精度浮動小数点実数。
float(24)と同じ。
-1.18E - 38, 0 and 1.18E - 38 to 3.40E + 38
4 Bytes
Date and Timedatetime DateTime1753年1月1日 〜
9999年12月31日
精度は、3.33 mSECなので、
01/01/98 23:59:59.999は、
1998-01-02 00:00:00.000に丸められる。
4 Bytes
smalldatetime DateTime1900年1月1日 〜
2079年6月6日
精度は1分なので、'2003-05-08 12:35:29.998'は、12:35に丸められる。
2 Bytes
Character Stringschar [ ( n ) ]String非Unicode固定長文字列。nは、1から8000まで。可変
textString非Unicode可変長文字列。最大2,147,483,647文字まで。
将来削除されるので、varchar(max)を使用すること。
可変
varchar
[ ( n | max ) ]
String非Unicode可変長文字列。nは、1から4000まで。
max の場合の最大ストレージ容量は、2^31-1 bytes。ストレージサイズは、データ量+2 bytes。
可変
Unicode Character Stringsnchar [ ( n ) ]StringUnicode固定長文字列。nは、1~4000まで。可変
ntext StringUnicode可変長文字列。最大30 - 1 (1,073,741,823)文字まで。UNICODE UCS-2 character set。
将来削除されるので、nvarchar(max)を使用すること。
可変
nvarchar
[ ( n | max ) ]
StringUnicode可変長文字列。nは、1から4000まで。
max の場合の最大ストレージ容量は、2^31-1 bytes。ストレージサイズは、データ量+2 bytes。
可変
Binary Stringsbinary [ ( n ) ] Byte[]固定長バイナリデータ。nは、1~8000まで。固定長
varbinary [ ( n| max) ]Byte[]可変長バイナリデータ。nは、1から8000まで。
max の場合の最大ストレージ容量は、2^31-1 bytes。ストレージサイズは、データ量+2 bytes。
可変
imageByte[]可変長バイナリデータ。最大2,147,483,647bytes。
将来削除されるので、nvarchar(max)を使用すること。
可変
Other Data Typescursor  カーソル型。CREATE TABLEの列には使用できない。不明。
timestampByte []行が更新されたときに値が更新されるタイムスタンプとして使われることが多い。

自動生成されるバイナリ数のデータ型。データベース内でのユニーク性が保障されている。

8 bytes
sql_variant  text, ntext, image, timestamp, and sql_variant以外のSQL サーバデータ型をサポートするバリアント型可変。
uniqueidentifierGuid16-byte のGUID (globally unique identifier).16bytes
table テーブル型の関数のリザルトセットとして、使用される特別なデータ型。不明。
xmlXML valuexmlデータを格納するためのデータ型。xmlインスタンスまたxml型の変数を列に格納できる。可変。

.名前の規則

 

種類 説明
ローカル変数 @で始まる。
一時テーブル #で始まる。
一時プロシージャ #で始まる。
グローバルな一時オブジェクト ##で始まる。
グローバル変数 @@で始まる。一部の関数の名前は@@ から始まるので、@@ から始まる名前は使用しないほうがよい。

4.グローバル変数

 

項目 コマンド例
自分のプロセスID SELECT @@spid
プロセス一覧 EXEC sp_who

.ユーザー定義データ型

EXEC sp_addtype birthday, datetime, 'NULL'

-- Create a table using the new data type.
CREATE TABLE employee
   (emp_id         char(5),
   emp_first_name   char(30),
   emp_last_name   char(40),
   emp_birthday      birthday)

.データの定義

1ページの大きさは8KB

行は複数ページまたがることはできない。text, ntext , imageを除く1行に入るデータの最大量は8060バイト。

1エクステント=連続する8ページ。

データベースの最初のエクステントはシステム情報用に予約されている。

ページ0: ファイルヘッダー

ページ1: PFS(ページ空き領域)。

ページ2: GAM(グローバルアロケーションマップ)。割り当てられたエクステントの情報。

ページ3: SGAM(シェアードグローバルアロケーションマップ)。割り当てられた混合エクステントの情報。

.完全修飾名

server.database.owner.object

例:

SELECT * FROM SQL2000.Northwind.dbo.Products
SELECT * FROM Northwind.dbo.Products
SELECT * FROM dbo.Products
SELECT * FROM Products

 
テーブルの指定の仕方
SELECT * FROM [My Table] のようにキーワードを含んだり間にスペースがあるIDを指定する場合には、" " またはかぎ括弧の[ ] で囲む。

正確には、次のようになるが、サーバー名、データベース名、オーナー名は省略可能。
 
[サーバー名].[データベース名].[オーナー名].[オブジェクト名]

コードがみにくくなりますが、バグを避ける意味では、[]付きでフルに指定するのがよいと思います。

.DATETIME

T-SQL スクリプト、ストアド プロシージャ、トリガでは、date または smalldate データ型と文字列データ型間での変換では CONVERT ステートメントのような明示的なスタイル パラメータを使用する。

SELECT *
FROM Northwind.dbo.Orders
WHERE OrderDate = CONVERT(DATETIME, '7/19/1996', 101)

.Transact-SQLの要素

 
   
データ制御言語(DCL:Data Control Language) GRANT, DENY, REVOKE
データ定義言語(DDL:Data Definition Language) CREATE, ALTER, DROP
データ操作言語(DML:Data Manipulation Language) SELECT, INSERT, DELETE, UPDATE

 

10.DBCCステートメント

データベースのコンソールコマンドの役割を果たすものが、DBCCステートメントです。
メンテナンスステートメント 説明
DBCC DBREINDEX インデックスの再構築
DBCC DBREPAIR 使用しない。
DBCC INDEXDEFRAG クラスタ化インデックス、セカンダリインデックスのデフラグ
DBCC SHRINKDATABASE データベースのデータファイルの圧縮

DBCC SHRINKDATABSE (Pubs, 10)
Pubs のファイルの空き領域が 10% になるように圧縮します。

DBCC SHRINKFILE データベースのデータファイルまたはログの圧縮

DBCC SHRINKFILE (DataFile, 1)
DataFileを1MBになるように圧縮します。

DBCC UPDATEUSAGE sysindexesの情報の不一致を報告、訂正する
その他のステートメント  
DBCC dllname (FREE) 拡張ストアドのDLLを開放
DBCC HELP DBCCのヘルプ
例: DBCC HELP ('?')、DBCC HELP ('HELP')
DBCC PINTABLE テーブルをメモリからフラッシュしないようにします。頻繁に使用する小さなテーブルのときに使用する。
DBCC UNPINTABLE PINTABLEのピンをはずして、フラッシュできるようにする。
DBCC ROWLOCK 使用しない。
DBCC TRACEON 指定されたトレースフラグをオンにする
DBCC TRACEOFF 指定されたトレースフラグをオフにする
ステータスステートメント  
DBCC INPUTBUFFER きっと使わない。
DBCC OPENTRAN きっと使わない。
DBCC OUTPUTBUFFER きっと使わない。
DBCC PROCCACHE プロシージャのキャッシュを返す
DBCC SHOWCONTIG 指定されたテーブルのデータとインデックスの断片化に関する情報を表示
DBCC SHOW_STATISTICS テーブルの統計情報を表示
DBCC SQLPERF トランザクションログ領域の使用状況に関する統計情報

例 DBCC SQLPERF( LOGSPACE )

DBCC TRACESTATUS トレースフラグの状態を表示
DBCC USEROPTIONS SETオプションを表示
評価スステートメント  
DBCC CHECKALLOC データベース用ディスクの割り当て構造の一貫性をチェック
DBCC CHECKCATALOG データベースのシステムテーブル内の一貫性、およびテーブル間の一貫性をチェック
DBCC CHECKCONSTRAINTS 制約の整合性チェック
DBCC CHECKDB データベースをチェック
DBCC CHECKFILEGROUP ファイルグループをチェック
DBCC CHECKIDENT テーブルのIDをチェック
DBCC CHECKTABLE テーブルをチェック
DBCC NEWALLOC Obsolete。CHECKALLOCを使用すること。