SQLチートシート

SQLチートシートの紹介画像


このガイドには、SQLのより一般的に使用される要素のいくつかと、あまり一般的でないもののいくつかさえを文書化する便利なチートシートがあります。うまくいけば、初心者と経験者の両方のレベルの開発者がSQL言語の理解に習熟するのに役立つでしょう.

これを、開発中のクイックリファレンスとして使用したり、学習補助として使用したり、必要に応じて印刷してバインドしたりすることもできます(何でも機能します!).

ただし、チートシート自体に入る前に、SQLに慣れていない開発者向けに、まず始めに…

SQLとは

SQLは、Structured Query Languageの略です。これは、リレーショナルデータベース内でデータを保存、操作、取得するために今日のWebで選択されている言語です。ほとんどの場合、そうでない場合 すべて あなたが訪問するウェブサイトのいくつかは、それを含む何らかの方法でそれを使用します この 1.

基本的なリレーショナルデータベースは次のようになります。この例では、特にeコマース情報、具体的には販売中の製品、それらを購入するユーザー、およびこれら2つのエンティティをリンクするこれらの注文のレコードを保存します.

基本的なリレーショナルデータベース

SQLを使用すると、クエリを記述してデータベースとやり取りすることができます。クエリを実行すると、基準を満たす結果が返されます。.

次にクエリの例を示します。-

SELECT * FROM users;

このSELECTステートメントを使用して、クエリはユーザーのテーブルのすべての列からすべてのデータを選択します。次に、以下のようなデータを返します。これは通常、結果セットと呼ばれます。-

ユーザーテーブルの例

代わりに、アスタリスクのワイルドカード文字(*)を特定の列名に置き換えると、これらの列のデータのみがクエリから返されます。.

SELECT first_name、last_name FROM users;

列数を減らしたユーザーテーブルの例

WHERE句を追加することで、標準のSELECTステートメントに少し複雑さを加えることができます。これにより、返されるものをフィルタリングできます。.

SELECT * FROM製品WHERE stock_count <= 10 ORDER BY stock_count ASC;

このクエリは、結果セットのstock_count値が10未満の製品テーブルからすべてのデータを返します。.

ORDER BYキーワードの使用は、結果がstock_count列を使用して順序付けされることを意味し、最小値から最大値まで.

製品表の例

INSERT INTOステートメントを使用して、新しいデータをテーブルに追加できます。以下は、usersテーブルに新しいユーザーを追加する基本的な例です。-

ユーザーに挿入(first_name、last_name、address、email)
VALUES( 'テスター'、 'ジェスター'、 '123フェイクストリート、シェフィールド、イギリス'、 '[email protected]');

次に、クエリを再実行してユーザーのテーブルからすべてのデータを返す場合、結果セットは次のようになります。

新しい行を含むテーブルの例

もちろん、これらの例は、SQL言語で実行できる機能のごく一部を示しています。.

SQLとMySQL

以前にMySQLについて聞いたことがあるかもしれません。明確な違いがあるため、これをSQL自体と混同しないことが重要です。.

SQLとMySQLSQL それは 言語. リレーショナルデータベースを管理するクエリを記述できる構文の概要を示します。これ以上何もない.

MySQL 一方、データベースです システム サーバー上で実行されます。それ 実装する SQL言語。MySQLデータベースを管理する構文を使用してクエリを記述できます。.

MySQLに加えて、SQLを実装する他のシステムがあります。より人気のあるものは次のとおりです。

  • PostgreSQL
  • SQLite
  • Oracleデータベース
  • Microsoft SQL Server

MySQLのインストール

ウィンドウズ

MySQLをWindowsにインストールするための推奨される方法は、以下からダウンロードできるインストーラーを使用することです。 MySQLウェブサイト.

MySQL Windowsをインストールする

マックOS

macOSでは、MySQLのインストールに推奨される方法は、ネイティブパッケージを使用することです。これは、実際よりもはるかに複雑に聞こえます。本質的に、それはただダウンロードすることも含みます インストーラ.

MySQL Macをインストールする

または、次のようなパッケージマネージャーを使用する場合 自作, MySQLは次のようにインストールできます。

MySQLのインストール

現在でもWebで広く使用されている古いMySQLバージョン5.7をインストールする必要がある場合は、次のことができます。

ブリューインストール[メール保護]

MySQLの使用

MySQLがシステムにインストールされている状態で、SQLクエリを可能な限り迅速に作成して実行するには、SQL管理アプリケーションを使用して、データベースの管理をよりシンプルで簡単なプロセスにすることをお勧めします.

主に同じ機能を実行するアプリはたくさんあります。どのアプリを使用するかは、個人の好み次第です。

  • MySQLワークベンチ MySQLの所有者であるOracleが開発.
  • HeidiSQL (推奨Windows) Windows用の無料のオープンソースアプリです。 macOSおよびLinuxユーザーの場合, ワイン 最初に前提条件として必要です.
  • phpMyAdmin Webブラウザで動作する非常に人気のある代替品です.
  • 続編プロ (推奨macOS) 明確で使いやすいインターフェースのおかげで、macOSの唯一の選択肢であり、私たちのお気に入りです.

