SQLite内建语法表

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

sqlite内建语法表

结构定义
CREATE TABLE

创建新表。

语法:

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

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

语法:

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

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

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

语法:

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

例子:
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_28@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_28@::= CREATE @H_502_28@[UNIQUE@H_502_28@] INDEX@H_502_28@index-name@H_502_28@
ON @H_502_28@
[database-name@H_502_28@.@H_502_28@@H_502_28@] table-name@H_502_28@(@H_502_28@ @H_502_28@column-name@H_502_28@[,@H_502_28@@H_502_28@column-name@H_502_28@]*@H_502_28@)
@H_502_28@@H_502_28@
[ ON CONFLICT @H_502_28@conflict-algorithm@H_502_28@]
column-name@H_502_28@::= name@H_502_28@ [ COLLATE@H_502_28@collation-name@H_502_28@][ ASC @H_502_28@|@H_502_28@ DESC@H_502_28@]

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

结构删除
DROP TABLE

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

语法:

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

删除一个视图。

语法:

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

例子:
DROP VIEW master_view;

DROP TRIGGER

删除一个触发器。

语法:

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

例子:
DROP TRIGGER @H_502_28@update_customer_address;

DROP INDEX

删除一个索引。

语法:

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

例子:
DROP INDEX idx_email;

数据操作
INSERT

将新行插入到表。

语法:

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

更新表中的现有数据。

语法:

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

从表中删除行。

语法:

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

从表中检索数据。

语法:

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

类似INSERT

语法:

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

标记一个事务的起始点。

语法:

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

标记一个事务的终止。

语法:

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

标志一个事务的结束。

语法:

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

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

语法:

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

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

语法:

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

语法:

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

语法:

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

语法:

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

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

语法:

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

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

语法:

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

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数据类型表

Example Typenames From The
CREATE TABLE Statement
or CAST Expression
Resulting Affinity Rule Used To Determine Affinity
INT
INTEGER
TINYINT
SMALLINT
MEDIUMINT
BIGINT
UNSIGNED BIG INT
INT2
INT8
INTEGER 1
CHARACTER(20)
VARCHAR(255)
VARYING CHARACTER(255)
NCHAR(55)
NATIVE CHARACTER(70)
NVARCHAR(100)
TEXT
CLOB
TEXT 2
BLOB
no datatype specified
NONE 3
REAL
DOUBLE
DOUBLE PRECISION
FLOAT
REAL 4
NUMERIC
DECIMAL(10,5)
BOOLEAN
DATE
DATETIME
NUMERIC 5
原文链接:https://www.f2er.com/sqlite/202268.html

猜你在找的Sqlite相关文章