ホーム テクノロジー データベース 後でブックマークするための究極の SQL チートシート [2023]

SQL (構造クエリ言語) は、削除、作成、更新、読み取りなどのリレーショナル データベース操作を管理するためのコマンドのセットです。

SQL は、1987 年以来リレーショナル データベースで使用されている国際標準です。SQL コマンドには次の 4 種類があります。

  • データ定義言語 (DDL) – これらのコマンドはデータベースの構造を定義します。たとえば、ドロップ、名前変更、変更、作成などです。これらはデータベース構造に影響を与えます。たとえば、データベースを作成したり、テーブルの名前を変更したりします。
  • データ操作言語 (DML) – これらのコマンドは、データを操作するために使用されます。たとえば、挿入、選択、更新、削除などです。これらはテーブルやデータベース構造には影響しませんが、テーブルに存在するデータには影響します。たとえば、新しい行を挿入したり、行内の値を更新したりします。
  • トランザクション制御言語 (TCL) – これらのコマンドは、データベース内のトランザクション処理を制御します。たとえば、ロールバック、保存、コミットなどです。これらのコマンドはデータベースに永続的な影響を与えます。たとえば、1 つのプロセスが失敗した場合でも、トランザクション全体を前の状態にロールバックします。
  • データ制御言語 (DCL) – データ制御コマンドは、ユーザーを承認し、必要な権限のみをユーザーまたはグループに付与するために使用されます。たとえば、あるユーザーは読み取り専用権限を持つことができ、別のユーザーは読み取りと書き込み権限を持つことができます。アクセス制御は、grant、deny、および revoke コマンドを使用して行われます。

以下は、最も便利なコマンドを含む SQL チートシートです。チートシートは、正しい構文と予想されるクエリ結果を含む必要なコマンドをすばやく参照するのに役立ちます。他の 2 つのタイプは非常に簡単に使用できるため、このチートシートでは DDL および DML コマンドに焦点を当てます。

データ定義と操作のクエリ

指示説明
追加列または制約 (指定に従って) を既存のテーブルに追加します。 ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name);

ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name);
他の机指定されたテーブルを変更して、テーブルの列を追加、更新、または削除します。 ALTER TABLE employee ADD last_name varchar2(255);

ALTER TABLE employee DROP COLUMN last_name;
列の変更列のデータ型を変更します。たとえば、employee テーブルの join_date 列の型を varchar2 から datetime に変更します。 ALTER TABLE employee ALTER COLUMN joining_date datetime;
全てSELECT、WHERE、HAVING で使用される論理演算子。すべての値がサブクエリ条件を満たす場合に true を返します。 SELECT employee_name, joining_date from employee WHERE employee_id = ALL (select employee_id from department_details WHERE department = 'R&D');
そしてWHERE 句のすべての条件が満たされた場合にのみ true を返す論理演算子。 SELECT employee_name, salary from employee WHERE city = 'California' AND salary > 2000;
どれでも論理演算子。サブクエリ値の 1 つでも where 句の条件を満たす場合に true を返します。 SELECT employee_id, employee_name from employee WHERE employee_id = ANY (select employee_id from department_details WHERE department = 'HR' OR department = 'R&D');
としてクエリの実行時までテーブルまたは列の別名を作成します。これは、名前が複数回使用される場合、特にテーブルの結合中に便利です。 SELECT count(employee_id) AS employees_from_houston from employee WHERE city = 'Houston';
ASC ORDER BY 句で使用され、データをasc終了順序で返します。 ORDER BY 自体は、デフォルトで結果を昇順に並べ替えます。 SELECT employee_name, joining_date, salary from employee ORDER BY employee_name ASC;
範囲内の値を選択するにはSELECT employee_name, joining_date, department_id from employee WHERE salary BETWEEN 40000 AND 100000;
場合一連のステートメントで構成されます。 true であるステートメントの値を返します。どの条件も満たされない場合は、ELSE 部分の条件が実行されます。他にない場合は、NULL を返します。 SELECT order_amount, customer_id, contact_email CASE WHEN order_amount > 3000 THEN "Eligible for 40% discount" WHEN order_amount between 2000 and 3000 THEN "Eligible for 25% discount" ELSE "Eligible for 5% discount" END FROM order_details;
データベースの作成指定された名前で新しいデータベースを作成しますCREATE DATABASE movies_development;
テーブルの作成指定されたテーブル名、列名、型を使用して新しいテーブルを作成します。 CREATE TABLE movie_info (movie_name varchar2(255), release_date datetime, lead_actor varchar2(255), music_director varchar2(255));
デフォルトCREATE または ALTER TABLE コマンドで使用される、指定された列のデフォルト値を設定します。 CREATE TABLE employee (joining_date SET DEFAULT CURRENT_DATE);

