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

SQL制約とそのさまざまなタイプとは何ですか?

    データベースには大量のデータが存在するため、データベースに存在するデータの精度と信頼性を高めることは、私たち全員にとって非常に重要です。そうですね、SQL制約は同じものを維持するために使用されます。使用できる制約にはさまざまな種類があります。この記事では、これらの制約について例を挙げて説明します。

    この記事では、次のトピックについて説明します。

    1. 制約とは何ですか?
    2. SQLで使用可能な制約:
        • NOTNULL制約
        • 一意の制約
        • チェック制約
        • デフォルトの制約
        • INDEX制約

    SQL制約とは何ですか?

    SQL制約は、テーブル内のデータのルールを指定するために使用されます。これらは、データベースに保存する必要のあるデータの種類を制限するために使用され、データベースに保存されるデータの精度と信頼性を高めることを目的としています。

    したがって、制約により、データのトランザクションに関して違反がないことを確認しますが、違反は見つかりません。アクションは終了します。

    適用できる制約には2つのタイプがあります:

    1. 列レベルの制約 –これらの制約は単一の列に適用されます
    2. テーブルレベルの制約 –これらの制約は、完全なテーブルへの適用です

    この記事を進めて、さまざまなタイプの制約を理解しましょう。また、理解を深めるために、次の表を検討します。

    利用可能なさまざまなSQL制約:

    NOTNULL制約

    NOT NULL制約は、列がNULL値を持つことができないようにします。表データベースの作成中または変更中に、NOTNULL制約を使用できます。

    CREATETABLEに対するNOTNULL制約

    上記のStudentsテーブルを作成するクエリを記述します。StudentIDとStudentNameをNULLにすることはできません。

    CREATE TABLE Students( 
    StudentID int NOT NULL, 
    StudentName varchar(255) NOT NULL, 
    Age int, City varchar(255) );
    

    ALTERTABLEのNOTNULL制約

    上記のStudentsテーブルを変更するクエリを記述します。ここで、DOBの新しい列を追加する必要があり、NULL値を含めることはできません。

    ALTER TABLE Students ADD COLUMN DOB year NOT NULL;
    

    SQL制約に関するこの記事に進んで、UNIQUE制約の使用方法を理解しましょう。

    一意の制約

    UNIQUE制約は、列のすべての値が一意であることを確認するために使用されます。 UNIQUE制約は、複数の列またはで単一の列のいずれかで使用できます。これとは別に、先に進み、UNIQUE制約を使用して既存のテーブルを変更できます。

    注:

    1. テーブルの作成中に、列の一意性を保証するために、PRIMARYKEY制約には自動的にUNIQUE制約があります。
    2. テーブルには多くのUNIQUE制約を含めることができますが、単一の主キー制約を含めることができます。

    例:

    CREATETABLEに対する一意の制約

    列StudentID、StudentName、Age、Cityを持つテーブルStudentsを作成するクエリを記述します。ここで、StudentIDはレコードごとに一意である必要があります。

    CREATE TABLE Students ( 
    StudentID int NOT NULL UNIQUE, 
    StudentName varchar(255) 
    NOT NULL, Age int, City varchar(255) );
    

    複数の列にUNIQUE制約を指定する

    一意の制約に名前を付け、それを複数の列に定義するには、次の例を参照してください。

    StudentID、StudentName、Age、Cityの各列を持つStudentsテーブルを作成するクエリを記述します。ここで、StudentIDとStudentNameは、レコードごとに一意である必要があります。

    CREATE TABLE Students ( 
    StudentID int NOT NULL, 
    StudentName varchar(255) NOT NULL, 
    Age int, 
    City varchar(255) CONSTRAINT Stu_Example 
    UNIQUE (StudentID,StudentName) );
    

    ここで、Stu_Exampleは、StudentIDとStudentNameに適用される一意の制約に付けられた名前です。

    ALTERTABLEのUNIQUE制約

    StudentID列にUNIQUE制約を追加する必要があるStudentsテーブルを変更するクエリを記述します。

    ALTER TABLE Students ADD UNIQUE (StudentID);
    

    同様に、複数の列でUNIQUE制約を使用し、それに名前を付ける場合は、次のようにクエリを記述できます。

    ALTER TABLE Students ADD CONSTRAINT Stu_Example UNIQUE (StudentID,StudentName);
    

    UNIQUE制約を削除します

    列に指定された制約を削除するには、制約を追加するときに言及した可能性のある命名規則を使用できます。

    たとえば、上記で作成したUNIQUE制約を削除するクエリを作成する必要がある場合は、次のようにクエリを作成できます。

    ALTER TABLE Students DROP CONSTRAINT Stu_Example;
    

    次のSQL制約に関するこの記事では、CHECK制約の使用方法を理解しましょう。

    チェック制約

    CHECK制約は、列のすべての値が特定の条件を満たすことを確認します。

    例:

    CREATETABLEのチェック制約

    StudentID、StudentName、Age、Cityの各列を持つStudentsテーブルを作成するクエリを記述します。ここでは、都市はムンバイでなければなりません。

    CREATE TABLE Students ( 
    StudentID int NOT NULL UNIQUE, 
    StudentName varchar(255) NOT NULL, 
    Age int, 
    City varchar(255)CHECK (City==’Mumbai’) );
    

    複数の列のチェック制約

    複数の列でチェック制約を使用するには、次のようにクエリを記述できます。

    StudentID、StudentName、Age、Cityの各列を持つStudentsテーブルを作成するクエリを記述します。ここでは、市はムンバイである必要があり、学生の年齢は19歳以上である必要があります。

    CREATE TABLE Students ( 
    StudentID int NOT NULL, 
    StudentName varchar(255) NOT NULL, 
    Age int, 
    City varchar(255)CHECK (City==’Mumbai’ AND Age>19));
    

    同様に、ALTERTABLEコマンドでもCHECK制約を使用できます。以下を参照してください。

    ALTERTABLEのチェック制約

    Studentテーブルを変更するクエリを記述します。ここで、CHECK制約をCity列に追加する必要があります。ここでは、都市はムンバイでなければなりません。

    ALTER TABLE Students ADD CHECK (City=='Mumbai');
    

    同様に、名前を付けてCHECK制約を使用する場合は、次のようにクエリを記述できます。

    ALTER TABLE Students ADD CONSTRAINT StuCheckExample CHECK (City=='Mumbai');
    

    CHECK制約を削除します

    列に指定された制約を削除するには、制約を追加するときに言及した命名規則を使用できます。

    たとえば、上記で作成したCHECK制約を削除するクエリを作成する必要がある場合は、次のようにクエリを作成できます。

    ALTER TABLE Students DROP CONSTRAINT StuCheckExample;
    

    SQL制約に関するこの記事に進んで、DEFAULT制約の使用方法を理解しましょう。

    デフォルトの制約

    DEFAULT制約は、値が指定されていない場合の列のデフォルト値のセットに言及するために使用されます。他の制約と同様に、CREATEおよびALTERテーブルコマンドでこの制約を使用できます。

    StudentID、StudentName、Age、Cityの各列を持つStudentsテーブルを作成するクエリを記述します。また、City列に値が挿入されていない場合は、自動的にデリーを含める必要があります。

    CREATE TABLE Students ( 
    StudentID int NOT NULL, 
    StudentName varchar(255) NOT NULL, 
    Age int, 
    City varchar(255)DEFAULT ‘Delhi’);
    

    ALTERTABLEのDEFAULT制約

    ALTER TABLEコマンドでDEFAULT制約を使用するには、次のようにクエリを記述できます。

    ALTER TABLE Students ADD CONSTRAINT StuDefauExample DEFAULT 'Mumbai' FOR City;
    

    DEFAULT制約を削除します

    DEFAULT制約を削除するには、次のようにALTERTABLEコマンドを使用できます。

    ALTER TABLE Students ALTER COLUMN City DROP DEFAULT;
    

    次のSQL制約に関するこの記事では、INDEX制約の使用方法を理解しましょう。

    INDEX制約

    INDEX制約は、テーブルにインデックスを作成するために使用されます。これらのインデックスを使用すると、データベースからデータを非常にすばやく作成および取得できます。

    構文

    --Create an Index where duplicate values are allowed
    CREATE INDEX IndexName
    ON TableName (ColumnName1, ColumnName2, ...ColumnName(N));
    
    --Create an Index where duplicate values are not allowed
    CREATE UNIQUE INDEX IndexName
    ON TableName (ColumnName1, ColumnName2, ...ColumnName(N));
    

    StudentNameを格納するStudentsテーブルにStu_indexという名前のインデックスを作成するクエリを記述します。

    CREATE INDEX Stu_index ON Students (StudentName);
    

    同様に、テーブルからインデックスを削除するには、インデックスの名前を指定してDROPコマンドを使用する必要があります。

    DROP INDEX Students.Stu_index;
    

    上記の制約とは別に、主キーと外部キーも制約と見なされます。 PRIMARY KEY制約は、特定の列がすべてのタプルを一意に識別する方法に関する制約を定義するために使用されます。 FOREIGN KEY制約は、関係に基づいて2つのテーブルを関連付けるために使用されます。

    これで、この記事は終わりです。データベースに存在するさまざまな制約の使用方法を理解していただければ幸いです。 MySQLについて詳しく知り、このオープンソースのリレーショナルデータベースについて知りたい場合は、MySQLDBA認定トレーニングをご覧ください。 インストラクター主導のライブトレーニングと実際のプロジェクトの経験が付属しています。このトレーニングは、MySQLを深く理解し、主題をマスターするのに役立ちます。

    質問がありますか? SQL制約に関するこの記事のコメントセクションでそれについて言及してください。折り返しご連絡いたします。


    1. SQL ServerのLIMITとOFFSETに相当しますか?

    2. Oracle:パフォーマンスの一括収集

    3. SQL Server(T-SQL)でUnixタイムスタンプを返す方法

    4. ORA-12519 TNS:適切なサービスハンドラーが見つかりません