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

SQLでテーブルを作成する方法–PostgresとMySQLのクエリ例

    SQLでテーブルを作成する方法を知っている 重要で基本的な概念です。

    このチュートリアルでは、SQLについて説明します。 CREATE TABLEの構文 PostgreSQLとMySQLの両方のコード例を使用したステートメント。

    基本的なCREATE TABLE 構文

    CREATE TABLEの基本的な構文は次のとおりです。 ステートメント:

    CREATE TABLE table_name(
    	column1 data_type column_constraint,
        column2 data_type column_constraint,
        column3 data_type column_constraint,
        column4 data_type column_constraint,
        ... etc
    );

    最初の部分では、CREATE TABLEから始める必要があります ステートメントの後に、作成するテーブルの名前が続きます。

    教師情報のテーブルを作成したい場合は、次のように記述します。

    CREATE TABLE teachers();

    括弧内に、テーブルの列を作成するための情報を追加します。括弧を忘れると、エラーメッセージが表示されます。

    CREATE TABLE teachers;

    括弧の終わりにあるセミコロンは、それがSQLの終わりであることをコンピューターに示します。 声明。これは、ステートメントターミネータと呼ばれることがあります。

    MySQLとは ストレージエンジン?

    MySQLによると ドキュメント:

    ストレージエンジンは、さまざまなテーブルタイプのSQL操作を処理するMySQLコンポーネントです。

    MySQL これらのストレージエンジンを使用して、データベースでCRUD(作成、読み取り、更新、削除)操作を実行します。

    MySQLで 、テーブルに使用するストレージエンジンのタイプを指定するオプションがあります。 ENGINEを省略した場合 句の場合、デフォルトはInnoDBになります。

    CREATE TABLE table_name(
    	column1 data_type column_constraint,
        column2 data_type column_constraint,
        column3 data_type column_constraint,
        column4 data_type column_constraint,
        ... etc
    )ENGINE=storage_engine;

    IF NOT EXISTSとは 条項?

    IF NOT EXISTSというオプションの句があります これにより、作成するテーブルがデータベースにすでに存在するかどうかがチェックされます。その句をテーブル名の直前に配置できます。

    CREATE TABLE IF NOT EXISTS teachers();

    テーブルがすでに存在する場合、コンピューターは新しいテーブルを作成しません。

    IF NOT EXISTSを省略した場合 句を指定して、データベースにすでに存在するテーブルを作成しようとすると、エラーメッセージが表示されます。

    この例では、最初にteachersというテーブルを作成しました。しかし、次のコマンドで同じテーブルを作成しようとすると、エラーが発生します。

    CREATE TABLE IF NOT EXISTS teachers();
    CREATE TABLE teachers();
    テーブルに列を作成する方法

    CREATE TABLEの括弧内 ステートメントでは、作成する列の名前とそのデータ型および制約を一覧表示します。

    これは、school_idの4つの列を追加する方法の例です。 、nameemail およびage 私たちの教師のテーブルに。各列名はコンマで区切る必要があります。

    CREATE TABLE teachers(
    	school_id data_type column_constraint, 
    	name data_type column_constraint,
        email data_type column_constraint, 
    	age data_type column_constraint
    );
    

    MySQLによると ドキュメント:

    MySQLにはテーブルあたり4096列のハード制限がありますが、特定のテーブルの実効最大値はこれより少ない場合があります。正確な列制限は、いくつかの要因によって異なります。

    小さいMySQLで作業している場合 個人的なプロジェクトの場合は、テーブルの列数を超えることを心配する必要はありません。

    PostgreSQLのドキュメントによると、テーブルごとに1600列の制限があります。 MySQLに似ています 、正確な制限は、ディスク容量またはパフォーマンスの制限によって異なります。

    SQLのデータ型

    テーブルに列を作成するときは、テーブルにデータ型を割り当てる必要があります。データ型は、列内の値の型を記述します。

    SQLのデータ型の6つの一般的なカテゴリは次のとおりです :

    1. 数値(int、float、serial、decimalなど)
    2. データと時間(タイムスタンプ、データ、時間など)
    3. 文字と文字列(char、varchar、textなど)
    4. Unicode(ntext、nvarcharなど)
    5. バイナリ(バイナリなど)
    6. その他(xml、テーブルなど)

    この記事では、すべてのデータ型について説明するわけではありませんが、人気のあるデータ型のいくつかについて説明します。

    PostgreSQLの完全なリストは次のとおりです データ型とMySQL データ型。

    SERIALとは およびAUTO_INCREMENT

    PostgreSQLで 、SERIAL データ型は、作成される新しい行ごとに1ずつ自動的にインクリメントされる整数です。

    SERIALを追加できます school_idの直後 教師テーブルの列。

    school_id SERIAL
    

    MySQLで 、AUTO_INCREMENTを使用します SERIALの代わりに 。この例では、INT 整数を表すデータ型が使用されます。

    school_id INT AUTO_INCREMENT

    Teachersテーブルに5行を追加した場合、出力にはschool_idの1、2、3、4、5の数値が表示されます。 整数は新しい行ごとに自動的に1ずつ増加するため、列。

    VARCHARとは データ・タイプ?

    VARCHAR データ型は、最大文字長を設定できる可変文字列長です。

    これは、VARCHARの使用例です。 nameのデータ型 およびemail 教師テーブルの列。数字の30は最大文字長です。

    name VARCHAR(30) column_constraint,
    email VARCHAR(30) column_constraint,

    SQLの列制約

    これらは、テーブル列内のデータに適用されるルールです。

    以下に、より一般的な列の制約のいくつかのリストを示します。

    • PRIMARYKEY-このキーはテーブルの一意の識別子として機能します
    • FOREIGN KEY-このキーは、列の値が別のテーブルにも存在することを確認します。これは、テーブル間のリンクとして機能します。
    • UNIQUE-列のすべての値は一意である必要があります
    • NOTNULL-値をNULLにすることはできません。 NULLは値がないことです
    • CHECK-ブール式に対して値をテストします

    PRIMARYの例 およびFOREIGN キー

    Teachersテーブルに、PRIMARY KEYを追加できます。 school_idに 列。

    これは、PostgreSQLでのコードの外観です:

     school_id SERIAL PRIMARY KEY

    これは、MySQLでのコードの外観です:

    school_id INT AUTO_INCREMENT PRIMARY KEY

    PRIMARY KEYに複数の列が必要な場合 、次に、列を作成した直後に追加します。

    CREATE TABLE table_name(
    	column1 data_type column_constraint,
        column2 data_type column_constraint,
        column3 data_type column_constraint,
        column4 data_type column_constraint,
        ... etc
        PRIMARY KEY (column1, column2)
    );

    あるテーブルを別のテーブルにリンクする場合は、FOREIGN KEYを使用できます。 。

    主キーがdistrict_idのdistrict_employeesというテーブルがあるとします。 。 PostgreSQLでのコードは次のようになります。

    CREATE TABLE district_employees(
       district_id SERIAL PRIMARY KEY,
       employee_name VARCHAR(30) NOT NULL,
       PRIMARY KEY(district_id)
    );

    Teachersテーブルでは、外部キーを使用して、district_employeesテーブルを参照できます。

    district_id INT REFERENCES district_employees(district_id),
    
    CREATE TABLE teachers(
        school_id SERIAL PRIMARY KEY,
        district_id INT REFERENCES district_employees(district_id),
        column1 data_type column_constraint,
        column2 data_type column_constraint,
        column3 data_type column_constraint,
        column4 data_type column_constraint,
        ... etc 
    );

    NOT NULLの例 、CHECK およびUNIQUE

    nullの値がないことを確認したい場合は、NOT NULLを使用できます。 制約。

    name VARCHAR(30) NOT NULL

    CHECKを使用できます すべての教師が18歳以上であることを保証するための制約。 CHECK 制約は、ブール式に対して値をテストします。

    age INT CHECK(age >= 18)

    値の1つがその条件を満たさない場合、エラーメッセージが表示されます。

    UNIQUEを使用できます すべてのメールが一意であることを確認するための制約。

    email VARCHAR(30) UNIQUE
    

    これは、教師テーブルの最終結果です:

    これは、PostgreSQLでのコードの外観です:

    CREATE TABLE teachers(
    	school_id SERIAL PRIMARY KEY,
    	name VARCHAR(30) NOT NULL,
        email VARCHAR(30) UNIQUE,
    	age INT CHECK(age >= 18)      
    );

    これは、MySQLでのコードの外観です:

    CREATE TABLE teachers(
    	school_id INT AUTO_INCREMENT PRIMARY KEY,
    	name VARCHAR(30) NOT NULL,
        email VARCHAR(30) UNIQUE,
    	age INT CHECK(age >= 18)      
    );

    この記事を楽しんでいただき、SQLの旅に幸運をお祈りします。



    1. C#プログラム内でストアドプロシージャを実行する方法

    2. Round()がPostgreSQLでどのように機能するか

    3. AndroidSQLiteワイルドカード

    4. MySQLで週ごとの成長率を計算する方法