ALTER TABLE product ALTER is_available SET DEFAULT true;
消去指定されたテーブルからデータを削除しますDELETE from employee where employee_id = 345;
説明ORDER BY 句で使用され、de sc終了順序でデータを返します。 SELECT employee_name, joining_date, salary from employee ORDER BY employee_name DESC;
ドロップカラム指定されたテーブルから指定された列を削除します。 ALTER TABLE employee DROP COLUMN employee_name;
データベースを削除データベース全体を削除しますDROP DATABASE movies_development;
デフォルトを削除指定された列のデフォルト値を削除しますALTER TABLE employee ALTER COLUMN is_available DROP DEFAULT;
ドロップテーブル指定されたテーブルを削除しますDROP TABLE employee;
存在しますサブクエリにレコードが存在するかどうかを確認し、1 つ以上の結果が見つかった場合は true を返します。 SELECT employee_id, contact_number FROM employee WHERE EXISTS (SELECT employee_id, department FROM department WHERE employee_id = 345 AND department = 'HR');
からデータを選択または削除するテーブルを指定しますSELECT * FROM employee; DELETE FROM employee where employee_id = 345;
グループ化指定された列ごとにデータをグループ化し、集計関数に使用します。各国の従業員数を表示します

SELECT COUNT(employee_id), country from employee GROUP BY country;

各部門の従業員の平均評価を表示します

SELECT AVG(rating), department from employee GROUP BY department;
複数の OR 条件を使用する代わりに、WHERE 句で複数の値を一度に選択するために使用されます。 SELECT employee_name FROM employee WHERE country IN ('India', 'United Kingdom', 'Singapore', 'Australia');
索引インデックスを使用すると、データのクエリがより効率的かつ高速になります。通常、インデックスは最も検索される列に作成されます。インデックスを作成します。
CREATE INDEX idx_employee ON employee (first_name, last_name);

値が重複できない一意のインデックスを作成します。
CREATE UNIQUE INDEX idx_employee ON employee (first_name, last_name);

インデックスを削除します。
ALTER TABLE employee DROP INDEX idx_employee;
に挿入テーブルに新しい行を追加するINSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java');
無効であるNull値をチェックしますSELECT employee_id from employee where employee_name IS NULL;
NULL ではありませんnull ではない値をチェックしますSELECT employee_id, core_skill from employee where core_skill IS NOT NULL;
のように指定されたパターンに一致するすべての値を返しますSELECT employee_id, first_name, last_name where first_name LIKE '%tony';
みたいではなく指定されたパターンに一致しないすべての値を返しますSELECT employee_id, first_name, last_name where first_name NOT LIKE '%tony';
またはwhere 句の条件の 1 つが満たされる場合に true を返します。 SELECT * from employee where country = 'India' OR country = 'Australia';
注文方法結果を昇順 (デフォルト) またはクエリで指定された順序 (昇順または降順) で並べ替えます。 SELECT employee_name, salary from employee ORDER BY salary DESC;
ロウナムクエリの WHERE 句で指定された行数を返します。 SELECT * from employee where ROWNUM <= 5; This will return the first five rows in the resultset.
選択する指定された条件に基づいて、テーブルの指定された列を選択します。 * を指定すると、すべての列の値が返されます。 SELECT employee_id from employee; SELECT * from employee;
選択してくださいソーステーブルから別のコピー先テーブルにデータをコピーします。すべての列 (*) または特定の列を選択できます。 SELECT * INTO new_employee_info FROM employee; SELECT employee_name, joining_date, core_skill INTO new_employee_info FROM employee;
トップを選択テーブルから指定された数のレコードを選択しますSELECT TOP 5 employee_id from employee where employee_rating = 5;
セットUPDATE 操作中に、列の値を新しい指定値に設定します。 UPDATE employee SET first_name = 'Tony' WHERE employee_id = 345;
いくつかのサブクエリ内の条件の 1 つが満たされる場合、true を返します。 SOME は ANY コマンドに似ています。 SELECT employee_id, employee_name from employee WHERE salary > SOME (select salary from employee WHERE department = 'HR');
テーブルの切り捨てテーブルからデータを削除します。テーブルは削除されないことに注意してください。 TRUNCATE TABLE log_info;
連合結合された 2 つ以上のテーブルから個別の値を返します。重複した値も取得するには、UNION ALL を使用します。 SELECT city from employee UNION SELECT city from office_locations;
個性的指定された列に一意制約を追加します。これは、列に重複した値を含めることができないことを意味します。テーブルの作成または変更コマンド中に使用できます。 CREATE TABLE employee (employee_id int NOT NULL, UNIQUE(employee_id));

ALTER TABLE employee ADD UNIQUE(employee_id);
アップデート指定された列の値を新しい値で更新しますUPDATE employee SET first_name = 'Tony' WHERE employee_id = 345;
価値観INSERT コマンドとともに使用して、テーブルに値の新しい行を追加します。 INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java');
どこselect ステートメントの結果セットをフィルターするための条件を追加します。 SELECT * from employee WHERE salary > 20000;
SQL コマンドの早見表

集計関数

集計関数は、int や float などの数値列を操作するデータ操作コマンドです。これらは、データベース レベル自体でデータをフィルタリングおよび並べ替えるのに役立ちます。よく使用される集計関数には次のようなものがあります。

関数説明
平均指定された列の平均値を返します。 SELECT AVG(marks) from students where subject = 'English';
最小指定された列の最小値を返しますSELECT MIN(price) from product WHERE product_category = 'shoes';
マックス指定された列の最大値を返しますSELECT MAX(quantity), product_name from inventory;
カウントクエリを満たす行数を返します。従業員テーブル内のレコードの総数を表示します。

SELECT COUNT(*) from employee;

給与が 20000 を超える従業員の数を表示します

SELECT COUNT(*) from employee where salary > 20000;
指定された数値列の値の合計を返します。 SELECT SUM(marks) from students where subject = 'English';
一般的な集計関数

SQL結合

SQL 結合は、複数のテーブルのデータを接続してフィルタリングするため、非常に重要です。結合は少し注意が必要で、適切に実行しないと予期しない結果が生じる可能性があります。以下の表は、4 種類の SQL 結合を簡単に参照するのに役立ちます。

結合タイプ説明構文
内部結合結合されたテーブル内で一致するレコードを返します。交差点に似ています。 SELECT 列 1、列 2…テーブル 1 からINNER JOINテーブル 2 をテーブル 1.列 N = テーブル 2.列 N; select c.customer_id, o.order_id, c.customer_phone from customer c INNER JOIN order o on c.customer_id = o.customer_id;
完全 (外部) 結合左または右のいずれかの側に一致するすべてのレコードを返します。それは労働組合に似ています。 SELECT 列 1、列 2…テーブル 1 からFULL OUTER JOINテーブル 2 をテーブル 1.列N = テーブル 2.列N; select c.customer_id, o.order_id, c.customer_phone from customer c FULL OUTER JOIN order o on c.customer_id = o.customer_id;
左結合左側のテーブルのすべてのレコードと、右側のテーブルの条件に一致するレコードを返します。 SELECT 列 1、列 2… テーブル 1 からLEFT JOINテーブル 2 をテーブル 1.列 N = テーブル 2.列 N; select c.country_id, c.country_name, l.location_name from country c LEFT JOIN locations l on c.country_id = l.country_id;
右結合右側のテーブルのすべてのレコードと、左側のテーブルの条件に一致するレコードを返します。 SELECT 列 1、列 2… テーブル 1 からRIGHT JOINテーブル 2 をテーブル 1.列 N = テーブル 2.列 N; select c.country_id, c.country_name, l.location_name from country c RIGHT JOIN locations l on c.country_id = l.country_id;
結合の種類と構文および例

追加のリソース

SQL は、ソフトウェア開発者、データ サイエンティスト、アナリストにとって同様に重要なツールです。チートシート形式の SQL コマンドの便利なリファレンスは、時間を大幅に節約し、各キーワードの予想される出力を理解するのに役立ちます。

追加情報については、次のリソースを参照してください。

SQL チュートリアル: SQL チートシート

Intellipaat: SQL コマンドのチートシート

Web サイトのセットアップ: SQL チートシート

Mosh によるプログラミング: SQL チートシート

PostgreSQL チートシート

「後でブックマークするための究極の SQL チートシート [2023]」についてわかりやすく解説!絶対に観るべきベスト2動画

2023年版VBAシンプル時間割の使い方
【CMD2023CV】ChatGPTで「実務で使える」レベルのコンテンツ企画を生む極意 ~ベテランの暗黙知とAIの融合~【山本 悠人氏】

Share via
Copy link