/ Hex Artifact Content
Login

Artifact d55f580cff3f384ae82d29b1201babddf991f510:


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 39 35 20 32 30 30  g.tcl,v 1.95 200
0060: 35 2f 30 37 2f 32 33 20 30 32 3a 31 37 3a 30 33  5/07/23 02:17:03
0070: 20 64 72 68 20 45 78 70 20 24 7d 0a 73 6f 75 72   drh Exp $}.sour
0080: 63 65 20 63 6f 6d 6d 6f 6e 2e 74 63 6c 0a 0a 69  ce common.tcl..i
0090: 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67  f {[llength $arg
00a0: 76 5d 3e 30 7d 20 7b 0a 20 20 73 65 74 20 6f 75  v]>0} {.  set ou
00b0: 74 70 75 74 64 69 72 20 5b 6c 69 6e 64 65 78 20  tputdir [lindex 
00c0: 24 61 72 67 76 20 30 5d 0a 7d 20 65 6c 73 65 20  $argv 0].} else 
00d0: 7b 0a 20 20 73 65 74 20 6f 75 74 70 75 74 64 69  {.  set outputdi
00e0: 72 20 22 22 0a 7d 0a 0a 68 65 61 64 65 72 20 7b  r "".}..header {
00f0: 51 75 65 72 79 20 4c 61 6e 67 75 61 67 65 20 55  Query Language U
0100: 6e 64 65 72 73 74 6f 6f 64 20 62 79 20 53 51 4c  nderstood by SQL
0110: 69 74 65 7d 0a 70 75 74 73 20 7b 0a 3c 68 31 3e  ite}.puts {.<h1>
0120: 53 51 4c 20 41 73 20 55 6e 64 65 72 73 74 6f 6f  SQL As Understoo
0130: 64 20 42 79 20 53 51 4c 69 74 65 3c 2f 68 31 3e  d By SQLite</h1>
0140: 0a 0a 3c 70 3e 54 68 65 20 53 51 4c 69 74 65 20  ..<p>The SQLite 
0150: 6c 69 62 72 61 72 79 20 75 6e 64 65 72 73 74 61  library understa
0160: 6e 64 73 20 6d 6f 73 74 20 6f 66 20 74 68 65 20  nds most of the 
0170: 73 74 61 6e 64 61 72 64 20 53 51 4c 0a 6c 61 6e  standard SQL.lan
0180: 67 75 61 67 65 2e 20 20 42 75 74 20 69 74 20 64  guage.  But it d
0190: 6f 65 73 20 3c 61 20 68 72 65 66 3d 22 6f 6d 69  oes <a href="omi
01a0: 74 74 65 64 2e 68 74 6d 6c 22 3e 6f 6d 69 74 20  tted.html">omit 
01b0: 73 6f 6d 65 20 66 65 61 74 75 72 65 73 3c 2f 61  some features</a
01c0: 3e 0a 77 68 69 6c 65 20 61 74 20 74 68 65 20 73  >.while at the s
01d0: 61 6d 65 20 74 69 6d 65 0a 61 64 64 69 6e 67 20  ame time.adding 
01e0: 61 20 66 65 77 20 66 65 61 74 75 72 65 73 20 6f  a few features o
01f0: 66 20 69 74 73 20 6f 77 6e 2e 20 20 54 68 69 73  f its own.  This
0200: 20 64 6f 63 75 6d 65 6e 74 20 61 74 74 65 6d 70   document attemp
0210: 74 73 20 74 6f 0a 64 65 73 63 72 69 62 65 20 70  ts to.describe p
0220: 72 65 63 69 73 65 6c 79 20 77 68 61 74 20 70 61  recisely what pa
0230: 72 74 73 20 6f 66 20 74 68 65 20 53 51 4c 20 6c  rts of the SQL l
0240: 61 6e 67 75 61 67 65 20 53 51 4c 69 74 65 20 64  anguage SQLite d
0250: 6f 65 73 0a 61 6e 64 20 64 6f 65 73 20 6e 6f 74  oes.and does not
0260: 20 73 75 70 70 6f 72 74 2e 20 20 41 20 6c 69 73   support.  A lis
0270: 74 20 6f 66 20 3c 61 20 68 72 65 66 3d 22 6c 61  t of <a href="la
0280: 6e 67 5f 6b 65 79 77 6f 72 64 73 2e 68 74 6d 6c  ng_keywords.html
0290: 22 3e 6b 65 79 77 6f 72 64 73 3c 2f 61 3e 20 69  ">keywords</a> i
02a0: 73 20 0a 61 6c 73 6f 20 70 72 6f 76 69 64 65 64  s .also provided
02b0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 61 6c 6c  .</p>..<p>In all
02c0: 20 6f 66 20 74 68 65 20 73 79 6e 74 61 78 20 64   of the syntax d
02d0: 69 61 67 72 61 6d 73 20 74 68 61 74 20 66 6f 6c  iagrams that fol
02e0: 6c 6f 77 2c 20 6c 69 74 65 72 61 6c 20 74 65 78  low, literal tex
02f0: 74 20 69 73 20 73 68 6f 77 6e 20 69 6e 0a 62 6f  t is shown in.bo
0300: 6c 64 20 62 6c 75 65 2e 20 20 4e 6f 6e 2d 74 65  ld blue.  Non-te
0310: 72 6d 69 6e 61 6c 20 73 79 6d 62 6f 6c 73 20 61  rminal symbols a
0320: 72 65 20 73 68 6f 77 6e 20 69 6e 20 69 74 61 6c  re shown in ital
0330: 69 63 20 72 65 64 2e 20 20 4f 70 65 72 61 74 6f  ic red.  Operato
0340: 72 73 0a 74 68 61 74 20 61 72 65 20 70 61 72 74  rs.that are part
0350: 20 6f 66 20 74 68 65 20 73 79 6e 74 61 63 74 69   of the syntacti
0360: 63 20 6d 61 72 6b 75 70 20 69 74 73 65 6c 66 20  c markup itself 
0370: 61 72 65 20 73 68 6f 77 6e 20 69 6e 20 62 6c 61  are shown in bla
0380: 63 6b 20 72 6f 6d 61 6e 2e 3c 2f 70 3e 0a 0a 3c  ck roman.</p>..<
0390: 70 3e 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20  p>This document 
03a0: 69 73 20 6a 75 73 74 20 61 6e 20 6f 76 65 72 76  is just an overv
03b0: 69 65 77 20 6f 66 20 74 68 65 20 53 51 4c 20 73  iew of the SQL s
03c0: 79 6e 74 61 78 20 69 6d 70 6c 65 6d 65 6e 74 65  yntax implemente
03d0: 64 0a 62 79 20 53 51 4c 69 74 65 2e 20 20 4d 61  d.by SQLite.  Ma
03e0: 6e 79 20 6c 6f 77 2d 6c 65 76 65 6c 20 70 72 6f  ny low-level pro
03f0: 64 75 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d 69  ductions are omi
0400: 74 74 65 64 2e 20 20 46 6f 72 20 64 65 74 61 69  tted.  For detai
0410: 6c 65 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a  led information.
0420: 6f 6e 20 74 68 65 20 6c 61 6e 67 75 61 67 65 20  on the language 
0430: 74 68 61 74 20 53 51 4c 69 74 65 20 75 6e 64 65  that SQLite unde
0440: 72 73 74 61 6e 64 73 2c 20 72 65 66 65 72 20 74  rstands, refer t
0450: 6f 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64  o the source cod
0460: 65 20 61 6e 64 0a 74 68 65 20 67 72 61 6d 6d 61  e and.the gramma
0470: 72 20 66 69 6c 65 20 22 70 61 72 73 65 2e 79 22  r file "parse.y"
0480: 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 53 51 4c 69 74  .</p>...<p>SQLit
0490: 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65  e implements the
04a0: 20 66 6f 6c 6c 6f 77 20 73 79 6e 74 61 78 3a 3c   follow syntax:<
04b0: 2f 70 3e 0a 3c 70 3e 3c 75 6c 3e 0a 7d 0a 0a 70  /p>.<p><ul>.}..p
04c0: 72 6f 63 20 73 6c 69 6e 6b 20 7b 6c 61 62 65 6c  roc slink {label
04d0: 7d 20 7b 0a 20 20 69 66 20 7b 5b 73 74 72 69 6e  } {.  if {[strin
04e0: 67 20 6d 61 74 63 68 20 2a 2e 68 74 6d 6c 20 24  g match *.html $
04f0: 6c 61 62 65 6c 5d 7d 20 7b 0a 20 20 20 20 72 65  label]} {.    re
0500: 74 75 72 6e 20 24 6c 61 62 65 6c 0a 20 20 7d 0a  turn $label.  }.
0510: 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65    if {[string le
0520: 6e 67 74 68 20 24 3a 3a 6f 75 74 70 75 74 64 69  ngth $::outputdi
0530: 72 5d 3d 3d 30 7d 20 7b 0a 20 20 20 20 72 65 74  r]==0} {.    ret
0540: 75 72 6e 20 23 24 6c 61 62 65 6c 0a 20 20 7d 20  urn #$label.  } 
0550: 65 6c 73 65 20 7b 20 0a 20 20 20 20 72 65 74 75  else { .    retu
0560: 72 6e 20 6c 61 6e 67 5f 24 6c 61 62 65 6c 2e 68  rn lang_$label.h
0570: 74 6d 6c 0a 20 20 7d 0a 7d 0a 0a 66 6f 72 65 61  tml.  }.}..forea
0580: 63 68 20 7b 73 65 63 74 69 6f 6e 7d 20 5b 6c 73  ch {section} [ls
0590: 6f 72 74 20 2d 69 6e 64 65 78 20 30 20 2d 64 69  ort -index 0 -di
05a0: 63 74 69 6f 6e 61 72 79 20 7b 0a 20 20 7b 7b 43  ctionary {.  {{C
05b0: 52 45 41 54 45 20 54 41 42 4c 45 7d 20 63 72 65  REATE TABLE} cre
05c0: 61 74 65 74 61 62 6c 65 7d 0a 20 20 7b 7b 43 52  atetable}.  {{CR
05d0: 45 41 54 45 20 49 4e 44 45 58 7d 20 63 72 65 61  EATE INDEX} crea
05e0: 74 65 69 6e 64 65 78 7d 0a 20 20 7b 56 41 43 55  teindex}.  {VACU
05f0: 55 4d 20 76 61 63 75 75 6d 7d 0a 20 20 7b 7b 44  UM vacuum}.  {{D
0600: 52 4f 50 20 54 41 42 4c 45 7d 20 64 72 6f 70 74  ROP TABLE} dropt
0610: 61 62 6c 65 7d 0a 20 20 7b 7b 44 52 4f 50 20 49  able}.  {{DROP I
0620: 4e 44 45 58 7d 20 64 72 6f 70 69 6e 64 65 78 7d  NDEX} dropindex}
0630: 0a 20 20 7b 49 4e 53 45 52 54 20 69 6e 73 65 72  .  {INSERT inser
0640: 74 7d 0a 20 20 7b 52 45 50 4c 41 43 45 20 72 65  t}.  {REPLACE re
0650: 70 6c 61 63 65 7d 0a 20 20 7b 44 45 4c 45 54 45  place}.  {DELETE
0660: 20 64 65 6c 65 74 65 7d 0a 20 20 7b 55 50 44 41   delete}.  {UPDA
0670: 54 45 20 75 70 64 61 74 65 7d 0a 20 20 7b 53 45  TE update}.  {SE
0680: 4c 45 43 54 20 73 65 6c 65 63 74 7d 0a 20 20 7b  LECT select}.  {
0690: 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e 74 7d  comment comment}
06a0: 0a 20 20 7b 43 4f 50 59 20 63 6f 70 79 7d 0a 20  .  {COPY copy}. 
06b0: 20 7b 45 58 50 4c 41 49 4e 20 65 78 70 6c 61 69   {EXPLAIN explai
06c0: 6e 7d 0a 20 20 7b 65 78 70 72 65 73 73 69 6f 6e  n}.  {expression
06d0: 20 65 78 70 72 7d 0a 20 20 7b 7b 42 45 47 49 4e   expr}.  {{BEGIN
06e0: 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72   TRANSACTION} tr
06f0: 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 7b 43  ansaction}.  {{C
0700: 4f 4d 4d 49 54 20 54 52 41 4e 53 41 43 54 49 4f  OMMIT TRANSACTIO
0710: 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a  N} transaction}.
0720: 20 20 7b 7b 45 4e 44 20 54 52 41 4e 53 41 43 54    {{END TRANSACT
0730: 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e  ION} transaction
0740: 7d 0a 20 20 7b 7b 52 4f 4c 4c 42 41 43 4b 20 54  }.  {{ROLLBACK T
0750: 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e  RANSACTION} tran
0760: 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 50 52 41 47  saction}.  {PRAG
0770: 4d 41 20 70 72 61 67 6d 61 2e 68 74 6d 6c 7d 0a  MA pragma.html}.
0780: 20 20 7b 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20    {{ON CONFLICT 
0790: 63 6c 61 75 73 65 7d 20 63 6f 6e 66 6c 69 63 74  clause} conflict
07a0: 7d 0a 20 20 7b 7b 43 52 45 41 54 45 20 56 49 45  }.  {{CREATE VIE
07b0: 57 7d 20 63 72 65 61 74 65 76 69 65 77 7d 0a 20  W} createview}. 
07c0: 20 7b 7b 44 52 4f 50 20 56 49 45 57 7d 20 64 72   {{DROP VIEW} dr
07d0: 6f 70 76 69 65 77 7d 0a 20 20 7b 7b 43 52 45 41  opview}.  {{CREA
07e0: 54 45 20 54 52 49 47 47 45 52 7d 20 63 72 65 61  TE TRIGGER} crea
07f0: 74 65 74 72 69 67 67 65 72 7d 0a 20 20 7b 7b 44  tetrigger}.  {{D
0800: 52 4f 50 20 54 52 49 47 47 45 52 7d 20 64 72 6f  ROP TRIGGER} dro
0810: 70 74 72 69 67 67 65 72 7d 0a 20 20 7b 7b 41 54  ptrigger}.  {{AT
0820: 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 61  TACH DATABASE} a
0830: 74 74 61 63 68 7d 0a 20 20 7b 7b 44 45 54 41 43  ttach}.  {{DETAC
0840: 48 20 44 41 54 41 42 41 53 45 7d 20 64 65 74 61  H DATABASE} deta
0850: 63 68 7d 0a 20 20 7b 52 45 49 4e 44 45 58 20 72  ch}.  {REINDEX r
0860: 65 69 6e 64 65 78 7d 0a 20 20 7b 7b 41 4c 54 45  eindex}.  {{ALTE
0870: 52 20 54 41 42 4c 45 7d 20 61 6c 74 65 72 74 61  R TABLE} alterta
0880: 62 6c 65 7d 0a 20 20 7b 7b 41 4e 41 4c 59 5a 45  ble}.  {{ANALYZE
0890: 7d 20 61 6e 61 6c 79 7a 65 7d 0a 7d 5d 20 7b 0a  } analyze}.}] {.
08a0: 20 20 66 6f 72 65 61 63 68 20 7b 73 5f 74 69 74    foreach {s_tit
08b0: 6c 65 20 73 5f 74 61 67 7d 20 24 73 65 63 74 69  le s_tag} $secti
08c0: 6f 6e 20 7b 7d 0a 20 20 70 75 74 73 20 22 3c 6c  on {}.  puts "<l
08d0: 69 3e 3c 61 20 68 72 65 66 3d 5c 22 5b 73 6c 69  i><a href=\"[sli
08e0: 6e 6b 20 24 73 5f 74 61 67 5d 5c 22 3e 24 73 5f  nk $s_tag]\">$s_
08f0: 74 69 74 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 22 0a  title</a></li>".
0900: 7d 0a 70 75 74 73 20 7b 3c 2f 75 6c 3e 3c 2f 70  }.puts {</ul></p
0910: 3e 0a 0a 3c 70 3e 44 65 74 61 69 6c 73 20 6f 6e  >..<p>Details on
0920: 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74   the implementat
0930: 69 6f 6e 20 6f 66 20 65 61 63 68 20 63 6f 6d 6d  ion of each comm
0940: 61 6e 64 20 61 72 65 20 70 72 6f 76 69 64 65 64  and are provided
0950: 20 69 6e 0a 74 68 65 20 73 65 71 75 65 6c 2e 3c   in.the sequel.<
0960: 2f 70 3e 0a 7d 0a 0a 70 72 6f 63 20 4f 70 65 72  /p>.}..proc Oper
0970: 61 74 6f 72 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20  ator {name} {.  
0980: 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f  return "<font co
0990: 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e  lor=\"#2c2cf0\">
09a0: 3c 62 69 67 3e 24 6e 61 6d 65 3c 2f 62 69 67 3e  <big>$name</big>
09b0: 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f 63 20  </font>".}.proc 
09c0: 4e 6f 6e 74 65 72 6d 69 6e 61 6c 20 7b 6e 61 6d  Nonterminal {nam
09d0: 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c  e} {.  return "<
09e0: 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22  i><font color=\"
09f0: 23 66 66 33 34 33 34 5c 22 3e 24 6e 61 6d 65 3c  #ff3434\">$name<
0a00: 2f 66 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d 0a 70 72  /font></i>".}.pr
0a10: 6f 63 20 4b 65 79 77 6f 72 64 20 7b 6e 61 6d 65  oc Keyword {name
0a20: 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c 66  } {.  return "<f
0a30: 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32  ont color=\"#2c2
0a40: 63 66 30 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e  cf0\">$name</fon
0a50: 74 3e 22 0a 7d 0a 70 72 6f 63 20 45 78 61 6d 70  t>".}.proc Examp
0a60: 6c 65 20 7b 74 65 78 74 7d 20 7b 0a 20 20 70 75  le {text} {.  pu
0a70: 74 73 20 22 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  ts "<blockquote>
0a80: 3c 70 72 65 3e 24 74 65 78 74 3c 2f 70 72 65 3e  <pre>$text</pre>
0a90: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 22 0a 7d  </blockquote>".}
0aa0: 0a 0a 70 72 6f 63 20 53 65 63 74 69 6f 6e 20 7b  ..proc Section {
0ab0: 6e 61 6d 65 20 6c 61 62 65 6c 7d 20 7b 0a 20 20  name label} {.  
0ac0: 67 6c 6f 62 61 6c 20 6f 75 74 70 75 74 64 69 72  global outputdir
0ad0: 0a 0a 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20  ..  if {[string 
0ae0: 6c 65 6e 67 74 68 20 24 6f 75 74 70 75 74 64 69  length $outputdi
0af0: 72 5d 21 3d 30 7d 20 7b 0a 20 20 20 20 69 66 20  r]!=0} {.    if 
0b00: 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f 20  {[llength [info 
0b10: 63 6f 6d 6d 61 6e 64 73 20 70 75 74 73 5f 73 74  commands puts_st
0b20: 61 6e 64 61 72 64 5d 5d 3e 30 7d 20 7b 0a 20 20  andard]]>0} {.  
0b30: 20 20 20 20 66 6f 6f 74 65 72 20 24 3a 3a 72 63      footer $::rc
0b40: 73 69 64 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69  sid.    }..    i
0b50: 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74  f {[string lengt
0b60: 68 20 24 6c 61 62 65 6c 5d 3e 30 7d 20 7b 0a 20  h $label]>0} {. 
0b70: 20 20 20 20 20 72 65 6e 61 6d 65 20 70 75 74 73       rename puts
0b80: 20 70 75 74 73 5f 73 74 61 6e 64 61 72 64 0a 20   puts_standard. 
0b90: 20 20 20 20 20 70 72 6f 63 20 70 75 74 73 20 7b       proc puts {
0ba0: 73 74 72 7d 20 7b 0a 20 20 20 20 20 20 20 20 72  str} {.        r
0bb0: 65 67 73 75 62 20 2d 61 6c 6c 20 7b 68 72 65 66  egsub -all {href
0bc0: 3d 22 23 28 5b 61 2d 7a 5d 2b 29 22 7d 20 24 73  ="#([a-z]+)"} $s
0bd0: 74 72 20 7b 68 72 65 66 3d 22 6c 61 6e 67 5f 5c  tr {href="lang_\
0be0: 31 2e 68 74 6d 6c 22 7d 20 73 74 72 0a 20 20 20  1.html"} str.   
0bf0: 20 20 20 20 20 70 75 74 73 5f 73 74 61 6e 64 61       puts_standa
0c00: 72 64 20 24 3a 3a 73 65 63 74 69 6f 6e 5f 66 69  rd $::section_fi
0c10: 6c 65 20 24 73 74 72 0a 20 20 20 20 20 20 7d 0a  le $str.      }.
0c20: 20 20 20 20 20 20 72 65 6e 61 6d 65 20 66 6f 6f        rename foo
0c30: 74 65 72 20 66 6f 6f 74 65 72 5f 73 74 61 6e 64  ter footer_stand
0c40: 61 72 64 0a 20 20 20 20 20 20 70 72 6f 63 20 66  ard.      proc f
0c50: 6f 6f 74 65 72 20 7b 69 64 7d 20 7b 0a 20 20 20  ooter {id} {.   
0c60: 20 20 20 20 20 66 6f 6f 74 65 72 5f 73 74 61 6e       footer_stan
0c70: 64 61 72 64 20 24 69 64 0a 20 20 20 20 20 20 20  dard $id.       
0c80: 20 72 65 6e 61 6d 65 20 66 6f 6f 74 65 72 20 22   rename footer "
0c90: 22 0a 20 20 20 20 20 20 20 20 72 65 6e 61 6d 65  ".        rename
0ca0: 20 70 75 74 73 20 22 22 0a 20 20 20 20 20 20 20   puts "".       
0cb0: 20 72 65 6e 61 6d 65 20 70 75 74 73 5f 73 74 61   rename puts_sta
0cc0: 6e 64 61 72 64 20 70 75 74 73 0a 20 20 20 20 20  ndard puts.     
0cd0: 20 20 20 72 65 6e 61 6d 65 20 66 6f 6f 74 65 72     rename footer
0ce0: 5f 73 74 61 6e 64 61 72 64 20 66 6f 6f 74 65 72  _standard footer
0cf0: 0a 20 20 20 20 20 20 7d 20 0a 20 20 20 20 20 20  .      } .      
0d00: 73 65 74 20 3a 3a 73 65 63 74 69 6f 6e 5f 66 69  set ::section_fi
0d10: 6c 65 20 5b 6f 70 65 6e 20 5b 66 69 6c 65 20 6a  le [open [file j
0d20: 6f 69 6e 20 24 6f 75 74 70 75 74 64 69 72 20 6c  oin $outputdir l
0d30: 61 6e 67 5f 24 6c 61 62 65 6c 2e 68 74 6d 6c 5d  ang_$label.html]
0d40: 20 77 5d 0a 20 20 20 20 20 20 68 65 61 64 65 72   w].      header
0d50: 20 22 51 75 65 72 79 20 4c 61 6e 67 75 61 67 65   "Query Language
0d60: 20 55 6e 64 65 72 73 74 6f 6f 64 20 62 79 20 53   Understood by S
0d70: 51 4c 69 74 65 3a 20 24 6e 61 6d 65 22 0a 20 20  QLite: $name".  
0d80: 20 20 20 20 70 75 74 73 20 22 3c 68 31 3e 53 51      puts "<h1>SQ
0d90: 4c 20 41 73 20 55 6e 64 65 72 73 74 6f 6f 64 20  L As Understood 
0da0: 42 79 20 53 51 4c 69 74 65 3c 2f 68 31 3e 22 0a  By SQLite</h1>".
0db0: 20 20 20 20 20 20 70 75 74 73 20 22 3c 61 20 68        puts "<a h
0dc0: 72 65 66 3d 5c 22 6c 61 6e 67 2e 68 74 6d 6c 5c  ref=\"lang.html\
0dd0: 22 3e 5c 5b 43 6f 6e 74 65 6e 74 73 5c 5d 3c 2f  ">\[Contents\]</
0de0: 61 3e 22 0a 20 20 20 20 20 20 70 75 74 73 20 22  a>".      puts "
0df0: 3c 68 32 3e 24 6e 61 6d 65 3c 2f 68 32 3e 22 0a  <h2>$name</h2>".
0e00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 0a 20 20        return .  
0e10: 20 20 7d 0a 20 20 7d 0a 20 20 70 75 74 73 20 22    }.  }.  puts "
0e20: 5c 6e 3c 68 72 20 2f 3e 22 0a 20 20 69 66 20 7b  \n<hr />".  if {
0e30: 24 6c 61 62 65 6c 21 3d 22 22 7d 20 7b 0a 20 20  $label!=""} {.  
0e40: 20 20 70 75 74 73 20 22 3c 61 20 6e 61 6d 65 3d    puts "<a name=
0e50: 5c 22 24 6c 61 62 65 6c 5c 22 3e 3c 2f 61 3e 22  \"$label\"></a>"
0e60: 0a 20 20 7d 0a 20 20 70 75 74 73 20 22 3c 68 31  .  }.  puts "<h1
0e70: 3e 24 6e 61 6d 65 3c 2f 68 31 3e 5c 6e 22 0a 7d  >$name</h1>\n".}
0e80: 0a 0a 53 65 63 74 69 6f 6e 20 7b 41 4c 54 45 52  ..Section {ALTER
0e90: 20 54 41 42 4c 45 7d 20 61 6c 74 65 72 74 61 62   TABLE} altertab
0ea0: 6c 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  le..Syntax {sql-
0eb0: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 41 4c 54  statement} {.ALT
0ec0: 45 52 20 54 41 42 4c 45 20 5b 3c 64 61 74 61 62  ER TABLE [<datab
0ed0: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
0ee0: 62 6c 65 2d 6e 61 6d 65 3e 20 3c 61 6c 74 65 72  ble-name> <alter
0ef0: 61 74 69 6f 6e 3e 0a 7d 20 7b 61 6c 74 65 72 61  ation>.} {altera
0f00: 74 69 6f 6e 7d 20 7b 0a 52 45 4e 41 4d 45 20 54  tion} {.RENAME T
0f10: 4f 20 3c 6e 65 77 2d 74 61 62 6c 65 2d 6e 61 6d  O <new-table-nam
0f20: 65 3e 0a 7d 20 7b 61 6c 74 65 72 61 74 69 6f 6e  e>.} {alteration
0f30: 7d 20 7b 0a 41 44 44 20 5b 43 4f 4c 55 4d 4e 5d  } {.ADD [COLUMN]
0f40: 20 3c 63 6f 6c 75 6d 6e 2d 64 65 66 3e 0a 7d 0a   <column-def>.}.
0f50: 0a 70 75 74 73 20 7b 0a 3c 70 3e 53 51 4c 69 74  .puts {.<p>SQLit
0f60: 65 27 73 20 76 65 72 73 69 6f 6e 20 6f 66 20 74  e's version of t
0f70: 68 65 20 41 4c 54 45 52 20 54 41 42 4c 45 20 63  he ALTER TABLE c
0f80: 6f 6d 6d 61 6e 64 20 61 6c 6c 6f 77 73 20 74 68  ommand allows th
0f90: 65 20 75 73 65 72 20 74 6f 20 0a 72 65 6e 61 6d  e user to .renam
0fa0: 65 20 6f 72 20 61 64 64 20 61 20 6e 65 77 20 63  e or add a new c
0fb0: 6f 6c 75 6d 6e 20 74 6f 20 61 6e 20 65 78 69 73  olumn to an exis
0fc0: 74 69 6e 67 20 74 61 62 6c 65 2e 20 49 74 20 69  ting table. It i
0fd0: 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 0a 74  s not possible.t
0fe0: 6f 20 72 65 6d 6f 76 65 20 61 20 63 6f 6c 75 6d  o remove a colum
0ff0: 6e 20 66 72 6f 6d 20 61 20 74 61 62 6c 65 2e 0a  n from a table..
1000: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 52 45 4e  </p>..<p>The REN
1010: 41 4d 45 20 54 4f 20 73 79 6e 74 61 78 20 69 73  AME TO syntax is
1020: 20 75 73 65 64 20 74 6f 20 72 65 6e 61 6d 65 20   used to rename 
1030: 74 68 65 20 74 61 62 6c 65 20 69 64 65 6e 74 69  the table identi
1040: 66 69 65 64 20 62 79 20 0a 3c 69 3e 5b 64 61 74  fied by .<i>[dat
1050: 61 62 61 73 65 2d 6e 61 6d 65 2e 5d 74 61 62 6c  abase-name.]tabl
1060: 65 2d 6e 61 6d 65 3c 2f 69 3e 20 74 6f 20 3c 69  e-name</i> to <i
1070: 3e 6e 65 77 2d 74 61 62 6c 65 2d 6e 61 6d 65 3c  >new-table-name<
1080: 2f 69 3e 2e 20 54 68 69 73 20 63 6f 6d 6d 61 6e  /i>. This comman
1090: 64 20 0a 63 61 6e 6e 6f 74 20 62 65 20 75 73 65  d .cannot be use
10a0: 64 20 74 6f 20 6d 6f 76 65 20 61 20 74 61 62 6c  d to move a tabl
10b0: 65 20 62 65 74 77 65 65 6e 20 61 74 74 61 63 68  e between attach
10c0: 65 64 20 64 61 74 61 62 61 73 65 73 2c 20 6f 6e  ed databases, on
10d0: 6c 79 20 74 6f 20 72 65 6e 61 6d 65 20 0a 61 20  ly to rename .a 
10e0: 74 61 62 6c 65 20 77 69 74 68 69 6e 20 74 68 65  table within the
10f0: 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 2e 3c   same database.<
1100: 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 74  /p>..<p>If the t
1110: 61 62 6c 65 20 62 65 69 6e 67 20 72 65 6e 61 6d  able being renam
1120: 65 64 20 68 61 73 20 74 72 69 67 67 65 72 73 20  ed has triggers 
1130: 6f 72 20 69 6e 64 69 63 65 73 2c 20 74 68 65 6e  or indices, then
1140: 20 74 68 65 73 65 20 72 65 6d 61 69 6e 0a 61 74   these remain.at
1150: 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 74 61  tached to the ta
1160: 62 6c 65 20 61 66 74 65 72 20 69 74 20 68 61 73  ble after it has
1170: 20 62 65 65 6e 20 72 65 6e 61 6d 65 64 2e 20 48   been renamed. H
1180: 6f 77 65 76 65 72 2c 20 69 66 20 74 68 65 72 65  owever, if there
1190: 20 61 72 65 0a 61 6e 79 20 76 69 65 77 20 64 65   are.any view de
11a0: 66 69 6e 69 74 69 6f 6e 73 2c 20 6f 72 20 73 74  finitions, or st
11b0: 61 74 65 6d 65 6e 74 73 20 65 78 65 63 75 74 65  atements execute
11c0: 64 20 62 79 20 74 72 69 67 67 65 72 73 20 74 68  d by triggers th
11d0: 61 74 20 72 65 66 65 72 20 74 6f 0a 74 68 65 20  at refer to.the 
11e0: 74 61 62 6c 65 20 62 65 69 6e 67 20 72 65 6e 61  table being rena
11f0: 6d 65 64 2c 20 74 68 65 73 65 20 61 72 65 20 6e  med, these are n
1200: 6f 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ot automatically
1210: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 75 73 65   modified to use
1220: 20 74 68 65 20 6e 65 77 0a 74 61 62 6c 65 20 6e   the new.table n
1230: 61 6d 65 2e 20 49 66 20 74 68 69 73 20 69 73 20  ame. If this is 
1240: 72 65 71 75 69 72 65 64 2c 20 74 68 65 20 74 72  required, the tr
1250: 69 67 67 65 72 73 20 6f 72 20 76 69 65 77 20 64  iggers or view d
1260: 65 66 69 6e 69 74 69 6f 6e 73 20 6d 75 73 74 20  efinitions must 
1270: 62 65 0a 64 72 6f 70 70 65 64 20 61 6e 64 20 72  be.dropped and r
1280: 65 63 72 65 61 74 65 64 20 74 6f 20 75 73 65 20  ecreated to use 
1290: 74 68 65 20 6e 65 77 20 74 61 62 6c 65 20 6e 61  the new table na
12a0: 6d 65 20 62 79 20 68 61 6e 64 2e 0a 3c 2f 70 3e  me by hand..</p>
12b0: 0a 0a 3c 70 3e 54 68 65 20 41 44 44 20 5b 43 4f  ..<p>The ADD [CO
12c0: 4c 55 4d 4e 5d 20 73 79 6e 74 61 78 20 69 73 20  LUMN] syntax is 
12d0: 75 73 65 64 20 74 6f 20 61 64 64 20 61 20 6e 65  used to add a ne
12e0: 77 20 63 6f 6c 75 6d 6e 20 74 6f 20 61 6e 20 65  w column to an e
12f0: 78 69 73 74 69 6e 67 20 74 61 62 6c 65 2e 0a 54  xisting table..T
1300: 68 65 20 6e 65 77 20 63 6f 6c 75 6d 6e 20 69 73  he new column is
1310: 20 61 6c 77 61 79 73 20 61 70 70 65 6e 64 65 64   always appended
1320: 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74   to the end of t
1330: 68 65 20 6c 69 73 74 20 6f 66 20 65 78 69 73 74  he list of exist
1340: 69 6e 67 20 63 6f 6c 75 6d 6e 73 2e 0a 3c 69 3e  ing columns..<i>
1350: 43 6f 6c 75 6d 6e 2d 64 65 66 3c 2f 69 3e 20 6d  Column-def</i> m
1360: 61 79 20 74 61 6b 65 20 61 6e 79 20 6f 66 20 74  ay take any of t
1370: 68 65 20 66 6f 72 6d 73 20 70 65 72 6d 69 73 73  he forms permiss
1380: 61 62 6c 65 20 69 6e 20 61 20 43 52 45 41 54 45  able in a CREATE
1390: 20 54 41 42 4c 45 20 0a 73 74 61 74 65 6d 65 6e   TABLE .statemen
13a0: 74 2c 20 77 69 74 68 20 74 68 65 20 66 6f 6c 6c  t, with the foll
13b0: 6f 77 69 6e 67 20 72 65 73 74 72 69 63 74 69 6f  owing restrictio
13c0: 6e 73 3a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 54 68 65  ns:.<ul>.<li>The
13d0: 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74 20   column may not 
13e0: 68 61 76 65 20 61 20 50 52 49 4d 41 52 59 20 4b  have a PRIMARY K
13f0: 45 59 20 6f 72 20 55 4e 49 51 55 45 20 63 6f 6e  EY or UNIQUE con
1400: 73 74 72 61 69 6e 74 2e 3c 2f 6c 69 3e 0a 3c 6c  straint.</li>.<l
1410: 69 3e 54 68 65 20 63 6f 6c 75 6d 6e 20 6d 61 79  i>The column may
1420: 20 6e 6f 74 20 68 61 76 65 20 61 20 64 65 66 61   not have a defa
1430: 75 6c 74 20 76 61 6c 75 65 20 6f 66 20 43 55 52  ult value of CUR
1440: 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45  RENT_TIME, CURRE
1450: 4e 54 5f 44 41 54 45 20 0a 20 20 20 20 6f 72 20  NT_DATE .    or 
1460: 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d  CURRENT_TIMESTAM
1470: 50 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 49 66 20 61  P.</li>.<li>If a
1480: 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74 72   NOT NULL constr
1490: 61 69 6e 74 20 69 73 20 73 70 65 63 69 66 69 65  aint is specifie
14a0: 64 2c 20 74 68 65 6e 20 74 68 65 20 63 6f 6c 75  d, then the colu
14b0: 6d 6e 20 6d 75 73 74 20 68 61 76 65 20 61 0a 20  mn must have a. 
14c0: 20 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65     default value
14d0: 20 6f 74 68 65 72 20 74 68 61 6e 20 4e 55 4c 4c   other than NULL
14e0: 2e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 54 68 65 20  ..</ul>..<p>The 
14f0: 65 78 65 63 75 74 69 6f 6e 20 74 69 6d 65 20 6f  execution time o
1500: 66 20 74 68 65 20 41 4c 54 45 52 20 54 41 42 4c  f the ALTER TABL
1510: 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 69 6e 64  E command is ind
1520: 65 70 65 6e 64 65 6e 74 20 6f 66 0a 74 68 65 20  ependent of.the 
1530: 61 6d 6f 75 6e 74 20 6f 66 20 64 61 74 61 20 69  amount of data i
1540: 6e 20 74 68 65 20 74 61 62 6c 65 2e 20 20 54 68  n the table.  Th
1550: 65 20 41 4c 54 45 52 20 54 41 42 4c 45 20 63 6f  e ALTER TABLE co
1560: 6d 6d 61 6e 64 20 72 75 6e 73 20 61 73 20 71 75  mmand runs as qu
1570: 69 63 6b 6c 79 0a 6f 6e 20 61 20 74 61 62 6c 65  ickly.on a table
1580: 20 77 69 74 68 20 31 30 20 6d 69 6c 6c 69 6f 6e   with 10 million
1590: 20 72 6f 77 73 20 61 73 20 69 74 20 64 6f 65 73   rows as it does
15a0: 20 6f 6e 20 61 20 74 61 62 6c 65 20 77 69 74 68   on a table with
15b0: 20 31 20 72 6f 77 2e 0a 3c 2f 70 3e 0a 0a 3c 70   1 row..</p>..<p
15c0: 3e 41 66 74 65 72 20 41 44 44 20 43 4f 4c 55 4d  >After ADD COLUM
15d0: 4e 20 68 61 73 20 62 65 65 6e 20 72 75 6e 20 6f  N has been run o
15e0: 6e 20 61 20 64 61 74 61 62 61 73 65 2c 20 74 68  n a database, th
15f0: 61 74 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c  at database will
1600: 20 6e 6f 74 0a 62 65 20 72 65 61 64 61 62 6c 65   not.be readable
1610: 20 62 79 20 53 51 4c 69 74 65 20 76 65 72 73 69   by SQLite versi
1620: 6f 6e 20 33 2e 31 2e 33 20 61 6e 64 20 65 61 72  on 3.1.3 and ear
1630: 6c 69 65 72 20 75 6e 74 69 6c 20 74 68 65 20 64  lier until the d
1640: 61 74 61 62 61 73 65 0a 69 73 20 3c 61 20 68 72  atabase.is <a hr
1650: 65 66 3d 22 6c 61 6e 67 5f 76 61 63 75 75 6d 2e  ef="lang_vacuum.
1660: 68 74 6d 6c 22 3e 56 41 43 55 55 4d 3c 2f 61 3e  html">VACUUM</a>
1670: 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69  ed.</p>.}..Secti
1680: 6f 6e 20 7b 41 4e 41 4c 59 5a 45 7d 20 61 6e 61  on {ANALYZE} ana
1690: 6c 79 7a 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71  lyze..Syntax {sq
16a0: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 20  l-statement} {. 
16b0: 20 41 4e 41 4c 59 5a 45 0a 7d 0a 53 79 6e 74 61   ANALYZE.}.Synta
16c0: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
16d0: 7d 20 7b 0a 20 20 41 4e 41 4c 59 5a 45 20 3c 64  } {.  ANALYZE <d
16e0: 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 0a 7d 0a  atabase-name>.}.
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 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  ZE [<database-na
1720: 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61  me> .] <table-na
1730: 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  me>.}..puts {.<p
1740: 3e 54 68 65 20 41 4e 41 4c 59 5a 45 20 63 6f 6d  >The ANALYZE com
1750: 6d 61 6e 64 20 67 61 74 68 65 72 73 20 73 74 61  mand gathers sta
1760: 74 69 73 74 69 63 73 20 61 62 6f 75 74 20 69 6e  tistics about in
1770: 64 69 63 65 73 20 61 6e 64 20 73 74 6f 72 65 73  dices and stores
1780: 20 74 68 65 6d 0a 69 6e 20 61 20 73 70 65 63 69   them.in a speci
1790: 61 6c 20 74 61 62 6c 65 73 20 69 6e 20 74 68 65  al tables in the
17a0: 20 64 61 74 61 62 61 73 65 20 77 68 65 72 65 20   database where 
17b0: 74 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69  the query optimi
17c0: 7a 65 72 20 63 61 6e 20 75 73 65 0a 74 68 65 6d  zer can use.them
17d0: 20 74 6f 20 68 65 6c 70 20 6d 61 6b 65 20 62 65   to help make be
17e0: 74 74 65 72 20 69 6e 64 65 78 20 63 68 6f 69 63  tter index choic
17f0: 65 73 2e 0a 49 66 20 6e 6f 20 61 72 67 75 6d 65  es..If no argume
1800: 6e 74 73 20 61 72 65 20 67 69 76 65 6e 2c 20 61  nts are given, a
1810: 6c 6c 20 69 6e 64 69 63 65 73 20 69 6e 20 61 6c  ll indices in al
1820: 6c 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  l attached datab
1830: 61 73 65 73 20 61 72 65 0a 61 6e 61 6c 79 7a 65  ases are.analyze
1840: 64 2e 20 20 49 66 20 61 20 64 61 74 61 62 61 73  d.  If a databas
1850: 65 20 6e 61 6d 65 20 69 73 20 67 69 76 65 6e 20  e name is given 
1860: 61 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74 2c  as the argument,
1870: 20 61 6c 6c 20 69 6e 64 69 63 65 73 0a 69 6e 20   all indices.in 
1880: 74 68 61 74 20 6f 6e 65 20 64 61 74 61 62 61 73  that one databas
1890: 65 20 61 72 65 20 61 6e 61 6c 79 7a 65 64 2e 20  e are analyzed. 
18a0: 20 49 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74   If the argument
18b0: 20 69 73 20 61 20 74 61 62 6c 65 20 6e 61 6d 65   is a table name
18c0: 2c 0a 74 68 65 6e 20 6f 6e 6c 79 20 69 6e 64 69  ,.then only indi
18d0: 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ces associated w
18e0: 69 74 68 20 74 68 61 74 20 6f 6e 65 20 74 61 62  ith that one tab
18f0: 6c 65 20 61 72 65 20 61 6e 61 6c 79 7a 65 64 2e  le are analyzed.
1900: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 69 6e 69  </p>..<p>The ini
1910: 74 69 61 6c 20 69 6d 70 6c 65 6d 65 6e 74 61 74  tial implementat
1920: 69 6f 6e 20 73 74 6f 72 65 73 20 61 6c 6c 20 73  ion stores all s
1930: 74 61 74 69 73 74 69 63 73 20 69 6e 20 61 20 73  tatistics in a s
1940: 69 6e 67 6c 65 0a 74 61 62 6c 65 20 6e 61 6d 65  ingle.table name
1950: 64 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74  d <b>sqlite_stat
1960: 31 3c 2f 62 3e 2e 20 20 46 75 74 75 72 65 20 65  1</b>.  Future e
1970: 6e 68 61 6e 63 65 6d 65 6e 74 73 20 6d 61 79 20  nhancements may 
1980: 63 72 65 61 74 65 0a 61 64 64 69 74 69 6f 6e 61  create.additiona
1990: 6c 20 74 61 62 6c 65 73 20 77 69 74 68 20 74 68  l tables with th
19a0: 65 20 73 61 6d 65 20 6e 61 6d 65 20 70 61 74 74  e same name patt
19b0: 65 72 6e 20 65 78 63 65 70 74 20 77 69 74 68 20  ern except with 
19c0: 74 68 65 20 22 31 22 0a 63 68 61 6e 67 65 64 20  the "1".changed 
19d0: 74 6f 20 61 20 64 69 66 66 65 72 65 6e 74 20 64  to a different d
19e0: 69 67 69 74 2e 20 20 54 68 65 20 3c 62 3e 73 71  igit.  The <b>sq
19f0: 6c 69 74 65 5f 73 74 61 74 31 3c 2f 62 3e 20 74  lite_stat1</b> t
1a00: 61 62 6c 65 20 63 61 6e 6e 6f 74 0a 62 65 20 44  able cannot.be D
1a10: 52 4f 50 70 65 64 2c 20 62 75 74 20 69 74 20 61  ROPped, but it a
1a20: 6c 6c 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 63  ll the content c
1a30: 61 6e 20 62 65 20 44 45 4c 45 54 45 64 20 77 68  an be DELETEd wh
1a40: 69 63 68 20 61 73 20 74 68 65 0a 73 61 6d 65 20  ich as the.same 
1a50: 65 66 66 65 63 74 2e 3c 2f 70 3e 0a 7d 0a 0a 53  effect.</p>.}..S
1a60: 65 63 74 69 6f 6e 20 7b 41 54 54 41 43 48 20 44  ection {ATTACH D
1a70: 41 54 41 42 41 53 45 7d 20 61 74 74 61 63 68 0a  ATABASE} attach.
1a80: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
1a90: 74 65 6d 65 6e 74 7d 20 7b 0a 41 54 54 41 43 48  tement} {.ATTACH
1aa0: 20 5b 44 41 54 41 42 41 53 45 5d 20 3c 64 61 74   [DATABASE] <dat
1ab0: 61 62 61 73 65 2d 66 69 6c 65 6e 61 6d 65 3e 20  abase-filename> 
1ac0: 41 53 20 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d  AS <database-nam
1ad0: 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  e>.}..puts {.<p>
1ae0: 54 68 65 20 41 54 54 41 43 48 20 44 41 54 41 42  The ATTACH DATAB
1af0: 41 53 45 20 73 74 61 74 65 6d 65 6e 74 20 61 64  ASE statement ad
1b00: 64 73 20 61 20 70 72 65 65 78 69 73 74 69 6e 67  ds a preexisting
1b10: 20 64 61 74 61 62 61 73 65 20 0a 66 69 6c 65 20   database .file 
1b20: 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 64  to the current d
1b30: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
1b40: 6f 6e 2e 20 20 49 66 20 74 68 65 20 66 69 6c 65  on.  If the file
1b50: 6e 61 6d 65 20 63 6f 6e 74 61 69 6e 73 20 0a 70  name contains .p
1b60: 75 6e 63 74 75 61 74 69 6f 6e 20 63 68 61 72 61  unctuation chara
1b70: 63 74 65 72 73 20 69 74 20 6d 75 73 74 20 62 65  cters it must be
1b80: 20 71 75 6f 74 65 64 2e 20 20 54 68 65 20 6e 61   quoted.  The na
1b90: 6d 65 73 20 27 6d 61 69 6e 27 20 61 6e 64 20 0a  mes 'main' and .
1ba0: 27 74 65 6d 70 27 20 72 65 66 65 72 20 74 6f 20  'temp' refer to 
1bb0: 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73  the main databas
1bc0: 65 20 61 6e 64 20 74 68 65 20 64 61 74 61 62 61  e and the databa
1bd0: 73 65 20 75 73 65 64 20 66 6f 72 20 0a 74 65 6d  se used for .tem
1be0: 70 6f 72 61 72 79 20 74 61 62 6c 65 73 2e 20 20  porary tables.  
1bf0: 54 68 65 73 65 20 63 61 6e 6e 6f 74 20 62 65 20  These cannot be 
1c00: 64 65 74 61 63 68 65 64 2e 20 20 41 74 74 61 63  detached.  Attac
1c10: 68 65 64 20 64 61 74 61 62 61 73 65 73 20 0a 61  hed databases .a
1c20: 72 65 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67  re removed using
1c30: 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 64   the <a href="#d
1c40: 65 74 61 63 68 22 3e 44 45 54 41 43 48 20 44 41  etach">DETACH DA
1c50: 54 41 42 41 53 45 3c 2f 61 3e 20 0a 73 74 61 74  TABASE</a> .stat
1c60: 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59  ement.</p>..<p>Y
1c70: 6f 75 20 63 61 6e 20 72 65 61 64 20 66 72 6f 6d  ou can read from
1c80: 20 61 6e 64 20 77 72 69 74 65 20 74 6f 20 61 6e   and write to an
1c90: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
1ca0: 73 65 20 61 6e 64 20 79 6f 75 0a 63 61 6e 20 6d  se and you.can m
1cb0: 6f 64 69 66 79 20 74 68 65 20 73 63 68 65 6d 61  odify the schema
1cc0: 20 6f 66 20 74 68 65 20 61 74 74 61 63 68 65 64   of the attached
1cd0: 20 64 61 74 61 62 61 73 65 2e 20 20 54 68 69 73   database.  This
1ce0: 20 69 73 20 61 20 6e 65 77 0a 66 65 61 74 75 72   is a new.featur
1cf0: 65 20 6f 66 20 53 51 4c 69 74 65 20 76 65 72 73  e of SQLite vers
1d00: 69 6f 6e 20 33 2e 30 2e 20 20 49 6e 20 53 51 4c  ion 3.0.  In SQL
1d10: 69 74 65 20 32 2e 38 2c 20 73 63 68 65 6d 61 20  ite 2.8, schema 
1d20: 63 68 61 6e 67 65 73 0a 74 6f 20 61 74 74 61 63  changes.to attac
1d30: 68 65 64 20 64 61 74 61 62 61 73 65 73 20 77 65  hed databases we
1d40: 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e 3c  re not allowed.<
1d50: 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63 61 6e 6e  /p>..<p>You cann
1d60: 6f 74 20 63 72 65 61 74 65 20 61 20 6e 65 77 20  ot create a new 
1d70: 74 61 62 6c 65 20 77 69 74 68 20 74 68 65 20 73  table with the s
1d80: 61 6d 65 20 6e 61 6d 65 20 61 73 20 61 20 74 61  ame name as a ta
1d90: 62 6c 65 20 69 6e 20 0a 61 6e 20 61 74 74 61 63  ble in .an attac
1da0: 68 65 64 20 64 61 74 61 62 61 73 65 2c 20 62 75  hed database, bu
1db0: 74 20 79 6f 75 20 63 61 6e 20 61 74 74 61 63 68  t you can attach
1dc0: 20 61 20 64 61 74 61 62 61 73 65 20 77 68 69 63   a database whic
1dd0: 68 20 63 6f 6e 74 61 69 6e 73 0a 74 61 62 6c 65  h contains.table
1de0: 73 20 77 68 6f 73 65 20 6e 61 6d 65 73 20 61 72  s whose names ar
1df0: 65 20 64 75 70 6c 69 63 61 74 65 73 20 6f 66 20  e duplicates of 
1e00: 74 61 62 6c 65 73 20 69 6e 20 74 68 65 20 6d 61  tables in the ma
1e10: 69 6e 20 64 61 74 61 62 61 73 65 2e 20 20 49 74  in database.  It
1e20: 20 69 73 20 0a 61 6c 73 6f 20 70 65 72 6d 69 73   is .also permis
1e30: 73 69 62 6c 65 20 74 6f 20 61 74 74 61 63 68 20  sible to attach 
1e40: 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73  the same databas
1e50: 65 20 66 69 6c 65 20 6d 75 6c 74 69 70 6c 65 20  e file multiple 
1e60: 74 69 6d 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  times.</p>..<p>T
1e70: 61 62 6c 65 73 20 69 6e 20 61 6e 20 61 74 74 61  ables in an atta
1e80: 63 68 65 64 20 64 61 74 61 62 61 73 65 20 63 61  ched database ca
1e90: 6e 20 62 65 20 72 65 66 65 72 72 65 64 20 74 6f  n be referred to
1ea0: 20 75 73 69 6e 67 20 74 68 65 20 73 79 6e 74 61   using the synta
1eb0: 78 20 0a 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e  x .<i>database-n
1ec0: 61 6d 65 2e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f  ame.table-name</
1ed0: 69 3e 2e 20 20 49 66 20 61 6e 20 61 74 74 61 63  i>.  If an attac
1ee0: 68 65 64 20 74 61 62 6c 65 20 64 6f 65 73 6e 27  hed table doesn'
1ef0: 74 20 68 61 76 65 20 0a 61 20 64 75 70 6c 69 63  t have .a duplic
1f00: 61 74 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 69  ate table name i
1f10: 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  n the main datab
1f20: 61 73 65 2c 20 69 74 20 64 6f 65 73 6e 27 74 20  ase, it doesn't 
1f30: 72 65 71 75 69 72 65 20 61 20 0a 64 61 74 61 62  require a .datab
1f40: 61 73 65 20 6e 61 6d 65 20 70 72 65 66 69 78 2e  ase name prefix.
1f50: 20 20 57 68 65 6e 20 61 20 64 61 74 61 62 61 73    When a databas
1f60: 65 20 69 73 20 61 74 74 61 63 68 65 64 2c 20 61  e is attached, a
1f70: 6c 6c 20 6f 66 20 69 74 73 20 0a 74 61 62 6c 65  ll of its .table
1f80: 73 20 77 68 69 63 68 20 64 6f 6e 27 74 20 68 61  s which don't ha
1f90: 76 65 20 64 75 70 6c 69 63 61 74 65 20 6e 61 6d  ve duplicate nam
1fa0: 65 73 20 62 65 63 6f 6d 65 20 74 68 65 20 27 64  es become the 'd
1fb0: 65 66 61 75 6c 74 27 20 74 61 62 6c 65 0a 6f 66  efault' table.of
1fc0: 20 74 68 61 74 20 6e 61 6d 65 2e 20 20 41 6e 79   that name.  Any
1fd0: 20 74 61 62 6c 65 73 20 6f 66 20 74 68 61 74 20   tables of that 
1fe0: 6e 61 6d 65 20 61 74 74 61 63 68 65 64 20 61 66  name attached af
1ff0: 74 65 72 77 61 72 64 73 20 72 65 71 75 69 72 65  terwards require
2000: 20 74 68 65 20 74 61 62 6c 65 20 0a 70 72 65 66   the table .pref
2010: 69 78 2e 20 49 66 20 74 68 65 20 27 64 65 66 61  ix. If the 'defa
2020: 75 6c 74 27 20 74 61 62 6c 65 20 6f 66 20 61 20  ult' table of a 
2030: 67 69 76 65 6e 20 6e 61 6d 65 20 69 73 20 64 65  given name is de
2040: 74 61 63 68 65 64 2c 20 74 68 65 6e 20 0a 74 68  tached, then .th
2050: 65 20 6c 61 73 74 20 74 61 62 6c 65 20 6f 66 20  e last table of 
2060: 74 68 61 74 20 6e 61 6d 65 20 61 74 74 61 63 68  that name attach
2070: 65 64 20 62 65 63 6f 6d 65 73 20 74 68 65 20 6e  ed becomes the n
2080: 65 77 20 64 65 66 61 75 6c 74 2e 3c 2f 70 3e 0a  ew default.</p>.
2090: 0a 3c 70 3e 0a 54 72 61 6e 73 61 63 74 69 6f 6e  .<p>.Transaction
20a0: 73 20 69 6e 76 6f 6c 76 69 6e 67 20 6d 75 6c 74  s involving mult
20b0: 69 70 6c 65 20 61 74 74 61 63 68 65 64 20 64 61  iple attached da
20c0: 74 61 62 61 73 65 73 20 61 72 65 20 61 74 6f 6d  tabases are atom
20d0: 69 63 2c 0a 61 73 73 75 6d 69 6e 67 20 74 68 61  ic,.assuming tha
20e0: 74 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  t the main datab
20f0: 61 73 65 20 69 73 20 6e 6f 74 20 22 3a 6d 65 6d  ase is not ":mem
2100: 6f 72 79 3a 22 2e 20 20 49 66 20 74 68 65 20 6d  ory:".  If the m
2110: 61 69 6e 0a 64 61 74 61 62 61 73 65 20 69 73 20  ain.database is 
2120: 22 3a 6d 65 6d 6f 72 79 3a 22 20 74 68 65 6e 20  ":memory:" then 
2130: 0a 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 63 6f  .transactions co
2140: 6e 74 69 6e 75 65 20 74 6f 20 62 65 20 61 74 6f  ntinue to be ato
2150: 6d 69 63 20 77 69 74 68 69 6e 20 65 61 63 68 20  mic within each 
2160: 69 6e 64 69 76 69 64 75 61 6c 0a 64 61 74 61 62  individual.datab
2170: 61 73 65 20 66 69 6c 65 2e 20 42 75 74 20 69 66  ase file. But if
2180: 20 74 68 65 20 68 6f 73 74 20 63 6f 6d 70 75 74   the host comput
2190: 65 72 20 63 72 61 73 68 65 73 20 69 6e 20 74 68  er crashes in th
21a0: 65 20 6d 69 64 64 6c 65 0a 6f 66 20 61 20 43 4f  e middle.of a CO
21b0: 4d 4d 49 54 20 77 68 65 72 65 20 74 77 6f 20 6f  MMIT where two o
21c0: 72 20 6d 6f 72 65 20 64 61 74 61 62 61 73 65 20  r more database 
21d0: 66 69 6c 65 73 20 61 72 65 20 75 70 64 61 74 65  files are update
21e0: 64 2c 0a 73 6f 6d 65 20 6f 66 20 74 68 6f 73 65  d,.some of those
21f0: 20 66 69 6c 65 73 20 6d 69 67 68 74 20 67 65 74   files might get
2200: 20 74 68 65 20 63 68 61 6e 67 65 73 20 77 68 65   the changes whe
2210: 72 65 20 6f 74 68 65 72 73 0a 6d 69 67 68 74 20  re others.might 
2220: 6e 6f 74 2e 0a 41 74 6f 6d 69 63 20 63 6f 6d 6d  not..Atomic comm
2230: 69 74 20 6f 66 20 61 74 74 61 63 68 65 64 20 64  it of attached d
2240: 61 74 61 62 61 73 65 73 20 69 73 20 61 20 6e 65  atabases is a ne
2250: 77 20 66 65 61 74 75 72 65 20 6f 66 20 53 51 4c  w feature of SQL
2260: 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 30 2e  ite version 3.0.
2270: 0a 49 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69  .In SQLite versi
2280: 6f 6e 20 32 2e 38 2c 20 61 6c 6c 20 63 6f 6d 6d  on 2.8, all comm
2290: 69 74 73 20 74 6f 20 61 74 74 61 63 68 65 64 20  its to attached 
22a0: 64 61 74 61 62 61 73 65 73 20 62 65 68 61 76 65  databases behave
22b0: 64 20 61 73 20 69 66 0a 74 68 65 20 6d 61 69 6e  d as if.the main
22c0: 20 64 61 74 61 62 61 73 65 20 77 65 72 65 20 22   database were "
22d0: 3a 6d 65 6d 6f 72 79 3a 22 2e 0a 3c 2f 70 3e 0a  :memory:"..</p>.
22e0: 0a 3c 70 3e 54 68 65 72 65 20 69 73 20 61 20 63  .<p>There is a c
22f0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6c 69 6d 69  ompile-time limi
2300: 74 20 6f 66 20 31 30 20 61 74 74 61 63 68 65 64  t of 10 attached
2310: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 2e   database files.
2320: 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  </p>.}...Section
2330: 20 7b 42 45 47 49 4e 20 54 52 41 4e 53 41 43 54   {BEGIN TRANSACT
2340: 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e  ION} transaction
2350: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
2360: 61 74 65 6d 65 6e 74 7d 20 7b 0a 42 45 47 49 4e  atement} {.BEGIN
2370: 20 5b 20 44 45 46 45 52 52 45 44 20 7c 20 49 4d   [ DEFERRED | IM
2380: 4d 45 44 49 41 54 45 20 7c 20 45 58 43 4c 55 53  MEDIATE | EXCLUS
2390: 49 56 45 20 5d 20 5b 54 52 41 4e 53 41 43 54 49  IVE ] [TRANSACTI
23a0: 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53  ON [<name>]].}.S
23b0: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
23c0: 6d 65 6e 74 7d 20 7b 0a 45 4e 44 20 5b 54 52 41  ment} {.END [TRA
23d0: 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e  NSACTION [<name>
23e0: 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ]].}.Syntax {sql
23f0: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43 4f  -statement} {.CO
2400: 4d 4d 49 54 20 5b 54 52 41 4e 53 41 43 54 49 4f  MMIT [TRANSACTIO
2410: 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53 79  N [<name>]].}.Sy
2420: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
2430: 65 6e 74 7d 20 7b 0a 52 4f 4c 4c 42 41 43 4b 20  ent} {.ROLLBACK 
2440: 5b 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e  [TRANSACTION [<n
2450: 61 6d 65 3e 5d 5d 0a 7d 0a 0a 70 75 74 73 20 7b  ame>]].}..puts {
2460: 0a 3c 70 3e 42 65 67 69 6e 6e 69 6e 67 20 69 6e  .<p>Beginning in
2470: 20 76 65 72 73 69 6f 6e 20 32 2e 30 2c 20 53 51   version 2.0, SQ
2480: 4c 69 74 65 20 73 75 70 70 6f 72 74 73 20 74 72  Lite supports tr
2490: 61 6e 73 61 63 74 69 6f 6e 73 20 77 69 74 68 0a  ansactions with.
24a0: 72 6f 6c 6c 62 61 63 6b 20 61 6e 64 20 61 74 6f  rollback and ato
24b0: 6d 69 63 20 63 6f 6d 6d 69 74 2e 3c 2f 70 3e 0a  mic commit.</p>.
24c0: 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c  .<p>The optional
24d0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 6e 61 6d   transaction nam
24e0: 65 20 69 73 20 69 67 6e 6f 72 65 64 2e 20 53 51  e is ignored. SQ
24f0: 4c 69 74 65 20 63 75 72 72 65 6e 74 6c 79 20 0a  Lite currently .
2500: 64 6f 65 73 20 6e 6f 74 20 61 6c 6c 6f 77 20 6e  does not allow n
2510: 65 73 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f  ested transactio
2520: 6e 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 4e 6f 20  ns.</p>..<p>.No 
2530: 63 68 61 6e 67 65 73 20 63 61 6e 20 62 65 20 6d  changes can be m
2540: 61 64 65 20 74 6f 20 74 68 65 20 64 61 74 61 62  ade to the datab
2550: 61 73 65 20 65 78 63 65 70 74 20 77 69 74 68 69  ase except withi
2560: 6e 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e  n a transaction.
2570: 0a 41 6e 79 20 63 6f 6d 6d 61 6e 64 20 74 68 61  .Any command tha
2580: 74 20 63 68 61 6e 67 65 73 20 74 68 65 20 64 61  t changes the da
2590: 74 61 62 61 73 65 20 28 62 61 73 69 63 61 6c 6c  tabase (basicall
25a0: 79 2c 20 61 6e 79 20 53 51 4c 20 63 6f 6d 6d 61  y, any SQL comma
25b0: 6e 64 0a 6f 74 68 65 72 20 74 68 61 6e 20 53 45  nd.other than SE
25c0: 4c 45 43 54 29 20 77 69 6c 6c 20 61 75 74 6f 6d  LECT) will autom
25d0: 61 74 69 63 61 6c 6c 79 20 73 74 61 72 74 20 61  atically start a
25e0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 66 0a   transaction if.
25f0: 6f 6e 65 20 69 73 20 6e 6f 74 20 61 6c 72 65 61  one is not alrea
2600: 64 79 20 69 6e 20 65 66 66 65 63 74 2e 20 20 41  dy in effect.  A
2610: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 74 61  utomatically sta
2620: 72 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  rted transaction
2630: 73 0a 61 72 65 20 63 6f 6d 6d 69 74 74 65 64 20  s.are committed 
2640: 61 74 20 74 68 65 20 63 6f 6e 63 6c 75 73 69 6f  at the conclusio
2650: 6e 20 6f 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64  n of the command
2660: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e  ..</p>..<p>.Tran
2670: 73 61 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20  sactions can be 
2680: 73 74 61 72 74 65 64 20 6d 61 6e 75 61 6c 6c 79  started manually
2690: 20 75 73 69 6e 67 20 74 68 65 20 42 45 47 49 4e   using the BEGIN
26a0: 0a 63 6f 6d 6d 61 6e 64 2e 20 20 53 75 63 68 20  .command.  Such 
26b0: 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 75 73 75  transactions usu
26c0: 61 6c 6c 79 20 70 65 72 73 69 73 74 20 75 6e 74  ally persist unt
26d0: 69 6c 20 74 68 65 20 6e 65 78 74 0a 43 4f 4d 4d  il the next.COMM
26e0: 49 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 20 63  IT or ROLLBACK c
26f0: 6f 6d 6d 61 6e 64 2e 20 20 42 75 74 20 61 20 74  ommand.  But a t
2700: 72 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c 20  ransaction will 
2710: 61 6c 73 6f 20 0a 52 4f 4c 4c 42 41 43 4b 20 69  also .ROLLBACK i
2720: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  f the database i
2730: 73 20 63 6c 6f 73 65 64 20 6f 72 20 69 66 20 61  s closed or if a
2740: 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 0a 61  n error occurs.a
2750: 6e 64 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20  nd the ROLLBACK 
2760: 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74  conflict resolut
2770: 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 69 73  ion algorithm is
2780: 20 73 70 65 63 69 66 69 65 64 2e 0a 53 65 65 20   specified..See 
2790: 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  the documentatio
27a0: 6e 20 6f 6e 20 74 68 65 20 3c 61 20 68 72 65 66  n on the <a href
27b0: 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20  ="#conflict">ON 
27c0: 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 0a 63 6c 61  CONFLICT</a>.cla
27d0: 75 73 65 20 66 6f 72 20 61 64 64 69 74 69 6f 6e  use for addition
27e0: 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61  al information a
27f0: 62 6f 75 74 20 74 68 65 20 52 4f 4c 4c 42 41 43  bout the ROLLBAC
2800: 4b 0a 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  K.conflict resol
2810: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2e  ution algorithm.
2820: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 49 6e 20 53 51  .</p>..<p>.In SQ
2830: 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 30  Lite version 3.0
2840: 2e 38 20 61 6e 64 20 6c 61 74 65 72 2c 20 74 72  .8 and later, tr
2850: 61 6e 73 61 63 74 69 6f 6e 73 20 63 61 6e 20 62  ansactions can b
2860: 65 20 64 65 66 65 72 72 65 64 2c 0a 69 6d 6d 65  e deferred,.imme
2870: 64 69 61 74 65 2c 20 6f 72 20 65 78 63 6c 75 73  diate, or exclus
2880: 69 76 65 2e 20 20 44 65 66 65 72 72 65 64 20 6d  ive.  Deferred m
2890: 65 61 6e 73 20 74 68 61 74 20 6e 6f 20 6c 6f 63  eans that no loc
28a0: 6b 73 20 61 72 65 20 61 63 71 75 69 72 65 64 0a  ks are acquired.
28b0: 6f 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  on the database 
28c0: 75 6e 74 69 6c 20 74 68 65 20 64 61 74 61 62 61  until the databa
28d0: 73 65 20 69 73 20 66 69 72 73 74 20 61 63 63 65  se is first acce
28e0: 73 73 65 64 2e 20 20 54 68 75 73 20 77 69 74 68  ssed.  Thus with
28f0: 20 61 0a 64 65 66 65 72 72 65 64 20 74 72 61 6e   a.deferred tran
2900: 73 61 63 74 69 6f 6e 2c 20 74 68 65 20 42 45 47  saction, the BEG
2910: 49 4e 20 73 74 61 74 65 6d 65 6e 74 20 69 74 73  IN statement its
2920: 65 6c 66 20 64 6f 65 73 20 6e 6f 74 68 69 6e 67  elf does nothing
2930: 2e 20 20 4c 6f 63 6b 73 0a 61 72 65 20 6e 6f 74  .  Locks.are not
2940: 20 61 63 71 75 69 72 65 64 20 75 6e 74 69 6c 20   acquired until 
2950: 74 68 65 20 66 69 72 73 74 20 72 65 61 64 20 6f  the first read o
2960: 72 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f  r write operatio
2970: 6e 2e 20 20 54 68 65 20 66 69 72 73 74 20 72 65  n.  The first re
2980: 61 64 0a 6f 70 65 72 61 74 69 6f 6e 20 61 67 61  ad.operation aga
2990: 69 6e 73 74 20 61 20 64 61 74 61 62 61 73 65 20  inst a database 
29a0: 63 72 65 61 74 65 73 20 61 20 53 48 41 52 45 44  creates a SHARED
29b0: 20 6c 6f 63 6b 20 61 6e 64 20 74 68 65 20 66 69   lock and the fi
29c0: 72 73 74 0a 77 72 69 74 65 20 6f 70 65 72 61 74  rst.write operat
29d0: 69 6f 6e 20 63 72 65 61 74 65 73 20 61 20 52 45  ion creates a RE
29e0: 53 45 52 56 45 44 20 6c 6f 63 6b 2e 20 20 20 42  SERVED lock.   B
29f0: 65 63 61 75 73 65 20 74 68 65 20 61 63 71 75 69  ecause the acqui
2a00: 73 69 74 69 6f 6e 20 6f 66 0a 6c 6f 63 6b 73 20  sition of.locks 
2a10: 69 73 20 64 65 66 65 72 72 65 64 20 75 6e 74 69  is deferred unti
2a20: 6c 20 74 68 65 79 20 61 72 65 20 6e 65 65 64 65  l they are neede
2a30: 64 2c 20 69 74 20 69 73 20 70 6f 73 73 69 62 6c  d, it is possibl
2a40: 65 20 74 68 61 74 20 61 6e 6f 74 68 65 72 0a 74  e that another.t
2a50: 68 72 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73  hread or process
2a60: 20 63 6f 75 6c 64 20 63 72 65 61 74 65 20 61 20   could create a 
2a70: 73 65 70 61 72 61 74 65 20 74 72 61 6e 73 61 63  separate transac
2a80: 74 69 6f 6e 20 61 6e 64 20 77 72 69 74 65 20 74  tion and write t
2a90: 6f 0a 74 68 65 20 64 61 74 61 62 61 73 65 20 61  o.the database a
2aa0: 66 74 65 72 20 74 68 65 20 42 45 47 49 4e 20 6f  fter the BEGIN o
2ab0: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 68  n the current th
2ac0: 72 65 61 64 20 68 61 73 20 65 78 65 63 75 74 65  read has execute
2ad0: 64 2e 0a 49 66 20 74 68 65 20 74 72 61 6e 73 61  d..If the transa
2ae0: 63 74 69 6f 6e 20 69 73 20 69 6d 6d 65 64 69 61  ction is immedia
2af0: 74 65 2c 20 74 68 65 6e 20 52 45 53 45 52 56 45  te, then RESERVE
2b00: 44 20 6c 6f 63 6b 73 0a 61 72 65 20 61 63 71 75  D locks.are acqu
2b10: 69 72 65 64 20 6f 6e 20 61 6c 6c 20 64 61 74 61  ired on all data
2b20: 62 61 73 65 73 20 61 73 20 73 6f 6f 6e 20 61 73  bases as soon as
2b30: 20 74 68 65 20 42 45 47 49 4e 20 63 6f 6d 6d 61   the BEGIN comma
2b40: 6e 64 20 69 73 0a 65 78 65 63 75 74 65 64 2c 20  nd is.executed, 
2b50: 77 69 74 68 6f 75 74 20 77 61 69 74 69 6e 67 20  without waiting 
2b60: 66 6f 72 20 74 68 65 0a 64 61 74 61 62 61 73 65  for the.database
2b70: 20 74 6f 20 62 65 20 75 73 65 64 2e 20 20 41 66   to be used.  Af
2b80: 74 65 72 20 61 20 42 45 47 49 4e 20 49 4d 4d 45  ter a BEGIN IMME
2b90: 44 49 41 54 45 2c 20 79 6f 75 20 61 72 65 20 67  DIATE, you are g
2ba0: 75 61 72 61 6e 74 65 65 64 20 74 68 61 74 0a 6e  uaranteed that.n
2bb0: 6f 20 6f 74 68 65 72 20 74 68 72 65 61 64 20 6f  o other thread o
2bc0: 72 20 70 72 6f 63 65 73 73 20 77 69 6c 6c 20 62  r process will b
2bd0: 65 20 61 62 6c 65 20 74 6f 20 77 72 69 74 65 20  e able to write 
2be0: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
2bf0: 6f 72 0a 64 6f 20 61 20 42 45 47 49 4e 20 49 4d  or.do a BEGIN IM
2c00: 4d 45 44 49 41 54 45 20 6f 72 20 42 45 47 49 4e  MEDIATE or BEGIN
2c10: 20 45 58 43 4c 55 53 49 56 45 2e 20 20 4f 74 68   EXCLUSIVE.  Oth
2c20: 65 72 20 70 72 6f 63 65 73 73 65 73 20 63 61 6e  er processes can
2c30: 20 63 6f 6e 74 69 6e 75 65 0a 74 6f 20 72 65 61   continue.to rea
2c40: 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62  d from the datab
2c50: 61 73 65 2c 20 68 6f 77 65 76 65 72 2e 20 20 41  ase, however.  A
2c60: 6e 20 65 78 63 6c 75 73 69 76 65 20 74 72 61 6e  n exclusive tran
2c70: 73 61 63 74 69 6f 6e 20 63 61 75 73 65 73 0a 45  saction causes.E
2c80: 58 43 4c 55 53 49 56 45 20 6c 6f 63 6b 73 20 74  XCLUSIVE locks t
2c90: 6f 20 62 65 20 61 63 71 75 69 72 65 64 20 6f 6e  o be acquired on
2ca0: 20 61 6c 6c 20 64 61 74 61 62 61 73 65 73 2e 20   all databases. 
2cb0: 20 41 66 74 65 72 20 61 20 42 45 47 49 4e 0a 45   After a BEGIN.E
2cc0: 58 43 4c 55 53 49 56 45 2c 20 79 6f 75 20 61 72  XCLUSIVE, you ar
2cd0: 65 20 67 75 61 72 61 6e 74 65 65 64 20 74 68 61  e guaranteed tha
2ce0: 74 20 6e 6f 20 6f 74 68 65 72 20 74 68 72 65 61  t no other threa
2cf0: 64 20 6f 72 20 70 72 6f 63 65 73 73 20 77 69 6c  d or process wil
2d00: 6c 0a 62 65 20 61 62 6c 65 20 74 6f 20 72 65 61  l.be able to rea
2d10: 64 20 6f 72 20 77 72 69 74 65 20 74 68 65 20 64  d or write the d
2d20: 61 74 61 62 61 73 65 20 75 6e 74 69 6c 20 74 68  atabase until th
2d30: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73  e transaction is
2d40: 0a 63 6f 6d 70 6c 65 74 65 2e 0a 3c 2f 70 3e 0a  .complete..</p>.
2d50: 0a 3c 70 3e 0a 41 20 64 65 73 63 72 69 70 74 69  .<p>.A descripti
2d60: 6f 6e 20 6f 66 20 74 68 65 20 6d 65 61 6e 69 6e  on of the meanin
2d70: 67 20 6f 66 20 53 48 41 52 45 44 2c 20 52 45 53  g of SHARED, RES
2d80: 45 52 56 45 44 2c 20 61 6e 64 20 45 58 43 4c 55  ERVED, and EXCLU
2d90: 53 49 56 45 20 6c 6f 63 6b 73 0a 69 73 20 61 76  SIVE locks.is av
2da0: 61 69 6c 61 62 6c 65 20 3c 61 20 68 72 65 66 3d  ailable <a href=
2db0: 22 6c 6f 63 6b 69 6e 67 76 33 2e 68 74 6d 6c 22  "lockingv3.html"
2dc0: 3e 73 65 70 61 72 61 74 65 6c 79 3c 2f 61 3e 2e  >separately</a>.
2dd0: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 64  .</p>..<p>.The d
2de0: 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20  efault behavior 
2df0: 66 6f 72 20 53 51 4c 69 74 65 20 76 65 72 73 69  for SQLite versi
2e00: 6f 6e 20 33 2e 30 2e 38 20 69 73 20 61 0a 64 65  on 3.0.8 is a.de
2e10: 66 65 72 72 65 64 20 74 72 61 6e 73 61 63 74 69  ferred transacti
2e20: 6f 6e 2e 20 20 46 6f 72 20 53 51 4c 69 74 65 20  on.  For SQLite 
2e30: 76 65 72 73 69 6f 6e 20 33 2e 30 2e 30 20 74 68  version 3.0.0 th
2e40: 72 6f 75 67 68 20 33 2e 30 2e 37 2c 0a 64 65 66  rough 3.0.7,.def
2e50: 65 72 72 65 64 20 69 73 20 74 68 65 20 6f 6e 6c  erred is the onl
2e60: 79 20 6b 69 6e 64 20 6f 66 20 74 72 61 6e 73 61  y kind of transa
2e70: 63 74 69 6f 6e 20 61 76 61 69 6c 61 62 6c 65 2e  ction available.
2e80: 20 20 46 6f 72 20 53 51 4c 69 74 65 0a 76 65 72    For SQLite.ver
2e90: 73 69 6f 6e 20 32 2e 38 20 61 6e 64 20 65 61 72  sion 2.8 and ear
2ea0: 6c 69 65 72 2c 20 61 6c 6c 20 74 72 61 6e 73 61  lier, all transa
2eb0: 63 74 69 6f 6e 73 20 61 72 65 20 65 78 63 6c 75  ctions are exclu
2ec0: 73 69 76 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  sive..</p>..<p>.
2ed0: 54 68 65 20 43 4f 4d 4d 49 54 20 63 6f 6d 6d 61  The COMMIT comma
2ee0: 6e 64 20 64 6f 65 73 20 6e 6f 74 20 61 63 74 75  nd does not actu
2ef0: 61 6c 6c 79 20 70 65 72 66 6f 72 6d 20 61 20 63  ally perform a c
2f00: 6f 6d 6d 69 74 20 75 6e 74 69 6c 20 61 6c 6c 0a  ommit until all.
2f10: 70 65 6e 64 69 6e 67 20 53 51 4c 20 63 6f 6d 6d  pending SQL comm
2f20: 61 6e 64 73 20 66 69 6e 69 73 68 2e 20 20 54 68  ands finish.  Th
2f30: 75 73 20 69 66 20 74 77 6f 20 6f 72 20 6d 6f 72  us if two or mor
2f40: 65 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  e SELECT stateme
2f50: 6e 74 73 0a 61 72 65 20 69 6e 20 74 68 65 20 6d  nts.are in the m
2f60: 69 64 64 6c 65 20 6f 66 20 70 72 6f 63 65 73 73  iddle of process
2f70: 69 6e 67 20 61 6e 64 20 61 20 43 4f 4d 4d 49 54  ing and a COMMIT
2f80: 20 69 73 20 65 78 65 63 75 74 65 64 2c 20 74 68   is executed, th
2f90: 65 20 63 6f 6d 6d 69 74 0a 77 69 6c 6c 20 6e 6f  e commit.will no
2fa0: 74 20 61 63 74 75 61 6c 6c 79 20 6f 63 63 75 72  t actually occur
2fb0: 20 75 6e 74 69 6c 20 61 6c 6c 20 53 45 4c 45 43   until all SELEC
2fc0: 54 20 73 74 61 74 65 6d 65 6e 74 73 20 66 69 6e  T statements fin
2fd0: 69 73 68 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41  ish..</p>..<p>.A
2fe0: 6e 20 61 74 74 65 6d 70 74 20 74 6f 20 65 78 65  n attempt to exe
2ff0: 63 75 74 65 20 43 4f 4d 4d 49 54 20 6d 69 67 68  cute COMMIT migh
3000: 74 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20 53  t result in an S
3010: 51 4c 49 54 45 5f 42 55 53 59 20 72 65 74 75 72  QLITE_BUSY retur
3020: 6e 20 63 6f 64 65 2e 0a 54 68 69 73 20 69 6e 64  n code..This ind
3030: 69 63 61 74 65 73 20 74 68 61 74 20 61 6e 6f 74  icates that anot
3040: 68 65 72 20 74 68 72 65 61 64 20 6f 72 20 70 72  her thread or pr
3050: 6f 63 65 73 73 20 68 61 64 20 61 20 72 65 61 64  ocess had a read
3060: 20 6c 6f 63 6b 20 6f 6e 20 74 68 65 20 64 61 74   lock on the dat
3070: 61 62 61 73 65 0a 74 68 61 74 20 70 72 65 76 65  abase.that preve
3080: 6e 74 65 64 20 74 68 65 20 64 61 74 61 62 61 73  nted the databas
3090: 65 20 66 72 6f 6d 20 62 65 69 6e 67 20 75 70 64  e from being upd
30a0: 61 74 65 64 2e 20 20 57 68 65 6e 20 43 4f 4d 4d  ated.  When COMM
30b0: 49 54 20 66 61 69 6c 73 20 69 6e 20 74 68 69 73  IT fails in this
30c0: 0a 77 61 79 2c 20 74 68 65 20 74 72 61 6e 73 61  .way, the transa
30d0: 63 74 69 6f 6e 20 72 65 6d 61 69 6e 73 20 61 63  ction remains ac
30e0: 74 69 76 65 20 61 6e 64 20 74 68 65 20 43 4f 4d  tive and the COM
30f0: 4d 49 54 20 63 61 6e 20 62 65 20 72 65 74 72 69  MIT can be retri
3100: 65 64 20 6c 61 74 65 72 0a 61 66 74 65 72 20 74  ed later.after t
3110: 68 65 20 72 65 61 64 65 72 20 68 61 73 20 68 61  he reader has ha
3120: 64 20 61 20 63 68 61 6e 63 65 20 74 6f 20 63 6c  d a chance to cl
3130: 65 61 72 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  ear..</p>.}...Se
3140: 63 74 69 6f 6e 20 63 6f 6d 6d 65 6e 74 20 63 6f  ction comment co
3150: 6d 6d 65 6e 74 0a 0a 53 79 6e 74 61 78 20 7b 63  mment..Syntax {c
3160: 6f 6d 6d 65 6e 74 7d 20 7b 3c 53 51 4c 2d 63 6f  omment} {<SQL-co
3170: 6d 6d 65 6e 74 3e 20 7c 20 3c 43 2d 63 6f 6d 6d  mment> | <C-comm
3180: 65 6e 74 3e 0a 7d 20 7b 53 51 4c 2d 63 6f 6d 6d  ent>.} {SQL-comm
3190: 65 6e 74 7d 20 7b 2d 2d 20 3c 73 69 6e 67 6c 65  ent} {-- <single
31a0: 2d 6c 69 6e 65 3e 0a 7d 20 7b 43 2d 63 6f 6d 6d  -line>.} {C-comm
31b0: 65 6e 74 7d 20 7b 2f 53 54 41 52 20 3c 6d 75 6c  ent} {/STAR <mul
31c0: 74 69 70 6c 65 2d 6c 69 6e 65 73 3e 20 5b 53 54  tiple-lines> [ST
31d0: 41 52 2f 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  AR/].}..puts {.<
31e0: 70 3e 20 43 6f 6d 6d 65 6e 74 73 20 61 72 65 6e  p> Comments aren
31f0: 27 74 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 2c  't SQL commands,
3200: 20 62 75 74 20 63 61 6e 20 6f 63 63 75 72 20 69   but can occur i
3210: 6e 20 53 51 4c 20 71 75 65 72 69 65 73 2e 20 54  n SQL queries. T
3220: 68 65 79 20 61 72 65 20 0a 74 72 65 61 74 65 64  hey are .treated
3230: 20 61 73 20 77 68 69 74 65 73 70 61 63 65 20 62   as whitespace b
3240: 79 20 74 68 65 20 70 61 72 73 65 72 2e 20 20 54  y the parser.  T
3250: 68 65 79 20 63 61 6e 20 62 65 67 69 6e 20 61 6e  hey can begin an
3260: 79 77 68 65 72 65 20 77 68 69 74 65 73 70 61 63  ywhere whitespac
3270: 65 20 0a 63 61 6e 20 62 65 20 66 6f 75 6e 64 2c  e .can be found,
3280: 20 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69 64   including insid
3290: 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68  e expressions th
32a0: 61 74 20 73 70 61 6e 20 6d 75 6c 74 69 70 6c 65  at span multiple
32b0: 20 6c 69 6e 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70   lines..</p>..<p
32c0: 3e 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 6f  > SQL comments o
32d0: 6e 6c 79 20 65 78 74 65 6e 64 20 74 6f 20 74 68  nly extend to th
32e0: 65 20 65 6e 64 20 6f 66 20 74 68 65 20 63 75 72  e end of the cur
32f0: 72 65 6e 74 20 6c 69 6e 65 2e 3c 2f 70 3e 0a 0a  rent line.</p>..
3300: 3c 70 3e 20 43 20 63 6f 6d 6d 65 6e 74 73 20 63  <p> C comments c
3310: 61 6e 20 73 70 61 6e 20 61 6e 79 20 6e 75 6d 62  an span any numb
3320: 65 72 20 6f 66 20 6c 69 6e 65 73 2e 20 20 49 66  er of lines.  If
3330: 20 74 68 65 72 65 20 69 73 20 6e 6f 20 74 65 72   there is no ter
3340: 6d 69 6e 61 74 69 6e 67 0a 64 65 6c 69 6d 69 74  minating.delimit
3350: 65 72 2c 20 74 68 65 79 20 65 78 74 65 6e 64 20  er, they extend 
3360: 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68  to the end of th
3370: 65 20 69 6e 70 75 74 2e 20 20 54 68 69 73 20 69  e input.  This i
3380: 73 20 6e 6f 74 20 74 72 65 61 74 65 64 20 61 73  s not treated as
3390: 0a 61 6e 20 65 72 72 6f 72 2e 20 20 41 20 6e 65  .an error.  A ne
33a0: 77 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  w SQL statement 
33b0: 63 61 6e 20 62 65 67 69 6e 20 6f 6e 20 61 20 6c  can begin on a l
33c0: 69 6e 65 20 61 66 74 65 72 20 61 20 6d 75 6c 74  ine after a mult
33d0: 69 6c 69 6e 65 0a 63 6f 6d 6d 65 6e 74 20 65 6e  iline.comment en
33e0: 64 73 2e 20 20 43 20 63 6f 6d 6d 65 6e 74 73 20  ds.  C comments 
33f0: 63 61 6e 20 62 65 20 65 6d 62 65 64 64 65 64 20  can be embedded 
3400: 61 6e 79 77 68 65 72 65 20 77 68 69 74 65 73 70  anywhere whitesp
3410: 61 63 65 20 63 61 6e 20 6f 63 63 75 72 2c 0a 69  ace can occur,.i
3420: 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65 20  ncluding inside 
3430: 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 61 6e 64  expressions, and
3440: 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f   in the middle o
3450: 66 20 6f 74 68 65 72 20 53 51 4c 20 73 74 61 74  f other SQL stat
3460: 65 6d 65 6e 74 73 2e 0a 43 20 63 6f 6d 6d 65 6e  ements..C commen
3470: 74 73 20 64 6f 20 6e 6f 74 20 6e 65 73 74 2e 20  ts do not nest. 
3480: 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 69 6e   SQL comments in
3490: 73 69 64 65 20 61 20 43 20 63 6f 6d 6d 65 6e 74  side a C comment
34a0: 20 77 69 6c 6c 20 62 65 20 69 67 6e 6f 72 65 64   will be ignored
34b0: 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  ..</p>.}...Secti
34c0: 6f 6e 20 43 4f 50 59 20 63 6f 70 79 0a 0a 53 79  on COPY copy..Sy
34d0: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
34e0: 65 6e 74 7d 20 7b 0a 43 4f 50 59 20 5b 20 4f 52  ent} {.COPY [ OR
34f0: 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72   <conflict-algor
3500: 69 74 68 6d 3e 20 5d 20 5b 3c 64 61 74 61 62 61  ithm> ] [<databa
3510: 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62  se-name> .] <tab
3520: 6c 65 2d 6e 61 6d 65 3e 20 46 52 4f 4d 20 3c 66  le-name> FROM <f
3530: 69 6c 65 6e 61 6d 65 3e 0a 5b 20 55 53 49 4e 47  ilename>.[ USING
3540: 20 44 45 4c 49 4d 49 54 45 52 53 20 3c 64 65 6c   DELIMITERS <del
3550: 69 6d 3e 20 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a  im> ].}..puts {.
3560: 3c 70 3e 54 68 65 20 43 4f 50 59 20 63 6f 6d 6d  <p>The COPY comm
3570: 61 6e 64 20 69 73 20 61 76 61 69 6c 61 62 6c 65  and is available
3580: 20 69 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69   in SQLite versi
3590: 6f 6e 20 32 2e 38 20 61 6e 64 20 65 61 72 6c 69  on 2.8 and earli
35a0: 65 72 2e 0a 54 68 65 20 43 4f 50 59 20 63 6f 6d  er..The COPY com
35b0: 6d 61 6e 64 20 68 61 73 20 62 65 65 6e 20 72 65  mand has been re
35c0: 6d 6f 76 65 64 20 66 72 6f 6d 20 53 51 4c 69 74  moved from SQLit
35d0: 65 20 76 65 72 73 69 6f 6e 20 33 2e 30 20 64 75  e version 3.0 du
35e0: 65 20 74 6f 0a 63 6f 6d 70 6c 69 63 61 74 69 6f  e to.complicatio
35f0: 6e 73 20 69 6e 20 74 72 79 69 6e 67 20 74 6f 20  ns in trying to 
3600: 73 75 70 70 6f 72 74 20 69 74 20 69 6e 20 61 20  support it in a 
3610: 6d 69 78 65 64 20 55 54 46 2d 38 2f 31 36 20 65  mixed UTF-8/16 e
3620: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 0a 49 6e 20 76  nvironment..In v
3630: 65 72 73 69 6f 6e 20 33 2e 30 2c 20 74 68 65 20  ersion 3.0, the 
3640: 3c 61 20 68 72 65 66 3d 22 73 71 6c 69 74 65 2e  <a href="sqlite.
3650: 68 74 6d 6c 22 3e 63 6f 6d 6d 61 6e 64 2d 6c 69  html">command-li
3660: 6e 65 20 73 68 65 6c 6c 3c 2f 61 3e 0a 63 6f 6e  ne shell</a>.con
3670: 74 61 69 6e 73 20 61 20 6e 65 77 20 63 6f 6d 6d  tains a new comm
3680: 61 6e 64 20 3c 62 3e 2e 69 6d 70 6f 72 74 3c 2f  and <b>.import</
3690: 62 3e 20 74 68 61 74 20 63 61 6e 20 62 65 20 75  b> that can be u
36a0: 73 65 64 20 61 73 20 61 20 73 75 62 73 74 69 74  sed as a substit
36b0: 75 74 65 0a 66 6f 72 20 43 4f 50 59 2e 0a 3c 2f  ute.for COPY..</
36c0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 43 4f 50 59 20  p>..<p>The COPY 
36d0: 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20 65 78  command is an ex
36e0: 74 65 6e 73 69 6f 6e 20 75 73 65 64 20 74 6f 20  tension used to 
36f0: 6c 6f 61 64 20 6c 61 72 67 65 20 61 6d 6f 75 6e  load large amoun
3700: 74 73 20 6f 66 0a 64 61 74 61 20 69 6e 74 6f 20  ts of.data into 
3710: 61 20 74 61 62 6c 65 2e 20 20 49 74 20 69 73 20  a table.  It is 
3720: 6d 6f 64 65 6c 65 64 20 61 66 74 65 72 20 61 20  modeled after a 
3730: 73 69 6d 69 6c 61 72 20 63 6f 6d 6d 61 6e 64 20  similar command 
3740: 66 6f 75 6e 64 0a 69 6e 20 50 6f 73 74 67 72 65  found.in Postgre
3750: 53 51 4c 2e 20 20 49 6e 20 66 61 63 74 2c 20 74  SQL.  In fact, t
3760: 68 65 20 53 51 4c 69 74 65 20 43 4f 50 59 20 63  he SQLite COPY c
3770: 6f 6d 6d 61 6e 64 20 69 73 20 73 70 65 63 69 66  ommand is specif
3780: 69 63 61 6c 6c 79 0a 64 65 73 69 67 6e 65 64 20  ically.designed 
3790: 74 6f 20 62 65 20 61 62 6c 65 20 74 6f 20 72 65  to be able to re
37a0: 61 64 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66  ad the output of
37b0: 20 74 68 65 20 50 6f 73 74 67 72 65 53 51 4c 20   the PostgreSQL 
37c0: 64 75 6d 70 0a 75 74 69 6c 69 74 79 20 3c 62 3e  dump.utility <b>
37d0: 70 67 5f 64 75 6d 70 3c 2f 62 3e 20 73 6f 20 74  pg_dump</b> so t
37e0: 68 61 74 20 64 61 74 61 20 63 61 6e 20 62 65 20  hat data can be 
37f0: 65 61 73 69 6c 79 20 74 72 61 6e 73 66 65 72 72  easily transferr
3800: 65 64 20 66 72 6f 6d 0a 50 6f 73 74 67 72 65 53  ed from.PostgreS
3810: 51 4c 20 69 6e 74 6f 20 53 51 4c 69 74 65 2e 3c  QL into SQLite.<
3820: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 74 61 62 6c  /p>..<p>The tabl
3830: 65 2d 6e 61 6d 65 20 69 73 20 74 68 65 20 6e 61  e-name is the na
3840: 6d 65 20 6f 66 20 61 6e 20 65 78 69 73 74 69 6e  me of an existin
3850: 67 20 74 61 62 6c 65 20 77 68 69 63 68 20 69 73  g table which is
3860: 20 74 6f 0a 62 65 20 66 69 6c 6c 65 64 20 77 69   to.be filled wi
3870: 74 68 20 64 61 74 61 2e 20 20 54 68 65 20 66 69  th data.  The fi
3880: 6c 65 6e 61 6d 65 20 69 73 20 61 20 73 74 72 69  lename is a stri
3890: 6e 67 20 6f 72 20 69 64 65 6e 74 69 66 69 65 72  ng or identifier
38a0: 20 74 68 61 74 0a 6e 61 6d 65 73 20 61 20 66 69   that.names a fi
38b0: 6c 65 20 66 72 6f 6d 20 77 68 69 63 68 20 64 61  le from which da
38c0: 74 61 20 77 69 6c 6c 20 62 65 20 72 65 61 64 2e  ta will be read.
38d0: 20 20 54 68 65 20 66 69 6c 65 6e 61 6d 65 20 63    The filename c
38e0: 61 6e 20 62 65 0a 74 68 65 20 3c 62 3e 53 54 44  an be.the <b>STD
38f0: 49 4e 3c 2f 62 3e 20 74 6f 20 72 65 61 64 20 64  IN</b> to read d
3900: 61 74 61 20 66 72 6f 6d 20 73 74 61 6e 64 61 72  ata from standar
3910: 64 20 69 6e 70 75 74 2e 3c 2f 70 3e 0a 0a 3c 70  d input.</p>..<p
3920: 3e 45 61 63 68 20 6c 69 6e 65 20 6f 66 20 74 68  >Each line of th
3930: 65 20 69 6e 70 75 74 20 66 69 6c 65 20 69 73 20  e input file is 
3940: 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 61  converted into a
3950: 20 73 69 6e 67 6c 65 20 72 65 63 6f 72 64 0a 69   single record.i
3960: 6e 20 74 68 65 20 74 61 62 6c 65 2e 20 20 43 6f  n the table.  Co
3970: 6c 75 6d 6e 73 20 61 72 65 20 73 65 70 61 72 61  lumns are separa
3980: 74 65 64 20 62 79 20 74 61 62 73 2e 20 20 49 66  ted by tabs.  If
3990: 20 61 20 74 61 62 20 6f 63 63 75 72 73 20 61 73   a tab occurs as
39a0: 0a 64 61 74 61 20 77 69 74 68 69 6e 20 61 20 63  .data within a c
39b0: 6f 6c 75 6d 6e 2c 20 74 68 65 6e 20 74 68 61 74  olumn, then that
39c0: 20 74 61 62 20 69 73 20 70 72 65 63 65 64 65 64   tab is preceded
39d0: 20 62 79 20 61 20 62 61 73 6b 73 6c 61 73 68 20   by a baskslash 
39e0: 22 5c 22 0a 63 68 61 72 61 63 74 65 72 2e 20 20  "\".character.  
39f0: 41 20 62 61 73 6b 73 6c 61 73 68 20 69 6e 20 74  A baskslash in t
3a00: 68 65 20 64 61 74 61 20 61 70 70 65 61 72 73 20  he data appears 
3a10: 61 73 20 74 77 6f 20 62 61 63 6b 73 6c 61 73 68  as two backslash
3a20: 65 73 20 69 6e 0a 61 20 72 6f 77 2e 20 20 54 68  es in.a row.  Th
3a30: 65 20 6f 70 74 69 6f 6e 61 6c 20 55 53 49 4e 47  e optional USING
3a40: 20 44 45 4c 49 4d 49 54 45 52 53 20 63 6c 61 75   DELIMITERS clau
3a50: 73 65 20 63 61 6e 20 73 70 65 63 69 66 79 20 61  se can specify a
3a60: 20 64 65 6c 69 6d 69 74 65 72 0a 6f 74 68 65 72   delimiter.other
3a70: 20 74 68 61 6e 20 74 61 62 2e 3c 2f 70 3e 0a 0a   than tab.</p>..
3a80: 3c 70 3e 49 66 20 61 20 63 6f 6c 75 6d 6e 20 63  <p>If a column c
3a90: 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20 63  onsists of the c
3aa0: 68 61 72 61 63 74 65 72 20 22 5c 4e 22 2c 20 74  haracter "\N", t
3ab0: 68 61 74 20 63 6f 6c 75 6d 6e 20 69 73 20 66 69  hat column is fi
3ac0: 6c 6c 65 64 0a 77 69 74 68 20 74 68 65 20 76 61  lled.with the va
3ad0: 6c 75 65 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c  lue NULL.</p>..<
3ae0: 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63  p>The optional c
3af0: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 61  onflict-clause a
3b00: 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69 66  llows the specif
3b10: 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c  ication of an al
3b20: 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74 72  ternative.constr
3b30: 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65  aint conflict re
3b40: 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
3b50: 68 6d 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68  hm to use for th
3b60: 69 73 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a  is one command..
3b70: 53 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20  See the section 
3b80: 74 69 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22  titled.<a href="
3b90: 23 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f  #conflict">ON CO
3ba0: 4e 46 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61  NFLICT</a> for a
3bb0: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
3bc0: 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57  ation.</p>..<p>W
3bd0: 68 65 6e 20 74 68 65 20 69 6e 70 75 74 20 64 61  hen the input da
3be0: 74 61 20 73 6f 75 72 63 65 20 69 73 20 53 54 44  ta source is STD
3bf0: 49 4e 2c 20 74 68 65 20 69 6e 70 75 74 20 63 61  IN, the input ca
3c00: 6e 20 62 65 20 74 65 72 6d 69 6e 61 74 65 64 0a  n be terminated.
3c10: 62 79 20 61 20 6c 69 6e 65 20 74 68 61 74 20 63  by a line that c
3c20: 6f 6e 74 61 69 6e 73 20 6f 6e 6c 79 20 61 20 62  ontains only a b
3c30: 61 73 6b 73 6c 61 73 68 20 61 6e 64 20 61 20 64  askslash and a d
3c40: 6f 74 3a 7d 0a 70 75 74 73 20 22 5c 22 5b 4f 70  ot:}.puts "\"[Op
3c50: 65 72 61 74 6f 72 20 5c 5c 2e 5d 5c 22 2e 3c 2f  erator \\.]\".</
3c60: 70 3e 22 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 43  p>"...Section {C
3c70: 52 45 41 54 45 20 49 4e 44 45 58 7d 20 63 72 65  REATE INDEX} cre
3c80: 61 74 65 69 6e 64 65 78 0a 0a 53 79 6e 74 61 78  ateindex..Syntax
3c90: 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
3ca0: 20 7b 0a 43 52 45 41 54 45 20 5b 55 4e 49 51 55   {.CREATE [UNIQU
3cb0: 45 5d 20 49 4e 44 45 58 20 5b 3c 64 61 74 61 62  E] INDEX [<datab
3cc0: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 69 6e  ase-name> .] <in
3cd0: 64 65 78 2d 6e 61 6d 65 3e 20 0a 4f 4e 20 3c 74  dex-name> .ON <t
3ce0: 61 62 6c 65 2d 6e 61 6d 65 3e 20 28 20 3c 63 6f  able-name> ( <co
3cf0: 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 5b 2c 20 3c 63  lumn-name> [, <c
3d00: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 5d 2a 20 29 0a  olumn-name>]* ).
3d10: 5b 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c 63  [ ON CONFLICT <c
3d20: 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68  onflict-algorith
3d30: 6d 3e 20 5d 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 6e  m> ].} {column-n
3d40: 61 6d 65 7d 20 7b 0a 3c 6e 61 6d 65 3e 20 5b 20  ame} {.<name> [ 
3d50: 43 4f 4c 4c 41 54 45 20 3c 63 6f 6c 6c 61 74 69  COLLATE <collati
3d60: 6f 6e 2d 6e 61 6d 65 3e 5d 20 5b 20 41 53 43 20  on-name>] [ ASC 
3d70: 7c 20 44 45 53 43 20 5d 0a 7d 0a 0a 70 75 74 73  | DESC ].}..puts
3d80: 20 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45   {.<p>The CREATE
3d90: 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 20 63   INDEX command c
3da0: 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20 6b  onsists of the k
3db0: 65 79 77 6f 72 64 73 20 22 43 52 45 41 54 45 20  eywords "CREATE 
3dc0: 49 4e 44 45 58 22 20 66 6f 6c 6c 6f 77 65 64 0a  INDEX" followed.
3dd0: 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  by the name of t
3de0: 68 65 20 6e 65 77 20 69 6e 64 65 78 2c 20 74 68  he new index, th
3df0: 65 20 6b 65 79 77 6f 72 64 20 22 4f 4e 22 2c 20  e keyword "ON", 
3e00: 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 70 72  the name of a pr
3e10: 65 76 69 6f 75 73 6c 79 0a 63 72 65 61 74 65 64  eviously.created
3e20: 20 74 61 62 6c 65 20 74 68 61 74 20 69 73 20 74   table that is t
3e30: 6f 20 62 65 20 69 6e 64 65 78 65 64 2c 20 61 6e  o be indexed, an
3e40: 64 20 61 20 70 61 72 65 6e 74 68 65 73 69 7a 65  d a parenthesize
3e50: 64 20 6c 69 73 74 20 6f 66 20 6e 61 6d 65 73 20  d list of names 
3e60: 6f 66 0a 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68  of.columns in th
3e70: 65 20 74 61 62 6c 65 20 74 68 61 74 20 61 72 65  e table that are
3e80: 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 69 6e   used for the in
3e90: 64 65 78 20 6b 65 79 2e 0a 45 61 63 68 20 63 6f  dex key..Each co
3ea0: 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e 20 62 65  lumn name can be
3eb0: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 6f 6e 65   followed by one
3ec0: 20 6f 66 20 74 68 65 20 22 41 53 43 22 20 6f 72   of the "ASC" or
3ed0: 20 22 44 45 53 43 22 20 6b 65 79 77 6f 72 64 73   "DESC" keywords
3ee0: 0a 74 6f 20 69 6e 64 69 63 61 74 65 20 73 6f 72  .to indicate sor
3ef0: 74 20 6f 72 64 65 72 2c 20 62 75 74 20 74 68 65  t order, but the
3f00: 20 73 6f 72 74 20 6f 72 64 65 72 20 69 73 20 69   sort order is i
3f10: 67 6e 6f 72 65 64 20 69 6e 20 74 68 65 20 63 75  gnored in the cu
3f20: 72 72 65 6e 74 0a 69 6d 70 6c 65 6d 65 6e 74 61  rrent.implementa
3f30: 74 69 6f 6e 2e 20 20 53 6f 72 74 69 6e 67 20 69  tion.  Sorting i
3f40: 73 20 61 6c 77 61 79 73 20 64 6f 6e 65 20 69 6e  s always done in
3f50: 20 61 73 63 65 6e 64 69 6e 67 20 6f 72 64 65 72   ascending order
3f60: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 43 4f  .</p>..<p>The CO
3f70: 4c 4c 41 54 45 20 63 6c 61 75 73 65 20 66 6f 6c  LLATE clause fol
3f80: 6c 6f 77 69 6e 67 20 65 61 63 68 20 63 6f 6c 75  lowing each colu
3f90: 6d 6e 20 6e 61 6d 65 20 64 65 66 69 6e 65 73 20  mn name defines 
3fa0: 61 20 63 6f 6c 6c 61 74 69 6e 67 0a 73 65 71 75  a collating.sequ
3fb0: 65 6e 63 65 20 75 73 65 64 20 66 6f 72 20 74 65  ence used for te
3fc0: 78 74 20 65 6e 74 69 72 65 73 20 69 6e 20 74 68  xt entires in th
3fd0: 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 54 68 65 20  at column.  The 
3fe0: 64 65 66 61 75 6c 74 20 63 6f 6c 6c 61 74 69 6e  default collatin
3ff0: 67 0a 73 65 71 75 65 6e 63 65 20 69 73 20 74 68  g.sequence is th
4000: 65 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75  e collating sequ
4010: 65 6e 63 65 20 64 65 66 69 6e 65 64 20 66 6f 72  ence defined for
4020: 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 6e 20   that column in 
4030: 74 68 65 0a 43 52 45 41 54 45 20 54 41 42 4c 45  the.CREATE TABLE
4040: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f 72 20   statement.  Or 
4050: 69 66 20 6e 6f 20 63 6f 6c 6c 61 74 69 6e 67 20  if no collating 
4060: 73 65 71 75 65 6e 63 65 20 69 73 20 6f 74 68 65  sequence is othe
4070: 72 77 69 73 65 20 64 65 66 69 6e 65 64 2c 0a 74  rwise defined,.t
4080: 68 65 20 62 75 69 6c 74 2d 69 6e 20 42 49 4e 41  he built-in BINA
4090: 52 59 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71  RY collating seq
40a0: 75 65 6e 63 65 20 69 73 20 75 73 65 64 2e 3c 2f  uence is used.</
40b0: 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72 65  p>..<p>There are
40c0: 20 6e 6f 20 61 72 62 69 74 72 61 72 79 20 6c 69   no arbitrary li
40d0: 6d 69 74 73 20 6f 6e 20 74 68 65 20 6e 75 6d 62  mits on the numb
40e0: 65 72 20 6f 66 20 69 6e 64 69 63 65 73 20 74 68  er of indices th
40f0: 61 74 20 63 61 6e 20 62 65 0a 61 74 74 61 63 68  at can be.attach
4100: 65 64 20 74 6f 20 61 20 73 69 6e 67 6c 65 20 74  ed to a single t
4110: 61 62 6c 65 2c 20 6e 6f 72 20 6f 6e 20 74 68 65  able, nor on the
4120: 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
4130: 6e 73 20 69 6e 20 61 6e 20 69 6e 64 65 78 2e 3c  ns in an index.<
4140: 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 55  /p>..<p>If the U
4150: 4e 49 51 55 45 20 6b 65 79 77 6f 72 64 20 61 70  NIQUE keyword ap
4160: 70 65 61 72 73 20 62 65 74 77 65 65 6e 20 43 52  pears between CR
4170: 45 41 54 45 20 61 6e 64 20 49 4e 44 45 58 20 74  EATE and INDEX t
4180: 68 65 6e 20 64 75 70 6c 69 63 61 74 65 0a 69 6e  hen duplicate.in
4190: 64 65 78 20 65 6e 74 72 69 65 73 20 61 72 65 20  dex entries are 
41a0: 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e 20 20 41 6e  not allowed.  An
41b0: 79 20 61 74 74 65 6d 70 74 20 74 6f 20 69 6e 73  y attempt to ins
41c0: 65 72 74 20 61 20 64 75 70 6c 69 63 61 74 65 20  ert a duplicate 
41d0: 65 6e 74 72 79 0a 77 69 6c 6c 20 72 65 73 75 6c  entry.will resul
41e0: 74 20 69 6e 20 61 6e 20 65 72 72 6f 72 2e 3c 2f  t in an error.</
41f0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f  p>..<p>The optio
4200: 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61  nal conflict-cla
4210: 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73  use allows the s
4220: 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20  pecification of 
4230: 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 64  an alternative.d
4240: 65 66 61 75 6c 74 20 63 6f 6e 73 74 72 61 69 6e  efault constrain
4250: 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  t conflict resol
4260: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ution algorithm 
4270: 66 6f 72 20 74 68 69 73 20 69 6e 64 65 78 2e 0a  for this index..
4280: 54 68 69 73 20 6f 6e 6c 79 20 6d 61 6b 65 73 20  This only makes 
4290: 73 65 6e 73 65 20 69 66 20 74 68 65 20 55 4e 49  sense if the UNI
42a0: 51 55 45 20 6b 65 79 77 6f 72 64 20 69 73 20 75  QUE keyword is u
42b0: 73 65 64 20 73 69 6e 63 65 20 6f 74 68 65 72 77  sed since otherw
42c0: 69 73 65 0a 74 68 65 72 65 20 61 72 65 20 6e 6f  ise.there are no
42d0: 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 6f 6e  t constraints on
42e0: 20 74 68 65 20 69 6e 64 65 78 2e 20 20 54 68 65   the index.  The
42f0: 20 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74   default algorit
4300: 68 6d 20 69 73 0a 41 42 4f 52 54 2e 20 20 49 66  hm is.ABORT.  If
4310: 20 61 20 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c   a COPY, INSERT,
4320: 20 6f 72 20 55 50 44 41 54 45 20 73 74 61 74 65   or UPDATE state
4330: 6d 65 6e 74 20 73 70 65 63 69 66 69 65 73 20 61  ment specifies a
4340: 20 70 61 72 74 69 63 75 6c 61 72 0a 63 6f 6e 66   particular.conf
4350: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
4360: 61 6c 67 6f 72 69 74 68 6d 2c 20 74 68 61 74 20  algorithm, that 
4370: 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65  algorithm is use
4380: 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 0a 74 68  d in place of.th
4390: 65 20 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69  e default algori
43a0: 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 68 65  thm specified he
43b0: 72 65 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74  re..See the sect
43c0: 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68 72  ion titled.<a hr
43d0: 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f  ef="#conflict">O
43e0: 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66  N CONFLICT</a> f
43f0: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
4400: 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a  formation.</p>..
4410: 3c 70 3e 54 68 65 20 65 78 61 63 74 20 74 65 78  <p>The exact tex
4420: 74 0a 6f 66 20 65 61 63 68 20 43 52 45 41 54 45  t.of each CREATE
4430: 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74   INDEX statement
4440: 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20 74 68   is stored in th
4450: 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74  e <b>sqlite_mast
4460: 65 72 3c 2f 62 3e 0a 6f 72 20 3c 62 3e 73 71 6c  er</b>.or <b>sql
4470: 69 74 65 5f 74 65 6d 70 5f 6d 61 73 74 65 72 3c  ite_temp_master<
4480: 2f 62 3e 20 74 61 62 6c 65 2c 20 64 65 70 65 6e  /b> table, depen
4490: 64 69 6e 67 20 6f 6e 20 77 68 65 74 68 65 72 20  ding on whether 
44a0: 74 68 65 20 74 61 62 6c 65 0a 62 65 69 6e 67 20  the table.being 
44b0: 69 6e 64 65 78 65 64 20 69 73 20 74 65 6d 70 6f  indexed is tempo
44c0: 72 61 72 79 2e 20 20 45 76 65 72 79 20 74 69 6d  rary.  Every tim
44d0: 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  e the database i
44e0: 73 20 6f 70 65 6e 65 64 2c 0a 61 6c 6c 20 43 52  s opened,.all CR
44f0: 45 41 54 45 20 49 4e 44 45 58 20 73 74 61 74 65  EATE INDEX state
4500: 6d 65 6e 74 73 0a 61 72 65 20 72 65 61 64 20 66  ments.are read f
4510: 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69 74  rom the <b>sqlit
4520: 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62  e_master</b> tab
4530: 6c 65 20 61 6e 64 20 75 73 65 64 20 74 6f 20 72  le and used to r
4540: 65 67 65 6e 65 72 61 74 65 0a 53 51 4c 69 74 65  egenerate.SQLite
4550: 27 73 20 69 6e 74 65 72 6e 61 6c 20 72 65 70 72  's internal repr
4560: 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68  esentation of th
4570: 65 20 69 6e 64 65 78 20 6c 61 79 6f 75 74 2e 3c  e index layout.<
4580: 2f 70 3e 0a 0a 3c 70 3e 49 6e 64 65 78 65 73 20  /p>..<p>Indexes 
4590: 61 72 65 20 72 65 6d 6f 76 65 64 20 77 69 74 68  are removed with
45a0: 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 64   the <a href="#d
45b0: 72 6f 70 69 6e 64 65 78 22 3e 44 52 4f 50 20 49  ropindex">DROP I
45c0: 4e 44 45 58 3c 2f 61 3e 20 0a 63 6f 6d 6d 61 6e  NDEX</a> .comman
45d0: 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  d.</p>.}...Secti
45e0: 6f 6e 20 7b 43 52 45 41 54 45 20 54 41 42 4c 45  on {CREATE TABLE
45f0: 7d 20 7b 63 72 65 61 74 65 74 61 62 6c 65 7d 0a  } {createtable}.
4600: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d  .Syntax {sql-com
4610: 6d 61 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b  mand} {.CREATE [
4620: 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59  TEMP | TEMPORARY
4630: 5d 20 54 41 42 4c 45 20 3c 74 61 62 6c 65 2d 6e  ] TABLE <table-n
4640: 61 6d 65 3e 20 28 0a 20 20 3c 63 6f 6c 75 6d 6e  ame> (.  <column
4650: 2d 64 65 66 3e 20 5b 2c 20 3c 63 6f 6c 75 6d 6e  -def> [, <column
4660: 2d 64 65 66 3e 5d 2a 0a 20 20 5b 2c 20 3c 63 6f  -def>]*.  [, <co
4670: 6e 73 74 72 61 69 6e 74 3e 5d 2a 0a 29 0a 7d 20  nstraint>]*.).} 
4680: 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a  {sql-command} {.
4690: 43 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54  CREATE [TEMP | T
46a0: 45 4d 50 4f 52 41 52 59 5d 20 54 41 42 4c 45 20  EMPORARY] TABLE 
46b0: 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e  [<database-name>
46c0: 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20  .] <table-name> 
46d0: 41 53 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65  AS <select-state
46e0: 6d 65 6e 74 3e 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d  ment>.} {column-
46f0: 64 65 66 7d 20 7b 0a 3c 6e 61 6d 65 3e 20 5b 3c  def} {.<name> [<
4700: 74 79 70 65 3e 5d 20 5b 5b 43 4f 4e 53 54 52 41  type>] [[CONSTRA
4710: 49 4e 54 20 3c 6e 61 6d 65 3e 5d 20 3c 63 6f 6c  INT <name>] <col
4720: 75 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e 74 3e 5d  umn-constraint>]
4730: 2a 0a 7d 20 7b 74 79 70 65 7d 20 7b 0a 3c 74 79  *.} {type} {.<ty
4740: 70 65 6e 61 6d 65 3e 20 7c 0a 3c 74 79 70 65 6e  pename> |.<typen
4750: 61 6d 65 3e 20 28 20 3c 6e 75 6d 62 65 72 3e 20  ame> ( <number> 
4760: 29 20 7c 0a 3c 74 79 70 65 6e 61 6d 65 3e 20 28  ) |.<typename> (
4770: 20 3c 6e 75 6d 62 65 72 3e 20 2c 20 3c 6e 75 6d   <number> , <num
4780: 62 65 72 3e 20 29 0a 7d 20 7b 63 6f 6c 75 6d 6e  ber> ).} {column
4790: 2d 63 6f 6e 73 74 72 61 69 6e 74 7d 20 7b 0a 4e  -constraint} {.N
47a0: 4f 54 20 4e 55 4c 4c 20 5b 20 3c 63 6f 6e 66 6c  OT NULL [ <confl
47b0: 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a  ict-clause> ] |.
47c0: 50 52 49 4d 41 52 59 20 4b 45 59 20 5b 3c 73 6f  PRIMARY KEY [<so
47d0: 72 74 2d 6f 72 64 65 72 3e 5d 20 5b 20 3c 63 6f  rt-order>] [ <co
47e0: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d  nflict-clause> ]
47f0: 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d   [AUTOINCREMENT]
4800: 20 7c 0a 55 4e 49 51 55 45 20 5b 20 3c 63 6f 6e   |.UNIQUE [ <con
4810: 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20  flict-clause> ] 
4820: 7c 0a 43 48 45 43 4b 20 28 20 3c 65 78 70 72 3e  |.CHECK ( <expr>
4830: 20 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63   ) [ <conflict-c
4840: 6c 61 75 73 65 3e 20 5d 20 7c 0a 44 45 46 41 55  lause> ] |.DEFAU
4850: 4c 54 20 3c 76 61 6c 75 65 3e 20 7c 0a 43 4f 4c  LT <value> |.COL
4860: 4c 41 54 45 20 3c 63 6f 6c 6c 61 74 69 6f 6e 2d  LATE <collation-
4870: 6e 61 6d 65 3e 0a 7d 20 7b 63 6f 6e 73 74 72 61  name>.} {constra
4880: 69 6e 74 7d 20 7b 0a 50 52 49 4d 41 52 59 20 4b  int} {.PRIMARY K
4890: 45 59 20 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73  EY ( <column-lis
48a0: 74 3e 20 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74  t> ) [ <conflict
48b0: 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 55 4e 49  -clause> ] |.UNI
48c0: 51 55 45 20 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69  QUE ( <column-li
48d0: 73 74 3e 20 29 20 5b 20 3c 63 6f 6e 66 6c 69 63  st> ) [ <conflic
48e0: 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 43 48  t-clause> ] |.CH
48f0: 45 43 4b 20 28 20 3c 65 78 70 72 3e 20 29 20 5b  ECK ( <expr> ) [
4900: 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73   <conflict-claus
4910: 65 3e 20 5d 0a 7d 20 7b 63 6f 6e 66 6c 69 63 74  e> ].} {conflict
4920: 2d 63 6c 61 75 73 65 7d 20 7b 0a 4f 4e 20 43 4f  -clause} {.ON CO
4930: 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c 69 63 74  NFLICT <conflict
4940: 2d 61 6c 67 6f 72 69 74 68 6d 3e 0a 7d 0a 0a 70  -algorithm>.}..p
4950: 75 74 73 20 7b 0a 3c 70 3e 41 20 43 52 45 41 54  uts {.<p>A CREAT
4960: 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  E TABLE statemen
4970: 74 20 69 73 20 62 61 73 69 63 61 6c 6c 79 20 74  t is basically t
4980: 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45  he keywords "CRE
4990: 41 54 45 20 54 41 42 4c 45 22 0a 66 6f 6c 6c 6f  ATE TABLE".follo
49a0: 77 65 64 20 62 79 20 74 68 65 20 6e 61 6d 65 20  wed by the name 
49b0: 6f 66 20 61 20 6e 65 77 20 74 61 62 6c 65 20 61  of a new table a
49c0: 6e 64 20 61 20 70 61 72 65 6e 74 68 65 73 69 7a  nd a parenthesiz
49d0: 65 64 20 6c 69 73 74 20 6f 66 20 63 6f 6c 75 6d  ed list of colum
49e0: 6e 0a 64 65 66 69 6e 69 74 69 6f 6e 73 20 61 6e  n.definitions an
49f0: 64 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20  d constraints.  
4a00: 54 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 63  The table name c
4a10: 61 6e 20 62 65 20 65 69 74 68 65 72 20 61 6e 20  an be either an 
4a20: 69 64 65 6e 74 69 66 69 65 72 0a 6f 72 20 61 20  identifier.or a 
4a30: 73 74 72 69 6e 67 2e 20 20 54 61 62 6c 65 73 20  string.  Tables 
4a40: 6e 61 6d 65 73 20 74 68 61 74 20 62 65 67 69 6e  names that begin
4a50: 20 77 69 74 68 20 22 3c 62 3e 73 71 6c 69 74 65   with "<b>sqlite
4a60: 5f 3c 2f 62 3e 22 20 61 72 65 20 72 65 73 65 72  _</b>" are reser
4a70: 76 65 64 0a 66 6f 72 20 75 73 65 20 62 79 20 74  ved.for use by t
4a80: 68 65 20 65 6e 67 69 6e 65 2e 3c 2f 70 3e 0a 0a  he engine.</p>..
4a90: 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d 6e 20 64  <p>Each column d
4aa0: 65 66 69 6e 69 74 69 6f 6e 20 69 73 20 74 68 65  efinition is the
4ab0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f 6c   name of the col
4ac0: 75 6d 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  umn followed by 
4ad0: 74 68 65 0a 64 61 74 61 74 79 70 65 20 66 6f 72  the.datatype for
4ae0: 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c 20 74 68   that column, th
4af0: 65 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f  en one or more o
4b00: 70 74 69 6f 6e 61 6c 20 63 6f 6c 75 6d 6e 20 63  ptional column c
4b10: 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 54 68 65 20  onstraints..The 
4b20: 64 61 74 61 74 79 70 65 20 66 6f 72 20 74 68 65  datatype for the
4b30: 20 63 6f 6c 75 6d 6e 20 64 6f 65 73 20 6e 6f 74   column does not
4b40: 20 72 65 73 74 72 69 63 74 20 77 68 61 74 20 64   restrict what d
4b50: 61 74 61 20 6d 61 79 20 62 65 20 70 75 74 0a 69  ata may be put.i
4b60: 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 0a 53  n that column..S
4b70: 65 65 20 3c 61 20 68 72 65 66 3d 22 64 61 74 61  ee <a href="data
4b80: 74 79 70 65 33 2e 68 74 6d 6c 22 3e 44 61 74 61  type3.html">Data
4b90: 74 79 70 65 73 20 49 6e 20 53 51 4c 69 74 65 20  types In SQLite 
4ba0: 56 65 72 73 69 6f 6e 20 33 3c 2f 61 3e 20 66 6f  Version 3</a> fo
4bb0: 72 0a 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r.additional inf
4bc0: 6f 72 6d 61 74 69 6f 6e 2e 0a 54 68 65 20 55 4e  ormation..The UN
4bd0: 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 20  IQUE constraint 
4be0: 63 61 75 73 65 73 20 61 6e 20 69 6e 64 65 78 20  causes an index 
4bf0: 74 6f 20 62 65 20 63 72 65 61 74 65 64 20 6f 6e  to be created on
4c00: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0a 63   the specified.c
4c10: 6f 6c 75 6d 6e 73 2e 20 20 54 68 69 73 20 69 6e  olumns.  This in
4c20: 64 65 78 20 6d 75 73 74 20 63 6f 6e 74 61 69 6e  dex must contain
4c30: 20 75 6e 69 71 75 65 20 6b 65 79 73 2e 0a 54 68   unique keys..Th
4c40: 65 20 43 4f 4c 4c 41 54 45 20 63 6c 61 75 73 65  e COLLATE clause
4c50: 20 73 70 65 63 69 66 69 65 73 20 77 68 61 74 20   specifies what 
4c60: 74 65 78 74 20 3c 61 20 68 72 65 66 3d 22 64 61  text <a href="da
4c70: 74 61 74 79 70 65 33 2e 68 74 6d 6c 23 63 6f 6c  tatype3.html#col
4c80: 6c 61 74 69 6f 6e 22 3e 0a 63 6f 6c 6c 61 74 69  lation">.collati
4c90: 6e 67 20 66 75 6e 63 74 69 6f 6e 3c 2f 61 3e 20  ng function</a> 
4ca0: 74 6f 20 75 73 65 20 77 68 65 6e 20 63 6f 6d 70  to use when comp
4cb0: 61 72 69 6e 67 20 74 65 78 74 20 65 6e 74 72 69  aring text entri
4cc0: 65 73 20 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d  es for the colum
4cd0: 6e 2e 20 20 0a 54 68 65 20 62 75 69 6c 74 2d 69  n.  .The built-i
4ce0: 6e 20 42 49 4e 41 52 59 20 63 6f 6c 6c 61 74 69  n BINARY collati
4cf0: 6e 67 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75  ng function is u
4d00: 73 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a  sed by default..
4d10: 3c 70 3e 0a 54 68 65 20 44 45 46 41 55 4c 54 20  <p>.The DEFAULT 
4d20: 63 6f 6e 73 74 72 61 69 6e 74 20 73 70 65 63 69  constraint speci
4d30: 66 69 65 73 20 61 20 64 65 66 61 75 6c 74 20 76  fies a default v
4d40: 61 6c 75 65 20 74 6f 20 75 73 65 20 77 68 65 6e  alue to use when
4d50: 20 64 6f 69 6e 67 20 61 6e 20 49 4e 53 45 52 54   doing an INSERT
4d60: 2e 0a 54 68 65 20 76 61 6c 75 65 20 6d 61 79 20  ..The value may 
4d70: 62 65 20 4e 55 4c 4c 2c 20 61 20 73 74 72 69 6e  be NULL, a strin
4d80: 67 20 63 6f 6e 73 74 61 6e 74 20 6f 72 20 61 20  g constant or a 
4d90: 6e 75 6d 62 65 72 2e 20 53 74 61 72 74 69 6e 67  number. Starting
4da0: 20 77 69 74 68 20 76 65 72 73 69 6f 6e 0a 33 2e   with version.3.
4db0: 31 2e 30 2c 20 74 68 65 20 64 65 66 61 75 6c 74  1.0, the default
4dc0: 20 76 61 6c 75 65 20 6d 61 79 20 61 6c 73 6f 20   value may also 
4dd0: 62 65 20 6f 6e 65 20 6f 66 20 74 68 65 20 73 70  be one of the sp
4de0: 65 63 69 61 6c 20 63 61 73 65 2d 69 6e 64 65 70  ecial case-indep
4df0: 65 6e 64 61 6e 74 0a 6b 65 79 77 6f 72 64 73 20  endant.keywords 
4e00: 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55  CURRENT_TIME, CU
4e10: 52 52 45 4e 54 5f 44 41 54 45 20 6f 72 20 43 55  RRENT_DATE or CU
4e20: 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2e  RRENT_TIMESTAMP.
4e30: 20 49 66 20 74 68 65 20 76 61 6c 75 65 20 69 73   If the value is
4e40: 0a 4e 55 4c 4c 2c 20 61 20 73 74 72 69 6e 67 20  .NULL, a string 
4e50: 63 6f 6e 73 74 61 6e 74 20 6f 72 20 6e 75 6d 62  constant or numb
4e60: 65 72 2c 20 69 74 20 69 73 20 6c 69 74 65 72 61  er, it is litera
4e70: 6c 6c 79 20 69 6e 73 65 72 74 65 64 20 69 6e 74  lly inserted int
4e80: 6f 20 74 68 65 20 63 6f 6c 75 6d 6e 0a 77 68 65  o the column.whe
4e90: 6e 65 76 65 72 20 61 6e 20 49 4e 53 45 52 54 20  never an INSERT 
4ea0: 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 64  statement that d
4eb0: 6f 65 73 20 6e 6f 74 20 73 70 65 63 69 66 79 20  oes not specify 
4ec0: 61 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  a value for the 
4ed0: 63 6f 6c 75 6d 6e 20 69 73 0a 65 78 65 63 75 74  column is.execut
4ee0: 65 64 2e 20 49 66 20 74 68 65 20 76 61 6c 75 65  ed. If the value
4ef0: 20 69 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45   is CURRENT_TIME
4f00: 2c 20 43 55 52 52 45 4e 54 5f 44 41 54 45 20 6f  , CURRENT_DATE o
4f10: 72 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54  r CURRENT_TIMEST
4f20: 41 4d 50 2c 20 74 68 65 6e 0a 74 68 65 20 63 75  AMP, then.the cu
4f30: 72 72 65 6e 74 20 55 54 43 20 64 61 74 65 20 61  rrent UTC date a
4f40: 6e 64 2f 6f 72 20 74 69 6d 65 20 69 73 20 69 6e  nd/or time is in
4f50: 73 65 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20  serted into the 
4f60: 63 6f 6c 75 6d 6e 73 2e 20 46 6f 72 0a 43 55 52  columns. For.CUR
4f70: 52 45 4e 54 5f 54 49 4d 45 2c 20 74 68 65 20 66  RENT_TIME, the f
4f80: 6f 72 6d 61 74 20 69 73 20 48 48 3a 4d 4d 3a 53  ormat is HH:MM:S
4f90: 53 2e 20 46 6f 72 20 43 55 52 52 45 4e 54 5f 44  S. For CURRENT_D
4fa0: 41 54 45 2c 20 59 59 59 59 2d 4d 4d 2d 44 44 2e  ATE, YYYY-MM-DD.
4fb0: 20 54 68 65 20 66 6f 72 6d 61 74 0a 66 6f 72 20   The format.for 
4fc0: 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d  CURRENT_TIMESTAM
4fd0: 50 20 69 73 20 22 59 59 59 59 2d 4d 4d 2d 44 44  P is "YYYY-MM-DD
4fe0: 20 48 48 3a 4d 4d 3a 53 53 22 2e 0a 3c 2f 70 3e   HH:MM:SS"..</p>
4ff0: 0a 0a 3c 70 3e 53 70 65 63 69 66 79 69 6e 67 20  ..<p>Specifying 
5000: 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6e 6f  a PRIMARY KEY no
5010: 72 6d 61 6c 6c 79 20 6a 75 73 74 20 63 72 65 61  rmally just crea
5020: 74 65 73 20 61 20 55 4e 49 51 55 45 20 69 6e 64  tes a UNIQUE ind
5030: 65 78 0a 6f 6e 20 74 68 65 20 63 6f 72 72 65 73  ex.on the corres
5040: 70 6f 6e 64 69 6e 67 20 63 6f 6c 75 6d 6e 73 2e  ponding columns.
5050: 20 20 48 6f 77 65 76 65 72 2c 20 69 66 20 70 72    However, if pr
5060: 69 6d 61 72 79 20 6b 65 79 20 69 73 20 6f 6e 20  imary key is on 
5070: 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 0a  a single column.
5080: 74 68 61 74 20 68 61 73 20 64 61 74 61 74 79 70  that has datatyp
5090: 65 20 49 4e 54 45 47 45 52 2c 20 74 68 65 6e 20  e INTEGER, then 
50a0: 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 73 20 75  that column is u
50b0: 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 0a 61  sed internally.a
50c0: 73 20 74 68 65 20 61 63 74 75 61 6c 20 6b 65 79  s the actual key
50d0: 20 6f 66 20 74 68 65 20 42 2d 54 72 65 65 20 66   of the B-Tree f
50e0: 6f 72 20 74 68 65 20 74 61 62 6c 65 2e 20 20 54  or the table.  T
50f0: 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 74  his means that t
5100: 68 65 20 63 6f 6c 75 6d 6e 0a 6d 61 79 20 6f 6e  he column.may on
5110: 6c 79 20 68 6f 6c 64 20 75 6e 69 71 75 65 20 69  ly hold unique i
5120: 6e 74 65 67 65 72 20 76 61 6c 75 65 73 2e 20 20  nteger values.  
5130: 28 45 78 63 65 70 74 20 66 6f 72 20 74 68 69 73  (Except for this
5140: 20 6f 6e 65 20 63 61 73 65 2c 0a 53 51 4c 69 74   one case,.SQLit
5150: 65 20 69 67 6e 6f 72 65 73 20 74 68 65 20 64 61  e ignores the da
5160: 74 61 74 79 70 65 20 73 70 65 63 69 66 69 63 61  tatype specifica
5170: 74 69 6f 6e 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  tion of columns 
5180: 61 6e 64 20 61 6c 6c 6f 77 73 0a 61 6e 79 20 6b  and allows.any k
5190: 69 6e 64 20 6f 66 20 64 61 74 61 20 74 6f 20 62  ind of data to b
51a0: 65 20 70 75 74 20 69 6e 20 61 20 63 6f 6c 75 6d  e put in a colum
51b0: 6e 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20  n regardless of 
51c0: 69 74 73 20 64 65 63 6c 61 72 65 64 0a 64 61 74  its declared.dat
51d0: 61 74 79 70 65 2e 29 20 20 49 66 20 61 20 74 61  atype.)  If a ta
51e0: 62 6c 65 20 64 6f 65 73 20 6e 6f 74 20 68 61 76  ble does not hav
51f0: 65 20 61 6e 20 49 4e 54 45 47 45 52 20 50 52 49  e an INTEGER PRI
5200: 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 2c  MARY KEY column,
5210: 0a 74 68 65 6e 20 74 68 65 20 42 2d 54 72 65 65  .then the B-Tree
5220: 20 6b 65 79 20 77 69 6c 6c 20 62 65 20 61 20 61   key will be a a
5230: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 67 65 6e  utomatically gen
5240: 65 72 61 74 65 64 20 69 6e 74 65 67 65 72 2e 20  erated integer. 
5250: 20 54 68 65 0a 42 2d 54 72 65 65 20 6b 65 79 20   The.B-Tree key 
5260: 66 6f 72 20 61 20 72 6f 77 20 63 61 6e 20 61 6c  for a row can al
5270: 77 61 79 73 20 62 65 20 61 63 63 65 73 73 65 64  ways be accessed
5280: 20 75 73 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68   using one of th
5290: 65 0a 73 70 65 63 69 61 6c 20 6e 61 6d 65 73 20  e.special names 
52a0: 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c 20  "<b>ROWID</b>", 
52b0: 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72  "<b>OID</b>", or
52c0: 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e   "<b>_ROWID_</b>
52d0: 22 2e 0a 54 68 69 73 20 69 73 20 74 72 75 65 20  "..This is true 
52e0: 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68  regardless of wh
52f0: 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65  ether or not the
5300: 72 65 20 69 73 20 61 6e 20 49 4e 54 45 47 45 52  re is an INTEGER
5310: 0a 50 52 49 4d 41 52 59 20 4b 45 59 2e 20 20 41  .PRIMARY KEY.  A
5320: 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  n INTEGER PRIMAR
5330: 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20 6d 61 6e  Y KEY column man
5340: 20 61 6c 73 6f 20 69 6e 63 6c 75 64 65 20 74 68   also include th
5350: 65 0a 6b 65 79 77 6f 72 64 20 41 55 54 4f 49 4e  e.keyword AUTOIN
5360: 43 52 45 4d 45 4e 54 2e 20 20 54 68 65 20 41 55  CREMENT.  The AU
5370: 54 4f 49 4e 43 52 45 4d 45 4e 54 20 6b 65 79 77  TOINCREMENT keyw
5380: 6f 72 64 20 6d 6f 64 69 66 69 65 64 20 74 68 65  ord modified the
5390: 20 77 61 79 0a 74 68 61 74 20 42 2d 54 72 65 65   way.that B-Tree
53a0: 20 6b 65 79 73 20 61 72 65 20 61 75 74 6f 6d 61   keys are automa
53b0: 74 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74 65  tically generate
53c0: 64 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c 20 64  d.  Additional d
53d0: 65 74 61 69 6c 0a 6f 6e 20 61 75 74 6f 6d 61 74  etail.on automat
53e0: 69 63 20 42 2d 54 72 65 65 20 6b 65 79 20 67 65  ic B-Tree key ge
53f0: 6e 65 72 61 74 69 6f 6e 20 69 73 20 61 76 61 69  neration is avai
5400: 6c 61 62 6c 65 0a 3c 61 20 68 72 65 66 3d 22 61  lable.<a href="a
5410: 75 74 6f 69 6e 63 2e 68 74 6d 6c 22 3e 73 65 70  utoinc.html">sep
5420: 61 72 61 74 65 6c 79 3c 2f 61 3e 2e 3c 2f 70 3e  arately</a>.</p>
5430: 0a 0a 3c 70 3e 49 66 20 74 68 65 20 22 54 45 4d  ..<p>If the "TEM
5440: 50 22 20 6f 72 20 22 54 45 4d 50 4f 52 41 52 59  P" or "TEMPORARY
5450: 22 20 6b 65 79 77 6f 72 64 20 6f 63 63 75 72 73  " keyword occurs
5460: 20 69 6e 20 62 65 74 77 65 65 6e 20 22 43 52 45   in between "CRE
5470: 41 54 45 22 0a 61 6e 64 20 22 54 41 42 4c 45 22  ATE".and "TABLE"
5480: 20 74 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20   then the table 
5490: 74 68 61 74 20 69 73 20 63 72 65 61 74 65 64 20  that is created 
54a0: 69 73 20 6f 6e 6c 79 20 76 69 73 69 62 6c 65 0a  is only visible.
54b0: 77 69 74 68 69 6e 20 74 68 61 74 20 73 61 6d 65  within that same
54c0: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
54d0: 74 69 6f 6e 0a 61 6e 64 20 69 73 20 61 75 74 6f  tion.and is auto
54e0: 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c 65 74 65  matically delete
54f0: 64 20 77 68 65 6e 0a 74 68 65 20 64 61 74 61 62  d when.the datab
5500: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  ase connection i
5510: 73 20 63 6c 6f 73 65 64 2e 20 20 41 6e 79 20 69  s closed.  Any i
5520: 6e 64 69 63 65 73 20 63 72 65 61 74 65 64 20 6f  ndices created o
5530: 6e 20 61 20 74 65 6d 70 6f 72 61 72 79 20 74 61  n a temporary ta
5540: 62 6c 65 0a 61 72 65 20 61 6c 73 6f 20 74 65 6d  ble.are also tem
5550: 70 6f 72 61 72 79 2e 20 20 54 65 6d 70 6f 72 61  porary.  Tempora
5560: 72 79 20 74 61 62 6c 65 73 20 61 6e 64 20 69 6e  ry tables and in
5570: 64 69 63 65 73 20 61 72 65 20 73 74 6f 72 65 64  dices are stored
5580: 20 69 6e 20 61 0a 73 65 70 61 72 61 74 65 20 66   in a.separate f
5590: 69 6c 65 20 64 69 73 74 69 6e 63 74 20 66 72 6f  ile distinct fro
55a0: 6d 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  m the main datab
55b0: 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c  ase file.</p>..<
55c0: 70 3e 20 49 66 20 61 20 26 6c 74 3b 64 61 74 61  p> If a &lt;data
55d0: 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73  base-name&gt; is
55e0: 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e   specified, then
55f0: 20 74 68 65 20 74 61 62 6c 65 20 69 73 20 63 72   the table is cr
5600: 65 61 74 65 64 20 69 6e 20 0a 74 68 65 20 6e 61  eated in .the na
5610: 6d 65 64 20 64 61 74 61 62 61 73 65 2e 20 49 74  med database. It
5620: 20 69 73 20 61 6e 20 65 72 72 6f 72 20 74 6f 20   is an error to 
5630: 73 70 65 63 69 66 79 20 62 6f 74 68 20 61 20 26  specify both a &
5640: 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  lt;database-name
5650: 26 67 74 3b 0a 61 6e 64 20 74 68 65 20 54 45 4d  &gt;.and the TEM
5660: 50 20 6b 65 79 77 6f 72 64 2c 20 75 6e 6c 65 73  P keyword, unles
5670: 73 20 74 68 65 20 26 6c 74 3b 64 61 74 61 62 61  s the &lt;databa
5680: 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 22  se-name&gt; is "
5690: 74 65 6d 70 22 2e 20 49 66 20 6e 6f 0a 64 61 74  temp". If no.dat
56a0: 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 73 70  abase name is sp
56b0: 65 63 69 66 69 65 64 2c 20 61 6e 64 20 74 68 65  ecified, and the
56c0: 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 20 69 73   TEMP keyword is
56d0: 20 6e 6f 74 20 70 72 65 73 65 6e 74 2c 0a 74 68   not present,.th
56e0: 65 20 74 61 62 6c 65 20 69 73 20 63 72 65 61 74  e table is creat
56f0: 65 64 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64  ed in the main d
5700: 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70  atabase.</p>..<p
5710: 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f  >The optional co
5720: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 66 6f  nflict-clause fo
5730: 6c 6c 6f 77 69 6e 67 20 65 61 63 68 20 63 6f 6e  llowing each con
5740: 73 74 72 61 69 6e 74 0a 61 6c 6c 6f 77 73 20 74  straint.allows t
5750: 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
5760: 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69   of an alternati
5770: 76 65 20 64 65 66 61 75 6c 74 0a 63 6f 6e 73 74  ve default.const
5780: 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72  raint conflict r
5790: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
57a0: 74 68 6d 20 66 6f 72 20 74 68 61 74 20 63 6f 6e  thm for that con
57b0: 73 74 72 61 69 6e 74 2e 0a 54 68 65 20 64 65 66  straint..The def
57c0: 61 75 6c 74 20 69 73 20 61 62 6f 72 74 20 41 42  ault is abort AB
57d0: 4f 52 54 2e 20 20 44 69 66 66 65 72 65 6e 74 20  ORT.  Different 
57e0: 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69 74 68  constraints with
57f0: 69 6e 20 74 68 65 20 73 61 6d 65 0a 74 61 62 6c  in the same.tabl
5800: 65 20 6d 61 79 20 68 61 76 65 20 64 69 66 66 65  e may have diffe
5810: 72 65 6e 74 20 64 65 66 61 75 6c 74 20 63 6f 6e  rent default con
5820: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
5830: 20 61 6c 67 6f 72 69 74 68 6d 73 2e 0a 49 66 20   algorithms..If 
5840: 61 6e 20 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c  an COPY, INSERT,
5850: 20 6f 72 20 55 50 44 41 54 45 20 63 6f 6d 6d 61   or UPDATE comma
5860: 6e 64 20 73 70 65 63 69 66 69 65 73 20 61 20 64  nd specifies a d
5870: 69 66 66 65 72 65 6e 74 20 63 6f 6e 66 6c 69 63  ifferent conflic
5880: 74 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t.resolution alg
5890: 6f 72 69 74 68 6d 2c 20 74 68 65 6e 20 74 68 61  orithm, then tha
58a0: 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  t algorithm is u
58b0: 73 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 20  sed in place of 
58c0: 74 68 65 0a 64 65 66 61 75 6c 74 20 61 6c 67 6f  the.default algo
58d0: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
58e0: 69 6e 20 74 68 65 20 43 52 45 41 54 45 20 54 41  in the CREATE TA
58f0: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0a 53  BLE statement..S
5900: 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74  ee the section t
5910: 69 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23  itled.<a href="#
5920: 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e  conflict">ON CON
5930: 46 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64  FLICT</a> for ad
5940: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
5950: 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 43 48  tion.</p>..<p>CH
5960: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  ECK constraints 
5970: 61 72 65 20 69 67 6e 6f 72 65 64 20 69 6e 20 74  are ignored in t
5980: 68 65 20 63 75 72 72 65 6e 74 20 69 6d 70 6c 65  he current imple
5990: 6d 65 6e 74 61 74 69 6f 6e 2e 0a 53 75 70 70 6f  mentation..Suppo
59a0: 72 74 20 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e  rt for CHECK con
59b0: 73 74 72 61 69 6e 74 73 20 6d 61 79 20 62 65 20  straints may be 
59c0: 61 64 64 65 64 20 69 6e 20 74 68 65 20 66 75 74  added in the fut
59d0: 75 72 65 2e 20 20 41 73 20 6f 66 0a 76 65 72 73  ure.  As of.vers
59e0: 69 6f 6e 20 32 2e 33 2e 30 2c 20 4e 4f 54 20 4e  ion 2.3.0, NOT N
59f0: 55 4c 4c 2c 20 50 52 49 4d 41 52 59 20 4b 45 59  ULL, PRIMARY KEY
5a00: 2c 20 61 6e 64 20 55 4e 49 51 55 45 20 63 6f 6e  , and UNIQUE con
5a10: 73 74 72 61 69 6e 74 73 20 61 6c 6c 0a 77 6f 72  straints all.wor
5a20: 6b 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65  k.</p>..<p>There
5a30: 20 61 72 65 20 6e 6f 20 61 72 62 69 74 72 61 72   are no arbitrar
5a40: 79 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65 20  y limits on the 
5a50: 6e 75 6d 62 65 72 0a 6f 66 20 63 6f 6c 75 6d 6e  number.of column
5a60: 73 20 6f 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62  s or on the numb
5a70: 65 72 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74  er of constraint
5a80: 73 20 69 6e 20 61 20 74 61 62 6c 65 2e 0a 54 68  s in a table..Th
5a90: 65 20 74 6f 74 61 6c 20 61 6d 6f 75 6e 74 20 6f  e total amount o
5aa0: 66 20 64 61 74 61 20 69 6e 20 61 20 73 69 6e 67  f data in a sing
5ab0: 6c 65 20 72 6f 77 20 69 73 20 6c 69 6d 69 74 65  le row is limite
5ac0: 64 20 74 6f 20 61 62 6f 75 74 0a 31 20 6d 65 67  d to about.1 meg
5ad0: 61 62 79 74 65 73 20 69 6e 20 76 65 72 73 69 6f  abytes in versio
5ae0: 6e 20 32 2e 38 2e 20 20 49 6e 20 76 65 72 73 69  n 2.8.  In versi
5af0: 6f 6e 20 33 2e 30 20 74 68 65 72 65 20 69 73 20  on 3.0 there is 
5b00: 6e 6f 20 61 72 62 69 74 72 61 72 79 0a 6c 69 6d  no arbitrary.lim
5b10: 69 74 20 6f 6e 20 74 68 65 20 61 6d 6f 75 6e 74  it on the amount
5b20: 20 6f 66 20 64 61 74 61 20 69 6e 20 61 20 72 6f   of data in a ro
5b30: 77 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 54 68 65 20  w.</p>...<p>The 
5b40: 43 52 45 41 54 45 20 54 41 42 4c 45 20 41 53 20  CREATE TABLE AS 
5b50: 66 6f 72 6d 20 64 65 66 69 6e 65 73 20 74 68 65  form defines the
5b60: 20 74 61 62 6c 65 20 74 6f 20 62 65 0a 74 68 65   table to be.the
5b70: 20 72 65 73 75 6c 74 20 73 65 74 20 6f 66 20 61   result set of a
5b80: 20 71 75 65 72 79 2e 20 20 54 68 65 20 6e 61 6d   query.  The nam
5b90: 65 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  es of the table 
5ba0: 63 6f 6c 75 6d 6e 73 20 61 72 65 0a 74 68 65 20  columns are.the 
5bb0: 6e 61 6d 65 73 20 6f 66 20 74 68 65 20 63 6f 6c  names of the col
5bc0: 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75  umns in the resu
5bd0: 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  lt.</p>..<p>The 
5be0: 65 78 61 63 74 20 74 65 78 74 0a 6f 66 20 65 61  exact text.of ea
5bf0: 63 68 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  ch CREATE TABLE 
5c00: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73 74 6f  statement is sto
5c10: 72 65 64 20 69 6e 20 74 68 65 20 3c 62 3e 73 71  red in the <b>sq
5c20: 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a  lite_master</b>.
5c30: 74 61 62 6c 65 2e 20 20 45 76 65 72 79 20 74 69  table.  Every ti
5c40: 6d 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20  me the database 
5c50: 69 73 20 6f 70 65 6e 65 64 2c 20 61 6c 6c 20 43  is opened, all C
5c60: 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74  REATE TABLE stat
5c70: 65 6d 65 6e 74 73 0a 61 72 65 20 72 65 61 64 20  ements.are read 
5c80: 66 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69  from the <b>sqli
5c90: 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61  te_master</b> ta
5ca0: 62 6c 65 20 61 6e 64 20 75 73 65 64 20 74 6f 20  ble and used to 
5cb0: 72 65 67 65 6e 65 72 61 74 65 0a 53 51 4c 69 74  regenerate.SQLit
5cc0: 65 27 73 20 69 6e 74 65 72 6e 61 6c 20 72 65 70  e's internal rep
5cd0: 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74  resentation of t
5ce0: 68 65 20 74 61 62 6c 65 20 6c 61 79 6f 75 74 2e  he table layout.
5cf0: 0a 49 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c  .If the original
5d00: 20 63 6f 6d 6d 61 6e 64 20 77 61 73 20 61 20 43   command was a C
5d10: 52 45 41 54 45 20 54 41 42 4c 45 20 41 53 20 74  REATE TABLE AS t
5d20: 68 65 6e 20 74 68 65 6e 20 61 6e 20 65 71 75 69  hen then an equi
5d30: 76 61 6c 65 6e 74 0a 43 52 45 41 54 45 20 54 41  valent.CREATE TA
5d40: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73  BLE statement is
5d50: 20 73 79 6e 74 68 65 73 69 7a 65 64 20 61 6e 64   synthesized and
5d60: 20 73 74 6f 72 65 20 69 6e 20 3c 62 3e 73 71 6c   store in <b>sql
5d70: 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 69  ite_master</b>.i
5d80: 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20 6f  n place of the o
5d90: 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64 2e  riginal command.
5da0: 0a 54 68 65 20 74 65 78 74 20 6f 66 20 43 52 45  .The text of CRE
5db0: 41 54 45 20 54 45 4d 50 4f 52 41 52 59 20 54 41  ATE TEMPORARY TA
5dc0: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 73 20 61  BLE statements a
5dd0: 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65  re stored in the
5de0: 0a 3c 62 3e 73 71 6c 69 74 65 5f 74 65 6d 70 5f  .<b>sqlite_temp_
5df0: 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65  master</b> table
5e00: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65  ..</p>..<p>Table
5e10: 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73  s are removed us
5e20: 69 6e 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d  ing the <a href=
5e30: 22 23 64 72 6f 70 74 61 62 6c 65 22 3e 44 52 4f  "#droptable">DRO
5e40: 50 20 54 41 42 4c 45 3c 2f 61 3e 20 0a 73 74 61  P TABLE</a> .sta
5e50: 74 65 6d 65 6e 74 2e 20 20 3c 2f 70 3e 0a 7d 0a  tement.  </p>.}.
5e60: 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54  ..Section {CREAT
5e70: 45 20 54 52 49 47 47 45 52 7d 20 63 72 65 61 74  E TRIGGER} creat
5e80: 65 74 72 69 67 67 65 72 0a 0a 53 79 6e 74 61 78  etrigger..Syntax
5e90: 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
5ea0: 20 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d 50 20   {.CREATE [TEMP 
5eb0: 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20 54 52 49  | TEMPORARY] TRI
5ec0: 47 47 45 52 20 3c 74 72 69 67 67 65 72 2d 6e 61  GGER <trigger-na
5ed0: 6d 65 3e 20 5b 20 42 45 46 4f 52 45 20 7c 20 41  me> [ BEFORE | A
5ee0: 46 54 45 52 20 5d 0a 3c 64 61 74 61 62 61 73 65  FTER ].<database
5ef0: 2d 65 76 65 6e 74 3e 20 4f 4e 20 5b 3c 64 61 74  -event> ON [<dat
5f00: 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c  abase-name> .] <
5f10: 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 3c 74 72 69  table-name>.<tri
5f20: 67 67 65 72 2d 61 63 74 69 6f 6e 3e 0a 7d 0a 0a  gger-action>.}..
5f30: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
5f40: 65 6d 65 6e 74 7d 20 7b 0a 43 52 45 41 54 45 20  ement} {.CREATE 
5f50: 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52  [TEMP | TEMPORAR
5f60: 59 5d 20 54 52 49 47 47 45 52 20 3c 74 72 69 67  Y] TRIGGER <trig
5f70: 67 65 72 2d 6e 61 6d 65 3e 20 49 4e 53 54 45 41  ger-name> INSTEA
5f80: 44 20 4f 46 0a 3c 64 61 74 61 62 61 73 65 2d 65  D OF.<database-e
5f90: 76 65 6e 74 3e 20 4f 4e 20 5b 3c 64 61 74 61 62  vent> ON [<datab
5fa0: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 76 69  ase-name> .] <vi
5fb0: 65 77 2d 6e 61 6d 65 3e 0a 3c 74 72 69 67 67 65  ew-name>.<trigge
5fc0: 72 2d 61 63 74 69 6f 6e 3e 0a 7d 0a 0a 53 79 6e  r-action>.}..Syn
5fd0: 74 61 78 20 7b 64 61 74 61 62 61 73 65 2d 65 76  tax {database-ev
5fe0: 65 6e 74 7d 20 7b 0a 44 45 4c 45 54 45 20 7c 20  ent} {.DELETE | 
5ff0: 0a 49 4e 53 45 52 54 20 7c 20 0a 55 50 44 41 54  .INSERT | .UPDAT
6000: 45 20 7c 20 0a 55 50 44 41 54 45 20 4f 46 20 3c  E | .UPDATE OF <
6010: 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 0a 7d 0a 0a  column-list>.}..
6020: 53 79 6e 74 61 78 20 7b 74 72 69 67 67 65 72 2d  Syntax {trigger-
6030: 61 63 74 69 6f 6e 7d 20 7b 0a 5b 20 46 4f 52 20  action} {.[ FOR 
6040: 45 41 43 48 20 52 4f 57 20 7c 20 46 4f 52 20 45  EACH ROW | FOR E
6050: 41 43 48 20 53 54 41 54 45 4d 45 4e 54 20 5d 20  ACH STATEMENT ] 
6060: 5b 20 57 48 45 4e 20 3c 65 78 70 72 65 73 73 69  [ WHEN <expressi
6070: 6f 6e 3e 20 5d 20 0a 42 45 47 49 4e 20 0a 20 20  on> ] .BEGIN .  
6080: 3c 74 72 69 67 67 65 72 2d 73 74 65 70 3e 20 3b  <trigger-step> ;
6090: 20 5b 20 3c 74 72 69 67 67 65 72 2d 73 74 65 70   [ <trigger-step
60a0: 3e 20 3b 20 5d 2a 0a 45 4e 44 0a 7d 0a 0a 53 79  > ; ]*.END.}..Sy
60b0: 6e 74 61 78 20 7b 74 72 69 67 67 65 72 2d 73 74  ntax {trigger-st
60c0: 65 70 7d 20 7b 0a 3c 75 70 64 61 74 65 2d 73 74  ep} {.<update-st
60d0: 61 74 65 6d 65 6e 74 3e 20 7c 20 3c 69 6e 73 65  atement> | <inse
60e0: 72 74 2d 73 74 61 74 65 6d 65 6e 74 3e 20 7c 20  rt-statement> | 
60f0: 0a 3c 64 65 6c 65 74 65 2d 73 74 61 74 65 6d 65  .<delete-stateme
6100: 6e 74 3e 20 7c 20 3c 73 65 6c 65 63 74 2d 73 74  nt> | <select-st
6110: 61 74 65 6d 65 6e 74 3e 20 0a 7d 0a 0a 70 75 74  atement> .}..put
6120: 73 20 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54  s {.<p>The CREAT
6130: 45 20 54 52 49 47 47 45 52 20 73 74 61 74 65 6d  E TRIGGER statem
6140: 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20 61  ent is used to a
6150: 64 64 20 74 72 69 67 67 65 72 73 20 74 6f 20 74  dd triggers to t
6160: 68 65 20 0a 64 61 74 61 62 61 73 65 20 73 63 68  he .database sch
6170: 65 6d 61 2e 20 54 72 69 67 67 65 72 73 20 61 72  ema. Triggers ar
6180: 65 20 64 61 74 61 62 61 73 65 20 6f 70 65 72 61  e database opera
6190: 74 69 6f 6e 73 20 28 74 68 65 20 3c 69 3e 74 72  tions (the <i>tr
61a0: 69 67 67 65 72 2d 61 63 74 69 6f 6e 3c 2f 69 3e  igger-action</i>
61b0: 29 20 0a 74 68 61 74 20 61 72 65 20 61 75 74 6f  ) .that are auto
61c0: 6d 61 74 69 63 61 6c 6c 79 20 70 65 72 66 6f 72  matically perfor
61d0: 6d 65 64 20 77 68 65 6e 20 61 20 73 70 65 63 69  med when a speci
61e0: 66 69 65 64 20 64 61 74 61 62 61 73 65 20 65 76  fied database ev
61f0: 65 6e 74 20 28 74 68 65 0a 3c 69 3e 64 61 74 61  ent (the.<i>data
6200: 62 61 73 65 2d 65 76 65 6e 74 3c 2f 69 3e 29 20  base-event</i>) 
6210: 6f 63 63 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a 3c  occurs.  </p>..<
6220: 70 3e 41 20 74 72 69 67 67 65 72 20 6d 61 79 20  p>A trigger may 
6230: 62 65 20 73 70 65 63 69 66 69 65 64 20 74 6f 20  be specified to 
6240: 66 69 72 65 20 77 68 65 6e 65 76 65 72 20 61 20  fire whenever a 
6250: 44 45 4c 45 54 45 2c 20 49 4e 53 45 52 54 20 6f  DELETE, INSERT o
6260: 72 20 55 50 44 41 54 45 20 6f 66 20 61 0a 70 61  r UPDATE of a.pa
6270: 72 74 69 63 75 6c 61 72 20 64 61 74 61 62 61 73  rticular databas
6280: 65 20 74 61 62 6c 65 20 6f 63 63 75 72 73 2c 20  e table occurs, 
6290: 6f 72 20 77 68 65 6e 65 76 65 72 20 61 6e 20 55  or whenever an U
62a0: 50 44 41 54 45 20 6f 66 20 6f 6e 65 20 6f 72 20  PDATE of one or 
62b0: 6d 6f 72 65 0a 73 70 65 63 69 66 69 65 64 20 63  more.specified c
62c0: 6f 6c 75 6d 6e 73 20 6f 66 20 61 20 74 61 62 6c  olumns of a tabl
62d0: 65 20 61 72 65 20 75 70 64 61 74 65 64 2e 3c 2f  e are updated.</
62e0: 70 3e 0a 0a 3c 70 3e 41 74 20 74 68 69 73 20 74  p>..<p>At this t
62f0: 69 6d 65 20 53 51 4c 69 74 65 20 73 75 70 70 6f  ime SQLite suppo
6300: 72 74 73 20 6f 6e 6c 79 20 46 4f 52 20 45 41 43  rts only FOR EAC
6310: 48 20 52 4f 57 20 74 72 69 67 67 65 72 73 2c 20  H ROW triggers, 
6320: 6e 6f 74 20 46 4f 52 20 45 41 43 48 0a 53 54 41  not FOR EACH.STA
6330: 54 45 4d 45 4e 54 20 74 72 69 67 67 65 72 73 2e  TEMENT triggers.
6340: 20 48 65 6e 63 65 20 65 78 70 6c 69 63 69 74 6c   Hence explicitl
6350: 79 20 73 70 65 63 69 66 79 69 6e 67 20 46 4f 52  y specifying FOR
6360: 20 45 41 43 48 20 52 4f 57 20 69 73 20 6f 70 74   EACH ROW is opt
6370: 69 6f 6e 61 6c 2e 20 20 46 4f 52 0a 45 41 43 48  ional.  FOR.EACH
6380: 20 52 4f 57 20 69 6d 70 6c 69 65 73 20 74 68 61   ROW implies tha
6390: 74 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  t the SQL statem
63a0: 65 6e 74 73 20 73 70 65 63 69 66 69 65 64 20 61  ents specified a
63b0: 73 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65  s <i>trigger-ste
63c0: 70 73 3c 2f 69 3e 20 0a 6d 61 79 20 62 65 20 65  ps</i> .may be e
63d0: 78 65 63 75 74 65 64 20 28 64 65 70 65 6e 64 69  xecuted (dependi
63e0: 6e 67 20 6f 6e 20 74 68 65 20 57 48 45 4e 20 63  ng on the WHEN c
63f0: 6c 61 75 73 65 29 20 66 6f 72 20 65 61 63 68 20  lause) for each 
6400: 64 61 74 61 62 61 73 65 20 72 6f 77 20 62 65 69  database row bei
6410: 6e 67 0a 69 6e 73 65 72 74 65 64 2c 20 75 70 64  ng.inserted, upd
6420: 61 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20  ated or deleted 
6430: 62 79 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  by the statement
6440: 20 63 61 75 73 69 6e 67 20 74 68 65 20 74 72 69   causing the tri
6450: 67 67 65 72 20 74 6f 20 66 69 72 65 2e 3c 2f 70  gger to fire.</p
6460: 3e 0a 0a 3c 70 3e 42 6f 74 68 20 74 68 65 20 57  >..<p>Both the W
6470: 48 45 4e 20 63 6c 61 75 73 65 20 61 6e 64 20 74  HEN clause and t
6480: 68 65 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74  he <i>trigger-st
6490: 65 70 73 3c 2f 69 3e 20 6d 61 79 20 61 63 63 65  eps</i> may acce
64a0: 73 73 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 0a  ss elements of .
64b0: 74 68 65 20 72 6f 77 20 62 65 69 6e 67 20 69 6e  the row being in
64c0: 73 65 72 74 65 64 2c 20 64 65 6c 65 74 65 64 20  serted, deleted 
64d0: 6f 72 20 75 70 64 61 74 65 64 20 75 73 69 6e 67  or updated using
64e0: 20 72 65 66 65 72 65 6e 63 65 73 20 6f 66 20 74   references of t
64f0: 68 65 20 66 6f 72 6d 20 0a 22 4e 45 57 2e 3c 69  he form ."NEW.<i
6500: 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e  >column-name</i>
6510: 22 20 61 6e 64 20 22 4f 4c 44 2e 3c 69 3e 63 6f  " and "OLD.<i>co
6520: 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 2c 20  lumn-name</i>", 
6530: 77 68 65 72 65 0a 3c 69 3e 63 6f 6c 75 6d 6e 2d  where.<i>column-
6540: 6e 61 6d 65 3c 2f 69 3e 20 69 73 20 74 68 65 20  name</i> is the 
6550: 6e 61 6d 65 20 6f 66 20 61 20 63 6f 6c 75 6d 6e  name of a column
6560: 20 66 72 6f 6d 20 74 68 65 20 74 61 62 6c 65 20   from the table 
6570: 74 68 61 74 20 74 68 65 20 74 72 69 67 67 65 72  that the trigger
6580: 0a 69 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  .is associated w
6590: 69 74 68 2e 20 4f 4c 44 20 61 6e 64 20 4e 45 57  ith. OLD and NEW
65a0: 20 72 65 66 65 72 65 6e 63 65 73 20 6d 61 79 20   references may 
65b0: 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69 6e 20  only be used in 
65c0: 74 72 69 67 67 65 72 73 20 6f 6e 0a 3c 69 3e 74  triggers on.<i>t
65d0: 72 69 67 67 65 72 2d 65 76 65 6e 74 3c 2f 69 3e  rigger-event</i>
65e0: 73 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 79  s for which they
65f0: 20 61 72 65 20 72 65 6c 65 76 61 6e 74 2c 20 61   are relevant, a
6600: 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a  s follows:</p>..
6610: 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20  <table border=0 
6620: 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a  cellpadding=10>.
6630: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
6640: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
6650: 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69  ht" width=120><i
6660: 3e 49 4e 53 45 52 54 3c 2f 69 3e 3c 2f 74 64 3e  >INSERT</i></td>
6670: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
6680: 22 3e 4e 45 57 20 72 65 66 65 72 65 6e 63 65 73  ">NEW references
6690: 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a   are valid</td>.
66a0: 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76  </tr>.<tr>.<td v
66b0: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
66c0: 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d  n="right" width=
66d0: 31 32 30 3e 3c 69 3e 55 50 44 41 54 45 3c 2f 69  120><i>UPDATE</i
66e0: 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  ></td>.<td valig
66f0: 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 61 6e 64 20  n="top">NEW and 
6700: 4f 4c 44 20 72 65 66 65 72 65 6e 63 65 73 20 61  OLD references a
6710: 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f  re valid</td>.</
6720: 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  tr>.<tr>.<td val
6730: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
6740: 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 31 32  "right" width=12
6750: 30 3e 3c 69 3e 44 45 4c 45 54 45 3c 2f 69 3e 3c  0><i>DELETE</i><
6760: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
6770: 22 74 6f 70 22 3e 4f 4c 44 20 72 65 66 65 72 65  "top">OLD refere
6780: 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64 3c 2f  nces are valid</
6790: 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c  td>.</tr>.</tabl
67a0: 65 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61  e>.</p>..<p>If a
67b0: 20 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20   WHEN clause is 
67c0: 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51  supplied, the SQ
67d0: 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65  L statements spe
67e0: 63 69 66 69 65 64 20 61 73 20 3c 69 3e 74 72 69  cified as <i>tri
67f0: 67 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 61  gger-steps</i> a
6800: 72 65 20 6f 6e 6c 79 20 65 78 65 63 75 74 65 64  re only executed
6810: 20 66 6f 72 20 72 6f 77 73 20 66 6f 72 20 77 68   for rows for wh
6820: 69 63 68 20 74 68 65 20 57 48 45 4e 20 63 6c 61  ich the WHEN cla
6830: 75 73 65 20 69 73 20 74 72 75 65 2e 20 49 66 20  use is true. If 
6840: 6e 6f 20 57 48 45 4e 20 63 6c 61 75 73 65 20 69  no WHEN clause i
6850: 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20  s supplied, the 
6860: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 61  SQL statements a
6870: 72 65 20 65 78 65 63 75 74 65 64 20 66 6f 72 20  re executed for 
6880: 61 6c 6c 20 72 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c  all rows.</p>..<
6890: 70 3e 54 68 65 20 73 70 65 63 69 66 69 65 64 20  p>The specified 
68a0: 3c 69 3e 74 72 69 67 67 65 72 2d 74 69 6d 65 3c  <i>trigger-time<
68b0: 2f 69 3e 20 64 65 74 65 72 6d 69 6e 65 73 20 77  /i> determines w
68c0: 68 65 6e 20 74 68 65 20 3c 69 3e 74 72 69 67 67  hen the <i>trigg
68d0: 65 72 2d 73 74 65 70 73 3c 2f 69 3e 0a 77 69 6c  er-steps</i>.wil
68e0: 6c 20 62 65 20 65 78 65 63 75 74 65 64 20 72 65  l be executed re
68f0: 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e  lative to the in
6900: 73 65 72 74 69 6f 6e 2c 20 6d 6f 64 69 66 69 63  sertion, modific
6910: 61 74 69 6f 6e 20 6f 72 20 72 65 6d 6f 76 61 6c  ation or removal
6920: 20 6f 66 20 74 68 65 0a 61 73 73 6f 63 69 61 74   of the.associat
6930: 65 64 20 72 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ed row.</p>..<p>
6940: 41 6e 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63  An ON CONFLICT c
6950: 6c 61 75 73 65 20 6d 61 79 20 62 65 20 73 70 65  lause may be spe
6960: 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20 6f  cified as part o
6970: 66 20 61 6e 20 55 50 44 41 54 45 20 6f 72 20 49  f an UPDATE or I
6980: 4e 53 45 52 54 0a 3c 69 3e 74 72 69 67 67 65 72  NSERT.<i>trigger
6990: 2d 73 74 65 70 3c 2f 69 3e 2e 20 48 6f 77 65 76  -step</i>. Howev
69a0: 65 72 20 69 66 20 61 6e 20 4f 4e 20 43 4f 4e 46  er if an ON CONF
69b0: 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 73  LICT clause is s
69c0: 70 65 63 69 66 69 65 64 20 61 73 20 70 61 72 74  pecified as part
69d0: 20 6f 66 20 0a 74 68 65 20 73 74 61 74 65 6d 65   of .the stateme
69e0: 6e 74 20 63 61 75 73 69 6e 67 20 74 68 65 20 74  nt causing the t
69f0: 72 69 67 67 65 72 20 74 6f 20 66 69 72 65 2c 20  rigger to fire, 
6a00: 74 68 65 6e 20 74 68 69 73 20 63 6f 6e 66 6c 69  then this confli
6a10: 63 74 20 68 61 6e 64 6c 69 6e 67 0a 70 6f 6c 69  ct handling.poli
6a20: 63 79 20 69 73 20 75 73 65 64 20 69 6e 73 74 65  cy is used inste
6a30: 61 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67  ad.</p>..<p>Trig
6a40: 67 65 72 73 20 61 72 65 20 61 75 74 6f 6d 61 74  gers are automat
6a50: 69 63 61 6c 6c 79 20 64 72 6f 70 70 65 64 20 77  ically dropped w
6a60: 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68  hen the table th
6a70: 61 74 20 74 68 65 79 20 61 72 65 20 0a 61 73 73  at they are .ass
6a80: 6f 63 69 61 74 65 64 20 77 69 74 68 20 69 73 20  ociated with is 
6a90: 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  dropped.</p>..<p
6aa0: 3e 54 72 69 67 67 65 72 73 20 6d 61 79 20 62 65  >Triggers may be
6ab0: 20 63 72 65 61 74 65 64 20 6f 6e 20 76 69 65 77   created on view
6ac0: 73 2c 20 61 73 20 77 65 6c 6c 20 61 73 20 6f 72  s, as well as or
6ad0: 64 69 6e 61 72 79 20 74 61 62 6c 65 73 2c 20 62  dinary tables, b
6ae0: 79 20 73 70 65 63 69 66 79 69 6e 67 0a 49 4e 53  y specifying.INS
6af0: 54 45 41 44 20 4f 46 20 69 6e 20 74 68 65 20 43  TEAD OF in the C
6b00: 52 45 41 54 45 20 54 52 49 47 47 45 52 20 73 74  REATE TRIGGER st
6b10: 61 74 65 6d 65 6e 74 2e 20 49 66 20 6f 6e 65 20  atement. If one 
6b20: 6f 72 20 6d 6f 72 65 20 4f 4e 20 49 4e 53 45 52  or more ON INSER
6b30: 54 2c 20 4f 4e 20 44 45 4c 45 54 45 0a 6f 72 20  T, ON DELETE.or 
6b40: 4f 4e 20 55 50 44 41 54 45 20 74 72 69 67 67 65  ON UPDATE trigge
6b50: 72 73 20 61 72 65 20 64 65 66 69 6e 65 64 20 6f  rs are defined o
6b60: 6e 20 61 20 76 69 65 77 2c 20 74 68 65 6e 20 69  n a view, then i
6b70: 74 20 69 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f  t is not an erro
6b80: 72 20 74 6f 20 65 78 65 63 75 74 65 0a 61 6e 20  r to execute.an 
6b90: 49 4e 53 45 52 54 2c 20 44 45 4c 45 54 45 20 6f  INSERT, DELETE o
6ba0: 72 20 55 50 44 41 54 45 20 73 74 61 74 65 6d 65  r UPDATE stateme
6bb0: 6e 74 20 6f 6e 20 74 68 65 20 76 69 65 77 2c 20  nt on the view, 
6bc0: 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20 54 68  respectively. Th
6bd0: 65 72 65 61 66 74 65 72 2c 0a 65 78 65 63 75 74  ereafter,.execut
6be0: 69 6e 67 20 61 6e 20 49 4e 53 45 52 54 2c 20 44  ing an INSERT, D
6bf0: 45 4c 45 54 45 20 6f 72 20 55 50 44 41 54 45 20  ELETE or UPDATE 
6c00: 6f 6e 20 74 68 65 20 76 69 65 77 20 63 61 75 73  on the view caus
6c10: 65 73 20 74 68 65 20 61 73 73 6f 63 69 61 74 65  es the associate
6c20: 64 0a 20 20 74 72 69 67 67 65 72 73 20 74 6f 20  d.  triggers to 
6c30: 66 69 72 65 2e 20 54 68 65 20 72 65 61 6c 20 74  fire. The real t
6c40: 61 62 6c 65 73 20 75 6e 64 65 72 6c 79 69 6e 67  ables underlying
6c50: 20 74 68 65 20 76 69 65 77 20 61 72 65 20 6e 6f   the view are no
6c60: 74 20 6d 6f 64 69 66 69 65 64 0a 20 20 28 65 78  t modified.  (ex
6c70: 63 65 70 74 20 70 6f 73 73 69 62 6c 79 20 65 78  cept possibly ex
6c80: 70 6c 69 63 69 74 6c 79 2c 20 62 79 20 61 20 74  plicitly, by a t
6c90: 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 29 2e  rigger program).
6ca0: 3c 2f 70 3e 0a 0a 3c 70 3e 3c 62 3e 45 78 61 6d  </p>..<p><b>Exam
6cb0: 70 6c 65 3a 3c 2f 62 3e 3c 2f 70 3e 0a 0a 3c 70  ple:</b></p>..<p
6cc0: 3e 41 73 73 75 6d 69 6e 67 20 74 68 61 74 20 63  >Assuming that c
6cd0: 75 73 74 6f 6d 65 72 20 72 65 63 6f 72 64 73 20  ustomer records 
6ce0: 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68  are stored in th
6cf0: 65 20 22 63 75 73 74 6f 6d 65 72 73 22 20 74 61  e "customers" ta
6d00: 62 6c 65 2c 20 61 6e 64 0a 74 68 61 74 20 6f 72  ble, and.that or
6d10: 64 65 72 20 72 65 63 6f 72 64 73 20 61 72 65 20  der records are 
6d20: 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 22 6f  stored in the "o
6d30: 72 64 65 72 73 22 20 74 61 62 6c 65 2c 20 74 68  rders" table, th
6d40: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 72 69 67  e following trig
6d50: 67 65 72 0a 65 6e 73 75 72 65 73 20 74 68 61 74  ger.ensures that
6d60: 20 61 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 20   all associated 
6d70: 6f 72 64 65 72 73 20 61 72 65 20 72 65 64 69 72  orders are redir
6d80: 65 63 74 65 64 20 77 68 65 6e 20 61 20 63 75 73  ected when a cus
6d90: 74 6f 6d 65 72 20 63 68 61 6e 67 65 73 0a 68 69  tomer changes.hi
6da0: 73 20 6f 72 20 68 65 72 20 61 64 64 72 65 73 73  s or her address
6db0: 3a 3c 2f 70 3e 0a 7d 0a 45 78 61 6d 70 6c 65 20  :</p>.}.Example 
6dc0: 7b 0a 43 52 45 41 54 45 20 54 52 49 47 47 45 52  {.CREATE TRIGGER
6dd0: 20 75 70 64 61 74 65 5f 63 75 73 74 6f 6d 65 72   update_customer
6de0: 5f 61 64 64 72 65 73 73 20 55 50 44 41 54 45 20  _address UPDATE 
6df0: 4f 46 20 61 64 64 72 65 73 73 20 4f 4e 20 63 75  OF address ON cu
6e00: 73 74 6f 6d 65 72 73 20 0a 20 20 42 45 47 49 4e  stomers .  BEGIN
6e10: 0a 20 20 20 20 55 50 44 41 54 45 20 6f 72 64 65  .    UPDATE orde
6e20: 72 73 20 53 45 54 20 61 64 64 72 65 73 73 20 3d  rs SET address =
6e30: 20 6e 65 77 2e 61 64 64 72 65 73 73 20 57 48 45   new.address WHE
6e40: 52 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d 65  RE customer_name
6e50: 20 3d 20 6f 6c 64 2e 6e 61 6d 65 3b 0a 20 20 45   = old.name;.  E
6e60: 4e 44 3b 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e  ND;.}.puts {.<p>
6e70: 57 69 74 68 20 74 68 69 73 20 74 72 69 67 67 65  With this trigge
6e80: 72 20 69 6e 73 74 61 6c 6c 65 64 2c 20 65 78 65  r installed, exe
6e90: 63 75 74 69 6e 67 20 74 68 65 20 73 74 61 74 65  cuting the state
6ea0: 6d 65 6e 74 3a 3c 2f 70 3e 0a 7d 0a 0a 45 78 61  ment:</p>.}..Exa
6eb0: 6d 70 6c 65 20 7b 0a 55 50 44 41 54 45 20 63 75  mple {.UPDATE cu
6ec0: 73 74 6f 6d 65 72 73 20 53 45 54 20 61 64 64 72  stomers SET addr
6ed0: 65 73 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74  ess = '1 Main St
6ee0: 2e 27 20 57 48 45 52 45 20 6e 61 6d 65 20 3d 20  .' WHERE name = 
6ef0: 27 4a 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 0a  'Jack Jones';.}.
6f00: 70 75 74 73 20 7b 0a 3c 70 3e 63 61 75 73 65 73  puts {.<p>causes
6f10: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74   the following t
6f20: 6f 20 62 65 20 61 75 74 6f 6d 61 74 69 63 61 6c  o be automatical
6f30: 6c 79 20 65 78 65 63 75 74 65 64 3a 3c 2f 70 3e  ly executed:</p>
6f40: 0a 7d 0a 45 78 61 6d 70 6c 65 20 7b 0a 55 50 44  .}.Example {.UPD
6f50: 41 54 45 20 6f 72 64 65 72 73 20 53 45 54 20 61  ATE orders SET a
6f60: 64 64 72 65 73 73 20 3d 20 27 31 20 4d 61 69 6e  ddress = '1 Main
6f70: 20 53 74 2e 27 20 57 48 45 52 45 20 63 75 73 74   St.' WHERE cust
6f80: 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 27 4a 61 63  omer_name = 'Jac
6f90: 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 0a 0a 70 75 74  k Jones';.}..put
6fa0: 73 20 7b 0a 3c 70 3e 4e 6f 74 65 20 74 68 61 74  s {.<p>Note that
6fb0: 20 63 75 72 72 65 6e 74 6c 79 2c 20 74 72 69 67   currently, trig
6fc0: 67 65 72 73 20 6d 61 79 20 62 65 68 61 76 65 20  gers may behave 
6fd0: 6f 64 64 6c 79 20 77 68 65 6e 20 63 72 65 61 74  oddly when creat
6fe0: 65 64 20 6f 6e 20 74 61 62 6c 65 73 0a 20 20 77  ed on tables.  w
6ff0: 69 74 68 20 49 4e 54 45 47 45 52 20 50 52 49 4d  ith INTEGER PRIM
7000: 41 52 59 20 4b 45 59 20 66 69 65 6c 64 73 2e 20  ARY KEY fields. 
7010: 49 66 20 61 20 42 45 46 4f 52 45 20 74 72 69 67  If a BEFORE trig
7020: 67 65 72 20 70 72 6f 67 72 61 6d 20 6d 6f 64 69  ger program modi
7030: 66 69 65 73 20 74 68 65 20 0a 20 20 49 4e 54 45  fies the .  INTE
7040: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20  GER PRIMARY KEY 
7050: 66 69 65 6c 64 20 6f 66 20 61 20 72 6f 77 20 74  field of a row t
7060: 68 61 74 20 77 69 6c 6c 20 62 65 20 73 75 62 73  hat will be subs
7070: 65 71 75 65 6e 74 6c 79 20 75 70 64 61 74 65 64  equently updated
7080: 20 62 79 20 74 68 65 0a 20 20 73 74 61 74 65 6d   by the.  statem
7090: 65 6e 74 20 74 68 61 74 20 63 61 75 73 65 73 20  ent that causes 
70a0: 74 68 65 20 74 72 69 67 67 65 72 20 74 6f 20 66  the trigger to f
70b0: 69 72 65 2c 20 74 68 65 6e 20 74 68 65 20 75 70  ire, then the up
70c0: 64 61 74 65 20 6d 61 79 20 6e 6f 74 20 6f 63 63  date may not occ
70d0: 75 72 2e 20 0a 20 20 54 68 65 20 77 6f 72 6b 61  ur. .  The worka
70e0: 72 6f 75 6e 64 20 69 73 20 74 6f 20 64 65 63 6c  round is to decl
70f0: 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 77 69  are the table wi
7100: 74 68 20 61 20 50 52 49 4d 41 52 59 20 4b 45 59  th a PRIMARY KEY
7110: 20 63 6f 6c 75 6d 6e 20 69 6e 73 74 65 61 64 0a   column instead.
7120: 20 20 6f 66 20 61 6e 20 49 4e 54 45 47 45 52 20    of an INTEGER 
7130: 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75  PRIMARY KEY colu
7140: 6d 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 70 75 74 73 20  mn.</p>.}..puts 
7150: 7b 0a 3c 70 3e 41 20 73 70 65 63 69 61 6c 20 53  {.<p>A special S
7160: 51 4c 20 66 75 6e 63 74 69 6f 6e 20 52 41 49 53  QL function RAIS
7170: 45 28 29 20 6d 61 79 20 62 65 20 75 73 65 64 20  E() may be used 
7180: 77 69 74 68 69 6e 20 61 20 74 72 69 67 67 65 72  within a trigger
7190: 2d 70 72 6f 67 72 61 6d 2c 20 77 69 74 68 20 74  -program, with t
71a0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e  he following syn
71b0: 74 61 78 3c 2f 70 3e 20 0a 7d 0a 53 79 6e 74 61  tax</p> .}.Synta
71c0: 78 20 7b 72 61 69 73 65 2d 66 75 6e 63 74 69 6f  x {raise-functio
71d0: 6e 7d 20 7b 0a 52 41 49 53 45 20 28 20 41 42 4f  n} {.RAISE ( ABO
71e0: 52 54 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73 61  RT, <error-messa
71f0: 67 65 3e 20 29 20 7c 20 0a 52 41 49 53 45 20 28  ge> ) | .RAISE (
7200: 20 46 41 49 4c 2c 20 3c 65 72 72 6f 72 2d 6d 65   FAIL, <error-me
7210: 73 73 61 67 65 3e 20 29 20 7c 20 0a 52 41 49 53  ssage> ) | .RAIS
7220: 45 20 28 20 52 4f 4c 4c 42 41 43 4b 2c 20 3c 65  E ( ROLLBACK, <e
7230: 72 72 6f 72 2d 6d 65 73 73 61 67 65 3e 20 29 20  rror-message> ) 
7240: 7c 20 0a 52 41 49 53 45 20 28 20 49 47 4e 4f 52  | .RAISE ( IGNOR
7250: 45 20 29 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e  E ).}.puts {.<p>
7260: 57 68 65 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20  When one of the 
7270: 66 69 72 73 74 20 74 68 72 65 65 20 66 6f 72 6d  first three form
7280: 73 20 69 73 20 63 61 6c 6c 65 64 20 64 75 72 69  s is called duri
7290: 6e 67 20 74 72 69 67 67 65 72 2d 70 72 6f 67 72  ng trigger-progr
72a0: 61 6d 20 65 78 65 63 75 74 69 6f 6e 2c 20 74 68  am execution, th
72b0: 65 20 73 70 65 63 69 66 69 65 64 20 4f 4e 20 43  e specified ON C
72c0: 4f 4e 46 4c 49 43 54 20 70 72 6f 63 65 73 73 69  ONFLICT processi
72d0: 6e 67 20 69 73 20 70 65 72 66 6f 72 6d 65 64 20  ng is performed 
72e0: 28 65 69 74 68 65 72 20 41 42 4f 52 54 2c 20 46  (either ABORT, F
72f0: 41 49 4c 20 6f 72 20 0a 20 52 4f 4c 4c 42 41 43  AIL or . ROLLBAC
7300: 4b 29 20 61 6e 64 20 74 68 65 20 63 75 72 72 65  K) and the curre
7310: 6e 74 20 71 75 65 72 79 20 74 65 72 6d 69 6e 61  nt query termina
7320: 74 65 73 2e 20 41 6e 20 65 72 72 6f 72 20 63 6f  tes. An error co
7330: 64 65 20 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e  de of SQLITE_CON
7340: 53 54 52 41 49 4e 54 20 69 73 20 72 65 74 75 72  STRAINT is retur
7350: 6e 65 64 20 74 6f 20 74 68 65 20 75 73 65 72 2c  ned to the user,
7360: 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20   along with the 
7370: 73 70 65 63 69 66 69 65 64 20 65 72 72 6f 72 20  specified error 
7380: 6d 65 73 73 61 67 65 2e 3c 2f 70 3e 0a 0a 3c 70  message.</p>..<p
7390: 3e 57 68 65 6e 20 52 41 49 53 45 28 49 47 4e 4f  >When RAISE(IGNO
73a0: 52 45 29 20 69 73 20 63 61 6c 6c 65 64 2c 20 74  RE) is called, t
73b0: 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20  he remainder of 
73c0: 74 68 65 20 63 75 72 72 65 6e 74 20 74 72 69 67  the current trig
73d0: 67 65 72 20 70 72 6f 67 72 61 6d 2c 0a 74 68 65  ger program,.the
73e0: 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20   statement that 
73f0: 63 61 75 73 65 64 20 74 68 65 20 74 72 69 67 67  caused the trigg
7400: 65 72 20 70 72 6f 67 72 61 6d 20 74 6f 20 65 78  er program to ex
7410: 65 63 75 74 65 20 61 6e 64 20 61 6e 79 20 73 75  ecute and any su
7420: 62 73 65 71 75 65 6e 74 0a 20 20 20 20 74 72 69  bsequent.    tri
7430: 67 67 65 72 20 70 72 6f 67 72 61 6d 73 20 74 68  gger programs th
7440: 61 74 20 77 6f 75 6c 64 20 6f 66 20 62 65 65 6e  at would of been
7450: 20 65 78 65 63 75 74 65 64 20 61 72 65 20 61 62   executed are ab
7460: 61 6e 64 6f 6e 65 64 2e 20 4e 6f 20 64 61 74 61  andoned. No data
7470: 62 61 73 65 0a 20 20 20 20 63 68 61 6e 67 65 73  base.    changes
7480: 20 61 72 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b   are rolled back
7490: 2e 20 20 49 66 20 74 68 65 20 73 74 61 74 65 6d  .  If the statem
74a0: 65 6e 74 20 74 68 61 74 20 63 61 75 73 65 64 20  ent that caused 
74b0: 74 68 65 20 74 72 69 67 67 65 72 20 70 72 6f 67  the trigger prog
74c0: 72 61 6d 0a 20 20 20 20 74 6f 20 65 78 65 63 75  ram.    to execu
74d0: 74 65 20 69 73 20 69 74 73 65 6c 66 20 70 61 72  te is itself par
74e0: 74 20 6f 66 20 61 20 74 72 69 67 67 65 72 20 70  t of a trigger p
74f0: 72 6f 67 72 61 6d 2c 20 74 68 65 6e 20 74 68 61  rogram, then tha
7500: 74 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  t trigger progra
7510: 6d 0a 20 20 20 20 72 65 73 75 6d 65 73 20 65 78  m.    resumes ex
7520: 65 63 75 74 69 6f 6e 20 61 74 20 74 68 65 20 62  ecution at the b
7530: 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20  eginning of the 
7540: 6e 65 78 74 20 73 74 65 70 2e 0a 3c 2f 70 3e 0a  next step..</p>.
7550: 0a 3c 70 3e 54 72 69 67 67 65 72 73 20 61 72 65  .<p>Triggers are
7560: 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74   removed using t
7570: 68 65 20 3c 61 20 68 72 65 66 3d 22 23 64 72 6f  he <a href="#dro
7580: 70 74 72 69 67 67 65 72 22 3e 44 52 4f 50 20 54  ptrigger">DROP T
7590: 52 49 47 47 45 52 3c 2f 61 3e 0a 73 74 61 74 65  RIGGER</a>.state
75a0: 6d 65 6e 74 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  ment.</p>.}...Se
75b0: 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 56 49  ction {CREATE VI
75c0: 45 57 7d 20 7b 63 72 65 61 74 65 76 69 65 77 7d  EW} {createview}
75d0: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f  ..Syntax {sql-co
75e0: 6d 6d 61 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20  mmand} {.CREATE 
75f0: 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52  [TEMP | TEMPORAR
7600: 59 5d 20 56 49 45 57 20 5b 3c 64 61 74 61 62 61  Y] VIEW [<databa
7610: 73 65 2d 6e 61 6d 65 3e 2e 5d 20 3c 76 69 65 77  se-name>.] <view
7620: 2d 6e 61 6d 65 3e 20 41 53 20 3c 73 65 6c 65 63  -name> AS <selec
7630: 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a  t-statement>.}..
7640: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43 52  puts {.<p>The CR
7650: 45 41 54 45 20 56 49 45 57 20 63 6f 6d 6d 61 6e  EATE VIEW comman
7660: 64 20 61 73 73 69 67 6e 73 20 61 20 6e 61 6d 65  d assigns a name
7670: 20 74 6f 20 61 20 70 72 65 2d 70 61 63 6b 61 67   to a pre-packag
7680: 65 64 20 0a 3c 61 20 68 72 65 66 3d 22 23 73 65  ed .<a href="#se
7690: 6c 65 63 74 22 3e 53 45 4c 45 43 54 3c 2f 61 3e  lect">SELECT</a>
76a0: 0a 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f 6e 63  .statement.  Onc
76b0: 65 20 74 68 65 20 76 69 65 77 20 69 73 20 63 72  e the view is cr
76c0: 65 61 74 65 64 2c 20 69 74 20 63 61 6e 20 62 65  eated, it can be
76d0: 20 75 73 65 64 20 69 6e 20 74 68 65 20 46 52 4f   used in the FRO
76e0: 4d 20 63 6c 61 75 73 65 0a 6f 66 20 61 6e 6f 74  M clause.of anot
76f0: 68 65 72 20 53 45 4c 45 43 54 20 69 6e 20 70 6c  her SELECT in pl
7700: 61 63 65 20 6f 66 20 61 20 74 61 62 6c 65 20 6e  ace of a table n
7710: 61 6d 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66  ame..</p>..<p>If
7720: 20 74 68 65 20 22 54 45 4d 50 22 20 6f 72 20 22   the "TEMP" or "
7730: 54 45 4d 50 4f 52 41 52 59 22 20 6b 65 79 77 6f  TEMPORARY" keywo
7740: 72 64 20 6f 63 63 75 72 73 20 69 6e 20 62 65 74  rd occurs in bet
7750: 77 65 65 6e 20 22 43 52 45 41 54 45 22 0a 61 6e  ween "CREATE".an
7760: 64 20 22 54 41 42 4c 45 22 20 74 68 65 6e 20 74  d "TABLE" then t
7770: 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 69 73  he table that is
7780: 20 63 72 65 61 74 65 64 20 69 73 20 6f 6e 6c 79   created is only
7790: 20 76 69 73 69 62 6c 65 20 74 6f 20 74 68 65 0a   visible to the.
77a0: 70 72 6f 63 65 73 73 20 74 68 61 74 20 6f 70 65  process that ope
77b0: 6e 65 64 20 74 68 65 20 64 61 74 61 62 61 73 65  ned the database
77c0: 20 61 6e 64 20 69 73 20 61 75 74 6f 6d 61 74 69   and is automati
77d0: 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 77 68  cally deleted wh
77e0: 65 6e 0a 74 68 65 20 64 61 74 61 62 61 73 65 20  en.the database 
77f0: 69 73 20 63 6c 6f 73 65 64 2e 3c 2f 70 3e 0a 0a  is closed.</p>..
7800: 3c 70 3e 20 49 66 20 61 20 26 6c 74 3b 64 61 74  <p> If a &lt;dat
7810: 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69  abase-name&gt; i
7820: 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65  s specified, the
7830: 6e 20 74 68 65 20 76 69 65 77 20 69 73 20 63 72  n the view is cr
7840: 65 61 74 65 64 20 69 6e 20 0a 74 68 65 20 6e 61  eated in .the na
7850: 6d 65 64 20 64 61 74 61 62 61 73 65 2e 20 49 74  med database. It
7860: 20 69 73 20 61 6e 20 65 72 72 6f 72 20 74 6f 20   is an error to 
7870: 73 70 65 63 69 66 79 20 62 6f 74 68 20 61 20 26  specify both a &
7880: 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  lt;database-name
7890: 26 67 74 3b 0a 61 6e 64 20 74 68 65 20 54 45 4d  &gt;.and the TEM
78a0: 50 20 6b 65 79 77 6f 72 64 2c 20 75 6e 6c 65 73  P keyword, unles
78b0: 73 20 74 68 65 20 26 6c 74 3b 64 61 74 61 62 61  s the &lt;databa
78c0: 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 22  se-name&gt; is "
78d0: 74 65 6d 70 22 2e 20 49 66 20 6e 6f 0a 64 61 74  temp". If no.dat
78e0: 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 73 70  abase name is sp
78f0: 65 63 69 66 69 65 64 2c 20 61 6e 64 20 74 68 65  ecified, and the
7900: 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 20 69 73   TEMP keyword is
7910: 20 6e 6f 74 20 70 72 65 73 65 6e 74 2c 0a 74 68   not present,.th
7920: 65 20 74 61 62 6c 65 20 69 73 20 63 72 65 61 74  e table is creat
7930: 65 64 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64  ed in the main d
7940: 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70  atabase.</p>..<p
7950: 3e 59 6f 75 20 63 61 6e 6e 6f 74 20 43 4f 50 59  >You cannot COPY
7960: 2c 20 44 45 4c 45 54 45 2c 20 49 4e 53 45 52 54  , DELETE, INSERT
7970: 20 6f 72 20 55 50 44 41 54 45 20 61 20 76 69 65   or UPDATE a vie
7980: 77 2e 20 20 56 69 65 77 73 20 61 72 65 20 72 65  w.  Views are re
7990: 61 64 2d 6f 6e 6c 79 20 0a 69 6e 20 53 51 4c 69  ad-only .in SQLi
79a0: 74 65 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 6e  te.  However, in
79b0: 20 6d 61 6e 79 20 63 61 73 65 73 20 79 6f 75 20   many cases you 
79c0: 63 61 6e 20 75 73 65 20 61 20 3c 61 20 68 72 65  can use a <a hre
79d0: 66 3d 22 23 63 72 65 61 74 65 74 72 69 67 67 65  f="#createtrigge
79e0: 72 22 3e 0a 54 52 49 47 47 45 52 3c 2f 61 3e 20  r">.TRIGGER</a> 
79f0: 6f 6e 20 74 68 65 20 76 69 65 77 20 74 6f 20 61  on the view to a
7a00: 63 63 6f 6d 70 6c 69 73 68 20 74 68 65 20 73 61  ccomplish the sa
7a10: 6d 65 20 74 68 69 6e 67 2e 20 20 56 69 65 77 73  me thing.  Views
7a20: 20 61 72 65 20 72 65 6d 6f 76 65 64 20 0a 77 69   are removed .wi
7a30: 74 68 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22  th the <a href="
7a40: 23 64 72 6f 70 76 69 65 77 22 3e 44 52 4f 50 20  #dropview">DROP 
7a50: 56 49 45 57 3c 2f 61 3e 20 0a 63 6f 6d 6d 61 6e  VIEW</a> .comman
7a60: 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  d.</p>.}...Secti
7a70: 6f 6e 20 44 45 4c 45 54 45 20 64 65 6c 65 74 65  on DELETE delete
7a80: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
7a90: 61 74 65 6d 65 6e 74 7d 20 7b 0a 44 45 4c 45 54  atement} {.DELET
7aa0: 45 20 46 52 4f 4d 20 5b 3c 64 61 74 61 62 61 73  E FROM [<databas
7ab0: 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c  e-name> .] <tabl
7ac0: 65 2d 6e 61 6d 65 3e 20 5b 57 48 45 52 45 20 3c  e-name> [WHERE <
7ad0: 65 78 70 72 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b  expr>].}..puts {
7ae0: 0a 3c 70 3e 54 68 65 20 44 45 4c 45 54 45 20 63  .<p>The DELETE c
7af0: 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 20 74  ommand is used t
7b00: 6f 20 72 65 6d 6f 76 65 20 72 65 63 6f 72 64 73  o remove records
7b10: 20 66 72 6f 6d 20 61 20 74 61 62 6c 65 2e 0a 54   from a table..T
7b20: 68 65 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69  he command consi
7b30: 73 74 73 20 6f 66 20 74 68 65 20 22 44 45 4c 45  sts of the "DELE
7b40: 54 45 20 46 52 4f 4d 22 20 6b 65 79 77 6f 72 64  TE FROM" keyword
7b50: 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 0a 74 68  s followed by.th
7b60: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 61  e name of the ta
7b70: 62 6c 65 20 66 72 6f 6d 20 77 68 69 63 68 20 72  ble from which r
7b80: 65 63 6f 72 64 73 20 61 72 65 20 74 6f 20 62 65  ecords are to be
7b90: 20 72 65 6d 6f 76 65 64 2e 0a 3c 2f 70 3e 0a 0a   removed..</p>..
7ba0: 3c 70 3e 57 69 74 68 6f 75 74 20 61 20 57 48 45  <p>Without a WHE
7bb0: 52 45 20 63 6c 61 75 73 65 2c 20 61 6c 6c 20 72  RE clause, all r
7bc0: 6f 77 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65  ows of the table
7bd0: 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 0a 49 66   are removed..If
7be0: 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 20   a WHERE clause 
7bf0: 69 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65  is supplied, the
7c00: 6e 20 6f 6e 6c 79 20 74 68 6f 73 65 20 72 6f 77  n only those row
7c10: 73 20 74 68 61 74 20 6d 61 74 63 68 0a 74 68 65  s that match.the
7c20: 20 65 78 70 72 65 73 73 69 6f 6e 20 61 72 65 20   expression are 
7c30: 72 65 6d 6f 76 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a  removed.</p>.}..
7c40: 0a 53 65 63 74 69 6f 6e 20 7b 44 45 54 41 43 48  .Section {DETACH
7c50: 20 44 41 54 41 42 41 53 45 7d 20 64 65 74 61 63   DATABASE} detac
7c60: 68 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63  h..Syntax {sql-c
7c70: 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 45 54 41 43 48  ommand} {.DETACH
7c80: 20 5b 44 41 54 41 42 41 53 45 5d 20 3c 64 61 74   [DATABASE] <dat
7c90: 61 62 61 73 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70  abase-name>.}..p
7ca0: 75 74 73 20 7b 0a 3c 70 3e 54 68 69 73 20 73 74  uts {.<p>This st
7cb0: 61 74 65 6d 65 6e 74 20 64 65 74 61 63 68 65 73  atement detaches
7cc0: 20 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 64   an additional d
7cd0: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
7ce0: 6f 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 0a 61  on previously .a
7cf0: 74 74 61 63 68 65 64 20 75 73 69 6e 67 20 74 68  ttached using th
7d00: 65 20 3c 61 20 68 72 65 66 3d 22 23 61 74 74 61  e <a href="#atta
7d10: 63 68 22 3e 41 54 54 41 43 48 20 44 41 54 41 42  ch">ATTACH DATAB
7d20: 41 53 45 3c 2f 61 3e 20 73 74 61 74 65 6d 65 6e  ASE</a> statemen
7d30: 74 2e 20 20 49 74 0a 69 73 20 70 6f 73 73 69 62  t.  It.is possib
7d40: 6c 65 20 74 6f 20 68 61 76 65 20 74 68 65 20 73  le to have the s
7d50: 61 6d 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  ame database fil
7d60: 65 20 61 74 74 61 63 68 65 64 20 6d 75 6c 74 69  e attached multi
7d70: 70 6c 65 20 74 69 6d 65 73 20 75 73 69 6e 67 20  ple times using 
7d80: 0a 64 69 66 66 65 72 65 6e 74 20 6e 61 6d 65 73  .different names
7d90: 2c 20 61 6e 64 20 64 65 74 61 63 68 69 6e 67 20  , and detaching 
7da0: 6f 6e 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  one connection t
7db0: 6f 20 61 20 66 69 6c 65 20 77 69 6c 6c 20 6c 65  o a file will le
7dc0: 61 76 65 20 74 68 65 20 0a 6f 74 68 65 72 73 20  ave the .others 
7dd0: 69 6e 74 61 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e  intact.</p>..<p>
7de0: 54 68 69 73 20 73 74 61 74 65 6d 65 6e 74 20 77  This statement w
7df0: 69 6c 6c 20 66 61 69 6c 20 69 66 20 53 51 4c 69  ill fail if SQLi
7e00: 74 65 20 69 73 20 69 6e 20 74 68 65 20 6d 69 64  te is in the mid
7e10: 64 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61 63  dle of a transac
7e20: 74 69 6f 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  tion.</p>.}...Se
7e30: 63 74 69 6f 6e 20 7b 44 52 4f 50 20 49 4e 44 45  ction {DROP INDE
7e40: 58 7d 20 64 72 6f 70 69 6e 64 65 78 0a 0a 53 79  X} dropindex..Sy
7e50: 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e  ntax {sql-comman
7e60: 64 7d 20 7b 0a 44 52 4f 50 20 49 4e 44 45 58 20  d} {.DROP INDEX 
7e70: 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e  [<database-name>
7e80: 20 2e 5d 20 3c 69 6e 64 65 78 2d 6e 61 6d 65 3e   .] <index-name>
7e90: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
7ea0: 65 20 44 52 4f 50 20 49 4e 44 45 58 20 73 74 61  e DROP INDEX sta
7eb0: 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61  tement removes a
7ec0: 6e 20 69 6e 64 65 78 20 61 64 64 65 64 0a 77 69  n index added.wi
7ed0: 74 68 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22  th the <a href="
7ee0: 23 63 72 65 61 74 65 69 6e 64 65 78 22 3e 0a 43  #createindex">.C
7ef0: 52 45 41 54 45 20 49 4e 44 45 58 3c 2f 61 3e 20  REATE INDEX</a> 
7f00: 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20  statement.  The 
7f10: 69 6e 64 65 78 20 6e 61 6d 65 64 20 69 73 20 63  index named is c
7f20: 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65  ompletely remove
7f30: 64 20 66 72 6f 6d 0a 74 68 65 20 64 69 73 6b 2e  d from.the disk.
7f40: 20 20 54 68 65 20 6f 6e 6c 79 20 77 61 79 20 74    The only way t
7f50: 6f 20 72 65 63 6f 76 65 72 20 74 68 65 20 69 6e  o recover the in
7f60: 64 65 78 20 69 73 20 74 6f 20 72 65 65 6e 74 65  dex is to reente
7f70: 72 20 74 68 65 0a 61 70 70 72 6f 70 72 69 61 74  r the.appropriat
7f80: 65 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 63  e CREATE INDEX c
7f90: 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ommand.</p>..<p>
7fa0: 54 68 65 20 44 52 4f 50 20 49 4e 44 45 58 20 73  The DROP INDEX s
7fb0: 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f  tatement does no
7fc0: 74 20 72 65 64 75 63 65 20 74 68 65 20 73 69 7a  t reduce the siz
7fd0: 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  e of the databas
7fe0: 65 20 0a 66 69 6c 65 20 69 6e 20 74 68 65 20 64  e .file in the d
7ff0: 65 66 61 75 6c 74 20 6d 6f 64 65 2e 0a 45 6d 70  efault mode..Emp
8000: 74 79 20 73 70 61 63 65 20 69 6e 20 74 68 65 20  ty space in the 
8010: 64 61 74 61 62 61 73 65 20 69 73 20 72 65 74 61  database is reta
8020: 69 6e 65 64 20 66 6f 72 20 6c 61 74 65 72 20 49  ined for later I
8030: 4e 53 45 52 54 73 2e 20 20 54 6f 20 0a 72 65 6d  NSERTs.  To .rem
8040: 6f 76 65 20 66 72 65 65 20 73 70 61 63 65 20 69  ove free space i
8050: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 2c 20  n the database, 
8060: 75 73 65 20 74 68 65 20 3c 61 20 68 72 65 66 3d  use the <a href=
8070: 22 23 76 61 63 75 75 6d 22 3e 56 41 43 55 55 4d  "#vacuum">VACUUM
8080: 3c 2f 61 3e 20 0a 63 6f 6d 6d 61 6e 64 2e 20 20  </a> .command.  
8090: 49 66 20 41 55 54 4f 56 41 43 55 55 4d 20 6d 6f  If AUTOVACUUM mo
80a0: 64 65 20 69 73 20 65 6e 61 62 6c 65 64 20 66 6f  de is enabled fo
80b0: 72 20 61 20 64 61 74 61 62 61 73 65 20 74 68 65  r a database the
80c0: 6e 20 73 70 61 63 65 0a 77 69 6c 6c 20 62 65 20  n space.will be 
80d0: 66 72 65 65 64 20 61 75 74 6f 6d 61 74 69 63 61  freed automatica
80e0: 6c 6c 79 20 62 79 20 44 52 4f 50 20 49 4e 44 45  lly by DROP INDE
80f0: 58 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  X.</p>.}...Secti
8100: 6f 6e 20 7b 44 52 4f 50 20 54 41 42 4c 45 7d 20  on {DROP TABLE} 
8110: 64 72 6f 70 74 61 62 6c 65 0a 0a 53 79 6e 74 61  droptable..Synta
8120: 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20  x {sql-command} 
8130: 7b 0a 44 52 4f 50 20 54 41 42 4c 45 20 5b 3c 64  {.DROP TABLE [<d
8140: 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 2e 5d 20  atabase-name>.] 
8150: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a  <table-name>.}..
8160: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 52  puts {.<p>The DR
8170: 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  OP TABLE stateme
8180: 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 74 61 62  nt removes a tab
8190: 6c 65 20 61 64 64 65 64 20 77 69 74 68 20 74 68  le added with th
81a0: 65 20 3c 61 20 68 72 65 66 3d 0a 22 23 63 72 65  e <a href=."#cre
81b0: 61 74 65 74 61 62 6c 65 22 3e 43 52 45 41 54 45  atetable">CREATE
81c0: 20 54 41 42 4c 45 3c 2f 61 3e 20 73 74 61 74 65   TABLE</a> state
81d0: 6d 65 6e 74 2e 20 20 54 68 65 20 6e 61 6d 65 20  ment.  The name 
81e0: 73 70 65 63 69 66 69 65 64 20 69 73 20 74 68 65  specified is the
81f0: 0a 74 61 62 6c 65 20 6e 61 6d 65 2e 20 20 49 74  .table name.  It
8200: 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72   is completely r
8210: 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20  emoved from the 
8220: 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20  database schema 
8230: 61 6e 64 20 74 68 65 20 0a 64 69 73 6b 20 66 69  and the .disk fi
8240: 6c 65 2e 20 20 54 68 65 20 74 61 62 6c 65 20 63  le.  The table c
8250: 61 6e 20 6e 6f 74 20 62 65 20 72 65 63 6f 76 65  an not be recove
8260: 72 65 64 2e 20 20 41 6c 6c 20 69 6e 64 69 63 65  red.  All indice
8270: 73 20 61 73 73 6f 63 69 61 74 65 64 20 0a 77 69  s associated .wi
8280: 74 68 20 74 68 65 20 74 61 62 6c 65 20 61 72 65  th the table are
8290: 20 61 6c 73 6f 20 64 65 6c 65 74 65 64 2e 3c 2f   also deleted.</
82a0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20  p>..<p>The DROP 
82b0: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20  TABLE statement 
82c0: 64 6f 65 73 20 6e 6f 74 20 72 65 64 75 63 65 20  does not reduce 
82d0: 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  the size of the 
82e0: 64 61 74 61 62 61 73 65 20 0a 66 69 6c 65 20 69  database .file i
82f0: 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 6f  n the default mo
8300: 64 65 2e 20 20 45 6d 70 74 79 20 73 70 61 63 65  de.  Empty space
8310: 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65   in the database
8320: 20 69 73 20 72 65 74 61 69 6e 65 64 20 66 6f 72   is retained for
8330: 0a 6c 61 74 65 72 20 49 4e 53 45 52 54 73 2e 20  .later INSERTs. 
8340: 20 54 6f 20 0a 72 65 6d 6f 76 65 20 66 72 65 65   To .remove free
8350: 20 73 70 61 63 65 20 69 6e 20 74 68 65 20 64 61   space in the da
8360: 74 61 62 61 73 65 2c 20 75 73 65 20 74 68 65 20  tabase, use the 
8370: 3c 61 20 68 72 65 66 3d 22 23 76 61 63 75 75 6d  <a href="#vacuum
8380: 22 3e 56 41 43 55 55 4d 3c 2f 61 3e 20 0a 63 6f  ">VACUUM</a> .co
8390: 6d 6d 61 6e 64 2e 20 20 49 66 20 41 55 54 4f 56  mmand.  If AUTOV
83a0: 41 43 55 55 4d 20 6d 6f 64 65 20 69 73 20 65 6e  ACUUM mode is en
83b0: 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61 74 61  abled for a data
83c0: 62 61 73 65 20 74 68 65 6e 20 73 70 61 63 65 0a  base then space.
83d0: 77 69 6c 6c 20 62 65 20 66 72 65 65 64 20 61 75  will be freed au
83e0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 44  tomatically by D
83f0: 52 4f 50 20 54 41 42 4c 45 2e 3c 2f 70 3e 0a 7d  ROP TABLE.</p>.}
8400: 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50  ...Section {DROP
8410: 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70 74 72   TRIGGER} droptr
8420: 69 67 67 65 72 0a 53 79 6e 74 61 78 20 7b 73 71  igger.Syntax {sq
8430: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 44  l-statement} {.D
8440: 52 4f 50 20 54 52 49 47 47 45 52 20 5b 3c 64 61  ROP TRIGGER [<da
8450: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20  tabase-name> .] 
8460: 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65 3e 0a 7d  <trigger-name>.}
8470: 0a 70 75 74 73 20 7b 20 0a 3c 70 3e 54 68 65 20  .puts { .<p>The 
8480: 44 52 4f 50 20 54 52 49 47 47 45 52 20 73 74 61  DROP TRIGGER sta
8490: 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61  tement removes a
84a0: 20 74 72 69 67 67 65 72 20 63 72 65 61 74 65 64   trigger created
84b0: 20 62 79 20 74 68 65 20 0a 3c 61 20 68 72 65 66   by the .<a href
84c0: 3d 22 23 63 72 65 61 74 65 74 72 69 67 67 65 72  ="#createtrigger
84d0: 22 3e 43 52 45 41 54 45 20 54 52 49 47 47 45 52  ">CREATE TRIGGER
84e0: 3c 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20  </a> statement. 
84f0: 20 54 68 65 20 74 72 69 67 67 65 72 20 69 73 20   The trigger is 
8500: 0a 64 65 6c 65 74 65 64 20 66 72 6f 6d 20 74 68  .deleted from th
8510: 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d  e database schem
8520: 61 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 72 69  a. Note that tri
8530: 67 67 65 72 73 20 61 72 65 20 61 75 74 6f 6d 61  ggers are automa
8540: 74 69 63 61 6c 6c 79 20 0a 64 72 6f 70 70 65 64  tically .dropped
8550: 20 77 68 65 6e 20 74 68 65 20 61 73 73 6f 63 69   when the associ
8560: 61 74 65 64 20 74 61 62 6c 65 20 69 73 20 64 72  ated table is dr
8570: 6f 70 70 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53  opped.</p>.}...S
8580: 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 56 49 45  ection {DROP VIE
8590: 57 7d 20 64 72 6f 70 76 69 65 77 0a 0a 53 79 6e  W} dropview..Syn
85a0: 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64  tax {sql-command
85b0: 7d 20 7b 0a 44 52 4f 50 20 56 49 45 57 20 3c 76  } {.DROP VIEW <v
85c0: 69 65 77 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74  iew-name>.}..put
85d0: 73 20 7b 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20  s {.<p>The DROP 
85e0: 56 49 45 57 20 73 74 61 74 65 6d 65 6e 74 20 72  VIEW statement r
85f0: 65 6d 6f 76 65 73 20 61 20 76 69 65 77 20 63 72  emoves a view cr
8600: 65 61 74 65 64 20 62 79 20 74 68 65 20 3c 61 20  eated by the <a 
8610: 68 72 65 66 3d 0a 22 23 63 72 65 61 74 65 76 69  href=."#createvi
8620: 65 77 22 3e 43 52 45 41 54 45 20 56 49 45 57 3c  ew">CREATE VIEW<
8630: 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  /a> statement.  
8640: 54 68 65 20 6e 61 6d 65 20 73 70 65 63 69 66 69  The name specifi
8650: 65 64 20 69 73 20 74 68 65 20 0a 76 69 65 77 20  ed is the .view 
8660: 6e 61 6d 65 2e 20 20 49 74 20 69 73 20 72 65 6d  name.  It is rem
8670: 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61  oved from the da
8680: 74 61 62 61 73 65 20 73 63 68 65 6d 61 2c 20 62  tabase schema, b
8690: 75 74 20 6e 6f 20 61 63 74 75 61 6c 20 64 61 74  ut no actual dat
86a0: 61 20 0a 69 6e 20 74 68 65 20 75 6e 64 65 72 6c  a .in the underl
86b0: 79 69 6e 67 20 62 61 73 65 20 74 61 62 6c 65 73  ying base tables
86c0: 20 69 73 20 6d 6f 64 69 66 69 65 64 2e 3c 2f 70   is modified.</p
86d0: 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 45 58  >.}...Section EX
86e0: 50 4c 41 49 4e 20 65 78 70 6c 61 69 6e 0a 0a 53  PLAIN explain..S
86f0: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
8700: 6d 65 6e 74 7d 20 7b 0a 45 58 50 4c 41 49 4e 20  ment} {.EXPLAIN 
8710: 3c 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 3e 0a  <sql-statement>.
8720: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
8730: 20 45 58 50 4c 41 49 4e 20 63 6f 6d 6d 61 6e 64   EXPLAIN command
8740: 20 6d 6f 64 69 66 69 65 72 20 69 73 20 61 20 6e   modifier is a n
8750: 6f 6e 2d 73 74 61 6e 64 61 72 64 20 65 78 74 65  on-standard exte
8760: 6e 73 69 6f 6e 2e 20 20 54 68 65 0a 69 64 65 61  nsion.  The.idea
8770: 20 63 6f 6d 65 73 20 66 72 6f 6d 20 61 20 73 69   comes from a si
8780: 6d 69 6c 61 72 20 63 6f 6d 6d 61 6e 64 20 66 6f  milar command fo
8790: 75 6e 64 20 69 6e 20 50 6f 73 74 67 72 65 53 51  und in PostgreSQ
87a0: 4c 2c 20 62 75 74 20 74 68 65 20 6f 70 65 72 61  L, but the opera
87b0: 74 69 6f 6e 0a 69 73 20 63 6f 6d 70 6c 65 74 65  tion.is complete
87c0: 6c 79 20 64 69 66 66 65 72 65 6e 74 2e 3c 2f 70  ly different.</p
87d0: 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 45 58 50  >..<p>If the EXP
87e0: 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20 61 70 70  LAIN keyword app
87f0: 65 61 72 73 20 62 65 66 6f 72 65 20 61 6e 79 20  ears before any 
8800: 6f 74 68 65 72 20 53 51 4c 69 74 65 20 53 51 4c  other SQLite SQL
8810: 20 63 6f 6d 6d 61 6e 64 0a 74 68 65 6e 20 69 6e   command.then in
8820: 73 74 65 61 64 20 6f 66 20 61 63 74 75 61 6c 6c  stead of actuall
8830: 79 20 65 78 65 63 75 74 69 6e 67 20 74 68 65 20  y executing the 
8840: 63 6f 6d 6d 61 6e 64 2c 20 74 68 65 20 53 51 4c  command, the SQL
8850: 69 74 65 20 6c 69 62 72 61 72 79 20 77 69 6c 6c  ite library will
8860: 0a 72 65 70 6f 72 74 20 62 61 63 6b 20 74 68 65  .report back the
8870: 20 73 65 71 75 65 6e 63 65 20 6f 66 20 76 69 72   sequence of vir
8880: 74 75 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73  tual machine ins
8890: 74 72 75 63 74 69 6f 6e 73 20 69 74 20 77 6f 75  tructions it wou
88a0: 6c 64 20 68 61 76 65 0a 75 73 65 64 20 74 6f 20  ld have.used to 
88b0: 65 78 65 63 75 74 65 20 74 68 65 20 63 6f 6d 6d  execute the comm
88c0: 61 6e 64 20 68 61 64 20 74 68 65 20 45 58 50 4c  and had the EXPL
88d0: 41 49 4e 20 6b 65 79 77 6f 72 64 20 6e 6f 74 20  AIN keyword not 
88e0: 62 65 65 6e 20 70 72 65 73 65 6e 74 2e 0a 46 6f  been present..Fo
88f0: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
8900: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 76  ormation about v
8910: 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 20 69  irtual machine i
8920: 6e 73 74 72 75 63 74 69 6f 6e 73 20 73 65 65 0a  nstructions see.
8930: 74 68 65 20 3c 61 20 68 72 65 66 3d 22 61 72 63  the <a href="arc
8940: 68 2e 68 74 6d 6c 22 3e 61 72 63 68 69 74 65 63  h.html">architec
8950: 74 75 72 65 20 64 65 73 63 72 69 70 74 69 6f 6e  ture description
8960: 3c 2f 61 3e 20 6f 72 20 74 68 65 20 64 6f 63 75  </a> or the docu
8970: 6d 65 6e 74 61 74 69 6f 6e 0a 6f 6e 20 3c 61 20  mentation.on <a 
8980: 68 72 65 66 3d 22 6f 70 63 6f 64 65 2e 68 74 6d  href="opcode.htm
8990: 6c 22 3e 61 76 61 69 6c 61 62 6c 65 20 6f 70 63  l">available opc
89a0: 6f 64 65 73 3c 2f 61 3e 20 66 6f 72 20 74 68 65  odes</a> for the
89b0: 20 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65   virtual machine
89c0: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
89d0: 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 65 78 70  n expression exp
89e0: 72 0a 0a 53 79 6e 74 61 78 20 7b 65 78 70 72 7d  r..Syntax {expr}
89f0: 20 7b 0a 3c 65 78 70 72 3e 20 3c 62 69 6e 61 72   {.<expr> <binar
8a00: 79 2d 6f 70 3e 20 3c 65 78 70 72 3e 20 7c 0a 3c  y-op> <expr> |.<
8a10: 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 3c 6c 69 6b  expr> [NOT] <lik
8a20: 65 2d 6f 70 3e 20 3c 65 78 70 72 3e 20 5b 45 53  e-op> <expr> [ES
8a30: 43 41 50 45 20 3c 65 78 70 72 3e 5d 20 7c 0a 3c  CAPE <expr>] |.<
8a40: 75 6e 61 72 79 2d 6f 70 3e 20 3c 65 78 70 72 3e  unary-op> <expr>
8a50: 20 7c 0a 28 20 3c 65 78 70 72 3e 20 29 20 7c 0a   |.( <expr> ) |.
8a60: 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a  <column-name> |.
8a70: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20 3c  <table-name> . <
8a80: 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c  column-name> |.<
8a90: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e  database-name> .
8aa0: 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20   <table-name> . 
8ab0: 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a  <column-name> |.
8ac0: 3c 6c 69 74 65 72 61 6c 2d 76 61 6c 75 65 3e 20  <literal-value> 
8ad0: 7c 0a 3c 70 61 72 61 6d 65 74 65 72 3e 20 7c 0a  |.<parameter> |.
8ae0: 3c 66 75 6e 63 74 69 6f 6e 2d 6e 61 6d 65 3e 20  <function-name> 
8af0: 28 20 3c 65 78 70 72 2d 6c 69 73 74 3e 20 7c 20  ( <expr-list> | 
8b00: 53 54 41 52 20 29 20 7c 0a 3c 65 78 70 72 3e 20  STAR ) |.<expr> 
8b10: 49 53 4e 55 4c 4c 20 7c 0a 3c 65 78 70 72 3e 20  ISNULL |.<expr> 
8b20: 4e 4f 54 4e 55 4c 4c 20 7c 0a 3c 65 78 70 72 3e  NOTNULL |.<expr>
8b30: 20 5b 4e 4f 54 5d 20 42 45 54 57 45 45 4e 20 3c   [NOT] BETWEEN <
8b40: 65 78 70 72 3e 20 41 4e 44 20 3c 65 78 70 72 3e  expr> AND <expr>
8b50: 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20   |.<expr> [NOT] 
8b60: 49 4e 20 28 20 3c 76 61 6c 75 65 2d 6c 69 73 74  IN ( <value-list
8b70: 3e 20 29 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f  > ) |.<expr> [NO
8b80: 54 5d 20 49 4e 20 28 20 3c 73 65 6c 65 63 74 2d  T] IN ( <select-
8b90: 73 74 61 74 65 6d 65 6e 74 3e 20 29 20 7c 0a 3c  statement> ) |.<
8ba0: 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 5b  expr> [NOT] IN [
8bb0: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
8bc0: 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20  .] <table-name> 
8bd0: 7c 0a 5b 45 58 49 53 54 53 5d 20 28 20 3c 73 65  |.[EXISTS] ( <se
8be0: 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 20  lect-statement> 
8bf0: 29 20 7c 0a 43 41 53 45 20 5b 3c 65 78 70 72 3e  ) |.CASE [<expr>
8c00: 5d 20 4c 50 20 57 48 45 4e 20 3c 65 78 70 72 3e  ] LP WHEN <expr>
8c10: 20 54 48 45 4e 20 3c 65 78 70 72 3e 20 52 50 50   THEN <expr> RPP
8c20: 4c 55 53 20 5b 45 4c 53 45 20 3c 65 78 70 72 3e  LUS [ELSE <expr>
8c30: 5d 20 45 4e 44 20 7c 0a 43 41 53 54 20 28 20 3c  ] END |.CAST ( <
8c40: 65 78 70 72 3e 20 41 53 20 3c 74 79 70 65 3e 20  expr> AS <type> 
8c50: 29 0a 7d 20 7b 6c 69 6b 65 2d 6f 70 7d 20 7b 0a  ).} {like-op} {.
8c60: 4c 49 4b 45 20 7c 20 47 4c 4f 42 20 7c 20 52 45  LIKE | GLOB | RE
8c70: 47 45 58 50 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  GEXP.}..puts {.<
8c80: 70 3e 54 68 69 73 20 73 65 63 74 69 6f 6e 20 69  p>This section i
8c90: 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d  s different from
8ca0: 20 74 68 65 20 6f 74 68 65 72 73 2e 20 20 4d 6f   the others.  Mo
8cb0: 73 74 20 6f 74 68 65 72 20 73 65 63 74 69 6f 6e  st other section
8cc0: 73 20 6f 66 0a 74 68 69 73 20 64 6f 63 75 6d 65  s of.this docume
8cd0: 6e 74 20 74 61 6c 6b 73 20 61 62 6f 75 74 20 61  nt talks about a
8ce0: 20 70 61 72 74 69 63 75 6c 61 72 20 53 51 4c 20   particular SQL 
8cf0: 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73 20 73  command.  This s
8d00: 65 63 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f 74 20  ection does.not 
8d10: 74 61 6c 6b 20 61 62 6f 75 74 20 61 20 73 74 61  talk about a sta
8d20: 6e 64 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e 64 20  ndalone command 
8d30: 62 75 74 20 61 62 6f 75 74 20 22 65 78 70 72 65  but about "expre
8d40: 73 73 69 6f 6e 73 22 20 77 68 69 63 68 20 61 72  ssions" which ar
8d50: 65 20 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e 74 73  e .subcomponents
8d60: 20 6f 66 20 6d 6f 73 74 20 6f 74 68 65 72 20 63   of most other c
8d70: 6f 6d 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a 3c 70  ommands.</p>..<p
8d80: 3e 53 51 4c 69 74 65 20 75 6e 64 65 72 73 74 61  >SQLite understa
8d90: 6e 64 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  nds the followin
8da0: 67 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f  g binary operato
8db0: 72 73 2c 20 69 6e 20 6f 72 64 65 72 20 66 72 6f  rs, in order fro
8dc0: 6d 0a 68 69 67 68 65 73 74 20 74 6f 20 6c 6f 77  m.highest to low
8dd0: 65 73 74 20 70 72 65 63 65 64 65 6e 63 65 3a 3c  est precedence:<
8de0: 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
8df0: 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c  ><pre>.<font col
8e00: 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69  or="#2c2cf0"><bi
8e10: 67 3e 7c 7c 0a 2a 20 20 20 20 2f 20 20 20 20 25  g>||.*    /    %
8e20: 0a 2b 20 20 20 20 2d 0a 26 6c 74 3b 26 6c 74 3b  .+    -.&lt;&lt;
8e30: 20 20 20 26 67 74 3b 26 67 74 3b 20 20 20 26 61     &gt;&gt;   &a
8e40: 6d 70 3b 20 20 20 20 7c 0a 26 6c 74 3b 20 20 20  mp;    |.&lt;   
8e50: 20 26 6c 74 3b 3d 20 20 20 26 67 74 3b 20 20 20   &lt;=   &gt;   
8e60: 20 26 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d 20 20   &gt;=.=    ==  
8e70: 20 21 3d 20 20 20 26 6c 74 3b 26 67 74 3b 20 20   !=   &lt;&gt;  
8e80: 20 3c 2f 62 69 67 3e 49 4e 0a 41 4e 44 20 20 20   </big>IN.AND   
8e90: 0a 4f 52 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65  .OR</font>.</pre
8ea0: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  ></blockquote>..
8eb0: 3c 70 3e 53 75 70 70 6f 72 74 65 64 20 75 6e 61  <p>Supported una
8ec0: 72 79 20 6f 70 65 72 61 74 6f 72 73 20 61 72 65  ry operators are
8ed0: 20 74 68 65 73 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c   these:</p>..<bl
8ee0: 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 3c  ockquote><pre>.<
8ef0: 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32  font color="#2c2
8f00: 63 66 30 22 3e 3c 62 69 67 3e 2d 20 20 20 20 2b  cf0"><big>-    +
8f10: 20 20 20 20 21 20 20 20 20 7e 3c 2f 62 69 67 3e      !    ~</big>
8f20: 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c 2f  </font>.</pre></
8f30: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
8f40: 4e 6f 74 65 20 74 68 61 74 20 74 68 65 72 65 20  Note that there 
8f50: 61 72 65 20 74 77 6f 20 76 61 72 69 61 74 69 6f  are two variatio
8f60: 6e 73 20 6f 66 20 74 68 65 20 65 71 75 61 6c 73  ns of the equals
8f70: 20 61 6e 64 20 6e 6f 74 20 65 71 75 61 6c 73 0a   and not equals.
8f80: 6f 70 65 72 61 74 6f 72 73 2e 20 20 45 71 75 61  operators.  Equa
8f90: 6c 73 20 63 61 6e 20 62 65 20 65 69 74 68 65 72  ls can be either
8fa0: 7d 0a 70 75 74 73 20 22 5b 4f 70 65 72 61 74 6f  }.puts "[Operato
8fb0: 72 20 3d 5d 20 6f 72 20 5b 4f 70 65 72 61 74 6f  r =] or [Operato
8fc0: 72 20 3d 3d 5d 2e 0a 54 68 65 20 6e 6f 6e 2d 65  r ==]..The non-e
8fd0: 71 75 61 6c 73 20 6f 70 65 72 61 74 6f 72 20 63  quals operator c
8fe0: 61 6e 20 62 65 20 65 69 74 68 65 72 0a 5b 4f 70  an be either.[Op
8ff0: 65 72 61 74 6f 72 20 21 3d 5d 20 6f 72 20 5b 4f  erator !=] or [O
9000: 70 65 72 61 74 6f 72 20 7b 26 6c 74 3b 26 67 74  perator {&lt;&gt
9010: 3b 7d 5d 2e 0a 54 68 65 20 5b 4f 70 65 72 61 74  ;}]..The [Operat
9020: 6f 72 20 7c 7c 5d 20 6f 70 65 72 61 74 6f 72 20  or ||] operator 
9030: 69 73 20 5c 22 63 6f 6e 63 61 74 65 6e 61 74 65  is \"concatenate
9040: 5c 22 20 2d 20 69 74 20 6a 6f 69 6e 73 20 74 6f  \" - it joins to
9050: 67 65 74 68 65 72 0a 74 68 65 20 74 77 6f 20 73  gether.the two s
9060: 74 72 69 6e 67 73 20 6f 66 20 69 74 73 20 6f 70  trings of its op
9070: 65 72 61 6e 64 73 2e 0a 54 68 65 20 6f 70 65 72  erands..The oper
9080: 61 74 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 25  ator [Operator %
9090: 5d 20 6f 75 74 70 75 74 73 20 74 68 65 20 72 65  ] outputs the re
90a0: 6d 61 69 6e 64 65 72 20 6f 66 20 69 74 73 20 6c  mainder of its l
90b0: 65 66 74 20 0a 6f 70 65 72 61 6e 64 20 6d 6f 64  eft .operand mod
90c0: 75 6c 6f 20 69 74 73 20 72 69 67 68 74 20 6f 70  ulo its right op
90d0: 65 72 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  erand.</p>..<p>T
90e0: 68 65 20 72 65 73 75 6c 74 20 6f 66 20 61 6e 79  he result of any
90f0: 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72   binary operator
9100: 20 69 73 20 61 20 6e 75 6d 65 72 69 63 20 76 61   is a numeric va
9110: 6c 75 65 2c 20 65 78 63 65 70 74 0a 66 6f 72 20  lue, except.for 
9120: 74 68 65 20 5b 4f 70 65 72 61 74 6f 72 20 7c 7c  the [Operator ||
9130: 5d 20 63 6f 6e 63 61 74 65 6e 61 74 69 6f 6e 20  ] concatenation 
9140: 6f 70 65 72 61 74 6f 72 20 77 68 69 63 68 20 67  operator which g
9150: 69 76 65 73 20 61 20 73 74 72 69 6e 67 0a 72 65  ives a string.re
9160: 73 75 6c 74 2e 3c 2f 70 3e 22 0a 0a 70 75 74 73  sult.</p>"..puts
9170: 20 7b 0a 0a 3c 61 20 6e 61 6d 65 3d 22 6c 69 74   {..<a name="lit
9180: 65 72 61 6c 5f 76 61 6c 75 65 22 3e 3c 2f 61 3e  eral_value"></a>
9190: 0a 3c 70 3e 0a 41 20 6c 69 74 65 72 61 6c 20 76  .<p>.A literal v
91a0: 61 6c 75 65 20 69 73 20 61 6e 20 69 6e 74 65 67  alue is an integ
91b0: 65 72 20 6e 75 6d 62 65 72 20 6f 72 20 61 20 66  er number or a f
91c0: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75  loating point nu
91d0: 6d 62 65 72 2e 0a 53 63 69 65 6e 74 69 66 69 63  mber..Scientific
91e0: 20 6e 6f 74 61 74 69 6f 6e 20 69 73 20 73 75 70   notation is sup
91f0: 70 6f 72 74 65 64 2e 20 20 54 68 65 20 22 2e 22  ported.  The "."
9200: 20 63 68 61 72 61 63 74 65 72 20 69 73 20 61 6c   character is al
9210: 77 61 79 73 20 75 73 65 64 0a 61 73 20 74 68 65  ways used.as the
9220: 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74 20 65   decimal point e
9230: 76 65 6e 20 69 66 20 74 68 65 20 6c 6f 63 61 6c  ven if the local
9240: 65 20 73 65 74 74 69 6e 67 20 73 70 65 63 69 66  e setting specif
9250: 69 65 73 20 22 2c 22 20 66 6f 72 0a 74 68 69 73  ies "," for.this
9260: 20 72 6f 6c 65 20 2d 20 74 68 65 20 75 73 65 20   role - the use 
9270: 6f 66 20 22 2c 22 20 66 6f 72 20 74 68 65 20 64  of "," for the d
9280: 65 63 69 6d 61 6c 20 70 6f 69 6e 74 20 77 6f 75  ecimal point wou
9290: 6c 64 20 72 65 73 75 6c 74 20 69 6e 0a 73 79 6e  ld result in.syn
92a0: 74 61 63 74 69 63 20 61 6d 62 69 67 75 69 74 79  tactic ambiguity
92b0: 2e 20 20 41 20 73 74 72 69 6e 67 20 63 6f 6e 73  .  A string cons
92c0: 74 61 6e 74 20 69 73 20 66 6f 72 6d 65 64 20 62  tant is formed b
92d0: 79 20 65 6e 63 6c 6f 73 69 6e 67 20 74 68 65 0a  y enclosing the.
92e0: 73 74 72 69 6e 67 20 69 6e 20 73 69 6e 67 6c 65  string in single
92f0: 20 71 75 6f 74 65 73 20 28 27 29 2e 20 20 41 20   quotes (').  A 
9300: 73 69 6e 67 6c 65 20 71 75 6f 74 65 20 77 69 74  single quote wit
9310: 68 69 6e 20 74 68 65 20 73 74 72 69 6e 67 20 63  hin the string c
9320: 61 6e 0a 62 65 20 65 6e 63 6f 64 65 64 20 62 79  an.be encoded by
9330: 20 70 75 74 74 69 6e 67 20 74 77 6f 20 73 69 6e   putting two sin
9340: 67 6c 65 20 71 75 6f 74 65 73 20 69 6e 20 61 20  gle quotes in a 
9350: 72 6f 77 20 2d 20 61 73 20 69 6e 20 50 61 73 63  row - as in Pasc
9360: 61 6c 2e 0a 43 2d 73 74 79 6c 65 20 65 73 63 61  al..C-style esca
9370: 70 65 73 20 75 73 69 6e 67 20 74 68 65 20 62 61  pes using the ba
9380: 63 6b 73 6c 61 73 68 20 63 68 61 72 61 63 74 65  ckslash characte
9390: 72 20 61 72 65 20 6e 6f 74 20 73 75 70 70 6f 72  r are not suppor
93a0: 74 65 64 20 62 65 63 61 75 73 65 0a 74 68 65 79  ted because.they
93b0: 20 61 72 65 20 6e 6f 74 20 73 74 61 6e 64 61 72   are not standar
93c0: 64 20 53 51 4c 2e 0a 42 4c 4f 42 20 6c 69 74 65  d SQL..BLOB lite
93d0: 72 61 6c 73 20 61 72 65 20 73 74 72 69 6e 67 20  rals are string 
93e0: 6c 69 74 65 72 61 6c 73 20 63 6f 6e 74 61 69 6e  literals contain
93f0: 69 6e 67 20 68 65 78 61 64 65 63 69 6d 61 6c 20  ing hexadecimal 
9400: 64 61 74 61 20 61 6e 64 0a 70 72 65 63 65 64 65  data and.precede
9410: 64 20 62 79 20 61 20 73 69 6e 67 6c 65 20 22 78  d by a single "x
9420: 22 20 6f 72 20 22 58 22 20 63 68 61 72 61 63 74  " or "X" charact
9430: 65 72 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  er.  For example
9440: 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  :</p>..<blockquo
9450: 74 65 3e 3c 70 72 65 3e 0a 58 27 35 33 35 31 34  te><pre>.X'53514
9460: 36 39 37 34 36 35 27 0a 3c 2f 70 72 65 3e 3c 2f  697465'.</pre></
9470: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
9480: 0a 41 20 6c 69 74 65 72 61 6c 20 76 61 6c 75 65  .A literal value
9490: 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 74 68 65   can also be the
94a0: 20 74 6f 6b 65 6e 20 22 4e 55 4c 4c 22 2e 0a 3c   token "NULL"..<
94b0: 2f 70 3e 0a 0a 3c 70 3e 0a 41 20 70 61 72 61 6d  /p>..<p>.A param
94c0: 65 74 65 72 20 73 70 65 63 69 66 69 65 73 20 61  eter specifies a
94d0: 20 70 6c 61 63 65 68 6f 6c 64 65 72 20 69 6e 20   placeholder in 
94e0: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 66  the expression f
94f0: 6f 72 20 61 20 6c 69 74 65 72 61 6c 0a 76 61 6c  or a literal.val
9500: 75 65 20 74 68 61 74 20 69 73 20 66 69 6c 6c 65  ue that is fille
9510: 64 20 69 6e 20 61 74 20 72 75 6e 74 69 6d 65 20  d in at runtime 
9520: 75 73 69 6e 67 20 74 68 65 0a 3c 61 20 68 72 65  using the.<a hre
9530: 66 3d 22 63 61 70 69 33 72 65 66 2e 68 74 6d 6c  f="capi3ref.html
9540: 23 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  #sqlite3_bind_in
9550: 74 22 3e 73 71 6c 69 74 65 33 5f 62 69 6e 64 3c  t">sqlite3_bind<
9560: 2f 61 3e 20 41 50 49 2e 0a 50 61 72 61 6d 65 74  /a> API..Paramet
9570: 65 72 73 20 63 61 6e 20 74 61 6b 65 20 73 65 76  ers can take sev
9580: 65 72 61 6c 20 66 6f 72 6d 73 3a 0a 3c 2f 70 0a  eral forms:.</p.
9590: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74  .<blockquote>.<t
95a0: 61 62 6c 65 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61  able>.<tr>.<td a
95b0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c  lign="right" val
95c0: 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3f 3c 2f  ign="top"><b>?</
95d0: 62 3e 3c 69 3e 4e 4e 4e 3c 2f 69 3e 3c 2f 74 64  b><i>NNN</i></td
95e0: 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e  ><td width="20">
95f0: 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 71 75 65 73  </td>.<td>A ques
9600: 74 69 6f 6e 20 6d 61 72 6b 20 66 6f 6c 6c 6f 77  tion mark follow
9610: 65 64 20 62 79 20 61 20 6e 75 6d 62 65 72 20 3c  ed by a number <
9620: 69 3e 4e 4e 4e 3c 2f 69 3e 20 68 6f 6c 64 73 20  i>NNN</i> holds 
9630: 61 20 73 70 6f 74 20 66 6f 72 20 74 68 65 0a 4e  a spot for the.N
9640: 4e 4e 2d 74 68 20 70 61 72 61 6d 65 74 65 72 2e  NN-th parameter.
9650: 20 20 4e 4e 4e 20 6d 75 73 74 20 62 65 20 62 65    NNN must be be
9660: 74 77 65 65 6e 20 31 20 61 6e 64 20 39 39 39 2e  tween 1 and 999.
9670: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e  </td>.</tr>.<tr>
9680: 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69 67 68  .<td align="righ
9690: 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  t" valign="top">
96a0: 3c 62 3e 3f 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64  <b>?</b></td><td
96b0: 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64   width="20"></td
96c0: 3e 0a 3c 74 64 3e 41 20 71 75 65 73 74 69 6f 6e  >.<td>A question
96d0: 20 6d 61 72 6b 20 74 68 61 74 20 69 73 20 6e 6f   mark that is no
96e0: 74 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20  t followed by a 
96f0: 6e 75 6d 62 65 72 20 68 6f 6c 64 73 20 61 20 73  number holds a s
9700: 70 6f 74 20 66 6f 72 0a 74 68 65 20 6e 65 78 74  pot for.the next
9710: 20 75 6e 75 73 65 64 20 70 61 72 61 6d 65 74 65   unused paramete
9720: 72 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74  r.</td>.</tr>.<t
9730: 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69  r>.<td align="ri
9740: 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70  ght" valign="top
9750: 22 3e 3c 62 3e 3a 3c 2f 62 3e 3c 69 3e 41 41 41  "><b>:</b><i>AAA
9760: 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77 69  A</i></td><td wi
9770: 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c  dth="20"></td>.<
9780: 74 64 3e 41 20 63 6f 6c 6f 6e 20 66 6f 6c 6c 6f  td>A colon follo
9790: 77 65 64 20 62 79 20 61 6e 20 69 64 65 6e 74 69  wed by an identi
97a0: 66 69 65 72 20 6e 61 6d 65 20 68 6f 6c 64 73 20  fier name holds 
97b0: 61 20 73 70 6f 74 20 66 6f 72 20 61 20 6e 61 6d  a spot for a nam
97c0: 65 64 0a 70 61 72 61 6d 65 74 65 72 20 77 69 74  ed.parameter wit
97d0: 68 20 74 68 65 20 6e 61 6d 65 20 41 41 41 41 2e  h the name AAAA.
97e0: 20 20 4e 61 6d 65 64 20 70 61 72 61 6d 65 74 65    Named paramete
97f0: 72 73 20 61 72 65 20 61 6c 73 6f 20 6e 75 6d 62  rs are also numb
9800: 65 72 65 64 2e 0a 54 68 65 20 6e 75 6d 62 65 72  ered..The number
9810: 20 61 73 73 69 67 6e 65 64 20 69 73 20 74 68 65   assigned is the
9820: 20 6e 65 78 74 20 75 6e 75 73 65 64 20 6e 75 6d   next unused num
9830: 62 65 72 2e 20 20 54 6f 20 61 76 6f 69 64 20 63  ber.  To avoid c
9840: 6f 6e 66 75 73 69 6f 6e 2c 0a 69 74 20 69 73 20  onfusion,.it is 
9850: 62 65 73 74 20 74 6f 20 61 76 6f 69 64 20 6d 69  best to avoid mi
9860: 78 69 6e 67 20 6e 61 6d 65 64 20 61 6e 64 20 6e  xing named and n
9870: 75 6d 62 65 72 65 64 20 70 61 72 61 6d 65 74 65  umbered paramete
9880: 72 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c  rs.</td>.</tr>.<
9890: 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72  tr>.<td align="r
98a0: 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f  ight" valign="to
98b0: 70 22 3e 3c 62 3e 24 3c 2f 62 3e 3c 69 3e 41 41  p"><b>$</b><i>AA
98c0: 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77  AA</i></td><td w
98d0: 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a  idth="20"></td>.
98e0: 3c 74 64 3e 41 20 64 6f 6c 6c 61 72 2d 73 69 67  <td>A dollar-sig
98f0: 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 6e  n followed by an
9900: 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65   identifier name
9910: 20 61 6c 73 6f 20 68 6f 6c 64 73 20 61 20 73 70   also holds a sp
9920: 6f 74 20 66 6f 72 20 61 20 6e 61 6d 65 64 0a 70  ot for a named.p
9930: 61 72 61 6d 65 74 65 72 20 77 69 74 68 20 74 68  arameter with th
9940: 65 20 6e 61 6d 65 20 41 41 41 41 2e 20 20 54 68  e name AAAA.  Th
9950: 65 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d  e identifier nam
9960: 65 20 69 6e 20 74 68 69 73 20 63 61 73 65 20 63  e in this case c
9970: 61 6e 20 69 6e 63 6c 75 64 65 0a 6f 6e 65 20 6f  an include.one o
9980: 72 20 6d 6f 72 65 20 6f 63 63 75 72 61 6e 63 65  r more occurance
9990: 73 20 6f 66 20 22 3a 3a 22 20 61 6e 64 20 61 20  s of "::" and a 
99a0: 73 75 66 66 69 78 20 65 6e 63 6c 6f 73 65 64 20  suffix enclosed 
99b0: 69 6e 20 22 28 2e 2e 2e 29 22 20 63 6f 6e 74 61  in "(...)" conta
99c0: 69 6e 69 6e 67 0a 61 6e 79 20 74 65 78 74 20 61  ining.any text a
99d0: 74 20 61 6c 6c 2e 20 20 54 68 69 73 20 73 79 6e  t all.  This syn
99e0: 74 61 78 20 69 73 20 74 68 65 20 66 6f 72 6d 20  tax is the form 
99f0: 6f 66 20 61 20 76 61 72 69 61 62 6c 65 20 6e 61  of a variable na
9a00: 6d 65 20 69 6e 20 74 68 65 20 54 63 6c 0a 70 72  me in the Tcl.pr
9a10: 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67 75 61  ogramming langua
9a20: 67 65 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c  ge.</td>.</tr>.<
9a30: 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71  /table>.</blockq
9a40: 75 6f 74 65 3e 0a 0a 3c 70 3e 50 61 72 61 6d 65  uote>..<p>Parame
9a50: 74 65 72 73 20 74 68 61 74 20 61 72 65 20 6e 6f  ters that are no
9a60: 74 20 61 73 73 69 67 6e 65 64 20 76 61 6c 75 65  t assigned value
9a70: 73 20 75 73 69 6e 67 0a 3c 61 20 68 72 65 66 3d  s using.<a href=
9a80: 22 63 61 70 69 33 72 65 66 2e 68 74 6d 6c 23 73  "capi3ref.html#s
9a90: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
9aa0: 3e 73 71 6c 69 74 65 33 5f 62 69 6e 64 3c 2f 61  >sqlite3_bind</a
9ab0: 3e 20 61 72 65 20 74 72 65 61 74 65 64 0a 61 73  > are treated.as
9ac0: 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 61 20 6e   NULL.</p>..<a n
9ad0: 61 6d 65 3d 22 6c 69 6b 65 22 3e 3c 2f 61 3e 0a  ame="like"></a>.
9ae0: 3c 70 3e 54 68 65 20 4c 49 4b 45 20 6f 70 65 72  <p>The LIKE oper
9af0: 61 74 6f 72 20 64 6f 65 73 20 61 20 70 61 74 74  ator does a patt
9b00: 65 72 6e 20 6d 61 74 63 68 69 6e 67 20 63 6f 6d  ern matching com
9b10: 70 61 72 69 73 6f 6e 2e 20 54 68 65 20 6f 70 65  parison. The ope
9b20: 72 61 6e 64 0a 74 6f 20 74 68 65 20 72 69 67 68  rand.to the righ
9b30: 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 70  t contains the p
9b40: 61 74 74 65 72 6e 2c 20 74 68 65 20 6c 65 66 74  attern, the left
9b50: 20 68 61 6e 64 20 6f 70 65 72 61 6e 64 20 63 6f   hand operand co
9b60: 6e 74 61 69 6e 73 20 74 68 65 0a 73 74 72 69 6e  ntains the.strin
9b70: 67 20 74 6f 20 6d 61 74 63 68 20 61 67 61 69 6e  g to match again
9b80: 73 74 20 74 68 65 20 70 61 74 74 65 72 6e 2e 20  st the pattern. 
9b90: 0a 7d 0a 70 75 74 73 20 22 41 20 70 65 72 63 65  .}.puts "A perce
9ba0: 6e 74 20 73 79 6d 62 6f 6c 20 5b 4f 70 65 72 61  nt symbol [Opera
9bb0: 74 6f 72 20 25 5d 20 69 6e 20 74 68 65 20 70 61  tor %] in the pa
9bc0: 74 74 65 72 6e 20 6d 61 74 63 68 65 73 20 61 6e  ttern matches an
9bd0: 79 0a 73 65 71 75 65 6e 63 65 20 6f 66 20 7a 65  y.sequence of ze
9be0: 72 6f 20 6f 72 20 6d 6f 72 65 20 63 68 61 72 61  ro or more chara
9bf0: 63 74 65 72 73 20 69 6e 20 74 68 65 20 73 74 72  cters in the str
9c00: 69 6e 67 2e 20 20 41 6e 20 75 6e 64 65 72 73 63  ing.  An undersc
9c10: 6f 72 65 0a 5b 4f 70 65 72 61 74 6f 72 20 5f 5d  ore.[Operator _]
9c20: 20 69 6e 20 74 68 65 20 70 61 74 74 65 72 6e 20   in the pattern 
9c30: 6d 61 74 63 68 65 73 20 61 6e 79 20 73 69 6e 67  matches any sing
9c40: 6c 65 20 63 68 61 72 61 63 74 65 72 20 69 6e 20  le character in 
9c50: 74 68 65 0a 73 74 72 69 6e 67 2e 20 20 41 6e 79  the.string.  Any
9c60: 20 6f 74 68 65 72 20 63 68 61 72 61 63 74 65 72   other character
9c70: 20 6d 61 74 63 68 65 73 20 69 74 73 65 6c 66 20   matches itself 
9c80: 6f 72 20 69 74 27 73 20 6c 6f 77 65 72 2f 75 70  or it's lower/up
9c90: 70 65 72 20 63 61 73 65 0a 65 71 75 69 76 61 6c  per case.equival
9ca0: 65 6e 74 20 28 69 2e 65 2e 20 63 61 73 65 2d 69  ent (i.e. case-i
9cb0: 6e 73 65 6e 73 69 74 69 76 65 20 6d 61 74 63 68  nsensitive match
9cc0: 69 6e 67 29 2e 20 20 28 41 20 62 75 67 3a 20 53  ing).  (A bug: S
9cd0: 51 4c 69 74 65 20 6f 6e 6c 79 0a 75 6e 64 65 72  QLite only.under
9ce0: 73 74 61 6e 64 73 20 75 70 70 65 72 2f 6c 6f 77  stands upper/low
9cf0: 65 72 20 63 61 73 65 20 66 6f 72 20 37 2d 62 69  er case for 7-bi
9d00: 74 20 4c 61 74 69 6e 20 63 68 61 72 61 63 74 65  t Latin characte
9d10: 72 73 2e 20 20 48 65 6e 63 65 20 74 68 65 0a 4c  rs.  Hence the.L
9d20: 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 69 73 20  IKE operator is 
9d30: 63 61 73 65 20 73 65 6e 73 69 74 69 76 65 20 66  case sensitive f
9d40: 6f 72 20 38 2d 62 69 74 20 69 73 6f 38 38 35 39  or 8-bit iso8859
9d50: 20 63 68 61 72 61 63 74 65 72 73 20 6f 72 20 55   characters or U
9d60: 54 46 2d 38 0a 63 68 61 72 61 63 74 65 72 73 2e  TF-8.characters.
9d70: 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74    For example, t
9d80: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 62  he expression <b
9d90: 3e 27 61 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e  >'a'&nbsp;LIKE&n
9da0: 62 73 70 3b 27 41 27 3c 2f 62 3e 0a 69 73 20 54  bsp;'A'</b>.is T
9db0: 52 55 45 20 62 75 74 20 3c 62 3e 27 26 61 65 6c  RUE but <b>'&ael
9dc0: 69 67 3b 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e  ig;'&nbsp;LIKE&n
9dd0: 62 73 70 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62  bsp;'&AElig;'</b
9de0: 3e 20 69 73 20 46 41 4c 53 45 2e 29 2e 3c 2f 70  > is FALSE.).</p
9df0: 3e 22 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 49 66  >"..puts {.<p>If
9e00: 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20 45 53   the optional ES
9e10: 43 41 50 45 20 63 6c 61 75 73 65 20 69 73 20 70  CAPE clause is p
9e20: 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 74 68 65  resent, then the
9e30: 20 65 78 70 72 65 73 73 69 6f 6e 0a 66 6f 6c 6c   expression.foll
9e40: 6f 77 69 6e 67 20 74 68 65 20 45 53 43 41 50 45  owing the ESCAPE
9e50: 20 6b 65 79 77 6f 72 64 20 6d 75 73 74 20 65 76   keyword must ev
9e60: 61 6c 75 61 74 65 20 74 6f 20 61 20 73 74 72 69  aluate to a stri
9e70: 6e 67 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66  ng consisting of
9e80: 0a 61 20 73 69 6e 67 6c 65 20 63 68 61 72 61 63  .a single charac
9e90: 74 65 72 2e 20 54 68 69 73 20 63 68 61 72 61 63  ter. This charac
9ea0: 74 65 72 20 6d 61 79 20 62 65 20 75 73 65 64 20  ter may be used 
9eb0: 69 6e 20 74 68 65 20 4c 49 4b 45 20 70 61 74 74  in the LIKE patt
9ec0: 65 72 6e 0a 74 6f 20 69 6e 63 6c 75 64 65 20 6c  ern.to include l
9ed0: 69 74 65 72 61 6c 20 70 65 72 63 65 6e 74 20 6f  iteral percent o
9ee0: 72 20 75 6e 64 65 72 73 63 6f 72 65 20 63 68 61  r underscore cha
9ef0: 72 61 63 74 65 72 73 2e 20 54 68 65 20 65 73 63  racters. The esc
9f00: 61 70 65 0a 63 68 61 72 61 63 74 65 72 20 66 6f  ape.character fo
9f10: 6c 6c 6f 77 65 64 20 62 79 20 61 20 70 65 72 63  llowed by a perc
9f20: 65 6e 74 20 73 79 6d 62 6f 6c 2c 20 75 6e 64 65  ent symbol, unde
9f30: 72 73 63 6f 72 65 20 6f 72 20 69 74 73 65 6c 66  rscore or itself
9f40: 20 6d 61 74 63 68 65 73 20 61 0a 6c 69 74 65 72   matches a.liter
9f50: 61 6c 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f  al percent symbo
9f60: 6c 2c 20 75 6e 64 65 72 73 63 6f 72 65 20 6f 72  l, underscore or
9f70: 20 65 73 63 61 70 65 20 63 68 61 72 61 63 74 65   escape characte
9f80: 72 20 69 6e 20 74 68 65 20 73 74 72 69 6e 67 2c  r in the string,
9f90: 0a 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20 54  .respectively. T
9fa0: 68 65 20 69 6e 66 69 78 20 4c 49 4b 45 20 6f 70  he infix LIKE op
9fb0: 65 72 61 74 6f 72 20 69 73 20 69 6d 70 6c 65 6d  erator is implem
9fc0: 65 6e 74 65 64 20 62 79 20 63 61 6c 6c 69 6e 67  ented by calling
9fd0: 20 74 68 65 0a 75 73 65 72 20 66 75 6e 63 74 69   the.user functi
9fe0: 6f 6e 20 3c 61 20 68 72 65 66 3d 22 23 6c 69 6b  on <a href="#lik
9ff0: 65 46 75 6e 63 22 3e 20 6c 69 6b 65 28 3c 69 3e  eFunc"> like(<i>
a000: 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c  X</i>,<i>Y</i>)<
a010: 2f 61 3e 2e 3c 2f 70 3e 0a 7d 0a 0a 70 75 74 73  /a>.</p>.}..puts
a020: 20 7b 0a 54 68 65 20 4c 49 4b 45 20 6f 70 65 72   {.The LIKE oper
a030: 61 74 6f 72 20 69 73 20 6e 6f 74 20 63 61 73 65  ator is not case
a040: 20 73 65 6e 73 69 74 69 76 65 20 61 6e 64 20 77   sensitive and w
a050: 69 6c 6c 20 6d 61 74 63 68 20 75 70 70 65 72 20  ill match upper 
a060: 63 61 73 65 0a 63 68 61 72 61 63 74 65 72 73 20  case.characters 
a070: 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 67 61 69  on one side agai
a080: 6e 73 74 20 6c 6f 77 65 72 20 63 61 73 65 20 63  nst lower case c
a090: 68 61 72 61 63 74 65 72 73 20 6f 6e 20 74 68 65  haracters on the
a0a0: 20 6f 74 68 65 72 2e 20 20 0a 28 41 20 62 75 67   other.  .(A bug
a0b0: 3a 20 53 51 4c 69 74 65 20 6f 6e 6c 79 20 75 6e  : SQLite only un
a0c0: 64 65 72 73 74 61 6e 64 73 20 75 70 70 65 72 2f  derstands upper/
a0d0: 6c 6f 77 65 72 20 63 61 73 65 20 66 6f 72 20 37  lower case for 7
a0e0: 2d 62 69 74 20 4c 61 74 69 6e 0a 63 68 61 72 61  -bit Latin.chara
a0f0: 63 74 65 72 73 2e 20 20 48 65 6e 63 65 20 74 68  cters.  Hence th
a100: 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20  e LIKE operator 
a110: 69 73 20 63 61 73 65 20 73 65 6e 73 69 74 69 76  is case sensitiv
a120: 65 20 66 6f 72 20 38 2d 62 69 74 0a 69 73 6f 38  e for 8-bit.iso8
a130: 38 35 39 20 63 68 61 72 61 63 74 65 72 73 20 6f  859 characters o
a140: 72 20 55 54 46 2d 38 20 63 68 61 72 61 63 74 65  r UTF-8 characte
a150: 72 73 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  rs.  For example
a160: 2c 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  , the expression
a170: 0a 3c 62 3e 27 61 27 26 6e 62 73 70 3b 4c 49 4b  .<b>'a'&nbsp;LIK
a180: 45 26 6e 62 73 70 3b 27 41 27 3c 2f 62 3e 20 69  E&nbsp;'A'</b> i
a190: 73 20 54 52 55 45 20 62 75 74 0a 3c 62 3e 27 26  s TRUE but.<b>'&
a1a0: 61 65 6c 69 67 3b 27 26 6e 62 73 70 3b 4c 49 4b  aelig;'&nbsp;LIK
a1b0: 45 26 6e 62 73 70 3b 27 26 41 45 6c 69 67 3b 27  E&nbsp;'&AElig;'
a1c0: 3c 2f 62 3e 20 69 73 20 46 41 4c 53 45 2e 29 2e  </b> is FALSE.).
a1d0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 69 6e 66  </p>..<p>The inf
a1e0: 69 78 20 4c 49 4b 45 0a 6f 70 65 72 61 74 6f 72  ix LIKE.operator
a1f0: 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20   is implemented 
a200: 62 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 75  by calling the u
a210: 73 65 72 20 66 75 6e 63 74 69 6f 6e 20 3c 61 20  ser function <a 
a220: 68 72 65 66 3d 22 23 6c 69 6b 65 46 75 6e 63 22  href="#likeFunc"
a230: 3e 0a 6c 69 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c  >.like(<i>X</i>,
a240: 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 61 3e 2e 20 20  <i>Y</i>)</a>.  
a250: 49 66 20 61 6e 20 45 53 43 41 50 45 20 63 6c 61  If an ESCAPE cla
a260: 75 73 65 20 69 73 20 70 72 65 73 65 6e 74 2c 20  use is present, 
a270: 69 74 20 61 64 64 73 0a 61 20 74 68 69 72 64 20  it adds.a third 
a280: 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65  parameter to the
a290: 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 2e 20   function call. 
a2a0: 49 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 61  If the functiona
a2b0: 6c 69 74 79 20 6f 66 20 4c 49 4b 45 20 63 61 6e  lity of LIKE can
a2c0: 20 62 65 0a 6f 76 65 72 72 69 64 64 65 6e 20 62   be.overridden b
a2d0: 79 20 64 65 66 69 6e 69 6e 67 20 61 6e 20 61 6c  y defining an al
a2e0: 74 65 72 6e 61 74 69 76 65 20 69 6d 70 6c 65 6d  ternative implem
a2f0: 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 0a  entation of the.
a300: 6c 69 6b 65 28 29 20 53 51 4c 20 66 75 6e 63 74  like() SQL funct
a310: 69 6f 6e 2e 3c 2f 70 3e 0a 3c 2f 70 3e 0a 0a 3c  ion.</p>.</p>..<
a320: 61 20 6e 61 6d 65 3d 22 67 6c 6f 62 22 3e 3c 2f  a name="glob"></
a330: 61 3e 0a 3c 70 3e 54 68 65 20 47 4c 4f 42 20 6f  a>.<p>The GLOB o
a340: 70 65 72 61 74 6f 72 20 69 73 20 73 69 6d 69 6c  perator is simil
a350: 61 72 20 74 6f 20 4c 49 4b 45 20 62 75 74 20 75  ar to LIKE but u
a360: 73 65 73 20 74 68 65 20 55 6e 69 78 0a 66 69 6c  ses the Unix.fil
a370: 65 20 67 6c 6f 62 62 69 6e 67 20 73 79 6e 74 61  e globbing synta
a380: 78 20 66 6f 72 20 69 74 73 20 77 69 6c 64 63 61  x for its wildca
a390: 72 64 73 2e 20 20 41 6c 73 6f 2c 20 47 4c 4f 42  rds.  Also, GLOB
a3a0: 20 69 73 20 63 61 73 65 0a 73 65 6e 73 69 74 69   is case.sensiti
a3b0: 76 65 2c 20 75 6e 6c 69 6b 65 20 4c 49 4b 45 2e  ve, unlike LIKE.
a3c0: 20 20 42 6f 74 68 20 47 4c 4f 42 20 61 6e 64 20    Both GLOB and 
a3d0: 4c 49 4b 45 20 6d 61 79 20 62 65 20 70 72 65 63  LIKE may be prec
a3e0: 65 64 65 64 20 62 79 0a 74 68 65 20 4e 4f 54 20  eded by.the NOT 
a3f0: 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e 76 65 72  keyword to inver
a400: 74 20 74 68 65 20 73 65 6e 73 65 20 6f 66 20 74  t the sense of t
a410: 68 65 20 74 65 73 74 2e 20 20 54 68 65 20 69 6e  he test.  The in
a420: 66 69 78 20 47 4c 4f 42 20 0a 6f 70 65 72 61 74  fix GLOB .operat
a430: 6f 72 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65  or is implemente
a440: 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 74 68 65  d by calling the
a450: 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 20 3c   user function <
a460: 61 20 68 72 65 66 3d 22 23 67 6c 6f 62 46 75 6e  a href="#globFun
a470: 63 22 3e 0a 67 6c 6f 62 28 3c 69 3e 58 3c 2f 69  c">.glob(<i>X</i
a480: 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 61 3e 20  >,<i>Y</i>)</a> 
a490: 61 6e 64 20 63 61 6e 20 62 65 20 6d 6f 64 69 66  and can be modif
a4a0: 69 65 64 20 62 79 20 6f 76 65 72 72 69 64 69 6e  ied by overridin
a4b0: 67 0a 74 68 61 74 20 66 75 6e 63 74 69 6f 6e 2e  g.that function.
a4c0: 3c 2f 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 72  </p>..<a name="r
a4d0: 65 67 65 78 70 22 3e 3c 2f 61 3e 0a 3c 70 3e 54  egexp"></a>.<p>T
a4e0: 68 65 20 52 45 47 45 58 50 20 6f 70 65 72 61 74  he REGEXP operat
a4f0: 6f 72 20 69 73 20 61 20 73 70 65 63 69 61 6c 20  or is a special 
a500: 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20 72  syntax for the r
a510: 65 67 65 78 70 28 29 0a 75 73 65 72 20 66 75 6e  egexp().user fun
a520: 63 74 69 6f 6e 2e 20 20 4e 6f 20 72 65 67 65 78  ction.  No regex
a530: 70 28 29 20 75 73 65 72 20 66 75 6e 63 74 69 6f  p() user functio
a540: 6e 20 69 73 20 64 65 66 69 6e 65 64 20 62 79 20  n is defined by 
a550: 64 65 66 61 75 6c 74 0a 61 6e 64 20 73 6f 20 75  default.and so u
a560: 73 65 20 6f 66 20 74 68 65 20 52 45 47 45 58 50  se of the REGEXP
a570: 20 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 6e   operator will n
a580: 6f 72 6d 61 6c 6c 79 20 72 65 73 75 6c 74 20 69  ormally result i
a590: 6e 20 61 6e 0a 65 72 72 6f 72 20 6d 65 73 73 61  n an.error messa
a5a0: 67 65 2e 20 20 49 66 20 61 20 75 73 65 72 2d 64  ge.  If a user-d
a5b0: 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 20  efined function 
a5c0: 6e 61 6d 65 64 20 22 72 65 67 65 78 70 22 0a 69  named "regexp".i
a5d0: 73 20 64 65 66 69 6e 65 64 20 61 74 20 72 75 6e  s defined at run
a5e0: 2d 74 69 6d 65 2c 20 74 68 61 74 20 66 75 6e 63  -time, that func
a5f0: 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 63 61 6c  tion will be cal
a600: 6c 65 64 20 69 6e 20 6f 72 64 65 72 0a 74 6f 20  led in order.to 
a610: 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 52 45  implement the RE
a620: 47 45 58 50 20 6f 70 65 72 61 74 6f 72 2e 3c 2f  GEXP operator.</
a630: 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6c 75 6d 6e 20  p>..<p>A column 
a640: 6e 61 6d 65 20 63 61 6e 20 62 65 20 61 6e 79 20  name can be any 
a650: 6f 66 20 74 68 65 20 6e 61 6d 65 73 20 64 65 66  of the names def
a660: 69 6e 65 64 20 69 6e 20 74 68 65 20 43 52 45 41  ined in the CREA
a670: 54 45 20 54 41 42 4c 45 0a 73 74 61 74 65 6d 65  TE TABLE.stateme
a680: 6e 74 20 6f 72 20 6f 6e 65 20 6f 66 20 74 68 65  nt or one of the
a690: 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 70 65 63 69   following speci
a6a0: 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73 3a 20  al identifiers: 
a6b0: 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c 0a  "<b>ROWID</b>",.
a6c0: 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72  "<b>OID</b>", or
a6d0: 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e   "<b>_ROWID_</b>
a6e0: 22 2e 0a 54 68 65 73 65 20 73 70 65 63 69 61 6c  "..These special
a6f0: 20 69 64 65 6e 74 69 66 69 65 72 73 20 61 6c 6c   identifiers all
a700: 20 64 65 73 63 72 69 62 65 20 74 68 65 0a 75 6e   describe the.un
a710: 69 71 75 65 20 72 61 6e 64 6f 6d 20 69 6e 74 65  ique random inte
a720: 67 65 72 20 6b 65 79 20 28 74 68 65 20 22 72 6f  ger key (the "ro
a730: 77 20 6b 65 79 22 29 20 61 73 73 6f 63 69 61 74  w key") associat
a740: 65 64 20 77 69 74 68 20 65 76 65 72 79 20 0a 72  ed with every .r
a750: 6f 77 20 6f 66 20 65 76 65 72 79 20 74 61 62 6c  ow of every tabl
a760: 65 2e 0a 54 68 65 20 73 70 65 63 69 61 6c 20 69  e..The special i
a770: 64 65 6e 74 69 66 69 65 72 73 20 6f 6e 6c 79 20  dentifiers only 
a780: 72 65 66 65 72 20 74 6f 20 74 68 65 20 72 6f 77  refer to the row
a790: 20 6b 65 79 20 69 66 20 74 68 65 20 43 52 45 41   key if the CREA
a7a0: 54 45 20 54 41 42 4c 45 0a 73 74 61 74 65 6d 65  TE TABLE.stateme
a7b0: 6e 74 20 64 6f 65 73 20 6e 6f 74 20 64 65 66 69  nt does not defi
a7c0: 6e 65 20 61 20 72 65 61 6c 20 63 6f 6c 75 6d 6e  ne a real column
a7d0: 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e   with the same n
a7e0: 61 6d 65 2e 20 20 52 6f 77 20 6b 65 79 73 0a 61  ame.  Row keys.a
a7f0: 63 74 20 6c 69 6b 65 20 72 65 61 64 2d 6f 6e 6c  ct like read-onl
a800: 79 20 63 6f 6c 75 6d 6e 73 2e 20 20 41 20 72 6f  y columns.  A ro
a810: 77 20 6b 65 79 20 63 61 6e 20 62 65 20 75 73 65  w key can be use
a820: 64 20 61 6e 79 77 68 65 72 65 20 61 20 72 65 67  d anywhere a reg
a830: 75 6c 61 72 0a 63 6f 6c 75 6d 6e 20 63 61 6e 20  ular.column can 
a840: 62 65 20 75 73 65 64 2c 20 65 78 63 65 70 74 20  be used, except 
a850: 74 68 61 74 20 79 6f 75 20 63 61 6e 6e 6f 74 20  that you cannot 
a860: 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c 75 65  change the value
a870: 0a 6f 66 20 61 20 72 6f 77 20 6b 65 79 20 69 6e  .of a row key in
a880: 20 61 6e 20 55 50 44 41 54 45 20 6f 72 20 49 4e   an UPDATE or IN
a890: 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 2e 0a  SERT statement..
a8a0: 22 53 45 4c 45 43 54 20 2a 20 2e 2e 2e 22 20 64  "SELECT * ..." d
a8b0: 6f 65 73 20 6e 6f 74 20 72 65 74 75 72 6e 20 74  oes not return t
a8c0: 68 65 20 72 6f 77 20 6b 65 79 2e 3c 2f 70 3e 0a  he row key.</p>.
a8d0: 0a 3c 70 3e 53 45 4c 45 43 54 20 73 74 61 74 65  .<p>SELECT state
a8e0: 6d 65 6e 74 73 20 63 61 6e 20 61 70 70 65 61 72  ments can appear
a8f0: 20 69 6e 20 65 78 70 72 65 73 73 69 6f 6e 73 20   in expressions 
a900: 61 73 20 65 69 74 68 65 72 20 74 68 65 0a 72 69  as either the.ri
a910: 67 68 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e 64  ght-hand operand
a920: 20 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61   of the IN opera
a930: 74 6f 72 2c 20 61 73 20 61 20 73 63 61 6c 61 72  tor, as a scalar
a940: 20 71 75 61 6e 74 69 74 79 2c 20 6f 72 0a 61 73   quantity, or.as
a950: 20 74 68 65 20 6f 70 65 72 61 6e 64 20 6f 66 20   the operand of 
a960: 61 6e 20 45 58 49 53 54 53 20 6f 70 65 72 61 74  an EXISTS operat
a970: 6f 72 2e 0a 41 73 20 61 20 73 63 61 6c 61 72 20  or..As a scalar 
a980: 71 75 61 6e 74 69 74 79 20 6f 72 20 74 68 65 20  quantity or the 
a990: 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e  operand of an IN
a9a0: 20 6f 70 65 72 61 74 6f 72 2c 0a 74 68 65 20 53   operator,.the S
a9b0: 45 4c 45 43 54 20 73 68 6f 75 6c 64 20 68 61 76  ELECT should hav
a9c0: 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20  e only a single 
a9d0: 63 6f 6c 75 6d 6e 20 69 6e 20 69 74 73 0a 72 65  column in its.re
a9e0: 73 75 6c 74 2e 20 20 43 6f 6d 70 6f 75 6e 64 20  sult.  Compound 
a9f0: 53 45 4c 45 43 54 73 20 28 63 6f 6e 6e 65 63 74  SELECTs (connect
aa00: 65 64 20 77 69 74 68 20 6b 65 79 77 6f 72 64 73  ed with keywords
aa10: 20 6c 69 6b 65 20 55 4e 49 4f 4e 20 6f 72 0a 45   like UNION or.E
aa20: 58 43 45 50 54 29 20 61 72 65 20 61 6c 6c 6f 77  XCEPT) are allow
aa30: 65 64 2e 0a 57 69 74 68 20 74 68 65 20 45 58 49  ed..With the EXI
aa40: 53 54 53 20 6f 70 65 72 61 74 6f 72 2c 20 74 68  STS operator, th
aa50: 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  e columns in the
aa60: 20 72 65 73 75 6c 74 20 73 65 74 20 6f 66 20 74   result set of t
aa70: 68 65 20 53 45 4c 45 43 54 20 61 72 65 0a 69 67  he SELECT are.ig
aa80: 6e 6f 72 65 64 20 61 6e 64 20 74 68 65 20 65 78  nored and the ex
aa90: 70 72 65 73 73 69 6f 6e 20 72 65 74 75 72 6e 73  pression returns
aaa0: 20 54 52 55 45 20 69 66 20 6f 6e 65 20 6f 72 20   TRUE if one or 
aab0: 6d 6f 72 65 20 72 6f 77 73 20 65 78 69 73 74 0a  more rows exist.
aac0: 61 6e 64 20 46 41 4c 53 45 20 69 66 20 74 68 65  and FALSE if the
aad0: 20 72 65 73 75 6c 74 20 73 65 74 20 69 73 20 65   result set is e
aae0: 6d 70 74 79 2e 0a 49 66 20 6e 6f 20 74 65 72 6d  mpty..If no term
aaf0: 73 20 69 6e 20 74 68 65 20 53 45 4c 45 43 54 20  s in the SELECT 
ab00: 65 78 70 72 65 73 73 69 6f 6e 20 72 65 66 65 72  expression refer
ab10: 20 74 6f 20 76 61 6c 75 65 20 69 6e 20 74 68 65   to value in the
ab20: 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 71 75 65 72   containing.quer
ab30: 79 2c 20 74 68 65 6e 20 74 68 65 20 65 78 70 72  y, then the expr
ab40: 65 73 73 69 6f 6e 20 69 73 20 65 76 61 6c 75 61  ession is evalua
ab50: 74 65 64 20 6f 6e 63 65 20 70 72 69 6f 72 20 74  ted once prior t
ab60: 6f 20 61 6e 79 20 6f 74 68 65 72 0a 70 72 6f 63  o any other.proc
ab70: 65 73 73 69 6e 67 20 61 6e 64 20 74 68 65 20 72  essing and the r
ab80: 65 73 75 6c 74 20 69 73 20 72 65 75 73 65 64 20  esult is reused 
ab90: 61 73 20 6e 65 63 65 73 73 61 72 79 2e 20 20 49  as necessary.  I
aba0: 66 20 74 68 65 20 53 45 4c 45 43 54 20 65 78 70  f the SELECT exp
abb0: 72 65 73 73 69 6f 6e 0a 64 6f 65 73 20 63 6f 6e  ression.does con
abc0: 74 61 69 6e 20 76 61 72 69 61 62 6c 65 73 20 66  tain variables f
abd0: 72 6f 6d 20 74 68 65 20 6f 75 74 65 72 20 71 75  rom the outer qu
abe0: 65 72 79 2c 20 74 68 65 6e 20 74 68 65 20 53 45  ery, then the SE
abf0: 4c 45 43 54 20 69 73 20 72 65 65 76 61 6c 75 61  LECT is reevalua
ac00: 74 65 64 0a 65 76 65 72 79 20 74 69 6d 65 20 69  ted.every time i
ac10: 74 20 69 73 20 6e 65 65 64 65 64 2e 3c 2f 70 3e  t is needed.</p>
ac20: 0a 0a 3c 70 3e 57 68 65 6e 20 61 20 53 45 4c 45  ..<p>When a SELE
ac30: 43 54 20 69 73 20 74 68 65 20 72 69 67 68 74 20  CT is the right 
ac40: 6f 70 65 72 61 6e 64 20 6f 66 20 74 68 65 20 49  operand of the I
ac50: 4e 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 20  N operator, the 
ac60: 49 4e 0a 6f 70 65 72 61 74 6f 72 20 72 65 74 75  IN.operator retu
ac70: 72 6e 73 20 54 52 55 45 20 69 66 20 74 68 65 20  rns TRUE if the 
ac80: 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 6c 65  result of the le
ac90: 66 74 20 6f 70 65 72 61 6e 64 20 69 73 20 61 6e  ft operand is an
aca0: 79 20 6f 66 0a 74 68 65 20 76 61 6c 75 65 73 20  y of.the values 
acb0: 67 65 6e 65 72 61 74 65 64 20 62 79 20 74 68 65  generated by the
acc0: 20 73 65 6c 65 63 74 2e 20 20 54 68 65 20 49 4e   select.  The IN
acd0: 20 6f 70 65 72 61 74 6f 72 20 6d 61 79 20 62 65   operator may be
ace0: 20 70 72 65 63 65 64 65 64 0a 62 79 20 74 68 65   preceded.by the
acf0: 20 4e 4f 54 20 6b 65 79 77 6f 72 64 20 74 6f 20   NOT keyword to 
ad00: 69 6e 76 65 72 74 20 74 68 65 20 73 65 6e 73 65  invert the sense
ad10: 20 6f 66 20 74 68 65 20 74 65 73 74 2e 3c 2f 70   of the test.</p
ad20: 3e 0a 0a 3c 70 3e 57 68 65 6e 20 61 20 53 45 4c  >..<p>When a SEL
ad30: 45 43 54 20 61 70 70 65 61 72 73 20 77 69 74 68  ECT appears with
ad40: 69 6e 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e  in an expression
ad50: 20 62 75 74 20 69 73 20 6e 6f 74 20 74 68 65 20   but is not the 
ad60: 72 69 67 68 74 0a 6f 70 65 72 61 6e 64 20 6f 66  right.operand of
ad70: 20 61 6e 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c   an IN operator,
ad80: 20 74 68 65 6e 20 74 68 65 20 66 69 72 73 74 20   then the first 
ad90: 72 6f 77 20 6f 66 20 74 68 65 20 72 65 73 75 6c  row of the resul
ada0: 74 20 6f 66 20 74 68 65 0a 53 45 4c 45 43 54 20  t of the.SELECT 
adb0: 62 65 63 6f 6d 65 73 20 74 68 65 20 76 61 6c 75  becomes the valu
adc0: 65 20 75 73 65 64 20 69 6e 20 74 68 65 20 65 78  e used in the ex
add0: 70 72 65 73 73 69 6f 6e 2e 20 20 49 66 20 74 68  pression.  If th
ade0: 65 20 53 45 4c 45 43 54 20 79 69 65 6c 64 73 0a  e SELECT yields.
adf0: 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 72 65  more than one re
ae00: 73 75 6c 74 20 72 6f 77 2c 20 61 6c 6c 20 72 6f  sult row, all ro
ae10: 77 73 20 61 66 74 65 72 20 74 68 65 20 66 69 72  ws after the fir
ae20: 73 74 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 20  st are ignored. 
ae30: 20 49 66 0a 74 68 65 20 53 45 4c 45 43 54 20 79   If.the SELECT y
ae40: 69 65 6c 64 73 20 6e 6f 20 72 6f 77 73 2c 20 74  ields no rows, t
ae50: 68 65 6e 20 74 68 65 20 76 61 6c 75 65 20 6f 66  hen the value of
ae60: 20 74 68 65 20 53 45 4c 45 43 54 20 69 73 20 4e   the SELECT is N
ae70: 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 43  ULL.</p>..<p>A C
ae80: 41 53 54 20 65 78 70 72 65 73 73 69 6f 6e 20 63  AST expression c
ae90: 68 61 6e 67 65 73 20 74 68 65 20 64 61 74 61 74  hanges the datat
aea0: 79 70 65 20 6f 66 20 74 68 65 20 3c 65 78 70 72  ype of the <expr
aeb0: 3e 20 69 6e 74 6f 20 74 68 65 0a 74 79 70 65 20  > into the.type 
aec0: 73 70 65 63 69 66 69 65 64 20 62 79 20 3c 74 79  specified by <ty
aed0: 70 65 3e 2e 20 20 3c 74 79 70 65 3e 20 63 61 6e  pe>.  <type> can
aee0: 20 62 65 20 61 6e 79 20 6e 6f 6e 2d 65 6d 70 74   be any non-empt
aef0: 79 20 74 79 70 65 20 6e 61 6d 65 20 74 68 61 74  y type name that
af00: 20 69 66 20 76 61 6c 69 64 0a 66 6f 72 20 74 68   if valid.for th
af10: 65 20 74 79 70 65 20 69 6e 20 61 20 63 6f 6c 75  e type in a colu
af20: 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66  mn definition of
af30: 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45 20   a CREATE TABLE 
af40: 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a  statement.</p>..
af50: 3c 70 3e 42 6f 74 68 20 73 69 6d 70 6c 65 20 61  <p>Both simple a
af60: 6e 64 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  nd aggregate fun
af70: 63 74 69 6f 6e 73 20 61 72 65 20 73 75 70 70 6f  ctions are suppo
af80: 72 74 65 64 2e 20 20 41 20 73 69 6d 70 6c 65 0a  rted.  A simple.
af90: 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20  function can be 
afa0: 75 73 65 64 20 69 6e 20 61 6e 79 20 65 78 70 72  used in any expr
afb0: 65 73 73 69 6f 6e 2e 20 20 53 69 6d 70 6c 65 20  ession.  Simple 
afc0: 66 75 6e 63 74 69 6f 6e 73 20 72 65 74 75 72 6e  functions return
afd0: 0a 61 20 72 65 73 75 6c 74 20 69 6d 6d 65 64 69  .a result immedi
afe0: 61 74 65 6c 79 20 62 61 73 65 64 20 6f 6e 20 74  ately based on t
aff0: 68 65 69 72 20 69 6e 70 75 74 73 2e 20 20 41 67  heir inputs.  Ag
b000: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
b010: 73 0a 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73  s.may only be us
b020: 65 64 20 69 6e 20 61 20 53 45 4c 45 43 54 20 73  ed in a SELECT s
b030: 74 61 74 65 6d 65 6e 74 2e 20 20 41 67 67 72 65  tatement.  Aggre
b040: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 63  gate functions c
b050: 6f 6d 70 75 74 65 0a 74 68 65 69 72 20 72 65 73  ompute.their res
b060: 75 6c 74 20 61 63 72 6f 73 73 20 61 6c 6c 20 72  ult across all r
b070: 6f 77 73 20 6f 66 20 74 68 65 20 72 65 73 75 6c  ows of the resul
b080: 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  t set.</p>..<p>T
b090: 68 65 20 66 75 6e 63 74 69 6f 6e 73 20 73 68 6f  he functions sho
b0a0: 77 6e 20 62 65 6c 6f 77 20 61 72 65 20 61 76 61  wn below are ava
b0b0: 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61 75 6c  ilable by defaul
b0c0: 74 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c 0a 66  t.  Additional.f
b0d0: 75 6e 63 74 69 6f 6e 73 20 6d 61 79 20 62 65 20  unctions may be 
b0e0: 77 72 69 74 74 65 6e 20 69 6e 20 43 20 61 6e 64  written in C and
b0f0: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 64 61   added to the da
b100: 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20 75 73  tabase engine us
b110: 69 6e 67 0a 74 68 65 20 3c 61 20 68 72 65 66 3d  ing.the <a href=
b120: 22 63 61 70 69 33 72 65 66 2e 68 74 6d 6c 23 63  "capi3ref.html#c
b130: 66 75 6e 63 22 3e 73 71 6c 69 74 65 33 5f 63 72  func">sqlite3_cr
b140: 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 3c  eate_function()<
b150: 2f 61 3e 0a 41 50 49 2e 3c 2f 70 3e 0a 0a 3c 74  /a>.API.</p>..<t
b160: 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65  able border=0 ce
b170: 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74  llpadding=10>.<t
b180: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
b190: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
b1a0: 22 20 77 69 64 74 68 3d 31 32 30 3e 61 62 73 28  " width=120>abs(
b1b0: 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c  <i>X</i>)</td>.<
b1c0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
b1d0: 52 65 74 75 72 6e 20 74 68 65 20 61 62 73 6f 6c  Return the absol
b1e0: 75 74 65 20 76 61 6c 75 65 20 6f 66 20 61 72 67  ute value of arg
b1f0: 75 6d 65 6e 74 20 3c 69 3e 58 3c 2f 69 3e 2e 3c  ument <i>X</i>.<
b200: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
b210: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
b220: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
b230: 63 6f 61 6c 65 73 63 65 28 3c 69 3e 58 3c 2f 69  coalesce(<i>X</i
b240: 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c  >,<i>Y</i>,...)<
b250: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
b260: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 63  "top">Return a c
b270: 6f 70 79 20 6f 66 20 74 68 65 20 66 69 72 73 74  opy of the first
b280: 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65   non-NULL argume
b290: 6e 74 2e 20 20 49 66 0a 61 6c 6c 20 61 72 67 75  nt.  If.all argu
b2a0: 6d 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c 20 74  ments are NULL t
b2b0: 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72 65 74 75  hen NULL is retu
b2c0: 72 6e 65 64 2e 20 20 54 68 65 72 65 20 6d 75 73  rned.  There mus
b2d0: 74 20 62 65 20 61 74 20 6c 65 61 73 74 20 0a 32  t be at least .2
b2e0: 20 61 72 67 75 6d 65 6e 74 73 2e 3c 2f 74 64 3e   arguments.</td>
b2f0: 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 61 20  .</tr>..<tr>.<a 
b300: 6e 61 6d 65 3d 22 67 6c 6f 62 46 75 6e 63 22 3e  name="globFunc">
b310: 3c 2f 61 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  </a>.<td valign=
b320: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
b330: 68 74 22 3e 67 6c 6f 62 28 3c 69 3e 58 3c 2f 69  ht">glob(<i>X</i
b340: 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e  >,<i>Y</i>)</td>
b350: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
b360: 22 3e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  ">This function 
b370: 69 73 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65  is used to imple
b380: 6d 65 6e 74 20 74 68 65 0a 22 3c 62 3e 58 20 47  ment the."<b>X G
b390: 4c 4f 42 20 59 3c 2f 62 3e 22 20 73 79 6e 74 61  LOB Y</b>" synta
b3a0: 78 20 6f 66 20 53 51 4c 69 74 65 2e 20 20 54 68  x of SQLite.  Th
b3b0: 65 0a 3c 61 20 68 72 65 66 3d 22 63 61 70 69 33  e.<a href="capi3
b3c0: 72 65 66 2e 68 74 6d 6c 23 73 71 6c 69 74 65 33  ref.html#sqlite3
b3d0: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
b3e0: 22 3e 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  ">sqlite3_create
b3f0: 5f 66 75 6e 63 74 69 6f 6e 28 29 3c 2f 61 3e 20  _function()</a> 
b400: 0a 69 6e 74 65 72 66 61 63 65 20 63 61 6e 0a 62  .interface can.b
b410: 65 20 75 73 65 64 20 74 6f 20 6f 76 65 72 72 69  e used to overri
b420: 64 65 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  de this function
b430: 20 61 6e 64 20 74 68 65 72 65 62 79 20 63 68 61   and thereby cha
b440: 6e 67 65 20 74 68 65 20 6f 70 65 72 61 74 69 6f  nge the operatio
b450: 6e 0a 6f 66 20 74 68 65 20 3c 61 20 68 72 65 66  n.of the <a href
b460: 3d 22 23 67 6c 6f 62 46 75 6e 63 22 3e 47 4c 4f  ="#globFunc">GLO
b470: 42 3c 2f 61 3e 20 6f 70 65 72 61 74 6f 72 2e 3c  B</a> operator.<
b480: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
b490: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
b4a0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
b4b0: 69 66 6e 75 6c 6c 28 3c 69 3e 58 3c 2f 69 3e 2c  ifnull(<i>X</i>,
b4c0: 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c  <i>Y</i>)</td>.<
b4d0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
b4e0: 52 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66  Return a copy of
b4f0: 20 74 68 65 20 66 69 72 73 74 20 6e 6f 6e 2d 4e   the first non-N
b500: 55 4c 4c 20 61 72 67 75 6d 65 6e 74 2e 20 20 49  ULL argument.  I
b510: 66 0a 62 6f 74 68 20 61 72 67 75 6d 65 6e 74 73  f.both arguments
b520: 20 61 72 65 20 4e 55 4c 4c 20 74 68 65 6e 20 4e   are NULL then N
b530: 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ULL is returned.
b540: 20 54 68 69 73 20 62 65 68 61 76 65 73 20 74 68   This behaves th
b550: 65 20 73 61 6d 65 20 61 73 20 0a 3c 62 3e 63 6f  e same as .<b>co
b560: 61 6c 65 73 63 65 28 29 3c 2f 62 3e 20 61 62 6f  alesce()</b> abo
b570: 76 65 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  ve.</td>.</tr>..
b580: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
b590: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
b5a0: 68 74 22 3e 6c 61 73 74 5f 69 6e 73 65 72 74 5f  ht">last_insert_
b5b0: 72 6f 77 69 64 28 29 3c 2f 74 64 3e 0a 3c 74 64  rowid()</td>.<td
b5c0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
b5d0: 74 75 72 6e 20 74 68 65 20 52 4f 57 49 44 20 6f  turn the ROWID o
b5e0: 66 20 74 68 65 20 6c 61 73 74 20 72 6f 77 20 69  f the last row i
b5f0: 6e 73 65 72 74 20 66 72 6f 6d 20 74 68 69 73 0a  nsert from this.
b600: 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68  connection to th
b610: 65 20 64 61 74 61 62 61 73 65 2e 20 20 54 68 69  e database.  Thi
b620: 73 20 69 73 20 74 68 65 20 73 61 6d 65 20 76 61  s is the same va
b630: 6c 75 65 20 74 68 61 74 20 77 6f 75 6c 64 20 62  lue that would b
b640: 65 20 72 65 74 75 72 6e 65 64 0a 66 72 6f 6d 20  e returned.from 
b650: 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6c 61  the <b>sqlite_la
b660: 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
b670: 29 3c 2f 62 3e 20 41 50 49 20 66 75 6e 63 74 69  )</b> API functi
b680: 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  on.</td>.</tr>..
b690: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
b6a0: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
b6b0: 68 74 22 3e 6c 65 6e 67 74 68 28 3c 69 3e 58 3c  ht">length(<i>X<
b6c0: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
b6d0: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
b6e0: 6e 20 74 68 65 20 73 74 72 69 6e 67 20 6c 65 6e  n the string len
b6f0: 67 74 68 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20  gth of <i>X</i> 
b700: 69 6e 20 63 68 61 72 61 63 74 65 72 73 2e 0a 49  in characters..I
b710: 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6e 66  f SQLite is conf
b720: 69 67 75 72 65 64 20 74 6f 20 73 75 70 70 6f 72  igured to suppor
b730: 74 20 55 54 46 2d 38 2c 20 74 68 65 6e 20 74 68  t UTF-8, then th
b740: 65 20 6e 75 6d 62 65 72 20 6f 66 20 55 54 46 2d  e number of UTF-
b750: 38 0a 63 68 61 72 61 63 74 65 72 73 20 69 73 20  8.characters is 
b760: 72 65 74 75 72 6e 65 64 2c 20 6e 6f 74 20 74 68  returned, not th
b770: 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65  e number of byte
b780: 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  s.</td>.</tr>..<
b790: 74 72 3e 0a 3c 61 20 6e 61 6d 65 3d 22 6c 69 6b  tr>.<a name="lik
b7a0: 65 46 75 6e 63 22 3e 3c 2f 61 3e 0a 3c 74 64 20  eFunc"></a>.<td 
b7b0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
b7c0: 67 6e 3d 22 72 69 67 68 74 22 3e 6c 69 6b 65 28  gn="right">like(
b7d0: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
b7e0: 3e 20 5b 2c 3c 69 3e 5a 3c 2f 69 3e 5d 29 3c 2f  > [,<i>Z</i>])</
b7f0: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
b800: 74 6f 70 22 3e 0a 54 68 69 73 20 66 75 6e 63 74  top">.This funct
b810: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 69  ion is used to i
b820: 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 22 3c 62  mplement the "<b
b830: 3e 58 20 4c 49 4b 45 20 59 20 5b 45 53 43 41 50  >X LIKE Y [ESCAP
b840: 45 20 5a 5d 3c 2f 62 3e 22 0a 73 79 6e 74 61 78  E Z]</b>".syntax
b850: 20 6f 66 20 53 51 4c 2e 20 49 66 20 74 68 65 20   of SQL. If the 
b860: 6f 70 74 69 6f 6e 61 6c 20 45 53 43 41 50 45 20  optional ESCAPE 
b870: 63 6c 61 75 73 65 20 69 73 20 70 72 65 73 65 6e  clause is presen
b880: 74 2c 20 74 68 65 6e 20 74 68 65 0a 75 73 65 72  t, then the.user
b890: 2d 66 75 6e 63 74 69 6f 6e 20 69 73 20 69 6e 76  -function is inv
b8a0: 6f 6b 65 64 20 77 69 74 68 20 74 68 72 65 65 20  oked with three 
b8b0: 61 72 67 75 6d 65 6e 74 73 2e 20 4f 74 68 65 72  arguments. Other
b8c0: 77 69 73 65 2c 20 69 74 20 69 73 0a 69 6e 76 6f  wise, it is.invo
b8d0: 6b 65 64 20 77 69 74 68 20 74 77 6f 20 61 72 67  ked with two arg
b8e0: 75 6d 65 6e 74 73 20 6f 6e 6c 79 2e 20 54 68 65  uments only. The
b8f0: 20 0a 3c 61 20 68 72 65 66 3d 22 63 61 70 69 33   .<a href="capi3
b900: 72 65 66 2e 68 74 6d 6c 23 73 71 6c 69 74 65 33  ref.html#sqlite3
b910: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
b920: 22 3e 0a 73 71 6c 69 74 65 5f 63 72 65 61 74 65  ">.sqlite_create
b930: 5f 66 75 6e 63 74 69 6f 6e 28 29 3c 2f 61 3e 20  _function()</a> 
b940: 69 6e 74 65 72 66 61 63 65 20 63 61 6e 20 62 65  interface can be
b950: 20 75 73 65 64 20 74 6f 20 6f 76 65 72 72 69 64   used to overrid
b960: 65 20 74 68 69 73 0a 66 75 6e 63 74 69 6f 6e 20  e this.function 
b970: 61 6e 64 20 74 68 65 72 65 62 79 20 63 68 61 6e  and thereby chan
b980: 67 65 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e  ge the operation
b990: 20 6f 66 20 74 68 65 20 3c 61 0a 68 72 65 66 3d   of the <a.href=
b9a0: 20 22 23 6c 69 6b 65 22 3e 4c 49 4b 45 3c 2f 61   "#like">LIKE</a
b9b0: 3e 20 6f 70 65 72 61 74 6f 72 2e 20 57 68 65 6e  > operator. When
b9c0: 20 64 6f 69 6e 67 20 74 68 69 73 2c 20 69 74 20   doing this, it 
b9d0: 6d 61 79 20 62 65 20 69 6d 70 6f 72 74 61 6e 74  may be important
b9e0: 0a 74 6f 20 6f 76 65 72 72 69 64 65 20 62 6f 74  .to override bot
b9f0: 68 20 74 68 65 20 74 77 6f 20 61 6e 64 20 74 68  h the two and th
ba00: 72 65 65 20 61 72 67 75 6d 65 6e 74 20 76 65 72  ree argument ver
ba10: 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 6c 69 6b  sions of the lik
ba20: 65 28 29 20 0a 66 75 6e 63 74 69 6f 6e 2e 20 4f  e() .function. O
ba30: 74 68 65 72 77 69 73 65 2c 20 64 69 66 66 65 72  therwise, differ
ba40: 65 6e 74 20 63 6f 64 65 20 6d 61 79 20 62 65 20  ent code may be 
ba50: 63 61 6c 6c 65 64 20 74 6f 20 69 6d 70 6c 65 6d  called to implem
ba60: 65 6e 74 20 74 68 65 0a 4c 49 4b 45 20 6f 70 65  ent the.LIKE ope
ba70: 72 61 74 6f 72 20 64 65 70 65 6e 64 69 6e 67 20  rator depending 
ba80: 6f 6e 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  on whether or no
ba90: 74 20 61 6e 20 45 53 43 41 50 45 20 63 6c 61 75  t an ESCAPE clau
baa0: 73 65 20 77 61 73 20 0a 73 70 65 63 69 66 69 65  se was .specifie
bab0: 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  d.</td>.</tr>..<
bac0: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
bad0: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
bae0: 74 22 3e 6c 6f 77 65 72 28 3c 69 3e 58 3c 2f 69  t">lower(<i>X</i
baf0: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
bb00: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
bb10: 61 20 63 6f 70 79 20 6f 66 20 73 74 72 69 6e 67  a copy of string
bb20: 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 6c 6c 20 61   <i>X</i> will a
bb30: 6c 6c 20 63 68 61 72 61 63 74 65 72 73 0a 63 6f  ll characters.co
bb40: 6e 76 65 72 74 65 64 20 74 6f 20 6c 6f 77 65 72  nverted to lower
bb50: 20 63 61 73 65 2e 20 20 54 68 65 20 43 20 6c 69   case.  The C li
bb60: 62 72 61 72 79 20 3c 62 3e 74 6f 6c 6f 77 65 72  brary <b>tolower
bb70: 28 29 3c 2f 62 3e 20 72 6f 75 74 69 6e 65 20 69  ()</b> routine i
bb80: 73 20 75 73 65 64 0a 66 6f 72 20 74 68 65 20 63  s used.for the c
bb90: 6f 6e 76 65 72 73 69 6f 6e 2c 20 77 68 69 63 68  onversion, which
bba0: 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 69 73   means that this
bbb0: 20 66 75 6e 63 74 69 6f 6e 20 6d 69 67 68 74 20   function might 
bbc0: 6e 6f 74 0a 77 6f 72 6b 20 63 6f 72 72 65 63 74  not.work correct
bbd0: 6c 79 20 6f 6e 20 55 54 46 2d 38 20 63 68 61 72  ly on UTF-8 char
bbe0: 61 63 74 65 72 73 2e 3c 2f 74 64 3e 0a 3c 2f 74  acters.</td>.</t
bbf0: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
bc00: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
bc10: 22 72 69 67 68 74 22 3e 6d 61 78 28 3c 69 3e 58  "right">max(<i>X
bc20: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e  </i>,<i>Y</i>,..
bc30: 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  .)</td>.<td vali
bc40: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
bc50: 74 68 65 20 61 72 67 75 6d 65 6e 74 20 77 69 74  the argument wit
bc60: 68 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61  h the maximum va
bc70: 6c 75 65 2e 20 20 41 72 67 75 6d 65 6e 74 73 0a  lue.  Arguments.
bc80: 6d 61 79 20 62 65 20 73 74 72 69 6e 67 73 20 69  may be strings i
bc90: 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 6e 75  n addition to nu
bca0: 6d 62 65 72 73 2e 20 20 54 68 65 20 6d 61 78 69  mbers.  The maxi
bcb0: 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 64 65 74  mum value is det
bcc0: 65 72 6d 69 6e 65 64 0a 62 79 20 74 68 65 20 75  ermined.by the u
bcd0: 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 2e  sual sort order.
bce0: 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d    Note that <b>m
bcf0: 61 78 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69  ax()</b> is a si
bd00: 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68  mple function wh
bd10: 65 6e 0a 69 74 20 68 61 73 20 32 20 6f 72 20 6d  en.it has 2 or m
bd20: 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75  ore arguments bu
bd30: 74 20 63 6f 6e 76 65 72 74 73 20 74 6f 20 61 6e  t converts to an
bd40: 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
bd50: 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a 6f 6e 6c  ion if given.onl
bd60: 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  y a single argum
bd70: 65 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ent.</td>.</tr>.
bd80: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
bd90: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
bda0: 67 68 74 22 3e 6d 69 6e 28 3c 69 3e 58 3c 2f 69  ght">min(<i>X</i
bdb0: 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c  >,<i>Y</i>,...)<
bdc0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
bdd0: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65  "top">Return the
bde0: 20 61 72 67 75 6d 65 6e 74 20 77 69 74 68 20 74   argument with t
bdf0: 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65  he minimum value
be00: 2e 20 20 41 72 67 75 6d 65 6e 74 73 0a 6d 61 79  .  Arguments.may
be10: 20 62 65 20 73 74 72 69 6e 67 73 20 69 6e 20 61   be strings in a
be20: 64 64 69 74 69 6f 6e 20 74 6f 20 6e 75 6d 62 65  ddition to numbe
be30: 72 73 2e 20 20 54 68 65 20 6d 69 6e 69 6d 75 6d  rs.  The minimum
be40: 20 76 61 6c 75 65 20 69 73 20 64 65 74 65 72 6d   value is determ
be50: 69 6e 65 64 0a 62 79 20 74 68 65 20 75 73 75 61  ined.by the usua
be60: 6c 20 73 6f 72 74 20 6f 72 64 65 72 2e 20 20 4e  l sort order.  N
be70: 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d 69 6e 28  ote that <b>min(
be80: 29 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70 6c  )</b> is a simpl
be90: 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a  e function when.
bea0: 69 74 20 68 61 73 20 32 20 6f 72 20 6d 6f 72 65  it has 2 or more
beb0: 20 61 72 67 75 6d 65 6e 74 73 20 62 75 74 20 63   arguments but c
bec0: 6f 6e 76 65 72 74 73 20 74 6f 20 61 6e 20 61 67  onverts to an ag
bed0: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
bee0: 20 69 66 20 67 69 76 65 6e 0a 6f 6e 6c 79 20 61   if given.only a
bef0: 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74   single argument
bf00: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
bf10: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
bf20: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
bf30: 22 3e 6e 75 6c 6c 69 66 28 3c 69 3e 58 3c 2f 69  ">nullif(<i>X</i
bf40: 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e  >,<i>Y</i>)</td>
bf50: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
bf60: 22 3e 52 65 74 75 72 6e 20 74 68 65 20 66 69 72  ">Return the fir
bf70: 73 74 20 61 72 67 75 6d 65 6e 74 20 69 66 20 74  st argument if t
bf80: 68 65 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  he arguments are
bf90: 20 64 69 66 66 65 72 65 6e 74 2c 20 0a 6f 74 68   different, .oth
bfa0: 65 72 77 69 73 65 20 72 65 74 75 72 6e 20 4e 55  erwise return NU
bfb0: 4c 4c 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  LL.</td>.</tr>..
bfc0: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
bfd0: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
bfe0: 68 74 22 3e 71 75 6f 74 65 28 3c 69 3e 58 3c 2f  ht">quote(<i>X</
bff0: 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  i>)</td>.<td val
c000: 69 67 6e 3d 22 74 6f 70 22 3e 54 68 69 73 20 72  ign="top">This r
c010: 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 61  outine returns a
c020: 20 73 74 72 69 6e 67 20 77 68 69 63 68 20 69 73   string which is
c030: 20 74 68 65 20 76 61 6c 75 65 20 6f 66 0a 69 74   the value of.it
c040: 73 20 61 72 67 75 6d 65 6e 74 20 73 75 69 74 61  s argument suita
c050: 62 6c 65 20 66 6f 72 20 69 6e 63 6c 75 73 69 6f  ble for inclusio
c060: 6e 20 69 6e 74 6f 20 61 6e 6f 74 68 65 72 20 53  n into another S
c070: 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 0a 53 74  QL statement..St
c080: 72 69 6e 67 73 20 61 72 65 20 73 75 72 72 6f 75  rings are surrou
c090: 6e 64 65 64 20 62 79 20 73 69 6e 67 6c 65 2d 71  nded by single-q
c0a0: 75 6f 74 65 73 20 77 69 74 68 20 65 73 63 61 70  uotes with escap
c0b0: 65 73 20 6f 6e 20 69 6e 74 65 72 69 6f 72 20 71  es on interior q
c0c0: 75 6f 74 65 73 0a 61 73 20 6e 65 65 64 65 64 2e  uotes.as needed.
c0d0: 20 20 42 4c 4f 42 73 20 61 72 65 20 65 6e 63 6f    BLOBs are enco
c0e0: 64 65 64 20 61 73 20 68 65 78 61 64 65 63 69 6d  ded as hexadecim
c0f0: 61 6c 20 6c 69 74 65 72 61 6c 73 2e 0a 54 68 65  al literals..The
c100: 20 63 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65   current impleme
c110: 6e 74 61 74 69 6f 6e 20 6f 66 20 56 41 43 55 55  ntation of VACUU
c120: 4d 20 75 73 65 73 20 74 68 69 73 20 66 75 6e 63  M uses this func
c130: 74 69 6f 6e 2e 20 20 54 68 65 20 66 75 6e 63 74  tion.  The funct
c140: 69 6f 6e 0a 69 73 20 61 6c 73 6f 20 75 73 65 66  ion.is also usef
c150: 75 6c 20 77 68 65 6e 20 77 72 69 74 69 6e 67 20  ul when writing 
c160: 74 72 69 67 67 65 72 73 20 74 6f 20 69 6d 70 6c  triggers to impl
c170: 65 6d 65 6e 74 20 75 6e 64 6f 2f 72 65 64 6f 20  ement undo/redo 
c180: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 0a 3c  functionality..<
c190: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
c1a0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
c1b0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
c1c0: 72 61 6e 64 6f 6d 28 2a 29 3c 2f 74 64 3e 0a 3c  random(*)</td>.<
c1d0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
c1e0: 52 65 74 75 72 6e 20 61 20 72 61 6e 64 6f 6d 20  Return a random 
c1f0: 69 6e 74 65 67 65 72 20 62 65 74 77 65 65 6e 20  integer between 
c200: 2d 32 31 34 37 34 38 33 36 34 38 20 61 6e 64 0a  -2147483648 and.
c210: 2b 32 31 34 37 34 38 33 36 34 37 2e 3c 2f 74 64  +2147483647.</td
c220: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
c230: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
c240: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 72 6f 75  lign="right">rou
c250: 6e 64 28 3c 69 3e 58 3c 2f 69 3e 29 3c 62 72 3e  nd(<i>X</i>)<br>
c260: 72 6f 75 6e 64 28 3c 69 3e 58 3c 2f 69 3e 2c 3c  round(<i>X</i>,<
c270: 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>Y</i>)</td>.<t
c280: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
c290: 6f 75 6e 64 20 6f 66 66 20 74 68 65 20 6e 75 6d  ound off the num
c2a0: 62 65 72 20 3c 69 3e 58 3c 2f 69 3e 20 74 6f 20  ber <i>X</i> to 
c2b0: 3c 69 3e 59 3c 2f 69 3e 20 64 69 67 69 74 73 20  <i>Y</i> digits 
c2c0: 74 6f 20 74 68 65 0a 72 69 67 68 74 20 6f 66 20  to the.right of 
c2d0: 74 68 65 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e  the decimal poin
c2e0: 74 2e 20 20 49 66 20 74 68 65 20 3c 69 3e 59 3c  t.  If the <i>Y<
c2f0: 2f 69 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20  /i> argument is 
c300: 6f 6d 69 74 74 65 64 2c 20 30 20 69 73 20 0a 61  omitted, 0 is .a
c310: 73 73 75 6d 65 64 2e 3c 2f 74 64 3e 0a 3c 2f 74  ssumed.</td>.</t
c320: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
c330: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
c340: 22 72 69 67 68 74 22 3e 73 6f 75 6e 64 65 78 28  "right">soundex(
c350: 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c  <i>X</i>)</td>.<
c360: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
c370: 43 6f 6d 70 75 74 65 20 74 68 65 20 73 6f 75 6e  Compute the soun
c380: 64 65 78 20 65 6e 63 6f 64 69 6e 67 20 6f 66 20  dex encoding of 
c390: 74 68 65 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c  the string <i>X<
c3a0: 2f 69 3e 2e 0a 54 68 65 20 73 74 72 69 6e 67 20  /i>..The string 
c3b0: 22 3f 30 30 30 22 20 69 73 20 72 65 74 75 72 6e  "?000" is return
c3c0: 65 64 20 69 66 20 74 68 65 20 61 72 67 75 6d 65  ed if the argume
c3d0: 6e 74 20 69 73 20 4e 55 4c 4c 2e 0a 54 68 69 73  nt is NULL..This
c3e0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 6d 69   function is omi
c3f0: 74 74 65 64 20 66 72 6f 6d 20 53 51 4c 69 74 65  tted from SQLite
c400: 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 49 74 20   by default..It 
c410: 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c  is only availabl
c420: 65 20 74 68 65 20 2d 44 53 51 4c 49 54 45 5f 53  e the -DSQLITE_S
c430: 4f 55 4e 44 45 58 3d 31 20 63 6f 6d 70 69 6c 65  OUNDEX=1 compile
c440: 72 20 6f 70 74 69 6f 6e 0a 69 73 20 75 73 65 64  r option.is used
c450: 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20   when SQLite is 
c460: 62 75 69 6c 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  built.</td>.</tr
c470: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
c480: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
c490: 72 69 67 68 74 22 3e 73 71 6c 69 74 65 5f 76 65  right">sqlite_ve
c4a0: 72 73 69 6f 6e 28 2a 29 3c 2f 74 64 3e 0a 3c 74  rsion(*)</td>.<t
c4b0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
c4c0: 65 74 75 72 6e 20 74 68 65 20 76 65 72 73 69 6f  eturn the versio
c4d0: 6e 20 73 74 72 69 6e 67 20 66 6f 72 20 74 68 65  n string for the
c4e0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 0a   SQLite library.
c4f0: 74 68 61 74 20 69 73 20 72 75 6e 6e 69 6e 67 2e  that is running.
c500: 20 20 45 78 61 6d 70 6c 65 3a 20 20 22 32 2e 38    Example:  "2.8
c510: 2e 30 22 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  .0"</td>.</tr>..
c520: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
c530: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
c540: 68 74 22 3e 73 75 62 73 74 72 28 3c 69 3e 58 3c  ht">substr(<i>X<
c550: 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e  /i>,<i>Y</i>,<i>
c560: 5a 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20  Z</i>)</td>.<td 
c570: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
c580: 75 72 6e 20 61 20 73 75 62 73 74 72 69 6e 67 20  urn a substring 
c590: 6f 66 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20  of input string 
c5a0: 3c 69 3e 58 3c 2f 69 3e 20 74 68 61 74 20 62 65  <i>X</i> that be
c5b0: 67 69 6e 73 0a 77 69 74 68 20 74 68 65 20 3c 69  gins.with the <i
c5c0: 3e 59 3c 2f 69 3e 2d 74 68 20 63 68 61 72 61 63  >Y</i>-th charac
c5d0: 74 65 72 20 61 6e 64 20 77 68 69 63 68 20 69 73  ter and which is
c5e0: 20 3c 69 3e 5a 3c 2f 69 3e 20 63 68 61 72 61 63   <i>Z</i> charac
c5f0: 74 65 72 73 20 6c 6f 6e 67 2e 0a 54 68 65 20 6c  ters long..The l
c600: 65 66 74 2d 6d 6f 73 74 20 63 68 61 72 61 63 74  eft-most charact
c610: 65 72 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20 69  er of <i>X</i> i
c620: 73 20 6e 75 6d 62 65 72 20 31 2e 20 20 49 66 20  s number 1.  If 
c630: 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 6e 65 67 61  <i>Y</i> is nega
c640: 74 69 76 65 0a 74 68 65 20 74 68 65 20 66 69 72  tive.the the fir
c650: 73 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20  st character of 
c660: 74 68 65 20 73 75 62 73 74 72 69 6e 67 20 69 73  the substring is
c670: 20 66 6f 75 6e 64 20 62 79 20 63 6f 75 6e 74 69   found by counti
c680: 6e 67 20 66 72 6f 6d 20 74 68 65 0a 72 69 67 68  ng from the.righ
c690: 74 20 72 61 74 68 65 72 20 74 68 61 6e 20 74 68  t rather than th
c6a0: 65 20 6c 65 66 74 2e 20 20 49 66 20 53 51 4c 69  e left.  If SQLi
c6b0: 74 65 20 69 73 20 63 6f 6e 66 69 67 75 72 65 64  te is configured
c6c0: 20 74 6f 20 73 75 70 70 6f 72 74 20 55 54 46 2d   to support UTF-
c6d0: 38 2c 0a 74 68 65 6e 20 63 68 61 72 61 63 74 65  8,.then characte
c6e0: 72 73 20 69 6e 64 69 63 65 73 20 72 65 66 65 72  rs indices refer
c6f0: 20 74 6f 20 61 63 74 75 61 6c 20 55 54 46 2d 38   to actual UTF-8
c700: 20 63 68 61 72 61 63 74 65 72 73 2c 20 6e 6f 74   characters, not
c710: 20 62 79 74 65 73 2e 3c 2f 74 64 3e 0a 3c 2f 74   bytes.</td>.</t
c720: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
c730: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
c740: 22 72 69 67 68 74 22 3e 74 79 70 65 6f 66 28 3c  "right">typeof(<
c750: 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>X</i>)</td>.<t
c760: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
c770: 65 74 75 72 6e 20 74 68 65 20 74 79 70 65 20 6f  eturn the type o
c780: 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  f the expression
c790: 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 54 68 65 20   <i>X</i>.  The 
c7a0: 6f 6e 6c 79 20 0a 72 65 74 75 72 6e 20 76 61 6c  only .return val
c7b0: 75 65 73 20 61 72 65 20 22 6e 75 6c 6c 22 2c 20  ues are "null", 
c7c0: 22 69 6e 74 65 67 65 72 22 2c 20 22 72 65 61 6c  "integer", "real
c7d0: 22 2c 20 22 74 65 78 74 22 2c 20 61 6e 64 20 22  ", "text", and "
c7e0: 62 6c 6f 62 22 2e 0a 53 51 4c 69 74 65 27 73 20  blob"..SQLite's 
c7f0: 74 79 70 65 20 68 61 6e 64 6c 69 6e 67 20 69 73  type handling is
c800: 20 0a 65 78 70 6c 61 69 6e 65 64 20 69 6e 20 3c   .explained in <
c810: 61 20 68 72 65 66 3d 22 64 61 74 61 74 79 70 65  a href="datatype
c820: 33 2e 68 74 6d 6c 22 3e 44 61 74 61 74 79 70 65  3.html">Datatype
c830: 73 20 69 6e 20 53 51 4c 69 74 65 20 56 65 72 73  s in SQLite Vers
c840: 69 6f 6e 20 33 3c 2f 61 3e 2e 3c 2f 74 64 3e 0a  ion 3</a>.</td>.
c850: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
c860: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
c870: 67 6e 3d 22 72 69 67 68 74 22 3e 75 70 70 65 72  gn="right">upper
c880: 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a  (<i>X</i>)</td>.
c890: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
c8a0: 3e 52 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f  >Return a copy o
c8b0: 66 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 3c  f input string <
c8c0: 69 3e 58 3c 2f 69 3e 20 63 6f 6e 76 65 72 74 65  i>X</i> converte
c8d0: 64 20 74 6f 20 61 6c 6c 0a 75 70 70 65 72 2d 63  d to all.upper-c
c8e0: 61 73 65 20 6c 65 74 74 65 72 73 2e 20 20 54 68  ase letters.  Th
c8f0: 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
c900: 20 6f 66 20 74 68 69 73 20 66 75 6e 63 74 69 6f   of this functio
c910: 6e 20 75 73 65 73 20 74 68 65 20 43 20 6c 69 62  n uses the C lib
c920: 72 61 72 79 0a 72 6f 75 74 69 6e 65 20 3c 62 3e  rary.routine <b>
c930: 74 6f 75 70 70 65 72 28 29 3c 2f 62 3e 20 77 68  toupper()</b> wh
c940: 69 63 68 20 6d 65 61 6e 73 20 69 74 20 6d 61 79  ich means it may
c950: 20 6e 6f 74 20 77 6f 72 6b 20 63 6f 72 72 65 63   not work correc
c960: 74 6c 79 20 6f 6e 20 0a 55 54 46 2d 38 20 73 74  tly on .UTF-8 st
c970: 72 69 6e 67 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  rings.</td>.</tr
c980: 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 70 3e 0a  >.</table>..<p>.
c990: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 67  The following ag
c9a0: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
c9b0: 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20  s are available 
c9c0: 62 79 20 64 65 66 61 75 6c 74 2e 20 20 41 64 64  by default.  Add
c9d0: 69 74 69 6f 6e 61 6c 0a 61 67 67 72 65 67 61 74  itional.aggregat
c9e0: 65 20 66 75 6e 63 74 69 6f 6e 73 20 77 72 69 74  e functions writ
c9f0: 74 65 6e 20 69 6e 20 43 20 6d 61 79 20 62 65 20  ten in C may be 
ca00: 61 64 64 65 64 20 75 73 69 6e 67 20 74 68 65 20  added using the 
ca10: 0a 3c 61 20 68 72 65 66 3d 22 63 61 70 69 33 72  .<a href="capi3r
ca20: 65 66 2e 68 74 6d 6c 23 73 71 6c 69 74 65 33 5f  ef.html#sqlite3_
ca30: 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 22  create_function"
ca40: 3e 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f  >sqlite3_create_
ca50: 66 75 6e 63 74 69 6f 6e 28 29 3c 2f 61 3e 0a 41  function()</a>.A
ca60: 50 49 2e 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20  PI.</p>..<table 
ca70: 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64  border=0 cellpad
ca80: 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74  ding=10>.<tr>.<t
ca90: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
caa0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64  lign="right" wid
cab0: 74 68 3d 31 32 30 3e 61 76 67 28 3c 69 3e 58 3c  th=120>avg(<i>X<
cac0: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
cad0: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
cae0: 6e 20 74 68 65 20 61 76 65 72 61 67 65 20 76 61  n the average va
caf0: 6c 75 65 20 6f 66 20 61 6c 6c 20 3c 69 3e 58 3c  lue of all <i>X<
cb00: 2f 69 3e 20 77 69 74 68 69 6e 20 61 20 67 72 6f  /i> within a gro
cb10: 75 70 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  up.</td>.</tr>..
cb20: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
cb30: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
cb40: 68 74 22 3e 63 6f 75 6e 74 28 3c 69 3e 58 3c 2f  ht">count(<i>X</
cb50: 69 3e 29 3c 62 72 3e 63 6f 75 6e 74 28 2a 29 3c  i>)<br>count(*)<
cb60: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
cb70: 22 74 6f 70 22 3e 54 68 65 20 66 69 72 73 74 20  "top">The first 
cb80: 66 6f 72 6d 20 72 65 74 75 72 6e 20 61 20 63 6f  form return a co
cb90: 75 6e 74 20 6f 66 20 74 68 65 20 6e 75 6d 62 65  unt of the numbe
cba0: 72 20 6f 66 20 74 69 6d 65 73 0a 74 68 61 74 20  r of times.that 
cbb0: 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 6e 6f 74 20  <i>X</i> is not 
cbc0: 4e 55 4c 4c 20 69 6e 20 61 20 67 72 6f 75 70 2e  NULL in a group.
cbd0: 20 20 54 68 65 20 73 65 63 6f 6e 64 20 66 6f 72    The second for
cbe0: 6d 20 28 77 69 74 68 20 6e 6f 20 61 72 67 75 6d  m (with no argum
cbf0: 65 6e 74 29 0a 72 65 74 75 72 6e 73 20 74 68 65  ent).returns the
cc00: 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66   total number of
cc10: 20 72 6f 77 73 20 69 6e 20 74 68 65 20 67 72 6f   rows in the gro
cc20: 75 70 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  up.</td>.</tr>..
cc30: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
cc40: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
cc50: 68 74 22 3e 6d 61 78 28 3c 69 3e 58 3c 2f 69 3e  ht">max(<i>X</i>
cc60: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
cc70: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74  n="top">Return t
cc80: 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65  he maximum value
cc90: 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73 20 69   of all values i
cca0: 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 54 68 65  n the group..The
ccb0: 20 75 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65   usual sort orde
ccc0: 72 20 69 73 20 75 73 65 64 20 74 6f 20 64 65 74  r is used to det
ccd0: 65 72 6d 69 6e 65 20 74 68 65 20 6d 61 78 69 6d  ermine the maxim
cce0: 75 6d 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  um.</td>.</tr>..
ccf0: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
cd00: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
cd10: 68 74 22 3e 6d 69 6e 28 3c 69 3e 58 3c 2f 69 3e  ht">min(<i>X</i>
cd20: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
cd30: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74  n="top">Return t
cd40: 68 65 20 6d 69 6e 69 6d 75 6d 20 6e 6f 6e 2d 4e  he minimum non-N
cd50: 55 4c 4c 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c  ULL value of all
cd60: 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 67   values in the g
cd70: 72 6f 75 70 2e 0a 54 68 65 20 75 73 75 61 6c 20  roup..The usual 
cd80: 73 6f 72 74 20 6f 72 64 65 72 20 69 73 20 75 73  sort order is us
cd90: 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ed to determine 
cda0: 74 68 65 20 6d 69 6e 69 6d 75 6d 2e 20 20 4e 55  the minimum.  NU
cdb0: 4c 4c 20 69 73 20 6f 6e 6c 79 20 72 65 74 75 72  LL is only retur
cdc0: 6e 65 64 0a 69 66 20 61 6c 6c 20 76 61 6c 75 65  ned.if all value
cdd0: 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 20 61  s in the group a
cde0: 72 65 20 4e 55 4c 4c 2e 3c 2f 74 64 3e 0a 3c 2f  re NULL.</td>.</
cdf0: 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  tr>..<tr>.<td va
ce00: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
ce10: 3d 22 72 69 67 68 74 22 3e 73 75 6d 28 3c 69 3e  ="right">sum(<i>
ce20: 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20  X</i>)</td>.<td 
ce30: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
ce40: 75 72 6e 20 74 68 65 20 6e 75 6d 65 72 69 63 20  urn the numeric 
ce50: 73 75 6d 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65  sum of all value
ce60: 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 3c  s in the group.<
ce70: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62  /td>.</tr>.</tab
ce80: 6c 65 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20  le>.}...Section 
ce90: 49 4e 53 45 52 54 20 69 6e 73 65 72 74 0a 0a 53  INSERT insert..S
cea0: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
ceb0: 6d 65 6e 74 7d 20 7b 0a 49 4e 53 45 52 54 20 5b  ment} {.INSERT [
cec0: 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67  OR <conflict-alg
ced0: 6f 72 69 74 68 6d 3e 5d 20 49 4e 54 4f 20 5b 3c  orithm>] INTO [<
cee0: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e  database-name> .
cef0: 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b  ] <table-name> [
cf00: 28 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 29 5d  (<column-list>)]
cf10: 20 56 41 4c 55 45 53 28 3c 76 61 6c 75 65 2d 6c   VALUES(<value-l
cf20: 69 73 74 3e 29 20 7c 0a 49 4e 53 45 52 54 20 5b  ist>) |.INSERT [
cf30: 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67  OR <conflict-alg
cf40: 6f 72 69 74 68 6d 3e 5d 20 49 4e 54 4f 20 5b 3c  orithm>] INTO [<
cf50: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e  database-name> .
cf60: 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b  ] <table-name> [
cf70: 28 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 29 5d  (<column-list>)]
cf80: 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65   <select-stateme
cf90: 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  nt>.}..puts {.<p
cfa0: 3e 54 68 65 20 49 4e 53 45 52 54 20 73 74 61 74  >The INSERT stat
cfb0: 65 6d 65 6e 74 20 63 6f 6d 65 73 20 69 6e 20 74  ement comes in t
cfc0: 77 6f 20 62 61 73 69 63 20 66 6f 72 6d 73 2e 20  wo basic forms. 
cfd0: 20 54 68 65 20 66 69 72 73 74 20 66 6f 72 6d 0a   The first form.
cfe0: 28 77 69 74 68 20 74 68 65 20 22 56 41 4c 55 45  (with the "VALUE
cff0: 53 22 20 6b 65 79 77 6f 72 64 29 20 63 72 65 61  S" keyword) crea
d000: 74 65 73 20 61 20 73 69 6e 67 6c 65 20 6e 65 77  tes a single new
d010: 20 72 6f 77 20 69 6e 20 61 6e 20 65 78 69 73 74   row in an exist
d020: 69 6e 67 20 74 61 62 6c 65 2e 0a 49 66 20 6e 6f  ing table..If no
d030: 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 20 69 73 20   column-list is 
d040: 73 70 65 63 69 66 69 65 64 20 74 68 65 6e 20 74  specified then t
d050: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c  he number of val
d060: 75 65 73 20 6d 75 73 74 0a 62 65 20 74 68 65 20  ues must.be the 
d070: 73 61 6d 65 20 61 73 20 74 68 65 20 6e 75 6d 62  same as the numb
d080: 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
d090: 20 74 68 65 20 74 61 62 6c 65 2e 20 20 49 66 20   the table.  If 
d0a0: 61 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 0a 69 73  a column-list.is
d0b0: 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e   specified, then
d0c0: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76   the number of v
d0d0: 61 6c 75 65 73 20 6d 75 73 74 20 6d 61 74 63 68  alues must match
d0e0: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 73   the number of.s
d0f0: 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73  pecified columns
d100: 2e 20 20 43 6f 6c 75 6d 6e 73 20 6f 66 20 74 68  .  Columns of th
d110: 65 20 74 61 62 6c 65 20 74 68 61 74 20 64 6f 20  e table that do 
d120: 6e 6f 74 20 61 70 70 65 61 72 20 69 6e 20 74 68  not appear in th
d130: 65 0a 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 61 72  e.column list ar
d140: 65 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68  e filled with th
d150: 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 2c  e default value,
d160: 20 6f 72 20 77 69 74 68 20 4e 55 4c 4c 20 69 66   or with NULL if
d170: 20 6e 6f 74 0a 64 65 66 61 75 6c 74 20 76 61 6c   not.default val
d180: 75 65 20 69 73 20 73 70 65 63 69 66 69 65 64 2e  ue is specified.
d190: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 65  .</p>..<p>The se
d1a0: 63 6f 6e 64 20 66 6f 72 6d 20 6f 66 20 74 68 65  cond form of the
d1b0: 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
d1c0: 74 20 74 61 6b 65 73 20 69 74 20 64 61 74 61 20  t takes it data 
d1d0: 66 72 6f 6d 20 61 0a 53 45 4c 45 43 54 20 73 74  from a.SELECT st
d1e0: 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e 75  atement.  The nu
d1f0: 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  mber of columns 
d200: 69 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66  in the result of
d210: 20 74 68 65 0a 53 45 4c 45 43 54 20 6d 75 73 74   the.SELECT must
d220: 20 65 78 61 63 74 6c 79 20 6d 61 74 63 68 20 74   exactly match t
d230: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
d240: 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c  umns in the tabl
d250: 65 20 69 66 0a 6e 6f 20 63 6f 6c 75 6d 6e 20 6c  e if.no column l
d260: 69 73 74 20 69 73 20 73 70 65 63 69 66 69 65 64  ist is specified
d270: 2c 20 6f 72 20 69 74 20 6d 75 73 74 20 6d 61 74  , or it must mat
d280: 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ch the number of
d290: 20 63 6f 6c 75 6d 6e 73 0a 6e 61 6d 65 20 69 6e   columns.name in
d2a0: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6c 69 73 74   the column list
d2b0: 2e 20 20 41 20 6e 65 77 20 65 6e 74 72 79 20 69  .  A new entry i
d2c0: 73 20 6d 61 64 65 20 69 6e 20 74 68 65 20 74 61  s made in the ta
d2d0: 62 6c 65 0a 66 6f 72 20 65 76 65 72 79 20 72 6f  ble.for every ro
d2e0: 77 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54 20  w of the SELECT 
d2f0: 72 65 73 75 6c 74 2e 20 20 54 68 65 20 53 45 4c  result.  The SEL
d300: 45 43 54 20 6d 61 79 20 62 65 20 73 69 6d 70 6c  ECT may be simpl
d310: 65 0a 6f 72 20 63 6f 6d 70 6f 75 6e 64 2e 20 20  e.or compound.  
d320: 49 66 20 74 68 65 20 53 45 4c 45 43 54 20 73 74  If the SELECT st
d330: 61 74 65 6d 65 6e 74 20 68 61 73 20 61 6e 20 4f  atement has an O
d340: 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 2c 0a  RDER BY clause,.
d350: 74 68 65 20 4f 52 44 45 52 20 42 59 20 69 73 20  the ORDER BY is 
d360: 69 67 6e 6f 72 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  ignored.</p>..<p
d370: 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f  >The optional co
d380: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 61 6c  nflict-clause al
d390: 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69 66 69  lows the specifi
d3a0: 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74  cation of an alt
d3b0: 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74 72 61  ernative.constra
d3c0: 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73  int conflict res
d3d0: 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68  olution algorith
d3e0: 6d 20 74 6f 20 75 73 65 20 64 75 72 69 6e 67 20  m to use during 
d3f0: 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64  this one command
d400: 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74 69 6f  ..See the sectio
d410: 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68 72 65 66  n titled.<a href
d420: 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20  ="#conflict">ON 
d430: 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66 6f 72  CONFLICT</a> for
d440: 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f   additional info
d450: 72 6d 61 74 69 6f 6e 2e 0a 46 6f 72 20 63 6f 6d  rmation..For com
d460: 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20  patibility with 
d470: 4d 79 53 51 4c 2c 20 74 68 65 20 70 61 72 73 65  MySQL, the parse
d480: 72 20 61 6c 6c 6f 77 73 20 74 68 65 20 75 73 65  r allows the use
d490: 20 6f 66 20 74 68 65 0a 73 69 6e 67 6c 65 20 6b   of the.single k
d4a0: 65 79 77 6f 72 64 20 3c 61 20 68 72 65 66 3d 22  eyword <a href="
d4b0: 23 72 65 70 6c 61 63 65 22 3e 52 45 50 4c 41 43  #replace">REPLAC
d4c0: 45 3c 2f 61 3e 20 61 73 20 61 6e 20 61 6c 69 61  E</a> as an alia
d4d0: 73 20 66 6f 72 20 22 49 4e 53 45 52 54 20 4f 52  s for "INSERT OR
d4e0: 20 52 45 50 4c 41 43 45 22 2e 0a 3c 2f 70 3e 0a   REPLACE"..</p>.
d4f0: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 4f 4e 20  }...Section {ON 
d500: 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 7d  CONFLICT clause}
d510: 20 63 6f 6e 66 6c 69 63 74 0a 0a 53 79 6e 74 61   conflict..Synta
d520: 78 20 7b 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  x {conflict-clau
d530: 73 65 7d 20 7b 0a 4f 4e 20 43 4f 4e 46 4c 49 43  se} {.ON CONFLIC
d540: 54 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f  T <conflict-algo
d550: 72 69 74 68 6d 3e 0a 7d 20 7b 63 6f 6e 66 6c 69  rithm>.} {confli
d560: 63 74 2d 61 6c 67 6f 72 69 74 68 6d 7d 20 7b 0a  ct-algorithm} {.
d570: 52 4f 4c 4c 42 41 43 4b 20 7c 20 41 42 4f 52 54  ROLLBACK | ABORT
d580: 20 7c 20 46 41 49 4c 20 7c 20 49 47 4e 4f 52 45   | FAIL | IGNORE
d590: 20 7c 20 52 45 50 4c 41 43 45 0a 7d 0a 0a 70 75   | REPLACE.}..pu
d5a0: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 4f 4e 20 43  ts {.<p>The ON C
d5b0: 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20 69  ONFLICT clause i
d5c0: 73 20 6e 6f 74 20 61 20 73 65 70 61 72 61 74 65  s not a separate
d5d0: 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 49   SQL command.  I
d5e0: 74 20 69 73 20 61 0a 6e 6f 6e 2d 73 74 61 6e 64  t is a.non-stand
d5f0: 61 72 64 20 63 6c 61 75 73 65 20 74 68 61 74 20  ard clause that 
d600: 63 61 6e 20 61 70 70 65 61 72 20 69 6e 20 6d 61  can appear in ma
d610: 6e 79 20 6f 74 68 65 72 20 53 51 4c 20 63 6f 6d  ny other SQL com
d620: 6d 61 6e 64 73 2e 0a 49 74 20 69 73 20 67 69 76  mands..It is giv
d630: 65 6e 20 69 74 73 20 6f 77 6e 20 73 65 63 74 69  en its own secti
d640: 6f 6e 20 69 6e 20 74 68 69 73 20 64 6f 63 75 6d  on in this docum
d650: 65 6e 74 20 62 65 63 61 75 73 65 20 69 74 20 69  ent because it i
d660: 73 20 6e 6f 74 0a 70 61 72 74 20 6f 66 20 73 74  s not.part of st
d670: 61 6e 64 61 72 64 20 53 51 4c 20 61 6e 64 20 74  andard SQL and t
d680: 68 65 72 65 66 6f 72 65 20 6d 69 67 68 74 20 6e  herefore might n
d690: 6f 74 20 62 65 20 66 61 6d 69 6c 69 61 72 2e 3c  ot be familiar.<
d6a0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 79 6e 74  /p>..<p>The synt
d6b0: 61 78 20 66 6f 72 20 74 68 65 20 4f 4e 20 43 4f  ax for the ON CO
d6c0: 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73  NFLICT clause is
d6d0: 20 61 73 20 73 68 6f 77 6e 20 61 62 6f 76 65 20   as shown above 
d6e0: 66 6f 72 0a 74 68 65 20 43 52 45 41 54 45 20 54  for.the CREATE T
d6f0: 41 42 4c 45 20 61 6e 64 20 43 52 45 41 54 45 20  ABLE and CREATE 
d700: 49 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 73 2e 20  INDEX commands. 
d710: 20 46 6f 72 20 74 68 65 20 43 4f 50 59 2c 20 49   For the COPY, I
d720: 4e 53 45 52 54 2c 20 61 6e 64 0a 55 50 44 41 54  NSERT, and.UPDAT
d730: 45 20 63 6f 6d 6d 61 6e 64 73 2c 20 74 68 65 20  E commands, the 
d740: 6b 65 79 77 6f 72 64 73 20 22 4f 4e 20 43 4f 4e  keywords "ON CON
d750: 46 4c 49 43 54 22 20 61 72 65 20 72 65 70 6c 61  FLICT" are repla
d760: 63 65 64 20 62 79 20 22 4f 52 22 2c 20 74 6f 20  ced by "OR", to 
d770: 6d 61 6b 65 0a 74 68 65 20 73 79 6e 74 61 78 20  make.the syntax 
d780: 73 65 65 6d 20 6d 6f 72 65 20 6e 61 74 75 72 61  seem more natura
d790: 6c 2e 20 20 42 75 74 20 74 68 65 20 6d 65 61 6e  l.  But the mean
d7a0: 69 6e 67 20 6f 66 20 74 68 65 20 63 6c 61 75 73  ing of the claus
d7b0: 65 20 69 73 20 74 68 65 20 73 61 6d 65 0a 65 69  e is the same.ei
d7c0: 74 68 65 72 20 77 61 79 2e 3c 2f 70 3e 0a 0a 3c  ther way.</p>..<
d7d0: 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43  p>The ON CONFLIC
d7e0: 54 20 63 6c 61 75 73 65 20 73 70 65 63 69 66 69  T clause specifi
d7f0: 65 73 20 61 6e 20 61 6c 67 6f 72 69 74 68 6d 20  es an algorithm 
d800: 75 73 65 64 20 74 6f 20 72 65 73 6f 6c 76 65 0a  used to resolve.
d810: 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c  constraint confl
d820: 69 63 74 73 2e 20 20 54 68 65 72 65 20 61 72 65  icts.  There are
d830: 20 66 69 76 65 20 63 68 6f 69 63 65 73 3a 20 52   five choices: R
d840: 4f 4c 4c 42 41 43 4b 2c 20 41 42 4f 52 54 2c 0a  OLLBACK, ABORT,.
d850: 46 41 49 4c 2c 20 49 47 4e 4f 52 45 2c 20 61 6e  FAIL, IGNORE, an
d860: 64 20 52 45 50 4c 41 43 45 2e 20 54 68 65 20 64  d REPLACE. The d
d870: 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74 68 6d  efault algorithm
d880: 20 69 73 20 41 42 4f 52 54 2e 20 20 54 68 69 73   is ABORT.  This
d890: 0a 69 73 20 77 68 61 74 20 74 68 65 79 20 6d 65  .is what they me
d8a0: 61 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c 64  an:</p>..<dl>.<d
d8b0: 74 3e 3c 62 3e 52 4f 4c 4c 42 41 43 4b 3c 2f 62  t><b>ROLLBACK</b
d8c0: 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68  ></dt>.<dd><p>Wh
d8d0: 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20  en a constraint 
d8e0: 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
d8f0: 2c 20 61 6e 20 69 6d 6d 65 64 69 61 74 65 20 52  , an immediate R
d900: 4f 4c 4c 42 41 43 4b 0a 6f 63 63 75 72 73 2c 20  OLLBACK.occurs, 
d910: 74 68 75 73 20 65 6e 64 69 6e 67 20 74 68 65 20  thus ending the 
d920: 63 75 72 72 65 6e 74 20 74 72 61 6e 73 61 63 74  current transact
d930: 69 6f 6e 2c 20 61 6e 64 20 74 68 65 20 63 6f 6d  ion, and the com
d940: 6d 61 6e 64 20 61 62 6f 72 74 73 0a 77 69 74 68  mand aborts.with
d950: 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65 20 6f   a return code o
d960: 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  f SQLITE_CONSTRA
d970: 49 4e 54 2e 20 20 49 66 20 6e 6f 20 74 72 61 6e  INT.  If no tran
d980: 73 61 63 74 69 6f 6e 20 69 73 0a 61 63 74 69 76  saction is.activ
d990: 65 20 28 6f 74 68 65 72 20 74 68 61 6e 20 74 68  e (other than th
d9a0: 65 20 69 6d 70 6c 69 65 64 20 74 72 61 6e 73 61  e implied transa
d9b0: 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63 72  ction that is cr
d9c0: 65 61 74 65 64 20 6f 6e 20 65 76 65 72 79 0a 63  eated on every.c
d9d0: 6f 6d 6d 61 6e 64 29 20 74 68 65 6e 20 74 68 69  ommand) then thi
d9e0: 73 20 61 6c 67 6f 72 69 74 68 6d 20 77 6f 72 6b  s algorithm work
d9f0: 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 41 42  s the same as AB
da00: 4f 52 54 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c  ORT.</p></dd>..<
da10: 64 74 3e 3c 62 3e 41 42 4f 52 54 3c 2f 62 3e 3c  dt><b>ABORT</b><
da20: 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e  /dt>.<dd><p>When
da30: 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
da40: 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
da50: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 62 61 63 6b  the command back
da60: 73 20 6f 75 74 0a 61 6e 79 20 70 72 69 6f 72 20  s out.any prior 
da70: 63 68 61 6e 67 65 73 20 69 74 20 6d 69 67 68 74  changes it might
da80: 20 68 61 76 65 20 6d 61 64 65 20 61 6e 64 20 61   have made and a
da90: 62 6f 72 74 73 20 77 69 74 68 20 61 20 72 65 74  borts with a ret
daa0: 75 72 6e 20 63 6f 64 65 0a 6f 66 20 53 51 4c 49  urn code.of SQLI
dab0: 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20  TE_CONSTRAINT.  
dac0: 42 75 74 20 6e 6f 20 52 4f 4c 4c 42 41 43 4b 20  But no ROLLBACK 
dad0: 69 73 20 65 78 65 63 75 74 65 64 20 73 6f 20 63  is executed so c
dae0: 68 61 6e 67 65 73 0a 66 72 6f 6d 20 70 72 69 6f  hanges.from prio
daf0: 72 20 63 6f 6d 6d 61 6e 64 73 20 77 69 74 68 69  r commands withi
db00: 6e 20 74 68 65 20 73 61 6d 65 20 74 72 61 6e 73  n the same trans
db10: 61 63 74 69 6f 6e 0a 61 72 65 20 70 72 65 73 65  action.are prese
db20: 72 76 65 64 2e 20 20 54 68 69 73 20 69 73 20 74  rved.  This is t
db30: 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76  he default behav
db40: 69 6f 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c  ior.</p></dd>..<
db50: 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f 62 3e 3c 2f  dt><b>FAIL</b></
db60: 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20  dt>.<dd><p>When 
db70: 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  a constraint vio
db80: 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74  lation occurs, t
db90: 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72 74  he command abort
dba0: 73 20 77 69 74 68 20 61 0a 72 65 74 75 72 6e 20  s with a.return 
dbb0: 63 6f 64 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  code SQLITE_CONS
dbc0: 54 52 41 49 4e 54 2e 20 20 42 75 74 20 61 6e 79  TRAINT.  But any
dbd0: 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20   changes to the 
dbe0: 64 61 74 61 62 61 73 65 20 74 68 61 74 0a 74 68  database that.th
dbf0: 65 20 63 6f 6d 6d 61 6e 64 20 6d 61 64 65 20 70  e command made p
dc00: 72 69 6f 72 20 74 6f 20 65 6e 63 6f 75 6e 74 65  rior to encounte
dc10: 72 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72 61  ring the constra
dc20: 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 61 72  int violation.ar
dc30: 65 20 70 72 65 73 65 72 76 65 64 20 61 6e 64 20  e preserved and 
dc40: 61 72 65 20 6e 6f 74 20 62 61 63 6b 65 64 20 6f  are not backed o
dc50: 75 74 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  ut.  For example
dc60: 2c 20 69 66 20 61 6e 20 55 50 44 41 54 45 0a 73  , if an UPDATE.s
dc70: 74 61 74 65 6d 65 6e 74 20 65 6e 63 6f 75 6e 74  tatement encount
dc80: 65 72 65 64 20 61 20 63 6f 6e 73 74 72 61 69 6e  ered a constrain
dc90: 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 6e 20 74  t violation on t
dca0: 68 65 20 31 30 30 74 68 20 72 6f 77 20 74 68 61  he 100th row tha
dcb0: 74 0a 69 74 20 61 74 74 65 6d 70 74 73 20 74 6f  t.it attempts to
dcc0: 20 75 70 64 61 74 65 2c 20 74 68 65 6e 20 74 68   update, then th
dcd0: 65 20 66 69 72 73 74 20 39 39 20 72 6f 77 20 63  e first 99 row c
dce0: 68 61 6e 67 65 73 20 61 72 65 20 70 72 65 73 65  hanges are prese
dcf0: 72 76 65 64 0a 62 75 74 20 63 68 61 6e 67 65 73  rved.but changes
dd00: 20 74 6f 20 72 6f 77 73 20 31 30 30 20 61 6e 64   to rows 100 and
dd10: 20 62 65 79 6f 6e 64 20 6e 65 76 65 72 20 6f 63   beyond never oc
dd20: 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c  cur.</p></dd>..<
dd30: 64 74 3e 3c 62 3e 49 47 4e 4f 52 45 3c 2f 62 3e  dt><b>IGNORE</b>
dd40: 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65  </dt>.<dd><p>Whe
dd50: 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  n a constraint v
dd60: 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
dd70: 20 74 68 65 20 6f 6e 65 20 72 6f 77 20 74 68 61   the one row tha
dd80: 74 20 63 6f 6e 74 61 69 6e 73 0a 74 68 65 20 63  t contains.the c
dd90: 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
dda0: 69 6f 6e 20 69 73 20 6e 6f 74 20 69 6e 73 65 72  ion is not inser
ddb0: 74 65 64 20 6f 72 20 63 68 61 6e 67 65 64 2e 20  ted or changed. 
ddc0: 20 42 75 74 20 74 68 65 20 63 6f 6d 6d 61 6e 64   But the command
ddd0: 0a 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63 75  .continues execu
dde0: 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20 20  ting normally.  
ddf0: 4f 74 68 65 72 20 72 6f 77 73 20 62 65 66 6f 72  Other rows befor
de00: 65 20 61 6e 64 20 61 66 74 65 72 20 74 68 65 20  e and after the 
de10: 72 6f 77 20 74 68 61 74 0a 63 6f 6e 74 61 69 6e  row that.contain
de20: 65 64 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e  ed the constrain
de30: 74 20 76 69 6f 6c 61 74 69 6f 6e 20 63 6f 6e 74  t violation cont
de40: 69 6e 75 65 20 74 6f 20 62 65 20 69 6e 73 65 72  inue to be inser
de50: 74 65 64 20 6f 72 20 75 70 64 61 74 65 64 0a 6e  ted or updated.n
de60: 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65 72 72  ormally.  No err
de70: 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e 3c  or is returned.<
de80: 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62  /p></dd>..<dt><b
de90: 3e 52 45 50 4c 41 43 45 3c 2f 62 3e 3c 2f 64 74  >REPLACE</b></dt
dea0: 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20  >.<dd><p>When a 
deb0: 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e  UNIQUE constrain
dec0: 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75  t violation occu
ded0: 72 73 2c 20 74 68 65 20 70 72 65 2d 65 78 69 73  rs, the pre-exis
dee0: 74 69 6e 67 20 72 6f 77 73 0a 74 68 61 74 20 61  ting rows.that a
def0: 72 65 20 63 61 75 73 69 6e 67 20 74 68 65 20 63  re causing the c
df00: 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
df10: 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64 20  ion are removed 
df20: 70 72 69 6f 72 20 74 6f 20 69 6e 73 65 72 74 69  prior to inserti
df30: 6e 67 0a 6f 72 20 75 70 64 61 74 69 6e 67 20 74  ng.or updating t
df40: 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 2e 20  he current row. 
df50: 20 54 68 75 73 20 74 68 65 20 69 6e 73 65 72 74   Thus the insert
df60: 20 6f 72 20 75 70 64 61 74 65 20 61 6c 77 61 79   or update alway
df70: 73 20 6f 63 63 75 72 73 2e 0a 54 68 65 20 63 6f  s occurs..The co
df80: 6d 6d 61 6e 64 20 63 6f 6e 74 69 6e 75 65 73 20  mmand continues 
df90: 65 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61 6c  executing normal
dfa0: 6c 79 2e 20 20 4e 6f 20 65 72 72 6f 72 20 69 73  ly.  No error is
dfb0: 20 72 65 74 75 72 6e 65 64 2e 0a 49 66 20 61 20   returned..If a 
dfc0: 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74 72 61  NOT NULL constra
dfd0: 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63  int violation oc
dfe0: 63 75 72 73 2c 20 74 68 65 20 4e 55 4c 4c 20 76  curs, the NULL v
dff0: 61 6c 75 65 20 69 73 20 72 65 70 6c 61 63 65 64  alue is replaced
e000: 0a 62 79 20 74 68 65 20 64 65 66 61 75 6c 74 20  .by the default 
e010: 76 61 6c 75 65 20 66 6f 72 20 74 68 61 74 20 63  value for that c
e020: 6f 6c 75 6d 6e 2e 20 20 49 66 20 74 68 65 20 63  olumn.  If the c
e030: 6f 6c 75 6d 6e 20 68 61 73 20 6e 6f 20 64 65 66  olumn has no def
e040: 61 75 6c 74 0a 76 61 6c 75 65 2c 20 74 68 65 6e  ault.value, then
e050: 20 74 68 65 20 41 42 4f 52 54 20 61 6c 67 6f 72   the ABORT algor
e060: 69 74 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f 70  ithm is used.</p
e070: 3e 0a 0a 3c 70 3e 57 68 65 6e 20 74 68 69 73 20  >..<p>When this 
e080: 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74  conflict resolut
e090: 69 6f 6e 20 73 74 72 61 74 65 67 79 20 64 65 6c  ion strategy del
e0a0: 65 74 65 73 20 72 6f 77 73 20 69 6e 20 6f 72 64  etes rows in ord
e0b0: 65 72 20 74 6f 0a 73 61 74 69 73 66 79 20 61 20  er to.satisfy a 
e0c0: 63 6f 6e 73 74 72 61 69 6e 74 2c 20 69 74 20 64  constraint, it d
e0d0: 6f 65 73 20 6e 6f 74 20 69 6e 76 6f 6b 65 20 64  oes not invoke d
e0e0: 65 6c 65 74 65 20 74 72 69 67 67 65 72 73 20 6f  elete triggers o
e0f0: 6e 20 74 68 6f 73 65 0a 72 6f 77 73 2e 20 20 42  n those.rows.  B
e100: 75 74 20 74 68 61 74 20 6d 61 79 20 63 68 61 6e  ut that may chan
e110: 67 65 20 69 6e 20 61 20 66 75 74 75 72 65 20 72  ge in a future r
e120: 65 6c 65 61 73 65 2e 3c 2f 70 3e 0a 3c 2f 64 6c  elease.</p>.</dl
e130: 3e 0a 0a 3c 70 3e 54 68 65 20 61 6c 67 6f 72 69  >..<p>The algori
e140: 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e  thm specified in
e150: 20 74 68 65 20 4f 52 20 63 6c 61 75 73 65 20 6f   the OR clause o
e160: 66 20 61 20 43 4f 50 59 2c 20 49 4e 53 45 52 54  f a COPY, INSERT
e170: 2c 20 6f 72 20 55 50 44 41 54 45 0a 6f 76 65 72  , or UPDATE.over
e180: 72 69 64 65 73 20 61 6e 79 20 61 6c 67 6f 72 69  rides any algori
e190: 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e  thm specified in
e1a0: 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45 20   a CREATE TABLE 
e1b0: 6f 72 20 43 52 45 41 54 45 20 49 4e 44 45 58 2e  or CREATE INDEX.
e1c0: 0a 49 66 20 6e 6f 20 61 6c 67 6f 72 69 74 68 6d  .If no algorithm
e1d0: 20 69 73 20 73 70 65 63 69 66 69 65 64 20 61 6e   is specified an
e1e0: 79 77 68 65 72 65 2c 20 74 68 65 20 41 42 4f 52  ywhere, the ABOR
e1f0: 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  T algorithm is u
e200: 73 65 64 2e 3c 2f 70 3e 0a 7d 0a 23 20 3c 70 3e  sed.</p>.}.# <p>
e210: 46 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69  For additional i
e220: 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 73 65 65 20  nformation, see 
e230: 0a 23 20 3c 61 20 68 72 65 66 3d 22 63 6f 6e 66  .# <a href="conf
e240: 6c 69 63 74 2e 68 74 6d 6c 22 3e 63 6f 6e 66 6c  lict.html">confl
e250: 69 63 74 2e 68 74 6d 6c 3c 2f 61 3e 2e 3c 2f 70  ict.html</a>.</p
e260: 3e 0a 0a 53 65 63 74 69 6f 6e 20 52 45 49 4e 44  >..Section REIND
e270: 45 58 20 72 65 69 6e 64 65 78 0a 0a 53 79 6e 74  EX reindex..Synt
e280: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
e290: 74 7d 20 7b 0a 20 20 52 45 49 4e 44 45 58 20 3c  t} {.  REINDEX <
e2a0: 63 6f 6c 6c 61 74 69 6f 6e 20 6e 61 6d 65 3e 0a  collation name>.
e2b0: 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  }.Syntax {sql-st
e2c0: 61 74 65 6d 65 6e 74 7d 20 7b 0a 20 20 52 45 49  atement} {.  REI
e2d0: 4e 44 45 58 20 5b 3c 64 61 74 61 62 61 73 65 2d  NDEX [<database-
e2e0: 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2f  name> .] <table/
e2f0: 69 6e 64 65 78 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70  index-name>.}..p
e300: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 52 45 49  uts {.<p>The REI
e310: 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 20 69 73 20  NDEX command is 
e320: 75 73 65 64 20 74 6f 20 64 65 6c 65 74 65 20 61  used to delete a
e330: 6e 64 20 72 65 63 72 65 61 74 65 20 69 6e 64 69  nd recreate indi
e340: 63 65 73 20 66 72 6f 6d 20 73 63 72 61 74 63 68  ces from scratch
e350: 2e 0a 54 68 69 73 20 69 73 20 75 73 65 66 75 6c  ..This is useful
e360: 20 77 68 65 6e 20 74 68 65 20 64 65 66 69 6e 69   when the defini
e370: 74 69 6f 6e 20 6f 66 20 61 20 63 6f 6c 6c 61 74  tion of a collat
e380: 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 68 61 73  ion sequence has
e390: 20 63 68 61 6e 67 65 64 2e 0a 3c 2f 70 3e 0a 0a   changed..</p>..
e3a0: 3c 70 3e 49 6e 20 74 68 65 20 66 69 72 73 74 20  <p>In the first 
e3b0: 66 6f 72 6d 2c 20 61 6c 6c 20 69 6e 64 69 63 65  form, all indice
e3c0: 73 20 69 6e 20 61 6c 6c 20 61 74 74 61 63 68 65  s in all attache
e3d0: 64 20 64 61 74 61 62 61 73 65 73 20 74 68 61 74  d databases that
e3e0: 20 75 73 65 20 74 68 65 0a 6e 61 6d 65 64 20 63   use the.named c
e3f0: 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63  ollation sequenc
e400: 65 20 61 72 65 20 72 65 63 72 65 61 74 65 64 2e  e are recreated.
e410: 20 49 6e 20 74 68 65 20 73 65 63 6f 6e 64 20 66   In the second f
e420: 6f 72 6d 2c 20 69 66 20 0a 3c 69 3e 5b 64 61 74  orm, if .<i>[dat
e430: 61 62 61 73 65 2d 6e 61 6d 65 2e 5d 74 61 62 6c  abase-name.]tabl
e440: 65 2f 69 6e 64 65 78 2d 6e 61 6d 65 3c 2f 69 3e  e/index-name</i>
e450: 20 69 64 65 6e 74 69 66 69 65 73 20 61 20 74 61   identifies a ta
e460: 62 6c 65 2c 20 74 68 65 6e 20 61 6c 6c 20 69 6e  ble, then all in
e470: 64 69 63 65 73 0a 61 73 73 6f 63 69 61 74 65 64  dices.associated
e480: 20 77 69 74 68 20 74 68 65 20 74 61 62 6c 65 20   with the table 
e490: 61 72 65 20 72 65 62 75 69 6c 74 2e 20 49 66 20  are rebuilt. If 
e4a0: 61 6e 20 69 6e 64 65 78 20 69 73 20 69 64 65 6e  an index is iden
e4b0: 74 69 66 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c  tified, then onl
e4c0: 79 0a 74 68 69 73 20 73 70 65 63 69 66 69 63 20  y.this specific 
e4d0: 69 6e 64 65 78 20 69 73 20 64 65 6c 65 74 65 64  index is deleted
e4e0: 20 61 6e 64 20 72 65 63 72 65 61 74 65 64 2e 0a   and recreated..
e4f0: 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 6e 6f 20 3c  </p>..<p>If no <
e500: 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c  i>database-name<
e510: 2f 69 3e 20 69 73 20 73 70 65 63 69 66 69 65 64  /i> is specified
e520: 20 61 6e 64 20 74 68 65 72 65 20 65 78 69 73 74   and there exist
e530: 73 20 62 6f 74 68 20 61 20 74 61 62 6c 65 20 6f  s both a table o
e540: 72 0a 69 6e 64 65 78 20 61 6e 64 20 61 20 63 6f  r.index and a co
e550: 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65  llation sequence
e560: 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65   of the specifie
e570: 64 20 6e 61 6d 65 2c 20 74 68 65 6e 20 69 6e 64  d name, then ind
e580: 69 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 0a  ices associated.
e590: 77 69 74 68 20 74 68 65 20 63 6f 6c 6c 61 74 69  with the collati
e5a0: 6f 6e 20 73 65 71 75 65 6e 63 65 20 6f 6e 6c 79  on sequence only
e5b0: 20 61 72 65 20 72 65 63 6f 6e 73 74 72 75 63 74   are reconstruct
e5c0: 65 64 2e 20 54 68 69 73 20 61 6d 62 69 67 75 69  ed. This ambigui
e5d0: 74 79 20 6d 61 79 20 62 65 0a 64 69 73 70 65 6c  ty may be.dispel
e5e0: 6c 65 64 20 62 79 20 61 6c 77 61 79 73 20 73 70  led by always sp
e5f0: 65 63 69 66 79 69 6e 67 20 61 20 3c 69 3e 64 61  ecifying a <i>da
e600: 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 20  tabase-name</i> 
e610: 77 68 65 6e 20 72 65 69 6e 64 65 78 69 6e 67 20  when reindexing 
e620: 61 0a 73 70 65 63 69 66 69 63 20 74 61 62 6c 65  a.specific table
e630: 20 6f 72 20 69 6e 64 65 78 2e 0a 7d 0a 0a 53 65   or index..}..Se
e640: 63 74 69 6f 6e 20 52 45 50 4c 41 43 45 20 72 65  ction REPLACE re
e650: 70 6c 61 63 65 0a 0a 53 79 6e 74 61 78 20 7b 73  place..Syntax {s
e660: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
e670: 52 45 50 4c 41 43 45 20 49 4e 54 4f 20 5b 3c 64  REPLACE INTO [<d
e680: 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d  atabase-name> .]
e690: 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28   <table-name> [(
e6a0: 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29   <column-list> )
e6b0: 5d 20 56 41 4c 55 45 53 20 28 20 3c 76 61 6c 75  ] VALUES ( <valu
e6c0: 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 52 45 50 4c  e-list> ) |.REPL
e6d0: 41 43 45 20 49 4e 54 4f 20 5b 3c 64 61 74 61 62  ACE INTO [<datab
e6e0: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
e6f0: 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63 6f  ble-name> [( <co
e700: 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20 3c 73  lumn-list> )] <s
e710: 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e  elect-statement>
e720: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
e730: 65 20 52 45 50 4c 41 43 45 20 63 6f 6d 6d 61 6e  e REPLACE comman
e740: 64 20 69 73 20 61 6e 20 61 6c 69 61 73 20 66 6f  d is an alias fo
e750: 72 20 74 68 65 20 22 49 4e 53 45 52 54 20 4f 52  r the "INSERT OR
e760: 20 52 45 50 4c 41 43 45 22 20 76 61 72 69 61 6e   REPLACE" varian
e770: 74 0a 6f 66 20 74 68 65 20 3c 61 20 68 72 65 66  t.of the <a href
e780: 3d 22 23 69 6e 73 65 72 74 22 3e 49 4e 53 45 52  ="#insert">INSER
e790: 54 3c 2f 61 3e 20 63 6f 6d 6d 61 6e 64 2e 20 20  T</a> command.  
e7a0: 54 68 69 73 20 61 6c 69 61 73 20 69 73 20 70 72  This alias is pr
e7b0: 6f 76 69 64 65 64 20 66 6f 72 0a 63 6f 6d 70 61  ovided for.compa
e7c0: 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 4d 79  tibility with My
e7d0: 53 51 4c 2e 20 20 53 65 65 20 74 68 65 20 0a 3c  SQL.  See the .<
e7e0: 61 20 68 72 65 66 3d 22 23 69 6e 73 65 72 74 22  a href="#insert"
e7f0: 3e 49 4e 53 45 52 54 3c 2f 61 3e 20 63 6f 6d 6d  >INSERT</a> comm
e800: 61 6e 64 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  and documentatio
e810: 6e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  n for additional
e820: 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70  .information.</p
e830: 3e 20 20 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20  >  .}...Section 
e840: 53 45 4c 45 43 54 20 73 65 6c 65 63 74 0a 0a 53  SELECT select..S
e850: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
e860: 6d 65 6e 74 7d 20 7b 0a 53 45 4c 45 43 54 20 5b  ment} {.SELECT [
e870: 41 4c 4c 20 7c 20 44 49 53 54 49 4e 43 54 5d 20  ALL | DISTINCT] 
e880: 3c 72 65 73 75 6c 74 3e 20 5b 46 52 4f 4d 20 3c  <result> [FROM <
e890: 74 61 62 6c 65 2d 6c 69 73 74 3e 5d 0a 5b 57 48  table-list>].[WH
e8a0: 45 52 45 20 3c 65 78 70 72 3e 5d 0a 5b 47 52 4f  ERE <expr>].[GRO
e8b0: 55 50 20 42 59 20 3c 65 78 70 72 2d 6c 69 73 74  UP BY <expr-list
e8c0: 3e 5d 0a 5b 48 41 56 49 4e 47 20 3c 65 78 70 72  >].[HAVING <expr
e8d0: 3e 5d 0a 5b 3c 63 6f 6d 70 6f 75 6e 64 2d 6f 70  >].[<compound-op
e8e0: 3e 20 3c 73 65 6c 65 63 74 3e 5d 2a 0a 5b 4f 52  > <select>]*.[OR
e8f0: 44 45 52 20 42 59 20 3c 73 6f 72 74 2d 65 78 70  DER BY <sort-exp
e900: 72 2d 6c 69 73 74 3e 5d 0a 5b 4c 49 4d 49 54 20  r-list>].[LIMIT 
e910: 3c 69 6e 74 65 67 65 72 3e 20 5b 4c 50 20 4f 46  <integer> [LP OF
e920: 46 53 45 54 20 7c 20 2c 20 52 50 20 3c 69 6e 74  FSET | , RP <int
e930: 65 67 65 72 3e 5d 5d 0a 7d 20 7b 72 65 73 75 6c  eger>]].} {resul
e940: 74 7d 20 7b 0a 3c 72 65 73 75 6c 74 2d 63 6f 6c  t} {.<result-col
e950: 75 6d 6e 3e 20 5b 2c 20 3c 72 65 73 75 6c 74 2d  umn> [, <result-
e960: 63 6f 6c 75 6d 6e 3e 5d 2a 0a 7d 20 7b 72 65 73  column>]*.} {res
e970: 75 6c 74 2d 63 6f 6c 75 6d 6e 7d 20 7b 0a 53 54  ult-column} {.ST
e980: 41 52 20 7c 20 3c 74 61 62 6c 65 2d 6e 61 6d 65  AR | <table-name
e990: 3e 20 2e 20 53 54 41 52 20 7c 20 3c 65 78 70 72  > . STAR | <expr
e9a0: 3e 20 5b 20 5b 41 53 5d 20 3c 73 74 72 69 6e 67  > [ [AS] <string
e9b0: 3e 20 5d 0a 7d 20 7b 74 61 62 6c 65 2d 6c 69 73  > ].} {table-lis
e9c0: 74 7d 20 7b 0a 3c 74 61 62 6c 65 3e 20 5b 3c 6a  t} {.<table> [<j
e9d0: 6f 69 6e 2d 6f 70 3e 20 3c 74 61 62 6c 65 3e 20  oin-op> <table> 
e9e0: 3c 6a 6f 69 6e 2d 61 72 67 73 3e 5d 2a 0a 7d 20  <join-args>]*.} 
e9f0: 7b 74 61 62 6c 65 7d 20 7b 0a 3c 74 61 62 6c 65  {table} {.<table
ea00: 2d 6e 61 6d 65 3e 20 5b 41 53 20 3c 61 6c 69 61  -name> [AS <alia
ea10: 73 3e 5d 20 7c 0a 28 20 3c 73 65 6c 65 63 74 3e  s>] |.( <select>
ea20: 20 29 20 5b 41 53 20 3c 61 6c 69 61 73 3e 5d 0a   ) [AS <alias>].
ea30: 7d 20 7b 6a 6f 69 6e 2d 6f 70 7d 20 7b 0a 2c 20  } {join-op} {., 
ea40: 7c 20 5b 4e 41 54 55 52 41 4c 5d 20 5b 4c 45 46  | [NATURAL] [LEF
ea50: 54 20 7c 20 52 49 47 48 54 20 7c 20 46 55 4c 4c  T | RIGHT | FULL
ea60: 5d 20 5b 4f 55 54 45 52 20 7c 20 49 4e 4e 45 52  ] [OUTER | INNER
ea70: 20 7c 20 43 52 4f 53 53 5d 20 4a 4f 49 4e 0a 7d   | CROSS] JOIN.}
ea80: 20 7b 6a 6f 69 6e 2d 61 72 67 73 7d 20 7b 0a 5b   {join-args} {.[
ea90: 4f 4e 20 3c 65 78 70 72 3e 5d 20 5b 55 53 49 4e  ON <expr>] [USIN
eaa0: 47 20 28 20 3c 69 64 2d 6c 69 73 74 3e 20 29 5d  G ( <id-list> )]
eab0: 0a 7d 20 7b 73 6f 72 74 2d 65 78 70 72 2d 6c 69  .} {sort-expr-li
eac0: 73 74 7d 20 7b 0a 3c 65 78 70 72 3e 20 5b 3c 73  st} {.<expr> [<s
ead0: 6f 72 74 2d 6f 72 64 65 72 3e 5d 20 5b 2c 20 3c  ort-order>] [, <
eae0: 65 78 70 72 3e 20 5b 3c 73 6f 72 74 2d 6f 72 64  expr> [<sort-ord
eaf0: 65 72 3e 5d 5d 2a 0a 7d 20 7b 73 6f 72 74 2d 6f  er>]]*.} {sort-o
eb00: 72 64 65 72 7d 20 7b 0a 5b 20 43 4f 4c 4c 41 54  rder} {.[ COLLAT
eb10: 45 20 3c 63 6f 6c 6c 61 74 69 6f 6e 2d 6e 61 6d  E <collation-nam
eb20: 65 3e 20 5d 20 5b 20 41 53 43 20 7c 20 44 45 53  e> ] [ ASC | DES
eb30: 43 20 5d 0a 7d 20 7b 63 6f 6d 70 6f 75 6e 64 5f  C ].} {compound_
eb40: 6f 70 7d 20 7b 0a 55 4e 49 4f 4e 20 7c 20 55 4e  op} {.UNION | UN
eb50: 49 4f 4e 20 41 4c 4c 20 7c 20 49 4e 54 45 52 53  ION ALL | INTERS
eb60: 45 43 54 20 7c 20 45 58 43 45 50 54 0a 7d 0a 0a  ECT | EXCEPT.}..
eb70: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 53 45  puts {.<p>The SE
eb80: 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20 69  LECT statement i
eb90: 73 20 75 73 65 64 20 74 6f 20 71 75 65 72 79 20  s used to query 
eba0: 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 54  the database.  T
ebb0: 68 65 0a 72 65 73 75 6c 74 20 6f 66 20 61 20 53  he.result of a S
ebc0: 45 4c 45 43 54 20 69 73 20 7a 65 72 6f 20 6f 72  ELECT is zero or
ebd0: 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 64 61   more rows of da
ebe0: 74 61 20 77 68 65 72 65 20 65 61 63 68 20 72 6f  ta where each ro
ebf0: 77 0a 68 61 73 20 61 20 66 69 78 65 64 20 6e 75  w.has a fixed nu
ec00: 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 2e  mber of columns.
ec10: 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20    The number of 
ec20: 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 0a 72  columns in the.r
ec30: 65 73 75 6c 74 20 69 73 20 73 70 65 63 69 66 69  esult is specifi
ec40: 65 64 20 62 79 20 74 68 65 20 65 78 70 72 65 73  ed by the expres
ec50: 73 69 6f 6e 20 6c 69 73 74 20 69 6e 20 62 65 74  sion list in bet
ec60: 77 65 65 6e 20 74 68 65 0a 53 45 4c 45 43 54 20  ween the.SELECT 
ec70: 61 6e 64 20 46 52 4f 4d 20 6b 65 79 77 6f 72 64  and FROM keyword
ec80: 73 2e 20 20 41 6e 79 20 61 72 62 69 74 72 61 72  s.  Any arbitrar
ec90: 79 20 65 78 70 72 65 73 73 69 6f 6e 20 63 61 6e  y expression can
eca0: 20 62 65 20 75 73 65 64 0a 61 73 20 61 20 72 65   be used.as a re
ecb0: 73 75 6c 74 2e 20 20 49 66 20 61 20 72 65 73 75  sult.  If a resu
ecc0: 6c 74 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73  lt expression is
ecd0: 20 7d 0a 70 75 74 73 20 22 5b 4f 70 65 72 61 74   }.puts "[Operat
ece0: 6f 72 20 2a 5d 20 74 68 65 6e 20 61 6c 6c 20 63  or *] then all c
ecf0: 6f 6c 75 6d 6e 73 20 6f 66 20 61 6c 6c 20 74 61  olumns of all ta
ed00: 62 6c 65 73 20 61 72 65 20 73 75 62 73 74 69 74  bles are substit
ed10: 75 74 65 64 22 0a 70 75 74 73 20 7b 66 6f 72 20  uted".puts {for 
ed20: 74 68 61 74 20 6f 6e 65 20 65 78 70 72 65 73 73  that one express
ed30: 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 65 78 70  ion.  If the exp
ed40: 72 65 73 73 69 6f 6e 20 69 73 20 74 68 65 20 6e  ression is the n
ed50: 61 6d 65 20 6f 66 7d 0a 70 75 74 73 20 22 61 20  ame of}.puts "a 
ed60: 74 61 62 6c 65 20 66 6f 6c 6c 6f 77 65 64 20 62  table followed b
ed70: 79 20 5b 4f 70 65 72 61 74 6f 72 20 2e 2a 5d 20  y [Operator .*] 
ed80: 74 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20  then the result 
ed90: 69 73 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 22 0a  is all columns".
eda0: 70 75 74 73 20 7b 69 6e 20 74 68 61 74 20 6f 6e  puts {in that on
edb0: 65 20 74 61 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70  e table.</p>..<p
edc0: 3e 54 68 65 20 44 49 53 54 49 4e 43 54 20 6b 65  >The DISTINCT ke
edd0: 79 77 6f 72 64 20 63 61 75 73 65 73 20 61 20 73  yword causes a s
ede0: 75 62 73 65 74 20 6f 66 20 72 65 73 75 6c 74 20  ubset of result 
edf0: 72 6f 77 73 20 74 6f 20 62 65 20 72 65 74 75 72  rows to be retur
ee00: 6e 65 64 2c 20 0a 69 6e 20 77 68 69 63 68 20 65  ned, .in which e
ee10: 61 63 68 20 72 65 73 75 6c 74 20 72 6f 77 20 69  ach result row i
ee20: 73 20 64 69 66 66 65 72 65 6e 74 2e 20 20 4e 55  s different.  NU
ee30: 4c 4c 20 76 61 6c 75 65 73 20 61 72 65 20 6e 6f  LL values are no
ee40: 74 20 74 72 65 61 74 65 64 20 61 73 20 0a 64 69  t treated as .di
ee50: 73 74 69 6e 63 74 20 66 72 6f 6d 20 65 61 63 68  stinct from each
ee60: 20 6f 74 68 65 72 2e 20 20 54 68 65 20 64 65 66   other.  The def
ee70: 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20 69 73  ault behavior is
ee80: 20 74 68 61 74 20 61 6c 6c 20 72 65 73 75 6c 74   that all result
ee90: 20 72 6f 77 73 20 0a 62 65 20 72 65 74 75 72 6e   rows .be return
eea0: 65 64 2c 20 77 68 69 63 68 20 63 61 6e 20 62 65  ed, which can be
eeb0: 20 6d 61 64 65 20 65 78 70 6c 69 63 69 74 20 77   made explicit w
eec0: 69 74 68 20 74 68 65 20 6b 65 79 77 6f 72 64 20  ith the keyword 
eed0: 41 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ALL.</p>..<p>The
eee0: 20 71 75 65 72 79 20 69 73 20 65 78 65 63 75 74   query is execut
eef0: 65 64 20 61 67 61 69 6e 73 74 20 6f 6e 65 20 6f  ed against one o
ef00: 72 20 6d 6f 72 65 20 74 61 62 6c 65 73 20 73 70  r more tables sp
ef10: 65 63 69 66 69 65 64 20 61 66 74 65 72 0a 74 68  ecified after.th
ef20: 65 20 46 52 4f 4d 20 6b 65 79 77 6f 72 64 2e 20  e FROM keyword. 
ef30: 20 49 66 20 6d 75 6c 74 69 70 6c 65 20 74 61 62   If multiple tab
ef40: 6c 65 73 20 6e 61 6d 65 73 20 61 72 65 20 73 65  les names are se
ef50: 70 61 72 61 74 65 64 20 62 79 20 63 6f 6d 6d 61  parated by comma
ef60: 73 2c 0a 74 68 65 6e 20 74 68 65 20 71 75 65 72  s,.then the quer
ef70: 79 20 69 73 20 61 67 61 69 6e 73 74 20 74 68 65  y is against the
ef80: 20 63 72 6f 73 73 20 6a 6f 69 6e 20 6f 66 20 74   cross join of t
ef90: 68 65 20 76 61 72 69 6f 75 73 20 74 61 62 6c 65  he various table
efa0: 73 2e 0a 54 68 65 20 66 75 6c 6c 20 53 51 4c 2d  s..The full SQL-
efb0: 39 32 20 6a 6f 69 6e 20 73 79 6e 74 61 78 20 63  92 join syntax c
efc0: 61 6e 20 61 6c 73 6f 20 62 65 20 75 73 65 64 20  an also be used 
efd0: 74 6f 20 73 70 65 63 69 66 79 20 6a 6f 69 6e 73  to specify joins
efe0: 2e 0a 41 20 73 75 62 2d 71 75 65 72 79 0a 69 6e  ..A sub-query.in
eff0: 20 70 61 72 65 6e 74 68 65 73 65 73 20 6d 61 79   parentheses may
f000: 20 62 65 20 73 75 62 73 74 69 74 75 74 65 64 20   be substituted 
f010: 66 6f 72 20 61 6e 79 20 74 61 62 6c 65 20 6e 61  for any table na
f020: 6d 65 20 69 6e 20 74 68 65 20 46 52 4f 4d 20 63  me in the FROM c
f030: 6c 61 75 73 65 2e 0a 54 68 65 20 65 6e 74 69 72  lause..The entir
f040: 65 20 46 52 4f 4d 20 63 6c 61 75 73 65 20 6d 61  e FROM clause ma
f050: 79 20 62 65 20 6f 6d 69 74 74 65 64 2c 20 69 6e  y be omitted, in
f060: 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20   which case the 
f070: 72 65 73 75 6c 74 20 69 73 20 61 0a 73 69 6e 67  result is a.sing
f080: 6c 65 20 72 6f 77 20 63 6f 6e 73 69 73 74 69 6e  le row consistin
f090: 67 20 6f 66 20 74 68 65 20 76 61 6c 75 65 73 20  g of the values 
f0a0: 6f 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  of the expressio
f0b0: 6e 20 6c 69 73 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70  n list..</p>..<p
f0c0: 3e 54 68 65 20 57 48 45 52 45 20 63 6c 61 75 73  >The WHERE claus
f0d0: 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  e can be used to
f0e0: 20 6c 69 6d 69 74 20 74 68 65 20 6e 75 6d 62 65   limit the numbe
f0f0: 72 20 6f 66 20 72 6f 77 73 20 6f 76 65 72 0a 77  r of rows over.w
f100: 68 69 63 68 20 74 68 65 20 71 75 65 72 79 20 6f  hich the query o
f110: 70 65 72 61 74 65 73 2e 3c 2f 70 3e 0a 0a 3c 70  perates.</p>..<p
f120: 3e 54 68 65 20 47 52 4f 55 50 20 42 59 20 63 6c  >The GROUP BY cl
f130: 61 75 73 65 73 20 63 61 75 73 65 73 20 6f 6e 65  auses causes one
f140: 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66   or more rows of
f150: 20 74 68 65 20 72 65 73 75 6c 74 20 74 6f 0a 62   the result to.b
f160: 65 20 63 6f 6d 62 69 6e 65 64 20 69 6e 74 6f 20  e combined into 
f170: 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 6f 66 20  a single row of 
f180: 6f 75 74 70 75 74 2e 20 20 54 68 69 73 20 69 73  output.  This is
f190: 20 65 73 70 65 63 69 61 6c 6c 79 20 75 73 65 66   especially usef
f1a0: 75 6c 0a 77 68 65 6e 20 74 68 65 20 72 65 73 75  ul.when the resu
f1b0: 6c 74 20 63 6f 6e 74 61 69 6e 73 20 61 67 67 72  lt contains aggr
f1c0: 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 2e  egate functions.
f1d0: 20 20 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e    The expression
f1e0: 73 20 69 6e 0a 74 68 65 20 47 52 4f 55 50 20 42  s in.the GROUP B
f1f0: 59 20 63 6c 61 75 73 65 20 64 6f 20 3c 65 6d 3e  Y clause do <em>
f200: 6e 6f 74 3c 2f 65 6d 3e 20 68 61 76 65 20 74 6f  not</em> have to
f210: 20 62 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20   be expressions 
f220: 74 68 61 74 0a 61 70 70 65 61 72 20 69 6e 20 74  that.appear in t
f230: 68 65 20 72 65 73 75 6c 74 2e 20 20 54 68 65 20  he result.  The 
f240: 48 41 56 49 4e 47 20 63 6c 61 75 73 65 20 69 73  HAVING clause is
f250: 20 73 69 6d 69 6c 61 72 20 74 6f 20 57 48 45 52   similar to WHER
f260: 45 20 65 78 63 65 70 74 0a 74 68 61 74 20 48 41  E except.that HA
f270: 56 49 4e 47 20 61 70 70 6c 69 65 73 20 61 66 74  VING applies aft
f280: 65 72 20 67 72 6f 75 70 69 6e 67 20 68 61 73 20  er grouping has 
f290: 6f 63 63 75 72 72 65 64 2e 20 20 54 68 65 20 48  occurred.  The H
f2a0: 41 56 49 4e 47 20 65 78 70 72 65 73 73 69 6f 6e  AVING expression
f2b0: 0a 6d 61 79 20 72 65 66 65 72 20 74 6f 20 76 61  .may refer to va
f2c0: 6c 75 65 73 2c 20 65 76 65 6e 20 61 67 67 72 65  lues, even aggre
f2d0: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 2c 20  gate functions, 
f2e0: 74 68 61 74 20 61 72 65 20 6e 6f 74 20 69 6e 20  that are not in 
f2f0: 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70 3e 0a  the result.</p>.
f300: 0a 3c 70 3e 54 68 65 20 4f 52 44 45 52 20 42 59  .<p>The ORDER BY
f310: 20 63 6c 61 75 73 65 20 63 61 75 73 65 73 20 74   clause causes t
f320: 68 65 20 6f 75 74 70 75 74 20 72 6f 77 73 20 74  he output rows t
f330: 6f 20 62 65 20 73 6f 72 74 65 64 2e 20 20 0a 54  o be sorted.  .T
f340: 68 65 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 4f  he argument to O
f350: 52 44 45 52 20 42 59 20 69 73 20 61 20 6c 69 73  RDER BY is a lis
f360: 74 20 6f 66 20 65 78 70 72 65 73 73 69 6f 6e 73  t of expressions
f370: 20 74 68 61 74 20 61 72 65 20 75 73 65 64 20 61   that are used a
f380: 73 20 74 68 65 0a 6b 65 79 20 66 6f 72 20 74 68  s the.key for th
f390: 65 20 73 6f 72 74 2e 20 20 54 68 65 20 65 78 70  e sort.  The exp
f3a0: 72 65 73 73 69 6f 6e 73 20 64 6f 20 6e 6f 74 20  ressions do not 
f3b0: 68 61 76 65 20 74 6f 20 62 65 20 70 61 72 74 20  have to be part 
f3c0: 6f 66 20 74 68 65 0a 72 65 73 75 6c 74 20 66 6f  of the.result fo
f3d0: 72 20 61 20 73 69 6d 70 6c 65 20 53 45 4c 45 43  r a simple SELEC
f3e0: 54 2c 20 62 75 74 20 69 6e 20 61 20 63 6f 6d 70  T, but in a comp
f3f0: 6f 75 6e 64 20 53 45 4c 45 43 54 20 65 61 63 68  ound SELECT each
f400: 20 73 6f 72 74 0a 65 78 70 72 65 73 73 69 6f 6e   sort.expression
f410: 20 6d 75 73 74 20 65 78 61 63 74 6c 79 20 6d 61   must exactly ma
f420: 74 63 68 20 6f 6e 65 20 6f 66 20 74 68 65 20 72  tch one of the r
f430: 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20 20  esult columns.  
f440: 45 61 63 68 0a 73 6f 72 74 20 65 78 70 72 65 73  Each.sort expres
f450: 73 69 6f 6e 20 6d 61 79 20 62 65 20 6f 70 74 69  sion may be opti
f460: 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65 64 20  onally followed 
f470: 62 79 20 61 20 43 4f 4c 4c 41 54 45 20 6b 65 79  by a COLLATE key
f480: 77 6f 72 64 20 61 6e 64 0a 74 68 65 20 6e 61 6d  word and.the nam
f490: 65 20 6f 66 20 61 20 63 6f 6c 6c 61 74 69 6e 67  e of a collating
f4a0: 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 64 20 66   function used f
f4b0: 6f 72 20 6f 72 64 65 72 69 6e 67 20 74 65 78 74  or ordering text
f4c0: 20 61 6e 64 2f 6f 72 0a 6b 65 79 77 6f 72 64 73   and/or.keywords
f4d0: 20 41 53 43 20 6f 72 20 44 45 53 43 20 74 6f 20   ASC or DESC to 
f4e0: 73 70 65 63 69 66 79 20 74 68 65 20 73 6f 72 74  specify the sort
f4f0: 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e   order.</p>..<p>
f500: 54 68 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65  The LIMIT clause
f510: 20 70 6c 61 63 65 73 20 61 6e 20 75 70 70 65 72   places an upper
f520: 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65 20 6e 75   bound on the nu
f530: 6d 62 65 72 20 6f 66 20 72 6f 77 73 0a 72 65 74  mber of rows.ret
f540: 75 72 6e 65 64 20 69 6e 20 74 68 65 20 72 65 73  urned in the res
f550: 75 6c 74 2e 20 20 41 20 6e 65 67 61 74 69 76 65  ult.  A negative
f560: 20 4c 49 4d 49 54 20 69 6e 64 69 63 61 74 65 73   LIMIT indicates
f570: 20 6e 6f 20 75 70 70 65 72 20 62 6f 75 6e 64 2e   no upper bound.
f580: 0a 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4f 46  .The optional OF
f590: 46 53 45 54 20 66 6f 6c 6c 6f 77 69 6e 67 20 4c  FSET following L
f5a0: 49 4d 49 54 20 73 70 65 63 69 66 69 65 73 20 68  IMIT specifies h
f5b0: 6f 77 20 6d 61 6e 79 0a 72 6f 77 73 20 74 6f 20  ow many.rows to 
f5c0: 73 6b 69 70 20 61 74 20 74 68 65 20 62 65 67 69  skip at the begi
f5d0: 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 72 65 73  nning of the res
f5e0: 75 6c 74 20 73 65 74 2e 0a 49 6e 20 61 20 63 6f  ult set..In a co
f5f0: 6d 70 6f 75 6e 64 20 71 75 65 72 79 2c 20 74 68  mpound query, th
f600: 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 6d  e LIMIT clause m
f610: 61 79 20 6f 6e 6c 79 20 61 70 70 65 61 72 20 6f  ay only appear o
f620: 6e 20 74 68 65 0a 66 69 6e 61 6c 20 53 45 4c 45  n the.final SELE
f630: 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 0a 54 68  CT statement..Th
f640: 65 20 6c 69 6d 69 74 20 69 73 20 61 70 70 6c 69  e limit is appli
f650: 65 64 20 74 6f 20 74 68 65 20 65 6e 74 69 72 65  ed to the entire
f660: 20 71 75 65 72 79 20 6e 6f 74 0a 74 6f 20 74 68   query not.to th
f670: 65 20 69 6e 64 69 76 69 64 75 61 6c 20 53 45 4c  e individual SEL
f680: 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20 74 6f  ECT statement to
f690: 20 77 68 69 63 68 20 69 74 20 69 73 20 61 74 74   which it is att
f6a0: 61 63 68 65 64 2e 0a 4e 6f 74 65 20 74 68 61 74  ached..Note that
f6b0: 20 69 66 20 74 68 65 20 4f 46 46 53 45 54 20 6b   if the OFFSET k
f6c0: 65 79 77 6f 72 64 20 69 73 20 75 73 65 64 20 69  eyword is used i
f6d0: 6e 20 74 68 65 20 4c 49 4d 49 54 20 63 6c 61 75  n the LIMIT clau
f6e0: 73 65 2c 20 74 68 65 6e 20 74 68 65 0a 6c 69 6d  se, then the.lim
f6f0: 69 74 20 69 73 20 74 68 65 20 66 69 72 73 74 20  it is the first 
f700: 6e 75 6d 62 65 72 20 61 6e 64 20 74 68 65 20 6f  number and the o
f710: 66 66 73 65 74 20 69 73 20 74 68 65 20 73 65 63  ffset is the sec
f720: 6f 6e 64 20 6e 75 6d 62 65 72 2e 20 20 49 66 20  ond number.  If 
f730: 61 0a 63 6f 6d 6d 61 20 69 73 20 75 73 65 64 20  a.comma is used 
f740: 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 4f  instead of the O
f750: 46 46 53 45 54 20 6b 65 79 77 6f 72 64 2c 20 74  FFSET keyword, t
f760: 68 65 6e 20 74 68 65 20 6f 66 66 73 65 74 20 69  hen the offset i
f770: 73 20 74 68 65 0a 66 69 72 73 74 20 6e 75 6d 62  s the.first numb
f780: 65 72 20 61 6e 64 20 74 68 65 20 6c 69 6d 69 74  er and the limit
f790: 20 69 73 20 74 68 65 20 73 65 63 6f 6e 64 20 6e   is the second n
f7a0: 75 6d 62 65 72 2e 20 20 54 68 69 73 20 73 65 65  umber.  This see
f7b0: 6d 69 6e 67 0a 63 6f 6e 74 72 61 64 69 74 69 6f  ming.contraditio
f7c0: 6e 20 69 73 20 69 6e 74 65 6e 74 69 6f 6e 61 6c  n is intentional
f7d0: 20 2d 20 69 74 20 6d 61 78 69 6d 69 7a 65 73 20   - it maximizes 
f7e0: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69  compatibility wi
f7f0: 74 68 20 6c 65 67 61 63 79 0a 53 51 4c 20 64 61  th legacy.SQL da
f800: 74 61 62 61 73 65 20 73 79 73 74 65 6d 73 2e 0a  tabase systems..
f810: 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6d 70 6f  </p>..<p>A compo
f820: 75 6e 64 20 53 45 4c 45 43 54 20 69 73 20 66 6f  und SELECT is fo
f830: 72 6d 65 64 20 66 72 6f 6d 20 74 77 6f 20 6f 72  rmed from two or
f840: 20 6d 6f 72 65 20 73 69 6d 70 6c 65 20 53 45 4c   more simple SEL
f850: 45 43 54 73 20 63 6f 6e 6e 65 63 74 65 64 0a 62  ECTs connected.b
f860: 79 20 6f 6e 65 20 6f 66 20 74 68 65 20 6f 70 65  y one of the ope
f870: 72 61 74 6f 72 73 20 55 4e 49 4f 4e 2c 20 55 4e  rators UNION, UN
f880: 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52 53 45  ION ALL, INTERSE
f890: 43 54 2c 20 6f 72 20 45 58 43 45 50 54 2e 20 20  CT, or EXCEPT.  
f8a0: 49 6e 0a 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45  In.a compound SE
f8b0: 4c 45 43 54 2c 20 61 6c 6c 20 74 68 65 20 63 6f  LECT, all the co
f8c0: 6e 73 74 69 74 75 65 6e 74 20 53 45 4c 45 43 54  nstituent SELECT
f8d0: 73 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 74  s must specify t
f8e0: 68 65 0a 73 61 6d 65 20 6e 75 6d 62 65 72 20 6f  he.same number o
f8f0: 66 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73  f result columns
f900: 2e 20 20 54 68 65 72 65 20 6d 61 79 20 62 65 20  .  There may be 
f910: 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 4f 52  only a single OR
f920: 44 45 52 20 42 59 0a 63 6c 61 75 73 65 20 61 74  DER BY.clause at
f930: 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20   the end of the 
f940: 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 2e  compound SELECT.
f950: 20 20 54 68 65 20 55 4e 49 4f 4e 20 61 6e 64 20    The UNION and 
f960: 55 4e 49 4f 4e 20 41 4c 4c 0a 6f 70 65 72 61 74  UNION ALL.operat
f970: 6f 72 73 20 63 6f 6d 62 69 6e 65 20 74 68 65 20  ors combine the 
f980: 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 20 53  results of the S
f990: 45 4c 45 43 54 73 20 74 6f 20 74 68 65 20 72 69  ELECTs to the ri
f9a0: 67 68 74 20 61 6e 64 20 6c 65 66 74 20 69 6e 74  ght and left int
f9b0: 6f 0a 61 20 73 69 6e 67 6c 65 20 62 69 67 20 74  o.a single big t
f9c0: 61 62 6c 65 2e 20 20 54 68 65 20 64 69 66 66 65  able.  The diffe
f9d0: 72 65 6e 63 65 20 69 73 20 74 68 61 74 20 69 6e  rence is that in
f9e0: 20 55 4e 49 4f 4e 20 61 6c 6c 20 72 65 73 75 6c   UNION all resul
f9f0: 74 20 72 6f 77 73 0a 61 72 65 20 64 69 73 74 69  t rows.are disti
fa00: 6e 63 74 20 77 68 65 72 65 20 69 6e 20 55 4e 49  nct where in UNI
fa10: 4f 4e 20 41 4c 4c 20 74 68 65 72 65 20 6d 61 79  ON ALL there may
fa20: 20 62 65 20 64 75 70 6c 69 63 61 74 65 73 2e 0a   be duplicates..
fa30: 54 68 65 20 49 4e 54 45 52 53 45 43 54 20 6f 70  The INTERSECT op
fa40: 65 72 61 74 6f 72 20 74 61 6b 65 73 20 74 68 65  erator takes the
fa50: 20 69 6e 74 65 72 73 65 63 74 69 6f 6e 20 6f 66   intersection of
fa60: 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20   the results of 
fa70: 74 68 65 0a 6c 65 66 74 20 61 6e 64 20 72 69 67  the.left and rig
fa80: 68 74 20 53 45 4c 45 43 54 73 2e 20 20 45 58 43  ht SELECTs.  EXC
fa90: 45 50 54 20 74 61 6b 65 73 20 74 68 65 20 72 65  EPT takes the re
faa0: 73 75 6c 74 20 6f 66 20 6c 65 66 74 20 53 45 4c  sult of left SEL
fab0: 45 43 54 20 61 66 74 65 72 0a 72 65 6d 6f 76 69  ECT after.removi
fac0: 6e 67 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f  ng the results o
fad0: 66 20 74 68 65 20 72 69 67 68 74 20 53 45 4c 45  f the right SELE
fae0: 43 54 2e 20 20 57 68 65 6e 20 74 68 72 65 65 20  CT.  When three 
faf0: 61 72 65 20 6d 6f 72 65 20 53 45 4c 45 43 54 73  are more SELECTs
fb00: 0a 61 72 65 20 63 6f 6e 6e 65 63 74 65 64 20 69  .are connected i
fb10: 6e 74 6f 20 61 20 63 6f 6d 70 6f 75 6e 64 2c 20  nto a compound, 
fb20: 74 68 65 79 20 67 72 6f 75 70 20 66 72 6f 6d 20  they group from 
fb30: 6c 65 66 74 20 74 6f 20 72 69 67 68 74 2e 3c 2f  left to right.</
fb40: 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 55  p>.}...Section U
fb50: 50 44 41 54 45 20 75 70 64 61 74 65 0a 0a 53 79  PDATE update..Sy
fb60: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
fb70: 65 6e 74 7d 20 7b 0a 55 50 44 41 54 45 20 5b 20  ent} {.UPDATE [ 
fb80: 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67  OR <conflict-alg
fb90: 6f 72 69 74 68 6d 3e 20 5d 20 5b 3c 64 61 74 61  orithm> ] [<data
fba0: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74  base-name> .] <t
fbb0: 61 62 6c 65 2d 6e 61 6d 65 3e 0a 53 45 54 20 3c  able-name>.SET <
fbc0: 61 73 73 69 67 6e 6d 65 6e 74 3e 20 5b 2c 20 3c  assignment> [, <
fbd0: 61 73 73 69 67 6e 6d 65 6e 74 3e 5d 2a 0a 5b 57  assignment>]*.[W
fbe0: 48 45 52 45 20 3c 65 78 70 72 3e 5d 0a 7d 20 7b  HERE <expr>].} {
fbf0: 61 73 73 69 67 6e 6d 65 6e 74 7d 20 7b 0a 3c 63  assignment} {.<c
fc00: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 3d 20 3c 65  olumn-name> = <e
fc10: 78 70 72 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  xpr>.}..puts {.<
fc20: 70 3e 54 68 65 20 55 50 44 41 54 45 20 73 74 61  p>The UPDATE sta
fc30: 74 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74  tement is used t
fc40: 6f 20 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c  o change the val
fc50: 75 65 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  ue of columns in
fc60: 20 0a 73 65 6c 65 63 74 65 64 20 72 6f 77 73 20   .selected rows 
fc70: 6f 66 20 61 20 74 61 62 6c 65 2e 20 20 45 61 63  of a table.  Eac
fc80: 68 20 61 73 73 69 67 6e 6d 65 6e 74 20 69 6e 20  h assignment in 
fc90: 61 6e 20 55 50 44 41 54 45 20 73 70 65 63 69 66  an UPDATE specif
fca0: 69 65 73 0a 61 20 63 6f 6c 75 6d 6e 20 6e 61 6d  ies.a column nam
fcb0: 65 20 74 6f 20 74 68 65 20 6c 65 66 74 20 6f 66  e to the left of
fcc0: 20 74 68 65 20 65 71 75 61 6c 73 20 73 69 67 6e   the equals sign
fcd0: 20 61 6e 64 20 61 6e 20 61 72 62 69 74 72 61 72   and an arbitrar
fce0: 79 20 65 78 70 72 65 73 73 69 6f 6e 0a 74 6f 20  y expression.to 
fcf0: 74 68 65 20 72 69 67 68 74 2e 20 20 54 68 65 20  the right.  The 
fd00: 65 78 70 72 65 73 73 69 6f 6e 73 20 6d 61 79 20  expressions may 
fd10: 75 73 65 20 74 68 65 20 76 61 6c 75 65 73 20 6f  use the values o
fd20: 66 20 6f 74 68 65 72 20 63 6f 6c 75 6d 6e 73 2e  f other columns.
fd30: 0a 41 6c 6c 20 65 78 70 72 65 73 73 69 6f 6e 73  .All expressions
fd40: 20 61 72 65 20 65 76 61 6c 75 61 74 65 64 20 62   are evaluated b
fd50: 65 66 6f 72 65 20 61 6e 79 20 61 73 73 69 67 6e  efore any assign
fd60: 6d 65 6e 74 73 20 61 72 65 20 6d 61 64 65 2e 0a  ments are made..
fd70: 41 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63  A WHERE clause c
fd80: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 72 65  an be used to re
fd90: 73 74 72 69 63 74 20 77 68 69 63 68 20 72 6f 77  strict which row
fda0: 73 20 61 72 65 20 75 70 64 61 74 65 64 2e 3c 2f  s are updated.</
fdb0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f  p>..<p>The optio
fdc0: 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61  nal conflict-cla
fdd0: 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73  use allows the s
fde0: 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20  pecification of 
fdf0: 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63  an alternative.c
fe00: 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69  onstraint confli
fe10: 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
fe20: 67 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20 64  gorithm to use d
fe30: 75 72 69 6e 67 20 74 68 69 73 20 6f 6e 65 20 63  uring this one c
fe40: 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20  ommand..See the 
fe50: 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c  section titled.<
fe60: 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63  a href="#conflic
fe70: 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f  t">ON CONFLICT</
fe80: 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  a> for additiona
fe90: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f  l information.</
fea0: 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 56  p>.}...Section V
feb0: 41 43 55 55 4d 20 76 61 63 75 75 6d 0a 0a 53 79  ACUUM vacuum..Sy
fec0: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
fed0: 65 6e 74 7d 20 7b 0a 56 41 43 55 55 4d 20 5b 3c  ent} {.VACUUM [<
fee0: 69 6e 64 65 78 2d 6f 72 2d 74 61 62 6c 65 2d 6e  index-or-table-n
fef0: 61 6d 65 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a  ame>].}..puts {.
ff00: 3c 70 3e 54 68 65 20 56 41 43 55 55 4d 20 63 6f  <p>The VACUUM co
ff10: 6d 6d 61 6e 64 20 69 73 20 61 6e 20 53 51 4c 69  mmand is an SQLi
ff20: 74 65 20 65 78 74 65 6e 73 69 6f 6e 20 6d 6f 64  te extension mod
ff30: 65 6c 65 64 20 61 66 74 65 72 20 61 20 73 69 6d  eled after a sim
ff40: 69 6c 61 72 0a 63 6f 6d 6d 61 6e 64 20 66 6f 75  ilar.command fou
ff50: 6e 64 20 69 6e 20 50 6f 73 74 67 72 65 53 51 4c  nd in PostgreSQL
ff60: 2e 20 20 49 66 20 56 41 43 55 55 4d 20 69 73 20  .  If VACUUM is 
ff70: 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 68 65  invoked with the
ff80: 20 6e 61 6d 65 20 6f 66 20 61 0a 74 61 62 6c 65   name of a.table
ff90: 20 6f 72 20 69 6e 64 65 78 20 74 68 65 6e 20 69   or index then i
ffa0: 74 20 69 73 20 73 75 70 70 6f 73 65 20 74 6f 20  t is suppose to 
ffb0: 63 6c 65 61 6e 20 75 70 20 74 68 65 20 6e 61 6d  clean up the nam
ffc0: 65 64 20 74 61 62 6c 65 20 6f 72 20 69 6e 64 65  ed table or inde
ffd0: 78 2e 0a 49 6e 20 76 65 72 73 69 6f 6e 20 31 2e  x..In version 1.
ffe0: 30 20 6f 66 20 53 51 4c 69 74 65 2c 20 74 68 65  0 of SQLite, the
fff0: 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20   VACUUM command 
10000 77 6f 75 6c 64 20 69 6e 76 6f 6b 65 20 0a 3c 62  would invoke .<b
10010 3e 67 64 62 6d 5f 72 65 6f 72 67 61 6e 69 7a 65  >gdbm_reorganize
10020 28 29 3c 2f 62 3e 20 74 6f 20 63 6c 65 61 6e 20  ()</b> to clean 
10030 75 70 20 74 68 65 20 62 61 63 6b 65 6e 64 20 64  up the backend d
10040 61 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70  atabase file.</p
10050 3e 0a 0a 3c 70 3e 0a 56 41 43 55 55 4d 20 62 65  >..<p>.VACUUM be
10060 63 61 6d 65 20 61 20 6e 6f 2d 6f 70 20 77 68 65  came a no-op whe
10070 6e 20 74 68 65 20 47 44 42 4d 20 62 61 63 6b 65  n the GDBM backe
10080 6e 64 20 77 61 73 20 72 65 6d 6f 76 65 64 20 66  nd was removed f
10090 72 6f 6d 0a 53 51 4c 49 54 45 20 69 6e 20 76 65  rom.SQLITE in ve
100a0 72 73 69 6f 6e 20 32 2e 30 2e 30 2e 0a 56 41 43  rsion 2.0.0..VAC
100b0 55 55 4d 20 77 61 73 20 72 65 69 6d 70 6c 65 6d  UUM was reimplem
100c0 65 6e 74 65 64 20 69 6e 20 76 65 72 73 69 6f 6e  ented in version
100d0 20 32 2e 38 2e 31 2e 0a 54 68 65 20 69 6e 64 65   2.8.1..The inde
100e0 78 20 6f 72 20 74 61 62 6c 65 20 6e 61 6d 65 20  x or table name 
100f0 61 72 67 75 6d 65 6e 74 20 69 73 20 6e 6f 77 20  argument is now 
10100 69 67 6e 6f 72 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c  ignored..</p>..<
10110 70 3e 57 68 65 6e 20 61 6e 20 6f 62 6a 65 63 74  p>When an object
10120 20 28 74 61 62 6c 65 2c 20 69 6e 64 65 78 2c 20   (table, index, 
10130 6f 72 20 74 72 69 67 67 65 72 29 20 69 73 20 64  or trigger) is d
10140 72 6f 70 70 65 64 20 66 72 6f 6d 20 74 68 65 20  ropped from the 
10150 0a 64 61 74 61 62 61 73 65 2c 20 69 74 20 6c 65  .database, it le
10160 61 76 65 73 20 62 65 68 69 6e 64 20 65 6d 70 74  aves behind empt
10170 79 20 73 70 61 63 65 2e 20 20 54 68 69 73 20 6d  y space.  This m
10180 61 6b 65 73 20 74 68 65 20 64 61 74 61 62 61 73  akes the databas
10190 65 20 0a 66 69 6c 65 20 6c 61 72 67 65 72 20 74  e .file larger t
101a0 68 61 6e 20 69 74 20 6e 65 65 64 73 20 74 6f 20  han it needs to 
101b0 62 65 2c 20 62 75 74 20 63 61 6e 20 73 70 65 65  be, but can spee
101c0 64 20 75 70 20 69 6e 73 65 72 74 73 2e 20 20 49  d up inserts.  I
101d0 6e 20 74 69 6d 65 20 0a 69 6e 73 65 72 74 73 20  n time .inserts 
101e0 61 6e 64 20 64 65 6c 65 74 65 73 20 63 61 6e 20  and deletes can 
101f0 6c 65 61 76 65 20 74 68 65 20 64 61 74 61 62 61  leave the databa
10200 73 65 20 66 69 6c 65 20 73 74 72 75 63 74 75 72  se file structur
10210 65 20 66 72 61 67 6d 65 6e 74 65 64 2c 20 0a 77  e fragmented, .w
10220 68 69 63 68 20 73 6c 6f 77 73 20 64 6f 77 6e 20  hich slows down 
10230 64 69 73 6b 20 61 63 63 65 73 73 20 74 6f 20 74  disk access to t
10240 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 74  he database cont
10250 65 6e 74 73 2e 0a 0a 54 68 65 20 56 41 43 55 55  ents...The VACUU
10260 4d 20 63 6f 6d 6d 61 6e 64 20 63 6c 65 61 6e 73  M command cleans
10270 0a 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61  .the main databa
10280 73 65 20 62 79 20 63 6f 70 79 69 6e 67 20 69 74  se by copying it
10290 73 20 63 6f 6e 74 65 6e 74 73 20 74 6f 20 61 20  s contents to a 
102a0 74 65 6d 70 6f 72 61 72 79 20 64 61 74 61 62 61  temporary databa
102b0 73 65 20 66 69 6c 65 20 61 6e 64 20 0a 72 65 6c  se file and .rel
102c0 6f 61 64 69 6e 67 20 74 68 65 20 6f 72 69 67 69  oading the origi
102d0 6e 61 6c 20 64 61 74 61 62 61 73 65 20 66 69 6c  nal database fil
102e0 65 20 66 72 6f 6d 20 74 68 65 20 63 6f 70 79 2e  e from the copy.
102f0 20 20 54 68 69 73 20 65 6c 69 6d 69 6e 61 74 65    This eliminate
10300 73 20 0a 66 72 65 65 20 70 61 67 65 73 2c 20 20  s .free pages,  
10310 61 6c 69 67 6e 73 20 74 61 62 6c 65 20 64 61 74  aligns table dat
10320 61 20 74 6f 20 62 65 20 63 6f 6e 74 69 67 75 6f  a to be contiguo
10330 75 73 2c 20 61 6e 64 20 6f 74 68 65 72 77 69 73  us, and otherwis
10340 65 20 63 6c 65 61 6e 73 20 0a 75 70 20 74 68 65  e cleans .up the
10350 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 73   database file s
10360 74 72 75 63 74 75 72 65 2e 20 49 74 20 69 73 20  tructure. It is 
10370 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74 6f 20  not possible to 
10380 70 65 72 66 6f 72 6d 20 74 68 65 20 73 61 6d 65  perform the same
10390 0a 70 72 6f 63 65 73 73 20 6f 6e 20 61 6e 20 61  .process on an a
103a0 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
103b0 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54   file.</p>..<p>T
103c0 68 69 73 20 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c  his command will
103d0 20 66 61 69 6c 20 69 66 20 74 68 65 72 65 20 69   fail if there i
103e0 73 20 61 6e 20 61 63 74 69 76 65 20 74 72 61 6e  s an active tran
103f0 73 61 63 74 69 6f 6e 2e 20 20 54 68 69 73 20 0a  saction.  This .
10400 63 6f 6d 6d 61 6e 64 20 68 61 73 20 6e 6f 20 65  command has no e
10410 66 66 65 63 74 20 6f 6e 20 61 6e 20 69 6e 2d 6d  ffect on an in-m
10420 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 2e 3c  emory database.<
10430 2f 70 3e 0a 0a 3c 70 3e 41 73 20 6f 66 20 53 51  /p>..<p>As of SQ
10440 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 31  Lite version 3.1
10450 2c 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65  , an alternative
10460 20 74 6f 20 75 73 69 6e 67 20 74 68 65 20 56 41   to using the VA
10470 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 0a 69 73 20  CUUM command.is 
10480 61 75 74 6f 2d 76 61 63 75 75 6d 20 6d 6f 64 65  auto-vacuum mode
10490 2c 20 65 6e 61 62 6c 65 64 20 75 73 69 6e 67 20  , enabled using 
104a0 74 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 70 72  the .<a href="pr
104b0 61 67 6d 61 2e 68 74 6d 6c 23 70 72 61 67 6d 61  agma.html#pragma
104c0 5f 61 75 74 6f 5f 76 61 63 75 75 6d 22 3e 61 75  _auto_vacuum">au
104d0 74 6f 5f 76 61 63 75 75 6d 20 70 72 61 67 6d 61  to_vacuum pragma
104e0 3c 2f 61 3e 2e 3c 2f 70 3e 0a 7d 0a 0a 23 20 41  </a>.</p>.}..# A
104f0 20 6c 69 73 74 20 6f 66 20 6b 65 79 77 6f 72 64   list of keyword
10500 73 2e 20 20 41 20 61 73 74 65 72 69 73 6b 20 6f  s.  A asterisk o
10510 63 63 75 72 73 20 61 66 74 65 72 20 74 68 65 20  ccurs after the 
10520 6b 65 79 77 6f 72 64 20 69 66 20 69 74 20 69 73  keyword if it is
10530 20 6f 6e 0a 23 20 74 68 65 20 66 61 6c 6c 62 61   on.# the fallba
10540 63 6b 20 6c 69 73 74 2e 0a 23 0a 73 65 74 20 6b  ck list..#.set k
10550 65 79 77 6f 72 64 5f 6c 69 73 74 20 5b 6c 73 6f  eyword_list [lso
10560 72 74 20 7b 0a 20 20 20 41 42 4f 52 54 2a 0a 20  rt {.   ABORT*. 
10570 20 20 41 46 54 45 52 2a 0a 20 20 20 41 4c 4c 0a    AFTER*.   ALL.
10580 20 20 20 41 4c 54 45 52 0a 20 20 20 41 4e 44 0a     ALTER.   AND.
10590 20 20 20 41 53 0a 20 20 20 41 53 43 2a 0a 20 20     AS.   ASC*.  
105a0 20 41 54 54 41 43 48 2a 0a 20 20 20 41 55 54 4f   ATTACH*.   AUTO
105b0 49 4e 43 52 45 4d 45 4e 54 0a 20 20 20 42 45 46  INCREMENT.   BEF
105c0 4f 52 45 2a 0a 20 20 20 42 45 47 49 4e 2a 0a 20  ORE*.   BEGIN*. 
105d0 20 20 42 45 54 57 45 45 4e 0a 20 20 20 42 59 0a    BETWEEN.   BY.
105e0 20 20 20 43 41 53 43 41 44 45 2a 0a 20 20 20 43     CASCADE*.   C
105f0 41 53 45 0a 20 20 20 43 48 45 43 4b 0a 20 20 20  ASE.   CHECK.   
10600 43 4f 4c 4c 41 54 45 0a 20 20 20 43 4f 4d 4d 49  COLLATE.   COMMI
10610 54 0a 20 20 20 43 4f 4e 46 4c 49 43 54 2a 0a 20  T.   CONFLICT*. 
10620 20 20 43 4f 4e 53 54 52 41 49 4e 54 0a 20 20 20    CONSTRAINT.   
10630 43 52 45 41 54 45 0a 20 20 20 43 52 4f 53 53 0a  CREATE.   CROSS.
10640 20 20 20 43 55 52 52 45 4e 54 5f 44 41 54 45 2a     CURRENT_DATE*
10650 0a 20 20 20 43 55 52 52 45 4e 54 5f 54 49 4d 45  .   CURRENT_TIME
10660 2a 0a 20 20 20 43 55 52 52 45 4e 54 5f 54 49 4d  *.   CURRENT_TIM
10670 45 53 54 41 4d 50 2a 0a 20 20 20 44 41 54 41 42  ESTAMP*.   DATAB
10680 41 53 45 2a 0a 20 20 20 44 45 46 41 55 4c 54 0a  ASE*.   DEFAULT.
10690 20 20 20 44 45 46 45 52 52 45 44 2a 0a 20 20 20     DEFERRED*.   
106a0 44 45 46 45 52 52 41 42 4c 45 0a 20 20 20 44 45  DEFERRABLE.   DE
106b0 4c 45 54 45 0a 20 20 20 44 45 53 43 2a 0a 20 20  LETE.   DESC*.  
106c0 20 44 45 54 41 43 48 2a 0a 20 20 20 44 49 53 54   DETACH*.   DIST
106d0 49 4e 43 54 0a 20 20 20 44 52 4f 50 0a 20 20 20  INCT.   DROP.   
106e0 45 4e 44 2a 0a 20 20 20 45 41 43 48 2a 0a 20 20  END*.   EACH*.  
106f0 20 45 4c 53 45 0a 20 20 20 45 53 43 41 50 45 0a   ELSE.   ESCAPE.
10700 20 20 20 45 58 43 45 50 54 0a 20 20 20 45 58 43     EXCEPT.   EXC
10710 4c 55 53 49 56 45 2a 0a 20 20 20 45 58 50 4c 41  LUSIVE*.   EXPLA
10720 49 4e 2a 0a 20 20 20 46 41 49 4c 2a 0a 20 20 20  IN*.   FAIL*.   
10730 46 4f 52 2a 0a 20 20 20 46 4f 52 45 49 47 4e 0a  FOR*.   FOREIGN.
10740 20 20 20 46 52 4f 4d 0a 20 20 20 46 55 4c 4c 0a     FROM.   FULL.
10750 20 20 20 47 4c 4f 42 2a 0a 20 20 20 47 52 4f 55     GLOB*.   GROU
10760 50 0a 20 20 20 48 41 56 49 4e 47 0a 20 20 20 49  P.   HAVING.   I
10770 47 4e 4f 52 45 2a 0a 20 20 20 49 4d 4d 45 44 49  GNORE*.   IMMEDI
10780 41 54 45 2a 0a 20 20 20 49 4e 0a 20 20 20 49 4e  ATE*.   IN.   IN
10790 44 45 58 0a 20 20 20 49 4e 49 54 49 41 4c 4c 59  DEX.   INITIALLY
107a0 2a 0a 20 20 20 49 4e 4e 45 52 0a 20 20 20 49 4e  *.   INNER.   IN
107b0 53 45 52 54 0a 20 20 20 49 4e 53 54 45 41 44 2a  SERT.   INSTEAD*
107c0 0a 20 20 20 49 4e 54 45 52 53 45 43 54 0a 20 20  .   INTERSECT.  
107d0 20 49 4e 54 4f 0a 20 20 20 49 53 0a 20 20 20 49   INTO.   IS.   I
107e0 53 4e 55 4c 4c 0a 20 20 20 4a 4f 49 4e 0a 20 20  SNULL.   JOIN.  
107f0 20 4b 45 59 2a 0a 20 20 20 4c 45 46 54 0a 20 20   KEY*.   LEFT.  
10800 20 4c 49 4b 45 2a 0a 20 20 20 4c 49 4d 49 54 0a   LIKE*.   LIMIT.
10810 20 20 20 4d 41 54 43 48 2a 0a 20 20 20 4e 41 54     MATCH*.   NAT
10820 55 52 41 4c 0a 20 20 20 4e 4f 54 0a 20 20 20 4e  URAL.   NOT.   N
10830 4f 54 4e 55 4c 4c 0a 20 20 20 4e 55 4c 4c 0a 20  OTNULL.   NULL. 
10840 20 20 4f 46 2a 0a 20 20 20 4f 46 46 53 45 54 2a    OF*.   OFFSET*
10850 0a 20 20 20 4f 4e 0a 20 20 20 4f 52 0a 20 20 20  .   ON.   OR.   
10860 4f 52 44 45 52 0a 20 20 20 4f 55 54 45 52 0a 20  ORDER.   OUTER. 
10870 20 20 50 52 41 47 4d 41 2a 0a 20 20 20 50 52 49    PRAGMA*.   PRI
10880 4d 41 52 59 0a 20 20 20 52 41 49 53 45 2a 0a 20  MARY.   RAISE*. 
10890 20 20 52 45 46 45 52 45 4e 43 45 53 0a 20 20 20    REFERENCES.   
108a0 52 45 49 4e 44 45 58 2a 0a 20 20 20 52 45 4e 41  REINDEX*.   RENA
108b0 4d 45 2a 0a 20 20 20 52 45 50 4c 41 43 45 2a 0a  ME*.   REPLACE*.
108c0 20 20 20 52 45 53 54 52 49 43 54 2a 0a 20 20 20     RESTRICT*.   
108d0 52 49 47 48 54 0a 20 20 20 52 4f 4c 4c 42 41 43  RIGHT.   ROLLBAC
108e0 4b 0a 20 20 20 52 4f 57 2a 0a 20 20 20 53 45 4c  K.   ROW*.   SEL
108f0 45 43 54 0a 20 20 20 53 45 54 0a 20 20 20 53 54  ECT.   SET.   ST
10900 41 54 45 4d 45 4e 54 2a 0a 20 20 20 54 41 42 4c  ATEMENT*.   TABL
10910 45 0a 20 20 20 54 45 4d 50 2a 0a 20 20 20 54 45  E.   TEMP*.   TE
10920 4d 50 4f 52 41 52 59 2a 0a 20 20 20 54 48 45 4e  MPORARY*.   THEN
10930 0a 20 20 20 54 4f 0a 20 20 20 54 52 41 4e 53 41  .   TO.   TRANSA
10940 43 54 49 4f 4e 0a 20 20 20 54 52 49 47 47 45 52  CTION.   TRIGGER
10950 2a 0a 20 20 20 55 4e 49 4f 4e 0a 20 20 20 55 4e  *.   UNION.   UN
10960 49 51 55 45 0a 20 20 20 55 50 44 41 54 45 0a 20  IQUE.   UPDATE. 
10970 20 20 55 53 49 4e 47 0a 20 20 20 56 41 43 55 55    USING.   VACUU
10980 4d 2a 0a 20 20 20 56 41 4c 55 45 53 0a 20 20 20  M*.   VALUES.   
10990 56 49 45 57 2a 0a 20 20 20 57 48 45 4e 0a 20 20  VIEW*.   WHEN.  
109a0 20 57 48 45 52 45 0a 7d 5d 0a 0a 0a 0a 53 65 63   WHERE.}]....Sec
109b0 74 69 6f 6e 20 7b 53 51 4c 69 74 65 20 6b 65 79  tion {SQLite key
109c0 77 6f 72 64 73 7d 20 6b 65 79 77 6f 72 64 73 0a  words} keywords.
109d0 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 53  .puts {.<p>The S
109e0 51 4c 20 73 74 61 6e 64 61 72 64 20 73 70 65 63  QL standard spec
109f0 69 66 69 65 73 20 61 20 68 75 67 65 20 6e 75 6d  ifies a huge num
10a00 62 65 72 20 6f 66 20 6b 65 79 77 6f 72 64 73 20  ber of keywords 
10a10 77 68 69 63 68 20 6d 61 79 20 6e 6f 74 0a 62 65  which may not.be
10a20 20 75 73 65 64 20 61 73 20 74 68 65 20 6e 61 6d   used as the nam
10a30 65 73 20 6f 66 20 74 61 62 6c 65 73 2c 20 69 6e  es of tables, in
10a40 64 69 63 65 73 2c 20 63 6f 6c 75 6d 6e 73 2c 20  dices, columns, 
10a50 6f 72 20 64 61 74 61 62 61 73 65 73 2e 20 20 54  or databases.  T
10a60 68 65 0a 6c 69 73 74 20 69 73 20 73 6f 20 6c 6f  he.list is so lo
10a70 6e 67 20 74 68 61 74 20 66 65 77 20 70 65 6f 70  ng that few peop
10a80 6c 65 20 63 61 6e 20 72 65 6d 65 6d 62 65 72 20  le can remember 
10a90 74 68 65 6d 20 61 6c 6c 2e 20 20 46 6f 72 20 6d  them all.  For m
10aa0 6f 73 74 20 53 51 4c 0a 63 6f 64 65 2c 20 79 6f  ost SQL.code, yo
10ab0 75 72 20 73 61 66 65 73 74 20 62 65 74 20 69 73  ur safest bet is
10ac0 20 74 6f 20 6e 65 76 65 72 20 75 73 65 20 61 6e   to never use an
10ad0 79 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61  y English langua
10ae0 67 65 20 77 6f 72 64 20 61 73 20 74 68 65 0a 6e  ge word as the.n
10af0 61 6d 65 20 6f 66 20 61 20 75 73 65 72 2d 64 65  ame of a user-de
10b00 66 69 6e 65 64 20 6f 62 6a 65 63 74 2e 3c 2f 70  fined object.</p
10b10 3e 0a 0a 3c 70 3e 49 66 20 79 6f 75 20 77 61 6e  >..<p>If you wan
10b20 74 20 74 6f 20 75 73 65 20 61 20 6b 65 79 77 6f  t to use a keywo
10b30 72 64 20 61 73 20 61 20 6e 61 6d 65 2c 20 79 6f  rd as a name, yo
10b40 75 20 6e 65 65 64 20 74 6f 20 71 75 6f 74 65 20  u need to quote 
10b50 69 74 2e 20 20 54 68 65 72 65 0a 61 72 65 20 74  it.  There.are t
10b60 68 72 65 65 20 77 61 79 73 20 6f 66 20 71 75 6f  hree ways of quo
10b70 74 69 6e 67 20 6b 65 79 77 6f 72 64 73 20 69 6e  ting keywords in
10b80 20 53 51 4c 69 74 65 3a 3c 2f 70 3e 0a 0a 3c 70   SQLite:</p>..<p
10b90 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c  >.<blockquote>.<
10ba0 74 61 62 6c 65 3e 0a 3c 74 72 3e 09 3c 74 64 20  table>.<tr>.<td 
10bb0 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e  valign="top"><b>
10bc0 27 6b 65 79 77 6f 72 64 27 3c 2f 62 3e 3c 2f 74  'keyword'</b></t
10bd0 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22  d><td width="20"
10be0 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65  ></td>..<td>A ke
10bf0 79 77 6f 72 64 20 69 6e 20 73 69 6e 67 6c 65 20  yword in single 
10c00 71 75 6f 74 65 73 20 69 73 20 69 6e 74 65 72 70  quotes is interp
10c10 72 65 74 65 64 20 61 73 20 61 20 6c 69 74 65 72  reted as a liter
10c20 61 6c 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20  al string.      
10c30 20 20 69 66 20 69 74 20 6f 63 63 75 72 73 20 69    if it occurs i
10c40 6e 20 61 20 63 6f 6e 74 65 78 74 20 77 68 65 72  n a context wher
10c50 65 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72  e a string liter
10c60 61 6c 20 69 73 20 61 6c 6c 6f 77 65 64 2c 20 6f  al is allowed, o
10c70 74 68 65 72 77 69 73 65 0a 09 69 74 20 69 73 20  therwise..it is 
10c80 75 6e 64 65 72 73 74 6f 6f 64 20 61 73 20 61 6e  understood as an
10c90 20 69 64 65 6e 74 69 66 69 65 72 2e 3c 2f 74 64   identifier.</td
10ca0 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 09 3c 74 64 20  ></tr>.<tr>.<td 
10cb0 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e  valign="top"><b>
10cc0 22 6b 65 79 77 6f 72 64 22 3c 2f 62 3e 3c 2f 74  "keyword"</b></t
10cd0 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64  d><td></td>..<td
10ce0 3e 41 20 6b 65 79 77 6f 72 64 20 69 6e 20 64 6f  >A keyword in do
10cf0 75 62 6c 65 2d 71 75 6f 74 65 73 20 69 73 20 69  uble-quotes is i
10d00 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 6e  nterpreted as an
10d10 20 69 64 65 6e 74 69 66 69 65 72 20 69 66 0a 20   identifier if. 
10d20 20 20 20 20 20 20 20 69 74 20 6d 61 74 63 68 65         it matche
10d30 73 20 61 20 6b 6e 6f 77 6e 20 69 64 65 6e 74 69  s a known identi
10d40 66 69 65 72 2e 20 20 4f 74 68 65 72 77 69 73 65  fier.  Otherwise
10d50 20 69 74 20 69 73 20 69 6e 74 65 72 70 72 65 74   it is interpret
10d60 65 64 20 61 73 20 61 0a 20 20 20 20 20 20 20 20  ed as a.        
10d70 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 2e 3c  string literal.<
10d80 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 09 3c  /td></tr>.<tr>.<
10d90 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
10da0 3c 62 3e 5b 6b 65 79 77 6f 72 64 5d 3c 2f 62 3e  <b>[keyword]</b>
10db0 3c 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09  </td><td></td>..
10dc0 3c 74 64 3e 41 20 6b 65 79 77 6f 72 64 20 65 6e  <td>A keyword en
10dd0 63 6c 6f 73 65 64 20 69 6e 20 73 71 75 61 72 65  closed in square
10de0 20 62 72 61 63 6b 65 74 73 20 69 73 20 61 6c 77   brackets is alw
10df0 61 79 73 20 75 6e 64 65 72 73 74 6f 6f 64 20 61  ays understood a
10e00 73 0a 20 20 20 20 20 20 20 20 61 6e 20 69 64 65  s.        an ide
10e10 6e 74 69 66 69 65 72 2e 20 20 54 68 69 73 20 69  ntifier.  This i
10e20 73 20 6e 6f 74 20 73 74 61 6e 64 61 72 64 20 53  s not standard S
10e30 51 4c 2e 20 20 54 68 69 73 20 71 75 6f 74 69 6e  QL.  This quotin
10e40 67 20 6d 65 63 68 61 6e 69 73 6d 0a 20 20 20 20  g mechanism.    
10e50 20 20 20 20 69 73 20 75 73 65 64 20 62 79 20 4d      is used by M
10e60 53 20 41 63 63 65 73 73 20 61 6e 64 20 53 51 4c  S Access and SQL
10e70 20 53 65 72 76 65 72 20 61 6e 64 20 69 73 20 69   Server and is i
10e80 6e 63 6c 75 64 65 64 20 69 6e 20 53 51 4c 69 74  ncluded in SQLit
10e90 65 20 66 6f 72 0a 20 20 20 20 20 20 20 20 63 6f  e for.        co
10ea0 6d 70 61 74 69 62 69 6c 69 74 79 2e 3c 2f 74 64  mpatibility.</td
10eb0 3e 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a  ></tr>.</table>.
10ec0 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 2f  </blockquote>.</
10ed0 70 3e 0a 0a 3c 70 3e 51 75 6f 74 65 64 20 6b 65  p>..<p>Quoted ke
10ee0 79 77 6f 72 64 73 20 61 72 65 20 75 6e 61 65 73  ywords are unaes
10ef0 74 68 65 74 69 63 2e 0a 54 6f 20 68 65 6c 70 20  thetic..To help 
10f00 79 6f 75 20 61 76 6f 69 64 20 74 68 65 6d 2c 20  you avoid them, 
10f10 53 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20 6d 61  SQLite allows ma
10f20 6e 79 20 6b 65 79 77 6f 72 64 73 20 74 6f 20 62  ny keywords to b
10f30 65 20 75 73 65 64 20 75 6e 71 75 6f 74 65 64 0a  e used unquoted.
10f40 61 73 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20  as the names of 
10f50 64 61 74 61 62 61 73 65 73 2c 20 74 61 62 6c 65  databases, table
10f60 73 2c 20 69 6e 64 69 63 65 73 2c 20 74 72 69 67  s, indices, trig
10f70 67 65 72 73 2c 20 76 69 65 77 73 2c 20 61 6e 64  gers, views, and
10f80 2f 6f 72 20 63 6f 6c 75 6d 6e 73 2e 0a 49 6e 20  /or columns..In 
10f90 74 68 65 20 6c 69 73 74 20 6f 66 20 6b 65 79 77  the list of keyw
10fa0 6f 72 64 73 20 74 68 61 74 20 66 6f 6c 6c 6f 77  ords that follow
10fb0 73 2c 20 74 68 6f 73 65 20 74 68 61 74 20 63 61  s, those that ca
10fc0 6e 20 62 65 20 75 73 65 64 20 61 73 20 69 64 65  n be used as ide
10fd0 6e 74 69 66 69 65 72 73 0a 61 72 65 20 73 68 6f  ntifiers.are sho
10fe0 77 6e 20 69 6e 20 61 6e 20 69 74 61 6c 69 63 20  wn in an italic 
10ff0 66 6f 6e 74 2e 20 20 4b 65 79 77 6f 72 64 73 20  font.  Keywords 
11000 74 68 61 74 20 6d 75 73 74 20 62 65 20 71 75 6f  that must be quo
11010 74 65 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  ted in order to 
11020 62 65 0a 75 73 65 64 20 61 73 20 69 64 65 6e 74  be.used as ident
11030 69 66 69 65 72 73 20 61 72 65 20 73 68 6f 77 6e  ifiers are shown
11040 20 69 6e 20 62 6f 6c 64 2e 3c 2f 70 3e 0a 0a 3c   in bold.</p>..<
11050 70 3e 0a 53 51 4c 69 74 65 20 61 64 64 73 20 6e  p>.SQLite adds n
11060 65 77 20 6b 65 79 77 6f 72 64 73 20 66 72 6f 6d  ew keywords from
11070 20 74 69 6d 65 20 74 6f 20 74 69 6d 65 20 77 68   time to time wh
11080 65 6e 20 69 74 20 74 61 6b 65 20 6f 6e 20 6e 65  en it take on ne
11090 77 20 66 65 61 74 75 72 65 73 2e 0a 53 6f 20 74  w features..So t
110a0 6f 20 70 72 65 76 65 6e 74 20 79 6f 75 20 63 6f  o prevent you co
110b0 64 65 20 66 72 6f 6d 20 62 65 69 6e 67 20 62 72  de from being br
110c0 6f 6b 65 6e 20 62 79 20 66 75 74 75 72 65 20 65  oken by future e
110d0 6e 68 61 6e 63 65 6d 65 6e 74 73 2c 20 79 6f 75  nhancements, you
110e0 20 73 68 6f 75 6c 64 0a 6e 6f 72 6d 61 6c 6c 79   should.normally
110f0 20 71 75 6f 74 65 20 61 6e 79 20 69 6e 64 65 6e   quote any inden
11100 74 69 66 69 65 72 20 74 68 61 74 20 69 73 20 61  tifier that is a
11110 6e 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61  n English langua
11120 67 65 20 77 6f 72 64 2c 20 65 76 65 6e 20 69 66  ge word, even if
11130 0a 79 6f 75 20 64 6f 20 6e 6f 74 20 68 61 76 65  .you do not have
11140 20 74 6f 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54   to..</p>..<p>.T
11150 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65  he following are
11160 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20 63 75   the keywords cu
11170 72 72 65 6e 74 6c 79 20 72 65 63 6f 67 6e 69 7a  rrently recogniz
11180 65 64 20 62 79 20 53 51 4c 69 74 65 3a 0a 3c 2f  ed by SQLite:.</
11190 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
111a0 0a 3c 74 61 62 6c 65 20 77 69 64 74 68 3d 22 31  .<table width="1
111b0 30 30 25 22 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61  00%">.<tr>.<td a
111c0 6c 69 67 6e 3d 22 6c 65 66 74 22 20 76 61 6c 69  lign="left" vali
111d0 67 6e 3d 22 74 6f 70 22 20 77 69 64 74 68 3d 22  gn="top" width="
111e0 32 30 25 22 3e 0a 7d 0a 0a 73 65 74 20 6e 20 5b  20%">.}..set n [
111f0 6c 6c 65 6e 67 74 68 20 24 6b 65 79 77 6f 72 64  llength $keyword
11200 5f 6c 69 73 74 5d 0a 73 65 74 20 6e 43 6f 6c 20  _list].set nCol 
11210 35 0a 73 65 74 20 6e 52 6f 77 20 5b 65 78 70 72  5.set nRow [expr
11220 20 7b 28 24 6e 2b 24 6e 43 6f 6c 2d 31 29 2f 24   {($n+$nCol-1)/$
11230 6e 43 6f 6c 7d 5d 0a 73 65 74 20 69 20 30 0a 66  nCol}].set i 0.f
11240 6f 72 65 61 63 68 20 77 6f 72 64 20 24 6b 65 79  oreach word $key
11250 77 6f 72 64 5f 6c 69 73 74 20 7b 0a 20 20 69 66  word_list {.  if
11260 20 7b 5b 73 74 72 69 6e 67 20 69 6e 64 65 78 20   {[string index 
11270 24 77 6f 72 64 20 65 6e 64 5d 3d 3d 22 2a 22 7d  $word end]=="*"}
11280 20 7b 0a 20 20 20 20 73 65 74 20 77 6f 72 64 20   {.    set word 
11290 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 77  [string range $w
112a0 6f 72 64 20 30 20 65 6e 64 2d 31 5d 0a 20 20 20  ord 0 end-1].   
112b0 20 73 65 74 20 66 6f 6e 74 20 69 0a 20 20 7d 20   set font i.  } 
112c0 65 6c 73 65 20 7b 0a 20 20 20 20 73 65 74 20 66  else {.    set f
112d0 6f 6e 74 20 62 0a 20 20 7d 0a 20 20 69 66 20 7b  ont b.  }.  if {
112e0 24 69 3d 3d 24 6e 52 6f 77 7d 20 7b 0a 20 20 20  $i==$nRow} {.   
112f0 20 70 75 74 73 20 22 3c 2f 74 64 3e 3c 74 64 20   puts "</td><td 
11300 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 20 61  valign=\"top\" a
11310 6c 69 67 6e 3d 5c 22 6c 65 66 74 5c 22 20 77 69  lign=\"left\" wi
11320 64 74 68 3d 5c 22 32 30 25 5c 22 3e 22 0a 20 20  dth=\"20%\">".  
11330 20 20 73 65 74 20 69 20 31 0a 20 20 7d 20 65 6c    set i 1.  } el
11340 73 65 20 7b 0a 20 20 20 20 69 6e 63 72 20 69 0a  se {.    incr i.
11350 20 20 7d 0a 20 20 70 75 74 73 20 22 3c 24 66 6f    }.  puts "<$fo
11360 6e 74 3e 24 77 6f 72 64 3c 2f 24 66 6f 6e 74 3e  nt>$word</$font>
11370 3c 62 72 3e 22 0a 7d 0a 0a 70 75 74 73 20 7b 0a  <br>".}..puts {.
11380 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f 74 61 62 6c  </td></tr></tabl
11390 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  e></blockquote>.
113a0 0a 3c 68 32 3e 53 70 65 63 69 61 6c 20 6e 61 6d  .<h2>Special nam
113b0 65 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20  es</h2>..<p>The 
113c0 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20 6e 6f  following are no
113d0 74 20 6b 65 79 77 6f 72 64 73 20 69 6e 20 53 51  t keywords in SQ
113e0 4c 69 74 65 2c 20 62 75 74 20 61 72 65 20 75 73  Lite, but are us
113f0 65 64 20 61 73 20 6e 61 6d 65 73 20 6f 66 20 0a  ed as names of .
11400 73 79 73 74 65 6d 20 6f 62 6a 65 63 74 73 2e 20  system objects. 
11410 20 54 68 65 79 20 63 61 6e 20 62 65 20 75 73 65   They can be use
11420 64 20 61 73 20 61 6e 20 69 64 65 6e 74 69 66 69  d as an identifi
11430 65 72 20 66 6f 72 20 61 20 64 69 66 66 65 72 65  er for a differe
11440 6e 74 20 0a 74 79 70 65 20 6f 66 20 6f 62 6a 65  nt .type of obje
11450 63 74 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  ct.</p>..<blockq
11460 75 6f 74 65 3e 3c 62 3e 0a 20 20 5f 52 4f 57 49  uote><b>.  _ROWI
11470 44 5f 3c 62 72 3e 0a 20 20 4d 41 49 4e 3c 62 72  D_<br>.  MAIN<br
11480 3e 0a 20 20 4f 49 44 3c 62 72 3e 0a 20 20 52 4f  >.  OID<br>.  RO
11490 57 49 44 3c 62 72 3e 0a 20 20 53 51 4c 49 54 45  WID<br>.  SQLITE
114a0 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20 53 51  _MASTER<br>.  SQ
114b0 4c 49 54 45 5f 53 45 51 55 45 4e 43 45 3c 62 72  LITE_SEQUENCE<br
114c0 3e 0a 20 20 53 51 4c 49 54 45 5f 54 45 4d 50 5f  >.  SQLITE_TEMP_
114d0 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20 54 45 4d  MASTER<br>.  TEM
114e0 50 3c 62 72 3e 0a 3c 2f 62 3e 3c 2f 62 6c 6f 63  P<br>.</b></bloc
114f0 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 66 6f 6f 74 65  kquote>.}..foote
11500 72 20 24 72 63 73 69 64 0a 69 66 20 7b 5b 73 74  r $rcsid.if {[st
11510 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 6f 75 74  ring length $out
11520 70 75 74 64 69 72 5d 7d 20 7b 0a 20 20 66 6f 6f  putdir]} {.  foo
11530 74 65 72 20 24 72 63 73 69 64 0a 7d 0a           ter $rcsid.}.