ポケット詳解 SQL辞典 [第3版]

概 要

SQLは最も普及したデータベース操作言語です。本書は、PostgreSQL、MySQL、SQLite、Oracle、SQL Server、DB2、Accessの計7種類のデータベースSQLに対応し、命令・関数を用例やサンプルを交えて解説したリファレンスです。各データベースが対応している命令・関数が一目でわかるので、複数のデータベースを利用している場合にも便利です。さらに第3版では、プログラムインターフェイスにPHP7、Python、Rubyも追加しています。

著者 堀江美彦
価格 本体2200円(税別)
ISBN 978-4-7980-4823-9
発売日 2016/10/31
判型 四六
ページ数 796
CD/DVD
ダウンロード
表紙イメージ
購入 アマゾンで購入する
楽天で購入する

※リンク先によっては、販売ページが用意されていないことがあります。あらかじめご了承ください。

新しいウィンドウで開く 書籍購入のご案内

サポート

サポート情報は以下からご参照下さい。

サポート情報へのリンク

目次

●第0章 SQLの基本とトレーニング

リレーショナル・データベースとは

SQLとは

SQLの記述について

表(テーブル)の構造

表のすべての行と列を取り出す [-SELECT *-]

重複する行を取り除く [-DISTINCT-]

特定の指定した列を取り出す [-SELECT A,B-]

特定の指定した行を取り出す [-WHERE-]

行を整列する [-ORDER BY-]

グループ化する [-GROUP BY-]

グループの中からさらに条件を絞る [-HAVING-]

複数の問い合わせを一度にする [-(SELECT)-]

仮想表を使う [-FROM DUAL-]

内部結合をおこなう [-INNER JOIN-]

外部結合をおこなう [-OUTER JOIN-]

同一表同士の結合をおこなう [- . -]

データを挿入する [-INSERT-]

複数のデータを挿入する [-INSERT ALL-]

データを更新する [-UPDATE-]

データを削除する [-DELETE-]

ミスをする前の状態まで戻る [-SAVEPOINT/ROLLBACK-]

変更したデータを確定する [-COMMIT-]

●第1章 データ操作言語(DML)

◇基本

テーブルからデータ行を取得する [SELECT ]

テーブルに行を挿入する [INSERT ]

テーブル内のデータを更新する [UPDATE ]

テーブル内の行を削除する [DELETE ]

テーブルに既存のデータ行を更新、または新規に追加する [MERGE ]

テーブルに既存のデータ行を更新、または新規に追加する [REPLACE ]

◇句

実行結果の列名を別名で表示する [AS句 ]

重複する行を取り除いて表示する [DISTINCT句 ]

データを取得するテーブル名を指定する [FROM句 ]

条件を指定する [WHERE句 ]

データをグループ化する [GROUP BY句 ]

グループ化されたものに条件を設定する [HAVING句 ]

結果の並び順を指定する [ORDER BY句 ]

指定した部分だけを結果として取得する [LIMIT句 ]

◇応用

OLAP集計オプション [GROUP BY GROUPING SETS / GROUP BY ROLLUP / GROUP BY CUBE ]

サブクエリー [(SELECT …) ]

SELECTした結果から表を作成する [SELECT INTO ]

●第2章 データ定義言語(DDL)

◇属性の変更

列を追加する [ALTER TABLE ADD ]

列を削除する [ALTER TABLE DROP ]

列の属性を変更する [ALTER TABLE ALTER / ALTER TABLE MODIFY ]

プライマリーキーを設定する [ALTER TABLE ADD PRIMARY KEY ]

外部キーを設定する [ALTER TABLE ADD FOREIGN KEY ]

制約を解除する [ALTER TABLE DROP CONSTRAINT ]

列名を変更する [ALTER TABLE CHANGE ]

列名を変更する [ALTER TABLE RENAME TO ]

表名を変更する [ALTER TABLE RENAME ]

表名を変更する [ALTER TABLE RENAME AS ]

列のデフォルト値を変更する [ALTER TABLE ALTER SET DEFAULT ]

◇生成・削除

表をクラスタ化する [CLUSTER ]

エイリアス(別名)を作成する [CREATE ALIAS ]

エイリアス(別名)を削除する [DROP ALIAS ]

