SQLベース(4)schema


SQLBoltを参照

1. What is a Schema?


In SQL, the database schema is what describes the structure of each table, and the datatypes that each column of the table can contain.
SQLでは、データベース・アーキテクチャは、各テーブルの構造およびテーブル内の各カラムに含まれる可能性のあるデータ型を記述します.

  • データの固定タイプにより、データベースは数百万行または数十億行を効率的かつ一貫して格納できます.

  • パターンの例)
  • CREATE TABLE movies (
        id INTEGER PRIMARY KEY,
        title TEXT,
        director TEXT,
        year INTEGER, 
        length_minutes INTEGER
    );

    2. Inserting new data

  • デフォルト
  • INSERT INTO mytable
    VALUES (value_or_expr, another_value_or_expr, …),
           (value_or_expr_2, another_value_or_expr_2, …),
           …;
    指定
  • 列挿入データ
  • (column, another_column, …)
    VALUES (value_or_expr, another_value_or_expr, …),
          (value_or_expr_2, another_value_or_expr_2, …),
          …;
    場合によっては、不完全なデータがあり、テーブルにデフォルト値をサポートする列が含まれている場合は、行を追加するときに必要な列のスペースを指定してデータを追加できます.
  • の値で式化できます.文字列式は
  • です.
    INSERT INTO boxoffice
    (movie_id, rating, sales_in_millions)
    VALUES (1, 9.9, 283742034 / 1000000);

    3. Updating rows

  • 更新
  • UPDATE mytable
    SET column = value_or_expr, 
        other_column = another_value_or_expr, 
        …
    WHERE condition;
    ✔列と行はいつも対になっている.
    ✔無効な行セットを更新するか、WHEREセクションですべての行を更新するエラー警告を無視します.
    ✔ヒント:常に制約条件(WHERE)を作成してからSELECTクエリでテストを行い、正しい行が更新されていることを確認してから、更新する列/値ペアを作成する
    ex) UPDATE Movies SET Director = "John Lasseter" WHERE Id = 2

    4. Deleting rows


    削除
  • DELETE FROM mytable
    WHERE condition;
    WHEREを無効にすると、すべてのローが削除されます.
    更新と同じエラーに注意!Always read your DELETE statements twice and execute once.
    ex) DELETE FROM Movies WHERE Year < 2005

    5-1. Creating tables

  • を追加
    CREATE TABLE IF NOT EXISTS mytable (
        column DataType TableConstraint DEFAULT default_value,
        another_column DataType TableConstraint DEFAULT default_value,
        …
    );

    新しいテーブルの構造がスキーマとして定義されている場合は、テーブルを作成できます.
    同じカラムが既に存在する場合はerrorが表示されます.従ってIF NOT EXISTSを使用する.

    5-2. 表タイプ条件


    1.ライセンス条件

  • INTEGER, BOOLEAN
    :整数データ型には、数値や年齢などの整数値を格納できます.いくつかの実施形態では、ブール値は0または1の整数値で表示される.
  • FLOAT, DOUBLE, REAL
    :浮動小数点データ型は、測定値や分割値など、より正確な数値データを格納できます.この値に必要な浮動小数点の精度に応じて、異なるタイプの浮動小数点を使用できます.
  • CHARACTER(num_chars), VARCHAR(num_chars), TEXT
    :テキストベースのデータ型は、任意の場所に文字列とテキストを格納できます.異なるタイプの違いは、通常、テキストを使用するときのデータベースの効率をサポートします.
    CHARACTERとVARCHAR(変数文字)タイプは、いずれも格納可能な最大文字数(長い値が遮断される可能性がある)に指定されているため、大きなテーブルの格納とクエリーがより効率的になる可能性があります.
  • DATE, DATETIME
    :SQLでは、テーブル列とイベントデータを追跡するために日付とタイムスタンプを保存することもできます.データを異なる期間で処理することは非常に困難である可能性があります.
  • BLOB
    :最後に、SQLはデータベースのblobにバイナリデータを格納できます.これらの値は通常、データベースに対して不透明であるため、通常、値を正しいメタデータとともに格納して再クエリーする必要があります.
  • 2.制約

  • PRIMARY KEY
    :これは、このカラムの値が一意であることを意味します.各値は、このテーブルの1行を識別できます.
  • AUTOINCREMENT
    :整数値の場合、この値は自動的に入力され、行ごとに挿入されたときに増加します.すべてのデータベースがサポートされているわけではありません.
  • UNIQUE
    :この列の値は一意でなければなりません.したがって、同じ値を持つ他の行とテーブルの他の行は挿入できません.PRIMARY KEYとは異なり、テーブル内のローにはキーは必要ありません.
  • NOT NULL
    :これは、挿入された値がNULLではないことを意味します.
  • CHECK (expression)
    :より複雑な式を実行して、挿入された値が有効かどうかをテストできます.たとえば、値が正の値、特定のサイズより大きい値、特定の接頭辞で始まると判断できます.
  • FOREIGN KEY
    :カラムの各値が他のテーブルのカラムの他の値と一致するかどうかを確認するコンシステンシチェックです.
    たとえば、2つのテーブルにすべての従業員(ID)がリストされ、1つのテーブルにすべての従業員の給与情報がリストされている場合、「FOREIGN KEY」は、給与テーブルの各ローがプライマリ・従業員リストの有効な従業員に対応しているかどうかをチェックします.
  • 6. Altering tables


    : to add, remove, or modify columns and table constraints.
  • Adding columns
  • ALTER TABLE mytable
    ADD column DataType OptionalTableConstraint 
        DEFAULT default_value;
    - MySQL과 같은 데이터베이스들에서 FIRST, AFTER 을 사용해 추가할 열을 지정할 수 있다.
    ex)ALTER TABLE Movies ADD COLUMN Language TEXT DEFAULT "English";-> Add another column named Language with a TEXT data type to store the language that the movie was released in. Ensure that the default for this language is English.
  • Removing columns
  • ALTER TABLE mytable
    DROP column_to_be_deleted;
    -일부 데이터베이스(SQLite 포함)는 이 기능을 지원하지 않는다. 대신 새 테이블을 만들고 데이터를 옮길 수 있다.
  • Renaming the table
  • ALTER TABLE mytable
    RENAME TO new_table_name;

  • 各データベース・インプリメンテーションでは、テーブルの変更方法がサポートされています.したがって、操作を続行する前に、データベース・ドキュメント(MySQL、Postgres、SQLite、Microsoft SQLサーバ)を常に参照することが望ましいです.
  • 7. Dropping tables


    削除
  • 完全テーブル
  • DROP TABLE IF EXISTS mytable;
    場合によっては、すべてのデータとメタデータを含むテーブル全体を削除できますが、この場合はめったにありません.このため、DELETE文とは異なるDROP TABLE文、すなわちデータベースからテーブルパターンを完全に削除することができます.
    CREATE TABLE文と同様に、指定されたテーブルがない場合、データベースにエラーが発生する可能性があるため、IF EXISTSセクションを使用できます.
    また、削除するテーブルの列に他の依存テーブル(FOREGN KEY依存など)が含まれている場合は、すべての依存テーブルを削除する前に、すべての依存テーブルを更新する必要があります.
    ex) DROP TABLE IF EXISTS Movies;