TOP

データベース sqlite3 その3

操作コマンドとsql 文

commandline_programng_and_functions

sqlite3 操作コマンド・関数を下記に列挙してみました。使用法については、以降のページ内で、提示していきたいと思います。但し、すべてを網羅するわけではありません。

sqlite3 コマンドライン操作コマンド

— sub 新しいバージョンでは取り除かれたもの

— add 新しく追加されたもの

  • -command」は「–command」でも同じように動作します。
  • sqlite3 ファイル名を指定しない場合は、sqliteコマンドプロンプト操作が保存されない。
  • sqlite3 FILENAME ファイル名でカレントディレクトリに操作が保存される。

sqlite3 コマンドラインプロンプト操作コマンド(ドットコマンド)

— sub 新しいバージョンでは取り除かれたもの

— add 新しく追加されたもの

  • .databases 接続されているデータベースを表示する。
  • .quit sqliteコマンドプロンプトを終了する。
  • .exit sqliteコマンドプロンプトを終了する(リターンコードを返す。)

パラメータをセット [.parameter]

データベース内でグローバルに使うことが出来る変数をセットする。

sqlite> .parameter
.parameter CMD ...       Manage SQL parameter bindings
   clear                   Erase all bindings
   init                    Initialize the TEMP table that holds bindings
   list                    List the current parameter bindings
   set PARAMETER VALUE     Given SQL parameter PARAMETER a value of VALUE
                           PARAMETER should start with one of: $ : @ ?
   unset PARAMETER         Remove PARAMETER from the binding table

使用できるsql 文

References:   alter-table-stmt analyze-stmt attach-stmt begin-stmt commit-stmt create-index-stmt create-table-stmt create-trigger-stmt create-view-stmt create-virtual-table-stmt delete-stmt delete-stmt limit eddetach-stmt drop-index-stmt drop-table-stmt drop-trigger-stmt drop-view-stmt insert-stmt pragma-stmt reindex-stmt release-stmt rollback-stmt savepoint-stmt select-stmt update-stmt update-stmt-limited vacuum-stmt

Syntax Diagrams For SQLite

演算子

算術演算子

+足し算a + b
引き算a – b
*乗算a * b
/割り算a / b
%剰余a % b
算術演算子

比較演算子

==a == baとbの値が等しい
=a = baとbの値が等しい
!=a != baとbの値が等しくない
<>a <> baとbの値が等しくない
>a > baの値がbの値より大きい
<a < baの値がbの値より小さい
>=a >= baの値がbの値以上
<=a <= baの値がbの値以下
!<a !< baの値がbの値より小さくない
!>a !> baの値がbの値より大きくない

比較演算子

論理演算子

ANDX AND YX かつYが真である条件
ORX OR YX またはYが真である条件
BETWEENcolumn name BETWEEN X AND YXからYの間にある値
NOTNOT NULL , NOT BETWEEN など否定
ISIS NULLイコール
IS NOTIS NOT NULL
||
UNIQUE一意性 (重複なし)である

論理演算子

ビット演算子

& | ~ << >>

組み込み集計関数

avg(X)

グループ内のすべての非 NULL Xの平均値を返します。数値のように見えない文字列および BLOB 値は、0 として解釈されます。

count(X)
count(*)

グループ内でX がNULL でない 回数のカウントを返します。count(*) 関数 (引数なし) は、グループ内の行の総数を返します。

group_concat(X)
group_concat(X,Y)

Xのすべての非 NULL 値を連結した文字列を返します。パラメータYが存在する場合、 Xのインスタンス間のセパレータとして使用されます。Yを省略した場合、カンマ (“,”) が区切り文字として使用されます。連結された要素の順序は任意です。

max(X)

グループ内のすべての値の最大値を返します。最大値は、同じ列の ORDER BY で最後に返される値です。集計 max() は、グループに NULL 以外の値がない場合にのみ NULL を返します。

min(X)

グループ内のすべての値の最小の非 NULL 値を返します。最小値は、列の ORDER BY に現れる最初の非 NULL 値です。集計 min() は、グループに NULL 以外の値がない場合にのみ NULL を返します。

sum(X)
total(X)

sum() および total() 集約関数は、グループ内のすべての非 NULL 値の合計を返します。NULL 以外の入力行がない場合、sum() は NULL を返しますが、total() は 0.0 を返します。total() の結果は常に浮動小数点値です。sum() は、すべての入力が整数または NULL で、計算中の任意の時点で整数オーバーフローが発生した場合、「整数オーバーフロー」例外をスローします。total() が整数オーバーフローをスローすることはありません。

