MariaDB チュートリアル: 構文とコマンドを例とともに学習します

何ですか MariaDB?

MariaDB MySQL データベース管理システムのフォークです。オリジナルの開発者によって作成されました。この DBMS ツールは、小規模タスクとエンタープライズ タスクの両方にデータ処理機能を提供します。

MariaDB MySQL の改良版です。これには、MySQL では見られない多数の強力な機能が組み込まれており、使いやすさ、セキュリティ、パフォーマンスが向上しています。

の機能は次のとおりです MariaDB:

  • GPL、BSD、または LGPL ライセンスに基づいて動作します。
  • MariaDB 一般的な標準のクエリ言語をサポートしています。
  • 他のリレーショナル データベース管理システムと統合できる高性能のものを含む、多くのストレージ エンジンが付属しています。
  • Galera クラスター テクノロジーを提供します。
  • MariaDB Web 開発で人気のある言語である PHP をサポートしています。
  • MariaDB はさまざまなオペレーティング システムで実行でき、多数のプログラミング言語をサポートしています。
  • MariaDB MySQL では使用できない追加のコマンドが付属しています。 MySQL には、DBMS のパフォーマンスに悪影響を及ぼす機能があります。このような機能は、 MariaDB.

MariaDB 対 MySQL

以下に主な違いをいくつか示します。 MariaDB 対 MySQL

MariaDB MySQL
ストレージ エンジンのさらなるオプション MariaDB MySQL には見られない 12 個の新しいストレージ エンジンがあります。 に比べてストレージのオプションが少ない MariaDB.
速度の向上 MariaDB MySQL と比較すると速度が向上していることがわかります。速度を最適化するための多数の機能が付属しています。このような機能には、派生ビュー/テーブル、サブクエリ、実行制御、ディスク アクセス、オプティマイザー制御が含まれます。 MySQL は、以下と比較すると速度が遅くなります。 MariaDB。速度の最適化のために、ハッシュ インデックスなどの少数の機能のみに依存します。
キャッシュ/インデックスの高速化 メモリストレージエンジンを搭載 MariaDB、INSERT ステートメントは、標準の MySQL よりも 24% 完了できます。 MySQL のメモリ ストレージ エンジンはそれに比べて遅い MariaDB.
より大規模で高速な接続プール MariaDB には、より高速に実行でき、最大 200,000 以上の接続をサポートできる高度なスレッド プールが付属しています。 MySQL が提供するスレッド プールは、一度に最大 200,000 の接続をサポートできません。
レプリケーションの改善 In MariaDB、レプリケーションをより安全かつ高速に実行できます。更新も従来の MySQL と比較して 2 倍高速に実行できます。 MySQL のコミュニティ エディションでは、静的な数のスレッドを接続できます。 MySQL のエンタープライズ プランにはスレッド機能が付属しています。
新機能/拡張機能 MariaDB には、JSON、WITH、KILL ステートメントなどの新機能と拡張機能が付属しています。 新しい MariaDB この機能は MySQL では提供されていません。
不足している機能 MariaDB MySQL エンタープライズ エディションで提供される機能の一部が欠けています。これに対処するために、代替のオープンソース プラグインを提供します。したがって、 MariaDB ユーザーは、MySQL Enterprise Edition ユーザーと同じ機能を楽しむことができます。 MySQL の Enterprise Edition は独自のコードを使用します。 MySQL Enterprise Edition のユーザーのみがこれにアクセスできます。

インストールする方法 MariaDB

スタンドアロン アプリケーションとしてインストールする

使用するために MariaDB、コンピュータにインストールする必要があります。

インストールは次のようにして実行できますwing 以下に示す手順:

ステップ1) 以下の URL を開きます
リンクからインストールファイルをダウンロードします https://downloads.mariadb.org/

ステップ2) Double ファイルをクリックしてインストールを開始します
ダウンロードが完了したら、「ファイルを開く」

ステップ3) Nextボタンをクリックしてください。
表示されるウィンドウで、「次へ」ボタンをクリックします。

のインストール MariaDB

