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

Artifact da8057ac23fca9ac1b9207d13382a20c9fee38bb:


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 33 39 20 32 30 30 32  .tcl,v 1.39 2002
0060: 2f 30 36 2f 31 31 20 32 32 3a 33 33 3a 34 37 20  /06/11 22:33:47 
0070: 64 61 6e 69 65 6c 6b 31 39 37 37 20 45 78 70 20  danielk1977 Exp 
0080: 24 7d 0a 0a 70 75 74 73 20 7b 3c 68 74 6d 6c 3e  $}..puts {<html>
0090: 0a 3c 68 65 61 64 3e 0a 20 20 3c 74 69 74 6c 65  .<head>.  <title
00a0: 3e 51 75 65 72 79 20 4c 61 6e 67 75 61 67 65 20  >Query Language 
00b0: 55 6e 64 65 72 73 74 6f 6f 64 20 42 79 20 53 51  Understood By SQ
00c0: 4c 69 74 65 3c 2f 74 69 74 6c 65 3e 0a 3c 2f 68  Lite</title>.</h
00d0: 65 61 64 3e 0a 3c 62 6f 64 79 20 62 67 63 6f 6c  ead>.<body bgcol
00e0: 6f 72 3d 77 68 69 74 65 3e 0a 3c 68 31 20 61 6c  or=white>.<h1 al
00f0: 69 67 6e 3d 63 65 6e 74 65 72 3e 0a 53 51 4c 20  ign=center>.SQL 
0100: 41 73 20 55 6e 64 65 72 73 74 6f 6f 64 20 42 79  As Understood By
0110: 20 53 51 4c 69 74 65 0a 3c 2f 68 31 3e 7d 0a 70   SQLite.</h1>}.p
0120: 75 74 73 20 22 3c 70 20 61 6c 69 67 6e 3d 63 65  uts "<p align=ce
0130: 6e 74 65 72 3e 0a 28 54 68 69 73 20 70 61 67 65  nter>.(This page
0140: 20 77 61 73 20 6c 61 73 74 20 6d 6f 64 69 66 69   was last modifi
0150: 65 64 20 6f 6e 20 5b 6c 72 61 6e 67 65 20 24 72  ed on [lrange $r
0160: 63 73 69 64 20 33 20 34 5d 20 55 54 43 29 0a 3c  csid 3 4] UTC).<
0170: 2f 70 3e 22 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  /p>"..puts {.<p>
0180: 54 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  The SQLite libra
0190: 72 79 20 75 6e 64 65 72 73 74 61 6e 64 73 20 6d  ry understands m
01a0: 6f 73 74 20 6f 66 20 74 68 65 20 73 74 61 6e 64  ost of the stand
01b0: 61 72 64 20 53 51 4c 0a 6c 61 6e 67 75 61 67 65  ard SQL.language
01c0: 2e 20 20 42 75 74 20 69 74 20 64 6f 65 73 20 6f  .  But it does o
01d0: 6d 69 74 20 73 6f 6d 65 20 66 65 61 74 75 72 65  mit some feature
01e0: 73 20 77 68 69 6c 65 20 61 74 20 74 68 65 20 73  s while at the s
01f0: 61 6d 65 20 74 69 6d 65 0a 61 64 64 69 6e 67 20  ame time.adding 
0200: 61 20 66 65 77 20 66 65 61 74 75 72 65 73 20 6f  a few features o
0210: 66 20 69 74 73 20 6f 77 6e 2e 20 20 54 68 69 73  f its own.  This
0220: 20 64 6f 63 75 6d 65 6e 74 20 61 74 74 65 6d 70   document attemp
0230: 74 73 20 74 6f 0a 64 65 73 63 72 69 62 65 20 70  ts to.describe p
0240: 65 72 63 69 73 65 6c 79 20 77 68 61 74 20 70 61  ercisely what pa
0250: 72 74 73 20 6f 66 20 74 68 65 20 53 51 4c 20 6c  rts of the SQL l
0260: 61 6e 67 75 61 67 65 20 53 51 4c 69 74 65 20 64  anguage SQLite d
0270: 6f 65 73 0a 61 6e 64 20 64 6f 65 73 20 6e 6f 74  oes.and does not
0280: 20 73 75 70 70 6f 72 74 2e 3c 2f 70 3e 0a 0a 3c   support.</p>..<
0290: 70 3e 49 6e 20 61 6c 6c 20 6f 66 20 74 68 65 20  p>In all of the 
02a0: 73 79 6e 74 61 78 20 64 69 61 67 72 61 6d 73 20  syntax diagrams 
02b0: 74 68 61 74 20 66 6f 6c 6c 6f 77 2c 20 6c 69 74  that follow, lit
02c0: 65 72 61 6c 20 74 65 78 74 20 69 73 20 73 68 6f  eral text is sho
02d0: 77 6e 20 69 6e 0a 62 6f 6c 64 20 62 6c 75 65 2e  wn in.bold blue.
02e0: 20 20 4e 6f 6e 2d 74 65 72 6d 69 6e 61 6c 20 73    Non-terminal s
02f0: 79 6d 62 6f 6c 73 20 61 72 65 20 73 68 6f 77 6e  ymbols are shown
0300: 20 69 6e 20 69 74 61 6c 69 63 20 72 65 64 2e 20   in italic red. 
0310: 20 4f 70 65 72 61 74 6f 72 73 0a 74 68 61 74 20   Operators.that 
0320: 61 72 65 20 70 61 72 74 20 6f 66 20 74 68 65 20  are part of the 
0330: 73 79 6e 74 61 63 74 69 63 20 6d 61 72 6b 75 70  syntactic markup
0340: 20 69 74 73 65 6c 66 20 61 72 65 20 73 68 6f 77   itself are show
0350: 6e 20 69 6e 20 62 6c 61 63 6b 20 72 6f 6d 61 6e  n in black roman
0360: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69 73 20 64  .</p>..<p>This d
0370: 6f 63 75 6d 65 6e 74 20 69 73 20 6a 75 73 74 20  ocument is just 
0380: 61 6e 20 6f 76 65 72 76 69 65 77 20 6f 66 20 74  an overview of t
0390: 68 65 20 53 51 4c 20 73 79 6e 74 61 78 20 69 6d  he SQL syntax im
03a0: 70 6c 65 6d 65 6e 74 65 64 0a 62 79 20 53 51 4c  plemented.by SQL
03b0: 69 74 65 2e 20 20 4d 61 6e 79 20 6c 6f 77 2d 6c  ite.  Many low-l
03c0: 65 76 65 6c 20 70 72 6f 64 75 63 74 69 6f 6e 73  evel productions
03d0: 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 20 20 46   are omitted.  F
03e0: 6f 72 20 64 65 74 61 69 6c 65 64 20 69 6e 66 6f  or detailed info
03f0: 72 6d 61 74 69 6f 6e 0a 6f 6e 20 74 68 65 20 6c  rmation.on the l
0400: 61 6e 67 75 61 67 65 20 74 68 61 74 20 53 51 4c  anguage that SQL
0410: 69 74 65 20 75 6e 64 65 72 73 74 61 6e 64 73 2c  ite understands,
0420: 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 73 6f   refer to the so
0430: 75 72 63 65 20 63 6f 64 65 2e 3c 2f 70 3e 0a 0a  urce code.</p>..
0440: 0a 3c 70 3e 53 51 4c 69 74 65 20 69 6d 70 6c 65  .<p>SQLite imple
0450: 6d 65 6e 74 73 20 74 68 65 20 66 6f 6c 6c 6f 77  ments the follow
0460: 20 73 79 6e 74 61 78 3a 3c 2f 70 3e 0a 3c 70 3e   syntax:</p>.<p>
0470: 3c 75 6c 3e 0a 7d 0a 0a 66 6f 72 65 61 63 68 20  <ul>.}..foreach 
0480: 7b 73 65 63 74 69 6f 6e 7d 20 5b 6c 73 6f 72 74  {section} [lsort
0490: 20 2d 69 6e 64 65 78 20 30 20 2d 64 69 63 74 69   -index 0 -dicti
04a0: 6f 6e 61 72 79 20 7b 0a 20 20 7b 7b 43 52 45 41  onary {.  {{CREA
04b0: 54 45 20 54 41 42 4c 45 7d 20 63 72 65 61 74 65  TE TABLE} create
04c0: 74 61 62 6c 65 7d 0a 20 20 7b 7b 43 52 45 41 54  table}.  {{CREAT
04d0: 45 20 49 4e 44 45 58 7d 20 63 72 65 61 74 65 69  E INDEX} createi
04e0: 6e 64 65 78 7d 0a 20 20 7b 56 41 43 55 55 4d 20  ndex}.  {VACUUM 
04f0: 76 61 63 75 75 6d 7d 0a 20 20 7b 7b 44 52 4f 50  vacuum}.  {{DROP
0500: 20 54 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c   TABLE} droptabl
0510: 65 7d 0a 20 20 7b 7b 44 52 4f 50 20 49 4e 44 45  e}.  {{DROP INDE
0520: 58 7d 20 64 72 6f 70 69 6e 64 65 78 7d 0a 20 20  X} dropindex}.  
0530: 7b 49 4e 53 45 52 54 20 69 6e 73 65 72 74 7d 0a  {INSERT insert}.
0540: 20 20 7b 52 45 50 4c 41 43 45 20 72 65 70 6c 61    {REPLACE repla
0550: 63 65 7d 0a 20 20 7b 44 45 4c 45 54 45 20 64 65  ce}.  {DELETE de
0560: 6c 65 74 65 7d 0a 20 20 7b 55 50 44 41 54 45 20  lete}.  {UPDATE 
0570: 75 70 64 61 74 65 7d 0a 20 20 7b 53 45 4c 45 43  update}.  {SELEC
0580: 54 20 73 65 6c 65 63 74 7d 0a 20 20 7b 43 4f 50  T select}.  {COP
0590: 59 20 63 6f 70 79 7d 0a 20 20 7b 45 58 50 4c 41  Y copy}.  {EXPLA
05a0: 49 4e 20 65 78 70 6c 61 69 6e 7d 0a 20 20 7b 65  IN explain}.  {e
05b0: 78 70 72 65 73 73 69 6f 6e 20 65 78 70 72 7d 0a  xpression expr}.
05c0: 20 20 7b 7b 42 45 47 49 4e 20 54 52 41 4e 53 41    {{BEGIN TRANSA
05d0: 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69  CTION} transacti
05e0: 6f 6e 7d 0a 20 20 7b 50 52 41 47 4d 41 20 70 72  on}.  {PRAGMA pr
05f0: 61 67 6d 61 7d 0a 20 20 7b 7b 4f 4e 20 43 4f 4e  agma}.  {{ON CON
0600: 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63 6f  FLICT clause} co
0610: 6e 66 6c 69 63 74 7d 0a 20 20 7b 7b 43 52 45 41  nflict}.  {{CREA
0620: 54 45 20 56 49 45 57 7d 20 63 72 65 61 74 65 76  TE VIEW} createv
0630: 69 65 77 7d 0a 20 20 7b 7b 44 52 4f 50 20 56 49  iew}.  {{DROP VI
0640: 45 57 7d 20 64 72 6f 70 76 69 65 77 7d 0a 20 20  EW} dropview}.  
0650: 7b 7b 43 52 45 41 54 45 20 54 52 49 47 47 45 52  {{CREATE TRIGGER
0660: 7d 20 63 72 65 61 74 65 74 72 69 67 67 65 72 7d  } createtrigger}
0670: 0a 20 20 7b 7b 44 52 4f 50 20 54 52 49 47 47 45  .  {{DROP TRIGGE
0680: 52 7d 20 64 72 6f 70 74 72 69 67 67 65 72 7d 0a  R} droptrigger}.
0690: 7d 5d 20 7b 0a 20 20 70 75 74 73 20 22 3c 6c 69  }] {.  puts "<li
06a0: 3e 3c 61 20 68 72 65 66 3d 5c 22 23 5b 6c 69 6e  ><a href=\"#[lin
06b0: 64 65 78 20 24 73 65 63 74 69 6f 6e 20 31 5d 5c  dex $section 1]\
06c0: 22 3e 5b 6c 69 6e 64 65 78 20 24 73 65 63 74 69  ">[lindex $secti
06d0: 6f 6e 20 30 5d 3c 2f 61 3e 3c 2f 6c 69 3e 22 0a  on 0]</a></li>".
06e0: 7d 0a 70 75 74 73 20 7b 3c 2f 75 6c 3e 3c 2f 70  }.puts {</ul></p
06f0: 3e 0a 0a 3c 70 3e 44 65 74 61 69 6c 73 20 6f 6e  >..<p>Details on
0700: 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74   the implementat
0710: 69 6f 6e 20 6f 66 20 65 61 63 68 20 63 6f 6d 6d  ion of each comm
0720: 61 6e 64 20 61 72 65 20 70 72 6f 76 69 64 65 64  and are provided
0730: 20 69 6e 0a 74 68 65 20 73 65 71 75 65 6c 2e 3c   in.the sequel.<
0740: 2f 70 3e 0a 7d 0a 0a 70 72 6f 63 20 53 79 6e 74  /p>.}..proc Synt
0750: 61 78 20 7b 61 72 67 73 7d 20 7b 0a 20 20 70 75  ax {args} {.  pu
0760: 74 73 20 7b 3c 74 61 62 6c 65 20 63 65 6c 6c 70  ts {<table cellp
0770: 61 64 64 69 6e 67 3d 22 31 30 22 3e 7d 0a 20 20  adding="10">}.  
0780: 66 6f 72 65 61 63 68 20 7b 72 75 6c 65 20 62 6f  foreach {rule bo
0790: 64 79 7d 20 24 61 72 67 73 20 7b 0a 20 20 20 20  dy} $args {.    
07a0: 70 75 74 73 20 22 3c 74 72 3e 3c 74 64 20 61 6c  puts "<tr><td al
07b0: 69 67 6e 3d 5c 22 72 69 67 68 74 5c 22 20 76 61  ign=\"right\" va
07c0: 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 3e 22 0a 20  lign=\"top\">". 
07d0: 20 20 20 70 75 74 73 20 22 3c 69 3e 3c 66 6f 6e     puts "<i><fon
07e0: 74 20 63 6f 6c 6f 72 3d 5c 22 23 66 66 33 34 33  t color=\"#ff343
07f0: 34 5c 22 3e 24 72 75 6c 65 3c 2f 66 6f 6e 74 3e  4\">$rule</font>
0800: 3c 2f 69 3e 26 6e 62 73 70 3b 3a 3a 3d 3c 2f 74  </i>&nbsp;::=</t
0810: 64 3e 22 0a 20 20 20 20 72 65 67 73 75 62 20 2d  d>".    regsub -
0820: 61 6c 6c 20 3c 20 24 62 6f 64 79 20 7b 25 4c 54  all < $body {%LT
0830: 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75  } body.    regsu
0840: 62 20 2d 61 6c 6c 20 3e 20 24 62 6f 64 79 20 7b  b -all > $body {
0850: 25 47 54 7d 20 62 6f 64 79 0a 20 20 20 20 72 65  %GT} body.    re
0860: 67 73 75 62 20 2d 61 6c 6c 20 25 4c 54 20 24 62  gsub -all %LT $b
0870: 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e  ody {</font></b>
0880: 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22  <i><font color="
0890: 23 66 66 33 34 33 34 22 3e 7d 20 62 6f 64 79 0a  #ff3434">} body.
08a0: 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20      regsub -all 
08b0: 25 47 54 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e  %GT $body {</fon
08c0: 74 3e 3c 2f 69 3e 3c 62 3e 3c 66 6f 6e 74 20 63  t></i><b><font c
08d0: 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 7d  olor="#2c2cf0">}
08e0: 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62   body.    regsub
08f0: 20 2d 61 6c 6c 20 7b 5b 5d 7c 5b 2a 3f 5d 7d 20   -all {[]|[*?]} 
0900: 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f  $body {</font></
0910: 62 3e 26 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f  b>&<b><font colo
0920: 72 3d 22 23 32 63 32 63 66 30 22 3e 7d 20 62 6f  r="#2c2cf0">} bo
0930: 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61  dy.    regsub -a
0940: 6c 6c 20 22 5c 6e 22 20 5b 73 74 72 69 6e 67 20  ll "\n" [string 
0950: 74 72 69 6d 20 24 62 6f 64 79 5d 20 22 3c 62 72  trim $body] "<br
0960: 3e 5c 6e 22 20 62 6f 64 79 0a 20 20 20 20 72 65  >\n" body.    re
0970: 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e 20 20 2a  gsub -all "\n  *
0980: 22 20 24 62 6f 64 79 20 22 5c 6e 5c 5c 26 6e 62  " $body "\n\\&nb
0990: 73 70 3b 5c 5c 26 6e 62 73 70 3b 5c 5c 26 6e 62  sp;\\&nbsp;\\&nb
09a0: 73 70 3b 5c 5c 26 6e 62 73 70 3b 22 20 62 6f 64  sp;\\&nbsp;" bod
09b0: 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c  y.    regsub -al
09c0: 6c 20 7b 5b 7c 2c 2e 2a 28 29 5d 7d 20 24 62 6f  l {[|,.*()]} $bo
09d0: 64 79 20 7b 3c 62 69 67 3e 26 3c 2f 62 69 67 3e  dy {<big>&</big>
09e0: 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75  } body.    regsu
09f0: 62 20 2d 61 6c 6c 20 7b 20 3d 20 7d 20 24 62 6f  b -all { = } $bo
0a00: 64 79 20 7b 20 3c 62 69 67 3e 3d 3c 2f 62 69 67  dy { <big>=</big
0a10: 3e 20 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67  > } body.    reg
0a20: 73 75 62 20 2d 61 6c 6c 20 7b 53 54 41 52 7d 20  sub -all {STAR} 
0a30: 24 62 6f 64 79 20 7b 3c 62 69 67 3e 2a 3c 2f 62  $body {<big>*</b
0a40: 69 67 3e 7d 20 62 6f 64 79 0a 20 20 20 20 70 75  ig>} body.    pu
0a50: 74 73 20 22 3c 74 64 3e 3c 62 3e 3c 66 6f 6e 74  ts "<td><b><font
0a60: 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30   color=\"#2c2cf0
0a70: 5c 22 3e 24 62 6f 64 79 3c 2f 66 6f 6e 74 3e 3c  \">$body</font><
0a80: 2f 62 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 22 0a 20  /b></td></tr>". 
0a90: 20 7d 0a 20 20 70 75 74 73 20 7b 3c 2f 74 61 62   }.  puts {</tab
0aa0: 6c 65 3e 7d 0a 7d 0a 70 72 6f 63 20 4f 70 65 72  le>}.}.proc Oper
0ab0: 61 74 6f 72 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20  ator {name} {.  
0ac0: 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f  return "<font co
0ad0: 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e  lor=\"#2c2cf0\">
0ae0: 3c 62 69 67 3e 24 6e 61 6d 65 3c 2f 62 69 67 3e  <big>$name</big>
0af0: 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f 63 20  </font>".}.proc 
0b00: 4e 6f 6e 74 65 72 6d 69 6e 61 6c 20 7b 6e 61 6d  Nonterminal {nam
0b10: 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c  e} {.  return "<
0b20: 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22  i><font color=\"
0b30: 23 66 66 33 34 33 34 5c 22 3e 24 6e 61 6d 65 3c  #ff3434\">$name<
0b40: 2f 66 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d 0a 70 72  /font></i>".}.pr
0b50: 6f 63 20 4b 65 79 77 6f 72 64 20 7b 6e 61 6d 65  oc Keyword {name
0b60: 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c 66  } {.  return "<f
0b70: 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32  ont color=\"#2c2
0b80: 63 66 30 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e  cf0\">$name</fon
0b90: 74 3e 22 0a 7d 0a 20 0a 0a 70 72 6f 63 20 53 65  t>".}. ..proc Se
0ba0: 63 74 69 6f 6e 20 7b 6e 61 6d 65 20 7b 6c 61 62  ction {name {lab
0bb0: 65 6c 20 7b 7d 7d 7d 20 7b 0a 20 20 70 75 74 73  el {}}} {.  puts
0bc0: 20 22 5c 6e 3c 68 72 20 2f 3e 22 0a 20 20 69 66   "\n<hr />".  if
0bd0: 20 7b 24 6c 61 62 65 6c 21 3d 22 22 7d 20 7b 0a   {$label!=""} {.
0be0: 20 20 20 20 70 75 74 73 20 22 3c 61 20 6e 61 6d      puts "<a nam
0bf0: 65 3d 5c 22 24 6c 61 62 65 6c 5c 22 3e 22 0a 20  e=\"$label\">". 
0c00: 20 7d 0a 20 20 70 75 74 73 20 22 3c 68 31 3e 24   }.  puts "<h1>$
0c10: 6e 61 6d 65 3c 2f 68 31 3e 5c 6e 22 0a 7d 0a 0a  name</h1>\n".}..
0c20: 70 72 6f 63 20 45 78 61 6d 70 6c 65 20 7b 74 65  proc Example {te
0c30: 78 74 7d 20 7b 0a 20 20 70 75 74 73 20 22 3c 62  xt} {.  puts "<b
0c40: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 24  lockquote><pre>$
0c50: 74 65 78 74 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63  text</pre></bloc
0c60: 6b 71 75 6f 74 65 3e 22 0a 7d 0a 0a 53 65 63 74  kquote>".}..Sect
0c70: 69 6f 6e 20 7b 42 45 47 49 4e 20 54 52 41 4e 53  ion {BEGIN TRANS
0c80: 41 43 54 49 4f 4e 7d 20 63 72 65 61 74 65 69 6e  ACTION} createin
0c90: 64 65 78 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  dex..Syntax {sql
0ca0: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 42 45  -statement} {.BE
0cb0: 47 49 4e 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e  GIN [TRANSACTION
0cc0: 20 5b 3c 6e 61 6d 65 3e 5d 5d 20 5b 4f 4e 20 43   [<name>]] [ON C
0cd0: 4f 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c 69 63  ONFLICT <conflic
0ce0: 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 5d 0a 7d 0a  t-algorithm>].}.
0cf0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
0d00: 65 6d 65 6e 74 7d 20 7b 0a 45 4e 44 20 5b 54 52  ement} {.END [TR
0d10: 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65  ANSACTION [<name
0d20: 3e 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71  >]].}.Syntax {sq
0d30: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43  l-statement} {.C
0d40: 4f 4d 4d 49 54 20 5b 54 52 41 4e 53 41 43 54 49  OMMIT [TRANSACTI
0d50: 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53  ON [<name>]].}.S
0d60: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
0d70: 6d 65 6e 74 7d 20 7b 0a 52 4f 4c 4c 42 41 43 4b  ment} {.ROLLBACK
0d80: 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b 3c   [TRANSACTION [<
0d90: 6e 61 6d 65 3e 5d 5d 0a 7d 0a 0a 70 75 74 73 20  name>]].}..puts 
0da0: 7b 0a 3c 70 3e 42 65 67 69 6e 6e 69 6e 67 20 69  {.<p>Beginning i
0db0: 6e 20 76 65 72 73 69 6f 6e 20 32 2e 30 2c 20 53  n version 2.0, S
0dc0: 51 4c 69 74 65 20 73 75 70 70 6f 72 74 73 20 74  QLite supports t
0dd0: 72 61 6e 73 61 63 74 69 6f 6e 73 20 77 69 74 68  ransactions with
0de0: 0a 72 6f 6c 6c 62 61 63 6b 20 61 6e 64 20 61 74  .rollback and at
0df0: 6f 6d 69 63 20 63 6f 6d 6d 69 74 2e 3c 2f 70 3e  omic commit.</p>
0e00: 0a 0a 3c 70 3e 0a 4e 6f 20 63 68 61 6e 67 65 73  ..<p>.No changes
0e10: 20 63 61 6e 20 62 65 20 6d 61 64 65 20 74 6f 20   can be made to 
0e20: 74 68 65 20 64 61 74 61 62 61 73 65 20 65 78 63  the database exc
0e30: 65 70 74 20 77 69 74 68 69 6e 20 61 20 74 72 61  ept within a tra
0e40: 6e 73 61 63 74 69 6f 6e 2e 0a 41 6e 79 20 63 6f  nsaction..Any co
0e50: 6d 6d 61 6e 64 20 74 68 61 74 20 63 68 61 6e 67  mmand that chang
0e60: 65 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20  es the database 
0e70: 28 62 61 73 69 63 61 6c 6c 79 2c 20 61 6e 79 20  (basically, any 
0e80: 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a 6f 74 68 65  SQL command.othe
0e90: 72 20 74 68 61 6e 20 53 45 4c 45 43 54 29 20 77  r than SELECT) w
0ea0: 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ill automaticall
0eb0: 79 20 73 74 61 72 74 73 20 61 20 74 72 61 6e 73  y starts a trans
0ec0: 61 63 74 69 6f 6e 20 69 66 0a 6f 6e 65 20 69 73  action if.one is
0ed0: 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 69 6e 20   not already in 
0ee0: 65 66 66 65 63 74 2e 20 20 41 75 74 6f 6d 61 74  effect.  Automat
0ef0: 69 63 61 6c 6c 79 20 73 74 61 72 65 64 20 74 72  ically stared tr
0f00: 61 6e 73 61 63 74 69 6f 6e 73 0a 61 72 65 20 63  ansactions.are c
0f10: 6f 6d 6d 69 74 74 65 64 20 61 74 20 74 68 65 20  ommitted at the 
0f20: 63 6f 6e 63 6c 75 73 69 6f 6e 20 6f 66 20 74 68  conclusion of th
0f30: 65 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e 0a  e command..</p>.
0f40: 0a 3c 70 3e 0a 54 72 61 6e 73 61 63 74 69 6f 6e  .<p>.Transaction
0f50: 73 20 63 61 6e 20 62 65 20 73 74 61 72 74 65 64  s can be started
0f60: 20 6d 61 6e 75 61 6c 6c 79 20 75 73 69 6e 67 20   manually using 
0f70: 74 68 65 20 42 45 47 49 4e 0a 63 6f 6d 6d 61 6e  the BEGIN.comman
0f80: 64 2e 20 53 75 63 68 20 74 72 61 6e 73 61 63 74  d. Such transact
0f90: 69 6f 6e 73 20 75 73 75 61 6c 6c 79 20 70 65 72  ions usually per
0fa0: 73 69 73 74 20 75 6e 74 69 6c 20 74 68 65 20 6e  sist until the n
0fb0: 65 78 74 0a 43 4f 4d 4d 49 54 20 6f 72 20 52 4f  ext.COMMIT or RO
0fc0: 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 2e 20  LLBACK command. 
0fd0: 42 75 74 20 61 20 74 72 61 6e 73 61 63 74 69 6f  But a transactio
0fe0: 6e 20 77 69 6c 6c 20 61 6c 73 6f 20 0a 52 4f 4c  n will also .ROL
0ff0: 4c 42 41 43 4b 20 69 66 20 74 68 65 20 64 61 74  LBACK if the dat
1000: 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64 20  abase is closed 
1010: 6f 72 20 69 66 20 61 6e 20 65 72 72 6f 72 20 6f  or if an error o
1020: 63 63 75 72 73 0a 61 6e 64 20 74 68 65 20 52 4f  ccurs.and the RO
1030: 4c 4c 42 41 43 4b 20 63 6f 6e 66 6c 69 63 74 20  LLBACK conflict 
1040: 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
1050: 69 74 68 6d 20 69 73 20 73 70 65 63 69 66 69 65  ithm is specifie
1060: 64 2e 0a 53 65 65 20 74 68 65 20 64 6f 63 75 6d  d..See the docum
1070: 65 6e 74 69 6f 6e 20 6f 6e 20 74 68 65 20 3c 61  ention on the <a
1080: 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74   href="#conflict
1090: 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61  ">ON CONFLICT</a
10a0: 3e 0a 63 6c 61 75 73 65 20 66 6f 72 20 61 64 64  >.clause for add
10b0: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
10c0: 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 52 4f  ion about the RO
10d0: 4c 4c 42 41 43 4b 0a 63 6f 6e 66 6c 69 63 74 20  LLBACK.conflict 
10e0: 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
10f0: 69 74 68 6d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  ithm..</p>..<p>.
1100: 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4f 4e 20  The optional ON 
1110: 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20  CONFLICT clause 
1120: 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 61 20  at the end of a 
1130: 42 45 47 49 4e 20 73 74 61 74 65 6d 65 6e 74 0a  BEGIN statement.
1140: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 63  can be used to c
1150: 68 61 6e 67 65 64 20 74 68 65 20 64 65 66 61 75  hanged the defau
1160: 6c 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  lt conflict reso
1170: 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
1180: 2e 0a 54 68 65 20 6e 6f 72 6d 61 6c 20 64 65 66  ..The normal def
1190: 61 75 6c 74 20 69 73 20 41 42 4f 52 54 2e 20 20  ault is ABORT.  
11a0: 49 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  If an alternativ
11b0: 65 20 69 73 20 73 70 65 63 69 66 69 65 64 20 62  e is specified b
11c0: 79 0a 74 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43  y.the ON CONFLIC
11d0: 54 20 63 6c 61 75 73 65 20 6f 66 20 61 20 42 45  T clause of a BE
11e0: 47 49 4e 2c 20 74 68 65 6e 20 74 68 61 74 20 61  GIN, then that a
11f0: 6c 74 65 72 6e 61 74 69 76 65 20 69 73 20 75 73  lternative is us
1200: 65 64 0a 61 73 20 74 68 65 20 64 65 66 61 75 6c  ed.as the defaul
1210: 74 20 66 6f 72 20 61 6c 6c 20 63 6f 6d 6d 61 6e  t for all comman
1220: 64 73 20 77 69 74 68 69 6e 20 74 68 65 20 74 72  ds within the tr
1230: 61 6e 73 61 63 74 69 6f 6e 2e 20 20 54 68 65 20  ansaction.  The 
1240: 64 65 66 61 75 6c 74 0a 61 6c 67 6f 72 69 74 68  default.algorith
1250: 6d 20 69 73 20 6f 76 65 72 72 69 64 64 65 6e 20  m is overridden 
1260: 62 79 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63  by ON CONFLICT c
1270: 6c 61 75 73 65 73 20 6f 6e 20 69 6e 64 69 76 69  lauses on indivi
1280: 64 75 61 6c 0a 63 6f 6e 73 74 72 61 69 6e 74 73  dual.constraints
1290: 20 77 69 74 68 69 6e 20 74 68 65 20 43 52 45 41   within the CREA
12a0: 54 45 20 54 41 42 4c 45 20 6f 72 20 43 52 45 41  TE TABLE or CREA
12b0: 54 45 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65  TE INDEX stateme
12c0: 6e 74 73 0a 61 6e 64 20 62 79 20 74 68 65 20 4f  nts.and by the O
12d0: 52 20 63 6c 61 75 73 65 73 20 6f 6e 20 43 4f 50  R clauses on COP
12e0: 59 2c 20 49 4e 53 45 52 54 2c 20 61 6e 64 20 55  Y, INSERT, and U
12f0: 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64 73 2e 0a  PDATE commands..
1300: 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20  </p>.}..Section 
1310: 43 4f 50 59 20 63 6f 70 79 0a 0a 53 79 6e 74 61  COPY copy..Synta
1320: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
1330: 7d 20 7b 0a 43 4f 50 59 20 5b 20 4f 52 20 3c 63  } {.COPY [ OR <c
1340: 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68  onflict-algorith
1350: 6d 3e 20 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65  m> ] <table-name
1360: 3e 20 46 52 4f 4d 20 3c 66 69 6c 65 6e 61 6d 65  > FROM <filename
1370: 3e 0a 5b 20 55 53 49 4e 47 20 44 45 4c 49 4d 49  >.[ USING DELIMI
1380: 54 45 52 53 20 3c 64 65 6c 69 6d 3e 20 5d 0a 7d  TERS <delim> ].}
1390: 0a 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  ...puts {.<p>The
13a0: 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 69 73   COPY command is
13b0: 20 61 6e 20 65 78 74 65 6e 73 69 6f 6e 20 75 73   an extension us
13c0: 65 64 20 74 6f 20 6c 6f 61 64 20 6c 61 72 67 65  ed to load large
13d0: 20 61 6d 6f 75 6e 74 73 20 6f 66 0a 64 61 74 61   amounts of.data
13e0: 20 69 6e 74 6f 20 61 20 74 61 62 6c 65 2e 20 20   into a table.  
13f0: 49 74 20 69 73 20 6d 6f 64 65 6c 65 64 20 61 66  It is modeled af
1400: 74 65 72 20 61 20 73 69 6d 69 6c 61 72 20 63 6f  ter a similar co
1410: 6d 6d 61 6e 64 20 66 6f 75 6e 64 0a 69 6e 20 50  mmand found.in P
1420: 6f 73 74 67 72 65 53 51 4c 2e 20 20 49 6e 20 66  ostgreSQL.  In f
1430: 61 63 74 2c 20 74 68 65 20 53 51 4c 69 74 65 20  act, the SQLite 
1440: 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 69 73 20  COPY command is 
1450: 73 70 65 63 69 66 69 63 61 6c 6c 79 0a 64 65 73  specifically.des
1460: 69 67 6e 65 64 20 74 6f 20 62 65 20 61 62 6c 65  igned to be able
1470: 20 74 6f 20 72 65 61 64 20 74 68 65 20 6f 75 74   to read the out
1480: 70 75 74 20 6f 66 20 74 68 65 20 50 6f 73 74 67  put of the Postg
1490: 72 65 53 51 4c 20 64 75 6d 70 0a 75 74 69 6c 69  reSQL dump.utili
14a0: 74 79 20 3c 62 3e 70 67 5f 64 75 6d 70 3c 2f 62  ty <b>pg_dump</b
14b0: 3e 20 73 6f 20 74 68 61 74 20 64 61 74 61 20 63  > so that data c
14c0: 61 6e 20 62 65 20 65 61 73 69 6c 79 20 74 72 61  an be easily tra
14d0: 6e 73 66 65 72 72 65 64 20 66 72 6f 6d 0a 50 6f  nsferred from.Po
14e0: 73 74 67 72 65 53 51 4c 20 69 6e 74 6f 20 53 51  stgreSQL into SQ
14f0: 4c 69 74 65 2e 3c 70 3e 0a 0a 3c 70 3e 54 68 65  Lite.<p>..<p>The
1500: 20 74 61 62 6c 65 2d 6e 61 6d 65 20 69 73 20 74   table-name is t
1510: 68 65 20 6e 61 6d 65 20 6f 66 20 61 6e 20 65 78  he name of an ex
1520: 69 73 74 69 6e 67 20 74 61 62 6c 65 20 77 68 69  isting table whi
1530: 63 68 20 69 73 20 74 6f 0a 62 65 20 66 69 6c 6c  ch is to.be fill
1540: 65 64 20 77 69 74 68 20 64 61 74 61 2e 20 20 54  ed with data.  T
1550: 68 65 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 61  he filename is a
1560: 20 73 74 72 69 6e 67 20 6f 72 20 69 64 65 6e 74   string or ident
1570: 69 66 69 65 72 20 74 68 61 74 0a 6e 61 6d 65 73  ifier that.names
1580: 20 61 20 66 69 6c 65 20 66 72 6f 6d 20 77 68 69   a file from whi
1590: 63 68 20 64 61 74 61 20 77 69 6c 6c 20 62 65 20  ch data will be 
15a0: 72 65 61 64 2e 20 20 54 68 65 20 66 69 6c 65 6e  read.  The filen
15b0: 61 6d 65 20 63 61 6e 20 62 65 0a 74 68 65 20 3c  ame can be.the <
15c0: 62 3e 53 54 44 49 4e 3c 2f 62 3e 20 74 6f 20 72  b>STDIN</b> to r
15d0: 65 61 64 20 64 61 74 61 20 66 72 6f 6d 20 73 74  ead data from st
15e0: 61 6e 64 61 72 64 20 69 6e 70 75 74 2e 3c 70 3e  andard input.<p>
15f0: 0a 0a 3c 70 3e 45 61 63 68 20 6c 69 6e 65 20 6f  ..<p>Each line o
1600: 66 20 74 68 65 20 69 6e 70 75 74 20 66 69 6c 65  f the input file
1610: 20 69 73 20 63 6f 6e 76 65 72 74 65 64 20 69 6e   is converted in
1620: 74 6f 20 61 20 73 69 6e 67 6c 65 20 72 65 63 6f  to a single reco
1630: 72 64 0a 69 6e 20 74 68 65 20 74 61 62 6c 65 2e  rd.in the table.
1640: 20 20 43 6f 6c 75 6d 6e 73 20 61 72 65 20 73 65    Columns are se
1650: 70 61 72 61 74 65 64 20 62 79 20 74 61 62 73 2e  parated by tabs.
1660: 20 20 49 66 20 61 20 74 61 62 20 6f 63 63 75 72    If a tab occur
1670: 73 20 61 73 0a 64 61 74 61 20 77 69 74 68 69 6e  s as.data within
1680: 20 61 20 63 6f 6c 75 6d 6e 2c 20 74 68 65 6e 20   a column, then 
1690: 74 68 61 74 20 74 61 62 20 69 73 20 70 72 65 63  that tab is prec
16a0: 65 64 65 64 20 62 79 20 61 20 62 61 73 6b 73 6c  eded by a basksl
16b0: 61 73 68 20 22 5c 22 0a 63 68 61 72 61 63 74 65  ash "\".characte
16c0: 72 2e 20 20 41 20 62 61 73 6b 73 6c 61 73 68 20  r.  A baskslash 
16d0: 69 6e 20 74 68 65 20 64 61 74 61 20 61 70 70 65  in the data appe
16e0: 61 72 73 20 61 73 20 74 77 6f 20 62 61 63 6b 73  ars as two backs
16f0: 6c 61 73 68 65 73 20 69 6e 0a 61 20 72 6f 77 2e  lashes in.a row.
1700: 20 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 55    The optional U
1710: 53 49 4e 47 20 44 45 4c 49 4d 49 54 45 52 53 20  SING DELIMITERS 
1720: 63 6c 61 75 73 65 20 63 61 6e 20 73 70 65 63 69  clause can speci
1730: 66 79 20 61 20 64 65 6c 69 6d 69 74 65 72 0a 6f  fy a delimiter.o
1740: 74 68 65 72 20 74 68 61 6e 20 74 61 62 2e 3c 2f  ther than tab.</
1750: 70 3e 0a 0a 3c 70 3e 49 66 20 61 20 63 6f 6c 75  p>..<p>If a colu
1760: 6d 6e 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74  mn consists of t
1770: 68 65 20 63 68 61 72 61 63 74 65 72 20 22 5c 4e  he character "\N
1780: 22 2c 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69  ", that column i
1790: 73 20 66 69 6c 6c 65 64 0a 77 69 74 68 20 74 68  s filled.with th
17a0: 65 20 76 61 6c 75 65 20 4e 55 4c 4c 2e 3c 2f 70  e value NULL.</p
17b0: 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e  >..<p>The option
17c0: 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  al conflict-clau
17d0: 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70  se allows the sp
17e0: 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61  ecification of a
17f0: 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f  n alternative.co
1800: 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63  nstraint conflic
1810: 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t resolution alg
1820: 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20 66 6f  orithm to use fo
1830: 72 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61  r this one comma
1840: 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74  nd..See the sect
1850: 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68 72  ion titled.<a hr
1860: 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f  ef="#conflict">O
1870: 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66  N CONFLICT</a> f
1880: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
1890: 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a  formation.</p>..
18a0: 3c 70 3e 57 68 65 6e 20 74 68 65 20 69 6e 70 75  <p>When the inpu
18b0: 74 20 64 61 74 61 20 73 6f 75 72 63 65 20 69 73  t data source is
18c0: 20 53 54 44 49 4e 2c 20 74 68 65 20 69 6e 70 75   STDIN, the inpu
18d0: 74 20 63 61 6e 20 62 65 20 74 65 72 6d 69 6e 61  t can be termina
18e0: 74 65 64 0a 62 79 20 61 20 6c 69 6e 65 20 74 68  ted.by a line th
18f0: 61 74 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 6c 79  at contains only
1900: 20 61 20 62 61 73 6b 73 6c 61 73 68 20 61 6e 64   a baskslash and
1910: 20 61 20 64 6f 74 3a 7d 0a 70 75 74 73 20 22 5c   a dot:}.puts "\
1920: 22 5b 4f 70 65 72 61 74 6f 72 20 5c 5c 2e 5d 5c  "[Operator \\.]\
1930: 22 2e 3c 2f 70 3e 22 0a 0a 53 65 63 74 69 6f 6e  ".</p>"..Section
1940: 20 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20   {CREATE INDEX} 
1950: 63 72 65 61 74 65 69 6e 64 65 78 0a 0a 53 79 6e  createindex..Syn
1960: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
1970: 6e 74 7d 20 7b 0a 43 52 45 41 54 45 20 5b 55 4e  nt} {.CREATE [UN
1980: 49 51 55 45 5d 20 49 4e 44 45 58 20 3c 69 6e 64  IQUE] INDEX <ind
1990: 65 78 2d 6e 61 6d 65 3e 20 0a 4f 4e 20 3c 74 61  ex-name> .ON <ta
19a0: 62 6c 65 2d 6e 61 6d 65 3e 20 28 20 3c 63 6f 6c  ble-name> ( <col
19b0: 75 6d 6e 2d 6e 61 6d 65 3e 20 5b 2c 20 3c 63 6f  umn-name> [, <co
19c0: 6c 75 6d 6e 2d 6e 61 6d 65 3e 5d 2a 20 29 0a 5b  lumn-name>]* ).[
19d0: 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c 63 6f   ON CONFLICT <co
19e0: 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d  nflict-algorithm
19f0: 3e 20 5d 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 6e 61  > ].} {column-na
1a00: 6d 65 7d 20 7b 0a 3c 6e 61 6d 65 3e 20 5b 20 41  me} {.<name> [ A
1a10: 53 43 20 7c 20 44 45 53 43 20 5d 0a 7d 0a 0a 0a  SC | DESC ].}...
1a20: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43 52  puts {.<p>The CR
1a30: 45 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61  EATE INDEX comma
1a40: 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74  nd consists of t
1a50: 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45  he keywords "CRE
1a60: 41 54 45 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f  ATE INDEX" follo
1a70: 77 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65 20  wed.by the name 
1a80: 6f 66 20 74 68 65 20 6e 65 77 20 69 6e 64 65 78  of the new index
1a90: 2c 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22 4f  , the keyword "O
1aa0: 4e 22 2c 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  N", the name of 
1ab0: 61 20 70 72 65 76 69 6f 75 73 6c 79 0a 63 72 65  a previously.cre
1ac0: 61 74 65 64 20 74 61 62 6c 65 20 74 68 61 74 20  ated table that 
1ad0: 69 73 20 74 6f 20 62 65 20 69 6e 64 65 78 65 64  is to be indexed
1ae0: 2c 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68 65  , and a parenthe
1af0: 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 6e 61  sized list of na
1b00: 6d 65 73 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20 69  mes of.columns i
1b10: 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  n the table that
1b20: 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 74 68   are used for th
1b30: 65 20 69 6e 64 65 78 20 6b 65 79 2e 0a 45 61 63  e index key..Eac
1b40: 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61  h column name ca
1b50: 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79  n be followed by
1b60: 20 6f 6e 65 20 6f 66 20 74 68 65 20 22 41 53 43   one of the "ASC
1b70: 22 20 6f 72 20 22 44 45 53 43 22 20 6b 65 79 77  " or "DESC" keyw
1b80: 6f 72 64 73 0a 74 6f 20 69 6e 64 69 63 61 74 65  ords.to indicate
1b90: 20 73 6f 72 74 20 6f 72 64 65 72 2c 20 62 75 74   sort order, but
1ba0: 20 74 68 65 20 73 6f 72 74 20 6f 72 64 65 72 20   the sort order 
1bb0: 69 73 20 69 67 6e 6f 72 65 64 20 69 6e 20 74 68  is ignored in th
1bc0: 65 20 63 75 72 72 65 6e 74 0a 69 6d 70 6c 65 6d  e current.implem
1bd0: 65 6e 74 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c  entation.</p>..<
1be0: 70 3e 54 68 65 72 65 20 61 72 65 20 6e 6f 20 61  p>There are no a
1bf0: 72 62 69 74 72 61 72 79 20 6c 69 6d 69 74 73 20  rbitrary limits 
1c00: 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  on the number of
1c10: 20 69 6e 64 69 63 65 73 20 74 68 61 74 20 63 61   indices that ca
1c20: 6e 20 62 65 0a 61 74 74 61 63 68 65 64 20 74 6f  n be.attached to
1c30: 20 61 20 73 69 6e 67 6c 65 20 74 61 62 6c 65 2c   a single table,
1c40: 20 6e 6f 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62   nor on the numb
1c50: 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
1c60: 20 61 6e 20 69 6e 64 65 78 2e 3c 2f 70 3e 0a 0a   an index.</p>..
1c70: 3c 70 3e 49 66 20 74 68 65 20 55 4e 49 51 55 45  <p>If the UNIQUE
1c80: 20 6b 65 79 77 6f 72 64 20 61 70 70 65 61 72 73   keyword appears
1c90: 20 62 65 74 77 65 65 6e 20 43 52 45 41 54 45 20   between CREATE 
1ca0: 61 6e 64 20 49 4e 44 45 58 20 74 68 65 6e 20 64  and INDEX then d
1cb0: 75 70 6c 69 63 61 74 65 0a 69 6e 64 65 78 20 65  uplicate.index e
1cc0: 6e 74 72 69 65 73 20 61 72 65 20 6e 6f 74 20 61  ntries are not a
1cd0: 6c 6c 6f 77 65 64 2e 20 20 41 6e 79 20 61 74 74  llowed.  Any att
1ce0: 65 6d 70 74 20 74 6f 20 69 6e 73 65 72 74 20 61  empt to insert a
1cf0: 20 64 75 70 6c 69 63 61 74 65 20 65 6e 74 72 79   duplicate entry
1d00: 0a 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20  .will result in 
1d10: 61 20 72 6f 6c 6c 62 61 63 6b 20 61 6e 64 20 61  a rollback and a
1d20: 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e  n error message.
1d30: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74  </p>..<p>The opt
1d40: 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63  ional conflict-c
1d50: 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65  lause allows the
1d60: 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f   specification o
1d70: 66 20 61 6c 20 61 6c 74 65 72 6e 61 74 69 76 65  f al alternative
1d80: 0a 64 65 66 61 75 6c 74 20 63 6f 6e 73 74 72 61  .default constra
1d90: 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73  int conflict res
1da0: 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68  olution algorith
1db0: 6d 20 66 6f 72 20 74 68 69 73 20 69 6e 64 65 78  m for this index
1dc0: 2e 0a 54 68 69 73 20 6f 6e 6c 79 20 6d 61 6b 65  ..This only make
1dd0: 73 20 73 65 6e 73 65 20 69 66 20 74 68 65 20 55  s sense if the U
1de0: 4e 49 51 55 45 20 6b 65 79 77 6f 72 64 20 69 73  NIQUE keyword is
1df0: 20 75 73 65 64 20 73 69 6e 63 65 20 6f 74 68 65   used since othe
1e00: 72 77 69 73 65 0a 74 68 65 72 65 20 61 72 65 20  rwise.there are 
1e10: 6e 6f 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  not constraints 
1e20: 6f 6e 20 74 68 65 20 69 6e 64 65 78 2e 20 20 54  on the index.  T
1e30: 68 65 20 64 65 66 61 75 6c 74 20 61 6c 67 6f 72  he default algor
1e40: 69 74 68 6d 20 69 73 0a 41 42 4f 52 54 2e 20 20  ithm is.ABORT.  
1e50: 49 66 20 61 20 43 4f 50 59 2c 20 49 4e 53 45 52  If a COPY, INSER
1e60: 54 2c 20 6f 72 20 55 50 44 41 54 45 20 73 74 61  T, or UPDATE sta
1e70: 74 65 6d 65 6e 74 20 73 70 65 63 69 66 69 65 73  tement specifies
1e80: 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a 63 6f   a particular.co
1e90: 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
1ea0: 6e 20 61 6c 67 6f 72 69 74 68 6d 2c 20 74 68 61  n algorithm, tha
1eb0: 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  t algorithm is u
1ec0: 73 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 0a  sed in place of.
1ed0: 74 68 65 20 64 65 66 61 75 6c 74 20 61 6c 67 6f  the default algo
1ee0: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
1ef0: 68 65 72 65 2e 0a 53 65 65 20 74 68 65 20 73 65  here..See the se
1f00: 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20  ction titled.<a 
1f10: 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22  href="#conflict"
1f20: 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e  >ON CONFLICT</a>
1f30: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
1f40: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e  information.</p>
1f50: 0a 0a 3c 70 3e 54 68 65 20 65 78 61 63 74 20 74  ..<p>The exact t
1f60: 65 78 74 0a 6f 66 20 65 61 63 68 20 43 52 45 41  ext.of each CREA
1f70: 54 45 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65  TE INDEX stateme
1f80: 6e 74 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20  nt is stored in 
1f90: 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61  the <b>sqlite_ma
1fa0: 73 74 65 72 3c 2f 62 3e 0a 74 61 62 6c 65 2e 20  ster</b>.table. 
1fb0: 20 45 76 65 72 79 74 69 6d 65 20 74 68 65 20 64   Everytime the d
1fc0: 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65  atabase is opene
1fd0: 64 2c 20 61 6c 6c 20 43 52 45 41 54 45 20 49 4e  d, all CREATE IN
1fe0: 44 45 58 20 73 74 61 74 65 6d 65 6e 74 73 0a 61  DEX statements.a
1ff0: 72 65 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  re read from the
2000: 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65   <b>sqlite_maste
2010: 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61 6e 64 20  r</b> table and 
2020: 75 73 65 64 20 74 6f 20 72 65 67 65 6e 65 72 61  used to regenera
2030: 74 65 0a 53 51 4c 69 74 65 27 73 20 69 6e 74 65  te.SQLite's inte
2040: 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74  rnal representat
2050: 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 64 65 78  ion of the index
2060: 20 6c 61 79 6f 75 74 2e 3c 2f 70 3e 0a 7d 0a 0a   layout.</p>.}..
2070: 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45  .Section {CREATE
2080: 20 54 41 42 4c 45 7d 20 7b 63 72 65 61 74 65 74   TABLE} {createt
2090: 61 62 6c 65 7d 0a 0a 53 79 6e 74 61 78 20 7b 73  able}..Syntax {s
20a0: 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43 52  ql-command} {.CR
20b0: 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45 4d  EATE [TEMP | TEM
20c0: 50 4f 52 41 52 59 5d 20 54 41 42 4c 45 20 3c 74  PORARY] TABLE <t
20d0: 61 62 6c 65 2d 6e 61 6d 65 3e 20 28 0a 20 20 3c  able-name> (.  <
20e0: 63 6f 6c 75 6d 6e 2d 64 65 66 3e 20 5b 2c 20 3c  column-def> [, <
20f0: 63 6f 6c 75 6d 6e 2d 64 65 66 3e 5d 2a 0a 20 20  column-def>]*.  
2100: 5b 2c 20 3c 63 6f 6e 73 74 72 61 69 6e 74 3e 5d  [, <constraint>]
2110: 2a 0a 29 0a 7d 20 7b 73 71 6c 2d 63 6f 6d 6d 61  *.).} {sql-comma
2120: 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45  nd} {.CREATE [TE
2130: 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20  MP | TEMPORARY] 
2140: 54 41 42 4c 45 20 3c 74 61 62 6c 65 2d 6e 61 6d  TABLE <table-nam
2150: 65 3e 20 41 53 20 3c 73 65 6c 65 63 74 2d 73 74  e> AS <select-st
2160: 61 74 65 6d 65 6e 74 3e 0a 7d 20 7b 63 6f 6c 75  atement>.} {colu
2170: 6d 6e 2d 64 65 66 7d 20 7b 0a 3c 6e 61 6d 65 3e  mn-def} {.<name>
2180: 20 5b 3c 74 79 70 65 3e 5d 20 5b 3c 63 6f 6c 75   [<type>] [<colu
2190: 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e 74 3e 5d 2a  mn-constraint>]*
21a0: 0a 7d 20 7b 74 79 70 65 7d 20 7b 0a 3c 74 79 70  .} {type} {.<typ
21b0: 65 6e 61 6d 65 3e 20 7c 0a 3c 74 79 70 65 6e 61  ename> |.<typena
21c0: 6d 65 3e 20 28 20 3c 6e 75 6d 62 65 72 3e 20 29  me> ( <number> )
21d0: 20 7c 0a 3c 74 79 70 65 6e 61 6d 65 3e 20 28 20   |.<typename> ( 
21e0: 3c 6e 75 6d 62 65 72 3e 20 2c 20 3c 6e 75 6d 62  <number> , <numb
21f0: 65 72 3e 20 29 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d  er> ).} {column-
2200: 63 6f 6e 73 74 72 61 69 6e 74 7d 20 7b 0a 4e 4f  constraint} {.NO
2210: 54 20 4e 55 4c 4c 20 5b 20 3c 63 6f 6e 66 6c 69  T NULL [ <confli
2220: 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 50  ct-clause> ] |.P
2230: 52 49 4d 41 52 59 20 4b 45 59 20 5b 3c 73 6f 72  RIMARY KEY [<sor
2240: 74 2d 6f 72 64 65 72 3e 5d 20 5b 20 3c 63 6f 6e  t-order>] [ <con
2250: 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20  flict-clause> ] 
2260: 7c 0a 55 4e 49 51 55 45 20 5b 20 3c 63 6f 6e 66  |.UNIQUE [ <conf
2270: 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c  lict-clause> ] |
2280: 0a 43 48 45 43 4b 20 28 20 3c 65 78 70 72 3e 20  .CHECK ( <expr> 
2290: 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c  ) [ <conflict-cl
22a0: 61 75 73 65 3e 20 5d 20 7c 0a 44 45 46 41 55 4c  ause> ] |.DEFAUL
22b0: 54 20 3c 76 61 6c 75 65 3e 0a 7d 20 7b 63 6f 6e  T <value>.} {con
22c0: 73 74 72 61 69 6e 74 7d 20 7b 0a 50 52 49 4d 41  straint} {.PRIMA
22d0: 52 59 20 4b 45 59 20 28 20 3c 6e 61 6d 65 3e 20  RY KEY ( <name> 
22e0: 5b 2c 20 3c 6e 61 6d 65 3e 5d 2a 20 29 20 5b 20  [, <name>]* ) [ 
22f0: 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65  <conflict-clause
2300: 3e 20 5d 7c 0a 55 4e 49 51 55 45 20 28 20 3c 6e  > ]|.UNIQUE ( <n
2310: 61 6d 65 3e 20 5b 2c 20 3c 6e 61 6d 65 3e 5d 2a  ame> [, <name>]*
2320: 20 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63   ) [ <conflict-c
2330: 6c 61 75 73 65 3e 20 5d 20 7c 0a 43 48 45 43 4b  lause> ] |.CHECK
2340: 20 28 20 3c 65 78 70 72 3e 20 29 20 5b 20 3c 63   ( <expr> ) [ <c
2350: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20  onflict-clause> 
2360: 5d 0a 7d 20 7b 63 6f 6e 66 6c 69 63 74 2d 63 6c  ].} {conflict-cl
2370: 61 75 73 65 7d 20 7b 0a 4f 4e 20 43 4f 4e 46 4c  ause} {.ON CONFL
2380: 49 43 54 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c  ICT <conflict-al
2390: 67 6f 72 69 74 68 6d 3e 0a 7d 0a 0a 70 75 74 73  gorithm>.}..puts
23a0: 20 7b 0a 3c 70 3e 41 20 43 52 45 41 54 45 20 54   {.<p>A CREATE T
23b0: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69  ABLE statement i
23c0: 73 20 62 61 73 69 63 61 6c 6c 79 20 74 68 65 20  s basically the 
23d0: 6b 65 79 77 6f 72 64 73 20 22 43 52 45 41 54 45  keywords "CREATE
23e0: 20 54 41 42 4c 45 22 0a 66 6f 6c 6c 6f 77 65 64   TABLE".followed
23f0: 20 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   by the name of 
2400: 61 20 6e 65 77 20 74 61 62 6c 65 20 61 6e 64 20  a new table and 
2410: 61 20 70 61 72 65 6e 74 68 65 73 69 7a 65 64 20  a parenthesized 
2420: 6c 69 73 74 20 6f 66 20 63 6f 6c 75 6d 6e 0a 64  list of column.d
2430: 65 66 69 6e 69 74 69 6f 6e 73 20 61 6e 64 20 63  efinitions and c
2440: 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20 54 68 65  onstraints.  The
2450: 20 74 61 62 6c 65 20 6e 61 6d 65 20 63 61 6e 20   table name can 
2460: 62 65 20 65 69 74 68 65 72 20 61 6e 20 69 64 65  be either an ide
2470: 6e 74 69 66 69 65 72 0a 6f 72 20 61 20 73 74 72  ntifier.or a str
2480: 69 6e 67 2e 20 20 54 68 65 20 6f 6e 6c 79 20 72  ing.  The only r
2490: 65 73 65 72 76 65 64 20 74 61 62 6c 65 20 6e 61  eserved table na
24a0: 6d 65 20 69 73 20 22 3c 62 3e 73 71 6c 69 74 65  me is "<b>sqlite
24b0: 5f 6d 61 73 74 65 72 3c 2f 62 3e 22 20 77 68 69  _master</b>" whi
24c0: 63 68 0a 69 73 20 74 68 65 20 6e 61 6d 65 20 6f  ch.is the name o
24d0: 66 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  f the table that
24e0: 20 72 65 63 6f 72 64 73 20 74 68 65 20 64 61 74   records the dat
24f0: 61 62 61 73 65 20 73 63 68 65 6d 61 2e 3c 2f 70  abase schema.</p
2500: 3e 0a 0a 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d  >..<p>Each colum
2510: 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 69 73 20  n definition is 
2520: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
2530: 63 6f 6c 75 6d 6e 20 66 6f 6c 6c 6f 77 65 64 20  column followed 
2540: 62 79 20 74 68 65 0a 64 61 74 61 74 79 70 65 20  by the.datatype 
2550: 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c  for that column,
2560: 20 74 68 65 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72   then one or mor
2570: 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6c 75 6d  e optional colum
2580: 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 54  n constraints..T
2590: 68 65 20 64 61 74 61 74 79 70 65 20 66 6f 72 20  he datatype for 
25a0: 74 68 65 20 63 6f 6c 75 6d 6e 20 69 73 20 28 75  the column is (u
25b0: 73 75 61 6c 6c 79 29 20 69 67 6e 6f 72 65 64 20  sually) ignored 
25c0: 61 6e 64 20 6d 61 79 20 62 65 20 6f 6d 69 74 74  and may be omitt
25d0: 65 64 2e 0a 41 6c 6c 20 69 6e 66 6f 72 6d 61 74  ed..All informat
25e0: 69 6f 6e 20 69 73 20 73 74 6f 72 65 64 20 61 73  ion is stored as
25f0: 20 6e 75 6c 6c 2d 74 65 72 6d 69 6e 61 74 65 64   null-terminated
2600: 20 73 74 72 69 6e 67 73 2e 0a 54 68 65 20 55 4e   strings..The UN
2610: 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 20  IQUE constraint 
2620: 63 61 75 73 65 73 20 61 6e 20 69 6e 64 65 78 20  causes an index 
2630: 74 6f 20 62 65 20 63 72 65 61 74 65 64 20 6f 6e  to be created on
2640: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0a 63   the specified.c
2650: 6f 6c 75 6d 6e 73 2e 20 20 54 68 69 73 20 69 6e  olumns.  This in
2660: 64 65 78 20 6d 75 73 74 20 63 6f 6e 74 61 69 6e  dex must contain
2670: 20 75 6e 69 71 75 65 20 6b 65 79 73 2e 0a 54 68   unique keys..Th
2680: 65 20 44 45 46 41 55 4c 54 20 63 6f 6e 73 74 72  e DEFAULT constr
2690: 61 69 6e 74 0a 73 70 65 63 69 66 69 65 73 20 61  aint.specifies a
26a0: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 74   default value t
26b0: 6f 20 75 73 65 20 77 68 65 6e 20 64 6f 69 6e 67  o use when doing
26c0: 20 61 6e 20 49 4e 53 45 52 54 2e 0a 3c 2f 70 3e   an INSERT..</p>
26d0: 0a 0a 3c 70 3e 53 70 65 63 69 66 79 69 6e 67 20  ..<p>Specifying 
26e0: 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6e 6f  a PRIMARY KEY no
26f0: 72 6d 61 6c 6c 79 20 6a 75 73 74 20 63 72 65 61  rmally just crea
2700: 74 65 73 20 61 20 55 4e 49 51 55 45 20 69 6e 64  tes a UNIQUE ind
2710: 65 78 0a 6f 6e 20 74 68 65 20 70 72 69 6d 61 72  ex.on the primar
2720: 79 20 6b 65 79 2e 20 20 48 6f 77 65 76 65 72 2c  y key.  However,
2730: 20 69 66 20 70 72 69 6d 61 72 79 20 6b 65 79 20   if primary key 
2740: 69 73 20 6f 6e 20 61 20 73 69 6e 67 6c 65 20 63  is on a single c
2750: 6f 6c 75 6d 6e 0a 74 68 61 74 20 68 61 73 20 64  olumn.that has d
2760: 61 74 61 74 79 70 65 20 49 4e 54 45 47 45 52 2c  atatype INTEGER,
2770: 20 74 68 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d   then that colum
2780: 6e 20 69 73 20 75 73 65 64 20 69 6e 74 65 72 6e  n is used intern
2790: 61 6c 6c 79 0a 61 73 20 74 68 65 20 61 63 74 75  ally.as the actu
27a0: 61 6c 20 6b 65 79 20 6f 66 20 74 68 65 20 42 2d  al key of the B-
27b0: 54 72 65 65 20 66 6f 72 20 74 68 65 20 74 61 62  Tree for the tab
27c0: 6c 65 2e 20 20 54 68 69 73 20 6d 65 61 6e 73 20  le.  This means 
27d0: 74 68 61 74 20 74 68 65 20 63 6f 6c 75 6d 6e 0a  that the column.
27e0: 6d 61 79 20 6f 6e 6c 79 20 68 6f 6c 64 20 75 6e  may only hold un
27f0: 69 71 75 65 20 69 6e 74 65 67 65 72 20 76 61 6c  ique integer val
2800: 75 65 73 2e 20 20 28 45 78 63 65 70 74 20 66 6f  ues.  (Except fo
2810: 72 20 74 68 69 73 20 6f 6e 65 20 63 61 73 65 2c  r this one case,
2820: 0a 53 51 4c 69 74 65 20 69 67 6e 6f 72 65 73 20  .SQLite ignores 
2830: 74 68 65 20 64 61 74 61 74 79 70 65 20 73 70 65  the datatype spe
2840: 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 63 6f  cification of co
2850: 6c 75 6d 6e 73 20 61 6e 64 20 61 6c 6c 6f 77 73  lumns and allows
2860: 0a 61 6e 79 20 6b 69 6e 64 20 6f 66 20 64 61 74  .any kind of dat
2870: 61 20 74 6f 20 62 65 20 70 75 74 20 69 6e 20 61  a to be put in a
2880: 20 63 6f 6c 75 6d 6e 20 72 65 67 61 72 64 6c 65   column regardle
2890: 73 73 20 6f 66 20 69 74 73 20 64 65 63 6c 61 72  ss of its declar
28a0: 65 64 0a 64 61 74 61 74 79 70 65 2e 29 20 20 49  ed.datatype.)  I
28b0: 66 20 61 20 74 61 62 6c 65 20 64 6f 65 73 20 6e  f a table does n
28c0: 6f 74 20 68 61 76 65 20 61 6e 20 49 4e 54 45 47  ot have an INTEG
28d0: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63  ER PRIMARY KEY c
28e0: 6f 6c 75 6d 6e 2c 0a 74 68 65 6e 20 74 68 65 20  olumn,.then the 
28f0: 42 2d 54 72 65 65 20 6b 65 79 20 77 69 6c 6c 20  B-Tree key will 
2900: 62 65 20 61 20 61 75 74 6f 6d 61 74 69 63 61 6c  be a automatical
2910: 6c 79 20 67 65 6e 65 72 61 74 65 64 20 69 6e 74  ly generated int
2920: 65 67 65 72 2e 20 20 54 68 65 0a 42 2d 54 72 65  eger.  The.B-Tre
2930: 65 20 6b 65 79 20 66 6f 72 20 61 20 72 6f 77 20  e key for a row 
2940: 63 61 6e 20 61 6c 77 61 79 73 20 62 65 20 61 63  can always be ac
2950: 63 65 73 73 65 64 20 75 73 69 6e 67 20 6f 6e 65  cessed using one
2960: 20 6f 66 20 74 68 65 0a 73 70 65 63 69 61 6c 20   of the.special 
2970: 6e 61 6d 65 73 20 22 3c 62 3e 52 4f 57 49 44 3c  names "<b>ROWID<
2980: 2f 62 3e 22 2c 20 22 3c 62 3e 4f 49 44 3c 2f 62  /b>", "<b>OID</b
2990: 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49  >", or "<b>_ROWI
29a0: 44 5f 3c 2f 62 3e 22 2e 0a 54 68 69 73 20 69 73  D_</b>"..This is
29b0: 20 74 72 75 65 20 72 65 67 61 72 64 6c 65 73 73   true regardless
29c0: 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e   of whether or n
29d0: 6f 74 20 74 68 65 72 65 20 69 73 20 61 6e 20 49  ot there is an I
29e0: 4e 54 45 47 45 52 0a 50 52 49 4d 41 52 59 20 4b  NTEGER.PRIMARY K
29f0: 45 59 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74  EY.</p>..<p>If t
2a00: 68 65 20 22 54 45 4d 50 22 20 6f 72 20 22 54 45  he "TEMP" or "TE
2a10: 4d 50 4f 52 41 52 59 22 20 6b 65 79 77 6f 72 64  MPORARY" keyword
2a20: 20 6f 63 63 75 72 73 20 69 6e 20 62 65 74 77 65   occurs in betwe
2a30: 65 6e 20 22 43 52 45 41 54 45 22 0a 61 6e 64 20  en "CREATE".and 
2a40: 22 54 41 42 4c 45 22 20 74 68 65 6e 20 74 68 65  "TABLE" then the
2a50: 20 74 61 62 6c 65 20 74 68 61 74 20 69 73 20 63   table that is c
2a60: 72 65 61 74 65 64 20 69 73 20 6f 6e 6c 79 20 76  reated is only v
2a70: 69 73 69 62 6c 65 20 74 6f 20 74 68 65 0a 70 72  isible to the.pr
2a80: 6f 63 65 73 73 20 74 68 61 74 20 6f 70 65 6e 65  ocess that opene
2a90: 64 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  d the database a
2aa0: 6e 64 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61  nd is automatica
2ab0: 6c 6c 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e  lly deleted when
2ac0: 0a 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73  .the database is
2ad0: 20 63 6c 6f 73 65 64 2e 20 20 41 6e 79 20 69 6e   closed.  Any in
2ae0: 64 69 63 65 73 20 63 72 65 61 74 65 64 20 6f 6e  dices created on
2af0: 20 61 20 74 65 6d 70 6f 72 61 72 79 20 74 61 62   a temporary tab
2b00: 6c 65 0a 61 72 65 20 61 6c 73 6f 20 74 65 6d 70  le.are also temp
2b10: 6f 72 61 72 79 2e 20 20 54 65 6d 70 6f 72 61 72  orary.  Temporar
2b20: 79 20 74 61 62 6c 65 73 20 61 6e 64 20 69 6e 64  y tables and ind
2b30: 69 63 65 73 20 61 72 65 20 73 74 6f 72 65 64 20  ices are stored 
2b40: 69 6e 20 61 0a 73 65 70 61 72 61 74 65 20 66 69  in a.separate fi
2b50: 6c 65 20 64 69 73 74 69 6e 63 74 20 66 72 6f 6d  le distinct from
2b60: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
2b70: 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70  se file.</p>..<p
2b80: 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f  >The optional co
2b90: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 66 6f  nflict-clause fo
2ba0: 6c 6c 6f 77 69 6e 67 20 65 61 63 68 20 63 6f 6e  llowing each con
2bb0: 73 74 72 61 69 6e 74 0a 61 6c 6c 6f 77 73 20 74  straint.allows t
2bc0: 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
2bd0: 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69   of an alternati
2be0: 76 65 20 64 65 66 61 75 6c 74 0a 63 6f 6e 73 74  ve default.const
2bf0: 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72  raint conflict r
2c00: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
2c10: 74 68 6d 20 66 6f 72 20 74 68 61 74 20 63 6f 6e  thm for that con
2c20: 73 74 72 61 69 6e 74 2e 0a 54 68 65 20 64 65 66  straint..The def
2c30: 61 75 6c 74 20 69 73 20 61 62 6f 72 74 20 41 42  ault is abort AB
2c40: 4f 52 54 2e 20 20 44 69 66 66 65 72 65 6e 74 20  ORT.  Different 
2c50: 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69 74 68  constraints with
2c60: 69 6e 20 74 68 65 20 73 61 6d 65 0a 74 61 62 6c  in the same.tabl
2c70: 65 20 6d 61 79 20 68 61 76 65 20 64 69 66 66 65  e may have diffe
2c80: 72 65 6e 74 20 64 65 66 61 75 6c 74 20 63 6f 6e  rent default con
2c90: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
2ca0: 20 61 6c 67 6f 72 69 74 68 6d 73 2e 0a 49 66 20   algorithms..If 
2cb0: 61 6e 20 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c  an COPY, INSERT,
2cc0: 20 6f 72 20 55 50 44 41 54 45 20 63 6f 6d 6d 61   or UPDATE comma
2cd0: 6e 64 20 73 70 65 63 69 66 69 65 73 20 61 20 64  nd specifies a d
2ce0: 69 66 66 65 72 65 6e 74 20 63 6f 6e 66 6c 69 63  ifferent conflic
2cf0: 74 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t.resolution alg
2d00: 6f 72 69 74 68 6d 2c 20 74 68 65 6e 20 74 68 61  orithm, then tha
2d10: 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  t algorithm is u
2d20: 73 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 20  sed in place of 
2d30: 74 68 65 0a 64 65 66 61 75 6c 74 20 61 6c 67 6f  the.default algo
2d40: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
2d50: 69 6e 20 74 68 65 20 43 52 45 41 54 45 20 54 41  in the CREATE TA
2d60: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0a 53  BLE statement..S
2d70: 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74  ee the section t
2d80: 69 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23  itled.<a href="#
2d90: 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e  conflict">ON CON
2da0: 46 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64  FLICT</a> for ad
2db0: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
2dc0: 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 43 48  tion.</p>..<p>CH
2dd0: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  ECK constraints 
2de0: 61 72 65 20 69 67 6e 6f 72 65 64 20 69 6e 20 74  are ignored in t
2df0: 68 65 20 63 75 72 72 65 6e 74 20 69 6d 70 6c 65  he current imple
2e00: 6d 65 6e 74 61 74 69 6f 6e 2e 0a 53 75 70 70 6f  mentation..Suppo
2e10: 72 74 20 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e  rt for CHECK con
2e20: 73 74 72 61 69 6e 74 73 20 6d 61 79 20 62 65 20  straints may be 
2e30: 61 64 64 65 64 20 69 6e 20 74 68 65 20 66 75 74  added in the fut
2e40: 75 72 65 2e 20 20 41 73 20 6f 66 0a 76 65 72 73  ure.  As of.vers
2e50: 69 6f 6e 20 32 2e 33 2e 30 2c 20 4e 4f 54 20 4e  ion 2.3.0, NOT N
2e60: 55 4c 4c 2c 20 50 52 49 4d 41 52 59 20 4b 45 59  ULL, PRIMARY KEY
2e70: 2c 20 61 6e 64 20 55 4e 49 51 55 45 20 63 6f 6e  , and UNIQUE con
2e80: 73 74 72 61 69 6e 74 73 20 61 6c 6c 0a 77 6f 72  straints all.wor
2e90: 6b 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65  k.</p>..<p>There
2ea0: 20 61 72 65 20 6e 6f 20 61 72 62 69 74 72 61 72   are no arbitrar
2eb0: 79 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65 20  y limits on the 
2ec0: 6e 75 6d 62 65 72 0a 6f 66 20 63 6f 6c 75 6d 6e  number.of column
2ed0: 73 20 6f 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62  s or on the numb
2ee0: 65 72 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74  er of constraint
2ef0: 73 20 69 6e 20 61 20 74 61 62 6c 65 2e 0a 54 68  s in a table..Th
2f00: 65 20 74 6f 74 61 6c 20 61 6d 6f 75 6e 74 20 6f  e total amount o
2f10: 66 20 64 61 74 61 20 69 6e 20 61 20 73 69 6e 67  f data in a sing
2f20: 6c 65 20 72 6f 77 20 69 73 20 6c 69 6d 69 74 65  le row is limite
2f30: 64 20 74 6f 20 61 62 6f 75 74 0a 31 20 6d 65 67  d to about.1 meg
2f40: 61 62 79 74 65 73 2e 20 20 28 54 68 69 73 20 6c  abytes.  (This l
2f50: 69 6d 69 74 20 63 61 6e 20 62 65 20 69 6e 63 72  imit can be incr
2f60: 65 61 73 65 64 20 74 6f 20 31 36 4d 42 20 62 79  eased to 16MB by
2f70: 20 63 68 61 6e 67 69 6e 67 0a 61 20 73 69 6e 67   changing.a sing
2f80: 6c 65 20 23 64 65 66 69 6e 65 20 69 6e 20 74 68  le #define in th
2f90: 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 61 6e  e source code an
2fa0: 64 20 72 65 63 6f 6d 70 69 6c 69 6e 67 2e 29 3c  d recompiling.)<
2fb0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41  /p>..<p>The CREA
2fc0: 54 45 20 54 41 42 4c 45 20 41 53 20 66 6f 72 6d  TE TABLE AS form
2fd0: 20 64 65 66 69 6e 65 73 20 74 68 65 20 74 61 62   defines the tab
2fe0: 6c 65 20 74 6f 20 62 65 0a 74 68 65 20 72 65 73  le to be.the res
2ff0: 75 6c 74 20 73 65 74 20 6f 66 20 61 20 71 75 65  ult set of a que
3000: 72 79 2e 20 20 54 68 65 20 6e 61 6d 65 73 20 6f  ry.  The names o
3010: 66 20 74 68 65 20 74 61 62 6c 65 20 63 6f 6c 75  f the table colu
3020: 6d 6e 73 20 61 72 65 0a 74 68 65 20 6e 61 6d 65  mns are.the name
3030: 73 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73  s of the columns
3040: 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 3c   in the result.<
3050: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 65 78 61 63  /p>..<p>The exac
3060: 74 20 74 65 78 74 0a 6f 66 20 65 61 63 68 20 43  t text.of each C
3070: 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74  REATE TABLE stat
3080: 65 6d 65 6e 74 20 69 73 20 73 74 6f 72 65 64 20  ement is stored 
3090: 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65  in the <b>sqlite
30a0: 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 74 61 62 6c  _master</b>.tabl
30b0: 65 2e 20 20 45 76 65 72 79 74 69 6d 65 20 74 68  e.  Everytime th
30c0: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70  e database is op
30d0: 65 6e 65 64 2c 20 61 6c 6c 20 43 52 45 41 54 45  ened, all CREATE
30e0: 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
30f0: 73 0a 61 72 65 20 72 65 61 64 20 66 72 6f 6d 20  s.are read from 
3100: 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61  the <b>sqlite_ma
3110: 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61  ster</b> table a
3120: 6e 64 20 75 73 65 64 20 74 6f 20 72 65 67 65 6e  nd used to regen
3130: 65 72 61 74 65 0a 53 51 4c 69 74 65 27 73 20 69  erate.SQLite's i
3140: 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73 65 6e  nternal represen
3150: 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74 61  tation of the ta
3160: 62 6c 65 20 6c 61 79 6f 75 74 2e 0a 49 66 20 74  ble layout..If t
3170: 68 65 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d  he original comm
3180: 61 6e 64 20 77 61 73 20 61 20 43 52 45 41 54 45  and was a CREATE
3190: 20 54 41 42 4c 45 20 41 53 20 74 68 65 6e 20 74   TABLE AS then t
31a0: 68 65 6e 20 61 6e 20 65 71 75 69 76 61 6c 65 6e  hen an equivalen
31b0: 74 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20 73  t.CREATE TABLE s
31c0: 74 61 74 65 6d 65 6e 74 20 69 73 20 73 79 6e 74  tatement is synt
31d0: 68 65 73 69 7a 65 64 20 61 6e 64 20 73 74 6f 72  hesized and stor
31e0: 65 20 69 6e 20 3c 62 3e 73 71 6c 69 74 65 5f 6d  e in <b>sqlite_m
31f0: 61 73 74 65 72 3c 2f 62 3e 0a 69 6e 20 70 6c 61  aster</b>.in pla
3200: 63 65 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e  ce of the origin
3210: 61 6c 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e  al command..</p>
3220: 0a 7d 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41  .}.Section {CREA
3230: 54 45 20 54 52 49 47 47 45 52 7d 20 63 72 65 61  TE TRIGGER} crea
3240: 74 65 74 72 69 67 67 65 72 0a 0a 53 79 6e 74 61  tetrigger..Synta
3250: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
3260: 7d 20 7b 0a 43 52 45 41 54 45 20 54 52 49 47 47  } {.CREATE TRIGG
3270: 45 52 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65  ER <trigger-name
3280: 3e 20 5b 20 42 45 46 4f 52 45 20 7c 20 41 46 54  > [ BEFORE | AFT
3290: 45 52 20 5d 0a 3c 64 61 74 61 62 61 73 65 2d 65  ER ].<database-e
32a0: 76 65 6e 74 3e 20 4f 4e 20 3c 74 61 62 6c 65 2d  vent> ON <table-
32b0: 6e 61 6d 65 3e 0a 3c 74 72 69 67 67 65 72 2d 61  name>.<trigger-a
32c0: 63 74 69 6f 6e 3e 0a 7d 0a 0a 53 79 6e 74 61 78  ction>.}..Syntax
32d0: 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
32e0: 20 7b 0a 43 52 45 41 54 45 20 54 52 49 47 47 45   {.CREATE TRIGGE
32f0: 52 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65 3e  R <trigger-name>
3300: 20 49 4e 53 54 45 41 44 20 4f 46 0a 3c 64 61 74   INSTEAD OF.<dat
3310: 61 62 61 73 65 2d 65 76 65 6e 74 3e 20 4f 4e 20  abase-event> ON 
3320: 3c 76 69 65 77 2d 6e 61 6d 65 3e 0a 3c 74 72 69  <view-name>.<tri
3330: 67 67 65 72 2d 61 63 74 69 6f 6e 3e 0a 7d 0a 0a  gger-action>.}..
3340: 53 79 6e 74 61 78 20 7b 64 61 74 61 62 61 73 65  Syntax {database
3350: 2d 65 76 65 6e 74 7d 20 7b 0a 44 45 4c 45 54 45  -event} {.DELETE
3360: 20 7c 20 0a 49 4e 53 45 52 54 20 7c 20 0a 55 50   | .INSERT | .UP
3370: 44 41 54 45 20 7c 20 0a 55 50 44 41 54 45 20 4f  DATE | .UPDATE O
3380: 46 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 0a  F <column-list>.
3390: 7d 0a 0a 53 79 6e 74 61 78 20 7b 74 72 69 67 67  }..Syntax {trigg
33a0: 65 72 2d 61 63 74 69 6f 6e 7d 20 7b 0a 5b 20 46  er-action} {.[ F
33b0: 4f 52 20 45 41 43 48 20 52 4f 57 20 5d 20 5b 20  OR EACH ROW ] [ 
33c0: 57 48 45 4e 20 3c 65 78 70 72 65 73 73 69 6f 6e  WHEN <expression
33d0: 3e 20 5d 20 0a 42 45 47 49 4e 20 0a 20 20 3c 74  > ] .BEGIN .  <t
33e0: 72 69 67 67 65 72 2d 73 74 65 70 3e 20 3b 20 5b  rigger-step> ; [
33f0: 20 3c 74 72 69 67 67 65 72 2d 73 74 65 70 3e 20   <trigger-step> 
3400: 3b 20 5d 2a 0a 45 4e 44 0a 7d 0a 0a 53 79 6e 74  ; ]*.END.}..Synt
3410: 61 78 20 7b 74 72 69 67 67 65 72 2d 73 74 65 70  ax {trigger-step
3420: 7d 20 7b 0a 3c 75 70 64 61 74 65 2d 73 74 61 74  } {.<update-stat
3430: 65 6d 65 6e 74 3e 20 7c 20 3c 69 6e 73 65 72 74  ement> | <insert
3440: 2d 73 74 61 74 65 6d 65 6e 74 3e 20 7c 20 0a 3c  -statement> | .<
3450: 64 65 6c 65 74 65 2d 73 74 61 74 65 6d 65 6e 74  delete-statement
3460: 3e 20 7c 20 3c 73 65 6c 65 63 74 2d 73 74 61 74  > | <select-stat
3470: 65 6d 65 6e 74 3e 20 0a 7d 0a 0a 70 75 74 73 20  ement> .}..puts 
3480: 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20  {.<p>The CREATE 
3490: 54 52 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e  TRIGGER statemen
34a0: 74 20 69 73 20 75 73 65 64 20 74 6f 20 61 64 64  t is used to add
34b0: 20 74 72 69 67 67 65 72 73 20 74 6f 20 74 68 65   triggers to the
34c0: 20 0a 64 61 74 61 62 61 73 65 20 73 63 68 65 6d   .database schem
34d0: 61 2e 20 54 72 69 67 67 65 72 73 20 61 72 65 20  a. Triggers are 
34e0: 64 61 74 61 62 61 73 65 20 6f 70 65 72 61 74 69  database operati
34f0: 6f 6e 73 20 28 74 68 65 20 3c 69 3e 74 72 69 67  ons (the <i>trig
3500: 67 65 72 2d 61 63 74 69 6f 6e 3c 2f 69 3e 29 20  ger-action</i>) 
3510: 0a 74 68 61 74 20 61 72 65 20 61 75 74 6f 6d 61  .that are automa
3520: 74 69 63 61 6c 6c 79 20 70 65 72 66 6f 72 6d 65  tically performe
3530: 64 20 77 68 65 6e 20 61 20 73 70 65 63 69 66 69  d when a specifi
3540: 65 64 20 64 61 74 61 62 61 73 65 20 65 76 65 6e  ed database even
3550: 74 20 28 74 68 65 0a 3c 69 3e 64 61 74 61 62 61  t (the.<i>databa
3560: 73 65 2d 65 76 65 6e 74 3c 2f 69 3e 29 20 6f 63  se-event</i>) oc
3570: 63 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a 3c 70 3e  curs.  </p>..<p>
3580: 41 20 74 72 69 67 67 65 72 20 6d 61 79 20 62 65  A trigger may be
3590: 20 73 70 65 63 69 66 69 65 64 20 74 6f 20 66 69   specified to fi
35a0: 72 65 20 77 68 65 6e 65 76 65 72 20 61 20 44 45  re whenever a DE
35b0: 4c 45 54 45 2c 20 49 4e 53 45 52 54 20 6f 72 20  LETE, INSERT or 
35c0: 55 50 44 41 54 45 20 6f 66 20 61 0a 70 61 72 74  UPDATE of a.part
35d0: 69 63 75 6c 61 72 20 64 61 74 61 62 61 73 65 20  icular database 
35e0: 74 61 62 6c 65 20 6f 63 63 75 72 73 2c 20 6f 72  table occurs, or
35f0: 20 77 68 65 6e 65 76 65 72 20 61 6e 20 55 50 44   whenever an UPD
3600: 41 54 45 20 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f  ATE of one or mo
3610: 72 65 0a 73 70 65 63 69 66 69 65 64 20 63 6f 6c  re.specified col
3620: 75 6d 6e 73 20 6f 66 20 61 20 74 61 62 6c 65 20  umns of a table 
3630: 61 72 65 20 75 70 64 61 74 65 64 2e 3c 2f 70 3e  are updated.</p>
3640: 0a 0a 3c 70 3e 41 74 20 74 68 69 73 20 74 69 6d  ..<p>At this tim
3650: 65 20 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74  e SQLite support
3660: 73 20 6f 6e 6c 79 20 46 4f 52 20 45 41 43 48 20  s only FOR EACH 
3670: 52 4f 57 20 74 72 69 67 67 65 72 73 2c 20 6e 6f  ROW triggers, no
3680: 74 20 46 4f 52 20 45 41 43 48 0a 53 54 41 54 45  t FOR EACH.STATE
3690: 4d 45 4e 54 20 74 72 69 67 67 65 72 73 2e 20 48  MENT triggers. H
36a0: 65 6e 63 65 20 65 78 70 6c 69 63 69 74 6c 79 20  ence explicitly 
36b0: 73 70 65 63 69 66 79 69 6e 67 20 46 4f 52 20 45  specifying FOR E
36c0: 41 43 48 20 52 4f 57 20 69 73 20 6f 70 74 69 6f  ACH ROW is optio
36d0: 6e 61 6c 2e 20 20 46 4f 52 0a 45 41 43 48 20 52  nal.  FOR.EACH R
36e0: 4f 57 20 69 6d 70 6c 69 65 73 20 74 68 61 74 20  OW implies that 
36f0: 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
3700: 74 73 20 73 70 65 63 69 66 69 65 64 20 61 73 20  ts specified as 
3710: 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73  <i>trigger-steps
3720: 3c 2f 69 3e 20 0a 6d 61 79 20 62 65 20 65 78 65  </i> .may be exe
3730: 63 75 74 65 64 20 28 64 65 70 65 6e 64 69 6e 67  cuted (depending
3740: 20 6f 6e 20 74 68 65 20 57 48 45 4e 20 63 6c 61   on the WHEN cla
3750: 75 73 65 29 20 66 6f 72 20 65 61 63 68 20 64 61  use) for each da
3760: 74 61 62 61 73 65 20 72 6f 77 20 62 65 69 6e 67  tabase row being
3770: 0a 69 6e 73 65 72 74 65 64 2c 20 75 70 64 61 74  .inserted, updat
3780: 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20 62 79  ed or deleted by
3790: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 63   the statement c
37a0: 61 75 73 69 6e 67 20 74 68 65 20 74 72 69 67 67  ausing the trigg
37b0: 65 72 20 74 6f 20 66 69 72 65 2e 3c 2f 70 3e 0a  er to fire.</p>.
37c0: 0a 3c 70 3e 42 6f 74 68 20 74 68 65 20 57 48 45  .<p>Both the WHE
37d0: 4e 20 63 6c 61 75 73 65 20 61 6e 64 20 74 68 65  N clause and the
37e0: 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70   <i>trigger-step
37f0: 73 3c 2f 69 3e 20 6d 61 79 20 61 63 63 65 73 73  s</i> may access
3800: 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 0a 74 68   elements of .th
3810: 65 20 72 6f 77 20 62 65 69 6e 67 20 69 6e 73 65  e row being inse
3820: 72 74 65 64 2c 20 64 65 6c 65 74 65 64 20 6f 72  rted, deleted or
3830: 20 75 70 64 61 74 65 64 20 75 73 69 6e 67 20 72   updated using r
3840: 65 66 65 72 65 6e 63 65 73 20 6f 66 20 74 68 65  eferences of the
3850: 20 66 6f 72 6d 20 0a 22 4e 45 57 2e 3c 69 3e 63   form ."NEW.<i>c
3860: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 20  olumn-name</i>" 
3870: 61 6e 64 20 22 4f 4c 44 2e 3c 69 3e 63 6f 6c 75  and "OLD.<i>colu
3880: 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 2c 20 77 68  mn-name</i>", wh
3890: 65 72 65 0a 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61  ere.<i>column-na
38a0: 6d 65 3c 2f 69 3e 20 69 73 20 74 68 65 20 6e 61  me</i> is the na
38b0: 6d 65 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 66  me of a column f
38c0: 72 6f 6d 20 74 68 65 20 74 61 62 6c 65 20 74 68  rom the table th
38d0: 61 74 20 74 68 65 20 74 72 69 67 67 65 72 0a 69  at the trigger.i
38e0: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
38f0: 68 2e 20 4f 4c 44 20 61 6e 64 20 4e 45 57 20 72  h. OLD and NEW r
3900: 65 66 65 72 65 6e 63 65 73 20 6d 61 79 20 6f 6e  eferences may on
3910: 6c 79 20 62 65 20 75 73 65 64 20 69 6e 20 74 72  ly be used in tr
3920: 69 67 67 65 72 73 20 6f 6e 0a 3c 69 3e 74 72 69  iggers on.<i>tri
3930: 67 67 65 72 2d 65 76 65 6e 74 3c 2f 69 3e 73 20  gger-event</i>s 
3940: 66 6f 72 20 77 68 69 63 68 20 74 68 65 79 20 61  for which they a
3950: 72 65 20 72 65 6c 65 76 61 6e 74 2c 20 61 73 20  re relevant, as 
3960: 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 74  follows:</p>..<t
3970: 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65  able border=0 ce
3980: 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74  llpadding=10>.<t
3990: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
39a0: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
39b0: 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 49  " width=120><i>I
39c0: 4e 53 45 52 54 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c  NSERT</i></td>.<
39d0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
39e0: 4e 45 57 20 72 65 66 65 72 65 6e 63 65 73 20 61  NEW references a
39f0: 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f  re valid</td>.</
3a00: 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  tr>.<tr>.<td val
3a10: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
3a20: 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 31 32  "right" width=12
3a30: 30 3e 3c 69 3e 55 50 44 41 54 45 3c 2f 69 3e 3c  0><i>UPDATE</i><
3a40: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
3a50: 22 74 6f 70 22 3e 4e 45 57 20 61 6e 64 20 4f 4c  "top">NEW and OL
3a60: 44 20 72 65 66 65 72 65 6e 63 65 73 20 61 72 65  D references are
3a70: 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72   valid</td>.</tr
3a80: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  >.<tr>.<td valig
3a90: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
3aa0: 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e  ight" width=120>
3ab0: 3c 69 3e 44 45 4c 45 54 45 3c 2f 69 3e 3c 2f 74  <i>DELETE</i></t
3ac0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
3ad0: 6f 70 22 3e 4f 4c 44 20 72 65 66 65 72 65 6e 63  op">OLD referenc
3ae0: 65 73 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64  es are valid</td
3af0: 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e  >.</tr>.</table>
3b00: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 20 57  .</p>..<p>If a W
3b10: 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20 73 75  HEN clause is su
3b20: 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51 4c 20  pplied, the SQL 
3b30: 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65 63 69  statements speci
3b40: 66 69 65 64 20 61 73 20 3c 69 3e 74 72 69 67 67  fied as <i>trigg
3b50: 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 61 72 65  er-steps</i> are
3b60: 20 6f 6e 6c 79 20 65 78 65 63 75 74 65 64 20 66   only executed f
3b70: 6f 72 20 72 6f 77 73 20 66 6f 72 20 77 68 69 63  or rows for whic
3b80: 68 20 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73  h the WHEN claus
3b90: 65 20 69 73 20 74 72 75 65 2e 20 49 66 20 6e 6f  e is true. If no
3ba0: 20 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20   WHEN clause is 
3bb0: 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51  supplied, the SQ
3bc0: 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65  L statements are
3bd0: 20 65 78 65 63 75 74 65 64 20 66 6f 72 20 61 6c   executed for al
3be0: 6c 20 72 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e  l rows.</p>..<p>
3bf0: 54 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 69  The specified <i
3c00: 3e 74 72 69 67 67 65 72 2d 74 69 6d 65 3c 2f 69  >trigger-time</i
3c10: 3e 20 64 65 74 65 72 6d 69 6e 65 73 20 77 68 65  > determines whe
3c20: 6e 20 74 68 65 20 3c 69 3e 74 72 69 67 67 65 72  n the <i>trigger
3c30: 2d 73 74 65 70 73 3c 2f 69 3e 0a 77 69 6c 6c 20  -steps</i>.will 
3c40: 62 65 20 65 78 65 63 75 74 65 64 20 72 65 6c 61  be executed rela
3c50: 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 73 65  tive to the inse
3c60: 72 74 69 6f 6e 2c 20 6d 6f 64 69 66 69 63 61 74  rtion, modificat
3c70: 69 6f 6e 20 6f 72 20 72 65 6d 6f 76 61 6c 20 6f  ion or removal o
3c80: 66 20 74 68 65 0a 61 73 73 6f 63 69 61 74 65 64  f the.associated
3c90: 20 72 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6e   row.</p>..<p>An
3ca0: 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61   ON CONFLICT cla
3cb0: 75 73 65 20 6d 61 79 20 62 65 20 73 70 65 63 69  use may be speci
3cc0: 66 69 65 64 20 61 73 20 70 61 72 74 20 6f 66 20  fied as part of 
3cd0: 61 6e 20 55 50 44 41 54 45 20 6f 72 20 49 4e 53  an UPDATE or INS
3ce0: 45 52 54 0a 3c 69 3e 74 72 69 67 67 65 72 2d 73  ERT.<i>trigger-s
3cf0: 74 65 70 3c 2f 69 3e 2e 20 48 6f 77 65 76 65 72  tep</i>. However
3d00: 20 69 66 20 61 6e 20 4f 4e 20 43 4f 4e 46 4c 49   if an ON CONFLI
3d10: 43 54 20 63 6c 61 75 73 65 20 69 73 20 73 70 65  CT clause is spe
3d20: 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20 6f  cified as part o
3d30: 66 20 0a 74 68 65 20 73 74 61 74 65 6d 65 6e 74  f .the statement
3d40: 20 63 61 75 73 69 6e 67 20 74 68 65 20 74 72 69   causing the tri
3d50: 67 67 65 72 20 74 6f 20 66 69 72 65 2c 20 74 68  gger to fire, th
3d60: 65 6e 20 74 68 69 73 20 63 6f 6e 66 6c 69 63 74  en this conflict
3d70: 20 68 61 6e 64 6c 69 6e 67 0a 70 6f 6c 69 63 79   handling.policy
3d80: 20 69 73 20 75 73 65 64 20 69 6e 73 74 65 61 64   is used instead
3d90: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65  .</p>..<p>Trigge
3da0: 72 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63  rs are automatic
3db0: 61 6c 6c 79 20 64 72 6f 70 70 65 64 20 77 68 65  ally dropped whe
3dc0: 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  n the table that
3dd0: 20 74 68 65 79 20 61 72 65 20 0a 61 73 73 6f 63   they are .assoc
3de0: 69 61 74 65 64 20 77 69 74 68 20 69 73 20 64 72  iated with is dr
3df0: 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  opped.</p>..<p>T
3e00: 72 69 67 67 65 72 73 20 6d 61 79 20 62 65 20 63  riggers may be c
3e10: 72 65 61 74 65 64 20 6f 6e 20 76 69 65 77 73 2c  reated on views,
3e20: 20 61 73 20 77 65 6c 6c 20 61 73 20 6f 72 64 69   as well as ordi
3e30: 6e 61 72 79 20 74 61 62 6c 65 73 2c 20 62 79 20  nary tables, by 
3e40: 73 70 65 63 69 66 79 69 6e 67 0a 49 4e 53 54 45  specifying.INSTE
3e50: 41 44 20 4f 46 20 69 6e 20 74 68 65 20 43 52 45  AD OF in the CRE
3e60: 41 54 45 20 54 52 49 47 47 45 52 20 73 74 61 74  ATE TRIGGER stat
3e70: 65 6d 65 6e 74 2e 20 49 66 20 6f 6e 65 20 6f 72  ement. If one or
3e80: 20 6d 6f 72 65 20 4f 4e 20 49 4e 53 45 52 54 2c   more ON INSERT,
3e90: 20 4f 4e 20 44 45 4c 45 54 45 0a 6f 72 20 4f 4e   ON DELETE.or ON
3ea0: 20 55 50 44 41 54 45 20 74 72 69 67 67 65 72 73   UPDATE triggers
3eb0: 20 61 72 65 20 64 65 66 69 6e 65 64 20 6f 6e 20   are defined on 
3ec0: 61 20 76 69 65 77 2c 20 74 68 65 6e 20 69 74 20  a view, then it 
3ed0: 69 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 20  is not an error 
3ee0: 74 6f 20 65 78 65 63 75 74 65 0a 61 6e 20 49 4e  to execute.an IN
3ef0: 53 45 52 54 2c 20 44 45 4c 45 54 45 20 6f 72 20  SERT, DELETE or 
3f00: 55 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74  UPDATE statement
3f10: 20 6f 6e 20 74 68 65 20 76 69 65 77 2c 20 72 65   on the view, re
3f20: 73 70 65 63 74 69 76 65 6c 79 2e 20 54 68 65 72  spectively. Ther
3f30: 65 61 66 74 65 72 2c 0a 65 78 65 63 75 74 69 6e  eafter,.executin
3f40: 67 20 61 6e 20 49 4e 53 45 52 54 2c 20 44 45 4c  g an INSERT, DEL
3f50: 45 54 45 20 6f 72 20 55 50 44 41 54 45 20 6f 6e  ETE or UPDATE on
3f60: 20 74 68 65 20 76 69 65 77 20 63 61 75 73 65 73   the view causes
3f70: 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 0a   the associated.
3f80: 20 20 74 72 69 67 67 65 72 73 20 74 6f 20 66 69    triggers to fi
3f90: 72 65 2e 20 54 68 65 20 72 65 61 6c 20 74 61 62  re. The real tab
3fa0: 6c 65 73 20 75 6e 64 65 72 6c 79 69 6e 67 20 74  les underlying t
3fb0: 68 65 20 76 69 65 77 20 61 72 65 20 6e 6f 74 20  he view are not 
3fc0: 6d 6f 64 69 66 69 65 64 0a 20 20 28 65 78 63 65  modified.  (exce
3fd0: 70 74 20 70 6f 73 73 69 62 6c 79 20 65 78 70 6c  pt possibly expl
3fe0: 69 63 69 74 6c 79 2c 20 62 79 20 61 20 74 72 69  icitly, by a tri
3ff0: 67 67 65 72 20 70 72 6f 67 72 61 6d 29 2e 3c 2f  gger program).</
4000: 70 3e 0a 0a 3c 70 3e 3c 62 3e 45 78 61 6d 70 6c  p>..<p><b>Exampl
4010: 65 3a 3c 2f 62 3e 3c 2f 70 3e 0a 0a 3c 70 3e 41  e:</b></p>..<p>A
4020: 73 73 75 6d 69 6e 67 20 74 68 61 74 20 63 75 73  ssuming that cus
4030: 74 6f 6d 65 72 20 72 65 63 6f 72 64 73 20 61 72  tomer records ar
4040: 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20  e stored in the 
4050: 22 63 75 73 74 6f 6d 65 72 73 22 20 74 61 62 6c  "customers" tabl
4060: 65 2c 20 61 6e 64 0a 74 68 61 74 20 6f 72 64 65  e, and.that orde
4070: 72 20 72 65 63 6f 72 64 73 20 61 72 65 20 73 74  r records are st
4080: 6f 72 65 64 20 69 6e 20 74 68 65 20 22 6f 72 64  ored in the "ord
4090: 65 72 73 22 20 74 61 62 6c 65 2c 20 74 68 65 20  ers" table, the 
40a0: 66 6f 6c 6c 6f 77 69 6e 67 20 74 72 69 67 67 65  following trigge
40b0: 72 0a 65 6e 73 75 72 65 73 20 74 68 61 74 20 61  r.ensures that a
40c0: 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 20 6f 72  ll associated or
40d0: 64 65 72 73 20 61 72 65 20 72 65 64 69 72 65 63  ders are redirec
40e0: 74 65 64 20 77 68 65 6e 20 61 20 63 75 73 74 6f  ted when a custo
40f0: 6d 65 72 20 63 68 61 6e 67 65 73 0a 68 69 73 20  mer changes.his 
4100: 6f 72 20 68 65 72 20 61 64 64 72 65 73 73 3a 3c  or her address:<
4110: 2f 70 3e 0a 7d 0a 45 78 61 6d 70 6c 65 20 7b 0a  /p>.}.Example {.
4120: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20 75  CREATE TRIGGER u
4130: 70 64 61 74 65 5f 63 75 73 74 6f 6d 65 72 5f 61  pdate_customer_a
4140: 64 64 72 65 73 73 20 55 50 44 41 54 45 20 4f 46  ddress UPDATE OF
4150: 20 61 64 64 72 65 73 73 20 4f 4e 20 63 75 73 74   address ON cust
4160: 6f 6d 65 72 73 20 0a 20 20 42 45 47 49 4e 0a 20  omers .  BEGIN. 
4170: 20 20 20 55 50 44 41 54 45 20 6f 72 64 65 72 73     UPDATE orders
4180: 20 53 45 54 20 61 64 64 72 65 73 73 20 3d 20 6e   SET address = n
4190: 65 77 2e 61 64 64 72 65 73 73 20 57 48 45 52 45  ew.address WHERE
41a0: 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d 65 20 3d   customer_name =
41b0: 20 6f 6c 64 2e 6e 61 6d 65 3b 0a 20 20 45 4e 44   old.name;.  END
41c0: 3b 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e 57 69  ;.}.puts {.<p>Wi
41d0: 74 68 20 74 68 69 73 20 74 72 69 67 67 65 72 20  th this trigger 
41e0: 69 6e 73 74 61 6c 6c 65 64 2c 20 65 78 65 63 75  installed, execu
41f0: 74 69 6e 67 20 74 68 65 20 73 74 61 74 65 6d 65  ting the stateme
4200: 6e 74 3a 3c 2f 70 3e 0a 7d 0a 0a 45 78 61 6d 70  nt:</p>.}..Examp
4210: 6c 65 20 7b 0a 55 50 44 41 54 45 20 63 75 73 74  le {.UPDATE cust
4220: 6f 6d 65 72 73 20 53 45 54 20 61 64 64 72 65 73  omers SET addres
4230: 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e 27  s = '1 Main St.'
4240: 20 57 48 45 52 45 20 6e 61 6d 65 20 3d 20 27 4a   WHERE name = 'J
4250: 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 0a 70 75  ack Jones';.}.pu
4260: 74 73 20 7b 0a 3c 70 3e 63 61 75 73 65 73 20 74  ts {.<p>causes t
4270: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20  he following to 
4280: 62 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  be automatically
4290: 20 65 78 65 63 75 74 65 64 3a 3c 2f 70 3e 0a 7d   executed:</p>.}
42a0: 0a 45 78 61 6d 70 6c 65 20 7b 0a 55 50 44 41 54  .Example {.UPDAT
42b0: 45 20 6f 72 64 65 72 73 20 53 45 54 20 61 64 64  E orders SET add
42c0: 72 65 73 73 20 3d 20 27 31 20 4d 61 69 6e 20 53  ress = '1 Main S
42d0: 74 2e 27 20 57 48 45 52 45 20 63 75 73 74 6f 6d  t.' WHERE custom
42e0: 65 72 5f 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20  er_name = 'Jack 
42f0: 4a 6f 6e 65 73 27 3b 0a 7d 0a 0a 70 75 74 73 20  Jones';.}..puts 
4300: 7b 0a 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 63  {.<p>Note that c
4310: 75 72 72 65 6e 74 6c 79 2c 20 74 72 69 67 67 65  urrently, trigge
4320: 72 73 20 6d 61 79 20 62 65 68 61 76 65 20 6f 64  rs may behave od
4330: 64 6c 79 20 77 68 65 6e 20 63 72 65 61 74 65 64  dly when created
4340: 20 6f 6e 20 74 61 62 6c 65 73 0a 20 20 77 69 74   on tables.  wit
4350: 68 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  h INTEGER PRIMAR
4360: 59 20 4b 45 59 20 66 69 65 6c 64 73 2e 20 49 66  Y KEY fields. If
4370: 20 61 20 42 45 46 4f 52 45 20 74 72 69 67 67 65   a BEFORE trigge
4380: 72 20 70 72 6f 67 72 61 6d 20 6d 6f 64 69 66 69  r program modifi
4390: 65 73 20 74 68 65 20 0a 20 20 49 4e 54 45 47 45  es the .  INTEGE
43a0: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 66 69  R PRIMARY KEY fi
43b0: 65 6c 64 20 6f 66 20 61 20 72 6f 77 20 74 68 61  eld of a row tha
43c0: 74 20 77 69 6c 6c 20 62 65 20 73 75 62 73 65 71  t will be subseq
43d0: 75 65 6e 74 6c 79 20 75 70 64 61 74 65 64 20 62  uently updated b
43e0: 79 20 74 68 65 0a 20 20 73 74 61 74 65 6d 65 6e  y the.  statemen
43f0: 74 20 74 68 61 74 20 63 61 75 73 65 73 20 74 68  t that causes th
4400: 65 20 74 72 69 67 67 65 72 20 74 6f 20 66 69 72  e trigger to fir
4410: 65 2c 20 74 68 65 6e 20 74 68 65 20 75 70 64 61  e, then the upda
4420: 74 65 20 6d 61 79 20 6e 6f 74 20 6f 63 63 75 72  te may not occur
4430: 2e 20 0a 20 20 54 68 65 20 77 6f 72 6b 61 72 6f  . .  The workaro
4440: 75 6e 64 20 69 73 20 74 6f 20 64 65 63 6c 61 72  und is to declar
4450: 65 20 74 68 65 20 74 61 62 6c 65 20 77 69 74 68  e the table with
4460: 20 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63   a PRIMARY KEY c
4470: 6f 6c 75 6d 6e 20 69 6e 73 74 65 61 64 0a 20 20  olumn instead.  
4480: 6f 66 20 61 6e 20 49 4e 54 45 47 45 52 20 50 52  of an INTEGER PR
4490: 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e  IMARY KEY column
44a0: 2e 3c 2f 70 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a  .</p>.}..puts {.
44b0: 3c 70 3e 41 20 73 70 65 63 69 61 6c 20 53 51 4c  <p>A special SQL
44c0: 20 66 75 6e 63 74 69 6f 6e 20 52 41 49 53 45 28   function RAISE(
44d0: 29 20 6d 61 79 20 62 65 20 75 73 65 64 20 77 69  ) may be used wi
44e0: 74 68 69 6e 20 61 20 74 72 69 67 67 65 72 2d 70  thin a trigger-p
44f0: 72 6f 67 72 61 6d 2c 20 77 69 74 68 20 74 68 65  rogram, with the
4500: 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74 61   following synta
4510: 78 3c 2f 70 3e 20 0a 7d 0a 53 79 6e 74 61 78 20  x</p> .}.Syntax 
4520: 7b 72 61 69 73 65 2d 66 75 6e 63 74 69 6f 6e 7d  {raise-function}
4530: 20 7b 0a 52 41 49 53 45 20 28 20 41 42 4f 52 54   {.RAISE ( ABORT
4540: 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73 61 67 65  , <error-message
4550: 3e 20 29 20 7c 20 0a 52 41 49 53 45 20 28 20 46  > ) | .RAISE ( F
4560: 41 49 4c 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73  AIL, <error-mess
4570: 61 67 65 3e 20 29 20 7c 20 0a 52 41 49 53 45 20  age> ) | .RAISE 
4580: 28 20 52 4f 4c 4c 42 41 43 4b 2c 20 3c 65 72 72  ( ROLLBACK, <err
4590: 6f 72 2d 6d 65 73 73 61 67 65 3e 20 29 20 7c 20  or-message> ) | 
45a0: 0a 52 41 49 53 45 20 28 20 49 47 4e 4f 52 45 20  .RAISE ( IGNORE 
45b0: 29 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e 57 68  ).}.puts {.<p>Wh
45c0: 65 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 69  en one of the fi
45d0: 72 73 74 20 74 68 72 65 65 20 66 6f 72 6d 73 20  rst three forms 
45e0: 69 73 20 63 61 6c 6c 65 64 20 64 75 72 69 6e 67  is called during
45f0: 20 74 72 69 67 67 65 72 2d 70 72 6f 67 72 61 6d   trigger-program
4600: 20 65 78 65 63 75 74 69 6f 6e 2c 20 74 68 65 20   execution, the 
4610: 73 70 65 63 69 66 69 65 64 20 4f 4e 20 43 4f 4e  specified ON CON
4620: 46 4c 49 43 54 20 70 72 6f 63 65 73 73 69 6e 67  FLICT processing
4630: 20 69 73 20 70 65 72 66 6f 72 6d 65 64 20 28 65   is performed (e
4640: 69 74 68 65 72 20 41 42 4f 52 54 2c 20 46 41 49  ither ABORT, FAI
4650: 4c 20 6f 72 20 0a 20 52 4f 4c 4c 42 41 43 4b 29  L or . ROLLBACK)
4660: 20 61 6e 64 20 74 68 65 20 63 75 72 72 65 6e 74   and the current
4670: 20 71 75 65 72 79 20 74 65 72 6d 69 6e 61 74 65   query terminate
4680: 73 2e 20 41 6e 20 65 72 72 6f 72 20 63 6f 64 65  s. An error code
4690: 20 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54   of SQLITE_CONST
46a0: 52 41 49 4e 54 20 69 73 20 72 65 74 75 72 6e 65  RAINT is returne
46b0: 64 20 74 6f 20 74 68 65 20 75 73 65 72 2c 20 61  d to the user, a
46c0: 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 73 70  long with the sp
46d0: 65 63 69 66 69 65 64 20 65 72 72 6f 72 20 6d 65  ecified error me
46e0: 73 73 61 67 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57  ssage.</p>..<p>W
46f0: 68 65 6e 20 52 41 49 53 45 28 49 47 4e 4f 52 45  hen RAISE(IGNORE
4700: 29 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65  ) is called, the
4710: 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20 74 68   remainder of th
4720: 65 20 63 75 72 72 65 6e 74 20 74 72 69 67 67 65  e current trigge
4730: 72 20 70 72 6f 67 72 61 6d 2c 0a 74 68 65 20 73  r program,.the s
4740: 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63 61  tatement that ca
4750: 75 73 65 64 20 74 68 65 20 74 72 69 67 67 65 72  used the trigger
4760: 20 70 72 6f 67 72 61 6d 20 74 6f 20 65 78 65 63   program to exec
4770: 75 74 65 20 61 6e 64 20 61 6e 79 20 73 75 62 73  ute and any subs
4780: 65 71 75 65 6e 74 0a 20 20 20 20 74 72 69 67 67  equent.    trigg
4790: 65 72 20 70 72 6f 67 72 61 6d 73 20 74 68 61 74  er programs that
47a0: 20 77 6f 75 6c 64 20 6f 66 20 62 65 65 6e 20 65   would of been e
47b0: 78 65 63 75 74 65 64 20 61 72 65 20 61 62 61 6e  xecuted are aban
47c0: 64 6f 6e 65 64 2e 20 4e 6f 20 64 61 74 61 62 61  doned. No databa
47d0: 73 65 0a 20 20 20 20 63 68 61 6e 67 65 73 20 61  se.    changes a
47e0: 72 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20  re rolled back. 
47f0: 20 49 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e   If the statemen
4800: 74 20 74 68 61 74 20 63 61 75 73 65 64 20 74 68  t that caused th
4810: 65 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  e trigger progra
4820: 6d 0a 20 20 20 20 74 6f 20 65 78 65 63 75 74 65  m.    to execute
4830: 20 69 73 20 69 74 73 65 6c 66 20 70 61 72 74 20   is itself part 
4840: 6f 66 20 61 20 74 72 69 67 67 65 72 20 70 72 6f  of a trigger pro
4850: 67 72 61 6d 2c 20 74 68 65 6e 20 74 68 61 74 20  gram, then that 
4860: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 0a  trigger program.
4870: 20 20 20 20 72 65 73 75 6d 65 73 20 65 78 65 63      resumes exec
4880: 75 74 69 6f 6e 20 61 74 20 74 68 65 20 62 65 67  ution at the beg
4890: 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 6e 65  inning of the ne
48a0: 78 74 20 73 74 65 70 2e 0a 3c 2f 70 3e 0a 7d 0a  xt step..</p>.}.
48b0: 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45  .Section {CREATE
48c0: 20 56 49 45 57 7d 20 7b 63 72 65 61 74 65 76 69   VIEW} {createvi
48d0: 65 77 7d 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ew}..Syntax {sql
48e0: 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43 52 45 41  -command} {.CREA
48f0: 54 45 20 56 49 45 57 20 3c 76 69 65 77 2d 6e 61  TE VIEW <view-na
4900: 6d 65 3e 20 41 53 20 3c 73 65 6c 65 63 74 2d 73  me> AS <select-s
4910: 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74  tatement>.}..put
4920: 73 20 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54  s {.<p>The CREAT
4930: 45 20 56 49 45 57 20 63 6f 6d 6d 61 6e 64 20 61  E VIEW command a
4940: 73 73 69 67 6e 73 20 61 20 6e 61 6d 65 20 74 6f  ssigns a name to
4950: 20 61 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20   a pre-packaged 
4960: 53 45 4c 45 43 54 0a 73 74 61 74 65 6d 65 6e 74  SELECT.statement
4970: 2e 20 20 4f 6e 63 65 20 74 68 65 20 76 69 65 77  .  Once the view
4980: 20 69 73 20 63 72 65 61 74 65 64 2c 20 69 74 20   is created, it 
4990: 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 74  can be used in t
49a0: 68 65 20 46 52 4f 4d 20 63 6c 61 75 73 65 0a 6f  he FROM clause.o
49b0: 66 20 61 6e 6f 74 68 65 72 20 53 45 4c 45 43 54  f another SELECT
49c0: 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 61 20 74   in place of a t
49d0: 61 62 6c 65 20 6e 61 6d 65 2e 0a 3c 2f 70 3e 0a  able name..</p>.
49e0: 0a 3c 70 3e 59 6f 75 20 63 61 6e 6e 6f 74 20 43  .<p>You cannot C
49f0: 4f 50 59 2c 20 49 4e 53 45 52 54 20 6f 72 20 55  OPY, INSERT or U
4a00: 50 44 41 54 45 20 61 20 76 69 65 77 2e 20 20 56  PDATE a view.  V
4a10: 69 65 77 73 20 61 72 65 20 72 65 61 64 2d 6f 6e  iews are read-on
4a20: 6c 79 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69  ly.</p>.}..Secti
4a30: 6f 6e 20 44 45 4c 45 54 45 20 64 65 6c 65 74 65  on DELETE delete
4a40: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
4a50: 61 74 65 6d 65 6e 74 7d 20 7b 0a 44 45 4c 45 54  atement} {.DELET
4a60: 45 20 46 52 4f 4d 20 3c 74 61 62 6c 65 2d 6e 61  E FROM <table-na
4a70: 6d 65 3e 20 5b 57 48 45 52 45 20 3c 65 78 70 72  me> [WHERE <expr
4a80: 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  >].}..puts {.<p>
4a90: 54 68 65 20 44 45 4c 45 54 45 20 63 6f 6d 6d 61  The DELETE comma
4aa0: 6e 64 20 69 73 20 75 73 65 64 20 74 6f 20 72 65  nd is used to re
4ab0: 6d 6f 76 65 20 72 65 63 6f 72 64 73 20 66 72 6f  move records fro
4ac0: 6d 20 61 20 74 61 62 6c 65 2e 0a 54 68 65 20 63  m a table..The c
4ad0: 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74 73 20  ommand consists 
4ae0: 6f 66 20 74 68 65 20 22 44 45 4c 45 54 45 20 46  of the "DELETE F
4af0: 52 4f 4d 22 20 6b 65 79 77 6f 72 64 73 20 66 6f  ROM" keywords fo
4b00: 6c 6c 6f 77 65 64 20 62 79 0a 74 68 65 20 6e 61  llowed by.the na
4b10: 6d 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  me of the table 
4b20: 66 72 6f 6d 20 77 68 69 63 68 20 72 65 63 6f 72  from which recor
4b30: 64 73 20 61 72 65 20 74 6f 20 62 65 20 72 65 6d  ds are to be rem
4b40: 6f 76 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 57  oved..</p>..<p>W
4b50: 69 74 68 6f 75 74 20 61 20 57 48 45 52 45 20 63  ithout a WHERE c
4b60: 6c 61 75 73 65 2c 20 61 6c 6c 20 72 6f 77 73 20  lause, all rows 
4b70: 6f 66 20 74 68 65 20 74 61 62 6c 65 20 61 72 65  of the table are
4b80: 20 72 65 6d 6f 76 65 64 2e 0a 49 66 20 61 20 57   removed..If a W
4b90: 48 45 52 45 20 63 6c 61 75 73 65 20 69 73 20 73  HERE clause is s
4ba0: 75 70 70 6c 69 65 64 2c 20 74 68 65 6e 20 6f 6e  upplied, then on
4bb0: 6c 79 20 74 68 6f 73 65 20 72 6f 77 73 20 74 68  ly those rows th
4bc0: 61 74 20 6d 61 74 63 68 0a 74 68 65 20 65 78 70  at match.the exp
4bd0: 72 65 73 73 69 6f 6e 20 61 72 65 20 72 65 6d 6f  ression are remo
4be0: 76 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63  ved.</p>.}...Sec
4bf0: 74 69 6f 6e 20 7b 44 52 4f 50 20 49 4e 44 45 58  tion {DROP INDEX
4c00: 7d 20 64 72 6f 70 69 6e 64 65 78 0a 0a 53 79 6e  } dropindex..Syn
4c10: 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64  tax {sql-command
4c20: 7d 20 7b 0a 44 52 4f 50 20 49 4e 44 45 58 20 3c  } {.DROP INDEX <
4c30: 69 6e 64 65 78 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70  index-name>.}..p
4c40: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 52 4f  uts {.<p>The DRO
4c50: 50 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e  P INDEX statemen
4c60: 74 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68  t consists of th
4c70: 65 20 6b 65 79 77 6f 72 64 73 20 22 44 52 4f 50  e keywords "DROP
4c80: 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f 77 65 64   INDEX" followed
4c90: 0a 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  .by the name of 
4ca0: 74 68 65 20 69 6e 64 65 78 2e 20 20 54 68 65 20  the index.  The 
4cb0: 69 6e 64 65 78 20 6e 61 6d 65 64 20 69 73 20 63  index named is c
4cc0: 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65  ompletely remove
4cd0: 64 20 66 72 6f 6d 0a 74 68 65 20 64 69 73 6b 2e  d from.the disk.
4ce0: 20 20 54 68 65 20 6f 6e 6c 79 20 77 61 79 20 74    The only way t
4cf0: 6f 20 72 65 63 6f 76 65 72 20 74 68 65 20 69 6e  o recover the in
4d00: 64 65 78 20 69 73 20 74 6f 20 72 65 65 6e 74 65  dex is to reente
4d10: 72 20 74 68 65 0a 61 70 70 72 6f 70 72 69 61 74  r the.appropriat
4d20: 65 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 63  e CREATE INDEX c
4d30: 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d 0a 0a 53  ommand.</p>.}..S
4d40: 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54 41 42  ection {DROP TAB
4d50: 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65 0a 0a 53  LE} droptable..S
4d60: 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61  yntax {sql-comma
4d70: 6e 64 7d 20 7b 0a 44 52 4f 50 20 54 41 42 4c 45  nd} {.DROP TABLE
4d80: 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 7d 0a   <table-name>.}.
4d90: 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44  .puts {.<p>The D
4da0: 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ROP TABLE statem
4db0: 65 6e 74 20 63 6f 6e 73 69 73 74 73 20 6f 66 20  ent consists of 
4dc0: 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22 44 52  the keywords "DR
4dd0: 4f 50 20 54 41 42 4c 45 22 20 66 6f 6c 6c 6f 77  OP TABLE" follow
4de0: 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65 20 6f  ed.by the name o
4df0: 66 20 74 68 65 20 74 61 62 6c 65 2e 20 20 54 68  f the table.  Th
4e00: 65 20 74 61 62 6c 65 20 6e 61 6d 65 64 20 69 73  e table named is
4e10: 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f   completely remo
4e20: 76 65 64 20 66 72 6f 6d 0a 74 68 65 20 64 69 73  ved from.the dis
4e30: 6b 2e 20 20 54 68 65 20 74 61 62 6c 65 20 63 61  k.  The table ca
4e40: 6e 20 6e 6f 74 20 62 65 20 72 65 63 6f 76 65 72  n not be recover
4e50: 65 64 2e 20 20 41 6c 6c 20 69 6e 64 69 63 65 73  ed.  All indices
4e60: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4e70: 0a 74 68 65 20 74 61 62 6c 65 20 61 72 65 20 61  .the table are a
4e80: 6c 73 6f 20 64 65 6c 65 74 65 64 2e 3c 2f 70 3e  lso deleted.</p>
4e90: 7d 0a 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50  }..Section {DROP
4ea0: 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70 74 72   TRIGGER} droptr
4eb0: 69 67 67 65 72 0a 53 79 6e 74 61 78 20 7b 73 71  igger.Syntax {sq
4ec0: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 44  l-statement} {.D
4ed0: 52 4f 50 20 54 52 49 47 47 45 52 20 3c 74 72 69  ROP TRIGGER <tri
4ee0: 67 67 65 72 2d 6e 61 6d 65 3e 0a 7d 0a 70 75 74  gger-name>.}.put
4ef0: 73 20 7b 20 0a 20 20 3c 70 3e 55 73 65 64 20 74  s { .  <p>Used t
4f00: 6f 20 64 72 6f 70 20 61 20 74 72 69 67 67 65 72  o drop a trigger
4f10: 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61   from the databa
4f20: 73 65 20 73 63 68 65 6d 61 2e 20 4e 6f 74 65 20  se schema. Note 
4f30: 74 68 61 74 20 74 72 69 67 67 65 72 73 0a 20 20  that triggers.  
4f40: 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  are automaticall
4f50: 79 20 64 72 6f 70 70 65 64 20 77 68 65 6e 20 74  y dropped when t
4f60: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 74 61  he associated ta
4f70: 62 6c 65 20 69 73 20 64 72 6f 70 70 65 64 2e 3c  ble is dropped.<
4f80: 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 7b  /p>.}..Section {
4f90: 44 52 4f 50 20 56 49 45 57 7d 20 64 72 6f 70 76  DROP VIEW} dropv
4fa0: 69 65 77 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  iew..Syntax {sql
4fb0: 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50  -command} {.DROP
4fc0: 20 56 49 45 57 20 3c 76 69 65 77 2d 6e 61 6d 65   VIEW <view-name
4fd0: 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  >.}..puts {.<p>T
4fe0: 68 65 20 44 52 4f 50 20 56 49 45 57 20 73 74 61  he DROP VIEW sta
4ff0: 74 65 6d 65 6e 74 20 63 6f 6e 73 69 73 74 73 20  tement consists 
5000: 6f 66 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20  of the keywords 
5010: 22 44 52 4f 50 20 54 41 42 4c 45 22 20 66 6f 6c  "DROP TABLE" fol
5020: 6c 6f 77 65 64 0a 62 79 20 74 68 65 20 6e 61 6d  lowed.by the nam
5030: 65 20 6f 66 20 74 68 65 20 76 69 65 77 2e 20 20  e of the view.  
5040: 54 68 65 20 76 69 65 77 20 6e 61 6d 65 64 20 69  The view named i
5050: 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74  s removed from t
5060: 68 65 20 64 61 74 61 62 61 73 65 2e 0a 42 75 74  he database..But
5070: 20 6e 6f 20 61 63 74 75 61 6c 20 64 61 74 61 20   no actual data 
5080: 69 73 20 6d 6f 64 69 66 69 65 64 2e 3c 2f 70 3e  is modified.</p>
5090: 7d 0a 0a 53 65 63 74 69 6f 6e 20 45 58 50 4c 41  }..Section EXPLA
50a0: 49 4e 20 65 78 70 6c 61 69 6e 0a 0a 53 79 6e 74  IN explain..Synt
50b0: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
50c0: 74 7d 20 7b 0a 45 58 50 4c 41 49 4e 20 3c 73 71  t} {.EXPLAIN <sq
50d0: 6c 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a  l-statement>.}..
50e0: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 45 58  puts {.<p>The EX
50f0: 50 4c 41 49 4e 20 63 6f 6d 6d 61 6e 64 20 6d 6f  PLAIN command mo
5100: 64 69 66 69 65 72 20 69 73 20 61 20 6e 6f 6e 2d  difier is a non-
5110: 73 74 61 6e 64 61 72 64 20 65 78 74 65 6e 73 69  standard extensi
5120: 6f 6e 2e 20 20 54 68 65 0a 69 64 65 61 20 63 6f  on.  The.idea co
5130: 6d 65 73 20 66 72 6f 6d 20 61 20 73 69 6d 69 6c  mes from a simil
5140: 61 72 20 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64  ar command found
5150: 20 69 6e 20 50 6f 73 74 67 72 65 53 51 4c 2c 20   in PostgreSQL, 
5160: 62 75 74 20 74 68 65 20 6f 70 65 72 61 74 69 6f  but the operatio
5170: 6e 0a 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20  n.is completely 
5180: 64 69 66 66 65 72 65 6e 74 2e 3c 2f 70 3e 0a 0a  different.</p>..
5190: 3c 70 3e 49 66 20 74 68 65 20 45 58 50 4c 41 49  <p>If the EXPLAI
51a0: 4e 20 6b 65 79 77 6f 72 64 20 61 70 70 65 61 72  N keyword appear
51b0: 73 20 62 65 66 6f 72 65 20 61 6e 79 20 6f 74 68  s before any oth
51c0: 65 72 20 53 51 4c 69 74 65 20 53 51 4c 20 63 6f  er SQLite SQL co
51d0: 6d 6d 61 6e 64 0a 74 68 65 6e 20 69 6e 73 74 65  mmand.then inste
51e0: 61 64 20 6f 66 20 61 63 74 75 61 6c 6c 79 20 65  ad of actually e
51f0: 78 65 63 75 74 69 6e 67 20 74 68 65 20 63 6f 6d  xecuting the com
5200: 6d 61 6e 64 2c 20 74 68 65 20 53 51 4c 69 74 65  mand, the SQLite
5210: 20 6c 69 62 72 61 72 79 20 77 69 6c 6c 0a 72 65   library will.re
5220: 70 6f 72 74 20 62 61 63 6b 20 74 68 65 20 73 65  port back the se
5230: 71 75 65 6e 63 65 20 6f 66 20 76 69 72 74 75 61  quence of virtua
5240: 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72 75  l machine instru
5250: 63 74 69 6f 6e 73 20 69 74 20 77 6f 75 6c 64 20  ctions it would 
5260: 68 61 76 65 0a 75 73 65 64 20 74 6f 20 65 78 65  have.used to exe
5270: 63 75 74 65 20 74 68 65 20 63 6f 6d 6d 61 6e 64  cute the command
5280: 20 68 61 64 20 74 68 65 20 45 58 50 4c 41 49 4e   had the EXPLAIN
5290: 20 6b 65 79 77 6f 72 64 20 6e 6f 74 20 62 65 65   keyword not bee
52a0: 6e 20 70 72 65 73 65 6e 74 2e 0a 46 6f 72 20 61  n present..For a
52b0: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
52c0: 61 74 69 6f 6e 20 61 62 6f 75 74 20 76 69 72 74  ation about virt
52d0: 75 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74  ual machine inst
52e0: 72 75 63 74 69 6f 6e 73 20 73 65 65 0a 74 68 65  ructions see.the
52f0: 20 3c 61 20 68 72 65 66 3d 22 61 72 63 68 2e 68   <a href="arch.h
5300: 74 6d 6c 22 3e 61 72 63 68 69 74 65 63 74 75 72  tml">architectur
5310: 65 20 64 65 73 63 72 69 70 74 69 6f 6e 3c 2f 61  e description</a
5320: 3e 20 6f 72 20 74 68 65 20 64 6f 63 75 6d 65 6e  > or the documen
5330: 74 61 74 69 6f 6e 0a 6f 6e 20 3c 61 20 68 72 65  tation.on <a hre
5340: 66 3d 22 6f 70 63 6f 64 65 2e 68 74 6d 6c 22 3e  f="opcode.html">
5350: 61 76 61 69 6c 61 62 6c 65 20 6f 70 63 6f 64 65  available opcode
5360: 73 3c 2f 61 3e 20 66 6f 72 20 74 68 65 20 76 69  s</a> for the vi
5370: 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 2e 3c 2f  rtual machine.</
5380: 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 65 78  p>.}..Section ex
5390: 70 72 65 73 73 69 6f 6e 20 65 78 70 72 0a 0a 53  pression expr..S
53a0: 79 6e 74 61 78 20 7b 65 78 70 72 7d 20 7b 0a 3c  yntax {expr} {.<
53b0: 65 78 70 72 3e 20 3c 62 69 6e 61 72 79 2d 6f 70  expr> <binary-op
53c0: 3e 20 3c 65 78 70 72 3e 20 7c 0a 3c 65 78 70 72  > <expr> |.<expr
53d0: 3e 20 3c 6c 69 6b 65 2d 6f 70 3e 20 3c 65 78 70  > <like-op> <exp
53e0: 72 3e 20 7c 0a 3c 75 6e 61 72 79 2d 6f 70 3e 20  r> |.<unary-op> 
53f0: 3c 65 78 70 72 3e 20 7c 0a 28 20 3c 65 78 70 72  <expr> |.( <expr
5400: 3e 20 29 20 7c 0a 3c 63 6f 6c 75 6d 6e 2d 6e 61  > ) |.<column-na
5410: 6d 65 3e 20 7c 0a 3c 74 61 62 6c 65 2d 6e 61 6d  me> |.<table-nam
5420: 65 3e 20 2e 20 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d  e> . <column-nam
5430: 65 3e 20 7c 0a 3c 6c 69 74 65 72 61 6c 2d 76 61  e> |.<literal-va
5440: 6c 75 65 3e 20 7c 0a 3c 66 75 6e 63 74 69 6f 6e  lue> |.<function
5450: 2d 6e 61 6d 65 3e 20 28 20 3c 65 78 70 72 2d 6c  -name> ( <expr-l
5460: 69 73 74 3e 20 7c 20 53 54 41 52 20 29 20 7c 0a  ist> | STAR ) |.
5470: 3c 65 78 70 72 3e 20 49 53 4e 55 4c 4c 20 7c 0a  <expr> ISNULL |.
5480: 3c 65 78 70 72 3e 20 4e 4f 54 4e 55 4c 4c 20 7c  <expr> NOTNULL |
5490: 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 42 45  .<expr> [NOT] BE
54a0: 54 57 45 45 4e 20 3c 65 78 70 72 3e 20 41 4e 44  TWEEN <expr> AND
54b0: 20 3c 65 78 70 72 3e 20 7c 0a 3c 65 78 70 72 3e   <expr> |.<expr>
54c0: 20 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c 76 61 6c   [NOT] IN ( <val
54d0: 75 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 3c 65 78  ue-list> ) |.<ex
54e0: 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c  pr> [NOT] IN ( <
54f0: 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74  select-statement
5500: 3e 20 29 20 7c 0a 28 20 3c 73 65 6c 65 63 74 2d  > ) |.( <select-
5510: 73 74 61 74 65 6d 65 6e 74 3e 20 29 20 7c 0a 43  statement> ) |.C
5520: 41 53 45 20 5b 3c 65 78 70 72 3e 5d 20 28 20 57  ASE [<expr>] ( W
5530: 48 45 4e 20 3c 65 78 70 72 3e 20 54 48 45 4e 20  HEN <expr> THEN 
5540: 3c 65 78 70 72 3e 20 29 2b 20 5b 45 4c 53 45 20  <expr> )+ [ELSE 
5550: 3c 65 78 70 72 3e 5d 20 45 4e 44 0a 7d 20 7b 6c  <expr>] END.} {l
5560: 69 6b 65 2d 6f 70 7d 20 7b 0a 4c 49 4b 45 20 7c  ike-op} {.LIKE |
5570: 20 47 4c 4f 42 20 7c 20 4e 4f 54 20 4c 49 4b 45   GLOB | NOT LIKE
5580: 20 7c 20 4e 4f 54 20 47 4c 4f 42 0a 7d 0a 0a 70   | NOT GLOB.}..p
5590: 75 74 73 20 7b 0a 3c 70 3e 54 68 69 73 20 73 65  uts {.<p>This se
55a0: 63 74 69 6f 6e 20 69 73 20 64 69 66 66 65 72 65  ction is differe
55b0: 6e 74 20 66 72 6f 6d 20 74 68 65 20 6f 74 68 65  nt from the othe
55c0: 72 73 2e 20 20 4d 6f 73 74 20 6f 74 68 65 72 20  rs.  Most other 
55d0: 73 65 63 74 69 6f 6e 73 20 6f 66 0a 74 68 69 73  sections of.this
55e0: 20 64 6f 63 75 6d 65 6e 74 20 74 61 6c 6b 73 20   document talks 
55f0: 61 62 6f 75 74 20 61 20 70 61 72 74 69 63 75 6c  about a particul
5600: 61 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20  ar SQL command. 
5610: 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 64 6f   This section do
5620: 65 73 0a 6e 6f 74 20 74 61 6c 6b 20 61 62 6f 75  es.not talk abou
5630: 74 20 61 20 73 74 61 6e 64 61 6c 6f 6e 65 20 63  t a standalone c
5640: 6f 6d 6d 61 6e 64 20 62 75 74 20 61 62 6f 75 74  ommand but about
5650: 20 22 65 78 70 72 65 73 73 69 6f 6e 73 22 20 77   "expressions" w
5660: 68 69 63 68 20 61 72 65 20 0a 73 75 62 63 6f 6d  hich are .subcom
5670: 70 6f 6e 65 6e 74 20 6f 66 20 6d 6f 73 74 20 6f  ponent of most o
5680: 74 68 65 72 20 63 6f 6d 6d 61 6e 64 73 2e 3c 2f  ther commands.</
5690: 70 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 75 6e  p>..<p>SQLite un
56a0: 64 65 72 73 74 61 6e 64 73 20 74 68 65 20 66 6f  derstands the fo
56b0: 6c 6c 6f 77 69 6e 67 20 62 69 6e 61 72 79 20 6f  llowing binary o
56c0: 70 65 72 61 74 6f 72 73 2c 20 69 6e 20 6f 72 64  perators, in ord
56d0: 65 72 20 66 72 6f 6d 0a 68 69 67 68 65 73 74 20  er from.highest 
56e0: 74 6f 20 6c 6f 77 65 73 74 20 70 72 65 63 65 64  to lowest preced
56f0: 65 6e 63 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  ence:</p>..<bloc
5700: 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 3c 66 6f  kquote><pre>.<fo
5710: 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66  nt color="#2c2cf
5720: 30 22 3e 3c 62 69 67 3e 7c 7c 0a 2a 20 20 20 20  0"><big>||.*    
5730: 2f 20 20 20 20 25 0a 2b 20 20 20 20 2d 0a 26 6c  /    %.+    -.&l
5740: 74 3b 26 6c 74 3b 20 20 20 26 67 74 3b 26 67 74  t;&lt;   &gt;&gt
5750: 3b 20 20 20 26 61 6d 70 3b 20 20 20 20 7c 0a 26  ;   &amp;    |.&
5760: 6c 74 3b 20 20 20 20 26 6c 74 3b 3d 20 20 20 26  lt;    &lt;=   &
5770: 67 74 3b 20 20 20 20 26 67 74 3b 3d 0a 3d 20 20  gt;    &gt;=.=  
5780: 20 20 3d 3d 20 20 20 21 3d 20 20 20 26 6c 74 3b    ==   !=   &lt;
5790: 26 67 74 3b 20 20 20 3c 2f 62 69 67 3e 49 4e 0a  &gt;   </big>IN.
57a0: 41 4e 44 20 20 20 0a 4f 52 3c 2f 66 6f 6e 74 3e  AND   .OR</font>
57b0: 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75  .</pre></blockqu
57c0: 6f 74 65 3e 0a 0a 3c 70 3e 53 75 70 70 6f 72 74  ote>..<p>Support
57d0: 65 64 20 75 6e 61 72 79 20 6f 70 65 72 61 74 65  ed unary operate
57e0: 72 73 20 61 72 65 20 74 68 65 73 65 3a 3c 2f 70  rs are these:</p
57f0: 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c  >..<blockquote><
5800: 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72  pre>.<font color
5810: 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67 3e  ="#2c2cf0"><big>
5820: 2d 20 20 20 20 2b 20 20 20 20 21 20 20 20 20 7e  -    +    !    ~
5830: 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e 0a 3c 2f  </big></font>.</
5840: 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  pre></blockquote
5850: 3e 0a 0a 3c 70 3e 41 6e 79 20 53 51 4c 69 74 65  >..<p>Any SQLite
5860: 20 76 61 6c 75 65 20 63 61 6e 20 62 65 20 75 73   value can be us
5870: 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 61 6e  ed as part of an
5880: 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 0a 46   expression.  .F
5890: 6f 72 20 61 72 69 74 68 6d 65 74 69 63 20 6f 70  or arithmetic op
58a0: 65 72 61 74 69 6f 6e 73 2c 20 69 6e 74 65 67 65  erations, intege
58b0: 72 73 20 61 72 65 20 74 72 65 61 74 65 64 20 61  rs are treated a
58c0: 73 20 69 6e 74 65 67 65 72 73 2e 0a 53 74 72 69  s integers..Stri
58d0: 6e 67 73 20 61 72 65 20 66 69 72 73 74 20 63 6f  ngs are first co
58e0: 6e 76 65 72 74 65 64 20 74 6f 20 72 65 61 6c 20  nverted to real 
58f0: 6e 75 6d 62 65 72 73 20 75 73 69 6e 67 20 3c 62  numbers using <b
5900: 3e 61 74 6f 66 28 29 3c 2f 62 3e 2e 0a 46 6f 72  >atof()</b>..For
5910: 20 63 6f 6d 70 61 72 69 73 6f 6e 20 6f 70 65 72   comparison oper
5920: 61 74 6f 72 73 2c 20 6e 75 6d 62 65 72 73 20 63  ators, numbers c
5930: 6f 6d 70 61 72 65 20 61 73 20 6e 75 6d 62 65 72  ompare as number
5940: 73 20 61 6e 64 20 73 74 72 69 6e 67 73 0a 63 6f  s and strings.co
5950: 6d 70 61 72 65 20 61 73 20 73 74 72 69 6e 67 73  mpare as strings
5960: 2e 20 20 46 6f 72 20 73 74 72 69 6e 67 20 63 6f  .  For string co
5970: 6d 70 61 72 69 73 6f 6e 73 2c 20 63 61 73 65 20  mparisons, case 
5980: 69 73 20 73 69 67 6e 69 66 69 63 61 6e 74 0a 62  is significant.b
5990: 75 74 20 69 73 20 6f 6e 6c 79 20 75 73 65 64 20  ut is only used 
59a0: 74 6f 20 62 72 65 61 6b 20 61 20 74 69 65 2e 0a  to break a tie..
59b0: 4e 6f 74 65 20 74 68 61 74 20 74 68 65 72 65 20  Note that there 
59c0: 61 72 65 20 74 77 6f 20 76 61 72 69 61 74 69 6f  are two variatio
59d0: 6e 73 20 6f 66 20 74 68 65 20 65 71 75 61 6c 73  ns of the equals
59e0: 20 61 6e 64 20 6e 6f 74 20 65 71 75 61 6c 73 0a   and not equals.
59f0: 6f 70 65 72 61 74 6f 72 73 2e 20 20 45 71 75 61  operators.  Equa
5a00: 6c 73 20 63 61 6e 20 62 65 20 65 69 74 68 65 72  ls can be either
5a10: 7d 0a 70 75 74 73 20 22 5b 4f 70 65 72 61 74 6f  }.puts "[Operato
5a20: 72 20 3d 5d 20 6f 72 20 5b 4f 70 65 72 61 74 6f  r =] or [Operato
5a30: 72 20 3d 3d 5d 2e 0a 54 68 65 20 6e 6f 6e 2d 65  r ==]..The non-e
5a40: 71 75 61 6c 73 20 6f 70 65 72 61 74 6f 72 20 63  quals operator c
5a50: 61 6e 20 62 65 20 65 69 74 68 65 72 0a 5b 4f 70  an be either.[Op
5a60: 65 72 61 74 6f 72 20 21 3d 5d 20 6f 72 20 5b 4f  erator !=] or [O
5a70: 70 65 72 61 74 6f 72 20 7b 26 6c 74 3b 26 67 74  perator {&lt;&gt
5a80: 3b 7d 5d 2e 0a 54 68 65 20 5b 4f 70 65 72 61 74  ;}]..The [Operat
5a90: 6f 72 20 7c 7c 5d 20 6f 70 65 72 61 74 6f 72 20  or ||] operator 
5aa0: 69 73 20 5c 22 63 6f 6e 63 61 74 65 6e 61 74 65  is \"concatenate
5ab0: 5c 22 20 2d 20 69 74 20 6a 6f 69 6e 73 20 74 6f  \" - it joins to
5ac0: 67 65 74 68 65 72 0a 74 68 65 20 74 77 6f 20 73  gether.the two s
5ad0: 74 72 69 6e 67 73 20 6f 66 20 69 74 73 20 6f 70  trings of its op
5ae0: 65 72 61 6e 64 73 2e 3c 2f 70 3e 22 0a 70 75 74  erands.</p>".put
5af0: 73 20 7b 0a 0a 3c 70 3e 54 68 65 20 4c 49 4b 45  s {..<p>The LIKE
5b00: 20 6f 70 65 72 61 74 6f 72 20 64 6f 65 73 20 61   operator does a
5b10: 20 77 69 6c 64 63 61 72 64 20 63 6f 6d 70 61 72   wildcard compar
5b20: 69 73 69 6f 6e 2e 20 20 54 68 65 20 6f 70 65 72  ision.  The oper
5b30: 61 6e 64 0a 74 6f 20 74 68 65 20 72 69 67 68 74  and.to the right
5b40: 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 77 69   contains the wi
5b50: 6c 64 63 61 72 64 73 2e 7d 0a 70 75 74 73 20 22  ldcards.}.puts "
5b60: 41 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c  A percent symbol
5b70: 20 5b 4f 70 65 72 61 74 6f 72 20 25 5d 20 69 6e   [Operator %] in
5b80: 20 74 68 65 20 72 69 67 68 74 20 6f 70 65 72 61   the right opera
5b90: 6e 64 0a 6d 61 74 63 68 65 73 20 61 6e 79 20 73  nd.matches any s
5ba0: 65 71 75 65 6e 63 65 20 6f 66 20 7a 65 72 6f 20  equence of zero 
5bb0: 6f 72 20 6d 6f 72 65 20 63 68 61 72 61 63 74 65  or more characte
5bc0: 72 73 20 6f 6e 20 74 68 65 20 6c 65 66 74 2e 0a  rs on the left..
5bd0: 41 6e 20 75 6e 64 65 72 73 63 6f 72 65 20 5b 4f  An underscore [O
5be0: 70 65 72 61 74 6f 72 20 5f 5d 20 6f 6e 20 74 68  perator _] on th
5bf0: 65 20 72 69 67 68 74 0a 6d 61 74 63 68 65 73 20  e right.matches 
5c00: 61 6e 79 20 73 69 6e 67 6c 65 20 63 68 61 72 61  any single chara
5c10: 63 74 65 72 20 6f 6e 20 74 68 65 20 6c 65 66 74  cter on the left
5c20: 2e 22 0a 70 75 74 73 20 7b 54 68 65 20 4c 49 4b  .".puts {The LIK
5c30: 45 20 6f 70 65 72 61 74 6f 72 20 69 73 0a 6e 6f  E operator is.no
5c40: 74 20 63 61 73 65 20 73 65 6e 73 69 74 69 76 65  t case sensitive
5c50: 20 61 6e 64 20 77 69 6c 6c 20 6d 61 74 63 68 20   and will match 
5c60: 75 70 70 65 72 20 63 61 73 65 20 63 68 61 72 61  upper case chara
5c70: 63 74 65 72 73 20 6f 6e 20 6f 6e 65 0a 73 69 64  cters on one.sid
5c80: 65 20 61 67 61 69 6e 73 74 20 6c 6f 77 65 72 20  e against lower 
5c90: 63 61 73 65 20 63 68 61 72 61 63 74 65 72 73 20  case characters 
5ca0: 6f 6e 20 74 68 65 20 6f 74 68 65 72 2e 0a 28 41  on the other..(A
5cb0: 20 62 75 67 3a 20 53 51 4c 69 74 65 20 6f 6e 6c   bug: SQLite onl
5cc0: 79 20 75 6e 64 65 72 73 74 61 6e 64 73 20 75 70  y understands up
5cd0: 70 65 72 2f 6c 6f 77 65 72 20 63 61 73 65 20 66  per/lower case f
5ce0: 6f 72 20 37 2d 62 69 74 20 4c 61 74 69 6e 0a 63  or 7-bit Latin.c
5cf0: 68 61 72 61 63 74 65 72 73 2e 20 20 48 65 6e 63  haracters.  Henc
5d00: 65 20 74 68 65 20 4c 49 4b 45 20 6f 70 65 72 61  e the LIKE opera
5d10: 74 6f 72 20 69 73 20 63 61 73 65 20 73 65 6e 73  tor is case sens
5d20: 69 74 69 76 65 20 66 6f 72 0a 38 2d 62 69 74 20  itive for.8-bit 
5d30: 69 73 6f 38 38 35 39 20 63 68 61 72 61 63 74 65  iso8859 characte
5d40: 72 73 20 6f 72 20 55 54 46 2d 38 20 63 68 61 72  rs or UTF-8 char
5d50: 61 63 74 65 72 73 2e 20 20 46 6f 72 20 65 78 61  acters.  For exa
5d60: 6d 70 6c 65 2c 0a 74 68 65 20 65 78 70 72 65 73  mple,.the expres
5d70: 73 69 6f 6e 20 3c 62 3e 27 61 27 26 6e 62 73 70  sion <b>'a'&nbsp
5d80: 3b 4c 49 4b 45 26 6e 62 73 70 3b 27 41 27 3c 2f  ;LIKE&nbsp;'A'</
5d90: 62 3e 20 69 73 20 54 52 55 45 20 62 75 74 0a 3c  b> is TRUE but.<
5da0: 62 3e 27 26 61 65 6c 69 67 3b 27 26 6e 62 73 70  b>'&aelig;'&nbsp
5db0: 3b 4c 49 4b 45 26 6e 62 73 70 3b 27 26 41 45 6c  ;LIKE&nbsp;'&AEl
5dc0: 69 67 3b 27 3c 2f 62 3e 20 69 73 20 46 41 4c 53  ig;'</b> is FALS
5dd0: 45 2e 29 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  E.).</p>..<p>The
5de0: 20 47 4c 4f 42 20 6f 70 65 72 61 74 6f 72 20 69   GLOB operator i
5df0: 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 4c 49 4b  s similar to LIK
5e00: 45 20 62 75 74 20 75 73 65 73 20 74 68 65 20 55  E but uses the U
5e10: 6e 69 78 0a 66 69 6c 65 20 67 6c 6f 62 62 69 6e  nix.file globbin
5e20: 67 20 73 79 6e 74 61 78 20 66 6f 72 20 69 74 73  g syntax for its
5e30: 20 77 69 6c 64 63 61 72 64 73 2e 20 20 41 6c 73   wildcards.  Als
5e40: 6f 2c 20 47 4c 4f 42 20 69 73 20 63 61 73 65 0a  o, GLOB is case.
5e50: 73 65 6e 73 69 74 69 76 65 2c 20 75 6e 6c 69 6b  sensitive, unlik
5e60: 65 20 4c 49 4b 45 2e 20 20 42 6f 74 68 20 47 4c  e LIKE.  Both GL
5e70: 4f 42 20 61 6e 64 20 4c 49 4b 45 20 6d 61 79 20  OB and LIKE may 
5e80: 62 65 20 70 72 65 63 65 64 65 64 20 62 79 0a 74  be preceded by.t
5e90: 68 65 20 4e 4f 54 20 6b 65 79 77 6f 72 64 20 74  he NOT keyword t
5ea0: 6f 20 69 6e 76 65 72 74 20 74 68 65 20 73 65 6e  o invert the sen
5eb0: 73 65 20 6f 66 20 74 68 65 20 74 65 73 74 2e 3c  se of the test.<
5ec0: 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6c 75 6d 6e  /p>..<p>A column
5ed0: 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 61 6e 79   name can be any
5ee0: 20 6f 66 20 74 68 65 20 6e 61 6d 65 73 20 64 65   of the names de
5ef0: 66 69 6e 65 64 20 69 6e 20 74 68 65 20 43 52 45  fined in the CRE
5f00: 41 54 45 20 54 41 42 4c 45 0a 73 74 61 74 65 6d  ATE TABLE.statem
5f10: 65 6e 74 20 6f 72 20 6f 6e 65 20 6f 66 20 74 68  ent or one of th
5f20: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 70 65 63  e following spec
5f30: 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73 3a  ial identifiers:
5f40: 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c   "<b>ROWID</b>",
5f50: 0a 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f  ."<b>OID</b>", o
5f60: 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62  r "<b>_ROWID_</b
5f70: 3e 22 2e 0a 54 68 65 73 65 20 73 70 65 63 69 61  >"..These specia
5f80: 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20 61 6c  l identifiers al
5f90: 6c 20 64 65 73 63 72 69 62 65 20 74 68 65 0a 75  l describe the.u
5fa0: 6e 69 71 75 65 20 72 61 6e 64 6f 6d 20 69 6e 74  nique random int
5fb0: 65 67 65 72 20 6b 65 79 20 28 74 68 65 20 22 72  eger key (the "r
5fc0: 6f 77 20 6b 65 79 22 29 20 61 73 73 6f 63 69 61  ow key") associa
5fd0: 74 65 64 20 77 69 74 68 20 65 76 65 72 79 20 0a  ted with every .
5fe0: 72 6f 77 20 6f 66 20 65 76 65 72 79 20 74 61 62  row of every tab
5ff0: 6c 65 2e 0a 54 68 65 20 73 70 65 63 69 61 6c 20  le..The special 
6000: 69 64 65 6e 74 69 66 69 65 72 73 20 6f 6e 6c 79  identifiers only
6010: 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 72 6f   refer to the ro
6020: 77 20 6b 65 79 20 69 66 20 74 68 65 20 43 52 45  w key if the CRE
6030: 41 54 45 20 54 41 42 4c 45 0a 73 74 61 74 65 6d  ATE TABLE.statem
6040: 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 64 65 66  ent does not def
6050: 69 6e 65 20 61 20 72 65 61 6c 20 63 6f 6c 75 6d  ine a real colum
6060: 6e 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20  n with the same 
6070: 6e 61 6d 65 2e 20 20 52 6f 77 20 6b 65 79 73 0a  name.  Row keys.
6080: 61 63 74 20 6c 69 6b 65 20 72 65 61 64 2d 6f 6e  act like read-on
6090: 6c 79 20 63 6f 6c 75 6d 6e 73 2e 20 20 41 20 72  ly columns.  A r
60a0: 6f 77 20 6b 65 79 20 63 61 6e 20 62 65 20 75 73  ow key can be us
60b0: 65 64 20 61 6e 79 77 68 65 72 65 20 61 20 72 65  ed anywhere a re
60c0: 67 75 6c 61 72 0a 63 6f 6c 75 6d 6e 20 63 61 6e  gular.column can
60d0: 20 62 65 20 75 73 65 64 2c 20 65 78 63 65 70 74   be used, except
60e0: 20 74 68 61 74 20 79 6f 75 20 63 61 6e 6e 6f 74   that you cannot
60f0: 20 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c 75   change the valu
6100: 65 0a 6f 66 20 61 20 72 6f 77 20 6b 65 79 20 69  e.of a row key i
6110: 6e 20 61 6e 20 55 50 44 41 54 45 20 6f 72 20 49  n an UPDATE or I
6120: 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 2e  NSERT statement.
6130: 0a 22 53 45 4c 45 43 54 20 2a 20 2e 2e 2e 22 20  ."SELECT * ..." 
6140: 64 6f 65 73 20 6e 6f 74 20 72 65 74 75 72 6e 20  does not return 
6150: 74 68 65 20 72 6f 77 20 6b 65 79 2e 3c 2f 70 3e  the row key.</p>
6160: 0a 0a 3c 70 3e 53 45 4c 45 43 54 20 73 74 61 74  ..<p>SELECT stat
6170: 65 6d 65 6e 74 73 20 63 61 6e 20 61 70 70 65 61  ements can appea
6180: 72 20 69 6e 20 65 78 70 72 65 73 73 69 6f 6e 73  r in expressions
6190: 20 61 73 20 65 69 74 68 65 72 20 74 68 65 0a 72   as either the.r
61a0: 69 67 68 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e  ight-hand operan
61b0: 64 20 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72  d of the IN oper
61c0: 61 74 6f 72 20 6f 72 20 61 73 20 61 20 73 63 61  ator or as a sca
61d0: 6c 61 72 20 71 75 61 6e 74 69 74 79 2e 0a 49 6e  lar quantity..In
61e0: 20 62 6f 74 68 20 63 61 73 65 73 2c 20 74 68 65   both cases, the
61f0: 20 53 45 4c 45 43 54 20 73 68 6f 75 6c 64 20 68   SELECT should h
6200: 61 76 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c  ave only a singl
6210: 65 20 63 6f 6c 75 6d 6e 20 69 6e 20 69 74 73 0a  e column in its.
6220: 72 65 73 75 6c 74 2e 20 20 43 6f 6d 70 6f 75 6e  result.  Compoun
6230: 64 20 53 45 4c 45 43 54 73 20 28 63 6f 6e 6e 65  d SELECTs (conne
6240: 63 74 65 64 20 77 69 74 68 20 6b 65 79 77 6f 72  cted with keywor
6250: 64 73 20 6c 69 6b 65 20 55 4e 49 4f 4e 20 6f 72  ds like UNION or
6260: 0a 45 58 43 45 50 54 29 20 61 72 65 20 61 6c 6c  .EXCEPT) are all
6270: 6f 77 65 64 2e 20 20 41 6e 79 20 4f 52 44 45 52  owed.  Any ORDER
6280: 20 42 59 20 63 6c 61 75 73 65 20 6f 6e 20 74 68   BY clause on th
6290: 65 20 73 65 6c 65 63 74 20 69 73 20 69 67 6e 6f  e select is igno
62a0: 72 65 64 2e 0a 41 20 53 45 4c 45 43 54 20 69 6e  red..A SELECT in
62b0: 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 69   an expression i
62c0: 73 20 65 76 61 6c 75 61 74 65 64 20 6f 6e 63 65  s evaluated once
62d0: 20 62 65 66 6f 72 65 20 61 6e 79 20 6f 74 68 65   before any othe
62e0: 72 20 70 72 6f 63 65 73 73 69 6e 67 0a 69 73 20  r processing.is 
62f0: 70 65 72 66 6f 72 6d 65 64 2c 20 73 6f 20 6e 6f  performed, so no
6300: 6e 65 20 6f 66 20 74 68 65 20 65 78 70 72 65 73  ne of the expres
6310: 73 69 6f 6e 73 20 77 69 74 68 69 6e 20 74 68 65  sions within the
6320: 20 73 65 6c 65 63 74 20 69 74 73 65 6c 66 20 63   select itself c
6330: 61 6e 0a 72 65 66 65 72 20 74 6f 20 71 75 61 6e  an.refer to quan
6340: 74 69 74 69 65 73 20 69 6e 20 74 68 65 20 63 6f  tities in the co
6350: 6e 74 61 69 6e 69 6e 67 20 65 78 70 72 65 73 73  ntaining express
6360: 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65  ion.</p>..<p>Whe
6370: 6e 20 61 20 53 45 4c 45 43 54 20 69 73 20 74 68  n a SELECT is th
6380: 65 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64 20  e right operand 
6390: 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74  of the IN operat
63a0: 6f 72 2c 20 74 68 65 20 49 4e 0a 6f 70 65 72 61  or, the IN.opera
63b0: 74 6f 72 20 72 65 74 75 72 6e 73 20 54 52 55 45  tor returns TRUE
63c0: 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f   if the result o
63d0: 66 20 74 68 65 20 6c 65 66 74 20 6f 70 65 72 61  f the left opera
63e0: 6e 64 20 69 73 20 61 6e 79 20 6f 66 0a 74 68 65  nd is any of.the
63f0: 20 76 61 6c 75 65 73 20 67 65 6e 65 72 61 74 65   values generate
6400: 64 20 62 79 20 74 68 65 20 73 65 6c 65 63 74 2e  d by the select.
6410: 20 20 54 68 65 20 49 4e 20 6f 70 65 72 61 74 6f    The IN operato
6420: 72 20 6d 61 79 20 62 65 20 70 72 65 63 65 64 65  r may be precede
6430: 64 0a 62 79 20 74 68 65 20 4e 4f 54 20 6b 65 79  d.by the NOT key
6440: 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74  word to invert t
6450: 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20  he sense of the 
6460: 74 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68  test.</p>..<p>Wh
6470: 65 6e 20 61 20 53 45 4c 45 43 54 20 61 70 70 65  en a SELECT appe
6480: 61 72 73 20 77 69 74 68 69 6e 20 61 6e 20 65 78  ars within an ex
6490: 70 72 65 73 73 69 6f 6e 20 62 75 74 20 69 73 20  pression but is 
64a0: 6e 6f 74 20 74 68 65 20 72 69 67 68 74 0a 6f 70  not the right.op
64b0: 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f  erand of an IN o
64c0: 70 65 72 61 74 6f 72 2c 20 74 68 65 6e 20 74 68  perator, then th
64d0: 65 20 66 69 72 73 74 20 72 6f 77 20 6f 66 20 74  e first row of t
64e0: 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65  he result of the
64f0: 0a 53 45 4c 45 43 54 20 62 65 63 6f 6d 65 73 20  .SELECT becomes 
6500: 74 68 65 20 76 61 6c 75 65 20 75 73 65 64 20 69  the value used i
6510: 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  n the expression
6520: 2e 20 20 49 66 20 74 68 65 20 53 45 4c 45 43 54  .  If the SELECT
6530: 20 79 69 65 6c 64 73 0a 6d 6f 72 65 20 74 68 61   yields.more tha
6540: 6e 20 6f 6e 65 20 72 65 73 75 6c 74 20 72 6f 77  n one result row
6550: 2c 20 61 6c 6c 20 72 6f 77 73 20 61 66 74 65 72  , all rows after
6560: 20 74 68 65 20 66 69 72 73 74 20 61 72 65 20 69   the first are i
6570: 67 6e 6f 72 65 64 2e 20 20 49 66 0a 74 68 65 20  gnored.  If.the 
6580: 53 45 4c 45 43 54 20 79 65 69 6c 64 73 20 6e 6f  SELECT yeilds no
6590: 20 72 6f 77 73 2c 20 74 68 65 6e 20 74 68 65 20   rows, then the 
65a0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 53 45 4c  value of the SEL
65b0: 45 43 54 20 69 73 20 4e 55 4c 4c 2e 3c 2f 70 3e  ECT is NULL.</p>
65c0: 0a 0a 3c 70 3e 42 6f 74 68 20 73 69 6d 70 6c 65  ..<p>Both simple
65d0: 20 61 6e 64 20 61 67 67 72 65 67 61 74 65 20 66   and aggregate f
65e0: 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 73 75 70  unctions are sup
65f0: 70 6f 72 74 65 64 2e 20 20 41 20 73 69 6d 70 6c  ported.  A simpl
6600: 65 0a 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62  e.function can b
6610: 65 20 75 73 65 64 20 69 6e 20 61 6e 79 20 65 78  e used in any ex
6620: 70 72 65 73 73 69 6f 6e 2e 20 20 53 69 6d 70 6c  pression.  Simpl
6630: 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74 75  e functions retu
6640: 72 6e 0a 61 20 72 65 73 75 6c 74 20 69 6d 6d 65  rn.a result imme
6650: 64 69 61 74 65 6c 79 20 62 61 73 65 64 20 6f 6e  diately based on
6660: 20 74 68 65 69 72 20 69 6e 70 75 74 73 2e 20 20   their inputs.  
6670: 41 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  Aggregate functi
6680: 6f 6e 73 0a 6d 61 79 20 6f 6e 6c 79 20 62 65 20  ons.may only be 
6690: 75 73 65 64 20 69 6e 20 61 20 53 45 4c 45 43 54  used in a SELECT
66a0: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 41 67 67   statement.  Agg
66b0: 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
66c0: 20 63 6f 6d 70 75 74 65 0a 74 68 65 69 72 20 72   compute.their r
66d0: 65 73 75 6c 74 20 61 63 72 6f 73 73 20 61 6c 6c  esult across all
66e0: 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72 65 73   rows of the res
66f0: 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a 3c 70  ult set.</p>..<p
6700: 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73  >The following s
6710: 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20  imple functions 
6720: 61 72 65 20 63 75 72 72 65 6e 74 6c 79 20 73 75  are currently su
6730: 70 70 6f 72 74 65 64 3a 3c 2f 70 3e 0a 0a 3c 74  pported:</p>..<t
6740: 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65  able border=0 ce
6750: 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74  llpadding=10>.<t
6760: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
6770: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
6780: 22 20 77 69 64 74 68 3d 31 32 30 3e 61 62 73 28  " width=120>abs(
6790: 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c  <i>X</i>)</td>.<
67a0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
67b0: 52 65 74 75 72 6e 20 74 68 65 20 61 62 73 6f 6c  Return the absol
67c0: 75 74 65 20 76 61 6c 75 65 20 6f 66 20 61 72 67  ute value of arg
67d0: 75 6d 65 6e 74 20 3c 69 3e 58 3c 2f 69 3e 2e 3c  ument <i>X</i>.<
67e0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
67f0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
6800: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
6810: 63 6f 61 6c 65 73 63 65 28 3c 69 3e 58 3c 2f 69  coalesce(<i>X</i
6820: 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c  >,<i>Y</i>,...)<
6830: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
6840: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 63  "top">Return a c
6850: 6f 70 79 20 6f 66 20 74 68 65 20 66 69 72 73 74  opy of the first
6860: 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65   non-NULL argume
6870: 6e 74 2e 20 20 49 66 0a 61 6c 6c 20 61 72 67 75  nt.  If.all argu
6880: 6d 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c 20 74  ments are NULL t
6890: 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72 65 74 75  hen NULL is retu
68a0: 72 6e 65 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  rned.</td>.</tr>
68b0: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
68c0: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
68d0: 69 67 68 74 22 3e 6c 61 73 74 5f 69 6e 73 65 72  ight">last_inser
68e0: 74 5f 72 6f 77 69 64 28 29 3c 2f 74 64 3e 0a 3c  t_rowid()</td>.<
68f0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
6900: 52 65 74 75 72 6e 20 74 68 65 20 52 4f 57 49 44  Return the ROWID
6910: 20 6f 66 20 74 68 65 20 6c 61 73 74 20 72 6f 77   of the last row
6920: 20 69 6e 73 65 72 74 20 66 72 6f 6d 20 74 68 69   insert from thi
6930: 73 0a 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20  s.connection to 
6940: 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 54  the database.  T
6950: 68 69 73 20 69 73 20 74 68 65 20 73 61 6d 65 20  his is the same 
6960: 76 61 6c 75 65 20 74 68 61 74 20 77 6f 75 6c 64  value that would
6970: 20 62 65 20 72 65 74 75 72 6e 65 64 0a 66 72 6f   be returned.fro
6980: 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f  m the <b>sqlite_
6990: 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
69a0: 64 28 29 3c 2f 62 3e 20 41 50 49 20 66 75 6e 63  d()</b> API func
69b0: 74 69 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  tion.</td>.</tr>
69c0: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
69d0: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
69e0: 69 67 68 74 22 3e 6c 65 6e 67 74 68 28 3c 69 3e  ight">length(<i>
69f0: 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20  X</i>)</td>.<td 
6a00: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
6a10: 75 72 6e 20 74 68 65 20 73 74 72 69 6e 67 20 6c  urn the string l
6a20: 65 6e 67 74 68 20 6f 66 20 3c 69 3e 58 3c 2f 69  ength of <i>X</i
6a30: 3e 20 69 6e 20 63 68 61 72 61 63 74 65 72 73 2e  > in characters.
6a40: 0a 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f  .If SQLite is co
6a50: 6e 66 69 67 75 72 65 64 20 74 6f 20 73 75 70 70  nfigured to supp
6a60: 6f 72 74 20 55 54 46 2d 38 2c 20 74 68 65 6e 20  ort UTF-8, then 
6a70: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 55 54  the number of UT
6a80: 46 2d 38 0a 63 68 61 72 61 63 74 65 72 73 20 69  F-8.characters i
6a90: 73 20 72 65 74 75 72 6e 65 64 2c 20 6e 6f 74 20  s returned, not 
6aa0: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  the number of by
6ab0: 74 65 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  tes.</td>.</tr>.
6ac0: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
6ad0: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
6ae0: 67 68 74 22 3e 6c 6f 77 65 72 28 3c 69 3e 58 3c  ght">lower(<i>X<
6af0: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
6b00: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
6b10: 6e 20 61 20 63 6f 70 79 20 6f 66 20 73 74 72 69  n a copy of stri
6b20: 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 6c 6c  ng <i>X</i> will
6b30: 20 61 6c 6c 20 63 68 61 72 61 63 74 65 72 73 0a   all characters.
6b40: 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 6c 6f 77  converted to low
6b50: 65 72 20 63 61 73 65 2e 20 20 54 68 65 20 43 20  er case.  The C 
6b60: 6c 69 62 72 61 72 79 20 3c 62 3e 74 6f 6c 6f 77  library <b>tolow
6b70: 65 72 28 29 3c 2f 62 3e 20 72 6f 75 74 69 6e 65  er()</b> routine
6b80: 20 69 73 20 75 73 65 64 0a 66 6f 72 20 74 68 65   is used.for the
6b90: 20 63 6f 6e 76 65 72 73 69 6f 6e 2c 20 77 68 69   conversion, whi
6ba0: 63 68 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68  ch means that th
6bb0: 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 69 67 68  is function migh
6bc0: 74 20 6e 6f 74 0a 77 6f 72 6b 20 63 6f 72 72 65  t not.work corre
6bd0: 63 74 6c 79 20 6f 6e 20 55 54 46 2d 38 20 63 68  ctly on UTF-8 ch
6be0: 61 72 61 63 74 65 72 73 2e 3c 2f 74 64 3e 0a 3c  aracters.</td>.<
6bf0: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
6c00: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
6c10: 6e 3d 22 72 69 67 68 74 22 3e 6d 61 78 28 3c 69  n="right">max(<i
6c20: 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c  >X</i>,<i>Y</i>,
6c30: 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  ...)</td>.<td va
6c40: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
6c50: 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 77  n the argument w
6c60: 69 74 68 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ith the maximum 
6c70: 76 61 6c 75 65 2e 20 20 41 72 67 75 6d 65 6e 74  value.  Argument
6c80: 73 0a 6d 61 79 20 62 65 20 73 74 72 69 6e 67 73  s.may be strings
6c90: 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20   in addition to 
6ca0: 6e 75 6d 62 65 72 73 2e 20 20 54 68 65 20 6d 61  numbers.  The ma
6cb0: 78 69 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 64  ximum value is d
6cc0: 65 74 65 72 6d 69 6e 65 64 0a 62 79 20 74 68 65  etermined.by the
6cd0: 20 75 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65   usual sort orde
6ce0: 72 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62  r.  Note that <b
6cf0: 3e 6d 61 78 28 29 3c 2f 62 3e 20 69 73 20 61 20  >max()</b> is a 
6d00: 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20  simple function 
6d10: 77 68 65 6e 0a 69 74 20 68 61 73 20 32 20 6f 72  when.it has 2 or
6d20: 20 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20   more arguments 
6d30: 62 75 74 20 63 6f 6e 76 65 72 74 73 20 74 6f 20  but converts to 
6d40: 61 6e 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  an aggregate fun
6d50: 63 74 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a 6f  ction if given.o
6d60: 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67  nly a single arg
6d70: 75 6d 65 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  ument.</td>.</tr
6d80: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
6d90: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
6da0: 72 69 67 68 74 22 3e 6d 69 6e 28 3c 69 3e 58 3c  right">min(<i>X<
6db0: 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e  /i>,<i>Y</i>,...
6dc0: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
6dd0: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74  n="top">Return t
6de0: 68 65 20 61 72 67 75 6d 65 6e 74 20 77 69 74 68  he argument with
6df0: 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c   the minimum val
6e00: 75 65 2e 20 20 41 72 67 75 6d 65 6e 74 73 0a 6d  ue.  Arguments.m
6e10: 61 79 20 62 65 20 73 74 72 69 6e 67 73 20 69 6e  ay be strings in
6e20: 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 6e 75 6d   addition to num
6e30: 62 65 72 73 2e 20 20 54 68 65 20 6d 6d 69 6e 69  bers.  The mmini
6e40: 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 64 65 74  mum value is det
6e50: 65 72 6d 69 6e 65 64 0a 62 79 20 74 68 65 20 75  ermined.by the u
6e60: 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 2e  sual sort order.
6e70: 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d    Note that <b>m
6e80: 69 6e 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69  in()</b> is a si
6e90: 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68  mple function wh
6ea0: 65 6e 0a 69 74 20 68 61 73 20 32 20 6f 72 20 6d  en.it has 2 or m
6eb0: 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75  ore arguments bu
6ec0: 74 20 63 6f 6e 76 65 72 74 73 20 74 6f 20 61 6e  t converts to an
6ed0: 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
6ee0: 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a 6f 6e 6c  ion if given.onl
6ef0: 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  y a single argum
6f00: 65 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ent.</td>.</tr>.
6f10: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
6f20: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
6f30: 67 68 74 22 3e 72 61 6e 64 6f 6d 28 2a 29 3c 2f  ght">random(*)</
6f40: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
6f50: 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 72 61  top">Return a ra
6f60: 6e 64 6f 6d 20 69 6e 74 65 67 65 72 20 62 65 74  ndom integer bet
6f70: 77 65 65 6e 20 2d 32 31 34 37 34 38 33 36 34 38  ween -2147483648
6f80: 20 61 6e 64 0a 2b 32 31 34 37 34 38 33 36 34 37   and.+2147483647
6f90: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
6fa0: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
6fb0: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
6fc0: 22 3e 72 6f 75 6e 64 28 3c 69 3e 58 3c 2f 69 3e  ">round(<i>X</i>
6fd0: 29 3c 62 72 3e 72 6f 75 6e 64 28 3c 69 3e 58 3c  )<br>round(<i>X<
6fe0: 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74  /i>,<i>Y</i>)</t
6ff0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
7000: 6f 70 22 3e 52 6f 75 6e 64 20 6f 66 66 20 74 68  op">Round off th
7010: 65 20 6e 75 6d 62 65 72 20 3c 69 3e 58 3c 2f 69  e number <i>X</i
7020: 3e 20 74 6f 20 3c 69 3e 59 3c 2f 69 3e 20 64 69  > to <i>Y</i> di
7030: 67 69 74 73 20 74 6f 20 74 68 65 0a 72 69 67 68  gits to the.righ
7040: 74 20 6f 66 20 74 68 65 20 64 65 63 69 6d 61 6c  t of the decimal
7050: 20 70 6f 69 6e 74 2e 20 20 49 66 20 74 68 65 20   point.  If the 
7060: 3c 69 3e 59 3c 2f 69 3e 20 61 72 67 75 6d 65 6e  <i>Y</i> argumen
7070: 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 30 20  t is omitted, 0 
7080: 69 73 20 0a 61 73 73 75 6d 65 64 2e 3c 2f 74 64  is .assumed.</td
7090: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
70a0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
70b0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 73 75 62  lign="right">sub
70c0: 73 74 72 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  str(<i>X</i>,<i>
70d0: 59 3c 2f 69 3e 2c 3c 69 3e 5a 3c 2f 69 3e 29 3c  Y</i>,<i>Z</i>)<
70e0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
70f0: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 73  "top">Return a s
7100: 75 62 73 74 72 69 6e 67 20 6f 66 20 69 6e 70 75  ubstring of inpu
7110: 74 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69  t string <i>X</i
7120: 3e 20 74 68 61 74 20 62 65 67 69 6e 73 0a 77 69  > that begins.wi
7130: 74 68 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 2d  th the <i>Y</i>-
7140: 74 68 20 63 68 61 72 61 63 74 65 72 20 61 6e 64  th character and
7150: 20 77 68 69 63 68 20 69 73 20 3c 69 3e 5a 3c 2f   which is <i>Z</
7160: 69 3e 20 63 68 61 72 61 63 74 65 72 73 20 6c 6f  i> characters lo
7170: 6e 67 2e 0a 54 68 65 20 6c 65 66 74 2d 6d 6f 73  ng..The left-mos
7180: 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20 3c  t character of <
7190: 69 3e 58 3c 2f 69 3e 20 69 73 20 6e 75 6d 62 65  i>X</i> is numbe
71a0: 72 20 31 2e 20 20 49 66 20 3c 69 3e 59 3c 2f 69  r 1.  If <i>Y</i
71b0: 3e 20 69 73 20 6e 65 67 61 74 69 76 65 0a 74 68  > is negative.th
71c0: 65 20 74 68 65 20 66 69 72 73 74 20 63 68 61 72  e the first char
71d0: 61 63 74 65 72 20 6f 66 20 74 68 65 20 73 75 62  acter of the sub
71e0: 73 74 72 69 6e 67 20 69 73 20 66 6f 75 6e 64 20  string is found 
71f0: 62 79 20 63 6f 75 6e 74 69 6e 67 20 66 72 6f 6d  by counting from
7200: 20 74 68 65 0a 72 69 67 68 74 20 72 61 74 68 65   the.right rathe
7210: 72 20 74 68 61 6e 20 74 68 65 20 6c 65 66 74 2e  r than the left.
7220: 20 20 49 66 20 53 51 4c 69 74 65 20 69 73 20 63    If SQLite is c
7230: 6f 6e 66 69 67 75 72 65 64 20 74 6f 20 73 75 70  onfigured to sup
7240: 70 6f 72 74 20 55 54 46 2d 38 2c 0a 74 68 65 6e  port UTF-8,.then
7250: 20 63 68 61 72 61 63 74 65 72 73 20 69 6e 64 69   characters indi
7260: 63 65 73 20 72 65 66 65 72 20 74 6f 20 61 63 74  ces refer to act
7270: 75 61 6c 20 55 54 46 2d 38 20 63 68 61 72 61 63  ual UTF-8 charac
7280: 74 65 72 73 2c 20 6e 6f 74 20 62 79 74 65 73 2e  ters, not bytes.
7290: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
72a0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
72b0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
72c0: 3e 75 70 70 65 72 28 3c 69 3e 58 3c 2f 69 3e 29  >upper(<i>X</i>)
72d0: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
72e0: 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20  ="top">Return a 
72f0: 63 6f 70 79 20 6f 66 20 69 6e 70 75 74 20 73 74  copy of input st
7300: 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 63 6f  ring <i>X</i> co
7310: 6e 76 65 72 74 65 64 20 74 6f 20 61 6c 6c 0a 75  nverted to all.u
7320: 70 70 65 72 2d 63 61 73 65 20 6c 65 74 74 65 72  pper-case letter
7330: 73 2e 20 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e  s.  The implemen
7340: 74 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 66  tation of this f
7350: 75 6e 63 74 69 6f 6e 20 75 73 65 73 20 74 68 65  unction uses the
7360: 20 43 20 6c 69 62 72 61 72 79 0a 72 6f 75 74 69   C library.routi
7370: 6e 65 20 3c 62 3e 74 6f 75 70 70 65 72 28 29 3c  ne <b>toupper()<
7380: 2f 62 3e 20 77 68 69 63 68 20 6d 65 61 6e 73 20  /b> which means 
7390: 69 74 20 6d 61 79 20 6e 6f 74 20 77 6f 72 6b 20  it may not work 
73a0: 63 6f 72 72 65 63 74 6c 79 20 6f 6e 20 0a 55 54  correctly on .UT
73b0: 46 2d 38 20 73 74 72 69 6e 67 73 2e 3c 2f 74 64  F-8 strings.</td
73c0: 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e  >.</tr>.</table>
73d0: 0a 0a 3c 70 3e 0a 54 68 65 20 66 6f 6c 6c 6f 77  ..<p>.The follow
73e0: 69 6e 67 20 61 67 67 72 65 67 61 74 65 20 66 75  ing aggregate fu
73f0: 6e 63 74 69 6f 6e 73 20 61 72 65 20 73 75 70 70  nctions are supp
7400: 6f 72 74 65 64 3a 0a 3c 2f 70 3e 0a 0a 3c 74 61  orted:.</p>..<ta
7410: 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c  ble border=0 cel
7420: 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 72  lpadding=10>.<tr
7430: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
7440: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
7450: 20 77 69 64 74 68 3d 31 32 30 3e 61 76 67 28 3c   width=120>avg(<
7460: 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>X</i>)</td>.<t
7470: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
7480: 65 74 75 72 6e 20 74 68 65 20 61 76 65 72 61 67  eturn the averag
7490: 65 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 3c  e value of all <
74a0: 69 3e 58 3c 2f 69 3e 20 77 69 74 68 69 6e 20 61  i>X</i> within a
74b0: 20 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c 2f 74   group.</td>.</t
74c0: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
74d0: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
74e0: 22 72 69 67 68 74 22 3e 63 6f 75 6e 74 28 3c 69  "right">count(<i
74f0: 3e 58 3c 2f 69 3e 29 3c 62 72 3e 63 6f 75 6e 74  >X</i>)<br>count
7500: 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  (*)</td>.<td val
7510: 69 67 6e 3d 22 74 6f 70 22 3e 54 68 65 20 66 69  ign="top">The fi
7520: 72 73 74 20 66 6f 72 6d 20 72 65 74 75 72 6e 20  rst form return 
7530: 61 20 63 6f 75 6e 74 20 6f 66 20 74 68 65 20 6e  a count of the n
7540: 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 0a 74  umber of times.t
7550: 68 61 74 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20  hat <i>X</i> is 
7560: 6e 6f 74 20 4e 55 4c 4c 20 69 6e 20 61 20 67 72  not NULL in a gr
7570: 6f 75 70 2e 20 20 54 68 65 20 73 65 63 6f 6e 64  oup.  The second
7580: 20 66 6f 72 6d 20 28 77 69 74 68 20 6e 6f 20 61   form (with no a
7590: 72 67 75 6d 65 6e 74 29 0a 72 65 74 75 72 6e 73  rgument).returns
75a0: 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65   the total numbe
75b0: 72 20 6f 66 20 72 6f 77 73 20 69 6e 20 74 68 65  r of rows in the
75c0: 20 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c 2f 74   group.</td>.</t
75d0: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
75e0: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
75f0: 22 72 69 67 68 74 22 3e 6d 61 78 28 3c 69 3e 58  "right">max(<i>X
7600: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
7610: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
7620: 72 6e 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76  rn the maximum v
7630: 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75  alue of all valu
7640: 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e  es in the group.
7650: 0a 54 68 65 20 75 73 75 61 6c 20 73 6f 72 74 20  .The usual sort 
7660: 6f 72 64 65 72 20 69 73 20 75 73 65 64 20 74 6f  order is used to
7670: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d   determine the m
7680: 61 78 69 6d 75 6d 2e 3c 2f 74 64 3e 0a 3c 2f 74  aximum.</td>.</t
7690: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
76a0: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
76b0: 22 72 69 67 68 74 22 3e 6d 69 6e 28 3c 69 3e 58  "right">min(<i>X
76c0: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
76d0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
76e0: 72 6e 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 76  rn the minimum v
76f0: 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75  alue of all valu
7700: 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e  es in the group.
7710: 0a 54 68 65 20 75 73 75 61 6c 20 73 6f 72 74 20  .The usual sort 
7720: 6f 72 64 65 72 20 69 73 20 75 73 65 64 20 74 6f  order is used to
7730: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d   determine the m
7740: 69 6e 69 6d 75 6d 2e 3c 2f 74 64 3e 0a 3c 2f 74  inimum.</td>.</t
7750: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
7760: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
7770: 22 72 69 67 68 74 22 3e 73 75 6d 28 3c 69 3e 58  "right">sum(<i>X
7780: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
7790: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
77a0: 72 6e 20 74 68 65 20 6e 75 6d 65 72 69 63 20 73  rn the numeric s
77b0: 75 6d 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73  um of all values
77c0: 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 3c 2f   in the group.</
77d0: 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c  td>.</tr>.</tabl
77e0: 65 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 49 4e  e>.}..Section IN
77f0: 53 45 52 54 20 69 6e 73 65 72 74 0a 0a 53 79 6e  SERT insert..Syn
7800: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
7810: 6e 74 7d 20 7b 0a 49 4e 53 45 52 54 20 5b 4f 52  nt} {.INSERT [OR
7820: 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72   <conflict-algor
7830: 69 74 68 6d 3e 5d 20 49 4e 54 4f 20 3c 74 61 62  ithm>] INTO <tab
7840: 6c 65 2d 6e 61 6d 65 3e 20 5b 28 3c 63 6f 6c 75  le-name> [(<colu
7850: 6d 6e 2d 6c 69 73 74 3e 29 5d 20 56 41 4c 55 45  mn-list>)] VALUE
7860: 53 28 3c 76 61 6c 75 65 2d 6c 69 73 74 3e 29 20  S(<value-list>) 
7870: 7c 0a 49 4e 53 45 52 54 20 5b 4f 52 20 3c 63 6f  |.INSERT [OR <co
7880: 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d  nflict-algorithm
7890: 3e 5d 20 49 4e 54 4f 20 3c 74 61 62 6c 65 2d 6e  >] INTO <table-n
78a0: 61 6d 65 3e 20 5b 28 3c 63 6f 6c 75 6d 6e 2d 6c  ame> [(<column-l
78b0: 69 73 74 3e 29 5d 20 3c 73 65 6c 65 63 74 2d 73  ist>)] <select-s
78c0: 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74  tatement>.}..put
78d0: 73 20 7b 0a 3c 70 3e 54 68 65 20 49 4e 53 45 52  s {.<p>The INSER
78e0: 54 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d 65  T statement come
78f0: 73 20 69 6e 20 74 77 6f 20 62 61 73 69 63 20 66  s in two basic f
7900: 6f 72 6d 73 2e 20 20 54 68 65 20 66 69 72 73 74  orms.  The first
7910: 20 66 6f 72 6d 0a 28 77 69 74 68 20 74 68 65 20   form.(with the 
7920: 22 56 41 4c 55 45 53 22 20 6b 65 79 77 6f 72 64  "VALUES" keyword
7930: 29 20 63 72 65 61 74 65 73 20 61 20 73 69 6e 67  ) creates a sing
7940: 6c 65 20 6e 65 77 20 72 6f 77 20 69 6e 20 61 6e  le new row in an
7950: 20 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65 2e   existing table.
7960: 0a 49 66 20 6e 6f 20 63 6f 6c 75 6d 6e 2d 6c 69  .If no column-li
7970: 73 74 20 69 73 20 73 70 65 63 69 66 69 65 64 20  st is specified 
7980: 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  then the number 
7990: 6f 66 20 76 61 6c 75 65 73 20 6d 75 73 74 0a 62  of values must.b
79a0: 65 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68  e the same as th
79b0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
79c0: 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65  mns in the table
79d0: 2e 20 20 49 66 20 61 20 63 6f 6c 75 6d 6e 2d 6c  .  If a column-l
79e0: 69 73 74 0a 69 73 20 73 70 65 63 69 66 69 65 64  ist.is specified
79f0: 2c 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65  , then the numbe
7a00: 72 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73 74  r of values must
7a10: 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65   match the numbe
7a20: 72 20 6f 66 0a 73 70 65 63 69 66 69 65 64 20 63  r of.specified c
7a30: 6f 6c 75 6d 6e 73 2e 20 20 43 6f 6c 75 6d 6e 73  olumns.  Columns
7a40: 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 74 68   of the table th
7a50: 61 74 20 64 6f 20 6e 6f 74 20 61 70 70 65 61 72  at do not appear
7a60: 20 69 6e 20 74 68 65 0a 63 6f 6c 75 6d 6e 20 6c   in the.column l
7a70: 69 73 74 20 61 72 65 20 66 69 6c 6c 20 77 69 74  ist are fill wit
7a80: 68 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  h the default va
7a90: 6c 75 65 2c 20 6f 72 20 77 69 74 68 20 4e 55 4c  lue, or with NUL
7aa0: 4c 20 69 66 20 6e 6f 74 0a 64 65 66 61 75 6c 74  L if not.default
7ab0: 20 76 61 6c 75 65 20 69 73 20 73 70 65 63 69 66   value is specif
7ac0: 69 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  ied..</p>..<p>Th
7ad0: 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20 6f 66  e second form of
7ae0: 20 74 68 65 20 49 4e 53 45 52 54 20 73 74 61 74   the INSERT stat
7af0: 65 6d 65 6e 74 20 74 61 6b 65 73 20 69 74 20 64  ement takes it d
7b00: 61 74 61 20 66 72 6f 6d 20 61 0a 53 45 4c 45 43  ata from a.SELEC
7b10: 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68  T statement.  Th
7b20: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
7b30: 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c  mns in the resul
7b40: 74 20 6f 66 20 74 68 65 0a 53 45 4c 45 43 54 20  t of the.SELECT 
7b50: 6d 75 73 74 20 65 78 61 63 74 6c 79 20 6d 61 74  must exactly mat
7b60: 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ch the number of
7b70: 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
7b80: 74 61 62 6c 65 20 69 66 0a 6e 6f 20 63 6f 6c 75  table if.no colu
7b90: 6d 6e 20 6c 69 73 74 20 69 73 20 73 70 65 63 69  mn list is speci
7ba0: 66 69 65 64 2c 20 6f 72 20 69 74 20 6d 75 73 74  fied, or it must
7bb0: 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65   match the numbe
7bc0: 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 0a 6e 61 6d  r of columns.nam
7bd0: 65 20 69 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20  e in the column 
7be0: 6c 69 73 74 2e 20 20 41 20 6e 65 77 20 65 6e 74  list.  A new ent
7bf0: 72 79 20 69 73 20 6d 61 64 65 20 69 6e 20 74 68  ry is made in th
7c00: 65 20 74 61 62 6c 65 0a 66 6f 72 20 65 76 65 72  e table.for ever
7c10: 79 20 72 6f 77 20 6f 66 20 74 68 65 20 53 45 4c  y row of the SEL
7c20: 45 43 54 20 72 65 73 75 6c 74 2e 20 20 54 68 65  ECT result.  The
7c30: 20 53 45 4c 45 43 54 20 6d 61 79 20 62 65 20 73   SELECT may be s
7c40: 69 6d 70 6c 65 0a 6f 72 20 63 6f 6d 70 6f 75 6e  imple.or compoun
7c50: 64 2e 20 20 49 66 20 74 68 65 20 53 45 4c 45 43  d.  If the SELEC
7c60: 54 20 73 74 61 74 65 6d 65 6e 74 20 68 61 73 20  T statement has 
7c70: 61 6e 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75  an ORDER BY clau
7c80: 73 65 2c 0a 74 68 65 20 4f 52 44 45 52 20 42 59  se,.the ORDER BY
7c90: 20 69 73 20 69 67 6e 6f 72 65 64 2e 3c 2f 70 3e   is ignored.</p>
7ca0: 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61  ..<p>The optiona
7cb0: 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73  l conflict-claus
7cc0: 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65  e allows the spe
7cd0: 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e  cification of an
7ce0: 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e   alternative.con
7cf0: 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74  straint conflict
7d00: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f   resolution algo
7d10: 72 69 74 68 6d 20 74 6f 20 75 73 65 20 64 75 72  rithm to use dur
7d20: 69 6e 67 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d  ing this one com
7d30: 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65  mand..See the se
7d40: 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20  ction titled.<a 
7d50: 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22  href="#conflict"
7d60: 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e  >ON CONFLICT</a>
7d70: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
7d80: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 46 6f 72  information..For
7d90: 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77   compatibility w
7da0: 69 74 68 20 4d 79 53 51 4c 2c 20 74 68 65 20 70  ith MySQL, the p
7db0: 61 72 73 65 72 20 61 6c 6c 6f 77 73 20 74 68 65  arser allows the
7dc0: 20 75 73 65 20 6f 66 20 74 68 65 0a 73 69 6e 67   use of the.sing
7dd0: 6c 65 20 6b 65 79 77 6f 72 64 20 22 52 45 50 4c  le keyword "REPL
7de0: 41 43 45 22 20 61 73 20 61 6e 20 61 6c 69 61 73  ACE" as an alias
7df0: 20 66 6f 72 20 22 49 4e 53 45 52 54 20 4f 52 20   for "INSERT OR 
7e00: 52 45 50 4c 41 43 45 22 2e 0a 3c 2f 70 3e 0a 7d  REPLACE"..</p>.}
7e10: 0a 0a 53 65 63 74 69 6f 6e 20 7b 4f 4e 20 43 4f  ..Section {ON CO
7e20: 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63  NFLICT clause} c
7e30: 6f 6e 66 6c 69 63 74 0a 0a 53 79 6e 74 61 78 20  onflict..Syntax 
7e40: 7b 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65  {conflict-clause
7e50: 7d 20 7b 0a 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  } {.ON CONFLICT 
7e60: 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69  <conflict-algori
7e70: 74 68 6d 3e 0a 7d 20 7b 63 6f 6e 66 6c 69 63 74  thm>.} {conflict
7e80: 2d 61 6c 67 6f 72 69 74 68 6d 7d 20 7b 0a 52 4f  -algorithm} {.RO
7e90: 4c 4c 42 41 43 4b 20 7c 20 41 42 4f 52 54 20 7c  LLBACK | ABORT |
7ea0: 20 46 41 49 4c 20 7c 20 49 47 4e 4f 52 45 20 7c   FAIL | IGNORE |
7eb0: 20 52 45 50 4c 41 43 45 0a 7d 0a 0a 70 75 74 73   REPLACE.}..puts
7ec0: 20 7b 0a 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e   {.<p>The ON CON
7ed0: 46 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73 20  FLICT clause is 
7ee0: 6e 6f 74 20 61 20 73 65 70 61 72 61 74 65 20 53  not a separate S
7ef0: 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 49 74 20  QL command.  It 
7f00: 69 73 20 61 0a 6e 6f 6e 2d 73 74 61 6e 64 61 72  is a.non-standar
7f10: 64 20 63 6c 61 75 73 65 20 74 68 61 74 20 63 61  d clause that ca
7f20: 6e 20 61 70 70 65 61 72 20 69 6e 20 6d 61 6e 79  n appear in many
7f30: 20 6f 74 68 65 72 20 53 51 4c 20 63 6f 6d 6d 61   other SQL comma
7f40: 6e 64 73 2e 0a 49 74 20 69 73 20 67 69 76 65 6e  nds..It is given
7f50: 20 69 74 73 20 6f 77 6e 20 73 65 63 74 69 6f 6e   its own section
7f60: 20 69 6e 20 74 68 69 73 20 64 6f 63 75 6d 65 6e   in this documen
7f70: 74 20 62 65 63 61 75 73 65 20 69 74 20 69 73 20  t because it is 
7f80: 6e 6f 74 0a 70 61 72 74 20 6f 66 20 73 74 61 6e  not.part of stan
7f90: 64 61 72 64 20 53 51 4c 20 61 6e 64 20 74 68 65  dard SQL and the
7fa0: 72 65 66 6f 72 65 20 6d 69 67 68 74 20 6e 6f 74  refore might not
7fb0: 20 62 65 20 66 61 6d 69 6c 69 61 72 2e 3c 2f 70   be familiar.</p
7fc0: 3e 0a 0a 3c 70 3e 54 68 65 20 73 79 6e 74 61 78  >..<p>The syntax
7fd0: 20 66 6f 72 20 74 68 65 20 4f 4e 20 43 4f 4e 46   for the ON CONF
7fe0: 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 61  LICT clause is a
7ff0: 73 20 73 68 6f 77 6e 20 61 62 6f 76 65 20 66 6f  s shown above fo
8000: 72 0a 74 68 65 20 43 52 45 41 54 45 20 54 41 42  r.the CREATE TAB
8010: 4c 45 2c 20 43 52 45 41 54 45 20 49 4e 44 45 58  LE, CREATE INDEX
8020: 2c 20 61 6e 64 20 42 45 47 49 4e 20 54 52 41 4e  , and BEGIN TRAN
8030: 53 41 43 54 49 4f 4e 20 63 6f 6d 6d 61 6e 64 73  SACTION commands
8040: 2e 0a 46 6f 72 20 74 68 65 20 43 4f 50 59 2c 20  ..For the COPY, 
8050: 49 4e 53 45 52 54 2c 20 61 6e 64 20 55 50 44 41  INSERT, and UPDA
8060: 54 45 20 63 6f 6d 6d 61 6e 64 73 2c 20 74 68 65  TE commands, the
8070: 20 6b 65 79 77 6f 72 64 73 0a 22 4f 4e 20 43 4f   keywords."ON CO
8080: 4e 46 4c 49 43 54 22 20 61 72 65 20 72 65 70 6c  NFLICT" are repl
8090: 61 63 65 64 20 62 79 20 22 4f 52 22 2c 20 74 6f  aced by "OR", to
80a0: 20 6d 61 6b 65 20 74 68 65 20 73 79 6e 74 61 78   make the syntax
80b0: 20 73 65 65 6d 20 6d 6f 72 65 0a 6e 61 74 75 72   seem more.natur
80c0: 61 6c 2e 20 20 42 75 74 20 74 68 65 20 6d 65 61  al.  But the mea
80d0: 6e 69 6e 67 20 6f 66 20 74 68 65 20 63 6c 61 75  ning of the clau
80e0: 73 65 20 69 73 20 74 68 65 20 73 61 6d 65 20 65  se is the same e
80f0: 69 74 68 65 72 20 77 61 79 2e 3c 2f 70 3e 0a 0a  ither way.</p>..
8100: 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49  <p>The ON CONFLI
8110: 43 54 20 63 6c 61 75 73 65 20 73 70 65 63 69 66  CT clause specif
8120: 69 65 73 20 61 6e 20 61 6c 67 6f 72 69 74 68 6d  ies an algorithm
8130: 20 75 73 65 64 20 74 6f 20 72 65 73 6f 6c 76 65   used to resolve
8140: 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66  .constraint conf
8150: 6c 69 63 74 73 2e 20 20 54 68 65 72 65 20 61 72  licts.  There ar
8160: 65 20 66 69 76 65 20 63 68 6f 69 63 65 73 3a 20  e five choices: 
8170: 52 4f 4c 4c 42 41 43 4b 2c 20 41 42 4f 52 54 2c  ROLLBACK, ABORT,
8180: 0a 46 41 49 4c 2c 20 49 47 4e 4f 52 45 2c 20 61  .FAIL, IGNORE, a
8190: 6e 64 20 52 45 50 4c 41 43 45 2e 20 54 68 65 20  nd REPLACE. The 
81a0: 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74 68  default algorith
81b0: 6d 20 69 73 20 41 42 4f 52 54 2e 20 20 54 68 69  m is ABORT.  Thi
81c0: 73 0a 69 73 20 77 68 61 74 20 74 68 65 79 20 6d  s.is what they m
81d0: 65 61 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c  ean:</p>..<dl>.<
81e0: 64 74 3e 3c 62 3e 52 4f 4c 4c 42 41 43 4b 3c 2f  dt><b>ROLLBACK</
81f0: 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57  b></dt>.<dd><p>W
8200: 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74  hen a constraint
8210: 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
8220: 73 2c 20 61 6e 20 69 6d 6d 65 64 69 61 74 65 20  s, an immediate 
8230: 52 4f 4c 4c 42 41 43 4b 0a 6f 63 63 75 72 73 2c  ROLLBACK.occurs,
8240: 20 74 68 75 73 20 65 6e 64 69 6e 67 20 74 68 65   thus ending the
8250: 20 63 75 72 72 65 6e 74 20 74 72 61 6e 73 61 63   current transac
8260: 74 69 6f 6e 2c 20 61 6e 64 20 74 68 65 20 63 6f  tion, and the co
8270: 6d 6d 61 6e 64 20 61 62 6f 72 74 73 0a 77 69 74  mmand aborts.wit
8280: 68 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65 20  h a return code 
8290: 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  of SQLITE_CONSTR
82a0: 41 49 4e 54 2e 20 20 49 66 20 6e 6f 20 74 72 61  AINT.  If no tra
82b0: 6e 73 61 63 74 69 6f 6e 20 69 73 0a 61 63 74 69  nsaction is.acti
82c0: 76 65 20 28 6f 74 68 65 72 20 74 68 61 6e 20 74  ve (other than t
82d0: 68 65 20 69 6d 70 6c 69 65 64 20 74 72 61 6e 73  he implied trans
82e0: 61 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63  action that is c
82f0: 72 65 61 74 65 64 20 6f 6e 20 65 76 65 72 79 0a  reated on every.
8300: 63 6f 6d 6d 61 6e 64 29 20 74 68 65 6e 20 74 68  command) then th
8310: 69 73 20 61 6c 67 6f 72 69 74 68 6d 20 77 6f 72  is algorithm wor
8320: 6b 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 41  ks the same as A
8330: 42 4f 52 54 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  BORT.</p></dd>..
8340: 3c 64 74 3e 3c 62 3e 41 42 4f 52 54 3c 2f 62 3e  <dt><b>ABORT</b>
8350: 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65  </dt>.<dd><p>Whe
8360: 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  n a constraint v
8370: 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
8380: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 62 61 63   the command bac
8390: 6b 73 20 6f 75 74 0a 61 6e 79 20 70 72 69 6f 72  ks out.any prior
83a0: 20 63 68 61 6e 67 65 73 20 69 74 20 6d 69 67 68   changes it migh
83b0: 74 20 68 61 76 65 20 6d 61 64 65 20 61 6e 64 20  t have made and 
83c0: 61 62 6f 72 74 73 20 77 69 74 68 20 61 20 72 65  aborts with a re
83d0: 74 75 72 6e 20 63 6f 64 65 0a 6f 66 20 53 51 4c  turn code.of SQL
83e0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20  ITE_CONSTRAINT. 
83f0: 20 42 75 74 20 6e 6f 20 52 4f 4c 4c 42 41 43 4b   But no ROLLBACK
8400: 20 69 73 20 65 78 65 63 75 74 65 64 20 73 6f 20   is executed so 
8410: 63 68 61 6e 67 65 73 0a 66 72 6f 6d 20 70 72 69  changes.from pri
8420: 6f 72 20 63 6f 6d 6d 61 6e 64 73 20 77 69 74 68  or commands with
8430: 69 6e 20 74 68 65 20 73 61 6d 65 20 74 72 61 6e  in the same tran
8440: 73 61 63 74 69 6f 6e 0a 61 72 65 20 70 72 65 73  saction.are pres
8450: 65 72 76 65 64 2e 20 20 54 68 69 73 20 69 73 20  erved.  This is 
8460: 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61  the default beha
8470: 76 69 6f 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  vior.</p></dd>..
8480: 3c 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f 62 3e 3c  <dt><b>FAIL</b><
8490: 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e  /dt>.<dd><p>When
84a0: 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
84b0: 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
84c0: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72  the command abor
84d0: 74 73 20 77 69 74 68 20 61 0a 72 65 74 75 72 6e  ts with a.return
84e0: 20 63 6f 64 65 20 53 51 4c 49 54 45 5f 43 4f 4e   code SQLITE_CON
84f0: 53 54 52 41 49 4e 54 2e 20 20 42 75 74 20 61 6e  STRAINT.  But an
8500: 79 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65  y changes to the
8510: 20 64 61 74 61 62 61 73 65 20 74 68 61 74 0a 74   database that.t
8520: 68 65 20 63 6f 6d 6d 61 6e 64 20 6d 61 64 65 20  he command made 
8530: 70 72 69 6f 72 20 74 6f 20 65 6e 63 6f 75 6e 74  prior to encount
8540: 65 72 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72  ering the constr
8550: 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 61  aint violation.a
8560: 72 65 20 70 72 65 73 65 72 76 65 64 20 61 6e 64  re preserved and
8570: 20 61 72 65 20 6e 6f 74 20 62 61 63 6b 65 64 20   are not backed 
8580: 6f 75 74 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  out.  For exampl
8590: 65 2c 20 69 66 20 61 6e 20 55 50 44 41 54 45 0a  e, if an UPDATE.
85a0: 73 74 61 74 65 6d 65 6e 74 20 65 6e 63 6f 75 6e  statement encoun
85b0: 74 65 72 65 64 20 61 20 63 6f 6e 73 74 72 61 69  tered a constrai
85c0: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 6e 20  nt violation on 
85d0: 74 68 65 20 31 30 30 74 68 20 72 6f 77 20 74 68  the 100th row th
85e0: 61 74 0a 69 74 20 61 74 74 65 6d 70 74 73 20 74  at.it attempts t
85f0: 6f 20 75 70 64 61 74 65 2c 20 74 68 65 6e 20 74  o update, then t
8600: 68 65 20 66 69 72 73 74 20 39 39 20 72 6f 77 20  he first 99 row 
8610: 63 68 61 6e 67 65 73 20 61 72 65 20 70 72 65 73  changes are pres
8620: 65 72 76 65 64 0a 62 75 74 20 63 68 61 6e 67 65  erved.but change
8630: 73 20 74 6f 20 72 6f 77 73 20 31 30 30 20 61 6e  s to rows 100 an
8640: 64 20 62 65 79 6f 6e 64 20 6e 65 76 65 72 20 6f  d beyond never o
8650: 63 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  ccur.</p></dd>..
8660: 3c 64 74 3e 3c 62 3e 49 47 4e 4f 52 45 3c 2f 62  <dt><b>IGNORE</b
8670: 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68  ></dt>.<dd><p>Wh
8680: 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20  en a constraint 
8690: 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
86a0: 2c 20 74 68 65 20 6f 6e 65 20 72 6f 77 20 74 68  , the one row th
86b0: 61 74 20 63 6f 6e 74 61 69 6e 73 0a 74 68 65 20  at contains.the 
86c0: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
86d0: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 69 6e 73 65  tion is not inse
86e0: 72 74 65 64 20 6f 72 20 63 68 61 6e 67 65 64 2e  rted or changed.
86f0: 20 20 42 75 74 20 74 68 65 20 63 6f 6d 6d 61 6e    But the comman
8700: 64 0a 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63  d.continues exec
8710: 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20  uting normally. 
8720: 20 4f 74 68 65 72 20 72 6f 77 73 20 62 65 66 6f   Other rows befo
8730: 72 65 20 61 6e 64 20 61 66 74 65 72 20 74 68 65  re and after the
8740: 20 72 6f 77 20 74 68 61 74 0a 63 6f 6e 74 61 69   row that.contai
8750: 6e 65 64 20 74 68 65 20 63 6f 6e 73 74 72 61 69  ned the constrai
8760: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 63 6f 6e  nt violation con
8770: 74 69 6e 75 65 20 74 6f 20 62 65 20 69 6e 73 65  tinue to be inse
8780: 72 74 65 64 20 6f 72 20 75 70 64 61 74 65 64 0a  rted or updated.
8790: 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65 72  normally.  No er
87a0: 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ror is returned.
87b0: 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c  </p></dd>..<dt><
87c0: 62 3e 52 45 50 4c 41 43 45 3c 2f 62 3e 3c 2f 64  b>REPLACE</b></d
87d0: 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61  t>.<dd><p>When a
87e0: 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69   UNIQUE constrai
87f0: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63  nt violation occ
8800: 75 72 73 2c 20 74 68 65 20 70 72 65 2d 65 78 69  urs, the pre-exi
8810: 73 74 69 6e 67 20 72 6f 77 0a 74 68 61 74 20 69  sting row.that i
8820: 73 20 63 61 75 73 69 6e 67 20 74 68 65 20 63 6f  s causing the co
8830: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
8840: 6f 6e 20 69 73 20 72 65 6d 6f 76 65 64 20 70 72  on is removed pr
8850: 69 6f 72 20 74 6f 20 69 6e 73 65 72 74 69 6e 67  ior to inserting
8860: 0a 6f 72 20 75 70 64 61 74 69 6e 67 20 74 68 65  .or updating the
8870: 20 63 75 72 72 65 6e 74 20 72 6f 77 2e 20 20 54   current row.  T
8880: 68 75 73 20 74 68 65 20 69 6e 73 65 72 74 20 6f  hus the insert o
8890: 72 20 75 70 64 61 74 65 20 61 6c 77 61 79 73 20  r update always 
88a0: 6f 63 63 75 72 73 2e 0a 54 68 65 20 63 6f 6d 6d  occurs..The comm
88b0: 61 6e 64 20 63 6f 6e 74 69 6e 75 65 73 20 65 78  and continues ex
88c0: 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79  ecuting normally
88d0: 2e 20 20 4e 6f 20 65 72 72 6f 72 20 69 73 20 72  .  No error is r
88e0: 65 74 75 72 6e 65 64 2e 3c 2f 70 3e 0a 3c 70 3e  eturned.</p>.<p>
88f0: 49 66 20 61 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f  If a NOT NULL co
8900: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
8910: 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 4e  on occurs, the N
8920: 55 4c 4c 20 76 61 6c 75 65 20 69 73 20 72 65 70  ULL value is rep
8930: 6c 61 63 65 64 0a 62 79 20 74 68 65 20 64 65 66  laced.by the def
8940: 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 20 74  ault value for t
8950: 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 49 66 20  hat column.  If 
8960: 74 68 65 20 63 6f 6c 75 6d 6e 20 68 61 73 20 6e  the column has n
8970: 6f 20 64 65 66 61 75 6c 74 0a 76 61 6c 75 65 2c  o default.value,
8980: 20 74 68 65 6e 20 74 68 65 20 41 42 4f 52 54 20   then the ABORT 
8990: 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65  algorithm is use
89a0: 64 2e 3c 2f 70 3e 0a 3c 2f 64 64 3e 0a 3c 2f 64  d.</p>.</dd>.</d
89b0: 6c 3e 0a 0a 3c 70 3e 0a 54 68 65 20 63 6f 6e 66  l>..<p>.The conf
89c0: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
89d0: 61 6c 67 6f 72 69 74 68 6d 20 63 61 6e 20 62 65  algorithm can be
89e0: 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 74 68   specified in th
89f0: 72 65 65 20 70 6c 61 63 65 73 2c 0a 69 6e 20 6f  ree places,.in o
8a00: 72 64 65 72 20 66 72 6f 6d 20 6c 6f 77 65 73 74  rder from lowest
8a10: 20 74 6f 20 68 69 67 68 65 73 74 20 70 72 65 63   to highest prec
8a20: 65 64 65 6e 63 65 3a 0a 3c 2f 70 3e 0a 0a 3c 6f  edence:.</p>..<o
8a30: 6c 3e 0a 3c 6c 69 3e 3c 70 3e 0a 4f 6e 20 61 20  l>.<li><p>.On a 
8a40: 42 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f  BEGIN TRANSACTIO
8a50: 4e 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e 3c  N command..</p><
8a60: 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 4f 6e  /li>..<li><p>.On
8a70: 20 69 6e 64 69 76 69 64 75 61 6c 20 63 6f 6e 73   individual cons
8a80: 74 72 61 69 6e 74 73 20 77 69 74 68 69 6e 20 61  traints within a
8a90: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 6f 72   CREATE TABLE or
8aa0: 20 43 52 45 41 54 45 20 49 4e 44 45 58 0a 73 74   CREATE INDEX.st
8ab0: 61 74 65 6d 65 6e 74 2e 0a 3c 2f 70 3e 3c 2f 6c  atement..</p></l
8ac0: 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 49 6e 20 74  i>..<li><p>.In t
8ad0: 68 65 20 4f 52 20 63 6c 61 75 73 65 20 6f 66 20  he OR clause of 
8ae0: 61 20 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c 20  a COPY, INSERT, 
8af0: 6f 72 20 55 50 44 41 54 45 20 63 6f 6d 6d 61 6e  or UPDATE comman
8b00: 64 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 6f  d..</p></li>.</o
8b10: 6c 3e 0a 0a 3c 70 3e 54 68 65 20 61 6c 67 6f 72  l>..<p>The algor
8b20: 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 69  ithm specified i
8b30: 6e 20 74 68 65 20 4f 52 20 63 6c 61 75 73 65 20  n the OR clause 
8b40: 6f 66 20 61 20 43 4f 50 59 2c 20 49 4e 53 45 52  of a COPY, INSER
8b50: 54 2c 20 6f 72 20 55 50 44 41 54 45 0a 6f 76 65  T, or UPDATE.ove
8b60: 72 72 69 64 65 73 20 61 6e 79 20 61 6c 67 6f 72  rrides any algor
8b70: 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 62  ithm specified b
8b80: 79 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45  y a CREATE TABLE
8b90: 20 6f 72 20 43 52 45 41 54 45 20 49 4e 44 45 58   or CREATE INDEX
8ba0: 2e 0a 54 68 65 20 61 6c 67 6f 72 69 74 68 6d 20  ..The algorithm 
8bb0: 73 70 65 63 69 66 69 65 64 20 77 69 74 68 69 6e  specified within
8bc0: 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45 20   a CREATE TABLE 
8bd0: 6f 72 20 43 52 45 41 54 45 20 49 4e 44 45 58 20  or CREATE INDEX 
8be0: 77 69 6c 6c 2c 20 69 6e 20 74 75 72 6e 2c 0a 6f  will, in turn,.o
8bf0: 76 65 72 72 69 64 65 20 74 68 65 20 61 6c 67 6f  verride the algo
8c00: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
8c10: 62 79 20 61 20 42 45 47 49 4e 20 54 52 41 4e 53  by a BEGIN TRANS
8c20: 41 43 54 49 4f 4e 20 63 6f 6d 6d 61 6e 64 2e 0a  ACTION command..
8c30: 49 66 20 6e 6f 20 61 6c 67 6f 72 69 74 68 6d 20  If no algorithm 
8c40: 69 73 20 73 70 65 63 69 66 69 65 64 20 61 6e 79  is specified any
8c50: 77 68 65 72 65 2c 20 74 68 65 20 41 42 4f 52 54  where, the ABORT
8c60: 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73   algorithm is us
8c70: 65 64 2e 3c 2f 70 3e 0a 0a 7d 0a 23 20 3c 70 3e  ed.</p>..}.# <p>
8c80: 46 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69  For additional i
8c90: 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 73 65 65 20  nformation, see 
8ca0: 0a 23 20 3c 61 20 68 72 65 66 3d 22 63 6f 6e 66  .# <a href="conf
8cb0: 6c 69 63 74 2e 68 74 6d 6c 22 3e 63 6f 6e 66 6c  lict.html">confl
8cc0: 69 63 74 2e 68 74 6d 6c 3c 2f 61 3e 2e 3c 2f 70  ict.html</a>.</p
8cd0: 3e 0a 0a 0a 53 65 63 74 69 6f 6e 20 50 52 41 47  >...Section PRAG
8ce0: 4d 41 20 70 72 61 67 6d 61 0a 0a 53 79 6e 74 61  MA pragma..Synta
8cf0: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
8d00: 7d 20 7b 0a 50 52 41 47 4d 41 20 3c 6e 61 6d 65  } {.PRAGMA <name
8d10: 3e 20 3d 20 3c 76 61 6c 75 65 3e 20 7c 0a 50 52  > = <value> |.PR
8d20: 41 47 4d 41 20 3c 66 75 6e 63 74 69 6f 6e 3e 28  AGMA <function>(
8d30: 3c 61 72 67 3e 29 0a 7d 0a 0a 70 75 74 73 20 7b  <arg>).}..puts {
8d40: 0a 3c 70 3e 54 68 65 20 50 52 41 47 4d 41 20 63  .<p>The PRAGMA c
8d50: 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 20 74  ommand is used t
8d60: 6f 20 6d 6f 64 69 66 79 20 74 68 65 20 6f 70 65  o modify the ope
8d70: 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 53 51  ration of the SQ
8d80: 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0a 54 68  Lite library..Th
8d90: 65 20 70 72 61 67 6d 61 20 63 6f 6d 6d 61 6e 64  e pragma command
8da0: 20 69 73 20 65 78 70 65 72 69 6d 65 6e 74 61 6c   is experimental
8db0: 20 61 6e 64 20 73 70 65 63 69 66 69 63 20 70 72   and specific pr
8dc0: 61 67 6d 61 20 73 74 61 74 65 6d 65 6e 74 73 20  agma statements 
8dd0: 6d 61 79 0a 72 65 6d 6f 76 65 64 20 6f 72 20 61  may.removed or a
8de0: 64 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 72  dded in future r
8df0: 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74  eleases of SQLit
8e00: 65 2e 20 20 55 73 65 20 74 68 69 73 20 63 6f 6d  e.  Use this com
8e10: 6d 61 6e 64 0a 77 69 74 68 20 63 61 75 74 69 6f  mand.with cautio
8e20: 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 63  n.</p>..<p>The c
8e30: 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74  urrent implement
8e40: 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 73 20 74  ation supports t
8e50: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 72 61  he following pra
8e60: 67 6d 61 73 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a  gmas:</p>..<ul>.
8e70: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
8e80: 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20   cache_size;.   
8e90: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 63      <br>PRAGMA c
8ea0: 61 63 68 65 5f 73 69 7a 65 20 3d 20 3c 2f 62 3e  ache_size = </b>
8eb0: 3c 69 3e 4e 75 6d 62 65 72 2d 6f 66 2d 70 61 67  <i>Number-of-pag
8ec0: 65 73 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f  es</i><b>;</b></
8ed0: 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20  p>.    <p>Query 
8ee0: 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20 6d 61  or change the ma
8ef0: 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20  ximum number of 
8f00: 64 61 74 61 62 61 73 65 20 64 69 73 6b 20 70 61  database disk pa
8f10: 67 65 73 20 74 68 61 74 20 53 51 4c 69 74 65 0a  ges that SQLite.
8f20: 20 20 20 20 77 69 6c 6c 20 68 6f 6c 64 20 69 6e      will hold in
8f30: 20 6d 65 6d 6f 72 79 20 61 74 20 6f 6e 63 65 2e   memory at once.
8f40: 20 20 45 61 63 68 20 70 61 67 65 20 75 73 65 73    Each page uses
8f50: 20 61 62 6f 75 74 20 31 2e 35 4b 20 6f 66 20 6d   about 1.5K of m
8f60: 65 6d 6f 72 79 2e 0a 20 20 20 20 54 68 65 20 64  emory..    The d
8f70: 65 66 61 75 6c 74 20 63 61 63 68 65 20 73 69 7a  efault cache siz
8f80: 65 20 69 73 20 32 30 30 30 2e 20 20 49 66 20 79  e is 2000.  If y
8f90: 6f 75 20 61 72 65 20 64 6f 69 6e 67 20 55 50 44  ou are doing UPD
8fa0: 41 54 45 73 20 6f 72 20 44 45 4c 45 54 45 73 0a  ATEs or DELETEs.
8fb0: 20 20 20 20 74 68 61 74 20 63 68 61 6e 67 65 20      that change 
8fc0: 6d 61 6e 79 20 72 6f 77 73 20 6f 66 20 61 20 64  many rows of a d
8fd0: 61 74 61 62 61 73 65 20 61 6e 64 20 79 6f 75 20  atabase and you 
8fe0: 64 6f 20 6e 6f 74 20 6d 69 6e 64 20 69 66 20 53  do not mind if S
8ff0: 51 4c 69 74 65 0a 20 20 20 20 75 73 65 73 20 6d  QLite.    uses m
9000: 6f 72 65 20 6d 65 6d 6f 72 79 2c 20 79 6f 75 20  ore memory, you 
9010: 63 61 6e 20 69 6e 63 72 65 61 73 65 20 74 68 65  can increase the
9020: 20 63 61 63 68 65 20 73 69 7a 65 20 66 6f 72 20   cache size for 
9030: 61 20 70 6f 73 73 69 62 6c 65 20 73 70 65 65 64  a possible speed
9040: 0a 20 20 20 20 69 6d 70 72 6f 76 65 6d 65 6e 74  .    improvement
9050: 2e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 57 68 65  .</p>.    <p>Whe
9060: 6e 20 79 6f 75 20 63 68 61 6e 67 65 20 74 68 65  n you change the
9070: 20 63 61 63 68 65 20 73 69 7a 65 20 75 73 69 6e   cache size usin
9080: 67 20 74 68 65 20 63 61 63 68 65 5f 73 69 7a 65  g the cache_size
9090: 20 70 72 61 67 6d 61 2c 20 74 68 65 0a 20 20 20   pragma, the.   
90a0: 20 63 68 61 6e 67 65 20 6f 6e 6c 79 20 65 6e 64   change only end
90b0: 75 72 65 73 20 66 6f 72 20 74 68 65 20 63 75 72  ures for the cur
90c0: 72 65 6e 74 20 73 65 73 73 69 6f 6e 2e 20 20 54  rent session.  T
90d0: 68 65 20 63 61 63 68 65 20 73 69 7a 65 20 72 65  he cache size re
90e0: 76 65 72 74 73 0a 20 20 20 20 74 6f 20 74 68 65  verts.    to the
90f0: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 77   default value w
9100: 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  hen the database
9110: 20 69 73 20 63 6c 6f 73 65 64 20 61 6e 64 20 72   is closed and r
9120: 65 6f 70 65 6e 65 64 2e 20 20 55 73 65 0a 20 20  eopened.  Use.  
9130: 20 20 74 68 65 20 3c 62 3e 64 65 66 61 75 6c 74    the <b>default
9140: 5f 63 61 63 68 65 5f 73 69 7a 65 3c 2f 62 3e 20  _cache_size</b> 
9150: 70 72 61 67 6d 61 20 74 6f 20 63 68 65 63 6b 20  pragma to check 
9160: 74 68 65 20 63 61 63 68 65 20 73 69 7a 65 20 70  the cache size p
9170: 65 72 6d 61 6e 65 6e 74 6c 79 0a 20 20 20 20 3c  ermanently.    <
9180: 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70  /p></li>..<li><p
9190: 3e 3c 62 3e 50 52 41 47 4d 41 20 63 6f 75 6e 74  ><b>PRAGMA count
91a0: 5f 63 68 61 6e 67 65 73 20 3d 20 4f 4e 3b 0a 20  _changes = ON;. 
91b0: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
91c0: 20 63 6f 75 6e 74 5f 63 68 61 6e 67 65 73 20 3d   count_changes =
91d0: 20 4f 46 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20   OFF;</b></p>.  
91e0: 20 20 3c 70 3e 57 68 65 6e 20 6f 6e 2c 20 74 68    <p>When on, th
91f0: 65 20 43 4f 55 4e 54 5f 43 48 41 4e 47 45 53 20  e COUNT_CHANGES 
9200: 70 72 61 67 6d 61 20 63 61 75 73 65 73 20 74 68  pragma causes th
9210: 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  e callback funct
9220: 69 6f 6e 20 74 6f 0a 20 20 20 20 62 65 20 69 6e  ion to.    be in
9230: 76 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20 65  voked once for e
9240: 61 63 68 20 44 45 4c 45 54 45 2c 20 49 4e 53 45  ach DELETE, INSE
9250: 52 54 2c 20 6f 72 20 55 50 44 41 54 45 20 6f 70  RT, or UPDATE op
9260: 65 72 61 74 69 6f 6e 2e 20 20 54 68 65 0a 20 20  eration.  The.  
9270: 20 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68    argument is th
9280: 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73  e number of rows
9290: 20 74 68 61 74 20 77 65 72 65 20 63 68 61 6e 67   that were chang
92a0: 65 64 2e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54  ed.</p>.    <p>T
92b0: 68 69 73 20 70 72 61 67 6d 61 20 6d 61 79 20 62  his pragma may b
92c0: 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 66  e removed from f
92d0: 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f  uture versions o
92e0: 66 20 53 51 4c 69 74 65 2e 0a 20 20 20 20 43 6f  f SQLite..    Co
92f0: 6e 73 69 64 65 72 20 75 73 69 6e 67 20 74 68 65  nsider using the
9300: 20 3c 62 3e 73 71 6c 69 74 65 5f 63 68 61 6e 67   <b>sqlite_chang
9310: 65 73 28 29 3c 2f 62 3e 20 41 50 49 20 66 75 6e  es()</b> API fun
9320: 63 74 69 6f 6e 20 69 6e 73 74 65 61 64 2e 3c 2f  ction instead.</
9330: 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e  p></li>..<li><p>
9340: 3c 62 3e 50 52 41 47 4d 41 20 64 65 66 61 75 6c  <b>PRAGMA defaul
9350: 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20  t_cache_size;.  
9360: 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20       <br>PRAGMA 
9370: 64 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69  default_cache_si
9380: 7a 65 20 3d 20 3c 2f 62 3e 3c 69 3e 4e 75 6d 62  ze = </b><i>Numb
9390: 65 72 2d 6f 66 2d 70 61 67 65 73 3c 2f 69 3e 3c  er-of-pages</i><
93a0: 62 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20  b>;</b></p>.    
93b0: 3c 70 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e  <p>Query or chan
93c0: 67 65 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e  ge the maximum n
93d0: 75 6d 62 65 72 20 6f 66 20 64 61 74 61 62 61 73  umber of databas
93e0: 65 20 64 69 73 6b 20 70 61 67 65 73 20 74 68 61  e disk pages tha
93f0: 74 20 53 51 4c 69 74 65 0a 20 20 20 20 77 69 6c  t SQLite.    wil
9400: 6c 20 68 6f 6c 64 20 69 6e 20 6d 65 6d 6f 72 79  l hold in memory
9410: 20 61 74 20 6f 6e 63 65 2e 20 20 45 61 63 68 20   at once.  Each 
9420: 70 61 67 65 20 75 73 65 73 20 61 62 6f 75 74 20  page uses about 
9430: 31 2e 35 4b 20 6f 66 20 6d 65 6d 6f 72 79 2e 0a  1.5K of memory..
9440: 20 20 20 20 54 68 69 73 20 70 72 61 67 6d 61 20      This pragma 
9450: 77 6f 72 6b 73 20 6c 69 6b 65 20 74 68 65 20 3c  works like the <
9460: 62 3e 63 61 63 68 65 5f 73 69 7a 65 3c 2f 62 3e  b>cache_size</b>
9470: 20 70 72 61 67 6d 61 20 77 69 74 68 20 74 68 65   pragma with the
9480: 20 61 64 64 69 74 69 6f 6e 0a 20 20 20 20 66 65   addition.    fe
9490: 61 74 75 72 65 20 74 68 61 74 20 69 74 20 63 68  ature that it ch
94a0: 61 6e 67 65 73 20 74 68 65 20 63 61 63 68 65 20  anges the cache 
94b0: 73 69 7a 65 20 70 65 72 73 69 73 74 65 6e 74 6c  size persistentl
94c0: 79 2e 20 20 57 69 74 68 20 74 68 69 73 20 70 72  y.  With this pr
94d0: 61 67 6d 61 2c 0a 20 20 20 20 79 6f 75 20 63 61  agma,.    you ca
94e0: 6e 20 73 65 74 20 74 68 65 20 63 61 63 68 65 20  n set the cache 
94f0: 73 69 7a 65 20 6f 6e 63 65 20 61 6e 64 20 74 68  size once and th
9500: 61 74 20 73 65 74 74 69 6e 67 20 69 73 20 72 65  at setting is re
9510: 74 61 69 6e 65 64 20 61 6e 64 20 72 65 75 73 65  tained and reuse
9520: 64 0a 20 20 20 20 65 76 65 72 79 74 69 6d 65 20  d.    everytime 
9530: 79 6f 75 20 72 65 6f 70 65 6e 20 74 68 65 20 64  you reopen the d
9540: 61 74 61 62 61 73 65 2e 3c 2f 70 3e 3c 2f 6c 69  atabase.</p></li
9550: 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41  >..<li><p><b>PRA
9560: 47 4d 41 20 64 65 66 61 75 6c 74 5f 73 79 6e 63  GMA default_sync
9570: 68 72 6f 6e 6f 75 73 3b 0a 20 20 20 20 20 20 20  hronous;.       
9580: 3c 62 72 3e 50 52 41 47 4d 41 20 64 65 66 61 75  <br>PRAGMA defau
9590: 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d  lt_synchronous =
95a0: 20 4f 4e 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e   ON;.       <br>
95b0: 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 73  PRAGMA default_s
95c0: 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 4f 46 46  ynchronous = OFF
95d0: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
95e0: 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e 67 65  >Query or change
95f0: 20 74 68 65 20 73 65 74 74 69 6e 67 20 6f 66 20   the setting of 
9600: 74 68 65 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73  the "synchronous
9610: 22 20 66 6c 61 67 20 69 6e 0a 20 20 20 20 74 68  " flag in.    th
9620: 65 20 64 61 74 61 62 61 73 65 2e 20 20 57 68 65  e database.  Whe
9630: 6e 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73  n synchronous is
9640: 20 6f 6e 20 28 74 68 65 20 64 65 66 61 75 6c 74   on (the default
9650: 29 2c 20 74 68 65 20 53 51 4c 69 74 65 20 64 61  ), the SQLite da
9660: 74 61 62 61 73 65 0a 20 20 20 20 65 6e 67 69 6e  tabase.    engin
9670: 65 20 77 69 6c 6c 20 70 61 75 73 65 20 61 74 20  e will pause at 
9680: 63 72 69 74 69 63 61 6c 20 6d 6f 6d 65 6e 74 73  critical moments
9690: 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68   to make sure th
96a0: 61 74 20 64 61 74 61 20 68 61 73 20 61 63 74 75  at data has actu
96b0: 61 6c 6c 79 0a 20 20 20 20 62 65 20 77 72 69 74  ally.    be writ
96c0: 74 65 6e 20 74 6f 20 74 68 65 20 64 69 73 6b 20  ten to the disk 
96d0: 73 75 72 66 61 63 65 2e 20 20 28 49 6e 20 6f 74  surface.  (In ot
96e0: 68 65 72 20 77 6f 72 64 73 2c 20 69 74 20 69 6e  her words, it in
96f0: 76 6f 6b 65 73 20 74 68 65 0a 20 20 20 20 65 71  vokes the.    eq
9700: 75 69 76 61 6c 65 6e 74 20 6f 66 20 74 68 65 20  uivalent of the 
9710: 3c 62 3e 66 73 79 6e 63 28 29 3c 2f 62 3e 20 73  <b>fsync()</b> s
9720: 79 73 74 65 6d 20 63 61 6c 6c 2e 29 20 20 49 6e  ystem call.)  In
9730: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 6d 6f 64   synchronous mod
9740: 65 2c 0a 20 20 20 20 61 6e 20 53 51 4c 69 74 65  e,.    an SQLite
9750: 20 64 61 74 61 62 61 73 65 20 73 68 6f 75 6c 64   database should
9760: 20 62 65 20 66 75 6c 6c 79 20 72 65 63 6f 76 65   be fully recove
9770: 72 61 62 6c 65 20 65 76 65 6e 20 69 66 20 74 68  rable even if th
9780: 65 20 6f 70 65 72 61 74 69 6e 67 0a 20 20 20 20  e operating.    
9790: 73 79 73 74 65 6d 20 63 72 61 73 68 65 73 20 6f  system crashes o
97a0: 72 20 70 6f 77 65 72 20 69 73 20 69 6e 74 65 72  r power is inter
97b0: 72 75 70 74 65 64 20 75 6e 65 78 70 65 63 74 65  rupted unexpecte
97c0: 64 6c 79 2e 20 20 54 68 65 20 70 65 6e 61 6c 74  dly.  The penalt
97d0: 79 20 66 6f 72 0a 20 20 20 20 74 68 69 73 20 61  y for.    this a
97e0: 73 73 75 72 61 6e 63 65 20 69 73 20 74 68 61 74  ssurance is that
97f0: 20 73 6f 6d 65 20 64 61 74 61 62 61 73 65 20 6f   some database o
9800: 70 65 72 61 74 69 6f 6e 73 20 74 61 6b 65 20 6c  perations take l
9810: 6f 6e 67 65 72 20 62 65 63 61 75 73 65 20 74 68  onger because th
9820: 65 0a 20 20 20 20 65 6e 67 69 6e 65 20 68 61 73  e.    engine has
9830: 20 74 6f 20 77 61 69 74 20 6f 6e 20 74 68 65 20   to wait on the 
9840: 28 72 65 6c 61 74 69 76 65 6c 79 20 73 6c 6f 77  (relatively slow
9850: 29 20 64 69 73 6b 20 64 72 69 76 65 2e 20 20 54  ) disk drive.  T
9860: 68 65 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 20  he alternative. 
9870: 20 20 20 69 73 20 74 6f 20 74 75 72 6e 20 73 79     is to turn sy
9880: 6e 63 68 72 6f 6e 6f 75 73 20 6f 66 66 2e 20 20  nchronous off.  
9890: 57 69 74 68 20 73 79 6e 63 68 72 6f 6e 6f 75 73  With synchronous
98a0: 20 6f 66 66 2c 20 53 51 4c 69 74 65 20 63 6f 6e   off, SQLite con
98b0: 74 69 6e 75 65 73 0a 20 20 20 20 70 72 6f 63 65  tinues.    proce
98c0: 73 73 69 6e 67 20 61 73 20 73 6f 6f 6e 20 61 73  ssing as soon as
98d0: 20 69 74 20 68 61 73 20 68 61 6e 64 65 64 20 64   it has handed d
98e0: 61 74 61 20 6f 66 66 20 74 6f 20 74 68 65 20 6f  ata off to the o
98f0: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e  perating system.
9900: 0a 20 20 20 20 49 66 20 74 68 65 20 61 70 70 6c  .    If the appl
9910: 69 63 61 74 69 6f 6e 20 72 75 6e 6e 69 6e 67 20  ication running 
9920: 53 51 4c 69 74 65 20 63 72 61 73 68 65 73 2c 20  SQLite crashes, 
9930: 74 68 65 20 64 61 74 61 20 77 69 6c 6c 20 62 65  the data will be
9940: 20 73 61 66 65 2c 20 62 75 74 0a 20 20 20 20 74   safe, but.    t
9950: 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 75 6c  he database coul
9960: 64 20 28 69 6e 20 74 68 65 6f 72 79 29 20 62 65  d (in theory) be
9970: 63 6f 6d 65 20 63 6f 72 72 75 70 74 65 64 20 69  come corrupted i
9980: 66 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20  f the operating 
9990: 73 79 73 74 65 6d 0a 20 20 20 20 63 72 61 73 68  system.    crash
99a0: 65 73 20 6f 72 20 74 68 65 20 63 6f 6d 70 75 74  es or the comput
99b0: 65 72 20 73 75 64 64 65 6e 6c 79 20 6c 6f 73 65  er suddenly lose
99c0: 73 20 70 6f 77 65 72 2e 20 20 4f 6e 20 74 68 65  s power.  On the
99d0: 20 6f 74 68 65 72 20 68 61 6e 64 2c 20 73 6f 6d   other hand, som
99e0: 65 0a 20 20 20 20 6f 70 65 72 61 74 69 6f 6e 73  e.    operations
99f0: 20 61 72 65 20 61 73 20 6d 75 63 68 20 61 73 20   are as much as 
9a00: 35 30 20 6f 72 20 6d 6f 72 65 20 74 69 6d 65 73  50 or more times
9a10: 20 66 61 73 74 65 72 20 77 69 74 68 20 73 79 6e   faster with syn
9a20: 63 68 72 6f 6e 6f 75 73 20 6f 66 66 2e 0a 20 20  chronous off..  
9a30: 20 20 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54 68    </p>.    <p>Th
9a40: 69 73 20 70 72 61 67 6d 61 20 63 68 61 6e 67 65  is pragma change
9a50: 73 20 74 68 65 20 73 79 6e 63 68 72 6f 6e 6f 75  s the synchronou
9a60: 73 20 6d 6f 64 65 20 70 65 72 73 69 73 74 65 6e  s mode persisten
9a70: 74 6c 79 2e 20 20 4f 6e 63 65 20 63 68 61 6e 67  tly.  Once chang
9a80: 65 64 2c 0a 20 20 20 20 74 68 65 20 6d 6f 64 65  ed,.    the mode
9a90: 20 73 74 61 79 73 20 61 73 20 73 65 74 20 65 76   stays as set ev
9aa0: 65 6e 20 69 66 20 74 68 65 20 64 61 74 61 62 61  en if the databa
9ab0: 73 65 20 69 73 20 63 6c 6f 73 65 64 20 61 6e 64  se is closed and
9ac0: 20 72 65 6f 70 65 6e 65 64 2e 20 20 54 68 65 0a   reopened.  The.
9ad0: 20 20 20 20 3c 62 3e 73 79 6e 63 68 72 6f 6e 6f      <b>synchrono
9ae0: 75 73 3c 2f 62 3e 20 70 72 61 67 6d 61 20 64 6f  us</b> pragma do
9af0: 65 73 20 74 68 65 20 73 61 6d 65 20 74 68 69 6e  es the same thin
9b00: 67 20 62 75 74 20 6f 6e 6c 79 20 61 70 70 6c 69  g but only appli
9b10: 65 73 20 74 68 65 20 73 65 74 74 69 6e 67 0a 20  es the setting. 
9b20: 20 20 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e     to the curren
9b30: 74 20 73 65 73 73 69 6f 6e 2e 3c 2f 70 3e 0a 0a  t session.</p>..
9b40: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
9b50: 20 65 6d 70 74 79 5f 72 65 73 75 6c 74 5f 63 61   empty_result_ca
9b60: 6c 6c 62 61 63 6b 73 20 3d 20 4f 4e 3b 0a 20 20  llbacks = ON;.  
9b70: 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20       <br>PRAGMA 
9b80: 65 6d 70 74 79 5f 72 65 73 75 6c 74 5f 63 61 6c  empty_result_cal
9b90: 6c 62 61 63 6b 73 20 3d 20 4f 46 46 3b 3c 2f 62  lbacks = OFF;</b
9ba0: 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 57 68 65  ></p>.    <p>Whe
9bb0: 6e 20 6f 6e 2c 20 74 68 65 20 45 4d 50 54 59 5f  n on, the EMPTY_
9bc0: 52 45 53 55 4c 54 5f 43 41 4c 4c 42 41 43 4b 53  RESULT_CALLBACKS
9bd0: 20 70 72 61 67 6d 61 20 63 61 75 73 65 73 20 74   pragma causes t
9be0: 68 65 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20  he callback.    
9bf0: 66 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20 69  function to be i
9c00: 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20  nvoked once for 
9c10: 65 61 63 68 20 71 75 65 72 79 20 74 68 61 74 20  each query that 
9c20: 68 61 73 20 61 6e 20 65 6d 70 74 79 20 72 65 73  has an empty res
9c30: 75 6c 74 0a 20 20 20 20 73 65 74 2e 20 20 54 68  ult.    set.  Th
9c40: 65 20 74 68 69 72 64 20 22 3c 62 3e 61 72 67 76  e third "<b>argv
9c50: 3c 2f 62 3e 22 20 70 61 72 61 6d 65 74 65 72 20  </b>" parameter 
9c60: 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  to the callback 
9c70: 69 73 20 73 65 74 20 74 6f 20 4e 55 4c 4c 0a 20  is set to NULL. 
9c80: 20 20 20 62 65 63 61 75 73 65 20 74 68 65 72 65     because there
9c90: 20 69 73 20 6e 6f 20 64 61 74 61 20 74 6f 20 72   is no data to r
9ca0: 65 70 6f 72 74 2e 20 20 42 75 74 20 74 68 65 20  eport.  But the 
9cb0: 73 65 63 6f 6e 64 20 22 3c 62 3e 61 72 67 63 3c  second "<b>argc<
9cc0: 2f 62 3e 22 20 61 6e 64 0a 20 20 20 20 66 6f 75  /b>" and.    fou
9cd0: 72 74 68 20 22 3c 62 3e 63 6f 6c 75 6d 6e 4e 61  rth "<b>columnNa
9ce0: 6d 65 73 3c 2f 62 3e 22 20 70 61 72 61 6d 65 74  mes</b>" paramet
9cf0: 65 72 73 20 61 72 65 20 76 61 6c 69 64 20 61 6e  ers are valid an
9d00: 64 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  d can be used to
9d10: 0a 20 20 20 20 64 65 74 65 72 6d 69 6e 65 20 74  .    determine t
9d20: 68 65 20 6e 75 6d 62 65 72 20 61 6e 64 20 6e 61  he number and na
9d30: 6d 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  mes of the colum
9d40: 6e 73 20 74 68 61 74 20 77 6f 75 6c 64 20 68 61  ns that would ha
9d50: 76 65 20 62 65 65 6e 20 69 6e 0a 20 20 20 20 74  ve been in.    t
9d60: 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 68 61  he result set ha
9d70: 64 20 74 68 65 20 73 65 74 20 6e 6f 74 20 62 65  d the set not be
9d80: 65 6e 20 65 6d 70 74 79 2e 3c 2f 70 3e 0a 0a 3c  en empty.</p>..<
9d90: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
9da0: 66 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  full_column_name
9db0: 73 20 3d 20 4f 4e 3b 0a 20 20 20 20 20 20 20 3c  s = ON;.       <
9dc0: 62 72 3e 50 52 41 47 4d 41 20 66 75 6c 6c 5f 63  br>PRAGMA full_c
9dd0: 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 20 3d 20 4f 46  olumn_names = OF
9de0: 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c  F;</b></p>.    <
9df0: 70 3e 54 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d  p>The column nam
9e00: 65 73 20 72 65 70 6f 72 74 65 64 20 69 6e 20 61  es reported in a
9e10: 6e 20 53 51 4c 69 74 65 20 63 61 6c 6c 62 61 63  n SQLite callbac
9e20: 6b 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 6a  k are normally j
9e30: 75 73 74 0a 20 20 20 20 74 68 65 20 6e 61 6d 65  ust.    the name
9e40: 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69   of the column i
9e50: 74 73 65 6c 66 2c 20 65 78 63 65 70 74 20 66 6f  tself, except fo
9e60: 72 20 6a 6f 69 6e 73 20 77 68 65 6e 20 22 54 41  r joins when "TA
9e70: 42 4c 45 2e 43 4f 4c 55 4d 4e 22 0a 20 20 20 20  BLE.COLUMN".    
9e80: 69 73 20 75 73 65 64 2e 20 20 42 75 74 20 77 68  is used.  But wh
9e90: 65 6e 20 66 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f 6e  en full_column_n
9ea0: 61 6d 65 73 20 69 73 20 74 75 72 6e 65 64 20 6f  ames is turned o
9eb0: 6e 2c 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 73 20  n, column names 
9ec0: 61 72 65 0a 20 20 20 20 61 6c 77 61 79 73 20 72  are.    always r
9ed0: 65 70 6f 72 74 65 64 20 61 73 20 22 54 41 42 4c  eported as "TABL
9ee0: 45 2e 43 4f 4c 55 4d 4e 22 20 65 76 65 6e 20 66  E.COLUMN" even f
9ef0: 6f 72 20 73 69 6d 70 6c 65 20 71 75 65 72 69 65  or simple querie
9f00: 73 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69  s.</p></li>..<li
9f10: 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 69 6e  ><p><b>PRAGMA in
9f20: 64 65 78 5f 69 6e 66 6f 28 3c 2f 62 3e 3c 69 3e  dex_info(</b><i>
9f30: 69 6e 64 65 78 2d 6e 61 6d 65 3c 2f 69 3e 3c 62  index-name</i><b
9f40: 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20  >);</b></p>.    
9f50: 3c 70 3e 46 6f 72 20 65 61 63 68 20 63 6f 6c 75  <p>For each colu
9f60: 6d 6e 20 74 68 61 74 20 74 68 65 20 6e 61 6d 65  mn that the name
9f70: 64 20 69 6e 64 65 78 20 72 65 66 65 72 65 6e 63  d index referenc
9f80: 65 73 2c 20 69 6e 76 6f 6b 65 20 74 68 65 20 0a  es, invoke the .
9f90: 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e      callback fun
9fa0: 63 74 69 6f 6e 0a 20 20 20 20 6f 6e 63 65 20 77  ction.    once w
9fb0: 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  ith information 
9fc0: 61 62 6f 75 74 20 74 68 61 74 20 63 6f 6c 75 6d  about that colum
9fd0: 6e 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65  n, including the
9fe0: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2c 0a 20 20   column name,.  
9ff0: 20 20 61 6e 64 20 74 68 65 20 63 6f 6c 75 6d 6e    and the column
a000: 20 6e 75 6d 62 65 72 2e 3c 2f 70 3e 0a 0a 3c 6c   number.</p>..<l
a010: 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 69  i><p><b>PRAGMA i
a020: 6e 64 65 78 5f 6c 69 73 74 28 3c 2f 62 3e 3c 69  ndex_list(</b><i
a030: 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 3c  >table-name</i><
a040: 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20  b>);</b></p>.   
a050: 20 3c 70 3e 46 6f 72 20 65 61 63 68 20 69 6e 64   <p>For each ind
a060: 65 78 20 6f 6e 20 74 68 65 20 6e 61 6d 65 64 20  ex on the named 
a070: 74 61 62 6c 65 2c 20 69 6e 76 6f 6b 65 20 74 68  table, invoke th
a080: 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  e callback funct
a090: 69 6f 6e 0a 20 20 20 20 6f 6e 63 65 20 77 69 74  ion.    once wit
a0a0: 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  h information ab
a0b0: 6f 75 74 20 74 68 61 74 20 69 6e 64 65 78 2e 20  out that index. 
a0c0: 20 41 72 67 75 6d 65 6e 74 73 20 69 6e 63 6c 75   Arguments inclu
a0d0: 64 65 20 74 68 65 0a 20 20 20 20 69 6e 64 65 78  de the.    index
a0e0: 20 6e 61 6d 65 20 61 6e 64 20 61 20 66 6c 61 67   name and a flag
a0f0: 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65   to indicate whe
a100: 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20  ther or not the 
a110: 69 6e 64 65 78 20 6d 75 73 74 20 62 65 0a 20 20  index must be.  
a120: 20 20 75 6e 69 71 75 65 2e 3c 2f 70 3e 0a 0a 3c    unique.</p>..<
a130: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
a140: 70 61 72 73 65 72 5f 74 72 61 63 65 20 3d 20 4f  parser_trace = O
a150: 4e 3b 3c 62 72 3e 50 52 41 47 4d 41 20 70 61 72  N;<br>PRAGMA par
a160: 73 65 72 5f 74 72 61 63 65 20 3d 20 4f 46 46 3b  ser_trace = OFF;
a170: 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e  </b></p>.    <p>
a180: 54 75 72 6e 20 74 72 61 63 69 6e 67 20 6f 66 20  Turn tracing of 
a190: 74 68 65 20 53 51 4c 20 70 61 72 73 65 72 20 69  the SQL parser i
a1a0: 6e 73 69 64 65 20 6f 66 20 74 68 65 0a 20 20 20  nside of the.   
a1b0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
a1c0: 6f 6e 20 61 6e 64 20 6f 66 66 2e 20 20 54 68 69  on and off.  Thi
a1d0: 73 20 69 73 20 75 73 65 64 20 66 6f 72 20 64 65  s is used for de
a1e0: 62 75 67 67 69 6e 67 2e 0a 20 20 20 20 54 68 69  bugging..    Thi
a1f0: 73 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 69 66 20  s only works if 
a200: 74 68 65 20 6c 69 62 72 61 72 79 20 69 73 20 63  the library is c
a210: 6f 6d 70 69 6c 65 64 20 77 69 74 68 6f 75 74 20  ompiled without 
a220: 74 68 65 20 4e 44 45 42 55 47 20 6d 61 63 72 6f  the NDEBUG macro
a230: 2e 0a 20 20 20 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a  ..    </p></li>.
a240: 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d  .<li><p><b>PRAGM
a250: 41 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63  A integrity_chec
a260: 6b 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c  k;</b></p>.    <
a270: 70 3e 54 68 65 20 63 6f 6d 6d 61 6e 64 20 64 6f  p>The command do
a280: 65 73 20 61 6e 20 69 6e 74 65 67 72 69 74 79 20  es an integrity 
a290: 63 68 65 63 6b 20 6f 66 20 74 68 65 20 65 6e 74  check of the ent
a2a0: 69 72 65 20 64 61 74 61 62 61 73 65 2e 20 20 49  ire database.  I
a2b0: 74 0a 20 20 20 20 6c 6f 6f 6b 73 20 66 6f 72 20  t.    looks for 
a2c0: 6f 75 74 2d 6f 66 2d 6f 72 64 65 72 20 72 65 63  out-of-order rec
a2d0: 6f 72 64 73 2c 20 6d 69 73 73 69 6e 67 20 70 61  ords, missing pa
a2e0: 67 65 73 2c 20 61 6e 64 20 6d 61 6c 66 6f 72 6d  ges, and malform
a2f0: 65 64 20 72 65 63 6f 72 64 73 2e 0a 20 20 20 20  ed records..    
a300: 49 66 20 61 6e 79 20 70 72 6f 62 6c 65 6d 73 20  If any problems 
a310: 61 72 65 20 66 6f 75 6e 64 2c 20 74 68 65 6e 20  are found, then 
a320: 61 20 73 69 6e 67 6c 65 20 73 74 72 69 6e 67 20  a single string 
a330: 69 73 20 72 65 74 75 72 6e 65 64 20 77 68 69 63  is returned whic
a340: 68 20 69 73 0a 20 20 20 20 61 20 64 65 73 63 72  h is.    a descr
a350: 69 70 74 69 6f 6e 20 6f 66 20 61 6c 6c 20 70 72  iption of all pr
a360: 6f 62 6c 65 6d 73 2e 20 20 49 66 20 65 76 65 72  oblems.  If ever
a370: 79 74 68 69 6e 67 20 69 73 20 69 6e 20 6f 72 64  ything is in ord
a380: 65 72 2c 20 22 6f 6b 22 20 69 73 0a 20 20 20 20  er, "ok" is.    
a390: 72 65 74 75 72 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c  returned.</p>..<
a3a0: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
a3b0: 73 79 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 20  synchronous;.   
a3c0: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 73      <br>PRAGMA s
a3d0: 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 4f 4e 3b  ynchronous = ON;
a3e0: 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47  .       <br>PRAG
a3f0: 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d  MA synchronous =
a400: 20 4f 46 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20   OFF;</b></p>.  
a410: 20 20 3c 70 3e 51 75 65 72 79 20 6f 72 20 63 68    <p>Query or ch
a420: 61 6e 67 65 20 74 68 65 20 73 65 74 74 69 6e 67  ange the setting
a430: 20 6f 66 20 74 68 65 20 22 73 79 6e 63 68 72 6f   of the "synchro
a440: 6e 6f 75 73 22 20 66 6c 61 67 20 69 6e 0a 20 20  nous" flag in.  
a450: 20 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66    the database f
a460: 6f 72 20 74 68 65 20 64 75 72 61 74 69 6f 6e 20  or the duration 
a470: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 64  of the current d
a480: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 2e  atabase connect.
a490: 0a 20 20 20 20 54 68 65 20 73 79 6e 63 68 72 6f  .    The synchro
a4a0: 6e 6f 75 73 20 66 6c 61 67 20 72 65 76 65 72 74  nous flag revert
a4b0: 73 20 74 6f 20 69 74 73 20 64 65 66 61 75 6c 74  s to its default
a4c0: 20 76 61 6c 75 65 20 77 68 65 6e 20 74 68 65 20   value when the 
a4d0: 64 61 74 61 62 61 73 65 0a 20 20 20 20 69 73 20  database.    is 
a4e0: 63 6c 6f 73 65 64 20 61 6e 64 20 72 65 6f 70 65  closed and reope
a4f0: 6e 65 64 2e 20 20 46 6f 72 20 61 64 64 69 74 69  ned.  For additi
a500: 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
a510: 20 6f 6e 20 74 68 65 20 73 79 6e 63 68 72 6f 6e   on the synchron
a520: 6f 75 73 0a 20 20 20 20 66 6c 61 67 2c 20 73 65  ous.    flag, se
a530: 65 20 74 68 65 20 64 65 73 63 72 69 70 74 69 6f  e the descriptio
a540: 6e 20 6f 66 20 74 68 65 20 3c 62 3e 64 65 66 61  n of the <b>defa
a550: 75 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 3c  ult_synchronous<
a560: 2f 62 3e 20 70 72 61 67 6d 61 2e 3c 2f 70 3e 0a  /b> pragma.</p>.
a570: 20 20 20 20 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c      </li>..<li><
a580: 70 3e 3c 62 3e 50 52 41 47 4d 41 20 74 61 62 6c  p><b>PRAGMA tabl
a590: 65 5f 69 6e 66 6f 28 3c 2f 62 3e 3c 69 3e 74 61  e_info(</b><i>ta
a5a0: 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62 3e 29  ble-name</i><b>)
a5b0: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
a5c0: 3e 46 6f 72 20 65 61 63 68 20 63 6f 6c 75 6d 6e  >For each column
a5d0: 20 69 6e 20 74 68 65 20 6e 61 6d 65 64 20 74 61   in the named ta
a5e0: 62 6c 65 2c 20 69 6e 76 6f 6b 65 20 74 68 65 20  ble, invoke the 
a5f0: 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f  callback functio
a600: 6e 0a 20 20 20 20 6f 6e 63 65 20 77 69 74 68 20  n.    once with 
a610: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
a620: 74 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c 20 69  t that column, i
a630: 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 63 6f 6c  ncluding the col
a640: 75 6d 6e 20 6e 61 6d 65 2c 0a 20 20 20 20 64 61  umn name,.    da
a650: 74 61 20 74 79 70 65 2c 20 77 68 65 74 68 65 72  ta type, whether
a660: 20 6f 72 20 6e 6f 74 20 74 68 65 20 63 6f 6c 75   or not the colu
a670: 6d 6e 20 63 61 6e 20 62 65 20 4e 55 4c 4c 2c 20  mn can be NULL, 
a680: 61 6e 64 20 74 68 65 20 64 65 66 61 75 6c 74 0a  and the default.
a690: 20 20 20 20 76 61 6c 75 65 20 66 6f 72 20 74 68      value for th
a6a0: 65 20 63 6f 6c 75 6d 6e 2e 3c 2f 70 3e 0a 0a 3c  e column.</p>..<
a6b0: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
a6c0: 76 64 62 65 5f 74 72 61 63 65 20 3d 20 4f 4e 3b  vdbe_trace = ON;
a6d0: 3c 62 72 3e 50 52 41 47 4d 41 20 76 64 62 65 5f  <br>PRAGMA vdbe_
a6e0: 74 72 61 63 65 20 3d 20 4f 46 46 3b 3c 2f 62 3e  trace = OFF;</b>
a6f0: 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54 75 72 6e  </p>.    <p>Turn
a700: 20 74 72 61 63 69 6e 67 20 6f 66 20 74 68 65 20   tracing of the 
a710: 76 69 72 74 75 61 6c 20 64 61 74 61 62 61 73 65  virtual database
a720: 20 65 6e 67 69 6e 65 20 69 6e 73 69 64 65 20 6f   engine inside o
a730: 66 20 74 68 65 0a 20 20 20 20 53 51 4c 69 74 65  f the.    SQLite
a740: 20 6c 69 62 72 61 72 79 20 6f 6e 20 61 6e 64 20   library on and 
a750: 6f 66 66 2e 20 20 54 68 69 73 20 69 73 20 75 73  off.  This is us
a760: 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67  ed for debugging
a770: 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e  .</p></li>.</ul>
a780: 0a 0a 3c 70 3e 4e 6f 20 65 72 72 6f 72 20 6d 65  ..<p>No error me
a790: 73 73 61 67 65 20 69 73 20 67 65 6e 65 72 61 74  ssage is generat
a7a0: 65 64 20 69 66 20 61 6e 20 75 6e 6b 6e 6f 77 6e  ed if an unknown
a7b0: 20 70 72 61 67 6d 61 20 69 73 20 69 73 73 75 65   pragma is issue
a7c0: 64 2e 0a 55 6e 6b 6e 6f 77 6e 20 70 72 61 67 6d  d..Unknown pragm
a7d0: 61 73 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 3c  as are ignored.<
a7e0: 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 52  /p>.}..Section R
a7f0: 45 50 4c 41 43 45 20 72 65 70 6c 61 63 65 0a 0a  EPLACE replace..
a800: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
a810: 65 6d 65 6e 74 7d 20 7b 0a 52 45 50 4c 41 43 45  ement} {.REPLACE
a820: 20 49 4e 54 4f 20 3c 74 61 62 6c 65 2d 6e 61 6d   INTO <table-nam
a830: 65 3e 20 5b 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69  e> [( <column-li
a840: 73 74 3e 20 29 5d 20 56 41 4c 55 45 53 20 28 20  st> )] VALUES ( 
a850: 3c 76 61 6c 75 65 2d 6c 69 73 74 3e 20 29 20 7c  <value-list> ) |
a860: 0a 52 45 50 4c 41 43 45 20 49 4e 54 4f 20 3c 74  .REPLACE INTO <t
a870: 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63  able-name> [( <c
a880: 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20 3c  olumn-list> )] <
a890: 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74  select-statement
a8a0: 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  >.}..puts {.<p>T
a8b0: 68 65 20 52 45 50 4c 41 43 45 20 63 6f 6d 6d 61  he REPLACE comma
a8c0: 6e 64 20 69 73 20 61 6e 20 61 6c 69 61 73 20 66  nd is an alias f
a8d0: 6f 72 20 74 68 65 20 22 49 4e 53 45 52 54 20 4f  or the "INSERT O
a8e0: 52 20 52 45 50 4c 41 43 45 22 20 76 61 72 69 61  R REPLACE" varia
a8f0: 6e 74 0a 6f 66 20 74 68 65 20 3c 61 20 68 72 65  nt.of the <a hre
a900: 66 3d 22 23 69 6e 73 65 72 74 22 3e 49 4e 53 45  f="#insert">INSE
a910: 52 54 20 63 6f 6d 6d 61 6e 64 3c 2f 61 3e 2e 20  RT command</a>. 
a920: 20 54 68 69 73 20 61 6c 69 61 73 20 69 73 20 70   This alias is p
a930: 72 6f 76 69 64 65 64 20 66 6f 72 0a 63 6f 6d 70  rovided for.comp
a940: 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 4d  atibility with M
a950: 79 53 51 4c 2e 20 20 53 65 65 20 74 68 65 20 0a  ySQL.  See the .
a960: 3c 61 20 68 72 65 66 3d 22 23 69 6e 73 65 72 74  <a href="#insert
a970: 22 3e 49 4e 53 45 52 54 20 63 6f 6d 6d 61 6e 64  ">INSERT command
a980: 3c 2f 61 3e 20 64 6f 63 75 6d 65 6e 74 61 74 69  </a> documentati
a990: 6f 6e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  on for additiona
a9a0: 6c 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f  l.information.</
a9b0: 70 3e 20 20 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20  p>  .}..Section 
a9c0: 53 45 4c 45 43 54 20 73 65 6c 65 63 74 0a 0a 53  SELECT select..S
a9d0: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
a9e0: 6d 65 6e 74 7d 20 7b 0a 53 45 4c 45 43 54 20 3c  ment} {.SELECT <
a9f0: 72 65 73 75 6c 74 3e 20 5b 46 52 4f 4d 20 3c 74  result> [FROM <t
aa00: 61 62 6c 65 2d 6c 69 73 74 3e 5d 0a 5b 57 48 45  able-list>].[WHE
aa10: 52 45 20 3c 65 78 70 72 3e 5d 0a 5b 47 52 4f 55  RE <expr>].[GROU
aa20: 50 20 42 59 20 3c 65 78 70 72 2d 6c 69 73 74 3e  P BY <expr-list>
aa30: 5d 0a 5b 48 41 56 49 4e 47 20 3c 65 78 70 72 3e  ].[HAVING <expr>
aa40: 5d 0a 5b 3c 63 6f 6d 70 6f 75 6e 64 2d 6f 70 3e  ].[<compound-op>
aa50: 20 3c 73 65 6c 65 63 74 3e 5d 2a 0a 5b 4f 52 44   <select>]*.[ORD
aa60: 45 52 20 42 59 20 3c 73 6f 72 74 2d 65 78 70 72  ER BY <sort-expr
aa70: 2d 6c 69 73 74 3e 5d 0a 5b 4c 49 4d 49 54 20 3c  -list>].[LIMIT <
aa80: 69 6e 74 65 67 65 72 3e 20 5b 4f 46 46 53 45 54  integer> [OFFSET
aa90: 20 3c 69 6e 74 65 67 65 72 3e 5d 5d 0a 7d 20 7b   <integer>]].} {
aaa0: 72 65 73 75 6c 74 7d 20 7b 0a 3c 72 65 73 75 6c  result} {.<resul
aab0: 74 2d 63 6f 6c 75 6d 6e 3e 20 5b 2c 20 3c 72 65  t-column> [, <re
aac0: 73 75 6c 74 2d 63 6f 6c 75 6d 6e 3e 5d 2a 0a 7d  sult-column>]*.}
aad0: 20 7b 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 7d   {result-column}
aae0: 20 7b 0a 53 54 41 52 20 7c 20 3c 74 61 62 6c 65   {.STAR | <table
aaf0: 2d 6e 61 6d 65 3e 20 2e 20 53 54 41 52 20 7c 20  -name> . STAR | 
ab00: 3c 65 78 70 72 3e 20 5b 20 5b 41 53 5d 20 3c 73  <expr> [ [AS] <s
ab10: 74 72 69 6e 67 3e 20 5d 0a 7d 20 7b 74 61 62 6c  tring> ].} {tabl
ab20: 65 2d 6c 69 73 74 7d 20 7b 0a 3c 74 61 62 6c 65  e-list} {.<table
ab30: 3e 20 5b 3c 6a 6f 69 6e 2d 6f 70 3e 20 3c 74 61  > [<join-op> <ta
ab40: 62 6c 65 3e 20 3c 6a 6f 69 6e 2d 61 72 67 73 3e  ble> <join-args>
ab50: 5d 2a 0a 7d 20 7b 74 61 62 6c 65 7d 20 7b 0a 3c  ]*.} {table} {.<
ab60: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 41 53 20  table-name> [AS 
ab70: 3c 61 6c 69 61 73 3e 5d 20 7c 0a 28 20 3c 73 65  <alias>] |.( <se
ab80: 6c 65 63 74 3e 20 29 20 5b 41 53 20 3c 61 6c 69  lect> ) [AS <ali
ab90: 61 73 3e 5d 0a 7d 20 7b 6a 6f 69 6e 2d 6f 70 7d  as>].} {join-op}
aba0: 20 7b 0a 2c 20 7c 20 5b 4e 41 54 55 52 41 4c 5d   {., | [NATURAL]
abb0: 20 5b 4c 45 46 54 20 7c 20 52 49 47 48 54 20 7c   [LEFT | RIGHT |
abc0: 20 46 55 4c 4c 5d 20 5b 4f 55 54 45 52 20 7c 20   FULL] [OUTER | 
abd0: 49 4e 4e 45 52 5d 20 4a 4f 49 4e 0a 7d 20 7b 6a  INNER] JOIN.} {j
abe0: 6f 69 6e 2d 61 72 67 73 7d 20 7b 0a 5b 4f 4e 20  oin-args} {.[ON 
abf0: 3c 65 78 70 72 3e 5d 20 5b 55 53 49 4e 47 20 28  <expr>] [USING (
ac00: 20 3c 69 64 2d 6c 69 73 74 3e 20 29 5d 0a 7d 20   <id-list> )].} 
ac10: 7b 73 6f 72 74 2d 65 78 70 72 2d 6c 69 73 74 7d  {sort-expr-list}
ac20: 20 7b 0a 3c 65 78 70 72 3e 20 5b 3c 73 6f 72 74   {.<expr> [<sort
ac30: 2d 6f 72 64 65 72 3e 5d 20 5b 2c 20 3c 65 78 70  -order>] [, <exp
ac40: 72 3e 20 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e  r> [<sort-order>
ac50: 5d 5d 2a 0a 7d 20 7b 73 6f 72 74 2d 6f 72 64 65  ]]*.} {sort-orde
ac60: 72 7d 20 7b 0a 41 53 43 20 7c 20 44 45 53 43 0a  r} {.ASC | DESC.
ac70: 7d 20 7b 63 6f 6d 70 6f 75 6e 64 5f 6f 70 7d 20  } {compound_op} 
ac80: 7b 0a 55 4e 49 4f 4e 20 7c 20 55 4e 49 4f 4e 20  {.UNION | UNION 
ac90: 41 4c 4c 20 7c 20 49 4e 54 45 52 53 45 43 54 20  ALL | INTERSECT 
aca0: 7c 20 45 58 43 45 50 54 0a 7d 0a 0a 70 75 74 73  | EXCEPT.}..puts
acb0: 20 7b 0a 3c 70 3e 54 68 65 20 53 45 4c 45 43 54   {.<p>The SELECT
acc0: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73   statement is us
acd0: 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65 20  ed to query the 
ace0: 64 61 74 61 62 61 73 65 2e 20 20 54 68 65 0a 72  database.  The.r
acf0: 65 73 75 6c 74 20 6f 66 20 61 20 53 45 4c 45 43  esult of a SELEC
ad00: 54 20 69 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72  T is zero or mor
ad10: 65 20 72 6f 77 73 20 6f 66 20 64 61 74 61 20 77  e rows of data w
ad20: 68 65 72 65 20 65 61 63 68 20 72 6f 77 0a 68 61  here each row.ha
ad30: 73 20 61 20 66 69 78 65 64 20 6e 75 6d 62 65 72  s a fixed number
ad40: 20 6f 66 20 63 6f 6c 75 6d 6e 73 2e 20 20 54 68   of columns.  Th
ad50: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
ad60: 6d 6e 73 20 69 6e 20 74 68 65 0a 72 65 73 75 6c  mns in the.resul
ad70: 74 20 69 73 20 73 70 65 63 69 66 69 65 64 20 62  t is specified b
ad80: 79 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  y the expression
ad90: 20 6c 69 73 74 20 69 6e 20 62 65 74 77 65 65 6e   list in between
ada0: 20 74 68 65 0a 53 45 4c 45 43 54 20 61 6e 64 20   the.SELECT and 
adb0: 46 52 4f 4d 20 6b 65 79 77 6f 72 64 73 2e 20 20  FROM keywords.  
adc0: 41 6e 79 20 61 72 62 69 74 72 61 72 79 20 65 78  Any arbitrary ex
add0: 70 72 65 73 73 69 6f 6e 20 63 61 6e 20 62 65 20  pression can be 
ade0: 75 73 65 64 0a 61 73 20 61 20 72 65 73 75 6c 74  used.as a result
adf0: 2e 20 20 49 66 20 61 20 72 65 73 75 6c 74 20 65  .  If a result e
ae00: 78 70 72 65 73 73 69 6f 6e 20 69 73 20 7d 0a 70  xpression is }.p
ae10: 75 74 73 20 22 5b 4f 70 65 72 61 74 6f 72 20 2a  uts "[Operator *
ae20: 5d 20 74 68 65 6e 20 61 6c 6c 20 63 6f 6c 75 6d  ] then all colum
ae30: 6e 73 20 6f 66 20 61 6c 6c 20 74 61 62 6c 65 73  ns of all tables
ae40: 20 61 72 65 20 73 75 62 73 74 69 74 75 74 65 64   are substituted
ae50: 22 0a 70 75 74 73 20 7b 66 6f 72 20 74 68 61 74  ".puts {for that
ae60: 20 6f 6e 65 20 65 78 70 72 65 73 73 69 6f 6e 2e   one expression.
ae70: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 71 75 65  </p>..<p>The que
ae80: 72 79 20 69 73 20 65 78 65 63 75 74 65 64 20 61  ry is executed a
ae90: 67 61 69 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  gain one or more
aea0: 20 74 61 62 6c 65 73 20 73 70 65 63 69 66 69 65   tables specifie
aeb0: 64 20 61 66 74 65 72 0a 74 68 65 20 46 52 4f 4d  d after.the FROM
aec0: 20 6b 65 79 77 6f 72 64 2e 20 20 49 66 20 6d 75   keyword.  If mu
aed0: 6c 74 69 70 6c 65 20 74 61 62 6c 65 73 20 6e 61  ltiple tables na
aee0: 6d 65 73 20 61 72 65 20 73 65 70 61 72 61 74 65  mes are separate
aef0: 64 20 62 79 20 63 6f 6d 6d 61 73 2c 0a 74 68 65  d by commas,.the
af00: 6e 20 74 68 65 20 71 75 65 72 79 20 69 73 20 61  n the query is a
af10: 67 61 69 6e 73 74 20 74 68 65 20 63 72 6f 73 73  gainst the cross
af20: 20 6a 6f 69 6e 20 6f 66 20 74 68 65 20 76 61 72   join of the var
af30: 69 6f 75 73 20 74 61 62 6c 65 73 2e 0a 54 68 65  ious tables..The
af40: 20 66 75 6c 6c 20 53 51 4c 2d 39 32 20 6a 6f 69   full SQL-92 joi
af50: 6e 20 73 79 6e 74 61 78 20 63 61 6e 20 61 6c 73  n syntax can als
af60: 6f 20 62 65 20 75 73 65 64 20 74 6f 20 73 70 65  o be used to spe
af70: 63 69 66 79 20 6a 6f 69 6e 73 2e 0a 41 20 73 75  cify joins..A su
af80: 62 2d 71 75 65 72 79 0a 69 6e 20 70 61 72 65 6e  b-query.in paren
af90: 74 68 65 73 65 73 20 6d 61 79 20 62 65 20 73 75  theses may be su
afa0: 62 73 74 69 74 75 74 65 64 20 66 6f 72 20 61 6e  bstituted for an
afb0: 79 20 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20  y table name in 
afc0: 74 68 65 20 46 52 4f 4d 20 63 6c 61 75 73 65 2e  the FROM clause.
afd0: 0a 54 68 65 20 65 6e 74 69 72 65 20 46 52 4f 4d  .The entire FROM
afe0: 20 63 6c 61 75 73 65 20 6d 61 79 20 62 65 20 6f   clause may be o
aff0: 6d 69 74 74 65 64 2c 20 69 6e 20 77 68 69 63 68  mitted, in which
b000: 20 63 61 73 65 20 74 68 65 20 72 65 73 75 6c 74   case the result
b010: 20 69 73 20 61 0a 73 69 6e 67 6c 65 20 72 6f 77   is a.single row
b020: 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 74   consisting of t
b030: 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65  he values of the
b040: 20 65 78 70 72 65 73 73 69 6f 6e 20 6c 69 73 74   expression list
b050: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 57  ..</p>..<p>The W
b060: 48 45 52 45 20 63 6c 61 75 73 65 20 63 61 6e 20  HERE clause can 
b070: 62 65 20 75 73 65 64 20 74 6f 20 6c 69 6d 69 74  be used to limit
b080: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72   the number of r
b090: 6f 77 73 20 6f 76 65 72 0a 77 68 69 63 68 20 74  ows over.which t
b0a0: 68 65 20 71 75 65 72 79 20 6f 70 65 72 61 74 65  he query operate
b0b0: 73 2e 20 20 49 6e 20 74 68 65 20 63 75 72 72 65  s.  In the curre
b0c0: 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  nt implementatio
b0d0: 6e 2c 0a 69 6e 64 69 63 65 73 20 77 69 6c 6c 20  n,.indices will 
b0e0: 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 74 6f 0a  only be used to.
b0f0: 6f 70 74 69 6d 69 7a 65 20 74 68 65 20 71 75 65  optimize the que
b100: 72 79 20 69 66 20 57 48 45 52 45 20 65 78 70 72  ry if WHERE expr
b110: 65 73 73 69 6f 6e 20 63 6f 6e 74 61 69 6e 73 20  ession contains 
b120: 65 71 75 61 6c 69 74 79 20 63 6f 6d 70 61 72 69  equality compari
b130: 73 6f 6e 73 0a 63 6f 6e 6e 65 63 74 65 64 20 62  sons.connected b
b140: 79 20 74 68 65 20 41 4e 44 20 6f 70 65 72 61 74  y the AND operat
b150: 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  or.</p>..<p>The 
b160: 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65 73  GROUP BY clauses
b170: 20 63 61 75 73 65 73 20 6f 6e 65 20 6f 72 20 6d   causes one or m
b180: 6f 72 65 20 72 6f 77 73 20 6f 66 20 74 68 65 20  ore rows of the 
b190: 72 65 73 75 6c 74 20 74 6f 0a 62 65 20 63 6f 6d  result to.be com
b1a0: 62 69 6e 65 64 20 69 6e 74 6f 20 61 20 73 69 6e  bined into a sin
b1b0: 67 6c 65 20 72 6f 77 20 6f 66 20 6f 75 74 70 75  gle row of outpu
b1c0: 74 2e 20 20 54 68 69 73 20 69 73 20 65 73 70 65  t.  This is espe
b1d0: 63 69 61 6c 6c 79 20 75 73 65 66 75 6c 0a 77 68  cially useful.wh
b1e0: 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 63 6f  en the result co
b1f0: 6e 74 61 69 6e 73 20 61 67 67 72 65 67 61 74 65  ntains aggregate
b200: 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 65   functions.  The
b210: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 0a   expressions in.
b220: 74 68 65 20 47 52 4f 55 50 20 42 59 20 63 6c 61  the GROUP BY cla
b230: 75 73 65 20 64 6f 20 3c 65 6d 3e 6e 6f 74 3c 2f  use do <em>not</
b240: 65 6d 3e 20 68 61 76 65 20 74 6f 20 62 65 20 65  em> have to be e
b250: 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 0a  xpressions that.
b260: 61 70 70 65 61 72 20 69 6e 20 74 68 65 20 72 65  appear in the re
b270: 73 75 6c 74 2e 20 20 54 68 65 20 48 41 56 49 4e  sult.  The HAVIN
b280: 47 20 63 6c 61 75 73 65 20 69 73 20 73 69 6d 69  G clause is simi
b290: 6c 61 72 20 74 6f 20 57 48 45 52 45 20 65 78 63  lar to WHERE exc
b2a0: 65 70 74 0a 74 68 61 74 20 48 41 56 49 4e 47 20  ept.that HAVING 
b2b0: 61 70 70 6c 69 65 73 20 61 66 74 65 72 20 67 72  applies after gr
b2c0: 6f 75 70 69 6e 67 20 68 61 73 20 6f 63 63 75 72  ouping has occur
b2d0: 72 65 64 2e 20 20 54 68 65 20 48 41 56 49 4e 47  red.  The HAVING
b2e0: 20 65 78 70 72 65 73 73 69 6f 6e 0a 6d 61 79 20   expression.may 
b2f0: 72 65 66 65 72 20 74 6f 20 76 61 6c 75 65 73 2c  refer to values,
b300: 20 65 76 65 6e 20 61 67 67 72 65 67 61 74 65 20   even aggregate 
b310: 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68 61 74 20  functions, that 
b320: 61 72 65 20 6e 6f 74 20 69 6e 20 74 68 65 20 72  are not in the r
b330: 65 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  esult.</p>..<p>T
b340: 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75  he ORDER BY clau
b350: 73 65 20 63 61 75 73 65 73 20 74 68 65 20 6f 75  se causes the ou
b360: 74 70 75 74 20 72 6f 77 73 20 74 6f 20 62 65 20  tput rows to be 
b370: 73 6f 72 74 65 64 2e 20 20 0a 54 68 65 20 61 72  sorted.  .The ar
b380: 67 75 6d 65 6e 74 20 74 6f 20 4f 52 44 45 52 20  gument to ORDER 
b390: 42 59 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20  BY is a list of 
b3a0: 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74  expressions that
b3b0: 20 61 72 65 20 75 73 65 64 20 61 73 20 74 68 65   are used as the
b3c0: 0a 6b 65 79 20 66 6f 72 20 74 68 65 20 73 6f 72  .key for the sor
b3d0: 74 2e 20 20 54 68 65 20 65 78 70 72 65 73 73 69  t.  The expressi
b3e0: 6f 6e 73 20 64 6f 20 6e 6f 74 20 68 61 76 65 20  ons do not have 
b3f0: 74 6f 20 62 65 20 70 61 72 74 20 6f 66 20 74 68  to be part of th
b400: 65 0a 72 65 73 75 6c 74 20 66 6f 72 20 61 20 73  e.result for a s
b410: 69 6d 70 6c 65 20 53 45 4c 45 43 54 2c 20 62 75  imple SELECT, bu
b420: 74 20 69 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20  t in a compound 
b430: 53 45 4c 45 43 54 20 65 61 63 68 20 73 6f 72 74  SELECT each sort
b440: 0a 65 78 70 72 65 73 73 69 6f 6e 20 6d 75 73 74  .expression must
b450: 20 65 78 61 63 74 6c 79 20 6d 61 74 63 68 20 6f   exactly match o
b460: 6e 65 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  ne of the result
b470: 20 63 6f 6c 75 6d 6e 73 2e 20 20 45 61 63 68 0a   columns.  Each.
b480: 73 6f 72 74 20 65 78 70 72 65 73 73 69 6f 6e 20  sort expression 
b490: 6d 61 79 20 62 65 20 6f 70 74 69 6f 6e 61 6c 6c  may be optionall
b4a0: 79 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 41 53  y followed by AS
b4b0: 43 20 6f 72 20 44 45 53 43 20 74 6f 20 73 70 65  C or DESC to spe
b4c0: 63 69 66 79 0a 74 68 65 20 73 6f 72 74 20 6f 72  cify.the sort or
b4d0: 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  der.</p>..<p>The
b4e0: 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 70 6c   LIMIT clause pl
b4f0: 61 63 65 73 20 61 6e 20 75 70 70 65 72 20 62 6f  aces an upper bo
b500: 75 6e 64 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65  und on the numbe
b510: 72 20 6f 66 20 72 6f 77 73 0a 72 65 74 75 72 6e  r of rows.return
b520: 65 64 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74  ed in the result
b530: 2e 20 20 41 20 4c 49 4d 49 54 20 6f 66 20 30 20  .  A LIMIT of 0 
b540: 69 6e 64 69 63 61 74 65 73 20 6e 6f 20 75 70 70  indicates no upp
b550: 65 72 20 62 6f 75 6e 64 2e 0a 54 68 65 20 6f 70  er bound..The op
b560: 74 69 6f 6e 61 6c 20 4f 46 46 53 45 54 20 66 6f  tional OFFSET fo
b570: 6c 6c 6f 77 69 6e 67 20 4c 49 4d 49 54 20 73 70  llowing LIMIT sp
b580: 65 63 69 66 69 65 73 20 68 6f 77 20 6d 61 6e 79  ecifies how many
b590: 0a 72 6f 77 73 20 74 6f 20 73 6b 69 70 20 61 74  .rows to skip at
b5a0: 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f   the beginning o
b5b0: 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74  f the result set
b5c0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6d 70  .</p>..<p>A comp
b5d0: 6f 75 6e 64 20 53 45 4c 45 43 54 20 69 73 20 66  ound SELECT is f
b5e0: 6f 72 6d 65 64 20 66 72 6f 6d 20 74 77 6f 20 6f  ormed from two o
b5f0: 72 20 6d 6f 72 65 20 73 69 6d 70 6c 65 20 53 45  r more simple SE
b600: 4c 45 43 54 73 20 63 6f 6e 6e 65 63 74 65 64 0a  LECTs connected.
b610: 62 79 20 6f 6e 65 20 6f 66 20 74 68 65 20 6f 70  by one of the op
b620: 65 72 61 74 6f 72 73 20 55 4e 49 4f 4e 2c 20 55  erators UNION, U
b630: 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52 53  NION ALL, INTERS
b640: 45 43 54 2c 20 6f 72 20 45 58 43 45 50 54 2e 20  ECT, or EXCEPT. 
b650: 20 49 6e 0a 61 20 63 6f 6d 70 6f 75 6e 64 20 53   In.a compound S
b660: 45 4c 45 43 54 2c 20 61 6c 6c 20 74 68 65 20 63  ELECT, all the c
b670: 6f 6e 73 74 69 74 75 65 6e 74 20 53 45 4c 45 43  onstituent SELEC
b680: 54 73 20 6d 75 73 74 20 73 70 65 63 69 66 79 20  Ts must specify 
b690: 74 68 65 0a 73 61 6d 65 20 6e 75 6d 62 65 72 20  the.same number 
b6a0: 6f 66 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e  of result column
b6b0: 73 2e 20 20 54 68 65 72 65 20 6d 61 79 20 62 65  s.  There may be
b6c0: 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 4f   only a single O
b6d0: 52 44 45 52 20 42 59 0a 63 6c 61 75 73 65 20 61  RDER BY.clause a
b6e0: 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65  t the end of the
b6f0: 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54   compound SELECT
b700: 2e 20 20 54 68 65 20 55 4e 49 4f 4e 20 61 6e 64  .  The UNION and
b710: 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f 70 65 72 61   UNION ALL.opera
b720: 74 6f 72 73 20 63 6f 6d 62 69 6e 65 20 74 68 65  tors combine the
b730: 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 20   results of the 
b740: 53 45 4c 45 43 54 73 20 74 6f 20 74 68 65 20 72  SELECTs to the r
b750: 69 67 68 74 20 61 6e 64 20 6c 65 66 74 20 69 6e  ight and left in
b760: 74 6f 0a 61 20 73 69 6e 67 6c 65 20 62 69 67 20  to.a single big 
b770: 74 61 62 6c 65 2e 20 20 54 68 65 20 64 69 66 66  table.  The diff
b780: 65 72 65 6e 63 65 20 69 73 20 74 68 61 74 20 69  erence is that i
b790: 6e 20 55 4e 49 4f 4e 20 61 6c 6c 20 72 65 73 75  n UNION all resu
b7a0: 6c 74 20 72 6f 77 73 0a 61 72 65 20 64 69 73 74  lt rows.are dist
b7b0: 69 6e 63 74 20 77 68 65 72 65 20 69 6e 20 55 4e  inct where in UN
b7c0: 49 4f 4e 20 41 4c 4c 20 74 68 65 72 65 20 6d 61  ION ALL there ma
b7d0: 79 20 62 65 20 64 75 70 6c 69 63 61 74 65 73 2e  y be duplicates.
b7e0: 0a 54 68 65 20 49 4e 54 45 52 53 45 43 54 20 6f  .The INTERSECT o
b7f0: 70 65 72 61 74 6f 72 20 74 61 6b 65 73 20 74 68  perator takes th
b800: 65 20 69 6e 74 65 72 73 65 63 74 69 6f 6e 20 6f  e intersection o
b810: 66 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66  f the results of
b820: 20 74 68 65 0a 6c 65 66 74 20 61 6e 64 20 72 69   the.left and ri
b830: 67 68 74 20 53 45 4c 45 43 54 73 2e 20 20 45 58  ght SELECTs.  EX
b840: 43 45 50 54 20 74 61 6b 65 73 20 74 68 65 20 72  CEPT takes the r
b850: 65 73 75 6c 74 20 6f 66 20 6c 65 66 74 20 53 45  esult of left SE
b860: 4c 45 43 54 20 61 66 74 65 72 0a 72 65 6d 6f 76  LECT after.remov
b870: 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 73 20  ing the results 
b880: 6f 66 20 74 68 65 20 72 69 67 68 74 20 53 45 4c  of the right SEL
b890: 45 43 54 2e 20 20 57 68 65 6e 20 74 68 72 65 65  ECT.  When three
b8a0: 20 61 72 65 20 6d 6f 72 65 20 53 45 4c 45 43 54   are more SELECT
b8b0: 73 0a 61 72 65 20 63 6f 6e 6e 65 63 74 65 64 20  s.are connected 
b8c0: 69 6e 74 6f 20 61 20 63 6f 6d 70 6f 75 6e 64 2c  into a compound,
b8d0: 20 74 68 65 79 20 67 72 6f 75 70 20 66 72 6f 6d   they group from
b8e0: 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74 2e 3c   left to right.<
b8f0: 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 55  /p>.}..Section U
b900: 50 44 41 54 45 20 75 70 64 61 74 65 0a 0a 53 79  PDATE update..Sy
b910: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
b920: 65 6e 74 7d 20 7b 0a 55 50 44 41 54 45 20 5b 20  ent} {.UPDATE [ 
b930: 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67  OR <conflict-alg
b940: 6f 72 69 74 68 6d 3e 20 5d 20 3c 74 61 62 6c 65  orithm> ] <table
b950: 2d 6e 61 6d 65 3e 0a 53 45 54 20 3c 61 73 73 69  -name>.SET <assi
b960: 67 6e 6d 65 6e 74 3e 20 5b 2c 20 3c 61 73 73 69  gnment> [, <assi
b970: 67 6e 6d 65 6e 74 3e 5d 20 0a 5b 57 48 45 52 45  gnment>] .[WHERE
b980: 20 3c 65 78 70 72 3e 5d 0a 7d 20 7b 61 73 73 69   <expr>].} {assi
b990: 67 6e 6d 65 6e 74 7d 20 7b 0a 3c 63 6f 6c 75 6d  gnment} {.<colum
b9a0: 6e 2d 6e 61 6d 65 3e 20 3d 20 3c 65 78 70 72 3e  n-name> = <expr>
b9b0: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
b9c0: 65 20 55 50 44 41 54 45 20 73 74 61 74 65 6d 65  e UPDATE stateme
b9d0: 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20 63 68  nt is used to ch
b9e0: 61 6e 67 65 20 74 68 65 20 76 61 6c 75 65 20 6f  ange the value o
b9f0: 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 0a 73 65  f columns in .se
ba00: 6c 65 63 74 65 64 20 72 6f 77 73 20 6f 66 20 61  lected rows of a
ba10: 20 74 61 62 6c 65 2e 20 20 45 61 63 68 20 61 73   table.  Each as
ba20: 73 69 67 6e 6d 65 6e 74 20 69 6e 20 61 6e 20 55  signment in an U
ba30: 50 44 41 54 45 20 73 70 65 63 69 66 69 65 73 0a  PDATE specifies.
ba40: 61 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 74 6f  a column name to
ba50: 20 74 68 65 20 6c 65 66 74 20 6f 66 20 74 68 65   the left of the
ba60: 20 65 71 75 61 6c 73 20 73 69 67 6e 20 61 6e 64   equals sign and
ba70: 20 61 6e 20 61 72 62 69 74 72 61 72 79 20 65 78   an arbitrary ex
ba80: 70 72 65 73 73 69 6f 6e 0a 74 6f 20 74 68 65 20  pression.to the 
ba90: 72 69 67 68 74 2e 20 20 54 68 65 20 65 78 70 72  right.  The expr
baa0: 65 73 73 69 6f 6e 73 20 6d 61 79 20 75 73 65 20  essions may use 
bab0: 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 6f 74  the values of ot
bac0: 68 65 72 20 63 6f 6c 75 6d 6e 73 2e 0a 41 6c 6c  her columns..All
bad0: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 72 65   expressions are
bae0: 20 65 76 61 6c 75 61 74 65 64 20 62 65 66 6f 72   evaluated befor
baf0: 65 20 61 6e 79 20 61 73 73 69 67 6e 6d 65 6e 74  e any assignment
bb00: 73 20 61 72 65 20 6d 61 64 65 2e 0a 41 20 57 48  s are made..A WH
bb10: 45 52 45 20 63 6c 61 75 73 65 20 63 61 6e 20 62  ERE clause can b
bb20: 65 20 75 73 65 64 20 74 6f 20 72 65 73 74 72 69  e used to restri
bb30: 63 74 20 77 68 69 63 68 20 72 6f 77 73 20 61 72  ct which rows ar
bb40: 65 20 75 70 64 61 74 65 64 2e 3c 2f 70 3e 0a 0a  e updated.</p>..
bb50: 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  <p>The optional 
bb60: 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20  conflict-clause 
bb70: 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69  allows the speci
bb80: 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61  fication of an a
bb90: 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74  lternative.const
bba0: 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72  raint conflict r
bbb0: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
bbc0: 74 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69 6e  thm to use durin
bbd0: 67 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61  g this one comma
bbe0: 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74  nd..See the sect
bbf0: 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68 72  ion titled.<a hr
bc00: 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f  ef="#conflict">O
bc10: 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66  N CONFLICT</a> f
bc20: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
bc30: 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 7d  formation.</p>.}
bc40: 0a 0a 53 65 63 74 69 6f 6e 20 56 41 43 55 55 4d  ..Section VACUUM
bc50: 20 76 61 63 75 75 6d 0a 0a 53 79 6e 74 61 78 20   vacuum..Syntax 
bc60: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
bc70: 7b 0a 56 41 43 55 55 4d 20 5b 3c 69 6e 64 65 78  {.VACUUM [<index
bc80: 2d 6f 72 2d 74 61 62 6c 65 2d 6e 61 6d 65 3e 5d  -or-table-name>]
bc90: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
bca0: 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64  e VACUUM command
bcb0: 20 69 73 20 61 6e 20 53 51 4c 69 74 65 20 65 78   is an SQLite ex
bcc0: 74 65 6e 73 69 6f 6e 20 6d 6f 64 65 6c 6c 65 64  tension modelled
bcd0: 20 61 66 74 65 72 20 61 20 73 69 6d 69 6c 61 72   after a similar
bce0: 0a 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 20 69  .command found i
bcf0: 6e 20 50 6f 73 74 67 72 65 53 51 4c 2e 20 20 49  n PostgreSQL.  I
bd00: 66 20 56 41 43 55 55 4d 20 69 73 20 69 6e 76 6f  f VACUUM is invo
bd10: 6b 65 64 20 77 69 74 68 20 74 68 65 20 6e 61 6d  ked with the nam
bd20: 65 20 6f 66 20 61 0a 74 61 62 6c 65 20 6f 72 20  e of a.table or 
bd30: 69 6e 64 65 78 20 74 68 65 6e 20 69 74 20 69 73  index then it is
bd40: 20 73 75 70 70 6f 73 65 20 74 6f 20 63 6c 65 61   suppose to clea
bd50: 6e 20 75 70 20 74 68 65 20 6e 61 6d 65 64 20 74  n up the named t
bd60: 61 62 6c 65 20 6f 72 20 69 6e 64 65 78 2e 0a 49  able or index..I
bd70: 6e 20 76 65 72 73 69 6f 6e 20 31 2e 30 20 6f 66  n version 1.0 of
bd80: 20 53 51 4c 69 74 65 2c 20 74 68 65 20 56 41 43   SQLite, the VAC
bd90: 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 77 6f 75 6c  UUM command woul
bda0: 64 20 69 6e 76 6f 6b 65 20 0a 3c 62 3e 67 64 62  d invoke .<b>gdb
bdb0: 6d 5f 72 65 6f 72 67 61 6e 69 7a 65 28 29 3c 2f  m_reorganize()</
bdc0: 62 3e 20 74 6f 20 63 6c 65 61 6e 20 75 70 20 74  b> to clean up t
bdd0: 68 65 20 62 61 63 6b 65 6e 64 20 64 61 74 61 62  he backend datab
bde0: 61 73 65 20 66 69 6c 65 2e 0a 42 65 67 69 6e 6e  ase file..Beginn
bdf0: 69 6e 67 20 77 69 74 68 20 76 65 72 73 69 6f 6e  ing with version
be00: 20 32 2e 30 20 6f 66 20 53 51 4c 69 74 65 2c 20   2.0 of SQLite, 
be10: 47 44 42 4d 20 69 73 20 6e 6f 20 6c 6f 6e 67 65  GDBM is no longe
be20: 72 20 75 73 65 64 20 66 6f 72 0a 74 68 65 20 64  r used for.the d
be30: 61 74 61 62 61 73 65 20 62 61 63 6b 65 6e 64 20  atabase backend 
be40: 61 6e 64 20 56 41 43 55 55 4d 20 68 61 73 20 62  and VACUUM has b
be50: 65 63 6f 6d 65 20 61 20 6e 6f 2d 6f 70 2e 0a 3c  ecome a no-op..<
be60: 2f 70 3e 0a 7d 0a 0a 0a 70 75 74 73 20 7b 0a 3c  /p>.}...puts {.<
be70: 70 3e 3c 68 72 20 2f 3e 3c 2f 70 3e 0a 3c 70 3e  p><hr /></p>.<p>
be80: 3c 61 20 68 72 65 66 3d 22 69 6e 64 65 78 2e 68  <a href="index.h
be90: 74 6d 6c 22 3e 3c 69 6d 67 20 73 72 63 3d 22 2f  tml"><img src="/
bea0: 67 6f 62 61 63 6b 2e 6a 70 67 22 20 62 6f 72 64  goback.jpg" bord
beb0: 65 72 3d 30 20 2f 3e 0a 42 61 63 6b 20 74 6f 20  er=0 />.Back to 
bec0: 74 68 65 20 53 51 4c 69 74 65 20 48 6f 6d 65 20  the SQLite Home 
bed0: 50 61 67 65 3c 2f 61 3e 0a 3c 2f 70 3e 0a 0a 3c  Page</a>.</p>..<
bee0: 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c 3e 7d 0a     /body></html>}.