sqlite 本家

組み込みスカラー SQL 数学関数

acos(X)

X の逆余弦を返します。結果はラジアン単位で表示されます。

acosh(X)

X の双曲線逆余弦を返します。

asin(X)

X の逆正弦を返します。結果はラジアン単位で表示されます。

asinh(X)

X の双曲線逆正弦を返します。

atan(X)

X の逆正接を返します。結果はラジアン単位で表示されます。

atan2(Y,X)

Y/X の逆正接を返します。結果はラジアン単位で表示されます。結果は、X と Y の符号に応じて正しい象限に配置されます。

atanh(X)

X の双曲線逆正接を返します。

ceil(X)
ceiling(X)

X 以上の最初の表現可能な整数値を返します。X が正の値の場合、このルーチンはゼロから四捨五入します。 X の負の値の場合、このルーチンはゼロに向かって丸めます。

cos(X)

X のコサインを返します。X の単位はラジアンです。

cosh(X)

X の双曲線余弦を返します。

degrees(X)

値 X をラジアンから度に変換します。

exp(X)

e (オイラー数、約 2.71828182845905) の X 乗を計算します 。

floor(X)

X 以下の最初の表現可能な整数値を返します。正の数の場合、この関数はゼロに向かって丸めます。負の数値の場合、この関数はゼロから四捨五入します。

ln(X)

X の自然対数を返します。

log(X)
log10(X)
log(B,X)

X の底 10 の対数を返します。または、引数が 2 つのバージョンの場合は、X の底 B の対数を返します。

互換性に関する注意: SQLite は、log() 関数が底 10 の対数を計算するという点で PostgreSQL と同様に動作します。他のほとんどの SQL データベース エンジンは、log() の自然対数を計算します。 log(B,X) の 2 引数バージョンでは、最初の引数がベースで、2 番目の引数がオペランドです。これは PostgreSQL および MySQL と同じですが、2 番目の引数をベースとして使用し、最初の引数をオペランドとして使用する SQL Server とは逆になります。

log2(X)

数値 X の 2 を底とする対数を返します。

mod(X,Y)

X を Y で除算した後の剰余を返します。これは、整数以外の引数に対して機能する点を除いて、’%’ 演算子と似ています。

pi()

π の近似値を返します。

pow(X,Y)
power(X,Y)

X の Y 乗を計算します。

radians(X)

X を度からラジアンに変換します。

sin(X)

X の正弦を返します。X の単位はラジアンです。

sinh(X)

X の双曲線正弦を返します。

sqrt(X)

X の平方根を返します。X が負の場合は NULL が返されます。

tan(X)

X のタンジェントを返します。X の単位はラジアンです。

tanh(X)

X の双曲線正接を返します。

trunc(X)

X と 0 (両端を含む) の間で、ゼロから最も遠い、表現可能な整数を返します。言い換えると、X の整数部分をゼロに向かって丸めて返します。

組み込みスカラー SQL 関数

abs(X)

数値引数 X の絶対値を返します。X が NULL の場合、abs(X) は NULL を返します。X が数値に変換できない文字列または blob の場合、abs(X) は 0.0 を返します。X が整数 -9223372036854775808 の場合、同等の正の 64 ビット 2 の補数値がないため、abs(X) は整数オーバーフロー エラーをスローします。

changes()

最近完了した INSERT、DELETE、または UPDATE ステートメントによって変更、挿入、または削除されたデータベース行の数を返します。下位レベルのトリガーのステートメントは除きます。

char(X1,X2,…,XN)

整数 X1 から XN までの Unicode コード ポイント値を持つ文字で構成される文字列を返します。

coalesce(X,Y,…)

最初の非 NULL 引数のコピーを返すか、すべての引数が NULL の場合は NULL を返します。少なくとも 2 つの引数が必要です。

format(FORMAT,…)

標準 C ライブラリの printf() 関数のように機能します。%n 形式は黙って無視されます。

glob(X,Y)

式 ” Y GLOB X ” と同等です。Y は文字列、X はパターンです。したがって、たとえば、次の式は同等です。name GLOB ‘*helium*’ と glob(‘*helium*’,name)

hex(X)

その引数を BLOB として解釈し、その BLOB のコンテンツを大文字の 16 進数で表現した文字列を返します。

ifnull( X , Y )

最初の非 NULL 引数のコピーを返すか、両方の引数が NULL の場合は NULL を返します。Ifnull() には、 2 つの引数が必要です。

iif( X , Y , Z )