ステップ4) 使用許諾契約に同意する
次に、「次へ」ボタンをクリックします。

のインストール MariaDB

ステップ5) 選択する MariaDB サーバー
インストールする機能を選択し、「次へ」をクリックします。

のインストール MariaDB

ステップ6) パスワードを入力してください
次のウィンドウでは、root ユーザーのパスワードを変更するように求められます。

  1. パスワードを入力し、同じパスワードを再入力して確認します。 リモートマシンからのアクセスを許可したい場合は、必要なチェックをオンにします。box.
  2. 完了したら、「次へ」ボタンをクリックします。

のインストール MariaDB

ステップ7) 名前を入力してポート番号を選択してください
次のウィンドウで、インスタンスの名前を入力し、ポート番号を選択して、必要なサイズを設定します。 「次へ」ボタンをクリックします。

のインストール MariaDB

ステップ8) [次へ]をクリックします
次のウィンドウで、「次へ」ボタンをクリックします。

ステップ9) インストールをクリックします
「インストール」ボタンをクリックしてインストールを開始します。

のインストール MariaDB

ステップ10) プログレスバーの表示
プログレスバー笑wing インストールの進行状況が表示されます。

のインストール MariaDB

ステップ11) 「完了」ボタンをクリックします
インストールが完了すると、「完了」ボタンが表示されます。 ボタンをクリックしてウィンドウを閉じます。

のインストール MariaDB

ステップ12) おめでとう!
あなたは今持っています MariaDB あなたのコンピュータにインストールされます。

コマンドプロンプトの操作

今、あなたが持っている MariaDB コンピュータにインストールされたら、起動して使用を開始します。これは、 MariaDB コマンド・プロンプト。

以下の手順に従ってください。

ステップ1) 「スタート」をクリックし、「すべてのプログラム」を選択して、「 MariaDB...

ステップ2) 選択する MariaDB コマンドプロンプト。

MariaDB コマンドプロンプト

ステップ3) また, MariaDB コマンドプロンプトが起動します。ログインする時間になりました。 root ユーザーとしてログインし、インストール中に設定したパスワードを使用する必要があります。 MariaDB。次のように入力しますwing コマンドプロンプトで次のコマンドを実行します。

MySQL -u root -p

ステップ4) パスワードを入力してリターンキーを押します。 以下に示すように、ログインしているはずです。

MariaDB コマンドプロンプト

現在ログインしています MariaDB.

データ型

MariaDB フォローをサポートしますwing データ型:

  • 文字列データ型
  • 数値データ型
  • 日付/時刻のデータ型
  • ラージ オブジェクトのデータ型

文字列データ型

これらには以下が含まれますwing:

文字列データ型 Description
文字(サイズ) サイズは格納する文字数を示します。 最大 255 文字を保存します。 固定長の文字列。
varchar(サイズ) サイズは格納する文字数を示します。 最大 255 文字を保存します。 可変長文字列。
文字サイズ) サイズは格納する文字数を示します。 最大 255 文字を保存します。 固定長の文字列。
バイナリ(サイズ) サイズは格納する文字数を示します。 最大 255 文字を保存します。 固定サイズの文字列。

数値データ型

それらには以下が含まれますwing:

数値データ型 Description
ビット tinyint(1) と同等の非常に小さな整数値。 符号付き値の範囲は -128 ~ 127 です。符号なし値の範囲は 0 ~ 255 です。
int(m) 標準の整数値。 符号付き値の範囲は -2147483648 ~ 2147483647 です。符号なし値の範囲は 0 ~ 4294967295 です。
float(m, d) 単精度の浮動小数点数。
double(月、日) 浮動小数点数 double 精度。
浮動小数点(p) 浮動小数点数。

日付/時刻のデータ型

これらには以下が含まれますwing:

