2

Microsoft の SQL Server management Studio を使用してデータベース内の特定のテーブルを右クリックし、クエリ ウィンドウにスクリプト テーブルを作成すると、テーブル作成コードがウィンドウに表示されます。次のようなことに気づきます

CREATE TABLE [dbo].[Login](
[UserId] [int] NOT NULL,
[LoginName] nvarchar COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
など
)

これは、他の DBMS でも表示される方法ですか?
これは、使用されている DBMS に固有のものですか?
それは単なる空想的な見方ですか?

列名とテーブル名の前後に「 [ ] 」が使用されているのはなぜですか。単純な TSQL 定義は、
CREATE TABLE table_name (
Column#1 Datatype NOT NULL,
Column#2 Datatype NOT NULL UNIQUE,
-- etc...
)のようなものになります。

私のばかげた質問を気にしないでください。

前もって感謝します、
バラジS

4

2 に答える 2

2

それらは識別子の引用です。コンテンツをデータベース識別子 (列名、テーブル名など) としてマークし、スペース、特殊文字、および予約語を識別子として使用できるようにします。通常、これらはいずれも識別子に表示されないため、厳密に言えば、ID 引用符は不要です。特殊文字または予約語が原因でテキストを解析できない場合は、ID 引用符が必要です。

自動化されたツールは、ID 引用符なしでいつ逃げられるかを判断するよりも、常に ID 引用符を使用する方が簡単です。

データベース製品が異なれば、ID 引用符に使用される文字も異なります。これにはバックティック (`) が使用されることがよくあります。

于 2010-07-07T03:52:41.240 に答える
0

Larry Lustig の優れた回答に加えて、SQL Server の「スクリプトの作成」機能は、パーサー フレンドリであることを最優先する SQL コードを吐き出します。そのため、二重引用符ではなく、優先される区切り識別子文字を常に角括弧で使用するのはそのためです。 SQL-92 標準で使用されます (SQL Server コードは、を使用して標準の区切り識別子をサポートできますが、SET QUOTED_IDENTIFIER ONこれを出力のオプションとして指定できるとは思いません)。人間の目にやさしいこと (空白、改行などの使用) は、二次的な考慮事項にすぎません。

于 2010-07-07T07:50:01.010 に答える