シノニム(別名)を作成する [CREATE SYNONYM ]

シノニム(別名)を削除する [DROP SYNONYM ]

クラスタを作成する [CREATE CLUSTER ]

クラスタを削除する [DROP CLUSTER ]

インデックスを作成する [CREATE INDEX ]

インデックスを削除する [DROP INDEX ]

クラスタドインデックスを作成する [CREATE INDEX ON CLUSTER / CREATE CLUSTERED INDEX ]

シーケンスを作成する [CREATE SEQUENCE ]

シーケンスを削除する [DROP SEQUENCE ]

ビューを作成する [CREATE VIEW ]

ビューを削除する [DROP VIEW ]

表を作成する [CREATE TABLE ]

表を継承して作成する [CREATE TABLE INHERITS ]

ストアドファンクションを作成する [CREATE FUNCTION ]

ストアドファンクションを削除する [DROP FUNCTION ]

ストアドプロシージャを作成する [CREATE PROCEDURE ]

ストアドプロシージャを削除する [DROP PROCEDURE ]

ストアドパッケージを作成する [CREATE PACKAGE ]

ストアドパッケージを削除する [DROP PACKAGE ]

ストアドパッケージの本体の作成 [CREATE PACKAGE BODY ]

トリガーを作成する [CREATE TRIGGER ]

トリガーを削除する [DROP TRIGGER ]

ユーザー定義型を宣言する [CREATE TYPE ]

ユーザー定義型を定義する [CREATE TYPE BODY ]

ユーザー定義型を削除する [DROP TYPE ]

メソッドを作成する [CREATE METHOD ]

ユーザーを作成する [CREATE USER ]

ユーザーを削除する [DROP USER ]

ログインユーザーを作成する [sp_addlogin ]

ログインユーザーを削除する [sp_droplogin ]

表を削除する [DROP TABLE ]

テンポラリテーブル(一時表)を作成する [CREATE GLOBAL TEMPORARY TABLE / CREATE TEMPORARY TABLE ]

テンポラリテーブル(一時表)を作成する [DECLARE GLOBAL TEMPORARY TABLE ]

表内の全行を削除する [TRUNCATE TABLE ]

SELECT命令から表を作成する[CREATE TABLE AS ]

●第3章 データ制御言語(DCL)

◇権限操作

権限を付与する [GRANT ]

権限を剥奪する [REVOKE ]

◇オブジェクト操作

オブジェクト名を変更する [RENAME ]

◇SQL Serverの操作

データベースへのアクセスを許可する [sp_granddbaccess ]

データベースへのアクセス権限を剥奪する [sp_revokedbaccess ]

オブジェクト名を変更する[sp_rename ]

表の一覧を取得する[sp_tables ]

●第4章 関数

○1. 算術関数

◇算術

絶対値を戻す[ABS ]

符号を得る[SIGN / SGN ]

最大の整数を返す[FLOOR ]

最小の整数を返す[CEIL / CEILING ]

値をまるめる [ROUND ]

切り捨て [TRUNC / TRUNCATE ]

べき乗を求める [POW / POWER ]

平方根を求める [SQRT / SQR ]

2乗を求める [SQUARE ]

3乗根 [CBRT ]

指数値を計算 [EXP ]

自然対数を求める [LN / LOG / LOG10 ]

サインを計算 [SIN ]

コサインを計算 [COS ]

双曲線コサインを計算 [COSH ]

タンジェントを計算 [TAN ]

逆サインを計算 [ASIN ]

逆コサインを計算 [ACOS ]

逆タンジェントを計算 [ATAN / ATN ]

2つの引数から逆タンジェントを計算 [ATAN2 / ATN2 ]

コタンジェントを計算 [COT ]

ラジアンを度に変換 [DEGREES ]

度をラジアンに変換 [RADIANS ]

引数の中の最大値を返す [GREATEST ]

引数の中の最小値を返す [LEAST ]

円周率を得る [PI ]

乱数を得る [RAND / RANDOM / RND ]

剰余を求める [MOD ]

AND演算[BITAND ]

○2. 文字列関数

◇変換

文字をASCIIコードに変換 [ASC / ASCII ]

ASCIIコードを文字に変換 [CHR/CHAR ]

文字をユニコードに変換 [UNICODE ]

