Heim > Datenbank > MySQL-Tutorial > SQLLite-bezogener Inhalt

SQLLite-bezogener Inhalt

jacklove
Freigeben: 2018-06-14 16:25:30
Original
2374 Leute haben es durchsucht

Hmm. . . Allgemeinwissen vor einiger Zeit zusammengestellt:

SQLLiteStudiennotizen

SQLite, ist eine leichtgewichtige Datenbank ist ein relationales Datenbankverwaltungssystem, das ACID entspricht und in einer relativ kleinen C-Bibliothek enthalten ist. Es kann gängige Betriebssysteme wie Windows/Linux/Unix unterstützen und mit vielen Programmiersprachen wie Tcl, C#, PHP, Java usw. kombiniert werden. Die Verarbeitungsgeschwindigkeit ist sehr hoch.

1. Grundoperationen

Tabelle erstellen:

Schlüsselwörter: AUTOINCREMENT kann verwendet werden, um den Wert einer bestimmten Spalte automatisch zu erhöhen. Es kann nur für Kunststofffelder verwendet werden. Sie können dieses Schlüsselwort beim Erstellen der Tabelle hinzufügen

Tabelle löschen:

Neue Daten in die Tabelle einfügen

oder

Die zweite Schreibweise muss sicherstellen, dass die Reihenfolge der Werte mit der Reihenfolge der Spalten in der Tabelle übereinstimmt

Nach der Abfrage der Tabelle

Sie können eine bedingte Abfrage mit WHERE durchführen, „*“ bedeutet alle Spalten in der Abfragetabelle, oder Sie können dies tun

--Unterabfrage oder interne Abfrage oder verschachtelte Abfrage, eingebettet in die Where-Unterabfrage in einer anderen SQL-Spezialabfrage. Sie müssen im Satz abfragen.

Im Folgenden sind einige Regeln aufgeführt, die Unterabfragen befolgen müssen:

· Unterabfragen müssen in Klammern eingeschlossen werden.

·  Eine Unterabfrage kann nur eine Spalte in der SELECT -Klausel haben, es sei denn, es gibt eine in der Hauptabfrage Mehrere Spalten im Vergleich zu den ausgewählten Spalten der Unterabfrage.

· ORDER BY kann nicht in einer Unterabfrage verwendet werden, obwohl die Hauptabfrage ORDER BY . Sie können GROUP BY in Unterabfragen verwenden, was die gleiche Funktion hat wie ORDER BY .

·  Unterabfrage gibt mehr als eine Zeile zurück und kann nur mit mehrwertigen Operatoren wie IN Betreiber. Der

· 

BETWEEN -Operator kann nicht mit Unterabfragen verwendet werden, BETWEEN kann jedoch verwendet werden Wird in Unterabfragen verwendet. Tabellendaten ändern

Tabellendaten löschen

2. Operatoren

Angenommen, Variable a=10

, Variable b =20, dann: Arithmetischer Operator

Operator

Beschreibung

Instanz

+

Addition -

Addiere die Werte auf beiden Seiten des Operators

a + b

erhält 30

-

Subtraktion - Linker Operand minus rechter Operand

a - b ergibt -10

*

Multiplikation - Multiplizieren Sie die Werte auf beiden Seiten des Operators

a * b erhalten 200

/

Division - Linker Operand geteilt durch rechten Operanden

b/a erhält 2

%

Modulo - Der Rest, der nach der Division des linken Operanden durch den rechten Operanden erhalten wird

b % a ergibt 0

Vergleichsoperatoren

Operatoren

Beschreibung

Instanz

==

Prüft, ob die Werte der beiden Operanden gleich sind. Wenn sie gleich sind, ist die Bedingung wahr.

(a == b) ist nicht wahr.

=

Überprüfen Sie den Wert beider Operanden Ob sie sind gleich, wenn ja, ist die Bedingung wahr.

(a = b) ist nicht wahr.

!=

Überprüfen Sie die beiden Operanden Ob die Werte sind gleich, andernfalls ist die Bedingung wahr.

(a != b) ist wahr.

<>

Überprüfen Sie zwei Vorgänge Ob die Werte der Zahlen sind gleich, andernfalls ist die Bedingung wahr.

(a <> b) ist wahr.

>

Überprüfen Sie den Wert des linken Operand Ist er größer als der Wert des rechten Operanden? Wenn ja, ist die Bedingung wahr.

(a > b) ist nicht wahr.

<

Überprüfen Sie den Wert des Links Operand Ist er kleiner als der Wert des rechten Operanden? Wenn ja, ist die Bedingung wahr.

(a < b) ist wahr.

>=

Überprüfen Sie den linken Operanden Ob Der Wert ist größer oder gleich dem Wert des rechten Operanden. Wenn ja, ist die Bedingung wahr.

(a >= b) ist nicht wahr.

<=

Überprüfen Sie den linken Operanden Ob Der Wert ist kleiner oder gleich dem Wert des rechten Operanden. Wenn ja, ist die Bedingung wahr.

(a <= b) ist wahr.

!<

Überprüfen Sie den linken Operanden Ob Der Wert ist nicht kleiner als der Wert des rechten Operanden. Wenn ja, ist die Bedingung wahr.

(a !< b) ist falsch.

!>

Überprüft, ob der Wert des linken Operanden nicht größer ist als der Wert des rechten Operanden. Wenn ja, ist die Bedingung wahr.

(a !> b) ist wahr.

Logische Operatoren

Operatoren

Beschreibung-Anweisung zulässig.

BETWEEN

BETWEEN -Operator wird verwendet Sucht nach einem Wert innerhalb eines Wertebereichs innerhalb eines bestimmten Mindest- und Höchstbereichs.

EXISTS

EXISTS Mithilfe von Operatoren wird nach Zeilen in einer bestimmten Tabelle gesucht, die bestimmte Bedingungen erfüllen.

IN

IN Operatoren werden verwendet, um einen Wert mit einer angegebenen Werteliste zu vergleichen.

NICHT IN

IN -Operators, der zum Vergleichen eines Werts mit Werten verwendet wird, die nicht in einer angegebenen Liste enthalten sind.

LIKE

LIKE Operatoren werden verwendet, um einen Wert mithilfe von Platzhalteroperatoren mit ähnlichen Werten zu vergleichen.

GLOB

GLOB Operatoren werden verwendet, um einen Wert mithilfe von Platzhalteroperatoren mit ähnlichen Werten zu vergleichen. GLOB unterscheidet sich von LIKE dadurch, dass die Groß-/Kleinschreibung beachtet wird.

NOT

NOT Operator ist The Gegenteil des verwendeten logischen Operators. Zum Beispiel NOT EXISTS, NOT BETWEEN, NOT IN usw. Es ist der Negationsoperator.

OR

OR -Operator wird verwendet Zum Kombinieren mehrerer Bedingungen in der WHERE-Klausel einer SQL--Anweisung.

IS NULL

NULL Verwendeter Operator um einen Wert mit einem NULL--Wert zu vergleichen.

IS

IS Operator mit = Ähnlich.

IST NICHT

IST NICHT Betrieb Das Symbol ähnelt != .

||

Verketten Sie zwei verschiedene Zeichenfolgen, um eine neue Zeichenfolge zu erhalten .

EINZIGARTIG

Der Operator

UNIQUE durchsucht jede Zeile in der angegebenen Tabelle und stellt so Eindeutigkeit (keine Duplikate) sicher.

1. Bitoperatoren

Die folgende Tabelle listet die vom SQLite -Sprachsymbol unterstützten Bitoperationen auf . Angenommen, Variable A=60 und Variable B=13, dann:

运算符

描述

实例

&

如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。

(A & B) 将得到 12,即为 0000  1100

|

如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。

(A | B) 将得到 61,即为 0011  1101

~

二进制补码运算符是一元运算符,具有"翻转"位效应,即0变成1,1变成0。

(~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。

<<

二进制左移运算符。左操作数的值向左移动右操作数指定的位数。

A << 2 将得到 240,即为 1111 0000

>> 

二进制右移运算符。左操作数的值向右移动右操作数指定的位数。

A >> 2 将得到 15,即为 0000  1111

OperatorBeschreibung Instanz & Der binäre UND-Operator kopiert ein Bit in das Ergebnis, wenn es in beiden Operanden vorhanden ist. (A & B) erhält 12, also 0000 1100 | Wenn in einem der Operanden vorhanden, kopiert der binäre OR -Operator eins in das Ergebnis . (A | B) erhält 61, also 0011 1101 ~Der binäre Komplementoperator ist ein unärer Operator mit „ Biteffekt umkehren, d. h. 0 wird zu 1 und 1 wird zu 0. (~A ) erhält -61, was 1100 0011 ist, dem Komplement einer vorzeichenbehafteten Binärzahl Codeform. << <🎜><🎜><🎜><🎜><🎜><🎜>Binärer Linksverschiebungsoperator. Der Wert des linken Operanden wird um die vom rechten Operanden angegebene Anzahl von Bits nach links verschoben. <🎜><🎜><🎜><🎜><🎜><🎜>A << 2 <🎜><🎜> erhält 240<🎜>, also 1111 0000<🎜><🎜><🎜> <🎜><🎜>>> Binärer Rechtsverschiebungsoperator. Der Wert des linken Operanden wird um die vom rechten Operanden angegebene Anzahl von Bits nach rechts verschoben. A >> 2 erhält 15, also 0000 1111

3. Ungewöhnlich verwendete Klauseln

In unserem täglichen SQL ist GLOB im Grunde nicht die gleiche wie die von LIKE Bei GLOB wird zwischen Groß- und Kleinschreibung unterschieden.

Das Sternchen (*

) steht für null, eine oder mehrere Zahlen oder Zeichen. Das Fragezeichen (?) steht für eine einzelne Zahl oder ein einzelnes Zeichen. Vergleich mit LIKE: GLOB’s * hat den gleichen Effekt wie LIKE’s %

GLOB’s? Im Einklang mit der Funktion von LIKE

2. Gibt die bedingte Filterung an. Es scheint, dass wir uns überlegen können, wo der Unterschied zwischen WHERE und HAVING liegt. Tatsächlich ist der Unterschied zwischen den beiden ziemlich groß.

(1) Die HAVING-Klausel ermöglicht die Angabe von Bedingungen zum Filtern der gruppierten Ergebnisse, die im Endergebnis angezeigt werden.

(2) Die WHERE-Klausel legt Bedingungen für die ausgewählten Spalten fest, während die HAVING-Klausel Bedingungen für die durch die GROUP BY-Klausel erstellte Gruppierung festlegt.

(3)HAVING

kann nur mit der

SELECT-Anweisung verwendet werden. (4)HAVING
steht normalerweise in der Klausel GROUP
BY verwenden. (5)
Wenn die GROUP
BY-Klausel nicht verwendet wird Dann verhält sich HAVING genauso wie die WHERE-Klausel. (6) In einer Abfrage muss die HAVING-Klausel nach der GROUP BY-Klausel und vor der ORDER BY-Klausel platziert werden.

--

Zum Beispiel: Abfragetabelle

Tabelle zur Abfrage der Anzahl der Personen in jeder Klasse, die älter als 20 Jahre sind und deren Geschlecht männlich istselect

COUNT(*)as

'>20Anzahl der Jahre alt',klassifiziertvonTabelle1 wobeisex='Männlich'GruppenachKlasse, Alter mitAlter>20--

muss beachtet werden: wenn es auch die where

-Klausel enthält , gruppierennach Klausel , mit Klausel und Aggregatfunktion, ist die Ausführungsreihenfolge wie folgt: -- führt die where

-Klausel aus, um Daten zu finden, die die Bedingungen erfüllen

--Verwenden Sie die Gruppe

by-Klausel zum Gruppieren von Daten; Gruppe Die durch die by-Klausel gebildeten Gruppen führen eine Aggregatfunktion aus, um den Wert jeder Gruppe zu berechnen. Verwenden Sie schließlich die Taking-Klausel um Gruppen zu entfernen, die die Bedingungen nicht erfüllen. Jedes Element in der --having-Klausel muss auch in der select-Liste erscheinen. Es gibt einige Datenbankausnahmen, wie zum Beispiel Oracle.

--having-Klausel und where-Klausel können verwendet werden, um Einschränkungen festzulegen, damit die Abfrageergebnisse bestimmte Bedingungen erfüllen . Die Klausel

--having schränkt Gruppen ein, nicht Zeilen. Aggregatfunktionen können nicht in der where-Klausel verwendet werden, wohl aber in der have-Klausel.

四、Distinct 关键字

SQLite 的 DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。

有可能出现一种情况,在一个表中有多个重复的记录。当提取这样的记录时,DISTINCT 关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。

五、约束

约束是在表的数据列上强制执行的规则。这些是用来限制可以插入到表中的数据类型。这确保了数据库中数据的准确性和可靠性。

约束可以是列级或表级。列级约束仅适用于列,表级约束被应用到整个表。

以下是在 SQLite 中常用的约束。

·          NOT NULL 约束:确保某列不能有 NULL 值。

·          DEFAULT 约束:当某列没有指定值时,为该列提供默认值。

·          UNIQUE 约束:确保某列中的所有值是不同的。

·          PRIMARY Key 约束:唯一标识数据库表中的各行/记录。

·          CHECK 约束:CHECK 约束确保某列中的所有值满足一定条件。

六、SQLite Joins

SQLite 的 Joins 子句用于结合两个或多个数据库中表的记录。JOIN 是一种通过共同值来结合两个表中字段的手段。

SQL 定义了三种主要类型的连接:

·          交叉连接 - CROSS JOIN

·          内连接 - INNER JOIN

·          外连接 - OUTER JOIN

1、交叉连接CROSS JOIN

交叉连接(CROSSJOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。由于交叉连接(CROSS JOIN)有可能产生非常大的表,使用时必须谨慎,只在适当的时候使用它们。

2、内连接inner join

内连接的结果是从两个或者两个以上的表的组合中挑选出符合连接条件的数据。如果数据无法满足连接条件则将其丢弃。在内连接中,参与连接的表的地位是平等的。

内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:

1)等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。

2)不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。

