/ Hex Artifact Content
Login

Artifact 26a38c36ec6686aee0e46eeac90acb3aae373537:


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 6c 61 6e 67 2d 2a 2e 68  ate the lang-*.h
0030: 74 6d 6c 20 66 69 6c 65 73 2e 0a 23 0a 73 65 74  tml files..#.set
0040: 20 72 63 73 69 64 20 7b 24 49 64 3a 20 6c 61 6e   rcsid {$Id: lan
0050: 67 2e 74 63 6c 2c 76 20 31 2e 31 32 38 20 32 30  g.tcl,v 1.128 20
0060: 30 37 2f 30 34 2f 30 36 20 31 31 3a 32 36 3a 30  07/04/06 11:26:0
0070: 30 20 64 72 68 20 45 78 70 20 24 7d 0a 73 6f 75  0 drh Exp $}.sou
0080: 72 63 65 20 63 6f 6d 6d 6f 6e 2e 74 63 6c 0a 0a  rce common.tcl..
0090: 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72  if {[llength $ar
00a0: 67 76 5d 3e 30 7d 20 7b 0a 20 20 73 65 74 20 6f  gv]>0} {.  set o
00b0: 75 74 70 75 74 64 69 72 20 5b 6c 69 6e 64 65 78  utputdir [lindex
00c0: 20 24 61 72 67 76 20 30 5d 0a 7d 20 65 6c 73 65   $argv 0].} else
00d0: 20 7b 0a 20 20 73 65 74 20 6f 75 74 70 75 74 64   {.  set outputd
00e0: 69 72 20 22 22 0a 7d 0a 0a 68 65 61 64 65 72 20  ir "".}..header 
00f0: 7b 51 75 65 72 79 20 4c 61 6e 67 75 61 67 65 20  {Query Language 
0100: 55 6e 64 65 72 73 74 6f 6f 64 20 62 79 20 53 51  Understood by SQ
0110: 4c 69 74 65 7d 0a 70 75 74 73 20 7b 0a 3c 68 31  Lite}.puts {.<h1
0120: 20 63 6c 61 73 73 3d 22 70 64 66 5f 73 65 63 74   class="pdf_sect
0130: 69 6f 6e 22 3e 53 51 4c 20 41 73 20 55 6e 64 65  ion">SQL As Unde
0140: 72 73 74 6f 6f 64 20 42 79 20 53 51 4c 69 74 65  rstood By SQLite
0150: 3c 2f 68 31 3e 0a 0a 3c 70 3e 54 68 65 20 53 51  </h1>..<p>The SQ
0160: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 75 6e 64  Lite library und
0170: 65 72 73 74 61 6e 64 73 20 6d 6f 73 74 20 6f 66  erstands most of
0180: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51   the standard SQ
0190: 4c 0a 6c 61 6e 67 75 61 67 65 2e 20 20 42 75 74  L.language.  But
01a0: 20 69 74 20 64 6f 65 73 20 3c 61 20 68 72 65 66   it does <a href
01b0: 3d 22 6f 6d 69 74 74 65 64 2e 68 74 6d 6c 22 3e  ="omitted.html">
01c0: 6f 6d 69 74 20 73 6f 6d 65 20 66 65 61 74 75 72  omit some featur
01d0: 65 73 3c 2f 61 3e 0a 77 68 69 6c 65 20 61 74 20  es</a>.while at 
01e0: 74 68 65 20 73 61 6d 65 20 74 69 6d 65 0a 61 64  the same time.ad
01f0: 64 69 6e 67 20 61 20 66 65 77 20 66 65 61 74 75  ding a few featu
0200: 72 65 73 20 6f 66 20 69 74 73 20 6f 77 6e 2e 20  res of its own. 
0210: 20 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 61   This document a
0220: 74 74 65 6d 70 74 73 20 74 6f 0a 64 65 73 63 72  ttempts to.descr
0230: 69 62 65 20 70 72 65 63 69 73 65 6c 79 20 77 68  ibe precisely wh
0240: 61 74 20 70 61 72 74 73 20 6f 66 20 74 68 65 20  at parts of the 
0250: 53 51 4c 20 6c 61 6e 67 75 61 67 65 20 53 51 4c  SQL language SQL
0260: 69 74 65 20 64 6f 65 73 0a 61 6e 64 20 64 6f 65  ite does.and doe
0270: 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 2e 20 20  s not support.  
0280: 41 20 6c 69 73 74 20 6f 66 20 3c 61 20 68 72 65  A list of <a hre
0290: 66 3d 22 6c 61 6e 67 5f 6b 65 79 77 6f 72 64 73  f="lang_keywords
02a0: 2e 68 74 6d 6c 22 3e 6b 65 79 77 6f 72 64 73 3c  .html">keywords<
02b0: 2f 61 3e 20 69 73 20 0a 61 6c 73 6f 20 70 72 6f  /a> is .also pro
02c0: 76 69 64 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49  vided.</p>..<p>I
02d0: 6e 20 61 6c 6c 20 6f 66 20 74 68 65 20 73 79 6e  n all of the syn
02e0: 74 61 78 20 64 69 61 67 72 61 6d 73 20 74 68 61  tax diagrams tha
02f0: 74 20 66 6f 6c 6c 6f 77 2c 20 6c 69 74 65 72 61  t follow, litera
0300: 6c 20 74 65 78 74 20 69 73 20 73 68 6f 77 6e 20  l text is shown 
0310: 69 6e 0a 62 6f 6c 64 20 62 6c 75 65 2e 20 20 4e  in.bold blue.  N
0320: 6f 6e 2d 74 65 72 6d 69 6e 61 6c 20 73 79 6d 62  on-terminal symb
0330: 6f 6c 73 20 61 72 65 20 73 68 6f 77 6e 20 69 6e  ols are shown in
0340: 20 69 74 61 6c 69 63 20 72 65 64 2e 20 20 4f 70   italic red.  Op
0350: 65 72 61 74 6f 72 73 0a 74 68 61 74 20 61 72 65  erators.that are
0360: 20 70 61 72 74 20 6f 66 20 74 68 65 20 73 79 6e   part of the syn
0370: 74 61 63 74 69 63 20 6d 61 72 6b 75 70 20 69 74  tactic markup it
0380: 73 65 6c 66 20 61 72 65 20 73 68 6f 77 6e 20 69  self are shown i
0390: 6e 20 62 6c 61 63 6b 20 72 6f 6d 61 6e 2e 3c 2f  n black roman.</
03a0: 70 3e 0a 0a 3c 70 3e 54 68 69 73 20 64 6f 63 75  p>..<p>This docu
03b0: 6d 65 6e 74 20 69 73 20 6a 75 73 74 20 61 6e 20  ment is just an 
03c0: 6f 76 65 72 76 69 65 77 20 6f 66 20 74 68 65 20  overview of the 
03d0: 53 51 4c 20 73 79 6e 74 61 78 20 69 6d 70 6c 65  SQL syntax imple
03e0: 6d 65 6e 74 65 64 0a 62 79 20 53 51 4c 69 74 65  mented.by SQLite
03f0: 2e 20 20 4d 61 6e 79 20 6c 6f 77 2d 6c 65 76 65  .  Many low-leve
0400: 6c 20 70 72 6f 64 75 63 74 69 6f 6e 73 20 61 72  l productions ar
0410: 65 20 6f 6d 69 74 74 65 64 2e 20 20 46 6f 72 20  e omitted.  For 
0420: 64 65 74 61 69 6c 65 64 20 69 6e 66 6f 72 6d 61  detailed informa
0430: 74 69 6f 6e 0a 6f 6e 20 74 68 65 20 6c 61 6e 67  tion.on the lang
0440: 75 61 67 65 20 74 68 61 74 20 53 51 4c 69 74 65  uage that SQLite
0450: 20 75 6e 64 65 72 73 74 61 6e 64 73 2c 20 72 65   understands, re
0460: 66 65 72 20 74 6f 20 74 68 65 20 73 6f 75 72 63  fer to the sourc
0470: 65 20 63 6f 64 65 20 61 6e 64 0a 74 68 65 20 67  e code and.the g
0480: 72 61 6d 6d 61 72 20 66 69 6c 65 20 22 70 61 72  rammar file "par
0490: 73 65 2e 79 22 2e 3c 2f 70 3e 0a 0a 3c 64 69 76  se.y".</p>..<div
04a0: 20 63 6c 61 73 73 3d 22 70 64 66 5f 69 67 6e 6f   class="pdf_igno
04b0: 72 65 22 3e 0a 3c 70 3e 53 51 4c 69 74 65 20 69  re">.<p>SQLite i
04c0: 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 66 6f  mplements the fo
04d0: 6c 6c 6f 77 20 73 79 6e 74 61 78 3a 3c 2f 70 3e  llow syntax:</p>
04e0: 0a 3c 70 3e 3c 75 6c 3e 0a 7d 0a 0a 70 72 6f 63  .<p><ul>.}..proc
04f0: 20 73 6c 69 6e 6b 20 7b 6c 61 62 65 6c 7d 20 7b   slink {label} {
0500: 0a 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 6d  .  if {[string m
0510: 61 74 63 68 20 2a 2e 68 74 6d 6c 20 24 6c 61 62  atch *.html $lab
0520: 65 6c 5d 7d 20 7b 0a 20 20 20 20 72 65 74 75 72  el]} {.    retur
0530: 6e 20 24 6c 61 62 65 6c 0a 20 20 7d 0a 20 20 69  n $label.  }.  i
0540: 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74  f {[string lengt
0550: 68 20 24 3a 3a 6f 75 74 70 75 74 64 69 72 5d 3d  h $::outputdir]=
0560: 3d 30 7d 20 7b 0a 20 20 20 20 72 65 74 75 72 6e  =0} {.    return
0570: 20 23 24 6c 61 62 65 6c 0a 20 20 7d 20 65 6c 73   #$label.  } els
0580: 65 20 7b 20 0a 20 20 20 20 72 65 74 75 72 6e 20  e { .    return 
0590: 6c 61 6e 67 5f 24 6c 61 62 65 6c 2e 68 74 6d 6c  lang_$label.html
05a0: 0a 20 20 7d 0a 7d 0a 0a 66 6f 72 65 61 63 68 20  .  }.}..foreach 
05b0: 7b 73 65 63 74 69 6f 6e 7d 20 5b 6c 73 6f 72 74  {section} [lsort
05c0: 20 2d 69 6e 64 65 78 20 30 20 2d 64 69 63 74 69   -index 0 -dicti
05d0: 6f 6e 61 72 79 20 7b 0a 20 20 7b 7b 43 52 45 41  onary {.  {{CREA
05e0: 54 45 20 54 41 42 4c 45 7d 20 63 72 65 61 74 65  TE TABLE} create
05f0: 74 61 62 6c 65 7d 0a 20 20 7b 7b 43 52 45 41 54  table}.  {{CREAT
0600: 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 7d  E VIRTUAL TABLE}
0610: 20 63 72 65 61 74 65 76 74 61 62 7d 0a 20 20 7b   createvtab}.  {
0620: 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20 63  {CREATE INDEX} c
0630: 72 65 61 74 65 69 6e 64 65 78 7d 0a 20 20 7b 56  reateindex}.  {V
0640: 41 43 55 55 4d 20 76 61 63 75 75 6d 7d 0a 20 20  ACUUM vacuum}.  
0650: 7b 7b 44 52 4f 50 20 54 41 42 4c 45 7d 20 64 72  {{DROP TABLE} dr
0660: 6f 70 74 61 62 6c 65 7d 0a 20 20 7b 7b 44 52 4f  optable}.  {{DRO
0670: 50 20 49 4e 44 45 58 7d 20 64 72 6f 70 69 6e 64  P INDEX} dropind
0680: 65 78 7d 0a 20 20 7b 49 4e 53 45 52 54 20 69 6e  ex}.  {INSERT in
0690: 73 65 72 74 7d 0a 20 20 7b 52 45 50 4c 41 43 45  sert}.  {REPLACE
06a0: 20 72 65 70 6c 61 63 65 7d 0a 20 20 7b 44 45 4c   replace}.  {DEL
06b0: 45 54 45 20 64 65 6c 65 74 65 7d 0a 20 20 7b 55  ETE delete}.  {U
06c0: 50 44 41 54 45 20 75 70 64 61 74 65 7d 0a 20 20  PDATE update}.  
06d0: 7b 53 45 4c 45 43 54 20 73 65 6c 65 63 74 7d 0a  {SELECT select}.
06e0: 20 20 7b 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65    {comment comme
06f0: 6e 74 7d 0a 20 20 7b 43 4f 50 59 20 63 6f 70 79  nt}.  {COPY copy
0700: 7d 0a 20 20 7b 45 58 50 4c 41 49 4e 20 65 78 70  }.  {EXPLAIN exp
0710: 6c 61 69 6e 7d 0a 20 20 7b 65 78 70 72 65 73 73  lain}.  {express
0720: 69 6f 6e 20 65 78 70 72 7d 0a 20 20 7b 7b 42 45  ion expr}.  {{BE
0730: 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d  GIN TRANSACTION}
0740: 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20   transaction}.  
0750: 7b 7b 43 4f 4d 4d 49 54 20 54 52 41 4e 53 41 43  {{COMMIT TRANSAC
0760: 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f  TION} transactio
0770: 6e 7d 0a 20 20 7b 7b 45 4e 44 20 54 52 41 4e 53  n}.  {{END TRANS
0780: 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74  ACTION} transact
0790: 69 6f 6e 7d 0a 20 20 7b 7b 52 4f 4c 4c 42 41 43  ion}.  {{ROLLBAC
07a0: 4b 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74  K TRANSACTION} t
07b0: 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 50  ransaction}.  {P
07c0: 52 41 47 4d 41 20 70 72 61 67 6d 61 2e 68 74 6d  RAGMA pragma.htm
07d0: 6c 7d 0a 20 20 7b 7b 4f 4e 20 43 4f 4e 46 4c 49  l}.  {{ON CONFLI
07e0: 43 54 20 63 6c 61 75 73 65 7d 20 63 6f 6e 66 6c  CT clause} confl
07f0: 69 63 74 7d 0a 20 20 7b 7b 43 52 45 41 54 45 20  ict}.  {{CREATE 
0800: 56 49 45 57 7d 20 63 72 65 61 74 65 76 69 65 77  VIEW} createview
0810: 7d 0a 20 20 7b 7b 44 52 4f 50 20 56 49 45 57 7d  }.  {{DROP VIEW}
0820: 20 64 72 6f 70 76 69 65 77 7d 0a 20 20 7b 7b 43   dropview}.  {{C
0830: 52 45 41 54 45 20 54 52 49 47 47 45 52 7d 20 63  REATE TRIGGER} c
0840: 72 65 61 74 65 74 72 69 67 67 65 72 7d 0a 20 20  reatetrigger}.  
0850: 7b 7b 44 52 4f 50 20 54 52 49 47 47 45 52 7d 20  {{DROP TRIGGER} 
0860: 64 72 6f 70 74 72 69 67 67 65 72 7d 0a 20 20 7b  droptrigger}.  {
0870: 7b 41 54 54 41 43 48 20 44 41 54 41 42 41 53 45  {ATTACH DATABASE
0880: 7d 20 61 74 74 61 63 68 7d 0a 20 20 7b 7b 44 45  } attach}.  {{DE
0890: 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 64  TACH DATABASE} d
08a0: 65 74 61 63 68 7d 0a 20 20 7b 52 45 49 4e 44 45  etach}.  {REINDE
08b0: 58 20 72 65 69 6e 64 65 78 7d 0a 20 20 7b 7b 41  X reindex}.  {{A
08c0: 4c 54 45 52 20 54 41 42 4c 45 7d 20 61 6c 74 65  LTER TABLE} alte
08d0: 72 74 61 62 6c 65 7d 0a 20 20 7b 7b 41 4e 41 4c  rtable}.  {{ANAL
08e0: 59 5a 45 7d 20 61 6e 61 6c 79 7a 65 7d 0a 7d 5d  YZE} analyze}.}]
08f0: 20 7b 0a 20 20 66 6f 72 65 61 63 68 20 7b 73 5f   {.  foreach {s_
0900: 74 69 74 6c 65 20 73 5f 74 61 67 7d 20 24 73 65  title s_tag} $se
0910: 63 74 69 6f 6e 20 7b 7d 0a 20 20 70 75 74 73 20  ction {}.  puts 
0920: 22 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 5c 22 5b  "<li><a href=\"[
0930: 73 6c 69 6e 6b 20 24 73 5f 74 61 67 5d 5c 22 3e  slink $s_tag]\">
0940: 24 73 5f 74 69 74 6c 65 3c 2f 61 3e 3c 2f 6c 69  $s_title</a></li
0950: 3e 22 0a 7d 0a 70 75 74 73 20 7b 3c 2f 75 6c 3e  >".}.puts {</ul>
0960: 3c 2f 70 3e 0a 3c 2f 64 69 76 3e 0a 0a 3c 70 3e  </p>.</div>..<p>
0970: 44 65 74 61 69 6c 73 20 6f 6e 20 74 68 65 20 69  Details on the i
0980: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
0990: 20 65 61 63 68 20 63 6f 6d 6d 61 6e 64 20 61 72   each command ar
09a0: 65 20 70 72 6f 76 69 64 65 64 20 69 6e 0a 74 68  e provided in.th
09b0: 65 20 73 65 71 75 65 6c 2e 3c 2f 70 3e 0a 7d 0a  e sequel.</p>.}.
09c0: 0a 70 72 6f 63 20 4f 70 65 72 61 74 6f 72 20 7b  .proc Operator {
09d0: 6e 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e  name} {.  return
09e0: 20 22 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22   "<font color=\"
09f0: 23 32 63 32 63 66 30 5c 22 3e 3c 62 69 67 3e 24  #2c2cf0\"><big>$
0a00: 6e 61 6d 65 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74  name</big></font
0a10: 3e 22 0a 7d 0a 70 72 6f 63 20 4e 6f 6e 74 65 72  >".}.proc Nonter
0a20: 6d 69 6e 61 6c 20 7b 6e 61 6d 65 7d 20 7b 0a 20  minal {name} {. 
0a30: 20 72 65 74 75 72 6e 20 22 3c 69 3e 3c 66 6f 6e   return "<i><fon
0a40: 74 20 63 6f 6c 6f 72 3d 5c 22 23 66 66 33 34 33  t color=\"#ff343
0a50: 34 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74 3e  4\">$name</font>
0a60: 3c 2f 69 3e 22 0a 7d 0a 70 72 6f 63 20 4b 65 79  </i>".}.proc Key
0a70: 77 6f 72 64 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20  word {name} {.  
0a80: 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f  return "<font co
0a90: 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e  lor=\"#2c2cf0\">
0aa0: 24 6e 61 6d 65 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a  $name</font>".}.
0ab0: 70 72 6f 63 20 45 78 61 6d 70 6c 65 20 7b 74 65  proc Example {te
0ac0: 78 74 7d 20 7b 0a 20 20 70 75 74 73 20 22 3c 62  xt} {.  puts "<b
0ad0: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 24  lockquote><pre>$
0ae0: 74 65 78 74 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63  text</pre></bloc
0af0: 6b 71 75 6f 74 65 3e 22 0a 7d 0a 0a 70 72 6f 63  kquote>".}..proc
0b00: 20 53 65 63 74 69 6f 6e 20 7b 6e 61 6d 65 20 6c   Section {name l
0b10: 61 62 65 6c 7d 20 7b 0a 20 20 67 6c 6f 62 61 6c  abel} {.  global
0b20: 20 6f 75 74 70 75 74 64 69 72 0a 0a 20 20 69 66   outputdir..  if
0b30: 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68   {[string length
0b40: 20 24 6f 75 74 70 75 74 64 69 72 5d 21 3d 30 7d   $outputdir]!=0}
0b50: 20 7b 0a 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e   {.    if {[llen
0b60: 67 74 68 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e  gth [info comman
0b70: 64 73 20 70 75 74 73 5f 73 74 61 6e 64 61 72 64  ds puts_standard
0b80: 5d 5d 3e 30 7d 20 7b 0a 20 20 20 20 20 20 66 6f  ]]>0} {.      fo
0b90: 6f 74 65 72 20 24 3a 3a 72 63 73 69 64 0a 20 20  oter $::rcsid.  
0ba0: 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b 5b 73 74    }..    if {[st
0bb0: 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 6c 61 62  ring length $lab
0bc0: 65 6c 5d 3e 30 7d 20 7b 0a 20 20 20 20 20 20 72  el]>0} {.      r
0bd0: 65 6e 61 6d 65 20 70 75 74 73 20 70 75 74 73 5f  ename puts puts_
0be0: 73 74 61 6e 64 61 72 64 0a 20 20 20 20 20 20 70  standard.      p
0bf0: 72 6f 63 20 70 75 74 73 20 7b 73 74 72 7d 20 7b  roc puts {str} {
0c00: 0a 20 20 20 20 20 20 20 20 72 65 67 73 75 62 20  .        regsub 
0c10: 2d 61 6c 6c 20 7b 68 72 65 66 3d 22 23 28 5b 61  -all {href="#([a
0c20: 2d 7a 5d 2b 29 22 7d 20 24 73 74 72 20 7b 68 72  -z]+)"} $str {hr
0c30: 65 66 3d 22 6c 61 6e 67 5f 5c 31 2e 68 74 6d 6c  ef="lang_\1.html
0c40: 22 7d 20 73 74 72 0a 20 20 20 20 20 20 20 20 70  "} str.        p
0c50: 75 74 73 5f 73 74 61 6e 64 61 72 64 20 24 3a 3a  uts_standard $::
0c60: 73 65 63 74 69 6f 6e 5f 66 69 6c 65 20 24 73 74  section_file $st
0c70: 72 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20  r.      }.      
0c80: 72 65 6e 61 6d 65 20 66 6f 6f 74 65 72 20 66 6f  rename footer fo
0c90: 6f 74 65 72 5f 73 74 61 6e 64 61 72 64 0a 20 20  oter_standard.  
0ca0: 20 20 20 20 70 72 6f 63 20 66 6f 6f 74 65 72 20      proc footer 
0cb0: 7b 69 64 7d 20 7b 0a 20 20 20 20 20 20 20 20 66  {id} {.        f
0cc0: 6f 6f 74 65 72 5f 73 74 61 6e 64 61 72 64 20 24  ooter_standard $
0cd0: 69 64 0a 20 20 20 20 20 20 20 20 72 65 6e 61 6d  id.        renam
0ce0: 65 20 66 6f 6f 74 65 72 20 22 22 0a 20 20 20 20  e footer "".    
0cf0: 20 20 20 20 72 65 6e 61 6d 65 20 70 75 74 73 20      rename puts 
0d00: 22 22 0a 20 20 20 20 20 20 20 20 72 65 6e 61 6d  "".        renam
0d10: 65 20 70 75 74 73 5f 73 74 61 6e 64 61 72 64 20  e puts_standard 
0d20: 70 75 74 73 0a 20 20 20 20 20 20 20 20 72 65 6e  puts.        ren
0d30: 61 6d 65 20 66 6f 6f 74 65 72 5f 73 74 61 6e 64  ame footer_stand
0d40: 61 72 64 20 66 6f 6f 74 65 72 0a 20 20 20 20 20  ard footer.     
0d50: 20 7d 20 0a 20 20 20 20 20 20 73 65 74 20 3a 3a   } .      set ::
0d60: 73 65 63 74 69 6f 6e 5f 66 69 6c 65 20 5b 6f 70  section_file [op
0d70: 65 6e 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 6f  en [file join $o
0d80: 75 74 70 75 74 64 69 72 20 6c 61 6e 67 5f 24 6c  utputdir lang_$l
0d90: 61 62 65 6c 2e 68 74 6d 6c 5d 20 77 5d 0a 20 20  abel.html] w].  
0da0: 20 20 20 20 68 65 61 64 65 72 20 22 51 75 65 72      header "Quer
0db0: 79 20 4c 61 6e 67 75 61 67 65 20 55 6e 64 65 72  y Language Under
0dc0: 73 74 6f 6f 64 20 62 79 20 53 51 4c 69 74 65 3a  stood by SQLite:
0dd0: 20 24 6e 61 6d 65 22 0a 20 20 20 20 20 20 70 75   $name".      pu
0de0: 74 73 20 22 3c 68 31 3e 53 51 4c 20 41 73 20 55  ts "<h1>SQL As U
0df0: 6e 64 65 72 73 74 6f 6f 64 20 42 79 20 53 51 4c  nderstood By SQL
0e00: 69 74 65 3c 2f 68 31 3e 22 0a 20 20 20 20 20 20  ite</h1>".      
0e10: 70 75 74 73 20 22 3c 61 20 68 72 65 66 3d 5c 22  puts "<a href=\"
0e20: 6c 61 6e 67 2e 68 74 6d 6c 5c 22 3e 5c 5b 43 6f  lang.html\">\[Co
0e30: 6e 74 65 6e 74 73 5c 5d 3c 2f 61 3e 22 0a 20 20  ntents\]</a>".  
0e40: 20 20 20 20 70 75 74 73 20 22 3c 68 32 3e 24 6e      puts "<h2>$n
0e50: 61 6d 65 3c 2f 68 32 3e 22 0a 20 20 20 20 20 20  ame</h2>".      
0e60: 72 65 74 75 72 6e 20 0a 20 20 20 20 7d 0a 20 20  return .    }.  
0e70: 7d 0a 20 20 70 75 74 73 20 22 5c 6e 3c 68 72 20  }.  puts "\n<hr 
0e80: 2f 3e 22 0a 20 20 69 66 20 7b 24 6c 61 62 65 6c  />".  if {$label
0e90: 21 3d 22 22 7d 20 7b 0a 20 20 20 20 70 75 74 73  !=""} {.    puts
0ea0: 20 22 3c 61 20 6e 61 6d 65 3d 5c 22 24 6c 61 62   "<a name=\"$lab
0eb0: 65 6c 5c 22 3e 3c 2f 61 3e 22 0a 20 20 7d 0a 20  el\"></a>".  }. 
0ec0: 20 70 75 74 73 20 22 3c 68 31 3e 24 6e 61 6d 65   puts "<h1>$name
0ed0: 3c 2f 68 31 3e 5c 6e 22 0a 7d 0a 0a 53 65 63 74  </h1>\n".}..Sect
0ee0: 69 6f 6e 20 7b 41 4c 54 45 52 20 54 41 42 4c 45  ion {ALTER TABLE
0ef0: 7d 20 61 6c 74 65 72 74 61 62 6c 65 0a 0a 53 79  } altertable..Sy
0f00: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
0f10: 65 6e 74 7d 20 7b 0a 41 4c 54 45 52 20 54 41 42  ent} {.ALTER TAB
0f20: 4c 45 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  LE [<database-na
0f30: 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61  me> .] <table-na
0f40: 6d 65 3e 20 3c 61 6c 74 65 72 61 74 69 6f 6e 3e  me> <alteration>
0f50: 0a 7d 20 7b 61 6c 74 65 72 61 74 69 6f 6e 7d 20  .} {alteration} 
0f60: 7b 0a 52 45 4e 41 4d 45 20 54 4f 20 3c 6e 65 77  {.RENAME TO <new
0f70: 2d 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 7d 20 7b  -table-name>.} {
0f80: 61 6c 74 65 72 61 74 69 6f 6e 7d 20 7b 0a 41 44  alteration} {.AD
0f90: 44 20 5b 43 4f 4c 55 4d 4e 5d 20 3c 63 6f 6c 75  D [COLUMN] <colu
0fa0: 6d 6e 2d 64 65 66 3e 0a 7d 0a 0a 70 75 74 73 20  mn-def>.}..puts 
0fb0: 7b 0a 3c 70 3e 53 51 4c 69 74 65 27 73 20 76 65  {.<p>SQLite's ve
0fc0: 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 41 4c 54  rsion of the ALT
0fd0: 45 52 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64  ER TABLE command
0fe0: 20 61 6c 6c 6f 77 73 20 74 68 65 20 75 73 65 72   allows the user
0ff0: 20 74 6f 20 0a 72 65 6e 61 6d 65 20 6f 72 20 61   to .rename or a
1000: 64 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d 6e 20  dd a new column 
1010: 74 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74  to an existing t
1020: 61 62 6c 65 2e 20 49 74 20 69 73 20 6e 6f 74 20  able. It is not 
1030: 70 6f 73 73 69 62 6c 65 0a 74 6f 20 72 65 6d 6f  possible.to remo
1040: 76 65 20 61 20 63 6f 6c 75 6d 6e 20 66 72 6f 6d  ve a column from
1050: 20 61 20 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a 0a   a table..</p>..
1060: 3c 70 3e 54 68 65 20 52 45 4e 41 4d 45 20 54 4f  <p>The RENAME TO
1070: 20 73 79 6e 74 61 78 20 69 73 20 75 73 65 64 20   syntax is used 
1080: 74 6f 20 72 65 6e 61 6d 65 20 74 68 65 20 74 61  to rename the ta
1090: 62 6c 65 20 69 64 65 6e 74 69 66 69 65 64 20 62  ble identified b
10a0: 79 20 0a 3c 69 3e 5b 64 61 74 61 62 61 73 65 2d  y .<i>[database-
10b0: 6e 61 6d 65 2e 5d 74 61 62 6c 65 2d 6e 61 6d 65  name.]table-name
10c0: 3c 2f 69 3e 20 74 6f 20 3c 69 3e 6e 65 77 2d 74  </i> to <i>new-t
10d0: 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 20 54  able-name</i>. T
10e0: 68 69 73 20 63 6f 6d 6d 61 6e 64 20 0a 63 61 6e  his command .can
10f0: 6e 6f 74 20 62 65 20 75 73 65 64 20 74 6f 20 6d  not be used to m
1100: 6f 76 65 20 61 20 74 61 62 6c 65 20 62 65 74 77  ove a table betw
1110: 65 65 6e 20 61 74 74 61 63 68 65 64 20 64 61 74  een attached dat
1120: 61 62 61 73 65 73 2c 20 6f 6e 6c 79 20 74 6f 20  abases, only to 
1130: 72 65 6e 61 6d 65 20 0a 61 20 74 61 62 6c 65 20  rename .a table 
1140: 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20  within the same 
1150: 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c  database.</p>..<
1160: 70 3e 49 66 20 74 68 65 20 74 61 62 6c 65 20 62  p>If the table b
1170: 65 69 6e 67 20 72 65 6e 61 6d 65 64 20 68 61 73  eing renamed has
1180: 20 74 72 69 67 67 65 72 73 20 6f 72 20 69 6e 64   triggers or ind
1190: 69 63 65 73 2c 20 74 68 65 6e 20 74 68 65 73 65  ices, then these
11a0: 20 72 65 6d 61 69 6e 0a 61 74 74 61 63 68 65 64   remain.attached
11b0: 20 74 6f 20 74 68 65 20 74 61 62 6c 65 20 61 66   to the table af
11c0: 74 65 72 20 69 74 20 68 61 73 20 62 65 65 6e 20  ter it has been 
11d0: 72 65 6e 61 6d 65 64 2e 20 48 6f 77 65 76 65 72  renamed. However
11e0: 2c 20 69 66 20 74 68 65 72 65 20 61 72 65 0a 61  , if there are.a
11f0: 6e 79 20 76 69 65 77 20 64 65 66 69 6e 69 74 69  ny view definiti
1200: 6f 6e 73 2c 20 6f 72 20 73 74 61 74 65 6d 65 6e  ons, or statemen
1210: 74 73 20 65 78 65 63 75 74 65 64 20 62 79 20 74  ts executed by t
1220: 72 69 67 67 65 72 73 20 74 68 61 74 20 72 65 66  riggers that ref
1230: 65 72 20 74 6f 0a 74 68 65 20 74 61 62 6c 65 20  er to.the table 
1240: 62 65 69 6e 67 20 72 65 6e 61 6d 65 64 2c 20 74  being renamed, t
1250: 68 65 73 65 20 61 72 65 20 6e 6f 74 20 61 75 74  hese are not aut
1260: 6f 6d 61 74 69 63 61 6c 6c 79 20 6d 6f 64 69 66  omatically modif
1270: 69 65 64 20 74 6f 20 75 73 65 20 74 68 65 20 6e  ied to use the n
1280: 65 77 0a 74 61 62 6c 65 20 6e 61 6d 65 2e 20 49  ew.table name. I
1290: 66 20 74 68 69 73 20 69 73 20 72 65 71 75 69 72  f this is requir
12a0: 65 64 2c 20 74 68 65 20 74 72 69 67 67 65 72 73  ed, the triggers
12b0: 20 6f 72 20 76 69 65 77 20 64 65 66 69 6e 69 74   or view definit
12c0: 69 6f 6e 73 20 6d 75 73 74 20 62 65 0a 64 72 6f  ions must be.dro
12d0: 70 70 65 64 20 61 6e 64 20 72 65 63 72 65 61 74  pped and recreat
12e0: 65 64 20 74 6f 20 75 73 65 20 74 68 65 20 6e 65  ed to use the ne
12f0: 77 20 74 61 62 6c 65 20 6e 61 6d 65 20 62 79 20  w table name by 
1300: 68 61 6e 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54  hand..</p>..<p>T
1310: 68 65 20 41 44 44 20 5b 43 4f 4c 55 4d 4e 5d 20  he ADD [COLUMN] 
1320: 73 79 6e 74 61 78 20 69 73 20 75 73 65 64 20 74  syntax is used t
1330: 6f 20 61 64 64 20 61 20 6e 65 77 20 63 6f 6c 75  o add a new colu
1340: 6d 6e 20 74 6f 20 61 6e 20 65 78 69 73 74 69 6e  mn to an existin
1350: 67 20 74 61 62 6c 65 2e 0a 54 68 65 20 6e 65 77  g table..The new
1360: 20 63 6f 6c 75 6d 6e 20 69 73 20 61 6c 77 61 79   column is alway
1370: 73 20 61 70 70 65 6e 64 65 64 20 74 6f 20 74 68  s appended to th
1380: 65 20 65 6e 64 20 6f 66 20 74 68 65 20 6c 69 73  e end of the lis
1390: 74 20 6f 66 20 65 78 69 73 74 69 6e 67 20 63 6f  t of existing co
13a0: 6c 75 6d 6e 73 2e 0a 3c 69 3e 43 6f 6c 75 6d 6e  lumns..<i>Column
13b0: 2d 64 65 66 3c 2f 69 3e 20 6d 61 79 20 74 61 6b  -def</i> may tak
13c0: 65 20 61 6e 79 20 6f 66 20 74 68 65 20 66 6f 72  e any of the for
13d0: 6d 73 20 70 65 72 6d 69 73 73 61 62 6c 65 20 69  ms permissable i
13e0: 6e 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45  n a CREATE TABLE
13f0: 20 0a 73 74 61 74 65 6d 65 6e 74 2c 20 77 69 74   .statement, wit
1400: 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  h the following 
1410: 72 65 73 74 72 69 63 74 69 6f 6e 73 3a 0a 3c 75  restrictions:.<u
1420: 6c 3e 0a 3c 6c 69 3e 54 68 65 20 63 6f 6c 75 6d  l>.<li>The colum
1430: 6e 20 6d 61 79 20 6e 6f 74 20 68 61 76 65 20 61  n may not have a
1440: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6f 72 20   PRIMARY KEY or 
1450: 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e  UNIQUE constrain
1460: 74 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 54 68 65 20  t.</li>.<li>The 
1470: 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74 20 68  column may not h
1480: 61 76 65 20 61 20 64 65 66 61 75 6c 74 20 76 61  ave a default va
1490: 6c 75 65 20 6f 66 20 43 55 52 52 45 4e 54 5f 54  lue of CURRENT_T
14a0: 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54  IME, CURRENT_DAT
14b0: 45 20 0a 20 20 20 20 6f 72 20 43 55 52 52 45 4e  E .    or CURREN
14c0: 54 5f 54 49 4d 45 53 54 41 4d 50 2e 3c 2f 6c 69  T_TIMESTAMP.</li
14d0: 3e 0a 3c 6c 69 3e 49 66 20 61 20 4e 4f 54 20 4e  >.<li>If a NOT N
14e0: 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69  ULL constraint i
14f0: 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65  s specified, the
1500: 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6d 75 73  n the column mus
1510: 74 20 68 61 76 65 20 61 0a 20 20 20 20 64 65 66  t have a.    def
1520: 61 75 6c 74 20 76 61 6c 75 65 20 6f 74 68 65 72  ault value other
1530: 20 74 68 61 6e 20 4e 55 4c 4c 2e 0a 3c 2f 75 6c   than NULL..</ul
1540: 3e 0a 0a 3c 70 3e 54 68 65 20 65 78 65 63 75 74  >..<p>The execut
1550: 69 6f 6e 20 74 69 6d 65 20 6f 66 20 74 68 65 20  ion time of the 
1560: 41 4c 54 45 52 20 54 41 42 4c 45 20 63 6f 6d 6d  ALTER TABLE comm
1570: 61 6e 64 20 69 73 20 69 6e 64 65 70 65 6e 64 65  and is independe
1580: 6e 74 20 6f 66 0a 74 68 65 20 61 6d 6f 75 6e 74  nt of.the amount
1590: 20 6f 66 20 64 61 74 61 20 69 6e 20 74 68 65 20   of data in the 
15a0: 74 61 62 6c 65 2e 20 20 54 68 65 20 41 4c 54 45  table.  The ALTE
15b0: 52 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 20  R TABLE command 
15c0: 72 75 6e 73 20 61 73 20 71 75 69 63 6b 6c 79 0a  runs as quickly.
15d0: 6f 6e 20 61 20 74 61 62 6c 65 20 77 69 74 68 20  on a table with 
15e0: 31 30 20 6d 69 6c 6c 69 6f 6e 20 72 6f 77 73 20  10 million rows 
15f0: 61 73 20 69 74 20 64 6f 65 73 20 6f 6e 20 61 20  as it does on a 
1600: 74 61 62 6c 65 20 77 69 74 68 20 31 20 72 6f 77  table with 1 row
1610: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41 66 74 65 72  ..</p>..<p>After
1620: 20 41 44 44 20 43 4f 4c 55 4d 4e 20 68 61 73 20   ADD COLUMN has 
1630: 62 65 65 6e 20 72 75 6e 20 6f 6e 20 61 20 64 61  been run on a da
1640: 74 61 62 61 73 65 2c 20 74 68 61 74 20 64 61 74  tabase, that dat
1650: 61 62 61 73 65 20 77 69 6c 6c 20 6e 6f 74 0a 62  abase will not.b
1660: 65 20 72 65 61 64 61 62 6c 65 20 62 79 20 53 51  e readable by SQ
1670: 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 31  Lite version 3.1
1680: 2e 33 20 61 6e 64 20 65 61 72 6c 69 65 72 20 75  .3 and earlier u
1690: 6e 74 69 6c 20 74 68 65 20 64 61 74 61 62 61 73  ntil the databas
16a0: 65 0a 69 73 20 3c 61 20 68 72 65 66 3d 22 6c 61  e.is <a href="la
16b0: 6e 67 5f 76 61 63 75 75 6d 2e 68 74 6d 6c 22 3e  ng_vacuum.html">
16c0: 56 41 43 55 55 4d 3c 2f 61 3e 65 64 2e 3c 2f 70  VACUUM</a>ed.</p
16d0: 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 7b 41 4e  >.}..Section {AN
16e0: 41 4c 59 5a 45 7d 20 61 6e 61 6c 79 7a 65 0a 0a  ALYZE} analyze..
16f0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
1700: 65 6d 65 6e 74 7d 20 7b 0a 20 20 41 4e 41 4c 59  ement} {.  ANALY
1710: 5a 45 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ZE.}.Syntax {sql
1720: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 20 20  -statement} {.  
1730: 41 4e 41 4c 59 5a 45 20 3c 64 61 74 61 62 61 73  ANALYZE <databas
1740: 65 2d 6e 61 6d 65 3e 0a 7d 0a 53 79 6e 74 61 78  e-name>.}.Syntax
1750: 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
1760: 20 7b 0a 20 20 41 4e 41 4c 59 5a 45 20 5b 3c 64   {.  ANALYZE [<d
1770: 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d  atabase-name> .]
1780: 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 7d 0a   <table-name>.}.
1790: 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 41  .puts {.<p>The A
17a0: 4e 41 4c 59 5a 45 20 63 6f 6d 6d 61 6e 64 20 67  NALYZE command g
17b0: 61 74 68 65 72 73 20 73 74 61 74 69 73 74 69 63  athers statistic
17c0: 73 20 61 62 6f 75 74 20 69 6e 64 69 63 65 73 20  s about indices 
17d0: 61 6e 64 20 73 74 6f 72 65 73 20 74 68 65 6d 0a  and stores them.
17e0: 69 6e 20 61 20 73 70 65 63 69 61 6c 20 74 61 62  in a special tab
17f0: 6c 65 73 20 69 6e 20 74 68 65 20 64 61 74 61 62  les in the datab
1800: 61 73 65 20 77 68 65 72 65 20 74 68 65 20 71 75  ase where the qu
1810: 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 20 63 61  ery optimizer ca
1820: 6e 20 75 73 65 0a 74 68 65 6d 20 74 6f 20 68 65  n use.them to he
1830: 6c 70 20 6d 61 6b 65 20 62 65 74 74 65 72 20 69  lp make better i
1840: 6e 64 65 78 20 63 68 6f 69 63 65 73 2e 0a 49 66  ndex choices..If
1850: 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 61 72   no arguments ar
1860: 65 20 67 69 76 65 6e 2c 20 61 6c 6c 20 69 6e 64  e given, all ind
1870: 69 63 65 73 20 69 6e 20 61 6c 6c 20 61 74 74 61  ices in all atta
1880: 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20 61  ched databases a
1890: 72 65 0a 61 6e 61 6c 79 7a 65 64 2e 20 20 49 66  re.analyzed.  If
18a0: 20 61 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65   a database name
18b0: 20 69 73 20 67 69 76 65 6e 20 61 73 20 74 68 65   is given as the
18c0: 20 61 72 67 75 6d 65 6e 74 2c 20 61 6c 6c 20 69   argument, all i
18d0: 6e 64 69 63 65 73 0a 69 6e 20 74 68 61 74 20 6f  ndices.in that o
18e0: 6e 65 20 64 61 74 61 62 61 73 65 20 61 72 65 20  ne database are 
18f0: 61 6e 61 6c 79 7a 65 64 2e 20 20 49 66 20 74 68  analyzed.  If th
1900: 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  e argument is a 
1910: 74 61 62 6c 65 20 6e 61 6d 65 2c 0a 74 68 65 6e  table name,.then
1920: 20 6f 6e 6c 79 20 69 6e 64 69 63 65 73 20 61 73   only indices as
1930: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
1940: 61 74 20 6f 6e 65 20 74 61 62 6c 65 20 61 72 65  at one table are
1950: 20 61 6e 61 6c 79 7a 65 64 2e 3c 2f 70 3e 0a 0a   analyzed.</p>..
1960: 3c 70 3e 54 68 65 20 69 6e 69 74 69 61 6c 20 69  <p>The initial i
1970: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 73 74  mplementation st
1980: 6f 72 65 73 20 61 6c 6c 20 73 74 61 74 69 73 74  ores all statist
1990: 69 63 73 20 69 6e 20 61 20 73 69 6e 67 6c 65 0a  ics in a single.
19a0: 74 61 62 6c 65 20 6e 61 6d 65 64 20 3c 62 3e 73  table named <b>s
19b0: 71 6c 69 74 65 5f 73 74 61 74 31 3c 2f 62 3e 2e  qlite_stat1</b>.
19c0: 20 20 46 75 74 75 72 65 20 65 6e 68 61 6e 63 65    Future enhance
19d0: 6d 65 6e 74 73 20 6d 61 79 20 63 72 65 61 74 65  ments may create
19e0: 0a 61 64 64 69 74 69 6f 6e 61 6c 20 74 61 62 6c  .additional tabl
19f0: 65 73 20 77 69 74 68 20 74 68 65 20 73 61 6d 65  es with the same
1a00: 20 6e 61 6d 65 20 70 61 74 74 65 72 6e 20 65 78   name pattern ex
1a10: 63 65 70 74 20 77 69 74 68 20 74 68 65 20 22 31  cept with the "1
1a20: 22 0a 63 68 61 6e 67 65 64 20 74 6f 20 61 20 64  ".changed to a d
1a30: 69 66 66 65 72 65 6e 74 20 64 69 67 69 74 2e 20  ifferent digit. 
1a40: 20 54 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 73   The <b>sqlite_s
1a50: 74 61 74 31 3c 2f 62 3e 20 74 61 62 6c 65 20 63  tat1</b> table c
1a60: 61 6e 6e 6f 74 0a 62 65 20 3c 61 20 68 72 65 66  annot.be <a href
1a70: 3d 22 23 64 72 6f 70 74 61 62 6c 65 22 3e 44 52  ="#droptable">DR
1a80: 4f 50 3c 2f 61 3e 70 65 64 2c 0a 62 75 74 20 61  OP</a>ped,.but a
1a90: 6c 6c 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 63  ll the content c
1aa0: 61 6e 20 62 65 20 3c 61 20 68 72 65 66 3d 22 23  an be <a href="#
1ab0: 64 65 6c 65 74 65 22 3e 44 45 4c 45 54 45 3c 2f  delete">DELETE</
1ac0: 61 3e 64 20 77 68 69 63 68 20 68 61 73 20 74 68  a>d which has th
1ad0: 65 0a 73 61 6d 65 20 65 66 66 65 63 74 2e 3c 2f  e.same effect.</
1ae0: 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 7b 41  p>.}..Section {A
1af0: 54 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20  TTACH DATABASE} 
1b00: 61 74 74 61 63 68 0a 0a 53 79 6e 74 61 78 20 7b  attach..Syntax {
1b10: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
1b20: 0a 41 54 54 41 43 48 20 5b 44 41 54 41 42 41 53  .ATTACH [DATABAS
1b30: 45 5d 20 3c 64 61 74 61 62 61 73 65 2d 66 69 6c  E] <database-fil
1b40: 65 6e 61 6d 65 3e 20 41 53 20 3c 64 61 74 61 62  ename> AS <datab
1b50: 61 73 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74  ase-name>.}..put
1b60: 73 20 7b 0a 3c 70 3e 54 68 65 20 41 54 54 41 43  s {.<p>The ATTAC
1b70: 48 20 44 41 54 41 42 41 53 45 20 73 74 61 74 65  H DATABASE state
1b80: 6d 65 6e 74 20 61 64 64 73 20 61 6e 6f 74 68 65  ment adds anothe
1b90: 72 20 64 61 74 61 62 61 73 65 20 0a 66 69 6c 65  r database .file
1ba0: 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20   to the current 
1bb0: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1bc0: 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 66 69 6c  ion.  If the fil
1bd0: 65 6e 61 6d 65 20 63 6f 6e 74 61 69 6e 73 20 0a  ename contains .
1be0: 70 75 6e 63 74 75 61 74 69 6f 6e 20 63 68 61 72  punctuation char
1bf0: 61 63 74 65 72 73 20 69 74 20 6d 75 73 74 20 62  acters it must b
1c00: 65 20 71 75 6f 74 65 64 2e 20 20 54 68 65 20 6e  e quoted.  The n
1c10: 61 6d 65 73 20 27 6d 61 69 6e 27 20 61 6e 64 20  ames 'main' and 
1c20: 0a 27 74 65 6d 70 27 20 72 65 66 65 72 20 74 6f  .'temp' refer to
1c30: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
1c40: 73 65 20 61 6e 64 20 74 68 65 20 64 61 74 61 62  se and the datab
1c50: 61 73 65 20 75 73 65 64 20 66 6f 72 20 0a 74 65  ase used for .te
1c60: 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73 2e 20  mporary tables. 
1c70: 20 54 68 65 73 65 20 63 61 6e 6e 6f 74 20 62 65   These cannot be
1c80: 20 64 65 74 61 63 68 65 64 2e 20 20 41 74 74 61   detached.  Atta
1c90: 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20 0a  ched databases .
1ca0: 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73 69 6e  are removed usin
1cb0: 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23  g the <a href="#
1cc0: 64 65 74 61 63 68 22 3e 44 45 54 41 43 48 20 44  detach">DETACH D
1cd0: 41 54 41 42 41 53 45 3c 2f 61 3e 20 0a 73 74 61  ATABASE</a> .sta
1ce0: 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e  tement.</p>..<p>
1cf0: 59 6f 75 20 63 61 6e 20 72 65 61 64 20 66 72 6f  You can read fro
1d00: 6d 20 61 6e 64 20 77 72 69 74 65 20 74 6f 20 61  m and write to a
1d10: 6e 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  n attached datab
1d20: 61 73 65 20 61 6e 64 20 79 6f 75 0a 63 61 6e 20  ase and you.can 
1d30: 6d 6f 64 69 66 79 20 74 68 65 20 73 63 68 65 6d  modify the schem
1d40: 61 20 6f 66 20 74 68 65 20 61 74 74 61 63 68 65  a of the attache
1d50: 64 20 64 61 74 61 62 61 73 65 2e 20 20 54 68 69  d database.  Thi
1d60: 73 20 69 73 20 61 20 6e 65 77 0a 66 65 61 74 75  s is a new.featu
1d70: 72 65 20 6f 66 20 53 51 4c 69 74 65 20 76 65 72  re of SQLite ver
1d80: 73 69 6f 6e 20 33 2e 30 2e 20 20 49 6e 20 53 51  sion 3.0.  In SQ
1d90: 4c 69 74 65 20 32 2e 38 2c 20 73 63 68 65 6d 61  Lite 2.8, schema
1da0: 20 63 68 61 6e 67 65 73 0a 74 6f 20 61 74 74 61   changes.to atta
1db0: 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20 77  ched databases w
1dc0: 65 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e  ere not allowed.
1dd0: 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63 61 6e  </p>..<p>You can
1de0: 6e 6f 74 20 63 72 65 61 74 65 20 61 20 6e 65 77  not create a new
1df0: 20 74 61 62 6c 65 20 77 69 74 68 20 74 68 65 20   table with the 
1e00: 73 61 6d 65 20 6e 61 6d 65 20 61 73 20 61 20 74  same name as a t
1e10: 61 62 6c 65 20 69 6e 20 0a 61 6e 20 61 74 74 61  able in .an atta
1e20: 63 68 65 64 20 64 61 74 61 62 61 73 65 2c 20 62  ched database, b
1e30: 75 74 20 79 6f 75 20 63 61 6e 20 61 74 74 61 63  ut you can attac
1e40: 68 20 61 20 64 61 74 61 62 61 73 65 20 77 68 69  h a database whi
1e50: 63 68 20 63 6f 6e 74 61 69 6e 73 0a 74 61 62 6c  ch contains.tabl
1e60: 65 73 20 77 68 6f 73 65 20 6e 61 6d 65 73 20 61  es whose names a
1e70: 72 65 20 64 75 70 6c 69 63 61 74 65 73 20 6f 66  re duplicates of
1e80: 20 74 61 62 6c 65 73 20 69 6e 20 74 68 65 20 6d   tables in the m
1e90: 61 69 6e 20 64 61 74 61 62 61 73 65 2e 20 20 49  ain database.  I
1ea0: 74 20 69 73 20 0a 61 6c 73 6f 20 70 65 72 6d 69  t is .also permi
1eb0: 73 73 69 62 6c 65 20 74 6f 20 61 74 74 61 63 68  ssible to attach
1ec0: 20 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61   the same databa
1ed0: 73 65 20 66 69 6c 65 20 6d 75 6c 74 69 70 6c 65  se file multiple
1ee0: 20 74 69 6d 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e   times.</p>..<p>
1ef0: 54 61 62 6c 65 73 20 69 6e 20 61 6e 20 61 74 74  Tables in an att
1f00: 61 63 68 65 64 20 64 61 74 61 62 61 73 65 20 63  ached database c
1f10: 61 6e 20 62 65 20 72 65 66 65 72 72 65 64 20 74  an be referred t
1f20: 6f 20 75 73 69 6e 67 20 74 68 65 20 73 79 6e 74  o using the synt
1f30: 61 78 20 0a 3c 69 3e 64 61 74 61 62 61 73 65 2d  ax .<i>database-
1f40: 6e 61 6d 65 2e 74 61 62 6c 65 2d 6e 61 6d 65 3c  name.table-name<
1f50: 2f 69 3e 2e 20 20 49 66 20 61 6e 20 61 74 74 61  /i>.  If an atta
1f60: 63 68 65 64 20 74 61 62 6c 65 20 64 6f 65 73 6e  ched table doesn
1f70: 27 74 20 68 61 76 65 20 0a 61 20 64 75 70 6c 69  't have .a dupli
1f80: 63 61 74 65 20 74 61 62 6c 65 20 6e 61 6d 65 20  cate table name 
1f90: 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61  in the main data
1fa0: 62 61 73 65 2c 20 69 74 20 64 6f 65 73 6e 27 74  base, it doesn't
1fb0: 20 72 65 71 75 69 72 65 20 61 20 0a 64 61 74 61   require a .data
1fc0: 62 61 73 65 20 6e 61 6d 65 20 70 72 65 66 69 78  base name prefix
1fd0: 2e 20 20 57 68 65 6e 20 61 20 64 61 74 61 62 61  .  When a databa
1fe0: 73 65 20 69 73 20 61 74 74 61 63 68 65 64 2c 20  se is attached, 
1ff0: 61 6c 6c 20 6f 66 20 69 74 73 20 0a 74 61 62 6c  all of its .tabl
2000: 65 73 20 77 68 69 63 68 20 64 6f 6e 27 74 20 68  es which don't h
2010: 61 76 65 20 64 75 70 6c 69 63 61 74 65 20 6e 61  ave duplicate na
2020: 6d 65 73 20 62 65 63 6f 6d 65 20 74 68 65 20 64  mes become the d
2030: 65 66 61 75 6c 74 20 74 61 62 6c 65 0a 6f 66 20  efault table.of 
2040: 74 68 61 74 20 6e 61 6d 65 2e 20 20 41 6e 79 20  that name.  Any 
2050: 74 61 62 6c 65 73 20 6f 66 20 74 68 61 74 20 6e  tables of that n
2060: 61 6d 65 20 61 74 74 61 63 68 65 64 20 61 66 74  ame attached aft
2070: 65 72 77 61 72 64 73 20 72 65 71 75 69 72 65 20  erwards require 
2080: 74 68 65 20 74 61 62 6c 65 20 0a 70 72 65 66 69  the table .prefi
2090: 78 2e 20 49 66 20 74 68 65 20 64 65 66 61 75 6c  x. If the defaul
20a0: 74 20 74 61 62 6c 65 20 6f 66 20 61 20 67 69 76  t table of a giv
20b0: 65 6e 20 6e 61 6d 65 20 69 73 20 64 65 74 61 63  en name is detac
20c0: 68 65 64 2c 20 74 68 65 6e 20 0a 74 68 65 20 6c  hed, then .the l
20d0: 61 73 74 20 74 61 62 6c 65 20 6f 66 20 74 68 61  ast table of tha
20e0: 74 20 6e 61 6d 65 20 61 74 74 61 63 68 65 64 20  t name attached 
20f0: 62 65 63 6f 6d 65 73 20 74 68 65 20 6e 65 77 20  becomes the new 
2100: 64 65 66 61 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70  default.</p>..<p
2110: 3e 0a 54 72 61 6e 73 61 63 74 69 6f 6e 73 20 69  >.Transactions i
2120: 6e 76 6f 6c 76 69 6e 67 20 6d 75 6c 74 69 70 6c  nvolving multipl
2130: 65 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  e attached datab
2140: 61 73 65 73 20 61 72 65 20 61 74 6f 6d 69 63 2c  ases are atomic,
2150: 0a 61 73 73 75 6d 69 6e 67 20 74 68 61 74 20 74  .assuming that t
2160: 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65  he main database
2170: 20 69 73 20 6e 6f 74 20 22 3a 6d 65 6d 6f 72 79   is not ":memory
2180: 3a 22 2e 20 20 49 66 20 74 68 65 20 6d 61 69 6e  :".  If the main
2190: 0a 64 61 74 61 62 61 73 65 20 69 73 20 22 3a 6d  .database is ":m
21a0: 65 6d 6f 72 79 3a 22 20 74 68 65 6e 20 0a 74 72  emory:" then .tr
21b0: 61 6e 73 61 63 74 69 6f 6e 73 20 63 6f 6e 74 69  ansactions conti
21c0: 6e 75 65 20 74 6f 20 62 65 20 61 74 6f 6d 69 63  nue to be atomic
21d0: 20 77 69 74 68 69 6e 20 65 61 63 68 20 69 6e 64   within each ind
21e0: 69 76 69 64 75 61 6c 0a 64 61 74 61 62 61 73 65  ividual.database
21f0: 20 66 69 6c 65 2e 20 42 75 74 20 69 66 20 74 68   file. But if th
2200: 65 20 68 6f 73 74 20 63 6f 6d 70 75 74 65 72 20  e host computer 
2210: 63 72 61 73 68 65 73 20 69 6e 20 74 68 65 20 6d  crashes in the m
2220: 69 64 64 6c 65 0a 6f 66 20 61 20 43 4f 4d 4d 49  iddle.of a COMMI
2230: 54 20 77 68 65 72 65 20 74 77 6f 20 6f 72 20 6d  T where two or m
2240: 6f 72 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  ore database fil
2250: 65 73 20 61 72 65 20 75 70 64 61 74 65 64 2c 0a  es are updated,.
2260: 73 6f 6d 65 20 6f 66 20 74 68 6f 73 65 20 66 69  some of those fi
2270: 6c 65 73 20 6d 69 67 68 74 20 67 65 74 20 74 68  les might get th
2280: 65 20 63 68 61 6e 67 65 73 20 77 68 65 72 65 20  e changes where 
2290: 6f 74 68 65 72 73 0a 6d 69 67 68 74 20 6e 6f 74  others.might not
22a0: 2e 0a 41 74 6f 6d 69 63 20 63 6f 6d 6d 69 74 20  ..Atomic commit 
22b0: 6f 66 20 61 74 74 61 63 68 65 64 20 64 61 74 61  of attached data
22c0: 62 61 73 65 73 20 69 73 20 61 20 6e 65 77 20 66  bases is a new f
22d0: 65 61 74 75 72 65 20 6f 66 20 53 51 4c 69 74 65  eature of SQLite
22e0: 20 76 65 72 73 69 6f 6e 20 33 2e 30 2e 0a 49 6e   version 3.0..In
22f0: 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20   SQLite version 
2300: 32 2e 38 2c 20 61 6c 6c 20 63 6f 6d 6d 69 74 73  2.8, all commits
2310: 20 74 6f 20 61 74 74 61 63 68 65 64 20 64 61 74   to attached dat
2320: 61 62 61 73 65 73 20 62 65 68 61 76 65 64 20 61  abases behaved a
2330: 73 20 69 66 0a 74 68 65 20 6d 61 69 6e 20 64 61  s if.the main da
2340: 74 61 62 61 73 65 20 77 65 72 65 20 22 3a 6d 65  tabase were ":me
2350: 6d 6f 72 79 3a 22 2e 0a 3c 2f 70 3e 0a 0a 3c 70  mory:"..</p>..<p
2360: 3e 54 68 65 72 65 20 69 73 20 61 20 63 6f 6d 70  >There is a comp
2370: 69 6c 65 2d 74 69 6d 65 20 6c 69 6d 69 74 20 6f  ile-time limit o
2380: 66 20 31 30 20 61 74 74 61 63 68 65 64 20 64 61  f 10 attached da
2390: 74 61 62 61 73 65 20 66 69 6c 65 73 2e 3c 2f 70  tabase files.</p
23a0: 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 42  >.}...Section {B
23b0: 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e  EGIN TRANSACTION
23c0: 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 0a 53  } transaction..S
23d0: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
23e0: 6d 65 6e 74 7d 20 7b 0a 42 45 47 49 4e 20 5b 20  ment} {.BEGIN [ 
23f0: 44 45 46 45 52 52 45 44 20 7c 20 49 4d 4d 45 44  DEFERRED | IMMED
2400: 49 41 54 45 20 7c 20 45 58 43 4c 55 53 49 56 45  IATE | EXCLUSIVE
2410: 20 5d 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e 20   ] [TRANSACTION 
2420: 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53 79 6e 74  [<name>]].}.Synt
2430: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
2440: 74 7d 20 7b 0a 45 4e 44 20 5b 54 52 41 4e 53 41  t} {.END [TRANSA
2450: 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a  CTION [<name>]].
2460: 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  }.Syntax {sql-st
2470: 61 74 65 6d 65 6e 74 7d 20 7b 0a 43 4f 4d 4d 49  atement} {.COMMI
2480: 54 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b  T [TRANSACTION [
2490: 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53 79 6e 74 61  <name>]].}.Synta
24a0: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
24b0: 7d 20 7b 0a 52 4f 4c 4c 42 41 43 4b 20 5b 54 52  } {.ROLLBACK [TR
24c0: 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65  ANSACTION [<name
24d0: 3e 5d 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  >]].}..puts {.<p
24e0: 3e 42 65 67 69 6e 6e 69 6e 67 20 69 6e 20 76 65  >Beginning in ve
24f0: 72 73 69 6f 6e 20 32 2e 30 2c 20 53 51 4c 69 74  rsion 2.0, SQLit
2500: 65 20 73 75 70 70 6f 72 74 73 20 74 72 61 6e 73  e supports trans
2510: 61 63 74 69 6f 6e 73 20 77 69 74 68 0a 72 6f 6c  actions with.rol
2520: 6c 62 61 63 6b 20 61 6e 64 20 61 74 6f 6d 69 63  lback and atomic
2530: 20 63 6f 6d 6d 69 74 2e 3c 2f 70 3e 0a 0a 3c 70   commit.</p>..<p
2540: 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 74 72  >The optional tr
2550: 61 6e 73 61 63 74 69 6f 6e 20 6e 61 6d 65 20 69  ansaction name i
2560: 73 20 69 67 6e 6f 72 65 64 2e 20 53 51 4c 69 74  s ignored. SQLit
2570: 65 20 63 75 72 72 65 6e 74 6c 79 20 0a 64 6f 65  e currently .doe
2580: 73 20 6e 6f 74 20 61 6c 6c 6f 77 20 6e 65 73 74  s not allow nest
2590: 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e  ed transactions.
25a0: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 4e 6f 20 63 68 61  </p>..<p>.No cha
25b0: 6e 67 65 73 20 63 61 6e 20 62 65 20 6d 61 64 65  nges can be made
25c0: 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
25d0: 20 65 78 63 65 70 74 20 77 69 74 68 69 6e 20 61   except within a
25e0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 41 6e   transaction..An
25f0: 79 20 63 6f 6d 6d 61 6e 64 20 74 68 61 74 20 63  y command that c
2600: 68 61 6e 67 65 73 20 74 68 65 20 64 61 74 61 62  hanges the datab
2610: 61 73 65 20 28 62 61 73 69 63 61 6c 6c 79 2c 20  ase (basically, 
2620: 61 6e 79 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a  any SQL command.
2630: 6f 74 68 65 72 20 74 68 61 6e 20 53 45 4c 45 43  other than SELEC
2640: 54 29 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69  T) will automati
2650: 63 61 6c 6c 79 20 73 74 61 72 74 20 61 20 74 72  cally start a tr
2660: 61 6e 73 61 63 74 69 6f 6e 20 69 66 0a 6f 6e 65  ansaction if.one
2670: 20 69 73 20 6e 6f 74 20 61 6c 72 65 61 64 79 20   is not already 
2680: 69 6e 20 65 66 66 65 63 74 2e 20 20 41 75 74 6f  in effect.  Auto
2690: 6d 61 74 69 63 61 6c 6c 79 20 73 74 61 72 74 65  matically starte
26a0: 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 0a 61  d transactions.a
26b0: 72 65 20 63 6f 6d 6d 69 74 74 65 64 20 61 74 20  re committed at 
26c0: 74 68 65 20 63 6f 6e 63 6c 75 73 69 6f 6e 20 6f  the conclusion o
26d0: 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2e 0a 3c  f the command..<
26e0: 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73 61 63  /p>..<p>.Transac
26f0: 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 73 74 61  tions can be sta
2700: 72 74 65 64 20 6d 61 6e 75 61 6c 6c 79 20 75 73  rted manually us
2710: 69 6e 67 20 74 68 65 20 42 45 47 49 4e 0a 63 6f  ing the BEGIN.co
2720: 6d 6d 61 6e 64 2e 20 20 53 75 63 68 20 74 72 61  mmand.  Such tra
2730: 6e 73 61 63 74 69 6f 6e 73 20 75 73 75 61 6c 6c  nsactions usuall
2740: 79 20 70 65 72 73 69 73 74 20 75 6e 74 69 6c 20  y persist until 
2750: 74 68 65 20 6e 65 78 74 0a 43 4f 4d 4d 49 54 20  the next.COMMIT 
2760: 6f 72 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d  or ROLLBACK comm
2770: 61 6e 64 2e 20 20 42 75 74 20 61 20 74 72 61 6e  and.  But a tran
2780: 73 61 63 74 69 6f 6e 20 77 69 6c 6c 20 61 6c 73  saction will als
2790: 6f 20 0a 52 4f 4c 4c 42 41 43 4b 20 69 66 20 74  o .ROLLBACK if t
27a0: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 63  he database is c
27b0: 6c 6f 73 65 64 20 6f 72 20 69 66 20 61 6e 20 65  losed or if an e
27c0: 72 72 6f 72 20 6f 63 63 75 72 73 0a 61 6e 64 20  rror occurs.and 
27d0: 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6e  the ROLLBACK con
27e0: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
27f0: 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 73 70   algorithm is sp
2800: 65 63 69 66 69 65 64 2e 0a 53 65 65 20 74 68 65  ecified..See the
2810: 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f   documentation o
2820: 6e 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23  n the <a href="#
2830: 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e  conflict">ON CON
2840: 46 4c 49 43 54 3c 2f 61 3e 0a 63 6c 61 75 73 65  FLICT</a>.clause
2850: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
2860: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
2870: 74 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 0a 63  t the ROLLBACK.c
2880: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
2890: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2e 0a 3c 2f  on algorithm..</
28a0: 70 3e 0a 0a 3c 70 3e 0a 49 6e 20 53 51 4c 69 74  p>..<p>.In SQLit
28b0: 65 20 76 65 72 73 69 6f 6e 20 33 2e 30 2e 38 20  e version 3.0.8 
28c0: 61 6e 64 20 6c 61 74 65 72 2c 20 74 72 61 6e 73  and later, trans
28d0: 61 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 64  actions can be d
28e0: 65 66 65 72 72 65 64 2c 0a 69 6d 6d 65 64 69 61  eferred,.immedia
28f0: 74 65 2c 20 6f 72 20 65 78 63 6c 75 73 69 76 65  te, or exclusive
2900: 2e 20 20 44 65 66 65 72 72 65 64 20 6d 65 61 6e  .  Deferred mean
2910: 73 20 74 68 61 74 20 6e 6f 20 6c 6f 63 6b 73 20  s that no locks 
2920: 61 72 65 20 61 63 71 75 69 72 65 64 0a 6f 6e 20  are acquired.on 
2930: 74 68 65 20 64 61 74 61 62 61 73 65 20 75 6e 74  the database unt
2940: 69 6c 20 74 68 65 20 64 61 74 61 62 61 73 65 20  il the database 
2950: 69 73 20 66 69 72 73 74 20 61 63 63 65 73 73 65  is first accesse
2960: 64 2e 20 20 54 68 75 73 20 77 69 74 68 20 61 0a  d.  Thus with a.
2970: 64 65 66 65 72 72 65 64 20 74 72 61 6e 73 61 63  deferred transac
2980: 74 69 6f 6e 2c 20 74 68 65 20 42 45 47 49 4e 20  tion, the BEGIN 
2990: 73 74 61 74 65 6d 65 6e 74 20 69 74 73 65 6c 66  statement itself
29a0: 20 64 6f 65 73 20 6e 6f 74 68 69 6e 67 2e 20 20   does nothing.  
29b0: 4c 6f 63 6b 73 0a 61 72 65 20 6e 6f 74 20 61 63  Locks.are not ac
29c0: 71 75 69 72 65 64 20 75 6e 74 69 6c 20 74 68 65  quired until the
29d0: 20 66 69 72 73 74 20 72 65 61 64 20 6f 72 20 77   first read or w
29e0: 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 2e 20  rite operation. 
29f0: 20 54 68 65 20 66 69 72 73 74 20 72 65 61 64 0a   The first read.
2a00: 6f 70 65 72 61 74 69 6f 6e 20 61 67 61 69 6e 73  operation agains
2a10: 74 20 61 20 64 61 74 61 62 61 73 65 20 63 72 65  t a database cre
2a20: 61 74 65 73 20 61 20 53 48 41 52 45 44 20 6c 6f  ates a SHARED lo
2a30: 63 6b 20 61 6e 64 20 74 68 65 20 66 69 72 73 74  ck and the first
2a40: 0a 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e  .write operation
2a50: 20 63 72 65 61 74 65 73 20 61 20 52 45 53 45 52   creates a RESER
2a60: 56 45 44 20 6c 6f 63 6b 2e 20 20 20 42 65 63 61  VED lock.   Beca
2a70: 75 73 65 20 74 68 65 20 61 63 71 75 69 73 69 74  use the acquisit
2a80: 69 6f 6e 20 6f 66 0a 6c 6f 63 6b 73 20 69 73 20  ion of.locks is 
2a90: 64 65 66 65 72 72 65 64 20 75 6e 74 69 6c 20 74  deferred until t
2aa0: 68 65 79 20 61 72 65 20 6e 65 65 64 65 64 2c 20  hey are needed, 
2ab0: 69 74 20 69 73 20 70 6f 73 73 69 62 6c 65 20 74  it is possible t
2ac0: 68 61 74 20 61 6e 6f 74 68 65 72 0a 74 68 72 65  hat another.thre
2ad0: 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20 63 6f  ad or process co
2ae0: 75 6c 64 20 63 72 65 61 74 65 20 61 20 73 65 70  uld create a sep
2af0: 61 72 61 74 65 20 74 72 61 6e 73 61 63 74 69 6f  arate transactio
2b00: 6e 20 61 6e 64 20 77 72 69 74 65 20 74 6f 0a 74  n and write to.t
2b10: 68 65 20 64 61 74 61 62 61 73 65 20 61 66 74 65  he database afte
2b20: 72 20 74 68 65 20 42 45 47 49 4e 20 6f 6e 20 74  r the BEGIN on t
2b30: 68 65 20 63 75 72 72 65 6e 74 20 74 68 72 65 61  he current threa
2b40: 64 20 68 61 73 20 65 78 65 63 75 74 65 64 2e 0a  d has executed..
2b50: 49 66 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  If the transacti
2b60: 6f 6e 20 69 73 20 69 6d 6d 65 64 69 61 74 65 2c  on is immediate,
2b70: 20 74 68 65 6e 20 52 45 53 45 52 56 45 44 20 6c   then RESERVED l
2b80: 6f 63 6b 73 0a 61 72 65 20 61 63 71 75 69 72 65  ocks.are acquire
2b90: 64 20 6f 6e 20 61 6c 6c 20 64 61 74 61 62 61 73  d on all databas
2ba0: 65 73 20 61 73 20 73 6f 6f 6e 20 61 73 20 74 68  es as soon as th
2bb0: 65 20 42 45 47 49 4e 20 63 6f 6d 6d 61 6e 64 20  e BEGIN command 
2bc0: 69 73 0a 65 78 65 63 75 74 65 64 2c 20 77 69 74  is.executed, wit
2bd0: 68 6f 75 74 20 77 61 69 74 69 6e 67 20 66 6f 72  hout waiting for
2be0: 20 74 68 65 0a 64 61 74 61 62 61 73 65 20 74 6f   the.database to
2bf0: 20 62 65 20 75 73 65 64 2e 20 20 41 66 74 65 72   be used.  After
2c00: 20 61 20 42 45 47 49 4e 20 49 4d 4d 45 44 49 41   a BEGIN IMMEDIA
2c10: 54 45 2c 20 79 6f 75 20 61 72 65 20 67 75 61 72  TE, you are guar
2c20: 61 6e 74 65 65 64 20 74 68 61 74 0a 6e 6f 20 6f  anteed that.no o
2c30: 74 68 65 72 20 74 68 72 65 61 64 20 6f 72 20 70  ther thread or p
2c40: 72 6f 63 65 73 73 20 77 69 6c 6c 20 62 65 20 61  rocess will be a
2c50: 62 6c 65 20 74 6f 20 77 72 69 74 65 20 74 6f 20  ble to write to 
2c60: 74 68 65 20 64 61 74 61 62 61 73 65 20 6f 72 0a  the database or.
2c70: 64 6f 20 61 20 42 45 47 49 4e 20 49 4d 4d 45 44  do a BEGIN IMMED
2c80: 49 41 54 45 20 6f 72 20 42 45 47 49 4e 20 45 58  IATE or BEGIN EX
2c90: 43 4c 55 53 49 56 45 2e 20 20 4f 74 68 65 72 20  CLUSIVE.  Other 
2ca0: 70 72 6f 63 65 73 73 65 73 20 63 61 6e 20 63 6f  processes can co
2cb0: 6e 74 69 6e 75 65 0a 74 6f 20 72 65 61 64 20 66  ntinue.to read f
2cc0: 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65  rom the database
2cd0: 2c 20 68 6f 77 65 76 65 72 2e 20 20 41 6e 20 65  , however.  An e
2ce0: 78 63 6c 75 73 69 76 65 20 74 72 61 6e 73 61 63  xclusive transac
2cf0: 74 69 6f 6e 20 63 61 75 73 65 73 0a 45 58 43 4c  tion causes.EXCL
2d00: 55 53 49 56 45 20 6c 6f 63 6b 73 20 74 6f 20 62  USIVE locks to b
2d10: 65 20 61 63 71 75 69 72 65 64 20 6f 6e 20 61 6c  e acquired on al
2d20: 6c 20 64 61 74 61 62 61 73 65 73 2e 20 20 41 66  l databases.  Af
2d30: 74 65 72 20 61 20 42 45 47 49 4e 0a 45 58 43 4c  ter a BEGIN.EXCL
2d40: 55 53 49 56 45 2c 20 79 6f 75 20 61 72 65 20 67  USIVE, you are g
2d50: 75 61 72 61 6e 74 65 65 64 20 74 68 61 74 20 6e  uaranteed that n
2d60: 6f 20 6f 74 68 65 72 20 74 68 72 65 61 64 20 6f  o other thread o
2d70: 72 20 70 72 6f 63 65 73 73 20 77 69 6c 6c 0a 62  r process will.b
2d80: 65 20 61 62 6c 65 20 74 6f 20 72 65 61 64 20 6f  e able to read o
2d90: 72 20 77 72 69 74 65 20 74 68 65 20 64 61 74 61  r write the data
2da0: 62 61 73 65 20 75 6e 74 69 6c 20 74 68 65 20 74  base until the t
2db0: 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 0a 63 6f  ransaction is.co
2dc0: 6d 70 6c 65 74 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70  mplete..</p>..<p
2dd0: 3e 0a 41 20 64 65 73 63 72 69 70 74 69 6f 6e 20  >.A description 
2de0: 6f 66 20 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f  of the meaning o
2df0: 66 20 53 48 41 52 45 44 2c 20 52 45 53 45 52 56  f SHARED, RESERV
2e00: 45 44 2c 20 61 6e 64 20 45 58 43 4c 55 53 49 56  ED, and EXCLUSIV
2e10: 45 20 6c 6f 63 6b 73 0a 69 73 20 61 76 61 69 6c  E locks.is avail
2e20: 61 62 6c 65 20 3c 61 20 68 72 65 66 3d 22 6c 6f  able <a href="lo
2e30: 63 6b 69 6e 67 76 33 2e 68 74 6d 6c 22 3e 73 65  ckingv3.html">se
2e40: 70 61 72 61 74 65 6c 79 3c 2f 61 3e 2e 0a 3c 2f  parately</a>..</
2e50: 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 64 65 66 61  p>..<p>.The defa
2e60: 75 6c 74 20 62 65 68 61 76 69 6f 72 20 66 6f 72  ult behavior for
2e70: 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20   SQLite version 
2e80: 33 2e 30 2e 38 20 69 73 20 61 0a 64 65 66 65 72  3.0.8 is a.defer
2e90: 72 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e  red transaction.
2ea0: 20 20 46 6f 72 20 53 51 4c 69 74 65 20 76 65 72    For SQLite ver
2eb0: 73 69 6f 6e 20 33 2e 30 2e 30 20 74 68 72 6f 75  sion 3.0.0 throu
2ec0: 67 68 20 33 2e 30 2e 37 2c 0a 64 65 66 65 72 72  gh 3.0.7,.deferr
2ed0: 65 64 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 6b  ed is the only k
2ee0: 69 6e 64 20 6f 66 20 74 72 61 6e 73 61 63 74 69  ind of transacti
2ef0: 6f 6e 20 61 76 61 69 6c 61 62 6c 65 2e 20 20 46  on available.  F
2f00: 6f 72 20 53 51 4c 69 74 65 0a 76 65 72 73 69 6f  or SQLite.versio
2f10: 6e 20 32 2e 38 20 61 6e 64 20 65 61 72 6c 69 65  n 2.8 and earlie
2f20: 72 2c 20 61 6c 6c 20 74 72 61 6e 73 61 63 74 69  r, all transacti
2f30: 6f 6e 73 20 61 72 65 20 65 78 63 6c 75 73 69 76  ons are exclusiv
2f40: 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65  e..</p>..<p>.The
2f50: 20 43 4f 4d 4d 49 54 20 63 6f 6d 6d 61 6e 64 20   COMMIT command 
2f60: 64 6f 65 73 20 6e 6f 74 20 61 63 74 75 61 6c 6c  does not actuall
2f70: 79 20 70 65 72 66 6f 72 6d 20 61 20 63 6f 6d 6d  y perform a comm
2f80: 69 74 20 75 6e 74 69 6c 20 61 6c 6c 0a 70 65 6e  it until all.pen
2f90: 64 69 6e 67 20 53 51 4c 20 63 6f 6d 6d 61 6e 64  ding SQL command
2fa0: 73 20 66 69 6e 69 73 68 2e 20 20 54 68 75 73 20  s finish.  Thus 
2fb0: 69 66 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20 53  if two or more S
2fc0: 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 73  ELECT statements
2fd0: 0a 61 72 65 20 69 6e 20 74 68 65 20 6d 69 64 64  .are in the midd
2fe0: 6c 65 20 6f 66 20 70 72 6f 63 65 73 73 69 6e 67  le of processing
2ff0: 20 61 6e 64 20 61 20 43 4f 4d 4d 49 54 20 69 73   and a COMMIT is
3000: 20 65 78 65 63 75 74 65 64 2c 20 74 68 65 20 63   executed, the c
3010: 6f 6d 6d 69 74 0a 77 69 6c 6c 20 6e 6f 74 20 61  ommit.will not a
3020: 63 74 75 61 6c 6c 79 20 6f 63 63 75 72 20 75 6e  ctually occur un
3030: 74 69 6c 20 61 6c 6c 20 53 45 4c 45 43 54 20 73  til all SELECT s
3040: 74 61 74 65 6d 65 6e 74 73 20 66 69 6e 69 73 68  tatements finish
3050: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41 6e 20 61  ..</p>..<p>.An a
3060: 74 74 65 6d 70 74 20 74 6f 20 65 78 65 63 75 74  ttempt to execut
3070: 65 20 43 4f 4d 4d 49 54 20 6d 69 67 68 74 20 72  e COMMIT might r
3080: 65 73 75 6c 74 20 69 6e 20 61 6e 20 53 51 4c 49  esult in an SQLI
3090: 54 45 5f 42 55 53 59 20 72 65 74 75 72 6e 20 63  TE_BUSY return c
30a0: 6f 64 65 2e 0a 54 68 69 73 20 69 6e 64 69 63 61  ode..This indica
30b0: 74 65 73 20 74 68 61 74 20 61 6e 6f 74 68 65 72  tes that another
30c0: 20 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63 65   thread or proce
30d0: 73 73 20 68 61 64 20 61 20 72 65 61 64 20 6c 6f  ss had a read lo
30e0: 63 6b 20 6f 6e 20 74 68 65 20 64 61 74 61 62 61  ck on the databa
30f0: 73 65 0a 74 68 61 74 20 70 72 65 76 65 6e 74 65  se.that prevente
3100: 64 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  d the database f
3110: 72 6f 6d 20 62 65 69 6e 67 20 75 70 64 61 74 65  rom being update
3120: 64 2e 20 20 57 68 65 6e 20 43 4f 4d 4d 49 54 20  d.  When COMMIT 
3130: 66 61 69 6c 73 20 69 6e 20 74 68 69 73 0a 77 61  fails in this.wa
3140: 79 2c 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  y, the transacti
3150: 6f 6e 20 72 65 6d 61 69 6e 73 20 61 63 74 69 76  on remains activ
3160: 65 20 61 6e 64 20 74 68 65 20 43 4f 4d 4d 49 54  e and the COMMIT
3170: 20 63 61 6e 20 62 65 20 72 65 74 72 69 65 64 20   can be retried 
3180: 6c 61 74 65 72 0a 61 66 74 65 72 20 74 68 65 20  later.after the 
3190: 72 65 61 64 65 72 20 68 61 73 20 68 61 64 20 61  reader has had a
31a0: 20 63 68 61 6e 63 65 20 74 6f 20 63 6c 65 61 72   chance to clear
31b0: 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  ..</p>.}...Secti
31c0: 6f 6e 20 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65  on comment comme
31d0: 6e 74 0a 0a 53 79 6e 74 61 78 20 7b 63 6f 6d 6d  nt..Syntax {comm
31e0: 65 6e 74 7d 20 7b 3c 53 51 4c 2d 63 6f 6d 6d 65  ent} {<SQL-comme
31f0: 6e 74 3e 20 7c 20 3c 43 2d 63 6f 6d 6d 65 6e 74  nt> | <C-comment
3200: 3e 0a 7d 20 7b 53 51 4c 2d 63 6f 6d 6d 65 6e 74  >.} {SQL-comment
3210: 7d 20 7b 2d 2d 20 3c 73 69 6e 67 6c 65 2d 6c 69  } {-- <single-li
3220: 6e 65 3e 0a 7d 20 7b 43 2d 63 6f 6d 6d 65 6e 74  ne>.} {C-comment
3230: 7d 20 7b 2f 53 54 41 52 20 3c 6d 75 6c 74 69 70  } {/STAR <multip
3240: 6c 65 2d 6c 69 6e 65 73 3e 20 5b 53 54 41 52 2f  le-lines> [STAR/
3250: 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 20  ].}..puts {.<p> 
3260: 43 6f 6d 6d 65 6e 74 73 20 61 72 65 6e 27 74 20  Comments aren't 
3270: 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 2c 20 62 75  SQL commands, bu
3280: 74 20 63 61 6e 20 6f 63 63 75 72 20 69 6e 20 53  t can occur in S
3290: 51 4c 20 71 75 65 72 69 65 73 2e 20 54 68 65 79  QL queries. They
32a0: 20 61 72 65 20 0a 74 72 65 61 74 65 64 20 61 73   are .treated as
32b0: 20 77 68 69 74 65 73 70 61 63 65 20 62 79 20 74   whitespace by t
32c0: 68 65 20 70 61 72 73 65 72 2e 20 20 54 68 65 79  he parser.  They
32d0: 20 63 61 6e 20 62 65 67 69 6e 20 61 6e 79 77 68   can begin anywh
32e0: 65 72 65 20 77 68 69 74 65 73 70 61 63 65 20 0a  ere whitespace .
32f0: 63 61 6e 20 62 65 20 66 6f 75 6e 64 2c 20 69 6e  can be found, in
3300: 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65 20 65  cluding inside e
3310: 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 20  xpressions that 
3320: 73 70 61 6e 20 6d 75 6c 74 69 70 6c 65 20 6c 69  span multiple li
3330: 6e 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 20 53  nes..</p>..<p> S
3340: 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 6f 6e 6c 79  QL comments only
3350: 20 65 78 74 65 6e 64 20 74 6f 20 74 68 65 20 65   extend to the e
3360: 6e 64 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  nd of the curren
3370: 74 20 6c 69 6e 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  t line.</p>..<p>
3380: 20 43 20 63 6f 6d 6d 65 6e 74 73 20 63 61 6e 20   C comments can 
3390: 73 70 61 6e 20 61 6e 79 20 6e 75 6d 62 65 72 20  span any number 
33a0: 6f 66 20 6c 69 6e 65 73 2e 20 20 49 66 20 74 68  of lines.  If th
33b0: 65 72 65 20 69 73 20 6e 6f 20 74 65 72 6d 69 6e  ere is no termin
33c0: 61 74 69 6e 67 0a 64 65 6c 69 6d 69 74 65 72 2c  ating.delimiter,
33d0: 20 74 68 65 79 20 65 78 74 65 6e 64 20 74 6f 20   they extend to 
33e0: 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 69  the end of the i
33f0: 6e 70 75 74 2e 20 20 54 68 69 73 20 69 73 20 6e  nput.  This is n
3400: 6f 74 20 74 72 65 61 74 65 64 20 61 73 0a 61 6e  ot treated as.an
3410: 20 65 72 72 6f 72 2e 20 20 41 20 6e 65 77 20 53   error.  A new S
3420: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 63 61 6e  QL statement can
3430: 20 62 65 67 69 6e 20 6f 6e 20 61 20 6c 69 6e 65   begin on a line
3440: 20 61 66 74 65 72 20 61 20 6d 75 6c 74 69 6c 69   after a multili
3450: 6e 65 0a 63 6f 6d 6d 65 6e 74 20 65 6e 64 73 2e  ne.comment ends.
3460: 20 20 43 20 63 6f 6d 6d 65 6e 74 73 20 63 61 6e    C comments can
3470: 20 62 65 20 65 6d 62 65 64 64 65 64 20 61 6e 79   be embedded any
3480: 77 68 65 72 65 20 77 68 69 74 65 73 70 61 63 65  where whitespace
3490: 20 63 61 6e 20 6f 63 63 75 72 2c 0a 69 6e 63 6c   can occur,.incl
34a0: 75 64 69 6e 67 20 69 6e 73 69 64 65 20 65 78 70  uding inside exp
34b0: 72 65 73 73 69 6f 6e 73 2c 20 61 6e 64 20 69 6e  ressions, and in
34c0: 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 6f   the middle of o
34d0: 74 68 65 72 20 53 51 4c 20 73 74 61 74 65 6d 65  ther SQL stateme
34e0: 6e 74 73 2e 0a 43 20 63 6f 6d 6d 65 6e 74 73 20  nts..C comments 
34f0: 64 6f 20 6e 6f 74 20 6e 65 73 74 2e 20 20 53 51  do not nest.  SQ
3500: 4c 20 63 6f 6d 6d 65 6e 74 73 20 69 6e 73 69 64  L comments insid
3510: 65 20 61 20 43 20 63 6f 6d 6d 65 6e 74 20 77 69  e a C comment wi
3520: 6c 6c 20 62 65 20 69 67 6e 6f 72 65 64 2e 0a 3c  ll be ignored..<
3530: 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20  /p>.}...Section 
3540: 43 4f 50 59 20 63 6f 70 79 0a 0a 53 79 6e 74 61  COPY copy..Synta
3550: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
3560: 7d 20 7b 0a 43 4f 50 59 20 5b 20 4f 52 20 3c 63  } {.COPY [ OR <c
3570: 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68  onflict-algorith
3580: 6d 3e 20 5d 20 5b 3c 64 61 74 61 62 61 73 65 2d  m> ] [<database-
3590: 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d  name> .] <table-
35a0: 6e 61 6d 65 3e 20 46 52 4f 4d 20 3c 66 69 6c 65  name> FROM <file
35b0: 6e 61 6d 65 3e 0a 5b 20 55 53 49 4e 47 20 44 45  name>.[ USING DE
35c0: 4c 49 4d 49 54 45 52 53 20 3c 64 65 6c 69 6d 3e  LIMITERS <delim>
35d0: 20 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e   ].}..puts {.<p>
35e0: 54 68 65 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64  The COPY command
35f0: 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 69 6e   is available in
3600: 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20   SQLite version 
3610: 32 2e 38 20 61 6e 64 20 65 61 72 6c 69 65 72 2e  2.8 and earlier.
3620: 0a 54 68 65 20 43 4f 50 59 20 63 6f 6d 6d 61 6e  .The COPY comman
3630: 64 20 68 61 73 20 62 65 65 6e 20 72 65 6d 6f 76  d has been remov
3640: 65 64 20 66 72 6f 6d 20 53 51 4c 69 74 65 20 76  ed from SQLite v
3650: 65 72 73 69 6f 6e 20 33 2e 30 20 64 75 65 20 74  ersion 3.0 due t
3660: 6f 0a 63 6f 6d 70 6c 69 63 61 74 69 6f 6e 73 20  o.complications 
3670: 69 6e 20 74 72 79 69 6e 67 20 74 6f 20 73 75 70  in trying to sup
3680: 70 6f 72 74 20 69 74 20 69 6e 20 61 20 6d 69 78  port it in a mix
3690: 65 64 20 55 54 46 2d 38 2f 31 36 20 65 6e 76 69  ed UTF-8/16 envi
36a0: 72 6f 6e 6d 65 6e 74 2e 0a 49 6e 20 76 65 72 73  ronment..In vers
36b0: 69 6f 6e 20 33 2e 30 2c 20 74 68 65 20 3c 61 20  ion 3.0, the <a 
36c0: 68 72 65 66 3d 22 73 71 6c 69 74 65 2e 68 74 6d  href="sqlite.htm
36d0: 6c 22 3e 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20  l">command-line 
36e0: 73 68 65 6c 6c 3c 2f 61 3e 0a 63 6f 6e 74 61 69  shell</a>.contai
36f0: 6e 73 20 61 20 6e 65 77 20 63 6f 6d 6d 61 6e 64  ns a new command
3700: 20 3c 62 3e 2e 69 6d 70 6f 72 74 3c 2f 62 3e 20   <b>.import</b> 
3710: 74 68 61 74 20 63 61 6e 20 62 65 20 75 73 65 64  that can be used
3720: 20 61 73 20 61 20 73 75 62 73 74 69 74 75 74 65   as a substitute
3730: 0a 66 6f 72 20 43 4f 50 59 2e 0a 3c 2f 70 3e 0a  .for COPY..</p>.
3740: 0a 3c 70 3e 54 68 65 20 43 4f 50 59 20 63 6f 6d  .<p>The COPY com
3750: 6d 61 6e 64 20 69 73 20 61 6e 20 65 78 74 65 6e  mand is an exten
3760: 73 69 6f 6e 20 75 73 65 64 20 74 6f 20 6c 6f 61  sion used to loa
3770: 64 20 6c 61 72 67 65 20 61 6d 6f 75 6e 74 73 20  d large amounts 
3780: 6f 66 0a 64 61 74 61 20 69 6e 74 6f 20 61 20 74  of.data into a t
3790: 61 62 6c 65 2e 20 20 49 74 20 69 73 20 6d 6f 64  able.  It is mod
37a0: 65 6c 65 64 20 61 66 74 65 72 20 61 20 73 69 6d  eled after a sim
37b0: 69 6c 61 72 20 63 6f 6d 6d 61 6e 64 20 66 6f 75  ilar command fou
37c0: 6e 64 0a 69 6e 20 50 6f 73 74 67 72 65 53 51 4c  nd.in PostgreSQL
37d0: 2e 20 20 49 6e 20 66 61 63 74 2c 20 74 68 65 20  .  In fact, the 
37e0: 53 51 4c 69 74 65 20 43 4f 50 59 20 63 6f 6d 6d  SQLite COPY comm
37f0: 61 6e 64 20 69 73 20 73 70 65 63 69 66 69 63 61  and is specifica
3800: 6c 6c 79 0a 64 65 73 69 67 6e 65 64 20 74 6f 20  lly.designed to 
3810: 62 65 20 61 62 6c 65 20 74 6f 20 72 65 61 64 20  be able to read 
3820: 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20 74 68  the output of th
3830: 65 20 50 6f 73 74 67 72 65 53 51 4c 20 64 75 6d  e PostgreSQL dum
3840: 70 0a 75 74 69 6c 69 74 79 20 3c 62 3e 70 67 5f  p.utility <b>pg_
3850: 64 75 6d 70 3c 2f 62 3e 20 73 6f 20 74 68 61 74  dump</b> so that
3860: 20 64 61 74 61 20 63 61 6e 20 62 65 20 65 61 73   data can be eas
3870: 69 6c 79 20 74 72 61 6e 73 66 65 72 72 65 64 20  ily transferred 
3880: 66 72 6f 6d 0a 50 6f 73 74 67 72 65 53 51 4c 20  from.PostgreSQL 
3890: 69 6e 74 6f 20 53 51 4c 69 74 65 2e 3c 2f 70 3e  into SQLite.</p>
38a0: 0a 0a 3c 70 3e 54 68 65 20 74 61 62 6c 65 2d 6e  ..<p>The table-n
38b0: 61 6d 65 20 69 73 20 74 68 65 20 6e 61 6d 65 20  ame is the name 
38c0: 6f 66 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74  of an existing t
38d0: 61 62 6c 65 20 77 68 69 63 68 20 69 73 20 74 6f  able which is to
38e0: 0a 62 65 20 66 69 6c 6c 65 64 20 77 69 74 68 20  .be filled with 
38f0: 64 61 74 61 2e 20 20 54 68 65 20 66 69 6c 65 6e  data.  The filen
3900: 61 6d 65 20 69 73 20 61 20 73 74 72 69 6e 67 20  ame is a string 
3910: 6f 72 20 69 64 65 6e 74 69 66 69 65 72 20 74 68  or identifier th
3920: 61 74 0a 6e 61 6d 65 73 20 61 20 66 69 6c 65 20  at.names a file 
3930: 66 72 6f 6d 20 77 68 69 63 68 20 64 61 74 61 20  from which data 
3940: 77 69 6c 6c 20 62 65 20 72 65 61 64 2e 20 20 54  will be read.  T
3950: 68 65 20 66 69 6c 65 6e 61 6d 65 20 63 61 6e 20  he filename can 
3960: 62 65 0a 74 68 65 20 3c 62 3e 53 54 44 49 4e 3c  be.the <b>STDIN<
3970: 2f 62 3e 20 74 6f 20 72 65 61 64 20 64 61 74 61  /b> to read data
3980: 20 66 72 6f 6d 20 73 74 61 6e 64 61 72 64 20 69   from standard i
3990: 6e 70 75 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61  nput.</p>..<p>Ea
39a0: 63 68 20 6c 69 6e 65 20 6f 66 20 74 68 65 20 69  ch line of the i
39b0: 6e 70 75 74 20 66 69 6c 65 20 69 73 20 63 6f 6e  nput file is con
39c0: 76 65 72 74 65 64 20 69 6e 74 6f 20 61 20 73 69  verted into a si
39d0: 6e 67 6c 65 20 72 65 63 6f 72 64 0a 69 6e 20 74  ngle record.in t
39e0: 68 65 20 74 61 62 6c 65 2e 20 20 43 6f 6c 75 6d  he table.  Colum
39f0: 6e 73 20 61 72 65 20 73 65 70 61 72 61 74 65 64  ns are separated
3a00: 20 62 79 20 74 61 62 73 2e 20 20 49 66 20 61 20   by tabs.  If a 
3a10: 74 61 62 20 6f 63 63 75 72 73 20 61 73 0a 64 61  tab occurs as.da
3a20: 74 61 20 77 69 74 68 69 6e 20 61 20 63 6f 6c 75  ta within a colu
3a30: 6d 6e 2c 20 74 68 65 6e 20 74 68 61 74 20 74 61  mn, then that ta
3a40: 62 20 69 73 20 70 72 65 63 65 64 65 64 20 62 79  b is preceded by
3a50: 20 61 20 62 61 73 6b 73 6c 61 73 68 20 22 5c 22   a baskslash "\"
3a60: 0a 63 68 61 72 61 63 74 65 72 2e 20 20 41 20 62  .character.  A b
3a70: 61 73 6b 73 6c 61 73 68 20 69 6e 20 74 68 65 20  askslash in the 
3a80: 64 61 74 61 20 61 70 70 65 61 72 73 20 61 73 20  data appears as 
3a90: 74 77 6f 20 62 61 63 6b 73 6c 61 73 68 65 73 20  two backslashes 
3aa0: 69 6e 0a 61 20 72 6f 77 2e 20 20 54 68 65 20 6f  in.a row.  The o
3ab0: 70 74 69 6f 6e 61 6c 20 55 53 49 4e 47 20 44 45  ptional USING DE
3ac0: 4c 49 4d 49 54 45 52 53 20 63 6c 61 75 73 65 20  LIMITERS clause 
3ad0: 63 61 6e 20 73 70 65 63 69 66 79 20 61 20 64 65  can specify a de
3ae0: 6c 69 6d 69 74 65 72 0a 6f 74 68 65 72 20 74 68  limiter.other th
3af0: 61 6e 20 74 61 62 2e 3c 2f 70 3e 0a 0a 3c 70 3e  an tab.</p>..<p>
3b00: 49 66 20 61 20 63 6f 6c 75 6d 6e 20 63 6f 6e 73  If a column cons
3b10: 69 73 74 73 20 6f 66 20 74 68 65 20 63 68 61 72  ists of the char
3b20: 61 63 74 65 72 20 22 5c 4e 22 2c 20 74 68 61 74  acter "\N", that
3b30: 20 63 6f 6c 75 6d 6e 20 69 73 20 66 69 6c 6c 65   column is fille
3b40: 64 0a 77 69 74 68 20 74 68 65 20 76 61 6c 75 65  d.with the value
3b50: 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54   NULL.</p>..<p>T
3b60: 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66  he optional conf
3b70: 6c 69 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f  lict-clause allo
3b80: 77 73 20 74 68 65 20 73 70 65 63 69 66 69 63 61  ws the specifica
3b90: 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72  tion of an alter
3ba0: 6e 61 74 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e  native.constrain
3bb0: 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  t conflict resol
3bc0: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ution algorithm 
3bd0: 74 6f 20 75 73 65 20 66 6f 72 20 74 68 69 73 20  to use for this 
3be0: 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65  one command..See
3bf0: 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74   the section tit
3c00: 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f  led.<a href="#co
3c10: 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c  nflict">ON CONFL
3c20: 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69  ICT</a> for addi
3c30: 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
3c40: 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e  on.</p>..<p>When
3c50: 20 74 68 65 20 69 6e 70 75 74 20 64 61 74 61 20   the input data 
3c60: 73 6f 75 72 63 65 20 69 73 20 53 54 44 49 4e 2c  source is STDIN,
3c70: 20 74 68 65 20 69 6e 70 75 74 20 63 61 6e 20 62   the input can b
3c80: 65 20 74 65 72 6d 69 6e 61 74 65 64 0a 62 79 20  e terminated.by 
3c90: 61 20 6c 69 6e 65 20 74 68 61 74 20 63 6f 6e 74  a line that cont
3ca0: 61 69 6e 73 20 6f 6e 6c 79 20 61 20 62 61 73 6b  ains only a bask
3cb0: 73 6c 61 73 68 20 61 6e 64 20 61 20 64 6f 74 3a  slash and a dot:
3cc0: 7d 0a 70 75 74 73 20 22 5c 22 5b 4f 70 65 72 61  }.puts "\"[Opera
3cd0: 74 6f 72 20 5c 5c 2e 5d 5c 22 2e 3c 2f 70 3e 22  tor \\.]\".</p>"
3ce0: 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41  ...Section {CREA
3cf0: 54 45 20 49 4e 44 45 58 7d 20 63 72 65 61 74 65  TE INDEX} create
3d00: 69 6e 64 65 78 0a 0a 53 79 6e 74 61 78 20 7b 73  index..Syntax {s
3d10: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
3d20: 43 52 45 41 54 45 20 5b 55 4e 49 51 55 45 5d 20  CREATE [UNIQUE] 
3d30: 49 4e 44 45 58 20 5b 49 46 20 4e 4f 54 20 45 58  INDEX [IF NOT EX
3d40: 49 53 54 53 5d 20 5b 3c 64 61 74 61 62 61 73 65  ISTS] [<database
3d50: 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 69 6e 64 65 78  -name> .] <index
3d60: 2d 6e 61 6d 65 3e 20 0a 4f 4e 20 3c 74 61 62 6c  -name> .ON <tabl
3d70: 65 2d 6e 61 6d 65 3e 20 28 20 3c 63 6f 6c 75 6d  e-name> ( <colum
3d80: 6e 2d 6e 61 6d 65 3e 20 5b 2c 20 3c 63 6f 6c 75  n-name> [, <colu
3d90: 6d 6e 2d 6e 61 6d 65 3e 5d 2a 20 29 0a 7d 20 7b  mn-name>]* ).} {
3da0: 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 7d 20 7b 0a 3c  column-name} {.<
3db0: 6e 61 6d 65 3e 20 5b 20 43 4f 4c 4c 41 54 45 20  name> [ COLLATE 
3dc0: 3c 63 6f 6c 6c 61 74 69 6f 6e 2d 6e 61 6d 65 3e  <collation-name>
3dd0: 5d 20 5b 20 41 53 43 20 7c 20 44 45 53 43 20 5d  ] [ ASC | DESC ]
3de0: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
3df0: 65 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 63  e CREATE INDEX c
3e00: 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74 73 20  ommand consists 
3e10: 6f 66 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20  of the keywords 
3e20: 22 43 52 45 41 54 45 20 49 4e 44 45 58 22 20 66  "CREATE INDEX" f
3e30: 6f 6c 6c 6f 77 65 64 0a 62 79 20 74 68 65 20 6e  ollowed.by the n
3e40: 61 6d 65 20 6f 66 20 74 68 65 20 6e 65 77 20 69  ame of the new i
3e50: 6e 64 65 78 2c 20 74 68 65 20 6b 65 79 77 6f 72  ndex, the keywor
3e60: 64 20 22 4f 4e 22 2c 20 74 68 65 20 6e 61 6d 65  d "ON", the name
3e70: 20 6f 66 20 61 20 70 72 65 76 69 6f 75 73 6c 79   of a previously
3e80: 0a 63 72 65 61 74 65 64 20 74 61 62 6c 65 20 74  .created table t
3e90: 68 61 74 20 69 73 20 74 6f 20 62 65 20 69 6e 64  hat is to be ind
3ea0: 65 78 65 64 2c 20 61 6e 64 20 61 20 70 61 72 65  exed, and a pare
3eb0: 6e 74 68 65 73 69 7a 65 64 20 6c 69 73 74 20 6f  nthesized list o
3ec0: 66 20 6e 61 6d 65 73 20 6f 66 0a 63 6f 6c 75 6d  f names of.colum
3ed0: 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20  ns in the table 
3ee0: 74 68 61 74 20 61 72 65 20 75 73 65 64 20 66 6f  that are used fo
3ef0: 72 20 74 68 65 20 69 6e 64 65 78 20 6b 65 79 2e  r the index key.
3f00: 0a 45 61 63 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d  .Each column nam
3f10: 65 20 63 61 6e 20 62 65 20 66 6f 6c 6c 6f 77 65  e can be followe
3f20: 64 20 62 79 20 6f 6e 65 20 6f 66 20 74 68 65 20  d by one of the 
3f30: 22 41 53 43 22 20 6f 72 20 22 44 45 53 43 22 20  "ASC" or "DESC" 
3f40: 6b 65 79 77 6f 72 64 73 0a 74 6f 20 69 6e 64 69  keywords.to indi
3f50: 63 61 74 65 20 73 6f 72 74 20 6f 72 64 65 72 2c  cate sort order,
3f60: 20 62 75 74 20 74 68 65 20 73 6f 72 74 20 6f 72   but the sort or
3f70: 64 65 72 20 69 73 20 69 67 6e 6f 72 65 64 20 69  der is ignored i
3f80: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0a 69 6d  n the current.im
3f90: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 53  plementation.  S
3fa0: 6f 72 74 69 6e 67 20 69 73 20 61 6c 77 61 79 73  orting is always
3fb0: 20 64 6f 6e 65 20 69 6e 20 61 73 63 65 6e 64 69   done in ascendi
3fc0: 6e 67 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c  ng order.</p>..<
3fd0: 70 3e 54 68 65 20 43 4f 4c 4c 41 54 45 20 63 6c  p>The COLLATE cl
3fe0: 61 75 73 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 65  ause following e
3ff0: 61 63 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20  ach column name 
4000: 64 65 66 69 6e 65 73 20 61 20 63 6f 6c 6c 61 74  defines a collat
4010: 69 6e 67 0a 73 65 71 75 65 6e 63 65 20 75 73 65  ing.sequence use
4020: 64 20 66 6f 72 20 74 65 78 74 20 65 6e 74 69 72  d for text entir
4030: 65 73 20 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d  es in that colum
4040: 6e 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20  n.  The default 
4050: 63 6f 6c 6c 61 74 69 6e 67 0a 73 65 71 75 65 6e  collating.sequen
4060: 63 65 20 69 73 20 74 68 65 20 63 6f 6c 6c 61 74  ce is the collat
4070: 69 6e 67 20 73 65 71 75 65 6e 63 65 20 64 65 66  ing sequence def
4080: 69 6e 65 64 20 66 6f 72 20 74 68 61 74 20 63 6f  ined for that co
4090: 6c 75 6d 6e 20 69 6e 20 74 68 65 0a 43 52 45 41  lumn in the.CREA
40a0: 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  TE TABLE stateme
40b0: 6e 74 2e 20 20 4f 72 20 69 66 20 6e 6f 20 63 6f  nt.  Or if no co
40c0: 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65  llating sequence
40d0: 20 69 73 20 6f 74 68 65 72 77 69 73 65 20 64 65   is otherwise de
40e0: 66 69 6e 65 64 2c 0a 74 68 65 20 62 75 69 6c 74  fined,.the built
40f0: 2d 69 6e 20 42 49 4e 41 52 59 20 63 6f 6c 6c 61  -in BINARY colla
4100: 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69 73  ting sequence is
4110: 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54   used.</p>..<p>T
4120: 68 65 72 65 20 61 72 65 20 6e 6f 20 61 72 62 69  here are no arbi
4130: 74 72 61 72 79 20 6c 69 6d 69 74 73 20 6f 6e 20  trary limits on 
4140: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e  the number of in
4150: 64 69 63 65 73 20 74 68 61 74 20 63 61 6e 20 62  dices that can b
4160: 65 0a 61 74 74 61 63 68 65 64 20 74 6f 20 61 20  e.attached to a 
4170: 73 69 6e 67 6c 65 20 74 61 62 6c 65 2c 20 6e 6f  single table, no
4180: 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  r on the number 
4190: 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 61 6e  of columns in an
41a0: 20 69 6e 64 65 78 2e 3c 2f 70 3e 0a 0a 3c 70 3e   index.</p>..<p>
41b0: 49 66 20 74 68 65 20 55 4e 49 51 55 45 20 6b 65  If the UNIQUE ke
41c0: 79 77 6f 72 64 20 61 70 70 65 61 72 73 20 62 65  yword appears be
41d0: 74 77 65 65 6e 20 43 52 45 41 54 45 20 61 6e 64  tween CREATE and
41e0: 20 49 4e 44 45 58 20 74 68 65 6e 20 64 75 70 6c   INDEX then dupl
41f0: 69 63 61 74 65 0a 69 6e 64 65 78 20 65 6e 74 72  icate.index entr
4200: 69 65 73 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f  ies are not allo
4210: 77 65 64 2e 20 20 41 6e 79 20 61 74 74 65 6d 70  wed.  Any attemp
4220: 74 20 74 6f 20 69 6e 73 65 72 74 20 61 20 64 75  t to insert a du
4230: 70 6c 69 63 61 74 65 20 65 6e 74 72 79 0a 77 69  plicate entry.wi
4240: 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20  ll result in an 
4250: 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  error.</p>..<p>T
4260: 68 65 20 65 78 61 63 74 20 74 65 78 74 0a 6f 66  he exact text.of
4270: 20 65 61 63 68 20 43 52 45 41 54 45 20 49 4e 44   each CREATE IND
4280: 45 58 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  EX statement is 
4290: 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 3c 62  stored in the <b
42a0: 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f  >sqlite_master</
42b0: 62 3e 0a 6f 72 20 3c 62 3e 73 71 6c 69 74 65 5f  b>.or <b>sqlite_
42c0: 74 65 6d 70 5f 6d 61 73 74 65 72 3c 2f 62 3e 20  temp_master</b> 
42d0: 74 61 62 6c 65 2c 20 64 65 70 65 6e 64 69 6e 67  table, depending
42e0: 20 6f 6e 20 77 68 65 74 68 65 72 20 74 68 65 20   on whether the 
42f0: 74 61 62 6c 65 0a 62 65 69 6e 67 20 69 6e 64 65  table.being inde
4300: 78 65 64 20 69 73 20 74 65 6d 70 6f 72 61 72 79  xed is temporary
4310: 2e 20 20 45 76 65 72 79 20 74 69 6d 65 20 74 68  .  Every time th
4320: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70  e database is op
4330: 65 6e 65 64 2c 0a 61 6c 6c 20 43 52 45 41 54 45  ened,.all CREATE
4340: 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74   INDEX statement
4350: 73 0a 61 72 65 20 72 65 61 64 20 66 72 6f 6d 20  s.are read from 
4360: 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61  the <b>sqlite_ma
4370: 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61  ster</b> table a
4380: 6e 64 20 75 73 65 64 20 74 6f 20 72 65 67 65 6e  nd used to regen
4390: 65 72 61 74 65 0a 53 51 4c 69 74 65 27 73 20 69  erate.SQLite's i
43a0: 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73 65 6e  nternal represen
43b0: 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e  tation of the in
43c0: 64 65 78 20 6c 61 79 6f 75 74 2e 3c 2f 70 3e 0a  dex layout.</p>.
43d0: 0a 3c 70 3e 49 66 20 74 68 65 20 6f 70 74 69 6f  .<p>If the optio
43e0: 6e 61 6c 20 49 46 20 4e 4f 54 20 45 58 49 53 54  nal IF NOT EXIST
43f0: 53 20 63 6c 61 75 73 65 20 69 73 20 70 72 65 73  S clause is pres
4400: 65 6e 74 20 61 6e 64 20 61 6e 6f 74 68 65 72 20  ent and another 
4410: 69 6e 64 65 78 0a 77 69 74 68 20 74 68 65 20 73  index.with the s
4420: 61 6d 65 20 6e 61 6d 65 20 61 6c 65 61 64 79 20  ame name aleady 
4430: 65 78 69 73 74 73 2c 20 74 68 65 6e 20 74 68 69  exists, then thi
4440: 73 20 63 6f 6d 6d 61 6e 64 20 62 65 63 6f 6d 65  s command become
4450: 73 20 61 20 6e 6f 2d 6f 70 2e 3c 2f 70 3e 0a 0a  s a no-op.</p>..
4460: 3c 70 3e 49 6e 64 65 78 65 73 20 61 72 65 20 72  <p>Indexes are r
4470: 65 6d 6f 76 65 64 20 77 69 74 68 20 74 68 65 20  emoved with the 
4480: 3c 61 20 68 72 65 66 3d 22 23 64 72 6f 70 69 6e  <a href="#dropin
4490: 64 65 78 22 3e 44 52 4f 50 20 49 4e 44 45 58 3c  dex">DROP INDEX<
44a0: 2f 61 3e 20 0a 63 6f 6d 6d 61 6e 64 2e 3c 2f 70  /a> .command.</p
44b0: 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 43  >.}...Section {C
44c0: 52 45 41 54 45 20 54 41 42 4c 45 7d 20 7b 63 72  REATE TABLE} {cr
44d0: 65 61 74 65 74 61 62 6c 65 7d 0a 0a 53 79 6e 74  eatetable}..Synt
44e0: 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d  ax {sql-command}
44f0: 20 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d 50 20   {.CREATE [TEMP 
4500: 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20 54 41 42  | TEMPORARY] TAB
4510: 4c 45 20 5b 49 46 20 4e 4f 54 20 45 58 49 53 54  LE [IF NOT EXIST
4520: 53 5d 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  S] [<database-na
4530: 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61  me> .] <table-na
4540: 6d 65 3e 20 28 0a 20 20 3c 63 6f 6c 75 6d 6e 2d  me> (.  <column-
4550: 64 65 66 3e 20 5b 2c 20 3c 63 6f 6c 75 6d 6e 2d  def> [, <column-
4560: 64 65 66 3e 5d 2a 0a 20 20 5b 2c 20 3c 63 6f 6e  def>]*.  [, <con
4570: 73 74 72 61 69 6e 74 3e 5d 2a 0a 29 0a 7d 20 7b  straint>]*.).} {
4580: 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43  sql-command} {.C
4590: 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45  REATE [TEMP | TE
45a0: 4d 50 4f 52 41 52 59 5d 20 54 41 42 4c 45 20 5b  MPORARY] TABLE [
45b0: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 2e  <database-name>.
45c0: 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 41  ] <table-name> A
45d0: 53 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d  S <select-statem
45e0: 65 6e 74 3e 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 64  ent>.} {column-d
45f0: 65 66 7d 20 7b 0a 3c 6e 61 6d 65 3e 20 5b 3c 74  ef} {.<name> [<t
4600: 79 70 65 3e 5d 20 5b 5b 43 4f 4e 53 54 52 41 49  ype>] [[CONSTRAI
4610: 4e 54 20 3c 6e 61 6d 65 3e 5d 20 3c 63 6f 6c 75  NT <name>] <colu
4620: 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e 74 3e 5d 2a  mn-constraint>]*
4630: 0a 7d 20 7b 74 79 70 65 7d 20 7b 0a 3c 74 79 70  .} {type} {.<typ
4640: 65 6e 61 6d 65 3e 20 7c 0a 3c 74 79 70 65 6e 61  ename> |.<typena
4650: 6d 65 3e 20 28 20 3c 6e 75 6d 62 65 72 3e 20 29  me> ( <number> )
4660: 20 7c 0a 3c 74 79 70 65 6e 61 6d 65 3e 20 28 20   |.<typename> ( 
4670: 3c 6e 75 6d 62 65 72 3e 20 2c 20 3c 6e 75 6d 62  <number> , <numb
4680: 65 72 3e 20 29 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d  er> ).} {column-
4690: 63 6f 6e 73 74 72 61 69 6e 74 7d 20 7b 0a 4e 4f  constraint} {.NO
46a0: 54 20 4e 55 4c 4c 20 5b 20 3c 63 6f 6e 66 6c 69  T NULL [ <confli
46b0: 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 50  ct-clause> ] |.P
46c0: 52 49 4d 41 52 59 20 4b 45 59 20 5b 3c 73 6f 72  RIMARY KEY [<sor
46d0: 74 2d 6f 72 64 65 72 3e 5d 20 5b 20 3c 63 6f 6e  t-order>] [ <con
46e0: 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20  flict-clause> ] 
46f0: 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d 20  [AUTOINCREMENT] 
4700: 7c 0a 55 4e 49 51 55 45 20 5b 20 3c 63 6f 6e 66  |.UNIQUE [ <conf
4710: 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c  lict-clause> ] |
4720: 0a 43 48 45 43 4b 20 28 20 3c 65 78 70 72 3e 20  .CHECK ( <expr> 
4730: 29 20 7c 0a 44 45 46 41 55 4c 54 20 3c 76 61 6c  ) |.DEFAULT <val
4740: 75 65 3e 20 7c 0a 43 4f 4c 4c 41 54 45 20 3c 63  ue> |.COLLATE <c
4750: 6f 6c 6c 61 74 69 6f 6e 2d 6e 61 6d 65 3e 0a 7d  ollation-name>.}
4760: 20 7b 63 6f 6e 73 74 72 61 69 6e 74 7d 20 7b 0a   {constraint} {.
4770: 50 52 49 4d 41 52 59 20 4b 45 59 20 28 20 3c 63  PRIMARY KEY ( <c
4780: 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 20 5b 20  olumn-list> ) [ 
4790: 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65  <conflict-clause
47a0: 3e 20 5d 20 7c 0a 55 4e 49 51 55 45 20 28 20 3c  > ] |.UNIQUE ( <
47b0: 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 20 5b  column-list> ) [
47c0: 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73   <conflict-claus
47d0: 65 3e 20 5d 20 7c 0a 43 48 45 43 4b 20 28 20 3c  e> ] |.CHECK ( <
47e0: 65 78 70 72 3e 20 29 0a 7d 20 7b 63 6f 6e 66 6c  expr> ).} {confl
47f0: 69 63 74 2d 63 6c 61 75 73 65 7d 20 7b 0a 4f 4e  ict-clause} {.ON
4800: 20 43 4f 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c   CONFLICT <confl
4810: 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 0a 7d  ict-algorithm>.}
4820: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 41 20 43 52  ..puts {.<p>A CR
4830: 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65  EATE TABLE state
4840: 6d 65 6e 74 20 69 73 20 62 61 73 69 63 61 6c 6c  ment is basicall
4850: 79 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22  y the keywords "
4860: 43 52 45 41 54 45 20 54 41 42 4c 45 22 0a 66 6f  CREATE TABLE".fo
4870: 6c 6c 6f 77 65 64 20 62 79 20 74 68 65 20 6e 61  llowed by the na
4880: 6d 65 20 6f 66 20 61 20 6e 65 77 20 74 61 62 6c  me of a new tabl
4890: 65 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68 65  e and a parenthe
48a0: 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 63 6f  sized list of co
48b0: 6c 75 6d 6e 0a 64 65 66 69 6e 69 74 69 6f 6e 73  lumn.definitions
48c0: 20 61 6e 64 20 63 6f 6e 73 74 72 61 69 6e 74 73   and constraints
48d0: 2e 20 20 54 68 65 20 74 61 62 6c 65 20 6e 61 6d  .  The table nam
48e0: 65 20 63 61 6e 20 62 65 20 65 69 74 68 65 72 20  e can be either 
48f0: 61 6e 20 69 64 65 6e 74 69 66 69 65 72 0a 6f 72  an identifier.or
4900: 20 61 20 73 74 72 69 6e 67 2e 20 20 54 61 62 6c   a string.  Tabl
4910: 65 73 20 6e 61 6d 65 73 20 74 68 61 74 20 62 65  es names that be
4920: 67 69 6e 20 77 69 74 68 20 22 3c 62 3e 73 71 6c  gin with "<b>sql
4930: 69 74 65 5f 3c 2f 62 3e 22 20 61 72 65 20 72 65  ite_</b>" are re
4940: 73 65 72 76 65 64 0a 66 6f 72 20 75 73 65 20 62  served.for use b
4950: 79 20 74 68 65 20 65 6e 67 69 6e 65 2e 3c 2f 70  y the engine.</p
4960: 3e 0a 0a 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d  >..<p>Each colum
4970: 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 69 73 20  n definition is 
4980: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
4990: 63 6f 6c 75 6d 6e 20 66 6f 6c 6c 6f 77 65 64 20  column followed 
49a0: 62 79 20 74 68 65 0a 64 61 74 61 74 79 70 65 20  by the.datatype 
49b0: 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c  for that column,
49c0: 20 74 68 65 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72   then one or mor
49d0: 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6c 75 6d  e optional colum
49e0: 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 54  n constraints..T
49f0: 68 65 20 64 61 74 61 74 79 70 65 20 66 6f 72 20  he datatype for 
4a00: 74 68 65 20 63 6f 6c 75 6d 6e 20 64 6f 65 73 20  the column does 
4a10: 6e 6f 74 20 72 65 73 74 72 69 63 74 20 77 68 61  not restrict wha
4a20: 74 20 64 61 74 61 20 6d 61 79 20 62 65 20 70 75  t data may be pu
4a30: 74 0a 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e  t.in that column
4a40: 2e 0a 53 65 65 20 3c 61 20 68 72 65 66 3d 22 64  ..See <a href="d
4a50: 61 74 61 74 79 70 65 33 2e 68 74 6d 6c 22 3e 44  atatype3.html">D
4a60: 61 74 61 74 79 70 65 73 20 49 6e 20 53 51 4c 69  atatypes In SQLi
4a70: 74 65 20 56 65 72 73 69 6f 6e 20 33 3c 2f 61 3e  te Version 3</a>
4a80: 20 66 6f 72 0a 61 64 64 69 74 69 6f 6e 61 6c 20   for.additional 
4a90: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 54 68 65  information..The
4aa0: 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69   UNIQUE constrai
4ab0: 6e 74 20 63 61 75 73 65 73 20 61 6e 20 69 6e 64  nt causes an ind
4ac0: 65 78 20 74 6f 20 62 65 20 63 72 65 61 74 65 64  ex to be created
4ad0: 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69 65   on the specifie
4ae0: 64 0a 63 6f 6c 75 6d 6e 73 2e 20 20 54 68 69 73  d.columns.  This
4af0: 20 69 6e 64 65 78 20 6d 75 73 74 20 63 6f 6e 74   index must cont
4b00: 61 69 6e 20 75 6e 69 71 75 65 20 6b 65 79 73 2e  ain unique keys.
4b10: 0a 54 68 65 20 43 4f 4c 4c 41 54 45 20 63 6c 61  .The COLLATE cla
4b20: 75 73 65 20 73 70 65 63 69 66 69 65 73 20 77 68  use specifies wh
4b30: 61 74 20 74 65 78 74 20 3c 61 20 68 72 65 66 3d  at text <a href=
4b40: 22 64 61 74 61 74 79 70 65 33 2e 68 74 6d 6c 23  "datatype3.html#
4b50: 63 6f 6c 6c 61 74 69 6f 6e 22 3e 0a 63 6f 6c 6c  collation">.coll
4b60: 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 3c 2f  ating function</
4b70: 61 3e 20 74 6f 20 75 73 65 20 77 68 65 6e 20 63  a> to use when c
4b80: 6f 6d 70 61 72 69 6e 67 20 74 65 78 74 20 65 6e  omparing text en
4b90: 74 72 69 65 73 20 66 6f 72 20 74 68 65 20 63 6f  tries for the co
4ba0: 6c 75 6d 6e 2e 20 20 0a 54 68 65 20 62 75 69 6c  lumn.  .The buil
4bb0: 74 2d 69 6e 20 42 49 4e 41 52 59 20 63 6f 6c 6c  t-in BINARY coll
4bc0: 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 69  ating function i
4bd0: 73 20 75 73 65 64 20 62 79 20 64 65 66 61 75 6c  s used by defaul
4be0: 74 2e 0a 3c 70 3e 0a 54 68 65 20 44 45 46 41 55  t..<p>.The DEFAU
4bf0: 4c 54 20 63 6f 6e 73 74 72 61 69 6e 74 20 73 70  LT constraint sp
4c00: 65 63 69 66 69 65 73 20 61 20 64 65 66 61 75 6c  ecifies a defaul
4c10: 74 20 76 61 6c 75 65 20 74 6f 20 75 73 65 20 77  t value to use w
4c20: 68 65 6e 20 64 6f 69 6e 67 20 61 6e 20 49 4e 53  hen doing an INS
4c30: 45 52 54 2e 0a 54 68 65 20 76 61 6c 75 65 20 6d  ERT..The value m
4c40: 61 79 20 62 65 20 4e 55 4c 4c 2c 20 61 20 73 74  ay be NULL, a st
4c50: 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 6f 72  ring constant or
4c60: 20 61 20 6e 75 6d 62 65 72 2e 20 53 74 61 72 74   a number. Start
4c70: 69 6e 67 20 77 69 74 68 20 76 65 72 73 69 6f 6e  ing with version
4c80: 0a 33 2e 31 2e 30 2c 20 74 68 65 20 64 65 66 61  .3.1.0, the defa
4c90: 75 6c 74 20 76 61 6c 75 65 20 6d 61 79 20 61 6c  ult value may al
4ca0: 73 6f 20 62 65 20 6f 6e 65 20 6f 66 20 74 68 65  so be one of the
4cb0: 20 73 70 65 63 69 61 6c 20 63 61 73 65 2d 69 6e   special case-in
4cc0: 64 65 70 65 6e 64 61 6e 74 0a 6b 65 79 77 6f 72  dependant.keywor
4cd0: 64 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c  ds CURRENT_TIME,
4ce0: 20 43 55 52 52 45 4e 54 5f 44 41 54 45 20 6f 72   CURRENT_DATE or
4cf0: 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41   CURRENT_TIMESTA
4d00: 4d 50 2e 20 49 66 20 74 68 65 20 76 61 6c 75 65  MP. If the value
4d10: 20 69 73 0a 4e 55 4c 4c 2c 20 61 20 73 74 72 69   is.NULL, a stri
4d20: 6e 67 20 63 6f 6e 73 74 61 6e 74 20 6f 72 20 6e  ng constant or n
4d30: 75 6d 62 65 72 2c 20 69 74 20 69 73 20 6c 69 74  umber, it is lit
4d40: 65 72 61 6c 6c 79 20 69 6e 73 65 72 74 65 64 20  erally inserted 
4d50: 69 6e 74 6f 20 74 68 65 20 63 6f 6c 75 6d 6e 0a  into the column.
4d60: 77 68 65 6e 65 76 65 72 20 61 6e 20 49 4e 53 45  whenever an INSE
4d70: 52 54 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61  RT statement tha
4d80: 74 20 64 6f 65 73 20 6e 6f 74 20 73 70 65 63 69  t does not speci
4d90: 66 79 20 61 20 76 61 6c 75 65 20 66 6f 72 20 74  fy a value for t
4da0: 68 65 20 63 6f 6c 75 6d 6e 20 69 73 0a 65 78 65  he column is.exe
4db0: 63 75 74 65 64 2e 20 49 66 20 74 68 65 20 76 61  cuted. If the va
4dc0: 6c 75 65 20 69 73 20 43 55 52 52 45 4e 54 5f 54  lue is CURRENT_T
4dd0: 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54  IME, CURRENT_DAT
4de0: 45 20 6f 72 20 43 55 52 52 45 4e 54 5f 54 49 4d  E or CURRENT_TIM
4df0: 45 53 54 41 4d 50 2c 20 74 68 65 6e 0a 74 68 65  ESTAMP, then.the
4e00: 20 63 75 72 72 65 6e 74 20 55 54 43 20 64 61 74   current UTC dat
4e10: 65 20 61 6e 64 2f 6f 72 20 74 69 6d 65 20 69 73  e and/or time is
4e20: 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 20 74   inserted into t
4e30: 68 65 20 63 6f 6c 75 6d 6e 73 2e 20 46 6f 72 0a  he columns. For.
4e40: 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 74 68  CURRENT_TIME, th
4e50: 65 20 66 6f 72 6d 61 74 20 69 73 20 48 48 3a 4d  e format is HH:M
4e60: 4d 3a 53 53 2e 20 46 6f 72 20 43 55 52 52 45 4e  M:SS. For CURREN
4e70: 54 5f 44 41 54 45 2c 20 59 59 59 59 2d 4d 4d 2d  T_DATE, YYYY-MM-
4e80: 44 44 2e 20 54 68 65 20 66 6f 72 6d 61 74 0a 66  DD. The format.f
4e90: 6f 72 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53  or CURRENT_TIMES
4ea0: 54 41 4d 50 20 69 73 20 22 59 59 59 59 2d 4d 4d  TAMP is "YYYY-MM
4eb0: 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 22 2e 0a 3c  -DD HH:MM:SS"..<
4ec0: 2f 70 3e 0a 0a 3c 70 3e 53 70 65 63 69 66 79 69  /p>..<p>Specifyi
4ed0: 6e 67 20 61 20 50 52 49 4d 41 52 59 20 4b 45 59  ng a PRIMARY KEY
4ee0: 20 6e 6f 72 6d 61 6c 6c 79 20 6a 75 73 74 20 63   normally just c
4ef0: 72 65 61 74 65 73 20 61 20 55 4e 49 51 55 45 20  reates a UNIQUE 
4f00: 69 6e 64 65 78 0a 6f 6e 20 74 68 65 20 63 6f 72  index.on the cor
4f10: 72 65 73 70 6f 6e 64 69 6e 67 20 63 6f 6c 75 6d  responding colum
4f20: 6e 73 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 66  ns.  However, if
4f30: 20 70 72 69 6d 61 72 79 20 6b 65 79 20 69 73 20   primary key is 
4f40: 6f 6e 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75  on a single colu
4f50: 6d 6e 0a 74 68 61 74 20 68 61 73 20 64 61 74 61  mn.that has data
4f60: 74 79 70 65 20 49 4e 54 45 47 45 52 2c 20 74 68  type INTEGER, th
4f70: 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69  en that column i
4f80: 73 20 75 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c  s used internall
4f90: 79 0a 61 73 20 74 68 65 20 61 63 74 75 61 6c 20  y.as the actual 
4fa0: 6b 65 79 20 6f 66 20 74 68 65 20 42 2d 54 72 65  key of the B-Tre
4fb0: 65 20 66 6f 72 20 74 68 65 20 74 61 62 6c 65 2e  e for the table.
4fc0: 20 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61    This means tha
4fd0: 74 20 74 68 65 20 63 6f 6c 75 6d 6e 0a 6d 61 79  t the column.may
4fe0: 20 6f 6e 6c 79 20 68 6f 6c 64 20 75 6e 69 71 75   only hold uniqu
4ff0: 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 73  e integer values
5000: 2e 20 20 28 45 78 63 65 70 74 20 66 6f 72 20 74  .  (Except for t
5010: 68 69 73 20 6f 6e 65 20 63 61 73 65 2c 0a 53 51  his one case,.SQ
5020: 4c 69 74 65 20 69 67 6e 6f 72 65 73 20 74 68 65  Lite ignores the
5030: 20 64 61 74 61 74 79 70 65 20 73 70 65 63 69 66   datatype specif
5040: 69 63 61 74 69 6f 6e 20 6f 66 20 63 6f 6c 75 6d  ication of colum
5050: 6e 73 20 61 6e 64 20 61 6c 6c 6f 77 73 0a 61 6e  ns and allows.an
5060: 79 20 6b 69 6e 64 20 6f 66 20 64 61 74 61 20 74  y kind of data t
5070: 6f 20 62 65 20 70 75 74 20 69 6e 20 61 20 63 6f  o be put in a co
5080: 6c 75 6d 6e 20 72 65 67 61 72 64 6c 65 73 73 20  lumn regardless 
5090: 6f 66 20 69 74 73 20 64 65 63 6c 61 72 65 64 0a  of its declared.
50a0: 64 61 74 61 74 79 70 65 2e 29 20 20 49 66 20 61  datatype.)  If a
50b0: 20 74 61 62 6c 65 20 64 6f 65 73 20 6e 6f 74 20   table does not 
50c0: 68 61 76 65 20 61 6e 20 49 4e 54 45 47 45 52 20  have an INTEGER 
50d0: 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75  PRIMARY KEY colu
50e0: 6d 6e 2c 0a 74 68 65 6e 20 74 68 65 20 42 2d 54  mn,.then the B-T
50f0: 72 65 65 20 6b 65 79 20 77 69 6c 6c 20 62 65 20  ree key will be 
5100: 61 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  a automatically 
5110: 67 65 6e 65 72 61 74 65 64 20 69 6e 74 65 67 65  generated intege
5120: 72 2e 20 20 54 68 65 0a 42 2d 54 72 65 65 20 6b  r.  The.B-Tree k
5130: 65 79 20 66 6f 72 20 61 20 72 6f 77 20 63 61 6e  ey for a row can
5140: 20 61 6c 77 61 79 73 20 62 65 20 61 63 63 65 73   always be acces
5150: 73 65 64 20 75 73 69 6e 67 20 6f 6e 65 20 6f 66  sed using one of
5160: 20 74 68 65 0a 73 70 65 63 69 61 6c 20 6e 61 6d   the.special nam
5170: 65 73 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e  es "<b>ROWID</b>
5180: 22 2c 20 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c  ", "<b>OID</b>",
5190: 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c   or "<b>_ROWID_<
51a0: 2f 62 3e 22 2e 0a 54 68 69 73 20 69 73 20 74 72  /b>"..This is tr
51b0: 75 65 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66  ue regardless of
51c0: 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20   whether or not 
51d0: 74 68 65 72 65 20 69 73 20 61 6e 20 49 4e 54 45  there is an INTE
51e0: 47 45 52 0a 50 52 49 4d 41 52 59 20 4b 45 59 2e  GER.PRIMARY KEY.
51f0: 20 20 41 6e 20 49 4e 54 45 47 45 52 20 50 52 49    An INTEGER PRI
5200: 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20  MARY KEY column 
5210: 63 61 6e 20 61 6c 73 6f 20 69 6e 63 6c 75 64 65  can also include
5220: 20 74 68 65 0a 6b 65 79 77 6f 72 64 20 41 55 54   the.keyword AUT
5230: 4f 49 4e 43 52 45 4d 45 4e 54 2e 20 20 54 68 65  OINCREMENT.  The
5240: 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 20 6b   AUTOINCREMENT k
5250: 65 79 77 6f 72 64 20 6d 6f 64 69 66 69 65 64 20  eyword modified 
5260: 74 68 65 20 77 61 79 0a 74 68 61 74 20 42 2d 54  the way.that B-T
5270: 72 65 65 20 6b 65 79 73 20 61 72 65 20 61 75 74  ree keys are aut
5280: 6f 6d 61 74 69 63 61 6c 6c 79 20 67 65 6e 65 72  omatically gener
5290: 61 74 65 64 2e 20 20 41 64 64 69 74 69 6f 6e 61  ated.  Additiona
52a0: 6c 20 64 65 74 61 69 6c 0a 6f 6e 20 61 75 74 6f  l detail.on auto
52b0: 6d 61 74 69 63 20 42 2d 54 72 65 65 20 6b 65 79  matic B-Tree key
52c0: 20 67 65 6e 65 72 61 74 69 6f 6e 20 69 73 20 61   generation is a
52d0: 76 61 69 6c 61 62 6c 65 0a 3c 61 20 68 72 65 66  vailable.<a href
52e0: 3d 22 61 75 74 6f 69 6e 63 2e 68 74 6d 6c 22 3e  ="autoinc.html">
52f0: 73 65 70 61 72 61 74 65 6c 79 3c 2f 61 3e 2e 3c  separately</a>.<
5300: 2f 70 3e 0a 0a 3c 70 3e 41 63 63 6f 72 64 69 6e  /p>..<p>Accordin
5310: 67 20 74 6f 20 74 68 65 20 53 51 4c 20 73 74 61  g to the SQL sta
5320: 6e 64 61 72 64 2c 20 50 52 49 4d 41 52 59 20 4b  ndard, PRIMARY K
5330: 45 59 20 73 68 6f 75 6c 64 20 69 6d 70 6c 79 20  EY should imply 
5340: 4e 4f 54 20 4e 55 4c 4c 2e 0a 55 6e 66 6f 72 74  NOT NULL..Unfort
5350: 75 6e 61 74 65 6c 79 2c 20 64 75 65 20 74 6f 20  unately, due to 
5360: 61 20 6c 6f 6e 67 2d 73 74 61 6e 64 69 6e 67 20  a long-standing 
5370: 63 6f 64 69 6e 67 20 6f 76 65 72 73 69 67 68 74  coding oversight
5380: 2c 20 74 68 69 73 20 69 73 20 6e 6f 74 20 0a 74  , this is not .t
5390: 68 65 20 63 61 73 65 20 69 6e 20 53 51 4c 69 74  he case in SQLit
53a0: 65 2e 20 20 53 51 4c 69 74 65 20 61 6c 6c 6f 77  e.  SQLite allow
53b0: 73 20 4e 55 4c 4c 20 76 61 6c 75 65 73 0a 69 6e  s NULL values.in
53c0: 20 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63   a PRIMARY KEY c
53d0: 6f 6c 75 6d 6e 2e 20 20 57 65 20 63 6f 75 6c 64  olumn.  We could
53e0: 20 63 68 61 6e 67 65 20 53 51 4c 69 74 65 20 74   change SQLite t
53f0: 6f 20 63 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 65  o conform to the
5400: 0a 73 74 61 6e 64 61 72 64 20 28 61 6e 64 20 77  .standard (and w
5410: 65 20 6d 69 67 68 74 20 64 6f 20 73 6f 20 69 6e  e might do so in
5420: 20 74 68 65 20 66 75 74 75 72 65 29 2c 20 62 75   the future), bu
5430: 74 20 62 79 20 74 68 65 20 74 69 6d 65 20 74 68  t by the time th
5440: 65 0a 6f 76 65 72 73 69 67 68 74 20 77 61 73 20  e.oversight was 
5450: 64 69 73 63 6f 76 65 72 65 64 2c 20 53 51 4c 69  discovered, SQLi
5460: 74 65 20 77 61 73 20 69 6e 20 73 75 63 68 20 77  te was in such w
5470: 69 64 65 20 75 73 65 20 74 68 61 74 20 77 65 20  ide use that we 
5480: 66 65 61 72 65 64 0a 62 72 65 61 6b 69 6e 67 20  feared.breaking 
5490: 6c 65 67 61 63 79 20 63 6f 64 65 20 69 66 20 77  legacy code if w
54a0: 65 20 66 69 78 65 64 20 74 68 65 20 70 72 6f 62  e fixed the prob
54b0: 6c 65 6d 2e 20 20 53 6f 20 66 6f 72 20 6e 6f 77  lem.  So for now
54c0: 20 77 65 20 68 61 76 65 0a 63 68 6f 73 65 6e 20   we have.chosen 
54d0: 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6c 6c 6f 77  to contain allow
54e0: 69 6e 67 20 4e 55 4c 4c 73 20 69 6e 20 50 52 49  ing NULLs in PRI
54f0: 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 73  MARY KEY columns
5500: 2e 0a 44 65 76 65 6c 6f 70 65 72 73 20 73 68 6f  ..Developers sho
5510: 75 6c 64 20 62 65 20 61 77 61 72 65 2c 20 68 6f  uld be aware, ho
5520: 77 65 76 65 72 2c 20 74 68 61 74 20 77 65 20 6d  wever, that we m
5530: 61 79 20 63 68 61 6e 67 65 20 53 51 4c 69 74 65  ay change SQLite
5540: 20 74 6f 0a 63 6f 6e 66 6f 72 6d 20 74 6f 20 74   to.conform to t
5550: 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72 64 20  he SQL standard 
5560: 69 6e 20 66 75 74 75 72 65 20 61 6e 64 20 73 68  in future and sh
5570: 6f 75 6c 64 20 64 65 73 69 67 6e 20 6e 65 77 20  ould design new 
5580: 70 72 6f 67 72 61 6d 73 0a 61 63 63 6f 72 64 69  programs.accordi
5590: 6e 67 6c 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66  ngly.</p>..<p>If
55a0: 20 74 68 65 20 22 54 45 4d 50 22 20 6f 72 20 22   the "TEMP" or "
55b0: 54 45 4d 50 4f 52 41 52 59 22 20 6b 65 79 77 6f  TEMPORARY" keywo
55c0: 72 64 20 6f 63 63 75 72 73 20 69 6e 20 62 65 74  rd occurs in bet
55d0: 77 65 65 6e 20 22 43 52 45 41 54 45 22 0a 61 6e  ween "CREATE".an
55e0: 64 20 22 54 41 42 4c 45 22 20 74 68 65 6e 20 74  d "TABLE" then t
55f0: 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 69 73  he table that is
5600: 20 63 72 65 61 74 65 64 20 69 73 20 6f 6e 6c 79   created is only
5610: 20 76 69 73 69 62 6c 65 0a 77 69 74 68 69 6e 20   visible.within 
5620: 74 68 61 74 20 73 61 6d 65 20 64 61 74 61 62 61  that same databa
5630: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 61 6e  se connection.an
5640: 64 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c  d is automatical
5650: 6c 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e 0a  ly deleted when.
5660: 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
5670: 6e 65 63 74 69 6f 6e 20 69 73 20 63 6c 6f 73 65  nection is close
5680: 64 2e 20 20 41 6e 79 20 69 6e 64 69 63 65 73 20  d.  Any indices 
5690: 63 72 65 61 74 65 64 20 6f 6e 20 61 20 74 65 6d  created on a tem
56a0: 70 6f 72 61 72 79 20 74 61 62 6c 65 0a 61 72 65  porary table.are
56b0: 20 61 6c 73 6f 20 74 65 6d 70 6f 72 61 72 79 2e   also temporary.
56c0: 20 20 54 65 6d 70 6f 72 61 72 79 20 74 61 62 6c    Temporary tabl
56d0: 65 73 20 61 6e 64 20 69 6e 64 69 63 65 73 20 61  es and indices a
56e0: 72 65 20 73 74 6f 72 65 64 20 69 6e 20 61 0a 73  re stored in a.s
56f0: 65 70 61 72 61 74 65 20 66 69 6c 65 20 64 69 73  eparate file dis
5700: 74 69 6e 63 74 20 66 72 6f 6d 20 74 68 65 20 6d  tinct from the m
5710: 61 69 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c  ain database fil
5720: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 49 66 20 61  e.</p>..<p> If a
5730: 20 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61   &lt;database-na
5740: 6d 65 26 67 74 3b 20 69 73 20 73 70 65 63 69 66  me&gt; is specif
5750: 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20 74 61  ied, then the ta
5760: 62 6c 65 20 69 73 20 63 72 65 61 74 65 64 20 69  ble is created i
5770: 6e 20 0a 74 68 65 20 6e 61 6d 65 64 20 64 61 74  n .the named dat
5780: 61 62 61 73 65 2e 20 49 74 20 69 73 20 61 6e 20  abase. It is an 
5790: 65 72 72 6f 72 20 74 6f 20 73 70 65 63 69 66 79  error to specify
57a0: 20 62 6f 74 68 20 61 20 26 6c 74 3b 64 61 74 61   both a &lt;data
57b0: 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 0a 61 6e  base-name&gt;.an
57c0: 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77 6f  d the TEMP keywo
57d0: 72 64 2c 20 75 6e 6c 65 73 73 20 74 68 65 20 26  rd, unless the &
57e0: 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  lt;database-name
57f0: 26 67 74 3b 20 69 73 20 22 74 65 6d 70 22 2e 20  &gt; is "temp". 
5800: 49 66 20 6e 6f 0a 64 61 74 61 62 61 73 65 20 6e  If no.database n
5810: 61 6d 65 20 69 73 20 73 70 65 63 69 66 69 65 64  ame is specified
5820: 2c 20 61 6e 64 20 74 68 65 20 54 45 4d 50 20 6b  , and the TEMP k
5830: 65 79 77 6f 72 64 20 69 73 20 6e 6f 74 20 70 72  eyword is not pr
5840: 65 73 65 6e 74 2c 0a 74 68 65 20 74 61 62 6c 65  esent,.the table
5850: 20 69 73 20 63 72 65 61 74 65 64 20 69 6e 20 74   is created in t
5860: 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65  he main database
5870: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70  .</p>..<p>The op
5880: 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d  tional conflict-
5890: 63 6c 61 75 73 65 20 66 6f 6c 6c 6f 77 69 6e 67  clause following
58a0: 20 65 61 63 68 20 63 6f 6e 73 74 72 61 69 6e 74   each constraint
58b0: 0a 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63  .allows the spec
58c0: 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20  ification of an 
58d0: 61 6c 74 65 72 6e 61 74 69 76 65 20 64 65 66 61  alternative defa
58e0: 75 6c 74 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63  ult.constraint c
58f0: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
5900: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 66 6f 72  on algorithm for
5910: 20 74 68 61 74 20 63 6f 6e 73 74 72 61 69 6e 74   that constraint
5920: 2e 0a 54 68 65 20 64 65 66 61 75 6c 74 20 69 73  ..The default is
5930: 20 61 62 6f 72 74 20 41 42 4f 52 54 2e 20 20 44   abort ABORT.  D
5940: 69 66 66 65 72 65 6e 74 20 63 6f 6e 73 74 72 61  ifferent constra
5950: 69 6e 74 73 20 77 69 74 68 69 6e 20 74 68 65 20  ints within the 
5960: 73 61 6d 65 0a 74 61 62 6c 65 20 6d 61 79 20 68  same.table may h
5970: 61 76 65 20 64 69 66 66 65 72 65 6e 74 20 64 65  ave different de
5980: 66 61 75 6c 74 20 63 6f 6e 66 6c 69 63 74 20 72  fault conflict r
5990: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
59a0: 74 68 6d 73 2e 0a 49 66 20 61 6e 20 43 4f 50 59  thms..If an COPY
59b0: 2c 20 49 4e 53 45 52 54 2c 20 6f 72 20 55 50 44  , INSERT, or UPD
59c0: 41 54 45 20 63 6f 6d 6d 61 6e 64 20 73 70 65 63  ATE command spec
59d0: 69 66 69 65 73 20 61 20 64 69 66 66 65 72 65 6e  ifies a differen
59e0: 74 20 63 6f 6e 66 6c 69 63 74 0a 72 65 73 6f 6c  t conflict.resol
59f0: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2c  ution algorithm,
5a00: 20 74 68 65 6e 20 74 68 61 74 20 61 6c 67 6f 72   then that algor
5a10: 69 74 68 6d 20 69 73 20 75 73 65 64 20 69 6e 20  ithm is used in 
5a20: 70 6c 61 63 65 20 6f 66 20 74 68 65 0a 64 65 66  place of the.def
5a30: 61 75 6c 74 20 61 6c 67 6f 72 69 74 68 6d 20 73  ault algorithm s
5a40: 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20  pecified in the 
5a50: 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61  CREATE TABLE sta
5a60: 74 65 6d 65 6e 74 2e 0a 53 65 65 20 74 68 65 20  tement..See the 
5a70: 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c  section titled.<
5a80: 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63  a href="#conflic
5a90: 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f  t">ON CONFLICT</
5aa0: 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  a> for additiona
5ab0: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f  l information.</
5ac0: 70 3e 0a 0a 3c 70 3e 43 48 45 43 4b 20 63 6f 6e  p>..<p>CHECK con
5ad0: 73 74 72 61 69 6e 74 73 20 61 72 65 20 73 75 70  straints are sup
5ae0: 70 6f 72 74 65 64 20 61 73 20 6f 66 20 76 65 72  ported as of ver
5af0: 73 69 6f 6e 20 33 2e 33 2e 30 2e 20 20 50 72 69  sion 3.3.0.  Pri
5b00: 6f 72 0a 74 6f 20 76 65 72 73 69 6f 6e 20 33 2e  or.to version 3.
5b10: 33 2e 30 2c 20 43 48 45 43 4b 20 63 6f 6e 73 74  3.0, CHECK const
5b20: 72 61 69 6e 74 73 20 77 65 72 65 20 70 61 72 73  raints were pars
5b30: 65 64 20 62 75 74 20 6e 6f 74 20 65 6e 66 6f 72  ed but not enfor
5b40: 63 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ced.</p>..<p>The
5b50: 72 65 20 61 72 65 20 6e 6f 20 61 72 62 69 74 72  re are no arbitr
5b60: 61 72 79 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68  ary limits on th
5b70: 65 20 6e 75 6d 62 65 72 0a 6f 66 20 63 6f 6c 75  e number.of colu
5b80: 6d 6e 73 20 6f 72 20 6f 6e 20 74 68 65 20 6e 75  mns or on the nu
5b90: 6d 62 65 72 20 6f 66 20 63 6f 6e 73 74 72 61 69  mber of constrai
5ba0: 6e 74 73 20 69 6e 20 61 20 74 61 62 6c 65 2e 0a  nts in a table..
5bb0: 54 68 65 20 74 6f 74 61 6c 20 61 6d 6f 75 6e 74  The total amount
5bc0: 20 6f 66 20 64 61 74 61 20 69 6e 20 61 20 73 69   of data in a si
5bd0: 6e 67 6c 65 20 72 6f 77 20 69 73 20 6c 69 6d 69  ngle row is limi
5be0: 74 65 64 20 74 6f 20 61 62 6f 75 74 0a 31 20 6d  ted to about.1 m
5bf0: 65 67 61 62 79 74 65 73 20 69 6e 20 76 65 72 73  egabytes in vers
5c00: 69 6f 6e 20 32 2e 38 2e 20 20 49 6e 20 76 65 72  ion 2.8.  In ver
5c10: 73 69 6f 6e 20 33 2e 30 20 74 68 65 72 65 20 69  sion 3.0 there i
5c20: 73 20 6e 6f 20 61 72 62 69 74 72 61 72 79 0a 6c  s no arbitrary.l
5c30: 69 6d 69 74 20 6f 6e 20 74 68 65 20 61 6d 6f 75  imit on the amou
5c40: 6e 74 20 6f 66 20 64 61 74 61 20 69 6e 20 61 20  nt of data in a 
5c50: 72 6f 77 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 54 68  row.</p>...<p>Th
5c60: 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 41  e CREATE TABLE A
5c70: 53 20 66 6f 72 6d 20 64 65 66 69 6e 65 73 20 74  S form defines t
5c80: 68 65 20 74 61 62 6c 65 20 74 6f 20 62 65 0a 74  he table to be.t
5c90: 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 6f 66  he result set of
5ca0: 20 61 20 71 75 65 72 79 2e 20 20 54 68 65 20 6e   a query.  The n
5cb0: 61 6d 65 73 20 6f 66 20 74 68 65 20 74 61 62 6c  ames of the tabl
5cc0: 65 20 63 6f 6c 75 6d 6e 73 20 61 72 65 0a 74 68  e columns are.th
5cd0: 65 20 6e 61 6d 65 73 20 6f 66 20 74 68 65 20 63  e names of the c
5ce0: 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65  olumns in the re
5cf0: 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  sult.</p>..<p>Th
5d00: 65 20 65 78 61 63 74 20 74 65 78 74 0a 6f 66 20  e exact text.of 
5d10: 65 61 63 68 20 43 52 45 41 54 45 20 54 41 42 4c  each CREATE TABL
5d20: 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73  E statement is s
5d30: 74 6f 72 65 64 20 69 6e 20 74 68 65 20 3c 62 3e  tored in the <b>
5d40: 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62  sqlite_master</b
5d50: 3e 0a 74 61 62 6c 65 2e 20 20 45 76 65 72 79 20  >.table.  Every 
5d60: 74 69 6d 65 20 74 68 65 20 64 61 74 61 62 61 73  time the databas
5d70: 65 20 69 73 20 6f 70 65 6e 65 64 2c 20 61 6c 6c  e is opened, all
5d80: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74   CREATE TABLE st
5d90: 61 74 65 6d 65 6e 74 73 0a 61 72 65 20 72 65 61  atements.are rea
5da0: 64 20 66 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71  d from the <b>sq
5db0: 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 20  lite_master</b> 
5dc0: 74 61 62 6c 65 20 61 6e 64 20 75 73 65 64 20 74  table and used t
5dd0: 6f 20 72 65 67 65 6e 65 72 61 74 65 0a 53 51 4c  o regenerate.SQL
5de0: 69 74 65 27 73 20 69 6e 74 65 72 6e 61 6c 20 72  ite's internal r
5df0: 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66  epresentation of
5e00: 20 74 68 65 20 74 61 62 6c 65 20 6c 61 79 6f 75   the table layou
5e10: 74 2e 0a 49 66 20 74 68 65 20 6f 72 69 67 69 6e  t..If the origin
5e20: 61 6c 20 63 6f 6d 6d 61 6e 64 20 77 61 73 20 61  al command was a
5e30: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 41 53   CREATE TABLE AS
5e40: 20 74 68 65 6e 20 74 68 65 6e 20 61 6e 20 65 71   then then an eq
5e50: 75 69 76 61 6c 65 6e 74 0a 43 52 45 41 54 45 20  uivalent.CREATE 
5e60: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20  TABLE statement 
5e70: 69 73 20 73 79 6e 74 68 65 73 69 7a 65 64 20 61  is synthesized a
5e80: 6e 64 20 73 74 6f 72 65 20 69 6e 20 3c 62 3e 73  nd store in <b>s
5e90: 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e  qlite_master</b>
5ea0: 0a 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65  .in place of the
5eb0: 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e   original comman
5ec0: 64 2e 0a 54 68 65 20 74 65 78 74 20 6f 66 20 43  d..The text of C
5ed0: 52 45 41 54 45 20 54 45 4d 50 4f 52 41 52 59 20  REATE TEMPORARY 
5ee0: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 73  TABLE statements
5ef0: 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74   are stored in t
5f00: 68 65 0a 3c 62 3e 73 71 6c 69 74 65 5f 74 65 6d  he.<b>sqlite_tem
5f10: 70 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62  p_master</b> tab
5f20: 6c 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  le..</p>..<p>If 
5f30: 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20  the optional IF 
5f40: 4e 4f 54 20 45 58 49 53 54 53 20 63 6c 61 75 73  NOT EXISTS claus
5f50: 65 20 69 73 20 70 72 65 73 65 6e 74 20 61 6e 64  e is present and
5f60: 20 61 6e 6f 74 68 65 72 20 74 61 62 6c 65 0a 77   another table.w
5f70: 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d  ith the same nam
5f80: 65 20 61 6c 65 61 64 79 20 65 78 69 73 74 73 2c  e aleady exists,
5f90: 20 74 68 65 6e 20 74 68 69 73 20 63 6f 6d 6d 61   then this comma
5fa0: 6e 64 20 62 65 63 6f 6d 65 73 20 61 20 6e 6f 2d  nd becomes a no-
5fb0: 6f 70 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c  op.</p>..<p>Tabl
5fc0: 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 75  es are removed u
5fd0: 73 69 6e 67 20 74 68 65 20 3c 61 20 68 72 65 66  sing the <a href
5fe0: 3d 22 23 64 72 6f 70 74 61 62 6c 65 22 3e 44 52  ="#droptable">DR
5ff0: 4f 50 20 54 41 42 4c 45 3c 2f 61 3e 20 0a 73 74  OP TABLE</a> .st
6000: 61 74 65 6d 65 6e 74 2e 20 20 3c 2f 70 3e 0a 7d  atement.  </p>.}
6010: 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41  ...Section {CREA
6020: 54 45 20 54 52 49 47 47 45 52 7d 20 63 72 65 61  TE TRIGGER} crea
6030: 74 65 74 72 69 67 67 65 72 0a 0a 53 79 6e 74 61  tetrigger..Synta
6040: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
6050: 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d 50  } {.CREATE [TEMP
6060: 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20 54 52   | TEMPORARY] TR
6070: 49 47 47 45 52 20 5b 49 46 20 4e 4f 54 20 45 58  IGGER [IF NOT EX
6080: 49 53 54 53 5d 20 3c 74 72 69 67 67 65 72 2d 6e  ISTS] <trigger-n
6090: 61 6d 65 3e 20 5b 20 42 45 46 4f 52 45 20 7c 20  ame> [ BEFORE | 
60a0: 41 46 54 45 52 20 5d 0a 3c 64 61 74 61 62 61 73  AFTER ].<databas
60b0: 65 2d 65 76 65 6e 74 3e 20 4f 4e 20 5b 3c 64 61  e-event> ON [<da
60c0: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20  tabase-name> .] 
60d0: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 3c 74 72  <table-name>.<tr
60e0: 69 67 67 65 72 2d 61 63 74 69 6f 6e 3e 0a 7d 0a  igger-action>.}.
60f0: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
6100: 74 65 6d 65 6e 74 7d 20 7b 0a 43 52 45 41 54 45  tement} {.CREATE
6110: 20 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41   [TEMP | TEMPORA
6120: 52 59 5d 20 54 52 49 47 47 45 52 20 5b 49 46 20  RY] TRIGGER [IF 
6130: 4e 4f 54 20 45 58 49 53 54 53 5d 20 3c 74 72 69  NOT EXISTS] <tri
6140: 67 67 65 72 2d 6e 61 6d 65 3e 20 49 4e 53 54 45  gger-name> INSTE
6150: 41 44 20 4f 46 0a 3c 64 61 74 61 62 61 73 65 2d  AD OF.<database-
6160: 65 76 65 6e 74 3e 20 4f 4e 20 5b 3c 64 61 74 61  event> ON [<data
6170: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 76  base-name> .] <v
6180: 69 65 77 2d 6e 61 6d 65 3e 0a 3c 74 72 69 67 67  iew-name>.<trigg
6190: 65 72 2d 61 63 74 69 6f 6e 3e 0a 7d 0a 0a 53 79  er-action>.}..Sy
61a0: 6e 74 61 78 20 7b 64 61 74 61 62 61 73 65 2d 65  ntax {database-e
61b0: 76 65 6e 74 7d 20 7b 0a 44 45 4c 45 54 45 20 7c  vent} {.DELETE |
61c0: 20 0a 49 4e 53 45 52 54 20 7c 20 0a 55 50 44 41   .INSERT | .UPDA
61d0: 54 45 20 7c 20 0a 55 50 44 41 54 45 20 4f 46 20  TE | .UPDATE OF 
61e0: 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 0a 7d 0a  <column-list>.}.
61f0: 0a 53 79 6e 74 61 78 20 7b 74 72 69 67 67 65 72  .Syntax {trigger
6200: 2d 61 63 74 69 6f 6e 7d 20 7b 0a 5b 20 46 4f 52  -action} {.[ FOR
6210: 20 45 41 43 48 20 52 4f 57 20 5d 20 5b 20 57 48   EACH ROW ] [ WH
6220: 45 4e 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20  EN <expression> 
6230: 5d 20 0a 42 45 47 49 4e 20 0a 20 20 3c 74 72 69  ] .BEGIN .  <tri
6240: 67 67 65 72 2d 73 74 65 70 3e 20 3b 20 5b 20 3c  gger-step> ; [ <
6250: 74 72 69 67 67 65 72 2d 73 74 65 70 3e 20 3b 20  trigger-step> ; 
6260: 5d 2a 0a 45 4e 44 0a 7d 0a 0a 53 79 6e 74 61 78  ]*.END.}..Syntax
6270: 20 7b 74 72 69 67 67 65 72 2d 73 74 65 70 7d 20   {trigger-step} 
6280: 7b 0a 3c 75 70 64 61 74 65 2d 73 74 61 74 65 6d  {.<update-statem
6290: 65 6e 74 3e 20 7c 20 3c 69 6e 73 65 72 74 2d 73  ent> | <insert-s
62a0: 74 61 74 65 6d 65 6e 74 3e 20 7c 20 0a 3c 64 65  tatement> | .<de
62b0: 6c 65 74 65 2d 73 74 61 74 65 6d 65 6e 74 3e 20  lete-statement> 
62c0: 7c 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d  | <select-statem
62d0: 65 6e 74 3e 20 0a 7d 0a 0a 70 75 74 73 20 7b 0a  ent> .}..puts {.
62e0: 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20 54 52  <p>The CREATE TR
62f0: 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74 20  IGGER statement 
6300: 69 73 20 75 73 65 64 20 74 6f 20 61 64 64 20 74  is used to add t
6310: 72 69 67 67 65 72 73 20 74 6f 20 74 68 65 20 0a  riggers to the .
6320: 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 2e  database schema.
6330: 20 54 72 69 67 67 65 72 73 20 61 72 65 20 64 61   Triggers are da
6340: 74 61 62 61 73 65 20 6f 70 65 72 61 74 69 6f 6e  tabase operation
6350: 73 20 28 74 68 65 20 3c 69 3e 74 72 69 67 67 65  s (the <i>trigge
6360: 72 2d 61 63 74 69 6f 6e 3c 2f 69 3e 29 20 0a 74  r-action</i>) .t
6370: 68 61 74 20 61 72 65 20 61 75 74 6f 6d 61 74 69  hat are automati
6380: 63 61 6c 6c 79 20 70 65 72 66 6f 72 6d 65 64 20  cally performed 
6390: 77 68 65 6e 20 61 20 73 70 65 63 69 66 69 65 64  when a specified
63a0: 20 64 61 74 61 62 61 73 65 20 65 76 65 6e 74 20   database event 
63b0: 28 74 68 65 0a 3c 69 3e 64 61 74 61 62 61 73 65  (the.<i>database
63c0: 2d 65 76 65 6e 74 3c 2f 69 3e 29 20 6f 63 63 75  -event</i>) occu
63d0: 72 73 2e 20 20 3c 2f 70 3e 0a 0a 3c 70 3e 41 20  rs.  </p>..<p>A 
63e0: 74 72 69 67 67 65 72 20 6d 61 79 20 62 65 20 73  trigger may be s
63f0: 70 65 63 69 66 69 65 64 20 74 6f 20 66 69 72 65  pecified to fire
6400: 20 77 68 65 6e 65 76 65 72 20 61 20 44 45 4c 45   whenever a DELE
6410: 54 45 2c 20 49 4e 53 45 52 54 20 6f 72 20 55 50  TE, INSERT or UP
6420: 44 41 54 45 20 6f 66 20 61 0a 70 61 72 74 69 63  DATE of a.partic
6430: 75 6c 61 72 20 64 61 74 61 62 61 73 65 20 74 61  ular database ta
6440: 62 6c 65 20 6f 63 63 75 72 73 2c 20 6f 72 20 77  ble occurs, or w
6450: 68 65 6e 65 76 65 72 20 61 6e 20 55 50 44 41 54  henever an UPDAT
6460: 45 20 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  E of one or more
6470: 0a 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d  .specified colum
6480: 6e 73 20 6f 66 20 61 20 74 61 62 6c 65 20 61 72  ns of a table ar
6490: 65 20 75 70 64 61 74 65 64 2e 3c 2f 70 3e 0a 0a  e updated.</p>..
64a0: 3c 70 3e 41 74 20 74 68 69 73 20 74 69 6d 65 20  <p>At this time 
64b0: 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74 73 20  SQLite supports 
64c0: 6f 6e 6c 79 20 46 4f 52 20 45 41 43 48 20 52 4f  only FOR EACH RO
64d0: 57 20 74 72 69 67 67 65 72 73 2c 20 6e 6f 74 20  W triggers, not 
64e0: 46 4f 52 20 45 41 43 48 0a 53 54 41 54 45 4d 45  FOR EACH.STATEME
64f0: 4e 54 20 74 72 69 67 67 65 72 73 2e 20 48 65 6e  NT triggers. Hen
6500: 63 65 20 65 78 70 6c 69 63 69 74 6c 79 20 73 70  ce explicitly sp
6510: 65 63 69 66 79 69 6e 67 20 46 4f 52 20 45 41 43  ecifying FOR EAC
6520: 48 20 52 4f 57 20 69 73 20 6f 70 74 69 6f 6e 61  H ROW is optiona
6530: 6c 2e 20 20 46 4f 52 0a 45 41 43 48 20 52 4f 57  l.  FOR.EACH ROW
6540: 20 69 6d 70 6c 69 65 73 20 74 68 61 74 20 74 68   implies that th
6550: 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  e SQL statements
6560: 20 73 70 65 63 69 66 69 65 64 20 61 73 20 3c 69   specified as <i
6570: 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73 3c 2f  >trigger-steps</
6580: 69 3e 20 0a 6d 61 79 20 62 65 20 65 78 65 63 75  i> .may be execu
6590: 74 65 64 20 28 64 65 70 65 6e 64 69 6e 67 20 6f  ted (depending o
65a0: 6e 20 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73  n the WHEN claus
65b0: 65 29 20 66 6f 72 20 65 61 63 68 20 64 61 74 61  e) for each data
65c0: 62 61 73 65 20 72 6f 77 20 62 65 69 6e 67 0a 69  base row being.i
65d0: 6e 73 65 72 74 65 64 2c 20 75 70 64 61 74 65 64  nserted, updated
65e0: 20 6f 72 20 64 65 6c 65 74 65 64 20 62 79 20 74   or deleted by t
65f0: 68 65 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75  he statement cau
6600: 73 69 6e 67 20 74 68 65 20 74 72 69 67 67 65 72  sing the trigger
6610: 20 74 6f 20 66 69 72 65 2e 3c 2f 70 3e 0a 0a 3c   to fire.</p>..<
6620: 70 3e 42 6f 74 68 20 74 68 65 20 57 48 45 4e 20  p>Both the WHEN 
6630: 63 6c 61 75 73 65 20 61 6e 64 20 74 68 65 20 3c  clause and the <
6640: 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73 3c  i>trigger-steps<
6650: 2f 69 3e 20 6d 61 79 20 61 63 63 65 73 73 20 65  /i> may access e
6660: 6c 65 6d 65 6e 74 73 20 6f 66 20 0a 74 68 65 20  lements of .the 
6670: 72 6f 77 20 62 65 69 6e 67 20 69 6e 73 65 72 74  row being insert
6680: 65 64 2c 20 64 65 6c 65 74 65 64 20 6f 72 20 75  ed, deleted or u
6690: 70 64 61 74 65 64 20 75 73 69 6e 67 20 72 65 66  pdated using ref
66a0: 65 72 65 6e 63 65 73 20 6f 66 20 74 68 65 20 66  erences of the f
66b0: 6f 72 6d 20 0a 22 4e 45 57 2e 3c 69 3e 63 6f 6c  orm ."NEW.<i>col
66c0: 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 20 61 6e  umn-name</i>" an
66d0: 64 20 22 4f 4c 44 2e 3c 69 3e 63 6f 6c 75 6d 6e  d "OLD.<i>column
66e0: 2d 6e 61 6d 65 3c 2f 69 3e 22 2c 20 77 68 65 72  -name</i>", wher
66f0: 65 0a 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65  e.<i>column-name
6700: 3c 2f 69 3e 20 69 73 20 74 68 65 20 6e 61 6d 65  </i> is the name
6710: 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 66 72 6f   of a column fro
6720: 6d 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  m the table that
6730: 20 74 68 65 20 74 72 69 67 67 65 72 0a 69 73 20   the trigger.is 
6740: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 2e  associated with.
6750: 20 4f 4c 44 20 61 6e 64 20 4e 45 57 20 72 65 66   OLD and NEW ref
6760: 65 72 65 6e 63 65 73 20 6d 61 79 20 6f 6e 6c 79  erences may only
6770: 20 62 65 20 75 73 65 64 20 69 6e 20 74 72 69 67   be used in trig
6780: 67 65 72 73 20 6f 6e 0a 3c 69 3e 74 72 69 67 67  gers on.<i>trigg
6790: 65 72 2d 65 76 65 6e 74 3c 2f 69 3e 73 20 66 6f  er-event</i>s fo
67a0: 72 20 77 68 69 63 68 20 74 68 65 79 20 61 72 65  r which they are
67b0: 20 72 65 6c 65 76 61 6e 74 2c 20 61 73 20 66 6f   relevant, as fo
67c0: 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 74 61 62  llows:</p>..<tab
67d0: 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c  le border=0 cell
67e0: 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e  padding=10>.<tr>
67f0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
6800: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  " align="right" 
6810: 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 49 4e 53  width=120><i>INS
6820: 45 52 54 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64  ERT</i></td>.<td
6830: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4e 45   valign="top">NE
6840: 57 20 72 65 66 65 72 65 6e 63 65 73 20 61 72 65  W references are
6850: 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72   valid</td>.</tr
6860: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  >.<tr>.<td valig
6870: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
6880: 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e  ight" width=120>
6890: 3c 69 3e 55 50 44 41 54 45 3c 2f 69 3e 3c 2f 74  <i>UPDATE</i></t
68a0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
68b0: 6f 70 22 3e 4e 45 57 20 61 6e 64 20 4f 4c 44 20  op">NEW and OLD 
68c0: 72 65 66 65 72 65 6e 63 65 73 20 61 72 65 20 76  references are v
68d0: 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  alid</td>.</tr>.
68e0: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
68f0: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
6900: 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69  ht" width=120><i
6910: 3e 44 45 4c 45 54 45 3c 2f 69 3e 3c 2f 74 64 3e  >DELETE</i></td>
6920: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
6930: 22 3e 4f 4c 44 20 72 65 66 65 72 65 6e 63 65 73  ">OLD references
6940: 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a   are valid</td>.
6950: 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c  </tr>.</table>.<
6960: 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 20 57 48 45  /p>..<p>If a WHE
6970: 4e 20 63 6c 61 75 73 65 20 69 73 20 73 75 70 70  N clause is supp
6980: 6c 69 65 64 2c 20 74 68 65 20 53 51 4c 20 73 74  lied, the SQL st
6990: 61 74 65 6d 65 6e 74 73 20 73 70 65 63 69 66 69  atements specifi
69a0: 65 64 20 61 73 20 3c 69 3e 74 72 69 67 67 65 72  ed as <i>trigger
69b0: 2d 73 74 65 70 73 3c 2f 69 3e 20 61 72 65 20 6f  -steps</i> are o
69c0: 6e 6c 79 20 65 78 65 63 75 74 65 64 20 66 6f 72  nly executed for
69d0: 20 72 6f 77 73 20 66 6f 72 20 77 68 69 63 68 20   rows for which 
69e0: 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73 65 20  the WHEN clause 
69f0: 69 73 20 74 72 75 65 2e 20 49 66 20 6e 6f 20 57  is true. If no W
6a00: 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20 73 75  HEN clause is su
6a10: 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51 4c 20  pplied, the SQL 
6a20: 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 65  statements are e
6a30: 78 65 63 75 74 65 64 20 66 6f 72 20 61 6c 6c 20  xecuted for all 
6a40: 72 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  rows.</p>..<p>Th
6a50: 65 20 73 70 65 63 69 66 69 65 64 20 3c 69 3e 74  e specified <i>t
6a60: 72 69 67 67 65 72 2d 74 69 6d 65 3c 2f 69 3e 20  rigger-time</i> 
6a70: 64 65 74 65 72 6d 69 6e 65 73 20 77 68 65 6e 20  determines when 
6a80: 74 68 65 20 3c 69 3e 74 72 69 67 67 65 72 2d 73  the <i>trigger-s
6a90: 74 65 70 73 3c 2f 69 3e 0a 77 69 6c 6c 20 62 65  teps</i>.will be
6aa0: 20 65 78 65 63 75 74 65 64 20 72 65 6c 61 74 69   executed relati
6ab0: 76 65 20 74 6f 20 74 68 65 20 69 6e 73 65 72 74  ve to the insert
6ac0: 69 6f 6e 2c 20 6d 6f 64 69 66 69 63 61 74 69 6f  ion, modificatio
6ad0: 6e 20 6f 72 20 72 65 6d 6f 76 61 6c 20 6f 66 20  n or removal of 
6ae0: 74 68 65 0a 61 73 73 6f 63 69 61 74 65 64 20 72  the.associated r
6af0: 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6e 20 4f  ow.</p>..<p>An O
6b00: 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73  N CONFLICT claus
6b10: 65 20 6d 61 79 20 62 65 20 73 70 65 63 69 66 69  e may be specifi
6b20: 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 61 6e  ed as part of an
6b30: 20 55 50 44 41 54 45 20 6f 72 20 49 4e 53 45 52   UPDATE or INSER
6b40: 54 0a 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65  T.<i>trigger-ste
6b50: 70 3c 2f 69 3e 2e 20 48 6f 77 65 76 65 72 20 69  p</i>. However i
6b60: 66 20 61 6e 20 4f 4e 20 43 4f 4e 46 4c 49 43 54  f an ON CONFLICT
6b70: 20 63 6c 61 75 73 65 20 69 73 20 73 70 65 63 69   clause is speci
6b80: 66 69 65 64 20 61 73 20 70 61 72 74 20 6f 66 20  fied as part of 
6b90: 0a 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 63  .the statement c
6ba0: 61 75 73 69 6e 67 20 74 68 65 20 74 72 69 67 67  ausing the trigg
6bb0: 65 72 20 74 6f 20 66 69 72 65 2c 20 74 68 65 6e  er to fire, then
6bc0: 20 74 68 69 73 20 63 6f 6e 66 6c 69 63 74 20 68   this conflict h
6bd0: 61 6e 64 6c 69 6e 67 0a 70 6f 6c 69 63 79 20 69  andling.policy i
6be0: 73 20 75 73 65 64 20 69 6e 73 74 65 61 64 2e 3c  s used instead.<
6bf0: 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65 72 73  /p>..<p>Triggers
6c00: 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c   are automatical
6c10: 6c 79 20 64 72 6f 70 70 65 64 20 77 68 65 6e 20  ly dropped when 
6c20: 74 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 74  the table that t
6c30: 68 65 79 20 61 72 65 20 0a 61 73 73 6f 63 69 61  hey are .associa
6c40: 74 65 64 20 77 69 74 68 20 69 73 20 64 72 6f 70  ted with is drop
6c50: 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69  ped.</p>..<p>Tri
6c60: 67 67 65 72 73 20 6d 61 79 20 62 65 20 63 72 65  ggers may be cre
6c70: 61 74 65 64 20 6f 6e 20 76 69 65 77 73 2c 20 61  ated on views, a
6c80: 73 20 77 65 6c 6c 20 61 73 20 6f 72 64 69 6e 61  s well as ordina
6c90: 72 79 20 74 61 62 6c 65 73 2c 20 62 79 20 73 70  ry tables, by sp
6ca0: 65 63 69 66 79 69 6e 67 0a 49 4e 53 54 45 41 44  ecifying.INSTEAD
6cb0: 20 4f 46 20 69 6e 20 74 68 65 20 43 52 45 41 54   OF in the CREAT
6cc0: 45 20 54 52 49 47 47 45 52 20 73 74 61 74 65 6d  E TRIGGER statem
6cd0: 65 6e 74 2e 20 49 66 20 6f 6e 65 20 6f 72 20 6d  ent. If one or m
6ce0: 6f 72 65 20 4f 4e 20 49 4e 53 45 52 54 2c 20 4f  ore ON INSERT, O
6cf0: 4e 20 44 45 4c 45 54 45 0a 6f 72 20 4f 4e 20 55  N DELETE.or ON U
6d00: 50 44 41 54 45 20 74 72 69 67 67 65 72 73 20 61  PDATE triggers a
6d10: 72 65 20 64 65 66 69 6e 65 64 20 6f 6e 20 61 20  re defined on a 
6d20: 76 69 65 77 2c 20 74 68 65 6e 20 69 74 20 69 73  view, then it is
6d30: 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 20 74 6f   not an error to
6d40: 20 65 78 65 63 75 74 65 0a 61 6e 20 49 4e 53 45   execute.an INSE
6d50: 52 54 2c 20 44 45 4c 45 54 45 20 6f 72 20 55 50  RT, DELETE or UP
6d60: 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20 6f  DATE statement o
6d70: 6e 20 74 68 65 20 76 69 65 77 2c 20 72 65 73 70  n the view, resp
6d80: 65 63 74 69 76 65 6c 79 2e 20 54 68 65 72 65 61  ectively. Therea
6d90: 66 74 65 72 2c 0a 65 78 65 63 75 74 69 6e 67 20  fter,.executing 
6da0: 61 6e 20 49 4e 53 45 52 54 2c 20 44 45 4c 45 54  an INSERT, DELET
6db0: 45 20 6f 72 20 55 50 44 41 54 45 20 6f 6e 20 74  E or UPDATE on t
6dc0: 68 65 20 76 69 65 77 20 63 61 75 73 65 73 20 74  he view causes t
6dd0: 68 65 20 61 73 73 6f 63 69 61 74 65 64 0a 20 20  he associated.  
6de0: 74 72 69 67 67 65 72 73 20 74 6f 20 66 69 72 65  triggers to fire
6df0: 2e 20 54 68 65 20 72 65 61 6c 20 74 61 62 6c 65  . The real table
6e00: 73 20 75 6e 64 65 72 6c 79 69 6e 67 20 74 68 65  s underlying the
6e10: 20 76 69 65 77 20 61 72 65 20 6e 6f 74 20 6d 6f   view are not mo
6e20: 64 69 66 69 65 64 0a 20 20 28 65 78 63 65 70 74  dified.  (except
6e30: 20 70 6f 73 73 69 62 6c 79 20 65 78 70 6c 69 63   possibly explic
6e40: 69 74 6c 79 2c 20 62 79 20 61 20 74 72 69 67 67  itly, by a trigg
6e50: 65 72 20 70 72 6f 67 72 61 6d 29 2e 3c 2f 70 3e  er program).</p>
6e60: 0a 0a 3c 70 3e 3c 62 3e 45 78 61 6d 70 6c 65 3a  ..<p><b>Example:
6e70: 3c 2f 62 3e 3c 2f 70 3e 0a 0a 3c 70 3e 41 73 73  </b></p>..<p>Ass
6e80: 75 6d 69 6e 67 20 74 68 61 74 20 63 75 73 74 6f  uming that custo
6e90: 6d 65 72 20 72 65 63 6f 72 64 73 20 61 72 65 20  mer records are 
6ea0: 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 22 63  stored in the "c
6eb0: 75 73 74 6f 6d 65 72 73 22 20 74 61 62 6c 65 2c  ustomers" table,
6ec0: 20 61 6e 64 0a 74 68 61 74 20 6f 72 64 65 72 20   and.that order 
6ed0: 72 65 63 6f 72 64 73 20 61 72 65 20 73 74 6f 72  records are stor
6ee0: 65 64 20 69 6e 20 74 68 65 20 22 6f 72 64 65 72  ed in the "order
6ef0: 73 22 20 74 61 62 6c 65 2c 20 74 68 65 20 66 6f  s" table, the fo
6f00: 6c 6c 6f 77 69 6e 67 20 74 72 69 67 67 65 72 0a  llowing trigger.
6f10: 65 6e 73 75 72 65 73 20 74 68 61 74 20 61 6c 6c  ensures that all
6f20: 20 61 73 73 6f 63 69 61 74 65 64 20 6f 72 64 65   associated orde
6f30: 72 73 20 61 72 65 20 72 65 64 69 72 65 63 74 65  rs are redirecte
6f40: 64 20 77 68 65 6e 20 61 20 63 75 73 74 6f 6d 65  d when a custome
6f50: 72 20 63 68 61 6e 67 65 73 0a 68 69 73 20 6f 72  r changes.his or
6f60: 20 68 65 72 20 61 64 64 72 65 73 73 3a 3c 2f 70   her address:</p
6f70: 3e 0a 7d 0a 45 78 61 6d 70 6c 65 20 7b 0a 43 52  >.}.Example {.CR
6f80: 45 41 54 45 20 54 52 49 47 47 45 52 20 75 70 64  EATE TRIGGER upd
6f90: 61 74 65 5f 63 75 73 74 6f 6d 65 72 5f 61 64 64  ate_customer_add
6fa0: 72 65 73 73 20 55 50 44 41 54 45 20 4f 46 20 61  ress UPDATE OF a
6fb0: 64 64 72 65 73 73 20 4f 4e 20 63 75 73 74 6f 6d  ddress ON custom
6fc0: 65 72 73 20 0a 20 20 42 45 47 49 4e 0a 20 20 20  ers .  BEGIN.   
6fd0: 20 55 50 44 41 54 45 20 6f 72 64 65 72 73 20 53   UPDATE orders S
6fe0: 45 54 20 61 64 64 72 65 73 73 20 3d 20 6e 65 77  ET address = new
6ff0: 2e 61 64 64 72 65 73 73 20 57 48 45 52 45 20 63  .address WHERE c
7000: 75 73 74 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 6f  ustomer_name = o
7010: 6c 64 2e 6e 61 6d 65 3b 0a 20 20 45 4e 44 3b 0a  ld.name;.  END;.
7020: 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e 57 69 74 68  }.puts {.<p>With
7030: 20 74 68 69 73 20 74 72 69 67 67 65 72 20 69 6e   this trigger in
7040: 73 74 61 6c 6c 65 64 2c 20 65 78 65 63 75 74 69  stalled, executi
7050: 6e 67 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  ng the statement
7060: 3a 3c 2f 70 3e 0a 7d 0a 0a 45 78 61 6d 70 6c 65  :</p>.}..Example
7070: 20 7b 0a 55 50 44 41 54 45 20 63 75 73 74 6f 6d   {.UPDATE custom
7080: 65 72 73 20 53 45 54 20 61 64 64 72 65 73 73 20  ers SET address 
7090: 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e 27 20 57  = '1 Main St.' W
70a0: 48 45 52 45 20 6e 61 6d 65 20 3d 20 27 4a 61 63  HERE name = 'Jac
70b0: 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 0a 70 75 74 73  k Jones';.}.puts
70c0: 20 7b 0a 3c 70 3e 63 61 75 73 65 73 20 74 68 65   {.<p>causes the
70d0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20 62 65   following to be
70e0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 65   automatically e
70f0: 78 65 63 75 74 65 64 3a 3c 2f 70 3e 0a 7d 0a 45  xecuted:</p>.}.E
7100: 78 61 6d 70 6c 65 20 7b 0a 55 50 44 41 54 45 20  xample {.UPDATE 
7110: 6f 72 64 65 72 73 20 53 45 54 20 61 64 64 72 65  orders SET addre
7120: 73 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e  ss = '1 Main St.
7130: 27 20 57 48 45 52 45 20 63 75 73 74 6f 6d 65 72  ' WHERE customer
7140: 5f 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f  _name = 'Jack Jo
7150: 6e 65 73 27 3b 0a 7d 0a 0a 70 75 74 73 20 7b 0a  nes';.}..puts {.
7160: 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 63 75 72  <p>Note that cur
7170: 72 65 6e 74 6c 79 2c 20 74 72 69 67 67 65 72 73  rently, triggers
7180: 20 6d 61 79 20 62 65 68 61 76 65 20 6f 64 64 6c   may behave oddl
7190: 79 20 77 68 65 6e 20 63 72 65 61 74 65 64 20 6f  y when created o
71a0: 6e 20 74 61 62 6c 65 73 0a 20 20 77 69 74 68 20  n tables.  with 
71b0: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
71c0: 4b 45 59 20 66 69 65 6c 64 73 2e 20 49 66 20 61  KEY fields. If a
71d0: 20 42 45 46 4f 52 45 20 74 72 69 67 67 65 72 20   BEFORE trigger 
71e0: 70 72 6f 67 72 61 6d 20 6d 6f 64 69 66 69 65 73  program modifies
71f0: 20 74 68 65 20 0a 20 20 49 4e 54 45 47 45 52 20   the .  INTEGER 
7200: 50 52 49 4d 41 52 59 20 4b 45 59 20 66 69 65 6c  PRIMARY KEY fiel
7210: 64 20 6f 66 20 61 20 72 6f 77 20 74 68 61 74 20  d of a row that 
7220: 77 69 6c 6c 20 62 65 20 73 75 62 73 65 71 75 65  will be subseque
7230: 6e 74 6c 79 20 75 70 64 61 74 65 64 20 62 79 20  ntly updated by 
7240: 74 68 65 0a 20 20 73 74 61 74 65 6d 65 6e 74 20  the.  statement 
7250: 74 68 61 74 20 63 61 75 73 65 73 20 74 68 65 20  that causes the 
7260: 74 72 69 67 67 65 72 20 74 6f 20 66 69 72 65 2c  trigger to fire,
7270: 20 74 68 65 6e 20 74 68 65 20 75 70 64 61 74 65   then the update
7280: 20 6d 61 79 20 6e 6f 74 20 6f 63 63 75 72 2e 20   may not occur. 
7290: 0a 20 20 54 68 65 20 77 6f 72 6b 61 72 6f 75 6e  .  The workaroun
72a0: 64 20 69 73 20 74 6f 20 64 65 63 6c 61 72 65 20  d is to declare 
72b0: 74 68 65 20 74 61 62 6c 65 20 77 69 74 68 20 61  the table with a
72c0: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c   PRIMARY KEY col
72d0: 75 6d 6e 20 69 6e 73 74 65 61 64 0a 20 20 6f 66  umn instead.  of
72e0: 20 61 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d   an INTEGER PRIM
72f0: 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 2e 3c  ARY KEY column.<
7300: 2f 70 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  /p>.}..puts {.<p
7310: 3e 41 20 73 70 65 63 69 61 6c 20 53 51 4c 20 66  >A special SQL f
7320: 75 6e 63 74 69 6f 6e 20 52 41 49 53 45 28 29 20  unction RAISE() 
7330: 6d 61 79 20 62 65 20 75 73 65 64 20 77 69 74 68  may be used with
7340: 69 6e 20 61 20 74 72 69 67 67 65 72 2d 70 72 6f  in a trigger-pro
7350: 67 72 61 6d 2c 20 77 69 74 68 20 74 68 65 20 66  gram, with the f
7360: 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74 61 78 3c  ollowing syntax<
7370: 2f 70 3e 20 0a 7d 0a 53 79 6e 74 61 78 20 7b 72  /p> .}.Syntax {r
7380: 61 69 73 65 2d 66 75 6e 63 74 69 6f 6e 7d 20 7b  aise-function} {
7390: 0a 52 41 49 53 45 20 28 20 41 42 4f 52 54 2c 20  .RAISE ( ABORT, 
73a0: 3c 65 72 72 6f 72 2d 6d 65 73 73 61 67 65 3e 20  <error-message> 
73b0: 29 20 7c 20 0a 52 41 49 53 45 20 28 20 46 41 49  ) | .RAISE ( FAI
73c0: 4c 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73 61 67  L, <error-messag
73d0: 65 3e 20 29 20 7c 20 0a 52 41 49 53 45 20 28 20  e> ) | .RAISE ( 
73e0: 52 4f 4c 4c 42 41 43 4b 2c 20 3c 65 72 72 6f 72  ROLLBACK, <error
73f0: 2d 6d 65 73 73 61 67 65 3e 20 29 20 7c 20 0a 52  -message> ) | .R
7400: 41 49 53 45 20 28 20 49 47 4e 4f 52 45 20 29 0a  AISE ( IGNORE ).
7410: 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e 57 68 65 6e  }.puts {.<p>When
7420: 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 69 72 73   one of the firs
7430: 74 20 74 68 72 65 65 20 66 6f 72 6d 73 20 69 73  t three forms is
7440: 20 63 61 6c 6c 65 64 20 64 75 72 69 6e 67 20 74   called during t
7450: 72 69 67 67 65 72 2d 70 72 6f 67 72 61 6d 20 65  rigger-program e
7460: 78 65 63 75 74 69 6f 6e 2c 20 74 68 65 20 73 70  xecution, the sp
7470: 65 63 69 66 69 65 64 20 4f 4e 20 43 4f 4e 46 4c  ecified ON CONFL
7480: 49 43 54 20 70 72 6f 63 65 73 73 69 6e 67 20 69  ICT processing i
7490: 73 20 70 65 72 66 6f 72 6d 65 64 20 28 65 69 74  s performed (eit
74a0: 68 65 72 20 41 42 4f 52 54 2c 20 46 41 49 4c 20  her ABORT, FAIL 
74b0: 6f 72 20 0a 20 52 4f 4c 4c 42 41 43 4b 29 20 61  or . ROLLBACK) a
74c0: 6e 64 20 74 68 65 20 63 75 72 72 65 6e 74 20 71  nd the current q
74d0: 75 65 72 79 20 74 65 72 6d 69 6e 61 74 65 73 2e  uery terminates.
74e0: 20 41 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 6f   An error code o
74f0: 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  f SQLITE_CONSTRA
7500: 49 4e 54 20 69 73 20 72 65 74 75 72 6e 65 64 20  INT is returned 
7510: 74 6f 20 74 68 65 20 75 73 65 72 2c 20 61 6c 6f  to the user, alo
7520: 6e 67 20 77 69 74 68 20 74 68 65 20 73 70 65 63  ng with the spec
7530: 69 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73  ified error mess
7540: 61 67 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65  age.</p>..<p>Whe
7550: 6e 20 52 41 49 53 45 28 49 47 4e 4f 52 45 29 20  n RAISE(IGNORE) 
7560: 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65 20 72  is called, the r
7570: 65 6d 61 69 6e 64 65 72 20 6f 66 20 74 68 65 20  emainder of the 
7580: 63 75 72 72 65 6e 74 20 74 72 69 67 67 65 72 20  current trigger 
7590: 70 72 6f 67 72 61 6d 2c 0a 74 68 65 20 73 74 61  program,.the sta
75a0: 74 65 6d 65 6e 74 20 74 68 61 74 20 63 61 75 73  tement that caus
75b0: 65 64 20 74 68 65 20 74 72 69 67 67 65 72 20 70  ed the trigger p
75c0: 72 6f 67 72 61 6d 20 74 6f 20 65 78 65 63 75 74  rogram to execut
75d0: 65 20 61 6e 64 20 61 6e 79 20 73 75 62 73 65 71  e and any subseq
75e0: 75 65 6e 74 0a 20 20 20 20 74 72 69 67 67 65 72  uent.    trigger
75f0: 20 70 72 6f 67 72 61 6d 73 20 74 68 61 74 20 77   programs that w
7600: 6f 75 6c 64 20 6f 66 20 62 65 65 6e 20 65 78 65  ould of been exe
7610: 63 75 74 65 64 20 61 72 65 20 61 62 61 6e 64 6f  cuted are abando
7620: 6e 65 64 2e 20 4e 6f 20 64 61 74 61 62 61 73 65  ned. No database
7630: 0a 20 20 20 20 63 68 61 6e 67 65 73 20 61 72 65  .    changes are
7640: 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20 49   rolled back.  I
7650: 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  f the statement 
7660: 74 68 61 74 20 63 61 75 73 65 64 20 74 68 65 20  that caused the 
7670: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 0a  trigger program.
7680: 20 20 20 20 74 6f 20 65 78 65 63 75 74 65 20 69      to execute i
7690: 73 20 69 74 73 65 6c 66 20 70 61 72 74 20 6f 66  s itself part of
76a0: 20 61 20 74 72 69 67 67 65 72 20 70 72 6f 67 72   a trigger progr
76b0: 61 6d 2c 20 74 68 65 6e 20 74 68 61 74 20 74 72  am, then that tr
76c0: 69 67 67 65 72 20 70 72 6f 67 72 61 6d 0a 20 20  igger program.  
76d0: 20 20 72 65 73 75 6d 65 73 20 65 78 65 63 75 74    resumes execut
76e0: 69 6f 6e 20 61 74 20 74 68 65 20 62 65 67 69 6e  ion at the begin
76f0: 6e 69 6e 67 20 6f 66 20 74 68 65 20 6e 65 78 74  ning of the next
7700: 20 73 74 65 70 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e   step..</p>..<p>
7710: 54 72 69 67 67 65 72 73 20 61 72 65 20 72 65 6d  Triggers are rem
7720: 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65 20 3c  oved using the <
7730: 61 20 68 72 65 66 3d 22 23 64 72 6f 70 74 72 69  a href="#droptri
7740: 67 67 65 72 22 3e 44 52 4f 50 20 54 52 49 47 47  gger">DROP TRIGG
7750: 45 52 3c 2f 61 3e 0a 73 74 61 74 65 6d 65 6e 74  ER</a>.statement
7760: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
7770: 6e 20 7b 43 52 45 41 54 45 20 56 49 45 57 7d 20  n {CREATE VIEW} 
7780: 7b 63 72 65 61 74 65 76 69 65 77 7d 0a 0a 53 79  {createview}..Sy
7790: 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e  ntax {sql-comman
77a0: 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d  d} {.CREATE [TEM
77b0: 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20 56  P | TEMPORARY] V
77c0: 49 45 57 20 5b 49 46 20 4e 4f 54 20 45 58 49 53  IEW [IF NOT EXIS
77d0: 54 53 5d 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e  TS] [<database-n
77e0: 61 6d 65 3e 2e 5d 20 3c 76 69 65 77 2d 6e 61 6d  ame>.] <view-nam
77f0: 65 3e 20 41 53 20 3c 73 65 6c 65 63 74 2d 73 74  e> AS <select-st
7800: 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73  atement>.}..puts
7810: 20 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45   {.<p>The CREATE
7820: 20 56 49 45 57 20 63 6f 6d 6d 61 6e 64 20 61 73   VIEW command as
7830: 73 69 67 6e 73 20 61 20 6e 61 6d 65 20 74 6f 20  signs a name to 
7840: 61 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20 0a  a pre-packaged .
7850: 3c 61 20 68 72 65 66 3d 22 23 73 65 6c 65 63 74  <a href="#select
7860: 22 3e 53 45 4c 45 43 54 3c 2f 61 3e 0a 73 74 61  ">SELECT</a>.sta
7870: 74 65 6d 65 6e 74 2e 20 20 4f 6e 63 65 20 74 68  tement.  Once th
7880: 65 20 76 69 65 77 20 69 73 20 63 72 65 61 74 65  e view is create
7890: 64 2c 20 69 74 20 63 61 6e 20 62 65 20 75 73 65  d, it can be use
78a0: 64 20 69 6e 20 74 68 65 20 46 52 4f 4d 20 63 6c  d in the FROM cl
78b0: 61 75 73 65 0a 6f 66 20 61 6e 6f 74 68 65 72 20  ause.of another 
78c0: 53 45 4c 45 43 54 20 69 6e 20 70 6c 61 63 65 20  SELECT in place 
78d0: 6f 66 20 61 20 74 61 62 6c 65 20 6e 61 6d 65 2e  of a table name.
78e0: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65  .</p>..<p>If the
78f0: 20 22 54 45 4d 50 22 20 6f 72 20 22 54 45 4d 50   "TEMP" or "TEMP
7900: 4f 52 41 52 59 22 20 6b 65 79 77 6f 72 64 20 6f  ORARY" keyword o
7910: 63 63 75 72 73 20 69 6e 20 62 65 74 77 65 65 6e  ccurs in between
7920: 20 22 43 52 45 41 54 45 22 0a 61 6e 64 20 22 56   "CREATE".and "V
7930: 49 45 57 22 20 74 68 65 6e 20 74 68 65 20 76 69  IEW" then the vi
7940: 65 77 20 74 68 61 74 20 69 73 20 63 72 65 61 74  ew that is creat
7950: 65 64 20 69 73 20 6f 6e 6c 79 20 76 69 73 69 62  ed is only visib
7960: 6c 65 20 74 6f 20 74 68 65 0a 70 72 6f 63 65 73  le to the.proces
7970: 73 20 74 68 61 74 20 6f 70 65 6e 65 64 20 74 68  s that opened th
7980: 65 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 69  e database and i
7990: 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  s automatically 
79a0: 64 65 6c 65 74 65 64 20 77 68 65 6e 0a 74 68 65  deleted when.the
79b0: 20 64 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f   database is clo
79c0: 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 49 66  sed.</p>..<p> If
79d0: 20 61 20 26 6c 74 3b 64 61 74 61 62 61 73 65 2d   a &lt;database-
79e0: 6e 61 6d 65 26 67 74 3b 20 69 73 20 73 70 65 63  name&gt; is spec
79f0: 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20  ified, then the 
7a00: 76 69 65 77 20 69 73 20 63 72 65 61 74 65 64 20  view is created 
7a10: 69 6e 20 0a 74 68 65 20 6e 61 6d 65 64 20 64 61  in .the named da
7a20: 74 61 62 61 73 65 2e 20 49 74 20 69 73 20 61 6e  tabase. It is an
7a30: 20 65 72 72 6f 72 20 74 6f 20 73 70 65 63 69 66   error to specif
7a40: 79 20 62 6f 74 68 20 61 20 26 6c 74 3b 64 61 74  y both a &lt;dat
7a50: 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 0a 61  abase-name&gt;.a
7a60: 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77  nd the TEMP keyw
7a70: 6f 72 64 2c 20 75 6e 6c 65 73 73 20 74 68 65 20  ord, unless the 
7a80: 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d  &lt;database-nam
7a90: 65 26 67 74 3b 20 69 73 20 22 74 65 6d 70 22 2e  e&gt; is "temp".
7aa0: 20 49 66 20 6e 6f 0a 64 61 74 61 62 61 73 65 20   If no.database 
7ab0: 6e 61 6d 65 20 69 73 20 73 70 65 63 69 66 69 65  name is specifie
7ac0: 64 2c 20 61 6e 64 20 74 68 65 20 54 45 4d 50 20  d, and the TEMP 
7ad0: 6b 65 79 77 6f 72 64 20 69 73 20 6e 6f 74 20 70  keyword is not p
7ae0: 72 65 73 65 6e 74 2c 0a 74 68 65 20 74 61 62 6c  resent,.the tabl
7af0: 65 20 69 73 20 63 72 65 61 74 65 64 20 69 6e 20  e is created in 
7b00: 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73  the main databas
7b10: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63  e.</p>..<p>You c
7b20: 61 6e 6e 6f 74 20 43 4f 50 59 2c 20 44 45 4c 45  annot COPY, DELE
7b30: 54 45 2c 20 49 4e 53 45 52 54 20 6f 72 20 55 50  TE, INSERT or UP
7b40: 44 41 54 45 20 61 20 76 69 65 77 2e 20 20 56 69  DATE a view.  Vi
7b50: 65 77 73 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c  ews are read-onl
7b60: 79 20 0a 69 6e 20 53 51 4c 69 74 65 2e 20 20 48  y .in SQLite.  H
7b70: 6f 77 65 76 65 72 2c 20 69 6e 20 6d 61 6e 79 20  owever, in many 
7b80: 63 61 73 65 73 20 79 6f 75 20 63 61 6e 20 75 73  cases you can us
7b90: 65 20 61 20 3c 61 20 68 72 65 66 3d 22 23 63 72  e a <a href="#cr
7ba0: 65 61 74 65 74 72 69 67 67 65 72 22 3e 0a 54 52  eatetrigger">.TR
7bb0: 49 47 47 45 52 3c 2f 61 3e 20 6f 6e 20 74 68 65  IGGER</a> on the
7bc0: 20 76 69 65 77 20 74 6f 20 61 63 63 6f 6d 70 6c   view to accompl
7bd0: 69 73 68 20 74 68 65 20 73 61 6d 65 20 74 68 69  ish the same thi
7be0: 6e 67 2e 20 20 56 69 65 77 73 20 61 72 65 20 72  ng.  Views are r
7bf0: 65 6d 6f 76 65 64 20 0a 77 69 74 68 20 74 68 65  emoved .with the
7c00: 20 3c 61 20 68 72 65 66 3d 22 23 64 72 6f 70 76   <a href="#dropv
7c10: 69 65 77 22 3e 44 52 4f 50 20 56 49 45 57 3c 2f  iew">DROP VIEW</
7c20: 61 3e 20 0a 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e  a> .command.</p>
7c30: 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45  .}..Section {CRE
7c40: 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
7c50: 45 7d 20 7b 63 72 65 61 74 65 76 74 61 62 7d 0a  E} {createvtab}.
7c60: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d  .Syntax {sql-com
7c70: 6d 61 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20 56  mand} {.CREATE V
7c80: 49 52 54 55 41 4c 20 54 41 42 4c 45 20 5b 3c 64  IRTUAL TABLE [<d
7c90: 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d  atabase-name> .]
7ca0: 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 55 53   <table-name> US
7cb0: 49 4e 47 20 3c 6d 6f 64 75 6c 65 2d 6e 61 6d 65  ING <module-name
7cc0: 3e 20 5b 28 20 3c 61 72 67 75 6d 65 6e 74 73 3e  > [( <arguments>
7cd0: 20 29 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70   )].}..puts {.<p
7ce0: 3e 41 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  >A virtual table
7cf0: 20 69 73 20 61 6e 20 69 6e 74 65 72 66 61 63 65   is an interface
7d00: 20 74 6f 20 61 6e 20 65 78 74 65 72 6e 61 6c 20   to an external 
7d10: 73 74 6f 72 61 67 65 20 6f 72 20 63 6f 6d 70 75  storage or compu
7d20: 74 61 74 69 6f 6e 0a 65 6e 67 69 6e 65 20 74 68  tation.engine th
7d30: 61 74 20 61 70 70 65 61 72 73 20 74 6f 20 62 65  at appears to be
7d40: 20 61 20 74 61 62 6c 65 20 62 75 74 20 64 6f 65   a table but doe
7d50: 73 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 73  s not actually s
7d60: 74 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  tore information
7d70: 0a 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  .in the database
7d80: 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49   file.</p>..<p>I
7d90: 6e 20 67 65 6e 65 72 61 6c 2c 20 79 6f 75 20 63  n general, you c
7da0: 61 6e 20 64 6f 20 61 6e 79 74 68 69 6e 67 20 77  an do anything w
7db0: 69 74 68 20 61 20 76 69 72 74 75 61 6c 20 74 61  ith a virtual ta
7dc0: 62 6c 65 20 74 68 61 74 20 63 61 6e 20 62 65 20  ble that can be 
7dd0: 64 6f 6e 65 0a 77 69 74 68 20 61 6e 20 6f 72 64  done.with an ord
7de0: 69 6e 61 72 79 20 74 61 62 6c 65 2c 20 65 78 63  inary table, exc
7df0: 65 70 74 20 74 68 61 74 20 79 6f 75 20 63 61 6e  ept that you can
7e00: 6e 6f 74 20 63 72 65 61 74 65 20 74 72 69 67 67  not create trigg
7e10: 65 72 73 20 6f 6e 20 61 0a 76 69 72 74 75 61 6c  ers on a.virtual
7e20: 20 74 61 62 6c 65 2e 20 20 53 6f 6d 65 20 76 69   table.  Some vi
7e30: 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c  rtual table impl
7e40: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6d 69 67 68  ementations migh
7e50: 74 20 69 6d 70 6f 73 65 20 61 64 64 69 74 69 6f  t impose additio
7e60: 6e 61 6c 0a 72 65 73 74 72 69 63 74 69 6f 6e 73  nal.restrictions
7e70: 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20  .  For example, 
7e80: 6d 61 6e 79 20 76 69 72 74 75 61 6c 20 74 61 62  many virtual tab
7e90: 6c 65 73 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c  les are read-onl
7ea0: 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 26  y.</p>..<p>The &
7eb0: 6c 74 3b 6d 6f 64 75 6c 65 2d 6e 61 6d 65 26 67  lt;module-name&g
7ec0: 74 3b 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f  t; is the name o
7ed0: 66 20 61 6e 20 6f 62 6a 65 63 74 20 74 68 61 74  f an object that
7ee0: 20 69 6d 70 6c 65 6d 65 6e 74 73 0a 74 68 65 20   implements.the 
7ef0: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 20  virtual table.  
7f00: 54 68 65 20 26 6c 74 3b 6d 6f 64 75 6c 65 2d 6e  The &lt;module-n
7f10: 61 6d 65 26 67 74 3b 20 6d 75 73 74 20 62 65 20  ame&gt; must be 
7f20: 72 65 67 69 73 74 65 72 65 64 20 77 69 74 68 0a  registered with.
7f30: 74 68 65 20 53 51 4c 69 74 65 20 64 61 74 61 62  the SQLite datab
7f40: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75  ase connection u
7f50: 73 69 6e 67 0a 3c 61 20 68 72 65 66 3d 22 63 61  sing.<a href="ca
7f60: 70 69 33 72 65 66 2e 68 74 6d 6c 23 73 71 6c 69  pi3ref.html#sqli
7f70: 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c  te3_create_modul
7f80: 65 22 3e 73 71 6c 69 74 65 33 5f 63 72 65 61 74  e">sqlite3_creat
7f90: 65 5f 6d 6f 64 75 6c 65 3c 2f 61 3e 0a 70 72 69  e_module</a>.pri
7fa0: 6f 72 20 74 6f 20 69 73 73 75 69 6e 67 20 74 68  or to issuing th
7fb0: 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c  e CREATE VIRTUAL
7fc0: 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
7fd0: 2e 0a 54 68 65 20 6d 6f 64 75 6c 65 20 74 61 6b  ..The module tak
7fe0: 65 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20  es zero or more 
7ff0: 63 6f 6d 6d 61 2d 73 65 70 61 72 61 74 65 64 20  comma-separated 
8000: 61 72 67 75 6d 65 6e 74 73 2e 0a 54 68 65 20 61  arguments..The a
8010: 72 67 75 6d 65 6e 74 73 20 63 61 6e 20 62 65 20  rguments can be 
8020: 6a 75 73 74 20 61 62 6f 75 74 20 61 6e 79 20 74  just about any t
8030: 65 78 74 20 61 73 20 6c 6f 6e 67 20 61 73 20 69  ext as long as i
8040: 74 20 68 61 73 20 62 61 6c 61 6e 63 65 64 0a 70  t has balanced.p
8050: 61 72 65 6e 74 68 65 73 65 73 2e 20 20 54 68 65  arentheses.  The
8060: 20 61 72 67 75 6d 65 6e 74 20 73 79 6e 74 61 78   argument syntax
8070: 20 69 73 20 73 75 66 66 69 63 69 65 6e 74 6c 79   is sufficiently
8080: 20 67 65 6e 65 72 61 6c 20 74 68 61 74 20 74 68   general that th
8090: 65 0a 61 72 67 75 6d 65 6e 74 73 20 63 61 6e 20  e.arguments can 
80a0: 62 65 20 6d 61 64 65 20 74 6f 20 61 70 70 65 61  be made to appea
80b0: 72 20 61 73 20 63 6f 6c 75 6d 6e 20 64 65 66 69  r as column defi
80c0: 6e 69 74 69 6f 6e 73 20 69 6e 20 61 20 74 72 61  nitions in a tra
80d0: 64 69 74 69 6f 6e 61 6c 0a 3c 61 20 68 72 65 66  ditional.<a href
80e0: 3d 22 23 63 72 65 61 74 65 74 61 62 6c 65 22 3e  ="#createtable">
80f0: 43 52 45 41 54 45 20 54 41 42 4c 45 3c 2f 61 3e  CREATE TABLE</a>
8100: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 0a 53 51   statement.  .SQ
8110: 4c 69 74 65 20 70 61 73 73 65 73 20 74 68 65 20  Lite passes the 
8120: 6d 6f 64 75 6c 65 20 61 72 67 75 6d 65 6e 74 73  module arguments
8130: 20 64 69 72 65 63 74 6c 79 0a 74 6f 20 74 68 65   directly.to the
8140: 20 6d 6f 64 75 6c 65 20 77 69 74 68 6f 75 74 20   module without 
8150: 61 6e 79 20 69 6e 74 65 72 70 72 65 74 61 74 69  any interpretati
8160: 6f 6e 2e 20 20 49 74 20 69 73 20 74 68 65 20 72  on.  It is the r
8170: 65 73 70 6f 6e 73 69 62 69 6c 69 74 79 0a 6f 66  esponsibility.of
8180: 20 74 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c   the module impl
8190: 65 6d 65 6e 74 61 74 69 6f 6e 20 74 6f 20 70 61  ementation to pa
81a0: 72 73 65 20 61 6e 64 20 69 6e 74 65 72 70 72 65  rse and interpre
81b0: 74 20 69 74 73 20 6f 77 6e 20 61 72 67 75 6d 65  t its own argume
81c0: 6e 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 76  nts.</p>..<p>A v
81d0: 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20  irtual table is 
81e0: 64 65 73 74 72 6f 79 65 64 20 75 73 69 6e 67 20  destroyed using 
81f0: 74 68 65 20 6f 72 64 69 6e 61 72 79 0a 3c 61 20  the ordinary.<a 
8200: 68 72 65 66 3d 22 23 64 72 6f 70 74 61 62 6c 65  href="#droptable
8210: 22 3e 44 52 4f 50 20 54 41 42 4c 45 3c 2f 61 3e  ">DROP TABLE</a>
8220: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65   statement.  The
8230: 72 65 20 69 73 20 6e 6f 0a 44 52 4f 50 20 56 49  re is no.DROP VI
8240: 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74  RTUAL TABLE stat
8250: 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65  ement.</p>.}..Se
8260: 63 74 69 6f 6e 20 44 45 4c 45 54 45 20 64 65 6c  ction DELETE del
8270: 65 74 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ete..Syntax {sql
8280: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 44 45  -statement} {.DE
8290: 4c 45 54 45 20 46 52 4f 4d 20 5b 3c 64 61 74 61  LETE FROM [<data
82a0: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74  base-name> .] <t
82b0: 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 57 48 45 52  able-name> [WHER
82c0: 45 20 3c 65 78 70 72 3e 5d 0a 7d 0a 0a 70 75 74  E <expr>].}..put
82d0: 73 20 7b 0a 3c 70 3e 54 68 65 20 44 45 4c 45 54  s {.<p>The DELET
82e0: 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65  E command is use
82f0: 64 20 74 6f 20 72 65 6d 6f 76 65 20 72 65 63 6f  d to remove reco
8300: 72 64 73 20 66 72 6f 6d 20 61 20 74 61 62 6c 65  rds from a table
8310: 2e 0a 54 68 65 20 63 6f 6d 6d 61 6e 64 20 63 6f  ..The command co
8320: 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20 22 44  nsists of the "D
8330: 45 4c 45 54 45 20 46 52 4f 4d 22 20 6b 65 79 77  ELETE FROM" keyw
8340: 6f 72 64 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79  ords followed by
8350: 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  .the name of the
8360: 20 74 61 62 6c 65 20 66 72 6f 6d 20 77 68 69 63   table from whic
8370: 68 20 72 65 63 6f 72 64 73 20 61 72 65 20 74 6f  h records are to
8380: 20 62 65 20 72 65 6d 6f 76 65 64 2e 0a 3c 2f 70   be removed..</p
8390: 3e 0a 0a 3c 70 3e 57 69 74 68 6f 75 74 20 61 20  >..<p>Without a 
83a0: 57 48 45 52 45 20 63 6c 61 75 73 65 2c 20 61 6c  WHERE clause, al
83b0: 6c 20 72 6f 77 73 20 6f 66 20 74 68 65 20 74 61  l rows of the ta
83c0: 62 6c 65 20 61 72 65 20 72 65 6d 6f 76 65 64 2e  ble are removed.
83d0: 0a 49 66 20 61 20 57 48 45 52 45 20 63 6c 61 75  .If a WHERE clau
83e0: 73 65 20 69 73 20 73 75 70 70 6c 69 65 64 2c 20  se is supplied, 
83f0: 74 68 65 6e 20 6f 6e 6c 79 20 74 68 6f 73 65 20  then only those 
8400: 72 6f 77 73 20 74 68 61 74 20 6d 61 74 63 68 0a  rows that match.
8410: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 61  the expression a
8420: 72 65 20 72 65 6d 6f 76 65 64 2e 3c 2f 70 3e 0a  re removed.</p>.
8430: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 44 45 54  }...Section {DET
8440: 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 64 65  ACH DATABASE} de
8450: 74 61 63 68 0a 0a 53 79 6e 74 61 78 20 7b 73 71  tach..Syntax {sq
8460: 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 45 54  l-command} {.DET
8470: 41 43 48 20 5b 44 41 54 41 42 41 53 45 5d 20 3c  ACH [DATABASE] <
8480: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 0a 7d  database-name>.}
8490: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 69 73  ..puts {.<p>This
84a0: 20 73 74 61 74 65 6d 65 6e 74 20 64 65 74 61 63   statement detac
84b0: 68 65 73 20 61 6e 20 61 64 64 69 74 69 6f 6e 61  hes an additiona
84c0: 6c 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  l database conne
84d0: 63 74 69 6f 6e 20 70 72 65 76 69 6f 75 73 6c 79  ction previously
84e0: 20 0a 61 74 74 61 63 68 65 64 20 75 73 69 6e 67   .attached using
84f0: 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 61   the <a href="#a
8500: 74 74 61 63 68 22 3e 41 54 54 41 43 48 20 44 41  ttach">ATTACH DA
8510: 54 41 42 41 53 45 3c 2f 61 3e 20 73 74 61 74 65  TABASE</a> state
8520: 6d 65 6e 74 2e 20 20 49 74 0a 69 73 20 70 6f 73  ment.  It.is pos
8530: 73 69 62 6c 65 20 74 6f 20 68 61 76 65 20 74 68  sible to have th
8540: 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20  e same database 
8550: 66 69 6c 65 20 61 74 74 61 63 68 65 64 20 6d 75  file attached mu
8560: 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 75 73 69  ltiple times usi
8570: 6e 67 20 0a 64 69 66 66 65 72 65 6e 74 20 6e 61  ng .different na
8580: 6d 65 73 2c 20 61 6e 64 20 64 65 74 61 63 68 69  mes, and detachi
8590: 6e 67 20 6f 6e 65 20 63 6f 6e 6e 65 63 74 69 6f  ng one connectio
85a0: 6e 20 74 6f 20 61 20 66 69 6c 65 20 77 69 6c 6c  n to a file will
85b0: 20 6c 65 61 76 65 20 74 68 65 20 0a 6f 74 68 65   leave the .othe
85c0: 72 73 20 69 6e 74 61 63 74 2e 3c 2f 70 3e 0a 0a  rs intact.</p>..
85d0: 3c 70 3e 54 68 69 73 20 73 74 61 74 65 6d 65 6e  <p>This statemen
85e0: 74 20 77 69 6c 6c 20 66 61 69 6c 20 69 66 20 53  t will fail if S
85f0: 51 4c 69 74 65 20 69 73 20 69 6e 20 74 68 65 20  QLite is in the 
8600: 6d 69 64 64 6c 65 20 6f 66 20 61 20 74 72 61 6e  middle of a tran
8610: 73 61 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 7d 0a 0a  saction.</p>.}..
8620: 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 49  .Section {DROP I
8630: 4e 44 45 58 7d 20 64 72 6f 70 69 6e 64 65 78 0a  NDEX} dropindex.
8640: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d  .Syntax {sql-com
8650: 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50 20 49 4e 44  mand} {.DROP IND
8660: 45 58 20 5b 49 46 20 45 58 49 53 54 53 5d 20 5b  EX [IF EXISTS] [
8670: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
8680: 2e 5d 20 3c 69 6e 64 65 78 2d 6e 61 6d 65 3e 0a  .] <index-name>.
8690: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
86a0: 20 44 52 4f 50 20 49 4e 44 45 58 20 73 74 61 74   DROP INDEX stat
86b0: 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 6e  ement removes an
86c0: 20 69 6e 64 65 78 20 61 64 64 65 64 0a 77 69 74   index added.wit
86d0: 68 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23  h the <a href="#
86e0: 63 72 65 61 74 65 69 6e 64 65 78 22 3e 0a 43 52  createindex">.CR
86f0: 45 41 54 45 20 49 4e 44 45 58 3c 2f 61 3e 20 73  EATE INDEX</a> s
8700: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 69  tatement.  The i
8710: 6e 64 65 78 20 6e 61 6d 65 64 20 69 73 20 63 6f  ndex named is co
8720: 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64  mpletely removed
8730: 20 66 72 6f 6d 0a 74 68 65 20 64 69 73 6b 2e 20   from.the disk. 
8740: 20 54 68 65 20 6f 6e 6c 79 20 77 61 79 20 74 6f   The only way to
8750: 20 72 65 63 6f 76 65 72 20 74 68 65 20 69 6e 64   recover the ind
8760: 65 78 20 69 73 20 74 6f 20 72 65 65 6e 74 65 72  ex is to reenter
8770: 20 74 68 65 0a 61 70 70 72 6f 70 72 69 61 74 65   the.appropriate
8780: 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 63 6f   CREATE INDEX co
8790: 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  mmand.</p>..<p>T
87a0: 68 65 20 44 52 4f 50 20 49 4e 44 45 58 20 73 74  he DROP INDEX st
87b0: 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74  atement does not
87c0: 20 72 65 64 75 63 65 20 74 68 65 20 73 69 7a 65   reduce the size
87d0: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
87e0: 20 0a 66 69 6c 65 20 69 6e 20 74 68 65 20 64 65   .file in the de
87f0: 66 61 75 6c 74 20 6d 6f 64 65 2e 0a 45 6d 70 74  fault mode..Empt
8800: 79 20 73 70 61 63 65 20 69 6e 20 74 68 65 20 64  y space in the d
8810: 61 74 61 62 61 73 65 20 69 73 20 72 65 74 61 69  atabase is retai
8820: 6e 65 64 20 66 6f 72 20 6c 61 74 65 72 20 49 4e  ned for later IN
8830: 53 45 52 54 73 2e 20 20 54 6f 20 0a 72 65 6d 6f  SERTs.  To .remo
8840: 76 65 20 66 72 65 65 20 73 70 61 63 65 20 69 6e  ve free space in
8850: 20 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 75   the database, u
8860: 73 65 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22  se the <a href="
8870: 23 76 61 63 75 75 6d 22 3e 56 41 43 55 55 4d 3c  #vacuum">VACUUM<
8880: 2f 61 3e 20 0a 63 6f 6d 6d 61 6e 64 2e 20 20 49  /a> .command.  I
8890: 66 20 41 55 54 4f 56 41 43 55 55 4d 20 6d 6f 64  f AUTOVACUUM mod
88a0: 65 20 69 73 20 65 6e 61 62 6c 65 64 20 66 6f 72  e is enabled for
88b0: 20 61 20 64 61 74 61 62 61 73 65 20 74 68 65 6e   a database then
88c0: 20 73 70 61 63 65 0a 77 69 6c 6c 20 62 65 20 66   space.will be f
88d0: 72 65 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c  reed automatical
88e0: 6c 79 20 62 79 20 44 52 4f 50 20 49 4e 44 45 58  ly by DROP INDEX
88f0: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
8900: 6e 20 7b 44 52 4f 50 20 54 41 42 4c 45 7d 20 64  n {DROP TABLE} d
8910: 72 6f 70 74 61 62 6c 65 0a 0a 53 79 6e 74 61 78  roptable..Syntax
8920: 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b   {sql-command} {
8930: 0a 44 52 4f 50 20 54 41 42 4c 45 20 5b 49 46 20  .DROP TABLE [IF 
8940: 45 58 49 53 54 53 5d 20 5b 3c 64 61 74 61 62 61  EXISTS] [<databa
8950: 73 65 2d 6e 61 6d 65 3e 2e 5d 20 3c 74 61 62 6c  se-name>.] <tabl
8960: 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20  e-name>.}..puts 
8970: 7b 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 54 41  {.<p>The DROP TA
8980: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 72 65  BLE statement re
8990: 6d 6f 76 65 73 20 61 20 74 61 62 6c 65 20 61 64  moves a table ad
89a0: 64 65 64 20 77 69 74 68 20 74 68 65 20 3c 61 20  ded with the <a 
89b0: 68 72 65 66 3d 0a 22 23 63 72 65 61 74 65 74 61  href=."#createta
89c0: 62 6c 65 22 3e 43 52 45 41 54 45 20 54 41 42 4c  ble">CREATE TABL
89d0: 45 3c 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e  E</a> statement.
89e0: 20 20 54 68 65 20 6e 61 6d 65 20 73 70 65 63 69    The name speci
89f0: 66 69 65 64 20 69 73 20 74 68 65 0a 74 61 62 6c  fied is the.tabl
8a00: 65 20 6e 61 6d 65 2e 20 20 49 74 20 69 73 20 63  e name.  It is c
8a10: 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65  ompletely remove
8a20: 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62  d from the datab
8a30: 61 73 65 20 73 63 68 65 6d 61 20 61 6e 64 20 74  ase schema and t
8a40: 68 65 20 0a 64 69 73 6b 20 66 69 6c 65 2e 20 20  he .disk file.  
8a50: 54 68 65 20 74 61 62 6c 65 20 63 61 6e 20 6e 6f  The table can no
8a60: 74 20 62 65 20 72 65 63 6f 76 65 72 65 64 2e 20  t be recovered. 
8a70: 20 41 6c 6c 20 69 6e 64 69 63 65 73 20 61 73 73   All indices ass
8a80: 6f 63 69 61 74 65 64 20 0a 77 69 74 68 20 74 68  ociated .with th
8a90: 65 20 74 61 62 6c 65 20 61 72 65 20 61 6c 73 6f  e table are also
8aa0: 20 64 65 6c 65 74 65 64 2e 3c 2f 70 3e 0a 0a 3c   deleted.</p>..<
8ab0: 70 3e 54 68 65 20 44 52 4f 50 20 54 41 42 4c 45  p>The DROP TABLE
8ac0: 20 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20   statement does 
8ad0: 6e 6f 74 20 72 65 64 75 63 65 20 74 68 65 20 73  not reduce the s
8ae0: 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  ize of the datab
8af0: 61 73 65 20 0a 66 69 6c 65 20 69 6e 20 74 68 65  ase .file in the
8b00: 20 64 65 66 61 75 6c 74 20 6d 6f 64 65 2e 20 20   default mode.  
8b10: 45 6d 70 74 79 20 73 70 61 63 65 20 69 6e 20 74  Empty space in t
8b20: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 72  he database is r
8b30: 65 74 61 69 6e 65 64 20 66 6f 72 0a 6c 61 74 65  etained for.late
8b40: 72 20 49 4e 53 45 52 54 73 2e 20 20 54 6f 20 0a  r INSERTs.  To .
8b50: 72 65 6d 6f 76 65 20 66 72 65 65 20 73 70 61 63  remove free spac
8b60: 65 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73  e in the databas
8b70: 65 2c 20 75 73 65 20 74 68 65 20 3c 61 20 68 72  e, use the <a hr
8b80: 65 66 3d 22 23 76 61 63 75 75 6d 22 3e 56 41 43  ef="#vacuum">VAC
8b90: 55 55 4d 3c 2f 61 3e 20 0a 63 6f 6d 6d 61 6e 64  UUM</a> .command
8ba0: 2e 20 20 49 66 20 41 55 54 4f 56 41 43 55 55 4d  .  If AUTOVACUUM
8bb0: 20 6d 6f 64 65 20 69 73 20 65 6e 61 62 6c 65 64   mode is enabled
8bc0: 20 66 6f 72 20 61 20 64 61 74 61 62 61 73 65 20   for a database 
8bd0: 74 68 65 6e 20 73 70 61 63 65 0a 77 69 6c 6c 20  then space.will 
8be0: 62 65 20 66 72 65 65 64 20 61 75 74 6f 6d 61 74  be freed automat
8bf0: 69 63 61 6c 6c 79 20 62 79 20 44 52 4f 50 20 54  ically by DROP T
8c00: 41 42 4c 45 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  ABLE.</p>..<p>Th
8c10: 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20 45 58  e optional IF EX
8c20: 49 53 54 53 20 63 6c 61 75 73 65 20 73 75 70 70  ISTS clause supp
8c30: 72 65 73 73 65 73 20 74 68 65 20 65 72 72 6f 72  resses the error
8c40: 20 74 68 61 74 20 77 6f 75 6c 64 20 6e 6f 72 6d   that would norm
8c50: 61 6c 6c 79 0a 72 65 73 75 6c 74 20 69 66 20 74  ally.result if t
8c60: 68 65 20 74 61 62 6c 65 20 64 6f 65 73 20 6e 6f  he table does no
8c70: 74 20 65 78 69 73 74 2e 3c 2f 70 3e 0a 7d 0a 0a  t exist.</p>.}..
8c80: 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54  .Section {DROP T
8c90: 52 49 47 47 45 52 7d 20 64 72 6f 70 74 72 69 67  RIGGER} droptrig
8ca0: 67 65 72 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ger.Syntax {sql-
8cb0: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 44 52 4f  statement} {.DRO
8cc0: 50 20 54 52 49 47 47 45 52 20 5b 49 46 20 45 58  P TRIGGER [IF EX
8cd0: 49 53 54 53 5d 20 5b 3c 64 61 74 61 62 61 73 65  ISTS] [<database
8ce0: 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 72 69 67 67  -name> .] <trigg
8cf0: 65 72 2d 6e 61 6d 65 3e 0a 7d 0a 70 75 74 73 20  er-name>.}.puts 
8d00: 7b 20 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 54  { .<p>The DROP T
8d10: 52 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74  RIGGER statement
8d20: 20 72 65 6d 6f 76 65 73 20 61 20 74 72 69 67 67   removes a trigg
8d30: 65 72 20 63 72 65 61 74 65 64 20 62 79 20 74 68  er created by th
8d40: 65 20 0a 3c 61 20 68 72 65 66 3d 22 23 63 72 65  e .<a href="#cre
8d50: 61 74 65 74 72 69 67 67 65 72 22 3e 43 52 45 41  atetrigger">CREA
8d60: 54 45 20 54 52 49 47 47 45 52 3c 2f 61 3e 20 73  TE TRIGGER</a> s
8d70: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 74  tatement.  The t
8d80: 72 69 67 67 65 72 20 69 73 20 0a 64 65 6c 65 74  rigger is .delet
8d90: 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61  ed from the data
8da0: 62 61 73 65 20 73 63 68 65 6d 61 2e 20 4e 6f 74  base schema. Not
8db0: 65 20 74 68 61 74 20 74 72 69 67 67 65 72 73 20  e that triggers 
8dc0: 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  are automaticall
8dd0: 79 20 0a 64 72 6f 70 70 65 64 20 77 68 65 6e 20  y .dropped when 
8de0: 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 74  the associated t
8df0: 61 62 6c 65 20 69 73 20 64 72 6f 70 70 65 64 2e  able is dropped.
8e00: 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  </p>.}...Section
8e10: 20 7b 44 52 4f 50 20 56 49 45 57 7d 20 64 72 6f   {DROP VIEW} dro
8e20: 70 76 69 65 77 0a 0a 53 79 6e 74 61 78 20 7b 73  pview..Syntax {s
8e30: 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 52  ql-command} {.DR
8e40: 4f 50 20 56 49 45 57 20 5b 49 46 20 45 58 49 53  OP VIEW [IF EXIS
8e50: 54 53 5d 20 3c 76 69 65 77 2d 6e 61 6d 65 3e 0a  TS] <view-name>.
8e60: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
8e70: 20 44 52 4f 50 20 56 49 45 57 20 73 74 61 74 65   DROP VIEW state
8e80: 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 76  ment removes a v
8e90: 69 65 77 20 63 72 65 61 74 65 64 20 62 79 20 74  iew created by t
8ea0: 68 65 20 3c 61 20 68 72 65 66 3d 0a 22 23 63 72  he <a href=."#cr
8eb0: 65 61 74 65 76 69 65 77 22 3e 43 52 45 41 54 45  eateview">CREATE
8ec0: 20 56 49 45 57 3c 2f 61 3e 20 73 74 61 74 65 6d   VIEW</a> statem
8ed0: 65 6e 74 2e 20 20 54 68 65 20 6e 61 6d 65 20 73  ent.  The name s
8ee0: 70 65 63 69 66 69 65 64 20 69 73 20 74 68 65 20  pecified is the 
8ef0: 0a 76 69 65 77 20 6e 61 6d 65 2e 20 20 49 74 20  .view name.  It 
8f00: 69 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20  is removed from 
8f10: 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
8f20: 65 6d 61 2c 20 62 75 74 20 6e 6f 20 61 63 74 75  ema, but no actu
8f30: 61 6c 20 64 61 74 61 20 0a 69 6e 20 74 68 65 20  al data .in the 
8f40: 75 6e 64 65 72 6c 79 69 6e 67 20 62 61 73 65 20  underlying base 
8f50: 74 61 62 6c 65 73 20 69 73 20 6d 6f 64 69 66 69  tables is modifi
8f60: 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74  ed.</p>.}...Sect
8f70: 69 6f 6e 20 45 58 50 4c 41 49 4e 20 65 78 70 6c  ion EXPLAIN expl
8f80: 61 69 6e 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ain..Syntax {sql
8f90: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 45 58  -statement} {.EX
8fa0: 50 4c 41 49 4e 20 3c 73 71 6c 2d 73 74 61 74 65  PLAIN <sql-state
8fb0: 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a  ment>.}..puts {.
8fc0: 3c 70 3e 54 68 65 20 45 58 50 4c 41 49 4e 20 63  <p>The EXPLAIN c
8fd0: 6f 6d 6d 61 6e 64 20 6d 6f 64 69 66 69 65 72 20  ommand modifier 
8fe0: 69 73 20 61 20 6e 6f 6e 2d 73 74 61 6e 64 61 72  is a non-standar
8ff0: 64 20 65 78 74 65 6e 73 69 6f 6e 2e 20 20 54 68  d extension.  Th
9000: 65 0a 69 64 65 61 20 63 6f 6d 65 73 20 66 72 6f  e.idea comes fro
9010: 6d 20 61 20 73 69 6d 69 6c 61 72 20 63 6f 6d 6d  m a similar comm
9020: 61 6e 64 20 66 6f 75 6e 64 20 69 6e 20 50 6f 73  and found in Pos
9030: 74 67 72 65 53 51 4c 2c 20 62 75 74 20 74 68 65  tgreSQL, but the
9040: 20 6f 70 65 72 61 74 69 6f 6e 0a 69 73 20 63 6f   operation.is co
9050: 6d 70 6c 65 74 65 6c 79 20 64 69 66 66 65 72 65  mpletely differe
9060: 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74  nt.</p>..<p>If t
9070: 68 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f  he EXPLAIN keywo
9080: 72 64 20 61 70 70 65 61 72 73 20 62 65 66 6f 72  rd appears befor
9090: 65 20 61 6e 79 20 6f 74 68 65 72 20 53 51 4c 69  e any other SQLi
90a0: 74 65 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a 74  te SQL command.t
90b0: 68 65 6e 20 69 6e 73 74 65 61 64 20 6f 66 20 61  hen instead of a
90c0: 63 74 75 61 6c 6c 79 20 65 78 65 63 75 74 69 6e  ctually executin
90d0: 67 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2c 20 74  g the command, t
90e0: 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  he SQLite librar
90f0: 79 20 77 69 6c 6c 0a 72 65 70 6f 72 74 20 62 61  y will.report ba
9100: 63 6b 20 74 68 65 20 73 65 71 75 65 6e 63 65 20  ck the sequence 
9110: 6f 66 20 76 69 72 74 75 61 6c 20 6d 61 63 68 69  of virtual machi
9120: 6e 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20  ne instructions 
9130: 69 74 20 77 6f 75 6c 64 20 68 61 76 65 0a 75 73  it would have.us
9140: 65 64 20 74 6f 20 65 78 65 63 75 74 65 20 74 68  ed to execute th
9150: 65 20 63 6f 6d 6d 61 6e 64 20 68 61 64 20 74 68  e command had th
9160: 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72  e EXPLAIN keywor
9170: 64 20 6e 6f 74 20 62 65 65 6e 20 70 72 65 73 65  d not been prese
9180: 6e 74 2e 0a 46 6f 72 20 61 64 64 69 74 69 6f 6e  nt..For addition
9190: 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61  al information a
91a0: 62 6f 75 74 20 76 69 72 74 75 61 6c 20 6d 61 63  bout virtual mac
91b0: 68 69 6e 65 20 69 6e 73 74 72 75 63 74 69 6f 6e  hine instruction
91c0: 73 20 73 65 65 0a 74 68 65 20 3c 61 20 68 72 65  s see.the <a hre
91d0: 66 3d 22 61 72 63 68 2e 68 74 6d 6c 22 3e 61 72  f="arch.html">ar
91e0: 63 68 69 74 65 63 74 75 72 65 20 64 65 73 63 72  chitecture descr
91f0: 69 70 74 69 6f 6e 3c 2f 61 3e 20 6f 72 20 74 68  iption</a> or th
9200: 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 0a  e documentation.
9210: 6f 6e 20 3c 61 20 68 72 65 66 3d 22 6f 70 63 6f  on <a href="opco
9220: 64 65 2e 68 74 6d 6c 22 3e 61 76 61 69 6c 61 62  de.html">availab
9230: 6c 65 20 6f 70 63 6f 64 65 73 3c 2f 61 3e 20 66  le opcodes</a> f
9240: 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 6d  or the virtual m
9250: 61 63 68 69 6e 65 2e 3c 2f 70 3e 0a 7d 0a 0a 0a  achine.</p>.}...
9260: 53 65 63 74 69 6f 6e 20 65 78 70 72 65 73 73 69  Section expressi
9270: 6f 6e 20 65 78 70 72 0a 0a 53 79 6e 74 61 78 20  on expr..Syntax 
9280: 7b 65 78 70 72 7d 20 7b 0a 3c 65 78 70 72 3e 20  {expr} {.<expr> 
9290: 3c 62 69 6e 61 72 79 2d 6f 70 3e 20 3c 65 78 70  <binary-op> <exp
92a0: 72 3e 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54  r> |.<expr> [NOT
92b0: 5d 20 3c 6c 69 6b 65 2d 6f 70 3e 20 3c 65 78 70  ] <like-op> <exp
92c0: 72 3e 20 5b 45 53 43 41 50 45 20 3c 65 78 70 72  r> [ESCAPE <expr
92d0: 3e 5d 20 7c 0a 3c 75 6e 61 72 79 2d 6f 70 3e 20  >] |.<unary-op> 
92e0: 3c 65 78 70 72 3e 20 7c 0a 28 20 3c 65 78 70 72  <expr> |.( <expr
92f0: 3e 20 29 20 7c 0a 3c 63 6f 6c 75 6d 6e 2d 6e 61  > ) |.<column-na
9300: 6d 65 3e 20 7c 0a 3c 74 61 62 6c 65 2d 6e 61 6d  me> |.<table-nam
9310: 65 3e 20 2e 20 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d  e> . <column-nam
9320: 65 3e 20 7c 0a 3c 64 61 74 61 62 61 73 65 2d 6e  e> |.<database-n
9330: 61 6d 65 3e 20 2e 20 3c 74 61 62 6c 65 2d 6e 61  ame> . <table-na
9340: 6d 65 3e 20 2e 20 3c 63 6f 6c 75 6d 6e 2d 6e 61  me> . <column-na
9350: 6d 65 3e 20 7c 0a 3c 6c 69 74 65 72 61 6c 2d 76  me> |.<literal-v
9360: 61 6c 75 65 3e 20 7c 0a 3c 70 61 72 61 6d 65 74  alue> |.<paramet
9370: 65 72 3e 20 7c 0a 3c 66 75 6e 63 74 69 6f 6e 2d  er> |.<function-
9380: 6e 61 6d 65 3e 20 28 20 3c 65 78 70 72 2d 6c 69  name> ( <expr-li
9390: 73 74 3e 20 7c 20 53 54 41 52 20 29 20 7c 0a 3c  st> | STAR ) |.<
93a0: 65 78 70 72 3e 20 49 53 4e 55 4c 4c 20 7c 0a 3c  expr> ISNULL |.<
93b0: 65 78 70 72 3e 20 4e 4f 54 4e 55 4c 4c 20 7c 0a  expr> NOTNULL |.
93c0: 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 42 45 54  <expr> [NOT] BET
93d0: 57 45 45 4e 20 3c 65 78 70 72 3e 20 41 4e 44 20  WEEN <expr> AND 
93e0: 3c 65 78 70 72 3e 20 7c 0a 3c 65 78 70 72 3e 20  <expr> |.<expr> 
93f0: 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c 76 61 6c 75  [NOT] IN ( <valu
9400: 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 3c 65 78 70  e-list> ) |.<exp
9410: 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c 73  r> [NOT] IN ( <s
9420: 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e  elect-statement>
9430: 20 29 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54   ) |.<expr> [NOT
9440: 5d 20 49 4e 20 5b 3c 64 61 74 61 62 61 73 65 2d  ] IN [<database-
9450: 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d  name> .] <table-
9460: 6e 61 6d 65 3e 20 7c 0a 5b 45 58 49 53 54 53 5d  name> |.[EXISTS]
9470: 20 28 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65   ( <select-state
9480: 6d 65 6e 74 3e 20 29 20 7c 0a 43 41 53 45 20 5b  ment> ) |.CASE [
9490: 3c 65 78 70 72 3e 5d 20 4c 50 20 57 48 45 4e 20  <expr>] LP WHEN 
94a0: 3c 65 78 70 72 3e 20 54 48 45 4e 20 3c 65 78 70  <expr> THEN <exp
94b0: 72 3e 20 52 50 50 4c 55 53 20 5b 45 4c 53 45 20  r> RPPLUS [ELSE 
94c0: 3c 65 78 70 72 3e 5d 20 45 4e 44 20 7c 0a 43 41  <expr>] END |.CA
94d0: 53 54 20 28 20 3c 65 78 70 72 3e 20 41 53 20 3c  ST ( <expr> AS <
94e0: 74 79 70 65 3e 20 29 20 7c 0a 3c 65 78 70 72 3e  type> ) |.<expr>
94f0: 20 43 4f 4c 4c 41 54 45 20 3c 63 6f 6c 6c 61 74   COLLATE <collat
9500: 69 6f 6e 2d 6e 61 6d 65 3e 0a 7d 20 7b 6c 69 6b  ion-name>.} {lik
9510: 65 2d 6f 70 7d 20 7b 0a 4c 49 4b 45 20 7c 20 47  e-op} {.LIKE | G
9520: 4c 4f 42 20 7c 20 52 45 47 45 58 50 20 7c 20 4d  LOB | REGEXP | M
9530: 41 54 43 48 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  ATCH.}..puts {.<
9540: 70 3e 54 68 69 73 20 73 65 63 74 69 6f 6e 20 69  p>This section i
9550: 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d  s different from
9560: 20 74 68 65 20 6f 74 68 65 72 73 2e 20 20 4d 6f   the others.  Mo
9570: 73 74 20 6f 74 68 65 72 20 73 65 63 74 69 6f 6e  st other section
9580: 73 20 6f 66 0a 74 68 69 73 20 64 6f 63 75 6d 65  s of.this docume
9590: 6e 74 20 74 61 6c 6b 73 20 61 62 6f 75 74 20 61  nt talks about a
95a0: 20 70 61 72 74 69 63 75 6c 61 72 20 53 51 4c 20   particular SQL 
95b0: 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73 20 73  command.  This s
95c0: 65 63 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f 74 20  ection does.not 
95d0: 74 61 6c 6b 20 61 62 6f 75 74 20 61 20 73 74 61  talk about a sta
95e0: 6e 64 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e 64 20  ndalone command 
95f0: 62 75 74 20 61 62 6f 75 74 20 22 65 78 70 72 65  but about "expre
9600: 73 73 69 6f 6e 73 22 20 77 68 69 63 68 20 61 72  ssions" which ar
9610: 65 20 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e 74 73  e .subcomponents
9620: 20 6f 66 20 6d 6f 73 74 20 6f 74 68 65 72 20 63   of most other c
9630: 6f 6d 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a 3c 70  ommands.</p>..<p
9640: 3e 53 51 4c 69 74 65 20 75 6e 64 65 72 73 74 61  >SQLite understa
9650: 6e 64 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  nds the followin
9660: 67 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f  g binary operato
9670: 72 73 2c 20 69 6e 20 6f 72 64 65 72 20 66 72 6f  rs, in order fro
9680: 6d 0a 68 69 67 68 65 73 74 20 74 6f 20 6c 6f 77  m.highest to low
9690: 65 73 74 20 70 72 65 63 65 64 65 6e 63 65 3a 3c  est precedence:<
96a0: 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
96b0: 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c  ><pre>.<font col
96c0: 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69  or="#2c2cf0"><bi
96d0: 67 3e 7c 7c 0a 2a 20 20 20 20 2f 20 20 20 20 25  g>||.*    /    %
96e0: 0a 2b 20 20 20 20 2d 0a 26 6c 74 3b 26 6c 74 3b  .+    -.&lt;&lt;
96f0: 20 20 20 26 67 74 3b 26 67 74 3b 20 20 20 26 61     &gt;&gt;   &a
9700: 6d 70 3b 20 20 20 20 7c 0a 26 6c 74 3b 20 20 20  mp;    |.&lt;   
9710: 20 26 6c 74 3b 3d 20 20 20 26 67 74 3b 20 20 20   &lt;=   &gt;   
9720: 20 26 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d 20 20   &gt;=.=    ==  
9730: 20 21 3d 20 20 20 26 6c 74 3b 26 67 74 3b 20 20   !=   &lt;&gt;  
9740: 20 3c 2f 62 69 67 3e 49 4e 0a 41 4e 44 20 20 20   </big>IN.AND   
9750: 0a 4f 52 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65  .OR</font>.</pre
9760: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  ></blockquote>..
9770: 3c 70 3e 53 75 70 70 6f 72 74 65 64 20 75 6e 61  <p>Supported una
9780: 72 79 20 70 72 65 66 69 78 20 6f 70 65 72 61 74  ry prefix operat
9790: 6f 72 73 20 61 72 65 20 74 68 65 73 65 3a 3c 2f  ors are these:</
97a0: 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
97b0: 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f  <pre>.<font colo
97c0: 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67  r="#2c2cf0"><big
97d0: 3e 2d 20 20 20 20 2b 20 20 20 20 21 20 20 20 20  >-    +    !    
97e0: 7e 20 20 20 20 4e 4f 54 3c 2f 62 69 67 3e 3c 2f  ~    NOT</big></
97f0: 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c  font>.</pre></bl
9800: 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 54 68  ockquote>..<p>Th
9810: 65 20 43 4f 4c 4c 41 54 45 20 6f 70 65 72 61 74  e COLLATE operat
9820: 6f 72 20 63 61 6e 20 62 65 20 74 68 6f 75 67 68  or can be though
9830: 74 20 6f 66 20 61 73 20 61 20 75 6e 61 72 79 20  t of as a unary 
9840: 70 6f 73 74 66 69 78 0a 6f 70 65 72 61 74 6f 72  postfix.operator
9850: 2e 20 20 54 68 65 20 43 4f 4c 4c 41 54 45 20 6f  .  The COLLATE o
9860: 70 65 72 61 74 6f 72 20 68 61 73 20 74 68 65 20  perator has the 
9870: 68 69 67 68 65 73 74 20 70 72 65 63 65 64 65 6e  highest preceden
9880: 63 65 2e 0a 49 74 20 61 6c 77 61 79 73 20 62 69  ce..It always bi
9890: 6e 64 73 20 6d 6f 72 65 20 74 69 67 68 74 6c 79  nds more tightly
98a0: 20 74 68 61 6e 20 61 6e 79 20 70 72 65 66 69 78   than any prefix
98b0: 20 75 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20   unary operator 
98c0: 6f 72 0a 61 6e 79 20 62 69 6e 61 72 79 20 6f 70  or.any binary op
98d0: 65 72 61 74 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e  erator.</p>..<p>
98e0: 54 68 65 20 75 6e 61 72 79 20 6f 70 65 72 61 74  The unary operat
98f0: 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 2b 5d 20  or [Operator +] 
9900: 69 73 20 61 20 6e 6f 2d 6f 70 2e 20 20 49 74 20  is a no-op.  It 
9910: 63 61 6e 20 62 65 20 61 70 70 6c 69 65 64 0a 74  can be applied.t
9920: 6f 20 73 74 72 69 6e 67 73 2c 20 6e 75 6d 62 65  o strings, numbe
9930: 72 73 2c 20 6f 72 20 62 6c 6f 62 73 20 61 6e 64  rs, or blobs and
9940: 20 69 74 20 61 6c 77 61 79 73 20 67 69 76 65 73   it always gives
9950: 20 61 73 20 69 74 73 20 72 65 73 75 6c 74 20 74   as its result t
9960: 68 65 0a 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he.value of the 
9970: 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70  operand.</p>..<p
9980: 3e 4e 6f 74 65 20 74 68 61 74 20 74 68 65 72 65  >Note that there
9990: 20 61 72 65 20 74 77 6f 20 76 61 72 69 61 74 69   are two variati
99a0: 6f 6e 73 20 6f 66 20 74 68 65 20 65 71 75 61 6c  ons of the equal
99b0: 73 20 61 6e 64 20 6e 6f 74 20 65 71 75 61 6c 73  s and not equals
99c0: 0a 6f 70 65 72 61 74 6f 72 73 2e 20 20 45 71 75  .operators.  Equ
99d0: 61 6c 73 20 63 61 6e 20 62 65 20 65 69 74 68 65  als can be eithe
99e0: 72 7d 0a 70 75 74 73 20 22 5b 4f 70 65 72 61 74  r}.puts "[Operat
99f0: 6f 72 20 3d 5d 20 6f 72 20 5b 4f 70 65 72 61 74  or =] or [Operat
9a00: 6f 72 20 3d 3d 5d 2e 0a 54 68 65 20 6e 6f 6e 2d  or ==]..The non-
9a10: 65 71 75 61 6c 73 20 6f 70 65 72 61 74 6f 72 20  equals operator 
9a20: 63 61 6e 20 62 65 20 65 69 74 68 65 72 0a 5b 4f  can be either.[O
9a30: 70 65 72 61 74 6f 72 20 21 3d 5d 20 6f 72 20 5b  perator !=] or [
9a40: 4f 70 65 72 61 74 6f 72 20 7b 26 6c 74 3b 26 67  Operator {&lt;&g
9a50: 74 3b 7d 5d 2e 0a 54 68 65 20 5b 4f 70 65 72 61  t;}]..The [Opera
9a60: 74 6f 72 20 7c 7c 5d 20 6f 70 65 72 61 74 6f 72  tor ||] operator
9a70: 20 69 73 20 5c 22 63 6f 6e 63 61 74 65 6e 61 74   is \"concatenat
9a80: 65 5c 22 20 2d 20 69 74 20 6a 6f 69 6e 73 20 74  e\" - it joins t
9a90: 6f 67 65 74 68 65 72 0a 74 68 65 20 74 77 6f 20  ogether.the two 
9aa0: 73 74 72 69 6e 67 73 20 6f 66 20 69 74 73 20 6f  strings of its o
9ab0: 70 65 72 61 6e 64 73 2e 0a 54 68 65 20 6f 70 65  perands..The ope
9ac0: 72 61 74 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20  rator [Operator 
9ad0: 25 5d 20 6f 75 74 70 75 74 73 20 74 68 65 20 72  %] outputs the r
9ae0: 65 6d 61 69 6e 64 65 72 20 6f 66 20 69 74 73 20  emainder of its 
9af0: 6c 65 66 74 20 0a 6f 70 65 72 61 6e 64 20 6d 6f  left .operand mo
9b00: 64 75 6c 6f 20 69 74 73 20 72 69 67 68 74 20 6f  dulo its right o
9b10: 70 65 72 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  perand.</p>..<p>
9b20: 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20 61 6e  The result of an
9b30: 79 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f  y binary operato
9b40: 72 20 69 73 20 61 20 6e 75 6d 65 72 69 63 20 76  r is a numeric v
9b50: 61 6c 75 65 2c 20 65 78 63 65 70 74 0a 66 6f 72  alue, except.for
9b60: 20 74 68 65 20 5b 4f 70 65 72 61 74 6f 72 20 7c   the [Operator |
9b70: 7c 5d 20 63 6f 6e 63 61 74 65 6e 61 74 69 6f 6e  |] concatenation
9b80: 20 6f 70 65 72 61 74 6f 72 20 77 68 69 63 68 20   operator which 
9b90: 67 69 76 65 73 20 61 20 73 74 72 69 6e 67 0a 72  gives a string.r
9ba0: 65 73 75 6c 74 2e 3c 2f 70 3e 22 0a 0a 70 75 74  esult.</p>"..put
9bb0: 73 20 7b 0a 0a 3c 61 20 6e 61 6d 65 3d 22 6c 69  s {..<a name="li
9bc0: 74 65 72 61 6c 5f 76 61 6c 75 65 22 3e 3c 2f 61  teral_value"></a
9bd0: 3e 0a 3c 70 3e 0a 41 20 6c 69 74 65 72 61 6c 20  >.<p>.A literal 
9be0: 76 61 6c 75 65 20 69 73 20 61 6e 20 69 6e 74 65  value is an inte
9bf0: 67 65 72 20 6e 75 6d 62 65 72 20 6f 72 20 61 20  ger number or a 
9c00: 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e  floating point n
9c10: 75 6d 62 65 72 2e 0a 53 63 69 65 6e 74 69 66 69  umber..Scientifi
9c20: 63 20 6e 6f 74 61 74 69 6f 6e 20 69 73 20 73 75  c notation is su
9c30: 70 70 6f 72 74 65 64 2e 20 20 54 68 65 20 22 2e  pported.  The ".
9c40: 22 20 63 68 61 72 61 63 74 65 72 20 69 73 20 61  " character is a
9c50: 6c 77 61 79 73 20 75 73 65 64 0a 61 73 20 74 68  lways used.as th
9c60: 65 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74 20  e decimal point 
9c70: 65 76 65 6e 20 69 66 20 74 68 65 20 6c 6f 63 61  even if the loca
9c80: 6c 65 20 73 65 74 74 69 6e 67 20 73 70 65 63 69  le setting speci
9c90: 66 69 65 73 20 22 2c 22 20 66 6f 72 0a 74 68 69  fies "," for.thi
9ca0: 73 20 72 6f 6c 65 20 2d 20 74 68 65 20 75 73 65  s role - the use
9cb0: 20 6f 66 20 22 2c 22 20 66 6f 72 20 74 68 65 20   of "," for the 
9cc0: 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74 20 77 6f  decimal point wo
9cd0: 75 6c 64 20 72 65 73 75 6c 74 20 69 6e 0a 73 79  uld result in.sy
9ce0: 6e 74 61 63 74 69 63 20 61 6d 62 69 67 75 69 74  ntactic ambiguit
9cf0: 79 2e 20 20 41 20 73 74 72 69 6e 67 20 63 6f 6e  y.  A string con
9d00: 73 74 61 6e 74 20 69 73 20 66 6f 72 6d 65 64 20  stant is formed 
9d10: 62 79 20 65 6e 63 6c 6f 73 69 6e 67 20 74 68 65  by enclosing the
9d20: 0a 73 74 72 69 6e 67 20 69 6e 20 73 69 6e 67 6c  .string in singl
9d30: 65 20 71 75 6f 74 65 73 20 28 27 29 2e 20 20 41  e quotes (').  A
9d40: 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 20 77 69   single quote wi
9d50: 74 68 69 6e 20 74 68 65 20 73 74 72 69 6e 67 20  thin the string 
9d60: 63 61 6e 0a 62 65 20 65 6e 63 6f 64 65 64 20 62  can.be encoded b
9d70: 79 20 70 75 74 74 69 6e 67 20 74 77 6f 20 73 69  y putting two si
9d80: 6e 67 6c 65 20 71 75 6f 74 65 73 20 69 6e 20 61  ngle quotes in a
9d90: 20 72 6f 77 20 2d 20 61 73 20 69 6e 20 50 61 73   row - as in Pas
9da0: 63 61 6c 2e 0a 43 2d 73 74 79 6c 65 20 65 73 63  cal..C-style esc
9db0: 61 70 65 73 20 75 73 69 6e 67 20 74 68 65 20 62  apes using the b
9dc0: 61 63 6b 73 6c 61 73 68 20 63 68 61 72 61 63 74  ackslash charact
9dd0: 65 72 20 61 72 65 20 6e 6f 74 20 73 75 70 70 6f  er are not suppo
9de0: 72 74 65 64 20 62 65 63 61 75 73 65 0a 74 68 65  rted because.the
9df0: 79 20 61 72 65 20 6e 6f 74 20 73 74 61 6e 64 61  y are not standa
9e00: 72 64 20 53 51 4c 2e 0a 42 4c 4f 42 20 6c 69 74  rd SQL..BLOB lit
9e10: 65 72 61 6c 73 20 61 72 65 20 73 74 72 69 6e 67  erals are string
9e20: 20 6c 69 74 65 72 61 6c 73 20 63 6f 6e 74 61 69   literals contai
9e30: 6e 69 6e 67 20 68 65 78 61 64 65 63 69 6d 61 6c  ning hexadecimal
9e40: 20 64 61 74 61 20 61 6e 64 0a 70 72 65 63 65 64   data and.preced
9e50: 65 64 20 62 79 20 61 20 73 69 6e 67 6c 65 20 22  ed by a single "
9e60: 78 22 20 6f 72 20 22 58 22 20 63 68 61 72 61 63  x" or "X" charac
9e70: 74 65 72 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  ter.  For exampl
9e80: 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  e:</p>..<blockqu
9e90: 6f 74 65 3e 3c 70 72 65 3e 0a 58 27 35 33 35 31  ote><pre>.X'5351
9ea0: 34 36 39 37 34 36 35 27 0a 3c 2f 70 72 65 3e 3c  4697465'.</pre><
9eb0: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70  /blockquote>..<p
9ec0: 3e 0a 41 20 6c 69 74 65 72 61 6c 20 76 61 6c 75  >.A literal valu
9ed0: 65 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 74 68  e can also be th
9ee0: 65 20 74 6f 6b 65 6e 20 22 4e 55 4c 4c 22 2e 0a  e token "NULL"..
9ef0: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41 20 70 61 72 61  </p>..<p>.A para
9f00: 6d 65 74 65 72 20 73 70 65 63 69 66 69 65 73 20  meter specifies 
9f10: 61 20 70 6c 61 63 65 68 6f 6c 64 65 72 20 69 6e  a placeholder in
9f20: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
9f30: 66 6f 72 20 61 20 6c 69 74 65 72 61 6c 0a 76 61  for a literal.va
9f40: 6c 75 65 20 74 68 61 74 20 69 73 20 66 69 6c 6c  lue that is fill
9f50: 65 64 20 69 6e 20 61 74 20 72 75 6e 74 69 6d 65  ed in at runtime
9f60: 20 75 73 69 6e 67 20 74 68 65 0a 3c 61 20 68 72   using the.<a hr
9f70: 65 66 3d 22 63 61 70 69 33 72 65 66 2e 68 74 6d  ef="capi3ref.htm
9f80: 6c 23 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69  l#sqlite3_bind_i
9f90: 6e 74 22 3e 73 71 6c 69 74 65 33 5f 62 69 6e 64  nt">sqlite3_bind
9fa0: 3c 2f 61 3e 20 41 50 49 2e 0a 50 61 72 61 6d 65  </a> API..Parame
9fb0: 74 65 72 73 20 63 61 6e 20 74 61 6b 65 20 73 65  ters can take se
9fc0: 76 65 72 61 6c 20 66 6f 72 6d 73 3a 0a 3c 2f 70  veral forms:.</p
9fd0: 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c  ..<blockquote>.<
9fe0: 74 61 62 6c 65 20 63 6c 61 73 73 3d 22 70 64 66  table class="pdf
9ff0: 5f 66 75 6e 63 74 69 6f 6e 73 22 3e 0a 3c 74 72  _functions">.<tr
a000: 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69 67  >.<td align="rig
a010: 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  ht" valign="top"
a020: 3e 3c 62 3e 3f 3c 2f 62 3e 3c 69 3e 4e 4e 4e 3c  ><b>?</b><i>NNN<
a030: 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74  /i></td><td widt
a040: 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64  h="20"></td>.<td
a050: 3e 41 20 71 75 65 73 74 69 6f 6e 20 6d 61 72 6b  >A question mark
a060: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 6e   followed by a n
a070: 75 6d 62 65 72 20 3c 69 3e 4e 4e 4e 3c 2f 69 3e  umber <i>NNN</i>
a080: 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f   holds a spot fo
a090: 72 20 74 68 65 0a 4e 4e 4e 2d 74 68 20 70 61 72  r the.NNN-th par
a0a0: 61 6d 65 74 65 72 2e 20 20 4e 4e 4e 20 6d 75 73  ameter.  NNN mus
a0b0: 74 20 62 65 20 62 65 74 77 65 65 6e 20 31 20 61  t be between 1 a
a0c0: 6e 64 20 39 39 39 2e 3c 2f 74 64 3e 0a 3c 2f 74  nd 999.</td>.</t
a0d0: 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67  r>.<tr>.<td alig
a0e0: 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e  n="right" valign
a0f0: 3d 22 74 6f 70 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c  ="top"><b>?</b><
a100: 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32  /td><td width="2
a110: 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 71  0"></td>.<td>A q
a120: 75 65 73 74 69 6f 6e 20 6d 61 72 6b 20 74 68 61  uestion mark tha
a130: 74 20 69 73 20 6e 6f 74 20 66 6f 6c 6c 6f 77 65  t is not followe
a140: 64 20 62 79 20 61 20 6e 75 6d 62 65 72 20 68 6f  d by a number ho
a150: 6c 64 73 20 61 20 73 70 6f 74 20 66 6f 72 0a 74  lds a spot for.t
a160: 68 65 20 6e 65 78 74 20 75 6e 75 73 65 64 20 70  he next unused p
a170: 61 72 61 6d 65 74 65 72 2e 3c 2f 74 64 3e 0a 3c  arameter.</td>.<
a180: 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c  /tr>.<tr>.<td al
a190: 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69  ign="right" vali
a1a0: 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3a 3c 2f 62  gn="top"><b>:</b
a1b0: 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74 64  ><i>AAAA</i></td
a1c0: 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e  ><td width="20">
a1d0: 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 63 6f 6c 6f  </td>.<td>A colo
a1e0: 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 6e  n followed by an
a1f0: 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65   identifier name
a200: 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f   holds a spot fo
a210: 72 20 61 20 6e 61 6d 65 64 0a 70 61 72 61 6d 65  r a named.parame
a220: 74 65 72 20 77 69 74 68 20 74 68 65 20 6e 61 6d  ter with the nam
a230: 65 20 41 41 41 41 2e 20 20 4e 61 6d 65 64 20 70  e AAAA.  Named p
a240: 61 72 61 6d 65 74 65 72 73 20 61 72 65 20 61 6c  arameters are al
a250: 73 6f 20 6e 75 6d 62 65 72 65 64 2e 0a 54 68 65  so numbered..The
a260: 20 6e 75 6d 62 65 72 20 61 73 73 69 67 6e 65 64   number assigned
a270: 20 69 73 20 74 68 65 20 6e 65 78 74 20 75 6e 75   is the next unu
a280: 73 65 64 20 6e 75 6d 62 65 72 2e 20 20 54 6f 20  sed number.  To 
a290: 61 76 6f 69 64 20 63 6f 6e 66 75 73 69 6f 6e 2c  avoid confusion,
a2a0: 0a 69 74 20 69 73 20 62 65 73 74 20 74 6f 20 61  .it is best to a
a2b0: 76 6f 69 64 20 6d 69 78 69 6e 67 20 6e 61 6d 65  void mixing name
a2c0: 64 20 61 6e 64 20 6e 75 6d 62 65 72 65 64 20 70  d and numbered p
a2d0: 61 72 61 6d 65 74 65 72 73 2e 3c 2f 74 64 3e 0a  arameters.</td>.
a2e0: 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61  </tr>.<tr>.<td a
a2f0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c  lign="right" val
a300: 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 40 3c 2f  ign="top"><b>@</
a310: 62 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74  b><i>AAAA</i></t
a320: 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22  d><td width="20"
a330: 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 6e 20 22 61  ></td>.<td>An "a
a340: 74 22 20 73 69 67 6e 20 77 6f 72 6b 73 20 65 78  t" sign works ex
a350: 61 63 74 6c 79 20 6c 69 6b 65 20 61 20 63 6f 6c  actly like a col
a360: 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c  on.</td>.</tr>.<
a370: 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72  tr>.<td align="r
a380: 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f  ight" valign="to
a390: 70 22 3e 3c 62 3e 24 3c 2f 62 3e 3c 69 3e 41 41  p"><b>$</b><i>AA
a3a0: 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77  AA</i></td><td w
a3b0: 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a  idth="20"></td>.
a3c0: 3c 74 64 3e 41 20 64 6f 6c 6c 61 72 2d 73 69 67  <td>A dollar-sig
a3d0: 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 6e  n followed by an
a3e0: 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65   identifier name
a3f0: 20 61 6c 73 6f 20 68 6f 6c 64 73 20 61 20 73 70   also holds a sp
a400: 6f 74 20 66 6f 72 20 61 20 6e 61 6d 65 64 0a 70  ot for a named.p
a410: 61 72 61 6d 65 74 65 72 20 77 69 74 68 20 74 68  arameter with th
a420: 65 20 6e 61 6d 65 20 41 41 41 41 2e 20 20 54 68  e name AAAA.  Th
a430: 65 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d  e identifier nam
a440: 65 20 69 6e 20 74 68 69 73 20 63 61 73 65 20 63  e in this case c
a450: 61 6e 20 69 6e 63 6c 75 64 65 0a 6f 6e 65 20 6f  an include.one o
a460: 72 20 6d 6f 72 65 20 6f 63 63 75 72 61 6e 63 65  r more occurance
a470: 73 20 6f 66 20 22 3a 3a 22 20 61 6e 64 20 61 20  s of "::" and a 
a480: 73 75 66 66 69 78 20 65 6e 63 6c 6f 73 65 64 20  suffix enclosed 
a490: 69 6e 20 22 28 2e 2e 2e 29 22 20 63 6f 6e 74 61  in "(...)" conta
a4a0: 69 6e 69 6e 67 0a 61 6e 79 20 74 65 78 74 20 61  ining.any text a
a4b0: 74 20 61 6c 6c 2e 20 20 54 68 69 73 20 73 79 6e  t all.  This syn
a4c0: 74 61 78 20 69 73 20 74 68 65 20 66 6f 72 6d 20  tax is the form 
a4d0: 6f 66 20 61 20 76 61 72 69 61 62 6c 65 20 6e 61  of a variable na
a4e0: 6d 65 20 69 6e 20 74 68 65 20 54 63 6c 0a 70 72  me in the Tcl.pr
a4f0: 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67 75 61  ogramming langua
a500: 67 65 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c  ge.</td>.</tr>.<
a510: 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71  /table>.</blockq
a520: 75 6f 74 65 3e 0a 0a 3c 70 3e 50 61 72 61 6d 65  uote>..<p>Parame
a530: 74 65 72 73 20 74 68 61 74 20 61 72 65 20 6e 6f  ters that are no
a540: 74 20 61 73 73 69 67 6e 65 64 20 76 61 6c 75 65  t assigned value
a550: 73 20 75 73 69 6e 67 0a 3c 61 20 68 72 65 66 3d  s using.<a href=
a560: 22 63 61 70 69 33 72 65 66 2e 68 74 6d 6c 23 73  "capi3ref.html#s
a570: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
a580: 3e 73 71 6c 69 74 65 33 5f 62 69 6e 64 3c 2f 61  >sqlite3_bind</a
a590: 3e 20 61 72 65 20 74 72 65 61 74 65 64 0a 61 73  > are treated.as
a5a0: 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 61 20 6e   NULL.</p>..<a n
a5b0: 61 6d 65 3d 22 6c 69 6b 65 22 3e 3c 2f 61 3e 0a  ame="like"></a>.
a5c0: 3c 70 3e 54 68 65 20 4c 49 4b 45 20 6f 70 65 72  <p>The LIKE oper
a5d0: 61 74 6f 72 20 64 6f 65 73 20 61 20 70 61 74 74  ator does a patt
a5e0: 65 72 6e 20 6d 61 74 63 68 69 6e 67 20 63 6f 6d  ern matching com
a5f0: 70 61 72 69 73 6f 6e 2e 20 54 68 65 20 6f 70 65  parison. The ope
a600: 72 61 6e 64 0a 74 6f 20 74 68 65 20 72 69 67 68  rand.to the righ
a610: 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 70  t contains the p
a620: 61 74 74 65 72 6e 2c 20 74 68 65 20 6c 65 66 74  attern, the left
a630: 20 68 61 6e 64 20 6f 70 65 72 61 6e 64 20 63 6f   hand operand co
a640: 6e 74 61 69 6e 73 20 74 68 65 0a 73 74 72 69 6e  ntains the.strin
a650: 67 20 74 6f 20 6d 61 74 63 68 20 61 67 61 69 6e  g to match again
a660: 73 74 20 74 68 65 20 70 61 74 74 65 72 6e 2e 20  st the pattern. 
a670: 0a 7d 0a 70 75 74 73 20 22 41 20 70 65 72 63 65  .}.puts "A perce
a680: 6e 74 20 73 79 6d 62 6f 6c 20 5b 4f 70 65 72 61  nt symbol [Opera
a690: 74 6f 72 20 25 5d 20 69 6e 20 74 68 65 20 70 61  tor %] in the pa
a6a0: 74 74 65 72 6e 20 6d 61 74 63 68 65 73 20 61 6e  ttern matches an
a6b0: 79 0a 73 65 71 75 65 6e 63 65 20 6f 66 20 7a 65  y.sequence of ze
a6c0: 72 6f 20 6f 72 20 6d 6f 72 65 20 63 68 61 72 61  ro or more chara
a6d0: 63 74 65 72 73 20 69 6e 20 74 68 65 20 73 74 72  cters in the str
a6e0: 69 6e 67 2e 20 20 41 6e 20 75 6e 64 65 72 73 63  ing.  An undersc
a6f0: 6f 72 65 0a 5b 4f 70 65 72 61 74 6f 72 20 5f 5d  ore.[Operator _]
a700: 20 69 6e 20 74 68 65 20 70 61 74 74 65 72 6e 20   in the pattern 
a710: 6d 61 74 63 68 65 73 20 61 6e 79 20 73 69 6e 67  matches any sing
a720: 6c 65 20 63 68 61 72 61 63 74 65 72 20 69 6e 20  le character in 
a730: 74 68 65 0a 73 74 72 69 6e 67 2e 20 20 41 6e 79  the.string.  Any
a740: 20 6f 74 68 65 72 20 63 68 61 72 61 63 74 65 72   other character
a750: 20 6d 61 74 63 68 65 73 20 69 74 73 65 6c 66 20   matches itself 
a760: 6f 72 20 69 74 27 73 20 6c 6f 77 65 72 2f 75 70  or it's lower/up
a770: 70 65 72 20 63 61 73 65 0a 65 71 75 69 76 61 6c  per case.equival
a780: 65 6e 74 20 28 69 2e 65 2e 20 63 61 73 65 2d 69  ent (i.e. case-i
a790: 6e 73 65 6e 73 69 74 69 76 65 20 6d 61 74 63 68  nsensitive match
a7a0: 69 6e 67 29 2e 20 20 28 41 20 62 75 67 3a 20 53  ing).  (A bug: S
a7b0: 51 4c 69 74 65 20 6f 6e 6c 79 0a 75 6e 64 65 72  QLite only.under
a7c0: 73 74 61 6e 64 73 20 75 70 70 65 72 2f 6c 6f 77  stands upper/low
a7d0: 65 72 20 63 61 73 65 20 66 6f 72 20 37 2d 62 69  er case for 7-bi
a7e0: 74 20 4c 61 74 69 6e 20 63 68 61 72 61 63 74 65  t Latin characte
a7f0: 72 73 2e 20 20 48 65 6e 63 65 20 74 68 65 0a 4c  rs.  Hence the.L
a800: 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 69 73 20  IKE operator is 
a810: 63 61 73 65 20 73 65 6e 73 69 74 69 76 65 20 66  case sensitive f
a820: 6f 72 20 38 2d 62 69 74 20 69 73 6f 38 38 35 39  or 8-bit iso8859
a830: 20 63 68 61 72 61 63 74 65 72 73 20 6f 72 20 55   characters or U
a840: 54 46 2d 38 0a 63 68 61 72 61 63 74 65 72 73 2e  TF-8.characters.
a850: 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74    For example, t
a860: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 62  he expression <b
a870: 3e 27 61 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e  >'a'&nbsp;LIKE&n
a880: 62 73 70 3b 27 41 27 3c 2f 62 3e 0a 69 73 20 54  bsp;'A'</b>.is T
a890: 52 55 45 20 62 75 74 20 3c 62 3e 27 26 61 65 6c  RUE but <b>'&ael
a8a0: 69 67 3b 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e  ig;'&nbsp;LIKE&n
a8b0: 62 73 70 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62  bsp;'&AElig;'</b
a8c0: 3e 20 69 73 20 46 41 4c 53 45 2e 29 2e 3c 2f 70  > is FALSE.).</p
a8d0: 3e 22 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 49 66  >"..puts {.<p>If
a8e0: 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20 45 53   the optional ES
a8f0: 43 41 50 45 20 63 6c 61 75 73 65 20 69 73 20 70  CAPE clause is p
a900: 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 74 68 65  resent, then the
a910: 20 65 78 70 72 65 73 73 69 6f 6e 0a 66 6f 6c 6c   expression.foll
a920: 6f 77 69 6e 67 20 74 68 65 20 45 53 43 41 50 45  owing the ESCAPE
a930: 20 6b 65 79 77 6f 72 64 20 6d 75 73 74 20 65 76   keyword must ev
a940: 61 6c 75 61 74 65 20 74 6f 20 61 20 73 74 72 69  aluate to a stri
a950: 6e 67 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66  ng consisting of
a960: 0a 61 20 73 69 6e 67 6c 65 20 63 68 61 72 61 63  .a single charac
a970: 74 65 72 2e 20 54 68 69 73 20 63 68 61 72 61 63  ter. This charac
a980: 74 65 72 20 6d 61 79 20 62 65 20 75 73 65 64 20  ter may be used 
a990: 69 6e 20 74 68 65 20 4c 49 4b 45 20 70 61 74 74  in the LIKE patt
a9a0: 65 72 6e 0a 74 6f 20 69 6e 63 6c 75 64 65 20 6c  ern.to include l
a9b0: 69 74 65 72 61 6c 20 70 65 72 63 65 6e 74 20 6f  iteral percent o
a9c0: 72 20 75 6e 64 65 72 73 63 6f 72 65 20 63 68 61  r underscore cha
a9d0: 72 61 63 74 65 72 73 2e 20 54 68 65 20 65 73 63  racters. The esc
a9e0: 61 70 65 0a 63 68 61 72 61 63 74 65 72 20 66 6f  ape.character fo
a9f0: 6c 6c 6f 77 65 64 20 62 79 20 61 20 70 65 72 63  llowed by a perc
aa00: 65 6e 74 20 73 79 6d 62 6f 6c 2c 20 75 6e 64 65  ent symbol, unde
aa10: 72 73 63 6f 72 65 20 6f 72 20 69 74 73 65 6c 66  rscore or itself
aa20: 20 6d 61 74 63 68 65 73 20 61 0a 6c 69 74 65 72   matches a.liter
aa30: 61 6c 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f  al percent symbo
aa40: 6c 2c 20 75 6e 64 65 72 73 63 6f 72 65 20 6f 72  l, underscore or
aa50: 20 65 73 63 61 70 65 20 63 68 61 72 61 63 74 65   escape characte
aa60: 72 20 69 6e 20 74 68 65 20 73 74 72 69 6e 67 2c  r in the string,
aa70: 0a 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20 54  .respectively. T
aa80: 68 65 20 69 6e 66 69 78 20 4c 49 4b 45 20 6f 70  he infix LIKE op
aa90: 65 72 61 74 6f 72 20 69 73 20 69 6d 70 6c 65 6d  erator is implem
aaa0: 65 6e 74 65 64 20 62 79 20 63 61 6c 6c 69 6e 67  ented by calling
aab0: 20 74 68 65 0a 75 73 65 72 20 66 75 6e 63 74 69   the.user functi
aac0: 6f 6e 20 3c 61 20 68 72 65 66 3d 22 23 6c 69 6b  on <a href="#lik
aad0: 65 46 75 6e 63 22 3e 20 6c 69 6b 65 28 3c 69 3e  eFunc"> like(<i>
aae0: 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c  X</i>,<i>Y</i>)<
aaf0: 2f 61 3e 2e 3c 2f 70 3e 0a 7d 0a 0a 70 75 74 73  /a>.</p>.}..puts
ab00: 20 7b 0a 54 68 65 20 4c 49 4b 45 20 6f 70 65 72   {.The LIKE oper
ab10: 61 74 6f 72 20 69 73 20 6e 6f 74 20 63 61 73 65  ator is not case
ab20: 20 73 65 6e 73 69 74 69 76 65 20 61 6e 64 20 77   sensitive and w
ab30: 69 6c 6c 20 6d 61 74 63 68 20 75 70 70 65 72 20  ill match upper 
ab40: 63 61 73 65 0a 63 68 61 72 61 63 74 65 72 73 20  case.characters 
ab50: 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 67 61 69  on one side agai
ab60: 6e 73 74 20 6c 6f 77 65 72 20 63 61 73 65 20 63  nst lower case c
ab70: 68 61 72 61 63 74 65 72 73 20 6f 6e 20 74 68 65  haracters on the
ab80: 20 6f 74 68 65 72 2e 20 20 0a 28 41 20 62 75 67   other.  .(A bug
ab90: 3a 20 53 51 4c 69 74 65 20 6f 6e 6c 79 20 75 6e  : SQLite only un
aba0: 64 65 72 73 74 61 6e 64 73 20 75 70 70 65 72 2f  derstands upper/
abb0: 6c 6f 77 65 72 20 63 61 73 65 20 66 6f 72 20 37  lower case for 7
abc0: 2d 62 69 74 20 4c 61 74 69 6e 0a 63 68 61 72 61  -bit Latin.chara
abd0: 63 74 65 72 73 2e 20 20 48 65 6e 63 65 20 74 68  cters.  Hence th
abe0: 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20  e LIKE operator 
abf0: 69 73 20 63 61 73 65 20 73 65 6e 73 69 74 69 76  is case sensitiv
ac00: 65 20 66 6f 72 20 38 2d 62 69 74 0a 69 73 6f 38  e for 8-bit.iso8
ac10: 38 35 39 20 63 68 61 72 61 63 74 65 72 73 20 6f  859 characters o
ac20: 72 20 55 54 46 2d 38 20 63 68 61 72 61 63 74 65  r UTF-8 characte
ac30: 72 73 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  rs.  For example
ac40: 2c 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  , the expression
ac50: 0a 3c 62 3e 27 61 27 26 6e 62 73 70 3b 4c 49 4b  .<b>'a'&nbsp;LIK
ac60: 45 26 6e 62 73 70 3b 27 41 27 3c 2f 62 3e 20 69  E&nbsp;'A'</b> i
ac70: 73 20 54 52 55 45 20 62 75 74 0a 3c 62 3e 27 26  s TRUE but.<b>'&
ac80: 61 65 6c 69 67 3b 27 26 6e 62 73 70 3b 4c 49 4b  aelig;'&nbsp;LIK
ac90: 45 26 6e 62 73 70 3b 27 26 41 45 6c 69 67 3b 27  E&nbsp;'&AElig;'
aca0: 3c 2f 62 3e 20 69 73 20 46 41 4c 53 45 2e 29 2e  </b> is FALSE.).
acb0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 69 6e 66  </p>..<p>The inf
acc0: 69 78 20 4c 49 4b 45 0a 6f 70 65 72 61 74 6f 72  ix LIKE.operator
acd0: 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20   is implemented 
ace0: 62 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 75  by calling the u
acf0: 73 65 72 20 66 75 6e 63 74 69 6f 6e 20 3c 61 20  ser function <a 
ad00: 68 72 65 66 3d 22 23 6c 69 6b 65 46 75 6e 63 22  href="#likeFunc"
ad10: 3e 0a 6c 69 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c  >.like(<i>X</i>,
ad20: 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 61 3e 2e 20 20  <i>Y</i>)</a>.  
ad30: 49 66 20 61 6e 20 45 53 43 41 50 45 20 63 6c 61  If an ESCAPE cla
ad40: 75 73 65 20 69 73 20 70 72 65 73 65 6e 74 2c 20  use is present, 
ad50: 69 74 20 61 64 64 73 0a 61 20 74 68 69 72 64 20  it adds.a third 
ad60: 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65  parameter to the
ad70: 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 2e 20   function call. 
ad80: 49 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 61  If the functiona
ad90: 6c 69 74 79 20 6f 66 20 4c 49 4b 45 20 63 61 6e  lity of LIKE can
ada0: 20 62 65 0a 6f 76 65 72 72 69 64 64 65 6e 20 62   be.overridden b
adb0: 79 20 64 65 66 69 6e 69 6e 67 20 61 6e 20 61 6c  y defining an al
adc0: 74 65 72 6e 61 74 69 76 65 20 69 6d 70 6c 65 6d  ternative implem
add0: 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 0a  entation of the.
ade0: 6c 69 6b 65 28 29 20 53 51 4c 20 66 75 6e 63 74  like() SQL funct
adf0: 69 6f 6e 2e 3c 2f 70 3e 0a 3c 2f 70 3e 0a 0a 3c  ion.</p>.</p>..<
ae00: 61 20 6e 61 6d 65 3d 22 67 6c 6f 62 22 3e 3c 2f  a name="glob"></
ae10: 61 3e 0a 3c 70 3e 54 68 65 20 47 4c 4f 42 20 6f  a>.<p>The GLOB o
ae20: 70 65 72 61 74 6f 72 20 69 73 20 73 69 6d 69 6c  perator is simil
ae30: 61 72 20 74 6f 20 4c 49 4b 45 20 62 75 74 20 75  ar to LIKE but u
ae40: 73 65 73 20 74 68 65 20 55 6e 69 78 0a 66 69 6c  ses the Unix.fil
ae50: 65 20 67 6c 6f 62 62 69 6e 67 20 73 79 6e 74 61  e globbing synta
ae60: 78 20 66 6f 72 20 69 74 73 20 77 69 6c 64 63 61  x for its wildca
ae70: 72 64 73 2e 20 20 41 6c 73 6f 2c 20 47 4c 4f 42  rds.  Also, GLOB
ae80: 20 69 73 20 63 61 73 65 0a 73 65 6e 73 69 74 69   is case.sensiti
ae90: 76 65 2c 20 75 6e 6c 69 6b 65 20 4c 49 4b 45 2e  ve, unlike LIKE.
aea0: 20 20 42 6f 74 68 20 47 4c 4f 42 20 61 6e 64 20    Both GLOB and 
aeb0: 4c 49 4b 45 20 6d 61 79 20 62 65 20 70 72 65 63  LIKE may be prec
aec0: 65 64 65 64 20 62 79 0a 74 68 65 20 4e 4f 54 20  eded by.the NOT 
aed0: 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e 76 65 72  keyword to inver
aee0: 74 20 74 68 65 20 73 65 6e 73 65 20 6f 66 20 74  t the sense of t
aef0: 68 65 20 74 65 73 74 2e 20 20 54 68 65 20 69 6e  he test.  The in
af00: 66 69 78 20 47 4c 4f 42 20 0a 6f 70 65 72 61 74  fix GLOB .operat
af10: 6f 72 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65  or is implemente
af20: 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 74 68 65  d by calling the
af30: 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 20 3c   user function <
af40: 61 20 68 72 65 66 3d 22 23 67 6c 6f 62 46 75 6e  a href="#globFun
af50: 63 22 3e 0a 67 6c 6f 62 28 3c 69 3e 58 3c 2f 69  c">.glob(<i>X</i
af60: 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 61 3e 20  >,<i>Y</i>)</a> 
af70: 61 6e 64 20 63 61 6e 20 62 65 20 6d 6f 64 69 66  and can be modif
af80: 69 65 64 20 62 79 20 6f 76 65 72 72 69 64 69 6e  ied by overridin
af90: 67 0a 74 68 61 74 20 66 75 6e 63 74 69 6f 6e 2e  g.that function.
afa0: 3c 2f 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 72  </p>..<a name="r
afb0: 65 67 65 78 70 22 3e 3c 2f 61 3e 0a 3c 70 3e 54  egexp"></a>.<p>T
afc0: 68 65 20 52 45 47 45 58 50 20 6f 70 65 72 61 74  he REGEXP operat
afd0: 6f 72 20 69 73 20 61 20 73 70 65 63 69 61 6c 20  or is a special 
afe0: 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20 72  syntax for the r
aff0: 65 67 65 78 70 28 29 0a 75 73 65 72 20 66 75 6e  egexp().user fun
b000: 63 74 69 6f 6e 2e 20 20 4e 6f 20 72 65 67 65 78  ction.  No regex
b010: 70 28 29 20 75 73 65 72 20 66 75 6e 63 74 69 6f  p() user functio
b020: 6e 20 69 73 20 64 65 66 69 6e 65 64 20 62 79 20  n is defined by 
b030: 64 65 66 61 75 6c 74 0a 61 6e 64 20 73 6f 20 75  default.and so u
b040: 73 65 20 6f 66 20 74 68 65 20 52 45 47 45 58 50  se of the REGEXP
b050: 20 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 6e   operator will n
b060: 6f 72 6d 61 6c 6c 79 20 72 65 73 75 6c 74 20 69  ormally result i
b070: 6e 20 61 6e 0a 65 72 72 6f 72 20 6d 65 73 73 61  n an.error messa
b080: 67 65 2e 20 20 49 66 20 61 20 75 73 65 72 2d 64  ge.  If a user-d
b090: 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 20  efined function 
b0a0: 6e 61 6d 65 64 20 22 72 65 67 65 78 70 22 0a 69  named "regexp".i
b0b0: 73 20 61 64 64 65 64 20 61 74 20 72 75 6e 2d 74  s added at run-t
b0c0: 69 6d 65 2c 20 74 68 61 74 20 66 75 6e 63 74 69  ime, that functi
b0d0: 6f 6e 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65  on will be calle
b0e0: 64 20 69 6e 20 6f 72 64 65 72 0a 74 6f 20 69 6d  d in order.to im
b0f0: 70 6c 65 6d 65 6e 74 20 74 68 65 20 52 45 47 45  plement the REGE
b100: 58 50 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70 3e  XP operator.</p>
b110: 0a 0a 3c 61 20 6e 61 6d 65 3d 22 6d 61 74 63 68  ..<a name="match
b120: 22 3e 3c 2f 61 3e 0a 3c 70 3e 54 68 65 20 4d 41  "></a>.<p>The MA
b130: 54 43 48 20 6f 70 65 72 61 74 6f 72 20 69 73 20  TCH operator is 
b140: 61 20 73 70 65 63 69 61 6c 20 73 79 6e 74 61 78  a special syntax
b150: 20 66 6f 72 20 74 68 65 20 6d 61 74 63 68 28 29   for the match()
b160: 0a 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20  .user function. 
b170: 20 54 68 65 20 64 65 66 61 75 6c 74 20 6d 61 74   The default mat
b180: 63 68 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 6d  ch() function im
b190: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 72 61 69  plementation.rai
b1a0: 73 65 73 20 61 6e 64 20 65 78 63 65 70 74 69 6f  ses and exceptio
b1b0: 6e 20 61 6e 64 20 69 73 20 6e 6f 74 20 72 65 61  n and is not rea
b1c0: 6c 6c 79 20 75 73 65 66 75 6c 20 66 6f 72 20 61  lly useful for a
b1d0: 6e 79 74 68 69 6e 67 2e 0a 42 75 74 20 65 78 74  nything..But ext
b1e0: 65 6e 73 69 6f 6e 73 20 63 61 6e 20 6f 76 65 72  ensions can over
b1f0: 72 69 64 65 20 74 68 65 20 6d 61 74 63 68 28 29  ride the match()
b200: 20 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 6d   function with m
b210: 6f 72 65 0a 68 65 6c 70 66 75 6c 20 6c 6f 67 69  ore.helpful logi
b220: 63 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6c  c.</p>..<p>A col
b230: 75 6d 6e 20 6e 61 6d 65 20 63 61 6e 20 62 65 20  umn name can be 
b240: 61 6e 79 20 6f 66 20 74 68 65 20 6e 61 6d 65 73  any of the names
b250: 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20   defined in the 
b260: 43 52 45 41 54 45 20 54 41 42 4c 45 0a 73 74 61  CREATE TABLE.sta
b270: 74 65 6d 65 6e 74 20 6f 72 20 6f 6e 65 20 6f 66  tement or one of
b280: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73   the following s
b290: 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65  pecial identifie
b2a0: 72 73 3a 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62  rs: "<b>ROWID</b
b2b0: 3e 22 2c 0a 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22  >",."<b>OID</b>"
b2c0: 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f  , or "<b>_ROWID_
b2d0: 3c 2f 62 3e 22 2e 0a 54 68 65 73 65 20 73 70 65  </b>"..These spe
b2e0: 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73  cial identifiers
b2f0: 20 61 6c 6c 20 64 65 73 63 72 69 62 65 20 74 68   all describe th
b300: 65 0a 75 6e 69 71 75 65 20 72 61 6e 64 6f 6d 20  e.unique random 
b310: 69 6e 74 65 67 65 72 20 6b 65 79 20 28 74 68 65  integer key (the
b320: 20 22 72 6f 77 20 6b 65 79 22 29 20 61 73 73 6f   "row key") asso
b330: 63 69 61 74 65 64 20 77 69 74 68 20 65 76 65 72  ciated with ever
b340: 79 20 0a 72 6f 77 20 6f 66 20 65 76 65 72 79 20  y .row of every 
b350: 74 61 62 6c 65 2e 0a 54 68 65 20 73 70 65 63 69  table..The speci
b360: 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20 6f  al identifiers o
b370: 6e 6c 79 20 72 65 66 65 72 20 74 6f 20 74 68 65  nly refer to the
b380: 20 72 6f 77 20 6b 65 79 20 69 66 20 74 68 65 20   row key if the 
b390: 43 52 45 41 54 45 20 54 41 42 4c 45 0a 73 74 61  CREATE TABLE.sta
b3a0: 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20  tement does not 
b3b0: 64 65 66 69 6e 65 20 61 20 72 65 61 6c 20 63 6f  define a real co
b3c0: 6c 75 6d 6e 20 77 69 74 68 20 74 68 65 20 73 61  lumn with the sa
b3d0: 6d 65 20 6e 61 6d 65 2e 20 20 52 6f 77 20 6b 65  me name.  Row ke
b3e0: 79 73 0a 61 63 74 20 6c 69 6b 65 20 72 65 61 64  ys.act like read
b3f0: 2d 6f 6e 6c 79 20 63 6f 6c 75 6d 6e 73 2e 20 20  -only columns.  
b400: 41 20 72 6f 77 20 6b 65 79 20 63 61 6e 20 62 65  A row key can be
b410: 20 75 73 65 64 20 61 6e 79 77 68 65 72 65 20 61   used anywhere a
b420: 20 72 65 67 75 6c 61 72 0a 63 6f 6c 75 6d 6e 20   regular.column 
b430: 63 61 6e 20 62 65 20 75 73 65 64 2c 20 65 78 63  can be used, exc
b440: 65 70 74 20 74 68 61 74 20 79 6f 75 20 63 61 6e  ept that you can
b450: 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 76  not change the v
b460: 61 6c 75 65 0a 6f 66 20 61 20 72 6f 77 20 6b 65  alue.of a row ke
b470: 79 20 69 6e 20 61 6e 20 55 50 44 41 54 45 20 6f  y in an UPDATE o
b480: 72 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65  r INSERT stateme
b490: 6e 74 2e 0a 22 53 45 4c 45 43 54 20 2a 20 2e 2e  nt.."SELECT * ..
b4a0: 2e 22 20 64 6f 65 73 20 6e 6f 74 20 72 65 74 75  ." does not retu
b4b0: 72 6e 20 74 68 65 20 72 6f 77 20 6b 65 79 2e 3c  rn the row key.<
b4c0: 2f 70 3e 0a 0a 3c 70 3e 53 45 4c 45 43 54 20 73  /p>..<p>SELECT s
b4d0: 74 61 74 65 6d 65 6e 74 73 20 63 61 6e 20 61 70  tatements can ap
b4e0: 70 65 61 72 20 69 6e 20 65 78 70 72 65 73 73 69  pear in expressi
b4f0: 6f 6e 73 20 61 73 20 65 69 74 68 65 72 20 74 68  ons as either th
b500: 65 0a 72 69 67 68 74 2d 68 61 6e 64 20 6f 70 65  e.right-hand ope
b510: 72 61 6e 64 20 6f 66 20 74 68 65 20 49 4e 20 6f  rand of the IN o
b520: 70 65 72 61 74 6f 72 2c 20 61 73 20 61 20 73 63  perator, as a sc
b530: 61 6c 61 72 20 71 75 61 6e 74 69 74 79 2c 20 6f  alar quantity, o
b540: 72 0a 61 73 20 74 68 65 20 6f 70 65 72 61 6e 64  r.as the operand
b550: 20 6f 66 20 61 6e 20 45 58 49 53 54 53 20 6f 70   of an EXISTS op
b560: 65 72 61 74 6f 72 2e 0a 41 73 20 61 20 73 63 61  erator..As a sca
b570: 6c 61 72 20 71 75 61 6e 74 69 74 79 20 6f 72 20  lar quantity or 
b580: 74 68 65 20 6f 70 65 72 61 6e 64 20 6f 66 20 61  the operand of a
b590: 6e 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c 0a 74  n IN operator,.t
b5a0: 68 65 20 53 45 4c 45 43 54 20 73 68 6f 75 6c 64  he SELECT should
b5b0: 20 68 61 76 65 20 6f 6e 6c 79 20 61 20 73 69 6e   have only a sin
b5c0: 67 6c 65 20 63 6f 6c 75 6d 6e 20 69 6e 20 69 74  gle column in it
b5d0: 73 0a 72 65 73 75 6c 74 2e 20 20 43 6f 6d 70 6f  s.result.  Compo
b5e0: 75 6e 64 20 53 45 4c 45 43 54 73 20 28 63 6f 6e  und SELECTs (con
b5f0: 6e 65 63 74 65 64 20 77 69 74 68 20 6b 65 79 77  nected with keyw
b600: 6f 72 64 73 20 6c 69 6b 65 20 55 4e 49 4f 4e 20  ords like UNION 
b610: 6f 72 0a 45 58 43 45 50 54 29 20 61 72 65 20 61  or.EXCEPT) are a
b620: 6c 6c 6f 77 65 64 2e 0a 57 69 74 68 20 74 68 65  llowed..With the
b630: 20 45 58 49 53 54 53 20 6f 70 65 72 61 74 6f 72   EXISTS operator
b640: 2c 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e  , the columns in
b650: 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 20   the result set 
b660: 6f 66 20 74 68 65 20 53 45 4c 45 43 54 20 61 72  of the SELECT ar
b670: 65 0a 69 67 6e 6f 72 65 64 20 61 6e 64 20 74 68  e.ignored and th
b680: 65 20 65 78 70 72 65 73 73 69 6f 6e 20 72 65 74  e expression ret
b690: 75 72 6e 73 20 54 52 55 45 20 69 66 20 6f 6e 65  urns TRUE if one
b6a0: 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 65 78   or more rows ex
b6b0: 69 73 74 0a 61 6e 64 20 46 41 4c 53 45 20 69 66  ist.and FALSE if
b6c0: 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 20   the result set 
b6d0: 69 73 20 65 6d 70 74 79 2e 0a 49 66 20 6e 6f 20  is empty..If no 
b6e0: 74 65 72 6d 73 20 69 6e 20 74 68 65 20 53 45 4c  terms in the SEL
b6f0: 45 43 54 20 65 78 70 72 65 73 73 69 6f 6e 20 72  ECT expression r
b700: 65 66 65 72 20 74 6f 20 76 61 6c 75 65 20 69 6e  efer to value in
b710: 20 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0a   the containing.
b720: 71 75 65 72 79 2c 20 74 68 65 6e 20 74 68 65 20  query, then the 
b730: 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76  expression is ev
b740: 61 6c 75 61 74 65 64 20 6f 6e 63 65 20 70 72 69  aluated once pri
b750: 6f 72 20 74 6f 20 61 6e 79 20 6f 74 68 65 72 0a  or to any other.
b760: 70 72 6f 63 65 73 73 69 6e 67 20 61 6e 64 20 74  processing and t
b770: 68 65 20 72 65 73 75 6c 74 20 69 73 20 72 65 75  he result is reu
b780: 73 65 64 20 61 73 20 6e 65 63 65 73 73 61 72 79  sed as necessary
b790: 2e 20 20 49 66 20 74 68 65 20 53 45 4c 45 43 54  .  If the SELECT
b7a0: 20 65 78 70 72 65 73 73 69 6f 6e 0a 64 6f 65 73   expression.does
b7b0: 20 63 6f 6e 74 61 69 6e 20 76 61 72 69 61 62 6c   contain variabl
b7c0: 65 73 20 66 72 6f 6d 20 74 68 65 20 6f 75 74 65  es from the oute
b7d0: 72 20 71 75 65 72 79 2c 20 74 68 65 6e 20 74 68  r query, then th
b7e0: 65 20 53 45 4c 45 43 54 20 69 73 20 72 65 65 76  e SELECT is reev
b7f0: 61 6c 75 61 74 65 64 0a 65 76 65 72 79 20 74 69  aluated.every ti
b800: 6d 65 20 69 74 20 69 73 20 6e 65 65 64 65 64 2e  me it is needed.
b810: 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 61 20  </p>..<p>When a 
b820: 53 45 4c 45 43 54 20 69 73 20 74 68 65 20 72 69  SELECT is the ri
b830: 67 68 74 20 6f 70 65 72 61 6e 64 20 6f 66 20 74  ght operand of t
b840: 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c 20  he IN operator, 
b850: 74 68 65 20 49 4e 0a 6f 70 65 72 61 74 6f 72 20  the IN.operator 
b860: 72 65 74 75 72 6e 73 20 54 52 55 45 20 69 66 20  returns TRUE if 
b870: 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68  the result of th
b880: 65 20 6c 65 66 74 20 6f 70 65 72 61 6e 64 20 69  e left operand i
b890: 73 20 61 6e 79 20 6f 66 0a 74 68 65 20 76 61 6c  s any of.the val
b8a0: 75 65 73 20 67 65 6e 65 72 61 74 65 64 20 62 79  ues generated by
b8b0: 20 74 68 65 20 73 65 6c 65 63 74 2e 20 20 54 68   the select.  Th
b8c0: 65 20 49 4e 20 6f 70 65 72 61 74 6f 72 20 6d 61  e IN operator ma
b8d0: 79 20 62 65 20 70 72 65 63 65 64 65 64 0a 62 79  y be preceded.by
b8e0: 20 74 68 65 20 4e 4f 54 20 6b 65 79 77 6f 72 64   the NOT keyword
b8f0: 20 74 6f 20 69 6e 76 65 72 74 20 74 68 65 20 73   to invert the s
b900: 65 6e 73 65 20 6f 66 20 74 68 65 20 74 65 73 74  ense of the test
b910: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 61  .</p>..<p>When a
b920: 20 53 45 4c 45 43 54 20 61 70 70 65 61 72 73 20   SELECT appears 
b930: 77 69 74 68 69 6e 20 61 6e 20 65 78 70 72 65 73  within an expres
b940: 73 69 6f 6e 20 62 75 74 20 69 73 20 6e 6f 74 20  sion but is not 
b950: 74 68 65 20 72 69 67 68 74 0a 6f 70 65 72 61 6e  the right.operan
b960: 64 20 6f 66 20 61 6e 20 49 4e 20 6f 70 65 72 61  d of an IN opera
b970: 74 6f 72 2c 20 74 68 65 6e 20 74 68 65 20 66 69  tor, then the fi
b980: 72 73 74 20 72 6f 77 20 6f 66 20 74 68 65 20 72  rst row of the r
b990: 65 73 75 6c 74 20 6f 66 20 74 68 65 0a 53 45 4c  esult of the.SEL
b9a0: 45 43 54 20 62 65 63 6f 6d 65 73 20 74 68 65 20  ECT becomes the 
b9b0: 76 61 6c 75 65 20 75 73 65 64 20 69 6e 20 74 68  value used in th
b9c0: 65 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 49  e expression.  I
b9d0: 66 20 74 68 65 20 53 45 4c 45 43 54 20 79 69 65  f the SELECT yie
b9e0: 6c 64 73 0a 6d 6f 72 65 20 74 68 61 6e 20 6f 6e  lds.more than on
b9f0: 65 20 72 65 73 75 6c 74 20 72 6f 77 2c 20 61 6c  e result row, al
ba00: 6c 20 72 6f 77 73 20 61 66 74 65 72 20 74 68 65  l rows after the
ba10: 20 66 69 72 73 74 20 61 72 65 20 69 67 6e 6f 72   first are ignor
ba20: 65 64 2e 20 20 49 66 0a 74 68 65 20 53 45 4c 45  ed.  If.the SELE
ba30: 43 54 20 79 69 65 6c 64 73 20 6e 6f 20 72 6f 77  CT yields no row
ba40: 73 2c 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75  s, then the valu
ba50: 65 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54 20  e of the SELECT 
ba60: 69 73 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70  is NULL.</p>..<p
ba70: 3e 41 20 43 41 53 54 20 65 78 70 72 65 73 73 69  >A CAST expressi
ba80: 6f 6e 20 63 68 61 6e 67 65 73 20 74 68 65 20 64  on changes the d
ba90: 61 74 61 74 79 70 65 20 6f 66 20 74 68 65 20 3c  atatype of the <
baa0: 65 78 70 72 3e 20 69 6e 74 6f 20 74 68 65 0a 74  expr> into the.t
bab0: 79 70 65 20 73 70 65 63 69 66 69 65 64 20 62 79  ype specified by
bac0: 20 26 6c 74 3b 74 79 70 65 26 67 74 3b 2e 20 0a   &lt;type&gt;. .
bad0: 26 6c 74 3b 74 79 70 65 26 67 74 3b 20 63 61 6e  &lt;type&gt; can
bae0: 20 62 65 20 61 6e 79 20 6e 6f 6e 2d 65 6d 70 74   be any non-empt
baf0: 79 20 74 79 70 65 20 6e 61 6d 65 20 74 68 61 74  y type name that
bb00: 20 69 73 20 76 61 6c 69 64 0a 66 6f 72 20 74 68   is valid.for th
bb10: 65 20 74 79 70 65 20 69 6e 20 61 20 63 6f 6c 75  e type in a colu
bb20: 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66  mn definition of
bb30: 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45 20   a CREATE TABLE 
bb40: 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a  statement.</p>..
bb50: 3c 70 3e 42 6f 74 68 20 73 69 6d 70 6c 65 20 61  <p>Both simple a
bb60: 6e 64 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  nd aggregate fun
bb70: 63 74 69 6f 6e 73 20 61 72 65 20 73 75 70 70 6f  ctions are suppo
bb80: 72 74 65 64 2e 20 20 41 20 73 69 6d 70 6c 65 0a  rted.  A simple.
bb90: 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20  function can be 
bba0: 75 73 65 64 20 69 6e 20 61 6e 79 20 65 78 70 72  used in any expr
bbb0: 65 73 73 69 6f 6e 2e 20 20 53 69 6d 70 6c 65 20  ession.  Simple 
bbc0: 66 75 6e 63 74 69 6f 6e 73 20 72 65 74 75 72 6e  functions return
bbd0: 0a 61 20 72 65 73 75 6c 74 20 69 6d 6d 65 64 69  .a result immedi
bbe0: 61 74 65 6c 79 20 62 61 73 65 64 20 6f 6e 20 74  ately based on t
bbf0: 68 65 69 72 20 69 6e 70 75 74 73 2e 20 20 41 67  heir inputs.  Ag
bc00: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
bc10: 73 0a 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73  s.may only be us
bc20: 65 64 20 69 6e 20 61 20 53 45 4c 45 43 54 20 73  ed in a SELECT s
bc30: 74 61 74 65 6d 65 6e 74 2e 20 20 41 67 67 72 65  tatement.  Aggre
bc40: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 63  gate functions c
bc50: 6f 6d 70 75 74 65 0a 74 68 65 69 72 20 72 65 73  ompute.their res
bc60: 75 6c 74 20 61 63 72 6f 73 73 20 61 6c 6c 20 72  ult across all r
bc70: 6f 77 73 20 6f 66 20 74 68 65 20 72 65 73 75 6c  ows of the resul
bc80: 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a 3c 61 20 6e  t set.</p>..<a n
bc90: 61 6d 65 3d 22 63 6f 72 65 66 75 6e 63 74 69 6f  ame="corefunctio
bca0: 6e 73 22 3e 3c 2f 61 3e 0a 3c 62 3e 43 6f 72 65  ns"></a>.<b>Core
bcb0: 20 46 75 6e 63 74 69 6f 6e 73 3c 2f 62 3e 0a 0a   Functions</b>..
bcc0: 3c 70 3e 54 68 65 20 63 6f 72 65 20 66 75 6e 63  <p>The core func
bcd0: 74 69 6f 6e 73 20 73 68 6f 77 6e 20 62 65 6c 6f  tions shown belo
bce0: 77 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20  w are available 
bcf0: 62 79 20 64 65 66 61 75 6c 74 2e 20 20 41 64 64  by default.  Add
bd00: 69 74 69 6f 6e 61 6c 0a 66 75 6e 63 74 69 6f 6e  itional.function
bd10: 73 20 6d 61 79 20 62 65 20 77 72 69 74 74 65 6e  s may be written
bd20: 20 69 6e 20 43 20 61 6e 64 20 61 64 64 65 64 20   in C and added 
bd30: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
bd40: 65 6e 67 69 6e 65 20 75 73 69 6e 67 0a 74 68 65  engine using.the
bd50: 20 3c 61 20 68 72 65 66 3d 22 63 61 70 69 33 72   <a href="capi3r
bd60: 65 66 2e 68 74 6d 6c 23 63 66 75 6e 63 22 3e 73  ef.html#cfunc">s
bd70: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75  qlite3_create_fu
bd80: 6e 63 74 69 6f 6e 28 29 3c 2f 61 3e 0a 41 50 49  nction()</a>.API
bd90: 2e 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f  .</p>..<table bo
bda0: 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69  rder=0 cellpaddi
bdb0: 6e 67 3d 31 30 20 63 6c 61 73 73 3d 22 70 64 66  ng=10 class="pdf
bdc0: 5f 66 75 6e 63 74 69 6f 6e 73 22 3e 0a 3c 74 72  _functions">.<tr
bdd0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
bde0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
bdf0: 20 77 69 64 74 68 3d 31 32 30 3e 61 62 73 28 3c   width=120>abs(<
be00: 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>X</i>)</td>.<t
be10: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
be20: 65 74 75 72 6e 20 74 68 65 20 61 62 73 6f 6c 75  eturn the absolu
be30: 74 65 20 76 61 6c 75 65 20 6f 66 20 61 72 67 75  te value of argu
be40: 6d 65 6e 74 20 3c 69 3e 58 3c 2f 69 3e 2e 3c 2f  ment <i>X</i>.</
be50: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
be60: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
be70: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 63   align="right">c
be80: 6f 61 6c 65 73 63 65 28 3c 69 3e 58 3c 2f 69 3e  oalesce(<i>X</i>
be90: 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f  ,<i>Y</i>,...)</
bea0: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
beb0: 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 63 6f  top">Return a co
bec0: 70 79 20 6f 66 20 74 68 65 20 66 69 72 73 74 20  py of the first 
bed0: 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e  non-NULL argumen
bee0: 74 2e 20 20 49 66 0a 61 6c 6c 20 61 72 67 75 6d  t.  If.all argum
bef0: 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c 20 74 68  ents are NULL th
bf00: 65 6e 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72  en NULL is retur
bf10: 6e 65 64 2e 20 20 54 68 65 72 65 20 6d 75 73 74  ned.  There must
bf20: 20 62 65 20 61 74 20 6c 65 61 73 74 20 0a 32 20   be at least .2 
bf30: 61 72 67 75 6d 65 6e 74 73 2e 3c 2f 74 64 3e 0a  arguments.</td>.
bf40: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
bf50: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
bf60: 67 6e 3d 22 72 69 67 68 74 22 3e 0a 3c 61 20 6e  gn="right">.<a n
bf70: 61 6d 65 3d 22 67 6c 6f 62 46 75 6e 63 22 3e 3c  ame="globFunc"><
bf80: 2f 61 3e 0a 67 6c 6f 62 28 3c 69 3e 58 3c 2f 69  /a>.glob(<i>X</i
bf90: 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e  >,<i>Y</i>)</td>
bfa0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
bfb0: 22 3e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  ">This function 
bfc0: 69 73 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65  is used to imple
bfd0: 6d 65 6e 74 20 74 68 65 0a 22 3c 62 3e 58 20 47  ment the."<b>X G
bfe0: 4c 4f 42 20 59 3c 2f 62 3e 22 20 73 79 6e 74 61  LOB Y</b>" synta
bff0: 78 20 6f 66 20 53 51 4c 69 74 65 2e 20 20 54 68  x of SQLite.  Th
c000: 65 0a 3c 61 20 68 72 65 66 3d 22 63 61 70 69 33  e.<a href="capi3
c010: 72 65 66 2e 68 74 6d 6c 23 73 71 6c 69 74 65 33  ref.html#sqlite3
c020: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
c030: 22 3e 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  ">sqlite3_create
c040: 5f 66 75 6e 63 74 69 6f 6e 28 29 3c 2f 61 3e 20  _function()</a> 
c050: 0a 69 6e 74 65 72 66 61 63 65 20 63 61 6e 0a 62  .interface can.b
c060: 65 20 75 73 65 64 20 74 6f 20 6f 76 65 72 72 69  e used to overri
c070: 64 65 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  de this function
c080: 20 61 6e 64 20 74 68 65 72 65 62 79 20 63 68 61   and thereby cha
c090: 6e 67 65 20 74 68 65 20 6f 70 65 72 61 74 69 6f  nge the operatio
c0a0: 6e 0a 6f 66 20 74 68 65 20 3c 61 20 68 72 65 66  n.of the <a href
c0b0: 3d 22 23 67 6c 6f 62 46 75 6e 63 22 3e 47 4c 4f  ="#globFunc">GLO
c0c0: 42 3c 2f 61 3e 20 6f 70 65 72 61 74 6f 72 2e 3c  B</a> operator.<
c0d0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
c0e0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
c0f0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
c100: 69 66 6e 75 6c 6c 28 3c 69 3e 58 3c 2f 69 3e 2c  ifnull(<i>X</i>,
c110: 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c  <i>Y</i>)</td>.<
c120: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
c130: 52 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66  Return a copy of
c140: 20 74 68 65 20 66 69 72 73 74 20 6e 6f 6e 2d 4e   the first non-N
c150: 55 4c 4c 20 61 72 67 75 6d 65 6e 74 2e 20 20 49  ULL argument.  I
c160: 66 0a 62 6f 74 68 20 61 72 67 75 6d 65 6e 74 73  f.both arguments
c170: 20 61 72 65 20 4e 55 4c 4c 20 74 68 65 6e 20 4e   are NULL then N
c180: 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ULL is returned.
c190: 20 54 68 69 73 20 62 65 68 61 76 65 73 20 74 68   This behaves th
c1a0: 65 20 73 61 6d 65 20 61 73 20 0a 3c 62 3e 63 6f  e same as .<b>co
c1b0: 61 6c 65 73 63 65 28 29 3c 2f 62 3e 20 61 62 6f  alesce()</b> abo
c1c0: 76 65 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  ve.</td>.</tr>..
c1d0: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
c1e0: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
c1f0: 68 74 22 3e 0a 3c 61 20 6e 61 6d 65 3d 22 68 65  ht">.<a name="he
c200: 78 46 75 6e 63 22 3e 0a 68 65 78 28 3c 69 3e 58  xFunc">.hex(<i>X
c210: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
c220: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 54 68 65 20  align="top">The 
c230: 61 72 67 75 6d 65 6e 74 20 69 73 20 69 6e 74 65  argument is inte
c240: 72 70 72 65 74 65 64 20 61 73 20 61 20 42 4c 4f  rpreted as a BLO
c250: 42 2e 20 20 54 68 65 20 72 65 73 75 6c 74 0a 69  B.  The result.i
c260: 73 20 61 20 68 65 78 61 64 65 63 69 6d 61 6c 20  s a hexadecimal 
c270: 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74 68 65  rendering of the
c280: 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 61 74   content of that
c290: 20 62 6c 6f 62 2e 3c 2f 74 64 3e 0a 3c 2f 74 72   blob.</td>.</tr
c2a0: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
c2b0: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
c2c0: 72 69 67 68 74 22 3e 6c 61 73 74 5f 69 6e 73 65  right">last_inse
c2d0: 72 74 5f 72 6f 77 69 64 28 29 3c 2f 74 64 3e 0a  rt_rowid()</td>.
c2e0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
c2f0: 3e 52 65 74 75 72 6e 20 74 68 65 20 52 4f 57 49  >Return the ROWI
c300: 44 20 6f 66 20 74 68 65 20 6c 61 73 74 20 72 6f  D of the last ro
c310: 77 20 69 6e 73 65 72 74 20 66 72 6f 6d 20 74 68  w insert from th
c320: 69 73 0a 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f  is.connection to
c330: 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20   the database.  
c340: 54 68 69 73 20 69 73 20 74 68 65 20 73 61 6d 65  This is the same
c350: 20 76 61 6c 75 65 20 74 68 61 74 20 77 6f 75 6c   value that woul
c360: 64 20 62 65 20 72 65 74 75 72 6e 65 64 0a 66 72  d be returned.fr
c370: 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65  om the <b>sqlite
c380: 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
c390: 69 64 28 29 3c 2f 62 3e 20 41 50 49 20 66 75 6e  id()</b> API fun
c3a0: 63 74 69 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  ction.</td>.</tr
c3b0: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
c3c0: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
c3d0: 72 69 67 68 74 22 3e 6c 65 6e 67 74 68 28 3c 69  right">length(<i
c3e0: 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >X</i>)</td>.<td
c3f0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
c400: 74 75 72 6e 20 74 68 65 20 73 74 72 69 6e 67 20  turn the string 
c410: 6c 65 6e 67 74 68 20 6f 66 20 3c 69 3e 58 3c 2f  length of <i>X</
c420: 69 3e 20 69 6e 20 63 68 61 72 61 63 74 65 72 73  i> in characters
c430: 2e 0a 49 66 20 53 51 4c 69 74 65 20 69 73 20 63  ..If SQLite is c
c440: 6f 6e 66 69 67 75 72 65 64 20 74 6f 20 73 75 70  onfigured to sup
c450: 70 6f 72 74 20 55 54 46 2d 38 2c 20 74 68 65 6e  port UTF-8, then
c460: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 55   the number of U
c470: 54 46 2d 38 0a 63 68 61 72 61 63 74 65 72 73 20  TF-8.characters 
c480: 69 73 20 72 65 74 75 72 6e 65 64 2c 20 6e 6f 74  is returned, not
c490: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62   the number of b
c4a0: 79 74 65 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  ytes.</td>.</tr>
c4b0: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
c4c0: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
c4d0: 69 67 68 74 22 3e 0a 3c 61 20 6e 61 6d 65 3d 22  ight">.<a name="
c4e0: 6c 69 6b 65 46 75 6e 63 22 3e 3c 2f 61 3e 0a 6c  likeFunc"></a>.l
c4f0: 69 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  ike(<i>X</i>,<i>
c500: 59 3c 2f 69 3e 29 3c 62 72 3e 0a 6c 69 6b 65 28  Y</i>)<br>.like(
c510: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
c520: 3e 2c 3c 69 3e 5a 3c 2f 69 3e 29 3c 2f 74 64 3e  >,<i>Z</i>)</td>
c530: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
c540: 22 3e 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  ">.This function
c550: 20 69 73 20 75 73 65 64 20 74 6f 20 69 6d 70 6c   is used to impl
c560: 65 6d 65 6e 74 20 74 68 65 20 22 3c 62 3e 58 20  ement the "<b>X 
c570: 4c 49 4b 45 20 59 20 5b 45 53 43 41 50 45 20 5a  LIKE Y [ESCAPE Z
c580: 5d 3c 2f 62 3e 22 0a 73 79 6e 74 61 78 20 6f 66  ]</b>".syntax of
c590: 20 53 51 4c 2e 20 49 66 20 74 68 65 20 6f 70 74   SQL. If the opt
c5a0: 69 6f 6e 61 6c 20 45 53 43 41 50 45 20 63 6c 61  ional ESCAPE cla
c5b0: 75 73 65 20 69 73 20 70 72 65 73 65 6e 74 2c 20  use is present, 
c5c0: 74 68 65 6e 20 74 68 65 0a 75 73 65 72 2d 66 75  then the.user-fu
c5d0: 6e 63 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65  nction is invoke
c5e0: 64 20 77 69 74 68 20 74 68 72 65 65 20 61 72 67  d with three arg
c5f0: 75 6d 65 6e 74 73 2e 20 4f 74 68 65 72 77 69 73  uments. Otherwis
c600: 65 2c 20 69 74 20 69 73 0a 69 6e 76 6f 6b 65 64  e, it is.invoked
c610: 20 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65   with two argume
c620: 6e 74 73 20 6f 6e 6c 79 2e 20 54 68 65 20 0a 3c  nts only. The .<
c630: 61 20 68 72 65 66 3d 22 63 61 70 69 33 72 65 66  a href="capi3ref
c640: 2e 68 74 6d 6c 23 73 71 6c 69 74 65 33 5f 63 72  .html#sqlite3_cr
c650: 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 22 3e 0a  eate_function">.
c660: 73 71 6c 69 74 65 5f 63 72 65 61 74 65 5f 66 75  sqlite_create_fu
c670: 6e 63 74 69 6f 6e 28 29 3c 2f 61 3e 20 69 6e 74  nction()</a> int
c680: 65 72 66 61 63 65 20 63 61 6e 20 62 65 20 75 73  erface can be us
c690: 65 64 20 74 6f 20 6f 76 65 72 72 69 64 65 20 74  ed to override t
c6a0: 68 69 73 0a 66 75 6e 63 74 69 6f 6e 20 61 6e 64  his.function and
c6b0: 20 74 68 65 72 65 62 79 20 63 68 61 6e 67 65 20   thereby change 
c6c0: 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66  the operation of
c6d0: 20 74 68 65 20 3c 61 0a 68 72 65 66 3d 20 22 23   the <a.href= "#
c6e0: 6c 69 6b 65 22 3e 4c 49 4b 45 3c 2f 61 3e 20 6f  like">LIKE</a> o
c6f0: 70 65 72 61 74 6f 72 2e 20 57 68 65 6e 20 64 6f  perator. When do
c700: 69 6e 67 20 74 68 69 73 2c 20 69 74 20 6d 61 79  ing this, it may
c710: 20 62 65 20 69 6d 70 6f 72 74 61 6e 74 0a 74 6f   be important.to
c720: 20 6f 76 65 72 72 69 64 65 20 62 6f 74 68 20 74   override both t
c730: 68 65 20 74 77 6f 20 61 6e 64 20 74 68 72 65 65  he two and three
c740: 20 61 72 67 75 6d 65 6e 74 20 76 65 72 73 69 6f   argument versio
c750: 6e 73 20 6f 66 20 74 68 65 20 6c 69 6b 65 28 29  ns of the like()
c760: 20 0a 66 75 6e 63 74 69 6f 6e 2e 20 4f 74 68 65   .function. Othe
c770: 72 77 69 73 65 2c 20 64 69 66 66 65 72 65 6e 74  rwise, different
c780: 20 63 6f 64 65 20 6d 61 79 20 62 65 20 63 61 6c   code may be cal
c790: 6c 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  led to implement
c7a0: 20 74 68 65 0a 4c 49 4b 45 20 6f 70 65 72 61 74   the.LIKE operat
c7b0: 6f 72 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  or depending on 
c7c0: 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 61  whether or not a
c7d0: 6e 20 45 53 43 41 50 45 20 63 6c 61 75 73 65 20  n ESCAPE clause 
c7e0: 77 61 73 20 0a 73 70 65 63 69 66 69 65 64 2e 3c  was .specified.<
c7f0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
c800: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
c810: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
c820: 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 3c  load_extension(<
c830: 69 3e 58 3c 2f 69 3e 29 3c 62 72 3e 0a 6c 6f 61  i>X</i>)<br>.loa
c840: 64 5f 65 78 74 65 6e 73 69 6f 6e 28 3c 69 3e 58  d_extension(<i>X
c850: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f  </i>,<i>Y</i>)</
c860: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
c870: 74 6f 70 22 3e 4c 6f 61 64 20 53 51 4c 69 74 65  top">Load SQLite
c880: 20 65 78 74 65 6e 73 69 6f 6e 73 20 6f 75 74 20   extensions out 
c890: 6f 66 20 74 68 65 20 73 68 61 72 65 64 20 6c 69  of the shared li
c8a0: 62 72 61 72 79 0a 66 69 6c 65 20 6e 61 6d 65 64  brary.file named
c8b0: 20 3c 69 3e 58 3c 2f 69 3e 20 75 73 69 6e 67 20   <i>X</i> using 
c8c0: 74 68 65 20 65 6e 74 72 79 20 70 6f 69 6e 74 20  the entry point 
c8d0: 3c 69 3e 59 3c 2f 69 3e 2e 20 20 54 68 65 20 72  <i>Y</i>.  The r
c8e0: 65 73 75 6c 74 0a 69 73 20 61 20 4e 55 4c 4c 2e  esult.is a NULL.
c8f0: 20 20 49 66 20 3c 69 3e 59 3c 2f 69 3e 20 69 73    If <i>Y</i> is
c900: 20 6f 6d 69 74 74 65 64 20 74 68 65 6e 20 74 68   omitted then th
c910: 65 20 64 65 66 61 75 6c 74 20 65 6e 74 72 79 20  e default entry 
c920: 70 6f 69 6e 74 0a 6f 66 20 3c 62 3e 73 71 6c 69  point.of <b>sqli
c930: 74 65 33 5f 65 78 74 65 6e 73 69 6f 6e 5f 69 6e  te3_extension_in
c940: 69 74 3c 2f 62 3e 20 69 73 20 75 73 65 64 2e 20  it</b> is used. 
c950: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72   This function r
c960: 61 69 73 65 73 0a 61 6e 20 65 78 63 65 70 74 69  aises.an excepti
c970: 6f 6e 20 69 66 20 74 68 65 20 65 78 74 65 6e 73  on if the extens
c980: 69 6f 6e 20 66 61 69 6c 73 20 74 6f 20 6c 6f 61  ion fails to loa
c990: 64 20 6f 72 20 69 6e 69 74 69 61 6c 69 7a 65 20  d or initialize 
c9a0: 63 6f 72 72 65 63 74 6c 79 2e 0a 3c 2f 74 72 3e  correctly..</tr>
c9b0: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
c9c0: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
c9d0: 69 67 68 74 22 3e 6c 6f 77 65 72 28 3c 69 3e 58  ight">lower(<i>X
c9e0: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
c9f0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
ca00: 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 73 74 72  rn a copy of str
ca10: 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 6c  ing <i>X</i> wil
ca20: 6c 20 61 6c 6c 20 63 68 61 72 61 63 74 65 72 73  l all characters
ca30: 0a 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 6c 6f  .converted to lo
ca40: 77 65 72 20 63 61 73 65 2e 20 20 54 68 65 20 43  wer case.  The C
ca50: 20 6c 69 62 72 61 72 79 20 3c 62 3e 74 6f 6c 6f   library <b>tolo
ca60: 77 65 72 28 29 3c 2f 62 3e 20 72 6f 75 74 69 6e  wer()</b> routin
ca70: 65 20 69 73 20 75 73 65 64 0a 66 6f 72 20 74 68  e is used.for th
ca80: 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2c 20 77 68  e conversion, wh
ca90: 69 63 68 20 6d 65 61 6e 73 20 74 68 61 74 20 74  ich means that t
caa0: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 69 67  his function mig
cab0: 68 74 20 6e 6f 74 0a 77 6f 72 6b 20 63 6f 72 72  ht not.work corr
cac0: 65 63 74 6c 79 20 6f 6e 20 55 54 46 2d 38 20 63  ectly on UTF-8 c
cad0: 68 61 72 61 63 74 65 72 73 2e 3c 2f 74 64 3e 0a  haracters.</td>.
cae0: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
caf0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
cb00: 67 6e 3d 22 72 69 67 68 74 22 3e 0a 3c 61 20 6e  gn="right">.<a n
cb10: 61 6d 65 3d 22 6c 74 72 69 6d 46 75 6e 63 22 3e  ame="ltrimFunc">
cb20: 0a 6c 74 72 69 6d 28 3c 69 3e 58 3c 2f 69 3e 29  .ltrim(<i>X</i>)
cb30: 3c 62 72 3e 6c 74 72 69 6d 28 3c 69 3e 58 3c 2f  <br>ltrim(<i>X</
cb40: 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64  i>,<i>Y</i>)</td
cb50: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
cb60: 70 22 3e 52 65 74 75 72 6e 20 61 20 73 74 72 69  p">Return a stri
cb70: 6e 67 20 66 6f 72 6d 65 64 20 62 79 20 72 65 6d  ng formed by rem
cb80: 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64 20 61 6c  oving any and al
cb90: 6c 0a 63 68 61 72 61 63 74 65 72 73 20 74 68 61  l.characters tha
cba0: 74 20 61 70 70 65 61 72 20 69 6e 20 3c 69 3e 59  t appear in <i>Y
cbb0: 3c 2f 69 3e 20 66 72 6f 6d 20 74 68 65 20 6c 65  </i> from the le
cbc0: 66 74 20 73 69 64 65 20 6f 66 20 3c 69 3e 58 3c  ft side of <i>X<
cbd0: 2f 69 3e 2e 0a 49 66 20 74 68 65 20 3c 69 3e 59  /i>..If the <i>Y
cbe0: 3c 2f 69 3e 20 61 72 67 75 6d 65 6e 74 20 69 73  </i> argument is
cbf0: 20 6f 6d 69 74 74 65 64 2c 20 73 70 61 63 65 73   omitted, spaces
cc00: 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 3c 2f 74   are removed.</t
cc10: 64 3e 0a 3c 2f 74 72 3e 0a 0a 0a 3c 74 72 3e 0a  d>.</tr>...<tr>.
cc20: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
cc30: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6d   align="right">m
cc40: 61 78 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59  ax(<i>X</i>,<i>Y
cc50: 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c  </i>,...)</td>.<
cc60: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
cc70: 52 65 74 75 72 6e 20 74 68 65 20 61 72 67 75 6d  Return the argum
cc80: 65 6e 74 20 77 69 74 68 20 74 68 65 20 6d 61 78  ent with the max
cc90: 69 6d 75 6d 20 76 61 6c 75 65 2e 20 20 41 72 67  imum value.  Arg
cca0: 75 6d 65 6e 74 73 0a 6d 61 79 20 62 65 20 73 74  uments.may be st
ccb0: 72 69 6e 67 73 20 69 6e 20 61 64 64 69 74 69 6f  rings in additio
ccc0: 6e 20 74 6f 20 6e 75 6d 62 65 72 73 2e 20 20 54  n to numbers.  T
ccd0: 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65  he maximum value
cce0: 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64 0a 62   is determined.b
ccf0: 79 20 74 68 65 20 75 73 75 61 6c 20 73 6f 72 74  y the usual sort
cd00: 20 6f 72 64 65 72 2e 20 20 4e 6f 74 65 20 74 68   order.  Note th
cd10: 61 74 20 3c 62 3e 6d 61 78 28 29 3c 2f 62 3e 20  at <b>max()</b> 
cd20: 69 73 20 61 20 73 69 6d 70 6c 65 20 66 75 6e 63  is a simple func
cd30: 74 69 6f 6e 20 77 68 65 6e 0a 69 74 20 68 61 73  tion when.it has
cd40: 20 32 20 6f 72 20 6d 6f 72 65 20 61 72 67 75 6d   2 or more argum
cd50: 65 6e 74 73 20 62 75 74 20 63 6f 6e 76 65 72 74  ents but convert
cd60: 73 20 74 6f 20 61 6e 20 61 67 67 72 65 67 61 74  s to an aggregat
cd70: 65 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 67 69  e function if gi
cd80: 76 65 6e 0a 6f 6e 6c 79 20 61 20 73 69 6e 67 6c  ven.only a singl
cd90: 65 20 61 72 67 75 6d 65 6e 74 2e 3c 2f 74 64 3e  e argument.</td>
cda0: 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64  .</tr>..<tr>.<td
cdb0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
cdc0: 69 67 6e 3d 22 72 69 67 68 74 22 3e 6d 69 6e 28  ign="right">min(
cdd0: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
cde0: 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20  >,...)</td>.<td 
cdf0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
ce00: 75 72 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74  urn the argument
ce10: 20 77 69 74 68 20 74 68 65 20 6d 69 6e 69 6d 75   with the minimu
ce20: 6d 20 76 61 6c 75 65 2e 20 20 41 72 67 75 6d 65  m value.  Argume
ce30: 6e 74 73 0a 6d 61 79 20 62 65 20 73 74 72 69 6e  nts.may be strin
ce40: 67 73 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74  gs in addition t
ce50: 6f 20 6e 75 6d 62 65 72 73 2e 20 20 54 68 65 20  o numbers.  The 
ce60: 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 20 69 73  minimum value is
ce70: 20 64 65 74 65 72 6d 69 6e 65 64 0a 62 79 20 74   determined.by t
ce80: 68 65 20 75 73 75 61 6c 20 73 6f 72 74 20 6f 72  he usual sort or
ce90: 64 65 72 2e 20 20 4e 6f 74 65 20 74 68 61 74 20  der.  Note that 
cea0: 3c 62 3e 6d 69 6e 28 29 3c 2f 62 3e 20 69 73 20  <b>min()</b> is 
ceb0: 61 20 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f  a simple functio
cec0: 6e 20 77 68 65 6e 0a 69 74 20 68 61 73 20 32 20  n when.it has 2 
ced0: 6f 72 20 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74  or more argument
cee0: 73 20 62 75 74 20 63 6f 6e 76 65 72 74 73 20 74  s but converts t
cef0: 6f 20 61 6e 20 61 67 67 72 65 67 61 74 65 20 66  o an aggregate f
cf00: 75 6e 63 74 69 6f 6e 20 69 66 20 67 69 76 65 6e  unction if given
cf10: 0a 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61  .only a single a
cf20: 72 67 75 6d 65 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f  rgument.</td>.</
cf30: 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  tr>..<tr>.<td va
cf40: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
cf50: 3d 22 72 69 67 68 74 22 3e 6e 75 6c 6c 69 66 28  ="right">nullif(
cf60: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
cf70: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
cf80: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
cf90: 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  the first argume
cfa0: 6e 74 20 69 66 20 74 68 65 20 61 72 67 75 6d 65  nt if the argume
cfb0: 6e 74 73 20 61 72 65 20 64 69 66 66 65 72 65 6e  nts are differen
cfc0: 74 2c 20 0a 6f 74 68 65 72 77 69 73 65 20 72 65  t, .otherwise re
cfd0: 74 75 72 6e 20 4e 55 4c 4c 2e 3c 2f 74 64 3e 0a  turn NULL.</td>.
cfe0: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
cff0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
d000: 67 6e 3d 22 72 69 67 68 74 22 3e 71 75 6f 74 65  gn="right">quote
d010: 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a  (<i>X</i>)</td>.
d020: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
d030: 3e 54 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65  >This routine re
d040: 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20 77  turns a string w
d050: 68 69 63 68 20 69 73 20 74 68 65 20 76 61 6c 75  hich is the valu
d060: 65 20 6f 66 0a 69 74 73 20 61 72 67 75 6d 65 6e  e of.its argumen
d070: 74 20 73 75 69 74 61 62 6c 65 20 66 6f 72 20 69  t suitable for i
d080: 6e 63 6c 75 73 69 6f 6e 20 69 6e 74 6f 20 61 6e  nclusion into an
d090: 6f 74 68 65 72 20 53 51 4c 20 73 74 61 74 65 6d  other SQL statem
d0a0: 65 6e 74 2e 0a 53 74 72 69 6e 67 73 20 61 72 65  ent..Strings are
d0b0: 20 73 75 72 72 6f 75 6e 64 65 64 20 62 79 20 73   surrounded by s
d0c0: 69 6e 67 6c 65 2d 71 75 6f 74 65 73 20 77 69 74  ingle-quotes wit
d0d0: 68 20 65 73 63 61 70 65 73 20 6f 6e 20 69 6e 74  h escapes on int
d0e0: 65 72 69 6f 72 20 71 75 6f 74 65 73 0a 61 73 20  erior quotes.as 
d0f0: 6e 65 65 64 65 64 2e 20 20 42 4c 4f 42 73 20 61  needed.  BLOBs a
d100: 72 65 20 65 6e 63 6f 64 65 64 20 61 73 20 68 65  re encoded as he
d110: 78 61 64 65 63 69 6d 61 6c 20 6c 69 74 65 72 61  xadecimal litera
d120: 6c 73 2e 0a 54 68 65 20 63 75 72 72 65 6e 74 20  ls..The current 
d130: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
d140: 66 20 56 41 43 55 55 4d 20 75 73 65 73 20 74 68  f VACUUM uses th
d150: 69 73 20 66 75 6e 63 74 69 6f 6e 2e 20 20 54 68  is function.  Th
d160: 65 20 66 75 6e 63 74 69 6f 6e 0a 69 73 20 61 6c  e function.is al
d170: 73 6f 20 75 73 65 66 75 6c 20 77 68 65 6e 20 77  so useful when w
d180: 72 69 74 69 6e 67 20 74 72 69 67 67 65 72 73 20  riting triggers 
d190: 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 75 6e 64  to implement und
d1a0: 6f 2f 72 65 64 6f 20 66 75 6e 63 74 69 6f 6e 61  o/redo functiona
d1b0: 6c 69 74 79 2e 0a 3c 2f 74 64 3e 0a 3c 2f 74 72  lity..</td>.</tr
d1c0: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
d1d0: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
d1e0: 72 69 67 68 74 22 3e 72 61 6e 64 6f 6d 28 2a 29  right">random(*)
d1f0: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
d200: 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20  ="top">Return a 
d210: 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d 20 69 6e  pseudo-random in
d220: 74 65 67 65 72 0a 62 65 74 77 65 65 6e 20 2d 39  teger.between -9
d230: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
d240: 30 38 20 61 6e 64 20 2b 39 32 32 33 33 37 32 30  08 and +92233720
d250: 33 36 38 35 34 37 37 35 38 30 37 2e 3c 2f 74 64  36854775807.</td
d260: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
d270: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
d280: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 0a 3c 61  lign="right">.<a
d290: 20 6e 61 6d 65 3d 22 72 65 70 6c 61 63 65 46 75   name="replaceFu
d2a0: 6e 63 22 3e 0a 72 65 70 6c 61 63 65 28 3c 69 3e  nc">.replace(<i>
d2b0: 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 3c  X</i>,<i>Y</i>,<
d2c0: 69 3e 5a 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>Z</i>)</td>.<t
d2d0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
d2e0: 65 74 75 72 6e 20 61 20 73 74 72 69 6e 67 20 66  eturn a string f
d2f0: 6f 72 6d 65 64 20 62 79 20 73 75 62 73 74 69 74  ormed by substit
d300: 75 74 69 6e 67 20 73 74 72 69 6e 67 20 3c 69 3e  uting string <i>
d310: 5a 3c 2f 69 3e 20 66 6f 72 0a 65 76 65 72 79 20  Z</i> for.every 
d320: 6f 63 63 75 72 72 61 6e 63 65 20 6f 66 20 73 74  occurrance of st
d330: 72 69 6e 67 20 3c 69 3e 59 3c 2f 69 3e 20 69 6e  ring <i>Y</i> in
d340: 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e   string <i>X</i>
d350: 2e 20 20 54 68 65 20 42 49 4e 41 52 59 0a 63 6f  .  The BINARY.co
d360: 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65  llating sequence
d370: 20 69 73 20 75 73 65 64 20 66 6f 72 20 63 6f 6d   is used for com
d380: 70 61 72 69 73 6f 6e 73 2e 3c 2f 74 64 3e 0a 3c  parisons.</td>.<
d390: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
d3a0: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
d3b0: 6e 3d 22 72 69 67 68 74 22 3e 0a 3c 61 20 6e 61  n="right">.<a na
d3c0: 6d 65 3d 22 72 61 6e 64 6f 6d 62 6c 6f 62 46 75  me="randomblobFu
d3d0: 6e 63 22 3e 0a 72 61 6e 64 6f 6d 62 6c 6f 62 28  nc">.randomblob(
d3e0: 3c 69 3e 4e 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c  <i>N</i>)</td>.<
d3f0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
d400: 52 65 74 75 72 6e 20 61 20 3c 69 3e 4e 3c 2f 69  Return a <i>N</i
d410: 3e 2d 62 79 74 65 20 62 6c 6f 62 20 63 6f 6e 74  >-byte blob cont
d420: 61 69 6e 69 6e 67 20 70 73 65 75 64 6f 2d 72 61  aining pseudo-ra
d430: 6e 64 6f 6d 20 62 79 74 65 73 2e 0a 3c 69 3e 4e  ndom bytes..<i>N
d440: 3c 2f 69 3e 20 73 68 6f 75 6c 64 20 62 65 20 61  </i> should be a
d450: 20 70 6f 73 74 69 76 65 20 69 6e 74 65 67 65 72   postive integer
d460: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
d470: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
d480: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
d490: 22 3e 72 6f 75 6e 64 28 3c 69 3e 58 3c 2f 69 3e  ">round(<i>X</i>
d4a0: 29 3c 62 72 3e 72 6f 75 6e 64 28 3c 69 3e 58 3c  )<br>round(<i>X<
d4b0: 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74  /i>,<i>Y</i>)</t
d4c0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
d4d0: 6f 70 22 3e 52 6f 75 6e 64 20 6f 66 66 20 74 68  op">Round off th
d4e0: 65 20 6e 75 6d 62 65 72 20 3c 69 3e 58 3c 2f 69  e number <i>X</i
d4f0: 3e 20 74 6f 20 3c 69 3e 59 3c 2f 69 3e 20 64 69  > to <i>Y</i> di
d500: 67 69 74 73 20 74 6f 20 74 68 65 0a 72 69 67 68  gits to the.righ
d510: 74 20 6f 66 20 74 68 65 20 64 65 63 69 6d 61 6c  t of the decimal
d520: 20 70 6f 69 6e 74 2e 20 20 49 66 20 74 68 65 20   point.  If the 
d530: 3c 69 3e 59 3c 2f 69 3e 20 61 72 67 75 6d 65 6e  <i>Y</i> argumen
d540: 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 30 20  t is omitted, 0 
d550: 69 73 20 0a 61 73 73 75 6d 65 64 2e 3c 2f 74 64  is .assumed.</td
d560: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
d570: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
d580: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 0a 3c 61  lign="right">.<a
d590: 20 6e 61 6d 65 3d 22 72 74 72 69 6d 46 75 6e 63   name="rtrimFunc
d5a0: 22 3e 0a 72 74 72 69 6d 28 3c 69 3e 58 3c 2f 69  ">.rtrim(<i>X</i
d5b0: 3e 29 3c 62 72 3e 72 74 72 69 6d 28 3c 69 3e 58  >)<br>rtrim(<i>X
d5c0: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f  </i>,<i>Y</i>)</
d5d0: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
d5e0: 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 73 74  top">Return a st
d5f0: 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79 20 72  ring formed by r
d600: 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64 20  emoving any and 
d610: 61 6c 6c 0a 63 68 61 72 61 63 74 65 72 73 20 74  all.characters t
d620: 68 61 74 20 61 70 70 65 61 72 20 69 6e 20 3c 69  hat appear in <i
d630: 3e 59 3c 2f 69 3e 20 66 72 6f 6d 20 74 68 65 20  >Y</i> from the 
d640: 72 69 67 68 74 20 73 69 64 65 20 6f 66 20 3c 69  right side of <i
d650: 3e 58 3c 2f 69 3e 2e 0a 49 66 20 74 68 65 20 3c  >X</i>..If the <
d660: 69 3e 59 3c 2f 69 3e 20 61 72 67 75 6d 65 6e 74  i>Y</i> argument
d670: 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 73 70 61   is omitted, spa
d680: 63 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64 2e  ces are removed.
d690: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
d6a0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
d6b0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
d6c0: 3e 73 6f 75 6e 64 65 78 28 3c 69 3e 58 3c 2f 69  >soundex(<i>X</i
d6d0: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
d6e0: 67 6e 3d 22 74 6f 70 22 3e 43 6f 6d 70 75 74 65  gn="top">Compute
d6f0: 20 74 68 65 20 73 6f 75 6e 64 65 78 20 65 6e 63   the soundex enc
d700: 6f 64 69 6e 67 20 6f 66 20 74 68 65 20 73 74 72  oding of the str
d710: 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 54 68  ing <i>X</i>..Th
d720: 65 20 73 74 72 69 6e 67 20 22 3f 30 30 30 22 20  e string "?000" 
d730: 69 73 20 72 65 74 75 72 6e 65 64 20 69 66 20 74  is returned if t
d740: 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 4e  he argument is N
d750: 55 4c 4c 2e 0a 54 68 69 73 20 66 75 6e 63 74 69  ULL..This functi
d760: 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72  on is omitted fr
d770: 6f 6d 20 53 51 4c 69 74 65 20 62 79 20 64 65 66  om SQLite by def
d780: 61 75 6c 74 2e 0a 49 74 20 69 73 20 6f 6e 6c 79  ault..It is only
d790: 20 61 76 61 69 6c 61 62 6c 65 20 74 68 65 20 2d   available the -
d7a0: 44 53 51 4c 49 54 45 5f 53 4f 55 4e 44 45 58 3d  DSQLITE_SOUNDEX=
d7b0: 31 20 63 6f 6d 70 69 6c 65 72 20 6f 70 74 69 6f  1 compiler optio
d7c0: 6e 0a 69 73 20 75 73 65 64 20 77 68 65 6e 20 53  n.is used when S
d7d0: 51 4c 69 74 65 20 69 73 20 62 75 69 6c 74 2e 3c  QLite is built.<
d7e0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
d7f0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
d800: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
d810: 73 71 6c 69 74 65 5f 76 65 72 73 69 6f 6e 28 2a  sqlite_version(*
d820: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
d830: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74  n="top">Return t
d840: 68 65 20 76 65 72 73 69 6f 6e 20 73 74 72 69 6e  he version strin
d850: 67 20 66 6f 72 20 74 68 65 20 53 51 4c 69 74 65  g for the SQLite
d860: 20 6c 69 62 72 61 72 79 0a 74 68 61 74 20 69 73   library.that is
d870: 20 72 75 6e 6e 69 6e 67 2e 20 20 45 78 61 6d 70   running.  Examp
d880: 6c 65 3a 20 20 22 32 2e 38 2e 30 22 3c 2f 74 64  le:  "2.8.0"</td
d890: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
d8a0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
d8b0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 73 75 62  lign="right">sub
d8c0: 73 74 72 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  str(<i>X</i>,<i>
d8d0: 59 3c 2f 69 3e 2c 3c 69 3e 5a 3c 2f 69 3e 29 3c  Y</i>,<i>Z</i>)<
d8e0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
d8f0: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 73  "top">Return a s
d900: 75 62 73 74 72 69 6e 67 20 6f 66 20 69 6e 70 75  ubstring of inpu
d910: 74 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69  t string <i>X</i
d920: 3e 20 74 68 61 74 20 62 65 67 69 6e 73 0a 77 69  > that begins.wi
d930: 74 68 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 2d  th the <i>Y</i>-
d940: 74 68 20 63 68 61 72 61 63 74 65 72 20 61 6e 64  th character and
d950: 20 77 68 69 63 68 20 69 73 20 3c 69 3e 5a 3c 2f   which is <i>Z</
d960: 69 3e 20 63 68 61 72 61 63 74 65 72 73 20 6c 6f  i> characters lo
d970: 6e 67 2e 0a 54 68 65 20 6c 65 66 74 2d 6d 6f 73  ng..The left-mos
d980: 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20 3c  t character of <
d990: 69 3e 58 3c 2f 69 3e 20 69 73 20 6e 75 6d 62 65  i>X</i> is numbe
d9a0: 72 20 31 2e 20 20 49 66 20 3c 69 3e 59 3c 2f 69  r 1.  If <i>Y</i
d9b0: 3e 20 69 73 20 6e 65 67 61 74 69 76 65 0a 74 68  > is negative.th
d9c0: 65 20 74 68 65 20 66 69 72 73 74 20 63 68 61 72  e the first char
d9d0: 61 63 74 65 72 20 6f 66 20 74 68 65 20 73 75 62  acter of the sub
d9e0: 73 74 72 69 6e 67 20 69 73 20 66 6f 75 6e 64 20  string is found 
d9f0: 62 79 20 63 6f 75 6e 74 69 6e 67 20 66 72 6f 6d  by counting from
da00: 20 74 68 65 0a 72 69 67 68 74 20 72 61 74 68 65   the.right rathe
da10: 72 20 74 68 61 6e 20 74 68 65 20 6c 65 66 74 2e  r than the left.
da20: 20 20 49 66 20 53 51 4c 69 74 65 20 69 73 20 63    If SQLite is c
da30: 6f 6e 66 69 67 75 72 65 64 20 74 6f 20 73 75 70  onfigured to sup
da40: 70 6f 72 74 20 55 54 46 2d 38 2c 0a 74 68 65 6e  port UTF-8,.then
da50: 20 63 68 61 72 61 63 74 65 72 73 20 69 6e 64 69   characters indi
da60: 63 65 73 20 72 65 66 65 72 20 74 6f 20 61 63 74  ces refer to act
da70: 75 61 6c 20 55 54 46 2d 38 20 63 68 61 72 61 63  ual UTF-8 charac
da80: 74 65 72 73 2c 20 6e 6f 74 20 62 79 74 65 73 2e  ters, not bytes.
da90: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
daa0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
dab0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
dac0: 3e 0a 3c 61 20 6e 61 6d 65 3d 22 74 72 69 6d 46  >.<a name="trimF
dad0: 75 6e 63 22 3e 0a 74 72 69 6d 28 3c 69 3e 58 3c  unc">.trim(<i>X<
dae0: 2f 69 3e 29 3c 62 72 3e 74 72 69 6d 28 3c 69 3e  /i>)<br>trim(<i>
daf0: 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c  X</i>,<i>Y</i>)<
db00: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
db10: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 73  "top">Return a s
db20: 74 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79 20  tring formed by 
db30: 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64  removing any and
db40: 20 61 6c 6c 0a 63 68 61 72 61 63 74 65 72 73 20   all.characters 
db50: 74 68 61 74 20 61 70 70 65 61 72 20 69 6e 20 3c  that appear in <
db60: 69 3e 59 3c 2f 69 3e 20 66 72 6f 6d 20 62 6f 74  i>Y</i> from bot
db70: 68 20 65 6e 64 73 20 6f 66 20 3c 69 3e 58 3c 2f  h ends of <i>X</
db80: 69 3e 2e 0a 49 66 20 74 68 65 20 3c 69 3e 59 3c  i>..If the <i>Y<
db90: 2f 69 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20  /i> argument is 
dba0: 6f 6d 69 74 74 65 64 2c 20 73 70 61 63 65 73 20  omitted, spaces 
dbb0: 61 72 65 20 72 65 6d 6f 76 65 64 2e 3c 2f 74 64  are removed.</td
dbc0: 3e 0a 3c 2f 74 72 3e 0a 0a 0a 3c 74 72 3e 0a 3c  >.</tr>...<tr>.<
dbd0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
dbe0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 74 79  align="right">ty
dbf0: 70 65 6f 66 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  peof(<i>X</i>)</
dc00: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
dc10: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
dc20: 74 79 70 65 20 6f 66 20 74 68 65 20 65 78 70 72  type of the expr
dc30: 65 73 73 69 6f 6e 20 3c 69 3e 58 3c 2f 69 3e 2e  ession <i>X</i>.
dc40: 20 20 54 68 65 20 6f 6e 6c 79 20 0a 72 65 74 75    The only .retu
dc50: 72 6e 20 76 61 6c 75 65 73 20 61 72 65 20 22 6e  rn values are "n
dc60: 75 6c 6c 22 2c 20 22 69 6e 74 65 67 65 72 22 2c  ull", "integer",
dc70: 20 22 72 65 61 6c 22 2c 20 22 74 65 78 74 22 2c   "real", "text",
dc80: 20 61 6e 64 20 22 62 6c 6f 62 22 2e 0a 53 51 4c   and "blob"..SQL
dc90: 69 74 65 27 73 20 74 79 70 65 20 68 61 6e 64 6c  ite's type handl
dca0: 69 6e 67 20 69 73 20 0a 65 78 70 6c 61 69 6e 65  ing is .explaine
dcb0: 64 20 69 6e 20 3c 61 20 68 72 65 66 3d 22 64 61  d in <a href="da
dcc0: 74 61 74 79 70 65 33 2e 68 74 6d 6c 22 3e 44 61  tatype3.html">Da
dcd0: 74 61 74 79 70 65 73 20 69 6e 20 53 51 4c 69 74  tatypes in SQLit
dce0: 65 20 56 65 72 73 69 6f 6e 20 33 3c 2f 61 3e 2e  e Version 3</a>.
dcf0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
dd00: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
dd10: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
dd20: 3e 75 70 70 65 72 28 3c 69 3e 58 3c 2f 69 3e 29  >upper(<i>X</i>)
dd30: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
dd40: 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20  ="top">Return a 
dd50: 63 6f 70 79 20 6f 66 20 69 6e 70 75 74 20 73 74  copy of input st
dd60: 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 63 6f  ring <i>X</i> co
dd70: 6e 76 65 72 74 65 64 20 74 6f 20 61 6c 6c 0a 75  nverted to all.u
dd80: 70 70 65 72 2d 63 61 73 65 20 6c 65 74 74 65 72  pper-case letter
dd90: 73 2e 20 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e  s.  The implemen
dda0: 74 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 66  tation of this f
ddb0: 75 6e 63 74 69 6f 6e 20 75 73 65 73 20 74 68 65  unction uses the
ddc0: 20 43 20 6c 69 62 72 61 72 79 0a 72 6f 75 74 69   C library.routi
ddd0: 6e 65 20 3c 62 3e 74 6f 75 70 70 65 72 28 29 3c  ne <b>toupper()<
dde0: 2f 62 3e 20 77 68 69 63 68 20 6d 65 61 6e 73 20  /b> which means 
ddf0: 69 74 20 6d 61 79 20 6e 6f 74 20 77 6f 72 6b 20  it may not work 
de00: 63 6f 72 72 65 63 74 6c 79 20 6f 6e 20 0a 55 54  correctly on .UT
de10: 46 2d 38 20 73 74 72 69 6e 67 73 2e 3c 2f 74 64  F-8 strings.</td
de20: 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e  >.</tr>.</table>
de30: 0a 0a 3c 62 3e 44 61 74 65 20 41 6e 64 20 54 69  ..<b>Date And Ti
de40: 6d 65 20 46 75 6e 63 74 69 6f 6e 73 3c 2f 62 3e  me Functions</b>
de50: 0a 0a 3c 70 3e 44 61 74 65 20 61 6e 64 20 74 69  ..<p>Date and ti
de60: 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  me functions are
de70: 20 64 6f 63 75 6d 65 6e 74 65 64 20 69 6e 20 74   documented in t
de80: 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 68 74 74  he .<a href="htt
de90: 70 3a 2f 2f 77 77 77 2e 73 71 6c 69 74 65 2e 6f  p://www.sqlite.o
dea0: 72 67 2f 63 76 73 74 72 61 63 2f 77 69 6b 69 3f  rg/cvstrac/wiki?
deb0: 70 3d 44 61 74 65 41 6e 64 54 69 6d 65 46 75 6e  p=DateAndTimeFun
dec0: 63 74 69 6f 6e 73 22 3e 0a 53 51 4c 69 74 65 20  ctions">.SQLite 
ded0: 57 69 6b 69 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 3c  Wiki</a>.</p>..<
dee0: 61 20 6e 61 6d 65 3d 22 61 67 67 72 65 67 61 74  a name="aggregat
def0: 65 66 75 6e 63 74 69 6f 6e 73 22 3e 3c 2f 61 3e  efunctions"></a>
df00: 0a 3c 62 3e 41 67 67 72 65 67 61 74 65 20 46 75  .<b>Aggregate Fu
df10: 6e 63 74 69 6f 6e 73 3c 2f 62 3e 0a 0a 3c 70 3e  nctions</b>..<p>
df20: 0a 54 68 65 20 61 67 67 72 65 67 61 74 65 20 66  .The aggregate f
df30: 75 6e 63 74 69 6f 6e 73 20 73 68 6f 77 6e 20 62  unctions shown b
df40: 65 6c 6f 77 20 61 72 65 20 61 76 61 69 6c 61 62  elow are availab
df50: 6c 65 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20  le by default.  
df60: 41 64 64 69 74 69 6f 6e 61 6c 0a 61 67 67 72 65  Additional.aggre
df70: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 77  gate functions w
df80: 72 69 74 74 65 6e 20 69 6e 20 43 20 6d 61 79 20  ritten in C may 
df90: 62 65 20 61 64 64 65 64 20 75 73 69 6e 67 20 74  be added using t
dfa0: 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 63 61 70  he .<a href="cap
dfb0: 69 33 72 65 66 2e 68 74 6d 6c 23 73 71 6c 69 74  i3ref.html#sqlit
dfc0: 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  e3_create_functi
dfd0: 6f 6e 22 3e 73 71 6c 69 74 65 33 5f 63 72 65 61  on">sqlite3_crea
dfe0: 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 3c 2f 61  te_function()</a
dff0: 3e 0a 41 50 49 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a  >.API.</p>..<p>.
e000: 49 6e 20 61 6e 79 20 61 67 67 72 65 67 61 74 65  In any aggregate
e010: 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 74   function that t
e020: 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72  akes a single ar
e030: 67 75 6d 65 6e 74 2c 20 74 68 61 74 20 61 72 67  gument, that arg
e040: 75 6d 65 6e 74 0a 63 61 6e 20 62 65 20 70 72 65  ument.can be pre
e050: 63 65 65 64 65 64 20 62 79 20 74 68 65 20 6b 65  ceeded by the ke
e060: 79 77 6f 72 64 20 44 49 53 54 49 4e 43 54 2e 20  yword DISTINCT. 
e070: 20 49 6e 20 73 75 63 68 20 63 61 73 65 73 2c 20   In such cases, 
e080: 64 75 70 6c 69 63 61 74 65 0a 65 6c 65 6d 65 6e  duplicate.elemen
e090: 74 73 20 61 72 65 20 66 69 6c 74 65 72 65 64 20  ts are filtered 
e0a0: 62 65 66 6f 72 65 20 62 65 69 6e 67 20 70 61 73  before being pas
e0b0: 73 65 64 20 69 6e 74 6f 20 74 68 65 20 61 67 67  sed into the agg
e0c0: 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 2e  regate function.
e0d0: 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68  .For example, th
e0e0: 65 20 66 75 6e 63 74 69 6f 6e 20 22 63 6f 75 6e  e function "coun
e0f0: 74 28 64 69 73 74 69 6e 63 74 20 58 29 22 20 77  t(distinct X)" w
e100: 69 6c 6c 20 72 65 74 75 72 6e 20 74 68 65 20 6e  ill return the n
e110: 75 6d 62 65 72 0a 6f 66 20 64 69 73 74 69 6e 63  umber.of distinc
e120: 74 20 76 61 6c 75 65 73 20 6f 66 20 63 6f 6c 75  t values of colu
e130: 6d 6e 20 58 20 69 6e 73 74 65 61 64 20 6f 66 20  mn X instead of 
e140: 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72  the total number
e150: 20 6f 66 20 6e 6f 6e 2d 6e 75 6c 6c 0a 76 61 6c   of non-null.val
e160: 75 65 73 20 69 6e 20 63 6f 6c 75 6d 6e 20 58 2e  ues in column X.
e170: 0a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f  .</p>..<table bo
e180: 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69  rder=0 cellpaddi
e190: 6e 67 3d 31 30 20 63 6c 61 73 73 3d 22 70 64 66  ng=10 class="pdf
e1a0: 5f 66 75 6e 63 74 69 6f 6e 73 22 3e 0a 3c 74 72  _functions">.<tr
e1b0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
e1c0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
e1d0: 20 77 69 64 74 68 3d 31 32 30 3e 61 76 67 28 3c   width=120>avg(<
e1e0: 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>X</i>)</td>.<t
e1f0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
e200: 65 74 75 72 6e 20 74 68 65 20 61 76 65 72 61 67  eturn the averag
e210: 65 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 6e  e value of all n
e220: 6f 6e 2d 4e 55 4c 4c 20 3c 69 3e 58 3c 2f 69 3e  on-NULL <i>X</i>
e230: 20 77 69 74 68 69 6e 20 61 0a 67 72 6f 75 70 2e   within a.group.
e240: 20 20 53 74 72 69 6e 67 20 61 6e 64 20 42 4c 4f    String and BLO
e250: 42 20 76 61 6c 75 65 73 20 74 68 61 74 20 64 6f  B values that do
e260: 20 6e 6f 74 20 6c 6f 6f 6b 20 6c 69 6b 65 20 6e   not look like n
e270: 75 6d 62 65 72 73 20 61 72 65 0a 69 6e 74 65 72  umbers are.inter
e280: 70 72 65 74 65 64 20 61 73 20 30 2e 0a 54 68 65  preted as 0..The
e290: 20 72 65 73 75 6c 74 20 6f 66 20 61 76 67 28 29   result of avg()
e2a0: 20 69 73 20 61 6c 77 61 79 73 20 61 20 66 6c 6f   is always a flo
e2b0: 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75  ating point valu
e2c0: 65 20 65 76 65 6e 20 69 66 20 61 6c 6c 0a 69 6e  e even if all.in
e2d0: 70 75 74 73 20 61 72 65 20 69 6e 74 65 67 65 72  puts are integer
e2e0: 73 2e 20 3c 2f 70 3e 3c 2f 74 64 3e 0a 3c 2f 74  s. </p></td>.</t
e2f0: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
e300: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
e310: 22 72 69 67 68 74 22 3e 63 6f 75 6e 74 28 3c 69  "right">count(<i
e320: 3e 58 3c 2f 69 3e 29 3c 62 72 3e 63 6f 75 6e 74  >X</i>)<br>count
e330: 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  (*)</td>.<td val
e340: 69 67 6e 3d 22 74 6f 70 22 3e 54 68 65 20 66 69  ign="top">The fi
e350: 72 73 74 20 66 6f 72 6d 20 72 65 74 75 72 6e 20  rst form return 
e360: 61 20 63 6f 75 6e 74 20 6f 66 20 74 68 65 20 6e  a count of the n
e370: 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 0a 74  umber of times.t
e380: 68 61 74 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20  hat <i>X</i> is 
e390: 6e 6f 74 20 4e 55 4c 4c 20 69 6e 20 61 20 67 72  not NULL in a gr
e3a0: 6f 75 70 2e 20 20 54 68 65 20 73 65 63 6f 6e 64  oup.  The second
e3b0: 20 66 6f 72 6d 20 28 77 69 74 68 20 6e 6f 20 61   form (with no a
e3c0: 72 67 75 6d 65 6e 74 29 0a 72 65 74 75 72 6e 73  rgument).returns
e3d0: 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65   the total numbe
e3e0: 72 20 6f 66 20 72 6f 77 73 20 69 6e 20 74 68 65  r of rows in the
e3f0: 20 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c 2f 74   group.</td>.</t
e400: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
e410: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
e420: 22 72 69 67 68 74 22 3e 6d 61 78 28 3c 69 3e 58  "right">max(<i>X
e430: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
e440: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
e450: 72 6e 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76  rn the maximum v
e460: 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75  alue of all valu
e470: 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e  es in the group.
e480: 0a 54 68 65 20 75 73 75 61 6c 20 73 6f 72 74 20  .The usual sort 
e490: 6f 72 64 65 72 20 69 73 20 75 73 65 64 20 74 6f  order is used to
e4a0: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d   determine the m
e4b0: 61 78 69 6d 75 6d 2e 3c 2f 74 64 3e 0a 3c 2f 74  aximum.</td>.</t
e4c0: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
e4d0: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
e4e0: 22 72 69 67 68 74 22 3e 6d 69 6e 28 3c 69 3e 58  "right">min(<i>X
e4f0: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
e500: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
e510: 72 6e 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 6e  rn the minimum n
e520: 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 20 6f 66  on-NULL value of
e530: 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74   all values in t
e540: 68 65 20 67 72 6f 75 70 2e 0a 54 68 65 20 75 73  he group..The us
e550: 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 20 69  ual sort order i
e560: 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d  s used to determ
e570: 69 6e 65 20 74 68 65 20 6d 69 6e 69 6d 75 6d 2e  ine the minimum.
e580: 20 20 4e 55 4c 4c 20 69 73 20 6f 6e 6c 79 20 72    NULL is only r
e590: 65 74 75 72 6e 65 64 0a 69 66 20 61 6c 6c 20 76  eturned.if all v
e5a0: 61 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f  alues in the gro
e5b0: 75 70 20 61 72 65 20 4e 55 4c 4c 2e 3c 2f 74 64  up are NULL.</td
e5c0: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
e5d0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
e5e0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 73 75 6d  lign="right">sum
e5f0: 28 3c 69 3e 58 3c 2f 69 3e 29 3c 62 72 3e 74 6f  (<i>X</i>)<br>to
e600: 74 61 6c 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74  tal(<i>X</i>)</t
e610: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
e620: 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 6e  op">Return the n
e630: 75 6d 65 72 69 63 20 73 75 6d 20 6f 66 20 61 6c  umeric sum of al
e640: 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65  l non-NULL value
e650: 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a  s in the group..
e660: 20 20 20 49 66 20 74 68 65 72 65 20 61 72 65 20     If there are 
e670: 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75  no non-NULL inpu
e680: 74 20 72 6f 77 73 20 74 68 65 6e 20 73 75 6d 28  t rows then sum(
e690: 29 20 72 65 74 75 72 6e 73 0a 20 20 20 4e 55 4c  ) returns.   NUL
e6a0: 4c 20 62 75 74 20 74 6f 74 61 6c 28 29 20 72 65  L but total() re
e6b0: 74 75 72 6e 73 20 30 2e 30 2e 0a 20 20 20 4e 55  turns 0.0..   NU
e6c0: 4c 4c 20 69 73 20 6e 6f 74 20 6e 6f 72 6d 61 6c  LL is not normal
e6d0: 6c 79 20 61 20 68 65 6c 70 66 75 6c 20 72 65 73  ly a helpful res
e6e0: 75 6c 74 20 66 6f 72 20 74 68 65 20 73 75 6d 20  ult for the sum 
e6f0: 6f 66 20 6e 6f 20 72 6f 77 73 0a 20 20 20 62 75  of no rows.   bu
e700: 74 20 74 68 65 20 53 51 4c 20 73 74 61 6e 64 61  t the SQL standa
e710: 72 64 20 72 65 71 75 69 72 65 73 20 69 74 20 61  rd requires it a
e720: 6e 64 20 6d 6f 73 74 20 6f 74 68 65 72 0a 20 20  nd most other.  
e730: 20 53 51 4c 20 64 61 74 61 62 61 73 65 20 65 6e   SQL database en
e740: 67 69 6e 65 73 20 69 6d 70 6c 65 6d 65 6e 74 20  gines implement 
e750: 73 75 6d 28 29 20 74 68 61 74 20 77 61 79 20 73  sum() that way s
e760: 6f 20 53 51 4c 69 74 65 20 64 6f 65 73 20 69 74  o SQLite does it
e770: 20 69 6e 20 74 68 65 0a 20 20 20 73 61 6d 65 20   in the.   same 
e780: 77 61 79 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  way in order to 
e790: 62 65 20 63 6f 6d 70 61 74 69 62 6c 65 2e 20 20  be compatible.  
e7a0: 20 54 68 65 20 6e 6f 6e 2d 73 74 61 6e 64 61 72   The non-standar
e7b0: 64 20 74 6f 74 61 6c 28 29 20 66 75 6e 63 74 69  d total() functi
e7c0: 6f 6e 0a 20 20 20 69 73 20 70 72 6f 76 69 64 65  on.   is provide
e7d0: 64 20 61 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e  d as a convenien
e7e0: 74 20 77 61 79 20 74 6f 20 77 6f 72 6b 20 61 72  t way to work ar
e7f0: 6f 75 6e 64 20 74 68 69 73 20 64 65 73 69 67 6e  ound this design
e800: 20 70 72 6f 62 6c 65 6d 0a 20 20 20 69 6e 20 74   problem.   in t
e810: 68 65 20 53 51 4c 20 6c 61 6e 67 75 61 67 65 2e  he SQL language.
e820: 3c 2f 70 3e 0a 0a 20 20 20 3c 70 3e 54 68 65 20  </p>..   <p>The 
e830: 72 65 73 75 6c 74 20 6f 66 20 74 6f 74 61 6c 28  result of total(
e840: 29 20 69 73 20 61 6c 77 61 79 73 20 61 20 66 6c  ) is always a fl
e850: 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c  oating point val
e860: 75 65 2e 0a 20 20 20 54 68 65 20 72 65 73 75 6c  ue..   The resul
e870: 74 20 6f 66 20 73 75 6d 28 29 20 69 73 20 61 6e  t of sum() is an
e880: 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 20 69   integer value i
e890: 66 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 69  f all non-NULL i
e8a0: 6e 70 75 74 73 20 61 72 65 20 69 6e 74 65 67 65  nputs are intege
e8b0: 72 73 2e 0a 20 20 20 49 66 20 61 6e 79 20 69 6e  rs..   If any in
e8c0: 70 75 74 20 74 6f 20 73 75 6d 28 29 20 69 73 20  put to sum() is 
e8d0: 6e 65 69 74 68 65 72 20 61 6e 20 69 6e 74 65 67  neither an integ
e8e0: 65 72 20 6f 72 20 61 20 4e 55 4c 4c 0a 20 20 20  er or a NULL.   
e8f0: 74 68 65 6e 20 73 75 6d 28 29 20 72 65 74 75 72  then sum() retur
e900: 6e 73 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f  ns a floating po
e910: 69 6e 74 20 76 61 6c 75 65 0a 20 20 20 77 68 69  int value.   whi
e920: 63 68 20 6d 69 67 68 74 20 62 65 20 61 6e 20 61  ch might be an a
e930: 70 70 72 6f 78 69 6d 61 74 69 6f 6e 20 74 6f 20  pproximation to 
e940: 74 68 65 20 74 72 75 65 20 73 75 6d 2e 3c 2f 70  the true sum.</p
e950: 3e 0a 0a 20 20 20 3c 70 3e 53 75 6d 28 29 20 77  >..   <p>Sum() w
e960: 69 6c 6c 20 74 68 72 6f 77 20 61 6e 20 22 69 6e  ill throw an "in
e970: 74 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 22 20  teger overflow" 
e980: 65 78 63 65 70 74 69 6f 6e 20 69 66 20 61 6c 6c  exception if all
e990: 20 69 6e 70 75 74 73 0a 20 20 20 61 72 65 20 69   inputs.   are i
e9a0: 6e 74 65 67 65 72 73 20 6f 72 20 4e 55 4c 4c 0a  ntegers or NULL.
e9b0: 20 20 20 61 6e 64 20 61 6e 20 69 6e 74 65 67 65     and an intege
e9c0: 72 20 6f 76 65 72 66 6c 6f 77 20 6f 63 63 75 72  r overflow occur
e9d0: 73 20 61 74 20 61 6e 79 20 70 6f 69 6e 74 20 64  s at any point d
e9e0: 75 72 69 6e 67 20 74 68 65 20 63 6f 6d 70 75 74  uring the comput
e9f0: 61 74 69 6f 6e 2e 0a 20 20 20 54 6f 74 61 6c 28  ation..   Total(
ea00: 29 20 6e 65 76 65 72 20 74 68 72 6f 77 73 20 61  ) never throws a
ea10: 6e 20 65 78 63 65 70 74 69 6f 6e 2e 3c 2f 70 3e  n exception.</p>
ea20: 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a  .</tr>.</table>.
ea30: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 49 4e 53 45  }...Section INSE
ea40: 52 54 20 69 6e 73 65 72 74 0a 0a 53 79 6e 74 61  RT insert..Synta
ea50: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
ea60: 7d 20 7b 0a 49 4e 53 45 52 54 20 5b 4f 52 20 3c  } {.INSERT [OR <
ea70: 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74  conflict-algorit
ea80: 68 6d 3e 5d 20 49 4e 54 4f 20 5b 3c 64 61 74 61  hm>] INTO [<data
ea90: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74  base-name> .] <t
eaa0: 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 3c 63 6f  able-name> [(<co
eab0: 6c 75 6d 6e 2d 6c 69 73 74 3e 29 5d 20 56 41 4c  lumn-list>)] VAL
eac0: 55 45 53 28 3c 76 61 6c 75 65 2d 6c 69 73 74 3e  UES(<value-list>
ead0: 29 20 7c 0a 49 4e 53 45 52 54 20 5b 4f 52 20 3c  ) |.INSERT [OR <
eae0: 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74  conflict-algorit
eaf0: 68 6d 3e 5d 20 49 4e 54 4f 20 5b 3c 64 61 74 61  hm>] INTO [<data
eb00: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74  base-name> .] <t
eb10: 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 3c 63 6f  able-name> [(<co
eb20: 6c 75 6d 6e 2d 6c 69 73 74 3e 29 5d 20 3c 73 65  lumn-list>)] <se
eb30: 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a  lect-statement>.
eb40: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
eb50: 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
eb60: 74 20 63 6f 6d 65 73 20 69 6e 20 74 77 6f 20 62  t comes in two b
eb70: 61 73 69 63 20 66 6f 72 6d 73 2e 20 20 54 68 65  asic forms.  The
eb80: 20 66 69 72 73 74 20 66 6f 72 6d 0a 28 77 69 74   first form.(wit
eb90: 68 20 74 68 65 20 22 56 41 4c 55 45 53 22 20 6b  h the "VALUES" k
eba0: 65 79 77 6f 72 64 29 20 63 72 65 61 74 65 73 20  eyword) creates 
ebb0: 61 20 73 69 6e 67 6c 65 20 6e 65 77 20 72 6f 77  a single new row
ebc0: 20 69 6e 20 61 6e 20 65 78 69 73 74 69 6e 67 20   in an existing 
ebd0: 74 61 62 6c 65 2e 0a 49 66 20 6e 6f 20 63 6f 6c  table..If no col
ebe0: 75 6d 6e 2d 6c 69 73 74 20 69 73 20 73 70 65 63  umn-list is spec
ebf0: 69 66 69 65 64 20 74 68 65 6e 20 74 68 65 20 6e  ified then the n
ec00: 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65 73 20  umber of values 
ec10: 6d 75 73 74 0a 62 65 20 74 68 65 20 73 61 6d 65  must.be the same
ec20: 20 61 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   as the number o
ec30: 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  f columns in the
ec40: 20 74 61 62 6c 65 2e 20 20 49 66 20 61 20 63 6f   table.  If a co
ec50: 6c 75 6d 6e 2d 6c 69 73 74 0a 69 73 20 73 70 65  lumn-list.is spe
ec60: 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65  cified, then the
ec70: 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65   number of value
ec80: 73 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68 65  s must match the
ec90: 20 6e 75 6d 62 65 72 20 6f 66 0a 73 70 65 63 69   number of.speci
eca0: 66 69 65 64 20 63 6f 6c 75 6d 6e 73 2e 20 20 43  fied columns.  C
ecb0: 6f 6c 75 6d 6e 73 20 6f 66 20 74 68 65 20 74 61  olumns of the ta
ecc0: 62 6c 65 20 74 68 61 74 20 64 6f 20 6e 6f 74 20  ble that do not 
ecd0: 61 70 70 65 61 72 20 69 6e 20 74 68 65 0a 63 6f  appear in the.co
ece0: 6c 75 6d 6e 20 6c 69 73 74 20 61 72 65 20 66 69  lumn list are fi
ecf0: 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 64 65  lled with the de
ed00: 66 61 75 6c 74 20 76 61 6c 75 65 2c 20 6f 72 20  fault value, or 
ed10: 77 69 74 68 20 4e 55 4c 4c 20 69 66 20 6e 6f 74  with NULL if not
ed20: 0a 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69  .default value i
ed30: 73 20 73 70 65 63 69 66 69 65 64 2e 0a 3c 2f 70  s specified..</p
ed40: 3e 0a 0a 3c 70 3e 54 68 65 20 73 65 63 6f 6e 64  >..<p>The second
ed50: 20 66 6f 72 6d 20 6f 66 20 74 68 65 20 49 4e 53   form of the INS
ed60: 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20 74 61  ERT statement ta
ed70: 6b 65 73 20 69 74 20 64 61 74 61 20 66 72 6f 6d  kes it data from
ed80: 20 61 0a 53 45 4c 45 43 54 20 73 74 61 74 65 6d   a.SELECT statem
ed90: 65 6e 74 2e 20 20 54 68 65 20 6e 75 6d 62 65 72  ent.  The number
eda0: 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74   of columns in t
edb0: 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65  he result of the
edc0: 0a 53 45 4c 45 43 54 20 6d 75 73 74 20 65 78 61  .SELECT must exa
edd0: 63 74 6c 79 20 6d 61 74 63 68 20 74 68 65 20 6e  ctly match the n
ede0: 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
edf0: 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20 69 66   in the table if
ee00: 0a 6e 6f 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 20  .no column list 
ee10: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 6f 72  is specified, or
ee20: 20 69 74 20 6d 75 73 74 20 6d 61 74 63 68 20 74   it must match t
ee30: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
ee40: 75 6d 6e 73 0a 6e 61 6d 65 20 69 6e 20 74 68 65  umns.name in the
ee50: 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 2e 20 20 41   column list.  A
ee60: 20 6e 65 77 20 65 6e 74 72 79 20 69 73 20 6d 61   new entry is ma
ee70: 64 65 20 69 6e 20 74 68 65 20 74 61 62 6c 65 0a  de in the table.
ee80: 66 6f 72 20 65 76 65 72 79 20 72 6f 77 20 6f 66  for every row of
ee90: 20 74 68 65 20 53 45 4c 45 43 54 20 72 65 73 75   the SELECT resu
eea0: 6c 74 2e 20 20 54 68 65 20 53 45 4c 45 43 54 20  lt.  The SELECT 
eeb0: 6d 61 79 20 62 65 20 73 69 6d 70 6c 65 0a 6f 72  may be simple.or
eec0: 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f 70 3e 0a 0a   compound.</p>..
eed0: 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  <p>The optional 
eee0: 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20  conflict-clause 
eef0: 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69  allows the speci
ef00: 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61  fication of an a
ef10: 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74  lternative.const
ef20: 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72  raint conflict r
ef30: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
ef40: 74 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69 6e  thm to use durin
ef50: 67 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61  g this one comma
ef60: 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74  nd..See the sect
ef70: 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68 72  ion titled.<a hr
ef80: 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f  ef="#conflict">O
ef90: 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66  N CONFLICT</a> f
efa0: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
efb0: 66 6f 72 6d 61 74 69 6f 6e 2e 0a 46 6f 72 20 63  formation..For c
efc0: 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74  ompatibility wit
efd0: 68 20 4d 79 53 51 4c 2c 20 74 68 65 20 70 61 72  h MySQL, the par
efe0: 73 65 72 20 61 6c 6c 6f 77 73 20 74 68 65 20 75  ser allows the u
eff0: 73 65 20 6f 66 20 74 68 65 0a 73 69 6e 67 6c 65  se of the.single
f000: 20 6b 65 79 77 6f 72 64 20 3c 61 20 68 72 65 66   keyword <a href
f010: 3d 22 23 72 65 70 6c 61 63 65 22 3e 52 45 50 4c  ="#replace">REPL
f020: 41 43 45 3c 2f 61 3e 20 61 73 20 61 6e 20 61 6c  ACE</a> as an al
f030: 69 61 73 20 66 6f 72 20 22 49 4e 53 45 52 54 20  ias for "INSERT 
f040: 4f 52 20 52 45 50 4c 41 43 45 22 2e 0a 3c 2f 70  OR REPLACE"..</p
f050: 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 4f  >.}...Section {O
f060: 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73  N CONFLICT claus
f070: 65 7d 20 63 6f 6e 66 6c 69 63 74 0a 0a 53 79 6e  e} conflict..Syn
f080: 74 61 78 20 7b 63 6f 6e 66 6c 69 63 74 2d 63 6c  tax {conflict-cl
f090: 61 75 73 65 7d 20 7b 0a 4f 4e 20 43 4f 4e 46 4c  ause} {.ON CONFL
f0a0: 49 43 54 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c  ICT <conflict-al
f0b0: 67 6f 72 69 74 68 6d 3e 0a 7d 20 7b 63 6f 6e 66  gorithm>.} {conf
f0c0: 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 7d 20  lict-algorithm} 
f0d0: 7b 0a 52 4f 4c 4c 42 41 43 4b 20 7c 20 41 42 4f  {.ROLLBACK | ABO
f0e0: 52 54 20 7c 20 46 41 49 4c 20 7c 20 49 47 4e 4f  RT | FAIL | IGNO
f0f0: 52 45 20 7c 20 52 45 50 4c 41 43 45 0a 7d 0a 0a  RE | REPLACE.}..
f100: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 4f 4e  puts {.<p>The ON
f110: 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65   CONFLICT clause
f120: 20 69 73 20 6e 6f 74 20 61 20 73 65 70 61 72 61   is not a separa
f130: 74 65 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20  te SQL command. 
f140: 20 49 74 20 69 73 20 61 0a 6e 6f 6e 2d 73 74 61   It is a.non-sta
f150: 6e 64 61 72 64 20 63 6c 61 75 73 65 20 74 68 61  ndard clause tha
f160: 74 20 63 61 6e 20 61 70 70 65 61 72 20 69 6e 20  t can appear in 
f170: 6d 61 6e 79 20 6f 74 68 65 72 20 53 51 4c 20 63  many other SQL c
f180: 6f 6d 6d 61 6e 64 73 2e 0a 49 74 20 69 73 20 67  ommands..It is g
f190: 69 76 65 6e 20 69 74 73 20 6f 77 6e 20 73 65 63  iven its own sec
f1a0: 74 69 6f 6e 20 69 6e 20 74 68 69 73 20 64 6f 63  tion in this doc
f1b0: 75 6d 65 6e 74 20 62 65 63 61 75 73 65 20 69 74  ument because it
f1c0: 20 69 73 20 6e 6f 74 0a 70 61 72 74 20 6f 66 20   is not.part of 
f1d0: 73 74 61 6e 64 61 72 64 20 53 51 4c 20 61 6e 64  standard SQL and
f1e0: 20 74 68 65 72 65 66 6f 72 65 20 6d 69 67 68 74   therefore might
f1f0: 20 6e 6f 74 20 62 65 20 66 61 6d 69 6c 69 61 72   not be familiar
f200: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 79  .</p>..<p>The sy
f210: 6e 74 61 78 20 66 6f 72 20 74 68 65 20 4f 4e 20  ntax for the ON 
f220: 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20  CONFLICT clause 
f230: 69 73 20 61 73 20 73 68 6f 77 6e 20 61 62 6f 76  is as shown abov
f240: 65 20 66 6f 72 0a 74 68 65 20 43 52 45 41 54 45  e for.the CREATE
f250: 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 2e 20   TABLE command. 
f260: 20 46 6f 72 20 74 68 65 20 49 4e 53 45 52 54 20   For the INSERT 
f270: 61 6e 64 0a 55 50 44 41 54 45 20 63 6f 6d 6d 61  and.UPDATE comma
f280: 6e 64 73 2c 20 74 68 65 20 6b 65 79 77 6f 72 64  nds, the keyword
f290: 73 20 22 4f 4e 20 43 4f 4e 46 4c 49 43 54 22 20  s "ON CONFLICT" 
f2a0: 61 72 65 20 72 65 70 6c 61 63 65 64 20 62 79 20  are replaced by 
f2b0: 22 4f 52 22 2c 20 74 6f 20 6d 61 6b 65 0a 74 68  "OR", to make.th
f2c0: 65 20 73 79 6e 74 61 78 20 73 65 65 6d 20 6d 6f  e syntax seem mo
f2d0: 72 65 20 6e 61 74 75 72 61 6c 2e 20 20 46 6f 72  re natural.  For
f2e0: 20 65 78 61 6d 70 6c 65 2c 20 69 6e 73 74 65 61   example, instea
f2f0: 64 20 6f 66 0a 22 49 4e 53 45 52 54 20 4f 4e 20  d of."INSERT ON 
f300: 43 4f 4e 46 4c 49 43 54 20 49 47 4e 4f 52 45 22  CONFLICT IGNORE"
f310: 20 77 65 20 68 61 76 65 20 22 49 4e 53 45 52 54   we have "INSERT
f320: 20 4f 52 20 49 47 4e 4f 52 45 22 2e 0a 54 68 65   OR IGNORE"..The
f330: 20 6b 65 79 77 6f 72 64 73 20 63 68 61 6e 67 65   keywords change
f340: 20 62 75 74 20 74 68 65 20 6d 65 61 6e 69 6e 67   but the meaning
f350: 20 6f 66 20 74 68 65 20 63 6c 61 75 73 65 20 69   of the clause i
f360: 73 20 74 68 65 20 73 61 6d 65 0a 65 69 74 68 65  s the same.eithe
f370: 72 20 77 61 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  r way.</p>..<p>T
f380: 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63  he ON CONFLICT c
f390: 6c 61 75 73 65 20 73 70 65 63 69 66 69 65 73 20  lause specifies 
f3a0: 61 6e 20 61 6c 67 6f 72 69 74 68 6d 20 75 73 65  an algorithm use
f3b0: 64 20 74 6f 20 72 65 73 6f 6c 76 65 0a 63 6f 6e  d to resolve.con
f3c0: 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74  straint conflict
f3d0: 73 2e 20 20 54 68 65 72 65 20 61 72 65 20 66 69  s.  There are fi
f3e0: 76 65 20 63 68 6f 69 63 65 73 3a 20 52 4f 4c 4c  ve choices: ROLL
f3f0: 42 41 43 4b 2c 20 41 42 4f 52 54 2c 0a 46 41 49  BACK, ABORT,.FAI
f400: 4c 2c 20 49 47 4e 4f 52 45 2c 20 61 6e 64 20 52  L, IGNORE, and R
f410: 45 50 4c 41 43 45 2e 20 54 68 65 20 64 65 66 61  EPLACE. The defa
f420: 75 6c 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73  ult algorithm is
f430: 20 41 42 4f 52 54 2e 20 20 54 68 69 73 0a 69 73   ABORT.  This.is
f440: 20 77 68 61 74 20 74 68 65 79 20 6d 65 61 6e 3a   what they mean:
f450: 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c 64 74 3e 3c  </p>..<dl>.<dt><
f460: 62 3e 52 4f 4c 4c 42 41 43 4b 3c 2f 62 3e 3c 2f  b>ROLLBACK</b></
f470: 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20  dt>.<dd><p>When 
f480: 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  a constraint vio
f490: 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 61  lation occurs, a
f4a0: 6e 20 69 6d 6d 65 64 69 61 74 65 20 52 4f 4c 4c  n immediate ROLL
f4b0: 42 41 43 4b 0a 6f 63 63 75 72 73 2c 20 74 68 75  BACK.occurs, thu
f4c0: 73 20 65 6e 64 69 6e 67 20 74 68 65 20 63 75 72  s ending the cur
f4d0: 72 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f 6e  rent transaction
f4e0: 2c 20 61 6e 64 20 74 68 65 20 63 6f 6d 6d 61 6e  , and the comman
f4f0: 64 20 61 62 6f 72 74 73 0a 77 69 74 68 20 61 20  d aborts.with a 
f500: 72 65 74 75 72 6e 20 63 6f 64 65 20 6f 66 20 53  return code of S
f510: 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54  QLITE_CONSTRAINT
f520: 2e 20 20 49 66 20 6e 6f 20 74 72 61 6e 73 61 63  .  If no transac
f530: 74 69 6f 6e 20 69 73 0a 61 63 74 69 76 65 20 28  tion is.active (
f540: 6f 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 69  other than the i
f550: 6d 70 6c 69 65 64 20 74 72 61 6e 73 61 63 74 69  mplied transacti
f560: 6f 6e 20 74 68 61 74 20 69 73 20 63 72 65 61 74  on that is creat
f570: 65 64 20 6f 6e 20 65 76 65 72 79 0a 63 6f 6d 6d  ed on every.comm
f580: 61 6e 64 29 20 74 68 65 6e 20 74 68 69 73 20 61  and) then this a
f590: 6c 67 6f 72 69 74 68 6d 20 77 6f 72 6b 73 20 74  lgorithm works t
f5a0: 68 65 20 73 61 6d 65 20 61 73 20 41 42 4f 52 54  he same as ABORT
f5b0: 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e  .</p></dd>..<dt>
f5c0: 3c 62 3e 41 42 4f 52 54 3c 2f 62 3e 3c 2f 64 74  <b>ABORT</b></dt
f5d0: 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20  >.<dd><p>When a 
f5e0: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
f5f0: 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65  tion occurs, the
f600: 20 63 6f 6d 6d 61 6e 64 20 62 61 63 6b 73 20 6f   command backs o
f610: 75 74 0a 61 6e 79 20 70 72 69 6f 72 20 63 68 61  ut.any prior cha
f620: 6e 67 65 73 20 69 74 20 6d 69 67 68 74 20 68 61  nges it might ha
f630: 76 65 20 6d 61 64 65 20 61 6e 64 20 61 62 6f 72  ve made and abor
f640: 74 73 20 77 69 74 68 20 61 20 72 65 74 75 72 6e  ts with a return
f650: 20 63 6f 64 65 0a 6f 66 20 53 51 4c 49 54 45 5f   code.of SQLITE_
f660: 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20 42 75 74  CONSTRAINT.  But
f670: 20 6e 6f 20 52 4f 4c 4c 42 41 43 4b 20 69 73 20   no ROLLBACK is 
f680: 65 78 65 63 75 74 65 64 20 73 6f 20 63 68 61 6e  executed so chan
f690: 67 65 73 0a 66 72 6f 6d 20 70 72 69 6f 72 20 63  ges.from prior c
f6a0: 6f 6d 6d 61 6e 64 73 20 77 69 74 68 69 6e 20 74  ommands within t
f6b0: 68 65 20 73 61 6d 65 20 74 72 61 6e 73 61 63 74  he same transact
f6c0: 69 6f 6e 0a 61 72 65 20 70 72 65 73 65 72 76 65  ion.are preserve
f6d0: 64 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 20  d.  This is the 
f6e0: 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72  default behavior
f6f0: 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e  .</p></dd>..<dt>
f700: 3c 62 3e 46 41 49 4c 3c 2f 62 3e 3c 2f 64 74 3e  <b>FAIL</b></dt>
f710: 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63  .<dd><p>When a c
f720: 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
f730: 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20  ion occurs, the 
f740: 63 6f 6d 6d 61 6e 64 20 61 62 6f 72 74 73 20 77  command aborts w
f750: 69 74 68 20 61 0a 72 65 74 75 72 6e 20 63 6f 64  ith a.return cod
f760: 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  e SQLITE_CONSTRA
f770: 49 4e 54 2e 20 20 42 75 74 20 61 6e 79 20 63 68  INT.  But any ch
f780: 61 6e 67 65 73 20 74 6f 20 74 68 65 20 64 61 74  anges to the dat
f790: 61 62 61 73 65 20 74 68 61 74 0a 74 68 65 20 63  abase that.the c
f7a0: 6f 6d 6d 61 6e 64 20 6d 61 64 65 20 70 72 69 6f  ommand made prio
f7b0: 72 20 74 6f 20 65 6e 63 6f 75 6e 74 65 72 69 6e  r to encounterin
f7c0: 67 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  g the constraint
f7d0: 20 76 69 6f 6c 61 74 69 6f 6e 0a 61 72 65 20 70   violation.are p
f7e0: 72 65 73 65 72 76 65 64 20 61 6e 64 20 61 72 65  reserved and are
f7f0: 20 6e 6f 74 20 62 61 63 6b 65 64 20 6f 75 74 2e   not backed out.
f800: 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69    For example, i
f810: 66 20 61 6e 20 55 50 44 41 54 45 0a 73 74 61 74  f an UPDATE.stat
f820: 65 6d 65 6e 74 20 65 6e 63 6f 75 6e 74 65 72 65  ement encountere
f830: 64 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  d a constraint v
f840: 69 6f 6c 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20  iolation on the 
f850: 31 30 30 74 68 20 72 6f 77 20 74 68 61 74 0a 69  100th row that.i
f860: 74 20 61 74 74 65 6d 70 74 73 20 74 6f 20 75 70  t attempts to up
f870: 64 61 74 65 2c 20 74 68 65 6e 20 74 68 65 20 66  date, then the f
f880: 69 72 73 74 20 39 39 20 72 6f 77 20 63 68 61 6e  irst 99 row chan
f890: 67 65 73 20 61 72 65 20 70 72 65 73 65 72 76 65  ges are preserve
f8a0: 64 0a 62 75 74 20 63 68 61 6e 67 65 73 20 74 6f  d.but changes to
f8b0: 20 72 6f 77 73 20 31 30 30 20 61 6e 64 20 62 65   rows 100 and be
f8c0: 79 6f 6e 64 20 6e 65 76 65 72 20 6f 63 63 75 72  yond never occur
f8d0: 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e  .</p></dd>..<dt>
f8e0: 3c 62 3e 49 47 4e 4f 52 45 3c 2f 62 3e 3c 2f 64  <b>IGNORE</b></d
f8f0: 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61  t>.<dd><p>When a
f900: 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
f910: 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68  ation occurs, th
f920: 65 20 6f 6e 65 20 72 6f 77 20 74 68 61 74 20 63  e one row that c
f930: 6f 6e 74 61 69 6e 73 0a 74 68 65 20 63 6f 6e 73  ontains.the cons
f940: 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
f950: 20 69 73 20 6e 6f 74 20 69 6e 73 65 72 74 65 64   is not inserted
f960: 20 6f 72 20 63 68 61 6e 67 65 64 2e 20 20 42 75   or changed.  Bu
f970: 74 20 74 68 65 20 63 6f 6d 6d 61 6e 64 0a 63 6f  t the command.co
f980: 6e 74 69 6e 75 65 73 20 65 78 65 63 75 74 69 6e  ntinues executin
f990: 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4f 74 68  g normally.  Oth
f9a0: 65 72 20 72 6f 77 73 20 62 65 66 6f 72 65 20 61  er rows before a
f9b0: 6e 64 20 61 66 74 65 72 20 74 68 65 20 72 6f 77  nd after the row
f9c0: 20 74 68 61 74 0a 63 6f 6e 74 61 69 6e 65 64 20   that.contained 
f9d0: 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  the constraint v
f9e0: 69 6f 6c 61 74 69 6f 6e 20 63 6f 6e 74 69 6e 75  iolation continu
f9f0: 65 20 74 6f 20 62 65 20 69 6e 73 65 72 74 65 64  e to be inserted
fa00: 20 6f 72 20 75 70 64 61 74 65 64 0a 6e 6f 72 6d   or updated.norm
fa10: 61 6c 6c 79 2e 20 20 4e 6f 20 65 72 72 6f 72 20  ally.  No error 
fa20: 69 73 20 72 65 74 75 72 6e 65 64 2e 3c 2f 70 3e  is returned.</p>
fa30: 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 52 45  </dd>..<dt><b>RE
fa40: 50 4c 41 43 45 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c  PLACE</b></dt>.<
fa50: 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 55 4e 49  dd><p>When a UNI
fa60: 51 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  QUE constraint v
fa70: 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
fa80: 20 74 68 65 20 70 72 65 2d 65 78 69 73 74 69 6e   the pre-existin
fa90: 67 20 72 6f 77 73 0a 74 68 61 74 20 61 72 65 20  g rows.that are 
faa0: 63 61 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 73  causing the cons
fab0: 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
fac0: 20 61 72 65 20 72 65 6d 6f 76 65 64 20 70 72 69   are removed pri
fad0: 6f 72 20 74 6f 20 69 6e 73 65 72 74 69 6e 67 0a  or to inserting.
fae0: 6f 72 20 75 70 64 61 74 69 6e 67 20 74 68 65 20  or updating the 
faf0: 63 75 72 72 65 6e 74 20 72 6f 77 2e 20 20 54 68  current row.  Th
fb00: 75 73 20 74 68 65 20 69 6e 73 65 72 74 20 6f 72  us the insert or
fb10: 20 75 70 64 61 74 65 20 61 6c 77 61 79 73 20 6f   update always o
fb20: 63 63 75 72 73 2e 0a 54 68 65 20 63 6f 6d 6d 61  ccurs..The comma
fb30: 6e 64 20 63 6f 6e 74 69 6e 75 65 73 20 65 78 65  nd continues exe
fb40: 63 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e  cuting normally.
fb50: 20 20 4e 6f 20 65 72 72 6f 72 20 69 73 20 72 65    No error is re
fb60: 74 75 72 6e 65 64 2e 0a 49 66 20 61 20 4e 4f 54  turned..If a NOT
fb70: 20 4e 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74   NULL constraint
fb80: 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
fb90: 73 2c 20 74 68 65 20 4e 55 4c 4c 20 76 61 6c 75  s, the NULL valu
fba0: 65 20 69 73 20 72 65 70 6c 61 63 65 64 0a 62 79  e is replaced.by
fbb0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   the default val
fbc0: 75 65 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75  ue for that colu
fbd0: 6d 6e 2e 20 20 49 66 20 74 68 65 20 63 6f 6c 75  mn.  If the colu
fbe0: 6d 6e 20 68 61 73 20 6e 6f 20 64 65 66 61 75 6c  mn has no defaul
fbf0: 74 0a 76 61 6c 75 65 2c 20 74 68 65 6e 20 74 68  t.value, then th
fc00: 65 20 41 42 4f 52 54 20 61 6c 67 6f 72 69 74 68  e ABORT algorith
fc10: 6d 20 69 73 20 75 73 65 64 2e 20 20 49 66 20 61  m is used.  If a
fc20: 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e   CHECK constrain
fc30: 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 6f 63 63 75  t violation.occu
fc40: 72 73 20 74 68 65 6e 20 74 68 65 20 49 47 4e 4f  rs then the IGNO
fc50: 52 45 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  RE algorithm is 
fc60: 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68  used.</p>..<p>Wh
fc70: 65 6e 20 74 68 69 73 20 63 6f 6e 66 6c 69 63 74  en this conflict
fc80: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 73 74 72 61   resolution stra
fc90: 74 65 67 79 20 64 65 6c 65 74 65 73 20 72 6f 77  tegy deletes row
fca0: 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 0a 73 61  s in order to.sa
fcb0: 74 69 73 66 79 20 61 20 63 6f 6e 73 74 72 61 69  tisfy a constrai
fcc0: 6e 74 2c 20 69 74 20 64 6f 65 73 20 6e 6f 74 20  nt, it does not 
fcd0: 69 6e 76 6f 6b 65 20 64 65 6c 65 74 65 20 74 72  invoke delete tr
fce0: 69 67 67 65 72 73 20 6f 6e 20 74 68 6f 73 65 0a  iggers on those.
fcf0: 72 6f 77 73 2e 20 20 54 68 69 73 20 62 65 68 61  rows.  This beha
fd00: 76 69 6f 72 20 6d 69 67 68 74 20 63 68 61 6e 67  vior might chang
fd10: 65 20 69 6e 20 61 20 66 75 74 75 72 65 20 72 65  e in a future re
fd20: 6c 65 61 73 65 2e 3c 2f 70 3e 0a 3c 2f 64 6c 3e  lease.</p>.</dl>
fd30: 0a 0a 3c 70 3e 54 68 65 20 61 6c 67 6f 72 69 74  ..<p>The algorit
fd40: 68 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e 20  hm specified in 
fd50: 74 68 65 20 4f 52 20 63 6c 61 75 73 65 20 6f 66  the OR clause of
fd60: 20 61 20 49 4e 53 45 52 54 20 6f 72 20 55 50 44   a INSERT or UPD
fd70: 41 54 45 0a 6f 76 65 72 72 69 64 65 73 20 61 6e  ATE.overrides an
fd80: 79 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63  y algorithm spec
fd90: 69 66 69 65 64 20 69 6e 20 61 20 43 52 45 41 54  ified in a CREAT
fda0: 45 20 54 41 42 4c 45 2e 0a 49 66 20 6e 6f 20 61  E TABLE..If no a
fdb0: 6c 67 6f 72 69 74 68 6d 20 69 73 20 73 70 65 63  lgorithm is spec
fdc0: 69 66 69 65 64 20 61 6e 79 77 68 65 72 65 2c 20  ified anywhere, 
fdd0: 74 68 65 20 41 42 4f 52 54 20 61 6c 67 6f 72 69  the ABORT algori
fde0: 74 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e  thm is used.</p>
fdf0: 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 52 45 49 4e  .}..Section REIN
fe00: 44 45 58 20 72 65 69 6e 64 65 78 0a 0a 53 79 6e  DEX reindex..Syn
fe10: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
fe20: 6e 74 7d 20 7b 0a 20 20 52 45 49 4e 44 45 58 20  nt} {.  REINDEX 
fe30: 3c 63 6f 6c 6c 61 74 69 6f 6e 20 6e 61 6d 65 3e  <collation name>
fe40: 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  .}.Syntax {sql-s
fe50: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 20 20 52 45  tatement} {.  RE
fe60: 49 4e 44 45 58 20 5b 3c 64 61 74 61 62 61 73 65  INDEX [<database
fe70: 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65  -name> .] <table
fe80: 2f 69 6e 64 65 78 2d 6e 61 6d 65 3e 0a 7d 0a 0a  /index-name>.}..
fe90: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 52 45  puts {.<p>The RE
fea0: 49 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 20 69 73  INDEX command is
feb0: 20 75 73 65 64 20 74 6f 20 64 65 6c 65 74 65 20   used to delete 
fec0: 61 6e 64 20 72 65 63 72 65 61 74 65 20 69 6e 64  and recreate ind
fed0: 69 63 65 73 20 66 72 6f 6d 20 73 63 72 61 74 63  ices from scratc
fee0: 68 2e 0a 54 68 69 73 20 69 73 20 75 73 65 66 75  h..This is usefu
fef0: 6c 20 77 68 65 6e 20 74 68 65 20 64 65 66 69 6e  l when the defin
ff00: 69 74 69 6f 6e 20 6f 66 20 61 20 63 6f 6c 6c 61  ition of a colla
ff10: 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 68 61  tion sequence ha
ff20: 73 20 63 68 61 6e 67 65 64 2e 0a 3c 2f 70 3e 0a  s changed..</p>.
ff30: 0a 3c 70 3e 49 6e 20 74 68 65 20 66 69 72 73 74  .<p>In the first
ff40: 20 66 6f 72 6d 2c 20 61 6c 6c 20 69 6e 64 69 63   form, all indic
ff50: 65 73 20 69 6e 20 61 6c 6c 20 61 74 74 61 63 68  es in all attach
ff60: 65 64 20 64 61 74 61 62 61 73 65 73 20 74 68 61  ed databases tha
ff70: 74 20 75 73 65 20 74 68 65 0a 6e 61 6d 65 64 20  t use the.named 
ff80: 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e  collation sequen
ff90: 63 65 20 61 72 65 20 72 65 63 72 65 61 74 65 64  ce are recreated
ffa0: 2e 20 49 6e 20 74 68 65 20 73 65 63 6f 6e 64 20  . In the second 
ffb0: 66 6f 72 6d 2c 20 69 66 20 0a 3c 69 3e 5b 64 61  form, if .<i>[da
ffc0: 74 61 62 61 73 65 2d 6e 61 6d 65 2e 5d 74 61 62  tabase-name.]tab
ffd0: 6c 65 2f 69 6e 64 65 78 2d 6e 61 6d 65 3c 2f 69  le/index-name</i
ffe0: 3e 20 69 64 65 6e 74 69 66 69 65 73 20 61 20 74  > identifies a t
fff0: 61 62 6c 65 2c 20 74 68 65 6e 20 61 6c 6c 20 69  able, then all i
10000 6e 64 69 63 65 73 0a 61 73 73 6f 63 69 61 74 65  ndices.associate
10010 64 20 77 69 74 68 20 74 68 65 20 74 61 62 6c 65  d with the table
10020 20 61 72 65 20 72 65 62 75 69 6c 74 2e 20 49 66   are rebuilt. If
10030 20 61 6e 20 69 6e 64 65 78 20 69 73 20 69 64 65   an index is ide
10040 6e 74 69 66 69 65 64 2c 20 74 68 65 6e 20 6f 6e  ntified, then on
10050 6c 79 0a 74 68 69 73 20 73 70 65 63 69 66 69 63  ly.this specific
10060 20 69 6e 64 65 78 20 69 73 20 64 65 6c 65 74 65   index is delete
10070 64 20 61 6e 64 20 72 65 63 72 65 61 74 65 64 2e  d and recreated.
10080 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 6e 6f 20  .</p>..<p>If no 
10090 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  <i>database-name
100a0 3c 2f 69 3e 20 69 73 20 73 70 65 63 69 66 69 65  </i> is specifie
100b0 64 20 61 6e 64 20 74 68 65 72 65 20 65 78 69 73  d and there exis
100c0 74 73 20 62 6f 74 68 20 61 20 74 61 62 6c 65 20  ts both a table 
100d0 6f 72 0a 69 6e 64 65 78 20 61 6e 64 20 61 20 63  or.index and a c
100e0 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63  ollation sequenc
100f0 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69  e of the specifi
10100 65 64 20 6e 61 6d 65 2c 20 74 68 65 6e 20 69 6e  ed name, then in
10110 64 69 63 65 73 20 61 73 73 6f 63 69 61 74 65 64  dices associated
10120 0a 77 69 74 68 20 74 68 65 20 63 6f 6c 6c 61 74  .with the collat
10130 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 6f 6e 6c  ion sequence onl
10140 79 20 61 72 65 20 72 65 63 6f 6e 73 74 72 75 63  y are reconstruc
10150 74 65 64 2e 20 54 68 69 73 20 61 6d 62 69 67 75  ted. This ambigu
10160 69 74 79 20 6d 61 79 20 62 65 0a 64 69 73 70 65  ity may be.dispe
10170 6c 6c 65 64 20 62 79 20 61 6c 77 61 79 73 20 73  lled by always s
10180 70 65 63 69 66 79 69 6e 67 20 61 20 3c 69 3e 64  pecifying a <i>d
10190 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e  atabase-name</i>
101a0 20 77 68 65 6e 20 72 65 69 6e 64 65 78 69 6e 67   when reindexing
101b0 20 61 0a 73 70 65 63 69 66 69 63 20 74 61 62 6c   a.specific tabl
101c0 65 20 6f 72 20 69 6e 64 65 78 2e 0a 7d 0a 0a 53  e or index..}..S
101d0 65 63 74 69 6f 6e 20 52 45 50 4c 41 43 45 20 72  ection REPLACE r
101e0 65 70 6c 61 63 65 0a 0a 53 79 6e 74 61 78 20 7b  eplace..Syntax {
101f0 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
10200 0a 52 45 50 4c 41 43 45 20 49 4e 54 4f 20 5b 3c  .REPLACE INTO [<
10210 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e  database-name> .
10220 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b  ] <table-name> [
10230 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20  ( <column-list> 
10240 29 5d 20 56 41 4c 55 45 53 20 28 20 3c 76 61 6c  )] VALUES ( <val
10250 75 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 52 45 50  ue-list> ) |.REP
10260 4c 41 43 45 20 49 4e 54 4f 20 5b 3c 64 61 74 61  LACE INTO [<data
10270 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74  base-name> .] <t
10280 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63  able-name> [( <c
10290 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20 3c  olumn-list> )] <
102a0 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74  select-statement
102b0 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  >.}..puts {.<p>T
102c0 68 65 20 52 45 50 4c 41 43 45 20 63 6f 6d 6d 61  he REPLACE comma
102d0 6e 64 20 69 73 20 61 6e 20 61 6c 69 61 73 20 66  nd is an alias f
102e0 6f 72 20 74 68 65 20 22 49 4e 53 45 52 54 20 4f  or the "INSERT O
102f0 52 20 52 45 50 4c 41 43 45 22 20 76 61 72 69 61  R REPLACE" varia
10300 6e 74 0a 6f 66 20 74 68 65 20 3c 61 20 68 72 65  nt.of the <a hre
10310 66 3d 22 23 69 6e 73 65 72 74 22 3e 49 4e 53 45  f="#insert">INSE
10320 52 54 3c 2f 61 3e 20 63 6f 6d 6d 61 6e 64 2e 20  RT</a> command. 
10330 20 54 68 69 73 20 61 6c 69 61 73 20 69 73 20 70   This alias is p
10340 72 6f 76 69 64 65 64 20 66 6f 72 0a 63 6f 6d 70  rovided for.comp
10350 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 4d  atibility with M
10360 79 53 51 4c 2e 20 20 53 65 65 20 74 68 65 20 0a  ySQL.  See the .
10370 3c 61 20 68 72 65 66 3d 22 23 69 6e 73 65 72 74  <a href="#insert
10380 22 3e 49 4e 53 45 52 54 3c 2f 61 3e 20 63 6f 6d  ">INSERT</a> com
10390 6d 61 6e 64 20 64 6f 63 75 6d 65 6e 74 61 74 69  mand documentati
103a0 6f 6e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  on for additiona
103b0 6c 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f  l.information.</
103c0 70 3e 20 20 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  p>  .}...Section
103d0 20 53 45 4c 45 43 54 20 73 65 6c 65 63 74 0a 0a   SELECT select..
103e0 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
103f0 65 6d 65 6e 74 7d 20 7b 0a 53 45 4c 45 43 54 20  ement} {.SELECT 
10400 5b 41 4c 4c 20 7c 20 44 49 53 54 49 4e 43 54 5d  [ALL | DISTINCT]
10410 20 3c 72 65 73 75 6c 74 3e 20 5b 46 52 4f 4d 20   <result> [FROM 
10420 3c 74 61 62 6c 65 2d 6c 69 73 74 3e 5d 0a 5b 57  <table-list>].[W
10430 48 45 52 45 20 3c 65 78 70 72 3e 5d 0a 5b 47 52  HERE <expr>].[GR
10440 4f 55 50 20 42 59 20 3c 65 78 70 72 2d 6c 69 73  OUP BY <expr-lis
10450 74 3e 5d 0a 5b 48 41 56 49 4e 47 20 3c 65 78 70  t>].[HAVING <exp
10460 72 3e 5d 0a 5b 3c 63 6f 6d 70 6f 75 6e 64 2d 6f  r>].[<compound-o
10470 70 3e 20 3c 73 65 6c 65 63 74 3e 5d 2a 0a 5b 4f  p> <select>]*.[O
10480 52 44 45 52 20 42 59 20 3c 73 6f 72 74 2d 65 78  RDER BY <sort-ex
10490 70 72 2d 6c 69 73 74 3e 5d 0a 5b 4c 49 4d 49 54  pr-list>].[LIMIT
104a0 20 3c 69 6e 74 65 67 65 72 3e 20 5b 4c 50 20 4f   <integer> [LP O
104b0 46 46 53 45 54 20 7c 20 2c 20 52 50 20 3c 69 6e  FFSET | , RP <in
104c0 74 65 67 65 72 3e 5d 5d 0a 7d 20 7b 72 65 73 75  teger>]].} {resu
104d0 6c 74 7d 20 7b 0a 3c 72 65 73 75 6c 74 2d 63 6f  lt} {.<result-co
104e0 6c 75 6d 6e 3e 20 5b 2c 20 3c 72 65 73 75 6c 74  lumn> [, <result
104f0 2d 63 6f 6c 75 6d 6e 3e 5d 2a 0a 7d 20 7b 72 65  -column>]*.} {re
10500 73 75 6c 74 2d 63 6f 6c 75 6d 6e 7d 20 7b 0a 53  sult-column} {.S
10510 54 41 52 20 7c 20 3c 74 61 62 6c 65 2d 6e 61 6d  TAR | <table-nam
10520 65 3e 20 2e 20 53 54 41 52 20 7c 20 3c 65 78 70  e> . STAR | <exp
10530 72 3e 20 5b 20 5b 41 53 5d 20 3c 73 74 72 69 6e  r> [ [AS] <strin
10540 67 3e 20 5d 0a 7d 20 7b 74 61 62 6c 65 2d 6c 69  g> ].} {table-li
10550 73 74 7d 20 7b 0a 3c 74 61 62 6c 65 3e 20 5b 3c  st} {.<table> [<
10560 6a 6f 69 6e 2d 6f 70 3e 20 3c 74 61 62 6c 65 3e  join-op> <table>
10570 20 3c 6a 6f 69 6e 2d 61 72 67 73 3e 5d 2a 0a 7d   <join-args>]*.}
10580 20 7b 74 61 62 6c 65 7d 20 7b 0a 3c 74 61 62 6c   {table} {.<tabl
10590 65 2d 6e 61 6d 65 3e 20 5b 41 53 20 3c 61 6c 69  e-name> [AS <ali
105a0 61 73 3e 5d 20 7c 0a 28 20 3c 73 65 6c 65 63 74  as>] |.( <select
105b0 3e 20 29 20 5b 41 53 20 3c 61 6c 69 61 73 3e 5d  > ) [AS <alias>]
105c0 0a 7d 20 7b 6a 6f 69 6e 2d 6f 70 7d 20 7b 0a 2c  .} {join-op} {.,
105d0 20 7c 20 5b 4e 41 54 55 52 41 4c 5d 20 5b 4c 45   | [NATURAL] [LE
105e0 46 54 20 7c 20 52 49 47 48 54 20 7c 20 46 55 4c  FT | RIGHT | FUL
105f0 4c 5d 20 5b 4f 55 54 45 52 20 7c 20 49 4e 4e 45  L] [OUTER | INNE
10600 52 20 7c 20 43 52 4f 53 53 5d 20 4a 4f 49 4e 0a  R | CROSS] JOIN.
10610 7d 20 7b 6a 6f 69 6e 2d 61 72 67 73 7d 20 7b 0a  } {join-args} {.
10620 5b 4f 4e 20 3c 65 78 70 72 3e 5d 20 5b 55 53 49  [ON <expr>] [USI
10630 4e 47 20 28 20 3c 69 64 2d 6c 69 73 74 3e 20 29  NG ( <id-list> )
10640 5d 0a 7d 20 7b 73 6f 72 74 2d 65 78 70 72 2d 6c  ].} {sort-expr-l
10650 69 73 74 7d 20 7b 0a 3c 65 78 70 72 3e 20 5b 3c  ist} {.<expr> [<
10660 73 6f 72 74 2d 6f 72 64 65 72 3e 5d 20 5b 2c 20  sort-order>] [, 
10670 3c 65 78 70 72 3e 20 5b 3c 73 6f 72 74 2d 6f 72  <expr> [<sort-or
10680 64 65 72 3e 5d 5d 2a 0a 7d 20 7b 73 6f 72 74 2d  der>]]*.} {sort-
10690 6f 72 64 65 72 7d 20 7b 0a 5b 20 43 4f 4c 4c 41  order} {.[ COLLA
106a0 54 45 20 3c 63 6f 6c 6c 61 74 69 6f 6e 2d 6e 61  TE <collation-na
106b0 6d 65 3e 20 5d 20 5b 20 41 53 43 20 7c 20 44 45  me> ] [ ASC | DE
106c0 53 43 20 5d 0a 7d 20 7b 63 6f 6d 70 6f 75 6e 64  SC ].} {compound
106d0 5f 6f 70 7d 20 7b 0a 55 4e 49 4f 4e 20 7c 20 55  _op} {.UNION | U
106e0 4e 49 4f 4e 20 41 4c 4c 20 7c 20 49 4e 54 45 52  NION ALL | INTER
106f0 53 45 43 54 20 7c 20 45 58 43 45 50 54 0a 7d 0a  SECT | EXCEPT.}.
10700 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 53  .puts {.<p>The S
10710 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20  ELECT statement 
10720 69 73 20 75 73 65 64 20 74 6f 20 71 75 65 72 79  is used to query
10730 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20   the database.  
10740 54 68 65 0a 72 65 73 75 6c 74 20 6f 66 20 61 20  The.result of a 
10750 53 45 4c 45 43 54 20 69 73 20 7a 65 72 6f 20 6f  SELECT is zero o
10760 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 64  r more rows of d
10770 61 74 61 20 77 68 65 72 65 20 65 61 63 68 20 72  ata where each r
10780 6f 77 0a 68 61 73 20 61 20 66 69 78 65 64 20 6e  ow.has a fixed n
10790 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
107a0 2e 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  .  The number of
107b0 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 0a   columns in the.
107c0 72 65 73 75 6c 74 20 69 73 20 73 70 65 63 69 66  result is specif
107d0 69 65 64 20 62 79 20 74 68 65 20 65 78 70 72 65  ied by the expre
107e0 73 73 69 6f 6e 20 6c 69 73 74 20 69 6e 20 62 65  ssion list in be
107f0 74 77 65 65 6e 20 74 68 65 0a 53 45 4c 45 43 54  tween the.SELECT
10800 20 61 6e 64 20 46 52 4f 4d 20 6b 65 79 77 6f 72   and FROM keywor
10810 64 73 2e 20 20 41 6e 79 20 61 72 62 69 74 72 61  ds.  Any arbitra
10820 72 79 20 65 78 70 72 65 73 73 69 6f 6e 20 63 61  ry expression ca
10830 6e 20 62 65 20 75 73 65 64 0a 61 73 20 61 20 72  n be used.as a r
10840 65 73 75 6c 74 2e 20 20 49 66 20 61 20 72 65 73  esult.  If a res
10850 75 6c 74 20 65 78 70 72 65 73 73 69 6f 6e 20 69  ult expression i
10860 73 20 7d 0a 70 75 74 73 20 22 5b 4f 70 65 72 61  s }.puts "[Opera
10870 74 6f 72 20 2a 5d 20 74 68 65 6e 20 61 6c 6c 20  tor *] then all 
10880 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 6c 6c 20 74  columns of all t
10890 61 62 6c 65 73 20 61 72 65 20 73 75 62 73 74 69  ables are substi
108a0 74 75 74 65 64 22 0a 70 75 74 73 20 7b 66 6f 72  tuted".puts {for
108b0 20 74 68 61 74 20 6f 6e 65 20 65 78 70 72 65 73   that one expres
108c0 73 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 65 78  sion.  If the ex
108d0 70 72 65 73 73 69 6f 6e 20 69 73 20 74 68 65 20  pression is the 
108e0 6e 61 6d 65 20 6f 66 7d 0a 70 75 74 73 20 22 61  name of}.puts "a
108f0 20 74 61 62 6c 65 20 66 6f 6c 6c 6f 77 65 64 20   table followed 
10900 62 79 20 5b 4f 70 65 72 61 74 6f 72 20 2e 2a 5d  by [Operator .*]
10910 20 74 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74   then the result
10920 20 69 73 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 22   is all columns"
10930 0a 70 75 74 73 20 7b 69 6e 20 74 68 61 74 20 6f  .puts {in that o
10940 6e 65 20 74 61 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c  ne table.</p>..<
10950 70 3e 54 68 65 20 44 49 53 54 49 4e 43 54 20 6b  p>The DISTINCT k
10960 65 79 77 6f 72 64 20 63 61 75 73 65 73 20 61 20  eyword causes a 
10970 73 75 62 73 65 74 20 6f 66 20 72 65 73 75 6c 74  subset of result
10980 20 72 6f 77 73 20 74 6f 20 62 65 20 72 65 74 75   rows to be retu
10990 72 6e 65 64 2c 20 0a 69 6e 20 77 68 69 63 68 20  rned, .in which 
109a0 65 61 63 68 20 72 65 73 75 6c 74 20 72 6f 77 20  each result row 
109b0 69 73 20 64 69 66 66 65 72 65 6e 74 2e 20 20 4e  is different.  N
109c0 55 4c 4c 20 76 61 6c 75 65 73 20 61 72 65 20 6e  ULL values are n
109d0 6f 74 20 74 72 65 61 74 65 64 20 61 73 20 0a 64  ot treated as .d
109e0 69 73 74 69 6e 63 74 20 66 72 6f 6d 20 65 61 63  istinct from eac
109f0 68 20 6f 74 68 65 72 2e 20 20 54 68 65 20 64 65  h other.  The de
10a00 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20 69  fault behavior i
10a10 73 20 74 68 61 74 20 61 6c 6c 20 72 65 73 75 6c  s that all resul
10a20 74 20 72 6f 77 73 20 0a 62 65 20 72 65 74 75 72  t rows .be retur
10a30 6e 65 64 2c 20 77 68 69 63 68 20 63 61 6e 20 62  ned, which can b
10a40 65 20 6d 61 64 65 20 65 78 70 6c 69 63 69 74 20  e made explicit 
10a50 77 69 74 68 20 74 68 65 20 6b 65 79 77 6f 72 64  with the keyword
10a60 20 41 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68   ALL.</p>..<p>Th
10a70 65 20 71 75 65 72 79 20 69 73 20 65 78 65 63 75  e query is execu
10a80 74 65 64 20 61 67 61 69 6e 73 74 20 6f 6e 65 20  ted against one 
10a90 6f 72 20 6d 6f 72 65 20 74 61 62 6c 65 73 20 73  or more tables s
10aa0 70 65 63 69 66 69 65 64 20 61 66 74 65 72 0a 74  pecified after.t
10ab0 68 65 20 46 52 4f 4d 20 6b 65 79 77 6f 72 64 2e  he FROM keyword.
10ac0 20 20 49 66 20 6d 75 6c 74 69 70 6c 65 20 74 61    If multiple ta
10ad0 62 6c 65 73 20 6e 61 6d 65 73 20 61 72 65 20 73  bles names are s
10ae0 65 70 61 72 61 74 65 64 20 62 79 20 63 6f 6d 6d  eparated by comm
10af0 61 73 2c 0a 74 68 65 6e 20 74 68 65 20 71 75 65  as,.then the que
10b00 72 79 20 69 73 20 61 67 61 69 6e 73 74 20 74 68  ry is against th
10b10 65 20 63 72 6f 73 73 20 6a 6f 69 6e 20 6f 66 20  e cross join of 
10b20 74 68 65 20 76 61 72 69 6f 75 73 20 74 61 62 6c  the various tabl
10b30 65 73 2e 0a 54 68 65 20 66 75 6c 6c 20 53 51 4c  es..The full SQL
10b40 2d 39 32 20 6a 6f 69 6e 20 73 79 6e 74 61 78 20  -92 join syntax 
10b50 63 61 6e 20 61 6c 73 6f 20 62 65 20 75 73 65 64  can also be used
10b60 20 74 6f 20 73 70 65 63 69 66 79 20 6a 6f 69 6e   to specify join
10b70 73 2e 0a 41 20 73 75 62 2d 71 75 65 72 79 0a 69  s..A sub-query.i
10b80 6e 20 70 61 72 65 6e 74 68 65 73 65 73 20 6d 61  n parentheses ma
10b90 79 20 62 65 20 73 75 62 73 74 69 74 75 74 65 64  y be substituted
10ba0 20 66 6f 72 20 61 6e 79 20 74 61 62 6c 65 20 6e   for any table n
10bb0 61 6d 65 20 69 6e 20 74 68 65 20 46 52 4f 4d 20  ame in the FROM 
10bc0 63 6c 61 75 73 65 2e 0a 54 68 65 20 65 6e 74 69  clause..The enti
10bd0 72 65 20 46 52 4f 4d 20 63 6c 61 75 73 65 20 6d  re FROM clause m
10be0 61 79 20 62 65 20 6f 6d 69 74 74 65 64 2c 20 69  ay be omitted, i
10bf0 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65  n which case the
10c00 20 72 65 73 75 6c 74 20 69 73 20 61 0a 73 69 6e   result is a.sin
10c10 67 6c 65 20 72 6f 77 20 63 6f 6e 73 69 73 74 69  gle row consisti
10c20 6e 67 20 6f 66 20 74 68 65 20 76 61 6c 75 65 73  ng of the values
10c30 20 6f 66 20 74 68 65 20 65 78 70 72 65 73 73 69   of the expressi
10c40 6f 6e 20 6c 69 73 74 2e 0a 3c 2f 70 3e 0a 0a 3c  on list..</p>..<
10c50 70 3e 54 68 65 20 57 48 45 52 45 20 63 6c 61 75  p>The WHERE clau
10c60 73 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  se can be used t
10c70 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e 75 6d 62  o limit the numb
10c80 65 72 20 6f 66 20 72 6f 77 73 20 6f 76 65 72 0a  er of rows over.
10c90 77 68 69 63 68 20 74 68 65 20 71 75 65 72 79 20  which the query 
10ca0 6f 70 65 72 61 74 65 73 2e 3c 2f 70 3e 0a 0a 3c  operates.</p>..<
10cb0 70 3e 54 68 65 20 47 52 4f 55 50 20 42 59 20 63  p>The GROUP BY c
10cc0 6c 61 75 73 65 73 20 63 61 75 73 65 73 20 6f 6e  lauses causes on
10cd0 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f  e or more rows o
10ce0 66 20 74 68 65 20 72 65 73 75 6c 74 20 74 6f 0a  f the result to.
10cf0 62 65 20 63 6f 6d 62 69 6e 65 64 20 69 6e 74 6f  be combined into
10d00 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 6f 66   a single row of
10d10 20 6f 75 74 70 75 74 2e 20 20 54 68 69 73 20 69   output.  This i
10d20 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75 73 65  s especially use
10d30 66 75 6c 0a 77 68 65 6e 20 74 68 65 20 72 65 73  ful.when the res
10d40 75 6c 74 20 63 6f 6e 74 61 69 6e 73 20 61 67 67  ult contains agg
10d50 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
10d60 2e 20 20 54 68 65 20 65 78 70 72 65 73 73 69 6f  .  The expressio
10d70 6e 73 20 69 6e 0a 74 68 65 20 47 52 4f 55 50 20  ns in.the GROUP 
10d80 42 59 20 63 6c 61 75 73 65 20 64 6f 20 3c 65 6d  BY clause do <em
10d90 3e 6e 6f 74 3c 2f 65 6d 3e 20 68 61 76 65 20 74  >not</em> have t
10da0 6f 20 62 65 20 65 78 70 72 65 73 73 69 6f 6e 73  o be expressions
10db0 20 74 68 61 74 0a 61 70 70 65 61 72 20 69 6e 20   that.appear in 
10dc0 74 68 65 20 72 65 73 75 6c 74 2e 20 20 54 68 65  the result.  The
10dd0 20 48 41 56 49 4e 47 20 63 6c 61 75 73 65 20 69   HAVING clause i
10de0 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 57 48 45  s similar to WHE
10df0 52 45 20 65 78 63 65 70 74 0a 74 68 61 74 20 48  RE except.that H
10e00 41 56 49 4e 47 20 61 70 70 6c 69 65 73 20 61 66  AVING applies af
10e10 74 65 72 20 67 72 6f 75 70 69 6e 67 20 68 61 73  ter grouping has
10e20 20 6f 63 63 75 72 72 65 64 2e 20 20 54 68 65 20   occurred.  The 
10e30 48 41 56 49 4e 47 20 65 78 70 72 65 73 73 69 6f  HAVING expressio
10e40 6e 0a 6d 61 79 20 72 65 66 65 72 20 74 6f 20 76  n.may refer to v
10e50 61 6c 75 65 73 2c 20 65 76 65 6e 20 61 67 67 72  alues, even aggr
10e60 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 2c  egate functions,
10e70 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20 69 6e   that are not in
10e80 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70 3e   the result.</p>
10e90 0a 0a 3c 70 3e 54 68 65 20 4f 52 44 45 52 20 42  ..<p>The ORDER B
10ea0 59 20 63 6c 61 75 73 65 20 63 61 75 73 65 73 20  Y clause causes 
10eb0 74 68 65 20 6f 75 74 70 75 74 20 72 6f 77 73 20  the output rows 
10ec0 74 6f 20 62 65 20 73 6f 72 74 65 64 2e 20 20 0a  to be sorted.  .
10ed0 54 68 65 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  The argument to 
10ee0 4f 52 44 45 52 20 42 59 20 69 73 20 61 20 6c 69  ORDER BY is a li
10ef0 73 74 20 6f 66 20 65 78 70 72 65 73 73 69 6f 6e  st of expression
10f00 73 20 74 68 61 74 20 61 72 65 20 75 73 65 64 20  s that are used 
10f10 61 73 20 74 68 65 0a 6b 65 79 20 66 6f 72 20 74  as the.key for t
10f20 68 65 20 73 6f 72 74 2e 20 20 54 68 65 20 65 78  he sort.  The ex
10f30 70 72 65 73 73 69 6f 6e 73 20 64 6f 20 6e 6f 74  pressions do not
10f40 20 68 61 76 65 20 74 6f 20 62 65 20 70 61 72 74   have to be part
10f50 20 6f 66 20 74 68 65 0a 72 65 73 75 6c 74 20 66   of the.result f
10f60 6f 72 20 61 20 73 69 6d 70 6c 65 20 53 45 4c 45  or a simple SELE
10f70 43 54 2c 20 62 75 74 20 69 6e 20 61 20 63 6f 6d  CT, but in a com
10f80 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 65 61 63  pound SELECT eac
10f90 68 20 73 6f 72 74 0a 65 78 70 72 65 73 73 69 6f  h sort.expressio
10fa0 6e 20 6d 75 73 74 20 65 78 61 63 74 6c 79 20 6d  n must exactly m
10fb0 61 74 63 68 20 6f 6e 65 20 6f 66 20 74 68 65 20  atch one of the 
10fc0 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20  result columns. 
10fd0 20 45 61 63 68 0a 73 6f 72 74 20 65 78 70 72 65   Each.sort expre
10fe0 73 73 69 6f 6e 20 6d 61 79 20 62 65 20 6f 70 74  ssion may be opt
10ff0 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65 64  ionally followed
11000 20 62 79 20 61 20 43 4f 4c 4c 41 54 45 20 6b 65   by a COLLATE ke
11010 79 77 6f 72 64 20 61 6e 64 0a 74 68 65 20 6e 61  yword and.the na
11020 6d 65 20 6f 66 20 61 20 63 6f 6c 6c 61 74 69 6e  me of a collatin
11030 67 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 64 20  g function used 
11040 66 6f 72 20 6f 72 64 65 72 69 6e 67 20 74 65 78  for ordering tex
11050 74 20 61 6e 64 2f 6f 72 0a 6b 65 79 77 6f 72 64  t and/or.keyword
11060 73 20 41 53 43 20 6f 72 20 44 45 53 43 20 74 6f  s ASC or DESC to
11070 20 73 70 65 63 69 66 79 20 74 68 65 20 73 6f 72   specify the sor
11080 74 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70  t order.</p>..<p
11090 3e 54 68 65 20 4c 49 4d 49 54 20 63 6c 61 75 73  >The LIMIT claus
110a0 65 20 70 6c 61 63 65 73 20 61 6e 20 75 70 70 65  e places an uppe
110b0 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65 20 6e  r bound on the n
110c0 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 0a 72 65  umber of rows.re
110d0 74 75 72 6e 65 64 20 69 6e 20 74 68 65 20 72 65  turned in the re
110e0 73 75 6c 74 2e 20 20 41 20 6e 65 67 61 74 69 76  sult.  A negativ
110f0 65 20 4c 49 4d 49 54 20 69 6e 64 69 63 61 74 65  e LIMIT indicate
11100 73 20 6e 6f 20 75 70 70 65 72 20 62 6f 75 6e 64  s no upper bound
11110 2e 0a 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4f  ..The optional O
11120 46 46 53 45 54 20 66 6f 6c 6c 6f 77 69 6e 67 20  FFSET following 
11130 4c 49 4d 49 54 20 73 70 65 63 69 66 69 65 73 20  LIMIT specifies 
11140 68 6f 77 20 6d 61 6e 79 0a 72 6f 77 73 20 74 6f  how many.rows to
11150 20 73 6b 69 70 20 61 74 20 74 68 65 20 62 65 67   skip at the beg
11160 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 72 65  inning of the re
11170 73 75 6c 74 20 73 65 74 2e 0a 49 6e 20 61 20 63  sult set..In a c
11180 6f 6d 70 6f 75 6e 64 20 71 75 65 72 79 2c 20 74  ompound query, t
11190 68 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20  he LIMIT clause 
111a0 6d 61 79 20 6f 6e 6c 79 20 61 70 70 65 61 72 20  may only appear 
111b0 6f 6e 20 74 68 65 0a 66 69 6e 61 6c 20 53 45 4c  on the.final SEL
111c0 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 0a 54  ECT statement..T
111d0 68 65 20 6c 69 6d 69 74 20 69 73 20 61 70 70 6c  he limit is appl
111e0 69 65 64 20 74 6f 20 74 68 65 20 65 6e 74 69 72  ied to the entir
111f0 65 20 71 75 65 72 79 20 6e 6f 74 0a 74 6f 20 74  e query not.to t
11200 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20 53 45  he individual SE
11210 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20 74  LECT statement t
11220 6f 20 77 68 69 63 68 20 69 74 20 69 73 20 61 74  o which it is at
11230 74 61 63 68 65 64 2e 0a 4e 6f 74 65 20 74 68 61  tached..Note tha
11240 74 20 69 66 20 74 68 65 20 4f 46 46 53 45 54 20  t if the OFFSET 
11250 6b 65 79 77 6f 72 64 20 69 73 20 75 73 65 64 20  keyword is used 
11260 69 6e 20 74 68 65 20 4c 49 4d 49 54 20 63 6c 61  in the LIMIT cla
11270 75 73 65 2c 20 74 68 65 6e 20 74 68 65 0a 6c 69  use, then the.li
11280 6d 69 74 20 69 73 20 74 68 65 20 66 69 72 73 74  mit is the first
11290 20 6e 75 6d 62 65 72 20 61 6e 64 20 74 68 65 20   number and the 
112a0 6f 66 66 73 65 74 20 69 73 20 74 68 65 20 73 65  offset is the se
112b0 63 6f 6e 64 20 6e 75 6d 62 65 72 2e 20 20 49 66  cond number.  If
112c0 20 61 0a 63 6f 6d 6d 61 20 69 73 20 75 73 65 64   a.comma is used
112d0 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
112e0 4f 46 46 53 45 54 20 6b 65 79 77 6f 72 64 2c 20  OFFSET keyword, 
112f0 74 68 65 6e 20 74 68 65 20 6f 66 66 73 65 74 20  then the offset 
11300 69 73 20 74 68 65 0a 66 69 72 73 74 20 6e 75 6d  is the.first num
11310 62 65 72 20 61 6e 64 20 74 68 65 20 6c 69 6d 69  ber and the limi
11320 74 20 69 73 20 74 68 65 20 73 65 63 6f 6e 64 20  t is the second 
11330 6e 75 6d 62 65 72 2e 20 20 54 68 69 73 20 73 65  number.  This se
11340 65 6d 69 6e 67 0a 63 6f 6e 74 72 61 64 69 74 69  eming.contraditi
11350 6f 6e 20 69 73 20 69 6e 74 65 6e 74 69 6f 6e 61  on is intentiona
11360 6c 20 2d 20 69 74 20 6d 61 78 69 6d 69 7a 65 73  l - it maximizes
11370 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77   compatibility w
11380 69 74 68 20 6c 65 67 61 63 79 0a 53 51 4c 20 64  ith legacy.SQL d
11390 61 74 61 62 61 73 65 20 73 79 73 74 65 6d 73 2e  atabase systems.
113a0 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6d 70  .</p>..<p>A comp
113b0 6f 75 6e 64 20 53 45 4c 45 43 54 20 69 73 20 66  ound SELECT is f
113c0 6f 72 6d 65 64 20 66 72 6f 6d 20 74 77 6f 20 6f  ormed from two o
113d0 72 20 6d 6f 72 65 20 73 69 6d 70 6c 65 20 53 45  r more simple SE
113e0 4c 45 43 54 73 20 63 6f 6e 6e 65 63 74 65 64 0a  LECTs connected.
113f0 62 79 20 6f 6e 65 20 6f 66 20 74 68 65 20 6f 70  by one of the op
11400 65 72 61 74 6f 72 73 20 55 4e 49 4f 4e 2c 20 55  erators UNION, U
11410 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52 53  NION ALL, INTERS
11420 45 43 54 2c 20 6f 72 20 45 58 43 45 50 54 2e 20  ECT, or EXCEPT. 
11430 20 49 6e 0a 61 20 63 6f 6d 70 6f 75 6e 64 20 53   In.a compound S
11440 45 4c 45 43 54 2c 20 61 6c 6c 20 74 68 65 20 63  ELECT, all the c
11450 6f 6e 73 74 69 74 75 65 6e 74 20 53 45 4c 45 43  onstituent SELEC
11460 54 73 20 6d 75 73 74 20 73 70 65 63 69 66 79 20  Ts must specify 
11470 74 68 65 0a 73 61 6d 65 20 6e 75 6d 62 65 72 20  the.same number 
11480 6f 66 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e  of result column
11490 73 2e 20 20 54 68 65 72 65 20 6d 61 79 20 62 65  s.  There may be
114a0 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 4f   only a single O
114b0 52 44 45 52 20 42 59 0a 63 6c 61 75 73 65 20 61  RDER BY.clause a
114c0 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65  t the end of the
114d0 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54   compound SELECT
114e0 2e 20 20 54 68 65 20 55 4e 49 4f 4e 20 61 6e 64  .  The UNION and
114f0 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f 70 65 72 61   UNION ALL.opera
11500 74 6f 72 73 20 63 6f 6d 62 69 6e 65 20 74 68 65  tors combine the
11510 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 20   results of the 
11520 53 45 4c 45 43 54 73 20 74 6f 20 74 68 65 20 72  SELECTs to the r
11530 69 67 68 74 20 61 6e 64 20 6c 65 66 74 20 69 6e  ight and left in
11540 74 6f 0a 61 20 73 69 6e 67 6c 65 20 62 69 67 20  to.a single big 
11550 74 61 62 6c 65 2e 20 20 54 68 65 20 64 69 66 66  table.  The diff
11560 65 72 65 6e 63 65 20 69 73 20 74 68 61 74 20 69  erence is that i
11570 6e 20 55 4e 49 4f 4e 20 61 6c 6c 20 72 65 73 75  n UNION all resu
11580 6c 74 20 72 6f 77 73 0a 61 72 65 20 64 69 73 74  lt rows.are dist
11590 69 6e 63 74 20 77 68 65 72 65 20 69 6e 20 55 4e  inct where in UN
115a0 49 4f 4e 20 41 4c 4c 20 74 68 65 72 65 20 6d 61  ION ALL there ma
115b0 79 20 62 65 20 64 75 70 6c 69 63 61 74 65 73 2e  y be duplicates.
115c0 0a 54 68 65 20 49 4e 54 45 52 53 45 43 54 20 6f  .The INTERSECT o
115d0 70 65 72 61 74 6f 72 20 74 61 6b 65 73 20 74 68  perator takes th
115e0 65 20 69 6e 74 65 72 73 65 63 74 69 6f 6e 20 6f  e intersection o
115f0 66 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66  f the results of
11600 20 74 68 65 0a 6c 65 66 74 20 61 6e 64 20 72 69   the.left and ri
11610 67 68 74 20 53 45 4c 45 43 54 73 2e 20 20 45 58  ght SELECTs.  EX
11620 43 45 50 54 20 74 61 6b 65 73 20 74 68 65 20 72  CEPT takes the r
11630 65 73 75 6c 74 20 6f 66 20 6c 65 66 74 20 53 45  esult of left SE
11640 4c 45 43 54 20 61 66 74 65 72 0a 72 65 6d 6f 76  LECT after.remov
11650 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 73 20  ing the results 
11660 6f 66 20 74 68 65 20 72 69 67 68 74 20 53 45 4c  of the right SEL
11670 45 43 54 2e 20 20 57 68 65 6e 20 74 68 72 65 65  ECT.  When three
11680 20 6f 72 20 6d 6f 72 65 20 53 45 4c 45 43 54 73   or more SELECTs
11690 0a 61 72 65 20 63 6f 6e 6e 65 63 74 65 64 20 69  .are connected i
116a0 6e 74 6f 20 61 20 63 6f 6d 70 6f 75 6e 64 2c 20  nto a compound, 
116b0 74 68 65 79 20 67 72 6f 75 70 20 66 72 6f 6d 20  they group from 
116c0 6c 65 66 74 20 74 6f 20 72 69 67 68 74 2e 3c 2f  left to right.</
116d0 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 55  p>.}...Section U
116e0 50 44 41 54 45 20 75 70 64 61 74 65 0a 0a 53 79  PDATE update..Sy
116f0 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
11700 65 6e 74 7d 20 7b 0a 55 50 44 41 54 45 20 5b 20  ent} {.UPDATE [ 
11710 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67  OR <conflict-alg
11720 6f 72 69 74 68 6d 3e 20 5d 20 5b 3c 64 61 74 61  orithm> ] [<data
11730 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74  base-name> .] <t
11740 61 62 6c 65 2d 6e 61 6d 65 3e 0a 53 45 54 20 3c  able-name>.SET <
11750 61 73 73 69 67 6e 6d 65 6e 74 3e 20 5b 2c 20 3c  assignment> [, <
11760 61 73 73 69 67 6e 6d 65 6e 74 3e 5d 2a 0a 5b 57  assignment>]*.[W
11770 48 45 52 45 20 3c 65 78 70 72 3e 5d 0a 7d 20 7b  HERE <expr>].} {
11780 61 73 73 69 67 6e 6d 65 6e 74 7d 20 7b 0a 3c 63  assignment} {.<c
11790 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 3d 20 3c 65  olumn-name> = <e
117a0 78 70 72 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  xpr>.}..puts {.<
117b0 70 3e 54 68 65 20 55 50 44 41 54 45 20 73 74 61  p>The UPDATE sta
117c0 74 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74  tement is used t
117d0 6f 20 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c  o change the val
117e0 75 65 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  ue of columns in
117f0 20 0a 73 65 6c 65 63 74 65 64 20 72 6f 77 73 20   .selected rows 
11800 6f 66 20 61 20 74 61 62 6c 65 2e 20 20 45 61 63  of a table.  Eac
11810 68 20 61 73 73 69 67 6e 6d 65 6e 74 20 69 6e 20  h assignment in 
11820 61 6e 20 55 50 44 41 54 45 20 73 70 65 63 69 66  an UPDATE specif
11830 69 65 73 0a 61 20 63 6f 6c 75 6d 6e 20 6e 61 6d  ies.a column nam
11840 65 20 74 6f 20 74 68 65 20 6c 65 66 74 20 6f 66  e to the left of
11850 20 74 68 65 20 65 71 75 61 6c 73 20 73 69 67 6e   the equals sign
11860 20 61 6e 64 20 61 6e 20 61 72 62 69 74 72 61 72   and an arbitrar
11870 79 20 65 78 70 72 65 73 73 69 6f 6e 0a 74 6f 20  y expression.to 
11880 74 68 65 20 72 69 67 68 74 2e 20 20 54 68 65 20  the right.  The 
11890 65 78 70 72 65 73 73 69 6f 6e 73 20 6d 61 79 20  expressions may 
118a0 75 73 65 20 74 68 65 20 76 61 6c 75 65 73 20 6f  use the values o
118b0 66 20 6f 74 68 65 72 20 63 6f 6c 75 6d 6e 73 2e  f other columns.
118c0 0a 41 6c 6c 20 65 78 70 72 65 73 73 69 6f 6e 73  .All expressions
118d0 20 61 72 65 20 65 76 61 6c 75 61 74 65 64 20 62   are evaluated b
118e0 65 66 6f 72 65 20 61 6e 79 20 61 73 73 69 67 6e  efore any assign
118f0 6d 65 6e 74 73 20 61 72 65 20 6d 61 64 65 2e 0a  ments are made..
11900 41 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63  A WHERE clause c
11910 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 72 65  an be used to re
11920 73 74 72 69 63 74 20 77 68 69 63 68 20 72 6f 77  strict which row
11930 73 20 61 72 65 20 75 70 64 61 74 65 64 2e 3c 2f  s are updated.</
11940 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f  p>..<p>The optio
11950 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61  nal conflict-cla
11960 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73  use allows the s
11970 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20  pecification of 
11980 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63  an alternative.c
11990 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69  onstraint confli
119a0 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
119b0 67 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20 64  gorithm to use d
119c0 75 72 69 6e 67 20 74 68 69 73 20 6f 6e 65 20 63  uring this one c
119d0 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20  ommand..See the 
119e0 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c  section titled.<
119f0 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63  a href="#conflic
11a00 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f  t">ON CONFLICT</
11a10 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  a> for additiona
11a20 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f  l information.</
11a30 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 56  p>.}...Section V
11a40 41 43 55 55 4d 20 76 61 63 75 75 6d 0a 0a 53 79  ACUUM vacuum..Sy
11a50 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
11a60 65 6e 74 7d 20 7b 0a 56 41 43 55 55 4d 20 5b 3c  ent} {.VACUUM [<
11a70 69 6e 64 65 78 2d 6f 72 2d 74 61 62 6c 65 2d 6e  index-or-table-n
11a80 61 6d 65 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a  ame>].}..puts {.
11a90 3c 70 3e 54 68 65 20 56 41 43 55 55 4d 20 63 6f  <p>The VACUUM co
11aa0 6d 6d 61 6e 64 20 69 73 20 61 6e 20 53 51 4c 69  mmand is an SQLi
11ab0 74 65 20 65 78 74 65 6e 73 69 6f 6e 20 6d 6f 64  te extension mod
11ac0 65 6c 65 64 20 61 66 74 65 72 20 61 20 73 69 6d  eled after a sim
11ad0 69 6c 61 72 0a 63 6f 6d 6d 61 6e 64 20 66 6f 75  ilar.command fou
11ae0 6e 64 20 69 6e 20 50 6f 73 74 67 72 65 53 51 4c  nd in PostgreSQL
11af0 2e 20 20 49 66 20 56 41 43 55 55 4d 20 69 73 20  .  If VACUUM is 
11b00 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 68 65  invoked with the
11b10 20 6e 61 6d 65 20 6f 66 20 61 0a 74 61 62 6c 65   name of a.table
11b20 20 6f 72 20 69 6e 64 65 78 20 74 68 65 6e 20 69   or index then i
11b30 74 20 69 73 20 73 75 70 70 6f 73 65 20 74 6f 20  t is suppose to 
11b40 63 6c 65 61 6e 20 75 70 20 74 68 65 20 6e 61 6d  clean up the nam
11b50 65 64 20 74 61 62 6c 65 20 6f 72 20 69 6e 64 65  ed table or inde
11b60 78 2e 0a 49 6e 20 76 65 72 73 69 6f 6e 20 31 2e  x..In version 1.
11b70 30 20 6f 66 20 53 51 4c 69 74 65 2c 20 74 68 65  0 of SQLite, the
11b80 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20   VACUUM command 
11b90 77 6f 75 6c 64 20 69 6e 76 6f 6b 65 20 0a 3c 62  would invoke .<b
11ba0 3e 67 64 62 6d 5f 72 65 6f 72 67 61 6e 69 7a 65  >gdbm_reorganize
11bb0 28 29 3c 2f 62 3e 20 74 6f 20 63 6c 65 61 6e 20  ()</b> to clean 
11bc0 75 70 20 74 68 65 20 62 61 63 6b 65 6e 64 20 64  up the backend d
11bd0 61 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70  atabase file.</p
11be0 3e 0a 0a 3c 70 3e 0a 56 41 43 55 55 4d 20 62 65  >..<p>.VACUUM be
11bf0 63 61 6d 65 20 61 20 6e 6f 2d 6f 70 20 77 68 65  came a no-op whe
11c00 6e 20 74 68 65 20 47 44 42 4d 20 62 61 63 6b 65  n the GDBM backe
11c10 6e 64 20 77 61 73 20 72 65 6d 6f 76 65 64 20 66  nd was removed f
11c20 72 6f 6d 0a 53 51 4c 49 54 45 20 69 6e 20 76 65  rom.SQLITE in ve
11c30 72 73 69 6f 6e 20 32 2e 30 2e 30 2e 0a 56 41 43  rsion 2.0.0..VAC
11c40 55 55 4d 20 77 61 73 20 72 65 69 6d 70 6c 65 6d  UUM was reimplem
11c50 65 6e 74 65 64 20 69 6e 20 76 65 72 73 69 6f 6e  ented in version
11c60 20 32 2e 38 2e 31 2e 0a 54 68 65 20 69 6e 64 65   2.8.1..The inde
11c70 78 20 6f 72 20 74 61 62 6c 65 20 6e 61 6d 65 20  x or table name 
11c80 61 72 67 75 6d 65 6e 74 20 69 73 20 6e 6f 77 20  argument is now 
11c90 69 67 6e 6f 72 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c  ignored..</p>..<
11ca0 70 3e 57 68 65 6e 20 61 6e 20 6f 62 6a 65 63 74  p>When an object
11cb0 20 28 74 61 62 6c 65 2c 20 69 6e 64 65 78 2c 20   (table, index, 
11cc0 6f 72 20 74 72 69 67 67 65 72 29 20 69 73 20 64  or trigger) is d
11cd0 72 6f 70 70 65 64 20 66 72 6f 6d 20 74 68 65 20  ropped from the 
11ce0 0a 64 61 74 61 62 61 73 65 2c 20 69 74 20 6c 65  .database, it le
11cf0 61 76 65 73 20 62 65 68 69 6e 64 20 65 6d 70 74  aves behind empt
11d00 79 20 73 70 61 63 65 2e 20 20 54 68 69 73 20 6d  y space.  This m
11d10 61 6b 65 73 20 74 68 65 20 64 61 74 61 62 61 73  akes the databas
11d20 65 20 0a 66 69 6c 65 20 6c 61 72 67 65 72 20 74  e .file larger t
11d30 68 61 6e 20 69 74 20 6e 65 65 64 73 20 74 6f 20  han it needs to 
11d40 62 65 2c 20 62 75 74 20 63 61 6e 20 73 70 65 65  be, but can spee
11d50 64 20 75 70 20 69 6e 73 65 72 74 73 2e 20 20 49  d up inserts.  I
11d60 6e 20 74 69 6d 65 20 0a 69 6e 73 65 72 74 73 20  n time .inserts 
11d70 61 6e 64 20 64 65 6c 65 74 65 73 20 63 61 6e 20  and deletes can 
11d80 6c 65 61 76 65 20 74 68 65 20 64 61 74 61 62 61  leave the databa
11d90 73 65 20 66 69 6c 65 20 73 74 72 75 63 74 75 72  se file structur
11da0 65 20 66 72 61 67 6d 65 6e 74 65 64 2c 20 0a 77  e fragmented, .w
11db0 68 69 63 68 20 73 6c 6f 77 73 20 64 6f 77 6e 20  hich slows down 
11dc0 64 69 73 6b 20 61 63 63 65 73 73 20 74 6f 20 74  disk access to t
11dd0 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 74  he database cont
11de0 65 6e 74 73 2e 0a 0a 54 68 65 20 56 41 43 55 55  ents...The VACUU
11df0 4d 20 63 6f 6d 6d 61 6e 64 20 63 6c 65 61 6e 73  M command cleans
11e00 0a 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61  .the main databa
11e10 73 65 20 62 79 20 63 6f 70 79 69 6e 67 20 69 74  se by copying it
11e20 73 20 63 6f 6e 74 65 6e 74 73 20 74 6f 20 61 20  s contents to a 
11e30 74 65 6d 70 6f 72 61 72 79 20 64 61 74 61 62 61  temporary databa
11e40 73 65 20 66 69 6c 65 20 61 6e 64 20 0a 72 65 6c  se file and .rel
11e50 6f 61 64 69 6e 67 20 74 68 65 20 6f 72 69 67 69  oading the origi
11e60 6e 61 6c 20 64 61 74 61 62 61 73 65 20 66 69 6c  nal database fil
11e70 65 20 66 72 6f 6d 20 74 68 65 20 63 6f 70 79 2e  e from the copy.
11e80 20 20 54 68 69 73 20 65 6c 69 6d 69 6e 61 74 65    This eliminate
11e90 73 20 0a 66 72 65 65 20 70 61 67 65 73 2c 20 20  s .free pages,  
11ea0 61 6c 69 67 6e 73 20 74 61 62 6c 65 20 64 61 74  aligns table dat
11eb0 61 20 74 6f 20 62 65 20 63 6f 6e 74 69 67 75 6f  a to be contiguo
11ec0 75 73 2c 20 61 6e 64 20 6f 74 68 65 72 77 69 73  us, and otherwis
11ed0 65 20 63 6c 65 61 6e 73 20 0a 75 70 20 74 68 65  e cleans .up the
11ee0 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 73   database file s
11ef0 74 72 75 63 74 75 72 65 2e 3c 2f 70 3e 0a 0a 3c  tructure.</p>..<
11f00 70 3e 56 41 43 55 55 4d 20 6f 6e 6c 79 20 77 6f  p>VACUUM only wo
11f10 72 6b 73 20 6f 6e 20 74 68 65 20 6d 61 69 6e 20  rks on the main 
11f20 64 61 74 61 62 61 73 65 2e 0a 49 74 20 69 73 20  database..It is 
11f30 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74 6f 20  not possible to 
11f40 56 41 43 55 55 4d 20 61 6e 20 61 74 74 61 63 68  VACUUM an attach
11f50 65 64 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ed database file
11f60 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 56 41  .</p>..<p>The VA
11f70 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 77 69 6c  CUUM command wil
11f80 6c 20 66 61 69 6c 20 69 66 20 74 68 65 72 65 20  l fail if there 
11f90 69 73 20 61 6e 20 61 63 74 69 76 65 20 74 72 61  is an active tra
11fa0 6e 73 61 63 74 69 6f 6e 2e 0a 54 68 65 20 56 41  nsaction..The VA
11fb0 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 69 73 20  CUUM command is 
11fc0 61 20 6e 6f 2d 6f 70 20 66 6f 72 20 69 6e 2d 6d  a no-op for in-m
11fd0 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 73 2e  emory databases.
11fe0 3c 2f 70 3e 0a 0a 3c 70 3e 41 73 20 6f 66 20 53  </p>..<p>As of S
11ff0 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e  QLite version 3.
12000 31 2c 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  1, an alternativ
12010 65 20 74 6f 20 75 73 69 6e 67 20 74 68 65 20 56  e to using the V
12020 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 0a 69 73  ACUUM command.is
12030 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 6d 6f 64   auto-vacuum mod
12040 65 2c 20 65 6e 61 62 6c 65 64 20 75 73 69 6e 67  e, enabled using
12050 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 70   the .<a href="p
12060 72 61 67 6d 61 2e 68 74 6d 6c 23 70 72 61 67 6d  ragma.html#pragm
12070 61 5f 61 75 74 6f 5f 76 61 63 75 75 6d 22 3e 61  a_auto_vacuum">a
12080 75 74 6f 5f 76 61 63 75 75 6d 20 70 72 61 67 6d  uto_vacuum pragm
12090 61 3c 2f 61 3e 2e 0a 57 68 65 6e 20 61 75 74 6f  a</a>..When auto
120a0 2d 76 61 63 75 75 6d 20 69 73 20 65 6e 61 62 6c  -vacuum is enabl
120b0 65 64 20 66 6f 72 20 61 20 64 61 74 61 62 61 73  ed for a databas
120c0 65 2c 20 6c 61 72 67 65 20 64 65 6c 65 74 65 73  e, large deletes
120d0 20 63 61 75 73 65 0a 74 68 65 20 73 69 7a 65 20   cause.the size 
120e0 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
120f0 66 69 6c 65 20 74 6f 20 73 68 72 69 6e 6b 2e 20  file to shrink. 
12100 20 48 6f 77 65 76 65 72 2c 20 61 75 74 6f 2d 76   However, auto-v
12110 61 63 75 75 6d 0a 61 6c 73 6f 20 63 61 75 73 65  acuum.also cause
12120 73 20 65 78 63 65 73 73 20 66 72 61 67 6d 65 6e  s excess fragmen
12130 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 64 61  tation of the da
12140 74 61 62 61 73 65 20 66 69 6c 65 2e 20 20 41 6e  tabase file.  An
12150 64 20 61 75 74 6f 2d 76 61 63 75 75 6d 0a 64 6f  d auto-vacuum.do
12160 65 73 20 6e 6f 74 20 63 6f 6d 70 61 63 74 20 70  es not compact p
12170 61 72 74 69 61 6c 6c 79 20 66 69 6c 6c 65 64 20  artially filled 
12180 70 61 67 65 73 20 6f 66 20 74 68 65 20 64 61 74  pages of the dat
12190 61 62 61 73 65 20 61 73 20 56 41 43 55 55 4d 0a  abase as VACUUM.
121a0 64 6f 65 73 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 23 20  does..</p>.}..# 
121b0 41 20 6c 69 73 74 20 6f 66 20 6b 65 79 77 6f 72  A list of keywor
121c0 64 73 2e 20 20 41 20 61 73 74 65 72 69 73 6b 20  ds.  A asterisk 
121d0 6f 63 63 75 72 73 20 61 66 74 65 72 20 74 68 65  occurs after the
121e0 20 6b 65 79 77 6f 72 64 20 69 66 20 69 74 20 69   keyword if it i
121f0 73 20 6f 6e 0a 23 20 74 68 65 20 66 61 6c 6c 62  s on.# the fallb
12200 61 63 6b 20 6c 69 73 74 2e 0a 23 0a 73 65 74 20  ack list..#.set 
12210 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20 5b 6c 73  keyword_list [ls
12220 6f 72 74 20 7b 0a 20 20 20 41 42 4f 52 54 2a 0a  ort {.   ABORT*.
12230 20 20 20 41 44 44 0a 20 20 20 41 46 54 45 52 2a     ADD.   AFTER*
12240 0a 20 20 20 41 4c 4c 0a 20 20 20 41 4c 54 45 52  .   ALL.   ALTER
12250 0a 20 20 20 41 4e 41 4c 59 5a 45 2a 0a 20 20 20  .   ANALYZE*.   
12260 41 4e 44 0a 20 20 20 41 53 0a 20 20 20 41 53 43  AND.   AS.   ASC
12270 2a 0a 20 20 20 41 54 54 41 43 48 2a 0a 20 20 20  *.   ATTACH*.   
12280 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 0a 20 20  AUTOINCREMENT.  
12290 20 42 45 46 4f 52 45 2a 0a 20 20 20 42 45 47 49   BEFORE*.   BEGI
122a0 4e 2a 0a 20 20 20 42 45 54 57 45 45 4e 0a 20 20  N*.   BETWEEN.  
122b0 20 42 59 0a 20 20 20 43 41 53 43 41 44 45 2a 0a   BY.   CASCADE*.
122c0 20 20 20 43 41 53 45 0a 20 20 20 43 41 53 54 2a     CASE.   CAST*
122d0 0a 20 20 20 43 48 45 43 4b 0a 20 20 20 43 4f 4c  .   CHECK.   COL
122e0 4c 41 54 45 0a 20 20 20 43 4f 4d 4d 49 54 0a 20  LATE.   COMMIT. 
122f0 20 20 43 4f 4e 46 4c 49 43 54 2a 0a 20 20 20 43    CONFLICT*.   C
12300 4f 4e 53 54 52 41 49 4e 54 0a 20 20 20 43 52 45  ONSTRAINT.   CRE
12310 41 54 45 0a 20 20 20 43 52 4f 53 53 0a 20 20 20  ATE.   CROSS.   
12320 43 55 52 52 45 4e 54 5f 44 41 54 45 2a 0a 20 20  CURRENT_DATE*.  
12330 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2a 0a 20   CURRENT_TIME*. 
12340 20 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54    CURRENT_TIMEST
12350 41 4d 50 2a 0a 20 20 20 44 41 54 41 42 41 53 45  AMP*.   DATABASE
12360 2a 0a 20 20 20 44 45 46 41 55 4c 54 0a 20 20 20  *.   DEFAULT.   
12370 44 45 46 45 52 52 45 44 2a 0a 20 20 20 44 45 46  DEFERRED*.   DEF
12380 45 52 52 41 42 4c 45 0a 20 20 20 44 45 4c 45 54  ERRABLE.   DELET
12390 45 0a 20 20 20 44 45 53 43 2a 0a 20 20 20 44 45  E.   DESC*.   DE
123a0 54 41 43 48 2a 0a 20 20 20 44 49 53 54 49 4e 43  TACH*.   DISTINC
123b0 54 0a 20 20 20 44 52 4f 50 0a 20 20 20 45 4e 44  T.   DROP.   END
123c0 2a 0a 20 20 20 45 41 43 48 2a 0a 20 20 20 45 4c  *.   EACH*.   EL
123d0 53 45 0a 20 20 20 45 53 43 41 50 45 0a 20 20 20  SE.   ESCAPE.   
123e0 45 58 43 45 50 54 0a 20 20 20 45 58 43 4c 55 53  EXCEPT.   EXCLUS
123f0 49 56 45 2a 0a 20 20 20 45 58 50 4c 41 49 4e 2a  IVE*.   EXPLAIN*
12400 0a 20 20 20 46 41 49 4c 2a 0a 20 20 20 46 4f 52  .   FAIL*.   FOR
12410 2a 0a 20 20 20 46 4f 52 45 49 47 4e 0a 20 20 20  *.   FOREIGN.   
12420 46 52 4f 4d 0a 20 20 20 46 55 4c 4c 0a 20 20 20  FROM.   FULL.   
12430 47 4c 4f 42 2a 0a 20 20 20 47 52 4f 55 50 0a 20  GLOB*.   GROUP. 
12440 20 20 48 41 56 49 4e 47 0a 20 20 20 49 46 2a 0a    HAVING.   IF*.
12450 20 20 20 49 47 4e 4f 52 45 2a 0a 20 20 20 49 4d     IGNORE*.   IM
12460 4d 45 44 49 41 54 45 2a 0a 20 20 20 49 4e 0a 20  MEDIATE*.   IN. 
12470 20 20 49 4e 44 45 58 0a 20 20 20 49 4e 49 54 49    INDEX.   INITI
12480 41 4c 4c 59 2a 0a 20 20 20 49 4e 4e 45 52 0a 20  ALLY*.   INNER. 
12490 20 20 49 4e 53 45 52 54 0a 20 20 20 49 4e 53 54    INSERT.   INST
124a0 45 41 44 2a 0a 20 20 20 49 4e 54 45 52 53 45 43  EAD*.   INTERSEC
124b0 54 0a 20 20 20 49 4e 54 4f 0a 20 20 20 49 53 0a  T.   INTO.   IS.
124c0 20 20 20 49 53 4e 55 4c 4c 0a 20 20 20 4a 4f 49     ISNULL.   JOI
124d0 4e 0a 20 20 20 4b 45 59 2a 0a 20 20 20 4c 45 46  N.   KEY*.   LEF
124e0 54 0a 20 20 20 4c 49 4b 45 2a 0a 20 20 20 4c 49  T.   LIKE*.   LI
124f0 4d 49 54 0a 20 20 20 4d 41 54 43 48 2a 0a 20 20  MIT.   MATCH*.  
12500 20 4e 41 54 55 52 41 4c 0a 20 20 20 4e 4f 54 0a   NATURAL.   NOT.
12510 20 20 20 4e 4f 54 4e 55 4c 4c 0a 20 20 20 4e 55     NOTNULL.   NU
12520 4c 4c 0a 20 20 20 4f 46 2a 0a 20 20 20 4f 46 46  LL.   OF*.   OFF
12530 53 45 54 2a 0a 20 20 20 4f 4e 0a 20 20 20 4f 52  SET*.   ON.   OR
12540 0a 20 20 20 4f 52 44 45 52 0a 20 20 20 4f 55 54  .   ORDER.   OUT
12550 45 52 0a 20 20 20 50 4c 41 4e 2a 0a 20 20 20 50  ER.   PLAN*.   P
12560 52 41 47 4d 41 2a 0a 20 20 20 50 52 49 4d 41 52  RAGMA*.   PRIMAR
12570 59 0a 20 20 20 51 55 45 52 59 2a 0a 20 20 20 52  Y.   QUERY*.   R
12580 41 49 53 45 2a 0a 20 20 20 52 45 46 45 52 45 4e  AISE*.   REFEREN
12590 43 45 53 0a 20 20 20 52 45 49 4e 44 45 58 2a 0a  CES.   REINDEX*.
125a0 20 20 20 52 45 4e 41 4d 45 2a 0a 20 20 20 52 45     RENAME*.   RE
125b0 50 4c 41 43 45 2a 0a 20 20 20 52 45 53 54 52 49  PLACE*.   RESTRI
125c0 43 54 2a 0a 20 20 20 52 49 47 48 54 0a 20 20 20  CT*.   RIGHT.   
125d0 52 4f 4c 4c 42 41 43 4b 0a 20 20 20 52 4f 57 2a  ROLLBACK.   ROW*
125e0 0a 20 20 20 53 45 4c 45 43 54 0a 20 20 20 53 45  .   SELECT.   SE
125f0 54 0a 20 20 20 54 41 42 4c 45 0a 20 20 20 54 45  T.   TABLE.   TE
12600 4d 50 2a 0a 20 20 20 54 45 4d 50 4f 52 41 52 59  MP*.   TEMPORARY
12610 2a 0a 20 20 20 54 48 45 4e 0a 20 20 20 54 4f 0a  *.   THEN.   TO.
12620 20 20 20 54 52 41 4e 53 41 43 54 49 4f 4e 0a 20     TRANSACTION. 
12630 20 20 54 52 49 47 47 45 52 2a 0a 20 20 20 55 4e    TRIGGER*.   UN
12640 49 4f 4e 0a 20 20 20 55 4e 49 51 55 45 0a 20 20  ION.   UNIQUE.  
12650 20 55 50 44 41 54 45 0a 20 20 20 55 53 49 4e 47   UPDATE.   USING
12660 0a 20 20 20 56 41 43 55 55 4d 2a 0a 20 20 20 56  .   VACUUM*.   V
12670 41 4c 55 45 53 0a 20 20 20 56 49 45 57 2a 0a 20  ALUES.   VIEW*. 
12680 20 20 56 49 52 54 55 41 4c 2a 0a 20 20 20 57 48    VIRTUAL*.   WH
12690 45 4e 0a 20 20 20 57 48 45 52 45 0a 7d 5d 0a 0a  EN.   WHERE.}]..
126a0 0a 0a 70 75 74 73 20 7b 3c 44 49 56 20 63 6c 61  ..puts {<DIV cla
126b0 73 73 3d 22 70 64 66 5f 73 65 63 74 69 6f 6e 22  ss="pdf_section"
126c0 3e 7d 0a 53 65 63 74 69 6f 6e 20 7b 53 51 4c 69  >}.Section {SQLi
126d0 74 65 20 4b 65 79 77 6f 72 64 73 7d 20 6b 65 79  te Keywords} key
126e0 77 6f 72 64 73 20 0a 70 75 74 73 20 7b 3c 2f 44  words .puts {</D
126f0 49 56 3e 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  IV>}..puts {.<p>
12700 54 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72 64  The SQL standard
12710 20 73 70 65 63 69 66 69 65 73 20 61 20 68 75 67   specifies a hug
12720 65 20 6e 75 6d 62 65 72 20 6f 66 20 6b 65 79 77  e number of keyw
12730 6f 72 64 73 20 77 68 69 63 68 20 6d 61 79 20 6e  ords which may n
12740 6f 74 0a 62 65 20 75 73 65 64 20 61 73 20 74 68  ot.be used as th
12750 65 20 6e 61 6d 65 73 20 6f 66 20 74 61 62 6c 65  e names of table
12760 73 2c 20 69 6e 64 69 63 65 73 2c 20 63 6f 6c 75  s, indices, colu
12770 6d 6e 73 2c 20 64 61 74 61 62 61 73 65 73 2c 20  mns, databases, 
12780 75 73 65 72 2d 64 65 66 69 6e 65 64 0a 66 75 6e  user-defined.fun
12790 63 74 69 6f 6e 73 2c 20 63 6f 6c 6c 61 74 69 6f  ctions, collatio
127a0 6e 73 2c 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ns, virtual tabl
127b0 65 20 6d 6f 64 75 6c 65 73 2c 20 6f 72 20 61 6e  e modules, or an
127c0 79 20 6f 74 68 65 72 20 6e 61 6d 65 64 20 6f 62  y other named ob
127d0 6a 65 63 74 2e 0a 54 68 65 20 6c 69 73 74 20 6f  ject..The list o
127e0 66 20 6b 65 79 77 6f 72 64 73 20 69 73 20 73 6f  f keywords is so
127f0 20 6c 6f 6e 67 20 74 68 61 74 20 66 65 77 20 70   long that few p
12800 65 6f 70 6c 65 20 63 61 6e 20 72 65 6d 65 6d 62  eople can rememb
12810 65 72 20 74 68 65 6d 20 61 6c 6c 2e 0a 46 6f 72  er them all..For
12820 20 6d 6f 73 74 20 53 51 4c 20 63 6f 64 65 2c 20   most SQL code, 
12830 79 6f 75 72 20 73 61 66 65 73 74 20 62 65 74 20  your safest bet 
12840 69 73 20 74 6f 20 6e 65 76 65 72 20 75 73 65 20  is to never use 
12850 61 6e 79 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67  any English lang
12860 75 61 67 65 0a 77 6f 72 64 20 61 73 20 74 68 65  uage.word as the
12870 20 6e 61 6d 65 20 6f 66 20 61 20 75 73 65 72 2d   name of a user-
12880 64 65 66 69 6e 65 64 20 6f 62 6a 65 63 74 2e 3c  defined object.<
12890 2f 70 3e 0a 0a 3c 70 3e 49 66 20 79 6f 75 20 77  /p>..<p>If you w
128a0 61 6e 74 20 74 6f 20 75 73 65 20 61 20 6b 65 79  ant to use a key
128b0 77 6f 72 64 20 61 73 20 61 20 6e 61 6d 65 2c 20  word as a name, 
128c0 79 6f 75 20 6e 65 65 64 20 74 6f 20 71 75 6f 74  you need to quot
128d0 65 20 69 74 2e 20 20 54 68 65 72 65 0a 61 72 65  e it.  There.are
128e0 20 74 68 72 65 65 20 77 61 79 73 20 6f 66 20 71   three ways of q
128f0 75 6f 74 69 6e 67 20 6b 65 79 77 6f 72 64 73 20  uoting keywords 
12900 69 6e 20 53 51 4c 69 74 65 3a 3c 2f 70 3e 0a 0a  in SQLite:</p>..
12910 3c 70 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  <p>.<blockquote>
12920 0a 3c 74 61 62 6c 65 20 63 6c 61 73 73 3d 22 70  .<table class="p
12930 64 66 5f 66 75 6e 63 74 69 6f 6e 73 22 3e 0a 3c  df_functions">.<
12940 74 72 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
12950 74 6f 70 22 3e 3c 62 3e 27 6b 65 79 77 6f 72 64  top"><b>'keyword
12960 27 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 77 69  '</b></td><td wi
12970 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 09  dth="20"></td>..
12980 3c 74 64 3e 41 20 6b 65 79 77 6f 72 64 20 69 6e  <td>A keyword in
12990 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 20 69   single quotes i
129a0 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73  s interpreted as
129b0 20 61 20 6c 69 74 65 72 61 6c 20 73 74 72 69 6e   a literal strin
129c0 67 0a 20 20 20 20 20 20 20 20 69 66 20 69 74 20  g.        if it 
129d0 6f 63 63 75 72 73 20 69 6e 20 61 20 63 6f 6e 74  occurs in a cont
129e0 65 78 74 20 77 68 65 72 65 20 61 20 73 74 72 69  ext where a stri
129f0 6e 67 20 6c 69 74 65 72 61 6c 20 69 73 20 61 6c  ng literal is al
12a00 6c 6f 77 65 64 2c 20 6f 74 68 65 72 77 69 73 65  lowed, otherwise
12a10 0a 09 69 74 20 69 73 20 75 6e 64 65 72 73 74 6f  ..it is understo
12a20 6f 64 20 61 73 20 61 6e 20 69 64 65 6e 74 69 66  od as an identif
12a30 69 65 72 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c  ier.</td></tr>.<
12a40 74 72 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
12a50 74 6f 70 22 3e 3c 62 3e 22 6b 65 79 77 6f 72 64  top"><b>"keyword
12a60 22 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 3c 2f  "</b></td><td></
12a70 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65 79 77 6f  td>..<td>A keywo
12a80 72 64 20 69 6e 20 64 6f 75 62 6c 65 2d 71 75 6f  rd in double-quo
12a90 74 65 73 20 69 73 20 69 6e 74 65 72 70 72 65 74  tes is interpret
12aa0 65 64 20 61 73 20 61 6e 20 69 64 65 6e 74 69 66  ed as an identif
12ab0 69 65 72 20 69 66 0a 20 20 20 20 20 20 20 20 69  ier if.        i
12ac0 74 20 6d 61 74 63 68 65 73 20 61 20 6b 6e 6f 77  t matches a know
12ad0 6e 20 69 64 65 6e 74 69 66 69 65 72 2e 20 20 4f  n identifier.  O
12ae0 74 68 65 72 77 69 73 65 20 69 74 20 69 73 20 69  therwise it is i
12af0 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 0a  nterpreted as a.
12b00 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c          string l
12b10 69 74 65 72 61 6c 2e 3c 2f 74 64 3e 3c 2f 74 72  iteral.</td></tr
12b20 3e 0a 3c 74 72 3e 09 3c 74 64 20 76 61 6c 69 67  >.<tr>.<td valig
12b30 6e 3d 22 74 6f 70 22 3e 3c 62 3e 5b 6b 65 79 77  n="top"><b>[keyw
12b40 6f 72 64 5d 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64  ord]</b></td><td
12b50 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65  ></td>..<td>A ke
12b60 79 77 6f 72 64 20 65 6e 63 6c 6f 73 65 64 20 69  yword enclosed i
12b70 6e 20 73 71 75 61 72 65 20 62 72 61 63 6b 65 74  n square bracket
12b80 73 20 69 73 20 61 6c 77 61 79 73 20 75 6e 64 65  s is always unde
12b90 72 73 74 6f 6f 64 20 61 73 0a 20 20 20 20 20 20  rstood as.      
12ba0 20 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 2e    an identifier.
12bb0 20 20 54 68 69 73 20 69 73 20 6e 6f 74 20 73 74    This is not st
12bc0 61 6e 64 61 72 64 20 53 51 4c 2e 20 20 54 68 69  andard SQL.  Thi
12bd0 73 20 71 75 6f 74 69 6e 67 20 6d 65 63 68 61 6e  s quoting mechan
12be0 69 73 6d 0a 20 20 20 20 20 20 20 20 69 73 20 75  ism.        is u
12bf0 73 65 64 20 62 79 20 4d 53 20 41 63 63 65 73 73  sed by MS Access
12c00 20 61 6e 64 20 53 51 4c 20 53 65 72 76 65 72 20   and SQL Server 
12c10 61 6e 64 20 69 73 20 69 6e 63 6c 75 64 65 64 20  and is included 
12c20 69 6e 20 53 51 4c 69 74 65 20 66 6f 72 0a 20 20  in SQLite for.  
12c30 20 20 20 20 20 20 63 6f 6d 70 61 74 69 62 69 6c        compatibil
12c40 69 74 79 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c  ity.</td></tr>.<
12c50 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71  /table>.</blockq
12c60 75 6f 74 65 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 51  uote>.</p>..<p>Q
12c70 75 6f 74 65 64 20 6b 65 79 77 6f 72 64 73 20 61  uoted keywords a
12c80 72 65 20 75 6e 61 65 73 74 68 65 74 69 63 2e 0a  re unaesthetic..
12c90 54 6f 20 68 65 6c 70 20 79 6f 75 20 61 76 6f 69  To help you avoi
12ca0 64 20 74 68 65 6d 2c 20 53 51 4c 69 74 65 20 61  d them, SQLite a
12cb0 6c 6c 6f 77 73 20 6d 61 6e 79 20 6b 65 79 77 6f  llows many keywo
12cc0 72 64 73 20 74 6f 20 62 65 20 75 73 65 64 20 75  rds to be used u
12cd0 6e 71 75 6f 74 65 64 0a 61 73 20 74 68 65 20 6e  nquoted.as the n
12ce0 61 6d 65 73 20 6f 66 20 64 61 74 61 62 61 73 65  ames of database
12cf0 73 2c 20 74 61 62 6c 65 73 2c 20 69 6e 64 69 63  s, tables, indic
12d00 65 73 2c 20 74 72 69 67 67 65 72 73 2c 20 76 69  es, triggers, vi
12d10 65 77 73 2c 20 63 6f 6c 75 6d 6e 73 2c 0a 75 73  ews, columns,.us
12d20 65 72 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74  er-defined funct
12d30 69 6f 6e 73 2c 20 63 6f 6c 6c 61 74 69 6f 6e 73  ions, collations
12d40 2c 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  , attached datab
12d50 61 73 65 73 2c 20 61 6e 64 20 76 69 72 74 75 61  ases, and virtua
12d60 6c 0a 66 75 6e 63 74 69 6f 6e 20 6d 6f 64 75 6c  l.function modul
12d70 65 73 2e 0a 49 6e 20 74 68 65 20 6c 69 73 74 20  es..In the list 
12d80 6f 66 20 6b 65 79 77 6f 72 64 73 20 74 68 61 74  of keywords that
12d90 20 66 6f 6c 6c 6f 77 73 2c 20 74 68 6f 73 65 20   follows, those 
12da0 74 68 61 74 20 63 61 6e 20 62 65 20 75 73 65 64  that can be used
12db0 20 61 73 20 69 64 65 6e 74 69 66 69 65 72 73 0a   as identifiers.
12dc0 61 72 65 20 73 68 6f 77 6e 20 69 6e 20 61 6e 20  are shown in an 
12dd0 69 74 61 6c 69 63 20 66 6f 6e 74 2e 20 20 4b 65  italic font.  Ke
12de0 79 77 6f 72 64 73 20 74 68 61 74 20 6d 75 73 74  ywords that must
12df0 20 62 65 20 71 75 6f 74 65 64 20 69 6e 20 6f 72   be quoted in or
12e00 64 65 72 20 74 6f 20 62 65 0a 75 73 65 64 20 61  der to be.used a
12e10 73 20 69 64 65 6e 74 69 66 69 65 72 73 20 61 72  s identifiers ar
12e20 65 20 73 68 6f 77 6e 20 69 6e 20 62 6f 6c 64 2e  e shown in bold.
12e30 3c 2f 70 3e 0a 0a 3c 70 3e 0a 53 51 4c 69 74 65  </p>..<p>.SQLite
12e40 20 61 64 64 73 20 6e 65 77 20 6b 65 79 77 6f 72   adds new keywor
12e50 64 73 20 66 72 6f 6d 20 74 69 6d 65 20 74 6f 20  ds from time to 
12e60 74 69 6d 65 20 77 68 65 6e 20 69 74 20 74 61 6b  time when it tak
12e70 65 20 6f 6e 20 6e 65 77 20 66 65 61 74 75 72 65  e on new feature
12e80 73 2e 0a 53 6f 20 74 6f 20 70 72 65 76 65 6e 74  s..So to prevent
12e90 20 79 6f 75 72 20 63 6f 64 65 20 66 72 6f 6d 20   your code from 
12ea0 62 65 69 6e 67 20 62 72 6f 6b 65 6e 20 62 79 20  being broken by 
12eb0 66 75 74 75 72 65 20 65 6e 68 61 6e 63 65 6d 65  future enhanceme
12ec0 6e 74 73 2c 20 79 6f 75 20 73 68 6f 75 6c 64 0a  nts, you should.
12ed0 6e 6f 72 6d 61 6c 6c 79 20 71 75 6f 74 65 20 61  normally quote a
12ee0 6e 79 20 69 6e 64 65 6e 74 69 66 69 65 72 20 74  ny indentifier t
12ef0 68 61 74 20 69 73 20 61 6e 20 45 6e 67 6c 69 73  hat is an Englis
12f00 68 20 6c 61 6e 67 75 61 67 65 20 77 6f 72 64 2c  h language word,
12f10 20 65 76 65 6e 20 69 66 0a 79 6f 75 20 64 6f 20   even if.you do 
12f20 6e 6f 74 20 68 61 76 65 20 74 6f 2e 0a 3c 2f 70  not have to..</p
12f30 3e 0a 0a 3c 70 3e 0a 54 68 65 20 66 6f 6c 6c 6f  >..<p>.The follo
12f40 77 69 6e 67 20 61 72 65 20 74 68 65 20 6b 65 79  wing are the key
12f50 77 6f 72 64 73 20 63 75 72 72 65 6e 74 6c 79 20  words currently 
12f60 72 65 63 6f 67 6e 69 7a 65 64 20 62 79 20 53 51  recognized by SQ
12f70 4c 69 74 65 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f  Lite:.</p>..<blo
12f80 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 20  ckquote>.<table 
12f90 77 69 64 74 68 3d 22 31 30 30 25 22 20 63 6c 61  width="100%" cla
12fa0 73 73 3d 22 70 64 66 5f 6b 65 79 77 6f 72 64 73  ss="pdf_keywords
12fb0 22 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67  ">.<tr>.<td alig
12fc0 6e 3d 22 6c 65 66 74 22 20 76 61 6c 69 67 6e 3d  n="left" valign=
12fd0 22 74 6f 70 22 20 77 69 64 74 68 3d 22 32 30 25  "top" width="20%
12fe0 22 3e 0a 7d 0a 0a 73 65 74 20 6e 20 5b 6c 6c 65  ">.}..set n [lle
12ff0 6e 67 74 68 20 24 6b 65 79 77 6f 72 64 5f 6c 69  ngth $keyword_li
13000 73 74 5d 0a 73 65 74 20 6e 43 6f 6c 20 35 0a 73  st].set nCol 5.s
13010 65 74 20 6e 52 6f 77 20 5b 65 78 70 72 20 7b 28  et nRow [expr {(
13020 24 6e 2b 24 6e 43 6f 6c 2d 31 29 2f 24 6e 43 6f  $n+$nCol-1)/$nCo
13030 6c 7d 5d 0a 73 65 74 20 69 20 30 0a 66 6f 72 65  l}].set i 0.fore
13040 61 63 68 20 77 6f 72 64 20 24 6b 65 79 77 6f 72  ach word $keywor
13050 64 5f 6c 69 73 74 20 7b 0a 20 20 69 66 20 7b 5b  d_list {.  if {[
13060 73 74 72 69 6e 67 20 69 6e 64 65 78 20 24 77 6f  string index $wo
13070 72 64 20 65 6e 64 5d 3d 3d 22 2a 22 7d 20 7b 0a  rd end]=="*"} {.
13080 20 20 20 20 73 65 74 20 77 6f 72 64 20 5b 73 74      set word [st
13090 72 69 6e 67 20 72 61 6e 67 65 20 24 77 6f 72 64  ring range $word
130a0 20 30 20 65 6e 64 2d 31 5d 0a 20 20 20 20 73 65   0 end-1].    se
130b0 74 20 66 6f 6e 74 20 69 0a 20 20 7d 20 65 6c 73  t font i.  } els
130c0 65 20 7b 0a 20 20 20 20 73 65 74 20 66 6f 6e 74  e {.    set font
130d0 20 62 0a 20 20 7d 0a 20 20 69 66 20 7b 24 69 3d   b.  }.  if {$i=
130e0 3d 24 6e 52 6f 77 7d 20 7b 0a 20 20 20 20 70 75  =$nRow} {.    pu
130f0 74 73 20 22 3c 2f 74 64 3e 3c 74 64 20 76 61 6c  ts "</td><td val
13100 69 67 6e 3d 5c 22 74 6f 70 5c 22 20 61 6c 69 67  ign=\"top\" alig
13110 6e 3d 5c 22 6c 65 66 74 5c 22 20 77 69 64 74 68  n=\"left\" width
13120 3d 5c 22 32 30 25 5c 22 3e 22 0a 20 20 20 20 73  =\"20%\">".    s
13130 65 74 20 69 20 31 0a 20 20 7d 20 65 6c 73 65 20  et i 1.  } else 
13140 7b 0a 20 20 20 20 69 6e 63 72 20 69 0a 20 20 7d  {.    incr i.  }
13150 0a 20 20 70 75 74 73 20 22 3c 24 66 6f 6e 74 3e  .  puts "<$font>
13160 24 77 6f 72 64 3c 2f 24 66 6f 6e 74 3e 3c 62 72  $word</$font><br
13170 3e 22 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 2f 74  >".}..puts {.</t
13180 64 3e 3c 2f 74 72 3e 3c 2f 74 61 62 6c 65 3e 3c  d></tr></table><
13190 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 68  /blockquote>..<h
131a0 32 3e 53 70 65 63 69 61 6c 20 6e 61 6d 65 73 3c  2>Special names<
131b0 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c  /h2>..<p>The fol
131c0 6c 6f 77 69 6e 67 20 61 72 65 20 6e 6f 74 20 6b  lowing are not k
131d0 65 79 77 6f 72 64 73 20 69 6e 20 53 51 4c 69 74  eywords in SQLit
131e0 65 2c 20 62 75 74 20 61 72 65 20 75 73 65 64 20  e, but are used 
131f0 61 73 20 6e 61 6d 65 73 20 6f 66 20 0a 73 79 73  as names of .sys
13200 74 65 6d 20 6f 62 6a 65 63 74 73 2e 20 20 54 68  tem objects.  Th
13210 65 79 20 63 61 6e 20 62 65 20 75 73 65 64 20 61  ey can be used a
13220 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20  s an identifier 
13230 66 6f 72 20 61 20 64 69 66 66 65 72 65 6e 74 20  for a different 
13240 0a 74 79 70 65 20 6f 66 20 6f 62 6a 65 63 74 2e  .type of object.
13250 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
13260 65 20 63 6c 61 73 73 3d 22 70 64 66 5f 6b 65 79  e class="pdf_key
13270 77 6f 72 64 73 22 3e 3c 62 3e 0a 20 20 5f 52 4f  words"><b>.  _RO
13280 57 49 44 5f 3c 62 72 3e 0a 20 20 4d 41 49 4e 3c  WID_<br>.  MAIN<
13290 62 72 3e 0a 20 20 4f 49 44 3c 62 72 3e 0a 20 20  br>.  OID<br>.  
132a0 52 4f 57 49 44 3c 62 72 3e 0a 20 20 53 51 4c 49  ROWID<br>.  SQLI
132b0 54 45 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20  TE_MASTER<br>.  
132c0 53 51 4c 49 54 45 5f 53 45 51 55 45 4e 43 45 3c  SQLITE_SEQUENCE<
132d0 62 72 3e 0a 20 20 53 51 4c 49 54 45 5f 54 45 4d  br>.  SQLITE_TEM
132e0 50 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20 54  P_MASTER<br>.  T
132f0 45 4d 50 3c 62 72 3e 0a 3c 2f 62 3e 3c 2f 62 6c  EMP<br>.</b></bl
13300 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 70 75 74  ockquote>.}..put
13310 73 20 7b 3c 44 49 56 20 63 6c 61 73 73 3d 22 70  s {<DIV class="p
13320 64 66 5f 69 67 6e 6f 72 65 22 3e 7d 0a 66 6f 6f  df_ignore">}.foo
13330 74 65 72 20 24 72 63 73 69 64 0a 69 66 20 7b 5b  ter $rcsid.if {[
13340 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 6f  string length $o
13350 75 74 70 75 74 64 69 72 5d 7d 20 7b 0a 20 20 66  utputdir]} {.  f
13360 6f 6f 74 65 72 20 24 72 63 73 69 64 0a 7d 0a 70  ooter $rcsid.}.p
13370 75 74 73 20 7b 3c 2f 44 49 56 3e 7d 0a           uts {</DIV>}.