独自のデータベースの作成に時間を費やすのではなく、独自のSQLクエリを作成する準備ができたら、代わりにダミーデータをインポートすることを検討してください。.

MySQLのWebサイトには、 ダミーデータベース 無料でダウンロードしてSQLアプリにインポートできること.

ダミーデータベースMySQL

これらの私たちのお気に入りは 世界 データベース。SQLクエリの作成を練習するための興味深いデータを提供します。こちらがSequel Pro内の国テーブルのスクリーンショットです.

Sequel Proの例

この例のクエリは、エリザベス2世を国家元首とするすべての国を返します。.

Sequel Proの例

これは、人口が5,000万人以上のすべてのヨーロッパ諸国とその首都およびその人口を返します。.

Sequel Proの例

そして最後の1つは、フランス語を話す人の総数が10%を超える国でのフランス語を話す人の平均割合を返します。.

Sequel Proの例

カンニングペーパー

キーワード

SQLステートメントで使用されるキーワードのコレクション、説明、および必要に応じて例。高度なキーワードの一部には、チートシートの後半に専用のセクションがあります.

MySQLが例の横に記載されている場合、これはこの例がMySQLデータベースにのみ適用できることを意味します(他のデータベースシステムとは対照的)。.

SQLキーワード
キーワード説明
追加既存のテーブルに新しい列を追加します.

例: 「users」という名前のテーブルに「email_address」という名前の新しい列を追加します.

ALTER TABLEユーザー
ADD email_address varchar(255);
制約を追加既存のテーブルに新しい制約を作成します。これは、テーブル内のデータのルールを指定するために使用されます.

例: 列IDとSURNAMEに「user」という名前の新しいPRIMARY KEY制約を追加します.

ALTER TABLEユーザー
制約ユーザーの主キー(ID、姓)を追加します。
他の机テーブルの列を追加、削除、または編集します。上記のように、テーブルの制約を追加および削除するためにも使用できます。.

例: 「承認済み」という名前のテーブルに「承認済み」という新しいブール列を追加します.

ALTER TABLE取引
承認されたブール値を追加します。

例2: 「取引」テーブルから「承認済み」列を削除します

ALTER TABLE取引
DROP COLUMNが承認されました。
列を変更テーブルの列のデータ型を変更します.

例: 「ユーザー」テーブルで、「incept_date」列を「datetime」タイプにします.

ALTER TABLEユーザー
ALTER COLUMN incept_date datetime;
すべてすべてのサブクエリ値が渡された条件を満たす場合、trueを返します.

例: 人事部門(id 2)でタスク数が最も多いユーザーよりもタスク数が多いユーザーを返します。

SELECT first_name、surname、tasks_no
ユーザーから
WHERE tasks_no> ALL(ユーザーからのSELECTタスクWHERE department_id = 2);
そしてWHERE句内の個別の条件を結合するために使用されます.

例: イギリスのロンドンにあるイベントを返します

SELECT * FROMイベント
WHERE host_country = 'United Kingdom' AND host_city = 'London';
どれかサブクエリ値のいずれかが指定された条件を満たす場合、trueを返します.

例: 注文を受けた–注文テーブルに格納されている–数量が5を超える商品を商品テーブルから返します.

名前を選択
FROM製品
WHERE productId = ANY(SELECT productId FROM orders WHERE数量> 5);
なのでクエリの実行中にのみ存在するエイリアス値でテーブルまたは列の名前を変更します.

例: エイリアスnorth_east_user_subscriptions列

SELECT north_east_user_subscriptions AS ne_subs
ユーザーから
WHERE ne_subs> 5;
ASCORDER BYとともに使用して、昇順でデータを返します。.

例: りんご、バナナ、桃、ラディッシュ

の間に指定された範囲内の値を選択します.

例1: 100から150までの数量の在庫を選択します.

SELECT * FROM在庫
100と150の間の数量;

例2: 数量が100から150の間の在庫を選択します。または、ここでNOTキーワードを使用すると、ロジックが逆になり、指定された範囲外の値が選択されます.

SELECT * FROM在庫
数量が100と150の間にない場合;
場合条件に応じてクエリ出力を変更する.

例: ユーザーとそのサブスクリプション、およびサブスクリプションの数に基づいて判断するactivity_levelsという新しい列を返します.

SELECT first_name、surname、subscriptions
サブスクリプション> 10の場合、「非常にアクティブ」の場合
3と10の間の数量が「アクティブ」になる場合
ELSE '非アクティブ'
END AS activity_levels
FROMユーザー。
小切手列に追加できる値を制限する制約を追加します.

例1(MySQL): ユーザーテーブルに追加されたユーザーが18歳以上であることを確認します.

CREATE TABLEユーザー(
first_name varchar(255),
年齢int,
チェック(年齢> = 18)
);

例2(MySQL): テーブルがすでに作成された後にチェックを追加します.

ALTER TABLEユーザー
チェックを追加(年齢> = 18);
データベースを作成新しいデータベースを作成します.

例: 「websitesetup」という名前の新しいデータベースを作成します.