3)自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。

3、外连接

外连接(OUTERJOIN)是内连接(INNER JOIN)的扩展。虽然 SQL标准定义了三种类型的外连接:LEFT、RIGHT、FULL,但 SQLite 只支持 左外连接(LEFT OUTER JOIN)。外连接(OUTER JOIN)声明条件的方法与内连接(INNER JOIN)是相同的,使用 ON、USING 或 NATURAL 关键字来表达。最初的结果表以相同的方式进行计算。一旦主连接计算完成,外连接(OUTER JOIN)将从一个或两个表中任何未连接的行合并进来,外连接的列使用 NULL值,将它们附加到结果表中。

七、unions子句

1、SQLite的 UNION 子句/运算符用于合并两个或多个 SELECT 语句的结果,不返回任何重复的行。

Um UNION verwenden zu können, muss die Anzahl der von jedem SELECT ausgewählten Spalten gleich sein, die gleiche Anzahl an Spaltenausdrücken und der gleiche Datentyp sein und sicherstellen, dass sie die gleiche Reihenfolge haben, aber das muss nicht der Fall sein gleich lang.

2. UNIONALL-Klausel

Der UNION ALL-Operator wird verwendet, um die Ergebnisse zweier SELECT-Anweisungen zu kombinieren, einschließlich doppelter Zeilen.

Die für UNION geltenden Regeln gelten auch für den UNION ALL-Operator.

8. Trigger

