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ボタンをクリックしてください。
表示されるウィンドウで、「次へ」ボタンをクリックします。
ステップ4) 使用許諾契約に同意する
次に、「次へ」ボタンをクリックします。
ステップ5) 選択する MariaDB サーバー
インストールする機能を選択し、「次へ」をクリックします。
ステップ6) パスワードを入力してください
次のウィンドウでは、root ユーザーのパスワードを変更するように求められます。
- パスワードを入力し、同じパスワードを再入力して確認します。リモート マシンからのアクセスを許可する場合は、必要なチェックボックスをオンにします。
- 完了したら、「次へ」ボタンをクリックします。
ステップ7) 名前を入力してポート番号を選択してください
次のウィンドウで、インスタンスの名前を入力し、ポート番号を選択して、必要なサイズを設定します。 「次へ」ボタンをクリックします。
ステップ8) [次へ]をクリックします
次のウィンドウで、「次へ」ボタンをクリックします。
ステップ9) インストールをクリックします
「インストール」ボタンをクリックしてインストールを開始します。
ステップ10) プログレスバーの表示
インストールの進行状況を示す進行状況バーが表示されます。
ステップ11) 「完了」ボタンをクリックします
インストールが完了すると、「完了」ボタンが表示されます。 ボタンをクリックしてウィンドウを閉じます。
ステップ12) おめでとう!
あなたは今持っています MariaDB あなたのコンピュータにインストールされます。
コマンドプロンプトの操作
今、あなたが持っている MariaDB コンピュータにインストールされたら、起動して使用を開始します。これは、 MariaDB コマンド・プロンプト。
以下の手順に従ってください。
ステップ1) 「スタート」をクリックし、「すべてのプログラム」を選択して、「 MariaDB...
ステップ2) 選択する MariaDB コマンドプロンプト。
ステップ3) この MariaDB コマンドプロンプトが起動します。ログインする時間になりました。 root ユーザーとしてログインし、インストール中に設定したパスワードを使用する必要があります。 MariaDBコマンドプロンプトで次のコマンドを入力します。
MySQL -u root -p
ステップ4) パスワードを入力してリターンキーを押します。 以下に示すように、ログインしているはずです。
現在ログインしています 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;
これで、Demo という名前のデータベースが作成されました。データベースが正常に作成されたかどうかを確認することをお勧めします。次のコマンドを実行して、使用可能なデータベースのリストを表示するだけです。
SHOW DATABASES;
上記の出力は、Demo データベースがリストの一部であるため、データベースが正常に作成されたことを示しています。
MariaDB データベースを選択
特定のデータベースを使用または作業できるようにするには、使用可能なデータベースのリストからそのデータベースを選択する必要があります。 データベースを選択した後、データベース内にテーブルを作成するなどのタスクを実行できます。
データベースを選択するには、USE コマンドを使用する必要があります。 以下の構文を使用します。
USE database_name;
デモ データベースを使用する必要があります。次のコマンドを実行して選択できます。
USE Demo;
上の画像は、 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));
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));
id 列がテーブルの主キーとして設定されています。
テーブルの表示
2 つのテーブルを作成したので、テーブルが正常に作成されたかどうかを確認することをお勧めします。次のコマンドを実行すると、データベースに含まれるテーブルのリストを表示できます。
SHOW TABLES;
上のスクリーンショットは、XNUMX つのテーブルがデモ データベース内に正常に作成されたことを示しています。
テーブル構造の表示
特定のテーブルの構造を確認するには、DESCRIBE コマンド (通常は DESC と略記) を使用します。構文は次のとおりです。
DESC TableName;
たとえば、Book という名前のテーブルの構造を確認するには、次のコマンドを実行します。
DESC Book;
テーブルには 2 つの列があります。Price テーブルの構造を確認するには、次のコマンドを実行します。
DESC Price;
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');
単一のレコードをテーブルに挿入しました。 Price テーブルにレコードを挿入します。
INSERT INTO price (id, price) VALUES(1, 200);
レコードが作成されました。
SELECT
SELECT ステートメントは、データベース テーブルの内容を表示または確認するのに役立ちます。たとえば、Book テーブルの内容を表示するには、次のコマンドを実行する必要があります。
SELECT * from book;
次に、価格テーブルの内容を表示します。
SELECT * from price;
複数のレコードの挿入
複数のレコードを 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 という名前のテーブルを検討します。
ID が 1 の本の価格を 200 から 250 に変更してみましょう。
UPDATE price SET price = 250 WHERE id = 1;
コマンドは正常に実行されました。 これで、テーブルにクエリを実行して、変更が行われたかどうかを確認できるようになりました。
上記のスクリーンショットは、変更が実装されたことを示しています。次のレコードを含む Book テーブルを検討してください。
Book という本の名前を次のように変更しましょう。 MariaDB 本1.ブックの ID が 1 であることに注意してください。これを行うコマンドは次のとおりです。
UPDATE book SET name = “MariaDB Book1” WHERE id = 1;
変更が実装されているかどうかを確認します。
上のスクリーンショットは、変更が正常に実装されたことを示しています。
上記の例では、一度に XNUMX つの列のみを変更しました。 ただし、複数の列を一度に変更することは可能です。 例を使用してこれを説明してみましょう。
次のデータを含む Price テーブルを使用します。
ID が 5 の本の ID と価格の両方を変更してみましょう。ID を 6 に、価格を 6 に変更します。次のコマンドを実行します。
UPDATE price SET id = 6, price = 280 WHERE id = 5;
次に、テーブルにクエリを実行して、変更が正常に行われたかどうかを確認します。
変更は正常に行われました。
削除
テーブルから XNUMX つまたは複数のレコードを削除する必要がある場合は、DELETE コマンドを使用します。 コマンドの構文は次のとおりです。
DELETE FROM tableName [WHERE condition(s)] [ORDER BY exp [ ASC | DESC ]] [LIMIT numberRows];
次のレコードを含む Price テーブルを検討します。
テーブルから最後のレコードを削除する必要があります。 ID は 6、価格は 280 です。レコードを削除しましょう。
DELETE FROM price WHERE id = 6;
コマンドは正常に実行されました。 テーブルにクエリを実行して、削除が成功したかどうかを確認してみましょう。
出力には、レコードが正常に削除されたことが示されています。
場所
WHERE 句は、変更を加える必要がある正確な場所を指定するのに役立ちます。これは、INSERT、SELECT、UPDATE、DELETE などのステートメントと一緒に使用されます。次のデータを含む Price テーブルについて考えてみましょう。
価格が 250 未満のレコードを表示する必要があるとします。次のコマンドを実行できます。
SELECT * FROM price WHERE price < 250;
価格が 250 未満のすべてのレコードが返されました。
WHERE 句は AND ステートメントと組み合わせることができます。価格が 250 未満で ID が 3 を超える Price テーブルのすべてのレコードを表示する必要があるとします。次のコマンドを実行できます。
SELECT * FROM price WHERE id > 3 AND price < 250;
返されたレコードは 3 つだけです。 その理由は、指定されたすべての条件、つまり ID が 250 を超え、価格が XNUMX 未満である必要があるためです。これらの条件のいずれかに違反した場合、レコードは返されません。
この句は OR コマンドと組み合わせることもできます。 前のコマンドの AND を OR に置き換えて、受け取る出力の種類を確認してみましょう。
SELECT * FROM price WHERE id > 3 OR price < 250;
レコードは 2 つではなく 1 つ取得されるようになりました。これは、資格を得るレコードの場合、指定された条件の XNUMX つだけを満たしていればよいためです。
いいね
この句は、完全一致が必要なテーブル データにアクセスする際のデータ パターンを指定するために使用されます。 これは、INSERT、UPDATE、SELECT、および DELETE ステートメントと組み合わせることができます。
探しているデータのパターンを句に渡す必要があります。これにより、true または false が返されます。 句と一緒に使用できるワイルドカード文字は次のとおりです。
- %: 0 個以上の文字と一致します。
- _: 単一の文字と一致する場合。
LIKE 句の構文は次のとおりです。
SELECT field_1, field_2,... FROM tableName1, tableName2,... WHERE fieldName LIKE condition;
% ワイルドカード文字を含む句の使用方法を説明します。次のレコードを含む Book テーブルを使用します。
名前が M で始まるすべてのレコードを表示する必要があります。次のコマンドを実行します。
SELECT name FROM book WHERE name LIKE 'M%';
名前が文字 M で始まるため、すべてのレコードが返されました。4 で終わるすべての名前を表示するには、次のコマンドを実行します。
SELECT name FROM book WHERE name LIKE '%4';
条件を満たす唯一の名前であるため、名前は XNUMX つだけ返されます。
検索パターンをワイルドカードで囲むこともできます。
SELECT name FROM book WHERE name LIKE '%DB%';
% ワイルドカード以外に、LIKE 句は _ ワイルドカードと一緒に使用できます。 これはアンダースコアのワイルドカードであり、単一文字のみを検索します。
次のレコードを含む Price テーブルを操作してみましょう。
価格が 1_0 のようなレコードを確認しましょう。次のコマンドを実行します。
SELECT * FROM price WHERE price LIKE '1_0';
価格が 190 であるレコードが返されました。別のパターンを試すこともできます。
SELECT * FROM price WHERE price LIKE '_2_';
LIKE 句を NOT 演算子と一緒に使用することも可能です。これにより、指定されたパターンに一致しないすべてのレコードが返されます。例:
次のレコードを含む Price テーブルを使用します。
価格が 2 で始まらないすべてのレコードを見つけてみましょう。
SELECT * FROM price WHERE price NOT LIKE '2%';
指定されたパターンを満たさないレコードは XNUMX つだけです。
、ORDER BY
この句は、レコードを昇順または降順に並べ替えるのに役立ちます。 以下に示すように、これを SELECT ステートメントとともに使用します。
SELECT expression(s) FROM tables [WHERE condition(s)] ORDER BY exp [ ASC | DESC ];
ASC 部分も DESC 部分も追加せずにこの句を使用することも可能です。 例えば:
次のレコードを含む Price テーブルを使用します。
テーブルに対して次のコマンドを実行します。
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price;
上記のコマンドでは、価格で注文しています。 レコードは価格の昇順に並べられています。 つまり、順序を指定しない場合、デフォルトで昇順で並べ替えが行われます。
DESC オプションを指定して句を実行してみましょう。
SELECT * FROM price WHERE price LIKE '2%' ORDER BY price DESC;
レコードは、指定した価格の降順で並べ替えられています。
ORDER BY 句を ASC 属性とともに使用してみましょう。
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price ASC;
レコードは注文されていますが、価格は昇順になっています。 これは、ASC 属性も DESC 属性も指定せずに ORDER BY 句を使用する場合と似ています。
DISTINCT
この句は、テーブルからレコードを選択するときに重複を排除するのに役立ちます。 これは、一意のレコードを取得するのに役立つことを意味します。 その構文を以下に示します。
SELECT DISTINCT expression(s) FROM tableName [WHERE condition(s)];
これを説明するために、次のデータを含む Price テーブルを使用します。
テーブルから価格列を選択すると、次の結果が得られます。
SELECT price FROM Price;
価格が 250 のレコードが XNUMX つあり、重複が作成されます。 一意のレコードのみが必要です。 以下に示すように、DISTINCT 句を使用してこれらをフィルタリングできます。
SELECT DISTINCT price FROM Price;
上記の出力には重複がなくなりました。
データベーステーブルからデータをフェッチするために使用される FROM 句。 テーブルを結合するときにも役立ちます。 コマンドの構文は次のとおりです。
SELECT columnNames FROM tableName;
book テーブルの内容を表示するには、次のコマンドを実行します。
SELECT * FROM price;
この句は、データベース テーブルから XNUMX つの列だけをフェッチするのに役立ちます。 例えば:
SELECT price FROM Price;
高度なタスク
ストアドプロシージャ
手順というのは、 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 ;
次に、上記の関数を次のように呼び出すことができます。
select sumFunc(1000);
コマンドは以下を返します。
関数の使用が終わったら、削除するのがよいでしょう。これは、次の構文を使用する 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 テーブルには次のデータがあります。
価格テーブルには次のデータが含まれます。
目標は、Book テーブルの名前列と Price テーブルの価格列を XNUMX つのテーブルに結合することです。 これは、以下に示すように、内部結合を使用すると可能になります。
SELECT book.name, price.price FROM book INNER JOIN price ON book.id = price.id;
コマンドは以下を返します。
左外部結合
この結合は、左側のテーブルからすべての行を返し、もう一方のテーブルからは結合条件が 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 が表示されます。