データベース開発



SQL

意味

SQL (Structured Query Language) は、リレーショナル データベースの管理と操作に使用される構造化クエリ言語です。データベース管理システムで最も広く使用されている言語の 1 つです。

主な機能

基本的な文法

-- データのクエリ
SELECT * FROM テーブル名 WHERE 条件;

-- データの挿入
INSERT INTO テーブル名 (列 1、列 2) VALUES (値 1、値 2);

--データの更新
UPDATE テーブル名 SET カラム 1 = 値 1 WHERE 条件。

-- データの削除
DELETE FROM テーブル名 WHERE 条件。

-- テーブルの作成
CREATE TABLE テーブル名 (
    列名 1 データ型、
    カラム名2のデータ型
);

一般的なデータ型

アドバンテージ



MySQL

リレーショナルデータベース

MySQL は、クエリ言語として SQL を使用する人気のオープンソース リレーショナル データベース管理システム (RDBMS) であり、小規模から中規模、大規模のアプリケーションに適しています。

特性

使用例

mysql -u root -p
CREATE DATABASE example_db;
USE example_db;
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age INT);
INSERT INTO users (name, age) VALUES ('Alice', 30);
SELECT * FROM users;

該当するシナリオ



SQLite

軽量データベース

SQLite は、管理用に別のサーバーを必要としない組み込みデータベースであり、軽量のアプリケーションに適しています。

特性

使用例

sqlite3 example.db
CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER);
INSERT INTO users (name, age) VALUES ('Alice', 30);
SELECT * FROM users;

該当するシナリオ



PostgreSQL

PostgreSQL (Postgres とも呼ばれます) は、強力なオープンソースのオブジェクト リレーショナル データベース システム (ORDBMS) です。 30年以上にわたる活発な開発に基づいており、信頼性、機能堅牢性、パフォーマンスに定評があり、「世界で最も先進的なオープンソースデータベース」として知られています。


コア機能

技術アーキテクチャ

PostgreSQL はクライアント サーバー アーキテクチャを採用し、各接続に独立したハンドラーを割り当てるため、単一の接続のクラッシュがデータベース サーバー全体の安定性に影響を与えません。

一般的な拡張キット

Postgres のパワーは主に、その豊富なエコシステムの拡張によってもたらされます。

メリットとデメリットの比較

アドバンテージ 欠点がある
高いデータ整合性とセキュリティ 大量のデータを高頻度で書き込むと、VACUUM メカニズムによりパフォーマンスが変動する可能性があります。
複雑なデータ分析とビジネスロジックをサポート 一般に、MySQL と比較してメモリ消費量が多くなります。
オープンソース コミュニティは非常に活発で、ベンダー ロックインはありません。 設定するパラメーターが多数あるため、初心者がパフォーマンスを構成して最適化するには長い学習曲線が必要です。

該当するシナリオ



T-SQL

T-SQL の正式名は Transact-SQL で、Microsoft と Sybase によって開発された SQL 標準の拡張バージョンです。これは、Microsoft SQL Server および Azure SQL 関連サービスの中核となる通信言語です。標準 SQL と比較して、T-SQL にはプログラミング機能が追加されており、データのクエリだけでなく、複雑な論理操作も処理できます。


言語機能


T-SQL と標準 SQL の主な違い

機能の種類 標準 SQL (ANSI) T-SQL (Microsoft)
文字列の連結 二重の垂直バーを使用する || プラス記号 + を使用します
返される列の数を制限する FETCH FIRST を使用する TOPキーワードを使用する
データ型変換 CAST CAST と CONVERT (フォーマットをサポート)
プログラムロジック 基本的なお問い合わせがメインです 完全な手続き型プログラミング言語機能

基本的な文法の例

次のコードは、T-SQL で変数、論理判断、データ クエリを組み合わせる方法を示しています。

-- 変数の宣言と設定
@Threshold INT = 100 を宣言します。
@CurrentStock INT を宣言します。

-- 特定の製品の在庫を取得する
SELECT @CurrentStock = 在庫数量
製品から
WHERE 製品ID = 5;

-- 論理的な判断
IF @CurrentStock <; @しきい値
始める
    PRINT '警告: 在庫が事前に設定されたしきい値を下回っています。 ';
    -- 補充ロジックを実行します...
終了
それ以外の場合
始める
    SELECT * FROM Products WHERE ProductID = 5;
終わり

アプリケーションシナリオ

T-SQL は次の分野で広く使用されています。



T-SQLプログラム開発

T-SQL は標準 SQL を拡張して、完全なプログラム機能を提供します。変数、ロジック制御、エラー処理を通じて、開発者はデータベース レベルで複雑なビジネス ロジックを作成できます。


変数の宣言と代入

T-SQL では、すべてのカスタム変数は @ 記号で始まる必要があります。宣言には DECLARE を使用し、代入には SET または SELECT を使用します。

-- 変数を宣言する
@EmployeeCount INT を宣言します。
DECLARE @DepartmentName NVARCHAR(50);

-- 割り当て
SET @DepartmentName = 'IT 部門';

-- クエリ結果から値を割り当てる
SELECT @従業員数 = COUNT(*)
従業員から
WHERE 部門 = @部門名;

-- 結果を出力する
印刷 @EmployeeCount;

プロセス制御 IF...ELSE

IF...ELSE ステートメントを使用すると、条件に基づいてさまざまなコード ブロックを実行できます。ブロックに複数のステートメントが含まれる場合、それらのステートメントを BEGIN...END で囲む必要があります。

@StockLevel INT を宣言します。
SET @StockLevel = 10;

IF @StockLevel <; 5
始める
    印刷 '在庫が非常に少なくなっています。すぐに再入荷してください。 ';
終了
ELSE IF @StockLevel <; 20
始める
    PRINT '在庫が残りわずかとなっておりますので、再入荷をお勧めいたします。 ';
終了
それ以外の場合
始める
    プリント '在庫あり。 ';
終わり

TRY...CATCH のエラー処理