SQLite-Trigger (Trigger) ist die Rückruffunktion der Datenbank, die automatisch ausgeführt/aufgerufen wird, wenn das angegebene Datenbankereignis auftritt. Im Folgenden sind die wichtigsten Punkte zu den Triggern von SQLite aufgeführt:

  • SQLite-Trigger können so angegeben werden, dass sie ausgelöst werden, wenn ein DELETE, INSERT oder UPDATE in einer bestimmten Datenbanktabelle auftritt oder wenn eine oder mehrere davon ausgelöst werden Spalten der angegebenen Tabelle werden aktualisiert.

  • SQLite unterstützt nur FOR EACH ROW-Trigger (Trigger), nicht FOR EACH STATEMENT-Trigger (Trigger). Daher ist die explizite Angabe von FOR EACH ROW optional.

  • WHEN-Klauseln und Auslöseraktionen können auf Zeilenelemente zugreifen, die mithilfe von Referenzen der Form NEW.column-name und OLD.column-name eingefügt, gelöscht oder aktualisiert werden, wobei Column -name ist ist der Name der Spalte aus der Tabelle, die dem Trigger zugeordnet ist.

  • Wenn eine WHEN-Klausel angegeben ist, wird die SQL-Anweisung nur für die angegebenen Zeilen ausgeführt, in denen die WHEN-Klausel wahr ist. Wenn keine WHEN-Klausel angegeben ist, wird die SQL-Anweisung für alle Zeilen ausgeführt.

  • Das Schlüsselwort BEFORE oder AFTER bestimmt, wann die Triggeraktion ausgeführt wird, sei es vor oder nach dem Einfügen, Ändern oder Löschen der zugehörigen Zeile.

  • Wenn die mit dem Trigger verknüpfte Tabelle gelöscht wird, wird der Trigger (Trigger) automatisch gelöscht.

  • Die zu ändernde Tabelle muss in derselben Datenbank vorhanden sein wie die Tabelle oder Ansicht, an die der Trigger angehängt ist, und es darf nur Tabellenname verwendet werden, nicht Datenbank.Tabellenname.

  • Eine spezielle SQL-Funktion RAISE() kann verwendet werden, um innerhalb des Programms ausgelöste Ausnahmen auszulösen.

Beispiel:

SELECT name FROM sqlite_master WHEREtype = 'trigger';Sie können alle Trigger anzeigen

für jede Zeile wird jedes Mal einmal ausgelöst, wenn sich die Operationsanweisung auf eine Zeile auswirkt, d. h. sie wird ausgelöst, wenn 10 Zeilen gelöscht werden 10 Mal und für jeden Zustand wird einmal pro Operationsanweisung ausgelöst, und manchmal werden auch nicht betroffene Zeilen ausgeführt. SQLite implementiert nur das Auslösen von für jede Zeile . wenn und für jede Zeile die Verwendung wie folgt lautet:

CREATETRIGGER Trigger_Name

NACH AKTUALISIERUNG DER ID AUF Tabelle_1

FÜR JEDE ZEILE

WANN neu.id>30

BEGIN

UPDATEtable_2 SET id=neu.id WHEREtable_2.id=alt.id;

ENDE ;

Wenn der obige Trigger die ID in Tabelle_1 ändert und die neue ID>30 ist, werden die Zeilen in Tabelle Tabelle_2 mit derselben ID wie Tabelle_1 in die neue ID geändert

Neun, Index

Index (Index) ist eine spezielle Nachschlagetabelle, die Datenbanksuchmaschinen verwenden, um den Datenabruf zu beschleunigen . Indizes tragen dazu bei, SELECT -Abfragen und WHERE-Klauseln zu beschleunigen, verlangsamen jedoch die Dateneingabe bei Verwendung von UPDATE- und INSERT-Anweisungen. Indizes können ohne Auswirkungen auf die Daten erstellt oder gelöscht werden.

Einzelspaltenindex

Ein Einzelspaltenindex ist ein Index, der nur auf der Grundlage einer Spalte der Tabelle erstellt wird. Die grundlegende Syntax lautet wie folgt:

CREATE INDEX index_name
Nach dem Login kopieren
rrree

Eindeutiger Index

Die Verwendung eines eindeutigen Index dient nicht nur der Leistung, sondern auch der Datenintegrität. Ein eindeutiger Index lässt nicht zu, dass doppelte Werte in die Tabelle eingefügt werden. Die grundlegende Syntax lautet wie folgt:

ON table_name (column_name);
Nach dem Login kopieren
rrree

Kombinierter Index

Ein zusammengesetzter Index ist ein Index, der für zwei oder mehr Spalten einer Tabelle erstellt wird. Die grundlegende Syntax lautet wie folgt:

CREATE UNIQUE INDEX index_name
Nach dem Login kopieren
rrree

Ob Sie einen einzelnen Spaltenindex oder einen kombinierten Index erstellen möchten, müssen Sie das WHERE die Sie als Abfragefilterbedingung verwenden. Spalten, die in der Klausel sehr häufig verwendet werden.