日付/時刻データ型 Description
日付 「yyyy-mm-dd」の形式で表示されます。 値の範囲は「1000-01-01」から「9999-12-31」までです。
日付時刻 「yyyy-mm-dd hh:mm:ss」の形式で表示されます。 値の範囲は「1000-01-01 00:00:00」から「9999-12-31 23:59:59」までです。
タイムスタンプ(分) 「yyyy-mm-dd hh:mm:ss」の形式で表示されます。 値の範囲は「1970-01-01 00:00:01」utc から「2038-01-19 03:14:07」utc までです。
時間 「hh:mm:ss」の形式で表示されます。 値の範囲は「-838:59:59」から「838:59:59」までです。

ラージ オブジェクト データ型 (LOB)

それらには以下が含まれますwing:

ラージ オブジェクトのデータ型 Description
小さな塊 最大サイズは 255 バイトです。
ブロブ(サイズ) 最大サイズは 65,535 バイトです。
中ブロブ 最大サイズは 16,777,215 バイトです。
長文 最大サイズとして 4GB が必要です。

データベースとテーブルを作成する

新しいデータベースを作成するには MariaDB、root ユーザーと管理者にのみ付与される特別な権限が必要です。

新しいデータベースを作成するには、次のような CREATE DATABASE コマンドを使用する必要があります。wing 構文:

CREATE DATABASE DatabaseName;

この場合、データベースを作成し、Demo という名前を付ける必要があります。

始める MariaDB コマンドプロンプトにアクセスし、次のように入力して root ユーザーとしてログインします。wing コマンド:

mysql -u root -p

root パスワードを入力し、Return キーを押します。 ログインされます。

次に、次のコマンドを実行しますwing コマンド:

CREATE DATABASE Demo;

データベースとテーブルを作成します MariaDB

これで、Demo という名前のデータベースが作成されました。 データベースが正常に作成されたかどうかを確認するとよいでしょう。 次のコマンドを実行して、利用可能なデータベースのリストを表示するだけです。wing コマンド:

SHOW DATABASES;

データベースとテーブルを作成します MariaDB

上記の出力は、Demo データベースがリストの一部であるため、データベースが正常に作成されたことを示しています。

MariaDB データベースを選択

特定のデータベースを使用または作業できるようにするには、使用可能なデータベースのリストからそのデータベースを選択する必要があります。 データベースを選択した後、データベース内にテーブルを作成するなどのタスクを実行できます。

データベースを選択するには、USE コマンドを使用する必要があります。 以下の構文を使用します。

USE database_name;

デモ データベースを使用する必要があります。 次のコマンドを実行すると選択できますwing コマンド:

USE Demo;

データベースとテーブルを作成します MariaDB

上の画像は、 MariaDB コマンド プロンプトが none から選択されたデータベースの名前に変わりました。

これで、デモ データベース内にテーブルを作成できるようになりました。

MariaDB – テーブルの作成

テーブルを作成するには、データベースを選択しておく必要があります。 テーブルは CREATE TABLE ステートメントを使用して作成できます。 コマンドの構文は次のとおりです。

CREATE TABLE tableName (columnName columnType);

いずれかの列を主キーとして設定できます。 この列には NULL 値を許可しないでください。

Demo データベース内に Book テーブルと Price テーブルという XNUMX つのテーブルを作成します。 各テーブルには XNUMX つの列があります。

まず、id と name の XNUMX つの列を持つ Book テーブルを作成します。 以下を実行してくださいwing コマンド:

CREATE TABLE Book(  
id INT NOT NULL AUTO_INCREMENT,  
name VARCHAR(100) NOT NULL,  
PRIMARY KEY (id));  

データベースとテーブルを作成します MariaDB

PRIMARY KEY 制約は、id 列をテーブルの主キーとして設定するために使用されています。 AUTO_INCREMENT プロパティは、テーブルに新しいレコードが挿入されるたびに、id 列の値を自動的に 1 ずつ増分します。 すべての列で null 値は許可されません。

次に、XNUMX 番目のテーブルである Price テーブルを作成します。

CREATE TABLE Price(  
id INT NOT NULL AUTO_INCREMENT,  
price float NOT NULL,  
PRIMARY KEY (id));  

データベースとテーブルを作成します MariaDB

id 列がテーブルの主キーとして設定されています。

笑wing テーブル類

