SQLite语法备忘录

来源:互联网 发布:游戏编程之从零开始 编辑:程序博客网 时间:2024/04/29 17:45

SQLite内建语法表

结构定义CREATE TABLE

创建新表。

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

CREATE VIEW

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

语法:

sql-command ::=CREATE [TEMP| TEMPORARY] VIEW[database-name.]view-name ASselect-statement
例子:
CREATE VIEW master_view AS
    SELECT * FROM sqlite_masterWHERE type='view';
说明:
创建一个名为master_view的视图,其中包括sqlite_master这个表中的所有视图表。CREATE TRIGGER

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

语法:

sql-statement ::=CREATE [TEMP| TEMPORARY] TRIGGERtrigger-name [ BEFORE | AFTER]
database-event ON[database-name.] table-name
trigger-actionsql-statement ::=CREATE [TEMP| TEMPORARY] TRIGGERtrigger-name INSTEAD OF
database-event ON[database-name.] view-name
trigger-actiondatabase-event ::=DELETE |
INSERT
|
UPDATE
|
UPDATE OF
column-listtrigger-action ::=[ FOR EACH ROW | FOR EACH STATEMENT] [ WHEN expression ]
BEGIN
    
trigger-step ;[ trigger-step ;]*
END
trigger-step ::=update-statement | insert-statement|
delete-statement| 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

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

语法:

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

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

结构删除DROP TABLE

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

语法:

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

删除一个视图。

语法:

sql-command ::=DROP VIEW view-name

例子:
DROP VIEW master_view;

DROP TRIGGER

删除一个触发器。

语法:

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

例子:
DROP TRIGGER update_customer_address;

DROP INDEX

删除一个索引。

语法:

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

例子:
DROP INDEX idx_email;

数据操作INSERT

将新行插入到表。

语法:

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

更新表中的现有数据。

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

DELETE

从表中删除行。

语法:

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

从表中检索数据。

语法:

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

类似INSERT

语法:

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

标记一个事务的起始点。

语法:
sql-statement ::=BEGIN [TRANSACTION[name]]

END TRANSACTION

标记一个事务的终止。

语法:

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

标志一个事务的结束。

语法:

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

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

语法:

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

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

语法:

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

语法:

sql-statement ::=EXPLAIN sql-statementPRAGMA

语法:

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

语法:

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

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

语法:

sql-statement ::=ATTACH [DATABASE]database-filename ASdatabase-nameDETTACH DATABASE

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

语法:

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

SQLite内建函数表

算术函数abs(X)返回给定数字表达式的绝对值。max(X,Y[,...])返回表达式的最大值。min(X,Y[,...])返回表达式的最小值。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,Y[,...]) 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() 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 冰箱肉腐烂很臭怎么办 指环扣松了怎么办视频 奇迹mu端游杀人了怎么办 奇迹最强者号找不着了怎么办 v领地退不了押金怎么办 全民奇迹sf钻石变负数怎么办 电脑上的新建没有了怎么办 火车上行李箱砸人怎么办 违建拆除后怎么办房产证 外地车遇到限号怎么办 双号限行 违了怎么办 下高速当地限行怎么办 下高速发现限号怎么办 下高速正好限号怎么办 限号不让下高速怎么办 我的歌没有编曲怎么办 奇迹暖暖以前的账号怎么办 孕妇误吃桃胶了怎么办? 孕4个月吃了桃胶怎么办 刚怀孕吃了桃胶怎么办 额头被打了个包怎么办 裤子被84掉颜色怎么办 高中生晚上偷家里电脑上网怎么办 住高层睡不好觉怎么办 水瓶座如果恨我们了该怎么办 不锈钢保温瓶不保温了怎么办 壁纸颜色选深了怎么办 客厅壁纸太暗了怎么办 别人说你衣服丑怎么办 高楼热水器风大熄火怎么办 1楼独立下水2楼怎么办 宜家家具不会装怎么办 服务行业遇到低素质客户怎么办 服务类没有进项票怎么办 教师对学生缺乏耐心怎么办 买了竹料烂尾楼怎么办 刚毕业想换工作怎么办 客厅灯变不了光怎么办 塑料镀铝浸底漆咬底怎么办 标志408钥匙掉了怎么办 房本测绘页丢了怎么办