X が true の場合は値 Y を返し、そうでない場合は Z を返します。iif(X,Y,Z) 関数は、 CASE 式“CASE WHEN X THEN Y ELSE Z END” と論理的に同等であり、同じ バイトコードを生成します。

instr( X , Y )

instr(X,Y) 関数は、文字列 X 内で最初に出現する文字列 Y を検出し、前の文字数 + 1 を返します。Y が X 内に見つからない場合は 0 を返します。または、X と Y が両方とも BLOB の場合、instr (X,Y) は、Y が最初に出現する前の number バイトよりも 1 多い数を返します。Y が X 内のどこにも出現しない場合は 0 を返します。 instr(X,Y) の引数 X と Y の両方が NULL でなく、 BLOB ではない場合、両方とも文字列として解釈されます。instr(X,Y) で X または Y のいずれかが NULL の場合、結果は NULL になります。

last_insert_rowid()

関数を呼び出したデータベース接続から最後に挿入された行のROWIDを返します。

length(X)

X 内の最初の NUL 文字より前の文字数 (バイト数ではない) を返します。通常、SQLite 文字列には NUL 文字が含まれないため、length(X) 関数は通常、文字列 X の合計文字数を返します。blob 値 X の場合、length(X) は blob のバイト数を返します。X が NULL の場合、length(X) は NULL です。X が数値の場合、length(X) は X の文字列表現の長さを返します。文字列の場合、length(X) 関数はバイト 長ではなく、文字列の文字長を返すことに注意してください。文字長は文字列の文字数です。文字長は常に UTF-16 文字列のバイト長とは異なり、文字列にマルチバイト文字が含まれている場合は UTF-8 文字列のバイト長と異なる場合があります。

like( X , Y )
like( X , Y , Z )

like() 関数は、” Y LIKE X [ESCAPE Z] ” 式を実装するために使用されます。オプションの ESCAPE 節が存在する場合、like() 関数が 3 つの引数で呼び出されます。それ以外の場合は、2 つの引数のみで呼び出されます。X および Y パラメーターは、中置LIKE演算子に関連して like() 関数で逆になっていることに注意してください。X はパターンで、Y はそのパターンに一致する文字列です。したがって、次の式は同等です。name LIKE ‘%neon%’  like(‘%neon%’,name)

likelihood(X,Y)

値 Y は、0.0 と 1.0 の間の浮動小数点定数でなければなりません。XがYの確率でtrueになることを示しています。

likely(X)

引数 X を変更せずに返します。引数 X がブール値であり、通常は true であるというヒントをクエリ プランナーに提供することです。可能性が高い (X) 関数は、尤度(X,0.9375)と同等です。likelihood(X,0.9375)はlikely(x)=0.0625という関係になります。

load_extension( X )
load_extension( X , Y )

エントリ ポイント Y を使用して、X という名前の共有ライブラリ ファイルからSQLite 拡張機能をロードします。load_extension() の結果は常に NULL です。Y を省略すると、デフォルトのエントリ ポイント名が使用されます。拡張機能が正しくロードまたは初期化されない場合、load_extension() 関数は例外を発生させます。

lower(X)

すべての ASCII 文字を小文字に変換した文字列 X のコピーを返します。

ltrim( X )
ltrim( X , Y )

ltrim(X,Y) 関数は、Y に現れるすべての文字を X の左側から削除して形成された文字列を返します。Y 引数を省略すると、ltrim(X) は X の左側からスペースを削除します。

max( X , Y ,…)

複数引数の max() 関数は、最大値を持つ引数を返すか、いずれかの引数が NULL の場合は NULL を返します。複数引数の max() 関数は、その引数を左から右に検索して、照合関数を定義する引数を探し、すべての文字列比較にその照合関数を使用します。max() の引数で照合関数が定義されていない場合は、BINARY 照合関数が使用されます。max()は、引数が 2 つ以上ある場合は単純な関数ですが、 引数が 1 つしかない場合は 集計関数として動作することに注意してください。

min( X , Y ,…)

複数引数の min() 関数は、最小値を持つ引数を返します。複数引数の min() 関数は、その引数を左から右に検索して、照合関数を定義する引数を探し、すべての文字列比較にその照合関数を使用します。min() の引数で照合関数が定義されていない場合は、BINARY 照合関数が使用されます。min()は、引数が 2 つ以上ある場合は単純な関数ですが、 引数が 1 つしかない場合は 集計関数として動作することに注意してください。

nullif( X , Y )

