SQLite内建语法表 [转]

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

转自:http://www.sqlite.com.cn/POParticle/6/11.Html

sqlite内建语法表

结构定义
CREATE TABLE

创建新表。

语法:

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

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

语法:

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

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

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

语法:

sql-statement@H_502_31@::= CREATE @H_502_31@[TEMP @H_502_31@|@H_502_31@ TEMPORARY@H_502_31@] TRIGGER @H_502_31@trigger-name@H_502_31@ @H_502_31@[ BEFORE @H_502_31@|@H_502_31@ AFTER @H_502_31@]
@H_502_31@
database-event@H_502_31@ ON @H_502_31@[@H_502_31@database-name@H_502_31@ .@H_502_31@@H_502_31@] @H_502_31@table-name@H_502_31@
@H_502_31@
trigger-action@H_502_31@@H_502_31@
sql-statement@H_502_31@::= CREATE @H_502_31@[TEMP @H_502_31@|@H_502_31@ TEMPORARY@H_502_31@] TRIGGER @H_502_31@trigger-name@H_502_31@ INSTEAD OF
@H_502_31@
database-event@H_502_31@ ON @H_502_31@[@H_502_31@database-name@H_502_31@ .@H_502_31@@H_502_31@] @H_502_31@view-name@H_502_31@
@H_502_31@
trigger-action@H_502_31@@H_502_31@
database-event@H_502_31@::= DELETE @H_502_31@|@H_502_31@
INSERT @H_502_31@
|@H_502_31@
UPDATE @H_502_31@
|@H_502_31@
UPDATE OF @H_502_31@
column-list@H_502_31@@H_502_31@
trigger-action@H_502_31@::= @H_502_31@[ FOR EACH ROW @H_502_31@|@H_502_31@ FOR EACH STATEMENT @H_502_31@] @H_502_31@[ WHEN @H_502_31@expression@H_502_31@ @H_502_31@]
BEGIN
@H_502_31@
trigger-step@H_502_31@ ; @H_502_31@[ @H_502_31@trigger-step@H_502_31@ ; @H_502_31@]@H_502_31@*@H_502_31@
END@H_502_31@
trigger-step@H_502_31@::= @H_502_31@update-statement@H_502_31@ @H_502_31@|@H_502_31@ @H_502_31@insert-statement@H_502_31@ @H_502_31@|@H_502_31@
@H_502_31@
delete-statement@H_502_31@ @H_502_31@|@H_502_31@ @H_502_31@select-statement@H_502_31@

例子:
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字段为新的值。
比如执行如下一条语句:
@H_502_31@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

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

语法:

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

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

结构删除
DROP TABLE

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

语法:

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

删除一个视图。

语法:

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

例子:
DROP VIEW master_view;

DROP TRIGGER

删除一个触发器。

语法:

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

例子:
DROP TRIGGER @H_502_31@update_customer_address;

DROP INDEX

删除一个索引。

语法:

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

例子:
DROP INDEX idx_email;

数据操作
INSERT

将新行插入到表。

语法:

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

更新表中的现有数据。

语法:

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

从表中删除行。

语法:

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

从表中检索数据。

语法:

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

类似INSERT

语法:

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

标记一个事务的起始点。

语法:

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

标记一个事务的终止。

语法:

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

标志一个事务的结束。

语法:

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

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

语法:

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

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

语法:

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

语法:

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

语法:

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

语法:

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

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

语法:

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

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

语法:

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

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相关文章