设为首页 收藏本站
查看: 976|回复: 0

[经验分享] SQLite语法2

[复制链接]

尚未签到

发表于 2016-11-29 07:49:25 | 显示全部楼层 |阅读模式
  SQLite内建语法表
结构定义
CREATE TABLE  创建新表。
  语法:

sql-command::=CREATE[TEMP|TEMPORARY]TABLEtable-name(
column-def[,column-def]*
[,constraint]*
)
sql-command::=CREATE[TEMP|TEMPORARY]TABLE[database-name.]table-nameASselect-statement
column-def::=name[type][[CONSTRAINTname]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-name
constraint::=PRIMARY KEY(column-list)[conflict-clause]|
UNIQUE(
column-list)[conflict-clause]|
CHECK(
expr)[conflict-clause]
conflict-clause::=ON CONFLICTconflict-algorithm
CREATE VIEW  创建一个视图(虚拟表),该表以另一种方式表示一个或多个表中的数据。
  语法:

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

例子:
CREATE VIEWmaster_viewAS
SELECT*FROMsqlite_masterWHEREtype='view';
说明:
创建一个名为master_view的视图,其中包括sqlite_master这个表中的所有视图表。
CREATE TRIGGER  创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。
  语法:

sql-statement::=CREATE[TEMP|TEMPORARY]TRIGGERtrigger-name[BEFORE|AFTER]
database-eventON[database-name.]table-name
trigger-action
sql-statement::=CREATE[TEMP|TEMPORARY]TRIGGERtrigger-nameINSTEADOF
database-eventON[database-name.]view-name
trigger-action
database-event::=DELETE|
INSERT
|
UPDATE
|
UPDATE OF
column-list
trigger-action::=[FOR EACH ROW|FOR EACH STATEMENT][WHENexpression]
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 CONFLICTconflict-algorithm]
column-name::=name[COLLATEcollation-name][ASC|DESC]
  例子:
CREATE INDEXidx_emailONcustomers (email);
说明:
为customers表中的email创建一个名为idx_email的字段。
结构删除
DROP TABLE  删除表定义及该表的所有索引。
  语法:

sql-command::=DROP TABLE[database-name.]table-name
例子:
DROP TABLE customers;
DROP VIEW  删除一个视图。
  语法:

sql-command::=DROP VIEWview-name
  例子:
DROP VIEW master_view;
DROP TRIGGER  删除一个触发器。
  语法:

sql-statement::=DROP TRIGGER[database-name.]trigger-name
  例子:
DROP TRIGGERupdate_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
[ORconflict-algorithm]INTO[database-name.]table-name[(column-list)]select-statement
UPDATE  更新表中的现有数据。
  语法:

sql-statement::=UPDATE[ORconflict-algorithm][database-name.]table-name
SET
assignment[,assignment]*
[WHEREexpr]
assignment::=column-name=expr
DELETE  从表中删除行。
  语法:

sql-statement::=DELETE FROM[database-name.]table-name[WHEREexpr]
SELECT  从表中检索数据。
  语法:

sql-statement::=SELECT[ALL|DISTINCT]result[FROMtable-list]
[WHEREexpr]
[GROUP BYexpr-list]
[HAVINGexpr]
[compound-opselect]*
[ORDER BYsort-expr-list]
[LIMITinteger[(OFFSET|,)integer]]
result::=result-column[,result-column]*
result-column::=*|table-name.*|expr[[AS]string]
table-list::=table[join-optablejoin-args]*
table::=table-name[ASalias]|
(
select)[ASalias]
join-op::=,|[NATURAL][LEFT|RIGHT|FULL][OUTER|INNER|CROSS]JOIN
join-args::=[ONexpr][USING(id-list)]
sort-expr-list::=expr[sort-order][,expr[sort-order]]*
sort-order::=[COLLATEcollation-name][ASC|DESC]
compound_op::=UNION|UNION ALL|INTERSECT|EXCEPT
REPLACE  类似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-nameFROMfilename
[USING DELIMITERSdelim]
例子:
COPYcustomersFROMcustomers.csv;
EXPLAIN  语法:

sql-statement::=EXPLAINsql-statement
PRAGMA  语法:

sql-statement::=PRAGMAname[=value]|
PRAGMA
function(arg)
VACUUM  语法:

sql-statement::=VACUUM[index-or-table-name]
ATTACH DATABASE  附加一个数据库到当前的数据库连接。
  语法:

sql-statement::=ATTACH[DATABASE]database-filenameASdatabase-name
DETTACH 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()

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-306861-1-1.html 上篇帖子: android SQLite查询 下篇帖子: hibernate使用sqlite
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表