XNUMX つのテーブルを作成したので、テーブルが正常に作成されたかどうかを確認するとよいでしょう。 次のコマンドを実行すると、データベースに含まれるテーブルのリストを表示できます。wing コマンド:

SHOW TABLES;

データベースとテーブルを作成します MariaDB

上のスクリーンショットは、XNUMX つのテーブルがデモ データベース内に正常に作成されたことを示しています。

笑wing テーブル構造

特定のテーブルの構造を確認するには、DESCRIBE コマンド (一般に DESC と省略されます) を使用できます。 次のことが必要ですwing 構文:

DESC TableName;

たとえば、Book という名前のテーブルの構造を確認するには、次のコマンドを実行します。wing 指図;

DESC Book;

データベースとテーブルを作成します MariaDB

テーブルには XNUMX つの列があります。 Price テーブルの構造を確認するには、次のコマンドを実行します。wing コマンド:

DESC Price;

データベースとテーブルを作成します MariaDB

CRUD と条項

INSERT

データを挿入するには MariaDB テーブルの場合は、INSERT INTO ステートメントを使用する必要があります。このコマンドは次の構文を使用します。

INSERT INTO tableName
(column_1, column_2, ... )  
VALUES  
(value1, value2, ... ),  
(value1, value2, ... ),  
...;   

上記の構文は、データを挿入するテーブルの列と、挿入する必要があるデータを指定する必要があることを示しています。

Book テーブルにレコードを挿入しましょう。

INSERT INTO book  
(id, name)  
VALUES(1, 'MariaDB Book');  

CRUD と句 - INSERT

単一のレコードをテーブルに挿入しました。 Price テーブルにレコードを挿入します。

INSERT INTO price
(id, price)  
VALUES(1, 200);  

CRUD と句 - INSERT

レコードが作成されました。

SELECT

SELECT ステートメントは、データベース テーブルの内容を表示または参照するのに役立ちます。 たとえば、Book テーブルの内容を確認するには、次のコマンドを実行する必要があります。wing コマンド:

SELECT * from book;

CRUD と句 - INSERT

次に、価格テーブルの内容を表示します。

SELECT * from price;

CRUD と句 - INSERT

複数のレコードの挿入

複数のレコードを 1 つのファイルに挿入することができます。 MariaDB すぐにテーブルに。これを実証するには、次のコマンドを実行します。wing 例:

INSERT INTO book
(id, name)  
VALUES  
(2,'MariaDB Book2'),  
(3,'MariaDB Book3'),  
(4,'MariaDB Book4'),  
(5,'MariaDB Book5');

複数のレコードの挿入

テーブルにクエリを実行して、レコードが正常に挿入されたかどうかを確認できます。

SELECT * FROM book;

複数のレコードの挿入

レコードは正常に挿入されました。 次の例を実行して、Price テーブルに複数のレコードを挿入します。

INSERT INTO price 
(id, price)  
VALUES  
(2, 250),  
(3, 220),  
(4, 190),  
(5, 300); 

複数のレコードの挿入

レコードが正常に作成されたかどうかを確認してみましょう。

SELECT * FROM price;

複数のレコードの挿入

UPDATE

UPDATE コマンドは、テーブルに既に挿入されているレコードを変更または修正するのに役立ちます。 WHERE 句と組み合わせて、更新するレコードを指定できます。 構文は次のとおりです。

UPDATE tableName SET field=newValue, field2=newValue2,...  
[WHERE ...]  

UPDATE コマンドは、SET、WHERE、LIMIT、ORDER BY などの句と組み合わせることもできます。 これは間もなく表示されます。

Price という名前のテーブルを次のように考えます。wing 記録:

CRUD と句 - UPDATE

ID が 1 の本の価格を 200 から 250 に変更してみましょう。

UPDATE price 
SET price = 250
WHERE id = 1;

CRUD と句 - UPDATE

コマンドは正常に実行されました。 これで、テーブルにクエリを実行して、変更が行われたかどうかを確認できるようになりました。

CRUD と句 - UPDATE