T-SQL によって提供される TRY...CATCH メカニズムは、最新のプログラミング言語 (C# や Java など) に似ており、実行中に例外をキャプチャしてプログラムの異常な中断を防ぐことができます。

試してみましょう
    -- 実行しようとするコード
    INSERT INTO Sales (OrderID、ProductID、数量)
    値 (1001, 'P01', -5); -- これにより制約エラーがトリガーされると仮定します。
終了トライ
捕獲を開始する
    -- エラー発生時の対応
    選択
        ERROR_NUMBER() AS エラー番号、
        ERROR_MESSAGE() AS エラーメッセージ、
        ERROR_SEVERITY() AS 重大度;
        
    --ロールバックトランザクション
    IF @@TRANCOUNT > 0
        トランザクションのロールバック。
エンドキャッチ


ID フィールドの代わりに名前を使用する

適用条件

利点

潜在的な問題

適用例

プロファイル タイプ データ テーブルなど:

CREATE TABLE config_types (
  name VARCHAR(50) PRIMARY KEY,
  description TEXT
);

INSERT INTO config_types (name, description) VALUES ('general', 'General settings');
SELECT * FROM config_types WHERE name = 'general';


リレーショナル データベース設計継承オブジェクト

データベース構造の設計

動物の形

このテーブルには、すべての「動物」の共通属性が格納されます。

フィールド名 データ型 説明する
id INT 動物の一意の識別子
species VARCHAR(50) 動物の種類
age INT 動物の年齢

猫テーブル

このテーブルは動物テーブルの ID を継承し、「猫」の一意の属性を格納します。

フィールド名 データ型 説明する
id INT 動物テーブルのIDに対応します
breed VARCHAR(50) 猫の品種
favorite_food VARCHAR(50) 猫の好きな食べ物

SQL テーブル作成コマンド

CREATE TABLE animal (
    id INT PRIMARY KEY AUTO_INCREMENT,
    species VARCHAR(50) NOT NULL,
    age INT NOT NULL
);

CREATE TABLE cat (
    id INT PRIMARY KEY,
    breed VARCHAR(50),
    favorite_food VARCHAR(50),
    FOREIGN KEY (id) REFERENCES animal(id)
);
    

データ挿入例

INSERT INTO animal (species, age) VALUES ('Cat', 3);

INSERT INTO cat (id, breed, favorite_food) VALUES (1, 'Siamese', 'Fish');
    

HTMLテーブル表示例

動物情報

動物ID タイプ
1 Cat 3

猫特有の情報

動物ID バラエティ 食べ物が大好き
1 Siamese Fish

説明する

この例では、animalテーブルにはすべての動物の共通属性が保存され、catテーブルには猫の固有の属性が保存されます。catテーブルの中でid参考ですanimal表形式id、これが継承関係であることを示します。

すべての動物に関する情報をクエリする

SELECT * FROM animal;
    

すべての猫に関する情報をクエリする

このクエリは、動物テーブルから継承された共通属性を含む、すべての猫に関する完全な情報を返します。

SELECT animal.id, animal.species, animal.age, cat.breed, cat.favorite_food
FROM animal
JOIN cat ON animal.id = cat.id;
    

特定の動物に関する情報 (特定の ID など) を照会します。

SELECT * FROM animal WHERE id = 1;
    

特定の猫 (特定の品種など) に関する情報をクエリする

SELECT animal.id, animal.species, animal.age, cat.breed, cat.favorite_food
FROM animal
JOIN cat ON animal.id = cat.id
WHERE cat.breed = 'Siamese';
    

説明する

これらのクエリの例では、JOIN意思animalテーブルとcatテーブルを結合して、猫に関する完全な情報を取得します。このアプローチにより、クエリ結果には継承されたプロパティと一意のプロパティの両方が含まれるようになります。



FOREIGN KEY

使用

FOREIGN KEY (外部キー) は、2 つのデータ テーブル間の関連付けを確立し、データの参照整合性を保証するために使用されます。たとえば、あるデータ テーブルのフィールド値は、別のデータ テーブルの主キーまたは一意の値を参照する必要があります。

文法

CREATE TABLE サブテーブル (
  フィールド名データ型、
  FOREIGN KEY (外部キー フィールド) REFERENCES 親データ テーブル (主キー フィールド)
);

注文と顧客などの 1 対多の関係を確立します。

-- Create parent data table (customers)
CREATE TABLE の顧客 (
  customer_id INT PRIMARY KEY,
  名前 VARCHAR(50)
);

-- サブテーブル (注文) を作成し、外部キーを設定します。
CREATE TABLE 注文 (
  order_id INT PRIMARY KEY,
  customer_id INT、
  order_date DATE、
  外部キー (customer_id) REFERENCES 顧客 (customer_id)
);

注意事項

高度な使用法

通り抜けることができるON DELETEそしてON UPDATE外部キーの動作を指定します。

CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  customer_id INT,
  order_date DATE,
  FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
  ON DELETE CASCADE
  ON UPDATE CASCADE
);

動作オプション



CREATE TABLE にコメントを追加する

COMMENT を使用してフィールドのコメントを設定します

MySQL では、次を使用できます。COMMENTフィールドにメモを追加します。

CREATE TABLE ユーザー (
  id INT PRIMARY KEY COMMENT 'ユーザー固有の識別コード',
  name VARCHAR(50) COMMENT 'ユーザー名',
  age INT COMMENT 'ユーザーの年齢'
);

COMMENT を使用してテーブルのコメントを設定します

CREATE TABLE ユーザー (
  id INT 主キー、
  名前 VARCHAR(50)、
  ageINT
) COMMENT = 'ユーザー情報テーブル';

フィールドノートを見る

フィールドのコメントは、次の構文を使用してクエリできます。

SHOW FULL COLUMNS FROM users;

フィールドノートを修正する

ALTER TABLE users MODIFY COLUMN name VARCHAR(50) COMMENT '変更されたコメント';

適用範囲

PostgreSQLの設定メモ

列のコメント users.name は 'ユーザー名';


SQL列名には予約語が使用されています

SQLクエリにおいて、フィールド名がデータベースシステムの予約語(キーワード)と競合する場合、構文エラーが発生します。この問題に対処するには、予防と解決の両面から総合的に検討する必要があります。

1. 根本的な解決策:予約語の使用を避ける(データベース設計)

これは最も推奨されるアプローチであり、問​​題の原因を取り除くことを目的としています。

2. 技術的解決策: 引用符を使用して識別記号を囲みます (プログラム コードの実装)

予約語の使用が避けられない場合 (たとえば、既存のデータベース構造を操作する場合)、フィールド名を適切な引用符で囲んで、これが SQL コマンドではなく識別子であることを SQL エンジンに明確に通知する必要があります。

