多くのプログラムは、後で使用するためにデータを保存または保存し、記録されたデータを読み取る必要があります。これを行うには多くの方法がありますが、最も一般的なアプローチは、リレーショナルデータベース管理システムを使用することです。 (RDBMS).MySQLは、ソフトウェア開発プロジェクトで広く採用されている業界標準のオープンソースRDBMSです。このガイドでは、MySQLの概要を説明し、RDBMSの主な概念について説明します。
リレーショナルデータベース(RDBMS)とは何ですか?
データベースは、データを保存および取得するためのアプリケーションです。メカニズムは異なりますが、ほとんどのデータベースは、ユーザーがデータを追加、削除、アクセス、検索、および管理できるようにするAPIを提供します。データベースを使用する代わりに、データをテキストファイルまたはハッシュテーブルに保存できます。ただし、この手法はデータベースを使用するほど高速でも便利でもないため、最近のシステムではほとんど使用されていません。
初期のデータベースアプリケーションは、最新のリレーショナルデータベースに進化しました。 、これにより、ユーザーは大量のデータを保存できます。 RDBMSは、ユーザーに1つの大きなテーブルにデータを格納することを強制しなくなりました。データを分割するためのより構造化された方法を提供し、より効率的なアクセスのために設計されています。 RDBMSアプリケーションは、情報の高速な読み取りと書き込み、および一括転送用に最適化されています。
データベース設計者は、テーブルの観点からデータを概念化して整理します。 、列 、および行 。行はレコードとも呼ばれます 、またはタプル。最新のリレーショナルデータベースは、次の概念を使用してデータを構造化します。
- 各データベースには1つ以上のテーブルが含まれています。
- ユーザーがテーブルを作成するときに、テーブル内の列を同時に指定します。
- 各列は、レコード内の特定の属性またはフィールドを表します。列は、
VARCHAR
などの特定のデータ型のデータを保持するように設計されています 、これは可変長の文字列を表します。 - テーブルには行のクラスターが含まれています。
- テーブル内の各行は、一意のデータベースエントリを表します。行内の各列には、そのエントリに個別のフィールドが含まれています。
- データベーステーブルは、2行2列の行列のようなものです。マトリックス内の各正方形には、データが含まれています。
RDBMSは、ユーザーがキーとインデックスを使用してさまざまなテーブル内およびテーブル間の関係を定義できるため、リレーショナルと見なされます。リレーショナルデータベースを使用すると、ユーザーは主キーを提供または生成できます。 行ごとに。 SQLは、このキーがテーブル内で一意であることを保証できます。これらのテーブルのフィールドは、主キーと外部キーに基づいて相互に関連している可能性があります。これらの関係は、データベースの構造化と整理に役立ち、データ重複の量を制限します。
RDBMSアプリケーションは、常に以下の機能を提供します。個々のアプリケーションは、より多くのオプションを提供する場合があります。
- データベースのテーブル、列、行、主キー、およびインデックスの作成、定義、変更、および削除が可能です。
- SQLクエリを受け入れ、必要に応じてさまざまなデータベーステーブルの情報を組み合わせて、関連するデータを保存または取得します。
- データとテーブル間の参照の整合性を保証します。たとえば、外部キーは常に別のテーブルの有効な行を指します。
- 必要に応じて、インデックス、タイムスタンプ、およびその他の内部で生成された属性を自動的に更新します。
リレーショナルデータベースは、構造化クエリ言語を使用します (SQL)データベースを照会および更新します。たとえば、RDBMSクライアントはSQL INSERT
を使用します データベーステーブルの1つに新しい行を追加するコマンド。ユーザーが新しい行を追加すると、各列の値を同時に指定します。追加のSQLコマンドを使用して、行の変更と削除、データベースアイテムの管理、および特定の条件を満たすレコードのリストの取得を行います。
たとえば、学校のデータベースについて考えてみます。このデータベースには、教師、学生、コース、教室などのテーブルがいくつかあります。 Student
の定義 テーブルには、生徒の名前、ID、学年、家族などの列が含まれる場合があります。この表の各行は、個々の学生を表しており、その学生に関するすべての関連情報を表し、収集するのに役立ちます。生徒の名前が「ジョン」の場合、 first_name
この行の列にはJohn
が含まれています 。学生IDはインデックスと主キーとして機能し、他のテーブルで学生を相互参照するために使用できます。
たとえば、簡略化された Student
テーブルは、以下に表示される構造を使用して定義できます。一番上の行は、テーブルの列の名前を表しています。以下の表には、現在2行のデータがあります。各学生に1つずつです。
first_name | last_name | grade | family_id | student_id |
---|---|---|---|---|
John | Doe | 4 | 1116 | 5005 |
Jane | 学生 | 5 | 1224 | 5350 |
一般的なRDBMS用語とは何ですか?
次の用語は、データベースに関連して頻繁に使用されます。
- 列: テーブル内の1つの属性を表す、同じデータ型の値のセット。列は、テーブルの作成時に定義されます。
- 複合キー: 複数の列で構成されるキー。複合キーは、単一の列で行を確実に識別できない場合に使用されます。
- データベース: 電子的に保存されるデータの整理されたグループ。データベースは通常、情報の小さなクラスターに編成されています。
- 外部キー: テーブルエントリを別のテーブルの行にクロスリンクするために使用されるインデックス。
- インデックス: データベースエントリにより迅速にアクセスする方法。インデックスは属性の任意の組み合わせを使用して作成できますが、実装はアプリケーション固有です。データベースインデックスは、本のインデックスに似ています。
- 主キー: テーブル内の行を一意に識別するためのインデックスとして機能する列。主キーは、自動生成することも、テーブル定義で定義することもできます。主キーを使用して、テーブル内の特定の行を見つけることができます。
- 参照整合性: 外部キーが常に別のテーブルの有効な行を参照するようにするための内部データベースプロパティ。
- リレーショナルデータベース管理システム(RDBMS): テーブルとエントリ間の関係に基づくデータベースシステムの一種。
- 行: 関連データのセットで構成されるテーブル内の構造化されたエントリ。テーブルの各行は同じ構造を持っており、これはテーブル定義の列仕様に対応しています。行は、レコードまたはタプルとも呼ばれます。
- 構造化照会言語(SQL): RDBMSのデータを管理するために使用される単純化されたドメイン固有プログラミング言語。
- 表: 一連の行と列で構成されるデータベースレコードのコレクション。テーブルは、情報の2次元マトリックスと考えることができます。
SQLとMySQL
SQLという用語 およびMySQL 多くの場合、混同されたり、同じ意味で使用されたりしますが、同じではありません。 SQLは、RDBMSアプリケーションを照会するための標準プログラミング言語です。これは、データベースクエリの記述に使用され、それをサポートする任意のデータベースシステムで使用できます。 MySQLは、SQLを使用するRDBMSの特定のインスタンスです。データベースユーザーは、SQLコマンドをMySQLなどのRDBMSに送信して、データの読み取りと書き込みを行い、データベースを管理します。 SQLという名前のアプリケーションはないため、「SQLとMySQL」を比較しても意味がありません。ただし、SQLデータベースという用語 多くの場合、リレーショナルデータベースの省略形として非公式に使用されます。
SQL言語
SQL言語は、一連のステートメントとして指定されます。 Pythonのような汎用の命令型プログラミング言語とは見なされません。これは、データ構造と制御ステートメントの全範囲が不足しているためです。代わりに、単一の目的を目的としたドメイン固有言語です。 SQLは、データのクエリ、定義、および操作用に設計されています。また、データアクセス制御を提供するように設計されています。 SQLの利点の1つは、1つのコマンドだけを使用して複数のレコードにアクセスできることです。データベースがエントリにアクセスする方法は指定されていません。
SQL言語は、指定されたキーワード、式、クエリ、ステートメント、演算子、およびオプションの句で構成されます。オブジェクト識別子は、テーブルや列などのデータベースエンティティを参照するために使用されます。 SQLは、 CHAR
などの多数の事前定義されたデータ型をサポートします 、文字の場合、および INTEGER
。最も重要なSQL演算子には、 =
が含まれます。 、 <>
、>コード> 、
<
、
IN
、 LIKE
、 TRUE
、 FALSE
、および NOT
。 SQLの最近のリリースでは、単純な CASE
がサポートされるようになりました。 声明。 MySQLのドキュメントには、SQL言語の構造、データ型、およびステートメントに関する詳細情報が含まれています。
最も広く使用されているSQLステートメントと句には次のものがあります。
- 代替: データベースオブジェクトの構造を変更します。
- 作成: テーブルやデータベースなどのデータベースオブジェクトを作成します。
- 削除: データベースから1つ以上の既存の行を削除します。
- ドロップ: データベースからオブジェクトを完全に削除します。
- FROM: クエリに使用するテーブルを示します。
- 付与: データベースユーザーに特定のアクションの実行を許可します。
- GROUP BY:
SELECT
からの出力を整理する句 ステートメント。 - 挿入: データベースに行を追加します。
- 参加: 複数のテーブルのデータを組み合わせてアセンブルする方法を指定する句。
- マージ: 複数のテーブルのデータを結合します。
- 注文者: クエリからの出力を並べ替えるための句。
- 選択: 1つ以上のテーブルからデータを取得します。このコマンドは、データベースを変更したり、データを変更したりすることはありません。
- 更新: 1つ以上の既存の行を変更します。
- 場所: クエリが操作する必要のある行を識別する句。通常、比較演算子とともに使用されます。
ワイルドカード*
演算子は、多くの場合、 SELECT
と組み合わせて使用されます 指図。このコマンドは、出力にすべての列を表示するようにSQLに指示します。
以下は、SQLクエリの例です。次のSQLコマンドは、 name
を表示します クラス
の各クラスの subject
の値が含まれる各行のデータベース 列はmath
です 。
SELECT name
FROM Class
WHERE subject='math';
次のSQLステートメントはClass
を作成します テーブル。 CREATE
ステートメントは、テーブル内の各列とそのデータ型を順番に定義します。 VARCHAR
データ型は、可変長の文字列を保持するために使用されます。 SMALLINT
データ型は、 -32768
の符号付き範囲の小さな整数値に使用されます 32767
へ 。
CREATE TABLE Class (
classID smallint,
name varchar(255),
subject varchar(255),
level smallint
);
MySQLデータベースとは何ですか?
MySQLはSQLを実装するRDBMSです。もともとは中小規模のデータベースで使用するために設計されましたが、現在では非常に大量の保存データでも処理できます。 MySQLはC/C ++で記述されており、ほとんどがSQL標準に準拠しています。ただし、多くの拡張機能が追加され、完全なコンプライアンスよりも速度と信頼性が強調されます。 MySQLとSQLのコンプライアンスに関する詳細については、コンプライアンス標準に関するMySQLのドキュメントを参照してください。
MySQLの基本バージョンはOracleCorporationによって配布されており、オープンソースライセンスの下で無料で入手できます。 MySQLの現在のリリースは8.0です。 MySQLは、任意のLinuxディストリビューションおよび他のほとんどのプラットフォームで使用できます。これは、オープンソースのLAMPスタックの重要なコンポーネントです。 、Linux、Apache、およびPHPプログラミング言語とともに。 LAMPスタックは、LinuxでのオープンソースWebアプリケーション開発の基礎です。 MySQLは、クライアント/サーバーシステムの一部として、または組み込みシステムの一部として使用できます。
すべてのRDBMSアプリケーションと同様に、MySQLはリレーショナルデータベースです。管理者とユーザーは、データベース内のテーブル内およびテーブル間の関係を定義します。さまざまな列を必須またはオプションとしてマークでき、主キーまたは別のテーブルへのポインターとして機能できます。 MySQLは安定していて、信頼性が高く、使いやすいです。 MySQLのいくつかの特定の利点は次のとおりです。
- MySQLは成熟した、人気のある、定評のある製品です。他のオープンソースデータベースよりも多くのコミュニティサポートがあり、より優れた参考資料とドキュメントがあります。
- MySQLはACID準拠になるように構成できます InnoDBストレージシステムで使用する場合。頭字語ACIDは、Atomicity、Consistency、Isolation、およびDurabilityの略です。これは、エラー、障害、または停止が発生した場合でも、データの有効性を保証できることを意味します。
- 最適化されたクラスライブラリ、圧縮、メモリ割り当て、ハッシュテーブルなどの機能により、その高性能で知られています。複数のCPUを搭載したシステムでより効率的な操作を行うために、マルチスレッドカーネルスレッドをサポートしています。
- 非常に大規模なデータベースをサポートし、テーブルごとに最大数億のレコードと最大64のインデックスを格納します。
- MySQLは、すべてのパスワードの暗号化など、強化されたセキュリティメカニズムを提供します。
- データの複製と冗長性が可能になり、信頼性が向上します。
- MySQLは、テーブルと列のエイリアスをサポートし、さまざまな文字セットを完全にサポートします。
- MySQLは、Web開発で広く使用されているPHPとうまく連携します。
- さまざまなコンパイラやさまざまなプラットフォームで動作し、システム間で移植できるように設計されています。クライアントプログラムは多くの言語で書くことができます。 MySQLは、C / C ++、PHP、Java、Python、Ruby、およびPerl用のAPIを提供します。
- MySQLは、スタンドアロンアプリケーションに組み込むことができるライブラリとして利用できます。
- MySQLには、
mysqldump
を含むいくつかの便利なクライアントユーティリティがパッケージ化されています。 およびmysqladmin
。ユーザーは、mysqlcheck
を使用してテーブルを検証、最適化、および修復できます プログラム。 - MySQLオープンソースライセンスにより、開発者はMySQLをカスタマイズし、要件に合わせてソースコードを変更できます。
MySQLは、完全なカスタマーサポートを備えた、より完全な機能を備えたEnterpriseEditionでも利用できます。 Ubuntuまたはその他のLinuxプラットフォームへのMySQLのインストールについては、Ubuntu20.04へのMySQLのインストールと構成に関するLinodeガイドを参照してください。
SQLとNoSQL
NoSQLシステムは、従来のSQLベースのRDBMSアプリケーションに代わるものです。名前が示すように、データを処理するために非リレーショナルモデルを使用します。これらは通常、RDBMSよりも構造化されておらず、柔軟性があります。 NoSQLシステムは標準化されておらず、さまざまな形式をとることができます。ただし、これらは通常、テーブルベースではなく、キー値、グラフ、またはドキュメントベースです。一部のNoSQLアプリケーションは、構造化されたドメイン固有言語を使用したり、SQLクエリを並行して受け入れたりすることができます。 NoSQLアプリケーションのいくつかの例には、RedisとMongoDBが含まれます。 NoSQLシステムの詳細については、SQLデータベースとNoSQLデータベースの比較についてLinodeガイドを参照してください。
MySQLクライアントとサーバーとは何ですか?
MySQLクライアントとMySQLサーバーは、ネットワークアーキテクチャで連携して機能する2つの異なるコンポーネントです。通常、1つの中央サーバーと1つ以上のクライアントがあります。 MySQLデータベースサーバーアプリケーションは、多くの場合LAMPスタックの一部としてホストにインストールされます。このサーバーはデータベース構成とデータを保存し、クライアントからのクエリに応答します。また、セキュリティとアクセス制御システムを強化し、必要に応じてデータを複製およびアーカイブします。同じサーバーで、異なるクライアントの複数のデータベースをホストできます。
MySQLクライアントを使用すると、ユーザーは同じシステムまたは別のホストのいずれかでMySQLサーバーに接続できます。クライアントはSQLクエリをサーバーに送信して、データベースからの読み取りまたはデータベースへの書き込みを行います。 MySQLクライアントは、クライアントの管理、保守、および保護も行います。クエリを実行するためにリモートデータベースに接続するだけのユーザーには、スタンドアロンクライアントをお勧めします。サーバー上でデータベースをホストする管理者は、完全なMySQLサーバーパッケージをインストールする必要があります。サーバーのインストールには、データベースを作成および管理するためのクライアントが含まれています。
標準のMySQLコマンドラインクライアントユーティリティの名前はmysql
です。 。コマンドyuminstall mysql
を使用して、サーバーコンポーネントなしでインストールできます。 またはapt-getinstall mysql-client
。 MySQLクライアントにアクセスするには、コマンド mysql
を使用します 。ユーザー名、パスワード、サーバーのIPアドレスは、追加のパラメーターを使用して指定できます。
ユーザーが正常にログインすると、クライアントはMySQLプロンプト mysql>
を表示します 。その後、ユーザーはSQLコマンドを実行できます。 MySQLのインストールと使用の詳細については、MySQLまたはMariaDBデータベースへの接続方法に関するLinodeガイドを参照してください。
MySQLは何に使用されますか?
MySQLは、あらゆるサイズのデータセットで使用できる汎用性の高いRDBMSです。これは、アプリケーションがデータを保存および取得する必要がある場合はいつでも考慮することができます。 MySQLは元々、中小規模の単一サーバー構成用に開発されました。しかし、最近のパフォーマンスとスケーラビリティの向上により、あらゆるサイズのアプリケーションで事実上どこでも使用できるようになりました。 Uber、Airbnb、Shopifyなどの大企業でもMySQLを使用しています。
ユーザーは、WordPressを構成するためにMySQLをインストールする必要があります。 WordPressはMySQLを使用してすべてのデータと構成ファイルを保存し、MySQLと動的に対話してWebページを表示および作成します。ユーザーは、WordPressを使用するためにSQLを必ずしも理解する必要はありません。ただし、高度なカスタマイズを実行する場合に便利です。 Linuxでは、WordPressはMySQLや残りのLAMPスタックと一緒にパッケージとしてインストールされることがよくあります。 MySQLとWordPressを構成する方法の詳細については、Ubuntu20.04へのWordPressのインストールに関するLinodeガイドを参照してください。
MySQLの他の一般的なアプリケーションには、データウェアハウジング、トランザクション処理、予約システム、eコマース、およびWebデータベースが含まれます。たとえば、MySQLデータベースは、オンラインストアの製品リストと在庫を維持できます。
結論
このガイドは、「MySQLデータベースとは何ですか?」というよくある質問に答えます。 MySQLは、テーブルとフィールド間の関係に基づいてデータを編成するリレーショナルデータベースです。これは、リレーショナルデータベース管理システム(RDBMS)の一種であり、エントリをテーブル内の行として格納します。各行は、データレコードのさまざまな属性を表すいくつかの列で構成されています。データベース固有のSQLプログラミング言語は、MySQLからデータを格納および取得するために使用されます。 SQLは一連の個別のステートメントを使用し、RDBMSシステムで動作することを目的としています。
MySQLは、大きなテーブルと大量のデータを格納する機能と、速度と信頼性で知られています。多くの一般的なプログラミング言語用のAPIを提供し、いくつかの便利なユーティリティがパッケージ化されています。 MySQLサーバーは、MySQLクライアントからの要求に対するデータと応答を格納します。クライアントは常にサーバーにパッケージ化されていますが、リモートデータベースと通信するためのスタンドアロンアプリケーションとして使用できます。 MySQLは多くの有名な企業で使用されており、WordPressを使用したい人にとって不可欠です。ただし、Webデータベースやデータウェアハウジングでも使用されます。 MySQLの詳細については、MySQLのドキュメントを参照してください。
詳細情報
このトピックの詳細については、次のリソースを参照してください。これらは有用であることを期待して提供されていますが、外部でホストされている資料の正確性や適時性を保証することはできません。
- MySQLの公式ドキュメント