[CS]リレーショナルデータベースDay-49


データベースが必要


  • In-Memory
    プログラムが停止している場合でも、必要に応じてデータを受信できるように、データを予期せぬ状況から保護します.

  • File I/O
  • 欠点:データが必要になるたびに、ファイル全体を読み込む必要があります.ファイルが大きいほど、操作が困難になり、効率が低下するのがファイルI/Oの大きな欠点です.
    欠点:ファイルが破損したり、複数のファイルを同時に処理する必要があるなど複雑でデータ量が大きいほど、データのロードが困難になります.
    一方、リレーショナル・データベースには複数のテーブルがあり、SQLのデータのロードが容易になります.
    (データベースは、特定のフォーマットのファイルや大量のデータを格納するだけではありません.)

    SQLの概要


    データベース言語.主にリレーショナル・データベースで使用されます.
    たとえば、SQL構文は、MySQL、Oracle、SQLite、PostgreSQLなどのさまざまなデータベースで使用できます.
    SQLはデータベースのプログラミング言語です.クエリーをデータベースに送信して、必要なデータをインポートまたは挿入できます.データは、構造化テーブルを使用するデータベースで使用できます.
    SQLを使用できるデータベースとは異なり、固定されていないデータ構造のデータベースをNoSQLと呼びます.テーブルを使用せずに、データを異なる形式で保存します.
    ex) MongoDB
    SQLを使用するには、データ構造が固定されている必要があります.

    クエリーとは?


    入力したクエリーはクエリーです.既存のデータを検索語でフィルタします.したがって、クエリは、格納されたデータをフィルタリングするためのクエリ文と見なすことができる.

    SQL Basics


    デフォルトのクエリー文

  • Select
  • Where
  • And, Or, Not
  • Order By
  • Insert Into
  • Null Values
  • Update
  • Delete
  • Count
  • Like
  • Wildcards
  • Aliases
  • Joins
  • Left Join
  • Right Join
  • Inner Join
  • Group By
  • データベース用語

  • SQL Create DB
  • SQL Drop DB
  • SQL Create Table
  • SQL Drop Table
  • SQL Alter Table
  • SQL Not Null
  • SQL Unique
  • SQL Primary Key
  • SQL Foreign Key
  • SQL Default
  • SQL Auto Increament
  • SQL Dates
  • データベース関連コマンド


    データベースの作成

    CREATE DATABASE 데이터베이스_이름;

    データベースの使用


    データベースを使用してテーブルを作成したり、テーブルを変更したり、テーブルを削除したりするには、まずコマンドを発行する必要があります.
    USE 데이터베이스_이름;

    テーブルの作成


    USEを使用してデータベースを選択した場合は、テーブルを作成できます.
    idは、プライマリ・キーを使用して自動的にインクリメントされ、nameフィールド名ではフィールド・タイプが文字列(最大255個)である必要があり、emailフィールド名ではフィールド・タイプが文字列(最大255個)である必要があります.
    CREATE TABLE user(
        id int PRIMARY KEY AUTO_INCREMENT,
        name varchar(255),
        email varchar(255)
    );
    作成後、DESCRIBEコマンドを使用してテーブル情報を表示します.

    FROM


    テーブルに関連する操作は入力する必要があります.FROMの後ろには、結果をエクスポートするデータベーステーブルがあります.
    SELECT 특성 FROM 테이블_이름;
    すべてのプロパティを適用する場合は、*を使用します.
    SELECT * FROM 테이블_이름;

    WHERE


    フィルタとして使用されるクエリー文.WHEREはオプションです.
  • 特定の値を検索するコマンド
  • SELECT 특성 FROM 테이블_이름 WHERE 특성 = "특정 값";
    特定の値を含まない値を検索する
  • SELECT 특성 FROM 테이블_이름 WHERE 특성 <> "특정 값";
  • 特定値以上のデータをフィルタリングする場合、
  • .
    SELECT 특성 FROM 테이블_이름 WHERE 특성 > "특정 값";
  • 特定の値に一致するデータをフィルタリングするときに「IN」を使用します.
  • SELECT 특성 FROM 테이블_이름 WHERE 특성 IN "특정 값";

    ORDER BY


    返されたデータ結果をソートおよび出力する基準を決定します.
  • のデフォルトのソートは昇順です.
  • SELECT * FROM 테이블_이름 ORDER BY 특성;
  • 降順で並べ替えたい場合は、DESCを貼り付けます.
  • SELECT * FROM 테이블_이름 ORDER BY 특성 DESC;

    LIMIT


    出力結果のデータ数を決定できます.オプションで、クエリ文の最後に追加します.
    SELECT * FROM 테이블_이름 LIMIT 200;

    DISTINCT


    SELECT DISTINTを使用すると、独自の値を得ることができます.
    SELECT DISTINCT 특성 FROM 테이블_이름;

    INNER JOIN


    2つ以上のテーブルを共通の部分を基準に接続します.
    SELECT * FROM 테이블_1 JOIN 테이블_2 ON 테이블_1.특성 = 테이블_2.특성;
    この場合、特性は同じである必要があります.

    ACID


    取引

  • データベース状態の論理機能を変換し、コマンド(クエリー)を含むワークユニット
  • データベース・トランザクションが発生した場合の信頼性の確保(理由)

  • A:Atomicity(原子性)
    1つのトランザクションでは、すべての演算が成功または失敗する必要があります.

  • C:一貫性
    トランザクションの前後で、データベースは一貫性を保つ必要があります.

  • I:Isolation(隔離、孤立)
    各トランザクションは独立しており、相互検証や演算に影響を与えることはできません.

  • D:Durability(継続)
    成功したトランザクションのログは記録され、永続的に保持されます.
  • 構造化クエリー言語と非構造化クエリー言語の違い


    作成方法、格納された情報のタイプ、および格納方法は異なります.

  • リレーショナル・データベースでは、テーブルの構造とデータ型を事前に定義でき、テーブルの定義内容に一致するデータのみを挿入できます.

  • リレーショナル・データベースは、ロー(row)列(col)からなるデータベースにデータを格納します.各カラムには属性の情報が格納され、各ローには各カラムのデータ型に一致するデータが格納されます.
  • SQLは特定のフォーマットに従うため、入力したデータが正確であれば、データの使用は簡単です.(表の関係を直感的に理解します.)
    ex) MySQL, Oracle, PostgresSQL, MariaDB
    逆に、NoSQLとは固定データのないデータベースのこと.NoSQLにアーキテクチャがないとは限りません.リレーショナル・データベースは、データの入力時にモードに一致する必要がありますが、NoSQLはデータの取得時にモードに基づいてデータを読み込みます.これは、データを書き込む際に固定的な方法がないという意味ではありません.データの入力方法は、データの読み取りに影響します.
    ex) MongoDB

    SQLとNoSQLは何を使うべきですか?


    完璧な答えはない.ユーザーの要求に応じて、サービス設計に従うべきである.NoSQLは拡張性と速度に優れていますが、SQLベースのデータベースのパフォーマンスを向上させるサービスもあります.異なるケースに応じて適切なデータベースを選択することが望ましい.

    SQLベースのデータベースのCaseの使用

  • データベースのACID属性を遵守する必要があります
    データベース・トランザクションによるステータスの変更を実行する場合は、セキュリティが必要です.SQLは、データベースとのインタラクションを正確に決定することができるため、データの処理中に発生する可能性のある異常を低減し、データの整合性を保護することができます.
  • そのため、すべての金融サービス(電子商取引を含む)のためにソフトウェアを開発するには、データベースのACID属性を遵守する必要があります.(通常はSQLリレーショナル・データベースを使用します.)
  • ソフトウェアで使用されるデータは構造化され、一貫しています.
    大規模なサーバを必要とせずに一貫したデータを使用している場合は、通常、リレーショナル・データベースが使用されます.
  • NoSQLベースのデータベースのCaseの使用


  • 格納されているデータ量は大きく、ほとんどまたはまったくデータ構造がありません.
    構造化されていないデータが多数必要な場合は、NoSQLを適用するとより効果的になる可能性があります.

  • クラウドコンピューティングとストレージスペースの活用
    面倒をかけずに拡張できるNoSQL

  • サービスの迅速な導入中に、データ構造が頻繁に更新されます.
    NoSQLデータベースでは、アーキテクチャを事前に準備する必要がなく、迅速な開発に役立ちます.データ構造を頻繁に更新する必要がある場合は、NoSQLベースの非リレーショナル・データベースを使用すると、スキーマを変更する必要があるリレーショナル・データベースよりも適切です.