/ Hex Artifact Content
Login
SQLite training in Houston TX on 2019-11-05 (details)
Part of the 2019 Tcl Conference

Artifact 604683def6e987db1703faf580d9b2150905fda1:


0000: 23 0a 23 20 52 75 6e 20 74 68 69 73 20 54 63 6c  #.# Run this Tcl
0010: 20 73 63 72 69 70 74 20 74 6f 20 67 65 6e 65 72   script to gener
0020: 61 74 65 20 74 68 65 20 73 71 6c 69 74 65 2e 68  ate the sqlite.h
0030: 74 6d 6c 20 66 69 6c 65 2e 0a 23 0a 73 65 74 20  tml file..#.set 
0040: 72 63 73 69 64 20 7b 24 49 64 3a 20 6c 61 6e 67  rcsid {$Id: lang
0050: 2e 74 63 6c 2c 76 20 31 2e 37 32 20 32 30 30 34  .tcl,v 1.72 2004
0060: 2f 30 39 2f 30 38 20 31 33 3a 30 36 3a 32 31 20  /09/08 13:06:21 
0070: 64 72 68 20 45 78 70 20 24 7d 0a 73 6f 75 72 63  drh Exp $}.sourc
0080: 65 20 63 6f 6d 6d 6f 6e 2e 74 63 6c 0a 68 65 61  e common.tcl.hea
0090: 64 65 72 20 7b 51 75 65 72 79 20 4c 61 6e 67 75  der {Query Langu
00a0: 61 67 65 20 55 6e 64 65 72 73 74 6f 6f 64 20 62  age Understood b
00b0: 79 20 53 51 4c 69 74 65 7d 0a 70 75 74 73 20 7b  y SQLite}.puts {
00c0: 0a 3c 68 32 3e 53 51 4c 20 41 73 20 55 6e 64 65  .<h2>SQL As Unde
00d0: 72 73 74 6f 6f 64 20 42 79 20 53 51 4c 69 74 65  rstood By SQLite
00e0: 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 53 51  </h2>..<p>The SQ
00f0: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 75 6e 64  Lite library und
0100: 65 72 73 74 61 6e 64 73 20 6d 6f 73 74 20 6f 66  erstands most of
0110: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51   the standard SQ
0120: 4c 0a 6c 61 6e 67 75 61 67 65 2e 20 20 42 75 74  L.language.  But
0130: 20 69 74 20 64 6f 65 73 20 3c 61 20 68 72 65 66   it does <a href
0140: 3d 22 6f 6d 69 74 74 65 64 2e 68 74 6d 6c 22 3e  ="omitted.html">
0150: 6f 6d 69 74 20 73 6f 6d 65 20 66 65 61 74 75 72  omit some featur
0160: 65 73 3c 2f 61 3e 0a 77 68 69 6c 65 20 61 74 20  es</a>.while at 
0170: 74 68 65 20 73 61 6d 65 20 74 69 6d 65 0a 61 64  the same time.ad
0180: 64 69 6e 67 20 61 20 66 65 77 20 66 65 61 74 75  ding a few featu
0190: 72 65 73 20 6f 66 20 69 74 73 20 6f 77 6e 2e 20  res of its own. 
01a0: 20 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 61   This document a
01b0: 74 74 65 6d 70 74 73 20 74 6f 0a 64 65 73 63 72  ttempts to.descr
01c0: 69 62 65 20 70 65 72 63 69 73 65 6c 79 20 77 68  ibe percisely wh
01d0: 61 74 20 70 61 72 74 73 20 6f 66 20 74 68 65 20  at parts of the 
01e0: 53 51 4c 20 6c 61 6e 67 75 61 67 65 20 53 51 4c  SQL language SQL
01f0: 69 74 65 20 64 6f 65 73 0a 61 6e 64 20 64 6f 65  ite does.and doe
0200: 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 2e 20 20  s not support.  
0210: 41 20 6c 69 73 74 20 6f 66 20 3c 61 20 68 72 65  A list of <a hre
0220: 66 3d 22 23 6b 65 79 77 6f 72 64 73 22 3e 6b 65  f="#keywords">ke
0230: 79 77 6f 72 64 73 3c 2f 61 3e 20 69 73 20 0a 67  ywords</a> is .g
0240: 69 76 65 6e 20 61 74 20 74 68 65 20 65 6e 64 2e  iven at the end.
0250: 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 61 6c 6c 20  </p>..<p>In all 
0260: 6f 66 20 74 68 65 20 73 79 6e 74 61 78 20 64 69  of the syntax di
0270: 61 67 72 61 6d 73 20 74 68 61 74 20 66 6f 6c 6c  agrams that foll
0280: 6f 77 2c 20 6c 69 74 65 72 61 6c 20 74 65 78 74  ow, literal text
0290: 20 69 73 20 73 68 6f 77 6e 20 69 6e 0a 62 6f 6c   is shown in.bol
02a0: 64 20 62 6c 75 65 2e 20 20 4e 6f 6e 2d 74 65 72  d blue.  Non-ter
02b0: 6d 69 6e 61 6c 20 73 79 6d 62 6f 6c 73 20 61 72  minal symbols ar
02c0: 65 20 73 68 6f 77 6e 20 69 6e 20 69 74 61 6c 69  e shown in itali
02d0: 63 20 72 65 64 2e 20 20 4f 70 65 72 61 74 6f 72  c red.  Operator
02e0: 73 0a 74 68 61 74 20 61 72 65 20 70 61 72 74 20  s.that are part 
02f0: 6f 66 20 74 68 65 20 73 79 6e 74 61 63 74 69 63  of the syntactic
0300: 20 6d 61 72 6b 75 70 20 69 74 73 65 6c 66 20 61   markup itself a
0310: 72 65 20 73 68 6f 77 6e 20 69 6e 20 62 6c 61 63  re shown in blac
0320: 6b 20 72 6f 6d 61 6e 2e 3c 2f 70 3e 0a 0a 3c 70  k roman.</p>..<p
0330: 3e 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 69  >This document i
0340: 73 20 6a 75 73 74 20 61 6e 20 6f 76 65 72 76 69  s just an overvi
0350: 65 77 20 6f 66 20 74 68 65 20 53 51 4c 20 73 79  ew of the SQL sy
0360: 6e 74 61 78 20 69 6d 70 6c 65 6d 65 6e 74 65 64  ntax implemented
0370: 0a 62 79 20 53 51 4c 69 74 65 2e 20 20 4d 61 6e  .by SQLite.  Man
0380: 79 20 6c 6f 77 2d 6c 65 76 65 6c 20 70 72 6f 64  y low-level prod
0390: 75 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d 69 74  uctions are omit
03a0: 74 65 64 2e 20 20 46 6f 72 20 64 65 74 61 69 6c  ted.  For detail
03b0: 65 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 6f  ed information.o
03c0: 6e 20 74 68 65 20 6c 61 6e 67 75 61 67 65 20 74  n the language t
03d0: 68 61 74 20 53 51 4c 69 74 65 20 75 6e 64 65 72  hat SQLite under
03e0: 73 74 61 6e 64 73 2c 20 72 65 66 65 72 20 74 6f  stands, refer to
03f0: 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65   the source code
0400: 20 61 6e 64 0a 74 68 65 20 67 72 61 6d 6d 61 72   and.the grammar
0410: 20 66 69 6c 65 20 22 70 61 72 73 65 2e 79 22 2e   file "parse.y".
0420: 3c 2f 70 3e 0a 0a 0a 3c 70 3e 53 51 4c 69 74 65  </p>...<p>SQLite
0430: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20   implements the 
0440: 66 6f 6c 6c 6f 77 20 73 79 6e 74 61 78 3a 3c 2f  follow syntax:</
0450: 70 3e 0a 3c 70 3e 3c 75 6c 3e 0a 7d 0a 0a 66 6f  p>.<p><ul>.}..fo
0460: 72 65 61 63 68 20 7b 73 65 63 74 69 6f 6e 7d 20  reach {section} 
0470: 5b 6c 73 6f 72 74 20 2d 69 6e 64 65 78 20 30 20  [lsort -index 0 
0480: 2d 64 69 63 74 69 6f 6e 61 72 79 20 7b 0a 20 20  -dictionary {.  
0490: 7b 7b 43 52 45 41 54 45 20 54 41 42 4c 45 7d 20  {{CREATE TABLE} 
04a0: 63 72 65 61 74 65 74 61 62 6c 65 7d 0a 20 20 7b  createtable}.  {
04b0: 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20 63  {CREATE INDEX} c
04c0: 72 65 61 74 65 69 6e 64 65 78 7d 0a 20 20 7b 56  reateindex}.  {V
04d0: 41 43 55 55 4d 20 76 61 63 75 75 6d 7d 0a 20 20  ACUUM vacuum}.  
04e0: 7b 7b 44 52 4f 50 20 54 41 42 4c 45 7d 20 64 72  {{DROP TABLE} dr
04f0: 6f 70 74 61 62 6c 65 7d 0a 20 20 7b 7b 44 52 4f  optable}.  {{DRO
0500: 50 20 49 4e 44 45 58 7d 20 64 72 6f 70 69 6e 64  P INDEX} dropind
0510: 65 78 7d 0a 20 20 7b 49 4e 53 45 52 54 20 69 6e  ex}.  {INSERT in
0520: 73 65 72 74 7d 0a 20 20 7b 52 45 50 4c 41 43 45  sert}.  {REPLACE
0530: 20 72 65 70 6c 61 63 65 7d 0a 20 20 7b 44 45 4c   replace}.  {DEL
0540: 45 54 45 20 64 65 6c 65 74 65 7d 0a 20 20 7b 55  ETE delete}.  {U
0550: 50 44 41 54 45 20 75 70 64 61 74 65 7d 0a 20 20  PDATE update}.  
0560: 7b 53 45 4c 45 43 54 20 73 65 6c 65 63 74 7d 0a  {SELECT select}.
0570: 20 20 7b 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65    {comment comme
0580: 6e 74 7d 0a 20 20 7b 43 4f 50 59 20 63 6f 70 79  nt}.  {COPY copy
0590: 7d 0a 20 20 7b 45 58 50 4c 41 49 4e 20 65 78 70  }.  {EXPLAIN exp
05a0: 6c 61 69 6e 7d 0a 20 20 7b 65 78 70 72 65 73 73  lain}.  {express
05b0: 69 6f 6e 20 65 78 70 72 7d 0a 20 20 7b 7b 42 45  ion expr}.  {{BE
05c0: 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d  GIN TRANSACTION}
05d0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20   transaction}.  
05e0: 7b 7b 43 4f 4d 4d 49 54 20 54 52 41 4e 53 41 43  {{COMMIT TRANSAC
05f0: 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f  TION} transactio
0600: 6e 7d 0a 20 20 7b 7b 45 4e 44 20 54 52 41 4e 53  n}.  {{END TRANS
0610: 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74  ACTION} transact
0620: 69 6f 6e 7d 0a 20 20 7b 7b 52 4f 4c 4c 42 41 43  ion}.  {{ROLLBAC
0630: 4b 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74  K TRANSACTION} t
0640: 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 50  ransaction}.  {P
0650: 52 41 47 4d 41 20 70 72 61 67 6d 61 7d 0a 20 20  RAGMA pragma}.  
0660: 7b 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c  {{ON CONFLICT cl
0670: 61 75 73 65 7d 20 63 6f 6e 66 6c 69 63 74 7d 0a  ause} conflict}.
0680: 20 20 7b 7b 43 52 45 41 54 45 20 56 49 45 57 7d    {{CREATE VIEW}
0690: 20 63 72 65 61 74 65 76 69 65 77 7d 0a 20 20 7b   createview}.  {
06a0: 7b 44 52 4f 50 20 56 49 45 57 7d 20 64 72 6f 70  {DROP VIEW} drop
06b0: 76 69 65 77 7d 0a 20 20 7b 7b 43 52 45 41 54 45  view}.  {{CREATE
06c0: 20 54 52 49 47 47 45 52 7d 20 63 72 65 61 74 65   TRIGGER} create
06d0: 74 72 69 67 67 65 72 7d 0a 20 20 7b 7b 44 52 4f  trigger}.  {{DRO
06e0: 50 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70 74  P TRIGGER} dropt
06f0: 72 69 67 67 65 72 7d 0a 20 20 7b 7b 41 54 54 41  rigger}.  {{ATTA
0700: 43 48 20 44 41 54 41 42 41 53 45 7d 20 61 74 74  CH DATABASE} att
0710: 61 63 68 7d 0a 20 20 7b 7b 44 45 54 41 43 48 20  ach}.  {{DETACH 
0720: 44 41 54 41 42 41 53 45 7d 20 64 65 74 61 63 68  DATABASE} detach
0730: 7d 0a 7d 5d 20 7b 0a 20 20 70 75 74 73 20 22 3c  }.}] {.  puts "<
0740: 6c 69 3e 3c 61 20 68 72 65 66 3d 5c 22 23 5b 6c  li><a href=\"#[l
0750: 69 6e 64 65 78 20 24 73 65 63 74 69 6f 6e 20 31  index $section 1
0760: 5d 5c 22 3e 5b 6c 69 6e 64 65 78 20 24 73 65 63  ]\">[lindex $sec
0770: 74 69 6f 6e 20 30 5d 3c 2f 61 3e 3c 2f 6c 69 3e  tion 0]</a></li>
0780: 22 0a 7d 0a 70 75 74 73 20 7b 3c 2f 75 6c 3e 3c  ".}.puts {</ul><
0790: 2f 70 3e 0a 0a 3c 70 3e 44 65 74 61 69 6c 73 20  /p>..<p>Details 
07a0: 6f 6e 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74  on the implement
07b0: 61 74 69 6f 6e 20 6f 66 20 65 61 63 68 20 63 6f  ation of each co
07c0: 6d 6d 61 6e 64 20 61 72 65 20 70 72 6f 76 69 64  mmand are provid
07d0: 65 64 20 69 6e 0a 74 68 65 20 73 65 71 75 65 6c  ed in.the sequel
07e0: 2e 3c 2f 70 3e 0a 7d 0a 0a 70 72 6f 63 20 53 79  .</p>.}..proc Sy
07f0: 6e 74 61 78 20 7b 61 72 67 73 7d 20 7b 0a 20 20  ntax {args} {.  
0800: 70 75 74 73 20 7b 3c 74 61 62 6c 65 20 63 65 6c  puts {<table cel
0810: 6c 70 61 64 64 69 6e 67 3d 22 31 30 22 3e 7d 0a  lpadding="10">}.
0820: 20 20 66 6f 72 65 61 63 68 20 7b 72 75 6c 65 20    foreach {rule 
0830: 62 6f 64 79 7d 20 24 61 72 67 73 20 7b 0a 20 20  body} $args {.  
0840: 20 20 70 75 74 73 20 22 3c 74 72 3e 3c 74 64 20    puts "<tr><td 
0850: 61 6c 69 67 6e 3d 5c 22 72 69 67 68 74 5c 22 20  align=\"right\" 
0860: 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 3e 22  valign=\"top\">"
0870: 0a 20 20 20 20 70 75 74 73 20 22 3c 69 3e 3c 66  .    puts "<i><f
0880: 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 66 66 33  ont color=\"#ff3
0890: 34 33 34 5c 22 3e 24 72 75 6c 65 3c 2f 66 6f 6e  434\">$rule</fon
08a0: 74 3e 3c 2f 69 3e 26 6e 62 73 70 3b 3a 3a 3d 3c  t></i>&nbsp;::=<
08b0: 2f 74 64 3e 22 0a 20 20 20 20 72 65 67 73 75 62  /td>".    regsub
08c0: 20 2d 61 6c 6c 20 3c 20 24 62 6f 64 79 20 7b 25   -all < $body {%
08d0: 4c 54 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67  LT} body.    reg
08e0: 73 75 62 20 2d 61 6c 6c 20 3e 20 24 62 6f 64 79  sub -all > $body
08f0: 20 7b 25 47 54 7d 20 62 6f 64 79 0a 20 20 20 20   {%GT} body.    
0900: 72 65 67 73 75 62 20 2d 61 6c 6c 20 25 4c 54 20  regsub -all %LT 
0910: 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f  $body {</font></
0920: 62 3e 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72  b><i><font color
0930: 3d 22 23 66 66 33 34 33 34 22 3e 7d 20 62 6f 64  ="#ff3434">} bod
0940: 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c  y.    regsub -al
0950: 6c 20 25 47 54 20 24 62 6f 64 79 20 7b 3c 2f 66  l %GT $body {</f
0960: 6f 6e 74 3e 3c 2f 69 3e 3c 62 3e 3c 66 6f 6e 74  ont></i><b><font
0970: 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22   color="#2c2cf0"
0980: 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73  >} body.    regs
0990: 75 62 20 2d 61 6c 6c 20 7b 5b 5d 7c 5b 2a 3f 5d  ub -all {[]|[*?]
09a0: 7d 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e  } $body {</font>
09b0: 3c 2f 62 3e 26 3c 62 3e 3c 66 6f 6e 74 20 63 6f  </b>&<b><font co
09c0: 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 7d 20  lor="#2c2cf0">} 
09d0: 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62 20  body.    regsub 
09e0: 2d 61 6c 6c 20 22 5c 6e 22 20 5b 73 74 72 69 6e  -all "\n" [strin
09f0: 67 20 74 72 69 6d 20 24 62 6f 64 79 5d 20 22 3c  g trim $body] "<
0a00: 62 72 3e 5c 6e 22 20 62 6f 64 79 0a 20 20 20 20  br>\n" body.    
0a10: 72 65 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e 20  regsub -all "\n 
0a20: 20 2a 22 20 24 62 6f 64 79 20 22 5c 6e 5c 5c 26   *" $body "\n\\&
0a30: 6e 62 73 70 3b 5c 5c 26 6e 62 73 70 3b 5c 5c 26  nbsp;\\&nbsp;\\&
0a40: 6e 62 73 70 3b 5c 5c 26 6e 62 73 70 3b 22 20 62  nbsp;\\&nbsp;" b
0a50: 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d  ody.    regsub -
0a60: 61 6c 6c 20 7b 5b 7c 2c 2e 2a 28 29 5d 7d 20 24  all {[|,.*()]} $
0a70: 62 6f 64 79 20 7b 3c 62 69 67 3e 26 3c 2f 62 69  body {<big>&</bi
0a80: 67 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67  g>} body.    reg
0a90: 73 75 62 20 2d 61 6c 6c 20 7b 20 3d 20 7d 20 24  sub -all { = } $
0aa0: 62 6f 64 79 20 7b 20 3c 62 69 67 3e 3d 3c 2f 62  body { <big>=</b
0ab0: 69 67 3e 20 7d 20 62 6f 64 79 0a 20 20 20 20 72  ig> } body.    r
0ac0: 65 67 73 75 62 20 2d 61 6c 6c 20 7b 53 54 41 52  egsub -all {STAR
0ad0: 7d 20 24 62 6f 64 79 20 7b 3c 62 69 67 3e 2a 3c  } $body {<big>*<
0ae0: 2f 62 69 67 3e 7d 20 62 6f 64 79 0a 20 20 20 20  /big>} body.    
0af0: 23 23 20 54 68 65 73 65 20 6d 65 74 61 63 68 61  ## These metacha
0b00: 72 61 63 74 65 72 73 20 6d 75 73 74 20 62 65 20  racters must be 
0b10: 68 61 6e 64 6c 65 64 20 74 6f 20 75 6e 64 6f 20  handled to undo 
0b20: 62 65 69 6e 67 0a 20 20 20 20 23 23 20 74 72 65  being.    ## tre
0b30: 61 74 65 64 20 61 73 20 53 51 4c 20 70 75 6e 63  ated as SQL punc
0b40: 74 75 61 74 69 6f 6e 20 63 68 61 72 61 63 74 65  tuation characte
0b50: 72 73 20 61 62 6f 76 65 2e 0a 20 20 20 20 72 65  rs above..    re
0b60: 67 73 75 62 20 2d 61 6c 6c 20 7b 52 50 50 4c 55  gsub -all {RPPLU
0b70: 53 7d 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74  S} $body {</font
0b80: 3e 3c 2f 62 3e 29 2b 3c 62 3e 3c 66 6f 6e 74 20  ></b>)+<b><font 
0b90: 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e  color="#2c2cf0">
0ba0: 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75  } body.    regsu
0bb0: 62 20 2d 61 6c 6c 20 7b 4c 50 7d 20 24 62 6f 64  b -all {LP} $bod
0bc0: 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 28 3c  y {</font></b>(<
0bd0: 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23  b><font color="#
0be0: 32 63 32 63 66 30 22 3e 7d 20 62 6f 64 79 0a 20  2c2cf0">} body. 
0bf0: 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b     regsub -all {
0c00: 52 50 7d 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e  RP} $body {</fon
0c10: 74 3e 3c 2f 62 3e 29 3c 62 3e 3c 66 6f 6e 74 20  t></b>)<b><font 
0c20: 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e  color="#2c2cf0">
0c30: 7d 20 62 6f 64 79 0a 20 20 20 20 23 23 20 50 6c  } body.    ## Pl
0c40: 61 63 65 20 74 68 65 20 6c 65 66 74 2d 68 61 6e  ace the left-han
0c50: 64 20 73 69 64 65 20 6f 66 20 74 68 65 20 72 75  d side of the ru
0c60: 6c 65 20 69 6e 20 74 68 65 20 32 6e 64 20 74 61  le in the 2nd ta
0c70: 62 6c 65 20 63 6f 6c 75 6d 6e 2e 0a 20 20 20 20  ble column..    
0c80: 70 75 74 73 20 22 3c 74 64 3e 3c 62 3e 3c 66 6f  puts "<td><b><fo
0c90: 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32 63  nt color=\"#2c2c
0ca0: 66 30 5c 22 3e 24 62 6f 64 79 3c 2f 66 6f 6e 74  f0\">$body</font
0cb0: 3e 3c 2f 62 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 22  ></b></td></tr>"
0cc0: 0a 20 20 7d 0a 20 20 70 75 74 73 20 7b 3c 2f 74  .  }.  puts {</t
0cd0: 61 62 6c 65 3e 7d 0a 7d 0a 70 72 6f 63 20 4f 70  able>}.}.proc Op
0ce0: 65 72 61 74 6f 72 20 7b 6e 61 6d 65 7d 20 7b 0a  erator {name} {.
0cf0: 20 20 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20    return "<font 
0d00: 63 6f 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c  color=\"#2c2cf0\
0d10: 22 3e 3c 62 69 67 3e 24 6e 61 6d 65 3c 2f 62 69  "><big>$name</bi
0d20: 67 3e 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f  g></font>".}.pro
0d30: 63 20 4e 6f 6e 74 65 72 6d 69 6e 61 6c 20 7b 6e  c Nonterminal {n
0d40: 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20  ame} {.  return 
0d50: 22 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d  "<i><font color=
0d60: 5c 22 23 66 66 33 34 33 34 5c 22 3e 24 6e 61 6d  \"#ff3434\">$nam
0d70: 65 3c 2f 66 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d 0a  e</font></i>".}.
0d80: 70 72 6f 63 20 4b 65 79 77 6f 72 64 20 7b 6e 61  proc Keyword {na
0d90: 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22  me} {.  return "
0da0: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32  <font color=\"#2
0db0: 63 32 63 66 30 5c 22 3e 24 6e 61 6d 65 3c 2f 66  c2cf0\">$name</f
0dc0: 6f 6e 74 3e 22 0a 7d 0a 20 0a 0a 70 72 6f 63 20  ont>".}. ..proc 
0dd0: 53 65 63 74 69 6f 6e 20 7b 6e 61 6d 65 20 7b 6c  Section {name {l
0de0: 61 62 65 6c 20 7b 7d 7d 7d 20 7b 0a 20 20 70 75  abel {}}} {.  pu
0df0: 74 73 20 22 5c 6e 3c 68 72 20 2f 3e 22 0a 20 20  ts "\n<hr />".  
0e00: 69 66 20 7b 24 6c 61 62 65 6c 21 3d 22 22 7d 20  if {$label!=""} 
0e10: 7b 0a 20 20 20 20 70 75 74 73 20 22 3c 61 20 6e  {.    puts "<a n
0e20: 61 6d 65 3d 5c 22 24 6c 61 62 65 6c 5c 22 3e 3c  ame=\"$label\"><
0e30: 2f 61 3e 22 0a 20 20 7d 0a 20 20 70 75 74 73 20  /a>".  }.  puts 
0e40: 22 3c 68 31 3e 24 6e 61 6d 65 3c 2f 68 31 3e 5c  "<h1>$name</h1>\
0e50: 6e 22 0a 7d 0a 0a 70 72 6f 63 20 45 78 61 6d 70  n".}..proc Examp
0e60: 6c 65 20 7b 74 65 78 74 7d 20 7b 0a 20 20 70 75  le {text} {.  pu
0e70: 74 73 20 22 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  ts "<blockquote>
0e80: 3c 70 72 65 3e 24 74 65 78 74 3c 2f 70 72 65 3e  <pre>$text</pre>
0e90: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 22 0a 7d  </blockquote>".}
0ea0: 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 41 54 54 41  ...Section {ATTA
0eb0: 43 48 20 44 41 54 41 42 41 53 45 7d 20 61 74 74  CH DATABASE} att
0ec0: 61 63 68 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ach..Syntax {sql
0ed0: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 41 54  -statement} {.AT
0ee0: 54 41 43 48 20 5b 44 41 54 41 42 41 53 45 5d 20  TACH [DATABASE] 
0ef0: 3c 64 61 74 61 62 61 73 65 2d 66 69 6c 65 6e 61  <database-filena
0f00: 6d 65 3e 20 41 53 20 3c 64 61 74 61 62 61 73 65  me> AS <database
0f10: 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b  -name>.}..puts {
0f20: 0a 3c 70 3e 54 68 65 20 41 54 54 41 43 48 20 44  .<p>The ATTACH D
0f30: 41 54 41 42 41 53 45 20 73 74 61 74 65 6d 65 6e  ATABASE statemen
0f40: 74 20 61 64 64 73 20 61 20 70 72 65 65 78 69 73  t adds a preexis
0f50: 74 69 6e 67 20 64 61 74 61 62 61 73 65 20 0a 66  ting database .f
0f60: 69 6c 65 20 74 6f 20 74 68 65 20 63 75 72 72 65  ile to the curre
0f70: 6e 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  nt database conn
0f80: 65 63 74 69 6f 6e 2e 20 20 49 66 20 74 68 65 20  ection.  If the 
0f90: 66 69 6c 65 6e 61 6d 65 20 63 6f 6e 74 61 69 6e  filename contain
0fa0: 73 20 0a 70 75 6e 63 74 75 61 74 69 6f 6e 20 63  s .punctuation c
0fb0: 68 61 72 61 63 74 65 72 73 20 69 74 20 6d 75 73  haracters it mus
0fc0: 74 20 62 65 20 71 75 6f 74 65 64 2e 20 20 54 68  t be quoted.  Th
0fd0: 65 20 6e 61 6d 65 73 20 27 6d 61 69 6e 27 20 61  e names 'main' a
0fe0: 6e 64 20 0a 27 74 65 6d 70 27 20 72 65 66 65 72  nd .'temp' refer
0ff0: 20 74 6f 20 74 68 65 20 6d 61 69 6e 20 64 61 74   to the main dat
1000: 61 62 61 73 65 20 61 6e 64 20 74 68 65 20 64 61  abase and the da
1010: 74 61 62 61 73 65 20 75 73 65 64 20 66 6f 72 20  tabase used for 
1020: 0a 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65  .temporary table
1030: 73 2e 20 20 54 68 65 73 65 20 63 61 6e 6e 6f 74  s.  These cannot
1040: 20 62 65 20 64 65 74 61 63 68 65 64 2e 20 20 41   be detached.  A
1050: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
1060: 73 20 0a 61 72 65 20 72 65 6d 6f 76 65 64 20 75  s .are removed u
1070: 73 69 6e 67 20 74 68 65 20 3c 61 20 68 72 65 66  sing the <a href
1080: 3d 22 23 64 65 74 61 63 68 22 3e 44 45 54 41 43  ="#detach">DETAC
1090: 48 20 44 41 54 41 42 41 53 45 3c 2f 61 3e 20 0a  H DATABASE</a> .
10a0: 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a  statement.</p>..
10b0: 3c 70 3e 59 6f 75 20 63 61 6e 20 72 65 61 64 20  <p>You can read 
10c0: 66 72 6f 6d 20 61 6e 64 20 77 72 69 74 65 20 74  from and write t
10d0: 6f 20 61 6e 20 61 74 74 61 63 68 65 64 20 64 61  o an attached da
10e0: 74 61 62 61 73 65 20 61 6e 64 20 79 6f 75 0a 63  tabase and you.c
10f0: 61 6e 20 6d 6f 64 69 66 79 20 74 68 65 20 73 63  an modify the sc
1100: 68 65 6d 61 20 6f 66 20 74 68 65 20 61 74 74 61  hema of the atta
1110: 63 68 65 64 20 64 61 74 61 62 61 73 65 2e 20 20  ched database.  
1120: 54 68 69 73 20 69 73 20 61 20 6e 65 77 0a 66 65  This is a new.fe
1130: 61 74 75 72 65 20 6f 66 20 53 51 4c 69 74 65 20  ature of SQLite 
1140: 76 65 72 73 69 6f 6e 20 33 2e 30 2e 20 20 49 6e  version 3.0.  In
1150: 20 53 51 4c 69 74 65 20 32 2e 38 2c 20 73 63 68   SQLite 2.8, sch
1160: 65 6d 61 20 63 68 61 6e 67 65 73 0a 74 6f 20 61  ema changes.to a
1170: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
1180: 73 20 77 65 72 65 20 6e 6f 74 20 61 6c 6c 6f 77  s were not allow
1190: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20  ed.</p>..<p>You 
11a0: 63 61 6e 6e 6f 74 20 63 72 65 61 74 65 20 61 20  cannot create a 
11b0: 6e 65 77 20 74 61 62 6c 65 20 77 69 74 68 20 74  new table with t
11c0: 68 65 20 73 61 6d 65 20 6e 61 6d 65 20 61 73 20  he same name as 
11d0: 61 20 74 61 62 6c 65 20 69 6e 20 0a 61 6e 20 61  a table in .an a
11e0: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
11f0: 2c 20 62 75 74 20 79 6f 75 20 63 61 6e 20 61 74  , but you can at
1200: 74 61 63 68 20 61 20 64 61 74 61 62 61 73 65 20  tach a database 
1210: 77 68 69 63 68 20 63 6f 6e 74 61 69 6e 73 0a 74  which contains.t
1220: 61 62 6c 65 73 20 77 68 6f 73 65 20 6e 61 6d 65  ables whose name
1230: 73 20 61 72 65 20 64 75 70 6c 69 63 61 74 65 73  s are duplicates
1240: 20 6f 66 20 74 61 62 6c 65 73 20 69 6e 20 74 68   of tables in th
1250: 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2e  e main database.
1260: 20 20 49 74 20 69 73 20 0a 61 6c 73 6f 20 70 65    It is .also pe
1270: 72 6d 69 73 73 69 62 6c 65 20 74 6f 20 61 74 74  rmissible to att
1280: 61 63 68 20 74 68 65 20 73 61 6d 65 20 64 61 74  ach the same dat
1290: 61 62 61 73 65 20 66 69 6c 65 20 6d 75 6c 74 69  abase file multi
12a0: 70 6c 65 20 74 69 6d 65 73 2e 3c 2f 70 3e 0a 0a  ple times.</p>..
12b0: 3c 70 3e 54 61 62 6c 65 73 20 69 6e 20 61 6e 20  <p>Tables in an 
12c0: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
12d0: 65 20 63 61 6e 20 62 65 20 72 65 66 65 72 72 65  e can be referre
12e0: 64 20 74 6f 20 75 73 69 6e 67 20 74 68 65 20 73  d to using the s
12f0: 79 6e 74 61 78 20 0a 3c 69 3e 64 61 74 61 62 61  yntax .<i>databa
1300: 73 65 2d 6e 61 6d 65 2e 74 61 62 6c 65 2d 6e 61  se-name.table-na
1310: 6d 65 3c 2f 69 3e 2e 20 20 49 66 20 61 6e 20 61  me</i>.  If an a
1320: 74 74 61 63 68 65 64 20 74 61 62 6c 65 20 64 6f  ttached table do
1330: 65 73 6e 27 74 20 68 61 76 65 20 0a 61 20 64 75  esn't have .a du
1340: 70 6c 69 63 61 74 65 20 74 61 62 6c 65 20 6e 61  plicate table na
1350: 6d 65 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64  me in the main d
1360: 61 74 61 62 61 73 65 2c 20 69 74 20 64 6f 65 73  atabase, it does
1370: 6e 27 74 20 72 65 71 75 69 72 65 20 61 20 0a 64  n't require a .d
1380: 61 74 61 62 61 73 65 20 6e 61 6d 65 20 70 72 65  atabase name pre
1390: 66 69 78 2e 20 20 57 68 65 6e 20 61 20 64 61 74  fix.  When a dat
13a0: 61 62 61 73 65 20 69 73 20 61 74 74 61 63 68 65  abase is attache
13b0: 64 2c 20 61 6c 6c 20 6f 66 20 69 74 73 20 0a 74  d, all of its .t
13c0: 61 62 6c 65 73 20 77 68 69 63 68 20 64 6f 6e 27  ables which don'
13d0: 74 20 68 61 76 65 20 64 75 70 6c 69 63 61 74 65  t have duplicate
13e0: 20 6e 61 6d 65 73 20 62 65 63 6f 6d 65 20 74 68   names become th
13f0: 65 20 27 64 65 66 61 75 6c 74 27 20 74 61 62 6c  e 'default' tabl
1400: 65 0a 6f 66 20 74 68 61 74 20 6e 61 6d 65 2e 20  e.of that name. 
1410: 20 41 6e 79 20 74 61 62 6c 65 73 20 6f 66 20 74   Any tables of t
1420: 68 61 74 20 6e 61 6d 65 20 61 74 74 61 63 68 65  hat name attache
1430: 64 20 61 66 74 65 72 77 61 72 64 73 20 72 65 71  d afterwards req
1440: 75 69 72 65 20 74 68 65 20 74 61 62 6c 65 20 0a  uire the table .
1450: 70 72 65 66 69 78 2e 20 49 66 20 74 68 65 20 27  prefix. If the '
1460: 64 65 66 61 75 6c 74 27 20 74 61 62 6c 65 20 6f  default' table o
1470: 66 20 61 20 67 69 76 65 6e 20 6e 61 6d 65 20 69  f a given name i
1480: 73 20 64 65 74 61 63 68 65 64 2c 20 74 68 65 6e  s detached, then
1490: 20 0a 74 68 65 20 6c 61 73 74 20 74 61 62 6c 65   .the last table
14a0: 20 6f 66 20 74 68 61 74 20 6e 61 6d 65 20 61 74   of that name at
14b0: 74 61 63 68 65 64 20 62 65 63 6f 6d 65 73 20 74  tached becomes t
14c0: 68 65 20 6e 65 77 20 64 65 66 61 75 6c 74 2e 3c  he new default.<
14d0: 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73 61 63  /p>..<p>.Transac
14e0: 74 69 6f 6e 73 20 69 6e 76 6f 6c 76 69 6e 67 20  tions involving 
14f0: 6d 75 6c 74 69 70 6c 65 20 61 74 74 61 63 68 65  multiple attache
1500: 64 20 64 61 74 61 62 61 73 65 73 20 61 72 65 20  d databases are 
1510: 61 74 6f 6d 69 63 2c 0a 61 73 73 75 6d 69 6e 67  atomic,.assuming
1520: 20 74 68 61 74 20 74 68 65 20 6d 61 69 6e 20 64   that the main d
1530: 61 74 61 62 61 73 65 20 69 73 20 6e 6f 74 20 22  atabase is not "
1540: 3a 6d 65 6d 6f 72 79 3a 22 2e 20 20 49 66 20 74  :memory:".  If t
1550: 68 65 20 6d 61 69 6e 0a 64 61 74 61 62 61 73 65  he main.database
1560: 20 69 73 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 74   is ":memory:" t
1570: 68 65 6e 20 0a 74 72 61 6e 73 61 63 74 69 6f 6e  hen .transaction
1580: 73 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 62 65  s continue to be
1590: 20 61 74 6f 6d 69 63 20 77 69 74 68 69 6e 20 65   atomic within e
15a0: 61 63 68 20 69 6e 64 69 76 69 64 75 61 6c 0a 64  ach individual.d
15b0: 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20 42 75  atabase file. Bu
15c0: 74 20 69 66 20 74 68 65 20 68 6f 73 74 20 63 6f  t if the host co
15d0: 6d 70 75 74 65 72 20 63 72 61 73 68 65 73 20 69  mputer crashes i
15e0: 6e 20 74 68 65 20 6d 69 64 64 6c 65 0a 6f 66 20  n the middle.of 
15f0: 61 20 43 4f 4d 4d 49 54 20 77 68 65 72 65 20 74  a COMMIT where t
1600: 77 6f 20 6f 72 20 6d 6f 72 65 20 64 61 74 61 62  wo or more datab
1610: 61 73 65 20 66 69 6c 65 73 20 61 72 65 20 75 70  ase files are up
1620: 64 61 74 65 64 2c 0a 73 6f 6d 65 20 6f 66 20 74  dated,.some of t
1630: 68 6f 73 65 20 66 69 6c 65 73 20 6d 69 67 68 74  hose files might
1640: 20 67 65 74 20 74 68 65 20 63 68 61 6e 67 65 73   get the changes
1650: 20 77 68 65 72 65 20 6f 74 68 65 72 73 0a 6d 69   where others.mi
1660: 67 68 74 20 6e 6f 74 2e 0a 41 74 6f 6d 69 63 20  ght not..Atomic 
1670: 63 6f 6d 6d 69 74 20 6f 66 20 61 74 74 61 63 68  commit of attach
1680: 65 64 20 64 61 74 61 62 61 73 65 73 20 69 73 20  ed databases is 
1690: 61 20 6e 65 77 20 66 65 61 74 75 72 65 20 6f 66  a new feature of
16a0: 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20   SQLite version 
16b0: 33 2e 30 2e 0a 49 6e 20 53 51 4c 69 74 65 20 76  3.0..In SQLite v
16c0: 65 72 73 69 6f 6e 20 32 2e 38 2c 20 61 6c 6c 20  ersion 2.8, all 
16d0: 63 6f 6d 6d 69 74 73 20 74 6f 20 61 74 74 61 63  commits to attac
16e0: 68 65 64 20 64 61 74 61 62 61 73 65 73 20 62 65  hed databases be
16f0: 68 61 76 65 64 20 61 73 20 69 66 0a 74 68 65 20  haved as if.the 
1700: 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20 77 65  main database we
1710: 72 65 20 22 3a 6d 65 6d 6f 72 79 3a 22 2e 0a 3c  re ":memory:"..<
1720: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 69 73  /p>..<p>There is
1730: 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20   a compile-time 
1740: 6c 69 6d 69 74 20 6f 66 20 31 30 20 61 74 74 61  limit of 10 atta
1750: 63 68 65 64 20 64 61 74 61 62 61 73 65 20 66 69  ched database fi
1760: 6c 65 73 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63  les.</p>.}...Sec
1770: 74 69 6f 6e 20 7b 42 45 47 49 4e 20 54 52 41 4e  tion {BEGIN TRAN
1780: 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63  SACTION} transac
1790: 74 69 6f 6e 0a 0a 53 79 6e 74 61 78 20 7b 73 71  tion..Syntax {sq
17a0: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 42  l-statement} {.B
17b0: 45 47 49 4e 20 5b 54 52 41 4e 53 41 43 54 49 4f  EGIN [TRANSACTIO
17c0: 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53 79  N [<name>]].}.Sy
17d0: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
17e0: 65 6e 74 7d 20 7b 0a 45 4e 44 20 5b 54 52 41 4e  ent} {.END [TRAN
17f0: 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d  SACTION [<name>]
1800: 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ].}.Syntax {sql-
1810: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43 4f 4d  statement} {.COM
1820: 4d 49 54 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e  MIT [TRANSACTION
1830: 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53 79 6e   [<name>]].}.Syn
1840: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
1850: 6e 74 7d 20 7b 0a 52 4f 4c 4c 42 41 43 4b 20 5b  nt} {.ROLLBACK [
1860: 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61  TRANSACTION [<na
1870: 6d 65 3e 5d 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a  me>]].}..puts {.
1880: 3c 70 3e 42 65 67 69 6e 6e 69 6e 67 20 69 6e 20  <p>Beginning in 
1890: 76 65 72 73 69 6f 6e 20 32 2e 30 2c 20 53 51 4c  version 2.0, SQL
18a0: 69 74 65 20 73 75 70 70 6f 72 74 73 20 74 72 61  ite supports tra
18b0: 6e 73 61 63 74 69 6f 6e 73 20 77 69 74 68 0a 72  nsactions with.r
18c0: 6f 6c 6c 62 61 63 6b 20 61 6e 64 20 61 74 6f 6d  ollback and atom
18d0: 69 63 20 63 6f 6d 6d 69 74 2e 3c 2f 70 3e 0a 0a  ic commit.</p>..
18e0: 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  <p>The optional 
18f0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 6e 61 6d 65  transaction name
1900: 20 69 73 20 69 67 6e 6f 72 65 64 2e 20 53 51 4c   is ignored. SQL
1910: 69 74 65 20 63 75 72 72 65 6e 74 6c 79 20 0a 64  ite currently .d
1920: 6f 65 73 20 6e 6f 74 20 61 6c 6c 6f 77 20 6e 65  oes not allow ne
1930: 73 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  sted transaction
1940: 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 4e 6f 20 63  s.</p>..<p>.No c
1950: 68 61 6e 67 65 73 20 63 61 6e 20 62 65 20 6d 61  hanges can be ma
1960: 64 65 20 74 6f 20 74 68 65 20 64 61 74 61 62 61  de to the databa
1970: 73 65 20 65 78 63 65 70 74 20 77 69 74 68 69 6e  se except within
1980: 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a   a transaction..
1990: 41 6e 79 20 63 6f 6d 6d 61 6e 64 20 74 68 61 74  Any command that
19a0: 20 63 68 61 6e 67 65 73 20 74 68 65 20 64 61 74   changes the dat
19b0: 61 62 61 73 65 20 28 62 61 73 69 63 61 6c 6c 79  abase (basically
19c0: 2c 20 61 6e 79 20 53 51 4c 20 63 6f 6d 6d 61 6e  , any SQL comman
19d0: 64 0a 6f 74 68 65 72 20 74 68 61 6e 20 53 45 4c  d.other than SEL
19e0: 45 43 54 29 20 77 69 6c 6c 20 61 75 74 6f 6d 61  ECT) will automa
19f0: 74 69 63 61 6c 6c 79 20 73 74 61 72 74 20 61 20  tically start a 
1a00: 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 66 0a 6f  transaction if.o
1a10: 6e 65 20 69 73 20 6e 6f 74 20 61 6c 72 65 61 64  ne is not alread
1a20: 79 20 69 6e 20 65 66 66 65 63 74 2e 20 20 41 75  y in effect.  Au
1a30: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 74 61 72  tomatically star
1a40: 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  ted transactions
1a50: 0a 61 72 65 20 63 6f 6d 6d 69 74 74 65 64 20 61  .are committed a
1a60: 74 20 74 68 65 20 63 6f 6e 63 6c 75 73 69 6f 6e  t the conclusion
1a70: 20 6f 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2e   of the command.
1a80: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73  .</p>..<p>.Trans
1a90: 61 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 73  actions can be s
1aa0: 74 61 72 74 65 64 20 6d 61 6e 75 61 6c 6c 79 20  tarted manually 
1ab0: 75 73 69 6e 67 20 74 68 65 20 42 45 47 49 4e 0a  using the BEGIN.
1ac0: 63 6f 6d 6d 61 6e 64 2e 20 20 53 75 63 68 20 74  command.  Such t
1ad0: 72 61 6e 73 61 63 74 69 6f 6e 73 20 75 73 75 61  ransactions usua
1ae0: 6c 6c 79 20 70 65 72 73 69 73 74 20 75 6e 74 69  lly persist unti
1af0: 6c 20 74 68 65 20 6e 65 78 74 0a 43 4f 4d 4d 49  l the next.COMMI
1b00: 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 20 63 6f  T or ROLLBACK co
1b10: 6d 6d 61 6e 64 2e 20 20 42 75 74 20 61 20 74 72  mmand.  But a tr
1b20: 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c 20 61  ansaction will a
1b30: 6c 73 6f 20 0a 52 4f 4c 4c 42 41 43 4b 20 69 66  lso .ROLLBACK if
1b40: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73   the database is
1b50: 20 63 6c 6f 73 65 64 20 6f 72 20 69 66 20 61 6e   closed or if an
1b60: 20 65 72 72 6f 72 20 6f 63 63 75 72 73 0a 61 6e   error occurs.an
1b70: 64 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63  d the ROLLBACK c
1b80: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
1b90: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  on algorithm is 
1ba0: 73 70 65 63 69 66 69 65 64 2e 0a 53 65 65 20 74  specified..See t
1bb0: 68 65 20 64 6f 63 75 6d 65 6e 74 69 6f 6e 20 6f  he documention o
1bc0: 6e 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23  n the <a href="#
1bd0: 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e  conflict">ON CON
1be0: 46 4c 49 43 54 3c 2f 61 3e 0a 63 6c 61 75 73 65  FLICT</a>.clause
1bf0: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
1c00: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
1c10: 74 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 0a 63  t the ROLLBACK.c
1c20: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
1c30: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2e 0a 3c 2f  on algorithm..</
1c40: 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 43 4f 4d 4d  p>..<p>.The COMM
1c50: 49 54 20 63 6f 6d 6d 61 6e 64 20 64 6f 65 73 20  IT command does 
1c60: 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 70 65 72  not actually per
1c70: 66 6f 72 6d 20 61 20 63 6f 6d 6d 69 74 20 75 6e  form a commit un
1c80: 74 69 6c 20 61 6c 6c 0a 70 65 6e 64 69 6e 67 20  til all.pending 
1c90: 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 20 66 69 6e  SQL commands fin
1ca0: 69 73 68 2e 20 20 54 68 75 73 20 69 66 20 74 77  ish.  Thus if tw
1cb0: 6f 20 6f 72 20 6d 6f 72 65 20 53 45 4c 45 43 54  o or more SELECT
1cc0: 20 73 74 61 74 65 6d 65 6e 74 73 0a 61 72 65 20   statements.are 
1cd0: 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66  in the middle of
1ce0: 20 70 72 6f 63 65 73 73 69 6e 67 20 61 6e 64 20   processing and 
1cf0: 61 20 43 4f 4d 4d 49 54 20 69 73 20 65 78 65 63  a COMMIT is exec
1d00: 75 74 65 64 2c 20 74 68 65 20 63 6f 6d 6d 69 74  uted, the commit
1d10: 0a 77 69 6c 6c 20 6e 6f 74 20 61 63 74 75 61 6c  .will not actual
1d20: 6c 79 20 6f 63 63 75 72 20 75 6e 74 69 6c 20 61  ly occur until a
1d30: 6c 6c 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d  ll SELECT statem
1d40: 65 6e 74 73 20 66 69 6e 69 73 68 2e 0a 3c 2f 70  ents finish..</p
1d50: 3e 0a 0a 3c 70 3e 0a 41 6e 20 61 74 74 65 6d 70  >..<p>.An attemp
1d60: 74 20 74 6f 20 65 78 65 63 75 74 65 20 43 4f 4d  t to execute COM
1d70: 4d 49 54 20 6d 69 67 68 74 20 72 65 73 75 6c 74  MIT might result
1d80: 20 69 6e 20 61 6e 20 53 51 4c 49 54 45 5f 42 55   in an SQLITE_BU
1d90: 53 59 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0a  SY return code..
1da0: 54 68 69 73 20 69 6e 64 69 63 61 74 65 73 20 74  This indicates t
1db0: 68 61 74 20 61 6e 6f 74 68 65 72 20 74 68 72 65  hat another thre
1dc0: 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20 68 61  ad or process ha
1dd0: 64 20 61 20 72 65 61 64 20 6c 6f 63 6b 20 6f 6e  d a read lock on
1de0: 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 74 68   the database.th
1df0: 61 74 20 70 72 65 76 65 6e 74 65 64 20 74 68 65  at prevented the
1e00: 20 64 61 74 61 62 61 73 65 20 66 72 6f 6d 20 62   database from b
1e10: 65 69 6e 67 20 75 70 64 61 74 65 64 2e 20 20 57  eing updated.  W
1e20: 68 65 6e 20 43 4f 4d 4d 49 54 20 66 61 69 6c 73  hen COMMIT fails
1e30: 20 69 6e 20 74 68 69 73 0a 77 61 79 2c 20 74 68   in this.way, th
1e40: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 72 65  e transaction re
1e50: 6d 61 69 6e 73 20 61 63 74 69 76 65 20 61 6e 64  mains active and
1e60: 20 74 68 65 20 43 4f 4d 4d 49 54 20 63 61 6e 20   the COMMIT can 
1e70: 62 65 20 72 65 74 72 69 65 64 20 6c 61 74 65 72  be retried later
1e80: 0a 61 66 74 65 72 20 74 68 65 20 72 65 61 64 65  .after the reade
1e90: 72 20 68 61 73 20 68 61 64 20 61 20 63 68 61 6e  r has had a chan
1ea0: 63 65 20 74 6f 20 63 6c 65 61 72 2e 0a 3c 2f 70  ce to clear..</p
1eb0: 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 63 6f  >.}...Section co
1ec0: 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e 74 0a 0a 53  mment comment..S
1ed0: 79 6e 74 61 78 20 7b 63 6f 6d 6d 65 6e 74 7d 20  yntax {comment} 
1ee0: 7b 3c 53 51 4c 2d 63 6f 6d 6d 65 6e 74 3e 20 7c  {<SQL-comment> |
1ef0: 20 3c 43 2d 63 6f 6d 6d 65 6e 74 3e 0a 7d 20 7b   <C-comment>.} {
1f00: 53 51 4c 2d 63 6f 6d 6d 65 6e 74 7d 20 7b 2d 2d  SQL-comment} {--
1f10: 20 3c 73 69 6e 67 6c 65 2d 6c 69 6e 65 3e 0a 7d   <single-line>.}
1f20: 20 7b 43 2d 63 6f 6d 6d 65 6e 74 7d 20 7b 2f 53   {C-comment} {/S
1f30: 54 41 52 20 3c 6d 75 6c 74 69 70 6c 65 2d 6c 69  TAR <multiple-li
1f40: 6e 65 73 3e 20 5b 53 54 41 52 2f 5d 0a 7d 0a 0a  nes> [STAR/].}..
1f50: 70 75 74 73 20 7b 0a 3c 70 3e 20 43 6f 6d 6d 65  puts {.<p> Comme
1f60: 6e 74 73 20 61 72 65 6e 27 74 20 53 51 4c 20 63  nts aren't SQL c
1f70: 6f 6d 6d 61 6e 64 73 2c 20 62 75 74 20 63 61 6e  ommands, but can
1f80: 20 6f 63 63 75 72 20 69 6e 20 53 51 4c 20 71 75   occur in SQL qu
1f90: 65 72 69 65 73 2e 20 54 68 65 79 20 61 72 65 20  eries. They are 
1fa0: 0a 74 72 65 61 74 65 64 20 61 73 20 77 68 69 74  .treated as whit
1fb0: 65 73 70 61 63 65 20 62 79 20 74 68 65 20 70 61  espace by the pa
1fc0: 72 73 65 72 2e 20 20 54 68 65 79 20 63 61 6e 20  rser.  They can 
1fd0: 62 65 67 69 6e 20 61 6e 79 77 68 65 72 65 20 77  begin anywhere w
1fe0: 68 69 74 65 73 70 61 63 65 20 0a 63 61 6e 20 62  hitespace .can b
1ff0: 65 20 66 6f 75 6e 64 2c 20 69 6e 63 6c 75 64 69  e found, includi
2000: 6e 67 20 69 6e 73 69 64 65 20 65 78 70 72 65 73  ng inside expres
2010: 73 69 6f 6e 73 20 74 68 61 74 20 73 70 61 6e 20  sions that span 
2020: 6d 75 6c 74 69 70 6c 65 20 6c 69 6e 65 73 2e 0a  multiple lines..
2030: 3c 2f 70 3e 0a 0a 3c 70 3e 20 53 51 4c 20 63 6f  </p>..<p> SQL co
2040: 6d 6d 65 6e 74 73 20 6f 6e 6c 79 20 65 78 74 65  mments only exte
2050: 6e 64 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66  nd to the end of
2060: 20 74 68 65 20 63 75 72 72 65 6e 74 20 6c 69 6e   the current lin
2070: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 43 20 63 6f  e.</p>..<p> C co
2080: 6d 6d 65 6e 74 73 20 63 61 6e 20 73 70 61 6e 20  mments can span 
2090: 61 6e 79 20 6e 75 6d 62 65 72 20 6f 66 20 6c 69  any number of li
20a0: 6e 65 73 2e 20 20 49 66 20 74 68 65 72 65 20 69  nes.  If there i
20b0: 73 20 6e 6f 20 74 65 72 6d 69 6e 61 74 69 6e 67  s no terminating
20c0: 0a 64 65 6c 69 6d 69 74 65 72 2c 20 74 68 65 79  .delimiter, they
20d0: 20 65 78 74 65 6e 64 20 74 6f 20 74 68 65 20 65   extend to the e
20e0: 6e 64 20 6f 66 20 74 68 65 20 69 6e 70 75 74 2e  nd of the input.
20f0: 20 20 54 68 69 73 20 69 73 20 6e 6f 74 20 74 72    This is not tr
2100: 65 61 74 65 64 20 61 73 0a 61 6e 20 65 72 72 6f  eated as.an erro
2110: 72 2e 20 20 41 20 6e 65 77 20 53 51 4c 20 73 74  r.  A new SQL st
2120: 61 74 65 6d 65 6e 74 20 63 61 6e 20 62 65 67 69  atement can begi
2130: 6e 20 6f 6e 20 61 20 6c 69 6e 65 20 61 66 74 65  n on a line afte
2140: 72 20 61 20 6d 75 6c 74 69 6c 69 6e 65 0a 63 6f  r a multiline.co
2150: 6d 6d 65 6e 74 20 65 6e 64 73 2e 20 20 43 20 63  mment ends.  C c
2160: 6f 6d 6d 65 6e 74 73 20 63 61 6e 20 62 65 20 65  omments can be e
2170: 6d 62 65 64 64 65 64 20 61 6e 79 77 68 65 72 65  mbedded anywhere
2180: 20 77 68 69 74 65 73 70 61 63 65 20 63 61 6e 20   whitespace can 
2190: 6f 63 63 75 72 2c 0a 69 6e 63 6c 75 64 69 6e 67  occur,.including
21a0: 20 69 6e 73 69 64 65 20 65 78 70 72 65 73 73 69   inside expressi
21b0: 6f 6e 73 2c 20 61 6e 64 20 69 6e 20 74 68 65 20  ons, and in the 
21c0: 6d 69 64 64 6c 65 20 6f 66 20 6f 74 68 65 72 20  middle of other 
21d0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a  SQL statements..
21e0: 43 20 63 6f 6d 6d 65 6e 74 73 20 64 6f 20 6e 6f  C comments do no
21f0: 74 20 6e 65 73 74 2e 20 20 53 51 4c 20 63 6f 6d  t nest.  SQL com
2200: 6d 65 6e 74 73 20 69 6e 73 69 64 65 20 61 20 43  ments inside a C
2210: 20 63 6f 6d 6d 65 6e 74 20 77 69 6c 6c 20 62 65   comment will be
2220: 20 69 67 6e 6f 72 65 64 2e 0a 3c 2f 70 3e 0a 7d   ignored..</p>.}
2230: 0a 0a 0a 53 65 63 74 69 6f 6e 20 43 4f 50 59 20  ...Section COPY 
2240: 63 6f 70 79 0a 0a 53 79 6e 74 61 78 20 7b 73 71  copy..Syntax {sq
2250: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43  l-statement} {.C
2260: 4f 50 59 20 5b 20 4f 52 20 3c 63 6f 6e 66 6c 69  OPY [ OR <confli
2270: 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 20 5d 20  ct-algorithm> ] 
2280: 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e  [<database-name>
2290: 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e   .] <table-name>
22a0: 20 46 52 4f 4d 20 3c 66 69 6c 65 6e 61 6d 65 3e   FROM <filename>
22b0: 0a 5b 20 55 53 49 4e 47 20 44 45 4c 49 4d 49 54  .[ USING DELIMIT
22c0: 45 52 53 20 3c 64 65 6c 69 6d 3e 20 5d 0a 7d 0a  ERS <delim> ].}.
22d0: 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43  .puts {.<p>The C
22e0: 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61  OPY command is a
22f0: 76 61 69 6c 61 62 6c 65 20 69 6e 20 53 51 4c 69  vailable in SQLi
2300: 74 65 20 76 65 72 73 69 6f 6e 20 32 2e 38 20 61  te version 2.8 a
2310: 6e 64 20 65 61 72 6c 69 65 72 2e 0a 54 68 65 20  nd earlier..The 
2320: 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 68 61 73  COPY command has
2330: 20 62 65 65 6e 20 72 65 6d 6f 76 65 64 20 66 72   been removed fr
2340: 6f 6d 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  om SQLite versio
2350: 6e 20 33 2e 30 20 64 75 65 20 74 6f 0a 63 6f 6d  n 3.0 due to.com
2360: 70 6c 69 63 61 74 69 6f 6e 73 20 69 6e 20 74 72  plications in tr
2370: 79 69 6e 67 20 74 6f 20 73 75 70 70 6f 72 74 20  ying to support 
2380: 69 74 20 69 6e 20 61 20 6d 69 78 65 64 20 55 54  it in a mixed UT
2390: 46 2d 38 2f 31 36 20 65 6e 76 69 72 6f 6e 6d 65  F-8/16 environme
23a0: 6e 74 2e 0a 49 6e 20 76 65 72 73 69 6f 6e 20 33  nt..In version 3
23b0: 2e 30 2c 20 74 68 65 20 3c 61 20 68 72 65 66 3d  .0, the <a href=
23c0: 22 73 71 6c 69 74 65 2e 68 74 6d 6c 22 3e 63 6f  "sqlite.html">co
23d0: 6d 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c  mmand-line shell
23e0: 3c 2f 61 3e 0a 63 6f 6e 74 61 69 6e 73 20 61 20  </a>.contains a 
23f0: 6e 65 77 20 63 6f 6d 6d 61 6e 64 20 3c 62 3e 2e  new command <b>.
2400: 69 6d 70 6f 72 74 3c 2f 62 3e 20 74 68 61 74 20  import</b> that 
2410: 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 61  can be used as a
2420: 20 73 75 62 73 74 69 74 75 74 65 0a 66 6f 72 20   substitute.for 
2430: 43 4f 50 59 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54  COPY..</p>..<p>T
2440: 68 65 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20  he COPY command 
2450: 69 73 20 61 6e 20 65 78 74 65 6e 73 69 6f 6e 20  is an extension 
2460: 75 73 65 64 20 74 6f 20 6c 6f 61 64 20 6c 61 72  used to load lar
2470: 67 65 20 61 6d 6f 75 6e 74 73 20 6f 66 0a 64 61  ge amounts of.da
2480: 74 61 20 69 6e 74 6f 20 61 20 74 61 62 6c 65 2e  ta into a table.
2490: 20 20 49 74 20 69 73 20 6d 6f 64 65 6c 65 64 20    It is modeled 
24a0: 61 66 74 65 72 20 61 20 73 69 6d 69 6c 61 72 20  after a similar 
24b0: 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 0a 69 6e  command found.in
24c0: 20 50 6f 73 74 67 72 65 53 51 4c 2e 20 20 49 6e   PostgreSQL.  In
24d0: 20 66 61 63 74 2c 20 74 68 65 20 53 51 4c 69 74   fact, the SQLit
24e0: 65 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 69  e COPY command i
24f0: 73 20 73 70 65 63 69 66 69 63 61 6c 6c 79 0a 64  s specifically.d
2500: 65 73 69 67 6e 65 64 20 74 6f 20 62 65 20 61 62  esigned to be ab
2510: 6c 65 20 74 6f 20 72 65 61 64 20 74 68 65 20 6f  le to read the o
2520: 75 74 70 75 74 20 6f 66 20 74 68 65 20 50 6f 73  utput of the Pos
2530: 74 67 72 65 53 51 4c 20 64 75 6d 70 0a 75 74 69  tgreSQL dump.uti
2540: 6c 69 74 79 20 3c 62 3e 70 67 5f 64 75 6d 70 3c  lity <b>pg_dump<
2550: 2f 62 3e 20 73 6f 20 74 68 61 74 20 64 61 74 61  /b> so that data
2560: 20 63 61 6e 20 62 65 20 65 61 73 69 6c 79 20 74   can be easily t
2570: 72 61 6e 73 66 65 72 72 65 64 20 66 72 6f 6d 0a  ransferred from.
2580: 50 6f 73 74 67 72 65 53 51 4c 20 69 6e 74 6f 20  PostgreSQL into 
2590: 53 51 4c 69 74 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  SQLite.</p>..<p>
25a0: 54 68 65 20 74 61 62 6c 65 2d 6e 61 6d 65 20 69  The table-name i
25b0: 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 6e  s the name of an
25c0: 20 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65 20   existing table 
25d0: 77 68 69 63 68 20 69 73 20 74 6f 0a 62 65 20 66  which is to.be f
25e0: 69 6c 6c 65 64 20 77 69 74 68 20 64 61 74 61 2e  illed with data.
25f0: 20 20 54 68 65 20 66 69 6c 65 6e 61 6d 65 20 69    The filename i
2600: 73 20 61 20 73 74 72 69 6e 67 20 6f 72 20 69 64  s a string or id
2610: 65 6e 74 69 66 69 65 72 20 74 68 61 74 0a 6e 61  entifier that.na
2620: 6d 65 73 20 61 20 66 69 6c 65 20 66 72 6f 6d 20  mes a file from 
2630: 77 68 69 63 68 20 64 61 74 61 20 77 69 6c 6c 20  which data will 
2640: 62 65 20 72 65 61 64 2e 20 20 54 68 65 20 66 69  be read.  The fi
2650: 6c 65 6e 61 6d 65 20 63 61 6e 20 62 65 0a 74 68  lename can be.th
2660: 65 20 3c 62 3e 53 54 44 49 4e 3c 2f 62 3e 20 74  e <b>STDIN</b> t
2670: 6f 20 72 65 61 64 20 64 61 74 61 20 66 72 6f 6d  o read data from
2680: 20 73 74 61 6e 64 61 72 64 20 69 6e 70 75 74 2e   standard input.
2690: 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68 20 6c 69  </p>..<p>Each li
26a0: 6e 65 20 6f 66 20 74 68 65 20 69 6e 70 75 74 20  ne of the input 
26b0: 66 69 6c 65 20 69 73 20 63 6f 6e 76 65 72 74 65  file is converte
26c0: 64 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65 20  d into a single 
26d0: 72 65 63 6f 72 64 0a 69 6e 20 74 68 65 20 74 61  record.in the ta
26e0: 62 6c 65 2e 20 20 43 6f 6c 75 6d 6e 73 20 61 72  ble.  Columns ar
26f0: 65 20 73 65 70 61 72 61 74 65 64 20 62 79 20 74  e separated by t
2700: 61 62 73 2e 20 20 49 66 20 61 20 74 61 62 20 6f  abs.  If a tab o
2710: 63 63 75 72 73 20 61 73 0a 64 61 74 61 20 77 69  ccurs as.data wi
2720: 74 68 69 6e 20 61 20 63 6f 6c 75 6d 6e 2c 20 74  thin a column, t
2730: 68 65 6e 20 74 68 61 74 20 74 61 62 20 69 73 20  hen that tab is 
2740: 70 72 65 63 65 64 65 64 20 62 79 20 61 20 62 61  preceded by a ba
2750: 73 6b 73 6c 61 73 68 20 22 5c 22 0a 63 68 61 72  skslash "\".char
2760: 61 63 74 65 72 2e 20 20 41 20 62 61 73 6b 73 6c  acter.  A basksl
2770: 61 73 68 20 69 6e 20 74 68 65 20 64 61 74 61 20  ash in the data 
2780: 61 70 70 65 61 72 73 20 61 73 20 74 77 6f 20 62  appears as two b
2790: 61 63 6b 73 6c 61 73 68 65 73 20 69 6e 0a 61 20  ackslashes in.a 
27a0: 72 6f 77 2e 20 20 54 68 65 20 6f 70 74 69 6f 6e  row.  The option
27b0: 61 6c 20 55 53 49 4e 47 20 44 45 4c 49 4d 49 54  al USING DELIMIT
27c0: 45 52 53 20 63 6c 61 75 73 65 20 63 61 6e 20 73  ERS clause can s
27d0: 70 65 63 69 66 79 20 61 20 64 65 6c 69 6d 69 74  pecify a delimit
27e0: 65 72 0a 6f 74 68 65 72 20 74 68 61 6e 20 74 61  er.other than ta
27f0: 62 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 20  b.</p>..<p>If a 
2800: 63 6f 6c 75 6d 6e 20 63 6f 6e 73 69 73 74 73 20  column consists 
2810: 6f 66 20 74 68 65 20 63 68 61 72 61 63 74 65 72  of the character
2820: 20 22 5c 4e 22 2c 20 74 68 61 74 20 63 6f 6c 75   "\N", that colu
2830: 6d 6e 20 69 73 20 66 69 6c 6c 65 64 0a 77 69 74  mn is filled.wit
2840: 68 20 74 68 65 20 76 61 6c 75 65 20 4e 55 4c 4c  h the value NULL
2850: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70  .</p>..<p>The op
2860: 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d  tional conflict-
2870: 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68  clause allows th
2880: 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20  e specification 
2890: 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  of an alternativ
28a0: 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  e.constraint con
28b0: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
28c0: 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75 73   algorithm to us
28d0: 65 20 66 6f 72 20 74 68 69 73 20 6f 6e 65 20 63  e for this one c
28e0: 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20  ommand..See the 
28f0: 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c  section titled.<
2900: 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63  a href="#conflic
2910: 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f  t">ON CONFLICT</
2920: 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  a> for additiona
2930: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f  l information.</
2940: 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 74 68 65 20  p>..<p>When the 
2950: 69 6e 70 75 74 20 64 61 74 61 20 73 6f 75 72 63  input data sourc
2960: 65 20 69 73 20 53 54 44 49 4e 2c 20 74 68 65 20  e is STDIN, the 
2970: 69 6e 70 75 74 20 63 61 6e 20 62 65 20 74 65 72  input can be ter
2980: 6d 69 6e 61 74 65 64 0a 62 79 20 61 20 6c 69 6e  minated.by a lin
2990: 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20  e that contains 
29a0: 6f 6e 6c 79 20 61 20 62 61 73 6b 73 6c 61 73 68  only a baskslash
29b0: 20 61 6e 64 20 61 20 64 6f 74 3a 7d 0a 70 75 74   and a dot:}.put
29c0: 73 20 22 5c 22 5b 4f 70 65 72 61 74 6f 72 20 5c  s "\"[Operator \
29d0: 5c 2e 5d 5c 22 2e 3c 2f 70 3e 22 0a 0a 0a 53 65  \.]\".</p>"...Se
29e0: 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 49 4e  ction {CREATE IN
29f0: 44 45 58 7d 20 63 72 65 61 74 65 69 6e 64 65 78  DEX} createindex
2a00: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
2a10: 61 74 65 6d 65 6e 74 7d 20 7b 0a 43 52 45 41 54  atement} {.CREAT
2a20: 45 20 5b 55 4e 49 51 55 45 5d 20 49 4e 44 45 58  E [UNIQUE] INDEX
2a30: 20 3c 69 6e 64 65 78 2d 6e 61 6d 65 3e 20 0a 4f   <index-name> .O
2a40: 4e 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d  N [<database-nam
2a50: 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d  e> .] <table-nam
2a60: 65 3e 20 28 20 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d  e> ( <column-nam
2a70: 65 3e 20 5b 2c 20 3c 63 6f 6c 75 6d 6e 2d 6e 61  e> [, <column-na
2a80: 6d 65 3e 5d 2a 20 29 0a 5b 20 4f 4e 20 43 4f 4e  me>]* ).[ ON CON
2a90: 46 4c 49 43 54 20 3c 63 6f 6e 66 6c 69 63 74 2d  FLICT <conflict-
2aa0: 61 6c 67 6f 72 69 74 68 6d 3e 20 5d 0a 7d 20 7b  algorithm> ].} {
2ab0: 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 7d 20 7b 0a 3c  column-name} {.<
2ac0: 6e 61 6d 65 3e 20 5b 20 43 4f 4c 4c 41 54 45 20  name> [ COLLATE 
2ad0: 3c 63 6f 6c 6c 61 74 69 6f 6e 2d 6e 61 6d 65 3e  <collation-name>
2ae0: 5d 20 5b 20 41 53 43 20 7c 20 44 45 53 43 20 5d  ] [ ASC | DESC ]
2af0: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
2b00: 65 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 63  e CREATE INDEX c
2b10: 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74 73 20  ommand consists 
2b20: 6f 66 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20  of the keywords 
2b30: 22 43 52 45 41 54 45 20 49 4e 44 45 58 22 20 66  "CREATE INDEX" f
2b40: 6f 6c 6c 6f 77 65 64 0a 62 79 20 74 68 65 20 6e  ollowed.by the n
2b50: 61 6d 65 20 6f 66 20 74 68 65 20 6e 65 77 20 69  ame of the new i
2b60: 6e 64 65 78 2c 20 74 68 65 20 6b 65 79 77 6f 72  ndex, the keywor
2b70: 64 20 22 4f 4e 22 2c 20 74 68 65 20 6e 61 6d 65  d "ON", the name
2b80: 20 6f 66 20 61 20 70 72 65 76 69 6f 75 73 6c 79   of a previously
2b90: 0a 63 72 65 61 74 65 64 20 74 61 62 6c 65 20 74  .created table t
2ba0: 68 61 74 20 69 73 20 74 6f 20 62 65 20 69 6e 64  hat is to be ind
2bb0: 65 78 65 64 2c 20 61 6e 64 20 61 20 70 61 72 65  exed, and a pare
2bc0: 6e 74 68 65 73 69 7a 65 64 20 6c 69 73 74 20 6f  nthesized list o
2bd0: 66 20 6e 61 6d 65 73 20 6f 66 0a 63 6f 6c 75 6d  f names of.colum
2be0: 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20  ns in the table 
2bf0: 74 68 61 74 20 61 72 65 20 75 73 65 64 20 66 6f  that are used fo
2c00: 72 20 74 68 65 20 69 6e 64 65 78 20 6b 65 79 2e  r the index key.
2c10: 0a 45 61 63 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d  .Each column nam
2c20: 65 20 63 61 6e 20 62 65 20 66 6f 6c 6c 6f 77 65  e can be followe
2c30: 64 20 62 79 20 6f 6e 65 20 6f 66 20 74 68 65 20  d by one of the 
2c40: 22 41 53 43 22 20 6f 72 20 22 44 45 53 43 22 20  "ASC" or "DESC" 
2c50: 6b 65 79 77 6f 72 64 73 0a 74 6f 20 69 6e 64 69  keywords.to indi
2c60: 63 61 74 65 20 73 6f 72 74 20 6f 72 64 65 72 2c  cate sort order,
2c70: 20 62 75 74 20 74 68 65 20 73 6f 72 74 20 6f 72   but the sort or
2c80: 64 65 72 20 69 73 20 69 67 6e 6f 72 65 64 20 69  der is ignored i
2c90: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0a 69 6d  n the current.im
2ca0: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 53  plementation.  S
2cb0: 6f 72 74 69 6e 67 20 69 73 20 61 6c 77 61 79 73  orting is always
2cc0: 20 64 6f 6e 65 20 69 6e 20 61 73 63 65 6e 64 69   done in ascendi
2cd0: 6e 67 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c  ng order.</p>..<
2ce0: 70 3e 54 68 65 20 43 4f 4c 4c 41 54 45 20 63 6c  p>The COLLATE cl
2cf0: 61 75 73 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 65  ause following e
2d00: 61 63 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20  ach column name 
2d10: 64 65 66 69 6e 65 73 20 61 20 63 6f 6c 6c 61 74  defines a collat
2d20: 69 6e 67 0a 73 65 71 75 65 6e 63 65 20 75 73 65  ing.sequence use
2d30: 64 20 66 6f 72 20 74 65 78 74 20 65 6e 74 69 72  d for text entir
2d40: 65 73 20 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d  es in that colum
2d50: 6e 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20  n.  The default 
2d60: 63 6f 6c 6c 61 74 69 6e 67 0a 73 65 71 75 65 6e  collating.sequen
2d70: 63 65 20 69 73 20 74 68 65 20 63 6f 6c 6c 61 74  ce is the collat
2d80: 69 6e 67 20 73 65 71 75 65 6e 63 65 20 64 65 66  ing sequence def
2d90: 69 6e 65 64 20 66 6f 72 20 74 68 61 74 20 63 6f  ined for that co
2da0: 6c 75 6d 6e 20 69 6e 20 74 68 65 0a 43 52 45 41  lumn in the.CREA
2db0: 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  TE TABLE stateme
2dc0: 6e 74 2e 20 20 4f 72 20 69 66 20 6e 6f 20 63 6f  nt.  Or if no co
2dd0: 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65  llating sequence
2de0: 20 69 73 20 6f 74 68 65 72 77 69 73 65 20 64 65   is otherwise de
2df0: 66 69 6e 65 64 2c 0a 74 68 65 20 62 75 69 6c 74  fined,.the built
2e00: 2d 69 6e 20 42 49 4e 41 52 59 20 63 6f 6c 6c 61  -in BINARY colla
2e10: 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69 73  ting sequence is
2e20: 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54   used.</p>..<p>T
2e30: 68 65 72 65 20 61 72 65 20 6e 6f 20 61 72 62 69  here are no arbi
2e40: 74 72 61 72 79 20 6c 69 6d 69 74 73 20 6f 6e 20  trary limits on 
2e50: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e  the number of in
2e60: 64 69 63 65 73 20 74 68 61 74 20 63 61 6e 20 62  dices that can b
2e70: 65 0a 61 74 74 61 63 68 65 64 20 74 6f 20 61 20  e.attached to a 
2e80: 73 69 6e 67 6c 65 20 74 61 62 6c 65 2c 20 6e 6f  single table, no
2e90: 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  r on the number 
2ea0: 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 61 6e  of columns in an
2eb0: 20 69 6e 64 65 78 2e 3c 2f 70 3e 0a 0a 3c 70 3e   index.</p>..<p>
2ec0: 49 66 20 74 68 65 20 55 4e 49 51 55 45 20 6b 65  If the UNIQUE ke
2ed0: 79 77 6f 72 64 20 61 70 70 65 61 72 73 20 62 65  yword appears be
2ee0: 74 77 65 65 6e 20 43 52 45 41 54 45 20 61 6e 64  tween CREATE and
2ef0: 20 49 4e 44 45 58 20 74 68 65 6e 20 64 75 70 6c   INDEX then dupl
2f00: 69 63 61 74 65 0a 69 6e 64 65 78 20 65 6e 74 72  icate.index entr
2f10: 69 65 73 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f  ies are not allo
2f20: 77 65 64 2e 20 20 41 6e 79 20 61 74 74 65 6d 70  wed.  Any attemp
2f30: 74 20 74 6f 20 69 6e 73 65 72 74 20 61 20 64 75  t to insert a du
2f40: 70 6c 69 63 61 74 65 20 65 6e 74 72 79 0a 77 69  plicate entry.wi
2f50: 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20  ll result in an 
2f60: 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  error.</p>..<p>T
2f70: 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66  he optional conf
2f80: 6c 69 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f  lict-clause allo
2f90: 77 73 20 74 68 65 20 73 70 65 63 69 66 69 63 61  ws the specifica
2fa0: 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72  tion of an alter
2fb0: 6e 61 74 69 76 65 0a 64 65 66 61 75 6c 74 20 63  native.default c
2fc0: 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69  onstraint confli
2fd0: 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
2fe0: 67 6f 72 69 74 68 6d 20 66 6f 72 20 74 68 69 73  gorithm for this
2ff0: 20 69 6e 64 65 78 2e 0a 54 68 69 73 20 6f 6e 6c   index..This onl
3000: 79 20 6d 61 6b 65 73 20 73 65 6e 73 65 20 69 66  y makes sense if
3010: 20 74 68 65 20 55 4e 49 51 55 45 20 6b 65 79 77   the UNIQUE keyw
3020: 6f 72 64 20 69 73 20 75 73 65 64 20 73 69 6e 63  ord is used sinc
3030: 65 20 6f 74 68 65 72 77 69 73 65 0a 74 68 65 72  e otherwise.ther
3040: 65 20 61 72 65 20 6e 6f 74 20 63 6f 6e 73 74 72  e are not constr
3050: 61 69 6e 74 73 20 6f 6e 20 74 68 65 20 69 6e 64  aints on the ind
3060: 65 78 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74  ex.  The default
3070: 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 0a 41 42   algorithm is.AB
3080: 4f 52 54 2e 20 20 49 66 20 61 20 43 4f 50 59 2c  ORT.  If a COPY,
3090: 20 49 4e 53 45 52 54 2c 20 6f 72 20 55 50 44 41   INSERT, or UPDA
30a0: 54 45 20 73 74 61 74 65 6d 65 6e 74 20 73 70 65  TE statement spe
30b0: 63 69 66 69 65 73 20 61 20 70 61 72 74 69 63 75  cifies a particu
30c0: 6c 61 72 0a 63 6f 6e 66 6c 69 63 74 20 72 65 73  lar.conflict res
30d0: 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68  olution algorith
30e0: 6d 2c 20 74 68 61 74 20 61 6c 67 6f 72 69 74 68  m, that algorith
30f0: 6d 20 69 73 20 75 73 65 64 20 69 6e 20 70 6c 61  m is used in pla
3100: 63 65 20 6f 66 0a 74 68 65 20 64 65 66 61 75 6c  ce of.the defaul
3110: 74 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63  t algorithm spec
3120: 69 66 69 65 64 20 68 65 72 65 2e 0a 53 65 65 20  ified here..See 
3130: 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c  the section titl
3140: 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e  ed.<a href="#con
3150: 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49  flict">ON CONFLI
3160: 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74  CT</a> for addit
3170: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
3180: 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 65  n.</p>..<p>The e
3190: 78 61 63 74 20 74 65 78 74 0a 6f 66 20 65 61 63  xact text.of eac
31a0: 68 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 73  h CREATE INDEX s
31b0: 74 61 74 65 6d 65 6e 74 20 69 73 20 73 74 6f 72  tatement is stor
31c0: 65 64 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c  ed in the <b>sql
31d0: 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 6f  ite_master</b>.o
31e0: 72 20 3c 62 3e 73 71 6c 69 74 65 5f 74 65 6d 70  r <b>sqlite_temp
31f0: 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c  _master</b> tabl
3200: 65 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  e, depending on 
3210: 77 68 65 74 68 65 72 20 74 68 65 20 74 61 62 6c  whether the tabl
3220: 65 0a 62 65 69 6e 67 20 69 6e 64 65 78 65 64 20  e.being indexed 
3230: 69 73 20 74 65 6d 70 6f 72 61 72 79 2e 20 20 45  is temporary.  E
3240: 76 65 72 79 74 69 6d 65 20 74 68 65 20 64 61 74  verytime the dat
3250: 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64 2c  abase is opened,
3260: 0a 61 6c 6c 20 43 52 45 41 54 45 20 49 4e 44 45  .all CREATE INDE
3270: 58 20 73 74 61 74 65 6d 65 6e 74 73 0a 61 72 65  X statements.are
3280: 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20 3c   read from the <
3290: 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c  b>sqlite_master<
32a0: 2f 62 3e 20 74 61 62 6c 65 20 61 6e 64 20 75 73  /b> table and us
32b0: 65 64 20 74 6f 20 72 65 67 65 6e 65 72 61 74 65  ed to regenerate
32c0: 0a 53 51 4c 69 74 65 27 73 20 69 6e 74 65 72 6e  .SQLite's intern
32d0: 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f  al representatio
32e0: 6e 20 6f 66 20 74 68 65 20 69 6e 64 65 78 20 6c  n of the index l
32f0: 61 79 6f 75 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49  ayout.</p>..<p>I
3300: 6e 64 65 78 65 73 20 61 72 65 20 72 65 6d 6f 76  ndexes are remov
3310: 65 64 20 77 69 74 68 20 74 68 65 20 3c 61 20 68  ed with the <a h
3320: 72 65 66 3d 22 23 64 72 6f 70 69 6e 64 65 78 22  ref="#dropindex"
3330: 3e 44 52 4f 50 20 49 4e 44 45 58 3c 2f 61 3e 20  >DROP INDEX</a> 
3340: 0a 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d 0a  .command.</p>.}.
3350: 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54  ..Section {CREAT
3360: 45 20 54 41 42 4c 45 7d 20 7b 63 72 65 61 74 65  E TABLE} {create
3370: 74 61 62 6c 65 7d 0a 0a 53 79 6e 74 61 78 20 7b  table}..Syntax {
3380: 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43  sql-command} {.C
3390: 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45  REATE [TEMP | TE
33a0: 4d 50 4f 52 41 52 59 5d 20 54 41 42 4c 45 20 3c  MPORARY] TABLE <
33b0: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 28 0a 20 20  table-name> (.  
33c0: 3c 63 6f 6c 75 6d 6e 2d 64 65 66 3e 20 5b 2c 20  <column-def> [, 
33d0: 3c 63 6f 6c 75 6d 6e 2d 64 65 66 3e 5d 2a 0a 20  <column-def>]*. 
33e0: 20 5b 2c 20 3c 63 6f 6e 73 74 72 61 69 6e 74 3e   [, <constraint>
33f0: 5d 2a 0a 29 0a 7d 20 7b 73 71 6c 2d 63 6f 6d 6d  ]*.).} {sql-comm
3400: 61 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54  and} {.CREATE [T
3410: 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d  EMP | TEMPORARY]
3420: 20 54 41 42 4c 45 20 5b 3c 64 61 74 61 62 61 73   TABLE [<databas
3430: 65 2d 6e 61 6d 65 3e 2e 5d 20 3c 74 61 62 6c 65  e-name>.] <table
3440: 2d 6e 61 6d 65 3e 20 41 53 20 3c 73 65 6c 65 63  -name> AS <selec
3450: 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 20 7b  t-statement>.} {
3460: 63 6f 6c 75 6d 6e 2d 64 65 66 7d 20 7b 0a 3c 6e  column-def} {.<n
3470: 61 6d 65 3e 20 5b 3c 74 79 70 65 3e 5d 20 5b 5b  ame> [<type>] [[
3480: 43 4f 4e 53 54 52 41 49 4e 54 20 3c 6e 61 6d 65  CONSTRAINT <name
3490: 3e 5d 20 3c 63 6f 6c 75 6d 6e 2d 63 6f 6e 73 74  >] <column-const
34a0: 72 61 69 6e 74 3e 5d 2a 0a 7d 20 7b 74 79 70 65  raint>]*.} {type
34b0: 7d 20 7b 0a 3c 74 79 70 65 6e 61 6d 65 3e 20 7c  } {.<typename> |
34c0: 0a 3c 74 79 70 65 6e 61 6d 65 3e 20 28 20 3c 6e  .<typename> ( <n
34d0: 75 6d 62 65 72 3e 20 29 20 7c 0a 3c 74 79 70 65  umber> ) |.<type
34e0: 6e 61 6d 65 3e 20 28 20 3c 6e 75 6d 62 65 72 3e  name> ( <number>
34f0: 20 2c 20 3c 6e 75 6d 62 65 72 3e 20 29 0a 7d 20   , <number> ).} 
3500: 7b 63 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72 61 69  {column-constrai
3510: 6e 74 7d 20 7b 0a 4e 4f 54 20 4e 55 4c 4c 20 5b  nt} {.NOT NULL [
3520: 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73   <conflict-claus
3530: 65 3e 20 5d 20 7c 0a 50 52 49 4d 41 52 59 20 4b  e> ] |.PRIMARY K
3540: 45 59 20 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e  EY [<sort-order>
3550: 5d 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c  ] [ <conflict-cl
3560: 61 75 73 65 3e 20 5d 20 7c 0a 55 4e 49 51 55 45  ause> ] |.UNIQUE
3570: 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61   [ <conflict-cla
3580: 75 73 65 3e 20 5d 20 7c 0a 43 48 45 43 4b 20 28  use> ] |.CHECK (
3590: 20 3c 65 78 70 72 3e 20 29 20 5b 20 3c 63 6f 6e   <expr> ) [ <con
35a0: 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20  flict-clause> ] 
35b0: 7c 0a 44 45 46 41 55 4c 54 20 3c 76 61 6c 75 65  |.DEFAULT <value
35c0: 3e 20 7c 0a 43 4f 4c 4c 41 54 45 20 3c 63 6f 6c  > |.COLLATE <col
35d0: 6c 61 74 69 6f 6e 2d 6e 61 6d 65 3e 0a 7d 20 7b  lation-name>.} {
35e0: 63 6f 6e 73 74 72 61 69 6e 74 7d 20 7b 0a 50 52  constraint} {.PR
35f0: 49 4d 41 52 59 20 4b 45 59 20 28 20 3c 63 6f 6c  IMARY KEY ( <col
3600: 75 6d 6e 2d 6c 69 73 74 3e 20 29 20 5b 20 3c 63  umn-list> ) [ <c
3610: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20  onflict-clause> 
3620: 5d 20 7c 0a 55 4e 49 51 55 45 20 28 20 3c 63 6f  ] |.UNIQUE ( <co
3630: 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 20 5b 20 3c  lumn-list> ) [ <
3640: 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e  conflict-clause>
3650: 20 5d 20 7c 0a 43 48 45 43 4b 20 28 20 3c 65 78   ] |.CHECK ( <ex
3660: 70 72 3e 20 29 20 5b 20 3c 63 6f 6e 66 6c 69 63  pr> ) [ <conflic
3670: 74 2d 63 6c 61 75 73 65 3e 20 5d 0a 7d 20 7b 63  t-clause> ].} {c
3680: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 7d 20  onflict-clause} 
3690: 7b 0a 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c 63  {.ON CONFLICT <c
36a0: 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68  onflict-algorith
36b0: 6d 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  m>.}..puts {.<p>
36c0: 41 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 73  A CREATE TABLE s
36d0: 74 61 74 65 6d 65 6e 74 20 69 73 20 62 61 73 69  tatement is basi
36e0: 63 61 6c 6c 79 20 74 68 65 20 6b 65 79 77 6f 72  cally the keywor
36f0: 64 73 20 22 43 52 45 41 54 45 20 54 41 42 4c 45  ds "CREATE TABLE
3700: 22 0a 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 68  ".followed by th
3710: 65 20 6e 61 6d 65 20 6f 66 20 61 20 6e 65 77 20  e name of a new 
3720: 74 61 62 6c 65 20 61 6e 64 20 61 20 70 61 72 65  table and a pare
3730: 6e 74 68 65 73 69 7a 65 64 20 6c 69 73 74 20 6f  nthesized list o
3740: 66 20 63 6f 6c 75 6d 6e 0a 64 65 66 69 6e 69 74  f column.definit
3750: 69 6f 6e 73 20 61 6e 64 20 63 6f 6e 73 74 72 61  ions and constra
3760: 69 6e 74 73 2e 20 20 54 68 65 20 74 61 62 6c 65  ints.  The table
3770: 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 65 69 74   name can be eit
3780: 68 65 72 20 61 6e 20 69 64 65 6e 74 69 66 69 65  her an identifie
3790: 72 0a 6f 72 20 61 20 73 74 72 69 6e 67 2e 20 20  r.or a string.  
37a0: 54 61 62 6c 65 73 20 6e 61 6d 65 73 20 74 68 61  Tables names tha
37b0: 74 20 62 65 67 69 6e 20 77 69 74 68 20 22 3c 62  t begin with "<b
37c0: 3e 73 71 6c 69 74 65 5f 3c 2f 62 3e 22 20 61 72  >sqlite_</b>" ar
37d0: 65 20 72 65 73 65 72 76 65 64 0a 66 6f 72 20 75  e reserved.for u
37e0: 73 65 20 62 79 20 74 68 65 20 65 6e 67 69 6e 65  se by the engine
37f0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68 20 63  .</p>..<p>Each c
3800: 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e  olumn definition
3810: 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
3820: 74 68 65 20 63 6f 6c 75 6d 6e 20 66 6f 6c 6c 6f  the column follo
3830: 77 65 64 20 62 79 20 74 68 65 0a 64 61 74 61 74  wed by the.datat
3840: 79 70 65 20 66 6f 72 20 74 68 61 74 20 63 6f 6c  ype for that col
3850: 75 6d 6e 2c 20 74 68 65 6e 20 6f 6e 65 20 6f 72  umn, then one or
3860: 20 6d 6f 72 65 20 6f 70 74 69 6f 6e 61 6c 20 63   more optional c
3870: 6f 6c 75 6d 6e 20 63 6f 6e 73 74 72 61 69 6e 74  olumn constraint
3880: 73 2e 0a 54 68 65 20 64 61 74 61 74 79 70 65 20  s..The datatype 
3890: 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20 64  for the column d
38a0: 6f 65 73 20 6e 6f 74 20 72 65 73 74 72 69 63 74  oes not restrict
38b0: 20 77 68 61 74 20 64 61 74 61 20 6d 61 79 20 62   what data may b
38c0: 65 20 70 75 74 0a 69 6e 20 74 68 61 74 20 63 6f  e put.in that co
38d0: 6c 75 6d 6e 2e 0a 53 65 65 20 3c 61 20 68 72 65  lumn..See <a hre
38e0: 66 3d 22 64 61 74 61 74 79 70 65 33 2e 68 74 6d  f="datatype3.htm
38f0: 6c 22 3e 44 61 74 61 74 79 70 65 73 20 49 6e 20  l">Datatypes In 
3900: 53 51 4c 69 74 65 20 56 65 72 73 69 6f 6e 20 33  SQLite Version 3
3910: 3c 2f 61 3e 20 66 6f 72 0a 61 64 64 69 74 69 6f  </a> for.additio
3920: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  nal information.
3930: 0a 54 68 65 20 55 4e 49 51 55 45 20 63 6f 6e 73  .The UNIQUE cons
3940: 74 72 61 69 6e 74 20 63 61 75 73 65 73 20 61 6e  traint causes an
3950: 20 69 6e 64 65 78 20 74 6f 20 62 65 20 63 72 65   index to be cre
3960: 61 74 65 64 20 6f 6e 20 74 68 65 20 73 70 65 63  ated on the spec
3970: 69 66 69 65 64 0a 63 6f 6c 75 6d 6e 73 2e 20 20  ified.columns.  
3980: 54 68 69 73 20 69 6e 64 65 78 20 6d 75 73 74 20  This index must 
3990: 63 6f 6e 74 61 69 6e 20 75 6e 69 71 75 65 20 6b  contain unique k
39a0: 65 79 73 2e 0a 54 68 65 20 44 45 46 41 55 4c 54  eys..The DEFAULT
39b0: 20 63 6f 6e 73 74 72 61 69 6e 74 0a 73 70 65 63   constraint.spec
39c0: 69 66 69 65 73 20 61 20 64 65 66 61 75 6c 74 20  ifies a default 
39d0: 76 61 6c 75 65 20 74 6f 20 75 73 65 20 77 68 65  value to use whe
39e0: 6e 20 64 6f 69 6e 67 20 61 6e 20 49 4e 53 45 52  n doing an INSER
39f0: 54 2e 0a 54 68 65 20 43 4f 4c 4c 41 54 45 20 63  T..The COLLATE c
3a00: 6c 61 75 73 65 20 73 70 65 63 69 66 69 65 73 20  lause specifies 
3a10: 77 68 61 74 20 74 65 78 74 20 63 6f 6c 6c 61 74  what text collat
3a20: 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20  ing function to 
3a30: 75 73 65 0a 77 68 65 6e 20 63 6f 6d 70 61 72 69  use.when compari
3a40: 6e 67 20 74 65 78 74 20 65 6e 74 72 69 65 73 20  ng text entries 
3a50: 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 2e 20  for the column. 
3a60: 20 54 68 65 20 62 75 69 6c 74 2d 69 6e 20 42 49   The built-in BI
3a70: 4e 41 52 59 0a 63 6f 6c 6c 61 74 69 6e 67 20 66  NARY.collating f
3a80: 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20  unction is used 
3a90: 62 79 20 64 65 66 61 75 6c 74 2e 0a 3c 2f 70 3e  by default..</p>
3aa0: 0a 0a 3c 70 3e 53 70 65 63 69 66 79 69 6e 67 20  ..<p>Specifying 
3ab0: 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6e 6f  a PRIMARY KEY no
3ac0: 72 6d 61 6c 6c 79 20 6a 75 73 74 20 63 72 65 61  rmally just crea
3ad0: 74 65 73 20 61 20 55 4e 49 51 55 45 20 69 6e 64  tes a UNIQUE ind
3ae0: 65 78 0a 6f 6e 20 74 68 65 20 70 72 69 6d 61 72  ex.on the primar
3af0: 79 20 6b 65 79 2e 20 20 48 6f 77 65 76 65 72 2c  y key.  However,
3b00: 20 69 66 20 70 72 69 6d 61 72 79 20 6b 65 79 20   if primary key 
3b10: 69 73 20 6f 6e 20 61 20 73 69 6e 67 6c 65 20 63  is on a single c
3b20: 6f 6c 75 6d 6e 0a 74 68 61 74 20 68 61 73 20 64  olumn.that has d
3b30: 61 74 61 74 79 70 65 20 49 4e 54 45 47 45 52 2c  atatype INTEGER,
3b40: 20 74 68 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d   then that colum
3b50: 6e 20 69 73 20 75 73 65 64 20 69 6e 74 65 72 6e  n is used intern
3b60: 61 6c 6c 79 0a 61 73 20 74 68 65 20 61 63 74 75  ally.as the actu
3b70: 61 6c 20 6b 65 79 20 6f 66 20 74 68 65 20 42 2d  al key of the B-
3b80: 54 72 65 65 20 66 6f 72 20 74 68 65 20 74 61 62  Tree for the tab
3b90: 6c 65 2e 20 20 54 68 69 73 20 6d 65 61 6e 73 20  le.  This means 
3ba0: 74 68 61 74 20 74 68 65 20 63 6f 6c 75 6d 6e 0a  that the column.
3bb0: 6d 61 79 20 6f 6e 6c 79 20 68 6f 6c 64 20 75 6e  may only hold un
3bc0: 69 71 75 65 20 69 6e 74 65 67 65 72 20 76 61 6c  ique integer val
3bd0: 75 65 73 2e 20 20 28 45 78 63 65 70 74 20 66 6f  ues.  (Except fo
3be0: 72 20 74 68 69 73 20 6f 6e 65 20 63 61 73 65 2c  r this one case,
3bf0: 0a 53 51 4c 69 74 65 20 69 67 6e 6f 72 65 73 20  .SQLite ignores 
3c00: 74 68 65 20 64 61 74 61 74 79 70 65 20 73 70 65  the datatype spe
3c10: 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 63 6f  cification of co
3c20: 6c 75 6d 6e 73 20 61 6e 64 20 61 6c 6c 6f 77 73  lumns and allows
3c30: 0a 61 6e 79 20 6b 69 6e 64 20 6f 66 20 64 61 74  .any kind of dat
3c40: 61 20 74 6f 20 62 65 20 70 75 74 20 69 6e 20 61  a to be put in a
3c50: 20 63 6f 6c 75 6d 6e 20 72 65 67 61 72 64 6c 65   column regardle
3c60: 73 73 20 6f 66 20 69 74 73 20 64 65 63 6c 61 72  ss of its declar
3c70: 65 64 0a 64 61 74 61 74 79 70 65 2e 29 20 20 49  ed.datatype.)  I
3c80: 66 20 61 20 74 61 62 6c 65 20 64 6f 65 73 20 6e  f a table does n
3c90: 6f 74 20 68 61 76 65 20 61 6e 20 49 4e 54 45 47  ot have an INTEG
3ca0: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63  ER PRIMARY KEY c
3cb0: 6f 6c 75 6d 6e 2c 0a 74 68 65 6e 20 74 68 65 20  olumn,.then the 
3cc0: 42 2d 54 72 65 65 20 6b 65 79 20 77 69 6c 6c 20  B-Tree key will 
3cd0: 62 65 20 61 20 61 75 74 6f 6d 61 74 69 63 61 6c  be a automatical
3ce0: 6c 79 20 67 65 6e 65 72 61 74 65 64 20 69 6e 74  ly generated int
3cf0: 65 67 65 72 2e 20 20 54 68 65 0a 42 2d 54 72 65  eger.  The.B-Tre
3d00: 65 20 6b 65 79 20 66 6f 72 20 61 20 72 6f 77 20  e key for a row 
3d10: 63 61 6e 20 61 6c 77 61 79 73 20 62 65 20 61 63  can always be ac
3d20: 63 65 73 73 65 64 20 75 73 69 6e 67 20 6f 6e 65  cessed using one
3d30: 20 6f 66 20 74 68 65 0a 73 70 65 63 69 61 6c 20   of the.special 
3d40: 6e 61 6d 65 73 20 22 3c 62 3e 52 4f 57 49 44 3c  names "<b>ROWID<
3d50: 2f 62 3e 22 2c 20 22 3c 62 3e 4f 49 44 3c 2f 62  /b>", "<b>OID</b
3d60: 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49  >", or "<b>_ROWI
3d70: 44 5f 3c 2f 62 3e 22 2e 0a 54 68 69 73 20 69 73  D_</b>"..This is
3d80: 20 74 72 75 65 20 72 65 67 61 72 64 6c 65 73 73   true regardless
3d90: 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e   of whether or n
3da0: 6f 74 20 74 68 65 72 65 20 69 73 20 61 6e 20 49  ot there is an I
3db0: 4e 54 45 47 45 52 0a 50 52 49 4d 41 52 59 20 4b  NTEGER.PRIMARY K
3dc0: 45 59 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74  EY.</p>..<p>If t
3dd0: 68 65 20 22 54 45 4d 50 22 20 6f 72 20 22 54 45  he "TEMP" or "TE
3de0: 4d 50 4f 52 41 52 59 22 20 6b 65 79 77 6f 72 64  MPORARY" keyword
3df0: 20 6f 63 63 75 72 73 20 69 6e 20 62 65 74 77 65   occurs in betwe
3e00: 65 6e 20 22 43 52 45 41 54 45 22 0a 61 6e 64 20  en "CREATE".and 
3e10: 22 54 41 42 4c 45 22 20 74 68 65 6e 20 74 68 65  "TABLE" then the
3e20: 20 74 61 62 6c 65 20 74 68 61 74 20 69 73 20 63   table that is c
3e30: 72 65 61 74 65 64 20 69 73 20 6f 6e 6c 79 20 76  reated is only v
3e40: 69 73 69 62 6c 65 20 74 6f 20 74 68 65 0a 70 72  isible to the.pr
3e50: 6f 63 65 73 73 20 74 68 61 74 20 6f 70 65 6e 65  ocess that opene
3e60: 64 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  d the database a
3e70: 6e 64 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61  nd is automatica
3e80: 6c 6c 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e  lly deleted when
3e90: 0a 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73  .the database is
3ea0: 20 63 6c 6f 73 65 64 2e 20 20 41 6e 79 20 69 6e   closed.  Any in
3eb0: 64 69 63 65 73 20 63 72 65 61 74 65 64 20 6f 6e  dices created on
3ec0: 20 61 20 74 65 6d 70 6f 72 61 72 79 20 74 61 62   a temporary tab
3ed0: 6c 65 0a 61 72 65 20 61 6c 73 6f 20 74 65 6d 70  le.are also temp
3ee0: 6f 72 61 72 79 2e 20 20 54 65 6d 70 6f 72 61 72  orary.  Temporar
3ef0: 79 20 74 61 62 6c 65 73 20 61 6e 64 20 69 6e 64  y tables and ind
3f00: 69 63 65 73 20 61 72 65 20 73 74 6f 72 65 64 20  ices are stored 
3f10: 69 6e 20 61 0a 73 65 70 61 72 61 74 65 20 66 69  in a.separate fi
3f20: 6c 65 20 64 69 73 74 69 6e 63 74 20 66 72 6f 6d  le distinct from
3f30: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
3f40: 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70  se file.</p>..<p
3f50: 3e 20 49 66 20 61 20 3c 64 61 74 61 62 61 73 65  > If a <database
3f60: 2d 6e 61 6d 65 3e 20 69 73 20 73 70 65 63 69 66  -name> is specif
3f70: 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20 74 61  ied, then the ta
3f80: 62 6c 65 20 69 73 20 63 72 65 61 74 65 64 20 69  ble is created i
3f90: 6e 20 0a 74 68 65 20 6e 61 6d 65 64 20 64 61 74  n .the named dat
3fa0: 61 62 61 73 65 2e 20 49 74 20 69 73 20 61 6e 20  abase. It is an 
3fb0: 65 72 72 6f 72 20 74 6f 20 73 70 65 63 69 66 79  error to specify
3fc0: 20 62 6f 74 68 20 61 20 3c 64 61 74 61 62 61 73   both a <databas
3fd0: 65 2d 6e 61 6d 65 3e 0a 61 6e 64 20 74 68 65 20  e-name>.and the 
3fe0: 54 45 4d 50 20 6b 65 79 77 6f 72 64 2c 20 75 6e  TEMP keyword, un
3ff0: 6c 65 73 73 20 74 68 65 20 3c 64 61 74 61 62 61  less the <databa
4000: 73 65 2d 6e 61 6d 65 3e 20 69 73 20 22 74 65 6d  se-name> is "tem
4010: 70 22 2e 20 49 66 20 6e 6f 0a 64 61 74 61 62 61  p". If no.databa
4020: 73 65 20 6e 61 6d 65 20 69 73 20 73 70 65 63 69  se name is speci
4030: 66 69 65 64 2c 20 61 6e 64 20 74 68 65 20 54 45  fied, and the TE
4040: 4d 50 20 6b 65 79 77 6f 72 64 20 69 73 20 6e 6f  MP keyword is no
4050: 74 20 70 72 65 73 65 6e 74 2c 0a 74 68 65 20 74  t present,.the t
4060: 61 62 6c 65 20 69 73 20 63 72 65 61 74 65 64 20  able is created 
4070: 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61  in the main data
4080: 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  base.</p>..<p>Th
4090: 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c  e optional confl
40a0: 69 63 74 2d 63 6c 61 75 73 65 20 66 6f 6c 6c 6f  ict-clause follo
40b0: 77 69 6e 67 20 65 61 63 68 20 63 6f 6e 73 74 72  wing each constr
40c0: 61 69 6e 74 0a 61 6c 6c 6f 77 73 20 74 68 65 20  aint.allows the 
40d0: 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66  specification of
40e0: 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 20   an alternative 
40f0: 64 65 66 61 75 6c 74 0a 63 6f 6e 73 74 72 61 69  default.constrai
4100: 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  nt conflict reso
4110: 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
4120: 20 66 6f 72 20 74 68 61 74 20 63 6f 6e 73 74 72   for that constr
4130: 61 69 6e 74 2e 0a 54 68 65 20 64 65 66 61 75 6c  aint..The defaul
4140: 74 20 69 73 20 61 62 6f 72 74 20 41 42 4f 52 54  t is abort ABORT
4150: 2e 20 20 44 69 66 66 65 72 65 6e 74 20 63 6f 6e  .  Different con
4160: 73 74 72 61 69 6e 74 73 20 77 69 74 68 69 6e 20  straints within 
4170: 74 68 65 20 73 61 6d 65 0a 74 61 62 6c 65 20 6d  the same.table m
4180: 61 79 20 68 61 76 65 20 64 69 66 66 65 72 65 6e  ay have differen
4190: 74 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 6c 69  t default confli
41a0: 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
41b0: 67 6f 72 69 74 68 6d 73 2e 0a 49 66 20 61 6e 20  gorithms..If an 
41c0: 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c 20 6f 72  COPY, INSERT, or
41d0: 20 55 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64 20   UPDATE command 
41e0: 73 70 65 63 69 66 69 65 73 20 61 20 64 69 66 66  specifies a diff
41f0: 65 72 65 6e 74 20 63 6f 6e 66 6c 69 63 74 0a 72  erent conflict.r
4200: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
4210: 74 68 6d 2c 20 74 68 65 6e 20 74 68 61 74 20 61  thm, then that a
4220: 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64  lgorithm is used
4230: 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65   in place of the
4240: 0a 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74  .default algorit
4250: 68 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e 20  hm specified in 
4260: 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45  the CREATE TABLE
4270: 20 73 74 61 74 65 6d 65 6e 74 2e 0a 53 65 65 20   statement..See 
4280: 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c  the section titl
4290: 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e  ed.<a href="#con
42a0: 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49  flict">ON CONFLI
42b0: 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74  CT</a> for addit
42c0: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
42d0: 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 43 48 45 43 4b  n.</p>..<p>CHECK
42e0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61 72 65   constraints are
42f0: 20 69 67 6e 6f 72 65 64 20 69 6e 20 74 68 65 20   ignored in the 
4300: 63 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e  current implemen
4310: 74 61 74 69 6f 6e 2e 0a 53 75 70 70 6f 72 74 20  tation..Support 
4320: 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e 73 74 72  for CHECK constr
4330: 61 69 6e 74 73 20 6d 61 79 20 62 65 20 61 64 64  aints may be add
4340: 65 64 20 69 6e 20 74 68 65 20 66 75 74 75 72 65  ed in the future
4350: 2e 20 20 41 73 20 6f 66 0a 76 65 72 73 69 6f 6e  .  As of.version
4360: 20 32 2e 33 2e 30 2c 20 4e 4f 54 20 4e 55 4c 4c   2.3.0, NOT NULL
4370: 2c 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 61  , PRIMARY KEY, a
4380: 6e 64 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72  nd UNIQUE constr
4390: 61 69 6e 74 73 20 61 6c 6c 0a 77 6f 72 6b 2e 3c  aints all.work.<
43a0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72  /p>..<p>There ar
43b0: 65 20 6e 6f 20 61 72 62 69 74 72 61 72 79 20 6c  e no arbitrary l
43c0: 69 6d 69 74 73 20 6f 6e 20 74 68 65 20 6e 75 6d  imits on the num
43d0: 62 65 72 0a 6f 66 20 63 6f 6c 75 6d 6e 73 20 6f  ber.of columns o
43e0: 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  r on the number 
43f0: 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 69  of constraints i
4400: 6e 20 61 20 74 61 62 6c 65 2e 0a 54 68 65 20 74  n a table..The t
4410: 6f 74 61 6c 20 61 6d 6f 75 6e 74 20 6f 66 20 64  otal amount of d
4420: 61 74 61 20 69 6e 20 61 20 73 69 6e 67 6c 65 20  ata in a single 
4430: 72 6f 77 20 69 73 20 6c 69 6d 69 74 65 64 20 74  row is limited t
4440: 6f 20 61 62 6f 75 74 0a 31 20 6d 65 67 61 62 79  o about.1 megaby
4450: 74 65 73 20 69 6e 20 76 65 72 73 69 6f 6e 20 32  tes in version 2
4460: 2e 38 2e 20 20 49 6e 20 76 65 72 73 69 6f 6e 20  .8.  In version 
4470: 33 2e 30 20 74 68 65 72 65 20 69 73 20 6e 6f 20  3.0 there is no 
4480: 61 72 62 69 74 72 61 72 79 0a 6c 69 6d 69 74 20  arbitrary.limit 
4490: 6f 6e 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66  on the amount of
44a0: 20 64 61 74 61 20 69 6e 20 61 20 72 6f 77 2e 3c   data in a row.<
44b0: 2f 70 3e 0a 0a 0a 3c 70 3e 54 68 65 20 43 52 45  /p>...<p>The CRE
44c0: 41 54 45 20 54 41 42 4c 45 20 41 53 20 66 6f 72  ATE TABLE AS for
44d0: 6d 20 64 65 66 69 6e 65 73 20 74 68 65 20 74 61  m defines the ta
44e0: 62 6c 65 20 74 6f 20 62 65 0a 74 68 65 20 72 65  ble to be.the re
44f0: 73 75 6c 74 20 73 65 74 20 6f 66 20 61 20 71 75  sult set of a qu
4500: 65 72 79 2e 20 20 54 68 65 20 6e 61 6d 65 73 20  ery.  The names 
4510: 6f 66 20 74 68 65 20 74 61 62 6c 65 20 63 6f 6c  of the table col
4520: 75 6d 6e 73 20 61 72 65 0a 74 68 65 20 6e 61 6d  umns are.the nam
4530: 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e  es of the column
4540: 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e  s in the result.
4550: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 65 78 61  </p>..<p>The exa
4560: 63 74 20 74 65 78 74 0a 6f 66 20 65 61 63 68 20  ct text.of each 
4570: 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61  CREATE TABLE sta
4580: 74 65 6d 65 6e 74 20 69 73 20 73 74 6f 72 65 64  tement is stored
4590: 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74   in the <b>sqlit
45a0: 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 74 61 62  e_master</b>.tab
45b0: 6c 65 2e 20 20 45 76 65 72 79 74 69 6d 65 20 74  le.  Everytime t
45c0: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f  he database is o
45d0: 70 65 6e 65 64 2c 20 61 6c 6c 20 43 52 45 41 54  pened, all CREAT
45e0: 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  E TABLE statemen
45f0: 74 73 0a 61 72 65 20 72 65 61 64 20 66 72 6f 6d  ts.are read from
4600: 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d   the <b>sqlite_m
4610: 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 20  aster</b> table 
4620: 61 6e 64 20 75 73 65 64 20 74 6f 20 72 65 67 65  and used to rege
4630: 6e 65 72 61 74 65 0a 53 51 4c 69 74 65 27 73 20  nerate.SQLite's 
4640: 69 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73 65  internal represe
4650: 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74  ntation of the t
4660: 61 62 6c 65 20 6c 61 79 6f 75 74 2e 0a 49 66 20  able layout..If 
4670: 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d  the original com
4680: 6d 61 6e 64 20 77 61 73 20 61 20 43 52 45 41 54  mand was a CREAT
4690: 45 20 54 41 42 4c 45 20 41 53 20 74 68 65 6e 20  E TABLE AS then 
46a0: 74 68 65 6e 20 61 6e 20 65 71 75 69 76 61 6c 65  then an equivale
46b0: 6e 74 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20  nt.CREATE TABLE 
46c0: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73 79 6e  statement is syn
46d0: 74 68 65 73 69 7a 65 64 20 61 6e 64 20 73 74 6f  thesized and sto
46e0: 72 65 20 69 6e 20 3c 62 3e 73 71 6c 69 74 65 5f  re in <b>sqlite_
46f0: 6d 61 73 74 65 72 3c 2f 62 3e 0a 69 6e 20 70 6c  master</b>.in pl
4700: 61 63 65 20 6f 66 20 74 68 65 20 6f 72 69 67 69  ace of the origi
4710: 6e 61 6c 20 63 6f 6d 6d 61 6e 64 2e 0a 54 68 65  nal command..The
4720: 20 74 65 78 74 20 6f 66 20 43 52 45 41 54 45 20   text of CREATE 
4730: 54 45 4d 50 4f 52 41 52 59 20 54 41 42 4c 45 20  TEMPORARY TABLE 
4740: 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 73  statements are s
4750: 74 6f 72 65 64 20 69 6e 20 74 68 65 0a 3c 62 3e  tored in the.<b>
4760: 73 71 6c 69 74 65 5f 74 65 6d 70 5f 6d 61 73 74  sqlite_temp_mast
4770: 65 72 3c 2f 62 3e 20 74 61 62 6c 65 2e 0a 3c 2f  er</b> table..</
4780: 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65 73 20 61 72  p>..<p>Tables ar
4790: 65 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20  e removed using 
47a0: 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 64 72  the <a href="#dr
47b0: 6f 70 74 61 62 6c 65 22 3e 44 52 4f 50 20 54 41  optable">DROP TA
47c0: 42 4c 45 3c 2f 61 3e 20 0a 73 74 61 74 65 6d 65  BLE</a> .stateme
47d0: 6e 74 2e 20 20 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  nt.  </p>.}...Se
47e0: 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 54 52  ction {CREATE TR
47f0: 49 47 47 45 52 7d 20 63 72 65 61 74 65 74 72 69  IGGER} createtri
4800: 67 67 65 72 0a 0a 53 79 6e 74 61 78 20 7b 73 71  gger..Syntax {sq
4810: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43  l-statement} {.C
4820: 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45  REATE [TEMP | TE
4830: 4d 50 4f 52 41 52 59 5d 20 54 52 49 47 47 45 52  MPORARY] TRIGGER
4840: 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65 3e 20   <trigger-name> 
4850: 5b 20 42 45 46 4f 52 45 20 7c 20 41 46 54 45 52  [ BEFORE | AFTER
4860: 20 5d 0a 3c 64 61 74 61 62 61 73 65 2d 65 76 65   ].<database-eve
4870: 6e 74 3e 20 4f 4e 20 5b 3c 64 61 74 61 62 61 73  nt> ON [<databas
4880: 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c  e-name> .] <tabl
4890: 65 2d 6e 61 6d 65 3e 0a 3c 74 72 69 67 67 65 72  e-name>.<trigger
48a0: 2d 61 63 74 69 6f 6e 3e 0a 7d 0a 0a 53 79 6e 74  -action>.}..Synt
48b0: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
48c0: 74 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d  t} {.CREATE [TEM
48d0: 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20 54  P | TEMPORARY] T
48e0: 52 49 47 47 45 52 20 3c 74 72 69 67 67 65 72 2d  RIGGER <trigger-
48f0: 6e 61 6d 65 3e 20 49 4e 53 54 45 41 44 20 4f 46  name> INSTEAD OF
4900: 0a 3c 64 61 74 61 62 61 73 65 2d 65 76 65 6e 74  .<database-event
4910: 3e 20 4f 4e 20 5b 3c 64 61 74 61 62 61 73 65 2d  > ON [<database-
4920: 6e 61 6d 65 3e 20 2e 5d 20 3c 76 69 65 77 2d 6e  name> .] <view-n
4930: 61 6d 65 3e 0a 3c 74 72 69 67 67 65 72 2d 61 63  ame>.<trigger-ac
4940: 74 69 6f 6e 3e 0a 7d 0a 0a 53 79 6e 74 61 78 20  tion>.}..Syntax 
4950: 7b 64 61 74 61 62 61 73 65 2d 65 76 65 6e 74 7d  {database-event}
4960: 20 7b 0a 44 45 4c 45 54 45 20 7c 20 0a 49 4e 53   {.DELETE | .INS
4970: 45 52 54 20 7c 20 0a 55 50 44 41 54 45 20 7c 20  ERT | .UPDATE | 
4980: 0a 55 50 44 41 54 45 20 4f 46 20 3c 63 6f 6c 75  .UPDATE OF <colu
4990: 6d 6e 2d 6c 69 73 74 3e 0a 7d 0a 0a 53 79 6e 74  mn-list>.}..Synt
49a0: 61 78 20 7b 74 72 69 67 67 65 72 2d 61 63 74 69  ax {trigger-acti
49b0: 6f 6e 7d 20 7b 0a 5b 20 46 4f 52 20 45 41 43 48  on} {.[ FOR EACH
49c0: 20 52 4f 57 20 7c 20 46 4f 52 20 45 41 43 48 20   ROW | FOR EACH 
49d0: 53 54 41 54 45 4d 45 4e 54 20 5d 20 5b 20 57 48  STATEMENT ] [ WH
49e0: 45 4e 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20  EN <expression> 
49f0: 5d 20 0a 42 45 47 49 4e 20 0a 20 20 3c 74 72 69  ] .BEGIN .  <tri
4a00: 67 67 65 72 2d 73 74 65 70 3e 20 3b 20 5b 20 3c  gger-step> ; [ <
4a10: 74 72 69 67 67 65 72 2d 73 74 65 70 3e 20 3b 20  trigger-step> ; 
4a20: 5d 2a 0a 45 4e 44 0a 7d 0a 0a 53 79 6e 74 61 78  ]*.END.}..Syntax
4a30: 20 7b 74 72 69 67 67 65 72 2d 73 74 65 70 7d 20   {trigger-step} 
4a40: 7b 0a 3c 75 70 64 61 74 65 2d 73 74 61 74 65 6d  {.<update-statem
4a50: 65 6e 74 3e 20 7c 20 3c 69 6e 73 65 72 74 2d 73  ent> | <insert-s
4a60: 74 61 74 65 6d 65 6e 74 3e 20 7c 20 0a 3c 64 65  tatement> | .<de
4a70: 6c 65 74 65 2d 73 74 61 74 65 6d 65 6e 74 3e 20  lete-statement> 
4a80: 7c 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d  | <select-statem
4a90: 65 6e 74 3e 20 0a 7d 0a 0a 70 75 74 73 20 7b 0a  ent> .}..puts {.
4aa0: 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20 54 52  <p>The CREATE TR
4ab0: 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74 20  IGGER statement 
4ac0: 69 73 20 75 73 65 64 20 74 6f 20 61 64 64 20 74  is used to add t
4ad0: 72 69 67 67 65 72 73 20 74 6f 20 74 68 65 20 0a  riggers to the .
4ae0: 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 2e  database schema.
4af0: 20 54 72 69 67 67 65 72 73 20 61 72 65 20 64 61   Triggers are da
4b00: 74 61 62 61 73 65 20 6f 70 65 72 61 74 69 6f 6e  tabase operation
4b10: 73 20 28 74 68 65 20 3c 69 3e 74 72 69 67 67 65  s (the <i>trigge
4b20: 72 2d 61 63 74 69 6f 6e 3c 2f 69 3e 29 20 0a 74  r-action</i>) .t
4b30: 68 61 74 20 61 72 65 20 61 75 74 6f 6d 61 74 69  hat are automati
4b40: 63 61 6c 6c 79 20 70 65 72 66 6f 72 6d 65 64 20  cally performed 
4b50: 77 68 65 6e 20 61 20 73 70 65 63 69 66 69 65 64  when a specified
4b60: 20 64 61 74 61 62 61 73 65 20 65 76 65 6e 74 20   database event 
4b70: 28 74 68 65 0a 3c 69 3e 64 61 74 61 62 61 73 65  (the.<i>database
4b80: 2d 65 76 65 6e 74 3c 2f 69 3e 29 20 6f 63 63 75  -event</i>) occu
4b90: 72 73 2e 20 20 3c 2f 70 3e 0a 0a 3c 70 3e 41 20  rs.  </p>..<p>A 
4ba0: 74 72 69 67 67 65 72 20 6d 61 79 20 62 65 20 73  trigger may be s
4bb0: 70 65 63 69 66 69 65 64 20 74 6f 20 66 69 72 65  pecified to fire
4bc0: 20 77 68 65 6e 65 76 65 72 20 61 20 44 45 4c 45   whenever a DELE
4bd0: 54 45 2c 20 49 4e 53 45 52 54 20 6f 72 20 55 50  TE, INSERT or UP
4be0: 44 41 54 45 20 6f 66 20 61 0a 70 61 72 74 69 63  DATE of a.partic
4bf0: 75 6c 61 72 20 64 61 74 61 62 61 73 65 20 74 61  ular database ta
4c00: 62 6c 65 20 6f 63 63 75 72 73 2c 20 6f 72 20 77  ble occurs, or w
4c10: 68 65 6e 65 76 65 72 20 61 6e 20 55 50 44 41 54  henever an UPDAT
4c20: 45 20 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  E of one or more
4c30: 0a 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d  .specified colum
4c40: 6e 73 20 6f 66 20 61 20 74 61 62 6c 65 20 61 72  ns of a table ar
4c50: 65 20 75 70 64 61 74 65 64 2e 3c 2f 70 3e 0a 0a  e updated.</p>..
4c60: 3c 70 3e 41 74 20 74 68 69 73 20 74 69 6d 65 20  <p>At this time 
4c70: 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74 73 20  SQLite supports 
4c80: 6f 6e 6c 79 20 46 4f 52 20 45 41 43 48 20 52 4f  only FOR EACH RO
4c90: 57 20 74 72 69 67 67 65 72 73 2c 20 6e 6f 74 20  W triggers, not 
4ca0: 46 4f 52 20 45 41 43 48 0a 53 54 41 54 45 4d 45  FOR EACH.STATEME
4cb0: 4e 54 20 74 72 69 67 67 65 72 73 2e 20 48 65 6e  NT triggers. Hen
4cc0: 63 65 20 65 78 70 6c 69 63 69 74 6c 79 20 73 70  ce explicitly sp
4cd0: 65 63 69 66 79 69 6e 67 20 46 4f 52 20 45 41 43  ecifying FOR EAC
4ce0: 48 20 52 4f 57 20 69 73 20 6f 70 74 69 6f 6e 61  H ROW is optiona
4cf0: 6c 2e 20 20 46 4f 52 0a 45 41 43 48 20 52 4f 57  l.  FOR.EACH ROW
4d00: 20 69 6d 70 6c 69 65 73 20 74 68 61 74 20 74 68   implies that th
4d10: 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  e SQL statements
4d20: 20 73 70 65 63 69 66 69 65 64 20 61 73 20 3c 69   specified as <i
4d30: 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73 3c 2f  >trigger-steps</
4d40: 69 3e 20 0a 6d 61 79 20 62 65 20 65 78 65 63 75  i> .may be execu
4d50: 74 65 64 20 28 64 65 70 65 6e 64 69 6e 67 20 6f  ted (depending o
4d60: 6e 20 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73  n the WHEN claus
4d70: 65 29 20 66 6f 72 20 65 61 63 68 20 64 61 74 61  e) for each data
4d80: 62 61 73 65 20 72 6f 77 20 62 65 69 6e 67 0a 69  base row being.i
4d90: 6e 73 65 72 74 65 64 2c 20 75 70 64 61 74 65 64  nserted, updated
4da0: 20 6f 72 20 64 65 6c 65 74 65 64 20 62 79 20 74   or deleted by t
4db0: 68 65 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75  he statement cau
4dc0: 73 69 6e 67 20 74 68 65 20 74 72 69 67 67 65 72  sing the trigger
4dd0: 20 74 6f 20 66 69 72 65 2e 3c 2f 70 3e 0a 0a 3c   to fire.</p>..<
4de0: 70 3e 42 6f 74 68 20 74 68 65 20 57 48 45 4e 20  p>Both the WHEN 
4df0: 63 6c 61 75 73 65 20 61 6e 64 20 74 68 65 20 3c  clause and the <
4e00: 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73 3c  i>trigger-steps<
4e10: 2f 69 3e 20 6d 61 79 20 61 63 63 65 73 73 20 65  /i> may access e
4e20: 6c 65 6d 65 6e 74 73 20 6f 66 20 0a 74 68 65 20  lements of .the 
4e30: 72 6f 77 20 62 65 69 6e 67 20 69 6e 73 65 72 74  row being insert
4e40: 65 64 2c 20 64 65 6c 65 74 65 64 20 6f 72 20 75  ed, deleted or u
4e50: 70 64 61 74 65 64 20 75 73 69 6e 67 20 72 65 66  pdated using ref
4e60: 65 72 65 6e 63 65 73 20 6f 66 20 74 68 65 20 66  erences of the f
4e70: 6f 72 6d 20 0a 22 4e 45 57 2e 3c 69 3e 63 6f 6c  orm ."NEW.<i>col
4e80: 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 20 61 6e  umn-name</i>" an
4e90: 64 20 22 4f 4c 44 2e 3c 69 3e 63 6f 6c 75 6d 6e  d "OLD.<i>column
4ea0: 2d 6e 61 6d 65 3c 2f 69 3e 22 2c 20 77 68 65 72  -name</i>", wher
4eb0: 65 0a 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65  e.<i>column-name
4ec0: 3c 2f 69 3e 20 69 73 20 74 68 65 20 6e 61 6d 65  </i> is the name
4ed0: 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 66 72 6f   of a column fro
4ee0: 6d 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  m the table that
4ef0: 20 74 68 65 20 74 72 69 67 67 65 72 0a 69 73 20   the trigger.is 
4f00: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 2e  associated with.
4f10: 20 4f 4c 44 20 61 6e 64 20 4e 45 57 20 72 65 66   OLD and NEW ref
4f20: 65 72 65 6e 63 65 73 20 6d 61 79 20 6f 6e 6c 79  erences may only
4f30: 20 62 65 20 75 73 65 64 20 69 6e 20 74 72 69 67   be used in trig
4f40: 67 65 72 73 20 6f 6e 0a 3c 69 3e 74 72 69 67 67  gers on.<i>trigg
4f50: 65 72 2d 65 76 65 6e 74 3c 2f 69 3e 73 20 66 6f  er-event</i>s fo
4f60: 72 20 77 68 69 63 68 20 74 68 65 79 20 61 72 65  r which they are
4f70: 20 72 65 6c 65 76 61 6e 74 2c 20 61 73 20 66 6f   relevant, as fo
4f80: 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 74 61 62  llows:</p>..<tab
4f90: 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c  le border=0 cell
4fa0: 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e  padding=10>.<tr>
4fb0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
4fc0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  " align="right" 
4fd0: 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 49 4e 53  width=120><i>INS
4fe0: 45 52 54 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64  ERT</i></td>.<td
4ff0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4e 45   valign="top">NE
5000: 57 20 72 65 66 65 72 65 6e 63 65 73 20 61 72 65  W references are
5010: 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72   valid</td>.</tr
5020: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  >.<tr>.<td valig
5030: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
5040: 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e  ight" width=120>
5050: 3c 69 3e 55 50 44 41 54 45 3c 2f 69 3e 3c 2f 74  <i>UPDATE</i></t
5060: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
5070: 6f 70 22 3e 4e 45 57 20 61 6e 64 20 4f 4c 44 20  op">NEW and OLD 
5080: 72 65 66 65 72 65 6e 63 65 73 20 61 72 65 20 76  references are v
5090: 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  alid</td>.</tr>.
50a0: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
50b0: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
50c0: 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69  ht" width=120><i
50d0: 3e 44 45 4c 45 54 45 3c 2f 69 3e 3c 2f 74 64 3e  >DELETE</i></td>
50e0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
50f0: 22 3e 4f 4c 44 20 72 65 66 65 72 65 6e 63 65 73  ">OLD references
5100: 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a   are valid</td>.
5110: 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c  </tr>.</table>.<
5120: 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 20 57 48 45  /p>..<p>If a WHE
5130: 4e 20 63 6c 61 75 73 65 20 69 73 20 73 75 70 70  N clause is supp
5140: 6c 69 65 64 2c 20 74 68 65 20 53 51 4c 20 73 74  lied, the SQL st
5150: 61 74 65 6d 65 6e 74 73 20 73 70 65 63 69 66 69  atements specifi
5160: 65 64 20 61 73 20 3c 69 3e 74 72 69 67 67 65 72  ed as <i>trigger
5170: 2d 73 74 65 70 73 3c 2f 69 3e 20 61 72 65 20 6f  -steps</i> are o
5180: 6e 6c 79 20 65 78 65 63 75 74 65 64 20 66 6f 72  nly executed for
5190: 20 72 6f 77 73 20 66 6f 72 20 77 68 69 63 68 20   rows for which 
51a0: 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73 65 20  the WHEN clause 
51b0: 69 73 20 74 72 75 65 2e 20 49 66 20 6e 6f 20 57  is true. If no W
51c0: 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20 73 75  HEN clause is su
51d0: 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51 4c 20  pplied, the SQL 
51e0: 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 65  statements are e
51f0: 78 65 63 75 74 65 64 20 66 6f 72 20 61 6c 6c 20  xecuted for all 
5200: 72 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  rows.</p>..<p>Th
5210: 65 20 73 70 65 63 69 66 69 65 64 20 3c 69 3e 74  e specified <i>t
5220: 72 69 67 67 65 72 2d 74 69 6d 65 3c 2f 69 3e 20  rigger-time</i> 
5230: 64 65 74 65 72 6d 69 6e 65 73 20 77 68 65 6e 20  determines when 
5240: 74 68 65 20 3c 69 3e 74 72 69 67 67 65 72 2d 73  the <i>trigger-s
5250: 74 65 70 73 3c 2f 69 3e 0a 77 69 6c 6c 20 62 65  teps</i>.will be
5260: 20 65 78 65 63 75 74 65 64 20 72 65 6c 61 74 69   executed relati
5270: 76 65 20 74 6f 20 74 68 65 20 69 6e 73 65 72 74  ve to the insert
5280: 69 6f 6e 2c 20 6d 6f 64 69 66 69 63 61 74 69 6f  ion, modificatio
5290: 6e 20 6f 72 20 72 65 6d 6f 76 61 6c 20 6f 66 20  n or removal of 
52a0: 74 68 65 0a 61 73 73 6f 63 69 61 74 65 64 20 72  the.associated r
52b0: 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6e 20 4f  ow.</p>..<p>An O
52c0: 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73  N CONFLICT claus
52d0: 65 20 6d 61 79 20 62 65 20 73 70 65 63 69 66 69  e may be specifi
52e0: 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 61 6e  ed as part of an
52f0: 20 55 50 44 41 54 45 20 6f 72 20 49 4e 53 45 52   UPDATE or INSER
5300: 54 0a 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65  T.<i>trigger-ste
5310: 70 3c 2f 69 3e 2e 20 48 6f 77 65 76 65 72 20 69  p</i>. However i
5320: 66 20 61 6e 20 4f 4e 20 43 4f 4e 46 4c 49 43 54  f an ON CONFLICT
5330: 20 63 6c 61 75 73 65 20 69 73 20 73 70 65 63 69   clause is speci
5340: 66 69 65 64 20 61 73 20 70 61 72 74 20 6f 66 20  fied as part of 
5350: 0a 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 63  .the statement c
5360: 61 75 73 69 6e 67 20 74 68 65 20 74 72 69 67 67  ausing the trigg
5370: 65 72 20 74 6f 20 66 69 72 65 2c 20 74 68 65 6e  er to fire, then
5380: 20 74 68 69 73 20 63 6f 6e 66 6c 69 63 74 20 68   this conflict h
5390: 61 6e 64 6c 69 6e 67 0a 70 6f 6c 69 63 79 20 69  andling.policy i
53a0: 73 20 75 73 65 64 20 69 6e 73 74 65 61 64 2e 3c  s used instead.<
53b0: 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65 72 73  /p>..<p>Triggers
53c0: 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c   are automatical
53d0: 6c 79 20 64 72 6f 70 70 65 64 20 77 68 65 6e 20  ly dropped when 
53e0: 74 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 74  the table that t
53f0: 68 65 79 20 61 72 65 20 0a 61 73 73 6f 63 69 61  hey are .associa
5400: 74 65 64 20 77 69 74 68 20 69 73 20 64 72 6f 70  ted with is drop
5410: 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69  ped.</p>..<p>Tri
5420: 67 67 65 72 73 20 6d 61 79 20 62 65 20 63 72 65  ggers may be cre
5430: 61 74 65 64 20 6f 6e 20 76 69 65 77 73 2c 20 61  ated on views, a
5440: 73 20 77 65 6c 6c 20 61 73 20 6f 72 64 69 6e 61  s well as ordina
5450: 72 79 20 74 61 62 6c 65 73 2c 20 62 79 20 73 70  ry tables, by sp
5460: 65 63 69 66 79 69 6e 67 0a 49 4e 53 54 45 41 44  ecifying.INSTEAD
5470: 20 4f 46 20 69 6e 20 74 68 65 20 43 52 45 41 54   OF in the CREAT
5480: 45 20 54 52 49 47 47 45 52 20 73 74 61 74 65 6d  E TRIGGER statem
5490: 65 6e 74 2e 20 49 66 20 6f 6e 65 20 6f 72 20 6d  ent. If one or m
54a0: 6f 72 65 20 4f 4e 20 49 4e 53 45 52 54 2c 20 4f  ore ON INSERT, O
54b0: 4e 20 44 45 4c 45 54 45 0a 6f 72 20 4f 4e 20 55  N DELETE.or ON U
54c0: 50 44 41 54 45 20 74 72 69 67 67 65 72 73 20 61  PDATE triggers a
54d0: 72 65 20 64 65 66 69 6e 65 64 20 6f 6e 20 61 20  re defined on a 
54e0: 76 69 65 77 2c 20 74 68 65 6e 20 69 74 20 69 73  view, then it is
54f0: 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 20 74 6f   not an error to
5500: 20 65 78 65 63 75 74 65 0a 61 6e 20 49 4e 53 45   execute.an INSE
5510: 52 54 2c 20 44 45 4c 45 54 45 20 6f 72 20 55 50  RT, DELETE or UP
5520: 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20 6f  DATE statement o
5530: 6e 20 74 68 65 20 76 69 65 77 2c 20 72 65 73 70  n the view, resp
5540: 65 63 74 69 76 65 6c 79 2e 20 54 68 65 72 65 61  ectively. Therea
5550: 66 74 65 72 2c 0a 65 78 65 63 75 74 69 6e 67 20  fter,.executing 
5560: 61 6e 20 49 4e 53 45 52 54 2c 20 44 45 4c 45 54  an INSERT, DELET
5570: 45 20 6f 72 20 55 50 44 41 54 45 20 6f 6e 20 74  E or UPDATE on t
5580: 68 65 20 76 69 65 77 20 63 61 75 73 65 73 20 74  he view causes t
5590: 68 65 20 61 73 73 6f 63 69 61 74 65 64 0a 20 20  he associated.  
55a0: 74 72 69 67 67 65 72 73 20 74 6f 20 66 69 72 65  triggers to fire
55b0: 2e 20 54 68 65 20 72 65 61 6c 20 74 61 62 6c 65  . The real table
55c0: 73 20 75 6e 64 65 72 6c 79 69 6e 67 20 74 68 65  s underlying the
55d0: 20 76 69 65 77 20 61 72 65 20 6e 6f 74 20 6d 6f   view are not mo
55e0: 64 69 66 69 65 64 0a 20 20 28 65 78 63 65 70 74  dified.  (except
55f0: 20 70 6f 73 73 69 62 6c 79 20 65 78 70 6c 69 63   possibly explic
5600: 69 74 6c 79 2c 20 62 79 20 61 20 74 72 69 67 67  itly, by a trigg
5610: 65 72 20 70 72 6f 67 72 61 6d 29 2e 3c 2f 70 3e  er program).</p>
5620: 0a 0a 3c 70 3e 3c 62 3e 45 78 61 6d 70 6c 65 3a  ..<p><b>Example:
5630: 3c 2f 62 3e 3c 2f 70 3e 0a 0a 3c 70 3e 41 73 73  </b></p>..<p>Ass
5640: 75 6d 69 6e 67 20 74 68 61 74 20 63 75 73 74 6f  uming that custo
5650: 6d 65 72 20 72 65 63 6f 72 64 73 20 61 72 65 20  mer records are 
5660: 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 22 63  stored in the "c
5670: 75 73 74 6f 6d 65 72 73 22 20 74 61 62 6c 65 2c  ustomers" table,
5680: 20 61 6e 64 0a 74 68 61 74 20 6f 72 64 65 72 20   and.that order 
5690: 72 65 63 6f 72 64 73 20 61 72 65 20 73 74 6f 72  records are stor
56a0: 65 64 20 69 6e 20 74 68 65 20 22 6f 72 64 65 72  ed in the "order
56b0: 73 22 20 74 61 62 6c 65 2c 20 74 68 65 20 66 6f  s" table, the fo
56c0: 6c 6c 6f 77 69 6e 67 20 74 72 69 67 67 65 72 0a  llowing trigger.
56d0: 65 6e 73 75 72 65 73 20 74 68 61 74 20 61 6c 6c  ensures that all
56e0: 20 61 73 73 6f 63 69 61 74 65 64 20 6f 72 64 65   associated orde
56f0: 72 73 20 61 72 65 20 72 65 64 69 72 65 63 74 65  rs are redirecte
5700: 64 20 77 68 65 6e 20 61 20 63 75 73 74 6f 6d 65  d when a custome
5710: 72 20 63 68 61 6e 67 65 73 0a 68 69 73 20 6f 72  r changes.his or
5720: 20 68 65 72 20 61 64 64 72 65 73 73 3a 3c 2f 70   her address:</p
5730: 3e 0a 7d 0a 45 78 61 6d 70 6c 65 20 7b 0a 43 52  >.}.Example {.CR
5740: 45 41 54 45 20 54 52 49 47 47 45 52 20 75 70 64  EATE TRIGGER upd
5750: 61 74 65 5f 63 75 73 74 6f 6d 65 72 5f 61 64 64  ate_customer_add
5760: 72 65 73 73 20 55 50 44 41 54 45 20 4f 46 20 61  ress UPDATE OF a
5770: 64 64 72 65 73 73 20 4f 4e 20 63 75 73 74 6f 6d  ddress ON custom
5780: 65 72 73 20 0a 20 20 42 45 47 49 4e 0a 20 20 20  ers .  BEGIN.   
5790: 20 55 50 44 41 54 45 20 6f 72 64 65 72 73 20 53   UPDATE orders S
57a0: 45 54 20 61 64 64 72 65 73 73 20 3d 20 6e 65 77  ET address = new
57b0: 2e 61 64 64 72 65 73 73 20 57 48 45 52 45 20 63  .address WHERE c
57c0: 75 73 74 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 6f  ustomer_name = o
57d0: 6c 64 2e 6e 61 6d 65 3b 0a 20 20 45 4e 44 3b 0a  ld.name;.  END;.
57e0: 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e 57 69 74 68  }.puts {.<p>With
57f0: 20 74 68 69 73 20 74 72 69 67 67 65 72 20 69 6e   this trigger in
5800: 73 74 61 6c 6c 65 64 2c 20 65 78 65 63 75 74 69  stalled, executi
5810: 6e 67 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  ng the statement
5820: 3a 3c 2f 70 3e 0a 7d 0a 0a 45 78 61 6d 70 6c 65  :</p>.}..Example
5830: 20 7b 0a 55 50 44 41 54 45 20 63 75 73 74 6f 6d   {.UPDATE custom
5840: 65 72 73 20 53 45 54 20 61 64 64 72 65 73 73 20  ers SET address 
5850: 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e 27 20 57  = '1 Main St.' W
5860: 48 45 52 45 20 6e 61 6d 65 20 3d 20 27 4a 61 63  HERE name = 'Jac
5870: 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 0a 70 75 74 73  k Jones';.}.puts
5880: 20 7b 0a 3c 70 3e 63 61 75 73 65 73 20 74 68 65   {.<p>causes the
5890: 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20 62 65   following to be
58a0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 65   automatically e
58b0: 78 65 63 75 74 65 64 3a 3c 2f 70 3e 0a 7d 0a 45  xecuted:</p>.}.E
58c0: 78 61 6d 70 6c 65 20 7b 0a 55 50 44 41 54 45 20  xample {.UPDATE 
58d0: 6f 72 64 65 72 73 20 53 45 54 20 61 64 64 72 65  orders SET addre
58e0: 73 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e  ss = '1 Main St.
58f0: 27 20 57 48 45 52 45 20 63 75 73 74 6f 6d 65 72  ' WHERE customer
5900: 5f 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f  _name = 'Jack Jo
5910: 6e 65 73 27 3b 0a 7d 0a 0a 70 75 74 73 20 7b 0a  nes';.}..puts {.
5920: 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 63 75 72  <p>Note that cur
5930: 72 65 6e 74 6c 79 2c 20 74 72 69 67 67 65 72 73  rently, triggers
5940: 20 6d 61 79 20 62 65 68 61 76 65 20 6f 64 64 6c   may behave oddl
5950: 79 20 77 68 65 6e 20 63 72 65 61 74 65 64 20 6f  y when created o
5960: 6e 20 74 61 62 6c 65 73 0a 20 20 77 69 74 68 20  n tables.  with 
5970: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
5980: 4b 45 59 20 66 69 65 6c 64 73 2e 20 49 66 20 61  KEY fields. If a
5990: 20 42 45 46 4f 52 45 20 74 72 69 67 67 65 72 20   BEFORE trigger 
59a0: 70 72 6f 67 72 61 6d 20 6d 6f 64 69 66 69 65 73  program modifies
59b0: 20 74 68 65 20 0a 20 20 49 4e 54 45 47 45 52 20   the .  INTEGER 
59c0: 50 52 49 4d 41 52 59 20 4b 45 59 20 66 69 65 6c  PRIMARY KEY fiel
59d0: 64 20 6f 66 20 61 20 72 6f 77 20 74 68 61 74 20  d of a row that 
59e0: 77 69 6c 6c 20 62 65 20 73 75 62 73 65 71 75 65  will be subseque
59f0: 6e 74 6c 79 20 75 70 64 61 74 65 64 20 62 79 20  ntly updated by 
5a00: 74 68 65 0a 20 20 73 74 61 74 65 6d 65 6e 74 20  the.  statement 
5a10: 74 68 61 74 20 63 61 75 73 65 73 20 74 68 65 20  that causes the 
5a20: 74 72 69 67 67 65 72 20 74 6f 20 66 69 72 65 2c  trigger to fire,
5a30: 20 74 68 65 6e 20 74 68 65 20 75 70 64 61 74 65   then the update
5a40: 20 6d 61 79 20 6e 6f 74 20 6f 63 63 75 72 2e 20   may not occur. 
5a50: 0a 20 20 54 68 65 20 77 6f 72 6b 61 72 6f 75 6e  .  The workaroun
5a60: 64 20 69 73 20 74 6f 20 64 65 63 6c 61 72 65 20  d is to declare 
5a70: 74 68 65 20 74 61 62 6c 65 20 77 69 74 68 20 61  the table with a
5a80: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c   PRIMARY KEY col
5a90: 75 6d 6e 20 69 6e 73 74 65 61 64 0a 20 20 6f 66  umn instead.  of
5aa0: 20 61 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d   an INTEGER PRIM
5ab0: 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 2e 3c  ARY KEY column.<
5ac0: 2f 70 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  /p>.}..puts {.<p
5ad0: 3e 41 20 73 70 65 63 69 61 6c 20 53 51 4c 20 66  >A special SQL f
5ae0: 75 6e 63 74 69 6f 6e 20 52 41 49 53 45 28 29 20  unction RAISE() 
5af0: 6d 61 79 20 62 65 20 75 73 65 64 20 77 69 74 68  may be used with
5b00: 69 6e 20 61 20 74 72 69 67 67 65 72 2d 70 72 6f  in a trigger-pro
5b10: 67 72 61 6d 2c 20 77 69 74 68 20 74 68 65 20 66  gram, with the f
5b20: 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74 61 78 3c  ollowing syntax<
5b30: 2f 70 3e 20 0a 7d 0a 53 79 6e 74 61 78 20 7b 72  /p> .}.Syntax {r
5b40: 61 69 73 65 2d 66 75 6e 63 74 69 6f 6e 7d 20 7b  aise-function} {
5b50: 0a 52 41 49 53 45 20 28 20 41 42 4f 52 54 2c 20  .RAISE ( ABORT, 
5b60: 3c 65 72 72 6f 72 2d 6d 65 73 73 61 67 65 3e 20  <error-message> 
5b70: 29 20 7c 20 0a 52 41 49 53 45 20 28 20 46 41 49  ) | .RAISE ( FAI
5b80: 4c 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73 61 67  L, <error-messag
5b90: 65 3e 20 29 20 7c 20 0a 52 41 49 53 45 20 28 20  e> ) | .RAISE ( 
5ba0: 52 4f 4c 4c 42 41 43 4b 2c 20 3c 65 72 72 6f 72  ROLLBACK, <error
5bb0: 2d 6d 65 73 73 61 67 65 3e 20 29 20 7c 20 0a 52  -message> ) | .R
5bc0: 41 49 53 45 20 28 20 49 47 4e 4f 52 45 20 29 0a  AISE ( IGNORE ).
5bd0: 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e 57 68 65 6e  }.puts {.<p>When
5be0: 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 69 72 73   one of the firs
5bf0: 74 20 74 68 72 65 65 20 66 6f 72 6d 73 20 69 73  t three forms is
5c00: 20 63 61 6c 6c 65 64 20 64 75 72 69 6e 67 20 74   called during t
5c10: 72 69 67 67 65 72 2d 70 72 6f 67 72 61 6d 20 65  rigger-program e
5c20: 78 65 63 75 74 69 6f 6e 2c 20 74 68 65 20 73 70  xecution, the sp
5c30: 65 63 69 66 69 65 64 20 4f 4e 20 43 4f 4e 46 4c  ecified ON CONFL
5c40: 49 43 54 20 70 72 6f 63 65 73 73 69 6e 67 20 69  ICT processing i
5c50: 73 20 70 65 72 66 6f 72 6d 65 64 20 28 65 69 74  s performed (eit
5c60: 68 65 72 20 41 42 4f 52 54 2c 20 46 41 49 4c 20  her ABORT, FAIL 
5c70: 6f 72 20 0a 20 52 4f 4c 4c 42 41 43 4b 29 20 61  or . ROLLBACK) a
5c80: 6e 64 20 74 68 65 20 63 75 72 72 65 6e 74 20 71  nd the current q
5c90: 75 65 72 79 20 74 65 72 6d 69 6e 61 74 65 73 2e  uery terminates.
5ca0: 20 41 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 6f   An error code o
5cb0: 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  f SQLITE_CONSTRA
5cc0: 49 4e 54 20 69 73 20 72 65 74 75 72 6e 65 64 20  INT is returned 
5cd0: 74 6f 20 74 68 65 20 75 73 65 72 2c 20 61 6c 6f  to the user, alo
5ce0: 6e 67 20 77 69 74 68 20 74 68 65 20 73 70 65 63  ng with the spec
5cf0: 69 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73  ified error mess
5d00: 61 67 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65  age.</p>..<p>Whe
5d10: 6e 20 52 41 49 53 45 28 49 47 4e 4f 52 45 29 20  n RAISE(IGNORE) 
5d20: 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65 20 72  is called, the r
5d30: 65 6d 61 69 6e 64 65 72 20 6f 66 20 74 68 65 20  emainder of the 
5d40: 63 75 72 72 65 6e 74 20 74 72 69 67 67 65 72 20  current trigger 
5d50: 70 72 6f 67 72 61 6d 2c 0a 74 68 65 20 73 74 61  program,.the sta
5d60: 74 65 6d 65 6e 74 20 74 68 61 74 20 63 61 75 73  tement that caus
5d70: 65 64 20 74 68 65 20 74 72 69 67 67 65 72 20 70  ed the trigger p
5d80: 72 6f 67 72 61 6d 20 74 6f 20 65 78 65 63 75 74  rogram to execut
5d90: 65 20 61 6e 64 20 61 6e 79 20 73 75 62 73 65 71  e and any subseq
5da0: 75 65 6e 74 0a 20 20 20 20 74 72 69 67 67 65 72  uent.    trigger
5db0: 20 70 72 6f 67 72 61 6d 73 20 74 68 61 74 20 77   programs that w
5dc0: 6f 75 6c 64 20 6f 66 20 62 65 65 6e 20 65 78 65  ould of been exe
5dd0: 63 75 74 65 64 20 61 72 65 20 61 62 61 6e 64 6f  cuted are abando
5de0: 6e 65 64 2e 20 4e 6f 20 64 61 74 61 62 61 73 65  ned. No database
5df0: 0a 20 20 20 20 63 68 61 6e 67 65 73 20 61 72 65  .    changes are
5e00: 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20 49   rolled back.  I
5e10: 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  f the statement 
5e20: 74 68 61 74 20 63 61 75 73 65 64 20 74 68 65 20  that caused the 
5e30: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 0a  trigger program.
5e40: 20 20 20 20 74 6f 20 65 78 65 63 75 74 65 20 69      to execute i
5e50: 73 20 69 74 73 65 6c 66 20 70 61 72 74 20 6f 66  s itself part of
5e60: 20 61 20 74 72 69 67 67 65 72 20 70 72 6f 67 72   a trigger progr
5e70: 61 6d 2c 20 74 68 65 6e 20 74 68 61 74 20 74 72  am, then that tr
5e80: 69 67 67 65 72 20 70 72 6f 67 72 61 6d 0a 20 20  igger program.  
5e90: 20 20 72 65 73 75 6d 65 73 20 65 78 65 63 75 74    resumes execut
5ea0: 69 6f 6e 20 61 74 20 74 68 65 20 62 65 67 69 6e  ion at the begin
5eb0: 6e 69 6e 67 20 6f 66 20 74 68 65 20 6e 65 78 74  ning of the next
5ec0: 20 73 74 65 70 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e   step..</p>..<p>
5ed0: 54 72 69 67 67 65 72 73 20 61 72 65 20 72 65 6d  Triggers are rem
5ee0: 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65 20 3c  oved using the <
5ef0: 61 20 68 72 65 66 3d 22 23 64 72 6f 70 74 72 69  a href="#droptri
5f00: 67 67 65 72 22 3e 44 52 4f 50 20 54 52 49 47 47  gger">DROP TRIGG
5f10: 45 52 3c 2f 61 3e 0a 73 74 61 74 65 6d 65 6e 74  ER</a>.statement
5f20: 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f 72 61 72 79  .  Non-temporary
5f30: 20 74 72 69 67 67 65 72 73 20 63 61 6e 6e 6f 74   triggers cannot
5f40: 20 62 65 20 61 64 64 65 64 20 6f 6e 20 61 20 74   be added on a t
5f50: 61 62 6c 65 20 69 6e 20 61 6e 20 0a 61 74 74 61  able in an .atta
5f60: 63 68 65 64 20 64 61 74 61 62 61 73 65 2e 3c 2f  ched database.</
5f70: 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b  p>.}...Section {
5f80: 43 52 45 41 54 45 20 56 49 45 57 7d 20 7b 63 72  CREATE VIEW} {cr
5f90: 65 61 74 65 76 69 65 77 7d 0a 0a 53 79 6e 74 61  eateview}..Synta
5fa0: 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20  x {sql-command} 
5fb0: 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d 50 20 7c  {.CREATE [TEMP |
5fc0: 20 54 45 4d 50 4f 52 41 52 59 5d 20 56 49 45 57   TEMPORARY] VIEW
5fd0: 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65   [<database-name
5fe0: 3e 2e 5d 20 3c 76 69 65 77 2d 6e 61 6d 65 3e 20  >.] <view-name> 
5ff0: 41 53 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65  AS <select-state
6000: 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a  ment>.}..puts {.
6010: 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20 56 49  <p>The CREATE VI
6020: 45 57 20 63 6f 6d 6d 61 6e 64 20 61 73 73 69 67  EW command assig
6030: 6e 73 20 61 20 6e 61 6d 65 20 74 6f 20 61 20 70  ns a name to a p
6040: 72 65 2d 70 61 63 6b 61 67 65 64 20 0a 3c 61 20  re-packaged .<a 
6050: 68 72 65 66 3d 22 23 73 65 6c 65 63 74 22 3e 53  href="#select">S
6060: 45 4c 45 43 54 3c 2f 61 3e 0a 73 74 61 74 65 6d  ELECT</a>.statem
6070: 65 6e 74 2e 20 20 4f 6e 63 65 20 74 68 65 20 76  ent.  Once the v
6080: 69 65 77 20 69 73 20 63 72 65 61 74 65 64 2c 20  iew is created, 
6090: 69 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 69  it can be used i
60a0: 6e 20 74 68 65 20 46 52 4f 4d 20 63 6c 61 75 73  n the FROM claus
60b0: 65 0a 6f 66 20 61 6e 6f 74 68 65 72 20 53 45 4c  e.of another SEL
60c0: 45 43 54 20 69 6e 20 70 6c 61 63 65 20 6f 66 20  ECT in place of 
60d0: 61 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0a 3c 2f  a table name..</
60e0: 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 22 54  p>..<p>If the "T
60f0: 45 4d 50 22 20 6f 72 20 22 54 45 4d 50 4f 52 41  EMP" or "TEMPORA
6100: 52 59 22 20 6b 65 79 77 6f 72 64 20 6f 63 63 75  RY" keyword occu
6110: 72 73 20 69 6e 20 62 65 74 77 65 65 6e 20 22 43  rs in between "C
6120: 52 45 41 54 45 22 0a 61 6e 64 20 22 54 41 42 4c  REATE".and "TABL
6130: 45 22 20 74 68 65 6e 20 74 68 65 20 74 61 62 6c  E" then the tabl
6140: 65 20 74 68 61 74 20 69 73 20 63 72 65 61 74 65  e that is create
6150: 64 20 69 73 20 6f 6e 6c 79 20 76 69 73 69 62 6c  d is only visibl
6160: 65 20 74 6f 20 74 68 65 0a 70 72 6f 63 65 73 73  e to the.process
6170: 20 74 68 61 74 20 6f 70 65 6e 65 64 20 74 68 65   that opened the
6180: 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 69 73   database and is
6190: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64   automatically d
61a0: 65 6c 65 74 65 64 20 77 68 65 6e 0a 74 68 65 20  eleted when.the 
61b0: 64 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73  database is clos
61c0: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 49 66 20  ed.</p>..<p> If 
61d0: 61 20 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  a <database-name
61e0: 3e 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20  > is specified, 
61f0: 74 68 65 6e 20 74 68 65 20 76 69 65 77 20 69 73  then the view is
6200: 20 63 72 65 61 74 65 64 20 69 6e 20 0a 74 68 65   created in .the
6210: 20 6e 61 6d 65 64 20 64 61 74 61 62 61 73 65 2e   named database.
6220: 20 49 74 20 69 73 20 61 6e 20 65 72 72 6f 72 20   It is an error 
6230: 74 6f 20 73 70 65 63 69 66 79 20 62 6f 74 68 20  to specify both 
6240: 61 20 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  a <database-name
6250: 3e 0a 61 6e 64 20 74 68 65 20 54 45 4d 50 20 6b  >.and the TEMP k
6260: 65 79 77 6f 72 64 2c 20 75 6e 6c 65 73 73 20 74  eyword, unless t
6270: 68 65 20 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d  he <database-nam
6280: 65 3e 20 69 73 20 22 74 65 6d 70 22 2e 20 49 66  e> is "temp". If
6290: 20 6e 6f 0a 64 61 74 61 62 61 73 65 20 6e 61 6d   no.database nam
62a0: 65 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20  e is specified, 
62b0: 61 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79  and the TEMP key
62c0: 77 6f 72 64 20 69 73 20 6e 6f 74 20 70 72 65 73  word is not pres
62d0: 65 6e 74 2c 0a 74 68 65 20 74 61 62 6c 65 20 69  ent,.the table i
62e0: 73 20 63 72 65 61 74 65 64 20 69 6e 20 74 68 65  s created in the
62f0: 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2e 3c   main database.<
6300: 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63 61 6e 6e  /p>..<p>You cann
6310: 6f 74 20 43 4f 50 59 2c 20 44 45 4c 45 54 45 2c  ot COPY, DELETE,
6320: 20 49 4e 53 45 52 54 20 6f 72 20 55 50 44 41 54   INSERT or UPDAT
6330: 45 20 61 20 76 69 65 77 2e 20 20 56 69 65 77 73  E a view.  Views
6340: 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79 20 0a   are read-only .
6350: 69 6e 20 53 51 4c 69 74 65 2e 20 20 48 6f 77 65  in SQLite.  Howe
6360: 76 65 72 2c 20 69 6e 20 6d 61 6e 79 20 63 61 73  ver, in many cas
6370: 65 73 20 79 6f 75 20 63 61 6e 20 75 73 65 20 61  es you can use a
6380: 20 3c 61 20 68 72 65 66 3d 22 23 74 72 69 67 67   <a href="#trigg
6390: 65 72 22 3e 0a 54 52 49 47 47 45 52 3c 2f 61 3e  er">.TRIGGER</a>
63a0: 20 6f 6e 20 74 68 65 20 76 69 65 77 20 74 6f 20   on the view to 
63b0: 61 63 63 6f 6d 70 6c 69 73 68 20 74 68 65 20 73  accomplish the s
63c0: 61 6d 65 20 74 68 69 6e 67 2e 20 20 56 69 65 77  ame thing.  View
63d0: 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 0a 77  s are removed .w
63e0: 69 74 68 20 74 68 65 20 3c 61 20 68 72 65 66 3d  ith the <a href=
63f0: 22 23 64 72 6f 70 76 69 65 77 22 3e 44 52 4f 50  "#dropview">DROP
6400: 20 56 49 45 57 3c 2f 61 3e 20 0a 63 6f 6d 6d 61   VIEW</a> .comma
6410: 6e 64 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f 72 61  nd.  Non-tempora
6420: 72 79 20 76 69 65 77 73 20 63 61 6e 6e 6f 74 20  ry views cannot 
6430: 62 65 20 63 72 65 61 74 65 64 20 6f 6e 20 74 61  be created on ta
6440: 62 6c 65 73 20 69 6e 20 61 6e 20 61 74 74 61 63  bles in an attac
6450: 68 65 64 20 0a 64 61 74 61 62 61 73 65 2e 3c 2f  hed .database.</
6460: 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 44  p>.}...Section D
6470: 45 4c 45 54 45 20 64 65 6c 65 74 65 0a 0a 53 79  ELETE delete..Sy
6480: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
6490: 65 6e 74 7d 20 7b 0a 44 45 4c 45 54 45 20 46 52  ent} {.DELETE FR
64a0: 4f 4d 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  OM [<database-na
64b0: 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61  me> .] <table-na
64c0: 6d 65 3e 20 5b 57 48 45 52 45 20 3c 65 78 70 72  me> [WHERE <expr
64d0: 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  >].}..puts {.<p>
64e0: 54 68 65 20 44 45 4c 45 54 45 20 63 6f 6d 6d 61  The DELETE comma
64f0: 6e 64 20 69 73 20 75 73 65 64 20 74 6f 20 72 65  nd is used to re
6500: 6d 6f 76 65 20 72 65 63 6f 72 64 73 20 66 72 6f  move records fro
6510: 6d 20 61 20 74 61 62 6c 65 2e 0a 54 68 65 20 63  m a table..The c
6520: 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74 73 20  ommand consists 
6530: 6f 66 20 74 68 65 20 22 44 45 4c 45 54 45 20 46  of the "DELETE F
6540: 52 4f 4d 22 20 6b 65 79 77 6f 72 64 73 20 66 6f  ROM" keywords fo
6550: 6c 6c 6f 77 65 64 20 62 79 0a 74 68 65 20 6e 61  llowed by.the na
6560: 6d 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  me of the table 
6570: 66 72 6f 6d 20 77 68 69 63 68 20 72 65 63 6f 72  from which recor
6580: 64 73 20 61 72 65 20 74 6f 20 62 65 20 72 65 6d  ds are to be rem
6590: 6f 76 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 57  oved..</p>..<p>W
65a0: 69 74 68 6f 75 74 20 61 20 57 48 45 52 45 20 63  ithout a WHERE c
65b0: 6c 61 75 73 65 2c 20 61 6c 6c 20 72 6f 77 73 20  lause, all rows 
65c0: 6f 66 20 74 68 65 20 74 61 62 6c 65 20 61 72 65  of the table are
65d0: 20 72 65 6d 6f 76 65 64 2e 0a 49 66 20 61 20 57   removed..If a W
65e0: 48 45 52 45 20 63 6c 61 75 73 65 20 69 73 20 73  HERE clause is s
65f0: 75 70 70 6c 69 65 64 2c 20 74 68 65 6e 20 6f 6e  upplied, then on
6600: 6c 79 20 74 68 6f 73 65 20 72 6f 77 73 20 74 68  ly those rows th
6610: 61 74 20 6d 61 74 63 68 0a 74 68 65 20 65 78 70  at match.the exp
6620: 72 65 73 73 69 6f 6e 20 61 72 65 20 72 65 6d 6f  ression are remo
6630: 76 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63  ved.</p>.}...Sec
6640: 74 69 6f 6e 20 7b 44 45 54 41 43 48 20 44 41 54  tion {DETACH DAT
6650: 41 42 41 53 45 7d 20 64 65 74 61 63 68 0a 0a 53  ABASE} detach..S
6660: 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61  yntax {sql-comma
6670: 6e 64 7d 20 7b 0a 44 45 54 41 43 48 20 5b 44 41  nd} {.DETACH [DA
6680: 54 41 42 41 53 45 5d 20 3c 64 61 74 61 62 61 73  TABASE] <databas
6690: 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20  e-name>.}..puts 
66a0: 7b 0a 3c 70 3e 54 68 69 73 20 73 74 61 74 65 6d  {.<p>This statem
66b0: 65 6e 74 20 64 65 74 61 63 68 65 73 20 61 6e 20  ent detaches an 
66c0: 61 64 64 69 74 69 6f 6e 61 6c 20 64 61 74 61 62  additional datab
66d0: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70  ase connection p
66e0: 72 65 76 69 6f 75 73 6c 79 20 0a 61 74 74 61 63  reviously .attac
66f0: 68 65 64 20 75 73 69 6e 67 20 74 68 65 20 3c 61  hed using the <a
6700: 20 68 72 65 66 3d 22 23 61 74 74 61 63 68 22 3e   href="#attach">
6710: 41 54 54 41 43 48 20 44 41 54 41 42 41 53 45 3c  ATTACH DATABASE<
6720: 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  /a> statement.  
6730: 49 74 0a 69 73 20 70 6f 73 73 69 62 6c 65 20 74  It.is possible t
6740: 6f 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20  o have the same 
6750: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 61 74  database file at
6760: 74 61 63 68 65 64 20 6d 75 6c 74 69 70 6c 65 20  tached multiple 
6770: 74 69 6d 65 73 20 75 73 69 6e 67 20 0a 64 69 66  times using .dif
6780: 66 65 72 65 6e 74 20 6e 61 6d 65 73 2c 20 61 6e  ferent names, an
6790: 64 20 64 65 74 61 63 68 69 6e 67 20 6f 6e 65 20  d detaching one 
67a0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 61 20  connection to a 
67b0: 66 69 6c 65 20 77 69 6c 6c 20 6c 65 61 76 65 20  file will leave 
67c0: 74 68 65 20 0a 6f 74 68 65 72 73 20 69 6e 74 61  the .others inta
67d0: 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69 73  ct.</p>..<p>This
67e0: 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20   statement will 
67f0: 66 61 69 6c 20 69 66 20 53 51 4c 69 74 65 20 69  fail if SQLite i
6800: 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20  s in the middle 
6810: 6f 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  of a transaction
6820: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
6830: 6e 20 7b 44 52 4f 50 20 49 4e 44 45 58 7d 20 64  n {DROP INDEX} d
6840: 72 6f 70 69 6e 64 65 78 0a 0a 53 79 6e 74 61 78  ropindex..Syntax
6850: 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b   {sql-command} {
6860: 0a 44 52 4f 50 20 49 4e 44 45 58 20 5b 3c 64 61  .DROP INDEX [<da
6870: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20  tabase-name> .] 
6880: 3c 69 6e 64 65 78 2d 6e 61 6d 65 3e 0a 7d 0a 0a  <index-name>.}..
6890: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 52  puts {.<p>The DR
68a0: 4f 50 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65  OP INDEX stateme
68b0: 6e 74 20 72 65 6d 6f 76 65 73 20 61 6e 20 69 6e  nt removes an in
68c0: 64 65 78 20 61 64 64 65 64 0a 77 69 74 68 20 74  dex added.with t
68d0: 68 65 20 3c 61 20 68 72 65 66 3d 22 23 63 72 65  he <a href="#cre
68e0: 61 74 65 69 6e 64 65 78 22 3e 0a 43 52 45 41 54  ateindex">.CREAT
68f0: 45 20 49 4e 44 45 58 3c 2f 61 3e 20 73 74 61 74  E INDEX</a> stat
6900: 65 6d 65 6e 74 2e 20 20 54 68 65 20 69 6e 64 65  ement.  The inde
6910: 78 20 6e 61 6d 65 64 20 69 73 20 63 6f 6d 70 6c  x named is compl
6920: 65 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66 72  etely removed fr
6930: 6f 6d 0a 74 68 65 20 64 69 73 6b 2e 20 20 54 68  om.the disk.  Th
6940: 65 20 6f 6e 6c 79 20 77 61 79 20 74 6f 20 72 65  e only way to re
6950: 63 6f 76 65 72 20 74 68 65 20 69 6e 64 65 78 20  cover the index 
6960: 69 73 20 74 6f 20 72 65 65 6e 74 65 72 20 74 68  is to reenter th
6970: 65 0a 61 70 70 72 6f 70 72 69 61 74 65 20 43 52  e.appropriate CR
6980: 45 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61  EATE INDEX comma
6990: 6e 64 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f 72 61  nd.  Non-tempora
69a0: 72 79 20 69 6e 64 65 78 65 73 20 6f 6e 20 74 61  ry indexes on ta
69b0: 62 6c 65 73 20 69 6e 20 0a 61 6e 20 61 74 74 61  bles in .an atta
69c0: 63 68 65 64 20 64 61 74 61 62 61 73 65 20 63 61  ched database ca
69d0: 6e 6e 6f 74 20 62 65 20 64 72 6f 70 70 65 64 2e  nnot be dropped.
69e0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44 52 4f  </p>..<p>The DRO
69f0: 50 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e  P INDEX statemen
6a00: 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 64 75 63  t does not reduc
6a10: 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68  e the size of th
6a20: 65 20 64 61 74 61 62 61 73 65 20 0a 66 69 6c 65  e database .file
6a30: 2e 20 20 45 6d 70 74 79 20 73 70 61 63 65 20 69  .  Empty space i
6a40: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  n the database i
6a50: 73 20 72 65 74 61 69 6e 65 64 20 66 6f 72 20 6c  s retained for l
6a60: 61 74 65 72 20 49 4e 53 45 52 54 73 2e 20 20 54  ater INSERTs.  T
6a70: 6f 20 0a 72 65 6d 6f 76 65 20 66 72 65 65 20 73  o .remove free s
6a80: 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61  pace in the data
6a90: 62 61 73 65 2c 20 75 73 65 20 74 68 65 20 3c 61  base, use the <a
6aa0: 20 68 72 65 66 3d 22 23 76 61 63 75 75 6d 22 3e   href="#vacuum">
6ab0: 56 41 43 55 55 4d 3c 2f 61 3e 20 0a 63 6f 6d 6d  VACUUM</a> .comm
6ac0: 61 6e 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63  and.</p>.}...Sec
6ad0: 74 69 6f 6e 20 7b 44 52 4f 50 20 54 41 42 4c 45  tion {DROP TABLE
6ae0: 7d 20 64 72 6f 70 74 61 62 6c 65 0a 0a 53 79 6e  } droptable..Syn
6af0: 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64  tax {sql-command
6b00: 7d 20 7b 0a 44 52 4f 50 20 54 41 42 4c 45 20 5b  } {.DROP TABLE [
6b10: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 2e  <database-name>.
6b20: 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 7d  ] <table-name>.}
6b30: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20  ..puts {.<p>The 
6b40: 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65  DROP TABLE state
6b50: 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 74  ment removes a t
6b60: 61 62 6c 65 20 61 64 64 65 64 20 77 69 74 68 20  able added with 
6b70: 74 68 65 20 3c 61 20 68 72 65 66 3d 0a 22 23 63  the <a href=."#c
6b80: 72 65 61 74 65 74 61 62 6c 65 22 3e 43 52 45 41  reatetable">CREA
6b90: 54 45 20 54 41 42 4c 45 3c 2f 61 3e 20 73 74 61  TE TABLE</a> sta
6ba0: 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e 61 6d  tement.  The nam
6bb0: 65 20 73 70 65 63 69 66 69 65 64 20 69 73 20 74  e specified is t
6bc0: 68 65 0a 74 61 62 6c 65 20 6e 61 6d 65 2e 20 20  he.table name.  
6bd0: 49 74 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79  It is completely
6be0: 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68   removed from th
6bf0: 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d  e database schem
6c00: 61 20 61 6e 64 20 74 68 65 20 0a 64 69 73 6b 20  a and the .disk 
6c10: 66 69 6c 65 2e 20 20 54 68 65 20 74 61 62 6c 65  file.  The table
6c20: 20 63 61 6e 20 6e 6f 74 20 62 65 20 72 65 63 6f   can not be reco
6c30: 76 65 72 65 64 2e 20 20 41 6c 6c 20 69 6e 64 69  vered.  All indi
6c40: 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 0a  ces associated .
6c50: 77 69 74 68 20 74 68 65 20 74 61 62 6c 65 20 61  with the table a
6c60: 72 65 20 61 6c 73 6f 20 64 65 6c 65 74 65 64 2e  re also deleted.
6c70: 20 20 4e 6f 6e 2d 74 65 6d 70 6f 72 61 72 79 20    Non-temporary 
6c80: 74 61 62 6c 65 73 20 69 6e 20 61 6e 20 61 74 74  tables in an att
6c90: 61 63 68 65 64 20 0a 64 61 74 61 62 61 73 65 20  ached .database 
6ca0: 63 61 6e 6e 6f 74 20 62 65 20 64 72 6f 70 70 65  cannot be droppe
6cb0: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44  d.</p>..<p>The D
6cc0: 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ROP TABLE statem
6cd0: 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 64  ent does not red
6ce0: 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20  uce the size of 
6cf0: 74 68 65 20 64 61 74 61 62 61 73 65 20 0a 66 69  the database .fi
6d00: 6c 65 2e 20 20 45 6d 70 74 79 20 73 70 61 63 65  le.  Empty space
6d10: 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65   in the database
6d20: 20 69 73 20 72 65 74 61 69 6e 65 64 20 66 6f 72   is retained for
6d30: 20 6c 61 74 65 72 20 49 4e 53 45 52 54 73 2e 20   later INSERTs. 
6d40: 20 54 6f 20 0a 72 65 6d 6f 76 65 20 66 72 65 65   To .remove free
6d50: 20 73 70 61 63 65 20 69 6e 20 74 68 65 20 64 61   space in the da
6d60: 74 61 62 61 73 65 2c 20 75 73 65 20 74 68 65 20  tabase, use the 
6d70: 3c 61 20 68 72 65 66 3d 22 23 76 61 63 75 75 6d  <a href="#vacuum
6d80: 22 3e 56 41 43 55 55 4d 3c 2f 61 3e 20 0a 63 6f  ">VACUUM</a> .co
6d90: 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53  mmand.</p>.}...S
6da0: 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54 52 49  ection {DROP TRI
6db0: 47 47 45 52 7d 20 64 72 6f 70 74 72 69 67 67 65  GGER} droptrigge
6dc0: 72 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  r.Syntax {sql-st
6dd0: 61 74 65 6d 65 6e 74 7d 20 7b 0a 44 52 4f 50 20  atement} {.DROP 
6de0: 54 52 49 47 47 45 52 20 5b 3c 64 61 74 61 62 61  TRIGGER [<databa
6df0: 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 72 69  se-name> .] <tri
6e00: 67 67 65 72 2d 6e 61 6d 65 3e 0a 7d 0a 70 75 74  gger-name>.}.put
6e10: 73 20 7b 20 0a 3c 70 3e 54 68 65 20 44 52 4f 50  s { .<p>The DROP
6e20: 20 54 52 49 47 47 45 52 20 73 74 61 74 65 6d 65   TRIGGER stateme
6e30: 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 74 72 69  nt removes a tri
6e40: 67 67 65 72 20 63 72 65 61 74 65 64 20 62 79 20  gger created by 
6e50: 74 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 23 63  the .<a href="#c
6e60: 72 65 61 74 65 74 72 69 67 67 65 72 22 3e 43 52  reatetrigger">CR
6e70: 45 41 54 45 20 54 52 49 47 47 45 52 3c 2f 61 3e  EATE TRIGGER</a>
6e80: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65   statement.  The
6e90: 20 74 72 69 67 67 65 72 20 69 73 20 0a 64 65 6c   trigger is .del
6ea0: 65 74 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61  eted from the da
6eb0: 74 61 62 61 73 65 20 73 63 68 65 6d 61 2e 20 4e  tabase schema. N
6ec0: 6f 74 65 20 74 68 61 74 20 74 72 69 67 67 65 72  ote that trigger
6ed0: 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61  s are automatica
6ee0: 6c 6c 79 20 0a 64 72 6f 70 70 65 64 20 77 68 65  lly .dropped whe
6ef0: 6e 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  n the associated
6f00: 20 74 61 62 6c 65 20 69 73 20 64 72 6f 70 70 65   table is droppe
6f10: 64 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f 72 61 72  d.  Non-temporar
6f20: 79 20 74 72 69 67 67 65 72 73 20 0a 63 61 6e 6e  y triggers .cann
6f30: 6f 74 20 62 65 20 64 72 6f 70 70 65 64 20 6f 6e  ot be dropped on
6f40: 20 61 74 74 61 63 68 65 64 20 74 61 62 6c 65 73   attached tables
6f50: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
6f60: 6e 20 7b 44 52 4f 50 20 56 49 45 57 7d 20 64 72  n {DROP VIEW} dr
6f70: 6f 70 76 69 65 77 0a 0a 53 79 6e 74 61 78 20 7b  opview..Syntax {
6f80: 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44  sql-command} {.D
6f90: 52 4f 50 20 56 49 45 57 20 3c 76 69 65 77 2d 6e  ROP VIEW <view-n
6fa0: 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  ame>.}..puts {.<
6fb0: 70 3e 54 68 65 20 44 52 4f 50 20 56 49 45 57 20  p>The DROP VIEW 
6fc0: 73 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65  statement remove
6fd0: 73 20 61 20 76 69 65 77 20 63 72 65 61 74 65 64  s a view created
6fe0: 20 62 79 20 74 68 65 20 3c 61 20 68 72 65 66 3d   by the <a href=
6ff0: 0a 22 23 63 72 65 61 74 65 76 69 65 77 22 3e 43  ."#createview">C
7000: 52 45 41 54 45 20 56 49 45 57 3c 2f 61 3e 20 73  REATE VIEW</a> s
7010: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e  tatement.  The n
7020: 61 6d 65 20 73 70 65 63 69 66 69 65 64 20 69 73  ame specified is
7030: 20 74 68 65 20 0a 76 69 65 77 20 6e 61 6d 65 2e   the .view name.
7040: 20 20 49 74 20 69 73 20 72 65 6d 6f 76 65 64 20    It is removed 
7050: 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73  from the databas
7060: 65 20 73 63 68 65 6d 61 2c 20 62 75 74 20 6e 6f  e schema, but no
7070: 20 61 63 74 75 61 6c 20 64 61 74 61 20 0a 69 6e   actual data .in
7080: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
7090: 62 61 73 65 20 74 61 62 6c 65 73 20 69 73 20 6d  base tables is m
70a0: 6f 64 69 66 69 65 64 2e 20 20 4e 6f 6e 2d 74 65  odified.  Non-te
70b0: 6d 70 6f 72 61 72 79 20 76 69 65 77 73 20 69 6e  mporary views in
70c0: 20 0a 61 74 74 61 63 68 65 64 20 64 61 74 61 62   .attached datab
70d0: 61 73 65 73 20 63 61 6e 6e 6f 74 20 62 65 20 64  ases cannot be d
70e0: 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a  ropped.</p>.}...
70f0: 53 65 63 74 69 6f 6e 20 45 58 50 4c 41 49 4e 20  Section EXPLAIN 
7100: 65 78 70 6c 61 69 6e 0a 0a 53 79 6e 74 61 78 20  explain..Syntax 
7110: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
7120: 7b 0a 45 58 50 4c 41 49 4e 20 3c 73 71 6c 2d 73  {.EXPLAIN <sql-s
7130: 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74  tatement>.}..put
7140: 73 20 7b 0a 3c 70 3e 54 68 65 20 45 58 50 4c 41  s {.<p>The EXPLA
7150: 49 4e 20 63 6f 6d 6d 61 6e 64 20 6d 6f 64 69 66  IN command modif
7160: 69 65 72 20 69 73 20 61 20 6e 6f 6e 2d 73 74 61  ier is a non-sta
7170: 6e 64 61 72 64 20 65 78 74 65 6e 73 69 6f 6e 2e  ndard extension.
7180: 20 20 54 68 65 0a 69 64 65 61 20 63 6f 6d 65 73    The.idea comes
7190: 20 66 72 6f 6d 20 61 20 73 69 6d 69 6c 61 72 20   from a similar 
71a0: 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 20 69 6e  command found in
71b0: 20 50 6f 73 74 67 72 65 53 51 4c 2c 20 62 75 74   PostgreSQL, but
71c0: 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 0a 69   the operation.i
71d0: 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 64 69 66  s completely dif
71e0: 66 65 72 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ferent.</p>..<p>
71f0: 49 66 20 74 68 65 20 45 58 50 4c 41 49 4e 20 6b  If the EXPLAIN k
7200: 65 79 77 6f 72 64 20 61 70 70 65 61 72 73 20 62  eyword appears b
7210: 65 66 6f 72 65 20 61 6e 79 20 6f 74 68 65 72 20  efore any other 
7220: 53 51 4c 69 74 65 20 53 51 4c 20 63 6f 6d 6d 61  SQLite SQL comma
7230: 6e 64 0a 74 68 65 6e 20 69 6e 73 74 65 61 64 20  nd.then instead 
7240: 6f 66 20 61 63 74 75 61 6c 6c 79 20 65 78 65 63  of actually exec
7250: 75 74 69 6e 67 20 74 68 65 20 63 6f 6d 6d 61 6e  uting the comman
7260: 64 2c 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  d, the SQLite li
7270: 62 72 61 72 79 20 77 69 6c 6c 0a 72 65 70 6f 72  brary will.repor
7280: 74 20 62 61 63 6b 20 74 68 65 20 73 65 71 75 65  t back the seque
7290: 6e 63 65 20 6f 66 20 76 69 72 74 75 61 6c 20 6d  nce of virtual m
72a0: 61 63 68 69 6e 65 20 69 6e 73 74 72 75 63 74 69  achine instructi
72b0: 6f 6e 73 20 69 74 20 77 6f 75 6c 64 20 68 61 76  ons it would hav
72c0: 65 0a 75 73 65 64 20 74 6f 20 65 78 65 63 75 74  e.used to execut
72d0: 65 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 68 61  e the command ha
72e0: 64 20 74 68 65 20 45 58 50 4c 41 49 4e 20 6b 65  d the EXPLAIN ke
72f0: 79 77 6f 72 64 20 6e 6f 74 20 62 65 65 6e 20 70  yword not been p
7300: 72 65 73 65 6e 74 2e 0a 46 6f 72 20 61 64 64 69  resent..For addi
7310: 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
7320: 6f 6e 20 61 62 6f 75 74 20 76 69 72 74 75 61 6c  on about virtual
7330: 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72 75 63   machine instruc
7340: 74 69 6f 6e 73 20 73 65 65 0a 74 68 65 20 3c 61  tions see.the <a
7350: 20 68 72 65 66 3d 22 61 72 63 68 2e 68 74 6d 6c   href="arch.html
7360: 22 3e 61 72 63 68 69 74 65 63 74 75 72 65 20 64  ">architecture d
7370: 65 73 63 72 69 70 74 69 6f 6e 3c 2f 61 3e 20 6f  escription</a> o
7380: 72 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74  r the documentat
7390: 69 6f 6e 0a 6f 6e 20 3c 61 20 68 72 65 66 3d 22  ion.on <a href="
73a0: 6f 70 63 6f 64 65 2e 68 74 6d 6c 22 3e 61 76 61  opcode.html">ava
73b0: 69 6c 61 62 6c 65 20 6f 70 63 6f 64 65 73 3c 2f  ilable opcodes</
73c0: 61 3e 20 66 6f 72 20 74 68 65 20 76 69 72 74 75  a> for the virtu
73d0: 61 6c 20 6d 61 63 68 69 6e 65 2e 3c 2f 70 3e 0a  al machine.</p>.
73e0: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 65 78 70 72  }...Section expr
73f0: 65 73 73 69 6f 6e 20 65 78 70 72 0a 0a 53 79 6e  ession expr..Syn
7400: 74 61 78 20 7b 65 78 70 72 7d 20 7b 0a 3c 65 78  tax {expr} {.<ex
7410: 70 72 3e 20 3c 62 69 6e 61 72 79 2d 6f 70 3e 20  pr> <binary-op> 
7420: 3c 65 78 70 72 3e 20 7c 0a 3c 65 78 70 72 3e 20  <expr> |.<expr> 
7430: 3c 6c 69 6b 65 2d 6f 70 3e 20 3c 65 78 70 72 3e  <like-op> <expr>
7440: 20 7c 0a 3c 75 6e 61 72 79 2d 6f 70 3e 20 3c 65   |.<unary-op> <e
7450: 78 70 72 3e 20 7c 0a 28 20 3c 65 78 70 72 3e 20  xpr> |.( <expr> 
7460: 29 20 7c 0a 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65  ) |.<column-name
7470: 3e 20 7c 0a 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e  > |.<table-name>
7480: 20 2e 20 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e   . <column-name>
7490: 20 7c 0a 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d   |.<database-nam
74a0: 65 3e 20 2e 20 3c 74 61 62 6c 65 2d 6e 61 6d 65  e> . <table-name
74b0: 3e 20 2e 20 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65  > . <column-name
74c0: 3e 20 7c 0a 3c 6c 69 74 65 72 61 6c 2d 76 61 6c  > |.<literal-val
74d0: 75 65 3e 20 7c 0a 3c 66 75 6e 63 74 69 6f 6e 2d  ue> |.<function-
74e0: 6e 61 6d 65 3e 20 28 20 3c 65 78 70 72 2d 6c 69  name> ( <expr-li
74f0: 73 74 3e 20 7c 20 53 54 41 52 20 29 20 7c 0a 3c  st> | STAR ) |.<
7500: 65 78 70 72 3e 20 49 53 4e 55 4c 4c 20 7c 0a 3c  expr> ISNULL |.<
7510: 65 78 70 72 3e 20 4e 4f 54 4e 55 4c 4c 20 7c 0a  expr> NOTNULL |.
7520: 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 42 45 54  <expr> [NOT] BET
7530: 57 45 45 4e 20 3c 65 78 70 72 3e 20 41 4e 44 20  WEEN <expr> AND 
7540: 3c 65 78 70 72 3e 20 7c 0a 3c 65 78 70 72 3e 20  <expr> |.<expr> 
7550: 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c 76 61 6c 75  [NOT] IN ( <valu
7560: 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 3c 65 78 70  e-list> ) |.<exp
7570: 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c 73  r> [NOT] IN ( <s
7580: 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e  elect-statement>
7590: 20 29 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54   ) |.<expr> [NOT
75a0: 5d 20 49 4e 20 5b 3c 64 61 74 61 62 61 73 65 2d  ] IN [<database-
75b0: 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d  name> .] <table-
75c0: 6e 61 6d 65 3e 20 7c 0a 28 20 3c 73 65 6c 65 63  name> |.( <selec
75d0: 74 2d 73 74 61 74 65 6d 65 6e 74 3e 20 29 20 7c  t-statement> ) |
75e0: 0a 43 41 53 45 20 5b 3c 65 78 70 72 3e 5d 20 4c  .CASE [<expr>] L
75f0: 50 20 57 48 45 4e 20 3c 65 78 70 72 3e 20 54 48  P WHEN <expr> TH
7600: 45 4e 20 3c 65 78 70 72 3e 20 52 50 50 4c 55 53  EN <expr> RPPLUS
7610: 20 5b 45 4c 53 45 20 3c 65 78 70 72 3e 5d 20 45   [ELSE <expr>] E
7620: 4e 44 0a 7d 20 7b 6c 69 6b 65 2d 6f 70 7d 20 7b  ND.} {like-op} {
7630: 0a 4c 49 4b 45 20 7c 20 47 4c 4f 42 20 7c 20 4e  .LIKE | GLOB | N
7640: 4f 54 20 4c 49 4b 45 20 7c 20 4e 4f 54 20 47 4c  OT LIKE | NOT GL
7650: 4f 42 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  OB.}..puts {.<p>
7660: 54 68 69 73 20 73 65 63 74 69 6f 6e 20 69 73 20  This section is 
7670: 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20 74  different from t
7680: 68 65 20 6f 74 68 65 72 73 2e 20 20 4d 6f 73 74  he others.  Most
7690: 20 6f 74 68 65 72 20 73 65 63 74 69 6f 6e 73 20   other sections 
76a0: 6f 66 0a 74 68 69 73 20 64 6f 63 75 6d 65 6e 74  of.this document
76b0: 20 74 61 6c 6b 73 20 61 62 6f 75 74 20 61 20 70   talks about a p
76c0: 61 72 74 69 63 75 6c 61 72 20 53 51 4c 20 63 6f  articular SQL co
76d0: 6d 6d 61 6e 64 2e 20 20 54 68 69 73 20 73 65 63  mmand.  This sec
76e0: 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f 74 20 74 61  tion does.not ta
76f0: 6c 6b 20 61 62 6f 75 74 20 61 20 73 74 61 6e 64  lk about a stand
7700: 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e 64 20 62 75  alone command bu
7710: 74 20 61 62 6f 75 74 20 22 65 78 70 72 65 73 73  t about "express
7720: 69 6f 6e 73 22 20 77 68 69 63 68 20 61 72 65 20  ions" which are 
7730: 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f  .subcomponents o
7740: 66 20 6d 6f 73 74 20 6f 74 68 65 72 20 63 6f 6d  f most other com
7750: 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53  mands.</p>..<p>S
7760: 51 4c 69 74 65 20 75 6e 64 65 72 73 74 61 6e 64  QLite understand
7770: 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  s the following 
7780: 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 73  binary operators
7790: 2c 20 69 6e 20 6f 72 64 65 72 20 66 72 6f 6d 0a  , in order from.
77a0: 68 69 67 68 65 73 74 20 74 6f 20 6c 6f 77 65 73  highest to lowes
77b0: 74 20 70 72 65 63 65 64 65 6e 63 65 3a 3c 2f 70  t precedence:</p
77c0: 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c  >..<blockquote><
77d0: 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72  pre>.<font color
77e0: 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67 3e  ="#2c2cf0"><big>
77f0: 7c 7c 0a 2a 20 20 20 20 2f 20 20 20 20 25 0a 2b  ||.*    /    %.+
7800: 20 20 20 20 2d 0a 26 6c 74 3b 26 6c 74 3b 20 20      -.&lt;&lt;  
7810: 20 26 67 74 3b 26 67 74 3b 20 20 20 26 61 6d 70   &gt;&gt;   &amp
7820: 3b 20 20 20 20 7c 0a 26 6c 74 3b 20 20 20 20 26  ;    |.&lt;    &
7830: 6c 74 3b 3d 20 20 20 26 67 74 3b 20 20 20 20 26  lt;=   &gt;    &
7840: 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d 20 20 20 21  gt;=.=    ==   !
7850: 3d 20 20 20 26 6c 74 3b 26 67 74 3b 20 20 20 3c  =   &lt;&gt;   <
7860: 2f 62 69 67 3e 49 4e 0a 41 4e 44 20 20 20 0a 4f  /big>IN.AND   .O
7870: 52 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c  R</font>.</pre><
7880: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70  /blockquote>..<p
7890: 3e 53 75 70 70 6f 72 74 65 64 20 75 6e 61 72 79  >Supported unary
78a0: 20 6f 70 65 72 61 74 65 72 73 20 61 72 65 20 74   operaters are t
78b0: 68 65 73 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  hese:</p>..<bloc
78c0: 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 3c 66 6f  kquote><pre>.<fo
78d0: 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66  nt color="#2c2cf
78e0: 30 22 3e 3c 62 69 67 3e 2d 20 20 20 20 2b 20 20  0"><big>-    +  
78f0: 20 20 21 20 20 20 20 7e 3c 2f 62 69 67 3e 3c 2f    !    ~</big></
7900: 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c  font>.</pre></bl
7910: 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 41 6e  ockquote>..<p>An
7920: 79 20 53 51 4c 69 74 65 20 76 61 6c 75 65 20 63  y SQLite value c
7930: 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 70 61  an be used as pa
7940: 72 74 20 6f 66 20 61 6e 20 65 78 70 72 65 73 73  rt of an express
7950: 69 6f 6e 2e 20 20 0a 46 6f 72 20 61 72 69 74 68  ion.  .For arith
7960: 6d 65 74 69 63 20 6f 70 65 72 61 74 69 6f 6e 73  metic operations
7970: 2c 20 69 6e 74 65 67 65 72 73 20 61 72 65 20 74  , integers are t
7980: 72 65 61 74 65 64 20 61 73 20 69 6e 74 65 67 65  reated as intege
7990: 72 73 2e 0a 53 74 72 69 6e 67 73 20 61 72 65 20  rs..Strings are 
79a0: 66 69 72 73 74 20 63 6f 6e 76 65 72 74 65 64 20  first converted 
79b0: 74 6f 20 72 65 61 6c 20 6e 75 6d 62 65 72 73 20  to real numbers 
79c0: 75 73 69 6e 67 20 3c 62 3e 61 74 6f 66 28 29 3c  using <b>atof()<
79d0: 2f 62 3e 2e 0a 46 6f 72 20 63 6f 6d 70 61 72 69  /b>..For compari
79e0: 73 6f 6e 20 6f 70 65 72 61 74 6f 72 73 2c 20 6e  son operators, n
79f0: 75 6d 62 65 72 73 20 63 6f 6d 70 61 72 65 20 61  umbers compare a
7a00: 73 20 6e 75 6d 62 65 72 73 20 61 6e 64 20 73 74  s numbers and st
7a10: 72 69 6e 67 73 0a 63 6f 6d 70 61 72 65 20 75 73  rings.compare us
7a20: 69 6e 67 20 74 68 65 20 3c 62 3e 73 74 72 63 6d  ing the <b>strcm
7a30: 70 28 29 3c 2f 62 3e 20 66 75 6e 63 74 69 6f 6e  p()</b> function
7a40: 2e 0a 4e 6f 74 65 20 74 68 61 74 20 74 68 65 72  ..Note that ther
7a50: 65 20 61 72 65 20 74 77 6f 20 76 61 72 69 61 74  e are two variat
7a60: 69 6f 6e 73 20 6f 66 20 74 68 65 20 65 71 75 61  ions of the equa
7a70: 6c 73 20 61 6e 64 20 6e 6f 74 20 65 71 75 61 6c  ls and not equal
7a80: 73 0a 6f 70 65 72 61 74 6f 72 73 2e 20 20 45 71  s.operators.  Eq
7a90: 75 61 6c 73 20 63 61 6e 20 62 65 20 65 69 74 68  uals can be eith
7aa0: 65 72 7d 0a 70 75 74 73 20 22 5b 4f 70 65 72 61  er}.puts "[Opera
7ab0: 74 6f 72 20 3d 5d 20 6f 72 20 5b 4f 70 65 72 61  tor =] or [Opera
7ac0: 74 6f 72 20 3d 3d 5d 2e 0a 54 68 65 20 6e 6f 6e  tor ==]..The non
7ad0: 2d 65 71 75 61 6c 73 20 6f 70 65 72 61 74 6f 72  -equals operator
7ae0: 20 63 61 6e 20 62 65 20 65 69 74 68 65 72 0a 5b   can be either.[
7af0: 4f 70 65 72 61 74 6f 72 20 21 3d 5d 20 6f 72 20  Operator !=] or 
7b00: 5b 4f 70 65 72 61 74 6f 72 20 7b 26 6c 74 3b 26  [Operator {&lt;&
7b10: 67 74 3b 7d 5d 2e 0a 54 68 65 20 5b 4f 70 65 72  gt;}]..The [Oper
7b20: 61 74 6f 72 20 7c 7c 5d 20 6f 70 65 72 61 74 6f  ator ||] operato
7b30: 72 20 69 73 20 5c 22 63 6f 6e 63 61 74 65 6e 61  r is \"concatena
7b40: 74 65 5c 22 20 2d 20 69 74 20 6a 6f 69 6e 73 20  te\" - it joins 
7b50: 74 6f 67 65 74 68 65 72 0a 74 68 65 20 74 77 6f  together.the two
7b60: 20 73 74 72 69 6e 67 73 20 6f 66 20 69 74 73 20   strings of its 
7b70: 6f 70 65 72 61 6e 64 73 2e 0a 54 68 65 20 6f 70  operands..The op
7b80: 65 72 61 74 6f 72 20 5b 4f 70 65 72 61 74 6f 72  erator [Operator
7b90: 20 25 5d 20 6f 75 74 70 75 74 73 20 74 68 65 20   %] outputs the 
7ba0: 72 65 6d 61 69 6e 64 65 72 20 6f 66 20 69 74 73  remainder of its
7bb0: 20 6c 65 66 74 20 0a 6f 70 65 72 61 6e 64 20 6d   left .operand m
7bc0: 6f 64 75 6c 6f 20 69 74 73 20 72 69 67 68 74 20  odulo its right 
7bd0: 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e 22 0a 70 75  operand.</p>".pu
7be0: 74 73 20 7b 0a 0a 3c 61 20 6e 61 6d 65 3d 22 6c  ts {..<a name="l
7bf0: 69 6b 65 22 3e 3c 2f 61 3e 0a 3c 70 3e 54 68 65  ike"></a>.<p>The
7c00: 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 64   LIKE operator d
7c10: 6f 65 73 20 61 20 77 69 6c 64 63 61 72 64 20 63  oes a wildcard c
7c20: 6f 6d 70 61 72 69 73 69 6f 6e 2e 20 20 54 68 65  omparision.  The
7c30: 20 6f 70 65 72 61 6e 64 0a 74 6f 20 74 68 65 20   operand.to the 
7c40: 72 69 67 68 74 20 63 6f 6e 74 61 69 6e 73 20 74  right contains t
7c50: 68 65 20 77 69 6c 64 63 61 72 64 73 2e 7d 0a 70  he wildcards.}.p
7c60: 75 74 73 20 22 41 20 70 65 72 63 65 6e 74 20 73  uts "A percent s
7c70: 79 6d 62 6f 6c 20 5b 4f 70 65 72 61 74 6f 72 20  ymbol [Operator 
7c80: 25 5d 20 69 6e 20 74 68 65 20 72 69 67 68 74 20  %] in the right 
7c90: 6f 70 65 72 61 6e 64 0a 6d 61 74 63 68 65 73 20  operand.matches 
7ca0: 61 6e 79 20 73 65 71 75 65 6e 63 65 20 6f 66 20  any sequence of 
7cb0: 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 63 68 61  zero or more cha
7cc0: 72 61 63 74 65 72 73 20 6f 6e 20 74 68 65 20 6c  racters on the l
7cd0: 65 66 74 2e 0a 41 6e 20 75 6e 64 65 72 73 63 6f  eft..An undersco
7ce0: 72 65 20 5b 4f 70 65 72 61 74 6f 72 20 5f 5d 20  re [Operator _] 
7cf0: 6f 6e 20 74 68 65 20 72 69 67 68 74 0a 6d 61 74  on the right.mat
7d00: 63 68 65 73 20 61 6e 79 20 73 69 6e 67 6c 65 20  ches any single 
7d10: 63 68 61 72 61 63 74 65 72 20 6f 6e 20 74 68 65  character on the
7d20: 20 6c 65 66 74 2e 22 0a 70 75 74 73 20 7b 54 68   left.".puts {Th
7d30: 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20  e LIKE operator 
7d40: 69 73 0a 6e 6f 74 20 63 61 73 65 20 73 65 6e 73  is.not case sens
7d50: 69 74 69 76 65 20 61 6e 64 20 77 69 6c 6c 20 6d  itive and will m
7d60: 61 74 63 68 20 75 70 70 65 72 20 63 61 73 65 20  atch upper case 
7d70: 63 68 61 72 61 63 74 65 72 73 20 6f 6e 20 6f 6e  characters on on
7d80: 65 0a 73 69 64 65 20 61 67 61 69 6e 73 74 20 6c  e.side against l
7d90: 6f 77 65 72 20 63 61 73 65 20 63 68 61 72 61 63  ower case charac
7da0: 74 65 72 73 20 6f 6e 20 74 68 65 20 6f 74 68 65  ters on the othe
7db0: 72 2e 0a 28 41 20 62 75 67 3a 20 53 51 4c 69 74  r..(A bug: SQLit
7dc0: 65 20 6f 6e 6c 79 20 75 6e 64 65 72 73 74 61 6e  e only understan
7dd0: 64 73 20 75 70 70 65 72 2f 6c 6f 77 65 72 20 63  ds upper/lower c
7de0: 61 73 65 20 66 6f 72 20 37 2d 62 69 74 20 4c 61  ase for 7-bit La
7df0: 74 69 6e 0a 63 68 61 72 61 63 74 65 72 73 2e 20  tin.characters. 
7e00: 20 48 65 6e 63 65 20 74 68 65 20 4c 49 4b 45 20   Hence the LIKE 
7e10: 6f 70 65 72 61 74 6f 72 20 69 73 20 63 61 73 65  operator is case
7e20: 20 73 65 6e 73 69 74 69 76 65 20 66 6f 72 0a 38   sensitive for.8
7e30: 2d 62 69 74 20 69 73 6f 38 38 35 39 20 63 68 61  -bit iso8859 cha
7e40: 72 61 63 74 65 72 73 20 6f 72 20 55 54 46 2d 38  racters or UTF-8
7e50: 20 63 68 61 72 61 63 74 65 72 73 2e 20 20 46 6f   characters.  Fo
7e60: 72 20 65 78 61 6d 70 6c 65 2c 0a 74 68 65 20 65  r example,.the e
7e70: 78 70 72 65 73 73 69 6f 6e 20 3c 62 3e 27 61 27  xpression <b>'a'
7e80: 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70 3b  &nbsp;LIKE&nbsp;
7e90: 27 41 27 3c 2f 62 3e 20 69 73 20 54 52 55 45 20  'A'</b> is TRUE 
7ea0: 62 75 74 0a 3c 62 3e 27 26 61 65 6c 69 67 3b 27  but.<b>'&aelig;'
7eb0: 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70 3b  &nbsp;LIKE&nbsp;
7ec0: 27 26 41 45 6c 69 67 3b 27 3c 2f 62 3e 20 69 73  '&AElig;'</b> is
7ed0: 20 46 41 4c 53 45 2e 29 2e 20 20 54 68 65 20 69   FALSE.).  The i
7ee0: 6e 66 69 78 20 0a 4c 49 4b 45 20 6f 70 65 72 61  nfix .LIKE opera
7ef0: 74 6f 72 20 69 73 20 69 64 65 6e 74 69 63 61 6c  tor is identical
7f00: 20 74 68 65 20 75 73 65 72 20 66 75 6e 63 74 69   the user functi
7f10: 6f 6e 20 3c 61 20 68 72 65 66 3d 22 23 6c 69 6b  on <a href="#lik
7f20: 65 46 75 6e 63 22 3e 0a 6c 69 6b 65 28 3c 69 3e  eFunc">.like(<i>
7f30: 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c  X</i>,<i>Y</i>)<
7f40: 2f 61 3e 2e 0a 3c 2f 70 3e 0a 0a 3c 61 20 6e 61  /a>..</p>..<a na
7f50: 6d 65 3d 22 67 6c 6f 62 22 3e 3c 2f 61 3e 0a 3c  me="glob"></a>.<
7f60: 70 3e 54 68 65 20 47 4c 4f 42 20 6f 70 65 72 61  p>The GLOB opera
7f70: 74 6f 72 20 69 73 20 73 69 6d 69 6c 61 72 20 74  tor is similar t
7f80: 6f 20 4c 49 4b 45 20 62 75 74 20 75 73 65 73 20  o LIKE but uses 
7f90: 74 68 65 20 55 6e 69 78 0a 66 69 6c 65 20 67 6c  the Unix.file gl
7fa0: 6f 62 62 69 6e 67 20 73 79 6e 74 61 78 20 66 6f  obbing syntax fo
7fb0: 72 20 69 74 73 20 77 69 6c 64 63 61 72 64 73 2e  r its wildcards.
7fc0: 20 20 41 6c 73 6f 2c 20 47 4c 4f 42 20 69 73 20    Also, GLOB is 
7fd0: 63 61 73 65 0a 73 65 6e 73 69 74 69 76 65 2c 20  case.sensitive, 
7fe0: 75 6e 6c 69 6b 65 20 4c 49 4b 45 2e 20 20 42 6f  unlike LIKE.  Bo
7ff0: 74 68 20 47 4c 4f 42 20 61 6e 64 20 4c 49 4b 45  th GLOB and LIKE
8000: 20 6d 61 79 20 62 65 20 70 72 65 63 65 64 65 64   may be preceded
8010: 20 62 79 0a 74 68 65 20 4e 4f 54 20 6b 65 79 77   by.the NOT keyw
8020: 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74 68  ord to invert th
8030: 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20 74  e sense of the t
8040: 65 73 74 2e 20 20 54 68 65 20 69 6e 66 69 78 20  est.  The infix 
8050: 47 4c 4f 42 20 0a 6f 70 65 72 61 74 6f 72 20 69  GLOB .operator i
8060: 73 20 69 64 65 6e 74 69 63 61 6c 20 74 68 65 20  s identical the 
8070: 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 20 3c 61  user function <a
8080: 20 68 72 65 66 3d 22 23 67 6c 6f 62 46 75 6e 63   href="#globFunc
8090: 22 3e 0a 67 6c 6f 62 28 3c 69 3e 58 3c 2f 69 3e  ">.glob(<i>X</i>
80a0: 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 61 3e 2e 3c  ,<i>Y</i>)</a>.<
80b0: 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6c 75 6d 6e  /p>..<p>A column
80c0: 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 61 6e 79   name can be any
80d0: 20 6f 66 20 74 68 65 20 6e 61 6d 65 73 20 64 65   of the names de
80e0: 66 69 6e 65 64 20 69 6e 20 74 68 65 20 43 52 45  fined in the CRE
80f0: 41 54 45 20 54 41 42 4c 45 0a 73 74 61 74 65 6d  ATE TABLE.statem
8100: 65 6e 74 20 6f 72 20 6f 6e 65 20 6f 66 20 74 68  ent or one of th
8110: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 70 65 63  e following spec
8120: 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73 3a  ial identifiers:
8130: 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c   "<b>ROWID</b>",
8140: 0a 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f  ."<b>OID</b>", o
8150: 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62  r "<b>_ROWID_</b
8160: 3e 22 2e 0a 54 68 65 73 65 20 73 70 65 63 69 61  >"..These specia
8170: 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20 61 6c  l identifiers al
8180: 6c 20 64 65 73 63 72 69 62 65 20 74 68 65 0a 75  l describe the.u
8190: 6e 69 71 75 65 20 72 61 6e 64 6f 6d 20 69 6e 74  nique random int
81a0: 65 67 65 72 20 6b 65 79 20 28 74 68 65 20 22 72  eger key (the "r
81b0: 6f 77 20 6b 65 79 22 29 20 61 73 73 6f 63 69 61  ow key") associa
81c0: 74 65 64 20 77 69 74 68 20 65 76 65 72 79 20 0a  ted with every .
81d0: 72 6f 77 20 6f 66 20 65 76 65 72 79 20 74 61 62  row of every tab
81e0: 6c 65 2e 0a 54 68 65 20 73 70 65 63 69 61 6c 20  le..The special 
81f0: 69 64 65 6e 74 69 66 69 65 72 73 20 6f 6e 6c 79  identifiers only
8200: 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 72 6f   refer to the ro
8210: 77 20 6b 65 79 20 69 66 20 74 68 65 20 43 52 45  w key if the CRE
8220: 41 54 45 20 54 41 42 4c 45 0a 73 74 61 74 65 6d  ATE TABLE.statem
8230: 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 64 65 66  ent does not def
8240: 69 6e 65 20 61 20 72 65 61 6c 20 63 6f 6c 75 6d  ine a real colum
8250: 6e 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20  n with the same 
8260: 6e 61 6d 65 2e 20 20 52 6f 77 20 6b 65 79 73 0a  name.  Row keys.
8270: 61 63 74 20 6c 69 6b 65 20 72 65 61 64 2d 6f 6e  act like read-on
8280: 6c 79 20 63 6f 6c 75 6d 6e 73 2e 20 20 41 20 72  ly columns.  A r
8290: 6f 77 20 6b 65 79 20 63 61 6e 20 62 65 20 75 73  ow key can be us
82a0: 65 64 20 61 6e 79 77 68 65 72 65 20 61 20 72 65  ed anywhere a re
82b0: 67 75 6c 61 72 0a 63 6f 6c 75 6d 6e 20 63 61 6e  gular.column can
82c0: 20 62 65 20 75 73 65 64 2c 20 65 78 63 65 70 74   be used, except
82d0: 20 74 68 61 74 20 79 6f 75 20 63 61 6e 6e 6f 74   that you cannot
82e0: 20 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c 75   change the valu
82f0: 65 0a 6f 66 20 61 20 72 6f 77 20 6b 65 79 20 69  e.of a row key i
8300: 6e 20 61 6e 20 55 50 44 41 54 45 20 6f 72 20 49  n an UPDATE or I
8310: 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 2e  NSERT statement.
8320: 0a 22 53 45 4c 45 43 54 20 2a 20 2e 2e 2e 22 20  ."SELECT * ..." 
8330: 64 6f 65 73 20 6e 6f 74 20 72 65 74 75 72 6e 20  does not return 
8340: 74 68 65 20 72 6f 77 20 6b 65 79 2e 3c 2f 70 3e  the row key.</p>
8350: 0a 0a 3c 70 3e 53 45 4c 45 43 54 20 73 74 61 74  ..<p>SELECT stat
8360: 65 6d 65 6e 74 73 20 63 61 6e 20 61 70 70 65 61  ements can appea
8370: 72 20 69 6e 20 65 78 70 72 65 73 73 69 6f 6e 73  r in expressions
8380: 20 61 73 20 65 69 74 68 65 72 20 74 68 65 0a 72   as either the.r
8390: 69 67 68 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e  ight-hand operan
83a0: 64 20 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72  d of the IN oper
83b0: 61 74 6f 72 20 6f 72 20 61 73 20 61 20 73 63 61  ator or as a sca
83c0: 6c 61 72 20 71 75 61 6e 74 69 74 79 2e 0a 49 6e  lar quantity..In
83d0: 20 62 6f 74 68 20 63 61 73 65 73 2c 20 74 68 65   both cases, the
83e0: 20 53 45 4c 45 43 54 20 73 68 6f 75 6c 64 20 68   SELECT should h
83f0: 61 76 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c  ave only a singl
8400: 65 20 63 6f 6c 75 6d 6e 20 69 6e 20 69 74 73 0a  e column in its.
8410: 72 65 73 75 6c 74 2e 20 20 43 6f 6d 70 6f 75 6e  result.  Compoun
8420: 64 20 53 45 4c 45 43 54 73 20 28 63 6f 6e 6e 65  d SELECTs (conne
8430: 63 74 65 64 20 77 69 74 68 20 6b 65 79 77 6f 72  cted with keywor
8440: 64 73 20 6c 69 6b 65 20 55 4e 49 4f 4e 20 6f 72  ds like UNION or
8450: 0a 45 58 43 45 50 54 29 20 61 72 65 20 61 6c 6c  .EXCEPT) are all
8460: 6f 77 65 64 2e 0a 41 20 53 45 4c 45 43 54 20 69  owed..A SELECT i
8470: 6e 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20  n an expression 
8480: 69 73 20 65 76 61 6c 75 61 74 65 64 20 6f 6e 63  is evaluated onc
8490: 65 20 62 65 66 6f 72 65 20 61 6e 79 20 6f 74 68  e before any oth
84a0: 65 72 20 70 72 6f 63 65 73 73 69 6e 67 0a 69 73  er processing.is
84b0: 20 70 65 72 66 6f 72 6d 65 64 2c 20 73 6f 20 6e   performed, so n
84c0: 6f 6e 65 20 6f 66 20 74 68 65 20 65 78 70 72 65  one of the expre
84d0: 73 73 69 6f 6e 73 20 77 69 74 68 69 6e 20 74 68  ssions within th
84e0: 65 20 73 65 6c 65 63 74 20 69 74 73 65 6c 66 20  e select itself 
84f0: 63 61 6e 0a 72 65 66 65 72 20 74 6f 20 71 75 61  can.refer to qua
8500: 6e 74 69 74 69 65 73 20 69 6e 20 74 68 65 20 63  ntities in the c
8510: 6f 6e 74 61 69 6e 69 6e 67 20 65 78 70 72 65 73  ontaining expres
8520: 73 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68  sion.</p>..<p>Wh
8530: 65 6e 20 61 20 53 45 4c 45 43 54 20 69 73 20 74  en a SELECT is t
8540: 68 65 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64  he right operand
8550: 20 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61   of the IN opera
8560: 74 6f 72 2c 20 74 68 65 20 49 4e 0a 6f 70 65 72  tor, the IN.oper
8570: 61 74 6f 72 20 72 65 74 75 72 6e 73 20 54 52 55  ator returns TRU
8580: 45 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20  E if the result 
8590: 6f 66 20 74 68 65 20 6c 65 66 74 20 6f 70 65 72  of the left oper
85a0: 61 6e 64 20 69 73 20 61 6e 79 20 6f 66 0a 74 68  and is any of.th
85b0: 65 20 76 61 6c 75 65 73 20 67 65 6e 65 72 61 74  e values generat
85c0: 65 64 20 62 79 20 74 68 65 20 73 65 6c 65 63 74  ed by the select
85d0: 2e 20 20 54 68 65 20 49 4e 20 6f 70 65 72 61 74  .  The IN operat
85e0: 6f 72 20 6d 61 79 20 62 65 20 70 72 65 63 65 64  or may be preced
85f0: 65 64 0a 62 79 20 74 68 65 20 4e 4f 54 20 6b 65  ed.by the NOT ke
8600: 79 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20  yword to invert 
8610: 74 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65  the sense of the
8620: 20 74 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57   test.</p>..<p>W
8630: 68 65 6e 20 61 20 53 45 4c 45 43 54 20 61 70 70  hen a SELECT app
8640: 65 61 72 73 20 77 69 74 68 69 6e 20 61 6e 20 65  ears within an e
8650: 78 70 72 65 73 73 69 6f 6e 20 62 75 74 20 69 73  xpression but is
8660: 20 6e 6f 74 20 74 68 65 20 72 69 67 68 74 0a 6f   not the right.o
8670: 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20  perand of an IN 
8680: 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 6e 20 74  operator, then t
8690: 68 65 20 66 69 72 73 74 20 72 6f 77 20 6f 66 20  he first row of 
86a0: 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68  the result of th
86b0: 65 0a 53 45 4c 45 43 54 20 62 65 63 6f 6d 65 73  e.SELECT becomes
86c0: 20 74 68 65 20 76 61 6c 75 65 20 75 73 65 64 20   the value used 
86d0: 69 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  in the expressio
86e0: 6e 2e 20 20 49 66 20 74 68 65 20 53 45 4c 45 43  n.  If the SELEC
86f0: 54 20 79 69 65 6c 64 73 0a 6d 6f 72 65 20 74 68  T yields.more th
8700: 61 6e 20 6f 6e 65 20 72 65 73 75 6c 74 20 72 6f  an one result ro
8710: 77 2c 20 61 6c 6c 20 72 6f 77 73 20 61 66 74 65  w, all rows afte
8720: 72 20 74 68 65 20 66 69 72 73 74 20 61 72 65 20  r the first are 
8730: 69 67 6e 6f 72 65 64 2e 20 20 49 66 0a 74 68 65  ignored.  If.the
8740: 20 53 45 4c 45 43 54 20 79 65 69 6c 64 73 20 6e   SELECT yeilds n
8750: 6f 20 72 6f 77 73 2c 20 74 68 65 6e 20 74 68 65  o rows, then the
8760: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 53 45   value of the SE
8770: 4c 45 43 54 20 69 73 20 4e 55 4c 4c 2e 3c 2f 70  LECT is NULL.</p
8780: 3e 0a 0a 3c 70 3e 42 6f 74 68 20 73 69 6d 70 6c  >..<p>Both simpl
8790: 65 20 61 6e 64 20 61 67 67 72 65 67 61 74 65 20  e and aggregate 
87a0: 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 73 75  functions are su
87b0: 70 70 6f 72 74 65 64 2e 20 20 41 20 73 69 6d 70  pported.  A simp
87c0: 6c 65 0a 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20  le.function can 
87d0: 62 65 20 75 73 65 64 20 69 6e 20 61 6e 79 20 65  be used in any e
87e0: 78 70 72 65 73 73 69 6f 6e 2e 20 20 53 69 6d 70  xpression.  Simp
87f0: 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74  le functions ret
8800: 75 72 6e 0a 61 20 72 65 73 75 6c 74 20 69 6d 6d  urn.a result imm
8810: 65 64 69 61 74 65 6c 79 20 62 61 73 65 64 20 6f  ediately based o
8820: 6e 20 74 68 65 69 72 20 69 6e 70 75 74 73 2e 20  n their inputs. 
8830: 20 41 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   Aggregate funct
8840: 69 6f 6e 73 0a 6d 61 79 20 6f 6e 6c 79 20 62 65  ions.may only be
8850: 20 75 73 65 64 20 69 6e 20 61 20 53 45 4c 45 43   used in a SELEC
8860: 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 41 67  T statement.  Ag
8870: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
8880: 73 20 63 6f 6d 70 75 74 65 0a 74 68 65 69 72 20  s compute.their 
8890: 72 65 73 75 6c 74 20 61 63 72 6f 73 73 20 61 6c  result across al
88a0: 6c 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72 65  l rows of the re
88b0: 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a 3c  sult set.</p>..<
88c0: 70 3e 54 68 65 20 66 75 6e 63 74 69 6f 6e 73 20  p>The functions 
88d0: 73 68 6f 77 6e 20 62 65 6c 6f 77 20 61 72 65 20  shown below are 
88e0: 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66  available by def
88f0: 61 75 6c 74 2e 20 20 41 64 64 69 74 69 6f 6e 61  ault.  Additiona
8900: 6c 0a 66 75 6e 63 74 69 6f 6e 73 20 6d 61 79 20  l.functions may 
8910: 62 65 20 77 72 69 74 74 65 6e 20 69 6e 20 43 20  be written in C 
8920: 61 6e 64 20 61 64 64 65 64 20 74 6f 20 74 68 65  and added to the
8930: 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65   database engine
8940: 20 75 73 69 6e 67 0a 74 68 65 20 3c 61 20 68 72   using.the <a hr
8950: 65 66 3d 22 63 61 70 69 33 72 65 66 2e 68 74 6d  ef="capi3ref.htm
8960: 6c 23 63 66 75 6e 63 22 3e 73 71 6c 69 74 65 33  l#cfunc">sqlite3
8970: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
8980: 28 29 3c 2f 61 3e 0a 41 50 49 2e 3c 2f 70 3e 0a  ()</a>.API.</p>.
8990: 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30  .<table border=0
89a0: 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e   cellpadding=10>
89b0: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
89c0: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
89d0: 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 61  ght" width=120>a
89e0: 62 73 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64  bs(<i>X</i>)</td
89f0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
8a00: 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 61 62  p">Return the ab
8a10: 73 6f 6c 75 74 65 20 76 61 6c 75 65 20 6f 66 20  solute value of 
8a20: 61 72 67 75 6d 65 6e 74 20 3c 69 3e 58 3c 2f 69  argument <i>X</i
8a30: 3e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  >.</td>.</tr>..<
8a40: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
8a50: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
8a60: 74 22 3e 63 6f 61 6c 65 73 63 65 28 3c 69 3e 58  t">coalesce(<i>X
8a70: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e  </i>,<i>Y</i>,..
8a80: 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  .)</td>.<td vali
8a90: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
8aa0: 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 66 69  a copy of the fi
8ab0: 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67  rst non-NULL arg
8ac0: 75 6d 65 6e 74 2e 20 20 49 66 0a 61 6c 6c 20 61  ument.  If.all a
8ad0: 72 67 75 6d 65 6e 74 73 20 61 72 65 20 4e 55 4c  rguments are NUL
8ae0: 4c 20 74 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72  L then NULL is r
8af0: 65 74 75 72 6e 65 64 2e 20 20 54 68 65 72 65 20  eturned.  There 
8b00: 6d 75 73 74 20 62 65 20 61 74 20 6c 65 61 73 74  must be at least
8b10: 20 0a 32 20 61 72 67 75 6d 65 6e 74 73 2e 3c 2f   .2 arguments.</
8b20: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
8b30: 3c 61 20 6e 61 6d 65 3d 22 67 6c 6f 62 46 75 6e  <a name="globFun
8b40: 63 22 3e 3c 2f 61 3e 0a 3c 74 64 20 76 61 6c 69  c"></a>.<td vali
8b50: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
8b60: 72 69 67 68 74 22 3e 67 6c 6f 62 28 3c 69 3e 58  right">glob(<i>X
8b70: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f  </i>,<i>Y</i>)</
8b80: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
8b90: 74 6f 70 22 3e 54 68 69 73 20 66 75 6e 63 74 69  top">This functi
8ba0: 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 69 6d  on is used to im
8bb0: 70 6c 65 6d 65 6e 74 20 74 68 65 0a 22 3c 62 3e  plement the."<b>
8bc0: 58 20 47 4c 4f 42 20 59 3c 2f 62 3e 22 20 73 79  X GLOB Y</b>" sy
8bd0: 6e 74 61 78 20 6f 66 20 53 51 4c 69 74 65 2e 20  ntax of SQLite. 
8be0: 20 54 68 65 0a 3c 61 20 68 72 65 66 3d 22 63 61   The.<a href="ca
8bf0: 70 69 33 72 65 66 2e 68 74 6d 6c 23 73 71 6c 69  pi3ref.html#sqli
8c00: 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74  te3_create_funct
8c10: 69 6f 6e 22 3e 73 71 6c 69 74 65 33 5f 63 72 65  ion">sqlite3_cre
8c20: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 3c 2f  ate_function()</
8c30: 61 3e 20 0a 69 6e 74 65 72 66 61 63 65 20 63 61  a> .interface ca
8c40: 6e 0a 62 65 20 75 73 65 64 20 74 6f 20 6f 76 65  n.be used to ove
8c50: 72 72 69 64 65 20 74 68 69 73 20 66 75 6e 63 74  rride this funct
8c60: 69 6f 6e 20 61 6e 64 20 74 68 65 72 65 62 79 20  ion and thereby 
8c70: 63 68 61 6e 67 65 20 74 68 65 20 6f 70 65 72 61  change the opera
8c80: 74 69 6f 6e 0a 6f 66 20 74 68 65 20 3c 61 20 68  tion.of the <a h
8c90: 72 65 66 3d 22 23 67 6c 6f 62 22 3e 47 4c 4f 42  ref="#glob">GLOB
8ca0: 3c 2f 61 3e 20 6f 70 65 72 61 74 6f 72 2e 3c 2f  </a> operator.</
8cb0: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
8cc0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
8cd0: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 69   align="right">i
8ce0: 66 6e 75 6c 6c 28 3c 69 3e 58 3c 2f 69 3e 2c 3c  fnull(<i>X</i>,<
8cf0: 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>Y</i>)</td>.<t
8d00: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
8d10: 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20  eturn a copy of 
8d20: 74 68 65 20 66 69 72 73 74 20 6e 6f 6e 2d 4e 55  the first non-NU
8d30: 4c 4c 20 61 72 67 75 6d 65 6e 74 2e 20 20 49 66  LL argument.  If
8d40: 0a 62 6f 74 68 20 61 72 67 75 6d 65 6e 74 73 20  .both arguments 
8d50: 61 72 65 20 4e 55 4c 4c 20 74 68 65 6e 20 4e 55  are NULL then NU
8d60: 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20  LL is returned. 
8d70: 54 68 69 73 20 62 65 68 61 76 65 73 20 74 68 65  This behaves the
8d80: 20 73 61 6d 65 20 61 73 20 0a 3c 62 3e 63 6f 61   same as .<b>coa
8d90: 6c 65 73 63 65 28 29 3c 2f 62 3e 20 61 62 6f 76  lesce()</b> abov
8da0: 65 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  e.</td>.</tr>..<
8db0: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
8dc0: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
8dd0: 74 22 3e 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  t">last_insert_r
8de0: 6f 77 69 64 28 29 3c 2f 74 64 3e 0a 3c 74 64 20  owid()</td>.<td 
8df0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
8e00: 75 72 6e 20 74 68 65 20 52 4f 57 49 44 20 6f 66  urn the ROWID of
8e10: 20 74 68 65 20 6c 61 73 74 20 72 6f 77 20 69 6e   the last row in
8e20: 73 65 72 74 20 66 72 6f 6d 20 74 68 69 73 0a 63  sert from this.c
8e30: 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68 65  onnection to the
8e40: 20 64 61 74 61 62 61 73 65 2e 20 20 54 68 69 73   database.  This
8e50: 20 69 73 20 74 68 65 20 73 61 6d 65 20 76 61 6c   is the same val
8e60: 75 65 20 74 68 61 74 20 77 6f 75 6c 64 20 62 65  ue that would be
8e70: 20 72 65 74 75 72 6e 65 64 0a 66 72 6f 6d 20 74   returned.from t
8e80: 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6c 61 73  he <b>sqlite_las
8e90: 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29  t_insert_rowid()
8ea0: 3c 2f 62 3e 20 41 50 49 20 66 75 6e 63 74 69 6f  </b> API functio
8eb0: 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  n.</td>.</tr>..<
8ec0: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
8ed0: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
8ee0: 74 22 3e 6c 65 6e 67 74 68 28 3c 69 3e 58 3c 2f  t">length(<i>X</
8ef0: 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  i>)</td>.<td val
8f00: 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e  ign="top">Return
8f10: 20 74 68 65 20 73 74 72 69 6e 67 20 6c 65 6e 67   the string leng
8f20: 74 68 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20 69  th of <i>X</i> i
8f30: 6e 20 63 68 61 72 61 63 74 65 72 73 2e 0a 49 66  n characters..If
8f40: 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6e 66 69   SQLite is confi
8f50: 67 75 72 65 64 20 74 6f 20 73 75 70 70 6f 72 74  gured to support
8f60: 20 55 54 46 2d 38 2c 20 74 68 65 6e 20 74 68 65   UTF-8, then the
8f70: 20 6e 75 6d 62 65 72 20 6f 66 20 55 54 46 2d 38   number of UTF-8
8f80: 0a 63 68 61 72 61 63 74 65 72 73 20 69 73 20 72  .characters is r
8f90: 65 74 75 72 6e 65 64 2c 20 6e 6f 74 20 74 68 65  eturned, not the
8fa0: 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
8fb0: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
8fc0: 72 3e 0a 3c 61 20 6e 61 6d 65 3d 22 6c 69 6b 65  r>.<a name="like
8fd0: 46 75 6e 63 22 3e 3c 2f 61 3e 0a 3c 74 64 20 76  Func"></a>.<td v
8fe0: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
8ff0: 6e 3d 22 72 69 67 68 74 22 3e 6c 69 6b 65 28 3c  n="right">like(<
9000: 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e  i>X</i>,<i>Y</i>
9010: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
9020: 6e 3d 22 74 6f 70 22 3e 54 68 69 73 20 66 75 6e  n="top">This fun
9030: 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ction is used to
9040: 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a 22   implement the."
9050: 3c 62 3e 58 20 4c 49 4b 45 20 59 3c 2f 62 3e 22  <b>X LIKE Y</b>"
9060: 20 73 79 6e 74 61 78 20 6f 66 20 53 51 4c 2e 20   syntax of SQL. 
9070: 20 54 68 65 0a 3c 61 20 68 72 65 66 3d 22 63 61   The.<a href="ca
9080: 70 69 33 72 65 66 2e 68 74 6d 6c 23 73 71 6c 69  pi3ref.html#sqli
9090: 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74  te3_create_funct
90a0: 69 6f 6e 22 3e 73 71 6c 69 74 65 5f 63 72 65 61  ion">sqlite_crea
90b0: 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 3c 2f 61  te_function()</a
90c0: 3e 20 0a 69 6e 74 65 72 66 61 63 65 20 63 61 6e  > .interface can
90d0: 0a 62 65 20 75 73 65 64 20 74 6f 20 6f 76 65 72  .be used to over
90e0: 72 69 64 65 20 74 68 69 73 20 66 75 6e 63 74 69  ride this functi
90f0: 6f 6e 20 61 6e 64 20 74 68 65 72 65 62 79 20 63  on and thereby c
9100: 68 61 6e 67 65 20 74 68 65 20 6f 70 65 72 61 74  hange the operat
9110: 69 6f 6e 0a 6f 66 20 74 68 65 20 3c 61 20 68 72  ion.of the <a hr
9120: 65 66 3d 22 23 6c 69 6b 65 22 3e 4c 49 4b 45 3c  ef="#like">LIKE<
9130: 2f 61 3e 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 74  /a> operator.</t
9140: 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c  d>.</tr>..<tr>.<
9150: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
9160: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6c 6f  align="right">lo
9170: 77 65 72 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74  wer(<i>X</i>)</t
9180: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
9190: 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 63 6f 70  op">Return a cop
91a0: 79 20 6f 66 20 73 74 72 69 6e 67 20 3c 69 3e 58  y of string <i>X
91b0: 3c 2f 69 3e 20 77 69 6c 6c 20 61 6c 6c 20 63 68  </i> will all ch
91c0: 61 72 61 63 74 65 72 73 0a 63 6f 6e 76 65 72 74  aracters.convert
91d0: 65 64 20 74 6f 20 6c 6f 77 65 72 20 63 61 73 65  ed to lower case
91e0: 2e 20 20 54 68 65 20 43 20 6c 69 62 72 61 72 79  .  The C library
91f0: 20 3c 62 3e 74 6f 6c 6f 77 65 72 28 29 3c 2f 62   <b>tolower()</b
9200: 3e 20 72 6f 75 74 69 6e 65 20 69 73 20 75 73 65  > routine is use
9210: 64 0a 66 6f 72 20 74 68 65 20 63 6f 6e 76 65 72  d.for the conver
9220: 73 69 6f 6e 2c 20 77 68 69 63 68 20 6d 65 61 6e  sion, which mean
9230: 73 20 74 68 61 74 20 74 68 69 73 20 66 75 6e 63  s that this func
9240: 74 69 6f 6e 20 6d 69 67 68 74 20 6e 6f 74 0a 77  tion might not.w
9250: 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 6f 6e  ork correctly on
9260: 20 55 54 46 2d 38 20 63 68 61 72 61 63 74 65 72   UTF-8 character
9270: 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  s.</td>.</tr>..<
9280: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
9290: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
92a0: 74 22 3e 6d 61 78 28 3c 69 3e 58 3c 2f 69 3e 2c  t">max(<i>X</i>,
92b0: 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74  <i>Y</i>,...)</t
92c0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
92d0: 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 61  op">Return the a
92e0: 72 67 75 6d 65 6e 74 20 77 69 74 68 20 74 68 65  rgument with the
92f0: 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 2e 20   maximum value. 
9300: 20 41 72 67 75 6d 65 6e 74 73 0a 6d 61 79 20 62   Arguments.may b
9310: 65 20 73 74 72 69 6e 67 73 20 69 6e 20 61 64 64  e strings in add
9320: 69 74 69 6f 6e 20 74 6f 20 6e 75 6d 62 65 72 73  ition to numbers
9330: 2e 20 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 76  .  The maximum v
9340: 61 6c 75 65 20 69 73 20 64 65 74 65 72 6d 69 6e  alue is determin
9350: 65 64 0a 62 79 20 74 68 65 20 75 73 75 61 6c 20  ed.by the usual 
9360: 73 6f 72 74 20 6f 72 64 65 72 2e 20 20 4e 6f 74  sort order.  Not
9370: 65 20 74 68 61 74 20 3c 62 3e 6d 61 78 28 29 3c  e that <b>max()<
9380: 2f 62 3e 20 69 73 20 61 20 73 69 6d 70 6c 65 20  /b> is a simple 
9390: 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 69 74  function when.it
93a0: 20 68 61 73 20 32 20 6f 72 20 6d 6f 72 65 20 61   has 2 or more a
93b0: 72 67 75 6d 65 6e 74 73 20 62 75 74 20 63 6f 6e  rguments but con
93c0: 76 65 72 74 73 20 74 6f 20 61 6e 20 61 67 67 72  verts to an aggr
93d0: 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 69  egate function i
93e0: 66 20 67 69 76 65 6e 0a 6f 6e 6c 79 20 61 20 73  f given.only a s
93f0: 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 2e 3c  ingle argument.<
9400: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
9410: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
9420: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
9430: 6d 69 6e 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  min(<i>X</i>,<i>
9440: 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e 0a  Y</i>,...)</td>.
9450: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
9460: 3e 52 65 74 75 72 6e 20 74 68 65 20 61 72 67 75  >Return the argu
9470: 6d 65 6e 74 20 77 69 74 68 20 74 68 65 20 6d 69  ment with the mi
9480: 6e 69 6d 75 6d 20 76 61 6c 75 65 2e 20 20 41 72  nimum value.  Ar
9490: 67 75 6d 65 6e 74 73 0a 6d 61 79 20 62 65 20 73  guments.may be s
94a0: 74 72 69 6e 67 73 20 69 6e 20 61 64 64 69 74 69  trings in additi
94b0: 6f 6e 20 74 6f 20 6e 75 6d 62 65 72 73 2e 20 20  on to numbers.  
94c0: 54 68 65 20 6d 6d 69 6e 69 6d 75 6d 20 76 61 6c  The mminimum val
94d0: 75 65 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64  ue is determined
94e0: 0a 62 79 20 74 68 65 20 75 73 75 61 6c 20 73 6f  .by the usual so
94f0: 72 74 20 6f 72 64 65 72 2e 20 20 4e 6f 74 65 20  rt order.  Note 
9500: 74 68 61 74 20 3c 62 3e 6d 69 6e 28 29 3c 2f 62  that <b>min()</b
9510: 3e 20 69 73 20 61 20 73 69 6d 70 6c 65 20 66 75  > is a simple fu
9520: 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 69 74 20 68  nction when.it h
9530: 61 73 20 32 20 6f 72 20 6d 6f 72 65 20 61 72 67  as 2 or more arg
9540: 75 6d 65 6e 74 73 20 62 75 74 20 63 6f 6e 76 65  uments but conve
9550: 72 74 73 20 74 6f 20 61 6e 20 61 67 67 72 65 67  rts to an aggreg
9560: 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 69 66 20  ate function if 
9570: 67 69 76 65 6e 0a 6f 6e 6c 79 20 61 20 73 69 6e  given.only a sin
9580: 67 6c 65 20 61 72 67 75 6d 65 6e 74 2e 3c 2f 74  gle argument.</t
9590: 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c  d>.</tr>..<tr>.<
95a0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
95b0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6e 75  align="right">nu
95c0: 6c 6c 69 66 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  llif(<i>X</i>,<i
95d0: 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >Y</i>)</td>.<td
95e0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
95f0: 74 75 72 6e 20 74 68 65 20 66 69 72 73 74 20 61  turn the first a
9600: 72 67 75 6d 65 6e 74 20 69 66 20 74 68 65 20 61  rgument if the a
9610: 72 67 75 6d 65 6e 74 73 20 61 72 65 20 64 69 66  rguments are dif
9620: 66 65 72 65 6e 74 2c 20 0a 6f 74 68 65 72 77 69  ferent, .otherwi
9630: 73 65 20 72 65 74 75 72 6e 20 4e 55 4c 4c 2e 3c  se return NULL.<
9640: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
9650: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
9660: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
9670: 71 75 6f 74 65 28 3c 69 3e 58 3c 2f 69 3e 29 3c  quote(<i>X</i>)<
9680: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
9690: 22 74 6f 70 22 3e 54 68 69 73 20 72 6f 75 74 69  "top">This routi
96a0: 6e 65 20 72 65 74 75 72 6e 73 20 61 20 73 74 72  ne returns a str
96b0: 69 6e 67 20 77 68 69 63 68 20 69 73 20 74 68 65  ing which is the
96c0: 20 76 61 6c 75 65 20 6f 66 0a 69 74 73 20 61 72   value of.its ar
96d0: 67 75 6d 65 6e 74 20 73 75 69 74 61 62 6c 65 20  gument suitable 
96e0: 66 6f 72 20 69 6e 63 6c 75 73 69 6f 6e 20 69 6e  for inclusion in
96f0: 74 6f 20 61 6e 6f 74 68 65 72 20 53 51 4c 20 73  to another SQL s
9700: 74 61 74 65 6d 65 6e 74 2e 0a 53 74 72 69 6e 67  tatement..String
9710: 73 20 61 72 65 20 73 75 72 72 6f 75 6e 64 65 64  s are surrounded
9720: 20 62 79 20 73 69 6e 67 6c 65 2d 71 75 6f 74 65   by single-quote
9730: 73 20 77 69 74 68 20 65 73 63 61 70 65 73 20 6f  s with escapes o
9740: 6e 20 69 6e 74 65 72 69 6f 72 20 71 75 6f 74 65  n interior quote
9750: 73 0a 61 73 20 6e 65 65 64 65 64 2e 20 20 42 4c  s.as needed.  BL
9760: 4f 42 73 20 61 72 65 20 65 6e 63 6f 64 65 64 20  OBs are encoded 
9770: 61 73 20 68 65 78 61 64 65 63 69 6d 61 6c 20 6c  as hexadecimal l
9780: 69 74 65 72 61 6c 73 2e 0a 54 68 65 20 63 75 72  iterals..The cur
9790: 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74  rent implementat
97a0: 69 6f 6e 20 6f 66 20 56 41 43 55 55 4d 20 75 73  ion of VACUUM us
97b0: 65 73 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  es this function
97c0: 2e 20 20 54 68 65 20 66 75 6e 63 74 69 6f 6e 0a  .  The function.
97d0: 69 73 20 61 6c 73 6f 20 75 73 65 66 75 6c 20 77  is also useful w
97e0: 68 65 6e 20 77 72 69 74 69 6e 67 20 74 72 69 67  hen writing trig
97f0: 67 65 72 73 20 74 6f 20 69 6d 70 6c 65 6d 65 6e  gers to implemen
9800: 74 20 75 6e 64 6f 2f 72 65 64 6f 20 66 75 6e 63  t undo/redo func
9810: 74 69 6f 6e 61 6c 69 74 79 2e 0a 3c 2f 74 64 3e  tionality..</td>
9820: 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64  .</tr>..<tr>.<td
9830: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
9840: 69 67 6e 3d 22 72 69 67 68 74 22 3e 72 61 6e 64  ign="right">rand
9850: 6f 6d 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  om(*)</td>.<td v
9860: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
9870: 72 6e 20 61 20 72 61 6e 64 6f 6d 20 69 6e 74 65  rn a random inte
9880: 67 65 72 20 62 65 74 77 65 65 6e 20 2d 32 31 34  ger between -214
9890: 37 34 38 33 36 34 38 20 61 6e 64 0a 2b 32 31 34  7483648 and.+214
98a0: 37 34 38 33 36 34 37 2e 3c 2f 74 64 3e 0a 3c 2f  7483647.</td>.</
98b0: 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  tr>..<tr>.<td va
98c0: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
98d0: 3d 22 72 69 67 68 74 22 3e 72 6f 75 6e 64 28 3c  ="right">round(<
98e0: 69 3e 58 3c 2f 69 3e 29 3c 62 72 3e 72 6f 75 6e  i>X</i>)<br>roun
98f0: 64 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c  d(<i>X</i>,<i>Y<
9900: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
9910: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 6f 75 6e 64  lign="top">Round
9920: 20 6f 66 66 20 74 68 65 20 6e 75 6d 62 65 72 20   off the number 
9930: 3c 69 3e 58 3c 2f 69 3e 20 74 6f 20 3c 69 3e 59  <i>X</i> to <i>Y
9940: 3c 2f 69 3e 20 64 69 67 69 74 73 20 74 6f 20 74  </i> digits to t
9950: 68 65 0a 72 69 67 68 74 20 6f 66 20 74 68 65 20  he.right of the 
9960: 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74 2e 20 20  decimal point.  
9970: 49 66 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 20  If the <i>Y</i> 
9980: 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74  argument is omit
9990: 74 65 64 2c 20 30 20 69 73 20 0a 61 73 73 75 6d  ted, 0 is .assum
99a0: 65 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  ed.</td>.</tr>..
99b0: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
99c0: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
99d0: 68 74 22 3e 73 6f 75 6e 64 65 78 28 3c 69 3e 58  ht">soundex(<i>X
99e0: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
99f0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 43 6f 6d 70  align="top">Comp
9a00: 75 74 65 20 74 68 65 20 73 6f 75 6e 64 65 78 20  ute the soundex 
9a10: 65 6e 63 6f 64 69 6e 67 20 6f 66 20 74 68 65 20  encoding of the 
9a20: 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 2e  string <i>X</i>.
9a30: 0a 54 68 65 20 73 74 72 69 6e 67 20 22 3f 30 30  .The string "?00
9a40: 30 22 20 69 73 20 72 65 74 75 72 6e 65 64 20 69  0" is returned i
9a50: 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69  f the argument i
9a60: 73 20 4e 55 4c 4c 2e 0a 54 68 69 73 20 66 75 6e  s NULL..This fun
9a70: 63 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64  ction is omitted
9a80: 20 66 72 6f 6d 20 53 51 4c 69 74 65 20 62 79 20   from SQLite by 
9a90: 64 65 66 61 75 6c 74 2e 0a 49 74 20 69 73 20 6f  default..It is o
9aa0: 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 74 68  nly available th
9ab0: 65 20 2d 44 53 51 4c 49 54 45 5f 53 4f 55 4e 44  e -DSQLITE_SOUND
9ac0: 45 58 3d 31 20 63 6f 6d 70 69 6c 65 72 20 6f 70  EX=1 compiler op
9ad0: 74 69 6f 6e 0a 69 73 20 75 73 65 64 20 77 68 65  tion.is used whe
9ae0: 6e 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c  n SQLite is buil
9af0: 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  t.</td>.</tr>..<
9b00: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
9b10: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
9b20: 74 22 3e 73 71 6c 69 74 65 5f 76 65 72 73 69 6f  t">sqlite_versio
9b30: 6e 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  n(*)</td>.<td va
9b40: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
9b50: 6e 20 74 68 65 20 76 65 72 73 69 6f 6e 20 73 74  n the version st
9b60: 72 69 6e 67 20 66 6f 72 20 74 68 65 20 53 51 4c  ring for the SQL
9b70: 69 74 65 20 6c 69 62 72 61 72 79 0a 74 68 61 74  ite library.that
9b80: 20 69 73 20 72 75 6e 6e 69 6e 67 2e 20 20 45 78   is running.  Ex
9b90: 61 6d 70 6c 65 3a 20 20 22 32 2e 38 2e 30 22 3c  ample:  "2.8.0"<
9ba0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
9bb0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
9bc0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
9bd0: 73 75 62 73 74 72 28 3c 69 3e 58 3c 2f 69 3e 2c  substr(<i>X</i>,
9be0: 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 5a 3c 2f 69  <i>Y</i>,<i>Z</i
9bf0: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
9c00: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
9c10: 61 20 73 75 62 73 74 72 69 6e 67 20 6f 66 20 69  a substring of i
9c20: 6e 70 75 74 20 73 74 72 69 6e 67 20 3c 69 3e 58  nput string <i>X
9c30: 3c 2f 69 3e 20 74 68 61 74 20 62 65 67 69 6e 73  </i> that begins
9c40: 0a 77 69 74 68 20 74 68 65 20 3c 69 3e 59 3c 2f  .with the <i>Y</
9c50: 69 3e 2d 74 68 20 63 68 61 72 61 63 74 65 72 20  i>-th character 
9c60: 61 6e 64 20 77 68 69 63 68 20 69 73 20 3c 69 3e  and which is <i>
9c70: 5a 3c 2f 69 3e 20 63 68 61 72 61 63 74 65 72 73  Z</i> characters
9c80: 20 6c 6f 6e 67 2e 0a 54 68 65 20 6c 65 66 74 2d   long..The left-
9c90: 6d 6f 73 74 20 63 68 61 72 61 63 74 65 72 20 6f  most character o
9ca0: 66 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 6e 75  f <i>X</i> is nu
9cb0: 6d 62 65 72 20 31 2e 20 20 49 66 20 3c 69 3e 59  mber 1.  If <i>Y
9cc0: 3c 2f 69 3e 20 69 73 20 6e 65 67 61 74 69 76 65  </i> is negative
9cd0: 0a 74 68 65 20 74 68 65 20 66 69 72 73 74 20 63  .the the first c
9ce0: 68 61 72 61 63 74 65 72 20 6f 66 20 74 68 65 20  haracter of the 
9cf0: 73 75 62 73 74 72 69 6e 67 20 69 73 20 66 6f 75  substring is fou
9d00: 6e 64 20 62 79 20 63 6f 75 6e 74 69 6e 67 20 66  nd by counting f
9d10: 72 6f 6d 20 74 68 65 0a 72 69 67 68 74 20 72 61  rom the.right ra
9d20: 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 6c 65  ther than the le
9d30: 66 74 2e 20 20 49 66 20 53 51 4c 69 74 65 20 69  ft.  If SQLite i
9d40: 73 20 63 6f 6e 66 69 67 75 72 65 64 20 74 6f 20  s configured to 
9d50: 73 75 70 70 6f 72 74 20 55 54 46 2d 38 2c 0a 74  support UTF-8,.t
9d60: 68 65 6e 20 63 68 61 72 61 63 74 65 72 73 20 69  hen characters i
9d70: 6e 64 69 63 65 73 20 72 65 66 65 72 20 74 6f 20  ndices refer to 
9d80: 61 63 74 75 61 6c 20 55 54 46 2d 38 20 63 68 61  actual UTF-8 cha
9d90: 72 61 63 74 65 72 73 2c 20 6e 6f 74 20 62 79 74  racters, not byt
9da0: 65 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  es.</td>.</tr>..
9db0: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
9dc0: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
9dd0: 68 74 22 3e 74 79 70 65 6f 66 28 3c 69 3e 58 3c  ht">typeof(<i>X<
9de0: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
9df0: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
9e00: 6e 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 68  n the type of th
9e10: 65 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 69 3e  e expression <i>
9e20: 58 3c 2f 69 3e 2e 20 20 54 68 65 20 6f 6e 6c 79  X</i>.  The only
9e30: 20 0a 72 65 74 75 72 6e 20 76 61 6c 75 65 73 20   .return values 
9e40: 61 72 65 20 22 6e 75 6c 6c 22 2c 20 22 69 6e 74  are "null", "int
9e50: 65 67 65 72 22 2c 20 22 72 65 61 6c 22 2c 20 22  eger", "real", "
9e60: 74 65 78 74 22 2c 20 61 6e 64 20 22 62 6c 6f 62  text", and "blob
9e70: 22 2e 0a 53 51 4c 69 74 65 27 73 20 74 79 70 65  "..SQLite's type
9e80: 20 68 61 6e 64 6c 69 6e 67 20 69 73 20 0a 65 78   handling is .ex
9e90: 70 6c 61 69 6e 65 64 20 69 6e 20 3c 61 20 68 72  plained in <a hr
9ea0: 65 66 3d 22 64 61 74 61 74 79 70 65 33 2e 68 74  ef="datatype3.ht
9eb0: 6d 6c 22 3e 44 61 74 61 74 79 70 65 73 20 69 6e  ml">Datatypes in
9ec0: 20 53 51 4c 69 74 65 20 56 65 72 73 69 6f 6e 20   SQLite Version 
9ed0: 33 3c 2f 61 3e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  3</a>.</td>.</tr
9ee0: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
9ef0: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
9f00: 72 69 67 68 74 22 3e 75 70 70 65 72 28 3c 69 3e  right">upper(<i>
9f10: 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20  X</i>)</td>.<td 
9f20: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
9f30: 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 69 6e  urn a copy of in
9f40: 70 75 74 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c  put string <i>X<
9f50: 2f 69 3e 20 63 6f 6e 76 65 72 74 65 64 20 74 6f  /i> converted to
9f60: 20 61 6c 6c 0a 75 70 70 65 72 2d 63 61 73 65 20   all.upper-case 
9f70: 6c 65 74 74 65 72 73 2e 20 20 54 68 65 20 69 6d  letters.  The im
9f80: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
9f90: 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 75 73  this function us
9fa0: 65 73 20 74 68 65 20 43 20 6c 69 62 72 61 72 79  es the C library
9fb0: 0a 72 6f 75 74 69 6e 65 20 3c 62 3e 74 6f 75 70  .routine <b>toup
9fc0: 70 65 72 28 29 3c 2f 62 3e 20 77 68 69 63 68 20  per()</b> which 
9fd0: 6d 65 61 6e 73 20 69 74 20 6d 61 79 20 6e 6f 74  means it may not
9fe0: 20 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20   work correctly 
9ff0: 6f 6e 20 0a 55 54 46 2d 38 20 73 74 72 69 6e 67  on .UTF-8 string
a000: 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f  s.</td>.</tr>.</
a010: 74 61 62 6c 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20  table>..<p>.The 
a020: 66 6f 6c 6c 6f 77 69 6e 67 20 61 67 67 72 65 67  following aggreg
a030: 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72  ate functions ar
a040: 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64  e available by d
a050: 65 66 61 75 6c 74 2e 20 20 41 64 64 69 74 69 6f  efault.  Additio
a060: 6e 61 6c 0a 61 67 67 72 65 67 61 74 65 20 66 75  nal.aggregate fu
a070: 6e 63 74 69 6f 6e 73 20 77 72 69 74 74 65 6e 20  nctions written 
a080: 69 6e 20 43 20 6d 61 79 20 62 65 20 61 64 64 65  in C may be adde
a090: 64 20 75 73 69 6e 67 20 74 68 65 20 0a 3c 61 20  d using the .<a 
a0a0: 68 72 65 66 3d 22 63 61 70 69 33 72 65 66 2e 68  href="capi3ref.h
a0b0: 74 6d 6c 23 73 71 6c 69 74 65 33 5f 63 72 65 61  tml#sqlite3_crea
a0c0: 74 65 5f 66 75 6e 63 74 69 6f 6e 22 3e 73 71 6c  te_function">sql
a0d0: 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
a0e0: 74 69 6f 6e 28 29 3c 2f 61 3e 0a 41 50 49 2e 3c  tion()</a>.API.<
a0f0: 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64  /p>..<table bord
a100: 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e 67  er=0 cellpadding
a110: 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  =10>.<tr>.<td va
a120: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
a130: 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 31  ="right" width=1
a140: 32 30 3e 61 76 67 28 3c 69 3e 58 3c 2f 69 3e 29  20>avg(<i>X</i>)
a150: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
a160: 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68  ="top">Return th
a170: 65 20 61 76 65 72 61 67 65 20 76 61 6c 75 65 20  e average value 
a180: 6f 66 20 61 6c 6c 20 3c 69 3e 58 3c 2f 69 3e 20  of all <i>X</i> 
a190: 77 69 74 68 69 6e 20 61 20 67 72 6f 75 70 2e 3c  within a group.<
a1a0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
a1b0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
a1c0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
a1d0: 63 6f 75 6e 74 28 3c 69 3e 58 3c 2f 69 3e 29 3c  count(<i>X</i>)<
a1e0: 62 72 3e 63 6f 75 6e 74 28 2a 29 3c 2f 74 64 3e  br>count(*)</td>
a1f0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
a200: 22 3e 54 68 65 20 66 69 72 73 74 20 66 6f 72 6d  ">The first form
a210: 20 72 65 74 75 72 6e 20 61 20 63 6f 75 6e 74 20   return a count 
a220: 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  of the number of
a230: 20 74 69 6d 65 73 0a 74 68 61 74 20 3c 69 3e 58   times.that <i>X
a240: 3c 2f 69 3e 20 69 73 20 6e 6f 74 20 4e 55 4c 4c  </i> is not NULL
a250: 20 69 6e 20 61 20 67 72 6f 75 70 2e 20 20 54 68   in a group.  Th
a260: 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20 28 77  e second form (w
a270: 69 74 68 20 6e 6f 20 61 72 67 75 6d 65 6e 74 29  ith no argument)
a280: 0a 72 65 74 75 72 6e 73 20 74 68 65 20 74 6f 74  .returns the tot
a290: 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  al number of row
a2a0: 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 3c  s in the group.<
a2b0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
a2c0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
a2d0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
a2e0: 6d 61 78 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74  max(<i>X</i>)</t
a2f0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
a300: 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 6d  op">Return the m
a310: 61 78 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66 20  aximum value of 
a320: 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68  all values in th
a330: 65 20 67 72 6f 75 70 2e 0a 54 68 65 20 75 73 75  e group..The usu
a340: 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 20 69 73  al sort order is
a350: 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69   used to determi
a360: 6e 65 20 74 68 65 20 6d 61 78 69 6d 75 6d 2e 3c  ne the maximum.<
a370: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
a380: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
a390: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
a3a0: 6d 69 6e 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74  min(<i>X</i>)</t
a3b0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
a3c0: 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 6d  op">Return the m
a3d0: 69 6e 69 6d 75 6d 20 6e 6f 6e 2d 4e 55 4c 4c 20  inimum non-NULL 
a3e0: 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c  value of all val
a3f0: 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70  ues in the group
a400: 2e 0a 54 68 65 20 75 73 75 61 6c 20 73 6f 72 74  ..The usual sort
a410: 20 6f 72 64 65 72 20 69 73 20 75 73 65 64 20 74   order is used t
a420: 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  o determine the 
a430: 6d 69 6e 69 6d 75 6d 2e 20 20 4e 55 4c 4c 20 69  minimum.  NULL i
a440: 73 20 6f 6e 6c 79 20 72 65 74 75 72 6e 65 64 0a  s only returned.
a450: 69 66 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e  if all values in
a460: 20 74 68 65 20 67 72 6f 75 70 20 61 72 65 20 4e   the group are N
a470: 55 4c 4c 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ULL.</td>.</tr>.
a480: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
a490: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
a4a0: 67 68 74 22 3e 73 75 6d 28 3c 69 3e 58 3c 2f 69  ght">sum(<i>X</i
a4b0: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
a4c0: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
a4d0: 74 68 65 20 6e 75 6d 65 72 69 63 20 73 75 6d 20  the numeric sum 
a4e0: 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e  of all values in
a4f0: 20 74 68 65 20 67 72 6f 75 70 2e 3c 2f 74 64 3e   the group.</td>
a500: 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a  .</tr>.</table>.
a510: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 49 4e 53 45  }...Section INSE
a520: 52 54 20 69 6e 73 65 72 74 0a 0a 53 79 6e 74 61  RT insert..Synta
a530: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
a540: 7d 20 7b 0a 49 4e 53 45 52 54 20 5b 4f 52 20 3c  } {.INSERT [OR <
a550: 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74  conflict-algorit
a560: 68 6d 3e 5d 20 49 4e 54 4f 20 5b 3c 64 61 74 61  hm>] INTO [<data
a570: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74  base-name> .] <t
a580: 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 3c 63 6f  able-name> [(<co
a590: 6c 75 6d 6e 2d 6c 69 73 74 3e 29 5d 20 56 41 4c  lumn-list>)] VAL
a5a0: 55 45 53 28 3c 76 61 6c 75 65 2d 6c 69 73 74 3e  UES(<value-list>
a5b0: 29 20 7c 0a 49 4e 53 45 52 54 20 5b 4f 52 20 3c  ) |.INSERT [OR <
a5c0: 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74  conflict-algorit
a5d0: 68 6d 3e 5d 20 49 4e 54 4f 20 5b 3c 64 61 74 61  hm>] INTO [<data
a5e0: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74  base-name> .] <t
a5f0: 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 3c 63 6f  able-name> [(<co
a600: 6c 75 6d 6e 2d 6c 69 73 74 3e 29 5d 20 3c 73 65  lumn-list>)] <se
a610: 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a  lect-statement>.
a620: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
a630: 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
a640: 74 20 63 6f 6d 65 73 20 69 6e 20 74 77 6f 20 62  t comes in two b
a650: 61 73 69 63 20 66 6f 72 6d 73 2e 20 20 54 68 65  asic forms.  The
a660: 20 66 69 72 73 74 20 66 6f 72 6d 0a 28 77 69 74   first form.(wit
a670: 68 20 74 68 65 20 22 56 41 4c 55 45 53 22 20 6b  h the "VALUES" k
a680: 65 79 77 6f 72 64 29 20 63 72 65 61 74 65 73 20  eyword) creates 
a690: 61 20 73 69 6e 67 6c 65 20 6e 65 77 20 72 6f 77  a single new row
a6a0: 20 69 6e 20 61 6e 20 65 78 69 73 74 69 6e 67 20   in an existing 
a6b0: 74 61 62 6c 65 2e 0a 49 66 20 6e 6f 20 63 6f 6c  table..If no col
a6c0: 75 6d 6e 2d 6c 69 73 74 20 69 73 20 73 70 65 63  umn-list is spec
a6d0: 69 66 69 65 64 20 74 68 65 6e 20 74 68 65 20 6e  ified then the n
a6e0: 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65 73 20  umber of values 
a6f0: 6d 75 73 74 0a 62 65 20 74 68 65 20 73 61 6d 65  must.be the same
a700: 20 61 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   as the number o
a710: 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  f columns in the
a720: 20 74 61 62 6c 65 2e 20 20 49 66 20 61 20 63 6f   table.  If a co
a730: 6c 75 6d 6e 2d 6c 69 73 74 0a 69 73 20 73 70 65  lumn-list.is spe
a740: 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65  cified, then the
a750: 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65   number of value
a760: 73 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68 65  s must match the
a770: 20 6e 75 6d 62 65 72 20 6f 66 0a 73 70 65 63 69   number of.speci
a780: 66 69 65 64 20 63 6f 6c 75 6d 6e 73 2e 20 20 43  fied columns.  C
a790: 6f 6c 75 6d 6e 73 20 6f 66 20 74 68 65 20 74 61  olumns of the ta
a7a0: 62 6c 65 20 74 68 61 74 20 64 6f 20 6e 6f 74 20  ble that do not 
a7b0: 61 70 70 65 61 72 20 69 6e 20 74 68 65 0a 63 6f  appear in the.co
a7c0: 6c 75 6d 6e 20 6c 69 73 74 20 61 72 65 20 66 69  lumn list are fi
a7d0: 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 64 65  lled with the de
a7e0: 66 61 75 6c 74 20 76 61 6c 75 65 2c 20 6f 72 20  fault value, or 
a7f0: 77 69 74 68 20 4e 55 4c 4c 20 69 66 20 6e 6f 74  with NULL if not
a800: 0a 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69  .default value i
a810: 73 20 73 70 65 63 69 66 69 65 64 2e 0a 3c 2f 70  s specified..</p
a820: 3e 0a 0a 3c 70 3e 54 68 65 20 73 65 63 6f 6e 64  >..<p>The second
a830: 20 66 6f 72 6d 20 6f 66 20 74 68 65 20 49 4e 53   form of the INS
a840: 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20 74 61  ERT statement ta
a850: 6b 65 73 20 69 74 20 64 61 74 61 20 66 72 6f 6d  kes it data from
a860: 20 61 0a 53 45 4c 45 43 54 20 73 74 61 74 65 6d   a.SELECT statem
a870: 65 6e 74 2e 20 20 54 68 65 20 6e 75 6d 62 65 72  ent.  The number
a880: 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74   of columns in t
a890: 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65  he result of the
a8a0: 0a 53 45 4c 45 43 54 20 6d 75 73 74 20 65 78 61  .SELECT must exa
a8b0: 63 74 6c 79 20 6d 61 74 63 68 20 74 68 65 20 6e  ctly match the n
a8c0: 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
a8d0: 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20 69 66   in the table if
a8e0: 0a 6e 6f 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 20  .no column list 
a8f0: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 6f 72  is specified, or
a900: 20 69 74 20 6d 75 73 74 20 6d 61 74 63 68 20 74   it must match t
a910: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
a920: 75 6d 6e 73 0a 6e 61 6d 65 20 69 6e 20 74 68 65  umns.name in the
a930: 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 2e 20 20 41   column list.  A
a940: 20 6e 65 77 20 65 6e 74 72 79 20 69 73 20 6d 61   new entry is ma
a950: 64 65 20 69 6e 20 74 68 65 20 74 61 62 6c 65 0a  de in the table.
a960: 66 6f 72 20 65 76 65 72 79 20 72 6f 77 20 6f 66  for every row of
a970: 20 74 68 65 20 53 45 4c 45 43 54 20 72 65 73 75   the SELECT resu
a980: 6c 74 2e 20 20 54 68 65 20 53 45 4c 45 43 54 20  lt.  The SELECT 
a990: 6d 61 79 20 62 65 20 73 69 6d 70 6c 65 0a 6f 72  may be simple.or
a9a0: 20 63 6f 6d 70 6f 75 6e 64 2e 20 20 49 66 20 74   compound.  If t
a9b0: 68 65 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d  he SELECT statem
a9c0: 65 6e 74 20 68 61 73 20 61 6e 20 4f 52 44 45 52  ent has an ORDER
a9d0: 20 42 59 20 63 6c 61 75 73 65 2c 0a 74 68 65 20   BY clause,.the 
a9e0: 4f 52 44 45 52 20 42 59 20 69 73 20 69 67 6e 6f  ORDER BY is igno
a9f0: 72 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  red.</p>..<p>The
aa00: 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69   optional confli
aa10: 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73  ct-clause allows
aa20: 20 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69   the specificati
aa30: 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61  on of an alterna
aa40: 74 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20  tive.constraint 
aa50: 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74  conflict resolut
aa60: 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f  ion algorithm to
aa70: 20 75 73 65 20 64 75 72 69 6e 67 20 74 68 69 73   use during this
aa80: 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65   one command..Se
aa90: 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69  e the section ti
aaa0: 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63  tled.<a href="#c
aab0: 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46  onflict">ON CONF
aac0: 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64  LICT</a> for add
aad0: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
aae0: 69 6f 6e 2e 0a 46 6f 72 20 63 6f 6d 70 61 74 69  ion..For compati
aaf0: 62 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51  bility with MySQ
ab00: 4c 2c 20 74 68 65 20 70 61 72 73 65 72 20 61 6c  L, the parser al
ab10: 6c 6f 77 73 20 74 68 65 20 75 73 65 20 6f 66 20  lows the use of 
ab20: 74 68 65 0a 73 69 6e 67 6c 65 20 6b 65 79 77 6f  the.single keywo
ab30: 72 64 20 3c 61 20 68 72 65 66 3d 22 23 72 65 70  rd <a href="#rep
ab40: 6c 61 63 65 22 3e 52 45 50 4c 41 43 45 3c 2f 61  lace">REPLACE</a
ab50: 3e 20 61 73 20 61 6e 20 61 6c 69 61 73 20 66 6f  > as an alias fo
ab60: 72 20 22 49 4e 53 45 52 54 20 4f 52 20 52 45 50  r "INSERT OR REP
ab70: 4c 41 43 45 22 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 0a  LACE"..</p>.}...
ab80: 53 65 63 74 69 6f 6e 20 7b 4f 4e 20 43 4f 4e 46  Section {ON CONF
ab90: 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63 6f 6e  LICT clause} con
aba0: 66 6c 69 63 74 0a 0a 53 79 6e 74 61 78 20 7b 63  flict..Syntax {c
abb0: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 7d 20  onflict-clause} 
abc0: 7b 0a 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c 63  {.ON CONFLICT <c
abd0: 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68  onflict-algorith
abe0: 6d 3e 0a 7d 20 7b 63 6f 6e 66 6c 69 63 74 2d 61  m>.} {conflict-a
abf0: 6c 67 6f 72 69 74 68 6d 7d 20 7b 0a 52 4f 4c 4c  lgorithm} {.ROLL
ac00: 42 41 43 4b 20 7c 20 41 42 4f 52 54 20 7c 20 46  BACK | ABORT | F
ac10: 41 49 4c 20 7c 20 49 47 4e 4f 52 45 20 7c 20 52  AIL | IGNORE | R
ac20: 45 50 4c 41 43 45 0a 7d 0a 0a 70 75 74 73 20 7b  EPLACE.}..puts {
ac30: 0a 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c  .<p>The ON CONFL
ac40: 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 6e 6f  ICT clause is no
ac50: 74 20 61 20 73 65 70 61 72 61 74 65 20 53 51 4c  t a separate SQL
ac60: 20 63 6f 6d 6d 61 6e 64 2e 20 20 49 74 20 69 73   command.  It is
ac70: 20 61 0a 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20   a.non-standard 
ac80: 63 6c 61 75 73 65 20 74 68 61 74 20 63 61 6e 20  clause that can 
ac90: 61 70 70 65 61 72 20 69 6e 20 6d 61 6e 79 20 6f  appear in many o
aca0: 74 68 65 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64  ther SQL command
acb0: 73 2e 0a 49 74 20 69 73 20 67 69 76 65 6e 20 69  s..It is given i
acc0: 74 73 20 6f 77 6e 20 73 65 63 74 69 6f 6e 20 69  ts own section i
acd0: 6e 20 74 68 69 73 20 64 6f 63 75 6d 65 6e 74 20  n this document 
ace0: 62 65 63 61 75 73 65 20 69 74 20 69 73 20 6e 6f  because it is no
acf0: 74 0a 70 61 72 74 20 6f 66 20 73 74 61 6e 64 61  t.part of standa
ad00: 72 64 20 53 51 4c 20 61 6e 64 20 74 68 65 72 65  rd SQL and there
ad10: 66 6f 72 65 20 6d 69 67 68 74 20 6e 6f 74 20 62  fore might not b
ad20: 65 20 66 61 6d 69 6c 69 61 72 2e 3c 2f 70 3e 0a  e familiar.</p>.
ad30: 0a 3c 70 3e 54 68 65 20 73 79 6e 74 61 78 20 66  .<p>The syntax f
ad40: 6f 72 20 74 68 65 20 4f 4e 20 43 4f 4e 46 4c 49  or the ON CONFLI
ad50: 43 54 20 63 6c 61 75 73 65 20 69 73 20 61 73 20  CT clause is as 
ad60: 73 68 6f 77 6e 20 61 62 6f 76 65 20 66 6f 72 0a  shown above for.
ad70: 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45  the CREATE TABLE
ad80: 20 61 6e 64 20 43 52 45 41 54 45 20 49 4e 44 45   and CREATE INDE
ad90: 58 20 63 6f 6d 6d 61 6e 64 73 2e 20 20 46 6f 72  X commands.  For
ada0: 20 74 68 65 20 43 4f 50 59 2c 20 49 4e 53 45 52   the COPY, INSER
adb0: 54 2c 20 61 6e 64 0a 55 50 44 41 54 45 20 63 6f  T, and.UPDATE co
adc0: 6d 6d 61 6e 64 73 2c 20 74 68 65 20 6b 65 79 77  mmands, the keyw
add0: 6f 72 64 73 20 22 4f 4e 20 43 4f 4e 46 4c 49 43  ords "ON CONFLIC
ade0: 54 22 20 61 72 65 20 72 65 70 6c 61 63 65 64 20  T" are replaced 
adf0: 62 79 20 22 4f 52 22 2c 20 74 6f 20 6d 61 6b 65  by "OR", to make
ae00: 0a 74 68 65 20 73 79 6e 74 61 78 20 73 65 65 6d  .the syntax seem
ae10: 20 6d 6f 72 65 20 6e 61 74 75 72 61 6c 2e 20 20   more natural.  
ae20: 42 75 74 20 74 68 65 20 6d 65 61 6e 69 6e 67 20  But the meaning 
ae30: 6f 66 20 74 68 65 20 63 6c 61 75 73 65 20 69 73  of the clause is
ae40: 20 74 68 65 20 73 61 6d 65 0a 65 69 74 68 65 72   the same.either
ae50: 20 77 61 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68   way.</p>..<p>Th
ae60: 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c  e ON CONFLICT cl
ae70: 61 75 73 65 20 73 70 65 63 69 66 69 65 73 20 61  ause specifies a
ae80: 6e 20 61 6c 67 6f 72 69 74 68 6d 20 75 73 65 64  n algorithm used
ae90: 20 74 6f 20 72 65 73 6f 6c 76 65 0a 63 6f 6e 73   to resolve.cons
aea0: 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 73  traint conflicts
aeb0: 2e 20 20 54 68 65 72 65 20 61 72 65 20 66 69 76  .  There are fiv
aec0: 65 20 63 68 6f 69 63 65 73 3a 20 52 4f 4c 4c 42  e choices: ROLLB
aed0: 41 43 4b 2c 20 41 42 4f 52 54 2c 0a 46 41 49 4c  ACK, ABORT,.FAIL
aee0: 2c 20 49 47 4e 4f 52 45 2c 20 61 6e 64 20 52 45  , IGNORE, and RE
aef0: 50 4c 41 43 45 2e 20 54 68 65 20 64 65 66 61 75  PLACE. The defau
af00: 6c 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  lt algorithm is 
af10: 41 42 4f 52 54 2e 20 20 54 68 69 73 0a 69 73 20  ABORT.  This.is 
af20: 77 68 61 74 20 74 68 65 79 20 6d 65 61 6e 3a 3c  what they mean:<
af30: 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c 64 74 3e 3c 62  /p>..<dl>.<dt><b
af40: 3e 52 4f 4c 4c 42 41 43 4b 3c 2f 62 3e 3c 2f 64  >ROLLBACK</b></d
af50: 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61  t>.<dd><p>When a
af60: 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
af70: 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 61 6e  ation occurs, an
af80: 20 69 6d 6d 65 64 69 61 74 65 20 52 4f 4c 4c 42   immediate ROLLB
af90: 41 43 4b 0a 6f 63 63 75 72 73 2c 20 74 68 75 73  ACK.occurs, thus
afa0: 20 65 6e 64 69 6e 67 20 74 68 65 20 63 75 72 72   ending the curr
afb0: 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c  ent transaction,
afc0: 20 61 6e 64 20 74 68 65 20 63 6f 6d 6d 61 6e 64   and the command
afd0: 20 61 62 6f 72 74 73 0a 77 69 74 68 20 61 20 72   aborts.with a r
afe0: 65 74 75 72 6e 20 63 6f 64 65 20 6f 66 20 53 51  eturn code of SQ
aff0: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e  LITE_CONSTRAINT.
b000: 20 20 49 66 20 6e 6f 20 74 72 61 6e 73 61 63 74    If no transact
b010: 69 6f 6e 20 69 73 0a 61 63 74 69 76 65 20 28 6f  ion is.active (o
b020: 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 69 6d  ther than the im
b030: 70 6c 69 65 64 20 74 72 61 6e 73 61 63 74 69 6f  plied transactio
b040: 6e 20 74 68 61 74 20 69 73 20 63 72 65 61 74 65  n that is create
b050: 64 20 6f 6e 20 65 76 65 72 79 0a 63 6f 6d 6d 61  d on every.comma
b060: 6e 64 29 20 74 68 65 6e 20 74 68 69 73 20 61 6c  nd) then this al
b070: 67 6f 72 69 74 68 6d 20 77 6f 72 6b 73 20 74 68  gorithm works th
b080: 65 20 73 61 6d 65 20 61 73 20 41 42 4f 52 54 2e  e same as ABORT.
b090: 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c  </p></dd>..<dt><
b0a0: 62 3e 41 42 4f 52 54 3c 2f 62 3e 3c 2f 64 74 3e  b>ABORT</b></dt>
b0b0: 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63  .<dd><p>When a c
b0c0: 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
b0d0: 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20  ion occurs, the 
b0e0: 63 6f 6d 6d 61 6e 64 20 62 61 63 6b 73 20 6f 75  command backs ou
b0f0: 74 0a 61 6e 79 20 70 72 69 6f 72 20 63 68 61 6e  t.any prior chan
b100: 67 65 73 20 69 74 20 6d 69 67 68 74 20 68 61 76  ges it might hav
b110: 65 20 6d 61 64 65 20 61 6e 64 20 61 62 6f 72 74  e made and abort
b120: 73 20 77 69 74 68 20 61 20 72 65 74 75 72 6e 20  s with a return 
b130: 63 6f 64 65 0a 6f 66 20 53 51 4c 49 54 45 5f 43  code.of SQLITE_C
b140: 4f 4e 53 54 52 41 49 4e 54 2e 20 20 42 75 74 20  ONSTRAINT.  But 
b150: 6e 6f 20 52 4f 4c 4c 42 41 43 4b 20 69 73 20 65  no ROLLBACK is e
b160: 78 65 63 75 74 65 64 20 73 6f 20 63 68 61 6e 67  xecuted so chang
b170: 65 73 0a 66 72 6f 6d 20 70 72 69 6f 72 20 63 6f  es.from prior co
b180: 6d 6d 61 6e 64 73 20 77 69 74 68 69 6e 20 74 68  mmands within th
b190: 65 20 73 61 6d 65 20 74 72 61 6e 73 61 63 74 69  e same transacti
b1a0: 6f 6e 0a 61 72 65 20 70 72 65 73 65 72 76 65 64  on.are preserved
b1b0: 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 20 64  .  This is the d
b1c0: 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 2e  efault behavior.
b1d0: 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c  </p></dd>..<dt><
b1e0: 62 3e 46 41 49 4c 3c 2f 62 3e 3c 2f 64 74 3e 0a  b>FAIL</b></dt>.
b1f0: 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f  <dd><p>When a co
b200: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
b210: 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 63  on occurs, the c
b220: 6f 6d 6d 61 6e 64 20 61 62 6f 72 74 73 20 77 69  ommand aborts wi
b230: 74 68 20 61 0a 72 65 74 75 72 6e 20 63 6f 64 65  th a.return code
b240: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
b250: 4e 54 2e 20 20 42 75 74 20 61 6e 79 20 63 68 61  NT.  But any cha
b260: 6e 67 65 73 20 74 6f 20 74 68 65 20 64 61 74 61  nges to the data
b270: 62 61 73 65 20 74 68 61 74 0a 74 68 65 20 63 6f  base that.the co
b280: 6d 6d 61 6e 64 20 6d 61 64 65 20 70 72 69 6f 72  mmand made prior
b290: 20 74 6f 20 65 6e 63 6f 75 6e 74 65 72 69 6e 67   to encountering
b2a0: 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20   the constraint 
b2b0: 76 69 6f 6c 61 74 69 6f 6e 0a 61 72 65 20 70 72  violation.are pr
b2c0: 65 73 65 72 76 65 64 20 61 6e 64 20 61 72 65 20  eserved and are 
b2d0: 6e 6f 74 20 62 61 63 6b 65 64 20 6f 75 74 2e 20  not backed out. 
b2e0: 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66   For example, if
b2f0: 20 61 6e 20 55 50 44 41 54 45 0a 73 74 61 74 65   an UPDATE.state
b300: 6d 65 6e 74 20 65 6e 63 6f 75 6e 74 65 72 65 64  ment encountered
b310: 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
b320: 6f 6c 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20 31  olation on the 1
b330: 30 30 74 68 20 72 6f 77 20 74 68 61 74 0a 69 74  00th row that.it
b340: 20 61 74 74 65 6d 70 74 73 20 74 6f 20 75 70 64   attempts to upd
b350: 61 74 65 2c 20 74 68 65 6e 20 74 68 65 20 66 69  ate, then the fi
b360: 72 73 74 20 39 39 20 72 6f 77 20 63 68 61 6e 67  rst 99 row chang
b370: 65 73 20 61 72 65 20 70 72 65 73 65 72 76 65 64  es are preserved
b380: 0a 62 75 74 20 63 68 61 6e 67 65 73 20 74 6f 20  .but changes to 
b390: 72 6f 77 73 20 31 30 30 20 61 6e 64 20 62 65 79  rows 100 and bey
b3a0: 6f 6e 64 20 6e 65 76 65 72 20 6f 63 63 75 72 2e  ond never occur.
b3b0: 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c  </p></dd>..<dt><
b3c0: 62 3e 49 47 4e 4f 52 45 3c 2f 62 3e 3c 2f 64 74  b>IGNORE</b></dt
b3d0: 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20  >.<dd><p>When a 
b3e0: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
b3f0: 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65  tion occurs, the
b400: 20 6f 6e 65 20 72 6f 77 20 74 68 61 74 20 63 6f   one row that co
b410: 6e 74 61 69 6e 73 0a 74 68 65 20 63 6f 6e 73 74  ntains.the const
b420: 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
b430: 69 73 20 6e 6f 74 20 69 6e 73 65 72 74 65 64 20  is not inserted 
b440: 6f 72 20 63 68 61 6e 67 65 64 2e 20 20 42 75 74  or changed.  But
b450: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 0a 63 6f 6e   the command.con
b460: 74 69 6e 75 65 73 20 65 78 65 63 75 74 69 6e 67  tinues executing
b470: 20 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4f 74 68 65   normally.  Othe
b480: 72 20 72 6f 77 73 20 62 65 66 6f 72 65 20 61 6e  r rows before an
b490: 64 20 61 66 74 65 72 20 74 68 65 20 72 6f 77 20  d after the row 
b4a0: 74 68 61 74 0a 63 6f 6e 74 61 69 6e 65 64 20 74  that.contained t
b4b0: 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69  he constraint vi
b4c0: 6f 6c 61 74 69 6f 6e 20 63 6f 6e 74 69 6e 75 65  olation continue
b4d0: 20 74 6f 20 62 65 20 69 6e 73 65 72 74 65 64 20   to be inserted 
b4e0: 6f 72 20 75 70 64 61 74 65 64 0a 6e 6f 72 6d 61  or updated.norma
b4f0: 6c 6c 79 2e 20 20 4e 6f 20 65 72 72 6f 72 20 69  lly.  No error i
b500: 73 20 72 65 74 75 72 6e 65 64 2e 3c 2f 70 3e 3c  s returned.</p><
b510: 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 52 45 50  /dd>..<dt><b>REP
b520: 4c 41 43 45 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64  LACE</b></dt>.<d
b530: 64 3e 3c 70 3e 57 68 65 6e 20 61 20 55 4e 49 51  d><p>When a UNIQ
b540: 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69  UE constraint vi
b550: 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
b560: 74 68 65 20 70 72 65 2d 65 78 69 73 74 69 6e 67  the pre-existing
b570: 20 72 6f 77 73 0a 74 68 61 74 20 61 72 65 20 63   rows.that are c
b580: 61 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 73 74  ausing the const
b590: 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
b5a0: 61 72 65 20 72 65 6d 6f 76 65 64 20 70 72 69 6f  are removed prio
b5b0: 72 20 74 6f 20 69 6e 73 65 72 74 69 6e 67 0a 6f  r to inserting.o
b5c0: 72 20 75 70 64 61 74 69 6e 67 20 74 68 65 20 63  r updating the c
b5d0: 75 72 72 65 6e 74 20 72 6f 77 2e 20 20 54 68 75  urrent row.  Thu
b5e0: 73 20 74 68 65 20 69 6e 73 65 72 74 20 6f 72 20  s the insert or 
b5f0: 75 70 64 61 74 65 20 61 6c 77 61 79 73 20 6f 63  update always oc
b600: 63 75 72 73 2e 0a 54 68 65 20 63 6f 6d 6d 61 6e  curs..The comman
b610: 64 20 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63  d continues exec
b620: 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20  uting normally. 
b630: 20 4e 6f 20 65 72 72 6f 72 20 69 73 20 72 65 74   No error is ret
b640: 75 72 6e 65 64 2e 0a 49 66 20 61 20 4e 4f 54 20  urned..If a NOT 
b650: 4e 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 20  NULL constraint 
b660: 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
b670: 2c 20 74 68 65 20 4e 55 4c 4c 20 76 61 6c 75 65  , the NULL value
b680: 20 69 73 20 72 65 70 6c 61 63 65 64 0a 62 79 20   is replaced.by 
b690: 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  the default valu
b6a0: 65 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d  e for that colum
b6b0: 6e 2e 20 20 49 66 20 74 68 65 20 63 6f 6c 75 6d  n.  If the colum
b6c0: 6e 20 68 61 73 20 6e 6f 20 64 65 66 61 75 6c 74  n has no default
b6d0: 0a 76 61 6c 75 65 2c 20 74 68 65 6e 20 74 68 65  .value, then the
b6e0: 20 41 42 4f 52 54 20 61 6c 67 6f 72 69 74 68 6d   ABORT algorithm
b6f0: 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c   is used.</p>..<
b700: 70 3e 57 68 65 6e 20 74 68 69 73 20 63 6f 6e 66  p>When this conf
b710: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
b720: 73 74 72 61 74 65 67 79 20 64 65 6c 65 74 65 73  strategy deletes
b730: 20 72 6f 77 73 20 69 6e 20 6f 72 64 65 72 20 74   rows in order t
b740: 6f 0a 73 74 61 74 69 73 66 79 20 61 20 63 6f 6e  o.statisfy a con
b750: 73 74 72 61 69 6e 74 2c 20 69 74 20 64 6f 65 73  straint, it does
b760: 20 6e 6f 74 20 69 6e 76 6f 6b 65 20 64 65 6c 65   not invoke dele
b770: 74 65 20 74 72 69 67 67 65 72 73 20 6f 6e 20 74  te triggers on t
b780: 68 6f 73 65 0a 72 6f 77 73 2e 20 20 42 75 74 20  hose.rows.  But 
b790: 74 68 61 74 20 6d 61 79 20 63 68 61 6e 67 65 20  that may change 
b7a0: 69 6e 20 61 20 66 75 74 75 72 65 20 72 65 6c 65  in a future rele
b7b0: 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ase.</p>..<p>The
b7c0: 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69   algorithm speci
b7d0: 66 69 65 64 20 69 6e 20 74 68 65 20 4f 52 20 63  fied in the OR c
b7e0: 6c 61 75 73 65 20 6f 66 20 61 20 43 4f 50 59 2c  lause of a COPY,
b7f0: 20 49 4e 53 45 52 54 2c 20 6f 72 20 55 50 44 41   INSERT, or UPDA
b800: 54 45 0a 6f 76 65 72 72 69 64 65 73 20 61 6e 79  TE.overrides any
b810: 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69   algorithm speci
b820: 66 69 65 64 20 69 6e 20 61 20 43 52 45 41 54 45  fied in a CREATE
b830: 20 54 41 42 4c 45 20 6f 72 20 43 52 45 41 54 45   TABLE or CREATE
b840: 20 49 4e 44 45 58 2e 0a 49 66 20 6e 6f 20 61 6c   INDEX..If no al
b850: 67 6f 72 69 74 68 6d 20 69 73 20 73 70 65 63 69  gorithm is speci
b860: 66 69 65 64 20 61 6e 79 77 68 65 72 65 2c 20 74  fied anywhere, t
b870: 68 65 20 41 42 4f 52 54 20 61 6c 67 6f 72 69 74  he ABORT algorit
b880: 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a  hm is used.</p>.
b890: 0a 7d 0a 23 20 3c 70 3e 46 6f 72 20 61 64 64 69  .}.# <p>For addi
b8a0: 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
b8b0: 6f 6e 2c 20 73 65 65 20 0a 23 20 3c 61 20 68 72  on, see .# <a hr
b8c0: 65 66 3d 22 63 6f 6e 66 6c 69 63 74 2e 68 74 6d  ef="conflict.htm
b8d0: 6c 22 3e 63 6f 6e 66 6c 69 63 74 2e 68 74 6d 6c  l">conflict.html
b8e0: 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 0a 53 65 63 74  </a>.</p>...Sect
b8f0: 69 6f 6e 20 50 52 41 47 4d 41 20 70 72 61 67 6d  ion PRAGMA pragm
b900: 61 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  a..Syntax {sql-s
b910: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 50 52 41 47  tatement} {.PRAG
b920: 4d 41 20 3c 6e 61 6d 65 3e 20 5b 3d 20 3c 76 61  MA <name> [= <va
b930: 6c 75 65 3e 5d 20 7c 0a 50 52 41 47 4d 41 20 3c  lue>] |.PRAGMA <
b940: 66 75 6e 63 74 69 6f 6e 3e 28 3c 61 72 67 3e 29  function>(<arg>)
b950: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
b960: 65 20 50 52 41 47 4d 41 20 63 6f 6d 6d 61 6e 64  e PRAGMA command
b970: 20 69 73 20 75 73 65 64 20 74 6f 20 6d 6f 64 69   is used to modi
b980: 66 79 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e  fy the operation
b990: 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 6c   of the SQLite l
b9a0: 69 62 72 61 72 79 2e 0a 54 68 65 20 70 72 61 67  ibrary..The prag
b9b0: 6d 61 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 78  ma command is ex
b9c0: 70 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64 20 73  perimental and s
b9d0: 70 65 63 69 66 69 63 20 70 72 61 67 6d 61 20 73  pecific pragma s
b9e0: 74 61 74 65 6d 65 6e 74 73 20 6d 61 79 20 62 65  tatements may be
b9f0: 0a 72 65 6d 6f 76 65 64 20 6f 72 20 61 64 64 65  .removed or adde
ba00: 64 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65  d in future rele
ba10: 61 73 65 73 20 6f 66 20 53 51 4c 69 74 65 2e 20  ases of SQLite. 
ba20: 20 55 73 65 20 74 68 69 73 20 63 6f 6d 6d 61 6e   Use this comman
ba30: 64 0a 77 69 74 68 20 63 61 75 74 69 6f 6e 2e 3c  d.with caution.<
ba40: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 70 72 61 67  /p>..<p>The prag
ba50: 6d 61 73 20 74 68 61 74 20 74 61 6b 65 20 61 6e  mas that take an
ba60: 20 69 6e 74 65 67 65 72 20 3c 62 3e 3c 69 3e 76   integer <b><i>v
ba70: 61 6c 75 65 3c 2f 69 3e 3c 2f 62 3e 20 61 6c 73  alue</i></b> als
ba80: 6f 20 61 63 63 65 70 74 20 0a 73 79 6d 62 6f 6c  o accept .symbol
ba90: 69 63 20 6e 61 6d 65 73 2e 20 20 54 68 65 20 73  ic names.  The s
baa0: 74 72 69 6e 67 73 20 22 3c 62 3e 6f 6e 3c 2f 62  trings "<b>on</b
bab0: 3e 22 2c 20 22 3c 62 3e 74 72 75 65 3c 2f 62 3e  >", "<b>true</b>
bac0: 22 2c 20 61 6e 64 20 22 3c 62 3e 79 65 73 3c 2f  ", and "<b>yes</
bad0: 62 3e 22 20 0a 61 72 65 20 65 71 75 69 76 61 6c  b>" .are equival
bae0: 65 6e 74 20 74 6f 20 3c 62 3e 31 3c 2f 62 3e 2e  ent to <b>1</b>.
baf0: 20 20 54 68 65 20 73 74 72 69 6e 67 73 20 22 3c    The strings "<
bb00: 62 3e 6f 66 66 3c 2f 62 3e 22 2c 20 22 3c 62 3e  b>off</b>", "<b>
bb10: 66 61 6c 73 65 3c 2f 62 3e 22 2c 20 0a 61 6e 64  false</b>", .and
bb20: 20 22 3c 62 3e 6e 6f 3c 2f 62 3e 22 20 61 72 65   "<b>no</b>" are
bb30: 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 3c   equivalent to <
bb40: 62 3e 30 3c 2f 62 3e 2e 20 20 54 68 65 73 65 20  b>0</b>.  These 
bb50: 73 74 72 69 6e 67 73 20 61 72 65 20 63 61 73 65  strings are case
bb60: 2d 0a 69 6e 73 65 6e 73 69 74 69 76 65 2c 20 61  -.insensitive, a
bb70: 6e 64 20 64 6f 20 6e 6f 74 20 72 65 71 75 69 72  nd do not requir
bb80: 65 20 71 75 6f 74 65 73 2e 20 20 41 6e 20 75 6e  e quotes.  An un
bb90: 72 65 63 6f 67 6e 69 7a 65 64 20 73 74 72 69 6e  recognized strin
bba0: 67 20 77 69 6c 6c 20 62 65 20 0a 74 72 65 61 74  g will be .treat
bbb0: 65 64 20 61 73 20 3c 62 3e 31 3c 2f 62 3e 2c 20  ed as <b>1</b>, 
bbc0: 61 6e 64 20 77 69 6c 6c 20 6e 6f 74 20 67 65 6e  and will not gen
bbd0: 65 72 61 74 65 20 61 6e 20 65 72 72 6f 72 2e 20  erate an error. 
bbe0: 20 57 68 65 6e 20 74 68 65 20 3c 69 3e 76 61 6c   When the <i>val
bbf0: 75 65 3c 2f 69 3e 20 0a 69 73 20 72 65 74 75 72  ue</i> .is retur
bc00: 6e 65 64 20 69 74 20 69 73 20 61 73 20 61 6e 20  ned it is as an 
bc10: 69 6e 74 65 67 65 72 2e 3c 2f 70 3e 0a 0a 3c 70  integer.</p>..<p
bc20: 3e 54 68 65 20 63 75 72 72 65 6e 74 20 69 6d 70  >The current imp
bc30: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 73 75 70 70  lementation supp
bc40: 6f 72 74 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69  orts the followi
bc50: 6e 67 20 70 72 61 67 6d 61 73 3a 3c 2f 70 3e 0a  ng pragmas:</p>.
bc60: 0a 3c 75 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 70  .<ul>.<a name="p
bc70: 72 61 67 6d 61 5f 63 61 63 68 65 5f 73 69 7a 65  ragma_cache_size
bc80: 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62  "></a>.<li><p><b
bc90: 3e 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69  >PRAGMA cache_si
bca0: 7a 65 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50  ze;.       <br>P
bcb0: 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65  RAGMA cache_size
bcc0: 20 3d 20 3c 2f 62 3e 3c 69 3e 4e 75 6d 62 65 72   = </b><i>Number
bcd0: 2d 6f 66 2d 70 61 67 65 73 3c 2f 69 3e 3c 62 3e  -of-pages</i><b>
bce0: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
bcf0: 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e 67 65  >Query or change
bd00: 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d   the maximum num
bd10: 62 65 72 20 6f 66 20 64 61 74 61 62 61 73 65 20  ber of database 
bd20: 64 69 73 6b 20 70 61 67 65 73 20 74 68 61 74 20  disk pages that 
bd30: 53 51 4c 69 74 65 0a 20 20 20 20 77 69 6c 6c 20  SQLite.    will 
bd40: 68 6f 6c 64 20 69 6e 20 6d 65 6d 6f 72 79 20 61  hold in memory a
bd50: 74 20 6f 6e 63 65 2e 20 20 45 61 63 68 20 70 61  t once.  Each pa
bd60: 67 65 20 75 73 65 73 20 61 62 6f 75 74 20 31 2e  ge uses about 1.
bd70: 35 4b 20 6f 66 20 6d 65 6d 6f 72 79 2e 0a 20 20  5K of memory..  
bd80: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 63 61    The default ca
bd90: 63 68 65 20 73 69 7a 65 20 69 73 20 32 30 30 30  che size is 2000
bda0: 2e 20 20 49 66 20 79 6f 75 20 61 72 65 20 64 6f  .  If you are do
bdb0: 69 6e 67 20 55 50 44 41 54 45 73 20 6f 72 20 44  ing UPDATEs or D
bdc0: 45 4c 45 54 45 73 0a 20 20 20 20 74 68 61 74 20  ELETEs.    that 
bdd0: 63 68 61 6e 67 65 20 6d 61 6e 79 20 72 6f 77 73  change many rows
bde0: 20 6f 66 20 61 20 64 61 74 61 62 61 73 65 20 61   of a database a
bdf0: 6e 64 20 79 6f 75 20 64 6f 20 6e 6f 74 20 6d 69  nd you do not mi
be00: 6e 64 20 69 66 20 53 51 4c 69 74 65 0a 20 20 20  nd if SQLite.   
be10: 20 75 73 65 73 20 6d 6f 72 65 20 6d 65 6d 6f 72   uses more memor
be20: 79 2c 20 79 6f 75 20 63 61 6e 20 69 6e 63 72 65  y, you can incre
be30: 61 73 65 20 74 68 65 20 63 61 63 68 65 20 73 69  ase the cache si
be40: 7a 65 20 66 6f 72 20 61 20 70 6f 73 73 69 62 6c  ze for a possibl
be50: 65 20 73 70 65 65 64 0a 20 20 20 20 69 6d 70 72  e speed.    impr
be60: 6f 76 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 20 20 20  ovement.</p>.   
be70: 20 3c 70 3e 57 68 65 6e 20 79 6f 75 20 63 68 61   <p>When you cha
be80: 6e 67 65 20 74 68 65 20 63 61 63 68 65 20 73 69  nge the cache si
be90: 7a 65 20 75 73 69 6e 67 20 74 68 65 20 63 61 63  ze using the cac
bea0: 68 65 5f 73 69 7a 65 20 70 72 61 67 6d 61 2c 20  he_size pragma, 
beb0: 74 68 65 0a 20 20 20 20 63 68 61 6e 67 65 20 6f  the.    change o
bec0: 6e 6c 79 20 65 6e 64 75 72 65 73 20 66 6f 72 20  nly endures for 
bed0: 74 68 65 20 63 75 72 72 65 6e 74 20 73 65 73 73  the current sess
bee0: 69 6f 6e 2e 20 20 54 68 65 20 63 61 63 68 65 20  ion.  The cache 
bef0: 73 69 7a 65 20 72 65 76 65 72 74 73 0a 20 20 20  size reverts.   
bf00: 20 74 6f 20 74 68 65 20 64 65 66 61 75 6c 74 20   to the default 
bf10: 76 61 6c 75 65 20 77 68 65 6e 20 74 68 65 20 64  value when the d
bf20: 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65  atabase is close
bf30: 64 20 61 6e 64 20 72 65 6f 70 65 6e 65 64 2e 20  d and reopened. 
bf40: 20 55 73 65 0a 20 20 20 20 74 68 65 20 3c 61 20   Use.    the <a 
bf50: 68 72 65 66 3d 22 23 70 72 61 67 6d 61 5f 64 65  href="#pragma_de
bf60: 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65  fault_cache_size
bf70: 22 3e 3c 62 3e 64 65 66 61 75 6c 74 5f 63 61 63  "><b>default_cac
bf80: 68 65 5f 73 69 7a 65 3c 2f 62 3e 3c 2f 61 3e 20  he_size</b></a> 
bf90: 0a 20 20 20 20 70 72 61 67 6d 61 20 74 6f 20 63  .    pragma to c
bfa0: 68 65 63 6b 20 74 68 65 20 63 61 63 68 65 20 73  heck the cache s
bfb0: 69 7a 65 20 70 65 72 6d 61 6e 65 6e 74 6c 79 2e  ize permanently.
bfc0: 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c  </p></li>..<li><
bfd0: 70 3e 3c 62 3e 50 52 41 47 4d 41 20 64 61 74 61  p><b>PRAGMA data
bfe0: 62 61 73 65 5f 6c 69 73 74 3b 3c 2f 62 3e 3c 2f  base_list;</b></
bff0: 70 3e 0a 20 20 20 20 3c 70 3e 46 6f 72 20 65 61  p>.    <p>For ea
c000: 63 68 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65  ch open database
c010: 2c 20 69 6e 76 6f 6b 65 20 74 68 65 20 63 61 6c  , invoke the cal
c020: 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 6f  lback function o
c030: 6e 63 65 20 77 69 74 68 0a 20 20 20 20 69 6e 66  nce with.    inf
c040: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74  ormation about t
c050: 68 61 74 20 64 61 74 61 62 61 73 65 2e 20 20 41  hat database.  A
c060: 72 67 75 6d 65 6e 74 73 20 69 6e 63 6c 75 64 65  rguments include
c070: 20 74 68 65 20 69 6e 64 65 78 20 61 6e 64 20 0a   the index and .
c080: 20 20 20 20 74 68 65 20 6e 61 6d 65 20 74 68 65      the name the
c090: 20 64 61 74 62 61 73 65 20 77 61 73 20 61 74 74   datbase was att
c0a0: 61 63 68 65 64 20 77 69 74 68 2e 20 20 54 68 65  ached with.  The
c0b0: 20 66 69 72 73 74 20 72 6f 77 20 77 69 6c 6c 20   first row will 
c0c0: 62 65 20 66 6f 72 20 0a 20 20 20 20 74 68 65 20  be for .    the 
c0d0: 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2e 20 20  main database.  
c0e0: 54 68 65 20 73 65 63 6f 6e 64 20 72 6f 77 20 77  The second row w
c0f0: 69 6c 6c 20 62 65 20 66 6f 72 20 74 68 65 20 64  ill be for the d
c100: 61 74 61 62 61 73 65 20 75 73 65 64 20 74 6f 20  atabase used to 
c110: 0a 20 20 20 20 73 74 6f 72 65 20 74 65 6d 70 6f  .    store tempo
c120: 72 61 72 79 20 74 61 62 6c 65 73 2e 3c 2f 70 3e  rary tables.</p>
c130: 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22  </li>..<a name="
c140: 70 72 61 67 6d 61 5f 64 65 66 61 75 6c 74 5f 63  pragma_default_c
c150: 61 63 68 65 5f 73 69 7a 65 22 3e 3c 2f 61 3e 0a  ache_size"></a>.
c160: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
c170: 20 64 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73   default_cache_s
c180: 69 7a 65 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e  ize;.       <br>
c190: 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 63  PRAGMA default_c
c1a0: 61 63 68 65 5f 73 69 7a 65 20 3d 20 3c 2f 62 3e  ache_size = </b>
c1b0: 3c 69 3e 4e 75 6d 62 65 72 2d 6f 66 2d 70 61 67  <i>Number-of-pag
c1c0: 65 73 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f  es</i><b>;</b></
c1d0: 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20  p>.    <p>Query 
c1e0: 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20 6d 61  or change the ma
c1f0: 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20  ximum number of 
c200: 64 61 74 61 62 61 73 65 20 64 69 73 6b 20 70 61  database disk pa
c210: 67 65 73 20 74 68 61 74 20 53 51 4c 69 74 65 0a  ges that SQLite.
c220: 20 20 20 20 77 69 6c 6c 20 68 6f 6c 64 20 69 6e      will hold in
c230: 20 6d 65 6d 6f 72 79 20 61 74 20 6f 6e 63 65 2e   memory at once.
c240: 20 20 45 61 63 68 20 70 61 67 65 20 75 73 65 73    Each page uses
c250: 20 31 4b 20 6f 6e 20 64 69 73 6b 20 61 6e 64 20   1K on disk and 
c260: 61 62 6f 75 74 0a 20 20 20 20 31 2e 35 4b 20 69  about.    1.5K i
c270: 6e 20 6d 65 6d 6f 72 79 2e 0a 20 20 20 20 54 68  n memory..    Th
c280: 69 73 20 70 72 61 67 6d 61 20 77 6f 72 6b 73 20  is pragma works 
c290: 6c 69 6b 65 20 74 68 65 0a 20 20 20 20 3c 61 20  like the.    <a 
c2a0: 68 72 65 66 3d 22 23 70 72 61 67 6d 61 5f 63 61  href="#pragma_ca
c2b0: 63 68 65 5f 73 69 7a 65 22 3e 3c 62 3e 63 61 63  che_size"><b>cac
c2c0: 68 65 5f 73 69 7a 65 3c 2f 62 3e 3c 2f 61 3e 20  he_size</b></a> 
c2d0: 0a 20 20 20 20 70 72 61 67 6d 61 20 77 69 74 68  .    pragma with
c2e0: 20 74 68 65 20 61 64 64 69 74 69 6f 6e 61 6c 0a   the additional.
c2f0: 20 20 20 20 66 65 61 74 75 72 65 20 74 68 61 74      feature that
c300: 20 69 74 20 63 68 61 6e 67 65 73 20 74 68 65 20   it changes the 
c310: 63 61 63 68 65 20 73 69 7a 65 20 70 65 72 73 69  cache size persi
c320: 73 74 65 6e 74 6c 79 2e 20 20 57 69 74 68 20 74  stently.  With t
c330: 68 69 73 20 70 72 61 67 6d 61 2c 0a 20 20 20 20  his pragma,.    
c340: 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 65 20  you can set the 
c350: 63 61 63 68 65 20 73 69 7a 65 20 6f 6e 63 65 20  cache size once 
c360: 61 6e 64 20 74 68 61 74 20 73 65 74 74 69 6e 67  and that setting
c370: 20 69 73 20 72 65 74 61 69 6e 65 64 20 61 6e 64   is retained and
c380: 20 72 65 75 73 65 64 0a 20 20 20 20 65 76 65 72   reused.    ever
c390: 79 74 69 6d 65 20 79 6f 75 20 72 65 6f 70 65 6e  ytime you reopen
c3a0: 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 3c 2f   the database.</
c3b0: 70 3e 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e 61 6d 65  p></li>..<a name
c3c0: 3d 22 70 72 61 67 6d 61 5f 64 65 66 61 75 6c 74  ="pragma_default
c3d0: 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 22 3e 3c 2f  _synchronous"></
c3e0: 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41  a>.<li><p><b>PRA
c3f0: 47 4d 41 20 64 65 66 61 75 6c 74 5f 73 79 6e 63  GMA default_sync
c400: 68 72 6f 6e 6f 75 73 3b 0a 20 20 20 20 20 20 20  hronous;.       
c410: 3c 62 72 3e 50 52 41 47 4d 41 20 64 65 66 61 75  <br>PRAGMA defau
c420: 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d  lt_synchronous =
c430: 20 46 55 4c 4c 3b 20 3c 2f 62 3e 28 32 29 3c 62   FULL; </b>(2)<b
c440: 3e 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41  >.       <br>PRA
c450: 47 4d 41 20 64 65 66 61 75 6c 74 5f 73 79 6e 63  GMA default_sync
c460: 68 72 6f 6e 6f 75 73 20 3d 20 4e 4f 52 4d 41 4c  hronous = NORMAL
c470: 3b 20 3c 2f 62 3e 28 31 29 3c 62 3e 0a 20 20 20  ; </b>(1)<b>.   
c480: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 64      <br>PRAGMA d
c490: 65 66 61 75 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f  efault_synchrono
c4a0: 75 73 20 3d 20 4f 46 46 3b 20 3c 2f 62 3e 28 30  us = OFF; </b>(0
c4b0: 29 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65  )</p>.    <p>Que
c4c0: 72 79 20 6f 72 20 63 68 61 6e 67 65 20 74 68 65  ry or change the
c4d0: 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68 65 20   setting of the 
c4e0: 22 73 79 6e 63 68 72 6f 6e 6f 75 73 22 20 66 6c  "synchronous" fl
c4f0: 61 67 20 69 6e 0a 20 20 20 20 74 68 65 20 64 61  ag in.    the da
c500: 74 61 62 61 73 65 2e 20 20 54 68 65 20 66 69 72  tabase.  The fir
c510: 73 74 20 28 71 75 65 72 79 29 20 66 6f 72 6d 20  st (query) form 
c520: 77 69 6c 6c 20 72 65 74 75 72 6e 20 74 68 65 20  will return the 
c530: 73 65 74 74 69 6e 67 20 61 73 20 61 6e 20 0a 20  setting as an . 
c540: 20 20 20 69 6e 74 65 67 65 72 2e 20 20 57 68 65     integer.  Whe
c550: 6e 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73  n synchronous is
c560: 20 46 55 4c 4c 20 28 32 29 2c 20 74 68 65 20 53   FULL (2), the S
c570: 51 4c 69 74 65 20 64 61 74 61 62 61 73 65 20 65  QLite database e
c580: 6e 67 69 6e 65 20 77 69 6c 6c 0a 20 20 20 20 70  ngine will.    p
c590: 61 75 73 65 20 61 74 20 63 72 69 74 69 63 61 6c  ause at critical
c5a0: 20 6d 6f 6d 65 6e 74 73 20 74 6f 20 6d 61 6b 65   moments to make
c5b0: 20 73 75 72 65 20 74 68 61 74 20 64 61 74 61 20   sure that data 
c5c0: 68 61 73 20 61 63 74 75 61 6c 6c 79 20 62 65 65  has actually bee
c5d0: 6e 20 0a 20 20 20 20 77 72 69 74 74 65 6e 20 74  n .    written t
c5e0: 6f 20 74 68 65 20 64 69 73 6b 20 73 75 72 66 61  o the disk surfa
c5f0: 63 65 20 62 65 66 6f 72 65 20 63 6f 6e 74 69 6e  ce before contin
c600: 75 69 6e 67 2e 20 20 54 68 69 73 20 65 6e 73 75  uing.  This ensu
c610: 72 65 73 20 74 68 61 74 20 69 66 0a 20 20 20 20  res that if.    
c620: 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79  the operating sy
c630: 73 74 65 6d 20 63 72 61 73 68 65 73 20 6f 72 20  stem crashes or 
c640: 69 66 20 74 68 65 72 65 20 69 73 20 61 20 70 6f  if there is a po
c650: 77 65 72 20 66 61 69 6c 75 72 65 2c 20 74 68 65  wer failure, the
c660: 20 64 61 74 61 62 61 73 65 0a 20 20 20 20 77 69   database.    wi
c670: 6c 6c 20 62 65 20 75 6e 63 6f 72 72 75 70 74 65  ll be uncorrupte
c680: 64 20 61 66 74 65 72 20 72 65 62 6f 6f 74 69 6e  d after rebootin
c690: 67 2e 20 20 46 55 4c 4c 20 73 79 6e 63 68 72 6f  g.  FULL synchro
c6a0: 6e 6f 75 73 20 69 73 20 76 65 72 79 20 0a 20 20  nous is very .  
c6b0: 20 20 73 61 66 65 2c 20 62 75 74 20 69 74 20 69    safe, but it i
c6c0: 73 20 61 6c 73 6f 20 73 6c 6f 77 2e 20 20 0a 20  s also slow.  . 
c6d0: 20 20 20 57 68 65 6e 20 73 79 6e 63 68 72 6f 6e     When synchron
c6e0: 6f 75 73 20 69 73 20 4e 4f 52 4d 41 4c 20 28 31  ous is NORMAL (1
c6f0: 2c 20 74 68 65 20 64 65 66 61 75 6c 74 29 2c 20  , the default), 
c700: 74 68 65 20 53 51 4c 69 74 65 20 64 61 74 61 62  the SQLite datab
c710: 61 73 65 0a 20 20 20 20 65 6e 67 69 6e 65 20 77  ase.    engine w
c720: 69 6c 6c 20 73 74 69 6c 6c 20 70 61 75 73 65 20  ill still pause 
c730: 61 74 20 74 68 65 20 6d 6f 73 74 20 63 72 69 74  at the most crit
c740: 69 63 61 6c 20 6d 6f 6d 65 6e 74 73 2c 20 62 75  ical moments, bu
c750: 74 20 6c 65 73 73 20 6f 66 74 65 6e 0a 20 20 20  t less often.   
c760: 20 74 68 61 6e 20 69 6e 20 46 55 4c 4c 20 6d 6f   than in FULL mo
c770: 64 65 2e 20 20 54 68 65 72 65 20 69 73 20 61 20  de.  There is a 
c780: 76 65 72 79 20 73 6d 61 6c 6c 20 28 74 68 6f 75  very small (thou
c790: 67 68 20 6e 6f 6e 2d 7a 65 72 6f 29 20 63 68 61  gh non-zero) cha
c7a0: 6e 63 65 20 74 68 61 74 0a 20 20 20 20 61 20 70  nce that.    a p
c7b0: 6f 77 65 72 20 66 61 69 6c 75 72 65 20 61 74 20  ower failure at 
c7c0: 6a 75 73 74 20 74 68 65 20 77 72 6f 6e 67 20 74  just the wrong t
c7d0: 69 6d 65 20 63 6f 75 6c 64 20 63 6f 72 72 75 70  ime could corrup
c7e0: 74 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  t the database i
c7f0: 6e 0a 20 20 20 20 4e 4f 52 4d 41 4c 20 6d 6f 64  n.    NORMAL mod
c800: 65 2e 20 20 42 75 74 20 69 6e 20 70 72 61 63 74  e.  But in pract
c810: 69 63 65 2c 20 79 6f 75 20 61 72 65 20 6d 6f 72  ice, you are mor
c820: 65 20 6c 69 6b 65 6c 79 20 74 6f 20 73 75 66 66  e likely to suff
c830: 65 72 0a 20 20 20 20 61 20 63 61 74 61 73 74 72  er.    a catastr
c840: 6f 70 68 69 63 20 64 69 73 6b 20 66 61 69 6c 75  ophic disk failu
c850: 72 65 20 6f 72 20 73 6f 6d 65 20 6f 74 68 65 72  re or some other
c860: 20 75 6e 72 65 63 6f 76 65 72 61 62 6c 65 20 68   unrecoverable h
c870: 61 72 64 77 61 72 65 0a 20 20 20 20 66 61 75 6c  ardware.    faul
c880: 74 2e 20 20 53 6f 20 4e 4f 52 4d 41 4c 20 69 73  t.  So NORMAL is
c890: 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 6f 64   the default mod
c8a0: 65 2e 0a 20 20 20 20 57 69 74 68 20 73 79 6e 63  e..    With sync
c8b0: 68 72 6f 6e 6f 75 73 20 4f 46 46 20 28 30 29 2c  hronous OFF (0),
c8c0: 20 53 51 4c 69 74 65 20 63 6f 6e 74 69 6e 75 65   SQLite continue
c8d0: 73 20 77 69 74 68 6f 75 74 20 70 61 75 73 69 6e  s without pausin
c8e0: 67 0a 20 20 20 20 61 73 20 73 6f 6f 6e 20 61 73  g.    as soon as
c8f0: 20 69 74 20 68 61 73 20 68 61 6e 64 65 64 20 64   it has handed d
c900: 61 74 61 20 6f 66 66 20 74 6f 20 74 68 65 20 6f  ata off to the o
c910: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e  perating system.
c920: 0a 20 20 20 20 49 66 20 74 68 65 20 61 70 70 6c  .    If the appl
c930: 69 63 61 74 69 6f 6e 20 72 75 6e 6e 69 6e 67 20  ication running 
c940: 53 51 4c 69 74 65 20 63 72 61 73 68 65 73 2c 20  SQLite crashes, 
c950: 74 68 65 20 64 61 74 61 20 77 69 6c 6c 20 62 65  the data will be
c960: 20 73 61 66 65 2c 20 62 75 74 0a 20 20 20 20 74   safe, but.    t
c970: 68 65 20 64 61 74 61 62 61 73 65 20 6d 69 67 68  he database migh
c980: 74 20 62 65 63 6f 6d 65 20 63 6f 72 72 75 70 74  t become corrupt
c990: 65 64 20 69 66 20 74 68 65 20 6f 70 65 72 61 74  ed if the operat
c9a0: 69 6e 67 20 73 79 73 74 65 6d 0a 20 20 20 20 63  ing system.    c
c9b0: 72 61 73 68 65 73 20 6f 72 20 74 68 65 20 63 6f  rashes or the co
c9c0: 6d 70 75 74 65 72 20 6c 6f 73 65 73 20 70 6f 77  mputer loses pow
c9d0: 65 72 20 62 65 66 6f 72 65 20 74 68 61 74 20 64  er before that d
c9e0: 61 74 61 20 68 61 73 20 62 65 65 6e 20 77 72 69  ata has been wri
c9f0: 74 74 65 6e 0a 20 20 20 20 74 6f 20 74 68 65 20  tten.    to the 
ca00: 64 69 73 6b 20 73 75 72 66 61 63 65 2e 20 20 4f  disk surface.  O
ca10: 6e 20 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64  n the other hand
ca20: 2c 20 73 6f 6d 65 0a 20 20 20 20 6f 70 65 72 61  , some.    opera
ca30: 74 69 6f 6e 73 20 61 72 65 20 61 73 20 6d 75 63  tions are as muc
ca40: 68 20 61 73 20 35 30 20 6f 72 20 6d 6f 72 65 20  h as 50 or more 
ca50: 74 69 6d 65 73 20 66 61 73 74 65 72 20 77 69 74  times faster wit
ca60: 68 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 4f 46  h synchronous OF
ca70: 46 2e 0a 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20  F..    </p>.    
ca80: 3c 70 3e 54 68 69 73 20 70 72 61 67 6d 61 20 63  <p>This pragma c
ca90: 68 61 6e 67 65 73 20 74 68 65 20 73 79 6e 63 68  hanges the synch
caa0: 72 6f 6e 6f 75 73 20 6d 6f 64 65 20 70 65 72 73  ronous mode pers
cab0: 69 73 74 65 6e 74 6c 79 2e 20 20 4f 6e 63 65 20  istently.  Once 
cac0: 63 68 61 6e 67 65 64 2c 0a 20 20 20 20 74 68 65  changed,.    the
cad0: 20 6d 6f 64 65 20 73 74 61 79 73 20 61 73 20 73   mode stays as s
cae0: 65 74 20 65 76 65 6e 20 69 66 20 74 68 65 20 64  et even if the d
caf0: 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65  atabase is close
cb00: 64 20 61 6e 64 20 72 65 6f 70 65 6e 65 64 2e 20  d and reopened. 
cb10: 20 54 68 65 0a 20 20 20 20 3c 61 20 68 72 65 66   The.    <a href
cb20: 3d 22 23 70 72 61 67 6d 61 5f 73 79 6e 63 68 72  ="#pragma_synchr
cb30: 6f 6e 6f 75 73 22 3e 3c 62 3e 73 79 6e 63 68 72  onous"><b>synchr
cb40: 6f 6e 6f 75 73 3c 2f 62 3e 3c 2f 61 3e 20 70 72  onous</b></a> pr
cb50: 61 67 6d 61 20 64 6f 65 73 20 74 68 65 20 73 61  agma does the sa
cb60: 6d 65 20 0a 20 20 20 20 74 68 69 6e 67 20 62 75  me .    thing bu
cb70: 74 20 6f 6e 6c 79 20 61 70 70 6c 69 65 73 20 74  t only applies t
cb80: 68 65 20 73 65 74 74 69 6e 67 20 74 6f 20 74 68  he setting to th
cb90: 65 20 63 75 72 72 65 6e 74 20 73 65 73 73 69 6f  e current sessio
cba0: 6e 2e 0a 20 20 20 20 0a 20 20 20 20 3c 2f 70 3e  n..    .    </p>
cbb0: 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22  </li>..<a name="
cbc0: 70 72 61 67 6d 61 5f 64 65 66 61 75 6c 74 5f 74  pragma_default_t
cbd0: 65 6d 70 5f 73 74 6f 72 65 22 3e 3c 2f 61 3e 0a  emp_store"></a>.
cbe0: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
cbf0: 20 64 65 66 61 75 6c 74 5f 74 65 6d 70 5f 73 74   default_temp_st
cc00: 6f 72 65 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e  ore;.       <br>
cc10: 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 74  PRAGMA default_t
cc20: 65 6d 70 5f 73 74 6f 72 65 20 3d 20 44 45 46 41  emp_store = DEFA
cc30: 55 4c 54 3b 20 3c 2f 62 3e 28 30 29 3c 62 3e 0a  ULT; </b>(0)<b>.
cc40: 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d         <br>PRAGM
cc50: 41 20 64 65 66 61 75 6c 74 5f 74 65 6d 70 5f 73  A default_temp_s
cc60: 74 6f 72 65 20 3d 20 4d 45 4d 4f 52 59 3b 20 3c  tore = MEMORY; <
cc70: 2f 62 3e 28 32 29 3c 62 3e 0a 20 20 20 20 20 20  /b>(2)<b>.      
cc80: 20 3c 62 72 3e 50 52 41 47 4d 41 20 64 65 66 61   <br>PRAGMA defa
cc90: 75 6c 74 5f 74 65 6d 70 5f 73 74 6f 72 65 20 3d  ult_temp_store =
cca0: 20 46 49 4c 45 3b 3c 2f 62 3e 20 28 31 29 3c 2f   FILE;</b> (1)</
ccb0: 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20  p>.    <p>Query 
ccc0: 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20 73 65  or change the se
ccd0: 74 74 69 6e 67 20 6f 66 20 74 68 65 20 22 3c 62  tting of the "<b
cce0: 3e 74 65 6d 70 5f 73 74 6f 72 65 3c 2f 62 3e 22  >temp_store</b>"
ccf0: 20 66 6c 61 67 20 73 74 6f 72 65 64 20 69 6e 0a   flag stored in.
cd00: 20 20 20 20 74 68 65 20 64 61 74 61 62 61 73 65      the database
cd10: 2e 20 20 57 68 65 6e 20 74 65 6d 70 5f 73 74 6f  .  When temp_sto
cd20: 72 65 20 69 73 20 44 45 46 41 55 4c 54 20 28 30  re is DEFAULT (0
cd30: 29 2c 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74  ), the compile-t
cd40: 69 6d 65 20 76 61 6c 75 65 0a 20 20 20 20 6f 66  ime value.    of
cd50: 20 74 68 65 20 73 79 6d 62 6f 6c 20 54 45 4d 50   the symbol TEMP
cd60: 5f 53 54 4f 52 45 20 69 73 20 75 73 65 64 20 66  _STORE is used f
cd70: 6f 72 20 74 68 65 20 74 65 6d 70 6f 72 61 72 79  or the temporary
cd80: 20 64 61 74 61 62 61 73 65 2e 20 20 0a 20 20 20   database.  .   
cd90: 20 57 68 65 6e 20 74 65 6d 70 5f 73 74 6f 72 65   When temp_store
cda0: 20 69 73 20 4d 45 4d 4f 52 59 20 28 32 29 2c 20   is MEMORY (2), 
cdb0: 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74  an in-memory dat
cdc0: 61 62 61 73 65 20 69 73 20 75 73 65 64 2e 20 20  abase is used.  
cdd0: 0a 20 20 20 20 57 68 65 6e 20 74 65 6d 70 5f 73  .    When temp_s
cde0: 74 6f 72 65 20 69 73 20 46 49 4c 45 20 28 31 29  tore is FILE (1)
cdf0: 2c 20 61 20 74 65 6d 70 6f 72 61 72 79 20 64 61  , a temporary da
ce00: 74 61 62 61 73 65 20 66 69 6c 65 20 6f 6e 20 64  tabase file on d
ce10: 69 73 6b 20 77 69 6c 6c 20 62 65 20 75 73 65 64  isk will be used
ce20: 2e 0a 20 20 20 20 49 74 20 69 73 20 70 6f 73 73  ..    It is poss
ce30: 69 62 6c 65 20 66 6f 72 20 74 68 65 20 6c 69 62  ible for the lib
ce40: 72 61 72 79 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  rary compile-tim
ce50: 65 20 73 79 6d 62 6f 6c 20 54 45 4d 50 5f 53 54  e symbol TEMP_ST
ce60: 4f 52 45 20 74 6f 20 6f 76 65 72 72 69 64 65 20  ORE to override 
ce70: 0a 20 20 20 20 74 68 69 73 20 73 65 74 74 69 6e  .    this settin
ce80: 67 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e  g.  The followin
ce90: 67 20 74 61 62 6c 65 20 73 75 6d 6d 61 72 69 7a  g table summariz
cea0: 65 73 20 74 68 69 73 3a 3c 2f 70 3e 0a 0a 3c 74  es this:</p>..<t
ceb0: 61 62 6c 65 20 63 65 6c 6c 70 61 64 64 69 6e 67  able cellpadding
cec0: 3d 22 32 22 3e 0a 3c 74 72 3e 3c 74 68 3e 54 45  ="2">.<tr><th>TE
ced0: 4d 50 5f 53 54 4f 52 45 3c 2f 74 68 3e 3c 74 68  MP_STORE</th><th
cee0: 3e 74 65 6d 70 5f 73 74 6f 72 65 3c 2f 74 68 3e  >temp_store</th>
cef0: 3c 74 68 3e 74 65 6d 70 20 64 61 74 61 62 61 73  <th>temp databas
cf00: 65 20 6c 6f 63 61 74 69 6f 6e 3c 2f 74 68 3e 3c  e location</th><
cf10: 2f 74 72 3e 0a 3c 74 72 3e 3c 74 64 20 61 6c 69  /tr>.<tr><td ali
cf20: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74  gn="center">0</t
cf30: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
cf40: 74 65 72 22 3e 3c 65 6d 3e 61 6e 79 3c 2f 65 6d  ter"><em>any</em
cf50: 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d  ></td><td align=
cf60: 22 63 65 6e 74 65 72 22 3e 66 69 6c 65 3c 2f 74  "center">file</t
cf70: 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 3c 74 64 20  d></tr>.<tr><td 
cf80: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31  align="center">1
cf90: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
cfa0: 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74  center">0</td><t
cfb0: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
cfc0: 3e 66 69 6c 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a  >file</td></tr>.
cfd0: 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  <tr><td align="c
cfe0: 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64  enter">1</td><td
cff0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
d000: 31 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d  1</td><td align=
d010: 22 63 65 6e 74 65 72 22 3e 66 69 6c 65 3c 2f 74  "center">file</t
d020: 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 3c 74 64 20  d></tr>.<tr><td 
d030: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31  align="center">1
d040: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
d050: 63 65 6e 74 65 72 22 3e 32 3c 2f 74 64 3e 3c 74  center">2</td><t
d060: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
d070: 3e 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f 74 72  >memory</td></tr
d080: 3e 0a 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d  >.<tr><td align=
d090: 22 63 65 6e 74 65 72 22 3e 32 3c 2f 74 64 3e 3c  "center">2</td><
d0a0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
d0b0: 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  ">0</td><td alig
d0c0: 6e 3d 22 63 65 6e 74 65 72 22 3e 6d 65 6d 6f 72  n="center">memor
d0d0: 79 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e  y</td></tr>.<tr>
d0e0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
d0f0: 72 22 3e 32 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  r">2</td><td ali
d100: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74  gn="center">1</t
d110: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
d120: 74 65 72 22 3e 66 69 6c 65 3c 2f 74 64 3e 3c 2f  ter">file</td></
d130: 74 72 3e 0a 3c 74 72 3e 3c 74 64 20 61 6c 69 67  tr>.<tr><td alig
d140: 6e 3d 22 63 65 6e 74 65 72 22 3e 32 3c 2f 74 64  n="center">2</td
d150: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
d160: 65 72 22 3e 32 3c 2f 74 64 3e 3c 74 64 20 61 6c  er">2</td><td al
d170: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 6d 65 6d  ign="center">mem
d180: 6f 72 79 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74  ory</td></tr>.<t
d190: 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  r><td align="cen
d1a0: 74 65 72 22 3e 33 3c 2f 74 64 3e 3c 74 64 20 61  ter">3</td><td a
d1b0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 65  lign="center"><e
d1c0: 6d 3e 61 6e 79 3c 2f 65 6d 3e 3c 2f 74 64 3e 3c  m>any</em></td><
d1d0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
d1e0: 22 3e 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f 74  ">memory</td></t
d1f0: 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 20 20 20  r>.</table>..   
d200: 20 3c 70 3e 54 68 69 73 20 70 72 61 67 6d 61 20   <p>This pragma 
d210: 63 68 61 6e 67 65 73 20 74 68 65 20 74 65 6d 70  changes the temp
d220: 5f 73 74 6f 72 65 20 6d 6f 64 65 20 66 6f 72 20  _store mode for 
d230: 77 68 65 6e 65 76 65 72 20 74 68 65 20 64 61 74  whenever the dat
d240: 61 62 61 73 65 0a 20 20 20 20 69 73 20 6f 70 65  abase.    is ope
d250: 6e 65 64 20 69 6e 20 74 68 65 20 66 75 74 75 72  ned in the futur
d260: 65 2e 20 20 54 68 65 20 74 65 6d 70 5f 73 74 6f  e.  The temp_sto
d270: 72 65 20 6d 6f 64 65 20 66 6f 72 20 74 68 65 20  re mode for the 
d280: 63 75 72 72 65 6e 74 20 73 65 73 73 69 6f 6e 0a  current session.
d290: 20 20 20 20 69 73 20 75 6e 63 68 61 6e 67 65 64      is unchanged
d2a0: 2e 20 20 55 73 65 20 74 68 65 20 0a 20 20 20 20  .  Use the .    
d2b0: 3c 61 20 68 72 65 66 3d 22 23 70 72 61 67 6d 61  <a href="#pragma
d2c0: 5f 74 65 6d 70 5f 73 74 6f 72 65 22 3e 3c 62 3e  _temp_store"><b>
d2d0: 74 65 6d 70 5f 73 74 6f 72 65 3c 2f 62 3e 3c 2f  temp_store</b></
d2e0: 61 3e 20 70 72 61 67 6d 61 20 74 6f 20 63 68 61  a> pragma to cha
d2f0: 6e 67 65 20 74 68 65 0a 20 20 20 20 74 65 6d 70  nge the.    temp
d300: 5f 73 74 6f 72 65 20 6d 6f 64 65 20 66 6f 72 20  _store mode for 
d310: 74 68 65 20 63 75 72 72 65 6e 74 20 73 65 73 73  the current sess
d320: 69 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c  ion.</p></li>..<
d330: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
d340: 66 6f 72 65 69 67 6e 5f 6b 65 79 5f 6c 69 73 74  foreign_key_list
d350: 28 3c 2f 62 3e 3c 69 3e 74 61 62 6c 65 2d 6e 61  (</b><i>table-na
d360: 6d 65 3c 2f 69 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c  me</i><b>);</b><
d370: 2f 70 3e 0a 20 20 20 20 3c 70 3e 46 6f 72 20 65  /p>.    <p>For e
d380: 61 63 68 20 66 6f 72 65 69 67 6e 20 6b 65 79 20  ach foreign key 
d390: 74 68 61 74 20 72 65 66 65 72 65 6e 63 65 73 20  that references 
d3a0: 61 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20  a column in the 
d3b0: 61 72 67 75 6d 65 6e 74 0a 20 20 20 20 74 61 62  argument.    tab
d3c0: 6c 65 2c 20 69 6e 76 6f 6b 65 20 74 68 65 20 63  le, invoke the c
d3d0: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e  allback function
d3e0: 20 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f   with informatio
d3f0: 6e 20 61 62 6f 75 74 20 74 68 61 74 0a 20 20 20  n about that.   
d400: 20 66 6f 72 65 69 67 6e 20 6b 65 79 2e 20 54 68   foreign key. Th
d410: 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  e callback funct
d420: 69 6f 6e 20 77 69 6c 6c 20 62 65 20 69 6e 76 6f  ion will be invo
d430: 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20 65 61 63  ked once for eac
d440: 68 0a 20 20 20 20 63 6f 6c 75 6d 6e 20 69 6e 20  h.    column in 
d450: 65 61 63 68 20 66 6f 72 65 69 67 6e 20 6b 65 79  each foreign key
d460: 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e  .</p></li>..<li>
d470: 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 69 6e 64  <p><b>PRAGMA ind
d480: 65 78 5f 69 6e 66 6f 28 3c 2f 62 3e 3c 69 3e 69  ex_info(</b><i>i
d490: 6e 64 65 78 2d 6e 61 6d 65 3c 2f 69 3e 3c 62 3e  ndex-name</i><b>
d4a0: 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c  );</b></p>.    <
d4b0: 70 3e 46 6f 72 20 65 61 63 68 20 63 6f 6c 75 6d  p>For each colum
d4c0: 6e 20 74 68 61 74 20 74 68 65 20 6e 61 6d 65 64  n that the named
d4d0: 20 69 6e 64 65 78 20 72 65 66 65 72 65 6e 63 65   index reference
d4e0: 73 2c 20 69 6e 76 6f 6b 65 20 74 68 65 20 0a 20  s, invoke the . 
d4f0: 20 20 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63     callback func
d500: 74 69 6f 6e 0a 20 20 20 20 6f 6e 63 65 20 77 69  tion.    once wi
d510: 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61  th information a
d520: 62 6f 75 74 20 74 68 61 74 20 63 6f 6c 75 6d 6e  bout that column
d530: 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20  , including the 
d540: 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2c 0a 20 20 20  column name,.   
d550: 20 61 6e 64 20 74 68 65 20 63 6f 6c 75 6d 6e 20   and the column 
d560: 6e 75 6d 62 65 72 2e 3c 2f 70 3e 3c 2f 6c 69 3e  number.</p></li>
d570: 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47  ..<li><p><b>PRAG
d580: 4d 41 20 69 6e 64 65 78 5f 6c 69 73 74 28 3c 2f  MA index_list(</
d590: 62 3e 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c  b><i>table-name<
d5a0: 2f 69 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e  /i><b>);</b></p>
d5b0: 0a 20 20 20 20 3c 70 3e 46 6f 72 20 65 61 63 68  .    <p>For each
d5c0: 20 69 6e 64 65 78 20 6f 6e 20 74 68 65 20 6e 61   index on the na
d5d0: 6d 65 64 20 74 61 62 6c 65 2c 20 69 6e 76 6f 6b  med table, invok
d5e0: 65 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66  e the callback f
d5f0: 75 6e 63 74 69 6f 6e 0a 20 20 20 20 6f 6e 63 65  unction.    once
d600: 20 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f   with informatio
d610: 6e 20 61 62 6f 75 74 20 74 68 61 74 20 69 6e 64  n about that ind
d620: 65 78 2e 20 20 41 72 67 75 6d 65 6e 74 73 20 69  ex.  Arguments i
d630: 6e 63 6c 75 64 65 20 74 68 65 0a 20 20 20 20 69  nclude the.    i
d640: 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 61 20  ndex name and a 
d650: 66 6c 61 67 20 74 6f 20 69 6e 64 69 63 61 74 65  flag to indicate
d660: 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20   whether or not 
d670: 74 68 65 20 69 6e 64 65 78 20 6d 75 73 74 20 62  the index must b
d680: 65 0a 20 20 20 20 75 6e 69 71 75 65 2e 3c 2f 70  e.    unique.</p
d690: 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c  ></li>..<li><p><
d6a0: 62 3e 50 52 41 47 4d 41 20 69 6e 74 65 67 72 69  b>PRAGMA integri
d6b0: 74 79 5f 63 68 65 63 6b 3b 3c 2f 62 3e 3c 2f 70  ty_check;</b></p
d6c0: 3e 0a 20 20 20 20 3c 70 3e 54 68 65 20 63 6f 6d  >.    <p>The com
d6d0: 6d 61 6e 64 20 64 6f 65 73 20 61 6e 20 69 6e 74  mand does an int
d6e0: 65 67 72 69 74 79 20 63 68 65 63 6b 20 6f 66 20  egrity check of 
d6f0: 74 68 65 20 65 6e 74 69 72 65 20 64 61 74 61 62  the entire datab
d700: 61 73 65 2e 20 20 49 74 0a 20 20 20 20 6c 6f 6f  ase.  It.    loo
d710: 6b 73 20 66 6f 72 20 6f 75 74 2d 6f 66 2d 6f 72  ks for out-of-or
d720: 64 65 72 20 72 65 63 6f 72 64 73 2c 20 6d 69 73  der records, mis
d730: 73 69 6e 67 20 70 61 67 65 73 2c 20 6d 61 6c 66  sing pages, malf
d740: 6f 72 6d 65 64 20 72 65 63 6f 72 64 73 2c 20 61  ormed records, a
d750: 6e 64 0a 20 20 20 20 63 6f 72 72 75 70 74 20 69  nd.    corrupt i
d760: 6e 64 69 63 65 73 2e 0a 20 20 20 20 49 66 20 61  ndices..    If a
d770: 6e 79 20 70 72 6f 62 6c 65 6d 73 20 61 72 65 20  ny problems are 
d780: 66 6f 75 6e 64 2c 20 74 68 65 6e 20 61 20 73 69  found, then a si
d790: 6e 67 6c 65 20 73 74 72 69 6e 67 20 69 73 20 72  ngle string is r
d7a0: 65 74 75 72 6e 65 64 20 77 68 69 63 68 20 69 73  eturned which is
d7b0: 0a 20 20 20 20 61 20 64 65 73 63 72 69 70 74 69  .    a descripti
d7c0: 6f 6e 20 6f 66 20 61 6c 6c 20 70 72 6f 62 6c 65  on of all proble
d7d0: 6d 73 2e 20 20 49 66 20 65 76 65 72 79 74 68 69  ms.  If everythi
d7e0: 6e 67 20 69 73 20 69 6e 20 6f 72 64 65 72 2c 20  ng is in order, 
d7f0: 22 6f 6b 22 20 69 73 0a 20 20 20 20 72 65 74 75  "ok" is.    retu
d800: 72 6e 65 64 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a  rned.</p></li>..
d810: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
d820: 20 70 61 72 73 65 72 5f 74 72 61 63 65 20 3d 20   parser_trace = 
d830: 4f 4e 3b 20 3c 2f 62 3e 28 31 29 3c 62 3e 0a 20  ON; </b>(1)<b>. 
d840: 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 70 61     <br>PRAGMA pa
d850: 72 73 65 72 5f 74 72 61 63 65 20 3d 20 4f 46 46  rser_trace = OFF
d860: 3b 3c 2f 62 3e 20 28 30 29 3c 2f 70 3e 0a 20 20  ;</b> (0)</p>.  
d870: 20 20 3c 70 3e 54 75 72 6e 20 74 72 61 63 69 6e    <p>Turn tracin
d880: 67 20 6f 66 20 74 68 65 20 53 51 4c 20 70 61 72  g of the SQL par
d890: 73 65 72 20 69 6e 73 69 64 65 20 6f 66 20 74 68  ser inside of th
d8a0: 65 0a 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62  e.    SQLite lib
d8b0: 72 61 72 79 20 6f 6e 20 61 6e 64 20 6f 66 66 2e  rary on and off.
d8c0: 20 20 54 68 69 73 20 69 73 20 75 73 65 64 20 66    This is used f
d8d0: 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 0a 20 20  or debugging..  
d8e0: 20 20 54 68 69 73 20 6f 6e 6c 79 20 77 6f 72 6b    This only work
d8f0: 73 20 69 66 20 74 68 65 20 6c 69 62 72 61 72 79  s if the library
d900: 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74   is compiled wit
d910: 68 6f 75 74 20 74 68 65 20 4e 44 45 42 55 47 20  hout the NDEBUG 
d920: 6d 61 63 72 6f 2e 0a 20 20 20 20 3c 2f 70 3e 3c  macro..    </p><
d930: 2f 6c 69 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 70  /li>..<a name="p
d940: 72 61 67 6d 61 5f 73 79 6e 63 68 72 6f 6e 6f 75  ragma_synchronou
d950: 73 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c  s"></a>.<li><p><
d960: 62 3e 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f  b>PRAGMA synchro
d970: 6e 6f 75 73 3b 0a 20 20 20 20 20 20 20 3c 62 72  nous;.       <br
d980: 3e 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e  >PRAGMA synchron
d990: 6f 75 73 20 3d 20 46 55 4c 4c 3b 20 3c 2f 62 3e  ous = FULL; </b>
d9a0: 28 32 29 3c 62 3e 0a 20 20 20 20 20 20 20 3c 62  (2)<b>.       <b
d9b0: 72 3e 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f  r>PRAGMA synchro
d9c0: 6e 6f 75 73 20 3d 20 4e 4f 52 4d 41 4c 3b 20 3c  nous = NORMAL; <
d9d0: 2f 62 3e 28 31 29 3c 62 3e 0a 20 20 20 20 20 20  /b>(1)<b>.      
d9e0: 20 3c 62 72 3e 50 52 41 47 4d 41 20 73 79 6e 63   <br>PRAGMA sync
d9f0: 68 72 6f 6e 6f 75 73 20 3d 20 4f 46 46 3b 3c 2f  hronous = OFF;</
da00: 62 3e 20 28 30 29 3c 2f 70 3e 0a 20 20 20 20 3c  b> (0)</p>.    <
da10: 70 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e 67  p>Query or chang
da20: 65 20 74 68 65 20 73 65 74 74 69 6e 67 20 6f 66  e the setting of
da30: 20 74 68 65 20 22 73 79 6e 63 68 72 6f 6e 6f 75   the "synchronou
da40: 73 22 20 66 6c 61 67 20 61 66 66 65 63 74 69 6e  s" flag affectin
da50: 67 0a 20 20 20 20 74 68 65 20 64 61 74 61 62 61  g.    the databa
da60: 73 65 20 66 6f 72 20 74 68 65 20 64 75 72 61 74  se for the durat
da70: 69 6f 6e 20 6f 66 20 74 68 65 20 63 75 72 72 65  ion of the curre
da80: 6e 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  nt database conn
da90: 65 63 74 69 6f 6e 2e 0a 20 20 20 20 54 68 65 20  ection..    The 
daa0: 73 79 6e 63 68 72 6f 6e 6f 75 73 20 66 6c 61 67  synchronous flag
dab0: 20 72 65 76 65 72 74 73 20 74 6f 20 69 74 73 20   reverts to its 
dac0: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 77 68  default value wh
dad0: 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 0a  en the database.
dae0: 20 20 20 20 69 73 20 63 6c 6f 73 65 64 20 61 6e      is closed an
daf0: 64 20 72 65 6f 70 65 6e 65 64 2e 20 20 46 6f 72  d reopened.  For
db00: 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f   additional info
db10: 72 6d 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20 73  rmation on the s
db20: 79 6e 63 68 72 6f 6e 6f 75 73 0a 20 20 20 20 66  ynchronous.    f
db30: 6c 61 67 2c 20 73 65 65 20 74 68 65 20 64 65 73  lag, see the des
db40: 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65 20  cription of the 
db50: 3c 61 20 68 72 65 66 3d 22 23 70 72 61 67 6d 61  <a href="#pragma
db60: 5f 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72 6f  _default_synchro
db70: 6e 6f 75 73 22 3e 0a 20 20 20 20 3c 62 3e 64 65  nous">.    <b>de
db80: 66 61 75 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f 75  fault_synchronou
db90: 73 3c 2f 62 3e 3c 2f 61 3e 20 70 72 61 67 6d 61  s</b></a> pragma
dba0: 2e 3c 2f 70 3e 0a 20 20 20 20 3c 2f 6c 69 3e 0a  .</p>.    </li>.
dbb0: 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d  .<li><p><b>PRAGM
dbc0: 41 20 74 61 62 6c 65 5f 69 6e 66 6f 28 3c 2f 62  A table_info(</b
dbd0: 3e 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f  ><i>table-name</
dbe0: 69 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a  i><b>);</b></p>.
dbf0: 20 20 20 20 3c 70 3e 46 6f 72 20 65 61 63 68 20      <p>For each 
dc00: 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 6e 61  column in the na
dc10: 6d 65 64 20 74 61 62 6c 65 2c 20 69 6e 76 6f 6b  med table, invok
dc20: 65 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66  e the callback f
dc30: 75 6e 63 74 69 6f 6e 0a 20 20 20 20 6f 6e 63 65  unction.    once
dc40: 20 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f   with informatio
dc50: 6e 20 61 62 6f 75 74 20 74 68 61 74 20 63 6f 6c  n about that col
dc60: 75 6d 6e 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74  umn, including t
dc70: 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2c 0a  he column name,.
dc80: 20 20 20 20 64 61 74 61 20 74 79 70 65 2c 20 77      data type, w
dc90: 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68  hether or not th
dca0: 65 20 63 6f 6c 75 6d 6e 20 63 61 6e 20 62 65 20  e column can be 
dcb0: 4e 55 4c 4c 2c 20 61 6e 64 20 74 68 65 20 64 65  NULL, and the de
dcc0: 66 61 75 6c 74 0a 20 20 20 20 76 61 6c 75 65 20  fault.    value 
dcd0: 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 2e 3c  for the column.<
dce0: 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e 61 6d  /p></li>..<a nam
dcf0: 65 3d 22 70 72 61 67 6d 61 5f 74 65 6d 70 5f 73  e="pragma_temp_s
dd00: 74 6f 72 65 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e 3c  tore"></a>.<li><
dd10: 70 3e 3c 62 3e 50 52 41 47 4d 41 20 74 65 6d 70  p><b>PRAGMA temp
dd20: 5f 73 74 6f 72 65 3b 0a 20 20 20 20 20 20 20 3c  _store;.       <
dd30: 62 72 3e 50 52 41 47 4d 41 20 74 65 6d 70 5f 73  br>PRAGMA temp_s
dd40: 74 6f 72 65 20 3d 20 44 45 46 41 55 4c 54 3b 20  tore = DEFAULT; 
dd50: 3c 2f 62 3e 28 30 29 3c 62 3e 0a 20 20 20 20 20  </b>(0)<b>.     
dd60: 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 74 65 6d    <br>PRAGMA tem
dd70: 70 5f 73 74 6f 72 65 20 3d 20 4d 45 4d 4f 52 59  p_store = MEMORY
dd80: 3b 20 3c 2f 62 3e 28 32 29 3c 62 3e 0a 20 20 20  ; </b>(2)<b>.   
dd90: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 74      <br>PRAGMA t
dda0: 65 6d 70 5f 73 74 6f 72 65 20 3d 20 46 49 4c 45  emp_store = FILE
ddb0: 3b 3c 2f 62 3e 20 28 31 29 3c 2f 70 3e 0a 20 20  ;</b> (1)</p>.  
ddc0: 20 20 3c 70 3e 51 75 65 72 79 20 6f 72 20 63 68    <p>Query or ch
ddd0: 61 6e 67 65 20 74 68 65 20 73 65 74 74 69 6e 67  ange the setting
dde0: 20 6f 66 20 74 68 65 20 22 74 65 6d 70 5f 73 74   of the "temp_st
ddf0: 6f 72 65 22 20 66 6c 61 67 20 61 66 66 65 63 74  ore" flag affect
de00: 69 6e 67 0a 20 20 20 20 74 68 65 20 64 61 74 61  ing.    the data
de10: 62 61 73 65 20 66 6f 72 20 74 68 65 20 64 75 72  base for the dur
de20: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 75 72  ation of the cur
de30: 72 65 6e 74 20 64 61 74 61 62 61 73 65 20 63 6f  rent database co
de40: 6e 6e 65 63 74 69 6f 6e 2e 0a 20 20 20 20 54 68  nnection..    Th
de50: 65 20 74 65 6d 70 5f 73 74 6f 72 65 20 66 6c 61  e temp_store fla
de60: 67 20 72 65 76 65 72 74 73 20 74 6f 20 69 74 73  g reverts to its
de70: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 77   default value w
de80: 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  hen the database
de90: 0a 20 20 20 20 69 73 20 63 6c 6f 73 65 64 20 61  .    is closed a
dea0: 6e 64 20 72 65 6f 70 65 6e 65 64 2e 20 20 46 6f  nd reopened.  Fo
deb0: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
dec0: 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20  ormation on the 
ded0: 74 65 6d 70 5f 73 74 6f 72 65 0a 20 20 20 20 66  temp_store.    f
dee0: 6c 61 67 2c 20 73 65 65 20 74 68 65 20 64 65 73  lag, see the des
def0: 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65 20  cription of the 
df00: 3c 61 20 68 72 65 66 3d 22 23 70 72 61 67 6d 61  <a href="#pragma
df10: 5f 64 65 66 61 75 6c 74 5f 74 65 6d 70 5f 73 74  _default_temp_st
df20: 6f 72 65 22 3e 0a 20 20 20 20 3c 62 3e 64 65 66  ore">.    <b>def
df30: 61 75 6c 74 5f 74 65 6d 70 5f 73 74 6f 72 65 3c  ault_temp_store<
df40: 2f 62 3e 3c 2f 61 3e 20 70 72 61 67 6d 61 2e 20  /b></a> pragma. 
df50: 20 4e 6f 74 65 20 74 68 61 74 20 69 74 20 69 73   Note that it is
df60: 20 70 6f 73 73 69 62 6c 65 20 66 6f 72 20 0a 20   possible for . 
df70: 20 20 20 74 68 65 20 6c 69 62 72 61 72 79 20 63     the library c
df80: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
df90: 6f 6e 73 20 74 6f 20 6f 76 65 72 72 69 64 65 20  ons to override 
dfa0: 74 68 69 73 20 73 65 74 74 69 6e 67 2e 20 3c 2f  this setting. </
dfb0: 70 3e 0a 0a 20 20 20 20 3c 70 3e 57 68 65 6e 20  p>..    <p>When 
dfc0: 74 68 65 20 74 65 6d 70 5f 73 74 6f 72 65 20 73  the temp_store s
dfd0: 65 74 74 69 6e 67 20 69 73 20 63 68 61 6e 67 65  etting is change
dfe0: 64 2c 20 61 6c 6c 20 65 78 69 73 74 69 6e 67 20  d, all existing 
dff0: 74 65 6d 70 6f 72 61 72 79 0a 20 20 20 20 74 61  temporary.    ta
e000: 62 6c 65 73 2c 20 69 6e 64 69 63 65 73 2c 20 74  bles, indices, t
e010: 72 69 67 67 65 72 73 2c 20 61 6e 64 20 76 69 65  riggers, and vie
e020: 77 65 72 73 20 61 72 65 20 69 6d 6d 65 64 69 61  wers are immedia
e030: 74 65 6c 79 20 64 65 6c 65 74 65 64 2e 0a 20 20  tely deleted..  
e040: 20 20 3c 2f 70 3e 0a 20 20 20 20 3c 2f 6c 69 3e    </p>.    </li>
e050: 0a 0a 3c 61 20 6e 61 6d 65 3d 22 70 72 61 67 6d  ..<a name="pragm
e060: 61 5f 76 64 62 65 5f 74 72 61 63 65 22 3e 3c 2f  a_vdbe_trace"></
e070: 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41  a>.<li><p><b>PRA
e080: 47 4d 41 20 76 64 62 65 5f 74 72 61 63 65 20 3d  GMA vdbe_trace =
e090: 20 4f 4e 3b 20 3c 2f 62 3e 28 31 29 3c 62 3e 0a   ON; </b>(1)<b>.
e0a0: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 76      <br>PRAGMA v
e0b0: 64 62 65 5f 74 72 61 63 65 20 3d 20 4f 46 46 3b  dbe_trace = OFF;
e0c0: 3c 2f 62 3e 20 28 30 29 3c 2f 70 3e 0a 20 20 20  </b> (0)</p>.   
e0d0: 20 3c 70 3e 54 75 72 6e 20 74 72 61 63 69 6e 67   <p>Turn tracing
e0e0: 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20   of the virtual 
e0f0: 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20  database engine 
e100: 69 6e 73 69 64 65 20 6f 66 20 74 68 65 0a 20 20  inside of the.  
e110: 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79    SQLite library
e120: 20 6f 6e 20 61 6e 64 20 6f 66 66 2e 20 20 54 68   on and off.  Th
e130: 69 73 20 69 73 20 75 73 65 64 20 66 6f 72 20 64  is is used for d
e140: 65 62 75 67 67 69 6e 67 2e 20 20 53 65 65 20 74  ebugging.  See t
e150: 68 65 20 0a 20 20 20 20 3c 61 20 68 72 65 66 3d  he .    <a href=
e160: 22 76 64 62 65 2e 68 74 6d 6c 23 74 72 61 63 65  "vdbe.html#trace
e170: 22 3e 56 44 42 45 20 64 6f 63 75 6d 65 6e 74 61  ">VDBE documenta
e180: 74 69 6f 6e 3c 2f 61 3e 20 66 6f 72 20 6d 6f 72  tion</a> for mor
e190: 65 20 0a 20 20 20 20 69 6e 66 6f 72 6d 61 74 69  e .    informati
e1a0: 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75  on.</p></li>.</u
e1b0: 6c 3e 0a 0a 3c 70 3e 4e 6f 20 65 72 72 6f 72 20  l>..<p>No error 
e1c0: 6d 65 73 73 61 67 65 20 69 73 20 67 65 6e 65 72  message is gener
e1d0: 61 74 65 64 20 69 66 20 61 6e 20 75 6e 6b 6e 6f  ated if an unkno
e1e0: 77 6e 20 70 72 61 67 6d 61 20 69 73 20 69 73 73  wn pragma is iss
e1f0: 75 65 64 2e 0a 55 6e 6b 6e 6f 77 6e 20 70 72 61  ued..Unknown pra
e200: 67 6d 61 73 20 61 72 65 20 69 67 6e 6f 72 65 64  gmas are ignored
e210: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
e220: 6e 20 52 45 50 4c 41 43 45 20 72 65 70 6c 61 63  n REPLACE replac
e230: 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  e..Syntax {sql-s
e240: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 52 45 50 4c  tatement} {.REPL
e250: 41 43 45 20 49 4e 54 4f 20 5b 3c 64 61 74 61 62  ACE INTO [<datab
e260: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
e270: 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63 6f  ble-name> [( <co
e280: 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20 56 41  lumn-list> )] VA
e290: 4c 55 45 53 20 28 20 3c 76 61 6c 75 65 2d 6c 69  LUES ( <value-li
e2a0: 73 74 3e 20 29 20 7c 0a 52 45 50 4c 41 43 45 20  st> ) |.REPLACE 
e2b0: 49 4e 54 4f 20 5b 3c 64 61 74 61 62 61 73 65 2d  INTO [<database-
e2c0: 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d  name> .] <table-
e2d0: 6e 61 6d 65 3e 20 5b 28 20 3c 63 6f 6c 75 6d 6e  name> [( <column
e2e0: 2d 6c 69 73 74 3e 20 29 5d 20 3c 73 65 6c 65 63  -list> )] <selec
e2f0: 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a  t-statement>.}..
e300: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 52 45  puts {.<p>The RE
e310: 50 4c 41 43 45 20 63 6f 6d 6d 61 6e 64 20 69 73  PLACE command is
e320: 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74 68   an alias for th
e330: 65 20 22 49 4e 53 45 52 54 20 4f 52 20 52 45 50  e "INSERT OR REP
e340: 4c 41 43 45 22 20 76 61 72 69 61 6e 74 0a 6f 66  LACE" variant.of
e350: 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 69   the <a href="#i
e360: 6e 73 65 72 74 22 3e 49 4e 53 45 52 54 3c 2f 61  nsert">INSERT</a
e370: 3e 20 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73  > command.  This
e380: 20 61 6c 69 61 73 20 69 73 20 70 72 6f 76 69 64   alias is provid
e390: 65 64 20 66 6f 72 0a 63 6f 6d 70 61 74 69 62 69  ed for.compatibi
e3a0: 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51 4c 2e  lity with MySQL.
e3b0: 20 20 53 65 65 20 74 68 65 20 0a 3c 61 20 68 72    See the .<a hr
e3c0: 65 66 3d 22 23 69 6e 73 65 72 74 22 3e 49 4e 53  ef="#insert">INS
e3d0: 45 52 54 3c 2f 61 3e 20 63 6f 6d 6d 61 6e 64 20  ERT</a> command 
e3e0: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
e3f0: 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a 69 6e 66  r additional.inf
e400: 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 20 20 0a  ormation.</p>  .
e410: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 53 45 4c 45  }...Section SELE
e420: 43 54 20 73 65 6c 65 63 74 0a 0a 53 79 6e 74 61  CT select..Synta
e430: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
e440: 7d 20 7b 0a 53 45 4c 45 43 54 20 5b 41 4c 4c 20  } {.SELECT [ALL 
e450: 7c 20 44 49 53 54 49 4e 43 54 5d 20 3c 72 65 73  | DISTINCT] <res
e460: 75 6c 74 3e 20 5b 46 52 4f 4d 20 3c 74 61 62 6c  ult> [FROM <tabl
e470: 65 2d 6c 69 73 74 3e 5d 0a 5b 57 48 45 52 45 20  e-list>].[WHERE 
e480: 3c 65 78 70 72 3e 5d 0a 5b 47 52 4f 55 50 20 42  <expr>].[GROUP B
e490: 59 20 3c 65 78 70 72 2d 6c 69 73 74 3e 5d 0a 5b  Y <expr-list>].[
e4a0: 48 41 56 49 4e 47 20 3c 65 78 70 72 3e 5d 0a 5b  HAVING <expr>].[
e4b0: 3c 63 6f 6d 70 6f 75 6e 64 2d 6f 70 3e 20 3c 73  <compound-op> <s
e4c0: 65 6c 65 63 74 3e 5d 2a 0a 5b 4f 52 44 45 52 20  elect>]*.[ORDER 
e4d0: 42 59 20 3c 73 6f 72 74 2d 65 78 70 72 2d 6c 69  BY <sort-expr-li
e4e0: 73 74 3e 5d 0a 5b 4c 49 4d 49 54 20 3c 69 6e 74  st>].[LIMIT <int
e4f0: 65 67 65 72 3e 20 5b 4c 50 20 4f 46 46 53 45 54  eger> [LP OFFSET
e500: 20 7c 20 2c 20 52 50 20 3c 69 6e 74 65 67 65 72   | , RP <integer
e510: 3e 5d 5d 0a 7d 20 7b 72 65 73 75 6c 74 7d 20 7b  >]].} {result} {
e520: 0a 3c 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 3e  .<result-column>
e530: 20 5b 2c 20 3c 72 65 73 75 6c 74 2d 63 6f 6c 75   [, <result-colu
e540: 6d 6e 3e 5d 2a 0a 7d 20 7b 72 65 73 75 6c 74 2d  mn>]*.} {result-
e550: 63 6f 6c 75 6d 6e 7d 20 7b 0a 53 54 41 52 20 7c  column} {.STAR |
e560: 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20   <table-name> . 
e570: 53 54 41 52 20 7c 20 3c 65 78 70 72 3e 20 5b 20  STAR | <expr> [ 
e580: 5b 41 53 5d 20 3c 73 74 72 69 6e 67 3e 20 5d 0a  [AS] <string> ].
e590: 7d 20 7b 74 61 62 6c 65 2d 6c 69 73 74 7d 20 7b  } {table-list} {
e5a0: 0a 3c 74 61 62 6c 65 3e 20 5b 3c 6a 6f 69 6e 2d  .<table> [<join-
e5b0: 6f 70 3e 20 3c 74 61 62 6c 65 3e 20 3c 6a 6f 69  op> <table> <joi
e5c0: 6e 2d 61 72 67 73 3e 5d 2a 0a 7d 20 7b 74 61 62  n-args>]*.} {tab
e5d0: 6c 65 7d 20 7b 0a 3c 74 61 62 6c 65 2d 6e 61 6d  le} {.<table-nam
e5e0: 65 3e 20 5b 41 53 20 3c 61 6c 69 61 73 3e 5d 20  e> [AS <alias>] 
e5f0: 7c 0a 28 20 3c 73 65 6c 65 63 74 3e 20 29 20 5b  |.( <select> ) [
e600: 41 53 20 3c 61 6c 69 61 73 3e 5d 0a 7d 20 7b 6a  AS <alias>].} {j
e610: 6f 69 6e 2d 6f 70 7d 20 7b 0a 2c 20 7c 20 5b 4e  oin-op} {., | [N
e620: 41 54 55 52 41 4c 5d 20 5b 4c 45 46 54 20 7c 20  ATURAL] [LEFT | 
e630: 52 49 47 48 54 20 7c 20 46 55 4c 4c 5d 20 5b 4f  RIGHT | FULL] [O
e640: 55 54 45 52 20 7c 20 49 4e 4e 45 52 20 7c 20 43  UTER | INNER | C
e650: 52 4f 53 53 5d 20 4a 4f 49 4e 0a 7d 20 7b 6a 6f  ROSS] JOIN.} {jo
e660: 69 6e 2d 61 72 67 73 7d 20 7b 0a 5b 4f 4e 20 3c  in-args} {.[ON <
e670: 65 78 70 72 3e 5d 20 5b 55 53 49 4e 47 20 28 20  expr>] [USING ( 
e680: 3c 69 64 2d 6c 69 73 74 3e 20 29 5d 0a 7d 20 7b  <id-list> )].} {
e690: 73 6f 72 74 2d 65 78 70 72 2d 6c 69 73 74 7d 20  sort-expr-list} 
e6a0: 7b 0a 3c 65 78 70 72 3e 20 5b 3c 73 6f 72 74 2d  {.<expr> [<sort-
e6b0: 6f 72 64 65 72 3e 5d 20 5b 2c 20 3c 65 78 70 72  order>] [, <expr
e6c0: 3e 20 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e 5d  > [<sort-order>]
e6d0: 5d 2a 0a 7d 20 7b 73 6f 72 74 2d 6f 72 64 65 72  ]*.} {sort-order
e6e0: 7d 20 7b 0a 5b 20 43 4f 4c 4c 41 54 45 20 3c 63  } {.[ COLLATE <c
e6f0: 6f 6c 6c 61 74 69 6f 6e 2d 6e 61 6d 65 3e 20 5d  ollation-name> ]
e700: 20 5b 20 41 53 43 20 7c 20 44 45 53 43 20 5d 0a   [ ASC | DESC ].
e710: 7d 20 7b 63 6f 6d 70 6f 75 6e 64 5f 6f 70 7d 20  } {compound_op} 
e720: 7b 0a 55 4e 49 4f 4e 20 7c 20 55 4e 49 4f 4e 20  {.UNION | UNION 
e730: 41 4c 4c 20 7c 20 49 4e 54 45 52 53 45 43 54 20  ALL | INTERSECT 
e740: 7c 20 45 58 43 45 50 54 0a 7d 0a 0a 70 75 74 73  | EXCEPT.}..puts
e750: 20 7b 0a 3c 70 3e 54 68 65 20 53 45 4c 45 43 54   {.<p>The SELECT
e760: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73   statement is us
e770: 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65 20  ed to query the 
e780: 64 61 74 61 62 61 73 65 2e 20 20 54 68 65 0a 72  database.  The.r
e790: 65 73 75 6c 74 20 6f 66 20 61 20 53 45 4c 45 43  esult of a SELEC
e7a0: 54 20 69 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72  T is zero or mor
e7b0: 65 20 72 6f 77 73 20 6f 66 20 64 61 74 61 20 77  e rows of data w
e7c0: 68 65 72 65 20 65 61 63 68 20 72 6f 77 0a 68 61  here each row.ha
e7d0: 73 20 61 20 66 69 78 65 64 20 6e 75 6d 62 65 72  s a fixed number
e7e0: 20 6f 66 20 63 6f 6c 75 6d 6e 73 2e 20 20 54 68   of columns.  Th
e7f0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
e800: 6d 6e 73 20 69 6e 20 74 68 65 0a 72 65 73 75 6c  mns in the.resul
e810: 74 20 69 73 20 73 70 65 63 69 66 69 65 64 20 62  t is specified b
e820: 79 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  y the expression
e830: 20 6c 69 73 74 20 69 6e 20 62 65 74 77 65 65 6e   list in between
e840: 20 74 68 65 0a 53 45 4c 45 43 54 20 61 6e 64 20   the.SELECT and 
e850: 46 52 4f 4d 20 6b 65 79 77 6f 72 64 73 2e 20 20  FROM keywords.  
e860: 41 6e 79 20 61 72 62 69 74 72 61 72 79 20 65 78  Any arbitrary ex
e870: 70 72 65 73 73 69 6f 6e 20 63 61 6e 20 62 65 20  pression can be 
e880: 75 73 65 64 0a 61 73 20 61 20 72 65 73 75 6c 74  used.as a result
e890: 2e 20 20 49 66 20 61 20 72 65 73 75 6c 74 20 65  .  If a result e
e8a0: 78 70 72 65 73 73 69 6f 6e 20 69 73 20 7d 0a 70  xpression is }.p
e8b0: 75 74 73 20 22 5b 4f 70 65 72 61 74 6f 72 20 2a  uts "[Operator *
e8c0: 5d 20 74 68 65 6e 20 61 6c 6c 20 63 6f 6c 75 6d  ] then all colum
e8d0: 6e 73 20 6f 66 20 61 6c 6c 20 74 61 62 6c 65 73  ns of all tables
e8e0: 20 61 72 65 20 73 75 62 73 74 69 74 75 74 65 64   are substituted
e8f0: 22 0a 70 75 74 73 20 7b 66 6f 72 20 74 68 61 74  ".puts {for that
e900: 20 6f 6e 65 20 65 78 70 72 65 73 73 69 6f 6e 2e   one expression.
e910: 20 20 49 66 20 74 68 65 20 65 78 70 72 65 73 73    If the express
e920: 69 6f 6e 20 69 73 20 74 68 65 20 6e 61 6d 65 20  ion is the name 
e930: 6f 66 7d 0a 70 75 74 73 20 22 61 20 74 61 62 6c  of}.puts "a tabl
e940: 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 5b 4f  e followed by [O
e950: 70 65 72 61 74 6f 72 20 2e 2a 5d 20 74 68 65 6e  perator .*] then
e960: 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 61   the result is a
e970: 6c 6c 20 63 6f 6c 75 6d 6e 73 22 0a 70 75 74 73  ll columns".puts
e980: 20 7b 69 6e 20 74 68 61 74 20 6f 6e 65 20 74 61   {in that one ta
e990: 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ble.</p>..<p>The
e9a0: 20 44 49 53 54 49 4e 43 54 20 6b 65 79 77 6f 72   DISTINCT keywor
e9b0: 64 20 63 61 75 73 65 73 20 61 20 73 75 62 73 65  d causes a subse
e9c0: 74 20 6f 66 20 72 65 73 75 6c 74 20 72 6f 77 73  t of result rows
e9d0: 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 2c   to be returned,
e9e0: 20 0a 69 6e 20 77 68 69 63 68 20 65 61 63 68 20   .in which each 
e9f0: 72 65 73 75 6c 74 20 72 6f 77 20 69 73 20 64 69  result row is di
ea00: 66 66 65 72 65 6e 74 2e 20 20 4e 55 4c 4c 20 76  fferent.  NULL v
ea10: 61 6c 75 65 73 20 61 72 65 20 6e 6f 74 20 74 72  alues are not tr
ea20: 65 61 74 65 64 20 61 73 20 0a 64 69 73 74 69 6e  eated as .distin
ea30: 63 74 20 66 72 6f 6d 20 65 61 63 68 6f 74 68 65  ct from eachothe
ea40: 72 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20  r.  The default 
ea50: 62 65 68 61 76 69 6f 72 20 69 73 20 74 68 61 74  behavior is that
ea60: 20 61 6c 6c 20 72 65 73 75 6c 74 20 72 6f 77 73   all result rows
ea70: 20 0a 62 65 20 72 65 74 75 72 6e 65 64 2c 20 77   .be returned, w
ea80: 68 69 63 68 20 63 61 6e 20 62 65 20 6d 61 64 65  hich can be made
ea90: 20 65 78 70 6c 69 63 69 74 20 77 69 74 68 20 74   explicit with t
eaa0: 68 65 20 6b 65 79 77 6f 72 64 20 41 4c 4c 2e 3c  he keyword ALL.<
eab0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 71 75 65 72  /p>..<p>The quer
eac0: 79 20 69 73 20 65 78 65 63 75 74 65 64 20 61 67  y is executed ag
ead0: 61 69 6e 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72  ainst one or mor
eae0: 65 20 74 61 62 6c 65 73 20 73 70 65 63 69 66 69  e tables specifi
eaf0: 65 64 20 61 66 74 65 72 0a 74 68 65 20 46 52 4f  ed after.the FRO
eb00: 4d 20 6b 65 79 77 6f 72 64 2e 20 20 49 66 20 6d  M keyword.  If m
eb10: 75 6c 74 69 70 6c 65 20 74 61 62 6c 65 73 20 6e  ultiple tables n
eb20: 61 6d 65 73 20 61 72 65 20 73 65 70 61 72 61 74  ames are separat
eb30: 65 64 20 62 79 20 63 6f 6d 6d 61 73 2c 0a 74 68  ed by commas,.th
eb40: 65 6e 20 74 68 65 20 71 75 65 72 79 20 69 73 20  en the query is 
eb50: 61 67 61 69 6e 73 74 20 74 68 65 20 63 72 6f 73  against the cros
eb60: 73 20 6a 6f 69 6e 20 6f 66 20 74 68 65 20 76 61  s join of the va
eb70: 72 69 6f 75 73 20 74 61 62 6c 65 73 2e 0a 54 68  rious tables..Th
eb80: 65 20 66 75 6c 6c 20 53 51 4c 2d 39 32 20 6a 6f  e full SQL-92 jo
eb90: 69 6e 20 73 79 6e 74 61 78 20 63 61 6e 20 61 6c  in syntax can al
eba0: 73 6f 20 62 65 20 75 73 65 64 20 74 6f 20 73 70  so be used to sp
ebb0: 65 63 69 66 79 20 6a 6f 69 6e 73 2e 0a 41 20 73  ecify joins..A s
ebc0: 75 62 2d 71 75 65 72 79 0a 69 6e 20 70 61 72 65  ub-query.in pare
ebd0: 6e 74 68 65 73 65 73 20 6d 61 79 20 62 65 20 73  ntheses may be s
ebe0: 75 62 73 74 69 74 75 74 65 64 20 66 6f 72 20 61  ubstituted for a
ebf0: 6e 79 20 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e  ny table name in
ec00: 20 74 68 65 20 46 52 4f 4d 20 63 6c 61 75 73 65   the FROM clause
ec10: 2e 0a 54 68 65 20 65 6e 74 69 72 65 20 46 52 4f  ..The entire FRO
ec20: 4d 20 63 6c 61 75 73 65 20 6d 61 79 20 62 65 20  M clause may be 
ec30: 6f 6d 69 74 74 65 64 2c 20 69 6e 20 77 68 69 63  omitted, in whic
ec40: 68 20 63 61 73 65 20 74 68 65 20 72 65 73 75 6c  h case the resul
ec50: 74 20 69 73 20 61 0a 73 69 6e 67 6c 65 20 72 6f  t is a.single ro
ec60: 77 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20  w consisting of 
ec70: 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74 68  the values of th
ec80: 65 20 65 78 70 72 65 73 73 69 6f 6e 20 6c 69 73  e expression lis
ec90: 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  t..</p>..<p>The 
eca0: 57 48 45 52 45 20 63 6c 61 75 73 65 20 63 61 6e  WHERE clause can
ecb0: 20 62 65 20 75 73 65 64 20 74 6f 20 6c 69 6d 69   be used to limi
ecc0: 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  t the number of 
ecd0: 72 6f 77 73 20 6f 76 65 72 0a 77 68 69 63 68 20  rows over.which 
ece0: 74 68 65 20 71 75 65 72 79 20 6f 70 65 72 61 74  the query operat
ecf0: 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  es.</p>..<p>The 
ed00: 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65 73  GROUP BY clauses
ed10: 20 63 61 75 73 65 73 20 6f 6e 65 20 6f 72 20 6d   causes one or m
ed20: 6f 72 65 20 72 6f 77 73 20 6f 66 20 74 68 65 20  ore rows of the 
ed30: 72 65 73 75 6c 74 20 74 6f 0a 62 65 20 63 6f 6d  result to.be com
ed40: 62 69 6e 65 64 20 69 6e 74 6f 20 61 20 73 69 6e  bined into a sin
ed50: 67 6c 65 20 72 6f 77 20 6f 66 20 6f 75 74 70 75  gle row of outpu
ed60: 74 2e 20 20 54 68 69 73 20 69 73 20 65 73 70 65  t.  This is espe
ed70: 63 69 61 6c 6c 79 20 75 73 65 66 75 6c 0a 77 68  cially useful.wh
ed80: 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 63 6f  en the result co
ed90: 6e 74 61 69 6e 73 20 61 67 67 72 65 67 61 74 65  ntains aggregate
eda0: 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 65   functions.  The
edb0: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 0a   expressions in.
edc0: 74 68 65 20 47 52 4f 55 50 20 42 59 20 63 6c 61  the GROUP BY cla
edd0: 75 73 65 20 64 6f 20 3c 65 6d 3e 6e 6f 74 3c 2f  use do <em>not</
ede0: 65 6d 3e 20 68 61 76 65 20 74 6f 20 62 65 20 65  em> have to be e
edf0: 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 0a  xpressions that.
ee00: 61 70 70 65 61 72 20 69 6e 20 74 68 65 20 72 65  appear in the re
ee10: 73 75 6c 74 2e 20 20 54 68 65 20 48 41 56 49 4e  sult.  The HAVIN
ee20: 47 20 63 6c 61 75 73 65 20 69 73 20 73 69 6d 69  G clause is simi
ee30: 6c 61 72 20 74 6f 20 57 48 45 52 45 20 65 78 63  lar to WHERE exc
ee40: 65 70 74 0a 74 68 61 74 20 48 41 56 49 4e 47 20  ept.that HAVING 
ee50: 61 70 70 6c 69 65 73 20 61 66 74 65 72 20 67 72  applies after gr
ee60: 6f 75 70 69 6e 67 20 68 61 73 20 6f 63 63 75 72  ouping has occur
ee70: 72 65 64 2e 20 20 54 68 65 20 48 41 56 49 4e 47  red.  The HAVING
ee80: 20 65 78 70 72 65 73 73 69 6f 6e 0a 6d 61 79 20   expression.may 
ee90: 72 65 66 65 72 20 74 6f 20 76 61 6c 75 65 73 2c  refer to values,
eea0: 20 65 76 65 6e 20 61 67 67 72 65 67 61 74 65 20   even aggregate 
eeb0: 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68 61 74 20  functions, that 
eec0: 61 72 65 20 6e 6f 74 20 69 6e 20 74 68 65 20 72  are not in the r
eed0: 65 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  esult.</p>..<p>T
eee0: 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75  he ORDER BY clau
eef0: 73 65 20 63 61 75 73 65 73 20 74 68 65 20 6f 75  se causes the ou
ef00: 74 70 75 74 20 72 6f 77 73 20 74 6f 20 62 65 20  tput rows to be 
ef10: 73 6f 72 74 65 64 2e 20 20 0a 54 68 65 20 61 72  sorted.  .The ar
ef20: 67 75 6d 65 6e 74 20 74 6f 20 4f 52 44 45 52 20  gument to ORDER 
ef30: 42 59 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20  BY is a list of 
ef40: 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74  expressions that
ef50: 20 61 72 65 20 75 73 65 64 20 61 73 20 74 68 65   are used as the
ef60: 0a 6b 65 79 20 66 6f 72 20 74 68 65 20 73 6f 72  .key for the sor
ef70: 74 2e 20 20 54 68 65 20 65 78 70 72 65 73 73 69  t.  The expressi
ef80: 6f 6e 73 20 64 6f 20 6e 6f 74 20 68 61 76 65 20  ons do not have 
ef90: 74 6f 20 62 65 20 70 61 72 74 20 6f 66 20 74 68  to be part of th
efa0: 65 0a 72 65 73 75 6c 74 20 66 6f 72 20 61 20 73  e.result for a s
efb0: 69 6d 70 6c 65 20 53 45 4c 45 43 54 2c 20 62 75  imple SELECT, bu
efc0: 74 20 69 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20  t in a compound 
efd0: 53 45 4c 45 43 54 20 65 61 63 68 20 73 6f 72 74  SELECT each sort
efe0: 0a 65 78 70 72 65 73 73 69 6f 6e 20 6d 75 73 74  .expression must
eff0: 20 65 78 61 63 74 6c 79 20 6d 61 74 63 68 20 6f   exactly match o
f000: 6e 65 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  ne of the result
f010: 20 63 6f 6c 75 6d 6e 73 2e 20 20 45 61 63 68 0a   columns.  Each.
f020: 73 6f 72 74 20 65 78 70 72 65 73 73 69 6f 6e 20  sort expression 
f030: 6d 61 79 20 62 65 20 6f 70 74 69 6f 6e 61 6c 6c  may be optionall
f040: 79 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20  y followed by a 
f050: 43 4f 4c 4c 41 54 45 20 6b 65 79 77 6f 72 64 20  COLLATE keyword 
f060: 61 6e 64 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20  and.the name of 
f070: 61 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63  a collating func
f080: 74 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 6f 72  tion used for or
f090: 64 65 72 69 6e 67 20 74 65 78 74 20 61 6e 64 2f  dering text and/
f0a0: 6f 72 0a 6b 65 79 77 6f 72 64 73 20 41 53 43 20  or.keywords ASC 
f0b0: 6f 72 20 44 45 53 43 20 74 6f 20 73 70 65 63 69  or DESC to speci
f0c0: 66 79 20 74 68 65 20 73 6f 72 74 20 6f 72 64 65  fy the sort orde
f0d0: 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4c  r.</p>..<p>The L
f0e0: 49 4d 49 54 20 63 6c 61 75 73 65 20 70 6c 61 63  IMIT clause plac
f0f0: 65 73 20 61 6e 20 75 70 70 65 72 20 62 6f 75 6e  es an upper boun
f100: 64 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  d on the number 
f110: 6f 66 20 72 6f 77 73 0a 72 65 74 75 72 6e 65 64  of rows.returned
f120: 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20   in the result. 
f130: 20 41 20 6e 65 67 61 74 69 76 65 20 4c 49 4d 49   A negative LIMI
f140: 54 20 69 6e 64 69 63 61 74 65 73 20 6e 6f 20 75  T indicates no u
f150: 70 70 65 72 20 62 6f 75 6e 64 2e 0a 54 68 65 20  pper bound..The 
f160: 6f 70 74 69 6f 6e 61 6c 20 4f 46 46 53 45 54 20  optional OFFSET 
f170: 66 6f 6c 6c 6f 77 69 6e 67 20 4c 49 4d 49 54 20  following LIMIT 
f180: 73 70 65 63 69 66 69 65 73 20 68 6f 77 20 6d 61  specifies how ma
f190: 6e 79 0a 72 6f 77 73 20 74 6f 20 73 6b 69 70 20  ny.rows to skip 
f1a0: 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67  at the beginning
f1b0: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73   of the result s
f1c0: 65 74 2e 0a 49 6e 20 61 20 63 6f 6d 70 6f 75 6e  et..In a compoun
f1d0: 64 20 71 75 65 72 79 2c 20 74 68 65 20 4c 49 4d  d query, the LIM
f1e0: 49 54 20 63 6c 61 75 73 65 20 6d 61 79 20 6f 6e  IT clause may on
f1f0: 6c 79 20 61 70 70 65 61 72 20 6f 6e 20 74 68 65  ly appear on the
f200: 0a 66 69 6e 61 6c 20 53 45 4c 45 43 54 20 73 74  .final SELECT st
f210: 61 74 65 6d 65 6e 74 2e 0a 54 68 65 20 6c 69 6d  atement..The lim
f220: 69 74 20 69 73 20 61 70 70 6c 69 65 64 20 74 6f  it is applied to
f230: 20 74 68 65 20 65 6e 74 69 72 65 20 71 75 65 72   the entire quer
f240: 79 20 6e 6f 74 0a 74 6f 20 74 68 65 20 69 6e 64  y not.to the ind
f250: 69 76 69 64 75 61 6c 20 53 45 4c 45 43 54 20 73  ividual SELECT s
f260: 74 61 74 65 6d 65 6e 74 20 74 6f 20 77 68 69 63  tatement to whic
f270: 68 20 69 74 20 69 73 20 61 74 74 61 63 68 65 64  h it is attached
f280: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6d  ..</p>..<p>A com
f290: 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 69 73 20  pound SELECT is 
f2a0: 66 6f 72 6d 65 64 20 66 72 6f 6d 20 74 77 6f 20  formed from two 
f2b0: 6f 72 20 6d 6f 72 65 20 73 69 6d 70 6c 65 20 53  or more simple S
f2c0: 45 4c 45 43 54 73 20 63 6f 6e 6e 65 63 74 65 64  ELECTs connected
f2d0: 0a 62 79 20 6f 6e 65 20 6f 66 20 74 68 65 20 6f  .by one of the o
f2e0: 70 65 72 61 74 6f 72 73 20 55 4e 49 4f 4e 2c 20  perators UNION, 
f2f0: 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52  UNION ALL, INTER
f300: 53 45 43 54 2c 20 6f 72 20 45 58 43 45 50 54 2e  SECT, or EXCEPT.
f310: 20 20 49 6e 0a 61 20 63 6f 6d 70 6f 75 6e 64 20    In.a compound 
f320: 53 45 4c 45 43 54 2c 20 61 6c 6c 20 74 68 65 20  SELECT, all the 
f330: 63 6f 6e 73 74 69 74 75 65 6e 74 20 53 45 4c 45  constituent SELE
f340: 43 54 73 20 6d 75 73 74 20 73 70 65 63 69 66 79  CTs must specify
f350: 20 74 68 65 0a 73 61 6d 65 20 6e 75 6d 62 65 72   the.same number
f360: 20 6f 66 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d   of result colum
f370: 6e 73 2e 20 20 54 68 65 72 65 20 6d 61 79 20 62  ns.  There may b
f380: 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20  e only a single 
f390: 4f 52 44 45 52 20 42 59 0a 63 6c 61 75 73 65 20  ORDER BY.clause 
f3a0: 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68  at the end of th
f3b0: 65 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43  e compound SELEC
f3c0: 54 2e 20 20 54 68 65 20 55 4e 49 4f 4e 20 61 6e  T.  The UNION an
f3d0: 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f 70 65 72  d UNION ALL.oper
f3e0: 61 74 6f 72 73 20 63 6f 6d 62 69 6e 65 20 74 68  ators combine th
f3f0: 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65  e results of the
f400: 20 53 45 4c 45 43 54 73 20 74 6f 20 74 68 65 20   SELECTs to the 
f410: 72 69 67 68 74 20 61 6e 64 20 6c 65 66 74 20 69  right and left i
f420: 6e 74 6f 0a 61 20 73 69 6e 67 6c 65 20 62 69 67  nto.a single big
f430: 20 74 61 62 6c 65 2e 20 20 54 68 65 20 64 69 66   table.  The dif
f440: 66 65 72 65 6e 63 65 20 69 73 20 74 68 61 74 20  ference is that 
f450: 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c 20 72 65 73  in UNION all res
f460: 75 6c 74 20 72 6f 77 73 0a 61 72 65 20 64 69 73  ult rows.are dis
f470: 74 69 6e 63 74 20 77 68 65 72 65 20 69 6e 20 55  tinct where in U
f480: 4e 49 4f 4e 20 41 4c 4c 20 74 68 65 72 65 20 6d  NION ALL there m
f490: 61 79 20 62 65 20 64 75 70 6c 69 63 61 74 65 73  ay be duplicates
f4a0: 2e 0a 54 68 65 20 49 4e 54 45 52 53 45 43 54 20  ..The INTERSECT 
f4b0: 6f 70 65 72 61 74 6f 72 20 74 61 6b 65 73 20 74  operator takes t
f4c0: 68 65 20 69 6e 74 65 72 73 65 63 74 69 6f 6e 20  he intersection 
f4d0: 6f 66 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f  of the results o
f4e0: 66 20 74 68 65 0a 6c 65 66 74 20 61 6e 64 20 72  f the.left and r
f4f0: 69 67 68 74 20 53 45 4c 45 43 54 73 2e 20 20 45  ight SELECTs.  E
f500: 58 43 45 50 54 20 74 61 6b 65 73 20 74 68 65 20  XCEPT takes the 
f510: 72 65 73 75 6c 74 20 6f 66 20 6c 65 66 74 20 53  result of left S
f520: 45 4c 45 43 54 20 61 66 74 65 72 0a 72 65 6d 6f  ELECT after.remo
f530: 76 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 73  ving the results
f540: 20 6f 66 20 74 68 65 20 72 69 67 68 74 20 53 45   of the right SE
f550: 4c 45 43 54 2e 20 20 57 68 65 6e 20 74 68 72 65  LECT.  When thre
f560: 65 20 61 72 65 20 6d 6f 72 65 20 53 45 4c 45 43  e are more SELEC
f570: 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63 74 65 64  Ts.are connected
f580: 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f 75 6e 64   into a compound
f590: 2c 20 74 68 65 79 20 67 72 6f 75 70 20 66 72 6f  , they group fro
f5a0: 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74 2e  m left to right.
f5b0: 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  </p>.}...Section
f5c0: 20 55 50 44 41 54 45 20 75 70 64 61 74 65 0a 0a   UPDATE update..
f5d0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
f5e0: 65 6d 65 6e 74 7d 20 7b 0a 55 50 44 41 54 45 20  ement} {.UPDATE 
f5f0: 5b 20 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61  [ OR <conflict-a
f600: 6c 67 6f 72 69 74 68 6d 3e 20 5d 20 5b 3c 64 61  lgorithm> ] [<da
f610: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20  tabase-name> .] 
f620: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 53 45 54  <table-name>.SET
f630: 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 20 5b 2c   <assignment> [,
f640: 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 5d 2a 0a   <assignment>]*.
f650: 5b 57 48 45 52 45 20 3c 65 78 70 72 3e 5d 0a 7d  [WHERE <expr>].}
f660: 20 7b 61 73 73 69 67 6e 6d 65 6e 74 7d 20 7b 0a   {assignment} {.
f670: 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 3d 20  <column-name> = 
f680: 3c 65 78 70 72 3e 0a 7d 0a 0a 70 75 74 73 20 7b  <expr>.}..puts {
f690: 0a 3c 70 3e 54 68 65 20 55 50 44 41 54 45 20 73  .<p>The UPDATE s
f6a0: 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73 65 64  tatement is used
f6b0: 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 76   to change the v
f6c0: 61 6c 75 65 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  alue of columns 
f6d0: 69 6e 20 0a 73 65 6c 65 63 74 65 64 20 72 6f 77  in .selected row
f6e0: 73 20 6f 66 20 61 20 74 61 62 6c 65 2e 20 20 45  s of a table.  E
f6f0: 61 63 68 20 61 73 73 69 67 6e 6d 65 6e 74 20 69  ach assignment i
f700: 6e 20 61 6e 20 55 50 44 41 54 45 20 73 70 65 63  n an UPDATE spec
f710: 69 66 69 65 73 0a 61 20 63 6f 6c 75 6d 6e 20 6e  ifies.a column n
f720: 61 6d 65 20 74 6f 20 74 68 65 20 6c 65 66 74 20  ame to the left 
f730: 6f 66 20 74 68 65 20 65 71 75 61 6c 73 20 73 69  of the equals si
f740: 67 6e 20 61 6e 64 20 61 6e 20 61 72 62 69 74 72  gn and an arbitr
f750: 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e 0a 74  ary expression.t
f760: 6f 20 74 68 65 20 72 69 67 68 74 2e 20 20 54 68  o the right.  Th
f770: 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 6d 61  e expressions ma
f780: 79 20 75 73 65 20 74 68 65 20 76 61 6c 75 65 73  y use the values
f790: 20 6f 66 20 6f 74 68 65 72 20 63 6f 6c 75 6d 6e   of other column
f7a0: 73 2e 0a 41 6c 6c 20 65 78 70 72 65 73 73 69 6f  s..All expressio
f7b0: 6e 73 20 61 72 65 20 65 76 61 6c 75 61 74 65 64  ns are evaluated
f7c0: 20 62 65 66 6f 72 65 20 61 6e 79 20 61 73 73 69   before any assi
f7d0: 67 6e 6d 65 6e 74 73 20 61 72 65 20 6d 61 64 65  gnments are made
f7e0: 2e 0a 41 20 57 48 45 52 45 20 63 6c 61 75 73 65  ..A WHERE clause
f7f0: 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
f800: 72 65 73 74 72 69 63 74 20 77 68 69 63 68 20 72  restrict which r
f810: 6f 77 73 20 61 72 65 20 75 70 64 61 74 65 64 2e  ows are updated.
f820: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74  </p>..<p>The opt
f830: 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63  ional conflict-c
f840: 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65  lause allows the
f850: 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f   specification o
f860: 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65  f an alternative
f870: 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66  .constraint conf
f880: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
f890: 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75 73 65  algorithm to use
f8a0: 20 64 75 72 69 6e 67 20 74 68 69 73 20 6f 6e 65   during this one
f8b0: 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68   command..See th
f8c0: 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64  e section titled
f8d0: 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c  .<a href="#confl
f8e0: 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54  ict">ON CONFLICT
f8f0: 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f  </a> for additio
f900: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  nal information.
f910: 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  </p>.}...Section
f920: 20 56 41 43 55 55 4d 20 76 61 63 75 75 6d 0a 0a   VACUUM vacuum..
f930: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
f940: 65 6d 65 6e 74 7d 20 7b 0a 56 41 43 55 55 4d 20  ement} {.VACUUM 
f950: 5b 3c 69 6e 64 65 78 2d 6f 72 2d 74 61 62 6c 65  [<index-or-table
f960: 2d 6e 61 6d 65 3e 5d 0a 7d 0a 0a 70 75 74 73 20  -name>].}..puts 
f970: 7b 0a 3c 70 3e 54 68 65 20 56 41 43 55 55 4d 20  {.<p>The VACUUM 
f980: 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20 53 51  command is an SQ
f990: 4c 69 74 65 20 65 78 74 65 6e 73 69 6f 6e 20 6d  Lite extension m
f9a0: 6f 64 65 6c 6c 65 64 20 61 66 74 65 72 20 61 20  odelled after a 
f9b0: 73 69 6d 69 6c 61 72 0a 63 6f 6d 6d 61 6e 64 20  similar.command 
f9c0: 66 6f 75 6e 64 20 69 6e 20 50 6f 73 74 67 72 65  found in Postgre
f9d0: 53 51 4c 2e 20 20 49 66 20 56 41 43 55 55 4d 20  SQL.  If VACUUM 
f9e0: 69 73 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20  is invoked with 
f9f0: 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 0a 74 61  the name of a.ta
fa00: 62 6c 65 20 6f 72 20 69 6e 64 65 78 20 74 68 65  ble or index the
fa10: 6e 20 69 74 20 69 73 20 73 75 70 70 6f 73 65 20  n it is suppose 
fa20: 74 6f 20 63 6c 65 61 6e 20 75 70 20 74 68 65 20  to clean up the 
fa30: 6e 61 6d 65 64 20 74 61 62 6c 65 20 6f 72 20 69  named table or i
fa40: 6e 64 65 78 2e 0a 49 6e 20 76 65 72 73 69 6f 6e  ndex..In version
fa50: 20 31 2e 30 20 6f 66 20 53 51 4c 69 74 65 2c 20   1.0 of SQLite, 
fa60: 74 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61  the VACUUM comma
fa70: 6e 64 20 77 6f 75 6c 64 20 69 6e 76 6f 6b 65 20  nd would invoke 
fa80: 0a 3c 62 3e 67 64 62 6d 5f 72 65 6f 72 67 61 6e  .<b>gdbm_reorgan
fa90: 69 7a 65 28 29 3c 2f 62 3e 20 74 6f 20 63 6c 65  ize()</b> to cle
faa0: 61 6e 20 75 70 20 74 68 65 20 62 61 63 6b 65 6e  an up the backen
fab0: 64 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e  d database file.
fac0: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 56 41 43 55 55 4d  </p>..<p>.VACUUM
fad0: 20 62 65 63 61 6d 65 20 61 20 6e 6f 2d 6f 70 20   became a no-op 
fae0: 77 68 65 6e 20 74 68 65 20 47 44 42 4d 20 62 61  when the GDBM ba
faf0: 63 6b 65 6e 64 20 77 61 73 20 72 65 6d 6f 76 65  ckend was remove
fb00: 64 20 66 72 6f 6d 0a 53 51 4c 49 54 45 20 69 6e  d from.SQLITE in
fb10: 20 76 65 72 73 69 6f 6e 20 32 2e 30 2e 30 2e 0a   version 2.0.0..
fb20: 56 41 43 55 55 4d 20 77 61 73 20 72 65 69 6d 70  VACUUM was reimp
fb30: 6c 69 6d 65 6e 74 65 64 20 69 6e 20 76 65 72 73  limented in vers
fb40: 69 6f 6e 20 32 2e 38 2e 31 2e 0a 54 68 65 20 69  ion 2.8.1..The i
fb50: 6e 64 65 78 20 6f 72 20 74 61 62 6c 65 20 6e 61  ndex or table na
fb60: 6d 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6e  me argument is n
fb70: 6f 77 20 69 67 6e 6f 72 65 64 2e 0a 3c 2f 70 3e  ow ignored..</p>
fb80: 0a 0a 3c 70 3e 57 68 65 6e 20 61 6e 20 6f 62 6a  ..<p>When an obj
fb90: 65 63 74 20 28 74 61 62 6c 65 2c 20 69 6e 64 65  ect (table, inde
fba0: 78 2c 20 6f 72 20 74 72 69 67 67 65 72 29 20 69  x, or trigger) i
fbb0: 73 20 64 72 6f 70 70 65 64 20 66 72 6f 6d 20 74  s dropped from t
fbc0: 68 65 20 0a 64 61 74 61 62 61 73 65 2c 20 69 74  he .database, it
fbd0: 20 6c 65 61 76 65 73 20 62 65 68 69 6e 64 20 65   leaves behind e
fbe0: 6d 70 74 79 20 73 70 61 63 65 2e 20 20 54 68 69  mpty space.  Thi
fbf0: 73 20 6d 61 6b 65 73 20 74 68 65 20 64 61 74 61  s makes the data
fc00: 62 61 73 65 20 0a 66 69 6c 65 20 6c 61 72 67 65  base .file large
fc10: 72 20 74 68 61 6e 20 69 74 20 6e 65 65 64 73 20  r than it needs 
fc20: 74 6f 20 62 65 2c 20 62 75 74 20 63 61 6e 20 73  to be, but can s
fc30: 70 65 65 64 20 75 70 20 69 6e 73 65 72 74 73 2e  peed up inserts.
fc40: 20 20 49 6e 20 74 69 6d 65 20 0a 69 6e 73 65 72    In time .inser
fc50: 74 73 20 61 6e 64 20 64 65 6c 65 74 65 73 20 63  ts and deletes c
fc60: 61 6e 20 6c 65 61 76 65 20 74 68 65 20 64 61 74  an leave the dat
fc70: 61 62 61 73 65 20 66 69 6c 65 20 73 74 72 75 63  abase file struc
fc80: 74 75 72 65 20 66 72 61 67 6d 65 6e 74 65 64 2c  ture fragmented,
fc90: 20 0a 77 68 69 63 68 20 73 6c 6f 77 73 20 64 6f   .which slows do
fca0: 77 6e 20 64 69 73 6b 20 61 63 63 65 73 73 20 74  wn disk access t
fcb0: 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  o the database c
fcc0: 6f 6e 74 65 6e 74 73 2e 0a 0a 54 68 65 20 56 41  ontents...The VA
fcd0: 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 63 6c 65  CUUM command cle
fce0: 61 6e 73 0a 74 68 65 20 6d 61 69 6e 20 64 61 74  ans.the main dat
fcf0: 61 62 61 73 65 20 62 79 20 63 6f 70 79 69 6e 67  abase by copying
fd00: 20 69 74 73 20 63 6f 6e 74 65 6e 74 73 20 74 6f   its contents to
fd10: 20 61 20 74 65 6d 70 6f 72 61 72 79 20 64 61 74   a temporary dat
fd20: 61 62 61 73 65 20 66 69 6c 65 20 61 6e 64 20 0a  abase file and .
fd30: 72 65 6c 6f 61 64 69 6e 67 20 74 68 65 20 6f 72  reloading the or
fd40: 69 67 69 6e 61 6c 20 64 61 74 61 62 61 73 65 20  iginal database 
fd50: 66 69 6c 65 20 66 72 6f 6d 20 74 68 65 20 63 6f  file from the co
fd60: 70 79 2e 20 20 54 68 69 73 20 65 6c 69 6d 69 6e  py.  This elimin
fd70: 61 74 65 73 20 0a 66 72 65 65 20 70 61 67 65 73  ates .free pages
fd80: 2c 20 20 61 6c 69 67 6e 73 20 74 61 62 6c 65 20  ,  aligns table 
fd90: 64 61 74 61 20 74 6f 20 62 65 20 63 6f 6e 74 69  data to be conti
fda0: 67 75 6f 75 73 2c 20 61 6e 64 20 6f 74 68 65 72  guous, and other
fdb0: 77 69 73 65 20 63 6c 65 61 6e 73 20 0a 75 70 20  wise cleans .up 
fdc0: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
fdd0: 65 20 73 74 72 75 63 74 75 72 65 2e 20 49 74 20  e structure. It 
fde0: 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20  is not possible 
fdf0: 74 6f 20 70 65 72 66 6f 72 6d 20 74 68 65 20 73  to perform the s
fe00: 61 6d 65 0a 70 72 6f 63 65 73 73 20 6f 6e 20 61  ame.process on a
fe10: 6e 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  n attached datab
fe20: 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c  ase file.</p>..<
fe30: 70 3e 54 68 69 73 20 63 6f 6d 6d 61 6e 64 20 77  p>This command w
fe40: 69 6c 6c 20 66 61 69 6c 20 69 66 20 74 68 65 72  ill fail if ther
fe50: 65 20 69 73 20 61 6e 20 61 63 74 69 76 65 20 74  e is an active t
fe60: 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 54 68 69  ransaction.  Thi
fe70: 73 20 0a 63 6f 6d 6d 61 6e 64 20 68 61 73 20 6e  s .command has n
fe80: 6f 20 65 66 66 65 63 74 20 6f 6e 20 61 6e 20 69  o effect on an i
fe90: 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73  n-memory databas
fea0: 65 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  e.</p>.}...Secti
feb0: 6f 6e 20 7b 53 51 4c 69 74 65 20 6b 65 79 77 6f  on {SQLite keywo
fec0: 72 64 73 7d 20 6b 65 79 77 6f 72 64 73 0a 0a 70  rds} keywords..p
fed0: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 66 6f 6c  uts {.<p>The fol
fee0: 6c 6f 77 69 6e 67 20 6b 65 79 77 6f 72 64 73 20  lowing keywords 
fef0: 61 72 65 20 75 73 65 64 20 62 79 20 53 51 4c 69  are used by SQLi
ff00: 74 65 2e 20 20 4d 6f 73 74 20 61 72 65 20 65 69  te.  Most are ei
ff10: 74 68 65 72 20 72 65 73 65 72 76 65 64 20 0a 77  ther reserved .w
ff20: 6f 72 64 73 20 69 6e 20 53 51 4c 2d 39 32 20 6f  ords in SQL-92 o
ff30: 72 20 77 65 72 65 20 6c 69 73 74 65 64 20 61 73  r were listed as
ff40: 20 70 6f 74 65 6e 74 69 61 6c 20 72 65 73 65 72   potential reser
ff50: 76 65 64 20 77 6f 72 64 73 2e 20 20 54 68 6f 73  ved words.  Thos
ff60: 65 20 77 68 69 63 68 20 0a 61 72 65 6e 27 74 20  e which .aren't 
ff70: 61 72 65 20 73 68 6f 77 6e 20 69 6e 20 69 74 61  are shown in ita
ff80: 6c 69 63 73 2e 20 20 4e 6f 74 20 61 6c 6c 20 6f  lics.  Not all o
ff90: 66 20 74 68 65 73 65 20 77 6f 72 64 73 20 61 72  f these words ar
ffa0: 65 20 61 63 74 75 61 6c 6c 79 20 75 73 65 64 0a  e actually used.
ffb0: 62 79 20 53 51 4c 69 74 65 2e 20 20 4b 65 79 77  by SQLite.  Keyw
ffc0: 6f 72 64 73 20 61 72 65 20 6e 6f 74 20 72 65 73  ords are not res
ffd0: 65 72 76 65 64 20 69 6e 20 53 51 4c 69 74 65 2e  erved in SQLite.
ffe0: 20 20 41 6e 79 20 6b 65 79 77 6f 72 64 20 63 61    Any keyword ca
fff0: 6e 20 62 65 20 75 73 65 64 20 0a 61 73 20 61 6e  n be used .as an
10000 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20   identifier for 
10010 53 51 4c 69 74 65 20 6f 62 6a 65 63 74 73 20 28  SQLite objects (
10020 63 6f 6c 75 6d 6e 73 2c 20 64 61 74 61 62 61 73  columns, databas
10030 65 73 2c 20 69 6e 64 65 78 65 73 2c 20 74 61 62  es, indexes, tab
10040 6c 65 73 2c 20 0a 74 72 69 67 67 65 72 73 2c 20  les, .triggers, 
10050 76 69 65 77 73 2c 20 2e 2e 2e 29 20 62 75 74 20  views, ...) but 
10060 6d 75 73 74 20 67 65 6e 65 72 61 6c 6c 79 20 62  must generally b
10070 65 20 65 6e 63 6c 6f 73 65 64 20 62 79 20 62 72  e enclosed by br
10080 61 63 6b 65 74 73 20 6f 72 20 0a 71 75 6f 74 65  ackets or .quote
10090 73 20 74 6f 20 61 76 6f 69 64 20 63 6f 6e 66 75  s to avoid confu
100a0 73 69 6e 67 20 74 68 65 20 70 61 72 73 65 72 2e  sing the parser.
100b0 20 20 4b 65 79 77 6f 72 64 20 6d 61 74 63 68 69    Keyword matchi
100c0 6e 67 20 69 6e 20 53 51 4c 69 74 65 20 69 73 20  ng in SQLite is 
100d0 0a 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76  .case-insensitiv
100e0 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4b 65 79 77 6f  e.</p>..<p>Keywo
100f0 72 64 73 20 63 61 6e 20 62 65 20 75 73 65 64 20  rds can be used 
10100 61 73 20 69 64 65 6e 74 69 66 69 65 72 73 20 69  as identifiers i
10110 6e 20 74 68 72 65 65 20 77 61 79 73 3a 3c 2f 70  n three ways:</p
10120 3e 0a 0a 3c 74 61 62 6c 65 3e 0a 3c 74 72 3e 09  >..<table>.<tr>.
10130 3c 74 64 20 77 69 64 74 68 3d 31 32 25 3e 20 27  <td width=12%> '
10140 6b 65 79 77 6f 72 64 27 0a 09 3c 74 64 3e 49 6e  keyword'..<td>In
10150 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20 6c  terpreted as a l
10160 69 74 65 72 61 6c 20 73 74 72 69 6e 67 20 69 66  iteral string if
10170 20 69 74 20 6f 63 63 75 72 73 20 69 6e 20 61 20   it occurs in a 
10180 6c 65 67 61 6c 20 73 74 72 69 6e 67 20 0a 09 63  legal string ..c
10190 6f 6e 74 65 78 74 2c 20 6f 74 68 65 72 77 69 73  ontext, otherwis
101a0 65 20 61 73 20 61 6e 20 69 64 65 6e 74 69 66 69  e as an identifi
101b0 65 72 2e 0a 3c 74 72 3e 09 3c 74 64 3e 20 22 6b  er..<tr>.<td> "k
101c0 65 79 77 6f 72 64 22 0a 09 3c 74 64 3e 49 6e 74  eyword"..<td>Int
101d0 65 72 70 72 65 74 65 64 20 61 73 20 61 6e 20 69  erpreted as an i
101e0 64 65 6e 74 69 66 69 65 72 20 69 66 20 69 74 20  dentifier if it 
101f0 6d 61 74 63 68 65 73 20 61 20 6b 6e 6f 77 6e 20  matches a known 
10200 69 64 65 6e 74 69 66 69 65 72 20 0a 09 61 6e 64  identifier ..and
10210 20 6f 63 63 75 72 73 20 69 6e 20 61 20 6c 65 67   occurs in a leg
10220 61 6c 20 69 64 65 6e 74 69 66 69 65 72 20 63 6f  al identifier co
10230 6e 74 65 78 74 2c 20 6f 74 68 65 72 77 69 73 65  ntext, otherwise
10240 20 61 73 20 61 20 73 74 72 69 6e 67 2e 20 0a 3c   as a string. .<
10250 74 72 3e 09 3c 74 64 3e 20 5b 6b 65 79 77 6f 72  tr>.<td> [keywor
10260 64 5d 0a 09 3c 74 64 3e 20 41 6c 77 61 79 73 20  d]..<td> Always 
10270 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61  interpreted as a
10280 6e 20 69 64 65 6e 74 69 66 65 72 2e 20 28 54 68  n identifer. (Th
10290 69 73 20 6e 6f 74 61 74 69 6f 6e 20 69 73 20 75  is notation is u
102a0 73 65 64 20 0a 09 62 79 20 4d 53 20 41 63 63 65  sed ..by MS Acce
102b0 73 73 20 61 6e 64 20 53 51 4c 20 53 65 72 76 65  ss and SQL Serve
102c0 72 2e 29 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 68  r.).</table>..<h
102d0 32 3e 46 61 6c 6c 62 61 63 6b 20 4b 65 79 77 6f  2>Fallback Keywo
102e0 72 64 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65  rds</h2>..<p>The
102f0 73 65 20 6b 65 79 77 6f 72 64 73 20 63 61 6e 20  se keywords can 
10300 62 65 20 75 73 65 64 20 61 73 20 69 64 65 6e 74  be used as ident
10310 69 66 69 65 72 73 20 66 6f 72 20 53 51 4c 69 74  ifiers for SQLit
10320 65 20 6f 62 6a 65 63 74 73 20 77 69 74 68 6f 75  e objects withou
10330 74 20 0a 64 65 6c 69 6d 69 74 65 72 73 2e 3c 2f  t .delimiters.</
10340 70 3e 0a 7d 0a 0a 70 72 6f 63 20 6b 65 79 77 6f  p>.}..proc keywo
10350 72 64 5f 6c 69 73 74 20 7b 78 7d 20 7b 0a 20 20  rd_list {x} {.  
10360 70 75 74 73 20 22 3c 70 3e 22 0a 20 20 66 6f 72  puts "<p>".  for
10370 65 61 63 68 20 6b 20 24 78 20 7b 0a 20 20 20 20  each k $x {.    
10380 69 66 20 7b 5b 73 74 72 69 6e 67 20 69 6e 64 65  if {[string inde
10390 78 20 24 6b 20 30 5d 3d 3d 22 2a 22 7d 20 7b 0a  x $k 0]=="*"} {.
103a0 20 20 20 20 20 20 73 65 74 20 6e 6f 6e 73 74 61        set nonsta
103b0 6e 64 61 72 64 20 31 0a 20 20 20 20 20 20 73 65  ndard 1.      se
103c0 74 20 6b 20 5b 73 74 72 69 6e 67 20 72 61 6e 67  t k [string rang
103d0 65 20 24 6b 20 31 20 65 6e 64 5d 0a 20 20 20 20  e $k 1 end].    
103e0 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 73  } else {.      s
103f0 65 74 20 6e 6f 6e 73 74 61 6e 64 61 72 64 20 30  et nonstandard 0
10400 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 24  .    }.    if {$
10410 6e 6f 6e 73 74 61 6e 64 61 72 64 7d 20 7b 0a 20  nonstandard} {. 
10420 20 20 20 20 20 70 75 74 73 20 22 3c 69 3e 24 6b       puts "<i>$k
10430 3c 2f 69 3e 20 26 6e 62 73 70 3b 26 6e 62 73 70  </i> &nbsp;&nbsp
10440 3b 22 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  ;".    } else {.
10450 20 20 20 20 20 20 70 75 74 73 20 22 24 6b 20 26        puts "$k &
10460 6e 62 73 70 3b 26 6e 62 73 70 3b 22 0a 20 20 20  nbsp;&nbsp;".   
10470 20 7d 0a 20 20 7d 0a 20 20 70 75 74 73 20 22 3c   }.  }.  puts "<
10480 2f 70 3e 5c 6e 22 0a 7d 0a 0a 6b 65 79 77 6f 72  /p>\n".}..keywor
10490 64 5f 6c 69 73 74 20 7b 0a 20 20 2a 41 42 4f 52  d_list {.  *ABOR
104a0 54 0a 20 20 41 46 54 45 52 0a 20 20 41 53 43 0a  T.  AFTER.  ASC.
104b0 20 20 2a 41 54 54 41 43 48 0a 20 20 42 45 46 4f    *ATTACH.  BEFO
104c0 52 45 0a 20 20 42 45 47 49 4e 0a 20 20 44 45 46  RE.  BEGIN.  DEF
104d0 45 52 52 45 44 0a 20 20 43 41 53 43 41 44 45 20  ERRED.  CASCADE 
104e0 0a 20 20 2a 43 4c 55 53 54 45 52 20 0a 20 20 2a  .  *CLUSTER .  *
104f0 43 4f 4e 46 4c 49 43 54 0a 20 20 2a 43 4f 50 59  CONFLICT.  *COPY
10500 0a 20 20 43 52 4f 53 53 0a 20 20 2a 44 41 54 41  .  CROSS.  *DATA
10510 42 41 53 45 0a 20 20 2a 44 45 4c 49 4d 49 54 45  BASE.  *DELIMITE
10520 52 53 0a 20 20 44 45 53 43 0a 20 20 2a 44 45 54  RS.  DESC.  *DET
10530 41 43 48 0a 20 20 45 41 43 48 0a 20 20 45 4e 44  ACH.  EACH.  END
10540 0a 20 20 2a 45 58 50 4c 41 49 4e 0a 20 20 2a 46  .  *EXPLAIN.  *F
10550 41 49 4c 0a 20 20 46 4f 52 0a 20 20 46 55 4c 4c  AIL.  FOR.  FULL
10560 0a 20 20 49 47 4e 4f 52 45 0a 20 20 49 4d 4d 45  .  IGNORE.  IMME
10570 44 49 41 54 45 0a 20 20 49 4e 49 54 49 41 4c 4c  DIATE.  INITIALL
10580 59 0a 20 20 49 4e 4e 45 52 0a 20 20 2a 49 4e 53  Y.  INNER.  *INS
10590 54 45 41 44 0a 20 20 4b 45 59 0a 20 20 4c 45 46  TEAD.  KEY.  LEF
105a0 54 0a 20 20 4d 41 54 43 48 20 0a 20 20 4e 41 54  T.  MATCH .  NAT
105b0 55 52 41 4c 0a 20 20 4f 46 0a 20 20 2a 4f 46 46  URAL.  OF.  *OFF
105c0 53 45 54 0a 20 20 4f 55 54 45 52 0a 20 20 2a 50  SET.  OUTER.  *P
105d0 52 41 47 4d 41 0a 20 20 2a 52 41 49 53 45 0a 20  RAGMA.  *RAISE. 
105e0 20 2a 52 45 50 4c 41 43 45 0a 20 20 52 45 53 54   *REPLACE.  REST
105f0 52 49 43 54 0a 20 20 52 49 47 48 54 0a 20 20 2a  RICT.  RIGHT.  *
10600 52 4f 57 0a 20 20 2a 53 54 41 54 45 4d 45 4e 54  ROW.  *STATEMENT
10610 0a 20 20 2a 54 45 4d 50 0a 20 20 54 45 4d 50 4f  .  *TEMP.  TEMPO
10620 52 41 52 59 0a 20 20 54 52 49 47 47 45 52 20 0a  RARY.  TRIGGER .
10630 20 20 2a 56 41 43 55 55 4d 0a 20 20 56 49 45 57    *VACUUM.  VIEW
10640 0a 7d 0a 70 75 74 73 20 7b 0a 0a 3c 68 32 3e 4e  .}.puts {..<h2>N
10650 6f 72 6d 61 6c 20 6b 65 79 77 6f 72 64 73 3c 2f  ormal keywords</
10660 68 32 3e 0a 0a 3c 70 3e 54 68 65 73 65 20 6b 65  h2>..<p>These ke
10670 79 77 6f 72 64 73 20 63 61 6e 20 62 65 20 75 73  ywords can be us
10680 65 64 20 61 73 20 69 64 65 6e 74 69 66 69 65 72  ed as identifier
10690 73 20 66 6f 72 20 53 51 4c 69 74 65 20 6f 62 6a  s for SQLite obj
106a0 65 63 74 73 2c 20 62 75 74 20 0a 6d 75 73 74 20  ects, but .must 
106b0 62 65 20 65 6e 63 6c 6f 73 65 64 20 69 6e 20 62  be enclosed in b
106c0 72 61 63 6b 65 74 73 20 6f 72 20 71 75 6f 74 65  rackets or quote
106d0 73 20 66 6f 72 20 53 51 4c 69 74 65 20 74 6f 20  s for SQLite to 
106e0 72 65 63 6f 67 6e 69 7a 65 20 74 68 65 6d 20 61  recognize them a
106f0 73 20 0a 61 6e 20 69 64 65 6e 74 69 66 69 65 72  s .an identifier
10700 2e 3c 2f 70 3e 0a 7d 0a 0a 6b 65 79 77 6f 72 64  .</p>.}..keyword
10710 5f 6c 69 73 74 20 7b 0a 20 20 41 4c 4c 0a 20 20  _list {.  ALL.  
10720 41 4e 44 0a 20 20 41 53 0a 20 20 42 45 54 57 45  AND.  AS.  BETWE
10730 45 4e 0a 20 20 42 59 0a 20 20 43 41 53 45 0a 20  EN.  BY.  CASE. 
10740 20 43 48 45 43 4b 0a 20 20 43 4f 4c 4c 41 54 45   CHECK.  COLLATE
10750 0a 20 20 43 4f 4d 4d 49 54 0a 20 20 43 4f 4e 53  .  COMMIT.  CONS
10760 54 52 41 49 4e 54 0a 20 20 43 52 45 41 54 45 20  TRAINT.  CREATE 
10770 0a 20 20 44 45 46 41 55 4c 54 0a 20 20 44 45 46  .  DEFAULT.  DEF
10780 45 52 52 41 42 4c 45 0a 20 20 44 45 4c 45 54 45  ERRABLE.  DELETE
10790 0a 20 20 44 49 53 54 49 4e 43 54 0a 20 20 44 52  .  DISTINCT.  DR
107a0 4f 50 0a 20 20 45 4c 53 45 0a 20 20 45 58 43 45  OP.  ELSE.  EXCE
107b0 50 54 0a 20 20 46 4f 52 45 49 47 4e 0a 20 20 46  PT.  FOREIGN.  F
107c0 52 4f 4d 20 0a 20 20 2a 47 4c 4f 42 0a 20 20 47  ROM .  *GLOB.  G
107d0 52 4f 55 50 0a 20 20 48 41 56 49 4e 47 0a 20 20  ROUP.  HAVING.  
107e0 49 4e 0a 20 20 2a 49 4e 44 45 58 0a 20 20 49 4e  IN.  *INDEX.  IN
107f0 53 45 52 54 0a 20 20 49 4e 54 45 52 53 45 43 54  SERT.  INTERSECT
10800 0a 20 20 49 4e 54 4f 0a 20 20 49 53 20 0a 20 20  .  INTO.  IS .  
10810 2a 49 53 4e 55 4c 4c 0a 20 20 4a 4f 49 4e 0a 20  *ISNULL.  JOIN. 
10820 20 4c 49 4b 45 0a 20 20 4c 49 4d 49 54 0a 20 20   LIKE.  LIMIT.  
10830 4e 4f 54 0a 20 20 2a 4e 4f 54 4e 55 4c 4c 0a 20  NOT.  *NOTNULL. 
10840 20 4e 55 4c 4c 0a 20 20 4f 4e 0a 20 20 4f 52 0a   NULL.  ON.  OR.
10850 20 20 4f 52 44 45 52 20 0a 20 20 50 52 49 4d 41    ORDER .  PRIMA
10860 52 59 0a 20 20 52 45 46 45 52 45 4e 43 45 53 0a  RY.  REFERENCES.
10870 20 20 52 4f 4c 4c 42 41 43 4b 0a 20 20 53 45 4c    ROLLBACK.  SEL
10880 45 43 54 0a 20 20 53 45 54 0a 20 20 54 41 42 4c  ECT.  SET.  TABL
10890 45 0a 20 20 54 48 45 4e 0a 20 20 54 52 41 4e 53  E.  THEN.  TRANS
108a0 41 43 54 49 4f 4e 0a 20 20 55 4e 49 4f 4e 20 0a  ACTION.  UNION .
108b0 20 20 55 4e 49 51 55 45 0a 20 20 55 50 44 41 54    UNIQUE.  UPDAT
108c0 45 0a 20 20 55 53 49 4e 47 0a 20 20 56 41 4c 55  E.  USING.  VALU
108d0 45 53 0a 20 20 57 48 45 4e 0a 20 20 57 48 45 52  ES.  WHEN.  WHER
108e0 45 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 68 32 3e  E.}..puts {.<h2>
108f0 53 70 65 63 69 61 6c 20 77 6f 72 64 73 3c 2f 68  Special words</h
10900 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f  2>..<p>The follo
10910 77 69 6e 67 20 61 72 65 20 6e 6f 74 20 6b 65 79  wing are not key
10920 77 6f 72 64 73 20 69 6e 20 53 51 4c 69 74 65 2c  words in SQLite,
10930 20 62 75 74 20 61 72 65 20 75 73 65 64 20 61 73   but are used as
10940 20 6e 61 6d 65 73 20 6f 66 20 0a 73 79 73 74 65   names of .syste
10950 6d 20 6f 62 6a 65 63 74 73 2e 20 20 54 68 65 79  m objects.  They
10960 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20   can be used as 
10970 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f  an identifier fo
10980 72 20 61 20 64 69 66 66 65 72 65 6e 74 20 0a 74  r a different .t
10990 79 70 65 20 6f 66 20 6f 62 6a 65 63 74 2e 3c 2f  ype of object.</
109a0 70 3e 0a 7d 0a 0a 6b 65 79 77 6f 72 64 5f 6c 69  p>.}..keyword_li
109b0 73 74 20 7b 0a 20 20 2a 5f 52 4f 57 49 44 5f 0a  st {.  *_ROWID_.
109c0 20 20 2a 4d 41 49 4e 0a 20 20 4f 49 44 0a 20 20    *MAIN.  OID.  
109d0 2a 52 4f 57 49 44 0a 20 20 2a 53 51 4c 49 54 45  *ROWID.  *SQLITE
109e0 5f 4d 41 53 54 45 52 0a 20 20 2a 53 51 4c 49 54  _MASTER.  *SQLIT
109f0 45 5f 54 45 4d 50 5f 4d 41 53 54 45 52 0a 7d 0a  E_TEMP_MASTER.}.
10a00 0a 66 6f 6f 74 65 72 20 24 72 63 73 69 64 0a     .footer $rcsid.