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

SQLServerデータベースの主キー制約とは-SQLServer/T-SQLチュートリアルパート54

    主キー制約とは:

    主キー制約は、レコード/行の一意性を確保するために作成されます。主キー制約は、列がNull値を許可しない限り、単一または列のセットで作成できます。
    1)主キー制約は、まだ存在しない場合、デフォルトでクラスター化インデックスを作成します> 新しいテーブルを作成していて、主キーを使用して列を追加したとすると、クラスター化インデックスが作成されます。
    以下の例では、テーブルdbo.Customerを作成し、主キー制約としてCustomerIdを追加しています。作成されるインデックスのタイプを確認しましょう。
    USE YourDatabaseName
    GO
    
    CREATE TABLE dbo.Customer (
        Customerid INT PRIMARY KEY
        ,FName VARCHAR(100)
        ,LName VARCHAR(100)
        ,SSN VARCHAR(10)
        )
     
     sys.indexesシステムビューをクエリして、インデックス情報を取得できます
    SELECT *
    FROM sys.indexes
    WHERE object_name(object_id) = 'Customer'
     
     このテーブルには以前はクラスターインデックスがなかったため、クラスター化インデックスが作成されていることがわかります。クラスター化インデックスの名前に気づき、SQLServerによって生成されます。会社が使用している命名規則/標準に従って、インデックスに適切な名前を付けることを常にお勧めします。  

    2)クラスター化インデックスが列、プライマリにすでに作成されている場合キーは一意のインデックスを作成します クラスタ化インデックスがテーブルの1つまたは複数の列にすでに存在し、主キーを作成しようとすると、一意の非クラスタ化が作成されます。
    dbo.Customerテーブルを削除して再作成しましょう。 Null値を受け入れる列にクラスター化インデックスを作成できないため、Null以外の列を定義する必要があります。
    USE YourDatabaseName
    GO
    Drop table dbo.Customer
    GO
    
    CREATE TABLE dbo.Customer (
        Customerid INT Not Null
        ,FName VARCHAR(100)
        ,LName VARCHAR(100)
        ,SSN VARCHAR(10) Not Null
        )
    
    --Create Clustered Index on SSN Column
    CREATE CLUSTERED INDEX IX_Customer_SSN 
        ON dbo.Customer (SSN); 
    
    
    --Create Primary Key on CustomerID
    Alter Table dbo.Customer
    Add Constraint Pk_Customer_CustomerId Primary Key(CustomerId)
     
     
     
     sys.indexesシステムビューを使用して、どのタイプのインデックスが作成されるかを確認しましょう。 SSNで作成したクラスター化インデックスが1つあり、主キー制約によって作成される一意の非クラスター化インデックスが1つあるはずです。
    SQLServerの主キー制約とは-SQLServer/TSQLチュートリアル

    ビデオデモ:SQLServerの主キー制約とは何ですか。主キーの作成方法

    1. MINまたはMAXにnull値を含めるにはどうすればよいですか?

    2. エラー「ORA-01789:クエリブロックの結果列の数が正しくありません」を修正しました

    3. MySQLデータベースをバックアップする方法を学ぶ

    4. SQLAlchemyORMを使用した一括挿入