CREATE DATABASE websitesetup;
テーブルを作成新しいテーブルを作成します .

例: 「websitesetup」データベースに「users」という新しいテーブルを作成します.

CREATE TABLEユーザー(
id int,
first_name varchar(255),
姓varchar(255),
アドレスvarchar(255),
contact_number int
);
デフォルト列のデフォルト値を設定します。

例1(MySQL): Productsという新しいテーブルを作成します。このテーブルには、デフォルト値が「Placeholder Name」のname列と、デフォルト値が今日の日付のavailable_from列があります。.

CREATE TABLE製品(
id int,
name varchar(255)DEFAULT 'プレースホルダー名',
available_from日付DEFAULT GETDATE()
);

例2(MySQL): 上記と同じですが、既存のテーブルを編集します.

ALTER TABLE製品
ALTER name SET DEFAULT 'Placeholder Name',
ALTER available_from SET DEFAULT GETDATE();
削除テーブルからデータを削除する.

例: user_idが674のユーザーを削除します.

DELETE FROM users WHERE user_id = 674;
説明ORDER BYとともに使用して、降順でデータを返します.

例: ラディッシュ、ピーチ、バナナ、リンゴ

ドロップカラムテーブルから列を削除します.

例: ユーザーテーブルからfirst_name列を削除します.

ALTER TABLEユーザー
DROP COLUMN first_name
ドロップデータベースデータベース全体を削除します.

例: 「websitesetup」という名前のデータベースを削除します.

DROP DATABASE Webサイト設定;
ドロップデフォルト列のデフォルト値を削除します.

例(MySQL): 「製品」テーブルの「名前」列からデフォルト値を削除します.

ALTER TABLE製品
ALTER COLUMN name DROP DEFAULT;
ドロップテーブルデータベースからテーブルを削除します.

例: ユーザーテーブルを削除します.

DROP TABLEユーザー。
存在するサブクエリ内のレコードの存在を確認し、1つ以上のレコードが返された場合はtrueを返します.

例: 取引ファイナンスの割合が10未満のディーラーを一覧表示します.

SELECTディーラー_名前
ディーラーから
WHERE EXISTS(SELECT deal_name FROM Deals WHERE Dealership_id = Deals.Dealership_id AND Finance_percentage < 10);
からデータを選択または削除するテーブルを指定します.

例: ユーザーテーブルからデータを選択します.

SELECT area_manager
FROM area_managers
WHERE EXISTS(SELECT ProductName FROM Products WHERE area_manager_id = Deals.area_manager_id AND Price < 20);
複数のOR条件の省略形としてWHERE句と一緒に使用.

だから代わりに:-

SELECT * FROM users
WHERE国= 'USA' OR国= 'イギリス' OR国= 'ロシア' OR国= 'オーストラリア';

以下を使用できます。-

SELECT * FROM users
どこの国IN( 'USA'、 'United Kingdom'、 'Russia'、 'Australia');
に挿入テーブルに新しい行を追加する.

例: 新しい車両を追加します.

車に挿入(メーカー、モデル、走行距離、年)
値( 'Audi'、 'A3'、30000、2016);
無効です空(NULL)値のテスト.

例: 連絡先番号を指定していないユーザーを返します.

SELECT * FROM users
WHERE contact_number IS NULL;
NULLではないNULLの逆。空/ NULLでない値のテスト.
お気に入りオペランドの値がパターンに一致する場合はtrueを返します.

例: ユーザーのfirst_nameが「son」で終わる場合はtrueを返します.

SELECT * FROM users
WHERE first_name LIKE '%son';
ないレコードが条件を満たさない場合はtrueを返します.

例: ユーザーのfirst_nameが「son」で終わっていない場合はtrueを返します.

SELECT * FROM users
WHERE first_name NOT LIKE '%son';
またはWHEREと一緒に使用して、いずれかの条件が真の場合にデータを含めます.

例: シェフィールドまたはマンチェスターに住んでいるユーザーを返します.

SELECT * FROM users
WHERE city = 'Sheffield' OR 'Manchester';
注文するASCまたはDESCキーワードを使用して、結果データを昇順(デフォルト)または降順でソートするために使用されます.

例: 国をアルファベット順に返します.

国を選択してください
ORDER BY名;
ROWNUM行番号が渡された条件に一致する結果を返します.

例: 国テーブルから上位10か国を返します.

国を選択してください
WHERE ROWNUM <= 10;
選択するデータベースからデータを選択するために使用され、結果セットで返されます.

例1: すべてのユーザーからすべての列を選択します.

SELECT * FROM users;

例2: すべてのusers.xxからfirst_name列とsurname列を選択します

SELECT first_name、surname from users;
個別を選択重複する値が除外されることを除いて、SELECTと同じ.

例: ユーザーテーブルのデータを使用してバックアップテーブルを作成します.

SELECT * INTO usersBackup2020
FROMユーザー。
選択するあるテーブルからデータをコピーし、別のテーブルに挿入します.

例: ユーザーテーブルからすべての国を返し、重複する値を削除します(これは可能性が高いです)

ユーザーからDISTINCT国を選択してください。
トップを選択設定した数のレコードをテーブルから返すことができます。.