データベースシステム 引用符
MySQL / MariaDB バッククォート (`) SELECT `interval`, `time` FROM table;
PostgreSQL / Oracle 二重引用符 (") SELECT "interval", "time" FROM table;
SQL Server 角括弧 ([]) SELECT [interval], [time] FROM table;

3. プログラムコードの自動化(SQLを動的に生成)

Python などのプログラミング言語では、SQL ステートメントを動的に生成する必要がある場合、生成されたステートメントが安全で正しいことを確認するために引用符を自動的に実行する関数を実装する必要があります。

4. ORMフレームワークのメリット

ORM (SQLAlchemy や Django ORM など) を使用する場合、フレームワークは異なるデータベース間の予約語と引用符の違いを自動的に処理し、基礎となる SQL 出力を抽象化します。これにより、開発作業が大幅に簡素化され、コードの安定性が向上します。



SQLの日時比較

TIMESTAMPDIFFを使用する

2 つの DATETIME フィールド間の時間差を秒単位で計算します。

SELECT * FROM table_name
WHERE TIMESTAMPDIFF(SECOND, datetime_column1, datetime_column2) < 5;

ABS(TIMESTAMPDIFF)を使用する

順序の影響を避けるために、時間差が絶対値であることを確認してください。

SELECT * FROM table_name
WHERE ABS(TIMESTAMPDIFF(SECOND, datetime_column1, datetime_column2)) < 5;

DATEDIFF を使用します (日の比較のみ)

同じ日かどうかだけを比較したい場合は、DATEDIFF を使用できます。

SELECT * FROM table_name
WHERE DATEDIFF(datetime_column1, datetime_column2) = 0;

TIMESTAMPを使用して直接減算する

MySQL など、タイムスタンプ操作をサポートするデータベースに適用されます。

SELECT * FROM table_name
WHERE ABS(UNIX_TIMESTAMP(datetime_column1) - UNIX_TIMESTAMP(datetime_column2)) < 5;


MySQL はミリ秒のタイムスタンプを処理します

あなたが提供した値1763251200000標準の **ミリ秒タイムスタンプ** (ミリ秒単位の Unix エポック時間)。

MySQL 組み込み関数 (FROM_UNIXTIME) デフォルトの処理は **第 2 レベルのタイムスタンプ ** です。したがって、使用する前にミリ秒のタイムスタンプを秒に変換する必要があります。

訂正: 1000で割ります

ミリ秒の値を $1000$ で割って、MySQL 関数に必要な第 2 レベルのタイムスタンプを取得します。

1763251200000 / 1000 = 1763251200

1. DATETIME 形式に変換する

使用FROM_UNIXTIME()第 2 レベルのタイムスタンプを標準の MySQL に変換する関数DATETIME形式:

SELECT FROM_UNIXTIME(1763251200000 / 1000);

MySQL のバージョンがミリ秒をサポートしており、結果でミリ秒の精度を維持したい場合は、2 番目のパラメータを使用できます。

SELECT FROM_UNIXTIME(1763251200000 / 1000, '%Y-%m-%d %H:%i:%s.%f');

で:

2. UNIX_TIMESTAMP(秒)に変換します。

ミリ秒値を整数に保存することが目的の場合 (例:INTまたはBIGINT) フィールドを第 2 レベルのタイムスタンプとして使用する場合は、単純な除算演算のみが必要です。

SELECT 1763251200000 / 1000;

または、データがテーブル フィールドに保存されている場合 (たとえば、フィールドの名前はtimestamp_ms):

SELECT timestamp_ms / 1000 AS unix_timestamp_s FROM your_table;

3. DATETIME/TIMESTAMP フィールドに保存します

この値を何かに挿入すると、DATETIMEまたはTIMESTAMPタイプフィールドに入力する必要がありますVALUES部分的に変換を実行します。

INSERT INTO your_table (datetime_column) 
VALUES (FROM_UNIXTIME(1763251200000 / 1000));

4. UTCタイムゾーンの扱い

FROM_UNIXTIME()この関数は、UTC タイムスタンプを MySQL サーバーに構成されたタイムゾーンに変換します。タイムスタンプが UTC に基づいており、結果も UTC にしたい場合は、サーバーまたは接続のタ​​イムゾーンが正しく設定されていることを確認するか、次のコマンドを使用する必要があります。CONVERT_TZ関数は明示的なタイムゾーン処理を実行します。



浮動小数点数形式

FORMAT() を使用する

MySQL では、使用しますFORMAT()浮動小数点数をフォーマットします。

SELECT FORMAT(123.4567, 2); -- 結果: '123.46'

ROUND()を使用する

ROUND()固定の小数点以下の桁数に四捨五入するために使用されます。

SELECT ROUND(123.4567, 2); -- 結果: 123.46

CAST() または CONVERT() を使用します。

FLOAT を DECIMAL に変換して、小数点以下の桁数を固定します。

SELECT CAST(123.4567 AS DECIMAL(10,2)); -- 結果: 123.46
SELECT CONVERT(123.4567, DECIMAL(10,2)); -- 結果: 123.46

データテーブルフィールドに適用

SELECT id, FORMAT(price, 2) AS formatted_price FROM products;

フィールドのフォーマット

データテーブル作成時に小数点以下の桁数を直接設定できます。

CREATE TABLE 製品 (
  id INT 主キー、
  価格 DECIMAL(10,2) -- 小数点以下 2 桁
);


クエリフィールドの合計

MAX()を使用する

フィールドの最大値を取得します。

SELECT MAX(price) AS max_price FROM products;

MIN()を使用する

フィールドの最小値を取得します。

SELECT MIN(price) AS min_price FROM products;

AVG()を使用する

フィールドの平均を計算します。

SELECT AVG(price) AS avg_price FROM products;

MAX、MIN、AVGを同時にクエリ

SELECT 
  MAX(price) AS max_price, 
  MIN(price) AS min_price, 
  AVG(price) AS avg_price
FROM products;

カテゴリごとに計算

SELECT category, 
       MAX(price) AS max_price, 
       MIN(price) AS min_price, 
       AVG(price) AS avg_price
FROM products
GROUP BY category;

サブクエリを使用して最大値を求める

別のクエリ結果の最大値を見つけます。

SELECT MAX(price) FROM (SELECT price FROM products WHERE category = 'electronics') AS subquery;

ORDER BY + LIMIT を使用する

ソート後の最大値を取得します。

SELECT price FROM products WHERE category = 'electronics' ORDER BY price DESC LIMIT 1;

WITH (共通テーブル式、CTE) を使用する

WITH filtered_products AS (
  SELECT price FROM products WHERE category = 'electronics'
)
SELECT MAX(price) FROM filtered_products;

幾何平均の公式

幾何平均の計算式:

GM = (x1 * x2 * ... * xn)^(1/n)

EXP() と LOG() の使用

SQL では、対数演算を使用して幾何平均を計算できます。

SELECT EXP(AVG(LOG(price))) AS geometric_mean FROM products WHERE price > 0;

POWER()を使用する

使用POWER()n 乗根を計算します。

SELECT POWER(EXP(SUM(LOG(price))), 1 / COUNT(price)) AS geometric_mean 
FROM products WHERE price > 0;

注意事項

SELECT EXP(AVG(LOG(price))) AS geometric_mean FROM products WHERE price > 0;


SQLはフィールドの標準偏差を計算します

STDDEV()を使用して標準偏差を計算します。

MySQL/MariaDB では、次を使用できます。STDDEV()標準偏差を計算します。

例:

SELECT STDDEV(salary) AS salary_stddev FROM employees;

親標準偏差とサンプル標準偏差を区別する

SQL では、標準偏差を計算する 2 つの方法が提供されています。

例:

SELECT 
    STDDEV_POP(salary) AS population_stddev, 
    STDDEV_SAMP(salary) AS sample_stddev
FROM employees;

標準偏差を手動で計算する

SQLのバージョンが対応していない場合STDDEV()、次の式を使用できます。

SELECT SQRT(
    SUM(POW(salary - (SELECT AVG(salary) FROM employees), 2)) / COUNT(salary)
) AS salary_stddev
FROM employees;

結論は



SQLのWHERE句

SQLWHERE句はテーブルから抽出するために使用されます指定した条件を満たすレコードを抽出する(列/行)。これは、データ操作言語 (DML) の最も基本的かつ重要な部分の 1 つであり、必要なデータを正確にフィルターするために使用されます。


役割と目的


基本的な文法

WHERE通常は条項が続きますFROM句の後:

SELECT column_name(s)
FROM table_name
WHERE condition;

または、情報を変更または削除するために使用される場合:

UPDATE table_name
SET column1 = value1
WHERE condition;

よく使用される比較演算子と論理演算子

WHERE演算子は条件を確立するために句で使用されます。最も一般的なものは次のとおりです。

オペレーターの種類 オペレーター 説明する
比較演算子 = 等しい
比較演算子 >, <, >=, <= より大きい、より小さい、以上、以下
比較演算子 <>または!= 等しくない
論理演算子 AND 複数の条件を同時に満たす
論理演算子 OR いずれかの条件を満たしている
論理演算子 NOT 条件が満たされていません
特殊な演算子 BETWEEN 一定の範囲内(境界を含む)
特殊な演算子 LIKE あいまい一致文字列パターン (一致%または_
特殊な演算子 IN 値はリスト内の任意の項目です
特殊な演算子 IS NULL / IS NOT NULL フィールド値が NULL かどうか

使用例

というファイルがあるとします。Employeesテーブルを含むEmployeeID, LastName(姓)、Salary(給料)とDepartment(部門)。

例 1: 単一条件

部門「営業」を持つすべての従業員を検索します。

SELECT EmployeeID, LastName
FROM Employees
WHERE Department = 'Sales';

例 2: 数値比較と論理積

給与が 50,000 以上で、部門が「HR」ではない従業員を検索します。

SELECT *
FROM Employees
WHERE Salary >= 50000 AND Department != 'HR';

例 3: BETWEEN の範囲

給与が 60,000 ~ 80,000 (両端を含む) の従業員を検索します。

SELECT *
FROM Employees
WHERE Salary BETWEEN 60000 AND 80000;

例 4: リスト IN

「マーケティング」または「財務」部門の従業員を検索します。

SELECT *
FROM Employees
WHERE Department IN ('Marketing', 'Finance');

これは次の使用と同等です。WHERE Department = 'Marketing' OR Department = 'Finance'



SQLのGROUP BY句

SQLGROUP BY条項は以下に使用されますSELECTステートメントでは、同じ値 (または複数のフィールドの値の組み合わせ) を持つ行が集計列にグループ化されます。 SQLでよく使われますサマリー機能各グループの集計値を計算するために一緒に使用されます。


役割と目的


基本的な文法

GROUP BY句が含まれている必要がありますWHERE条項、ただしその後HAVINGそしてORDER BY句の前。

SELECT 列名、集計関数(集計対象の列)
FROM テーブル名
WHEREcondition_on_rows -- (オプション) グループ化する前に単一の行をフィルタリングします。
GROUP BY column_name(s) -- グループ化に使用する列を指定します。
HAVINGcondition_on_groups -- (オプション) グループ化後のフィルターグループ
ORDER BY 列名;

重要なルール:に登場するものすべてSELECTリストにはありますが、いいえ集計関数で囲まれた列は、しなければならないに含まれるGROUP BY条項で。


使用例

というファイルがあるとします。Productsテーブルを含むCategory(製品カテゴリー)とPrice(価格)。

需要: 各製品カテゴリの平均価格と製品数量を見つけます。

SELECT Category, AVG(Price) AS AveragePrice, COUNT(ProductID) AS TotalProducts
FROM Products
GROUP BY Category;

説明例


複数列のグループ化

複数のフィールドに基づいてグループ化できます。指定されたすべてのフィールドが同じ値を持つ場合にのみ、行がグループ化されます。

需要: 各製品カテゴリ (Category) とサプライヤー (Supplier) の組み合わせごとの総売上高を求めます。

SELECT Category, Supplier, SUM(SalesAmount) AS TotalSales
FROM SalesRecords
GROUP BY Category, Supplier
ORDER BY Category, Supplier;

これにより、各行が一意のカテゴリとサプライヤーの組み合わせの合計売上高を表す結果が生成されます。


よく使われる集計関数

関数 関数
COUNT() グループ内の行数を数えます。
SUM() グループ内の数値フィールドの合計を計算します。
AVG() グループ内の数値フィールドの平均を計算します。
MAX() グループ内のフィールドの最大値を見つけます。
MIN() グループ内のフィールドの最小値を見つけます。


SQL HAVING 句

SQLでは、HAVING句はグループ (Group) の結果をフィルタリングするために使用され、通常は次のオプションとともに使用されます。GROUP BY句は一緒に使用されます。

それでもWHERE句は単一列 (Rows) の行をフィルタリングするために使用されますが、グループベースの集計値が必要な場合に便利です (例:COUNT(), SUM(), AVG()集計関数の結果を待ってグループをフィルタリングする場合は、次を使用する必要があります。HAVING句。


「HAVING」と「WHERE」の違い

特徴 WHERE句 HAVING 句
実行タイミング データをグループ化する前に元の行をフィルター処理します (GROUP BY)。 データをグループ化 (GROUP BY) した後、要約されたグループをフィルターします。
利用可能な条件 集計関数 (COUNT、SUM、AVG など) を直接使用することはできません。 フィルター条件を設定するには、集計関数を使用する必要があります。
アプリケーションオブジェクト 単一列の値。 グループの結果。

基本的な文法

SELECT 列名、集計関数(列名)
FROM テーブル名
WHEREcondition_on_rows -- (オプション) 単一行をフィルタリングします。
GROUP BY 列名
HAVINGcondition_on_groups -- (必須) フィルター グループ
ORDER BY 列名;

使用例

というファイルがあるとします。Ordersテーブルを含むCustomerID(顧客ID)とTotalAmount(ご注文の合計金額)。私たちはすべてを知りたいのです平均注文金額が500件を超える顧客の。

SQLクエリ

SELECT CustomerID, AVG(TotalAmount) AS AverageOrder
FROM Orders
GROUP BY CustomerID
HAVING AVG(TotalAmount) > 500;

説明例


複合条件の例

合計注文数が **3** で、平均注文金額が 1000** 未満であるすべての顧客を検索するとします。

SQLクエリ

SELECT CustomerID, COUNT(OrderID) AS TotalOrders, AVG(TotalAmount) AS AverageOrder
FROM Orders
GROUP BY CustomerID
HAVING COUNT(OrderID) >= 3 AND AVG(TotalAmount) < 1000;

説明例



サブクエリを使用した SQL 参照エイリアス

問題の説明

存在するSELECTクエリ内で (定義されている場合)expr1 AS field1、入ってますか?expr2で使用されるfield1

回答: いいえ、SQL クエリが実行される順序のためです。

SQL の実行順序により、別名を同じに置くことができないことが決まります。SELECT内部的に再度引用:

製品から価格 * 1.1 AS new_price、new_price + 10 AS Final_price を選択します。 -  エラー

エラーメッセージ:

Unknown column 'new_price' in 'field list'

解決

方法 1: サブクエリを使用する

サブクエリで最初に計算できますnew_price、外側のクエリで参照されます。

SELECT new_price, new_price + 10 AS final_price
FROM (SELECT price * 1.1 AS new_price FROM products) AS subquery;

方法 2: CTE を使用する (WITH ステートメント)

SQL が共通テーブル式 (CTE) をサポートしている場合に使用可能WITH単純化すると次のようになります。

WITH cte AS (
    SELECT price * 1.1 AS new_price FROM products
)
SELECT new_price, new_price + 10 AS final_price FROM cte;

方法 3: 式を繰り返す

単純な操作であれば、直接計算を繰り返すこともできます (ただし、可読性が低いためお勧めしません)。

SELECT price * 1.1 AS new_price, price * 1.1 + 10 AS final_price FROM products;

結論は



JOIN

参加紹介

JOIN は、複数のデータ テーブルの関連データをマージし、特定のフィールド (通常は外部キー) に基づいて関係を確立するために使用されます。

INNER JOIN

2 つのデータ テーブルの条件を満たすデータのみが返されます。

SELECT orders.order_id, customers.name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;

LEFT JOIN

左側のテーブルのすべてのデータを返します。右の表に該当するデータがない場合は表示されます。NULL

SELECT customers.name, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;

RIGHT JOIN

右のテーブル内のすべてのデータを返します。左の表に該当するデータがない場合は表示されます。NULL

SELECT customers.name, orders.order_id
FROM orders
RIGHT JOIN customers ON orders.customer_id = customers.customer_id;

FULL JOIN

左右のテーブルのすべてのデータを返し、一致するものがない場合はそれを表示します。NULL

MySQL は FULL JOIN をサポートしていませんが、利用可能ですLEFT JOINそしてRIGHT JOIN組み合わせシミュレーション。

SELECT customers.name, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id
UNION
SELECT customers.name, orders.order_id
FROM customers
RIGHT JOIN orders ON customers.customer_id = orders.customer_id;

CROSS JOIN

2 つのテーブルの可能なすべての組み合わせ (デカルト積) を返します。

SELECT customers.name, products.product_name
FROM customers
CROSS JOIN products;

SELF JOIN

従業員の上下関係など、同じテーブル内の関連付けに使用されます。

SELECT A.name AS employee, B.name AS manager
FROM employees A
JOIN employees B ON A.manager_id = B.employee_id;


.sql の実行時に他の .sql をインクルードする

SOURCE または \i ディレクティブを使用する

MySQL または MariaDB

`SOURCE` ディレクティブを使用して、他の `.sql` ファイルを MySQL または MariaDB スクリプトに含めることができます。
-- abc.sql
SOURCE other_file.sql;
SOURCE another_file.sql;

PostgreSQL (psql)

PostgreSQL では、「\i」ディレクティブを使用して他の「.sql」ファイルをインクルードできます。
-- abc.sql
\i other_file.sql
\i another_file.sql

バッチスクリプトを使用して実行する

SQL クライアントがファイルの直接組み込みをサポートしていない場合は、バッチ スクリプトを使用して複数の `.sql` ファイルを順番に実行できます。

Linux シェルの例

#!/bin/bash
mysql -u user -p database_name < abc.sql
mysql -u user -p database_name < other_file.sql

高度な方法: SQL ファイルの前処理

SQL クライアントがファイルのインクルードを直接サポートしていない場合は、実行前にメイン SQL ファイルを参照先の `.sql` ファイルとマージできます。

シェルスクリプトを使用してファイルをマージする

cat abc.sql other_file.sql another_file.sql > combined.sql
mysql -u user -p database_name < combined.sql

注意事項

1. **実行順序**: データ テーブルまたは関数との依存関係の問題を回避するために、含まれているファイルが正しい順序で実行されていることを確認します。 2. **ライブラリ固有の構文**: ライブラリごとにコマンド構文が異なる場合があります。対応するドキュメントを参照してください。 3. **ファイル パス**: `.sql` ファイルを参照するには、絶対パスまたは相対パスを正しく使用してください。 4. **アクセス権限**: SQL クライアントに、含まれているファイルを読み取る権限があることを確認します。

要約する

上記の方法により、SQL スクリプトをモジュール化して管理と再利用を容易にすることができます。

他の .sql ファイルをインクルードするときにパラメータを渡す

MySQL と MariaDB

MySQL と MariaDB は、`SOURCE` ディレクティブでのパラメーターの受け渡しを直接サポートしていませんが、付属の .sql ファイルで変数を使用できます。その方法は次のとおりです。

変数を使用してパラメータを渡す

1. メイン SQL ファイルに変数を設定します。
   SET @param1 = 'value1';
   SOURCE other_file.sql;
   
2. `other_file.sql` 内の変数を参照します。
   SELECT * FROM table WHERE column = @param1;
   

PostgreSQL (psql)

PostgreSQL は、「\set」 コマンドによる変数の設定と、それらを他のファイルに渡すことをサポートしています。

変数を使用してパラメータを渡す

1. メイン SQL ファイルに変数を設定します。
   \set param1 'value1'
   \i other_file.sql
   
2. `other_file.sql` で変数を使用します。
   SELECT * FROM table WHERE column = :'param1';
   

コマンドラインツールを使用してパラメータを渡す

コマンドライン経由で実行する場合、パラメータを SQL ファイルに渡すのが一般的な方法です。

MySQL コマンドラインの例

1. `sed` または他のツールを使用して、実行時にパラメータを置き換えます。
   sed "s/{param1}/value1/g" abc.sql | mysql -u user -p database_name
   
2. SQL ファイル内でプレースホルダー `{param1}` を使用し、コマンド ライン ツールに置き換えます。

PostgreSQL コマンドラインの例

1. `psql` コマンドでパラメータを直接設定します。
   psql -d database_name -v param1=value1 -f abc.sql
   
2. SQL ファイル内の変数を表すには、`:'param1'` を使用します。

コードを使用して SQL を生成する

Python や Bash などのプログラミング言語を使用して SQL を動的に生成することも、次の解決策です。 1. プログラム内のパラメータを含む SQL ファイルを動的に構築します。 2. 生成された SQL ファイルを実行します。

注意事項

1. **セキュリティ**: ユーザーが入力したパラメータを SQL に直接埋め込むことを避け、SQL インジェクションのリスクを考慮してください。 2. **環境変数**: 一部のツールは、パラメータとして渡す環境変数の使用をサポートしています。

要約する

SQL ファイルのパラメータ受け渡しは常に直接サポートされているわけではありませんが、変数、コマンドライン ツール、またはプログラミング言語を使用して、ツールとデータベースの特性に応じた柔軟性で実現できます。

ストアドプロシージャ

ストアド プロシージャ (事前保存されたルーチン) の概要

ストアド プロシージャ (ストアド ルーチンまたはストアド プロシージャ) は、事前にコンパイルされてデータベースに保存される一連の SQL ステートメントであり、呼び出しを通じて実行できるため、効率が向上し、コードの重複が削減されます。

ストアド プロシージャを作成する

DELIMITER //
CREATE PROCEDURE GetAllProducts()
BEGIN
  SELECT * FROM products;
END //
DELIMITER ;

ストアド プロシージャを呼び出す

CALL GetAllProducts();

パラメーター付きストアド プロシージャ

入力パラメータ

特定のカテゴリの製品を検索します。

DELIMITER //
CREATE PROCEDURE GetProductsByCategory(IN category_name VARCHAR(50))
BEGIN
  SELECT * FROM products WHERE category = category_name;
END //
DELIMITER ;

電話:

CALL GetProductsByCategory('electronics');

出力パラメータ

カテゴリ内のアイテムの総数を計算します。

DELIMITER //
CREATE PROCEDURE GetProductCountByCategory(IN category_name VARCHAR(50), OUT total_count INT)
BEGIN
  SELECT COUNT(*) INTO total_count FROM products WHERE category = category_name;
END //
DELIMITER ;

電話:

CALL GetProductCountByCategory('electronics', @count);
SELECT @count;

プログラムで使用するために変数を保存する

DELIMITER //
CREATE PROCEDURE CalculateTotalRevenue()
BEGIN
  DECLARE total DECIMAL(10,2);
  SELECT SUM(price) INTO total FROM sales;
  SELECT total AS total_revenue;
END //
DELIMITER ;

電話:

CALL CalculateTotalRevenue();

ストアド プロシージャで条件制御を使用する

IF条件

DELIMITER //
CREATE PROCEDURE CheckStock(IN product_id INT, OUT stock_status VARCHAR(20))
BEGIN
  DECLARE stock INT;
  SELECT quantity INTO stock FROM inventory WHERE id = product_id;

  IF stock > 10 THEN
    SET stock_status = 'In Stock';
  ELSEIF stock > 0 THEN
    SET stock_status = 'Low Stock';
  ELSE
    SET stock_status = 'Out of Stock';
  END IF;
END //
DELIMITER ;

電話:

CALL CheckStock(1, @status);
SELECT @status;

保存したプログラム内で LOOP を使用する

DELIMITER //
CREATE PROCEDURE CountDown(IN start_num INT)
BEGIN
  DECLARE i INT;
  SET i = start_num;

  loop_label: LOOP
    IF i <= 0 THEN
      LEAVE loop_label;
    END IF;
    SELECT i;
    SET i = i - 1;
  END LOOP;
END //
DELIMITER ;

電話:

CALL CountDown(5);

保存した番組を削除する

DROP PROCEDURE IF EXISTS GetAllProducts;

結論は



ストアド プロシージャのパラメータのデフォルト値

MySQL / MariaDB はパラメータのデフォルト値の直接設定をサポートしていません

MySQL および MariaDB では、ストアド プロシージャのパラメータを直接デフォルト値に設定できません (SQL Server や PostgreSQL とは異なります)。ただし、使用することは可能ですIFプリセット値をシミュレートする条件文。

方法 1: IF 条件を使用してデフォルト値を設定する

クエリを実行したいとします。usersテーブル、パラメータの場合user_id指定しない場合、デフォルトのクエリ ID は 1 です。

区切り文字 //
CREATE PROCEDURE GetUserById(IN user_id INT)
始める
    user_id が NULL の場合
        SET user_id = 1; --デフォルト値
    終了 IF;

    SELECT * FROM ユーザー WHERE id = user_id;
終了 //
区切り文字;

実行方法

CALL GetUserById(NULL); -- ID = 1 をクエリします
CALL GetUserById(5); -- クエリ ID = 5

方法 2: COALESCE() を使用してデフォルト値を設定する

COALESCE()パラメータが NULL の場合、指定されたデフォルト値を返します。

DELIMITER //
CREATE PROCEDURE GetUserById(IN user_id INT)
BEGIN
    SELECT * FROM users WHERE id = COALESCE(user_id, 1);
END //
DELIMITER ;

実行方法

CALL GetUserById(NULL); -- デフォルトは 1 です
CALL GetUserById(10); -- クエリ ID = 10

方法 3: オプションのパラメーターを使用する (回避策)

パラメーターをオプションにしたい場合は、複数のストアド プロシージャを作成できます。例えば:

DELIMITER //
CREATE PROCEDURE GetAllUsers()
BEGIN
    SELECT * FROM users;
END //

CREATE PROCEDURE GetUserById(IN user_id INT)
BEGIN
    SELECT * FROM users WHERE id = user_id;
END //
DELIMITER ;

実行方法

CALL GetAllUsers(); -- パラメーターなし、すべてをクエリします
CALL GetUserById(3); -- クエリ ID = 3

結論は



ストアド プロシージャの戻り値

方法 1: OUT パラメーターを使用して値を返す

MySQL/MariaDBのストアドプロシージャはサポートされていませんRETURNクエリ結果を返しますが、使用できますOUTパラメータは値を返します。

DELIMITER //
CREATE PROCEDURE GetUserCount(OUT user_count INT)
BEGIN
    SELECT COUNT(*) INTO user_count FROM users;
END //
DELIMITER ;

ストアド プロシージャを呼び出して戻り値を取得する

CALL GetUserCount(@total);
SELECT @合計; -- ユーザー数を表示

方法 2: SELECT を使用して結果セットを返す

クエリ結果を直接返したい場合は、SELECTそれでおしまい:

DELIMITER //
CREATE PROCEDURE GetUserById(IN user_id INT)
BEGIN
    SELECT * FROM users WHERE id = user_id;
END //
DELIMITER ;

ストアド プロシージャの呼び出し

CALL GetUserById(5); -- ID 5 のユーザーをクエリします。

方法 3: RETURN を使用して単一の値を返す

MySQL はサポートしていますが、RETURNですが、返すことができるのは 1 つの値のみで、通常はプロセスを制御するために使用されます。

区切り文字 //
プロシージャの作成 GetMaxSalary()
始める
    DECLARE max_salary DECIMAL(10,2);
    SELECT MAX(salary) INTO max_salary FROM 従業員;
    max_salary を返します。 -- ただし、これは MySQL に値を直接返しません。
終了 //
区切り文字;

MySQL は直接はできませんCALLRETURN 値を取得するには、OUT パラメータを使用することをお勧めします。

DELIMITER //
CREATE PROCEDURE GetMaxSalary(OUT max_salary DECIMAL(10,2))
BEGIN
    SELECT MAX(salary) INTO max_salary FROM employees;
END //
DELIMITER ;
CALL GetMaxSalary(@max);
SELECT @max; -- 最高給与を表示します

方法 4: 複数の値を返す

複数使用するOUTパラメーターはさまざまな計算結果を返します。

DELIMITER //
CREATE PROCEDURE GetUserStats(OUT total_users INT, OUT avg_age DECIMAL(5,2))
BEGIN
    SELECT COUNT(*) INTO total_users FROM users;
    SELECT AVG(age) INTO avg_age FROM users;
END //
DELIMITER ;

ストアド プロシージャを呼び出して複数の戻り値を取得する

CALL GetUserStats(@total, @avg);
@合計、@平均を選択します。 -- ユーザーの総数と平均年齢を表示します

結論は



CALL ストアド プロシージャの外部での戻り値の使用

方法 1: OUT パラメータを使用し、変数に格納する

MySQL ストアド プロシージャには次の方法でアクセスできます。OUTパラメータは値を返します。これは CALL の外部で使用できます。SELECTこの値を取得します。

ストアド プロシージャの作成

DELIMITER //
CREATE PROCEDURE GetTotalUsers(OUT total_users INT)
BEGIN
    SELECT COUNT(*) INTO total_users FROM users;
END //
DELIMITER ;

ストアド プロシージャを呼び出し、戻り値を使用する

CALL GetTotalUsers(@total);
SELECT @total AS UserCount; -- CALL の外で戻り値を使用する

方法 2: 変数を使用して返されたクエリ結果を保存する

ストアド プロシージャが使用する場合SELECT返された結果を変数に直接保存することはできませんが、変数を使用することはできます。INSERT INTO ... SELECT

ストアド プロシージャの作成

DELIMITER //
CREATE PROCEDURE GetMaxSalary()
BEGIN
    SELECT MAX(salary) AS max_salary FROM employees;
END //
DELIMITER ;

変数を使用してクエリ結果にアクセスする

一時テーブルを作成します temp_result (max_salary DECIMAL(10,2));

INSERT INTO temp_result EXECUTE GetMaxSalary();

temp_result から max_salary を選択します。 -- CALL 以外で使用される

方法 3: プリペアド ステートメントを使用して結果に動的にアクセスする

ストアド プロシージャによって生成された結果に変数でアクセスする必要がある場合は、次のように使用できます。PREPAREそしてEXECUTE

ストアド プロシージャの作成

DELIMITER //
CREATE PROCEDURE GetUserById(IN user_id INT)
BEGIN
    SELECT name FROM users WHERE id = user_id;
END //
DELIMITER ;

変数の呼び出しと保存

SET @sql = 'CALL GetUserById(5)';
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

結論は



MySQL関数コールバック

問題の説明

MySQL/MariaDBではストアドファンクション(関数)を返すことができませんSELECT結果セット。それ以外の場合はエラーが発生します。

ERROR 1415 (0A000): Not allowed to return a result set from a function

解決

方法 1: 代わりにストアド プロシージャを使用する

関数は結果セットを返すことができませんが、ストアド プロシージャは結果セットを返すことができます。

間違った関数:

区切り文字 //
関数の作成 GetUsers()
返品表
始める
    RETURN (ユーザーから * を選択); -- これは許可されていません
終了 //
区切り文字;

正しいストアド プロシージャ:

DELIMITER //
CREATE PROCEDURE GetUsers()
BEGIN
    SELECT * FROM users;
END //
DELIMITER ;

ストアド プロシージャを呼び出す:

CALL GetUsers();

方法 2: 関数を使用して単一の値を返す

単一の値 (カウントや最大値など) のみを返す必要がある場合は、次のように使用できます。RETURN

DELIMITER //
CREATE FUNCTION GetUserCount()
RETURNS INT DETERMINISTIC
BEGIN
    DECLARE total INT;
    SELECT COUNT(*) INTO total FROM users;
    RETURN total;
END //
DELIMITER ;

使用機能:

SELECT GetUserCount();

方法 3: 一時テーブルを使用する

関数内で複数行の結果を返す必要がある場合は、関数で一時テーブルにデータを挿入し、それを外部からクエリすることができます。

DELIMITER //
CREATE FUNCTION PopulateTempUsers()
RETURNS INT DETERMINISTIC
BEGIN
    CREATE TEMPORARY TABLE IF NOT EXISTS temp_users AS (SELECT * FROM users);
    RETURN 1;
END //
DELIMITER ;

一時テーブルを使用してデータを読み取ります。

SELECT PopulateTempUsers();
SELECT * FROM temp_users;

結論は



HeidiSQL

導入

HeidiSQL は、MySQL、MariaDB、PostgreSQL、MS SQL Server をサポートする無料のオープンソース SQL クライアントです。データベースの管理、SQL クエリの実行、データのインポート/エクスポートなどを行うための GUI を提供します。

主な機能

ダウンロードしてインストールする

1. 公式 Web サイトにアクセスして HeidiSQL をダウンロードします。https://www.heidisql.com/download.php2. インストーラーを実行し、指示に従ってインストールを完了します
3. HeidiSQL を開いて新しい接続をセットアップします

MySQL/MariaDB に接続する

1.HeidiSQLを起動する
2.「追加」をクリックして新しい接続を作成します
3. 設定:
   - ホスト名/IP: 127.0.0.1 またはリモートサーバー IP
   - ユーザー名: root または他のユーザー
   - パスワード: 対応するパスワード
   - ポート: 3306 (MySQL/MariaDB)
4. 「開く」をクリックしてデータベースに接続します。

SQLクエリを実行する

HeidiSQL クエリ ウィンドウに SQL ステートメントを入力します。

SELECT * FROM users WHERE status = 'active';

「実行」ボタンをクリックして結果を表示します。

データのインポート/エクスポート

SQLのエクスポート

1.データベースを右クリック→「SQLのエクスポート」を選択します。
2. エクスポートするデータテーブルを選択します
3. エクスポート形式を設定します (.sql、.csv、.json)
4.「エクスポート」をクリックします。

SQLのインポート

1. HeidiSQL を開き、ターゲット データベースを選択します
2.「ツール」→「SQLファイルの実行」をクリックします。
3. .sql ファイルを選択して実行します。

ユーザー権限を管理する

1.「ツール」→「ユーザー権限の管理」と入力します。
2. 管理するユーザーを選択します
3. データベース権限を設定します (SELECT、INSERT、UPDATE、DELETE など)。
4.「保存」をクリックします。

結論は



HeidiSQL が新しいストアド プロシージャを追加

ステップ 1: データベースに接続する

1. HeidiSQL を起動します。
2. MySQL サーバーまたは MariaDB サーバーに接続します。
3. 左側のデータベースリストからターゲットデータベースを選択します。

ステップ 2: 新しいストアド プロシージャを作成する

1. 左側のデータベース名を右クリックし、「新規作成」→「プログラムの保存」を選択します。
2. HeidiSQL は新しい SQL 編集ウィンドウを開き、デフォルトのストアド プロシージャ テンプレートを提供します。

ステップ 3: ストアド プロシージャを作成する

以下は、users テーブル内のすべてのデータを返す簡単な例です。

DELIMITER //
CREATE PROCEDURE GetAllUsers()
BEGIN
    SELECT * FROM users;
END //
DELIMITER ;

ステップ 4: ストアド プロシージャを実行する

1. [実行] ボタン (緑色の稲妻) をクリックします。
2. 実行が成功すると、左側の「プログラムの保存」列にプログラムが表示されます。

ステップ 5: ストアド プロシージャをテストする

CALL GetAllUsers();

上級: パラメーターを使用したスト​​アド プロシージャ

ユーザー ID に基づくクエリなど、データをフィルタリングするパラメータを渡します。

DELIMITER //
CREATE PROCEDURE GetUserById(IN user_id INT)
BEGIN
    SELECT * FROM users WHERE id = user_id;
END //
DELIMITER ;

パラメータを指定してストアド プロシージャを呼び出します。

CALL GetUserById(1);

保存した番組を削除する

DROP PROCEDURE IF EXISTS GetAllUsers;

結論は



データベースアプリケーション開発ソリューション

今日のソフトウェア開発環境では、データベース アプリケーションは単純なデータ ストレージから、AI、エッジ コンピューティング、自動化された運用とメンテナンスを統合する包括的なソリューションへと進化しました。現在主流の開発モデルは次のとおりです。


AI統合とRAGアーキテクチャソリューション

大規模言語モデル (LLM) の人気に伴い、検索拡張生成 (RAG) が開発標準になりました。このタイプのソリューションは、非構造化データのベクトル化と取得に重点を置いています。

サーバーレスおよびクラウドネイティブのソリューション

運用とメンテナンスを簡素化し、初期コストを削減するために、開発者は自動スケーリング機能を備えたデータベース サービスを選択する傾向があります。これは特に Web アプリケーションで人気があります。

フルエンド型安全開発ソリューション

TypeScript エコシステムでは、データベース定義をフロントエンド型と同期させることがシステムの安定性を確保する鍵となります。

分散型およびエッジデータベースソリューション

グローバル アクセスに対応し、遅延を短縮するために、データをユーザーの近くに展開することがトレンドになっています。


開発計画比較表

プランカテゴリー テクノロジーを代表する 主な利点
AIファースト pgvector, Milvus セマンティック検索と知識ベースの構築をサポート
サーバーレス型 Supabase, Vercel Postgres 負担のない運用と保守、量に応じた料金請求
効率開発型 Drizzle ORM, Prisma 極めて高いタイプの安全性と開発スピード
分散型アーキテクチャ CockroachDB, TiDB クロスリージョン展開、自動フォールト トレランス


データベース アプリケーションのフロントエンド インターフェイス

最新のデータベース アプリケーション開発では、フロントエンドはもはやデータを提示するだけでなく、バ​​ックエンド データベースとの型の同期、状態管理、サーバー側のレンダリング パフォーマンスも重視しています。現在の主流の選択肢は次のとおりです。


React エコシステムとメタフレームワーク

これは現在、最高の市場シェアと最も豊富なコミュニティ サポートを持つソリューションであり、特に複雑なデータベース管理システムに適しています。

Vue エコシステム ソリューション

シンプルな学習曲線と高度に統合されたツール チェーンで知られ、中規模および大企業のバックエンド管理システムに深く愛されています。

タイプ セーフティおよび UI コンポーネント ツール

開発効率を向上させ、データ送信エラーを減らすために、最新のフロントエンドは次のツールに大きく依存しています。

ローコードおよび社内ツール開発

企業内で使用されるデータベース管理インターフェイスの場合、開発者は多くの場合、より高速な統合ソリューションを選択します。


フロントエンドソリューション選択比較表

スキーム名 該当するシナリオ 主な利点
Next.js + Tailwind SaaS 製品、最新の Web アプリケーション SEO に配慮した究極のパフォーマンス最適化
Vue + Element Plus 企業内部のバックエンドおよび管理システム 豊富なコンポーネントと非常に迅速な開発
TanStack Query データ更新頻度が高いアプリケーション 強力なキャッシュ管理と自動同期
Retool 緊急時の内部メンテナンスツール ドラッグ&ドロップなのでCSSを書く必要がほとんどありません


データベース Web UI

最新のデータベース Web 管理ツールを使用すると、チームはデスクトップ ソフトウェアをインストールすることなく、ブラウザーを介してデータに直接アクセスできます。機能的な位置付けに応じて、以下の 4 つのカテゴリに分類されます。


1. ユニバーサル管理ツール

このタイプのツールは、複数のデータベース接続 (MySQL、PostgreSQL、SQL Server など) をサポートしており、多様な環境を管理する開発者に適しています。

2. データベース固有の管理インターフェイス

オリジナルのメーカーまたはコミュニティによって特定のデータベース向けに徹底的に最適化された UI。

3. ローコードとスプレッドシートのインターフェイス

データベースを Excel に似た直感的なインターフェイスに変換し、技術者以外のユーザーや社内バックエンドの迅速な構築に適しています。

4. クラウドプラットフォームネイティブインターフェース

データがクラウド サービス プロバイダーでホストされている場合、通常はネイティブ Web コンソールが最高レベルの統合を実現します。



CloudBeaver

CloudBeaver は、DBeaver チームによって開発されたオープンソースの Web ベースのデータベース管理ソリューションです。 Java バックエンドと React フロントエンド アーキテクチャを使用して、ユーザーがブラウザを通じてさまざまなデータベースを安全に管理できるようにします。これは、リモート アクセスやチーム コラボレーションが必要なシナリオに非常に適しています。


コア機能

Community Edition と Enterprise Edition の違い

CloudBeaver は、オープンソースの Community Edition (Community) と商用の Enterprise Edition (Enterprise) を提供します。主な違いは、高度な機能のサポートにあります。

特徴 コミュニティ エンタープライズ (エンタープライズ)
SQLデータベースのサポート 最も主流の SQL をサポート NoSQL (MongoDB、Redis) を含む
クラウドサービスの統合 基本的な配線 AWS、GCP、Azure リソースの参照のネイティブ サポート
認証 アカウントのパスワード SSO、SAML、LDAP、Kerberosをサポート
高度なツール 基本的なクエリ AIアシスタント(SQL生成)、ビジュアルクエリビルダー

該当するシナリオ

CloudBeaverのインストール方法:

CloudBeaver の最も推奨されるインストール方法は、必要な Java 環境とドライバーがすべてパッケージ化されている Docker を使用することです。主な展開パスは 3 つあります。


1. Docker を使用して迅速に開始する

これは最も簡単な方法で、1 行の命令を実行するだけでサービスを開始できます。デフォルトでは、ポート 8978 で待機します。

docker run --name cloudbeaver -d -p 8978:8978 dbeaver/cloudbeaver:latest

実行後、ブラウザ入力を開くhttp://localhost:8978設定ウィザードに入ることができます。

2. Docker Compose を使用する (本番環境に推奨)

データの永続性は Compose ファイルを通じて簡単に管理でき、コンテナーの再起動後に設定が失われないようにします。


version: '3'
services:
  cloudbeaver:
    image: dbeaver/cloudbeaver:latest
    container_name: cloudbeaver
    restart: unless-stopped
    ports:
      - "8978:8978"
    volumes:
      - ./cloudbeaver-data:/opt/cloudbeaver/workspace

上記の内容を名前を付けて保存しますdocker-compose.yml、実行しますdocker-compose up -d

3. スタンドアロン実行ファイルのインストール(スタンドアロン)

環境で Docker を使用できない場合は、コンパイルされたバイナリ ファイルをダウンロードして手動でインストールできます。

インストール後の初期設定

初めて Web インターフェイスに入ると、システムは次の設定を案内します。




email: [email protected]
T:0000
資訊與搜尋 | 回dev首頁
email: Yan Sa [email protected] Line: 阿央
電話: 02-27566655 ,03-5924828
阿央
泱泱科技
捷昱科技泱泱企業