Wenn der Wert eine Spalte verwendet, wählen Sie die Verwendung eines einzelnen Spaltenindex. Wenn es zwei oder mehr Spalten gibt, die häufig in der WHERE -Klausel als Filter verwendet werden, wählen Sie die Verwendung eines zusammengesetzten Index.

Impliziter Index

Impliziter Index ist ein Index, der beim Erstellen eines Objekts automatisch vom Datenbankserver erstellt wird. Indizes werden automatisch mit Primärschlüsseleinschränkungen und Eindeutigkeitseinschränkungen erstellt.

SELECT * FROM sqlite_master WHEREtype = 'index';Alle Indizes in der Datenbank anzeigen

DROP INDEX index_name; Ein Index kann mit dem DROP-Befehl von SQLite gelöscht werden

Unter welchen Umständen sollten Sie die Verwendung eines Indexes vermeiden?

Obwohl der Zweck der Indizierung darin besteht, die Leistung der Datenbank zu verbessern, gibt es mehrere Situationen, in denen die Indizierung vermieden werden sollte. Bei der Verwendung von Indizes sollten die folgenden Richtlinien überdacht werden:

· Indizes sollten nicht auf kleineren Tabellen verwendet werden.

·   Indizes sollten nicht für Tabellen mit häufigen großen Batch-Aktualisierungs- oder Einfügevorgängen verwendet werden. Der

· -Index sollte nicht für Spalten verwendet werden, die eine große Anzahl von NULL -Werten enthalten.

·   Indizes sollten nicht für häufig verwendete Spalten verwendet werden.

Indiziert durch

Die Klausel „INDEXEDBY index-name“ gibt an, dass ein benannter Index erforderlich sein muss, um den Wert in der vorherigen Tabelle zu finden.

Wenn der Indexname index-name nicht existiert oder nicht für die Abfrage verwendet werden kann, schlägt die Vorbereitung der SQLite-Anweisung fehl.

Die Klausel „NOTINDEXED“ gibt an, dass beim Zugriff auf die vorangehende Tabelle kein Index verwendet wird (einschließlich impliziter Indizes, die durch UNIQUE- und PRIMARYKEY-Einschränkungen erstellt wurden).

Aber auch wenn „NOT INDEXED“ angegeben ist, kann der INTEGER PRIMARY KEY weiterhin zum Suchen von Einträgen verwendet werden.

INDEXED BY kann mit DELETE-, UPDATE- oder SELECT-Anweisungen verwendet werden:

SELECT|DELETE|UPDATE column1, column2...
Nach dem Login kopieren
INDEXED BY (index_name)
Nach dem Login kopieren
table_name
Nach dem Login kopieren
WHERE (CONDITION);
Nach dem Login kopieren

十、重命名表或向表中插入新的字段

用来重命名已有的表的 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
Nach dem Login kopieren
SELECT column1, column2.....
Nach dem Login kopieren
FROM table_name
Nach dem Login kopieren
WHERE [condition];
Nach dem Login kopieren

2、删除视图

DROP VIEW view_name;
Nach dem Login kopieren

十二、日期时和时间

SQLite 支持以下五个日期和时间函数:

Die oben genannten fünf Datums- und Uhrzeitfunktionen verwenden Zeitzeichenfolgen als Parameter. Eine Zeitzeichenfolge, gefolgt von null oder mehr Modifikatoren Modifikatoren. Die Funktion strftime() kann auch den Formatstring format als ersten Parameter annehmen. Die verschiedenen Arten von Zeitzeichenfolgen und Modifikatoren werden Ihnen im Folgenden ausführlich erläutert.

Zeitzeichenfolge

Eine Zeitzeichenfolge kann in einem der folgenden Formate vorliegen:

序号

函数

实例

1

date(timestring, modifier, modifier, ...)

YYYY-MM-DD 格式返回日期。

2

time(timestring, modifier, modifier, ...)

HH:MM:SS 格式返回时间。

3

datetime(timestring, modifier, modifier, ...)

YYYY-MM-DD HH:MM:SS 格式返回。

4

julianday(timestring, modifier, modifier, ...)

Dies ergibt 4714 Jahr 11 Monat 24 Die Anzahl der Tage ab Mittag des Tages.

5

strftime(format, timestring, modifier , Modifikator, ...)