例: 車の表から上位3台の車を返します.

車からトップ3 *を選択します。
セットするUPDATEと一緒に使用して、テーブル内の既存のデータを更新します.

例: 注文テーブルのIDが642の注文の値と数量の値を更新します.

UPDATE注文
SET値= 19.49、数量= 2
WHERE id = 642;
いくつかANYと同じ.
SELECTと一緒に使用して、テーブルから一定数のレコードを返します。.

例: ユーザーテーブルから上位5人のユーザーを返します.

SELECT TOP 5 * FROM users;
切り捨てテーブルDROPに似ていますが、テーブルとそのデータを削除する代わりに、データのみを削除します.

例: セッションテーブルを空にしますが、テーブル自体はそのままにします.

TRUNCATE TABLEセッション。
連合2つ以上のSELECTステートメントの結果を結合し、個別の値のみを返します.

例: イベントとサブスクライバーテーブルから都市を返します.

イベントから都市を選択
連合
加入者から都市を選択してください。
UNION ALLUNIONと同じですが、値が重複しています.
ユニークこの制約により、列のすべての値が一意になります。.

例1(MySQL): 新しいユーザーテーブルを作成するときに、一意の制約をid列に追加します。.

CREATE TABLEユーザー(
id int NOT NULL,
名前varchar(255)NOT NULL,
一意のID)
);

例2(MySQL): 既存の列を変更してUNIQUE制約を追加します.

ALTER TABLEユーザー
一意を追加(id);
更新テーブルの既存のデータを更新します.

例: carsテーブルのIDが45の車両のマイレージとserviceDueの値を更新します.

車を更新する
SETマイレージ= 23500、serviceDue = 0
WHERE id = 45;
価値INSERT INTOキーワードと一緒に使用して、テーブルに新しい値を追加します.

例: 新しい自動車をcarsテーブルに追加します.

車に挿入(名前、モデル、年)
VALUES( 'Ford'、 'Fiesta'、2010);
どこ指定された条件を満たすデータのみを含むように結果をフィルタリングします.

例: 複数のアイテムの注文を返します.

SELECT * FROM注文
WHERE数量> 1;

コメント

コメントを使用すると、SQLステートメントのセクションを説明したり、コードをコメントアウトしてその実行を防止したりできます.

SQLには、1行と複数行の2種類のコメントがあります。.

単一行コメント

1行コメントは–で始まります。これらの2文字の後から行末までのテキストは無視されます.

-- 私の選択クエリ
SELECT * FROM users;

複数行コメント

複数行コメントは/ *で始まり、* /で終わります。終了文字が見つかるまで複数行にまたがります.

/ *
これは私の選択クエリです.
usersテーブルからすべてのデータ行を取得します
* /
SELECT * FROM users;

/ *
これは、まだ実行したくない別の選択クエリです。

SELECT * FROMタスク;
* /

MySQLデータ型

新しいテーブルを作成するとき、または既存のテーブルを編集するときは、各列が受け入れるデータのタイプを指定する必要があります.

次の例では、id列に渡されるデータはintである必要がありますが、first_name列には最大255文字のVARCHARデータ型があります。.

CREATE TABLEユーザー(
id int,
first_name varchar(255)
);

文字列データ型

文字列データ型
データ・タイプ説明
CHAR(サイズ)文字、数字、特殊文字を含めることができる固定長の文字列。 sizeパラメータは、文字列の最大長を0〜255で設定します。デフォルトは1です。.
VARCHAR(サイズ)CHAR()と同様の可変長文字列ですが、最大文字列長の範囲は0〜65535です.
BINARY(サイズ)CHAR()に似ていますが、バイナリバイト文字列を格納します.
VARBINARY(サイズ)VARCHAR()に似ていますが、バイナリバイト文字列用です。.
TINYBLOB最大長が255バイトのバイナリラージオブジェクト(BLOB)を保持します.
TINYTEXT最大長255文字の文字列を保持します。代わりにVARCHAR()を使用してください。フェッチがはるかに速いためです。.
文字サイズ)最大長が65535バイトの文字列を保持します。繰り返しますが、VARCHAR()を使用する方が適切です。.
BLOB(サイズ)最大長が65535バイトのバイナリラージオブジェクト(BLOB)を保持します.
MEDIUMTEXT最大長が16,777,215文字の文字列を保持します.
MEDIUMBLOB最大長が16,777,215バイトのバイナリラージオブジェクト(BLOB)を保持します.
長いテキスト最大長が4,294,967,295文字の文字列を保持します.
LONGBLOB最大長が4,294,967,295バイトのバイナリラージオブジェクト(BLOB)を保持します.
ENUM(a、b、cなど...)定義した値のリストから選択された、最大65535までの値を1つだけ持つ文字列オブジェクト。このリストにない値が追加されると、代わりに空白の値に置き換えられます。この点でENUMはHTMLラジオボックスに似ていると考えてください.

CREATE TABLE tシャツ(カラーENUM( ‘赤’、 ‘緑’、 ‘青’、 ‘黄色’、 ‘紫’)));
SET(a、b、cなど...)定義する値のリストから選択された、最大64個の値まで、0個以上の値を持つことができる文字列オブジェクト。この点で、SETはHTMLチェックボックスに似ていると考えてください.

数値データ型

文字列データ型
データ・タイプ説明
BIT(サイズ)デフォルトが1のビット値タイプ。値に許可されるビット数は、1から64までの値を保持できるsizeパラメーターを介して設定されます。.
TINYINT(サイズ)-128〜127の符号付き範囲と0〜255の符号なし範囲を持つ非常に小さな整数。ここで、sizeパラメーターは最大許容表示幅を指定します。これは255です。.
BOOL基本的に、列をサイズ1のTINYINTに設定する簡単な方法。0はfalseと見なされ、1はtrueと見なされます。.
ブールBOOLと同じ.
SMALLINT(サイズ)-32768〜32767の符号付き範囲と0〜65535の符号なし範囲を持つ短整数。ここで、sizeパラメーターは、許可される最大の表示幅(255)を指定します.
MEDIUMINT(サイズ)-8388608〜8388607の符号付き範囲と0〜16777215の符号なし範囲を持つ中程度の整数。ここで、sizeパラメーターは最大許容表示幅を指定します。これは255です。.
INT(サイズ)-2147483648〜2147483647の符号付き範囲と、0〜4294967295の符号なし範囲を持つ中程度の整数。ここで、sizeパラメーターは、最大許容表示幅(255)を指定します.
INTEGER(サイズ)INTと同じ.
BIGINT(サイズ)符号付き範囲-9223372036854775808〜9223372036854775807、および0〜18446744073709551615の符号なし範囲を持つ中程度の整数。ここで、sizeパラメーターは、許可される最大表示幅を指定します。これは255です。.
FLOAT(p)浮動小数点数の値。精度(p)パラメータが0〜24の場合、データ型はFLOAT()に設定され、25〜53の場合、データ型はDOUBLE()に設定されます。この動作は、値の格納をより効率的にすることです.
DOUBLE(サイズ、d)合計桁数がサイズパラメータで設定され、小数点以下の桁数がdパラメータで設定される浮動小数点数の値.
DECIMAL(サイズ、d)桁数の合計がサイズパラメータで設定され、小数点以下の桁数がdパラメータで設定される正確な固定小数点数.

サイズの最大数は65でデフォルトは10ですが、dの最大数は30でデフォルトは10です。.

DEC(サイズ、d)DECIMALと同じ.

日付/時刻データ型

日付/時刻データ型
データ・タイプ説明
日付YYYY-MM–DD形式の単純な日付。サポートされている範囲は「1000-01-01」から「9999-12-31」です。.
DATETIME(fsp)YYYY-MM-DD hh:mm:ss形式の日時。サポートされている範囲は「1000-01-01 00:00:00」から「9999-12-31 23:59:59」です。.

列定義にDEFAULTおよびON UPDATEを追加することにより、現在の日付/時刻に自動的に設定されます.

タイムスタンプ(fsp)Unixタイムスタンプ。これは、Unixエポック( ‘1970-01-01 00:00:00’ UTC)からの秒数に関連する値です。サポートされている範囲は、「1970-01-01 00:00:01」UTCから「2038-01-09 03:14:07」UTCです。.

DEFAULT CURRENT_TIMESTAMPおよびON UPDATE CURRENT TIMESTAMPを列定義に追加することにより、現在の日付/時刻に自動的に設定されます.

TIME(fsp)hh:mm:ss形式の時刻。サポートされている範囲は「-838:59:59」から「838:59:59」です。.
1年、サポート範囲は「1901」から「2155」.

オペレーター

算術演算子

算術演算子
オペレーター説明
+追加
減算
*かける
/割る
モジュロ

ビットごとの演算子

ビット演算子
オペレーター説明
ビットごとのAND
|ビットOR
^ビットごとの排他的OR

比較演算子

比較演算子
オペレーター説明
=に等しい
>より大きい
<未満
> =以上
<=以下
<>等しくない

複合演算子

複合演算子
オペレーター説明
+=等しいを追加
-=等しい
* =等しい
/ =除算が等しい
%=モジュロは等しい
&=ビットごとのAND等しい
^-=ビットごとの排他的等価
| * =ビットごとのOR等しい

機能

文字列関数

文字列関数
名前説明
ASCII特定の文字に対応するASCII値を返します.
CHAR_LENGTH文字列の文字長を返します.
CHARACTER_LENGTHCHAR_LENGTHと同じ.
CONCAT2つ以上の式を一緒に追加します.
CONCAT_WS式を一緒に追加しますが、各値の間にセパレーターがあります.
フィールド値のリスト内の値の位置に関連するインデックス値を返します.
セットで探す文字列のリスト内の文字列の位置を返します.
フォーマット数値を渡すと、カンマを含むようにフォーマットされた数値を返します(例:3,400,000).
インサート特定の文字数の特定のポイントで、ある文字列を別の文字列に挿入できます。.
指示ある文字列が別の文字列内に最初に出現したときの位置を返します.
LCASE文字列を小文字に変換します.
左から、指定された数の文字を文字列から抽出し、別の文字として返します.
長さ文字列の長さをバイト単位で返します.
探す別の文字列内で最初に出現する文字列を返します,
低いLCASEと同じ.
LPADあるストリングを別のストリングで特定の長さに左詰めする.
LTRIM指定された文字列から先行スペースを削除します.
MID任意の位置から開始して、ある文字列を別の文字列から抽出します.
ポジションある部分文字列が別の部分文字列内に最初に出現したときの位置を返します.
繰り返す文字列を繰り返すことができます
交換する文字列内の部分文字列のインスタンスを新しい部分文字列で置き換えることができます.
逆行する文字列を反転します.
正しい右から、指定された数の文字を文字列から抽出し、別の文字として返します.
RPADあるストリングを別の長さで特定の長さに右詰めします.
RTRIM指定された文字列から末尾のスペースを削除します.
スペース渡した量に等しいスペースでいっぱいの文字列を返します.
STRCMP2つの文字列の違いを比較します
SUBSTR任意の位置から開始して、ある部分文字列を別の部分文字列から抽出します.
サブストリングSUBSTRと同じ
SUBSTRING_INDEX渡された部分文字列が、渡された数値に等しい回数だけ見つかる前に、文字列から部分文字列を返します.
トリム指定された文字列から末尾と先頭のスペースを削除します。 LTRIMとRTRIMを一緒に実行する場合と同じ.
ウカセ文字列を大文字に変換する.
アッパーUCASEと同じ.

数値関数

数値関数
名前説明
ABS指定された数値の絶対値を返します.
ACOS指定された数値の逆余弦を返します.
ASIN指定された数値の逆正弦を返します.
日焼け指定された1つまたは2つの数値の逆正接を返します.
ATAN2指定された2つの数値の逆正接を返します.
AVG指定された式の平均値を返します.
CEIL与えられた小数点から上方向に最も近い整数(整数)を返します.
天井CEILと同じ.
COS指定された数値のコサインを返します.
COT指定された数値のコタンジェントを返します.
カウントSELECTクエリによって返されるレコードの量を返します.
ラジアン値を度に変換します.
DIV整数を除算できます.
EXPeを指定された数値で累乗します.
指定された小数点数から下方向に最も近い整数(整数)を返します.
最高の引数のリストの最大値を返します.
最小引数のリストの最小値を返します.
LN指定された数値の自然対数を返します
ログ指定された数値の自然対数、または指定された基数に対する指定された数値の対数を返します
LOG10LOGと同じですが、10を基準とします.
LOG2LOGと同じですが、基数2.
マックス値のセットから最高値を返します.
MIN値のセットから最小値を返します.
モッド与えられた数を残りの数で割った余りを返します.
PIPIを返します.
捕虜指定された数値を、他の指定された数値で累乗した値を返します.
パワー捕虜と同じ.
ラジアン度の値をラジアンに変換します.
ランド乱数を返します.
円形指定された数値を指定された小数点以下の桁数に丸めます.
符号指定された数値の符号を返します.
指定された数値の正弦を返します.
SQRT指定された数値の平方根を返します.
指定された値のセットを組み合わせた値を返します.
タン指定された数値のタンジェントを返します.
切り捨て指定された小数点以下の桁数に切り捨てられた数値を返します.

日付関数

日付関数
名前説明
ADDDATE日付間隔(例:10 DAY)を日付(例:20/01/20)に追加し、結果を返します(例:20/01/30).
ADDTIME時間または日付時刻(05:00)に時間間隔(例:02:00)を追加し、結果(07:00)を返す.
CURDATE現在の日付を取得する.
現在の日付CURDATEと同じ.
現在の時刻現在時刻を取得.
CURRENT_TIMESTAMP現在の日付と時刻を取得します.
呪いCURRENT_TIMEと同じ.
日付日時式から日付を抽出します.
DATEDIFF指定された2つの日付間の日数を返します.
DATE_ADDADDDATEと同じ.
DATE_FORMAT日付を指定されたパターンにフォーマットします.
DATE_SUB日付間隔(例:10 DAY)から日付(例:20/01/20)を引き、結果(例:20/01/10)を返します.
指定された日付の日を返します.
DAYNAME指定された日付の曜日名を返します.
曜日指定された日付の曜日のインデックスを返します.
DAYOFYEAR指定された日付の年間通算日を返します.
エキス指定された部分の日付から抽出します(例:20/01/20のMONTH = 01).
日から指定された日付の数値から日付を返します.
時間指定された日付から時間を返します.
最終日指定された日付の月の最終日を取得します.
現地時間現在のローカルの日付と時刻を取得します.
LOCALTIMESTAMPLOCALTIMEと同じ.
メイクデート指定された年と日数の値に基づいて、日付を作成して返します.
時間を作ります時間を作成し、指定された時間、分、秒の値に基づいてそれを返します.
マイクロセカンド指定された時刻または日時のマイクロ秒を返します.
指定された時刻または日時の分を返します.
指定された日付の月を返します.
月名指定された日付の月の名前を返します.
LOCALTIMEと同じ.
PERIOD_ADD指定された月数を指定された期間に追加します.
PERIOD_DIFF指定された2つの期間の差を返します.
四半期指定された日付の年の四半期を返します.
セカンド指定された時刻または日時の秒を返します.
SEC_TO_TIME指定された秒に基づいて時間を返します.
STR_TO_DATE日付を作成し、指定された文字列と形式に基づいてそれを返します.
SUBDATEDATE_SUBと同じ.
サブタイム時間間隔(例:02:00)を時刻または日時(05:00)から減算し、結果(03:00)を返します.
SYSDATELOCALTIMEと同じ.
時間指定された時刻または日時から時刻を返します.
TIME_FORMAT指定された形式で指定された時間を返します.
TIME_TO_SEC時間を秒に変換して返します.
時差指定された2つの時刻/日付時刻式の差を返します.
タイムスタンプ指定された日付または日時の日時値を返します.
TO_DAYS「00-00-0000」から指定された日付までに経過した日数の合計を返します.
週間指定された日付の週番号を返します.
平日指定された日付の曜日番号を返します.
WEEKOFYEAR指定された日付の週番号を返します.
指定された日付から年を返します.
YEARWEEK指定された日付の年と週番号を返します.

その他の機能

その他の機能
名前説明
置き場指定された数値をバイナリで返します.
バイナリ指定された値をバイナリ文字列として返します.
キャストあるタイプを別のタイプに変換する.
コアレス値のリストから、最初のnull以外の値を返します.
CONNECTION_ID現在の接続の場合、一意の接続IDを返します.
CONV指定された数値をある数値ベースシステムから別の数値ベースシステムに変換します.
変換する指定された値を指定されたデータ型または文字セットに変換します.
現在の使用者サーバーでの認証に使用されたユーザーとホスト名を返します.
データベース現在のデータベースの名前を取得します.
GROUP BY集計関数(COUNT、MAX、MIN、SUM、AVG)と一緒に使用して、結果をグループ化します.

例: アクティブな注文を持つユーザーの数をリストします.

SELECT COUNT(user_id)、active_orders
ユーザーから
GROUP BY active_orders;
持っている集計関数でWHEREの代わりに使用されます.

例: アクティブな注文を持つユーザーの数をリストしますが、アクティブな注文が3つを超えるユーザーのみが含まれます.

SELECT COUNT(user_id)、active_orders
ユーザーから
GROUP BY active_orders
HAVING COUNT(user_id)> 3;
IF条件がtrueの場合は値を返し、そうでない場合は別の値を返します.
IFNULL指定された式がnullと等しい場合、指定された値を返します.
無効です式がnullの場合は1を返し、それ以外の場合は0を返します.
LAST_INSERT_IDテーブルで追加または更新された最後の行の場合、自動インクリメントIDを返します.
NULLIF指定された2つの式を比較します。等しい場合はNULLが返され、それ以外の場合は最初の式が返されます.
SESSION_USER現在のユーザーとホスト名を返す.
SYSTEM_USERSESSION_USERと同じ.
ユーザーSESSION_USERと同じ.
バージョンデータベースに電力を供給するMySQLの現在のバージョンを返します.

ワイルドカード文字

SQLでは、ワイルドカードはLIKEおよびNOT LIKEキーワードで使用される特殊文字であり、高度なパターンを持つデータをより効率的に検索できます。

ワイルドカード
名前説明
ゼロ個以上の文字と同等.

例1: 姓が「息子」で終わるすべてのユーザーを検索する.

SELECT * FROM users
'%son'のような姓。

例2: 「che」というパターンを含む都市に住んでいるすべてのユーザーを検索します

SELECT * FROM users
WHERE LIKE '%che%';
_単一の文字と同等.

例: 都市に住むすべてのユーザーを検索します。任意の3文字で始まり、「チェスター」がそれに続きます.

SELECT * FROM users
「___チェスター」のような都市;
[チャーリスト]リスト内の任意の1文字と同等.

例1: 名前がJ、H、またはMで始まるすべてのユーザーを検索する.

SELECT * FROM users
WHERE first_name LIKE '[jhm]%';

例2: AからLまでの最初の文字で始まるすべてのユーザーを検索します.

SELECT * FROM users
WHERE first_name LIKE '[a-l]%';

例3: 名前がnからsまでの文字で終わっていないすべてのユーザーを検索します.

SELECT * FROM users
WHERE first_name LIKE '%[!n-s]';

キー

リレーショナルデータベースには、主キーと外部キーの概念があります。 SQLテーブルでは、これらは制約として含まれ、テーブルには主キー、外部キー、またはその両方を含めることができます。.

主キー

主キーを使用すると、テーブル内の各レコードを一意に識別できます。テーブルごとに1つの主キーのみが存在でき、この制約を任意の単一列または列の組み合わせに割り当てることができます。ただし、これは、この列内の各値が一意である必要があることを意味します.

通常、テーブルでは、主キーはID列であり、通常はAUTO_INCREMENTキーワードとペアになります。つまり、新しいレコードが作成されると、値は自動的に増加します.

例1(MySQL)

新しいテーブルを作成し、主キーをID列に設定します.