上のスクリーンショットは、変更が実装されたことを示しています。 テーブルを検討してください 以下で予約してくださいwing 記録:

CRUD と句 - UPDATE

Book という本の名前を次のように変更しましょう。 MariaDB 本1.ブックの ID が 1 であることに注意してください。これを行うコマンドは次のとおりです。

UPDATE book
SET name = “MariaDB Book1”
WHERE id = 1;

CRUD と句 - UPDATE

変更が実装されているかどうかを確認します。

CRUD と句 - UPDATE

上のスクリーンショットは、変更が正常に実装されたことを示しています。

上記の例では、一度に XNUMX つの列のみを変更しました。 ただし、複数の列を一度に変更することは可能です。 例を使用してこれを説明してみましょう。

次のように価格テーブルを使用してみましょうwing データ:

CRUD と句 - UPDATE

ID が 5 の本の ID と価格の両方を変更してみましょう。ID を 6 に、価格を 6 に変更します。以下を実行します。wing コマンド:

UPDATE price
SET id = 6,
price = 280
WHERE id = 5;

CRUD と句 - UPDATE

次に、テーブルにクエリを実行して、変更が正常に行われたかどうかを確認します。

CRUD と句 - UPDATE

変更は正常に行われました。

削除

テーブルから XNUMX つまたは複数のレコードを削除する必要がある場合は、DELETE コマンドを使用します。 コマンドの構文は次のとおりです。

DELETE FROM tableName  
[WHERE condition(s)]  
[ORDER BY exp [ ASC | DESC ]]  
[LIMIT numberRows];   

以下の価格表を検討してください。wing 記録:

CRUD と句 - DELETE

テーブルから最後のレコードを削除する必要があります。 ID は 6、価格は 280 です。レコードを削除しましょう。

DELETE FROM price
WHERE id = 6;   

CRUD と句 - DELETE

コマンドは正常に実行されました。 テーブルにクエリを実行して、削除が成功したかどうかを確認してみましょう。

CRUD と句 - DELETE

出力には、レコードが正常に削除されたことが示されています。

場所

WHERE 句は、変更が必要な正確な場所を指定するのに役立ちます。 INSERT、SELECT、UPDATE、DELETE などのステートメントと一緒に使用されます。 以下の価格表を検討してください。wing データ:

CRUD と句 - Where

価格が 250 未満のレコードを確認する必要があるとします。次のコマンドを実行できます。wing コマンド:

SELECT *   
FROM price 
WHERE price < 250;  

CRUD と句 - Where

価格が 250 未満のすべてのレコードが返されました。

WHERE 句は AND ステートメントと組み合わせることができます。 Price テーブル内の、価格が 250 未満で ID が 3 を超えるすべてのレコードを確認する必要があるとします。次のコマンドを実行できます。wing コマンド:

SELECT *  
FROM price  
WHERE id > 3  
AND price < 250;   

CRUD と句 - Where

返されたレコードは 3 つだけです。 その理由は、指定されたすべての条件、つまり ID が 250 を超え、価格が XNUMX 未満である必要があるためです。これらの条件のいずれかに違反した場合、レコードは返されません。

この句は OR コマンドと組み合わせることもできます。 前のコマンドの AND を OR に置き換えて、受け取る出力の種類を確認してみましょう。

SELECT *  
FROM price 
WHERE id > 3  
OR price < 250;   

CRUD と句 - Where

レコードは 2 つではなく 1 つ取得されるようになりました。これは、資格を得るレコードの場合、指定された条件の XNUMX つだけを満たしていればよいためです。

いいね

この句は、完全一致が必要なテーブル データにアクセスする際のデータ パターンを指定するために使用されます。 これは、INSERT、UPDATE、SELECT、および DELETE ステートメントと組み合わせることができます。

探しているデータのパターンを句に渡す必要があります。これにより、true または false が返されます。 句と一緒に使用できるワイルドカード文字は次のとおりです。

  • %: 0 個以上の文字と一致します。
  • _: 単一の文字と一致する場合。

LIKE 句の構文は次のとおりです。

