/ Hex Artifact Content
Login

Artifact be57d5f23a46b8afa3753b38f65ea22d26499b80:


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 31 20 32 30 30  g.tcl,v 1.91 200
0060: 35 2f 30 36 2f 32 35 20 31 38 3a 34 32 3a 31 36  5/06/25 18:42:16
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 7d 5d 20 7b 0a 20 20 66 6f 72 65  ble}.}] {.  fore
0890: 61 63 68 20 7b 73 5f 74 69 74 6c 65 20 73 5f 74  ach {s_title s_t
08a0: 61 67 7d 20 24 73 65 63 74 69 6f 6e 20 7b 7d 0a  ag} $section {}.
08b0: 20 20 70 75 74 73 20 22 3c 6c 69 3e 3c 61 20 68    puts "<li><a h
08c0: 72 65 66 3d 5c 22 5b 73 6c 69 6e 6b 20 24 73 5f  ref=\"[slink $s_
08d0: 74 61 67 5d 5c 22 3e 24 73 5f 74 69 74 6c 65 3c  tag]\">$s_title<
08e0: 2f 61 3e 3c 2f 6c 69 3e 22 0a 7d 0a 70 75 74 73  /a></li>".}.puts
08f0: 20 7b 3c 2f 75 6c 3e 3c 2f 70 3e 0a 0a 3c 70 3e   {</ul></p>..<p>
0900: 44 65 74 61 69 6c 73 20 6f 6e 20 74 68 65 20 69  Details on the i
0910: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
0920: 20 65 61 63 68 20 63 6f 6d 6d 61 6e 64 20 61 72   each command ar
0930: 65 20 70 72 6f 76 69 64 65 64 20 69 6e 0a 74 68  e provided in.th
0940: 65 20 73 65 71 75 65 6c 2e 3c 2f 70 3e 0a 7d 0a  e sequel.</p>.}.
0950: 0a 70 72 6f 63 20 4f 70 65 72 61 74 6f 72 20 7b  .proc Operator {
0960: 6e 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e  name} {.  return
0970: 20 22 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22   "<font color=\"
0980: 23 32 63 32 63 66 30 5c 22 3e 3c 62 69 67 3e 24  #2c2cf0\"><big>$
0990: 6e 61 6d 65 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74  name</big></font
09a0: 3e 22 0a 7d 0a 70 72 6f 63 20 4e 6f 6e 74 65 72  >".}.proc Nonter
09b0: 6d 69 6e 61 6c 20 7b 6e 61 6d 65 7d 20 7b 0a 20  minal {name} {. 
09c0: 20 72 65 74 75 72 6e 20 22 3c 69 3e 3c 66 6f 6e   return "<i><fon
09d0: 74 20 63 6f 6c 6f 72 3d 5c 22 23 66 66 33 34 33  t color=\"#ff343
09e0: 34 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74 3e  4\">$name</font>
09f0: 3c 2f 69 3e 22 0a 7d 0a 70 72 6f 63 20 4b 65 79  </i>".}.proc Key
0a00: 77 6f 72 64 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20  word {name} {.  
0a10: 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f  return "<font co
0a20: 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e  lor=\"#2c2cf0\">
0a30: 24 6e 61 6d 65 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a  $name</font>".}.
0a40: 70 72 6f 63 20 45 78 61 6d 70 6c 65 20 7b 74 65  proc Example {te
0a50: 78 74 7d 20 7b 0a 20 20 70 75 74 73 20 22 3c 62  xt} {.  puts "<b
0a60: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 24  lockquote><pre>$
0a70: 74 65 78 74 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63  text</pre></bloc
0a80: 6b 71 75 6f 74 65 3e 22 0a 7d 0a 0a 70 72 6f 63  kquote>".}..proc
0a90: 20 53 65 63 74 69 6f 6e 20 7b 6e 61 6d 65 20 6c   Section {name l
0aa0: 61 62 65 6c 7d 20 7b 0a 20 20 67 6c 6f 62 61 6c  abel} {.  global
0ab0: 20 6f 75 74 70 75 74 64 69 72 0a 0a 20 20 69 66   outputdir..  if
0ac0: 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68   {[string length
0ad0: 20 24 6f 75 74 70 75 74 64 69 72 5d 21 3d 30 7d   $outputdir]!=0}
0ae0: 20 7b 0a 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e   {.    if {[llen
0af0: 67 74 68 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e  gth [info comman
0b00: 64 73 20 70 75 74 73 5f 73 74 61 6e 64 61 72 64  ds puts_standard
0b10: 5d 5d 3e 30 7d 20 7b 0a 20 20 20 20 20 20 66 6f  ]]>0} {.      fo
0b20: 6f 74 65 72 20 24 3a 3a 72 63 73 69 64 0a 20 20  oter $::rcsid.  
0b30: 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b 5b 73 74    }..    if {[st
0b40: 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 6c 61 62  ring length $lab
0b50: 65 6c 5d 3e 30 7d 20 7b 0a 20 20 20 20 20 20 72  el]>0} {.      r
0b60: 65 6e 61 6d 65 20 70 75 74 73 20 70 75 74 73 5f  ename puts puts_
0b70: 73 74 61 6e 64 61 72 64 0a 20 20 20 20 20 20 70  standard.      p
0b80: 72 6f 63 20 70 75 74 73 20 7b 73 74 72 7d 20 7b  roc puts {str} {
0b90: 0a 20 20 20 20 20 20 20 20 72 65 67 73 75 62 20  .        regsub 
0ba0: 2d 61 6c 6c 20 7b 68 72 65 66 3d 22 23 28 5b 61  -all {href="#([a
0bb0: 2d 7a 5d 2b 29 22 7d 20 24 73 74 72 20 7b 68 72  -z]+)"} $str {hr
0bc0: 65 66 3d 22 6c 61 6e 67 5f 5c 31 2e 68 74 6d 6c  ef="lang_\1.html
0bd0: 22 7d 20 73 74 72 0a 20 20 20 20 20 20 20 20 70  "} str.        p
0be0: 75 74 73 5f 73 74 61 6e 64 61 72 64 20 24 3a 3a  uts_standard $::
0bf0: 73 65 63 74 69 6f 6e 5f 66 69 6c 65 20 24 73 74  section_file $st
0c00: 72 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20  r.      }.      
0c10: 72 65 6e 61 6d 65 20 66 6f 6f 74 65 72 20 66 6f  rename footer fo
0c20: 6f 74 65 72 5f 73 74 61 6e 64 61 72 64 0a 20 20  oter_standard.  
0c30: 20 20 20 20 70 72 6f 63 20 66 6f 6f 74 65 72 20      proc footer 
0c40: 7b 69 64 7d 20 7b 0a 20 20 20 20 20 20 20 20 66  {id} {.        f
0c50: 6f 6f 74 65 72 5f 73 74 61 6e 64 61 72 64 20 24  ooter_standard $
0c60: 69 64 0a 20 20 20 20 20 20 20 20 72 65 6e 61 6d  id.        renam
0c70: 65 20 66 6f 6f 74 65 72 20 22 22 0a 20 20 20 20  e footer "".    
0c80: 20 20 20 20 72 65 6e 61 6d 65 20 70 75 74 73 20      rename puts 
0c90: 22 22 0a 20 20 20 20 20 20 20 20 72 65 6e 61 6d  "".        renam
0ca0: 65 20 70 75 74 73 5f 73 74 61 6e 64 61 72 64 20  e puts_standard 
0cb0: 70 75 74 73 0a 20 20 20 20 20 20 20 20 72 65 6e  puts.        ren
0cc0: 61 6d 65 20 66 6f 6f 74 65 72 5f 73 74 61 6e 64  ame footer_stand
0cd0: 61 72 64 20 66 6f 6f 74 65 72 0a 20 20 20 20 20  ard footer.     
0ce0: 20 7d 20 0a 20 20 20 20 20 20 73 65 74 20 3a 3a   } .      set ::
0cf0: 73 65 63 74 69 6f 6e 5f 66 69 6c 65 20 5b 6f 70  section_file [op
0d00: 65 6e 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 6f  en [file join $o
0d10: 75 74 70 75 74 64 69 72 20 6c 61 6e 67 5f 24 6c  utputdir lang_$l
0d20: 61 62 65 6c 2e 68 74 6d 6c 5d 20 77 5d 0a 20 20  abel.html] w].  
0d30: 20 20 20 20 68 65 61 64 65 72 20 22 51 75 65 72      header "Quer
0d40: 79 20 4c 61 6e 67 75 61 67 65 20 55 6e 64 65 72  y Language Under
0d50: 73 74 6f 6f 64 20 62 79 20 53 51 4c 69 74 65 3a  stood by SQLite:
0d60: 20 24 6e 61 6d 65 22 0a 20 20 20 20 20 20 70 75   $name".      pu
0d70: 74 73 20 22 3c 68 31 3e 53 51 4c 20 41 73 20 55  ts "<h1>SQL As U
0d80: 6e 64 65 72 73 74 6f 6f 64 20 42 79 20 53 51 4c  nderstood By SQL
0d90: 69 74 65 3c 2f 68 31 3e 22 0a 20 20 20 20 20 20  ite</h1>".      
0da0: 70 75 74 73 20 22 3c 61 20 68 72 65 66 3d 5c 22  puts "<a href=\"
0db0: 6c 61 6e 67 2e 68 74 6d 6c 5c 22 3e 5c 5b 43 6f  lang.html\">\[Co
0dc0: 6e 74 65 6e 74 73 5c 5d 3c 2f 61 3e 22 0a 20 20  ntents\]</a>".  
0dd0: 20 20 20 20 70 75 74 73 20 22 3c 68 32 3e 24 6e      puts "<h2>$n
0de0: 61 6d 65 3c 2f 68 32 3e 22 0a 20 20 20 20 20 20  ame</h2>".      
0df0: 72 65 74 75 72 6e 20 0a 20 20 20 20 7d 0a 20 20  return .    }.  
0e00: 7d 0a 20 20 70 75 74 73 20 22 5c 6e 3c 68 72 20  }.  puts "\n<hr 
0e10: 2f 3e 22 0a 20 20 69 66 20 7b 24 6c 61 62 65 6c  />".  if {$label
0e20: 21 3d 22 22 7d 20 7b 0a 20 20 20 20 70 75 74 73  !=""} {.    puts
0e30: 20 22 3c 61 20 6e 61 6d 65 3d 5c 22 24 6c 61 62   "<a name=\"$lab
0e40: 65 6c 5c 22 3e 3c 2f 61 3e 22 0a 20 20 7d 0a 20  el\"></a>".  }. 
0e50: 20 70 75 74 73 20 22 3c 68 31 3e 24 6e 61 6d 65   puts "<h1>$name
0e60: 3c 2f 68 31 3e 5c 6e 22 0a 7d 0a 0a 53 65 63 74  </h1>\n".}..Sect
0e70: 69 6f 6e 20 7b 41 4c 54 45 52 20 54 41 42 4c 45  ion {ALTER TABLE
0e80: 7d 20 61 6c 74 65 72 74 61 62 6c 65 0a 0a 53 79  } altertable..Sy
0e90: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
0ea0: 65 6e 74 7d 20 7b 0a 41 4c 54 45 52 20 54 41 42  ent} {.ALTER TAB
0eb0: 4c 45 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  LE [<database-na
0ec0: 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61  me> .] <table-na
0ed0: 6d 65 3e 20 3c 61 6c 74 65 72 61 74 69 6f 6e 3e  me> <alteration>
0ee0: 0a 7d 20 7b 61 6c 74 65 72 61 74 69 6f 6e 7d 20  .} {alteration} 
0ef0: 7b 0a 52 45 4e 41 4d 45 20 54 4f 20 3c 6e 65 77  {.RENAME TO <new
0f00: 2d 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 7d 20 7b  -table-name>.} {
0f10: 61 6c 74 65 72 61 74 69 6f 6e 7d 20 7b 0a 41 44  alteration} {.AD
0f20: 44 20 5b 43 4f 4c 55 4d 4e 5d 20 3c 63 6f 6c 75  D [COLUMN] <colu
0f30: 6d 6e 2d 64 65 66 3e 0a 7d 0a 0a 70 75 74 73 20  mn-def>.}..puts 
0f40: 7b 0a 3c 70 3e 53 51 4c 69 74 65 27 73 20 76 65  {.<p>SQLite's ve
0f50: 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 41 4c 54  rsion of the ALT
0f60: 45 52 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64  ER TABLE command
0f70: 20 61 6c 6c 6f 77 73 20 74 68 65 20 75 73 65 72   allows the user
0f80: 20 74 6f 20 0a 72 65 6e 61 6d 65 20 6f 72 20 61   to .rename or a
0f90: 64 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d 6e 20  dd a new column 
0fa0: 74 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74  to an existing t
0fb0: 61 62 6c 65 2e 20 49 74 20 69 73 20 6e 6f 74 20  able. It is not 
0fc0: 70 6f 73 73 69 62 6c 65 0a 74 6f 20 72 65 6d 6f  possible.to remo
0fd0: 76 65 20 61 20 63 6f 6c 75 6d 6e 20 66 72 6f 6d  ve a column from
0fe0: 20 61 20 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a 0a   a table..</p>..
0ff0: 3c 70 3e 54 68 65 20 52 45 4e 41 4d 45 20 54 4f  <p>The RENAME TO
1000: 20 73 79 6e 74 61 78 20 69 73 20 75 73 65 64 20   syntax is used 
1010: 74 6f 20 72 65 6e 61 6d 65 20 74 68 65 20 74 61  to rename the ta
1020: 62 6c 65 20 69 64 65 6e 74 69 66 69 65 64 20 62  ble identified b
1030: 79 20 0a 3c 69 3e 5b 64 61 74 61 62 61 73 65 2d  y .<i>[database-
1040: 6e 61 6d 65 2e 5d 74 61 62 6c 65 2d 6e 61 6d 65  name.]table-name
1050: 3c 2f 69 3e 20 74 6f 20 3c 69 3e 6e 65 77 2d 74  </i> to <i>new-t
1060: 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 20 54  able-name</i>. T
1070: 68 69 73 20 63 6f 6d 6d 61 6e 64 20 0a 63 61 6e  his command .can
1080: 6e 6f 74 20 62 65 20 75 73 65 64 20 74 6f 20 6d  not be used to m
1090: 6f 76 65 20 61 20 74 61 62 6c 65 20 62 65 74 77  ove a table betw
10a0: 65 65 6e 20 61 74 74 61 63 68 65 64 20 64 61 74  een attached dat
10b0: 61 62 61 73 65 73 2c 20 6f 6e 6c 79 20 74 6f 20  abases, only to 
10c0: 72 65 6e 61 6d 65 20 0a 61 20 74 61 62 6c 65 20  rename .a table 
10d0: 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20  within the same 
10e0: 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c  database.</p>..<
10f0: 70 3e 49 66 20 74 68 65 20 74 61 62 6c 65 20 62  p>If the table b
1100: 65 69 6e 67 20 72 65 6e 61 6d 65 64 20 68 61 73  eing renamed has
1110: 20 74 72 69 67 67 65 72 73 20 6f 72 20 69 6e 64   triggers or ind
1120: 69 63 65 73 2c 20 74 68 65 6e 20 74 68 65 73 65  ices, then these
1130: 20 72 65 6d 61 69 6e 0a 61 74 74 61 63 68 65 64   remain.attached
1140: 20 74 6f 20 74 68 65 20 74 61 62 6c 65 20 61 66   to the table af
1150: 74 65 72 20 69 74 20 68 61 73 20 62 65 65 6e 20  ter it has been 
1160: 72 65 6e 61 6d 65 64 2e 20 48 6f 77 65 76 65 72  renamed. However
1170: 2c 20 69 66 20 74 68 65 72 65 20 61 72 65 0a 61  , if there are.a
1180: 6e 79 20 76 69 65 77 20 64 65 66 69 6e 69 74 69  ny view definiti
1190: 6f 6e 73 2c 20 6f 72 20 73 74 61 74 65 6d 65 6e  ons, or statemen
11a0: 74 73 20 65 78 65 63 75 74 65 64 20 62 79 20 74  ts executed by t
11b0: 72 69 67 67 65 72 73 20 74 68 61 74 20 72 65 66  riggers that ref
11c0: 65 72 20 74 6f 0a 74 68 65 20 74 61 62 6c 65 20  er to.the table 
11d0: 62 65 69 6e 67 20 72 65 6e 61 6d 65 64 2c 20 74  being renamed, t
11e0: 68 65 73 65 20 61 72 65 20 6e 6f 74 20 61 75 74  hese are not aut
11f0: 6f 6d 61 74 69 63 61 6c 6c 79 20 6d 6f 64 69 66  omatically modif
1200: 69 65 64 20 74 6f 20 75 73 65 20 74 68 65 20 6e  ied to use the n
1210: 65 77 0a 74 61 62 6c 65 20 6e 61 6d 65 2e 20 49  ew.table name. I
1220: 66 20 74 68 69 73 20 69 73 20 72 65 71 75 69 72  f this is requir
1230: 65 64 2c 20 74 68 65 20 74 72 69 67 67 65 72 73  ed, the triggers
1240: 20 6f 72 20 76 69 65 77 20 64 65 66 69 6e 69 74   or view definit
1250: 69 6f 6e 73 20 6d 75 73 74 20 62 65 0a 64 72 6f  ions must be.dro
1260: 70 70 65 64 20 61 6e 64 20 72 65 63 72 65 61 74  pped and recreat
1270: 65 64 20 74 6f 20 75 73 65 20 74 68 65 20 6e 65  ed to use the ne
1280: 77 20 74 61 62 6c 65 20 6e 61 6d 65 20 62 79 20  w table name by 
1290: 68 61 6e 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54  hand..</p>..<p>T
12a0: 68 65 20 41 44 44 20 5b 43 4f 4c 55 4d 4e 5d 20  he ADD [COLUMN] 
12b0: 73 79 6e 74 61 78 20 69 73 20 75 73 65 64 20 74  syntax is used t
12c0: 6f 20 61 64 64 20 61 20 6e 65 77 20 63 6f 6c 75  o add a new colu
12d0: 6d 6e 20 74 6f 20 61 6e 20 65 78 69 73 74 69 6e  mn to an existin
12e0: 67 20 74 61 62 6c 65 2e 0a 54 68 65 20 6e 65 77  g table..The new
12f0: 20 63 6f 6c 75 6d 6e 20 69 73 20 61 6c 77 61 79   column is alway
1300: 73 20 61 70 70 65 6e 64 65 64 20 74 6f 20 74 68  s appended to th
1310: 65 20 65 6e 64 20 6f 66 20 74 68 65 20 6c 69 73  e end of the lis
1320: 74 20 6f 66 20 65 78 69 73 74 69 6e 67 20 63 6f  t of existing co
1330: 6c 75 6d 6e 73 2e 0a 3c 69 3e 43 6f 6c 75 6d 6e  lumns..<i>Column
1340: 2d 64 65 66 3c 2f 69 3e 20 6d 61 79 20 74 61 6b  -def</i> may tak
1350: 65 20 61 6e 79 20 6f 66 20 74 68 65 20 66 6f 72  e any of the for
1360: 6d 73 20 70 65 72 6d 69 73 73 61 62 6c 65 20 69  ms permissable i
1370: 6e 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45  n a CREATE TABLE
1380: 20 0a 73 74 61 74 65 6d 65 6e 74 2c 20 77 69 74   .statement, wit
1390: 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  h the following 
13a0: 72 65 73 74 72 69 63 74 69 6f 6e 73 3a 0a 3c 75  restrictions:.<u
13b0: 6c 3e 0a 3c 6c 69 3e 54 68 65 20 63 6f 6c 75 6d  l>.<li>The colum
13c0: 6e 20 6d 61 79 20 6e 6f 74 20 68 61 76 65 20 61  n may not have a
13d0: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6f 72 20   PRIMARY KEY or 
13e0: 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e  UNIQUE constrain
13f0: 74 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 54 68 65 20  t.</li>.<li>The 
1400: 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74 20 68  column may not h
1410: 61 76 65 20 61 20 64 65 66 61 75 6c 74 20 76 61  ave a default va
1420: 6c 75 65 20 6f 66 20 43 55 52 52 45 4e 54 5f 54  lue of CURRENT_T
1430: 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54  IME, CURRENT_DAT
1440: 45 20 0a 20 20 20 20 6f 72 20 43 55 52 52 45 4e  E .    or CURREN
1450: 54 5f 54 49 4d 45 53 54 41 4d 50 2e 3c 2f 6c 69  T_TIMESTAMP.</li
1460: 3e 0a 3c 6c 69 3e 49 66 20 61 20 4e 4f 54 20 4e  >.<li>If a NOT N
1470: 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69  ULL constraint i
1480: 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65  s specified, the
1490: 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6d 75 73  n the column mus
14a0: 74 20 68 61 76 65 20 61 0a 20 20 20 20 64 65 66  t have a.    def
14b0: 61 75 6c 74 20 76 61 6c 75 65 20 6f 74 68 65 72  ault value other
14c0: 20 74 68 61 6e 20 4e 55 4c 4c 2e 0a 3c 2f 75 6c   than NULL..</ul
14d0: 3e 0a 0a 3c 70 3e 54 68 65 20 65 78 65 63 75 74  >..<p>The execut
14e0: 69 6f 6e 20 74 69 6d 65 20 6f 66 20 74 68 65 20  ion time of the 
14f0: 41 4c 54 45 52 20 54 41 42 4c 45 20 63 6f 6d 6d  ALTER TABLE comm
1500: 61 6e 64 20 69 73 20 69 6e 64 65 70 65 6e 64 65  and is independe
1510: 6e 74 20 6f 66 0a 74 68 65 20 61 6d 6f 75 6e 74  nt of.the amount
1520: 20 6f 66 20 64 61 74 61 20 69 6e 20 74 68 65 20   of data in the 
1530: 74 61 62 6c 65 2e 20 20 54 68 65 20 41 4c 54 45  table.  The ALTE
1540: 52 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 20  R TABLE command 
1550: 72 75 6e 73 20 61 73 20 71 75 69 63 6b 6c 79 0a  runs as quickly.
1560: 6f 6e 20 61 20 74 61 62 6c 65 20 77 69 74 68 20  on a table with 
1570: 31 30 20 6d 69 6c 6c 69 6f 6e 20 72 6f 77 73 20  10 million rows 
1580: 61 73 20 69 74 20 64 6f 65 73 20 6f 6e 20 61 20  as it does on a 
1590: 74 61 62 6c 65 20 77 69 74 68 20 31 20 72 6f 77  table with 1 row
15a0: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41 66 74 65 72  ..</p>..<p>After
15b0: 20 41 44 44 20 43 4f 4c 55 4d 4e 20 68 61 73 20   ADD COLUMN has 
15c0: 62 65 65 6e 20 72 75 6e 20 6f 6e 20 61 20 64 61  been run on a da
15d0: 74 61 62 61 73 65 2c 20 74 68 61 74 20 64 61 74  tabase, that dat
15e0: 61 62 61 73 65 20 77 69 6c 6c 20 6e 6f 74 0a 62  abase will not.b
15f0: 65 20 72 65 61 64 61 62 6c 65 20 62 79 20 53 51  e readable by SQ
1600: 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 31  Lite version 3.1
1610: 2e 33 20 61 6e 64 20 65 61 72 6c 69 65 72 20 75  .3 and earlier u
1620: 6e 74 69 6c 20 74 68 65 20 64 61 74 61 62 61 73  ntil the databas
1630: 65 0a 69 73 20 3c 61 20 68 72 65 66 3d 22 6c 61  e.is <a href="la
1640: 6e 67 5f 76 61 63 75 75 6d 2e 68 74 6d 6c 22 3e  ng_vacuum.html">
1650: 56 41 43 55 55 4d 3c 2f 61 3e 65 64 2e 3c 2f 70  VACUUM</a>ed.</p
1660: 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 7b 41 54  >.}..Section {AT
1670: 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 61  TACH DATABASE} a
1680: 74 74 61 63 68 0a 0a 53 79 6e 74 61 78 20 7b 73  ttach..Syntax {s
1690: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
16a0: 41 54 54 41 43 48 20 5b 44 41 54 41 42 41 53 45  ATTACH [DATABASE
16b0: 5d 20 3c 64 61 74 61 62 61 73 65 2d 66 69 6c 65  ] <database-file
16c0: 6e 61 6d 65 3e 20 41 53 20 3c 64 61 74 61 62 61  name> AS <databa
16d0: 73 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73  se-name>.}..puts
16e0: 20 7b 0a 3c 70 3e 54 68 65 20 41 54 54 41 43 48   {.<p>The ATTACH
16f0: 20 44 41 54 41 42 41 53 45 20 73 74 61 74 65 6d   DATABASE statem
1700: 65 6e 74 20 61 64 64 73 20 61 20 70 72 65 65 78  ent adds a preex
1710: 69 73 74 69 6e 67 20 64 61 74 61 62 61 73 65 20  isting database 
1720: 0a 66 69 6c 65 20 74 6f 20 74 68 65 20 63 75 72  .file to the cur
1730: 72 65 6e 74 20 64 61 74 61 62 61 73 65 20 63 6f  rent database co
1740: 6e 6e 65 63 74 69 6f 6e 2e 20 20 49 66 20 74 68  nnection.  If th
1750: 65 20 66 69 6c 65 6e 61 6d 65 20 63 6f 6e 74 61  e filename conta
1760: 69 6e 73 20 0a 70 75 6e 63 74 75 61 74 69 6f 6e  ins .punctuation
1770: 20 63 68 61 72 61 63 74 65 72 73 20 69 74 20 6d   characters it m
1780: 75 73 74 20 62 65 20 71 75 6f 74 65 64 2e 20 20  ust be quoted.  
1790: 54 68 65 20 6e 61 6d 65 73 20 27 6d 61 69 6e 27  The names 'main'
17a0: 20 61 6e 64 20 0a 27 74 65 6d 70 27 20 72 65 66   and .'temp' ref
17b0: 65 72 20 74 6f 20 74 68 65 20 6d 61 69 6e 20 64  er to the main d
17c0: 61 74 61 62 61 73 65 20 61 6e 64 20 74 68 65 20  atabase and the 
17d0: 64 61 74 61 62 61 73 65 20 75 73 65 64 20 66 6f  database used fo
17e0: 72 20 0a 74 65 6d 70 6f 72 61 72 79 20 74 61 62  r .temporary tab
17f0: 6c 65 73 2e 20 20 54 68 65 73 65 20 63 61 6e 6e  les.  These cann
1800: 6f 74 20 62 65 20 64 65 74 61 63 68 65 64 2e 20  ot be detached. 
1810: 20 41 74 74 61 63 68 65 64 20 64 61 74 61 62 61   Attached databa
1820: 73 65 73 20 0a 61 72 65 20 72 65 6d 6f 76 65 64  ses .are removed
1830: 20 75 73 69 6e 67 20 74 68 65 20 3c 61 20 68 72   using the <a hr
1840: 65 66 3d 22 23 64 65 74 61 63 68 22 3e 44 45 54  ef="#detach">DET
1850: 41 43 48 20 44 41 54 41 42 41 53 45 3c 2f 61 3e  ACH DATABASE</a>
1860: 20 0a 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e   .statement.</p>
1870: 0a 0a 3c 70 3e 59 6f 75 20 63 61 6e 20 72 65 61  ..<p>You can rea
1880: 64 20 66 72 6f 6d 20 61 6e 64 20 77 72 69 74 65  d from and write
1890: 20 74 6f 20 61 6e 20 61 74 74 61 63 68 65 64 20   to an attached 
18a0: 64 61 74 61 62 61 73 65 20 61 6e 64 20 79 6f 75  database and you
18b0: 0a 63 61 6e 20 6d 6f 64 69 66 79 20 74 68 65 20  .can modify the 
18c0: 73 63 68 65 6d 61 20 6f 66 20 74 68 65 20 61 74  schema of the at
18d0: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 2e  tached database.
18e0: 20 20 54 68 69 73 20 69 73 20 61 20 6e 65 77 0a    This is a new.
18f0: 66 65 61 74 75 72 65 20 6f 66 20 53 51 4c 69 74  feature of SQLit
1900: 65 20 76 65 72 73 69 6f 6e 20 33 2e 30 2e 20 20  e version 3.0.  
1910: 49 6e 20 53 51 4c 69 74 65 20 32 2e 38 2c 20 73  In SQLite 2.8, s
1920: 63 68 65 6d 61 20 63 68 61 6e 67 65 73 0a 74 6f  chema changes.to
1930: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
1940: 73 65 73 20 77 65 72 65 20 6e 6f 74 20 61 6c 6c  ses were not all
1950: 6f 77 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f  owed.</p>..<p>Yo
1960: 75 20 63 61 6e 6e 6f 74 20 63 72 65 61 74 65 20  u cannot create 
1970: 61 20 6e 65 77 20 74 61 62 6c 65 20 77 69 74 68  a new table with
1980: 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 20 61   the same name a
1990: 73 20 61 20 74 61 62 6c 65 20 69 6e 20 0a 61 6e  s a table in .an
19a0: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
19b0: 73 65 2c 20 62 75 74 20 79 6f 75 20 63 61 6e 20  se, but you can 
19c0: 61 74 74 61 63 68 20 61 20 64 61 74 61 62 61 73  attach a databas
19d0: 65 20 77 68 69 63 68 20 63 6f 6e 74 61 69 6e 73  e which contains
19e0: 0a 74 61 62 6c 65 73 20 77 68 6f 73 65 20 6e 61  .tables whose na
19f0: 6d 65 73 20 61 72 65 20 64 75 70 6c 69 63 61 74  mes are duplicat
1a00: 65 73 20 6f 66 20 74 61 62 6c 65 73 20 69 6e 20  es of tables in 
1a10: 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73  the main databas
1a20: 65 2e 20 20 49 74 20 69 73 20 0a 61 6c 73 6f 20  e.  It is .also 
1a30: 70 65 72 6d 69 73 73 69 62 6c 65 20 74 6f 20 61  permissible to a
1a40: 74 74 61 63 68 20 74 68 65 20 73 61 6d 65 20 64  ttach the same d
1a50: 61 74 61 62 61 73 65 20 66 69 6c 65 20 6d 75 6c  atabase file mul
1a60: 74 69 70 6c 65 20 74 69 6d 65 73 2e 3c 2f 70 3e  tiple times.</p>
1a70: 0a 0a 3c 70 3e 54 61 62 6c 65 73 20 69 6e 20 61  ..<p>Tables in a
1a80: 6e 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  n attached datab
1a90: 61 73 65 20 63 61 6e 20 62 65 20 72 65 66 65 72  ase can be refer
1aa0: 72 65 64 20 74 6f 20 75 73 69 6e 67 20 74 68 65  red to using the
1ab0: 20 73 79 6e 74 61 78 20 0a 3c 69 3e 64 61 74 61   syntax .<i>data
1ac0: 62 61 73 65 2d 6e 61 6d 65 2e 74 61 62 6c 65 2d  base-name.table-
1ad0: 6e 61 6d 65 3c 2f 69 3e 2e 20 20 49 66 20 61 6e  name</i>.  If an
1ae0: 20 61 74 74 61 63 68 65 64 20 74 61 62 6c 65 20   attached table 
1af0: 64 6f 65 73 6e 27 74 20 68 61 76 65 20 0a 61 20  doesn't have .a 
1b00: 64 75 70 6c 69 63 61 74 65 20 74 61 62 6c 65 20  duplicate table 
1b10: 6e 61 6d 65 20 69 6e 20 74 68 65 20 6d 61 69 6e  name in the main
1b20: 20 64 61 74 61 62 61 73 65 2c 20 69 74 20 64 6f   database, it do
1b30: 65 73 6e 27 74 20 72 65 71 75 69 72 65 20 61 20  esn't require a 
1b40: 0a 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20 70  .database name p
1b50: 72 65 66 69 78 2e 20 20 57 68 65 6e 20 61 20 64  refix.  When a d
1b60: 61 74 61 62 61 73 65 20 69 73 20 61 74 74 61 63  atabase is attac
1b70: 68 65 64 2c 20 61 6c 6c 20 6f 66 20 69 74 73 20  hed, all of its 
1b80: 0a 74 61 62 6c 65 73 20 77 68 69 63 68 20 64 6f  .tables which do
1b90: 6e 27 74 20 68 61 76 65 20 64 75 70 6c 69 63 61  n't have duplica
1ba0: 74 65 20 6e 61 6d 65 73 20 62 65 63 6f 6d 65 20  te names become 
1bb0: 74 68 65 20 27 64 65 66 61 75 6c 74 27 20 74 61  the 'default' ta
1bc0: 62 6c 65 0a 6f 66 20 74 68 61 74 20 6e 61 6d 65  ble.of that name
1bd0: 2e 20 20 41 6e 79 20 74 61 62 6c 65 73 20 6f 66  .  Any tables of
1be0: 20 74 68 61 74 20 6e 61 6d 65 20 61 74 74 61 63   that name attac
1bf0: 68 65 64 20 61 66 74 65 72 77 61 72 64 73 20 72  hed afterwards r
1c00: 65 71 75 69 72 65 20 74 68 65 20 74 61 62 6c 65  equire the table
1c10: 20 0a 70 72 65 66 69 78 2e 20 49 66 20 74 68 65   .prefix. If the
1c20: 20 27 64 65 66 61 75 6c 74 27 20 74 61 62 6c 65   'default' table
1c30: 20 6f 66 20 61 20 67 69 76 65 6e 20 6e 61 6d 65   of a given name
1c40: 20 69 73 20 64 65 74 61 63 68 65 64 2c 20 74 68   is detached, th
1c50: 65 6e 20 0a 74 68 65 20 6c 61 73 74 20 74 61 62  en .the last tab
1c60: 6c 65 20 6f 66 20 74 68 61 74 20 6e 61 6d 65 20  le of that name 
1c70: 61 74 74 61 63 68 65 64 20 62 65 63 6f 6d 65 73  attached becomes
1c80: 20 74 68 65 20 6e 65 77 20 64 65 66 61 75 6c 74   the new default
1c90: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73  .</p>..<p>.Trans
1ca0: 61 63 74 69 6f 6e 73 20 69 6e 76 6f 6c 76 69 6e  actions involvin
1cb0: 67 20 6d 75 6c 74 69 70 6c 65 20 61 74 74 61 63  g multiple attac
1cc0: 68 65 64 20 64 61 74 61 62 61 73 65 73 20 61 72  hed databases ar
1cd0: 65 20 61 74 6f 6d 69 63 2c 0a 61 73 73 75 6d 69  e atomic,.assumi
1ce0: 6e 67 20 74 68 61 74 20 74 68 65 20 6d 61 69 6e  ng that the main
1cf0: 20 64 61 74 61 62 61 73 65 20 69 73 20 6e 6f 74   database is not
1d00: 20 22 3a 6d 65 6d 6f 72 79 3a 22 2e 20 20 49 66   ":memory:".  If
1d10: 20 74 68 65 20 6d 61 69 6e 0a 64 61 74 61 62 61   the main.databa
1d20: 73 65 20 69 73 20 22 3a 6d 65 6d 6f 72 79 3a 22  se is ":memory:"
1d30: 20 74 68 65 6e 20 0a 74 72 61 6e 73 61 63 74 69   then .transacti
1d40: 6f 6e 73 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20  ons continue to 
1d50: 62 65 20 61 74 6f 6d 69 63 20 77 69 74 68 69 6e  be atomic within
1d60: 20 65 61 63 68 20 69 6e 64 69 76 69 64 75 61 6c   each individual
1d70: 0a 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20  .database file. 
1d80: 42 75 74 20 69 66 20 74 68 65 20 68 6f 73 74 20  But if the host 
1d90: 63 6f 6d 70 75 74 65 72 20 63 72 61 73 68 65 73  computer crashes
1da0: 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 0a 6f   in the middle.o
1db0: 66 20 61 20 43 4f 4d 4d 49 54 20 77 68 65 72 65  f a COMMIT where
1dc0: 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20 64 61 74   two or more dat
1dd0: 61 62 61 73 65 20 66 69 6c 65 73 20 61 72 65 20  abase files are 
1de0: 75 70 64 61 74 65 64 2c 0a 73 6f 6d 65 20 6f 66  updated,.some of
1df0: 20 74 68 6f 73 65 20 66 69 6c 65 73 20 6d 69 67   those files mig
1e00: 68 74 20 67 65 74 20 74 68 65 20 63 68 61 6e 67  ht get the chang
1e10: 65 73 20 77 68 65 72 65 20 6f 74 68 65 72 73 0a  es where others.
1e20: 6d 69 67 68 74 20 6e 6f 74 2e 0a 41 74 6f 6d 69  might not..Atomi
1e30: 63 20 63 6f 6d 6d 69 74 20 6f 66 20 61 74 74 61  c commit of atta
1e40: 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20 69  ched databases i
1e50: 73 20 61 20 6e 65 77 20 66 65 61 74 75 72 65 20  s a new feature 
1e60: 6f 66 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  of SQLite versio
1e70: 6e 20 33 2e 30 2e 0a 49 6e 20 53 51 4c 69 74 65  n 3.0..In SQLite
1e80: 20 76 65 72 73 69 6f 6e 20 32 2e 38 2c 20 61 6c   version 2.8, al
1e90: 6c 20 63 6f 6d 6d 69 74 73 20 74 6f 20 61 74 74  l commits to att
1ea0: 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20  ached databases 
1eb0: 62 65 68 61 76 65 64 20 61 73 20 69 66 0a 74 68  behaved as if.th
1ec0: 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20  e main database 
1ed0: 77 65 72 65 20 22 3a 6d 65 6d 6f 72 79 3a 22 2e  were ":memory:".
1ee0: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20  .</p>..<p>There 
1ef0: 69 73 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  is a compile-tim
1f00: 65 20 6c 69 6d 69 74 20 6f 66 20 31 30 20 61 74  e limit of 10 at
1f10: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 20  tached database 
1f20: 66 69 6c 65 73 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53  files.</p>.}...S
1f30: 65 63 74 69 6f 6e 20 7b 42 45 47 49 4e 20 54 52  ection {BEGIN TR
1f40: 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73  ANSACTION} trans
1f50: 61 63 74 69 6f 6e 0a 0a 53 79 6e 74 61 78 20 7b  action..Syntax {
1f60: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
1f70: 0a 42 45 47 49 4e 20 5b 20 44 45 46 45 52 52 45  .BEGIN [ DEFERRE
1f80: 44 20 7c 20 49 4d 4d 45 44 49 41 54 45 20 7c 20  D | IMMEDIATE | 
1f90: 45 58 43 4c 55 53 49 56 45 20 5d 20 5b 54 52 41  EXCLUSIVE ] [TRA
1fa0: 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e  NSACTION [<name>
1fb0: 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ]].}.Syntax {sql
1fc0: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 45 4e  -statement} {.EN
1fd0: 44 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b  D [TRANSACTION [
1fe0: 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53 79 6e 74 61  <name>]].}.Synta
1ff0: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
2000: 7d 20 7b 0a 43 4f 4d 4d 49 54 20 5b 54 52 41 4e  } {.COMMIT [TRAN
2010: 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d  SACTION [<name>]
2020: 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ].}.Syntax {sql-
2030: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 52 4f 4c  statement} {.ROL
2040: 4c 42 41 43 4b 20 5b 54 52 41 4e 53 41 43 54 49  LBACK [TRANSACTI
2050: 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 0a  ON [<name>]].}..
2060: 70 75 74 73 20 7b 0a 3c 70 3e 42 65 67 69 6e 6e  puts {.<p>Beginn
2070: 69 6e 67 20 69 6e 20 76 65 72 73 69 6f 6e 20 32  ing in version 2
2080: 2e 30 2c 20 53 51 4c 69 74 65 20 73 75 70 70 6f  .0, SQLite suppo
2090: 72 74 73 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  rts transactions
20a0: 20 77 69 74 68 0a 72 6f 6c 6c 62 61 63 6b 20 61   with.rollback a
20b0: 6e 64 20 61 74 6f 6d 69 63 20 63 6f 6d 6d 69 74  nd atomic commit
20c0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70  .</p>..<p>The op
20d0: 74 69 6f 6e 61 6c 20 74 72 61 6e 73 61 63 74 69  tional transacti
20e0: 6f 6e 20 6e 61 6d 65 20 69 73 20 69 67 6e 6f 72  on name is ignor
20f0: 65 64 2e 20 53 51 4c 69 74 65 20 63 75 72 72 65  ed. SQLite curre
2100: 6e 74 6c 79 20 0a 64 6f 65 73 20 6e 6f 74 20 61  ntly .does not a
2110: 6c 6c 6f 77 20 6e 65 73 74 65 64 20 74 72 61 6e  llow nested tran
2120: 73 61 63 74 69 6f 6e 73 2e 3c 2f 70 3e 0a 0a 3c  sactions.</p>..<
2130: 70 3e 0a 4e 6f 20 63 68 61 6e 67 65 73 20 63 61  p>.No changes ca
2140: 6e 20 62 65 20 6d 61 64 65 20 74 6f 20 74 68 65  n be made to the
2150: 20 64 61 74 61 62 61 73 65 20 65 78 63 65 70 74   database except
2160: 20 77 69 74 68 69 6e 20 61 20 74 72 61 6e 73 61   within a transa
2170: 63 74 69 6f 6e 2e 0a 41 6e 79 20 63 6f 6d 6d 61  ction..Any comma
2180: 6e 64 20 74 68 61 74 20 63 68 61 6e 67 65 73 20  nd that changes 
2190: 74 68 65 20 64 61 74 61 62 61 73 65 20 28 62 61  the database (ba
21a0: 73 69 63 61 6c 6c 79 2c 20 61 6e 79 20 53 51 4c  sically, any SQL
21b0: 20 63 6f 6d 6d 61 6e 64 0a 6f 74 68 65 72 20 74   command.other t
21c0: 68 61 6e 20 53 45 4c 45 43 54 29 20 77 69 6c 6c  han SELECT) will
21d0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73   automatically s
21e0: 74 61 72 74 20 61 20 74 72 61 6e 73 61 63 74 69  tart a transacti
21f0: 6f 6e 20 69 66 0a 6f 6e 65 20 69 73 20 6e 6f 74  on if.one is not
2200: 20 61 6c 72 65 61 64 79 20 69 6e 20 65 66 66 65   already in effe
2210: 63 74 2e 20 20 41 75 74 6f 6d 61 74 69 63 61 6c  ct.  Automatical
2220: 6c 79 20 73 74 61 72 74 65 64 20 74 72 61 6e 73  ly started trans
2230: 61 63 74 69 6f 6e 73 0a 61 72 65 20 63 6f 6d 6d  actions.are comm
2240: 69 74 74 65 64 20 61 74 20 74 68 65 20 63 6f 6e  itted at the con
2250: 63 6c 75 73 69 6f 6e 20 6f 66 20 74 68 65 20 63  clusion of the c
2260: 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70  ommand..</p>..<p
2270: 3e 0a 54 72 61 6e 73 61 63 74 69 6f 6e 73 20 63  >.Transactions c
2280: 61 6e 20 62 65 20 73 74 61 72 74 65 64 20 6d 61  an be started ma
2290: 6e 75 61 6c 6c 79 20 75 73 69 6e 67 20 74 68 65  nually using the
22a0: 20 42 45 47 49 4e 0a 63 6f 6d 6d 61 6e 64 2e 20   BEGIN.command. 
22b0: 20 53 75 63 68 20 74 72 61 6e 73 61 63 74 69 6f   Such transactio
22c0: 6e 73 20 75 73 75 61 6c 6c 79 20 70 65 72 73 69  ns usually persi
22d0: 73 74 20 75 6e 74 69 6c 20 74 68 65 20 6e 65 78  st until the nex
22e0: 74 0a 43 4f 4d 4d 49 54 20 6f 72 20 52 4f 4c 4c  t.COMMIT or ROLL
22f0: 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 2e 20 20 42  BACK command.  B
2300: 75 74 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  ut a transaction
2310: 20 77 69 6c 6c 20 61 6c 73 6f 20 0a 52 4f 4c 4c   will also .ROLL
2320: 42 41 43 4b 20 69 66 20 74 68 65 20 64 61 74 61  BACK if the data
2330: 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64 20 6f  base is closed o
2340: 72 20 69 66 20 61 6e 20 65 72 72 6f 72 20 6f 63  r if an error oc
2350: 63 75 72 73 0a 61 6e 64 20 74 68 65 20 52 4f 4c  curs.and the ROL
2360: 4c 42 41 43 4b 20 63 6f 6e 66 6c 69 63 74 20 72  LBACK conflict r
2370: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
2380: 74 68 6d 20 69 73 20 73 70 65 63 69 66 69 65 64  thm is specified
2390: 2e 0a 53 65 65 20 74 68 65 20 64 6f 63 75 6d 65  ..See the docume
23a0: 6e 74 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20 3c  ntation on the <
23b0: 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63  a href="#conflic
23c0: 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f  t">ON CONFLICT</
23d0: 61 3e 0a 63 6c 61 75 73 65 20 66 6f 72 20 61 64  a>.clause for ad
23e0: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
23f0: 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 52  tion about the R
2400: 4f 4c 4c 42 41 43 4b 0a 63 6f 6e 66 6c 69 63 74  OLLBACK.conflict
2410: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f   resolution algo
2420: 72 69 74 68 6d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  rithm..</p>..<p>
2430: 0a 49 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69  .In SQLite versi
2440: 6f 6e 20 33 2e 30 2e 38 20 61 6e 64 20 6c 61 74  on 3.0.8 and lat
2450: 65 72 2c 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  er, transactions
2460: 20 63 61 6e 20 62 65 20 64 65 66 65 72 72 65 64   can be deferred
2470: 2c 0a 69 6d 6d 65 64 69 61 74 65 2c 20 6f 72 20  ,.immediate, or 
2480: 65 78 63 6c 75 73 69 76 65 2e 20 20 44 65 66 65  exclusive.  Defe
2490: 72 72 65 64 20 6d 65 61 6e 73 20 74 68 61 74 20  rred means that 
24a0: 6e 6f 20 6c 6f 63 6b 73 20 61 72 65 20 61 63 71  no locks are acq
24b0: 75 69 72 65 64 0a 6f 6e 20 74 68 65 20 64 61 74  uired.on the dat
24c0: 61 62 61 73 65 20 75 6e 74 69 6c 20 74 68 65 20  abase until the 
24d0: 64 61 74 61 62 61 73 65 20 69 73 20 66 69 72 73  database is firs
24e0: 74 20 61 63 63 65 73 73 65 64 2e 20 20 54 68 75  t accessed.  Thu
24f0: 73 20 77 69 74 68 20 61 0a 64 65 66 65 72 72 65  s with a.deferre
2500: 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 74  d transaction, t
2510: 68 65 20 42 45 47 49 4e 20 73 74 61 74 65 6d 65  he BEGIN stateme
2520: 6e 74 20 69 74 73 65 6c 66 20 64 6f 65 73 20 6e  nt itself does n
2530: 6f 74 68 69 6e 67 2e 20 20 4c 6f 63 6b 73 0a 61  othing.  Locks.a
2540: 72 65 20 6e 6f 74 20 61 63 71 75 69 72 65 64 20  re not acquired 
2550: 75 6e 74 69 6c 20 74 68 65 20 66 69 72 73 74 20  until the first 
2560: 72 65 61 64 20 6f 72 20 77 72 69 74 65 20 6f 70  read or write op
2570: 65 72 61 74 69 6f 6e 2e 20 20 54 68 65 20 66 69  eration.  The fi
2580: 72 73 74 20 72 65 61 64 0a 6f 70 65 72 61 74 69  rst read.operati
2590: 6f 6e 20 61 67 61 69 6e 73 74 20 61 20 64 61 74  on against a dat
25a0: 61 62 61 73 65 20 63 72 65 61 74 65 73 20 61 20  abase creates a 
25b0: 53 48 41 52 45 44 20 6c 6f 63 6b 20 61 6e 64 20  SHARED lock and 
25c0: 74 68 65 20 66 69 72 73 74 0a 77 72 69 74 65 20  the first.write 
25d0: 6f 70 65 72 61 74 69 6f 6e 20 63 72 65 61 74 65  operation create
25e0: 73 20 61 20 52 45 53 45 52 56 45 44 20 6c 6f 63  s a RESERVED loc
25f0: 6b 2e 20 20 20 42 65 63 61 75 73 65 20 74 68 65  k.   Because the
2600: 20 61 63 71 75 69 73 69 74 69 6f 6e 20 6f 66 0a   acquisition of.
2610: 6c 6f 63 6b 73 20 69 73 20 64 65 66 65 72 72 65  locks is deferre
2620: 64 20 75 6e 74 69 6c 20 74 68 65 79 20 61 72 65  d until they are
2630: 20 6e 65 65 64 65 64 2c 20 69 74 20 69 73 20 70   needed, it is p
2640: 6f 73 73 69 62 6c 65 20 74 68 61 74 20 61 6e 6f  ossible that ano
2650: 74 68 65 72 0a 74 68 72 65 61 64 20 6f 72 20 70  ther.thread or p
2660: 72 6f 63 65 73 73 20 63 6f 75 6c 64 20 63 72 65  rocess could cre
2670: 61 74 65 20 61 20 73 65 70 61 72 61 74 65 20 74  ate a separate t
2680: 72 61 6e 73 61 63 74 69 6f 6e 20 61 6e 64 20 77  ransaction and w
2690: 72 69 74 65 20 74 6f 0a 74 68 65 20 64 61 74 61  rite to.the data
26a0: 62 61 73 65 20 61 66 74 65 72 20 74 68 65 20 42  base after the B
26b0: 45 47 49 4e 20 6f 6e 20 74 68 65 20 63 75 72 72  EGIN on the curr
26c0: 65 6e 74 20 74 68 72 65 61 64 20 68 61 73 20 65  ent thread has e
26d0: 78 65 63 75 74 65 64 2e 0a 49 66 20 74 68 65 20  xecuted..If the 
26e0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 69  transaction is i
26f0: 6d 6d 65 64 69 61 74 65 2c 20 74 68 65 6e 20 52  mmediate, then R
2700: 45 53 45 52 56 45 44 20 6c 6f 63 6b 73 0a 61 72  ESERVED locks.ar
2710: 65 20 61 63 71 75 69 72 65 64 20 6f 6e 20 61 6c  e acquired on al
2720: 6c 20 64 61 74 61 62 61 73 65 73 20 61 73 20 73  l databases as s
2730: 6f 6f 6e 20 61 73 20 74 68 65 20 42 45 47 49 4e  oon as the BEGIN
2740: 20 63 6f 6d 6d 61 6e 64 20 69 73 0a 65 78 65 63   command is.exec
2750: 75 74 65 64 2c 20 77 69 74 68 6f 75 74 20 77 61  uted, without wa
2760: 69 74 69 6e 67 20 66 6f 72 20 74 68 65 0a 64 61  iting for the.da
2770: 74 61 62 61 73 65 20 74 6f 20 62 65 20 75 73 65  tabase to be use
2780: 64 2e 20 20 41 66 74 65 72 20 61 20 42 45 47 49  d.  After a BEGI
2790: 4e 20 49 4d 4d 45 44 49 41 54 45 2c 20 79 6f 75  N IMMEDIATE, you
27a0: 20 61 72 65 20 67 75 61 72 61 6e 74 65 65 64 20   are guaranteed 
27b0: 74 68 61 74 0a 6e 6f 20 6f 74 68 65 72 20 74 68  that.no other th
27c0: 72 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20  read or process 
27d0: 77 69 6c 6c 20 62 65 20 61 62 6c 65 20 74 6f 20  will be able to 
27e0: 77 72 69 74 65 20 74 6f 20 74 68 65 20 64 61 74  write to the dat
27f0: 61 62 61 73 65 20 6f 72 0a 64 6f 20 61 20 42 45  abase or.do a BE
2800: 47 49 4e 20 49 4d 4d 45 44 49 41 54 45 20 6f 72  GIN IMMEDIATE or
2810: 20 42 45 47 49 4e 20 45 58 43 4c 55 53 49 56 45   BEGIN EXCLUSIVE
2820: 2e 20 20 4f 74 68 65 72 20 70 72 6f 63 65 73 73  .  Other process
2830: 65 73 20 63 61 6e 20 63 6f 6e 74 69 6e 75 65 0a  es can continue.
2840: 74 6f 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  to read from the
2850: 20 64 61 74 61 62 61 73 65 2c 20 68 6f 77 65 76   database, howev
2860: 65 72 2e 20 20 41 6e 20 65 78 63 6c 75 73 69 76  er.  An exclusiv
2870: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 61  e transaction ca
2880: 75 73 65 73 0a 45 58 43 4c 55 53 49 56 45 20 6c  uses.EXCLUSIVE l
2890: 6f 63 6b 73 20 74 6f 20 62 65 20 61 63 71 75 69  ocks to be acqui
28a0: 72 65 64 20 6f 6e 20 61 6c 6c 20 64 61 74 61 62  red on all datab
28b0: 61 73 65 73 2e 20 20 41 66 74 65 72 20 61 20 42  ases.  After a B
28c0: 45 47 49 4e 0a 45 58 43 4c 55 53 49 56 45 2c 20  EGIN.EXCLUSIVE, 
28d0: 79 6f 75 20 61 72 65 20 67 75 61 72 61 6e 74 65  you are guarante
28e0: 65 64 20 74 68 61 74 20 6e 6f 20 6f 74 68 65 72  ed that no other
28f0: 20 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63 65   thread or proce
2900: 73 73 20 77 69 6c 6c 0a 62 65 20 61 62 6c 65 20  ss will.be able 
2910: 74 6f 20 72 65 61 64 20 6f 72 20 77 72 69 74 65  to read or write
2920: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 75 6e   the database un
2930: 74 69 6c 20 74 68 65 20 74 72 61 6e 73 61 63 74  til the transact
2940: 69 6f 6e 20 69 73 0a 63 6f 6d 70 6c 65 74 65 2e  ion is.complete.
2950: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41 20 64 65 73  .</p>..<p>.A des
2960: 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65 20  cription of the 
2970: 6d 65 61 6e 69 6e 67 20 6f 66 20 53 48 41 52 45  meaning of SHARE
2980: 44 2c 20 52 45 53 45 52 56 45 44 2c 20 61 6e 64  D, RESERVED, and
2990: 20 45 58 43 4c 55 53 49 56 45 20 6c 6f 63 6b 73   EXCLUSIVE locks
29a0: 0a 69 73 20 61 76 61 69 6c 61 62 6c 65 20 3c 61  .is available <a
29b0: 20 68 72 65 66 3d 22 6c 6f 63 6b 69 6e 67 76 33   href="lockingv3
29c0: 2e 68 74 6d 6c 22 3e 73 65 70 61 72 61 74 65 6c  .html">separatel
29d0: 79 3c 2f 61 3e 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  y</a>..</p>..<p>
29e0: 0a 54 68 65 20 64 65 66 61 75 6c 74 20 62 65 68  .The default beh
29f0: 61 76 69 6f 72 20 66 6f 72 20 53 51 4c 69 74 65  avior for SQLite
2a00: 20 76 65 72 73 69 6f 6e 20 33 2e 30 2e 38 20 69   version 3.0.8 i
2a10: 73 20 61 0a 64 65 66 65 72 72 65 64 20 74 72 61  s a.deferred tra
2a20: 6e 73 61 63 74 69 6f 6e 2e 20 20 46 6f 72 20 53  nsaction.  For S
2a30: 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e  QLite version 3.
2a40: 30 2e 30 20 74 68 72 6f 75 67 68 20 33 2e 30 2e  0.0 through 3.0.
2a50: 37 2c 0a 64 65 66 65 72 72 65 64 20 69 73 20 74  7,.deferred is t
2a60: 68 65 20 6f 6e 6c 79 20 6b 69 6e 64 20 6f 66 20  he only kind of 
2a70: 74 72 61 6e 73 61 63 74 69 6f 6e 20 61 76 61 69  transaction avai
2a80: 6c 61 62 6c 65 2e 20 20 46 6f 72 20 53 51 4c 69  lable.  For SQLi
2a90: 74 65 0a 76 65 72 73 69 6f 6e 20 32 2e 38 20 61  te.version 2.8 a
2aa0: 6e 64 20 65 61 72 6c 69 65 72 2c 20 61 6c 6c 20  nd earlier, all 
2ab0: 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 61 72 65  transactions are
2ac0: 20 65 78 63 6c 75 73 69 76 65 2e 0a 3c 2f 70 3e   exclusive..</p>
2ad0: 0a 0a 3c 70 3e 0a 54 68 65 20 43 4f 4d 4d 49 54  ..<p>.The COMMIT
2ae0: 20 63 6f 6d 6d 61 6e 64 20 64 6f 65 73 20 6e 6f   command does no
2af0: 74 20 61 63 74 75 61 6c 6c 79 20 70 65 72 66 6f  t actually perfo
2b00: 72 6d 20 61 20 63 6f 6d 6d 69 74 20 75 6e 74 69  rm a commit unti
2b10: 6c 20 61 6c 6c 0a 70 65 6e 64 69 6e 67 20 53 51  l all.pending SQ
2b20: 4c 20 63 6f 6d 6d 61 6e 64 73 20 66 69 6e 69 73  L commands finis
2b30: 68 2e 20 20 54 68 75 73 20 69 66 20 74 77 6f 20  h.  Thus if two 
2b40: 6f 72 20 6d 6f 72 65 20 53 45 4c 45 43 54 20 73  or more SELECT s
2b50: 74 61 74 65 6d 65 6e 74 73 0a 61 72 65 20 69 6e  tatements.are in
2b60: 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 70   the middle of p
2b70: 72 6f 63 65 73 73 69 6e 67 20 61 6e 64 20 61 20  rocessing and a 
2b80: 43 4f 4d 4d 49 54 20 69 73 20 65 78 65 63 75 74  COMMIT is execut
2b90: 65 64 2c 20 74 68 65 20 63 6f 6d 6d 69 74 0a 77  ed, the commit.w
2ba0: 69 6c 6c 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79  ill not actually
2bb0: 20 6f 63 63 75 72 20 75 6e 74 69 6c 20 61 6c 6c   occur until all
2bc0: 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e   SELECT statemen
2bd0: 74 73 20 66 69 6e 69 73 68 2e 0a 3c 2f 70 3e 0a  ts finish..</p>.
2be0: 0a 3c 70 3e 0a 41 6e 20 61 74 74 65 6d 70 74 20  .<p>.An attempt 
2bf0: 74 6f 20 65 78 65 63 75 74 65 20 43 4f 4d 4d 49  to execute COMMI
2c00: 54 20 6d 69 67 68 74 20 72 65 73 75 6c 74 20 69  T might result i
2c10: 6e 20 61 6e 20 53 51 4c 49 54 45 5f 42 55 53 59  n an SQLITE_BUSY
2c20: 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0a 54 68   return code..Th
2c30: 69 73 20 69 6e 64 69 63 61 74 65 73 20 74 68 61  is indicates tha
2c40: 74 20 61 6e 6f 74 68 65 72 20 74 68 72 65 61 64  t another thread
2c50: 20 6f 72 20 70 72 6f 63 65 73 73 20 68 61 64 20   or process had 
2c60: 61 20 72 65 61 64 20 6c 6f 63 6b 20 6f 6e 20 74  a read lock on t
2c70: 68 65 20 64 61 74 61 62 61 73 65 0a 74 68 61 74  he database.that
2c80: 20 70 72 65 76 65 6e 74 65 64 20 74 68 65 20 64   prevented the d
2c90: 61 74 61 62 61 73 65 20 66 72 6f 6d 20 62 65 69  atabase from bei
2ca0: 6e 67 20 75 70 64 61 74 65 64 2e 20 20 57 68 65  ng updated.  Whe
2cb0: 6e 20 43 4f 4d 4d 49 54 20 66 61 69 6c 73 20 69  n COMMIT fails i
2cc0: 6e 20 74 68 69 73 0a 77 61 79 2c 20 74 68 65 20  n this.way, the 
2cd0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 72 65 6d 61  transaction rema
2ce0: 69 6e 73 20 61 63 74 69 76 65 20 61 6e 64 20 74  ins active and t
2cf0: 68 65 20 43 4f 4d 4d 49 54 20 63 61 6e 20 62 65  he COMMIT can be
2d00: 20 72 65 74 72 69 65 64 20 6c 61 74 65 72 0a 61   retried later.a
2d10: 66 74 65 72 20 74 68 65 20 72 65 61 64 65 72 20  fter the reader 
2d20: 68 61 73 20 68 61 64 20 61 20 63 68 61 6e 63 65  has had a chance
2d30: 20 74 6f 20 63 6c 65 61 72 2e 0a 3c 2f 70 3e 0a   to clear..</p>.
2d40: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 63 6f 6d 6d  }...Section comm
2d50: 65 6e 74 20 63 6f 6d 6d 65 6e 74 0a 0a 53 79 6e  ent comment..Syn
2d60: 74 61 78 20 7b 63 6f 6d 6d 65 6e 74 7d 20 7b 3c  tax {comment} {<
2d70: 53 51 4c 2d 63 6f 6d 6d 65 6e 74 3e 20 7c 20 3c  SQL-comment> | <
2d80: 43 2d 63 6f 6d 6d 65 6e 74 3e 0a 7d 20 7b 53 51  C-comment>.} {SQ
2d90: 4c 2d 63 6f 6d 6d 65 6e 74 7d 20 7b 2d 2d 20 3c  L-comment} {-- <
2da0: 73 69 6e 67 6c 65 2d 6c 69 6e 65 3e 0a 7d 20 7b  single-line>.} {
2db0: 43 2d 63 6f 6d 6d 65 6e 74 7d 20 7b 2f 53 54 41  C-comment} {/STA
2dc0: 52 20 3c 6d 75 6c 74 69 70 6c 65 2d 6c 69 6e 65  R <multiple-line
2dd0: 73 3e 20 5b 53 54 41 52 2f 5d 0a 7d 0a 0a 70 75  s> [STAR/].}..pu
2de0: 74 73 20 7b 0a 3c 70 3e 20 43 6f 6d 6d 65 6e 74  ts {.<p> Comment
2df0: 73 20 61 72 65 6e 27 74 20 53 51 4c 20 63 6f 6d  s aren't SQL com
2e00: 6d 61 6e 64 73 2c 20 62 75 74 20 63 61 6e 20 6f  mands, but can o
2e10: 63 63 75 72 20 69 6e 20 53 51 4c 20 71 75 65 72  ccur in SQL quer
2e20: 69 65 73 2e 20 54 68 65 79 20 61 72 65 20 0a 74  ies. They are .t
2e30: 72 65 61 74 65 64 20 61 73 20 77 68 69 74 65 73  reated as whites
2e40: 70 61 63 65 20 62 79 20 74 68 65 20 70 61 72 73  pace by the pars
2e50: 65 72 2e 20 20 54 68 65 79 20 63 61 6e 20 62 65  er.  They can be
2e60: 67 69 6e 20 61 6e 79 77 68 65 72 65 20 77 68 69  gin anywhere whi
2e70: 74 65 73 70 61 63 65 20 0a 63 61 6e 20 62 65 20  tespace .can be 
2e80: 66 6f 75 6e 64 2c 20 69 6e 63 6c 75 64 69 6e 67  found, including
2e90: 20 69 6e 73 69 64 65 20 65 78 70 72 65 73 73 69   inside expressi
2ea0: 6f 6e 73 20 74 68 61 74 20 73 70 61 6e 20 6d 75  ons that span mu
2eb0: 6c 74 69 70 6c 65 20 6c 69 6e 65 73 2e 0a 3c 2f  ltiple lines..</
2ec0: 70 3e 0a 0a 3c 70 3e 20 53 51 4c 20 63 6f 6d 6d  p>..<p> SQL comm
2ed0: 65 6e 74 73 20 6f 6e 6c 79 20 65 78 74 65 6e 64  ents only extend
2ee0: 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74   to the end of t
2ef0: 68 65 20 63 75 72 72 65 6e 74 20 6c 69 6e 65 2e  he current line.
2f00: 3c 2f 70 3e 0a 0a 3c 70 3e 20 43 20 63 6f 6d 6d  </p>..<p> C comm
2f10: 65 6e 74 73 20 63 61 6e 20 73 70 61 6e 20 61 6e  ents can span an
2f20: 79 20 6e 75 6d 62 65 72 20 6f 66 20 6c 69 6e 65  y number of line
2f30: 73 2e 20 20 49 66 20 74 68 65 72 65 20 69 73 20  s.  If there is 
2f40: 6e 6f 20 74 65 72 6d 69 6e 61 74 69 6e 67 0a 64  no terminating.d
2f50: 65 6c 69 6d 69 74 65 72 2c 20 74 68 65 79 20 65  elimiter, they e
2f60: 78 74 65 6e 64 20 74 6f 20 74 68 65 20 65 6e 64  xtend to the end
2f70: 20 6f 66 20 74 68 65 20 69 6e 70 75 74 2e 20 20   of the input.  
2f80: 54 68 69 73 20 69 73 20 6e 6f 74 20 74 72 65 61  This is not trea
2f90: 74 65 64 20 61 73 0a 61 6e 20 65 72 72 6f 72 2e  ted as.an error.
2fa0: 20 20 41 20 6e 65 77 20 53 51 4c 20 73 74 61 74    A new SQL stat
2fb0: 65 6d 65 6e 74 20 63 61 6e 20 62 65 67 69 6e 20  ement can begin 
2fc0: 6f 6e 20 61 20 6c 69 6e 65 20 61 66 74 65 72 20  on a line after 
2fd0: 61 20 6d 75 6c 74 69 6c 69 6e 65 0a 63 6f 6d 6d  a multiline.comm
2fe0: 65 6e 74 20 65 6e 64 73 2e 20 20 43 20 63 6f 6d  ent ends.  C com
2ff0: 6d 65 6e 74 73 20 63 61 6e 20 62 65 20 65 6d 62  ments can be emb
3000: 65 64 64 65 64 20 61 6e 79 77 68 65 72 65 20 77  edded anywhere w
3010: 68 69 74 65 73 70 61 63 65 20 63 61 6e 20 6f 63  hitespace can oc
3020: 63 75 72 2c 0a 69 6e 63 6c 75 64 69 6e 67 20 69  cur,.including i
3030: 6e 73 69 64 65 20 65 78 70 72 65 73 73 69 6f 6e  nside expression
3040: 73 2c 20 61 6e 64 20 69 6e 20 74 68 65 20 6d 69  s, and in the mi
3050: 64 64 6c 65 20 6f 66 20 6f 74 68 65 72 20 53 51  ddle of other SQ
3060: 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 43 20  L statements..C 
3070: 63 6f 6d 6d 65 6e 74 73 20 64 6f 20 6e 6f 74 20  comments do not 
3080: 6e 65 73 74 2e 20 20 53 51 4c 20 63 6f 6d 6d 65  nest.  SQL comme
3090: 6e 74 73 20 69 6e 73 69 64 65 20 61 20 43 20 63  nts inside a C c
30a0: 6f 6d 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 69  omment will be i
30b0: 67 6e 6f 72 65 64 2e 0a 3c 2f 70 3e 0a 7d 0a 0a  gnored..</p>.}..
30c0: 0a 53 65 63 74 69 6f 6e 20 43 4f 50 59 20 63 6f  .Section COPY co
30d0: 70 79 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  py..Syntax {sql-
30e0: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43 4f 50  statement} {.COP
30f0: 59 20 5b 20 4f 52 20 3c 63 6f 6e 66 6c 69 63 74  Y [ OR <conflict
3100: 2d 61 6c 67 6f 72 69 74 68 6d 3e 20 5d 20 5b 3c  -algorithm> ] [<
3110: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e  database-name> .
3120: 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 46  ] <table-name> F
3130: 52 4f 4d 20 3c 66 69 6c 65 6e 61 6d 65 3e 0a 5b  ROM <filename>.[
3140: 20 55 53 49 4e 47 20 44 45 4c 49 4d 49 54 45 52   USING DELIMITER
3150: 53 20 3c 64 65 6c 69 6d 3e 20 5d 0a 7d 0a 0a 70  S <delim> ].}..p
3160: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43 4f 50  uts {.<p>The COP
3170: 59 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 76 61  Y command is ava
3180: 69 6c 61 62 6c 65 20 69 6e 20 53 51 4c 69 74 65  ilable in SQLite
3190: 20 76 65 72 73 69 6f 6e 20 32 2e 38 20 61 6e 64   version 2.8 and
31a0: 20 65 61 72 6c 69 65 72 2e 0a 54 68 65 20 43 4f   earlier..The CO
31b0: 50 59 20 63 6f 6d 6d 61 6e 64 20 68 61 73 20 62  PY command has b
31c0: 65 65 6e 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d  een removed from
31d0: 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20   SQLite version 
31e0: 33 2e 30 20 64 75 65 20 74 6f 0a 63 6f 6d 70 6c  3.0 due to.compl
31f0: 69 63 61 74 69 6f 6e 73 20 69 6e 20 74 72 79 69  ications in tryi
3200: 6e 67 20 74 6f 20 73 75 70 70 6f 72 74 20 69 74  ng to support it
3210: 20 69 6e 20 61 20 6d 69 78 65 64 20 55 54 46 2d   in a mixed UTF-
3220: 38 2f 31 36 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  8/16 environment
3230: 2e 0a 49 6e 20 76 65 72 73 69 6f 6e 20 33 2e 30  ..In version 3.0
3240: 2c 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 73  , the <a href="s
3250: 71 6c 69 74 65 2e 68 74 6d 6c 22 3e 63 6f 6d 6d  qlite.html">comm
3260: 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c 6c 3c 2f  and-line shell</
3270: 61 3e 0a 63 6f 6e 74 61 69 6e 73 20 61 20 6e 65  a>.contains a ne
3280: 77 20 63 6f 6d 6d 61 6e 64 20 3c 62 3e 2e 69 6d  w command <b>.im
3290: 70 6f 72 74 3c 2f 62 3e 20 74 68 61 74 20 63 61  port</b> that ca
32a0: 6e 20 62 65 20 75 73 65 64 20 61 73 20 61 20 73  n be used as a s
32b0: 75 62 73 74 69 74 75 74 65 0a 66 6f 72 20 43 4f  ubstitute.for CO
32c0: 50 59 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  PY..</p>..<p>The
32d0: 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 69 73   COPY command is
32e0: 20 61 6e 20 65 78 74 65 6e 73 69 6f 6e 20 75 73   an extension us
32f0: 65 64 20 74 6f 20 6c 6f 61 64 20 6c 61 72 67 65  ed to load large
3300: 20 61 6d 6f 75 6e 74 73 20 6f 66 0a 64 61 74 61   amounts of.data
3310: 20 69 6e 74 6f 20 61 20 74 61 62 6c 65 2e 20 20   into a table.  
3320: 49 74 20 69 73 20 6d 6f 64 65 6c 65 64 20 61 66  It is modeled af
3330: 74 65 72 20 61 20 73 69 6d 69 6c 61 72 20 63 6f  ter a similar co
3340: 6d 6d 61 6e 64 20 66 6f 75 6e 64 0a 69 6e 20 50  mmand found.in P
3350: 6f 73 74 67 72 65 53 51 4c 2e 20 20 49 6e 20 66  ostgreSQL.  In f
3360: 61 63 74 2c 20 74 68 65 20 53 51 4c 69 74 65 20  act, the SQLite 
3370: 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 69 73 20  COPY command is 
3380: 73 70 65 63 69 66 69 63 61 6c 6c 79 0a 64 65 73  specifically.des
3390: 69 67 6e 65 64 20 74 6f 20 62 65 20 61 62 6c 65  igned to be able
33a0: 20 74 6f 20 72 65 61 64 20 74 68 65 20 6f 75 74   to read the out
33b0: 70 75 74 20 6f 66 20 74 68 65 20 50 6f 73 74 67  put of the Postg
33c0: 72 65 53 51 4c 20 64 75 6d 70 0a 75 74 69 6c 69  reSQL dump.utili
33d0: 74 79 20 3c 62 3e 70 67 5f 64 75 6d 70 3c 2f 62  ty <b>pg_dump</b
33e0: 3e 20 73 6f 20 74 68 61 74 20 64 61 74 61 20 63  > so that data c
33f0: 61 6e 20 62 65 20 65 61 73 69 6c 79 20 74 72 61  an be easily tra
3400: 6e 73 66 65 72 72 65 64 20 66 72 6f 6d 0a 50 6f  nsferred from.Po
3410: 73 74 67 72 65 53 51 4c 20 69 6e 74 6f 20 53 51  stgreSQL into SQ
3420: 4c 69 74 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  Lite.</p>..<p>Th
3430: 65 20 74 61 62 6c 65 2d 6e 61 6d 65 20 69 73 20  e table-name is 
3440: 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 6e 20 65  the name of an e
3450: 78 69 73 74 69 6e 67 20 74 61 62 6c 65 20 77 68  xisting table wh
3460: 69 63 68 20 69 73 20 74 6f 0a 62 65 20 66 69 6c  ich is to.be fil
3470: 6c 65 64 20 77 69 74 68 20 64 61 74 61 2e 20 20  led with data.  
3480: 54 68 65 20 66 69 6c 65 6e 61 6d 65 20 69 73 20  The filename is 
3490: 61 20 73 74 72 69 6e 67 20 6f 72 20 69 64 65 6e  a string or iden
34a0: 74 69 66 69 65 72 20 74 68 61 74 0a 6e 61 6d 65  tifier that.name
34b0: 73 20 61 20 66 69 6c 65 20 66 72 6f 6d 20 77 68  s a file from wh
34c0: 69 63 68 20 64 61 74 61 20 77 69 6c 6c 20 62 65  ich data will be
34d0: 20 72 65 61 64 2e 20 20 54 68 65 20 66 69 6c 65   read.  The file
34e0: 6e 61 6d 65 20 63 61 6e 20 62 65 0a 74 68 65 20  name can be.the 
34f0: 3c 62 3e 53 54 44 49 4e 3c 2f 62 3e 20 74 6f 20  <b>STDIN</b> to 
3500: 72 65 61 64 20 64 61 74 61 20 66 72 6f 6d 20 73  read data from s
3510: 74 61 6e 64 61 72 64 20 69 6e 70 75 74 2e 3c 2f  tandard input.</
3520: 70 3e 0a 0a 3c 70 3e 45 61 63 68 20 6c 69 6e 65  p>..<p>Each line
3530: 20 6f 66 20 74 68 65 20 69 6e 70 75 74 20 66 69   of the input fi
3540: 6c 65 20 69 73 20 63 6f 6e 76 65 72 74 65 64 20  le is converted 
3550: 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65 20 72 65  into a single re
3560: 63 6f 72 64 0a 69 6e 20 74 68 65 20 74 61 62 6c  cord.in the tabl
3570: 65 2e 20 20 43 6f 6c 75 6d 6e 73 20 61 72 65 20  e.  Columns are 
3580: 73 65 70 61 72 61 74 65 64 20 62 79 20 74 61 62  separated by tab
3590: 73 2e 20 20 49 66 20 61 20 74 61 62 20 6f 63 63  s.  If a tab occ
35a0: 75 72 73 20 61 73 0a 64 61 74 61 20 77 69 74 68  urs as.data with
35b0: 69 6e 20 61 20 63 6f 6c 75 6d 6e 2c 20 74 68 65  in a column, the
35c0: 6e 20 74 68 61 74 20 74 61 62 20 69 73 20 70 72  n that tab is pr
35d0: 65 63 65 64 65 64 20 62 79 20 61 20 62 61 73 6b  eceded by a bask
35e0: 73 6c 61 73 68 20 22 5c 22 0a 63 68 61 72 61 63  slash "\".charac
35f0: 74 65 72 2e 20 20 41 20 62 61 73 6b 73 6c 61 73  ter.  A baskslas
3600: 68 20 69 6e 20 74 68 65 20 64 61 74 61 20 61 70  h in the data ap
3610: 70 65 61 72 73 20 61 73 20 74 77 6f 20 62 61 63  pears as two bac
3620: 6b 73 6c 61 73 68 65 73 20 69 6e 0a 61 20 72 6f  kslashes in.a ro
3630: 77 2e 20 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c  w.  The optional
3640: 20 55 53 49 4e 47 20 44 45 4c 49 4d 49 54 45 52   USING DELIMITER
3650: 53 20 63 6c 61 75 73 65 20 63 61 6e 20 73 70 65  S clause can spe
3660: 63 69 66 79 20 61 20 64 65 6c 69 6d 69 74 65 72  cify a delimiter
3670: 0a 6f 74 68 65 72 20 74 68 61 6e 20 74 61 62 2e  .other than tab.
3680: 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 20 63 6f  </p>..<p>If a co
3690: 6c 75 6d 6e 20 63 6f 6e 73 69 73 74 73 20 6f 66  lumn consists of
36a0: 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20 22   the character "
36b0: 5c 4e 22 2c 20 74 68 61 74 20 63 6f 6c 75 6d 6e  \N", that column
36c0: 20 69 73 20 66 69 6c 6c 65 64 0a 77 69 74 68 20   is filled.with 
36d0: 74 68 65 20 76 61 6c 75 65 20 4e 55 4c 4c 2e 3c  the value NULL.<
36e0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69  /p>..<p>The opti
36f0: 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c  onal conflict-cl
3700: 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20  ause allows the 
3710: 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66  specification of
3720: 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a   an alternative.
3730: 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c  constraint confl
3740: 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  ict resolution a
3750: 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20  lgorithm to use 
3760: 66 6f 72 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d  for this one com
3770: 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65  mand..See the se
3780: 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20  ction titled.<a 
3790: 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22  href="#conflict"
37a0: 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e  >ON CONFLICT</a>
37b0: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
37c0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e  information.</p>
37d0: 0a 0a 3c 70 3e 57 68 65 6e 20 74 68 65 20 69 6e  ..<p>When the in
37e0: 70 75 74 20 64 61 74 61 20 73 6f 75 72 63 65 20  put data source 
37f0: 69 73 20 53 54 44 49 4e 2c 20 74 68 65 20 69 6e  is STDIN, the in
3800: 70 75 74 20 63 61 6e 20 62 65 20 74 65 72 6d 69  put can be termi
3810: 6e 61 74 65 64 0a 62 79 20 61 20 6c 69 6e 65 20  nated.by a line 
3820: 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 6f 6e  that contains on
3830: 6c 79 20 61 20 62 61 73 6b 73 6c 61 73 68 20 61  ly a baskslash a
3840: 6e 64 20 61 20 64 6f 74 3a 7d 0a 70 75 74 73 20  nd a dot:}.puts 
3850: 22 5c 22 5b 4f 70 65 72 61 74 6f 72 20 5c 5c 2e  "\"[Operator \\.
3860: 5d 5c 22 2e 3c 2f 70 3e 22 0a 0a 0a 53 65 63 74  ]\".</p>"...Sect
3870: 69 6f 6e 20 7b 43 52 45 41 54 45 20 49 4e 44 45  ion {CREATE INDE
3880: 58 7d 20 63 72 65 61 74 65 69 6e 64 65 78 0a 0a  X} createindex..
3890: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
38a0: 65 6d 65 6e 74 7d 20 7b 0a 43 52 45 41 54 45 20  ement} {.CREATE 
38b0: 5b 55 4e 49 51 55 45 5d 20 49 4e 44 45 58 20 5b  [UNIQUE] INDEX [
38c0: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
38d0: 2e 5d 20 3c 69 6e 64 65 78 2d 6e 61 6d 65 3e 20  .] <index-name> 
38e0: 0a 4f 4e 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e  .ON <table-name>
38f0: 20 28 20 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e   ( <column-name>
3900: 20 5b 2c 20 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65   [, <column-name
3910: 3e 5d 2a 20 29 0a 5b 20 4f 4e 20 43 4f 4e 46 4c  >]* ).[ ON CONFL
3920: 49 43 54 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c  ICT <conflict-al
3930: 67 6f 72 69 74 68 6d 3e 20 5d 0a 7d 20 7b 63 6f  gorithm> ].} {co
3940: 6c 75 6d 6e 2d 6e 61 6d 65 7d 20 7b 0a 3c 6e 61  lumn-name} {.<na
3950: 6d 65 3e 20 5b 20 43 4f 4c 4c 41 54 45 20 3c 63  me> [ COLLATE <c
3960: 6f 6c 6c 61 74 69 6f 6e 2d 6e 61 6d 65 3e 5d 20  ollation-name>] 
3970: 5b 20 41 53 43 20 7c 20 44 45 53 43 20 5d 0a 7d  [ ASC | DESC ].}
3980: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20  ..puts {.<p>The 
3990: 43 52 45 41 54 45 20 49 4e 44 45 58 20 63 6f 6d  CREATE INDEX com
39a0: 6d 61 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f 66  mand consists of
39b0: 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43   the keywords "C
39c0: 52 45 41 54 45 20 49 4e 44 45 58 22 20 66 6f 6c  REATE INDEX" fol
39d0: 6c 6f 77 65 64 0a 62 79 20 74 68 65 20 6e 61 6d  lowed.by the nam
39e0: 65 20 6f 66 20 74 68 65 20 6e 65 77 20 69 6e 64  e of the new ind
39f0: 65 78 2c 20 74 68 65 20 6b 65 79 77 6f 72 64 20  ex, the keyword 
3a00: 22 4f 4e 22 2c 20 74 68 65 20 6e 61 6d 65 20 6f  "ON", the name o
3a10: 66 20 61 20 70 72 65 76 69 6f 75 73 6c 79 0a 63  f a previously.c
3a20: 72 65 61 74 65 64 20 74 61 62 6c 65 20 74 68 61  reated table tha
3a30: 74 20 69 73 20 74 6f 20 62 65 20 69 6e 64 65 78  t is to be index
3a40: 65 64 2c 20 61 6e 64 20 61 20 70 61 72 65 6e 74  ed, and a parent
3a50: 68 65 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20  hesized list of 
3a60: 6e 61 6d 65 73 20 6f 66 0a 63 6f 6c 75 6d 6e 73  names of.columns
3a70: 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68   in the table th
3a80: 61 74 20 61 72 65 20 75 73 65 64 20 66 6f 72 20  at are used for 
3a90: 74 68 65 20 69 6e 64 65 78 20 6b 65 79 2e 0a 45  the index key..E
3aa0: 61 63 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20  ach column name 
3ab0: 63 61 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20  can be followed 
3ac0: 62 79 20 6f 6e 65 20 6f 66 20 74 68 65 20 22 41  by one of the "A
3ad0: 53 43 22 20 6f 72 20 22 44 45 53 43 22 20 6b 65  SC" or "DESC" ke
3ae0: 79 77 6f 72 64 73 0a 74 6f 20 69 6e 64 69 63 61  ywords.to indica
3af0: 74 65 20 73 6f 72 74 20 6f 72 64 65 72 2c 20 62  te sort order, b
3b00: 75 74 20 74 68 65 20 73 6f 72 74 20 6f 72 64 65  ut the sort orde
3b10: 72 20 69 73 20 69 67 6e 6f 72 65 64 20 69 6e 20  r is ignored in 
3b20: 74 68 65 20 63 75 72 72 65 6e 74 0a 69 6d 70 6c  the current.impl
3b30: 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 53 6f 72  ementation.  Sor
3b40: 74 69 6e 67 20 69 73 20 61 6c 77 61 79 73 20 64  ting is always d
3b50: 6f 6e 65 20 69 6e 20 61 73 63 65 6e 64 69 6e 67  one in ascending
3b60: 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e   order.</p>..<p>
3b70: 54 68 65 20 43 4f 4c 4c 41 54 45 20 63 6c 61 75  The COLLATE clau
3b80: 73 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 65 61 63  se following eac
3b90: 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 64 65  h column name de
3ba0: 66 69 6e 65 73 20 61 20 63 6f 6c 6c 61 74 69 6e  fines a collatin
3bb0: 67 0a 73 65 71 75 65 6e 63 65 20 75 73 65 64 20  g.sequence used 
3bc0: 66 6f 72 20 74 65 78 74 20 65 6e 74 69 72 65 73  for text entires
3bd0: 20 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e   in that column.
3be0: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f    The default co
3bf0: 6c 6c 61 74 69 6e 67 0a 73 65 71 75 65 6e 63 65  llating.sequence
3c00: 20 69 73 20 74 68 65 20 63 6f 6c 6c 61 74 69 6e   is the collatin
3c10: 67 20 73 65 71 75 65 6e 63 65 20 64 65 66 69 6e  g sequence defin
3c20: 65 64 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75  ed for that colu
3c30: 6d 6e 20 69 6e 20 74 68 65 0a 43 52 45 41 54 45  mn in the.CREATE
3c40: 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
3c50: 2e 20 20 4f 72 20 69 66 20 6e 6f 20 63 6f 6c 6c  .  Or if no coll
3c60: 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69  ating sequence i
3c70: 73 20 6f 74 68 65 72 77 69 73 65 20 64 65 66 69  s otherwise defi
3c80: 6e 65 64 2c 0a 74 68 65 20 62 75 69 6c 74 2d 69  ned,.the built-i
3c90: 6e 20 42 49 4e 41 52 59 20 63 6f 6c 6c 61 74 69  n BINARY collati
3ca0: 6e 67 20 73 65 71 75 65 6e 63 65 20 69 73 20 75  ng sequence is u
3cb0: 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  sed.</p>..<p>The
3cc0: 72 65 20 61 72 65 20 6e 6f 20 61 72 62 69 74 72  re are no arbitr
3cd0: 61 72 79 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68  ary limits on th
3ce0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e 64 69  e number of indi
3cf0: 63 65 73 20 74 68 61 74 20 63 61 6e 20 62 65 0a  ces that can be.
3d00: 61 74 74 61 63 68 65 64 20 74 6f 20 61 20 73 69  attached to a si
3d10: 6e 67 6c 65 20 74 61 62 6c 65 2c 20 6e 6f 72 20  ngle table, nor 
3d20: 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  on the number of
3d30: 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 61 6e 20 69   columns in an i
3d40: 6e 64 65 78 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66  ndex.</p>..<p>If
3d50: 20 74 68 65 20 55 4e 49 51 55 45 20 6b 65 79 77   the UNIQUE keyw
3d60: 6f 72 64 20 61 70 70 65 61 72 73 20 62 65 74 77  ord appears betw
3d70: 65 65 6e 20 43 52 45 41 54 45 20 61 6e 64 20 49  een CREATE and I
3d80: 4e 44 45 58 20 74 68 65 6e 20 64 75 70 6c 69 63  NDEX then duplic
3d90: 61 74 65 0a 69 6e 64 65 78 20 65 6e 74 72 69 65  ate.index entrie
3da0: 73 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65  s are not allowe
3db0: 64 2e 20 20 41 6e 79 20 61 74 74 65 6d 70 74 20  d.  Any attempt 
3dc0: 74 6f 20 69 6e 73 65 72 74 20 61 20 64 75 70 6c  to insert a dupl
3dd0: 69 63 61 74 65 20 65 6e 74 72 79 0a 77 69 6c 6c  icate entry.will
3de0: 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20 65 72   result in an er
3df0: 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ror.</p>..<p>The
3e00: 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69   optional confli
3e10: 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73  ct-clause allows
3e20: 20 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69   the specificati
3e30: 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61  on of an alterna
3e40: 74 69 76 65 0a 64 65 66 61 75 6c 74 20 63 6f 6e  tive.default con
3e50: 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74  straint conflict
3e60: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f   resolution algo
3e70: 72 69 74 68 6d 20 66 6f 72 20 74 68 69 73 20 69  rithm for this i
3e80: 6e 64 65 78 2e 0a 54 68 69 73 20 6f 6e 6c 79 20  ndex..This only 
3e90: 6d 61 6b 65 73 20 73 65 6e 73 65 20 69 66 20 74  makes sense if t
3ea0: 68 65 20 55 4e 49 51 55 45 20 6b 65 79 77 6f 72  he UNIQUE keywor
3eb0: 64 20 69 73 20 75 73 65 64 20 73 69 6e 63 65 20  d is used since 
3ec0: 6f 74 68 65 72 77 69 73 65 0a 74 68 65 72 65 20  otherwise.there 
3ed0: 61 72 65 20 6e 6f 74 20 63 6f 6e 73 74 72 61 69  are not constrai
3ee0: 6e 74 73 20 6f 6e 20 74 68 65 20 69 6e 64 65 78  nts on the index
3ef0: 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 61  .  The default a
3f00: 6c 67 6f 72 69 74 68 6d 20 69 73 0a 41 42 4f 52  lgorithm is.ABOR
3f10: 54 2e 20 20 49 66 20 61 20 43 4f 50 59 2c 20 49  T.  If a COPY, I
3f20: 4e 53 45 52 54 2c 20 6f 72 20 55 50 44 41 54 45  NSERT, or UPDATE
3f30: 20 73 74 61 74 65 6d 65 6e 74 20 73 70 65 63 69   statement speci
3f40: 66 69 65 73 20 61 20 70 61 72 74 69 63 75 6c 61  fies a particula
3f50: 72 0a 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  r.conflict resol
3f60: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2c  ution algorithm,
3f70: 20 74 68 61 74 20 61 6c 67 6f 72 69 74 68 6d 20   that algorithm 
3f80: 69 73 20 75 73 65 64 20 69 6e 20 70 6c 61 63 65  is used in place
3f90: 20 6f 66 0a 74 68 65 20 64 65 66 61 75 6c 74 20   of.the default 
3fa0: 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69 66  algorithm specif
3fb0: 69 65 64 20 68 65 72 65 2e 0a 53 65 65 20 74 68  ied here..See th
3fc0: 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64  e section titled
3fd0: 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c  .<a href="#confl
3fe0: 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54  ict">ON CONFLICT
3ff0: 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f  </a> for additio
4000: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  nal information.
4010: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 65 78 61  </p>..<p>The exa
4020: 63 74 20 74 65 78 74 0a 6f 66 20 65 61 63 68 20  ct text.of each 
4030: 43 52 45 41 54 45 20 49 4e 44 45 58 20 73 74 61  CREATE INDEX sta
4040: 74 65 6d 65 6e 74 20 69 73 20 73 74 6f 72 65 64  tement is stored
4050: 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74   in the <b>sqlit
4060: 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 6f 72 20  e_master</b>.or 
4070: 3c 62 3e 73 71 6c 69 74 65 5f 74 65 6d 70 5f 6d  <b>sqlite_temp_m
4080: 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 2c  aster</b> table,
4090: 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68   depending on wh
40a0: 65 74 68 65 72 20 74 68 65 20 74 61 62 6c 65 0a  ether the table.
40b0: 62 65 69 6e 67 20 69 6e 64 65 78 65 64 20 69 73  being indexed is
40c0: 20 74 65 6d 70 6f 72 61 72 79 2e 20 20 45 76 65   temporary.  Eve
40d0: 72 79 20 74 69 6d 65 20 74 68 65 20 64 61 74 61  ry time the data
40e0: 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64 2c 0a  base is opened,.
40f0: 61 6c 6c 20 43 52 45 41 54 45 20 49 4e 44 45 58  all CREATE INDEX
4100: 20 73 74 61 74 65 6d 65 6e 74 73 0a 61 72 65 20   statements.are 
4110: 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20 3c 62  read from the <b
4120: 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f  >sqlite_master</
4130: 62 3e 20 74 61 62 6c 65 20 61 6e 64 20 75 73 65  b> table and use
4140: 64 20 74 6f 20 72 65 67 65 6e 65 72 61 74 65 0a  d to regenerate.
4150: 53 51 4c 69 74 65 27 73 20 69 6e 74 65 72 6e 61  SQLite's interna
4160: 6c 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  l representation
4170: 20 6f 66 20 74 68 65 20 69 6e 64 65 78 20 6c 61   of the index la
4180: 79 6f 75 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e  yout.</p>..<p>In
4190: 64 65 78 65 73 20 61 72 65 20 72 65 6d 6f 76 65  dexes are remove
41a0: 64 20 77 69 74 68 20 74 68 65 20 3c 61 20 68 72  d with the <a hr
41b0: 65 66 3d 22 23 64 72 6f 70 69 6e 64 65 78 22 3e  ef="#dropindex">
41c0: 44 52 4f 50 20 49 4e 44 45 58 3c 2f 61 3e 20 0a  DROP INDEX</a> .
41d0: 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d 0a 0a  command.</p>.}..
41e0: 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45  .Section {CREATE
41f0: 20 54 41 42 4c 45 7d 20 7b 63 72 65 61 74 65 74   TABLE} {createt
4200: 61 62 6c 65 7d 0a 0a 53 79 6e 74 61 78 20 7b 73  able}..Syntax {s
4210: 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43 52  ql-command} {.CR
4220: 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45 4d  EATE [TEMP | TEM
4230: 50 4f 52 41 52 59 5d 20 54 41 42 4c 45 20 3c 74  PORARY] TABLE <t
4240: 61 62 6c 65 2d 6e 61 6d 65 3e 20 28 0a 20 20 3c  able-name> (.  <
4250: 63 6f 6c 75 6d 6e 2d 64 65 66 3e 20 5b 2c 20 3c  column-def> [, <
4260: 63 6f 6c 75 6d 6e 2d 64 65 66 3e 5d 2a 0a 20 20  column-def>]*.  
4270: 5b 2c 20 3c 63 6f 6e 73 74 72 61 69 6e 74 3e 5d  [, <constraint>]
4280: 2a 0a 29 0a 7d 20 7b 73 71 6c 2d 63 6f 6d 6d 61  *.).} {sql-comma
4290: 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45  nd} {.CREATE [TE
42a0: 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20  MP | TEMPORARY] 
42b0: 54 41 42 4c 45 20 5b 3c 64 61 74 61 62 61 73 65  TABLE [<database
42c0: 2d 6e 61 6d 65 3e 2e 5d 20 3c 74 61 62 6c 65 2d  -name>.] <table-
42d0: 6e 61 6d 65 3e 20 41 53 20 3c 73 65 6c 65 63 74  name> AS <select
42e0: 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 20 7b 63  -statement>.} {c
42f0: 6f 6c 75 6d 6e 2d 64 65 66 7d 20 7b 0a 3c 6e 61  olumn-def} {.<na
4300: 6d 65 3e 20 5b 3c 74 79 70 65 3e 5d 20 5b 5b 43  me> [<type>] [[C
4310: 4f 4e 53 54 52 41 49 4e 54 20 3c 6e 61 6d 65 3e  ONSTRAINT <name>
4320: 5d 20 3c 63 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72  ] <column-constr
4330: 61 69 6e 74 3e 5d 2a 0a 7d 20 7b 74 79 70 65 7d  aint>]*.} {type}
4340: 20 7b 0a 3c 74 79 70 65 6e 61 6d 65 3e 20 7c 0a   {.<typename> |.
4350: 3c 74 79 70 65 6e 61 6d 65 3e 20 28 20 3c 6e 75  <typename> ( <nu
4360: 6d 62 65 72 3e 20 29 20 7c 0a 3c 74 79 70 65 6e  mber> ) |.<typen
4370: 61 6d 65 3e 20 28 20 3c 6e 75 6d 62 65 72 3e 20  ame> ( <number> 
4380: 2c 20 3c 6e 75 6d 62 65 72 3e 20 29 0a 7d 20 7b  , <number> ).} {
4390: 63 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e  column-constrain
43a0: 74 7d 20 7b 0a 4e 4f 54 20 4e 55 4c 4c 20 5b 20  t} {.NOT NULL [ 
43b0: 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65  <conflict-clause
43c0: 3e 20 5d 20 7c 0a 50 52 49 4d 41 52 59 20 4b 45  > ] |.PRIMARY KE
43d0: 59 20 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e 5d  Y [<sort-order>]
43e0: 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61   [ <conflict-cla
43f0: 75 73 65 3e 20 5d 20 5b 41 55 54 4f 49 4e 43 52  use> ] [AUTOINCR
4400: 45 4d 45 4e 54 5d 20 7c 0a 55 4e 49 51 55 45 20  EMENT] |.UNIQUE 
4410: 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  [ <conflict-clau
4420: 73 65 3e 20 5d 20 7c 0a 43 48 45 43 4b 20 28 20  se> ] |.CHECK ( 
4430: 3c 65 78 70 72 3e 20 29 20 5b 20 3c 63 6f 6e 66  <expr> ) [ <conf
4440: 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c  lict-clause> ] |
4450: 0a 44 45 46 41 55 4c 54 20 3c 76 61 6c 75 65 3e  .DEFAULT <value>
4460: 20 7c 0a 43 4f 4c 4c 41 54 45 20 3c 63 6f 6c 6c   |.COLLATE <coll
4470: 61 74 69 6f 6e 2d 6e 61 6d 65 3e 0a 7d 20 7b 63  ation-name>.} {c
4480: 6f 6e 73 74 72 61 69 6e 74 7d 20 7b 0a 50 52 49  onstraint} {.PRI
4490: 4d 41 52 59 20 4b 45 59 20 28 20 3c 63 6f 6c 75  MARY KEY ( <colu
44a0: 6d 6e 2d 6c 69 73 74 3e 20 29 20 5b 20 3c 63 6f  mn-list> ) [ <co
44b0: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d  nflict-clause> ]
44c0: 20 7c 0a 55 4e 49 51 55 45 20 28 20 3c 63 6f 6c   |.UNIQUE ( <col
44d0: 75 6d 6e 2d 6c 69 73 74 3e 20 29 20 5b 20 3c 63  umn-list> ) [ <c
44e0: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20  onflict-clause> 
44f0: 5d 20 7c 0a 43 48 45 43 4b 20 28 20 3c 65 78 70  ] |.CHECK ( <exp
4500: 72 3e 20 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74  r> ) [ <conflict
4510: 2d 63 6c 61 75 73 65 3e 20 5d 0a 7d 20 7b 63 6f  -clause> ].} {co
4520: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 7d 20 7b  nflict-clause} {
4530: 0a 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c 63 6f  .ON CONFLICT <co
4540: 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d  nflict-algorithm
4550: 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 41  >.}..puts {.<p>A
4560: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74   CREATE TABLE st
4570: 61 74 65 6d 65 6e 74 20 69 73 20 62 61 73 69 63  atement is basic
4580: 61 6c 6c 79 20 74 68 65 20 6b 65 79 77 6f 72 64  ally the keyword
4590: 73 20 22 43 52 45 41 54 45 20 54 41 42 4c 45 22  s "CREATE TABLE"
45a0: 0a 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 68 65  .followed by the
45b0: 20 6e 61 6d 65 20 6f 66 20 61 20 6e 65 77 20 74   name of a new t
45c0: 61 62 6c 65 20 61 6e 64 20 61 20 70 61 72 65 6e  able and a paren
45d0: 74 68 65 73 69 7a 65 64 20 6c 69 73 74 20 6f 66  thesized list of
45e0: 20 63 6f 6c 75 6d 6e 0a 64 65 66 69 6e 69 74 69   column.definiti
45f0: 6f 6e 73 20 61 6e 64 20 63 6f 6e 73 74 72 61 69  ons and constrai
4600: 6e 74 73 2e 20 20 54 68 65 20 74 61 62 6c 65 20  nts.  The table 
4610: 6e 61 6d 65 20 63 61 6e 20 62 65 20 65 69 74 68  name can be eith
4620: 65 72 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72  er an identifier
4630: 0a 6f 72 20 61 20 73 74 72 69 6e 67 2e 20 20 54  .or a string.  T
4640: 61 62 6c 65 73 20 6e 61 6d 65 73 20 74 68 61 74  ables names that
4650: 20 62 65 67 69 6e 20 77 69 74 68 20 22 3c 62 3e   begin with "<b>
4660: 73 71 6c 69 74 65 5f 3c 2f 62 3e 22 20 61 72 65  sqlite_</b>" are
4670: 20 72 65 73 65 72 76 65 64 0a 66 6f 72 20 75 73   reserved.for us
4680: 65 20 62 79 20 74 68 65 20 65 6e 67 69 6e 65 2e  e by the engine.
4690: 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68 20 63 6f  </p>..<p>Each co
46a0: 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20  lumn definition 
46b0: 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  is the name of t
46c0: 68 65 20 63 6f 6c 75 6d 6e 20 66 6f 6c 6c 6f 77  he column follow
46d0: 65 64 20 62 79 20 74 68 65 0a 64 61 74 61 74 79  ed by the.dataty
46e0: 70 65 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75  pe for that colu
46f0: 6d 6e 2c 20 74 68 65 6e 20 6f 6e 65 20 6f 72 20  mn, then one or 
4700: 6d 6f 72 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f  more optional co
4710: 6c 75 6d 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73  lumn constraints
4720: 2e 0a 54 68 65 20 64 61 74 61 74 79 70 65 20 66  ..The datatype f
4730: 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20 64 6f  or the column do
4740: 65 73 20 6e 6f 74 20 72 65 73 74 72 69 63 74 20  es not restrict 
4750: 77 68 61 74 20 64 61 74 61 20 6d 61 79 20 62 65  what data may be
4760: 20 70 75 74 0a 69 6e 20 74 68 61 74 20 63 6f 6c   put.in that col
4770: 75 6d 6e 2e 0a 53 65 65 20 3c 61 20 68 72 65 66  umn..See <a href
4780: 3d 22 64 61 74 61 74 79 70 65 33 2e 68 74 6d 6c  ="datatype3.html
4790: 22 3e 44 61 74 61 74 79 70 65 73 20 49 6e 20 53  ">Datatypes In S
47a0: 51 4c 69 74 65 20 56 65 72 73 69 6f 6e 20 33 3c  QLite Version 3<
47b0: 2f 61 3e 20 66 6f 72 0a 61 64 64 69 74 69 6f 6e  /a> for.addition
47c0: 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a  al information..
47d0: 54 68 65 20 55 4e 49 51 55 45 20 63 6f 6e 73 74  The UNIQUE const
47e0: 72 61 69 6e 74 20 63 61 75 73 65 73 20 61 6e 20  raint causes an 
47f0: 69 6e 64 65 78 20 74 6f 20 62 65 20 63 72 65 61  index to be crea
4800: 74 65 64 20 6f 6e 20 74 68 65 20 73 70 65 63 69  ted on the speci
4810: 66 69 65 64 0a 63 6f 6c 75 6d 6e 73 2e 20 20 54  fied.columns.  T
4820: 68 69 73 20 69 6e 64 65 78 20 6d 75 73 74 20 63  his index must c
4830: 6f 6e 74 61 69 6e 20 75 6e 69 71 75 65 20 6b 65  ontain unique ke
4840: 79 73 2e 0a 54 68 65 20 43 4f 4c 4c 41 54 45 20  ys..The COLLATE 
4850: 63 6c 61 75 73 65 20 73 70 65 63 69 66 69 65 73  clause specifies
4860: 20 77 68 61 74 20 74 65 78 74 20 3c 61 20 68 72   what text <a hr
4870: 65 66 3d 22 64 61 74 61 74 79 70 65 33 2e 68 74  ef="datatype3.ht
4880: 6d 6c 23 63 6f 6c 6c 61 74 69 6f 6e 22 3e 0a 63  ml#collation">.c
4890: 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f  ollating functio
48a0: 6e 3c 2f 61 3e 20 74 6f 20 75 73 65 20 77 68 65  n</a> to use whe
48b0: 6e 20 63 6f 6d 70 61 72 69 6e 67 20 74 65 78 74  n comparing text
48c0: 20 65 6e 74 72 69 65 73 20 66 6f 72 20 74 68 65   entries for the
48d0: 20 63 6f 6c 75 6d 6e 2e 20 20 0a 54 68 65 20 62   column.  .The b
48e0: 75 69 6c 74 2d 69 6e 20 42 49 4e 41 52 59 20 63  uilt-in BINARY c
48f0: 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f  ollating functio
4900: 6e 20 69 73 20 75 73 65 64 20 62 79 20 64 65 66  n is used by def
4910: 61 75 6c 74 2e 0a 3c 70 3e 0a 54 68 65 20 44 45  ault..<p>.The DE
4920: 46 41 55 4c 54 20 63 6f 6e 73 74 72 61 69 6e 74  FAULT constraint
4930: 20 73 70 65 63 69 66 69 65 73 20 61 20 64 65 66   specifies a def
4940: 61 75 6c 74 20 76 61 6c 75 65 20 74 6f 20 75 73  ault value to us
4950: 65 20 77 68 65 6e 20 64 6f 69 6e 67 20 61 6e 20  e when doing an 
4960: 49 4e 53 45 52 54 2e 0a 54 68 65 20 76 61 6c 75  INSERT..The valu
4970: 65 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2c 20 61  e may be NULL, a
4980: 20 73 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74   string constant
4990: 20 6f 72 20 61 20 6e 75 6d 62 65 72 2e 20 53 74   or a number. St
49a0: 61 72 74 69 6e 67 20 77 69 74 68 20 76 65 72 73  arting with vers
49b0: 69 6f 6e 0a 33 2e 31 2e 30 2c 20 74 68 65 20 64  ion.3.1.0, the d
49c0: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6d 61 79  efault value may
49d0: 20 61 6c 73 6f 20 62 65 20 6f 6e 65 20 6f 66 20   also be one of 
49e0: 74 68 65 20 73 70 65 63 69 61 6c 20 63 61 73 65  the special case
49f0: 2d 69 6e 64 65 70 65 6e 64 61 6e 74 0a 6b 65 79  -independant.key
4a00: 77 6f 72 64 73 20 43 55 52 52 45 4e 54 5f 54 49  words CURRENT_TI
4a10: 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54 45  ME, CURRENT_DATE
4a20: 20 6f 72 20 43 55 52 52 45 4e 54 5f 54 49 4d 45   or CURRENT_TIME
4a30: 53 54 41 4d 50 2e 20 49 66 20 74 68 65 20 76 61  STAMP. If the va
4a40: 6c 75 65 20 69 73 0a 4e 55 4c 4c 2c 20 61 20 73  lue is.NULL, a s
4a50: 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 6f  tring constant o
4a60: 72 20 6e 75 6d 62 65 72 2c 20 69 74 20 69 73 20  r number, it is 
4a70: 6c 69 74 65 72 61 6c 6c 79 20 69 6e 73 65 72 74  literally insert
4a80: 65 64 20 69 6e 74 6f 20 74 68 65 20 63 6f 6c 75  ed into the colu
4a90: 6d 6e 0a 77 68 65 6e 65 76 65 72 20 61 6e 20 49  mn.whenever an I
4aa0: 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20  NSERT statement 
4ab0: 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 70  that does not sp
4ac0: 65 63 69 66 79 20 61 20 76 61 6c 75 65 20 66 6f  ecify a value fo
4ad0: 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69 73 0a  r the column is.
4ae0: 65 78 65 63 75 74 65 64 2e 20 49 66 20 74 68 65  executed. If the
4af0: 20 76 61 6c 75 65 20 69 73 20 43 55 52 52 45 4e   value is CURREN
4b00: 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f  T_TIME, CURRENT_
4b10: 44 41 54 45 20 6f 72 20 43 55 52 52 45 4e 54 5f  DATE or CURRENT_
4b20: 54 49 4d 45 53 54 41 4d 50 2c 20 74 68 65 6e 0a  TIMESTAMP, then.
4b30: 74 68 65 20 63 75 72 72 65 6e 74 20 55 54 43 20  the current UTC 
4b40: 64 61 74 65 20 61 6e 64 2f 6f 72 20 74 69 6d 65  date and/or time
4b50: 20 69 73 20 69 6e 73 65 72 74 65 64 20 69 6e 74   is inserted int
4b60: 6f 20 74 68 65 20 63 6f 6c 75 6d 6e 73 2e 20 46  o the columns. F
4b70: 6f 72 0a 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c  or.CURRENT_TIME,
4b80: 20 74 68 65 20 66 6f 72 6d 61 74 20 69 73 20 48   the format is H
4b90: 48 3a 4d 4d 3a 53 53 2e 20 46 6f 72 20 43 55 52  H:MM:SS. For CUR
4ba0: 52 45 4e 54 5f 44 41 54 45 2c 20 59 59 59 59 2d  RENT_DATE, YYYY-
4bb0: 4d 4d 2d 44 44 2e 20 54 68 65 20 66 6f 72 6d 61  MM-DD. The forma
4bc0: 74 0a 66 6f 72 20 43 55 52 52 45 4e 54 5f 54 49  t.for CURRENT_TI
4bd0: 4d 45 53 54 41 4d 50 20 69 73 20 22 59 59 59 59  MESTAMP is "YYYY
4be0: 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 22  -MM-DD HH:MM:SS"
4bf0: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 53 70 65 63 69  ..</p>..<p>Speci
4c00: 66 79 69 6e 67 20 61 20 50 52 49 4d 41 52 59 20  fying a PRIMARY 
4c10: 4b 45 59 20 6e 6f 72 6d 61 6c 6c 79 20 6a 75 73  KEY normally jus
4c20: 74 20 63 72 65 61 74 65 73 20 61 20 55 4e 49 51  t creates a UNIQ
4c30: 55 45 20 69 6e 64 65 78 0a 6f 6e 20 74 68 65 20  UE index.on the 
4c40: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 63 6f  corresponding co
4c50: 6c 75 6d 6e 73 2e 20 20 48 6f 77 65 76 65 72 2c  lumns.  However,
4c60: 20 69 66 20 70 72 69 6d 61 72 79 20 6b 65 79 20   if primary key 
4c70: 69 73 20 6f 6e 20 61 20 73 69 6e 67 6c 65 20 63  is on a single c
4c80: 6f 6c 75 6d 6e 0a 74 68 61 74 20 68 61 73 20 64  olumn.that has d
4c90: 61 74 61 74 79 70 65 20 49 4e 54 45 47 45 52 2c  atatype INTEGER,
4ca0: 20 74 68 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d   then that colum
4cb0: 6e 20 69 73 20 75 73 65 64 20 69 6e 74 65 72 6e  n is used intern
4cc0: 61 6c 6c 79 0a 61 73 20 74 68 65 20 61 63 74 75  ally.as the actu
4cd0: 61 6c 20 6b 65 79 20 6f 66 20 74 68 65 20 42 2d  al key of the B-
4ce0: 54 72 65 65 20 66 6f 72 20 74 68 65 20 74 61 62  Tree for the tab
4cf0: 6c 65 2e 20 20 54 68 69 73 20 6d 65 61 6e 73 20  le.  This means 
4d00: 74 68 61 74 20 74 68 65 20 63 6f 6c 75 6d 6e 0a  that the column.
4d10: 6d 61 79 20 6f 6e 6c 79 20 68 6f 6c 64 20 75 6e  may only hold un
4d20: 69 71 75 65 20 69 6e 74 65 67 65 72 20 76 61 6c  ique integer val
4d30: 75 65 73 2e 20 20 28 45 78 63 65 70 74 20 66 6f  ues.  (Except fo
4d40: 72 20 74 68 69 73 20 6f 6e 65 20 63 61 73 65 2c  r this one case,
4d50: 0a 53 51 4c 69 74 65 20 69 67 6e 6f 72 65 73 20  .SQLite ignores 
4d60: 74 68 65 20 64 61 74 61 74 79 70 65 20 73 70 65  the datatype spe
4d70: 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 63 6f  cification of co
4d80: 6c 75 6d 6e 73 20 61 6e 64 20 61 6c 6c 6f 77 73  lumns and allows
4d90: 0a 61 6e 79 20 6b 69 6e 64 20 6f 66 20 64 61 74  .any kind of dat
4da0: 61 20 74 6f 20 62 65 20 70 75 74 20 69 6e 20 61  a to be put in a
4db0: 20 63 6f 6c 75 6d 6e 20 72 65 67 61 72 64 6c 65   column regardle
4dc0: 73 73 20 6f 66 20 69 74 73 20 64 65 63 6c 61 72  ss of its declar
4dd0: 65 64 0a 64 61 74 61 74 79 70 65 2e 29 20 20 49  ed.datatype.)  I
4de0: 66 20 61 20 74 61 62 6c 65 20 64 6f 65 73 20 6e  f a table does n
4df0: 6f 74 20 68 61 76 65 20 61 6e 20 49 4e 54 45 47  ot have an INTEG
4e00: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63  ER PRIMARY KEY c
4e10: 6f 6c 75 6d 6e 2c 0a 74 68 65 6e 20 74 68 65 20  olumn,.then the 
4e20: 42 2d 54 72 65 65 20 6b 65 79 20 77 69 6c 6c 20  B-Tree key will 
4e30: 62 65 20 61 20 61 75 74 6f 6d 61 74 69 63 61 6c  be a automatical
4e40: 6c 79 20 67 65 6e 65 72 61 74 65 64 20 69 6e 74  ly generated int
4e50: 65 67 65 72 2e 20 20 54 68 65 0a 42 2d 54 72 65  eger.  The.B-Tre
4e60: 65 20 6b 65 79 20 66 6f 72 20 61 20 72 6f 77 20  e key for a row 
4e70: 63 61 6e 20 61 6c 77 61 79 73 20 62 65 20 61 63  can always be ac
4e80: 63 65 73 73 65 64 20 75 73 69 6e 67 20 6f 6e 65  cessed using one
4e90: 20 6f 66 20 74 68 65 0a 73 70 65 63 69 61 6c 20   of the.special 
4ea0: 6e 61 6d 65 73 20 22 3c 62 3e 52 4f 57 49 44 3c  names "<b>ROWID<
4eb0: 2f 62 3e 22 2c 20 22 3c 62 3e 4f 49 44 3c 2f 62  /b>", "<b>OID</b
4ec0: 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49  >", or "<b>_ROWI
4ed0: 44 5f 3c 2f 62 3e 22 2e 0a 54 68 69 73 20 69 73  D_</b>"..This is
4ee0: 20 74 72 75 65 20 72 65 67 61 72 64 6c 65 73 73   true regardless
4ef0: 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e   of whether or n
4f00: 6f 74 20 74 68 65 72 65 20 69 73 20 61 6e 20 49  ot there is an I
4f10: 4e 54 45 47 45 52 0a 50 52 49 4d 41 52 59 20 4b  NTEGER.PRIMARY K
4f20: 45 59 2e 20 20 41 6e 20 49 4e 54 45 47 45 52 20  EY.  An INTEGER 
4f30: 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75  PRIMARY KEY colu
4f40: 6d 6e 20 6d 61 6e 20 61 6c 73 6f 20 69 6e 63 6c  mn man also incl
4f50: 75 64 65 20 74 68 65 0a 6b 65 79 77 6f 72 64 20  ude the.keyword 
4f60: 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 2e 20 20  AUTOINCREMENT.  
4f70: 54 68 65 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e  The AUTOINCREMEN
4f80: 54 20 6b 65 79 77 6f 72 64 20 6d 6f 64 69 66 69  T keyword modifi
4f90: 65 64 20 74 68 65 20 77 61 79 0a 74 68 61 74 20  ed the way.that 
4fa0: 42 2d 54 72 65 65 20 6b 65 79 73 20 61 72 65 20  B-Tree keys are 
4fb0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 67 65  automatically ge
4fc0: 6e 65 72 61 74 65 64 2e 20 20 41 64 64 69 74 69  nerated.  Additi
4fd0: 6f 6e 61 6c 20 64 65 74 61 69 6c 0a 6f 6e 20 61  onal detail.on a
4fe0: 75 74 6f 6d 61 74 69 63 20 42 2d 54 72 65 65 20  utomatic B-Tree 
4ff0: 6b 65 79 20 67 65 6e 65 72 61 74 69 6f 6e 20 69  key generation i
5000: 73 20 61 76 61 69 6c 61 62 6c 65 0a 3c 61 20 68  s available.<a h
5010: 72 65 66 3d 22 61 75 74 6f 69 6e 63 2e 68 74 6d  ref="autoinc.htm
5020: 6c 22 3e 73 65 70 61 72 61 74 65 6c 79 3c 2f 61  l">separately</a
5030: 3e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68  >.</p>..<p>If th
5040: 65 20 22 54 45 4d 50 22 20 6f 72 20 22 54 45 4d  e "TEMP" or "TEM
5050: 50 4f 52 41 52 59 22 20 6b 65 79 77 6f 72 64 20  PORARY" keyword 
5060: 6f 63 63 75 72 73 20 69 6e 20 62 65 74 77 65 65  occurs in betwee
5070: 6e 20 22 43 52 45 41 54 45 22 0a 61 6e 64 20 22  n "CREATE".and "
5080: 54 41 42 4c 45 22 20 74 68 65 6e 20 74 68 65 20  TABLE" then the 
5090: 74 61 62 6c 65 20 74 68 61 74 20 69 73 20 63 72  table that is cr
50a0: 65 61 74 65 64 20 69 73 20 6f 6e 6c 79 20 76 69  eated is only vi
50b0: 73 69 62 6c 65 20 74 6f 20 74 68 65 0a 70 72 6f  sible to the.pro
50c0: 63 65 73 73 20 74 68 61 74 20 6f 70 65 6e 65 64  cess that opened
50d0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e   the database an
50e0: 64 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c  d is automatical
50f0: 6c 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e 0a  ly deleted when.
5100: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
5110: 63 6c 6f 73 65 64 2e 20 20 41 6e 79 20 69 6e 64  closed.  Any ind
5120: 69 63 65 73 20 63 72 65 61 74 65 64 20 6f 6e 20  ices created on 
5130: 61 20 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c  a temporary tabl
5140: 65 0a 61 72 65 20 61 6c 73 6f 20 74 65 6d 70 6f  e.are also tempo
5150: 72 61 72 79 2e 20 20 54 65 6d 70 6f 72 61 72 79  rary.  Temporary
5160: 20 74 61 62 6c 65 73 20 61 6e 64 20 69 6e 64 69   tables and indi
5170: 63 65 73 20 61 72 65 20 73 74 6f 72 65 64 20 69  ces are stored i
5180: 6e 20 61 0a 73 65 70 61 72 61 74 65 20 66 69 6c  n a.separate fil
5190: 65 20 64 69 73 74 69 6e 63 74 20 66 72 6f 6d 20  e distinct from 
51a0: 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73  the main databas
51b0: 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  e file.</p>..<p>
51c0: 20 49 66 20 61 20 26 6c 74 3b 64 61 74 61 62 61   If a &lt;databa
51d0: 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 73  se-name&gt; is s
51e0: 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74  pecified, then t
51f0: 68 65 20 74 61 62 6c 65 20 69 73 20 63 72 65 61  he table is crea
5200: 74 65 64 20 69 6e 20 0a 74 68 65 20 6e 61 6d 65  ted in .the name
5210: 64 20 64 61 74 61 62 61 73 65 2e 20 49 74 20 69  d database. It i
5220: 73 20 61 6e 20 65 72 72 6f 72 20 74 6f 20 73 70  s an error to sp
5230: 65 63 69 66 79 20 62 6f 74 68 20 61 20 26 6c 74  ecify both a &lt
5240: 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67  ;database-name&g
5250: 74 3b 0a 61 6e 64 20 74 68 65 20 54 45 4d 50 20  t;.and the TEMP 
5260: 6b 65 79 77 6f 72 64 2c 20 75 6e 6c 65 73 73 20  keyword, unless 
5270: 74 68 65 20 26 6c 74 3b 64 61 74 61 62 61 73 65  the &lt;database
5280: 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 22 74 65  -name&gt; is "te
5290: 6d 70 22 2e 20 49 66 20 6e 6f 0a 64 61 74 61 62  mp". If no.datab
52a0: 61 73 65 20 6e 61 6d 65 20 69 73 20 73 70 65 63  ase name is spec
52b0: 69 66 69 65 64 2c 20 61 6e 64 20 74 68 65 20 54  ified, and the T
52c0: 45 4d 50 20 6b 65 79 77 6f 72 64 20 69 73 20 6e  EMP keyword is n
52d0: 6f 74 20 70 72 65 73 65 6e 74 2c 0a 74 68 65 20  ot present,.the 
52e0: 74 61 62 6c 65 20 69 73 20 63 72 65 61 74 65 64  table is created
52f0: 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74   in the main dat
5300: 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  abase.</p>..<p>T
5310: 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66  he optional conf
5320: 6c 69 63 74 2d 63 6c 61 75 73 65 20 66 6f 6c 6c  lict-clause foll
5330: 6f 77 69 6e 67 20 65 61 63 68 20 63 6f 6e 73 74  owing each const
5340: 72 61 69 6e 74 0a 61 6c 6c 6f 77 73 20 74 68 65  raint.allows the
5350: 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f   specification o
5360: 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65  f an alternative
5370: 20 64 65 66 61 75 6c 74 0a 63 6f 6e 73 74 72 61   default.constra
5380: 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73  int conflict res
5390: 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68  olution algorith
53a0: 6d 20 66 6f 72 20 74 68 61 74 20 63 6f 6e 73 74  m for that const
53b0: 72 61 69 6e 74 2e 0a 54 68 65 20 64 65 66 61 75  raint..The defau
53c0: 6c 74 20 69 73 20 61 62 6f 72 74 20 41 42 4f 52  lt is abort ABOR
53d0: 54 2e 20 20 44 69 66 66 65 72 65 6e 74 20 63 6f  T.  Different co
53e0: 6e 73 74 72 61 69 6e 74 73 20 77 69 74 68 69 6e  nstraints within
53f0: 20 74 68 65 20 73 61 6d 65 0a 74 61 62 6c 65 20   the same.table 
5400: 6d 61 79 20 68 61 76 65 20 64 69 66 66 65 72 65  may have differe
5410: 6e 74 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 6c  nt default confl
5420: 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  ict resolution a
5430: 6c 67 6f 72 69 74 68 6d 73 2e 0a 49 66 20 61 6e  lgorithms..If an
5440: 20 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c 20 6f   COPY, INSERT, o
5450: 72 20 55 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64  r UPDATE command
5460: 20 73 70 65 63 69 66 69 65 73 20 61 20 64 69 66   specifies a dif
5470: 66 65 72 65 6e 74 20 63 6f 6e 66 6c 69 63 74 0a  ferent conflict.
5480: 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
5490: 69 74 68 6d 2c 20 74 68 65 6e 20 74 68 61 74 20  ithm, then that 
54a0: 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65  algorithm is use
54b0: 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68  d in place of th
54c0: 65 0a 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69  e.default algori
54d0: 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e  thm specified in
54e0: 20 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c   the CREATE TABL
54f0: 45 20 73 74 61 74 65 6d 65 6e 74 2e 0a 53 65 65  E statement..See
5500: 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74   the section tit
5510: 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f  led.<a href="#co
5520: 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c  nflict">ON CONFL
5530: 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69  ICT</a> for addi
5540: 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
5550: 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 43 48 45 43  on.</p>..<p>CHEC
5560: 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61 72  K constraints ar
5570: 65 20 69 67 6e 6f 72 65 64 20 69 6e 20 74 68 65  e ignored in the
5580: 20 63 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65   current impleme
5590: 6e 74 61 74 69 6f 6e 2e 0a 53 75 70 70 6f 72 74  ntation..Support
55a0: 20 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e 73 74   for CHECK const
55b0: 72 61 69 6e 74 73 20 6d 61 79 20 62 65 20 61 64  raints may be ad
55c0: 64 65 64 20 69 6e 20 74 68 65 20 66 75 74 75 72  ded in the futur
55d0: 65 2e 20 20 41 73 20 6f 66 0a 76 65 72 73 69 6f  e.  As of.versio
55e0: 6e 20 32 2e 33 2e 30 2c 20 4e 4f 54 20 4e 55 4c  n 2.3.0, NOT NUL
55f0: 4c 2c 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20  L, PRIMARY KEY, 
5600: 61 6e 64 20 55 4e 49 51 55 45 20 63 6f 6e 73 74  and UNIQUE const
5610: 72 61 69 6e 74 73 20 61 6c 6c 0a 77 6f 72 6b 2e  raints all.work.
5620: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61  </p>..<p>There a
5630: 72 65 20 6e 6f 20 61 72 62 69 74 72 61 72 79 20  re no arbitrary 
5640: 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65 20 6e 75  limits on the nu
5650: 6d 62 65 72 0a 6f 66 20 63 6f 6c 75 6d 6e 73 20  mber.of columns 
5660: 6f 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72  or on the number
5670: 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74 73 20   of constraints 
5680: 69 6e 20 61 20 74 61 62 6c 65 2e 0a 54 68 65 20  in a table..The 
5690: 74 6f 74 61 6c 20 61 6d 6f 75 6e 74 20 6f 66 20  total amount of 
56a0: 64 61 74 61 20 69 6e 20 61 20 73 69 6e 67 6c 65  data in a single
56b0: 20 72 6f 77 20 69 73 20 6c 69 6d 69 74 65 64 20   row is limited 
56c0: 74 6f 20 61 62 6f 75 74 0a 31 20 6d 65 67 61 62  to about.1 megab
56d0: 79 74 65 73 20 69 6e 20 76 65 72 73 69 6f 6e 20  ytes in version 
56e0: 32 2e 38 2e 20 20 49 6e 20 76 65 72 73 69 6f 6e  2.8.  In version
56f0: 20 33 2e 30 20 74 68 65 72 65 20 69 73 20 6e 6f   3.0 there is no
5700: 20 61 72 62 69 74 72 61 72 79 0a 6c 69 6d 69 74   arbitrary.limit
5710: 20 6f 6e 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f   on the amount o
5720: 66 20 64 61 74 61 20 69 6e 20 61 20 72 6f 77 2e  f data in a row.
5730: 3c 2f 70 3e 0a 0a 0a 3c 70 3e 54 68 65 20 43 52  </p>...<p>The CR
5740: 45 41 54 45 20 54 41 42 4c 45 20 41 53 20 66 6f  EATE TABLE AS fo
5750: 72 6d 20 64 65 66 69 6e 65 73 20 74 68 65 20 74  rm defines the t
5760: 61 62 6c 65 20 74 6f 20 62 65 0a 74 68 65 20 72  able to be.the r
5770: 65 73 75 6c 74 20 73 65 74 20 6f 66 20 61 20 71  esult set of a q
5780: 75 65 72 79 2e 20 20 54 68 65 20 6e 61 6d 65 73  uery.  The names
5790: 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 63 6f   of the table co
57a0: 6c 75 6d 6e 73 20 61 72 65 0a 74 68 65 20 6e 61  lumns are.the na
57b0: 6d 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  mes of the colum
57c0: 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74  ns in the result
57d0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 65 78  .</p>..<p>The ex
57e0: 61 63 74 20 74 65 78 74 0a 6f 66 20 65 61 63 68  act text.of each
57f0: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74   CREATE TABLE st
5800: 61 74 65 6d 65 6e 74 20 69 73 20 73 74 6f 72 65  atement is store
5810: 64 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69  d in the <b>sqli
5820: 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 74 61  te_master</b>.ta
5830: 62 6c 65 2e 20 20 45 76 65 72 79 20 74 69 6d 65  ble.  Every time
5840: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73   the database is
5850: 20 6f 70 65 6e 65 64 2c 20 61 6c 6c 20 43 52 45   opened, all CRE
5860: 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ATE TABLE statem
5870: 65 6e 74 73 0a 61 72 65 20 72 65 61 64 20 66 72  ents.are read fr
5880: 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65  om the <b>sqlite
5890: 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c  _master</b> tabl
58a0: 65 20 61 6e 64 20 75 73 65 64 20 74 6f 20 72 65  e and used to re
58b0: 67 65 6e 65 72 61 74 65 0a 53 51 4c 69 74 65 27  generate.SQLite'
58c0: 73 20 69 6e 74 65 72 6e 61 6c 20 72 65 70 72 65  s internal repre
58d0: 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65  sentation of the
58e0: 20 74 61 62 6c 65 20 6c 61 79 6f 75 74 2e 0a 49   table layout..I
58f0: 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 63  f the original c
5900: 6f 6d 6d 61 6e 64 20 77 61 73 20 61 20 43 52 45  ommand was a CRE
5910: 41 54 45 20 54 41 42 4c 45 20 41 53 20 74 68 65  ATE TABLE AS the
5920: 6e 20 74 68 65 6e 20 61 6e 20 65 71 75 69 76 61  n then an equiva
5930: 6c 65 6e 74 0a 43 52 45 41 54 45 20 54 41 42 4c  lent.CREATE TABL
5940: 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73  E statement is s
5950: 79 6e 74 68 65 73 69 7a 65 64 20 61 6e 64 20 73  ynthesized and s
5960: 74 6f 72 65 20 69 6e 20 3c 62 3e 73 71 6c 69 74  tore in <b>sqlit
5970: 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 69 6e 20  e_master</b>.in 
5980: 70 6c 61 63 65 20 6f 66 20 74 68 65 20 6f 72 69  place of the ori
5990: 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64 2e 0a 54  ginal command..T
59a0: 68 65 20 74 65 78 74 20 6f 66 20 43 52 45 41 54  he text of CREAT
59b0: 45 20 54 45 4d 50 4f 52 41 52 59 20 54 41 42 4c  E TEMPORARY TABL
59c0: 45 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65  E statements are
59d0: 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 0a 3c   stored in the.<
59e0: 62 3e 73 71 6c 69 74 65 5f 74 65 6d 70 5f 6d 61  b>sqlite_temp_ma
59f0: 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 2e 0a  ster</b> table..
5a00: 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65 73 20  </p>..<p>Tables 
5a10: 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73 69 6e  are removed usin
5a20: 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23  g the <a href="#
5a30: 64 72 6f 70 74 61 62 6c 65 22 3e 44 52 4f 50 20  droptable">DROP 
5a40: 54 41 42 4c 45 3c 2f 61 3e 20 0a 73 74 61 74 65  TABLE</a> .state
5a50: 6d 65 6e 74 2e 20 20 3c 2f 70 3e 0a 7d 0a 0a 0a  ment.  </p>.}...
5a60: 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20  Section {CREATE 
5a70: 54 52 49 47 47 45 52 7d 20 63 72 65 61 74 65 74  TRIGGER} createt
5a80: 72 69 67 67 65 72 0a 0a 53 79 6e 74 61 78 20 7b  rigger..Syntax {
5a90: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
5aa0: 0a 43 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20  .CREATE [TEMP | 
5ab0: 54 45 4d 50 4f 52 41 52 59 5d 20 54 52 49 47 47  TEMPORARY] TRIGG
5ac0: 45 52 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65  ER <trigger-name
5ad0: 3e 20 5b 20 42 45 46 4f 52 45 20 7c 20 41 46 54  > [ BEFORE | AFT
5ae0: 45 52 20 5d 0a 3c 64 61 74 61 62 61 73 65 2d 65  ER ].<database-e
5af0: 76 65 6e 74 3e 20 4f 4e 20 5b 3c 64 61 74 61 62  vent> ON [<datab
5b00: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
5b10: 62 6c 65 2d 6e 61 6d 65 3e 0a 3c 74 72 69 67 67  ble-name>.<trigg
5b20: 65 72 2d 61 63 74 69 6f 6e 3e 0a 7d 0a 0a 53 79  er-action>.}..Sy
5b30: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
5b40: 65 6e 74 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54  ent} {.CREATE [T
5b50: 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d  EMP | TEMPORARY]
5b60: 20 54 52 49 47 47 45 52 20 3c 74 72 69 67 67 65   TRIGGER <trigge
5b70: 72 2d 6e 61 6d 65 3e 20 49 4e 53 54 45 41 44 20  r-name> INSTEAD 
5b80: 4f 46 0a 3c 64 61 74 61 62 61 73 65 2d 65 76 65  OF.<database-eve
5b90: 6e 74 3e 20 4f 4e 20 5b 3c 64 61 74 61 62 61 73  nt> ON [<databas
5ba0: 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 76 69 65 77  e-name> .] <view
5bb0: 2d 6e 61 6d 65 3e 0a 3c 74 72 69 67 67 65 72 2d  -name>.<trigger-
5bc0: 61 63 74 69 6f 6e 3e 0a 7d 0a 0a 53 79 6e 74 61  action>.}..Synta
5bd0: 78 20 7b 64 61 74 61 62 61 73 65 2d 65 76 65 6e  x {database-even
5be0: 74 7d 20 7b 0a 44 45 4c 45 54 45 20 7c 20 0a 49  t} {.DELETE | .I
5bf0: 4e 53 45 52 54 20 7c 20 0a 55 50 44 41 54 45 20  NSERT | .UPDATE 
5c00: 7c 20 0a 55 50 44 41 54 45 20 4f 46 20 3c 63 6f  | .UPDATE OF <co
5c10: 6c 75 6d 6e 2d 6c 69 73 74 3e 0a 7d 0a 0a 53 79  lumn-list>.}..Sy
5c20: 6e 74 61 78 20 7b 74 72 69 67 67 65 72 2d 61 63  ntax {trigger-ac
5c30: 74 69 6f 6e 7d 20 7b 0a 5b 20 46 4f 52 20 45 41  tion} {.[ FOR EA
5c40: 43 48 20 52 4f 57 20 7c 20 46 4f 52 20 45 41 43  CH ROW | FOR EAC
5c50: 48 20 53 54 41 54 45 4d 45 4e 54 20 5d 20 5b 20  H STATEMENT ] [ 
5c60: 57 48 45 4e 20 3c 65 78 70 72 65 73 73 69 6f 6e  WHEN <expression
5c70: 3e 20 5d 20 0a 42 45 47 49 4e 20 0a 20 20 3c 74  > ] .BEGIN .  <t
5c80: 72 69 67 67 65 72 2d 73 74 65 70 3e 20 3b 20 5b  rigger-step> ; [
5c90: 20 3c 74 72 69 67 67 65 72 2d 73 74 65 70 3e 20   <trigger-step> 
5ca0: 3b 20 5d 2a 0a 45 4e 44 0a 7d 0a 0a 53 79 6e 74  ; ]*.END.}..Synt
5cb0: 61 78 20 7b 74 72 69 67 67 65 72 2d 73 74 65 70  ax {trigger-step
5cc0: 7d 20 7b 0a 3c 75 70 64 61 74 65 2d 73 74 61 74  } {.<update-stat
5cd0: 65 6d 65 6e 74 3e 20 7c 20 3c 69 6e 73 65 72 74  ement> | <insert
5ce0: 2d 73 74 61 74 65 6d 65 6e 74 3e 20 7c 20 0a 3c  -statement> | .<
5cf0: 64 65 6c 65 74 65 2d 73 74 61 74 65 6d 65 6e 74  delete-statement
5d00: 3e 20 7c 20 3c 73 65 6c 65 63 74 2d 73 74 61 74  > | <select-stat
5d10: 65 6d 65 6e 74 3e 20 0a 7d 0a 0a 70 75 74 73 20  ement> .}..puts 
5d20: 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20  {.<p>The CREATE 
5d30: 54 52 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e  TRIGGER statemen
5d40: 74 20 69 73 20 75 73 65 64 20 74 6f 20 61 64 64  t is used to add
5d50: 20 74 72 69 67 67 65 72 73 20 74 6f 20 74 68 65   triggers to the
5d60: 20 0a 64 61 74 61 62 61 73 65 20 73 63 68 65 6d   .database schem
5d70: 61 2e 20 54 72 69 67 67 65 72 73 20 61 72 65 20  a. Triggers are 
5d80: 64 61 74 61 62 61 73 65 20 6f 70 65 72 61 74 69  database operati
5d90: 6f 6e 73 20 28 74 68 65 20 3c 69 3e 74 72 69 67  ons (the <i>trig
5da0: 67 65 72 2d 61 63 74 69 6f 6e 3c 2f 69 3e 29 20  ger-action</i>) 
5db0: 0a 74 68 61 74 20 61 72 65 20 61 75 74 6f 6d 61  .that are automa
5dc0: 74 69 63 61 6c 6c 79 20 70 65 72 66 6f 72 6d 65  tically performe
5dd0: 64 20 77 68 65 6e 20 61 20 73 70 65 63 69 66 69  d when a specifi
5de0: 65 64 20 64 61 74 61 62 61 73 65 20 65 76 65 6e  ed database even
5df0: 74 20 28 74 68 65 0a 3c 69 3e 64 61 74 61 62 61  t (the.<i>databa
5e00: 73 65 2d 65 76 65 6e 74 3c 2f 69 3e 29 20 6f 63  se-event</i>) oc
5e10: 63 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a 3c 70 3e  curs.  </p>..<p>
5e20: 41 20 74 72 69 67 67 65 72 20 6d 61 79 20 62 65  A trigger may be
5e30: 20 73 70 65 63 69 66 69 65 64 20 74 6f 20 66 69   specified to fi
5e40: 72 65 20 77 68 65 6e 65 76 65 72 20 61 20 44 45  re whenever a DE
5e50: 4c 45 54 45 2c 20 49 4e 53 45 52 54 20 6f 72 20  LETE, INSERT or 
5e60: 55 50 44 41 54 45 20 6f 66 20 61 0a 70 61 72 74  UPDATE of a.part
5e70: 69 63 75 6c 61 72 20 64 61 74 61 62 61 73 65 20  icular database 
5e80: 74 61 62 6c 65 20 6f 63 63 75 72 73 2c 20 6f 72  table occurs, or
5e90: 20 77 68 65 6e 65 76 65 72 20 61 6e 20 55 50 44   whenever an UPD
5ea0: 41 54 45 20 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f  ATE of one or mo
5eb0: 72 65 0a 73 70 65 63 69 66 69 65 64 20 63 6f 6c  re.specified col
5ec0: 75 6d 6e 73 20 6f 66 20 61 20 74 61 62 6c 65 20  umns of a table 
5ed0: 61 72 65 20 75 70 64 61 74 65 64 2e 3c 2f 70 3e  are updated.</p>
5ee0: 0a 0a 3c 70 3e 41 74 20 74 68 69 73 20 74 69 6d  ..<p>At this tim
5ef0: 65 20 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74  e SQLite support
5f00: 73 20 6f 6e 6c 79 20 46 4f 52 20 45 41 43 48 20  s only FOR EACH 
5f10: 52 4f 57 20 74 72 69 67 67 65 72 73 2c 20 6e 6f  ROW triggers, no
5f20: 74 20 46 4f 52 20 45 41 43 48 0a 53 54 41 54 45  t FOR EACH.STATE
5f30: 4d 45 4e 54 20 74 72 69 67 67 65 72 73 2e 20 48  MENT triggers. H
5f40: 65 6e 63 65 20 65 78 70 6c 69 63 69 74 6c 79 20  ence explicitly 
5f50: 73 70 65 63 69 66 79 69 6e 67 20 46 4f 52 20 45  specifying FOR E
5f60: 41 43 48 20 52 4f 57 20 69 73 20 6f 70 74 69 6f  ACH ROW is optio
5f70: 6e 61 6c 2e 20 20 46 4f 52 0a 45 41 43 48 20 52  nal.  FOR.EACH R
5f80: 4f 57 20 69 6d 70 6c 69 65 73 20 74 68 61 74 20  OW implies that 
5f90: 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
5fa0: 74 73 20 73 70 65 63 69 66 69 65 64 20 61 73 20  ts specified as 
5fb0: 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73  <i>trigger-steps
5fc0: 3c 2f 69 3e 20 0a 6d 61 79 20 62 65 20 65 78 65  </i> .may be exe
5fd0: 63 75 74 65 64 20 28 64 65 70 65 6e 64 69 6e 67  cuted (depending
5fe0: 20 6f 6e 20 74 68 65 20 57 48 45 4e 20 63 6c 61   on the WHEN cla
5ff0: 75 73 65 29 20 66 6f 72 20 65 61 63 68 20 64 61  use) for each da
6000: 74 61 62 61 73 65 20 72 6f 77 20 62 65 69 6e 67  tabase row being
6010: 0a 69 6e 73 65 72 74 65 64 2c 20 75 70 64 61 74  .inserted, updat
6020: 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20 62 79  ed or deleted by
6030: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 63   the statement c
6040: 61 75 73 69 6e 67 20 74 68 65 20 74 72 69 67 67  ausing the trigg
6050: 65 72 20 74 6f 20 66 69 72 65 2e 3c 2f 70 3e 0a  er to fire.</p>.
6060: 0a 3c 70 3e 42 6f 74 68 20 74 68 65 20 57 48 45  .<p>Both the WHE
6070: 4e 20 63 6c 61 75 73 65 20 61 6e 64 20 74 68 65  N clause and the
6080: 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70   <i>trigger-step
6090: 73 3c 2f 69 3e 20 6d 61 79 20 61 63 63 65 73 73  s</i> may access
60a0: 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 0a 74 68   elements of .th
60b0: 65 20 72 6f 77 20 62 65 69 6e 67 20 69 6e 73 65  e row being inse
60c0: 72 74 65 64 2c 20 64 65 6c 65 74 65 64 20 6f 72  rted, deleted or
60d0: 20 75 70 64 61 74 65 64 20 75 73 69 6e 67 20 72   updated using r
60e0: 65 66 65 72 65 6e 63 65 73 20 6f 66 20 74 68 65  eferences of the
60f0: 20 66 6f 72 6d 20 0a 22 4e 45 57 2e 3c 69 3e 63   form ."NEW.<i>c
6100: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 20  olumn-name</i>" 
6110: 61 6e 64 20 22 4f 4c 44 2e 3c 69 3e 63 6f 6c 75  and "OLD.<i>colu
6120: 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 2c 20 77 68  mn-name</i>", wh
6130: 65 72 65 0a 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61  ere.<i>column-na
6140: 6d 65 3c 2f 69 3e 20 69 73 20 74 68 65 20 6e 61  me</i> is the na
6150: 6d 65 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 66  me of a column f
6160: 72 6f 6d 20 74 68 65 20 74 61 62 6c 65 20 74 68  rom the table th
6170: 61 74 20 74 68 65 20 74 72 69 67 67 65 72 0a 69  at the trigger.i
6180: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
6190: 68 2e 20 4f 4c 44 20 61 6e 64 20 4e 45 57 20 72  h. OLD and NEW r
61a0: 65 66 65 72 65 6e 63 65 73 20 6d 61 79 20 6f 6e  eferences may on
61b0: 6c 79 20 62 65 20 75 73 65 64 20 69 6e 20 74 72  ly be used in tr
61c0: 69 67 67 65 72 73 20 6f 6e 0a 3c 69 3e 74 72 69  iggers on.<i>tri
61d0: 67 67 65 72 2d 65 76 65 6e 74 3c 2f 69 3e 73 20  gger-event</i>s 
61e0: 66 6f 72 20 77 68 69 63 68 20 74 68 65 79 20 61  for which they a
61f0: 72 65 20 72 65 6c 65 76 61 6e 74 2c 20 61 73 20  re relevant, as 
6200: 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 74  follows:</p>..<t
6210: 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65  able border=0 ce
6220: 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74  llpadding=10>.<t
6230: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
6240: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
6250: 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 49  " width=120><i>I
6260: 4e 53 45 52 54 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c  NSERT</i></td>.<
6270: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
6280: 4e 45 57 20 72 65 66 65 72 65 6e 63 65 73 20 61  NEW references a
6290: 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f  re valid</td>.</
62a0: 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  tr>.<tr>.<td val
62b0: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
62c0: 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 31 32  "right" width=12
62d0: 30 3e 3c 69 3e 55 50 44 41 54 45 3c 2f 69 3e 3c  0><i>UPDATE</i><
62e0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
62f0: 22 74 6f 70 22 3e 4e 45 57 20 61 6e 64 20 4f 4c  "top">NEW and OL
6300: 44 20 72 65 66 65 72 65 6e 63 65 73 20 61 72 65  D references are
6310: 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72   valid</td>.</tr
6320: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  >.<tr>.<td valig
6330: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
6340: 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e  ight" width=120>
6350: 3c 69 3e 44 45 4c 45 54 45 3c 2f 69 3e 3c 2f 74  <i>DELETE</i></t
6360: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
6370: 6f 70 22 3e 4f 4c 44 20 72 65 66 65 72 65 6e 63  op">OLD referenc
6380: 65 73 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64  es are valid</td
6390: 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e  >.</tr>.</table>
63a0: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 20 57  .</p>..<p>If a W
63b0: 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20 73 75  HEN clause is su
63c0: 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51 4c 20  pplied, the SQL 
63d0: 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65 63 69  statements speci
63e0: 66 69 65 64 20 61 73 20 3c 69 3e 74 72 69 67 67  fied as <i>trigg
63f0: 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 61 72 65  er-steps</i> are
6400: 20 6f 6e 6c 79 20 65 78 65 63 75 74 65 64 20 66   only executed f
6410: 6f 72 20 72 6f 77 73 20 66 6f 72 20 77 68 69 63  or rows for whic
6420: 68 20 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73  h the WHEN claus
6430: 65 20 69 73 20 74 72 75 65 2e 20 49 66 20 6e 6f  e is true. If no
6440: 20 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20   WHEN clause is 
6450: 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51  supplied, the SQ
6460: 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65  L statements are
6470: 20 65 78 65 63 75 74 65 64 20 66 6f 72 20 61 6c   executed for al
6480: 6c 20 72 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e  l rows.</p>..<p>
6490: 54 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 69  The specified <i
64a0: 3e 74 72 69 67 67 65 72 2d 74 69 6d 65 3c 2f 69  >trigger-time</i
64b0: 3e 20 64 65 74 65 72 6d 69 6e 65 73 20 77 68 65  > determines whe
64c0: 6e 20 74 68 65 20 3c 69 3e 74 72 69 67 67 65 72  n the <i>trigger
64d0: 2d 73 74 65 70 73 3c 2f 69 3e 0a 77 69 6c 6c 20  -steps</i>.will 
64e0: 62 65 20 65 78 65 63 75 74 65 64 20 72 65 6c 61  be executed rela
64f0: 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 73 65  tive to the inse
6500: 72 74 69 6f 6e 2c 20 6d 6f 64 69 66 69 63 61 74  rtion, modificat
6510: 69 6f 6e 20 6f 72 20 72 65 6d 6f 76 61 6c 20 6f  ion or removal o
6520: 66 20 74 68 65 0a 61 73 73 6f 63 69 61 74 65 64  f the.associated
6530: 20 72 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6e   row.</p>..<p>An
6540: 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61   ON CONFLICT cla
6550: 75 73 65 20 6d 61 79 20 62 65 20 73 70 65 63 69  use may be speci
6560: 66 69 65 64 20 61 73 20 70 61 72 74 20 6f 66 20  fied as part of 
6570: 61 6e 20 55 50 44 41 54 45 20 6f 72 20 49 4e 53  an UPDATE or INS
6580: 45 52 54 0a 3c 69 3e 74 72 69 67 67 65 72 2d 73  ERT.<i>trigger-s
6590: 74 65 70 3c 2f 69 3e 2e 20 48 6f 77 65 76 65 72  tep</i>. However
65a0: 20 69 66 20 61 6e 20 4f 4e 20 43 4f 4e 46 4c 49   if an ON CONFLI
65b0: 43 54 20 63 6c 61 75 73 65 20 69 73 20 73 70 65  CT clause is spe
65c0: 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20 6f  cified as part o
65d0: 66 20 0a 74 68 65 20 73 74 61 74 65 6d 65 6e 74  f .the statement
65e0: 20 63 61 75 73 69 6e 67 20 74 68 65 20 74 72 69   causing the tri
65f0: 67 67 65 72 20 74 6f 20 66 69 72 65 2c 20 74 68  gger to fire, th
6600: 65 6e 20 74 68 69 73 20 63 6f 6e 66 6c 69 63 74  en this conflict
6610: 20 68 61 6e 64 6c 69 6e 67 0a 70 6f 6c 69 63 79   handling.policy
6620: 20 69 73 20 75 73 65 64 20 69 6e 73 74 65 61 64   is used instead
6630: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65  .</p>..<p>Trigge
6640: 72 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63  rs are automatic
6650: 61 6c 6c 79 20 64 72 6f 70 70 65 64 20 77 68 65  ally dropped whe
6660: 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  n the table that
6670: 20 74 68 65 79 20 61 72 65 20 0a 61 73 73 6f 63   they are .assoc
6680: 69 61 74 65 64 20 77 69 74 68 20 69 73 20 64 72  iated with is dr
6690: 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  opped.</p>..<p>T
66a0: 72 69 67 67 65 72 73 20 6d 61 79 20 62 65 20 63  riggers may be c
66b0: 72 65 61 74 65 64 20 6f 6e 20 76 69 65 77 73 2c  reated on views,
66c0: 20 61 73 20 77 65 6c 6c 20 61 73 20 6f 72 64 69   as well as ordi
66d0: 6e 61 72 79 20 74 61 62 6c 65 73 2c 20 62 79 20  nary tables, by 
66e0: 73 70 65 63 69 66 79 69 6e 67 0a 49 4e 53 54 45  specifying.INSTE
66f0: 41 44 20 4f 46 20 69 6e 20 74 68 65 20 43 52 45  AD OF in the CRE
6700: 41 54 45 20 54 52 49 47 47 45 52 20 73 74 61 74  ATE TRIGGER stat
6710: 65 6d 65 6e 74 2e 20 49 66 20 6f 6e 65 20 6f 72  ement. If one or
6720: 20 6d 6f 72 65 20 4f 4e 20 49 4e 53 45 52 54 2c   more ON INSERT,
6730: 20 4f 4e 20 44 45 4c 45 54 45 0a 6f 72 20 4f 4e   ON DELETE.or ON
6740: 20 55 50 44 41 54 45 20 74 72 69 67 67 65 72 73   UPDATE triggers
6750: 20 61 72 65 20 64 65 66 69 6e 65 64 20 6f 6e 20   are defined on 
6760: 61 20 76 69 65 77 2c 20 74 68 65 6e 20 69 74 20  a view, then it 
6770: 69 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 20  is not an error 
6780: 74 6f 20 65 78 65 63 75 74 65 0a 61 6e 20 49 4e  to execute.an IN
6790: 53 45 52 54 2c 20 44 45 4c 45 54 45 20 6f 72 20  SERT, DELETE or 
67a0: 55 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74  UPDATE statement
67b0: 20 6f 6e 20 74 68 65 20 76 69 65 77 2c 20 72 65   on the view, re
67c0: 73 70 65 63 74 69 76 65 6c 79 2e 20 54 68 65 72  spectively. Ther
67d0: 65 61 66 74 65 72 2c 0a 65 78 65 63 75 74 69 6e  eafter,.executin
67e0: 67 20 61 6e 20 49 4e 53 45 52 54 2c 20 44 45 4c  g an INSERT, DEL
67f0: 45 54 45 20 6f 72 20 55 50 44 41 54 45 20 6f 6e  ETE or UPDATE on
6800: 20 74 68 65 20 76 69 65 77 20 63 61 75 73 65 73   the view causes
6810: 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 0a   the associated.
6820: 20 20 74 72 69 67 67 65 72 73 20 74 6f 20 66 69    triggers to fi
6830: 72 65 2e 20 54 68 65 20 72 65 61 6c 20 74 61 62  re. The real tab
6840: 6c 65 73 20 75 6e 64 65 72 6c 79 69 6e 67 20 74  les underlying t
6850: 68 65 20 76 69 65 77 20 61 72 65 20 6e 6f 74 20  he view are not 
6860: 6d 6f 64 69 66 69 65 64 0a 20 20 28 65 78 63 65  modified.  (exce
6870: 70 74 20 70 6f 73 73 69 62 6c 79 20 65 78 70 6c  pt possibly expl
6880: 69 63 69 74 6c 79 2c 20 62 79 20 61 20 74 72 69  icitly, by a tri
6890: 67 67 65 72 20 70 72 6f 67 72 61 6d 29 2e 3c 2f  gger program).</
68a0: 70 3e 0a 0a 3c 70 3e 3c 62 3e 45 78 61 6d 70 6c  p>..<p><b>Exampl
68b0: 65 3a 3c 2f 62 3e 3c 2f 70 3e 0a 0a 3c 70 3e 41  e:</b></p>..<p>A
68c0: 73 73 75 6d 69 6e 67 20 74 68 61 74 20 63 75 73  ssuming that cus
68d0: 74 6f 6d 65 72 20 72 65 63 6f 72 64 73 20 61 72  tomer records ar
68e0: 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20  e stored in the 
68f0: 22 63 75 73 74 6f 6d 65 72 73 22 20 74 61 62 6c  "customers" tabl
6900: 65 2c 20 61 6e 64 0a 74 68 61 74 20 6f 72 64 65  e, and.that orde
6910: 72 20 72 65 63 6f 72 64 73 20 61 72 65 20 73 74  r records are st
6920: 6f 72 65 64 20 69 6e 20 74 68 65 20 22 6f 72 64  ored in the "ord
6930: 65 72 73 22 20 74 61 62 6c 65 2c 20 74 68 65 20  ers" table, the 
6940: 66 6f 6c 6c 6f 77 69 6e 67 20 74 72 69 67 67 65  following trigge
6950: 72 0a 65 6e 73 75 72 65 73 20 74 68 61 74 20 61  r.ensures that a
6960: 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 20 6f 72  ll associated or
6970: 64 65 72 73 20 61 72 65 20 72 65 64 69 72 65 63  ders are redirec
6980: 74 65 64 20 77 68 65 6e 20 61 20 63 75 73 74 6f  ted when a custo
6990: 6d 65 72 20 63 68 61 6e 67 65 73 0a 68 69 73 20  mer changes.his 
69a0: 6f 72 20 68 65 72 20 61 64 64 72 65 73 73 3a 3c  or her address:<
69b0: 2f 70 3e 0a 7d 0a 45 78 61 6d 70 6c 65 20 7b 0a  /p>.}.Example {.
69c0: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20 75  CREATE TRIGGER u
69d0: 70 64 61 74 65 5f 63 75 73 74 6f 6d 65 72 5f 61  pdate_customer_a
69e0: 64 64 72 65 73 73 20 55 50 44 41 54 45 20 4f 46  ddress UPDATE OF
69f0: 20 61 64 64 72 65 73 73 20 4f 4e 20 63 75 73 74   address ON cust
6a00: 6f 6d 65 72 73 20 0a 20 20 42 45 47 49 4e 0a 20  omers .  BEGIN. 
6a10: 20 20 20 55 50 44 41 54 45 20 6f 72 64 65 72 73     UPDATE orders
6a20: 20 53 45 54 20 61 64 64 72 65 73 73 20 3d 20 6e   SET address = n
6a30: 65 77 2e 61 64 64 72 65 73 73 20 57 48 45 52 45  ew.address WHERE
6a40: 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d 65 20 3d   customer_name =
6a50: 20 6f 6c 64 2e 6e 61 6d 65 3b 0a 20 20 45 4e 44   old.name;.  END
6a60: 3b 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e 57 69  ;.}.puts {.<p>Wi
6a70: 74 68 20 74 68 69 73 20 74 72 69 67 67 65 72 20  th this trigger 
6a80: 69 6e 73 74 61 6c 6c 65 64 2c 20 65 78 65 63 75  installed, execu
6a90: 74 69 6e 67 20 74 68 65 20 73 74 61 74 65 6d 65  ting the stateme
6aa0: 6e 74 3a 3c 2f 70 3e 0a 7d 0a 0a 45 78 61 6d 70  nt:</p>.}..Examp
6ab0: 6c 65 20 7b 0a 55 50 44 41 54 45 20 63 75 73 74  le {.UPDATE cust
6ac0: 6f 6d 65 72 73 20 53 45 54 20 61 64 64 72 65 73  omers SET addres
6ad0: 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e 27  s = '1 Main St.'
6ae0: 20 57 48 45 52 45 20 6e 61 6d 65 20 3d 20 27 4a   WHERE name = 'J
6af0: 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 0a 70 75  ack Jones';.}.pu
6b00: 74 73 20 7b 0a 3c 70 3e 63 61 75 73 65 73 20 74  ts {.<p>causes t
6b10: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20  he following to 
6b20: 62 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  be automatically
6b30: 20 65 78 65 63 75 74 65 64 3a 3c 2f 70 3e 0a 7d   executed:</p>.}
6b40: 0a 45 78 61 6d 70 6c 65 20 7b 0a 55 50 44 41 54  .Example {.UPDAT
6b50: 45 20 6f 72 64 65 72 73 20 53 45 54 20 61 64 64  E orders SET add
6b60: 72 65 73 73 20 3d 20 27 31 20 4d 61 69 6e 20 53  ress = '1 Main S
6b70: 74 2e 27 20 57 48 45 52 45 20 63 75 73 74 6f 6d  t.' WHERE custom
6b80: 65 72 5f 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20  er_name = 'Jack 
6b90: 4a 6f 6e 65 73 27 3b 0a 7d 0a 0a 70 75 74 73 20  Jones';.}..puts 
6ba0: 7b 0a 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 63  {.<p>Note that c
6bb0: 75 72 72 65 6e 74 6c 79 2c 20 74 72 69 67 67 65  urrently, trigge
6bc0: 72 73 20 6d 61 79 20 62 65 68 61 76 65 20 6f 64  rs may behave od
6bd0: 64 6c 79 20 77 68 65 6e 20 63 72 65 61 74 65 64  dly when created
6be0: 20 6f 6e 20 74 61 62 6c 65 73 0a 20 20 77 69 74   on tables.  wit
6bf0: 68 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  h INTEGER PRIMAR
6c00: 59 20 4b 45 59 20 66 69 65 6c 64 73 2e 20 49 66  Y KEY fields. If
6c10: 20 61 20 42 45 46 4f 52 45 20 74 72 69 67 67 65   a BEFORE trigge
6c20: 72 20 70 72 6f 67 72 61 6d 20 6d 6f 64 69 66 69  r program modifi
6c30: 65 73 20 74 68 65 20 0a 20 20 49 4e 54 45 47 45  es the .  INTEGE
6c40: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 66 69  R PRIMARY KEY fi
6c50: 65 6c 64 20 6f 66 20 61 20 72 6f 77 20 74 68 61  eld of a row tha
6c60: 74 20 77 69 6c 6c 20 62 65 20 73 75 62 73 65 71  t will be subseq
6c70: 75 65 6e 74 6c 79 20 75 70 64 61 74 65 64 20 62  uently updated b
6c80: 79 20 74 68 65 0a 20 20 73 74 61 74 65 6d 65 6e  y the.  statemen
6c90: 74 20 74 68 61 74 20 63 61 75 73 65 73 20 74 68  t that causes th
6ca0: 65 20 74 72 69 67 67 65 72 20 74 6f 20 66 69 72  e trigger to fir
6cb0: 65 2c 20 74 68 65 6e 20 74 68 65 20 75 70 64 61  e, then the upda
6cc0: 74 65 20 6d 61 79 20 6e 6f 74 20 6f 63 63 75 72  te may not occur
6cd0: 2e 20 0a 20 20 54 68 65 20 77 6f 72 6b 61 72 6f  . .  The workaro
6ce0: 75 6e 64 20 69 73 20 74 6f 20 64 65 63 6c 61 72  und is to declar
6cf0: 65 20 74 68 65 20 74 61 62 6c 65 20 77 69 74 68  e the table with
6d00: 20 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63   a PRIMARY KEY c
6d10: 6f 6c 75 6d 6e 20 69 6e 73 74 65 61 64 0a 20 20  olumn instead.  
6d20: 6f 66 20 61 6e 20 49 4e 54 45 47 45 52 20 50 52  of an INTEGER PR
6d30: 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e  IMARY KEY column
6d40: 2e 3c 2f 70 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a  .</p>.}..puts {.
6d50: 3c 70 3e 41 20 73 70 65 63 69 61 6c 20 53 51 4c  <p>A special SQL
6d60: 20 66 75 6e 63 74 69 6f 6e 20 52 41 49 53 45 28   function RAISE(
6d70: 29 20 6d 61 79 20 62 65 20 75 73 65 64 20 77 69  ) may be used wi
6d80: 74 68 69 6e 20 61 20 74 72 69 67 67 65 72 2d 70  thin a trigger-p
6d90: 72 6f 67 72 61 6d 2c 20 77 69 74 68 20 74 68 65  rogram, with the
6da0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74 61   following synta
6db0: 78 3c 2f 70 3e 20 0a 7d 0a 53 79 6e 74 61 78 20  x</p> .}.Syntax 
6dc0: 7b 72 61 69 73 65 2d 66 75 6e 63 74 69 6f 6e 7d  {raise-function}
6dd0: 20 7b 0a 52 41 49 53 45 20 28 20 41 42 4f 52 54   {.RAISE ( ABORT
6de0: 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73 61 67 65  , <error-message
6df0: 3e 20 29 20 7c 20 0a 52 41 49 53 45 20 28 20 46  > ) | .RAISE ( F
6e00: 41 49 4c 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73  AIL, <error-mess
6e10: 61 67 65 3e 20 29 20 7c 20 0a 52 41 49 53 45 20  age> ) | .RAISE 
6e20: 28 20 52 4f 4c 4c 42 41 43 4b 2c 20 3c 65 72 72  ( ROLLBACK, <err
6e30: 6f 72 2d 6d 65 73 73 61 67 65 3e 20 29 20 7c 20  or-message> ) | 
6e40: 0a 52 41 49 53 45 20 28 20 49 47 4e 4f 52 45 20  .RAISE ( IGNORE 
6e50: 29 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e 57 68  ).}.puts {.<p>Wh
6e60: 65 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 69  en one of the fi
6e70: 72 73 74 20 74 68 72 65 65 20 66 6f 72 6d 73 20  rst three forms 
6e80: 69 73 20 63 61 6c 6c 65 64 20 64 75 72 69 6e 67  is called during
6e90: 20 74 72 69 67 67 65 72 2d 70 72 6f 67 72 61 6d   trigger-program
6ea0: 20 65 78 65 63 75 74 69 6f 6e 2c 20 74 68 65 20   execution, the 
6eb0: 73 70 65 63 69 66 69 65 64 20 4f 4e 20 43 4f 4e  specified ON CON
6ec0: 46 4c 49 43 54 20 70 72 6f 63 65 73 73 69 6e 67  FLICT processing
6ed0: 20 69 73 20 70 65 72 66 6f 72 6d 65 64 20 28 65   is performed (e
6ee0: 69 74 68 65 72 20 41 42 4f 52 54 2c 20 46 41 49  ither ABORT, FAI
6ef0: 4c 20 6f 72 20 0a 20 52 4f 4c 4c 42 41 43 4b 29  L or . ROLLBACK)
6f00: 20 61 6e 64 20 74 68 65 20 63 75 72 72 65 6e 74   and the current
6f10: 20 71 75 65 72 79 20 74 65 72 6d 69 6e 61 74 65   query terminate
6f20: 73 2e 20 41 6e 20 65 72 72 6f 72 20 63 6f 64 65  s. An error code
6f30: 20 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54   of SQLITE_CONST
6f40: 52 41 49 4e 54 20 69 73 20 72 65 74 75 72 6e 65  RAINT is returne
6f50: 64 20 74 6f 20 74 68 65 20 75 73 65 72 2c 20 61  d to the user, a
6f60: 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 73 70  long with the sp
6f70: 65 63 69 66 69 65 64 20 65 72 72 6f 72 20 6d 65  ecified error me
6f80: 73 73 61 67 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57  ssage.</p>..<p>W
6f90: 68 65 6e 20 52 41 49 53 45 28 49 47 4e 4f 52 45  hen RAISE(IGNORE
6fa0: 29 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65  ) is called, the
6fb0: 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20 74 68   remainder of th
6fc0: 65 20 63 75 72 72 65 6e 74 20 74 72 69 67 67 65  e current trigge
6fd0: 72 20 70 72 6f 67 72 61 6d 2c 0a 74 68 65 20 73  r program,.the s
6fe0: 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63 61  tatement that ca
6ff0: 75 73 65 64 20 74 68 65 20 74 72 69 67 67 65 72  used the trigger
7000: 20 70 72 6f 67 72 61 6d 20 74 6f 20 65 78 65 63   program to exec
7010: 75 74 65 20 61 6e 64 20 61 6e 79 20 73 75 62 73  ute and any subs
7020: 65 71 75 65 6e 74 0a 20 20 20 20 74 72 69 67 67  equent.    trigg
7030: 65 72 20 70 72 6f 67 72 61 6d 73 20 74 68 61 74  er programs that
7040: 20 77 6f 75 6c 64 20 6f 66 20 62 65 65 6e 20 65   would of been e
7050: 78 65 63 75 74 65 64 20 61 72 65 20 61 62 61 6e  xecuted are aban
7060: 64 6f 6e 65 64 2e 20 4e 6f 20 64 61 74 61 62 61  doned. No databa
7070: 73 65 0a 20 20 20 20 63 68 61 6e 67 65 73 20 61  se.    changes a
7080: 72 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20  re rolled back. 
7090: 20 49 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e   If the statemen
70a0: 74 20 74 68 61 74 20 63 61 75 73 65 64 20 74 68  t that caused th
70b0: 65 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  e trigger progra
70c0: 6d 0a 20 20 20 20 74 6f 20 65 78 65 63 75 74 65  m.    to execute
70d0: 20 69 73 20 69 74 73 65 6c 66 20 70 61 72 74 20   is itself part 
70e0: 6f 66 20 61 20 74 72 69 67 67 65 72 20 70 72 6f  of a trigger pro
70f0: 67 72 61 6d 2c 20 74 68 65 6e 20 74 68 61 74 20  gram, then that 
7100: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 0a  trigger program.
7110: 20 20 20 20 72 65 73 75 6d 65 73 20 65 78 65 63      resumes exec
7120: 75 74 69 6f 6e 20 61 74 20 74 68 65 20 62 65 67  ution at the beg
7130: 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 6e 65  inning of the ne
7140: 78 74 20 73 74 65 70 2e 0a 3c 2f 70 3e 0a 0a 3c  xt step..</p>..<
7150: 70 3e 54 72 69 67 67 65 72 73 20 61 72 65 20 72  p>Triggers are r
7160: 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65  emoved using the
7170: 20 3c 61 20 68 72 65 66 3d 22 23 64 72 6f 70 74   <a href="#dropt
7180: 72 69 67 67 65 72 22 3e 44 52 4f 50 20 54 52 49  rigger">DROP TRI
7190: 47 47 45 52 3c 2f 61 3e 0a 73 74 61 74 65 6d 65  GGER</a>.stateme
71a0: 6e 74 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f 72 61  nt.  Non-tempora
71b0: 72 79 20 74 72 69 67 67 65 72 73 20 63 61 6e 6e  ry triggers cann
71c0: 6f 74 20 62 65 20 61 64 64 65 64 20 6f 6e 20 61  ot be added on a
71d0: 20 74 61 62 6c 65 20 69 6e 20 61 6e 20 0a 61 74   table in an .at
71e0: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 2e  tached database.
71f0: 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  </p>.}...Section
7200: 20 7b 43 52 45 41 54 45 20 56 49 45 57 7d 20 7b   {CREATE VIEW} {
7210: 63 72 65 61 74 65 76 69 65 77 7d 0a 0a 53 79 6e  createview}..Syn
7220: 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64  tax {sql-command
7230: 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d 50  } {.CREATE [TEMP
7240: 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20 56 49   | TEMPORARY] VI
7250: 45 57 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  EW [<database-na
7260: 6d 65 3e 2e 5d 20 3c 76 69 65 77 2d 6e 61 6d 65  me>.] <view-name
7270: 3e 20 41 53 20 3c 73 65 6c 65 63 74 2d 73 74 61  > AS <select-sta
7280: 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20  tement>.}..puts 
7290: 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20  {.<p>The CREATE 
72a0: 56 49 45 57 20 63 6f 6d 6d 61 6e 64 20 61 73 73  VIEW command ass
72b0: 69 67 6e 73 20 61 20 6e 61 6d 65 20 74 6f 20 61  igns a name to a
72c0: 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20 0a 3c   pre-packaged .<
72d0: 61 20 68 72 65 66 3d 22 23 73 65 6c 65 63 74 22  a href="#select"
72e0: 3e 53 45 4c 45 43 54 3c 2f 61 3e 0a 73 74 61 74  >SELECT</a>.stat
72f0: 65 6d 65 6e 74 2e 20 20 4f 6e 63 65 20 74 68 65  ement.  Once the
7300: 20 76 69 65 77 20 69 73 20 63 72 65 61 74 65 64   view is created
7310: 2c 20 69 74 20 63 61 6e 20 62 65 20 75 73 65 64  , it can be used
7320: 20 69 6e 20 74 68 65 20 46 52 4f 4d 20 63 6c 61   in the FROM cla
7330: 75 73 65 0a 6f 66 20 61 6e 6f 74 68 65 72 20 53  use.of another S
7340: 45 4c 45 43 54 20 69 6e 20 70 6c 61 63 65 20 6f  ELECT in place o
7350: 66 20 61 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0a  f a table name..
7360: 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20  </p>..<p>If the 
7370: 22 54 45 4d 50 22 20 6f 72 20 22 54 45 4d 50 4f  "TEMP" or "TEMPO
7380: 52 41 52 59 22 20 6b 65 79 77 6f 72 64 20 6f 63  RARY" keyword oc
7390: 63 75 72 73 20 69 6e 20 62 65 74 77 65 65 6e 20  curs in between 
73a0: 22 43 52 45 41 54 45 22 0a 61 6e 64 20 22 54 41  "CREATE".and "TA
73b0: 42 4c 45 22 20 74 68 65 6e 20 74 68 65 20 74 61  BLE" then the ta
73c0: 62 6c 65 20 74 68 61 74 20 69 73 20 63 72 65 61  ble that is crea
73d0: 74 65 64 20 69 73 20 6f 6e 6c 79 20 76 69 73 69  ted is only visi
73e0: 62 6c 65 20 74 6f 20 74 68 65 0a 70 72 6f 63 65  ble to the.proce
73f0: 73 73 20 74 68 61 74 20 6f 70 65 6e 65 64 20 74  ss that opened t
7400: 68 65 20 64 61 74 61 62 61 73 65 20 61 6e 64 20  he database and 
7410: 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  is automatically
7420: 20 64 65 6c 65 74 65 64 20 77 68 65 6e 0a 74 68   deleted when.th
7430: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 63 6c  e database is cl
7440: 6f 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 49  osed.</p>..<p> I
7450: 66 20 61 20 26 6c 74 3b 64 61 74 61 62 61 73 65  f a &lt;database
7460: 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 73 70 65  -name&gt; is spe
7470: 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65  cified, then the
7480: 20 76 69 65 77 20 69 73 20 63 72 65 61 74 65 64   view is created
7490: 20 69 6e 20 0a 74 68 65 20 6e 61 6d 65 64 20 64   in .the named d
74a0: 61 74 61 62 61 73 65 2e 20 49 74 20 69 73 20 61  atabase. It is a
74b0: 6e 20 65 72 72 6f 72 20 74 6f 20 73 70 65 63 69  n error to speci
74c0: 66 79 20 62 6f 74 68 20 61 20 26 6c 74 3b 64 61  fy both a &lt;da
74d0: 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 0a  tabase-name&gt;.
74e0: 61 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79  and the TEMP key
74f0: 77 6f 72 64 2c 20 75 6e 6c 65 73 73 20 74 68 65  word, unless the
7500: 20 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61   &lt;database-na
7510: 6d 65 26 67 74 3b 20 69 73 20 22 74 65 6d 70 22  me&gt; is "temp"
7520: 2e 20 49 66 20 6e 6f 0a 64 61 74 61 62 61 73 65  . If no.database
7530: 20 6e 61 6d 65 20 69 73 20 73 70 65 63 69 66 69   name is specifi
7540: 65 64 2c 20 61 6e 64 20 74 68 65 20 54 45 4d 50  ed, and the TEMP
7550: 20 6b 65 79 77 6f 72 64 20 69 73 20 6e 6f 74 20   keyword is not 
7560: 70 72 65 73 65 6e 74 2c 0a 74 68 65 20 74 61 62  present,.the tab
7570: 6c 65 20 69 73 20 63 72 65 61 74 65 64 20 69 6e  le is created in
7580: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
7590: 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20  se.</p>..<p>You 
75a0: 63 61 6e 6e 6f 74 20 43 4f 50 59 2c 20 44 45 4c  cannot COPY, DEL
75b0: 45 54 45 2c 20 49 4e 53 45 52 54 20 6f 72 20 55  ETE, INSERT or U
75c0: 50 44 41 54 45 20 61 20 76 69 65 77 2e 20 20 56  PDATE a view.  V
75d0: 69 65 77 73 20 61 72 65 20 72 65 61 64 2d 6f 6e  iews are read-on
75e0: 6c 79 20 0a 69 6e 20 53 51 4c 69 74 65 2e 20 20  ly .in SQLite.  
75f0: 48 6f 77 65 76 65 72 2c 20 69 6e 20 6d 61 6e 79  However, in many
7600: 20 63 61 73 65 73 20 79 6f 75 20 63 61 6e 20 75   cases you can u
7610: 73 65 20 61 20 3c 61 20 68 72 65 66 3d 22 23 63  se a <a href="#c
7620: 72 65 61 74 65 74 72 69 67 67 65 72 22 3e 0a 54  reatetrigger">.T
7630: 52 49 47 47 45 52 3c 2f 61 3e 20 6f 6e 20 74 68  RIGGER</a> on th
7640: 65 20 76 69 65 77 20 74 6f 20 61 63 63 6f 6d 70  e view to accomp
7650: 6c 69 73 68 20 74 68 65 20 73 61 6d 65 20 74 68  lish the same th
7660: 69 6e 67 2e 20 20 56 69 65 77 73 20 61 72 65 20  ing.  Views are 
7670: 72 65 6d 6f 76 65 64 20 0a 77 69 74 68 20 74 68  removed .with th
7680: 65 20 3c 61 20 68 72 65 66 3d 22 23 64 72 6f 70  e <a href="#drop
7690: 76 69 65 77 22 3e 44 52 4f 50 20 56 49 45 57 3c  view">DROP VIEW<
76a0: 2f 61 3e 20 0a 63 6f 6d 6d 61 6e 64 2e 20 20 4e  /a> .command.  N
76b0: 6f 6e 2d 74 65 6d 70 6f 72 61 72 79 20 76 69 65  on-temporary vie
76c0: 77 73 20 63 61 6e 6e 6f 74 20 62 65 20 63 72 65  ws cannot be cre
76d0: 61 74 65 64 20 6f 6e 20 74 61 62 6c 65 73 20 69  ated on tables i
76e0: 6e 20 61 6e 20 61 74 74 61 63 68 65 64 20 0a 64  n an attached .d
76f0: 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 7d 0a 0a  atabase.</p>.}..
7700: 0a 53 65 63 74 69 6f 6e 20 44 45 4c 45 54 45 20  .Section DELETE 
7710: 64 65 6c 65 74 65 0a 0a 53 79 6e 74 61 78 20 7b  delete..Syntax {
7720: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
7730: 0a 44 45 4c 45 54 45 20 46 52 4f 4d 20 5b 3c 64  .DELETE FROM [<d
7740: 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d  atabase-name> .]
7750: 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 57   <table-name> [W
7760: 48 45 52 45 20 3c 65 78 70 72 3e 5d 0a 7d 0a 0a  HERE <expr>].}..
7770: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 45  puts {.<p>The DE
7780: 4c 45 54 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20  LETE command is 
7790: 75 73 65 64 20 74 6f 20 72 65 6d 6f 76 65 20 72  used to remove r
77a0: 65 63 6f 72 64 73 20 66 72 6f 6d 20 61 20 74 61  ecords from a ta
77b0: 62 6c 65 2e 0a 54 68 65 20 63 6f 6d 6d 61 6e 64  ble..The command
77c0: 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65   consists of the
77d0: 20 22 44 45 4c 45 54 45 20 46 52 4f 4d 22 20 6b   "DELETE FROM" k
77e0: 65 79 77 6f 72 64 73 20 66 6f 6c 6c 6f 77 65 64  eywords followed
77f0: 20 62 79 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20   by.the name of 
7800: 74 68 65 20 74 61 62 6c 65 20 66 72 6f 6d 20 77  the table from w
7810: 68 69 63 68 20 72 65 63 6f 72 64 73 20 61 72 65  hich records are
7820: 20 74 6f 20 62 65 20 72 65 6d 6f 76 65 64 2e 0a   to be removed..
7830: 3c 2f 70 3e 0a 0a 3c 70 3e 57 69 74 68 6f 75 74  </p>..<p>Without
7840: 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 2c   a WHERE clause,
7850: 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68 65   all rows of the
7860: 20 74 61 62 6c 65 20 61 72 65 20 72 65 6d 6f 76   table are remov
7870: 65 64 2e 0a 49 66 20 61 20 57 48 45 52 45 20 63  ed..If a WHERE c
7880: 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c 69 65  lause is supplie
7890: 64 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74 68 6f  d, then only tho
78a0: 73 65 20 72 6f 77 73 20 74 68 61 74 20 6d 61 74  se rows that mat
78b0: 63 68 0a 74 68 65 20 65 78 70 72 65 73 73 69 6f  ch.the expressio
78c0: 6e 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 3c 2f  n are removed.</
78d0: 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b  p>.}...Section {
78e0: 44 45 54 41 43 48 20 44 41 54 41 42 41 53 45 7d  DETACH DATABASE}
78f0: 20 64 65 74 61 63 68 0a 0a 53 79 6e 74 61 78 20   detach..Syntax 
7900: 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a  {sql-command} {.
7910: 44 45 54 41 43 48 20 5b 44 41 54 41 42 41 53 45  DETACH [DATABASE
7920: 5d 20 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  ] <database-name
7930: 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  >.}..puts {.<p>T
7940: 68 69 73 20 73 74 61 74 65 6d 65 6e 74 20 64 65  his statement de
7950: 74 61 63 68 65 73 20 61 6e 20 61 64 64 69 74 69  taches an additi
7960: 6f 6e 61 6c 20 64 61 74 61 62 61 73 65 20 63 6f  onal database co
7970: 6e 6e 65 63 74 69 6f 6e 20 70 72 65 76 69 6f 75  nnection previou
7980: 73 6c 79 20 0a 61 74 74 61 63 68 65 64 20 75 73  sly .attached us
7990: 69 6e 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d  ing the <a href=
79a0: 22 23 61 74 74 61 63 68 22 3e 41 54 54 41 43 48  "#attach">ATTACH
79b0: 20 44 41 54 41 42 41 53 45 3c 2f 61 3e 20 73 74   DATABASE</a> st
79c0: 61 74 65 6d 65 6e 74 2e 20 20 49 74 0a 69 73 20  atement.  It.is 
79d0: 70 6f 73 73 69 62 6c 65 20 74 6f 20 68 61 76 65  possible to have
79e0: 20 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61   the same databa
79f0: 73 65 20 66 69 6c 65 20 61 74 74 61 63 68 65 64  se file attached
7a00: 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 20   multiple times 
7a10: 75 73 69 6e 67 20 0a 64 69 66 66 65 72 65 6e 74  using .different
7a20: 20 6e 61 6d 65 73 2c 20 61 6e 64 20 64 65 74 61   names, and deta
7a30: 63 68 69 6e 67 20 6f 6e 65 20 63 6f 6e 6e 65 63  ching one connec
7a40: 74 69 6f 6e 20 74 6f 20 61 20 66 69 6c 65 20 77  tion to a file w
7a50: 69 6c 6c 20 6c 65 61 76 65 20 74 68 65 20 0a 6f  ill leave the .o
7a60: 74 68 65 72 73 20 69 6e 74 61 63 74 2e 3c 2f 70  thers intact.</p
7a70: 3e 0a 0a 3c 70 3e 54 68 69 73 20 73 74 61 74 65  >..<p>This state
7a80: 6d 65 6e 74 20 77 69 6c 6c 20 66 61 69 6c 20 69  ment will fail i
7a90: 66 20 53 51 4c 69 74 65 20 69 73 20 69 6e 20 74  f SQLite is in t
7aa0: 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 61 20 74  he middle of a t
7ab0: 72 61 6e 73 61 63 74 69 6f 6e 2e 3c 2f 70 3e 0a  ransaction.</p>.
7ac0: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f  }...Section {DRO
7ad0: 50 20 49 4e 44 45 58 7d 20 64 72 6f 70 69 6e 64  P INDEX} dropind
7ae0: 65 78 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ex..Syntax {sql-
7af0: 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50 20  command} {.DROP 
7b00: 49 4e 44 45 58 20 5b 3c 64 61 74 61 62 61 73 65  INDEX [<database
7b10: 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 69 6e 64 65 78  -name> .] <index
7b20: 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b  -name>.}..puts {
7b30: 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 49 4e 44  .<p>The DROP IND
7b40: 45 58 20 73 74 61 74 65 6d 65 6e 74 20 72 65 6d  EX statement rem
7b50: 6f 76 65 73 20 61 6e 20 69 6e 64 65 78 20 61 64  oves an index ad
7b60: 64 65 64 0a 77 69 74 68 20 74 68 65 20 3c 61 20  ded.with the <a 
7b70: 68 72 65 66 3d 22 23 63 72 65 61 74 65 69 6e 64  href="#createind
7b80: 65 78 22 3e 0a 43 52 45 41 54 45 20 49 4e 44 45  ex">.CREATE INDE
7b90: 58 3c 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e  X</a> statement.
7ba0: 20 20 54 68 65 20 69 6e 64 65 78 20 6e 61 6d 65    The index name
7bb0: 64 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20  d is completely 
7bc0: 72 65 6d 6f 76 65 64 20 66 72 6f 6d 0a 74 68 65  removed from.the
7bd0: 20 64 69 73 6b 2e 20 20 54 68 65 20 6f 6e 6c 79   disk.  The only
7be0: 20 77 61 79 20 74 6f 20 72 65 63 6f 76 65 72 20   way to recover 
7bf0: 74 68 65 20 69 6e 64 65 78 20 69 73 20 74 6f 20  the index is to 
7c00: 72 65 65 6e 74 65 72 20 74 68 65 0a 61 70 70 72  reenter the.appr
7c10: 6f 70 72 69 61 74 65 20 43 52 45 41 54 45 20 49  opriate CREATE I
7c20: 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70  NDEX command.</p
7c30: 3e 0a 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 49  >..<p>The DROP I
7c40: 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74 20 64  NDEX statement d
7c50: 6f 65 73 20 6e 6f 74 20 72 65 64 75 63 65 20 74  oes not reduce t
7c60: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 64  he size of the d
7c70: 61 74 61 62 61 73 65 20 0a 66 69 6c 65 2e 20 20  atabase .file.  
7c80: 45 6d 70 74 79 20 73 70 61 63 65 20 69 6e 20 74  Empty space in t
7c90: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 72  he database is r
7ca0: 65 74 61 69 6e 65 64 20 66 6f 72 20 6c 61 74 65  etained for late
7cb0: 72 20 49 4e 53 45 52 54 73 2e 20 20 54 6f 20 0a  r INSERTs.  To .
7cc0: 72 65 6d 6f 76 65 20 66 72 65 65 20 73 70 61 63  remove free spac
7cd0: 65 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73  e in the databas
7ce0: 65 2c 20 75 73 65 20 74 68 65 20 3c 61 20 68 72  e, use the <a hr
7cf0: 65 66 3d 22 23 76 61 63 75 75 6d 22 3e 56 41 43  ef="#vacuum">VAC
7d00: 55 55 4d 3c 2f 61 3e 20 0a 63 6f 6d 6d 61 6e 64  UUM</a> .command
7d10: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
7d20: 6e 20 7b 44 52 4f 50 20 54 41 42 4c 45 7d 20 64  n {DROP TABLE} d
7d30: 72 6f 70 74 61 62 6c 65 0a 0a 53 79 6e 74 61 78  roptable..Syntax
7d40: 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b   {sql-command} {
7d50: 0a 44 52 4f 50 20 54 41 42 4c 45 20 5b 3c 64 61  .DROP TABLE [<da
7d60: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 2e 5d 20 3c  tabase-name>.] <
7d70: 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70  table-name>.}..p
7d80: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 52 4f  uts {.<p>The DRO
7d90: 50 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  P TABLE statemen
7da0: 74 20 72 65 6d 6f 76 65 73 20 61 20 74 61 62 6c  t removes a tabl
7db0: 65 20 61 64 64 65 64 20 77 69 74 68 20 74 68 65  e added with the
7dc0: 20 3c 61 20 68 72 65 66 3d 0a 22 23 63 72 65 61   <a href=."#crea
7dd0: 74 65 74 61 62 6c 65 22 3e 43 52 45 41 54 45 20  tetable">CREATE 
7de0: 54 41 42 4c 45 3c 2f 61 3e 20 73 74 61 74 65 6d  TABLE</a> statem
7df0: 65 6e 74 2e 20 20 54 68 65 20 6e 61 6d 65 20 73  ent.  The name s
7e00: 70 65 63 69 66 69 65 64 20 69 73 20 74 68 65 0a  pecified is the.
7e10: 74 61 62 6c 65 20 6e 61 6d 65 2e 20 20 49 74 20  table name.  It 
7e20: 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65  is completely re
7e30: 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 64  moved from the d
7e40: 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 61  atabase schema a
7e50: 6e 64 20 74 68 65 20 0a 64 69 73 6b 20 66 69 6c  nd the .disk fil
7e60: 65 2e 20 20 54 68 65 20 74 61 62 6c 65 20 63 61  e.  The table ca
7e70: 6e 20 6e 6f 74 20 62 65 20 72 65 63 6f 76 65 72  n not be recover
7e80: 65 64 2e 20 20 41 6c 6c 20 69 6e 64 69 63 65 73  ed.  All indices
7e90: 20 61 73 73 6f 63 69 61 74 65 64 20 0a 77 69 74   associated .wit
7ea0: 68 20 74 68 65 20 74 61 62 6c 65 20 61 72 65 20  h the table are 
7eb0: 61 6c 73 6f 20 64 65 6c 65 74 65 64 2e 20 20 4e  also deleted.  N
7ec0: 6f 6e 2d 74 65 6d 70 6f 72 61 72 79 20 74 61 62  on-temporary tab
7ed0: 6c 65 73 20 69 6e 20 61 6e 20 61 74 74 61 63 68  les in an attach
7ee0: 65 64 20 0a 64 61 74 61 62 61 73 65 20 63 61 6e  ed .database can
7ef0: 6e 6f 74 20 62 65 20 64 72 6f 70 70 65 64 2e 3c  not be dropped.<
7f00: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44 52 4f 50  /p>..<p>The DROP
7f10: 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
7f20: 20 64 6f 65 73 20 6e 6f 74 20 72 65 64 75 63 65   does not reduce
7f30: 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65   the size of the
7f40: 20 64 61 74 61 62 61 73 65 20 0a 66 69 6c 65 2e   database .file.
7f50: 20 20 45 6d 70 74 79 20 73 70 61 63 65 20 69 6e    Empty space in
7f60: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73   the database is
7f70: 20 72 65 74 61 69 6e 65 64 20 66 6f 72 20 6c 61   retained for la
7f80: 74 65 72 20 49 4e 53 45 52 54 73 2e 20 20 54 6f  ter INSERTs.  To
7f90: 20 0a 72 65 6d 6f 76 65 20 66 72 65 65 20 73 70   .remove free sp
7fa0: 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61 62  ace in the datab
7fb0: 61 73 65 2c 20 75 73 65 20 74 68 65 20 3c 61 20  ase, use the <a 
7fc0: 68 72 65 66 3d 22 23 76 61 63 75 75 6d 22 3e 56  href="#vacuum">V
7fd0: 41 43 55 55 4d 3c 2f 61 3e 20 0a 63 6f 6d 6d 61  ACUUM</a> .comma
7fe0: 6e 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74  nd.</p>.}...Sect
7ff0: 69 6f 6e 20 7b 44 52 4f 50 20 54 52 49 47 47 45  ion {DROP TRIGGE
8000: 52 7d 20 64 72 6f 70 74 72 69 67 67 65 72 0a 53  R} droptrigger.S
8010: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
8020: 6d 65 6e 74 7d 20 7b 0a 44 52 4f 50 20 54 52 49  ment} {.DROP TRI
8030: 47 47 45 52 20 5b 3c 64 61 74 61 62 61 73 65 2d  GGER [<database-
8040: 6e 61 6d 65 3e 20 2e 5d 20 3c 74 72 69 67 67 65  name> .] <trigge
8050: 72 2d 6e 61 6d 65 3e 0a 7d 0a 70 75 74 73 20 7b  r-name>.}.puts {
8060: 20 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 54 52   .<p>The DROP TR
8070: 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74 20  IGGER statement 
8080: 72 65 6d 6f 76 65 73 20 61 20 74 72 69 67 67 65  removes a trigge
8090: 72 20 63 72 65 61 74 65 64 20 62 79 20 74 68 65  r created by the
80a0: 20 0a 3c 61 20 68 72 65 66 3d 22 23 63 72 65 61   .<a href="#crea
80b0: 74 65 74 72 69 67 67 65 72 22 3e 43 52 45 41 54  tetrigger">CREAT
80c0: 45 20 54 52 49 47 47 45 52 3c 2f 61 3e 20 73 74  E TRIGGER</a> st
80d0: 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 74 72  atement.  The tr
80e0: 69 67 67 65 72 20 69 73 20 0a 64 65 6c 65 74 65  igger is .delete
80f0: 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62  d from the datab
8100: 61 73 65 20 73 63 68 65 6d 61 2e 20 4e 6f 74 65  ase schema. Note
8110: 20 74 68 61 74 20 74 72 69 67 67 65 72 73 20 61   that triggers a
8120: 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  re automatically
8130: 20 0a 64 72 6f 70 70 65 64 20 77 68 65 6e 20 74   .dropped when t
8140: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 74 61  he associated ta
8150: 62 6c 65 20 69 73 20 64 72 6f 70 70 65 64 2e 20  ble is dropped. 
8160: 20 4e 6f 6e 2d 74 65 6d 70 6f 72 61 72 79 20 74   Non-temporary t
8170: 72 69 67 67 65 72 73 20 0a 63 61 6e 6e 6f 74 20  riggers .cannot 
8180: 62 65 20 64 72 6f 70 70 65 64 20 6f 6e 20 61 74  be dropped on at
8190: 74 61 63 68 65 64 20 74 61 62 6c 65 73 2e 3c 2f  tached tables.</
81a0: 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b  p>.}...Section {
81b0: 44 52 4f 50 20 56 49 45 57 7d 20 64 72 6f 70 76  DROP VIEW} dropv
81c0: 69 65 77 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  iew..Syntax {sql
81d0: 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50  -command} {.DROP
81e0: 20 56 49 45 57 20 3c 76 69 65 77 2d 6e 61 6d 65   VIEW <view-name
81f0: 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  >.}..puts {.<p>T
8200: 68 65 20 44 52 4f 50 20 56 49 45 57 20 73 74 61  he DROP VIEW sta
8210: 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61  tement removes a
8220: 20 76 69 65 77 20 63 72 65 61 74 65 64 20 62 79   view created by
8230: 20 74 68 65 20 3c 61 20 68 72 65 66 3d 0a 22 23   the <a href=."#
8240: 63 72 65 61 74 65 76 69 65 77 22 3e 43 52 45 41  createview">CREA
8250: 54 45 20 56 49 45 57 3c 2f 61 3e 20 73 74 61 74  TE VIEW</a> stat
8260: 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e 61 6d 65  ement.  The name
8270: 20 73 70 65 63 69 66 69 65 64 20 69 73 20 74 68   specified is th
8280: 65 20 0a 76 69 65 77 20 6e 61 6d 65 2e 20 20 49  e .view name.  I
8290: 74 20 69 73 20 72 65 6d 6f 76 65 64 20 66 72 6f  t is removed fro
82a0: 6d 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73  m the database s
82b0: 63 68 65 6d 61 2c 20 62 75 74 20 6e 6f 20 61 63  chema, but no ac
82c0: 74 75 61 6c 20 64 61 74 61 20 0a 69 6e 20 74 68  tual data .in th
82d0: 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 62 61 73  e underlying bas
82e0: 65 20 74 61 62 6c 65 73 20 69 73 20 6d 6f 64 69  e tables is modi
82f0: 66 69 65 64 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f  fied.  Non-tempo
8300: 72 61 72 79 20 76 69 65 77 73 20 69 6e 20 0a 61  rary views in .a
8310: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
8320: 73 20 63 61 6e 6e 6f 74 20 62 65 20 64 72 6f 70  s cannot be drop
8330: 70 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63  ped.</p>.}...Sec
8340: 74 69 6f 6e 20 45 58 50 4c 41 49 4e 20 65 78 70  tion EXPLAIN exp
8350: 6c 61 69 6e 0a 0a 53 79 6e 74 61 78 20 7b 73 71  lain..Syntax {sq
8360: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 45  l-statement} {.E
8370: 58 50 4c 41 49 4e 20 3c 73 71 6c 2d 73 74 61 74  XPLAIN <sql-stat
8380: 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b  ement>.}..puts {
8390: 0a 3c 70 3e 54 68 65 20 45 58 50 4c 41 49 4e 20  .<p>The EXPLAIN 
83a0: 63 6f 6d 6d 61 6e 64 20 6d 6f 64 69 66 69 65 72  command modifier
83b0: 20 69 73 20 61 20 6e 6f 6e 2d 73 74 61 6e 64 61   is a non-standa
83c0: 72 64 20 65 78 74 65 6e 73 69 6f 6e 2e 20 20 54  rd extension.  T
83d0: 68 65 0a 69 64 65 61 20 63 6f 6d 65 73 20 66 72  he.idea comes fr
83e0: 6f 6d 20 61 20 73 69 6d 69 6c 61 72 20 63 6f 6d  om a similar com
83f0: 6d 61 6e 64 20 66 6f 75 6e 64 20 69 6e 20 50 6f  mand found in Po
8400: 73 74 67 72 65 53 51 4c 2c 20 62 75 74 20 74 68  stgreSQL, but th
8410: 65 20 6f 70 65 72 61 74 69 6f 6e 0a 69 73 20 63  e operation.is c
8420: 6f 6d 70 6c 65 74 65 6c 79 20 64 69 66 66 65 72  ompletely differ
8430: 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  ent.</p>..<p>If 
8440: 74 68 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77  the EXPLAIN keyw
8450: 6f 72 64 20 61 70 70 65 61 72 73 20 62 65 66 6f  ord appears befo
8460: 72 65 20 61 6e 79 20 6f 74 68 65 72 20 53 51 4c  re any other SQL
8470: 69 74 65 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a  ite SQL command.
8480: 74 68 65 6e 20 69 6e 73 74 65 61 64 20 6f 66 20  then instead of 
8490: 61 63 74 75 61 6c 6c 79 20 65 78 65 63 75 74 69  actually executi
84a0: 6e 67 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2c 20  ng the command, 
84b0: 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
84c0: 72 79 20 77 69 6c 6c 0a 72 65 70 6f 72 74 20 62  ry will.report b
84d0: 61 63 6b 20 74 68 65 20 73 65 71 75 65 6e 63 65  ack the sequence
84e0: 20 6f 66 20 76 69 72 74 75 61 6c 20 6d 61 63 68   of virtual mach
84f0: 69 6e 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 73  ine instructions
8500: 20 69 74 20 77 6f 75 6c 64 20 68 61 76 65 0a 75   it would have.u
8510: 73 65 64 20 74 6f 20 65 78 65 63 75 74 65 20 74  sed to execute t
8520: 68 65 20 63 6f 6d 6d 61 6e 64 20 68 61 64 20 74  he command had t
8530: 68 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f  he EXPLAIN keywo
8540: 72 64 20 6e 6f 74 20 62 65 65 6e 20 70 72 65 73  rd not been pres
8550: 65 6e 74 2e 0a 46 6f 72 20 61 64 64 69 74 69 6f  ent..For additio
8560: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  nal information 
8570: 61 62 6f 75 74 20 76 69 72 74 75 61 6c 20 6d 61  about virtual ma
8580: 63 68 69 6e 65 20 69 6e 73 74 72 75 63 74 69 6f  chine instructio
8590: 6e 73 20 73 65 65 0a 74 68 65 20 3c 61 20 68 72  ns see.the <a hr
85a0: 65 66 3d 22 61 72 63 68 2e 68 74 6d 6c 22 3e 61  ef="arch.html">a
85b0: 72 63 68 69 74 65 63 74 75 72 65 20 64 65 73 63  rchitecture desc
85c0: 72 69 70 74 69 6f 6e 3c 2f 61 3e 20 6f 72 20 74  ription</a> or t
85d0: 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  he documentation
85e0: 0a 6f 6e 20 3c 61 20 68 72 65 66 3d 22 6f 70 63  .on <a href="opc
85f0: 6f 64 65 2e 68 74 6d 6c 22 3e 61 76 61 69 6c 61  ode.html">availa
8600: 62 6c 65 20 6f 70 63 6f 64 65 73 3c 2f 61 3e 20  ble opcodes</a> 
8610: 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20  for the virtual 
8620: 6d 61 63 68 69 6e 65 2e 3c 2f 70 3e 0a 7d 0a 0a  machine.</p>.}..
8630: 0a 53 65 63 74 69 6f 6e 20 65 78 70 72 65 73 73  .Section express
8640: 69 6f 6e 20 65 78 70 72 0a 0a 53 79 6e 74 61 78  ion expr..Syntax
8650: 20 7b 65 78 70 72 7d 20 7b 0a 3c 65 78 70 72 3e   {expr} {.<expr>
8660: 20 3c 62 69 6e 61 72 79 2d 6f 70 3e 20 3c 65 78   <binary-op> <ex
8670: 70 72 3e 20 7c 0a 3c 65 78 70 72 3e 20 3c 6c 69  pr> |.<expr> <li
8680: 6b 65 2d 6f 70 3e 20 3c 65 78 70 72 3e 20 5b 45  ke-op> <expr> [E
8690: 53 43 41 50 45 20 3c 65 78 70 72 3e 5d 20 7c 0a  SCAPE <expr>] |.
86a0: 3c 65 78 70 72 3e 20 3c 67 6c 6f 62 2d 6f 70 3e  <expr> <glob-op>
86b0: 20 3c 65 78 70 72 3e 20 7c 0a 3c 75 6e 61 72 79   <expr> |.<unary
86c0: 2d 6f 70 3e 20 3c 65 78 70 72 3e 20 7c 0a 28 20  -op> <expr> |.( 
86d0: 3c 65 78 70 72 3e 20 29 20 7c 0a 3c 63 6f 6c 75  <expr> ) |.<colu
86e0: 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 74 61 62 6c  mn-name> |.<tabl
86f0: 65 2d 6e 61 6d 65 3e 20 2e 20 3c 63 6f 6c 75 6d  e-name> . <colum
8700: 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 64 61 74 61 62  n-name> |.<datab
8710: 61 73 65 2d 6e 61 6d 65 3e 20 2e 20 3c 74 61 62  ase-name> . <tab
8720: 6c 65 2d 6e 61 6d 65 3e 20 2e 20 3c 63 6f 6c 75  le-name> . <colu
8730: 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 6c 69 74 65  mn-name> |.<lite
8740: 72 61 6c 2d 76 61 6c 75 65 3e 20 7c 0a 3c 66 75  ral-value> |.<fu
8750: 6e 63 74 69 6f 6e 2d 6e 61 6d 65 3e 20 28 20 3c  nction-name> ( <
8760: 65 78 70 72 2d 6c 69 73 74 3e 20 7c 20 53 54 41  expr-list> | STA
8770: 52 20 29 20 7c 0a 3c 65 78 70 72 3e 20 49 53 4e  R ) |.<expr> ISN
8780: 55 4c 4c 20 7c 0a 3c 65 78 70 72 3e 20 4e 4f 54  ULL |.<expr> NOT
8790: 4e 55 4c 4c 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e  NULL |.<expr> [N
87a0: 4f 54 5d 20 42 45 54 57 45 45 4e 20 3c 65 78 70  OT] BETWEEN <exp
87b0: 72 3e 20 41 4e 44 20 3c 65 78 70 72 3e 20 7c 0a  r> AND <expr> |.
87c0: 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20  <expr> [NOT] IN 
87d0: 28 20 3c 76 61 6c 75 65 2d 6c 69 73 74 3e 20 29  ( <value-list> )
87e0: 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20   |.<expr> [NOT] 
87f0: 49 4e 20 28 20 3c 73 65 6c 65 63 74 2d 73 74 61  IN ( <select-sta
8800: 74 65 6d 65 6e 74 3e 20 29 20 7c 0a 3c 65 78 70  tement> ) |.<exp
8810: 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 5b 3c 64 61  r> [NOT] IN [<da
8820: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20  tabase-name> .] 
8830: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 7c 0a 5b  <table-name> |.[
8840: 45 58 49 53 54 53 5d 20 28 20 3c 73 65 6c 65 63  EXISTS] ( <selec
8850: 74 2d 73 74 61 74 65 6d 65 6e 74 3e 20 29 20 7c  t-statement> ) |
8860: 0a 43 41 53 45 20 5b 3c 65 78 70 72 3e 5d 20 4c  .CASE [<expr>] L
8870: 50 20 57 48 45 4e 20 3c 65 78 70 72 3e 20 54 48  P WHEN <expr> TH
8880: 45 4e 20 3c 65 78 70 72 3e 20 52 50 50 4c 55 53  EN <expr> RPPLUS
8890: 20 5b 45 4c 53 45 20 3c 65 78 70 72 3e 5d 20 45   [ELSE <expr>] E
88a0: 4e 44 0a 7d 20 7b 6c 69 6b 65 2d 6f 70 7d 20 7b  ND.} {like-op} {
88b0: 0a 4c 49 4b 45 20 7c 20 4e 4f 54 20 4c 49 4b 45  .LIKE | NOT LIKE
88c0: 0a 7d 20 7b 67 6c 6f 62 2d 6f 70 7d 20 7b 0a 47  .} {glob-op} {.G
88d0: 4c 4f 42 20 7c 20 4e 4f 54 20 47 4c 4f 42 0a 7d  LOB | NOT GLOB.}
88e0: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 69 73  ..puts {.<p>This
88f0: 20 73 65 63 74 69 6f 6e 20 69 73 20 64 69 66 66   section is diff
8900: 65 72 65 6e 74 20 66 72 6f 6d 20 74 68 65 20 6f  erent from the o
8910: 74 68 65 72 73 2e 20 20 4d 6f 73 74 20 6f 74 68  thers.  Most oth
8920: 65 72 20 73 65 63 74 69 6f 6e 73 20 6f 66 0a 74  er sections of.t
8930: 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 74 61 6c  his document tal
8940: 6b 73 20 61 62 6f 75 74 20 61 20 70 61 72 74 69  ks about a parti
8950: 63 75 6c 61 72 20 53 51 4c 20 63 6f 6d 6d 61 6e  cular SQL comman
8960: 64 2e 20 20 54 68 69 73 20 73 65 63 74 69 6f 6e  d.  This section
8970: 20 64 6f 65 73 0a 6e 6f 74 20 74 61 6c 6b 20 61   does.not talk a
8980: 62 6f 75 74 20 61 20 73 74 61 6e 64 61 6c 6f 6e  bout a standalon
8990: 65 20 63 6f 6d 6d 61 6e 64 20 62 75 74 20 61 62  e command but ab
89a0: 6f 75 74 20 22 65 78 70 72 65 73 73 69 6f 6e 73  out "expressions
89b0: 22 20 77 68 69 63 68 20 61 72 65 20 0a 73 75 62  " which are .sub
89c0: 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 6d 6f  components of mo
89d0: 73 74 20 6f 74 68 65 72 20 63 6f 6d 6d 61 6e 64  st other command
89e0: 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53 51 4c 69 74  s.</p>..<p>SQLit
89f0: 65 20 75 6e 64 65 72 73 74 61 6e 64 73 20 74 68  e understands th
8a00: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 62 69 6e 61  e following bina
8a10: 72 79 20 6f 70 65 72 61 74 6f 72 73 2c 20 69 6e  ry operators, in
8a20: 20 6f 72 64 65 72 20 66 72 6f 6d 0a 68 69 67 68   order from.high
8a30: 65 73 74 20 74 6f 20 6c 6f 77 65 73 74 20 70 72  est to lowest pr
8a40: 65 63 65 64 65 6e 63 65 3a 3c 2f 70 3e 0a 0a 3c  ecedence:</p>..<
8a50: 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
8a60: 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32  .<font color="#2
8a70: 63 32 63 66 30 22 3e 3c 62 69 67 3e 7c 7c 0a 2a  c2cf0"><big>||.*
8a80: 20 20 20 20 2f 20 20 20 20 25 0a 2b 20 20 20 20      /    %.+    
8a90: 2d 0a 26 6c 74 3b 26 6c 74 3b 20 20 20 26 67 74  -.&lt;&lt;   &gt
8aa0: 3b 26 67 74 3b 20 20 20 26 61 6d 70 3b 20 20 20  ;&gt;   &amp;   
8ab0: 20 7c 0a 26 6c 74 3b 20 20 20 20 26 6c 74 3b 3d   |.&lt;    &lt;=
8ac0: 20 20 20 26 67 74 3b 20 20 20 20 26 67 74 3b 3d     &gt;    &gt;=
8ad0: 0a 3d 20 20 20 20 3d 3d 20 20 20 21 3d 20 20 20  .=    ==   !=   
8ae0: 26 6c 74 3b 26 67 74 3b 20 20 20 3c 2f 62 69 67  &lt;&gt;   </big
8af0: 3e 49 4e 0a 41 4e 44 20 20 20 0a 4f 52 3c 2f 66  >IN.AND   .OR</f
8b00: 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f  ont>.</pre></blo
8b10: 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 53 75 70  ckquote>..<p>Sup
8b20: 70 6f 72 74 65 64 20 75 6e 61 72 79 20 6f 70 65  ported unary ope
8b30: 72 61 74 6f 72 73 20 61 72 65 20 74 68 65 73 65  rators are these
8b40: 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  :</p>..<blockquo
8b50: 74 65 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63  te><pre>.<font c
8b60: 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c  olor="#2c2cf0"><
8b70: 62 69 67 3e 2d 20 20 20 20 2b 20 20 20 20 21 20  big>-    +    ! 
8b80: 20 20 20 7e 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74     ~</big></font
8b90: 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71  >.</pre></blockq
8ba0: 75 6f 74 65 3e 0a 0a 3c 70 3e 41 6e 79 20 53 51  uote>..<p>Any SQ
8bb0: 4c 69 74 65 20 76 61 6c 75 65 20 63 61 6e 20 62  Lite value can b
8bc0: 65 20 75 73 65 64 20 61 73 20 70 61 72 74 20 6f  e used as part o
8bd0: 66 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 2e  f an expression.
8be0: 20 20 0a 46 6f 72 20 61 72 69 74 68 6d 65 74 69    .For arithmeti
8bf0: 63 20 6f 70 65 72 61 74 69 6f 6e 73 2c 20 69 6e  c operations, in
8c00: 74 65 67 65 72 73 20 61 72 65 20 74 72 65 61 74  tegers are treat
8c10: 65 64 20 61 73 20 69 6e 74 65 67 65 72 73 2e 0a  ed as integers..
8c20: 53 74 72 69 6e 67 73 20 61 72 65 20 66 69 72 73  Strings are firs
8c30: 74 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 72  t converted to r
8c40: 65 61 6c 20 6e 75 6d 62 65 72 73 20 75 73 69 6e  eal numbers usin
8c50: 67 20 3c 62 3e 61 74 6f 66 28 29 3c 2f 62 3e 2e  g <b>atof()</b>.
8c60: 0a 46 6f 72 20 63 6f 6d 70 61 72 69 73 6f 6e 20  .For comparison 
8c70: 6f 70 65 72 61 74 6f 72 73 2c 20 6e 75 6d 62 65  operators, numbe
8c80: 72 73 20 63 6f 6d 70 61 72 65 20 61 73 20 6e 75  rs compare as nu
8c90: 6d 62 65 72 73 20 61 6e 64 20 73 74 72 69 6e 67  mbers and string
8ca0: 73 0a 63 6f 6d 70 61 72 65 20 75 73 69 6e 67 20  s.compare using 
8cb0: 74 68 65 20 3c 62 3e 73 74 72 63 6d 70 28 29 3c  the <b>strcmp()<
8cc0: 2f 62 3e 20 66 75 6e 63 74 69 6f 6e 2e 0a 4e 6f  /b> function..No
8cd0: 74 65 20 74 68 61 74 20 74 68 65 72 65 20 61 72  te that there ar
8ce0: 65 20 74 77 6f 20 76 61 72 69 61 74 69 6f 6e 73  e two variations
8cf0: 20 6f 66 20 74 68 65 20 65 71 75 61 6c 73 20 61   of the equals a
8d00: 6e 64 20 6e 6f 74 20 65 71 75 61 6c 73 0a 6f 70  nd not equals.op
8d10: 65 72 61 74 6f 72 73 2e 20 20 45 71 75 61 6c 73  erators.  Equals
8d20: 20 63 61 6e 20 62 65 20 65 69 74 68 65 72 7d 0a   can be either}.
8d30: 70 75 74 73 20 22 5b 4f 70 65 72 61 74 6f 72 20  puts "[Operator 
8d40: 3d 5d 20 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20  =] or [Operator 
8d50: 3d 3d 5d 2e 0a 54 68 65 20 6e 6f 6e 2d 65 71 75  ==]..The non-equ
8d60: 61 6c 73 20 6f 70 65 72 61 74 6f 72 20 63 61 6e  als operator can
8d70: 20 62 65 20 65 69 74 68 65 72 0a 5b 4f 70 65 72   be either.[Oper
8d80: 61 74 6f 72 20 21 3d 5d 20 6f 72 20 5b 4f 70 65  ator !=] or [Ope
8d90: 72 61 74 6f 72 20 7b 26 6c 74 3b 26 67 74 3b 7d  rator {&lt;&gt;}
8da0: 5d 2e 0a 54 68 65 20 5b 4f 70 65 72 61 74 6f 72  ]..The [Operator
8db0: 20 7c 7c 5d 20 6f 70 65 72 61 74 6f 72 20 69 73   ||] operator is
8dc0: 20 5c 22 63 6f 6e 63 61 74 65 6e 61 74 65 5c 22   \"concatenate\"
8dd0: 20 2d 20 69 74 20 6a 6f 69 6e 73 20 74 6f 67 65   - it joins toge
8de0: 74 68 65 72 0a 74 68 65 20 74 77 6f 20 73 74 72  ther.the two str
8df0: 69 6e 67 73 20 6f 66 20 69 74 73 20 6f 70 65 72  ings of its oper
8e00: 61 6e 64 73 2e 0a 54 68 65 20 6f 70 65 72 61 74  ands..The operat
8e10: 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 25 5d 20  or [Operator %] 
8e20: 6f 75 74 70 75 74 73 20 74 68 65 20 72 65 6d 61  outputs the rema
8e30: 69 6e 64 65 72 20 6f 66 20 69 74 73 20 6c 65 66  inder of its lef
8e40: 74 20 0a 6f 70 65 72 61 6e 64 20 6d 6f 64 75 6c  t .operand modul
8e50: 6f 20 69 74 73 20 72 69 67 68 74 20 6f 70 65 72  o its right oper
8e60: 61 6e 64 2e 3c 2f 70 3e 22 0a 70 75 74 73 20 7b  and.</p>".puts {
8e70: 0a 0a 3c 61 20 6e 61 6d 65 3d 22 6c 69 6b 65 22  ..<a name="like"
8e80: 3e 3c 2f 61 3e 0a 3c 70 3e 54 68 65 20 4c 49 4b  ></a>.<p>The LIK
8e90: 45 20 6f 70 65 72 61 74 6f 72 20 64 6f 65 73 20  E operator does 
8ea0: 61 20 70 61 74 74 65 72 6e 20 6d 61 74 63 68 69  a pattern matchi
8eb0: 6e 67 20 63 6f 6d 70 61 72 69 73 6f 6e 2e 20 54  ng comparison. T
8ec0: 68 65 20 6f 70 65 72 61 6e 64 0a 74 6f 20 74 68  he operand.to th
8ed0: 65 20 72 69 67 68 74 20 63 6f 6e 74 61 69 6e 73  e right contains
8ee0: 20 74 68 65 20 70 61 74 74 65 72 6e 2c 20 74 68   the pattern, th
8ef0: 65 20 6c 65 66 74 20 68 61 6e 64 20 6f 70 65 72  e left hand oper
8f00: 61 6e 64 20 63 6f 6e 74 61 69 6e 73 20 74 68 65  and contains the
8f10: 0a 73 74 72 69 6e 67 20 74 6f 20 6d 61 74 63 68  .string to match
8f20: 20 61 67 61 69 6e 73 74 20 74 68 65 20 70 61 74   against the pat
8f30: 74 65 72 6e 2e 20 0a 7d 0a 70 75 74 73 20 22 41  tern. .}.puts "A
8f40: 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c 20   percent symbol 
8f50: 5b 4f 70 65 72 61 74 6f 72 20 25 5d 20 69 6e 20  [Operator %] in 
8f60: 74 68 65 20 70 61 74 74 65 72 6e 20 6d 61 74 63  the pattern matc
8f70: 68 65 73 20 61 6e 79 0a 73 65 71 75 65 6e 63 65  hes any.sequence
8f80: 20 6f 66 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65   of zero or more
8f90: 20 63 68 61 72 61 63 74 65 72 73 20 69 6e 20 74   characters in t
8fa0: 68 65 20 73 74 72 69 6e 67 2e 20 20 41 6e 20 75  he string.  An u
8fb0: 6e 64 65 72 73 63 6f 72 65 0a 5b 4f 70 65 72 61  nderscore.[Opera
8fc0: 74 6f 72 20 5f 5d 20 69 6e 20 74 68 65 20 70 61  tor _] in the pa
8fd0: 74 74 65 72 6e 20 6d 61 74 63 68 65 73 20 61 6e  ttern matches an
8fe0: 79 20 73 69 6e 67 6c 65 20 63 68 61 72 61 63 74  y single charact
8ff0: 65 72 20 69 6e 20 74 68 65 0a 73 74 72 69 6e 67  er in the.string
9000: 2e 20 20 41 6e 79 20 6f 74 68 65 72 20 63 68 61  .  Any other cha
9010: 72 61 63 74 65 72 20 6d 61 74 63 68 65 73 20 69  racter matches i
9020: 74 73 65 6c 66 20 6f 72 20 69 74 27 73 20 6c 6f  tself or it's lo
9030: 77 65 72 2f 75 70 70 65 72 20 63 61 73 65 0a 65  wer/upper case.e
9040: 71 75 69 76 61 6c 65 6e 74 20 28 69 2e 65 2e 20  quivalent (i.e. 
9050: 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65  case-insensitive
9060: 20 6d 61 74 63 68 69 6e 67 29 2e 20 20 28 41 20   matching).  (A 
9070: 62 75 67 3a 20 53 51 4c 69 74 65 20 6f 6e 6c 79  bug: SQLite only
9080: 0a 75 6e 64 65 72 73 74 61 6e 64 73 20 75 70 70  .understands upp
9090: 65 72 2f 6c 6f 77 65 72 20 63 61 73 65 20 66 6f  er/lower case fo
90a0: 72 20 37 2d 62 69 74 20 4c 61 74 69 6e 20 63 68  r 7-bit Latin ch
90b0: 61 72 61 63 74 65 72 73 2e 20 20 48 65 6e 63 65  aracters.  Hence
90c0: 20 74 68 65 0a 4c 49 4b 45 20 6f 70 65 72 61 74   the.LIKE operat
90d0: 6f 72 20 69 73 20 63 61 73 65 20 73 65 6e 73 69  or is case sensi
90e0: 74 69 76 65 20 66 6f 72 20 38 2d 62 69 74 20 69  tive for 8-bit i
90f0: 73 6f 38 38 35 39 20 63 68 61 72 61 63 74 65 72  so8859 character
9100: 73 20 6f 72 20 55 54 46 2d 38 0a 63 68 61 72 61  s or UTF-8.chara
9110: 63 74 65 72 73 2e 20 20 46 6f 72 20 65 78 61 6d  cters.  For exam
9120: 70 6c 65 2c 20 74 68 65 20 65 78 70 72 65 73 73  ple, the express
9130: 69 6f 6e 20 3c 62 3e 27 61 27 26 6e 62 73 70 3b  ion <b>'a'&nbsp;
9140: 4c 49 4b 45 26 6e 62 73 70 3b 27 41 27 3c 2f 62  LIKE&nbsp;'A'</b
9150: 3e 0a 69 73 20 54 52 55 45 20 62 75 74 20 3c 62  >.is TRUE but <b
9160: 3e 27 26 61 65 6c 69 67 3b 27 26 6e 62 73 70 3b  >'&aelig;'&nbsp;
9170: 4c 49 4b 45 26 6e 62 73 70 3b 27 26 41 45 6c 69  LIKE&nbsp;'&AEli
9180: 67 3b 27 3c 2f 62 3e 20 69 73 20 46 41 4c 53 45  g;'</b> is FALSE
9190: 2e 29 2e 3c 2f 70 3e 22 0a 0a 70 75 74 73 20 7b  .).</p>"..puts {
91a0: 0a 3c 70 3e 49 66 20 74 68 65 20 6f 70 74 69 6f  .<p>If the optio
91b0: 6e 61 6c 20 45 53 43 41 50 45 20 63 6c 61 75 73  nal ESCAPE claus
91c0: 65 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74 68  e is present, th
91d0: 65 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  en the expressio
91e0: 6e 0a 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20  n.following the 
91f0: 45 53 43 41 50 45 20 6b 65 79 77 6f 72 64 20 6d  ESCAPE keyword m
9200: 75 73 74 20 65 76 61 6c 75 61 74 65 20 74 6f 20  ust evaluate to 
9210: 61 20 73 74 72 69 6e 67 20 63 6f 6e 73 69 73 74  a string consist
9220: 69 6e 67 20 6f 66 0a 61 20 73 69 6e 67 6c 65 20  ing of.a single 
9230: 63 68 61 72 61 63 74 65 72 2e 20 54 68 69 73 20  character. This 
9240: 63 68 61 72 61 63 74 65 72 20 6d 61 79 20 62 65  character may be
9250: 20 75 73 65 64 20 69 6e 20 74 68 65 20 4c 49 4b   used in the LIK
9260: 45 20 70 61 74 74 65 72 6e 0a 74 6f 20 69 6e 63  E pattern.to inc
9270: 6c 75 64 65 20 6c 69 74 65 72 61 6c 20 70 65 72  lude literal per
9280: 63 65 6e 74 20 6f 72 20 75 6e 64 65 72 73 63 6f  cent or undersco
9290: 72 65 20 63 68 61 72 61 63 74 65 72 73 2e 20 54  re characters. T
92a0: 68 65 20 65 73 63 61 70 65 0a 63 68 61 72 61 63  he escape.charac
92b0: 74 65 72 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  ter followed by 
92c0: 61 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c  a percent symbol
92d0: 2c 20 75 6e 64 65 72 73 63 6f 72 65 20 6f 72 20  , underscore or 
92e0: 69 74 73 65 6c 66 20 6d 61 74 63 68 65 73 20 61  itself matches a
92f0: 0a 6c 69 74 65 72 61 6c 20 70 65 72 63 65 6e 74  .literal percent
9300: 20 73 79 6d 62 6f 6c 2c 20 75 6e 64 65 72 73 63   symbol, undersc
9310: 6f 72 65 20 6f 72 20 65 73 63 61 70 65 20 63 68  ore or escape ch
9320: 61 72 61 63 74 65 72 20 69 6e 20 74 68 65 20 73  aracter in the s
9330: 74 72 69 6e 67 2c 0a 72 65 73 70 65 63 74 69 76  tring,.respectiv
9340: 65 6c 79 2e 20 54 68 65 20 69 6e 66 69 78 20 4c  ely. The infix L
9350: 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 69 73 20  IKE operator is 
9360: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20 63  implemented by c
9370: 61 6c 6c 69 6e 67 20 74 68 65 0a 75 73 65 72 20  alling the.user 
9380: 66 75 6e 63 74 69 6f 6e 20 3c 61 20 68 72 65 66  function <a href
9390: 3d 22 23 6c 69 6b 65 46 75 6e 63 22 3e 20 6c 69  ="#likeFunc"> li
93a0: 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59  ke(<i>X</i>,<i>Y
93b0: 3c 2f 69 3e 29 3c 2f 61 3e 2e 3c 2f 70 3e 0a 7d  </i>)</a>.</p>.}
93c0: 0a 0a 70 75 74 73 20 7b 0a 54 68 65 20 4c 49 4b  ..puts {.The LIK
93d0: 45 20 6f 70 65 72 61 74 6f 72 20 69 73 20 6e 6f  E operator is no
93e0: 74 20 63 61 73 65 20 73 65 6e 73 69 74 69 76 65  t case sensitive
93f0: 20 61 6e 64 20 77 69 6c 6c 20 6d 61 74 63 68 20   and will match 
9400: 75 70 70 65 72 20 63 61 73 65 0a 63 68 61 72 61  upper case.chara
9410: 63 74 65 72 73 20 6f 6e 20 6f 6e 65 20 73 69 64  cters on one sid
9420: 65 20 61 67 61 69 6e 73 74 20 6c 6f 77 65 72 20  e against lower 
9430: 63 61 73 65 20 63 68 61 72 61 63 74 65 72 73 20  case characters 
9440: 6f 6e 20 74 68 65 20 6f 74 68 65 72 2e 20 20 0a  on the other.  .
9450: 28 41 20 62 75 67 3a 20 53 51 4c 69 74 65 20 6f  (A bug: SQLite o
9460: 6e 6c 79 20 75 6e 64 65 72 73 74 61 6e 64 73 20  nly understands 
9470: 75 70 70 65 72 2f 6c 6f 77 65 72 20 63 61 73 65  upper/lower case
9480: 20 66 6f 72 20 37 2d 62 69 74 20 4c 61 74 69 6e   for 7-bit Latin
9490: 0a 63 68 61 72 61 63 74 65 72 73 2e 20 20 48 65  .characters.  He
94a0: 6e 63 65 20 74 68 65 20 4c 49 4b 45 20 6f 70 65  nce the LIKE ope
94b0: 72 61 74 6f 72 20 69 73 20 63 61 73 65 20 73 65  rator is case se
94c0: 6e 73 69 74 69 76 65 20 66 6f 72 20 38 2d 62 69  nsitive for 8-bi
94d0: 74 0a 69 73 6f 38 38 35 39 20 63 68 61 72 61 63  t.iso8859 charac
94e0: 74 65 72 73 20 6f 72 20 55 54 46 2d 38 20 63 68  ters or UTF-8 ch
94f0: 61 72 61 63 74 65 72 73 2e 20 20 46 6f 72 20 65  aracters.  For e
9500: 78 61 6d 70 6c 65 2c 20 74 68 65 20 65 78 70 72  xample, the expr
9510: 65 73 73 69 6f 6e 0a 3c 62 3e 27 61 27 26 6e 62  ession.<b>'a'&nb
9520: 73 70 3b 4c 49 4b 45 26 6e 62 73 70 3b 27 41 27  sp;LIKE&nbsp;'A'
9530: 3c 2f 62 3e 20 69 73 20 54 52 55 45 20 62 75 74  </b> is TRUE but
9540: 0a 3c 62 3e 27 26 61 65 6c 69 67 3b 27 26 6e 62  .<b>'&aelig;'&nb
9550: 73 70 3b 4c 49 4b 45 26 6e 62 73 70 3b 27 26 41  sp;LIKE&nbsp;'&A
9560: 45 6c 69 67 3b 27 3c 2f 62 3e 20 69 73 20 46 41  Elig;'</b> is FA
9570: 4c 53 45 2e 29 2e 20 20 54 68 65 20 69 6e 66 69  LSE.).  The infi
9580: 78 20 4c 49 4b 45 0a 6f 70 65 72 61 74 6f 72 20  x LIKE.operator 
9590: 69 73 20 69 64 65 6e 74 69 63 61 6c 20 74 68 65  is identical the
95a0: 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 20 3c   user function <
95b0: 61 20 68 72 65 66 3d 22 23 6c 69 6b 65 46 75 6e  a href="#likeFun
95c0: 63 22 3e 0a 6c 69 6b 65 28 3c 69 3e 58 3c 2f 69  c">.like(<i>X</i
95d0: 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 61 3e 2e  >,<i>Y</i>)</a>.
95e0: 0a 3c 2f 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22  .</p>..<a name="
95f0: 67 6c 6f 62 22 3e 3c 2f 61 3e 0a 3c 70 3e 54 68  glob"></a>.<p>Th
9600: 65 20 47 4c 4f 42 20 6f 70 65 72 61 74 6f 72 20  e GLOB operator 
9610: 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 4c 49  is similar to LI
9620: 4b 45 20 62 75 74 20 75 73 65 73 20 74 68 65 20  KE but uses the 
9630: 55 6e 69 78 0a 66 69 6c 65 20 67 6c 6f 62 62 69  Unix.file globbi
9640: 6e 67 20 73 79 6e 74 61 78 20 66 6f 72 20 69 74  ng syntax for it
9650: 73 20 77 69 6c 64 63 61 72 64 73 2e 20 20 41 6c  s wildcards.  Al
9660: 73 6f 2c 20 47 4c 4f 42 20 69 73 20 63 61 73 65  so, GLOB is case
9670: 0a 73 65 6e 73 69 74 69 76 65 2c 20 75 6e 6c 69  .sensitive, unli
9680: 6b 65 20 4c 49 4b 45 2e 20 20 42 6f 74 68 20 47  ke LIKE.  Both G
9690: 4c 4f 42 20 61 6e 64 20 4c 49 4b 45 20 6d 61 79  LOB and LIKE may
96a0: 20 62 65 20 70 72 65 63 65 64 65 64 20 62 79 0a   be preceded by.
96b0: 74 68 65 20 4e 4f 54 20 6b 65 79 77 6f 72 64 20  the NOT keyword 
96c0: 74 6f 20 69 6e 76 65 72 74 20 74 68 65 20 73 65  to invert the se
96d0: 6e 73 65 20 6f 66 20 74 68 65 20 74 65 73 74 2e  nse of the test.
96e0: 20 20 54 68 65 20 69 6e 66 69 78 20 47 4c 4f 42    The infix GLOB
96f0: 20 0a 6f 70 65 72 61 74 6f 72 20 69 73 20 69 64   .operator is id
9700: 65 6e 74 69 63 61 6c 20 74 68 65 20 75 73 65 72  entical the user
9710: 20 66 75 6e 63 74 69 6f 6e 20 3c 61 20 68 72 65   function <a hre
9720: 66 3d 22 23 67 6c 6f 62 46 75 6e 63 22 3e 0a 67  f="#globFunc">.g
9730: 6c 6f 62 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  lob(<i>X</i>,<i>
9740: 59 3c 2f 69 3e 29 3c 2f 61 3e 2e 3c 2f 70 3e 0a  Y</i>)</a>.</p>.
9750: 0a 3c 70 3e 41 20 63 6f 6c 75 6d 6e 20 6e 61 6d  .<p>A column nam
9760: 65 20 63 61 6e 20 62 65 20 61 6e 79 20 6f 66 20  e can be any of 
9770: 74 68 65 20 6e 61 6d 65 73 20 64 65 66 69 6e 65  the names define
9780: 64 20 69 6e 20 74 68 65 20 43 52 45 41 54 45 20  d in the CREATE 
9790: 54 41 42 4c 45 0a 73 74 61 74 65 6d 65 6e 74 20  TABLE.statement 
97a0: 6f 72 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f  or one of the fo
97b0: 6c 6c 6f 77 69 6e 67 20 73 70 65 63 69 61 6c 20  llowing special 
97c0: 69 64 65 6e 74 69 66 69 65 72 73 3a 20 22 3c 62  identifiers: "<b
97d0: 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c 0a 22 3c 62  >ROWID</b>",."<b
97e0: 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c  >OID</b>", or "<
97f0: 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e 22 2e 0a  b>_ROWID_</b>"..
9800: 54 68 65 73 65 20 73 70 65 63 69 61 6c 20 69 64  These special id
9810: 65 6e 74 69 66 69 65 72 73 20 61 6c 6c 20 64 65  entifiers all de
9820: 73 63 72 69 62 65 20 74 68 65 0a 75 6e 69 71 75  scribe the.uniqu
9830: 65 20 72 61 6e 64 6f 6d 20 69 6e 74 65 67 65 72  e random integer
9840: 20 6b 65 79 20 28 74 68 65 20 22 72 6f 77 20 6b   key (the "row k
9850: 65 79 22 29 20 61 73 73 6f 63 69 61 74 65 64 20  ey") associated 
9860: 77 69 74 68 20 65 76 65 72 79 20 0a 72 6f 77 20  with every .row 
9870: 6f 66 20 65 76 65 72 79 20 74 61 62 6c 65 2e 0a  of every table..
9880: 54 68 65 20 73 70 65 63 69 61 6c 20 69 64 65 6e  The special iden
9890: 74 69 66 69 65 72 73 20 6f 6e 6c 79 20 72 65 66  tifiers only ref
98a0: 65 72 20 74 6f 20 74 68 65 20 72 6f 77 20 6b 65  er to the row ke
98b0: 79 20 69 66 20 74 68 65 20 43 52 45 41 54 45 20  y if the CREATE 
98c0: 54 41 42 4c 45 0a 73 74 61 74 65 6d 65 6e 74 20  TABLE.statement 
98d0: 64 6f 65 73 20 6e 6f 74 20 64 65 66 69 6e 65 20  does not define 
98e0: 61 20 72 65 61 6c 20 63 6f 6c 75 6d 6e 20 77 69  a real column wi
98f0: 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65  th the same name
9900: 2e 20 20 52 6f 77 20 6b 65 79 73 0a 61 63 74 20  .  Row keys.act 
9910: 6c 69 6b 65 20 72 65 61 64 2d 6f 6e 6c 79 20 63  like read-only c
9920: 6f 6c 75 6d 6e 73 2e 20 20 41 20 72 6f 77 20 6b  olumns.  A row k
9930: 65 79 20 63 61 6e 20 62 65 20 75 73 65 64 20 61  ey can be used a
9940: 6e 79 77 68 65 72 65 20 61 20 72 65 67 75 6c 61  nywhere a regula
9950: 72 0a 63 6f 6c 75 6d 6e 20 63 61 6e 20 62 65 20  r.column can be 
9960: 75 73 65 64 2c 20 65 78 63 65 70 74 20 74 68 61  used, except tha
9970: 74 20 79 6f 75 20 63 61 6e 6e 6f 74 20 63 68 61  t you cannot cha
9980: 6e 67 65 20 74 68 65 20 76 61 6c 75 65 0a 6f 66  nge the value.of
9990: 20 61 20 72 6f 77 20 6b 65 79 20 69 6e 20 61 6e   a row key in an
99a0: 20 55 50 44 41 54 45 20 6f 72 20 49 4e 53 45 52   UPDATE or INSER
99b0: 54 20 73 74 61 74 65 6d 65 6e 74 2e 0a 22 53 45  T statement.."SE
99c0: 4c 45 43 54 20 2a 20 2e 2e 2e 22 20 64 6f 65 73  LECT * ..." does
99d0: 20 6e 6f 74 20 72 65 74 75 72 6e 20 74 68 65 20   not return the 
99e0: 72 6f 77 20 6b 65 79 2e 3c 2f 70 3e 0a 0a 3c 70  row key.</p>..<p
99f0: 3e 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e  >SELECT statemen
9a00: 74 73 20 63 61 6e 20 61 70 70 65 61 72 20 69 6e  ts can appear in
9a10: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 73 20   expressions as 
9a20: 65 69 74 68 65 72 20 74 68 65 0a 72 69 67 68 74  either the.right
9a30: 2d 68 61 6e 64 20 6f 70 65 72 61 6e 64 20 6f 66  -hand operand of
9a40: 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72   the IN operator
9a50: 2c 20 61 73 20 61 20 73 63 61 6c 61 72 20 71 75  , as a scalar qu
9a60: 61 6e 74 69 74 79 2c 20 6f 72 0a 61 73 20 74 68  antity, or.as th
9a70: 65 20 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e 20  e operand of an 
9a80: 45 58 49 53 54 53 20 6f 70 65 72 61 74 6f 72 2e  EXISTS operator.
9a90: 0a 41 73 20 61 20 73 63 61 6c 61 72 20 71 75 61  .As a scalar qua
9aa0: 6e 74 69 74 79 20 6f 72 20 74 68 65 20 6f 70 65  ntity or the ope
9ab0: 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f 70  rand of an IN op
9ac0: 65 72 61 74 6f 72 2c 0a 74 68 65 20 53 45 4c 45  erator,.the SELE
9ad0: 43 54 20 73 68 6f 75 6c 64 20 68 61 76 65 20 6f  CT should have o
9ae0: 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c  nly a single col
9af0: 75 6d 6e 20 69 6e 20 69 74 73 0a 72 65 73 75 6c  umn in its.resul
9b00: 74 2e 20 20 43 6f 6d 70 6f 75 6e 64 20 53 45 4c  t.  Compound SEL
9b10: 45 43 54 73 20 28 63 6f 6e 6e 65 63 74 65 64 20  ECTs (connected 
9b20: 77 69 74 68 20 6b 65 79 77 6f 72 64 73 20 6c 69  with keywords li
9b30: 6b 65 20 55 4e 49 4f 4e 20 6f 72 0a 45 58 43 45  ke UNION or.EXCE
9b40: 50 54 29 20 61 72 65 20 61 6c 6c 6f 77 65 64 2e  PT) are allowed.
9b50: 0a 57 69 74 68 20 74 68 65 20 45 58 49 53 54 53  .With the EXISTS
9b60: 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 20 63   operator, the c
9b70: 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65  olumns in the re
9b80: 73 75 6c 74 20 73 65 74 20 6f 66 20 74 68 65 20  sult set of the 
9b90: 53 45 4c 45 43 54 20 61 72 65 0a 69 67 6e 6f 72  SELECT are.ignor
9ba0: 65 64 20 61 6e 64 20 74 68 65 20 65 78 70 72 65  ed and the expre
9bb0: 73 73 69 6f 6e 20 72 65 74 75 72 6e 73 20 54 52  ssion returns TR
9bc0: 55 45 20 69 66 20 6f 6e 65 20 6f 72 20 6d 6f 72  UE if one or mor
9bd0: 65 20 72 6f 77 73 20 65 78 69 73 74 0a 61 6e 64  e rows exist.and
9be0: 20 46 41 4c 53 45 20 69 66 20 74 68 65 20 72 65   FALSE if the re
9bf0: 73 75 6c 74 20 73 65 74 20 69 73 20 65 6d 70 74  sult set is empt
9c00: 79 2e 0a 49 66 20 6e 6f 20 74 65 72 6d 73 20 69  y..If no terms i
9c10: 6e 20 74 68 65 20 53 45 4c 45 43 54 20 65 78 70  n the SELECT exp
9c20: 72 65 73 73 69 6f 6e 20 72 65 66 65 72 20 74 6f  ression refer to
9c30: 20 76 61 6c 75 65 20 69 6e 20 74 68 65 20 63 6f   value in the co
9c40: 6e 74 61 69 6e 69 6e 67 0a 71 75 65 72 79 2c 20  ntaining.query, 
9c50: 74 68 65 6e 20 74 68 65 20 65 78 70 72 65 73 73  then the express
9c60: 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74 65 64  ion is evaluated
9c70: 20 6f 6e 63 65 20 70 72 69 6f 72 20 74 6f 20 61   once prior to a
9c80: 6e 79 20 6f 74 68 65 72 0a 70 72 6f 63 65 73 73  ny other.process
9c90: 69 6e 67 20 61 6e 64 20 74 68 65 20 72 65 73 75  ing and the resu
9ca0: 6c 74 20 69 73 20 72 65 75 73 65 64 20 61 73 20  lt is reused as 
9cb0: 6e 65 63 65 73 73 61 72 79 2e 20 20 49 66 20 74  necessary.  If t
9cc0: 68 65 20 53 45 4c 45 43 54 20 65 78 70 72 65 73  he SELECT expres
9cd0: 73 69 6f 6e 0a 64 6f 65 73 20 63 6f 6e 74 61 69  sion.does contai
9ce0: 6e 20 76 61 72 69 61 62 6c 65 73 20 66 72 6f 6d  n variables from
9cf0: 20 74 68 65 20 6f 75 74 65 72 20 71 75 65 72 79   the outer query
9d00: 2c 20 74 68 65 6e 20 74 68 65 20 53 45 4c 45 43  , then the SELEC
9d10: 54 20 69 73 20 72 65 65 76 61 6c 75 61 74 65 64  T is reevaluated
9d20: 0a 65 76 65 72 79 20 74 69 6d 65 20 69 74 20 69  .every time it i
9d30: 73 20 6e 65 65 64 65 64 2e 3c 2f 70 3e 0a 0a 3c  s needed.</p>..<
9d40: 70 3e 57 68 65 6e 20 61 20 53 45 4c 45 43 54 20  p>When a SELECT 
9d50: 69 73 20 74 68 65 20 72 69 67 68 74 20 6f 70 65  is the right ope
9d60: 72 61 6e 64 20 6f 66 20 74 68 65 20 49 4e 20 6f  rand of the IN o
9d70: 70 65 72 61 74 6f 72 2c 20 74 68 65 20 49 4e 0a  perator, the IN.
9d80: 6f 70 65 72 61 74 6f 72 20 72 65 74 75 72 6e 73  operator returns
9d90: 20 54 52 55 45 20 69 66 20 74 68 65 20 72 65 73   TRUE if the res
9da0: 75 6c 74 20 6f 66 20 74 68 65 20 6c 65 66 74 20  ult of the left 
9db0: 6f 70 65 72 61 6e 64 20 69 73 20 61 6e 79 20 6f  operand is any o
9dc0: 66 0a 74 68 65 20 76 61 6c 75 65 73 20 67 65 6e  f.the values gen
9dd0: 65 72 61 74 65 64 20 62 79 20 74 68 65 20 73 65  erated by the se
9de0: 6c 65 63 74 2e 20 20 54 68 65 20 49 4e 20 6f 70  lect.  The IN op
9df0: 65 72 61 74 6f 72 20 6d 61 79 20 62 65 20 70 72  erator may be pr
9e00: 65 63 65 64 65 64 0a 62 79 20 74 68 65 20 4e 4f  eceded.by the NO
9e10: 54 20 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e 76  T keyword to inv
9e20: 65 72 74 20 74 68 65 20 73 65 6e 73 65 20 6f 66  ert the sense of
9e30: 20 74 68 65 20 74 65 73 74 2e 3c 2f 70 3e 0a 0a   the test.</p>..
9e40: 3c 70 3e 57 68 65 6e 20 61 20 53 45 4c 45 43 54  <p>When a SELECT
9e50: 20 61 70 70 65 61 72 73 20 77 69 74 68 69 6e 20   appears within 
9e60: 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 62 75  an expression bu
9e70: 74 20 69 73 20 6e 6f 74 20 74 68 65 20 72 69 67  t is not the rig
9e80: 68 74 0a 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e  ht.operand of an
9e90: 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c 20 74 68   IN operator, th
9ea0: 65 6e 20 74 68 65 20 66 69 72 73 74 20 72 6f 77  en the first row
9eb0: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f   of the result o
9ec0: 66 20 74 68 65 0a 53 45 4c 45 43 54 20 62 65 63  f the.SELECT bec
9ed0: 6f 6d 65 73 20 74 68 65 20 76 61 6c 75 65 20 75  omes the value u
9ee0: 73 65 64 20 69 6e 20 74 68 65 20 65 78 70 72 65  sed in the expre
9ef0: 73 73 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 53  ssion.  If the S
9f00: 45 4c 45 43 54 20 79 69 65 6c 64 73 0a 6d 6f 72  ELECT yields.mor
9f10: 65 20 74 68 61 6e 20 6f 6e 65 20 72 65 73 75 6c  e than one resul
9f20: 74 20 72 6f 77 2c 20 61 6c 6c 20 72 6f 77 73 20  t row, all rows 
9f30: 61 66 74 65 72 20 74 68 65 20 66 69 72 73 74 20  after the first 
9f40: 61 72 65 20 69 67 6e 6f 72 65 64 2e 20 20 49 66  are ignored.  If
9f50: 0a 74 68 65 20 53 45 4c 45 43 54 20 79 69 65 6c  .the SELECT yiel
9f60: 64 73 20 6e 6f 20 72 6f 77 73 2c 20 74 68 65 6e  ds no rows, then
9f70: 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   the value of th
9f80: 65 20 53 45 4c 45 43 54 20 69 73 20 4e 55 4c 4c  e SELECT is NULL
9f90: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 6f 74 68 20 73  .</p>..<p>Both s
9fa0: 69 6d 70 6c 65 20 61 6e 64 20 61 67 67 72 65 67  imple and aggreg
9fb0: 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72  ate functions ar
9fc0: 65 20 73 75 70 70 6f 72 74 65 64 2e 20 20 41 20  e supported.  A 
9fd0: 73 69 6d 70 6c 65 0a 66 75 6e 63 74 69 6f 6e 20  simple.function 
9fe0: 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 61  can be used in a
9ff0: 6e 79 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20  ny expression.  
a000: 53 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73  Simple functions
a010: 20 72 65 74 75 72 6e 0a 61 20 72 65 73 75 6c 74   return.a result
a020: 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62 61 73   immediately bas
a030: 65 64 20 6f 6e 20 74 68 65 69 72 20 69 6e 70 75  ed on their inpu
a040: 74 73 2e 20 20 41 67 67 72 65 67 61 74 65 20 66  ts.  Aggregate f
a050: 75 6e 63 74 69 6f 6e 73 0a 6d 61 79 20 6f 6e 6c  unctions.may onl
a060: 79 20 62 65 20 75 73 65 64 20 69 6e 20 61 20 53  y be used in a S
a070: 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e  ELECT statement.
a080: 20 20 41 67 67 72 65 67 61 74 65 20 66 75 6e 63    Aggregate func
a090: 74 69 6f 6e 73 20 63 6f 6d 70 75 74 65 0a 74 68  tions compute.th
a0a0: 65 69 72 20 72 65 73 75 6c 74 20 61 63 72 6f 73  eir result acros
a0b0: 73 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68  s all rows of th
a0c0: 65 20 72 65 73 75 6c 74 20 73 65 74 2e 3c 2f 70  e result set.</p
a0d0: 3e 0a 0a 3c 70 3e 54 68 65 20 66 75 6e 63 74 69  >..<p>The functi
a0e0: 6f 6e 73 20 73 68 6f 77 6e 20 62 65 6c 6f 77 20  ons shown below 
a0f0: 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79  are available by
a100: 20 64 65 66 61 75 6c 74 2e 20 20 41 64 64 69 74   default.  Addit
a110: 69 6f 6e 61 6c 0a 66 75 6e 63 74 69 6f 6e 73 20  ional.functions 
a120: 6d 61 79 20 62 65 20 77 72 69 74 74 65 6e 20 69  may be written i
a130: 6e 20 43 20 61 6e 64 20 61 64 64 65 64 20 74 6f  n C and added to
a140: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 65 6e   the database en
a150: 67 69 6e 65 20 75 73 69 6e 67 0a 74 68 65 20 3c  gine using.the <
a160: 61 20 68 72 65 66 3d 22 63 61 70 69 33 72 65 66  a href="capi3ref
a170: 2e 68 74 6d 6c 23 63 66 75 6e 63 22 3e 73 71 6c  .html#cfunc">sql
a180: 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
a190: 74 69 6f 6e 28 29 3c 2f 61 3e 0a 41 50 49 2e 3c  tion()</a>.API.<
a1a0: 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64  /p>..<table bord
a1b0: 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e 67  er=0 cellpadding
a1c0: 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  =10>.<tr>.<td va
a1d0: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
a1e0: 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 31  ="right" width=1
a1f0: 32 30 3e 61 62 73 28 3c 69 3e 58 3c 2f 69 3e 29  20>abs(<i>X</i>)
a200: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
a210: 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68  ="top">Return th
a220: 65 20 61 62 73 6f 6c 75 74 65 20 76 61 6c 75 65  e absolute value
a230: 20 6f 66 20 61 72 67 75 6d 65 6e 74 20 3c 69 3e   of argument <i>
a240: 58 3c 2f 69 3e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  X</i>.</td>.</tr
a250: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
a260: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
a270: 72 69 67 68 74 22 3e 63 6f 61 6c 65 73 63 65 28  right">coalesce(
a280: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
a290: 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20  >,...)</td>.<td 
a2a0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
a2b0: 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 74 68  urn a copy of th
a2c0: 65 20 66 69 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c  e first non-NULL
a2d0: 20 61 72 67 75 6d 65 6e 74 2e 20 20 49 66 0a 61   argument.  If.a
a2e0: 6c 6c 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ll arguments are
a2f0: 20 4e 55 4c 4c 20 74 68 65 6e 20 4e 55 4c 4c 20   NULL then NULL 
a300: 69 73 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68  is returned.  Th
a310: 65 72 65 20 6d 75 73 74 20 62 65 20 61 74 20 6c  ere must be at l
a320: 65 61 73 74 20 0a 32 20 61 72 67 75 6d 65 6e 74  east .2 argument
a330: 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  s.</td>.</tr>..<
a340: 74 72 3e 0a 3c 61 20 6e 61 6d 65 3d 22 67 6c 6f  tr>.<a name="glo
a350: 62 46 75 6e 63 22 3e 3c 2f 61 3e 0a 3c 74 64 20  bFunc"></a>.<td 
a360: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
a370: 67 6e 3d 22 72 69 67 68 74 22 3e 67 6c 6f 62 28  gn="right">glob(
a380: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
a390: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
a3a0: 67 6e 3d 22 74 6f 70 22 3e 54 68 69 73 20 66 75  gn="top">This fu
a3b0: 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  nction is used t
a3c0: 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a  o implement the.
a3d0: 22 3c 62 3e 58 20 47 4c 4f 42 20 59 3c 2f 62 3e  "<b>X GLOB Y</b>
a3e0: 22 20 73 79 6e 74 61 78 20 6f 66 20 53 51 4c 69  " syntax of SQLi
a3f0: 74 65 2e 20 20 54 68 65 0a 3c 61 20 68 72 65 66  te.  The.<a href
a400: 3d 22 63 61 70 69 33 72 65 66 2e 68 74 6d 6c 23  ="capi3ref.html#
a410: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
a420: 75 6e 63 74 69 6f 6e 22 3e 73 71 6c 69 74 65 33  unction">sqlite3
a430: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
a440: 28 29 3c 2f 61 3e 20 0a 69 6e 74 65 72 66 61 63  ()</a> .interfac
a450: 65 20 63 61 6e 0a 62 65 20 75 73 65 64 20 74 6f  e can.be used to
a460: 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 66   override this f
a470: 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74 68 65 72  unction and ther
a480: 65 62 79 20 63 68 61 6e 67 65 20 74 68 65 20 6f  eby change the o
a490: 70 65 72 61 74 69 6f 6e 0a 6f 66 20 74 68 65 20  peration.of the 
a4a0: 3c 61 20 68 72 65 66 3d 22 23 67 6c 6f 62 46 75  <a href="#globFu
a4b0: 6e 63 22 3e 47 4c 4f 42 3c 2f 61 3e 20 6f 70 65  nc">GLOB</a> ope
a4c0: 72 61 74 6f 72 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  rator.</td>.</tr
a4d0: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
a4e0: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
a4f0: 72 69 67 68 74 22 3e 69 66 6e 75 6c 6c 28 3c 69  right">ifnull(<i
a500: 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29  >X</i>,<i>Y</i>)
a510: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
a520: 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20  ="top">Return a 
a530: 63 6f 70 79 20 6f 66 20 74 68 65 20 66 69 72 73  copy of the firs
a540: 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d  t non-NULL argum
a550: 65 6e 74 2e 20 20 49 66 0a 62 6f 74 68 20 61 72  ent.  If.both ar
a560: 67 75 6d 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c  guments are NULL
a570: 20 74 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72 65   then NULL is re
a580: 74 75 72 6e 65 64 2e 20 54 68 69 73 20 62 65 68  turned. This beh
a590: 61 76 65 73 20 74 68 65 20 73 61 6d 65 20 61 73  aves the same as
a5a0: 20 0a 3c 62 3e 63 6f 61 6c 65 73 63 65 28 29 3c   .<b>coalesce()<
a5b0: 2f 62 3e 20 61 62 6f 76 65 2e 3c 2f 74 64 3e 0a  /b> above.</td>.
a5c0: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
a5d0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
a5e0: 67 6e 3d 22 72 69 67 68 74 22 3e 6c 61 73 74 5f  gn="right">last_
a5f0: 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 3c 2f  insert_rowid()</
a600: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
a610: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
a620: 52 4f 57 49 44 20 6f 66 20 74 68 65 20 6c 61 73  ROWID of the las
a630: 74 20 72 6f 77 20 69 6e 73 65 72 74 20 66 72 6f  t row insert fro
a640: 6d 20 74 68 69 73 0a 63 6f 6e 6e 65 63 74 69 6f  m this.connectio
a650: 6e 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73  n to the databas
a660: 65 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 20  e.  This is the 
a670: 73 61 6d 65 20 76 61 6c 75 65 20 74 68 61 74 20  same value that 
a680: 77 6f 75 6c 64 20 62 65 20 72 65 74 75 72 6e 65  would be returne
a690: 64 0a 66 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71  d.from the <b>sq
a6a0: 6c 69 74 65 5f 6c 61 73 74 5f 69 6e 73 65 72 74  lite_last_insert
a6b0: 5f 72 6f 77 69 64 28 29 3c 2f 62 3e 20 41 50 49  _rowid()</b> API
a6c0: 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f 74 64 3e 0a   function.</td>.
a6d0: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
a6e0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
a6f0: 67 6e 3d 22 72 69 67 68 74 22 3e 6c 65 6e 67 74  gn="right">lengt
a700: 68 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e  h(<i>X</i>)</td>
a710: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
a720: 22 3e 52 65 74 75 72 6e 20 74 68 65 20 73 74 72  ">Return the str
a730: 69 6e 67 20 6c 65 6e 67 74 68 20 6f 66 20 3c 69  ing length of <i
a740: 3e 58 3c 2f 69 3e 20 69 6e 20 63 68 61 72 61 63  >X</i> in charac
a750: 74 65 72 73 2e 0a 49 66 20 53 51 4c 69 74 65 20  ters..If SQLite 
a760: 69 73 20 63 6f 6e 66 69 67 75 72 65 64 20 74 6f  is configured to
a770: 20 73 75 70 70 6f 72 74 20 55 54 46 2d 38 2c 20   support UTF-8, 
a780: 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  then the number 
a790: 6f 66 20 55 54 46 2d 38 0a 63 68 61 72 61 63 74  of UTF-8.charact
a7a0: 65 72 73 20 69 73 20 72 65 74 75 72 6e 65 64 2c  ers is returned,
a7b0: 20 6e 6f 74 20 74 68 65 20 6e 75 6d 62 65 72 20   not the number 
a7c0: 6f 66 20 62 79 74 65 73 2e 3c 2f 74 64 3e 0a 3c  of bytes.</td>.<
a7d0: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 61 20 6e 61  /tr>..<tr>.<a na
a7e0: 6d 65 3d 22 6c 69 6b 65 46 75 6e 63 22 3e 3c 2f  me="likeFunc"></
a7f0: 61 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  a>.<td valign="t
a800: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
a810: 22 3e 6c 69 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c  ">like(<i>X</i>,
a820: 3c 69 3e 59 3c 2f 69 3e 20 5b 2c 3c 69 3e 5a 3c  <i>Y</i> [,<i>Z<
a830: 2f 69 3e 5d 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  /i>])</td>.<td v
a840: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 0a 54 68 69  align="top">.Thi
a850: 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73  s function is us
a860: 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20  ed to implement 
a870: 74 68 65 20 22 3c 62 3e 58 20 4c 49 4b 45 20 59  the "<b>X LIKE Y
a880: 20 5b 45 53 43 41 50 45 20 5a 5d 3c 2f 62 3e 22   [ESCAPE Z]</b>"
a890: 0a 73 79 6e 74 61 78 20 6f 66 20 53 51 4c 2e 20  .syntax of SQL. 
a8a0: 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20  If the optional 
a8b0: 45 53 43 41 50 45 20 63 6c 61 75 73 65 20 69 73  ESCAPE clause is
a8c0: 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 74   present, then t
a8d0: 68 65 0a 75 73 65 72 2d 66 75 6e 63 74 69 6f 6e  he.user-function
a8e0: 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 69 74 68   is invoked with
a8f0: 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74 73   three arguments
a900: 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 69 74 20  . Otherwise, it 
a910: 69 73 0a 69 6e 76 6f 6b 65 64 20 77 69 74 68 20  is.invoked with 
a920: 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 20 6f 6e  two arguments on
a930: 6c 79 2e 20 54 68 65 20 0a 3c 61 20 68 72 65 66  ly. The .<a href
a940: 3d 22 63 61 70 69 33 72 65 66 2e 68 74 6d 6c 23  ="capi3ref.html#
a950: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
a960: 75 6e 63 74 69 6f 6e 22 3e 0a 73 71 6c 69 74 65  unction">.sqlite
a970: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
a980: 28 29 3c 2f 61 3e 20 69 6e 74 65 72 66 61 63 65  ()</a> interface
a990: 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
a9a0: 6f 76 65 72 72 69 64 65 20 74 68 69 73 0a 66 75  override this.fu
a9b0: 6e 63 74 69 6f 6e 20 61 6e 64 20 74 68 65 72 65  nction and there
a9c0: 62 79 20 63 68 61 6e 67 65 20 74 68 65 20 6f 70  by change the op
a9d0: 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 3c  eration of the <
a9e0: 61 0a 68 72 65 66 3d 20 22 23 6c 69 6b 65 22 3e  a.href= "#like">
a9f0: 4c 49 4b 45 3c 2f 61 3e 20 6f 70 65 72 61 74 6f  LIKE</a> operato
aa00: 72 2e 20 57 68 65 6e 20 64 6f 69 6e 67 20 74 68  r. When doing th
aa10: 69 73 2c 20 69 74 20 6d 61 79 20 62 65 20 69 6d  is, it may be im
aa20: 70 6f 72 74 61 6e 74 0a 74 6f 20 6f 76 65 72 72  portant.to overr
aa30: 69 64 65 20 62 6f 74 68 20 74 68 65 20 74 77 6f  ide both the two
aa40: 20 61 6e 64 20 74 68 72 65 65 20 61 72 67 75 6d   and three argum
aa50: 65 6e 74 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  ent versions of 
aa60: 74 68 65 20 6c 69 6b 65 28 29 20 0a 66 75 6e 63  the like() .func
aa70: 74 69 6f 6e 2e 20 4f 74 68 65 72 77 69 73 65 2c  tion. Otherwise,
aa80: 20 64 69 66 66 65 72 65 6e 74 20 63 6f 64 65 20   different code 
aa90: 6d 61 79 20 62 65 20 63 61 6c 6c 65 64 20 74 6f  may be called to
aaa0: 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a 4c   implement the.L
aab0: 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 64 65 70  IKE operator dep
aac0: 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74 68 65  ending on whethe
aad0: 72 20 6f 72 20 6e 6f 74 20 61 6e 20 45 53 43 41  r or not an ESCA
aae0: 50 45 20 63 6c 61 75 73 65 20 77 61 73 20 0a 73  PE clause was .s
aaf0: 70 65 63 69 66 69 65 64 2e 3c 2f 74 64 3e 0a 3c  pecified.</td>.<
ab00: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
ab10: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
ab20: 6e 3d 22 72 69 67 68 74 22 3e 6c 6f 77 65 72 28  n="right">lower(
ab30: 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c  <i>X</i>)</td>.<
ab40: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
ab50: 52 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66  Return a copy of
ab60: 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e   string <i>X</i>
ab70: 20 77 69 6c 6c 20 61 6c 6c 20 63 68 61 72 61 63   will all charac
ab80: 74 65 72 73 0a 63 6f 6e 76 65 72 74 65 64 20 74  ters.converted t
ab90: 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e 20 20 54  o lower case.  T
aba0: 68 65 20 43 20 6c 69 62 72 61 72 79 20 3c 62 3e  he C library <b>
abb0: 74 6f 6c 6f 77 65 72 28 29 3c 2f 62 3e 20 72 6f  tolower()</b> ro
abc0: 75 74 69 6e 65 20 69 73 20 75 73 65 64 0a 66 6f  utine is used.fo
abd0: 72 20 74 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e  r the conversion
abe0: 2c 20 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68  , which means th
abf0: 61 74 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  at this function
ac00: 20 6d 69 67 68 74 20 6e 6f 74 0a 77 6f 72 6b 20   might not.work 
ac10: 63 6f 72 72 65 63 74 6c 79 20 6f 6e 20 55 54 46  correctly on UTF
ac20: 2d 38 20 63 68 61 72 61 63 74 65 72 73 2e 3c 2f  -8 characters.</
ac30: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
ac40: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
ac50: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6d   align="right">m
ac60: 61 78 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59  ax(<i>X</i>,<i>Y
ac70: 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c  </i>,...)</td>.<
ac80: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
ac90: 52 65 74 75 72 6e 20 74 68 65 20 61 72 67 75 6d  Return the argum
aca0: 65 6e 74 20 77 69 74 68 20 74 68 65 20 6d 61 78  ent with the max
acb0: 69 6d 75 6d 20 76 61 6c 75 65 2e 20 20 41 72 67  imum value.  Arg
acc0: 75 6d 65 6e 74 73 0a 6d 61 79 20 62 65 20 73 74  uments.may be st
acd0: 72 69 6e 67 73 20 69 6e 20 61 64 64 69 74 69 6f  rings in additio
ace0: 6e 20 74 6f 20 6e 75 6d 62 65 72 73 2e 20 20 54  n to numbers.  T
acf0: 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65  he maximum value
ad00: 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64 0a 62   is determined.b
ad10: 79 20 74 68 65 20 75 73 75 61 6c 20 73 6f 72 74  y the usual sort
ad20: 20 6f 72 64 65 72 2e 20 20 4e 6f 74 65 20 74 68   order.  Note th
ad30: 61 74 20 3c 62 3e 6d 61 78 28 29 3c 2f 62 3e 20  at <b>max()</b> 
ad40: 69 73 20 61 20 73 69 6d 70 6c 65 20 66 75 6e 63  is a simple func
ad50: 74 69 6f 6e 20 77 68 65 6e 0a 69 74 20 68 61 73  tion when.it has
ad60: 20 32 20 6f 72 20 6d 6f 72 65 20 61 72 67 75 6d   2 or more argum
ad70: 65 6e 74 73 20 62 75 74 20 63 6f 6e 76 65 72 74  ents but convert
ad80: 73 20 74 6f 20 61 6e 20 61 67 67 72 65 67 61 74  s to an aggregat
ad90: 65 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 67 69  e function if gi
ada0: 76 65 6e 0a 6f 6e 6c 79 20 61 20 73 69 6e 67 6c  ven.only a singl
adb0: 65 20 61 72 67 75 6d 65 6e 74 2e 3c 2f 74 64 3e  e argument.</td>
adc0: 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64  .</tr>..<tr>.<td
add0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
ade0: 69 67 6e 3d 22 72 69 67 68 74 22 3e 6d 69 6e 28  ign="right">min(
adf0: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
ae00: 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20  >,...)</td>.<td 
ae10: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
ae20: 75 72 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74  urn the argument
ae30: 20 77 69 74 68 20 74 68 65 20 6d 69 6e 69 6d 75   with the minimu
ae40: 6d 20 76 61 6c 75 65 2e 20 20 41 72 67 75 6d 65  m value.  Argume
ae50: 6e 74 73 0a 6d 61 79 20 62 65 20 73 74 72 69 6e  nts.may be strin
ae60: 67 73 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74  gs in addition t
ae70: 6f 20 6e 75 6d 62 65 72 73 2e 20 20 54 68 65 20  o numbers.  The 
ae80: 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 20 69 73  minimum value is
ae90: 20 64 65 74 65 72 6d 69 6e 65 64 0a 62 79 20 74   determined.by t
aea0: 68 65 20 75 73 75 61 6c 20 73 6f 72 74 20 6f 72  he usual sort or
aeb0: 64 65 72 2e 20 20 4e 6f 74 65 20 74 68 61 74 20  der.  Note that 
aec0: 3c 62 3e 6d 69 6e 28 29 3c 2f 62 3e 20 69 73 20  <b>min()</b> is 
aed0: 61 20 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f  a simple functio
aee0: 6e 20 77 68 65 6e 0a 69 74 20 68 61 73 20 32 20  n when.it has 2 
aef0: 6f 72 20 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74  or more argument
af00: 73 20 62 75 74 20 63 6f 6e 76 65 72 74 73 20 74  s but converts t
af10: 6f 20 61 6e 20 61 67 67 72 65 67 61 74 65 20 66  o an aggregate f
af20: 75 6e 63 74 69 6f 6e 20 69 66 20 67 69 76 65 6e  unction if given
af30: 0a 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61  .only a single a
af40: 72 67 75 6d 65 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f  rgument.</td>.</
af50: 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  tr>..<tr>.<td va
af60: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
af70: 3d 22 72 69 67 68 74 22 3e 6e 75 6c 6c 69 66 28  ="right">nullif(
af80: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
af90: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
afa0: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
afb0: 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  the first argume
afc0: 6e 74 20 69 66 20 74 68 65 20 61 72 67 75 6d 65  nt if the argume
afd0: 6e 74 73 20 61 72 65 20 64 69 66 66 65 72 65 6e  nts are differen
afe0: 74 2c 20 0a 6f 74 68 65 72 77 69 73 65 20 72 65  t, .otherwise re
aff0: 74 75 72 6e 20 4e 55 4c 4c 2e 3c 2f 74 64 3e 0a  turn NULL.</td>.
b000: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
b010: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
b020: 67 6e 3d 22 72 69 67 68 74 22 3e 71 75 6f 74 65  gn="right">quote
b030: 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a  (<i>X</i>)</td>.
b040: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
b050: 3e 54 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65  >This routine re
b060: 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20 77  turns a string w
b070: 68 69 63 68 20 69 73 20 74 68 65 20 76 61 6c 75  hich is the valu
b080: 65 20 6f 66 0a 69 74 73 20 61 72 67 75 6d 65 6e  e of.its argumen
b090: 74 20 73 75 69 74 61 62 6c 65 20 66 6f 72 20 69  t suitable for i
b0a0: 6e 63 6c 75 73 69 6f 6e 20 69 6e 74 6f 20 61 6e  nclusion into an
b0b0: 6f 74 68 65 72 20 53 51 4c 20 73 74 61 74 65 6d  other SQL statem
b0c0: 65 6e 74 2e 0a 53 74 72 69 6e 67 73 20 61 72 65  ent..Strings are
b0d0: 20 73 75 72 72 6f 75 6e 64 65 64 20 62 79 20 73   surrounded by s
b0e0: 69 6e 67 6c 65 2d 71 75 6f 74 65 73 20 77 69 74  ingle-quotes wit
b0f0: 68 20 65 73 63 61 70 65 73 20 6f 6e 20 69 6e 74  h escapes on int
b100: 65 72 69 6f 72 20 71 75 6f 74 65 73 0a 61 73 20  erior quotes.as 
b110: 6e 65 65 64 65 64 2e 20 20 42 4c 4f 42 73 20 61  needed.  BLOBs a
b120: 72 65 20 65 6e 63 6f 64 65 64 20 61 73 20 68 65  re encoded as he
b130: 78 61 64 65 63 69 6d 61 6c 20 6c 69 74 65 72 61  xadecimal litera
b140: 6c 73 2e 0a 54 68 65 20 63 75 72 72 65 6e 74 20  ls..The current 
b150: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
b160: 66 20 56 41 43 55 55 4d 20 75 73 65 73 20 74 68  f VACUUM uses th
b170: 69 73 20 66 75 6e 63 74 69 6f 6e 2e 20 20 54 68  is function.  Th
b180: 65 20 66 75 6e 63 74 69 6f 6e 0a 69 73 20 61 6c  e function.is al
b190: 73 6f 20 75 73 65 66 75 6c 20 77 68 65 6e 20 77  so useful when w
b1a0: 72 69 74 69 6e 67 20 74 72 69 67 67 65 72 73 20  riting triggers 
b1b0: 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 75 6e 64  to implement und
b1c0: 6f 2f 72 65 64 6f 20 66 75 6e 63 74 69 6f 6e 61  o/redo functiona
b1d0: 6c 69 74 79 2e 0a 3c 2f 74 64 3e 0a 3c 2f 74 72  lity..</td>.</tr
b1e0: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
b1f0: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
b200: 72 69 67 68 74 22 3e 72 61 6e 64 6f 6d 28 2a 29  right">random(*)
b210: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
b220: 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20  ="top">Return a 
b230: 72 61 6e 64 6f 6d 20 69 6e 74 65 67 65 72 20 62  random integer b
b240: 65 74 77 65 65 6e 20 2d 32 31 34 37 34 38 33 36  etween -21474836
b250: 34 38 20 61 6e 64 0a 2b 32 31 34 37 34 38 33 36  48 and.+21474836
b260: 34 37 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  47.</td>.</tr>..
b270: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
b280: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
b290: 68 74 22 3e 72 6f 75 6e 64 28 3c 69 3e 58 3c 2f  ht">round(<i>X</
b2a0: 69 3e 29 3c 62 72 3e 72 6f 75 6e 64 28 3c 69 3e  i>)<br>round(<i>
b2b0: 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c  X</i>,<i>Y</i>)<
b2c0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
b2d0: 22 74 6f 70 22 3e 52 6f 75 6e 64 20 6f 66 66 20  "top">Round off 
b2e0: 74 68 65 20 6e 75 6d 62 65 72 20 3c 69 3e 58 3c  the number <i>X<
b2f0: 2f 69 3e 20 74 6f 20 3c 69 3e 59 3c 2f 69 3e 20  /i> to <i>Y</i> 
b300: 64 69 67 69 74 73 20 74 6f 20 74 68 65 0a 72 69  digits to the.ri
b310: 67 68 74 20 6f 66 20 74 68 65 20 64 65 63 69 6d  ght of the decim
b320: 61 6c 20 70 6f 69 6e 74 2e 20 20 49 66 20 74 68  al point.  If th
b330: 65 20 3c 69 3e 59 3c 2f 69 3e 20 61 72 67 75 6d  e <i>Y</i> argum
b340: 65 6e 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20  ent is omitted, 
b350: 30 20 69 73 20 0a 61 73 73 75 6d 65 64 2e 3c 2f  0 is .assumed.</
b360: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
b370: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
b380: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 73   align="right">s
b390: 6f 75 6e 64 65 78 28 3c 69 3e 58 3c 2f 69 3e 29  oundex(<i>X</i>)
b3a0: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
b3b0: 3d 22 74 6f 70 22 3e 43 6f 6d 70 75 74 65 20 74  ="top">Compute t
b3c0: 68 65 20 73 6f 75 6e 64 65 78 20 65 6e 63 6f 64  he soundex encod
b3d0: 69 6e 67 20 6f 66 20 74 68 65 20 73 74 72 69 6e  ing of the strin
b3e0: 67 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 54 68 65 20  g <i>X</i>..The 
b3f0: 73 74 72 69 6e 67 20 22 3f 30 30 30 22 20 69 73  string "?000" is
b400: 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68 65   returned if the
b410: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 4e 55 4c   argument is NUL
b420: 4c 2e 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  L..This function
b430: 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d   is omitted from
b440: 20 53 51 4c 69 74 65 20 62 79 20 64 65 66 61 75   SQLite by defau
b450: 6c 74 2e 0a 49 74 20 69 73 20 6f 6e 6c 79 20 61  lt..It is only a
b460: 76 61 69 6c 61 62 6c 65 20 74 68 65 20 2d 44 53  vailable the -DS
b470: 51 4c 49 54 45 5f 53 4f 55 4e 44 45 58 3d 31 20  QLITE_SOUNDEX=1 
b480: 63 6f 6d 70 69 6c 65 72 20 6f 70 74 69 6f 6e 0a  compiler option.
b490: 69 73 20 75 73 65 64 20 77 68 65 6e 20 53 51 4c  is used when SQL
b4a0: 69 74 65 20 69 73 20 62 75 69 6c 74 2e 3c 2f 74  ite is built.</t
b4b0: 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c  d>.</tr>..<tr>.<
b4c0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
b4d0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 73 71  align="right">sq
b4e0: 6c 69 74 65 5f 76 65 72 73 69 6f 6e 28 2a 29 3c  lite_version(*)<
b4f0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
b500: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65  "top">Return the
b510: 20 76 65 72 73 69 6f 6e 20 73 74 72 69 6e 67 20   version string 
b520: 66 6f 72 20 74 68 65 20 53 51 4c 69 74 65 20 6c  for the SQLite l
b530: 69 62 72 61 72 79 0a 74 68 61 74 20 69 73 20 72  ibrary.that is r
b540: 75 6e 6e 69 6e 67 2e 20 20 45 78 61 6d 70 6c 65  unning.  Example
b550: 3a 20 20 22 32 2e 38 2e 30 22 3c 2f 74 64 3e 0a  :  "2.8.0"</td>.
b560: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
b570: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
b580: 67 6e 3d 22 72 69 67 68 74 22 3e 73 75 62 73 74  gn="right">subst
b590: 72 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c  r(<i>X</i>,<i>Y<
b5a0: 2f 69 3e 2c 3c 69 3e 5a 3c 2f 69 3e 29 3c 2f 74  /i>,<i>Z</i>)</t
b5b0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
b5c0: 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 73 75 62  op">Return a sub
b5d0: 73 74 72 69 6e 67 20 6f 66 20 69 6e 70 75 74 20  string of input 
b5e0: 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20  string <i>X</i> 
b5f0: 74 68 61 74 20 62 65 67 69 6e 73 0a 77 69 74 68  that begins.with
b600: 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 2d 74 68   the <i>Y</i>-th
b610: 20 63 68 61 72 61 63 74 65 72 20 61 6e 64 20 77   character and w
b620: 68 69 63 68 20 69 73 20 3c 69 3e 5a 3c 2f 69 3e  hich is <i>Z</i>
b630: 20 63 68 61 72 61 63 74 65 72 73 20 6c 6f 6e 67   characters long
b640: 2e 0a 54 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20  ..The left-most 
b650: 63 68 61 72 61 63 74 65 72 20 6f 66 20 3c 69 3e  character of <i>
b660: 58 3c 2f 69 3e 20 69 73 20 6e 75 6d 62 65 72 20  X</i> is number 
b670: 31 2e 20 20 49 66 20 3c 69 3e 59 3c 2f 69 3e 20  1.  If <i>Y</i> 
b680: 69 73 20 6e 65 67 61 74 69 76 65 0a 74 68 65 20  is negative.the 
b690: 74 68 65 20 66 69 72 73 74 20 63 68 61 72 61 63  the first charac
b6a0: 74 65 72 20 6f 66 20 74 68 65 20 73 75 62 73 74  ter of the subst
b6b0: 72 69 6e 67 20 69 73 20 66 6f 75 6e 64 20 62 79  ring is found by
b6c0: 20 63 6f 75 6e 74 69 6e 67 20 66 72 6f 6d 20 74   counting from t
b6d0: 68 65 0a 72 69 67 68 74 20 72 61 74 68 65 72 20  he.right rather 
b6e0: 74 68 61 6e 20 74 68 65 20 6c 65 66 74 2e 20 20  than the left.  
b6f0: 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6e  If SQLite is con
b700: 66 69 67 75 72 65 64 20 74 6f 20 73 75 70 70 6f  figured to suppo
b710: 72 74 20 55 54 46 2d 38 2c 0a 74 68 65 6e 20 63  rt UTF-8,.then c
b720: 68 61 72 61 63 74 65 72 73 20 69 6e 64 69 63 65  haracters indice
b730: 73 20 72 65 66 65 72 20 74 6f 20 61 63 74 75 61  s refer to actua
b740: 6c 20 55 54 46 2d 38 20 63 68 61 72 61 63 74 65  l UTF-8 characte
b750: 72 73 2c 20 6e 6f 74 20 62 79 74 65 73 2e 3c 2f  rs, not bytes.</
b760: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
b770: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
b780: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 74   align="right">t
b790: 79 70 65 6f 66 28 3c 69 3e 58 3c 2f 69 3e 29 3c  ypeof(<i>X</i>)<
b7a0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
b7b0: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65  "top">Return the
b7c0: 20 74 79 70 65 20 6f 66 20 74 68 65 20 65 78 70   type of the exp
b7d0: 72 65 73 73 69 6f 6e 20 3c 69 3e 58 3c 2f 69 3e  ression <i>X</i>
b7e0: 2e 20 20 54 68 65 20 6f 6e 6c 79 20 0a 72 65 74  .  The only .ret
b7f0: 75 72 6e 20 76 61 6c 75 65 73 20 61 72 65 20 22  urn values are "
b800: 6e 75 6c 6c 22 2c 20 22 69 6e 74 65 67 65 72 22  null", "integer"
b810: 2c 20 22 72 65 61 6c 22 2c 20 22 74 65 78 74 22  , "real", "text"
b820: 2c 20 61 6e 64 20 22 62 6c 6f 62 22 2e 0a 53 51  , and "blob"..SQ
b830: 4c 69 74 65 27 73 20 74 79 70 65 20 68 61 6e 64  Lite's type hand
b840: 6c 69 6e 67 20 69 73 20 0a 65 78 70 6c 61 69 6e  ling is .explain
b850: 65 64 20 69 6e 20 3c 61 20 68 72 65 66 3d 22 64  ed in <a href="d
b860: 61 74 61 74 79 70 65 33 2e 68 74 6d 6c 22 3e 44  atatype3.html">D
b870: 61 74 61 74 79 70 65 73 20 69 6e 20 53 51 4c 69  atatypes in SQLi
b880: 74 65 20 56 65 72 73 69 6f 6e 20 33 3c 2f 61 3e  te Version 3</a>
b890: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
b8a0: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
b8b0: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
b8c0: 22 3e 75 70 70 65 72 28 3c 69 3e 58 3c 2f 69 3e  ">upper(<i>X</i>
b8d0: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
b8e0: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61  n="top">Return a
b8f0: 20 63 6f 70 79 20 6f 66 20 69 6e 70 75 74 20 73   copy of input s
b900: 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 63  tring <i>X</i> c
b910: 6f 6e 76 65 72 74 65 64 20 74 6f 20 61 6c 6c 0a  onverted to all.
b920: 75 70 70 65 72 2d 63 61 73 65 20 6c 65 74 74 65  upper-case lette
b930: 72 73 2e 20 20 54 68 65 20 69 6d 70 6c 65 6d 65  rs.  The impleme
b940: 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20  ntation of this 
b950: 66 75 6e 63 74 69 6f 6e 20 75 73 65 73 20 74 68  function uses th
b960: 65 20 43 20 6c 69 62 72 61 72 79 0a 72 6f 75 74  e C library.rout
b970: 69 6e 65 20 3c 62 3e 74 6f 75 70 70 65 72 28 29  ine <b>toupper()
b980: 3c 2f 62 3e 20 77 68 69 63 68 20 6d 65 61 6e 73  </b> which means
b990: 20 69 74 20 6d 61 79 20 6e 6f 74 20 77 6f 72 6b   it may not work
b9a0: 20 63 6f 72 72 65 63 74 6c 79 20 6f 6e 20 0a 55   correctly on .U
b9b0: 54 46 2d 38 20 73 74 72 69 6e 67 73 2e 3c 2f 74  TF-8 strings.</t
b9c0: 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65  d>.</tr>.</table
b9d0: 3e 0a 0a 3c 70 3e 0a 54 68 65 20 66 6f 6c 6c 6f  >..<p>.The follo
b9e0: 77 69 6e 67 20 61 67 67 72 65 67 61 74 65 20 66  wing aggregate f
b9f0: 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 61 76 61  unctions are ava
ba00: 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61 75 6c  ilable by defaul
ba10: 74 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c 0a 61  t.  Additional.a
ba20: 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
ba30: 6e 73 20 77 72 69 74 74 65 6e 20 69 6e 20 43 20  ns written in C 
ba40: 6d 61 79 20 62 65 20 61 64 64 65 64 20 75 73 69  may be added usi
ba50: 6e 67 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d  ng the .<a href=
ba60: 22 63 61 70 69 33 72 65 66 2e 68 74 6d 6c 23 73  "capi3ref.html#s
ba70: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75  qlite3_create_fu
ba80: 6e 63 74 69 6f 6e 22 3e 73 71 6c 69 74 65 33 5f  nction">sqlite3_
ba90: 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28  create_function(
baa0: 29 3c 2f 61 3e 0a 41 50 49 2e 3c 2f 70 3e 0a 0a  )</a>.API.</p>..
bab0: 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20  <table border=0 
bac0: 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a  cellpadding=10>.
bad0: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
bae0: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
baf0: 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 61 76  ht" width=120>av
bb00: 67 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e  g(<i>X</i>)</td>
bb10: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
bb20: 22 3e 52 65 74 75 72 6e 20 74 68 65 20 61 76 65  ">Return the ave
bb30: 72 61 67 65 20 76 61 6c 75 65 20 6f 66 20 61 6c  rage value of al
bb40: 6c 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 74 68 69  l <i>X</i> withi
bb50: 6e 20 61 20 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a  n a group.</td>.
bb60: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
bb70: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
bb80: 67 6e 3d 22 72 69 67 68 74 22 3e 63 6f 75 6e 74  gn="right">count
bb90: 28 3c 69 3e 58 3c 2f 69 3e 29 3c 62 72 3e 63 6f  (<i>X</i>)<br>co
bba0: 75 6e 74 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64 20  unt(*)</td>.<td 
bbb0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 54 68 65  valign="top">The
bbc0: 20 66 69 72 73 74 20 66 6f 72 6d 20 72 65 74 75   first form retu
bbd0: 72 6e 20 61 20 63 6f 75 6e 74 20 6f 66 20 74 68  rn a count of th
bbe0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65  e number of time
bbf0: 73 0a 74 68 61 74 20 3c 69 3e 58 3c 2f 69 3e 20  s.that <i>X</i> 
bc00: 69 73 20 6e 6f 74 20 4e 55 4c 4c 20 69 6e 20 61  is not NULL in a
bc10: 20 67 72 6f 75 70 2e 20 20 54 68 65 20 73 65 63   group.  The sec
bc20: 6f 6e 64 20 66 6f 72 6d 20 28 77 69 74 68 20 6e  ond form (with n
bc30: 6f 20 61 72 67 75 6d 65 6e 74 29 0a 72 65 74 75  o argument).retu
bc40: 72 6e 73 20 74 68 65 20 74 6f 74 61 6c 20 6e 75  rns the total nu
bc50: 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 69 6e 20  mber of rows in 
bc60: 74 68 65 20 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a  the group.</td>.
bc70: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
bc80: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
bc90: 67 6e 3d 22 72 69 67 68 74 22 3e 6d 61 78 28 3c  gn="right">max(<
bca0: 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>X</i>)</td>.<t
bcb0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
bcc0: 65 74 75 72 6e 20 74 68 65 20 6d 61 78 69 6d 75  eturn the maximu
bcd0: 6d 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76  m value of all v
bce0: 61 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f  alues in the gro
bcf0: 75 70 2e 0a 54 68 65 20 75 73 75 61 6c 20 73 6f  up..The usual so
bd00: 72 74 20 6f 72 64 65 72 20 69 73 20 75 73 65 64  rt order is used
bd10: 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68   to determine th
bd20: 65 20 6d 61 78 69 6d 75 6d 2e 3c 2f 74 64 3e 0a  e maximum.</td>.
bd30: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
bd40: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
bd50: 67 6e 3d 22 72 69 67 68 74 22 3e 6d 69 6e 28 3c  gn="right">min(<
bd60: 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>X</i>)</td>.<t
bd70: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
bd80: 65 74 75 72 6e 20 74 68 65 20 6d 69 6e 69 6d 75  eturn the minimu
bd90: 6d 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65  m non-NULL value
bda0: 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73 20 69   of all values i
bdb0: 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 54 68 65  n the group..The
bdc0: 20 75 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65   usual sort orde
bdd0: 72 20 69 73 20 75 73 65 64 20 74 6f 20 64 65 74  r is used to det
bde0: 65 72 6d 69 6e 65 20 74 68 65 20 6d 69 6e 69 6d  ermine the minim
bdf0: 75 6d 2e 20 20 4e 55 4c 4c 20 69 73 20 6f 6e 6c  um.  NULL is onl
be00: 79 20 72 65 74 75 72 6e 65 64 0a 69 66 20 61 6c  y returned.if al
be10: 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20  l values in the 
be20: 67 72 6f 75 70 20 61 72 65 20 4e 55 4c 4c 2e 3c  group are NULL.<
be30: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
be40: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
be50: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
be60: 73 75 6d 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74  sum(<i>X</i>)</t
be70: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
be80: 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 6e  op">Return the n
be90: 75 6d 65 72 69 63 20 73 75 6d 20 6f 66 20 61 6c  umeric sum of al
bea0: 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20  l values in the 
beb0: 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  group.</td>.</tr
bec0: 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 7d 0a 0a 0a 53  >.</table>.}...S
bed0: 65 63 74 69 6f 6e 20 49 4e 53 45 52 54 20 69 6e  ection INSERT in
bee0: 73 65 72 74 0a 0a 53 79 6e 74 61 78 20 7b 73 71  sert..Syntax {sq
bef0: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 49  l-statement} {.I
bf00: 4e 53 45 52 54 20 5b 4f 52 20 3c 63 6f 6e 66 6c  NSERT [OR <confl
bf10: 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 5d 20  ict-algorithm>] 
bf20: 49 4e 54 4f 20 5b 3c 64 61 74 61 62 61 73 65 2d  INTO [<database-
bf30: 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d  name> .] <table-
bf40: 6e 61 6d 65 3e 20 5b 28 3c 63 6f 6c 75 6d 6e 2d  name> [(<column-
bf50: 6c 69 73 74 3e 29 5d 20 56 41 4c 55 45 53 28 3c  list>)] VALUES(<
bf60: 76 61 6c 75 65 2d 6c 69 73 74 3e 29 20 7c 0a 49  value-list>) |.I
bf70: 4e 53 45 52 54 20 5b 4f 52 20 3c 63 6f 6e 66 6c  NSERT [OR <confl
bf80: 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 5d 20  ict-algorithm>] 
bf90: 49 4e 54 4f 20 5b 3c 64 61 74 61 62 61 73 65 2d  INTO [<database-
bfa0: 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d  name> .] <table-
bfb0: 6e 61 6d 65 3e 20 5b 28 3c 63 6f 6c 75 6d 6e 2d  name> [(<column-
bfc0: 6c 69 73 74 3e 29 5d 20 3c 73 65 6c 65 63 74 2d  list>)] <select-
bfd0: 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75  statement>.}..pu
bfe0: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 49 4e 53 45  ts {.<p>The INSE
bff0: 52 54 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d  RT statement com
c000: 65 73 20 69 6e 20 74 77 6f 20 62 61 73 69 63 20  es in two basic 
c010: 66 6f 72 6d 73 2e 20 20 54 68 65 20 66 69 72 73  forms.  The firs
c020: 74 20 66 6f 72 6d 0a 28 77 69 74 68 20 74 68 65  t form.(with the
c030: 20 22 56 41 4c 55 45 53 22 20 6b 65 79 77 6f 72   "VALUES" keywor
c040: 64 29 20 63 72 65 61 74 65 73 20 61 20 73 69 6e  d) creates a sin
c050: 67 6c 65 20 6e 65 77 20 72 6f 77 20 69 6e 20 61  gle new row in a
c060: 6e 20 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65  n existing table
c070: 2e 0a 49 66 20 6e 6f 20 63 6f 6c 75 6d 6e 2d 6c  ..If no column-l
c080: 69 73 74 20 69 73 20 73 70 65 63 69 66 69 65 64  ist is specified
c090: 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65 72   then the number
c0a0: 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73 74 0a   of values must.
c0b0: 62 65 20 74 68 65 20 73 61 6d 65 20 61 73 20 74  be the same as t
c0c0: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
c0d0: 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c  umns in the tabl
c0e0: 65 2e 20 20 49 66 20 61 20 63 6f 6c 75 6d 6e 2d  e.  If a column-
c0f0: 6c 69 73 74 0a 69 73 20 73 70 65 63 69 66 69 65  list.is specifie
c100: 64 2c 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62  d, then the numb
c110: 65 72 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73  er of values mus
c120: 74 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62  t match the numb
c130: 65 72 20 6f 66 0a 73 70 65 63 69 66 69 65 64 20  er of.specified 
c140: 63 6f 6c 75 6d 6e 73 2e 20 20 43 6f 6c 75 6d 6e  columns.  Column
c150: 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 74  s of the table t
c160: 68 61 74 20 64 6f 20 6e 6f 74 20 61 70 70 65 61  hat do not appea
c170: 72 20 69 6e 20 74 68 65 0a 63 6f 6c 75 6d 6e 20  r in the.column 
c180: 6c 69 73 74 20 61 72 65 20 66 69 6c 6c 65 64 20  list are filled 
c190: 77 69 74 68 20 74 68 65 20 64 65 66 61 75 6c 74  with the default
c1a0: 20 76 61 6c 75 65 2c 20 6f 72 20 77 69 74 68 20   value, or with 
c1b0: 4e 55 4c 4c 20 69 66 20 6e 6f 74 0a 64 65 66 61  NULL if not.defa
c1c0: 75 6c 74 20 76 61 6c 75 65 20 69 73 20 73 70 65  ult value is spe
c1d0: 63 69 66 69 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70  cified..</p>..<p
c1e0: 3e 54 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d  >The second form
c1f0: 20 6f 66 20 74 68 65 20 49 4e 53 45 52 54 20 73   of the INSERT s
c200: 74 61 74 65 6d 65 6e 74 20 74 61 6b 65 73 20 69  tatement takes i
c210: 74 20 64 61 74 61 20 66 72 6f 6d 20 61 0a 53 45  t data from a.SE
c220: 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 20  LECT statement. 
c230: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   The number of c
c240: 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65  olumns in the re
c250: 73 75 6c 74 20 6f 66 20 74 68 65 0a 53 45 4c 45  sult of the.SELE
c260: 43 54 20 6d 75 73 74 20 65 78 61 63 74 6c 79 20  CT must exactly 
c270: 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65 72  match the number
c280: 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74   of columns in t
c290: 68 65 20 74 61 62 6c 65 20 69 66 0a 6e 6f 20 63  he table if.no c
c2a0: 6f 6c 75 6d 6e 20 6c 69 73 74 20 69 73 20 73 70  olumn list is sp
c2b0: 65 63 69 66 69 65 64 2c 20 6f 72 20 69 74 20 6d  ecified, or it m
c2c0: 75 73 74 20 6d 61 74 63 68 20 74 68 65 20 6e 75  ust match the nu
c2d0: 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 0a  mber of columns.
c2e0: 6e 61 6d 65 20 69 6e 20 74 68 65 20 63 6f 6c 75  name in the colu
c2f0: 6d 6e 20 6c 69 73 74 2e 20 20 41 20 6e 65 77 20  mn list.  A new 
c300: 65 6e 74 72 79 20 69 73 20 6d 61 64 65 20 69 6e  entry is made in
c310: 20 74 68 65 20 74 61 62 6c 65 0a 66 6f 72 20 65   the table.for e
c320: 76 65 72 79 20 72 6f 77 20 6f 66 20 74 68 65 20  very row of the 
c330: 53 45 4c 45 43 54 20 72 65 73 75 6c 74 2e 20 20  SELECT result.  
c340: 54 68 65 20 53 45 4c 45 43 54 20 6d 61 79 20 62  The SELECT may b
c350: 65 20 73 69 6d 70 6c 65 0a 6f 72 20 63 6f 6d 70  e simple.or comp
c360: 6f 75 6e 64 2e 20 20 49 66 20 74 68 65 20 53 45  ound.  If the SE
c370: 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20 68  LECT statement h
c380: 61 73 20 61 6e 20 4f 52 44 45 52 20 42 59 20 63  as an ORDER BY c
c390: 6c 61 75 73 65 2c 0a 74 68 65 20 4f 52 44 45 52  lause,.the ORDER
c3a0: 20 42 59 20 69 73 20 69 67 6e 6f 72 65 64 2e 3c   BY is ignored.<
c3b0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69  /p>..<p>The opti
c3c0: 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c  onal conflict-cl
c3d0: 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20  ause allows the 
c3e0: 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66  specification of
c3f0: 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a   an alternative.
c400: 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c  constraint confl
c410: 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  ict resolution a
c420: 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20  lgorithm to use 
c430: 64 75 72 69 6e 67 20 74 68 69 73 20 6f 6e 65 20  during this one 
c440: 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65  command..See the
c450: 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a   section titled.
c460: 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69  <a href="#confli
c470: 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c  ct">ON CONFLICT<
c480: 2f 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e  /a> for addition
c490: 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a  al information..
c4a0: 46 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  For compatibilit
c4b0: 79 20 77 69 74 68 20 4d 79 53 51 4c 2c 20 74 68  y with MySQL, th
c4c0: 65 20 70 61 72 73 65 72 20 61 6c 6c 6f 77 73 20  e parser allows 
c4d0: 74 68 65 20 75 73 65 20 6f 66 20 74 68 65 0a 73  the use of the.s
c4e0: 69 6e 67 6c 65 20 6b 65 79 77 6f 72 64 20 3c 61  ingle keyword <a
c4f0: 20 68 72 65 66 3d 22 23 72 65 70 6c 61 63 65 22   href="#replace"
c500: 3e 52 45 50 4c 41 43 45 3c 2f 61 3e 20 61 73 20  >REPLACE</a> as 
c510: 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 22 49 4e  an alias for "IN
c520: 53 45 52 54 20 4f 52 20 52 45 50 4c 41 43 45 22  SERT OR REPLACE"
c530: 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  ..</p>.}...Secti
c540: 6f 6e 20 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  on {ON CONFLICT 
c550: 63 6c 61 75 73 65 7d 20 63 6f 6e 66 6c 69 63 74  clause} conflict
c560: 0a 0a 53 79 6e 74 61 78 20 7b 63 6f 6e 66 6c 69  ..Syntax {confli
c570: 63 74 2d 63 6c 61 75 73 65 7d 20 7b 0a 4f 4e 20  ct-clause} {.ON 
c580: 43 4f 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c 69  CONFLICT <confli
c590: 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 0a 7d 20  ct-algorithm>.} 
c5a0: 7b 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69  {conflict-algori
c5b0: 74 68 6d 7d 20 7b 0a 52 4f 4c 4c 42 41 43 4b 20  thm} {.ROLLBACK 
c5c0: 7c 20 41 42 4f 52 54 20 7c 20 46 41 49 4c 20 7c  | ABORT | FAIL |
c5d0: 20 49 47 4e 4f 52 45 20 7c 20 52 45 50 4c 41 43   IGNORE | REPLAC
c5e0: 45 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  E.}..puts {.<p>T
c5f0: 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63  he ON CONFLICT c
c600: 6c 61 75 73 65 20 69 73 20 6e 6f 74 20 61 20 73  lause is not a s
c610: 65 70 61 72 61 74 65 20 53 51 4c 20 63 6f 6d 6d  eparate SQL comm
c620: 61 6e 64 2e 20 20 49 74 20 69 73 20 61 0a 6e 6f  and.  It is a.no
c630: 6e 2d 73 74 61 6e 64 61 72 64 20 63 6c 61 75 73  n-standard claus
c640: 65 20 74 68 61 74 20 63 61 6e 20 61 70 70 65 61  e that can appea
c650: 72 20 69 6e 20 6d 61 6e 79 20 6f 74 68 65 72 20  r in many other 
c660: 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 2e 0a 49 74  SQL commands..It
c670: 20 69 73 20 67 69 76 65 6e 20 69 74 73 20 6f 77   is given its ow
c680: 6e 20 73 65 63 74 69 6f 6e 20 69 6e 20 74 68 69  n section in thi
c690: 73 20 64 6f 63 75 6d 65 6e 74 20 62 65 63 61 75  s document becau
c6a0: 73 65 20 69 74 20 69 73 20 6e 6f 74 0a 70 61 72  se it is not.par
c6b0: 74 20 6f 66 20 73 74 61 6e 64 61 72 64 20 53 51  t of standard SQ
c6c0: 4c 20 61 6e 64 20 74 68 65 72 65 66 6f 72 65 20  L and therefore 
c6d0: 6d 69 67 68 74 20 6e 6f 74 20 62 65 20 66 61 6d  might not be fam
c6e0: 69 6c 69 61 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  iliar.</p>..<p>T
c6f0: 68 65 20 73 79 6e 74 61 78 20 66 6f 72 20 74 68  he syntax for th
c700: 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c  e ON CONFLICT cl
c710: 61 75 73 65 20 69 73 20 61 73 20 73 68 6f 77 6e  ause is as shown
c720: 20 61 62 6f 76 65 20 66 6f 72 0a 74 68 65 20 43   above for.the C
c730: 52 45 41 54 45 20 54 41 42 4c 45 20 61 6e 64 20  REATE TABLE and 
c740: 43 52 45 41 54 45 20 49 4e 44 45 58 20 63 6f 6d  CREATE INDEX com
c750: 6d 61 6e 64 73 2e 20 20 46 6f 72 20 74 68 65 20  mands.  For the 
c760: 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c 20 61 6e  COPY, INSERT, an
c770: 64 0a 55 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64  d.UPDATE command
c780: 73 2c 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20  s, the keywords 
c790: 22 4f 4e 20 43 4f 4e 46 4c 49 43 54 22 20 61 72  "ON CONFLICT" ar
c7a0: 65 20 72 65 70 6c 61 63 65 64 20 62 79 20 22 4f  e replaced by "O
c7b0: 52 22 2c 20 74 6f 20 6d 61 6b 65 0a 74 68 65 20  R", to make.the 
c7c0: 73 79 6e 74 61 78 20 73 65 65 6d 20 6d 6f 72 65  syntax seem more
c7d0: 20 6e 61 74 75 72 61 6c 2e 20 20 42 75 74 20 74   natural.  But t
c7e0: 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 74 68  he meaning of th
c7f0: 65 20 63 6c 61 75 73 65 20 69 73 20 74 68 65 20  e clause is the 
c800: 73 61 6d 65 0a 65 69 74 68 65 72 20 77 61 79 2e  same.either way.
c810: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4f 4e 20  </p>..<p>The ON 
c820: 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20  CONFLICT clause 
c830: 73 70 65 63 69 66 69 65 73 20 61 6e 20 61 6c 67  specifies an alg
c840: 6f 72 69 74 68 6d 20 75 73 65 64 20 74 6f 20 72  orithm used to r
c850: 65 73 6f 6c 76 65 0a 63 6f 6e 73 74 72 61 69 6e  esolve.constrain
c860: 74 20 63 6f 6e 66 6c 69 63 74 73 2e 20 20 54 68  t conflicts.  Th
c870: 65 72 65 20 61 72 65 20 66 69 76 65 20 63 68 6f  ere are five cho
c880: 69 63 65 73 3a 20 52 4f 4c 4c 42 41 43 4b 2c 20  ices: ROLLBACK, 
c890: 41 42 4f 52 54 2c 0a 46 41 49 4c 2c 20 49 47 4e  ABORT,.FAIL, IGN
c8a0: 4f 52 45 2c 20 61 6e 64 20 52 45 50 4c 41 43 45  ORE, and REPLACE
c8b0: 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 61 6c  . The default al
c8c0: 67 6f 72 69 74 68 6d 20 69 73 20 41 42 4f 52 54  gorithm is ABORT
c8d0: 2e 20 20 54 68 69 73 0a 69 73 20 77 68 61 74 20  .  This.is what 
c8e0: 74 68 65 79 20 6d 65 61 6e 3a 3c 2f 70 3e 0a 0a  they mean:</p>..
c8f0: 3c 64 6c 3e 0a 3c 64 74 3e 3c 62 3e 52 4f 4c 4c  <dl>.<dt><b>ROLL
c900: 42 41 43 4b 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64  BACK</b></dt>.<d
c910: 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73  d><p>When a cons
c920: 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
c930: 20 6f 63 63 75 72 73 2c 20 61 6e 20 69 6d 6d 65   occurs, an imme
c940: 64 69 61 74 65 20 52 4f 4c 4c 42 41 43 4b 0a 6f  diate ROLLBACK.o
c950: 63 63 75 72 73 2c 20 74 68 75 73 20 65 6e 64 69  ccurs, thus endi
c960: 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 74  ng the current t
c970: 72 61 6e 73 61 63 74 69 6f 6e 2c 20 61 6e 64 20  ransaction, and 
c980: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72  the command abor
c990: 74 73 0a 77 69 74 68 20 61 20 72 65 74 75 72 6e  ts.with a return
c9a0: 20 63 6f 64 65 20 6f 66 20 53 51 4c 49 54 45 5f   code of SQLITE_
c9b0: 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20 49 66 20  CONSTRAINT.  If 
c9c0: 6e 6f 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69  no transaction i
c9d0: 73 0a 61 63 74 69 76 65 20 28 6f 74 68 65 72 20  s.active (other 
c9e0: 74 68 61 6e 20 74 68 65 20 69 6d 70 6c 69 65 64  than the implied
c9f0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 68 61   transaction tha
ca00: 74 20 69 73 20 63 72 65 61 74 65 64 20 6f 6e 20  t is created on 
ca10: 65 76 65 72 79 0a 63 6f 6d 6d 61 6e 64 29 20 74  every.command) t
ca20: 68 65 6e 20 74 68 69 73 20 61 6c 67 6f 72 69 74  hen this algorit
ca30: 68 6d 20 77 6f 72 6b 73 20 74 68 65 20 73 61 6d  hm works the sam
ca40: 65 20 61 73 20 41 42 4f 52 54 2e 3c 2f 70 3e 3c  e as ABORT.</p><
ca50: 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 41 42 4f  /dd>..<dt><b>ABO
ca60: 52 54 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e  RT</b></dt>.<dd>
ca70: 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72  <p>When a constr
ca80: 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f  aint violation o
ca90: 63 63 75 72 73 2c 20 74 68 65 20 63 6f 6d 6d 61  ccurs, the comma
caa0: 6e 64 20 62 61 63 6b 73 20 6f 75 74 0a 61 6e 79  nd backs out.any
cab0: 20 70 72 69 6f 72 20 63 68 61 6e 67 65 73 20 69   prior changes i
cac0: 74 20 6d 69 67 68 74 20 68 61 76 65 20 6d 61 64  t might have mad
cad0: 65 20 61 6e 64 20 61 62 6f 72 74 73 20 77 69 74  e and aborts wit
cae0: 68 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65 0a  h a return code.
caf0: 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  of SQLITE_CONSTR
cb00: 41 49 4e 54 2e 20 20 42 75 74 20 6e 6f 20 52 4f  AINT.  But no RO
cb10: 4c 4c 42 41 43 4b 20 69 73 20 65 78 65 63 75 74  LLBACK is execut
cb20: 65 64 20 73 6f 20 63 68 61 6e 67 65 73 0a 66 72  ed so changes.fr
cb30: 6f 6d 20 70 72 69 6f 72 20 63 6f 6d 6d 61 6e 64  om prior command
cb40: 73 20 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d  s within the sam
cb50: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 61 72  e transaction.ar
cb60: 65 20 70 72 65 73 65 72 76 65 64 2e 20 20 54 68  e preserved.  Th
cb70: 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75 6c  is is the defaul
cb80: 74 20 62 65 68 61 76 69 6f 72 2e 3c 2f 70 3e 3c  t behavior.</p><
cb90: 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 46 41 49  /dd>..<dt><b>FAI
cba0: 4c 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c  L</b></dt>.<dd><
cbb0: 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72 61  p>When a constra
cbc0: 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63  int violation oc
cbd0: 63 75 72 73 2c 20 74 68 65 20 63 6f 6d 6d 61 6e  curs, the comman
cbe0: 64 20 61 62 6f 72 74 73 20 77 69 74 68 20 61 0a  d aborts with a.
cbf0: 72 65 74 75 72 6e 20 63 6f 64 65 20 53 51 4c 49  return code SQLI
cc00: 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20  TE_CONSTRAINT.  
cc10: 42 75 74 20 61 6e 79 20 63 68 61 6e 67 65 73 20  But any changes 
cc20: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
cc30: 74 68 61 74 0a 74 68 65 20 63 6f 6d 6d 61 6e 64  that.the command
cc40: 20 6d 61 64 65 20 70 72 69 6f 72 20 74 6f 20 65   made prior to e
cc50: 6e 63 6f 75 6e 74 65 72 69 6e 67 20 74 68 65 20  ncountering the 
cc60: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
cc70: 74 69 6f 6e 0a 61 72 65 20 70 72 65 73 65 72 76  tion.are preserv
cc80: 65 64 20 61 6e 64 20 61 72 65 20 6e 6f 74 20 62  ed and are not b
cc90: 61 63 6b 65 64 20 6f 75 74 2e 20 20 46 6f 72 20  acked out.  For 
cca0: 65 78 61 6d 70 6c 65 2c 20 69 66 20 61 6e 20 55  example, if an U
ccb0: 50 44 41 54 45 0a 73 74 61 74 65 6d 65 6e 74 20  PDATE.statement 
ccc0: 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 20 63 6f  encountered a co
ccd0: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
cce0: 6f 6e 20 6f 6e 20 74 68 65 20 31 30 30 74 68 20  on on the 100th 
ccf0: 72 6f 77 20 74 68 61 74 0a 69 74 20 61 74 74 65  row that.it atte
cd00: 6d 70 74 73 20 74 6f 20 75 70 64 61 74 65 2c 20  mpts to update, 
cd10: 74 68 65 6e 20 74 68 65 20 66 69 72 73 74 20 39  then the first 9
cd20: 39 20 72 6f 77 20 63 68 61 6e 67 65 73 20 61 72  9 row changes ar
cd30: 65 20 70 72 65 73 65 72 76 65 64 0a 62 75 74 20  e preserved.but 
cd40: 63 68 61 6e 67 65 73 20 74 6f 20 72 6f 77 73 20  changes to rows 
cd50: 31 30 30 20 61 6e 64 20 62 65 79 6f 6e 64 20 6e  100 and beyond n
cd60: 65 76 65 72 20 6f 63 63 75 72 2e 3c 2f 70 3e 3c  ever occur.</p><
cd70: 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 49 47 4e  /dd>..<dt><b>IGN
cd80: 4f 52 45 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64  ORE</b></dt>.<dd
cd90: 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74  ><p>When a const
cda0: 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
cdb0: 6f 63 63 75 72 73 2c 20 74 68 65 20 6f 6e 65 20  occurs, the one 
cdc0: 72 6f 77 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  row that contain
cdd0: 73 0a 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  s.the constraint
cde0: 20 76 69 6f 6c 61 74 69 6f 6e 20 69 73 20 6e 6f   violation is no
cdf0: 74 20 69 6e 73 65 72 74 65 64 20 6f 72 20 63 68  t inserted or ch
ce00: 61 6e 67 65 64 2e 20 20 42 75 74 20 74 68 65 20  anged.  But the 
ce10: 63 6f 6d 6d 61 6e 64 0a 63 6f 6e 74 69 6e 75 65  command.continue
ce20: 73 20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d  s executing norm
ce30: 61 6c 6c 79 2e 20 20 4f 74 68 65 72 20 72 6f 77  ally.  Other row
ce40: 73 20 62 65 66 6f 72 65 20 61 6e 64 20 61 66 74  s before and aft
ce50: 65 72 20 74 68 65 20 72 6f 77 20 74 68 61 74 0a  er the row that.
ce60: 63 6f 6e 74 61 69 6e 65 64 20 74 68 65 20 63 6f  contained the co
ce70: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
ce80: 6f 6e 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 62  on continue to b
ce90: 65 20 69 6e 73 65 72 74 65 64 20 6f 72 20 75 70  e inserted or up
cea0: 64 61 74 65 64 0a 6e 6f 72 6d 61 6c 6c 79 2e 20  dated.normally. 
ceb0: 20 4e 6f 20 65 72 72 6f 72 20 69 73 20 72 65 74   No error is ret
cec0: 75 72 6e 65 64 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a  urned.</p></dd>.
ced0: 0a 3c 64 74 3e 3c 62 3e 52 45 50 4c 41 43 45 3c  .<dt><b>REPLACE<
cee0: 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e  /b></dt>.<dd><p>
cef0: 57 68 65 6e 20 61 20 55 4e 49 51 55 45 20 63 6f  When a UNIQUE co
cf00: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
cf10: 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 70  on occurs, the p
cf20: 72 65 2d 65 78 69 73 74 69 6e 67 20 72 6f 77 73  re-existing rows
cf30: 0a 74 68 61 74 20 61 72 65 20 63 61 75 73 69 6e  .that are causin
cf40: 67 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  g the constraint
cf50: 20 76 69 6f 6c 61 74 69 6f 6e 20 61 72 65 20 72   violation are r
cf60: 65 6d 6f 76 65 64 20 70 72 69 6f 72 20 74 6f 20  emoved prior to 
cf70: 69 6e 73 65 72 74 69 6e 67 0a 6f 72 20 75 70 64  inserting.or upd
cf80: 61 74 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e  ating the curren
cf90: 74 20 72 6f 77 2e 20 20 54 68 75 73 20 74 68 65  t row.  Thus the
cfa0: 20 69 6e 73 65 72 74 20 6f 72 20 75 70 64 61 74   insert or updat
cfb0: 65 20 61 6c 77 61 79 73 20 6f 63 63 75 72 73 2e  e always occurs.
cfc0: 0a 54 68 65 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e  .The command con
cfd0: 74 69 6e 75 65 73 20 65 78 65 63 75 74 69 6e 67  tinues executing
cfe0: 20 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65   normally.  No e
cff0: 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64  rror is returned
d000: 2e 0a 49 66 20 61 20 4e 4f 54 20 4e 55 4c 4c 20  ..If a NOT NULL 
d010: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
d020: 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65  tion occurs, the
d030: 20 4e 55 4c 4c 20 76 61 6c 75 65 20 69 73 20 72   NULL value is r
d040: 65 70 6c 61 63 65 64 0a 62 79 20 74 68 65 20 64  eplaced.by the d
d050: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72  efault value for
d060: 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 49   that column.  I
d070: 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 68 61 73  f the column has
d080: 20 6e 6f 20 64 65 66 61 75 6c 74 0a 76 61 6c 75   no default.valu
d090: 65 2c 20 74 68 65 6e 20 74 68 65 20 41 42 4f 52  e, then the ABOR
d0a0: 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  T algorithm is u
d0b0: 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65  sed.</p>..<p>Whe
d0c0: 6e 20 74 68 69 73 20 63 6f 6e 66 6c 69 63 74 20  n this conflict 
d0d0: 72 65 73 6f 6c 75 74 69 6f 6e 20 73 74 72 61 74  resolution strat
d0e0: 65 67 79 20 64 65 6c 65 74 65 73 20 72 6f 77 73  egy deletes rows
d0f0: 20 69 6e 20 6f 72 64 65 72 20 74 6f 0a 73 61 74   in order to.sat
d100: 69 73 66 79 20 61 20 63 6f 6e 73 74 72 61 69 6e  isfy a constrain
d110: 74 2c 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 69  t, it does not i
d120: 6e 76 6f 6b 65 20 64 65 6c 65 74 65 20 74 72 69  nvoke delete tri
d130: 67 67 65 72 73 20 6f 6e 20 74 68 6f 73 65 0a 72  ggers on those.r
d140: 6f 77 73 2e 20 20 42 75 74 20 74 68 61 74 20 6d  ows.  But that m
d150: 61 79 20 63 68 61 6e 67 65 20 69 6e 20 61 20 66  ay change in a f
d160: 75 74 75 72 65 20 72 65 6c 65 61 73 65 2e 3c 2f  uture release.</
d170: 70 3e 0a 3c 2f 64 6c 3e 0a 0a 3c 70 3e 54 68 65  p>.</dl>..<p>The
d180: 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69   algorithm speci
d190: 66 69 65 64 20 69 6e 20 74 68 65 20 4f 52 20 63  fied in the OR c
d1a0: 6c 61 75 73 65 20 6f 66 20 61 20 43 4f 50 59 2c  lause of a COPY,
d1b0: 20 49 4e 53 45 52 54 2c 20 6f 72 20 55 50 44 41   INSERT, or UPDA
d1c0: 54 45 0a 6f 76 65 72 72 69 64 65 73 20 61 6e 79  TE.overrides any
d1d0: 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69   algorithm speci
d1e0: 66 69 65 64 20 69 6e 20 61 20 43 52 45 41 54 45  fied in a CREATE
d1f0: 20 54 41 42 4c 45 20 6f 72 20 43 52 45 41 54 45   TABLE or CREATE
d200: 20 49 4e 44 45 58 2e 0a 49 66 20 6e 6f 20 61 6c   INDEX..If no al
d210: 67 6f 72 69 74 68 6d 20 69 73 20 73 70 65 63 69  gorithm is speci
d220: 66 69 65 64 20 61 6e 79 77 68 65 72 65 2c 20 74  fied anywhere, t
d230: 68 65 20 41 42 4f 52 54 20 61 6c 67 6f 72 69 74  he ABORT algorit
d240: 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a  hm is used.</p>.
d250: 7d 0a 23 20 3c 70 3e 46 6f 72 20 61 64 64 69 74  }.# <p>For addit
d260: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
d270: 6e 2c 20 73 65 65 20 0a 23 20 3c 61 20 68 72 65  n, see .# <a hre
d280: 66 3d 22 63 6f 6e 66 6c 69 63 74 2e 68 74 6d 6c  f="conflict.html
d290: 22 3e 63 6f 6e 66 6c 69 63 74 2e 68 74 6d 6c 3c  ">conflict.html<
d2a0: 2f 61 3e 2e 3c 2f 70 3e 0a 0a 53 65 63 74 69 6f  /a>.</p>..Sectio
d2b0: 6e 20 52 45 49 4e 44 45 58 20 72 65 69 6e 64 65  n REINDEX reinde
d2c0: 78 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  x..Syntax {sql-s
d2d0: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 20 20 52 45  tatement} {.  RE
d2e0: 49 4e 44 45 58 20 3c 63 6f 6c 6c 61 74 69 6f 6e  INDEX <collation
d2f0: 20 6e 61 6d 65 3e 0a 7d 0a 53 79 6e 74 61 78 20   name>.}.Syntax 
d300: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
d310: 7b 0a 20 20 52 45 49 4e 44 45 58 20 5b 3c 64 61  {.  REINDEX [<da
d320: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20  tabase-name> .] 
d330: 3c 74 61 62 6c 65 2f 69 6e 64 65 78 2d 6e 61 6d  <table/index-nam
d340: 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  e>.}..puts {.<p>
d350: 54 68 65 20 52 45 49 4e 44 45 58 20 63 6f 6d 6d  The REINDEX comm
d360: 61 6e 64 20 69 73 20 75 73 65 64 20 74 6f 20 64  and is used to d
d370: 65 6c 65 74 65 20 61 6e 64 20 72 65 63 72 65 61  elete and recrea
d380: 74 65 20 69 6e 64 69 63 65 73 20 66 72 6f 6d 20  te indices from 
d390: 73 63 72 61 74 63 68 2e 0a 54 68 69 73 20 69 73  scratch..This is
d3a0: 20 70 72 69 6d 61 72 69 6c 79 20 75 73 65 66 75   primarily usefu
d3b0: 6c 20 77 68 65 6e 20 74 68 65 20 64 65 66 69 6e  l when the defin
d3c0: 69 74 69 6f 6e 20 6f 66 20 61 20 63 6f 6c 6c 61  ition of a colla
d3d0: 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 68 61  tion sequence ha
d3e0: 73 20 0a 63 68 61 6e 67 65 64 2e 0a 3c 2f 70 3e  s .changed..</p>
d3f0: 0a 0a 3c 70 3e 49 6e 20 74 68 65 20 66 69 72 73  ..<p>In the firs
d400: 74 20 66 6f 72 6d 2c 20 61 6c 6c 20 69 6e 64 69  t form, all indi
d410: 63 65 73 20 69 6e 20 61 6c 6c 20 61 74 74 61 63  ces in all attac
d420: 68 65 64 20 64 61 74 61 62 61 73 65 73 20 74 68  hed databases th
d430: 61 74 20 75 73 65 20 74 68 65 0a 6e 61 6d 65 64  at use the.named
d440: 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65   collation seque
d450: 6e 63 65 20 61 72 65 20 72 65 63 72 65 61 74 65  nce are recreate
d460: 64 2e 20 49 6e 20 74 68 65 20 73 65 63 6f 6e 64  d. In the second
d470: 20 66 6f 72 6d 2c 20 69 66 20 0a 3c 69 3e 5b 64   form, if .<i>[d
d480: 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e 5d 74 61  atabase-name.]ta
d490: 62 6c 65 2f 69 6e 64 65 78 2d 6e 61 6d 65 3c 2f  ble/index-name</
d4a0: 69 3e 20 69 64 65 6e 74 69 66 69 65 73 20 61 20  i> identifies a 
d4b0: 74 61 62 6c 65 2c 20 74 68 65 6e 20 61 6c 6c 20  table, then all 
d4c0: 69 6e 64 69 63 65 73 0a 61 73 73 6f 63 69 61 74  indices.associat
d4d0: 65 64 20 77 69 74 68 20 74 68 65 20 74 61 62 6c  ed with the tabl
d4e0: 65 20 61 72 65 20 72 65 62 75 69 6c 74 2e 20 49  e are rebuilt. I
d4f0: 66 20 61 6e 20 69 6e 64 65 78 20 69 73 20 69 64  f an index is id
d500: 65 6e 74 69 66 69 65 64 2c 20 74 68 65 6e 20 6f  entified, then o
d510: 6e 6c 79 0a 74 68 69 73 20 73 70 65 63 69 66 69  nly.this specifi
d520: 63 20 69 6e 64 65 78 20 69 73 20 64 65 6c 65 74  c index is delet
d530: 65 64 20 61 6e 64 20 72 65 63 72 65 61 74 65 64  ed and recreated
d540: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 6e 6f  ..</p>..<p>If no
d550: 20 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d   <i>database-nam
d560: 65 3c 2f 69 3e 20 69 73 20 73 70 65 63 69 66 69  e</i> is specifi
d570: 65 64 20 61 6e 64 20 74 68 65 72 65 20 65 78 69  ed and there exi
d580: 73 74 73 20 62 6f 74 68 20 61 20 74 61 62 6c 65  sts both a table
d590: 20 6f 72 0a 69 6e 64 65 78 20 61 6e 64 20 61 20   or.index and a 
d5a0: 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e  collation sequen
d5b0: 63 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  ce of the specif
d5c0: 69 65 64 20 6e 61 6d 65 2c 20 74 68 65 6e 20 69  ied name, then i
d5d0: 6e 64 69 63 65 73 20 61 73 73 6f 63 69 61 74 65  ndices associate
d5e0: 64 0a 77 69 74 68 20 74 68 65 20 63 6f 6c 6c 61  d.with the colla
d5f0: 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 6f 6e  tion sequence on
d600: 6c 79 20 61 72 65 20 72 65 63 6f 6e 73 74 72 75  ly are reconstru
d610: 63 74 65 64 2e 20 54 68 69 73 20 61 6d 62 69 67  cted. This ambig
d620: 75 69 74 79 20 6d 61 79 20 62 65 0a 64 69 73 70  uity may be.disp
d630: 65 6c 6c 65 64 20 62 79 20 61 6c 77 61 79 73 20  elled by always 
d640: 73 70 65 63 69 66 79 69 6e 67 20 61 20 3c 69 3e  specifying a <i>
d650: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69  database-name</i
d660: 3e 20 77 68 65 6e 20 72 65 69 6e 64 65 78 69 6e  > when reindexin
d670: 67 20 61 0a 73 70 65 63 69 66 69 63 20 74 61 62  g a.specific tab
d680: 6c 65 20 6f 72 20 69 6e 64 65 78 2e 0a 7d 0a 0a  le or index..}..
d690: 53 65 63 74 69 6f 6e 20 52 45 50 4c 41 43 45 20  Section REPLACE 
d6a0: 72 65 70 6c 61 63 65 0a 0a 53 79 6e 74 61 78 20  replace..Syntax 
d6b0: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
d6c0: 7b 0a 52 45 50 4c 41 43 45 20 49 4e 54 4f 20 5b  {.REPLACE INTO [
d6d0: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
d6e0: 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20  .] <table-name> 
d6f0: 5b 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e  [( <column-list>
d700: 20 29 5d 20 56 41 4c 55 45 53 20 28 20 3c 76 61   )] VALUES ( <va
d710: 6c 75 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 52 45  lue-list> ) |.RE
d720: 50 4c 41 43 45 20 49 4e 54 4f 20 5b 3c 64 61 74  PLACE INTO [<dat
d730: 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c  abase-name> .] <
d740: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c  table-name> [( <
d750: 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20  column-list> )] 
d760: 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e  <select-statemen
d770: 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  t>.}..puts {.<p>
d780: 54 68 65 20 52 45 50 4c 41 43 45 20 63 6f 6d 6d  The REPLACE comm
d790: 61 6e 64 20 69 73 20 61 6e 20 61 6c 69 61 73 20  and is an alias 
d7a0: 66 6f 72 20 74 68 65 20 22 49 4e 53 45 52 54 20  for the "INSERT 
d7b0: 4f 52 20 52 45 50 4c 41 43 45 22 20 76 61 72 69  OR REPLACE" vari
d7c0: 61 6e 74 0a 6f 66 20 74 68 65 20 3c 61 20 68 72  ant.of the <a hr
d7d0: 65 66 3d 22 23 69 6e 73 65 72 74 22 3e 49 4e 53  ef="#insert">INS
d7e0: 45 52 54 3c 2f 61 3e 20 63 6f 6d 6d 61 6e 64 2e  ERT</a> command.
d7f0: 20 20 54 68 69 73 20 61 6c 69 61 73 20 69 73 20    This alias is 
d800: 70 72 6f 76 69 64 65 64 20 66 6f 72 0a 63 6f 6d  provided for.com
d810: 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20  patibility with 
d820: 4d 79 53 51 4c 2e 20 20 53 65 65 20 74 68 65 20  MySQL.  See the 
d830: 0a 3c 61 20 68 72 65 66 3d 22 23 69 6e 73 65 72  .<a href="#inser
d840: 74 22 3e 49 4e 53 45 52 54 3c 2f 61 3e 20 63 6f  t">INSERT</a> co
d850: 6d 6d 61 6e 64 20 64 6f 63 75 6d 65 6e 74 61 74  mmand documentat
d860: 69 6f 6e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e  ion for addition
d870: 61 6c 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c  al.information.<
d880: 2f 70 3e 20 20 0a 7d 0a 0a 0a 53 65 63 74 69 6f  /p>  .}...Sectio
d890: 6e 20 53 45 4c 45 43 54 20 73 65 6c 65 63 74 0a  n SELECT select.
d8a0: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
d8b0: 74 65 6d 65 6e 74 7d 20 7b 0a 53 45 4c 45 43 54  tement} {.SELECT
d8c0: 20 5b 41 4c 4c 20 7c 20 44 49 53 54 49 4e 43 54   [ALL | DISTINCT
d8d0: 5d 20 3c 72 65 73 75 6c 74 3e 20 5b 46 52 4f 4d  ] <result> [FROM
d8e0: 20 3c 74 61 62 6c 65 2d 6c 69 73 74 3e 5d 0a 5b   <table-list>].[
d8f0: 57 48 45 52 45 20 3c 65 78 70 72 3e 5d 0a 5b 47  WHERE <expr>].[G
d900: 52 4f 55 50 20 42 59 20 3c 65 78 70 72 2d 6c 69  ROUP BY <expr-li
d910: 73 74 3e 5d 0a 5b 48 41 56 49 4e 47 20 3c 65 78  st>].[HAVING <ex
d920: 70 72 3e 5d 0a 5b 3c 63 6f 6d 70 6f 75 6e 64 2d  pr>].[<compound-
d930: 6f 70 3e 20 3c 73 65 6c 65 63 74 3e 5d 2a 0a 5b  op> <select>]*.[
d940: 4f 52 44 45 52 20 42 59 20 3c 73 6f 72 74 2d 65  ORDER BY <sort-e
d950: 78 70 72 2d 6c 69 73 74 3e 5d 0a 5b 4c 49 4d 49  xpr-list>].[LIMI
d960: 54 20 3c 69 6e 74 65 67 65 72 3e 20 5b 4c 50 20  T <integer> [LP 
d970: 4f 46 46 53 45 54 20 7c 20 2c 20 52 50 20 3c 69  OFFSET | , RP <i
d980: 6e 74 65 67 65 72 3e 5d 5d 0a 7d 20 7b 72 65 73  nteger>]].} {res
d990: 75 6c 74 7d 20 7b 0a 3c 72 65 73 75 6c 74 2d 63  ult} {.<result-c
d9a0: 6f 6c 75 6d 6e 3e 20 5b 2c 20 3c 72 65 73 75 6c  olumn> [, <resul
d9b0: 74 2d 63 6f 6c 75 6d 6e 3e 5d 2a 0a 7d 20 7b 72  t-column>]*.} {r
d9c0: 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 7d 20 7b 0a  esult-column} {.
d9d0: 53 54 41 52 20 7c 20 3c 74 61 62 6c 65 2d 6e 61  STAR | <table-na
d9e0: 6d 65 3e 20 2e 20 53 54 41 52 20 7c 20 3c 65 78  me> . STAR | <ex
d9f0: 70 72 3e 20 5b 20 5b 41 53 5d 20 3c 73 74 72 69  pr> [ [AS] <stri
da00: 6e 67 3e 20 5d 0a 7d 20 7b 74 61 62 6c 65 2d 6c  ng> ].} {table-l
da10: 69 73 74 7d 20 7b 0a 3c 74 61 62 6c 65 3e 20 5b  ist} {.<table> [
da20: 3c 6a 6f 69 6e 2d 6f 70 3e 20 3c 74 61 62 6c 65  <join-op> <table
da30: 3e 20 3c 6a 6f 69 6e 2d 61 72 67 73 3e 5d 2a 0a  > <join-args>]*.
da40: 7d 20 7b 74 61 62 6c 65 7d 20 7b 0a 3c 74 61 62  } {table} {.<tab
da50: 6c 65 2d 6e 61 6d 65 3e 20 5b 41 53 20 3c 61 6c  le-name> [AS <al
da60: 69 61 73 3e 5d 20 7c 0a 28 20 3c 73 65 6c 65 63  ias>] |.( <selec
da70: 74 3e 20 29 20 5b 41 53 20 3c 61 6c 69 61 73 3e  t> ) [AS <alias>
da80: 5d 0a 7d 20 7b 6a 6f 69 6e 2d 6f 70 7d 20 7b 0a  ].} {join-op} {.
da90: 2c 20 7c 20 5b 4e 41 54 55 52 41 4c 5d 20 5b 4c  , | [NATURAL] [L
daa0: 45 46 54 20 7c 20 52 49 47 48 54 20 7c 20 46 55  EFT | RIGHT | FU
dab0: 4c 4c 5d 20 5b 4f 55 54 45 52 20 7c 20 49 4e 4e  LL] [OUTER | INN
dac0: 45 52 20 7c 20 43 52 4f 53 53 5d 20 4a 4f 49 4e  ER | CROSS] JOIN
dad0: 0a 7d 20 7b 6a 6f 69 6e 2d 61 72 67 73 7d 20 7b  .} {join-args} {
dae0: 0a 5b 4f 4e 20 3c 65 78 70 72 3e 5d 20 5b 55 53  .[ON <expr>] [US
daf0: 49 4e 47 20 28 20 3c 69 64 2d 6c 69 73 74 3e 20  ING ( <id-list> 
db00: 29 5d 0a 7d 20 7b 73 6f 72 74 2d 65 78 70 72 2d  )].} {sort-expr-
db10: 6c 69 73 74 7d 20 7b 0a 3c 65 78 70 72 3e 20 5b  list} {.<expr> [
db20: 3c 73 6f 72 74 2d 6f 72 64 65 72 3e 5d 20 5b 2c  <sort-order>] [,
db30: 20 3c 65 78 70 72 3e 20 5b 3c 73 6f 72 74 2d 6f   <expr> [<sort-o
db40: 72 64 65 72 3e 5d 5d 2a 0a 7d 20 7b 73 6f 72 74  rder>]]*.} {sort
db50: 2d 6f 72 64 65 72 7d 20 7b 0a 5b 20 43 4f 4c 4c  -order} {.[ COLL
db60: 41 54 45 20 3c 63 6f 6c 6c 61 74 69 6f 6e 2d 6e  ATE <collation-n
db70: 61 6d 65 3e 20 5d 20 5b 20 41 53 43 20 7c 20 44  ame> ] [ ASC | D
db80: 45 53 43 20 5d 0a 7d 20 7b 63 6f 6d 70 6f 75 6e  ESC ].} {compoun
db90: 64 5f 6f 70 7d 20 7b 0a 55 4e 49 4f 4e 20 7c 20  d_op} {.UNION | 
dba0: 55 4e 49 4f 4e 20 41 4c 4c 20 7c 20 49 4e 54 45  UNION ALL | INTE
dbb0: 52 53 45 43 54 20 7c 20 45 58 43 45 50 54 0a 7d  RSECT | EXCEPT.}
dbc0: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20  ..puts {.<p>The 
dbd0: 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
dbe0: 20 69 73 20 75 73 65 64 20 74 6f 20 71 75 65 72   is used to quer
dbf0: 79 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20  y the database. 
dc00: 20 54 68 65 0a 72 65 73 75 6c 74 20 6f 66 20 61   The.result of a
dc10: 20 53 45 4c 45 43 54 20 69 73 20 7a 65 72 6f 20   SELECT is zero 
dc20: 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20  or more rows of 
dc30: 64 61 74 61 20 77 68 65 72 65 20 65 61 63 68 20  data where each 
dc40: 72 6f 77 0a 68 61 73 20 61 20 66 69 78 65 64 20  row.has a fixed 
dc50: 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
dc60: 73 2e 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  s.  The number o
dc70: 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  f columns in the
dc80: 0a 72 65 73 75 6c 74 20 69 73 20 73 70 65 63 69  .result is speci
dc90: 66 69 65 64 20 62 79 20 74 68 65 20 65 78 70 72  fied by the expr
dca0: 65 73 73 69 6f 6e 20 6c 69 73 74 20 69 6e 20 62  ession list in b
dcb0: 65 74 77 65 65 6e 20 74 68 65 0a 53 45 4c 45 43  etween the.SELEC
dcc0: 54 20 61 6e 64 20 46 52 4f 4d 20 6b 65 79 77 6f  T and FROM keywo
dcd0: 72 64 73 2e 20 20 41 6e 79 20 61 72 62 69 74 72  rds.  Any arbitr
dce0: 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e 20 63  ary expression c
dcf0: 61 6e 20 62 65 20 75 73 65 64 0a 61 73 20 61 20  an be used.as a 
dd00: 72 65 73 75 6c 74 2e 20 20 49 66 20 61 20 72 65  result.  If a re
dd10: 73 75 6c 74 20 65 78 70 72 65 73 73 69 6f 6e 20  sult expression 
dd20: 69 73 20 7d 0a 70 75 74 73 20 22 5b 4f 70 65 72  is }.puts "[Oper
dd30: 61 74 6f 72 20 2a 5d 20 74 68 65 6e 20 61 6c 6c  ator *] then all
dd40: 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 6c 6c 20   columns of all 
dd50: 74 61 62 6c 65 73 20 61 72 65 20 73 75 62 73 74  tables are subst
dd60: 69 74 75 74 65 64 22 0a 70 75 74 73 20 7b 66 6f  ituted".puts {fo
dd70: 72 20 74 68 61 74 20 6f 6e 65 20 65 78 70 72 65  r that one expre
dd80: 73 73 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 65  ssion.  If the e
dd90: 78 70 72 65 73 73 69 6f 6e 20 69 73 20 74 68 65  xpression is the
dda0: 20 6e 61 6d 65 20 6f 66 7d 0a 70 75 74 73 20 22   name of}.puts "
ddb0: 61 20 74 61 62 6c 65 20 66 6f 6c 6c 6f 77 65 64  a table followed
ddc0: 20 62 79 20 5b 4f 70 65 72 61 74 6f 72 20 2e 2a   by [Operator .*
ddd0: 5d 20 74 68 65 6e 20 74 68 65 20 72 65 73 75 6c  ] then the resul
dde0: 74 20 69 73 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73  t is all columns
ddf0: 22 0a 70 75 74 73 20 7b 69 6e 20 74 68 61 74 20  ".puts {in that 
de00: 6f 6e 65 20 74 61 62 6c 65 2e 3c 2f 70 3e 0a 0a  one table.</p>..
de10: 3c 70 3e 54 68 65 20 44 49 53 54 49 4e 43 54 20  <p>The DISTINCT 
de20: 6b 65 79 77 6f 72 64 20 63 61 75 73 65 73 20 61  keyword causes a
de30: 20 73 75 62 73 65 74 20 6f 66 20 72 65 73 75 6c   subset of resul
de40: 74 20 72 6f 77 73 20 74 6f 20 62 65 20 72 65 74  t rows to be ret
de50: 75 72 6e 65 64 2c 20 0a 69 6e 20 77 68 69 63 68  urned, .in which
de60: 20 65 61 63 68 20 72 65 73 75 6c 74 20 72 6f 77   each result row
de70: 20 69 73 20 64 69 66 66 65 72 65 6e 74 2e 20 20   is different.  
de80: 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61 72 65 20  NULL values are 
de90: 6e 6f 74 20 74 72 65 61 74 65 64 20 61 73 20 0a  not treated as .
dea0: 64 69 73 74 69 6e 63 74 20 66 72 6f 6d 20 65 61  distinct from ea
deb0: 63 68 20 6f 74 68 65 72 2e 20 20 54 68 65 20 64  ch other.  The d
dec0: 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20  efault behavior 
ded0: 69 73 20 74 68 61 74 20 61 6c 6c 20 72 65 73 75  is that all resu
dee0: 6c 74 20 72 6f 77 73 20 0a 62 65 20 72 65 74 75  lt rows .be retu
def0: 72 6e 65 64 2c 20 77 68 69 63 68 20 63 61 6e 20  rned, which can 
df00: 62 65 20 6d 61 64 65 20 65 78 70 6c 69 63 69 74  be made explicit
df10: 20 77 69 74 68 20 74 68 65 20 6b 65 79 77 6f 72   with the keywor
df20: 64 20 41 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  d ALL.</p>..<p>T
df30: 68 65 20 71 75 65 72 79 20 69 73 20 65 78 65 63  he query is exec
df40: 75 74 65 64 20 61 67 61 69 6e 73 74 20 6f 6e 65  uted against one
df50: 20 6f 72 20 6d 6f 72 65 20 74 61 62 6c 65 73 20   or more tables 
df60: 73 70 65 63 69 66 69 65 64 20 61 66 74 65 72 0a  specified after.
df70: 74 68 65 20 46 52 4f 4d 20 6b 65 79 77 6f 72 64  the FROM keyword
df80: 2e 20 20 49 66 20 6d 75 6c 74 69 70 6c 65 20 74  .  If multiple t
df90: 61 62 6c 65 73 20 6e 61 6d 65 73 20 61 72 65 20  ables names are 
dfa0: 73 65 70 61 72 61 74 65 64 20 62 79 20 63 6f 6d  separated by com
dfb0: 6d 61 73 2c 0a 74 68 65 6e 20 74 68 65 20 71 75  mas,.then the qu
dfc0: 65 72 79 20 69 73 20 61 67 61 69 6e 73 74 20 74  ery is against t
dfd0: 68 65 20 63 72 6f 73 73 20 6a 6f 69 6e 20 6f 66  he cross join of
dfe0: 20 74 68 65 20 76 61 72 69 6f 75 73 20 74 61 62   the various tab
dff0: 6c 65 73 2e 0a 54 68 65 20 66 75 6c 6c 20 53 51  les..The full SQ
e000: 4c 2d 39 32 20 6a 6f 69 6e 20 73 79 6e 74 61 78  L-92 join syntax
e010: 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 75 73 65   can also be use
e020: 64 20 74 6f 20 73 70 65 63 69 66 79 20 6a 6f 69  d to specify joi
e030: 6e 73 2e 0a 41 20 73 75 62 2d 71 75 65 72 79 0a  ns..A sub-query.
e040: 69 6e 20 70 61 72 65 6e 74 68 65 73 65 73 20 6d  in parentheses m
e050: 61 79 20 62 65 20 73 75 62 73 74 69 74 75 74 65  ay be substitute
e060: 64 20 66 6f 72 20 61 6e 79 20 74 61 62 6c 65 20  d for any table 
e070: 6e 61 6d 65 20 69 6e 20 74 68 65 20 46 52 4f 4d  name in the FROM
e080: 20 63 6c 61 75 73 65 2e 0a 54 68 65 20 65 6e 74   clause..The ent
e090: 69 72 65 20 46 52 4f 4d 20 63 6c 61 75 73 65 20  ire FROM clause 
e0a0: 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64 2c 20  may be omitted, 
e0b0: 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68  in which case th
e0c0: 65 20 72 65 73 75 6c 74 20 69 73 20 61 0a 73 69  e result is a.si
e0d0: 6e 67 6c 65 20 72 6f 77 20 63 6f 6e 73 69 73 74  ngle row consist
e0e0: 69 6e 67 20 6f 66 20 74 68 65 20 76 61 6c 75 65  ing of the value
e0f0: 73 20 6f 66 20 74 68 65 20 65 78 70 72 65 73 73  s of the express
e100: 69 6f 6e 20 6c 69 73 74 2e 0a 3c 2f 70 3e 0a 0a  ion list..</p>..
e110: 3c 70 3e 54 68 65 20 57 48 45 52 45 20 63 6c 61  <p>The WHERE cla
e120: 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64 20  use can be used 
e130: 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e 75 6d  to limit the num
e140: 62 65 72 20 6f 66 20 72 6f 77 73 20 6f 76 65 72  ber of rows over
e150: 0a 77 68 69 63 68 20 74 68 65 20 71 75 65 72 79  .which the query
e160: 20 6f 70 65 72 61 74 65 73 2e 3c 2f 70 3e 0a 0a   operates.</p>..
e170: 3c 70 3e 54 68 65 20 47 52 4f 55 50 20 42 59 20  <p>The GROUP BY 
e180: 63 6c 61 75 73 65 73 20 63 61 75 73 65 73 20 6f  clauses causes o
e190: 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20  ne or more rows 
e1a0: 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 74 6f  of the result to
e1b0: 0a 62 65 20 63 6f 6d 62 69 6e 65 64 20 69 6e 74  .be combined int
e1c0: 6f 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 6f  o a single row o
e1d0: 66 20 6f 75 74 70 75 74 2e 20 20 54 68 69 73 20  f output.  This 
e1e0: 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75 73  is especially us
e1f0: 65 66 75 6c 0a 77 68 65 6e 20 74 68 65 20 72 65  eful.when the re
e200: 73 75 6c 74 20 63 6f 6e 74 61 69 6e 73 20 61 67  sult contains ag
e210: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
e220: 73 2e 20 20 54 68 65 20 65 78 70 72 65 73 73 69  s.  The expressi
e230: 6f 6e 73 20 69 6e 0a 74 68 65 20 47 52 4f 55 50  ons in.the GROUP
e240: 20 42 59 20 63 6c 61 75 73 65 20 64 6f 20 3c 65   BY clause do <e
e250: 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 68 61 76 65 20  m>not</em> have 
e260: 74 6f 20 62 65 20 65 78 70 72 65 73 73 69 6f 6e  to be expression
e270: 73 20 74 68 61 74 0a 61 70 70 65 61 72 20 69 6e  s that.appear in
e280: 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20 54 68   the result.  Th
e290: 65 20 48 41 56 49 4e 47 20 63 6c 61 75 73 65 20  e HAVING clause 
e2a0: 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 57 48  is similar to WH
e2b0: 45 52 45 20 65 78 63 65 70 74 0a 74 68 61 74 20  ERE except.that 
e2c0: 48 41 56 49 4e 47 20 61 70 70 6c 69 65 73 20 61  HAVING applies a
e2d0: 66 74 65 72 20 67 72 6f 75 70 69 6e 67 20 68 61  fter grouping ha
e2e0: 73 20 6f 63 63 75 72 72 65 64 2e 20 20 54 68 65  s occurred.  The
e2f0: 20 48 41 56 49 4e 47 20 65 78 70 72 65 73 73 69   HAVING expressi
e300: 6f 6e 0a 6d 61 79 20 72 65 66 65 72 20 74 6f 20  on.may refer to 
e310: 76 61 6c 75 65 73 2c 20 65 76 65 6e 20 61 67 67  values, even agg
e320: 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
e330: 2c 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20 69  , that are not i
e340: 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70  n the result.</p
e350: 3e 0a 0a 3c 70 3e 54 68 65 20 4f 52 44 45 52 20  >..<p>The ORDER 
e360: 42 59 20 63 6c 61 75 73 65 20 63 61 75 73 65 73  BY clause causes
e370: 20 74 68 65 20 6f 75 74 70 75 74 20 72 6f 77 73   the output rows
e380: 20 74 6f 20 62 65 20 73 6f 72 74 65 64 2e 20 20   to be sorted.  
e390: 0a 54 68 65 20 61 72 67 75 6d 65 6e 74 20 74 6f  .The argument to
e3a0: 20 4f 52 44 45 52 20 42 59 20 69 73 20 61 20 6c   ORDER BY is a l
e3b0: 69 73 74 20 6f 66 20 65 78 70 72 65 73 73 69 6f  ist of expressio
e3c0: 6e 73 20 74 68 61 74 20 61 72 65 20 75 73 65 64  ns that are used
e3d0: 20 61 73 20 74 68 65 0a 6b 65 79 20 66 6f 72 20   as the.key for 
e3e0: 74 68 65 20 73 6f 72 74 2e 20 20 54 68 65 20 65  the sort.  The e
e3f0: 78 70 72 65 73 73 69 6f 6e 73 20 64 6f 20 6e 6f  xpressions do no
e400: 74 20 68 61 76 65 20 74 6f 20 62 65 20 70 61 72  t have to be par
e410: 74 20 6f 66 20 74 68 65 0a 72 65 73 75 6c 74 20  t of the.result 
e420: 66 6f 72 20 61 20 73 69 6d 70 6c 65 20 53 45 4c  for a simple SEL
e430: 45 43 54 2c 20 62 75 74 20 69 6e 20 61 20 63 6f  ECT, but in a co
e440: 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 65 61  mpound SELECT ea
e450: 63 68 20 73 6f 72 74 0a 65 78 70 72 65 73 73 69  ch sort.expressi
e460: 6f 6e 20 6d 75 73 74 20 65 78 61 63 74 6c 79 20  on must exactly 
e470: 6d 61 74 63 68 20 6f 6e 65 20 6f 66 20 74 68 65  match one of the
e480: 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e   result columns.
e490: 20 20 45 61 63 68 0a 73 6f 72 74 20 65 78 70 72    Each.sort expr
e4a0: 65 73 73 69 6f 6e 20 6d 61 79 20 62 65 20 6f 70  ession may be op
e4b0: 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65  tionally followe
e4c0: 64 20 62 79 20 61 20 43 4f 4c 4c 41 54 45 20 6b  d by a COLLATE k
e4d0: 65 79 77 6f 72 64 20 61 6e 64 0a 74 68 65 20 6e  eyword and.the n
e4e0: 61 6d 65 20 6f 66 20 61 20 63 6f 6c 6c 61 74 69  ame of a collati
e4f0: 6e 67 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 64  ng function used
e500: 20 66 6f 72 20 6f 72 64 65 72 69 6e 67 20 74 65   for ordering te
e510: 78 74 20 61 6e 64 2f 6f 72 0a 6b 65 79 77 6f 72  xt and/or.keywor
e520: 64 73 20 41 53 43 20 6f 72 20 44 45 53 43 20 74  ds ASC or DESC t
e530: 6f 20 73 70 65 63 69 66 79 20 74 68 65 20 73 6f  o specify the so
e540: 72 74 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c  rt order.</p>..<
e550: 70 3e 54 68 65 20 4c 49 4d 49 54 20 63 6c 61 75  p>The LIMIT clau
e560: 73 65 20 70 6c 61 63 65 73 20 61 6e 20 75 70 70  se places an upp
e570: 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65 20  er bound on the 
e580: 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 0a 72  number of rows.r
e590: 65 74 75 72 6e 65 64 20 69 6e 20 74 68 65 20 72  eturned in the r
e5a0: 65 73 75 6c 74 2e 20 20 41 20 6e 65 67 61 74 69  esult.  A negati
e5b0: 76 65 20 4c 49 4d 49 54 20 69 6e 64 69 63 61 74  ve LIMIT indicat
e5c0: 65 73 20 6e 6f 20 75 70 70 65 72 20 62 6f 75 6e  es no upper boun
e5d0: 64 2e 0a 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  d..The optional 
e5e0: 4f 46 46 53 45 54 20 66 6f 6c 6c 6f 77 69 6e 67  OFFSET following
e5f0: 20 4c 49 4d 49 54 20 73 70 65 63 69 66 69 65 73   LIMIT specifies
e600: 20 68 6f 77 20 6d 61 6e 79 0a 72 6f 77 73 20 74   how many.rows t
e610: 6f 20 73 6b 69 70 20 61 74 20 74 68 65 20 62 65  o skip at the be
e620: 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 72  ginning of the r
e630: 65 73 75 6c 74 20 73 65 74 2e 0a 49 6e 20 61 20  esult set..In a 
e640: 63 6f 6d 70 6f 75 6e 64 20 71 75 65 72 79 2c 20  compound query, 
e650: 74 68 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65  the LIMIT clause
e660: 20 6d 61 79 20 6f 6e 6c 79 20 61 70 70 65 61 72   may only appear
e670: 20 6f 6e 20 74 68 65 0a 66 69 6e 61 6c 20 53 45   on the.final SE
e680: 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 0a  LECT statement..
e690: 54 68 65 20 6c 69 6d 69 74 20 69 73 20 61 70 70  The limit is app
e6a0: 6c 69 65 64 20 74 6f 20 74 68 65 20 65 6e 74 69  lied to the enti
e6b0: 72 65 20 71 75 65 72 79 20 6e 6f 74 0a 74 6f 20  re query not.to 
e6c0: 74 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20 53  the individual S
e6d0: 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20  ELECT statement 
e6e0: 74 6f 20 77 68 69 63 68 20 69 74 20 69 73 20 61  to which it is a
e6f0: 74 74 61 63 68 65 64 2e 0a 4e 6f 74 65 20 74 68  ttached..Note th
e700: 61 74 20 69 66 20 74 68 65 20 4f 46 46 53 45 54  at if the OFFSET
e710: 20 6b 65 79 77 6f 72 64 20 69 73 20 75 73 65 64   keyword is used
e720: 20 69 6e 20 74 68 65 20 4c 49 4d 49 54 20 63 6c   in the LIMIT cl
e730: 61 75 73 65 2c 20 74 68 65 6e 20 74 68 65 0a 6c  ause, then the.l
e740: 69 6d 69 74 20 69 73 20 74 68 65 20 66 69 72 73  imit is the firs
e750: 74 20 6e 75 6d 62 65 72 20 61 6e 64 20 74 68 65  t number and the
e760: 20 6f 66 66 73 65 74 20 69 73 20 74 68 65 20 73   offset is the s
e770: 65 63 6f 6e 64 20 6e 75 6d 62 65 72 2e 20 20 49  econd number.  I
e780: 66 20 61 0a 63 6f 6d 6d 61 20 69 73 20 75 73 65  f a.comma is use
e790: 64 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65  d instead of the
e7a0: 20 4f 46 46 53 45 54 20 6b 65 79 77 6f 72 64 2c   OFFSET keyword,
e7b0: 20 74 68 65 6e 20 74 68 65 20 6f 66 66 73 65 74   then the offset
e7c0: 20 69 73 20 74 68 65 0a 66 69 72 73 74 20 6e 75   is the.first nu
e7d0: 6d 62 65 72 20 61 6e 64 20 74 68 65 20 6c 69 6d  mber and the lim
e7e0: 69 74 20 69 73 20 74 68 65 20 73 65 63 6f 6e 64  it is the second
e7f0: 20 6e 75 6d 62 65 72 2e 20 20 54 68 69 73 20 73   number.  This s
e800: 65 65 6d 69 6e 67 0a 63 6f 6e 74 72 61 64 69 74  eeming.contradit
e810: 69 6f 6e 20 69 73 20 69 6e 74 65 6e 74 69 6f 6e  ion is intention
e820: 61 6c 20 2d 20 69 74 20 6d 61 78 69 6d 69 7a 65  al - it maximize
e830: 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  s compatibility 
e840: 77 69 74 68 20 6c 65 67 61 63 79 0a 53 51 4c 20  with legacy.SQL 
e850: 64 61 74 61 62 61 73 65 20 73 79 73 74 65 6d 73  database systems
e860: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6d  ..</p>..<p>A com
e870: 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 69 73 20  pound SELECT is 
e880: 66 6f 72 6d 65 64 20 66 72 6f 6d 20 74 77 6f 20  formed from two 
e890: 6f 72 20 6d 6f 72 65 20 73 69 6d 70 6c 65 20 53  or more simple S
e8a0: 45 4c 45 43 54 73 20 63 6f 6e 6e 65 63 74 65 64  ELECTs connected
e8b0: 0a 62 79 20 6f 6e 65 20 6f 66 20 74 68 65 20 6f  .by one of the o
e8c0: 70 65 72 61 74 6f 72 73 20 55 4e 49 4f 4e 2c 20  perators UNION, 
e8d0: 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52  UNION ALL, INTER
e8e0: 53 45 43 54 2c 20 6f 72 20 45 58 43 45 50 54 2e  SECT, or EXCEPT.
e8f0: 20 20 49 6e 0a 61 20 63 6f 6d 70 6f 75 6e 64 20    In.a compound 
e900: 53 45 4c 45 43 54 2c 20 61 6c 6c 20 74 68 65 20  SELECT, all the 
e910: 63 6f 6e 73 74 69 74 75 65 6e 74 20 53 45 4c 45  constituent SELE
e920: 43 54 73 20 6d 75 73 74 20 73 70 65 63 69 66 79  CTs must specify
e930: 20 74 68 65 0a 73 61 6d 65 20 6e 75 6d 62 65 72   the.same number
e940: 20 6f 66 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d   of result colum
e950: 6e 73 2e 20 20 54 68 65 72 65 20 6d 61 79 20 62  ns.  There may b
e960: 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20  e only a single 
e970: 4f 52 44 45 52 20 42 59 0a 63 6c 61 75 73 65 20  ORDER BY.clause 
e980: 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68  at the end of th
e990: 65 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43  e compound SELEC
e9a0: 54 2e 20 20 54 68 65 20 55 4e 49 4f 4e 20 61 6e  T.  The UNION an
e9b0: 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f 70 65 72  d UNION ALL.oper
e9c0: 61 74 6f 72 73 20 63 6f 6d 62 69 6e 65 20 74 68  ators combine th
e9d0: 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65  e results of the
e9e0: 20 53 45 4c 45 43 54 73 20 74 6f 20 74 68 65 20   SELECTs to the 
e9f0: 72 69 67 68 74 20 61 6e 64 20 6c 65 66 74 20 69  right and left i
ea00: 6e 74 6f 0a 61 20 73 69 6e 67 6c 65 20 62 69 67  nto.a single big
ea10: 20 74 61 62 6c 65 2e 20 20 54 68 65 20 64 69 66   table.  The dif
ea20: 66 65 72 65 6e 63 65 20 69 73 20 74 68 61 74 20  ference is that 
ea30: 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c 20 72 65 73  in UNION all res
ea40: 75 6c 74 20 72 6f 77 73 0a 61 72 65 20 64 69 73  ult rows.are dis
ea50: 74 69 6e 63 74 20 77 68 65 72 65 20 69 6e 20 55  tinct where in U
ea60: 4e 49 4f 4e 20 41 4c 4c 20 74 68 65 72 65 20 6d  NION ALL there m
ea70: 61 79 20 62 65 20 64 75 70 6c 69 63 61 74 65 73  ay be duplicates
ea80: 2e 0a 54 68 65 20 49 4e 54 45 52 53 45 43 54 20  ..The INTERSECT 
ea90: 6f 70 65 72 61 74 6f 72 20 74 61 6b 65 73 20 74  operator takes t
eaa0: 68 65 20 69 6e 74 65 72 73 65 63 74 69 6f 6e 20  he intersection 
eab0: 6f 66 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f  of the results o
eac0: 66 20 74 68 65 0a 6c 65 66 74 20 61 6e 64 20 72  f the.left and r
ead0: 69 67 68 74 20 53 45 4c 45 43 54 73 2e 20 20 45  ight SELECTs.  E
eae0: 58 43 45 50 54 20 74 61 6b 65 73 20 74 68 65 20  XCEPT takes the 
eaf0: 72 65 73 75 6c 74 20 6f 66 20 6c 65 66 74 20 53  result of left S
eb00: 45 4c 45 43 54 20 61 66 74 65 72 0a 72 65 6d 6f  ELECT after.remo
eb10: 76 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 73  ving the results
eb20: 20 6f 66 20 74 68 65 20 72 69 67 68 74 20 53 45   of the right SE
eb30: 4c 45 43 54 2e 20 20 57 68 65 6e 20 74 68 72 65  LECT.  When thre
eb40: 65 20 61 72 65 20 6d 6f 72 65 20 53 45 4c 45 43  e are more SELEC
eb50: 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63 74 65 64  Ts.are connected
eb60: 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f 75 6e 64   into a compound
eb70: 2c 20 74 68 65 79 20 67 72 6f 75 70 20 66 72 6f  , they group fro
eb80: 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74 2e  m left to right.
eb90: 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  </p>.}...Section
eba0: 20 55 50 44 41 54 45 20 75 70 64 61 74 65 0a 0a   UPDATE update..
ebb0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
ebc0: 65 6d 65 6e 74 7d 20 7b 0a 55 50 44 41 54 45 20  ement} {.UPDATE 
ebd0: 5b 20 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61  [ OR <conflict-a
ebe0: 6c 67 6f 72 69 74 68 6d 3e 20 5d 20 5b 3c 64 61  lgorithm> ] [<da
ebf0: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20  tabase-name> .] 
ec00: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 53 45 54  <table-name>.SET
ec10: 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 20 5b 2c   <assignment> [,
ec20: 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 5d 2a 0a   <assignment>]*.
ec30: 5b 57 48 45 52 45 20 3c 65 78 70 72 3e 5d 0a 7d  [WHERE <expr>].}
ec40: 20 7b 61 73 73 69 67 6e 6d 65 6e 74 7d 20 7b 0a   {assignment} {.
ec50: 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 3d 20  <column-name> = 
ec60: 3c 65 78 70 72 3e 0a 7d 0a 0a 70 75 74 73 20 7b  <expr>.}..puts {
ec70: 0a 3c 70 3e 54 68 65 20 55 50 44 41 54 45 20 73  .<p>The UPDATE s
ec80: 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73 65 64  tatement is used
ec90: 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 76   to change the v
eca0: 61 6c 75 65 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  alue of columns 
ecb0: 69 6e 20 0a 73 65 6c 65 63 74 65 64 20 72 6f 77  in .selected row
ecc0: 73 20 6f 66 20 61 20 74 61 62 6c 65 2e 20 20 45  s of a table.  E
ecd0: 61 63 68 20 61 73 73 69 67 6e 6d 65 6e 74 20 69  ach assignment i
ece0: 6e 20 61 6e 20 55 50 44 41 54 45 20 73 70 65 63  n an UPDATE spec
ecf0: 69 66 69 65 73 0a 61 20 63 6f 6c 75 6d 6e 20 6e  ifies.a column n
ed00: 61 6d 65 20 74 6f 20 74 68 65 20 6c 65 66 74 20  ame to the left 
ed10: 6f 66 20 74 68 65 20 65 71 75 61 6c 73 20 73 69  of the equals si
ed20: 67 6e 20 61 6e 64 20 61 6e 20 61 72 62 69 74 72  gn and an arbitr
ed30: 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e 0a 74  ary expression.t
ed40: 6f 20 74 68 65 20 72 69 67 68 74 2e 20 20 54 68  o the right.  Th
ed50: 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 6d 61  e expressions ma
ed60: 79 20 75 73 65 20 74 68 65 20 76 61 6c 75 65 73  y use the values
ed70: 20 6f 66 20 6f 74 68 65 72 20 63 6f 6c 75 6d 6e   of other column
ed80: 73 2e 0a 41 6c 6c 20 65 78 70 72 65 73 73 69 6f  s..All expressio
ed90: 6e 73 20 61 72 65 20 65 76 61 6c 75 61 74 65 64  ns are evaluated
eda0: 20 62 65 66 6f 72 65 20 61 6e 79 20 61 73 73 69   before any assi
edb0: 67 6e 6d 65 6e 74 73 20 61 72 65 20 6d 61 64 65  gnments are made
edc0: 2e 0a 41 20 57 48 45 52 45 20 63 6c 61 75 73 65  ..A WHERE clause
edd0: 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
ede0: 72 65 73 74 72 69 63 74 20 77 68 69 63 68 20 72  restrict which r
edf0: 6f 77 73 20 61 72 65 20 75 70 64 61 74 65 64 2e  ows are updated.
ee00: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74  </p>..<p>The opt
ee10: 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63  ional conflict-c
ee20: 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65  lause allows the
ee30: 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f   specification o
ee40: 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65  f an alternative
ee50: 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66  .constraint conf
ee60: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
ee70: 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75 73 65  algorithm to use
ee80: 20 64 75 72 69 6e 67 20 74 68 69 73 20 6f 6e 65   during this one
ee90: 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68   command..See th
eea0: 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64  e section titled
eeb0: 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c  .<a href="#confl
eec0: 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54  ict">ON CONFLICT
eed0: 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f  </a> for additio
eee0: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  nal information.
eef0: 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  </p>.}...Section
ef00: 20 56 41 43 55 55 4d 20 76 61 63 75 75 6d 0a 0a   VACUUM vacuum..
ef10: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
ef20: 65 6d 65 6e 74 7d 20 7b 0a 56 41 43 55 55 4d 20  ement} {.VACUUM 
ef30: 5b 3c 69 6e 64 65 78 2d 6f 72 2d 74 61 62 6c 65  [<index-or-table
ef40: 2d 6e 61 6d 65 3e 5d 0a 7d 0a 0a 70 75 74 73 20  -name>].}..puts 
ef50: 7b 0a 3c 70 3e 54 68 65 20 56 41 43 55 55 4d 20  {.<p>The VACUUM 
ef60: 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20 53 51  command is an SQ
ef70: 4c 69 74 65 20 65 78 74 65 6e 73 69 6f 6e 20 6d  Lite extension m
ef80: 6f 64 65 6c 65 64 20 61 66 74 65 72 20 61 20 73  odeled after a s
ef90: 69 6d 69 6c 61 72 0a 63 6f 6d 6d 61 6e 64 20 66  imilar.command f
efa0: 6f 75 6e 64 20 69 6e 20 50 6f 73 74 67 72 65 53  ound in PostgreS
efb0: 51 4c 2e 20 20 49 66 20 56 41 43 55 55 4d 20 69  QL.  If VACUUM i
efc0: 73 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74  s invoked with t
efd0: 68 65 20 6e 61 6d 65 20 6f 66 20 61 0a 74 61 62  he name of a.tab
efe0: 6c 65 20 6f 72 20 69 6e 64 65 78 20 74 68 65 6e  le or index then
eff0: 20 69 74 20 69 73 20 73 75 70 70 6f 73 65 20 74   it is suppose t
f000: 6f 20 63 6c 65 61 6e 20 75 70 20 74 68 65 20 6e  o clean up the n
f010: 61 6d 65 64 20 74 61 62 6c 65 20 6f 72 20 69 6e  amed table or in
f020: 64 65 78 2e 0a 49 6e 20 76 65 72 73 69 6f 6e 20  dex..In version 
f030: 31 2e 30 20 6f 66 20 53 51 4c 69 74 65 2c 20 74  1.0 of SQLite, t
f040: 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e  he VACUUM comman
f050: 64 20 77 6f 75 6c 64 20 69 6e 76 6f 6b 65 20 0a  d would invoke .
f060: 3c 62 3e 67 64 62 6d 5f 72 65 6f 72 67 61 6e 69  <b>gdbm_reorgani
f070: 7a 65 28 29 3c 2f 62 3e 20 74 6f 20 63 6c 65 61  ze()</b> to clea
f080: 6e 20 75 70 20 74 68 65 20 62 61 63 6b 65 6e 64  n up the backend
f090: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 3c   database file.<
f0a0: 2f 70 3e 0a 0a 3c 70 3e 0a 56 41 43 55 55 4d 20  /p>..<p>.VACUUM 
f0b0: 62 65 63 61 6d 65 20 61 20 6e 6f 2d 6f 70 20 77  became a no-op w
f0c0: 68 65 6e 20 74 68 65 20 47 44 42 4d 20 62 61 63  hen the GDBM bac
f0d0: 6b 65 6e 64 20 77 61 73 20 72 65 6d 6f 76 65 64  kend was removed
f0e0: 20 66 72 6f 6d 0a 53 51 4c 49 54 45 20 69 6e 20   from.SQLITE in 
f0f0: 76 65 72 73 69 6f 6e 20 32 2e 30 2e 30 2e 0a 56  version 2.0.0..V
f100: 41 43 55 55 4d 20 77 61 73 20 72 65 69 6d 70 6c  ACUUM was reimpl
f110: 65 6d 65 6e 74 65 64 20 69 6e 20 76 65 72 73 69  emented in versi
f120: 6f 6e 20 32 2e 38 2e 31 2e 0a 54 68 65 20 69 6e  on 2.8.1..The in
f130: 64 65 78 20 6f 72 20 74 61 62 6c 65 20 6e 61 6d  dex or table nam
f140: 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6e 6f  e argument is no
f150: 77 20 69 67 6e 6f 72 65 64 2e 0a 3c 2f 70 3e 0a  w ignored..</p>.
f160: 0a 3c 70 3e 57 68 65 6e 20 61 6e 20 6f 62 6a 65  .<p>When an obje
f170: 63 74 20 28 74 61 62 6c 65 2c 20 69 6e 64 65 78  ct (table, index
f180: 2c 20 6f 72 20 74 72 69 67 67 65 72 29 20 69 73  , or trigger) is
f190: 20 64 72 6f 70 70 65 64 20 66 72 6f 6d 20 74 68   dropped from th
f1a0: 65 20 0a 64 61 74 61 62 61 73 65 2c 20 69 74 20  e .database, it 
f1b0: 6c 65 61 76 65 73 20 62 65 68 69 6e 64 20 65 6d  leaves behind em
f1c0: 70 74 79 20 73 70 61 63 65 2e 20 20 54 68 69 73  pty space.  This
f1d0: 20 6d 61 6b 65 73 20 74 68 65 20 64 61 74 61 62   makes the datab
f1e0: 61 73 65 20 0a 66 69 6c 65 20 6c 61 72 67 65 72  ase .file larger
f1f0: 20 74 68 61 6e 20 69 74 20 6e 65 65 64 73 20 74   than it needs t
f200: 6f 20 62 65 2c 20 62 75 74 20 63 61 6e 20 73 70  o be, but can sp
f210: 65 65 64 20 75 70 20 69 6e 73 65 72 74 73 2e 20  eed up inserts. 
f220: 20 49 6e 20 74 69 6d 65 20 0a 69 6e 73 65 72 74   In time .insert
f230: 73 20 61 6e 64 20 64 65 6c 65 74 65 73 20 63 61  s and deletes ca
f240: 6e 20 6c 65 61 76 65 20 74 68 65 20 64 61 74 61  n leave the data
f250: 62 61 73 65 20 66 69 6c 65 20 73 74 72 75 63 74  base file struct
f260: 75 72 65 20 66 72 61 67 6d 65 6e 74 65 64 2c 20  ure fragmented, 
f270: 0a 77 68 69 63 68 20 73 6c 6f 77 73 20 64 6f 77  .which slows dow
f280: 6e 20 64 69 73 6b 20 61 63 63 65 73 73 20 74 6f  n disk access to
f290: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
f2a0: 6e 74 65 6e 74 73 2e 0a 0a 54 68 65 20 56 41 43  ntents...The VAC
f2b0: 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 63 6c 65 61  UUM command clea
f2c0: 6e 73 0a 74 68 65 20 6d 61 69 6e 20 64 61 74 61  ns.the main data
f2d0: 62 61 73 65 20 62 79 20 63 6f 70 79 69 6e 67 20  base by copying 
f2e0: 69 74 73 20 63 6f 6e 74 65 6e 74 73 20 74 6f 20  its contents to 
f2f0: 61 20 74 65 6d 70 6f 72 61 72 79 20 64 61 74 61  a temporary data
f300: 62 61 73 65 20 66 69 6c 65 20 61 6e 64 20 0a 72  base file and .r
f310: 65 6c 6f 61 64 69 6e 67 20 74 68 65 20 6f 72 69  eloading the ori
f320: 67 69 6e 61 6c 20 64 61 74 61 62 61 73 65 20 66  ginal database f
f330: 69 6c 65 20 66 72 6f 6d 20 74 68 65 20 63 6f 70  ile from the cop
f340: 79 2e 20 20 54 68 69 73 20 65 6c 69 6d 69 6e 61  y.  This elimina
f350: 74 65 73 20 0a 66 72 65 65 20 70 61 67 65 73 2c  tes .free pages,
f360: 20 20 61 6c 69 67 6e 73 20 74 61 62 6c 65 20 64    aligns table d
f370: 61 74 61 20 74 6f 20 62 65 20 63 6f 6e 74 69 67  ata to be contig
f380: 75 6f 75 73 2c 20 61 6e 64 20 6f 74 68 65 72 77  uous, and otherw
f390: 69 73 65 20 63 6c 65 61 6e 73 20 0a 75 70 20 74  ise cleans .up t
f3a0: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
f3b0: 20 73 74 72 75 63 74 75 72 65 2e 20 49 74 20 69   structure. It i
f3c0: 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74  s not possible t
f3d0: 6f 20 70 65 72 66 6f 72 6d 20 74 68 65 20 73 61  o perform the sa
f3e0: 6d 65 0a 70 72 6f 63 65 73 73 20 6f 6e 20 61 6e  me.process on an
f3f0: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
f400: 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70  se file.</p>..<p
f410: 3e 54 68 69 73 20 63 6f 6d 6d 61 6e 64 20 77 69  >This command wi
f420: 6c 6c 20 66 61 69 6c 20 69 66 20 74 68 65 72 65  ll fail if there
f430: 20 69 73 20 61 6e 20 61 63 74 69 76 65 20 74 72   is an active tr
f440: 61 6e 73 61 63 74 69 6f 6e 2e 20 20 54 68 69 73  ansaction.  This
f450: 20 0a 63 6f 6d 6d 61 6e 64 20 68 61 73 20 6e 6f   .command has no
f460: 20 65 66 66 65 63 74 20 6f 6e 20 61 6e 20 69 6e   effect on an in
f470: 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65  -memory database
f480: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 73 20 6f 66 20  .</p>..<p>As of 
f490: 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33  SQLite version 3
f4a0: 2e 31 2c 20 61 6e 20 61 6c 74 65 72 6e 61 74 69  .1, an alternati
f4b0: 76 65 20 74 6f 20 75 73 69 6e 67 20 74 68 65 20  ve to using the 
f4c0: 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 0a 69  VACUUM command.i
f4d0: 73 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 6d 6f  s auto-vacuum mo
f4e0: 64 65 2c 20 65 6e 61 62 6c 65 64 20 75 73 69 6e  de, enabled usin
f4f0: 67 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d 22  g the .<a href="
f500: 70 72 61 67 6d 61 2e 68 74 6d 6c 23 70 72 61 67  pragma.html#prag
f510: 6d 61 5f 61 75 74 6f 5f 76 61 63 75 75 6d 22 3e  ma_auto_vacuum">
f520: 61 75 74 6f 5f 76 61 63 75 75 6d 20 70 72 61 67  auto_vacuum prag
f530: 6d 61 3c 2f 61 3e 2e 3c 2f 70 3e 0a 7d 0a 0a 23  ma</a>.</p>.}..#
f540: 20 41 20 6c 69 73 74 20 6f 66 20 6b 65 79 77 6f   A list of keywo
f550: 72 64 73 2e 20 20 41 20 61 73 74 65 72 69 73 6b  rds.  A asterisk
f560: 20 6f 63 63 75 72 73 20 61 66 74 65 72 20 74 68   occurs after th
f570: 65 20 6b 65 79 77 6f 72 64 20 69 66 20 69 74 20  e keyword if it 
f580: 69 73 20 6f 6e 0a 23 20 74 68 65 20 66 61 6c 6c  is on.# the fall
f590: 62 61 63 6b 20 6c 69 73 74 2e 0a 23 0a 73 65 74  back list..#.set
f5a0: 20 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20 5b 6c   keyword_list [l
f5b0: 73 6f 72 74 20 7b 0a 20 20 20 41 42 4f 52 54 2a  sort {.   ABORT*
f5c0: 0a 20 20 20 41 46 54 45 52 2a 0a 20 20 20 41 4c  .   AFTER*.   AL
f5d0: 4c 0a 20 20 20 41 4c 54 45 52 0a 20 20 20 41 4e  L.   ALTER.   AN
f5e0: 44 0a 20 20 20 41 53 0a 20 20 20 41 53 43 2a 0a  D.   AS.   ASC*.
f5f0: 20 20 20 41 54 54 41 43 48 2a 0a 20 20 20 41 55     ATTACH*.   AU
f600: 54 4f 49 4e 43 52 45 4d 45 4e 54 0a 20 20 20 42  TOINCREMENT.   B
f610: 45 46 4f 52 45 2a 0a 20 20 20 42 45 47 49 4e 2a  EFORE*.   BEGIN*
f620: 0a 20 20 20 42 45 54 57 45 45 4e 0a 20 20 20 42  .   BETWEEN.   B
f630: 59 0a 20 20 20 43 41 53 43 41 44 45 2a 0a 20 20  Y.   CASCADE*.  
f640: 20 43 41 53 45 0a 20 20 20 43 48 45 43 4b 0a 20   CASE.   CHECK. 
f650: 20 20 43 4f 4c 4c 41 54 45 0a 20 20 20 43 4f 4d    COLLATE.   COM
f660: 4d 49 54 0a 20 20 20 43 4f 4e 46 4c 49 43 54 2a  MIT.   CONFLICT*
f670: 0a 20 20 20 43 4f 4e 53 54 52 41 49 4e 54 0a 20  .   CONSTRAINT. 
f680: 20 20 43 52 45 41 54 45 0a 20 20 20 43 52 4f 53    CREATE.   CROS
f690: 53 0a 20 20 20 43 55 52 52 45 4e 54 5f 44 41 54  S.   CURRENT_DAT
f6a0: 45 2a 0a 20 20 20 43 55 52 52 45 4e 54 5f 54 49  E*.   CURRENT_TI
f6b0: 4d 45 2a 0a 20 20 20 43 55 52 52 45 4e 54 5f 54  ME*.   CURRENT_T
f6c0: 49 4d 45 53 54 41 4d 50 2a 0a 20 20 20 44 41 54  IMESTAMP*.   DAT
f6d0: 41 42 41 53 45 2a 0a 20 20 20 44 45 46 41 55 4c  ABASE*.   DEFAUL
f6e0: 54 0a 20 20 20 44 45 46 45 52 52 45 44 2a 0a 20  T.   DEFERRED*. 
f6f0: 20 20 44 45 46 45 52 52 41 42 4c 45 0a 20 20 20    DEFERRABLE.   
f700: 44 45 4c 45 54 45 0a 20 20 20 44 45 53 43 2a 0a  DELETE.   DESC*.
f710: 20 20 20 44 45 54 41 43 48 2a 0a 20 20 20 44 49     DETACH*.   DI
f720: 53 54 49 4e 43 54 0a 20 20 20 44 52 4f 50 0a 20  STINCT.   DROP. 
f730: 20 20 45 4e 44 2a 0a 20 20 20 45 41 43 48 2a 0a    END*.   EACH*.
f740: 20 20 20 45 4c 53 45 0a 20 20 20 45 53 43 41 50     ELSE.   ESCAP
f750: 45 0a 20 20 20 45 58 43 45 50 54 0a 20 20 20 45  E.   EXCEPT.   E
f760: 58 43 4c 55 53 49 56 45 2a 0a 20 20 20 45 58 50  XCLUSIVE*.   EXP
f770: 4c 41 49 4e 2a 0a 20 20 20 46 41 49 4c 2a 0a 20  LAIN*.   FAIL*. 
f780: 20 20 46 4f 52 2a 0a 20 20 20 46 4f 52 45 49 47    FOR*.   FOREIG
f790: 4e 0a 20 20 20 46 52 4f 4d 0a 20 20 20 46 55 4c  N.   FROM.   FUL
f7a0: 4c 0a 20 20 20 47 4c 4f 42 2a 0a 20 20 20 47 52  L.   GLOB*.   GR
f7b0: 4f 55 50 0a 20 20 20 48 41 56 49 4e 47 0a 20 20  OUP.   HAVING.  
f7c0: 20 49 47 4e 4f 52 45 2a 0a 20 20 20 49 4d 4d 45   IGNORE*.   IMME
f7d0: 44 49 41 54 45 2a 0a 20 20 20 49 4e 0a 20 20 20  DIATE*.   IN.   
f7e0: 49 4e 44 45 58 0a 20 20 20 49 4e 49 54 49 41 4c  INDEX.   INITIAL
f7f0: 4c 59 2a 0a 20 20 20 49 4e 4e 45 52 0a 20 20 20  LY*.   INNER.   
f800: 49 4e 53 45 52 54 0a 20 20 20 49 4e 53 54 45 41  INSERT.   INSTEA
f810: 44 2a 0a 20 20 20 49 4e 54 45 52 53 45 43 54 0a  D*.   INTERSECT.
f820: 20 20 20 49 4e 54 4f 0a 20 20 20 49 53 0a 20 20     INTO.   IS.  
f830: 20 49 53 4e 55 4c 4c 0a 20 20 20 4a 4f 49 4e 0a   ISNULL.   JOIN.
f840: 20 20 20 4b 45 59 2a 0a 20 20 20 4c 45 46 54 0a     KEY*.   LEFT.
f850: 20 20 20 4c 49 4b 45 2a 0a 20 20 20 4c 49 4d 49     LIKE*.   LIMI
f860: 54 0a 20 20 20 4d 41 54 43 48 2a 0a 20 20 20 4e  T.   MATCH*.   N
f870: 41 54 55 52 41 4c 0a 20 20 20 4e 4f 54 0a 20 20  ATURAL.   NOT.  
f880: 20 4e 4f 54 4e 55 4c 4c 0a 20 20 20 4e 55 4c 4c   NOTNULL.   NULL
f890: 0a 20 20 20 4f 46 2a 0a 20 20 20 4f 46 46 53 45  .   OF*.   OFFSE
f8a0: 54 2a 0a 20 20 20 4f 4e 0a 20 20 20 4f 52 0a 20  T*.   ON.   OR. 
f8b0: 20 20 4f 52 44 45 52 0a 20 20 20 4f 55 54 45 52    ORDER.   OUTER
f8c0: 0a 20 20 20 50 52 41 47 4d 41 2a 0a 20 20 20 50  .   PRAGMA*.   P
f8d0: 52 49 4d 41 52 59 0a 20 20 20 52 41 49 53 45 2a  RIMARY.   RAISE*
f8e0: 0a 20 20 20 52 45 46 45 52 45 4e 43 45 53 0a 20  .   REFERENCES. 
f8f0: 20 20 52 45 49 4e 44 45 58 2a 0a 20 20 20 52 45    REINDEX*.   RE
f900: 4e 41 4d 45 2a 0a 20 20 20 52 45 50 4c 41 43 45  NAME*.   REPLACE
f910: 2a 0a 20 20 20 52 45 53 54 52 49 43 54 2a 0a 20  *.   RESTRICT*. 
f920: 20 20 52 49 47 48 54 0a 20 20 20 52 4f 4c 4c 42    RIGHT.   ROLLB
f930: 41 43 4b 0a 20 20 20 52 4f 57 2a 0a 20 20 20 53  ACK.   ROW*.   S
f940: 45 4c 45 43 54 0a 20 20 20 53 45 54 0a 20 20 20  ELECT.   SET.   
f950: 53 54 41 54 45 4d 45 4e 54 2a 0a 20 20 20 54 41  STATEMENT*.   TA
f960: 42 4c 45 0a 20 20 20 54 45 4d 50 2a 0a 20 20 20  BLE.   TEMP*.   
f970: 54 45 4d 50 4f 52 41 52 59 2a 0a 20 20 20 54 48  TEMPORARY*.   TH
f980: 45 4e 0a 20 20 20 54 4f 0a 20 20 20 54 52 41 4e  EN.   TO.   TRAN
f990: 53 41 43 54 49 4f 4e 0a 20 20 20 54 52 49 47 47  SACTION.   TRIGG
f9a0: 45 52 2a 0a 20 20 20 55 4e 49 4f 4e 0a 20 20 20  ER*.   UNION.   
f9b0: 55 4e 49 51 55 45 0a 20 20 20 55 50 44 41 54 45  UNIQUE.   UPDATE
f9c0: 0a 20 20 20 55 53 49 4e 47 0a 20 20 20 56 41 43  .   USING.   VAC
f9d0: 55 55 4d 2a 0a 20 20 20 56 41 4c 55 45 53 0a 20  UUM*.   VALUES. 
f9e0: 20 20 56 49 45 57 2a 0a 20 20 20 57 48 45 4e 0a    VIEW*.   WHEN.
f9f0: 20 20 20 57 48 45 52 45 0a 7d 5d 0a 0a 0a 0a 53     WHERE.}]....S
fa00: 65 63 74 69 6f 6e 20 7b 53 51 4c 69 74 65 20 6b  ection {SQLite k
fa10: 65 79 77 6f 72 64 73 7d 20 6b 65 79 77 6f 72 64  eywords} keyword
fa20: 73 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  s..puts {.<p>The
fa30: 20 53 51 4c 20 73 74 61 6e 64 61 72 64 20 73 70   SQL standard sp
fa40: 65 63 69 66 69 65 73 20 61 20 68 75 67 65 20 6e  ecifies a huge n
fa50: 75 6d 62 65 72 20 6f 66 20 6b 65 79 77 6f 72 64  umber of keyword
fa60: 73 20 77 68 69 63 68 20 6d 61 79 20 6e 6f 74 0a  s which may not.
fa70: 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20 6e  be used as the n
fa80: 61 6d 65 73 20 6f 66 20 74 61 62 6c 65 73 2c 20  ames of tables, 
fa90: 69 6e 64 69 63 65 73 2c 20 63 6f 6c 75 6d 6e 73  indices, columns
faa0: 2c 20 6f 72 20 64 61 74 61 62 61 73 65 73 2e 20  , or databases. 
fab0: 20 54 68 65 0a 6c 69 73 74 20 69 73 20 73 6f 20   The.list is so 
fac0: 6c 6f 6e 67 20 74 68 61 74 20 66 65 77 20 70 65  long that few pe
fad0: 6f 70 6c 65 20 63 61 6e 20 72 65 6d 65 6d 62 65  ople can remembe
fae0: 72 20 74 68 65 6d 20 61 6c 6c 2e 20 20 46 6f 72  r them all.  For
faf0: 20 6d 6f 73 74 20 53 51 4c 0a 63 6f 64 65 2c 20   most SQL.code, 
fb00: 79 6f 75 72 20 73 61 66 65 73 74 20 62 65 74 20  your safest bet 
fb10: 69 73 20 74 6f 20 6e 65 76 65 72 20 75 73 65 20  is to never use 
fb20: 61 6e 79 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67  any English lang
fb30: 75 61 67 65 20 77 6f 72 64 20 61 73 20 74 68 65  uage word as the
fb40: 0a 6e 61 6d 65 20 6f 66 20 61 20 75 73 65 72 2d  .name of a user-
fb50: 64 65 66 69 6e 65 64 20 6f 62 6a 65 63 74 2e 3c  defined object.<
fb60: 2f 70 3e 0a 0a 3c 70 3e 49 66 20 79 6f 75 20 77  /p>..<p>If you w
fb70: 61 6e 74 20 74 6f 20 75 73 65 20 61 20 6b 65 79  ant to use a key
fb80: 77 6f 72 64 20 61 73 20 61 20 6e 61 6d 65 2c 20  word as a name, 
fb90: 79 6f 75 20 6e 65 65 64 20 74 6f 20 71 75 6f 74  you need to quot
fba0: 65 20 69 74 2e 20 20 54 68 65 72 65 0a 61 72 65  e it.  There.are
fbb0: 20 74 68 72 65 65 20 77 61 79 73 20 6f 66 20 71   three ways of q
fbc0: 75 6f 74 69 6e 67 20 6b 65 79 77 6f 72 64 73 20  uoting keywords 
fbd0: 69 6e 20 53 51 4c 69 74 65 3a 3c 2f 70 3e 0a 0a  in SQLite:</p>..
fbe0: 3c 70 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  <p>.<blockquote>
fbf0: 0a 3c 74 61 62 6c 65 3e 0a 3c 74 72 3e 09 3c 74  .<table>.<tr>.<t
fc00: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c  d valign="top"><
fc10: 62 3e 27 6b 65 79 77 6f 72 64 27 3c 2f 62 3e 3c  b>'keyword'</b><
fc20: 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32  /td><td width="2
fc30: 30 22 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20  0"></td>..<td>A 
fc40: 6b 65 79 77 6f 72 64 20 69 6e 20 73 69 6e 67 6c  keyword in singl
fc50: 65 20 71 75 6f 74 65 73 20 69 73 20 69 6e 74 65  e quotes is inte
fc60: 72 70 72 65 74 65 64 20 61 73 20 61 20 6c 69 74  rpreted as a lit
fc70: 65 72 61 6c 20 73 74 72 69 6e 67 0a 20 20 20 20  eral string.    
fc80: 20 20 20 20 69 66 20 69 74 20 6f 63 63 75 72 73      if it occurs
fc90: 20 69 6e 20 61 20 63 6f 6e 74 65 78 74 20 77 68   in a context wh
fca0: 65 72 65 20 61 20 73 74 72 69 6e 67 20 6c 69 74  ere a string lit
fcb0: 65 72 61 6c 20 69 73 20 61 6c 6c 6f 77 65 64 2c  eral is allowed,
fcc0: 20 6f 74 68 65 72 77 69 73 65 0a 09 69 74 20 69   otherwise..it i
fcd0: 73 20 75 6e 64 65 72 73 74 6f 6f 64 20 61 73 20  s understood as 
fce0: 61 6e 20 69 64 65 6e 74 69 66 69 65 72 2e 3c 2f  an identifier.</
fcf0: 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 09 3c 74  td></tr>.<tr>.<t
fd00: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c  d valign="top"><
fd10: 62 3e 22 6b 65 79 77 6f 72 64 22 3c 2f 62 3e 3c  b>"keyword"</b><
fd20: 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c  /td><td></td>..<
fd30: 74 64 3e 41 20 6b 65 79 77 6f 72 64 20 69 6e 20  td>A keyword in 
fd40: 64 6f 75 62 6c 65 2d 71 75 6f 74 65 73 20 69 73  double-quotes is
fd50: 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20   interpreted as 
fd60: 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 69 66  an identifier if
fd70: 0a 20 20 20 20 20 20 20 20 69 74 20 6d 61 74 63  .        it matc
fd80: 68 65 73 20 61 20 6b 6e 6f 77 6e 20 69 64 65 6e  hes a known iden
fd90: 74 69 66 69 65 72 2e 20 20 4f 74 68 65 72 77 69  tifier.  Otherwi
fda0: 73 65 20 69 74 20 69 73 20 69 6e 74 65 72 70 72  se it is interpr
fdb0: 65 74 65 64 20 61 73 20 61 0a 20 20 20 20 20 20  eted as a.      
fdc0: 20 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c    string literal
fdd0: 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e  .</td></tr>.<tr>
fde0: 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
fdf0: 22 3e 3c 62 3e 5b 6b 65 79 77 6f 72 64 5d 3c 2f  "><b>[keyword]</
fe00: 62 3e 3c 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e  b></td><td></td>
fe10: 0a 09 3c 74 64 3e 41 20 6b 65 79 77 6f 72 64 20  ..<td>A keyword 
fe20: 65 6e 63 6c 6f 73 65 64 20 69 6e 20 73 71 75 61  enclosed in squa
fe30: 72 65 20 62 72 61 63 6b 65 74 73 20 69 73 20 61  re brackets is a
fe40: 6c 77 61 79 73 20 75 6e 64 65 72 73 74 6f 6f 64  lways understood
fe50: 20 61 73 0a 20 20 20 20 20 20 20 20 61 6e 20 69   as.        an i
fe60: 64 65 6e 74 69 66 69 65 72 2e 20 20 54 68 69 73  dentifier.  This
fe70: 20 69 73 20 6e 6f 74 20 73 74 61 6e 64 61 72 64   is not standard
fe80: 20 53 51 4c 2e 20 20 54 68 69 73 20 71 75 6f 74   SQL.  This quot
fe90: 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d 0a 20 20  ing mechanism.  
fea0: 20 20 20 20 20 20 69 73 20 75 73 65 64 20 62 79        is used by
feb0: 20 4d 53 20 41 63 63 65 73 73 20 61 6e 64 20 53   MS Access and S
fec0: 51 4c 20 53 65 72 76 65 72 20 61 6e 64 20 69 73  QL Server and is
fed0: 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 53 51 4c   included in SQL
fee0: 69 74 65 20 66 6f 72 0a 20 20 20 20 20 20 20 20  ite for.        
fef0: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 3c 2f  compatibility.</
ff00: 74 64 3e 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65  td></tr>.</table
ff10: 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >.</blockquote>.
ff20: 3c 2f 70 3e 0a 0a 3c 70 3e 51 75 6f 74 65 64 20  </p>..<p>Quoted 
ff30: 6b 65 79 77 6f 72 64 73 20 61 72 65 20 75 6e 61  keywords are una
ff40: 65 73 74 68 65 74 69 63 2e 0a 54 6f 20 68 65 6c  esthetic..To hel
ff50: 70 20 79 6f 75 20 61 76 6f 69 64 20 74 68 65 6d  p you avoid them
ff60: 2c 20 53 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20  , SQLite allows 
ff70: 6d 61 6e 79 20 6b 65 79 77 6f 72 64 73 20 74 6f  many keywords to
ff80: 20 62 65 20 75 73 65 64 20 75 6e 71 75 6f 74 65   be used unquote
ff90: 64 0a 61 73 20 74 68 65 20 6e 61 6d 65 73 20 6f  d.as the names o
ffa0: 66 20 64 61 74 61 62 61 73 65 73 2c 20 74 61 62  f databases, tab
ffb0: 6c 65 73 2c 20 69 6e 64 69 63 65 73 2c 20 74 72  les, indices, tr
ffc0: 69 67 67 65 72 73 2c 20 76 69 65 77 73 2c 20 61  iggers, views, a
ffd0: 6e 64 2f 6f 72 20 63 6f 6c 75 6d 6e 73 2e 0a 49  nd/or columns..I
ffe0: 6e 20 74 68 65 20 6c 69 73 74 20 6f 66 20 6b 65  n the list of ke
fff0: 79 77 6f 72 64 73 20 74 68 61 74 20 66 6f 6c 6c  ywords that foll
10000 6f 77 73 2c 20 74 68 6f 73 65 20 74 68 61 74 20  ows, those that 
10010 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 69  can be used as i
10020 64 65 6e 74 69 66 69 65 72 73 0a 61 72 65 20 73  dentifiers.are s
10030 68 6f 77 6e 20 69 6e 20 61 6e 20 69 74 61 6c 69  hown in an itali
10040 63 20 66 6f 6e 74 2e 20 20 4b 65 79 77 6f 72 64  c font.  Keyword
10050 73 20 74 68 61 74 20 6d 75 73 74 20 62 65 20 71  s that must be q
10060 75 6f 74 65 64 20 69 6e 20 6f 72 64 65 72 20 74  uoted in order t
10070 6f 20 62 65 0a 75 73 65 64 20 61 73 20 69 64 65  o be.used as ide
10080 6e 74 69 66 69 65 72 73 20 61 72 65 20 73 68 6f  ntifiers are sho
10090 77 6e 20 69 6e 20 62 6f 6c 64 2e 3c 2f 70 3e 0a  wn in bold.</p>.
100a0 0a 3c 70 3e 0a 53 51 4c 69 74 65 20 61 64 64 73  .<p>.SQLite adds
100b0 20 6e 65 77 20 6b 65 79 77 6f 72 64 73 20 66 72   new keywords fr
100c0 6f 6d 20 74 69 6d 65 20 74 6f 20 74 69 6d 65 20  om time to time 
100d0 77 68 65 6e 20 69 74 20 74 61 6b 65 20 6f 6e 20  when it take on 
100e0 6e 65 77 20 66 65 61 74 75 72 65 73 2e 0a 53 6f  new features..So
100f0 20 74 6f 20 70 72 65 76 65 6e 74 20 79 6f 75 20   to prevent you 
10100 63 6f 64 65 20 66 72 6f 6d 20 62 65 69 6e 67 20  code from being 
10110 62 72 6f 6b 65 6e 20 62 79 20 66 75 74 75 72 65  broken by future
10120 20 65 6e 68 61 6e 63 65 6d 65 6e 74 73 2c 20 79   enhancements, y
10130 6f 75 20 73 68 6f 75 6c 64 0a 6e 6f 72 6d 61 6c  ou should.normal
10140 6c 79 20 71 75 6f 74 65 20 61 6e 79 20 69 6e 64  ly quote any ind
10150 65 6e 74 69 66 69 65 72 20 74 68 61 74 20 69 73  entifier that is
10160 20 61 6e 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67   an English lang
10170 75 61 67 65 20 77 6f 72 64 2c 20 65 76 65 6e 20  uage word, even 
10180 69 66 0a 79 6f 75 20 64 6f 20 6e 6f 74 20 68 61  if.you do not ha
10190 76 65 20 74 6f 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  ve to..</p>..<p>
101a0 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61  .The following a
101b0 72 65 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20  re the keywords 
101c0 63 75 72 72 65 6e 74 6c 79 20 72 65 63 6f 67 6e  currently recogn
101d0 69 7a 65 64 20 62 79 20 53 51 4c 69 74 65 3a 0a  ized by SQLite:.
101e0 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
101f0 65 3e 0a 3c 74 61 62 6c 65 20 77 69 64 74 68 3d  e>.<table width=
10200 22 31 30 30 25 22 3e 0a 3c 74 72 3e 0a 3c 74 64  "100%">.<tr>.<td
10210 20 61 6c 69 67 6e 3d 22 6c 65 66 74 22 20 76 61   align="left" va
10220 6c 69 67 6e 3d 22 74 6f 70 22 20 77 69 64 74 68  lign="top" width
10230 3d 22 32 30 25 22 3e 0a 7d 0a 0a 73 65 74 20 6e  ="20%">.}..set n
10240 20 5b 6c 6c 65 6e 67 74 68 20 24 6b 65 79 77 6f   [llength $keywo
10250 72 64 5f 6c 69 73 74 5d 0a 73 65 74 20 6e 43 6f  rd_list].set nCo
10260 6c 20 35 0a 73 65 74 20 6e 52 6f 77 20 5b 65 78  l 5.set nRow [ex
10270 70 72 20 7b 28 24 6e 2b 24 6e 43 6f 6c 2d 31 29  pr {($n+$nCol-1)
10280 2f 24 6e 43 6f 6c 7d 5d 0a 73 65 74 20 69 20 30  /$nCol}].set i 0
10290 0a 66 6f 72 65 61 63 68 20 77 6f 72 64 20 24 6b  .foreach word $k
102a0 65 79 77 6f 72 64 5f 6c 69 73 74 20 7b 0a 20 20  eyword_list {.  
102b0 69 66 20 7b 5b 73 74 72 69 6e 67 20 69 6e 64 65  if {[string inde
102c0 78 20 24 77 6f 72 64 20 65 6e 64 5d 3d 3d 22 2a  x $word end]=="*
102d0 22 7d 20 7b 0a 20 20 20 20 73 65 74 20 77 6f 72  "} {.    set wor
102e0 64 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20  d [string range 
102f0 24 77 6f 72 64 20 30 20 65 6e 64 2d 31 5d 0a 20  $word 0 end-1]. 
10300 20 20 20 73 65 74 20 66 6f 6e 74 20 69 0a 20 20     set font i.  
10310 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 73 65 74  } else {.    set
10320 20 66 6f 6e 74 20 62 0a 20 20 7d 0a 20 20 69 66   font b.  }.  if
10330 20 7b 24 69 3d 3d 24 6e 52 6f 77 7d 20 7b 0a 20   {$i==$nRow} {. 
10340 20 20 20 70 75 74 73 20 22 3c 2f 74 64 3e 3c 74     puts "</td><t
10350 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22  d valign=\"top\"
10360 20 61 6c 69 67 6e 3d 5c 22 6c 65 66 74 5c 22 20   align=\"left\" 
10370 77 69 64 74 68 3d 5c 22 32 30 25 5c 22 3e 22 0a  width=\"20%\">".
10380 20 20 20 20 73 65 74 20 69 20 31 0a 20 20 7d 20      set i 1.  } 
10390 65 6c 73 65 20 7b 0a 20 20 20 20 69 6e 63 72 20  else {.    incr 
103a0 69 0a 20 20 7d 0a 20 20 70 75 74 73 20 22 3c 24  i.  }.  puts "<$
103b0 66 6f 6e 74 3e 24 77 6f 72 64 3c 2f 24 66 6f 6e  font>$word</$fon
103c0 74 3e 3c 62 72 3e 22 0a 7d 0a 0a 70 75 74 73 20  t><br>".}..puts 
103d0 7b 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f 74 61  {.</td></tr></ta
103e0 62 6c 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  ble></blockquote
103f0 3e 0a 0a 3c 68 32 3e 53 70 65 63 69 61 6c 20 6e  >..<h2>Special n
10400 61 6d 65 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68  ames</h2>..<p>Th
10410 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20  e following are 
10420 6e 6f 74 20 6b 65 79 77 6f 72 64 73 20 69 6e 20  not keywords in 
10430 53 51 4c 69 74 65 2c 20 62 75 74 20 61 72 65 20  SQLite, but are 
10440 75 73 65 64 20 61 73 20 6e 61 6d 65 73 20 6f 66  used as names of
10450 20 0a 73 79 73 74 65 6d 20 6f 62 6a 65 63 74 73   .system objects
10460 2e 20 20 54 68 65 79 20 63 61 6e 20 62 65 20 75  .  They can be u
10470 73 65 64 20 61 73 20 61 6e 20 69 64 65 6e 74 69  sed as an identi
10480 66 69 65 72 20 66 6f 72 20 61 20 64 69 66 66 65  fier for a diffe
10490 72 65 6e 74 20 0a 74 79 70 65 20 6f 66 20 6f 62  rent .type of ob
104a0 6a 65 63 74 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  ject.</p>..<bloc
104b0 6b 71 75 6f 74 65 3e 3c 62 3e 0a 20 20 5f 52 4f  kquote><b>.  _RO
104c0 57 49 44 5f 3c 62 72 3e 0a 20 20 4d 41 49 4e 3c  WID_<br>.  MAIN<
104d0 62 72 3e 0a 20 20 4f 49 44 3c 62 72 3e 0a 20 20  br>.  OID<br>.  
104e0 52 4f 57 49 44 3c 62 72 3e 0a 20 20 53 51 4c 49  ROWID<br>.  SQLI
104f0 54 45 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20  TE_MASTER<br>.  
10500 53 51 4c 49 54 45 5f 53 45 51 55 45 4e 43 45 3c  SQLITE_SEQUENCE<
10510 62 72 3e 0a 20 20 53 51 4c 49 54 45 5f 54 45 4d  br>.  SQLITE_TEM
10520 50 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20 54  P_MASTER<br>.  T
10530 45 4d 50 3c 62 72 3e 0a 3c 2f 62 3e 3c 2f 62 6c  EMP<br>.</b></bl
10540 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 66 6f 6f  ockquote>.}..foo
10550 74 65 72 20 24 72 63 73 69 64 0a 69 66 20 7b 5b  ter $rcsid.if {[
10560 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 6f  string length $o
10570 75 74 70 75 74 64 69 72 5d 7d 20 7b 0a 20 20 66  utputdir]} {.  f
10580 6f 6f 74 65 72 20 24 72 63 73 69 64 0a 7d 0a     ooter $rcsid.}.