sql >> データベース >  >> RDS >> Sqlserver

SQL ServerでのSCHEMA_ID()のしくみ

    SQL Serverでは、SCHEMA_ID()を使用できます 指定されたスキーマのIDを返す関数。具体的には、この関数はスキーマ名に関連付けられたスキーマIDを返します。

    SCHEMA_NAME()のようなものです ただし、名前の代わりにスキーマのIDを返します(IDの代わりにnameパラメーターを受け入れます)。

    関数にスキーマ名を渡さない場合は、呼び出し元のデフォルトスキーマのIDが返されます。

    例1-デフォルトのスキーマを返す

    発信者のデフォルトスキーマのIDを返す例を次に示します。

    SELECT SCHEMA_ID() AS Result;
    

    結果:

    +----------+
    | Result   |
    |----------|
    | 1        |
    +----------+
    

    他のスキーマ名を明示的に指定しなかったため、これにより呼び出し元のデフォルトスキーマのIDが返されます。

    スキーマ名とともにここにあります。

    SELECT 
      SCHEMA_ID() AS [Schema ID],
      SCHEMA_NAME() AS [Schema Name];
    

    結果:

    +-------------+---------------+
    | Schema ID   | Schema Name   |
    |-------------+---------------|
    | 1           | dbo           |
    +-------------+---------------+
    

    例2–別のスキーマを指定する

    この例では、スキーマ名を関数に明示的に渡します。

    SELECT SCHEMA_ID('Dimension') AS Result;
    

    結果:

    +----------+
    | Result   |
    |----------|
    | 6        |
    +----------+
    

    これは、DimensionというスキーマのIDが6であることを示しています。

    例3–データベースの切り替え

    前の例は、Dimensionというスキーマを持つデータベースで実行されたばかりです。別のデータベースに切り替えると、別のスキーマIDを取得するか、IDをまったく取得しない可能性があります。

    これが私の言いたいことの例です。

    USE WideWorldImportersDW;
    SELECT SCHEMA_ID('Dimension') AS Result;
    
    USE Music;
    SELECT SCHEMA_ID('Dimension') AS Result;
    

    結果:

    Changed database context to 'WideWorldImportersDW'.
    +----------+
    | Result   |
    |----------|
    | 6        |
    +----------+
    (1 row affected)
    Changed database context to 'Music'.
    +----------+
    | Result   |
    |----------|
    | NULL     |
    +----------+
    (1 row affected)
    

    2番目の結果はNULLを返します MusicデータベースにDimensionというスキーマがないためです。

    例4–WHERE句内

    SCHEMA_ID()の使用 WHERE 句は、スキーマで結果をフィルタリングするための便利な方法です。

    SQL Serverでは、さまざまなシステムビューがschema_idを使用します スキーマIDを格納する列ですが、スキーマ名は格納しません。したがって、結果をスキーマでフィルタリングする場合は、スキーマIDを知っている必要があります。ここでSCHEMA_ID() 非常に便利です。 sys.schemasで参加する必要がなくなります。 スキーマ名を計算するためだけに表示します。

    SCHEMA_ID()の使用例を次に示します。 WHERE 条項。

    USE WideWorldImportersDW;
    SELECT 
      name,
      type_desc 
    FROM sys.objects
    WHERE schema_id = SCHEMA_ID('Dimension');
    

    結果:

    Changed database context to 'WideWorldImportersDW'.
    +----------------------------------------------------+------------------------+
    | name                                               | type_desc              |
    |----------------------------------------------------+------------------------|
    | City                                               | USER_TABLE             |
    | PK_Dimension_City                                  | PRIMARY_KEY_CONSTRAINT |
    | DF_Dimension_City_City_Key                         | DEFAULT_CONSTRAINT     |
    | Customer                                           | USER_TABLE             |
    | PK_Dimension_Customer                              | PRIMARY_KEY_CONSTRAINT |
    | DF_Dimension_Customer_Customer_Key                 | DEFAULT_CONSTRAINT     |
    | Date                                               | USER_TABLE             |
    | PK_Dimension_Date                                  | PRIMARY_KEY_CONSTRAINT |
    | Employee                                           | USER_TABLE             |
    | PK_Dimension_Employee                              | PRIMARY_KEY_CONSTRAINT |
    | DF_Dimension_Employee_Employee_Key                 | DEFAULT_CONSTRAINT     |
    | Payment Method                                     | USER_TABLE             |
    | PK_Dimension_Payment_Method                        | PRIMARY_KEY_CONSTRAINT |
    | DF_Dimension_Payment_Method_Payment_Method_Key     | DEFAULT_CONSTRAINT     |
    | Stock Item                                         | USER_TABLE             |
    | PK_Dimension_Stock_Item                            | PRIMARY_KEY_CONSTRAINT |
    | DF_Dimension_Stock_Item_Stock_Item_Key             | DEFAULT_CONSTRAINT     |
    | Supplier                                           | USER_TABLE             |
    | PK_Dimension_Supplier                              | PRIMARY_KEY_CONSTRAINT |
    | DF_Dimension_Supplier_Supplier_Key                 | DEFAULT_CONSTRAINT     |
    | Transaction Type                                   | USER_TABLE             |
    | PK_Dimension_Transaction_Type                      | PRIMARY_KEY_CONSTRAINT |
    | DF_Dimension_Transaction_Type_Transaction_Type_Key | DEFAULT_CONSTRAINT     |
    +----------------------------------------------------+------------------------+
    (23 rows affected)
    

    1. MySQLでデータベースとテーブルを作成および削除する方法

    2. Oracle列の自動変更タイムスタンプタイプはありますか?

    3. Postgres:値の合計を選択してから、これをもう一度合計します

    4. SQL SELECT MIN