SELECT field_1, field_2,... FROM tableName1, tableName2,...  
WHERE fieldName LIKE condition;

% ワイルドカード文字を使用した句の使用方法を示します。 次のように Book テーブルを使用してみましょうwing 記録:

CRUD と句 - Where

名前が M で始まるすべてのレコードを確認する必要があります。次のコマンドを実行できます。wing コマンド:

SELECT name  
FROM book  
WHERE name LIKE 'M%';  

CRUD と句 - Where

名前が文字 M で始まるため、すべてのレコードが返されました。4 で終わる名前をすべて表示するには、次のコマンドを実行します。wing コマンド:

SELECT name  
FROM book  
WHERE name LIKE '%4';  

CRUD と句 - Where

条件を満たす唯一の名前であるため、名前は XNUMX つだけ返されます。

検索パターンをワイルドカードで囲むこともできます。

SELECT name  
FROM book  
WHERE name LIKE '%DB%';  

CRUD と句 - Where

% ワイルドカード以外に、LIKE 句は _ ワイルドカードと一緒に使用できます。 これはアンダースコアのワイルドカードであり、単一文字のみを検索します。

次のように価格テーブルを操作してみましょうwing 記録:

CRUD と句 - Where

価格が 1_0 のようなレコードを確認してみましょう。 私たちは以下を実行しますwing コマンド:

SELECT *  
FROM price
WHERE price LIKE '1_0';  

CRUD と句 - Where

価格が 190 であるレコードが返されました。別のパターンを試すこともできます。

SELECT *  
FROM price 
WHERE price LIKE '_2_';  

CRUD と句 - Where

LIKE 句を NOT 演算子と一緒に使用することができます。 これにより、指定されたパターンを満たさないすべてのレコードが返されます。 例えば:

次のように価格テーブルを使用してみましょうwing 記録:

CRUD と句 - Where

価格が 2 で始まらないすべてのレコードを見つけてみましょう。

SELECT *  
FROM price  
WHERE price NOT LIKE '2%';  

CRUD と句 - Where

指定されたパターンを満たさないレコードは XNUMX つだけです。

、ORDER BY

この句は、レコードを昇順または降順に並べ替えるのに役立ちます。 以下に示すように、これを SELECT ステートメントとともに使用します。

SELECT expression(s)  
FROM tables  
[WHERE condition(s)]  
ORDER BY exp [ ASC | DESC ];   

ASC 部分も DESC 部分も追加せずにこの句を使用することも可能です。 例えば:

価格表を次のように使用します。wing 記録:

CRUD と句 - Where

以下を実行してくださいwing テーブルに対するコマンド:

SELECT * FROM price 
WHERE price LIKE '2%.'
ORDER BY price;   

CRUD と句 - Where

上記のコマンドでは、価格で注文しています。 レコードは価格の昇順に並べられています。 つまり、順序を指定しない場合、デフォルトで昇順で並べ替えが行われます。

DESC オプションを指定して句を実行してみましょう。

SELECT * FROM price
WHERE price LIKE '2%'  
ORDER BY price DESC;   

CRUD と句 - Where

レコードは、指定した価格の降順で並べ替えられています。

ORDER BY 句を ASC 属性とともに使用してみましょう。

SELECT * FROM price 
WHERE price LIKE '2%.'  
ORDER BY price ASC;   

CRUD と句 - Where

レコードは注文されていますが、価格は昇順になっています。 これは、ASC 属性も DESC 属性も指定せずに ORDER BY 句を使用する場合と似ています。

DISTINCT

この句は、テーブルからレコードを選択するときに重複を排除するのに役立ちます。 これは、一意のレコードを取得するのに役立つことを意味します。 その構文を以下に示します。

SELECT DISTINCT expression(s)  
FROM tableName  
[WHERE condition(s)];   

これを実証するために、次の価格テーブルを使用します。wing データ:

CRUD と句-DISTINCT

テーブルから価格列を選択すると、次の結果が得られます。wing 結果:

SELECT price FROM Price;

CRUD と句-DISTINCT