nullif(X,Y) 関数は、引数が異なる場合は最初の引数を返し、引数が同じ場合は NULL を返します。nullif(X,Y) 関数は、その引数を左から右に検索して、照合関数を定義する引数を探し、すべての文字列比較にその照合関数を使用します。nullif() のどちらの引数も照合関数を定義していない場合、BINARY 照合関数が使用されます。

printf(フォーマット,…)

format() SQL 関数 の別名です。

quote(X)

SQL ステートメントに含めるのに適した引数の値である SQL リテラルのテキストを返します。文字列は一重引用符で囲み、必要に応じて内側の引用符をエスケープします。BLOB は 16 進リテラルとしてエンコードされます。NUL 文字が埋め込まれた文字列は SQL で文字列リテラルとして表すことができないため、返される文字列リテラルは最初の NUL の前で切り捨てられます。

random()

-9223372036854775808 と +9223372036854775807 の間の疑似乱数整数を返します。

randomblob(N)

疑似乱数バイトを含む N バイトのブロブを返します。N が 1 未満の場合、1 バイトのランダム BLOB が返されます。

-- アプリケーションの中では、この関数を次のようにhex()および/または lower()と一緒に使用して、グローバルに一意の識別子を生成できます。
sqlite> select hex(randomblob(16));
C639C2D5A3C07658DA389267127DD6AB
sqlite> select lower(hex(randomblob(16)));
607d53250cfe5a576de1d545e654ec8c

replace(X,Y,Z)

replace(X,Y,Z) 関数は、文字列 X で文字列 Y が出現するたびに、文字列 Z を置換して形成された文字列を返します。比較には BINARY 照合シーケンスが使用されますY が空の文字列の場合、X を変更せずに返します。Z が最初は文字列でない場合、処理前に UTF-8 文字列にキャストされます。

round( X )
round( X , Y )

小数点以下 Y 桁に丸められた浮動小数点値 X を返します。Y 引数が省略されているか負の場合は、0 と見なされます。

rtrim( X )
rtrim( X , Y )

Y に現れるすべての文字を X の右側から削除して形成された文字列を返します。Y 引数を省略すると、rtrim(X) は X の右側からスペースを削除します。

sign(X)

引数 X が負、ゼロ、または正の数値である場合、それぞれ -1、0、または +1 を返します。sign(X) の引数が NULL であるか、無損失で数値に変換できない文字列または blob である場合、sign(X) は NULL を返します。

soundex( X )

文字列 X の soundex エンコーディングである文字列を返します。引数が NULL の場合、または ASCII アルファベット文字が含まれていない場合、文字列 “?000” が返されます。この関数は、デフォルトでは SQLite から省略されています。SQLite のビルド時にSQLITE_SOUNDEXコンパイル時オプションが使用されている 場合にのみ使用できます。

sqlite_compileoption_get( N )

sqlite_compileoption_get() SQL 関数は、 sqlite3_compileoption_get() C/C++ 関数 のラッパーです 。このルーチンは、SQLite のビルドに使用される N 番目のコンパイル時オプションを返します。N が範囲外の場合は NULL を返します。

sqlite_compileoption_used( X )

sqlite3_compileoption_used() C/C++ 関数 のラッパーです 。sqlite_compileoption_used(X) への引数 X がコンパイル時のオプションの名前である文字列である場合、このルーチンはビルド中にそのオプションが使用されたかどうかに応じて true (1) または false (0) を返します。

sqlite_offset( X )

sqlite_offset(X) 関数は、値が読み取られるレコードの先頭のデータベース ファイル内のバイト オフセットを返します。X が通常のテーブルの列でない場合、sqlite_offset(X) は NULL を返します。sqlite_offset(X) によって返される値は、クエリに応じて、元のテーブルまたはインデックスのいずれかを参照する場合があります。値 X が通常インデックスから抽出される場合、sqlite_offset(X) は対応するインデックス レコードへのオフセットを返します。値 X が元のテーブルから抽出される場合、sqlite_offset(X) はテーブル レコードへのオフセットを返します。sqlite_offset(X) SQL 関数は、SQLite が-DSQLITE_ENABLE_OFFSET_SQL_FUNCコンパイル時オプションを使用してビルドされている場合にのみ使用できます。

sqlite_source_id()

sqlite_source_id() 関数は、SQLite ライブラリの構築に使用されたソース コードの特定のバージョンを識別する文字列を返します。sqlite_source_id() によって返される文字列は、ソース コードがチェックインされた日付と時刻の後に、そのチェックインの SHA3-256 ハッシュが続きます。この関数は、 sqlite3_sourceid() C インターフェイスの SQL ラッパーです。

