【转载】SQLite基本语法手册(一)

长平狐 发布于 2013/06/17 12:54
阅读 741
收藏 1

     SQLite是一个软件库,用于实现自包含、非服务式、零配置、事务化的SQL数据库引擎。SQLite是一个嵌入式SQL数据库引擎,与其它大多数SQL数据库不同的是,SQLite没有独立的服务进程。SQLite直接读写原始的磁盘文件,一个拥有多个表、索引、触发器和视图的完整SQL数据库就包含在一个独立的磁盘文件中。    

      一.结构定义

     1.CREATE TABLE:创建新表。

语法:
sql
-command ::= CREATE [TEMP | TEMPORARY] TABLE table-
name (
    
column-def [, column-def]*

    
[, constraint]*

sql
-command ::= CREATE [TEMP | TEMPORARY] TABLE [database-name.] table-name AS select- statement 
column-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
- name 
constraint ::= PRIMARY KEY ( column-list ) [ conflict-clause ] |

UNIQUE ( column-list ) [ conflict-clause ] |
CHECK ( expr ) [ conflict-clause ]  
conflict
-clause ::= ON CONFLICT conflict-
algorithm 

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

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

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

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

语法:
sql
- statement :: =   CREATE   [ TEMP | TEMPORARY ]   TRIGGER   trigger - name  [  BEFORE | AFTER  ]
database - event  ON   [ database-name . ]   table - name
trigger - action 
sql
- statement :: =   CREATE   [ TEMP | TEMPORARY ]   TRIGGER   trigger - name INSTEAD  OF
database - event  ON   [ database-name . ]   view - name
trigger - action 
database - event :: =   DELETE   |  
INSERT   |  
UPDATE   |  
UPDATE   OF   column - list 
trigger - action :: =   [  FOR EACH ROW | FOR EACH STATEMENT  ]   [  WHEN exssion  ]  
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 ' ;

     4.CREATE INDEX:为给定表或视图创建索引。

语法:
sql
- statement :: =   CREATE   [ UNIQUE ]   INDEX   index - name 
ON   [ database-name . ]   table - name (  column - name  [ , column-name ] *  )
[  ON CONFLICT conflict-algorithm  ]  
column - name :: =  name  [  COLLATE collation-name ]   [  ASC | DESC  ]  


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

     二.结构删除

     1.DROP TABLE:删除表定义及该表的所有索引。

语法:
sql
- command :: =   DROP   TABLE   [ database-name. ]   table - name 

例子:
DROP   TABLE  customers;

     2.DROP VIEW:删除一个视图。

语法:
sql
- command :: =   DROP   VIEW   view - name 
例子:
DROP   VIEW  master_view;

     3.DROP TRIGGER:删除一个触发器。

语法:
sql
- statement :: =   DROP   TRIGGER   [ database-name . ]   trigger - name 
例子:
DROP   TRIGGER  update_customer_address;

     4.DROP INDEX:删除一个索引

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

例子:
DROP   INDEX  idx_email;

 


原文链接:http://www.cnblogs.com/peida/archive/2008/08/29/1279508.html
加载中
返回顶部
顶部