後でブックマークするための究極のSQLチートシート[2022]

公開: 2022-06-17

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

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;
ALTER COLUMN 列のデータ型を変更します。 たとえば、employeeテーブルのjoining_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句で使用される、昇順でデータを返します。 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;
場合一連のステートメントで構成されます。 真のステートメントの値を返します。いずれの条件も満たされない場合、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またはALTERTABLEコマンドで使用される、指定された列のデフォルト値を設定します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;
DESC ORDER BY句で使用される、降順でデータを返します。 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;
GROUP BY 集計関数に使用される、指定された列に従ってデータをグループ化します各国の従業員数を表示する

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;
ROWNUM クエリの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 ソーステーブルから別の宛先テーブルにデータをコピーします。 すべての列(*)または特定の列を選択できます。 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つ以上のテーブルから個別の値を返します。 重複する値も取得するには、UNIONALLを使用します。 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などの数値列で機能するデータ操作コマンドです。 これらは、データベースレベル自体でデータをフィルタリングおよび並べ替えるのに役立ちます。 一般的に使用される集計関数は次のとおりです。

関数説明
AVG 指定された列の平均値を返しますSELECT AVG(marks) from students where subject = 'English';
MIN 指定された列の最小値を返しますSELECT MIN(price) from product WHERE product_category = 'shoes';
MAX 指定された列の最大値を返します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 column1、column2…from table1 INNER JOIN table2 on table1.columnN = table2.columnN; 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 column1、column2…from table1 FULL OUTER JOIN table2 on table1.columnN = table2.columnN; 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 column1、column2…from table1 LEFT JOIN table2 on table1.columnN = table2.columnN; 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 column1、column2…from table1 RIGHT JOIN table2 on table1.columnN = table2.columnN; 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コマンドのチートシート

WebsiteSetup:SQLチートシート

ProgrammingWithMosh:SQLチートシート

PostgreSQLチートシート