sqlite_version()

sqlite_version() 関数は、実行中の SQLite ライブラリのバージョン文字列を返します。この関数は、 sqlite3_libversion() C インターフェイス の SQL ラッパーです。

substr( X , Y , Z )
substr( X , Y )
substring( X , Y , Z )
substring( X , Y )

substr(X,Y,Z) 関数は、入力文字列 X の Y 番目の文字で始まり、Z 文字の長さの部分文字列を返します。Z が省略された場合、substr(X,Y) は、Y 番目から始まる文字列 X の最後までのすべての文字を返します。X の左端の文字は 1 です。Y が負の場合、部分文字列の最初の文字は、左ではなく右から数えて検索されます。Z が負の場合、Y 番目の文字の前にある abs(Z) 文字が返されます。X が文字列の場合、文字インデックスは実際の UTF-8 文字を参照します。X が BLOB の場合、インデックスはバイトを参照します。”substring()” は、SQLite バージョン 3.34 以降の “substr()” のエイリアスです。

total_changes()

total_changes() 関数は、現在のデータベース接続が開かれてから、INSERT、UPDATE、または DELETE ステートメントによって発生した行変更の数を返します。この関数は、 sqlite3_total_changes64() C/C++ インターフェイス のラッパーです。

trim(X)
trim(X,Y)

X の両端から Y に現れるすべての文字を削除して形成された文字列を返します。Y 引数を省略すると、trim(X) は X の両端からスペースを削除します。

typeof( X )

式 X の データ型(“null”、”integer”、”real”、”text”、または “blob”) を示す文字列を返します。

unhex( X )
unhex( X , Y )

unhex(X,Y) 関数は、16 進数の文字列 X をデコードした BLOB 値を返します。X に 16 進数でなく、Y にない文字が含まれている場合、unhex(X,Y) は NULL を返します。Y を省略すると、空の文字列と見なされるため、X は純粋な 16 進数文字列でなければなりません。X のすべての 16 進数はペアで出現し、各ペアの両方の数字がすぐ隣り合って始まる必要があります。そうでない場合、unhex(X,Y) は NULL を返します。パラメータ X または Y のいずれかが NULL の場合、unhex(X,Y) は NULL を返します。X 入力には、大文字と小文字の 16 進数の任意の組み合わせを含めることができます。Y の 16 進数は、X の変換には影響しません。X では、16 進数でない Y の文字のみが無視されます。

unicode(X)

文字列 X の最初の文字に対応する数値の Unicode コード ポイントを返します。 unicode(X) の引数が文字列でない場合、結果は未定義です。

unlikely(X)

引数 X を変更せずに返します。unlikely(X) 関数は、実行時 (つまり、 sqlite3_step()の呼び出し中) に CPU サイクルを消費しないようにコード ジェネレーターが最適化するノーオペレーションです。unlikely(X) 関数の目的は、引数 X がブール値であり、通常は true ではないというヒントをクエリ プランナーに提供することです。

upper(X)

すべての小文字の ASCII 文字が同等の大文字に変換された入力文字列 X のコピーを返します。

zeroblob( N )

zeroblob(N) 関数は、N バイトの 0x00 で構成される BLOB を返します。SQLite は、これらの zeroblob を非常に効率的に管理します。ゼロブロブを使用して、後でインクリメンタル BLOB I/Oを使用して書き込まれる BLOB 用の領域を確保できます 。この SQL 関数は、 C/C++ インターフェイスから sqlite3_result_zeroblob()ルーチンを使用して実装されます。

SQLite 制約

下記の制約は、テーブルに入れることができるデータのタイプを制限するための制約です。

  • NOT NULL 列が NULL 値を持つことができないことを保証する。
  • DEFAULT value 何も指定されていない場合、列のデフォルト値を提供する。
  • UNIQUE 列内のすべての値が異なることを保証する。
  • PRIMARY Key テーブルを一意に特定する列(主キー)である。
  • CHECK(条件式) 列内のすべての値が特定の条件を満たすことを保証する。

sqlite 本家

プラグマ

SQLite PRAGMAコマンドは、SQLite 環境内のさまざまな環境変数と状態フラグを制御するために使用される特別なコマンドです。

現在の PRAGMA 値を確認する

sqlite> pragma_name;

PRAGMA に新しい値を設定する

sqlite> pragma_name = value; -- false/true の場合は pragma_name=on or off (小文字大文字区別なし)

設定済みの PRAGMA — SQLite version 3.45.1

(初期値)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください