SQLite语法备忘录

前端之家收集整理的这篇文章主要介绍了SQLite语法备忘录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

sqlite内建语法表

结构定义
CREATE TABLE

创建新表。

语法:

@H_404_38@sql-command::= CREATE [TEMP | TEMPORARY] TABLE @H_404_38@table-name (
@H_404_38@column-def
[,@H_404_38@column-def]*
[,@H_404_38@constraint]*
)
@H_404_38@sql-command::= CREATE [TEMP | TEMPORARY] TABLE [@H_404_38@database-name.] @H_404_38@table-name AS @H_404_38@select-statement
@H_404_38@column-def::= @H_404_38@name [@H_404_38@type] [[CONSTRAINT @H_404_38@name] @H_404_38@column-constraint]*
@H_404_38@type::= @H_404_38@typename |
@H_404_38@typename ( @H_404_38@number ) |
@H_404_38@typename ( @H_404_38@number,@H_404_38@number )
@H_404_38@column-constraint::= NOT NULL [ @H_404_38@conflict-clause ] |
PRIMARY KEY
[@H_404_38@sort-order] [ @H_404_38@conflict-clause ] |
UNIQUE
[ @H_404_38@conflict-clause ] |
CHECK (
@H_404_38@expr ) [ @H_404_38@conflict-clause ] |
DEFAULT
@H_404_38@value |
COLLATE
collation-name
@H_404_38@constraint::= PRIMARY KEY ( @H_404_38@column-list ) [ @H_404_38@conflict-clause ] |
UNIQUE (
@H_404_38@column-list ) [ @H_404_38@conflict-clause ] |
CHECK (
@H_404_38@expr ) [ @H_404_38@conflict-clause ]
@H_404_38@conflict-clause::= ON CONFLICT @H_404_38@conflict-algorithm
CREATE VIEW

创建一个视图(虚拟表),该表以另一种方式表示一个或多个表中的数据。

语法:

@H_404_38@sql-command::= CREATE [TEMP | TEMPORARY] VIEW [@H_404_38@database-name.] @H_404_38@view-name AS @H_404_38@select-statement

例子:
CREATE VIEW master_view AS
SELECT * FROM sqlite_master WHERE type='view';
说明:
创建一个名为master_view的视图,其中包括sqlite_master这个表中的所有视图表。
CREATE TRIGGER

创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。

语法:

@H_404_38@sql-statement::= CREATE [TEMP | TEMPORARY] TRIGGER @H_404_38@trigger-name [ BEFORE | AFTER ]
@H_404_38@database-event ON [@H_404_38@database-name .] @H_404_38@table-name
trigger-action
@H_404_38@sql-statement::= CREATE [TEMP | TEMPORARY] TRIGGER @H_404_38@trigger-name INSTEAD OF
@H_404_38@database-event
ON [@H_404_38@database-name .] @H_404_38@view-name
trigger-action
@H_404_38@database-event::= DELETE |
INSERT
|

UPDATE
|

UPDATE OF
@H_404_38@column-list
@H_404_38@trigger-action::= [ FOR EACH ROW | FOR EACH STATEMENT ] [ WHEN @H_404_38@expression ]
BEGIN
@H_404_38@trigger-step
; [ @H_404_38@trigger-step ; ]*
END
@H_404_38@trigger-step::= @H_404_38@update-statement | @H_404_38@insert-statement |
@H_404_38@delete-statement
| @H_404_38@select-statement

例子:
CREATE TRIGGER update_customer_address UPDATE OF address ON customers
BEGIN
UPDATE orders SET address = new.address WHERE customer_name = old.name;
END;
说明:
创建了一个名为update_customer_address的触发器,当用户更新customers表中的address字段时,将触发并更新orders表中的address字段为新的值。
比如执行如下一条语句:
UPDATE customers SET address = '1 Main St.' WHERE name = 'Jack Jones';
数据库自动执行如下语句:
UPDATE orders SET address = '1 Main St.' WHERE customer_name = 'Jack Jones';

CREATE INDEX

为给定表或视图创建索引。

语法:

@H_404_38@sql-statement::= CREATE [UNIQUE] INDEX @H_404_38@index-name
ON
[@H_404_38@database-name
.] @H_404_38@table-name ( @H_404_38@column-name [,@H_404_38@column-name]* )
[ ON CONFLICT @H_404_38@conflict-algorithm
]
@H_404_38@column-name::= @H_404_38@name [ COLLATE @H_404_38@collation-name] [ ASC | DESC ]

例子:
CREATE INDEXidx_email ON customers (email);
说明:
为customers表中的email创建一个名为idx_email的字段。

结构删除
DROP TABLE

删除表定义及该表的所有索引。

语法:

@H_404_38@sql-command::= DROP TABLE [@H_404_38@database-name.] @H_404_38@table-name
例子:
DROP TABLE customers;
DROP VIEW

删除一个视图。

语法:

@H_404_38@sql-command::= DROP VIEW @H_404_38@view-name

例子:
DROP VIEW master_view;

DROP TRIGGER

删除一个触发器。

语法:

@H_404_38@sql-statement::= DROP TRIGGER [@H_404_38@database-name .] @H_404_38@trigger-name

例子:
DROP TRIGGER update_customer_address;

DROP INDEX

删除一个索引。

语法:

@H_404_38@sql-command::= DROP INDEX [@H_404_38@database-name .] @H_404_38@index-name

例子:
DROP INDEX idx_email;

数据操作
INSERT

将新行插入到表。

语法:

@H_404_38@sql-statement::= INSERT [OR @H_404_38@conflict-algorithm] INTO [@H_404_38@database-name .] @H_404_38@table-name [(@H_404_38@column-list)] VALUES(@H_404_38@value-list) |
INSERT
[OR @H_404_38@conflict-algorithm] INTO [@H_404_38@database-name .] @H_404_38@table-name [(@H_404_38@column-list)] @H_404_38@select-statement
UPDATE

更新表中的现有数据。

语法:

@H_404_38@sql-statement::= UPDATE [ OR @H_404_38@conflict-algorithm ] [@H_404_38@database-name .] @H_404_38@table-name
SET
@H_404_38@assignment [,@H_404_38@assignment]*
[WHERE @H_404_38@expr]
@H_404_38@assignment::= @H_404_38@column-name = @H_404_38@expr
DELETE

从表中删除行。

语法:

@H_404_38@sql-statement::= DELETE FROM [@H_404_38@database-name .] @H_404_38@table-name [WHERE @H_404_38@expr]
SELECT

从表中检索数据。

语法:

@H_404_38@sql-statement::= SELECT [ALL | DISTINCT] @H_404_38@result [FROM @H_404_38@table-list]
[WHERE @H_404_38@expr]
[GROUP BY @H_404_38@expr-list]
[HAVING @H_404_38@expr]
[@H_404_38@compound-op @H_404_38@select]*
[ORDER BY @H_404_38@sort-expr-list]
[LIMIT @H_404_38@integer [( OFFSET |,) @H_404_38@integer]]
@H_404_38@result::= @H_404_38@result-column [,@H_404_38@result-column]*
@H_404_38@result-column::= * | @H_404_38@table-name . * | @H_404_38@expr [ [AS] @H_404_38@string ]
@H_404_38@table-list::= @H_404_38@table [@H_404_38@join-op @H_404_38@table @H_404_38@join-args]*
@H_404_38@table::= @H_404_38@table-name [AS @H_404_38@alias] |
(
@H_404_38@select ) [AS @H_404_38@alias]
@H_404_38@join-op::= ,| [NATURAL] [LEFT | RIGHT | FULL] [OUTER | INNER | CROSS] JOIN
@H_404_38@join-args::= [ON @H_404_38@expr] [USING ( @H_404_38@id-list )]
@H_404_38@sort-expr-list::= @H_404_38@expr [@H_404_38@sort-order] [,@H_404_38@expr [@H_404_38@sort-order]]*
@H_404_38@sort-order::= [ COLLATE @H_404_38@collation-name ] [ ASC | DESC ]
@H_404_38@compound_op::= UNION | UNION ALL | INTERSECT | EXCEPT
REPLACE

