[データベース]リレーショナル・データベースSQL、MySQL


In-Memory


JSで変数を作成して保存すると、プログラム終了時にそのプログラムが使用するデータも消えてしまいます.格納されたデータはプログラムの実行に依存する.

File I/O


ファイルを読み込むように動作する形式.
短所
  • データが必要になるたびに、ファイル全体が読み込まれます.
  • ファイルが破損したり複雑になったりするほど、データ量が大きいほど、データのロード作業が困難になります.
  • ACID


    これは、データベースで発生するトランザクションのセキュリティを保証するために必要な性質です.
    たとえば、銀行から送金されたオブジェクトの場合、金額や顧客名などのすべての演算が正常に送金された場合、または1つの演算が失敗した場合、送金を阻止するために失敗します.
    ACIDの性質は以下の通りである.

    げんしせい


    トランザクション内のすべてのタスクは、結果を予測するためにすべて成功またはすべて失敗する必要があります.

    コンシステンシ


    トランザクションが発生した後、データベースのステータスは以前と同じように有効である必要があります.

    Isolation


    すべてのトランザクションは、他のトランザクションとは独立している必要があります.

    Durability(継続)


    トランザクションが成功した場合は、トランザクションのログを保持する必要があります.
    ランタイムエラーまたはシステムエラーが発生した場合は、そのレコードは永続的なレコードである必要があります.

    リレーショナル・データベース


    CSVファイルまたはExcelテーブルを1つのテーブルとして保存できます.
    一度に複数のテーブルを持つことができるので、データのロードが容易です.

    SQL (Structured Query Language)


    データベースプログラミング言語の1つで、主にリレーショナル・データベースに使用されます.
    データベースにクエリーを送信して、必要なデータを取得または挿入できます.
    SQLを使用するには、データの構造が固定されている必要があります.
    固定データ構造を持たないデータベースをNoSQLと呼びます.
  • 表の構造において予め定義データ型等
  • は、定義に適合するデータ型
  • のみを挿入する.
  • 表間の直観関係
  • SQLベースのリレーショナル・データベースの使用例
  • データベースのACID属性を遵守する必要がある場合、
  • ソフトウェアで使用されるデータは構造化され、一致している:
  • 一般的なリレーショナル・データベース:MySQL、Oracle、SQLite、PostgreSQL

    NoSQL (Non Structured Query Language)


    主に固定データがないデータベースを指し、必ずしもアーキテクチャがないとは限らないが、NoSQLはデータを読み出す際にアーキテクチャに基づいてデータを読み出す.
    データの入力方式によっては、データの読み出しに影響します.
    NoSQLベースの非リレーショナル・データベース構成
  • Key Valueタイプ
  • Documentデータベース
  • Wide-Columnデータベース
  • グラフィックデータベース
  • NoSQLベースの非リレーショナル・データベースの使用例
  • に格納されているデータ量は非常に大きく、ほとんどまたはまったくデータ構造がありません.
  • クラウドコンピューティングとストレージスペース
  • を活用
  • 迅速な導入中にデータ構造を頻繁に更新
    典型的なNoSQL:MongoDB、Casandra

    MySQL


    インストール(MacOS)


    事前にhomebrewをインストールする必要があります.
    プロンプトに次のように入力します.brew install mysql

    サービス開始(MacOS)


    プログラムを実行しないと使用できません.
    次のように入力します.brew services start mysql

    せつぞく


    パスワードを設定する前に接続mysql -u rootパスワードを設定して接続mysql -u root -p

    ログイン失敗

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourPassword';
  • reference: MySQLルートアカウントパスワードの設定
  • SQL構文


    Table


    データベースの多くは、1つ以上のテーブルを含みます.
    各Tableは名前で識別されます.
    データベースで実行するタスクのほとんどは、SQL文で実行されます.

    record


    データベース内のユニットとして処理されるデータのセット.
    1枚のレコードも横の線です.
    行と呼びます.

    演算子


    演算子より大きい説明=等しい>より大きい<等しい>=等しいまたはより大きい<=または等しい<>異なる(一部のバージョンのSQLで使用!=演算子)BEETWEENは、特定の範囲内でLIKEモードを検索し、INcolumnで複合値を指定します.
    SQL reference: W3schools SQL

    Sprint

    SHOW DATABASES; 
    // 모든 데이터베이스의 정보 확인
    
    USE database_name; 
    // 해당 데이터베이스 사용
    
    SHOW TABLES; 
    // 모든 테이블 정보 확인
    
    DESC table_name; 
    // 해당 테이블 구조 확인
    
    SELECT * FROM table_name; 
    // 해당 테이블의 모든 데이터 확인
    
    SELECT table_name.calumn1 FROM table_name 
    // 해당 테이블의 해당 calumn1 데이터만 확인
    
    SELECT * FROM table_name WHERE table_name.calumn1='kim'; 
    // 해당 테이블에서 특정 조건을 만족하는 데이터 찾기 (조건: calumn1의 value가 'kim'이다.)
    
    SELECT * FROM table_name AS byname WHERE byname.calumn1='kim';
    // AS로 별칭을 만들수 있다.
    
    INSERT INTO table_name (calumn1, ...) VALUES (value1,...); 
    // 해당 테이블에 데이터 추가
    
    UPDATE table_name SET table_name.calumn1='value';
    // 해당테이블 calumn1의 value 수정
    SELECT table1.column1 FROM table1
    INNER JOIN table2 ON table1.column4 = table2.column7;
    // table1에서 column1에서 조건에 맞는 record와 table2에서 조건에 맞는 record 리턴
    // (조건: table1의 column4과 table2의 column7중에서 동일한 value)
    SELECT table1.column1 FROM table1
    LEFT JOIN table2 ON table1.column4 = table2.column7;
    // table1에서 column1의 모든 record와 table2에서 조건에 맞는 record 리턴
    // (조건: table1의 column4과 table2의 column7중에서 동일한 value)
    SELECT table1.column1 FROM table1
    RIGHT JOIN table2 ON table1.column4 = table2.column7;
    // table1에서 column1에서 조건에 맞는 record와 table2의 모든 record 리턴
    // (조건: table1의 column4과 table2의 column7중에서 동일한 value)