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 vs MySQL

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

インストールする方法 MariaDB

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

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

インストールは以下の手順に従って実行できます。

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

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

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

のインストール MariaDB

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

のインストール MariaDB

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

のインストール MariaDB

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

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

のインストール MariaDB

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

のインストール MariaDB

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

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

のインストール MariaDB

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

のインストール MariaDB

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

のインストール MariaDB

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

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

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

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

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

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

MariaDB コマンドプロンプト

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

MySQL -u root -p

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

MariaDB コマンドプロンプト

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

データ型

MariaDB 次のデータ型をサポートします:

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

文字列データ型

これらには以下が含まれます。

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

数値データ型

それらは次のとおりです。

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

日付/時刻のデータ型

これらには以下が含まれます。

日付/時刻データ型 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 までです。
Time 「hh:mm:ss」の形式で表示されます。値の範囲は「-838:59:59」から「838:59:59」までです。

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

それらは次のとおりです。

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

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

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

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

CREATE DATABASE DatabaseName;

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

始める MariaDB コマンドプロンプトを開き、次のコマンドを入力して root ユーザーとしてログインします。

mysql -u root -p

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

ここで、次のコマンドを実行します。

CREATE DATABASE Demo;

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

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

SHOW DATABASES;

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

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

MariaDB データベースを選択

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

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

USE database_name;

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

USE Demo;

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

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

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

MariaDB – テーブルの作成

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

CREATE TABLE tableName (columnName columnType);

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

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

まず、id と name の 2 つの列を持つ Book テーブルを作成します。次のコマンドを実行します。

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 列がテーブルの主キーとして設定されています。

テーブルの表示

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

SHOW TABLES;

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

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

テーブル構造の表示

特定のテーブルの構造を確認するには、DESCRIBE コマンド (通常は DESC と略記) を使用します。構文は次のとおりです。

DESC TableName;

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

DESC Book;

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

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

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 テーブルの内容を表示するには、次のコマンドを実行する必要があります。

SELECT * from book;

CRUD と句 - INSERT

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

SELECT * from price;

CRUD と句 - INSERT

複数のレコードの挿入

複数のレコードを 1 つのファイルに挿入することができます。 MariaDB テーブルを一度に表示します。これを示すには、次の例を実行します。

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 という名前のテーブルを検討します。

CRUD と句 - UPDATE

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

UPDATE price 
SET price = 250
WHERE id = 1;

CRUD と句 - UPDATE

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

CRUD と句 - UPDATE

上記のスクリーンショットは、変更が実装されたことを示しています。次のレコードを含む Book テーブルを検討してください。

CRUD と句 - UPDATE

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

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

CRUD と句 - UPDATE

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

CRUD と句 - UPDATE

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

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

次のデータを含む Price テーブルを使用します。

CRUD と句 - UPDATE

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

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];   

次のレコードを含む Price テーブルを検討します。

CRUD と句 - DELETE

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

DELETE FROM price
WHERE id = 6;   

CRUD と句 - DELETE

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

CRUD と句 - DELETE

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

場所

WHERE 句は、変更を加える必要がある正確な場所を指定するのに役立ちます。これは、INSERT、SELECT、UPDATE、DELETE などのステートメントと一緒に使用されます。次のデータを含む Price テーブルについて考えてみましょう。

CRUD と句 - Where

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

SELECT *   
FROM price 
WHERE price < 250;  

CRUD と句 - Where

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

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

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 テーブルを使用します。

CRUD と句 - Where

名前が M で始まるすべてのレコードを表示する必要があります。次のコマンドを実行します。

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

CRUD と句 - Where

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

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

CRUD と句 - Where

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

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

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

CRUD と句 - Where

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

次のレコードを含む Price テーブルを操作してみましょう。

CRUD と句 - Where

価格が 1_0 のようなレコードを確認しましょう。次のコマンドを実行します。

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

CRUD と句 - Where

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

SELECT *  
FROM price 
WHERE price LIKE '_2_';  

CRUD と句 - Where

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

次のレコードを含む Price テーブルを使用します。

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 部分も追加せずにこの句を使用することも可能です。 例えば:

次のレコードを含む Price テーブルを使用します。

CRUD と句 - Where

テーブルに対して次のコマンドを実行します。

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)];   

これを説明するために、次のデータを含む Price テーブルを使用します。

CRUD と句-DISTINCT

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

SELECT price FROM Price;

CRUD と句-DISTINCT

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

SELECT DISTINCT price FROM Price;

CRUD と句-DISTINCT

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

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

SELECT columnNames FROM tableName; 

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

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 を使用してフィルタリングする必要があります。そのためには、次のプロシージャを作成できます。

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);

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

演算

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

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);

コマンドは以下を返します。

機能で MariaDB

関数の使用が終わったら、削除するのがよいでしょう。これは、次の構文を使用する DROP FUNCTION ステートメントを呼び出すだけで簡単に実行できます。

DROP FUNCTION function_name;

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

DROP FUNCTION myFunc;

登録

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

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

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

INNER JOINは

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

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

例:

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

book テーブルには次のデータがあります。

INNER JOINは

価格テーブルには次のデータが含まれます。

INNER JOINは

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

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

コマンドは以下を返します。

INNER JOINは

左外部結合

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

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

OUTER キーワードはオプションであるため、角括弧内に配置されています。

例:

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

コマンドは以下を返します。

左外部結合

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

右外部結合

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

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

OUTER キーワードはオプションであるため、角括弧内に配置されています。

例:

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

コマンドは以下を返します。

右外部結合

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