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

Artifact 06b825c1e88266866da3a915d0e039249ea2e4e0:


0000: 23 0a 23 20 52 75 6e 20 74 68 69 73 20 54 63 6c  #.# Run this Tcl
0010: 20 73 63 72 69 70 74 20 74 6f 20 67 65 6e 65 72   script to gener
0020: 61 74 65 20 74 68 65 20 73 71 6c 69 74 65 2e 68  ate the sqlite.h
0030: 74 6d 6c 20 66 69 6c 65 2e 0a 23 0a 73 65 74 20  tml file..#.set 
0040: 72 63 73 69 64 20 7b 24 49 64 3a 20 6c 61 6e 67  rcsid {$Id: lang
0050: 2e 74 63 6c 2c 76 20 31 2e 36 34 20 32 30 30 33  .tcl,v 1.64 2003
0060: 2f 30 37 2f 31 36 20 31 31 3a 35 31 3a 33 36 20  /07/16 11:51:36 
0070: 64 72 68 20 45 78 70 20 24 7d 0a 0a 70 75 74 73  drh Exp $}..puts
0080: 20 7b 3c 68 74 6d 6c 3e 0a 3c 68 65 61 64 3e 0a   {<html>.<head>.
0090: 20 20 3c 74 69 74 6c 65 3e 51 75 65 72 79 20 4c    <title>Query L
00a0: 61 6e 67 75 61 67 65 20 55 6e 64 65 72 73 74 6f  anguage Understo
00b0: 6f 64 20 42 79 20 53 51 4c 69 74 65 3c 2f 74 69  od By SQLite</ti
00c0: 74 6c 65 3e 0a 3c 2f 68 65 61 64 3e 0a 3c 62 6f  tle>.</head>.<bo
00d0: 64 79 20 62 67 63 6f 6c 6f 72 3d 77 68 69 74 65  dy bgcolor=white
00e0: 3e 0a 3c 68 31 20 61 6c 69 67 6e 3d 63 65 6e 74  >.<h1 align=cent
00f0: 65 72 3e 0a 53 51 4c 20 41 73 20 55 6e 64 65 72  er>.SQL As Under
0100: 73 74 6f 6f 64 20 42 79 20 53 51 4c 69 74 65 0a  stood By SQLite.
0110: 3c 2f 68 31 3e 7d 0a 70 75 74 73 20 22 3c 70 20  </h1>}.puts "<p 
0120: 61 6c 69 67 6e 3d 63 65 6e 74 65 72 3e 0a 28 54  align=center>.(T
0130: 68 69 73 20 70 61 67 65 20 77 61 73 20 6c 61 73  his page was las
0140: 74 20 6d 6f 64 69 66 69 65 64 20 6f 6e 20 5b 6c  t modified on [l
0150: 72 61 6e 67 65 20 24 72 63 73 69 64 20 33 20 34  range $rcsid 3 4
0160: 5d 20 55 54 43 29 0a 3c 2f 70 3e 22 0a 0a 70 75  ] UTC).</p>"..pu
0170: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 53 51 4c 69  ts {.<p>The SQLi
0180: 74 65 20 6c 69 62 72 61 72 79 20 75 6e 64 65 72  te library under
0190: 73 74 61 6e 64 73 20 6d 6f 73 74 20 6f 66 20 74  stands most of t
01a0: 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 0a  he standard SQL.
01b0: 6c 61 6e 67 75 61 67 65 2e 20 20 42 75 74 20 69  language.  But i
01c0: 74 20 64 6f 65 73 20 3c 61 20 68 72 65 66 3d 22  t does <a href="
01d0: 6f 6d 69 74 74 65 64 2e 68 74 6d 6c 22 3e 6f 6d  omitted.html">om
01e0: 69 74 20 73 6f 6d 65 20 66 65 61 74 75 72 65 73  it some features
01f0: 3c 2f 61 3e 0a 77 68 69 6c 65 20 61 74 20 74 68  </a>.while at th
0200: 65 20 73 61 6d 65 20 74 69 6d 65 0a 61 64 64 69  e same time.addi
0210: 6e 67 20 61 20 66 65 77 20 66 65 61 74 75 72 65  ng a few feature
0220: 73 20 6f 66 20 69 74 73 20 6f 77 6e 2e 20 20 54  s of its own.  T
0230: 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 61 74 74  his document att
0240: 65 6d 70 74 73 20 74 6f 0a 64 65 73 63 72 69 62  empts to.describ
0250: 65 20 70 65 72 63 69 73 65 6c 79 20 77 68 61 74  e percisely what
0260: 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 53 51   parts of the SQ
0270: 4c 20 6c 61 6e 67 75 61 67 65 20 53 51 4c 69 74  L language SQLit
0280: 65 20 64 6f 65 73 0a 61 6e 64 20 64 6f 65 73 20  e does.and does 
0290: 6e 6f 74 20 73 75 70 70 6f 72 74 2e 20 20 41 20  not support.  A 
02a0: 6c 69 73 74 20 6f 66 20 3c 61 20 68 72 65 66 3d  list of <a href=
02b0: 22 23 6b 65 79 77 6f 72 64 73 22 3e 6b 65 79 77  "#keywords">keyw
02c0: 6f 72 64 73 3c 2f 61 3e 20 69 73 20 0a 67 69 76  ords</a> is .giv
02d0: 65 6e 20 61 74 20 74 68 65 20 65 6e 64 2e 3c 2f  en at the end.</
02e0: 70 3e 0a 0a 3c 70 3e 49 6e 20 61 6c 6c 20 6f 66  p>..<p>In all of
02f0: 20 74 68 65 20 73 79 6e 74 61 78 20 64 69 61 67   the syntax diag
0300: 72 61 6d 73 20 74 68 61 74 20 66 6f 6c 6c 6f 77  rams that follow
0310: 2c 20 6c 69 74 65 72 61 6c 20 74 65 78 74 20 69  , literal text i
0320: 73 20 73 68 6f 77 6e 20 69 6e 0a 62 6f 6c 64 20  s shown in.bold 
0330: 62 6c 75 65 2e 20 20 4e 6f 6e 2d 74 65 72 6d 69  blue.  Non-termi
0340: 6e 61 6c 20 73 79 6d 62 6f 6c 73 20 61 72 65 20  nal symbols are 
0350: 73 68 6f 77 6e 20 69 6e 20 69 74 61 6c 69 63 20  shown in italic 
0360: 72 65 64 2e 20 20 4f 70 65 72 61 74 6f 72 73 0a  red.  Operators.
0370: 74 68 61 74 20 61 72 65 20 70 61 72 74 20 6f 66  that are part of
0380: 20 74 68 65 20 73 79 6e 74 61 63 74 69 63 20 6d   the syntactic m
0390: 61 72 6b 75 70 20 69 74 73 65 6c 66 20 61 72 65  arkup itself are
03a0: 20 73 68 6f 77 6e 20 69 6e 20 62 6c 61 63 6b 20   shown in black 
03b0: 72 6f 6d 61 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  roman.</p>..<p>T
03c0: 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 69 73 20  his document is 
03d0: 6a 75 73 74 20 61 6e 20 6f 76 65 72 76 69 65 77  just an overview
03e0: 20 6f 66 20 74 68 65 20 53 51 4c 20 73 79 6e 74   of the SQL synt
03f0: 61 78 20 69 6d 70 6c 65 6d 65 6e 74 65 64 0a 62  ax implemented.b
0400: 79 20 53 51 4c 69 74 65 2e 20 20 4d 61 6e 79 20  y SQLite.  Many 
0410: 6c 6f 77 2d 6c 65 76 65 6c 20 70 72 6f 64 75 63  low-level produc
0420: 74 69 6f 6e 73 20 61 72 65 20 6f 6d 69 74 74 65  tions are omitte
0430: 64 2e 20 20 46 6f 72 20 64 65 74 61 69 6c 65 64  d.  For detailed
0440: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 6f 6e 20   information.on 
0450: 74 68 65 20 6c 61 6e 67 75 61 67 65 20 74 68 61  the language tha
0460: 74 20 53 51 4c 69 74 65 20 75 6e 64 65 72 73 74  t SQLite underst
0470: 61 6e 64 73 2c 20 72 65 66 65 72 20 74 6f 20 74  ands, refer to t
0480: 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 61  he source code a
0490: 6e 64 0a 74 68 65 20 67 72 61 6d 6d 61 72 20 66  nd.the grammar f
04a0: 69 6c 65 20 22 70 61 72 73 65 2e 79 22 2e 3c 2f  ile "parse.y".</
04b0: 70 3e 0a 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 69  p>...<p>SQLite i
04c0: 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 66 6f  mplements the fo
04d0: 6c 6c 6f 77 20 73 79 6e 74 61 78 3a 3c 2f 70 3e  llow syntax:</p>
04e0: 0a 3c 70 3e 3c 75 6c 3e 0a 7d 0a 0a 66 6f 72 65  .<p><ul>.}..fore
04f0: 61 63 68 20 7b 73 65 63 74 69 6f 6e 7d 20 5b 6c  ach {section} [l
0500: 73 6f 72 74 20 2d 69 6e 64 65 78 20 30 20 2d 64  sort -index 0 -d
0510: 69 63 74 69 6f 6e 61 72 79 20 7b 0a 20 20 7b 7b  ictionary {.  {{
0520: 43 52 45 41 54 45 20 54 41 42 4c 45 7d 20 63 72  CREATE TABLE} cr
0530: 65 61 74 65 74 61 62 6c 65 7d 0a 20 20 7b 7b 43  eatetable}.  {{C
0540: 52 45 41 54 45 20 49 4e 44 45 58 7d 20 63 72 65  REATE INDEX} cre
0550: 61 74 65 69 6e 64 65 78 7d 0a 20 20 7b 56 41 43  ateindex}.  {VAC
0560: 55 55 4d 20 76 61 63 75 75 6d 7d 0a 20 20 7b 7b  UUM vacuum}.  {{
0570: 44 52 4f 50 20 54 41 42 4c 45 7d 20 64 72 6f 70  DROP TABLE} drop
0580: 74 61 62 6c 65 7d 0a 20 20 7b 7b 44 52 4f 50 20  table}.  {{DROP 
0590: 49 4e 44 45 58 7d 20 64 72 6f 70 69 6e 64 65 78  INDEX} dropindex
05a0: 7d 0a 20 20 7b 49 4e 53 45 52 54 20 69 6e 73 65  }.  {INSERT inse
05b0: 72 74 7d 0a 20 20 7b 52 45 50 4c 41 43 45 20 72  rt}.  {REPLACE r
05c0: 65 70 6c 61 63 65 7d 0a 20 20 7b 44 45 4c 45 54  eplace}.  {DELET
05d0: 45 20 64 65 6c 65 74 65 7d 0a 20 20 7b 55 50 44  E delete}.  {UPD
05e0: 41 54 45 20 75 70 64 61 74 65 7d 0a 20 20 7b 53  ATE update}.  {S
05f0: 45 4c 45 43 54 20 73 65 6c 65 63 74 7d 0a 20 20  ELECT select}.  
0600: 7b 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e 74  {comment comment
0610: 7d 0a 20 20 7b 43 4f 50 59 20 63 6f 70 79 7d 0a  }.  {COPY copy}.
0620: 20 20 7b 45 58 50 4c 41 49 4e 20 65 78 70 6c 61    {EXPLAIN expla
0630: 69 6e 7d 0a 20 20 7b 65 78 70 72 65 73 73 69 6f  in}.  {expressio
0640: 6e 20 65 78 70 72 7d 0a 20 20 7b 7b 42 45 47 49  n expr}.  {{BEGI
0650: 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74  N TRANSACTION} t
0660: 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 7b  ransaction}.  {{
0670: 43 4f 4d 4d 49 54 20 54 52 41 4e 53 41 43 54 49  COMMIT TRANSACTI
0680: 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d  ON} transaction}
0690: 0a 20 20 7b 7b 45 4e 44 20 54 52 41 4e 53 41 43  .  {{END TRANSAC
06a0: 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f  TION} transactio
06b0: 6e 7d 0a 20 20 7b 7b 52 4f 4c 4c 42 41 43 4b 20  n}.  {{ROLLBACK 
06c0: 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61  TRANSACTION} tra
06d0: 6e 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 50 52 41  nsaction}.  {PRA
06e0: 47 4d 41 20 70 72 61 67 6d 61 7d 0a 20 20 7b 7b  GMA pragma}.  {{
06f0: 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75  ON CONFLICT clau
0700: 73 65 7d 20 63 6f 6e 66 6c 69 63 74 7d 0a 20 20  se} conflict}.  
0710: 7b 7b 43 52 45 41 54 45 20 56 49 45 57 7d 20 63  {{CREATE VIEW} c
0720: 72 65 61 74 65 76 69 65 77 7d 0a 20 20 7b 7b 44  reateview}.  {{D
0730: 52 4f 50 20 56 49 45 57 7d 20 64 72 6f 70 76 69  ROP VIEW} dropvi
0740: 65 77 7d 0a 20 20 7b 7b 43 52 45 41 54 45 20 54  ew}.  {{CREATE T
0750: 52 49 47 47 45 52 7d 20 63 72 65 61 74 65 74 72  RIGGER} createtr
0760: 69 67 67 65 72 7d 0a 20 20 7b 7b 44 52 4f 50 20  igger}.  {{DROP 
0770: 54 52 49 47 47 45 52 7d 20 64 72 6f 70 74 72 69  TRIGGER} droptri
0780: 67 67 65 72 7d 0a 20 20 7b 7b 41 54 54 41 43 48  gger}.  {{ATTACH
0790: 20 44 41 54 41 42 41 53 45 7d 20 61 74 74 61 63   DATABASE} attac
07a0: 68 7d 0a 20 20 7b 7b 44 45 54 41 43 48 20 44 41  h}.  {{DETACH DA
07b0: 54 41 42 41 53 45 7d 20 64 65 74 61 63 68 7d 0a  TABASE} detach}.
07c0: 7d 5d 20 7b 0a 20 20 70 75 74 73 20 22 3c 6c 69  }] {.  puts "<li
07d0: 3e 3c 61 20 68 72 65 66 3d 5c 22 23 5b 6c 69 6e  ><a href=\"#[lin
07e0: 64 65 78 20 24 73 65 63 74 69 6f 6e 20 31 5d 5c  dex $section 1]\
07f0: 22 3e 5b 6c 69 6e 64 65 78 20 24 73 65 63 74 69  ">[lindex $secti
0800: 6f 6e 20 30 5d 3c 2f 61 3e 3c 2f 6c 69 3e 22 0a  on 0]</a></li>".
0810: 7d 0a 70 75 74 73 20 7b 3c 2f 75 6c 3e 3c 2f 70  }.puts {</ul></p
0820: 3e 0a 0a 3c 70 3e 44 65 74 61 69 6c 73 20 6f 6e  >..<p>Details on
0830: 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74   the implementat
0840: 69 6f 6e 20 6f 66 20 65 61 63 68 20 63 6f 6d 6d  ion of each comm
0850: 61 6e 64 20 61 72 65 20 70 72 6f 76 69 64 65 64  and are provided
0860: 20 69 6e 0a 74 68 65 20 73 65 71 75 65 6c 2e 3c   in.the sequel.<
0870: 2f 70 3e 0a 7d 0a 0a 70 72 6f 63 20 53 79 6e 74  /p>.}..proc Synt
0880: 61 78 20 7b 61 72 67 73 7d 20 7b 0a 20 20 70 75  ax {args} {.  pu
0890: 74 73 20 7b 3c 74 61 62 6c 65 20 63 65 6c 6c 70  ts {<table cellp
08a0: 61 64 64 69 6e 67 3d 22 31 30 22 3e 7d 0a 20 20  adding="10">}.  
08b0: 66 6f 72 65 61 63 68 20 7b 72 75 6c 65 20 62 6f  foreach {rule bo
08c0: 64 79 7d 20 24 61 72 67 73 20 7b 0a 20 20 20 20  dy} $args {.    
08d0: 70 75 74 73 20 22 3c 74 72 3e 3c 74 64 20 61 6c  puts "<tr><td al
08e0: 69 67 6e 3d 5c 22 72 69 67 68 74 5c 22 20 76 61  ign=\"right\" va
08f0: 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 3e 22 0a 20  lign=\"top\">". 
0900: 20 20 20 70 75 74 73 20 22 3c 69 3e 3c 66 6f 6e     puts "<i><fon
0910: 74 20 63 6f 6c 6f 72 3d 5c 22 23 66 66 33 34 33  t color=\"#ff343
0920: 34 5c 22 3e 24 72 75 6c 65 3c 2f 66 6f 6e 74 3e  4\">$rule</font>
0930: 3c 2f 69 3e 26 6e 62 73 70 3b 3a 3a 3d 3c 2f 74  </i>&nbsp;::=</t
0940: 64 3e 22 0a 20 20 20 20 72 65 67 73 75 62 20 2d  d>".    regsub -
0950: 61 6c 6c 20 3c 20 24 62 6f 64 79 20 7b 25 4c 54  all < $body {%LT
0960: 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75  } body.    regsu
0970: 62 20 2d 61 6c 6c 20 3e 20 24 62 6f 64 79 20 7b  b -all > $body {
0980: 25 47 54 7d 20 62 6f 64 79 0a 20 20 20 20 72 65  %GT} body.    re
0990: 67 73 75 62 20 2d 61 6c 6c 20 25 4c 54 20 24 62  gsub -all %LT $b
09a0: 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e  ody {</font></b>
09b0: 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22  <i><font color="
09c0: 23 66 66 33 34 33 34 22 3e 7d 20 62 6f 64 79 0a  #ff3434">} body.
09d0: 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20      regsub -all 
09e0: 25 47 54 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e  %GT $body {</fon
09f0: 74 3e 3c 2f 69 3e 3c 62 3e 3c 66 6f 6e 74 20 63  t></i><b><font c
0a00: 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 7d  olor="#2c2cf0">}
0a10: 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62   body.    regsub
0a20: 20 2d 61 6c 6c 20 7b 5b 5d 7c 5b 2a 3f 5d 7d 20   -all {[]|[*?]} 
0a30: 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f  $body {</font></
0a40: 62 3e 26 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f  b>&<b><font colo
0a50: 72 3d 22 23 32 63 32 63 66 30 22 3e 7d 20 62 6f  r="#2c2cf0">} bo
0a60: 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61  dy.    regsub -a
0a70: 6c 6c 20 22 5c 6e 22 20 5b 73 74 72 69 6e 67 20  ll "\n" [string 
0a80: 74 72 69 6d 20 24 62 6f 64 79 5d 20 22 3c 62 72  trim $body] "<br
0a90: 3e 5c 6e 22 20 62 6f 64 79 0a 20 20 20 20 72 65  >\n" body.    re
0aa0: 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e 20 20 2a  gsub -all "\n  *
0ab0: 22 20 24 62 6f 64 79 20 22 5c 6e 5c 5c 26 6e 62  " $body "\n\\&nb
0ac0: 73 70 3b 5c 5c 26 6e 62 73 70 3b 5c 5c 26 6e 62  sp;\\&nbsp;\\&nb
0ad0: 73 70 3b 5c 5c 26 6e 62 73 70 3b 22 20 62 6f 64  sp;\\&nbsp;" bod
0ae0: 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c  y.    regsub -al
0af0: 6c 20 7b 5b 7c 2c 2e 2a 28 29 5d 7d 20 24 62 6f  l {[|,.*()]} $bo
0b00: 64 79 20 7b 3c 62 69 67 3e 26 3c 2f 62 69 67 3e  dy {<big>&</big>
0b10: 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75  } body.    regsu
0b20: 62 20 2d 61 6c 6c 20 7b 20 3d 20 7d 20 24 62 6f  b -all { = } $bo
0b30: 64 79 20 7b 20 3c 62 69 67 3e 3d 3c 2f 62 69 67  dy { <big>=</big
0b40: 3e 20 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67  > } body.    reg
0b50: 73 75 62 20 2d 61 6c 6c 20 7b 53 54 41 52 7d 20  sub -all {STAR} 
0b60: 24 62 6f 64 79 20 7b 3c 62 69 67 3e 2a 3c 2f 62  $body {<big>*</b
0b70: 69 67 3e 7d 20 62 6f 64 79 0a 20 20 20 20 23 23  ig>} body.    ##
0b80: 20 54 68 65 73 65 20 6d 65 74 61 63 68 61 72 61   These metachara
0b90: 63 74 65 72 73 20 6d 75 73 74 20 62 65 20 68 61  cters must be ha
0ba0: 6e 64 6c 65 64 20 74 6f 20 75 6e 64 6f 20 62 65  ndled to undo be
0bb0: 69 6e 67 0a 20 20 20 20 23 23 20 74 72 65 61 74  ing.    ## treat
0bc0: 65 64 20 61 73 20 53 51 4c 20 70 75 6e 63 74 75  ed as SQL punctu
0bd0: 61 74 69 6f 6e 20 63 68 61 72 61 63 74 65 72 73  ation characters
0be0: 20 61 62 6f 76 65 2e 0a 20 20 20 20 72 65 67 73   above..    regs
0bf0: 75 62 20 2d 61 6c 6c 20 7b 52 50 50 4c 55 53 7d  ub -all {RPPLUS}
0c00: 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c   $body {</font><
0c10: 2f 62 3e 29 2b 3c 62 3e 3c 66 6f 6e 74 20 63 6f  /b>)+<b><font co
0c20: 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 7d 20  lor="#2c2cf0">} 
0c30: 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62 20  body.    regsub 
0c40: 2d 61 6c 6c 20 7b 4c 50 7d 20 24 62 6f 64 79 20  -all {LP} $body 
0c50: 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 28 3c 62 3e  {</font></b>(<b>
0c60: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63  <font color="#2c
0c70: 32 63 66 30 22 3e 7d 20 62 6f 64 79 0a 20 20 20  2cf0">} body.   
0c80: 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 52 50   regsub -all {RP
0c90: 7d 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e  } $body {</font>
0ca0: 3c 2f 62 3e 29 3c 62 3e 3c 66 6f 6e 74 20 63 6f  </b>)<b><font co
0cb0: 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 7d 20  lor="#2c2cf0">} 
0cc0: 62 6f 64 79 0a 20 20 20 20 23 23 20 50 6c 61 63  body.    ## Plac
0cd0: 65 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20  e the left-hand 
0ce0: 73 69 64 65 20 6f 66 20 74 68 65 20 72 75 6c 65  side of the rule
0cf0: 20 69 6e 20 74 68 65 20 32 6e 64 20 74 61 62 6c   in the 2nd tabl
0d00: 65 20 63 6f 6c 75 6d 6e 2e 0a 20 20 20 20 70 75  e column..    pu
0d10: 74 73 20 22 3c 74 64 3e 3c 62 3e 3c 66 6f 6e 74  ts "<td><b><font
0d20: 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30   color=\"#2c2cf0
0d30: 5c 22 3e 24 62 6f 64 79 3c 2f 66 6f 6e 74 3e 3c  \">$body</font><
0d40: 2f 62 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 22 0a 20  /b></td></tr>". 
0d50: 20 7d 0a 20 20 70 75 74 73 20 7b 3c 2f 74 61 62   }.  puts {</tab
0d60: 6c 65 3e 7d 0a 7d 0a 70 72 6f 63 20 4f 70 65 72  le>}.}.proc Oper
0d70: 61 74 6f 72 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20  ator {name} {.  
0d80: 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f  return "<font co
0d90: 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e  lor=\"#2c2cf0\">
0da0: 3c 62 69 67 3e 24 6e 61 6d 65 3c 2f 62 69 67 3e  <big>$name</big>
0db0: 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f 63 20  </font>".}.proc 
0dc0: 4e 6f 6e 74 65 72 6d 69 6e 61 6c 20 7b 6e 61 6d  Nonterminal {nam
0dd0: 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c  e} {.  return "<
0de0: 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22  i><font color=\"
0df0: 23 66 66 33 34 33 34 5c 22 3e 24 6e 61 6d 65 3c  #ff3434\">$name<
0e00: 2f 66 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d 0a 70 72  /font></i>".}.pr
0e10: 6f 63 20 4b 65 79 77 6f 72 64 20 7b 6e 61 6d 65  oc Keyword {name
0e20: 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c 66  } {.  return "<f
0e30: 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32  ont color=\"#2c2
0e40: 63 66 30 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e  cf0\">$name</fon
0e50: 74 3e 22 0a 7d 0a 20 0a 0a 70 72 6f 63 20 53 65  t>".}. ..proc Se
0e60: 63 74 69 6f 6e 20 7b 6e 61 6d 65 20 7b 6c 61 62  ction {name {lab
0e70: 65 6c 20 7b 7d 7d 7d 20 7b 0a 20 20 70 75 74 73  el {}}} {.  puts
0e80: 20 22 5c 6e 3c 68 72 20 2f 3e 22 0a 20 20 69 66   "\n<hr />".  if
0e90: 20 7b 24 6c 61 62 65 6c 21 3d 22 22 7d 20 7b 0a   {$label!=""} {.
0ea0: 20 20 20 20 70 75 74 73 20 22 3c 61 20 6e 61 6d      puts "<a nam
0eb0: 65 3d 5c 22 24 6c 61 62 65 6c 5c 22 3e 3c 2f 61  e=\"$label\"></a
0ec0: 3e 22 0a 20 20 7d 0a 20 20 70 75 74 73 20 22 3c  >".  }.  puts "<
0ed0: 68 31 3e 24 6e 61 6d 65 3c 2f 68 31 3e 5c 6e 22  h1>$name</h1>\n"
0ee0: 0a 7d 0a 0a 70 72 6f 63 20 45 78 61 6d 70 6c 65  .}..proc Example
0ef0: 20 7b 74 65 78 74 7d 20 7b 0a 20 20 70 75 74 73   {text} {.  puts
0f00: 20 22 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70   "<blockquote><p
0f10: 72 65 3e 24 74 65 78 74 3c 2f 70 72 65 3e 3c 2f  re>$text</pre></
0f20: 62 6c 6f 63 6b 71 75 6f 74 65 3e 22 0a 7d 0a 0a  blockquote>".}..
0f30: 0a 53 65 63 74 69 6f 6e 20 7b 41 54 54 41 43 48  .Section {ATTACH
0f40: 20 44 41 54 41 42 41 53 45 7d 20 61 74 74 61 63   DATABASE} attac
0f50: 68 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  h..Syntax {sql-s
0f60: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 41 54 54 41  tatement} {.ATTA
0f70: 43 48 20 5b 44 41 54 41 42 41 53 45 5d 20 3c 64  CH [DATABASE] <d
0f80: 61 74 61 62 61 73 65 2d 66 69 6c 65 6e 61 6d 65  atabase-filename
0f90: 3e 20 41 53 20 3c 64 61 74 61 62 61 73 65 2d 6e  > AS <database-n
0fa0: 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  ame>.}..puts {.<
0fb0: 70 3e 54 68 65 20 41 54 54 41 43 48 20 44 41 54  p>The ATTACH DAT
0fc0: 41 42 41 53 45 20 73 74 61 74 65 6d 65 6e 74 20  ABASE statement 
0fd0: 61 64 64 73 20 61 20 70 72 65 65 78 69 73 74 69  adds a preexisti
0fe0: 6e 67 20 64 61 74 61 62 61 73 65 20 0a 66 69 6c  ng database .fil
0ff0: 65 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74  e to the current
1000: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
1010: 74 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 66 69  tion.  If the fi
1020: 6c 65 6e 61 6d 65 20 63 6f 6e 74 61 69 6e 73 20  lename contains 
1030: 0a 70 75 6e 63 74 75 61 74 69 6f 6e 20 63 68 61  .punctuation cha
1040: 72 61 63 74 65 72 73 20 69 74 20 6d 75 73 74 20  racters it must 
1050: 62 65 20 71 75 6f 74 65 64 2e 20 20 54 68 65 20  be quoted.  The 
1060: 6e 61 6d 65 73 20 27 6d 61 69 6e 27 20 61 6e 64  names 'main' and
1070: 20 0a 27 74 65 6d 70 27 20 72 65 66 65 72 20 74   .'temp' refer t
1080: 6f 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  o the main datab
1090: 61 73 65 20 61 6e 64 20 74 68 65 20 64 61 74 61  ase and the data
10a0: 62 61 73 65 20 75 73 65 64 20 66 6f 72 20 0a 74  base used for .t
10b0: 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73 2e  emporary tables.
10c0: 20 20 54 68 65 73 65 20 63 61 6e 6e 6f 74 20 62    These cannot b
10d0: 65 20 64 65 74 61 63 68 65 64 2e 20 20 41 74 74  e detached.  Att
10e0: 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20  ached databases 
10f0: 0a 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73 69  .are removed usi
1100: 6e 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22  ng the <a href="
1110: 23 64 65 74 61 63 68 22 3e 44 45 54 41 43 48 20  #detach">DETACH 
1120: 44 41 54 41 42 41 53 45 3c 2f 61 3e 20 0a 73 74  DATABASE</a> .st
1130: 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70  atement.</p>..<p
1140: 3e 59 6f 75 20 63 61 6e 20 72 65 61 64 20 66 72  >You can read fr
1150: 6f 6d 20 61 6e 64 20 77 72 69 74 65 20 74 6f 20  om and write to 
1160: 61 6e 20 61 74 74 61 63 68 65 64 20 64 61 74 61  an attached data
1170: 62 61 73 65 2c 20 62 75 74 20 79 6f 75 20 63 61  base, but you ca
1180: 6e 6e 6f 74 20 0a 61 6c 74 65 72 20 74 68 65 20  nnot .alter the 
1190: 73 63 68 65 6d 61 20 6f 66 20 61 6e 20 61 74 74  schema of an att
11a0: 61 63 68 65 64 20 64 61 74 61 62 61 73 65 2e 20  ached database. 
11b0: 20 59 6f 75 20 63 61 6e 20 6f 6e 6c 79 20 43 52   You can only CR
11c0: 45 41 54 45 20 61 6e 64 20 0a 44 52 4f 50 20 69  EATE and .DROP i
11d0: 6e 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64  n the original d
11e0: 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70  atabase.</p>..<p
11f0: 3e 59 6f 75 20 63 61 6e 6e 6f 74 20 63 72 65 61  >You cannot crea
1200: 74 65 20 61 20 6e 65 77 20 74 61 62 6c 65 20 77  te a new table w
1210: 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d  ith the same nam
1220: 65 20 61 73 20 61 20 74 61 62 6c 65 20 69 6e 20  e as a table in 
1230: 0a 61 6e 20 61 74 74 61 63 68 65 64 20 64 61 74  .an attached dat
1240: 61 62 61 73 65 2c 20 62 75 74 20 79 6f 75 20 63  abase, but you c
1250: 61 6e 20 61 74 74 61 63 68 20 61 20 64 61 74 61  an attach a data
1260: 62 61 73 65 20 77 68 69 63 68 20 63 6f 6e 74 61  base which conta
1270: 69 6e 73 0a 74 61 62 6c 65 73 20 77 68 6f 73 65  ins.tables whose
1280: 20 6e 61 6d 65 73 20 61 72 65 20 64 75 70 6c 69   names are dupli
1290: 63 61 74 65 73 20 6f 66 20 74 61 62 6c 65 73 20  cates of tables 
12a0: 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61  in the main data
12b0: 62 61 73 65 2e 20 20 49 74 20 69 73 20 0a 61 6c  base.  It is .al
12c0: 73 6f 20 70 65 72 6d 69 73 73 69 62 6c 65 20 74  so permissible t
12d0: 6f 20 61 74 74 61 63 68 20 74 68 65 20 73 61 6d  o attach the sam
12e0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
12f0: 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 2e 3c  multiple times.<
1300: 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65 73 20 69  /p>..<p>Tables i
1310: 6e 20 61 6e 20 61 74 74 61 63 68 65 64 20 64 61  n an attached da
1320: 74 61 62 61 73 65 20 63 61 6e 20 62 65 20 72 65  tabase can be re
1330: 66 65 72 72 65 64 20 74 6f 20 75 73 69 6e 67 20  ferred to using 
1340: 74 68 65 20 73 79 6e 74 61 78 20 0a 3c 69 3e 64  the syntax .<i>d
1350: 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e 74 61 62  atabase-name.tab
1360: 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 20 20 49 66  le-name</i>.  If
1370: 20 61 6e 20 61 74 74 61 63 68 65 64 20 74 61 62   an attached tab
1380: 6c 65 20 64 6f 65 73 6e 27 74 20 68 61 76 65 20  le doesn't have 
1390: 0a 61 20 64 75 70 6c 69 63 61 74 65 20 74 61 62  .a duplicate tab
13a0: 6c 65 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 6d  le name in the m
13b0: 61 69 6e 20 64 61 74 61 62 61 73 65 2c 20 69 74  ain database, it
13c0: 20 64 6f 65 73 6e 27 74 20 72 65 71 75 69 72 65   doesn't require
13d0: 20 61 20 0a 64 61 74 61 62 61 73 65 20 6e 61 6d   a .database nam
13e0: 65 20 70 72 65 66 69 78 2e 20 20 57 68 65 6e 20  e prefix.  When 
13f0: 61 20 64 61 74 61 62 61 73 65 20 69 73 20 61 74  a database is at
1400: 74 61 63 68 65 64 2c 20 61 6c 6c 20 6f 66 20 69  tached, all of i
1410: 74 73 20 0a 74 61 62 6c 65 73 20 77 68 69 63 68  ts .tables which
1420: 20 64 6f 6e 27 74 20 68 61 76 65 20 64 75 70 6c   don't have dupl
1430: 69 63 61 74 65 20 6e 61 6d 65 73 20 62 65 63 6f  icate names beco
1440: 6d 65 20 74 68 65 20 27 64 65 66 61 75 6c 74 27  me the 'default'
1450: 20 74 61 62 6c 65 0a 6f 66 20 74 68 61 74 20 6e   table.of that n
1460: 61 6d 65 2e 20 20 41 6e 79 20 74 61 62 6c 65 73  ame.  Any tables
1470: 20 6f 66 20 74 68 61 74 20 6e 61 6d 65 20 61 74   of that name at
1480: 74 61 63 68 65 64 20 61 66 74 65 72 77 61 72 64  tached afterward
1490: 73 20 72 65 71 75 69 72 65 20 74 68 65 20 74 61  s require the ta
14a0: 62 6c 65 20 0a 70 72 65 66 69 78 2e 20 49 66 20  ble .prefix. If 
14b0: 74 68 65 20 27 64 65 66 61 75 6c 74 27 20 74 61  the 'default' ta
14c0: 62 6c 65 20 6f 66 20 61 20 67 69 76 65 6e 20 6e  ble of a given n
14d0: 61 6d 65 20 69 73 20 64 65 74 61 63 68 65 64 2c  ame is detached,
14e0: 20 74 68 65 6e 20 0a 74 68 65 20 6c 61 73 74 20   then .the last 
14f0: 74 61 62 6c 65 20 6f 66 20 74 68 61 74 20 6e 61  table of that na
1500: 6d 65 20 61 74 74 61 63 68 65 64 20 62 65 63 6f  me attached beco
1510: 6d 65 73 20 74 68 65 20 6e 65 77 20 64 65 66 61  mes the new defa
1520: 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65  ult.</p>..<p>Whe
1530: 6e 20 74 68 65 72 65 20 61 72 65 20 61 74 74 61  n there are atta
1540: 63 68 65 64 20 64 61 74 61 62 61 73 65 73 2c 20  ched databases, 
1550: 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 61 72 65  transactions are
1560: 20 6e 6f 74 20 61 74 6f 6d 69 63 2e 20 0a 54 72   not atomic. .Tr
1570: 61 6e 73 61 63 74 69 6f 6e 73 20 63 6f 6e 74 69  ansactions conti
1580: 6e 75 65 20 74 6f 20 62 65 20 61 74 6f 6d 69 63  nue to be atomic
1590: 20 77 69 74 68 69 6e 20 65 61 63 68 20 69 6e 64   within each ind
15a0: 69 76 69 64 75 61 6c 0a 64 61 74 61 62 61 73 65  ividual.database
15b0: 20 66 69 6c 65 2e 20 42 75 74 20 69 66 20 79 6f   file. But if yo
15c0: 75 72 20 6d 61 63 68 69 6e 65 20 63 72 61 73 68  ur machine crash
15d0: 65 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65  es in the middle
15e0: 0a 6f 66 20 61 20 43 4f 4d 4d 49 54 20 77 68 65  .of a COMMIT whe
15f0: 72 65 20 79 6f 75 20 68 61 76 65 20 75 70 64 61  re you have upda
1600: 74 65 64 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20  ted two or more 
1610: 64 61 74 61 62 61 73 65 0a 66 69 6c 65 73 2c 20  database.files, 
1620: 73 6f 6d 65 20 6f 66 20 74 68 6f 73 65 20 66 69  some of those fi
1630: 6c 65 73 20 6d 69 67 68 74 20 67 65 74 20 74 68  les might get th
1640: 65 20 63 68 61 6e 67 65 73 20 77 68 65 72 65 20  e changes where 
1650: 6f 74 68 65 72 73 0a 6d 69 67 68 74 20 6e 6f 74  others.might not
1660: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20  .</p>..<p>There 
1670: 69 73 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  is a compile-tim
1680: 65 20 6c 69 6d 69 74 20 6f 66 20 31 30 20 61 74  e limit of 10 at
1690: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 20  tached database 
16a0: 66 69 6c 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45  files.</p>..<p>E
16b0: 78 65 63 75 74 69 6e 67 20 61 20 42 45 47 49 4e  xecuting a BEGIN
16c0: 20 54 52 41 4e 53 41 43 54 49 4f 4e 20 73 74 61   TRANSACTION sta
16d0: 74 65 6d 65 6e 74 20 6c 6f 63 6b 73 20 61 6c 6c  tement locks all
16e0: 20 64 61 74 61 62 61 73 65 0a 66 69 6c 65 73 2c   database.files,
16f0: 20 73 6f 20 74 68 69 73 20 66 65 61 74 75 72 65   so this feature
1700: 20 63 61 6e 6e 6f 74 20 28 63 75 72 72 65 6e 74   cannot (current
1710: 6c 79 29 20 62 65 20 75 73 65 64 20 74 6f 20 69  ly) be used to i
1720: 6e 63 72 65 61 73 65 20 0a 63 6f 6e 63 75 72 72  ncrease .concurr
1730: 61 6e 63 79 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  ancy.</p>.}...Se
1740: 63 74 69 6f 6e 20 7b 42 45 47 49 4e 20 54 52 41  ction {BEGIN TRA
1750: 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61  NSACTION} transa
1760: 63 74 69 6f 6e 0a 0a 53 79 6e 74 61 78 20 7b 73  ction..Syntax {s
1770: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
1780: 42 45 47 49 4e 20 5b 54 52 41 4e 53 41 43 54 49  BEGIN [TRANSACTI
1790: 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 20 5b 4f 4e  ON [<name>]] [ON
17a0: 20 43 4f 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c   CONFLICT <confl
17b0: 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 5d 0a  ict-algorithm>].
17c0: 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  }.Syntax {sql-st
17d0: 61 74 65 6d 65 6e 74 7d 20 7b 0a 45 4e 44 20 5b  atement} {.END [
17e0: 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61  TRANSACTION [<na
17f0: 6d 65 3e 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b  me>]].}.Syntax {
1800: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
1810: 0a 43 4f 4d 4d 49 54 20 5b 54 52 41 4e 53 41 43  .COMMIT [TRANSAC
1820: 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d  TION [<name>]].}
1830: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
1840: 74 65 6d 65 6e 74 7d 20 7b 0a 52 4f 4c 4c 42 41  tement} {.ROLLBA
1850: 43 4b 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e 20  CK [TRANSACTION 
1860: 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 0a 70 75 74  [<name>]].}..put
1870: 73 20 7b 0a 3c 70 3e 42 65 67 69 6e 6e 69 6e 67  s {.<p>Beginning
1880: 20 69 6e 20 76 65 72 73 69 6f 6e 20 32 2e 30 2c   in version 2.0,
1890: 20 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74 73   SQLite supports
18a0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 77 69   transactions wi
18b0: 74 68 0a 72 6f 6c 6c 62 61 63 6b 20 61 6e 64 20  th.rollback and 
18c0: 61 74 6f 6d 69 63 20 63 6f 6d 6d 69 74 2e 20 20  atomic commit.  
18d0: 53 65 65 20 3c 61 20 68 72 65 66 3d 22 23 61 74  See <a href="#at
18e0: 74 61 63 68 22 3e 41 54 54 41 43 48 3c 2f 61 3e  tach">ATTACH</a>
18f0: 20 66 6f 72 0a 61 6e 20 65 78 63 65 70 74 69 6f   for.an exceptio
1900: 6e 20 77 68 65 6e 20 74 68 65 72 65 20 61 72 65  n when there are
1910: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
1920: 73 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ses.</p>..<p>The
1930: 20 6f 70 74 69 6f 6e 61 6c 20 74 72 61 6e 73 61   optional transa
1940: 63 74 69 6f 6e 20 6e 61 6d 65 20 69 73 20 69 67  ction name is ig
1950: 6e 6f 72 65 64 2e 20 53 51 4c 69 74 65 20 63 75  nored. SQLite cu
1960: 72 72 65 6e 74 6c 79 20 0a 64 6f 65 73 6e 27 74  rrently .doesn't
1970: 20 61 6c 6c 6f 77 20 6e 65 73 74 65 64 20 74 72   allow nested tr
1980: 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20 41 74 74  ansactions.  Att
1990: 65 6d 70 74 69 6e 67 20 74 6f 20 73 74 61 72 74  empting to start
19a0: 20 61 20 6e 65 77 20 0a 74 72 61 6e 73 61 63 74   a new .transact
19b0: 69 6f 6e 20 69 6e 73 69 64 65 20 61 6e 6f 74 68  ion inside anoth
19c0: 65 72 20 69 73 20 61 6e 20 65 72 72 6f 72 2e 3c  er is an error.<
19d0: 2f 70 3e 0a 0a 3c 70 3e 0a 4e 6f 20 63 68 61 6e  /p>..<p>.No chan
19e0: 67 65 73 20 63 61 6e 20 62 65 20 6d 61 64 65 20  ges can be made 
19f0: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
1a00: 65 78 63 65 70 74 20 77 69 74 68 69 6e 20 61 20  except within a 
1a10: 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 41 6e 79  transaction..Any
1a20: 20 63 6f 6d 6d 61 6e 64 20 74 68 61 74 20 63 68   command that ch
1a30: 61 6e 67 65 73 20 74 68 65 20 64 61 74 61 62 61  anges the databa
1a40: 73 65 20 28 62 61 73 69 63 61 6c 6c 79 2c 20 61  se (basically, a
1a50: 6e 79 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a 6f  ny SQL command.o
1a60: 74 68 65 72 20 74 68 61 6e 20 53 45 4c 45 43 54  ther than SELECT
1a70: 29 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63  ) will automatic
1a80: 61 6c 6c 79 20 73 74 61 72 74 20 61 20 74 72 61  ally start a tra
1a90: 6e 73 61 63 74 69 6f 6e 20 69 66 0a 6f 6e 65 20  nsaction if.one 
1aa0: 69 73 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 69  is not already i
1ab0: 6e 20 65 66 66 65 63 74 2e 20 20 41 75 74 6f 6d  n effect.  Autom
1ac0: 61 74 69 63 61 6c 6c 79 20 73 74 61 72 74 65 64  atically started
1ad0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 0a 61 72   transactions.ar
1ae0: 65 20 63 6f 6d 6d 69 74 74 65 64 20 61 74 20 74  e committed at t
1af0: 68 65 20 63 6f 6e 63 6c 75 73 69 6f 6e 20 6f 66  he conclusion of
1b00: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f   the command..</
1b10: 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73 61 63 74  p>..<p>.Transact
1b20: 69 6f 6e 73 20 63 61 6e 20 62 65 20 73 74 61 72  ions can be star
1b30: 74 65 64 20 6d 61 6e 75 61 6c 6c 79 20 75 73 69  ted manually usi
1b40: 6e 67 20 74 68 65 20 42 45 47 49 4e 0a 63 6f 6d  ng the BEGIN.com
1b50: 6d 61 6e 64 2e 20 53 75 63 68 20 74 72 61 6e 73  mand. Such trans
1b60: 61 63 74 69 6f 6e 73 20 75 73 75 61 6c 6c 79 20  actions usually 
1b70: 70 65 72 73 69 73 74 20 75 6e 74 69 6c 20 74 68  persist until th
1b80: 65 20 6e 65 78 74 0a 43 4f 4d 4d 49 54 20 6f 72  e next.COMMIT or
1b90: 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e   ROLLBACK comman
1ba0: 64 2e 20 42 75 74 20 61 20 74 72 61 6e 73 61 63  d. But a transac
1bb0: 74 69 6f 6e 20 77 69 6c 6c 20 61 6c 73 6f 20 0a  tion will also .
1bc0: 52 4f 4c 4c 42 41 43 4b 20 69 66 20 74 68 65 20  ROLLBACK if the 
1bd0: 64 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73  database is clos
1be0: 65 64 20 6f 72 20 69 66 20 61 6e 20 65 72 72 6f  ed or if an erro
1bf0: 72 20 6f 63 63 75 72 73 0a 61 6e 64 20 74 68 65  r occurs.and the
1c00: 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6e 66 6c 69   ROLLBACK confli
1c10: 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
1c20: 67 6f 72 69 74 68 6d 20 69 73 20 73 70 65 63 69  gorithm is speci
1c30: 66 69 65 64 2e 0a 53 65 65 20 74 68 65 20 64 6f  fied..See the do
1c40: 63 75 6d 65 6e 74 69 6f 6e 20 6f 6e 20 74 68 65  cumention on the
1c50: 20 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c   <a href="#confl
1c60: 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54  ict">ON CONFLICT
1c70: 3c 2f 61 3e 0a 63 6c 61 75 73 65 20 66 6f 72 20  </a>.clause for 
1c80: 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
1c90: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65  mation about the
1ca0: 20 52 4f 4c 4c 42 41 43 4b 0a 63 6f 6e 66 6c 69   ROLLBACK.confli
1cb0: 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
1cc0: 67 6f 72 69 74 68 6d 2e 0a 3c 2f 70 3e 0a 0a 3c  gorithm..</p>..<
1cd0: 70 3e 0a 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  p>.The optional 
1ce0: 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75  ON CONFLICT clau
1cf0: 73 65 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66  se at the end of
1d00: 20 61 20 42 45 47 49 4e 20 73 74 61 74 65 6d 65   a BEGIN stateme
1d10: 6e 74 0a 63 61 6e 20 62 65 20 75 73 65 64 20 74  nt.can be used t
1d20: 6f 20 63 68 61 6e 67 65 64 20 74 68 65 20 64 65  o changed the de
1d30: 66 61 75 6c 74 20 63 6f 6e 66 6c 69 63 74 20 72  fault conflict r
1d40: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
1d50: 74 68 6d 2e 0a 54 68 65 20 6e 6f 72 6d 61 6c 20  thm..The normal 
1d60: 64 65 66 61 75 6c 74 20 69 73 20 41 42 4f 52 54  default is ABORT
1d70: 2e 20 20 49 66 20 61 6e 20 61 6c 74 65 72 6e 61  .  If an alterna
1d80: 74 69 76 65 20 69 73 20 73 70 65 63 69 66 69 65  tive is specifie
1d90: 64 20 62 79 0a 74 68 65 20 4f 4e 20 43 4f 4e 46  d by.the ON CONF
1da0: 4c 49 43 54 20 63 6c 61 75 73 65 20 6f 66 20 61  LICT clause of a
1db0: 20 42 45 47 49 4e 2c 20 74 68 65 6e 20 74 68 61   BEGIN, then tha
1dc0: 74 20 61 6c 74 65 72 6e 61 74 69 76 65 20 69 73  t alternative is
1dd0: 20 75 73 65 64 0a 61 73 20 74 68 65 20 64 65 66   used.as the def
1de0: 61 75 6c 74 20 66 6f 72 20 61 6c 6c 20 63 6f 6d  ault for all com
1df0: 6d 61 6e 64 73 20 77 69 74 68 69 6e 20 74 68 65  mands within the
1e00: 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 54   transaction.  T
1e10: 68 65 20 64 65 66 61 75 6c 74 0a 61 6c 67 6f 72  he default.algor
1e20: 69 74 68 6d 20 69 73 20 6f 76 65 72 72 69 64 64  ithm is overridd
1e30: 65 6e 20 62 79 20 4f 4e 20 43 4f 4e 46 4c 49 43  en by ON CONFLIC
1e40: 54 20 63 6c 61 75 73 65 73 20 6f 6e 20 69 6e 64  T clauses on ind
1e50: 69 76 69 64 75 61 6c 0a 63 6f 6e 73 74 72 61 69  ividual.constrai
1e60: 6e 74 73 20 77 69 74 68 69 6e 20 74 68 65 20 43  nts within the C
1e70: 52 45 41 54 45 20 54 41 42 4c 45 20 6f 72 20 43  REATE TABLE or C
1e80: 52 45 41 54 45 20 49 4e 44 45 58 20 73 74 61 74  REATE INDEX stat
1e90: 65 6d 65 6e 74 73 0a 61 6e 64 20 62 79 20 74 68  ements.and by th
1ea0: 65 20 4f 52 20 63 6c 61 75 73 65 73 20 6f 6e 20  e OR clauses on 
1eb0: 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c 20 61 6e  COPY, INSERT, an
1ec0: 64 20 55 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64  d UPDATE command
1ed0: 73 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74  s..</p>.}...Sect
1ee0: 69 6f 6e 20 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d  ion comment comm
1ef0: 65 6e 74 0a 0a 53 79 6e 74 61 78 20 7b 63 6f 6d  ent..Syntax {com
1f00: 6d 65 6e 74 7d 20 7b 3c 53 51 4c 2d 63 6f 6d 6d  ment} {<SQL-comm
1f10: 65 6e 74 3e 20 7c 20 3c 43 2d 63 6f 6d 6d 65 6e  ent> | <C-commen
1f20: 74 3e 0a 7d 20 7b 53 51 4c 2d 63 6f 6d 6d 65 6e  t>.} {SQL-commen
1f30: 74 7d 20 7b 2d 2d 20 3c 73 69 6e 67 6c 65 2d 6c  t} {-- <single-l
1f40: 69 6e 65 3e 0a 7d 20 7b 43 2d 63 6f 6d 6d 65 6e  ine>.} {C-commen
1f50: 74 7d 20 7b 2f 53 54 41 52 20 3c 6d 75 6c 74 69  t} {/STAR <multi
1f60: 70 6c 65 2d 6c 69 6e 65 73 3e 20 5b 53 54 41 52  ple-lines> [STAR
1f70: 2f 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  /].}..puts {.<p>
1f80: 20 43 6f 6d 6d 65 6e 74 73 20 61 72 65 6e 27 74   Comments aren't
1f90: 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 2c 20 62   SQL commands, b
1fa0: 75 74 20 63 61 6e 20 6f 63 63 75 72 20 69 6e 20  ut can occur in 
1fb0: 53 51 4c 20 71 75 65 72 69 65 73 2e 20 54 68 65  SQL queries. The
1fc0: 79 20 61 72 65 20 0a 74 72 65 61 74 65 64 20 61  y are .treated a
1fd0: 73 20 77 68 69 74 65 73 70 61 63 65 20 62 79 20  s whitespace by 
1fe0: 74 68 65 20 70 61 72 73 65 72 2e 20 54 68 65 79  the parser. They
1ff0: 20 63 61 6e 20 62 65 67 69 6e 20 61 6e 79 77 68   can begin anywh
2000: 65 72 65 20 77 68 69 74 65 73 70 61 63 65 20 0a  ere whitespace .
2010: 63 61 6e 20 62 65 20 66 6f 75 6e 64 2c 20 69 6e  can be found, in
2020: 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65 20 65  cluding inside e
2030: 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 20  xpressions that 
2040: 73 70 61 6e 20 6d 75 6c 74 69 70 6c 65 20 6c 69  span multiple li
2050: 6e 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 20 53  nes..</p>..<p> S
2060: 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 6f 6e 6c 79  QL comments only
2070: 20 65 78 74 65 6e 64 20 74 6f 20 74 68 65 20 65   extend to the e
2080: 6e 64 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  nd of the curren
2090: 74 20 6c 69 6e 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  t line.</p>..<p>
20a0: 20 43 20 63 6f 6d 6d 65 6e 74 73 20 63 61 6e 20   C comments can 
20b0: 73 70 61 6e 20 61 6e 79 20 6e 75 6d 62 65 72 20  span any number 
20c0: 6f 66 20 6c 69 6e 65 73 2e 20 49 66 20 74 68 65  of lines. If the
20d0: 72 65 20 69 73 20 6e 6f 20 74 65 72 6d 69 6e 61  re is no termina
20e0: 74 69 6e 67 0a 64 65 6c 69 6d 69 74 65 72 2c 20  ting.delimiter, 
20f0: 74 68 65 79 20 65 78 74 65 6e 64 20 74 6f 20 74  they extend to t
2100: 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 69 6e  he end of the in
2110: 70 75 74 2e 20 54 68 69 73 20 69 73 20 6e 6f 74  put. This is not
2120: 20 74 72 65 61 74 65 64 20 61 73 20 0a 61 6e 20   treated as .an 
2130: 65 72 72 6f 72 2e 20 41 20 6e 65 77 20 53 51 4c  error. A new SQL
2140: 20 73 74 61 74 65 6d 65 6e 74 20 63 61 6e 20 62   statement can b
2150: 65 67 69 6e 20 6f 6e 20 61 20 6c 69 6e 65 20 61  egin on a line a
2160: 66 74 65 72 20 61 20 6d 75 6c 74 69 6c 69 6e 65  fter a multiline
2170: 20 0a 63 6f 6d 6d 65 6e 74 20 65 6e 64 73 2e 20   .comment ends. 
2180: 43 20 63 6f 6d 6d 65 6e 74 73 20 63 61 6e 20 62  C comments can b
2190: 65 20 65 6d 62 65 64 64 65 64 20 61 6e 79 77 68  e embedded anywh
21a0: 65 72 65 20 77 68 69 74 65 73 70 61 63 65 20 63  ere whitespace c
21b0: 61 6e 20 6f 63 63 75 72 2c 20 0a 69 6e 63 6c 75  an occur, .inclu
21c0: 64 69 6e 67 20 69 6e 73 69 64 65 20 65 78 70 72  ding inside expr
21d0: 65 73 73 69 6f 6e 73 2c 20 61 6e 64 20 69 6e 20  essions, and in 
21e0: 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 6f 74  the middle of ot
21f0: 68 65 72 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  her SQL statemen
2200: 74 73 2e 0a 43 20 63 6f 6d 6d 65 6e 74 73 20 64  ts..C comments d
2210: 6f 20 6e 6f 74 20 6e 65 73 74 2e 20 53 51 4c 20  o not nest. SQL 
2220: 63 6f 6d 6d 65 6e 74 73 20 69 6e 73 69 64 65 20  comments inside 
2230: 61 20 43 20 63 6f 6d 6d 65 6e 74 20 77 69 6c 6c  a C comment will
2240: 20 62 65 20 69 67 6e 6f 72 65 64 2e 0a 3c 2f 70   be ignored..</p
2250: 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 43 4f  >.}...Section CO
2260: 50 59 20 63 6f 70 79 0a 0a 53 79 6e 74 61 78 20  PY copy..Syntax 
2270: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
2280: 7b 0a 43 4f 50 59 20 5b 20 4f 52 20 3c 63 6f 6e  {.COPY [ OR <con
2290: 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e  flict-algorithm>
22a0: 20 5d 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61   ] [<database-na
22b0: 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61  me> .] <table-na
22c0: 6d 65 3e 20 46 52 4f 4d 20 3c 66 69 6c 65 6e 61  me> FROM <filena
22d0: 6d 65 3e 0a 5b 20 55 53 49 4e 47 20 44 45 4c 49  me>.[ USING DELI
22e0: 4d 49 54 45 52 53 20 3c 64 65 6c 69 6d 3e 20 5d  MITERS <delim> ]
22f0: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
2300: 65 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 69  e COPY command i
2310: 73 20 61 6e 20 65 78 74 65 6e 73 69 6f 6e 20 75  s an extension u
2320: 73 65 64 20 74 6f 20 6c 6f 61 64 20 6c 61 72 67  sed to load larg
2330: 65 20 61 6d 6f 75 6e 74 73 20 6f 66 0a 64 61 74  e amounts of.dat
2340: 61 20 69 6e 74 6f 20 61 20 74 61 62 6c 65 2e 20  a into a table. 
2350: 20 49 74 20 69 73 20 6d 6f 64 65 6c 65 64 20 61   It is modeled a
2360: 66 74 65 72 20 61 20 73 69 6d 69 6c 61 72 20 63  fter a similar c
2370: 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 0a 69 6e 20  ommand found.in 
2380: 50 6f 73 74 67 72 65 53 51 4c 2e 20 20 49 6e 20  PostgreSQL.  In 
2390: 66 61 63 74 2c 20 74 68 65 20 53 51 4c 69 74 65  fact, the SQLite
23a0: 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 69 73   COPY command is
23b0: 20 73 70 65 63 69 66 69 63 61 6c 6c 79 0a 64 65   specifically.de
23c0: 73 69 67 6e 65 64 20 74 6f 20 62 65 20 61 62 6c  signed to be abl
23d0: 65 20 74 6f 20 72 65 61 64 20 74 68 65 20 6f 75  e to read the ou
23e0: 74 70 75 74 20 6f 66 20 74 68 65 20 50 6f 73 74  tput of the Post
23f0: 67 72 65 53 51 4c 20 64 75 6d 70 0a 75 74 69 6c  greSQL dump.util
2400: 69 74 79 20 3c 62 3e 70 67 5f 64 75 6d 70 3c 2f  ity <b>pg_dump</
2410: 62 3e 20 73 6f 20 74 68 61 74 20 64 61 74 61 20  b> so that data 
2420: 63 61 6e 20 62 65 20 65 61 73 69 6c 79 20 74 72  can be easily tr
2430: 61 6e 73 66 65 72 72 65 64 20 66 72 6f 6d 0a 50  ansferred from.P
2440: 6f 73 74 67 72 65 53 51 4c 20 69 6e 74 6f 20 53  ostgreSQL into S
2450: 51 4c 69 74 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  QLite.</p>..<p>T
2460: 68 65 20 74 61 62 6c 65 2d 6e 61 6d 65 20 69 73  he table-name is
2470: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 6e 20   the name of an 
2480: 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65 20 77  existing table w
2490: 68 69 63 68 20 69 73 20 74 6f 0a 62 65 20 66 69  hich is to.be fi
24a0: 6c 6c 65 64 20 77 69 74 68 20 64 61 74 61 2e 20  lled with data. 
24b0: 20 54 68 65 20 66 69 6c 65 6e 61 6d 65 20 69 73   The filename is
24c0: 20 61 20 73 74 72 69 6e 67 20 6f 72 20 69 64 65   a string or ide
24d0: 6e 74 69 66 69 65 72 20 74 68 61 74 0a 6e 61 6d  ntifier that.nam
24e0: 65 73 20 61 20 66 69 6c 65 20 66 72 6f 6d 20 77  es a file from w
24f0: 68 69 63 68 20 64 61 74 61 20 77 69 6c 6c 20 62  hich data will b
2500: 65 20 72 65 61 64 2e 20 20 54 68 65 20 66 69 6c  e read.  The fil
2510: 65 6e 61 6d 65 20 63 61 6e 20 62 65 0a 74 68 65  ename can be.the
2520: 20 3c 62 3e 53 54 44 49 4e 3c 2f 62 3e 20 74 6f   <b>STDIN</b> to
2530: 20 72 65 61 64 20 64 61 74 61 20 66 72 6f 6d 20   read data from 
2540: 73 74 61 6e 64 61 72 64 20 69 6e 70 75 74 2e 3c  standard input.<
2550: 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68 20 6c 69 6e  /p>..<p>Each lin
2560: 65 20 6f 66 20 74 68 65 20 69 6e 70 75 74 20 66  e of the input f
2570: 69 6c 65 20 69 73 20 63 6f 6e 76 65 72 74 65 64  ile is converted
2580: 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65 20 72   into a single r
2590: 65 63 6f 72 64 0a 69 6e 20 74 68 65 20 74 61 62  ecord.in the tab
25a0: 6c 65 2e 20 20 43 6f 6c 75 6d 6e 73 20 61 72 65  le.  Columns are
25b0: 20 73 65 70 61 72 61 74 65 64 20 62 79 20 74 61   separated by ta
25c0: 62 73 2e 20 20 49 66 20 61 20 74 61 62 20 6f 63  bs.  If a tab oc
25d0: 63 75 72 73 20 61 73 0a 64 61 74 61 20 77 69 74  curs as.data wit
25e0: 68 69 6e 20 61 20 63 6f 6c 75 6d 6e 2c 20 74 68  hin a column, th
25f0: 65 6e 20 74 68 61 74 20 74 61 62 20 69 73 20 70  en that tab is p
2600: 72 65 63 65 64 65 64 20 62 79 20 61 20 62 61 73  receded by a bas
2610: 6b 73 6c 61 73 68 20 22 5c 22 0a 63 68 61 72 61  kslash "\".chara
2620: 63 74 65 72 2e 20 20 41 20 62 61 73 6b 73 6c 61  cter.  A basksla
2630: 73 68 20 69 6e 20 74 68 65 20 64 61 74 61 20 61  sh in the data a
2640: 70 70 65 61 72 73 20 61 73 20 74 77 6f 20 62 61  ppears as two ba
2650: 63 6b 73 6c 61 73 68 65 73 20 69 6e 0a 61 20 72  ckslashes in.a r
2660: 6f 77 2e 20 20 54 68 65 20 6f 70 74 69 6f 6e 61  ow.  The optiona
2670: 6c 20 55 53 49 4e 47 20 44 45 4c 49 4d 49 54 45  l USING DELIMITE
2680: 52 53 20 63 6c 61 75 73 65 20 63 61 6e 20 73 70  RS clause can sp
2690: 65 63 69 66 79 20 61 20 64 65 6c 69 6d 69 74 65  ecify a delimite
26a0: 72 0a 6f 74 68 65 72 20 74 68 61 6e 20 74 61 62  r.other than tab
26b0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 20 63  .</p>..<p>If a c
26c0: 6f 6c 75 6d 6e 20 63 6f 6e 73 69 73 74 73 20 6f  olumn consists o
26d0: 66 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20  f the character 
26e0: 22 5c 4e 22 2c 20 74 68 61 74 20 63 6f 6c 75 6d  "\N", that colum
26f0: 6e 20 69 73 20 66 69 6c 6c 65 64 0a 77 69 74 68  n is filled.with
2700: 20 74 68 65 20 76 61 6c 75 65 20 4e 55 4c 4c 2e   the value NULL.
2710: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74  </p>..<p>The opt
2720: 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63  ional conflict-c
2730: 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65  lause allows the
2740: 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f   specification o
2750: 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65  f an alternative
2760: 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66  .constraint conf
2770: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
2780: 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75 73 65  algorithm to use
2790: 20 66 6f 72 20 74 68 69 73 20 6f 6e 65 20 63 6f   for this one co
27a0: 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73  mmand..See the s
27b0: 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61  ection titled.<a
27c0: 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74   href="#conflict
27d0: 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61  ">ON CONFLICT</a
27e0: 3e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  > for additional
27f0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70   information.</p
2800: 3e 0a 0a 3c 70 3e 57 68 65 6e 20 74 68 65 20 69  >..<p>When the i
2810: 6e 70 75 74 20 64 61 74 61 20 73 6f 75 72 63 65  nput data source
2820: 20 69 73 20 53 54 44 49 4e 2c 20 74 68 65 20 69   is STDIN, the i
2830: 6e 70 75 74 20 63 61 6e 20 62 65 20 74 65 72 6d  nput can be term
2840: 69 6e 61 74 65 64 0a 62 79 20 61 20 6c 69 6e 65  inated.by a line
2850: 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 6f   that contains o
2860: 6e 6c 79 20 61 20 62 61 73 6b 73 6c 61 73 68 20  nly a baskslash 
2870: 61 6e 64 20 61 20 64 6f 74 3a 7d 0a 70 75 74 73  and a dot:}.puts
2880: 20 22 5c 22 5b 4f 70 65 72 61 74 6f 72 20 5c 5c   "\"[Operator \\
2890: 2e 5d 5c 22 2e 3c 2f 70 3e 22 0a 0a 0a 53 65 63  .]\".</p>"...Sec
28a0: 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 49 4e 44  tion {CREATE IND
28b0: 45 58 7d 20 63 72 65 61 74 65 69 6e 64 65 78 0a  EX} createindex.
28c0: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
28d0: 74 65 6d 65 6e 74 7d 20 7b 0a 43 52 45 41 54 45  tement} {.CREATE
28e0: 20 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41   [TEMP | TEMPORA
28f0: 52 59 5d 20 5b 55 4e 49 51 55 45 5d 20 49 4e 44  RY] [UNIQUE] IND
2900: 45 58 20 3c 69 6e 64 65 78 2d 6e 61 6d 65 3e 20  EX <index-name> 
2910: 0a 4f 4e 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e  .ON [<database-n
2920: 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e  ame> .] <table-n
2930: 61 6d 65 3e 20 28 20 3c 63 6f 6c 75 6d 6e 2d 6e  ame> ( <column-n
2940: 61 6d 65 3e 20 5b 2c 20 3c 63 6f 6c 75 6d 6e 2d  ame> [, <column-
2950: 6e 61 6d 65 3e 5d 2a 20 29 0a 5b 20 4f 4e 20 43  name>]* ).[ ON C
2960: 4f 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c 69 63  ONFLICT <conflic
2970: 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 20 5d 0a 7d  t-algorithm> ].}
2980: 20 7b 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 7d 20 7b   {column-name} {
2990: 0a 3c 6e 61 6d 65 3e 20 5b 20 41 53 43 20 7c 20  .<name> [ ASC | 
29a0: 44 45 53 43 20 5d 0a 7d 0a 0a 70 75 74 73 20 7b  DESC ].}..puts {
29b0: 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20 49  .<p>The CREATE I
29c0: 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e  NDEX command con
29d0: 73 69 73 74 73 20 6f 66 20 74 68 65 20 6b 65 79  sists of the key
29e0: 77 6f 72 64 73 20 22 43 52 45 41 54 45 20 49 4e  words "CREATE IN
29f0: 44 45 58 22 20 66 6f 6c 6c 6f 77 65 64 0a 62 79  DEX" followed.by
2a00: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
2a10: 20 6e 65 77 20 69 6e 64 65 78 2c 20 74 68 65 20   new index, the 
2a20: 6b 65 79 77 6f 72 64 20 22 4f 4e 22 2c 20 74 68  keyword "ON", th
2a30: 65 20 6e 61 6d 65 20 6f 66 20 61 20 70 72 65 76  e name of a prev
2a40: 69 6f 75 73 6c 79 0a 63 72 65 61 74 65 64 20 74  iously.created t
2a50: 61 62 6c 65 20 74 68 61 74 20 69 73 20 74 6f 20  able that is to 
2a60: 62 65 20 69 6e 64 65 78 65 64 2c 20 61 6e 64 20  be indexed, and 
2a70: 61 20 70 61 72 65 6e 74 68 65 73 69 7a 65 64 20  a parenthesized 
2a80: 6c 69 73 74 20 6f 66 20 6e 61 6d 65 73 20 6f 66  list of names of
2a90: 0a 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20  .columns in the 
2aa0: 74 61 62 6c 65 20 74 68 61 74 20 61 72 65 20 75  table that are u
2ab0: 73 65 64 20 66 6f 72 20 74 68 65 20 69 6e 64 65  sed for the inde
2ac0: 78 20 6b 65 79 2e 0a 45 61 63 68 20 63 6f 6c 75  x key..Each colu
2ad0: 6d 6e 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 66  mn name can be f
2ae0: 6f 6c 6c 6f 77 65 64 20 62 79 20 6f 6e 65 20 6f  ollowed by one o
2af0: 66 20 74 68 65 20 22 41 53 43 22 20 6f 72 20 22  f the "ASC" or "
2b00: 44 45 53 43 22 20 6b 65 79 77 6f 72 64 73 0a 74  DESC" keywords.t
2b10: 6f 20 69 6e 64 69 63 61 74 65 20 73 6f 72 74 20  o indicate sort 
2b20: 6f 72 64 65 72 2c 20 62 75 74 20 74 68 65 20 73  order, but the s
2b30: 6f 72 74 20 6f 72 64 65 72 20 69 73 20 69 67 6e  ort order is ign
2b40: 6f 72 65 64 20 69 6e 20 74 68 65 20 63 75 72 72  ored in the curr
2b50: 65 6e 74 0a 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ent.implementati
2b60: 6f 6e 2e 20 20 53 6f 72 74 69 6e 67 20 69 73 20  on.  Sorting is 
2b70: 61 6c 77 61 79 73 20 64 6f 6e 65 20 69 6e 20 61  always done in a
2b80: 73 63 65 6e 64 69 6e 67 20 6f 72 64 65 72 2e 3c  scending order.<
2b90: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72  /p>..<p>There ar
2ba0: 65 20 6e 6f 20 61 72 62 69 74 72 61 72 79 20 6c  e no arbitrary l
2bb0: 69 6d 69 74 73 20 6f 6e 20 74 68 65 20 6e 75 6d  imits on the num
2bc0: 62 65 72 20 6f 66 20 69 6e 64 69 63 65 73 20 74  ber of indices t
2bd0: 68 61 74 20 63 61 6e 20 62 65 0a 61 74 74 61 63  hat can be.attac
2be0: 68 65 64 20 74 6f 20 61 20 73 69 6e 67 6c 65 20  hed to a single 
2bf0: 74 61 62 6c 65 2c 20 6e 6f 72 20 6f 6e 20 74 68  table, nor on th
2c00: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
2c10: 6d 6e 73 20 69 6e 20 61 6e 20 69 6e 64 65 78 2e  mns in an index.
2c20: 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20  </p>..<p>If the 
2c30: 55 4e 49 51 55 45 20 6b 65 79 77 6f 72 64 20 61  UNIQUE keyword a
2c40: 70 70 65 61 72 73 20 62 65 74 77 65 65 6e 20 43  ppears between C
2c50: 52 45 41 54 45 20 61 6e 64 20 49 4e 44 45 58 20  REATE and INDEX 
2c60: 74 68 65 6e 20 64 75 70 6c 69 63 61 74 65 0a 69  then duplicate.i
2c70: 6e 64 65 78 20 65 6e 74 72 69 65 73 20 61 72 65  ndex entries are
2c80: 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e 20 20 41   not allowed.  A
2c90: 6e 79 20 61 74 74 65 6d 70 74 20 74 6f 20 69 6e  ny attempt to in
2ca0: 73 65 72 74 20 61 20 64 75 70 6c 69 63 61 74 65  sert a duplicate
2cb0: 20 65 6e 74 72 79 0a 77 69 6c 6c 20 72 65 73 75   entry.will resu
2cc0: 6c 74 20 69 6e 20 61 6e 20 65 72 72 6f 72 2e 3c  lt in an error.<
2cd0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69  /p>..<p>The opti
2ce0: 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c  onal conflict-cl
2cf0: 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20  ause allows the 
2d00: 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66  specification of
2d10: 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a   an alternative.
2d20: 64 65 66 61 75 6c 74 20 63 6f 6e 73 74 72 61 69  default constrai
2d30: 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  nt conflict reso
2d40: 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
2d50: 20 66 6f 72 20 74 68 69 73 20 69 6e 64 65 78 2e   for this index.
2d60: 0a 54 68 69 73 20 6f 6e 6c 79 20 6d 61 6b 65 73  .This only makes
2d70: 20 73 65 6e 73 65 20 69 66 20 74 68 65 20 55 4e   sense if the UN
2d80: 49 51 55 45 20 6b 65 79 77 6f 72 64 20 69 73 20  IQUE keyword is 
2d90: 75 73 65 64 20 73 69 6e 63 65 20 6f 74 68 65 72  used since other
2da0: 77 69 73 65 0a 74 68 65 72 65 20 61 72 65 20 6e  wise.there are n
2db0: 6f 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 6f  ot constraints o
2dc0: 6e 20 74 68 65 20 69 6e 64 65 78 2e 20 20 54 68  n the index.  Th
2dd0: 65 20 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69  e default algori
2de0: 74 68 6d 20 69 73 0a 41 42 4f 52 54 2e 20 20 49  thm is.ABORT.  I
2df0: 66 20 61 20 43 4f 50 59 2c 20 49 4e 53 45 52 54  f a COPY, INSERT
2e00: 2c 20 6f 72 20 55 50 44 41 54 45 20 73 74 61 74  , or UPDATE stat
2e10: 65 6d 65 6e 74 20 73 70 65 63 69 66 69 65 73 20  ement specifies 
2e20: 61 20 70 61 72 74 69 63 75 6c 61 72 0a 63 6f 6e  a particular.con
2e30: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
2e40: 20 61 6c 67 6f 72 69 74 68 6d 2c 20 74 68 61 74   algorithm, that
2e50: 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73   algorithm is us
2e60: 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 0a 74  ed in place of.t
2e70: 68 65 20 64 65 66 61 75 6c 74 20 61 6c 67 6f 72  he default algor
2e80: 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 68  ithm specified h
2e90: 65 72 65 2e 0a 53 65 65 20 74 68 65 20 73 65 63  ere..See the sec
2ea0: 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68  tion titled.<a h
2eb0: 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e  ref="#conflict">
2ec0: 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20  ON CONFLICT</a> 
2ed0: 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69  for additional i
2ee0: 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a  nformation.</p>.
2ef0: 0a 3c 70 3e 54 68 65 20 65 78 61 63 74 20 74 65  .<p>The exact te
2f00: 78 74 0a 6f 66 20 65 61 63 68 20 43 52 45 41 54  xt.of each CREAT
2f10: 45 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e  E INDEX statemen
2f20: 74 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20 74  t is stored in t
2f30: 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73  he <b>sqlite_mas
2f40: 74 65 72 3c 2f 62 3e 0a 6f 72 20 3c 62 3e 73 71  ter</b>.or <b>sq
2f50: 6c 69 74 65 5f 74 65 6d 70 5f 6d 61 73 74 65 72  lite_temp_master
2f60: 3c 2f 62 3e 20 74 61 62 6c 65 2c 20 64 65 70 65  </b> table, depe
2f70: 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74 68 65 72  nding on whether
2f80: 20 74 68 65 20 74 61 62 6c 65 0a 62 65 69 6e 67   the table.being
2f90: 20 69 6e 64 65 78 65 64 20 69 73 20 74 65 6d 70   indexed is temp
2fa0: 6f 72 61 72 79 2e 20 20 45 76 65 72 79 74 69 6d  orary.  Everytim
2fb0: 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  e the database i
2fc0: 73 20 6f 70 65 6e 65 64 2c 0a 61 6c 6c 20 43 52  s opened,.all CR
2fd0: 45 41 54 45 20 49 4e 44 45 58 20 73 74 61 74 65  EATE INDEX state
2fe0: 6d 65 6e 74 73 0a 61 72 65 20 72 65 61 64 20 66  ments.are read f
2ff0: 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69 74  rom the <b>sqlit
3000: 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62  e_master</b> tab
3010: 6c 65 20 61 6e 64 20 75 73 65 64 20 74 6f 20 72  le and used to r
3020: 65 67 65 6e 65 72 61 74 65 0a 53 51 4c 69 74 65  egenerate.SQLite
3030: 27 73 20 69 6e 74 65 72 6e 61 6c 20 72 65 70 72  's internal repr
3040: 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68  esentation of th
3050: 65 20 69 6e 64 65 78 20 6c 61 79 6f 75 74 2e 3c  e index layout.<
3060: 2f 70 3e 0a 0a 3c 70 3e 4e 6f 6e 2d 74 65 6d 70  /p>..<p>Non-temp
3070: 6f 72 61 72 79 20 69 6e 64 65 78 65 73 20 63 61  orary indexes ca
3080: 6e 6e 6f 74 20 62 65 20 61 64 64 65 64 20 6f 6e  nnot be added on
3090: 20 74 61 62 6c 65 73 20 69 6e 20 61 74 74 61 63   tables in attac
30a0: 68 65 64 20 0a 64 61 74 61 62 61 73 65 73 2e 20  hed .databases. 
30b0: 20 54 68 65 79 20 61 72 65 20 72 65 6d 6f 76 65   They are remove
30c0: 64 20 77 69 74 68 20 74 68 65 20 3c 61 20 68 72  d with the <a hr
30d0: 65 66 3d 22 23 64 72 6f 70 69 6e 64 65 78 22 3e  ef="#dropindex">
30e0: 44 52 4f 50 20 49 4e 44 45 58 3c 2f 61 3e 20 0a  DROP INDEX</a> .
30f0: 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d 0a 0a  command.</p>.}..
3100: 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45  .Section {CREATE
3110: 20 54 41 42 4c 45 7d 20 7b 63 72 65 61 74 65 74   TABLE} {createt
3120: 61 62 6c 65 7d 0a 0a 53 79 6e 74 61 78 20 7b 73  able}..Syntax {s
3130: 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43 52  ql-command} {.CR
3140: 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45 4d  EATE [TEMP | TEM
3150: 50 4f 52 41 52 59 5d 20 54 41 42 4c 45 20 3c 74  PORARY] TABLE <t
3160: 61 62 6c 65 2d 6e 61 6d 65 3e 20 28 0a 20 20 3c  able-name> (.  <
3170: 63 6f 6c 75 6d 6e 2d 64 65 66 3e 20 5b 2c 20 3c  column-def> [, <
3180: 63 6f 6c 75 6d 6e 2d 64 65 66 3e 5d 2a 0a 20 20  column-def>]*.  
3190: 5b 2c 20 3c 63 6f 6e 73 74 72 61 69 6e 74 3e 5d  [, <constraint>]
31a0: 2a 0a 29 0a 7d 20 7b 73 71 6c 2d 63 6f 6d 6d 61  *.).} {sql-comma
31b0: 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45  nd} {.CREATE [TE
31c0: 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20  MP | TEMPORARY] 
31d0: 54 41 42 4c 45 20 3c 74 61 62 6c 65 2d 6e 61 6d  TABLE <table-nam
31e0: 65 3e 20 41 53 20 3c 73 65 6c 65 63 74 2d 73 74  e> AS <select-st
31f0: 61 74 65 6d 65 6e 74 3e 0a 7d 20 7b 63 6f 6c 75  atement>.} {colu
3200: 6d 6e 2d 64 65 66 7d 20 7b 0a 3c 6e 61 6d 65 3e  mn-def} {.<name>
3210: 20 5b 3c 74 79 70 65 3e 5d 20 5b 5b 43 4f 4e 53   [<type>] [[CONS
3220: 54 52 41 49 4e 54 20 3c 6e 61 6d 65 3e 5d 20 3c  TRAINT <name>] <
3230: 63 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e  column-constrain
3240: 74 3e 5d 2a 0a 7d 20 7b 74 79 70 65 7d 20 7b 0a  t>]*.} {type} {.
3250: 3c 74 79 70 65 6e 61 6d 65 3e 20 7c 0a 3c 74 79  <typename> |.<ty
3260: 70 65 6e 61 6d 65 3e 20 28 20 3c 6e 75 6d 62 65  pename> ( <numbe
3270: 72 3e 20 29 20 7c 0a 3c 74 79 70 65 6e 61 6d 65  r> ) |.<typename
3280: 3e 20 28 20 3c 6e 75 6d 62 65 72 3e 20 2c 20 3c  > ( <number> , <
3290: 6e 75 6d 62 65 72 3e 20 29 0a 7d 20 7b 63 6f 6c  number> ).} {col
32a0: 75 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e 74 7d 20  umn-constraint} 
32b0: 7b 0a 4e 4f 54 20 4e 55 4c 4c 20 5b 20 3c 63 6f  {.NOT NULL [ <co
32c0: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d  nflict-clause> ]
32d0: 20 7c 0a 50 52 49 4d 41 52 59 20 4b 45 59 20 5b   |.PRIMARY KEY [
32e0: 3c 73 6f 72 74 2d 6f 72 64 65 72 3e 5d 20 5b 20  <sort-order>] [ 
32f0: 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65  <conflict-clause
3300: 3e 20 5d 20 7c 0a 55 4e 49 51 55 45 20 5b 20 3c  > ] |.UNIQUE [ <
3310: 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e  conflict-clause>
3320: 20 5d 20 7c 0a 43 48 45 43 4b 20 28 20 3c 65 78   ] |.CHECK ( <ex
3330: 70 72 3e 20 29 20 5b 20 3c 63 6f 6e 66 6c 69 63  pr> ) [ <conflic
3340: 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 44 45  t-clause> ] |.DE
3350: 46 41 55 4c 54 20 3c 76 61 6c 75 65 3e 0a 7d 20  FAULT <value>.} 
3360: 7b 63 6f 6e 73 74 72 61 69 6e 74 7d 20 7b 0a 50  {constraint} {.P
3370: 52 49 4d 41 52 59 20 4b 45 59 20 28 20 3c 6e 61  RIMARY KEY ( <na
3380: 6d 65 3e 20 5b 2c 20 3c 6e 61 6d 65 3e 5d 2a 20  me> [, <name>]* 
3390: 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c  ) [ <conflict-cl
33a0: 61 75 73 65 3e 20 5d 7c 0a 55 4e 49 51 55 45 20  ause> ]|.UNIQUE 
33b0: 28 20 3c 6e 61 6d 65 3e 20 5b 2c 20 3c 6e 61 6d  ( <name> [, <nam
33c0: 65 3e 5d 2a 20 29 20 5b 20 3c 63 6f 6e 66 6c 69  e>]* ) [ <confli
33d0: 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 43  ct-clause> ] |.C
33e0: 48 45 43 4b 20 28 20 3c 65 78 70 72 3e 20 29 20  HECK ( <expr> ) 
33f0: 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  [ <conflict-clau
3400: 73 65 3e 20 5d 0a 7d 20 7b 63 6f 6e 66 6c 69 63  se> ].} {conflic
3410: 74 2d 63 6c 61 75 73 65 7d 20 7b 0a 4f 4e 20 43  t-clause} {.ON C
3420: 4f 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c 69 63  ONFLICT <conflic
3430: 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 0a 7d 0a 0a  t-algorithm>.}..
3440: 70 75 74 73 20 7b 0a 3c 70 3e 41 20 43 52 45 41  puts {.<p>A CREA
3450: 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  TE TABLE stateme
3460: 6e 74 20 69 73 20 62 61 73 69 63 61 6c 6c 79 20  nt is basically 
3470: 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52  the keywords "CR
3480: 45 41 54 45 20 54 41 42 4c 45 22 0a 66 6f 6c 6c  EATE TABLE".foll
3490: 6f 77 65 64 20 62 79 20 74 68 65 20 6e 61 6d 65  owed by the name
34a0: 20 6f 66 20 61 20 6e 65 77 20 74 61 62 6c 65 20   of a new table 
34b0: 61 6e 64 20 61 20 70 61 72 65 6e 74 68 65 73 69  and a parenthesi
34c0: 7a 65 64 20 6c 69 73 74 20 6f 66 20 63 6f 6c 75  zed list of colu
34d0: 6d 6e 0a 64 65 66 69 6e 69 74 69 6f 6e 73 20 61  mn.definitions a
34e0: 6e 64 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20  nd constraints. 
34f0: 20 54 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20   The table name 
3500: 63 61 6e 20 62 65 20 65 69 74 68 65 72 20 61 6e  can be either an
3510: 20 69 64 65 6e 74 69 66 69 65 72 0a 6f 72 20 61   identifier.or a
3520: 20 73 74 72 69 6e 67 2e 20 20 54 61 62 6c 65 73   string.  Tables
3530: 20 6e 61 6d 65 73 20 74 68 61 74 20 62 65 67 69   names that begi
3540: 6e 20 77 69 74 68 20 22 3c 62 3e 73 71 6c 69 74  n with "<b>sqlit
3550: 65 5f 3c 2f 62 3e 22 20 61 72 65 20 72 65 73 65  e_</b>" are rese
3560: 72 76 65 64 0a 66 6f 72 20 75 73 65 20 62 79 20  rved.for use by 
3570: 74 68 65 20 65 6e 67 69 6e 65 2e 3c 2f 70 3e 0a  the engine.</p>.
3580: 0a 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d 6e 20  .<p>Each column 
3590: 64 65 66 69 6e 69 74 69 6f 6e 20 69 73 20 74 68  definition is th
35a0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f  e name of the co
35b0: 6c 75 6d 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79  lumn followed by
35c0: 20 74 68 65 0a 64 61 74 61 74 79 70 65 20 66 6f   the.datatype fo
35d0: 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c 20 74  r that column, t
35e0: 68 65 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  hen one or more 
35f0: 6f 70 74 69 6f 6e 61 6c 20 63 6f 6c 75 6d 6e 20  optional column 
3600: 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 53 51 4c  constraints..SQL
3610: 69 74 65 20 69 73 20 3c 61 20 68 72 65 66 3d 22  ite is <a href="
3620: 64 61 74 61 74 79 70 65 73 2e 68 74 6d 6c 22 3e  datatypes.html">
3630: 74 79 70 65 6c 65 73 73 3c 2f 61 3e 2e 0a 54 68  typeless</a>..Th
3640: 65 20 64 61 74 61 74 79 70 65 20 66 6f 72 20 74  e datatype for t
3650: 68 65 20 63 6f 6c 75 6d 6e 20 64 6f 65 73 20 6e  he column does n
3660: 6f 74 20 72 65 73 74 72 69 63 74 20 77 68 61 74  ot restrict what
3670: 20 64 61 74 61 20 6d 61 79 20 62 65 20 70 75 74   data may be put
3680: 0a 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e  .in that column.
3690: 0a 41 6c 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  .All information
36a0: 20 69 73 20 73 74 6f 72 65 64 20 61 73 20 6e 75   is stored as nu
36b0: 6c 6c 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 74  ll-terminated st
36c0: 72 69 6e 67 73 2e 0a 54 68 65 20 55 4e 49 51 55  rings..The UNIQU
36d0: 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 63 61 75  E constraint cau
36e0: 73 65 73 20 61 6e 20 69 6e 64 65 78 20 74 6f 20  ses an index to 
36f0: 62 65 20 63 72 65 61 74 65 64 20 6f 6e 20 74 68  be created on th
3700: 65 20 73 70 65 63 69 66 69 65 64 0a 63 6f 6c 75  e specified.colu
3710: 6d 6e 73 2e 20 20 54 68 69 73 20 69 6e 64 65 78  mns.  This index
3720: 20 6d 75 73 74 20 63 6f 6e 74 61 69 6e 20 75 6e   must contain un
3730: 69 71 75 65 20 6b 65 79 73 2e 0a 54 68 65 20 44  ique keys..The D
3740: 45 46 41 55 4c 54 20 63 6f 6e 73 74 72 61 69 6e  EFAULT constrain
3750: 74 0a 73 70 65 63 69 66 69 65 73 20 61 20 64 65  t.specifies a de
3760: 66 61 75 6c 74 20 76 61 6c 75 65 20 74 6f 20 75  fault value to u
3770: 73 65 20 77 68 65 6e 20 64 6f 69 6e 67 20 61 6e  se when doing an
3780: 20 49 4e 53 45 52 54 2e 0a 3c 2f 70 3e 0a 0a 3c   INSERT..</p>..<
3790: 70 3e 53 70 65 63 69 66 79 69 6e 67 20 61 20 50  p>Specifying a P
37a0: 52 49 4d 41 52 59 20 4b 45 59 20 6e 6f 72 6d 61  RIMARY KEY norma
37b0: 6c 6c 79 20 6a 75 73 74 20 63 72 65 61 74 65 73  lly just creates
37c0: 20 61 20 55 4e 49 51 55 45 20 69 6e 64 65 78 0a   a UNIQUE index.
37d0: 6f 6e 20 74 68 65 20 70 72 69 6d 61 72 79 20 6b  on the primary k
37e0: 65 79 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 66  ey.  However, if
37f0: 20 70 72 69 6d 61 72 79 20 6b 65 79 20 69 73 20   primary key is 
3800: 6f 6e 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75  on a single colu
3810: 6d 6e 0a 74 68 61 74 20 68 61 73 20 64 61 74 61  mn.that has data
3820: 74 79 70 65 20 49 4e 54 45 47 45 52 2c 20 74 68  type INTEGER, th
3830: 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69  en that column i
3840: 73 20 75 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c  s used internall
3850: 79 0a 61 73 20 74 68 65 20 61 63 74 75 61 6c 20  y.as the actual 
3860: 6b 65 79 20 6f 66 20 74 68 65 20 42 2d 54 72 65  key of the B-Tre
3870: 65 20 66 6f 72 20 74 68 65 20 74 61 62 6c 65 2e  e for the table.
3880: 20 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61    This means tha
3890: 74 20 74 68 65 20 63 6f 6c 75 6d 6e 0a 6d 61 79  t the column.may
38a0: 20 6f 6e 6c 79 20 68 6f 6c 64 20 75 6e 69 71 75   only hold uniqu
38b0: 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 73  e integer values
38c0: 2e 20 20 28 45 78 63 65 70 74 20 66 6f 72 20 74  .  (Except for t
38d0: 68 69 73 20 6f 6e 65 20 63 61 73 65 2c 0a 53 51  his one case,.SQ
38e0: 4c 69 74 65 20 69 67 6e 6f 72 65 73 20 74 68 65  Lite ignores the
38f0: 20 64 61 74 61 74 79 70 65 20 73 70 65 63 69 66   datatype specif
3900: 69 63 61 74 69 6f 6e 20 6f 66 20 63 6f 6c 75 6d  ication of colum
3910: 6e 73 20 61 6e 64 20 61 6c 6c 6f 77 73 0a 61 6e  ns and allows.an
3920: 79 20 6b 69 6e 64 20 6f 66 20 64 61 74 61 20 74  y kind of data t
3930: 6f 20 62 65 20 70 75 74 20 69 6e 20 61 20 63 6f  o be put in a co
3940: 6c 75 6d 6e 20 72 65 67 61 72 64 6c 65 73 73 20  lumn regardless 
3950: 6f 66 20 69 74 73 20 64 65 63 6c 61 72 65 64 0a  of its declared.
3960: 64 61 74 61 74 79 70 65 2e 29 20 20 49 66 20 61  datatype.)  If a
3970: 20 74 61 62 6c 65 20 64 6f 65 73 20 6e 6f 74 20   table does not 
3980: 68 61 76 65 20 61 6e 20 49 4e 54 45 47 45 52 20  have an INTEGER 
3990: 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75  PRIMARY KEY colu
39a0: 6d 6e 2c 0a 74 68 65 6e 20 74 68 65 20 42 2d 54  mn,.then the B-T
39b0: 72 65 65 20 6b 65 79 20 77 69 6c 6c 20 62 65 20  ree key will be 
39c0: 61 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  a automatically 
39d0: 67 65 6e 65 72 61 74 65 64 20 69 6e 74 65 67 65  generated intege
39e0: 72 2e 20 20 54 68 65 0a 42 2d 54 72 65 65 20 6b  r.  The.B-Tree k
39f0: 65 79 20 66 6f 72 20 61 20 72 6f 77 20 63 61 6e  ey for a row can
3a00: 20 61 6c 77 61 79 73 20 62 65 20 61 63 63 65 73   always be acces
3a10: 73 65 64 20 75 73 69 6e 67 20 6f 6e 65 20 6f 66  sed using one of
3a20: 20 74 68 65 0a 73 70 65 63 69 61 6c 20 6e 61 6d   the.special nam
3a30: 65 73 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e  es "<b>ROWID</b>
3a40: 22 2c 20 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c  ", "<b>OID</b>",
3a50: 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c   or "<b>_ROWID_<
3a60: 2f 62 3e 22 2e 0a 54 68 69 73 20 69 73 20 74 72  /b>"..This is tr
3a70: 75 65 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66  ue regardless of
3a80: 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20   whether or not 
3a90: 74 68 65 72 65 20 69 73 20 61 6e 20 49 4e 54 45  there is an INTE
3aa0: 47 45 52 0a 50 52 49 4d 41 52 59 20 4b 45 59 2e  GER.PRIMARY KEY.
3ab0: 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20  </p>..<p>If the 
3ac0: 22 54 45 4d 50 22 20 6f 72 20 22 54 45 4d 50 4f  "TEMP" or "TEMPO
3ad0: 52 41 52 59 22 20 6b 65 79 77 6f 72 64 20 6f 63  RARY" keyword oc
3ae0: 63 75 72 73 20 69 6e 20 62 65 74 77 65 65 6e 20  curs in between 
3af0: 22 43 52 45 41 54 45 22 0a 61 6e 64 20 22 54 41  "CREATE".and "TA
3b00: 42 4c 45 22 20 74 68 65 6e 20 74 68 65 20 74 61  BLE" then the ta
3b10: 62 6c 65 20 74 68 61 74 20 69 73 20 63 72 65 61  ble that is crea
3b20: 74 65 64 20 69 73 20 6f 6e 6c 79 20 76 69 73 69  ted is only visi
3b30: 62 6c 65 20 74 6f 20 74 68 65 0a 70 72 6f 63 65  ble to the.proce
3b40: 73 73 20 74 68 61 74 20 6f 70 65 6e 65 64 20 74  ss that opened t
3b50: 68 65 20 64 61 74 61 62 61 73 65 20 61 6e 64 20  he database and 
3b60: 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  is automatically
3b70: 20 64 65 6c 65 74 65 64 20 77 68 65 6e 0a 74 68   deleted when.th
3b80: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 63 6c  e database is cl
3b90: 6f 73 65 64 2e 20 20 41 6e 79 20 69 6e 64 69 63  osed.  Any indic
3ba0: 65 73 20 63 72 65 61 74 65 64 20 6f 6e 20 61 20  es created on a 
3bb0: 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 0a  temporary table.
3bc0: 61 72 65 20 61 6c 73 6f 20 74 65 6d 70 6f 72 61  are also tempora
3bd0: 72 79 2e 20 20 54 65 6d 70 6f 72 61 72 79 20 74  ry.  Temporary t
3be0: 61 62 6c 65 73 20 61 6e 64 20 69 6e 64 69 63 65  ables and indice
3bf0: 73 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20  s are stored in 
3c00: 61 0a 73 65 70 61 72 61 74 65 20 66 69 6c 65 20  a.separate file 
3c10: 64 69 73 74 69 6e 63 74 20 66 72 6f 6d 20 74 68  distinct from th
3c20: 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20  e main database 
3c30: 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  file.</p>..<p>Th
3c40: 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c  e optional confl
3c50: 69 63 74 2d 63 6c 61 75 73 65 20 66 6f 6c 6c 6f  ict-clause follo
3c60: 77 69 6e 67 20 65 61 63 68 20 63 6f 6e 73 74 72  wing each constr
3c70: 61 69 6e 74 0a 61 6c 6c 6f 77 73 20 74 68 65 20  aint.allows the 
3c80: 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66  specification of
3c90: 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 20   an alternative 
3ca0: 64 65 66 61 75 6c 74 0a 63 6f 6e 73 74 72 61 69  default.constrai
3cb0: 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  nt conflict reso
3cc0: 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
3cd0: 20 66 6f 72 20 74 68 61 74 20 63 6f 6e 73 74 72   for that constr
3ce0: 61 69 6e 74 2e 0a 54 68 65 20 64 65 66 61 75 6c  aint..The defaul
3cf0: 74 20 69 73 20 61 62 6f 72 74 20 41 42 4f 52 54  t is abort ABORT
3d00: 2e 20 20 44 69 66 66 65 72 65 6e 74 20 63 6f 6e  .  Different con
3d10: 73 74 72 61 69 6e 74 73 20 77 69 74 68 69 6e 20  straints within 
3d20: 74 68 65 20 73 61 6d 65 0a 74 61 62 6c 65 20 6d  the same.table m
3d30: 61 79 20 68 61 76 65 20 64 69 66 66 65 72 65 6e  ay have differen
3d40: 74 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 6c 69  t default confli
3d50: 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
3d60: 67 6f 72 69 74 68 6d 73 2e 0a 49 66 20 61 6e 20  gorithms..If an 
3d70: 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c 20 6f 72  COPY, INSERT, or
3d80: 20 55 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64 20   UPDATE command 
3d90: 73 70 65 63 69 66 69 65 73 20 61 20 64 69 66 66  specifies a diff
3da0: 65 72 65 6e 74 20 63 6f 6e 66 6c 69 63 74 0a 72  erent conflict.r
3db0: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
3dc0: 74 68 6d 2c 20 74 68 65 6e 20 74 68 61 74 20 61  thm, then that a
3dd0: 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64  lgorithm is used
3de0: 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65   in place of the
3df0: 0a 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74  .default algorit
3e00: 68 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e 20  hm specified in 
3e10: 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45  the CREATE TABLE
3e20: 20 73 74 61 74 65 6d 65 6e 74 2e 0a 53 65 65 20   statement..See 
3e30: 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c  the section titl
3e40: 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e  ed.<a href="#con
3e50: 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49  flict">ON CONFLI
3e60: 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74  CT</a> for addit
3e70: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
3e80: 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 43 48 45 43 4b  n.</p>..<p>CHECK
3e90: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61 72 65   constraints are
3ea0: 20 69 67 6e 6f 72 65 64 20 69 6e 20 74 68 65 20   ignored in the 
3eb0: 63 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e  current implemen
3ec0: 74 61 74 69 6f 6e 2e 0a 53 75 70 70 6f 72 74 20  tation..Support 
3ed0: 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e 73 74 72  for CHECK constr
3ee0: 61 69 6e 74 73 20 6d 61 79 20 62 65 20 61 64 64  aints may be add
3ef0: 65 64 20 69 6e 20 74 68 65 20 66 75 74 75 72 65  ed in the future
3f00: 2e 20 20 41 73 20 6f 66 0a 76 65 72 73 69 6f 6e  .  As of.version
3f10: 20 32 2e 33 2e 30 2c 20 4e 4f 54 20 4e 55 4c 4c   2.3.0, NOT NULL
3f20: 2c 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 61  , PRIMARY KEY, a
3f30: 6e 64 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72  nd UNIQUE constr
3f40: 61 69 6e 74 73 20 61 6c 6c 0a 77 6f 72 6b 2e 3c  aints all.work.<
3f50: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72  /p>..<p>There ar
3f60: 65 20 6e 6f 20 61 72 62 69 74 72 61 72 79 20 6c  e no arbitrary l
3f70: 69 6d 69 74 73 20 6f 6e 20 74 68 65 20 6e 75 6d  imits on the num
3f80: 62 65 72 0a 6f 66 20 63 6f 6c 75 6d 6e 73 20 6f  ber.of columns o
3f90: 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  r on the number 
3fa0: 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 69  of constraints i
3fb0: 6e 20 61 20 74 61 62 6c 65 2e 0a 54 68 65 20 74  n a table..The t
3fc0: 6f 74 61 6c 20 61 6d 6f 75 6e 74 20 6f 66 20 64  otal amount of d
3fd0: 61 74 61 20 69 6e 20 61 20 73 69 6e 67 6c 65 20  ata in a single 
3fe0: 72 6f 77 20 69 73 20 6c 69 6d 69 74 65 64 20 74  row is limited t
3ff0: 6f 20 61 62 6f 75 74 0a 31 20 6d 65 67 61 62 79  o about.1 megaby
4000: 74 65 73 2e 20 20 28 54 68 69 73 20 6c 69 6d 69  tes.  (This limi
4010: 74 20 63 61 6e 20 62 65 20 69 6e 63 72 65 61 73  t can be increas
4020: 65 64 20 74 6f 20 31 36 4d 42 20 62 79 20 63 68  ed to 16MB by ch
4030: 61 6e 67 69 6e 67 0a 61 20 73 69 6e 67 6c 65 20  anging.a single 
4040: 23 64 65 66 69 6e 65 20 69 6e 20 74 68 65 20 73  #define in the s
4050: 6f 75 72 63 65 20 63 6f 64 65 20 61 6e 64 20 72  ource code and r
4060: 65 63 6f 6d 70 69 6c 69 6e 67 2e 29 3c 2f 70 3e  ecompiling.)</p>
4070: 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20  ..<p>The CREATE 
4080: 54 41 42 4c 45 20 41 53 20 66 6f 72 6d 20 64 65  TABLE AS form de
4090: 66 69 6e 65 73 20 74 68 65 20 74 61 62 6c 65 20  fines the table 
40a0: 74 6f 20 62 65 0a 74 68 65 20 72 65 73 75 6c 74  to be.the result
40b0: 20 73 65 74 20 6f 66 20 61 20 71 75 65 72 79 2e   set of a query.
40c0: 20 20 54 68 65 20 6e 61 6d 65 73 20 6f 66 20 74    The names of t
40d0: 68 65 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 73  he table columns
40e0: 20 61 72 65 0a 74 68 65 20 6e 61 6d 65 73 20 6f   are.the names o
40f0: 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e  f the columns in
4100: 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70 3e   the result.</p>
4110: 0a 0a 3c 70 3e 54 68 65 20 65 78 61 63 74 20 74  ..<p>The exact t
4120: 65 78 74 0a 6f 66 20 65 61 63 68 20 43 52 45 41  ext.of each CREA
4130: 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  TE TABLE stateme
4140: 6e 74 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20  nt is stored in 
4150: 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61  the <b>sqlite_ma
4160: 73 74 65 72 3c 2f 62 3e 0a 74 61 62 6c 65 2e 20  ster</b>.table. 
4170: 20 45 76 65 72 79 74 69 6d 65 20 74 68 65 20 64   Everytime the d
4180: 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65  atabase is opene
4190: 64 2c 20 61 6c 6c 20 43 52 45 41 54 45 20 54 41  d, all CREATE TA
41a0: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 73 0a 61  BLE statements.a
41b0: 72 65 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  re read from the
41c0: 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65   <b>sqlite_maste
41d0: 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61 6e 64 20  r</b> table and 
41e0: 75 73 65 64 20 74 6f 20 72 65 67 65 6e 65 72 61  used to regenera
41f0: 74 65 0a 53 51 4c 69 74 65 27 73 20 69 6e 74 65  te.SQLite's inte
4200: 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74  rnal representat
4210: 69 6f 6e 20 6f 66 20 74 68 65 20 74 61 62 6c 65  ion of the table
4220: 20 6c 61 79 6f 75 74 2e 0a 49 66 20 74 68 65 20   layout..If the 
4230: 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64  original command
4240: 20 77 61 73 20 61 20 43 52 45 41 54 45 20 54 41   was a CREATE TA
4250: 42 4c 45 20 41 53 20 74 68 65 6e 20 74 68 65 6e  BLE AS then then
4260: 20 61 6e 20 65 71 75 69 76 61 6c 65 6e 74 0a 43   an equivalent.C
4270: 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74  REATE TABLE stat
4280: 65 6d 65 6e 74 20 69 73 20 73 79 6e 74 68 65 73  ement is synthes
4290: 69 7a 65 64 20 61 6e 64 20 73 74 6f 72 65 20 69  ized and store i
42a0: 6e 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74  n <b>sqlite_mast
42b0: 65 72 3c 2f 62 3e 0a 69 6e 20 70 6c 61 63 65 20  er</b>.in place 
42c0: 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20  of the original 
42d0: 63 6f 6d 6d 61 6e 64 2e 0a 54 68 65 20 74 65 78  command..The tex
42e0: 74 20 6f 66 20 43 52 45 41 54 45 20 54 45 4d 50  t of CREATE TEMP
42f0: 4f 52 41 52 59 20 54 41 42 4c 45 20 73 74 61 74  ORARY TABLE stat
4300: 65 6d 65 6e 74 73 20 61 72 65 20 73 74 6f 72 65  ements are store
4310: 64 20 69 6e 20 74 68 65 0a 3c 62 3e 73 71 6c 69  d in the.<b>sqli
4320: 74 65 5f 74 65 6d 70 5f 6d 61 73 74 65 72 3c 2f  te_temp_master</
4330: 62 3e 20 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a 0a  b> table..</p>..
4340: 3c 70 3e 54 61 62 6c 65 73 20 61 72 65 20 72 65  <p>Tables are re
4350: 6d 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65 20  moved using the 
4360: 3c 61 20 68 72 65 66 3d 22 23 64 72 6f 70 74 61  <a href="#dropta
4370: 62 6c 65 22 3e 44 52 4f 50 20 54 41 42 4c 45 3c  ble">DROP TABLE<
4380: 2f 61 3e 20 0a 73 74 61 74 65 6d 65 6e 74 2e 20  /a> .statement. 
4390: 20 4e 6f 6e 2d 74 65 6d 70 6f 72 61 72 79 20 74   Non-temporary t
43a0: 61 62 6c 65 73 20 69 6e 20 61 6e 20 61 74 74 61  ables in an atta
43b0: 63 68 65 64 20 64 61 74 61 62 61 73 65 20 63 61  ched database ca
43c0: 6e 6e 6f 74 20 62 65 20 0a 64 72 6f 70 70 65 64  nnot be .dropped
43d0: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
43e0: 6e 20 7b 43 52 45 41 54 45 20 54 52 49 47 47 45  n {CREATE TRIGGE
43f0: 52 7d 20 63 72 65 61 74 65 74 72 69 67 67 65 72  R} createtrigger
4400: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
4410: 61 74 65 6d 65 6e 74 7d 20 7b 0a 43 52 45 41 54  atement} {.CREAT
4420: 45 20 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52  E [TEMP | TEMPOR
4430: 41 52 59 5d 20 54 52 49 47 47 45 52 20 3c 74 72  ARY] TRIGGER <tr
4440: 69 67 67 65 72 2d 6e 61 6d 65 3e 20 5b 20 42 45  igger-name> [ BE
4450: 46 4f 52 45 20 7c 20 41 46 54 45 52 20 5d 0a 3c  FORE | AFTER ].<
4460: 64 61 74 61 62 61 73 65 2d 65 76 65 6e 74 3e 20  database-event> 
4470: 4f 4e 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  ON [<database-na
4480: 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61  me> .] <table-na
4490: 6d 65 3e 0a 3c 74 72 69 67 67 65 72 2d 61 63 74  me>.<trigger-act
44a0: 69 6f 6e 3e 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b  ion>.}..Syntax {
44b0: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
44c0: 0a 43 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20  .CREATE [TEMP | 
44d0: 54 45 4d 50 4f 52 41 52 59 5d 20 54 52 49 47 47  TEMPORARY] TRIGG
44e0: 45 52 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65  ER <trigger-name
44f0: 3e 20 49 4e 53 54 45 41 44 20 4f 46 0a 3c 64 61  > INSTEAD OF.<da
4500: 74 61 62 61 73 65 2d 65 76 65 6e 74 3e 20 4f 4e  tabase-event> ON
4510: 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65   [<database-name
4520: 3e 20 2e 5d 20 3c 76 69 65 77 2d 6e 61 6d 65 3e  > .] <view-name>
4530: 0a 3c 74 72 69 67 67 65 72 2d 61 63 74 69 6f 6e  .<trigger-action
4540: 3e 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b 64 61 74  >.}..Syntax {dat
4550: 61 62 61 73 65 2d 65 76 65 6e 74 7d 20 7b 0a 44  abase-event} {.D
4560: 45 4c 45 54 45 20 7c 20 0a 49 4e 53 45 52 54 20  ELETE | .INSERT 
4570: 7c 20 0a 55 50 44 41 54 45 20 7c 20 0a 55 50 44  | .UPDATE | .UPD
4580: 41 54 45 20 4f 46 20 3c 63 6f 6c 75 6d 6e 2d 6c  ATE OF <column-l
4590: 69 73 74 3e 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b  ist>.}..Syntax {
45a0: 74 72 69 67 67 65 72 2d 61 63 74 69 6f 6e 7d 20  trigger-action} 
45b0: 7b 0a 5b 20 46 4f 52 20 45 41 43 48 20 52 4f 57  {.[ FOR EACH ROW
45c0: 20 7c 20 46 4f 52 20 45 41 43 48 20 53 54 41 54   | FOR EACH STAT
45d0: 45 4d 45 4e 54 20 5d 20 5b 20 57 48 45 4e 20 3c  EMENT ] [ WHEN <
45e0: 65 78 70 72 65 73 73 69 6f 6e 3e 20 5d 20 0a 42  expression> ] .B
45f0: 45 47 49 4e 20 0a 20 20 3c 74 72 69 67 67 65 72  EGIN .  <trigger
4600: 2d 73 74 65 70 3e 20 3b 20 5b 20 3c 74 72 69 67  -step> ; [ <trig
4610: 67 65 72 2d 73 74 65 70 3e 20 3b 20 5d 2a 0a 45  ger-step> ; ]*.E
4620: 4e 44 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b 74 72  ND.}..Syntax {tr
4630: 69 67 67 65 72 2d 73 74 65 70 7d 20 7b 0a 3c 75  igger-step} {.<u
4640: 70 64 61 74 65 2d 73 74 61 74 65 6d 65 6e 74 3e  pdate-statement>
4650: 20 7c 20 3c 69 6e 73 65 72 74 2d 73 74 61 74 65   | <insert-state
4660: 6d 65 6e 74 3e 20 7c 20 0a 3c 64 65 6c 65 74 65  ment> | .<delete
4670: 2d 73 74 61 74 65 6d 65 6e 74 3e 20 7c 20 3c 73  -statement> | <s
4680: 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e  elect-statement>
4690: 20 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54   .}..puts {.<p>T
46a0: 68 65 20 43 52 45 41 54 45 20 54 52 49 47 47 45  he CREATE TRIGGE
46b0: 52 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75  R statement is u
46c0: 73 65 64 20 74 6f 20 61 64 64 20 74 72 69 67 67  sed to add trigg
46d0: 65 72 73 20 74 6f 20 74 68 65 20 0a 64 61 74 61  ers to the .data
46e0: 62 61 73 65 20 73 63 68 65 6d 61 2e 20 54 72 69  base schema. Tri
46f0: 67 67 65 72 73 20 61 72 65 20 64 61 74 61 62 61  ggers are databa
4700: 73 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 28 74  se operations (t
4710: 68 65 20 3c 69 3e 74 72 69 67 67 65 72 2d 61 63  he <i>trigger-ac
4720: 74 69 6f 6e 3c 2f 69 3e 29 20 0a 74 68 61 74 20  tion</i>) .that 
4730: 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  are automaticall
4740: 79 20 70 65 72 66 6f 72 6d 65 64 20 77 68 65 6e  y performed when
4750: 20 61 20 73 70 65 63 69 66 69 65 64 20 64 61 74   a specified dat
4760: 61 62 61 73 65 20 65 76 65 6e 74 20 28 74 68 65  abase event (the
4770: 0a 3c 69 3e 64 61 74 61 62 61 73 65 2d 65 76 65  .<i>database-eve
4780: 6e 74 3c 2f 69 3e 29 20 6f 63 63 75 72 73 2e 20  nt</i>) occurs. 
4790: 20 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 74 72 69 67   </p>..<p>A trig
47a0: 67 65 72 20 6d 61 79 20 62 65 20 73 70 65 63 69  ger may be speci
47b0: 66 69 65 64 20 74 6f 20 66 69 72 65 20 77 68 65  fied to fire whe
47c0: 6e 65 76 65 72 20 61 20 44 45 4c 45 54 45 2c 20  never a DELETE, 
47d0: 49 4e 53 45 52 54 20 6f 72 20 55 50 44 41 54 45  INSERT or UPDATE
47e0: 20 6f 66 20 61 0a 70 61 72 74 69 63 75 6c 61 72   of a.particular
47f0: 20 64 61 74 61 62 61 73 65 20 74 61 62 6c 65 20   database table 
4800: 6f 63 63 75 72 73 2c 20 6f 72 20 77 68 65 6e 65  occurs, or whene
4810: 76 65 72 20 61 6e 20 55 50 44 41 54 45 20 6f 66  ver an UPDATE of
4820: 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 0a 73 70 65   one or more.spe
4830: 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73 20 6f  cified columns o
4840: 66 20 61 20 74 61 62 6c 65 20 61 72 65 20 75 70  f a table are up
4850: 64 61 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41  dated.</p>..<p>A
4860: 74 20 74 68 69 73 20 74 69 6d 65 20 53 51 4c 69  t this time SQLi
4870: 74 65 20 73 75 70 70 6f 72 74 73 20 6f 6e 6c 79  te supports only
4880: 20 46 4f 52 20 45 41 43 48 20 52 4f 57 20 74 72   FOR EACH ROW tr
4890: 69 67 67 65 72 73 2c 20 6e 6f 74 20 46 4f 52 20  iggers, not FOR 
48a0: 45 41 43 48 0a 53 54 41 54 45 4d 45 4e 54 20 74  EACH.STATEMENT t
48b0: 72 69 67 67 65 72 73 2e 20 48 65 6e 63 65 20 65  riggers. Hence e
48c0: 78 70 6c 69 63 69 74 6c 79 20 73 70 65 63 69 66  xplicitly specif
48d0: 79 69 6e 67 20 46 4f 52 20 45 41 43 48 20 52 4f  ying FOR EACH RO
48e0: 57 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20 20  W is optional.  
48f0: 46 4f 52 0a 45 41 43 48 20 52 4f 57 20 69 6d 70  FOR.EACH ROW imp
4900: 6c 69 65 73 20 74 68 61 74 20 74 68 65 20 53 51  lies that the SQ
4910: 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65  L statements spe
4920: 63 69 66 69 65 64 20 61 73 20 3c 69 3e 74 72 69  cified as <i>tri
4930: 67 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 0a  gger-steps</i> .
4940: 6d 61 79 20 62 65 20 65 78 65 63 75 74 65 64 20  may be executed 
4950: 28 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68  (depending on th
4960: 65 20 57 48 45 4e 20 63 6c 61 75 73 65 29 20 66  e WHEN clause) f
4970: 6f 72 20 65 61 63 68 20 64 61 74 61 62 61 73 65  or each database
4980: 20 72 6f 77 20 62 65 69 6e 67 0a 69 6e 73 65 72   row being.inser
4990: 74 65 64 2c 20 75 70 64 61 74 65 64 20 6f 72 20  ted, updated or 
49a0: 64 65 6c 65 74 65 64 20 62 79 20 74 68 65 20 73  deleted by the s
49b0: 74 61 74 65 6d 65 6e 74 20 63 61 75 73 69 6e 67  tatement causing
49c0: 20 74 68 65 20 74 72 69 67 67 65 72 20 74 6f 20   the trigger to 
49d0: 66 69 72 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 6f  fire.</p>..<p>Bo
49e0: 74 68 20 74 68 65 20 57 48 45 4e 20 63 6c 61 75  th the WHEN clau
49f0: 73 65 20 61 6e 64 20 74 68 65 20 3c 69 3e 74 72  se and the <i>tr
4a00: 69 67 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20  igger-steps</i> 
4a10: 6d 61 79 20 61 63 63 65 73 73 20 65 6c 65 6d 65  may access eleme
4a20: 6e 74 73 20 6f 66 20 0a 74 68 65 20 72 6f 77 20  nts of .the row 
4a30: 62 65 69 6e 67 20 69 6e 73 65 72 74 65 64 2c 20  being inserted, 
4a40: 64 65 6c 65 74 65 64 20 6f 72 20 75 70 64 61 74  deleted or updat
4a50: 65 64 20 75 73 69 6e 67 20 72 65 66 65 72 65 6e  ed using referen
4a60: 63 65 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20  ces of the form 
4a70: 0a 22 4e 45 57 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d  ."NEW.<i>column-
4a80: 6e 61 6d 65 3c 2f 69 3e 22 20 61 6e 64 20 22 4f  name</i>" and "O
4a90: 4c 44 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d  LD.<i>column-nam
4aa0: 65 3c 2f 69 3e 22 2c 20 77 68 65 72 65 0a 3c 69  e</i>", where.<i
4ab0: 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e  >column-name</i>
4ac0: 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
4ad0: 61 20 63 6f 6c 75 6d 6e 20 66 72 6f 6d 20 74 68  a column from th
4ae0: 65 20 74 61 62 6c 65 20 74 68 61 74 20 74 68 65  e table that the
4af0: 20 74 72 69 67 67 65 72 0a 69 73 20 61 73 73 6f   trigger.is asso
4b00: 63 69 61 74 65 64 20 77 69 74 68 2e 20 4f 4c 44  ciated with. OLD
4b10: 20 61 6e 64 20 4e 45 57 20 72 65 66 65 72 65 6e   and NEW referen
4b20: 63 65 73 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20  ces may only be 
4b30: 75 73 65 64 20 69 6e 20 74 72 69 67 67 65 72 73  used in triggers
4b40: 20 6f 6e 0a 3c 69 3e 74 72 69 67 67 65 72 2d 65   on.<i>trigger-e
4b50: 76 65 6e 74 3c 2f 69 3e 73 20 66 6f 72 20 77 68  vent</i>s for wh
4b60: 69 63 68 20 74 68 65 79 20 61 72 65 20 72 65 6c  ich they are rel
4b70: 65 76 61 6e 74 2c 20 61 73 20 66 6f 6c 6c 6f 77  evant, as follow
4b80: 73 3a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62  s:</p>..<table b
4b90: 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64  order=0 cellpadd
4ba0: 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74 64  ing=10>.<tr>.<td
4bb0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
4bc0: 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74  ign="right" widt
4bd0: 68 3d 31 32 30 3e 3c 69 3e 49 4e 53 45 52 54 3c  h=120><i>INSERT<
4be0: 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  /i></td>.<td val
4bf0: 69 67 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 72 65  ign="top">NEW re
4c00: 66 65 72 65 6e 63 65 73 20 61 72 65 20 76 61 6c  ferences are val
4c10: 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74  id</td>.</tr>.<t
4c20: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
4c30: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
4c40: 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 55  " width=120><i>U
4c50: 50 44 41 54 45 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c  PDATE</i></td>.<
4c60: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
4c70: 4e 45 57 20 61 6e 64 20 4f 4c 44 20 72 65 66 65  NEW and OLD refe
4c80: 72 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64  rences are valid
4c90: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e  </td>.</tr>.<tr>
4ca0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
4cb0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  " align="right" 
4cc0: 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 44 45 4c  width=120><i>DEL
4cd0: 45 54 45 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64  ETE</i></td>.<td
4ce0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4f 4c   valign="top">OL
4cf0: 44 20 72 65 66 65 72 65 6e 63 65 73 20 61 72 65  D references are
4d00: 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72   valid</td>.</tr
4d10: 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 70 3e 0a  >.</table>.</p>.
4d20: 0a 3c 70 3e 49 66 20 61 20 57 48 45 4e 20 63 6c  .<p>If a WHEN cl
4d30: 61 75 73 65 20 69 73 20 73 75 70 70 6c 69 65 64  ause is supplied
4d40: 2c 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  , the SQL statem
4d50: 65 6e 74 73 20 73 70 65 63 69 66 69 65 64 20 61  ents specified a
4d60: 73 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65  s <i>trigger-ste
4d70: 70 73 3c 2f 69 3e 20 61 72 65 20 6f 6e 6c 79 20  ps</i> are only 
4d80: 65 78 65 63 75 74 65 64 20 66 6f 72 20 72 6f 77  executed for row
4d90: 73 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 20  s for which the 
4da0: 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20 74  WHEN clause is t
4db0: 72 75 65 2e 20 49 66 20 6e 6f 20 57 48 45 4e 20  rue. If no WHEN 
4dc0: 63 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c 69  clause is suppli
4dd0: 65 64 2c 20 74 68 65 20 53 51 4c 20 73 74 61 74  ed, the SQL stat
4de0: 65 6d 65 6e 74 73 20 61 72 65 20 65 78 65 63 75  ements are execu
4df0: 74 65 64 20 66 6f 72 20 61 6c 6c 20 72 6f 77 73  ted for all rows
4e00: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 70  .</p>..<p>The sp
4e10: 65 63 69 66 69 65 64 20 3c 69 3e 74 72 69 67 67  ecified <i>trigg
4e20: 65 72 2d 74 69 6d 65 3c 2f 69 3e 20 64 65 74 65  er-time</i> dete
4e30: 72 6d 69 6e 65 73 20 77 68 65 6e 20 74 68 65 20  rmines when the 
4e40: 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73  <i>trigger-steps
4e50: 3c 2f 69 3e 0a 77 69 6c 6c 20 62 65 20 65 78 65  </i>.will be exe
4e60: 63 75 74 65 64 20 72 65 6c 61 74 69 76 65 20 74  cuted relative t
4e70: 6f 20 74 68 65 20 69 6e 73 65 72 74 69 6f 6e 2c  o the insertion,
4e80: 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 6f 72   modification or
4e90: 20 72 65 6d 6f 76 61 6c 20 6f 66 20 74 68 65 0a   removal of the.
4ea0: 61 73 73 6f 63 69 61 74 65 64 20 72 6f 77 2e 3c  associated row.<
4eb0: 2f 70 3e 0a 0a 3c 70 3e 41 6e 20 4f 4e 20 43 4f  /p>..<p>An ON CO
4ec0: 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20 6d 61  NFLICT clause ma
4ed0: 79 20 62 65 20 73 70 65 63 69 66 69 65 64 20 61  y be specified a
4ee0: 73 20 70 61 72 74 20 6f 66 20 61 6e 20 55 50 44  s part of an UPD
4ef0: 41 54 45 20 6f 72 20 49 4e 53 45 52 54 0a 3c 69  ATE or INSERT.<i
4f00: 3e 74 72 69 67 67 65 72 2d 73 74 65 70 3c 2f 69  >trigger-step</i
4f10: 3e 2e 20 48 6f 77 65 76 65 72 20 69 66 20 61 6e  >. However if an
4f20: 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61   ON CONFLICT cla
4f30: 75 73 65 20 69 73 20 73 70 65 63 69 66 69 65 64  use is specified
4f40: 20 61 73 20 70 61 72 74 20 6f 66 20 0a 74 68 65   as part of .the
4f50: 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 69   statement causi
4f60: 6e 67 20 74 68 65 20 74 72 69 67 67 65 72 20 74  ng the trigger t
4f70: 6f 20 66 69 72 65 2c 20 74 68 65 6e 20 74 68 69  o fire, then thi
4f80: 73 20 63 6f 6e 66 6c 69 63 74 20 68 61 6e 64 6c  s conflict handl
4f90: 69 6e 67 0a 70 6f 6c 69 63 79 20 69 73 20 75 73  ing.policy is us
4fa0: 65 64 20 69 6e 73 74 65 61 64 2e 3c 2f 70 3e 0a  ed instead.</p>.
4fb0: 0a 3c 70 3e 54 72 69 67 67 65 72 73 20 61 72 65  .<p>Triggers are
4fc0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64   automatically d
4fd0: 72 6f 70 70 65 64 20 77 68 65 6e 20 74 68 65 20  ropped when the 
4fe0: 74 61 62 6c 65 20 74 68 61 74 20 74 68 65 79 20  table that they 
4ff0: 61 72 65 20 0a 61 73 73 6f 63 69 61 74 65 64 20  are .associated 
5000: 77 69 74 68 20 69 73 20 64 72 6f 70 70 65 64 2e  with is dropped.
5010: 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65 72  </p>..<p>Trigger
5020: 73 20 6d 61 79 20 62 65 20 63 72 65 61 74 65 64  s may be created
5030: 20 6f 6e 20 76 69 65 77 73 2c 20 61 73 20 77 65   on views, as we
5040: 6c 6c 20 61 73 20 6f 72 64 69 6e 61 72 79 20 74  ll as ordinary t
5050: 61 62 6c 65 73 2c 20 62 79 20 73 70 65 63 69 66  ables, by specif
5060: 79 69 6e 67 0a 49 4e 53 54 45 41 44 20 4f 46 20  ying.INSTEAD OF 
5070: 69 6e 20 74 68 65 20 43 52 45 41 54 45 20 54 52  in the CREATE TR
5080: 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74 2e  IGGER statement.
5090: 20 49 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20   If one or more 
50a0: 4f 4e 20 49 4e 53 45 52 54 2c 20 4f 4e 20 44 45  ON INSERT, ON DE
50b0: 4c 45 54 45 0a 6f 72 20 4f 4e 20 55 50 44 41 54  LETE.or ON UPDAT
50c0: 45 20 74 72 69 67 67 65 72 73 20 61 72 65 20 64  E triggers are d
50d0: 65 66 69 6e 65 64 20 6f 6e 20 61 20 76 69 65 77  efined on a view
50e0: 2c 20 74 68 65 6e 20 69 74 20 69 73 20 6e 6f 74  , then it is not
50f0: 20 61 6e 20 65 72 72 6f 72 20 74 6f 20 65 78 65   an error to exe
5100: 63 75 74 65 0a 61 6e 20 49 4e 53 45 52 54 2c 20  cute.an INSERT, 
5110: 44 45 4c 45 54 45 20 6f 72 20 55 50 44 41 54 45  DELETE or UPDATE
5120: 20 73 74 61 74 65 6d 65 6e 74 20 6f 6e 20 74 68   statement on th
5130: 65 20 76 69 65 77 2c 20 72 65 73 70 65 63 74 69  e view, respecti
5140: 76 65 6c 79 2e 20 54 68 65 72 65 61 66 74 65 72  vely. Thereafter
5150: 2c 0a 65 78 65 63 75 74 69 6e 67 20 61 6e 20 49  ,.executing an I
5160: 4e 53 45 52 54 2c 20 44 45 4c 45 54 45 20 6f 72  NSERT, DELETE or
5170: 20 55 50 44 41 54 45 20 6f 6e 20 74 68 65 20 76   UPDATE on the v
5180: 69 65 77 20 63 61 75 73 65 73 20 74 68 65 20 61  iew causes the a
5190: 73 73 6f 63 69 61 74 65 64 0a 20 20 74 72 69 67  ssociated.  trig
51a0: 67 65 72 73 20 74 6f 20 66 69 72 65 2e 20 54 68  gers to fire. Th
51b0: 65 20 72 65 61 6c 20 74 61 62 6c 65 73 20 75 6e  e real tables un
51c0: 64 65 72 6c 79 69 6e 67 20 74 68 65 20 76 69 65  derlying the vie
51d0: 77 20 61 72 65 20 6e 6f 74 20 6d 6f 64 69 66 69  w are not modifi
51e0: 65 64 0a 20 20 28 65 78 63 65 70 74 20 70 6f 73  ed.  (except pos
51f0: 73 69 62 6c 79 20 65 78 70 6c 69 63 69 74 6c 79  sibly explicitly
5200: 2c 20 62 79 20 61 20 74 72 69 67 67 65 72 20 70  , by a trigger p
5210: 72 6f 67 72 61 6d 29 2e 3c 2f 70 3e 0a 0a 3c 70  rogram).</p>..<p
5220: 3e 3c 62 3e 45 78 61 6d 70 6c 65 3a 3c 2f 62 3e  ><b>Example:</b>
5230: 3c 2f 70 3e 0a 0a 3c 70 3e 41 73 73 75 6d 69 6e  </p>..<p>Assumin
5240: 67 20 74 68 61 74 20 63 75 73 74 6f 6d 65 72 20  g that customer 
5250: 72 65 63 6f 72 64 73 20 61 72 65 20 73 74 6f 72  records are stor
5260: 65 64 20 69 6e 20 74 68 65 20 22 63 75 73 74 6f  ed in the "custo
5270: 6d 65 72 73 22 20 74 61 62 6c 65 2c 20 61 6e 64  mers" table, and
5280: 0a 74 68 61 74 20 6f 72 64 65 72 20 72 65 63 6f  .that order reco
5290: 72 64 73 20 61 72 65 20 73 74 6f 72 65 64 20 69  rds are stored i
52a0: 6e 20 74 68 65 20 22 6f 72 64 65 72 73 22 20 74  n the "orders" t
52b0: 61 62 6c 65 2c 20 74 68 65 20 66 6f 6c 6c 6f 77  able, the follow
52c0: 69 6e 67 20 74 72 69 67 67 65 72 0a 65 6e 73 75  ing trigger.ensu
52d0: 72 65 73 20 74 68 61 74 20 61 6c 6c 20 61 73 73  res that all ass
52e0: 6f 63 69 61 74 65 64 20 6f 72 64 65 72 73 20 61  ociated orders a
52f0: 72 65 20 72 65 64 69 72 65 63 74 65 64 20 77 68  re redirected wh
5300: 65 6e 20 61 20 63 75 73 74 6f 6d 65 72 20 63 68  en a customer ch
5310: 61 6e 67 65 73 0a 68 69 73 20 6f 72 20 68 65 72  anges.his or her
5320: 20 61 64 64 72 65 73 73 3a 3c 2f 70 3e 0a 7d 0a   address:</p>.}.
5330: 45 78 61 6d 70 6c 65 20 7b 0a 43 52 45 41 54 45  Example {.CREATE
5340: 20 54 52 49 47 47 45 52 20 75 70 64 61 74 65 5f   TRIGGER update_
5350: 63 75 73 74 6f 6d 65 72 5f 61 64 64 72 65 73 73  customer_address
5360: 20 55 50 44 41 54 45 20 4f 46 20 61 64 64 72 65   UPDATE OF addre
5370: 73 73 20 4f 4e 20 63 75 73 74 6f 6d 65 72 73 20  ss ON customers 
5380: 0a 20 20 42 45 47 49 4e 0a 20 20 20 20 55 50 44  .  BEGIN.    UPD
5390: 41 54 45 20 6f 72 64 65 72 73 20 53 45 54 20 61  ATE orders SET a
53a0: 64 64 72 65 73 73 20 3d 20 6e 65 77 2e 61 64 64  ddress = new.add
53b0: 72 65 73 73 20 57 48 45 52 45 20 63 75 73 74 6f  ress WHERE custo
53c0: 6d 65 72 5f 6e 61 6d 65 20 3d 20 6f 6c 64 2e 6e  mer_name = old.n
53d0: 61 6d 65 3b 0a 20 20 45 4e 44 3b 0a 7d 0a 70 75  ame;.  END;.}.pu
53e0: 74 73 20 7b 0a 3c 70 3e 57 69 74 68 20 74 68 69  ts {.<p>With thi
53f0: 73 20 74 72 69 67 67 65 72 20 69 6e 73 74 61 6c  s trigger instal
5400: 6c 65 64 2c 20 65 78 65 63 75 74 69 6e 67 20 74  led, executing t
5410: 68 65 20 73 74 61 74 65 6d 65 6e 74 3a 3c 2f 70  he statement:</p
5420: 3e 0a 7d 0a 0a 45 78 61 6d 70 6c 65 20 7b 0a 55  >.}..Example {.U
5430: 50 44 41 54 45 20 63 75 73 74 6f 6d 65 72 73 20  PDATE customers 
5440: 53 45 54 20 61 64 64 72 65 73 73 20 3d 20 27 31  SET address = '1
5450: 20 4d 61 69 6e 20 53 74 2e 27 20 57 48 45 52 45   Main St.' WHERE
5460: 20 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f   name = 'Jack Jo
5470: 6e 65 73 27 3b 0a 7d 0a 70 75 74 73 20 7b 0a 3c  nes';.}.puts {.<
5480: 70 3e 63 61 75 73 65 73 20 74 68 65 20 66 6f 6c  p>causes the fol
5490: 6c 6f 77 69 6e 67 20 74 6f 20 62 65 20 61 75 74  lowing to be aut
54a0: 6f 6d 61 74 69 63 61 6c 6c 79 20 65 78 65 63 75  omatically execu
54b0: 74 65 64 3a 3c 2f 70 3e 0a 7d 0a 45 78 61 6d 70  ted:</p>.}.Examp
54c0: 6c 65 20 7b 0a 55 50 44 41 54 45 20 6f 72 64 65  le {.UPDATE orde
54d0: 72 73 20 53 45 54 20 61 64 64 72 65 73 73 20 3d  rs SET address =
54e0: 20 27 31 20 4d 61 69 6e 20 53 74 2e 27 20 57 48   '1 Main St.' WH
54f0: 45 52 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d  ERE customer_nam
5500: 65 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e 65 73 27  e = 'Jack Jones'
5510: 3b 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 4e  ;.}..puts {.<p>N
5520: 6f 74 65 20 74 68 61 74 20 63 75 72 72 65 6e 74  ote that current
5530: 6c 79 2c 20 74 72 69 67 67 65 72 73 20 6d 61 79  ly, triggers may
5540: 20 62 65 68 61 76 65 20 6f 64 64 6c 79 20 77 68   behave oddly wh
5550: 65 6e 20 63 72 65 61 74 65 64 20 6f 6e 20 74 61  en created on ta
5560: 62 6c 65 73 0a 20 20 77 69 74 68 20 49 4e 54 45  bles.  with INTE
5570: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20  GER PRIMARY KEY 
5580: 66 69 65 6c 64 73 2e 20 49 66 20 61 20 42 45 46  fields. If a BEF
5590: 4f 52 45 20 74 72 69 67 67 65 72 20 70 72 6f 67  ORE trigger prog
55a0: 72 61 6d 20 6d 6f 64 69 66 69 65 73 20 74 68 65  ram modifies the
55b0: 20 0a 20 20 49 4e 54 45 47 45 52 20 50 52 49 4d   .  INTEGER PRIM
55c0: 41 52 59 20 4b 45 59 20 66 69 65 6c 64 20 6f 66  ARY KEY field of
55d0: 20 61 20 72 6f 77 20 74 68 61 74 20 77 69 6c 6c   a row that will
55e0: 20 62 65 20 73 75 62 73 65 71 75 65 6e 74 6c 79   be subsequently
55f0: 20 75 70 64 61 74 65 64 20 62 79 20 74 68 65 0a   updated by the.
5600: 20 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74    statement that
5610: 20 63 61 75 73 65 73 20 74 68 65 20 74 72 69 67   causes the trig
5620: 67 65 72 20 74 6f 20 66 69 72 65 2c 20 74 68 65  ger to fire, the
5630: 6e 20 74 68 65 20 75 70 64 61 74 65 20 6d 61 79  n the update may
5640: 20 6e 6f 74 20 6f 63 63 75 72 2e 20 0a 20 20 54   not occur. .  T
5650: 68 65 20 77 6f 72 6b 61 72 6f 75 6e 64 20 69 73  he workaround is
5660: 20 74 6f 20 64 65 63 6c 61 72 65 20 74 68 65 20   to declare the 
5670: 74 61 62 6c 65 20 77 69 74 68 20 61 20 50 52 49  table with a PRI
5680: 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20  MARY KEY column 
5690: 69 6e 73 74 65 61 64 0a 20 20 6f 66 20 61 6e 20  instead.  of an 
56a0: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
56b0: 4b 45 59 20 63 6f 6c 75 6d 6e 2e 3c 2f 70 3e 0a  KEY column.</p>.
56c0: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 41 20 73  }..puts {.<p>A s
56d0: 70 65 63 69 61 6c 20 53 51 4c 20 66 75 6e 63 74  pecial SQL funct
56e0: 69 6f 6e 20 52 41 49 53 45 28 29 20 6d 61 79 20  ion RAISE() may 
56f0: 62 65 20 75 73 65 64 20 77 69 74 68 69 6e 20 61  be used within a
5700: 20 74 72 69 67 67 65 72 2d 70 72 6f 67 72 61 6d   trigger-program
5710: 2c 20 77 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f  , with the follo
5720: 77 69 6e 67 20 73 79 6e 74 61 78 3c 2f 70 3e 20  wing syntax</p> 
5730: 0a 7d 0a 53 79 6e 74 61 78 20 7b 72 61 69 73 65  .}.Syntax {raise
5740: 2d 66 75 6e 63 74 69 6f 6e 7d 20 7b 0a 52 41 49  -function} {.RAI
5750: 53 45 20 28 20 41 42 4f 52 54 2c 20 3c 65 72 72  SE ( ABORT, <err
5760: 6f 72 2d 6d 65 73 73 61 67 65 3e 20 29 20 7c 20  or-message> ) | 
5770: 0a 52 41 49 53 45 20 28 20 46 41 49 4c 2c 20 3c  .RAISE ( FAIL, <
5780: 65 72 72 6f 72 2d 6d 65 73 73 61 67 65 3e 20 29  error-message> )
5790: 20 7c 20 0a 52 41 49 53 45 20 28 20 52 4f 4c 4c   | .RAISE ( ROLL
57a0: 42 41 43 4b 2c 20 3c 65 72 72 6f 72 2d 6d 65 73  BACK, <error-mes
57b0: 73 61 67 65 3e 20 29 20 7c 20 0a 52 41 49 53 45  sage> ) | .RAISE
57c0: 20 28 20 49 47 4e 4f 52 45 20 29 0a 7d 0a 70 75   ( IGNORE ).}.pu
57d0: 74 73 20 7b 0a 3c 70 3e 57 68 65 6e 20 6f 6e 65  ts {.<p>When one
57e0: 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 74 68   of the first th
57f0: 72 65 65 20 66 6f 72 6d 73 20 69 73 20 63 61 6c  ree forms is cal
5800: 6c 65 64 20 64 75 72 69 6e 67 20 74 72 69 67 67  led during trigg
5810: 65 72 2d 70 72 6f 67 72 61 6d 20 65 78 65 63 75  er-program execu
5820: 74 69 6f 6e 2c 20 74 68 65 20 73 70 65 63 69 66  tion, the specif
5830: 69 65 64 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  ied ON CONFLICT 
5840: 70 72 6f 63 65 73 73 69 6e 67 20 69 73 20 70 65  processing is pe
5850: 72 66 6f 72 6d 65 64 20 28 65 69 74 68 65 72 20  rformed (either 
5860: 41 42 4f 52 54 2c 20 46 41 49 4c 20 6f 72 20 0a  ABORT, FAIL or .
5870: 20 52 4f 4c 4c 42 41 43 4b 29 20 61 6e 64 20 74   ROLLBACK) and t
5880: 68 65 20 63 75 72 72 65 6e 74 20 71 75 65 72 79  he current query
5890: 20 74 65 72 6d 69 6e 61 74 65 73 2e 20 41 6e 20   terminates. An 
58a0: 65 72 72 6f 72 20 63 6f 64 65 20 6f 66 20 53 51  error code of SQ
58b0: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20  LITE_CONSTRAINT 
58c0: 69 73 20 72 65 74 75 72 6e 65 64 20 74 6f 20 74  is returned to t
58d0: 68 65 20 75 73 65 72 2c 20 61 6c 6f 6e 67 20 77  he user, along w
58e0: 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65  ith the specifie
58f0: 64 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e  d error message.
5900: 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 52 41  </p>..<p>When RA
5910: 49 53 45 28 49 47 4e 4f 52 45 29 20 69 73 20 63  ISE(IGNORE) is c
5920: 61 6c 6c 65 64 2c 20 74 68 65 20 72 65 6d 61 69  alled, the remai
5930: 6e 64 65 72 20 6f 66 20 74 68 65 20 63 75 72 72  nder of the curr
5940: 65 6e 74 20 74 72 69 67 67 65 72 20 70 72 6f 67  ent trigger prog
5950: 72 61 6d 2c 0a 74 68 65 20 73 74 61 74 65 6d 65  ram,.the stateme
5960: 6e 74 20 74 68 61 74 20 63 61 75 73 65 64 20 74  nt that caused t
5970: 68 65 20 74 72 69 67 67 65 72 20 70 72 6f 67 72  he trigger progr
5980: 61 6d 20 74 6f 20 65 78 65 63 75 74 65 20 61 6e  am to execute an
5990: 64 20 61 6e 79 20 73 75 62 73 65 71 75 65 6e 74  d any subsequent
59a0: 0a 20 20 20 20 74 72 69 67 67 65 72 20 70 72 6f  .    trigger pro
59b0: 67 72 61 6d 73 20 74 68 61 74 20 77 6f 75 6c 64  grams that would
59c0: 20 6f 66 20 62 65 65 6e 20 65 78 65 63 75 74 65   of been execute
59d0: 64 20 61 72 65 20 61 62 61 6e 64 6f 6e 65 64 2e  d are abandoned.
59e0: 20 4e 6f 20 64 61 74 61 62 61 73 65 0a 20 20 20   No database.   
59f0: 20 63 68 61 6e 67 65 73 20 61 72 65 20 72 6f 6c   changes are rol
5a00: 6c 65 64 20 62 61 63 6b 2e 20 20 49 66 20 74 68  led back.  If th
5a10: 65 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74  e statement that
5a20: 20 63 61 75 73 65 64 20 74 68 65 20 74 72 69 67   caused the trig
5a30: 67 65 72 20 70 72 6f 67 72 61 6d 0a 20 20 20 20  ger program.    
5a40: 74 6f 20 65 78 65 63 75 74 65 20 69 73 20 69 74  to execute is it
5a50: 73 65 6c 66 20 70 61 72 74 20 6f 66 20 61 20 74  self part of a t
5a60: 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 2c 20  rigger program, 
5a70: 74 68 65 6e 20 74 68 61 74 20 74 72 69 67 67 65  then that trigge
5a80: 72 20 70 72 6f 67 72 61 6d 0a 20 20 20 20 72 65  r program.    re
5a90: 73 75 6d 65 73 20 65 78 65 63 75 74 69 6f 6e 20  sumes execution 
5aa0: 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67  at the beginning
5ab0: 20 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 65   of the next ste
5ac0: 70 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67  p..</p>..<p>Trig
5ad0: 67 65 72 73 20 61 72 65 20 72 65 6d 6f 76 65 64  gers are removed
5ae0: 20 75 73 69 6e 67 20 74 68 65 20 3c 61 20 68 72   using the <a hr
5af0: 65 66 3d 22 23 64 72 6f 70 74 72 69 67 67 65 72  ef="#droptrigger
5b00: 22 3e 44 52 4f 50 20 54 52 49 47 47 45 52 3c 2f  ">DROP TRIGGER</
5b10: 61 3e 0a 73 74 61 74 65 6d 65 6e 74 2e 20 20 4e  a>.statement.  N
5b20: 6f 6e 2d 74 65 6d 70 6f 72 61 72 79 20 74 72 69  on-temporary tri
5b30: 67 67 65 72 73 20 63 61 6e 6e 6f 74 20 62 65 20  ggers cannot be 
5b40: 61 64 64 65 64 20 6f 6e 20 61 20 74 61 62 6c 65  added on a table
5b50: 20 69 6e 20 61 6e 20 0a 61 74 74 61 63 68 65 64   in an .attached
5b60: 20 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 7d   database.</p>.}
5b70: 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41  ...Section {CREA
5b80: 54 45 20 56 49 45 57 7d 20 7b 63 72 65 61 74 65  TE VIEW} {create
5b90: 76 69 65 77 7d 0a 0a 53 79 6e 74 61 78 20 7b 73  view}..Syntax {s
5ba0: 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43 52  ql-command} {.CR
5bb0: 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45 4d  EATE [TEMP | TEM
5bc0: 50 4f 52 41 52 59 5d 20 56 49 45 57 20 3c 76 69  PORARY] VIEW <vi
5bd0: 65 77 2d 6e 61 6d 65 3e 20 41 53 20 3c 73 65 6c  ew-name> AS <sel
5be0: 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d  ect-statement>.}
5bf0: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20  ..puts {.<p>The 
5c00: 43 52 45 41 54 45 20 56 49 45 57 20 63 6f 6d 6d  CREATE VIEW comm
5c10: 61 6e 64 20 61 73 73 69 67 6e 73 20 61 20 6e 61  and assigns a na
5c20: 6d 65 20 74 6f 20 61 20 70 72 65 2d 70 61 63 6b  me to a pre-pack
5c30: 61 67 65 64 20 0a 3c 61 20 68 72 65 66 3d 22 23  aged .<a href="#
5c40: 73 65 6c 65 63 74 22 3e 53 45 4c 45 43 54 3c 2f  select">SELECT</
5c50: 61 3e 0a 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f  a>.statement.  O
5c60: 6e 63 65 20 74 68 65 20 76 69 65 77 20 69 73 20  nce the view is 
5c70: 63 72 65 61 74 65 64 2c 20 69 74 20 63 61 6e 20  created, it can 
5c80: 62 65 20 75 73 65 64 20 69 6e 20 74 68 65 20 46  be used in the F
5c90: 52 4f 4d 20 63 6c 61 75 73 65 0a 6f 66 20 61 6e  ROM clause.of an
5ca0: 6f 74 68 65 72 20 53 45 4c 45 43 54 20 69 6e 20  other SELECT in 
5cb0: 70 6c 61 63 65 20 6f 66 20 61 20 74 61 62 6c 65  place of a table
5cc0: 20 6e 61 6d 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e   name..</p>..<p>
5cd0: 59 6f 75 20 63 61 6e 6e 6f 74 20 43 4f 50 59 2c  You cannot COPY,
5ce0: 20 44 45 4c 45 54 45 2c 20 49 4e 53 45 52 54 20   DELETE, INSERT 
5cf0: 6f 72 20 55 50 44 41 54 45 20 61 20 76 69 65 77  or UPDATE a view
5d00: 2e 20 20 56 69 65 77 73 20 61 72 65 20 72 65 61  .  Views are rea
5d10: 64 2d 6f 6e 6c 79 20 0a 69 6e 20 53 51 4c 69 74  d-only .in SQLit
5d20: 65 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 6e 20  e.  However, in 
5d30: 6d 61 6e 79 20 63 61 73 65 73 20 79 6f 75 20 63  many cases you c
5d40: 61 6e 20 75 73 65 20 61 20 3c 61 20 68 72 65 66  an use a <a href
5d50: 3d 22 23 74 72 69 67 67 65 72 22 3e 0a 54 52 49  ="#trigger">.TRI
5d60: 47 47 45 52 3c 2f 61 3e 20 6f 6e 20 74 68 65 20  GGER</a> on the 
5d70: 76 69 65 77 20 74 6f 20 61 63 63 6f 6d 70 6c 69  view to accompli
5d80: 73 68 20 74 68 65 20 73 61 6d 65 20 74 68 69 6e  sh the same thin
5d90: 67 2e 20 20 56 69 65 77 73 20 61 72 65 20 72 65  g.  Views are re
5da0: 6d 6f 76 65 64 20 0a 77 69 74 68 20 74 68 65 20  moved .with the 
5db0: 3c 61 20 68 72 65 66 3d 22 23 64 72 6f 70 76 69  <a href="#dropvi
5dc0: 65 77 22 3e 44 52 4f 50 20 56 49 45 57 3c 2f 61  ew">DROP VIEW</a
5dd0: 3e 20 0a 63 6f 6d 6d 61 6e 64 2e 20 20 4e 6f 6e  > .command.  Non
5de0: 2d 74 65 6d 70 6f 72 61 72 79 20 76 69 65 77 73  -temporary views
5df0: 20 63 61 6e 6e 6f 74 20 62 65 20 63 72 65 61 74   cannot be creat
5e00: 65 64 20 6f 6e 20 74 61 62 6c 65 73 20 69 6e 20  ed on tables in 
5e10: 61 6e 20 61 74 74 61 63 68 65 64 20 0a 64 61 74  an attached .dat
5e20: 61 62 61 73 65 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53  abase.</p>.}...S
5e30: 65 63 74 69 6f 6e 20 44 45 4c 45 54 45 20 64 65  ection DELETE de
5e40: 6c 65 74 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71  lete..Syntax {sq
5e50: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 44  l-statement} {.D
5e60: 45 4c 45 54 45 20 46 52 4f 4d 20 5b 3c 64 61 74  ELETE FROM [<dat
5e70: 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c  abase-name> .] <
5e80: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 57 48 45  table-name> [WHE
5e90: 52 45 20 3c 65 78 70 72 3e 5d 0a 7d 0a 0a 70 75  RE <expr>].}..pu
5ea0: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 45 4c 45  ts {.<p>The DELE
5eb0: 54 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73  TE command is us
5ec0: 65 64 20 74 6f 20 72 65 6d 6f 76 65 20 72 65 63  ed to remove rec
5ed0: 6f 72 64 73 20 66 72 6f 6d 20 61 20 74 61 62 6c  ords from a tabl
5ee0: 65 2e 0a 54 68 65 20 63 6f 6d 6d 61 6e 64 20 63  e..The command c
5ef0: 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20 22  onsists of the "
5f00: 44 45 4c 45 54 45 20 46 52 4f 4d 22 20 6b 65 79  DELETE FROM" key
5f10: 77 6f 72 64 73 20 66 6f 6c 6c 6f 77 65 64 20 62  words followed b
5f20: 79 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  y.the name of th
5f30: 65 20 74 61 62 6c 65 20 66 72 6f 6d 20 77 68 69  e table from whi
5f40: 63 68 20 72 65 63 6f 72 64 73 20 61 72 65 20 74  ch records are t
5f50: 6f 20 62 65 20 72 65 6d 6f 76 65 64 2e 0a 3c 2f  o be removed..</
5f60: 70 3e 0a 0a 3c 70 3e 57 69 74 68 6f 75 74 20 61  p>..<p>Without a
5f70: 20 57 48 45 52 45 20 63 6c 61 75 73 65 2c 20 61   WHERE clause, a
5f80: 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68 65 20 74  ll rows of the t
5f90: 61 62 6c 65 20 61 72 65 20 72 65 6d 6f 76 65 64  able are removed
5fa0: 2e 0a 49 66 20 61 20 57 48 45 52 45 20 63 6c 61  ..If a WHERE cla
5fb0: 75 73 65 20 69 73 20 73 75 70 70 6c 69 65 64 2c  use is supplied,
5fc0: 20 74 68 65 6e 20 6f 6e 6c 79 20 74 68 6f 73 65   then only those
5fd0: 20 72 6f 77 73 20 74 68 61 74 20 6d 61 74 63 68   rows that match
5fe0: 0a 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20  .the expression 
5ff0: 61 72 65 20 72 65 6d 6f 76 65 64 2e 3c 2f 70 3e  are removed.</p>
6000: 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 44 45  .}...Section {DE
6010: 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 64  TACH DATABASE} d
6020: 65 74 61 63 68 0a 0a 53 79 6e 74 61 78 20 7b 73  etach..Syntax {s
6030: 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 45  ql-command} {.DE
6040: 54 41 43 48 20 5b 44 41 54 41 42 41 53 45 5d 20  TACH [DATABASE] 
6050: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 0a  <database-name>.
6060: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 69  }..puts {.<p>Thi
6070: 73 20 73 74 61 74 65 6d 65 6e 74 20 64 65 74 61  s statement deta
6080: 63 68 65 73 20 61 6e 20 61 64 64 69 74 69 6f 6e  ches an addition
6090: 61 6c 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  al database conn
60a0: 65 63 74 69 6f 6e 20 70 72 65 76 69 6f 75 73 6c  ection previousl
60b0: 79 20 0a 61 74 74 61 63 68 65 64 20 75 73 69 6e  y .attached usin
60c0: 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23  g the <a href="#
60d0: 61 74 74 61 63 68 22 3e 41 54 54 41 43 48 20 44  attach">ATTACH D
60e0: 41 54 41 42 41 53 45 3c 2f 61 3e 20 73 74 61 74  ATABASE</a> stat
60f0: 65 6d 65 6e 74 2e 20 20 49 74 0a 69 73 20 70 6f  ement.  It.is po
6100: 73 73 69 62 6c 65 20 74 6f 20 68 61 76 65 20 74  ssible to have t
6110: 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65  he same database
6120: 20 66 69 6c 65 20 61 74 74 61 63 68 65 64 20 6d   file attached m
6130: 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 75 73  ultiple times us
6140: 69 6e 67 20 0a 64 69 66 66 65 72 65 6e 74 20 6e  ing .different n
6150: 61 6d 65 73 2c 20 61 6e 64 20 64 65 74 61 63 68  ames, and detach
6160: 69 6e 67 20 6f 6e 65 20 63 6f 6e 6e 65 63 74 69  ing one connecti
6170: 6f 6e 20 74 6f 20 61 20 66 69 6c 65 20 77 69 6c  on to a file wil
6180: 6c 20 6c 65 61 76 65 20 74 68 65 20 0a 6f 74 68  l leave the .oth
6190: 65 72 73 20 69 6e 74 61 63 74 2e 3c 2f 70 3e 0a  ers intact.</p>.
61a0: 0a 3c 70 3e 54 68 69 73 20 73 74 61 74 65 6d 65  .<p>This stateme
61b0: 6e 74 20 77 69 6c 6c 20 66 61 69 6c 20 69 66 20  nt will fail if 
61c0: 53 51 4c 69 74 65 20 69 73 20 69 6e 20 74 68 65  SQLite is in the
61d0: 20 6d 69 64 64 6c 65 20 6f 66 20 61 20 74 72 61   middle of a tra
61e0: 6e 73 61 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 7d 0a  nsaction.</p>.}.
61f0: 0a 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20  ..Section {DROP 
6200: 49 4e 44 45 58 7d 20 64 72 6f 70 69 6e 64 65 78  INDEX} dropindex
6210: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f  ..Syntax {sql-co
6220: 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50 20 49 4e  mmand} {.DROP IN
6230: 44 45 58 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e  DEX [<database-n
6240: 61 6d 65 3e 20 2e 5d 20 3c 69 6e 64 65 78 2d 6e  ame> .] <index-n
6250: 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  ame>.}..puts {.<
6260: 70 3e 54 68 65 20 44 52 4f 50 20 49 4e 44 45 58  p>The DROP INDEX
6270: 20 73 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76   statement remov
6280: 65 73 20 61 6e 20 69 6e 64 65 78 20 61 64 64 65  es an index adde
6290: 64 20 77 69 74 68 20 74 68 65 20 3c 61 20 68 72  d with the <a hr
62a0: 65 66 3d 22 23 63 72 65 61 74 65 69 6e 64 65 78  ef="#createindex
62b0: 22 3e 0a 43 52 45 41 54 45 20 49 4e 44 45 58 3c  ">.CREATE INDEX<
62c0: 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  /a> statement.  
62d0: 54 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 64 20  The index named 
62e0: 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65  is completely re
62f0: 6d 6f 76 65 64 20 66 72 6f 6d 0a 74 68 65 20 64  moved from.the d
6300: 69 73 6b 2e 20 20 54 68 65 20 6f 6e 6c 79 20 77  isk.  The only w
6310: 61 79 20 74 6f 20 72 65 63 6f 76 65 72 20 74 68  ay to recover th
6320: 65 20 69 6e 64 65 78 20 69 73 20 74 6f 20 72 65  e index is to re
6330: 65 6e 74 65 72 20 74 68 65 0a 61 70 70 72 6f 70  enter the.approp
6340: 72 69 61 74 65 20 43 52 45 41 54 45 20 49 4e 44  riate CREATE IND
6350: 45 58 20 63 6f 6d 6d 61 6e 64 2e 20 20 4e 6f 6e  EX command.  Non
6360: 2d 74 65 6d 70 6f 72 61 72 79 20 69 6e 64 65 78  -temporary index
6370: 65 73 20 6f 6e 20 74 61 62 6c 65 73 20 69 6e 20  es on tables in 
6380: 0a 61 6e 20 61 74 74 61 63 68 65 64 20 64 61 74  .an attached dat
6390: 61 62 61 73 65 20 63 61 6e 6e 6f 74 20 62 65 20  abase cannot be 
63a0: 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a  dropped.</p>.}..
63b0: 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54  .Section {DROP T
63c0: 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65 0a  ABLE} droptable.
63d0: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d  .Syntax {sql-com
63e0: 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50 20 54 41 42  mand} {.DROP TAB
63f0: 4c 45 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a  LE <table-name>.
6400: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
6410: 20 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74   DROP TABLE stat
6420: 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20  ement removes a 
6430: 74 61 62 6c 65 20 61 64 64 65 64 20 77 69 74 68  table added with
6440: 20 74 68 65 20 3c 61 20 68 72 65 66 3d 0a 22 23   the <a href=."#
6450: 63 72 65 61 74 65 74 61 62 6c 65 22 3e 43 52 45  createtable">CRE
6460: 41 54 45 20 54 41 42 4c 45 3c 2f 61 3e 20 73 74  ATE TABLE</a> st
6470: 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e 61  atement.  The na
6480: 6d 65 20 73 70 65 63 69 66 69 65 64 20 69 73 20  me specified is 
6490: 74 68 65 0a 74 61 62 6c 65 20 6e 61 6d 65 2e 20  the.table name. 
64a0: 20 49 74 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c   It is completel
64b0: 79 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74  y removed from t
64c0: 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65  he database sche
64d0: 6d 61 20 61 6e 64 20 74 68 65 20 0a 64 69 73 6b  ma and the .disk
64e0: 20 66 69 6c 65 2e 20 20 54 68 65 20 74 61 62 6c   file.  The tabl
64f0: 65 20 63 61 6e 20 6e 6f 74 20 62 65 20 72 65 63  e can not be rec
6500: 6f 76 65 72 65 64 2e 20 20 41 6c 6c 20 69 6e 64  overed.  All ind
6510: 69 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 20  ices associated 
6520: 0a 77 69 74 68 20 74 68 65 20 74 61 62 6c 65 20  .with the table 
6530: 61 72 65 20 61 6c 73 6f 20 64 65 6c 65 74 65 64  are also deleted
6540: 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f 72 61 72 79  .  Non-temporary
6550: 20 74 61 62 6c 65 73 20 69 6e 20 61 6e 20 61 74   tables in an at
6560: 74 61 63 68 65 64 20 0a 64 61 74 61 62 61 73 65  tached .database
6570: 20 63 61 6e 6e 6f 74 20 62 65 20 64 72 6f 70 70   cannot be dropp
6580: 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74  ed.</p>.}...Sect
6590: 69 6f 6e 20 7b 44 52 4f 50 20 54 52 49 47 47 45  ion {DROP TRIGGE
65a0: 52 7d 20 64 72 6f 70 74 72 69 67 67 65 72 0a 53  R} droptrigger.S
65b0: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
65c0: 6d 65 6e 74 7d 20 7b 0a 44 52 4f 50 20 54 52 49  ment} {.DROP TRI
65d0: 47 47 45 52 20 5b 3c 64 61 74 61 62 61 73 65 2d  GGER [<database-
65e0: 6e 61 6d 65 3e 20 2e 5d 20 3c 74 72 69 67 67 65  name> .] <trigge
65f0: 72 2d 6e 61 6d 65 3e 0a 7d 0a 70 75 74 73 20 7b  r-name>.}.puts {
6600: 20 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 54 52   .<p>The DROP TR
6610: 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74 20  IGGER statement 
6620: 72 65 6d 6f 76 65 73 20 61 20 74 72 69 67 67 65  removes a trigge
6630: 72 20 63 72 65 61 74 65 64 20 62 79 20 74 68 65  r created by the
6640: 20 0a 3c 61 20 68 72 65 66 3d 22 23 63 72 65 61   .<a href="#crea
6650: 74 65 74 72 69 67 67 65 72 22 3e 43 52 45 41 54  tetrigger">CREAT
6660: 45 20 54 52 49 47 47 45 52 3c 2f 61 3e 20 73 74  E TRIGGER</a> st
6670: 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 74 72  atement.  The tr
6680: 69 67 67 65 72 20 69 73 20 0a 64 65 6c 65 74 65  igger is .delete
6690: 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62  d from the datab
66a0: 61 73 65 20 73 63 68 65 6d 61 2e 20 4e 6f 74 65  ase schema. Note
66b0: 20 74 68 61 74 20 74 72 69 67 67 65 72 73 20 61   that triggers a
66c0: 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  re automatically
66d0: 20 0a 64 72 6f 70 70 65 64 20 77 68 65 6e 20 74   .dropped when t
66e0: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 74 61  he associated ta
66f0: 62 6c 65 20 69 73 20 64 72 6f 70 70 65 64 2e 20  ble is dropped. 
6700: 20 4e 6f 6e 2d 74 65 6d 70 6f 72 61 72 79 20 74   Non-temporary t
6710: 72 69 67 67 65 72 73 20 0a 63 61 6e 6e 6f 74 20  riggers .cannot 
6720: 62 65 20 64 72 6f 70 70 65 64 20 6f 6e 20 61 74  be dropped on at
6730: 74 61 63 68 65 64 20 74 61 62 6c 65 73 2e 3c 2f  tached tables.</
6740: 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b  p>.}...Section {
6750: 44 52 4f 50 20 56 49 45 57 7d 20 64 72 6f 70 76  DROP VIEW} dropv
6760: 69 65 77 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  iew..Syntax {sql
6770: 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50  -command} {.DROP
6780: 20 56 49 45 57 20 3c 76 69 65 77 2d 6e 61 6d 65   VIEW <view-name
6790: 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  >.}..puts {.<p>T
67a0: 68 65 20 44 52 4f 50 20 56 49 45 57 20 73 74 61  he DROP VIEW sta
67b0: 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61  tement removes a
67c0: 20 76 69 65 77 20 63 72 65 61 74 65 64 20 62 79   view created by
67d0: 20 74 68 65 20 3c 61 20 68 72 65 66 3d 0a 22 23   the <a href=."#
67e0: 63 72 65 61 74 65 76 69 65 77 22 3e 43 52 45 41  createview">CREA
67f0: 54 45 20 56 49 45 57 3c 2f 61 3e 20 73 74 61 74  TE VIEW</a> stat
6800: 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e 61 6d 65  ement.  The name
6810: 20 73 70 65 63 69 66 69 65 64 20 69 73 20 74 68   specified is th
6820: 65 20 0a 76 69 65 77 20 6e 61 6d 65 2e 20 20 49  e .view name.  I
6830: 74 20 69 73 20 72 65 6d 6f 76 65 64 20 66 72 6f  t is removed fro
6840: 6d 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73  m the database s
6850: 63 68 65 6d 61 2c 20 62 75 74 20 6e 6f 20 61 63  chema, but no ac
6860: 74 75 61 6c 20 64 61 74 61 20 0a 69 6e 20 74 68  tual data .in th
6870: 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 62 61 73  e underlying bas
6880: 65 20 74 61 62 6c 65 73 20 69 73 20 6d 6f 64 69  e tables is modi
6890: 66 69 65 64 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f  fied.  Non-tempo
68a0: 72 61 72 79 20 76 69 65 77 73 20 69 6e 20 0a 61  rary views in .a
68b0: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
68c0: 73 20 63 61 6e 6e 6f 74 20 62 65 20 64 72 6f 70  s cannot be drop
68d0: 70 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63  ped.</p>.}...Sec
68e0: 74 69 6f 6e 20 45 58 50 4c 41 49 4e 20 65 78 70  tion EXPLAIN exp
68f0: 6c 61 69 6e 0a 0a 53 79 6e 74 61 78 20 7b 73 71  lain..Syntax {sq
6900: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 45  l-statement} {.E
6910: 58 50 4c 41 49 4e 20 3c 73 71 6c 2d 73 74 61 74  XPLAIN <sql-stat
6920: 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b  ement>.}..puts {
6930: 0a 3c 70 3e 54 68 65 20 45 58 50 4c 41 49 4e 20  .<p>The EXPLAIN 
6940: 63 6f 6d 6d 61 6e 64 20 6d 6f 64 69 66 69 65 72  command modifier
6950: 20 69 73 20 61 20 6e 6f 6e 2d 73 74 61 6e 64 61   is a non-standa
6960: 72 64 20 65 78 74 65 6e 73 69 6f 6e 2e 20 20 54  rd extension.  T
6970: 68 65 0a 69 64 65 61 20 63 6f 6d 65 73 20 66 72  he.idea comes fr
6980: 6f 6d 20 61 20 73 69 6d 69 6c 61 72 20 63 6f 6d  om a similar com
6990: 6d 61 6e 64 20 66 6f 75 6e 64 20 69 6e 20 50 6f  mand found in Po
69a0: 73 74 67 72 65 53 51 4c 2c 20 62 75 74 20 74 68  stgreSQL, but th
69b0: 65 20 6f 70 65 72 61 74 69 6f 6e 0a 69 73 20 63  e operation.is c
69c0: 6f 6d 70 6c 65 74 65 6c 79 20 64 69 66 66 65 72  ompletely differ
69d0: 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  ent.</p>..<p>If 
69e0: 74 68 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77  the EXPLAIN keyw
69f0: 6f 72 64 20 61 70 70 65 61 72 73 20 62 65 66 6f  ord appears befo
6a00: 72 65 20 61 6e 79 20 6f 74 68 65 72 20 53 51 4c  re any other SQL
6a10: 69 74 65 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a  ite SQL command.
6a20: 74 68 65 6e 20 69 6e 73 74 65 61 64 20 6f 66 20  then instead of 
6a30: 61 63 74 75 61 6c 6c 79 20 65 78 65 63 75 74 69  actually executi
6a40: 6e 67 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2c 20  ng the command, 
6a50: 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
6a60: 72 79 20 77 69 6c 6c 0a 72 65 70 6f 72 74 20 62  ry will.report b
6a70: 61 63 6b 20 74 68 65 20 73 65 71 75 65 6e 63 65  ack the sequence
6a80: 20 6f 66 20 76 69 72 74 75 61 6c 20 6d 61 63 68   of virtual mach
6a90: 69 6e 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 73  ine instructions
6aa0: 20 69 74 20 77 6f 75 6c 64 20 68 61 76 65 0a 75   it would have.u
6ab0: 73 65 64 20 74 6f 20 65 78 65 63 75 74 65 20 74  sed to execute t
6ac0: 68 65 20 63 6f 6d 6d 61 6e 64 20 68 61 64 20 74  he command had t
6ad0: 68 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f  he EXPLAIN keywo
6ae0: 72 64 20 6e 6f 74 20 62 65 65 6e 20 70 72 65 73  rd not been pres
6af0: 65 6e 74 2e 0a 46 6f 72 20 61 64 64 69 74 69 6f  ent..For additio
6b00: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  nal information 
6b10: 61 62 6f 75 74 20 76 69 72 74 75 61 6c 20 6d 61  about virtual ma
6b20: 63 68 69 6e 65 20 69 6e 73 74 72 75 63 74 69 6f  chine instructio
6b30: 6e 73 20 73 65 65 0a 74 68 65 20 3c 61 20 68 72  ns see.the <a hr
6b40: 65 66 3d 22 61 72 63 68 2e 68 74 6d 6c 22 3e 61  ef="arch.html">a
6b50: 72 63 68 69 74 65 63 74 75 72 65 20 64 65 73 63  rchitecture desc
6b60: 72 69 70 74 69 6f 6e 3c 2f 61 3e 20 6f 72 20 74  ription</a> or t
6b70: 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  he documentation
6b80: 0a 6f 6e 20 3c 61 20 68 72 65 66 3d 22 6f 70 63  .on <a href="opc
6b90: 6f 64 65 2e 68 74 6d 6c 22 3e 61 76 61 69 6c 61  ode.html">availa
6ba0: 62 6c 65 20 6f 70 63 6f 64 65 73 3c 2f 61 3e 20  ble opcodes</a> 
6bb0: 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20  for the virtual 
6bc0: 6d 61 63 68 69 6e 65 2e 3c 2f 70 3e 0a 7d 0a 0a  machine.</p>.}..
6bd0: 0a 53 65 63 74 69 6f 6e 20 65 78 70 72 65 73 73  .Section express
6be0: 69 6f 6e 20 65 78 70 72 0a 0a 53 79 6e 74 61 78  ion expr..Syntax
6bf0: 20 7b 65 78 70 72 7d 20 7b 0a 3c 65 78 70 72 3e   {expr} {.<expr>
6c00: 20 3c 62 69 6e 61 72 79 2d 6f 70 3e 20 3c 65 78   <binary-op> <ex
6c10: 70 72 3e 20 7c 0a 3c 65 78 70 72 3e 20 3c 6c 69  pr> |.<expr> <li
6c20: 6b 65 2d 6f 70 3e 20 3c 65 78 70 72 3e 20 7c 0a  ke-op> <expr> |.
6c30: 3c 75 6e 61 72 79 2d 6f 70 3e 20 3c 65 78 70 72  <unary-op> <expr
6c40: 3e 20 7c 0a 28 20 3c 65 78 70 72 3e 20 29 20 7c  > |.( <expr> ) |
6c50: 0a 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c  .<column-name> |
6c60: 0a 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20  .<table-name> . 
6c70: 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a  <column-name> |.
6c80: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
6c90: 2e 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e  . <table-name> .
6ca0: 20 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c   <column-name> |
6cb0: 0a 3c 6c 69 74 65 72 61 6c 2d 76 61 6c 75 65 3e  .<literal-value>
6cc0: 20 7c 0a 3c 66 75 6e 63 74 69 6f 6e 2d 6e 61 6d   |.<function-nam
6cd0: 65 3e 20 28 20 3c 65 78 70 72 2d 6c 69 73 74 3e  e> ( <expr-list>
6ce0: 20 7c 20 53 54 41 52 20 29 20 7c 0a 3c 65 78 70   | STAR ) |.<exp
6cf0: 72 3e 20 28 2b 29 20 7c 0a 3c 65 78 70 72 3e 20  r> (+) |.<expr> 
6d00: 49 53 4e 55 4c 4c 20 7c 0a 3c 65 78 70 72 3e 20  ISNULL |.<expr> 
6d10: 4e 4f 54 4e 55 4c 4c 20 7c 0a 3c 65 78 70 72 3e  NOTNULL |.<expr>
6d20: 20 5b 4e 4f 54 5d 20 42 45 54 57 45 45 4e 20 3c   [NOT] BETWEEN <
6d30: 65 78 70 72 3e 20 41 4e 44 20 3c 65 78 70 72 3e  expr> AND <expr>
6d40: 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20   |.<expr> [NOT] 
6d50: 49 4e 20 28 20 3c 76 61 6c 75 65 2d 6c 69 73 74  IN ( <value-list
6d60: 3e 20 29 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f  > ) |.<expr> [NO
6d70: 54 5d 20 49 4e 20 28 20 3c 73 65 6c 65 63 74 2d  T] IN ( <select-
6d80: 73 74 61 74 65 6d 65 6e 74 3e 20 29 20 7c 0a 28  statement> ) |.(
6d90: 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65   <select-stateme
6da0: 6e 74 3e 20 29 20 7c 0a 43 41 53 45 20 5b 3c 65  nt> ) |.CASE [<e
6db0: 78 70 72 3e 5d 20 4c 50 20 57 48 45 4e 20 3c 65  xpr>] LP WHEN <e
6dc0: 78 70 72 3e 20 54 48 45 4e 20 3c 65 78 70 72 3e  xpr> THEN <expr>
6dd0: 20 52 50 50 4c 55 53 20 5b 45 4c 53 45 20 3c 65   RPPLUS [ELSE <e
6de0: 78 70 72 3e 5d 20 45 4e 44 0a 7d 20 7b 6c 69 6b  xpr>] END.} {lik
6df0: 65 2d 6f 70 7d 20 7b 0a 4c 49 4b 45 20 7c 20 47  e-op} {.LIKE | G
6e00: 4c 4f 42 20 7c 20 4e 4f 54 20 4c 49 4b 45 20 7c  LOB | NOT LIKE |
6e10: 20 4e 4f 54 20 47 4c 4f 42 0a 7d 0a 0a 70 75 74   NOT GLOB.}..put
6e20: 73 20 7b 0a 3c 70 3e 54 68 69 73 20 73 65 63 74  s {.<p>This sect
6e30: 69 6f 6e 20 69 73 20 64 69 66 66 65 72 65 6e 74  ion is different
6e40: 20 66 72 6f 6d 20 74 68 65 20 6f 74 68 65 72 73   from the others
6e50: 2e 20 20 4d 6f 73 74 20 6f 74 68 65 72 20 73 65  .  Most other se
6e60: 63 74 69 6f 6e 73 20 6f 66 0a 74 68 69 73 20 64  ctions of.this d
6e70: 6f 63 75 6d 65 6e 74 20 74 61 6c 6b 73 20 61 62  ocument talks ab
6e80: 6f 75 74 20 61 20 70 61 72 74 69 63 75 6c 61 72  out a particular
6e90: 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 54   SQL command.  T
6ea0: 68 69 73 20 73 65 63 74 69 6f 6e 20 64 6f 65 73  his section does
6eb0: 0a 6e 6f 74 20 74 61 6c 6b 20 61 62 6f 75 74 20  .not talk about 
6ec0: 61 20 73 74 61 6e 64 61 6c 6f 6e 65 20 63 6f 6d  a standalone com
6ed0: 6d 61 6e 64 20 62 75 74 20 61 62 6f 75 74 20 22  mand but about "
6ee0: 65 78 70 72 65 73 73 69 6f 6e 73 22 20 77 68 69  expressions" whi
6ef0: 63 68 20 61 72 65 20 0a 73 75 62 63 6f 6d 70 6f  ch are .subcompo
6f00: 6e 65 6e 74 73 20 6f 66 20 6d 6f 73 74 20 6f 74  nents of most ot
6f10: 68 65 72 20 63 6f 6d 6d 61 6e 64 73 2e 3c 2f 70  her commands.</p
6f20: 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 75 6e 64  >..<p>SQLite und
6f30: 65 72 73 74 61 6e 64 73 20 74 68 65 20 66 6f 6c  erstands the fol
6f40: 6c 6f 77 69 6e 67 20 62 69 6e 61 72 79 20 6f 70  lowing binary op
6f50: 65 72 61 74 6f 72 73 2c 20 69 6e 20 6f 72 64 65  erators, in orde
6f60: 72 20 66 72 6f 6d 0a 68 69 67 68 65 73 74 20 74  r from.highest t
6f70: 6f 20 6c 6f 77 65 73 74 20 70 72 65 63 65 64 65  o lowest precede
6f80: 6e 63 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b  nce:</p>..<block
6f90: 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 3c 66 6f 6e  quote><pre>.<fon
6fa0: 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30  t color="#2c2cf0
6fb0: 22 3e 3c 62 69 67 3e 7c 7c 0a 2a 20 20 20 20 2f  "><big>||.*    /
6fc0: 20 20 20 20 25 0a 2b 20 20 20 20 2d 0a 26 6c 74      %.+    -.&lt
6fd0: 3b 26 6c 74 3b 20 20 20 26 67 74 3b 26 67 74 3b  ;&lt;   &gt;&gt;
6fe0: 20 20 20 26 61 6d 70 3b 20 20 20 20 7c 0a 26 6c     &amp;    |.&l
6ff0: 74 3b 20 20 20 20 26 6c 74 3b 3d 20 20 20 26 67  t;    &lt;=   &g
7000: 74 3b 20 20 20 20 26 67 74 3b 3d 0a 3d 20 20 20  t;    &gt;=.=   
7010: 20 3d 3d 20 20 20 21 3d 20 20 20 26 6c 74 3b 26   ==   !=   &lt;&
7020: 67 74 3b 20 20 20 3c 2f 62 69 67 3e 49 4e 0a 41  gt;   </big>IN.A
7030: 4e 44 20 20 20 0a 4f 52 3c 2f 66 6f 6e 74 3e 0a  ND   .OR</font>.
7040: 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f  </pre></blockquo
7050: 74 65 3e 0a 0a 3c 70 3e 53 75 70 70 6f 72 74 65  te>..<p>Supporte
7060: 64 20 75 6e 61 72 79 20 6f 70 65 72 61 74 65 72  d unary operater
7070: 73 20 61 72 65 20 74 68 65 73 65 3a 3c 2f 70 3e  s are these:</p>
7080: 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70  ..<blockquote><p
7090: 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d  re>.<font color=
70a0: 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67 3e 2d  "#2c2cf0"><big>-
70b0: 20 20 20 20 2b 20 20 20 20 21 20 20 20 20 7e 3c      +    !    ~<
70c0: 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70  /big></font>.</p
70d0: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
70e0: 0a 0a 3c 70 3e 41 6e 79 20 53 51 4c 69 74 65 20  ..<p>Any SQLite 
70f0: 76 61 6c 75 65 20 63 61 6e 20 62 65 20 75 73 65  value can be use
7100: 64 20 61 73 20 70 61 72 74 20 6f 66 20 61 6e 20  d as part of an 
7110: 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 0a 46 6f  expression.  .Fo
7120: 72 20 61 72 69 74 68 6d 65 74 69 63 20 6f 70 65  r arithmetic ope
7130: 72 61 74 69 6f 6e 73 2c 20 69 6e 74 65 67 65 72  rations, integer
7140: 73 20 61 72 65 20 74 72 65 61 74 65 64 20 61 73  s are treated as
7150: 20 69 6e 74 65 67 65 72 73 2e 0a 53 74 72 69 6e   integers..Strin
7160: 67 73 20 61 72 65 20 66 69 72 73 74 20 63 6f 6e  gs are first con
7170: 76 65 72 74 65 64 20 74 6f 20 72 65 61 6c 20 6e  verted to real n
7180: 75 6d 62 65 72 73 20 75 73 69 6e 67 20 3c 62 3e  umbers using <b>
7190: 61 74 6f 66 28 29 3c 2f 62 3e 2e 0a 46 6f 72 20  atof()</b>..For 
71a0: 63 6f 6d 70 61 72 69 73 6f 6e 20 6f 70 65 72 61  comparison opera
71b0: 74 6f 72 73 2c 20 6e 75 6d 62 65 72 73 20 63 6f  tors, numbers co
71c0: 6d 70 61 72 65 20 61 73 20 6e 75 6d 62 65 72 73  mpare as numbers
71d0: 20 61 6e 64 20 73 74 72 69 6e 67 73 0a 63 6f 6d   and strings.com
71e0: 70 61 72 65 20 75 73 69 6e 67 20 74 68 65 20 3c  pare using the <
71f0: 62 3e 73 74 72 63 6d 70 28 29 3c 2f 62 3e 20 66  b>strcmp()</b> f
7200: 75 6e 63 74 69 6f 6e 2e 0a 4e 6f 74 65 20 74 68  unction..Note th
7210: 61 74 20 74 68 65 72 65 20 61 72 65 20 74 77 6f  at there are two
7220: 20 76 61 72 69 61 74 69 6f 6e 73 20 6f 66 20 74   variations of t
7230: 68 65 20 65 71 75 61 6c 73 20 61 6e 64 20 6e 6f  he equals and no
7240: 74 20 65 71 75 61 6c 73 0a 6f 70 65 72 61 74 6f  t equals.operato
7250: 72 73 2e 20 20 45 71 75 61 6c 73 20 63 61 6e 20  rs.  Equals can 
7260: 62 65 20 65 69 74 68 65 72 7d 0a 70 75 74 73 20  be either}.puts 
7270: 22 5b 4f 70 65 72 61 74 6f 72 20 3d 5d 20 6f 72  "[Operator =] or
7280: 20 5b 4f 70 65 72 61 74 6f 72 20 3d 3d 5d 2e 0a   [Operator ==]..
7290: 54 68 65 20 6e 6f 6e 2d 65 71 75 61 6c 73 20 6f  The non-equals o
72a0: 70 65 72 61 74 6f 72 20 63 61 6e 20 62 65 20 65  perator can be e
72b0: 69 74 68 65 72 0a 5b 4f 70 65 72 61 74 6f 72 20  ither.[Operator 
72c0: 21 3d 5d 20 6f 72 20 5b 4f 70 65 72 61 74 6f 72  !=] or [Operator
72d0: 20 7b 26 6c 74 3b 26 67 74 3b 7d 5d 2e 0a 54 68   {&lt;&gt;}]..Th
72e0: 65 20 5b 4f 70 65 72 61 74 6f 72 20 7c 7c 5d 20  e [Operator ||] 
72f0: 6f 70 65 72 61 74 6f 72 20 69 73 20 5c 22 63 6f  operator is \"co
7300: 6e 63 61 74 65 6e 61 74 65 5c 22 20 2d 20 69 74  ncatenate\" - it
7310: 20 6a 6f 69 6e 73 20 74 6f 67 65 74 68 65 72 0a   joins together.
7320: 74 68 65 20 74 77 6f 20 73 74 72 69 6e 67 73 20  the two strings 
7330: 6f 66 20 69 74 73 20 6f 70 65 72 61 6e 64 73 2e  of its operands.
7340: 0a 54 68 65 20 6f 70 65 72 61 74 6f 72 20 5b 4f  .The operator [O
7350: 70 65 72 61 74 6f 72 20 25 5d 20 6f 75 74 70 75  perator %] outpu
7360: 74 73 20 74 68 65 20 72 65 6d 61 69 6e 64 65 72  ts the remainder
7370: 20 6f 66 20 69 74 73 20 6c 65 66 74 20 0a 6f 70   of its left .op
7380: 65 72 61 6e 64 20 6d 6f 64 75 6c 6f 20 69 74 73  erand modulo its
7390: 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64 2e 3c   right operand.<
73a0: 2f 70 3e 22 0a 70 75 74 73 20 7b 0a 0a 3c 61 20  /p>".puts {..<a 
73b0: 6e 61 6d 65 3d 22 6c 69 6b 65 22 3e 3c 2f 61 3e  name="like"></a>
73c0: 0a 3c 70 3e 54 68 65 20 4c 49 4b 45 20 6f 70 65  .<p>The LIKE ope
73d0: 72 61 74 6f 72 20 64 6f 65 73 20 61 20 77 69 6c  rator does a wil
73e0: 64 63 61 72 64 20 63 6f 6d 70 61 72 69 73 69 6f  dcard comparisio
73f0: 6e 2e 20 20 54 68 65 20 6f 70 65 72 61 6e 64 0a  n.  The operand.
7400: 74 6f 20 74 68 65 20 72 69 67 68 74 20 63 6f 6e  to the right con
7410: 74 61 69 6e 73 20 74 68 65 20 77 69 6c 64 63 61  tains the wildca
7420: 72 64 73 2e 7d 0a 70 75 74 73 20 22 41 20 70 65  rds.}.puts "A pe
7430: 72 63 65 6e 74 20 73 79 6d 62 6f 6c 20 5b 4f 70  rcent symbol [Op
7440: 65 72 61 74 6f 72 20 25 5d 20 69 6e 20 74 68 65  erator %] in the
7450: 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64 0a 6d   right operand.m
7460: 61 74 63 68 65 73 20 61 6e 79 20 73 65 71 75 65  atches any seque
7470: 6e 63 65 20 6f 66 20 7a 65 72 6f 20 6f 72 20 6d  nce of zero or m
7480: 6f 72 65 20 63 68 61 72 61 63 74 65 72 73 20 6f  ore characters o
7490: 6e 20 74 68 65 20 6c 65 66 74 2e 0a 41 6e 20 75  n the left..An u
74a0: 6e 64 65 72 73 63 6f 72 65 20 5b 4f 70 65 72 61  nderscore [Opera
74b0: 74 6f 72 20 5f 5d 20 6f 6e 20 74 68 65 20 72 69  tor _] on the ri
74c0: 67 68 74 0a 6d 61 74 63 68 65 73 20 61 6e 79 20  ght.matches any 
74d0: 73 69 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72  single character
74e0: 20 6f 6e 20 74 68 65 20 6c 65 66 74 2e 22 0a 70   on the left.".p
74f0: 75 74 73 20 7b 54 68 65 20 4c 49 4b 45 20 6f 70  uts {The LIKE op
7500: 65 72 61 74 6f 72 20 69 73 0a 6e 6f 74 20 63 61  erator is.not ca
7510: 73 65 20 73 65 6e 73 69 74 69 76 65 20 61 6e 64  se sensitive and
7520: 20 77 69 6c 6c 20 6d 61 74 63 68 20 75 70 70 65   will match uppe
7530: 72 20 63 61 73 65 20 63 68 61 72 61 63 74 65 72  r case character
7540: 73 20 6f 6e 20 6f 6e 65 0a 73 69 64 65 20 61 67  s on one.side ag
7550: 61 69 6e 73 74 20 6c 6f 77 65 72 20 63 61 73 65  ainst lower case
7560: 20 63 68 61 72 61 63 74 65 72 73 20 6f 6e 20 74   characters on t
7570: 68 65 20 6f 74 68 65 72 2e 0a 28 41 20 62 75 67  he other..(A bug
7580: 3a 20 53 51 4c 69 74 65 20 6f 6e 6c 79 20 75 6e  : SQLite only un
7590: 64 65 72 73 74 61 6e 64 73 20 75 70 70 65 72 2f  derstands upper/
75a0: 6c 6f 77 65 72 20 63 61 73 65 20 66 6f 72 20 37  lower case for 7
75b0: 2d 62 69 74 20 4c 61 74 69 6e 0a 63 68 61 72 61  -bit Latin.chara
75c0: 63 74 65 72 73 2e 20 20 48 65 6e 63 65 20 74 68  cters.  Hence th
75d0: 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20  e LIKE operator 
75e0: 69 73 20 63 61 73 65 20 73 65 6e 73 69 74 69 76  is case sensitiv
75f0: 65 20 66 6f 72 0a 38 2d 62 69 74 20 69 73 6f 38  e for.8-bit iso8
7600: 38 35 39 20 63 68 61 72 61 63 74 65 72 73 20 6f  859 characters o
7610: 72 20 55 54 46 2d 38 20 63 68 61 72 61 63 74 65  r UTF-8 characte
7620: 72 73 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  rs.  For example
7630: 2c 0a 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  ,.the expression
7640: 20 3c 62 3e 27 61 27 26 6e 62 73 70 3b 4c 49 4b   <b>'a'&nbsp;LIK
7650: 45 26 6e 62 73 70 3b 27 41 27 3c 2f 62 3e 20 69  E&nbsp;'A'</b> i
7660: 73 20 54 52 55 45 20 62 75 74 0a 3c 62 3e 27 26  s TRUE but.<b>'&
7670: 61 65 6c 69 67 3b 27 26 6e 62 73 70 3b 4c 49 4b  aelig;'&nbsp;LIK
7680: 45 26 6e 62 73 70 3b 27 26 41 45 6c 69 67 3b 27  E&nbsp;'&AElig;'
7690: 3c 2f 62 3e 20 69 73 20 46 41 4c 53 45 2e 29 2e  </b> is FALSE.).
76a0: 20 20 54 68 65 20 69 6e 66 69 78 20 0a 4c 49 4b    The infix .LIK
76b0: 45 20 6f 70 65 72 61 74 6f 72 20 69 73 20 69 64  E operator is id
76c0: 65 6e 74 69 63 61 6c 20 74 68 65 20 75 73 65 72  entical the user
76d0: 20 66 75 6e 63 74 69 6f 6e 20 3c 61 20 68 72 65   function <a hre
76e0: 66 3d 22 23 6c 69 6b 65 46 75 6e 63 22 3e 0a 6c  f="#likeFunc">.l
76f0: 69 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  ike(<i>X</i>,<i>
7700: 59 3c 2f 69 3e 29 3c 2f 61 3e 2e 0a 3c 2f 70 3e  Y</i>)</a>..</p>
7710: 0a 0a 3c 61 20 6e 61 6d 65 3d 22 67 6c 6f 62 22  ..<a name="glob"
7720: 3e 3c 2f 61 3e 0a 3c 70 3e 54 68 65 20 47 4c 4f  ></a>.<p>The GLO
7730: 42 20 6f 70 65 72 61 74 6f 72 20 69 73 20 73 69  B operator is si
7740: 6d 69 6c 61 72 20 74 6f 20 4c 49 4b 45 20 62 75  milar to LIKE bu
7750: 74 20 75 73 65 73 20 74 68 65 20 55 6e 69 78 0a  t uses the Unix.
7760: 66 69 6c 65 20 67 6c 6f 62 62 69 6e 67 20 73 79  file globbing sy
7770: 6e 74 61 78 20 66 6f 72 20 69 74 73 20 77 69 6c  ntax for its wil
7780: 64 63 61 72 64 73 2e 20 20 41 6c 73 6f 2c 20 47  dcards.  Also, G
7790: 4c 4f 42 20 69 73 20 63 61 73 65 0a 73 65 6e 73  LOB is case.sens
77a0: 69 74 69 76 65 2c 20 75 6e 6c 69 6b 65 20 4c 49  itive, unlike LI
77b0: 4b 45 2e 20 20 42 6f 74 68 20 47 4c 4f 42 20 61  KE.  Both GLOB a
77c0: 6e 64 20 4c 49 4b 45 20 6d 61 79 20 62 65 20 70  nd LIKE may be p
77d0: 72 65 63 65 64 65 64 20 62 79 0a 74 68 65 20 4e  receded by.the N
77e0: 4f 54 20 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e  OT keyword to in
77f0: 76 65 72 74 20 74 68 65 20 73 65 6e 73 65 20 6f  vert the sense o
7800: 66 20 74 68 65 20 74 65 73 74 2e 20 20 54 68 65  f the test.  The
7810: 20 69 6e 66 69 78 20 47 4c 4f 42 20 0a 6f 70 65   infix GLOB .ope
7820: 72 61 74 6f 72 20 69 73 20 69 64 65 6e 74 69 63  rator is identic
7830: 61 6c 20 74 68 65 20 75 73 65 72 20 66 75 6e 63  al the user func
7840: 74 69 6f 6e 20 3c 61 20 68 72 65 66 3d 22 23 67  tion <a href="#g
7850: 6c 6f 62 46 75 6e 63 22 3e 0a 67 6c 6f 62 28 3c  lobFunc">.glob(<
7860: 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e  i>X</i>,<i>Y</i>
7870: 29 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41  )</a>.</p>..<p>A
7880: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e   column name can
7890: 20 62 65 20 61 6e 79 20 6f 66 20 74 68 65 20 6e   be any of the n
78a0: 61 6d 65 73 20 64 65 66 69 6e 65 64 20 69 6e 20  ames defined in 
78b0: 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45  the CREATE TABLE
78c0: 0a 73 74 61 74 65 6d 65 6e 74 20 6f 72 20 6f 6e  .statement or on
78d0: 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69  e of the followi
78e0: 6e 67 20 73 70 65 63 69 61 6c 20 69 64 65 6e 74  ng special ident
78f0: 69 66 69 65 72 73 3a 20 22 3c 62 3e 52 4f 57 49  ifiers: "<b>ROWI
7900: 44 3c 2f 62 3e 22 2c 0a 22 3c 62 3e 4f 49 44 3c  D</b>",."<b>OID<
7910: 2f 62 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f  /b>", or "<b>_RO
7920: 57 49 44 5f 3c 2f 62 3e 22 2e 0a 54 68 65 73 65  WID_</b>"..These
7930: 20 73 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66   special identif
7940: 69 65 72 73 20 61 6c 6c 20 64 65 73 63 72 69 62  iers all describ
7950: 65 20 74 68 65 0a 75 6e 69 71 75 65 20 72 61 6e  e the.unique ran
7960: 64 6f 6d 20 69 6e 74 65 67 65 72 20 6b 65 79 20  dom integer key 
7970: 28 74 68 65 20 22 72 6f 77 20 6b 65 79 22 29 20  (the "row key") 
7980: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
7990: 65 76 65 72 79 20 0a 72 6f 77 20 6f 66 20 65 76  every .row of ev
79a0: 65 72 79 20 74 61 62 6c 65 2e 0a 54 68 65 20 73  ery table..The s
79b0: 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65  pecial identifie
79c0: 72 73 20 6f 6e 6c 79 20 72 65 66 65 72 20 74 6f  rs only refer to
79d0: 20 74 68 65 20 72 6f 77 20 6b 65 79 20 69 66 20   the row key if 
79e0: 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45  the CREATE TABLE
79f0: 0a 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20  .statement does 
7a00: 6e 6f 74 20 64 65 66 69 6e 65 20 61 20 72 65 61  not define a rea
7a10: 6c 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20 74 68  l column with th
7a20: 65 20 73 61 6d 65 20 6e 61 6d 65 2e 20 20 52 6f  e same name.  Ro
7a30: 77 20 6b 65 79 73 0a 61 63 74 20 6c 69 6b 65 20  w keys.act like 
7a40: 72 65 61 64 2d 6f 6e 6c 79 20 63 6f 6c 75 6d 6e  read-only column
7a50: 73 2e 20 20 41 20 72 6f 77 20 6b 65 79 20 63 61  s.  A row key ca
7a60: 6e 20 62 65 20 75 73 65 64 20 61 6e 79 77 68 65  n be used anywhe
7a70: 72 65 20 61 20 72 65 67 75 6c 61 72 0a 63 6f 6c  re a regular.col
7a80: 75 6d 6e 20 63 61 6e 20 62 65 20 75 73 65 64 2c  umn can be used,
7a90: 20 65 78 63 65 70 74 20 74 68 61 74 20 79 6f 75   except that you
7aa0: 20 63 61 6e 6e 6f 74 20 63 68 61 6e 67 65 20 74   cannot change t
7ab0: 68 65 20 76 61 6c 75 65 0a 6f 66 20 61 20 72 6f  he value.of a ro
7ac0: 77 20 6b 65 79 20 69 6e 20 61 6e 20 55 50 44 41  w key in an UPDA
7ad0: 54 45 20 6f 72 20 49 4e 53 45 52 54 20 73 74 61  TE or INSERT sta
7ae0: 74 65 6d 65 6e 74 2e 0a 22 53 45 4c 45 43 54 20  tement.."SELECT 
7af0: 2a 20 2e 2e 2e 22 20 64 6f 65 73 20 6e 6f 74 20  * ..." does not 
7b00: 72 65 74 75 72 6e 20 74 68 65 20 72 6f 77 20 6b  return the row k
7b10: 65 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53 51 4c 69  ey.</p>..<p>SQLi
7b20: 74 65 20 73 75 70 70 6f 72 74 73 20 61 20 6d 69  te supports a mi
7b30: 6e 69 6d 61 6c 20 4f 72 61 63 6c 65 38 20 6f 75  nimal Oracle8 ou
7b40: 74 65 72 20 6a 6f 69 6e 20 62 65 68 61 76 69 6f  ter join behavio
7b50: 72 2e 20 41 20 63 6f 6c 75 6d 6e 20 0a 65 78 70  r. A column .exp
7b60: 72 65 73 73 69 6f 6e 20 6f 66 20 74 68 65 20 66  ression of the f
7b70: 6f 72 6d 20 22 63 6f 6c 75 6d 6e 22 20 6f 72 20  orm "column" or 
7b80: 22 74 61 62 6c 65 2e 63 6f 6c 75 6d 6e 22 20 63  "table.column" c
7b90: 61 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62  an be followed b
7ba0: 79 20 0a 74 68 65 20 73 70 65 63 69 61 6c 20 22  y .the special "
7bb0: 3c 62 3e 28 2b 29 3c 2f 62 3e 22 20 6f 70 65 72  <b>(+)</b>" oper
7bc0: 61 74 6f 72 2e 20 20 49 66 20 74 68 65 20 74 61  ator.  If the ta
7bd0: 62 6c 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  ble of the colum
7be0: 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 0a 69 73  n expression .is
7bf0: 20 74 68 65 20 73 65 63 6f 6e 64 20 6f 72 20 73   the second or s
7c00: 75 62 73 65 71 75 65 6e 74 20 74 61 62 6c 65 20  ubsequent table 
7c10: 69 6e 20 61 20 6a 6f 69 6e 2c 20 74 68 65 6e 20  in a join, then 
7c20: 74 68 61 74 20 74 61 62 6c 65 20 62 65 63 6f 6d  that table becom
7c30: 65 73 20 0a 74 68 65 20 6c 65 66 74 20 74 61 62  es .the left tab
7c40: 6c 65 20 69 6e 20 61 20 4c 45 46 54 20 4f 55 54  le in a LEFT OUT
7c50: 45 52 20 4a 4f 49 4e 2e 20 20 54 68 65 20 65 78  ER JOIN.  The ex
7c60: 70 72 65 73 73 69 6f 6e 20 74 68 61 74 20 75 73  pression that us
7c70: 65 73 20 74 68 61 74 20 0a 74 61 62 6c 65 20 62  es that .table b
7c80: 65 63 6f 6d 65 73 20 70 61 72 74 20 6f 66 20 74  ecomes part of t
7c90: 68 65 20 4f 4e 20 63 6c 61 75 73 65 20 66 6f 72  he ON clause for
7ca0: 20 74 68 65 20 6a 6f 69 6e 2e 0a 54 68 65 20 65   the join..The e
7cb0: 78 61 63 74 20 4f 72 61 63 6c 65 38 20 62 65 68  xact Oracle8 beh
7cc0: 61 76 69 6f 72 20 69 73 20 6e 6f 74 20 69 6d 70  avior is not imp
7cd0: 6c 65 6d 65 6e 74 65 64 2c 20 62 75 74 20 69 74  lemented, but it
7ce0: 20 69 73 20 70 6f 73 73 69 62 6c 65 20 74 6f 20   is possible to 
7cf0: 0a 63 6f 6e 73 74 72 75 63 74 20 71 75 65 72 69  .construct queri
7d00: 65 73 20 74 68 61 74 20 77 69 6c 6c 20 77 6f 72  es that will wor
7d10: 6b 20 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 20  k correctly for 
7d20: 62 6f 74 68 20 53 51 4c 69 74 65 20 61 6e 64 20  both SQLite and 
7d30: 4f 72 61 63 6c 65 38 2e 3c 2f 70 3e 0a 0a 3c 70  Oracle8.</p>..<p
7d40: 3e 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e  >SELECT statemen
7d50: 74 73 20 63 61 6e 20 61 70 70 65 61 72 20 69 6e  ts can appear in
7d60: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 73 20   expressions as 
7d70: 65 69 74 68 65 72 20 74 68 65 0a 72 69 67 68 74  either the.right
7d80: 2d 68 61 6e 64 20 6f 70 65 72 61 6e 64 20 6f 66  -hand operand of
7d90: 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72   the IN operator
7da0: 20 6f 72 20 61 73 20 61 20 73 63 61 6c 61 72 20   or as a scalar 
7db0: 71 75 61 6e 74 69 74 79 2e 0a 49 6e 20 62 6f 74  quantity..In bot
7dc0: 68 20 63 61 73 65 73 2c 20 74 68 65 20 53 45 4c  h cases, the SEL
7dd0: 45 43 54 20 73 68 6f 75 6c 64 20 68 61 76 65 20  ECT should have 
7de0: 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 63 6f  only a single co
7df0: 6c 75 6d 6e 20 69 6e 20 69 74 73 0a 72 65 73 75  lumn in its.resu
7e00: 6c 74 2e 20 20 43 6f 6d 70 6f 75 6e 64 20 53 45  lt.  Compound SE
7e10: 4c 45 43 54 73 20 28 63 6f 6e 6e 65 63 74 65 64  LECTs (connected
7e20: 20 77 69 74 68 20 6b 65 79 77 6f 72 64 73 20 6c   with keywords l
7e30: 69 6b 65 20 55 4e 49 4f 4e 20 6f 72 0a 45 58 43  ike UNION or.EXC
7e40: 45 50 54 29 20 61 72 65 20 61 6c 6c 6f 77 65 64  EPT) are allowed
7e50: 2e 0a 41 20 53 45 4c 45 43 54 20 69 6e 20 61 6e  ..A SELECT in an
7e60: 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65   expression is e
7e70: 76 61 6c 75 61 74 65 64 20 6f 6e 63 65 20 62 65  valuated once be
7e80: 66 6f 72 65 20 61 6e 79 20 6f 74 68 65 72 20 70  fore any other p
7e90: 72 6f 63 65 73 73 69 6e 67 0a 69 73 20 70 65 72  rocessing.is per
7ea0: 66 6f 72 6d 65 64 2c 20 73 6f 20 6e 6f 6e 65 20  formed, so none 
7eb0: 6f 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  of the expressio
7ec0: 6e 73 20 77 69 74 68 69 6e 20 74 68 65 20 73 65  ns within the se
7ed0: 6c 65 63 74 20 69 74 73 65 6c 66 20 63 61 6e 0a  lect itself can.
7ee0: 72 65 66 65 72 20 74 6f 20 71 75 61 6e 74 69 74  refer to quantit
7ef0: 69 65 73 20 69 6e 20 74 68 65 20 63 6f 6e 74 61  ies in the conta
7f00: 69 6e 69 6e 67 20 65 78 70 72 65 73 73 69 6f 6e  ining expression
7f10: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 61  .</p>..<p>When a
7f20: 20 53 45 4c 45 43 54 20 69 73 20 74 68 65 20 72   SELECT is the r
7f30: 69 67 68 74 20 6f 70 65 72 61 6e 64 20 6f 66 20  ight operand of 
7f40: 74 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c  the IN operator,
7f50: 20 74 68 65 20 49 4e 0a 6f 70 65 72 61 74 6f 72   the IN.operator
7f60: 20 72 65 74 75 72 6e 73 20 54 52 55 45 20 69 66   returns TRUE if
7f70: 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74   the result of t
7f80: 68 65 20 6c 65 66 74 20 6f 70 65 72 61 6e 64 20  he left operand 
7f90: 69 73 20 61 6e 79 20 6f 66 0a 74 68 65 20 76 61  is any of.the va
7fa0: 6c 75 65 73 20 67 65 6e 65 72 61 74 65 64 20 62  lues generated b
7fb0: 79 20 74 68 65 20 73 65 6c 65 63 74 2e 20 20 54  y the select.  T
7fc0: 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72 20 6d  he IN operator m
7fd0: 61 79 20 62 65 20 70 72 65 63 65 64 65 64 0a 62  ay be preceded.b
7fe0: 79 20 74 68 65 20 4e 4f 54 20 6b 65 79 77 6f 72  y the NOT keywor
7ff0: 64 20 74 6f 20 69 6e 76 65 72 74 20 74 68 65 20  d to invert the 
8000: 73 65 6e 73 65 20 6f 66 20 74 68 65 20 74 65 73  sense of the tes
8010: 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20  t.</p>..<p>When 
8020: 61 20 53 45 4c 45 43 54 20 61 70 70 65 61 72 73  a SELECT appears
8030: 20 77 69 74 68 69 6e 20 61 6e 20 65 78 70 72 65   within an expre
8040: 73 73 69 6f 6e 20 62 75 74 20 69 73 20 6e 6f 74  ssion but is not
8050: 20 74 68 65 20 72 69 67 68 74 0a 6f 70 65 72 61   the right.opera
8060: 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f 70 65 72  nd of an IN oper
8070: 61 74 6f 72 2c 20 74 68 65 6e 20 74 68 65 20 66  ator, then the f
8080: 69 72 73 74 20 72 6f 77 20 6f 66 20 74 68 65 20  irst row of the 
8090: 72 65 73 75 6c 74 20 6f 66 20 74 68 65 0a 53 45  result of the.SE
80a0: 4c 45 43 54 20 62 65 63 6f 6d 65 73 20 74 68 65  LECT becomes the
80b0: 20 76 61 6c 75 65 20 75 73 65 64 20 69 6e 20 74   value used in t
80c0: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20  he expression.  
80d0: 49 66 20 74 68 65 20 53 45 4c 45 43 54 20 79 69  If the SELECT yi
80e0: 65 6c 64 73 0a 6d 6f 72 65 20 74 68 61 6e 20 6f  elds.more than o
80f0: 6e 65 20 72 65 73 75 6c 74 20 72 6f 77 2c 20 61  ne result row, a
8100: 6c 6c 20 72 6f 77 73 20 61 66 74 65 72 20 74 68  ll rows after th
8110: 65 20 66 69 72 73 74 20 61 72 65 20 69 67 6e 6f  e first are igno
8120: 72 65 64 2e 20 20 49 66 0a 74 68 65 20 53 45 4c  red.  If.the SEL
8130: 45 43 54 20 79 65 69 6c 64 73 20 6e 6f 20 72 6f  ECT yeilds no ro
8140: 77 73 2c 20 74 68 65 6e 20 74 68 65 20 76 61 6c  ws, then the val
8150: 75 65 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54  ue of the SELECT
8160: 20 69 73 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c   is NULL.</p>..<
8170: 70 3e 42 6f 74 68 20 73 69 6d 70 6c 65 20 61 6e  p>Both simple an
8180: 64 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  d aggregate func
8190: 74 69 6f 6e 73 20 61 72 65 20 73 75 70 70 6f 72  tions are suppor
81a0: 74 65 64 2e 20 20 41 20 73 69 6d 70 6c 65 0a 66  ted.  A simple.f
81b0: 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20 75  unction can be u
81c0: 73 65 64 20 69 6e 20 61 6e 79 20 65 78 70 72 65  sed in any expre
81d0: 73 73 69 6f 6e 2e 20 20 53 69 6d 70 6c 65 20 66  ssion.  Simple f
81e0: 75 6e 63 74 69 6f 6e 73 20 72 65 74 75 72 6e 0a  unctions return.
81f0: 61 20 72 65 73 75 6c 74 20 69 6d 6d 65 64 69 61  a result immedia
8200: 74 65 6c 79 20 62 61 73 65 64 20 6f 6e 20 74 68  tely based on th
8210: 65 69 72 20 69 6e 70 75 74 73 2e 20 20 41 67 67  eir inputs.  Agg
8220: 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
8230: 0a 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65  .may only be use
8240: 64 20 69 6e 20 61 20 53 45 4c 45 43 54 20 73 74  d in a SELECT st
8250: 61 74 65 6d 65 6e 74 2e 20 20 41 67 67 72 65 67  atement.  Aggreg
8260: 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 63 6f  ate functions co
8270: 6d 70 75 74 65 0a 74 68 65 69 72 20 72 65 73 75  mpute.their resu
8280: 6c 74 20 61 63 72 6f 73 73 20 61 6c 6c 20 72 6f  lt across all ro
8290: 77 73 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  ws of the result
82a0: 20 73 65 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68   set.</p>..<p>Th
82b0: 65 20 66 75 6e 63 74 69 6f 6e 73 20 73 68 6f 77  e functions show
82c0: 6e 20 62 65 6c 6f 77 20 61 72 65 20 61 76 61 69  n below are avai
82d0: 6c 61 62 6c 65 20 62 79 20 64 65 66 61 75 6c 74  lable by default
82e0: 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c 0a 66 75  .  Additional.fu
82f0: 6e 63 74 69 6f 6e 73 20 6d 61 79 20 62 65 20 77  nctions may be w
8300: 72 69 74 74 65 6e 20 69 6e 20 43 20 61 6e 64 20  ritten in C and 
8310: 61 64 64 65 64 20 74 6f 20 74 68 65 20 64 61 74  added to the dat
8320: 61 62 61 73 65 20 65 6e 67 69 6e 65 20 75 73 69  abase engine usi
8330: 6e 67 0a 74 68 65 20 3c 61 20 68 72 65 66 3d 22  ng.the <a href="
8340: 63 5f 69 6e 74 65 72 66 61 63 65 2e 68 74 6d 6c  c_interface.html
8350: 23 63 66 75 6e 63 22 3e 73 71 6c 69 74 65 5f 63  #cfunc">sqlite_c
8360: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29  reate_function()
8370: 3c 2f 61 3e 0a 41 50 49 2e 3c 2f 70 3e 0a 0a 3c  </a>.API.</p>..<
8380: 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63  table border=0 c
8390: 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c  ellpadding=10>.<
83a0: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
83b0: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
83c0: 74 22 20 77 69 64 74 68 3d 31 32 30 3e 61 62 73  t" width=120>abs
83d0: 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a  (<i>X</i>)</td>.
83e0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
83f0: 3e 52 65 74 75 72 6e 20 74 68 65 20 61 62 73 6f  >Return the abso
8400: 6c 75 74 65 20 76 61 6c 75 65 20 6f 66 20 61 72  lute value of ar
8410: 67 75 6d 65 6e 74 20 3c 69 3e 58 3c 2f 69 3e 2e  gument <i>X</i>.
8420: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
8430: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
8440: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
8450: 3e 63 6f 61 6c 65 73 63 65 28 3c 69 3e 58 3c 2f  >coalesce(<i>X</
8460: 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29  i>,<i>Y</i>,...)
8470: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
8480: 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20  ="top">Return a 
8490: 63 6f 70 79 20 6f 66 20 74 68 65 20 66 69 72 73  copy of the firs
84a0: 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d  t non-NULL argum
84b0: 65 6e 74 2e 20 20 49 66 0a 61 6c 6c 20 61 72 67  ent.  If.all arg
84c0: 75 6d 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c 20  uments are NULL 
84d0: 74 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72 65 74  then NULL is ret
84e0: 75 72 6e 65 64 2e 20 20 54 68 65 72 65 20 6d 75  urned.  There mu
84f0: 73 74 20 62 65 20 61 74 20 6c 65 61 73 74 20 0a  st be at least .
8500: 32 20 61 72 67 75 6d 65 6e 74 73 2e 3c 2f 74 64  2 arguments.</td
8510: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 61  >.</tr>..<tr>.<a
8520: 20 6e 61 6d 65 3d 22 67 6c 6f 62 46 75 6e 63 22   name="globFunc"
8530: 3e 3c 2f 61 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  ></a>.<td valign
8540: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
8550: 67 68 74 22 3e 67 6c 6f 62 28 3c 69 3e 58 3c 2f  ght">glob(<i>X</
8560: 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64  i>,<i>Y</i>)</td
8570: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
8580: 70 22 3e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  p">This function
8590: 20 69 73 20 75 73 65 64 20 74 6f 20 69 6d 70 6c   is used to impl
85a0: 65 6d 65 6e 74 20 74 68 65 0a 22 3c 62 3e 59 20  ement the."<b>Y 
85b0: 47 4c 4f 42 20 58 3c 2f 62 3e 22 20 73 79 6e 74  GLOB X</b>" synt
85c0: 61 78 20 6f 66 20 53 51 4c 69 74 65 2e 20 20 54  ax of SQLite.  T
85d0: 68 65 0a 3c 61 20 68 72 65 66 3d 22 63 5f 69 6e  he.<a href="c_in
85e0: 74 65 72 66 61 63 65 2e 68 74 6d 6c 23 63 66 75  terface.html#cfu
85f0: 6e 63 22 3e 73 71 6c 69 74 65 5f 63 72 65 61 74  nc">sqlite_creat
8600: 65 5f 66 75 6e 63 74 69 6f 6e 28 29 3c 2f 61 3e  e_function()</a>
8610: 20 0a 69 6e 74 65 72 66 61 63 65 20 63 61 6e 0a   .interface can.
8620: 62 65 20 75 73 65 64 20 74 6f 20 6f 76 65 72 72  be used to overr
8630: 69 64 65 20 74 68 69 73 20 66 75 6e 63 74 69 6f  ide this functio
8640: 6e 20 61 6e 64 20 74 68 65 72 65 62 79 20 63 68  n and thereby ch
8650: 61 6e 67 65 20 74 68 65 20 6f 70 65 72 61 74 69  ange the operati
8660: 6f 6e 0a 6f 66 20 74 68 65 20 3c 61 20 68 72 65  on.of the <a hre
8670: 66 3d 22 23 67 6c 6f 62 22 3e 47 4c 4f 42 3c 2f  f="#glob">GLOB</
8680: 61 3e 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 74 64  a> operator.</td
8690: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
86a0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
86b0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 69 66 6e  lign="right">ifn
86c0: 75 6c 6c 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  ull(<i>X</i>,<i>
86d0: 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20  Y</i>)</td>.<td 
86e0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
86f0: 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 74 68  urn a copy of th
8700: 65 20 66 69 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c  e first non-NULL
8710: 20 61 72 67 75 6d 65 6e 74 2e 20 20 49 66 0a 62   argument.  If.b
8720: 6f 74 68 20 61 72 67 75 6d 65 6e 74 73 20 61 72  oth arguments ar
8730: 65 20 4e 55 4c 4c 20 74 68 65 6e 20 4e 55 4c 4c  e NULL then NULL
8740: 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 54 68   is returned. Th
8750: 69 73 20 62 65 68 61 76 65 73 20 74 68 65 20 73  is behaves the s
8760: 61 6d 65 20 61 73 20 0a 3c 62 3e 63 6f 61 6c 65  ame as .<b>coale
8770: 73 63 65 28 29 3c 2f 62 3e 20 61 62 6f 76 65 2e  sce()</b> above.
8780: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
8790: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
87a0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
87b0: 3e 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  >last_insert_row
87c0: 69 64 28 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  id()</td>.<td va
87d0: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
87e0: 6e 20 74 68 65 20 52 4f 57 49 44 20 6f 66 20 74  n the ROWID of t
87f0: 68 65 20 6c 61 73 74 20 72 6f 77 20 69 6e 73 65  he last row inse
8800: 72 74 20 66 72 6f 6d 20 74 68 69 73 0a 63 6f 6e  rt from this.con
8810: 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68 65 20 64  nection to the d
8820: 61 74 61 62 61 73 65 2e 20 20 54 68 69 73 20 69  atabase.  This i
8830: 73 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65  s the same value
8840: 20 74 68 61 74 20 77 6f 75 6c 64 20 62 65 20 72   that would be r
8850: 65 74 75 72 6e 65 64 0a 66 72 6f 6d 20 74 68 65  eturned.from the
8860: 20 3c 62 3e 73 71 6c 69 74 65 5f 6c 61 73 74 5f   <b>sqlite_last_
8870: 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 3c 2f  insert_rowid()</
8880: 62 3e 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 2e  b> API function.
8890: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
88a0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
88b0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
88c0: 3e 6c 65 6e 67 74 68 28 3c 69 3e 58 3c 2f 69 3e  >length(<i>X</i>
88d0: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
88e0: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74  n="top">Return t
88f0: 68 65 20 73 74 72 69 6e 67 20 6c 65 6e 67 74 68  he string length
8900: 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20 69 6e 20   of <i>X</i> in 
8910: 63 68 61 72 61 63 74 65 72 73 2e 0a 49 66 20 53  characters..If S
8920: 51 4c 69 74 65 20 69 73 20 63 6f 6e 66 69 67 75  QLite is configu
8930: 72 65 64 20 74 6f 20 73 75 70 70 6f 72 74 20 55  red to support U
8940: 54 46 2d 38 2c 20 74 68 65 6e 20 74 68 65 20 6e  TF-8, then the n
8950: 75 6d 62 65 72 20 6f 66 20 55 54 46 2d 38 0a 63  umber of UTF-8.c
8960: 68 61 72 61 63 74 65 72 73 20 69 73 20 72 65 74  haracters is ret
8970: 75 72 6e 65 64 2c 20 6e 6f 74 20 74 68 65 20 6e  urned, not the n
8980: 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 2e 3c  umber of bytes.<
8990: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
89a0: 0a 3c 61 20 6e 61 6d 65 3d 22 6c 69 6b 65 46 75  .<a name="likeFu
89b0: 6e 63 22 3e 3c 2f 61 3e 0a 3c 74 64 20 76 61 6c  nc"></a>.<td val
89c0: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
89d0: 22 72 69 67 68 74 22 3e 6c 69 6b 65 28 3c 69 3e  "right">like(<i>
89e0: 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c  X</i>,<i>Y</i>)<
89f0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
8a00: 22 74 6f 70 22 3e 54 68 69 73 20 66 75 6e 63 74  "top">This funct
8a10: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 69  ion is used to i
8a20: 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a 22 3c 62  mplement the."<b
8a30: 3e 59 20 4c 49 4b 45 20 58 3c 2f 62 3e 22 20 73  >Y LIKE X</b>" s
8a40: 79 6e 74 61 78 20 6f 66 20 53 51 4c 2e 20 20 54  yntax of SQL.  T
8a50: 68 65 0a 3c 61 20 68 72 65 66 3d 22 63 5f 69 6e  he.<a href="c_in
8a60: 74 65 72 66 61 63 65 2e 68 74 6d 6c 23 63 66 75  terface.html#cfu
8a70: 6e 63 22 3e 73 71 6c 69 74 65 5f 63 72 65 61 74  nc">sqlite_creat
8a80: 65 5f 66 75 6e 63 74 69 6f 6e 28 29 3c 2f 61 3e  e_function()</a>
8a90: 20 0a 69 6e 74 65 72 66 61 63 65 20 63 61 6e 0a   .interface can.
8aa0: 62 65 20 75 73 65 64 20 74 6f 20 6f 76 65 72 72  be used to overr
8ab0: 69 64 65 20 74 68 69 73 20 66 75 6e 63 74 69 6f  ide this functio
8ac0: 6e 20 61 6e 64 20 74 68 65 72 65 62 79 20 63 68  n and thereby ch
8ad0: 61 6e 67 65 20 74 68 65 20 6f 70 65 72 61 74 69  ange the operati
8ae0: 6f 6e 0a 6f 66 20 74 68 65 20 3c 61 20 68 72 65  on.of the <a hre
8af0: 66 3d 22 23 6c 69 6b 65 22 3e 4c 49 4b 45 3c 2f  f="#like">LIKE</
8b00: 61 3e 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 74 64  a> operator.</td
8b10: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
8b20: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
8b30: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6c 6f 77  lign="right">low
8b40: 65 72 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64  er(<i>X</i>)</td
8b50: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
8b60: 70 22 3e 52 65 74 75 72 6e 20 61 20 63 6f 70 79  p">Return a copy
8b70: 20 6f 66 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c   of string <i>X<
8b80: 2f 69 3e 20 77 69 6c 6c 20 61 6c 6c 20 63 68 61  /i> will all cha
8b90: 72 61 63 74 65 72 73 0a 63 6f 6e 76 65 72 74 65  racters.converte
8ba0: 64 20 74 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e  d to lower case.
8bb0: 20 20 54 68 65 20 43 20 6c 69 62 72 61 72 79 20    The C library 
8bc0: 3c 62 3e 74 6f 6c 6f 77 65 72 28 29 3c 2f 62 3e  <b>tolower()</b>
8bd0: 20 72 6f 75 74 69 6e 65 20 69 73 20 75 73 65 64   routine is used
8be0: 0a 66 6f 72 20 74 68 65 20 63 6f 6e 76 65 72 73  .for the convers
8bf0: 69 6f 6e 2c 20 77 68 69 63 68 20 6d 65 61 6e 73  ion, which means
8c00: 20 74 68 61 74 20 74 68 69 73 20 66 75 6e 63 74   that this funct
8c10: 69 6f 6e 20 6d 69 67 68 74 20 6e 6f 74 0a 77 6f  ion might not.wo
8c20: 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 6f 6e 20  rk correctly on 
8c30: 55 54 46 2d 38 20 63 68 61 72 61 63 74 65 72 73  UTF-8 characters
8c40: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
8c50: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
8c60: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
8c70: 22 3e 6d 61 78 28 3c 69 3e 58 3c 2f 69 3e 2c 3c  ">max(<i>X</i>,<
8c80: 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74 64  i>Y</i>,...)</td
8c90: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
8ca0: 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 61 72  p">Return the ar
8cb0: 67 75 6d 65 6e 74 20 77 69 74 68 20 74 68 65 20  gument with the 
8cc0: 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 2e 20 20  maximum value.  
8cd0: 41 72 67 75 6d 65 6e 74 73 0a 6d 61 79 20 62 65  Arguments.may be
8ce0: 20 73 74 72 69 6e 67 73 20 69 6e 20 61 64 64 69   strings in addi
8cf0: 74 69 6f 6e 20 74 6f 20 6e 75 6d 62 65 72 73 2e  tion to numbers.
8d00: 20 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 76 61    The maximum va
8d10: 6c 75 65 20 69 73 20 64 65 74 65 72 6d 69 6e 65  lue is determine
8d20: 64 0a 62 79 20 74 68 65 20 75 73 75 61 6c 20 73  d.by the usual s
8d30: 6f 72 74 20 6f 72 64 65 72 2e 20 20 4e 6f 74 65  ort order.  Note
8d40: 20 74 68 61 74 20 3c 62 3e 6d 61 78 28 29 3c 2f   that <b>max()</
8d50: 62 3e 20 69 73 20 61 20 73 69 6d 70 6c 65 20 66  b> is a simple f
8d60: 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 69 74 20  unction when.it 
8d70: 68 61 73 20 32 20 6f 72 20 6d 6f 72 65 20 61 72  has 2 or more ar
8d80: 67 75 6d 65 6e 74 73 20 62 75 74 20 63 6f 6e 76  guments but conv
8d90: 65 72 74 73 20 74 6f 20 61 6e 20 61 67 67 72 65  erts to an aggre
8da0: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 69 66  gate function if
8db0: 20 67 69 76 65 6e 0a 6f 6e 6c 79 20 61 20 73 69   given.only a si
8dc0: 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 2e 3c 2f  ngle argument.</
8dd0: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
8de0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
8df0: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6d   align="right">m
8e00: 69 6e 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59  in(<i>X</i>,<i>Y
8e10: 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c  </i>,...)</td>.<
8e20: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
8e30: 52 65 74 75 72 6e 20 74 68 65 20 61 72 67 75 6d  Return the argum
8e40: 65 6e 74 20 77 69 74 68 20 74 68 65 20 6d 69 6e  ent with the min
8e50: 69 6d 75 6d 20 76 61 6c 75 65 2e 20 20 41 72 67  imum value.  Arg
8e60: 75 6d 65 6e 74 73 0a 6d 61 79 20 62 65 20 73 74  uments.may be st
8e70: 72 69 6e 67 73 20 69 6e 20 61 64 64 69 74 69 6f  rings in additio
8e80: 6e 20 74 6f 20 6e 75 6d 62 65 72 73 2e 20 20 54  n to numbers.  T
8e90: 68 65 20 6d 6d 69 6e 69 6d 75 6d 20 76 61 6c 75  he mminimum valu
8ea0: 65 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64 0a  e is determined.
8eb0: 62 79 20 74 68 65 20 75 73 75 61 6c 20 73 6f 72  by the usual sor
8ec0: 74 20 6f 72 64 65 72 2e 20 20 4e 6f 74 65 20 74  t order.  Note t
8ed0: 68 61 74 20 3c 62 3e 6d 69 6e 28 29 3c 2f 62 3e  hat <b>min()</b>
8ee0: 20 69 73 20 61 20 73 69 6d 70 6c 65 20 66 75 6e   is a simple fun
8ef0: 63 74 69 6f 6e 20 77 68 65 6e 0a 69 74 20 68 61  ction when.it ha
8f00: 73 20 32 20 6f 72 20 6d 6f 72 65 20 61 72 67 75  s 2 or more argu
8f10: 6d 65 6e 74 73 20 62 75 74 20 63 6f 6e 76 65 72  ments but conver
8f20: 74 73 20 74 6f 20 61 6e 20 61 67 67 72 65 67 61  ts to an aggrega
8f30: 74 65 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 67  te function if g
8f40: 69 76 65 6e 0a 6f 6e 6c 79 20 61 20 73 69 6e 67  iven.only a sing
8f50: 6c 65 20 61 72 67 75 6d 65 6e 74 2e 3c 2f 74 64  le argument.</td
8f60: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
8f70: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
8f80: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6e 75 6c  lign="right">nul
8f90: 6c 69 66 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  lif(<i>X</i>,<i>
8fa0: 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20  Y</i>)</td>.<td 
8fb0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
8fc0: 75 72 6e 20 74 68 65 20 66 69 72 73 74 20 61 72  urn the first ar
8fd0: 67 75 6d 65 6e 74 20 69 66 20 74 68 65 20 61 72  gument if the ar
8fe0: 67 75 6d 65 6e 74 73 20 61 72 65 20 64 69 66 66  guments are diff
8ff0: 65 72 65 6e 74 2c 20 0a 6f 74 68 65 72 77 69 73  erent, .otherwis
9000: 65 20 72 65 74 75 72 6e 20 4e 55 4c 4c 2e 3c 2f  e return NULL.</
9010: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
9020: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
9030: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 72   align="right">r
9040: 61 6e 64 6f 6d 28 2a 29 3c 2f 74 64 3e 0a 3c 74  andom(*)</td>.<t
9050: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
9060: 65 74 75 72 6e 20 61 20 72 61 6e 64 6f 6d 20 69  eturn a random i
9070: 6e 74 65 67 65 72 20 62 65 74 77 65 65 6e 20 2d  nteger between -
9080: 32 31 34 37 34 38 33 36 34 38 20 61 6e 64 0a 2b  2147483648 and.+
9090: 32 31 34 37 34 38 33 36 34 37 2e 3c 2f 74 64 3e  2147483647.</td>
90a0: 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64  .</tr>..<tr>.<td
90b0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
90c0: 69 67 6e 3d 22 72 69 67 68 74 22 3e 72 6f 75 6e  ign="right">roun
90d0: 64 28 3c 69 3e 58 3c 2f 69 3e 29 3c 62 72 3e 72  d(<i>X</i>)<br>r
90e0: 6f 75 6e 64 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  ound(<i>X</i>,<i
90f0: 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >Y</i>)</td>.<td
9100: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 6f   valign="top">Ro
9110: 75 6e 64 20 6f 66 66 20 74 68 65 20 6e 75 6d 62  und off the numb
9120: 65 72 20 3c 69 3e 58 3c 2f 69 3e 20 74 6f 20 3c  er <i>X</i> to <
9130: 69 3e 59 3c 2f 69 3e 20 64 69 67 69 74 73 20 74  i>Y</i> digits t
9140: 6f 20 74 68 65 0a 72 69 67 68 74 20 6f 66 20 74  o the.right of t
9150: 68 65 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74  he decimal point
9160: 2e 20 20 49 66 20 74 68 65 20 3c 69 3e 59 3c 2f  .  If the <i>Y</
9170: 69 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f  i> argument is o
9180: 6d 69 74 74 65 64 2c 20 30 20 69 73 20 0a 61 73  mitted, 0 is .as
9190: 73 75 6d 65 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  sumed.</td>.</tr
91a0: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
91b0: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
91c0: 72 69 67 68 74 22 3e 73 6f 75 6e 64 65 78 28 3c  right">soundex(<
91d0: 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>X</i>)</td>.<t
91e0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 43  d valign="top">C
91f0: 6f 6d 70 75 74 65 20 74 68 65 20 73 6f 75 6e 64  ompute the sound
9200: 65 78 20 65 6e 63 6f 64 69 6e 67 20 6f 66 20 74  ex encoding of t
9210: 68 65 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f  he string <i>X</
9220: 69 3e 2e 0a 54 68 65 20 73 74 72 69 6e 67 20 22  i>..The string "
9230: 3f 30 30 30 22 20 69 73 20 72 65 74 75 72 6e 65  ?000" is returne
9240: 64 20 69 66 20 74 68 65 20 61 72 67 75 6d 65 6e  d if the argumen
9250: 74 20 69 73 20 4e 55 4c 4c 2e 0a 54 68 69 73 20  t is NULL..This 
9260: 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 6d 69 74  function is omit
9270: 74 65 64 20 66 72 6f 6d 20 53 51 4c 69 74 65 20  ted from SQLite 
9280: 62 79 20 64 65 66 61 75 6c 74 2e 0a 49 74 20 69  by default..It i
9290: 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65  s only available
92a0: 20 74 68 65 20 2d 44 53 51 4c 49 54 45 5f 53 4f   the -DSQLITE_SO
92b0: 55 4e 44 45 58 3d 31 20 63 6f 6d 70 69 6c 65 72  UNDEX=1 compiler
92c0: 20 6f 70 74 69 6f 6e 0a 69 73 20 75 73 65 64 20   option.is used 
92d0: 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20 62  when SQLite is b
92e0: 75 69 6c 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  uilt.</td>.</tr>
92f0: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
9300: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
9310: 69 67 68 74 22 3e 73 71 6c 69 74 65 5f 76 65 72  ight">sqlite_ver
9320: 73 69 6f 6e 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64  sion(*)</td>.<td
9330: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
9340: 74 75 72 6e 20 74 68 65 20 76 65 72 73 69 6f 6e  turn the version
9350: 20 73 74 72 69 6e 67 20 66 6f 72 20 74 68 65 20   string for the 
9360: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 0a 74  SQLite library.t
9370: 68 61 74 20 69 73 20 72 75 6e 6e 69 6e 67 2e 20  hat is running. 
9380: 20 45 78 61 6d 70 6c 65 3a 20 20 22 32 2e 38 2e   Example:  "2.8.
9390: 30 22 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  0"</td>.</tr>..<
93a0: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
93b0: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
93c0: 74 22 3e 73 75 62 73 74 72 28 3c 69 3e 58 3c 2f  t">substr(<i>X</
93d0: 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 5a  i>,<i>Y</i>,<i>Z
93e0: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
93f0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
9400: 72 6e 20 61 20 73 75 62 73 74 72 69 6e 67 20 6f  rn a substring o
9410: 66 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 3c  f input string <
9420: 69 3e 58 3c 2f 69 3e 20 74 68 61 74 20 62 65 67  i>X</i> that beg
9430: 69 6e 73 0a 77 69 74 68 20 74 68 65 20 3c 69 3e  ins.with the <i>
9440: 59 3c 2f 69 3e 2d 74 68 20 63 68 61 72 61 63 74  Y</i>-th charact
9450: 65 72 20 61 6e 64 20 77 68 69 63 68 20 69 73 20  er and which is 
9460: 3c 69 3e 5a 3c 2f 69 3e 20 63 68 61 72 61 63 74  <i>Z</i> charact
9470: 65 72 73 20 6c 6f 6e 67 2e 0a 54 68 65 20 6c 65  ers long..The le
9480: 66 74 2d 6d 6f 73 74 20 63 68 61 72 61 63 74 65  ft-most characte
9490: 72 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20 69 73  r of <i>X</i> is
94a0: 20 6e 75 6d 62 65 72 20 31 2e 20 20 49 66 20 3c   number 1.  If <
94b0: 69 3e 59 3c 2f 69 3e 20 69 73 20 6e 65 67 61 74  i>Y</i> is negat
94c0: 69 76 65 0a 74 68 65 20 74 68 65 20 66 69 72 73  ive.the the firs
94d0: 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20 74  t character of t
94e0: 68 65 20 73 75 62 73 74 72 69 6e 67 20 69 73 20  he substring is 
94f0: 66 6f 75 6e 64 20 62 79 20 63 6f 75 6e 74 69 6e  found by countin
9500: 67 20 66 72 6f 6d 20 74 68 65 0a 72 69 67 68 74  g from the.right
9510: 20 72 61 74 68 65 72 20 74 68 61 6e 20 74 68 65   rather than the
9520: 20 6c 65 66 74 2e 20 20 49 66 20 53 51 4c 69 74   left.  If SQLit
9530: 65 20 69 73 20 63 6f 6e 66 69 67 75 72 65 64 20  e is configured 
9540: 74 6f 20 73 75 70 70 6f 72 74 20 55 54 46 2d 38  to support UTF-8
9550: 2c 0a 74 68 65 6e 20 63 68 61 72 61 63 74 65 72  ,.then character
9560: 73 20 69 6e 64 69 63 65 73 20 72 65 66 65 72 20  s indices refer 
9570: 74 6f 20 61 63 74 75 61 6c 20 55 54 46 2d 38 20  to actual UTF-8 
9580: 63 68 61 72 61 63 74 65 72 73 2c 20 6e 6f 74 20  characters, not 
9590: 62 79 74 65 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  bytes.</td>.</tr
95a0: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
95b0: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
95c0: 72 69 67 68 74 22 3e 74 79 70 65 6f 66 28 3c 69  right">typeof(<i
95d0: 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >X</i>)</td>.<td
95e0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
95f0: 74 75 72 6e 20 74 68 65 20 74 79 70 65 20 6f 66  turn the type of
9600: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
9610: 3c 69 3e 58 3c 2f 69 3e 2e 20 20 54 68 65 20 6f  <i>X</i>.  The o
9620: 6e 6c 79 20 0a 72 65 74 75 72 6e 20 76 61 6c 75  nly .return valu
9630: 65 73 20 61 72 65 20 22 6e 75 6d 65 72 69 63 22  es are "numeric"
9640: 20 61 6e 64 20 22 74 65 78 74 22 2e 20 20 53 51   and "text".  SQ
9650: 4c 69 74 65 27 73 20 74 79 70 65 20 68 61 6e 64  Lite's type hand
9660: 6c 69 6e 67 20 69 73 20 0a 65 78 70 6c 61 69 6e  ling is .explain
9670: 65 64 20 69 6e 20 3c 61 20 68 72 65 66 3d 22 64  ed in <a href="d
9680: 61 74 61 74 79 70 65 73 2e 68 74 6d 6c 22 3e 44  atatypes.html">D
9690: 61 74 61 74 79 70 65 73 20 69 6e 20 53 51 4c 69  atatypes in SQLi
96a0: 74 65 3c 2f 61 3e 2e 3c 2f 74 64 3e 0a 3c 2f 74  te</a>.</td>.</t
96b0: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
96c0: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
96d0: 22 72 69 67 68 74 22 3e 75 70 70 65 72 28 3c 69  "right">upper(<i
96e0: 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >X</i>)</td>.<td
96f0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
9700: 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 69  turn a copy of i
9710: 6e 70 75 74 20 73 74 72 69 6e 67 20 3c 69 3e 58  nput string <i>X
9720: 3c 2f 69 3e 20 63 6f 6e 76 65 72 74 65 64 20 74  </i> converted t
9730: 6f 20 61 6c 6c 0a 75 70 70 65 72 2d 63 61 73 65  o all.upper-case
9740: 20 6c 65 74 74 65 72 73 2e 20 20 54 68 65 20 69   letters.  The i
9750: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
9760: 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 75   this function u
9770: 73 65 73 20 74 68 65 20 43 20 6c 69 62 72 61 72  ses the C librar
9780: 79 0a 72 6f 75 74 69 6e 65 20 3c 62 3e 74 6f 75  y.routine <b>tou
9790: 70 70 65 72 28 29 3c 2f 62 3e 20 77 68 69 63 68  pper()</b> which
97a0: 20 6d 65 61 6e 73 20 69 74 20 6d 61 79 20 6e 6f   means it may no
97b0: 74 20 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79  t work correctly
97c0: 20 6f 6e 20 0a 55 54 46 2d 38 20 73 74 72 69 6e   on .UTF-8 strin
97d0: 67 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c  gs.</td>.</tr>.<
97e0: 2f 74 61 62 6c 65 3e 0a 0a 3c 70 3e 0a 54 68 65  /table>..<p>.The
97f0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 67 67 72 65   following aggre
9800: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 61  gate functions a
9810: 72 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79 20  re available by 
9820: 64 65 66 61 75 6c 74 2e 20 20 41 64 64 69 74 69  default.  Additi
9830: 6f 6e 61 6c 0a 61 67 67 72 65 67 61 74 65 20 66  onal.aggregate f
9840: 75 6e 63 74 69 6f 6e 73 20 77 72 69 74 74 65 6e  unctions written
9850: 20 69 6e 20 43 20 6d 61 79 20 62 65 20 61 64 64   in C may be add
9860: 65 64 20 75 73 69 6e 67 20 74 68 65 20 0a 3c 61  ed using the .<a
9870: 20 68 72 65 66 3d 22 63 5f 69 6e 74 65 72 66 61   href="c_interfa
9880: 63 65 2e 68 74 6d 6c 23 63 66 75 6e 63 22 3e 73  ce.html#cfunc">s
9890: 71 6c 69 74 65 5f 63 72 65 61 74 65 5f 61 67 67  qlite_create_agg
98a0: 72 65 67 61 74 65 28 29 3c 2f 61 3e 20 41 50 49  regate()</a> API
98b0: 2e 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f  .</p>..<table bo
98c0: 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69  rder=0 cellpaddi
98d0: 6e 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20  ng=10>.<tr>.<td 
98e0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
98f0: 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68  gn="right" width
9900: 3d 31 32 30 3e 61 76 67 28 3c 69 3e 58 3c 2f 69  =120>avg(<i>X</i
9910: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
9920: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
9930: 74 68 65 20 61 76 65 72 61 67 65 20 76 61 6c 75  the average valu
9940: 65 20 6f 66 20 61 6c 6c 20 3c 69 3e 58 3c 2f 69  e of all <i>X</i
9950: 3e 20 77 69 74 68 69 6e 20 61 20 67 72 6f 75 70  > within a group
9960: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
9970: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
9980: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
9990: 22 3e 63 6f 75 6e 74 28 3c 69 3e 58 3c 2f 69 3e  ">count(<i>X</i>
99a0: 29 3c 62 72 3e 63 6f 75 6e 74 28 2a 29 3c 2f 74  )<br>count(*)</t
99b0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
99c0: 6f 70 22 3e 54 68 65 20 66 69 72 73 74 20 66 6f  op">The first fo
99d0: 72 6d 20 72 65 74 75 72 6e 20 61 20 63 6f 75 6e  rm return a coun
99e0: 74 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20  t of the number 
99f0: 6f 66 20 74 69 6d 65 73 0a 74 68 61 74 20 3c 69  of times.that <i
9a00: 3e 58 3c 2f 69 3e 20 69 73 20 6e 6f 74 20 4e 55  >X</i> is not NU
9a10: 4c 4c 20 69 6e 20 61 20 67 72 6f 75 70 2e 20 20  LL in a group.  
9a20: 54 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20  The second form 
9a30: 28 77 69 74 68 20 6e 6f 20 61 72 67 75 6d 65 6e  (with no argumen
9a40: 74 29 0a 72 65 74 75 72 6e 73 20 74 68 65 20 74  t).returns the t
9a50: 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 72  otal number of r
9a60: 6f 77 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70  ows in the group
9a70: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
9a80: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
9a90: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
9aa0: 22 3e 6d 61 78 28 3c 69 3e 58 3c 2f 69 3e 29 3c  ">max(<i>X</i>)<
9ab0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
9ac0: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65  "top">Return the
9ad0: 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 20 6f   maximum value o
9ae0: 66 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20  f all values in 
9af0: 74 68 65 20 67 72 6f 75 70 2e 0a 54 68 65 20 75  the group..The u
9b00: 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 20  sual sort order 
9b10: 69 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 72  is used to deter
9b20: 6d 69 6e 65 20 74 68 65 20 6d 61 78 69 6d 75 6d  mine the maximum
9b30: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
9b40: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
9b50: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
9b60: 22 3e 6d 69 6e 28 3c 69 3e 58 3c 2f 69 3e 29 3c  ">min(<i>X</i>)<
9b70: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
9b80: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65  "top">Return the
9b90: 20 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 20 6f   minimum value o
9ba0: 66 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20  f all values in 
9bb0: 74 68 65 20 67 72 6f 75 70 2e 0a 54 68 65 20 75  the group..The u
9bc0: 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 20  sual sort order 
9bd0: 69 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 72  is used to deter
9be0: 6d 69 6e 65 20 74 68 65 20 6d 69 6e 69 6d 75 6d  mine the minimum
9bf0: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
9c00: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
9c10: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
9c20: 22 3e 73 75 6d 28 3c 69 3e 58 3c 2f 69 3e 29 3c  ">sum(<i>X</i>)<
9c30: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
9c40: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65  "top">Return the
9c50: 20 6e 75 6d 65 72 69 63 20 73 75 6d 20 6f 66 20   numeric sum of 
9c60: 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68  all values in th
9c70: 65 20 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c 2f  e group.</td>.</
9c80: 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 7d 0a 0a  tr>.</table>.}..
9c90: 0a 53 65 63 74 69 6f 6e 20 49 4e 53 45 52 54 20  .Section INSERT 
9ca0: 69 6e 73 65 72 74 0a 0a 53 79 6e 74 61 78 20 7b  insert..Syntax {
9cb0: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
9cc0: 0a 49 4e 53 45 52 54 20 5b 4f 52 20 3c 63 6f 6e  .INSERT [OR <con
9cd0: 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e  flict-algorithm>
9ce0: 5d 20 49 4e 54 4f 20 5b 3c 64 61 74 61 62 61 73  ] INTO [<databas
9cf0: 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c  e-name> .] <tabl
9d00: 65 2d 6e 61 6d 65 3e 20 5b 28 3c 63 6f 6c 75 6d  e-name> [(<colum
9d10: 6e 2d 6c 69 73 74 3e 29 5d 20 56 41 4c 55 45 53  n-list>)] VALUES
9d20: 28 3c 76 61 6c 75 65 2d 6c 69 73 74 3e 29 20 7c  (<value-list>) |
9d30: 0a 49 4e 53 45 52 54 20 5b 4f 52 20 3c 63 6f 6e  .INSERT [OR <con
9d40: 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e  flict-algorithm>
9d50: 5d 20 49 4e 54 4f 20 5b 3c 64 61 74 61 62 61 73  ] INTO [<databas
9d60: 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c  e-name> .] <tabl
9d70: 65 2d 6e 61 6d 65 3e 20 5b 28 3c 63 6f 6c 75 6d  e-name> [(<colum
9d80: 6e 2d 6c 69 73 74 3e 29 5d 20 3c 73 65 6c 65 63  n-list>)] <selec
9d90: 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a  t-statement>.}..
9da0: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 49 4e  puts {.<p>The IN
9db0: 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20 63  SERT statement c
9dc0: 6f 6d 65 73 20 69 6e 20 74 77 6f 20 62 61 73 69  omes in two basi
9dd0: 63 20 66 6f 72 6d 73 2e 20 20 54 68 65 20 66 69  c forms.  The fi
9de0: 72 73 74 20 66 6f 72 6d 0a 28 77 69 74 68 20 74  rst form.(with t
9df0: 68 65 20 22 56 41 4c 55 45 53 22 20 6b 65 79 77  he "VALUES" keyw
9e00: 6f 72 64 29 20 63 72 65 61 74 65 73 20 61 20 73  ord) creates a s
9e10: 69 6e 67 6c 65 20 6e 65 77 20 72 6f 77 20 69 6e  ingle new row in
9e20: 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74 61 62   an existing tab
9e30: 6c 65 2e 0a 49 66 20 6e 6f 20 63 6f 6c 75 6d 6e  le..If no column
9e40: 2d 6c 69 73 74 20 69 73 20 73 70 65 63 69 66 69  -list is specifi
9e50: 65 64 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62  ed then the numb
9e60: 65 72 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73  er of values mus
9e70: 74 0a 62 65 20 74 68 65 20 73 61 6d 65 20 61 73  t.be the same as
9e80: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   the number of c
9e90: 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61  olumns in the ta
9ea0: 62 6c 65 2e 20 20 49 66 20 61 20 63 6f 6c 75 6d  ble.  If a colum
9eb0: 6e 2d 6c 69 73 74 0a 69 73 20 73 70 65 63 69 66  n-list.is specif
9ec0: 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20 6e 75  ied, then the nu
9ed0: 6d 62 65 72 20 6f 66 20 76 61 6c 75 65 73 20 6d  mber of values m
9ee0: 75 73 74 20 6d 61 74 63 68 20 74 68 65 20 6e 75  ust match the nu
9ef0: 6d 62 65 72 20 6f 66 0a 73 70 65 63 69 66 69 65  mber of.specifie
9f00: 64 20 63 6f 6c 75 6d 6e 73 2e 20 20 43 6f 6c 75  d columns.  Colu
9f10: 6d 6e 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65  mns of the table
9f20: 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 61 70 70   that do not app
9f30: 65 61 72 20 69 6e 20 74 68 65 0a 63 6f 6c 75 6d  ear in the.colum
9f40: 6e 20 6c 69 73 74 20 61 72 65 20 66 69 6c 6c 65  n list are fille
9f50: 64 20 77 69 74 68 20 74 68 65 20 64 65 66 61 75  d with the defau
9f60: 6c 74 20 76 61 6c 75 65 2c 20 6f 72 20 77 69 74  lt value, or wit
9f70: 68 20 4e 55 4c 4c 20 69 66 20 6e 6f 74 0a 64 65  h NULL if not.de
9f80: 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 73  fault value is s
9f90: 70 65 63 69 66 69 65 64 2e 0a 3c 2f 70 3e 0a 0a  pecified..</p>..
9fa0: 3c 70 3e 54 68 65 20 73 65 63 6f 6e 64 20 66 6f  <p>The second fo
9fb0: 72 6d 20 6f 66 20 74 68 65 20 49 4e 53 45 52 54  rm of the INSERT
9fc0: 20 73 74 61 74 65 6d 65 6e 74 20 74 61 6b 65 73   statement takes
9fd0: 20 69 74 20 64 61 74 61 20 66 72 6f 6d 20 61 0a   it data from a.
9fe0: 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
9ff0: 2e 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  .  The number of
a000: 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
a010: 72 65 73 75 6c 74 20 6f 66 20 74 68 65 0a 53 45  result of the.SE
a020: 4c 45 43 54 20 6d 75 73 74 20 65 78 61 63 74 6c  LECT must exactl
a030: 79 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62  y match the numb
a040: 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
a050: 20 74 68 65 20 74 61 62 6c 65 20 69 66 0a 6e 6f   the table if.no
a060: 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 69 73 20   column list is 
a070: 73 70 65 63 69 66 69 65 64 2c 20 6f 72 20 69 74  specified, or it
a080: 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68 65 20   must match the 
a090: 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
a0a0: 73 0a 6e 61 6d 65 20 69 6e 20 74 68 65 20 63 6f  s.name in the co
a0b0: 6c 75 6d 6e 20 6c 69 73 74 2e 20 20 41 20 6e 65  lumn list.  A ne
a0c0: 77 20 65 6e 74 72 79 20 69 73 20 6d 61 64 65 20  w entry is made 
a0d0: 69 6e 20 74 68 65 20 74 61 62 6c 65 0a 66 6f 72  in the table.for
a0e0: 20 65 76 65 72 79 20 72 6f 77 20 6f 66 20 74 68   every row of th
a0f0: 65 20 53 45 4c 45 43 54 20 72 65 73 75 6c 74 2e  e SELECT result.
a100: 20 20 54 68 65 20 53 45 4c 45 43 54 20 6d 61 79    The SELECT may
a110: 20 62 65 20 73 69 6d 70 6c 65 0a 6f 72 20 63 6f   be simple.or co
a120: 6d 70 6f 75 6e 64 2e 20 20 49 66 20 74 68 65 20  mpound.  If the 
a130: 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
a140: 20 68 61 73 20 61 6e 20 4f 52 44 45 52 20 42 59   has an ORDER BY
a150: 20 63 6c 61 75 73 65 2c 0a 74 68 65 20 4f 52 44   clause,.the ORD
a160: 45 52 20 42 59 20 69 73 20 69 67 6e 6f 72 65 64  ER BY is ignored
a170: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70  .</p>..<p>The op
a180: 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d  tional conflict-
a190: 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68  clause allows th
a1a0: 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20  e specification 
a1b0: 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  of an alternativ
a1c0: 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  e.constraint con
a1d0: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
a1e0: 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75 73   algorithm to us
a1f0: 65 20 64 75 72 69 6e 67 20 74 68 69 73 20 6f 6e  e during this on
a200: 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74  e command..See t
a210: 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65  he section title
a220: 64 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e 66  d.<a href="#conf
a230: 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43  lict">ON CONFLIC
a240: 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74 69  T</a> for additi
a250: 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
a260: 2e 0a 46 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c  ..For compatibil
a270: 69 74 79 20 77 69 74 68 20 4d 79 53 51 4c 2c 20  ity with MySQL, 
a280: 74 68 65 20 70 61 72 73 65 72 20 61 6c 6c 6f 77  the parser allow
a290: 73 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65  s the use of the
a2a0: 0a 73 69 6e 67 6c 65 20 6b 65 79 77 6f 72 64 20  .single keyword 
a2b0: 3c 61 20 68 72 65 66 3d 22 23 72 65 70 6c 61 63  <a href="#replac
a2c0: 65 22 3e 52 45 50 4c 41 43 45 3c 2f 61 3e 20 61  e">REPLACE</a> a
a2d0: 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 22  s an alias for "
a2e0: 49 4e 53 45 52 54 20 4f 52 20 52 45 50 4c 41 43  INSERT OR REPLAC
a2f0: 45 22 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63  E"..</p>.}...Sec
a300: 74 69 6f 6e 20 7b 4f 4e 20 43 4f 4e 46 4c 49 43  tion {ON CONFLIC
a310: 54 20 63 6c 61 75 73 65 7d 20 63 6f 6e 66 6c 69  T clause} confli
a320: 63 74 0a 0a 53 79 6e 74 61 78 20 7b 63 6f 6e 66  ct..Syntax {conf
a330: 6c 69 63 74 2d 63 6c 61 75 73 65 7d 20 7b 0a 4f  lict-clause} {.O
a340: 4e 20 43 4f 4e 46 4c 49 43 54 20 3c 63 6f 6e 66  N CONFLICT <conf
a350: 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 0a  lict-algorithm>.
a360: 7d 20 7b 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f  } {conflict-algo
a370: 72 69 74 68 6d 7d 20 7b 0a 52 4f 4c 4c 42 41 43  rithm} {.ROLLBAC
a380: 4b 20 7c 20 41 42 4f 52 54 20 7c 20 46 41 49 4c  K | ABORT | FAIL
a390: 20 7c 20 49 47 4e 4f 52 45 20 7c 20 52 45 50 4c   | IGNORE | REPL
a3a0: 41 43 45 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  ACE.}..puts {.<p
a3b0: 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54  >The ON CONFLICT
a3c0: 20 63 6c 61 75 73 65 20 69 73 20 6e 6f 74 20 61   clause is not a
a3d0: 20 73 65 70 61 72 61 74 65 20 53 51 4c 20 63 6f   separate SQL co
a3e0: 6d 6d 61 6e 64 2e 20 20 49 74 20 69 73 20 61 0a  mmand.  It is a.
a3f0: 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20 63 6c 61  non-standard cla
a400: 75 73 65 20 74 68 61 74 20 63 61 6e 20 61 70 70  use that can app
a410: 65 61 72 20 69 6e 20 6d 61 6e 79 20 6f 74 68 65  ear in many othe
a420: 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 2e 0a  r SQL commands..
a430: 49 74 20 69 73 20 67 69 76 65 6e 20 69 74 73 20  It is given its 
a440: 6f 77 6e 20 73 65 63 74 69 6f 6e 20 69 6e 20 74  own section in t
a450: 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 62 65 63  his document bec
a460: 61 75 73 65 20 69 74 20 69 73 20 6e 6f 74 0a 70  ause it is not.p
a470: 61 72 74 20 6f 66 20 73 74 61 6e 64 61 72 64 20  art of standard 
a480: 53 51 4c 20 61 6e 64 20 74 68 65 72 65 66 6f 72  SQL and therefor
a490: 65 20 6d 69 67 68 74 20 6e 6f 74 20 62 65 20 66  e might not be f
a4a0: 61 6d 69 6c 69 61 72 2e 3c 2f 70 3e 0a 0a 3c 70  amiliar.</p>..<p
a4b0: 3e 54 68 65 20 73 79 6e 74 61 78 20 66 6f 72 20  >The syntax for 
a4c0: 74 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  the ON CONFLICT 
a4d0: 63 6c 61 75 73 65 20 69 73 20 61 73 20 73 68 6f  clause is as sho
a4e0: 77 6e 20 61 62 6f 76 65 20 66 6f 72 0a 74 68 65  wn above for.the
a4f0: 20 43 52 45 41 54 45 20 54 41 42 4c 45 2c 20 43   CREATE TABLE, C
a500: 52 45 41 54 45 20 49 4e 44 45 58 2c 20 61 6e 64  REATE INDEX, and
a510: 20 42 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49   BEGIN TRANSACTI
a520: 4f 4e 20 63 6f 6d 6d 61 6e 64 73 2e 0a 46 6f 72  ON commands..For
a530: 20 74 68 65 20 43 4f 50 59 2c 20 49 4e 53 45 52   the COPY, INSER
a540: 54 2c 20 61 6e 64 20 55 50 44 41 54 45 20 63 6f  T, and UPDATE co
a550: 6d 6d 61 6e 64 73 2c 20 74 68 65 20 6b 65 79 77  mmands, the keyw
a560: 6f 72 64 73 0a 22 4f 4e 20 43 4f 4e 46 4c 49 43  ords."ON CONFLIC
a570: 54 22 20 61 72 65 20 72 65 70 6c 61 63 65 64 20  T" are replaced 
a580: 62 79 20 22 4f 52 22 2c 20 74 6f 20 6d 61 6b 65  by "OR", to make
a590: 20 74 68 65 20 73 79 6e 74 61 78 20 73 65 65 6d   the syntax seem
a5a0: 20 6d 6f 72 65 0a 6e 61 74 75 72 61 6c 2e 20 20   more.natural.  
a5b0: 42 75 74 20 74 68 65 20 6d 65 61 6e 69 6e 67 20  But the meaning 
a5c0: 6f 66 20 74 68 65 20 63 6c 61 75 73 65 20 69 73  of the clause is
a5d0: 20 74 68 65 20 73 61 6d 65 20 65 69 74 68 65 72   the same either
a5e0: 20 77 61 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68   way.</p>..<p>Th
a5f0: 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c  e ON CONFLICT cl
a600: 61 75 73 65 20 73 70 65 63 69 66 69 65 73 20 61  ause specifies a
a610: 6e 20 61 6c 67 6f 72 69 74 68 6d 20 75 73 65 64  n algorithm used
a620: 20 74 6f 20 72 65 73 6f 6c 76 65 0a 63 6f 6e 73   to resolve.cons
a630: 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 73  traint conflicts
a640: 2e 20 20 54 68 65 72 65 20 61 72 65 20 66 69 76  .  There are fiv
a650: 65 20 63 68 6f 69 63 65 73 3a 20 52 4f 4c 4c 42  e choices: ROLLB
a660: 41 43 4b 2c 20 41 42 4f 52 54 2c 0a 46 41 49 4c  ACK, ABORT,.FAIL
a670: 2c 20 49 47 4e 4f 52 45 2c 20 61 6e 64 20 52 45  , IGNORE, and RE
a680: 50 4c 41 43 45 2e 20 54 68 65 20 64 65 66 61 75  PLACE. The defau
a690: 6c 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  lt algorithm is 
a6a0: 41 42 4f 52 54 2e 20 20 54 68 69 73 0a 69 73 20  ABORT.  This.is 
a6b0: 77 68 61 74 20 74 68 65 79 20 6d 65 61 6e 3a 3c  what they mean:<
a6c0: 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c 64 74 3e 3c 62  /p>..<dl>.<dt><b
a6d0: 3e 52 4f 4c 4c 42 41 43 4b 3c 2f 62 3e 3c 2f 64  >ROLLBACK</b></d
a6e0: 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61  t>.<dd><p>When a
a6f0: 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
a700: 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 61 6e  ation occurs, an
a710: 20 69 6d 6d 65 64 69 61 74 65 20 52 4f 4c 4c 42   immediate ROLLB
a720: 41 43 4b 0a 6f 63 63 75 72 73 2c 20 74 68 75 73  ACK.occurs, thus
a730: 20 65 6e 64 69 6e 67 20 74 68 65 20 63 75 72 72   ending the curr
a740: 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c  ent transaction,
a750: 20 61 6e 64 20 74 68 65 20 63 6f 6d 6d 61 6e 64   and the command
a760: 20 61 62 6f 72 74 73 0a 77 69 74 68 20 61 20 72   aborts.with a r
a770: 65 74 75 72 6e 20 63 6f 64 65 20 6f 66 20 53 51  eturn code of SQ
a780: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e  LITE_CONSTRAINT.
a790: 20 20 49 66 20 6e 6f 20 74 72 61 6e 73 61 63 74    If no transact
a7a0: 69 6f 6e 20 69 73 0a 61 63 74 69 76 65 20 28 6f  ion is.active (o
a7b0: 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 69 6d  ther than the im
a7c0: 70 6c 69 65 64 20 74 72 61 6e 73 61 63 74 69 6f  plied transactio
a7d0: 6e 20 74 68 61 74 20 69 73 20 63 72 65 61 74 65  n that is create
a7e0: 64 20 6f 6e 20 65 76 65 72 79 0a 63 6f 6d 6d 61  d on every.comma
a7f0: 6e 64 29 20 74 68 65 6e 20 74 68 69 73 20 61 6c  nd) then this al
a800: 67 6f 72 69 74 68 6d 20 77 6f 72 6b 73 20 74 68  gorithm works th
a810: 65 20 73 61 6d 65 20 61 73 20 41 42 4f 52 54 2e  e same as ABORT.
a820: 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c  </p></dd>..<dt><
a830: 62 3e 41 42 4f 52 54 3c 2f 62 3e 3c 2f 64 74 3e  b>ABORT</b></dt>
a840: 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63  .<dd><p>When a c
a850: 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
a860: 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20  ion occurs, the 
a870: 63 6f 6d 6d 61 6e 64 20 62 61 63 6b 73 20 6f 75  command backs ou
a880: 74 0a 61 6e 79 20 70 72 69 6f 72 20 63 68 61 6e  t.any prior chan
a890: 67 65 73 20 69 74 20 6d 69 67 68 74 20 68 61 76  ges it might hav
a8a0: 65 20 6d 61 64 65 20 61 6e 64 20 61 62 6f 72 74  e made and abort
a8b0: 73 20 77 69 74 68 20 61 20 72 65 74 75 72 6e 20  s with a return 
a8c0: 63 6f 64 65 0a 6f 66 20 53 51 4c 49 54 45 5f 43  code.of SQLITE_C
a8d0: 4f 4e 53 54 52 41 49 4e 54 2e 20 20 42 75 74 20  ONSTRAINT.  But 
a8e0: 6e 6f 20 52 4f 4c 4c 42 41 43 4b 20 69 73 20 65  no ROLLBACK is e
a8f0: 78 65 63 75 74 65 64 20 73 6f 20 63 68 61 6e 67  xecuted so chang
a900: 65 73 0a 66 72 6f 6d 20 70 72 69 6f 72 20 63 6f  es.from prior co
a910: 6d 6d 61 6e 64 73 20 77 69 74 68 69 6e 20 74 68  mmands within th
a920: 65 20 73 61 6d 65 20 74 72 61 6e 73 61 63 74 69  e same transacti
a930: 6f 6e 0a 61 72 65 20 70 72 65 73 65 72 76 65 64  on.are preserved
a940: 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 20 64  .  This is the d
a950: 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 2e  efault behavior.
a960: 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c  </p></dd>..<dt><
a970: 62 3e 46 41 49 4c 3c 2f 62 3e 3c 2f 64 74 3e 0a  b>FAIL</b></dt>.
a980: 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f  <dd><p>When a co
a990: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
a9a0: 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 63  on occurs, the c
a9b0: 6f 6d 6d 61 6e 64 20 61 62 6f 72 74 73 20 77 69  ommand aborts wi
a9c0: 74 68 20 61 0a 72 65 74 75 72 6e 20 63 6f 64 65  th a.return code
a9d0: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
a9e0: 4e 54 2e 20 20 42 75 74 20 61 6e 79 20 63 68 61  NT.  But any cha
a9f0: 6e 67 65 73 20 74 6f 20 74 68 65 20 64 61 74 61  nges to the data
aa00: 62 61 73 65 20 74 68 61 74 0a 74 68 65 20 63 6f  base that.the co
aa10: 6d 6d 61 6e 64 20 6d 61 64 65 20 70 72 69 6f 72  mmand made prior
aa20: 20 74 6f 20 65 6e 63 6f 75 6e 74 65 72 69 6e 67   to encountering
aa30: 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20   the constraint 
aa40: 76 69 6f 6c 61 74 69 6f 6e 0a 61 72 65 20 70 72  violation.are pr
aa50: 65 73 65 72 76 65 64 20 61 6e 64 20 61 72 65 20  eserved and are 
aa60: 6e 6f 74 20 62 61 63 6b 65 64 20 6f 75 74 2e 20  not backed out. 
aa70: 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66   For example, if
aa80: 20 61 6e 20 55 50 44 41 54 45 0a 73 74 61 74 65   an UPDATE.state
aa90: 6d 65 6e 74 20 65 6e 63 6f 75 6e 74 65 72 65 64  ment encountered
aaa0: 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
aab0: 6f 6c 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20 31  olation on the 1
aac0: 30 30 74 68 20 72 6f 77 20 74 68 61 74 0a 69 74  00th row that.it
aad0: 20 61 74 74 65 6d 70 74 73 20 74 6f 20 75 70 64   attempts to upd
aae0: 61 74 65 2c 20 74 68 65 6e 20 74 68 65 20 66 69  ate, then the fi
aaf0: 72 73 74 20 39 39 20 72 6f 77 20 63 68 61 6e 67  rst 99 row chang
ab00: 65 73 20 61 72 65 20 70 72 65 73 65 72 76 65 64  es are preserved
ab10: 0a 62 75 74 20 63 68 61 6e 67 65 73 20 74 6f 20  .but changes to 
ab20: 72 6f 77 73 20 31 30 30 20 61 6e 64 20 62 65 79  rows 100 and bey
ab30: 6f 6e 64 20 6e 65 76 65 72 20 6f 63 63 75 72 2e  ond never occur.
ab40: 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c  </p></dd>..<dt><
ab50: 62 3e 49 47 4e 4f 52 45 3c 2f 62 3e 3c 2f 64 74  b>IGNORE</b></dt
ab60: 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20  >.<dd><p>When a 
ab70: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
ab80: 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65  tion occurs, the
ab90: 20 6f 6e 65 20 72 6f 77 20 74 68 61 74 20 63 6f   one row that co
aba0: 6e 74 61 69 6e 73 0a 74 68 65 20 63 6f 6e 73 74  ntains.the const
abb0: 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
abc0: 69 73 20 6e 6f 74 20 69 6e 73 65 72 74 65 64 20  is not inserted 
abd0: 6f 72 20 63 68 61 6e 67 65 64 2e 20 20 42 75 74  or changed.  But
abe0: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 0a 63 6f 6e   the command.con
abf0: 74 69 6e 75 65 73 20 65 78 65 63 75 74 69 6e 67  tinues executing
ac00: 20 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4f 74 68 65   normally.  Othe
ac10: 72 20 72 6f 77 73 20 62 65 66 6f 72 65 20 61 6e  r rows before an
ac20: 64 20 61 66 74 65 72 20 74 68 65 20 72 6f 77 20  d after the row 
ac30: 74 68 61 74 0a 63 6f 6e 74 61 69 6e 65 64 20 74  that.contained t
ac40: 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69  he constraint vi
ac50: 6f 6c 61 74 69 6f 6e 20 63 6f 6e 74 69 6e 75 65  olation continue
ac60: 20 74 6f 20 62 65 20 69 6e 73 65 72 74 65 64 20   to be inserted 
ac70: 6f 72 20 75 70 64 61 74 65 64 0a 6e 6f 72 6d 61  or updated.norma
ac80: 6c 6c 79 2e 20 20 4e 6f 20 65 72 72 6f 72 20 69  lly.  No error i
ac90: 73 20 72 65 74 75 72 6e 65 64 2e 3c 2f 70 3e 3c  s returned.</p><
aca0: 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 52 45 50  /dd>..<dt><b>REP
acb0: 4c 41 43 45 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64  LACE</b></dt>.<d
acc0: 64 3e 3c 70 3e 57 68 65 6e 20 61 20 55 4e 49 51  d><p>When a UNIQ
acd0: 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69  UE constraint vi
ace0: 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
acf0: 74 68 65 20 70 72 65 2d 65 78 69 73 74 69 6e 67  the pre-existing
ad00: 20 72 6f 77 73 0a 74 68 61 74 20 61 72 65 20 63   rows.that are c
ad10: 61 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 73 74  ausing the const
ad20: 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
ad30: 61 72 65 20 72 65 6d 6f 76 65 64 20 70 72 69 6f  are removed prio
ad40: 72 20 74 6f 20 69 6e 73 65 72 74 69 6e 67 0a 6f  r to inserting.o
ad50: 72 20 75 70 64 61 74 69 6e 67 20 74 68 65 20 63  r updating the c
ad60: 75 72 72 65 6e 74 20 72 6f 77 2e 20 20 54 68 75  urrent row.  Thu
ad70: 73 20 74 68 65 20 69 6e 73 65 72 74 20 6f 72 20  s the insert or 
ad80: 75 70 64 61 74 65 20 61 6c 77 61 79 73 20 6f 63  update always oc
ad90: 63 75 72 73 2e 0a 54 68 65 20 63 6f 6d 6d 61 6e  curs..The comman
ada0: 64 20 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63  d continues exec
adb0: 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20  uting normally. 
adc0: 20 4e 6f 20 65 72 72 6f 72 20 69 73 20 72 65 74   No error is ret
add0: 75 72 6e 65 64 2e 0a 49 66 20 61 20 4e 4f 54 20  urned..If a NOT 
ade0: 4e 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 20  NULL constraint 
adf0: 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
ae00: 2c 20 74 68 65 20 4e 55 4c 4c 20 76 61 6c 75 65  , the NULL value
ae10: 20 69 73 20 72 65 70 6c 61 63 65 64 0a 62 79 20   is replaced.by 
ae20: 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  the default valu
ae30: 65 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d  e for that colum
ae40: 6e 2e 20 20 49 66 20 74 68 65 20 63 6f 6c 75 6d  n.  If the colum
ae50: 6e 20 68 61 73 20 6e 6f 20 64 65 66 61 75 6c 74  n has no default
ae60: 0a 76 61 6c 75 65 2c 20 74 68 65 6e 20 74 68 65  .value, then the
ae70: 20 41 42 4f 52 54 20 61 6c 67 6f 72 69 74 68 6d   ABORT algorithm
ae80: 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c   is used.</p>..<
ae90: 70 3e 57 68 65 6e 20 74 68 69 73 20 63 6f 6e 66  p>When this conf
aea0: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
aeb0: 73 74 72 61 74 65 67 79 20 64 65 6c 65 74 65 73  strategy deletes
aec0: 20 72 6f 77 73 20 69 6e 20 6f 72 64 65 72 20 74   rows in order t
aed0: 6f 0a 73 74 61 74 69 73 66 79 20 61 20 63 6f 6e  o.statisfy a con
aee0: 73 74 72 61 69 6e 74 2c 20 69 74 20 64 6f 65 73  straint, it does
aef0: 20 6e 6f 74 20 69 6e 76 6f 6b 65 20 64 65 6c 65   not invoke dele
af00: 74 65 20 74 72 69 67 67 65 72 73 20 6f 6e 20 74  te triggers on t
af10: 68 6f 73 65 0a 72 6f 77 73 2e 20 20 42 75 74 20  hose.rows.  But 
af20: 74 68 61 74 20 6d 61 79 20 63 68 61 6e 67 65 20  that may change 
af30: 69 6e 20 61 20 66 75 74 75 72 65 20 72 65 6c 65  in a future rele
af40: 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 2f 64 64 3e 0a  ase.</p>..</dd>.
af50: 3c 2f 64 6c 3e 0a 0a 3c 70 3e 0a 54 68 65 20 63  </dl>..<p>.The c
af60: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
af70: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 63 61 6e  on algorithm can
af80: 20 62 65 20 73 70 65 63 69 66 69 65 64 20 69 6e   be specified in
af90: 20 74 68 72 65 65 20 70 6c 61 63 65 73 2c 0a 69   three places,.i
afa0: 6e 20 6f 72 64 65 72 20 66 72 6f 6d 20 6c 6f 77  n order from low
afb0: 65 73 74 20 74 6f 20 68 69 67 68 65 73 74 20 70  est to highest p
afc0: 72 65 63 65 64 65 6e 63 65 3a 0a 3c 2f 70 3e 0a  recedence:.</p>.
afd0: 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70 3e 0a 4f 6e  .<ol>.<li><p>.On
afe0: 20 69 6e 64 69 76 69 64 75 61 6c 20 63 6f 6e 73   individual cons
aff0: 74 72 61 69 6e 74 73 20 77 69 74 68 69 6e 20 61  traints within a
b000: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 6f 72   CREATE TABLE or
b010: 20 43 52 45 41 54 45 20 49 4e 44 45 58 0a 73 74   CREATE INDEX.st
b020: 61 74 65 6d 65 6e 74 2e 0a 3c 2f 70 3e 3c 2f 6c  atement..</p></l
b030: 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 4f 6e 20 61  i>..<li><p>.On a
b040: 20 42 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49   BEGIN TRANSACTI
b050: 4f 4e 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e  ON command..</p>
b060: 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 49  </li>..<li><p>.I
b070: 6e 20 74 68 65 20 4f 52 20 63 6c 61 75 73 65 20  n the OR clause 
b080: 6f 66 20 61 20 43 4f 50 59 2c 20 49 4e 53 45 52  of a COPY, INSER
b090: 54 2c 20 6f 72 20 55 50 44 41 54 45 20 63 6f 6d  T, or UPDATE com
b0a0: 6d 61 6e 64 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a  mand..</p></li>.
b0b0: 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 54 68 65 20 61 6c  </ol>..<p>The al
b0c0: 67 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65  gorithm specifie
b0d0: 64 20 69 6e 20 74 68 65 20 4f 52 20 63 6c 61 75  d in the OR clau
b0e0: 73 65 20 6f 66 20 61 20 43 4f 50 59 2c 20 49 4e  se of a COPY, IN
b0f0: 53 45 52 54 2c 20 6f 72 20 55 50 44 41 54 45 0a  SERT, or UPDATE.
b100: 6f 76 65 72 72 69 64 65 73 20 61 6e 79 20 61 6c  overrides any al
b110: 67 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65  gorithm specifie
b120: 64 20 6f 6e 20 74 68 65 20 42 45 47 49 4e 20 54  d on the BEGIN T
b130: 52 41 4e 53 41 43 54 49 4f 4e 20 63 6f 6d 6d 61  RANSACTION comma
b140: 6e 64 20 61 6e 64 0a 74 68 65 20 61 6c 67 6f 72  nd and.the algor
b150: 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 6f  ithm specified o
b160: 6e 20 74 68 65 20 42 45 47 49 4e 20 54 52 41 4e  n the BEGIN TRAN
b170: 53 41 43 54 49 4f 4e 20 63 6f 6d 6d 61 6e 64 20  SACTION command 
b180: 6f 76 65 72 72 69 64 65 73 20 74 68 65 0a 61 6c  overrides the.al
b190: 67 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65  gorithm specifie
b1a0: 64 20 69 6e 20 74 68 65 20 61 20 43 52 45 41 54  d in the a CREAT
b1b0: 45 20 54 41 42 4c 45 20 6f 72 20 43 52 45 41 54  E TABLE or CREAT
b1c0: 45 20 49 4e 44 45 58 2e 0a 49 66 20 6e 6f 20 61  E INDEX..If no a
b1d0: 6c 67 6f 72 69 74 68 6d 20 69 73 20 73 70 65 63  lgorithm is spec
b1e0: 69 66 69 65 64 20 61 6e 79 77 68 65 72 65 2c 20  ified anywhere, 
b1f0: 74 68 65 20 41 42 4f 52 54 20 61 6c 67 6f 72 69  the ABORT algori
b200: 74 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e  thm is used.</p>
b210: 0a 0a 7d 0a 23 20 3c 70 3e 46 6f 72 20 61 64 64  ..}.# <p>For add
b220: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
b230: 69 6f 6e 2c 20 73 65 65 20 0a 23 20 3c 61 20 68  ion, see .# <a h
b240: 72 65 66 3d 22 63 6f 6e 66 6c 69 63 74 2e 68 74  ref="conflict.ht
b250: 6d 6c 22 3e 63 6f 6e 66 6c 69 63 74 2e 68 74 6d  ml">conflict.htm
b260: 6c 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 0a 53 65 63  l</a>.</p>...Sec
b270: 74 69 6f 6e 20 50 52 41 47 4d 41 20 70 72 61 67  tion PRAGMA prag
b280: 6d 61 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ma..Syntax {sql-
b290: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 50 52 41  statement} {.PRA
b2a0: 47 4d 41 20 3c 6e 61 6d 65 3e 20 5b 3d 20 3c 76  GMA <name> [= <v
b2b0: 61 6c 75 65 3e 5d 20 7c 0a 50 52 41 47 4d 41 20  alue>] |.PRAGMA 
b2c0: 3c 66 75 6e 63 74 69 6f 6e 3e 28 3c 61 72 67 3e  <function>(<arg>
b2d0: 29 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  ).}..puts {.<p>T
b2e0: 68 65 20 50 52 41 47 4d 41 20 63 6f 6d 6d 61 6e  he PRAGMA comman
b2f0: 64 20 69 73 20 75 73 65 64 20 74 6f 20 6d 6f 64  d is used to mod
b300: 69 66 79 20 74 68 65 20 6f 70 65 72 61 74 69 6f  ify the operatio
b310: 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20  n of the SQLite 
b320: 6c 69 62 72 61 72 79 2e 0a 54 68 65 20 70 72 61  library..The pra
b330: 67 6d 61 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65  gma command is e
b340: 78 70 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64 20  xperimental and 
b350: 73 70 65 63 69 66 69 63 20 70 72 61 67 6d 61 20  specific pragma 
b360: 73 74 61 74 65 6d 65 6e 74 73 20 6d 61 79 20 62  statements may b
b370: 65 0a 72 65 6d 6f 76 65 64 20 6f 72 20 61 64 64  e.removed or add
b380: 65 64 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c  ed in future rel
b390: 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74 65 2e  eases of SQLite.
b3a0: 20 20 55 73 65 20 74 68 69 73 20 63 6f 6d 6d 61    Use this comma
b3b0: 6e 64 0a 77 69 74 68 20 63 61 75 74 69 6f 6e 2e  nd.with caution.
b3c0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 70 72 61  </p>..<p>The pra
b3d0: 67 6d 61 73 20 74 68 61 74 20 74 61 6b 65 20 61  gmas that take a
b3e0: 6e 20 69 6e 74 65 67 65 72 20 3c 62 3e 3c 69 3e  n integer <b><i>
b3f0: 76 61 6c 75 65 3c 2f 69 3e 3c 2f 62 3e 20 61 6c  value</i></b> al
b400: 73 6f 20 61 63 63 65 70 74 20 0a 73 79 6d 62 6f  so accept .symbo
b410: 6c 69 63 20 6e 61 6d 65 73 2e 20 20 54 68 65 20  lic names.  The 
b420: 73 74 72 69 6e 67 73 20 22 3c 62 3e 6f 6e 3c 2f  strings "<b>on</
b430: 62 3e 22 2c 20 22 3c 62 3e 74 72 75 65 3c 2f 62  b>", "<b>true</b
b440: 3e 22 2c 20 61 6e 64 20 22 3c 62 3e 79 65 73 3c  >", and "<b>yes<
b450: 2f 62 3e 22 20 0a 61 72 65 20 65 71 75 69 76 61  /b>" .are equiva
b460: 6c 65 6e 74 20 74 6f 20 3c 62 3e 31 3c 2f 62 3e  lent to <b>1</b>
b470: 2e 20 20 54 68 65 20 73 74 72 69 6e 67 73 20 22  .  The strings "
b480: 3c 62 3e 6f 66 66 3c 2f 62 3e 22 2c 20 22 3c 62  <b>off</b>", "<b
b490: 3e 66 61 6c 73 65 3c 2f 62 3e 22 2c 20 0a 61 6e  >false</b>", .an
b4a0: 64 20 22 3c 62 3e 6e 6f 3c 2f 62 3e 22 20 61 72  d "<b>no</b>" ar
b4b0: 65 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20  e equivalent to 
b4c0: 3c 62 3e 30 3c 2f 62 3e 2e 20 20 54 68 65 73 65  <b>0</b>.  These
b4d0: 20 73 74 72 69 6e 67 73 20 61 72 65 20 63 61 73   strings are cas
b4e0: 65 2d 0a 69 6e 73 65 6e 73 69 74 69 76 65 2c 20  e-.insensitive, 
b4f0: 61 6e 64 20 64 6f 20 6e 6f 74 20 72 65 71 75 69  and do not requi
b500: 72 65 20 71 75 6f 74 65 73 2e 20 20 41 6e 20 75  re quotes.  An u
b510: 6e 72 65 63 6f 67 6e 69 7a 65 64 20 73 74 72 69  nrecognized stri
b520: 6e 67 20 77 69 6c 6c 20 62 65 20 0a 74 72 65 61  ng will be .trea
b530: 74 65 64 20 61 73 20 3c 62 3e 31 3c 2f 62 3e 2c  ted as <b>1</b>,
b540: 20 61 6e 64 20 77 69 6c 6c 20 6e 6f 74 20 67 65   and will not ge
b550: 6e 65 72 61 74 65 20 61 6e 20 65 72 72 6f 72 2e  nerate an error.
b560: 20 20 57 68 65 6e 20 74 68 65 20 3c 69 3e 76 61    When the <i>va
b570: 6c 75 65 3c 2f 69 3e 20 0a 69 73 20 72 65 74 75  lue</i> .is retu
b580: 72 6e 65 64 20 69 74 20 69 73 20 61 73 20 61 6e  rned it is as an
b590: 20 69 6e 74 65 67 65 72 2e 3c 2f 70 3e 0a 0a 3c   integer.</p>..<
b5a0: 70 3e 54 68 65 20 63 75 72 72 65 6e 74 20 69 6d  p>The current im
b5b0: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 73 75 70  plementation sup
b5c0: 70 6f 72 74 73 20 74 68 65 20 66 6f 6c 6c 6f 77  ports the follow
b5d0: 69 6e 67 20 70 72 61 67 6d 61 73 3a 3c 2f 70 3e  ing pragmas:</p>
b5e0: 0a 0a 3c 75 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22  ..<ul>.<a name="
b5f0: 70 72 61 67 6d 61 5f 63 61 63 68 65 5f 73 69 7a  pragma_cache_siz
b600: 65 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c  e"></a>.<li><p><
b610: 62 3e 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73  b>PRAGMA cache_s
b620: 69 7a 65 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e  ize;.       <br>
b630: 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a  PRAGMA cache_siz
b640: 65 20 3d 20 3c 2f 62 3e 3c 69 3e 4e 75 6d 62 65  e = </b><i>Numbe
b650: 72 2d 6f 66 2d 70 61 67 65 73 3c 2f 69 3e 3c 62  r-of-pages</i><b
b660: 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c  >;</b></p>.    <
b670: 70 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e 67  p>Query or chang
b680: 65 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75  e the maximum nu
b690: 6d 62 65 72 20 6f 66 20 64 61 74 61 62 61 73 65  mber of database
b6a0: 20 64 69 73 6b 20 70 61 67 65 73 20 74 68 61 74   disk pages that
b6b0: 20 53 51 4c 69 74 65 0a 20 20 20 20 77 69 6c 6c   SQLite.    will
b6c0: 20 68 6f 6c 64 20 69 6e 20 6d 65 6d 6f 72 79 20   hold in memory 
b6d0: 61 74 20 6f 6e 63 65 2e 20 20 45 61 63 68 20 70  at once.  Each p
b6e0: 61 67 65 20 75 73 65 73 20 61 62 6f 75 74 20 31  age uses about 1
b6f0: 2e 35 4b 20 6f 66 20 6d 65 6d 6f 72 79 2e 0a 20  .5K of memory.. 
b700: 20 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 63     The default c
b710: 61 63 68 65 20 73 69 7a 65 20 69 73 20 32 30 30  ache size is 200
b720: 30 2e 20 20 49 66 20 79 6f 75 20 61 72 65 20 64  0.  If you are d
b730: 6f 69 6e 67 20 55 50 44 41 54 45 73 20 6f 72 20  oing UPDATEs or 
b740: 44 45 4c 45 54 45 73 0a 20 20 20 20 74 68 61 74  DELETEs.    that
b750: 20 63 68 61 6e 67 65 20 6d 61 6e 79 20 72 6f 77   change many row
b760: 73 20 6f 66 20 61 20 64 61 74 61 62 61 73 65 20  s of a database 
b770: 61 6e 64 20 79 6f 75 20 64 6f 20 6e 6f 74 20 6d  and you do not m
b780: 69 6e 64 20 69 66 20 53 51 4c 69 74 65 0a 20 20  ind if SQLite.  
b790: 20 20 75 73 65 73 20 6d 6f 72 65 20 6d 65 6d 6f    uses more memo
b7a0: 72 79 2c 20 79 6f 75 20 63 61 6e 20 69 6e 63 72  ry, you can incr
b7b0: 65 61 73 65 20 74 68 65 20 63 61 63 68 65 20 73  ease the cache s
b7c0: 69 7a 65 20 66 6f 72 20 61 20 70 6f 73 73 69 62  ize for a possib
b7d0: 6c 65 20 73 70 65 65 64 0a 20 20 20 20 69 6d 70  le speed.    imp
b7e0: 72 6f 76 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 20 20  rovement.</p>.  
b7f0: 20 20 3c 70 3e 57 68 65 6e 20 79 6f 75 20 63 68    <p>When you ch
b800: 61 6e 67 65 20 74 68 65 20 63 61 63 68 65 20 73  ange the cache s
b810: 69 7a 65 20 75 73 69 6e 67 20 74 68 65 20 63 61  ize using the ca
b820: 63 68 65 5f 73 69 7a 65 20 70 72 61 67 6d 61 2c  che_size pragma,
b830: 20 74 68 65 0a 20 20 20 20 63 68 61 6e 67 65 20   the.    change 
b840: 6f 6e 6c 79 20 65 6e 64 75 72 65 73 20 66 6f 72  only endures for
b850: 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65 73   the current ses
b860: 73 69 6f 6e 2e 20 20 54 68 65 20 63 61 63 68 65  sion.  The cache
b870: 20 73 69 7a 65 20 72 65 76 65 72 74 73 0a 20 20   size reverts.  
b880: 20 20 74 6f 20 74 68 65 20 64 65 66 61 75 6c 74    to the default
b890: 20 76 61 6c 75 65 20 77 68 65 6e 20 74 68 65 20   value when the 
b8a0: 64 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73  database is clos
b8b0: 65 64 20 61 6e 64 20 72 65 6f 70 65 6e 65 64 2e  ed and reopened.
b8c0: 20 20 55 73 65 0a 20 20 20 20 74 68 65 20 3c 61    Use.    the <a
b8d0: 20 68 72 65 66 3d 22 23 70 72 61 67 6d 61 5f 64   href="#pragma_d
b8e0: 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a  efault_cache_siz
b8f0: 65 22 3e 3c 62 3e 64 65 66 61 75 6c 74 5f 63 61  e"><b>default_ca
b900: 63 68 65 5f 73 69 7a 65 3c 2f 62 3e 3c 2f 61 3e  che_size</b></a>
b910: 20 0a 20 20 20 20 70 72 61 67 6d 61 20 74 6f 20   .    pragma to 
b920: 63 68 65 63 6b 20 74 68 65 20 63 61 63 68 65 20  check the cache 
b930: 73 69 7a 65 20 70 65 72 6d 61 6e 65 6e 74 6c 79  size permanently
b940: 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e  .</p></li>..<li>
b950: 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 63 6f 75  <p><b>PRAGMA cou
b960: 6e 74 5f 63 68 61 6e 67 65 73 20 3d 20 4f 4e 3b  nt_changes = ON;
b970: 20 3c 2f 62 3e 28 31 29 3c 62 3e 0a 20 20 20 20   </b>(1)<b>.    
b980: 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 63 6f     <br>PRAGMA co
b990: 75 6e 74 5f 63 68 61 6e 67 65 73 20 3d 20 4f 46  unt_changes = OF
b9a0: 46 3b 3c 2f 62 3e 20 28 30 29 3c 2f 70 3e 0a 20  F;</b> (0)</p>. 
b9b0: 20 20 20 3c 70 3e 57 68 65 6e 20 6f 6e 2c 20 74     <p>When on, t
b9c0: 68 65 20 43 4f 55 4e 54 5f 43 48 41 4e 47 45 53  he COUNT_CHANGES
b9d0: 20 70 72 61 67 6d 61 20 63 61 75 73 65 73 20 74   pragma causes t
b9e0: 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  he callback func
b9f0: 74 69 6f 6e 20 74 6f 0a 20 20 20 20 62 65 20 69  tion to.    be i
ba00: 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20  nvoked once for 
ba10: 65 61 63 68 20 44 45 4c 45 54 45 2c 20 49 4e 53  each DELETE, INS
ba20: 45 52 54 2c 20 6f 72 20 55 50 44 41 54 45 20 6f  ERT, or UPDATE o
ba30: 70 65 72 61 74 69 6f 6e 2e 20 20 54 68 65 0a 20  peration.  The. 
ba40: 20 20 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74     argument is t
ba50: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  he number of row
ba60: 73 20 74 68 61 74 20 77 65 72 65 20 63 68 61 6e  s that were chan
ba70: 67 65 64 2e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e  ged.</p>.    <p>
ba80: 54 68 69 73 20 70 72 61 67 6d 61 20 6d 61 79 20  This pragma may 
ba90: 62 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20  be removed from 
baa0: 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20  future versions 
bab0: 6f 66 20 53 51 4c 69 74 65 2e 0a 20 20 20 20 43  of SQLite..    C
bac0: 6f 6e 73 69 64 65 72 20 75 73 69 6e 67 20 74 68  onsider using th
bad0: 65 20 3c 62 3e 73 71 6c 69 74 65 5f 63 68 61 6e  e <b>sqlite_chan
bae0: 67 65 73 28 29 3c 2f 62 3e 20 41 50 49 20 66 75  ges()</b> API fu
baf0: 6e 63 74 69 6f 6e 20 69 6e 73 74 65 61 64 2e 3c  nction instead.<
bb00: 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70  /p></li>..<li><p
bb10: 3e 3c 62 3e 50 52 41 47 4d 41 20 64 61 74 61 62  ><b>PRAGMA datab
bb20: 61 73 65 5f 6c 69 73 74 3b 3c 2f 62 3e 3c 2f 70  ase_list;</b></p
bb30: 3e 0a 20 20 20 20 3c 70 3e 46 6f 72 20 65 61 63  >.    <p>For eac
bb40: 68 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65 2c  h open database,
bb50: 20 69 6e 76 6f 6b 65 20 74 68 65 20 63 61 6c 6c   invoke the call
bb60: 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 6f 6e  back function on
bb70: 63 65 20 77 69 74 68 0a 20 20 20 20 69 6e 66 6f  ce with.    info
bb80: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68  rmation about th
bb90: 61 74 20 64 61 74 61 62 61 73 65 2e 20 20 41 72  at database.  Ar
bba0: 67 75 6d 65 6e 74 73 20 69 6e 63 6c 75 64 65 20  guments include 
bbb0: 74 68 65 20 69 6e 64 65 78 20 61 6e 64 20 0a 20  the index and . 
bbc0: 20 20 20 74 68 65 20 6e 61 6d 65 20 74 68 65 20     the name the 
bbd0: 64 61 74 62 61 73 65 20 77 61 73 20 61 74 74 61  datbase was atta
bbe0: 63 68 65 64 20 77 69 74 68 2e 20 20 54 68 65 20  ched with.  The 
bbf0: 66 69 72 73 74 20 72 6f 77 20 77 69 6c 6c 20 62  first row will b
bc00: 65 20 66 6f 72 20 0a 20 20 20 20 74 68 65 20 6d  e for .    the m
bc10: 61 69 6e 20 64 61 74 61 62 61 73 65 2e 20 20 54  ain database.  T
bc20: 68 65 20 73 65 63 6f 6e 64 20 72 6f 77 20 77 69  he second row wi
bc30: 6c 6c 20 62 65 20 66 6f 72 20 74 68 65 20 64 61  ll be for the da
bc40: 74 61 62 61 73 65 20 75 73 65 64 20 74 6f 20 0a  tabase used to .
bc50: 20 20 20 20 73 74 6f 72 65 20 74 65 6d 70 6f 72      store tempor
bc60: 61 72 79 20 74 61 62 6c 65 73 2e 3c 2f 70 3e 3c  ary tables.</p><
bc70: 2f 6c 69 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 70  /li>..<a name="p
bc80: 72 61 67 6d 61 5f 64 65 66 61 75 6c 74 5f 63 61  ragma_default_ca
bc90: 63 68 65 5f 73 69 7a 65 22 3e 3c 2f 61 3e 0a 3c  che_size"></a>.<
bca0: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
bcb0: 64 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69  default_cache_si
bcc0: 7a 65 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50  ze;.       <br>P
bcd0: 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 63 61  RAGMA default_ca
bce0: 63 68 65 5f 73 69 7a 65 20 3d 20 3c 2f 62 3e 3c  che_size = </b><
bcf0: 69 3e 4e 75 6d 62 65 72 2d 6f 66 2d 70 61 67 65  i>Number-of-page
bd00: 73 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70  s</i><b>;</b></p
bd10: 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20 6f  >.    <p>Query o
bd20: 72 20 63 68 61 6e 67 65 20 74 68 65 20 6d 61 78  r change the max
bd30: 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 64  imum number of d
bd40: 61 74 61 62 61 73 65 20 64 69 73 6b 20 70 61 67  atabase disk pag
bd50: 65 73 20 74 68 61 74 20 53 51 4c 69 74 65 0a 20  es that SQLite. 
bd60: 20 20 20 77 69 6c 6c 20 68 6f 6c 64 20 69 6e 20     will hold in 
bd70: 6d 65 6d 6f 72 79 20 61 74 20 6f 6e 63 65 2e 20  memory at once. 
bd80: 20 45 61 63 68 20 70 61 67 65 20 75 73 65 73 20   Each page uses 
bd90: 31 4b 20 6f 6e 20 64 69 73 6b 20 61 6e 64 20 61  1K on disk and a
bda0: 62 6f 75 74 20 31 2e 35 4b 20 69 6e 20 6d 65 6d  bout 1.5K in mem
bdb0: 6f 72 79 2e 0a 20 20 20 20 54 68 69 73 20 70 72  ory..    This pr
bdc0: 61 67 6d 61 20 77 6f 72 6b 73 20 6c 69 6b 65 20  agma works like 
bdd0: 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 70 72  the <a href="#pr
bde0: 61 67 6d 61 5f 63 61 63 68 65 5f 73 69 7a 65 22  agma_cache_size"
bdf0: 3e 3c 62 3e 63 61 63 68 65 5f 73 69 7a 65 3c 2f  ><b>cache_size</
be00: 62 3e 3c 2f 61 3e 20 0a 20 20 20 20 70 72 61 67  b></a> .    prag
be10: 6d 61 20 77 69 74 68 20 74 68 65 20 61 64 64 69  ma with the addi
be20: 74 69 6f 6e 61 6c 0a 20 20 20 20 66 65 61 74 75  tional.    featu
be30: 72 65 20 74 68 61 74 20 69 74 20 63 68 61 6e 67  re that it chang
be40: 65 73 20 74 68 65 20 63 61 63 68 65 20 73 69 7a  es the cache siz
be50: 65 20 70 65 72 73 69 73 74 65 6e 74 6c 79 2e 20  e persistently. 
be60: 20 57 69 74 68 20 74 68 69 73 20 70 72 61 67 6d   With this pragm
be70: 61 2c 0a 20 20 20 20 79 6f 75 20 63 61 6e 20 73  a,.    you can s
be80: 65 74 20 74 68 65 20 63 61 63 68 65 20 73 69 7a  et the cache siz
be90: 65 20 6f 6e 63 65 20 61 6e 64 20 74 68 61 74 20  e once and that 
bea0: 73 65 74 74 69 6e 67 20 69 73 20 72 65 74 61 69  setting is retai
beb0: 6e 65 64 20 61 6e 64 20 72 65 75 73 65 64 0a 20  ned and reused. 
bec0: 20 20 20 65 76 65 72 79 74 69 6d 65 20 79 6f 75     everytime you
bed0: 20 72 65 6f 70 65 6e 20 74 68 65 20 64 61 74 61   reopen the data
bee0: 62 61 73 65 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a  base.</p></li>..
bef0: 3c 61 20 6e 61 6d 65 3d 22 70 72 61 67 6d 61 5f  <a name="pragma_
bf00: 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72 6f 6e  default_synchron
bf10: 6f 75 73 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e 3c 70  ous"></a>.<li><p
bf20: 3e 3c 62 3e 50 52 41 47 4d 41 20 64 65 66 61 75  ><b>PRAGMA defau
bf30: 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 3b 0a  lt_synchronous;.
bf40: 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d         <br>PRAGM
bf50: 41 20 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72  A default_synchr
bf60: 6f 6e 6f 75 73 20 3d 20 46 55 4c 4c 3b 20 3c 2f  onous = FULL; </
bf70: 62 3e 28 32 29 3c 62 3e 0a 20 20 20 20 20 20 20  b>(2)<b>.       
bf80: 3c 62 72 3e 50 52 41 47 4d 41 20 64 65 66 61 75  <br>PRAGMA defau
bf90: 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d  lt_synchronous =
bfa0: 20 4e 4f 52 4d 41 4c 3b 20 3c 2f 62 3e 28 31 29   NORMAL; </b>(1)
bfb0: 3c 62 3e 0a 20 20 20 20 20 20 20 3c 62 72 3e 50  <b>.       <br>P
bfc0: 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 73 79  RAGMA default_sy
bfd0: 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 4f 46 46 3b  nchronous = OFF;
bfe0: 20 3c 2f 62 3e 28 30 29 3c 2f 70 3e 0a 20 20 20   </b>(0)</p>.   
bff0: 20 3c 70 3e 51 75 65 72 79 20 6f 72 20 63 68 61   <p>Query or cha
c000: 6e 67 65 20 74 68 65 20 73 65 74 74 69 6e 67 20  nge the setting 
c010: 6f 66 20 74 68 65 20 22 73 79 6e 63 68 72 6f 6e  of the "synchron
c020: 6f 75 73 22 20 66 6c 61 67 20 69 6e 0a 20 20 20  ous" flag in.   
c030: 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20   the database.  
c040: 54 68 65 20 66 69 72 73 74 20 28 71 75 65 72 79  The first (query
c050: 29 20 66 6f 72 6d 20 77 69 6c 6c 20 72 65 74 75  ) form will retu
c060: 72 6e 20 74 68 65 20 73 65 74 74 69 6e 67 20 61  rn the setting a
c070: 73 20 61 6e 20 0a 20 20 20 20 69 6e 74 65 67 65  s an .    intege
c080: 72 2e 20 20 57 68 65 6e 20 73 79 6e 63 68 72 6f  r.  When synchro
c090: 6e 6f 75 73 20 69 73 20 46 55 4c 4c 20 28 32 29  nous is FULL (2)
c0a0: 2c 20 74 68 65 20 53 51 4c 69 74 65 20 64 61 74  , the SQLite dat
c0b0: 61 62 61 73 65 20 65 6e 67 69 6e 65 20 77 69 6c  abase engine wil
c0c0: 6c 0a 20 20 20 20 70 61 75 73 65 20 61 74 20 63  l.    pause at c
c0d0: 72 69 74 69 63 61 6c 20 6d 6f 6d 65 6e 74 73 20  ritical moments 
c0e0: 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61  to make sure tha
c0f0: 74 20 64 61 74 61 20 68 61 73 20 61 63 74 75 61  t data has actua
c100: 6c 6c 79 20 62 65 65 6e 20 0a 20 20 20 20 77 72  lly been .    wr
c110: 69 74 74 65 6e 20 74 6f 20 74 68 65 20 64 69 73  itten to the dis
c120: 6b 20 73 75 72 66 61 63 65 20 62 65 66 6f 72 65  k surface before
c130: 20 63 6f 6e 74 69 6e 75 69 6e 67 2e 20 20 54 68   continuing.  Th
c140: 69 73 20 65 6e 73 75 72 65 73 20 74 68 61 74 20  is ensures that 
c150: 69 66 0a 20 20 20 20 74 68 65 20 6f 70 65 72 61  if.    the opera
c160: 74 69 6e 67 20 73 79 73 74 65 6d 20 63 72 61 73  ting system cras
c170: 68 65 73 20 6f 72 20 69 66 20 74 68 65 72 65 20  hes or if there 
c180: 69 73 20 61 20 70 6f 77 65 72 20 66 61 69 6c 75  is a power failu
c190: 72 65 2c 20 74 68 65 20 64 61 74 61 62 61 73 65  re, the database
c1a0: 0a 20 20 20 20 77 69 6c 6c 20 62 65 20 75 6e 63  .    will be unc
c1b0: 6f 72 72 75 70 74 65 64 20 61 66 74 65 72 20 72  orrupted after r
c1c0: 65 62 6f 6f 74 69 6e 67 2e 20 20 46 55 4c 4c 20  ebooting.  FULL 
c1d0: 73 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73 20 76  synchronous is v
c1e0: 65 72 79 20 0a 20 20 20 20 73 61 66 65 2c 20 62  ery .    safe, b
c1f0: 75 74 20 69 74 20 69 73 20 61 6c 73 6f 20 73 6c  ut it is also sl
c200: 6f 77 2e 20 20 0a 20 20 20 20 57 68 65 6e 20 73  ow.  .    When s
c210: 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73 20 4e 4f  ynchronous is NO
c220: 52 4d 41 4c 20 28 31 2c 20 74 68 65 20 64 65 66  RMAL (1, the def
c230: 61 75 6c 74 29 2c 20 74 68 65 20 53 51 4c 69 74  ault), the SQLit
c240: 65 20 64 61 74 61 62 61 73 65 0a 20 20 20 20 65  e database.    e
c250: 6e 67 69 6e 65 20 77 69 6c 6c 20 73 74 69 6c 6c  ngine will still
c260: 20 70 61 75 73 65 20 61 74 20 74 68 65 20 6d 6f   pause at the mo
c270: 73 74 20 63 72 69 74 69 63 61 6c 20 6d 6f 6d 65  st critical mome
c280: 6e 74 73 2c 20 62 75 74 20 6c 65 73 73 20 6f 66  nts, but less of
c290: 74 65 6e 0a 20 20 20 20 74 68 61 6e 20 69 6e 20  ten.    than in 
c2a0: 46 55 4c 4c 20 6d 6f 64 65 2e 20 20 54 68 65 72  FULL mode.  Ther
c2b0: 65 20 69 73 20 61 20 76 65 72 79 20 73 6d 61 6c  e is a very smal
c2c0: 6c 20 28 74 68 6f 75 67 68 20 6e 6f 6e 2d 7a 65  l (though non-ze
c2d0: 72 6f 29 20 63 68 61 6e 63 65 20 74 68 61 74 0a  ro) chance that.
c2e0: 20 20 20 20 61 20 70 6f 77 65 72 20 66 61 69 6c      a power fail
c2f0: 75 72 65 20 61 74 20 6a 75 73 74 20 74 68 65 20  ure at just the 
c300: 77 72 6f 6e 67 20 74 69 6d 65 20 63 6f 75 6c 64  wrong time could
c310: 20 63 6f 72 72 75 70 74 20 74 68 65 20 64 61 74   corrupt the dat
c320: 61 62 61 73 65 20 69 6e 0a 20 20 20 20 4e 4f 52  abase in.    NOR
c330: 4d 41 4c 20 6d 6f 64 65 2e 20 20 42 75 74 20 69  MAL mode.  But i
c340: 6e 20 70 72 61 63 74 69 63 65 2c 20 79 6f 75 20  n practice, you 
c350: 61 72 65 20 6d 6f 72 65 20 6c 69 6b 65 6c 79 20  are more likely 
c360: 74 6f 20 73 75 66 66 65 72 0a 20 20 20 20 61 20  to suffer.    a 
c370: 63 61 74 61 73 74 72 6f 70 68 69 63 20 64 69 73  catastrophic dis
c380: 6b 20 66 61 69 6c 75 72 65 20 6f 72 20 73 6f 6d  k failure or som
c390: 65 20 6f 74 68 65 72 20 75 6e 72 65 63 6f 76 65  e other unrecove
c3a0: 72 61 62 6c 65 20 68 61 72 64 77 61 72 65 0a 20  rable hardware. 
c3b0: 20 20 20 66 61 75 6c 74 2e 20 20 53 6f 20 4e 4f     fault.  So NO
c3c0: 52 4d 41 4c 20 69 73 20 74 68 65 20 64 65 66 61  RMAL is the defa
c3d0: 75 6c 74 20 6d 6f 64 65 2e 0a 20 20 20 20 57 69  ult mode..    Wi
c3e0: 74 68 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 4f  th synchronous O
c3f0: 46 46 20 28 30 29 2c 20 53 51 4c 69 74 65 20 63  FF (0), SQLite c
c400: 6f 6e 74 69 6e 75 65 73 20 77 69 74 68 6f 75 74  ontinues without
c410: 20 70 61 75 73 69 6e 67 0a 20 20 20 20 61 73 20   pausing.    as 
c420: 73 6f 6f 6e 20 61 73 20 69 74 20 68 61 73 20 68  soon as it has h
c430: 61 6e 64 65 64 20 64 61 74 61 20 6f 66 66 20 74  anded data off t
c440: 6f 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20  o the operating 
c450: 73 79 73 74 65 6d 2e 0a 20 20 20 20 49 66 20 74  system..    If t
c460: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 72  he application r
c470: 75 6e 6e 69 6e 67 20 53 51 4c 69 74 65 20 63 72  unning SQLite cr
c480: 61 73 68 65 73 2c 20 74 68 65 20 64 61 74 61 20  ashes, the data 
c490: 77 69 6c 6c 20 62 65 20 73 61 66 65 2c 20 62 75  will be safe, bu
c4a0: 74 0a 20 20 20 20 74 68 65 20 64 61 74 61 62 61  t.    the databa
c4b0: 73 65 20 6d 69 67 68 74 20 62 65 63 6f 6d 65 20  se might become 
c4c0: 63 6f 72 72 75 70 74 65 64 20 69 66 20 74 68 65  corrupted if the
c4d0: 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
c4e0: 6d 0a 20 20 20 20 63 72 61 73 68 65 73 20 6f 72  m.    crashes or
c4f0: 20 74 68 65 20 63 6f 6d 70 75 74 65 72 20 6c 6f   the computer lo
c500: 73 65 73 20 70 6f 77 65 72 20 62 65 66 6f 72 65  ses power before
c510: 20 74 68 61 74 20 64 61 74 61 20 68 61 73 20 62   that data has b
c520: 65 65 6e 20 77 72 69 74 74 65 6e 0a 20 20 20 20  een written.    
c530: 74 6f 20 74 68 65 20 64 69 73 6b 20 73 75 72 66  to the disk surf
c540: 61 63 65 2e 20 20 4f 6e 20 74 68 65 20 6f 74 68  ace.  On the oth
c550: 65 72 20 68 61 6e 64 2c 20 73 6f 6d 65 0a 20 20  er hand, some.  
c560: 20 20 6f 70 65 72 61 74 69 6f 6e 73 20 61 72 65    operations are
c570: 20 61 73 20 6d 75 63 68 20 61 73 20 35 30 20 6f   as much as 50 o
c580: 72 20 6d 6f 72 65 20 74 69 6d 65 73 20 66 61 73  r more times fas
c590: 74 65 72 20 77 69 74 68 20 73 79 6e 63 68 72 6f  ter with synchro
c5a0: 6e 6f 75 73 20 4f 46 46 2e 0a 20 20 20 20 3c 2f  nous OFF..    </
c5b0: 70 3e 0a 20 20 20 20 3c 70 3e 54 68 69 73 20 70  p>.    <p>This p
c5c0: 72 61 67 6d 61 20 63 68 61 6e 67 65 73 20 74 68  ragma changes th
c5d0: 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 6d 6f  e synchronous mo
c5e0: 64 65 20 70 65 72 73 69 73 74 65 6e 74 6c 79 2e  de persistently.
c5f0: 20 20 4f 6e 63 65 20 63 68 61 6e 67 65 64 2c 0a    Once changed,.
c600: 20 20 20 20 74 68 65 20 6d 6f 64 65 20 73 74 61      the mode sta
c610: 79 73 20 61 73 20 73 65 74 20 65 76 65 6e 20 69  ys as set even i
c620: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  f the database i
c630: 73 20 63 6c 6f 73 65 64 20 61 6e 64 20 72 65 6f  s closed and reo
c640: 70 65 6e 65 64 2e 20 20 54 68 65 0a 20 20 20 20  pened.  The.    
c650: 3c 61 20 68 72 65 66 3d 22 23 70 72 61 67 6d 61  <a href="#pragma
c660: 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 22 3e 3c 62  _synchronous"><b
c670: 3e 73 79 6e 63 68 72 6f 6e 6f 75 73 3c 2f 62 3e  >synchronous</b>
c680: 3c 2f 61 3e 20 70 72 61 67 6d 61 20 64 6f 65 73  </a> pragma does
c690: 20 74 68 65 20 73 61 6d 65 20 0a 20 20 20 20 74   the same .    t
c6a0: 68 69 6e 67 20 62 75 74 20 6f 6e 6c 79 20 61 70  hing but only ap
c6b0: 70 6c 69 65 73 20 74 68 65 20 73 65 74 74 69 6e  plies the settin
c6c0: 67 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74  g to the current
c6d0: 20 73 65 73 73 69 6f 6e 2e 3c 2f 70 3e 3c 2f 6c   session.</p></l
c6e0: 69 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 70 72 61  i>..<a name="pra
c6f0: 67 6d 61 5f 64 65 66 61 75 6c 74 5f 74 65 6d 70  gma_default_temp
c700: 5f 73 74 6f 72 65 22 3e 3c 2f 61 3e 0a 3c 6c 69  _store"></a>.<li
c710: 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 64 65  ><p><b>PRAGMA de
c720: 66 61 75 6c 74 5f 74 65 6d 70 5f 73 74 6f 72 65  fault_temp_store
c730: 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41  ;.       <br>PRA
c740: 47 4d 41 20 64 65 66 61 75 6c 74 5f 74 65 6d 70  GMA default_temp
c750: 5f 73 74 6f 72 65 20 3d 20 44 45 46 41 55 4c 54  _store = DEFAULT
c760: 3b 20 3c 2f 62 3e 28 30 29 3c 62 3e 0a 20 20 20  ; </b>(0)<b>.   
c770: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 64      <br>PRAGMA d
c780: 65 66 61 75 6c 74 5f 74 65 6d 70 5f 73 74 6f 72  efault_temp_stor
c790: 65 20 3d 20 4d 45 4d 4f 52 59 3b 20 3c 2f 62 3e  e = MEMORY; </b>
c7a0: 28 32 29 3c 62 3e 0a 20 20 20 20 20 20 20 3c 62  (2)<b>.       <b
c7b0: 72 3e 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74  r>PRAGMA default
c7c0: 5f 74 65 6d 70 5f 73 74 6f 72 65 20 3d 20 46 49  _temp_store = FI
c7d0: 4c 45 3b 3c 2f 62 3e 20 28 31 29 3c 2f 70 3e 0a  LE;</b> (1)</p>.
c7e0: 20 20 20 20 3c 70 3e 51 75 65 72 79 20 6f 72 20      <p>Query or 
c7f0: 63 68 61 6e 67 65 20 74 68 65 20 73 65 74 74 69  change the setti
c800: 6e 67 20 6f 66 20 74 68 65 20 22 74 65 6d 70 5f  ng of the "temp_
c810: 73 74 6f 72 65 22 20 66 6c 61 67 20 73 74 6f 72  store" flag stor
c820: 65 64 20 69 6e 0a 20 20 20 20 74 68 65 20 64 61  ed in.    the da
c830: 74 61 62 61 73 65 2e 20 20 57 68 65 6e 20 74 65  tabase.  When te
c840: 6d 70 5f 73 74 6f 72 65 20 69 73 20 44 45 46 41  mp_store is DEFA
c850: 55 4c 54 20 28 30 29 2c 20 74 68 65 20 63 6f 6d  ULT (0), the com
c860: 70 69 6c 65 2d 74 69 6d 65 20 64 65 66 61 75 6c  pile-time defaul
c870: 74 20 0a 20 20 20 20 69 73 20 75 73 65 64 20 66  t .    is used f
c880: 6f 72 20 74 68 65 20 74 65 6d 70 6f 72 61 72 79  or the temporary
c890: 20 64 61 74 61 62 61 73 65 2e 20 20 57 68 65 6e   database.  When
c8a0: 20 74 65 6d 70 5f 73 74 6f 72 65 20 69 73 20 4d   temp_store is M
c8b0: 45 4d 4f 52 59 20 28 32 29 2c 20 61 6e 20 0a 20  EMORY (2), an . 
c8c0: 20 20 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74     in-memory dat
c8d0: 61 62 61 73 65 20 69 73 20 75 73 65 64 2e 20 20  abase is used.  
c8e0: 57 68 65 6e 20 74 65 6d 70 5f 73 74 6f 72 65 20  When temp_store 
c8f0: 69 73 20 46 49 4c 45 20 28 31 29 2c 20 61 20 74  is FILE (1), a t
c900: 65 6d 70 6f 72 61 72 79 20 0a 20 20 20 20 64 61  emporary .    da
c910: 74 61 62 61 73 65 20 66 69 6c 65 20 6f 6e 20 64  tabase file on d
c920: 69 73 6b 20 77 69 6c 6c 20 62 65 20 75 73 65 64  isk will be used
c930: 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 69 74 20  .  Note that it 
c940: 69 73 20 70 6f 73 73 69 62 6c 65 20 66 6f 72 20  is possible for 
c950: 0a 20 20 20 20 74 68 65 20 6c 69 62 72 61 72 79  .    the library
c960: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
c970: 74 69 6f 6e 73 20 74 6f 20 6f 76 65 72 72 69 64  tions to overrid
c980: 65 20 74 68 69 73 20 73 65 74 74 69 6e 67 2e 20  e this setting. 
c990: 20 4f 6e 63 65 20 0a 20 20 20 20 74 68 65 20 74   Once .    the t
c9a0: 65 6d 70 6f 72 61 72 79 20 64 61 74 61 62 61 73  emporary databas
c9b0: 65 20 69 73 20 69 6e 20 75 73 65 2c 20 69 74 73  e is in use, its
c9c0: 20 6c 6f 63 61 74 69 6f 6e 20 63 61 6e 6e 6f 74   location cannot
c9d0: 20 62 65 20 63 68 61 6e 67 65 64 2e 3c 2f 70 3e   be changed.</p>
c9e0: 0a 0a 20 20 20 20 3c 70 3e 54 68 69 73 20 70 72  ..    <p>This pr
c9f0: 61 67 6d 61 20 63 68 61 6e 67 65 73 20 74 68 65  agma changes the
ca00: 20 74 65 6d 70 5f 73 74 6f 72 65 20 6d 6f 64 65   temp_store mode
ca10: 20 70 65 72 73 69 73 74 65 6e 74 6c 79 2e 20 20   persistently.  
ca20: 4f 6e 63 65 20 63 68 61 6e 67 65 64 2c 0a 20 20  Once changed,.  
ca30: 20 20 74 68 65 20 6d 6f 64 65 20 73 74 61 79 73    the mode stays
ca40: 20 61 73 20 73 65 74 20 65 76 65 6e 20 69 66 20   as set even if 
ca50: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
ca60: 63 6c 6f 73 65 64 20 61 6e 64 20 72 65 6f 70 65  closed and reope
ca70: 6e 65 64 2e 20 20 54 68 65 0a 20 20 20 20 3c 61  ned.  The.    <a
ca80: 20 68 72 65 66 3d 22 23 70 72 61 67 6d 61 5f 74   href="#pragma_t
ca90: 65 6d 70 5f 73 74 6f 72 65 22 3e 3c 62 3e 74 65  emp_store"><b>te
caa0: 6d 70 5f 73 74 6f 72 65 3c 2f 62 3e 3c 2f 61 3e  mp_store</b></a>
cab0: 20 70 72 61 67 6d 61 20 64 6f 65 73 20 74 68 65   pragma does the
cac0: 20 73 61 6d 65 20 0a 20 20 20 20 74 68 69 6e 67   same .    thing
cad0: 20 62 75 74 20 6f 6e 6c 79 20 61 70 70 6c 69 65   but only applie
cae0: 73 20 74 68 65 20 73 65 74 74 69 6e 67 20 74 6f  s the setting to
caf0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65 73   the current ses
cb00: 73 69 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a  sion.</p></li>..
cb10: 3c 61 20 6e 61 6d 65 3d 22 70 72 61 67 6d 61 5f  <a name="pragma_
cb20: 65 6d 70 74 79 5f 72 65 73 75 6c 74 5f 63 61 6c  empty_result_cal
cb30: 6c 62 61 63 6b 73 22 3e 3c 2f 61 3e 0a 3c 6c 69  lbacks"></a>.<li
cb40: 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 65 6d  ><p><b>PRAGMA em
cb50: 70 74 79 5f 72 65 73 75 6c 74 5f 63 61 6c 6c 62  pty_result_callb
cb60: 61 63 6b 73 20 3d 20 4f 4e 3b 20 3c 2f 62 3e 28  acks = ON; </b>(
cb70: 31 29 3c 62 3e 0a 20 20 20 20 20 20 20 3c 62 72  1)<b>.       <br
cb80: 3e 50 52 41 47 4d 41 20 65 6d 70 74 79 5f 72 65  >PRAGMA empty_re
cb90: 73 75 6c 74 5f 63 61 6c 6c 62 61 63 6b 73 20 3d  sult_callbacks =
cba0: 20 4f 46 46 3b 3c 2f 62 3e 20 28 30 29 3c 2f 70   OFF;</b> (0)</p
cbb0: 3e 0a 20 20 20 20 3c 70 3e 57 68 65 6e 20 6f 6e  >.    <p>When on
cbc0: 2c 20 74 68 65 20 45 4d 50 54 59 5f 52 45 53 55  , the EMPTY_RESU
cbd0: 4c 54 5f 43 41 4c 4c 42 41 43 4b 53 20 70 72 61  LT_CALLBACKS pra
cbe0: 67 6d 61 20 63 61 75 73 65 73 20 74 68 65 20 63  gma causes the c
cbf0: 61 6c 6c 62 61 63 6b 0a 20 20 20 20 66 75 6e 63  allback.    func
cc00: 74 69 6f 6e 20 74 6f 20 62 65 20 69 6e 76 6f 6b  tion to be invok
cc10: 65 64 20 6f 6e 63 65 20 66 6f 72 20 65 61 63 68  ed once for each
cc20: 20 71 75 65 72 79 20 74 68 61 74 20 68 61 73 20   query that has 
cc30: 61 6e 20 65 6d 70 74 79 20 72 65 73 75 6c 74 0a  an empty result.
cc40: 20 20 20 20 73 65 74 2e 20 20 54 68 65 20 74 68      set.  The th
cc50: 69 72 64 20 22 3c 62 3e 61 72 67 76 3c 2f 62 3e  ird "<b>argv</b>
cc60: 22 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74  " parameter to t
cc70: 68 65 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 73  he callback is s
cc80: 65 74 20 74 6f 20 4e 55 4c 4c 0a 20 20 20 20 62  et to NULL.    b
cc90: 65 63 61 75 73 65 20 74 68 65 72 65 20 69 73 20  ecause there is 
cca0: 6e 6f 20 64 61 74 61 20 74 6f 20 72 65 70 6f 72  no data to repor
ccb0: 74 2e 20 20 42 75 74 20 74 68 65 20 73 65 63 6f  t.  But the seco
ccc0: 6e 64 20 22 3c 62 3e 61 72 67 63 3c 2f 62 3e 22  nd "<b>argc</b>"
ccd0: 20 61 6e 64 0a 20 20 20 20 66 6f 75 72 74 68 20   and.    fourth 
cce0: 22 3c 62 3e 63 6f 6c 75 6d 6e 4e 61 6d 65 73 3c  "<b>columnNames<
ccf0: 2f 62 3e 22 20 70 61 72 61 6d 65 74 65 72 73 20  /b>" parameters 
cd00: 61 72 65 20 76 61 6c 69 64 20 61 6e 64 20 63 61  are valid and ca
cd10: 6e 20 62 65 20 75 73 65 64 20 74 6f 0a 20 20 20  n be used to.   
cd20: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6e   determine the n
cd30: 75 6d 62 65 72 20 61 6e 64 20 6e 61 6d 65 73 20  umber and names 
cd40: 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 74  of the columns t
cd50: 68 61 74 20 77 6f 75 6c 64 20 68 61 76 65 20 62  hat would have b
cd60: 65 65 6e 20 69 6e 0a 20 20 20 20 74 68 65 20 72  een in.    the r
cd70: 65 73 75 6c 74 20 73 65 74 20 68 61 64 20 74 68  esult set had th
cd80: 65 20 73 65 74 20 6e 6f 74 20 62 65 65 6e 20 65  e set not been e
cd90: 6d 70 74 79 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a  mpty.</p></li>..
cda0: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
cdb0: 20 66 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d   full_column_nam
cdc0: 65 73 20 3d 20 4f 4e 3b 20 3c 2f 62 3e 28 31 29  es = ON; </b>(1)
cdd0: 3c 62 3e 0a 20 20 20 20 20 20 20 3c 62 72 3e 50  <b>.       <br>P
cde0: 52 41 47 4d 41 20 66 75 6c 6c 5f 63 6f 6c 75 6d  RAGMA full_colum
cdf0: 6e 5f 6e 61 6d 65 73 20 3d 20 4f 46 46 3b 3c 2f  n_names = OFF;</
ce00: 62 3e 20 28 30 29 3c 2f 70 3e 0a 20 20 20 20 3c  b> (0)</p>.    <
ce10: 70 3e 54 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d  p>The column nam
ce20: 65 73 20 72 65 70 6f 72 74 65 64 20 69 6e 20 61  es reported in a
ce30: 6e 20 53 51 4c 69 74 65 20 63 61 6c 6c 62 61 63  n SQLite callbac
ce40: 6b 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 6a  k are normally j
ce50: 75 73 74 0a 20 20 20 20 74 68 65 20 6e 61 6d 65  ust.    the name
ce60: 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69   of the column i
ce70: 74 73 65 6c 66 2c 20 65 78 63 65 70 74 20 66 6f  tself, except fo
ce80: 72 20 6a 6f 69 6e 73 20 77 68 65 6e 20 22 54 41  r joins when "TA
ce90: 42 4c 45 2e 43 4f 4c 55 4d 4e 22 0a 20 20 20 20  BLE.COLUMN".    
cea0: 69 73 20 75 73 65 64 2e 20 20 42 75 74 20 77 68  is used.  But wh
ceb0: 65 6e 20 66 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f 6e  en full_column_n
cec0: 61 6d 65 73 20 69 73 20 74 75 72 6e 65 64 20 6f  ames is turned o
ced0: 6e 2c 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 73 20  n, column names 
cee0: 61 72 65 0a 20 20 20 20 61 6c 77 61 79 73 20 72  are.    always r
cef0: 65 70 6f 72 74 65 64 20 61 73 20 22 54 41 42 4c  eported as "TABL
cf00: 45 2e 43 4f 4c 55 4d 4e 22 20 65 76 65 6e 20 66  E.COLUMN" even f
cf10: 6f 72 20 73 69 6d 70 6c 65 20 71 75 65 72 69 65  or simple querie
cf20: 73 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69  s.</p></li>..<li
cf30: 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 69 6e  ><p><b>PRAGMA in
cf40: 64 65 78 5f 69 6e 66 6f 28 3c 2f 62 3e 3c 69 3e  dex_info(</b><i>
cf50: 69 6e 64 65 78 2d 6e 61 6d 65 3c 2f 69 3e 3c 62  index-name</i><b
cf60: 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20  >);</b></p>.    
cf70: 3c 70 3e 46 6f 72 20 65 61 63 68 20 63 6f 6c 75  <p>For each colu
cf80: 6d 6e 20 74 68 61 74 20 74 68 65 20 6e 61 6d 65  mn that the name
cf90: 64 20 69 6e 64 65 78 20 72 65 66 65 72 65 6e 63  d index referenc
cfa0: 65 73 2c 20 69 6e 76 6f 6b 65 20 74 68 65 20 0a  es, invoke the .
cfb0: 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e      callback fun
cfc0: 63 74 69 6f 6e 0a 20 20 20 20 6f 6e 63 65 20 77  ction.    once w
cfd0: 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  ith information 
cfe0: 61 62 6f 75 74 20 74 68 61 74 20 63 6f 6c 75 6d  about that colum
cff0: 6e 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65  n, including the
d000: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2c 0a 20 20   column name,.  
d010: 20 20 61 6e 64 20 74 68 65 20 63 6f 6c 75 6d 6e    and the column
d020: 20 6e 75 6d 62 65 72 2e 3c 2f 70 3e 3c 2f 6c 69   number.</p></li
d030: 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41  >..<li><p><b>PRA
d040: 47 4d 41 20 69 6e 64 65 78 5f 6c 69 73 74 28 3c  GMA index_list(<
d050: 2f 62 3e 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65  /b><i>table-name
d060: 3c 2f 69 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f 70  </i><b>);</b></p
d070: 3e 0a 20 20 20 20 3c 70 3e 46 6f 72 20 65 61 63  >.    <p>For eac
d080: 68 20 69 6e 64 65 78 20 6f 6e 20 74 68 65 20 6e  h index on the n
d090: 61 6d 65 64 20 74 61 62 6c 65 2c 20 69 6e 76 6f  amed table, invo
d0a0: 6b 65 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  ke the callback 
d0b0: 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 6f 6e 63  function.    onc
d0c0: 65 20 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 69  e with informati
d0d0: 6f 6e 20 61 62 6f 75 74 20 74 68 61 74 20 69 6e  on about that in
d0e0: 64 65 78 2e 20 20 41 72 67 75 6d 65 6e 74 73 20  dex.  Arguments 
d0f0: 69 6e 63 6c 75 64 65 20 74 68 65 0a 20 20 20 20  include the.    
d100: 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 61  index name and a
d110: 20 66 6c 61 67 20 74 6f 20 69 6e 64 69 63 61 74   flag to indicat
d120: 65 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  e whether or not
d130: 20 74 68 65 20 69 6e 64 65 78 20 6d 75 73 74 20   the index must 
d140: 62 65 0a 20 20 20 20 75 6e 69 71 75 65 2e 3c 2f  be.    unique.</
d150: 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e  p></li>..<li><p>
d160: 3c 62 3e 50 52 41 47 4d 41 20 69 6e 74 65 67 72  <b>PRAGMA integr
d170: 69 74 79 5f 63 68 65 63 6b 3b 3c 2f 62 3e 3c 2f  ity_check;</b></
d180: 70 3e 0a 20 20 20 20 3c 70 3e 54 68 65 20 63 6f  p>.    <p>The co
d190: 6d 6d 61 6e 64 20 64 6f 65 73 20 61 6e 20 69 6e  mmand does an in
d1a0: 74 65 67 72 69 74 79 20 63 68 65 63 6b 20 6f 66  tegrity check of
d1b0: 20 74 68 65 20 65 6e 74 69 72 65 20 64 61 74 61   the entire data
d1c0: 62 61 73 65 2e 20 20 49 74 0a 20 20 20 20 6c 6f  base.  It.    lo
d1d0: 6f 6b 73 20 66 6f 72 20 6f 75 74 2d 6f 66 2d 6f  oks for out-of-o
d1e0: 72 64 65 72 20 72 65 63 6f 72 64 73 2c 20 6d 69  rder records, mi
d1f0: 73 73 69 6e 67 20 70 61 67 65 73 2c 20 6d 61 6c  ssing pages, mal
d200: 66 6f 72 6d 65 64 20 72 65 63 6f 72 64 73 2c 20  formed records, 
d210: 61 6e 64 0a 20 20 20 20 63 6f 72 72 75 70 74 20  and.    corrupt 
d220: 69 6e 64 69 63 65 73 2e 0a 20 20 20 20 49 66 20  indices..    If 
d230: 61 6e 79 20 70 72 6f 62 6c 65 6d 73 20 61 72 65  any problems are
d240: 20 66 6f 75 6e 64 2c 20 74 68 65 6e 20 61 20 73   found, then a s
d250: 69 6e 67 6c 65 20 73 74 72 69 6e 67 20 69 73 20  ingle string is 
d260: 72 65 74 75 72 6e 65 64 20 77 68 69 63 68 20 69  returned which i
d270: 73 0a 20 20 20 20 61 20 64 65 73 63 72 69 70 74  s.    a descript
d280: 69 6f 6e 20 6f 66 20 61 6c 6c 20 70 72 6f 62 6c  ion of all probl
d290: 65 6d 73 2e 20 20 49 66 20 65 76 65 72 79 74 68  ems.  If everyth
d2a0: 69 6e 67 20 69 73 20 69 6e 20 6f 72 64 65 72 2c  ing is in order,
d2b0: 20 22 6f 6b 22 20 69 73 0a 20 20 20 20 72 65 74   "ok" is.    ret
d2c0: 75 72 6e 65 64 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a  urned.</p></li>.
d2d0: 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d  .<li><p><b>PRAGM
d2e0: 41 20 70 61 72 73 65 72 5f 74 72 61 63 65 20 3d  A parser_trace =
d2f0: 20 4f 4e 3b 20 3c 2f 62 3e 28 31 29 3c 62 3e 0a   ON; </b>(1)<b>.
d300: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 70      <br>PRAGMA p
d310: 61 72 73 65 72 5f 74 72 61 63 65 20 3d 20 4f 46  arser_trace = OF
d320: 46 3b 3c 2f 62 3e 20 28 30 29 3c 2f 70 3e 0a 20  F;</b> (0)</p>. 
d330: 20 20 20 3c 70 3e 54 75 72 6e 20 74 72 61 63 69     <p>Turn traci
d340: 6e 67 20 6f 66 20 74 68 65 20 53 51 4c 20 70 61  ng of the SQL pa
d350: 72 73 65 72 20 69 6e 73 69 64 65 20 6f 66 20 74  rser inside of t
d360: 68 65 0a 20 20 20 20 53 51 4c 69 74 65 20 6c 69  he.    SQLite li
d370: 62 72 61 72 79 20 6f 6e 20 61 6e 64 20 6f 66 66  brary on and off
d380: 2e 20 20 54 68 69 73 20 69 73 20 75 73 65 64 20  .  This is used 
d390: 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 0a 20  for debugging.. 
d3a0: 20 20 20 54 68 69 73 20 6f 6e 6c 79 20 77 6f 72     This only wor
d3b0: 6b 73 20 69 66 20 74 68 65 20 6c 69 62 72 61 72  ks if the librar
d3c0: 79 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69  y is compiled wi
d3d0: 74 68 6f 75 74 20 74 68 65 20 4e 44 45 42 55 47  thout the NDEBUG
d3e0: 20 6d 61 63 72 6f 2e 0a 20 20 20 20 3c 2f 70 3e   macro..    </p>
d3f0: 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22  </li>..<a name="
d400: 70 72 61 67 6d 61 5f 73 68 6f 77 5f 64 61 74 61  pragma_show_data
d410: 74 79 70 65 73 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e  types"></a>.<li>
d420: 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 73 68 6f  <p><b>PRAGMA sho
d430: 77 5f 64 61 74 61 74 79 70 65 73 20 3d 20 4f 4e  w_datatypes = ON
d440: 3b 20 3c 2f 62 3e 28 31 29 3c 62 3e 0a 20 20 20  ; </b>(1)<b>.   
d450: 20 3c 62 72 3e 50 52 41 47 4d 41 20 73 68 6f 77   <br>PRAGMA show
d460: 5f 64 61 74 61 74 79 70 65 73 20 3d 20 4f 46 46  _datatypes = OFF
d470: 3b 3c 2f 62 3e 20 28 30 29 3c 2f 70 3e 0a 20 20  ;</b> (0)</p>.  
d480: 20 20 3c 70 3e 57 68 65 6e 20 74 75 72 6e 65 64    <p>When turned
d490: 20 6f 6e 2c 20 74 68 65 20 53 48 4f 57 5f 44 41   on, the SHOW_DA
d4a0: 54 41 54 59 50 45 53 20 70 72 61 67 6d 61 20 63  TATYPES pragma c
d4b0: 61 75 73 65 73 20 65 78 74 72 61 20 65 6e 74 72  auses extra entr
d4c0: 69 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 20  ies containing. 
d4d0: 20 20 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20     the names of 
d4e0: 3c 61 20 68 72 65 66 3d 22 64 61 74 61 74 79 70  <a href="datatyp
d4f0: 65 73 2e 68 74 6d 6c 22 3e 64 61 74 61 74 79 70  es.html">datatyp
d500: 65 73 3c 2f 61 3e 20 6f 66 20 63 6f 6c 75 6d 6e  es</a> of column
d510: 73 20 74 6f 20 62 65 0a 20 20 20 20 61 70 70 65  s to be.    appe
d520: 6e 64 65 64 20 74 6f 20 74 68 65 20 34 74 68 20  nded to the 4th 
d530: 28 22 63 6f 6c 75 6d 6e 4e 61 6d 65 73 22 29 20  ("columnNames") 
d540: 61 72 67 75 6d 65 6e 74 20 74 6f 20 3c 62 3e 73  argument to <b>s
d550: 71 6c 69 74 65 5f 65 78 65 63 28 29 3c 2f 62 3e  qlite_exec()</b>
d560: 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 73 2e 20  .    callbacks. 
d570: 20 57 68 65 6e 0a 20 20 20 20 74 75 72 6e 65 64   When.    turned
d580: 20 6f 66 66 2c 20 74 68 65 20 34 74 68 20 61 72   off, the 4th ar
d590: 67 75 6d 65 6e 74 20 74 6f 20 63 61 6c 6c 62 61  gument to callba
d5a0: 63 6b 73 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 6c  cks contains onl
d5b0: 79 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d  y the column nam
d5c0: 65 73 2e 0a 20 20 20 20 54 68 65 20 64 61 74 61  es..    The data
d5d0: 74 79 70 65 20 66 6f 72 20 74 61 62 6c 65 20 63  type for table c
d5e0: 6f 6c 75 6d 6e 73 20 69 73 20 74 61 6b 65 6e 20  olumns is taken 
d5f0: 66 72 6f 6d 20 74 68 65 20 43 52 45 41 54 45 20  from the CREATE 
d600: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 0a  TABLE statement.
d610: 20 20 20 20 74 68 61 74 20 64 65 66 69 6e 65 73      that defines
d620: 20 74 68 65 20 74 61 62 6c 65 2e 20 20 43 6f 6c   the table.  Col
d630: 75 6d 6e 73 20 77 69 74 68 20 61 6e 20 75 6e 73  umns with an uns
d640: 70 65 63 69 66 69 65 64 20 64 61 74 61 74 79 70  pecified datatyp
d650: 65 20 68 61 76 65 20 61 0a 20 20 20 20 64 61 74  e have a.    dat
d660: 61 74 79 70 65 20 6f 66 20 22 4e 55 4d 45 52 49  atype of "NUMERI
d670: 43 22 20 61 6e 64 20 74 68 65 20 72 65 73 75 6c  C" and the resul
d680: 74 73 20 6f 66 20 65 78 70 72 65 73 73 69 6f 6e  ts of expression
d690: 20 68 61 76 65 20 61 20 64 61 74 61 74 79 70 65   have a datatype
d6a0: 20 6f 66 0a 20 20 20 20 65 69 74 68 65 72 20 22   of.    either "
d6b0: 54 45 58 54 22 20 6f 72 20 22 4e 55 4d 45 52 49  TEXT" or "NUMERI
d6c0: 43 22 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  C" depending on 
d6d0: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a  the expression..
d6e0: 20 20 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e      The followin
d6f0: 67 20 63 68 61 72 74 20 69 6c 6c 75 73 74 72 61  g chart illustra
d700: 74 65 73 20 74 68 65 20 64 69 66 66 65 72 65 6e  tes the differen
d710: 63 65 20 66 6f 72 20 74 68 65 20 71 75 65 72 79  ce for the query
d720: 0a 20 20 20 20 22 53 45 4c 45 43 54 20 27 78 79  .    "SELECT 'xy
d730: 7a 7a 79 27 2c 20 35 2c 20 4e 55 4c 4c 20 41 53  zzy', 5, NULL AS
d740: 20 65 6d 70 74 79 20 22 3a 3c 2f 70 3e 0a 0a 20   empty ":</p>.. 
d750: 20 20 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c     <blockquote><
d760: 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 3e 0a  table border=0>.
d770: 20 20 20 20 3c 74 72 3e 3c 74 68 3e 73 68 6f 77      <tr><th>show
d780: 5f 64 61 74 61 74 79 70 65 73 3d 4f 46 46 3c 2f  _datatypes=OFF</
d790: 74 68 3e 3c 74 68 20 77 69 64 74 68 3d 33 30 3e  th><th width=30>
d7a0: 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 20 3c 74  </th>.        <t
d7b0: 68 3e 73 68 6f 77 5f 64 61 74 61 74 79 70 65 73  h>show_datatypes
d7c0: 3d 4f 4e 3c 2f 74 68 3e 3c 2f 74 72 3e 0a 20 20  =ON</th></tr>.  
d7d0: 20 20 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e    <tr><td valign
d7e0: 3d 22 74 6f 70 22 3e 0a 20 20 20 20 20 20 20 61  ="top">.       a
d7f0: 7a 43 6f 6c 5b 30 5d 20 3d 20 22 78 79 7a 7a 79  zCol[0] = "xyzzy
d800: 22 3b 3c 62 72 3e 0a 20 20 20 20 20 20 20 61 7a  ";<br>.       az
d810: 43 6f 6c 5b 31 5d 20 3d 20 22 35 22 3b 3c 62 72  Col[1] = "5";<br
d820: 3e 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b 32  >.       azCol[2
d830: 5d 20 3d 20 22 65 6d 70 74 79 22 3b 3c 62 72 3e  ] = "empty";<br>
d840: 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b 33 5d  .       azCol[3]
d850: 20 3d 20 30 3b 0a 20 20 20 20 3c 2f 74 64 3e 3c   = 0;.    </td><
d860: 74 64 3e 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69  td></td><td vali
d870: 67 6e 3d 22 74 6f 70 22 3e 0a 20 20 20 20 20 20  gn="top">.      
d880: 20 61 7a 43 6f 6c 5b 30 5d 20 3d 20 22 78 79 7a   azCol[0] = "xyz
d890: 7a 79 22 3b 3c 62 72 3e 0a 20 20 20 20 20 20 20  zy";<br>.       
d8a0: 61 7a 43 6f 6c 5b 31 5d 20 3d 20 22 35 22 3b 3c  azCol[1] = "5";<
d8b0: 62 72 3e 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c  br>.       azCol
d8c0: 5b 32 5d 20 3d 20 22 65 6d 70 74 79 22 3b 3c 62  [2] = "empty";<b
d8d0: 72 3e 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b  r>.       azCol[
d8e0: 33 5d 20 3d 20 22 54 45 58 54 22 3b 3c 62 72 3e  3] = "TEXT";<br>
d8f0: 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b 34 5d  .       azCol[4]
d900: 20 3d 20 22 4e 55 4d 45 52 49 43 22 3b 3c 62 72   = "NUMERIC";<br
d910: 3e 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b 35  >.       azCol[5
d920: 5d 20 3d 20 22 54 45 58 54 22 3b 3c 62 72 3e 0a  ] = "TEXT";<br>.
d930: 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b 36 5d 20         azCol[6] 
d940: 3d 20 30 3b 0a 20 20 20 20 3c 2f 74 64 3e 3c 2f  = 0;.    </td></
d950: 74 61 62 6c 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f  table></blockquo
d960: 74 65 3e 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e 61 6d  te></li>..<a nam
d970: 65 3d 22 70 72 61 67 6d 61 5f 73 79 6e 63 68 72  e="pragma_synchr
d980: 6f 6e 6f 75 73 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e  onous"></a>.<li>
d990: 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 73 79 6e  <p><b>PRAGMA syn
d9a0: 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 20 20 20 20  chronous;.      
d9b0: 20 3c 62 72 3e 50 52 41 47 4d 41 20 73 79 6e 63   <br>PRAGMA sync
d9c0: 68 72 6f 6e 6f 75 73 20 3d 20 46 55 4c 4c 3b 20  hronous = FULL; 
d9d0: 3c 2f 62 3e 28 32 29 3c 62 3e 0a 20 20 20 20 20  </b>(2)<b>.     
d9e0: 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 73 79 6e    <br>PRAGMA syn
d9f0: 63 68 72 6f 6e 6f 75 73 20 3d 20 4e 4f 52 4d 41  chronous = NORMA
da00: 4c 3b 20 3c 2f 62 3e 28 31 29 3c 62 3e 0a 20 20  L; </b>(1)<b>.  
da10: 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20       <br>PRAGMA 
da20: 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 4f 46  synchronous = OF
da30: 46 3b 3c 2f 62 3e 20 28 30 29 3c 2f 70 3e 0a 20  F;</b> (0)</p>. 
da40: 20 20 20 3c 70 3e 51 75 65 72 79 20 6f 72 20 63     <p>Query or c
da50: 68 61 6e 67 65 20 74 68 65 20 73 65 74 74 69 6e  hange the settin
da60: 67 20 6f 66 20 74 68 65 20 22 73 79 6e 63 68 72  g of the "synchr
da70: 6f 6e 6f 75 73 22 20 66 6c 61 67 20 61 66 66 65  onous" flag affe
da80: 63 74 69 6e 67 0a 20 20 20 20 74 68 65 20 64 61  cting.    the da
da90: 74 61 62 61 73 65 20 66 6f 72 20 74 68 65 20 64  tabase for the d
daa0: 75 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63  uration of the c
dab0: 75 72 72 65 6e 74 20 64 61 74 61 62 61 73 65 20  urrent database 
dac0: 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 20 20 20 20  connection..    
dad0: 54 68 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20  The synchronous 
dae0: 66 6c 61 67 20 72 65 76 65 72 74 73 20 74 6f 20  flag reverts to 
daf0: 69 74 73 20 64 65 66 61 75 6c 74 20 76 61 6c 75  its default valu
db00: 65 20 77 68 65 6e 20 74 68 65 20 64 61 74 61 62  e when the datab
db10: 61 73 65 0a 20 20 20 20 69 73 20 63 6c 6f 73 65  ase.    is close
db20: 64 20 61 6e 64 20 72 65 6f 70 65 6e 65 64 2e 20  d and reopened. 
db30: 20 46 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   For additional 
db40: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 74  information on t
db50: 68 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73 0a 20  he synchronous. 
db60: 20 20 20 66 6c 61 67 2c 20 73 65 65 20 74 68 65     flag, see the
db70: 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20   description of 
db80: 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 70 72  the <a href="#pr
db90: 61 67 6d 61 5f 64 65 66 61 75 6c 74 5f 73 79 6e  agma_default_syn
dba0: 63 68 72 6f 6e 6f 75 73 22 3e 0a 20 20 20 20 3c  chronous">.    <
dbb0: 62 3e 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72  b>default_synchr
dbc0: 6f 6e 6f 75 73 3c 2f 62 3e 3c 2f 61 3e 20 70 72  onous</b></a> pr
dbd0: 61 67 6d 61 2e 3c 2f 70 3e 0a 20 20 20 20 3c 2f  agma.</p>.    </
dbe0: 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50  li>..<li><p><b>P
dbf0: 52 41 47 4d 41 20 74 61 62 6c 65 5f 69 6e 66 6f  RAGMA table_info
dc00: 28 3c 2f 62 3e 3c 69 3e 74 61 62 6c 65 2d 6e 61  (</b><i>table-na
dc10: 6d 65 3c 2f 69 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c  me</i><b>);</b><
dc20: 2f 70 3e 0a 20 20 20 20 3c 70 3e 46 6f 72 20 65  /p>.    <p>For e
dc30: 61 63 68 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68  ach column in th
dc40: 65 20 6e 61 6d 65 64 20 74 61 62 6c 65 2c 20 69  e named table, i
dc50: 6e 76 6f 6b 65 20 74 68 65 20 63 61 6c 6c 62 61  nvoke the callba
dc60: 63 6b 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20  ck function.    
dc70: 6f 6e 63 65 20 77 69 74 68 20 69 6e 66 6f 72 6d  once with inform
dc80: 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 61 74  ation about that
dc90: 20 63 6f 6c 75 6d 6e 2c 20 69 6e 63 6c 75 64 69   column, includi
dca0: 6e 67 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61  ng the column na
dcb0: 6d 65 2c 0a 20 20 20 20 64 61 74 61 20 74 79 70  me,.    data typ
dcc0: 65 2c 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  e, whether or no
dcd0: 74 20 74 68 65 20 63 6f 6c 75 6d 6e 20 63 61 6e  t the column can
dce0: 20 62 65 20 4e 55 4c 4c 2c 20 61 6e 64 20 74 68   be NULL, and th
dcf0: 65 20 64 65 66 61 75 6c 74 0a 20 20 20 20 76 61  e default.    va
dd00: 6c 75 65 20 66 6f 72 20 74 68 65 20 63 6f 6c 75  lue for the colu
dd10: 6d 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 61  mn.</p></li>..<a
dd20: 20 6e 61 6d 65 3d 22 70 72 61 67 6d 61 5f 74 65   name="pragma_te
dd30: 6d 70 5f 73 74 6f 72 65 22 3e 3c 2f 61 3e 0a 3c  mp_store"></a>.<
dd40: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
dd50: 74 65 6d 70 5f 73 74 6f 72 65 3b 0a 20 20 20 20  temp_store;.    
dd60: 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 74 65     <br>PRAGMA te
dd70: 6d 70 5f 73 74 6f 72 65 20 3d 20 44 45 46 41 55  mp_store = DEFAU
dd80: 4c 54 3b 20 3c 2f 62 3e 28 30 29 3c 62 3e 0a 20  LT; </b>(0)<b>. 
dd90: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
dda0: 20 74 65 6d 70 5f 73 74 6f 72 65 20 3d 20 4d 45   temp_store = ME
ddb0: 4d 4f 52 59 3b 20 3c 2f 62 3e 28 32 29 3c 62 3e  MORY; </b>(2)<b>
ddc0: 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47  .       <br>PRAG
ddd0: 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 20 3d 20  MA temp_store = 
dde0: 46 49 4c 45 3b 3c 2f 62 3e 20 28 31 29 3c 2f 70  FILE;</b> (1)</p
ddf0: 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20 6f  >.    <p>Query o
de00: 72 20 63 68 61 6e 67 65 20 74 68 65 20 73 65 74  r change the set
de10: 74 69 6e 67 20 6f 66 20 74 68 65 20 22 74 65 6d  ting of the "tem
de20: 70 5f 73 74 6f 72 65 22 20 66 6c 61 67 20 61 66  p_store" flag af
de30: 66 65 63 74 69 6e 67 0a 20 20 20 20 74 68 65 20  fecting.    the 
de40: 64 61 74 61 62 61 73 65 20 66 6f 72 20 74 68 65  database for the
de50: 20 64 75 72 61 74 69 6f 6e 20 6f 66 20 74 68 65   duration of the
de60: 20 63 75 72 72 65 6e 74 20 64 61 74 61 62 61 73   current databas
de70: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 20 20  e connection..  
de80: 20 20 54 68 65 20 74 65 6d 70 5f 73 74 6f 72 65    The temp_store
de90: 20 66 6c 61 67 20 72 65 76 65 72 74 73 20 74 6f   flag reverts to
dea0: 20 69 74 73 20 64 65 66 61 75 6c 74 20 76 61 6c   its default val
deb0: 75 65 20 77 68 65 6e 20 74 68 65 20 64 61 74 61  ue when the data
dec0: 62 61 73 65 0a 20 20 20 20 69 73 20 63 6c 6f 73  base.    is clos
ded0: 65 64 20 61 6e 64 20 72 65 6f 70 65 6e 65 64 2e  ed and reopened.
dee0: 20 20 46 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c    For additional
def0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20   information on 
df00: 74 68 65 20 74 65 6d 70 5f 73 74 6f 72 65 0a 20  the temp_store. 
df10: 20 20 20 66 6c 61 67 2c 20 73 65 65 20 74 68 65     flag, see the
df20: 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20   description of 
df30: 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 70 72  the <a href="#pr
df40: 61 67 6d 61 5f 64 65 66 61 75 6c 74 5f 74 65 6d  agma_default_tem
df50: 70 5f 73 74 6f 72 65 22 3e 0a 20 20 20 20 3c 62  p_store">.    <b
df60: 3e 64 65 66 61 75 6c 74 5f 74 65 6d 70 5f 73 74  >default_temp_st
df70: 6f 72 65 3c 2f 62 3e 3c 2f 61 3e 20 70 72 61 67  ore</b></a> prag
df80: 6d 61 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 69  ma.  Note that i
df90: 74 20 69 73 20 70 6f 73 73 69 62 6c 65 20 66 6f  t is possible fo
dfa0: 72 20 0a 20 20 20 20 74 68 65 20 6c 69 62 72 61  r .    the libra
dfb0: 72 79 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  ry compile-time 
dfc0: 6f 70 74 69 6f 6e 73 20 74 6f 20 6f 76 65 72 72  options to overr
dfd0: 69 64 65 20 74 68 69 73 20 73 65 74 74 69 6e 67  ide this setting
dfe0: 2e 20 3c 2f 70 3e 0a 20 20 20 20 3c 2f 6c 69 3e  . </p>.    </li>
dff0: 0a 0a 3c 61 20 6e 61 6d 65 3d 22 70 72 61 67 6d  ..<a name="pragm
e000: 61 5f 76 64 62 65 5f 74 72 61 63 65 22 3e 3c 2f  a_vdbe_trace"></
e010: 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41  a>.<li><p><b>PRA
e020: 47 4d 41 20 76 64 62 65 5f 74 72 61 63 65 20 3d  GMA vdbe_trace =
e030: 20 4f 4e 3b 20 3c 2f 62 3e 28 31 29 3c 62 3e 0a   ON; </b>(1)<b>.
e040: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 76      <br>PRAGMA v
e050: 64 62 65 5f 74 72 61 63 65 20 3d 20 4f 46 46 3b  dbe_trace = OFF;
e060: 3c 2f 62 3e 20 28 30 29 3c 2f 70 3e 0a 20 20 20  </b> (0)</p>.   
e070: 20 3c 70 3e 54 75 72 6e 20 74 72 61 63 69 6e 67   <p>Turn tracing
e080: 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20   of the virtual 
e090: 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20  database engine 
e0a0: 69 6e 73 69 64 65 20 6f 66 20 74 68 65 0a 20 20  inside of the.  
e0b0: 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79    SQLite library
e0c0: 20 6f 6e 20 61 6e 64 20 6f 66 66 2e 20 20 54 68   on and off.  Th
e0d0: 69 73 20 69 73 20 75 73 65 64 20 66 6f 72 20 64  is is used for d
e0e0: 65 62 75 67 67 69 6e 67 2e 20 20 53 65 65 20 74  ebugging.  See t
e0f0: 68 65 20 0a 20 20 20 20 3c 61 20 68 72 65 66 3d  he .    <a href=
e100: 22 76 64 62 65 2e 68 74 6d 6c 23 74 72 61 63 65  "vdbe.html#trace
e110: 22 3e 56 44 42 45 20 64 6f 63 75 6d 65 6e 74 61  ">VDBE documenta
e120: 74 69 6f 6e 3c 2f 61 3e 20 66 6f 72 20 6d 6f 72  tion</a> for mor
e130: 65 20 0a 20 20 20 20 69 6e 66 6f 72 6d 61 74 69  e .    informati
e140: 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75  on.</p></li>.</u
e150: 6c 3e 0a 0a 3c 70 3e 4e 6f 20 65 72 72 6f 72 20  l>..<p>No error 
e160: 6d 65 73 73 61 67 65 20 69 73 20 67 65 6e 65 72  message is gener
e170: 61 74 65 64 20 69 66 20 61 6e 20 75 6e 6b 6e 6f  ated if an unkno
e180: 77 6e 20 70 72 61 67 6d 61 20 69 73 20 69 73 73  wn pragma is iss
e190: 75 65 64 2e 0a 55 6e 6b 6e 6f 77 6e 20 70 72 61  ued..Unknown pra
e1a0: 67 6d 61 73 20 61 72 65 20 69 67 6e 6f 72 65 64  gmas are ignored
e1b0: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
e1c0: 6e 20 52 45 50 4c 41 43 45 20 72 65 70 6c 61 63  n REPLACE replac
e1d0: 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  e..Syntax {sql-s
e1e0: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 52 45 50 4c  tatement} {.REPL
e1f0: 41 43 45 20 49 4e 54 4f 20 5b 3c 64 61 74 61 62  ACE INTO [<datab
e200: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
e210: 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63 6f  ble-name> [( <co
e220: 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20 56 41  lumn-list> )] VA
e230: 4c 55 45 53 20 28 20 3c 76 61 6c 75 65 2d 6c 69  LUES ( <value-li
e240: 73 74 3e 20 29 20 7c 0a 52 45 50 4c 41 43 45 20  st> ) |.REPLACE 
e250: 49 4e 54 4f 20 5b 3c 64 61 74 61 62 61 73 65 2d  INTO [<database-
e260: 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d  name> .] <table-
e270: 6e 61 6d 65 3e 20 5b 28 20 3c 63 6f 6c 75 6d 6e  name> [( <column
e280: 2d 6c 69 73 74 3e 20 29 5d 20 3c 73 65 6c 65 63  -list> )] <selec
e290: 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a  t-statement>.}..
e2a0: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 52 45  puts {.<p>The RE
e2b0: 50 4c 41 43 45 20 63 6f 6d 6d 61 6e 64 20 69 73  PLACE command is
e2c0: 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74 68   an alias for th
e2d0: 65 20 22 49 4e 53 45 52 54 20 4f 52 20 52 45 50  e "INSERT OR REP
e2e0: 4c 41 43 45 22 20 76 61 72 69 61 6e 74 0a 6f 66  LACE" variant.of
e2f0: 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 69   the <a href="#i
e300: 6e 73 65 72 74 22 3e 49 4e 53 45 52 54 3c 2f 61  nsert">INSERT</a
e310: 3e 20 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73  > command.  This
e320: 20 61 6c 69 61 73 20 69 73 20 70 72 6f 76 69 64   alias is provid
e330: 65 64 20 66 6f 72 0a 63 6f 6d 70 61 74 69 62 69  ed for.compatibi
e340: 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51 4c 2e  lity with MySQL.
e350: 20 20 53 65 65 20 74 68 65 20 0a 3c 61 20 68 72    See the .<a hr
e360: 65 66 3d 22 23 69 6e 73 65 72 74 22 3e 49 4e 53  ef="#insert">INS
e370: 45 52 54 3c 2f 61 3e 20 63 6f 6d 6d 61 6e 64 20  ERT</a> command 
e380: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
e390: 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a 69 6e 66  r additional.inf
e3a0: 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 20 20 0a  ormation.</p>  .
e3b0: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 53 45 4c 45  }...Section SELE
e3c0: 43 54 20 73 65 6c 65 63 74 0a 0a 53 79 6e 74 61  CT select..Synta
e3d0: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
e3e0: 7d 20 7b 0a 53 45 4c 45 43 54 20 5b 41 4c 4c 20  } {.SELECT [ALL 
e3f0: 7c 20 44 49 53 54 49 4e 43 54 5d 20 3c 72 65 73  | DISTINCT] <res
e400: 75 6c 74 3e 20 5b 46 52 4f 4d 20 3c 74 61 62 6c  ult> [FROM <tabl
e410: 65 2d 6c 69 73 74 3e 5d 0a 5b 57 48 45 52 45 20  e-list>].[WHERE 
e420: 3c 65 78 70 72 3e 5d 0a 5b 47 52 4f 55 50 20 42  <expr>].[GROUP B
e430: 59 20 3c 65 78 70 72 2d 6c 69 73 74 3e 5d 0a 5b  Y <expr-list>].[
e440: 48 41 56 49 4e 47 20 3c 65 78 70 72 3e 5d 0a 5b  HAVING <expr>].[
e450: 3c 63 6f 6d 70 6f 75 6e 64 2d 6f 70 3e 20 3c 73  <compound-op> <s
e460: 65 6c 65 63 74 3e 5d 2a 0a 5b 4f 52 44 45 52 20  elect>]*.[ORDER 
e470: 42 59 20 3c 73 6f 72 74 2d 65 78 70 72 2d 6c 69  BY <sort-expr-li
e480: 73 74 3e 5d 0a 5b 4c 49 4d 49 54 20 3c 69 6e 74  st>].[LIMIT <int
e490: 65 67 65 72 3e 20 5b 4c 50 20 4f 46 46 53 45 54  eger> [LP OFFSET
e4a0: 20 7c 20 2c 20 52 50 20 3c 69 6e 74 65 67 65 72   | , RP <integer
e4b0: 3e 5d 5d 0a 7d 20 7b 72 65 73 75 6c 74 7d 20 7b  >]].} {result} {
e4c0: 0a 3c 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 3e  .<result-column>
e4d0: 20 5b 2c 20 3c 72 65 73 75 6c 74 2d 63 6f 6c 75   [, <result-colu
e4e0: 6d 6e 3e 5d 2a 0a 7d 20 7b 72 65 73 75 6c 74 2d  mn>]*.} {result-
e4f0: 63 6f 6c 75 6d 6e 7d 20 7b 0a 53 54 41 52 20 7c  column} {.STAR |
e500: 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20   <table-name> . 
e510: 53 54 41 52 20 7c 20 3c 65 78 70 72 3e 20 5b 20  STAR | <expr> [ 
e520: 5b 41 53 5d 20 3c 73 74 72 69 6e 67 3e 20 5d 0a  [AS] <string> ].
e530: 7d 20 7b 74 61 62 6c 65 2d 6c 69 73 74 7d 20 7b  } {table-list} {
e540: 0a 3c 74 61 62 6c 65 3e 20 5b 3c 6a 6f 69 6e 2d  .<table> [<join-
e550: 6f 70 3e 20 3c 74 61 62 6c 65 3e 20 3c 6a 6f 69  op> <table> <joi
e560: 6e 2d 61 72 67 73 3e 5d 2a 0a 7d 20 7b 74 61 62  n-args>]*.} {tab
e570: 6c 65 7d 20 7b 0a 3c 74 61 62 6c 65 2d 6e 61 6d  le} {.<table-nam
e580: 65 3e 20 5b 41 53 20 3c 61 6c 69 61 73 3e 5d 20  e> [AS <alias>] 
e590: 7c 0a 28 20 3c 73 65 6c 65 63 74 3e 20 29 20 5b  |.( <select> ) [
e5a0: 41 53 20 3c 61 6c 69 61 73 3e 5d 0a 7d 20 7b 6a  AS <alias>].} {j
e5b0: 6f 69 6e 2d 6f 70 7d 20 7b 0a 2c 20 7c 20 5b 4e  oin-op} {., | [N
e5c0: 41 54 55 52 41 4c 5d 20 5b 4c 45 46 54 20 7c 20  ATURAL] [LEFT | 
e5d0: 52 49 47 48 54 20 7c 20 46 55 4c 4c 5d 20 5b 4f  RIGHT | FULL] [O
e5e0: 55 54 45 52 20 7c 20 49 4e 4e 45 52 20 7c 20 43  UTER | INNER | C
e5f0: 52 4f 53 53 5d 20 4a 4f 49 4e 0a 7d 20 7b 6a 6f  ROSS] JOIN.} {jo
e600: 69 6e 2d 61 72 67 73 7d 20 7b 0a 5b 4f 4e 20 3c  in-args} {.[ON <
e610: 65 78 70 72 3e 5d 20 5b 55 53 49 4e 47 20 28 20  expr>] [USING ( 
e620: 3c 69 64 2d 6c 69 73 74 3e 20 29 5d 0a 7d 20 7b  <id-list> )].} {
e630: 73 6f 72 74 2d 65 78 70 72 2d 6c 69 73 74 7d 20  sort-expr-list} 
e640: 7b 0a 3c 65 78 70 72 3e 20 5b 3c 73 6f 72 74 2d  {.<expr> [<sort-
e650: 6f 72 64 65 72 3e 5d 20 5b 2c 20 3c 65 78 70 72  order>] [, <expr
e660: 3e 20 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e 5d  > [<sort-order>]
e670: 5d 2a 0a 7d 20 7b 73 6f 72 74 2d 6f 72 64 65 72  ]*.} {sort-order
e680: 7d 20 7b 0a 41 53 43 20 7c 20 44 45 53 43 0a 7d  } {.ASC | DESC.}
e690: 20 7b 63 6f 6d 70 6f 75 6e 64 5f 6f 70 7d 20 7b   {compound_op} {
e6a0: 0a 55 4e 49 4f 4e 20 7c 20 55 4e 49 4f 4e 20 41  .UNION | UNION A
e6b0: 4c 4c 20 7c 20 49 4e 54 45 52 53 45 43 54 20 7c  LL | INTERSECT |
e6c0: 20 45 58 43 45 50 54 0a 7d 0a 0a 70 75 74 73 20   EXCEPT.}..puts 
e6d0: 7b 0a 3c 70 3e 54 68 65 20 53 45 4c 45 43 54 20  {.<p>The SELECT 
e6e0: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73 65  statement is use
e6f0: 64 20 74 6f 20 71 75 65 72 79 20 74 68 65 20 64  d to query the d
e700: 61 74 61 62 61 73 65 2e 20 20 54 68 65 0a 72 65  atabase.  The.re
e710: 73 75 6c 74 20 6f 66 20 61 20 53 45 4c 45 43 54  sult of a SELECT
e720: 20 69 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65   is zero or more
e730: 20 72 6f 77 73 20 6f 66 20 64 61 74 61 20 77 68   rows of data wh
e740: 65 72 65 20 65 61 63 68 20 72 6f 77 0a 68 61 73  ere each row.has
e750: 20 61 20 66 69 78 65 64 20 6e 75 6d 62 65 72 20   a fixed number 
e760: 6f 66 20 63 6f 6c 75 6d 6e 73 2e 20 20 54 68 65  of columns.  The
e770: 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
e780: 6e 73 20 69 6e 20 74 68 65 0a 72 65 73 75 6c 74  ns in the.result
e790: 20 69 73 20 73 70 65 63 69 66 69 65 64 20 62 79   is specified by
e7a0: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
e7b0: 6c 69 73 74 20 69 6e 20 62 65 74 77 65 65 6e 20  list in between 
e7c0: 74 68 65 0a 53 45 4c 45 43 54 20 61 6e 64 20 46  the.SELECT and F
e7d0: 52 4f 4d 20 6b 65 79 77 6f 72 64 73 2e 20 20 41  ROM keywords.  A
e7e0: 6e 79 20 61 72 62 69 74 72 61 72 79 20 65 78 70  ny arbitrary exp
e7f0: 72 65 73 73 69 6f 6e 20 63 61 6e 20 62 65 20 75  ression can be u
e800: 73 65 64 0a 61 73 20 61 20 72 65 73 75 6c 74 2e  sed.as a result.
e810: 20 20 49 66 20 61 20 72 65 73 75 6c 74 20 65 78    If a result ex
e820: 70 72 65 73 73 69 6f 6e 20 69 73 20 7d 0a 70 75  pression is }.pu
e830: 74 73 20 22 5b 4f 70 65 72 61 74 6f 72 20 2a 5d  ts "[Operator *]
e840: 20 74 68 65 6e 20 61 6c 6c 20 63 6f 6c 75 6d 6e   then all column
e850: 73 20 6f 66 20 61 6c 6c 20 74 61 62 6c 65 73 20  s of all tables 
e860: 61 72 65 20 73 75 62 73 74 69 74 75 74 65 64 22  are substituted"
e870: 0a 70 75 74 73 20 7b 66 6f 72 20 74 68 61 74 20  .puts {for that 
e880: 6f 6e 65 20 65 78 70 72 65 73 73 69 6f 6e 2e 20  one expression. 
e890: 20 49 66 20 74 68 65 20 65 78 70 72 65 73 73 69   If the expressi
e8a0: 6f 6e 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f  on is the name o
e8b0: 66 7d 0a 70 75 74 73 20 22 61 20 74 61 62 6c 65  f}.puts "a table
e8c0: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 5b 4f 70   followed by [Op
e8d0: 65 72 61 74 6f 72 20 2e 2a 5d 20 74 68 65 6e 20  erator .*] then 
e8e0: 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 6c  the result is al
e8f0: 6c 20 63 6f 6c 75 6d 6e 73 22 0a 70 75 74 73 20  l columns".puts 
e900: 7b 69 6e 20 74 68 61 74 20 6f 6e 65 20 74 61 62  {in that one tab
e910: 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  le.</p>..<p>The 
e920: 44 49 53 54 49 4e 43 54 20 6b 65 79 77 6f 72 64  DISTINCT keyword
e930: 20 63 61 75 73 65 73 20 61 20 73 75 62 73 65 74   causes a subset
e940: 20 6f 66 20 72 65 73 75 6c 74 20 72 6f 77 73 20   of result rows 
e950: 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 2c 20  to be returned, 
e960: 0a 69 6e 20 77 68 69 63 68 20 65 61 63 68 20 72  .in which each r
e970: 65 73 75 6c 74 20 72 6f 77 20 69 73 20 64 69 66  esult row is dif
e980: 66 65 72 65 6e 74 2e 20 20 4e 55 4c 4c 20 76 61  ferent.  NULL va
e990: 6c 75 65 73 20 61 72 65 20 6e 6f 74 20 74 72 65  lues are not tre
e9a0: 61 74 65 64 20 61 73 20 0a 64 69 73 74 69 6e 63  ated as .distinc
e9b0: 74 20 66 72 6f 6d 20 65 61 63 68 6f 74 68 65 72  t from eachother
e9c0: 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 62  .  The default b
e9d0: 65 68 61 76 69 6f 72 20 69 73 20 74 68 61 74 20  ehavior is that 
e9e0: 61 6c 6c 20 72 65 73 75 6c 74 20 72 6f 77 73 20  all result rows 
e9f0: 0a 62 65 20 72 65 74 75 72 6e 65 64 2c 20 77 68  .be returned, wh
ea00: 69 63 68 20 63 61 6e 20 62 65 20 6d 61 64 65 20  ich can be made 
ea10: 65 78 70 6c 69 63 69 74 20 77 69 74 68 20 74 68  explicit with th
ea20: 65 20 6b 65 79 77 6f 72 64 20 41 4c 4c 2e 3c 2f  e keyword ALL.</
ea30: 70 3e 0a 0a 3c 70 3e 54 68 65 20 71 75 65 72 79  p>..<p>The query
ea40: 20 69 73 20 65 78 65 63 75 74 65 64 20 61 67 61   is executed aga
ea50: 69 6e 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  inst one or more
ea60: 20 74 61 62 6c 65 73 20 73 70 65 63 69 66 69 65   tables specifie
ea70: 64 20 61 66 74 65 72 0a 74 68 65 20 46 52 4f 4d  d after.the FROM
ea80: 20 6b 65 79 77 6f 72 64 2e 20 20 49 66 20 6d 75   keyword.  If mu
ea90: 6c 74 69 70 6c 65 20 74 61 62 6c 65 73 20 6e 61  ltiple tables na
eaa0: 6d 65 73 20 61 72 65 20 73 65 70 61 72 61 74 65  mes are separate
eab0: 64 20 62 79 20 63 6f 6d 6d 61 73 2c 0a 74 68 65  d by commas,.the
eac0: 6e 20 74 68 65 20 71 75 65 72 79 20 69 73 20 61  n the query is a
ead0: 67 61 69 6e 73 74 20 74 68 65 20 63 72 6f 73 73  gainst the cross
eae0: 20 6a 6f 69 6e 20 6f 66 20 74 68 65 20 76 61 72   join of the var
eaf0: 69 6f 75 73 20 74 61 62 6c 65 73 2e 0a 54 68 65  ious tables..The
eb00: 20 66 75 6c 6c 20 53 51 4c 2d 39 32 20 6a 6f 69   full SQL-92 joi
eb10: 6e 20 73 79 6e 74 61 78 20 63 61 6e 20 61 6c 73  n syntax can als
eb20: 6f 20 62 65 20 75 73 65 64 20 74 6f 20 73 70 65  o be used to spe
eb30: 63 69 66 79 20 6a 6f 69 6e 73 2e 0a 41 20 73 75  cify joins..A su
eb40: 62 2d 71 75 65 72 79 0a 69 6e 20 70 61 72 65 6e  b-query.in paren
eb50: 74 68 65 73 65 73 20 6d 61 79 20 62 65 20 73 75  theses may be su
eb60: 62 73 74 69 74 75 74 65 64 20 66 6f 72 20 61 6e  bstituted for an
eb70: 79 20 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20  y table name in 
eb80: 74 68 65 20 46 52 4f 4d 20 63 6c 61 75 73 65 2e  the FROM clause.
eb90: 0a 54 68 65 20 65 6e 74 69 72 65 20 46 52 4f 4d  .The entire FROM
eba0: 20 63 6c 61 75 73 65 20 6d 61 79 20 62 65 20 6f   clause may be o
ebb0: 6d 69 74 74 65 64 2c 20 69 6e 20 77 68 69 63 68  mitted, in which
ebc0: 20 63 61 73 65 20 74 68 65 20 72 65 73 75 6c 74   case the result
ebd0: 20 69 73 20 61 0a 73 69 6e 67 6c 65 20 72 6f 77   is a.single row
ebe0: 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 74   consisting of t
ebf0: 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65  he values of the
ec00: 20 65 78 70 72 65 73 73 69 6f 6e 20 6c 69 73 74   expression list
ec10: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 57  ..</p>..<p>The W
ec20: 48 45 52 45 20 63 6c 61 75 73 65 20 63 61 6e 20  HERE clause can 
ec30: 62 65 20 75 73 65 64 20 74 6f 20 6c 69 6d 69 74  be used to limit
ec40: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72   the number of r
ec50: 6f 77 73 20 6f 76 65 72 0a 77 68 69 63 68 20 74  ows over.which t
ec60: 68 65 20 71 75 65 72 79 20 6f 70 65 72 61 74 65  he query operate
ec70: 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 47  s.</p>..<p>The G
ec80: 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65 73 20  ROUP BY clauses 
ec90: 63 61 75 73 65 73 20 6f 6e 65 20 6f 72 20 6d 6f  causes one or mo
eca0: 72 65 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72  re rows of the r
ecb0: 65 73 75 6c 74 20 74 6f 0a 62 65 20 63 6f 6d 62  esult to.be comb
ecc0: 69 6e 65 64 20 69 6e 74 6f 20 61 20 73 69 6e 67  ined into a sing
ecd0: 6c 65 20 72 6f 77 20 6f 66 20 6f 75 74 70 75 74  le row of output
ece0: 2e 20 20 54 68 69 73 20 69 73 20 65 73 70 65 63  .  This is espec
ecf0: 69 61 6c 6c 79 20 75 73 65 66 75 6c 0a 77 68 65  ially useful.whe
ed00: 6e 20 74 68 65 20 72 65 73 75 6c 74 20 63 6f 6e  n the result con
ed10: 74 61 69 6e 73 20 61 67 67 72 65 67 61 74 65 20  tains aggregate 
ed20: 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 65 20  functions.  The 
ed30: 65 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 0a 74  expressions in.t
ed40: 68 65 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75  he GROUP BY clau
ed50: 73 65 20 64 6f 20 3c 65 6d 3e 6e 6f 74 3c 2f 65  se do <em>not</e
ed60: 6d 3e 20 68 61 76 65 20 74 6f 20 62 65 20 65 78  m> have to be ex
ed70: 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 0a 61  pressions that.a
ed80: 70 70 65 61 72 20 69 6e 20 74 68 65 20 72 65 73  ppear in the res
ed90: 75 6c 74 2e 20 20 54 68 65 20 48 41 56 49 4e 47  ult.  The HAVING
eda0: 20 63 6c 61 75 73 65 20 69 73 20 73 69 6d 69 6c   clause is simil
edb0: 61 72 20 74 6f 20 57 48 45 52 45 20 65 78 63 65  ar to WHERE exce
edc0: 70 74 0a 74 68 61 74 20 48 41 56 49 4e 47 20 61  pt.that HAVING a
edd0: 70 70 6c 69 65 73 20 61 66 74 65 72 20 67 72 6f  pplies after gro
ede0: 75 70 69 6e 67 20 68 61 73 20 6f 63 63 75 72 72  uping has occurr
edf0: 65 64 2e 20 20 54 68 65 20 48 41 56 49 4e 47 20  ed.  The HAVING 
ee00: 65 78 70 72 65 73 73 69 6f 6e 0a 6d 61 79 20 72  expression.may r
ee10: 65 66 65 72 20 74 6f 20 76 61 6c 75 65 73 2c 20  efer to values, 
ee20: 65 76 65 6e 20 61 67 67 72 65 67 61 74 65 20 66  even aggregate f
ee30: 75 6e 63 74 69 6f 6e 73 2c 20 74 68 61 74 20 61  unctions, that a
ee40: 72 65 20 6e 6f 74 20 69 6e 20 74 68 65 20 72 65  re not in the re
ee50: 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  sult.</p>..<p>Th
ee60: 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73  e ORDER BY claus
ee70: 65 20 63 61 75 73 65 73 20 74 68 65 20 6f 75 74  e causes the out
ee80: 70 75 74 20 72 6f 77 73 20 74 6f 20 62 65 20 73  put rows to be s
ee90: 6f 72 74 65 64 2e 20 20 0a 54 68 65 20 61 72 67  orted.  .The arg
eea0: 75 6d 65 6e 74 20 74 6f 20 4f 52 44 45 52 20 42  ument to ORDER B
eeb0: 59 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 65  Y is a list of e
eec0: 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 20  xpressions that 
eed0: 61 72 65 20 75 73 65 64 20 61 73 20 74 68 65 0a  are used as the.
eee0: 6b 65 79 20 66 6f 72 20 74 68 65 20 73 6f 72 74  key for the sort
eef0: 2e 20 20 54 68 65 20 65 78 70 72 65 73 73 69 6f  .  The expressio
ef00: 6e 73 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 74  ns do not have t
ef10: 6f 20 62 65 20 70 61 72 74 20 6f 66 20 74 68 65  o be part of the
ef20: 0a 72 65 73 75 6c 74 20 66 6f 72 20 61 20 73 69  .result for a si
ef30: 6d 70 6c 65 20 53 45 4c 45 43 54 2c 20 62 75 74  mple SELECT, but
ef40: 20 69 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53   in a compound S
ef50: 45 4c 45 43 54 20 65 61 63 68 20 73 6f 72 74 0a  ELECT each sort.
ef60: 65 78 70 72 65 73 73 69 6f 6e 20 6d 75 73 74 20  expression must 
ef70: 65 78 61 63 74 6c 79 20 6d 61 74 63 68 20 6f 6e  exactly match on
ef80: 65 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20  e of the result 
ef90: 63 6f 6c 75 6d 6e 73 2e 20 20 45 61 63 68 0a 73  columns.  Each.s
efa0: 6f 72 74 20 65 78 70 72 65 73 73 69 6f 6e 20 6d  ort expression m
efb0: 61 79 20 62 65 20 6f 70 74 69 6f 6e 61 6c 6c 79  ay be optionally
efc0: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 41 53 43   followed by ASC
efd0: 20 6f 72 20 44 45 53 43 20 74 6f 20 73 70 65 63   or DESC to spec
efe0: 69 66 79 0a 74 68 65 20 73 6f 72 74 20 6f 72 64  ify.the sort ord
eff0: 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  er.</p>..<p>The 
f000: 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 70 6c 61  LIMIT clause pla
f010: 63 65 73 20 61 6e 20 75 70 70 65 72 20 62 6f 75  ces an upper bou
f020: 6e 64 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72  nd on the number
f030: 20 6f 66 20 72 6f 77 73 0a 72 65 74 75 72 6e 65   of rows.returne
f040: 64 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e  d in the result.
f050: 20 20 41 20 6e 65 67 61 74 69 76 65 20 4c 49 4d    A negative LIM
f060: 49 54 20 69 6e 64 69 63 61 74 65 73 20 6e 6f 20  IT indicates no 
f070: 75 70 70 65 72 20 62 6f 75 6e 64 2e 0a 54 68 65  upper bound..The
f080: 20 6f 70 74 69 6f 6e 61 6c 20 4f 46 46 53 45 54   optional OFFSET
f090: 20 66 6f 6c 6c 6f 77 69 6e 67 20 4c 49 4d 49 54   following LIMIT
f0a0: 20 73 70 65 63 69 66 69 65 73 20 68 6f 77 20 6d   specifies how m
f0b0: 61 6e 79 0a 72 6f 77 73 20 74 6f 20 73 6b 69 70  any.rows to skip
f0c0: 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e   at the beginnin
f0d0: 67 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20  g of the result 
f0e0: 73 65 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63  set.</p>..<p>A c
f0f0: 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 69  ompound SELECT i
f100: 73 20 66 6f 72 6d 65 64 20 66 72 6f 6d 20 74 77  s formed from tw
f110: 6f 20 6f 72 20 6d 6f 72 65 20 73 69 6d 70 6c 65  o or more simple
f120: 20 53 45 4c 45 43 54 73 20 63 6f 6e 6e 65 63 74   SELECTs connect
f130: 65 64 0a 62 79 20 6f 6e 65 20 6f 66 20 74 68 65  ed.by one of the
f140: 20 6f 70 65 72 61 74 6f 72 73 20 55 4e 49 4f 4e   operators UNION
f150: 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54  , UNION ALL, INT
f160: 45 52 53 45 43 54 2c 20 6f 72 20 45 58 43 45 50  ERSECT, or EXCEP
f170: 54 2e 20 20 49 6e 0a 61 20 63 6f 6d 70 6f 75 6e  T.  In.a compoun
f180: 64 20 53 45 4c 45 43 54 2c 20 61 6c 6c 20 74 68  d SELECT, all th
f190: 65 20 63 6f 6e 73 74 69 74 75 65 6e 74 20 53 45  e constituent SE
f1a0: 4c 45 43 54 73 20 6d 75 73 74 20 73 70 65 63 69  LECTs must speci
f1b0: 66 79 20 74 68 65 0a 73 61 6d 65 20 6e 75 6d 62  fy the.same numb
f1c0: 65 72 20 6f 66 20 72 65 73 75 6c 74 20 63 6f 6c  er of result col
f1d0: 75 6d 6e 73 2e 20 20 54 68 65 72 65 20 6d 61 79  umns.  There may
f1e0: 20 62 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c   be only a singl
f1f0: 65 20 4f 52 44 45 52 20 42 59 0a 63 6c 61 75 73  e ORDER BY.claus
f200: 65 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20  e at the end of 
f210: 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c  the compound SEL
f220: 45 43 54 2e 20 20 54 68 65 20 55 4e 49 4f 4e 20  ECT.  The UNION 
f230: 61 6e 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f 70  and UNION ALL.op
f240: 65 72 61 74 6f 72 73 20 63 6f 6d 62 69 6e 65 20  erators combine 
f250: 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74  the results of t
f260: 68 65 20 53 45 4c 45 43 54 73 20 74 6f 20 74 68  he SELECTs to th
f270: 65 20 72 69 67 68 74 20 61 6e 64 20 6c 65 66 74  e right and left
f280: 20 69 6e 74 6f 0a 61 20 73 69 6e 67 6c 65 20 62   into.a single b
f290: 69 67 20 74 61 62 6c 65 2e 20 20 54 68 65 20 64  ig table.  The d
f2a0: 69 66 66 65 72 65 6e 63 65 20 69 73 20 74 68 61  ifference is tha
f2b0: 74 20 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c 20 72  t in UNION all r
f2c0: 65 73 75 6c 74 20 72 6f 77 73 0a 61 72 65 20 64  esult rows.are d
f2d0: 69 73 74 69 6e 63 74 20 77 68 65 72 65 20 69 6e  istinct where in
f2e0: 20 55 4e 49 4f 4e 20 41 4c 4c 20 74 68 65 72 65   UNION ALL there
f2f0: 20 6d 61 79 20 62 65 20 64 75 70 6c 69 63 61 74   may be duplicat
f300: 65 73 2e 0a 54 68 65 20 49 4e 54 45 52 53 45 43  es..The INTERSEC
f310: 54 20 6f 70 65 72 61 74 6f 72 20 74 61 6b 65 73  T operator takes
f320: 20 74 68 65 20 69 6e 74 65 72 73 65 63 74 69 6f   the intersectio
f330: 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 73  n of the results
f340: 20 6f 66 20 74 68 65 0a 6c 65 66 74 20 61 6e 64   of the.left and
f350: 20 72 69 67 68 74 20 53 45 4c 45 43 54 73 2e 20   right SELECTs. 
f360: 20 45 58 43 45 50 54 20 74 61 6b 65 73 20 74 68   EXCEPT takes th
f370: 65 20 72 65 73 75 6c 74 20 6f 66 20 6c 65 66 74  e result of left
f380: 20 53 45 4c 45 43 54 20 61 66 74 65 72 0a 72 65   SELECT after.re
f390: 6d 6f 76 69 6e 67 20 74 68 65 20 72 65 73 75 6c  moving the resul
f3a0: 74 73 20 6f 66 20 74 68 65 20 72 69 67 68 74 20  ts of the right 
f3b0: 53 45 4c 45 43 54 2e 20 20 57 68 65 6e 20 74 68  SELECT.  When th
f3c0: 72 65 65 20 61 72 65 20 6d 6f 72 65 20 53 45 4c  ree are more SEL
f3d0: 45 43 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63 74  ECTs.are connect
f3e0: 65 64 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f 75  ed into a compou
f3f0: 6e 64 2c 20 74 68 65 79 20 67 72 6f 75 70 20 66  nd, they group f
f400: 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 68  rom left to righ
f410: 74 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  t.</p>.}...Secti
f420: 6f 6e 20 55 50 44 41 54 45 20 75 70 64 61 74 65  on UPDATE update
f430: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
f440: 61 74 65 6d 65 6e 74 7d 20 7b 0a 55 50 44 41 54  atement} {.UPDAT
f450: 45 20 5b 20 4f 52 20 3c 63 6f 6e 66 6c 69 63 74  E [ OR <conflict
f460: 2d 61 6c 67 6f 72 69 74 68 6d 3e 20 5d 20 5b 3c  -algorithm> ] [<
f470: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e  database-name> .
f480: 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 53  ] <table-name>.S
f490: 45 54 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 20  ET <assignment> 
f4a0: 5b 2c 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 5d  [, <assignment>]
f4b0: 2a 0a 5b 57 48 45 52 45 20 3c 65 78 70 72 3e 5d  *.[WHERE <expr>]
f4c0: 0a 7d 20 7b 61 73 73 69 67 6e 6d 65 6e 74 7d 20  .} {assignment} 
f4d0: 7b 0a 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20  {.<column-name> 
f4e0: 3d 20 3c 65 78 70 72 3e 0a 7d 0a 0a 70 75 74 73  = <expr>.}..puts
f4f0: 20 7b 0a 3c 70 3e 54 68 65 20 55 50 44 41 54 45   {.<p>The UPDATE
f500: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73   statement is us
f510: 65 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65  ed to change the
f520: 20 76 61 6c 75 65 20 6f 66 20 63 6f 6c 75 6d 6e   value of column
f530: 73 20 69 6e 20 0a 73 65 6c 65 63 74 65 64 20 72  s in .selected r
f540: 6f 77 73 20 6f 66 20 61 20 74 61 62 6c 65 2e 20  ows of a table. 
f550: 20 45 61 63 68 20 61 73 73 69 67 6e 6d 65 6e 74   Each assignment
f560: 20 69 6e 20 61 6e 20 55 50 44 41 54 45 20 73 70   in an UPDATE sp
f570: 65 63 69 66 69 65 73 0a 61 20 63 6f 6c 75 6d 6e  ecifies.a column
f580: 20 6e 61 6d 65 20 74 6f 20 74 68 65 20 6c 65 66   name to the lef
f590: 74 20 6f 66 20 74 68 65 20 65 71 75 61 6c 73 20  t of the equals 
f5a0: 73 69 67 6e 20 61 6e 64 20 61 6e 20 61 72 62 69  sign and an arbi
f5b0: 74 72 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e  trary expression
f5c0: 0a 74 6f 20 74 68 65 20 72 69 67 68 74 2e 20 20  .to the right.  
f5d0: 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20  The expressions 
f5e0: 6d 61 79 20 75 73 65 20 74 68 65 20 76 61 6c 75  may use the valu
f5f0: 65 73 20 6f 66 20 6f 74 68 65 72 20 63 6f 6c 75  es of other colu
f600: 6d 6e 73 2e 0a 41 6c 6c 20 65 78 70 72 65 73 73  mns..All express
f610: 69 6f 6e 73 20 61 72 65 20 65 76 61 6c 75 61 74  ions are evaluat
f620: 65 64 20 62 65 66 6f 72 65 20 61 6e 79 20 61 73  ed before any as
f630: 73 69 67 6e 6d 65 6e 74 73 20 61 72 65 20 6d 61  signments are ma
f640: 64 65 2e 0a 41 20 57 48 45 52 45 20 63 6c 61 75  de..A WHERE clau
f650: 73 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  se can be used t
f660: 6f 20 72 65 73 74 72 69 63 74 20 77 68 69 63 68  o restrict which
f670: 20 72 6f 77 73 20 61 72 65 20 75 70 64 61 74 65   rows are update
f680: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f  d.</p>..<p>The o
f690: 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74  ptional conflict
f6a0: 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74  -clause allows t
f6b0: 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
f6c0: 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69   of an alternati
f6d0: 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  ve.constraint co
f6e0: 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
f6f0: 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75  n algorithm to u
f700: 73 65 20 64 75 72 69 6e 67 20 74 68 69 73 20 6f  se during this o
f710: 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20  ne command..See 
f720: 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c  the section titl
f730: 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e  ed.<a href="#con
f740: 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49  flict">ON CONFLI
f750: 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74  CT</a> for addit
f760: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
f770: 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  n.</p>.}...Secti
f780: 6f 6e 20 56 41 43 55 55 4d 20 76 61 63 75 75 6d  on VACUUM vacuum
f790: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
f7a0: 61 74 65 6d 65 6e 74 7d 20 7b 0a 56 41 43 55 55  atement} {.VACUU
f7b0: 4d 20 5b 3c 69 6e 64 65 78 2d 6f 72 2d 74 61 62  M [<index-or-tab
f7c0: 6c 65 2d 6e 61 6d 65 3e 5d 0a 7d 0a 0a 70 75 74  le-name>].}..put
f7d0: 73 20 7b 0a 3c 70 3e 54 68 65 20 56 41 43 55 55  s {.<p>The VACUU
f7e0: 4d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20  M command is an 
f7f0: 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69 6f 6e  SQLite extension
f800: 20 6d 6f 64 65 6c 6c 65 64 20 61 66 74 65 72 20   modelled after 
f810: 61 20 73 69 6d 69 6c 61 72 0a 63 6f 6d 6d 61 6e  a similar.comman
f820: 64 20 66 6f 75 6e 64 20 69 6e 20 50 6f 73 74 67  d found in Postg
f830: 72 65 53 51 4c 2e 20 20 49 66 20 56 41 43 55 55  reSQL.  If VACUU
f840: 4d 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 69 74  M is invoked wit
f850: 68 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 0a  h the name of a.
f860: 74 61 62 6c 65 20 6f 72 20 69 6e 64 65 78 20 74  table or index t
f870: 68 65 6e 20 69 74 20 69 73 20 73 75 70 70 6f 73  hen it is suppos
f880: 65 20 74 6f 20 63 6c 65 61 6e 20 75 70 20 74 68  e to clean up th
f890: 65 20 6e 61 6d 65 64 20 74 61 62 6c 65 20 6f 72  e named table or
f8a0: 20 69 6e 64 65 78 2e 0a 49 6e 20 76 65 72 73 69   index..In versi
f8b0: 6f 6e 20 31 2e 30 20 6f 66 20 53 51 4c 69 74 65  on 1.0 of SQLite
f8c0: 2c 20 74 68 65 20 56 41 43 55 55 4d 20 63 6f 6d  , the VACUUM com
f8d0: 6d 61 6e 64 20 77 6f 75 6c 64 20 69 6e 76 6f 6b  mand would invok
f8e0: 65 20 0a 3c 62 3e 67 64 62 6d 5f 72 65 6f 72 67  e .<b>gdbm_reorg
f8f0: 61 6e 69 7a 65 28 29 3c 2f 62 3e 20 74 6f 20 63  anize()</b> to c
f900: 6c 65 61 6e 20 75 70 20 74 68 65 20 62 61 63 6b  lean up the back
f910: 65 6e 64 20 64 61 74 61 62 61 73 65 20 66 69 6c  end database fil
f920: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 56 41 43 55  e.</p>..<p>.VACU
f930: 55 4d 20 62 65 63 61 6d 65 20 61 20 6e 6f 2d 6f  UM became a no-o
f940: 70 20 77 68 65 6e 20 74 68 65 20 47 44 42 4d 20  p when the GDBM 
f950: 62 61 63 6b 65 6e 64 20 77 61 73 20 72 65 6d 6f  backend was remo
f960: 76 65 64 20 66 72 6f 6d 0a 53 51 4c 49 54 45 20  ved from.SQLITE 
f970: 69 6e 20 76 65 72 73 69 6f 6e 20 32 2e 30 2e 30  in version 2.0.0
f980: 2e 0a 56 41 43 55 55 4d 20 77 61 73 20 72 65 69  ..VACUUM was rei
f990: 6d 70 6c 69 6d 65 6e 74 65 64 20 69 6e 20 76 65  mplimented in ve
f9a0: 72 73 69 6f 6e 20 32 2e 38 2e 31 2e 20 20 49 74  rsion 2.8.1.  It
f9b0: 20 6e 6f 77 20 63 6c 65 61 6e 73 0a 74 68 65 20   now cleans.the 
f9c0: 64 61 74 61 62 61 73 65 20 62 79 20 63 6f 70 79  database by copy
f9d0: 69 6e 67 20 69 74 73 20 63 6f 6e 74 65 6e 74 73  ing its contents
f9e0: 20 74 6f 20 61 20 74 65 6d 70 6f 72 61 72 79 20   to a temporary 
f9f0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 61 6e  database file an
fa00: 64 20 0a 72 65 6c 6f 61 64 69 6e 67 20 74 68 65  d .reloading the
fa10: 20 6f 72 69 67 69 6e 61 6c 20 64 61 74 61 62 61   original databa
fa20: 73 65 20 66 69 6c 65 20 66 72 6f 6d 20 74 68 65  se file from the
fa30: 20 63 6f 70 79 2e 20 20 54 68 69 73 20 77 69 6c   copy.  This wil
fa40: 6c 20 65 6c 69 6d 69 6e 61 74 65 20 0a 66 72 65  l eliminate .fre
fa50: 65 20 70 61 67 65 73 2c 20 20 61 6c 69 67 6e 20  e pages,  align 
fa60: 74 61 62 6c 65 20 64 61 74 61 20 74 6f 20 62 65  table data to be
fa70: 20 63 6f 6e 74 69 67 75 6f 75 73 2c 20 61 6e 64   contiguous, and
fa80: 20 6f 74 68 65 72 77 69 73 65 20 63 6c 65 61 6e   otherwise clean
fa90: 20 75 70 20 0a 74 68 65 20 64 61 74 61 62 61 73   up .the databas
faa0: 65 20 66 69 6c 65 20 73 74 72 75 63 74 75 72 65  e file structure
fab0: 2e 20 20 54 68 65 20 69 6e 64 65 78 20 6f 72 20  .  The index or 
fac0: 74 61 62 6c 65 20 6e 61 6d 65 20 61 72 67 75 6d  table name argum
fad0: 65 6e 74 20 69 73 20 6e 6f 77 0a 69 67 6e 6f 72  ent is now.ignor
fae0: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69 73  ed.</p>..<p>This
faf0: 20 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20 66 61   command will fa
fb00: 69 6c 20 69 66 20 74 68 65 72 65 20 69 73 20 61  il if there is a
fb10: 6e 20 61 63 74 69 76 65 20 74 72 61 6e 73 61 63  n active transac
fb20: 74 69 6f 6e 2e 20 20 54 68 69 73 20 0a 63 6f 6d  tion.  This .com
fb30: 6d 61 6e 64 20 68 61 73 20 6e 6f 20 65 66 66 65  mand has no effe
fb40: 63 74 20 6f 6e 20 61 6e 20 69 6e 2d 6d 65 6d 6f  ct on an in-memo
fb50: 72 79 20 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e  ry database.</p>
fb60: 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 53 51  .}...Section {SQ
fb70: 4c 69 74 65 20 6b 65 79 77 6f 72 64 73 7d 20 6b  Lite keywords} k
fb80: 65 79 77 6f 72 64 73 0a 0a 70 75 74 73 20 7b 0a  eywords..puts {.
fb90: 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  <p>The following
fba0: 20 6b 65 79 77 6f 72 64 73 20 61 72 65 20 75 73   keywords are us
fbb0: 65 64 20 62 79 20 53 51 4c 69 74 65 2e 20 4d 6f  ed by SQLite. Mo
fbc0: 73 74 20 61 72 65 20 65 69 74 68 65 72 20 72 65  st are either re
fbd0: 73 65 72 76 65 64 20 0a 77 6f 72 64 73 20 69 6e  served .words in
fbe0: 20 53 51 4c 2d 39 32 20 6f 72 20 77 65 72 65 20   SQL-92 or were 
fbf0: 6c 69 73 74 65 64 20 61 73 20 70 6f 74 65 6e 74  listed as potent
fc00: 69 61 6c 20 72 65 73 65 72 76 65 64 20 77 6f 72  ial reserved wor
fc10: 64 73 2e 20 20 54 68 6f 73 65 20 77 68 69 63 68  ds.  Those which
fc20: 20 0a 61 72 65 6e 27 74 20 61 72 65 20 73 68 6f   .aren't are sho
fc30: 77 6e 20 69 6e 20 69 74 61 6c 69 63 73 2e 20 20  wn in italics.  
fc40: 4e 6f 74 20 61 6c 6c 20 6f 66 20 74 68 65 73 65  Not all of these
fc50: 20 77 6f 72 64 73 20 61 72 65 20 61 63 74 75 61   words are actua
fc60: 6c 6c 79 20 75 73 65 64 0a 62 79 20 53 51 4c 69  lly used.by SQLi
fc70: 74 65 2e 20 20 4b 65 79 77 6f 72 64 73 20 61 72  te.  Keywords ar
fc80: 65 20 6e 6f 74 20 72 65 73 65 72 76 65 64 20 69  e not reserved i
fc90: 6e 20 53 51 4c 69 74 65 2e 20 20 41 6e 79 20 6b  n SQLite.  Any k
fca0: 65 79 77 6f 72 64 20 63 61 6e 20 62 65 20 75 73  eyword can be us
fcb0: 65 64 20 0a 61 73 20 61 6e 20 69 64 65 6e 74 69  ed .as an identi
fcc0: 66 69 65 72 20 66 6f 72 20 53 51 4c 69 74 65 20  fier for SQLite 
fcd0: 6f 62 6a 65 63 74 73 20 28 63 6f 6c 75 6d 6e 73  objects (columns
fce0: 2c 20 64 61 74 61 62 61 73 65 73 2c 20 69 6e 64  , databases, ind
fcf0: 65 78 65 73 2c 20 74 61 62 6c 65 73 2c 20 0a 74  exes, tables, .t
fd00: 72 69 67 67 65 72 73 2c 20 76 69 65 77 73 2c 20  riggers, views, 
fd10: 2e 2e 2e 29 20 62 75 74 20 6d 75 73 74 20 67 65  ...) but must ge
fd20: 6e 65 72 61 6c 6c 79 20 62 65 20 65 6e 63 6c 6f  nerally be enclo
fd30: 73 65 64 20 62 79 20 62 72 61 63 6b 65 74 73 20  sed by brackets 
fd40: 6f 72 20 0a 71 75 6f 74 65 73 20 74 6f 20 61 76  or .quotes to av
fd50: 6f 69 64 20 63 6f 6e 66 75 73 69 6e 67 20 74 68  oid confusing th
fd60: 65 20 70 61 72 73 65 72 2e 20 20 4b 65 79 77 6f  e parser.  Keywo
fd70: 72 64 20 6d 61 74 63 68 69 6e 67 20 69 6e 20 53  rd matching in S
fd80: 51 4c 69 74 65 20 69 73 20 0a 63 61 73 65 2d 69  QLite is .case-i
fd90: 6e 73 65 6e 73 69 74 69 76 65 2e 3c 2f 70 3e 0a  nsensitive.</p>.
fda0: 0a 3c 70 3e 4b 65 79 77 6f 72 64 73 20 63 61 6e  .<p>Keywords can
fdb0: 20 62 65 20 75 73 65 64 20 61 73 20 69 64 65 6e   be used as iden
fdc0: 74 69 66 69 65 72 73 20 69 6e 20 74 68 72 65 65  tifiers in three
fdd0: 20 77 61 79 73 3a 3c 2f 70 3e 0a 0a 3c 74 61 62   ways:</p>..<tab
fde0: 6c 65 3e 0a 3c 74 72 3e 09 3c 74 64 20 77 69 64  le>.<tr>.<td wid
fdf0: 74 68 3d 31 32 25 3e 20 27 6b 65 79 77 6f 72 64  th=12%> 'keyword
fe00: 27 0a 09 3c 74 64 3e 49 6e 74 65 72 70 72 65 74  '..<td>Interpret
fe10: 65 64 20 61 73 20 61 20 6c 69 74 65 72 61 6c 20  ed as a literal 
fe20: 73 74 72 69 6e 67 20 69 66 20 69 74 20 6f 63 63  string if it occ
fe30: 75 72 73 20 69 6e 20 61 20 6c 65 67 61 6c 20 73  urs in a legal s
fe40: 74 72 69 6e 67 20 0a 09 63 6f 6e 74 65 78 74 2c  tring ..context,
fe50: 20 6f 74 68 65 72 77 69 73 65 20 61 73 20 61 6e   otherwise as an
fe60: 20 69 64 65 6e 74 69 66 69 65 72 2e 0a 3c 74 72   identifier..<tr
fe70: 3e 09 3c 74 64 3e 20 22 6b 65 79 77 6f 72 64 22  >.<td> "keyword"
fe80: 0a 09 3c 74 64 3e 49 6e 74 65 72 70 72 65 74 65  ..<td>Interprete
fe90: 64 20 61 73 20 61 6e 20 69 64 65 6e 74 69 66 69  d as an identifi
fea0: 65 72 20 69 66 20 69 74 20 6d 61 74 63 68 65 73  er if it matches
feb0: 20 61 20 6b 6e 6f 77 6e 20 69 64 65 6e 74 69 66   a known identif
fec0: 69 65 72 20 0a 09 61 6e 64 20 6f 63 63 75 72 73  ier ..and occurs
fed0: 20 69 6e 20 61 20 6c 65 67 61 6c 20 69 64 65 6e   in a legal iden
fee0: 74 69 66 69 65 72 20 63 6f 6e 74 65 78 74 2c 20  tifier context, 
fef0: 6f 74 68 65 72 77 69 73 65 20 61 73 20 61 20 73  otherwise as a s
ff00: 74 72 69 6e 67 2e 20 0a 3c 74 72 3e 09 3c 74 64  tring. .<tr>.<td
ff10: 3e 20 5b 6b 65 79 77 6f 72 64 5d 0a 09 3c 74 64  > [keyword]..<td
ff20: 3e 20 41 6c 77 61 79 73 20 69 6e 74 65 72 70 72  > Always interpr
ff30: 65 74 65 64 20 61 73 20 61 6e 20 69 64 65 6e 74  eted as an ident
ff40: 69 66 65 72 2e 20 28 54 68 69 73 20 6e 6f 74 61  ifer. (This nota
ff50: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 0a 09 62  tion is used ..b
ff60: 79 20 4d 53 20 41 63 63 65 73 73 20 61 6e 64 20  y MS Access and 
ff70: 53 51 4c 20 53 65 72 76 65 72 2e 29 0a 3c 2f 74  SQL Server.).</t
ff80: 61 62 6c 65 3e 0a 0a 3c 68 32 3e 46 61 6c 6c 62  able>..<h2>Fallb
ff90: 61 63 6b 20 4b 65 79 77 6f 72 64 73 3c 2f 68 32  ack Keywords</h2
ffa0: 3e 0a 0a 3c 70 3e 54 68 65 73 65 20 6b 65 79 77  >..<p>These keyw
ffb0: 6f 72 64 73 20 63 61 6e 20 62 65 20 75 73 65 64  ords can be used
ffc0: 20 61 73 20 69 64 65 6e 74 69 66 69 65 72 73 20   as identifiers 
ffd0: 66 6f 72 20 53 51 4c 69 74 65 20 6f 62 6a 65 63  for SQLite objec
ffe0: 74 73 20 77 69 74 68 6f 75 74 20 0a 64 65 6c 69  ts without .deli
fff0: 6d 69 74 65 72 73 2e 3c 2f 70 3e 0a 7d 0a 0a 70  miters.</p>.}..p
10000 72 6f 63 20 6b 65 79 77 6f 72 64 5f 6c 69 73 74  roc keyword_list
10010 20 7b 78 7d 20 7b 0a 20 20 70 75 74 73 20 22 3c   {x} {.  puts "<
10020 70 3e 22 0a 20 20 66 6f 72 65 61 63 68 20 6b 20  p>".  foreach k 
10030 24 78 20 7b 0a 20 20 20 20 69 66 20 7b 5b 73 74  $x {.    if {[st
10040 72 69 6e 67 20 69 6e 64 65 78 20 24 6b 20 30 5d  ring index $k 0]
10050 3d 3d 22 2a 22 7d 20 7b 0a 20 20 20 20 20 20 73  =="*"} {.      s
10060 65 74 20 6e 6f 6e 73 74 61 6e 64 61 72 64 20 31  et nonstandard 1
10070 0a 20 20 20 20 20 20 73 65 74 20 6b 20 5b 73 74  .      set k [st
10080 72 69 6e 67 20 72 61 6e 67 65 20 24 6b 20 31 20  ring range $k 1 
10090 65 6e 64 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20  end].    } else 
100a0 7b 0a 20 20 20 20 20 20 73 65 74 20 6e 6f 6e 73  {.      set nons
100b0 74 61 6e 64 61 72 64 20 30 0a 20 20 20 20 7d 0a  tandard 0.    }.
100c0 20 20 20 20 69 66 20 7b 24 6e 6f 6e 73 74 61 6e      if {$nonstan
100d0 64 61 72 64 7d 20 7b 0a 20 20 20 20 20 20 70 75  dard} {.      pu
100e0 74 73 20 22 3c 69 3e 24 6b 3c 2f 69 3e 20 26 6e  ts "<i>$k</i> &n
100f0 62 73 70 3b 26 6e 62 73 70 3b 22 0a 20 20 20 20  bsp;&nbsp;".    
10100 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 70  } else {.      p
10110 75 74 73 20 22 24 6b 20 26 6e 62 73 70 3b 26 6e  uts "$k &nbsp;&n
10120 62 73 70 3b 22 0a 20 20 20 20 7d 0a 20 20 7d 0a  bsp;".    }.  }.
10130 20 20 70 75 74 73 20 22 3c 2f 70 3e 5c 6e 22 0a    puts "</p>\n".
10140 7d 0a 0a 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20  }..keyword_list 
10150 7b 0a 20 20 2a 41 42 4f 52 54 0a 20 20 41 46 54  {.  *ABORT.  AFT
10160 45 52 0a 20 20 41 53 43 0a 20 20 2a 41 54 54 41  ER.  ASC.  *ATTA
10170 43 48 0a 20 20 42 45 46 4f 52 45 0a 20 20 42 45  CH.  BEFORE.  BE
10180 47 49 4e 0a 20 20 44 45 46 45 52 52 45 44 0a 20  GIN.  DEFERRED. 
10190 20 43 41 53 43 41 44 45 20 0a 20 20 2a 43 4c 55   CASCADE .  *CLU
101a0 53 54 45 52 20 0a 20 20 2a 43 4f 4e 46 4c 49 43  STER .  *CONFLIC
101b0 54 0a 20 20 2a 43 4f 50 59 0a 20 20 43 52 4f 53  T.  *COPY.  CROS
101c0 53 0a 20 20 2a 44 41 54 41 42 41 53 45 0a 20 20  S.  *DATABASE.  
101d0 2a 44 45 4c 49 4d 49 54 45 52 53 0a 20 20 44 45  *DELIMITERS.  DE
101e0 53 43 0a 20 20 2a 44 45 54 41 43 48 0a 20 20 45  SC.  *DETACH.  E
101f0 41 43 48 0a 20 20 45 4e 44 0a 20 20 2a 45 58 50  ACH.  END.  *EXP
10200 4c 41 49 4e 0a 20 20 2a 46 41 49 4c 0a 20 20 46  LAIN.  *FAIL.  F
10210 4f 52 0a 20 20 46 55 4c 4c 0a 20 20 49 47 4e 4f  OR.  FULL.  IGNO
10220 52 45 0a 20 20 49 4d 4d 45 44 49 41 54 45 0a 20  RE.  IMMEDIATE. 
10230 20 49 4e 49 54 49 41 4c 4c 59 0a 20 20 49 4e 4e   INITIALLY.  INN
10240 45 52 0a 20 20 2a 49 4e 53 54 45 41 44 0a 20 20  ER.  *INSTEAD.  
10250 4b 45 59 0a 20 20 4c 45 46 54 0a 20 20 4d 41 54  KEY.  LEFT.  MAT
10260 43 48 20 0a 20 20 4e 41 54 55 52 41 4c 0a 20 20  CH .  NATURAL.  
10270 4f 46 0a 20 20 2a 4f 46 46 53 45 54 0a 20 20 4f  OF.  *OFFSET.  O
10280 55 54 45 52 0a 20 20 2a 50 52 41 47 4d 41 0a 20  UTER.  *PRAGMA. 
10290 20 2a 52 41 49 53 45 0a 20 20 2a 52 45 50 4c 41   *RAISE.  *REPLA
102a0 43 45 0a 20 20 52 45 53 54 52 49 43 54 0a 20 20  CE.  RESTRICT.  
102b0 52 49 47 48 54 0a 20 20 2a 52 4f 57 0a 20 20 2a  RIGHT.  *ROW.  *
102c0 53 54 41 54 45 4d 45 4e 54 0a 20 20 2a 54 45 4d  STATEMENT.  *TEM
102d0 50 0a 20 20 54 45 4d 50 4f 52 41 52 59 0a 20 20  P.  TEMPORARY.  
102e0 54 52 49 47 47 45 52 20 0a 20 20 2a 56 41 43 55  TRIGGER .  *VACU
102f0 55 4d 0a 20 20 56 49 45 57 0a 7d 0a 70 75 74 73  UM.  VIEW.}.puts
10300 20 7b 0a 0a 3c 68 32 3e 4e 6f 72 6d 61 6c 20 6b   {..<h2>Normal k
10310 65 79 77 6f 72 64 73 3c 2f 68 32 3e 0a 0a 3c 70  eywords</h2>..<p
10320 3e 54 68 65 73 65 20 6b 65 79 77 6f 72 64 73 20  >These keywords 
10330 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 69  can be used as i
10340 64 65 6e 74 69 66 69 65 72 73 20 66 6f 72 20 53  dentifiers for S
10350 51 4c 69 74 65 20 6f 62 6a 65 63 74 73 2c 20 62  QLite objects, b
10360 75 74 20 0a 6d 75 73 74 20 62 65 20 65 6e 63 6c  ut .must be encl
10370 6f 73 65 64 20 69 6e 20 62 72 61 63 6b 65 74 73  osed in brackets
10380 20 6f 72 20 71 75 6f 74 65 73 20 66 6f 72 20 53   or quotes for S
10390 51 4c 69 74 65 20 74 6f 20 72 65 63 6f 67 6e 69  QLite to recogni
103a0 7a 65 20 74 68 65 6d 20 61 73 20 0a 61 6e 20 69  ze them as .an i
103b0 64 65 6e 74 69 66 69 65 72 2e 3c 2f 70 3e 0a 7d  dentifier.</p>.}
103c0 0a 0a 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20 7b  ..keyword_list {
103d0 0a 20 20 41 4c 4c 0a 20 20 41 4e 44 0a 20 20 41  .  ALL.  AND.  A
103e0 53 0a 20 20 42 45 54 57 45 45 4e 0a 20 20 42 59  S.  BETWEEN.  BY
103f0 0a 20 20 43 41 53 45 0a 20 20 43 48 45 43 4b 0a  .  CASE.  CHECK.
10400 20 20 43 4f 4c 4c 41 54 45 0a 20 20 43 4f 4d 4d    COLLATE.  COMM
10410 49 54 0a 20 20 43 4f 4e 53 54 52 41 49 4e 54 0a  IT.  CONSTRAINT.
10420 20 20 43 52 45 41 54 45 20 0a 20 20 44 45 46 41    CREATE .  DEFA
10430 55 4c 54 0a 20 20 44 45 46 45 52 52 41 42 4c 45  ULT.  DEFERRABLE
10440 0a 20 20 44 45 4c 45 54 45 0a 20 20 44 49 53 54  .  DELETE.  DIST
10450 49 4e 43 54 0a 20 20 44 52 4f 50 0a 20 20 45 4c  INCT.  DROP.  EL
10460 53 45 0a 20 20 45 58 43 45 50 54 0a 20 20 46 4f  SE.  EXCEPT.  FO
10470 52 45 49 47 4e 0a 20 20 46 52 4f 4d 20 0a 20 20  REIGN.  FROM .  
10480 2a 47 4c 4f 42 0a 20 20 47 52 4f 55 50 0a 20 20  *GLOB.  GROUP.  
10490 48 41 56 49 4e 47 0a 20 20 49 4e 0a 20 20 2a 49  HAVING.  IN.  *I
104a0 4e 44 45 58 0a 20 20 49 4e 53 45 52 54 0a 20 20  NDEX.  INSERT.  
104b0 49 4e 54 45 52 53 45 43 54 0a 20 20 49 4e 54 4f  INTERSECT.  INTO
104c0 0a 20 20 49 53 20 0a 20 20 2a 49 53 4e 55 4c 4c  .  IS .  *ISNULL
104d0 0a 20 20 4a 4f 49 4e 0a 20 20 4c 49 4b 45 0a 20  .  JOIN.  LIKE. 
104e0 20 4c 49 4d 49 54 0a 20 20 4e 4f 54 0a 20 20 2a   LIMIT.  NOT.  *
104f0 4e 4f 54 4e 55 4c 4c 0a 20 20 4e 55 4c 4c 0a 20  NOTNULL.  NULL. 
10500 20 4f 4e 0a 20 20 4f 52 0a 20 20 4f 52 44 45 52   ON.  OR.  ORDER
10510 20 0a 20 20 50 52 49 4d 41 52 59 0a 20 20 52 45   .  PRIMARY.  RE
10520 46 45 52 45 4e 43 45 53 0a 20 20 52 4f 4c 4c 42  FERENCES.  ROLLB
10530 41 43 4b 0a 20 20 53 45 4c 45 43 54 0a 20 20 53  ACK.  SELECT.  S
10540 45 54 0a 20 20 54 41 42 4c 45 0a 20 20 54 48 45  ET.  TABLE.  THE
10550 4e 0a 20 20 54 52 41 4e 53 41 43 54 49 4f 4e 0a  N.  TRANSACTION.
10560 20 20 55 4e 49 4f 4e 20 0a 20 20 55 4e 49 51 55    UNION .  UNIQU
10570 45 0a 20 20 55 50 44 41 54 45 0a 20 20 55 53 49  E.  UPDATE.  USI
10580 4e 47 0a 20 20 56 41 4c 55 45 53 0a 20 20 57 48  NG.  VALUES.  WH
10590 45 4e 0a 20 20 57 48 45 52 45 0a 7d 0a 0a 70 75  EN.  WHERE.}..pu
105a0 74 73 20 7b 0a 3c 68 32 3e 53 70 65 63 69 61 6c  ts {.<h2>Special
105b0 20 77 6f 72 64 73 3c 2f 68 32 3e 0a 0a 3c 70 3e   words</h2>..<p>
105c0 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72  The following ar
105d0 65 20 6e 6f 74 20 6b 65 79 77 6f 72 64 73 20 69  e not keywords i
105e0 6e 20 53 51 4c 69 74 65 2c 20 62 75 74 20 61 72  n SQLite, but ar
105f0 65 20 75 73 65 64 20 61 73 20 6e 61 6d 65 73 20  e used as names 
10600 6f 66 20 0a 73 79 73 74 65 6d 20 6f 62 6a 65 63  of .system objec
10610 74 73 2e 20 20 54 68 65 79 20 63 61 6e 20 62 65  ts.  They can be
10620 20 75 73 65 64 20 61 73 20 61 6e 20 69 64 65 6e   used as an iden
10630 74 69 66 69 65 72 20 66 6f 72 20 61 20 64 69 66  tifier for a dif
10640 66 65 72 65 6e 74 20 0a 74 79 70 65 20 6f 66 20  ferent .type of 
10650 6f 62 6a 65 63 74 2e 3c 2f 70 3e 0a 7d 0a 0a 6b  object.</p>.}..k
10660 65 79 77 6f 72 64 5f 6c 69 73 74 20 7b 0a 20 20  eyword_list {.  
10670 2a 5f 52 4f 57 49 44 5f 0a 20 20 2a 4d 41 49 4e  *_ROWID_.  *MAIN
10680 0a 20 20 4f 49 44 0a 20 20 2a 52 4f 57 49 44 0a  .  OID.  *ROWID.
10690 20 20 2a 53 51 4c 49 54 45 5f 4d 41 53 54 45 52    *SQLITE_MASTER
106a0 0a 20 20 2a 53 51 4c 49 54 45 5f 54 45 4d 50 5f  .  *SQLITE_TEMP_
106b0 4d 41 53 54 45 52 0a 7d 0a 0a 70 75 74 73 20 7b  MASTER.}..puts {
106c0 0a 3c 70 3e 3c 68 72 20 2f 3e 3c 2f 70 3e 0a 3c  .<p><hr /></p>.<
106d0 70 3e 3c 61 20 68 72 65 66 3d 22 69 6e 64 65 78  p><a href="index
106e0 2e 68 74 6d 6c 22 3e 3c 69 6d 67 20 73 72 63 3d  .html"><img src=
106f0 22 2f 67 6f 62 61 63 6b 2e 6a 70 67 22 20 62 6f  "/goback.jpg" bo
10700 72 64 65 72 3d 30 20 2f 3e 0a 42 61 63 6b 20 74  rder=0 />.Back t
10710 6f 20 74 68 65 20 53 51 4c 69 74 65 20 48 6f 6d  o the SQLite Hom
10720 65 20 50 61 67 65 3c 2f 61 3e 0a 3c 2f 70 3e 0a  e Page</a>.</p>.
10730 0a 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c 3e 7d  .</body></html>}
10740 0a                                               .