结构定义 |
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 |
语法:
|
PRAGMA |
语法:
|
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@ |
|