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

Artifact 01e47b43cb81cd24bd2918a2e1bd31a959097279:


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 32 36 20 32 30 30 32  .tcl,v 1.26 2002
0060: 2f 30 32 2f 31 39 20 32 32 3a 34 32 3a 30 36 20  /02/19 22:42:06 
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 6f 6d 69 74 20 73 6f 6d 65  t does omit some
01d0: 20 66 65 61 74 75 72 65 73 20 77 68 69 6c 65 20   features while 
01e0: 61 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65  at the same time
01f0: 0a 61 64 64 69 6e 67 20 61 20 66 65 77 20 66 65  .adding a few fe
0200: 61 74 75 72 65 73 20 6f 66 20 69 74 73 20 6f 77  atures of its ow
0210: 6e 2e 20 20 54 68 69 73 20 64 6f 63 75 6d 65 6e  n.  This documen
0220: 74 20 61 74 74 65 6d 70 74 73 20 74 6f 0a 64 65  t attempts to.de
0230: 73 63 72 69 62 65 20 70 65 72 63 69 73 65 6c 79  scribe percisely
0240: 20 77 68 61 74 20 70 61 72 74 73 20 6f 66 20 74   what parts of t
0250: 68 65 20 53 51 4c 20 6c 61 6e 67 75 61 67 65 20  he SQL language 
0260: 53 51 4c 69 74 65 20 64 6f 65 73 0a 61 6e 64 20  SQLite does.and 
0270: 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74  does not support
0280: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 61 6c 6c  .</p>..<p>In all
0290: 20 6f 66 20 74 68 65 20 73 79 6e 74 61 78 20 64   of the syntax d
02a0: 69 61 67 72 61 6d 73 20 74 68 61 74 20 66 6f 6c  iagrams that fol
02b0: 6c 6f 77 2c 20 6c 69 74 65 72 61 6c 20 74 65 78  low, literal tex
02c0: 74 20 69 73 20 73 68 6f 77 6e 20 69 6e 0a 62 6f  t is shown in.bo
02d0: 6c 64 20 62 6c 75 65 2e 20 20 4e 6f 6e 2d 74 65  ld blue.  Non-te
02e0: 72 6d 69 6e 61 6c 20 73 79 6d 62 6f 6c 73 20 61  rminal symbols a
02f0: 72 65 20 73 68 6f 77 6e 20 69 6e 20 69 74 61 6c  re shown in ital
0300: 69 63 20 72 65 64 2e 20 20 4f 70 65 72 61 74 6f  ic red.  Operato
0310: 72 73 0a 74 68 61 74 20 61 72 65 20 70 61 72 74  rs.that are part
0320: 20 6f 66 20 74 68 65 20 73 79 6e 74 61 63 74 69   of the syntacti
0330: 63 20 6d 61 72 6b 75 70 20 69 74 73 65 6c 66 20  c markup itself 
0340: 61 72 65 20 73 68 6f 77 6e 20 69 6e 20 62 6c 61  are shown in bla
0350: 63 6b 20 72 6f 6d 61 6e 2e 3c 2f 70 3e 0a 0a 3c  ck roman.</p>..<
0360: 70 3e 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20  p>This document 
0370: 69 73 20 6a 75 73 74 20 61 6e 20 6f 76 65 72 76  is just an overv
0380: 69 65 77 20 6f 66 20 74 68 65 20 53 51 4c 20 73  iew of the SQL s
0390: 79 6e 74 61 78 20 69 6d 70 6c 65 6d 65 6e 74 65  yntax implemente
03a0: 64 0a 62 79 20 53 51 4c 69 74 65 2e 20 20 4d 61  d.by SQLite.  Ma
03b0: 6e 79 20 6c 6f 77 2d 6c 65 76 65 6c 20 70 72 6f  ny low-level pro
03c0: 64 75 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d 69  ductions are omi
03d0: 74 74 65 64 2e 20 20 46 6f 72 20 64 65 74 61 69  tted.  For detai
03e0: 6c 65 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a  led information.
03f0: 6f 6e 20 74 68 65 20 6c 61 6e 67 75 61 67 65 20  on the language 
0400: 74 68 61 74 20 53 51 4c 69 74 65 20 75 6e 64 65  that SQLite unde
0410: 72 73 74 61 6e 64 73 2c 20 72 65 66 65 72 20 74  rstands, refer t
0420: 6f 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64  o the source cod
0430: 65 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 53 51 4c 69  e.</p>...<p>SQLi
0440: 74 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68  te implements th
0450: 65 20 66 6f 6c 6c 6f 77 20 73 79 6e 74 61 78 3a  e follow syntax:
0460: 3c 2f 70 3e 0a 3c 70 3e 3c 75 6c 3e 0a 7d 0a 0a  </p>.<p><ul>.}..
0470: 66 6f 72 65 61 63 68 20 7b 73 65 63 74 69 6f 6e  foreach {section
0480: 7d 20 5b 6c 73 6f 72 74 20 2d 69 6e 64 65 78 20  } [lsort -index 
0490: 30 20 2d 64 69 63 74 69 6f 6e 61 72 79 20 7b 0a  0 -dictionary {.
04a0: 20 20 7b 7b 43 52 45 41 54 45 20 54 41 42 4c 45    {{CREATE TABLE
04b0: 7d 20 63 72 65 61 74 65 74 61 62 6c 65 7d 0a 20  } createtable}. 
04c0: 20 7b 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d   {{CREATE INDEX}
04d0: 20 63 72 65 61 74 65 69 6e 64 65 78 7d 0a 20 20   createindex}.  
04e0: 7b 56 41 43 55 55 4d 20 76 61 63 75 75 6d 7d 0a  {VACUUM vacuum}.
04f0: 20 20 7b 7b 44 52 4f 50 20 54 41 42 4c 45 7d 20    {{DROP TABLE} 
0500: 64 72 6f 70 74 61 62 6c 65 7d 0a 20 20 7b 7b 44  droptable}.  {{D
0510: 52 4f 50 20 49 4e 44 45 58 7d 20 64 72 6f 70 69  ROP INDEX} dropi
0520: 6e 64 65 78 7d 0a 20 20 7b 49 4e 53 45 52 54 20  ndex}.  {INSERT 
0530: 69 6e 73 65 72 74 7d 0a 20 20 7b 52 45 50 4c 41  insert}.  {REPLA
0540: 43 45 20 72 65 70 6c 61 63 65 7d 0a 20 20 7b 44  CE replace}.  {D
0550: 45 4c 45 54 45 20 64 65 6c 65 74 65 7d 0a 20 20  ELETE delete}.  
0560: 7b 55 50 44 41 54 45 20 75 70 64 61 74 65 7d 0a  {UPDATE update}.
0570: 20 20 7b 53 45 4c 45 43 54 20 73 65 6c 65 63 74    {SELECT select
0580: 7d 0a 20 20 7b 43 4f 50 59 20 63 6f 70 79 7d 0a  }.  {COPY copy}.
0590: 20 20 7b 45 58 50 4c 41 49 4e 20 65 78 70 6c 61    {EXPLAIN expla
05a0: 69 6e 7d 0a 20 20 7b 65 78 70 72 65 73 73 69 6f  in}.  {expressio
05b0: 6e 20 65 78 70 72 7d 0a 20 20 7b 7b 42 45 47 49  n expr}.  {{BEGI
05c0: 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74  N TRANSACTION} t
05d0: 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 50  ransaction}.  {P
05e0: 52 41 47 4d 41 20 70 72 61 67 6d 61 7d 0a 20 20  RAGMA pragma}.  
05f0: 7b 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c  {{ON CONFLICT cl
0600: 61 75 73 65 7d 20 63 6f 6e 66 6c 69 63 74 7d 0a  ause} conflict}.
0610: 7d 5d 20 7b 0a 20 20 70 75 74 73 20 22 3c 6c 69  }] {.  puts "<li
0620: 3e 3c 61 20 68 72 65 66 3d 5c 22 23 5b 6c 69 6e  ><a href=\"#[lin
0630: 64 65 78 20 24 73 65 63 74 69 6f 6e 20 31 5d 5c  dex $section 1]\
0640: 22 3e 5b 6c 69 6e 64 65 78 20 24 73 65 63 74 69  ">[lindex $secti
0650: 6f 6e 20 30 5d 3c 2f 61 3e 3c 2f 6c 69 3e 22 0a  on 0]</a></li>".
0660: 7d 0a 70 75 74 73 20 7b 3c 2f 75 6c 3e 3c 2f 70  }.puts {</ul></p
0670: 3e 0a 0a 3c 70 3e 44 65 74 61 69 6c 73 20 6f 6e  >..<p>Details on
0680: 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74   the implementat
0690: 69 6f 6e 20 6f 66 20 65 61 63 68 20 63 6f 6d 6d  ion of each comm
06a0: 61 6e 64 20 61 72 65 20 70 72 6f 76 69 64 65 64  and are provided
06b0: 20 69 6e 0a 74 68 65 20 73 65 71 75 65 6c 2e 3c   in.the sequel.<
06c0: 2f 70 3e 0a 7d 0a 0a 70 72 6f 63 20 53 79 6e 74  /p>.}..proc Synt
06d0: 61 78 20 7b 61 72 67 73 7d 20 7b 0a 20 20 70 75  ax {args} {.  pu
06e0: 74 73 20 7b 3c 74 61 62 6c 65 20 63 65 6c 6c 70  ts {<table cellp
06f0: 61 64 64 69 6e 67 3d 22 31 30 22 3e 7d 0a 20 20  adding="10">}.  
0700: 66 6f 72 65 61 63 68 20 7b 72 75 6c 65 20 62 6f  foreach {rule bo
0710: 64 79 7d 20 24 61 72 67 73 20 7b 0a 20 20 20 20  dy} $args {.    
0720: 70 75 74 73 20 22 3c 74 72 3e 3c 74 64 20 61 6c  puts "<tr><td al
0730: 69 67 6e 3d 5c 22 72 69 67 68 74 5c 22 20 76 61  ign=\"right\" va
0740: 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 3e 22 0a 20  lign=\"top\">". 
0750: 20 20 20 70 75 74 73 20 22 3c 69 3e 3c 66 6f 6e     puts "<i><fon
0760: 74 20 63 6f 6c 6f 72 3d 5c 22 23 66 66 33 34 33  t color=\"#ff343
0770: 34 5c 22 3e 24 72 75 6c 65 3c 2f 66 6f 6e 74 3e  4\">$rule</font>
0780: 3c 2f 69 3e 26 6e 62 73 70 3b 3a 3a 3d 3c 2f 74  </i>&nbsp;::=</t
0790: 64 3e 22 0a 20 20 20 20 72 65 67 73 75 62 20 2d  d>".    regsub -
07a0: 61 6c 6c 20 3c 20 24 62 6f 64 79 20 7b 25 4c 54  all < $body {%LT
07b0: 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75  } body.    regsu
07c0: 62 20 2d 61 6c 6c 20 3e 20 24 62 6f 64 79 20 7b  b -all > $body {
07d0: 25 47 54 7d 20 62 6f 64 79 0a 20 20 20 20 72 65  %GT} body.    re
07e0: 67 73 75 62 20 2d 61 6c 6c 20 25 4c 54 20 24 62  gsub -all %LT $b
07f0: 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e  ody {</font></b>
0800: 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22  <i><font color="
0810: 23 66 66 33 34 33 34 22 3e 7d 20 62 6f 64 79 0a  #ff3434">} body.
0820: 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20      regsub -all 
0830: 25 47 54 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e  %GT $body {</fon
0840: 74 3e 3c 2f 69 3e 3c 62 3e 3c 66 6f 6e 74 20 63  t></i><b><font c
0850: 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 7d  olor="#2c2cf0">}
0860: 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62   body.    regsub
0870: 20 2d 61 6c 6c 20 7b 5b 5d 7c 5b 2a 3f 5d 7d 20   -all {[]|[*?]} 
0880: 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f  $body {</font></
0890: 62 3e 26 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f  b>&<b><font colo
08a0: 72 3d 22 23 32 63 32 63 66 30 22 3e 7d 20 62 6f  r="#2c2cf0">} bo
08b0: 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61  dy.    regsub -a
08c0: 6c 6c 20 22 5c 6e 22 20 5b 73 74 72 69 6e 67 20  ll "\n" [string 
08d0: 74 72 69 6d 20 24 62 6f 64 79 5d 20 22 3c 62 72  trim $body] "<br
08e0: 3e 5c 6e 22 20 62 6f 64 79 0a 20 20 20 20 72 65  >\n" body.    re
08f0: 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e 20 20 2a  gsub -all "\n  *
0900: 22 20 24 62 6f 64 79 20 22 5c 6e 5c 5c 26 6e 62  " $body "\n\\&nb
0910: 73 70 3b 5c 5c 26 6e 62 73 70 3b 5c 5c 26 6e 62  sp;\\&nbsp;\\&nb
0920: 73 70 3b 5c 5c 26 6e 62 73 70 3b 22 20 62 6f 64  sp;\\&nbsp;" bod
0930: 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c  y.    regsub -al
0940: 6c 20 7b 5b 7c 2c 2e 2a 28 29 5d 7d 20 24 62 6f  l {[|,.*()]} $bo
0950: 64 79 20 7b 3c 62 69 67 3e 26 3c 2f 62 69 67 3e  dy {<big>&</big>
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 7b 20 3d 20 7d 20 24 62 6f  b -all { = } $bo
0980: 64 79 20 7b 20 3c 62 69 67 3e 3d 3c 2f 62 69 67  dy { <big>=</big
0990: 3e 20 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67  > } body.    reg
09a0: 73 75 62 20 2d 61 6c 6c 20 7b 53 54 41 52 7d 20  sub -all {STAR} 
09b0: 24 62 6f 64 79 20 7b 3c 62 69 67 3e 2a 3c 2f 62  $body {<big>*</b
09c0: 69 67 3e 7d 20 62 6f 64 79 0a 20 20 20 20 70 75  ig>} body.    pu
09d0: 74 73 20 22 3c 74 64 3e 3c 62 3e 3c 66 6f 6e 74  ts "<td><b><font
09e0: 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30   color=\"#2c2cf0
09f0: 5c 22 3e 24 62 6f 64 79 3c 2f 66 6f 6e 74 3e 3c  \">$body</font><
0a00: 2f 62 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 22 0a 20  /b></td></tr>". 
0a10: 20 7d 0a 20 20 70 75 74 73 20 7b 3c 2f 74 61 62   }.  puts {</tab
0a20: 6c 65 3e 7d 0a 7d 0a 70 72 6f 63 20 4f 70 65 72  le>}.}.proc Oper
0a30: 61 74 6f 72 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20  ator {name} {.  
0a40: 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f  return "<font co
0a50: 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e  lor=\"#2c2cf0\">
0a60: 3c 62 69 67 3e 24 6e 61 6d 65 3c 2f 62 69 67 3e  <big>$name</big>
0a70: 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f 63 20  </font>".}.proc 
0a80: 4e 6f 6e 74 65 72 6d 69 6e 61 6c 20 7b 6e 61 6d  Nonterminal {nam
0a90: 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c  e} {.  return "<
0aa0: 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22  i><font color=\"
0ab0: 23 66 66 33 34 33 34 5c 22 3e 24 6e 61 6d 65 3c  #ff3434\">$name<
0ac0: 2f 66 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d 0a 70 72  /font></i>".}.pr
0ad0: 6f 63 20 4b 65 79 77 6f 72 64 20 7b 6e 61 6d 65  oc Keyword {name
0ae0: 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c 66  } {.  return "<f
0af0: 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32  ont color=\"#2c2
0b00: 63 66 30 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e  cf0\">$name</fon
0b10: 74 3e 22 0a 7d 0a 20 0a 0a 70 72 6f 63 20 53 65  t>".}. ..proc Se
0b20: 63 74 69 6f 6e 20 7b 6e 61 6d 65 20 7b 6c 61 62  ction {name {lab
0b30: 65 6c 20 7b 7d 7d 7d 20 7b 0a 20 20 70 75 74 73  el {}}} {.  puts
0b40: 20 22 5c 6e 3c 68 72 20 2f 3e 22 0a 20 20 69 66   "\n<hr />".  if
0b50: 20 7b 24 6c 61 62 65 6c 21 3d 22 22 7d 20 7b 0a   {$label!=""} {.
0b60: 20 20 20 20 70 75 74 73 20 22 3c 61 20 6e 61 6d      puts "<a nam
0b70: 65 3d 5c 22 24 6c 61 62 65 6c 5c 22 3e 22 0a 20  e=\"$label\">". 
0b80: 20 7d 0a 20 20 70 75 74 73 20 22 3c 68 31 3e 24   }.  puts "<h1>$
0b90: 6e 61 6d 65 3c 2f 68 31 3e 5c 6e 22 0a 7d 0a 0a  name</h1>\n".}..
0ba0: 70 72 6f 63 20 45 78 61 6d 70 6c 65 20 7b 74 65  proc Example {te
0bb0: 78 74 7d 20 7b 0a 20 20 70 75 74 73 20 22 3c 62  xt} {.  puts "<b
0bc0: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 24  lockquote><pre>$
0bd0: 74 65 78 74 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63  text</pre></bloc
0be0: 6b 71 75 6f 74 65 3e 22 0a 7d 0a 0a 53 65 63 74  kquote>".}..Sect
0bf0: 69 6f 6e 20 7b 42 45 47 49 4e 20 54 52 41 4e 53  ion {BEGIN TRANS
0c00: 41 43 54 49 4f 4e 7d 20 63 72 65 61 74 65 69 6e  ACTION} createin
0c10: 64 65 78 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  dex..Syntax {sql
0c20: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 42 45  -statement} {.BE
0c30: 47 49 4e 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e  GIN [TRANSACTION
0c40: 20 5b 3c 6e 61 6d 65 3e 5d 5d 20 5b 4f 4e 20 43   [<name>]] [ON C
0c50: 4f 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c 69 63  ONFLICT <conflic
0c60: 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 5d 0a 7d 0a  t-algorithm>].}.
0c70: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
0c80: 65 6d 65 6e 74 7d 20 7b 0a 45 4e 44 20 5b 54 52  ement} {.END [TR
0c90: 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65  ANSACTION [<name
0ca0: 3e 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71  >]].}.Syntax {sq
0cb0: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43  l-statement} {.C
0cc0: 4f 4d 4d 49 54 20 5b 54 52 41 4e 53 41 43 54 49  OMMIT [TRANSACTI
0cd0: 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53  ON [<name>]].}.S
0ce0: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
0cf0: 6d 65 6e 74 7d 20 7b 0a 52 4f 4c 4c 42 41 43 4b  ment} {.ROLLBACK
0d00: 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b 3c   [TRANSACTION [<
0d10: 6e 61 6d 65 3e 5d 5d 0a 7d 0a 0a 70 75 74 73 20  name>]].}..puts 
0d20: 7b 0a 3c 70 3e 42 65 67 69 6e 6e 69 6e 67 20 69  {.<p>Beginning i
0d30: 6e 20 76 65 72 73 69 6f 6e 20 32 2e 30 2c 20 53  n version 2.0, S
0d40: 51 4c 69 74 65 20 73 75 70 70 6f 72 74 73 20 74  QLite supports t
0d50: 72 61 6e 73 61 63 74 69 6f 6e 73 20 77 69 74 68  ransactions with
0d60: 0a 72 6f 6c 6c 62 61 63 6b 20 61 6e 64 20 61 74  .rollback and at
0d70: 6f 6d 69 63 20 63 6f 6d 6d 69 74 2e 3c 2f 70 3e  omic commit.</p>
0d80: 0a 0a 3c 70 3e 0a 4e 6f 20 63 68 61 6e 67 65 73  ..<p>.No changes
0d90: 20 63 61 6e 20 62 65 20 6d 61 64 65 20 74 6f 20   can be made to 
0da0: 74 68 65 20 64 61 74 61 62 61 73 65 20 65 78 63  the database exc
0db0: 65 70 74 20 77 69 74 68 69 6e 20 61 20 74 72 61  ept within a tra
0dc0: 6e 73 61 63 74 69 6f 6e 2e 0a 41 6e 79 20 63 6f  nsaction..Any co
0dd0: 6d 6d 61 6e 64 20 74 68 61 74 20 63 68 61 6e 67  mmand that chang
0de0: 65 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20  es the database 
0df0: 28 62 61 73 69 63 61 6c 6c 79 2c 20 61 6e 79 20  (basically, any 
0e00: 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a 6f 74 68 65  SQL command.othe
0e10: 72 20 74 68 61 6e 20 53 45 4c 45 43 54 29 20 77  r than SELECT) w
0e20: 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ill automaticall
0e30: 79 20 73 74 61 72 74 73 20 61 20 74 72 61 6e 73  y starts a trans
0e40: 61 63 74 69 6f 6e 20 69 66 0a 6f 6e 65 20 69 73  action if.one is
0e50: 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 69 6e 20   not already in 
0e60: 65 66 66 65 63 74 2e 20 20 41 75 74 6f 6d 61 74  effect.  Automat
0e70: 69 63 61 6c 6c 79 20 73 74 61 72 65 64 20 74 72  ically stared tr
0e80: 61 6e 73 61 63 74 69 6f 6e 73 0a 61 72 65 20 63  ansactions.are c
0e90: 6f 6d 6d 69 74 74 65 64 20 61 74 20 74 68 65 20  ommitted at the 
0ea0: 63 6f 6e 63 6c 75 73 69 6f 6e 20 6f 66 20 74 68  conclusion of th
0eb0: 65 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e 0a  e command..</p>.
0ec0: 0a 3c 70 3e 0a 54 72 61 6e 73 61 63 74 69 6f 6e  .<p>.Transaction
0ed0: 73 20 63 61 6e 20 62 65 20 73 74 61 72 74 65 64  s can be started
0ee0: 20 6d 61 6e 75 61 6c 6c 79 20 75 73 69 6e 67 20   manually using 
0ef0: 74 68 65 20 42 45 47 49 4e 0a 63 6f 6d 6d 61 6e  the BEGIN.comman
0f00: 64 2e 20 53 75 63 68 20 74 72 61 6e 73 61 63 74  d. Such transact
0f10: 69 6f 6e 73 20 75 73 75 61 6c 6c 79 20 70 65 72  ions usually per
0f20: 73 69 73 74 20 75 6e 74 69 6c 20 74 68 65 20 6e  sist until the n
0f30: 65 78 74 0a 43 4f 4d 4d 49 54 20 6f 72 20 52 4f  ext.COMMIT or RO
0f40: 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 2e 20  LLBACK command. 
0f50: 42 75 74 20 61 20 74 72 61 6e 73 61 63 74 69 6f  But a transactio
0f60: 6e 20 77 69 6c 6c 20 61 6c 73 6f 20 0a 52 4f 4c  n will also .ROL
0f70: 4c 42 41 43 4b 20 69 66 20 74 68 65 20 64 61 74  LBACK if the dat
0f80: 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64 20  abase is closed 
0f90: 6f 72 20 69 66 20 61 6e 20 65 72 72 6f 72 20 6f  or if an error o
0fa0: 63 63 75 72 73 0a 61 6e 64 20 74 68 65 20 52 4f  ccurs.and the RO
0fb0: 4c 4c 42 41 43 4b 20 63 6f 6e 66 6c 69 63 74 20  LLBACK conflict 
0fc0: 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
0fd0: 69 74 68 6d 20 69 73 20 73 70 65 63 69 66 69 65  ithm is specifie
0fe0: 64 2e 0a 53 65 65 20 74 68 65 20 64 6f 63 75 6d  d..See the docum
0ff0: 65 6e 74 69 6f 6e 20 6f 6e 20 74 68 65 20 3c 61  ention on the <a
1000: 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74   href="#conflict
1010: 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61  ">ON CONFLICT</a
1020: 3e 0a 63 6c 61 75 73 65 20 66 6f 72 20 61 64 64  >.clause for add
1030: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
1040: 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 52 4f  ion about the RO
1050: 4c 4c 42 41 43 4b 0a 63 6f 6e 66 6c 69 63 74 20  LLBACK.conflict 
1060: 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
1070: 69 74 68 6d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  ithm..</p>..<p>.
1080: 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4f 4e 20  The optional ON 
1090: 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20  CONFLICT clause 
10a0: 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 61 20  at the end of a 
10b0: 42 45 47 49 4e 20 73 74 61 74 65 6d 65 6e 74 0a  BEGIN statement.
10c0: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 63  can be used to c
10d0: 68 61 6e 67 65 64 20 74 68 65 20 64 65 66 61 75  hanged the defau
10e0: 6c 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  lt conflict reso
10f0: 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
1100: 2e 0a 54 68 65 20 6e 6f 72 6d 61 6c 20 64 65 66  ..The normal def
1110: 61 75 6c 74 20 69 73 20 41 42 4f 52 54 2e 20 20  ault is ABORT.  
1120: 49 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  If an alternativ
1130: 65 20 69 73 20 73 70 65 63 69 66 69 65 64 20 62  e is specified b
1140: 79 0a 74 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43  y.the ON CONFLIC
1150: 54 20 63 6c 61 75 73 65 20 6f 66 20 61 20 42 45  T clause of a BE
1160: 47 49 4e 2c 20 74 68 65 6e 20 74 68 61 74 20 61  GIN, then that a
1170: 6c 74 65 72 6e 61 74 69 76 65 20 69 73 20 75 73  lternative is us
1180: 65 64 0a 61 73 20 74 68 65 20 64 65 66 61 75 6c  ed.as the defaul
1190: 74 20 66 6f 72 20 61 6c 6c 20 63 6f 6d 6d 61 6e  t for all comman
11a0: 64 73 20 77 69 74 68 69 6e 20 74 68 65 20 74 72  ds within the tr
11b0: 61 6e 73 61 63 74 69 6f 6e 2e 20 20 54 68 65 20  ansaction.  The 
11c0: 64 65 66 61 75 6c 74 0a 61 6c 67 6f 72 69 74 68  default.algorith
11d0: 6d 20 69 73 20 6f 76 65 72 72 69 64 64 65 6e 20  m is overridden 
11e0: 62 79 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63  by ON CONFLICT c
11f0: 6c 61 75 73 65 73 20 6f 6e 20 69 6e 64 69 76 69  lauses on indivi
1200: 64 75 61 6c 0a 63 6f 6e 73 74 72 61 69 6e 74 73  dual.constraints
1210: 20 77 69 74 68 69 6e 20 74 68 65 20 43 52 45 41   within the CREA
1220: 54 45 20 54 41 42 4c 45 20 6f 72 20 43 52 45 41  TE TABLE or CREA
1230: 54 45 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65  TE INDEX stateme
1240: 6e 74 73 0a 61 6e 64 20 62 79 20 74 68 65 20 4f  nts.and by the O
1250: 52 20 63 6c 61 75 73 65 73 20 6f 6e 20 43 4f 50  R clauses on COP
1260: 59 2c 20 49 4e 53 45 52 54 2c 20 61 6e 64 20 55  Y, INSERT, and U
1270: 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64 73 2e 0a  PDATE commands..
1280: 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20  </p>.}..Section 
1290: 43 4f 50 59 20 63 6f 70 79 0a 0a 53 79 6e 74 61  COPY copy..Synta
12a0: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
12b0: 7d 20 7b 0a 43 4f 50 59 20 5b 20 4f 52 20 3c 63  } {.COPY [ OR <c
12c0: 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68  onflict-algorith
12d0: 6d 3e 20 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65  m> ] <table-name
12e0: 3e 20 46 52 4f 4d 20 3c 66 69 6c 65 6e 61 6d 65  > FROM <filename
12f0: 3e 0a 5b 20 55 53 49 4e 47 20 44 45 4c 49 4d 49  >.[ USING DELIMI
1300: 54 45 52 53 20 3c 64 65 6c 69 6d 3e 20 5d 0a 7d  TERS <delim> ].}
1310: 0a 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  ...puts {.<p>The
1320: 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 69 73   COPY command is
1330: 20 61 6e 20 65 78 74 65 6e 73 69 6f 6e 20 75 73   an extension us
1340: 65 64 20 74 6f 20 6c 6f 61 64 20 6c 61 72 67 65  ed to load large
1350: 20 61 6d 6f 75 6e 74 73 20 6f 66 0a 64 61 74 61   amounts of.data
1360: 20 69 6e 74 6f 20 61 20 74 61 62 6c 65 2e 20 20   into a table.  
1370: 49 74 20 69 73 20 6d 6f 64 65 6c 65 64 20 61 66  It is modeled af
1380: 74 65 72 20 61 20 73 69 6d 69 6c 61 72 20 63 6f  ter a similar co
1390: 6d 6d 61 6e 64 20 66 6f 75 6e 64 0a 69 6e 20 50  mmand found.in P
13a0: 6f 73 74 67 72 65 53 51 4c 2e 20 20 49 6e 20 66  ostgreSQL.  In f
13b0: 61 63 74 2c 20 74 68 65 20 53 51 4c 69 74 65 20  act, the SQLite 
13c0: 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 69 73 20  COPY command is 
13d0: 73 70 65 63 69 66 69 63 61 6c 6c 79 0a 64 65 73  specifically.des
13e0: 69 67 6e 65 64 20 74 6f 20 62 65 20 61 62 6c 65  igned to be able
13f0: 20 74 6f 20 72 65 61 64 20 74 68 65 20 6f 75 74   to read the out
1400: 70 75 74 20 6f 66 20 74 68 65 20 50 6f 73 74 67  put of the Postg
1410: 72 65 53 51 4c 20 64 75 6d 70 0a 75 74 69 6c 69  reSQL dump.utili
1420: 74 79 20 3c 62 3e 70 67 5f 64 75 6d 70 3c 2f 62  ty <b>pg_dump</b
1430: 3e 20 73 6f 20 74 68 61 74 20 64 61 74 61 20 63  > so that data c
1440: 61 6e 20 62 65 20 65 61 73 69 6c 79 20 74 72 61  an be easily tra
1450: 6e 73 66 65 72 72 65 64 20 66 72 6f 6d 0a 50 6f  nsferred from.Po
1460: 73 74 67 72 65 53 51 4c 20 69 6e 74 6f 20 53 51  stgreSQL into SQ
1470: 4c 69 74 65 2e 3c 70 3e 0a 0a 3c 70 3e 54 68 65  Lite.<p>..<p>The
1480: 20 74 61 62 6c 65 2d 6e 61 6d 65 20 69 73 20 74   table-name is t
1490: 68 65 20 6e 61 6d 65 20 6f 66 20 61 6e 20 65 78  he name of an ex
14a0: 69 73 74 69 6e 67 20 74 61 62 6c 65 20 77 68 69  isting table whi
14b0: 63 68 20 69 73 20 74 6f 0a 62 65 20 66 69 6c 6c  ch is to.be fill
14c0: 65 64 20 77 69 74 68 20 64 61 74 61 2e 20 20 54  ed with data.  T
14d0: 68 65 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 61  he filename is a
14e0: 20 73 74 72 69 6e 67 20 6f 72 20 69 64 65 6e 74   string or ident
14f0: 69 66 69 65 72 20 74 68 61 74 0a 6e 61 6d 65 73  ifier that.names
1500: 20 61 20 66 69 6c 65 20 66 72 6f 6d 20 77 68 69   a file from whi
1510: 63 68 20 64 61 74 61 20 77 69 6c 6c 20 62 65 20  ch data will be 
1520: 72 65 61 64 2e 20 20 54 68 65 20 66 69 6c 65 6e  read.  The filen
1530: 61 6d 65 20 63 61 6e 20 62 65 0a 74 68 65 20 3c  ame can be.the <
1540: 62 3e 53 54 44 49 4e 3c 2f 62 3e 20 74 6f 20 72  b>STDIN</b> to r
1550: 65 61 64 20 64 61 74 61 20 66 72 6f 6d 20 73 74  ead data from st
1560: 61 6e 64 61 72 64 20 69 6e 70 75 74 2e 3c 70 3e  andard input.<p>
1570: 0a 0a 3c 70 3e 45 61 63 68 20 6c 69 6e 65 20 6f  ..<p>Each line o
1580: 66 20 74 68 65 20 69 6e 70 75 74 20 66 69 6c 65  f the input file
1590: 20 69 73 20 63 6f 6e 76 65 72 74 65 64 20 69 6e   is converted in
15a0: 74 6f 20 61 20 73 69 6e 67 6c 65 20 72 65 63 6f  to a single reco
15b0: 72 64 0a 69 6e 20 74 68 65 20 74 61 62 6c 65 2e  rd.in the table.
15c0: 20 20 43 6f 6c 75 6d 6e 73 20 61 72 65 20 73 65    Columns are se
15d0: 70 61 72 61 74 65 64 20 62 79 20 74 61 62 73 2e  parated by tabs.
15e0: 20 20 49 66 20 61 20 74 61 62 20 6f 63 63 75 72    If a tab occur
15f0: 73 20 61 73 0a 64 61 74 61 20 77 69 74 68 69 6e  s as.data within
1600: 20 61 20 63 6f 6c 75 6d 6e 2c 20 74 68 65 6e 20   a column, then 
1610: 74 68 61 74 20 74 61 62 20 69 73 20 70 72 65 63  that tab is prec
1620: 65 64 65 64 20 62 79 20 61 20 62 61 73 6b 73 6c  eded by a basksl
1630: 61 73 68 20 22 5c 22 0a 63 68 61 72 61 63 74 65  ash "\".characte
1640: 72 2e 20 20 41 20 62 61 73 6b 73 6c 61 73 68 20  r.  A baskslash 
1650: 69 6e 20 74 68 65 20 64 61 74 61 20 61 70 70 65  in the data appe
1660: 61 72 73 20 61 73 20 74 77 6f 20 62 61 63 6b 73  ars as two backs
1670: 6c 61 73 68 65 73 20 69 6e 0a 61 20 72 6f 77 2e  lashes in.a row.
1680: 20 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 55    The optional U
1690: 53 49 4e 47 20 44 45 4c 49 4d 49 54 45 52 53 20  SING DELIMITERS 
16a0: 63 6c 61 75 73 65 20 63 61 6e 20 73 70 65 63 69  clause can speci
16b0: 66 79 20 61 20 64 65 6c 69 6d 69 74 65 72 0a 6f  fy a delimiter.o
16c0: 74 68 65 72 20 74 68 61 6e 20 74 61 62 2e 3c 2f  ther than tab.</
16d0: 70 3e 0a 0a 3c 70 3e 49 66 20 61 20 63 6f 6c 75  p>..<p>If a colu
16e0: 6d 6e 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74  mn consists of t
16f0: 68 65 20 63 68 61 72 61 63 74 65 72 20 22 5c 4e  he character "\N
1700: 22 2c 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69  ", that column i
1710: 73 20 66 69 6c 6c 65 64 0a 77 69 74 68 20 74 68  s filled.with th
1720: 65 20 76 61 6c 75 65 20 4e 55 4c 4c 2e 3c 2f 70  e value NULL.</p
1730: 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e  >..<p>The option
1740: 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  al conflict-clau
1750: 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70  se allows the sp
1760: 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61  ecification of a
1770: 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f  n alternative.co
1780: 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63  nstraint conflic
1790: 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t resolution alg
17a0: 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20 66 6f  orithm to use fo
17b0: 72 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61  r this one comma
17c0: 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74  nd..See the sect
17d0: 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68 72  ion titled.<a hr
17e0: 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f  ef="#conflict">O
17f0: 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66  N CONFLICT</a> f
1800: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
1810: 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a  formation.</p>..
1820: 3c 70 3e 57 68 65 6e 20 74 68 65 20 69 6e 70 75  <p>When the inpu
1830: 74 20 64 61 74 61 20 73 6f 75 72 63 65 20 69 73  t data source is
1840: 20 53 54 44 49 4e 2c 20 74 68 65 20 69 6e 70 75   STDIN, the inpu
1850: 74 20 63 61 6e 20 62 65 20 74 65 72 6d 69 6e 61  t can be termina
1860: 74 65 64 0a 62 79 20 61 20 6c 69 6e 65 20 74 68  ted.by a line th
1870: 61 74 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 6c 79  at contains only
1880: 20 61 20 62 61 73 6b 73 6c 61 73 68 20 61 6e 64   a baskslash and
1890: 20 61 20 64 6f 74 3a 7d 0a 70 75 74 73 20 22 5c   a dot:}.puts "\
18a0: 22 5b 4f 70 65 72 61 74 6f 72 20 5c 5c 2e 5d 5c  "[Operator \\.]\
18b0: 22 2e 3c 2f 70 3e 22 0a 0a 53 65 63 74 69 6f 6e  ".</p>"..Section
18c0: 20 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20   {CREATE INDEX} 
18d0: 63 72 65 61 74 65 69 6e 64 65 78 0a 0a 53 79 6e  createindex..Syn
18e0: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
18f0: 6e 74 7d 20 7b 0a 43 52 45 41 54 45 20 5b 55 4e  nt} {.CREATE [UN
1900: 49 51 55 45 5d 20 49 4e 44 45 58 20 3c 69 6e 64  IQUE] INDEX <ind
1910: 65 78 2d 6e 61 6d 65 3e 20 0a 4f 4e 20 3c 74 61  ex-name> .ON <ta
1920: 62 6c 65 2d 6e 61 6d 65 3e 20 28 20 3c 63 6f 6c  ble-name> ( <col
1930: 75 6d 6e 2d 6e 61 6d 65 3e 20 5b 2c 20 3c 63 6f  umn-name> [, <co
1940: 6c 75 6d 6e 2d 6e 61 6d 65 3e 5d 2a 20 29 0a 5b  lumn-name>]* ).[
1950: 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c 63 6f   ON CONFLICT <co
1960: 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d  nflict-algorithm
1970: 3e 20 5d 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 6e 61  > ].} {column-na
1980: 6d 65 7d 20 7b 0a 3c 6e 61 6d 65 3e 20 5b 20 41  me} {.<name> [ A
1990: 53 43 20 7c 20 44 45 53 43 20 5d 0a 7d 0a 0a 0a  SC | DESC ].}...
19a0: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43 52  puts {.<p>The CR
19b0: 45 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61  EATE INDEX comma
19c0: 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74  nd consists of t
19d0: 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45  he keywords "CRE
19e0: 41 54 45 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f  ATE INDEX" follo
19f0: 77 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65 20  wed.by the name 
1a00: 6f 66 20 74 68 65 20 6e 65 77 20 69 6e 64 65 78  of the new index
1a10: 2c 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22 4f  , the keyword "O
1a20: 4e 22 2c 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  N", the name of 
1a30: 61 20 70 72 65 76 69 6f 75 73 6c 79 0a 63 72 65  a previously.cre
1a40: 61 74 65 64 20 74 61 62 6c 65 20 74 68 61 74 20  ated table that 
1a50: 69 73 20 74 6f 20 62 65 20 69 6e 64 65 78 65 64  is to be indexed
1a60: 2c 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68 65  , and a parenthe
1a70: 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 6e 61  sized list of na
1a80: 6d 65 73 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20 69  mes of.columns i
1a90: 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  n the table that
1aa0: 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 74 68   are used for th
1ab0: 65 20 69 6e 64 65 78 20 6b 65 79 2e 0a 45 61 63  e index key..Eac
1ac0: 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61  h column name ca
1ad0: 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79  n be followed by
1ae0: 20 6f 6e 65 20 6f 66 20 74 68 65 20 22 41 53 43   one of the "ASC
1af0: 22 20 6f 72 20 22 44 45 53 43 22 20 6b 65 79 77  " or "DESC" keyw
1b00: 6f 72 64 73 0a 74 6f 20 69 6e 64 69 63 61 74 65  ords.to indicate
1b10: 20 73 6f 72 74 20 6f 72 64 65 72 2c 20 62 75 74   sort order, but
1b20: 20 74 68 65 20 73 6f 72 74 20 6f 72 64 65 72 20   the sort order 
1b30: 69 73 20 69 67 6e 6f 72 65 64 20 69 6e 20 74 68  is ignored in th
1b40: 65 20 63 75 72 72 65 6e 74 0a 69 6d 70 6c 65 6d  e current.implem
1b50: 65 6e 74 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c  entation.</p>..<
1b60: 70 3e 54 68 65 72 65 20 61 72 65 20 6e 6f 20 61  p>There are no a
1b70: 72 62 69 74 72 61 72 79 20 6c 69 6d 69 74 73 20  rbitrary limits 
1b80: 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  on the number of
1b90: 20 69 6e 64 69 63 65 73 20 74 68 61 74 20 63 61   indices that ca
1ba0: 6e 20 62 65 0a 61 74 74 61 63 68 65 64 20 74 6f  n be.attached to
1bb0: 20 61 20 73 69 6e 67 6c 65 20 74 61 62 6c 65 2c   a single table,
1bc0: 20 6e 6f 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62   nor on the numb
1bd0: 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
1be0: 20 61 6e 20 69 6e 64 65 78 2e 3c 2f 70 3e 0a 0a   an index.</p>..
1bf0: 3c 70 3e 49 66 20 74 68 65 20 55 4e 49 51 55 45  <p>If the UNIQUE
1c00: 20 6b 65 79 77 6f 72 64 20 61 70 70 65 61 72 73   keyword appears
1c10: 20 62 65 74 77 65 65 6e 20 43 52 45 41 54 45 20   between CREATE 
1c20: 61 6e 64 20 49 4e 44 45 58 20 74 68 65 6e 20 64  and INDEX then d
1c30: 75 70 6c 69 63 61 74 65 0a 69 6e 64 65 78 20 65  uplicate.index e
1c40: 6e 74 72 69 65 73 20 61 72 65 20 6e 6f 74 20 61  ntries are not a
1c50: 6c 6c 6f 77 65 64 2e 20 20 41 6e 79 20 61 74 74  llowed.  Any att
1c60: 65 6d 70 74 20 74 6f 20 69 6e 73 65 72 74 20 61  empt to insert a
1c70: 20 64 75 70 6c 69 63 61 74 65 20 65 6e 74 72 79   duplicate entry
1c80: 0a 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20  .will result in 
1c90: 61 20 72 6f 6c 6c 62 61 63 6b 20 61 6e 64 20 61  a rollback and a
1ca0: 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e  n error message.
1cb0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74  </p>..<p>The opt
1cc0: 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63  ional conflict-c
1cd0: 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65  lause allows the
1ce0: 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f   specification o
1cf0: 66 20 61 6c 20 61 6c 74 65 72 6e 61 74 69 76 65  f al alternative
1d00: 0a 64 65 66 61 75 6c 74 20 63 6f 6e 73 74 72 61  .default constra
1d10: 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73  int conflict res
1d20: 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68  olution algorith
1d30: 6d 20 66 6f 72 20 74 68 69 73 20 69 6e 64 65 78  m for this index
1d40: 2e 0a 54 68 69 73 20 6f 6e 6c 79 20 6d 61 6b 65  ..This only make
1d50: 73 20 73 65 6e 73 65 20 69 66 20 74 68 65 20 55  s sense if the U
1d60: 4e 49 51 55 45 20 6b 65 79 77 6f 72 64 20 69 73  NIQUE keyword is
1d70: 20 75 73 65 64 20 73 69 6e 63 65 20 6f 74 68 65   used since othe
1d80: 72 77 69 73 65 0a 74 68 65 72 65 20 61 72 65 20  rwise.there are 
1d90: 6e 6f 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  not constraints 
1da0: 6f 6e 20 74 68 65 20 69 6e 64 65 78 2e 20 20 54  on the index.  T
1db0: 68 65 20 64 65 66 61 75 6c 74 20 61 6c 67 6f 72  he default algor
1dc0: 69 74 68 6d 20 69 73 0a 41 42 4f 52 54 2e 20 20  ithm is.ABORT.  
1dd0: 49 66 20 61 20 43 4f 50 59 2c 20 49 4e 53 45 52  If a COPY, INSER
1de0: 54 2c 20 6f 72 20 55 50 44 41 54 45 20 73 74 61  T, or UPDATE sta
1df0: 74 65 6d 65 6e 74 20 73 70 65 63 69 66 69 65 73  tement specifies
1e00: 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a 63 6f   a particular.co
1e10: 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
1e20: 6e 20 61 6c 67 6f 72 69 74 68 6d 2c 20 74 68 61  n algorithm, tha
1e30: 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  t algorithm is u
1e40: 73 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 0a  sed in place of.
1e50: 74 68 65 20 64 65 66 61 75 6c 74 20 61 6c 67 6f  the default algo
1e60: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
1e70: 68 65 72 65 2e 0a 53 65 65 20 74 68 65 20 73 65  here..See the se
1e80: 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20  ction titled.<a 
1e90: 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22  href="#conflict"
1ea0: 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e  >ON CONFLICT</a>
1eb0: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
1ec0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e  information.</p>
1ed0: 0a 0a 3c 70 3e 54 68 65 20 65 78 61 63 74 20 74  ..<p>The exact t
1ee0: 65 78 74 0a 6f 66 20 65 61 63 68 20 43 52 45 41  ext.of each CREA
1ef0: 54 45 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65  TE INDEX stateme
1f00: 6e 74 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20  nt is stored in 
1f10: 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61  the <b>sqlite_ma
1f20: 73 74 65 72 3c 2f 62 3e 0a 74 61 62 6c 65 2e 20  ster</b>.table. 
1f30: 20 45 76 65 72 79 74 69 6d 65 20 74 68 65 20 64   Everytime the d
1f40: 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65  atabase is opene
1f50: 64 2c 20 61 6c 6c 20 43 52 45 41 54 45 20 49 4e  d, all CREATE IN
1f60: 44 45 58 20 73 74 61 74 65 6d 65 6e 74 73 0a 61  DEX statements.a
1f70: 72 65 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  re read from the
1f80: 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65   <b>sqlite_maste
1f90: 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61 6e 64 20  r</b> table and 
1fa0: 75 73 65 64 20 74 6f 20 72 65 67 65 6e 65 72 61  used to regenera
1fb0: 74 65 0a 53 51 4c 69 74 65 27 73 20 69 6e 74 65  te.SQLite's inte
1fc0: 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74  rnal representat
1fd0: 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 64 65 78  ion of the index
1fe0: 20 6c 61 79 6f 75 74 2e 3c 2f 70 3e 0a 7d 0a 0a   layout.</p>.}..
1ff0: 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45  .Section {CREATE
2000: 20 54 41 42 4c 45 7d 20 7b 63 72 65 61 74 65 74   TABLE} {createt
2010: 61 62 6c 65 7d 0a 0a 53 79 6e 74 61 78 20 7b 73  able}..Syntax {s
2020: 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43 52  ql-command} {.CR
2030: 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45 4d  EATE [TEMP | TEM
2040: 50 4f 52 41 52 59 5d 20 54 41 42 4c 45 20 3c 74  PORARY] TABLE <t
2050: 61 62 6c 65 2d 6e 61 6d 65 3e 20 28 0a 20 20 3c  able-name> (.  <
2060: 63 6f 6c 75 6d 6e 2d 64 65 66 3e 20 5b 2c 20 3c  column-def> [, <
2070: 63 6f 6c 75 6d 6e 2d 64 65 66 3e 5d 2a 0a 20 20  column-def>]*.  
2080: 5b 2c 20 3c 63 6f 6e 73 74 72 61 69 6e 74 3e 5d  [, <constraint>]
2090: 2a 0a 29 0a 7d 20 7b 73 71 6c 2d 63 6f 6d 6d 61  *.).} {sql-comma
20a0: 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45  nd} {.CREATE [TE
20b0: 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20  MP | TEMPORARY] 
20c0: 54 41 42 4c 45 20 3c 74 61 62 6c 65 2d 6e 61 6d  TABLE <table-nam
20d0: 65 3e 20 41 53 20 3c 73 65 6c 65 63 74 2d 73 74  e> AS <select-st
20e0: 61 74 65 6d 65 6e 74 3e 0a 7d 20 7b 63 6f 6c 75  atement>.} {colu
20f0: 6d 6e 2d 64 65 66 7d 20 7b 0a 3c 6e 61 6d 65 3e  mn-def} {.<name>
2100: 20 5b 3c 74 79 70 65 3e 5d 20 5b 3c 63 6f 6c 75   [<type>] [<colu
2110: 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e 74 3e 5d 2a  mn-constraint>]*
2120: 0a 7d 20 7b 74 79 70 65 7d 20 7b 0a 3c 74 79 70  .} {type} {.<typ
2130: 65 6e 61 6d 65 3e 20 7c 0a 3c 74 79 70 65 6e 61  ename> |.<typena
2140: 6d 65 3e 20 28 20 3c 6e 75 6d 62 65 72 3e 20 29  me> ( <number> )
2150: 20 7c 0a 3c 74 79 70 65 6e 61 6d 65 3e 20 28 20   |.<typename> ( 
2160: 3c 6e 75 6d 62 65 72 3e 20 2c 20 3c 6e 75 6d 62  <number> , <numb
2170: 65 72 3e 20 29 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d  er> ).} {column-
2180: 63 6f 6e 73 74 72 61 69 6e 74 7d 20 7b 0a 4e 4f  constraint} {.NO
2190: 54 20 4e 55 4c 4c 20 5b 20 3c 63 6f 6e 66 6c 69  T NULL [ <confli
21a0: 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 50  ct-clause> ] |.P
21b0: 52 49 4d 41 52 59 20 4b 45 59 20 5b 3c 73 6f 72  RIMARY KEY [<sor
21c0: 74 2d 6f 72 64 65 72 3e 5d 20 5b 20 3c 63 6f 6e  t-order>] [ <con
21d0: 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20  flict-clause> ] 
21e0: 7c 0a 55 4e 49 51 55 45 20 5b 20 3c 63 6f 6e 66  |.UNIQUE [ <conf
21f0: 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c  lict-clause> ] |
2200: 0a 43 48 45 43 4b 20 28 20 3c 65 78 70 72 3e 20  .CHECK ( <expr> 
2210: 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c  ) [ <conflict-cl
2220: 61 75 73 65 3e 20 5d 20 7c 0a 44 45 46 41 55 4c  ause> ] |.DEFAUL
2230: 54 20 3c 76 61 6c 75 65 3e 0a 7d 20 7b 63 6f 6e  T <value>.} {con
2240: 73 74 72 61 69 6e 74 7d 20 7b 0a 50 52 49 4d 41  straint} {.PRIMA
2250: 52 59 20 4b 45 59 20 28 20 3c 6e 61 6d 65 3e 20  RY KEY ( <name> 
2260: 5b 2c 20 3c 6e 61 6d 65 3e 5d 2a 20 29 20 5b 20  [, <name>]* ) [ 
2270: 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65  <conflict-clause
2280: 3e 20 5d 7c 0a 55 4e 49 51 55 45 20 28 20 3c 6e  > ]|.UNIQUE ( <n
2290: 61 6d 65 3e 20 5b 2c 20 3c 6e 61 6d 65 3e 5d 2a  ame> [, <name>]*
22a0: 20 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63   ) [ <conflict-c
22b0: 6c 61 75 73 65 3e 20 5d 20 7c 0a 43 48 45 43 4b  lause> ] |.CHECK
22c0: 20 28 20 3c 65 78 70 72 3e 20 29 20 5b 20 3c 63   ( <expr> ) [ <c
22d0: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20  onflict-clause> 
22e0: 5d 0a 7d 20 7b 63 6f 6e 66 6c 69 63 74 2d 63 6c  ].} {conflict-cl
22f0: 61 75 73 65 7d 20 7b 0a 4f 4e 20 43 4f 4e 46 4c  ause} {.ON CONFL
2300: 49 43 54 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c  ICT <conflict-al
2310: 67 6f 72 69 74 68 6d 3e 0a 7d 0a 0a 70 75 74 73  gorithm>.}..puts
2320: 20 7b 0a 3c 70 3e 41 20 43 52 45 41 54 45 20 54   {.<p>A CREATE T
2330: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69  ABLE statement i
2340: 73 20 62 61 73 69 63 61 6c 6c 79 20 74 68 65 20  s basically the 
2350: 6b 65 79 77 6f 72 64 73 20 22 43 52 45 41 54 45  keywords "CREATE
2360: 20 54 41 42 4c 45 22 0a 66 6f 6c 6c 6f 77 65 64   TABLE".followed
2370: 20 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   by the name of 
2380: 61 20 6e 65 77 20 74 61 62 6c 65 20 61 6e 64 20  a new table and 
2390: 61 20 70 61 72 65 6e 74 68 65 73 69 7a 65 64 20  a parenthesized 
23a0: 6c 69 73 74 20 6f 66 20 63 6f 6c 75 6d 6e 0a 64  list of column.d
23b0: 65 66 69 6e 69 74 69 6f 6e 73 20 61 6e 64 20 63  efinitions and c
23c0: 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20 54 68 65  onstraints.  The
23d0: 20 74 61 62 6c 65 20 6e 61 6d 65 20 63 61 6e 20   table name can 
23e0: 62 65 20 65 69 74 68 65 72 20 61 6e 20 69 64 65  be either an ide
23f0: 6e 74 69 66 69 65 72 0a 6f 72 20 61 20 73 74 72  ntifier.or a str
2400: 69 6e 67 2e 20 20 54 68 65 20 6f 6e 6c 79 20 72  ing.  The only r
2410: 65 73 65 72 76 65 64 20 74 61 62 6c 65 20 6e 61  eserved table na
2420: 6d 65 20 69 73 20 22 3c 62 3e 73 71 6c 69 74 65  me is "<b>sqlite
2430: 5f 6d 61 73 74 65 72 3c 2f 62 3e 22 20 77 68 69  _master</b>" whi
2440: 63 68 0a 69 73 20 74 68 65 20 6e 61 6d 65 20 6f  ch.is the name o
2450: 66 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  f the table that
2460: 20 72 65 63 6f 72 64 73 20 74 68 65 20 64 61 74   records the dat
2470: 61 62 61 73 65 20 73 63 68 65 6d 61 2e 3c 2f 70  abase schema.</p
2480: 3e 0a 0a 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d  >..<p>Each colum
2490: 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 69 73 20  n definition is 
24a0: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
24b0: 63 6f 6c 75 6d 6e 20 66 6f 6c 6c 6f 77 65 64 20  column followed 
24c0: 62 79 20 74 68 65 0a 64 61 74 61 74 79 70 65 20  by the.datatype 
24d0: 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c  for that column,
24e0: 20 74 68 65 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72   then one or mor
24f0: 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6c 75 6d  e optional colum
2500: 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 54  n constraints..T
2510: 68 65 20 64 61 74 61 74 79 70 65 20 66 6f 72 20  he datatype for 
2520: 74 68 65 20 63 6f 6c 75 6d 6e 20 69 73 20 28 75  the column is (u
2530: 73 75 61 6c 6c 79 29 20 69 67 6e 6f 72 65 64 20  sually) ignored 
2540: 61 6e 64 20 6d 61 79 20 62 65 20 6f 6d 69 74 74  and may be omitt
2550: 65 64 2e 0a 41 6c 6c 20 69 6e 66 6f 72 6d 61 74  ed..All informat
2560: 69 6f 6e 20 69 73 20 73 74 6f 72 65 64 20 61 73  ion is stored as
2570: 20 6e 75 6c 6c 2d 74 65 72 6d 69 6e 61 74 65 64   null-terminated
2580: 20 73 74 72 69 6e 67 73 2e 0a 54 68 65 20 55 4e   strings..The UN
2590: 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 20  IQUE constraint 
25a0: 63 61 75 73 65 73 20 61 6e 20 69 6e 64 65 78 20  causes an index 
25b0: 74 6f 20 62 65 20 63 72 65 61 74 65 64 20 6f 6e  to be created on
25c0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0a 63   the specified.c
25d0: 6f 6c 75 6d 6e 73 2e 20 20 54 68 69 73 20 69 6e  olumns.  This in
25e0: 64 65 78 20 6d 75 73 74 20 63 6f 6e 74 61 69 6e  dex must contain
25f0: 20 75 6e 69 71 75 65 20 6b 65 79 73 2e 0a 54 68   unique keys..Th
2600: 65 20 44 45 46 41 55 4c 54 20 63 6f 6e 73 74 72  e DEFAULT constr
2610: 61 69 6e 74 0a 73 70 65 63 69 66 69 65 73 20 61  aint.specifies a
2620: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 74   default value t
2630: 6f 20 75 73 65 20 77 68 65 6e 20 64 6f 69 6e 67  o use when doing
2640: 20 61 6e 20 49 4e 53 45 52 54 2e 0a 3c 2f 70 3e   an INSERT..</p>
2650: 0a 0a 3c 70 3e 53 70 65 63 69 66 79 69 6e 67 20  ..<p>Specifying 
2660: 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6e 6f  a PRIMARY KEY no
2670: 72 6d 61 6c 6c 79 20 6a 75 73 74 20 63 72 65 61  rmally just crea
2680: 74 65 73 20 61 20 55 4e 49 51 55 45 20 69 6e 64  tes a UNIQUE ind
2690: 65 78 0a 6f 6e 20 74 68 65 20 70 72 69 6d 61 72  ex.on the primar
26a0: 79 20 6b 65 79 2e 20 20 48 6f 77 65 76 65 72 2c  y key.  However,
26b0: 20 69 66 20 70 72 69 6d 61 72 79 20 6b 65 79 20   if primary key 
26c0: 69 73 20 6f 6e 20 61 20 73 69 6e 67 6c 65 20 63  is on a single c
26d0: 6f 6c 75 6d 6e 0a 74 68 61 74 20 68 61 73 20 64  olumn.that has d
26e0: 61 74 61 74 79 70 65 20 49 4e 54 45 47 45 52 2c  atatype INTEGER,
26f0: 20 74 68 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d   then that colum
2700: 6e 20 69 73 20 75 73 65 64 20 69 6e 74 65 72 6e  n is used intern
2710: 61 6c 6c 79 0a 61 73 20 74 68 65 20 61 63 74 75  ally.as the actu
2720: 61 6c 20 6b 65 79 20 6f 66 20 74 68 65 20 42 2d  al key of the B-
2730: 54 72 65 65 20 66 6f 72 20 74 68 65 20 74 61 62  Tree for the tab
2740: 6c 65 2e 20 20 54 68 69 73 20 6d 65 61 6e 73 20  le.  This means 
2750: 74 68 61 74 20 74 68 65 20 63 6f 6c 75 6d 6e 0a  that the column.
2760: 6d 61 79 20 6f 6e 6c 79 20 68 6f 6c 64 20 75 6e  may only hold un
2770: 69 71 75 65 20 69 6e 74 65 67 65 72 20 76 61 6c  ique integer val
2780: 75 65 73 2e 20 20 28 45 78 63 65 70 74 20 66 6f  ues.  (Except fo
2790: 72 20 74 68 69 73 20 6f 6e 65 20 63 61 73 65 2c  r this one case,
27a0: 0a 53 51 4c 69 74 65 20 69 67 6e 6f 72 65 73 20  .SQLite ignores 
27b0: 74 68 65 20 64 61 74 61 74 79 70 65 20 73 70 65  the datatype spe
27c0: 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 63 6f  cification of co
27d0: 6c 75 6d 6e 73 20 61 6e 64 20 61 6c 6c 6f 77 73  lumns and allows
27e0: 0a 61 6e 79 20 6b 69 6e 64 20 6f 66 20 64 61 74  .any kind of dat
27f0: 61 20 74 6f 20 62 65 20 70 75 74 20 69 6e 20 61  a to be put in a
2800: 20 63 6f 6c 75 6d 6e 20 72 65 67 61 72 64 6c 65   column regardle
2810: 73 73 20 6f 66 20 69 74 73 20 64 65 63 6c 61 72  ss of its declar
2820: 65 64 0a 64 61 74 61 74 79 70 65 2e 29 20 20 49  ed.datatype.)  I
2830: 66 20 61 20 74 61 62 6c 65 20 64 6f 65 73 20 6e  f a table does n
2840: 6f 74 20 68 61 76 65 20 61 6e 20 49 4e 54 45 47  ot have an INTEG
2850: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63  ER PRIMARY KEY c
2860: 6f 6c 75 6d 6e 2c 0a 74 68 65 6e 20 74 68 65 20  olumn,.then the 
2870: 42 2d 54 72 65 65 20 6b 65 79 20 77 69 6c 6c 20  B-Tree key will 
2880: 62 65 20 61 20 61 75 74 6f 6d 61 74 69 63 61 6c  be a automatical
2890: 6c 79 20 67 65 6e 65 72 61 74 65 64 20 69 6e 74  ly generated int
28a0: 65 67 65 72 2e 20 20 54 68 65 0a 42 2d 54 72 65  eger.  The.B-Tre
28b0: 65 20 6b 65 79 20 66 6f 72 20 61 20 72 6f 77 20  e key for a row 
28c0: 63 61 6e 20 61 6c 77 61 79 73 20 62 65 20 61 63  can always be ac
28d0: 63 65 73 73 65 64 20 75 73 69 6e 67 20 6f 6e 65  cessed using one
28e0: 20 6f 66 20 74 68 65 0a 73 70 65 63 69 61 6c 20   of the.special 
28f0: 6e 61 6d 65 73 20 22 3c 62 3e 52 4f 57 49 44 3c  names "<b>ROWID<
2900: 2f 62 3e 22 2c 20 22 3c 62 3e 4f 49 44 3c 2f 62  /b>", "<b>OID</b
2910: 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49  >", or "<b>_ROWI
2920: 44 5f 3c 2f 62 3e 22 2e 0a 54 68 69 73 20 69 73  D_</b>"..This is
2930: 20 74 72 75 65 20 72 65 67 61 72 64 6c 65 73 73   true regardless
2940: 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e   of whether or n
2950: 6f 74 20 74 68 65 72 65 20 69 73 20 61 6e 20 49  ot there is an I
2960: 4e 54 45 47 45 52 0a 50 52 49 4d 41 52 59 20 4b  NTEGER.PRIMARY K
2970: 45 59 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74  EY.</p>..<p>If t
2980: 68 65 20 22 54 45 4d 50 22 20 6f 72 20 22 54 45  he "TEMP" or "TE
2990: 4d 50 4f 52 41 52 59 22 20 6b 65 79 77 6f 72 64  MPORARY" keyword
29a0: 20 6f 63 63 75 72 73 20 69 6e 20 62 65 74 77 65   occurs in betwe
29b0: 65 6e 20 22 43 52 45 41 54 45 22 0a 61 6e 64 20  en "CREATE".and 
29c0: 22 54 41 42 4c 45 22 20 74 68 65 6e 20 74 68 65  "TABLE" then the
29d0: 20 74 61 62 6c 65 20 74 68 61 74 20 69 73 20 63   table that is c
29e0: 72 65 61 74 65 64 20 69 73 20 6f 6e 6c 79 20 76  reated is only v
29f0: 69 73 69 62 6c 65 20 74 6f 20 74 68 65 0a 70 72  isible to the.pr
2a00: 6f 63 65 73 73 20 74 68 61 74 20 6f 70 65 6e 65  ocess that opene
2a10: 64 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  d the database a
2a20: 6e 64 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61  nd is automatica
2a30: 6c 6c 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e  lly deleted when
2a40: 0a 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73  .the database is
2a50: 20 63 6c 6f 73 65 64 2e 20 20 41 6e 79 20 69 6e   closed.  Any in
2a60: 64 69 63 65 73 20 63 72 65 61 74 65 64 20 6f 6e  dices created on
2a70: 20 61 20 74 65 6d 70 6f 72 61 72 79 20 74 61 62   a temporary tab
2a80: 6c 65 0a 61 72 65 20 61 6c 73 6f 20 74 65 6d 70  le.are also temp
2a90: 6f 72 61 72 79 2e 20 20 54 65 6d 70 6f 72 61 72  orary.  Temporar
2aa0: 79 20 74 61 62 6c 65 73 20 61 6e 64 20 69 6e 64  y tables and ind
2ab0: 69 63 65 73 20 61 72 65 20 73 74 6f 72 65 64 20  ices are stored 
2ac0: 69 6e 20 61 0a 73 65 70 61 72 61 74 65 20 66 69  in a.separate fi
2ad0: 6c 65 20 64 69 73 74 69 6e 63 74 20 66 72 6f 6d  le distinct from
2ae0: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
2af0: 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70  se file.</p>..<p
2b00: 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f  >The optional co
2b10: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 66 6f  nflict-clause fo
2b20: 6c 6c 6f 77 69 6e 67 20 65 61 63 68 20 63 6f 6e  llowing each con
2b30: 73 74 72 61 69 6e 74 0a 61 6c 6c 6f 77 73 20 74  straint.allows t
2b40: 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
2b50: 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69   of an alternati
2b60: 76 65 20 64 65 66 61 75 6c 74 0a 63 6f 6e 73 74  ve default.const
2b70: 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72  raint conflict r
2b80: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
2b90: 74 68 6d 20 66 6f 72 20 74 68 61 74 20 63 6f 6e  thm for that con
2ba0: 73 74 72 61 69 6e 74 2e 0a 54 68 65 20 64 65 66  straint..The def
2bb0: 61 75 6c 74 20 69 73 20 61 62 6f 72 74 20 41 42  ault is abort AB
2bc0: 4f 52 54 2e 20 20 44 69 66 66 65 72 65 6e 74 20  ORT.  Different 
2bd0: 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69 74 68  constraints with
2be0: 69 6e 20 74 68 65 20 73 61 6d 65 0a 74 61 62 6c  in the same.tabl
2bf0: 65 20 6d 61 79 20 68 61 76 65 20 64 69 66 66 65  e may have diffe
2c00: 72 65 6e 74 20 64 65 66 61 75 6c 74 20 63 6f 6e  rent default con
2c10: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
2c20: 20 61 6c 67 6f 72 69 74 68 6d 73 2e 0a 49 66 20   algorithms..If 
2c30: 61 6e 20 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c  an COPY, INSERT,
2c40: 20 6f 72 20 55 50 44 41 54 45 20 63 6f 6d 6d 61   or UPDATE comma
2c50: 6e 64 20 73 70 65 63 69 66 69 65 73 20 61 20 64  nd specifies a d
2c60: 69 66 66 65 72 65 6e 74 20 63 6f 6e 66 6c 69 63  ifferent conflic
2c70: 74 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t.resolution alg
2c80: 6f 72 69 74 68 6d 2c 20 74 68 65 6e 20 74 68 61  orithm, then tha
2c90: 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  t algorithm is u
2ca0: 73 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 20  sed in place of 
2cb0: 74 68 65 0a 64 65 66 61 75 6c 74 20 61 6c 67 6f  the.default algo
2cc0: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
2cd0: 69 6e 20 74 68 65 20 43 52 45 41 54 45 20 54 41  in the CREATE TA
2ce0: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0a 53  BLE statement..S
2cf0: 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74  ee the section t
2d00: 69 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23  itled.<a href="#
2d10: 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e  conflict">ON CON
2d20: 46 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64  FLICT</a> for ad
2d30: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
2d40: 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 43 48  tion.</p>..<p>CH
2d50: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  ECK constraints 
2d60: 61 72 65 20 69 67 6e 6f 72 65 64 20 69 6e 20 74  are ignored in t
2d70: 68 65 20 63 75 72 72 65 6e 74 20 69 6d 70 6c 65  he current imple
2d80: 6d 65 6e 74 61 74 69 6f 6e 2e 0a 53 75 70 70 6f  mentation..Suppo
2d90: 72 74 20 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e  rt for CHECK con
2da0: 73 74 72 61 69 6e 74 73 20 6d 61 79 20 62 65 20  straints may be 
2db0: 61 64 64 65 64 20 69 6e 20 74 68 65 20 66 75 74  added in the fut
2dc0: 75 72 65 2e 20 20 41 73 20 6f 66 0a 76 65 72 73  ure.  As of.vers
2dd0: 69 6f 6e 20 32 2e 33 2e 30 2c 20 4e 4f 54 20 4e  ion 2.3.0, NOT N
2de0: 55 4c 4c 2c 20 50 52 49 4d 41 52 59 20 4b 45 59  ULL, PRIMARY KEY
2df0: 2c 20 61 6e 64 20 55 4e 49 51 55 45 20 63 6f 6e  , and UNIQUE con
2e00: 73 74 72 61 69 6e 74 73 20 61 6c 6c 0a 77 6f 72  straints all.wor
2e10: 6b 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65  k.</p>..<p>There
2e20: 20 61 72 65 20 6e 6f 20 61 72 62 69 74 72 61 72   are no arbitrar
2e30: 79 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65 20  y limits on the 
2e40: 6e 75 6d 62 65 72 0a 6f 66 20 63 6f 6c 75 6d 6e  number.of column
2e50: 73 20 6f 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62  s or on the numb
2e60: 65 72 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74  er of constraint
2e70: 73 20 69 6e 20 61 20 74 61 62 6c 65 2e 0a 54 68  s in a table..Th
2e80: 65 20 74 6f 74 61 6c 20 61 6d 6f 75 6e 74 20 6f  e total amount o
2e90: 66 20 64 61 74 61 20 69 6e 20 61 20 73 69 6e 67  f data in a sing
2ea0: 6c 65 20 72 6f 77 20 69 73 20 6c 69 6d 69 74 65  le row is limite
2eb0: 64 20 74 6f 20 61 62 6f 75 74 0a 31 20 6d 65 67  d to about.1 meg
2ec0: 61 62 79 74 65 73 2e 20 20 28 54 68 69 73 20 6c  abytes.  (This l
2ed0: 69 6d 69 74 20 63 61 6e 20 62 65 20 69 6e 63 72  imit can be incr
2ee0: 65 61 73 65 64 20 74 6f 20 31 36 4d 42 20 62 79  eased to 16MB by
2ef0: 20 63 68 61 6e 67 69 6e 67 0a 61 20 73 69 6e 67   changing.a sing
2f00: 6c 65 20 23 64 65 66 69 6e 65 20 69 6e 20 74 68  le #define in th
2f10: 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 61 6e  e source code an
2f20: 64 20 72 65 63 6f 6d 70 69 6c 69 6e 67 2e 29 3c  d recompiling.)<
2f30: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41  /p>..<p>The CREA
2f40: 54 45 20 54 41 42 4c 45 20 41 53 20 66 6f 72 6d  TE TABLE AS form
2f50: 20 64 65 66 69 6e 65 73 20 74 68 65 20 74 61 62   defines the tab
2f60: 6c 65 20 74 6f 20 62 65 0a 74 68 65 20 72 65 73  le to be.the res
2f70: 75 6c 74 20 73 65 74 20 6f 66 20 61 20 71 75 65  ult set of a que
2f80: 72 79 2e 20 20 54 68 65 20 6e 61 6d 65 73 20 6f  ry.  The names o
2f90: 66 20 74 68 65 20 74 61 62 6c 65 20 63 6f 6c 75  f the table colu
2fa0: 6d 6e 73 20 61 72 65 0a 74 68 65 20 6e 61 6d 65  mns are.the name
2fb0: 73 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73  s of the columns
2fc0: 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 3c   in the result.<
2fd0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 65 78 61 63  /p>..<p>The exac
2fe0: 74 20 74 65 78 74 0a 6f 66 20 65 61 63 68 20 43  t text.of each C
2ff0: 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74  REATE TABLE stat
3000: 65 6d 65 6e 74 20 69 73 20 73 74 6f 72 65 64 20  ement is stored 
3010: 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65  in the <b>sqlite
3020: 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 74 61 62 6c  _master</b>.tabl
3030: 65 2e 20 20 45 76 65 72 79 74 69 6d 65 20 74 68  e.  Everytime th
3040: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70  e database is op
3050: 65 6e 65 64 2c 20 61 6c 6c 20 43 52 45 41 54 45  ened, all CREATE
3060: 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
3070: 73 0a 61 72 65 20 72 65 61 64 20 66 72 6f 6d 20  s.are read from 
3080: 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61  the <b>sqlite_ma
3090: 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61  ster</b> table a
30a0: 6e 64 20 75 73 65 64 20 74 6f 20 72 65 67 65 6e  nd used to regen
30b0: 65 72 61 74 65 0a 53 51 4c 69 74 65 27 73 20 69  erate.SQLite's i
30c0: 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73 65 6e  nternal represen
30d0: 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74 61  tation of the ta
30e0: 62 6c 65 20 6c 61 79 6f 75 74 2e 0a 49 66 20 74  ble layout..If t
30f0: 68 65 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d  he original comm
3100: 61 6e 64 20 77 61 73 20 61 20 43 52 45 41 54 45  and was a CREATE
3110: 20 54 41 42 4c 45 20 41 53 20 74 68 65 6e 20 74   TABLE AS then t
3120: 68 65 6e 20 61 6e 20 65 71 75 69 76 61 6c 65 6e  hen an equivalen
3130: 74 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20 73  t.CREATE TABLE s
3140: 74 61 74 65 6d 65 6e 74 20 69 73 20 73 79 6e 74  tatement is synt
3150: 68 65 73 69 7a 65 64 20 61 6e 64 20 73 74 6f 72  hesized and stor
3160: 65 20 69 6e 20 3c 62 3e 73 71 6c 69 74 65 5f 6d  e in <b>sqlite_m
3170: 61 73 74 65 72 3c 2f 62 3e 0a 69 6e 20 70 6c 61  aster</b>.in pla
3180: 63 65 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e  ce of the origin
3190: 61 6c 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e  al command..</p>
31a0: 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 44 45 4c 45  .}..Section DELE
31b0: 54 45 20 64 65 6c 65 74 65 0a 0a 53 79 6e 74 61  TE delete..Synta
31c0: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
31d0: 7d 20 7b 0a 44 45 4c 45 54 45 20 46 52 4f 4d 20  } {.DELETE FROM 
31e0: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 57 48  <table-name> [WH
31f0: 45 52 45 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e  ERE <expression>
3200: 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  ].}..puts {.<p>T
3210: 68 65 20 44 45 4c 45 54 45 20 63 6f 6d 6d 61 6e  he DELETE comman
3220: 64 20 69 73 20 75 73 65 64 20 74 6f 20 72 65 6d  d is used to rem
3230: 6f 76 65 20 72 65 63 6f 72 64 73 20 66 72 6f 6d  ove records from
3240: 20 61 20 74 61 62 6c 65 2e 0a 54 68 65 20 63 6f   a table..The co
3250: 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f  mmand consists o
3260: 66 20 74 68 65 20 22 44 45 4c 45 54 45 20 46 52  f the "DELETE FR
3270: 4f 4d 22 20 6b 65 79 77 6f 72 64 73 20 66 6f 6c  OM" keywords fol
3280: 6c 6f 77 65 64 20 62 79 0a 74 68 65 20 6e 61 6d  lowed by.the nam
3290: 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 66  e of the table f
32a0: 72 6f 6d 20 77 68 69 63 68 20 72 65 63 6f 72 64  rom which record
32b0: 73 20 61 72 65 20 74 6f 20 62 65 20 72 65 6d 6f  s are to be remo
32c0: 76 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 57 69  ved..</p>..<p>Wi
32d0: 74 68 6f 75 74 20 61 20 57 48 45 52 45 20 63 6c  thout a WHERE cl
32e0: 61 75 73 65 2c 20 61 6c 6c 20 72 6f 77 73 20 6f  ause, all rows o
32f0: 66 20 74 68 65 20 74 61 62 6c 65 20 61 72 65 20  f the table are 
3300: 72 65 6d 6f 76 65 64 2e 0a 49 66 20 61 20 57 48  removed..If a WH
3310: 45 52 45 20 63 6c 61 75 73 65 20 69 73 20 73 75  ERE clause is su
3320: 70 70 6c 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c  pplied, then onl
3330: 79 20 74 68 6f 73 65 20 72 6f 77 73 20 74 68 61  y those rows tha
3340: 74 20 6d 61 74 63 68 0a 74 68 65 20 65 78 70 72  t match.the expr
3350: 65 73 73 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76  ession are remov
3360: 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74  ed.</p>.}...Sect
3370: 69 6f 6e 20 7b 44 52 4f 50 20 49 4e 44 45 58 7d  ion {DROP INDEX}
3380: 20 64 72 6f 70 69 6e 64 65 78 0a 0a 53 79 6e 74   dropindex..Synt
3390: 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d  ax {sql-command}
33a0: 20 7b 0a 44 52 4f 50 20 49 4e 44 45 58 20 3c 69   {.DROP INDEX <i
33b0: 6e 64 65 78 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75  ndex-name>.}..pu
33c0: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 52 4f 50  ts {.<p>The DROP
33d0: 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74   INDEX statement
33e0: 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65   consists of the
33f0: 20 6b 65 79 77 6f 72 64 73 20 22 44 52 4f 50 20   keywords "DROP 
3400: 49 4e 44 45 58 22 20 66 6f 6c 6c 6f 77 65 64 0a  INDEX" followed.
3410: 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  by the name of t
3420: 68 65 20 69 6e 64 65 78 2e 20 20 54 68 65 20 69  he index.  The i
3430: 6e 64 65 78 20 6e 61 6d 65 64 20 69 73 20 63 6f  ndex named is co
3440: 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64  mpletely removed
3450: 20 66 72 6f 6d 0a 74 68 65 20 64 69 73 6b 2e 20   from.the disk. 
3460: 20 54 68 65 20 6f 6e 6c 79 20 77 61 79 20 74 6f   The only way to
3470: 20 72 65 63 6f 76 65 72 20 74 68 65 20 69 6e 64   recover the ind
3480: 65 78 20 69 73 20 74 6f 20 72 65 65 6e 74 65 72  ex is to reenter
3490: 20 74 68 65 0a 61 70 70 72 6f 70 72 69 61 74 65   the.appropriate
34a0: 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 63 6f   CREATE INDEX co
34b0: 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65  mmand.</p>.}..Se
34c0: 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54 41 42 4c  ction {DROP TABL
34d0: 45 7d 20 64 72 6f 70 74 61 62 6c 65 0a 0a 53 79  E} droptable..Sy
34e0: 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e  ntax {sql-comman
34f0: 64 7d 20 7b 0a 44 52 4f 50 20 54 41 42 4c 45 20  d} {.DROP TABLE 
3500: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a  <table-name>.}..
3510: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 52  puts {.<p>The DR
3520: 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  OP TABLE stateme
3530: 6e 74 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74  nt consists of t
3540: 68 65 20 6b 65 79 77 6f 72 64 73 20 22 44 52 4f  he keywords "DRO
3550: 50 20 54 41 42 4c 45 22 20 66 6f 6c 6c 6f 77 65  P TABLE" followe
3560: 64 0a 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66  d.by the name of
3570: 20 74 68 65 20 74 61 62 6c 65 2e 20 20 54 68 65   the table.  The
3580: 20 74 61 62 6c 65 20 6e 61 6d 65 64 20 69 73 20   table named is 
3590: 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76  completely remov
35a0: 65 64 20 66 72 6f 6d 0a 74 68 65 20 64 69 73 6b  ed from.the disk
35b0: 2e 20 20 54 68 65 20 74 61 62 6c 65 20 63 61 6e  .  The table can
35c0: 20 6e 6f 74 20 62 65 20 72 65 63 6f 76 65 72 65   not be recovere
35d0: 64 2e 20 20 41 6c 6c 20 69 6e 64 69 63 65 73 20  d.  All indices 
35e0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0a  associated with.
35f0: 74 68 65 20 74 61 62 6c 65 20 61 72 65 20 61 6c  the table are al
3600: 73 6f 20 64 65 6c 65 74 65 64 2e 3c 2f 70 3e 7d  so deleted.</p>}
3610: 0a 0a 53 65 63 74 69 6f 6e 20 45 58 50 4c 41 49  ..Section EXPLAI
3620: 4e 20 65 78 70 6c 61 69 6e 0a 0a 53 79 6e 74 61  N explain..Synta
3630: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
3640: 7d 20 7b 0a 45 58 50 4c 41 49 4e 20 3c 73 71 6c  } {.EXPLAIN <sql
3650: 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70  -statement>.}..p
3660: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 45 58 50  uts {.<p>The EXP
3670: 4c 41 49 4e 20 63 6f 6d 6d 61 6e 64 20 6d 6f 64  LAIN command mod
3680: 69 66 69 65 72 20 69 73 20 61 20 6e 6f 6e 2d 73  ifier is a non-s
3690: 74 61 6e 64 61 72 64 20 65 78 74 65 6e 73 69 6f  tandard extensio
36a0: 6e 2e 20 20 54 68 65 0a 69 64 65 61 20 63 6f 6d  n.  The.idea com
36b0: 65 73 20 66 72 6f 6d 20 61 20 73 69 6d 69 6c 61  es from a simila
36c0: 72 20 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 20  r command found 
36d0: 69 6e 20 50 6f 73 74 67 72 65 53 51 4c 2c 20 62  in PostgreSQL, b
36e0: 75 74 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e  ut the operation
36f0: 0a 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 64  .is completely d
3700: 69 66 66 65 72 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c  ifferent.</p>..<
3710: 70 3e 49 66 20 74 68 65 20 45 58 50 4c 41 49 4e  p>If the EXPLAIN
3720: 20 6b 65 79 77 6f 72 64 20 61 70 70 65 61 72 73   keyword appears
3730: 20 62 65 66 6f 72 65 20 61 6e 79 20 6f 74 68 65   before any othe
3740: 72 20 53 51 4c 69 74 65 20 53 51 4c 20 63 6f 6d  r SQLite SQL com
3750: 6d 61 6e 64 0a 74 68 65 6e 20 69 6e 73 74 65 61  mand.then instea
3760: 64 20 6f 66 20 61 63 74 75 61 6c 6c 79 20 65 78  d of actually ex
3770: 65 63 75 74 69 6e 67 20 74 68 65 20 63 6f 6d 6d  ecuting the comm
3780: 61 6e 64 2c 20 74 68 65 20 53 51 4c 69 74 65 20  and, the SQLite 
3790: 6c 69 62 72 61 72 79 20 77 69 6c 6c 0a 72 65 70  library will.rep
37a0: 6f 72 74 20 62 61 63 6b 20 74 68 65 20 73 65 71  ort back the seq
37b0: 75 65 6e 63 65 20 6f 66 20 76 69 72 74 75 61 6c  uence of virtual
37c0: 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72 75 63   machine instruc
37d0: 74 69 6f 6e 73 20 69 74 20 77 6f 75 6c 64 20 68  tions it would h
37e0: 61 76 65 0a 75 73 65 64 20 74 6f 20 65 78 65 63  ave.used to exec
37f0: 75 74 65 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20  ute the command 
3800: 68 61 64 20 74 68 65 20 45 58 50 4c 41 49 4e 20  had the EXPLAIN 
3810: 6b 65 79 77 6f 72 64 20 6e 6f 74 20 62 65 65 6e  keyword not been
3820: 20 70 72 65 73 65 6e 74 2e 0a 46 6f 72 20 61 64   present..For ad
3830: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
3840: 74 69 6f 6e 20 61 62 6f 75 74 20 76 69 72 74 75  tion about virtu
3850: 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72  al machine instr
3860: 75 63 74 69 6f 6e 73 20 73 65 65 0a 74 68 65 20  uctions see.the 
3870: 3c 61 20 68 72 65 66 3d 22 61 72 63 68 2e 68 74  <a href="arch.ht
3880: 6d 6c 22 3e 61 72 63 68 69 74 65 63 74 75 72 65  ml">architecture
3890: 20 64 65 73 63 72 69 70 74 69 6f 6e 3c 2f 61 3e   description</a>
38a0: 20 6f 72 20 74 68 65 20 64 6f 63 75 6d 65 6e 74   or the document
38b0: 61 74 69 6f 6e 0a 6f 6e 20 3c 61 20 68 72 65 66  ation.on <a href
38c0: 3d 22 6f 70 63 6f 64 65 2e 68 74 6d 6c 22 3e 61  ="opcode.html">a
38d0: 76 61 69 6c 61 62 6c 65 20 6f 70 63 6f 64 65 73  vailable opcodes
38e0: 3c 2f 61 3e 20 66 6f 72 20 74 68 65 20 76 69 72  </a> for the vir
38f0: 74 75 61 6c 20 6d 61 63 68 69 6e 65 2e 3c 2f 70  tual machine.</p
3900: 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 65 78 70  >.}..Section exp
3910: 72 65 73 73 69 6f 6e 20 65 78 70 72 0a 0a 53 79  ression expr..Sy
3920: 6e 74 61 78 20 7b 65 78 70 72 65 73 73 69 6f 6e  ntax {expression
3930: 7d 20 7b 0a 3c 65 78 70 72 65 73 73 69 6f 6e 3e  } {.<expression>
3940: 20 3c 62 69 6e 61 72 79 2d 6f 70 3e 20 3c 65 78   <binary-op> <ex
3950: 70 72 65 73 73 69 6f 6e 3e 20 7c 0a 3c 65 78 70  pression> |.<exp
3960: 72 65 73 73 69 6f 6e 3e 20 3c 6c 69 6b 65 2d 6f  ression> <like-o
3970: 70 3e 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20  p> <expression> 
3980: 7c 0a 3c 75 6e 61 72 79 2d 6f 70 3e 20 3c 65 78  |.<unary-op> <ex
3990: 70 72 65 73 73 69 6f 6e 3e 20 7c 0a 28 20 3c 65  pression> |.( <e
39a0: 78 70 72 65 73 73 69 6f 6e 3e 20 29 20 7c 0a 3c  xpression> ) |.<
39b0: 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c  column-name> |.<
39c0: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20 3c 63  table-name> . <c
39d0: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 6c  olumn-name> |.<l
39e0: 69 74 65 72 61 6c 2d 76 61 6c 75 65 3e 20 7c 0a  iteral-value> |.
39f0: 3c 66 75 6e 63 74 69 6f 6e 2d 6e 61 6d 65 3e 20  <function-name> 
3a00: 28 20 3c 65 78 70 72 2d 6c 69 73 74 3e 20 7c 20  ( <expr-list> | 
3a10: 53 54 41 52 20 29 20 7c 0a 3c 65 78 70 72 65 73  STAR ) |.<expres
3a20: 73 69 6f 6e 3e 20 49 53 4e 55 4c 4c 20 7c 0a 3c  sion> ISNULL |.<
3a30: 65 78 70 72 65 73 73 69 6f 6e 3e 20 4e 4f 54 4e  expression> NOTN
3a40: 55 4c 4c 20 7c 0a 3c 65 78 70 72 65 73 73 69 6f  ULL |.<expressio
3a50: 6e 3e 20 5b 4e 4f 54 5d 20 42 45 54 57 45 45 4e  n> [NOT] BETWEEN
3a60: 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 41 4e   <expression> AN
3a70: 44 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 7c  D <expression> |
3a80: 0a 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 5b 4e  .<expression> [N
3a90: 4f 54 5d 20 49 4e 20 28 20 3c 76 61 6c 75 65 2d  OT] IN ( <value-
3aa0: 6c 69 73 74 3e 20 29 20 7c 0a 3c 65 78 70 72 65  list> ) |.<expre
3ab0: 73 73 69 6f 6e 3e 20 5b 4e 4f 54 5d 20 49 4e 20  ssion> [NOT] IN 
3ac0: 28 20 3c 73 65 6c 65 63 74 3e 20 29 20 7c 0a 28  ( <select> ) |.(
3ad0: 20 3c 73 65 6c 65 63 74 3e 20 29 0a 7d 20 7b 6c   <select> ).} {l
3ae0: 69 6b 65 2d 6f 70 7d 20 7b 0a 4c 49 4b 45 20 7c  ike-op} {.LIKE |
3af0: 20 47 4c 4f 42 20 7c 20 4e 4f 54 20 4c 49 4b 45   GLOB | NOT LIKE
3b00: 20 7c 20 4e 4f 54 20 47 4c 4f 42 0a 7d 0a 0a 70   | NOT GLOB.}..p
3b10: 75 74 73 20 7b 0a 3c 70 3e 54 68 69 73 20 73 65  uts {.<p>This se
3b20: 63 74 69 6f 6e 20 69 73 20 64 69 66 66 65 72 65  ction is differe
3b30: 6e 74 20 66 72 6f 6d 20 74 68 65 20 6f 74 68 65  nt from the othe
3b40: 72 73 2e 20 20 4d 6f 73 74 20 6f 74 68 65 72 20  rs.  Most other 
3b50: 73 65 63 74 69 6f 6e 73 20 6f 66 0a 74 68 69 73  sections of.this
3b60: 20 64 6f 63 75 6d 65 6e 74 20 74 61 6c 6b 73 20   document talks 
3b70: 61 62 6f 75 74 20 61 20 70 61 72 74 69 63 75 6c  about a particul
3b80: 61 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20  ar SQL command. 
3b90: 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 64 6f   This section do
3ba0: 65 73 0a 6e 6f 74 20 74 61 6c 6b 20 61 62 6f 75  es.not talk abou
3bb0: 74 20 61 20 73 74 61 6e 64 61 6c 6f 6e 65 20 63  t a standalone c
3bc0: 6f 6d 6d 61 6e 64 20 62 75 74 20 61 62 6f 75 74  ommand but about
3bd0: 20 22 65 78 70 72 65 73 73 69 6f 6e 73 22 20 77   "expressions" w
3be0: 68 69 63 68 20 61 72 65 20 0a 73 75 62 63 6f 6d  hich are .subcom
3bf0: 70 6f 6e 65 6e 74 20 6f 66 20 6d 6f 73 74 20 6f  ponent of most o
3c00: 74 68 65 72 20 63 6f 6d 6d 61 6e 64 73 2e 3c 2f  ther commands.</
3c10: 70 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 75 6e  p>..<p>SQLite un
3c20: 64 65 72 73 74 61 6e 64 73 20 74 68 65 20 66 6f  derstands the fo
3c30: 6c 6c 6f 77 69 6e 67 20 62 69 6e 61 72 79 20 6f  llowing binary o
3c40: 70 65 72 61 74 6f 72 73 2c 20 69 6e 20 6f 72 64  perators, in ord
3c50: 65 72 20 66 72 6f 6d 0a 68 69 67 68 65 73 74 20  er from.highest 
3c60: 74 6f 20 6c 6f 77 65 73 74 20 70 72 65 63 65 64  to lowest preced
3c70: 65 6e 63 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  ence:</p>..<bloc
3c80: 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 3c 66 6f  kquote><pre>.<fo
3c90: 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66  nt color="#2c2cf
3ca0: 30 22 3e 3c 62 69 67 3e 2a 20 20 20 20 2f 20 20  0"><big>*    /  
3cb0: 20 20 25 0a 2b 20 20 20 20 2d 0a 26 6c 74 3b 26    %.+    -.&lt;&
3cc0: 6c 74 3b 20 20 20 26 67 74 3b 26 67 74 3b 20 20  lt;   &gt;&gt;  
3cd0: 20 26 61 6d 70 3b 20 20 20 20 7c 0a 26 6c 74 3b   &amp;    |.&lt;
3ce0: 20 20 20 20 26 6c 74 3b 3d 20 20 20 26 67 74 3b      &lt;=   &gt;
3cf0: 20 20 20 20 26 67 74 3b 3d 0a 3d 20 20 20 20 3d      &gt;=.=    =
3d00: 3d 20 20 20 21 3d 20 20 20 26 6c 74 3b 26 67 74  =   !=   &lt;&gt
3d10: 3b 20 20 20 3c 2f 62 69 67 3e 49 4e 0a 41 4e 44  ;   </big>IN.AND
3d20: 0a 4f 52 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65  .OR</font>.</pre
3d30: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  ></blockquote>..
3d40: 3c 70 3e 53 75 70 70 6f 72 74 65 64 20 75 6e 61  <p>Supported una
3d50: 72 79 20 6f 70 65 72 61 74 65 72 73 20 61 72 65  ry operaters are
3d60: 20 74 68 65 73 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c   these:</p>..<bl
3d70: 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 3c  ockquote><pre>.<
3d80: 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32  font color="#2c2
3d90: 63 66 30 22 3e 3c 62 69 67 3e 2d 20 20 20 20 2b  cf0"><big>-    +
3da0: 20 20 20 20 21 20 20 20 20 7e 3c 2f 62 69 67 3e      !    ~</big>
3db0: 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c 2f  </font>.</pre></
3dc0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
3dd0: 41 6e 79 20 53 51 4c 69 74 65 20 76 61 6c 75 65  Any SQLite value
3de0: 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20   can be used as 
3df0: 70 61 72 74 20 6f 66 20 61 6e 20 65 78 70 72 65  part of an expre
3e00: 73 73 69 6f 6e 2e 20 20 0a 46 6f 72 20 61 72 69  ssion.  .For ari
3e10: 74 68 6d 65 74 69 63 20 6f 70 65 72 61 74 69 6f  thmetic operatio
3e20: 6e 73 2c 20 69 6e 74 65 67 65 72 73 20 61 72 65  ns, integers are
3e30: 20 74 72 65 61 74 65 64 20 61 73 20 69 6e 74 65   treated as inte
3e40: 67 65 72 73 2e 0a 53 74 72 69 6e 67 73 20 61 72  gers..Strings ar
3e50: 65 20 66 69 72 73 74 20 63 6f 6e 76 65 72 74 65  e first converte
3e60: 64 20 74 6f 20 72 65 61 6c 20 6e 75 6d 62 65 72  d to real number
3e70: 73 20 75 73 69 6e 67 20 3c 62 3e 61 74 6f 66 28  s using <b>atof(
3e80: 29 3c 2f 62 3e 2e 0a 46 6f 72 20 63 6f 6d 70 61  )</b>..For compa
3e90: 72 69 73 6f 6e 20 6f 70 65 72 61 74 6f 72 73 2c  rison operators,
3ea0: 20 6e 75 6d 62 65 72 73 20 63 6f 6d 70 61 72 65   numbers compare
3eb0: 20 61 73 20 6e 75 6d 62 65 72 73 20 61 6e 64 20   as numbers and 
3ec0: 73 74 72 69 6e 67 73 0a 63 6f 6d 70 61 72 65 20  strings.compare 
3ed0: 61 73 20 73 74 72 69 6e 67 73 2e 20 20 46 6f 72  as strings.  For
3ee0: 20 73 74 72 69 6e 67 20 63 6f 6d 70 61 72 69 73   string comparis
3ef0: 6f 6e 73 2c 20 63 61 73 65 20 69 73 20 73 69 67  ons, case is sig
3f00: 6e 69 66 69 63 61 6e 74 0a 62 75 74 20 69 73 20  nificant.but is 
3f10: 6f 6e 6c 79 20 75 73 65 64 20 74 6f 20 62 72 65  only used to bre
3f20: 61 6b 20 61 20 74 69 65 2e 0a 4e 6f 74 65 20 74  ak a tie..Note t
3f30: 68 61 74 20 74 68 65 72 65 20 61 72 65 20 74 77  hat there are tw
3f40: 6f 20 76 61 72 69 61 74 69 6f 6e 73 20 6f 66 20  o variations of 
3f50: 74 68 65 20 65 71 75 61 6c 73 20 61 6e 64 20 6e  the equals and n
3f60: 6f 74 20 65 71 75 61 6c 73 0a 6f 70 65 72 61 74  ot equals.operat
3f70: 6f 72 73 2e 20 20 45 71 75 61 6c 73 20 63 61 6e  ors.  Equals can
3f80: 20 62 65 20 65 69 74 68 65 72 7d 0a 70 75 74 73   be either}.puts
3f90: 20 22 5b 4f 70 65 72 61 74 6f 72 20 3d 5d 20 6f   "[Operator =] o
3fa0: 72 20 5b 4f 70 65 72 61 74 6f 72 20 3d 3d 5d 2e  r [Operator ==].
3fb0: 0a 54 68 65 20 6e 6f 6e 2d 65 71 75 61 6c 73 20  .The non-equals 
3fc0: 6f 70 65 72 61 74 6f 72 20 63 61 6e 20 62 65 20  operator can be 
3fd0: 65 69 74 68 65 72 0a 5b 4f 70 65 72 61 74 6f 72  either.[Operator
3fe0: 20 21 3d 5d 20 6f 72 20 5b 4f 70 65 72 61 74 6f   !=] or [Operato
3ff0: 72 20 7b 26 6c 74 3b 26 67 74 3b 7d 5d 2e 3c 2f  r {&lt;&gt;}].</
4000: 70 3e 22 0a 70 75 74 73 20 7b 0a 0a 3c 70 3e 54  p>".puts {..<p>T
4010: 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72  he LIKE operator
4020: 20 64 6f 65 73 20 61 20 77 69 6c 64 63 61 72 64   does a wildcard
4030: 20 63 6f 6d 70 61 72 69 73 69 6f 6e 2e 20 20 54   comparision.  T
4040: 68 65 20 6f 70 65 72 61 6e 64 0a 74 6f 20 74 68  he operand.to th
4050: 65 20 72 69 67 68 74 20 63 6f 6e 74 61 69 6e 73  e right contains
4060: 20 74 68 65 20 77 69 6c 64 63 61 72 64 73 2e 7d   the wildcards.}
4070: 0a 70 75 74 73 20 22 41 20 70 65 72 63 65 6e 74  .puts "A percent
4080: 20 73 79 6d 62 6f 6c 20 5b 4f 70 65 72 61 74 6f   symbol [Operato
4090: 72 20 25 5d 20 69 6e 20 74 68 65 20 72 69 67 68  r %] in the righ
40a0: 74 20 6f 70 65 72 61 6e 64 0a 6d 61 74 63 68 65  t operand.matche
40b0: 73 20 61 6e 79 20 73 65 71 75 65 6e 63 65 20 6f  s any sequence o
40c0: 66 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 63  f zero or more c
40d0: 68 61 72 61 63 74 65 72 73 20 6f 6e 20 74 68 65  haracters on the
40e0: 20 6c 65 66 74 2e 0a 41 6e 20 75 6e 64 65 72 73   left..An unders
40f0: 63 6f 72 65 20 5b 4f 70 65 72 61 74 6f 72 20 5f  core [Operator _
4100: 5d 20 6f 6e 20 74 68 65 20 72 69 67 68 74 0a 6d  ] on the right.m
4110: 61 74 63 68 65 73 20 61 6e 79 20 73 69 6e 67 6c  atches any singl
4120: 65 20 63 68 61 72 61 63 74 65 72 20 6f 6e 20 74  e character on t
4130: 68 65 20 6c 65 66 74 2e 22 0a 70 75 74 73 20 7b  he left.".puts {
4140: 54 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f  The LIKE operato
4150: 72 20 69 73 0a 6e 6f 74 20 63 61 73 65 20 73 65  r is.not case se
4160: 6e 73 69 74 69 76 65 20 61 6e 64 20 77 69 6c 6c  nsitive and will
4170: 20 6d 61 74 63 68 20 75 70 70 65 72 20 63 61 73   match upper cas
4180: 65 20 63 68 61 72 61 63 74 65 72 73 20 6f 6e 20  e characters on 
4190: 6f 6e 65 0a 73 69 64 65 20 61 67 61 69 6e 73 74  one.side against
41a0: 20 6c 6f 77 65 72 20 63 61 73 65 20 63 68 61 72   lower case char
41b0: 61 63 74 65 72 73 20 6f 6e 20 74 68 65 20 6f 74  acters on the ot
41c0: 68 65 72 2e 0a 28 41 20 62 75 67 3a 20 53 51 4c  her..(A bug: SQL
41d0: 69 74 65 20 6f 6e 6c 79 20 75 6e 64 65 72 73 74  ite only underst
41e0: 61 6e 64 73 20 75 70 70 65 72 2f 6c 6f 77 65 72  ands upper/lower
41f0: 20 63 61 73 65 20 66 6f 72 20 37 2d 62 69 74 20   case for 7-bit 
4200: 4c 61 74 69 6e 0a 63 68 61 72 61 63 74 65 72 73  Latin.characters
4210: 2e 20 20 48 65 6e 63 65 20 74 68 65 20 4c 49 4b  .  Hence the LIK
4220: 45 20 6f 70 65 72 61 74 6f 72 20 69 73 20 63 61  E operator is ca
4230: 73 65 20 73 65 6e 73 69 74 69 76 65 20 66 6f 72  se sensitive for
4240: 0a 38 2d 62 69 74 20 69 73 6f 38 38 35 39 20 63  .8-bit iso8859 c
4250: 68 61 72 61 63 74 65 72 73 20 6f 72 20 55 54 46  haracters or UTF
4260: 2d 38 20 63 68 61 72 61 63 74 65 72 73 2e 20 20  -8 characters.  
4270: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 74 68 65  For example,.the
4280: 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 62 3e 27   expression <b>'
4290: 61 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73  a'&nbsp;LIKE&nbs
42a0: 70 3b 27 41 27 3c 2f 62 3e 20 69 73 20 54 52 55  p;'A'</b> is TRU
42b0: 45 20 62 75 74 0a 3c 62 3e 27 26 61 65 6c 69 67  E but.<b>'&aelig
42c0: 3b 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73  ;'&nbsp;LIKE&nbs
42d0: 70 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62 3e 20  p;'&AElig;'</b> 
42e0: 69 73 20 46 41 4c 53 45 2e 29 0a 3c 2f 70 3e 0a  is FALSE.).</p>.
42f0: 0a 3c 70 3e 54 68 65 20 47 4c 4f 42 20 6f 70 65  .<p>The GLOB ope
4300: 72 61 74 6f 72 20 69 73 20 73 69 6d 69 6c 61 72  rator is similar
4310: 20 74 6f 20 4c 49 4b 45 20 62 75 74 20 75 73 65   to LIKE but use
4320: 73 20 74 68 65 20 55 6e 69 78 0a 66 69 6c 65 20  s the Unix.file 
4330: 67 6c 6f 62 62 69 6e 67 20 73 79 6e 74 61 78 20  globbing syntax 
4340: 66 6f 72 20 69 74 73 20 77 69 6c 64 63 61 72 64  for its wildcard
4350: 73 2e 20 20 41 6c 73 6f 2c 20 47 4c 4f 42 20 69  s.  Also, GLOB i
4360: 73 20 63 61 73 65 0a 73 65 6e 73 69 74 69 76 65  s case.sensitive
4370: 2c 20 75 6e 6c 69 6b 65 20 4c 49 4b 45 2e 20 20  , unlike LIKE.  
4380: 42 6f 74 68 20 47 4c 4f 42 20 61 6e 64 20 4c 49  Both GLOB and LI
4390: 4b 45 20 6d 61 79 20 62 65 20 70 72 65 63 65 64  KE may be preced
43a0: 65 64 20 62 79 0a 74 68 65 20 4e 4f 54 20 6b 65  ed by.the NOT ke
43b0: 79 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20  yword to invert 
43c0: 74 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65  the sense of the
43d0: 20 74 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41   test.</p>..<p>A
43e0: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e   column name can
43f0: 20 62 65 20 61 6e 79 20 6f 66 20 74 68 65 20 6e   be any of the n
4400: 61 6d 65 73 20 64 65 66 69 6e 65 64 20 69 6e 20  ames defined in 
4410: 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45  the CREATE TABLE
4420: 0a 73 74 61 74 65 6d 65 6e 74 20 6f 72 20 6f 6e  .statement or on
4430: 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69  e of the followi
4440: 6e 67 20 73 70 65 63 69 61 6c 20 69 64 65 6e 74  ng special ident
4450: 69 66 69 65 72 73 3a 20 22 3c 62 3e 52 4f 57 49  ifiers: "<b>ROWI
4460: 44 3c 2f 62 3e 22 2c 0a 22 3c 62 3e 4f 49 44 3c  D</b>",."<b>OID<
4470: 2f 62 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f  /b>", or "<b>_RO
4480: 57 49 44 5f 3c 2f 62 3e 22 2e 0a 54 68 65 73 65  WID_</b>"..These
4490: 20 73 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66   special identif
44a0: 69 65 72 73 20 61 6c 6c 20 64 65 73 63 72 69 62  iers all describ
44b0: 65 20 74 68 65 0a 75 6e 69 71 75 65 20 72 61 6e  e the.unique ran
44c0: 64 6f 6d 20 69 6e 74 65 67 65 72 20 6b 65 79 20  dom integer key 
44d0: 28 74 68 65 20 22 72 6f 77 20 6b 65 79 22 29 20  (the "row key") 
44e0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
44f0: 65 76 65 72 79 20 0a 72 6f 77 20 6f 66 20 65 76  every .row of ev
4500: 65 72 79 20 74 61 62 6c 65 2e 0a 54 68 65 20 73  ery table..The s
4510: 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65  pecial identifie
4520: 72 73 20 6f 6e 6c 79 20 72 65 66 65 72 20 74 6f  rs only refer to
4530: 20 74 68 65 20 72 6f 77 20 6b 65 79 20 69 66 20   the row key if 
4540: 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45  the CREATE TABLE
4550: 0a 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20  .statement does 
4560: 6e 6f 74 20 64 65 66 69 6e 65 20 61 20 72 65 61  not define a rea
4570: 6c 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20 74 68  l column with th
4580: 65 20 73 61 6d 65 20 6e 61 6d 65 2e 20 20 52 6f  e same name.  Ro
4590: 77 20 6b 65 79 73 0a 61 63 74 20 6c 69 6b 65 20  w keys.act like 
45a0: 72 65 61 64 2d 6f 6e 6c 79 20 63 6f 6c 75 6d 6e  read-only column
45b0: 73 2e 20 20 41 20 72 6f 77 20 6b 65 79 20 63 61  s.  A row key ca
45c0: 6e 20 62 65 20 75 73 65 64 20 61 6e 79 77 68 65  n be used anywhe
45d0: 72 65 20 61 20 72 65 67 75 6c 61 72 0a 63 6f 6c  re a regular.col
45e0: 75 6d 6e 20 63 61 6e 20 62 65 20 75 73 65 64 2c  umn can be used,
45f0: 20 65 78 63 65 70 74 20 74 68 61 74 20 79 6f 75   except that you
4600: 20 63 61 6e 6e 6f 74 20 63 68 61 6e 67 65 20 74   cannot change t
4610: 68 65 20 76 61 6c 75 65 0a 6f 66 20 61 20 72 6f  he value.of a ro
4620: 77 20 6b 65 79 20 69 6e 20 61 6e 20 55 50 44 41  w key in an UPDA
4630: 54 45 20 6f 72 20 49 4e 53 45 52 54 20 73 74 61  TE or INSERT sta
4640: 74 65 6d 65 6e 74 2e 0a 22 53 45 4c 45 43 54 20  tement.."SELECT 
4650: 2a 20 2e 2e 2e 22 20 64 6f 65 73 20 6e 6f 74 20  * ..." does not 
4660: 72 65 74 75 72 6e 20 74 68 65 20 72 6f 77 20 6b  return the row k
4670: 65 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53 45 4c 45  ey.</p>..<p>SELE
4680: 43 54 20 73 74 61 74 65 6d 65 6e 74 73 20 63 61  CT statements ca
4690: 6e 20 61 70 70 65 61 72 20 69 6e 20 65 78 70 72  n appear in expr
46a0: 65 73 73 69 6f 6e 73 20 61 73 20 65 69 74 68 65  essions as eithe
46b0: 72 20 74 68 65 0a 72 69 67 68 74 2d 68 61 6e 64  r the.right-hand
46c0: 20 6f 70 65 72 61 6e 64 20 6f 66 20 74 68 65 20   operand of the 
46d0: 49 4e 20 6f 70 65 72 61 74 6f 72 20 6f 72 20 61  IN operator or a
46e0: 73 20 61 20 73 63 61 6c 61 72 20 71 75 61 6e 74  s a scalar quant
46f0: 69 74 79 2e 0a 49 6e 20 62 6f 74 68 20 63 61 73  ity..In both cas
4700: 65 73 2c 20 74 68 65 20 53 45 4c 45 43 54 20 73  es, the SELECT s
4710: 68 6f 75 6c 64 20 68 61 76 65 20 6f 6e 6c 79 20  hould have only 
4720: 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 20  a single column 
4730: 69 6e 20 69 74 73 0a 72 65 73 75 6c 74 2e 20 20  in its.result.  
4740: 43 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 73  Compound SELECTs
4750: 20 28 63 6f 6e 6e 65 63 74 65 64 20 77 69 74 68   (connected with
4760: 20 6b 65 79 77 6f 72 64 73 20 6c 69 6b 65 20 55   keywords like U
4770: 4e 49 4f 4e 20 6f 72 0a 45 58 43 45 50 54 29 20  NION or.EXCEPT) 
4780: 61 72 65 20 61 6c 6c 6f 77 65 64 2e 20 20 41 6e  are allowed.  An
4790: 79 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73  y ORDER BY claus
47a0: 65 20 6f 6e 20 74 68 65 20 73 65 6c 65 63 74 20  e on the select 
47b0: 69 73 20 69 67 6e 6f 72 65 64 2e 0a 41 20 53 45  is ignored..A SE
47c0: 4c 45 43 54 20 69 6e 20 61 6e 20 65 78 70 72 65  LECT in an expre
47d0: 73 73 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74  ssion is evaluat
47e0: 65 64 20 6f 6e 63 65 20 62 65 66 6f 72 65 20 61  ed once before a
47f0: 6e 79 20 6f 74 68 65 72 20 70 72 6f 63 65 73 73  ny other process
4800: 69 6e 67 0a 69 73 20 70 65 72 66 6f 72 6d 65 64  ing.is performed
4810: 2c 20 73 6f 20 6e 6f 6e 65 20 6f 66 20 74 68 65  , so none of the
4820: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 77 69 74   expressions wit
4830: 68 69 6e 20 74 68 65 20 73 65 6c 65 63 74 20 69  hin the select i
4840: 74 73 65 6c 66 20 63 61 6e 0a 72 65 66 65 72 20  tself can.refer 
4850: 74 6f 20 71 75 61 6e 74 69 74 69 65 73 20 69 6e  to quantities in
4860: 20 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20   the containing 
4870: 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 70 3e 0a  expression.</p>.
4880: 0a 3c 70 3e 57 68 65 6e 20 61 20 53 45 4c 45 43  .<p>When a SELEC
4890: 54 20 69 73 20 74 68 65 20 72 69 67 68 74 20 6f  T is the right o
48a0: 70 65 72 61 6e 64 20 6f 66 20 74 68 65 20 49 4e  perand of the IN
48b0: 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 20 49   operator, the I
48c0: 4e 0a 6f 70 65 72 61 74 6f 72 20 72 65 74 75 72  N.operator retur
48d0: 6e 73 20 54 52 55 45 20 69 66 20 74 68 65 20 72  ns TRUE if the r
48e0: 65 73 75 6c 74 20 6f 66 20 74 68 65 20 6c 65 66  esult of the lef
48f0: 74 20 6f 70 65 72 61 6e 64 20 69 73 20 61 6e 79  t operand is any
4900: 20 6f 66 0a 74 68 65 20 76 61 6c 75 65 73 20 67   of.the values g
4910: 65 6e 65 72 61 74 65 64 20 62 79 20 74 68 65 20  enerated by the 
4920: 73 65 6c 65 63 74 2e 20 20 54 68 65 20 49 4e 20  select.  The IN 
4930: 6f 70 65 72 61 74 6f 72 20 6d 61 79 20 62 65 20  operator may be 
4940: 70 72 65 63 65 64 65 64 0a 62 79 20 74 68 65 20  preceded.by the 
4950: 4e 4f 54 20 6b 65 79 77 6f 72 64 20 74 6f 20 69  NOT keyword to i
4960: 6e 76 65 72 74 20 74 68 65 20 73 65 6e 73 65 20  nvert the sense 
4970: 6f 66 20 74 68 65 20 74 65 73 74 2e 3c 2f 70 3e  of the test.</p>
4980: 0a 0a 3c 70 3e 57 68 65 6e 20 61 20 53 45 4c 45  ..<p>When a SELE
4990: 43 54 20 61 70 70 65 61 72 73 20 77 69 74 68 69  CT appears withi
49a0: 6e 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20  n an expression 
49b0: 62 75 74 20 69 73 20 6e 6f 74 20 74 68 65 20 72  but is not the r
49c0: 69 67 68 74 0a 6f 70 65 72 61 6e 64 20 6f 66 20  ight.operand of 
49d0: 61 6e 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c 20  an IN operator, 
49e0: 74 68 65 6e 20 74 68 65 20 66 69 72 73 74 20 72  then the first r
49f0: 6f 77 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  ow of the result
4a00: 20 6f 66 20 74 68 65 0a 53 45 4c 45 43 54 20 62   of the.SELECT b
4a10: 65 63 6f 6d 65 73 20 74 68 65 20 76 61 6c 75 65  ecomes the value
4a20: 20 75 73 65 64 20 69 6e 20 74 68 65 20 65 78 70   used in the exp
4a30: 72 65 73 73 69 6f 6e 2e 20 20 49 66 20 74 68 65  ression.  If the
4a40: 20 53 45 4c 45 43 54 20 79 69 65 6c 64 73 0a 6d   SELECT yields.m
4a50: 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 72 65 73  ore than one res
4a60: 75 6c 74 20 72 6f 77 2c 20 61 6c 6c 20 72 6f 77  ult row, all row
4a70: 73 20 61 66 74 65 72 20 74 68 65 20 66 69 72 73  s after the firs
4a80: 74 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 20 20  t are ignored.  
4a90: 49 66 0a 74 68 65 20 53 45 4c 45 43 54 20 79 65  If.the SELECT ye
4aa0: 69 6c 64 73 20 6e 6f 20 72 6f 77 73 2c 20 74 68  ilds no rows, th
4ab0: 65 6e 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  en the value of 
4ac0: 74 68 65 20 53 45 4c 45 43 54 20 69 73 20 4e 55  the SELECT is NU
4ad0: 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  LL.</p>..<p>The 
4ae0: 65 78 70 72 65 73 73 69 6f 6e 20 73 79 6e 74 61  expression synta
4af0: 78 20 63 75 72 72 65 6e 74 6c 79 20 73 75 70 70  x currently supp
4b00: 6f 72 74 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69  orts the followi
4b10: 6e 67 0a 66 75 6e 63 74 69 6f 6e 73 3a 3c 2f 70  ng.functions:</p
4b20: 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c  >..<blockquote><
4b30: 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72  pre>.<font color
4b40: 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67 3e  ="#2c2cf0"><big>
4b50: 63 6f 75 6e 74 20 20 20 20 6d 69 6e 20 20 20 20  count    min    
4b60: 20 20 20 6d 61 78 20 20 20 20 20 20 20 73 75 6d     max       sum
4b70: 0a 61 76 67 20 20 20 20 20 20 6c 65 6e 67 74 68  .avg      length
4b80: 20 20 20 20 73 75 62 73 74 72 20 20 20 20 61 62      substr    ab
4b90: 73 20 20 20 20 20 20 20 72 6f 75 6e 64 3c 2f 62  s       round</b
4ba0: 69 67 3e 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65  ig></font>.</pre
4bb0: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  ></blockquote>..
4bc0: 3c 70 3e 0a 54 68 65 20 66 75 6e 63 74 69 6f 6e  <p>.The function
4bd0: 73 20 3c 62 3e 63 6f 75 6e 74 3c 2f 62 3e 2c 20  s <b>count</b>, 
4be0: 3c 62 3e 73 75 6d 3c 2f 62 3e 2c 20 61 6e 64 20  <b>sum</b>, and 
4bf0: 3c 62 3e 61 76 67 3c 2f 62 3e 20 61 6e 64 20 74  <b>avg</b> and t
4c00: 68 65 20 66 75 6e 63 74 69 6f 6e 73 0a 3c 62 3e  he functions.<b>
4c10: 6d 69 6e 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e 6d  min</b> and <b>m
4c20: 61 78 3c 2f 62 3e 20 75 73 65 64 20 77 69 74 68  ax</b> used with
4c30: 20 6f 6e 6c 79 20 6f 6e 65 20 61 72 67 75 6d 65   only one argume
4c40: 6e 74 20 61 72 65 20 61 6c 6c 20 61 67 67 72 65  nt are all aggre
4c50: 67 61 74 65 0a 66 75 6e 63 74 69 6f 6e 73 2e 20  gate.functions. 
4c60: 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74   This means that
4c70: 20 74 68 65 79 20 61 72 65 20 63 6f 6d 70 75 74   they are comput
4c80: 65 64 20 61 63 72 6f 73 73 20 61 6c 6c 20 72 6f  ed across all ro
4c90: 77 73 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  ws of the result
4ca0: 2e 0a 54 68 65 20 66 75 6e 63 74 69 6f 6e 73 20  ..The functions 
4cb0: 3c 62 3e 6d 69 6e 3c 2f 62 3e 20 61 6e 64 20 3c  <b>min</b> and <
4cc0: 62 3e 6d 61 78 3c 2f 62 3e 0a 77 69 74 68 20 74  b>max</b>.with t
4cd0: 77 6f 20 6f 72 20 6d 6f 72 65 20 61 72 67 75 6d  wo or more argum
4ce0: 65 6e 74 73 20 61 6e 64 20 61 6c 6c 20 6f 74 68  ents and all oth
4cf0: 65 72 20 66 75 6e 63 74 69 6f 6e 73 0a 61 72 65  er functions.are
4d00: 20 6e 6f 6e 2d 61 67 67 72 65 67 61 74 65 73 2e   non-aggregates.
4d10: 20 20 4e 6f 6e 2d 61 67 67 72 65 67 61 74 65 20    Non-aggregate 
4d20: 66 75 6e 63 74 69 6f 6e 73 0a 61 72 65 20 63 6f  functions.are co
4d30: 6d 70 75 74 65 64 20 73 65 70 61 72 61 74 65 6c  mputed separatel
4d40: 79 20 66 6f 72 20 65 61 63 68 20 72 6f 77 20 6f  y for each row o
4d50: 66 20 74 68 65 20 72 65 73 75 6c 74 2e 0a 3c 2f  f the result..</
4d60: 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 3c 62 3e 72  p>..<p>.The <b>r
4d70: 6f 75 6e 64 3c 2f 62 3e 20 66 75 6e 63 74 69 6f  ound</b> functio
4d80: 6e 20 63 61 6e 20 74 61 6b 65 20 65 69 74 68 65  n can take eithe
4d90: 72 20 31 20 6f 72 20 32 20 61 72 67 75 6d 65 6e  r 1 or 2 argumen
4da0: 74 73 2e 20 20 54 68 65 0a 66 69 72 73 74 20 61  ts.  The.first a
4db0: 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 66  rgument is the f
4dc0: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61  loating point va
4dd0: 6c 75 65 20 74 68 61 74 20 69 73 20 72 6f 75 6e  lue that is roun
4de0: 64 65 64 2e 20 20 54 68 65 0a 73 65 63 6f 6e 64  ded.  The.second
4df0: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65   argument is the
4e00: 20 6e 75 6d 62 65 72 20 6f 66 20 64 69 67 69 74   number of digit
4e10: 73 20 74 6f 20 74 68 65 20 72 69 67 68 74 20 6f  s to the right o
4e20: 66 20 74 68 65 0a 64 65 63 69 6d 61 6c 20 70 6f  f the.decimal po
4e30: 69 6e 74 20 74 6f 20 70 72 65 73 65 72 76 65 2e  int to preserve.
4e40: 20 20 49 66 20 74 68 65 20 73 65 63 6f 6e 64 20    If the second 
4e50: 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74  argument is omit
4e60: 74 65 64 2c 0a 7a 65 72 6f 20 69 73 20 61 73 73  ted,.zero is ass
4e70: 75 6d 65 64 2e 20 20 53 6f 20 72 6f 75 6e 64 28  umed.  So round(
4e80: 31 2e 32 33 34 35 36 2c 32 29 20 69 73 20 31 2e  1.23456,2) is 1.
4e90: 32 33 20 61 6e 64 0a 72 6f 75 6e 64 28 31 32 2e  23 and.round(12.
4ea0: 33 34 2c 30 29 20 61 6e 64 20 72 6f 75 6e 64 28  34,0) and round(
4eb0: 31 32 2e 33 34 29 20 62 6f 74 68 20 65 76 61 6c  12.34) both eval
4ec0: 75 61 74 65 20 74 6f 20 31 32 2e 0a 3c 2f 70 3e  uate to 12..</p>
4ed0: 0a 0a 3c 70 3e 0a 54 68 65 20 22 3c 62 3e 63 6f  ..<p>.The "<b>co
4ee0: 75 6e 74 28 2a 29 3c 2f 62 3e 22 20 73 79 6e 74  unt(*)</b>" synt
4ef0: 61 78 20 69 73 20 73 75 70 70 6f 72 74 65 64 20  ax is supported 
4f00: 62 75 74 0a 22 3c 62 3e 63 6f 75 6e 74 28 64 69  but."<b>count(di
4f10: 73 74 69 6e 63 74 3c 2f 62 3e 20 3c 69 3e 43 4f  stinct</b> <i>CO
4f20: 4c 55 4d 4e 2d 4e 41 4d 45 3c 2f 69 3e 3c 62 3e  LUMN-NAME</i><b>
4f30: 29 3c 2f 62 3e 22 20 69 73 20 6e 6f 74 2e 0a 3c  )</b>" is not..<
4f40: 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 49  /p>.}..Section I
4f50: 4e 53 45 52 54 20 69 6e 73 65 72 74 0a 0a 53 79  NSERT insert..Sy
4f60: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
4f70: 65 6e 74 7d 20 7b 0a 49 4e 53 45 52 54 20 5b 4f  ent} {.INSERT [O
4f80: 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f  R <conflict-algo
4f90: 72 69 74 68 6d 3e 5d 20 49 4e 54 4f 20 3c 74 61  rithm>] INTO <ta
4fa0: 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 3c 63 6f 6c  ble-name> [(<col
4fb0: 75 6d 6e 2d 6c 69 73 74 3e 29 5d 20 56 41 4c 55  umn-list>)] VALU
4fc0: 45 53 28 3c 76 61 6c 75 65 2d 6c 69 73 74 3e 29  ES(<value-list>)
4fd0: 20 7c 0a 49 4e 53 45 52 54 20 5b 4f 52 20 3c 63   |.INSERT [OR <c
4fe0: 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68  onflict-algorith
4ff0: 6d 3e 5d 20 49 4e 54 4f 20 3c 74 61 62 6c 65 2d  m>] INTO <table-
5000: 6e 61 6d 65 3e 20 5b 28 3c 63 6f 6c 75 6d 6e 2d  name> [(<column-
5010: 6c 69 73 74 3e 29 5d 20 3c 73 65 6c 65 63 74 2d  list>)] <select-
5020: 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75  statement>.}..pu
5030: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 49 4e 53 45  ts {.<p>The INSE
5040: 52 54 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d  RT statement com
5050: 65 73 20 69 6e 20 74 77 6f 20 62 61 73 69 63 20  es in two basic 
5060: 66 6f 72 6d 73 2e 20 20 54 68 65 20 66 69 72 73  forms.  The firs
5070: 74 20 66 6f 72 6d 0a 28 77 69 74 68 20 74 68 65  t form.(with the
5080: 20 22 56 41 4c 55 45 53 22 20 6b 65 79 77 6f 72   "VALUES" keywor
5090: 64 29 20 63 72 65 61 74 65 73 20 61 20 73 69 6e  d) creates a sin
50a0: 67 6c 65 20 6e 65 77 20 72 6f 77 20 69 6e 20 61  gle new row in a
50b0: 6e 20 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65  n existing table
50c0: 2e 0a 49 66 20 6e 6f 20 63 6f 6c 75 6d 6e 2d 6c  ..If no column-l
50d0: 69 73 74 20 69 73 20 73 70 65 63 69 66 69 65 64  ist is specified
50e0: 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65 72   then the number
50f0: 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73 74 0a   of values must.
5100: 62 65 20 74 68 65 20 73 61 6d 65 20 61 73 20 74  be the same as t
5110: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
5120: 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c  umns in the tabl
5130: 65 2e 20 20 49 66 20 61 20 63 6f 6c 75 6d 6e 2d  e.  If a column-
5140: 6c 69 73 74 0a 69 73 20 73 70 65 63 69 66 69 65  list.is specifie
5150: 64 2c 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62  d, then the numb
5160: 65 72 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73  er of values mus
5170: 74 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62  t match the numb
5180: 65 72 20 6f 66 0a 73 70 65 63 69 66 69 65 64 20  er of.specified 
5190: 63 6f 6c 75 6d 6e 73 2e 20 20 43 6f 6c 75 6d 6e  columns.  Column
51a0: 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 74  s of the table t
51b0: 68 61 74 20 64 6f 20 6e 6f 74 20 61 70 70 65 61  hat do not appea
51c0: 72 20 69 6e 20 74 68 65 0a 63 6f 6c 75 6d 6e 20  r in the.column 
51d0: 6c 69 73 74 20 61 72 65 20 66 69 6c 6c 20 77 69  list are fill wi
51e0: 74 68 20 74 68 65 20 64 65 66 61 75 6c 74 20 76  th the default v
51f0: 61 6c 75 65 2c 20 6f 72 20 77 69 74 68 20 4e 55  alue, or with NU
5200: 4c 4c 20 69 66 20 6e 6f 74 0a 64 65 66 61 75 6c  LL if not.defaul
5210: 74 20 76 61 6c 75 65 20 69 73 20 73 70 65 63 69  t value is speci
5220: 66 69 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54  fied..</p>..<p>T
5230: 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20 6f  he second form o
5240: 66 20 74 68 65 20 49 4e 53 45 52 54 20 73 74 61  f the INSERT sta
5250: 74 65 6d 65 6e 74 20 74 61 6b 65 73 20 69 74 20  tement takes it 
5260: 64 61 74 61 20 66 72 6f 6d 20 61 0a 53 45 4c 45  data from a.SELE
5270: 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  CT statement.  T
5280: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
5290: 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75  umns in the resu
52a0: 6c 74 20 6f 66 20 74 68 65 0a 53 45 4c 45 43 54  lt of the.SELECT
52b0: 20 6d 75 73 74 20 65 78 61 63 74 6c 79 20 6d 61   must exactly ma
52c0: 74 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  tch the number o
52d0: 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  f columns in the
52e0: 20 74 61 62 6c 65 20 69 66 0a 6e 6f 20 63 6f 6c   table if.no col
52f0: 75 6d 6e 20 6c 69 73 74 20 69 73 20 73 70 65 63  umn list is spec
5300: 69 66 69 65 64 2c 20 6f 72 20 69 74 20 6d 75 73  ified, or it mus
5310: 74 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62  t match the numb
5320: 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 0a 6e 61  er of columns.na
5330: 6d 65 20 69 6e 20 74 68 65 20 63 6f 6c 75 6d 6e  me in the column
5340: 20 6c 69 73 74 2e 20 20 41 20 6e 65 77 20 65 6e   list.  A new en
5350: 74 72 79 20 69 73 20 6d 61 64 65 20 69 6e 20 74  try is made in t
5360: 68 65 20 74 61 62 6c 65 0a 66 6f 72 20 65 76 65  he table.for eve
5370: 72 79 20 72 6f 77 20 6f 66 20 74 68 65 20 53 45  ry row of the SE
5380: 4c 45 43 54 20 72 65 73 75 6c 74 2e 20 20 54 68  LECT result.  Th
5390: 65 20 53 45 4c 45 43 54 20 6d 61 79 20 62 65 20  e SELECT may be 
53a0: 73 69 6d 70 6c 65 0a 6f 72 20 63 6f 6d 70 6f 75  simple.or compou
53b0: 6e 64 2e 20 20 49 66 20 74 68 65 20 53 45 4c 45  nd.  If the SELE
53c0: 43 54 20 73 74 61 74 65 6d 65 6e 74 20 68 61 73  CT statement has
53d0: 20 61 6e 20 4f 52 44 45 52 20 42 59 20 63 6c 61   an ORDER BY cla
53e0: 75 73 65 2c 0a 74 68 65 20 4f 52 44 45 52 20 42  use,.the ORDER B
53f0: 59 20 69 73 20 69 67 6e 6f 72 65 64 2e 3c 2f 70  Y is ignored.</p
5400: 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e  >..<p>The option
5410: 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  al conflict-clau
5420: 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70  se allows the sp
5430: 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61  ecification of a
5440: 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f  n alternative.co
5450: 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63  nstraint conflic
5460: 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t resolution alg
5470: 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20 64 75  orithm to use du
5480: 72 69 6e 67 20 74 68 69 73 20 6f 6e 65 20 63 6f  ring this one co
5490: 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73  mmand..See the s
54a0: 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61  ection titled.<a
54b0: 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74   href="#conflict
54c0: 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61  ">ON CONFLICT</a
54d0: 3e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  > for additional
54e0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 46 6f   information..Fo
54f0: 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  r compatibility 
5500: 77 69 74 68 20 4d 79 53 51 4c 2c 20 74 68 65 20  with MySQL, the 
5510: 70 61 72 73 65 72 20 61 6c 6c 6f 77 73 20 74 68  parser allows th
5520: 65 20 75 73 65 20 6f 66 20 74 68 65 0a 73 69 6e  e use of the.sin
5530: 67 6c 65 20 6b 65 79 77 6f 72 64 20 22 52 45 50  gle keyword "REP
5540: 4c 41 43 45 22 20 61 73 20 61 6e 20 61 6c 69 61  LACE" as an alia
5550: 73 20 66 6f 72 20 22 49 4e 53 45 52 54 20 4f 52  s for "INSERT OR
5560: 20 52 45 50 4c 41 43 45 22 2e 0a 3c 2f 70 3e 0a   REPLACE"..</p>.
5570: 7d 0a 0a 53 65 63 74 69 6f 6e 20 7b 4f 4e 20 43  }..Section {ON C
5580: 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20  ONFLICT clause} 
5590: 63 6f 6e 66 6c 69 63 74 0a 0a 53 79 6e 74 61 78  conflict..Syntax
55a0: 20 7b 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73   {conflict-claus
55b0: 65 7d 20 7b 0a 4f 4e 20 43 4f 4e 46 4c 49 43 54  e} {.ON CONFLICT
55c0: 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72   <conflict-algor
55d0: 69 74 68 6d 3e 0a 7d 20 7b 63 6f 6e 66 6c 69 63  ithm>.} {conflic
55e0: 74 2d 61 6c 67 6f 72 69 74 68 6d 7d 20 7b 0a 52  t-algorithm} {.R
55f0: 4f 4c 4c 42 41 43 4b 20 7c 20 41 42 4f 52 54 20  OLLBACK | ABORT 
5600: 7c 20 46 41 49 4c 20 7c 20 49 47 4e 4f 52 45 20  | FAIL | IGNORE 
5610: 7c 20 52 45 50 4c 41 43 45 0a 7d 0a 0a 70 75 74  | REPLACE.}..put
5620: 73 20 7b 0a 3c 70 3e 54 68 65 20 4f 4e 20 43 4f  s {.<p>The ON CO
5630: 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73  NFLICT clause is
5640: 20 6e 6f 74 20 61 20 73 65 70 61 72 61 74 65 20   not a separate 
5650: 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 49 74  SQL command.  It
5660: 20 69 73 20 61 0a 6e 6f 6e 2d 73 74 61 6e 64 61   is a.non-standa
5670: 72 64 20 63 6c 61 75 73 65 20 74 68 61 74 20 63  rd clause that c
5680: 61 6e 20 61 70 70 65 61 72 20 69 6e 20 6d 61 6e  an appear in man
5690: 79 20 6f 74 68 65 72 20 53 51 4c 20 63 6f 6d 6d  y other SQL comm
56a0: 61 6e 64 73 2e 0a 49 74 20 69 73 20 67 69 76 65  ands..It is give
56b0: 6e 20 69 74 73 20 6f 77 6e 20 73 65 63 74 69 6f  n its own sectio
56c0: 6e 20 69 6e 20 74 68 69 73 20 64 6f 63 75 6d 65  n in this docume
56d0: 6e 74 20 62 65 63 61 75 73 65 20 69 74 20 69 73  nt because it is
56e0: 20 6e 6f 74 0a 70 61 72 74 20 6f 66 20 73 74 61   not.part of sta
56f0: 6e 64 61 72 64 20 53 51 4c 20 61 6e 64 20 74 68  ndard SQL and th
5700: 65 72 65 66 6f 72 65 20 6d 69 67 68 74 20 6e 6f  erefore might no
5710: 74 20 62 65 20 66 61 6d 69 6c 69 61 72 2e 3c 2f  t be familiar.</
5720: 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 79 6e 74 61  p>..<p>The synta
5730: 78 20 66 6f 72 20 74 68 65 20 4f 4e 20 43 4f 4e  x for the ON CON
5740: 46 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73 20  FLICT clause is 
5750: 61 73 20 73 68 6f 77 6e 20 61 62 6f 76 65 20 66  as shown above f
5760: 6f 72 0a 74 68 65 20 43 52 45 41 54 45 20 54 41  or.the CREATE TA
5770: 42 4c 45 2c 20 43 52 45 41 54 45 20 49 4e 44 45  BLE, CREATE INDE
5780: 58 2c 20 61 6e 64 20 42 45 47 49 4e 20 54 52 41  X, and BEGIN TRA
5790: 4e 53 41 43 54 49 4f 4e 20 63 6f 6d 6d 61 6e 64  NSACTION command
57a0: 73 2e 0a 46 6f 72 20 74 68 65 20 43 4f 50 59 2c  s..For the COPY,
57b0: 20 49 4e 53 45 52 54 2c 20 61 6e 64 20 55 50 44   INSERT, and UPD
57c0: 41 54 45 20 63 6f 6d 6d 61 6e 64 73 2c 20 74 68  ATE commands, th
57d0: 65 20 6b 65 79 77 6f 72 64 73 0a 22 4f 4e 20 43  e keywords."ON C
57e0: 4f 4e 46 4c 49 43 54 22 20 61 72 65 20 72 65 70  ONFLICT" are rep
57f0: 6c 61 63 65 64 20 62 79 20 22 4f 52 22 2c 20 74  laced by "OR", t
5800: 6f 20 6d 61 6b 65 20 74 68 65 20 73 79 6e 74 61  o make the synta
5810: 78 20 73 65 65 6d 20 6d 6f 72 65 0a 6e 61 74 75  x seem more.natu
5820: 72 61 6c 2e 20 20 42 75 74 20 74 68 65 20 6d 65  ral.  But the me
5830: 61 6e 69 6e 67 20 6f 66 20 74 68 65 20 63 6c 61  aning of the cla
5840: 75 73 65 20 69 73 20 74 68 65 20 73 61 6d 65 20  use is the same 
5850: 65 69 74 68 65 72 20 77 61 79 2e 3c 2f 70 3e 0a  either way.</p>.
5860: 0a 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c  .<p>The ON CONFL
5870: 49 43 54 20 63 6c 61 75 73 65 20 73 70 65 63 69  ICT clause speci
5880: 66 69 65 73 20 61 6e 20 61 6c 67 6f 72 69 74 68  fies an algorith
5890: 6d 20 75 73 65 64 20 74 6f 20 72 65 73 6f 6c 76  m used to resolv
58a0: 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  e.constraint con
58b0: 66 6c 69 63 74 73 2e 20 20 54 68 65 72 65 20 61  flicts.  There a
58c0: 72 65 20 66 69 76 65 20 63 68 6f 69 63 65 73 3a  re five choices:
58d0: 20 52 4f 4c 4c 42 41 43 4b 2c 20 41 42 4f 52 54   ROLLBACK, ABORT
58e0: 2c 0a 46 41 49 4c 2c 20 49 47 4e 4f 52 45 2c 20  ,.FAIL, IGNORE, 
58f0: 61 6e 64 20 52 45 50 4c 41 43 45 2e 20 54 68 65  and REPLACE. The
5900: 20 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74   default algorit
5910: 68 6d 20 69 73 20 41 42 4f 52 54 2e 20 20 54 68  hm is ABORT.  Th
5920: 69 73 0a 69 73 20 77 68 61 74 20 74 68 65 79 20  is.is what they 
5930: 6d 65 61 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a  mean:</p>..<dl>.
5940: 3c 64 74 3e 3c 62 3e 52 4f 4c 4c 42 41 43 4b 3c  <dt><b>ROLLBACK<
5950: 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e  /b></dt>.<dd><p>
5960: 57 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e  When a constrain
5970: 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75  t violation occu
5980: 72 73 2c 20 61 6e 20 69 6d 6d 65 64 69 61 74 65  rs, an immediate
5990: 20 52 4f 4c 4c 42 41 43 4b 0a 6f 63 63 75 72 73   ROLLBACK.occurs
59a0: 2c 20 74 68 75 73 20 65 6e 64 69 6e 67 20 74 68  , thus ending th
59b0: 65 20 63 75 72 72 65 6e 74 20 74 72 61 6e 73 61  e current transa
59c0: 63 74 69 6f 6e 2c 20 61 6e 64 20 74 68 65 20 63  ction, and the c
59d0: 6f 6d 6d 61 6e 64 20 61 62 6f 72 74 73 0a 77 69  ommand aborts.wi
59e0: 74 68 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65  th a return code
59f0: 20 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54   of SQLITE_CONST
5a00: 52 41 49 4e 54 2e 20 20 49 66 20 6e 6f 20 74 72  RAINT.  If no tr
5a10: 61 6e 73 61 63 74 69 6f 6e 20 69 73 0a 61 63 74  ansaction is.act
5a20: 69 76 65 20 28 6f 74 68 65 72 20 74 68 61 6e 20  ive (other than 
5a30: 74 68 65 20 69 6d 70 6c 69 65 64 20 74 72 61 6e  the implied tran
5a40: 73 61 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20  saction that is 
5a50: 63 72 65 61 74 65 64 20 6f 6e 20 65 76 65 72 79  created on every
5a60: 0a 63 6f 6d 6d 61 6e 64 29 20 74 68 65 6e 20 74  .command) then t
5a70: 68 69 73 20 61 6c 67 6f 72 69 74 68 6d 20 77 6f  his algorithm wo
5a80: 72 6b 73 20 74 68 65 20 73 61 6d 65 20 61 73 20  rks the same as 
5a90: 41 42 4f 52 54 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a  ABORT.</p></dd>.
5aa0: 0a 3c 64 74 3e 3c 62 3e 41 42 4f 52 54 3c 2f 62  .<dt><b>ABORT</b
5ab0: 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68  ></dt>.<dd><p>Wh
5ac0: 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20  en a constraint 
5ad0: 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
5ae0: 2c 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 62 61  , the command ba
5af0: 63 6b 73 20 6f 75 74 0a 61 6e 79 20 70 72 69 6f  cks out.any prio
5b00: 72 20 63 68 61 6e 67 65 73 20 69 74 20 6d 69 67  r changes it mig
5b10: 68 74 20 68 61 76 65 20 6d 61 64 65 20 61 6e 64  ht have made and
5b20: 20 61 62 6f 72 74 73 20 77 69 74 68 20 61 20 72   aborts with a r
5b30: 65 74 75 72 6e 20 63 6f 64 65 0a 6f 66 20 53 51  eturn code.of SQ
5b40: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e  LITE_CONSTRAINT.
5b50: 20 20 42 75 74 20 6e 6f 20 52 4f 4c 4c 42 41 43    But no ROLLBAC
5b60: 4b 20 69 73 20 65 78 65 63 75 74 65 64 20 73 6f  K is executed so
5b70: 20 63 68 61 6e 67 65 73 0a 66 72 6f 6d 20 70 72   changes.from pr
5b80: 69 6f 72 20 63 6f 6d 6d 61 6e 64 73 20 77 69 74  ior commands wit
5b90: 68 69 6e 20 74 68 65 20 73 61 6d 65 20 74 72 61  hin the same tra
5ba0: 6e 73 61 63 74 69 6f 6e 0a 61 72 65 20 70 72 65  nsaction.are pre
5bb0: 73 65 72 76 65 64 2e 20 20 54 68 69 73 20 69 73  served.  This is
5bc0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68   the default beh
5bd0: 61 76 69 6f 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a  avior.</p></dd>.
5be0: 0a 3c 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f 62 3e  .<dt><b>FAIL</b>
5bf0: 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65  </dt>.<dd><p>Whe
5c00: 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  n a constraint v
5c10: 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
5c20: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f   the command abo
5c30: 72 74 73 20 77 69 74 68 20 61 0a 72 65 74 75 72  rts with a.retur
5c40: 6e 20 63 6f 64 65 20 53 51 4c 49 54 45 5f 43 4f  n code SQLITE_CO
5c50: 4e 53 54 52 41 49 4e 54 2e 20 20 42 75 74 20 61  NSTRAINT.  But a
5c60: 6e 79 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68  ny changes to th
5c70: 65 20 64 61 74 61 62 61 73 65 20 74 68 61 74 0a  e database that.
5c80: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6d 61 64 65  the command made
5c90: 20 70 72 69 6f 72 20 74 6f 20 65 6e 63 6f 75 6e   prior to encoun
5ca0: 74 65 72 69 6e 67 20 74 68 65 20 63 6f 6e 73 74  tering the const
5cb0: 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a  raint violation.
5cc0: 61 72 65 20 70 72 65 73 65 72 76 65 64 20 61 6e  are preserved an
5cd0: 64 20 61 72 65 20 6e 6f 74 20 62 61 63 6b 65 64  d are not backed
5ce0: 20 6f 75 74 2e 20 20 46 6f 72 20 65 78 61 6d 70   out.  For examp
5cf0: 6c 65 2c 20 69 66 20 61 6e 20 55 50 44 41 54 45  le, if an UPDATE
5d00: 0a 73 74 61 74 65 6d 65 6e 74 20 65 6e 63 6f 75  .statement encou
5d10: 6e 74 65 72 65 64 20 61 20 63 6f 6e 73 74 72 61  ntered a constra
5d20: 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 6e  int violation on
5d30: 20 74 68 65 20 31 30 30 74 68 20 72 6f 77 20 74   the 100th row t
5d40: 68 61 74 0a 69 74 20 61 74 74 65 6d 70 74 73 20  hat.it attempts 
5d50: 74 6f 20 75 70 64 61 74 65 2c 20 74 68 65 6e 20  to update, then 
5d60: 74 68 65 20 66 69 72 73 74 20 39 39 20 72 6f 77  the first 99 row
5d70: 20 63 68 61 6e 67 65 73 20 61 72 65 20 70 72 65   changes are pre
5d80: 73 65 72 76 65 64 0a 62 75 74 20 63 68 61 6e 67  served.but chang
5d90: 65 73 20 74 6f 20 72 6f 77 73 20 31 30 30 20 61  es to rows 100 a
5da0: 6e 64 20 62 65 79 6f 6e 64 20 6e 65 76 65 72 20  nd beyond never 
5db0: 6f 63 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a  occur.</p></dd>.
5dc0: 0a 3c 64 74 3e 3c 62 3e 49 47 4e 4f 52 45 3c 2f  .<dt><b>IGNORE</
5dd0: 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57  b></dt>.<dd><p>W
5de0: 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74  hen a constraint
5df0: 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
5e00: 73 2c 20 74 68 65 20 6f 6e 65 20 72 6f 77 20 74  s, the one row t
5e10: 68 61 74 20 63 6f 6e 74 61 69 6e 73 0a 74 68 65  hat contains.the
5e20: 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
5e30: 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 69 6e 73  ation is not ins
5e40: 65 72 74 65 64 20 6f 72 20 63 68 61 6e 67 65 64  erted or changed
5e50: 2e 20 20 42 75 74 20 74 68 65 20 63 6f 6d 6d 61  .  But the comma
5e60: 6e 64 0a 63 6f 6e 74 69 6e 75 65 73 20 65 78 65  nd.continues exe
5e70: 63 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e  cuting normally.
5e80: 20 20 4f 74 68 65 72 20 72 6f 77 73 20 62 65 66    Other rows bef
5e90: 6f 72 65 20 61 6e 64 20 61 66 74 65 72 20 74 68  ore and after th
5ea0: 65 20 72 6f 77 20 74 68 61 74 0a 63 6f 6e 74 61  e row that.conta
5eb0: 69 6e 65 64 20 74 68 65 20 63 6f 6e 73 74 72 61  ined the constra
5ec0: 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 63 6f  int violation co
5ed0: 6e 74 69 6e 75 65 20 74 6f 20 62 65 20 69 6e 73  ntinue to be ins
5ee0: 65 72 74 65 64 20 6f 72 20 75 70 64 61 74 65 64  erted or updated
5ef0: 0a 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65  .normally.  No e
5f00: 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64  rror is returned
5f10: 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e  .</p></dd>..<dt>
5f20: 3c 62 3e 52 45 50 4c 41 43 45 3c 2f 62 3e 3c 2f  <b>REPLACE</b></
5f30: 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20  dt>.<dd><p>When 
5f40: 61 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61  a UNIQUE constra
5f50: 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63  int violation oc
5f60: 63 75 72 73 2c 20 74 68 65 20 70 72 65 2d 65 78  curs, the pre-ex
5f70: 69 73 74 69 6e 67 20 72 6f 77 0a 74 68 61 74 20  isting row.that 
5f80: 69 73 20 63 61 75 73 69 6e 67 20 74 68 65 20 63  is causing the c
5f90: 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
5fa0: 69 6f 6e 20 69 73 20 72 65 6d 6f 76 65 64 20 70  ion is removed p
5fb0: 72 69 6f 72 20 74 6f 20 69 6e 73 65 72 74 69 6e  rior to insertin
5fc0: 67 0a 6f 72 20 75 70 64 61 74 69 6e 67 20 74 68  g.or updating th
5fd0: 65 20 63 75 72 72 65 6e 74 20 72 6f 77 2e 20 20  e current row.  
5fe0: 54 68 75 73 20 74 68 65 20 69 6e 73 65 72 74 20  Thus the insert 
5ff0: 6f 72 20 75 70 64 61 74 65 20 61 6c 77 61 79 73  or update always
6000: 20 6f 63 63 75 72 73 2e 0a 54 68 65 20 63 6f 6d   occurs..The com
6010: 6d 61 6e 64 20 63 6f 6e 74 69 6e 75 65 73 20 65  mand continues e
6020: 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c  xecuting normall
6030: 79 2e 20 20 4e 6f 20 65 72 72 6f 72 20 69 73 20  y.  No error is 
6040: 72 65 74 75 72 6e 65 64 2e 3c 2f 70 3e 0a 3c 70  returned.</p>.<p
6050: 3e 49 66 20 61 20 4e 4f 54 20 4e 55 4c 4c 20 63  >If a NOT NULL c
6060: 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
6070: 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20  ion occurs, the 
6080: 4e 55 4c 4c 20 76 61 6c 75 65 20 69 73 20 72 65  NULL value is re
6090: 70 6c 61 63 65 64 0a 62 79 20 74 68 65 20 64 65  placed.by the de
60a0: 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 20  fault value for 
60b0: 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 49 66  that column.  If
60c0: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 68 61 73 20   the column has 
60d0: 6e 6f 20 64 65 66 61 75 6c 74 0a 76 61 6c 75 65  no default.value
60e0: 2c 20 74 68 65 6e 20 74 68 65 20 41 42 4f 52 54  , then the ABORT
60f0: 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73   algorithm is us
6100: 65 64 2e 3c 2f 70 3e 0a 3c 2f 64 64 3e 0a 3c 2f  ed.</p>.</dd>.</
6110: 64 6c 3e 0a 0a 3c 70 3e 0a 54 68 65 20 63 6f 6e  dl>..<p>.The con
6120: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
6130: 20 61 6c 67 6f 72 69 74 68 6d 20 63 61 6e 20 62   algorithm can b
6140: 65 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 74  e specified in t
6150: 68 72 65 65 20 70 6c 61 63 65 73 2c 0a 69 6e 20  hree places,.in 
6160: 6f 72 64 65 72 20 66 72 6f 6d 20 6c 6f 77 65 73  order from lowes
6170: 74 20 74 6f 20 68 69 67 68 65 73 74 20 70 72 65  t to highest pre
6180: 63 65 64 65 6e 63 65 3a 0a 3c 2f 70 3e 0a 0a 3c  cedence:.</p>..<
6190: 6f 6c 3e 0a 3c 6c 69 3e 3c 70 3e 0a 4f 6e 20 61  ol>.<li><p>.On a
61a0: 20 42 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49   BEGIN TRANSACTI
61b0: 4f 4e 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e  ON command..</p>
61c0: 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 4f  </li>..<li><p>.O
61d0: 6e 20 69 6e 64 69 76 69 64 75 61 6c 20 63 6f 6e  n individual con
61e0: 73 74 72 61 69 6e 74 73 20 77 69 74 68 69 6e 20  straints within 
61f0: 61 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 6f  a CREATE TABLE o
6200: 72 20 43 52 45 41 54 45 20 49 4e 44 45 58 0a 73  r CREATE INDEX.s
6210: 74 61 74 65 6d 65 6e 74 2e 0a 3c 2f 70 3e 3c 2f  tatement..</p></
6220: 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 49 6e 20  li>..<li><p>.In 
6230: 74 68 65 20 4f 52 20 63 6c 61 75 73 65 20 6f 66  the OR clause of
6240: 20 61 20 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c   a COPY, INSERT,
6250: 20 6f 72 20 55 50 44 41 54 45 20 63 6f 6d 6d 61   or UPDATE comma
6260: 6e 64 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f  nd..</p></li>.</
6270: 6f 6c 3e 0a 0a 3c 70 3e 54 68 65 20 61 6c 67 6f  ol>..<p>The algo
6280: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
6290: 69 6e 20 74 68 65 20 4f 52 20 63 6c 61 75 73 65  in the OR clause
62a0: 20 6f 66 20 61 20 43 4f 50 59 2c 20 49 4e 53 45   of a COPY, INSE
62b0: 52 54 2c 20 6f 72 20 55 50 44 41 54 45 0a 6f 76  RT, or UPDATE.ov
62c0: 65 72 72 69 64 65 73 20 61 6e 79 20 61 6c 67 6f  errides any algo
62d0: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
62e0: 62 79 20 61 20 43 52 45 41 54 45 20 54 41 42 4c  by a CREATE TABL
62f0: 45 20 6f 72 20 43 52 45 41 54 45 20 49 4e 44 45  E or CREATE INDE
6300: 58 2e 0a 54 68 65 20 61 6c 67 6f 72 69 74 68 6d  X..The algorithm
6310: 20 73 70 65 63 69 66 69 65 64 20 77 69 74 68 69   specified withi
6320: 6e 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45  n a CREATE TABLE
6330: 20 6f 72 20 43 52 45 41 54 45 20 49 4e 44 45 58   or CREATE INDEX
6340: 20 77 69 6c 6c 2c 20 69 6e 20 74 75 72 6e 2c 0a   will, in turn,.
6350: 6f 76 65 72 72 69 64 65 20 74 68 65 20 61 6c 67  override the alg
6360: 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64  orithm specified
6370: 20 62 79 20 61 20 42 45 47 49 4e 20 54 52 41 4e   by a BEGIN TRAN
6380: 53 41 43 54 49 4f 4e 20 63 6f 6d 6d 61 6e 64 2e  SACTION command.
6390: 0a 49 66 20 6e 6f 20 61 6c 67 6f 72 69 74 68 6d  .If no algorithm
63a0: 20 69 73 20 73 70 65 63 69 66 69 65 64 20 61 6e   is specified an
63b0: 79 77 68 65 72 65 2c 20 74 68 65 20 41 42 4f 52  ywhere, the ABOR
63c0: 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  T algorithm is u
63d0: 73 65 64 2e 3c 2f 70 3e 0a 0a 7d 0a 23 20 3c 70  sed.</p>..}.# <p
63e0: 3e 46 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20  >For additional 
63f0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 73 65 65  information, see
6400: 20 0a 23 20 3c 61 20 68 72 65 66 3d 22 63 6f 6e   .# <a href="con
6410: 66 6c 69 63 74 2e 68 74 6d 6c 22 3e 63 6f 6e 66  flict.html">conf
6420: 6c 69 63 74 2e 68 74 6d 6c 3c 2f 61 3e 2e 3c 2f  lict.html</a>.</
6430: 70 3e 0a 0a 0a 53 65 63 74 69 6f 6e 20 50 52 41  p>...Section PRA
6440: 47 4d 41 20 70 72 61 67 6d 61 0a 0a 53 79 6e 74  GMA pragma..Synt
6450: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
6460: 74 7d 20 7b 0a 50 52 41 47 4d 41 20 3c 6e 61 6d  t} {.PRAGMA <nam
6470: 65 3e 20 3d 20 3c 76 61 6c 75 65 3e 20 7c 0a 50  e> = <value> |.P
6480: 52 41 47 4d 41 20 3c 66 75 6e 63 74 69 6f 6e 3e  RAGMA <function>
6490: 28 3c 61 72 67 3e 29 0a 7d 0a 0a 70 75 74 73 20  (<arg>).}..puts 
64a0: 7b 0a 3c 70 3e 54 68 65 20 50 52 41 47 4d 41 20  {.<p>The PRAGMA 
64b0: 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 20  command is used 
64c0: 74 6f 20 6d 6f 64 69 66 79 20 74 68 65 20 6f 70  to modify the op
64d0: 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 53  eration of the S
64e0: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0a 54  QLite library..T
64f0: 68 65 20 70 72 61 67 6d 61 20 63 6f 6d 6d 61 6e  he pragma comman
6500: 64 20 69 73 20 65 78 70 65 72 69 6d 65 6e 74 61  d is experimenta
6510: 6c 20 61 6e 64 20 73 70 65 63 69 66 69 63 20 70  l and specific p
6520: 72 61 67 6d 61 20 73 74 61 74 65 6d 65 6e 74 73  ragma statements
6530: 20 6d 61 79 0a 72 65 6d 6f 76 65 64 20 6f 72 20   may.removed or 
6540: 61 64 64 65 64 20 69 6e 20 66 75 74 75 72 65 20  added in future 
6550: 72 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69  releases of SQLi
6560: 74 65 2e 20 20 55 73 65 20 74 68 69 73 20 63 6f  te.  Use this co
6570: 6d 6d 61 6e 64 0a 77 69 74 68 20 63 61 75 74 69  mmand.with cauti
6580: 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  on.</p>..<p>The 
6590: 63 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e  current implemen
65a0: 74 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 73 20  tation supports 
65b0: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 72  the following pr
65c0: 61 67 6d 61 73 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e  agmas:</p>..<ul>
65d0: 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d  .<li><p><b>PRAGM
65e0: 41 20 63 61 63 68 65 5f 73 69 7a 65 20 3d 20 3c  A cache_size = <
65f0: 2f 62 3e 3c 69 3e 4e 75 6d 62 65 72 2d 6f 66 2d  /b><i>Number-of-
6600: 70 61 67 65 73 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62  pages</i><b>;</b
6610: 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 43 68 61  ></p>.    <p>Cha
6620: 6e 67 65 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  nge the maximum 
6630: 6e 75 6d 62 65 72 20 6f 66 20 64 61 74 61 62 61  number of databa
6640: 73 65 20 64 69 73 6b 20 70 61 67 65 73 20 74 68  se disk pages th
6650: 61 74 20 53 51 4c 69 74 65 0a 20 20 20 20 77 69  at SQLite.    wi
6660: 6c 6c 20 68 6f 6c 64 20 69 6e 20 6d 65 6d 6f 72  ll hold in memor
6670: 79 20 61 74 20 6f 6e 63 65 2e 20 20 45 61 63 68  y at once.  Each
6680: 20 70 61 67 65 20 75 73 65 73 20 61 62 6f 75 74   page uses about
6690: 20 31 2e 35 4b 20 6f 66 20 52 41 4d 2e 0a 20 20   1.5K of RAM..  
66a0: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 63 61    The default ca
66b0: 63 68 65 20 73 69 7a 65 20 69 73 20 31 30 30 2e  che size is 100.
66c0: 20 20 49 66 20 79 6f 75 20 61 72 65 20 64 6f 69    If you are doi
66d0: 6e 67 20 55 50 44 41 54 45 73 20 6f 72 20 44 45  ng UPDATEs or DE
66e0: 4c 45 54 45 73 0a 20 20 20 20 74 68 61 74 20 63  LETEs.    that c
66f0: 68 61 6e 67 65 20 6d 61 6e 79 20 72 6f 77 73 20  hange many rows 
6700: 6f 66 20 61 20 64 61 74 61 62 61 73 65 20 61 6e  of a database an
6710: 64 20 79 6f 75 20 64 6f 20 6e 6f 74 20 6d 69 6e  d you do not min
6720: 64 20 69 66 20 53 51 4c 69 74 65 0a 20 20 20 20  d if SQLite.    
6730: 75 73 65 73 20 6d 6f 72 65 20 6d 65 6d 6f 72 79  uses more memory
6740: 2c 20 79 6f 75 20 63 61 6e 20 69 6e 63 72 65 61  , you can increa
6750: 73 65 20 74 68 65 20 63 61 63 68 65 20 73 69 7a  se the cache siz
6760: 65 20 66 6f 72 20 61 20 70 6f 73 73 69 62 6c 65  e for a possible
6770: 20 73 70 65 65 64 0a 20 20 20 20 69 6d 70 72 6f   speed.    impro
6780: 76 65 6d 65 6e 74 2e 3c 2f 70 3e 3c 2f 6c 69 3e  vement.</p></li>
6790: 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47  ..<li><p><b>PRAG
67a0: 4d 41 20 63 6f 75 6e 74 5f 63 68 61 6e 67 65 73  MA count_changes
67b0: 20 3d 20 4f 4e 3b 0a 20 20 20 20 20 20 20 3c 62   = ON;.       <b
67c0: 72 3e 50 52 41 47 4d 41 20 63 6f 75 6e 74 5f 63  r>PRAGMA count_c
67d0: 68 61 6e 67 65 73 20 3d 20 4f 46 46 3b 3c 2f 62  hanges = OFF;</b
67e0: 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 57 68 65  ></p>.    <p>Whe
67f0: 6e 20 6f 6e 2c 20 74 68 65 20 43 4f 55 4e 54 5f  n on, the COUNT_
6800: 43 48 41 4e 47 45 53 20 70 72 61 67 6d 61 20 63  CHANGES pragma c
6810: 61 75 73 65 73 20 74 68 65 20 63 61 6c 6c 62 61  auses the callba
6820: 63 6b 20 66 75 6e 63 74 69 6f 6e 20 74 6f 0a 20  ck function to. 
6830: 20 20 20 62 65 20 69 6e 76 6f 6b 65 64 20 6f 6e     be invoked on
6840: 63 65 20 66 6f 72 20 65 61 63 68 20 44 45 4c 45  ce for each DELE
6850: 54 45 2c 20 49 4e 53 45 52 54 2c 20 6f 72 20 55  TE, INSERT, or U
6860: 50 44 41 54 45 20 6f 70 65 72 61 74 69 6f 6e 2e  PDATE operation.
6870: 20 20 54 68 65 0a 20 20 20 20 61 72 67 75 6d 65    The.    argume
6880: 6e 74 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72  nt is the number
6890: 20 6f 66 20 72 6f 77 73 20 74 68 61 74 20 77 65   of rows that we
68a0: 72 65 20 63 68 61 6e 67 65 64 2e 3c 2f 70 3e 0a  re changed.</p>.
68b0: 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d  .<li><p><b>PRAGM
68c0: 41 20 65 6d 70 74 79 5f 72 65 73 75 6c 74 5f 63  A empty_result_c
68d0: 61 6c 6c 62 61 63 6b 73 20 3d 20 4f 4e 3b 0a 20  allbacks = ON;. 
68e0: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
68f0: 20 65 6d 70 74 79 5f 72 65 73 75 6c 74 5f 63 61   empty_result_ca
6900: 6c 6c 62 61 63 6b 73 20 3d 20 4f 46 46 3b 3c 2f  llbacks = OFF;</
6910: 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 57 68  b></p>.    <p>Wh
6920: 65 6e 20 6f 6e 2c 20 74 68 65 20 45 4d 50 54 59  en on, the EMPTY
6930: 5f 52 45 53 55 4c 54 5f 43 41 4c 4c 42 41 43 4b  _RESULT_CALLBACK
6940: 53 20 70 72 61 67 6d 61 20 63 61 75 73 65 73 20  S pragma causes 
6950: 74 68 65 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20  the callback.   
6960: 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20   function to be 
6970: 69 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72  invoked once for
6980: 20 65 61 63 68 20 71 75 65 72 79 20 74 68 61 74   each query that
6990: 20 68 61 73 20 61 6e 20 65 6d 70 74 79 20 72 65   has an empty re
69a0: 73 75 6c 74 0a 20 20 20 20 73 65 74 2e 20 20 54  sult.    set.  T
69b0: 68 65 20 74 68 69 72 64 20 22 3c 62 3e 61 72 67  he third "<b>arg
69c0: 76 3c 2f 62 3e 22 20 70 61 72 61 6d 65 74 65 72  v</b>" parameter
69d0: 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b   to the callback
69e0: 20 69 73 20 73 65 74 20 74 6f 20 4e 55 4c 4c 0a   is set to NULL.
69f0: 20 20 20 20 62 65 63 61 75 73 65 20 74 68 65 72      because ther
6a00: 65 20 69 73 20 6e 6f 20 64 61 74 61 20 74 6f 20  e is no data to 
6a10: 72 65 70 6f 72 74 2e 20 20 42 75 74 20 74 68 65  report.  But the
6a20: 20 73 65 63 6f 6e 64 20 22 3c 62 3e 61 72 67 63   second "<b>argc
6a30: 3c 2f 62 3e 22 20 61 6e 64 0a 20 20 20 20 66 6f  </b>" and.    fo
6a40: 75 72 74 68 20 22 3c 62 3e 63 6f 6c 75 6d 6e 4e  urth "<b>columnN
6a50: 61 6d 65 73 3c 2f 62 3e 22 20 70 61 72 61 6d 65  ames</b>" parame
6a60: 74 65 72 73 20 61 72 65 20 76 61 6c 69 64 20 61  ters are valid a
6a70: 6e 64 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  nd can be used t
6a80: 6f 0a 20 20 20 20 64 65 74 65 72 6d 69 6e 65 20  o.    determine 
6a90: 74 68 65 20 6e 75 6d 62 65 72 20 61 6e 64 20 6e  the number and n
6aa0: 61 6d 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75  ames of the colu
6ab0: 6d 6e 73 20 74 68 61 74 20 77 6f 75 6c 64 20 68  mns that would h
6ac0: 61 76 65 20 62 65 65 6e 20 69 6e 0a 20 20 20 20  ave been in.    
6ad0: 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 68  the result set h
6ae0: 61 64 20 74 68 65 20 73 65 74 20 6e 6f 74 20 62  ad the set not b
6af0: 65 65 6e 20 65 6d 70 74 79 2e 3c 2f 70 3e 0a 0a  een empty.</p>..
6b00: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
6b10: 20 66 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d   full_column_nam
6b20: 65 73 20 3d 20 4f 4e 3b 0a 20 20 20 20 20 20 20  es = ON;.       
6b30: 3c 62 72 3e 50 52 41 47 4d 41 20 66 75 6c 6c 5f  <br>PRAGMA full_
6b40: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 20 3d 20 4f  column_names = O
6b50: 46 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20  FF;</b></p>.    
6b60: 3c 70 3e 54 68 65 20 63 6f 6c 75 6d 6e 20 6e 61  <p>The column na
6b70: 6d 65 73 20 72 65 70 6f 72 74 65 64 20 69 6e 20  mes reported in 
6b80: 61 6e 20 53 51 4c 69 74 65 20 63 61 6c 6c 62 61  an SQLite callba
6b90: 63 6b 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20  ck are normally 
6ba0: 6a 75 73 74 0a 20 20 20 20 74 68 65 20 6e 61 6d  just.    the nam
6bb0: 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20  e of the column 
6bc0: 69 74 73 65 6c 66 2c 20 65 78 63 65 70 74 20 66  itself, except f
6bd0: 6f 72 20 6a 6f 69 6e 73 20 77 68 65 6e 20 22 54  or joins when "T
6be0: 41 42 4c 45 2e 43 4f 4c 55 4d 4e 22 0a 20 20 20  ABLE.COLUMN".   
6bf0: 20 69 73 20 75 73 65 64 2e 20 20 42 75 74 20 77   is used.  But w
6c00: 68 65 6e 20 66 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f  hen full_column_
6c10: 6e 61 6d 65 73 20 69 73 20 74 75 72 6e 65 64 20  names is turned 
6c20: 6f 6e 2c 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 73  on, column names
6c30: 20 61 72 65 0a 20 20 20 20 61 6c 77 61 79 73 20   are.    always 
6c40: 72 65 70 6f 72 74 65 64 20 61 73 20 22 54 41 42  reported as "TAB
6c50: 4c 45 2e 43 4f 4c 55 4d 4e 22 20 65 76 65 6e 20  LE.COLUMN" even 
6c60: 66 6f 72 20 73 69 6d 70 6c 65 20 71 75 65 72 69  for simple queri
6c70: 65 73 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c  es.</p></li>..<l
6c80: 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 69  i><p><b>PRAGMA i
6c90: 6e 64 65 78 5f 69 6e 66 6f 28 3c 2f 62 3e 3c 69  ndex_info(</b><i
6ca0: 3e 69 6e 64 65 78 2d 6e 61 6d 65 3c 2f 69 3e 3c  >index-name</i><
6cb0: 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20  b>);</b></p>.   
6cc0: 20 3c 70 3e 46 6f 72 20 65 61 63 68 20 63 6f 6c   <p>For each col
6cd0: 75 6d 6e 20 74 68 61 74 20 74 68 65 20 6e 61 6d  umn that the nam
6ce0: 65 64 20 69 6e 64 65 78 20 72 65 66 65 72 65 6e  ed index referen
6cf0: 63 65 73 2c 20 69 6e 76 6f 6b 65 20 74 68 65 20  ces, invoke the 
6d00: 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 66 75  .    callback fu
6d10: 6e 63 74 69 6f 6e 0a 20 20 20 20 6f 6e 63 65 20  nction.    once 
6d20: 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  with information
6d30: 20 61 62 6f 75 74 20 74 68 61 74 20 63 6f 6c 75   about that colu
6d40: 6d 6e 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68  mn, including th
6d50: 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2c 0a 20  e column name,. 
6d60: 20 20 20 61 6e 64 20 74 68 65 20 63 6f 6c 75 6d     and the colum
6d70: 6e 20 6e 75 6d 62 65 72 2e 3c 2f 70 3e 0a 0a 3c  n number.</p>..<
6d80: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
6d90: 69 6e 64 65 78 5f 6c 69 73 74 28 3c 2f 62 3e 3c  index_list(</b><
6da0: 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e  i>table-name</i>
6db0: 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20  <b>);</b></p>.  
6dc0: 20 20 3c 70 3e 46 6f 72 20 65 61 63 68 20 69 6e    <p>For each in
6dd0: 64 65 78 20 6f 6e 20 74 68 65 20 6e 61 6d 65 64  dex on the named
6de0: 20 74 61 62 6c 65 2c 20 69 6e 76 6f 6b 65 20 74   table, invoke t
6df0: 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  he callback func
6e00: 74 69 6f 6e 0a 20 20 20 20 6f 6e 63 65 20 77 69  tion.    once wi
6e10: 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61  th information a
6e20: 62 6f 75 74 20 74 68 61 74 20 69 6e 64 65 78 2e  bout that index.
6e30: 20 20 41 72 67 75 6d 65 6e 74 73 20 69 6e 63 6c    Arguments incl
6e40: 75 64 65 20 74 68 65 0a 20 20 20 20 69 6e 64 65  ude the.    inde
6e50: 78 20 6e 61 6d 65 20 61 6e 64 20 61 20 66 6c 61  x name and a fla
6e60: 67 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68  g to indicate wh
6e70: 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65  ether or not the
6e80: 20 69 6e 64 65 78 20 6d 75 73 74 20 62 65 0a 20   index must be. 
6e90: 20 20 20 75 6e 69 71 75 65 2e 3c 2f 70 3e 0a 0a     unique.</p>..
6ea0: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
6eb0: 20 70 61 72 73 65 72 5f 74 72 61 63 65 20 3d 20   parser_trace = 
6ec0: 4f 4e 3b 3c 62 72 3e 50 52 41 47 4d 41 20 70 61  ON;<br>PRAGMA pa
6ed0: 72 73 65 72 5f 74 72 61 63 65 20 3d 20 4f 46 46  rser_trace = OFF
6ee0: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
6ef0: 3e 54 75 72 6e 20 74 72 61 63 69 6e 67 20 6f 66  >Turn tracing of
6f00: 20 74 68 65 20 53 51 4c 20 70 61 72 73 65 72 20   the SQL parser 
6f10: 69 6e 73 69 64 65 20 6f 66 20 74 68 65 0a 20 20  inside of the.  
6f20: 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79    SQLite library
6f30: 20 6f 6e 20 61 6e 64 20 6f 66 66 2e 20 20 54 68   on and off.  Th
6f40: 69 73 20 69 73 20 75 73 65 64 20 66 6f 72 20 64  is is used for d
6f50: 65 62 75 67 67 69 6e 67 2e 0a 20 20 20 20 54 68  ebugging..    Th
6f60: 69 73 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 69 66  is only works if
6f70: 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73 20   the library is 
6f80: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 6f 75 74  compiled without
6f90: 20 74 68 65 20 4e 44 45 42 55 47 20 6d 61 63 72   the NDEBUG macr
6fa0: 6f 2e 0a 20 20 20 20 3c 2f 70 3e 3c 2f 6c 69 3e  o..    </p></li>
6fb0: 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47  ..<li><p><b>PRAG
6fc0: 4d 41 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65  MA integrity_che
6fd0: 63 6b 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20  ck;</b></p>.    
6fe0: 3c 70 3e 54 68 65 20 63 6f 6d 6d 61 6e 64 20 64  <p>The command d
6ff0: 6f 65 73 20 61 6e 20 69 6e 74 65 67 72 69 74 79  oes an integrity
7000: 20 63 68 65 63 6b 20 6f 66 20 74 68 65 20 65 6e   check of the en
7010: 74 69 72 65 20 64 61 74 61 62 61 73 65 2e 20 20  tire database.  
7020: 49 74 0a 20 20 20 20 6c 6f 6f 6b 73 20 66 6f 72  It.    looks for
7030: 20 6f 75 74 2d 6f 66 2d 6f 72 64 65 72 20 72 65   out-of-order re
7040: 63 6f 72 64 73 2c 20 6d 69 73 73 69 6e 67 20 70  cords, missing p
7050: 61 67 65 73 2c 20 61 6e 64 20 6d 61 6c 66 6f 72  ages, and malfor
7060: 6d 65 64 20 72 65 63 6f 72 64 73 2e 0a 20 20 20  med records..   
7070: 20 49 66 20 61 6e 79 20 70 72 6f 62 6c 65 6d 73   If any problems
7080: 20 61 72 65 20 66 6f 75 6e 64 2c 20 74 68 65 6e   are found, then
7090: 20 61 20 73 69 6e 67 6c 65 20 73 74 72 69 6e 67   a single string
70a0: 20 69 73 20 72 65 74 75 72 6e 65 64 20 77 68 69   is returned whi
70b0: 63 68 20 69 73 0a 20 20 20 20 61 20 64 65 73 63  ch is.    a desc
70c0: 72 69 70 74 69 6f 6e 20 6f 66 20 61 6c 6c 20 70  ription of all p
70d0: 72 6f 62 6c 65 6d 73 2e 20 20 49 66 20 65 76 65  roblems.  If eve
70e0: 72 79 74 68 69 6e 67 20 69 73 20 69 6e 20 6f 72  rything is in or
70f0: 64 65 72 2c 20 22 6f 6b 22 20 69 73 0a 20 20 20  der, "ok" is.   
7100: 20 72 65 74 75 72 6e 65 64 2e 3c 2f 70 3e 0a 0a   returned.</p>..
7110: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
7120: 20 74 61 62 6c 65 5f 69 6e 66 6f 28 3c 2f 62 3e   table_info(</b>
7130: 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69  <i>table-name</i
7140: 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20  ><b>);</b></p>. 
7150: 20 20 20 3c 70 3e 46 6f 72 20 65 61 63 68 20 63     <p>For each c
7160: 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 6e 61 6d  olumn in the nam
7170: 65 64 20 74 61 62 6c 65 2c 20 69 6e 76 6f 6b 65  ed table, invoke
7180: 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75   the callback fu
7190: 6e 63 74 69 6f 6e 0a 20 20 20 20 6f 6e 63 65 20  nction.    once 
71a0: 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  with information
71b0: 20 61 62 6f 75 74 20 74 68 61 74 20 63 6f 6c 75   about that colu
71c0: 6d 6e 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68  mn, including th
71d0: 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2c 0a 20  e column name,. 
71e0: 20 20 20 64 61 74 61 20 74 79 70 65 2c 20 77 68     data type, wh
71f0: 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65  ether or not the
7200: 20 63 6f 6c 75 6d 6e 20 63 61 6e 20 62 65 20 4e   column can be N
7210: 55 4c 4c 2c 20 61 6e 64 20 74 68 65 20 64 65 66  ULL, and the def
7220: 61 75 6c 74 0a 20 20 20 20 76 61 6c 75 65 20 66  ault.    value f
7230: 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 2e 3c 2f  or the column.</
7240: 70 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52  p>..<li><p><b>PR
7250: 41 47 4d 41 20 76 64 62 65 5f 74 72 61 63 65 20  AGMA vdbe_trace 
7260: 3d 20 4f 4e 3b 3c 62 72 3e 50 52 41 47 4d 41 20  = ON;<br>PRAGMA 
7270: 76 64 62 65 5f 74 72 61 63 65 20 3d 20 4f 46 46  vdbe_trace = OFF
7280: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
7290: 3e 54 75 72 6e 20 74 72 61 63 69 6e 67 20 6f 66  >Turn tracing of
72a0: 20 74 68 65 20 76 69 72 74 75 61 6c 20 64 61 74   the virtual dat
72b0: 61 62 61 73 65 20 65 6e 67 69 6e 65 20 69 6e 73  abase engine ins
72c0: 69 64 65 20 6f 66 20 74 68 65 0a 20 20 20 20 53  ide of the.    S
72d0: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 6e  QLite library on
72e0: 20 61 6e 64 20 6f 66 66 2e 20 20 54 68 69 73 20   and off.  This 
72f0: 69 73 20 75 73 65 64 20 66 6f 72 20 64 65 62 75  is used for debu
7300: 67 67 69 6e 67 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a  gging.</p></li>.
7310: 3c 2f 75 6c 3e 0a 0a 3c 70 3e 4e 6f 20 65 72 72  </ul>..<p>No err
7320: 6f 72 20 6d 65 73 73 61 67 65 20 69 73 20 67 65  or message is ge
7330: 6e 65 72 61 74 65 64 20 69 66 20 61 6e 20 75 6e  nerated if an un
7340: 6b 6e 6f 77 6e 20 70 72 61 67 6d 61 20 69 73 20  known pragma is 
7350: 69 73 73 75 65 64 2e 0a 55 6e 6b 6e 6f 77 6e 20  issued..Unknown 
7360: 70 72 61 67 6d 61 73 20 61 72 65 20 69 67 6e 6f  pragmas are igno
7370: 72 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74  red.</p>.}..Sect
7380: 69 6f 6e 20 52 45 50 4c 41 43 45 20 72 65 70 6c  ion REPLACE repl
7390: 61 63 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ace..Syntax {sql
73a0: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 52 45  -statement} {.RE
73b0: 50 4c 41 43 45 20 49 4e 54 4f 20 3c 74 61 62 6c  PLACE INTO <tabl
73c0: 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63 6f 6c 75  e-name> [( <colu
73d0: 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20 56 41 4c 55  mn-list> )] VALU
73e0: 45 53 20 28 20 3c 76 61 6c 75 65 2d 6c 69 73 74  ES ( <value-list
73f0: 3e 20 29 20 7c 0a 52 45 50 4c 41 43 45 20 49 4e  > ) |.REPLACE IN
7400: 54 4f 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20  TO <table-name> 
7410: 5b 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e  [( <column-list>
7420: 20 29 5d 20 3c 73 65 6c 65 63 74 2d 73 74 61 74   )] <select-stat
7430: 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b  ement>.}..puts {
7440: 0a 3c 70 3e 54 68 65 20 52 45 50 4c 41 43 45 20  .<p>The REPLACE 
7450: 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20 61 6c  command is an al
7460: 69 61 73 20 66 6f 72 20 74 68 65 20 22 49 4e 53  ias for the "INS
7470: 45 52 54 20 4f 52 20 52 45 50 4c 41 43 45 22 20  ERT OR REPLACE" 
7480: 76 61 72 69 61 6e 74 0a 6f 66 20 74 68 65 20 3c  variant.of the <
7490: 61 20 68 72 65 66 3d 22 23 69 6e 73 65 72 74 22  a href="#insert"
74a0: 3e 49 4e 53 45 52 54 20 63 6f 6d 6d 61 6e 64 3c  >INSERT command<
74b0: 2f 61 3e 2e 20 20 54 68 69 73 20 61 6c 69 61 73  /a>.  This alias
74c0: 20 69 73 20 70 72 6f 76 69 64 65 64 20 66 6f 72   is provided for
74d0: 0a 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77  .compatibility w
74e0: 69 74 68 20 4d 79 53 51 4c 2e 20 20 53 65 65 20  ith MySQL.  See 
74f0: 74 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 23 69  the .<a href="#i
7500: 6e 73 65 72 74 22 3e 49 4e 53 45 52 54 20 63 6f  nsert">INSERT co
7510: 6d 6d 61 6e 64 3c 2f 61 3e 20 64 6f 63 75 6d 65  mmand</a> docume
7520: 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64 64 69  ntation for addi
7530: 74 69 6f 6e 61 6c 0a 69 6e 66 6f 72 6d 61 74 69  tional.informati
7540: 6f 6e 2e 3c 2f 70 3e 20 20 0a 7d 0a 0a 53 65 63  on.</p>  .}..Sec
7550: 74 69 6f 6e 20 53 45 4c 45 43 54 20 73 65 6c 65  tion SELECT sele
7560: 63 74 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ct..Syntax {sql-
7570: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 53 45 4c  statement} {.SEL
7580: 45 43 54 20 3c 72 65 73 75 6c 74 3e 20 46 52 4f  ECT <result> FRO
7590: 4d 20 3c 74 61 62 6c 65 2d 6c 69 73 74 3e 0a 5b  M <table-list>.[
75a0: 57 48 45 52 45 20 3c 65 78 70 72 65 73 73 69 6f  WHERE <expressio
75b0: 6e 3e 5d 0a 5b 47 52 4f 55 50 20 42 59 20 3c 65  n>].[GROUP BY <e
75c0: 78 70 72 2d 6c 69 73 74 3e 5d 0a 5b 48 41 56 49  xpr-list>].[HAVI
75d0: 4e 47 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 5d  NG <expression>]
75e0: 0a 5b 3c 63 6f 6d 70 6f 75 6e 64 2d 6f 70 3e 20  .[<compound-op> 
75f0: 3c 73 65 6c 65 63 74 3e 5d 2a 0a 5b 4f 52 44 45  <select>]*.[ORDE
7600: 52 20 42 59 20 3c 73 6f 72 74 2d 65 78 70 72 2d  R BY <sort-expr-
7610: 6c 69 73 74 3e 5d 0a 5b 4c 49 4d 49 54 20 3c 69  list>].[LIMIT <i
7620: 6e 74 65 67 65 72 3e 20 5b 4f 46 46 53 45 54 20  nteger> [OFFSET 
7630: 3c 69 6e 74 65 67 65 72 3e 5d 5d 0a 7d 20 7b 72  <integer>]].} {r
7640: 65 73 75 6c 74 7d 20 7b 0a 3c 72 65 73 75 6c 74  esult} {.<result
7650: 2d 63 6f 6c 75 6d 6e 3e 20 5b 2c 20 3c 72 65 73  -column> [, <res
7660: 75 6c 74 2d 63 6f 6c 75 6d 6e 3e 5d 2a 0a 7d 20  ult-column>]*.} 
7670: 7b 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 7d 20  {result-column} 
7680: 7b 0a 53 54 41 52 20 7c 20 3c 65 78 70 72 65 73  {.STAR | <expres
7690: 73 69 6f 6e 3e 20 5b 20 5b 41 53 5d 20 3c 73 74  sion> [ [AS] <st
76a0: 72 69 6e 67 3e 20 5d 0a 7d 20 7b 74 61 62 6c 65  ring> ].} {table
76b0: 2d 6c 69 73 74 7d 20 7b 0a 3c 74 61 62 6c 65 3e  -list} {.<table>
76c0: 20 5b 2c 20 3c 74 61 62 6c 65 3e 5d 2a 0a 7d 20   [, <table>]*.} 
76d0: 7b 74 61 62 6c 65 7d 20 7b 0a 3c 74 61 62 6c 65  {table} {.<table
76e0: 2d 6e 61 6d 65 3e 20 5b 41 53 20 3c 61 6c 69 61  -name> [AS <alia
76f0: 73 3e 5d 20 7c 0a 28 20 3c 73 65 6c 65 63 74 3e  s>] |.( <select>
7700: 20 29 20 5b 41 53 20 3c 61 6c 69 61 73 3e 5d 0a   ) [AS <alias>].
7710: 7d 20 7b 73 6f 72 74 2d 65 78 70 72 2d 6c 69 73  } {sort-expr-lis
7720: 74 7d 20 7b 0a 3c 65 78 70 72 3e 20 5b 3c 73 6f  t} {.<expr> [<so
7730: 72 74 2d 6f 72 64 65 72 3e 5d 20 5b 2c 20 3c 65  rt-order>] [, <e
7740: 78 70 72 3e 20 5b 3c 73 6f 72 74 2d 6f 72 64 65  xpr> [<sort-orde
7750: 72 3e 5d 5d 2a 0a 7d 20 7b 73 6f 72 74 2d 6f 72  r>]]*.} {sort-or
7760: 64 65 72 7d 20 7b 0a 41 53 43 20 7c 20 44 45 53  der} {.ASC | DES
7770: 43 0a 7d 20 7b 63 6f 6d 70 6f 75 6e 64 5f 6f 70  C.} {compound_op
7780: 7d 20 7b 0a 55 4e 49 4f 4e 20 7c 20 55 4e 49 4f  } {.UNION | UNIO
7790: 4e 20 41 4c 4c 20 7c 20 49 4e 54 45 52 53 45 43  N ALL | INTERSEC
77a0: 54 20 7c 20 45 58 43 45 50 54 0a 7d 0a 0a 70 75  T | EXCEPT.}..pu
77b0: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 53 45 4c 45  ts {.<p>The SELE
77c0: 43 54 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  CT statement is 
77d0: 75 73 65 64 20 74 6f 20 71 75 65 72 79 20 74 68  used to query th
77e0: 65 20 64 61 74 61 62 61 73 65 2e 20 20 54 68 65  e database.  The
77f0: 0a 72 65 73 75 6c 74 20 6f 66 20 61 20 53 45 4c  .result of a SEL
7800: 45 43 54 20 69 73 20 7a 65 72 6f 20 6f 72 20 6d  ECT is zero or m
7810: 6f 72 65 20 72 6f 77 73 20 6f 66 20 64 61 74 61  ore rows of data
7820: 20 77 68 65 72 65 20 65 61 63 68 20 72 6f 77 0a   where each row.
7830: 68 61 73 20 61 20 66 69 78 65 64 20 6e 75 6d 62  has a fixed numb
7840: 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 2e 20 20  er of columns.  
7850: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  The number of co
7860: 6c 75 6d 6e 73 20 69 6e 20 74 68 65 0a 72 65 73  lumns in the.res
7870: 75 6c 74 20 69 73 20 73 70 65 63 69 66 69 65 64  ult is specified
7880: 20 62 79 20 74 68 65 20 65 78 70 72 65 73 73 69   by the expressi
7890: 6f 6e 20 6c 69 73 74 20 69 6e 20 62 65 74 77 65  on list in betwe
78a0: 65 6e 20 74 68 65 0a 53 45 4c 45 43 54 20 61 6e  en the.SELECT an
78b0: 64 20 46 52 4f 4d 20 6b 65 79 77 6f 72 64 73 2e  d FROM keywords.
78c0: 20 20 41 6e 79 20 61 72 62 69 74 72 61 72 79 20    Any arbitrary 
78d0: 65 78 70 72 65 73 73 69 6f 6e 20 63 61 6e 20 62  expression can b
78e0: 65 20 75 73 65 64 0a 61 73 20 61 20 72 65 73 75  e used.as a resu
78f0: 6c 74 2e 20 20 49 66 20 61 20 72 65 73 75 6c 74  lt.  If a result
7900: 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 7d   expression is }
7910: 0a 70 75 74 73 20 22 5b 4f 70 65 72 61 74 6f 72  .puts "[Operator
7920: 20 2a 5d 20 74 68 65 6e 20 61 6c 6c 20 63 6f 6c   *] then all col
7930: 75 6d 6e 73 20 6f 66 20 61 6c 6c 20 74 61 62 6c  umns of all tabl
7940: 65 73 20 61 72 65 20 73 75 62 73 74 69 74 75 74  es are substitut
7950: 65 64 22 0a 70 75 74 73 20 7b 66 6f 72 20 74 68  ed".puts {for th
7960: 61 74 20 6f 6e 65 20 65 78 70 72 65 73 73 69 6f  at one expressio
7970: 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 71  n.</p>..<p>The q
7980: 75 65 72 79 20 69 73 20 65 78 65 63 75 74 65 64  uery is executed
7990: 20 61 67 61 69 6e 20 6f 6e 65 20 6f 72 20 6d 6f   again one or mo
79a0: 72 65 20 74 61 62 6c 65 73 20 73 70 65 63 69 66  re tables specif
79b0: 69 65 64 20 61 66 74 65 72 0a 74 68 65 20 46 52  ied after.the FR
79c0: 4f 4d 20 6b 65 79 77 6f 72 64 2e 20 20 49 66 20  OM keyword.  If 
79d0: 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 74 61  more than one ta
79e0: 62 6c 65 20 69 73 20 73 70 65 63 69 66 69 65 64  ble is specified
79f0: 2c 20 74 68 65 6e 20 74 68 65 0a 71 75 65 72 79  , then the.query
7a00: 20 69 73 20 61 67 61 69 6e 73 74 20 74 68 65 20   is against the 
7a10: 28 69 6e 6e 65 72 29 20 6a 6f 69 6e 20 6f 66 20  (inner) join of 
7a20: 74 68 65 20 76 61 72 69 6f 75 73 20 74 61 62 6c  the various tabl
7a30: 65 73 2e 20 20 41 20 73 75 62 2d 71 75 65 72 79  es.  A sub-query
7a40: 0a 69 6e 20 70 61 72 65 6e 74 68 65 73 65 73 20  .in parentheses 
7a50: 6d 61 79 20 62 65 20 73 75 62 73 74 69 74 75 74  may be substitut
7a60: 65 64 20 66 6f 72 20 61 6e 79 20 74 61 62 6c 65  ed for any table
7a70: 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 46 52 4f   name in the FRO
7a80: 4d 20 63 6c 61 75 73 65 2e 0a 3c 2f 70 3e 0a 0a  M clause..</p>..
7a90: 3c 70 3e 54 68 65 20 57 48 45 52 45 20 63 6c 61  <p>The WHERE cla
7aa0: 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64 20  use can be used 
7ab0: 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e 75 6d  to limit the num
7ac0: 62 65 72 20 6f 66 20 72 6f 77 73 20 6f 76 65 72  ber of rows over
7ad0: 0a 77 68 69 63 68 20 74 68 65 20 71 75 65 72 79  .which the query
7ae0: 20 6f 70 65 72 61 74 65 73 2e 20 20 49 6e 20 74   operates.  In t
7af0: 68 65 20 63 75 72 72 65 6e 74 20 69 6d 70 6c 65  he current imple
7b00: 6d 65 6e 74 61 74 69 6f 6e 2c 0a 69 6e 64 69 63  mentation,.indic
7b10: 65 73 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 65 20  es will only be 
7b20: 75 73 65 64 20 74 6f 0a 6f 70 74 69 6d 69 7a 65  used to.optimize
7b30: 20 74 68 65 20 71 75 65 72 79 20 69 66 20 57 48   the query if WH
7b40: 45 52 45 20 65 78 70 72 65 73 73 69 6f 6e 20 63  ERE expression c
7b50: 6f 6e 74 61 69 6e 73 20 65 71 75 61 6c 69 74 79  ontains equality
7b60: 20 63 6f 6d 70 61 72 69 73 6f 6e 73 0a 63 6f 6e   comparisons.con
7b70: 6e 65 63 74 65 64 20 62 79 20 74 68 65 20 41 4e  nected by the AN
7b80: 44 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70 3e 0a  D operator.</p>.
7b90: 0a 3c 70 3e 54 68 65 20 47 52 4f 55 50 20 42 59  .<p>The GROUP BY
7ba0: 20 63 6c 61 75 73 65 73 20 63 61 75 73 65 73 20   clauses causes 
7bb0: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73  one or more rows
7bc0: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 74   of the result t
7bd0: 6f 0a 62 65 20 63 6f 6d 62 69 6e 65 64 20 69 6e  o.be combined in
7be0: 74 6f 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20  to a single row 
7bf0: 6f 66 20 6f 75 74 70 75 74 2e 20 20 54 68 69 73  of output.  This
7c00: 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75   is especially u
7c10: 73 65 66 75 6c 0a 77 68 65 6e 20 74 68 65 20 72  seful.when the r
7c20: 65 73 75 6c 74 20 63 6f 6e 74 61 69 6e 73 20 61  esult contains a
7c30: 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
7c40: 6e 73 2e 20 20 54 68 65 20 65 78 70 72 65 73 73  ns.  The express
7c50: 69 6f 6e 73 20 69 6e 0a 74 68 65 20 47 52 4f 55  ions in.the GROU
7c60: 50 20 42 59 20 63 6c 61 75 73 65 20 64 6f 20 3c  P BY clause do <
7c70: 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 68 61 76 65  em>not</em> have
7c80: 20 74 6f 20 62 65 20 65 78 70 72 65 73 73 69 6f   to be expressio
7c90: 6e 73 20 74 68 61 74 0a 61 70 70 65 61 72 20 69  ns that.appear i
7ca0: 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20 54  n the result.  T
7cb0: 68 65 20 48 41 56 49 4e 47 20 63 6c 61 75 73 65  he HAVING clause
7cc0: 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 57   is similar to W
7cd0: 48 45 52 45 20 65 78 63 65 70 74 0a 74 68 61 74  HERE except.that
7ce0: 20 48 41 56 49 4e 47 20 61 70 70 6c 69 65 73 20   HAVING applies 
7cf0: 61 66 74 65 72 20 67 72 6f 75 70 69 6e 67 20 68  after grouping h
7d00: 61 73 20 6f 63 63 75 72 72 65 64 2e 20 20 54 68  as occurred.  Th
7d10: 65 20 48 41 56 49 4e 47 20 65 78 70 72 65 73 73  e HAVING express
7d20: 69 6f 6e 0a 6d 61 79 20 72 65 66 65 72 20 74 6f  ion.may refer to
7d30: 20 76 61 6c 75 65 73 2c 20 65 76 65 6e 20 61 67   values, even ag
7d40: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
7d50: 73 2c 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20  s, that are not 
7d60: 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f  in the result.</
7d70: 70 3e 0a 0a 3c 70 3e 54 68 65 20 4f 52 44 45 52  p>..<p>The ORDER
7d80: 20 42 59 20 63 6c 61 75 73 65 20 63 61 75 73 65   BY clause cause
7d90: 73 20 74 68 65 20 6f 75 74 70 75 74 20 72 6f 77  s the output row
7da0: 73 20 74 6f 20 62 65 20 73 6f 72 74 65 64 2e 20  s to be sorted. 
7db0: 20 0a 54 68 65 20 61 72 67 75 6d 65 6e 74 20 74   .The argument t
7dc0: 6f 20 4f 52 44 45 52 20 42 59 20 69 73 20 61 20  o ORDER BY is a 
7dd0: 6c 69 73 74 20 6f 66 20 65 78 70 72 65 73 73 69  list of expressi
7de0: 6f 6e 73 20 74 68 61 74 20 61 72 65 20 75 73 65  ons that are use
7df0: 64 20 61 73 20 74 68 65 0a 6b 65 79 20 66 6f 72  d as the.key for
7e00: 20 74 68 65 20 73 6f 72 74 2e 20 20 54 68 65 20   the sort.  The 
7e10: 65 78 70 72 65 73 73 69 6f 6e 73 20 64 6f 20 6e  expressions do n
7e20: 6f 74 20 68 61 76 65 20 74 6f 20 62 65 20 70 61  ot have to be pa
7e30: 72 74 20 6f 66 20 74 68 65 0a 72 65 73 75 6c 74  rt of the.result
7e40: 20 66 6f 72 20 61 20 73 69 6d 70 6c 65 20 53 45   for a simple SE
7e50: 4c 45 43 54 2c 20 62 75 74 20 69 6e 20 61 20 63  LECT, but in a c
7e60: 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 65  ompound SELECT e
7e70: 61 63 68 20 73 6f 72 74 0a 65 78 70 72 65 73 73  ach sort.express
7e80: 69 6f 6e 20 6d 75 73 74 20 65 78 61 63 74 6c 79  ion must exactly
7e90: 20 6d 61 74 63 68 20 6f 6e 65 20 6f 66 20 74 68   match one of th
7ea0: 65 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73  e result columns
7eb0: 2e 20 20 45 61 63 68 0a 73 6f 72 74 20 65 78 70  .  Each.sort exp
7ec0: 72 65 73 73 69 6f 6e 20 6d 61 79 20 62 65 20 6f  ression may be o
7ed0: 70 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77  ptionally follow
7ee0: 65 64 20 62 79 20 41 53 43 20 6f 72 20 44 45 53  ed by ASC or DES
7ef0: 43 20 74 6f 20 73 70 65 63 69 66 79 0a 74 68 65  C to specify.the
7f00: 20 73 6f 72 74 20 6f 72 64 65 72 2e 3c 2f 70 3e   sort order.</p>
7f10: 0a 0a 3c 70 3e 54 68 65 20 4c 49 4d 49 54 20 63  ..<p>The LIMIT c
7f20: 6c 61 75 73 65 20 70 6c 61 63 65 73 20 61 6e 20  lause places an 
7f30: 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74  upper bound on t
7f40: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  he number of row
7f50: 73 0a 72 65 74 75 72 6e 65 64 20 69 6e 20 74 68  s.returned in th
7f60: 65 20 72 65 73 75 6c 74 2e 20 20 41 20 4c 49 4d  e result.  A LIM
7f70: 49 54 20 6f 66 20 30 20 69 6e 64 69 63 61 74 65  IT of 0 indicate
7f80: 73 20 6e 6f 20 75 70 70 65 72 20 62 6f 75 6e 64  s no upper bound
7f90: 2e 0a 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4f  ..The optional O
7fa0: 46 46 53 45 54 20 66 6f 6c 6c 6f 77 69 6e 67 20  FFSET following 
7fb0: 4c 49 4d 49 54 20 73 70 65 63 69 66 69 65 73 20  LIMIT specifies 
7fc0: 68 6f 77 20 6d 61 6e 79 0a 72 6f 77 73 20 74 6f  how many.rows to
7fd0: 20 73 6b 69 70 20 61 74 20 74 68 65 20 62 65 67   skip at the beg
7fe0: 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 72 65  inning of the re
7ff0: 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a 3c  sult set.</p>..<
8000: 70 3e 41 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c  p>A compound SEL
8010: 45 43 54 20 69 73 20 66 6f 72 6d 65 64 20 66 72  ECT is formed fr
8020: 6f 6d 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20 73  om two or more s
8030: 69 6d 70 6c 65 20 53 45 4c 45 43 54 73 20 63 6f  imple SELECTs co
8040: 6e 6e 65 63 74 65 64 0a 62 79 20 6f 6e 65 20 6f  nnected.by one o
8050: 66 20 74 68 65 20 6f 70 65 72 61 74 6f 72 73 20  f the operators 
8060: 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c  UNION, UNION ALL
8070: 2c 20 49 4e 54 45 52 53 45 43 54 2c 20 6f 72 20  , INTERSECT, or 
8080: 45 58 43 45 50 54 2e 20 20 49 6e 0a 61 20 63 6f  EXCEPT.  In.a co
8090: 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 2c 20 61  mpound SELECT, a
80a0: 6c 6c 20 74 68 65 20 63 6f 6e 73 74 69 74 75 65  ll the constitue
80b0: 6e 74 20 53 45 4c 45 43 54 73 20 6d 75 73 74 20  nt SELECTs must 
80c0: 73 70 65 63 69 66 79 20 74 68 65 0a 73 61 6d 65  specify the.same
80d0: 20 6e 75 6d 62 65 72 20 6f 66 20 72 65 73 75 6c   number of resul
80e0: 74 20 63 6f 6c 75 6d 6e 73 2e 20 20 54 68 65 72  t columns.  Ther
80f0: 65 20 6d 61 79 20 62 65 20 6f 6e 6c 79 20 61 20  e may be only a 
8100: 73 69 6e 67 6c 65 20 4f 52 44 45 52 20 42 59 0a  single ORDER BY.
8110: 63 6c 61 75 73 65 20 61 74 20 74 68 65 20 65 6e  clause at the en
8120: 64 20 6f 66 20 74 68 65 20 63 6f 6d 70 6f 75 6e  d of the compoun
8130: 64 20 53 45 4c 45 43 54 2e 20 20 54 68 65 20 55  d SELECT.  The U
8140: 4e 49 4f 4e 20 61 6e 64 20 55 4e 49 4f 4e 20 41  NION and UNION A
8150: 4c 4c 0a 6f 70 65 72 61 74 6f 72 73 20 63 6f 6d  LL.operators com
8160: 62 69 6e 65 20 74 68 65 20 72 65 73 75 6c 74 73  bine the results
8170: 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54 73 20   of the SELECTs 
8180: 74 6f 20 74 68 65 20 72 69 67 68 74 20 61 6e 64  to the right and
8190: 20 6c 65 66 74 20 69 6e 74 6f 0a 61 20 73 69 6e   left into.a sin
81a0: 67 6c 65 20 62 69 67 20 74 61 62 6c 65 2e 20 20  gle big table.  
81b0: 54 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 69  The difference i
81c0: 73 20 74 68 61 74 20 69 6e 20 55 4e 49 4f 4e 20  s that in UNION 
81d0: 61 6c 6c 20 72 65 73 75 6c 74 20 72 6f 77 73 0a  all result rows.
81e0: 61 72 65 20 64 69 73 74 69 6e 63 74 20 77 68 65  are distinct whe
81f0: 72 65 20 69 6e 20 55 4e 49 4f 4e 20 41 4c 4c 20  re in UNION ALL 
8200: 74 68 65 72 65 20 6d 61 79 20 62 65 20 64 75 70  there may be dup
8210: 6c 69 63 61 74 65 73 2e 0a 54 68 65 20 49 4e 54  licates..The INT
8220: 45 52 53 45 43 54 20 6f 70 65 72 61 74 6f 72 20  ERSECT operator 
8230: 74 61 6b 65 73 20 74 68 65 20 69 6e 74 65 72 73  takes the inters
8240: 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 72 65  ection of the re
8250: 73 75 6c 74 73 20 6f 66 20 74 68 65 0a 6c 65 66  sults of the.lef
8260: 74 20 61 6e 64 20 72 69 67 68 74 20 53 45 4c 45  t and right SELE
8270: 43 54 73 2e 20 20 45 58 43 45 50 54 20 74 61 6b  CTs.  EXCEPT tak
8280: 65 73 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66  es the result of
8290: 20 6c 65 66 74 20 53 45 4c 45 43 54 20 61 66 74   left SELECT aft
82a0: 65 72 0a 72 65 6d 6f 76 69 6e 67 20 74 68 65 20  er.removing the 
82b0: 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 20 72  results of the r
82c0: 69 67 68 74 20 53 45 4c 45 43 54 2e 20 20 57 68  ight SELECT.  Wh
82d0: 65 6e 20 74 68 72 65 65 20 61 72 65 20 6d 6f 72  en three are mor
82e0: 65 20 53 45 4c 45 43 54 73 0a 61 72 65 20 63 6f  e SELECTs.are co
82f0: 6e 6e 65 63 74 65 64 20 69 6e 74 6f 20 61 20 63  nnected into a c
8300: 6f 6d 70 6f 75 6e 64 2c 20 74 68 65 79 20 67 72  ompound, they gr
8310: 6f 75 70 20 66 72 6f 6d 20 6c 65 66 74 20 74 6f  oup from left to
8320: 20 72 69 67 68 74 2e 3c 2f 70 3e 0a 7d 0a 0a 53   right.</p>.}..S
8330: 65 63 74 69 6f 6e 20 55 50 44 41 54 45 20 75 70  ection UPDATE up
8340: 64 61 74 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71  date..Syntax {sq
8350: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 55  l-statement} {.U
8360: 50 44 41 54 45 20 5b 20 4f 52 20 3c 63 6f 6e 66  PDATE [ OR <conf
8370: 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 20  lict-algorithm> 
8380: 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 53  ] <table-name>.S
8390: 45 54 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 20  ET <assignment> 
83a0: 5b 2c 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 5d  [, <assignment>]
83b0: 20 0a 5b 57 48 45 52 45 20 3c 65 78 70 72 65 73   .[WHERE <expres
83c0: 73 69 6f 6e 3e 5d 0a 7d 20 7b 61 73 73 69 67 6e  sion>].} {assign
83d0: 6d 65 6e 74 7d 20 7b 0a 3c 63 6f 6c 75 6d 6e 2d  ment} {.<column-
83e0: 6e 61 6d 65 3e 20 3d 20 3c 65 78 70 72 65 73 73  name> = <express
83f0: 69 6f 6e 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  ion>.}..puts {.<
8400: 70 3e 54 68 65 20 55 50 44 41 54 45 20 73 74 61  p>The UPDATE sta
8410: 74 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74  tement is used t
8420: 6f 20 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c  o change the val
8430: 75 65 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  ue of columns in
8440: 20 0a 73 65 6c 65 63 74 65 64 20 72 6f 77 73 20   .selected rows 
8450: 6f 66 20 61 20 74 61 62 6c 65 2e 20 20 45 61 63  of a table.  Eac
8460: 68 20 61 73 73 69 67 6e 6d 65 6e 74 20 69 6e 20  h assignment in 
8470: 61 6e 20 55 50 44 41 54 45 20 73 70 65 63 69 66  an UPDATE specif
8480: 69 65 73 0a 61 20 63 6f 6c 75 6d 6e 20 6e 61 6d  ies.a column nam
8490: 65 20 74 6f 20 74 68 65 20 6c 65 66 74 20 6f 66  e to the left of
84a0: 20 74 68 65 20 65 71 75 61 6c 73 20 73 69 67 6e   the equals sign
84b0: 20 61 6e 64 20 61 6e 20 61 72 62 69 74 72 61 72   and an arbitrar
84c0: 79 20 65 78 70 72 65 73 73 69 6f 6e 0a 74 6f 20  y expression.to 
84d0: 74 68 65 20 72 69 67 68 74 2e 20 20 54 68 65 20  the right.  The 
84e0: 65 78 70 72 65 73 73 69 6f 6e 73 20 6d 61 79 20  expressions may 
84f0: 75 73 65 20 74 68 65 20 76 61 6c 75 65 73 20 6f  use the values o
8500: 66 20 6f 74 68 65 72 20 63 6f 6c 75 6d 6e 73 2e  f other columns.
8510: 0a 41 6c 6c 20 65 78 70 72 65 73 73 69 6f 6e 73  .All expressions
8520: 20 61 72 65 20 65 76 61 6c 75 61 74 65 64 20 62   are evaluated b
8530: 65 66 6f 72 65 20 61 6e 79 20 61 73 73 69 67 6e  efore any assign
8540: 6d 65 6e 74 73 20 61 72 65 20 6d 61 64 65 2e 0a  ments are made..
8550: 41 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63  A WHERE clause c
8560: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 72 65  an be used to re
8570: 73 74 72 69 63 74 20 77 68 69 63 68 20 72 6f 77  strict which row
8580: 73 20 61 72 65 20 75 70 64 61 74 65 64 2e 3c 2f  s are updated.</
8590: 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f  p>..<p>The optio
85a0: 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61  nal conflict-cla
85b0: 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73  use allows the s
85c0: 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20  pecification of 
85d0: 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63  an alternative.c
85e0: 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69  onstraint confli
85f0: 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
8600: 67 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20 64  gorithm to use d
8610: 75 72 69 6e 67 20 74 68 69 73 20 6f 6e 65 20 63  uring this one c
8620: 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20  ommand..See the 
8630: 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c  section titled.<
8640: 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63  a href="#conflic
8650: 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f  t">ON CONFLICT</
8660: 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  a> for additiona
8670: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f  l information.</
8680: 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 56 41  p>.}..Section VA
8690: 43 55 55 4d 20 76 61 63 75 75 6d 0a 0a 53 79 6e  CUUM vacuum..Syn
86a0: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
86b0: 6e 74 7d 20 7b 0a 56 41 43 55 55 4d 20 5b 3c 69  nt} {.VACUUM [<i
86c0: 6e 64 65 78 2d 6f 72 2d 74 61 62 6c 65 2d 6e 61  ndex-or-table-na
86d0: 6d 65 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  me>].}..puts {.<
86e0: 70 3e 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d  p>The VACUUM com
86f0: 6d 61 6e 64 20 69 73 20 61 6e 20 53 51 4c 69 74  mand is an SQLit
8700: 65 20 65 78 74 65 6e 73 69 6f 6e 20 6d 6f 64 65  e extension mode
8710: 6c 6c 65 64 20 61 66 74 65 72 20 61 20 73 69 6d  lled after a sim
8720: 69 6c 61 72 0a 63 6f 6d 6d 61 6e 64 20 66 6f 75  ilar.command fou
8730: 6e 64 20 69 6e 20 50 6f 73 74 67 72 65 53 51 4c  nd in PostgreSQL
8740: 2e 20 20 49 66 20 56 41 43 55 55 4d 20 69 73 20  .  If VACUUM is 
8750: 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 68 65  invoked with the
8760: 20 6e 61 6d 65 20 6f 66 20 61 0a 74 61 62 6c 65   name of a.table
8770: 20 6f 72 20 69 6e 64 65 78 20 74 68 65 6e 20 69   or index then i
8780: 74 20 69 73 20 73 75 70 70 6f 73 65 20 74 6f 20  t is suppose to 
8790: 63 6c 65 61 6e 20 75 70 20 74 68 65 20 6e 61 6d  clean up the nam
87a0: 65 64 20 74 61 62 6c 65 20 6f 72 20 69 6e 64 65  ed table or inde
87b0: 78 2e 0a 49 6e 20 76 65 72 73 69 6f 6e 20 31 2e  x..In version 1.
87c0: 30 20 6f 66 20 53 51 4c 69 74 65 2c 20 74 68 65  0 of SQLite, the
87d0: 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20   VACUUM command 
87e0: 77 6f 75 6c 64 20 69 6e 76 6f 6b 65 20 0a 3c 62  would invoke .<b
87f0: 3e 67 64 62 6d 5f 72 65 6f 72 67 61 6e 69 7a 65  >gdbm_reorganize
8800: 28 29 3c 2f 62 3e 20 74 6f 20 63 6c 65 61 6e 20  ()</b> to clean 
8810: 75 70 20 74 68 65 20 62 61 63 6b 65 6e 64 20 64  up the backend d
8820: 61 74 61 62 61 73 65 20 66 69 6c 65 2e 0a 42 65  atabase file..Be
8830: 67 69 6e 6e 69 6e 67 20 77 69 74 68 20 76 65 72  ginning with ver
8840: 73 69 6f 6e 20 32 2e 30 20 6f 66 20 53 51 4c 69  sion 2.0 of SQLi
8850: 74 65 2c 20 47 44 42 4d 20 69 73 20 6e 6f 20 6c  te, GDBM is no l
8860: 6f 6e 67 65 72 20 75 73 65 64 20 66 6f 72 0a 74  onger used for.t
8870: 68 65 20 64 61 74 61 62 61 73 65 20 62 61 63 6b  he database back
8880: 65 6e 64 20 61 6e 64 20 56 41 43 55 55 4d 20 68  end and VACUUM h
8890: 61 73 20 62 65 63 6f 6d 65 20 61 20 6e 6f 2d 6f  as become a no-o
88a0: 70 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 70 75 74 73  p..</p>.}...puts
88b0: 20 7b 0a 3c 70 3e 3c 68 72 20 2f 3e 3c 2f 70 3e   {.<p><hr /></p>
88c0: 0a 3c 70 3e 3c 61 20 68 72 65 66 3d 22 69 6e 64  .<p><a href="ind
88d0: 65 78 2e 68 74 6d 6c 22 3e 3c 69 6d 67 20 73 72  ex.html"><img sr
88e0: 63 3d 22 2f 67 6f 62 61 63 6b 2e 6a 70 67 22 20  c="/goback.jpg" 
88f0: 62 6f 72 64 65 72 3d 30 20 2f 3e 0a 42 61 63 6b  border=0 />.Back
8900: 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 48   to the SQLite H
8910: 6f 6d 65 20 50 61 67 65 3c 2f 61 3e 0a 3c 2f 70  ome Page</a>.</p
8920: 3e 0a 0a 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c  >..</body></html
8930: 3e 7d 0a                                         >}.