Dies gibt ein formatiertes Datum zurück, das auf der durch das erste Argument angegebenen Formatzeichenfolge basiert. Das spezifische Format wird unten erläutert.

Seriennummer

序号

时间字符串

实例

1

YYYY-MM-DD

2010-12-30

2

YYYY-MM-DD  HH:MM

2010-12-30  12:10

3

YYYY-MM-DD  HH:MM:SS.SSS

2010-12-30  12:10:04.100

4

MM-DD-YYYY  HH:MM

30-12-2010  12:10

5

HH:MM

12:10

6

YYYY-MM-DDTHH:MM

2010-12-30  12:10

7

HH:MM:SS

12:10:01

8

YYYYMMDD  HHMMSS

20101230  121001

9

now

2013-05-07

Zeitzeichenfolge

Beispiel

1

YYYY-MM-DD

2010-12-30

2

JJJJ-MM-TT HH:MM

2010-12-30 12:10

3

YYYY-MM-DD HH: MM :SS.SSS

2010-12-30 12:10:04.100

4

MM-TT-JJJJ HH: MM

30-12-2010 12 : 10

5

HH:MM

12:10

6

YYYY-MM-DDTHH:MM

2010-12-30 12:10

7

HH:MM:SS

12:10:01

8

JJJJMMTT HHMMSS

20101230 121001

9

now

2013-05-07

Sie können „T“ als Textzeichen verwenden, um Datum und Uhrzeit zu trennen.

Modifikator

Der Zeitzeichenfolge können null oder mehr Modifikatoren folgen, die das Datum und das von den oben genannten fünf Funktionen zurückgegebene Datum ändern >/ oder Zeit. Jede der oben genannten fünf Funktionen gibt die Zeit zurück. Modifikatoren sollten von links nach rechts verwendet werden. Die Modifikatoren, die in SQLite verwendet werden können, sind unten aufgeführt:

(1)

Erhöhen Sie Datum und Uhrzeit des angegebenen Werts (positive oder negative Zahlen sind akzeptabel)

·      

NNN Tage

·                                                                             NNN.NNNN Sekunden

·  🎜>

(2)

Gibt den Beginn des aktuellen Datums zurück

· 

Monatsanfang

· 

Jahresanfang

· 

Beginn des Tages

(3)

gibt das Datum und die Uhrzeit der nächsten Woche zurück, also N

·                          Wochentag N

(4) gibt die Anzahl der Sekunden seit 1970-01-01

· 

unixepoch(5 )Zurück zur Ortszeit

· Ortszeit

( 6) Internationale Standardzeit· 

utc

Formatierung

SQLite bietet sehr praktische Funktionen strftime() zum Formatieren auf ein beliebiges Datum und Zeit. Sie können Datums- und Uhrzeitangaben mit den folgenden Ersetzungen formatieren:

替换

描述

%d

一月中的第几天,01-31

%f

带小数部分的秒,SS.SSS

%H

小时,00-23

%j

一年中的第几天,001-366

%J

儒略日数,DDDD.DDDD

%m

月,00-12

%M

分,00-59

%s

1970-01-01 算起的秒数

%S

秒,00-59

%w

一周中的第几天,0-6 (0 is Sunday)

%W

一年中的第几周,01-53

%Y

年,YYYY

%%

%  symbol

Ersetzen

Beschreibung

% d

Der Tag des Monats, 01-31

Mit Sekundenbruchteilen, SS.SSS

% H

Stunde, 00 -23

%j

Während des Jahres Am nächsten Tag, 001-366

% J

Julianische Tagesnummer, DDDD.DDDD

%m

Monat ,00-12

%M

Punkte, 00-59 td>

%s

Von1970-01-01 Sekunden seit

%S

Sekunden, 00-59

%w

Eine Woche Der Wochentag, 0-6 (0 ist Sonntag)

%W

Jahr Die erste Woche von 01-53

%Y

Jahr, JJJJ

%%

%-Symbol