価格が 250 のレコードが XNUMX つあり、重複が作成されます。 一意のレコードのみが必要です。 以下に示すように、DISTINCT 句を使用してこれらをフィルタリングできます。

SELECT DISTINCT price FROM Price;

CRUD と句-DISTINCT

上記の出力には重複がなくなりました。

データベーステーブルからデータをフェッチするために使用される FROM 句。 テーブルを結合するときにも役立ちます。 コマンドの構文は次のとおりです。

SELECT columnNames FROM tableName; 

book テーブルの内容を確認するには、次のコマンドを実行します。wing コマンド:

SELECT * FROM price;

CRUD と句-From

この句は、データベース テーブルから XNUMX つの列だけをフェッチするのに役立ちます。 例えば:

SELECT price FROM Price;

CRUD と句-From

高度なタスク

ストアドプロシージャ

手順というのは、 MariaDB パラメータを渡すことができるプログラム。プロシージャは値を返しません。プロシージャを作成するには、CREATE PROCEDURE コマンドを使用します。

プロシージャを作成して呼び出す方法を示すために、書籍テーブルから name 列を選択するのに役立つ myProcedure() という名前のプロシージャを作成します。 手順は次のとおりです。

DELIMITER $
    CREATE PROCEDURE myProcedure()
        BEGIN
            SELECT name FROM book;
        END;
;

高度なタスク - ストアド プロシージャ

手順が作成されました。 プロシージャの BEGIN 句と END 句内で SELECT ステートメントを単純に囲みました。

これで、以下に示すように、名前でプロシージャを呼び出すことができます。

CALL myProcedure();

高度なタスク - ストアド プロシージャ

このプロシージャは呼び出されると、book テーブルの name 列を返します。

パラメータを受け取るプロシージャを作成できます。 たとえば、書籍の名前を選択し、書籍 ID を使用してフィルタリングする必要があります。 次のようなものを作成できますwing このための手順:

DELIMITER $
    CREATE PROCEDURE myProcedure2(book_id int)
        BEGIN
            SELECT name FROM book WHERE id = book_id;
        END;
;

高度なタスク - ストアド プロシージャ

上記では、myProcedure2() という名前のプロシージャを作成しました。 このプロシージャは、book_id という名前の 3 つの整数パラメータを受け取ります。これは、名前を確認する必要がある本の ID です。 ID が XNUMX の本の名前を確認するには、次のようにプロシージャを呼び出すことができます。

CALL myProcedure2(3);

高度なタスク - ストアド プロシージャ

演算

プロシージャとは異なり、パラメータを関数に渡す必要があり、関数は値を返す必要があります。関数を作成するには MariaDBでは、CREATE FUNCTION ステートメントを使用します。ステートメントは次のようになりますwing 構文:

