うーん。 。 。少し前にまとめた常識:
SQLiteは、ACIDに準拠した軽量データベースであり、比較的小さなCライブラリの中間に含まれています。 Windows/Linux/Unix などの主流のオペレーティング システムをサポートし、Tcl、C#、PHP、Java などの多くのプログラミング言語と組み合わせることができます。その処理速度は非常に速いです。
キーワード: AUTOINCREMENTは、特定の列の値を自動的にインクリメントするために使用でき、プラスチックフィールドにのみ使用できます。テーブルを構築するときにこれを追加します キーワード
または
2 番目の書き方では、値の順序がテーブルにリストされている順序と一致していることを確認する必要があります
の後には、条件付きクエリの WHERE を続けることができます。「*」はクエリ テーブル内のすべての列を意味し、次のようにすることもできます
-- サブクエリ、内部クエリ、またはネストされたクエリが where 句に埋め込まれている場合別の SQL 特殊クエリ。必須 以下は、サブクエリが従う必要があるいくつかのルールです:
子クエリは括弧で囲む必要があります。 ·サブクエリの選択された列と比較されるメインクエリに複数の列がある場合を除き、サブクエリは
SELECT 句に列を 1 つだけ含めることができます。 。 B dORDER BY は子クエリでは使用できませんが、メインの問い合わせでは Order By を使用できます。サブクエリで
GROUP BY を使用できます。これは、 ORDER BY と同じ機能があります。 · サブクエリは複数の行を返し、 IN 演算子などの複数値演算子でのみ使用できます。
· BETWEEN 演算子はサブクエリでは使用できませんが、BETWEEN はサブクエリ内で使用できます。
テーブルデータの変更テーブルデータの削除2. 演算子 変数 a=10 および変数 b=20 と仮定すると、
算術演算子演算子 説明
- |
減算 - 左オペランドから右オペランドを引く |
a - b は-10を取得します |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* |
乗算 – Put 演算子 値を乗算する両側で |
a * b は200を与えます |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/ |
除算 - 左のオペランドは右のオペランドで除算されます |
b a は 0 を与えます |
演算子 |
説明 |
インスタンス |
||
== |
2 つのオペランドの値を確認します。等しい場合、条件は true です。 |
(a == b) は真実ではありません。 |
||
= |
2 つのオペランドの値が等しいかどうかを確認し、等しい場合は条件が true です。 |
(a = b) は真実ではありません。 |
||
!= |
は、2 つのオペランドの値が等しいかどうかをチェックし、等しくない場合は条件が true です。 |
(a != b) は真実です。 |
||
a8093152e673feb7aba1828c43532094 |
条件が true でない場合は、2 つのオペランドの値が等しいかどうかを確認します。 |
(a a8093152e673feb7aba1828c43532094b) は本当です。左側のオペランドの値が右側のオペランドの値より大きいかどうかを確認し、大きい場合は条件が true です。 |
||
(a > b) は真実ではありません。 |
be129141b879342b017a6994ad9b3018= |
左のオペランドの値が右のオペランドの値以上であるかどうかを確認し、そうである場合、条件は true です。 |
||
(a >= b) は真実ではありません。 |
518e92becf02e593987749d6931cc195 |
左のオペランドの値が右のオペランドの値より大きくないかどうかを確認し、そうであれば条件は true です。 |
(a !> b) は本当です。 |
演算子 |
説明 |
AND |
AND 演算子は、SQL ステートメントの WHERE 句に複数の存在を許可します。条件。 |
BETWEEN |
BETWEEN 演算子は、指定された最小値と最大値の範囲内の値の範囲内の値を検索するために使用されます。 |
EXISTS |
EXISTS 演算子は、特定の条件を満たす指定されたテーブル内の行の存在を検索するために使用されます。 |
IN |
IN 演算子は、値を指定された値のリストと比較するために使用されます。 |
NOT IN |
IN 演算子の逆で、値を指定されたリストにない値と比較するために使用されます。 |
LIKE |
LIKE 演算子は、ワイルドカード演算子を使用して値を類似の値と比較するために使用されます。 |
GLOB |
GLOB 演算子は、ワイルドカード演算子を使用して値を類似の値と比較するために使用されます。 GLOB は、大文字と小文字が区別されるという点で LIKE とは異なります。 |
NOT |
NOT 演算子は、使用される論理演算子の逆です。たとえば、NOT EXISTS、NOT BETWEEN、NOT IN などです。否定演算子です。 |
OR |
OR 演算子は、SQL ステートメントのWHERE句で複数の条件を結合するために使用されます。 |
IS NULL |
NULL 演算子は、値を NULL 値と比較するために使用されます。 |
IS |
IS 演算子は = と似ています。 |
IS NOT |
IS NOT 演算子は!= と似ています。 |
|| |
2 つの異なる文字列を連結して、新しい文字列を取得します。 |
ユニーク |
UNIQUE 演算子は、指定されたテーブル内のすべての行を検索し、一意性 (重複がないこと) を保証します。 |
1. ビット演算子
次の表は、SQLite 言語でサポートされているビット演算子のリストです。変数 A=60、変数 B=13 と仮定すると、次のようになります。
バイナリ AND | 演算子は、両方のオペランドが同時に存在する場合、結果に 1 ビットをコピーします。
(A & B) |
は、オペランド、バイナリ OR のいずれかに存在する場合、0000 1100
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
演算子 1 ビットを結果。
| (A | B) は 61、つまり 0011 1101 を取得します |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
「フリップ」ビットエフェクトつまり、0は1になり、1は0になります。
| (~A ) は -61 を取得します。これは、符号付き 2 進数の補数形式である 1100 0011 です。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
は 15 、つまり 0000 1111 になります |
3. あまり使用されない句1. GLOB 日常的な SQL では、GLOB の関数は基本的には LIKE と同じです。最大の違いは、GLOB が大文字と小文字を区別することです。 アスタリスク (*) は、0、1 つ以上の数字または文字を表します。疑問符 (?) は 1 つの数字または文字を表します。 Like との比較: GLOB's* と Like の役割は GLOB と一致していますか? LIKE 2. HAVING の機能と一致します。 では、WHERE と HAVING の違いは何でしょうか。実際、この 2 つの違いは実際には非常に大きいです。 (1) HAVING 句を使用すると、最終結果に表示されるグループ化された結果をフィルターするための条件を指定できます。 (2) WHERE 句は選択した列に条件を設定し、HAVING 句は GROUP BY 句によって作成されたグループに条件を設定します。 (3)HAVINGは、SELECTステートメントでのみ使用できます。 (4)HAVING テーブルをクエリして、各クラスの 20 歳以上で性別が男性の人数をクエリしますselect COUNT(*)as'> ; 20 歳の人の数 ',classidfromTable1wheresex='男性'groupbyclassid,agehavingage gt;20 -- 注意事項: where句、groupby句、having句、集計関数が同時に含まれる場合の実行順序は以下の通りです -- where句を実行して条件を満たすデータを検索します。-- groupby句を使用して、グループによって形成されたグループに対して集計関数を実行します。 by節を使用して各グループの値を計算し、最後にhavingサブ節を使用します。条件を満たさない文は削除されます。 --having 節内のすべての要素は、selectリストにも表示される必要があります。 oracle.--having 句やwhere句などの一部のデータベース例外は、クエリ結果が特定の条件を満たすように制限を設定するために使用できます。 --having 句は、行ではなくグループを制限します。集計関数は where 句では使用できませんが、having 句では使用できます。 SQLite 的 DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。 有可能出现一种情况,在一个表中有多个重复的记录。当提取这样的记录时,DISTINCT 关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。 约束是在表的数据列上强制执行的规则。这些是用来限制可以插入到表中的数据类型。这确保了数据库中数据的准确性和可靠性。 约束可以是列级或表级。列级约束仅适用于列,表级约束被应用到整个表。 以下是在 SQLite 中常用的约束。 · NOT NULL 约束:确保某列不能有 NULL 值。 · DEFAULT 约束:当某列没有指定值时,为该列提供默认值。 · UNIQUE 约束:确保某列中的所有值是不同的。 · PRIMARY Key 约束:唯一标识数据库表中的各行/记录。 · CHECK 约束:CHECK 约束确保某列中的所有值满足一定条件。 SQLite 的 Joins 子句用于结合两个或多个数据库中表的记录。JOIN 是一种通过共同值来结合两个表中字段的手段。 SQL 定义了三种主要类型的连接: · 交叉连接 - CROSS JOIN · 内连接 - INNER JOIN · 外连接 - OUTER JOIN 1、交叉连接CROSS JOIN 交叉连接(CROSSJOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。由于交叉连接(CROSS JOIN)有可能产生非常大的表,使用时必须谨慎,只在适当的时候使用它们。 2、内连接inner join 内连接的结果是从两个或者两个以上的表的组合中挑选出符合连接条件的数据。如果数据无法满足连接条件则将其丢弃。在内连接中,参与连接的表的地位是平等的。 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种: 1)等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。 2)不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、816ff14aff4448eec8a656c2ab5ef5de、!<和a8093152e673feb7aba1828c43532094。 3)自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。 3、外连接 外连接(OUTERJOIN)是内连接(INNER JOIN)的扩展。虽然 SQL标准定义了三种类型的外连接:LEFT、RIGHT、FULL,但 SQLite 只支持 左外连接(LEFT OUTER JOIN)。外连接(OUTER JOIN)声明条件的方法与内连接(INNER JOIN)是相同的,使用 ON、USING 或 NATURAL 关键字来表达。最初的结果表以相同的方式进行计算。一旦主连接计算完成,外连接(OUTER JOIN)将从一个或两个表中任何未连接的行合并进来,外连接的列使用 NULL值,将它们附加到结果表中。 1、SQLite的 UNION 子句/运算符用于合并两个或多个 SELECT 语句的结果,不返回任何重复的行。 UNION を使用するには、各 SELECT で選択される列の数が同じであり、列式の数も同じで、データ型も同じである必要があり、それらの順序が同じであることを確認しますが、同じである必要はありません。長さ。 2. UNIONALL 句 UNION ALL 演算子は、重複する行を含む 2 つの SELECT ステートメントの結果を結合するために使用されます。 UNION に適用されるのと同じルールが UNION ALL 演算子にも適用されます。 SQLite トリガー (トリガー) は、指定されたデータベース イベントが発生したときに自動的に実行/呼び出しされるデータベースのコールバック関数です。 SQLite のトリガーに関する重要なポイントは次のとおりです: SQLite のトリガーは、特定のデータベース テーブルで DELETE、INSERT、または UPDATE が発生したとき、または 1 つ以上の指定されたテーブルの列が発生したときにトリガーするように指定できます。アップデートが発生します。 SQLite は FOR EACH ROW トリガー (トリガー) のみをサポートし、FOR EACH STATEMENT トリガー (トリガー) はサポートしません。したがって、FOR EACH ROW の明示的な指定はオプションです。 WHEN 句とトリガー (トリガー) アクションは、 NEW.column-name および OLD.column-name 形式の参照を使用して、挿入、削除、または更新された行要素にアクセスできます。ここで、column-name は名前に関連付けられたトリガーからのものです。テーブル列の。 WHEN 句が指定されている場合、SQL ステートメントは、WHEN 句が true である指定された行に対してのみ実行されます。 WHEN 句が指定されていない場合、SQL ステートメントはすべての行に対して実行されます。 BEFORE または AFTER キーワードは、関連付けられた行の挿入、変更、または削除の前か後かに関係なく、トリガー アクションがいつ実行されるかを決定します。 トリガーに関連付けられたテーブルが削除されると、トリガー(Trigger)も自動的に削除されます。 変更するテーブルは、トリガーがアタッチされているテーブルまたはビューと同じデータベースに存在する必要があり、database.tablename ではなく、tablename のみを使用する必要があります。 特別な SQL 関数 RAISE() を使用して、プログラム内でスローされる例外をトリガーできます。 例: SELECT name FROM sqlite_master WHEREtype = 'trigger';各行のすべてのトリガーを表示できます は、操作ステートメントが行に影響を与えるたびに1回トリガーされることです。そして 10 行を削除するだけで 10 回トリガーされ、 状態ごとに 操作ステートメントが 1 回トリガーされ、場合によっては影響を受けない行も実行されます。 sqlite は、各行 に対する のトリガーのみを実装します。 各行の と の使用法は次のようになります: AFTERUPDATE OF id ON table_1 FOR EACHROW いつ 新しい。 id>30 UPDATEtable_2 SET id =new.id WHEREtable_2 .id=古い。 id; ; 上記のトリガーは table_1 の ID を変更します 新しい ID が 30 を超える場合、table_1 の ID と等しい table_2 の行が新しい ID に変更されます 単一列インデックス 複合インデックスは、テーブルの 2 つ以上の列に対して作成されるインデックスです。基本的な構文は次のとおりです。CREATE INDEX index_name on table_name (column1, column2);単一列インデックスを作成する場合でも、複合インデックスを作成する場合でも、クエリ フィルターとして WHERE 句で頻繁に使用する列を考慮してください。 値に列が使用されている場合は、単一列インデックスの使用を選択します。 WHERE 句でフィルターとして頻繁に使用される列が 2 つ以上ある場合は、複合インデックスの使用を選択します。 暗黙的なインデックス 暗黙的なインデックスは、オブジェクトの作成時にデータベースサーバーによって自動的に作成されるインデックスです。インデックスは主キー制約と一意制約を使用して自動的に作成されます。SELECT * FROM sqlite_master WHEREtype = 'index'; データベース内のすべてのインデックスを表示DROP INDEX Index_name; SQLiteのDROPコマンドを使用してインデックスを削除できますどのような状況で行うべきかインデックスを使用しないでください? インデックス作成の目的はデータベースのパフォーマンスを向上させることですが、インデックスの使用を避けなければならない状況がいくつかあります。インデックスを使用する場合は、次のガイドラインを再検討する必要があります。 インデックスは小さなテーブルでは使用しないでください。不検索 インデックスは、大量の操作や挿入操作が頻繁に行われるテーブルでは使用しないでください。 ・ NULL 値を多数含む列ではインデックスを使用しないでください。 · 頻繁に操作される列ではインデックスを使用しないでください。 Indexed By "INDEXEDBY インデックス名" 句は、前のテーブルの値を検索するために名前付きインデックスが必要であることを指定します。 インデックス名index-nameが存在しないか、クエリに使用できない場合、SQLiteステートメントの準備は失敗します。 「NOTINDEXED」句は、前のテーブル (UNIQUE 制約と PRIMARYKEY 制約によって作成された暗黙的なインデックスを含む) にアクセスするときにインデックスが使用されないことを指定します。 ただし、「NOT INDEXED」が指定されている場合でも、INTEGER PRIMARY KEY を使用してエントリを検索できます。INDEXED BYは、DELETE 、UPDATE、またはSELECTステートメントと一緒に使用できます:SELECT|DELETE|UPDATE column1, column2... INDEXED BY (index_name) table_name WHERE (CONDITION); 十、重命名表或向表中插入新的字段用来重命名已有的表的 ALTERTABLE 的基本语法如下: ALTERTABLE database_name.table_name RENAME TOnew_table_name; 用来在已有的表中添加一个新的列的 ALTERTABLE 的基本语法如下: ALTERTABLE database_name.table_name ADD COLUMNcolumn_def...; 十一、视图视图(View)只不过是通过相关的名称存储在数据库中的一个 SQLite 语句。视图(View)实际上是一个以预定义的 SQLite 查询形式存在的表的组合。 视图(View)可以包含一个表的所有行或从一个或多个表选定行。视图(View)可以从一个或多个表创建,这取决于要创建视图的 SQLite 查询。、 视图(View)是一种虚表,允许用户实现以下几点: ① 用户或用户组查找结构数据的方式更自然或直观。 ② 限制数据访问,用户只能看到有限的数据,而不是完整的表。 ③ 汇总各种表中的数据,用于生成报告。 SQLite 视图是只读的,因此可能无法在视图上执行 DELETE、INSERT 或 UPDATE 语句。但是可以在视图上创建一个触发器,当尝试 DELETE、INSERT 或 UPDATE 视图时触发,需要做的动作在触发器内容中定义。 1、创建视图 CREATE [TEMP | TEMPORARY] VIEW view_name AS SELECT column1, column2..... FROM table_name WHERE [condition]; 2、删除视图 DROP VIEW view_name; 十二、日期时和时间SQLite 支持以下五个日期和时间函数:
上記の 5 つの日付と時刻の関数は、パラメーターとして時刻文字列を受け取ります。時間文字列の後に 0 個以上の 修飾子 修飾子が続きます。 strftime() 関数は、最初のパラメーターとしてフォーマット文字列 format を取ることもできます。さまざまなタイプの時間文字列と修飾子については、以下で詳しく説明します。 時刻文字列時刻文字列は次のいずれかの形式です:
|
以上がSQLLite関連コンテンツの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。