[CS]リレーショナルデータベースDay-49
5870 ワード
データベースが必要
In-Memory
プログラムが停止している場合でも、必要に応じてデータを受信できるように、データを予期せぬ状況から保護します.
File I/O
欠点:ファイルが破損したり、複数のファイルを同時に処理する必要があるなど複雑でデータ量が大きいほど、データのロードが困難になります.
一方、リレーショナル・データベースには複数のテーブルがあり、SQLのデータのロードが容易になります.
(データベースは、特定のフォーマットのファイルや大量のデータを格納するだけではありません.)
SQLの概要
データベース言語.主にリレーショナル・データベースで使用されます.
たとえば、SQL構文は、MySQL、Oracle、SQLite、PostgreSQLなどのさまざまなデータベースで使用できます.
SQLはデータベースのプログラミング言語です.クエリーをデータベースに送信して、必要なデータをインポートまたは挿入できます.データは、構造化テーブルを使用するデータベースで使用できます.
SQLを使用できるデータベースとは異なり、固定されていないデータ構造のデータベースをNoSQLと呼びます.テーブルを使用せずに、データを異なる形式で保存します.
ex) MongoDB
SQLを使用するには、データ構造が固定されている必要があります.
クエリーとは?
入力したクエリーはクエリーです.既存のデータを検索語でフィルタします.したがって、クエリは、格納されたデータをフィルタリングするためのクエリ文と見なすことができる.
SQL Basics
デフォルトのクエリー文
データベース用語
データベース関連コマンド
データベースの作成
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 특성 > "특정 값";
SELECT 특성 FROM 테이블_이름 WHERE 특성 IN "특정 값";
ORDER BY
返されたデータ結果をソートおよび出力する基準を決定します.
SELECT * FROM 테이블_이름 ORDER BY 특성;
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)からなるデータベースにデータを格納します.各カラムには属性の情報が格納され、各ローには各カラムのデータ型に一致するデータが格納されます.
ex) MySQL, Oracle, PostgresSQL, MariaDB
逆に、NoSQLとは固定データのないデータベースのこと.NoSQLにアーキテクチャがないとは限りません.リレーショナル・データベースは、データの入力時にモードに一致する必要がありますが、NoSQLはデータの取得時にモードに基づいてデータを読み込みます.これは、データを書き込む際に固定的な方法がないという意味ではありません.データの入力方法は、データの読み取りに影響します.
ex) MongoDB
SQLとNoSQLは何を使うべきですか?
完璧な答えはない.ユーザーの要求に応じて、サービス設計に従うべきである.NoSQLは拡張性と速度に優れていますが、SQLベースのデータベースのパフォーマンスを向上させるサービスもあります.異なるケースに応じて適切なデータベースを選択することが望ましい.
SQLベースのデータベースのCaseの使用
データベース・トランザクションによるステータスの変更を実行する場合は、セキュリティが必要です.SQLは、データベースとのインタラクションを正確に決定することができるため、データの処理中に発生する可能性のある異常を低減し、データの整合性を保護することができます.
大規模なサーバを必要とせずに一貫したデータを使用している場合は、通常、リレーショナル・データベースが使用されます.
NoSQLベースのデータベースのCaseの使用
格納されているデータ量は大きく、ほとんどまたはまったくデータ構造がありません.
構造化されていないデータが多数必要な場合は、NoSQLを適用するとより効果的になる可能性があります.
クラウドコンピューティングとストレージスペースの活用
面倒をかけずに拡張できるNoSQL
サービスの迅速な導入中に、データ構造が頻繁に更新されます.
NoSQLデータベースでは、アーキテクチャを事前に準備する必要がなく、迅速な開発に役立ちます.データ構造を頻繁に更新する必要がある場合は、NoSQLベースの非リレーショナル・データベースを使用すると、スキーマを変更する必要があるリレーショナル・データベースよりも適切です.
Reference
この問題について([CS]リレーショナルデータベースDay-49), 我々は、より多くの情報をここで見つけました https://velog.io/@cptkuk91/CS82テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol