SQLite内建语法表

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

sqlite内建语法表

@H_404_7@结构定义
CREATE TABLE

创建新表。

@H_404_7@语法:

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

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

@H_404_7@语法:

sql-command::= @H_404_7@CREATE [@H_404_7@TEMP|@H_404_7@ TEMPORARY]@H_404_7@ VIEW[database-name@H_404_7@.]@H_404_7@view-name@H_404_7@ ASselect-statement

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

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

@H_404_7@语法:

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

@H_404_7@例子:
CREATE TRIGGER update_customer_address UPDATE OF address ON customers
BEGIN
UPDATE orders SET address = new.address WHERE customer_name = old.name;
END;
@H_404_7@说明:
创建了一个名为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_7@语法:

sql-statement::= @H_404_7@CREATE [@H_404_7@UNIQUE]@H_404_7@ INDEXindex-name@H_404_7@
ON
[database-name@H_404_7@.]@H_404_7@ table-name@H_404_7@( column-name@H_404_7@[@H_404_7@,column-name]*@H_404_7@)
[@H_404_7@ ON CONFLICT conflict-algorithm@H_404_7@]
column-name::= name@H_404_7@ [@H_404_7@ COLLATEcollation-name]@H_404_7@[@H_404_7@ ASC |@H_404_7@ DESC]

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

@H_404_7@结构删除
DROP TABLE

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

@H_404_7@语法:

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

删除一个视图。

@H_404_7@语法:

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

@H_404_7@例子:
DROP VIEW master_view;

DROP TRIGGER

删除一个触发器。

@H_404_7@语法:

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

@H_404_7@例子:
DROP TRIGGER update_customer_address;

DROP INDEX

删除一个索引。

@H_404_7@语法:

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

@H_404_7@例子:
DROP INDEX idx_email;

@H_404_7@数据操作
INSERT

将新行插入到表。

@H_404_7@语法:

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

更新表中的现有数据。

@H_404_7@语法:

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

从表中删除行。

@H_404_7@语法:

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

从表中检索数据。

@H_404_7@语法:

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

类似INSERT

@H_404_7@语法:

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

标记一个事务的起始点。

@H_404_7@语法:

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

标记一个事务的终止。

@H_404_7@语法:

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

标志一个事务的结束。

@H_404_7@语法:

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

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

@H_404_7@语法:

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

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

@H_404_7@语法:

sql-statement::= @H_404_7@COPY [@H_404_7@ ORconflict-algorithm@H_404_7@]@H_404_7@ [database-name@H_404_7@.]@H_404_7@ table-name@H_404_7@ FROMfilename@H_404_7@
[@H_404_7@ USING DELIMITERS delim@H_404_7@]
@H_404_7@例子:
COPYcustomers FROM customers.csv;
EXPLAIN

@H_404_7@语法:

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

@H_404_7@语法:

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

@H_404_7@语法:

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

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

@H_404_7@语法:

sql-statement::= @H_404_7@ATTACH [@H_404_7@DATABASE]@H_404_7@database-filename@H_404_7@ ASdatabase-name
DETTACH DATABASE

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

@H_404_7@语法:

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

sqlite内建函数

@H_404_7@算术函数
abs(X) 返回给定数字表达式的绝对值。
max(X,Y[,...]) 返回表达式的最大值。
min(X,...]) 返回表达式的最小值。
random(*) 返回随机数。
round(X[,Y]) 返回数字表达式并四舍五入为指定的长度或精度。
@H_404_7@字符处理函数
length(X) 返回给定字符串表达式的字符个数。
lower(X) 将大写字符数据转换为小写字符数据后返回字符表达式。
upper(X) 返回将小写字符数据转换为大写的字符表达式。
substr(X,Y,Z) 返回表达式的一部分。
randstr()
quote(A)
like(A,B) 确定给定的字符串是否与指定的模式匹配。
glob(A,B)
@H_404_7@条件判断函数
coalesce(X,...])
ifnull(X,Y)
nullif(X,Y)
@H_404_7@集合函数
avg(X) 返回组中值的平均值。
count(X) 返回组中项目的数量
max(X) 返回组中值的最大值。
min(X) 返回组中值的最小值。
sum(X) 返回表达式中所有值的和。
@H_404_7@其他函数
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

猜你在找的Sqlite相关文章