マインドマップギャラリー SQLマインドマップ
DDL、DML、DCL、TCL、関数など、SQL の基本構文を理解するための図...気に入ったら、「いいね!」して保存してください~
2023-10-19 17:04:04 に編集されましたSQL
データベース/テーブルが存在する場合は名前を削除
データベース/テーブル名を使用します。 データベース/テーブル名を表示します。 DESC データベース / テーブル名。
DDL
作成する
新しいデータベースを作成する
CREATE DATABASE データベース名。
新しいテーブルを作成する
CREATE TABLE テーブル名(フィールド1のデータ型[空かどうか、デフォルト値、自動インクリメントの有無、備考]、 フィールド 1 のデータ型 [空かどうか、デフォルト値、備考]);
フィールドを設定する
主キーを設定する
CONSTRAINT キー名 PRIMARY KEY (フィールド名)
外部キーを設定する
CONSTRAINT キー名 FOREIGN KEY (フィールド名) REFERENCES 主キーテーブル (主キーフィールド)
空かどうかを設定します
デフォルトの NULL / NOT NULL
設定が独特なのでしょうか?
個性的
セットアップチェック
CHECK(フィールド名判定条件)
CHECK条件を満たさない場合は値を入力できません。
デフォルト値を設定する
デフォルト
自動インクリメントを設定するかどうか
自動増加
テーブルには 1 つだけ設定できます
メモを設定する
COMMENT 'コメント名'
新しいビュー
CREATE VIEW ビュー名 AS SELECT * FROM テーブル;
新しいインデックスを作成する
新しい一意のインデックスを作成する
CREATE UNIQUE INDEX インデックス名 ON テーブル名(フィールド);
新しい単一インデックスを作成する
CREATE INDEX インデックス名 ON テーブル名(フィールド名);
新しい結合インデックスを作成する
CREATE INDEX インデックス名 ON テーブル名 (フィールド 1、フィールド 2)。
変更
テーブル名の変更
ALTER TABLE テーブル名 RENAME TO 新しいテーブル名;
フィールドの追加
ALTER TABLE テーブル名 ADD (フィールド1のデータ型[空かどうか、デフォルト値、自動インクリメントの有無、備考]);
フィールドを変更する
ALTER TABLE テーブル名 MODIFY (フィールド 1 データ型 [空かどうか、デフォルト値、増分かどうか、備考]);
フィールドの削除
ALTER TABLE テーブル名 DROP COLUMN フィールド名。
名前を変更する
落とす
テーブルの削除
テーブルのみを削除
DROP TABLE テーブル名。
関連する参照関係はまとめて削除されます
DROP TABLE テーブル名 CASCADE CONSTRAINT;
ビューの削除
DROP VIEW ビュー名;
DML
入れる
INSERT INTO テーブル名[(フィールド)] VALUES(最初のインスタンス値),(2 番目のインスタンス値);
INSERT TNTO テーブル 2 人 SELECT * FROM テーブル 1 の名前;
アップデート
UPDATEテーブル名 SET フィールド='新しい値' WHERE フィールド名='値';
WHERE 制限がない場合、フィールド内のすべてのデータが置き換えられます。
消去
テーブル名から削除;
テーブルの内容のみを削除する
切り詰める
テーブル名から切り捨てます。
テーブルの内容を削除し、テーブルを初期化します。
選択する
から
AS エイリアス
FROM ステートメントでエイリアスが設定されている場合、SELECT ステートメントではそのエイリアスを使用する必要があります。
ジオン
[内部]結合
入れ子になったループ
左/右[外側]結合
完全[外部]結合
クロスジョイン
デカルト積
連合
連合
マージと並べ替え、重複する値の削除
すべてを結合する
重複した値を削除せずにマージのみを行う
どこ
=、<、>、<=、>=
<>、!=、!<、!>、!<=、!>=
との間
WHERE フィールド名 BETWEEN n1 AND n2
NULL です / NULL ではありません
IN、AND、OR、NOT
ワイルドカードのように
%
複数の文字
-
単一の文字
[]
WHERE フィールド名 LIKE '[Character 1 Character 2]%'; の両方を満たす
^
WHERE フィールド名 LIKE '[^ 文字 1 文字 2]%' を同時に満たしていません。
ロウナム
WHERE ROWNUM <= 3
ロウイド
個性的
オブジェクト番号(1-6) ファイル番号(7-9) ブロック番号(10-15) データ番号(16-18)
条件判断
存在します
EXISTS が TRUE の場合、SELECT ステートメントのクエリ内容を返します。
どれでも
SELECT * FROM テーブル名 WHERE フィールド > ANY(サブクエリ); フィールドがどのサブクエリよりも大きい限り、SELECT * コンテンツが返されます。
いくつかの
SELECT * FROM テーブル名 WHERE フィールド > ALL (サブクエリ); フィールドがサブクエリのすべての値より大きい場合、SELECT * コンテンツが返されます。
グループ化
COUNT() / SUM() / AVG() / MAX() / MIN() / STDDEV() 標準偏差 / VARIAN()
MySQL
持っている
組み合わせ機能
巻き上げる
SELECT フィールド 1、フィールド 2、SUM (数値フィールド) FROM テーブル名 ROLLUP によるグループ化(フィールド 1,[フィールド 2]);
フィールド 1 とフィールド 2 でグループ化して合計し、次にフィールド 2 でグループ化して合計する
グループ化
SELECT フィールド 1、GROUPING(フィールド 1)、フィールド 2、ROUPING(フィールド 2)、SUM(数値フィールド) FROM テーブル名 ROLLUP によるグループ化(フィールド 1,[フィールド 2]);
値が ROLLUP によってグループ化されているかどうかを決定する
グループ化セット
SELECT フィールド 1、フィールド 2、SUM (数値フィールド) FROM テーブル名 GROUP BY GROUPING SETS(Field1,[Field2]);
フィールド 1 でグループ化して合計し、次にフィールド 2 でグループ化して合計する
キューブ
SELECT フィールド 1、フィールド 2、SUM (数値フィールド) FROM テーブル名 GROUP BY CUBE(フィールド 1,[フィールド 2]);
フィールド 1 とフィールド 2 でグループ化して合計、次にフィールド 1 でグループ化して合計、次にフィールド 2 でグループ化して合計
注文方法
ASC
説明
限界
リミット
FROM テーブル名 LIMIT n1 [OFFSET n2] (行 n1 から n2 データを取る)
MySQL
上
SELECT TOP(num) FROM テーブル名;
SQLサーバー
フェッチ
最初の n 行のみをフェッチします。
明確な
DCL
付与
プロジェクトに対する権限名をユーザー名に付与します。
選択 / 挿入 / 更新 / 削除 / 参照 / 変更 / インデックス / すべて
オラクル
GRANT オプションあり / ADMIN オプションあり
取り消す
プロジェクトの権限名をユーザー名に取り消します。
TCL
専念
ロールバック
セーブポイント
SAVEPOINT は点呼を保存します。
SAVE TRANSACTION 点呼を保存します。
選択する DISTINCT フィールド名 (重複を除外)
RELEASE SAVEPOINT 点呼を保存します。
取引
特性
原子性: トランザクションは分割できない全体です
一貫性: 関連データはトランザクション実行の前後で一貫性を保ちます (例: データベースを移動する場合、インベントリ全体が一貫している必要があります)
分離: トランザクションは互いに分離されています。
コミットされていない読み取り
コミットされた読み取り
反復可能な読み取り
シリアル化可能
耐久性: トランザクションの実行後、データは永続的です。つまり、回復できません。
ステップ
オートコミット = 0 を設定します
始める ... 専念
トランザクションの設定 / 開始 / 開始 ... 専念
コメント
- 空間
一行コメント
#
一行コメント
/* */
複数行のコメント
関数
データ形式の交換
フォーマット
CAST(フィールド AS データ型)
オラクル
SQLサーバー
テキスト処理
テキストの書式設定
TO_CHAR()
TO_CHAR(数値フィールド/日付フィールド、[FORMAT])
数値と日付をテキストに変換する
SQLサーバーなし
スプライシング
オペレーター
フィールド「シンボル」/フィールド「シンボル」/フィールド
|| 演算子
フィールド||'シンボル'/フィールド||'シンボル'/フィールド
CONCAT 演算子
Concat(フィールド,'シンボル'/フィールド,'シンボル'/フィールド)
MySQL
オラクル
SQLサーバー
指定した文字を削除する デフォルトのスペース
両側
トリム()
TRIM(フィールド,'指定された文字')
SQLサーバー
オラクル なし
TRIM('特定の文字' FROM '指定された文字列')
トリム(両方...から...)
TRIM(BOTH '指定された文字' FROM フィールド)
オラクル
SQLサーバーなし
左
LTRIM()
LTRIM(フィールド,'指定された文字');
オラクル なし
SQLサーバー
トリム(先頭...から...)
TRIM(LEADING '指定された文字' FROM フィールド)
オラクル
SQLサーバーなし
右
RTRIM()
RTRIM(フィールド,'指定された文字')
オラクル なし
SQLサーバー
トリム(トレーリング...から...)
TRIM(TRAILING '指定された文字' FROM フィールド)
オラクル
SQLサーバーなし
指定した文字で埋める デフォルトのスペース
LPAD()
LPAD(フィールド, 文字列の合計長, 'パディング文字')
オラクル なし
SQLサーバー
RPAD()
RPAD(フィールド, 文字列の合計長, 'パディング文字')
オラクル なし
SQLサーバー
スワップケース
アッパー()/ロアー()
オラクル
SQLサーバー
文字の抽出
左右()
オラクル
SQLサーバー
SUBSTR()
SUBSTR (フィールド、開始文字位置、出力文字長)
オラクル なし
SQLサーバー
部分文字列()
SUBSTRING (フィールド、開始文字位置、出力文字長)
オラクル
SQLサーバー
SUBSTRING_INDEX()
SUBSTRING_INDEX(フィールド,'インデックス',出現回数を取得)
オラクル なし
SQLサーバー
文字を置き換える
交換する()
REPLACE(フィールド,'元の文字','置換文字')
オラクル
SQLサーバー
翻訳する()
TRANSLATE(フィールド,'元の文字の組み合わせ','置換文字の組み合わせ')
SQLサーバーなし
キャラクターの位置を見つける
INSTR()
INSTR(フィールド,'指定された文字',開始文字位置,出現シーケンス番号)
MySQL
SQLサーバー
文字列の長さ
長さ()
MySQL
SQLサーバー
データ長()
SQLサーバーなし
オラクル なし
レン()
SQLサーバーなし
ヌル
IFNULL()
IFNULL(フィールド,'表示文字列')
SQLサーバー
オラクル
NULLIF()
NULLIF(フィールド 1、フィールド 2)
フィールド 1 とフィールド 2 が同じ場合、NULL が返されます。 異なる場合はフィールド 1 を返します
SQLサーバー
オラクル
NVL()
NVL(フィールド,'nullの置換値')
オラクル
SQLサーバーなし
NVL2()
NVL2(field,1,0) は、フィールドが NULL の場合は 0 を返し、それ以外の場合は 1 を返します。
オラクル
SQLサーバーなし
合体()
COALESCE(field1,field2,field3,...) は最初の非 null 値を返します
MySQL
SQLサーバー
アスキー()
ASCII('character') は、文字列の左端の文字の米国標準情報交換コードを返します。
SQLサーバー
オラクル
ふりがな
サウンドデックス()
フィードバック文字列のSOUNDEX値(音声表現値) 類似した発音でデータを出力する
SQLサーバー
日付処理
日付の書式設定
現在まで()
TO_DATE(テキストフィールド,[FORMAT])
MySQL
オラクル
TO_DATETIME()
TO_DATETIME(テキストフィールド,[FORMAT])
SQLサーバー
オラクル
STR_TO_DATE()
STR_TO_DATE('日付形式文字列','解析形式')
SQLサーバー
DATE_TO_FORMAT()
DATE_TO_FORMAT('日付形式文字列','解析形式')
SQLサーバーなし
DATE_FORMAT()
DATE_FORMAT(フィールド,'%Y%M')
SQLサーバー
年、月、日を抽出する
年月日()
MySQL
SQLサーバー
日付()
MySQL
SQLサーバー
日付時刻()
MySQL
SQLサーバーなし
タイムスタンプ()
MySQL
SQLサーバー
DATEPART()
DATEPART(時刻タイプ,フィールド名)
SQLサーバー
DATE_PART()
DATE_PART('time_type',フィールド名)
PostgreSQL
SQLサーバーなし
抽出する()
EXTRACT(time_type FROM フィールド名)
MySQL
オラクル
SQLサーバー
現在まで()
TODATE (フィールド名、time_type)
オラクル
STRFTIME()
STRFTIME('%Y' / '%M' / '%D', フィールド名)
現在の日付と時刻
日付
GETDATE()
SQLサーバー
CURDATE() 現在の日付()
MySQL
SQLサーバー
時間
時間() 現在の時刻()
MySQL
SQLサーバー
日時
今()
MySQL
SQLサーバー
SYSDATE()
MySQL
SQLサーバー
オラクル
SYSDATETIME()
SQLサーバー
離れた時間
DATEDIFF()
DATEDIFF(時刻タイプ、日付 1 フィールド、日付 2 フィールド)
日付2-日付1の間隔
MySQL
SQLサーバー
未来の時間
時間を増やす
ADD_MONTHS()
ADD_MONTHES(フィールド名, 数値)
オラクル
DATEADD()
DATEADD(time_type, num, フィールド名)
MySQL
DATE_ADD() / DATE_SUB()
DATE_ADD(フィールド名、INTERVAL num time_type) DATE_SUB(フィールド名、INTERVAL num time_type)
MySQL
SQLサーバー
将来の指定された時間
EOMONTH()
EOMONTH(フィールド,[数値]) 月の最終日 num は、月番号 1 (翌月) と -1 (前月) に調整できます。
SQLサーバー
特定の日付または時刻
曜日名()
月名()
年名()
MySQL
SQLサーバー
曜日() DAYOFMONTH() DAYOFYEAR()
MySQL
SQLサーバー
数値処理
数値の書式設定
TO_NUMBER()
TO_NUMBER (テキストフィールド)
テキストを NUMBER に変換する
天井/天井 床()
天井/床(x)
x の値を切り上げ/切り捨てて返します。
ラウンド()
ROUND(x, y)
x の四捨五入された値を返します。y は桁数を表します
TRUNC()
TRUNC(x, y)
切片数値、y は桁数を表します
演算機能
サイン()
ため息(x)
負の数の場合は -1 を返し、正の数の場合は 1 と 0 を返します。
モッド()
MOD(x,y)
x/y の余りを返します
SQRT()
SQRT(x)
x の平方根を返します
ABS()
ABS(x)
xの絶対値を返します。
PI()
PI()
pi の値を返します。FLOAT 浮動小数点型です。
べき乗関数
経験値()
経験値(x)
eのx乗を返します
力()
パワー(x,y)
x^y乗の結果を返します。
指数関数
ログ()
LOGe(x)
e を底とする x の対数
LOG10()
LOG10(x)
x の 10 を底とする対数
三角関数
罪()
SIN(角度)
角度の正弦を返します
タン()
TAN(角度)
角度の正接を返します
COS()
COS(角度)
角度のコサインを返します
一般的なデータ型
浮く
浮動小数点値
チャー
1~255の固定長文字列
INT
4 バイトの整数値。-2147483648 ~ 2147483647 の数値をサポートします。
小数/数値
固定小数点または可変精度の浮動小数点値
日付
日付値
時間
時間の価値
日時/タイムスタンプ
日時値
SELECT ウィンドウ関数([フィールド]) OVER (PARTITION BY フィールド) ORDER BY WINDOWING 句)
非常に一般的なデータ型
NCHAR
マルチバイト文字または Unicode 文字をサポートする特別な形式の CHAR
NVARCHAR
マルチバイト文字または Unicode 文字をサポートする特別な形式の TEXT
テキスト(ロング、メモ、可変長文字)
可変長テキスト
少し
バイナリ ビット値、0 または 1
本物
4バイト浮動小数点値
スモールント
2バイトの整数値、-32768~32767をサポート
タイイント
1 バイトの整数値。0 ~ 255 の数値をサポートします。
SAMLLDATETIME
日時値、分まで正確 (秒やミリ秒はありません)
バイナリ
固定長バイナリデータ(最大長255B~8000B)
ロングロー
可変長バイナリデータ、最大2GB
RAW.BINARY
可変長バイナリデータ、最大 255B
ヴァービナリー
バイナリデータになります(最大長は通常255B~8000Bです)
その他の機能
条件決定関数
もし()
IF (条件、条件が TRUE の場合の戻り値、条件が FALSE の場合の戻り値)
場合
CASE WHEN 条件 1 THEN 値 1 WHEN 条件 2 THEN 値 2 ... ELSE 値 終わり
デコード()
複数のパラメータを比較する場合
DECODE(フィールド,'文字 1','翻訳値 1','文字 2','翻訳値 2'...,'その他の値')
SQLサーバーなし
個々のパラメータを比較する場合
DECODE(フィールド,'文字',フィールド=文字の場合の戻り値、フィールド!=文字の場合の戻り値)
SQLサーバーなし
窓関数 (ウィンドウ関数)
窓関数
ソート機能
ランク
同じ順序は同じ番号で表され、省略された順序はカウントされません。例: 1、2、2、4、5
DENSE_RANK
同じ順序は同じ番号で表され、通常通り漏れなく記録される。例: 1、2、2、3、4
ROW_NUMBER
固定行番号を返す
集計関数
合計/平均/カウント/最大/最小
特別な値関数
FIRST_VALUE
グループ化後にグループ内に表示される最初の値
LAST_VALUE
グループ化後にグループ内に表示される最後の値
遅れ
左列の 1 つ上の位置の値を塗りつぶし値として使用します。
鉛
左列の 1 桁下の値を埋め込み値として使用します
比率関数
CUME_DIST
グループ化後の累積パーセンテージが現在の値以下である
PRECENT_RANK
グループ化後に表示される最初の値は 0、最後の値は 1 (100%) で、パーセンテージは出現順に割り当てられます。
ナタイル
SELECT 部門、給与計算 ナタイル(4) OVER (ORDER BY給与 DESC) AS N_tile 従業員テーブルから;
給与順に並べ替えた後の 1 マークの 4 つのグループ
RATIO_TO_REPORT
グループ化後の各行/合計のパーセンテージを計算します (データ型は浮動小数点です)
ウィンドウ操作
行
範囲
~との間
無制限の先行
無限のフォロー
現在の行
SELECT SUM(給与) OVER (部門ごとに区切る) 給料で注文 境界のない先行行間の行 および無制限の以下) 合計 従業員テーブルから;