後でブックマークするための究極のSQLチートシート[2022]
公開: 2022-06-17SQL(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; |
集計関数
集計関数は、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チートシート