CREATE 
[ DEFINER = { CURRENT-USER | username } ] 
FUNCTION function-name [(parameter datatype [, parameter datatype]) ]
RETURNS datatype [LANGUAGE SQL
                        | DETERMINISTIC
                        | NOT DETERMINISTIC
                        | {CONTAINS SQL 
                          | NO SQL
                          | READS SQL DATA
                          | MODIFIES SQL DATA}
                        | SQL SECURITY {DEFINER | INVOKER}
                        | COMMENT 'comment'

BEGIN

   declaration-section

   executable-section

END;

上記のパラメータについては以下で説明します。

Description
DEFINER 句 このパラメータはオプションです。 指定しない場合、定義者は関数を作成したユーザーになります。 別の定義者を指定する必要がある場合は、user_name が関数の定義者となる DEFINER 句を含めます。
関数名 でこの関数に割り当てられる名前。 MariaDB.
パラメーター 関数に渡されるパラメータ。 関数の作成中、すべてのパラメータは次のように扱われます。 INパラメータ (OUT/INOUT パラメーターではなく)。
return_datatype 関数の戻り値のデータ型。
言語 SQL 携帯性には影響しますが、機能には影響しません。
決定論的 この関数は、複数のパラメーターが指定された場合にのみ XNUMX つの結果を返します。
決定的ではない 多数のパラメーターを指定すると、関数が異なる結果を返す可能性があります。
SQLを含む 通知する MariaDB この関数には SQL が含まれていることを確認します。データベースはこれが真実かどうかを検証しません。
SQLなし この句は使用されないため、機能には影響しません。
SQL データを読み取ります 告げる MariaDB この関数は SELECT ステートメントを使用してデータを読み取りますが、データは変更しません。
SQLデータを変更します 告げる MariaDB この関数は INSERT、DELETE、UPDATE などを使用すること DDL SQL データを変更するステートメント。
宣言セクション ここでローカル変数を宣言する必要があります。
実行可能セクション ここに関数コードを追加する必要があります。

以下に例があります MariaDB 関数:

DELIMITER //

CREATE FUNCTION sumFunc (x INT )
RETURNS INT DETERMINISTIC

BEGIN

   DECLARE sum INT;
   SET sum = 0;
   label1: WHILE sum <= 3000 DO
   SET sum = sum + x;
   END WHILE label1;
   RETURN sum;
END; //
DELIMITER ;

機能で MariaDB

次に、上記の関数を次のように呼び出すことができます。

select sumFunc(1000);

コマンドは次の内容を返しますwing:

機能で MariaDB

関数を使い終わったら、削除しても問題ありません。 これは、次の処理を行う DROP FUNCTION ステートメントを呼び出すだけなので簡単です。wing 構文:

DROP FUNCTION function_name;

たとえば、myFunc という名前の関数を削除するには、次のコマンドを実行します。wing コマンド:

DROP FUNCTION myFunc;

登録

一度に複数のテーブルからデータを取得する必要がある場合は、次を使用します。 MariaDB 参加します。これは、 登録 XNUMX つ以上のテーブルで動作します。 次のことwing では 3 種類の JOINS がサポートされています。 MariaDB:

  • 内部/単純結合
  • 左外部結合/左結合
  • 右外部結合/右結合

一つずつ説明していきましょう。

INNER JOINは

内部結合は、結合条件が true であるテーブルからすべての行を返します。 その構文は次のとおりです。

SELECT columns  
FROM table-1   
INNER JOIN table-2  
ON table-1.column = table-2.column;  

例:

テーブルXNUMXつと本と本を使います。

本のテーブルには次のようなものがありますwing データ:

INNER JOINは

価格表には次のようなものがありますwing データ:

INNER JOINは

目標は、Book テーブルの名前列と Price テーブルの価格列を XNUMX つのテーブルに結合することです。 これは、以下に示すように、内部結合を使用すると可能になります。

SELECT book.name, price.price 
FROM book   
INNER JOIN price 
ON book.id = price.id;   

コマンドは次の内容を返しますwing:

INNER JOINは

左外部結合

この結合は、左側のテーブルからすべての行を返し、もう一方のテーブルからは結合条件が true である行のみを返します。 その構文は次のとおりです。

SELECT columns  
FROM table-1  
LEFT [OUTER] JOIN table-2  
ON table-1.column = table-2.column;  

OUTER キーワードが四角形内に配置されています brackets それはオプションだからです。

例:

SELECT book.name, price.price 
FROM book   
LEFT JOIN price 
ON book.id = price.id;   

コマンドは次の内容を返しますwing:

左外部結合

上のテーブルの最後のレコードの左側には一致する値がありません。 そのため、NULL に置き換えられています。

右外部結合

この結合は、右側のテーブルからすべての行を返し、他のテーブルからは結合条件が true である行のみを返します。 その構文は次のとおりです。

SELECT columns  
FROM table-1  
RIGHT [OUTER] JOIN table-2  
ON table-1.column = table-2.column;  

OUTER キーワードが四角形内に配置されています brackets それはオプションだからです。

例:

SELECT book.name, price.price 
FROM book   
RIGHT JOIN price
ON book.id = price.id;   

コマンドは次の内容を返しますwing:

右外部結合

その理由は、右側のテーブルのすべての行が他のテーブルの行と一致したためです。 一部の行が一致しない場合、最初の列には NULL が表示されます。