类似INSERT

语法:

@H_404_38@sql-statement::= REPLACE INTO [@H_404_38@database-name .] @H_404_38@table-name [( @H_404_38@column-list )] VALUES ( @H_404_38@value-list ) |
REPLACE INTO
[@H_404_38@database-name .] @H_404_38@table-name [( @H_404_38@column-list )] @H_404_38@select-statement
事务处理
BEGIN TRANSACTION

标记一个事务的起始点。

语法:

@H_404_38@sql-statement::= BEGIN [TRANSACTION [@H_404_38@name]]
END TRANSACTION

标记一个事务的终止。

语法:

@H_404_38@sql-statement::= END [TRANSACTION [@H_404_38@name]]
COMMIT TRANSACTION

标志一个事务的结束。

语法:

@H_404_38@sql-statement::= COMMIT [TRANSACTION [@H_404_38@name]]
ROLLBACK TRANSACTION

将事务回滚到事务的起点。

语法:

@H_404_38@sql-statement::= ROLLBACK [TRANSACTION [@H_404_38@name]]
其他操作
COPY

主要用于导入大量的数据。

语法:

@H_404_38@sql-statement::= COPY [ OR @H_404_38@conflict-algorithm ] [@H_404_38@database-name .] @H_404_38@table-name FROM @H_404_38@filename
[ USING DELIMITERS @H_404_38@delim ]
例子:
COPYcustomers FROM customers.csv;
EXPLAIN

语法:

@H_404_38@sql-statement::= EXPLAIN @H_404_38@sql-statement
PRAGMA

语法:

@H_404_38@sql-statement::= PRAGMA @H_404_38@name [= @H_404_38@value] |
PRAGMA
@H_404_38@function(@H_404_38@arg)
VACUUM

语法:

@H_404_38@sql-statement::= VACUUM [@H_404_38@index-or-table-name]
ATTACH DATABASE

附加一个数据库到当前的数据库连接。

语法:

@H_404_38@sql-statement::= ATTACH [DATABASE] @H_404_38@database-filename AS @H_404_38@database-name
DETTACH DATABASE

从当前的数据库分离一个使用ATTACH DATABASE附加的数据库

语法:

@H_404_38@sql-command::= DETACH [DATABASE] @H_404_38@database-name

sqlite内建函数

算术函数
abs(X) 返回给定数字表达式的绝对值。
max(X,Y[,...]) 返回表达式的最大值。
min(X,...]) 返回表达式的最小值。
random(*) 返回随机数。
round(X[,Y]) 返回数字表达式并四舍五入为指定的长度或精度。
字符处理函数
length(X) 返回给定字符串表达式的字符个数。
lower(X) 将大写字符数据转换为小写字符数据后返回字符表达式。
upper(X) 返回将小写字符数据转换为大写的字符表达式。
substr(X,Y,Z) 返回表达式的一部分。
randstr()
quote(A)
like(A,B) 确定给定的字符串是否与指定的模式匹配。
glob(A,B)
条件判断函数
coalesce(X,...])
ifnull(X,Y)
nullif(X,Y)
集合函数
avg(X) 返回组中值的平均值。
count(X) 返回组中项目的数量
max(X) 返回组中值的最大值。
min(X) 返回组中值的最小值。
sum(X) 返回表达式中所有值的和。
其他函数
typeof(X) 返回数据的类型。
last_insert_rowid() 返回最后插入的数据的ID。
sqlite_version(*) 返回sqlite的版本。
change_count() 返回受上一语句影响的行数。
last_statement_change_count()

猜你在找的Sqlite相关文章