selectdatetime(&#39;now&#39;,&#39;localtime&#39;);--当前时间读取本地得时间
selectdatetime(&#39;now&#39;,&#39;start of month&#39;);--本月第一天
selectdatetime(&#39;now&#39;,&#39;start of month&#39;,&#39;+1 month&#39;,&#39;-1 day&#39;);--本月最后一天
selectdatetime(&#39;now&#39;,&#39;start of year&#39;,&#39;+1 year&#39;,&#39;start of month&#39;,&#39;-1 day&#39;);--今年最后一天
SELECTjulianday(date(&#39;now&#39;,&#39;localtime&#39;)) - julianday(&#39;2018-03-20&#39;);;--计算今天到2018-03-20相差多少天
Nach dem Login kopieren

十三、函数大全

1、count 用于计算一个数据库表中得行数

如:select count(*)from k_user

2、max 选择某列最大值

3、min 选择某列最小值

4、avg 计算某列平均值

5、sum 允许一个数值列计算总和

6、random 返回一个介于 -9223372036854775808 和 +9223372036854775807之间的伪随机整数

7、abs 返回数值参数得绝对值

8、upper 吧字符串转换为大写字母

9、lower 把字符串转换为小写字母

10、length 返回字符串长度

11、sqlite_version 返回数据库版本

12、coalesce(X,Y,……) 返回第一个非空参数的副本。若所有的参数均为NULL,返回NULL。至少2个参数。

13、ifnull(X,Y) 返回第一个非空参数的副本。若两个参数均为NULL,返回NULL。

14、last_insert_rowid() 返回当前数据库连接最后插入行的RowID。

15、nullif(X,Y) 当两参数不同时返回X,否则返回NULL。

16、quote(X) 返回参数的适于插入其他SQL语句中的值。字符串会被添加单引号。

17、round(X)或round(X,Y) 将X四舍五入,保留小数点后Y位。若忽略Y参数,则默认其为0。

18、zeroblob(N)     返回一个 N 字节长、全部由 0x00 组成的 BLOB。SQLite 或以很有效的组织这些 zeroblob。它可以被用于为以后的使用预留空间。以后可以使用 incremental BLOB I/O 来写入 BLOB 数据。

19、typeof(X) 返回表达式X的类型

20、change_count() 返回受上一语句影响的行数。(好像不能用)

21、total(X) 返回一组中所有非空值的数字和。若没有非空行,sum()返回null而total()返回0.0。total()的返回值为浮点数,sum()可以为整数。

22、ltrim(X)

lrtrim(X,Y)     返回从 X 的左边边去除所有出现在 Y 中字符以后的字符串。如果省略 Y,则去除空格。

23、 replace(X,Y,Z)     返回一个将 X 字符串中每一个出现 Y 的位置替换为 Z 后的字符串。它使用二进制对照序列进行比较。

24、randomblob(N)     返回一个 N 字节长的包含伪随机字节的 BLOG。 N 应该是正整数

25、rtrim(X)

rtrim(X,Y)     返回从 X 的右边去除所有出现在 Y 中字符以后的字符串。如果省略 Y,则去除空格。

26、soundex(X)     计算字符串 X的读音编码。如果参数为 NULL,则返回 "?000"。默认情况下 SQLite 忽略该函数。仅当在编译时指定 -DSQLITE_SOUNDEX=1 时才有效。

27、substr(X,Y,Z)

substr(X,Y) Gibt die Zeichenfolge X zurück Eine Zeichenfolge, die beim Y-ten Zeichen beginnt und eine Länge von Z hat. Wenn Z weggelassen wird, wird die Zeichenfolge bis zum Ende der Zeichenfolge zurückgegeben. Das erste Zeichen von X beginnt mit 1. Wenn Y negativ ist, zählen Sie von rechts. Wenn X eine UTF-8-Zeichenfolge ist, bezieht sich der tiefgestellte Wert auf tatsächliche UTF-8-Zeichen und nicht auf Bytes. Wenn X ein BLOB ist, bezieht sich der Index auf Bytes.

In diesem Artikel werden SQLLite-bezogene Inhalte erläutert. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Spark SQL implementiert Protokoll-Offline-Stapelverarbeitung

Detaillierte Erläuterung des MySQL-Abrufs von Daten

SQL-Vergleich der Zeitdifferenz zwischen zwei benachbarten Datensätzen

Das obige ist der detaillierte Inhalt vonSQLLite-bezogener Inhalt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage