シンプルクエリとは、OceanBaseデータベースの1つまたは複数のSELECTリストまたはビューから1つまたは複数の列データを取得することを指します。列の数およびそのデータ型と長さは、SELECTリストの要素によって決定されます。SELECTリストとは、SELECTキーワードの後とFROM句の前にある式のリストを指します。
2つ以上のテーブルが共通の列名を持つ場合は、列名にテーブル名を付けて限定する必要があります。SELECTリストの直前にある式には、列エイリアスcol_aliasを使用してマークできます。エイリアスはORDER BY句で使用できますが、クエリ内の他の句では使用できません。
構文
単純クエリのSELECT構文は以下のとおりです:
SELECT 列名1,列名2,列名3,... FROM テーブル;
ここで、テーブル名、フィールド名、キーワードSELECTおよびFROMは大文字と小文字を区別しません。クエリの最後にセミコロン(;)を付けることができ、複数のSQL文を同時に実行できます。SELECTステートメント内でコメントを使用して、OceanBaseデータベースオプティマイザーに指示またはヒントを渡すことができます。オプティマイザーはヒントを使用して、ステートメントの実行計画を選択します。ヒントの詳細については、Hintを参照してください。
例
従業員テーブル employee を作成し、列 employee_id、first_name、last_name、manager_id、salary にデータを挿入します。
CREATE TABLE employee (
employee_id INT,
first_name VARCHAR(50),
last_name VARCHAR(50),
manager_id INT,
salary NUMERIC
);
INSERT INTO employee VALUES(111, 'DEL', 'FA BEN', 1, 1500);
INSERT INTO employee VALUES(112, 'AXEL', 'BELL', 1, 1000);
INSERT INTO employee VALUES(113, 'CRIS', 'RACHAR', 1, 1000);
INSERT INTO employee VALUES(114, 'BlAIR', 'WALDORF', 1, 800);
テーブルの一部の列をクエリする
obclient> SELECT first_name, last_name, salary FROM employee; +------------+-----------+--------+ | FIRST_NAME | LAST_NAME | SALARY | +------------+-----------+--------+ | DEL | FA BEN | 1500 | | AXEL | BELL | 1000 | | CRIS | RACHAR | 1000 | | BlAIR | WALDORF | 800 | +------------+-----------+--------+ 4 rows in setテーブルのすべての列をクエリする
obclient> SELECT * FROM employee; +-------------+------------+-----------+------------+--------+ | EMPLOYEE_ID | FIRST_NAME | LAST_NAME | MANAGER_ID | SALARY | +-------------+------------+-----------+------------+--------+ | 111 | DEL | FA BEN | 1 | 1500 | | 112 | AXEL | BELL | 1 | 1000 | | 113 | CRIS | RACHAR | 1 | 1000 | | 114 | BlAIR | WALDORF | 1 | 800 | +-------------+------------+-----------+------------+--------+ 4 rows in setテーブルの列に対して数学的演算を行う
obclient> SELECT salary+100 FROM employee; +------------+ | SALARY+100 | +------------+ | 1600 | | 1100 | | 1100 | | 900 | +------------+ 4 rows in setテーブルの列にエイリアスを付ける
obclient> SELECT salary*12 年収 FROM employee; +--------+ | 年収 | +--------+ | 18000 | | 12000 | | 12000 | | 9600 | +--------+ 4 rows in setテーブル内のデータを文字列として連結する
obclient> SELECT first_name || '-' || last_name AS 姓名 FROM employee; +---------------+ | 姓名 | +---------------+ | DEL-FA BEN | | AXEL-BELL | | CRIS-RACHAR | | BlAIR-WALDORF | +---------------+ 4 rows in setテーブル内のデータの重複を削除する
obclient> SELECT DISTINCT MANAGER_ID FROM employee; +------------+ | MANAGER_ID | +------------+ | 1 | +------------+ 1 row in setCASE WHENステートメントを使用してテーブル内のデータをクエリするobclient> SELECT salary, CASE WHEN salary >= 1200 then '高収入' WHEN salary >= 1000 THEN '普通' ELSE 'さらに努力' END AS type FROM employee; +--------+--------------+ | SALARY | TYPE | +--------+--------------+ | 1500 | 高収入 | | 1000 | 普通 | | 1000 | 普通 | | 800 | さらに努力 | +--------+--------------+ 4 rows in set