CREATE TABLEユーザー(
id int NOT NULL AUTO_INCREMENT,
first_name varchar(255),
last_name varchar(255)NOT NULL,
アドレスvarchar(255),
メールvarchar(255),
プライマリキー(ID)
);

例2(MySQL)

既存のテーブルを変更し、主キーをfirst_name列に設定します.

ALTER TABLEユーザー
主キーを追加(first_name);

外部キー

外部キーは1つまたは複数の列に適用でき、リレーショナルデータベースで2つのテーブルをリンクするために使用されます.

次の図に示すように、外部キーを含むテーブルは子キーと呼ばれ、参照キーまたは候補キーを含むテーブルは親テーブルと呼ばれます.

MySQLキー

これは基本的に、列データが2つのテーブル間で共有されることを意味します。これは、外部キーが、親テーブルにも存在しない無効なデータの挿入を防ぐためです。.

例1(MySQL)

新しいテーブルを作成し、他のテーブルのIDを参照する列を外部キーに変換します.

CREATE TABLEオーダー(
id int NOT NULL,
user_id int,
product_id int,
プライマリキー(ID),
FOREIGN KEY(user_id)REFERENCES users(id),
FOREIGN KEY(product_id)REFERENCES products(id)
);

例2(MySQL)

既存のテーブルを変更して外部キーを作成する.

ALTER TABLEオーダー
FOREIGN KEY(user_id)REFERENCES users(id)を追加します。

インデックス

インデックスは、頻繁に検索される列に割り当てることができる属性であり、データの取得をより速く効率的なプロセスにするために使用されます。.

ただし、インデックスのある列の更新には、列のない列よりも時間がかかるため、各列をインデックスにする必要があるわけではありません。これは、インデックス付きの列が更新されると、インデックス自体も更新される必要があるためです。.

インデックス
名前説明
インデックスを作成usersテーブルのfirst_name列とsurname列に「idx_test」という名前のインデックスを作成します。このインスタンスでは、重複する値が許可されています.
CREATE INDEX idx_test
ONユーザー(first_name、surname);
一意のインデックスを作成上記と同じですが、重複する値はありません.

一意のインデックスの作成idx_test
ONユーザー(first_name、surname);
ドロップインデックスインデックスを削除します.

ALTER TABLEユーザー
DROP INDEX idx_test;

参加

SQLでは、JOIN句を使用して、両方に含まれる共通の列に基づいて、複数のテーブルのデータを組み合わせた結果セットを返します。

使用できるさまざまな結合がいくつかあります。-

  • 内部結合(デフォルト): 両方のテーブルで一致する値を持つすべてのレコードを返します.
  • 左結合: 最初のテーブルのすべてのレコードと、2番目のテーブルの一致するレコードを返します.
  • 右参加: 最初のテーブルから一致するレコードとともに、2番目のテーブルからすべてのレコードを返します.
  • 完全参加: 一致した場合、両方のテーブルからすべてのレコードを返します.

結合の動作を視覚化する一般的な方法は次のとおりです。

MySQLの結合

次の例では、内部結合を使用して、ordersテーブルと3つの異なるテーブルを組み合わせた新しい統合ビューを作成します。

user_idとproduct_idを、注文したユーザーのfirst_name列とsurname列、および購入したアイテムの名前に置き換えます.

MySQLのサンプルテーブル

SELECT orders.id、users.first_name、users.surname、products.name as 'product name'
FROM注文
orders.user_id = users.idのINNER JOINユーザー
orders.product_id = products.id;のINNER JOIN製品。

次のような結果セットを返します。

MySQLのサンプルテーブル

見る

ビューは本質的にはSQL結果セットであり、データベースのラベルの下に格納されるため、クエリを再実行する必要なく、後でビューに戻ることができます。これらは、何回も必要になる可能性があるコストのかかるSQLクエリがある場合に特に便利です。同じクエリを何度も実行して同じ結果セットを生成する代わりに、一度実行してビューとして保存できます。.

ビューを作成する

ビューを作成するには、次のようにします。

CREATE VIEW priority_users AS
SELECT * FROM users
WHERE国= 'イギリス';

その後、保存された結果セットにアクセスする必要がある場合は、次のように実行できます。

SELECT * FROM [priority_users];

ビューの置き換え

CREATE OR REPLACEコマンドを使用すると、ビューを更新できます.

CREATE OR REPLACE VIEW [priority_users] AS
SELECT * FROM users
WHERE country = 'イギリス' OR country = 'USA';

ビューを削除する

ビューを削除するには、DROP VIEWコマンドを使用するだけです.

DROP VIEW priority_users;

結論

今日のWeb上のWebサイトの大部分は、何らかの方法でリレーショナルデータベースを使用しています。 SQLを使用すると、より複雑で機能的なWebサイトやシステムを作成できるため、SQLを知っておく価値のある言語になります。.

必ずこのページをブックマークしてください。将来、SQLを使用していて、特定の演算子、特定のクエリの記述方法をまったく思い出せない場合、または結合の動作について混乱している場合は、準備ができており、喜んで手助けできるチートシート.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map