ユニコードを文字に変換 [NCHAR / NCHR ]

数値を文字列に変換 [STR ]

数値を2進数の文字列に変換 [BIN ]

数値を8進数の文字列に変換 [OCT ]

数値を16進数の文字列に変換 [HEX ]

文字列のビット長を取得 [BIT_LENGTH ]

文字列を区切り文字を使って連結 [CONCAT_WS ]

数値を指定した進数の文字列に変換 [CONV ]

N番目の文字列を返す [ELT ]

文字列が何番目に見つかったかを返す [FIELD ]

カンマで区切られた文字の中から文字を探す [FIND_IN_SET ]

指定されたビットに対する文字列のセットを返す [MAKE_SET ]

マルチバイト文字をコードに変換 [ORD ]

英文字を小文字に変換 [LOWER / LCASE ]

英文字を大文字に変換 [UPPER / UCASE ]

先頭文字を大文字に変換 [INITCAP ]

◇編集

文字列から指定された文字を削除 [TRIM ]

文字列の左側の空白を削除 [LTRIM ]

文字列の右側の空白を削除 [RTRIM ]

文字列の両端の空白を削除 [BTRIM ]

左から文字列を充填 [LPAD ]

右から文字列を充填 [RPAD ]

文字列の左部分を取り出す [LEFT ]

文字列の右部分を取り出す [RIGHT ]

文字列を指定された回数繰り返す [REPEAT / REPLICATE ]

文字列を置換 [REPLACE ]

文字列を反転 [REVERSE ]

◇文字長

文字列の長さを得る [LEN / LENGTH ]

文字列の文字長を得る [CHAR_LENGTH / CHARACTER_LENGTH ]

文字列のバイト数を得る [OCTET_LENGTH ]

◇検索

文字列内に含まれる文字列を検索 [CHARINDEX ]

文字列内に含まれる文字列を検索 [INSTR ]

文字列中の文字を検索 [POSITION ]

文字列中の文字を検索 [POSSTR ]

文字列内の文字位置を検索 [LOCATE ]

◇編集(結合・入れ替え・切り出し)

文字列を結合 [CONCAT ]

空白文字列を作成 [SPACE ]

文字列を置換または挿入する [INSERT ]

文字列を置き換え [TRANSLATE ]

文字列の部分的入れ替え [STUFF ]

文字列の部分切り出し [SUBSTR ]

文字列の部分切り出し [SUBSTRING ]

SOUNDEXキーを求める [SOUNDEX ]

○3. 日付刻関数

◇日付

現在の日付を得る [CURRENT_DATE / CURRENT DATE / CURDATE ]

◇時刻

現在の時刻を得る [CURRENT_TIME / CURRENT TIME / CURTIME ]

◇日付・時刻

現在の日付と時刻を得る [CURRENT_TIMESTAMP / CURRENT TIMESTAMP ]

現在の日付と時刻を得る [SYSDATE ]

現在の日付と時刻を得る [GETDATE ]

現在の日付と時刻を得る [NOW ]

現在の日付と時刻を得る [TIMEOFDAY ]

現在のUTCの日付と時刻を得る [GETUTCDATE ]

◇編集

現在の日付と時刻を得る [DATE ]

年を取り出す [YEAR ]

月を取り出す [MONTH ]

日を取り出す [DAY ]

時を取り出す [HOUR ]

分を取り出す [MINUTE ]

秒を取り出す [SECOND ]

月を英文字列で得る [MONTHNAME ]

曜日を英文字列で得る [DAYNAME ]

日付要素を文字列で得る [DATENAME ]

◇計算

年間の通算日を得る [DAYOFYEAR ]

日を得る [DAYOFMONTH ]

曜日を数値で得る [DAYOFWEEK ]

四半期を数値で得る [QUARTER ]

曜日を数値で得る [WEEKDAY ]

月の最終日の日付値を得る [LAST_DAY ]

次の指定した曜日の日付値を得る [NEXT_DAY ]

年間の通算週を取得 [WEEK ]

年齢を計算する [AGE ]

日付の足し算 [DATEADD ]

日付の足し算 [DATE_ADD / ADDDATE ]

日付の差 [DATEDIFF ]

日付の引き算 [DATE_SUB / SUBDATE ]

日付の差を月単位で計算 [MONTHS_BETWEEN ]

月を加算 [ADD_MONTHS ]

◇編集

日付を整形する [DATE_FORMAT ]

時刻を整形する [TIME_FORMAT ]

日付値から任意の日付要素の数値を得る [EXTRACT ]

日付値から任意の日付要素の数値を得る [DATE_PART ]

日付値から任意の日付要素の数値を得る [DATEPART ]

日付値から任意の日付要素の数値を切り捨てる [DATE_TRUNC ]

◇計算

紀元0年1月1日からの日数を日付にする [FROM_DAYS ]

紀元0年1月1日からの日数を得る [TO_DAYS ]

◇日付・時刻

UNIXタイムスタンプを得る [UNIX_TIMESTAMP ]

◇編集

書式によって整形されたUNIXタイムスタンプを得る [FROM_UNIXTIME ]

◇計算

期間PにN月を加算 [PERIOD_ADD ]

期間P1と期間P2の間の月数を計算 [PERIOD_DIFF ]

◇変換

秒を時分秒に変換 [SEC_TO_TIME ]

時分秒を秒に変換 [TIME_TO_SEC ]

◇日付

年と週を返す [YEARWEEK ]

○4. 集計関数

◇集計

平均値を算出する [AVG ]

合計値を算出する [SUM ]

最大値を得る [MAX ]

最小値を得る [MIN ]

相関係数を算出する [CORR / CORRELATION ]

行数を数える [COUNT ]

集計行かどうか判定 [GROUPING ]

◇集計-偏差

標準偏差を算出する [STDDEV / STDEV ]

母集団標準偏差を算出する [STDDEV_POP / STDEVP ]

◇集計-分散

分散を算出する [VAR / VARIANCE ]

母集団分散を算出する [VAR_POP / VARP ]

○5. 分析関数

◇分析

同順位を飛ばさずに順位をつける [DENSE_RANK ]

同順位を飛ばして順位をつける [RANK ]

行番号をつける [ROW_NUMBER ]

回帰直線の傾きを求める [REGR_SLOPE ]

回帰直線のy切片を求める [REGR_INTERCEPT ]

回帰直線の確定係数を求める [REGR_R2 ]

ウィンドウを使った合計を求める [SUM OVER ]

○6. 変換関数

◇変換

データ型を変換 [CAST ]

NULL値でない最初の値を返す [COALESCE ]

データ型を変換 [CONVERT ]

値を変換 [DECODE ]

NULL値を変換 [ISNULL ]

2つの引数が等しい場合にNULLを返す [NULLIF ]

NULL値を変換 [NVL ]

文字列型に変換 [TO_CHAR ]

日付型に変換 [TO_DATE ]

数値型に変換 [TO_NUMBER ]

○7. システム情報関数

◇システム

権限チェックの際に使用されるユーザ名を戻す [CURRENT_USER ]

データベース接続を開始させたユーザ名を戻す [SESSION_USER ]

現在データベースを実行しているユーザ名 [USER ]

○8. MySQLの関数(MySQL)

式を実行しクライアントでの経過時間を測る [BENCHMARK ]

暗号を複合化 [DECODE ]

文字列を暗号化 [ENCODE ]

現在のデータベース名を得る [DATABASE ]

ネットワークアドレスに対する数値を返す [INET_ATON ]

ネットワークアドレスに対する数値からネット[INET_NTOA ]

ワークアドレスを返すMySQLのバージョンを得る [VERSION ]

○9. Oracleの関数(ORACLEのみ)

◇計算

ある値の集合の合計に対する、その値の比率を計算 [RATIO_TO_REPORT ]

双曲線サインを返す [SINH ]

双曲線タンジェントを返す [TANH ]

◇編集

データ型コード、長さ、内部表現を含むVARCHAR2値を戻す [DUMP ]

文字列内に含まれる文字列のバイト位置を戻す [INSTRB ]

文字列のバイト数を求める [LENGTHB ]

文字列をバイト単位で切り出し [SUBSTRB ]

現行のセッションに関するVARCHAR2 データ型の情報を戻す [USERENV ]

◇変換

文字列の内部表現でのバイト数を戻す [VSIZE ]

NULL値を変換 [NVL2 ]

すべてのシングルバイト文字を対応するマルチバイト文字に変換 [TO_MULTI_BYTE ]

すべてのマルチバイト文字を対応するシングルバイト文字に変換 [TO_SINGLE_BYTE ]

◇システム

セッション・ユーザーを一意に識別する整数を戻す [UID]

○10. SQL Serverの関数(SQL Serverのみ)

◇システム

現在のセッションのアプリケーション名を得る [APP_NAME ]

テーブルおよび列のID番号を元にデータベース列の名前を返す [COL_NAME ]

データベースの設定値、プロパティを返す [DATABASEPROPERTYEX ]

データベースのID番号を返す [DB_ID ]

データベース名を返す [DB_NAME ]

ワークステーションのID番号を返す [HOST_ID ]

ワークステーションの名前を返す [HOST_NAME ]

ユーザーログイン名のセキュリティ識別番号を得る [SUSER_SID ]

データベースにおけるユーザーの識別番号を返す [USER_ID ]

データベースにおけるユーザー名を返す [USER_NAME ]

現在のユーザーがメンバであるかどうかを示す [IS_MEMBER ]

指定されたサーバーロールのメンバであるかどうかを調べる [IS_SRVROLEMEMBER ]

◇日付・時刻

現在のUTCを表すdatetime値を返す [GETUTCDATE ]

入力式が日付として有効かどうか調べる [ISDATE ]

◇編集

定義されている列の長さを得る [COL_LENGTH ]

行数を数える [COUNT_BIG ]

式を表すために必要なバイト数を返す [DATALENGTH ]

2つの文字式のSOUNDEX値の差を整数として返す [DIFFERENCE ]

データベースがNULL値を許容するかどうかを返す [GETANSINULL ]

式が数値型として有効かどうかを調べる [ISNUMERIC ]

文字列内でパターンが最初に現れる先頭位置を返す [PATINDEX ]

○11. SQLiteの関数(SQLiteのみ)

◇編集

引数の型を返す[typeof ]

グループ内のカラムの値を連結[group_concat ]

クォートした結果を取得[quote ]

◇システム

接続中の最後に挿入したrowidを返す[last_insert_rowid ]

SQLiteのバージョンを返す[sqlite_version ]

直前に変更された行数を取得します[changes ]

データベースに接続後に変更された行数を取得します [total_changes ]

◇計算

NULLでない最初の引数を返す[coalesce ]

NULLでない方の引数を返す[ifnull ]

引数が異なる場合は1番目の引数を返す[nullif ]

◇日付・時刻

変更フォーマット結果のユリウス日を返す[julianday ]

年月日等をフォーマットに基づき返す[strftime ]

日付と時刻を取得する[date / time / datetime ]

◇データ

データを16進数表記文字列に変換します[HEX《SQLite》 ]

データをランダムに生成します[randomblob ]

データを0で生成します[zeroblob ]

○12. XML関数

◇編集

XMLフラグメントを集約して戻す[XMLAGG]

各行の要素を連結した結果を戻す[XMLCONCAT]

引数をXML化した結果を戻す[XMLFOREST]

XMLの要素を生成して戻す[XMLELEMENT]

XML要素の「属性」を生成して戻す[XMLATTRIBUTES]

XMLフラグメントを作成しXMLを生成して戻す[XMLCOLATTVAL]

◇データ

XPathに合致するXML要素を抽出する[EXTRACT《XML》]

XPathに合致するXML要素の値を抽出する[EXTRACTVALUE]

XPathに合致するXML要素の値を更新する[UPDATEXML]

XQueryを実行しその結果をXMLで返す[XMLQUERY]

●第5章 演算子

◇集合演算子

和集合 [UNION ]

差集合 [EXCEPT ]

差集合 [MINUS ]

積集合 [INTERSECT ]

◇算術演算子

足し算 [+ ]

引き算 [- ]

掛け算 [* ]

割り算 [/ ]

剰余(あまりを求める) [% ]

◇単項演算子

正符号 [+ ]

負符号 [- ]

NULL値であるか調べる [IS NULL ]

◇ビット演算子

ビット単位の論理積(AND) [& ]

ビット単位の論理和(OR)[| ]

ビット単位の排他的論理和(XOR)[^ ]

ビット単位の排他的論理和(XOR) [# ]

ビット単位の否定(NOT) [- ]

◇比較演算子

等しい [= ]

より大きい [> ]

より小さい(未満) [< ]

大きい(以上) [>= ]

小さい(以下) [<= ]

等しくない [<> ]

等しくない [!= ]

◇論理演算子

すべての条件を満たす [ALL ]

いずれかの条件を満たす [ANY ]

いずれかの条件を満たす [SOME ]

範囲内に収まっている [BETWEEN ]

結果が存在しているか確認する [EXISTS ]

一致する値があるか調べる [IN ]

論理積 [AND ]

論理和 [OR ]

否定 [NOT ]

◇論理演算子 パターンマッチング

論理演算子 パターンマッチング [LIKE ]

論理演算子 パーターンマッチング(大文字、小文字を無視) [ILIKE ]

論理演算子 パターンマッチング(正規表現) [- ]

論理演算子 パターンマッチング(正規表現) [REGEXP / RLIKE ]

◇その他の演算子

文字列を結合する [|| ]

値を変換する [CASE ]

PostgreSQLその他の演算子

●第6章 プロシージャ内コマンド

◇プロシージャ

ブロックを定義 [BEGIN ? END ]

変数を定義 [DECLARE ]

変数に値をセットする [SET ]

条件分岐処理 [IF ]

条件分岐処理 [CASE ]

指定された回数繰り返す [FOR ]

条件が成立している間は繰り返し処理をおこなう [WHILE ]

無条件に繰り返し処理をおこなう [LOOP ]

処理の後に条件判定をおこなう繰り返し命令 [REPEAT ]

指定されたラベルに戻る [ITERATE ]

プロシージャ終了 [RETURN ]

指定されたラベルにジャンプ [GOTO ]

ループから抜ける [EXIT ]

ループから抜ける [BREAK ]

処理を続行 [CONTINUE ]

ループの外側に移動 [LEAVE ]

カーソルをオープンする [OPEN ]

カーソルをクローズする [CLOSE ]

カーソルを定義する [DECLARE CURSOR ]

カーソルが使用していたリソースを解放 [DEALLOCATE ]

カーソルから行を取り出す [FETCH ]

例外ハンドラ定義 [DECLARE HANDLER ]

Oracle システム組み込み例外 [EXCEPTION ]

Oracle ユーザー定義例外 [EXCEPTION ]

ユーザー定義エラーを発生 [RAISE ]

ユーザー定義エラーを発生 [RAISE ]

ユーザー定義エラーを発生 [RAISEERROR ]

例外を発生 [SIGNAL ]

●第7章 トランザクション

◇トランザクション

トランザクションの分離レベルを設定 [SET TRANSACTION ISOLATION LEVEL ]

現在のトランザクションを廃棄 [ABORT ]

トランザクションを開始 [BEGIN ]

トランザクションブロックの開始 [START TRANSACTION ]

強制的なトランザクションログのチェックポイントの実行 [CHECKPOINT ]

コミットする [COMMIT ]

トランザクションを終了 [END ]

ロールバックする [ROLLBACK ]

セーブポイントを設定 [SAVEPOINT ]

セーブポイントを設定 [SAVE TRANSACTION ]

行ロックをおこなう [SELECT FOR UPDATE ]

テーブルをロックする [LOCK TABLE ]

テーブルをロックする [LOCK TABLES ]

テーブルロックを解除 [UNLOCK TABLES ]

●第8章 バックアップ・リカバリ

MySQL インポート [LOAD DATA ]

MySQL エクスポート [SELECT INTO OUTFILE ]

Oracle インポート[IMP ]

Oracle エクスポート[EXP ]

DB2 インポート[IMPORT ]

DB2 インポート(高速)[LOAD ]

DB2 エクスポート[EXPORT ]

SQL Server インポート/エクスポート[BCP ]

PostgreSQL インポート/エクスポート[COPY ]

●第9章 プログラムインターフェイス

PHP7からMySQLに接続する場合

RubyからMySQLに接続する場合

PythonからMySQLに接続する場合

PerlからMySQLに接続する場合

JavaからMySQLに接続する場合

●補足

SQLのアンチパターンとパターン(SQLの×と○)

データ型

予約語一覧

PR

秀和システム