Documentation Source Text

Hex Artifact Content
Login

Artifact 08ce9883e2e6bae563a4dfaae3ba868e04e7e076:


0000: 3c 74 69 74 6c 65 3e 51 75 65 72 79 20 4c 61 6e  <title>Query Lan
0010: 67 75 61 67 65 20 55 6e 64 65 72 73 74 6f 6f 64  guage Understood
0020: 20 62 79 20 53 51 4c 69 74 65 3c 2f 74 69 74 6c   by SQLite</titl
0030: 65 3e 0a 0a 3c 68 32 3e 53 51 4c 20 41 73 20 55  e>..<h2>SQL As U
0040: 6e 64 65 72 73 74 6f 6f 64 20 42 79 20 53 51 4c  nderstood By SQL
0050: 69 74 65 3c 2f 68 32 3e 0a 0a 3c 70 3e 53 51 4c  ite</h2>..<p>SQL
0060: 69 74 65 20 75 6e 64 65 72 73 74 61 6e 64 73 20  ite understands 
0070: 6d 6f 73 74 20 6f 66 20 74 68 65 20 73 74 61 6e  most of the stan
0080: 64 61 72 64 20 53 51 4c 0a 6c 61 6e 67 75 61 67  dard SQL.languag
0090: 65 2e 20 20 42 75 74 20 69 74 20 64 6f 65 73 20  e.  But it does 
00a0: 3c 61 20 68 72 65 66 3d 22 6f 6d 69 74 74 65 64  <a href="omitted
00b0: 2e 68 74 6d 6c 22 3e 6f 6d 69 74 20 73 6f 6d 65  .html">omit some
00c0: 20 66 65 61 74 75 72 65 73 3c 2f 61 3e 0a 77 68   features</a>.wh
00d0: 69 6c 65 20 61 74 20 74 68 65 20 73 61 6d 65 20  ile at the same 
00e0: 74 69 6d 65 0a 61 64 64 69 6e 67 20 61 20 66 65  time.adding a fe
00f0: 77 20 66 65 61 74 75 72 65 73 20 6f 66 20 69 74  w features of it
0100: 73 20 6f 77 6e 2e 20 20 54 68 69 73 20 64 6f 63  s own.  This doc
0110: 75 6d 65 6e 74 20 61 74 74 65 6d 70 74 73 20 74  ument attempts t
0120: 6f 0a 64 65 73 63 72 69 62 65 20 70 72 65 63 69  o.describe preci
0130: 73 65 6c 79 20 77 68 61 74 20 70 61 72 74 73 20  sely what parts 
0140: 6f 66 20 74 68 65 20 53 51 4c 20 6c 61 6e 67 75  of the SQL langu
0150: 61 67 65 20 53 51 4c 69 74 65 20 64 6f 65 73 0a  age SQLite does.
0160: 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 73 75 70  and does not sup
0170: 70 6f 72 74 2e 20 20 41 20 6c 69 73 74 20 6f 66  port.  A list of
0180: 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 6b   <a href="lang_k
0190: 65 79 77 6f 72 64 73 2e 68 74 6d 6c 22 3e 6b 65  eywords.html">ke
01a0: 79 77 6f 72 64 73 3c 2f 61 3e 20 69 73 20 0a 61  ywords</a> is .a
01b0: 6c 73 6f 20 70 72 6f 76 69 64 65 64 2e 20 20 54  lso provided.  T
01c0: 68 65 20 53 51 4c 20 6c 61 6e 67 75 61 67 65 20  he SQL language 
01d0: 73 79 6e 74 61 78 20 69 73 20 64 65 73 63 72 69  syntax is descri
01e0: 62 65 64 20 62 79 0a 3c 61 20 68 72 65 66 3d 22  bed by.<a href="
01f0: 73 79 6e 74 61 78 64 69 61 67 72 61 6d 73 2e 68  syntaxdiagrams.h
0200: 74 6d 6c 22 3e 73 79 6e 74 61 78 20 64 69 61 67  tml">syntax diag
0210: 72 61 6d 73 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 3c  rams</a>.</p>..<
0220: 70 3e 49 6e 20 61 6c 6c 20 6f 66 20 74 68 65 20  p>In all of the 
0230: 73 79 6e 74 61 78 20 64 69 61 67 72 61 6d 73 20  syntax diagrams 
0240: 74 68 61 74 20 66 6f 6c 6c 6f 77 2c 20 6c 69 74  that follow, lit
0250: 65 72 61 6c 20 74 65 78 74 20 69 73 20 73 68 6f  eral text is sho
0260: 77 6e 20 69 6e 0a 62 6f 6c 64 20 62 6c 75 65 2e  wn in.bold blue.
0270: 20 20 4e 6f 6e 2d 74 65 72 6d 69 6e 61 6c 20 73    Non-terminal s
0280: 79 6d 62 6f 6c 73 20 61 72 65 20 73 68 6f 77 6e  ymbols are shown
0290: 20 69 6e 20 69 74 61 6c 69 63 20 72 65 64 2e 20   in italic red. 
02a0: 20 4f 70 65 72 61 74 6f 72 73 0a 74 68 61 74 20   Operators.that 
02b0: 61 72 65 20 70 61 72 74 20 6f 66 20 74 68 65 20  are part of the 
02c0: 73 79 6e 74 61 63 74 69 63 20 6d 61 72 6b 75 70  syntactic markup
02d0: 20 69 74 73 65 6c 66 20 61 72 65 20 73 68 6f 77   itself are show
02e0: 6e 20 69 6e 20 62 6c 61 63 6b 20 72 6f 6d 61 6e  n in black roman
02f0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69 73 20 64  .</p>..<p>This d
0300: 6f 63 75 6d 65 6e 74 20 69 73 20 6a 75 73 74 20  ocument is just 
0310: 61 6e 20 6f 76 65 72 76 69 65 77 20 6f 66 20 74  an overview of t
0320: 68 65 20 53 51 4c 20 73 79 6e 74 61 78 20 69 6d  he SQL syntax im
0330: 70 6c 65 6d 65 6e 74 65 64 0a 62 79 20 53 51 4c  plemented.by SQL
0340: 69 74 65 2e 20 20 4d 61 6e 79 20 6c 6f 77 2d 6c  ite.  Many low-l
0350: 65 76 65 6c 20 70 72 6f 64 75 63 74 69 6f 6e 73  evel productions
0360: 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 20 20 46   are omitted.  F
0370: 6f 72 20 64 65 74 61 69 6c 65 64 20 69 6e 66 6f  or detailed info
0380: 72 6d 61 74 69 6f 6e 0a 6f 6e 20 74 68 65 20 6c  rmation.on the l
0390: 61 6e 67 75 61 67 65 20 74 68 61 74 20 53 51 4c  anguage that SQL
03a0: 69 74 65 20 75 6e 64 65 72 73 74 61 6e 64 73 2c  ite understands,
03b0: 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 73 6f   refer to the so
03c0: 75 72 63 65 20 63 6f 64 65 20 61 6e 64 0a 74 68  urce code and.th
03d0: 65 20 67 72 61 6d 6d 61 72 20 66 69 6c 65 20 22  e grammar file "
03e0: 70 61 72 73 65 2e 79 22 2e 3c 2f 70 3e 0a 0a 3c  parse.y".</p>..<
03f0: 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  p>The following 
0400: 73 79 6e 74 61 78 20 64 6f 63 75 6d 65 6e 74 61  syntax documenta
0410: 74 69 6f 6e 20 74 6f 70 69 63 73 20 61 72 65 20  tion topics are 
0420: 61 76 61 69 6c 61 62 6c 65 3a 3c 2f 70 3e 0a 0a  available:</p>..
0430: 3c 74 61 62 6c 65 20 77 69 64 74 68 3d 22 31 30  <table width="10
0440: 30 25 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d  0%" cellpadding=
0450: 22 35 22 20 62 6f 72 64 65 72 3d 22 30 22 3e 0a  "5" border="0">.
0460: 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22  <tr><td valign="
0470: 74 6f 70 22 3e 3c 75 6c 3e 0a 0a 3c 74 63 6c 3e  top"><ul>..<tcl>
0480: 0a 73 65 74 20 69 20 30 0a 73 65 74 20 6c 61 6e  .set i 0.set lan
0490: 67 5f 73 65 63 74 69 6f 6e 5f 6c 69 73 74 20 7b  g_section_list {
04a0: 0a 20 20 7b 7b 43 52 45 41 54 45 20 54 41 42 4c  .  {{CREATE TABL
04b0: 45 7d 20 63 72 65 61 74 65 74 61 62 6c 65 7d 0a  E} createtable}.
04c0: 20 20 7b 7b 43 52 45 41 54 45 20 56 49 52 54 55    {{CREATE VIRTU
04d0: 41 4c 20 54 41 42 4c 45 7d 20 63 72 65 61 74 65  AL TABLE} create
04e0: 76 74 61 62 7d 0a 20 20 7b 7b 43 52 45 41 54 45  vtab}.  {{CREATE
04f0: 20 49 4e 44 45 58 7d 20 63 72 65 61 74 65 69 6e   INDEX} createin
0500: 64 65 78 7d 0a 20 20 7b 56 41 43 55 55 4d 20 76  dex}.  {VACUUM v
0510: 61 63 75 75 6d 7d 0a 20 20 7b 7b 44 52 4f 50 20  acuum}.  {{DROP 
0520: 54 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65  TABLE} droptable
0530: 7d 0a 20 20 7b 7b 44 52 4f 50 20 49 4e 44 45 58  }.  {{DROP INDEX
0540: 7d 20 64 72 6f 70 69 6e 64 65 78 7d 0a 20 20 7b  } dropindex}.  {
0550: 49 4e 53 45 52 54 20 69 6e 73 65 72 74 7d 0a 20  INSERT insert}. 
0560: 20 7b 52 45 50 4c 41 43 45 20 72 65 70 6c 61 63   {REPLACE replac
0570: 65 7d 0a 20 20 7b 44 45 4c 45 54 45 20 64 65 6c  e}.  {DELETE del
0580: 65 74 65 7d 0a 20 20 7b 55 50 44 41 54 45 20 75  ete}.  {UPDATE u
0590: 70 64 61 74 65 7d 0a 20 20 7b 53 45 4c 45 43 54  pdate}.  {SELECT
05a0: 20 73 65 6c 65 63 74 7d 0a 20 20 7b 63 6f 6d 6d   select}.  {comm
05b0: 65 6e 74 20 63 6f 6d 6d 65 6e 74 7d 0a 20 20 7b  ent comment}.  {
05c0: 45 58 50 4c 41 49 4e 20 65 78 70 6c 61 69 6e 7d  EXPLAIN explain}
05d0: 0a 20 20 7b 65 78 70 72 65 73 73 69 6f 6e 20 65  .  {expression e
05e0: 78 70 72 7d 0a 20 20 7b 7b 42 45 47 49 4e 20 54  xpr}.  {{BEGIN T
05f0: 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e  RANSACTION} tran
0600: 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 7b 43 4f 4d  saction}.  {{COM
0610: 4d 49 54 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d  MIT TRANSACTION}
0620: 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20   transaction}.  
0630: 7b 7b 45 4e 44 20 54 52 41 4e 53 41 43 54 49 4f  {{END TRANSACTIO
0640: 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a  N} transaction}.
0650: 20 20 7b 7b 52 4f 4c 4c 42 41 43 4b 20 54 52 41    {{ROLLBACK TRA
0660: 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61  NSACTION} transa
0670: 63 74 69 6f 6e 7d 0a 20 20 7b 53 41 56 45 50 4f  ction}.  {SAVEPO
0680: 49 4e 54 20 73 61 76 65 70 6f 69 6e 74 7d 0a 20  INT savepoint}. 
0690: 20 7b 7b 52 45 4c 45 41 53 45 20 53 41 56 45 50   {{RELEASE SAVEP
06a0: 4f 49 4e 54 7d 20 73 61 76 65 70 6f 69 6e 74 7d  OINT} savepoint}
06b0: 0a 20 20 7b 50 52 41 47 4d 41 20 70 72 61 67 6d  .  {PRAGMA pragm
06c0: 61 2e 68 74 6d 6c 7d 0a 20 20 7b 7b 4f 4e 20 43  a.html}.  {{ON C
06d0: 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20  ONFLICT clause} 
06e0: 63 6f 6e 66 6c 69 63 74 7d 0a 20 20 7b 7b 43 52  conflict}.  {{CR
06f0: 45 41 54 45 20 56 49 45 57 7d 20 63 72 65 61 74  EATE VIEW} creat
0700: 65 76 69 65 77 7d 0a 20 20 7b 7b 44 52 4f 50 20  eview}.  {{DROP 
0710: 56 49 45 57 7d 20 64 72 6f 70 76 69 65 77 7d 0a  VIEW} dropview}.
0720: 20 20 7b 7b 43 52 45 41 54 45 20 54 52 49 47 47    {{CREATE TRIGG
0730: 45 52 7d 20 63 72 65 61 74 65 74 72 69 67 67 65  ER} createtrigge
0740: 72 7d 0a 20 20 7b 7b 44 52 4f 50 20 54 52 49 47  r}.  {{DROP TRIG
0750: 47 45 52 7d 20 64 72 6f 70 74 72 69 67 67 65 72  GER} droptrigger
0760: 7d 0a 20 20 7b 7b 41 54 54 41 43 48 20 44 41 54  }.  {{ATTACH DAT
0770: 41 42 41 53 45 7d 20 61 74 74 61 63 68 7d 0a 20  ABASE} attach}. 
0780: 20 7b 7b 44 45 54 41 43 48 20 44 41 54 41 42 41   {{DETACH DATABA
0790: 53 45 7d 20 64 65 74 61 63 68 7d 0a 20 20 7b 52  SE} detach}.  {R
07a0: 45 49 4e 44 45 58 20 72 65 69 6e 64 65 78 7d 0a  EINDEX reindex}.
07b0: 20 20 7b 7b 41 4c 54 45 52 20 54 41 42 4c 45 7d    {{ALTER TABLE}
07c0: 20 61 6c 74 65 72 74 61 62 6c 65 7d 0a 20 20 7b   altertable}.  {
07d0: 7b 41 4e 41 4c 59 5a 45 7d 20 61 6e 61 6c 79 7a  {ANALYZE} analyz
07e0: 65 7d 0a 20 20 7b 7b 49 4e 44 45 58 45 44 20 42  e}.  {{INDEXED B
07f0: 59 7d 20 69 6e 64 65 78 65 64 62 79 7d 0a 20 20  Y} indexedby}.  
0800: 7b 7b 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  {{aggregate func
0810: 74 69 6f 6e 73 7d 20 61 67 67 66 75 6e 63 7d 0a  tions} aggfunc}.
0820: 20 20 7b 7b 63 6f 72 65 20 66 75 6e 63 74 69 6f    {{core functio
0830: 6e 73 7d 20 63 6f 72 65 66 75 6e 63 7d 0a 20 20  ns} corefunc}.  
0840: 7b 7b 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  {{date and time 
0850: 66 75 6e 63 74 69 6f 6e 73 7d 20 64 61 74 65 66  functions} datef
0860: 75 6e 63 7d 0a 20 20 7b 6b 65 79 77 6f 72 64 73  unc}.  {keywords
0870: 20 6b 65 79 77 6f 72 64 73 7d 0a 7d 0a 73 65 74   keywords}.}.set
0880: 20 6c 61 6e 67 5f 73 65 63 74 69 6f 6e 5f 62 72   lang_section_br
0890: 65 61 6b 20 5b 65 78 70 72 20 7b 28 5b 6c 6c 65  eak [expr {([lle
08a0: 6e 67 74 68 20 24 6c 61 6e 67 5f 73 65 63 74 69  ngth $lang_secti
08b0: 6f 6e 5f 6c 69 73 74 5d 2b 32 29 2f 33 7d 5d 0a  on_list]+2)/3}].
08c0: 66 6f 72 65 61 63 68 20 7b 73 65 63 74 69 6f 6e  foreach {section
08d0: 7d 20 5b 6c 73 6f 72 74 20 2d 69 6e 64 65 78 20  } [lsort -index 
08e0: 30 20 2d 64 69 63 74 69 6f 6e 61 72 79 20 24 6c  0 -dictionary $l
08f0: 61 6e 67 5f 73 65 63 74 69 6f 6e 5f 6c 69 73 74  ang_section_list
0900: 5d 20 7b 0a 20 20 66 6f 72 65 61 63 68 20 7b 73  ] {.  foreach {s
0910: 5f 74 69 74 6c 65 20 73 5f 74 61 67 7d 20 24 73  _title s_tag} $s
0920: 65 63 74 69 6f 6e 20 7b 7d 0a 20 20 69 66 20 7b  ection {}.  if {
0930: 24 73 5f 74 61 67 3d 3d 22 70 72 61 67 6d 61 2e  $s_tag=="pragma.
0940: 68 74 6d 6c 22 7d 20 7b 0a 20 20 20 20 73 65 74  html"} {.    set
0950: 20 75 72 6c 20 24 73 5f 74 61 67 0a 20 20 7d 20   url $s_tag.  } 
0960: 65 6c 73 65 20 7b 0a 20 20 20 20 73 65 74 20 75  else {.    set u
0970: 72 6c 20 6c 61 6e 67 5f 24 73 5f 74 61 67 2e 68  rl lang_$s_tag.h
0980: 74 6d 6c 0a 20 20 7d 0a 20 20 68 64 5f 70 75 74  tml.  }.  hd_put
0990: 73 20 22 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 5c  s "<li><a href=\
09a0: 22 24 75 72 6c 5c 22 3e 24 73 5f 74 69 74 6c 65  "$url\">$s_title
09b0: 3c 2f 61 3e 3c 2f 6c 69 3e 22 0a 20 20 69 6e 63  </a></li>".  inc
09c0: 72 20 69 0a 20 20 69 66 20 7b 24 69 3d 3d 24 6c  r i.  if {$i==$l
09d0: 61 6e 67 5f 73 65 63 74 69 6f 6e 5f 62 72 65 61  ang_section_brea
09e0: 6b 20 7c 7c 20 24 69 3d 3d 32 2a 24 6c 61 6e 67  k || $i==2*$lang
09f0: 5f 73 65 63 74 69 6f 6e 5f 62 72 65 61 6b 7d 20  _section_break} 
0a00: 7b 0a 20 20 20 20 68 64 5f 70 75 74 73 20 22 3c  {.    hd_puts "<
0a10: 2f 75 6c 3e 3c 2f 74 64 3e 3c 74 64 20 76 61 6c  /ul></td><td val
0a20: 69 67 6e 3d 5c 22 74 6f 70 5c 22 3e 3c 75 6c 3e  ign=\"top\"><ul>
0a30: 22 0a 20 20 7d 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c  ".  }.}.</tcl>.<
0a40: 2f 75 6c 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f  /ul></td></tr></
0a50: 74 61 62 6c 65 3e 0a 0a 3c 70 3e 54 68 65 20 72  table>..<p>The r
0a60: 6f 75 74 69 6e 65 73 20 5b 73 71 6c 69 74 65 33  outines [sqlite3
0a70: 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2c 20  _prepare_v2()], 
0a80: 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
0a90: 28 29 5d 2c 0a 5b 73 71 6c 69 74 65 33 5f 70 72  ()],.[sqlite3_pr
0aa0: 65 70 61 72 65 31 36 28 29 5d 2c 20 5b 73 71 6c  epare16()], [sql
0ab0: 69 74 65 33 5f 65 78 65 63 28 29 5d 2c 20 61 6e  ite3_exec()], an
0ac0: 64 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 74  d [sqlite3_get_t
0ad0: 61 62 6c 65 28 29 5d 20 61 63 63 65 70 74 0a 61  able()] accept.a
0ae0: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  n SQL statement 
0af0: 6c 69 73 74 20 28 73 71 6c 2d 73 74 6d 74 2d 6c  list (sql-stmt-l
0b00: 69 73 74 29 20 77 68 69 63 68 20 69 73 20 61 20  ist) which is a 
0b10: 73 65 6d 69 63 6f 6c 6f 6e 2d 73 65 70 61 72 61  semicolon-separa
0b20: 74 65 64 0a 6c 69 73 74 20 6f 66 20 73 74 61 74  ted.list of stat
0b30: 65 6d 65 6e 74 73 2e 3c 2f 70 3e 0a 0a 3c 74 63  ements.</p>..<tc
0b40: 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  l>BubbleDiagram 
0b50: 73 71 6c 2d 73 74 6d 74 2d 6c 69 73 74 3c 2f 74  sql-stmt-list</t
0b60: 63 6c 3e 0a 0a 3c 70 3e 45 61 63 68 20 53 51 4c  cl>..<p>Each SQL
0b70: 20 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 74 68   statement in th
0b80: 65 20 73 74 61 74 65 6d 65 6e 74 20 6c 69 73 74  e statement list
0b90: 20 69 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20   is an instance 
0ba0: 6f 66 20 74 68 65 0a 66 6f 6c 6c 6f 77 69 6e 67  of the.following
0bb0: 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62  :</p>..<tcl>Bubb
0bc0: 6c 65 44 69 61 67 72 61 6d 20 73 71 6c 2d 73 74  leDiagram sql-st
0bd0: 6d 74 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a  mt</tcl>..<tcl>.
0be0: 70 72 6f 63 20 4f 70 65 72 61 74 6f 72 20 7b 6e  proc Operator {n
0bf0: 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20  ame} {.  return 
0c00: 22 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23  "<font color=\"#
0c10: 32 63 32 63 66 30 5c 22 3e 3c 62 69 67 3e 24 6e  2c2cf0\"><big>$n
0c20: 61 6d 65 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e  ame</big></font>
0c30: 22 0a 7d 0a 70 72 6f 63 20 4e 6f 6e 74 65 72 6d  ".}.proc Nonterm
0c40: 69 6e 61 6c 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20  inal {name} {.  
0c50: 72 65 74 75 72 6e 20 22 3c 69 3e 3c 66 6f 6e 74  return "<i><font
0c60: 20 63 6f 6c 6f 72 3d 5c 22 23 66 66 33 34 33 34   color=\"#ff3434
0c70: 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74 3e 3c  \">$name</font><
0c80: 2f 69 3e 22 0a 7d 0a 70 72 6f 63 20 4b 65 79 77  /i>".}.proc Keyw
0c90: 6f 72 64 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20 72  ord {name} {.  r
0ca0: 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f 6c  eturn "<font col
0cb0: 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e 24  or=\"#2c2cf0\">$
0cc0: 6e 61 6d 65 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70  name</font>".}.p
0cd0: 72 6f 63 20 45 78 61 6d 70 6c 65 20 7b 74 65 78  roc Example {tex
0ce0: 74 7d 20 7b 0a 20 20 68 64 5f 70 75 74 73 20 22  t} {.  hd_puts "
0cf0: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65  <blockquote><pre
0d00: 3e 24 74 65 78 74 3c 2f 70 72 65 3e 3c 2f 62 6c  >$text</pre></bl
0d10: 6f 63 6b 71 75 6f 74 65 3e 22 0a 7d 0a 0a 70 72  ockquote>".}..pr
0d20: 6f 63 20 53 65 63 74 69 6f 6e 20 7b 6e 61 6d 65  oc Section {name
0d30: 20 6c 61 62 65 6c 20 6b 65 79 77 6f 72 64 73 7d   label keywords}
0d40: 20 7b 0a 20 20 67 6c 6f 62 61 6c 20 44 4f 43 0a   {.  global DOC.
0d50: 20 20 68 64 5f 63 6c 6f 73 65 5f 6d 61 69 6e 0a    hd_close_main.
0d60: 20 20 68 64 5f 6f 70 65 6e 5f 6d 61 69 6e 20 6c    hd_open_main l
0d70: 61 6e 67 5f 24 6c 61 62 65 6c 2e 68 74 6d 6c 0a  ang_$label.html.
0d80: 20 20 68 64 5f 68 65 61 64 65 72 20 22 53 51 4c    hd_header "SQL
0d90: 69 74 65 20 51 75 65 72 79 20 4c 61 6e 67 75 61  ite Query Langua
0da0: 67 65 3a 20 24 6e 61 6d 65 22 20 24 44 4f 43 2f  ge: $name" $DOC/
0db0: 70 61 67 65 73 2f 6c 61 6e 67 2e 69 6e 0a 20 20  pages/lang.in.  
0dc0: 65 76 61 6c 20 68 64 5f 6b 65 79 77 6f 72 64 73  eval hd_keywords
0dd0: 20 24 6b 65 79 77 6f 72 64 73 0a 20 20 68 64 5f   $keywords.  hd_
0de0: 70 75 74 73 20 7b 3c 61 20 68 72 65 66 3d 22 6c  puts {<a href="l
0df0: 61 6e 67 2e 68 74 6d 6c 22 3e 0a 20 20 20 20 20  ang.html">.     
0e00: 20 20 20 20 20 20 3c 68 32 20 61 6c 69 67 6e 3d        <h2 align=
0e10: 22 63 65 6e 74 65 72 22 3e 53 51 4c 20 41 73 20  "center">SQL As 
0e20: 55 6e 64 65 72 73 74 6f 6f 64 20 42 79 20 53 51  Understood By SQ
0e30: 4c 69 74 65 3c 2f 68 32 3e 3c 2f 61 3e 7d 0a 20  Lite</h2></a>}. 
0e40: 20 68 64 5f 70 75 74 73 20 22 3c 68 31 3e 24 6e   hd_puts "<h1>$n
0e50: 61 6d 65 3c 2f 68 31 3e 22 0a 7d 0a 0a 23 23 23  ame</h1>".}..###
0e60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0ea0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
0eb0: 74 69 6f 6e 20 7b 41 4c 54 45 52 20 54 41 42 4c  tion {ALTER TABL
0ec0: 45 7d 20 61 6c 74 65 72 74 61 62 6c 65 20 7b 7b  E} altertable {{
0ed0: 41 4c 54 45 52 20 54 41 42 4c 45 7d 20 7b 41 4c  ALTER TABLE} {AL
0ee0: 54 45 52 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61  TER}}..BubbleDia
0ef0: 67 72 61 6d 20 61 6c 74 65 72 2d 74 61 62 6c 65  gram alter-table
0f00: 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a  -stmt 1.</tcl>..
0f10: 3c 70 3e 53 51 4c 69 74 65 20 73 75 70 70 6f 72  <p>SQLite suppor
0f20: 74 73 20 61 20 6c 69 6d 69 74 65 64 20 73 75 62  ts a limited sub
0f30: 73 65 74 20 6f 66 20 41 4c 54 45 52 20 54 41 42  set of ALTER TAB
0f40: 4c 45 2e 0a 54 68 65 20 41 4c 54 45 52 20 54 41  LE..The ALTER TA
0f50: 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 69 6e 20 53  BLE command in S
0f60: 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20 74 68 65  QLite allows the
0f70: 20 75 73 65 72 20 74 6f 20 72 65 6e 61 6d 65 20   user to rename 
0f80: 61 20 74 61 62 6c 65 0a 6f 72 20 74 6f 20 61 64  a table.or to ad
0f90: 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d 6e 20 74  d a new column t
0fa0: 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74 61  o an existing ta
0fb0: 62 6c 65 2e 20 49 74 20 69 73 20 6e 6f 74 20 70  ble. It is not p
0fc0: 6f 73 73 69 62 6c 65 0a 74 6f 20 72 65 6e 61 6d  ossible.to renam
0fd0: 65 20 61 20 63 6f 6c 75 6d 2c 20 72 65 6d 6f 76  e a colum, remov
0fe0: 65 20 61 20 63 6f 6c 75 6d 6e 2c 20 6f 72 20 61  e a column, or a
0ff0: 64 64 20 6f 72 20 72 65 6d 6f 76 65 20 63 6f 6e  dd or remove con
1000: 73 74 72 61 69 6e 74 73 20 66 72 6f 6d 20 61 20  straints from a 
1010: 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  table..</p>..<p>
1020: 54 68 65 20 52 45 4e 41 4d 45 20 54 4f 20 73 79  The RENAME TO sy
1030: 6e 74 61 78 20 69 73 20 75 73 65 64 20 74 6f 20  ntax is used to 
1040: 72 65 6e 61 6d 65 20 74 68 65 20 74 61 62 6c 65  rename the table
1050: 20 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 0a   identified by .
1060: 3c 69 3e 26 23 39 31 3b 64 61 74 61 62 61 73 65  <i>&#91;database
1070: 2d 6e 61 6d 65 2e 26 23 39 33 3b 74 61 62 6c 65  -name.&#93;table
1080: 2d 6e 61 6d 65 3c 2f 69 3e 20 74 6f 20 3c 69 3e  -name</i> to <i>
1090: 6e 65 77 2d 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f  new-table-name</
10a0: 69 3e 2e 0a 54 68 69 73 20 63 6f 6d 6d 61 6e 64  i>..This command
10b0: 20 0a 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64   .cannot be used
10c0: 20 74 6f 20 6d 6f 76 65 20 61 20 74 61 62 6c 65   to move a table
10d0: 20 62 65 74 77 65 65 6e 20 61 74 74 61 63 68 65   between attache
10e0: 64 20 64 61 74 61 62 61 73 65 73 2c 20 6f 6e 6c  d databases, onl
10f0: 79 20 74 6f 20 72 65 6e 61 6d 65 20 0a 61 20 74  y to rename .a t
1100: 61 62 6c 65 20 77 69 74 68 69 6e 20 74 68 65 20  able within the 
1110: 73 61 6d 65 20 64 61 74 61 62 61 73 65 2e 3c 2f  same database.</
1120: 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 74 61  p>..<p>If the ta
1130: 62 6c 65 20 62 65 69 6e 67 20 72 65 6e 61 6d 65  ble being rename
1140: 64 20 68 61 73 20 74 72 69 67 67 65 72 73 20 6f  d has triggers o
1150: 72 20 69 6e 64 69 63 65 73 2c 20 74 68 65 6e 20  r indices, then 
1160: 74 68 65 73 65 20 72 65 6d 61 69 6e 0a 61 74 74  these remain.att
1170: 61 63 68 65 64 20 74 6f 20 74 68 65 20 74 61 62  ached to the tab
1180: 6c 65 20 61 66 74 65 72 20 69 74 20 68 61 73 20  le after it has 
1190: 62 65 65 6e 20 72 65 6e 61 6d 65 64 2e 20 48 6f  been renamed. Ho
11a0: 77 65 76 65 72 2c 20 69 66 20 74 68 65 72 65 20  wever, if there 
11b0: 61 72 65 0a 61 6e 79 20 76 69 65 77 20 64 65 66  are.any view def
11c0: 69 6e 69 74 69 6f 6e 73 2c 20 6f 72 20 73 74 61  initions, or sta
11d0: 74 65 6d 65 6e 74 73 20 65 78 65 63 75 74 65 64  tements executed
11e0: 20 62 79 20 74 72 69 67 67 65 72 73 20 74 68 61   by triggers tha
11f0: 74 20 72 65 66 65 72 20 74 6f 0a 74 68 65 20 74  t refer to.the t
1200: 61 62 6c 65 20 62 65 69 6e 67 20 72 65 6e 61 6d  able being renam
1210: 65 64 2c 20 74 68 65 73 65 20 61 72 65 20 6e 6f  ed, these are no
1220: 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  t automatically 
1230: 6d 6f 64 69 66 69 65 64 20 74 6f 20 75 73 65 20  modified to use 
1240: 74 68 65 20 6e 65 77 0a 74 61 62 6c 65 20 6e 61  the new.table na
1250: 6d 65 2e 20 49 66 20 74 68 69 73 20 69 73 20 72  me. If this is r
1260: 65 71 75 69 72 65 64 2c 20 74 68 65 20 74 72 69  equired, the tri
1270: 67 67 65 72 73 20 6f 72 20 76 69 65 77 20 64 65  ggers or view de
1280: 66 69 6e 69 74 69 6f 6e 73 20 6d 75 73 74 20 62  finitions must b
1290: 65 0a 64 72 6f 70 70 65 64 20 61 6e 64 20 72 65  e.dropped and re
12a0: 63 72 65 61 74 65 64 20 74 6f 20 75 73 65 20 74  created to use t
12b0: 68 65 20 6e 65 77 20 74 61 62 6c 65 20 6e 61 6d  he new table nam
12c0: 65 20 62 79 20 68 61 6e 64 2e 0a 3c 2f 70 3e 0a  e by hand..</p>.
12d0: 0a 3c 70 3e 54 68 65 20 41 44 44 20 43 4f 4c 55  .<p>The ADD COLU
12e0: 4d 4e 20 73 79 6e 74 61 78 0a 69 73 20 75 73 65  MN syntax.is use
12f0: 64 20 74 6f 20 61 64 64 20 61 20 6e 65 77 20 63  d to add a new c
1300: 6f 6c 75 6d 6e 20 74 6f 20 61 6e 20 65 78 69 73  olumn to an exis
1310: 74 69 6e 67 20 74 61 62 6c 65 2e 0a 54 68 65 20  ting table..The 
1320: 6e 65 77 20 63 6f 6c 75 6d 6e 20 69 73 20 61 6c  new column is al
1330: 77 61 79 73 20 61 70 70 65 6e 64 65 64 20 74 6f  ways appended to
1340: 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20   the end of the 
1350: 6c 69 73 74 20 6f 66 20 65 78 69 73 74 69 6e 67  list of existing
1360: 20 63 6f 6c 75 6d 6e 73 2e 0a 54 68 65 20 5b 63   columns..The [c
1370: 6f 6c 75 6d 6e 2d 64 65 66 5d 20 72 75 6c 65 20  olumn-def] rule 
1380: 64 65 66 69 6e 65 73 20 74 68 65 20 63 68 61 72  defines the char
1390: 61 63 74 65 72 69 73 74 69 63 73 20 6f 66 20 74  acteristics of t
13a0: 68 65 20 6e 65 77 20 63 6f 6c 75 6d 6e 2e 0a 54  he new column..T
13b0: 68 65 20 6e 65 77 20 63 6f 6c 75 6d 6e 20 6d 61  he new column ma
13c0: 79 20 74 61 6b 65 20 61 6e 79 20 6f 66 20 74 68  y take any of th
13d0: 65 20 66 6f 72 6d 73 20 70 65 72 6d 69 73 73 61  e forms permissa
13e0: 62 6c 65 20 69 6e 20 61 20 5b 43 52 45 41 54 45  ble in a [CREATE
13f0: 20 54 41 42 4c 45 5d 0a 73 74 61 74 65 6d 65 6e   TABLE].statemen
1400: 74 2c 20 77 69 74 68 20 74 68 65 20 66 6f 6c 6c  t, with the foll
1410: 6f 77 69 6e 67 20 72 65 73 74 72 69 63 74 69 6f  owing restrictio
1420: 6e 73 3a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 54 68 65  ns:.<ul>.<li>The
1430: 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74 20   column may not 
1440: 68 61 76 65 20 61 20 50 52 49 4d 41 52 59 20 4b  have a PRIMARY K
1450: 45 59 20 6f 72 20 55 4e 49 51 55 45 20 63 6f 6e  EY or UNIQUE con
1460: 73 74 72 61 69 6e 74 2e 3c 2f 6c 69 3e 0a 3c 6c  straint.</li>.<l
1470: 69 3e 54 68 65 20 63 6f 6c 75 6d 6e 20 6d 61 79  i>The column may
1480: 20 6e 6f 74 20 68 61 76 65 20 61 20 64 65 66 61   not have a defa
1490: 75 6c 74 20 76 61 6c 75 65 20 6f 66 20 43 55 52  ult value of CUR
14a0: 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45  RENT_TIME, CURRE
14b0: 4e 54 5f 44 41 54 45 20 0a 20 20 20 20 6f 72 20  NT_DATE .    or 
14c0: 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d  CURRENT_TIMESTAM
14d0: 50 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 49 66 20 61  P.</li>.<li>If a
14e0: 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74 72   NOT NULL constr
14f0: 61 69 6e 74 20 69 73 20 73 70 65 63 69 66 69 65  aint is specifie
1500: 64 2c 20 74 68 65 6e 20 74 68 65 20 63 6f 6c 75  d, then the colu
1510: 6d 6e 20 6d 75 73 74 20 68 61 76 65 20 61 0a 20  mn must have a. 
1520: 20 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65     default value
1530: 20 6f 74 68 65 72 20 74 68 61 6e 20 4e 55 4c 4c   other than NULL
1540: 2e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 4e 6f 74 65  ..</ul>..<p>Note
1550: 20 61 6c 73 6f 20 74 68 61 74 20 77 68 65 6e 20   also that when 
1560: 61 64 64 69 6e 67 20 61 20 43 48 45 43 4b 20 63  adding a CHECK c
1570: 6f 6e 73 74 72 61 69 6e 74 2c 20 74 68 65 20 43  onstraint, the C
1580: 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 0a  HECK constraint.
1590: 69 73 20 6e 6f 74 20 74 65 73 74 65 64 20 61 67  is not tested ag
15a0: 61 69 6e 73 74 20 70 72 65 65 78 69 73 74 69 6e  ainst preexistin
15b0: 67 20 72 6f 77 73 20 6f 66 20 74 68 65 20 74 61  g rows of the ta
15c0: 62 6c 65 2e 0a 54 68 69 73 20 63 61 6e 20 72 65  ble..This can re
15d0: 73 75 6c 74 20 69 6e 20 61 20 74 61 62 6c 65 20  sult in a table 
15e0: 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 64 61  that contains da
15f0: 74 61 20 74 68 61 74 0a 69 73 20 69 6e 20 76 69  ta that.is in vi
1600: 6f 6c 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 43  olation of the C
1610: 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 2e  HECK constraint.
1620: 20 20 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e    Future version
1630: 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68  s of SQLite migh
1640: 74 0a 63 68 61 6e 67 65 20 74 6f 20 76 61 6c 69  t.change to vali
1650: 64 61 74 65 20 43 48 45 43 4b 20 63 6f 6e 73 74  date CHECK const
1660: 72 61 69 6e 74 73 20 61 73 20 74 68 65 79 20 61  raints as they a
1670: 72 65 20 61 64 64 65 64 2e 3c 2f 70 3e 0a 0a 3c  re added.</p>..<
1680: 70 3e 54 68 65 20 65 78 65 63 75 74 69 6f 6e 20  p>The execution 
1690: 74 69 6d 65 20 6f 66 20 74 68 65 20 41 4c 54 45  time of the ALTE
16a0: 52 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 20  R TABLE command 
16b0: 69 73 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 6f  is independent o
16c0: 66 0a 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20  f.the amount of 
16d0: 64 61 74 61 20 69 6e 20 74 68 65 20 74 61 62 6c  data in the tabl
16e0: 65 2e 20 20 54 68 65 20 41 4c 54 45 52 20 54 41  e.  The ALTER TA
16f0: 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 72 75 6e 73  BLE command runs
1700: 20 61 73 20 71 75 69 63 6b 6c 79 0a 6f 6e 20 61   as quickly.on a
1710: 20 74 61 62 6c 65 20 77 69 74 68 20 31 30 20 6d   table with 10 m
1720: 69 6c 6c 69 6f 6e 20 72 6f 77 73 20 61 73 20 69  illion rows as i
1730: 74 20 64 6f 65 73 20 6f 6e 20 61 20 74 61 62 6c  t does on a tabl
1740: 65 20 77 69 74 68 20 31 20 72 6f 77 2e 0a 3c 2f  e with 1 row..</
1750: 70 3e 0a 0a 3c 70 3e 41 66 74 65 72 20 41 44 44  p>..<p>After ADD
1760: 20 43 4f 4c 55 4d 4e 20 68 61 73 20 62 65 65 6e   COLUMN has been
1770: 20 72 75 6e 20 6f 6e 20 61 20 64 61 74 61 62 61   run on a databa
1780: 73 65 2c 20 74 68 61 74 20 64 61 74 61 62 61 73  se, that databas
1790: 65 20 77 69 6c 6c 20 6e 6f 74 0a 62 65 20 72 65  e will not.be re
17a0: 61 64 61 62 6c 65 20 62 79 20 53 51 4c 69 74 65  adable by SQLite
17b0: 20 76 65 72 73 69 6f 6e 20 33 2e 31 2e 33 20 61   version 3.1.3 a
17c0: 6e 64 20 65 61 72 6c 69 65 72 2e 3c 2f 70 3e 0a  nd earlier.</p>.
17d0: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
17e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1800: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1810: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1820: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 41  #####.Section {A
1830: 4e 41 4c 59 5a 45 7d 20 61 6e 61 6c 79 7a 65 20  NALYZE} analyze 
1840: 41 4e 41 4c 59 5a 45 0a 0a 42 75 62 62 6c 65 44  ANALYZE..BubbleD
1850: 69 61 67 72 61 6d 20 61 6e 61 6c 79 7a 65 2d 73  iagram analyze-s
1860: 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tmt 1.</tcl>..<p
1870: 3e 54 68 65 20 41 4e 41 4c 59 5a 45 20 63 6f 6d  >The ANALYZE com
1880: 6d 61 6e 64 20 67 61 74 68 65 72 73 20 73 74 61  mand gathers sta
1890: 74 69 73 74 69 63 73 20 61 62 6f 75 74 20 69 6e  tistics about in
18a0: 64 69 63 65 73 20 61 6e 64 20 73 74 6f 72 65 73  dices and stores
18b0: 20 74 68 65 6d 0a 69 6e 20 61 20 73 70 65 63 69   them.in a speci
18c0: 61 6c 20 74 61 62 6c 65 73 20 69 6e 20 74 68 65  al tables in the
18d0: 20 64 61 74 61 62 61 73 65 20 77 68 65 72 65 20   database where 
18e0: 74 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69  the query optimi
18f0: 7a 65 72 20 63 61 6e 20 75 73 65 0a 74 68 65 6d  zer can use.them
1900: 20 74 6f 20 68 65 6c 70 20 6d 61 6b 65 20 62 65   to help make be
1910: 74 74 65 72 20 69 6e 64 65 78 20 63 68 6f 69 63  tter index choic
1920: 65 73 2e 0a 49 66 20 6e 6f 20 61 72 67 75 6d 65  es..If no argume
1930: 6e 74 73 20 61 72 65 20 67 69 76 65 6e 2c 20 61  nts are given, a
1940: 6c 6c 20 69 6e 64 69 63 65 73 20 69 6e 20 61 6c  ll indices in al
1950: 6c 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  l attached datab
1960: 61 73 65 73 20 61 72 65 0a 61 6e 61 6c 79 7a 65  ases are.analyze
1970: 64 2e 20 20 49 66 20 61 20 64 61 74 61 62 61 73  d.  If a databas
1980: 65 20 6e 61 6d 65 20 69 73 20 67 69 76 65 6e 20  e name is given 
1990: 61 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74 2c  as the argument,
19a0: 20 61 6c 6c 20 69 6e 64 69 63 65 73 0a 69 6e 20   all indices.in 
19b0: 74 68 61 74 20 6f 6e 65 20 64 61 74 61 62 61 73  that one databas
19c0: 65 20 61 72 65 20 61 6e 61 6c 79 7a 65 64 2e 20  e are analyzed. 
19d0: 20 49 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74   If the argument
19e0: 20 69 73 20 61 20 74 61 62 6c 65 20 6e 61 6d 65   is a table name
19f0: 2c 0a 74 68 65 6e 20 6f 6e 6c 79 20 69 6e 64 69  ,.then only indi
1a00: 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ces associated w
1a10: 69 74 68 20 74 68 61 74 20 6f 6e 65 20 74 61 62  ith that one tab
1a20: 6c 65 20 61 72 65 20 61 6e 61 6c 79 7a 65 64 2e  le are analyzed.
1a30: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 69 6e 69  </p>..<p>The ini
1a40: 74 69 61 6c 20 69 6d 70 6c 65 6d 65 6e 74 61 74  tial implementat
1a50: 69 6f 6e 20 73 74 6f 72 65 73 20 61 6c 6c 20 73  ion stores all s
1a60: 74 61 74 69 73 74 69 63 73 20 69 6e 20 61 20 73  tatistics in a s
1a70: 69 6e 67 6c 65 0a 74 61 62 6c 65 20 6e 61 6d 65  ingle.table name
1a80: 64 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74  d <b>sqlite_stat
1a90: 31 3c 2f 62 3e 2e 20 20 46 75 74 75 72 65 20 65  1</b>.  Future e
1aa0: 6e 68 61 6e 63 65 6d 65 6e 74 73 20 6d 61 79 20  nhancements may 
1ab0: 63 72 65 61 74 65 0a 61 64 64 69 74 69 6f 6e 61  create.additiona
1ac0: 6c 20 74 61 62 6c 65 73 20 77 69 74 68 20 74 68  l tables with th
1ad0: 65 20 73 61 6d 65 20 6e 61 6d 65 20 70 61 74 74  e same name patt
1ae0: 65 72 6e 20 65 78 63 65 70 74 20 77 69 74 68 20  ern except with 
1af0: 74 68 65 20 22 31 22 0a 63 68 61 6e 67 65 64 20  the "1".changed 
1b00: 74 6f 20 61 20 64 69 66 66 65 72 65 6e 74 20 64  to a different d
1b10: 69 67 69 74 2e 20 20 54 68 65 20 5b 44 52 4f 50  igit.  The [DROP
1b20: 20 54 41 42 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20   TABLE] command 
1b30: 64 6f 65 73 0a 6e 6f 74 20 77 6f 72 6b 20 6f 6e  does.not work on
1b40: 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 73   the <b>sqlite_s
1b50: 74 61 74 31 3c 2f 62 3e 20 74 61 62 6c 65 2c 0a  tat1</b> table,.
1b60: 62 75 74 20 61 6c 6c 20 74 68 65 20 63 6f 6e 74  but all the cont
1b70: 65 6e 74 20 63 61 6e 20 62 65 20 72 65 6d 6f 76  ent can be remov
1b80: 65 64 20 75 73 69 6e 67 20 74 68 65 20 5b 44 45  ed using the [DE
1b90: 4c 45 54 45 5d 20 63 6f 6d 6d 61 6e 64 2c 0a 77  LETE] command,.w
1ba0: 68 69 63 68 20 68 61 73 20 74 68 65 20 73 61 6d  hich has the sam
1bb0: 65 20 65 66 66 65 63 74 2e 3c 2f 70 3e 0a 0a 3c  e effect.</p>..<
1bc0: 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
1bd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1be0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1bf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c10: 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 41 54 54  ###.Section {ATT
1c20: 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 61 74  ACH DATABASE} at
1c30: 74 61 63 68 20 41 54 54 41 43 48 0a 0a 42 75 62  tach ATTACH..Bub
1c40: 62 6c 65 44 69 61 67 72 61 6d 20 61 74 74 61 63  bleDiagram attac
1c50: 68 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a  h-stmt 1.</tcl>.
1c60: 0a 3c 70 3e 54 68 65 20 41 54 54 41 43 48 20 44  .<p>The ATTACH D
1c70: 41 54 41 42 41 53 45 20 73 74 61 74 65 6d 65 6e  ATABASE statemen
1c80: 74 20 61 64 64 73 20 61 6e 6f 74 68 65 72 20 64  t adds another d
1c90: 61 74 61 62 61 73 65 20 0a 66 69 6c 65 20 74 6f  atabase .file to
1ca0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74   the current dat
1cb0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1cc0: 2e 20 20 49 66 20 74 68 65 20 66 69 6c 65 6e 61  .  If the filena
1cd0: 6d 65 20 63 6f 6e 74 61 69 6e 73 20 0a 70 75 6e  me contains .pun
1ce0: 63 74 75 61 74 69 6f 6e 20 63 68 61 72 61 63 74  ctuation charact
1cf0: 65 72 73 20 69 74 20 6d 75 73 74 20 62 65 20 71  ers it must be q
1d00: 75 6f 74 65 64 2e 20 20 54 68 65 20 6e 61 6d 65  uoted.  The name
1d10: 73 20 27 6d 61 69 6e 27 20 61 6e 64 20 0a 27 74  s 'main' and .'t
1d20: 65 6d 70 27 20 72 65 66 65 72 20 74 6f 20 74 68  emp' refer to th
1d30: 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20  e main database 
1d40: 61 6e 64 20 74 68 65 20 64 61 74 61 62 61 73 65  and the database
1d50: 20 75 73 65 64 20 66 6f 72 20 0a 74 65 6d 70 6f   used for .tempo
1d60: 72 61 72 79 20 74 61 62 6c 65 73 2e 20 20 54 68  rary tables.  Th
1d70: 65 73 65 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  ese cannot be de
1d80: 74 61 63 68 65 64 2e 20 20 41 74 74 61 63 68 65  tached.  Attache
1d90: 64 20 64 61 74 61 62 61 73 65 73 20 0a 61 72 65  d databases .are
1da0: 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74   removed using t
1db0: 68 65 20 5b 44 45 54 41 43 48 5d 20 73 74 61 74  he [DETACH] stat
1dc0: 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59  ement.</p>..<p>Y
1dd0: 6f 75 20 63 61 6e 6e 6f 74 20 63 72 65 61 74 65  ou cannot create
1de0: 20 61 20 6e 65 77 20 74 61 62 6c 65 20 77 69 74   a new table wit
1df0: 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 20  h the same name 
1e00: 61 73 20 61 20 74 61 62 6c 65 20 69 6e 20 0a 61  as a table in .a
1e10: 6e 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  n attached datab
1e20: 61 73 65 2c 20 62 75 74 20 79 6f 75 20 63 61 6e  ase, but you can
1e30: 20 61 74 74 61 63 68 20 61 20 64 61 74 61 62 61   attach a databa
1e40: 73 65 20 77 68 69 63 68 20 63 6f 6e 74 61 69 6e  se which contain
1e50: 73 0a 74 61 62 6c 65 73 20 77 68 6f 73 65 20 6e  s.tables whose n
1e60: 61 6d 65 73 20 61 72 65 20 64 75 70 6c 69 63 61  ames are duplica
1e70: 74 65 73 20 6f 66 20 74 61 62 6c 65 73 20 69 6e  tes of tables in
1e80: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
1e90: 73 65 2e 20 20 49 74 20 69 73 20 0a 61 6c 73 6f  se.  It is .also
1ea0: 20 70 65 72 6d 69 73 73 69 62 6c 65 20 74 6f 20   permissible to 
1eb0: 61 74 74 61 63 68 20 74 68 65 20 73 61 6d 65 20  attach the same 
1ec0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 6d 75  database file mu
1ed0: 6c 74 69 70 6c 65 20 74 69 6d 65 73 2e 3c 2f 70  ltiple times.</p
1ee0: 3e 0a 0a 3c 70 3e 54 61 62 6c 65 73 20 69 6e 20  >..<p>Tables in 
1ef0: 61 6e 20 61 74 74 61 63 68 65 64 20 64 61 74 61  an attached data
1f00: 62 61 73 65 20 63 61 6e 20 62 65 20 72 65 66 65  base can be refe
1f10: 72 72 65 64 20 74 6f 20 75 73 69 6e 67 20 74 68  rred to using th
1f20: 65 20 73 79 6e 74 61 78 20 0a 3c 69 3e 64 61 74  e syntax .<i>dat
1f30: 61 62 61 73 65 2d 6e 61 6d 65 2e 74 61 62 6c 65  abase-name.table
1f40: 2d 6e 61 6d 65 3c 2f 69 3e 2e 20 20 49 66 20 61  -name</i>.  If a
1f50: 6e 20 61 74 74 61 63 68 65 64 20 74 61 62 6c 65  n attached table
1f60: 20 64 6f 65 73 6e 27 74 20 68 61 76 65 20 0a 61   doesn't have .a
1f70: 20 64 75 70 6c 69 63 61 74 65 20 74 61 62 6c 65   duplicate table
1f80: 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 6d 61 69   name in the mai
1f90: 6e 20 64 61 74 61 62 61 73 65 2c 20 69 74 20 64  n database, it d
1fa0: 6f 65 73 6e 27 74 20 72 65 71 75 69 72 65 20 61  oesn't require a
1fb0: 20 0a 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20   .database name 
1fc0: 70 72 65 66 69 78 2e 20 20 57 68 65 6e 20 61 20  prefix.  When a 
1fd0: 64 61 74 61 62 61 73 65 20 69 73 20 61 74 74 61  database is atta
1fe0: 63 68 65 64 2c 20 61 6c 6c 20 6f 66 20 69 74 73  ched, all of its
1ff0: 20 0a 74 61 62 6c 65 73 20 77 68 69 63 68 20 64   .tables which d
2000: 6f 6e 27 74 20 68 61 76 65 20 64 75 70 6c 69 63  on't have duplic
2010: 61 74 65 20 6e 61 6d 65 73 20 62 65 63 6f 6d 65  ate names become
2020: 20 74 68 65 20 64 65 66 61 75 6c 74 20 74 61 62   the default tab
2030: 6c 65 0a 6f 66 20 74 68 61 74 20 6e 61 6d 65 2e  le.of that name.
2040: 20 20 41 6e 79 20 74 61 62 6c 65 73 20 6f 66 20    Any tables of 
2050: 74 68 61 74 20 6e 61 6d 65 20 61 74 74 61 63 68  that name attach
2060: 65 64 20 61 66 74 65 72 77 61 72 64 73 20 72 65  ed afterwards re
2070: 71 75 69 72 65 20 74 68 65 0a 64 61 74 61 62 61  quire the.databa
2080: 73 65 20 70 72 65 66 69 78 2e 20 49 66 20 74 68  se prefix. If th
2090: 65 20 64 65 66 61 75 6c 74 20 74 61 62 6c 65 20  e default table 
20a0: 6f 66 20 61 20 67 69 76 65 6e 20 6e 61 6d 65 20  of a given name 
20b0: 69 73 20 64 65 74 61 63 68 65 64 2c 20 74 68 65  is detached, the
20c0: 6e 0a 74 68 65 20 6c 61 73 74 20 74 61 62 6c 65  n.the last table
20d0: 20 6f 66 20 74 68 61 74 20 6e 61 6d 65 20 61 74   of that name at
20e0: 74 61 63 68 65 64 20 62 65 63 6f 6d 65 73 20 74  tached becomes t
20f0: 68 65 20 6e 65 77 20 64 65 66 61 75 6c 74 2e 3c  he new default.<
2100: 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73 61 63  /p>..<p>.Transac
2110: 74 69 6f 6e 73 20 69 6e 76 6f 6c 76 69 6e 67 20  tions involving 
2120: 6d 75 6c 74 69 70 6c 65 20 61 74 74 61 63 68 65  multiple attache
2130: 64 20 64 61 74 61 62 61 73 65 73 20 61 72 65 20  d databases are 
2140: 61 74 6f 6d 69 63 2c 0a 61 73 73 75 6d 69 6e 67  atomic,.assuming
2150: 20 74 68 61 74 20 74 68 65 20 6d 61 69 6e 20 64   that the main d
2160: 61 74 61 62 61 73 65 20 69 73 20 6e 6f 74 20 22  atabase is not "
2170: 3a 6d 65 6d 6f 72 79 3a 22 2e 20 20 49 66 20 74  :memory:".  If t
2180: 68 65 20 6d 61 69 6e 0a 64 61 74 61 62 61 73 65  he main.database
2190: 20 69 73 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 74   is ":memory:" t
21a0: 68 65 6e 20 0a 74 72 61 6e 73 61 63 74 69 6f 6e  hen .transaction
21b0: 73 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 62 65  s continue to be
21c0: 20 61 74 6f 6d 69 63 20 77 69 74 68 69 6e 20 65   atomic within e
21d0: 61 63 68 20 69 6e 64 69 76 69 64 75 61 6c 0a 64  ach individual.d
21e0: 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20 42 75  atabase file. Bu
21f0: 74 20 69 66 20 74 68 65 20 68 6f 73 74 20 63 6f  t if the host co
2200: 6d 70 75 74 65 72 20 63 72 61 73 68 65 73 20 69  mputer crashes i
2210: 6e 20 74 68 65 20 6d 69 64 64 6c 65 0a 6f 66 20  n the middle.of 
2220: 61 20 5b 43 4f 4d 4d 49 54 5d 20 77 68 65 72 65  a [COMMIT] where
2230: 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20 64 61 74   two or more dat
2240: 61 62 61 73 65 20 66 69 6c 65 73 20 61 72 65 20  abase files are 
2250: 75 70 64 61 74 65 64 2c 0a 73 6f 6d 65 20 6f 66  updated,.some of
2260: 20 74 68 6f 73 65 20 66 69 6c 65 73 20 6d 69 67   those files mig
2270: 68 74 20 67 65 74 20 74 68 65 20 63 68 61 6e 67  ht get the chang
2280: 65 73 20 77 68 65 72 65 20 6f 74 68 65 72 73 0a  es where others.
2290: 6d 69 67 68 74 20 6e 6f 74 2e 0a 3c 2f 70 3e 0a  might not..</p>.
22a0: 0a 3c 70 3e 54 68 65 72 65 20 69 73 20 61 20 63  .<p>There is a c
22b0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6c 69 6d 69  ompile-time limi
22c0: 74 20 6f 66 20 5b 53 51 4c 49 54 45 5f 4d 41 58  t of [SQLITE_MAX
22d0: 5f 41 54 54 41 43 48 45 44 5d 0a 61 74 74 61 63  _ATTACHED].attac
22e0: 68 65 64 20 64 61 74 61 62 61 73 65 20 66 69 6c  hed database fil
22f0: 65 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  es.</p>..<tcl>.#
2300: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2310: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2320: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2330: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2340: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
2350: 65 63 74 69 6f 6e 20 7b 42 45 47 49 4e 20 54 52  ection {BEGIN TR
2360: 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73  ANSACTION} trans
2370: 61 63 74 69 6f 6e 20 7b 42 45 47 49 4e 20 43 4f  action {BEGIN CO
2380: 4d 4d 49 54 20 52 4f 4c 4c 42 41 43 4b 7d 0a 0a  MMIT ROLLBACK}..
2390: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 62 65  BubbleDiagram be
23a0: 67 69 6e 2d 73 74 6d 74 0a 42 75 62 62 6c 65 44  gin-stmt.BubbleD
23b0: 69 61 67 72 61 6d 20 63 6f 6d 6d 69 74 2d 73 74  iagram commit-st
23c0: 6d 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  mt.BubbleDiagram
23d0: 20 72 6f 6c 6c 62 61 63 6b 2d 73 74 6d 74 0a 3c   rollback-stmt.<
23e0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a 4e 6f 20 63 68  /tcl>..<p>.No ch
23f0: 61 6e 67 65 73 20 63 61 6e 20 62 65 20 6d 61 64  anges can be mad
2400: 65 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73  e to the databas
2410: 65 20 65 78 63 65 70 74 20 77 69 74 68 69 6e 20  e except within 
2420: 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 41  a transaction..A
2430: 6e 79 20 63 6f 6d 6d 61 6e 64 20 74 68 61 74 20  ny command that 
2440: 63 68 61 6e 67 65 73 20 74 68 65 20 64 61 74 61  changes the data
2450: 62 61 73 65 20 28 62 61 73 69 63 61 6c 6c 79 2c  base (basically,
2460: 20 61 6e 79 20 53 51 4c 20 63 6f 6d 6d 61 6e 64   any SQL command
2470: 0a 6f 74 68 65 72 20 74 68 61 6e 20 5b 53 45 4c  .other than [SEL
2480: 45 43 54 5d 29 20 77 69 6c 6c 20 61 75 74 6f 6d  ECT]) will autom
2490: 61 74 69 63 61 6c 6c 79 20 73 74 61 72 74 20 61  atically start a
24a0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 66 0a   transaction if.
24b0: 6f 6e 65 20 69 73 20 6e 6f 74 20 61 6c 72 65 61  one is not alrea
24c0: 64 79 20 69 6e 20 65 66 66 65 63 74 2e 20 20 41  dy in effect.  A
24d0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 74 61  utomatically sta
24e0: 72 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  rted transaction
24f0: 73 0a 61 72 65 20 63 6f 6d 6d 69 74 74 65 64 20  s.are committed 
2500: 77 68 65 6e 20 74 68 65 20 6c 61 73 74 20 71 75  when the last qu
2510: 65 72 79 20 66 69 6e 69 73 68 65 73 2e 0a 3c 2f  ery finishes..</
2520: 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73 61 63 74  p>..<p>.Transact
2530: 69 6f 6e 73 20 63 61 6e 20 62 65 20 73 74 61 72  ions can be star
2540: 74 65 64 20 6d 61 6e 75 61 6c 6c 79 20 75 73 69  ted manually usi
2550: 6e 67 20 74 68 65 20 42 45 47 49 4e 0a 63 6f 6d  ng the BEGIN.com
2560: 6d 61 6e 64 2e 20 20 53 75 63 68 20 74 72 61 6e  mand.  Such tran
2570: 73 61 63 74 69 6f 6e 73 20 75 73 75 61 6c 6c 79  sactions usually
2580: 20 70 65 72 73 69 73 74 20 75 6e 74 69 6c 20 74   persist until t
2590: 68 65 20 6e 65 78 74 0a 43 4f 4d 4d 49 54 20 6f  he next.COMMIT o
25a0: 72 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61  r ROLLBACK comma
25b0: 6e 64 2e 20 20 42 75 74 20 61 20 74 72 61 6e 73  nd.  But a trans
25c0: 61 63 74 69 6f 6e 20 77 69 6c 6c 20 61 6c 73 6f  action will also
25d0: 20 0a 52 4f 4c 4c 42 41 43 4b 20 69 66 20 74 68   .ROLLBACK if th
25e0: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 63 6c  e database is cl
25f0: 6f 73 65 64 20 6f 72 20 69 66 20 61 6e 20 65 72  osed or if an er
2600: 72 6f 72 20 6f 63 63 75 72 73 0a 61 6e 64 20 74  ror occurs.and t
2610: 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6e 66  he ROLLBACK conf
2620: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
2630: 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 73 70 65  algorithm is spe
2640: 63 69 66 69 65 64 2e 0a 53 65 65 20 74 68 65 20  cified..See the 
2650: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e  documentation on
2660: 20 74 68 65 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43   the [ON CONFLIC
2670: 54 5d 0a 63 6c 61 75 73 65 20 66 6f 72 20 61 64  T].clause for ad
2680: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
2690: 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 52  tion about the R
26a0: 4f 4c 4c 42 41 43 4b 0a 63 6f 6e 66 6c 69 63 74  OLLBACK.conflict
26b0: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f   resolution algo
26c0: 72 69 74 68 6d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  rithm..</p>..<p>
26d0: 0a 45 4e 44 20 54 52 41 4e 53 41 43 54 49 4f 4e  .END TRANSACTION
26e0: 20 69 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72   is an alias for
26f0: 20 43 4f 4d 4d 49 54 2e 0a 3c 2f 70 3e 0a 0a 3c   COMMIT..</p>..<
2700: 70 3e 54 72 61 6e 73 61 63 74 69 6f 6e 73 20 63  p>Transactions c
2710: 72 65 61 74 65 64 20 75 73 69 6e 67 20 42 45 47  reated using BEG
2720: 49 4e 2e 2e 2e 43 4f 4d 4d 49 54 20 64 6f 20 6e  IN...COMMIT do n
2730: 6f 74 20 6e 65 73 74 2e 0a 46 6f 72 20 6e 65 73  ot nest..For nes
2740: 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  ted transactions
2750: 2c 20 75 73 65 20 74 68 65 20 5b 53 41 56 45 50  , use the [SAVEP
2760: 4f 49 4e 54 5d 20 61 6e 64 20 5b 52 45 4c 45 41  OINT] and [RELEA
2770: 53 45 5d 20 63 6f 6d 6d 61 6e 64 73 2e 0a 54 68  SE] commands..Th
2780: 65 20 22 54 4f 20 53 41 56 45 50 4f 49 4e 54 20  e "TO SAVEPOINT 
2790: 3c 69 3e 6e 61 6d 65 3c 2f 69 3e 22 20 63 6c 61  <i>name</i>" cla
27a0: 75 73 65 20 6f 66 20 74 68 65 20 52 4f 4c 4c 42  use of the ROLLB
27b0: 41 43 4b 20 63 6f 6d 6d 61 6e 64 20 73 68 6f 77  ACK command show
27c0: 6e 0a 69 6e 20 74 68 65 20 73 79 6e 74 61 78 20  n.in the syntax 
27d0: 64 69 61 67 72 61 6d 20 61 62 6f 76 65 20 69 73  diagram above is
27e0: 20 6f 6e 6c 79 20 61 70 70 6c 69 63 61 62 6c 65   only applicable
27f0: 20 74 6f 20 5b 53 41 56 45 50 4f 49 4e 54 5d 0a   to [SAVEPOINT].
2800: 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20 41  transactions.  A
2810: 6e 20 61 74 74 65 6d 70 74 20 74 6f 20 69 6e 76  n attempt to inv
2820: 6f 6b 65 20 74 68 65 20 42 45 47 49 4e 20 63 6f  oke the BEGIN co
2830: 6d 6d 61 6e 64 20 77 69 74 68 69 6e 0a 61 20 74  mmand within.a t
2840: 72 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c 20  ransaction will 
2850: 66 61 69 6c 20 77 69 74 68 20 61 6e 20 65 72 72  fail with an err
2860: 6f 72 2c 20 72 65 67 61 72 64 6c 65 73 73 20 6f  or, regardless o
2870: 66 20 77 68 65 74 68 65 72 0a 74 68 65 20 74 72  f whether.the tr
2880: 61 6e 73 61 63 74 69 6f 6e 20 77 61 73 20 73 74  ansaction was st
2890: 61 72 74 65 64 20 62 79 20 5b 53 41 56 45 50 4f  arted by [SAVEPO
28a0: 49 4e 54 5d 20 6f 72 20 61 20 70 72 69 6f 72 20  INT] or a prior 
28b0: 42 45 47 49 4e 2e 0a 54 68 65 20 43 4f 4d 4d 49  BEGIN..The COMMI
28c0: 54 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 68  T command and th
28d0: 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61  e ROLLBACK comma
28e0: 6e 64 20 77 69 74 68 6f 75 74 20 74 68 65 20 54  nd without the T
28f0: 4f 20 63 6c 61 75 73 65 0a 77 6f 72 6b 20 74 68  O clause.work th
2900: 65 20 73 61 6d 65 20 6f 6e 20 5b 53 41 56 45 50  e same on [SAVEP
2910: 4f 49 4e 54 5d 20 74 72 61 6e 73 61 63 74 69 6f  OINT] transactio
2920: 6e 73 20 61 73 20 74 68 65 79 20 64 6f 20 77 69  ns as they do wi
2930: 74 68 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 0a  th transactions.
2940: 73 74 61 72 74 65 64 20 62 79 20 42 45 47 49 4e  started by BEGIN
2950: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73  .</p>..<p>.Trans
2960: 61 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 64  actions can be d
2970: 65 66 65 72 72 65 64 2c 20 69 6d 6d 65 64 69 61  eferred, immedia
2980: 74 65 2c 20 6f 72 20 65 78 63 6c 75 73 69 76 65  te, or exclusive
2990: 2e 20 20 0a 54 68 65 20 64 65 66 61 75 6c 74 20  .  .The default 
29a0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 62 65 68 61  transaction beha
29b0: 76 69 6f 72 20 69 73 20 64 65 66 65 72 72 65 64  vior is deferred
29c0: 2e 0a 44 65 66 65 72 72 65 64 20 6d 65 61 6e 73  ..Deferred means
29d0: 20 74 68 61 74 20 6e 6f 20 6c 6f 63 6b 73 20 61   that no locks a
29e0: 72 65 20 61 63 71 75 69 72 65 64 0a 6f 6e 20 74  re acquired.on t
29f0: 68 65 20 64 61 74 61 62 61 73 65 20 75 6e 74 69  he database unti
2a00: 6c 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  l the database i
2a10: 73 20 66 69 72 73 74 20 61 63 63 65 73 73 65 64  s first accessed
2a20: 2e 20 20 54 68 75 73 20 77 69 74 68 20 61 0a 64  .  Thus with a.d
2a30: 65 66 65 72 72 65 64 20 74 72 61 6e 73 61 63 74  eferred transact
2a40: 69 6f 6e 2c 20 74 68 65 20 42 45 47 49 4e 20 73  ion, the BEGIN s
2a50: 74 61 74 65 6d 65 6e 74 20 69 74 73 65 6c 66 20  tatement itself 
2a60: 64 6f 65 73 20 6e 6f 74 68 69 6e 67 2e 20 20 4c  does nothing.  L
2a70: 6f 63 6b 73 0a 61 72 65 20 6e 6f 74 20 61 63 71  ocks.are not acq
2a80: 75 69 72 65 64 20 75 6e 74 69 6c 20 74 68 65 20  uired until the 
2a90: 66 69 72 73 74 20 72 65 61 64 20 6f 72 20 77 72  first read or wr
2aa0: 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 2e 20 20  ite operation.  
2ab0: 54 68 65 20 66 69 72 73 74 20 72 65 61 64 0a 6f  The first read.o
2ac0: 70 65 72 61 74 69 6f 6e 20 61 67 61 69 6e 73 74  peration against
2ad0: 20 61 20 64 61 74 61 62 61 73 65 20 63 72 65 61   a database crea
2ae0: 74 65 73 20 61 20 5b 53 48 41 52 45 44 5d 20 6c  tes a [SHARED] l
2af0: 6f 63 6b 20 61 6e 64 20 74 68 65 20 66 69 72 73  ock and the firs
2b00: 74 0a 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f  t.write operatio
2b10: 6e 20 63 72 65 61 74 65 73 20 61 20 5b 52 45 53  n creates a [RES
2b20: 45 52 56 45 44 5d 20 6c 6f 63 6b 2e 20 20 20 42  ERVED] lock.   B
2b30: 65 63 61 75 73 65 20 74 68 65 20 61 63 71 75 69  ecause the acqui
2b40: 73 69 74 69 6f 6e 20 6f 66 0a 6c 6f 63 6b 73 20  sition of.locks 
2b50: 69 73 20 64 65 66 65 72 72 65 64 20 75 6e 74 69  is deferred unti
2b60: 6c 20 74 68 65 79 20 61 72 65 20 6e 65 65 64 65  l they are neede
2b70: 64 2c 20 69 74 20 69 73 20 70 6f 73 73 69 62 6c  d, it is possibl
2b80: 65 20 74 68 61 74 20 61 6e 6f 74 68 65 72 0a 74  e that another.t
2b90: 68 72 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73  hread or process
2ba0: 20 63 6f 75 6c 64 20 63 72 65 61 74 65 20 61 20   could create a 
2bb0: 73 65 70 61 72 61 74 65 20 74 72 61 6e 73 61 63  separate transac
2bc0: 74 69 6f 6e 20 61 6e 64 20 77 72 69 74 65 20 74  tion and write t
2bd0: 6f 0a 74 68 65 20 64 61 74 61 62 61 73 65 20 61  o.the database a
2be0: 66 74 65 72 20 74 68 65 20 42 45 47 49 4e 20 6f  fter the BEGIN o
2bf0: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 68  n the current th
2c00: 72 65 61 64 20 68 61 73 20 65 78 65 63 75 74 65  read has execute
2c10: 64 2e 0a 49 66 20 74 68 65 20 74 72 61 6e 73 61  d..If the transa
2c20: 63 74 69 6f 6e 20 69 73 20 69 6d 6d 65 64 69 61  ction is immedia
2c30: 74 65 2c 20 74 68 65 6e 20 5b 52 45 53 45 52 56  te, then [RESERV
2c40: 45 44 5d 20 6c 6f 63 6b 73 0a 61 72 65 20 61 63  ED] locks.are ac
2c50: 71 75 69 72 65 64 20 6f 6e 20 61 6c 6c 20 64 61  quired on all da
2c60: 74 61 62 61 73 65 73 20 61 73 20 73 6f 6f 6e 20  tabases as soon 
2c70: 61 73 20 74 68 65 20 42 45 47 49 4e 20 63 6f 6d  as the BEGIN com
2c80: 6d 61 6e 64 20 69 73 0a 65 78 65 63 75 74 65 64  mand is.executed
2c90: 2c 20 77 69 74 68 6f 75 74 20 77 61 69 74 69 6e  , without waitin
2ca0: 67 20 66 6f 72 20 74 68 65 0a 64 61 74 61 62 61  g for the.databa
2cb0: 73 65 20 74 6f 20 62 65 20 75 73 65 64 2e 20 20  se to be used.  
2cc0: 41 66 74 65 72 20 61 20 42 45 47 49 4e 20 49 4d  After a BEGIN IM
2cd0: 4d 45 44 49 41 54 45 2c 20 79 6f 75 20 61 72 65  MEDIATE, you are
2ce0: 20 67 75 61 72 61 6e 74 65 65 64 20 74 68 61 74   guaranteed that
2cf0: 0a 6e 6f 20 6f 74 68 65 72 20 74 68 72 65 61 64  .no other thread
2d00: 20 6f 72 20 70 72 6f 63 65 73 73 20 77 69 6c 6c   or process will
2d10: 20 62 65 20 61 62 6c 65 20 74 6f 20 77 72 69 74   be able to writ
2d20: 65 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73  e to the databas
2d30: 65 20 6f 72 0a 64 6f 20 61 20 42 45 47 49 4e 20  e or.do a BEGIN 
2d40: 49 4d 4d 45 44 49 41 54 45 20 6f 72 20 42 45 47  IMMEDIATE or BEG
2d50: 49 4e 20 45 58 43 4c 55 53 49 56 45 2e 20 20 4f  IN EXCLUSIVE.  O
2d60: 74 68 65 72 20 70 72 6f 63 65 73 73 65 73 20 63  ther processes c
2d70: 61 6e 20 63 6f 6e 74 69 6e 75 65 0a 74 6f 20 72  an continue.to r
2d80: 65 61 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74  ead from the dat
2d90: 61 62 61 73 65 2c 20 68 6f 77 65 76 65 72 2e 20  abase, however. 
2da0: 20 41 6e 20 65 78 63 6c 75 73 69 76 65 20 74 72   An exclusive tr
2db0: 61 6e 73 61 63 74 69 6f 6e 20 63 61 75 73 65 73  ansaction causes
2dc0: 0a 5b 45 58 43 4c 55 53 49 56 45 5d 20 6c 6f 63  .[EXCLUSIVE] loc
2dd0: 6b 73 20 74 6f 20 62 65 20 61 63 71 75 69 72 65  ks to be acquire
2de0: 64 20 6f 6e 20 61 6c 6c 20 64 61 74 61 62 61 73  d on all databas
2df0: 65 73 2e 20 20 41 66 74 65 72 20 61 20 42 45 47  es.  After a BEG
2e00: 49 4e 0a 45 58 43 4c 55 53 49 56 45 2c 20 79 6f  IN.EXCLUSIVE, yo
2e10: 75 20 61 72 65 20 67 75 61 72 61 6e 74 65 65 64  u are guaranteed
2e20: 20 74 68 61 74 20 6e 6f 20 6f 74 68 65 72 20 74   that no other t
2e30: 68 72 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73  hread or process
2e40: 20 77 69 6c 6c 0a 62 65 20 61 62 6c 65 20 74 6f   will.be able to
2e50: 20 72 65 61 64 20 6f 72 20 77 72 69 74 65 20 74   read or write t
2e60: 68 65 20 64 61 74 61 62 61 73 65 20 75 6e 74 69  he database unti
2e70: 6c 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  l the transactio
2e80: 6e 20 69 73 0a 63 6f 6d 70 6c 65 74 65 2e 0a 3c  n is.complete..<
2e90: 2f 70 3e 0a 0a 3c 70 3e 0a 41 6e 20 69 6d 70 6c  /p>..<p>.An impl
2ea0: 69 63 69 74 20 74 72 61 6e 73 61 63 74 69 6f 6e  icit transaction
2eb0: 20 28 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20   (a transaction 
2ec0: 74 68 61 74 20 69 73 20 73 74 61 72 74 65 64 20  that is started 
2ed0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2c 0a 6e  automatically,.n
2ee0: 6f 74 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  ot a transaction
2ef0: 20 73 74 61 72 74 65 64 20 62 79 20 42 45 47 49   started by BEGI
2f00: 4e 29 20 69 73 20 63 6f 6d 6d 69 74 74 65 64 20  N) is committed 
2f10: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 77 68  automatically wh
2f20: 65 6e 0a 74 68 65 20 6c 61 73 74 20 61 63 74 69  en.the last acti
2f30: 76 65 20 73 74 61 74 65 6d 65 6e 74 20 66 69 6e  ve statement fin
2f40: 69 73 68 65 73 2e 20 20 41 20 73 74 61 74 65 6d  ishes.  A statem
2f50: 65 6e 74 20 66 69 6e 69 73 68 65 73 20 77 68 65  ent finishes whe
2f60: 6e 20 69 74 73 0a 70 72 65 70 61 72 65 64 20 73  n its.prepared s
2f70: 74 61 74 65 6d 65 6e 74 20 69 73 20 5b 73 71 6c  tatement is [sql
2f80: 69 74 65 33 5f 72 65 73 65 74 28 29 20 7c 20 72  ite3_reset() | r
2f90: 65 73 65 74 5d 20 6f 72 0a 5b 73 71 6c 69 74 65  eset] or.[sqlite
2fa0: 33 5f 66 69 6e 61 6c 69 7a 65 28 29 20 7c 20 66  3_finalize() | f
2fb0: 69 6e 61 6c 69 7a 65 64 5d 2e 20 20 41 6e 20 6f  inalized].  An o
2fc0: 70 65 6e 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f  pen [sqlite3_blo
2fd0: 62 5d 20 75 73 65 64 20 66 6f 72 0a 69 6e 63 72  b] used for.incr
2fe0: 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49 2f 4f  emental BLOB I/O
2ff0: 20 63 6f 75 6e 74 73 20 61 73 20 61 6e 20 75 6e   counts as an un
3000: 66 69 6e 69 73 68 65 64 20 73 74 61 74 65 6d 65  finished stateme
3010: 6e 74 2e 20 20 54 68 65 20 5b 73 71 6c 69 74 65  nt.  The [sqlite
3020: 33 5f 62 6c 6f 62 5d 0a 66 69 6e 69 73 68 65 73  3_blob].finishes
3030: 20 77 68 65 6e 20 69 74 20 69 73 20 5b 73 71 6c   when it is [sql
3040: 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28  ite3_blob_close(
3050: 29 20 7c 20 63 6c 6f 73 65 64 5d 2e 0a 3c 2f 70  ) | closed]..</p
3060: 3e 0a 0a 3c 70 3e 0a 54 68 65 20 65 78 70 6c 69  >..<p>.The expli
3070: 63 69 74 20 43 4f 4d 4d 49 54 20 63 6f 6d 6d 61  cit COMMIT comma
3080: 6e 64 20 72 75 6e 73 20 69 6d 6d 65 64 69 61 74  nd runs immediat
3090: 65 6c 79 2c 20 65 76 65 6e 20 69 66 20 74 68 65  ely, even if the
30a0: 72 65 20 61 72 65 0a 70 65 6e 64 69 6e 67 20 5b  re are.pending [
30b0: 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e  SELECT] statemen
30c0: 74 73 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 66  ts.  However, if
30d0: 20 74 68 65 72 65 20 61 72 65 20 70 65 6e 64 69   there are pendi
30e0: 6e 67 0a 77 72 69 74 65 20 6f 70 65 72 61 74 69  ng.write operati
30f0: 6f 6e 73 2c 20 74 68 65 20 43 4f 4d 4d 49 54 20  ons, the COMMIT 
3100: 63 6f 6d 6d 61 6e 64 0a 77 69 6c 6c 20 66 61 69  command.will fai
3110: 6c 20 77 69 74 68 20 61 20 65 72 72 6f 72 20 63  l with a error c
3120: 6f 64 65 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  ode [SQLITE_BUSY
3130: 5d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41 6e 20  ]..</p>..<p>.An 
3140: 61 74 74 65 6d 70 74 20 74 6f 20 65 78 65 63 75  attempt to execu
3150: 74 65 20 43 4f 4d 4d 49 54 20 6d 69 67 68 74 20  te COMMIT might 
3160: 61 6c 73 6f 20 72 65 73 75 6c 74 20 69 6e 20 61  also result in a
3170: 6e 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20  n [SQLITE_BUSY] 
3180: 72 65 74 75 72 6e 20 63 6f 64 65 0a 69 66 20 61  return code.if a
3190: 6e 20 61 6e 6f 74 68 65 72 20 74 68 72 65 61 64  n another thread
31a0: 20 6f 72 20 70 72 6f 63 65 73 73 20 68 61 73 20   or process has 
31b0: 61 20 5b 73 68 61 72 65 64 20 6c 6f 63 6b 5d 20  a [shared lock] 
31c0: 6f 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 0a  on the database.
31d0: 74 68 61 74 20 70 72 65 76 65 6e 74 65 64 20 74  that prevented t
31e0: 68 65 20 64 61 74 61 62 61 73 65 20 66 72 6f 6d  he database from
31f0: 20 62 65 69 6e 67 20 75 70 64 61 74 65 64 2e 20   being updated. 
3200: 20 57 68 65 6e 20 43 4f 4d 4d 49 54 20 66 61 69   When COMMIT fai
3210: 6c 73 20 69 6e 20 74 68 69 73 0a 77 61 79 2c 20  ls in this.way, 
3220: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
3230: 72 65 6d 61 69 6e 73 20 61 63 74 69 76 65 20 61  remains active a
3240: 6e 64 20 74 68 65 20 43 4f 4d 4d 49 54 20 63 61  nd the COMMIT ca
3250: 6e 20 62 65 20 72 65 74 72 69 65 64 20 6c 61 74  n be retried lat
3260: 65 72 0a 61 66 74 65 72 20 74 68 65 20 72 65 61  er.after the rea
3270: 64 65 72 20 68 61 73 20 68 61 64 20 61 20 63 68  der has had a ch
3280: 61 6e 63 65 20 74 6f 20 63 6c 65 61 72 2e 0a 3c  ance to clear..<
3290: 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 52 4f 4c  /p>..<p>.The ROL
32a0: 4c 42 41 43 4b 20 77 69 6c 6c 20 66 61 69 6c 20  LBACK will fail 
32b0: 77 69 74 68 20 61 6e 20 65 72 72 6f 72 20 63 6f  with an error co
32c0: 64 65 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d  de [SQLITE_BUSY]
32d0: 20 69 66 20 74 68 65 72 65 0a 61 72 65 20 61 6e   if there.are an
32e0: 79 20 70 65 6e 64 69 6e 67 20 71 75 65 72 69 65  y pending querie
32f0: 73 2e 20 20 42 6f 74 68 20 72 65 61 64 2d 6f 6e  s.  Both read-on
3300: 6c 79 20 61 6e 64 20 72 65 61 64 2f 77 72 69 74  ly and read/writ
3310: 65 20 71 75 65 72 69 65 73 20 77 69 6c 6c 0a 63  e queries will.c
3320: 61 75 73 65 20 61 20 52 4f 4c 4c 42 41 43 4b 20  ause a ROLLBACK 
3330: 74 6f 20 66 61 69 6c 2e 20 20 41 20 52 4f 4c 4c  to fail.  A ROLL
3340: 42 41 43 4b 20 6d 75 73 74 20 66 61 69 6c 20 69  BACK must fail i
3350: 66 20 74 68 65 72 65 20 61 72 65 20 70 65 6e 64  f there are pend
3360: 69 6e 67 0a 72 65 61 64 20 6f 70 65 72 61 74 69  ing.read operati
3370: 6f 6e 73 20 28 75 6e 6c 69 6b 65 20 43 4f 4d 4d  ons (unlike COMM
3380: 49 54 20 77 68 69 63 68 20 63 61 6e 20 73 75 63  IT which can suc
3390: 63 65 65 64 29 20 62 65 63 61 75 73 65 20 62 61  ceed) because ba
33a0: 64 20 74 68 69 6e 67 73 0a 77 69 6c 6c 20 68 61  d things.will ha
33b0: 70 70 65 6e 20 69 66 20 6d 65 6d 6f 72 79 20 69  ppen if memory i
33c0: 6d 61 67 65 20 6f 66 20 74 68 65 20 64 61 74 61  mage of the data
33d0: 62 61 73 65 20 69 73 20 63 68 61 6e 67 65 64 20  base is changed 
33e0: 6f 75 74 20 66 72 6f 6d 20 75 6e 64 65 72 0a 61  out from under.a
33f0: 6e 20 61 63 74 69 76 65 20 71 75 65 72 79 2e 0a  n active query..
3400: 3c 2f 70 3e 0a 0a 3c 68 33 3e 52 65 73 70 6f 6e  </p>..<h3>Respon
3410: 73 65 20 54 6f 20 45 72 72 6f 72 73 20 57 69 74  se To Errors Wit
3420: 68 69 6e 20 41 20 54 72 61 6e 73 61 63 74 69 6f  hin A Transactio
3430: 6e 3c 2f 68 33 3e 0a 0a 3c 70 3e 49 66 20 63 65  n</h3>..<p>If ce
3440: 72 74 61 69 6e 20 6b 69 6e 64 73 20 6f 66 20 65  rtain kinds of e
3450: 72 72 6f 72 73 20 6f 63 63 75 72 20 77 69 74 68  rrors occur with
3460: 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  in a transaction
3470: 2c 20 74 68 65 0a 74 72 61 6e 73 61 63 74 69 6f  , the.transactio
3480: 6e 20 6d 61 79 20 6f 72 20 6d 61 79 20 6e 6f 74  n may or may not
3490: 20 62 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 20   be rolled back 
34a0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20 20  automatically.  
34b0: 54 68 65 0a 65 72 72 6f 72 73 20 74 68 61 74 20  The.errors that 
34c0: 63 61 75 73 65 20 74 68 65 20 62 65 68 61 76 69  cause the behavi
34d0: 6f 72 20 69 6e 63 6c 75 64 65 3a 3c 2f 70 3e 0a  or include:</p>.
34e0: 0a 3c 75 6c 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49  .<ul>.<li> [SQLI
34f0: 54 45 5f 46 55 4c 4c 5d 3a 20 64 61 74 61 62 61  TE_FULL]: databa
3500: 73 65 20 6f 72 20 64 69 73 6b 20 66 75 6c 6c 0a  se or disk full.
3510: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 45  <li> [SQLITE_IOE
3520: 52 52 5d 3a 20 64 69 73 6b 20 49 2f 4f 20 65 72  RR]: disk I/O er
3530: 72 6f 72 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  ror.<li> [SQLITE
3540: 5f 42 55 53 59 5d 3a 20 64 61 74 61 62 61 73 65  _BUSY]: database
3550: 20 69 6e 20 75 73 65 20 62 79 20 61 6e 6f 74 68   in use by anoth
3560: 65 72 20 70 72 6f 63 65 73 73 0a 3c 6c 69 3e 20  er process.<li> 
3570: 5b 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 5d 3a 20  [SQLITE_NOMEM]: 
3580: 6f 75 74 20 6f 72 20 6d 65 6d 6f 72 79 0a 3c 6c  out or memory.<l
3590: 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4e 54 45 52  i> [SQLITE_INTER
35a0: 52 55 50 54 5d 3a 20 70 72 6f 63 65 73 73 69 6e  RUPT]: processin
35b0: 67 20 5b 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  g [sqlite3_inter
35c0: 72 75 70 74 7c 69 6e 74 65 72 72 75 70 74 65 64  rupt|interrupted
35d0: 5d 0a 20 20 20 20 20 62 79 20 61 70 70 6c 69 63  ].     by applic
35e0: 61 74 69 6f 6e 20 72 65 71 75 65 73 74 0a 3c 2f  ation request.</
35f0: 75 6c 3e 0a 0a 3c 70 3e 0a 46 6f 72 20 61 6c 6c  ul>..<p>.For all
3600: 20 6f 66 20 74 68 65 73 65 20 65 72 72 6f 72 73   of these errors
3610: 2c 20 53 51 4c 69 74 65 20 61 74 74 65 6d 70 74  , SQLite attempt
3620: 73 20 74 6f 20 75 6e 64 6f 20 6a 75 73 74 20 74  s to undo just t
3630: 68 65 20 6f 6e 65 20 73 74 61 74 65 6d 65 6e 74  he one statement
3640: 0a 69 74 20 77 61 73 20 77 6f 72 6b 69 6e 67 20  .it was working 
3650: 6f 6e 20 61 6e 64 20 6c 65 61 76 65 20 63 68 61  on and leave cha
3660: 6e 67 65 73 20 66 72 6f 6d 20 70 72 69 6f 72 20  nges from prior 
3670: 73 74 61 74 65 6d 65 6e 74 73 20 77 69 74 68 69  statements withi
3680: 6e 20 74 68 65 0a 73 61 6d 65 20 74 72 61 6e 73  n the.same trans
3690: 61 63 74 69 6f 6e 20 69 6e 74 61 63 74 20 61 6e  action intact an
36a0: 64 20 63 6f 6e 74 69 6e 75 65 20 77 69 74 68 20  d continue with 
36b0: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e  the transaction.
36c0: 20 20 48 6f 77 65 76 65 72 2c 20 0a 64 65 70 65    However, .depe
36d0: 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 73 74 61  nding on the sta
36e0: 74 65 6d 65 6e 74 20 62 65 69 6e 67 20 65 76 61  tement being eva
36f0: 6c 75 61 74 65 64 20 61 6e 64 20 74 68 65 20 70  luated and the p
3700: 6f 69 6e 74 20 61 74 20 77 68 69 63 68 20 74 68  oint at which th
3710: 65 0a 65 72 72 6f 72 20 6f 63 63 75 72 73 2c 20  e.error occurs, 
3720: 69 74 20 6d 69 67 68 74 20 62 65 20 6e 65 63 65  it might be nece
3730: 73 73 61 72 79 20 66 6f 72 20 53 51 4c 69 74 65  ssary for SQLite
3740: 20 74 6f 20 72 6f 6c 6c 62 61 63 6b 20 61 6e 64   to rollback and
3750: 0a 63 61 6e 63 65 6c 20 74 68 65 20 65 6e 74 69  .cancel the enti
3760: 72 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20  re transaction. 
3770: 20 41 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20   An application 
3780: 63 61 6e 20 74 65 6c 6c 20 77 68 69 63 68 0a 63  can tell which.c
3790: 6f 75 72 73 65 20 6f 66 20 61 63 74 69 6f 6e 20  ourse of action 
37a0: 53 51 4c 69 74 65 20 74 6f 6f 6b 20 62 79 20 75  SQLite took by u
37b0: 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74 65  sing the.[sqlite
37c0: 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74  3_get_autocommit
37d0: 28 29 5d 20 43 2d 6c 61 6e 67 75 61 67 65 20 69  ()] C-language i
37e0: 6e 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 3c  nterface.</p>..<
37f0: 70 3e 49 74 20 69 73 20 72 65 63 6f 6d 6d 65 6e  p>It is recommen
3800: 64 65 64 20 74 68 61 74 20 61 70 70 6c 69 63 61  ded that applica
3810: 74 69 6f 6e 73 20 72 65 73 70 6f 6e 64 20 74 6f  tions respond to
3820: 20 74 68 65 20 65 72 72 6f 72 73 0a 6c 69 73 74   the errors.list
3830: 65 64 20 61 62 6f 76 65 20 62 79 20 65 78 70 6c  ed above by expl
3840: 69 63 69 74 6c 79 20 69 73 73 75 69 6e 67 20 61  icitly issuing a
3850: 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e   ROLLBACK comman
3860: 64 2e 20 20 49 66 20 74 68 65 20 0a 74 72 61 6e  d.  If the .tran
3870: 73 61 63 74 69 6f 6e 20 68 61 73 20 61 6c 72 65  saction has alre
3880: 61 64 79 20 62 65 65 6e 20 72 6f 6c 6c 65 64 20  ady been rolled 
3890: 62 61 63 6b 20 61 75 74 6f 6d 61 74 69 63 61 6c  back automatical
38a0: 6c 79 0a 62 79 20 74 68 65 20 65 72 72 6f 72 20  ly.by the error 
38b0: 72 65 73 70 6f 6e 73 65 2c 20 74 68 65 6e 20 74  response, then t
38c0: 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d  he ROLLBACK comm
38d0: 61 6e 64 20 77 69 6c 6c 20 66 61 69 6c 20 77 69  and will fail wi
38e0: 74 68 20 61 6e 0a 65 72 72 6f 72 2c 20 62 75 74  th an.error, but
38f0: 20 6e 6f 20 68 61 72 6d 20 69 73 20 63 61 75 73   no harm is caus
3900: 65 64 20 62 79 20 74 68 69 73 2e 3c 2f 70 3e 0a  ed by this.</p>.
3910: 0a 3c 70 3e 46 75 74 75 72 65 20 76 65 72 73 69  .<p>Future versi
3920: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 61  ons of SQLite ma
3930: 79 20 65 78 74 65 6e 64 20 74 68 65 20 6c 69 73  y extend the lis
3940: 74 20 6f 66 20 65 72 72 6f 72 73 20 77 68 69 63  t of errors whic
3950: 68 0a 6d 69 67 68 74 20 63 61 75 73 65 20 61 75  h.might cause au
3960: 74 6f 6d 61 74 69 63 20 74 72 61 6e 73 61 63 74  tomatic transact
3970: 69 6f 6e 20 72 6f 6c 6c 62 61 63 6b 2e 20 20 46  ion rollback.  F
3980: 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f  uture versions o
3990: 66 0a 53 51 4c 69 74 65 20 6d 69 67 68 74 20 63  f.SQLite might c
39a0: 68 61 6e 67 65 20 74 68 65 20 65 72 72 6f 72 20  hange the error 
39b0: 72 65 73 70 6f 6e 73 65 2e 20 20 49 6e 20 70 61  response.  In pa
39c0: 72 74 69 63 75 6c 61 72 2c 20 77 65 20 6d 61 79  rticular, we may
39d0: 0a 63 68 6f 6f 73 65 20 74 6f 20 73 69 6d 70 6c  .choose to simpl
39e0: 69 66 79 20 74 68 65 20 69 6e 74 65 72 66 61 63  ify the interfac
39f0: 65 20 69 6e 20 66 75 74 75 72 65 20 76 65 72 73  e in future vers
3a00: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 62  ions of SQLite b
3a10: 79 0a 63 61 75 73 69 6e 67 20 74 68 65 20 65 72  y.causing the er
3a20: 72 6f 72 73 20 61 62 6f 76 65 20 74 6f 20 66 6f  rors above to fo
3a30: 72 63 65 20 61 6e 20 75 6e 63 6f 6e 64 69 74 69  rce an unconditi
3a40: 6f 6e 61 6c 20 72 6f 6c 6c 62 61 63 6b 2e 3c 2f  onal rollback.</
3a50: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
3a60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3a70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3a80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3a90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3aa0: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
3ab0: 6e 20 7b 53 41 56 45 50 4f 49 4e 54 7d 20 73 61  n {SAVEPOINT} sa
3ac0: 76 65 70 6f 69 6e 74 20 7b 53 41 56 45 50 4f 49  vepoint {SAVEPOI
3ad0: 4e 54 20 52 45 4c 45 41 53 45 7d 0a 0a 42 75 62  NT RELEASE}..Bub
3ae0: 62 6c 65 44 69 61 67 72 61 6d 20 73 61 76 65 70  bleDiagram savep
3af0: 6f 69 6e 74 2d 73 74 6d 74 0a 42 75 62 62 6c 65  oint-stmt.Bubble
3b00: 44 69 61 67 72 61 6d 20 72 65 6c 65 61 73 65 2d  Diagram release-
3b10: 73 74 6d 74 0a 42 75 62 62 6c 65 44 69 61 67 72  stmt.BubbleDiagr
3b20: 61 6d 20 72 6f 6c 6c 62 61 63 6b 2d 73 74 6d 74  am rollback-stmt
3b30: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 53 41 56 45  .</tcl>..<p>SAVE
3b40: 50 4f 49 4e 54 73 20 61 72 65 20 61 20 6d 65 74  POINTs are a met
3b50: 68 6f 64 20 6f 66 20 63 72 65 61 74 69 6e 67 20  hod of creating 
3b60: 74 72 61 6e 73 61 63 74 69 6f 6e 73 2c 20 73 69  transactions, si
3b70: 6d 69 6c 61 72 20 74 6f 0a 5b 42 45 47 49 4e 5d  milar to.[BEGIN]
3b80: 20 61 6e 64 20 5b 43 4f 4d 4d 49 54 5d 2c 20 65   and [COMMIT], e
3b90: 78 63 65 70 74 20 74 68 61 74 20 74 68 65 20 53  xcept that the S
3ba0: 41 56 45 50 4f 49 4e 54 20 61 6e 64 20 52 45 4c  AVEPOINT and REL
3bb0: 45 41 53 45 20 63 6f 6d 6d 61 6e 64 73 0a 61 72  EASE commands.ar
3bc0: 65 20 6e 61 6d 65 64 20 61 6e 64 20 6d 61 79 20  e named and may 
3bd0: 62 65 20 6e 65 73 74 65 64 2e 3c 2f 70 3e 0a 0a  be nested.</p>..
3be0: 3c 70 3e 54 68 65 20 53 41 56 45 50 4f 49 4e 54  <p>The SAVEPOINT
3bf0: 20 63 6f 6d 6d 61 6e 64 20 73 74 61 72 74 73 20   command starts 
3c00: 61 20 6e 65 77 20 74 72 61 6e 73 61 63 74 69 6f  a new transactio
3c10: 6e 20 77 69 74 68 20 61 20 6e 61 6d 65 2e 0a 54  n with a name..T
3c20: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 6e  he transaction n
3c30: 61 6d 65 73 20 6e 65 65 64 20 6e 6f 74 20 62 65  ames need not be
3c40: 20 75 6e 69 71 75 65 2e 0a 41 20 53 41 56 45 50   unique..A SAVEP
3c50: 4f 49 4e 54 20 63 61 6e 20 62 65 20 73 74 61 72  OINT can be star
3c60: 74 65 64 20 65 69 74 68 65 72 20 77 69 74 68 69  ted either withi
3c70: 6e 20 6f 72 20 6f 75 74 73 69 64 65 20 6f 66 0a  n or outside of.
3c80: 61 20 5b 42 45 47 49 4e 5d 2e 2e 2e 5b 43 4f 4d  a [BEGIN]...[COM
3c90: 4d 49 54 5d 2e 20 20 57 68 65 6e 20 61 20 53 41  MIT].  When a SA
3ca0: 56 45 50 4f 49 4e 54 20 69 73 20 74 68 65 20 6f  VEPOINT is the o
3cb0: 75 74 65 72 2d 6d 6f 73 74 20 73 61 76 65 70 6f  uter-most savepo
3cc0: 69 6e 74 0a 61 6e 64 20 69 74 20 69 73 20 6e 6f  int.and it is no
3cd0: 74 20 77 69 74 68 69 6e 20 61 20 5b 42 45 47 49  t within a [BEGI
3ce0: 4e 5d 2e 2e 2e 5b 43 4f 4d 4d 49 54 5d 20 74 68  N]...[COMMIT] th
3cf0: 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72 20  en the behavior 
3d00: 69 73 20 74 68 65 0a 73 61 6d 65 20 61 73 20 42  is the.same as B
3d10: 45 47 49 4e 20 44 45 46 45 52 52 45 44 20 54 52  EGIN DEFERRED TR
3d20: 41 4e 53 41 43 54 49 4f 4e 2e 3c 2f 70 3e 0a 0a  ANSACTION.</p>..
3d30: 3c 70 3e 54 68 65 20 52 4f 4c 4c 42 41 43 4b 20  <p>The ROLLBACK 
3d40: 54 4f 20 63 6f 6d 6d 61 6e 64 20 72 65 76 65 72  TO command rever
3d50: 74 73 20 74 68 65 20 73 74 61 74 65 20 6f 66 20  ts the state of 
3d60: 74 68 65 20 64 61 74 61 62 61 73 65 20 62 61 63  the database bac
3d70: 6b 20 74 6f 20 77 68 61 74 0a 69 74 20 77 61 73  k to what.it was
3d80: 20 6a 75 73 74 20 61 66 74 65 72 20 74 68 65 20   just after the 
3d90: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 41  corresponding SA
3da0: 56 45 50 4f 49 4e 54 2e 20 20 4e 6f 74 65 20 74  VEPOINT.  Note t
3db0: 68 61 74 20 75 6e 6c 69 6b 65 20 74 68 61 74 0a  hat unlike that.
3dc0: 70 6c 61 69 6e 20 5b 52 4f 4c 4c 42 41 43 4b 5d  plain [ROLLBACK]
3dd0: 20 63 6f 6d 6d 61 6e 64 20 28 77 69 74 68 6f 75   command (withou
3de0: 74 20 74 68 65 20 54 4f 20 6b 65 79 77 6f 72 64  t the TO keyword
3df0: 29 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 54  ) the ROLLBACK T
3e00: 4f 20 63 6f 6d 6d 61 6e 64 0a 64 6f 65 73 20 6e  O command.does n
3e10: 6f 74 20 63 61 6e 63 65 6c 20 74 68 65 20 74 72  ot cancel the tr
3e20: 61 6e 73 61 63 74 69 6f 6e 2e 20 20 49 6e 73 74  ansaction.  Inst
3e30: 65 61 64 20 6f 66 20 63 61 6e 63 65 6c 6c 69 6e  ead of cancellin
3e40: 67 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  g the transactio
3e50: 6e 2c 0a 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20  n,.the ROLLBACK 
3e60: 54 4f 20 63 6f 6d 6d 61 6e 64 20 72 65 73 74 61  TO command resta
3e70: 72 74 73 20 74 68 65 20 74 72 61 6e 73 61 63 74  rts the transact
3e80: 69 6f 6e 20 61 67 61 69 6e 20 61 74 20 74 68 65  ion again at the
3e90: 20 62 65 67 69 6e 6e 69 6e 67 2e 0a 41 6c 6c 20   beginning..All 
3ea0: 69 6e 74 65 72 76 65 6e 69 6e 67 20 53 41 56 45  intervening SAVE
3eb0: 50 4f 49 4e 54 73 20 61 72 65 20 63 61 6e 63 65  POINTs are cance
3ec0: 6c 6c 65 64 2c 20 68 6f 77 65 76 65 72 2e 3c 2f  lled, however.</
3ed0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 52 45 4c 45 41  p>..<p>The RELEA
3ee0: 53 45 20 69 73 20 6c 69 6b 65 20 61 20 5b 43 4f  SE is like a [CO
3ef0: 4d 4d 49 54 5d 20 66 6f 72 20 61 20 53 41 56 45  MMIT] for a SAVE
3f00: 50 4f 49 4e 54 2e 0a 54 68 65 20 52 45 4c 45 41  POINT..The RELEA
3f10: 53 45 20 63 6f 6d 6d 61 6e 64 20 63 61 75 73 65  SE command cause
3f20: 73 20 61 6c 6c 20 73 61 76 65 70 6f 69 6e 74 73  s all savepoints
3f30: 20 62 61 63 6b 20 74 6f 20 61 6e 64 20 69 6e 63   back to and inc
3f40: 6c 75 64 69 6e 67 20 74 68 65 20 66 69 72 73 74  luding the first
3f50: 0a 73 61 76 65 70 6f 69 6e 74 20 77 69 74 68 20  .savepoint with 
3f60: 61 20 6d 61 74 63 68 69 6e 67 20 6e 61 6d 65 20  a matching name 
3f70: 74 6f 20 62 65 20 72 65 6d 6f 76 65 64 20 66 72  to be removed fr
3f80: 6f 6d 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  om the transacti
3f90: 6f 6e 20 73 74 61 63 6b 2e 20 20 54 68 65 0a 52  on stack.  The.R
3fa0: 45 4c 45 41 53 45 20 6f 66 20 61 6e 20 69 6e 6e  ELEASE of an inn
3fb0: 65 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 64  er transaction.d
3fc0: 6f 65 73 20 6e 6f 74 20 63 61 75 73 65 20 61 6e  oes not cause an
3fd0: 79 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65  y changes to the
3fe0: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2c 20   database file, 
3ff0: 69 74 20 6d 65 72 65 6c 79 0a 72 65 6d 6f 76 65  it merely.remove
4000: 73 20 73 61 76 65 70 6f 69 6e 74 73 20 66 72 6f  s savepoints fro
4010: 6d 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  m the transactio
4020: 6e 20 73 74 61 63 6b 20 73 75 63 68 20 74 68 61  n stack such tha
4030: 74 20 69 74 20 69 73 0a 6e 6f 20 6c 6f 6e 67 65  t it is.no longe
4040: 72 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 52 4f  r possible to RO
4050: 4c 4c 42 41 43 4b 20 54 4f 20 74 68 6f 73 65 20  LLBACK TO those 
4060: 73 61 76 65 70 6f 69 6e 74 73 2e 0a 49 66 20 61  savepoints..If a
4070: 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64   RELEASE command
4080: 20 72 65 6c 65 61 73 65 73 20 74 68 65 20 6f 75   releases the ou
4090: 74 65 72 6d 6f 73 74 20 73 61 76 65 70 6f 69 6e  termost savepoin
40a0: 74 2c 20 73 6f 0a 74 68 61 74 20 74 68 65 20 74  t, so.that the t
40b0: 72 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 63 6b  ransaction stack
40c0: 20 62 65 63 6f 6d 65 73 20 65 6d 70 74 79 2c 20   becomes empty, 
40d0: 74 68 65 6e 20 52 45 4c 45 41 53 45 20 69 73 20  then RELEASE is 
40e0: 74 68 65 20 73 61 6d 65 0a 61 73 20 5b 43 4f 4d  the same.as [COM
40f0: 4d 49 54 5d 2e 0a 54 68 65 20 5b 43 4f 4d 4d 49  MIT]..The [COMMI
4100: 54 5d 20 63 6f 6d 6d 61 6e 64 20 6d 61 79 20 75  T] command may u
4110: 73 65 64 20 74 6f 20 72 65 6c 65 61 73 65 20 61  sed to release a
4120: 6c 6c 20 73 61 76 65 70 6f 69 6e 74 73 20 61 6e  ll savepoints an
4130: 64 0a 63 6f 6d 6d 69 74 20 74 68 65 20 74 72 61  d.commit the tra
4140: 6e 73 61 63 74 69 6f 6e 20 65 76 65 6e 20 69 66  nsaction even if
4150: 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
4160: 20 77 61 73 20 6f 72 69 67 69 6e 61 6c 6c 79 20   was originally 
4170: 73 74 61 72 74 65 64 0a 62 79 20 61 20 53 41 56  started.by a SAV
4180: 45 50 4f 49 4e 54 20 63 6f 6d 6d 61 6e 64 20 69  EPOINT command i
4190: 6e 73 74 65 61 64 20 6f 66 20 61 20 5b 42 45 47  nstead of a [BEG
41a0: 49 4e 5d 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e  IN] command.</p>
41b0: 0a 0a 3c 70 3e 49 66 20 74 68 65 20 73 61 76 65  ..<p>If the save
41c0: 70 6f 69 6e 74 2d 6e 61 6d 65 20 69 6e 20 61 20  point-name in a 
41d0: 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20  RELEASE command 
41e0: 64 6f 65 73 20 6e 6f 74 20 6d 61 74 63 68 20 61  does not match a
41f0: 6e 79 0a 73 61 76 65 70 6f 69 6e 74 20 63 75 72  ny.savepoint cur
4200: 72 65 6e 74 6c 79 20 69 6e 20 74 68 65 20 74 72  rently in the tr
4210: 61 6e 61 63 74 69 6f 6e 20 73 74 61 63 6b 2c 20  anaction stack, 
4220: 74 68 65 6e 20 6e 6f 20 73 61 76 65 70 6f 69 6e  then no savepoin
4230: 74 73 20 61 72 65 0a 72 65 6c 65 61 73 65 64 2c  ts are.released,
4240: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73   the database is
4250: 20 75 6e 63 68 61 6e 67 65 64 2c 20 61 6e 64 20   unchanged, and 
4260: 74 68 65 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d  the RELEASE comm
4270: 61 6e 64 20 72 65 74 75 72 6e 73 0a 61 6e 20 65  and returns.an e
4280: 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e 6f  rror.</p>..<p>No
4290: 74 65 20 74 68 61 74 20 61 6e 20 69 6e 6e 65 72  te that an inner
42a0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 6d 69 67   transaction mig
42b0: 68 74 20 63 6f 6d 6d 69 74 20 28 75 73 69 6e 67  ht commit (using
42c0: 20 74 68 65 20 52 45 4c 45 41 53 45 20 63 6f 6d   the RELEASE com
42d0: 6d 61 6e 64 29 0a 62 75 74 20 74 68 65 6e 20 6c  mand).but then l
42e0: 61 74 65 72 20 68 61 76 65 20 69 74 73 20 77 6f  ater have its wo
42f0: 72 6b 20 75 6e 64 6f 6e 65 20 62 79 20 61 20 52  rk undone by a R
4300: 4f 4c 4c 42 41 43 4b 20 69 6e 20 61 6e 20 6f 75  OLLBACK in an ou
4310: 74 65 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e  ter transaction.
4320: 0a 41 20 70 6f 77 65 72 20 66 61 69 6c 75 72 65  .A power failure
4330: 20 6f 72 20 70 72 6f 67 72 61 6d 20 63 72 61 73   or program cras
4340: 68 20 6f 72 20 4f 53 20 63 72 61 73 68 20 77 69  h or OS crash wi
4350: 6c 6c 20 63 61 75 73 65 20 74 68 65 20 6f 75 74  ll cause the out
4360: 65 72 2d 6d 6f 73 74 0a 74 72 61 6e 73 61 63 74  er-most.transact
4370: 69 6f 6e 20 74 6f 20 72 6f 6c 6c 62 61 63 6b 2c  ion to rollback,
4380: 20 75 6e 64 6f 69 6e 67 20 61 6c 6c 20 63 68 61   undoing all cha
4390: 6e 67 65 73 20 74 68 61 74 20 68 61 76 65 20 6f  nges that have o
43a0: 63 63 75 72 72 65 64 20 77 69 74 68 69 6e 0a 74  ccurred within.t
43b0: 68 61 74 20 6f 75 74 65 72 20 74 72 61 6e 73 61  hat outer transa
43c0: 63 74 69 6f 6e 2c 20 65 76 65 6e 20 63 68 61 6e  ction, even chan
43d0: 67 65 73 20 74 68 61 74 20 68 61 76 65 20 73 75  ges that have su
43e0: 70 70 6f 73 65 64 6c 79 20 62 65 65 6e 20 22 63  pposedly been "c
43f0: 6f 6d 6d 69 74 74 65 64 22 0a 62 79 20 74 68 65  ommitted".by the
4400: 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64   RELEASE command
4410: 2e 20 20 43 6f 6e 74 65 6e 74 20 69 73 20 6e 6f  .  Content is no
4420: 74 20 61 63 74 75 61 6c 6c 79 20 63 6f 6d 6d 69  t actually commi
4430: 74 74 65 64 20 6f 6e 20 74 68 65 20 64 69 73 6b  tted on the disk
4440: 20 0a 75 6e 74 69 6c 20 74 68 65 20 6f 75 74 65   .until the oute
4450: 72 6d 6f 73 74 20 74 72 61 6e 73 61 63 74 69 6f  rmost transactio
4460: 6e 20 63 6f 6d 6d 69 74 73 2e 3c 2f 70 3e 0a 0a  n commits.</p>..
4470: 3c 70 3e 54 68 65 72 65 20 61 72 65 20 73 65 76  <p>There are sev
4480: 65 72 61 6c 20 77 61 79 73 20 6f 66 20 74 68 69  eral ways of thi
4490: 6e 6b 69 6e 67 20 61 62 6f 75 74 20 74 68 65 20  nking about the 
44a0: 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 3a  RELEASE command:
44b0: 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c  </p>..<ul>.<li><
44c0: 70 3e 0a 53 6f 6d 65 20 70 65 6f 70 6c 65 20 76  p>.Some people v
44d0: 69 65 77 20 52 45 4c 45 41 53 45 20 61 73 20 74  iew RELEASE as t
44e0: 68 65 20 65 71 75 69 76 61 6c 65 6e 74 20 6f 66  he equivalent of
44f0: 20 43 4f 4d 4d 49 54 20 66 6f 72 20 61 20 53 41   COMMIT for a SA
4500: 56 45 50 4f 49 4e 54 2e 0a 54 68 69 73 20 69 73  VEPOINT..This is
4510: 20 61 6e 20 61 63 63 65 70 74 61 62 6c 65 20 70   an acceptable p
4520: 6f 69 6e 74 20 6f 66 20 76 69 65 77 20 61 73 20  oint of view as 
4530: 6c 6f 6e 67 20 61 73 20 6f 6e 65 20 72 65 6d 65  long as one reme
4540: 6d 62 65 72 73 20 74 68 61 74 20 74 68 65 0a 63  mbers that the.c
4550: 68 61 6e 67 65 73 20 63 6f 6d 6d 69 74 74 65 64  hanges committed
4560: 20 62 79 20 61 6e 20 69 6e 6e 65 72 20 74 72 61   by an inner tra
4570: 6e 73 61 63 74 69 6f 6e 20 6d 69 67 68 74 20 6c  nsaction might l
4580: 61 74 65 72 20 62 65 20 75 6e 64 6f 6e 65 20 62  ater be undone b
4590: 79 20 61 0a 72 6f 6c 6c 62 61 63 6b 20 69 6e 20  y a.rollback in 
45a0: 61 6e 20 6f 75 74 65 72 20 74 72 61 6e 73 61 63  an outer transac
45b0: 74 69 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a  tion.</p></li>..
45c0: 3c 6c 69 3e 3c 70 3e 0a 41 6e 6f 74 68 65 72 20  <li><p>.Another 
45d0: 76 69 65 77 20 6f 66 20 52 45 4c 45 41 53 45 20  view of RELEASE 
45e0: 69 73 20 74 68 61 74 20 69 74 20 6d 65 72 67 65  is that it merge
45f0: 73 20 61 20 6e 61 6d 65 64 20 74 72 61 6e 73 61  s a named transa
4600: 63 74 69 6f 6e 20 69 6e 74 6f 20 69 74 73 0a 70  ction into its.p
4610: 61 72 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f  arent transactio
4620: 6e 2c 20 73 6f 20 74 68 61 74 20 74 68 65 20 6e  n, so that the n
4630: 61 6d 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  amed transaction
4640: 20 61 6e 64 20 69 74 73 20 70 61 72 65 6e 74 20   and its parent 
4650: 62 65 63 6f 6d 65 0a 74 68 65 20 73 61 6d 65 20  become.the same 
4660: 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 41 66  transaction.  Af
4670: 74 65 72 20 52 45 4c 45 41 53 45 2c 20 74 68 65  ter RELEASE, the
4680: 20 6e 61 6d 65 64 20 74 72 61 6e 73 61 63 74 69   named transacti
4690: 6f 6e 20 61 6e 64 20 69 74 73 20 70 61 72 65 6e  on and its paren
46a0: 74 0a 77 69 6c 6c 20 63 6f 6d 6d 69 74 20 6f 72  t.will commit or
46b0: 20 72 6f 6c 6c 62 61 63 6b 20 74 6f 67 65 74 68   rollback togeth
46c0: 65 72 2c 20 77 68 61 74 65 76 65 72 20 74 68 65  er, whatever the
46d0: 69 72 20 66 61 74 65 20 6d 61 79 20 62 65 2e 0a  ir fate may be..
46e0: 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c  </p></li>..<li><
46f0: 70 3e 0a 4f 6e 65 20 63 61 6e 20 61 6c 73 6f 20  p>.One can also 
4700: 74 68 69 6e 6b 20 6f 66 20 73 61 76 65 70 6f 69  think of savepoi
4710: 6e 74 73 20 61 73 0a 22 6d 61 72 6b 73 22 20 69  nts as."marks" i
4720: 6e 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  n the transactio
4730: 6e 20 74 69 6d 65 6c 69 6e 65 2e 20 20 49 6e 20  n timeline.  In 
4740: 74 68 69 73 20 76 69 65 77 2c 20 74 68 65 20 53  this view, the S
4750: 41 56 45 50 4f 49 4e 54 20 63 6f 6d 6d 61 6e 64  AVEPOINT command
4760: 0a 63 72 65 61 74 65 73 20 61 20 6e 65 77 20 6d  .creates a new m
4770: 61 72 6b 2c 20 74 68 65 20 52 4f 4c 4c 42 41 43  ark, the ROLLBAC
4780: 4b 20 54 4f 20 63 6f 6d 6d 61 6e 64 20 72 65 77  K TO command rew
4790: 69 6e 64 73 20 74 68 65 20 74 69 6d 65 6c 69 6e  inds the timelin
47a0: 65 20 62 61 63 6b 0a 74 6f 20 61 20 70 6f 69 6e  e back.to a poin
47b0: 74 20 6a 75 73 74 20 61 66 74 65 72 20 74 68 65  t just after the
47c0: 20 6e 61 6d 65 64 20 6d 61 72 6b 2c 20 61 6e 64   named mark, and
47d0: 20 74 68 65 20 52 45 4c 45 41 53 45 20 63 6f 6d   the RELEASE com
47e0: 6d 61 6e 64 0a 65 72 61 73 65 73 20 6d 61 72 6b  mand.erases mark
47f0: 73 20 66 72 6f 6d 20 74 68 65 20 74 69 6d 65 6c  s from the timel
4800: 69 6e 65 20 77 69 74 68 6f 75 74 20 61 63 74 75  ine without actu
4810: 61 6c 6c 79 20 6d 61 6b 69 6e 67 20 61 6e 79 0a  ally making any.
4820: 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20 64  changes to the d
4830: 61 74 61 62 61 73 65 2e 0a 3c 2f 70 3e 3c 2f 6c  atabase..</p></l
4840: 69 3e 0a 3c 2f 75 6c 3e 0a 0a 0a 0a 3c 68 33 3e  i>.</ul>....<h3>
4850: 54 72 61 6e 73 61 63 74 69 6f 6e 20 4e 65 73 74  Transaction Nest
4860: 69 6e 67 20 52 75 6c 65 73 3c 2f 68 33 3e 0a 0a  ing Rules</h3>..
4870: 3c 70 3e 54 72 61 6e 73 61 63 74 69 6f 6e 73 20  <p>Transactions 
4880: 73 74 61 63 6b 2e 20 20 54 68 65 20 6c 61 73 74  stack.  The last
4890: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 73 74 61   transaction sta
48a0: 72 74 65 64 20 77 69 6c 6c 20 62 65 20 74 68 65  rted will be the
48b0: 20 66 69 72 73 74 0a 74 72 61 6e 73 61 63 74 69   first.transacti
48c0: 6f 6e 20 63 6f 6d 6d 69 74 74 65 64 20 6f 72 20  on committed or 
48d0: 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 3c 2f 70 3e  rolled back.</p>
48e0: 0a 0a 3c 70 3e 54 68 65 20 5b 42 45 47 49 4e 5d  ..<p>The [BEGIN]
48f0: 20 63 6f 6d 6d 61 6e 64 20 6f 6e 6c 79 20 77 6f   command only wo
4900: 72 6b 73 20 69 66 20 74 68 65 20 74 72 61 6e 73  rks if the trans
4910: 61 63 74 69 6f 6e 20 73 74 61 63 6b 20 69 73 20  action stack is 
4920: 65 6d 70 74 79 2c 20 6f 72 0a 69 6e 20 6f 74 68  empty, or.in oth
4930: 65 72 20 77 6f 72 64 73 20 69 66 20 74 68 65 72  er words if ther
4940: 65 20 61 72 65 20 6e 6f 20 70 65 6e 64 69 6e 67  e are no pending
4950: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20   transactions.  
4960: 49 66 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  If the transacti
4970: 6f 6e 0a 73 74 61 63 6b 20 69 73 20 6e 6f 74 20  on.stack is not 
4980: 65 6d 70 74 79 20 77 68 65 6e 20 74 68 65 20 5b  empty when the [
4990: 42 45 47 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20 69  BEGIN] command i
49a0: 73 20 69 6e 76 6f 6b 65 64 2c 20 74 68 65 6e 20  s invoked, then 
49b0: 74 68 65 20 63 6f 6d 6d 61 6e 64 0a 66 61 69 6c  the command.fail
49c0: 73 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 2e  s with an error.
49d0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 5b 43 4f  </p>..<p>The [CO
49e0: 4d 4d 49 54 5d 20 63 6f 6d 6d 61 6e 64 20 63 6f  MMIT] command co
49f0: 6d 6d 69 74 73 20 61 6c 6c 20 6f 75 74 73 74 61  mmits all outsta
4a00: 6e 64 69 6e 67 20 74 72 61 6e 73 61 63 74 69 6f  nding transactio
4a10: 6e 73 20 61 6e 64 20 6c 65 61 76 65 73 0a 74 68  ns and leaves.th
4a20: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 73 74  e transaction st
4a30: 61 63 6b 20 65 6d 70 74 79 2e 3c 2f 70 3e 0a 0a  ack empty.</p>..
4a40: 3c 70 3e 54 68 65 20 52 45 4c 45 41 53 45 20 63  <p>The RELEASE c
4a50: 6f 6d 6d 61 6e 64 20 73 74 61 72 74 73 20 77 69  ommand starts wi
4a60: 74 68 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  th the most rece
4a70: 6e 74 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74  nt addition to t
4a80: 68 65 0a 74 72 61 6e 73 61 63 74 69 6f 6e 20 73  he.transaction s
4a90: 74 61 63 6b 20 61 6e 64 20 72 65 6c 65 61 73 65  tack and release
4aa0: 73 20 73 61 76 65 70 6f 69 6e 74 73 20 62 61 63  s savepoints bac
4ab0: 6b 77 61 72 64 73 20 0a 69 6e 20 74 69 6d 65 20  kwards .in time 
4ac0: 75 6e 74 69 6c 20 69 74 20 72 65 6c 65 61 73 65  until it release
4ad0: 73 20 61 20 73 61 76 65 70 6f 69 6e 74 20 6d 61  s a savepoint ma
4ae0: 72 6b 20 77 69 74 68 20 61 20 6d 61 74 63 68 69  rk with a matchi
4af0: 6e 67 20 73 61 76 65 70 6f 69 6e 74 2d 6e 61 6d  ng savepoint-nam
4b00: 65 2e 0a 50 72 69 6f 72 20 73 61 76 65 70 6f 69  e..Prior savepoi
4b10: 6e 74 73 2c 20 65 76 65 6e 20 73 61 76 65 70 6f  nts, even savepo
4b20: 69 6e 74 73 20 77 69 74 68 20 6d 61 74 63 68 69  ints with matchi
4b30: 6e 67 20 73 61 76 65 70 6f 69 6e 74 2d 6e 61 6d  ng savepoint-nam
4b40: 65 73 2c 20 61 72 65 0a 75 6e 63 68 61 6e 67 65  es, are.unchange
4b50: 64 2e 0a 49 66 20 74 68 65 20 52 45 4c 45 41 53  d..If the RELEAS
4b60: 45 20 63 6f 6d 6d 61 6e 64 20 63 61 75 73 65 73  E command causes
4b70: 20 74 68 65 0a 74 72 61 6e 73 61 63 74 69 6f 6e   the.transaction
4b80: 20 73 74 61 63 6b 20 74 6f 20 62 65 63 6f 6d 65   stack to become
4b90: 20 65 6d 70 74 79 20 28 69 66 20 74 68 65 20 52   empty (if the R
4ba0: 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20 72  ELEASE command r
4bb0: 65 6c 65 61 73 65 73 20 74 68 65 0a 6f 75 74 65  eleases the.oute
4bc0: 72 6d 6f 73 74 20 74 72 61 6e 73 61 63 74 69 6f  rmost transactio
4bd0: 6e 20 66 72 6f 6d 20 74 68 65 20 73 74 61 63 6b  n from the stack
4be0: 29 20 74 68 65 6e 20 74 68 65 20 74 72 61 6e 73  ) then the trans
4bf0: 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 73 2e 3c  action commits.<
4c00: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 5b 52 4f 4c  /p>..<p>The [ROL
4c10: 4c 42 41 43 4b 5d 20 63 6f 6d 6d 61 6e 64 20 77  LBACK] command w
4c20: 69 74 68 6f 75 74 20 61 20 54 4f 20 63 6c 61 75  ithout a TO clau
4c30: 73 65 20 72 6f 6c 6c 73 20 62 61 63 6b 73 20 61  se rolls backs a
4c40: 6c 6c 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 0a  ll transactions.
4c50: 61 6e 64 20 6c 65 61 76 65 73 20 74 68 65 20 74  and leaves the t
4c60: 72 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 63 6b  ransaction stack
4c70: 20 65 6d 70 74 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e   empty.</p>..<p>
4c80: 54 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d  The ROLLBACK com
4c90: 6d 61 6e 64 20 77 69 74 68 20 61 20 54 4f 20 63  mand with a TO c
4ca0: 6c 61 75 73 65 20 72 6f 6c 6c 73 20 62 61 63 6b  lause rolls back
4cb0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 67 6f   transactions go
4cc0: 69 6e 67 0a 62 61 63 6b 77 61 72 64 73 20 69 6e  ing.backwards in
4cd0: 20 74 69 6d 65 20 62 61 63 6b 20 74 6f 20 74 68   time back to th
4ce0: 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 53 41  e most recent SA
4cf0: 56 45 50 4f 49 4e 54 20 77 69 74 68 20 61 20 6d  VEPOINT with a m
4d00: 61 74 63 68 69 6e 67 20 6e 61 6d 65 2e 0a 54 68  atching name..Th
4d10: 65 20 53 41 56 45 50 4f 49 4e 54 20 77 69 74 68  e SAVEPOINT with
4d20: 20 74 68 65 20 6d 61 74 63 68 69 6e 67 20 6e 61   the matching na
4d30: 6d 65 20 72 65 6d 61 69 6e 73 20 6f 6e 20 74 68  me remains on th
4d40: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 73 74  e transaction st
4d50: 61 63 6b 2c 0a 62 75 74 20 61 6c 6c 20 64 61 74  ack,.but all dat
4d60: 61 62 61 73 65 20 63 68 61 6e 67 65 73 20 74 68  abase changes th
4d70: 61 74 20 6f 63 63 75 72 72 65 64 20 61 66 74 65  at occurred afte
4d80: 72 20 74 68 61 74 20 53 41 56 45 50 4f 49 4e 54  r that SAVEPOINT
4d90: 20 77 61 73 20 63 72 65 61 74 65 64 0a 61 72 65   was created.are
4da0: 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20 49   rolled back.  I
4db0: 66 20 74 68 65 20 73 61 76 65 70 6f 69 6e 74 2d  f the savepoint-
4dc0: 6e 61 6d 65 20 69 6e 20 61 20 52 4f 4c 4c 42 41  name in a ROLLBA
4dd0: 43 4b 20 54 4f 20 63 6f 6d 6d 61 6e 64 20 64 6f  CK TO command do
4de0: 65 73 20 6e 6f 74 0a 6d 61 74 63 68 20 61 6e 79  es not.match any
4df0: 20 53 41 56 45 50 4f 49 4e 54 20 6f 6e 20 74 68   SAVEPOINT on th
4e00: 65 20 73 74 61 63 6b 2c 20 74 68 65 6e 20 74 68  e stack, then th
4e10: 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61  e ROLLBACK comma
4e20: 6e 64 20 66 61 69 6c 73 20 77 69 74 68 20 61 6e  nd fails with an
4e30: 0a 65 72 72 6f 72 20 61 6e 64 20 6c 65 61 76 65  .error and leave
4e40: 73 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74  s the state of t
4e50: 68 65 20 64 61 74 61 62 61 73 65 20 75 6e 63 68  he database unch
4e60: 61 6e 67 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  anged.</p>..<tcl
4e70: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
4e80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4e90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4ea0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4eb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4ec0: 23 0a 53 65 63 74 69 6f 6e 20 63 6f 6d 6d 65 6e  #.Section commen
4ed0: 74 20 63 6f 6d 6d 65 6e 74 20 7b 63 6f 6d 6d 65  t comment {comme
4ee0: 6e 74 20 63 6f 6d 6d 65 6e 74 73 7d 0a 0a 42 75  nt comments}..Bu
4ef0: 62 62 6c 65 44 69 61 67 72 61 6d 20 63 6f 6d 6d  bbleDiagram comm
4f00: 65 6e 74 2d 73 79 6e 74 61 78 0a 3c 2f 74 63 6c  ent-syntax.</tcl
4f10: 3e 0a 0a 3c 70 3e 43 6f 6d 6d 65 6e 74 73 20 61  >..<p>Comments a
4f20: 72 65 6e 27 74 20 53 51 4c 20 63 6f 6d 6d 61 6e  ren't SQL comman
4f30: 64 73 2c 20 62 75 74 20 63 61 6e 20 6f 63 63 75  ds, but can occu
4f40: 72 20 77 69 74 68 69 6e 20 74 68 65 20 74 65 78  r within the tex
4f50: 74 20 6f 66 0a 53 51 4c 20 71 75 65 72 69 65 73  t of.SQL queries
4f60: 20 70 61 73 73 65 64 20 74 6f 20 5b 73 71 6c 69   passed to [sqli
4f70: 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
4f80: 5d 20 61 6e 64 20 72 65 6c 61 74 65 64 20 69 6e  ] and related in
4f90: 74 65 72 66 61 63 65 73 2e 2e 0a 43 6f 6d 6d 65  terfaces...Comme
4fa0: 6e 74 73 20 61 72 65 20 0a 74 72 65 61 74 65 64  nts are .treated
4fb0: 20 61 73 20 77 68 69 74 65 73 70 61 63 65 20 62   as whitespace b
4fc0: 79 20 74 68 65 20 70 61 72 73 65 72 2e 20 20 54  y the parser.  T
4fd0: 68 65 79 20 63 61 6e 20 62 65 67 69 6e 20 61 6e  hey can begin an
4fe0: 79 77 68 65 72 65 20 77 68 69 74 65 73 70 61 63  ywhere whitespac
4ff0: 65 20 0a 63 61 6e 20 62 65 20 66 6f 75 6e 64 2c  e .can be found,
5000: 20 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69 64   including insid
5010: 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68  e expressions th
5020: 61 74 20 73 70 61 6e 20 6d 75 6c 74 69 70 6c 65  at span multiple
5030: 20 6c 69 6e 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70   lines..</p>..<p
5040: 3e 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 62  > SQL comments b
5050: 65 67 69 6e 20 77 69 74 68 20 74 77 6f 20 63 6f  egin with two co
5060: 6e 73 65 63 75 74 69 76 65 20 22 2d 22 20 63 68  nsecutive "-" ch
5070: 61 72 61 63 74 65 72 73 20 28 41 53 43 49 49 20  aracters (ASCII 
5080: 30 78 32 64 29 0a 61 6e 64 20 65 78 74 65 6e 64  0x2d).and extend
5090: 20 75 70 20 74 6f 20 61 6e 64 20 69 6e 63 6c 75   up to and inclu
50a0: 64 69 6e 67 20 74 68 65 20 6e 65 78 74 20 6e 65  ding the next ne
50b0: 77 6c 69 6e 65 20 63 68 61 72 61 63 74 65 72 20  wline character 
50c0: 28 41 53 43 49 49 20 30 78 30 61 29 0a 6f 72 20  (ASCII 0x0a).or 
50d0: 75 6e 74 69 6c 20 74 68 65 20 65 6e 64 20 6f 66  until the end of
50e0: 20 69 6e 70 75 74 2c 20 77 68 69 63 68 65 76 65   input, whicheve
50f0: 72 20 63 6f 6d 65 73 20 66 69 72 73 74 2e 3c 2f  r comes first.</
5100: 70 3e 0a 0a 3c 70 3e 20 43 20 63 6f 6d 6d 65 6e  p>..<p> C commen
5110: 74 73 20 63 61 6e 20 73 70 61 6e 20 61 6e 79 20  ts can span any 
5120: 6e 75 6d 62 65 72 20 6f 66 20 6c 69 6e 65 73 2e  number of lines.
5130: 20 20 43 2d 73 74 79 6c 65 20 63 6f 6d 6d 65 6e    C-style commen
5140: 74 73 20 62 65 67 69 6e 0a 77 69 74 68 20 22 2f  ts begin.with "/
5150: 2a 22 20 61 6e 64 20 65 78 74 65 6e 64 20 75 70  *" and extend up
5160: 20 74 6f 20 61 6e 64 20 69 6e 63 6c 75 64 69 6e   to and includin
5170: 67 20 74 68 65 20 6e 65 78 74 20 22 2a 2f 22 20  g the next "*/" 
5180: 63 68 61 72 61 63 74 65 72 20 70 61 69 72 0a 6f  character pair.o
5190: 72 20 75 6e 74 69 6c 20 74 68 65 20 65 6e 64 20  r until the end 
51a0: 6f 66 20 69 6e 70 75 74 2c 20 77 68 69 63 68 65  of input, whiche
51b0: 76 65 72 20 63 6f 6d 65 73 20 66 69 72 73 74 2e  ver comes first.
51c0: 20 20 43 2d 73 74 79 6c 65 20 63 6f 6d 6d 65 6e    C-style commen
51d0: 74 73 0a 63 61 6e 20 73 70 61 6e 20 6d 75 6c 74  ts.can span mult
51e0: 69 70 6c 65 20 6c 69 6e 65 73 2e 20 3c 2f 70 3e  iple lines. </p>
51f0: 0a 0a 3c 70 3e 20 43 6f 6d 6d 65 6e 74 73 20 63  ..<p> Comments c
5200: 61 6e 20 61 70 70 65 61 72 20 61 6e 79 77 68 65  an appear anywhe
5210: 72 65 20 77 68 69 74 65 73 70 61 63 65 20 63 61  re whitespace ca
5220: 6e 20 6f 63 63 75 72 2c 0a 69 6e 63 6c 75 64 69  n occur,.includi
5230: 6e 67 20 69 6e 73 69 64 65 20 65 78 70 72 65 73  ng inside expres
5240: 73 69 6f 6e 73 20 61 6e 64 20 69 6e 20 74 68 65  sions and in the
5250: 20 6d 69 64 64 6c 65 20 6f 66 20 6f 74 68 65 72   middle of other
5260: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e   SQL statements.
5270: 0a 43 6f 6d 6d 65 6e 74 73 20 64 6f 20 6e 6f 74  .Comments do not
5280: 20 6e 65 73 74 2e 0a 3c 2f 70 3e 0a 0a 0a 3c 74   nest..</p>...<t
5290: 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
52a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
52b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
52c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
52d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
52e0: 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41  ##.Section {CREA
52f0: 54 45 20 49 4e 44 45 58 7d 20 63 72 65 61 74 65  TE INDEX} create
5300: 69 6e 64 65 78 20 7b 7b 43 52 45 41 54 45 20 49  index {{CREATE I
5310: 4e 44 45 58 7d 7d 0a 0a 42 75 62 62 6c 65 44 69  NDEX}}..BubbleDi
5320: 61 67 72 61 6d 20 63 72 65 61 74 65 2d 69 6e 64  agram create-ind
5330: 65 78 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c 65  ex-stmt 1.Bubble
5340: 44 69 61 67 72 61 6d 20 69 6e 64 65 78 65 64 2d  Diagram indexed-
5350: 63 6f 6c 75 6d 6e 0a 3c 2f 74 63 6c 3e 0a 0a 3c  column.</tcl>..<
5360: 70 3e 54 68 65 20 43 52 45 41 54 45 20 49 4e 44  p>The CREATE IND
5370: 45 58 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69  EX command consi
5380: 73 74 73 20 6f 66 20 74 68 65 20 6b 65 79 77 6f  sts of the keywo
5390: 72 64 73 20 22 43 52 45 41 54 45 20 49 4e 44 45  rds "CREATE INDE
53a0: 58 22 20 66 6f 6c 6c 6f 77 65 64 0a 62 79 20 74  X" followed.by t
53b0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e  he name of the n
53c0: 65 77 20 69 6e 64 65 78 2c 20 74 68 65 20 6b 65  ew index, the ke
53d0: 79 77 6f 72 64 20 22 4f 4e 22 2c 20 74 68 65 20  yword "ON", the 
53e0: 6e 61 6d 65 20 6f 66 20 61 20 70 72 65 76 69 6f  name of a previo
53f0: 75 73 6c 79 0a 63 72 65 61 74 65 64 20 74 61 62  usly.created tab
5400: 6c 65 20 74 68 61 74 20 69 73 20 74 6f 20 62 65  le that is to be
5410: 20 69 6e 64 65 78 65 64 2c 20 61 6e 64 20 61 20   indexed, and a 
5420: 70 61 72 65 6e 74 68 65 73 69 7a 65 64 20 6c 69  parenthesized li
5430: 73 74 20 6f 66 20 6e 61 6d 65 73 20 6f 66 0a 63  st of names of.c
5440: 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61  olumns in the ta
5450: 62 6c 65 20 74 68 61 74 20 61 72 65 20 75 73 65  ble that are use
5460: 64 20 66 6f 72 20 74 68 65 20 69 6e 64 65 78 20  d for the index 
5470: 6b 65 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63  key.</p>..<p>Eac
5480: 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61  h column name ca
5490: 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79  n be followed by
54a0: 20 6f 6e 65 20 6f 66 20 74 68 65 20 22 41 53 43   one of the "ASC
54b0: 22 20 6f 72 20 22 44 45 53 43 22 20 6b 65 79 77  " or "DESC" keyw
54c0: 6f 72 64 73 0a 74 6f 20 69 6e 64 69 63 61 74 65  ords.to indicate
54d0: 20 73 6f 72 74 20 6f 72 64 65 72 2e 20 20 54 68   sort order.  Th
54e0: 65 20 73 6f 72 74 20 6f 72 64 65 72 20 6d 61 79  e sort order may
54f0: 20 6f 72 20 6d 61 79 20 6e 6f 74 20 62 65 20 69   or may not be i
5500: 67 6e 6f 72 65 64 20 64 65 70 65 6e 64 69 6e 67  gnored depending
5510: 0a 6f 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  .on the database
5520: 20 66 69 6c 65 20 66 6f 72 6d 61 74 2e 20 20 54   file format.  T
5530: 68 65 20 22 6c 65 67 61 63 79 22 20 66 69 6c 65  he "legacy" file
5540: 20 66 6f 72 6d 61 74 20 69 67 6e 6f 72 65 73 20   format ignores 
5550: 69 6e 64 65 78 0a 73 6f 72 74 20 6f 72 64 65 72  index.sort order
5560: 2e 20 20 54 68 65 20 64 65 73 63 65 6e 64 69 6e  .  The descendin
5570: 67 20 69 6e 64 65 78 20 66 69 6c 65 20 66 6f 72  g index file for
5580: 6d 61 74 20 74 61 6b 65 73 20 69 6e 64 65 78 20  mat takes index 
5590: 73 6f 72 74 20 6f 72 64 65 72 0a 69 6e 74 6f 20  sort order.into 
55a0: 61 63 63 6f 75 6e 74 2e 20 20 4f 6e 6c 79 20 63  account.  Only c
55b0: 6f 70 69 65 73 20 6f 66 20 53 51 4c 69 74 65 20  opies of SQLite 
55c0: 6e 65 77 65 72 20 74 68 61 6e 20 5b 76 65 72 73  newer than [vers
55d0: 69 6f 6e 20 33 2e 33 2e 30 5d 20 0a 28 72 65 6c  ion 3.3.0] .(rel
55e0: 65 61 73 65 64 20 6f 6e 20 32 30 30 36 2d 30 31  eased on 2006-01
55f0: 2d 31 30 29 20 61 72 65 20 61 62 6c 65 20 74 6f  -10) are able to
5600: 20 75 6e 64 65 72 73 74 61 6e 64 20 74 68 65 20   understand the 
5610: 6e 65 77 65 72 20 64 65 73 63 65 6e 64 69 6e 67  newer descending
5620: 0a 69 6e 64 65 78 20 66 69 6c 65 20 66 6f 72 6d  .index file form
5630: 61 74 20 61 6e 64 20 73 6f 20 66 6f 72 20 63 6f  at and so for co
5640: 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68  mpatibility with
5650: 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20   older versions 
5660: 6f 66 0a 53 51 4c 69 74 65 2c 20 74 68 65 20 6c  of.SQLite, the l
5670: 65 67 61 63 79 20 66 69 6c 65 20 66 6f 72 6d 61  egacy file forma
5680: 74 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 62  t is generated b
5690: 79 20 64 65 66 61 75 6c 74 2e 20 20 55 73 65 20  y default.  Use 
56a0: 74 68 65 0a 5b 6c 65 67 61 63 79 5f 66 69 6c 65  the.[legacy_file
56b0: 5f 66 6f 72 6d 61 74 5d 20 70 72 61 67 6d 61 20  _format] pragma 
56c0: 74 6f 20 6d 6f 64 69 66 79 20 74 68 69 73 20 62  to modify this b
56d0: 65 68 61 76 69 6f 72 20 61 6e 64 20 67 65 6e 65  ehavior and gene
56e0: 72 61 74 65 0a 64 61 74 61 62 61 73 65 73 20 74  rate.databases t
56f0: 68 61 74 20 75 73 65 20 74 68 65 20 6e 65 77 65  hat use the newe
5700: 72 20 66 69 6c 65 20 66 6f 72 6d 61 74 2e 20 20  r file format.  
5710: 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20  Future versions 
5720: 6f 66 20 53 51 4c 69 74 65 0a 6d 61 79 20 62 65  of SQLite.may be
5730: 67 69 6e 20 74 6f 20 67 65 6e 65 72 61 74 65 20  gin to generate 
5740: 74 68 65 20 6e 65 77 65 72 20 66 69 6c 65 20 66  the newer file f
5750: 6f 72 6d 61 74 20 62 79 20 64 65 66 61 75 6c 74  ormat by default
5760: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 43 4f  .</p>..<p>The CO
5770: 4c 4c 41 54 45 20 63 6c 61 75 73 65 20 66 6f 6c  LLATE clause fol
5780: 6c 6f 77 69 6e 67 20 65 61 63 68 20 63 6f 6c 75  lowing each colu
5790: 6d 6e 20 6e 61 6d 65 20 64 65 66 69 6e 65 73 20  mn name defines 
57a0: 61 20 63 6f 6c 6c 61 74 69 6e 67 0a 73 65 71 75  a collating.sequ
57b0: 65 6e 63 65 20 75 73 65 64 20 66 6f 72 20 74 65  ence used for te
57c0: 78 74 20 65 6e 74 72 69 65 73 20 69 6e 20 74 68  xt entries in th
57d0: 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 54 68 65 20  at column.  The 
57e0: 64 65 66 61 75 6c 74 20 63 6f 6c 6c 61 74 69 6e  default collatin
57f0: 67 0a 73 65 71 75 65 6e 63 65 20 69 73 20 74 68  g.sequence is th
5800: 65 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75  e collating sequ
5810: 65 6e 63 65 20 64 65 66 69 6e 65 64 20 66 6f 72  ence defined for
5820: 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 6e 20   that column in 
5830: 74 68 65 0a 5b 43 52 45 41 54 45 20 54 41 42 4c  the.[CREATE TABL
5840: 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f  E] statement.  O
5850: 72 20 69 66 20 6e 6f 20 63 6f 6c 6c 61 74 69 6e  r if no collatin
5860: 67 20 73 65 71 75 65 6e 63 65 20 69 73 20 6f 74  g sequence is ot
5870: 68 65 72 77 69 73 65 20 64 65 66 69 6e 65 64 2c  herwise defined,
5880: 0a 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 42 49  .the built-in BI
5890: 4e 41 52 59 20 63 6f 6c 6c 61 74 69 6e 67 20 73  NARY collating s
58a0: 65 71 75 65 6e 63 65 20 69 73 20 75 73 65 64 2e  equence is used.
58b0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61  </p>..<p>There a
58c0: 72 65 20 6e 6f 20 61 72 62 69 74 72 61 72 79 20  re no arbitrary 
58d0: 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65 20 6e 75  limits on the nu
58e0: 6d 62 65 72 20 6f 66 20 69 6e 64 69 63 65 73 20  mber of indices 
58f0: 74 68 61 74 20 63 61 6e 20 62 65 0a 61 74 74 61  that can be.atta
5900: 63 68 65 64 20 74 6f 20 61 20 73 69 6e 67 6c 65  ched to a single
5910: 20 74 61 62 6c 65 2e 20 20 54 68 65 20 6e 75 6d   table.  The num
5920: 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
5930: 6e 20 61 6e 20 69 6e 64 65 78 20 69 73 20 0a 6c  n an index is .l
5940: 69 6d 69 74 65 64 20 74 6f 20 5b 53 51 4c 49 54  imited to [SQLIT
5950: 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 2e 3c 2f  E_MAX_COLUMN].</
5960: 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 55 4e  p>..<p>If the UN
5970: 49 51 55 45 20 6b 65 79 77 6f 72 64 20 61 70 70  IQUE keyword app
5980: 65 61 72 73 20 62 65 74 77 65 65 6e 20 43 52 45  ears between CRE
5990: 41 54 45 20 61 6e 64 20 49 4e 44 45 58 20 74 68  ATE and INDEX th
59a0: 65 6e 20 64 75 70 6c 69 63 61 74 65 0a 69 6e 64  en duplicate.ind
59b0: 65 78 20 65 6e 74 72 69 65 73 20 61 72 65 20 6e  ex entries are n
59c0: 6f 74 20 61 6c 6c 6f 77 65 64 2e 20 20 41 6e 79  ot allowed.  Any
59d0: 20 61 74 74 65 6d 70 74 20 74 6f 20 69 6e 73 65   attempt to inse
59e0: 72 74 20 61 20 64 75 70 6c 69 63 61 74 65 20 65  rt a duplicate e
59f0: 6e 74 72 79 0a 77 69 6c 6c 20 72 65 73 75 6c 74  ntry.will result
5a00: 20 69 6e 20 61 6e 20 65 72 72 6f 72 2e 20 20 46   in an error.  F
5a10: 6f 72 20 74 68 65 20 70 75 72 70 6f 73 65 73 20  or the purposes 
5a20: 6f 66 20 75 6e 69 71 75 65 20 69 6e 64 69 63 65  of unique indice
5a30: 73 2c 20 61 6c 6c 20 4e 55 4c 4c 20 76 61 6c 75  s, all NULL valu
5a40: 65 73 0a 61 72 65 20 63 6f 6e 73 69 64 65 72 65  es.are considere
5a50: 64 20 74 6f 20 64 69 66 66 65 72 65 6e 74 20 66  d to different f
5a60: 72 6f 6d 20 61 6c 6c 20 6f 74 68 65 72 20 4e 55  rom all other NU
5a70: 4c 4c 20 76 61 6c 75 65 73 20 61 6e 64 20 61 72  LL values and ar
5a80: 65 20 74 68 75 73 20 75 6e 69 71 75 65 2e 3c 2f  e thus unique.</
5a90: 70 3e 0a 0a 3c 70 3e 54 68 65 20 74 65 78 74 0a  p>..<p>The text.
5aa0: 6f 66 20 65 61 63 68 20 43 52 45 41 54 45 20 49  of each CREATE I
5ab0: 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74 20 69  NDEX statement i
5ac0: 73 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20  s stored in the 
5ad0: 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65 72  <b>sqlite_master
5ae0: 3c 2f 62 3e 0a 6f 72 20 3c 62 3e 73 71 6c 69 74  </b>.or <b>sqlit
5af0: 65 5f 74 65 6d 70 5f 6d 61 73 74 65 72 3c 2f 62  e_temp_master</b
5b00: 3e 20 74 61 62 6c 65 2c 20 64 65 70 65 6e 64 69  > table, dependi
5b10: 6e 67 20 6f 6e 20 77 68 65 74 68 65 72 20 74 68  ng on whether th
5b20: 65 20 74 61 62 6c 65 0a 62 65 69 6e 67 20 69 6e  e table.being in
5b30: 64 65 78 65 64 20 69 73 20 74 65 6d 70 6f 72 61  dexed is tempora
5b40: 72 79 2e 20 20 45 76 65 72 79 20 74 69 6d 65 20  ry.  Every time 
5b50: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
5b60: 6f 70 65 6e 65 64 2c 0a 61 6c 6c 20 43 52 45 41  opened,.all CREA
5b70: 54 45 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65  TE INDEX stateme
5b80: 6e 74 73 0a 61 72 65 20 72 65 61 64 20 66 72 6f  nts.are read fro
5b90: 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f  m the <b>sqlite_
5ba0: 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65  master</b> table
5bb0: 20 61 6e 64 20 75 73 65 64 20 74 6f 20 72 65 67   and used to reg
5bc0: 65 6e 65 72 61 74 65 0a 53 51 4c 69 74 65 27 73  enerate.SQLite's
5bd0: 20 69 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73   internal repres
5be0: 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  entation of the 
5bf0: 69 6e 64 65 78 20 6c 61 79 6f 75 74 2e 3c 2f 70  index layout.</p
5c00: 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 6f 70 74  >..<p>If the opt
5c10: 69 6f 6e 61 6c 20 49 46 20 4e 4f 54 20 45 58 49  ional IF NOT EXI
5c20: 53 54 53 20 63 6c 61 75 73 65 20 69 73 20 70 72  STS clause is pr
5c30: 65 73 65 6e 74 20 61 6e 64 20 61 6e 6f 74 68 65  esent and anothe
5c40: 72 20 69 6e 64 65 78 0a 77 69 74 68 20 74 68 65  r index.with the
5c50: 20 73 61 6d 65 20 6e 61 6d 65 20 61 6c 65 61 64   same name alead
5c60: 79 20 65 78 69 73 74 73 2c 20 74 68 65 6e 20 74  y exists, then t
5c70: 68 69 73 20 63 6f 6d 6d 61 6e 64 20 62 65 63 6f  his command beco
5c80: 6d 65 73 20 61 20 6e 6f 2d 6f 70 2e 3c 2f 70 3e  mes a no-op.</p>
5c90: 0a 0a 3c 70 3e 49 6e 64 65 78 65 73 20 61 72 65  ..<p>Indexes are
5ca0: 20 72 65 6d 6f 76 65 64 20 77 69 74 68 20 74 68   removed with th
5cb0: 65 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f  e <a href="lang_
5cc0: 64 72 6f 70 69 6e 64 65 78 2e 68 74 6d 6c 22 3e  dropindex.html">
5cd0: 44 52 4f 50 20 49 4e 44 45 58 3c 2f 61 3e 20 0a  DROP INDEX</a> .
5ce0: 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 0a 3c  command.</p>...<
5cf0: 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
5d00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5d10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5d20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5d30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5d40: 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45  ###.Section {CRE
5d50: 41 54 45 20 54 41 42 4c 45 7d 20 7b 63 72 65 61  ATE TABLE} {crea
5d60: 74 65 74 61 62 6c 65 7d 20 7b 7b 43 52 45 41 54  tetable} {{CREAT
5d70: 45 20 54 41 42 4c 45 7d 7d 0a 0a 42 75 62 62 6c  E TABLE}}..Bubbl
5d80: 65 44 69 61 67 72 61 6d 20 63 72 65 61 74 65 2d  eDiagram create-
5d90: 74 61 62 6c 65 2d 73 74 6d 74 20 31 0a 42 75 62  table-stmt 1.Bub
5da0: 62 6c 65 44 69 61 67 72 61 6d 20 63 6f 6c 75 6d  bleDiagram colum
5db0: 6e 2d 64 65 66 0a 42 75 62 62 6c 65 44 69 61 67  n-def.BubbleDiag
5dc0: 72 61 6d 20 74 79 70 65 2d 6e 61 6d 65 0a 42 75  ram type-name.Bu
5dd0: 62 62 6c 65 44 69 61 67 72 61 6d 20 63 6f 6c 75  bbleDiagram colu
5de0: 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e 74 0a 42 75  mn-constraint.Bu
5df0: 62 62 6c 65 44 69 61 67 72 61 6d 20 74 61 62 6c  bbleDiagram tabl
5e00: 65 2d 63 6f 6e 73 74 72 61 69 6e 74 0a 42 75 62  e-constraint.Bub
5e10: 62 6c 65 44 69 61 67 72 61 6d 20 66 6f 72 65 69  bleDiagram forei
5e20: 67 6e 2d 6b 65 79 2d 63 6c 61 75 73 65 0a 3c 2f  gn-key-clause.</
5e30: 74 63 6c 3e 0a 0a 3c 70 3e 41 20 43 52 45 41 54  tcl>..<p>A CREAT
5e40: 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  E TABLE statemen
5e50: 74 20 69 73 20 62 61 73 69 63 61 6c 6c 79 20 74  t is basically t
5e60: 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45  he keywords "CRE
5e70: 41 54 45 20 54 41 42 4c 45 22 0a 66 6f 6c 6c 6f  ATE TABLE".follo
5e80: 77 65 64 20 62 79 20 74 68 65 20 6e 61 6d 65 20  wed by the name 
5e90: 6f 66 20 61 20 6e 65 77 20 74 61 62 6c 65 20 61  of a new table a
5ea0: 6e 64 20 61 20 70 61 72 65 6e 74 68 65 73 69 7a  nd a parenthesiz
5eb0: 65 64 20 6c 69 73 74 20 6f 66 20 63 6f 6c 75 6d  ed list of colum
5ec0: 6e 0a 64 65 66 69 6e 69 74 69 6f 6e 73 20 61 6e  n.definitions an
5ed0: 64 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20  d constraints.  
5ee0: 0a 54 61 62 6c 65 73 20 6e 61 6d 65 73 20 74 68  .Tables names th
5ef0: 61 74 20 62 65 67 69 6e 20 77 69 74 68 20 22 3c  at begin with "<
5f00: 62 3e 73 71 6c 69 74 65 5f 3c 2f 62 3e 22 20 61  b>sqlite_</b>" a
5f10: 72 65 20 72 65 73 65 72 76 65 64 0a 66 6f 72 20  re reserved.for 
5f20: 75 73 65 20 62 79 20 74 68 65 20 65 6e 67 69 6e  use by the engin
5f30: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68 20  e.</p>..<p>Each 
5f40: 63 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f  column definitio
5f50: 6e 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  n is the name of
5f60: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6f 70 74 69   the column opti
5f70: 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65 64 20  onally followed 
5f80: 62 79 20 74 68 65 0a 5b 64 61 74 61 74 79 70 65  by the.[datatype
5f90: 5d 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d  ] for that colum
5fa0: 6e 2c 20 74 68 65 6e 20 6f 6e 65 20 6f 72 20 6d  n, then one or m
5fb0: 6f 72 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6c  ore optional col
5fc0: 75 6d 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e  umn constraints.
5fd0: 0a 53 51 4c 69 74 65 20 75 73 65 73 20 5b 64 79  .SQLite uses [dy
5fe0: 6e 61 6d 69 63 20 74 79 70 69 6e 67 5d 3b 20 0a  namic typing]; .
5ff0: 74 68 65 20 64 61 74 61 74 79 70 65 20 66 6f 72  the datatype for
6000: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 64 6f 65 73   the column does
6010: 20 6e 6f 74 20 72 65 73 74 72 69 63 74 20 77 68   not restrict wh
6020: 61 74 20 64 61 74 61 20 6d 61 79 20 62 65 20 70  at data may be p
6030: 75 74 0a 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d  ut.in that colum
6040: 6e 2e 0a 54 68 65 20 55 4e 49 51 55 45 20 63 6f  n..The UNIQUE co
6050: 6e 73 74 72 61 69 6e 74 20 63 61 75 73 65 73 20  nstraint causes 
6060: 61 6e 20 75 6e 69 71 75 65 20 69 6e 64 65 78 20  an unique index 
6070: 74 6f 20 62 65 20 63 72 65 61 74 65 64 20 6f 6e  to be created on
6080: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0a 63   the specified.c
6090: 6f 6c 75 6d 6e 73 2e 20 20 41 6c 6c 20 4e 55 4c  olumns.  All NUL
60a0: 4c 20 76 61 6c 75 65 73 20 61 72 65 20 63 6f 6e  L values are con
60b0: 73 69 64 65 72 65 64 20 64 69 66 66 65 72 65 6e  sidered differen
60c0: 74 20 66 72 6f 6d 20 65 61 63 68 20 6f 74 68 65  t from each othe
60d0: 72 20 61 6e 64 20 66 72 6f 6d 0a 61 6c 6c 20 6f  r and from.all o
60e0: 74 68 65 72 20 76 61 6c 75 65 73 20 66 6f 72 20  ther values for 
60f0: 74 68 65 20 70 75 72 70 6f 73 65 20 6f 66 20 64  the purpose of d
6100: 65 74 65 72 6d 69 6e 69 6e 67 20 75 6e 69 71 75  etermining uniqu
6110: 65 6e 65 73 73 2c 20 68 65 6e 63 65 20 61 20 55  eness, hence a U
6120: 4e 49 51 55 45 0a 63 6f 6c 75 6d 6e 20 6d 61 79  NIQUE.column may
6130: 20 63 6f 6e 74 61 69 6e 20 6d 75 6c 74 69 70 6c   contain multipl
6140: 65 20 65 6e 74 72 69 65 73 20 77 69 74 68 20 74  e entries with t
6150: 68 65 20 76 61 6c 75 65 20 6f 66 20 4e 55 4c 4c  he value of NULL
6160: 2e 0a 54 68 65 20 43 4f 4c 4c 41 54 45 20 63 6c  ..The COLLATE cl
6170: 61 75 73 65 20 73 70 65 63 69 66 69 65 73 20 77  ause specifies w
6180: 68 61 74 20 74 65 78 74 20 0a 5b 63 6f 6c 6c 61  hat text .[colla
6190: 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 5d 20 74  ting function] t
61a0: 6f 20 75 73 65 20 77 68 65 6e 20 63 6f 6d 70 61  o use when compa
61b0: 72 69 6e 67 20 74 65 78 74 20 65 6e 74 72 69 65  ring text entrie
61c0: 73 20 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e  s for the column
61d0: 2e 20 20 0a 54 68 65 20 62 75 69 6c 74 2d 69 6e  .  .The built-in
61e0: 20 5b 42 49 4e 41 52 59 5d 20 63 6f 6c 6c 61 74   [BINARY] collat
61f0: 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  ing function is 
6200: 75 73 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e  used by default.
6210: 0a 3c 70 3e 0a 54 68 65 20 44 45 46 41 55 4c 54  .<p>.The DEFAULT
6220: 20 63 6f 6e 73 74 72 61 69 6e 74 20 73 70 65 63   constraint spec
6230: 69 66 69 65 73 20 61 20 64 65 66 61 75 6c 74 20  ifies a default 
6240: 76 61 6c 75 65 20 74 6f 20 75 73 65 20 77 68 65  value to use whe
6250: 6e 20 64 6f 69 6e 67 20 61 6e 20 5b 49 4e 53 45  n doing an [INSE
6260: 52 54 5d 2e 0a 54 68 65 20 76 61 6c 75 65 20 6d  RT]..The value m
6270: 61 79 20 62 65 20 4e 55 4c 4c 2c 20 61 20 73 74  ay be NULL, a st
6280: 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 6f 72  ring constant or
6290: 20 61 20 6e 75 6d 62 65 72 2e 0a 54 68 65 20 64   a number..The d
62a0: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6d 61 79  efault value may
62b0: 20 61 6c 73 6f 20 62 65 20 6f 6e 65 20 6f 66 20   also be one of 
62c0: 74 68 65 20 73 70 65 63 69 61 6c 20 63 61 73 65  the special case
62d0: 2d 69 6e 64 65 70 65 6e 64 61 6e 74 0a 6b 65 79  -independant.key
62e0: 77 6f 72 64 73 20 43 55 52 52 45 4e 54 5f 54 49  words CURRENT_TI
62f0: 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54 45  ME, CURRENT_DATE
6300: 20 6f 72 20 43 55 52 52 45 4e 54 5f 54 49 4d 45   or CURRENT_TIME
6310: 53 54 41 4d 50 2e 20 49 66 20 74 68 65 20 76 61  STAMP. If the va
6320: 6c 75 65 20 69 73 0a 4e 55 4c 4c 2c 20 61 20 73  lue is.NULL, a s
6330: 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 6f  tring constant o
6340: 72 20 6e 75 6d 62 65 72 2c 20 69 74 20 69 73 20  r number, it is 
6350: 6c 69 74 65 72 61 6c 6c 79 20 69 6e 73 65 72 74  literally insert
6360: 65 64 20 69 6e 74 6f 20 74 68 65 20 63 6f 6c 75  ed into the colu
6370: 6d 6e 0a 77 68 65 6e 65 76 65 72 20 61 6e 20 49  mn.whenever an I
6380: 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20  NSERT statement 
6390: 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 70  that does not sp
63a0: 65 63 69 66 79 20 61 20 76 61 6c 75 65 20 66 6f  ecify a value fo
63b0: 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69 73 0a  r the column is.
63c0: 65 78 65 63 75 74 65 64 2e 20 49 66 20 74 68 65  executed. If the
63d0: 20 76 61 6c 75 65 20 69 73 20 43 55 52 52 45 4e   value is CURREN
63e0: 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f  T_TIME, CURRENT_
63f0: 44 41 54 45 20 6f 72 20 43 55 52 52 45 4e 54 5f  DATE or CURRENT_
6400: 54 49 4d 45 53 54 41 4d 50 2c 20 74 68 65 6e 0a  TIMESTAMP, then.
6410: 74 68 65 20 63 75 72 72 65 6e 74 20 55 54 43 20  the current UTC 
6420: 64 61 74 65 20 61 6e 64 2f 6f 72 20 74 69 6d 65  date and/or time
6430: 20 69 73 20 69 6e 73 65 72 74 65 64 20 69 6e 74   is inserted int
6440: 6f 20 74 68 65 20 63 6f 6c 75 6d 6e 73 2e 20 46  o the columns. F
6450: 6f 72 0a 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c  or.CURRENT_TIME,
6460: 20 74 68 65 20 66 6f 72 6d 61 74 20 69 73 20 48   the format is H
6470: 48 3a 4d 4d 3a 53 53 2e 20 46 6f 72 20 43 55 52  H:MM:SS. For CUR
6480: 52 45 4e 54 5f 44 41 54 45 2c 20 59 59 59 59 2d  RENT_DATE, YYYY-
6490: 4d 4d 2d 44 44 2e 20 54 68 65 20 66 6f 72 6d 61  MM-DD. The forma
64a0: 74 0a 66 6f 72 20 43 55 52 52 45 4e 54 5f 54 49  t.for CURRENT_TI
64b0: 4d 45 53 54 41 4d 50 20 69 73 20 22 59 59 59 59  MESTAMP is "YYYY
64c0: 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 22  -MM-DD HH:MM:SS"
64d0: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 50  ..</p>..<p>The P
64e0: 52 49 4d 41 52 59 20 4b 45 59 20 61 74 74 72 69  RIMARY KEY attri
64f0: 62 75 74 65 20 6e 6f 72 6d 61 6c 6c 79 20 63 72  bute normally cr
6500: 65 61 74 65 73 20 61 20 55 4e 49 51 55 45 20 69  eates a UNIQUE i
6510: 6e 64 65 78 20 6f 6e 0a 74 68 65 20 63 6f 6c 75  ndex on.the colu
6520: 6d 6e 20 6f 72 20 63 6f 6c 75 6d 6e 73 20 74 68  mn or columns th
6530: 61 74 20 61 72 65 20 73 70 65 63 69 66 69 65 64  at are specified
6540: 20 61 73 20 74 68 65 20 50 52 49 4d 41 52 59 20   as the PRIMARY 
6550: 4b 45 59 2e 20 20 54 68 65 20 6f 6e 6c 79 0a 65  KEY.  The only.e
6560: 78 63 65 70 74 69 6f 6e 20 74 6f 20 74 68 69 73  xception to this
6570: 20 62 65 68 61 76 69 6f 72 20 69 73 20 73 70 65   behavior is spe
6580: 63 69 61 6c 20 5b 49 4e 54 45 47 45 52 20 50 52  cial [INTEGER PR
6590: 49 4d 41 52 59 20 4b 45 59 5d 20 63 6f 6c 75 6d  IMARY KEY] colum
65a0: 6e 2c 0a 64 65 73 63 72 69 62 65 64 20 62 65 6c  n,.described bel
65b0: 6f 77 2e 0a 41 63 63 6f 72 64 69 6e 67 20 74 6f  ow..According to
65c0: 20 74 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72   the SQL standar
65d0: 64 2c 20 50 52 49 4d 41 52 59 20 4b 45 59 20 73  d, PRIMARY KEY s
65e0: 68 6f 75 6c 64 20 69 6d 70 6c 79 20 4e 4f 54 20  hould imply NOT 
65f0: 4e 55 4c 4c 2e 0a 55 6e 66 6f 72 74 75 6e 61 74  NULL..Unfortunat
6600: 65 6c 79 2c 20 64 75 65 20 74 6f 20 61 20 6c 6f  ely, due to a lo
6610: 6e 67 2d 73 74 61 6e 64 69 6e 67 20 63 6f 64 69  ng-standing codi
6620: 6e 67 20 6f 76 65 72 73 69 67 68 74 2c 20 74 68  ng oversight, th
6630: 69 73 20 69 73 20 6e 6f 74 20 0a 74 68 65 20 63  is is not .the c
6640: 61 73 65 20 69 6e 20 53 51 4c 69 74 65 2e 20 20  ase in SQLite.  
6650: 53 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20 4e 55  SQLite allows NU
6660: 4c 4c 20 76 61 6c 75 65 73 0a 69 6e 20 61 20 50  LL values.in a P
6670: 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d  RIMARY KEY colum
6680: 6e 2e 20 20 57 65 20 63 6f 75 6c 64 20 63 68 61  n.  We could cha
6690: 6e 67 65 20 53 51 4c 69 74 65 20 74 6f 20 63 6f  nge SQLite to co
66a0: 6e 66 6f 72 6d 20 74 6f 20 74 68 65 0a 73 74 61  nform to the.sta
66b0: 6e 64 61 72 64 20 28 61 6e 64 20 77 65 20 6d 69  ndard (and we mi
66c0: 67 68 74 20 64 6f 20 73 6f 20 69 6e 20 74 68 65  ght do so in the
66d0: 20 66 75 74 75 72 65 29 2c 20 62 75 74 20 62 79   future), but by
66e0: 20 74 68 65 20 74 69 6d 65 20 74 68 65 0a 6f 76   the time the.ov
66f0: 65 72 73 69 67 68 74 20 77 61 73 20 64 69 73 63  ersight was disc
6700: 6f 76 65 72 65 64 2c 20 53 51 4c 69 74 65 20 77  overed, SQLite w
6710: 61 73 20 69 6e 20 73 75 63 68 20 77 69 64 65 20  as in such wide 
6720: 75 73 65 20 74 68 61 74 20 77 65 20 66 65 61 72  use that we fear
6730: 65 64 0a 62 72 65 61 6b 69 6e 67 20 6c 65 67 61  ed.breaking lega
6740: 63 79 20 63 6f 64 65 20 69 66 20 77 65 20 66 69  cy code if we fi
6750: 78 65 64 20 74 68 65 20 70 72 6f 62 6c 65 6d 2e  xed the problem.
6760: 20 20 53 6f 20 66 6f 72 20 6e 6f 77 20 77 65 20    So for now we 
6770: 68 61 76 65 0a 63 68 6f 73 65 6e 20 74 6f 20 63  have.chosen to c
6780: 6f 6e 74 69 6e 75 65 20 61 6c 6c 6f 77 69 6e 67  ontinue allowing
6790: 20 4e 55 4c 4c 73 20 69 6e 20 50 52 49 4d 41 52   NULLs in PRIMAR
67a0: 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 73 2e 0a 44  Y KEY columns..D
67b0: 65 76 65 6c 6f 70 65 72 73 20 73 68 6f 75 6c 64  evelopers should
67c0: 20 62 65 20 61 77 61 72 65 2c 20 68 6f 77 65 76   be aware, howev
67d0: 65 72 2c 20 74 68 61 74 20 77 65 20 6d 61 79 20  er, that we may 
67e0: 63 68 61 6e 67 65 20 53 51 4c 69 74 65 20 74 6f  change SQLite to
67f0: 0a 63 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 65 20  .conform to the 
6800: 53 51 4c 20 73 74 61 6e 64 61 72 64 20 69 6e 20  SQL standard in 
6810: 66 75 74 75 72 65 20 61 6e 64 20 73 68 6f 75 6c  future and shoul
6820: 64 20 64 65 73 69 67 6e 20 6e 65 77 20 70 72 6f  d design new pro
6830: 67 72 61 6d 73 0a 61 63 63 6f 72 64 69 6e 67 6c  grams.accordingl
6840: 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53 51 4c 69 74  y.</p>..<p>SQLit
6850: 65 20 75 73 65 73 20 5b 64 79 6e 61 6d 69 63 20  e uses [dynamic 
6860: 74 79 70 69 6e 67 5d 20 69 6e 73 74 65 61 64 20  typing] instead 
6870: 6f 66 20 73 74 61 74 69 63 20 74 79 70 69 6e 67  of static typing
6880: 2e 20 20 45 78 63 65 70 74 20 66 6f 72 20 74 68  .  Except for th
6890: 65 0a 73 70 65 63 69 61 6c 20 63 61 73 65 20 6f  e.special case o
68a0: 66 20 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41  f [INTEGER PRIMA
68b0: 52 59 20 4b 45 59 5d 2c 20 53 51 4c 69 74 65 20  RY KEY], SQLite 
68c0: 77 69 6c 6c 20 61 6c 6c 6f 77 20 76 61 6c 75 65  will allow value
68d0: 73 20 6f 66 20 61 6e 79 0a 74 79 70 65 20 74 6f  s of any.type to
68e0: 20 62 65 20 73 74 6f 72 65 64 20 69 6e 20 61 6e   be stored in an
68f0: 79 20 63 6f 6c 75 6d 6e 20 72 65 67 61 72 64 6c  y column regardl
6900: 65 73 73 20 6f 66 20 74 68 65 20 64 65 63 6c 61  ess of the decla
6910: 72 65 64 20 64 61 74 61 74 79 70 65 20 6f 66 0a  red datatype of.
6920: 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 54 68  that column.  Th
6930: 65 20 64 65 63 6c 61 72 65 64 20 64 61 74 61 74  e declared datat
6940: 79 70 65 20 69 73 20 61 20 5b 61 66 66 69 6e 69  ype is a [affini
6950: 74 79 20 7c 20 74 79 70 65 20 61 66 66 69 6e 69  ty | type affini
6960: 74 79 5d 20 74 68 61 74 0a 53 51 4c 69 74 65 20  ty] that.SQLite 
6970: 61 74 74 65 6d 70 74 73 20 74 6f 20 63 6f 6d 70  attempts to comp
6980: 6c 79 20 77 69 74 68 2c 20 62 75 74 20 74 68 65  ly with, but the
6990: 20 6f 70 65 72 61 74 69 6f 6e 20 77 69 6c 6c 20   operation will 
69a0: 70 72 6f 63 65 65 64 20 65 76 65 6e 20 69 66 0a  proceed even if.
69b0: 63 6f 6d 70 6c 69 61 6e 63 65 20 69 73 20 6e 6f  compliance is no
69c0: 74 20 70 6f 73 73 69 62 6c 65 2e 3c 2f 70 3e 0a  t possible.</p>.
69d0: 0a 3c 70 3e 49 66 20 74 68 65 20 22 54 45 4d 50  .<p>If the "TEMP
69e0: 22 20 6f 72 20 22 54 45 4d 50 4f 52 41 52 59 22  " or "TEMPORARY"
69f0: 20 6b 65 79 77 6f 72 64 20 6f 63 63 75 72 73 20   keyword occurs 
6a00: 69 6e 20 62 65 74 77 65 65 6e 20 22 43 52 45 41  in between "CREA
6a10: 54 45 22 0a 61 6e 64 20 22 54 41 42 4c 45 22 20  TE".and "TABLE" 
6a20: 74 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20 74  then the table t
6a30: 68 61 74 20 69 73 20 63 72 65 61 74 65 64 20 69  hat is created i
6a40: 73 20 6f 6e 6c 79 20 76 69 73 69 62 6c 65 0a 77  s only visible.w
6a50: 69 74 68 69 6e 20 74 68 61 74 20 73 61 6d 65 20  ithin that same 
6a60: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
6a70: 69 6f 6e 0a 61 6e 64 20 69 73 20 61 75 74 6f 6d  ion.and is autom
6a80: 61 74 69 63 61 6c 6c 79 20 64 65 6c 65 74 65 64  atically deleted
6a90: 20 77 68 65 6e 0a 74 68 65 20 64 61 74 61 62 61   when.the databa
6aa0: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73  se connection is
6ab0: 20 63 6c 6f 73 65 64 2e 20 20 41 6e 79 20 69 6e   closed.  Any in
6ac0: 64 69 63 65 73 20 63 72 65 61 74 65 64 20 6f 6e  dices created on
6ad0: 20 61 20 74 65 6d 70 6f 72 61 72 79 20 74 61 62   a temporary tab
6ae0: 6c 65 0a 61 72 65 20 61 6c 73 6f 20 74 65 6d 70  le.are also temp
6af0: 6f 72 61 72 79 2e 20 20 54 65 6d 70 6f 72 61 72  orary.  Temporar
6b00: 79 20 74 61 62 6c 65 73 20 61 6e 64 20 69 6e 64  y tables and ind
6b10: 69 63 65 73 20 61 72 65 20 73 74 6f 72 65 64 20  ices are stored 
6b20: 69 6e 20 61 0a 73 65 70 61 72 61 74 65 20 66 69  in a.separate fi
6b30: 6c 65 20 64 69 73 74 69 6e 63 74 20 66 72 6f 6d  le distinct from
6b40: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
6b50: 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70  se file.</p>..<p
6b60: 3e 20 49 66 20 61 20 26 6c 74 3b 64 61 74 61 62  > If a &lt;datab
6b70: 61 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20  ase-name&gt; is 
6b80: 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20  specified, then 
6b90: 74 68 65 20 74 61 62 6c 65 20 69 73 20 63 72 65  the table is cre
6ba0: 61 74 65 64 20 69 6e 20 0a 74 68 65 20 6e 61 6d  ated in .the nam
6bb0: 65 64 20 64 61 74 61 62 61 73 65 2e 20 49 74 20  ed database. It 
6bc0: 69 73 20 61 6e 20 65 72 72 6f 72 20 74 6f 20 73  is an error to s
6bd0: 70 65 63 69 66 79 20 62 6f 74 68 20 61 20 26 6c  pecify both a &l
6be0: 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26  t;database-name&
6bf0: 67 74 3b 0a 61 6e 64 20 74 68 65 20 54 45 4d 50  gt;.and the TEMP
6c00: 20 6b 65 79 77 6f 72 64 2c 20 75 6e 6c 65 73 73   keyword, unless
6c10: 20 74 68 65 20 26 6c 74 3b 64 61 74 61 62 61 73   the &lt;databas
6c20: 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 22 74  e-name&gt; is "t
6c30: 65 6d 70 22 2e 20 49 66 20 6e 6f 0a 64 61 74 61  emp". If no.data
6c40: 62 61 73 65 20 6e 61 6d 65 20 69 73 20 73 70 65  base name is spe
6c50: 63 69 66 69 65 64 2c 20 61 6e 64 20 74 68 65 20  cified, and the 
6c60: 54 45 4d 50 20 6b 65 79 77 6f 72 64 20 69 73 20  TEMP keyword is 
6c70: 6e 6f 74 20 70 72 65 73 65 6e 74 2c 0a 74 68 65  not present,.the
6c80: 20 74 61 62 6c 65 20 69 73 20 63 72 65 61 74 65   table is create
6c90: 64 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61  d in the main da
6ca0: 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  tabase.</p>..<p>
6cb0: 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 5b 63 6f  The optional [co
6cc0: 6e 66 6c 69 63 74 20 63 6c 61 75 73 65 5d 20 66  nflict clause] f
6cd0: 6f 6c 6c 6f 77 69 6e 67 20 65 61 63 68 20 63 6f  ollowing each co
6ce0: 6e 73 74 72 61 69 6e 74 0a 61 6c 6c 6f 77 73 20  nstraint.allows 
6cf0: 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f  the specificatio
6d00: 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74  n of an alternat
6d10: 69 76 65 20 64 65 66 61 75 6c 74 0a 63 6f 6e 73  ive default.cons
6d20: 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20  traint conflict 
6d30: 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
6d40: 69 74 68 6d 20 66 6f 72 20 74 68 61 74 20 63 6f  ithm for that co
6d50: 6e 73 74 72 61 69 6e 74 2e 0a 54 68 65 20 64 65  nstraint..The de
6d60: 66 61 75 6c 74 20 69 73 20 61 62 6f 72 74 20 41  fault is abort A
6d70: 42 4f 52 54 2e 20 20 44 69 66 66 65 72 65 6e 74  BORT.  Different
6d80: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69 74   constraints wit
6d90: 68 69 6e 20 74 68 65 20 73 61 6d 65 0a 74 61 62  hin the same.tab
6da0: 6c 65 20 6d 61 79 20 68 61 76 65 20 64 69 66 66  le may have diff
6db0: 65 72 65 6e 74 20 64 65 66 61 75 6c 74 20 63 6f  erent default co
6dc0: 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
6dd0: 6e 20 61 6c 67 6f 72 69 74 68 6d 73 2e 0a 49 66  n algorithms..If
6de0: 20 61 6e 20 5b 49 4e 53 45 52 54 5d 20 6f 72 20   an [INSERT] or 
6df0: 5b 55 50 44 41 54 45 5d 20 73 74 61 74 65 6d 65  [UPDATE] stateme
6e00: 6e 74 20 73 70 65 63 69 66 69 65 73 20 61 20 64  nt specifies a d
6e10: 69 66 66 65 72 65 6e 74 20 63 6f 6e 66 6c 69 63  ifferent conflic
6e20: 74 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t.resolution alg
6e30: 6f 72 69 74 68 6d 2c 20 74 68 65 6e 20 74 68 61  orithm, then tha
6e40: 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  t algorithm is u
6e50: 73 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 20  sed in place of 
6e60: 74 68 65 0a 64 65 66 61 75 6c 74 20 61 6c 67 6f  the.default algo
6e70: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
6e80: 69 6e 20 74 68 65 20 43 52 45 41 54 45 20 54 41  in the CREATE TA
6e90: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0a 53  BLE statement..S
6ea0: 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74  ee the section t
6eb0: 69 74 6c 65 64 0a 5b 4f 4e 20 43 4f 4e 46 4c 49  itled.[ON CONFLI
6ec0: 43 54 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e  CT] for addition
6ed0: 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c  al information.<
6ee0: 2f 70 3e 0a 0a 3c 70 3e 43 48 45 43 4b 20 63 6f  /p>..<p>CHECK co
6ef0: 6e 73 74 72 61 69 6e 74 73 20 61 72 65 20 73 75  nstraints are su
6f00: 70 70 6f 72 74 65 64 20 61 73 20 6f 66 20 5b 76  pported as of [v
6f10: 65 72 73 69 6f 6e 20 33 2e 33 2e 30 5d 2e 20 20  ersion 3.3.0].  
6f20: 50 72 69 6f 72 0a 74 6f 20 76 65 72 73 69 6f 6e  Prior.to version
6f30: 20 33 2e 33 2e 30 2c 20 43 48 45 43 4b 20 63 6f   3.3.0, CHECK co
6f40: 6e 73 74 72 61 69 6e 74 73 20 77 65 72 65 20 70  nstraints were p
6f50: 61 72 73 65 64 20 62 75 74 20 6e 6f 74 20 65 6e  arsed but not en
6f60: 66 6f 72 63 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  forced.</p>..<p>
6f70: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  The number of co
6f80: 6c 75 6d 6e 73 20 69 6e 20 61 20 74 61 62 6c 65  lumns in a table
6f90: 20 69 73 20 6c 69 6d 69 74 65 64 20 62 79 20 74   is limited by t
6fa0: 68 65 0a 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43  he.[SQLITE_MAX_C
6fb0: 4f 4c 55 4d 4e 5d 20 63 6f 6d 70 69 6c 65 2d 74  OLUMN] compile-t
6fc0: 69 6d 65 20 70 61 72 61 6d 65 74 65 72 2e 0a 41  ime parameter..A
6fd0: 20 73 69 6e 67 6c 65 20 72 6f 77 20 6f 66 20 61   single row of a
6fe0: 20 74 61 62 6c 65 20 63 61 6e 6e 6f 74 20 73 74   table cannot st
6ff0: 6f 72 65 20 6d 6f 72 65 20 74 68 61 6e 0a 5b 53  ore more than.[S
7000: 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e 47 54 48  QLITE_MAX_LENGTH
7010: 5d 20 62 79 74 65 73 20 6f 66 20 64 61 74 61 2e  ] bytes of data.
7020: 0a 42 6f 74 68 20 6f 66 20 74 68 65 73 65 20 6c  .Both of these l
7030: 69 6d 69 74 73 20 63 61 6e 20 62 65 20 6c 6f 77  imits can be low
7040: 65 72 65 64 20 61 74 20 72 75 6e 74 69 6d 65 20  ered at runtime 
7050: 75 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74  using the.[sqlit
7060: 65 33 5f 6c 69 6d 69 74 28 29 5d 20 43 2f 43 2b  e3_limit()] C/C+
7070: 2b 20 69 6e 74 65 72 66 61 63 65 2e 3c 2f 70 3e  + interface.</p>
7080: 0a 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45  ...<p>The CREATE
7090: 20 54 41 42 4c 45 20 41 53 20 66 6f 72 6d 20 64   TABLE AS form d
70a0: 65 66 69 6e 65 73 20 74 68 65 20 74 61 62 6c 65  efines the table
70b0: 20 74 6f 20 62 65 0a 74 68 65 20 72 65 73 75 6c   to be.the resul
70c0: 74 20 73 65 74 20 6f 66 20 61 20 71 75 65 72 79  t set of a query
70d0: 2e 20 20 54 68 65 20 6e 61 6d 65 73 20 6f 66 20  .  The names of 
70e0: 74 68 65 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e  the table column
70f0: 73 20 61 72 65 0a 74 68 65 20 6e 61 6d 65 73 20  s are.the names 
7100: 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69  of the columns i
7110: 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70  n the result.</p
7120: 3e 0a 0a 3c 70 3e 54 68 65 20 74 65 78 74 0a 6f  >..<p>The text.o
7130: 66 20 65 61 63 68 20 43 52 45 41 54 45 20 54 41  f each CREATE TA
7140: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73  BLE statement is
7150: 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 3c   stored in the <
7160: 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c  b>sqlite_master<
7170: 2f 62 3e 0a 74 61 62 6c 65 2e 20 20 45 76 65 72  /b>.table.  Ever
7180: 79 20 74 69 6d 65 20 74 68 65 20 64 61 74 61 62  y time the datab
7190: 61 73 65 20 69 73 20 6f 70 65 6e 65 64 2c 20 61  ase is opened, a
71a0: 6c 6c 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  ll CREATE TABLE 
71b0: 73 74 61 74 65 6d 65 6e 74 73 0a 61 72 65 20 72  statements.are r
71c0: 65 61 64 20 66 72 6f 6d 20 74 68 65 20 3c 62 3e  ead from the <b>
71d0: 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62  sqlite_master</b
71e0: 3e 20 74 61 62 6c 65 20 61 6e 64 20 75 73 65 64  > table and used
71f0: 20 74 6f 20 72 65 67 65 6e 65 72 61 74 65 0a 53   to regenerate.S
7200: 51 4c 69 74 65 27 73 20 69 6e 74 65 72 6e 61 6c  QLite's internal
7210: 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20   representation 
7220: 6f 66 20 74 68 65 20 74 61 62 6c 65 20 6c 61 79  of the table lay
7230: 6f 75 74 2e 0a 49 66 20 74 68 65 20 6f 72 69 67  out..If the orig
7240: 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64 20 77 61 73  inal command was
7250: 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45 20   a CREATE TABLE 
7260: 41 53 20 74 68 65 6e 20 74 68 65 6e 20 61 6e 20  AS then then an 
7270: 65 71 75 69 76 61 6c 65 6e 74 0a 43 52 45 41 54  equivalent.CREAT
7280: 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  E TABLE statemen
7290: 74 20 69 73 20 73 79 6e 74 68 65 73 69 7a 65 64  t is synthesized
72a0: 20 61 6e 64 20 73 74 6f 72 65 20 69 6e 20 3c 62   and store in <b
72b0: 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f  >sqlite_master</
72c0: 62 3e 0a 69 6e 20 70 6c 61 63 65 20 6f 66 20 74  b>.in place of t
72d0: 68 65 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d  he original comm
72e0: 61 6e 64 2e 0a 54 68 65 20 74 65 78 74 20 6f 66  and..The text of
72f0: 20 43 52 45 41 54 45 20 54 45 4d 50 4f 52 41 52   CREATE TEMPORAR
7300: 59 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  Y TABLE statemen
7310: 74 73 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e  ts are stored in
7320: 20 74 68 65 0a 3c 62 3e 73 71 6c 69 74 65 5f 74   the.<b>sqlite_t
7330: 65 6d 70 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74  emp_master</b> t
7340: 61 62 6c 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49  able..</p>..<p>I
7350: 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20 49  f the optional I
7360: 46 20 4e 4f 54 20 45 58 49 53 54 53 20 63 6c 61  F NOT EXISTS cla
7370: 75 73 65 20 69 73 20 70 72 65 73 65 6e 74 20 61  use is present a
7380: 6e 64 20 61 6e 6f 74 68 65 72 20 74 61 62 6c 65  nd another table
7390: 0a 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e  .with the same n
73a0: 61 6d 65 20 61 6c 65 61 64 79 20 65 78 69 73 74  ame aleady exist
73b0: 73 2c 20 74 68 65 6e 20 74 68 69 73 20 63 6f 6d  s, then this com
73c0: 6d 61 6e 64 20 62 65 63 6f 6d 65 73 20 61 20 6e  mand becomes a n
73d0: 6f 2d 6f 70 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 61  o-op.</p>..<p>Ta
73e0: 62 6c 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64  bles are removed
73f0: 20 75 73 69 6e 67 20 74 68 65 20 3c 61 20 68 72   using the <a hr
7400: 65 66 3d 22 6c 61 6e 67 5f 64 72 6f 70 74 61 62  ef="lang_droptab
7410: 6c 65 2e 68 74 6d 6c 22 3e 44 52 4f 50 20 54 41  le.html">DROP TA
7420: 42 4c 45 3c 2f 61 3e 20 0a 73 74 61 74 65 6d 65  BLE</a> .stateme
7430: 6e 74 2e 20 20 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  nt.  </p>..<tcl>
7440: 68 64 5f 66 72 61 67 6d 65 6e 74 20 72 6f 77 69  hd_fragment rowi
7450: 64 20 7b 49 4e 54 45 47 45 52 20 50 52 49 4d 41  d {INTEGER PRIMA
7460: 52 59 20 4b 45 59 7d 20 52 4f 57 49 44 20 72 6f  RY KEY} ROWID ro
7470: 77 69 64 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 52 4f  wid</tcl>.<h3>RO
7480: 57 49 44 73 20 61 6e 64 20 74 68 65 20 49 4e 54  WIDs and the INT
7490: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
74a0: 3c 2f 68 33 3e 0a 0a 3c 70 3e 45 76 65 72 79 20  </h3>..<p>Every 
74b0: 72 6f 77 20 6f 66 20 65 76 65 72 79 20 53 51 4c  row of every SQL
74c0: 69 74 65 20 74 61 62 6c 65 20 68 61 73 20 61 20  ite table has a 
74d0: 36 34 2d 62 69 74 20 73 69 67 6e 65 64 20 69 6e  64-bit signed in
74e0: 74 65 67 65 72 20 6b 65 79 20 0a 74 68 61 74 20  teger key .that 
74f0: 69 73 20 75 6e 69 71 75 65 20 77 69 74 68 69 6e  is unique within
7500: 20 74 68 65 20 73 61 6d 65 20 74 61 62 6c 65 2e   the same table.
7510: 0a 54 68 69 73 20 69 6e 74 65 67 65 72 20 69 73  .This integer is
7520: 20 75 73 75 61 6c 6c 79 20 63 61 6c 6c 65 64 20   usually called 
7530: 74 68 65 20 22 72 6f 77 69 64 22 2e 20 20 54 68  the "rowid".  Th
7540: 65 20 72 6f 77 69 64 20 69 73 20 74 68 65 20 61  e rowid is the a
7550: 63 74 75 61 6c 20 6b 65 79 20 75 73 65 64 0a 69  ctual key used.i
7560: 6e 20 74 68 65 20 42 2d 54 72 65 65 20 74 68 61  n the B-Tree tha
7570: 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20  t implements an 
7580: 53 51 4c 69 74 65 20 74 61 62 6c 65 2e 20 20 52  SQLite table.  R
7590: 6f 77 73 20 61 72 65 20 73 74 6f 72 65 64 20 69  ows are stored i
75a0: 6e 0a 72 6f 77 69 64 20 6f 72 64 65 72 2e 20 54  n.rowid order. T
75b0: 68 65 0a 72 6f 77 69 64 20 76 61 6c 75 65 20 63  he.rowid value c
75c0: 61 6e 20 62 65 20 61 63 63 65 73 73 65 64 20 75  an be accessed u
75d0: 73 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 20  sing one of the 
75e0: 73 70 65 63 69 61 6c 20 6e 61 6d 65 73 0a 22 3c  special names."<
75f0: 62 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c 20 22 3c  b>ROWID</b>", "<
7600: 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72 20 22  b>OID</b>", or "
7610: 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e 22 2e  <b>_ROWID_</b>".
7620: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 49 66 20 61 20 63  </p>..<p>.If a c
7630: 6f 6c 75 6d 6e 20 69 73 20 64 65 63 6c 61 72 65  olumn is declare
7640: 64 20 74 6f 20 62 65 20 61 6e 20 49 4e 54 45 47  d to be an INTEG
7650: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20  ER PRIMARY KEY, 
7660: 74 68 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e  then that column
7670: 20 69 73 20 6e 6f 74 0a 61 20 22 72 65 61 6c 22   is not.a "real"
7680: 20 64 61 74 61 62 61 73 65 20 63 6f 6c 75 6d 6e   database column
7690: 20 62 75 74 20 69 6e 73 74 65 61 64 20 62 65 63   but instead bec
76a0: 6f 6d 65 73 0a 61 6e 20 61 6c 69 61 73 20 66 6f  omes.an alias fo
76b0: 72 20 74 68 65 20 72 6f 77 69 64 2e 20 20 55 6e  r the rowid.  Un
76c0: 6c 69 6b 65 20 6e 6f 72 6d 61 6c 20 53 51 4c 69  like normal SQLi
76d0: 74 65 20 63 6f 6c 75 6d 6e 73 2c 20 74 68 65 20  te columns, the 
76e0: 72 6f 77 69 64 0a 6d 75 73 74 20 62 65 20 61 20  rowid.must be a 
76f0: 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 74 65 67 65 72  non-NULL integer
7700: 20 76 61 6c 75 65 2e 20 20 54 68 65 20 72 6f 77   value.  The row
7710: 69 64 20 69 73 20 6e 6f 74 20 61 62 6c 65 20 74  id is not able t
7720: 6f 20 68 6f 6c 64 0a 66 6c 6f 61 74 69 6e 67 20  o hold.floating 
7730: 70 6f 69 6e 74 20 76 61 6c 75 65 73 2c 20 73 74  point values, st
7740: 72 69 6e 67 73 2c 20 42 4c 4f 42 73 2c 20 6f 72  rings, BLOBs, or
7750: 20 4e 55 4c 4c 73 2e 3c 2f 70 3e 0a 0a 3c 62 6c   NULLs.</p>..<bl
7760: 6f 63 6b 71 75 6f 74 65 3e 3c 69 3e 0a 41 6e 20  ockquote><i>.An 
7770: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
7780: 4b 45 59 20 63 6f 6c 75 6d 6e 20 69 73 20 61 6e  KEY column is an
7790: 20 61 6c 69 61 73 20 66 6f 72 20 74 68 65 20 36   alias for the 6
77a0: 34 2d 62 69 74 20 73 69 67 6e 65 64 20 69 6e 74  4-bit signed int
77b0: 65 67 65 72 20 72 6f 77 69 64 2e 0a 3c 2f 69 3e  eger rowid..</i>
77c0: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c  </blockquote>..<
77d0: 70 3e 41 6e 20 49 4e 54 45 47 45 52 20 50 52 49  p>An INTEGER PRI
77e0: 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20  MARY KEY column 
77f0: 63 61 6e 20 61 6c 73 6f 20 69 6e 63 6c 75 64 65  can also include
7800: 20 74 68 65 0a 6b 65 79 77 6f 72 64 20 5b 41 55   the.keyword [AU
7810: 54 4f 49 4e 43 52 45 4d 45 4e 54 5d 2e 20 20 54  TOINCREMENT].  T
7820: 68 65 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e  he [AUTOINCREMEN
7830: 54 5d 20 6b 65 79 77 6f 72 64 20 6d 6f 64 69 66  T] keyword modif
7840: 69 65 64 20 74 68 65 20 77 61 79 0a 74 68 61 74  ied the way.that
7850: 20 42 2d 54 72 65 65 20 6b 65 79 73 20 61 72 65   B-Tree keys are
7860: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 67   automatically g
7870: 65 6e 65 72 61 74 65 64 2e 20 20 41 64 64 69 74  enerated.  Addit
7880: 69 6f 6e 61 6c 20 64 65 74 61 69 6c 0a 6f 6e 20  ional detail.on 
7890: 61 75 74 6f 6d 61 74 69 63 20 42 2d 54 72 65 65  automatic B-Tree
78a0: 20 6b 65 79 20 67 65 6e 65 72 61 74 69 6f 6e 20   key generation 
78b0: 69 73 20 61 76 61 69 6c 61 62 6c 65 0a 3c 61 20  is available.<a 
78c0: 68 72 65 66 3d 22 61 75 74 6f 69 6e 63 2e 68 74  href="autoinc.ht
78d0: 6d 6c 22 3e 73 65 70 61 72 61 74 65 6c 79 3c 2f  ml">separately</
78e0: 61 3e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  a>.</p>..<p>The 
78f0: 73 70 65 63 69 61 6c 20 62 65 68 61 76 69 6f 72  special behavior
7900: 20 6f 66 20 49 4e 54 45 47 45 52 20 50 52 49 4d   of INTEGER PRIM
7910: 41 52 59 20 4b 45 59 0a 69 73 20 6f 6e 6c 79 20  ARY KEY.is only 
7920: 61 76 61 69 6c 61 62 6c 65 20 69 66 20 74 68 65  available if the
7930: 20 74 79 70 65 20 6e 61 6d 65 20 69 73 20 65 78   type name is ex
7940: 61 63 74 6c 79 20 22 49 4e 54 45 47 45 52 22 20  actly "INTEGER" 
7950: 28 69 6e 20 61 6e 79 20 6d 69 78 74 75 72 65 0a  (in any mixture.
7960: 6f 66 20 75 70 70 65 72 20 61 6e 64 20 6c 6f 77  of upper and low
7970: 65 72 20 63 61 73 65 2e 29 20 20 4f 74 68 65 72  er case.)  Other
7980: 20 69 6e 74 65 67 65 72 20 74 79 70 65 20 6e 61   integer type na
7990: 6d 65 73 0a 6c 69 6b 65 20 22 49 4e 54 22 20 6f  mes.like "INT" o
79a0: 72 20 22 42 49 47 49 4e 54 22 20 6f 72 20 22 53  r "BIGINT" or "S
79b0: 48 4f 52 54 20 49 4e 54 45 47 45 52 22 20 6f 72  HORT INTEGER" or
79c0: 20 22 55 4e 53 49 47 4e 45 44 20 49 4e 54 45 47   "UNSIGNED INTEG
79d0: 45 52 22 0a 63 61 75 73 65 73 20 74 68 65 20 70  ER".causes the p
79e0: 72 69 6d 61 72 79 20 6b 65 79 20 63 6f 6c 75 6d  rimary key colum
79f0: 6e 20 74 6f 20 62 65 68 61 76 65 20 61 73 20 61  n to behave as a
7a00: 6e 20 6f 72 64 69 6e 61 72 79 20 74 61 62 6c 65  n ordinary table
7a10: 20 63 6f 6c 75 6d 6e 20 77 69 74 68 0a 69 6e 74   column with.int
7a20: 65 67 65 72 20 5b 61 66 66 69 6e 69 74 79 5d 20  eger [affinity] 
7a30: 61 6e 64 20 61 20 75 6e 69 71 75 65 20 69 6e 64  and a unique ind
7a40: 65 78 2c 20 6e 6f 74 20 61 73 20 61 6e 20 61 6c  ex, not as an al
7a50: 69 61 73 20 66 6f 72 20 74 68 65 20 72 6f 77 69  ias for the rowi
7a60: 64 2e 0a 54 68 65 20 73 70 65 63 69 61 6c 20 62  d..The special b
7a70: 65 68 61 76 69 6f 72 20 6f 66 20 49 4e 54 45 47  ehavior of INTEG
7a80: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 69  ER PRIMARY KEY i
7a90: 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65  s only available
7aa0: 20 69 66 20 74 68 65 0a 70 72 69 6d 61 72 79 20   if the.primary 
7ab0: 6b 65 79 20 69 73 20 61 20 73 69 6e 67 6c 65 20  key is a single 
7ac0: 63 6f 6c 75 6d 6e 2e 20 20 4d 75 6c 74 69 2d 63  column.  Multi-c
7ad0: 6f 6c 75 6d 6e 20 70 72 69 6d 61 72 79 20 6b 65  olumn primary ke
7ae0: 79 73 20 64 6f 20 6e 6f 74 20 62 65 63 6f 6d 65  ys do not become
7af0: 0a 61 6c 69 61 73 65 73 20 66 6f 72 20 74 68 65  .aliases for the
7b00: 20 72 6f 77 69 64 2e 0a 54 68 65 20 41 55 54 4f   rowid..The AUTO
7b10: 49 4e 43 52 45 4d 45 4e 54 20 6b 65 79 77 6f 72  INCREMENT keywor
7b20: 64 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 6f 6e 20  d only works on 
7b30: 61 20 63 6f 6c 75 6d 6e 20 74 68 61 74 20 69 73  a column that is
7b40: 20 61 6e 20 61 6c 69 61 73 0a 66 6f 72 20 74 68   an alias.for th
7b50: 65 20 72 6f 77 69 64 2e 3c 2f 70 3e 0a 0a 3c 70  e rowid.</p>..<p
7b60: 3e 4e 6f 74 65 20 74 68 61 74 20 73 65 61 72 63  >Note that searc
7b70: 68 65 73 20 61 67 61 69 6e 73 74 20 61 20 72 6f  hes against a ro
7b80: 77 69 64 20 61 72 65 20 67 65 6e 65 72 61 6c 6c  wid are generall
7b90: 79 20 61 62 6f 75 74 20 74 77 69 63 65 20 61 73  y about twice as
7ba0: 0a 66 61 73 74 20 61 73 20 73 65 61 72 63 68 65  .fast as searche
7bb0: 73 20 61 67 61 69 6e 73 74 20 61 6e 79 20 6f 74  s against any ot
7bc0: 68 65 72 20 50 52 49 4d 41 52 59 20 4b 45 59 20  her PRIMARY KEY 
7bd0: 6f 72 20 69 6e 64 65 78 65 64 20 76 61 6c 75 65  or indexed value
7be0: 2e 0a 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23  ..</p>...<tcl>.#
7bf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7c00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7c10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7c20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7c30: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
7c40: 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 54 52  ction {CREATE TR
7c50: 49 47 47 45 52 7d 20 63 72 65 61 74 65 74 72 69  IGGER} createtri
7c60: 67 67 65 72 20 7b 7b 43 52 45 41 54 45 20 54 52  gger {{CREATE TR
7c70: 49 47 47 45 52 7d 7d 0a 0a 42 75 62 62 6c 65 44  IGGER}}..BubbleD
7c80: 69 61 67 72 61 6d 20 63 72 65 61 74 65 2d 74 72  iagram create-tr
7c90: 69 67 67 65 72 2d 73 74 6d 74 20 31 0a 3c 2f 74  igger-stmt 1.</t
7ca0: 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41  cl>..<p>The CREA
7cb0: 54 45 20 54 52 49 47 47 45 52 20 73 74 61 74 65  TE TRIGGER state
7cc0: 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20  ment is used to 
7cd0: 61 64 64 20 74 72 69 67 67 65 72 73 20 74 6f 20  add triggers to 
7ce0: 74 68 65 20 0a 64 61 74 61 62 61 73 65 20 73 63  the .database sc
7cf0: 68 65 6d 61 2e 20 54 72 69 67 67 65 72 73 20 61  hema. Triggers a
7d00: 72 65 20 64 61 74 61 62 61 73 65 20 6f 70 65 72  re database oper
7d10: 61 74 69 6f 6e 73 20 28 74 68 65 20 3c 69 3e 74  ations (the <i>t
7d20: 72 69 67 67 65 72 2d 61 63 74 69 6f 6e 3c 2f 69  rigger-action</i
7d30: 3e 29 20 0a 74 68 61 74 20 61 72 65 20 61 75 74  >) .that are aut
7d40: 6f 6d 61 74 69 63 61 6c 6c 79 20 70 65 72 66 6f  omatically perfo
7d50: 72 6d 65 64 20 77 68 65 6e 20 61 20 73 70 65 63  rmed when a spec
7d60: 69 66 69 65 64 20 64 61 74 61 62 61 73 65 20 65  ified database e
7d70: 76 65 6e 74 20 28 74 68 65 0a 3c 69 3e 64 61 74  vent (the.<i>dat
7d80: 61 62 61 73 65 2d 65 76 65 6e 74 3c 2f 69 3e 29  abase-event</i>)
7d90: 20 6f 63 63 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a   occurs.  </p>..
7da0: 3c 70 3e 41 20 74 72 69 67 67 65 72 20 6d 61 79  <p>A trigger may
7db0: 20 62 65 20 73 70 65 63 69 66 69 65 64 20 74 6f   be specified to
7dc0: 20 66 69 72 65 20 77 68 65 6e 65 76 65 72 20 61   fire whenever a
7dd0: 20 5b 44 45 4c 45 54 45 5d 2c 20 5b 49 4e 53 45   [DELETE], [INSE
7de0: 52 54 5d 2c 0a 6f 72 20 5b 55 50 44 41 54 45 5d  RT],.or [UPDATE]
7df0: 20 6f 66 20 61 0a 70 61 72 74 69 63 75 6c 61 72   of a.particular
7e00: 20 64 61 74 61 62 61 73 65 20 74 61 62 6c 65 20   database table 
7e10: 6f 63 63 75 72 73 2c 20 6f 72 20 77 68 65 6e 65  occurs, or whene
7e20: 76 65 72 20 61 6e 20 5b 55 50 44 41 54 45 5d 20  ver an [UPDATE] 
7e30: 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 0a 73  of one or more.s
7e40: 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73  pecified columns
7e50: 20 6f 66 20 61 20 74 61 62 6c 65 20 61 72 65 20   of a table are 
7e60: 75 70 64 61 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  updated.</p>..<p
7e70: 3e 41 74 20 74 68 69 73 20 74 69 6d 65 20 53 51  >At this time SQ
7e80: 4c 69 74 65 20 73 75 70 70 6f 72 74 73 20 6f 6e  Lite supports on
7e90: 6c 79 20 46 4f 52 20 45 41 43 48 20 52 4f 57 20  ly FOR EACH ROW 
7ea0: 74 72 69 67 67 65 72 73 2c 20 6e 6f 74 20 46 4f  triggers, not FO
7eb0: 52 20 45 41 43 48 0a 53 54 41 54 45 4d 45 4e 54  R EACH.STATEMENT
7ec0: 20 74 72 69 67 67 65 72 73 2e 20 48 65 6e 63 65   triggers. Hence
7ed0: 20 65 78 70 6c 69 63 69 74 6c 79 20 73 70 65 63   explicitly spec
7ee0: 69 66 79 69 6e 67 20 46 4f 52 20 45 41 43 48 20  ifying FOR EACH 
7ef0: 52 4f 57 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e  ROW is optional.
7f00: 20 20 46 4f 52 0a 45 41 43 48 20 52 4f 57 20 69    FOR.EACH ROW i
7f10: 6d 70 6c 69 65 73 20 74 68 61 74 20 74 68 65 20  mplies that the 
7f20: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 73  SQL statements s
7f30: 70 65 63 69 66 69 65 64 20 61 73 20 3c 69 3e 74  pecified as <i>t
7f40: 72 69 67 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e  rigger-steps</i>
7f50: 20 0a 6d 61 79 20 62 65 20 65 78 65 63 75 74 65   .may be execute
7f60: 64 20 28 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  d (depending on 
7f70: 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73 65 29  the WHEN clause)
7f80: 20 66 6f 72 20 65 61 63 68 20 64 61 74 61 62 61   for each databa
7f90: 73 65 20 72 6f 77 20 62 65 69 6e 67 0a 69 6e 73  se row being.ins
7fa0: 65 72 74 65 64 2c 20 75 70 64 61 74 65 64 20 6f  erted, updated o
7fb0: 72 20 64 65 6c 65 74 65 64 20 62 79 20 74 68 65  r deleted by the
7fc0: 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 69   statement causi
7fd0: 6e 67 20 74 68 65 20 74 72 69 67 67 65 72 20 74  ng the trigger t
7fe0: 6f 20 66 69 72 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  o fire.</p>..<p>
7ff0: 42 6f 74 68 20 74 68 65 20 57 48 45 4e 20 63 6c  Both the WHEN cl
8000: 61 75 73 65 20 61 6e 64 20 74 68 65 20 3c 69 3e  ause and the <i>
8010: 74 72 69 67 67 65 72 2d 73 74 65 70 73 3c 2f 69  trigger-steps</i
8020: 3e 20 6d 61 79 20 61 63 63 65 73 73 20 65 6c 65  > may access ele
8030: 6d 65 6e 74 73 20 6f 66 20 0a 74 68 65 20 72 6f  ments of .the ro
8040: 77 20 62 65 69 6e 67 20 69 6e 73 65 72 74 65 64  w being inserted
8050: 2c 20 64 65 6c 65 74 65 64 20 6f 72 20 75 70 64  , deleted or upd
8060: 61 74 65 64 20 75 73 69 6e 67 20 72 65 66 65 72  ated using refer
8070: 65 6e 63 65 73 20 6f 66 20 74 68 65 20 66 6f 72  ences of the for
8080: 6d 20 0a 22 4e 45 57 2e 3c 69 3e 63 6f 6c 75 6d  m ."NEW.<i>colum
8090: 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 20 61 6e 64 20  n-name</i>" and 
80a0: 22 4f 4c 44 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e  "OLD.<i>column-n
80b0: 61 6d 65 3c 2f 69 3e 22 2c 20 77 68 65 72 65 0a  ame</i>", where.
80c0: 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f  <i>column-name</
80d0: 69 3e 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f  i> is the name o
80e0: 66 20 61 20 63 6f 6c 75 6d 6e 20 66 72 6f 6d 20  f a column from 
80f0: 74 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 74  the table that t
8100: 68 65 20 74 72 69 67 67 65 72 0a 69 73 20 61 73  he trigger.is as
8110: 73 6f 63 69 61 74 65 64 20 77 69 74 68 2e 20 4f  sociated with. O
8120: 4c 44 20 61 6e 64 20 4e 45 57 20 72 65 66 65 72  LD and NEW refer
8130: 65 6e 63 65 73 20 6d 61 79 20 6f 6e 6c 79 20 62  ences may only b
8140: 65 20 75 73 65 64 20 69 6e 20 74 72 69 67 67 65  e used in trigge
8150: 72 73 20 6f 6e 0a 3c 69 3e 74 72 69 67 67 65 72  rs on.<i>trigger
8160: 2d 65 76 65 6e 74 3c 2f 69 3e 73 20 66 6f 72 20  -event</i>s for 
8170: 77 68 69 63 68 20 74 68 65 79 20 61 72 65 20 72  which they are r
8180: 65 6c 65 76 61 6e 74 2c 20 61 73 20 66 6f 6c 6c  elevant, as foll
8190: 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65  ows:</p>..<table
81a0: 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70 61   border=0 cellpa
81b0: 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c  dding=10>.<tr>.<
81c0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
81d0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69  align="right" wi
81e0: 64 74 68 3d 31 32 30 3e 3c 69 3e 49 4e 53 45 52  dth=120><i>INSER
81f0: 54 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76  T</i></td>.<td v
8200: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4e 45 57 20  align="top">NEW 
8210: 72 65 66 65 72 65 6e 63 65 73 20 61 72 65 20 76  references are v
8220: 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  alid</td>.</tr>.
8230: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
8240: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
8250: 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69  ht" width=120><i
8260: 3e 55 50 44 41 54 45 3c 2f 69 3e 3c 2f 74 64 3e  >UPDATE</i></td>
8270: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
8280: 22 3e 4e 45 57 20 61 6e 64 20 4f 4c 44 20 72 65  ">NEW and OLD re
8290: 66 65 72 65 6e 63 65 73 20 61 72 65 20 76 61 6c  ferences are val
82a0: 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74  id</td>.</tr>.<t
82b0: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
82c0: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
82d0: 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 44  " width=120><i>D
82e0: 45 4c 45 54 45 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c  ELETE</i></td>.<
82f0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
8300: 4f 4c 44 20 72 65 66 65 72 65 6e 63 65 73 20 61  OLD references a
8310: 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f  re valid</td>.</
8320: 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 70  tr>.</table>.</p
8330: 3e 0a 0a 3c 70 3e 49 66 20 61 20 57 48 45 4e 20  >..<p>If a WHEN 
8340: 63 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c 69  clause is suppli
8350: 65 64 2c 20 74 68 65 20 53 51 4c 20 73 74 61 74  ed, the SQL stat
8360: 65 6d 65 6e 74 73 20 73 70 65 63 69 66 69 65 64  ements specified
8370: 20 61 73 20 0a 3c 69 3e 74 72 69 67 67 65 72 2d   as .<i>trigger-
8380: 73 74 65 70 73 3c 2f 69 3e 20 61 72 65 20 6f 6e  steps</i> are on
8390: 6c 79 20 65 78 65 63 75 74 65 64 20 66 6f 72 20  ly executed for 
83a0: 72 6f 77 73 20 66 6f 72 20 77 68 69 63 68 20 74  rows for which t
83b0: 68 65 20 57 48 45 4e 0a 63 6c 61 75 73 65 20 69  he WHEN.clause i
83c0: 73 20 74 72 75 65 2e 20 49 66 20 6e 6f 20 57 48  s true. If no WH
83d0: 45 4e 20 63 6c 61 75 73 65 20 69 73 20 73 75 70  EN clause is sup
83e0: 70 6c 69 65 64 2c 20 74 68 65 20 53 51 4c 20 73  plied, the SQL s
83f0: 74 61 74 65 6d 65 6e 74 73 0a 61 72 65 20 65 78  tatements.are ex
8400: 65 63 75 74 65 64 20 66 6f 72 20 61 6c 6c 20 72  ecuted for all r
8410: 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ows.</p>..<p>The
8420: 20 73 70 65 63 69 66 69 65 64 20 3c 69 3e 74 72   specified <i>tr
8430: 69 67 67 65 72 2d 74 69 6d 65 3c 2f 69 3e 20 64  igger-time</i> d
8440: 65 74 65 72 6d 69 6e 65 73 20 77 68 65 6e 20 74  etermines when t
8450: 68 65 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74  he <i>trigger-st
8460: 65 70 73 3c 2f 69 3e 0a 77 69 6c 6c 20 62 65 20  eps</i>.will be 
8470: 65 78 65 63 75 74 65 64 20 72 65 6c 61 74 69 76  executed relativ
8480: 65 20 74 6f 20 74 68 65 20 69 6e 73 65 72 74 69  e to the inserti
8490: 6f 6e 2c 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e  on, modification
84a0: 20 6f 72 20 72 65 6d 6f 76 61 6c 20 6f 66 20 74   or removal of t
84b0: 68 65 0a 61 73 73 6f 63 69 61 74 65 64 20 72 6f  he.associated ro
84c0: 77 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6e 20 5b 4f  w.</p>..<p>An [O
84d0: 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 63 6c 61 75  N CONFLICT] clau
84e0: 73 65 20 6d 61 79 20 62 65 20 73 70 65 63 69 66  se may be specif
84f0: 69 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 61  ied as part of a
8500: 6e 20 5b 55 50 44 41 54 45 5d 20 6f 72 20 5b 49  n [UPDATE] or [I
8510: 4e 53 45 52 54 5d 0a 3c 69 3e 74 72 69 67 67 65  NSERT].<i>trigge
8520: 72 2d 73 74 65 70 3c 2f 69 3e 2e 20 48 6f 77 65  r-step</i>. Howe
8530: 76 65 72 20 69 66 20 61 6e 20 5b 4f 4e 20 43 4f  ver if an [ON CO
8540: 4e 46 4c 49 43 54 5d 20 63 6c 61 75 73 65 20 69  NFLICT] clause i
8550: 73 20 73 70 65 63 69 66 69 65 64 20 61 73 20 70  s specified as p
8560: 61 72 74 20 6f 66 20 0a 74 68 65 20 73 74 61 74  art of .the stat
8570: 65 6d 65 6e 74 20 63 61 75 73 69 6e 67 20 74 68  ement causing th
8580: 65 20 74 72 69 67 67 65 72 20 74 6f 20 66 69 72  e trigger to fir
8590: 65 2c 20 74 68 65 6e 20 74 68 69 73 20 63 6f 6e  e, then this con
85a0: 66 6c 69 63 74 20 68 61 6e 64 6c 69 6e 67 0a 70  flict handling.p
85b0: 6f 6c 69 63 79 20 69 73 20 75 73 65 64 20 69 6e  olicy is used in
85c0: 73 74 65 61 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  stead.</p>..<p>T
85d0: 72 69 67 67 65 72 73 20 61 72 65 20 61 75 74 6f  riggers are auto
85e0: 6d 61 74 69 63 61 6c 6c 79 20 64 72 6f 70 70 65  matically droppe
85f0: 64 20 77 68 65 6e 20 74 68 65 20 74 61 62 6c 65  d when the table
8600: 20 74 68 61 74 20 74 68 65 79 20 61 72 65 20 0a   that they are .
8610: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
8620: 69 73 20 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a  is dropped.</p>.
8630: 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e  .<tcl>hd_fragmen
8640: 74 20 69 6e 73 74 65 61 64 5f 6f 66 5f 74 72 69  t instead_of_tri
8650: 67 67 65 72 20 7b 49 4e 53 54 45 41 44 20 4f 46  gger {INSTEAD OF
8660: 7d 20 7b 49 4e 53 54 45 41 44 20 4f 46 20 74 72  } {INSTEAD OF tr
8670: 69 67 67 65 72 7d 3c 2f 74 63 6c 3e 0a 3c 70 3e  igger}</tcl>.<p>
8680: 54 72 69 67 67 65 72 73 20 6d 61 79 20 62 65 20  Triggers may be 
8690: 63 72 65 61 74 65 64 20 6f 6e 20 5b 76 69 65 77  created on [view
86a0: 73 5d 2c 20 61 73 20 77 65 6c 6c 20 61 73 20 6f  s], as well as o
86b0: 72 64 69 6e 61 72 79 20 74 61 62 6c 65 73 2c 20  rdinary tables, 
86c0: 62 79 0a 73 70 65 63 69 66 79 69 6e 67 20 49 4e  by.specifying IN
86d0: 53 54 45 41 44 20 4f 46 20 69 6e 20 74 68 65 20  STEAD OF in the 
86e0: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20 73  CREATE TRIGGER s
86f0: 74 61 74 65 6d 65 6e 74 2e 20 0a 49 66 20 6f 6e  tatement. .If on
8700: 65 20 6f 72 20 6d 6f 72 65 20 4f 4e 20 49 4e 53  e or more ON INS
8710: 45 52 54 2c 20 4f 4e 20 44 45 4c 45 54 45 0a 6f  ERT, ON DELETE.o
8720: 72 20 4f 4e 20 55 50 44 41 54 45 20 74 72 69 67  r ON UPDATE trig
8730: 67 65 72 73 20 61 72 65 20 64 65 66 69 6e 65 64  gers are defined
8740: 20 6f 6e 20 61 20 76 69 65 77 2c 20 74 68 65 6e   on a view, then
8750: 20 69 74 20 69 73 20 6e 6f 74 20 61 6e 0a 65 72   it is not an.er
8760: 72 6f 72 20 74 6f 20 65 78 65 63 75 74 65 20 61  ror to execute a
8770: 6e 20 49 4e 53 45 52 54 2c 20 44 45 4c 45 54 45  n INSERT, DELETE
8780: 20 6f 72 20 55 50 44 41 54 45 20 73 74 61 74 65   or UPDATE state
8790: 6d 65 6e 74 20 6f 6e 20 74 68 65 20 76 69 65 77  ment on the view
87a0: 2c 20 0a 72 65 73 70 65 63 74 69 76 65 6c 79 2e  , .respectively.
87b0: 20 54 68 65 72 65 61 66 74 65 72 2c 0a 65 78 65   Thereafter,.exe
87c0: 63 75 74 69 6e 67 20 61 6e 20 49 4e 53 45 52 54  cuting an INSERT
87d0: 2c 20 44 45 4c 45 54 45 20 6f 72 20 55 50 44 41  , DELETE or UPDA
87e0: 54 45 20 6f 6e 20 74 68 65 20 76 69 65 77 20 63  TE on the view c
87f0: 61 75 73 65 73 20 74 68 65 20 61 73 73 6f 63 69  auses the associ
8800: 61 74 65 64 0a 74 72 69 67 67 65 72 73 20 74 6f  ated.triggers to
8810: 20 66 69 72 65 2e 20 54 68 65 20 72 65 61 6c 20   fire. The real 
8820: 74 61 62 6c 65 73 20 75 6e 64 65 72 6c 79 69 6e  tables underlyin
8830: 67 20 74 68 65 20 76 69 65 77 20 61 72 65 20 6e  g the view are n
8840: 6f 74 20 6d 6f 64 69 66 69 65 64 0a 28 65 78 63  ot modified.(exc
8850: 65 70 74 20 70 6f 73 73 69 62 6c 79 20 65 78 70  ept possibly exp
8860: 6c 69 63 69 74 6c 79 2c 20 62 79 20 61 20 74 72  licitly, by a tr
8870: 69 67 67 65 72 20 70 72 6f 67 72 61 6d 29 2e 3c  igger program).<
8880: 2f 70 3e 0a 0a 3c 70 3e 3c 62 3e 45 78 61 6d 70  /p>..<p><b>Examp
8890: 6c 65 3a 3c 2f 62 3e 3c 2f 70 3e 0a 0a 3c 70 3e  le:</b></p>..<p>
88a0: 41 73 73 75 6d 69 6e 67 20 74 68 61 74 20 63 75  Assuming that cu
88b0: 73 74 6f 6d 65 72 20 72 65 63 6f 72 64 73 20 61  stomer records a
88c0: 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65  re stored in the
88d0: 20 22 63 75 73 74 6f 6d 65 72 73 22 20 74 61 62   "customers" tab
88e0: 6c 65 2c 20 61 6e 64 0a 74 68 61 74 20 6f 72 64  le, and.that ord
88f0: 65 72 20 72 65 63 6f 72 64 73 20 61 72 65 20 73  er records are s
8900: 74 6f 72 65 64 20 69 6e 20 74 68 65 20 22 6f 72  tored in the "or
8910: 64 65 72 73 22 20 74 61 62 6c 65 2c 20 74 68 65  ders" table, the
8920: 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 72 69 67 67   following trigg
8930: 65 72 0a 65 6e 73 75 72 65 73 20 74 68 61 74 20  er.ensures that 
8940: 61 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 20 6f  all associated o
8950: 72 64 65 72 73 20 61 72 65 20 72 65 64 69 72 65  rders are redire
8960: 63 74 65 64 20 77 68 65 6e 20 61 20 63 75 73 74  cted when a cust
8970: 6f 6d 65 72 20 63 68 61 6e 67 65 73 0a 68 69 73  omer changes.his
8980: 20 6f 72 20 68 65 72 20 61 64 64 72 65 73 73 3a   or her address:
8990: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61 6d 70  </p>..<tcl>Examp
89a0: 6c 65 20 7b 0a 43 52 45 41 54 45 20 54 52 49 47  le {.CREATE TRIG
89b0: 47 45 52 20 75 70 64 61 74 65 5f 63 75 73 74 6f  GER update_custo
89c0: 6d 65 72 5f 61 64 64 72 65 73 73 20 55 50 44 41  mer_address UPDA
89d0: 54 45 20 4f 46 20 61 64 64 72 65 73 73 20 4f 4e  TE OF address ON
89e0: 20 63 75 73 74 6f 6d 65 72 73 20 0a 20 20 42 45   customers .  BE
89f0: 47 49 4e 0a 20 20 20 20 55 50 44 41 54 45 20 6f  GIN.    UPDATE o
8a00: 72 64 65 72 73 20 53 45 54 20 61 64 64 72 65 73  rders SET addres
8a10: 73 20 3d 20 6e 65 77 2e 61 64 64 72 65 73 73 20  s = new.address 
8a20: 57 48 45 52 45 20 63 75 73 74 6f 6d 65 72 5f 6e  WHERE customer_n
8a30: 61 6d 65 20 3d 20 6f 6c 64 2e 6e 61 6d 65 3b 0a  ame = old.name;.
8a40: 20 20 45 4e 44 3b 0a 7d 3c 2f 74 63 6c 3e 0a 0a    END;.}</tcl>..
8a50: 3c 70 3e 57 69 74 68 20 74 68 69 73 20 74 72 69  <p>With this tri
8a60: 67 67 65 72 20 69 6e 73 74 61 6c 6c 65 64 2c 20  gger installed, 
8a70: 65 78 65 63 75 74 69 6e 67 20 74 68 65 20 73 74  executing the st
8a80: 61 74 65 6d 65 6e 74 3a 3c 2f 70 3e 0a 0a 3c 74  atement:</p>..<t
8a90: 63 6c 3e 45 78 61 6d 70 6c 65 20 7b 0a 55 50 44  cl>Example {.UPD
8aa0: 41 54 45 20 63 75 73 74 6f 6d 65 72 73 20 53 45  ATE customers SE
8ab0: 54 20 61 64 64 72 65 73 73 20 3d 20 27 31 20 4d  T address = '1 M
8ac0: 61 69 6e 20 53 74 2e 27 20 57 48 45 52 45 20 6e  ain St.' WHERE n
8ad0: 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e 65  ame = 'Jack Jone
8ae0: 73 27 3b 0a 7d 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  s';.}</tcl>..<p>
8af0: 63 61 75 73 65 73 20 74 68 65 20 66 6f 6c 6c 6f  causes the follo
8b00: 77 69 6e 67 20 74 6f 20 62 65 20 61 75 74 6f 6d  wing to be autom
8b10: 61 74 69 63 61 6c 6c 79 20 65 78 65 63 75 74 65  atically execute
8b20: 64 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61  d:</p>..<tcl>Exa
8b30: 6d 70 6c 65 20 7b 0a 55 50 44 41 54 45 20 6f 72  mple {.UPDATE or
8b40: 64 65 72 73 20 53 45 54 20 61 64 64 72 65 73 73  ders SET address
8b50: 20 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e 27 20   = '1 Main St.' 
8b60: 57 48 45 52 45 20 63 75 73 74 6f 6d 65 72 5f 6e  WHERE customer_n
8b70: 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e 65  ame = 'Jack Jone
8b80: 73 27 3b 0a 7d 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  s';.}</tcl>..<p>
8b90: 4e 6f 74 65 20 74 68 61 74 20 63 75 72 72 65 6e  Note that curren
8ba0: 74 6c 79 2c 20 74 72 69 67 67 65 72 73 20 6d 61  tly, triggers ma
8bb0: 79 20 62 65 68 61 76 65 20 6f 64 64 6c 79 20 77  y behave oddly w
8bc0: 68 65 6e 20 63 72 65 61 74 65 64 20 6f 6e 20 74  hen created on t
8bd0: 61 62 6c 65 73 0a 20 20 77 69 74 68 20 5b 49 4e  ables.  with [IN
8be0: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
8bf0: 59 5d 20 66 69 65 6c 64 73 2e 20 49 66 20 61 20  Y] fields. If a 
8c00: 42 45 46 4f 52 45 20 74 72 69 67 67 65 72 20 70  BEFORE trigger p
8c10: 72 6f 67 72 61 6d 20 6d 6f 64 69 66 69 65 73 20  rogram modifies 
8c20: 74 68 65 20 0a 20 20 5b 49 4e 54 45 47 45 52 20  the .  [INTEGER 
8c30: 50 52 49 4d 41 52 59 20 4b 45 59 5d 20 66 69 65  PRIMARY KEY] fie
8c40: 6c 64 20 6f 66 20 61 20 72 6f 77 20 74 68 61 74  ld of a row that
8c50: 20 77 69 6c 6c 20 62 65 20 73 75 62 73 65 71 75   will be subsequ
8c60: 65 6e 74 6c 79 20 75 70 64 61 74 65 64 20 62 79  ently updated by
8c70: 20 74 68 65 0a 20 20 73 74 61 74 65 6d 65 6e 74   the.  statement
8c80: 20 74 68 61 74 20 63 61 75 73 65 73 20 74 68 65   that causes the
8c90: 20 74 72 69 67 67 65 72 20 74 6f 20 66 69 72 65   trigger to fire
8ca0: 2c 20 74 68 65 6e 20 74 68 65 20 75 70 64 61 74  , then the updat
8cb0: 65 20 6d 61 79 20 6e 6f 74 20 6f 63 63 75 72 2e  e may not occur.
8cc0: 20 0a 20 20 54 68 65 20 77 6f 72 6b 61 72 6f 75   .  The workarou
8cd0: 6e 64 20 69 73 20 74 6f 20 64 65 63 6c 61 72 65  nd is to declare
8ce0: 20 74 68 65 20 74 61 62 6c 65 20 77 69 74 68 20   the table with 
8cf0: 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f  a PRIMARY KEY co
8d00: 6c 75 6d 6e 20 69 6e 73 74 65 61 64 0a 20 20 6f  lumn instead.  o
8d10: 66 20 61 6e 20 5b 49 4e 54 45 47 45 52 20 50 52  f an [INTEGER PR
8d20: 49 4d 41 52 59 20 4b 45 59 5d 20 63 6f 6c 75 6d  IMARY KEY] colum
8d30: 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 73 70 65  n.</p>..<p>A spe
8d40: 63 69 61 6c 20 53 51 4c 20 66 75 6e 63 74 69 6f  cial SQL functio
8d50: 6e 20 52 41 49 53 45 28 29 20 6d 61 79 20 62 65  n RAISE() may be
8d60: 20 75 73 65 64 20 77 69 74 68 69 6e 20 61 20 74   used within a t
8d70: 72 69 67 67 65 72 2d 70 72 6f 67 72 61 6d 2c 0a  rigger-program,.
8d80: 77 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69  with the followi
8d90: 6e 67 20 73 79 6e 74 61 78 3c 2f 70 3e 20 0a 0a  ng syntax</p> ..
8da0: 3c 74 63 6c 3e 42 75 62 62 6c 65 44 69 61 67 72  <tcl>BubbleDiagr
8db0: 61 6d 20 72 61 69 73 65 2d 66 75 6e 63 74 69 6f  am raise-functio
8dc0: 6e 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 57 68 65 6e  n</tcl>..<p>When
8dd0: 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 69 72 73   one of the firs
8de0: 74 20 74 68 72 65 65 20 66 6f 72 6d 73 20 69 73  t three forms is
8df0: 20 63 61 6c 6c 65 64 20 64 75 72 69 6e 67 20 74   called during t
8e00: 72 69 67 67 65 72 2d 70 72 6f 67 72 61 6d 0a 65  rigger-program.e
8e10: 78 65 63 75 74 69 6f 6e 2c 20 74 68 65 20 73 70  xecution, the sp
8e20: 65 63 69 66 69 65 64 20 5b 4f 4e 20 43 4f 4e 46  ecified [ON CONF
8e30: 4c 49 43 54 5d 20 70 72 6f 63 65 73 73 69 6e 67  LICT] processing
8e40: 20 69 73 20 70 65 72 66 6f 72 6d 65 64 0a 28 65   is performed.(e
8e50: 69 74 68 65 72 20 41 42 4f 52 54 2c 20 46 41 49  ither ABORT, FAI
8e60: 4c 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29 20 61  L or ROLLBACK) a
8e70: 6e 64 20 74 68 65 20 63 75 72 72 65 6e 74 20 71  nd the current q
8e80: 75 65 72 79 20 74 65 72 6d 69 6e 61 74 65 73 2e  uery terminates.
8e90: 0a 41 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 6f  .An error code o
8ea0: 66 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  f [SQLITE_CONSTR
8eb0: 41 49 4e 54 5d 20 69 73 20 72 65 74 75 72 6e 65  AINT] is returne
8ec0: 64 20 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61  d to the applica
8ed0: 74 69 6f 6e 2c 0a 61 6c 6f 6e 67 20 77 69 74 68  tion,.along with
8ee0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 65   the specified e
8ef0: 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 3c 2f 70  rror message.</p
8f00: 3e 0a 0a 3c 70 3e 57 68 65 6e 20 52 41 49 53 45  >..<p>When RAISE
8f10: 28 49 47 4e 4f 52 45 29 20 69 73 20 63 61 6c 6c  (IGNORE) is call
8f20: 65 64 2c 20 74 68 65 20 72 65 6d 61 69 6e 64 65  ed, the remainde
8f30: 72 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  r of the current
8f40: 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d   trigger program
8f50: 2c 0a 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  ,.the statement 
8f60: 74 68 61 74 20 63 61 75 73 65 64 20 74 68 65 20  that caused the 
8f70: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20  trigger program 
8f80: 74 6f 20 65 78 65 63 75 74 65 20 61 6e 64 20 61  to execute and a
8f90: 6e 79 20 73 75 62 73 65 71 75 65 6e 74 0a 74 72  ny subsequent.tr
8fa0: 69 67 67 65 72 20 70 72 6f 67 72 61 6d 73 20 74  igger programs t
8fb0: 68 61 74 20 77 6f 75 6c 64 20 6f 66 20 62 65 65  hat would of bee
8fc0: 6e 20 65 78 65 63 75 74 65 64 20 61 72 65 20 61  n executed are a
8fd0: 62 61 6e 64 6f 6e 65 64 2e 20 4e 6f 20 64 61 74  bandoned. No dat
8fe0: 61 62 61 73 65 0a 63 68 61 6e 67 65 73 20 61 72  abase.changes ar
8ff0: 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20  e rolled back.  
9000: 49 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  If the statement
9010: 20 74 68 61 74 20 63 61 75 73 65 64 20 74 68 65   that caused the
9020: 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d   trigger program
9030: 0a 74 6f 20 65 78 65 63 75 74 65 20 69 73 20 69  .to execute is i
9040: 74 73 65 6c 66 20 70 61 72 74 20 6f 66 20 61 20  tself part of a 
9050: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 2c  trigger program,
9060: 20 74 68 65 6e 20 74 68 61 74 20 74 72 69 67 67   then that trigg
9070: 65 72 20 70 72 6f 67 72 61 6d 0a 72 65 73 75 6d  er program.resum
9080: 65 73 20 65 78 65 63 75 74 69 6f 6e 20 61 74 20  es execution at 
9090: 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66  the beginning of
90a0: 20 74 68 65 20 6e 65 78 74 20 73 74 65 70 2e 0a   the next step..
90b0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65 72  </p>..<p>Trigger
90c0: 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73  s are removed us
90d0: 69 6e 67 20 74 68 65 20 5b 44 52 4f 50 20 54 52  ing the [DROP TR
90e0: 49 47 47 45 52 5d 20 73 74 61 74 65 6d 65 6e 74  IGGER] statement
90f0: 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23  .</p>...<tcl>.##
9100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9110: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9130: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9140: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
9150: 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 56 49  ction {CREATE VI
9160: 45 57 7d 20 7b 63 72 65 61 74 65 76 69 65 77 7d  EW} {createview}
9170: 20 7b 7b 43 52 45 41 54 45 20 56 49 45 57 7d 20   {{CREATE VIEW} 
9180: 76 69 65 77 20 76 69 65 77 73 7d 0a 0a 42 75 62  view views}..Bub
9190: 62 6c 65 44 69 61 67 72 61 6d 20 63 72 65 61 74  bleDiagram creat
91a0: 65 2d 76 69 65 77 2d 73 74 6d 74 20 31 0a 3c 2f  e-view-stmt 1.</
91b0: 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 43 52 45  tcl>..<p>The CRE
91c0: 41 54 45 20 56 49 45 57 20 63 6f 6d 6d 61 6e 64  ATE VIEW command
91d0: 20 61 73 73 69 67 6e 73 20 61 20 6e 61 6d 65 20   assigns a name 
91e0: 74 6f 20 61 20 70 72 65 2d 70 61 63 6b 61 67 65  to a pre-package
91f0: 64 20 0a 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67  d .<a href="lang
9200: 5f 73 65 6c 65 63 74 2e 68 74 6d 6c 22 3e 53 45  _select.html">SE
9210: 4c 45 43 54 3c 2f 61 3e 0a 73 74 61 74 65 6d 65  LECT</a>.stateme
9220: 6e 74 2e 20 20 4f 6e 63 65 20 74 68 65 20 76 69  nt.  Once the vi
9230: 65 77 20 69 73 20 63 72 65 61 74 65 64 2c 20 69  ew is created, i
9240: 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e  t can be used in
9250: 20 74 68 65 20 46 52 4f 4d 20 63 6c 61 75 73 65   the FROM clause
9260: 0a 6f 66 20 61 6e 6f 74 68 65 72 20 5b 53 45 4c  .of another [SEL
9270: 45 43 54 5d 20 69 6e 20 70 6c 61 63 65 20 6f 66  ECT] in place of
9280: 20 61 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0a 3c   a table name..<
9290: 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 22  /p>..<p>If the "
92a0: 54 45 4d 50 22 20 6f 72 20 22 54 45 4d 50 4f 52  TEMP" or "TEMPOR
92b0: 41 52 59 22 20 6b 65 79 77 6f 72 64 20 6f 63 63  ARY" keyword occ
92c0: 75 72 73 20 69 6e 20 62 65 74 77 65 65 6e 20 22  urs in between "
92d0: 43 52 45 41 54 45 22 0a 61 6e 64 20 22 56 49 45  CREATE".and "VIE
92e0: 57 22 20 74 68 65 6e 20 74 68 65 20 76 69 65 77  W" then the view
92f0: 20 74 68 61 74 20 69 73 20 63 72 65 61 74 65 64   that is created
9300: 20 69 73 20 6f 6e 6c 79 20 76 69 73 69 62 6c 65   is only visible
9310: 20 74 6f 20 74 68 65 0a 70 72 6f 63 65 73 73 20   to the.process 
9320: 74 68 61 74 20 6f 70 65 6e 65 64 20 74 68 65 20  that opened the 
9330: 64 61 74 61 62 61 73 65 20 61 6e 64 20 69 73 20  database and is 
9340: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65  automatically de
9350: 6c 65 74 65 64 20 77 68 65 6e 0a 74 68 65 20 64  leted when.the d
9360: 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65  atabase is close
9370: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 49 66 20 61  d.</p>..<p> If a
9380: 20 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61   &lt;database-na
9390: 6d 65 26 67 74 3b 20 69 73 20 73 70 65 63 69 66  me&gt; is specif
93a0: 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20 76 69  ied, then the vi
93b0: 65 77 20 69 73 20 63 72 65 61 74 65 64 20 69 6e  ew is created in
93c0: 20 0a 74 68 65 20 6e 61 6d 65 64 20 64 61 74 61   .the named data
93d0: 62 61 73 65 2e 20 49 74 20 69 73 20 61 6e 20 65  base. It is an e
93e0: 72 72 6f 72 20 74 6f 20 73 70 65 63 69 66 79 20  rror to specify 
93f0: 62 6f 74 68 20 61 20 26 6c 74 3b 64 61 74 61 62  both a &lt;datab
9400: 61 73 65 2d 6e 61 6d 65 26 67 74 3b 0a 61 6e 64  ase-name&gt;.and
9410: 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77 6f 72   the TEMP keywor
9420: 64 2c 20 75 6e 6c 65 73 73 20 74 68 65 20 26 6c  d, unless the &l
9430: 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26  t;database-name&
9440: 67 74 3b 20 69 73 20 22 74 65 6d 70 22 2e 20 49  gt; is "temp". I
9450: 66 20 6e 6f 0a 64 61 74 61 62 61 73 65 20 6e 61  f no.database na
9460: 6d 65 20 69 73 20 73 70 65 63 69 66 69 65 64 2c  me is specified,
9470: 20 61 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65   and the TEMP ke
9480: 79 77 6f 72 64 20 69 73 20 6e 6f 74 20 70 72 65  yword is not pre
9490: 73 65 6e 74 2c 0a 74 68 65 20 74 61 62 6c 65 20  sent,.the table 
94a0: 69 73 20 63 72 65 61 74 65 64 20 69 6e 20 74 68  is created in th
94b0: 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2e  e main database.
94c0: 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63 61 6e  </p>..<p>You can
94d0: 6e 6f 74 20 5b 44 45 4c 45 54 45 5d 2c 20 5b 49  not [DELETE], [I
94e0: 4e 53 45 52 54 5d 2c 20 6f 72 20 5b 55 50 44 41  NSERT], or [UPDA
94f0: 54 45 5d 20 61 20 76 69 65 77 2e 20 20 56 69 65  TE] a view.  Vie
9500: 77 73 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79  ws are read-only
9510: 20 0a 69 6e 20 53 51 4c 69 74 65 2e 20 20 48 6f   .in SQLite.  Ho
9520: 77 65 76 65 72 2c 20 69 6e 20 6d 61 6e 79 20 63  wever, in many c
9530: 61 73 65 73 20 79 6f 75 20 63 61 6e 20 75 73 65  ases you can use
9540: 20 61 6e 0a 5b 49 4e 53 54 45 41 44 20 4f 46 20   an.[INSTEAD OF 
9550: 74 72 69 67 67 65 72 5d 20 6f 6e 20 74 68 65 20  trigger] on the 
9560: 76 69 65 77 20 74 6f 20 61 63 63 6f 6d 70 6c 69  view to accompli
9570: 73 68 20 0a 74 68 65 20 73 61 6d 65 20 74 68 69  sh .the same thi
9580: 6e 67 2e 20 20 56 69 65 77 73 20 61 72 65 20 72  ng.  Views are r
9590: 65 6d 6f 76 65 64 20 0a 77 69 74 68 20 74 68 65  emoved .with the
95a0: 20 5b 44 52 4f 50 20 56 49 45 57 5d 20 63 6f 6d   [DROP VIEW] com
95b0: 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  mand.</p>..<tcl>
95c0: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
95d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
95e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
95f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9600: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
9610: 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20  Section {CREATE 
9620: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 7d 20 7b  VIRTUAL TABLE} {
9630: 63 72 65 61 74 65 76 74 61 62 7d 20 7b 7b 43 52  createvtab} {{CR
9640: 45 41 54 45 20 56 49 52 54 55 41 4c 5f 54 41 42  EATE VIRTUAL_TAB
9650: 4c 45 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67  LE}}..BubbleDiag
9660: 72 61 6d 20 63 72 65 61 74 65 2d 76 69 72 74 75  ram create-virtu
9670: 61 6c 2d 74 61 62 6c 65 2d 73 74 6d 74 20 31 0a  al-table-stmt 1.
9680: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 41 20 76 69 72  </tcl>..<p>A vir
9690: 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20 61 6e  tual table is an
96a0: 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 61 6e   interface to an
96b0: 20 65 78 74 65 72 6e 61 6c 20 73 74 6f 72 61 67   external storag
96c0: 65 20 6f 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e  e or computation
96d0: 0a 65 6e 67 69 6e 65 20 74 68 61 74 20 61 70 70  .engine that app
96e0: 65 61 72 73 20 74 6f 20 62 65 20 61 20 74 61 62  ears to be a tab
96f0: 6c 65 20 62 75 74 20 64 6f 65 73 20 6e 6f 74 20  le but does not 
9700: 61 63 74 75 61 6c 6c 79 20 73 74 6f 72 65 20 69  actually store i
9710: 6e 66 6f 72 6d 61 74 69 6f 6e 0a 69 6e 20 74 68  nformation.in th
9720: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e  e database file.
9730: 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 67 65 6e 65  </p>..<p>In gene
9740: 72 61 6c 2c 20 79 6f 75 20 63 61 6e 20 64 6f 20  ral, you can do 
9750: 61 6e 79 74 68 69 6e 67 20 77 69 74 68 20 61 20  anything with a 
9760: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 74 68  virtual table th
9770: 61 74 20 63 61 6e 20 62 65 20 64 6f 6e 65 0a 77  at can be done.w
9780: 69 74 68 20 61 6e 20 6f 72 64 69 6e 61 72 79 20  ith an ordinary 
9790: 74 61 62 6c 65 2c 20 65 78 63 65 70 74 20 74 68  table, except th
97a0: 61 74 20 79 6f 75 20 63 61 6e 6e 6f 74 20 63 72  at you cannot cr
97b0: 65 61 74 65 20 69 6e 64 69 63 65 73 20 6f 72 20  eate indices or 
97c0: 74 72 69 67 67 65 72 73 20 6f 6e 20 61 0a 76 69  triggers on a.vi
97d0: 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 20 53 6f  rtual table.  So
97e0: 6d 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  me virtual table
97f0: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
9800: 20 6d 69 67 68 74 20 69 6d 70 6f 73 65 20 61 64   might impose ad
9810: 64 69 74 69 6f 6e 61 6c 0a 72 65 73 74 72 69 63  ditional.restric
9820: 74 69 6f 6e 73 2e 20 20 46 6f 72 20 65 78 61 6d  tions.  For exam
9830: 70 6c 65 2c 20 6d 61 6e 79 20 76 69 72 74 75 61  ple, many virtua
9840: 6c 20 74 61 62 6c 65 73 20 61 72 65 20 72 65 61  l tables are rea
9850: 64 2d 6f 6e 6c 79 2e 0a 56 69 72 74 75 61 6c 20  d-only..Virtual 
9860: 74 61 62 6c 65 73 20 63 61 6e 6e 6f 74 20 62 65  tables cannot be
9870: 20 75 73 65 64 20 69 6e 0a 5b 73 71 6c 69 74 65   used in.[sqlite
9880: 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f  3_enable_shared_
9890: 63 61 63 68 65 20 7c 20 73 68 61 72 65 64 20 63  cache | shared c
98a0: 61 63 68 65 20 6d 6f 64 65 5d 2e 3c 2f 70 3e 0a  ache mode].</p>.
98b0: 0a 3c 70 3e 54 68 65 20 26 6c 74 3b 6d 6f 64 75  .<p>The &lt;modu
98c0: 6c 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 74  le-name&gt; is t
98d0: 68 65 20 6e 61 6d 65 20 6f 66 20 61 6e 20 6f 62  he name of an ob
98e0: 6a 65 63 74 20 74 68 61 74 20 69 6d 70 6c 65 6d  ject that implem
98f0: 65 6e 74 73 0a 74 68 65 20 76 69 72 74 75 61 6c  ents.the virtual
9900: 20 74 61 62 6c 65 2e 20 20 54 68 65 20 26 6c 74   table.  The &lt
9910: 3b 6d 6f 64 75 6c 65 2d 6e 61 6d 65 26 67 74 3b  ;module-name&gt;
9920: 20 6d 75 73 74 20 62 65 20 72 65 67 69 73 74 65   must be registe
9930: 72 65 64 20 77 69 74 68 0a 74 68 65 20 53 51 4c  red with.the SQL
9940: 69 74 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ite database con
9950: 6e 65 63 74 69 6f 6e 20 75 73 69 6e 67 0a 73 71  nection using.sq
9960: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64  lite3_create_mod
9970: 75 6c 65 28 29 0a 70 72 69 6f 72 20 74 6f 20 69  ule().prior to i
9980: 73 73 75 69 6e 67 20 74 68 65 20 43 52 45 41 54  ssuing the CREAT
9990: 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20  E VIRTUAL TABLE 
99a0: 73 74 61 74 65 6d 65 6e 74 2e 0a 54 68 65 20 6d  statement..The m
99b0: 6f 64 75 6c 65 20 74 61 6b 65 73 20 7a 65 72 6f  odule takes zero
99c0: 20 6f 72 20 6d 6f 72 65 20 63 6f 6d 6d 61 2d 73   or more comma-s
99d0: 65 70 61 72 61 74 65 64 20 61 72 67 75 6d 65 6e  eparated argumen
99e0: 74 73 2e 0a 54 68 65 20 61 72 67 75 6d 65 6e 74  ts..The argument
99f0: 73 20 63 61 6e 20 62 65 20 6a 75 73 74 20 61 62  s can be just ab
9a00: 6f 75 74 20 61 6e 79 20 74 65 78 74 20 61 73 20  out any text as 
9a10: 6c 6f 6e 67 20 61 73 20 69 74 20 68 61 73 20 62  long as it has b
9a20: 61 6c 61 6e 63 65 64 0a 70 61 72 65 6e 74 68 65  alanced.parenthe
9a30: 73 65 73 2e 20 20 54 68 65 20 61 72 67 75 6d 65  ses.  The argume
9a40: 6e 74 20 73 79 6e 74 61 78 20 69 73 20 73 75 66  nt syntax is suf
9a50: 66 69 63 69 65 6e 74 6c 79 20 67 65 6e 65 72 61  ficiently genera
9a60: 6c 20 74 68 61 74 20 74 68 65 0a 61 72 67 75 6d  l that the.argum
9a70: 65 6e 74 73 20 63 61 6e 20 62 65 20 6d 61 64 65  ents can be made
9a80: 20 74 6f 20 61 70 70 65 61 72 20 61 73 20 63 6f   to appear as co
9a90: 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 73  lumn definitions
9aa0: 20 69 6e 20 61 20 74 72 61 64 69 74 69 6f 6e 61   in a traditiona
9ab0: 6c 0a 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d  l.[CREATE TABLE]
9ac0: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 0a 53 51   statement.  .SQ
9ad0: 4c 69 74 65 20 70 61 73 73 65 73 20 74 68 65 20  Lite passes the 
9ae0: 6d 6f 64 75 6c 65 20 61 72 67 75 6d 65 6e 74 73  module arguments
9af0: 20 64 69 72 65 63 74 6c 79 0a 74 6f 20 74 68 65   directly.to the
9b00: 20 6d 6f 64 75 6c 65 20 77 69 74 68 6f 75 74 20   module without 
9b10: 61 6e 79 20 69 6e 74 65 72 70 72 65 74 61 74 69  any interpretati
9b20: 6f 6e 2e 20 20 49 74 20 69 73 20 74 68 65 20 72  on.  It is the r
9b30: 65 73 70 6f 6e 73 69 62 69 6c 69 74 79 0a 6f 66  esponsibility.of
9b40: 20 74 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c   the module impl
9b50: 65 6d 65 6e 74 61 74 69 6f 6e 20 74 6f 20 70 61  ementation to pa
9b60: 72 73 65 20 61 6e 64 20 69 6e 74 65 72 70 72 65  rse and interpre
9b70: 74 20 69 74 73 20 6f 77 6e 20 61 72 67 75 6d 65  t its own argume
9b80: 6e 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 76  nts.</p>..<p>A v
9b90: 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20  irtual table is 
9ba0: 64 65 73 74 72 6f 79 65 64 20 75 73 69 6e 67 20  destroyed using 
9bb0: 74 68 65 20 6f 72 64 69 6e 61 72 79 0a 5b 44 52  the ordinary.[DR
9bc0: 4f 50 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d  OP TABLE] statem
9bd0: 65 6e 74 2e 20 20 54 68 65 72 65 20 69 73 20 6e  ent.  There is n
9be0: 6f 0a 44 52 4f 50 20 56 49 52 54 55 41 4c 20 54  o.DROP VIRTUAL T
9bf0: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 3c  ABLE statement.<
9c00: 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  /p>..<tcl>.#####
9c10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9c20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9c30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9c40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9c50: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
9c60: 6e 20 44 45 4c 45 54 45 20 64 65 6c 65 74 65 20  n DELETE delete 
9c70: 7b 44 45 4c 45 54 45 20 44 45 4c 45 54 45 73 7d  {DELETE DELETEs}
9c80: 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  ..BubbleDiagram 
9c90: 64 65 6c 65 74 65 2d 73 74 6d 74 20 31 0a 42 75  delete-stmt 1.Bu
9ca0: 62 62 6c 65 44 69 61 67 72 61 6d 20 71 75 61 6c  bbleDiagram qual
9cb0: 69 66 69 65 64 2d 74 61 62 6c 65 2d 6e 61 6d 65  ified-table-name
9cc0: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20  .</tcl>..<p>The 
9cd0: 44 45 4c 45 54 45 20 63 6f 6d 6d 61 6e 64 20 69  DELETE command i
9ce0: 73 20 75 73 65 64 20 74 6f 20 72 65 6d 6f 76 65  s used to remove
9cf0: 20 72 65 63 6f 72 64 73 20 66 72 6f 6d 20 61 20   records from a 
9d00: 74 61 62 6c 65 2e 0a 54 68 65 20 63 6f 6d 6d 61  table..The comma
9d10: 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74  nd consists of t
9d20: 68 65 20 22 44 45 4c 45 54 45 20 46 52 4f 4d 22  he "DELETE FROM"
9d30: 20 6b 65 79 77 6f 72 64 73 20 66 6f 6c 6c 6f 77   keywords follow
9d40: 65 64 20 62 79 0a 74 68 65 20 6e 61 6d 65 20 6f  ed by.the name o
9d50: 66 20 74 68 65 20 74 61 62 6c 65 20 66 72 6f 6d  f the table from
9d60: 20 77 68 69 63 68 20 72 65 63 6f 72 64 73 20 61   which records a
9d70: 72 65 20 74 6f 20 62 65 20 72 65 6d 6f 76 65 64  re to be removed
9d80: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 57 69 74 68 6f  ..</p>..<p>Witho
9d90: 75 74 20 61 20 57 48 45 52 45 20 63 6c 61 75 73  ut a WHERE claus
9da0: 65 2c 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74  e, all rows of t
9db0: 68 65 20 74 61 62 6c 65 20 61 72 65 20 72 65 6d  he table are rem
9dc0: 6f 76 65 64 2e 0a 49 66 20 61 20 57 48 45 52 45  oved..If a WHERE
9dd0: 20 63 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c   clause is suppl
9de0: 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74  ied, then only t
9df0: 68 6f 73 65 20 72 6f 77 73 20 74 68 61 74 20 6d  hose rows that m
9e00: 61 74 63 68 0a 74 68 65 20 65 78 70 72 65 73 73  atch.the express
9e10: 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64 2e  ion are removed.
9e20: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72  </p>..<tcl>hd_fr
9e30: 61 67 6d 65 6e 74 20 74 72 75 63 61 74 65 6f 70  agment trucateop
9e40: 74 20 7b 74 72 75 6e 63 61 74 65 20 6f 70 74 69  t {truncate opti
9e50: 6d 69 7a 61 74 69 6f 6e 7d 3c 2f 74 63 6c 3e 0a  mization}</tcl>.
9e60: 3c 70 3e 57 68 65 6e 20 74 68 65 20 57 48 45 52  <p>When the WHER
9e70: 45 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f  E is omitted fro
9e80: 6d 20 61 20 44 45 4c 45 54 45 20 73 74 61 74 65  m a DELETE state
9e90: 6d 65 6e 74 20 61 6e 64 20 74 68 65 20 74 61 62  ment and the tab
9ea0: 6c 65 0a 62 65 69 6e 67 20 64 65 6c 65 74 65 64  le.being deleted
9eb0: 20 68 61 73 20 6e 6f 20 74 72 69 67 67 65 72 73   has no triggers
9ec0: 2c 0a 53 51 4c 69 74 65 20 75 73 65 73 20 61 6e  ,.SQLite uses an
9ed0: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74 6f   optimization to
9ee0: 20 65 72 61 73 65 20 74 68 65 20 65 6e 74 69 72   erase the entir
9ef0: 65 20 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74 0a  e table content.
9f00: 77 69 74 68 6f 75 74 20 68 61 76 69 6e 67 20 74  without having t
9f10: 6f 20 76 69 73 69 74 20 65 61 63 68 20 72 6f 77  o visit each row
9f20: 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 69 6e   of the table in
9f30: 64 69 76 69 64 75 61 6c 2e 0a 54 68 69 73 20 22  dividual..This "
9f40: 74 72 75 6e 63 61 74 65 22 20 6f 70 74 69 6d 69  truncate" optimi
9f50: 7a 61 74 69 6f 6e 20 6d 61 6b 65 73 20 74 68 65  zation makes the
9f60: 20 64 65 6c 65 74 65 20 72 75 6e 20 6d 75 63 68   delete run much
9f70: 20 66 61 73 74 65 72 2e 0a 50 72 69 6f 72 20 74   faster..Prior t
9f80: 6f 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f  o SQLite [versio
9f90: 6e 20 33 2e 36 2e 35 5d 2c 20 74 68 65 20 74 72  n 3.6.5], the tr
9fa0: 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74  uncate optimizat
9fb0: 69 6f 6e 0a 61 6c 73 6f 20 6d 65 61 6e 74 20 74  ion.also meant t
9fc0: 68 61 74 20 74 68 65 20 5b 73 71 6c 69 74 65 33  hat the [sqlite3
9fd0: 5f 63 68 61 6e 67 65 73 28 29 5d 20 61 6e 64 0a  _changes()] and.
9fe0: 5b 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63  [sqlite3_total_c
9ff0: 68 61 6e 67 65 73 28 29 5d 20 69 6e 74 65 72 66  hanges()] interf
a000: 61 63 65 73 0a 61 6e 64 20 74 68 65 20 5b 63 6f  aces.and the [co
a010: 75 6e 74 5f 63 68 61 6e 67 65 73 20 70 72 61 67  unt_changes prag
a020: 6d 61 5d 0a 77 69 6c 6c 20 6e 6f 74 20 61 63 74  ma].will not act
a030: 75 61 6c 6c 79 20 72 65 74 75 72 6e 20 74 68 65  ually return the
a040: 20 6e 75 6d 62 65 72 20 6f 66 20 64 65 6c 65 74   number of delet
a050: 65 64 20 72 6f 77 73 2e 20 20 0a 54 68 61 74 20  ed rows.  .That 
a060: 70 72 6f 62 6c 65 6d 20 68 61 73 20 62 65 65 6e  problem has been
a070: 20 66 69 78 65 64 20 61 73 20 6f 66 20 5b 76 65   fixed as of [ve
a080: 72 73 69 6f 6e 20 33 2e 36 2e 35 5d 2e 0a 0a 3c  rsion 3.6.5]...<
a090: 70 3e 54 68 65 20 74 72 75 6e 63 61 74 65 20 6f  p>The truncate o
a0a0: 70 74 69 6d 69 7a 61 74 69 6f 6e 20 63 61 6e 20  ptimization can 
a0b0: 62 65 20 64 69 73 61 62 6c 65 64 20 66 6f 72 20  be disabled for 
a0c0: 61 6c 6c 20 71 75 65 72 69 65 73 20 62 79 20 72  all queries by r
a0d0: 65 63 6f 6d 70 69 6c 69 6e 67 0a 53 51 4c 69 74  ecompiling.SQLit
a0e0: 65 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49  e with the [SQLI
a0f0: 54 45 5f 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45  TE_OMIT_TRUNCATE
a100: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 5d 20 63  _OPTIMIZATION] c
a110: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 73 77 69 74  ompile-time swit
a120: 63 68 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 53  ch.</p>..<p>If S
a130: 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65  QLite is compile
a140: 64 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49  d with the [SQLI
a150: 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45  TE_ENABLE_UPDATE
a160: 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d 0a 63  _DELETE_LIMIT].c
a170: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
a180: 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 73 79 6e  on, then the syn
a190: 74 61 78 20 6f 66 20 74 68 65 20 44 45 4c 45 54  tax of the DELET
a1a0: 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 0a 65  E statement is.e
a1b0: 78 74 65 6e 64 65 64 20 62 79 20 74 68 65 20 61  xtended by the a
a1c0: 64 64 69 74 69 6f 6e 20 6f 66 20 6f 70 74 69 6f  ddition of optio
a1d0: 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61 6e 64  nal ORDER BY and
a1e0: 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 73 3a 3c   LIMIT clauses:<
a1f0: 2f 70 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62 6c 65  /p>..<tcl>Bubble
a200: 44 69 61 67 72 61 6d 20 64 65 6c 65 74 65 2d 73  Diagram delete-s
a210: 74 6d 74 2d 6c 69 6d 69 74 65 64 3c 2f 74 63 6c  tmt-limited</tcl
a220: 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e  >..<p>The option
a230: 61 6c 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20  al LIMIT clause 
a240: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6c  can be used to l
a250: 69 6d 69 74 20 74 68 65 20 6e 75 6d 62 65 72 20  imit the number 
a260: 6f 66 0a 72 6f 77 73 20 64 65 6c 65 74 65 64 2c  of.rows deleted,
a270: 20 61 6e 64 20 74 68 65 72 65 62 79 20 6c 69 6d   and thereby lim
a280: 69 74 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  it the size of t
a290: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a  he transaction..
a2a0: 54 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61  The ORDER BY cla
a2b0: 75 73 65 20 69 73 20 75 73 65 64 20 6f 6e 6c 79  use is used only
a2c0: 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 77 68   to determine wh
a2d0: 69 63 68 20 72 6f 77 73 20 66 61 6c 6c 0a 77 69  ich rows fall.wi
a2e0: 74 68 69 6e 20 74 68 65 20 4c 49 4d 49 54 2e 20  thin the LIMIT. 
a2f0: 20 54 68 65 20 6f 72 64 65 72 20 69 6e 20 77 68   The order in wh
a300: 69 63 68 20 72 6f 77 73 20 61 72 65 20 64 65 6c  ich rows are del
a310: 65 74 65 64 20 69 73 20 61 72 62 69 74 72 61 72  eted is arbitrar
a320: 79 0a 61 6e 64 20 69 73 20 6e 6f 74 20 64 65 74  y.and is not det
a330: 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65 20 4f  ermined by the O
a340: 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 2e 3c  RDER BY clause.<
a350: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 70 72 65 73  /p>..<p>The pres
a360: 65 6e 63 65 20 6f 66 20 61 20 4c 49 4d 49 54 20  ence of a LIMIT 
a370: 63 6c 61 75 73 65 20 64 65 66 65 61 74 73 20 74  clause defeats t
a380: 68 65 20 74 72 75 6e 63 61 74 65 20 6f 70 74 69  he truncate opti
a390: 6d 69 7a 61 74 69 6f 6e 0a 63 61 75 73 69 6e 67  mization.causing
a3a0: 20 61 6c 6c 20 72 6f 77 73 20 62 65 69 6e 67 20   all rows being 
a3b0: 64 65 6c 65 74 65 64 20 74 6f 20 62 65 20 76 69  deleted to be vi
a3c0: 73 69 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  sited.</p>..<tcl
a3d0: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
a3e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a3f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a400: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a410: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a420: 23 0a 53 65 63 74 69 6f 6e 20 7b 44 45 54 41 43  #.Section {DETAC
a430: 48 20 44 41 54 41 42 41 53 45 7d 20 64 65 74 61  H DATABASE} deta
a440: 63 68 20 44 45 54 41 43 48 0a 0a 42 75 62 62 6c  ch DETACH..Bubbl
a450: 65 44 69 61 67 72 61 6d 20 64 65 74 61 63 68 2d  eDiagram detach-
a460: 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c  stmt 1.</tcl>..<
a470: 70 3e 54 68 69 73 20 73 74 61 74 65 6d 65 6e 74  p>This statement
a480: 20 64 65 74 61 63 68 65 73 20 61 6e 20 61 64 64   detaches an add
a490: 69 74 69 6f 6e 61 6c 20 64 61 74 61 62 61 73 65  itional database
a4a0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 72 65 76   connection prev
a4b0: 69 6f 75 73 6c 79 20 0a 61 74 74 61 63 68 65 64  iously .attached
a4c0: 20 75 73 69 6e 67 20 74 68 65 20 5b 41 54 54 41   using the [ATTA
a4d0: 43 48 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  CH] statement.  
a4e0: 0a 49 74 20 69 73 20 70 6f 73 73 69 62 6c 65 20  .It is possible 
a4f0: 74 6f 20 68 61 76 65 20 74 68 65 20 73 61 6d 65  to have the same
a500: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 61   database file a
a510: 74 74 61 63 68 65 64 20 6d 75 6c 74 69 70 6c 65  ttached multiple
a520: 20 74 69 6d 65 73 20 75 73 69 6e 67 20 0a 64 69   times using .di
a530: 66 66 65 72 65 6e 74 20 6e 61 6d 65 73 2c 20 61  fferent names, a
a540: 6e 64 20 64 65 74 61 63 68 69 6e 67 20 6f 6e 65  nd detaching one
a550: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 61   connection to a
a560: 20 66 69 6c 65 20 77 69 6c 6c 20 6c 65 61 76 65   file will leave
a570: 20 74 68 65 20 0a 6f 74 68 65 72 73 20 69 6e 74   the .others int
a580: 61 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69  act.</p>..<p>Thi
a590: 73 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c  s statement will
a5a0: 20 66 61 69 6c 20 69 66 20 53 51 4c 69 74 65 20   fail if SQLite 
a5b0: 69 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65  is in the middle
a5c0: 20 6f 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f   of a transactio
a5d0: 6e 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23  n.</p>...<tcl>.#
a5e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a5f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a600: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a610: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a620: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
a630: 63 74 69 6f 6e 20 7b 44 52 4f 50 20 49 4e 44 45  ction {DROP INDE
a640: 58 7d 20 64 72 6f 70 69 6e 64 65 78 20 7b 7b 44  X} dropindex {{D
a650: 52 4f 50 20 49 4e 44 45 58 7d 7d 0a 0a 42 75 62  ROP INDEX}}..Bub
a660: 62 6c 65 44 69 61 67 72 61 6d 20 64 72 6f 70 2d  bleDiagram drop-
a670: 69 6e 64 65 78 2d 73 74 6d 74 20 31 0a 3c 2f 74  index-stmt 1.</t
a680: 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44 52 4f 50  cl>..<p>The DROP
a690: 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74   INDEX statement
a6a0: 20 72 65 6d 6f 76 65 73 20 61 6e 20 69 6e 64 65   removes an inde
a6b0: 78 20 61 64 64 65 64 0a 77 69 74 68 20 74 68 65  x added.with the
a6c0: 20 5b 43 52 45 41 54 45 20 49 4e 44 45 58 5d 20   [CREATE INDEX] 
a6d0: 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20  statement.  The 
a6e0: 69 6e 64 65 78 20 6e 61 6d 65 64 20 69 73 20 63  index named is c
a6f0: 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65  ompletely remove
a700: 64 20 66 72 6f 6d 0a 74 68 65 20 64 69 73 6b 2e  d from.the disk.
a710: 20 20 54 68 65 20 6f 6e 6c 79 20 77 61 79 20 74    The only way t
a720: 6f 20 72 65 63 6f 76 65 72 20 74 68 65 20 69 6e  o recover the in
a730: 64 65 78 20 69 73 20 74 6f 20 72 65 65 6e 74 65  dex is to reente
a740: 72 20 74 68 65 0a 61 70 70 72 6f 70 72 69 61 74  r the.appropriat
a750: 65 20 5b 43 52 45 41 54 45 20 49 4e 44 45 58 5d  e [CREATE INDEX]
a760: 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c   command.</p>..<
a770: 70 3e 54 68 65 20 44 52 4f 50 20 49 4e 44 45 58  p>The DROP INDEX
a780: 20 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20   statement does 
a790: 6e 6f 74 20 72 65 64 75 63 65 20 74 68 65 20 73  not reduce the s
a7a0: 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  ize of the datab
a7b0: 61 73 65 20 0a 66 69 6c 65 20 69 6e 20 74 68 65  ase .file in the
a7c0: 20 64 65 66 61 75 6c 74 20 6d 6f 64 65 2e 0a 45   default mode..E
a7d0: 6d 70 74 79 20 73 70 61 63 65 20 69 6e 20 74 68  mpty space in th
a7e0: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 72 65  e database is re
a7f0: 74 61 69 6e 65 64 20 66 6f 72 20 6c 61 74 65 72  tained for later
a800: 20 5b 49 4e 53 45 52 54 5d 20 73 74 61 74 65 6d   [INSERT] statem
a810: 65 6e 74 73 2e 20 20 54 6f 20 0a 72 65 6d 6f 76  ents.  To .remov
a820: 65 20 66 72 65 65 20 73 70 61 63 65 20 69 6e 20  e free space in 
a830: 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 75 73  the database, us
a840: 65 20 74 68 65 20 5b 56 41 43 55 55 4d 5d 0a 63  e the [VACUUM].c
a850: 6f 6d 6d 61 6e 64 2e 20 20 49 66 20 5b 61 75 74  ommand.  If [aut
a860: 6f 5f 76 61 63 75 75 6d 5d 20 6d 6f 64 65 20 69  o_vacuum] mode i
a870: 73 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 61 20  s enabled for a 
a880: 64 61 74 61 62 61 73 65 20 74 68 65 6e 20 73 70  database then sp
a890: 61 63 65 0a 77 69 6c 6c 20 62 65 20 66 72 65 65  ace.will be free
a8a0: 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  d automatically 
a8b0: 62 79 20 44 52 4f 50 20 49 4e 44 45 58 2e 3c 2f  by DROP INDEX.</
a8c0: 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  p>...<tcl>.#####
a8d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a8e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a8f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a900: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a910: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
a920: 6e 20 7b 44 52 4f 50 20 54 41 42 4c 45 7d 20 64  n {DROP TABLE} d
a930: 72 6f 70 74 61 62 6c 65 20 7b 7b 44 52 4f 50 20  roptable {{DROP 
a940: 54 41 42 4c 45 7d 7d 0a 0a 42 75 62 62 6c 65 44  TABLE}}..BubbleD
a950: 69 61 67 72 61 6d 20 64 72 6f 70 2d 74 61 62 6c  iagram drop-tabl
a960: 65 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a  e-stmt 1.</tcl>.
a970: 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 54 41 42  .<p>The DROP TAB
a980: 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 72 65 6d  LE statement rem
a990: 6f 76 65 73 20 61 20 74 61 62 6c 65 20 61 64 64  oves a table add
a9a0: 65 64 20 77 69 74 68 20 74 68 65 0a 5b 43 52 45  ed with the.[CRE
a9b0: 41 54 45 20 54 41 42 4c 45 5d 20 73 74 61 74 65  ATE TABLE] state
a9c0: 6d 65 6e 74 2e 20 20 54 68 65 20 6e 61 6d 65 20  ment.  The name 
a9d0: 73 70 65 63 69 66 69 65 64 20 69 73 20 74 68 65  specified is the
a9e0: 0a 74 61 62 6c 65 20 6e 61 6d 65 2e 20 20 49 74  .table name.  It
a9f0: 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72   is completely r
aa00: 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20  emoved from the 
aa10: 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20  database schema 
aa20: 61 6e 64 20 74 68 65 20 0a 64 69 73 6b 20 66 69  and the .disk fi
aa30: 6c 65 2e 20 20 54 68 65 20 74 61 62 6c 65 20 63  le.  The table c
aa40: 61 6e 20 6e 6f 74 20 62 65 20 72 65 63 6f 76 65  an not be recove
aa50: 72 65 64 2e 20 20 41 6c 6c 20 69 6e 64 69 63 65  red.  All indice
aa60: 73 20 61 6e 64 20 74 72 69 67 67 65 72 73 0a 61  s and triggers.a
aa70: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
aa80: 68 65 20 74 61 62 6c 65 20 61 72 65 20 61 6c 73  he table are als
aa90: 6f 20 64 65 6c 65 74 65 64 2e 3c 2f 70 3e 0a 0a  o deleted.</p>..
aaa0: 3c 70 3e 54 68 65 20 44 52 4f 50 20 54 41 42 4c  <p>The DROP TABL
aab0: 45 20 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73  E statement does
aac0: 20 6e 6f 74 20 72 65 64 75 63 65 20 74 68 65 20   not reduce the 
aad0: 73 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61  size of the data
aae0: 62 61 73 65 20 0a 66 69 6c 65 20 69 6e 20 74 68  base .file in th
aaf0: 65 20 64 65 66 61 75 6c 74 20 6d 6f 64 65 2e 20  e default mode. 
ab00: 20 45 6d 70 74 79 20 73 70 61 63 65 20 69 6e 20   Empty space in 
ab10: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
ab20: 72 65 74 61 69 6e 65 64 20 66 6f 72 0a 6c 61 74  retained for.lat
ab30: 65 72 20 5b 49 4e 53 45 52 54 5d 20 73 74 61 74  er [INSERT] stat
ab40: 65 6d 65 6e 74 73 2e 20 20 54 6f 20 0a 72 65 6d  ements.  To .rem
ab50: 6f 76 65 20 66 72 65 65 20 73 70 61 63 65 20 69  ove free space i
ab60: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 2c 20  n the database, 
ab70: 0a 75 73 65 20 74 68 65 20 5b 56 41 43 55 55 4d  .use the [VACUUM
ab80: 5d 20 73 74 61 74 65 6d 65 6e 74 2e 0a 49 66 20  ] statement..If 
ab90: 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 6d 6f  [auto_vacuum] mo
aba0: 64 65 20 69 73 20 65 6e 61 62 6c 65 64 20 66 6f  de is enabled fo
abb0: 72 20 61 20 64 61 74 61 62 61 73 65 20 74 68 65  r a database the
abc0: 6e 20 73 70 61 63 65 0a 77 69 6c 6c 20 62 65 20  n space.will be 
abd0: 66 72 65 65 64 20 61 75 74 6f 6d 61 74 69 63 61  freed automatica
abe0: 6c 6c 79 20 62 79 20 44 52 4f 50 20 54 41 42 4c  lly by DROP TABL
abf0: 45 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f  E.</p>..<p>The o
ac00: 70 74 69 6f 6e 61 6c 20 49 46 20 45 58 49 53 54  ptional IF EXIST
ac10: 53 20 63 6c 61 75 73 65 20 73 75 70 70 72 65 73  S clause suppres
ac20: 73 65 73 20 74 68 65 20 65 72 72 6f 72 20 74 68  ses the error th
ac30: 61 74 20 77 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c  at would normall
ac40: 79 0a 72 65 73 75 6c 74 20 69 66 20 74 68 65 20  y.result if the 
ac50: 74 61 62 6c 65 20 64 6f 65 73 20 6e 6f 74 20 65  table does not e
ac60: 78 69 73 74 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  xist.</p>..<tcl>
ac70: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
ac80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ac90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
aca0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
acb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
acc0: 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54 52  Section {DROP TR
acd0: 49 47 47 45 52 7d 20 64 72 6f 70 74 72 69 67 67  IGGER} droptrigg
ace0: 65 72 20 7b 7b 44 52 4f 50 20 54 52 49 47 47 45  er {{DROP TRIGGE
acf0: 52 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  R}}..BubbleDiagr
ad00: 61 6d 20 64 72 6f 70 2d 74 72 69 67 67 65 72 2d  am drop-trigger-
ad10: 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c  stmt 1.</tcl>..<
ad20: 70 3e 54 68 65 20 44 52 4f 50 20 54 52 49 47 47  p>The DROP TRIGG
ad30: 45 52 20 73 74 61 74 65 6d 65 6e 74 20 72 65 6d  ER statement rem
ad40: 6f 76 65 73 20 61 20 74 72 69 67 67 65 72 20 63  oves a trigger c
ad50: 72 65 61 74 65 64 20 62 79 20 74 68 65 20 0a 5b  reated by the .[
ad60: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 5d 20  CREATE TRIGGER] 
ad70: 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20  statement.  The 
ad80: 74 72 69 67 67 65 72 20 69 73 20 0a 64 65 6c 65  trigger is .dele
ad90: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74  ted from the dat
ada0: 61 62 61 73 65 20 73 63 68 65 6d 61 2e 20 4e 6f  abase schema. No
adb0: 74 65 20 74 68 61 74 20 74 72 69 67 67 65 72 73  te that triggers
adc0: 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c   are automatical
add0: 6c 79 20 0a 64 72 6f 70 70 65 64 20 77 68 65 6e  ly .dropped when
ade0: 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20   the associated 
adf0: 74 61 62 6c 65 20 69 73 20 64 72 6f 70 70 65 64  table is dropped
ae00: 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23  .</p>..<tcl>.###
ae10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ae20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ae30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ae40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ae50: 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74  ###########.Sect
ae60: 69 6f 6e 20 7b 44 52 4f 50 20 56 49 45 57 7d 20  ion {DROP VIEW} 
ae70: 64 72 6f 70 76 69 65 77 20 7b 7b 44 52 4f 50 20  dropview {{DROP 
ae80: 56 49 45 57 7d 7d 0a 0a 42 75 62 62 6c 65 44 69  VIEW}}..BubbleDi
ae90: 61 67 72 61 6d 20 64 72 6f 70 2d 76 69 65 77 2d  agram drop-view-
aea0: 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c  stmt 1.</tcl>..<
aeb0: 70 3e 54 68 65 20 44 52 4f 50 20 56 49 45 57 20  p>The DROP VIEW 
aec0: 73 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65  statement remove
aed0: 73 20 61 20 76 69 65 77 20 63 72 65 61 74 65 64  s a view created
aee0: 20 62 79 20 74 68 65 0a 5b 43 52 45 41 54 45 20   by the.[CREATE 
aef0: 56 49 45 57 5d 20 73 74 61 74 65 6d 65 6e 74 2e  VIEW] statement.
af00: 20 20 54 68 65 20 6e 61 6d 65 20 73 70 65 63 69    The name speci
af10: 66 69 65 64 20 69 73 20 74 68 65 20 0a 76 69 65  fied is the .vie
af20: 77 20 6e 61 6d 65 2e 20 20 49 74 20 69 73 20 72  w name.  It is r
af30: 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20  emoved from the 
af40: 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 2c  database schema,
af50: 20 62 75 74 20 6e 6f 20 61 63 74 75 61 6c 20 64   but no actual d
af60: 61 74 61 20 0a 69 6e 20 74 68 65 20 75 6e 64 65  ata .in the unde
af70: 72 6c 79 69 6e 67 20 62 61 73 65 20 74 61 62 6c  rlying base tabl
af80: 65 73 20 69 73 20 6d 6f 64 69 66 69 65 64 2e 3c  es is modified.<
af90: 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  /p>..<tcl>.#####
afa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
afb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
afc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
afd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
afe0: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
aff0: 6e 20 45 58 50 4c 41 49 4e 20 65 78 70 6c 61 69  n EXPLAIN explai
b000: 6e 20 45 58 50 4c 41 49 4e 0a 0a 42 75 62 62 6c  n EXPLAIN..Bubbl
b010: 65 44 69 61 67 72 61 6d 20 73 71 6c 2d 73 74 6d  eDiagram sql-stm
b020: 74 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 41 6e 20  t.</tcl>..<p>An 
b030: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 63 61  SQL statement ca
b040: 6e 20 62 65 20 70 72 65 63 65 64 65 64 20 62 79  n be preceded by
b050: 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22 45 58   the keyword "EX
b060: 50 4c 41 49 4e 22 20 6f 72 0a 62 79 20 74 68 65  PLAIN" or.by the
b070: 20 70 68 72 61 73 65 20 22 45 58 50 4c 41 49 4e   phrase "EXPLAIN
b080: 20 51 55 45 52 59 20 50 4c 41 4e 22 2e 20 20 45   QUERY PLAN".  E
b090: 69 74 68 65 72 20 6d 6f 64 69 66 69 63 61 74 69  ither modificati
b0a0: 6f 6e 20 63 61 75 73 65 73 20 74 68 65 0a 53 51  on causes the.SQ
b0b0: 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 62  L statement to b
b0c0: 65 68 61 76 65 20 61 73 20 61 20 71 75 65 72 79  ehave as a query
b0d0: 20 61 6e 64 20 74 6f 20 72 65 74 75 72 6e 20 69   and to return i
b0e0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74  nformation about
b0f0: 0a 68 6f 77 20 74 68 65 20 53 51 4c 20 73 74 61  .how the SQL sta
b100: 74 65 6d 65 6e 74 20 77 6f 75 6c 64 20 68 61 76  tement would hav
b110: 65 20 6f 70 65 72 61 74 65 64 20 69 66 20 74 68  e operated if th
b120: 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72  e EXPLAIN keywor
b130: 64 20 6f 72 0a 70 68 72 61 73 65 20 68 61 64 20  d or.phrase had 
b140: 62 65 65 6e 20 6f 6d 69 74 74 65 64 2e 3c 2f 70  been omitted.</p
b150: 3e 0a 0a 3c 70 3e 57 68 65 6e 20 74 68 65 20 45  >..<p>When the E
b160: 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20 61  XPLAIN keyword a
b170: 70 70 65 61 72 73 20 62 79 20 69 74 73 65 6c 66  ppears by itself
b180: 20 69 74 20 63 61 75 73 65 73 20 74 68 65 20 73   it causes the s
b190: 74 61 74 65 6d 65 6e 74 0a 74 6f 20 62 65 68 61  tatement.to beha
b1a0: 76 65 20 61 73 20 61 20 71 75 65 72 79 20 74 68  ve as a query th
b1b0: 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 73  at returns the s
b1c0: 65 71 75 65 6e 63 65 20 6f 66 20 0a 3c 61 20 68  equence of .<a h
b1d0: 72 65 66 3d 22 6f 70 63 6f 64 65 2e 68 74 6d 6c  ref="opcode.html
b1e0: 22 3e 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e  ">virtual machin
b1f0: 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 3c 2f  e instructions</
b200: 61 3e 20 69 74 20 77 6f 75 6c 64 20 68 61 76 65  a> it would have
b210: 0a 75 73 65 64 20 74 6f 20 65 78 65 63 75 74 65  .used to execute
b220: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 68 61 64   the command had
b230: 20 74 68 65 20 45 58 50 4c 41 49 4e 20 6b 65 79   the EXPLAIN key
b240: 77 6f 72 64 20 6e 6f 74 20 62 65 65 6e 20 70 72  word not been pr
b250: 65 73 65 6e 74 2e 0a 57 68 65 6e 20 74 68 65 20  esent..When the 
b260: 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c  EXPLAIN QUERY PL
b270: 41 4e 20 70 68 72 61 73 65 20 61 70 70 65 61 72  AN phrase appear
b280: 73 2c 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  s, the statement
b290: 20 72 65 74 75 72 6e 73 0a 68 69 67 68 2d 6c 65   returns.high-le
b2a0: 76 65 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  vel information 
b2b0: 61 62 6f 75 74 20 77 68 61 74 20 69 6e 64 69 63  about what indic
b2c0: 65 73 20 77 6f 75 6c 64 20 68 61 76 65 20 62 65  es would have be
b2d0: 65 6e 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  en used.</p>..<p
b2e0: 3e 54 68 65 20 6f 75 74 70 75 74 20 66 72 6f 6d  >The output from
b2f0: 20 45 58 50 4c 41 49 4e 20 61 6e 64 20 45 58 50   EXPLAIN and EXP
b300: 4c 41 49 4e 20 51 55 45 52 59 20 50 4c 41 4e 20  LAIN QUERY PLAN 
b310: 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 0a  is intended for.
b320: 69 6e 74 65 72 61 63 74 69 76 65 20 61 6e 61 6c  interactive anal
b330: 79 73 69 73 20 61 6e 64 20 74 72 6f 75 62 6c 65  ysis and trouble
b340: 73 68 6f 6f 74 69 6e 67 20 6f 6e 6c 79 2e 20 20  shooting only.  
b350: 54 68 65 20 64 65 74 61 69 6c 73 20 6f 66 20 74  The details of t
b360: 68 65 20 0a 6f 75 74 70 75 74 20 66 6f 72 6d 61  he .output forma
b370: 74 20 61 72 65 20 73 75 62 6a 65 63 74 20 74 6f  t are subject to
b380: 20 63 68 61 6e 67 65 20 66 72 6f 6d 20 6f 6e 65   change from one
b390: 20 72 65 6c 65 61 73 65 20 6f 66 20 53 51 4c 69   release of SQLi
b3a0: 74 65 20 74 6f 20 74 68 65 20 6e 65 78 74 2e 0a  te to the next..
b3b0: 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 73 68 6f  Applications sho
b3c0: 75 6c 64 20 6e 6f 74 20 75 73 65 20 45 58 50 4c  uld not use EXPL
b3d0: 41 49 4e 20 6f 72 20 45 58 50 4c 41 49 4e 20 51  AIN or EXPLAIN Q
b3e0: 55 45 52 59 20 50 4c 41 4e 20 73 69 6e 63 65 0a  UERY PLAN since.
b3f0: 74 68 65 69 72 20 62 65 68 61 76 69 6f 72 20 69  their behavior i
b400: 73 20 75 6e 64 6f 63 75 6d 65 6e 74 65 64 2c 20  s undocumented, 
b410: 75 6e 73 70 65 63 69 66 69 65 64 2c 20 61 6e 64  unspecified, and
b420: 20 76 61 72 69 61 62 6c 65 2e 3c 2f 70 3e 0a 0a   variable.</p>..
b430: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
b440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b470: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b480: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 65 78 70  ####.Section exp
b490: 72 65 73 73 69 6f 6e 20 65 78 70 72 20 7b 65 78  ression expr {ex
b4a0: 70 72 65 73 73 69 6f 6e 20 7b 65 78 70 72 65 73  pression {expres
b4b0: 73 69 6f 6e 20 73 79 6e 74 61 78 7d 7d 0a 0a 42  sion syntax}}..B
b4c0: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 65 78 70  ubbleDiagram exp
b4d0: 72 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61  r 1.BubbleDiagra
b4e0: 6d 20 6c 69 74 65 72 61 6c 2d 76 61 6c 75 65 0a  m literal-value.
b4f0: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 73 69  BubbleDiagram si
b500: 67 6e 65 64 2d 6e 75 6d 62 65 72 0a 42 75 62 62  gned-number.Bubb
b510: 6c 65 44 69 61 67 72 61 6d 20 72 61 69 73 65 2d  leDiagram raise-
b520: 66 75 6e 63 74 69 6f 6e 0a 3c 2f 74 63 6c 3e 0a  function.</tcl>.
b530: 0a 3c 70 3e 54 68 69 73 20 73 65 63 74 69 6f 6e  .<p>This section
b540: 20 69 73 20 64 69 66 66 65 72 65 6e 74 20 66 72   is different fr
b550: 6f 6d 20 74 68 65 20 6f 74 68 65 72 73 2e 20 20  om the others.  
b560: 4d 6f 73 74 20 6f 74 68 65 72 20 73 65 63 74 69  Most other secti
b570: 6f 6e 73 20 6f 66 0a 74 68 69 73 20 64 6f 63 75  ons of.this docu
b580: 6d 65 6e 74 20 74 61 6c 6b 73 20 61 62 6f 75 74  ment talks about
b590: 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 53 51   a particular SQ
b5a0: 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73  L command.  This
b5b0: 20 73 65 63 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f   section does.no
b5c0: 74 20 74 61 6c 6b 20 61 62 6f 75 74 20 61 20 73  t talk about a s
b5d0: 74 61 6e 64 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e  tandalone comman
b5e0: 64 20 62 75 74 20 61 62 6f 75 74 20 22 65 78 70  d but about "exp
b5f0: 72 65 73 73 69 6f 6e 73 22 20 77 68 69 63 68 20  ressions" which 
b600: 61 72 65 20 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e  are .subcomponen
b610: 74 73 20 6f 66 20 6d 6f 73 74 20 6f 74 68 65 72  ts of most other
b620: 20 63 6f 6d 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a   commands.</p>..
b630: 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74  <tcl>hd_fragment
b640: 20 62 69 6e 61 72 79 6f 70 73 20 7b 62 69 6e 61   binaryops {bina
b650: 72 79 20 6f 70 65 72 61 74 6f 72 73 7d 3c 2f 74  ry operators}</t
b660: 63 6c 3e 0a 3c 70 3e 53 51 4c 69 74 65 20 75 6e  cl>.<p>SQLite un
b670: 64 65 72 73 74 61 6e 64 73 20 74 68 65 20 66 6f  derstands the fo
b680: 6c 6c 6f 77 69 6e 67 20 62 69 6e 61 72 79 20 6f  llowing binary o
b690: 70 65 72 61 74 6f 72 73 2c 20 69 6e 20 6f 72 64  perators, in ord
b6a0: 65 72 20 66 72 6f 6d 0a 68 69 67 68 65 73 74 20  er from.highest 
b6b0: 74 6f 20 6c 6f 77 65 73 74 20 70 72 65 63 65 64  to lowest preced
b6c0: 65 6e 63 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  ence:</p>..<bloc
b6d0: 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 3c 66 6f  kquote><pre>.<fo
b6e0: 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66  nt color="#2c2cf
b6f0: 30 22 3e 3c 62 69 67 3e 7c 7c 0a 2a 20 20 20 20  0"><big>||.*    
b700: 2f 20 20 20 20 25 0a 2b 20 20 20 20 2d 0a 26 6c  /    %.+    -.&l
b710: 74 3b 26 6c 74 3b 20 20 20 26 67 74 3b 26 67 74  t;&lt;   &gt;&gt
b720: 3b 20 20 20 26 61 6d 70 3b 20 20 20 20 7c 0a 26  ;   &amp;    |.&
b730: 6c 74 3b 20 20 20 20 26 6c 74 3b 3d 20 20 20 26  lt;    &lt;=   &
b740: 67 74 3b 20 20 20 20 26 67 74 3b 3d 0a 3d 20 20  gt;    &gt;=.=  
b750: 20 20 3d 3d 20 20 20 21 3d 20 20 20 26 6c 74 3b    ==   !=   &lt;
b760: 26 67 74 3b 20 20 20 3c 2f 62 69 67 3e 49 4e 20  &gt;   </big>IN 
b770: 20 4c 49 4b 45 20 20 47 4c 4f 42 20 20 4d 41 54   LIKE  GLOB  MAT
b780: 43 48 20 20 52 45 47 45 58 50 0a 41 4e 44 20 20  CH  REGEXP.AND  
b790: 20 0a 4f 52 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72   .OR</font>.</pr
b7a0: 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  e></blockquote>.
b7b0: 0a 3c 70 3e 53 75 70 70 6f 72 74 65 64 20 75 6e  .<p>Supported un
b7c0: 61 72 79 20 70 72 65 66 69 78 20 6f 70 65 72 61  ary prefix opera
b7d0: 74 6f 72 73 20 61 72 65 20 74 68 65 73 65 3a 3c  tors are these:<
b7e0: 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
b7f0: 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c  ><pre>.<font col
b800: 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69  or="#2c2cf0"><bi
b810: 67 3e 2d 20 20 20 20 2b 20 20 20 20 7e 20 20 20  g>-    +    ~   
b820: 20 4e 4f 54 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74   NOT</big></font
b830: 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71  >.</pre></blockq
b840: 75 6f 74 65 3e 0a 0a 3c 70 3e 54 68 65 20 43 4f  uote>..<p>The CO
b850: 4c 4c 41 54 45 20 6f 70 65 72 61 74 6f 72 20 63  LLATE operator c
b860: 61 6e 20 62 65 20 74 68 6f 75 67 68 74 20 6f 66  an be thought of
b870: 20 61 73 20 61 20 75 6e 61 72 79 20 70 6f 73 74   as a unary post
b880: 66 69 78 0a 6f 70 65 72 61 74 6f 72 2e 20 20 54  fix.operator.  T
b890: 68 65 20 43 4f 4c 4c 41 54 45 20 6f 70 65 72 61  he COLLATE opera
b8a0: 74 6f 72 20 68 61 73 20 74 68 65 20 68 69 67 68  tor has the high
b8b0: 65 73 74 20 70 72 65 63 65 64 65 6e 63 65 2e 0a  est precedence..
b8c0: 49 74 20 61 6c 77 61 79 73 20 62 69 6e 64 73 20  It always binds 
b8d0: 6d 6f 72 65 20 74 69 67 68 74 6c 79 20 74 68 61  more tightly tha
b8e0: 6e 20 61 6e 79 20 70 72 65 66 69 78 20 75 6e 61  n any prefix una
b8f0: 72 79 20 6f 70 65 72 61 74 6f 72 20 6f 72 0a 61  ry operator or.a
b900: 6e 79 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74  ny binary operat
b910: 6f 72 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64  or.</p>..<tcl>hd
b920: 5f 70 75 74 73 20 22 0a 3c 70 3e 54 68 65 20 75  _puts ".<p>The u
b930: 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 5b 4f  nary operator [O
b940: 70 65 72 61 74 6f 72 20 2b 5d 20 69 73 20 61 20  perator +] is a 
b950: 6e 6f 2d 6f 70 2e 20 20 49 74 20 63 61 6e 20 62  no-op.  It can b
b960: 65 20 61 70 70 6c 69 65 64 0a 74 6f 20 73 74 72  e applied.to str
b970: 69 6e 67 73 2c 20 6e 75 6d 62 65 72 73 2c 20 6f  ings, numbers, o
b980: 72 20 62 6c 6f 62 73 20 61 6e 64 20 69 74 20 61  r blobs and it a
b990: 6c 77 61 79 73 20 67 69 76 65 73 20 61 73 20 69  lways gives as i
b9a0: 74 73 20 72 65 73 75 6c 74 20 74 68 65 0a 76 61  ts result the.va
b9b0: 6c 75 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61  lue of the opera
b9c0: 6e 64 2e 3c 2f 70 3e 22 3c 2f 74 63 6c 3e 0a 0a  nd.</p>"</tcl>..
b9d0: 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 74 68 65  <p>Note that the
b9e0: 72 65 20 61 72 65 20 74 77 6f 20 76 61 72 69 61  re are two varia
b9f0: 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 65 71 75  tions of the equ
ba00: 61 6c 73 20 61 6e 64 20 6e 6f 74 20 65 71 75 61  als and not equa
ba10: 6c 73 0a 6f 70 65 72 61 74 6f 72 73 2e 20 20 45  ls.operators.  E
ba20: 71 75 61 6c 73 20 63 61 6e 20 62 65 20 65 69 74  quals can be eit
ba30: 68 65 72 0a 0a 3c 74 63 6c 3e 0a 68 64 5f 70 75  her..<tcl>.hd_pu
ba40: 74 73 20 22 5b 4f 70 65 72 61 74 6f 72 20 3d 5d  ts "[Operator =]
ba50: 20 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 3d 3d   or [Operator ==
ba60: 5d 2e 0a 54 68 65 20 6e 6f 6e 2d 65 71 75 61 6c  ]..The non-equal
ba70: 73 20 6f 70 65 72 61 74 6f 72 20 63 61 6e 20 62  s operator can b
ba80: 65 20 65 69 74 68 65 72 0a 5b 4f 70 65 72 61 74  e either.[Operat
ba90: 6f 72 20 21 3d 5d 20 6f 72 20 5b 4f 70 65 72 61  or !=] or [Opera
baa0: 74 6f 72 20 7b 26 6c 74 3b 26 67 74 3b 7d 5d 2e  tor {&lt;&gt;}].
bab0: 0a 54 68 65 20 5b 4f 70 65 72 61 74 6f 72 20 7c  .The [Operator |
bac0: 7c 5d 20 6f 70 65 72 61 74 6f 72 20 69 73 20 5c  |] operator is \
bad0: 22 63 6f 6e 63 61 74 65 6e 61 74 65 5c 22 20 2d  "concatenate\" -
bae0: 20 69 74 20 6a 6f 69 6e 73 20 74 6f 67 65 74 68   it joins togeth
baf0: 65 72 0a 74 68 65 20 74 77 6f 20 73 74 72 69 6e  er.the two strin
bb00: 67 73 20 6f 66 20 69 74 73 20 6f 70 65 72 61 6e  gs of its operan
bb10: 64 73 2e 0a 54 68 65 20 6f 70 65 72 61 74 6f 72  ds..The operator
bb20: 20 5b 4f 70 65 72 61 74 6f 72 20 25 5d 20 6f 75   [Operator %] ou
bb30: 74 70 75 74 73 20 74 68 65 20 72 65 6d 61 69 6e  tputs the remain
bb40: 64 65 72 20 6f 66 20 69 74 73 20 6c 65 66 74 20  der of its left 
bb50: 0a 6f 70 65 72 61 6e 64 20 6d 6f 64 75 6c 6f 20  .operand modulo 
bb60: 69 74 73 20 72 69 67 68 74 20 6f 70 65 72 61 6e  its right operan
bb70: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 72  d.</p>..<p>The r
bb80: 65 73 75 6c 74 20 6f 66 20 61 6e 79 20 62 69 6e  esult of any bin
bb90: 61 72 79 20 6f 70 65 72 61 74 6f 72 20 69 73 20  ary operator is 
bba0: 61 20 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 2c  a numeric value,
bbb0: 20 65 78 63 65 70 74 0a 66 6f 72 20 74 68 65 20   except.for the 
bbc0: 5b 4f 70 65 72 61 74 6f 72 20 7c 7c 5d 20 63 6f  [Operator ||] co
bbd0: 6e 63 61 74 65 6e 61 74 69 6f 6e 20 6f 70 65 72  ncatenation oper
bbe0: 61 74 6f 72 20 77 68 69 63 68 20 67 69 76 65 73  ator which gives
bbf0: 20 61 20 73 74 72 69 6e 67 0a 72 65 73 75 6c 74   a string.result
bc00: 2e 3c 2f 70 3e 22 3c 2f 74 63 6c 3e 0a 0a 3c 61  .</p>"</tcl>..<a
bc10: 20 6e 61 6d 65 3d 22 6c 69 74 65 72 61 6c 5f 76   name="literal_v
bc20: 61 6c 75 65 22 3e 3c 2f 61 3e 0a 3c 70 3e 0a 41  alue"></a>.<p>.A
bc30: 20 6c 69 74 65 72 61 6c 20 76 61 6c 75 65 20 69   literal value i
bc40: 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d  s an integer num
bc50: 62 65 72 20 6f 72 20 61 20 66 6c 6f 61 74 69 6e  ber or a floatin
bc60: 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 2e 0a  g point number..
bc70: 53 63 69 65 6e 74 69 66 69 63 20 6e 6f 74 61 74  Scientific notat
bc80: 69 6f 6e 20 69 73 20 73 75 70 70 6f 72 74 65 64  ion is supported
bc90: 2e 20 20 54 68 65 20 22 2e 22 20 63 68 61 72 61  .  The "." chara
bca0: 63 74 65 72 20 69 73 20 61 6c 77 61 79 73 20 75  cter is always u
bcb0: 73 65 64 0a 61 73 20 74 68 65 20 64 65 63 69 6d  sed.as the decim
bcc0: 61 6c 20 70 6f 69 6e 74 20 65 76 65 6e 20 69 66  al point even if
bcd0: 20 74 68 65 20 6c 6f 63 61 6c 65 20 73 65 74 74   the locale sett
bce0: 69 6e 67 20 73 70 65 63 69 66 69 65 73 20 22 2c  ing specifies ",
bcf0: 22 20 66 6f 72 0a 74 68 69 73 20 72 6f 6c 65 20  " for.this role 
bd00: 2d 20 74 68 65 20 75 73 65 20 6f 66 20 22 2c 22  - the use of ","
bd10: 20 66 6f 72 20 74 68 65 20 64 65 63 69 6d 61 6c   for the decimal
bd20: 20 70 6f 69 6e 74 20 77 6f 75 6c 64 20 72 65 73   point would res
bd30: 75 6c 74 20 69 6e 0a 73 79 6e 74 61 63 74 69 63  ult in.syntactic
bd40: 20 61 6d 62 69 67 75 69 74 79 2e 20 20 41 20 73   ambiguity.  A s
bd50: 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 69  tring constant i
bd60: 73 20 66 6f 72 6d 65 64 20 62 79 20 65 6e 63 6c  s formed by encl
bd70: 6f 73 69 6e 67 20 74 68 65 0a 73 74 72 69 6e 67  osing the.string
bd80: 20 69 6e 20 73 69 6e 67 6c 65 20 71 75 6f 74 65   in single quote
bd90: 73 20 28 27 29 2e 20 20 41 20 73 69 6e 67 6c 65  s (').  A single
bda0: 20 71 75 6f 74 65 20 77 69 74 68 69 6e 20 74 68   quote within th
bdb0: 65 20 73 74 72 69 6e 67 20 63 61 6e 0a 62 65 20  e string can.be 
bdc0: 65 6e 63 6f 64 65 64 20 62 79 20 70 75 74 74 69  encoded by putti
bdd0: 6e 67 20 74 77 6f 20 73 69 6e 67 6c 65 20 71 75  ng two single qu
bde0: 6f 74 65 73 20 69 6e 20 61 20 72 6f 77 20 2d 20  otes in a row - 
bdf0: 61 73 20 69 6e 20 50 61 73 63 61 6c 2e 0a 43 2d  as in Pascal..C-
be00: 73 74 79 6c 65 20 65 73 63 61 70 65 73 20 75 73  style escapes us
be10: 69 6e 67 20 74 68 65 20 62 61 63 6b 73 6c 61 73  ing the backslas
be20: 68 20 63 68 61 72 61 63 74 65 72 20 61 72 65 20  h character are 
be30: 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 62 65  not supported be
be40: 63 61 75 73 65 0a 74 68 65 79 20 61 72 65 20 6e  cause.they are n
be50: 6f 74 20 73 74 61 6e 64 61 72 64 20 53 51 4c 2e  ot standard SQL.
be60: 0a 42 4c 4f 42 20 6c 69 74 65 72 61 6c 73 20 61  .BLOB literals a
be70: 72 65 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61  re string litera
be80: 6c 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 68 65  ls containing he
be90: 78 61 64 65 63 69 6d 61 6c 20 64 61 74 61 20 61  xadecimal data a
bea0: 6e 64 0a 70 72 65 63 65 64 65 64 20 62 79 20 61  nd.preceded by a
beb0: 20 73 69 6e 67 6c 65 20 22 78 22 20 6f 72 20 22   single "x" or "
bec0: 58 22 20 63 68 61 72 61 63 74 65 72 2e 20 20 46  X" character.  F
bed0: 6f 72 20 65 78 61 6d 70 6c 65 3a 3c 2f 70 3e 0a  or example:</p>.
bee0: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72  .<blockquote><pr
bef0: 65 3e 0a 58 27 35 33 35 31 34 43 36 39 37 34 36  e>.X'53514C69746
bf00: 35 27 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  5'.</pre></block
bf10: 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 41 20 6c 69  quote>..<p>.A li
bf20: 74 65 72 61 6c 20 76 61 6c 75 65 20 63 61 6e 20  teral value can 
bf30: 61 6c 73 6f 20 62 65 20 74 68 65 20 74 6f 6b 65  also be the toke
bf40: 6e 20 22 4e 55 4c 4c 22 2e 0a 3c 2f 70 3e 0a 0a  n "NULL"..</p>..
bf50: 3c 70 3e 0a 41 20 70 61 72 61 6d 65 74 65 72 20  <p>.A parameter 
bf60: 73 70 65 63 69 66 69 65 73 20 61 20 70 6c 61 63  specifies a plac
bf70: 65 68 6f 6c 64 65 72 20 69 6e 20 74 68 65 20 65  eholder in the e
bf80: 78 70 72 65 73 73 69 6f 6e 20 66 6f 72 20 61 20  xpression for a 
bf90: 6c 69 74 65 72 61 6c 0a 76 61 6c 75 65 20 74 68  literal.value th
bfa0: 61 74 20 69 73 20 66 69 6c 6c 65 64 20 69 6e 20  at is filled in 
bfb0: 61 74 20 72 75 6e 74 69 6d 65 20 75 73 69 6e 67  at runtime using
bfc0: 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f 62 69   the.[sqlite3_bi
bfd0: 6e 64 5f 62 6c 6f 62 28 29 20 7c 20 73 71 6c 69  nd_blob() | sqli
bfe0: 74 65 33 5f 62 69 6e 64 28 29 5d 20 41 50 49 73  te3_bind()] APIs
bff0: 2e 0a 50 61 72 61 6d 65 74 65 72 73 20 63 61 6e  ..Parameters can
c000: 20 74 61 6b 65 20 73 65 76 65 72 61 6c 20 66 6f   take several fo
c010: 72 6d 73 3a 0a 3c 2f 70 0a 0a 3c 62 6c 6f 63 6b  rms:.</p..<block
c020: 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 3e 0a 3c  quote>.<table>.<
c030: 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72  tr>.<td align="r
c040: 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f  ight" valign="to
c050: 70 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c 69 3e 4e 4e  p"><b>?</b><i>NN
c060: 4e 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77 69  N</i></td><td wi
c070: 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c  dth="20"></td>.<
c080: 74 64 3e 41 20 71 75 65 73 74 69 6f 6e 20 6d 61  td>A question ma
c090: 72 6b 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61  rk followed by a
c0a0: 20 6e 75 6d 62 65 72 20 3c 69 3e 4e 4e 4e 3c 2f   number <i>NNN</
c0b0: 69 3e 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20  i> holds a spot 
c0c0: 66 6f 72 20 74 68 65 0a 4e 4e 4e 2d 74 68 20 70  for the.NNN-th p
c0d0: 61 72 61 6d 65 74 65 72 2e 20 20 4e 4e 4e 20 6d  arameter.  NNN m
c0e0: 75 73 74 20 62 65 20 62 65 74 77 65 65 6e 20 31  ust be between 1
c0f0: 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f 4d 41 58   and [SQLITE_MAX
c100: 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52  _VARIABLE_NUMBER
c110: 5d 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74  ].</td>.</tr>.<t
c120: 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69  r>.<td align="ri
c130: 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70  ght" valign="top
c140: 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c 2f 74 64 3e 3c  "><b>?</b></td><
c150: 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f  td width="20"></
c160: 74 64 3e 0a 3c 74 64 3e 41 20 71 75 65 73 74 69  td>.<td>A questi
c170: 6f 6e 20 6d 61 72 6b 20 74 68 61 74 20 69 73 20  on mark that is 
c180: 6e 6f 74 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  not followed by 
c190: 61 20 6e 75 6d 62 65 72 20 68 6f 6c 64 73 20 61  a number holds a
c1a0: 20 73 70 6f 74 20 66 6f 72 0a 74 68 65 20 6e 65   spot for.the ne
c1b0: 78 74 20 75 6e 75 73 65 64 20 70 61 72 61 6d 65  xt unused parame
c1c0: 74 65 72 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ter.</td>.</tr>.
c1d0: 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22  <tr>.<td align="
c1e0: 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74  right" valign="t
c1f0: 6f 70 22 3e 3c 62 3e 3a 3c 2f 62 3e 3c 69 3e 41  op"><b>:</b><i>A
c200: 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20  AAA</i></td><td 
c210: 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e  width="20"></td>
c220: 0a 3c 74 64 3e 41 20 63 6f 6c 6f 6e 20 66 6f 6c  .<td>A colon fol
c230: 6c 6f 77 65 64 20 62 79 20 61 6e 20 69 64 65 6e  lowed by an iden
c240: 74 69 66 69 65 72 20 6e 61 6d 65 20 68 6f 6c 64  tifier name hold
c250: 73 20 61 20 73 70 6f 74 20 66 6f 72 20 61 20 6e  s a spot for a n
c260: 61 6d 65 64 0a 70 61 72 61 6d 65 74 65 72 20 77  amed.parameter w
c270: 69 74 68 20 74 68 65 20 6e 61 6d 65 20 41 41 41  ith the name AAA
c280: 41 2e 20 20 4e 61 6d 65 64 20 70 61 72 61 6d 65  A.  Named parame
c290: 74 65 72 73 20 61 72 65 20 61 6c 73 6f 20 6e 75  ters are also nu
c2a0: 6d 62 65 72 65 64 2e 0a 54 68 65 20 6e 75 6d 62  mbered..The numb
c2b0: 65 72 20 61 73 73 69 67 6e 65 64 20 69 73 20 74  er assigned is t
c2c0: 68 65 20 6e 65 78 74 20 75 6e 75 73 65 64 20 6e  he next unused n
c2d0: 75 6d 62 65 72 2e 20 20 54 6f 20 61 76 6f 69 64  umber.  To avoid
c2e0: 20 63 6f 6e 66 75 73 69 6f 6e 2c 0a 69 74 20 69   confusion,.it i
c2f0: 73 20 62 65 73 74 20 74 6f 20 61 76 6f 69 64 20  s best to avoid 
c300: 6d 69 78 69 6e 67 20 6e 61 6d 65 64 20 61 6e 64  mixing named and
c310: 20 6e 75 6d 62 65 72 65 64 20 70 61 72 61 6d 65   numbered parame
c320: 74 65 72 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  ters.</td>.</tr>
c330: 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d  .<tr>.<td align=
c340: 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22  "right" valign="
c350: 74 6f 70 22 3e 3c 62 3e 40 3c 2f 62 3e 3c 69 3e  top"><b>@</b><i>
c360: 41 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64  AAAA</i></td><td
c370: 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64   width="20"></td
c380: 3e 0a 3c 74 64 3e 41 6e 20 22 61 74 22 20 73 69  >.<td>An "at" si
c390: 67 6e 20 77 6f 72 6b 73 20 65 78 61 63 74 6c 79  gn works exactly
c3a0: 20 6c 69 6b 65 20 61 20 63 6f 6c 6f 6e 2e 3c 2f   like a colon.</
c3b0: 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c  td>.</tr>.<tr>.<
c3c0: 74 64 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  td align="right"
c3d0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62   valign="top"><b
c3e0: 3e 24 3c 2f 62 3e 3c 69 3e 41 41 41 41 3c 2f 69  >$</b><i>AAAA</i
c3f0: 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d  ></td><td width=
c400: 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41  "20"></td>.<td>A
c410: 20 64 6f 6c 6c 61 72 2d 73 69 67 6e 20 66 6f 6c   dollar-sign fol
c420: 6c 6f 77 65 64 20 62 79 20 61 6e 20 69 64 65 6e  lowed by an iden
c430: 74 69 66 69 65 72 20 6e 61 6d 65 20 61 6c 73 6f  tifier name also
c440: 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f   holds a spot fo
c450: 72 20 61 20 6e 61 6d 65 64 0a 70 61 72 61 6d 65  r a named.parame
c460: 74 65 72 20 77 69 74 68 20 74 68 65 20 6e 61 6d  ter with the nam
c470: 65 20 41 41 41 41 2e 20 20 54 68 65 20 69 64 65  e AAAA.  The ide
c480: 6e 74 69 66 69 65 72 20 6e 61 6d 65 20 69 6e 20  ntifier name in 
c490: 74 68 69 73 20 63 61 73 65 20 63 61 6e 20 69 6e  this case can in
c4a0: 63 6c 75 64 65 0a 6f 6e 65 20 6f 72 20 6d 6f 72  clude.one or mor
c4b0: 65 20 6f 63 63 75 72 61 6e 63 65 73 20 6f 66 20  e occurances of 
c4c0: 22 3a 3a 22 20 61 6e 64 20 61 20 73 75 66 66 69  "::" and a suffi
c4d0: 78 20 65 6e 63 6c 6f 73 65 64 20 69 6e 20 22 28  x enclosed in "(
c4e0: 2e 2e 2e 29 22 20 63 6f 6e 74 61 69 6e 69 6e 67  ...)" containing
c4f0: 0a 61 6e 79 20 74 65 78 74 20 61 74 20 61 6c 6c  .any text at all
c500: 2e 20 20 54 68 69 73 20 73 79 6e 74 61 78 20 69  .  This syntax i
c510: 73 20 74 68 65 20 66 6f 72 6d 20 6f 66 20 61 20  s the form of a 
c520: 76 61 72 69 61 62 6c 65 20 6e 61 6d 65 20 69 6e  variable name in
c530: 20 74 68 65 20 54 63 6c 0a 70 72 6f 67 72 61 6d   the Tcl.program
c540: 6d 69 6e 67 20 6c 61 6e 67 75 61 67 65 2e 3c 2f  ming language.</
c550: 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c  td>.</tr>.</tabl
c560: 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  e>.</blockquote>
c570: 0a 0a 3c 70 3e 50 61 72 61 6d 65 74 65 72 73 20  ..<p>Parameters 
c580: 74 68 61 74 20 61 72 65 20 6e 6f 74 20 61 73 73  that are not ass
c590: 69 67 6e 65 64 20 76 61 6c 75 65 73 20 75 73 69  igned values usi
c5a0: 6e 67 0a 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64  ng.[sqlite3_bind
c5b0: 5f 62 6c 6f 62 28 29 20 7c 20 73 71 6c 69 74 65  _blob() | sqlite
c5c0: 33 5f 62 69 6e 64 28 29 5d 20 61 72 65 20 74 72  3_bind()] are tr
c5d0: 65 61 74 65 64 0a 61 73 20 4e 55 4c 4c 2e 3c 2f  eated.as NULL.</
c5e0: 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67  p>..<tcl>hd_frag
c5f0: 6d 65 6e 74 20 6c 69 6b 65 20 4c 49 4b 45 20 45  ment like LIKE E
c600: 53 43 41 50 45 3c 2f 74 63 6c 3e 0a 3c 70 3e 54  SCAPE</tcl>.<p>T
c610: 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72  he LIKE operator
c620: 20 64 6f 65 73 20 61 20 70 61 74 74 65 72 6e 20   does a pattern 
c630: 6d 61 74 63 68 69 6e 67 20 63 6f 6d 70 61 72 69  matching compari
c640: 73 6f 6e 2e 20 54 68 65 20 6f 70 65 72 61 6e 64  son. The operand
c650: 0a 74 6f 20 74 68 65 20 72 69 67 68 74 20 63 6f  .to the right co
c660: 6e 74 61 69 6e 73 20 74 68 65 20 70 61 74 74 65  ntains the patte
c670: 72 6e 2c 20 74 68 65 20 6c 65 66 74 20 68 61 6e  rn, the left han
c680: 64 20 6f 70 65 72 61 6e 64 20 63 6f 6e 74 61 69  d operand contai
c690: 6e 73 20 74 68 65 0a 73 74 72 69 6e 67 20 74 6f  ns the.string to
c6a0: 20 6d 61 74 63 68 20 61 67 61 69 6e 73 74 20 74   match against t
c6b0: 68 65 20 70 61 74 74 65 72 6e 2e 0a 0a 3c 74 63  he pattern...<tc
c6c0: 6c 3e 68 64 5f 70 75 74 73 20 22 41 20 70 65 72  l>hd_puts "A per
c6d0: 63 65 6e 74 20 73 79 6d 62 6f 6c 20 5b 4f 70 65  cent symbol [Ope
c6e0: 72 61 74 6f 72 20 25 5d 20 69 6e 20 74 68 65 20  rator %] in the 
c6f0: 70 61 74 74 65 72 6e 20 6d 61 74 63 68 65 73 20  pattern matches 
c700: 61 6e 79 0a 73 65 71 75 65 6e 63 65 20 6f 66 20  any.sequence of 
c710: 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 63 68 61  zero or more cha
c720: 72 61 63 74 65 72 73 20 69 6e 20 74 68 65 20 73  racters in the s
c730: 74 72 69 6e 67 2e 20 20 41 6e 20 75 6e 64 65 72  tring.  An under
c740: 73 63 6f 72 65 0a 5b 4f 70 65 72 61 74 6f 72 20  score.[Operator 
c750: 5f 5d 20 69 6e 20 74 68 65 20 70 61 74 74 65 72  _] in the patter
c760: 6e 20 6d 61 74 63 68 65 73 20 61 6e 79 20 73 69  n matches any si
c770: 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72 20 69  ngle character i
c780: 6e 20 74 68 65 0a 73 74 72 69 6e 67 2e 20 20 41  n the.string.  A
c790: 6e 79 20 6f 74 68 65 72 20 63 68 61 72 61 63 74  ny other charact
c7a0: 65 72 20 6d 61 74 63 68 65 73 20 69 74 73 65 6c  er matches itsel
c7b0: 66 20 6f 72 20 69 74 27 73 20 6c 6f 77 65 72 2f  f or it's lower/
c7c0: 75 70 70 65 72 20 63 61 73 65 0a 65 71 75 69 76  upper case.equiv
c7d0: 61 6c 65 6e 74 20 28 69 2e 65 2e 20 63 61 73 65  alent (i.e. case
c7e0: 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 6d 61 74  -insensitive mat
c7f0: 63 68 69 6e 67 29 2e 20 20 28 41 20 62 75 67 3a  ching).  (A bug:
c800: 20 53 51 4c 69 74 65 20 6f 6e 6c 79 0a 75 6e 64   SQLite only.und
c810: 65 72 73 74 61 6e 64 73 20 75 70 70 65 72 2f 6c  erstands upper/l
c820: 6f 77 65 72 20 63 61 73 65 20 66 6f 72 20 37 2d  ower case for 7-
c830: 62 69 74 20 4c 61 74 69 6e 20 63 68 61 72 61 63  bit Latin charac
c840: 74 65 72 73 2e 20 20 48 65 6e 63 65 20 74 68 65  ters.  Hence the
c850: 0a 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 69  .LIKE operator i
c860: 73 20 63 61 73 65 20 73 65 6e 73 69 74 69 76 65  s case sensitive
c870: 20 66 6f 72 20 38 2d 62 69 74 20 69 73 6f 38 38   for 8-bit iso88
c880: 35 39 20 63 68 61 72 61 63 74 65 72 73 20 6f 72  59 characters or
c890: 20 55 54 46 2d 38 0a 63 68 61 72 61 63 74 65 72   UTF-8.character
c8a0: 73 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c  s.  For example,
c8b0: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
c8c0: 3c 62 3e 27 61 27 26 6e 62 73 70 3b 4c 49 4b 45  <b>'a'&nbsp;LIKE
c8d0: 26 6e 62 73 70 3b 27 41 27 3c 2f 62 3e 0a 69 73  &nbsp;'A'</b>.is
c8e0: 20 54 52 55 45 20 62 75 74 20 3c 62 3e 27 26 61   TRUE but <b>'&a
c8f0: 65 6c 69 67 3b 27 26 6e 62 73 70 3b 4c 49 4b 45  elig;'&nbsp;LIKE
c900: 26 6e 62 73 70 3b 27 26 41 45 6c 69 67 3b 27 3c  &nbsp;'&AElig;'<
c910: 2f 62 3e 20 69 73 20 46 41 4c 53 45 2e 29 2e 3c  /b> is FALSE.).<
c920: 2f 70 3e 22 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 49  /p>"</tcl>..<p>I
c930: 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20 45  f the optional E
c940: 53 43 41 50 45 20 63 6c 61 75 73 65 20 69 73 20  SCAPE clause is 
c950: 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 74 68  present, then th
c960: 65 20 65 78 70 72 65 73 73 69 6f 6e 0a 66 6f 6c  e expression.fol
c970: 6c 6f 77 69 6e 67 20 74 68 65 20 45 53 43 41 50  lowing the ESCAP
c980: 45 20 6b 65 79 77 6f 72 64 20 6d 75 73 74 20 65  E keyword must e
c990: 76 61 6c 75 61 74 65 20 74 6f 20 61 20 73 74 72  valuate to a str
c9a0: 69 6e 67 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f  ing consisting o
c9b0: 66 0a 61 20 73 69 6e 67 6c 65 20 63 68 61 72 61  f.a single chara
c9c0: 63 74 65 72 2e 20 54 68 69 73 20 63 68 61 72 61  cter. This chara
c9d0: 63 74 65 72 20 6d 61 79 20 62 65 20 75 73 65 64  cter may be used
c9e0: 20 69 6e 20 74 68 65 20 4c 49 4b 45 20 70 61 74   in the LIKE pat
c9f0: 74 65 72 6e 0a 74 6f 20 69 6e 63 6c 75 64 65 20  tern.to include 
ca00: 6c 69 74 65 72 61 6c 20 70 65 72 63 65 6e 74 20  literal percent 
ca10: 6f 72 20 75 6e 64 65 72 73 63 6f 72 65 20 63 68  or underscore ch
ca20: 61 72 61 63 74 65 72 73 2e 20 54 68 65 20 65 73  aracters. The es
ca30: 63 61 70 65 0a 63 68 61 72 61 63 74 65 72 20 66  cape.character f
ca40: 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 70 65 72  ollowed by a per
ca50: 63 65 6e 74 20 73 79 6d 62 6f 6c 2c 20 75 6e 64  cent symbol, und
ca60: 65 72 73 63 6f 72 65 20 6f 72 20 69 74 73 65 6c  erscore or itsel
ca70: 66 20 6d 61 74 63 68 65 73 20 61 0a 6c 69 74 65  f matches a.lite
ca80: 72 61 6c 20 70 65 72 63 65 6e 74 20 73 79 6d 62  ral percent symb
ca90: 6f 6c 2c 20 75 6e 64 65 72 73 63 6f 72 65 20 6f  ol, underscore o
caa0: 72 20 65 73 63 61 70 65 20 63 68 61 72 61 63 74  r escape charact
cab0: 65 72 20 69 6e 20 74 68 65 20 73 74 72 69 6e 67  er in the string
cac0: 2c 0a 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20  ,.respectively. 
cad0: 54 68 65 20 69 6e 66 69 78 20 4c 49 4b 45 20 6f  The infix LIKE o
cae0: 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70 6c 65  perator is imple
caf0: 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c 69 6e  mented by callin
cb00: 67 20 74 68 65 0a 61 70 70 6c 69 63 61 74 69 6f  g the.applicatio
cb10: 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c 20 66 75  n-defined SQL fu
cb20: 6e 63 74 69 6f 6e 73 20 5b 6c 69 6b 65 28 3c 69  nctions [like(<i
cb30: 3e 59 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 29  >Y</i>,<i>X</i>)
cb40: 5d 20 6f 72 0a 5b 6c 69 6b 65 28 3c 69 3e 59 3c  ] or.[like(<i>Y<
cb50: 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  /i>,<i>X</i>,<i>
cb60: 5a 3c 2f 69 3e 29 5d 3c 2f 61 3e 2e 3c 2f 70 3e  Z</i>)]</a>.</p>
cb70: 0a 0a 54 68 65 20 4c 49 4b 45 20 6f 70 65 72 61  ..The LIKE opera
cb80: 74 6f 72 20 69 73 20 6e 6f 74 20 63 61 73 65 20  tor is not case 
cb90: 73 65 6e 73 69 74 69 76 65 20 61 6e 64 20 77 69  sensitive and wi
cba0: 6c 6c 20 6d 61 74 63 68 20 75 70 70 65 72 20 63  ll match upper c
cbb0: 61 73 65 0a 63 68 61 72 61 63 74 65 72 73 20 6f  ase.characters o
cbc0: 6e 20 6f 6e 65 20 73 69 64 65 20 61 67 61 69 6e  n one side again
cbd0: 73 74 20 6c 6f 77 65 72 20 63 61 73 65 20 63 68  st lower case ch
cbe0: 61 72 61 63 74 65 72 73 20 6f 6e 20 74 68 65 20  aracters on the 
cbf0: 6f 74 68 65 72 2e 20 20 0a 28 41 20 62 75 67 3a  other.  .(A bug:
cc00: 20 53 51 4c 69 74 65 20 6f 6e 6c 79 20 75 6e 64   SQLite only und
cc10: 65 72 73 74 61 6e 64 73 20 75 70 70 65 72 2f 6c  erstands upper/l
cc20: 6f 77 65 72 20 63 61 73 65 20 66 6f 72 20 37 2d  ower case for 7-
cc30: 62 69 74 20 4c 61 74 69 6e 0a 63 68 61 72 61 63  bit Latin.charac
cc40: 74 65 72 73 2e 20 20 48 65 6e 63 65 20 74 68 65  ters.  Hence the
cc50: 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 69   LIKE operator i
cc60: 73 20 63 61 73 65 20 73 65 6e 73 69 74 69 76 65  s case sensitive
cc70: 20 66 6f 72 20 38 2d 62 69 74 0a 69 73 6f 38 38   for 8-bit.iso88
cc80: 35 39 20 63 68 61 72 61 63 74 65 72 73 20 6f 72  59 characters or
cc90: 20 55 54 46 2d 38 20 63 68 61 72 61 63 74 65 72   UTF-8 character
cca0: 73 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c  s.  For example,
ccb0: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 0a   the expression.
ccc0: 3c 62 3e 27 61 27 26 6e 62 73 70 3b 4c 49 4b 45  <b>'a'&nbsp;LIKE
ccd0: 26 6e 62 73 70 3b 27 41 27 3c 2f 62 3e 20 69 73  &nbsp;'A'</b> is
cce0: 20 54 52 55 45 20 62 75 74 0a 3c 62 3e 27 26 61   TRUE but.<b>'&a
ccf0: 65 6c 69 67 3b 27 26 6e 62 73 70 3b 4c 49 4b 45  elig;'&nbsp;LIKE
cd00: 26 6e 62 73 70 3b 27 26 41 45 6c 69 67 3b 27 3c  &nbsp;'&AElig;'<
cd10: 2f 62 3e 20 69 73 20 46 41 4c 53 45 2e 29 2e 3c  /b> is FALSE.).<
cd20: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 69 6e 66 69  /p>..<p>The infi
cd30: 78 20 4c 49 4b 45 0a 6f 70 65 72 61 74 6f 72 20  x LIKE.operator 
cd40: 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62  is implemented b
cd50: 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 75 73  y calling the us
cd60: 65 72 20 66 75 6e 63 74 69 6f 6e 20 3c 61 20 68  er function <a h
cd70: 72 65 66 3d 22 23 6c 69 6b 65 46 75 6e 63 22 3e  ref="#likeFunc">
cd80: 0a 6c 69 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c 3c  .like(<i>X</i>,<
cd90: 69 3e 59 3c 2f 69 3e 29 3c 2f 61 3e 2e 20 20 49  i>Y</i>)</a>.  I
cda0: 66 20 61 6e 20 45 53 43 41 50 45 20 63 6c 61 75  f an ESCAPE clau
cdb0: 73 65 20 69 73 20 70 72 65 73 65 6e 74 2c 20 69  se is present, i
cdc0: 74 20 61 64 64 73 0a 61 20 74 68 69 72 64 20 70  t adds.a third p
cdd0: 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20  arameter to the 
cde0: 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 2e 20 49  function call. I
cdf0: 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 61 6c  f the functional
ce00: 69 74 79 20 6f 66 20 4c 49 4b 45 20 63 61 6e 20  ity of LIKE can 
ce10: 62 65 0a 6f 76 65 72 72 69 64 64 65 6e 20 62 79  be.overridden by
ce20: 20 64 65 66 69 6e 69 6e 67 20 61 6e 20 61 6c 74   defining an alt
ce30: 65 72 6e 61 74 69 76 65 20 69 6d 70 6c 65 6d 65  ernative impleme
ce40: 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 0a 6c  ntation of the.l
ce50: 69 6b 65 28 29 20 53 51 4c 20 66 75 6e 63 74 69  ike() SQL functi
ce60: 6f 6e 2e 3c 2f 70 3e 0a 3c 2f 70 3e 0a 0a 3c 74  on.</p>.</p>..<t
ce70: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 67  cl>hd_fragment g
ce80: 6c 6f 62 20 47 4c 4f 42 3c 2f 74 63 6c 3e 0a 3c  lob GLOB</tcl>.<
ce90: 70 3e 54 68 65 20 47 4c 4f 42 20 6f 70 65 72 61  p>The GLOB opera
cea0: 74 6f 72 20 69 73 20 73 69 6d 69 6c 61 72 20 74  tor is similar t
ceb0: 6f 20 4c 49 4b 45 20 62 75 74 20 75 73 65 73 20  o LIKE but uses 
cec0: 74 68 65 20 55 6e 69 78 0a 66 69 6c 65 20 67 6c  the Unix.file gl
ced0: 6f 62 62 69 6e 67 20 73 79 6e 74 61 78 20 66 6f  obbing syntax fo
cee0: 72 20 69 74 73 20 77 69 6c 64 63 61 72 64 73 2e  r its wildcards.
cef0: 20 20 41 6c 73 6f 2c 20 47 4c 4f 42 20 69 73 20    Also, GLOB is 
cf00: 63 61 73 65 0a 73 65 6e 73 69 74 69 76 65 2c 20  case.sensitive, 
cf10: 75 6e 6c 69 6b 65 20 4c 49 4b 45 2e 20 20 42 6f  unlike LIKE.  Bo
cf20: 74 68 20 47 4c 4f 42 20 61 6e 64 20 4c 49 4b 45  th GLOB and LIKE
cf30: 20 6d 61 79 20 62 65 20 70 72 65 63 65 64 65 64   may be preceded
cf40: 20 62 79 0a 74 68 65 20 4e 4f 54 20 6b 65 79 77   by.the NOT keyw
cf50: 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74 68  ord to invert th
cf60: 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20 74  e sense of the t
cf70: 65 73 74 2e 20 20 54 68 65 20 69 6e 66 69 78 20  est.  The infix 
cf80: 47 4c 4f 42 20 0a 6f 70 65 72 61 74 6f 72 20 69  GLOB .operator i
cf90: 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79  s implemented by
cfa0: 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 66 75 6e   calling the fun
cfb0: 63 74 69 6f 6e 0a 5b 67 6c 6f 62 28 3c 69 3e 59  ction.[glob(<i>Y
cfc0: 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 29 5d 20  </i>,<i>X</i>)] 
cfd0: 61 6e 64 20 63 61 6e 20 62 65 20 6d 6f 64 69 66  and can be modif
cfe0: 69 65 64 20 62 79 20 6f 76 65 72 72 69 64 69 6e  ied by overridin
cff0: 67 0a 74 68 61 74 20 66 75 6e 63 74 69 6f 6e 2e  g.that function.
d000: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72  </p>..<tcl>hd_fr
d010: 61 67 6d 65 6e 74 20 72 65 67 65 78 70 20 52 45  agment regexp RE
d020: 47 45 58 50 3c 2f 74 63 6c 3e 0a 3c 70 3e 54 68  GEXP</tcl>.<p>Th
d030: 65 20 52 45 47 45 58 50 20 6f 70 65 72 61 74 6f  e REGEXP operato
d040: 72 20 69 73 20 61 20 73 70 65 63 69 61 6c 20 73  r is a special s
d050: 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20 72 65  yntax for the re
d060: 67 65 78 70 28 29 0a 75 73 65 72 20 66 75 6e 63  gexp().user func
d070: 74 69 6f 6e 2e 20 20 4e 6f 20 72 65 67 65 78 70  tion.  No regexp
d080: 28 29 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e  () user function
d090: 20 69 73 20 64 65 66 69 6e 65 64 20 62 79 20 64   is defined by d
d0a0: 65 66 61 75 6c 74 0a 61 6e 64 20 73 6f 20 75 73  efault.and so us
d0b0: 65 20 6f 66 20 74 68 65 20 52 45 47 45 58 50 20  e of the REGEXP 
d0c0: 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 6e 6f  operator will no
d0d0: 72 6d 61 6c 6c 79 20 72 65 73 75 6c 74 20 69 6e  rmally result in
d0e0: 20 61 6e 0a 65 72 72 6f 72 20 6d 65 73 73 61 67   an.error messag
d0f0: 65 2e 20 20 49 66 20 61 20 75 73 65 72 2d 64 65  e.  If a user-de
d100: 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 20 6e  fined function n
d110: 61 6d 65 64 20 22 72 65 67 65 78 70 22 0a 69 73  amed "regexp".is
d120: 20 61 64 64 65 64 20 61 74 20 72 75 6e 2d 74 69   added at run-ti
d130: 6d 65 2c 20 74 68 61 74 20 66 75 6e 63 74 69 6f  me, that functio
d140: 6e 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64  n will be called
d150: 20 69 6e 20 6f 72 64 65 72 0a 74 6f 20 69 6d 70   in order.to imp
d160: 6c 65 6d 65 6e 74 20 74 68 65 20 52 45 47 45 58  lement the REGEX
d170: 50 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70 3e 0a  P operator.</p>.
d180: 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e  .<tcl>hd_fragmen
d190: 74 20 6d 61 74 63 68 20 4d 41 54 43 48 3c 2f 74  t match MATCH</t
d1a0: 63 6c 3e 0a 3c 70 3e 54 68 65 20 4d 41 54 43 48  cl>.<p>The MATCH
d1b0: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 61 20 73   operator is a s
d1c0: 70 65 63 69 61 6c 20 73 79 6e 74 61 78 20 66 6f  pecial syntax fo
d1d0: 72 20 74 68 65 20 6d 61 74 63 68 28 29 0a 75 73  r the match().us
d1e0: 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20 20 54 68  er function.  Th
d1f0: 65 20 64 65 66 61 75 6c 74 20 6d 61 74 63 68 28  e default match(
d200: 29 20 66 75 6e 63 74 69 6f 6e 20 69 6d 70 6c 65  ) function imple
d210: 6d 65 6e 74 61 74 69 6f 6e 0a 72 61 69 73 65 73  mentation.raises
d220: 20 61 6e 64 20 65 78 63 65 70 74 69 6f 6e 20 61   and exception a
d230: 6e 64 20 69 73 20 6e 6f 74 20 72 65 61 6c 6c 79  nd is not really
d240: 20 75 73 65 66 75 6c 20 66 6f 72 20 61 6e 79 74   useful for anyt
d250: 68 69 6e 67 2e 0a 42 75 74 20 65 78 74 65 6e 73  hing..But extens
d260: 69 6f 6e 73 20 63 61 6e 20 6f 76 65 72 72 69 64  ions can overrid
d270: 65 20 74 68 65 20 6d 61 74 63 68 28 29 20 66 75  e the match() fu
d280: 6e 63 74 69 6f 6e 20 77 69 74 68 20 6d 6f 72 65  nction with more
d290: 0a 68 65 6c 70 66 75 6c 20 6c 6f 67 69 63 2e 3c  .helpful logic.<
d2a0: 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61  /p>..<tcl>hd_fra
d2b0: 67 6d 65 6e 74 20 62 65 74 77 65 65 6e 20 42 45  gment between BE
d2c0: 54 57 45 45 4e 3c 2f 74 63 6c 3e 0a 3c 70 3e 54  TWEEN</tcl>.<p>T
d2d0: 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61  he BETWEEN opera
d2e0: 74 6f 72 20 69 73 20 65 71 75 69 76 61 6c 65 6e  tor is equivalen
d2f0: 74 20 74 6f 20 61 20 70 61 69 72 20 6f 66 20 63  t to a pair of c
d300: 6f 6d 70 61 72 69 73 6f 6e 73 2e 0a 22 3c 69 3e  omparisons.."<i>
d310: 61 3c 2f 69 3e 20 3c 62 3e 42 45 54 57 45 45 4e  a</i> <b>BETWEEN
d320: 3c 2f 62 3e 20 3c 69 3e 62 3c 2f 69 3e 20 3c 62  </b> <i>b</i> <b
d330: 3e 41 4e 44 3c 2f 62 3e 20 3c 69 3e 63 3c 2f 69  >AND</b> <i>c</i
d340: 3e 22 20 69 73 20 0a 65 71 75 69 76 61 6c 65 6e  >" is .equivalen
d350: 74 20 74 6f 20 0a 22 3c 69 3e 61 3c 2f 69 3e 3c  t to ."<i>a</i><
d360: 62 3e 26 67 74 3b 3d 3c 2f 62 3e 3c 69 3e 62 3c  b>&gt;=</b><i>b<
d370: 2f 69 3e 20 3c 62 3e 41 4e 44 3c 2f 62 3e 20 3c  /i> <b>AND</b> <
d380: 69 3e 61 3c 2f 69 3e 3c 62 3e 26 6c 74 3b 3d 3c  i>a</i><b>&lt;=<
d390: 2f 62 3e 3c 69 3e 63 3c 2f 69 3e 22 2e 0a 54 68  /b><i>c</i>"..Th
d3a0: 65 20 70 72 65 63 65 64 65 6e 63 65 20 6f 66 20  e precedence of 
d3b0: 74 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72  the BETWEEN oper
d3c0: 61 74 6f 72 20 69 73 20 74 68 65 20 73 61 6d 65  ator is the same
d3d0: 20 61 73 20 74 68 65 20 70 72 65 63 65 64 65 6e   as the preceden
d3e0: 63 65 0a 61 73 20 6f 70 65 72 61 74 6f 72 73 20  ce.as operators 
d3f0: 3c 62 3e 3d 3d 3c 2f 62 3e 20 61 6e 64 20 3c 62  <b>==</b> and <b
d400: 3e 21 3d 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e 4c  >!=</b> and <b>L
d410: 49 4b 45 3c 2f 62 3e 20 61 6e 64 20 67 72 6f 75  IKE</b> and grou
d420: 70 73 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74  ps left to right
d430: 2e 0a 0a 3c 70 3e 41 20 63 6f 6c 75 6d 6e 20 6e  ...<p>A column n
d440: 61 6d 65 20 63 61 6e 20 62 65 20 61 6e 79 20 6f  ame can be any o
d450: 66 20 74 68 65 20 6e 61 6d 65 73 20 64 65 66 69  f the names defi
d460: 6e 65 64 20 69 6e 20 74 68 65 20 5b 43 52 45 41  ned in the [CREA
d470: 54 45 20 54 41 42 4c 45 5d 0a 73 74 61 74 65 6d  TE TABLE].statem
d480: 65 6e 74 20 6f 72 20 6f 6e 65 20 6f 66 20 74 68  ent or one of th
d490: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 70 65 63  e following spec
d4a0: 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73 3a  ial identifiers:
d4b0: 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c   "<b>ROWID</b>",
d4c0: 0a 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f  ."<b>OID</b>", o
d4d0: 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62  r "<b>_ROWID_</b
d4e0: 3e 22 2e 0a 54 68 65 73 65 20 73 70 65 63 69 61  >"..These specia
d4f0: 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20 61 6c  l identifiers al
d500: 6c 20 64 65 73 63 72 69 62 65 20 74 68 65 0a 75  l describe the.u
d510: 6e 69 71 75 65 20 69 6e 74 65 67 65 72 20 6b 65  nique integer ke
d520: 79 20 28 74 68 65 20 5b 72 6f 77 69 64 5d 29 20  y (the [rowid]) 
d530: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
d540: 65 76 65 72 79 20 0a 72 6f 77 20 6f 66 20 65 76  every .row of ev
d550: 65 72 79 20 74 61 62 6c 65 2e 0a 54 68 65 20 73  ery table..The s
d560: 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65  pecial identifie
d570: 72 73 20 6f 6e 6c 79 20 72 65 66 65 72 20 74 6f  rs only refer to
d580: 20 74 68 65 20 72 6f 77 20 6b 65 79 20 69 66 20   the row key if 
d590: 74 68 65 20 5b 43 52 45 41 54 45 20 54 41 42 4c  the [CREATE TABL
d5a0: 45 5d 0a 73 74 61 74 65 6d 65 6e 74 20 64 6f 65  E].statement doe
d5b0: 73 20 6e 6f 74 20 64 65 66 69 6e 65 20 61 20 72  s not define a r
d5c0: 65 61 6c 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20  eal column with 
d5d0: 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 2e 20 20  the same name.  
d5e0: 52 6f 77 20 6b 65 79 73 0a 61 63 74 20 6c 69 6b  Row keys.act lik
d5f0: 65 20 72 65 61 64 2d 6f 6e 6c 79 20 63 6f 6c 75  e read-only colu
d600: 6d 6e 73 2e 20 20 41 20 72 6f 77 20 6b 65 79 20  mns.  A row key 
d610: 63 61 6e 20 62 65 20 75 73 65 64 20 61 6e 79 77  can be used anyw
d620: 68 65 72 65 20 61 20 72 65 67 75 6c 61 72 0a 63  here a regular.c
d630: 6f 6c 75 6d 6e 20 63 61 6e 20 62 65 20 75 73 65  olumn can be use
d640: 64 2c 20 65 78 63 65 70 74 20 74 68 61 74 20 79  d, except that y
d650: 6f 75 20 63 61 6e 6e 6f 74 20 63 68 61 6e 67 65  ou cannot change
d660: 20 74 68 65 20 76 61 6c 75 65 0a 6f 66 20 61 20   the value.of a 
d670: 72 6f 77 20 6b 65 79 20 69 6e 20 61 6e 20 5b 55  row key in an [U
d680: 50 44 41 54 45 5d 20 6f 72 20 5b 49 4e 53 45 52  PDATE] or [INSER
d690: 54 5d 20 73 74 61 74 65 6d 65 6e 74 2e 0a 22 53  T] statement.."S
d6a0: 45 4c 45 43 54 20 2a 20 2e 2e 2e 22 20 64 6f 65  ELECT * ..." doe
d6b0: 73 20 6e 6f 74 20 72 65 74 75 72 6e 20 74 68 65  s not return the
d6c0: 20 72 6f 77 20 6b 65 79 2e 3c 2f 70 3e 0a 0a 3c   row key.</p>..<
d6d0: 70 3e 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65  p>[SELECT] state
d6e0: 6d 65 6e 74 73 20 63 61 6e 20 61 70 70 65 61 72  ments can appear
d6f0: 20 69 6e 20 65 78 70 72 65 73 73 69 6f 6e 73 20   in expressions 
d700: 61 73 20 65 69 74 68 65 72 20 74 68 65 0a 72 69  as either the.ri
d710: 67 68 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e 64  ght-hand operand
d720: 20 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61   of the IN opera
d730: 74 6f 72 2c 20 61 73 20 61 20 73 63 61 6c 61 72  tor, as a scalar
d740: 20 71 75 61 6e 74 69 74 79 2c 20 6f 72 0a 61 73   quantity, or.as
d750: 20 74 68 65 20 6f 70 65 72 61 6e 64 20 6f 66 20   the operand of 
d760: 61 6e 20 45 58 49 53 54 53 20 6f 70 65 72 61 74  an EXISTS operat
d770: 6f 72 2e 0a 41 73 20 61 20 73 63 61 6c 61 72 20  or..As a scalar 
d780: 71 75 61 6e 74 69 74 79 20 6f 72 20 74 68 65 20  quantity or the 
d790: 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e  operand of an IN
d7a0: 20 6f 70 65 72 61 74 6f 72 2c 0a 74 68 65 20 53   operator,.the S
d7b0: 45 4c 45 43 54 20 73 68 6f 75 6c 64 20 68 61 76  ELECT should hav
d7c0: 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20  e only a single 
d7d0: 63 6f 6c 75 6d 6e 20 69 6e 20 69 74 73 0a 72 65  column in its.re
d7e0: 73 75 6c 74 2e 20 20 43 6f 6d 70 6f 75 6e 64 20  sult.  Compound 
d7f0: 53 45 4c 45 43 54 73 20 28 63 6f 6e 6e 65 63 74  SELECTs (connect
d800: 65 64 20 77 69 74 68 20 6b 65 79 77 6f 72 64 73  ed with keywords
d810: 20 6c 69 6b 65 20 55 4e 49 4f 4e 20 6f 72 0a 45   like UNION or.E
d820: 58 43 45 50 54 29 20 61 72 65 20 61 6c 6c 6f 77  XCEPT) are allow
d830: 65 64 2e 0a 57 69 74 68 20 74 68 65 20 45 58 49  ed..With the EXI
d840: 53 54 53 20 6f 70 65 72 61 74 6f 72 2c 20 74 68  STS operator, th
d850: 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  e columns in the
d860: 20 72 65 73 75 6c 74 20 73 65 74 20 6f 66 20 74   result set of t
d870: 68 65 20 5b 53 45 4c 45 43 54 5d 20 61 72 65 0a  he [SELECT] are.
d880: 69 67 6e 6f 72 65 64 20 61 6e 64 20 74 68 65 20  ignored and the 
d890: 65 78 70 72 65 73 73 69 6f 6e 20 72 65 74 75 72  expression retur
d8a0: 6e 73 20 54 52 55 45 20 69 66 20 6f 6e 65 20 6f  ns TRUE if one o
d8b0: 72 20 6d 6f 72 65 20 72 6f 77 73 20 65 78 69 73  r more rows exis
d8c0: 74 0a 61 6e 64 20 46 41 4c 53 45 20 69 66 20 74  t.and FALSE if t
d8d0: 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 69 73  he result set is
d8e0: 20 65 6d 70 74 79 2e 0a 49 66 20 6e 6f 20 74 65   empty..If no te
d8f0: 72 6d 73 20 69 6e 20 74 68 65 20 5b 53 45 4c 45  rms in the [SELE
d900: 43 54 5d 20 65 78 70 72 65 73 73 69 6f 6e 20 72  CT] expression r
d910: 65 66 65 72 20 74 6f 20 76 61 6c 75 65 20 69 6e  efer to value in
d920: 20 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0a   the containing.
d930: 71 75 65 72 79 2c 20 74 68 65 6e 20 74 68 65 20  query, then the 
d940: 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76  expression is ev
d950: 61 6c 75 61 74 65 64 20 6f 6e 63 65 20 70 72 69  aluated once pri
d960: 6f 72 20 74 6f 20 61 6e 79 20 6f 74 68 65 72 0a  or to any other.
d970: 70 72 6f 63 65 73 73 69 6e 67 20 61 6e 64 20 74  processing and t
d980: 68 65 20 72 65 73 75 6c 74 20 69 73 20 72 65 75  he result is reu
d990: 73 65 64 20 61 73 20 6e 65 63 65 73 73 61 72 79  sed as necessary
d9a0: 2e 20 20 49 66 20 74 68 65 20 5b 53 45 4c 45 43  .  If the [SELEC
d9b0: 54 5d 20 65 78 70 72 65 73 73 69 6f 6e 0a 64 6f  T] expression.do
d9c0: 65 73 20 63 6f 6e 74 61 69 6e 20 76 61 72 69 61  es contain varia
d9d0: 62 6c 65 73 20 66 72 6f 6d 20 74 68 65 20 6f 75  bles from the ou
d9e0: 74 65 72 20 71 75 65 72 79 2c 20 74 68 65 6e 20  ter query, then 
d9f0: 74 68 65 20 5b 53 45 4c 45 43 54 5d 20 69 73 20  the [SELECT] is 
da00: 72 65 65 76 61 6c 75 61 74 65 64 0a 65 76 65 72  reevaluated.ever
da10: 79 20 74 69 6d 65 20 69 74 20 69 73 20 6e 65 65  y time it is nee
da20: 64 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65  ded.</p>..<p>Whe
da30: 6e 20 61 20 53 45 4c 45 43 54 20 69 73 20 74 68  n a SELECT is th
da40: 65 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64 20  e right operand 
da50: 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74  of the IN operat
da60: 6f 72 2c 20 74 68 65 20 49 4e 0a 6f 70 65 72 61  or, the IN.opera
da70: 74 6f 72 20 72 65 74 75 72 6e 73 20 54 52 55 45  tor returns TRUE
da80: 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f   if the result o
da90: 66 20 74 68 65 20 6c 65 66 74 20 6f 70 65 72 61  f the left opera
daa0: 6e 64 20 69 73 20 61 6e 79 20 6f 66 0a 74 68 65  nd is any of.the
dab0: 20 76 61 6c 75 65 73 20 67 65 6e 65 72 61 74 65   values generate
dac0: 64 20 62 79 20 74 68 65 20 73 65 6c 65 63 74 2e  d by the select.
dad0: 20 20 54 68 65 20 49 4e 20 6f 70 65 72 61 74 6f    The IN operato
dae0: 72 20 6d 61 79 20 62 65 20 70 72 65 63 65 64 65  r may be precede
daf0: 64 0a 62 79 20 74 68 65 20 4e 4f 54 20 6b 65 79  d.by the NOT key
db00: 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74  word to invert t
db10: 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20  he sense of the 
db20: 74 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68  test.</p>..<p>Wh
db30: 65 6e 20 61 20 53 45 4c 45 43 54 20 61 70 70 65  en a SELECT appe
db40: 61 72 73 20 77 69 74 68 69 6e 20 61 6e 20 65 78  ars within an ex
db50: 70 72 65 73 73 69 6f 6e 20 62 75 74 20 69 73 20  pression but is 
db60: 6e 6f 74 20 74 68 65 20 72 69 67 68 74 0a 6f 70  not the right.op
db70: 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f  erand of an IN o
db80: 70 65 72 61 74 6f 72 2c 20 74 68 65 6e 20 74 68  perator, then th
db90: 65 20 66 69 72 73 74 20 72 6f 77 20 6f 66 20 74  e first row of t
dba0: 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65  he result of the
dbb0: 0a 53 45 4c 45 43 54 20 62 65 63 6f 6d 65 73 20  .SELECT becomes 
dbc0: 74 68 65 20 76 61 6c 75 65 20 75 73 65 64 20 69  the value used i
dbd0: 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  n the expression
dbe0: 2e 20 20 49 66 20 74 68 65 20 53 45 4c 45 43 54  .  If the SELECT
dbf0: 20 79 69 65 6c 64 73 0a 6d 6f 72 65 20 74 68 61   yields.more tha
dc00: 6e 20 6f 6e 65 20 72 65 73 75 6c 74 20 72 6f 77  n one result row
dc10: 2c 20 61 6c 6c 20 72 6f 77 73 20 61 66 74 65 72  , all rows after
dc20: 20 74 68 65 20 66 69 72 73 74 20 61 72 65 20 69   the first are i
dc30: 67 6e 6f 72 65 64 2e 20 20 49 66 0a 74 68 65 20  gnored.  If.the 
dc40: 53 45 4c 45 43 54 20 79 69 65 6c 64 73 20 6e 6f  SELECT yields no
dc50: 20 72 6f 77 73 2c 20 74 68 65 6e 20 74 68 65 20   rows, then the 
dc60: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 53 45 4c  value of the SEL
dc70: 45 43 54 20 69 73 20 4e 55 4c 4c 2e 3c 2f 70 3e  ECT is NULL.</p>
dc80: 0a 0a 3c 70 3e 41 20 43 41 53 54 20 65 78 70 72  ..<p>A CAST expr
dc90: 65 73 73 69 6f 6e 20 63 68 61 6e 67 65 73 20 74  ession changes t
dca0: 68 65 20 5b 64 61 74 61 74 79 70 65 5d 20 6f 66  he [datatype] of
dcb0: 20 74 68 65 20 3c 65 78 70 72 3e 20 69 6e 74 6f   the <expr> into
dcc0: 20 74 68 65 0a 74 79 70 65 20 73 70 65 63 69 66   the.type specif
dcd0: 69 65 64 20 62 79 20 26 6c 74 3b 74 79 70 65 26  ied by &lt;type&
dce0: 67 74 3b 2e 20 0a 26 6c 74 3b 74 79 70 65 26 67  gt;. .&lt;type&g
dcf0: 74 3b 20 63 61 6e 20 62 65 20 61 6e 79 20 6e 6f  t; can be any no
dd00: 6e 2d 65 6d 70 74 79 20 74 79 70 65 20 6e 61 6d  n-empty type nam
dd10: 65 20 74 68 61 74 20 69 73 20 76 61 6c 69 64 0a  e that is valid.
dd20: 66 6f 72 20 74 68 65 20 74 79 70 65 20 69 6e 20  for the type in 
dd30: 61 20 63 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74  a column definit
dd40: 69 6f 6e 20 6f 66 20 61 20 5b 43 52 45 41 54 45  ion of a [CREATE
dd50: 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65 6e   TABLE] statemen
dd60: 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 6f 74 68 20  t.</p>..<p>Both 
dd70: 5b 63 6f 72 65 66 75 6e 63 7c 73 69 6d 70 6c 65  [corefunc|simple
dd80: 5d 20 61 6e 64 20 5b 61 67 67 66 75 6e 63 7c 61  ] and [aggfunc|a
dd90: 67 67 72 65 67 61 74 65 5d 20 66 75 6e 63 74 69  ggregate] functi
dda0: 6f 6e 73 20 61 72 65 20 73 75 70 70 6f 72 74 65  ons are supporte
ddb0: 64 2e 0a 28 46 6f 72 20 70 72 65 73 65 6e 74 61  d..(For presenta
ddc0: 74 69 6f 6e 20 70 75 72 70 6f 73 65 73 2c 20 73  tion purposes, s
ddd0: 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20  imple functions 
dde0: 61 72 65 20 66 75 72 74 68 65 72 20 73 75 62 64  are further subd
ddf0: 69 76 69 64 65 64 20 69 6e 74 6f 0a 5b 63 6f 72  ivided into.[cor
de00: 65 66 75 6e 63 20 7c 20 63 6f 72 65 20 66 75 6e  efunc | core fun
de10: 63 74 69 6f 6e 73 5d 20 61 6e 64 20 5b 64 61 74  ctions] and [dat
de20: 65 66 75 6e 63 20 7c 20 64 61 74 65 2d 74 69 6d  efunc | date-tim
de30: 65 20 66 75 6e 63 74 69 6f 6e 73 5d 2e 29 0a 41  e functions].).A
de40: 20 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e   simple function
de50: 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20   can be used in 
de60: 61 6e 79 20 65 78 70 72 65 73 73 69 6f 6e 2e 20  any expression. 
de70: 20 53 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e   Simple function
de80: 73 20 72 65 74 75 72 6e 0a 61 20 72 65 73 75 6c  s return.a resul
de90: 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62 61  t immediately ba
dea0: 73 65 64 20 6f 6e 20 74 68 65 69 72 20 69 6e 70  sed on their inp
deb0: 75 74 73 2e 20 20 41 67 67 72 65 67 61 74 65 20  uts.  Aggregate 
dec0: 66 75 6e 63 74 69 6f 6e 73 0a 6d 61 79 20 6f 6e  functions.may on
ded0: 6c 79 20 62 65 20 75 73 65 64 20 69 6e 20 61 20  ly be used in a 
dee0: 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
def0: 2e 20 20 41 67 67 72 65 67 61 74 65 20 66 75 6e  .  Aggregate fun
df00: 63 74 69 6f 6e 73 20 63 6f 6d 70 75 74 65 0a 74  ctions compute.t
df10: 68 65 69 72 20 72 65 73 75 6c 74 20 61 63 72 6f  heir result acro
df20: 73 73 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74  ss all rows of t
df30: 68 65 20 72 65 73 75 6c 74 20 73 65 74 2e 3c 2f  he result set.</
df40: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
df50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
df60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
df70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
df80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
df90: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
dfa0: 20 7b 43 6f 72 65 20 46 75 6e 63 74 69 6f 6e 73   {Core Functions
dfb0: 7d 20 63 6f 72 65 66 75 6e 63 20 7b 63 6f 72 65  } corefunc {core
dfc0: 66 75 6e 63 7d 0a 70 72 6f 63 20 66 75 6e 63 64  func}.proc funcd
dfd0: 65 66 20 7b 73 79 6e 74 61 78 20 6b 65 79 77 6f  ef {syntax keywo
dfe0: 72 64 73 20 64 65 73 63 7d 20 7b 0a 20 20 68 64  rds desc} {.  hd
dff0: 5f 70 75 74 73 20 7b 3c 74 72 3e 7d 0a 20 20 72  _puts {<tr>}.  r
e000: 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5c 73 2b 7d  egsub -all {\s+}
e010: 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24 73   [string trim $s
e020: 79 6e 74 61 78 5d 20 7b 3c 62 72 3e 3c 2f 62 72  yntax] {<br></br
e030: 3e 7d 20 73 79 6e 74 61 78 0a 20 20 72 65 67 73  >} syntax.  regs
e040: 75 62 20 2d 61 6c 6c 20 7b 5c 28 28 5b 5e 2a 29  ub -all {\(([^*)
e050: 5d 2b 29 5c 29 7d 20 24 73 79 6e 74 61 78 20 7b  ]+)\)} $syntax {
e060: 28 3c 69 3e 5c 31 3c 2f 69 3e 29 7d 20 73 79 6e  (<i>\1</i>)} syn
e070: 74 61 78 0a 20 20 72 65 67 73 75 62 20 2d 61 6c  tax.  regsub -al
e080: 6c 20 7b 2c 7d 20 24 73 79 6e 74 61 78 20 7b 3c  l {,} $syntax {<
e090: 2f 69 3e 2c 3c 69 3e 7d 20 73 79 6e 74 61 78 0a  /i>,<i>} syntax.
e0a0: 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 3c    regsub -all {<
e0b0: 69 3e 5c 2e 5c 2e 5c 2e 3c 2f 69 3e 7d 20 24 73  i>\.\.\.</i>} $s
e0c0: 79 6e 74 61 78 20 7b 2e 2e 2e 7d 20 73 79 6e 74  yntax {...} synt
e0d0: 61 78 0a 20 20 68 64 5f 70 75 74 73 20 22 3c 74  ax.  hd_puts "<t
e0e0: 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22  d valign=\"top\"
e0f0: 20 61 6c 69 67 6e 3d 5c 22 72 69 67 68 74 5c 22   align=\"right\"
e100: 20 77 69 64 74 68 3d 5c 22 31 32 30 5c 22 3e 24   width=\"120\">$
e110: 73 79 6e 74 61 78 3c 2f 74 64 3e 22 0a 20 20 68  syntax</td>".  h
e120: 64 5f 70 75 74 73 20 7b 3c 74 64 20 76 61 6c 69  d_puts {<td vali
e130: 67 6e 3d 22 74 6f 70 22 3e 7d 0a 20 20 69 66 20  gn="top">}.  if 
e140: 7b 5b 6c 6c 65 6e 67 74 68 20 24 6b 65 79 77 6f  {[llength $keywo
e150: 72 64 73 5d 3d 3d 30 7d 20 7b 0a 20 20 20 20 72  rds]==0} {.    r
e160: 65 67 65 78 70 20 7b 5b 61 2d 7a 5f 5d 2b 7d 20  egexp {[a-z_]+} 
e170: 24 73 79 6e 74 61 78 20 6e 61 6d 65 0a 20 20 20  $syntax name.   
e180: 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 24 6e 61   hd_fragment $na
e190: 6d 65 20 24 6e 61 6d 65 0a 20 20 7d 20 65 6c 73  me $name.  } els
e1a0: 65 20 7b 0a 20 20 20 20 65 76 61 6c 20 68 64 5f  e {.    eval hd_
e1b0: 66 72 61 67 6d 65 6e 74 20 24 6b 65 79 77 6f 72  fragment $keywor
e1c0: 64 73 0a 20 20 20 20 68 64 5f 6b 65 79 77 6f 72  ds.    hd_keywor
e1d0: 64 73 20 24 6b 65 79 77 6f 72 64 73 0a 20 20 7d  ds $keywords.  }
e1e0: 0a 20 20 68 64 5f 72 65 73 6f 6c 76 65 20 24 64  .  hd_resolve $d
e1f0: 65 73 63 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c  esc.  hd_puts {<
e200: 2f 74 64 3e 3c 2f 74 72 3e 7d 0a 7d 0a 3c 2f 74  /td></tr>}.}.</t
e210: 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f 72 65  cl>..<p>The core
e220: 20 66 75 6e 63 74 69 6f 6e 73 20 73 68 6f 77 6e   functions shown
e230: 20 62 65 6c 6f 77 20 61 72 65 20 61 76 61 69 6c   below are avail
e240: 61 62 6c 65 20 62 79 20 64 65 66 61 75 6c 74 2e  able by default.
e250: 20 0a 5b 64 61 74 65 66 75 6e 63 20 7c 20 44 61   .[datefunc | Da
e260: 74 65 20 26 61 6d 70 3b 20 54 69 6d 65 20 66 75  te &amp; Time fu
e270: 6e 63 74 69 6f 6e 73 5d 20 61 6e 64 0a 5b 61 67  nctions] and.[ag
e280: 67 66 75 6e 63 20 7c 20 61 67 67 72 65 67 61 74  gfunc | aggregat
e290: 65 20 66 75 6e 63 74 69 6f 6e 73 5d 20 61 72 65  e functions] are
e2a0: 20 64 6f 63 75 6d 65 6e 74 65 64 20 73 65 70 61   documented sepa
e2b0: 72 61 74 65 6c 79 2e 20 20 41 6e 0a 61 70 70 6c  rately.  An.appl
e2c0: 69 63 61 74 69 6f 6e 20 6d 61 79 20 64 65 66 69  ication may defi
e2d0: 6e 65 20 61 64 64 69 74 69 6f 6e 61 6c 0a 66 75  ne additional.fu
e2e0: 6e 63 74 69 6f 6e 73 20 77 72 69 74 74 65 6e 20  nctions written 
e2f0: 69 6e 20 43 20 61 6e 64 20 61 64 64 65 64 20 74  in C and added t
e300: 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 65  o the database e
e310: 6e 67 69 6e 65 20 75 73 69 6e 67 0a 74 68 65 20  ngine using.the 
e320: 5b 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f  [sqlite3_create_
e330: 66 75 6e 63 74 69 6f 6e 28 29 5d 20 41 50 49 2e  function()] API.
e340: 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72  </p>..<table bor
e350: 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e  der=0 cellpaddin
e360: 67 3d 31 30 3e 0a 3c 74 63 6c 3e 0a 66 75 6e 63  g=10>.<tcl>.func
e370: 64 65 66 20 7b 61 62 73 28 58 29 7d 20 7b 7d 20  def {abs(X)} {} 
e380: 7b 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20 61  {.  Return the a
e390: 62 73 6f 6c 75 74 65 20 76 61 6c 75 65 20 6f 66  bsolute value of
e3a0: 20 74 68 65 20 6e 75 6d 65 72 69 63 0a 20 20 61   the numeric.  a
e3b0: 72 67 75 6d 65 6e 74 20 3c 69 3e 58 3c 2f 69 3e  rgument <i>X</i>
e3c0: 2e 20 20 52 65 74 75 72 6e 20 4e 55 4c 4c 20 69  .  Return NULL i
e3d0: 66 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 4e 55  f <i>X</i> is NU
e3e0: 4c 4c 2e 20 20 52 65 74 75 72 6e 20 30 2e 30 20  LL.  Return 0.0 
e3f0: 69 66 0a 20 20 3c 69 3e 58 3c 2f 69 3e 20 69 73  if.  <i>X</i> is
e400: 20 6e 6f 74 20 61 20 6e 75 6d 65 72 69 63 20 76   not a numeric v
e410: 61 6c 75 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  alue..}..funcdef
e420: 20 7b 63 6f 61 6c 65 73 63 65 28 58 2c 59 2c 2e   {coalesce(X,Y,.
e430: 2e 2e 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75  ..)} {} {.  Retu
e440: 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  rn a copy of the
e450: 20 66 69 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20   first non-NULL 
e460: 61 72 67 75 6d 65 6e 74 2e 20 20 49 66 0a 20 20  argument.  If.  
e470: 61 6c 6c 20 61 72 67 75 6d 65 6e 74 73 20 61 72  all arguments ar
e480: 65 20 4e 55 4c 4c 20 74 68 65 6e 20 4e 55 4c 4c  e NULL then NULL
e490: 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 20 54   is returned.  T
e4a0: 68 65 72 65 20 6d 75 73 74 20 62 65 20 61 74 20  here must be at 
e4b0: 6c 65 61 73 74 20 0a 20 20 32 20 61 72 67 75 6d  least .  2 argum
e4c0: 65 6e 74 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  ents..}..funcdef
e4d0: 20 7b 67 6c 6f 62 28 58 2c 59 29 7d 20 7b 7d 20   {glob(X,Y)} {} 
e4e0: 7b 0a 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f  {.  This functio
e4f0: 6e 20 69 73 20 75 73 65 64 20 74 6f 20 69 6d 70  n is used to imp
e500: 6c 65 6d 65 6e 74 20 74 68 65 0a 20 20 22 3c 62  lement the.  "<b
e510: 3e 59 20 47 4c 4f 42 20 58 3c 2f 62 3e 22 20 73  >Y GLOB X</b>" s
e520: 79 6e 74 61 78 20 6f 66 20 53 51 4c 69 74 65 2e  yntax of SQLite.
e530: 0a 20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65  .  Note that the
e540: 20 58 20 61 6e 64 20 59 20 61 72 67 75 6d 65 6e   X and Y argumen
e550: 74 73 20 61 72 65 20 72 65 76 65 72 73 65 64 20  ts are reversed 
e560: 69 6e 20 74 68 65 20 67 6c 6f 62 28 29 20 66 75  in the glob() fu
e570: 6e 63 74 69 6f 6e 0a 20 20 72 65 6c 61 74 69 76  nction.  relativ
e580: 65 20 74 6f 20 74 68 65 20 69 6e 66 69 78 20 5b  e to the infix [
e590: 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 2e 0a  GLOB] operator..
e5a0: 20 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 63    The [sqlite3_c
e5b0: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29  reate_function()
e5c0: 5d 0a 20 20 69 6e 74 65 72 66 61 63 65 20 63 61  ].  interface ca
e5d0: 6e 0a 20 20 62 65 20 75 73 65 64 20 74 6f 20 6f  n.  be used to o
e5e0: 76 65 72 72 69 64 65 20 74 68 69 73 20 66 75 6e  verride this fun
e5f0: 63 74 69 6f 6e 20 61 6e 64 20 74 68 65 72 65 62  ction and thereb
e600: 79 20 63 68 61 6e 67 65 20 74 68 65 20 6f 70 65  y change the ope
e610: 72 61 74 69 6f 6e 0a 20 20 6f 66 20 74 68 65 20  ration.  of the 
e620: 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 2e  [GLOB] operator.
e630: 3c 2f 74 64 3e 0a 7d 0a 0a 66 75 6e 63 64 65 66  </td>.}..funcdef
e640: 20 7b 69 66 6e 75 6c 6c 28 58 2c 59 29 7d 20 7b   {ifnull(X,Y)} {
e650: 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 61 20 63  } {.  Return a c
e660: 6f 70 79 20 6f 66 20 74 68 65 20 66 69 72 73 74  opy of the first
e670: 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65   non-NULL argume
e680: 6e 74 2e 20 20 49 66 0a 20 20 62 6f 74 68 20 61  nt.  If.  both a
e690: 72 67 75 6d 65 6e 74 73 20 61 72 65 20 4e 55 4c  rguments are NUL
e6a0: 4c 20 74 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72  L then NULL is r
e6b0: 65 74 75 72 6e 65 64 2e 20 54 68 65 20 69 66 6e  eturned. The ifn
e6c0: 75 6c 6c 28 29 20 66 75 6e 63 74 69 6f 6e 73 20  ull() functions 
e6d0: 61 6e 64 0a 20 20 5b 63 6f 61 6c 65 73 63 65 28  and.  [coalesce(
e6e0: 29 5d 20 77 69 74 68 20 74 77 6f 20 61 72 67 75  )] with two argu
e6f0: 6d 65 6e 74 73 20 61 72 65 20 69 6e 74 65 72 63  ments are interc
e700: 68 61 6e 67 65 61 62 6c 65 2e 3c 2f 74 64 3e 0a  hangeable.</td>.
e710: 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 68 65 78 28  }..funcdef {hex(
e720: 58 29 7d 20 7b 7d 20 7b 0a 20 20 54 68 65 20 61  X)} {} {.  The a
e730: 72 67 75 6d 65 6e 74 20 69 73 20 69 6e 74 65 72  rgument is inter
e740: 70 72 65 74 65 64 20 61 73 20 61 20 42 4c 4f 42  preted as a BLOB
e750: 2e 20 20 54 68 65 20 72 65 73 75 6c 74 0a 20 20  .  The result.  
e760: 69 73 20 61 20 68 65 78 61 64 65 63 69 6d 61 6c  is a hexadecimal
e770: 20 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74 68   rendering of th
e780: 65 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 61  e content of tha
e790: 74 20 62 6c 6f 62 2e 20 20 0a 7d 0a 0a 66 75 6e  t blob.  .}..fun
e7a0: 63 64 65 66 20 7b 6c 61 73 74 5f 69 6e 73 65 72  cdef {last_inser
e7b0: 74 5f 72 6f 77 69 64 28 29 7d 20 7b 7d 20 7b 0a  t_rowid()} {} {.
e7c0: 20 20 52 65 74 75 72 6e 20 74 68 65 20 5b 52 4f    Return the [RO
e7d0: 57 49 44 5d 0a 20 20 6f 66 20 74 68 65 20 6c 61  WID].  of the la
e7e0: 73 74 20 72 6f 77 20 69 6e 73 65 72 74 20 66 72  st row insert fr
e7f0: 6f 6d 20 74 68 69 73 0a 20 20 63 6f 6e 6e 65 63  om this.  connec
e800: 74 69 6f 6e 20 74 6f 20 74 68 65 20 64 61 74 61  tion to the data
e810: 62 61 73 65 2e 20 0a 20 20 54 68 69 73 20 69 73  base. .  This is
e820: 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 20   the same value 
e830: 74 68 61 74 20 77 6f 75 6c 64 20 62 65 20 72 65  that would be re
e840: 74 75 72 6e 65 64 0a 20 20 66 72 6f 6d 20 74 68  turned.  from th
e850: 65 20 5b 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f  e [sqlite3_last_
e860: 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 5d 20  insert_rowid()] 
e870: 41 50 49 20 66 75 6e 63 74 69 6f 6e 2e 0a 7d 0a  API function..}.
e880: 0a 66 75 6e 63 64 65 66 20 7b 6c 65 6e 67 74 68  .funcdef {length
e890: 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75  (X)} {} {.  Retu
e8a0: 72 6e 20 74 68 65 20 73 74 72 69 6e 67 20 6c 65  rn the string le
e8b0: 6e 67 74 68 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e  ngth of <i>X</i>
e8c0: 20 69 6e 20 63 68 61 72 61 63 74 65 72 73 20 69   in characters i
e8d0: 66 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 61 20  f <i>X</i> is a 
e8e0: 73 74 72 69 6e 67 2c 0a 20 20 6f 72 20 69 6e 20  string,.  or in 
e8f0: 62 79 74 65 73 20 69 66 20 3c 69 3e 58 3c 2f 69  bytes if <i>X</i
e900: 3e 20 69 73 20 61 20 62 6c 6f 62 2e 0a 7d 0a 0a  > is a blob..}..
e910: 66 75 6e 63 64 65 66 20 7b 6c 69 6b 65 28 58 2c  funcdef {like(X,
e920: 59 29 20 6c 69 6b 65 28 58 2c 59 2c 5a 29 7d 20  Y) like(X,Y,Z)} 
e930: 7b 7d 20 7b 0a 20 20 54 68 69 73 20 66 75 6e 63  {} {.  This func
e940: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
e950: 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 22 3c  implement the "<
e960: 62 3e 59 20 4c 49 4b 45 20 58 20 26 23 39 31 3b  b>Y LIKE X &#91;
e970: 45 53 43 41 50 45 20 5a 26 23 39 33 3b 3c 2f 62  ESCAPE Z&#93;</b
e980: 3e 22 0a 20 20 73 79 6e 74 61 78 20 6f 66 20 53  >".  syntax of S
e990: 51 4c 2e 20 49 66 20 74 68 65 20 6f 70 74 69 6f  QL. If the optio
e9a0: 6e 61 6c 20 45 53 43 41 50 45 20 63 6c 61 75 73  nal ESCAPE claus
e9b0: 65 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74 68  e is present, th
e9c0: 65 6e 20 74 68 65 0a 20 20 75 73 65 72 2d 66 75  en the.  user-fu
e9d0: 6e 63 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65  nction is invoke
e9e0: 64 20 77 69 74 68 20 74 68 72 65 65 20 61 72 67  d with three arg
e9f0: 75 6d 65 6e 74 73 2e 20 4f 74 68 65 72 77 69 73  uments. Otherwis
ea00: 65 2c 20 69 74 20 69 73 0a 20 20 69 6e 76 6f 6b  e, it is.  invok
ea10: 65 64 20 77 69 74 68 20 74 77 6f 20 61 72 67 75  ed with two argu
ea20: 6d 65 6e 74 73 20 6f 6e 6c 79 2e 20 4e 6f 74 65  ments only. Note
ea30: 20 74 68 61 74 20 74 68 65 20 58 20 61 6e 64 20   that the X and 
ea40: 59 20 70 61 72 61 6d 65 74 65 72 73 20 61 72 65  Y parameters are
ea50: 0a 20 20 72 65 76 65 72 73 65 64 20 69 6e 20 74  .  reversed in t
ea60: 68 65 20 6c 69 6b 65 28 29 20 66 75 6e 63 74 69  he like() functi
ea70: 6f 6e 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74  on relative to t
ea80: 68 65 20 69 6e 66 69 78 20 5b 4c 49 4b 45 5d 20  he infix [LIKE] 
ea90: 6f 70 65 72 61 74 6f 72 2e 0a 20 20 54 68 65 20  operator..  The 
eaa0: 5b 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f  [sqlite3_create_
eab0: 66 75 6e 63 74 69 6f 6e 28 29 5d 20 69 6e 74 65  function()] inte
eac0: 72 66 61 63 65 20 63 61 6e 20 62 65 20 75 73 65  rface can be use
ead0: 64 20 74 6f 20 6f 76 65 72 72 69 64 65 20 74 68  d to override th
eae0: 69 73 0a 20 20 66 75 6e 63 74 69 6f 6e 20 61 6e  is.  function an
eaf0: 64 20 74 68 65 72 65 62 79 20 63 68 61 6e 67 65  d thereby change
eb00: 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f   the operation o
eb10: 66 20 74 68 65 0a 20 20 5b 4c 49 4b 45 5d 20 6f  f the.  [LIKE] o
eb20: 70 65 72 61 74 6f 72 2e 20 57 68 65 6e 20 64 6f  perator. When do
eb30: 69 6e 67 20 74 68 69 73 2c 20 69 74 20 6d 61 79  ing this, it may
eb40: 20 62 65 20 69 6d 70 6f 72 74 61 6e 74 0a 20 20   be important.  
eb50: 74 6f 20 6f 76 65 72 72 69 64 65 20 62 6f 74 68  to override both
eb60: 20 74 68 65 20 74 77 6f 20 61 6e 64 20 74 68 72   the two and thr
eb70: 65 65 20 61 72 67 75 6d 65 6e 74 20 76 65 72 73  ee argument vers
eb80: 69 6f 6e 73 20 6f 66 20 74 68 65 20 6c 69 6b 65  ions of the like
eb90: 28 29 20 0a 20 20 66 75 6e 63 74 69 6f 6e 2e 20  () .  function. 
eba0: 4f 74 68 65 72 77 69 73 65 2c 20 64 69 66 66 65  Otherwise, diffe
ebb0: 72 65 6e 74 20 63 6f 64 65 20 6d 61 79 20 62 65  rent code may be
ebc0: 20 63 61 6c 6c 65 64 20 74 6f 20 69 6d 70 6c 65   called to imple
ebd0: 6d 65 6e 74 20 74 68 65 0a 20 20 5b 4c 49 4b 45  ment the.  [LIKE
ebe0: 5d 20 6f 70 65 72 61 74 6f 72 20 64 65 70 65 6e  ] operator depen
ebf0: 64 69 6e 67 20 6f 6e 20 77 68 65 74 68 65 72 20  ding on whether 
ec00: 6f 72 20 6e 6f 74 20 61 6e 20 45 53 43 41 50 45  or not an ESCAPE
ec10: 20 63 6c 61 75 73 65 20 77 61 73 20 0a 20 20 73   clause was .  s
ec20: 70 65 63 69 66 69 65 64 2e 0a 7d 0a 0a 66 75 6e  pecified..}..fun
ec30: 63 64 65 66 20 7b 6c 6f 61 64 5f 65 78 74 65 6e  cdef {load_exten
ec40: 73 69 6f 6e 28 58 29 20 6c 6f 61 64 5f 65 78 74  sion(X) load_ext
ec50: 65 6e 73 69 6f 6e 28 58 2c 59 29 7d 20 7b 6c 6f  ension(X,Y)} {lo
ec60: 61 64 5f 65 78 74 65 6e 73 69 6f 6e 7d 20 7b 0a  ad_extension} {.
ec70: 20 20 4c 6f 61 64 20 53 51 4c 69 74 65 20 65 78    Load SQLite ex
ec80: 74 65 6e 73 69 6f 6e 73 20 6f 75 74 20 6f 66 20  tensions out of 
ec90: 74 68 65 20 73 68 61 72 65 64 20 6c 69 62 72 61  the shared libra
eca0: 72 79 0a 20 20 66 69 6c 65 20 6e 61 6d 65 64 20  ry.  file named 
ecb0: 3c 69 3e 58 3c 2f 69 3e 20 75 73 69 6e 67 20 74  <i>X</i> using t
ecc0: 68 65 20 65 6e 74 72 79 20 70 6f 69 6e 74 20 3c  he entry point <
ecd0: 69 3e 59 3c 2f 69 3e 2e 20 20 54 68 65 20 72 65  i>Y</i>.  The re
ece0: 73 75 6c 74 0a 20 20 69 73 20 61 20 4e 55 4c 4c  sult.  is a NULL
ecf0: 2e 20 20 49 66 20 3c 69 3e 59 3c 2f 69 3e 20 69  .  If <i>Y</i> i
ed00: 73 20 6f 6d 69 74 74 65 64 20 74 68 65 6e 20 74  s omitted then t
ed10: 68 65 20 64 65 66 61 75 6c 74 20 65 6e 74 72 79  he default entry
ed20: 20 70 6f 69 6e 74 0a 20 20 6f 66 20 3c 62 3e 73   point.  of <b>s
ed30: 71 6c 69 74 65 33 5f 65 78 74 65 6e 73 69 6f 6e  qlite3_extension
ed40: 5f 69 6e 69 74 3c 2f 62 3e 20 69 73 20 75 73 65  _init</b> is use
ed50: 64 2e 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f  d.  This functio
ed60: 6e 20 72 61 69 73 65 73 0a 20 20 61 6e 20 65 78  n raises.  an ex
ed70: 63 65 70 74 69 6f 6e 20 69 66 20 74 68 65 20 65  ception if the e
ed80: 78 74 65 6e 73 69 6f 6e 20 66 61 69 6c 73 20 74  xtension fails t
ed90: 6f 20 6c 6f 61 64 20 6f 72 20 69 6e 69 74 69 61  o load or initia
eda0: 6c 69 7a 65 20 63 6f 72 72 65 63 74 6c 79 2e 0a  lize correctly..
edb0: 0a 20 20 3c 70 3e 54 68 69 73 20 66 75 6e 63 74  .  <p>This funct
edc0: 69 6f 6e 20 77 69 6c 6c 20 66 61 69 6c 20 69 66  ion will fail if
edd0: 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 61   the extension a
ede0: 74 74 65 6d 70 74 73 20 74 6f 20 6d 6f 64 69 66  ttempts to modif
edf0: 79 0a 20 20 6f 72 20 64 65 6c 65 74 65 20 61 20  y.  or delete a 
ee00: 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20  SQL function or 
ee10: 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e  collating sequen
ee20: 63 65 2e 20 20 54 68 65 0a 20 20 65 78 74 65 6e  ce.  The.  exten
ee30: 73 69 6f 6e 20 63 61 6e 20 61 64 64 20 6e 65 77  sion can add new
ee40: 20 66 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f   functions or co
ee50: 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65  llating sequence
ee60: 73 2c 20 62 75 74 20 63 61 6e 6e 6f 74 0a 20 20  s, but cannot.  
ee70: 6d 6f 64 69 66 79 20 6f 72 20 64 65 6c 65 74 65  modify or delete
ee80: 20 65 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69   existing functi
ee90: 6f 6e 73 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67  ons or collating
eea0: 20 73 65 71 75 65 6e 63 65 73 20 62 65 63 61 75   sequences becau
eeb0: 73 65 0a 20 20 74 68 6f 73 65 20 66 75 6e 63 74  se.  those funct
eec0: 69 6f 6e 73 20 61 6e 64 2f 6f 72 20 63 6f 6c 6c  ions and/or coll
eed0: 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73 20  ating sequences 
eee0: 6d 69 67 68 74 20 62 65 20 75 73 65 64 20 65 6c  might be used el
eef0: 73 65 77 68 65 72 65 0a 20 20 69 6e 20 74 68 65  sewhere.  in the
ef00: 20 63 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69   currently runni
ef10: 6e 67 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ng SQL statement
ef20: 2e 20 20 54 6f 20 6c 6f 61 64 20 61 6e 20 65 78  .  To load an ex
ef30: 74 65 6e 73 69 6f 6e 20 74 68 61 74 0a 20 20 63  tension that.  c
ef40: 68 61 6e 67 65 73 20 6f 72 20 64 65 6c 65 74 65  hanges or delete
ef50: 73 20 66 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63  s functions or c
ef60: 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63  ollating sequenc
ef70: 65 73 2c 20 75 73 65 20 74 68 65 0a 20 20 5b 73  es, use the.  [s
ef80: 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65  qlite3_load_exte
ef90: 6e 73 69 6f 6e 28 29 5d 20 43 2d 6c 61 6e 67 75  nsion()] C-langu
efa0: 61 67 65 20 41 50 49 2e 3c 2f 70 3e 0a 7d 0a 0a  age API.</p>.}..
efb0: 66 75 6e 63 64 65 66 20 7b 6c 6f 77 65 72 28 58  funcdef {lower(X
efc0: 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e  )} {} {.  Return
efd0: 20 61 20 63 6f 70 79 20 6f 66 20 73 74 72 69 6e   a copy of strin
efe0: 67 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 74 68 20  g <i>X</i> with 
eff0: 61 6c 6c 20 41 53 43 49 49 20 63 68 61 72 61 63  all ASCII charac
f000: 74 65 72 73 0a 20 20 63 6f 6e 76 65 72 74 65 64  ters.  converted
f010: 20 74 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e 20   to lower case. 
f020: 20 54 68 65 20 64 65 66 61 75 6c 74 20 62 75 69   The default bui
f030: 6c 74 2d 69 6e 20 6c 6f 77 65 72 28 29 20 66 75  lt-in lower() fu
f040: 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 0a 20 20 66  nction works.  f
f050: 6f 72 20 41 53 43 49 49 20 63 68 61 72 61 63 74  or ASCII charact
f060: 65 72 73 20 6f 6e 6c 79 2e 20 20 54 6f 20 64 6f  ers only.  To do
f070: 20 63 61 73 65 20 63 6f 6e 76 65 72 73 69 6f 6e   case conversion
f080: 73 20 6f 6e 20 6e 6f 6e 2d 41 53 43 49 49 0a 20  s on non-ASCII. 
f090: 20 63 68 61 72 61 63 74 65 72 73 2c 20 6c 6f 61   characters, loa
f0a0: 64 20 74 68 65 20 49 43 55 20 65 78 74 65 6e 73  d the ICU extens
f0b0: 69 6f 6e 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ion..}..funcdef 
f0c0: 7b 6c 74 72 69 6d 28 58 29 20 6c 74 72 69 6d 28  {ltrim(X) ltrim(
f0d0: 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74  X,Y)} {} {.  Ret
f0e0: 75 72 6e 20 61 20 73 74 72 69 6e 67 20 66 6f 72  urn a string for
f0f0: 6d 65 64 20 62 79 20 72 65 6d 6f 76 69 6e 67 20  med by removing 
f100: 61 6e 79 20 61 6e 64 20 61 6c 6c 0a 20 20 63 68  any and all.  ch
f110: 61 72 61 63 74 65 72 73 20 74 68 61 74 20 61 70  aracters that ap
f120: 70 65 61 72 20 69 6e 20 3c 69 3e 59 3c 2f 69 3e  pear in <i>Y</i>
f130: 20 66 72 6f 6d 20 74 68 65 20 6c 65 66 74 20 73   from the left s
f140: 69 64 65 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e  ide of <i>X</i>.
f150: 0a 20 20 49 66 20 74 68 65 20 3c 69 3e 59 3c 2f  .  If the <i>Y</
f160: 69 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f  i> argument is o
f170: 6d 69 74 74 65 64 2c 20 73 70 61 63 65 73 20 61  mitted, spaces a
f180: 72 65 20 72 65 6d 6f 76 65 64 2e 0a 7d 0a 0a 66  re removed..}..f
f190: 75 6e 63 64 65 66 20 7b 6d 61 78 28 58 2c 59 2c  uncdef {max(X,Y,
f1a0: 2e 2e 2e 29 7d 20 7b 6d 61 78 43 6f 72 65 46 75  ...)} {maxCoreFu
f1b0: 6e 63 20 6d 61 78 7d 20 7b 0a 20 20 52 65 74 75  nc max} {.  Retu
f1c0: 72 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  rn the argument 
f1d0: 77 69 74 68 20 74 68 65 20 6d 61 78 69 6d 75 6d  with the maximum
f1e0: 20 76 61 6c 75 65 2e 20 20 4f 72 20 72 65 74 75   value.  Or retu
f1f0: 72 6e 20 4e 55 4c 4c 20 69 66 20 61 6e 79 20 61  rn NULL if any a
f200: 72 67 75 6d 65 6e 74 0a 20 20 69 73 20 4e 55 4c  rgument.  is NUL
f210: 4c 2e 0a 20 20 4e 6f 74 65 20 74 68 61 74 20 3c  L..  Note that <
f220: 62 3e 6d 61 78 28 29 3c 2f 62 3e 20 69 73 20 61  b>max()</b> is a
f230: 20 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e   simple function
f240: 20 77 68 65 6e 0a 20 20 69 74 20 68 61 73 20 32   when.  it has 2
f250: 20 6f 72 20 6d 6f 72 65 20 61 72 67 75 6d 65 6e   or more argumen
f260: 74 73 20 62 75 74 20 63 6f 6e 76 65 72 74 73 20  ts but converts 
f270: 74 6f 20 61 6e 20 61 67 67 72 65 67 61 74 65 20  to an aggregate 
f280: 66 75 6e 63 74 69 6f 6e 20 69 66 20 67 69 76 65  function if give
f290: 6e 0a 20 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c  n.  only a singl
f2a0: 65 20 61 72 67 75 6d 65 6e 74 2e 0a 7d 0a 0a 66  e argument..}..f
f2b0: 75 6e 63 64 65 66 20 7b 6d 69 6e 28 58 2c 59 2c  uncdef {min(X,Y,
f2c0: 2e 2e 2e 29 7d 20 7b 6d 69 6e 43 6f 72 65 46 75  ...)} {minCoreFu
f2d0: 6e 63 20 6d 69 6e 7d 20 7b 0a 20 20 52 65 74 75  nc min} {.  Retu
f2e0: 72 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  rn the argument 
f2f0: 77 69 74 68 20 74 68 65 20 6d 69 6e 69 6d 75 6d  with the minimum
f300: 20 76 61 6c 75 65 2e 20 0a 20 20 4e 6f 74 65 20   value. .  Note 
f310: 74 68 61 74 20 3c 62 3e 6d 69 6e 28 29 3c 2f 62  that <b>min()</b
f320: 3e 20 69 73 20 61 20 73 69 6d 70 6c 65 20 66 75  > is a simple fu
f330: 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 20 20 69 74  nction when.  it
f340: 20 68 61 73 20 32 20 6f 72 20 6d 6f 72 65 20 61   has 2 or more a
f350: 72 67 75 6d 65 6e 74 73 20 62 75 74 20 63 6f 6e  rguments but con
f360: 76 65 72 74 73 20 74 6f 20 61 6e 20 61 67 67 72  verts to an aggr
f370: 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 69  egate function i
f380: 66 20 67 69 76 65 6e 0a 20 20 6f 6e 6c 79 20 61  f given.  only a
f390: 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74   single argument
f3a0: 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6e 75  ..}..funcdef {nu
f3b0: 6c 6c 69 66 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a  llif(X,Y)} {} {.
f3c0: 20 20 52 65 74 75 72 6e 20 74 68 65 20 66 69 72    Return the fir
f3d0: 73 74 20 61 72 67 75 6d 65 6e 74 20 69 66 20 74  st argument if t
f3e0: 68 65 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  he arguments are
f3f0: 20 64 69 66 66 65 72 65 6e 74 2c 20 0a 20 20 6f   different, .  o
f400: 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 20  therwise return 
f410: 4e 55 4c 4c 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  NULL..}..funcdef
f420: 20 7b 71 75 6f 74 65 28 58 29 7d 20 7b 7d 20 7b   {quote(X)} {} {
f430: 0a 20 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20  .  This routine 
f440: 72 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67  returns a string
f450: 20 77 68 69 63 68 20 69 73 20 74 68 65 20 76 61   which is the va
f460: 6c 75 65 20 6f 66 0a 20 20 69 74 73 20 61 72 67  lue of.  its arg
f470: 75 6d 65 6e 74 20 73 75 69 74 61 62 6c 65 20 66  ument suitable f
f480: 6f 72 20 69 6e 63 6c 75 73 69 6f 6e 20 69 6e 74  or inclusion int
f490: 6f 20 61 6e 6f 74 68 65 72 20 53 51 4c 20 73 74  o another SQL st
f4a0: 61 74 65 6d 65 6e 74 2e 0a 20 20 53 74 72 69 6e  atement..  Strin
f4b0: 67 73 20 61 72 65 20 73 75 72 72 6f 75 6e 64 65  gs are surrounde
f4c0: 64 20 62 79 20 73 69 6e 67 6c 65 2d 71 75 6f 74  d by single-quot
f4d0: 65 73 20 77 69 74 68 20 65 73 63 61 70 65 73 20  es with escapes 
f4e0: 6f 6e 20 69 6e 74 65 72 69 6f 72 20 71 75 6f 74  on interior quot
f4f0: 65 73 0a 20 20 61 73 20 6e 65 65 64 65 64 2e 20  es.  as needed. 
f500: 20 42 4c 4f 42 73 20 61 72 65 20 65 6e 63 6f 64   BLOBs are encod
f510: 65 64 20 61 73 20 68 65 78 61 64 65 63 69 6d 61  ed as hexadecima
f520: 6c 20 6c 69 74 65 72 61 6c 73 2e 0a 20 20 53 51  l literals..  SQ
f530: 4c 69 74 65 20 75 73 65 73 20 74 68 69 73 20 66  Lite uses this f
f540: 75 6e 63 74 69 6f 6e 20 69 6e 74 65 72 6e 61 6c  unction internal
f550: 6c 79 20 69 6e 20 69 74 73 20 69 6d 70 6c 65 6d  ly in its implem
f560: 65 6e 74 61 74 69 6f 6e 20 6f 66 20 5b 56 41 43  entation of [VAC
f570: 55 55 4d 5d 0a 20 20 73 6f 20 69 66 20 74 68 69  UUM].  so if thi
f580: 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 76  s function is ov
f590: 65 72 6c 6f 61 64 69 6e 67 20 74 6f 20 70 72 6f  erloading to pro
f5a0: 76 69 64 65 20 69 6e 63 6f 6d 70 61 74 69 62 6c  vide incompatibl
f5b0: 65 20 62 65 68 61 76 69 6f 72 2c 20 74 68 65 0a  e behavior, the.
f5c0: 20 20 5b 56 41 43 55 55 4d 5d 20 63 6f 6d 6d 61    [VACUUM] comma
f5d0: 6e 64 20 77 69 6c 6c 20 6c 69 6b 65 6c 79 20 63  nd will likely c
f5e0: 65 61 73 65 20 74 6f 20 77 6f 72 6b 2e 0a 7d 0a  ease to work..}.
f5f0: 0a 66 75 6e 63 64 65 66 20 7b 72 61 6e 64 6f 6d  .funcdef {random
f600: 28 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72  ()} {} {.  Retur
f610: 6e 20 61 20 70 73 65 75 64 6f 2d 72 61 6e 64 6f  n a pseudo-rando
f620: 6d 20 69 6e 74 65 67 65 72 0a 20 20 62 65 74 77  m integer.  betw
f630: 65 65 6e 20 2d 39 32 32 33 33 37 32 30 33 36 38  een -92233720368
f640: 35 34 37 37 35 38 30 38 20 61 6e 64 20 2b 39 32  54775808 and +92
f650: 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30  2337203685477580
f660: 37 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72  7..}..funcdef {r
f670: 61 6e 64 6f 6d 62 6c 6f 62 28 4e 29 7d 20 7b 7d  andomblob(N)} {}
f680: 20 7b 0a 20 20 52 65 74 75 72 6e 20 61 6e 20 3c   {.  Return an <
f690: 69 3e 4e 3c 2f 69 3e 2d 62 79 74 65 20 62 6c 6f  i>N</i>-byte blo
f6a0: 62 20 63 6f 6e 74 61 69 6e 69 6e 67 20 70 73 65  b containing pse
f6b0: 75 64 6f 2d 72 61 6e 64 6f 6d 20 62 79 74 65 73  udo-random bytes
f6c0: 2e 0a 20 20 3c 69 3e 4e 3c 2f 69 3e 20 73 68 6f  ..  <i>N</i> sho
f6d0: 75 6c 64 20 62 65 20 61 20 70 6f 73 74 69 76 65  uld be a postive
f6e0: 20 69 6e 74 65 67 65 72 2e 0a 0a 20 20 3c 70 3e   integer...  <p>
f6f0: 48 69 6e 74 3a 20 20 61 70 70 6c 69 63 61 74 69  Hint:  applicati
f700: 6f 6e 73 20 63 61 6e 20 67 65 6e 65 72 61 74 65  ons can generate
f710: 20 67 6c 6f 62 61 6c 6c 79 20 75 6e 69 71 75 65   globally unique
f720: 20 69 64 65 6e 74 69 66 69 65 72 73 0a 20 20 75   identifiers.  u
f730: 73 69 6e 67 20 74 68 69 73 20 66 75 6e 63 74 69  sing this functi
f740: 6f 6e 20 74 6f 67 65 74 68 65 72 20 77 69 74 68  on together with
f750: 20 5b 68 65 78 28 29 5d 20 61 6e 64 2f 6f 72 0a   [hex()] and/or.
f760: 20 20 5b 6c 6f 77 65 72 28 29 5d 20 6c 69 6b 65    [lower()] like
f770: 20 74 68 69 73 3a 3c 2f 70 3e 0a 0a 20 20 3c 62   this:</p>..  <b
f780: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 68 65 78  lockquote>.  hex
f790: 28 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 36 29 29  (randomblob(16))
f7a0: 3c 62 72 3e 3c 2f 62 72 3e 0a 20 20 6c 6f 77 65  <br></br>.  lowe
f7b0: 72 28 68 65 78 28 72 61 6e 64 6f 6d 62 6c 6f 62  r(hex(randomblob
f7c0: 28 31 36 29 29 29 0a 20 20 3c 2f 62 6c 6f 63 6b  (16))).  </block
f7d0: 71 75 6f 74 65 3e 0a 7d 0a 0a 66 75 6e 63 64 65  quote>.}..funcde
f7e0: 66 20 7b 72 65 70 6c 61 63 65 28 58 2c 59 2c 5a  f {replace(X,Y,Z
f7f0: 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e  )} {} {.  Return
f800: 20 61 20 73 74 72 69 6e 67 20 66 6f 72 6d 65 64   a string formed
f810: 20 62 79 20 73 75 62 73 74 69 74 75 74 69 6e 67   by substituting
f820: 20 73 74 72 69 6e 67 20 3c 69 3e 5a 3c 2f 69 3e   string <i>Z</i>
f830: 20 66 6f 72 0a 20 20 65 76 65 72 79 20 6f 63 63   for.  every occ
f840: 75 72 72 61 6e 63 65 20 6f 66 20 73 74 72 69 6e  urrance of strin
f850: 67 20 3c 69 3e 59 3c 2f 69 3e 20 69 6e 20 73 74  g <i>Y</i> in st
f860: 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20  ring <i>X</i>.  
f870: 54 68 65 20 5b 42 49 4e 41 52 59 5d 0a 20 20 63  The [BINARY].  c
f880: 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63  ollating sequenc
f890: 65 20 69 73 20 75 73 65 64 20 66 6f 72 20 63 6f  e is used for co
f8a0: 6d 70 61 72 69 73 6f 6e 73 2e 20 20 49 66 20 3c  mparisons.  If <
f8b0: 69 3e 59 3c 2f 69 3e 20 69 73 20 61 6e 20 65 6d  i>Y</i> is an em
f8c0: 70 74 79 0a 20 20 73 74 72 69 6e 67 20 74 68 65  pty.  string the
f8d0: 6e 20 72 65 74 75 72 6e 20 3c 69 3e 58 3c 2f 69  n return <i>X</i
f8e0: 3e 20 75 6e 63 68 61 6e 67 65 64 2e 0a 7d 0a 0a  > unchanged..}..
f8f0: 66 75 6e 63 64 65 66 20 7b 72 6f 75 6e 64 28 58  funcdef {round(X
f900: 29 20 72 6f 75 6e 64 28 58 2c 59 29 7d 20 7b 7d  ) round(X,Y)} {}
f910: 20 7b 0a 20 20 52 6f 75 6e 64 20 6f 66 66 20 74   {.  Round off t
f920: 68 65 20 6e 75 6d 62 65 72 20 3c 69 3e 58 3c 2f  he number <i>X</
f930: 69 3e 20 74 6f 20 3c 69 3e 59 3c 2f 69 3e 20 64  i> to <i>Y</i> d
f940: 69 67 69 74 73 20 74 6f 20 74 68 65 0a 20 20 72  igits to the.  r
f950: 69 67 68 74 20 6f 66 20 74 68 65 20 64 65 63 69  ight of the deci
f960: 6d 61 6c 20 70 6f 69 6e 74 2e 20 20 49 66 20 74  mal point.  If t
f970: 68 65 20 3c 69 3e 59 3c 2f 69 3e 20 61 72 67 75  he <i>Y</i> argu
f980: 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74 65 64 2c  ment is omitted,
f990: 20 30 20 69 73 20 0a 20 20 61 73 73 75 6d 65 64   0 is .  assumed
f9a0: 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72 74  ..}..funcdef {rt
f9b0: 72 69 6d 28 58 29 20 72 74 72 69 6d 28 58 2c 59  rim(X) rtrim(X,Y
f9c0: 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e  )} {} {.  Return
f9d0: 20 61 20 73 74 72 69 6e 67 20 66 6f 72 6d 65 64   a string formed
f9e0: 20 62 79 20 72 65 6d 6f 76 69 6e 67 20 61 6e 79   by removing any
f9f0: 20 61 6e 64 20 61 6c 6c 0a 20 20 63 68 61 72 61   and all.  chara
fa00: 63 74 65 72 73 20 74 68 61 74 20 61 70 70 65 61  cters that appea
fa10: 72 20 69 6e 20 3c 69 3e 59 3c 2f 69 3e 20 66 72  r in <i>Y</i> fr
fa20: 6f 6d 20 74 68 65 20 72 69 67 68 74 20 73 69 64  om the right sid
fa30: 65 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 20  e of <i>X</i>.. 
fa40: 20 49 66 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e   If the <i>Y</i>
fa50: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69   argument is omi
fa60: 74 74 65 64 2c 20 73 70 61 63 65 73 20 61 72 65  tted, spaces are
fa70: 20 72 65 6d 6f 76 65 64 2e 0a 7d 0a 0a 66 75 6e   removed..}..fun
fa80: 63 64 65 66 20 7b 73 6f 75 6e 64 65 78 28 58 29  cdef {soundex(X)
fa90: 7d 20 7b 7d 20 7b 0a 20 20 43 6f 6d 70 75 74 65  } {} {.  Compute
faa0: 20 74 68 65 20 73 6f 75 6e 64 65 78 20 65 6e 63   the soundex enc
fab0: 6f 64 69 6e 67 20 6f 66 20 74 68 65 20 73 74 72  oding of the str
fac0: 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 20 20  ing <i>X</i>..  
fad0: 54 68 65 20 73 74 72 69 6e 67 20 22 3f 30 30 30  The string "?000
fae0: 22 20 69 73 20 72 65 74 75 72 6e 65 64 20 69 66  " is returned if
faf0: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73   the argument is
fb00: 20 4e 55 4c 4c 2e 0a 20 20 54 68 69 73 20 66 75   NULL..  This fu
fb10: 6e 63 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65  nction is omitte
fb20: 64 20 66 72 6f 6d 20 53 51 4c 69 74 65 20 62 79  d from SQLite by
fb30: 20 64 65 66 61 75 6c 74 2e 0a 20 20 49 74 20 69   default..  It i
fb40: 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65  s only available
fb50: 20 74 68 65 20 2d 44 53 51 4c 49 54 45 5f 53 4f   the -DSQLITE_SO
fb60: 55 4e 44 45 58 3d 31 20 63 6f 6d 70 69 6c 65 72  UNDEX=1 compiler
fb70: 20 6f 70 74 69 6f 6e 0a 20 20 69 73 20 75 73 65   option.  is use
fb80: 64 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73  d when SQLite is
fb90: 20 62 75 69 6c 74 2e 0a 7d 0a 0a 66 75 6e 63 64   built..}..funcd
fba0: 65 66 20 7b 73 71 6c 69 74 65 5f 76 65 72 73 69  ef {sqlite_versi
fbb0: 6f 6e 28 29 7d 20 7b 73 71 6c 69 74 65 5f 76 65  on()} {sqlite_ve
fbc0: 72 73 69 6f 6e 7d 20 7b 0a 20 20 52 65 74 75 72  rsion} {.  Retur
fbd0: 6e 20 74 68 65 20 76 65 72 73 69 6f 6e 20 73 74  n the version st
fbe0: 72 69 6e 67 20 66 6f 72 20 74 68 65 20 53 51 4c  ring for the SQL
fbf0: 69 74 65 20 6c 69 62 72 61 72 79 0a 20 20 74 68  ite library.  th
fc00: 61 74 20 69 73 20 72 75 6e 6e 69 6e 67 2e 20 20  at is running.  
fc10: 45 78 61 6d 70 6c 65 3a 20 20 22 33 2e 35 2e 39  Example:  "3.5.9
fc20: 22 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73 75  ".}..funcdef {su
fc30: 62 73 74 72 28 58 2c 59 2c 5a 29 20 73 75 62 73  bstr(X,Y,Z) subs
fc40: 74 72 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20  tr(X,Y)} {} {.  
fc50: 52 65 74 75 72 6e 20 61 20 73 75 62 73 74 72 69  Return a substri
fc60: 6e 67 20 6f 66 20 69 6e 70 75 74 20 73 74 72 69  ng of input stri
fc70: 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 74 68 61 74  ng <i>X</i> that
fc80: 20 62 65 67 69 6e 73 0a 20 20 77 69 74 68 20 74   begins.  with t
fc90: 68 65 20 3c 69 3e 59 3c 2f 69 3e 2d 74 68 20 63  he <i>Y</i>-th c
fca0: 68 61 72 61 63 74 65 72 20 61 6e 64 20 77 68 69  haracter and whi
fcb0: 63 68 20 69 73 20 3c 69 3e 5a 3c 2f 69 3e 20 63  ch is <i>Z</i> c
fcc0: 68 61 72 61 63 74 65 72 73 20 6c 6f 6e 67 2e 0a  haracters long..
fcd0: 20 20 49 66 20 3c 69 3e 5a 3c 2f 69 3e 20 69 73    If <i>Z</i> is
fce0: 20 6f 6d 69 74 74 65 64 20 74 68 65 6e 20 61 6c   omitted then al
fcf0: 6c 20 63 68 61 72 61 63 74 65 72 20 74 68 72 6f  l character thro
fd00: 75 67 68 20 74 68 65 20 65 6e 64 20 6f 66 20 74  ugh the end of t
fd10: 68 65 20 73 74 72 69 6e 67 0a 20 20 61 72 65 20  he string.  are 
fd20: 72 65 74 75 72 6e 65 64 2e 0a 20 20 54 68 65 20  returned..  The 
fd30: 6c 65 66 74 2d 6d 6f 73 74 20 63 68 61 72 61 63  left-most charac
fd40: 74 65 72 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20  ter of <i>X</i> 
fd50: 69 73 20 6e 75 6d 62 65 72 20 31 2e 20 20 49 66  is number 1.  If
fd60: 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 6e 65 67   <i>Y</i> is neg
fd70: 61 74 69 76 65 0a 20 20 74 68 65 20 74 68 65 20  ative.  the the 
fd80: 66 69 72 73 74 20 63 68 61 72 61 63 74 65 72 20  first character 
fd90: 6f 66 20 74 68 65 20 73 75 62 73 74 72 69 6e 67  of the substring
fda0: 20 69 73 20 66 6f 75 6e 64 20 62 79 20 63 6f 75   is found by cou
fdb0: 6e 74 69 6e 67 20 66 72 6f 6d 20 74 68 65 0a 20  nting from the. 
fdc0: 20 72 69 67 68 74 20 72 61 74 68 65 72 20 74 68   right rather th
fdd0: 61 6e 20 74 68 65 20 6c 65 66 74 2e 20 20 49 66  an the left.  If
fde0: 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 73 74 72   <i>X</i> is str
fdf0: 69 6e 67 0a 20 20 74 68 65 6e 20 63 68 61 72 61  ing.  then chara
fe00: 63 74 65 72 73 20 69 6e 64 69 63 65 73 20 72 65  cters indices re
fe10: 66 65 72 20 74 6f 20 61 63 74 75 61 6c 20 55 54  fer to actual UT
fe20: 46 2d 38 20 63 68 61 72 61 63 74 65 72 73 2e 20  F-8 characters. 
fe30: 20 49 66 0a 20 20 3c 69 3e 58 3c 2f 69 3e 20 69   If.  <i>X</i> i
fe40: 73 20 61 20 42 4c 4f 42 20 74 68 65 6e 20 74 68  s a BLOB then th
fe50: 65 20 69 6e 64 69 63 65 73 20 72 65 66 65 72 20  e indices refer 
fe60: 74 6f 20 62 79 74 65 73 2e 0a 7d 0a 0a 66 75 6e  to bytes..}..fun
fe70: 63 64 65 66 20 7b 74 72 69 6d 28 58 29 20 74 72  cdef {trim(X) tr
fe80: 69 6d 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20  im(X,Y)} {} {.  
fe90: 52 65 74 75 72 6e 20 61 20 73 74 72 69 6e 67 20  Return a string 
fea0: 66 6f 72 6d 65 64 20 62 79 20 72 65 6d 6f 76 69  formed by removi
feb0: 6e 67 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a 20  ng any and all. 
fec0: 20 63 68 61 72 61 63 74 65 72 73 20 74 68 61 74   characters that
fed0: 20 61 70 70 65 61 72 20 69 6e 20 3c 69 3e 59 3c   appear in <i>Y<
fee0: 2f 69 3e 20 66 72 6f 6d 20 62 6f 74 68 20 65 6e  /i> from both en
fef0: 64 73 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e 0a  ds of <i>X</i>..
ff00: 20 20 49 66 20 74 68 65 20 3c 69 3e 59 3c 2f 69    If the <i>Y</i
ff10: 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d  > argument is om
ff20: 69 74 74 65 64 2c 20 73 70 61 63 65 73 20 61 72  itted, spaces ar
ff30: 65 20 72 65 6d 6f 76 65 64 2e 0a 7d 0a 0a 66 75  e removed..}..fu
ff40: 6e 63 64 65 66 20 7b 74 79 70 65 6f 66 28 58 29  ncdef {typeof(X)
ff50: 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20  } {} {.  Return 
ff60: 74 68 65 20 5b 64 61 74 61 74 79 70 65 5d 20 6f  the [datatype] o
ff70: 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  f the expression
ff80: 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 54 68 65 20   <i>X</i>.  The 
ff90: 6f 6e 6c 79 20 0a 20 20 72 65 74 75 72 6e 20 76  only .  return v
ffa0: 61 6c 75 65 73 20 61 72 65 20 22 6e 75 6c 6c 22  alues are "null"
ffb0: 2c 20 22 69 6e 74 65 67 65 72 22 2c 20 22 72 65  , "integer", "re
ffc0: 61 6c 22 2c 20 22 74 65 78 74 22 2c 20 61 6e 64  al", "text", and
ffd0: 20 22 62 6c 6f 62 22 2e 0a 7d 0a 0a 66 75 6e 63   "blob"..}..func
ffe0: 64 65 66 20 7b 75 70 70 65 72 28 58 29 7d 20 7b  def {upper(X)} {
fff0: 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 61 20 63  } {.  Return a c
10000 6f 70 79 20 6f 66 20 69 6e 70 75 74 20 73 74 72  opy of input str
10010 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 63 6f 6e  ing <i>X</i> con
10020 76 65 72 74 65 64 20 74 6f 20 61 6c 6c 0a 20 20  verted to all.  
10030 75 70 70 65 72 2d 63 61 73 65 20 6c 65 74 74 65  upper-case lette
10040 72 73 2e 20 20 54 68 65 20 69 6d 70 6c 65 6d 65  rs.  The impleme
10050 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20  ntation of this 
10060 66 75 6e 63 74 69 6f 6e 20 75 73 65 73 20 74 68  function uses th
10070 65 20 43 20 6c 69 62 72 61 72 79 0a 20 20 72 6f  e C library.  ro
10080 75 74 69 6e 65 20 3c 62 3e 74 6f 75 70 70 65 72  utine <b>toupper
10090 28 29 3c 2f 62 3e 20 77 68 69 63 68 20 6d 65 61  ()</b> which mea
100a0 6e 73 20 69 74 20 6d 61 79 20 6e 6f 74 20 77 6f  ns it may not wo
100b0 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 6f 6e 20  rk correctly on 
100c0 0a 20 20 6e 6f 6e 2d 41 53 43 49 49 20 55 54 46  .  non-ASCII UTF
100d0 2d 38 20 73 74 72 69 6e 67 73 2e 0a 7d 0a 0a 66  -8 strings..}..f
100e0 75 6e 63 64 65 66 20 7b 7a 65 72 6f 62 6c 6f 62  uncdef {zeroblob
100f0 28 4e 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75  (N)} {} {.  Retu
10100 72 6e 20 61 20 42 4c 4f 42 20 63 6f 6e 73 69 73  rn a BLOB consis
10110 74 69 6e 67 20 6f 66 20 4e 20 62 79 74 65 73 20  ting of N bytes 
10120 6f 66 20 30 78 30 30 2e 20 20 53 51 4c 69 74 65  of 0x00.  SQLite
10130 0a 20 20 6d 61 6e 61 67 65 73 20 74 68 65 73 65  .  manages these
10140 20 7a 65 72 6f 62 6c 6f 62 73 20 76 65 72 79 20   zeroblobs very 
10150 65 66 66 69 63 69 65 6e 74 6c 79 2e 20 20 5a 65  efficiently.  Ze
10160 72 6f 62 6c 6f 62 73 20 63 61 6e 20 62 65 20 75  roblobs can be u
10170 73 65 64 20 74 6f 0a 20 20 72 65 73 65 72 76 65  sed to.  reserve
10180 20 73 70 61 63 65 20 66 6f 72 20 61 20 42 4c 4f   space for a BLO
10190 42 20 74 68 61 74 20 69 73 20 6c 61 74 65 72 20  B that is later 
101a0 77 72 69 74 74 65 6e 20 75 73 69 6e 67 20 0a 20  written using . 
101b0 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f   [sqlite3_blob_o
101c0 70 65 6e 28 29 20 7c 20 69 6e 63 72 65 6d 65 6e  pen() | incremen
101d0 74 61 6c 20 42 4c 4f 42 20 49 2f 4f 5d 2e 0a 7d  tal BLOB I/O]..}
101e0 0a 3c 2f 74 63 6c 3e 0a 3c 2f 74 61 62 6c 65 3e  .</tcl>.</table>
101f0 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
10200 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10210 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10220 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10230 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10240 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
10250 44 61 74 65 20 41 6e 64 20 54 69 6d 65 20 46 75  Date And Time Fu
10260 6e 63 74 69 6f 6e 73 7d 20 64 61 74 65 66 75 6e  nctions} datefun
10270 63 20 7b 64 61 74 65 66 75 6e 63 7d 0a 3c 2f 74  c {datefunc}.</t
10280 63 6c 3e 0a 0a 3c 70 3e 0a 53 51 4c 69 74 65 20  cl>..<p>.SQLite 
10290 73 75 70 70 6f 72 74 73 20 66 69 76 65 20 64 61  supports five da
102a0 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63  te and time func
102b0 74 69 6f 6e 73 20 61 73 20 66 6f 6c 6c 6f 77 73  tions as follows
102c0 3a 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 3c 6f 6c 3e  :.</p>..<p>.<ol>
102d0 0a 3c 6c 69 3e 20 3c 62 3e 64 61 74 65 28 3c 2f  .<li> <b>date(</
102e0 62 3e 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c  b><i>timestring,
102f0 20 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69 66   modifier, modif
10300 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29  ier, ...</i><b>)
10310 3c 2f 62 3e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  </b> </li>.<li> 
10320 3c 62 3e 74 69 6d 65 28 3c 2f 62 3e 3c 69 3e 74  <b>time(</b><i>t
10330 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66  imestring, modif
10340 69 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e  ier, modifier, .
10350 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 20 3c  ..</i><b>)</b> <
10360 2f 6c 69 3e 0a 3c 6c 69 3e 20 3c 62 3e 64 61 74  /li>.<li> <b>dat
10370 65 74 69 6d 65 28 3c 2f 62 3e 3c 69 3e 74 69 6d  etime(</b><i>tim
10380 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65  estring, modifie
10390 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e  r, modifier, ...
103a0 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 20 3c 2f 6c  </i><b>)</b> </l
103b0 69 3e 0a 3c 6c 69 3e 20 3c 62 3e 6a 75 6c 69 61  i>.<li> <b>julia
103c0 6e 64 61 79 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65  nday(</b><i>time
103d0 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72  string, modifier
103e0 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c  , modifier, ...<
103f0 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 20 3c 2f 6c 69  /i><b>)</b> </li
10400 3e 0a 3c 6c 69 3e 20 3c 62 3e 73 74 72 66 74 69  >.<li> <b>strfti
10410 6d 65 28 3c 2f 62 3e 3c 69 3e 66 6f 72 6d 61 74  me(</b><i>format
10420 2c 20 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f  , timestring, mo
10430 64 69 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72  difier, modifier
10440 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62  , ...</i><b>)</b
10450 3e 20 3c 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c  > </li>.</ol>..<
10460 70 3e 0a 41 6c 6c 20 66 69 76 65 20 66 75 6e 63  p>.All five func
10470 74 69 6f 6e 73 20 74 61 6b 65 20 61 20 74 69 6d  tions take a tim
10480 65 20 73 74 72 69 6e 67 20 61 73 20 61 6e 20 61  e string as an a
10490 72 67 75 6d 65 6e 74 2e 20 54 68 65 20 74 69 6d  rgument. The tim
104a0 65 20 73 74 72 69 6e 67 0a 69 73 20 66 6f 6c 6c  e string.is foll
104b0 6f 77 65 64 20 62 79 20 7a 65 72 6f 20 6f 72 20  owed by zero or 
104c0 6d 6f 72 65 20 6d 6f 64 69 66 69 65 72 73 2e 20  more modifiers. 
104d0 0a 54 68 65 20 73 74 72 66 74 69 6d 65 28 29 20  .The strftime() 
104e0 66 75 6e 63 74 69 6f 6e 20 61 6c 73 6f 20 74 61  function also ta
104f0 6b 65 73 20 61 20 66 6f 72 6d 61 74 20 73 74 72  kes a format str
10500 69 6e 67 20 61 73 20 69 74 73 20 66 69 72 73 74  ing as its first
10510 20 61 72 67 75 6d 65 6e 74 2e 0a 3c 2f 70 3e 0a   argument..</p>.
10520 0a 3c 70 3e 0a 54 68 65 20 64 61 74 65 28 29 20  .<p>.The date() 
10530 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
10540 20 74 68 65 20 64 61 74 65 20 69 6e 20 74 68 69   the date in thi
10550 73 20 66 6f 72 6d 61 74 3a 20 59 59 59 59 2d 4d  s format: YYYY-M
10560 4d 2d 44 44 2e 20 0a 54 68 65 20 74 69 6d 65 28  M-DD. .The time(
10570 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
10580 6e 73 20 74 68 65 20 74 69 6d 65 20 61 73 20 48  ns the time as H
10590 48 3a 4d 4d 3a 53 53 2e 20 0a 54 68 65 20 64 61  H:MM:SS. .The da
105a0 74 65 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f  tetime() functio
105b0 6e 20 72 65 74 75 72 6e 73 20 22 59 59 59 59 2d  n returns "YYYY-
105c0 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 22 2e  MM-DD HH:MM:SS".
105d0 20 0a 54 68 65 20 6a 75 6c 69 61 6e 64 61 79 28   .The julianday(
105e0 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
105f0 6e 73 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d  ns the .<a href=
10600 22 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70  "http://en.wikip
10610 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 4a 75  edia.org/wiki/Ju
10620 6c 69 61 6e 5f 64 61 79 22 3e 4a 75 6c 69 61 6e  lian_day">Julian
10630 20 64 61 79 3c 2f 61 3e 20 2d 20 0a 6e 75 6d 62   day</a> - .numb
10640 65 72 20 6f 66 20 64 61 79 73 20 73 69 6e 63 65  er of days since
10650 20 6e 6f 6f 6e 20 69 6e 20 47 72 65 65 6e 77 69   noon in Greenwi
10660 63 68 20 6f 6e 20 4e 6f 76 65 6d 62 65 72 20 32  ch on November 2
10670 34 2c 20 34 37 31 34 20 42 2e 43 2e 20 0a 28 3c  4, 4714 B.C. .(<
10680 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 65  a href="http://e
10690 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f  n.wikipedia.org/
106a0 77 69 6b 69 2f 50 72 6f 6c 65 70 74 69 63 5f 47  wiki/Proleptic_G
106b0 72 65 67 6f 72 69 61 6e 5f 63 61 6c 65 6e 64 61  regorian_calenda
106c0 72 22 3e 0a 50 72 6f 6c 65 70 74 69 63 20 47 72  r">.Proleptic Gr
106d0 65 67 6f 72 69 61 6e 20 63 61 6c 65 6e 64 61 72  egorian calendar
106e0 3c 2f 61 3e 29 2e 20 0a 54 68 65 20 73 74 72 66  </a>). .The strf
106f0 74 69 6d 65 28 29 20 72 6f 75 74 69 6e 65 20 72  time() routine r
10700 65 74 75 72 6e 73 20 74 68 65 20 64 61 74 65 20  eturns the date 
10710 66 6f 72 6d 61 74 74 65 64 20 61 63 63 6f 72 64  formatted accord
10720 69 6e 67 20 74 6f 20 0a 74 68 65 20 66 6f 72 6d  ing to .the form
10730 61 74 20 73 74 72 69 6e 67 20 73 70 65 63 69 66  at string specif
10740 69 65 64 20 61 73 20 74 68 65 20 66 69 72 73 74  ied as the first
10750 20 61 72 67 75 6d 65 6e 74 2e 0a 54 68 65 20 66   argument..The f
10760 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 73 75 70  ormat string sup
10770 70 6f 72 74 73 20 74 68 65 20 6d 6f 73 74 20 63  ports the most c
10780 6f 6d 6d 6f 6e 20 73 75 62 73 74 69 74 75 74 69  ommon substituti
10790 6f 6e 73 20 66 6f 75 6e 64 20 69 6e 20 74 68 65  ons found in the
107a0 20 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a   .<a href="http:
107b0 2f 2f 6f 70 65 6e 67 72 6f 75 70 2e 6f 72 67 2f  //opengroup.org/
107c0 6f 6e 6c 69 6e 65 70 75 62 73 2f 30 30 37 39 30  onlinepubs/00790
107d0 38 37 39 39 2f 78 73 68 2f 73 74 72 66 74 69 6d  8799/xsh/strftim
107e0 65 2e 68 74 6d 6c 22 3e 0a 73 74 72 66 74 69 6d  e.html">.strftim
107f0 65 28 29 20 66 75 6e 63 74 69 6f 6e 3c 2f 61 3e  e() function</a>
10800 20 66 72 6f 6d 20 0a 74 68 65 20 73 74 61 6e 64   from .the stand
10810 61 72 64 20 43 20 6c 69 62 72 61 72 79 20 70 6c  ard C library pl
10820 75 73 20 74 77 6f 20 6e 65 77 20 73 75 62 73 74  us two new subst
10830 69 74 75 74 69 6f 6e 73 2c 20 25 66 20 61 6e 64  itutions, %f and
10840 20 25 4a 2e 0a 54 68 65 20 66 6f 6c 6c 6f 77 69   %J..The followi
10850 6e 67 20 69 73 20 61 20 63 6f 6d 70 6c 65 74 65  ng is a complete
10860 20 6c 69 73 74 20 6f 66 20 76 61 6c 69 64 20 73   list of valid s
10870 74 72 66 74 69 6d 65 28 29 20 73 75 62 73 74 69  trftime() substi
10880 74 75 74 69 6f 6e 73 3a 0a 3c 2f 70 3e 0a 0a 3c  tutions:.</p>..<
10890 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62  blockquote>.<tab
108a0 6c 65 20 62 6f 72 64 65 72 3d 22 30 22 20 63 65  le border="0" ce
108b0 6c 6c 70 61 64 64 69 6e 67 3d 22 30 22 20 63 65  llpadding="0" ce
108c0 6c 6c 73 70 61 63 69 6e 67 3d 22 30 22 3e 0a 3c  llspacing="0">.<
108d0 74 72 3e 3c 74 64 3e 3c 74 64 20 77 69 64 74 68  tr><td><td width
108e0 3d 22 31 30 22 3e 3c 74 64 3e 3c 2f 74 72 3e 0a  ="10"><td></tr>.
108f0 0a 3c 74 72 3e 3c 74 64 3e 20 25 64 20 3c 74 64  .<tr><td> %d <td
10900 3e 3c 74 64 3e 20 64 61 79 20 6f 66 20 6d 6f 6e  ><td> day of mon
10910 74 68 3a 20 30 30 0a 3c 74 72 3e 3c 74 64 3e 20  th: 00.<tr><td> 
10920 25 66 20 3c 74 64 3e 3c 74 64 3e 20 66 72 61 63  %f <td><td> frac
10930 74 69 6f 6e 61 6c 20 73 65 63 6f 6e 64 73 3a 20  tional seconds: 
10940 53 53 2e 53 53 53 0a 3c 74 72 3e 3c 74 64 3e 20  SS.SSS.<tr><td> 
10950 25 48 20 3c 74 64 3e 3c 74 64 3e 20 68 6f 75 72  %H <td><td> hour
10960 3a 20 30 30 2d 32 34 20 0a 3c 74 72 3e 3c 74 64  : 00-24 .<tr><td
10970 3e 20 25 6a 20 3c 74 64 3e 3c 74 64 3e 20 64 61  > %j <td><td> da
10980 79 20 6f 66 20 79 65 61 72 3a 20 30 30 31 2d 33  y of year: 001-3
10990 36 36 0a 3c 74 72 3e 3c 74 64 3e 20 25 4a 20 3c  66.<tr><td> %J <
109a0 74 64 3e 3c 74 64 3e 20 4a 75 6c 69 61 6e 20 64  td><td> Julian d
109b0 61 79 20 6e 75 6d 62 65 72 0a 3c 74 72 3e 3c 74  ay number.<tr><t
109c0 64 3e 20 25 6d 20 3c 74 64 3e 3c 74 64 3e 20 6d  d> %m <td><td> m
109d0 6f 6e 74 68 3a 20 30 31 2d 31 32 0a 3c 74 72 3e  onth: 01-12.<tr>
109e0 3c 74 64 3e 20 25 4d 20 3c 74 64 3e 3c 74 64 3e  <td> %M <td><td>
109f0 20 6d 69 6e 75 74 65 3a 20 30 30 2d 35 39 0a 3c   minute: 00-59.<
10a00 74 72 3e 3c 74 64 3e 20 25 73 20 3c 74 64 3e 3c  tr><td> %s <td><
10a10 74 64 3e 20 73 65 63 6f 6e 64 73 20 73 69 6e 63  td> seconds sinc
10a20 65 20 31 39 37 30 2d 30 31 2d 30 31 0a 3c 74 72  e 1970-01-01.<tr
10a30 3e 3c 74 64 3e 20 25 53 20 3c 74 64 3e 3c 74 64  ><td> %S <td><td
10a40 3e 20 73 65 63 6f 6e 64 73 3a 20 30 30 2d 35 39  > seconds: 00-59
10a50 0a 3c 74 72 3e 3c 74 64 3e 20 25 77 20 3c 74 64  .<tr><td> %w <td
10a60 3e 3c 74 64 3e 20 64 61 79 20 6f 66 20 77 65 65  ><td> day of wee
10a70 6b 20 30 2d 36 20 77 69 74 68 20 73 75 6e 64 61  k 0-6 with sunda
10a80 79 3d 3d 30 0a 3c 74 72 3e 3c 74 64 3e 20 25 57  y==0.<tr><td> %W
10a90 20 3c 74 64 3e 3c 74 64 3e 20 77 65 65 6b 20 6f   <td><td> week o
10aa0 66 20 79 65 61 72 3a 20 30 30 2d 35 33 0a 3c 74  f year: 00-53.<t
10ab0 72 3e 3c 74 64 3e 20 25 59 20 3c 74 64 3e 3c 74  r><td> %Y <td><t
10ac0 64 3e 20 79 65 61 72 3a 20 30 30 30 30 2d 39 39  d> year: 0000-99
10ad0 39 39 0a 3c 74 72 3e 3c 74 64 3e 20 25 25 20 3c  99.<tr><td> %% <
10ae0 74 64 3e 3c 74 64 3e 20 25 0a 3c 2f 74 61 62 6c  td><td> %.</tabl
10af0 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  e>.</blockquote>
10b00 0a 0a 3c 70 3e 0a 4e 6f 74 69 63 65 20 74 68 61  ..<p>.Notice tha
10b10 74 20 61 6c 6c 20 6f 74 68 65 72 20 64 61 74 65  t all other date
10b20 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69   and time functi
10b30 6f 6e 73 20 63 61 6e 20 62 65 20 65 78 70 72 65  ons can be expre
10b40 73 73 65 64 0a 69 6e 20 74 65 72 6d 73 20 6f 66  ssed.in terms of
10b50 20 73 74 72 66 74 69 6d 65 28 29 3a 0a 3c 2f 70   strftime():.</p
10b60 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >..<blockquote>.
10b70 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 22 30  <table border="0
10b80 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 30  " cellpadding="0
10b90 22 20 63 65 6c 6c 73 70 61 63 69 6e 67 3d 22 30  " cellspacing="0
10ba0 22 3e 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 46 75  ">.<tr><td><b>Fu
10bb0 6e 63 74 69 6f 6e 3c 2f 62 3e 3c 74 64 20 77 69  nction</b><td wi
10bc0 64 74 68 3d 22 33 30 22 3e 3c 74 64 3e 3c 62 3e  dth="30"><td><b>
10bd0 45 71 75 69 76 61 6c 65 6e 74 20 73 74 72 66 74  Equivalent strft
10be0 69 6d 65 28 29 3c 2f 62 3e 0a 3c 74 72 3e 3c 74  ime()</b>.<tr><t
10bf0 64 3e 20 20 20 64 61 74 65 28 2e 2e 2e 29 20 20  d>   date(...)  
10c00 20 20 20 20 3c 74 64 3e 3c 74 64 3e 20 20 73 74      <td><td>  st
10c10 72 66 74 69 6d 65 28 22 25 59 2d 25 6d 2d 25 64  rftime("%Y-%m-%d
10c20 22 2c 20 2e 2e 2e 29 0a 3c 74 72 3e 3c 74 64 3e  ", ...).<tr><td>
10c30 20 20 20 74 69 6d 65 28 2e 2e 2e 29 20 20 20 20     time(...)    
10c40 20 20 3c 74 64 3e 3c 74 64 3e 20 20 73 74 72 66    <td><td>  strf
10c50 74 69 6d 65 28 22 25 48 3a 25 4d 3a 25 53 22 2c  time("%H:%M:%S",
10c60 20 2e 2e 2e 29 0a 3c 74 72 3e 3c 74 64 3e 20 20   ...).<tr><td>  
10c70 20 64 61 74 65 74 69 6d 65 28 2e 2e 2e 29 20 20   datetime(...)  
10c80 3c 74 64 3e 3c 74 64 3e 20 20 73 74 72 66 74 69  <td><td>  strfti
10c90 6d 65 28 22 25 59 2d 25 6d 2d 25 64 20 25 48 3a  me("%Y-%m-%d %H:
10ca0 25 4d 3a 25 53 22 2c 20 2e 2e 2e 29 0a 3c 74 72  %M:%S", ...).<tr
10cb0 3e 3c 74 64 3e 20 20 20 6a 75 6c 69 61 6e 64 61  ><td>   julianda
10cc0 79 28 2e 2e 2e 29 20 3c 74 64 3e 3c 74 64 3e 20  y(...) <td><td> 
10cd0 20 73 74 72 66 74 69 6d 65 28 22 25 4a 22 2c 20   strftime("%J", 
10ce0 2e 2e 2e 29 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f  ...).</table>.</
10cf0 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
10d00 0a 54 68 65 20 6f 6e 6c 79 20 72 65 61 73 6f 6e  .The only reason
10d10 73 20 66 6f 72 20 70 72 6f 76 69 64 69 6e 67 20  s for providing 
10d20 66 75 6e 63 74 69 6f 6e 73 20 6f 74 68 65 72 20  functions other 
10d30 74 68 61 6e 20 73 74 72 66 74 69 6d 65 28 29 20  than strftime() 
10d40 69 73 0a 66 6f 72 20 63 6f 6e 76 65 6e 69 65 6e  is.for convenien
10d50 63 65 20 61 6e 64 20 66 6f 72 20 65 66 66 69 63  ce and for effic
10d60 69 65 6e 63 79 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33  iency..</p>..<h3
10d70 3e 54 69 6d 65 20 53 74 72 69 6e 67 73 3c 2f 68  >Time Strings</h
10d80 33 3e 0a 0a 3c 70 3e 41 20 74 69 6d 65 20 73 74  3>..<p>A time st
10d90 72 69 6e 67 20 63 61 6e 20 62 65 20 69 6e 20 61  ring can be in a
10da0 6e 79 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77  ny of the follow
10db0 69 6e 67 20 66 6f 72 6d 61 74 73 3a 3c 2f 70 3e  ing formats:</p>
10dc0 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20 3c 69 3e 59  ..<ol>.<li> <i>Y
10dd0 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 0a 3c 6c  YYY-MM-DD</i>.<l
10de0 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44  i> <i>YYYY-MM-DD
10df0 20 48 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20   HH:MM</i>.<li> 
10e00 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48  <i>YYYY-MM-DD HH
10e10 3a 4d 4d 3a 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20  :MM:SS</i>.<li> 
10e20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48  <i>YYYY-MM-DD HH
10e30 3a 4d 4d 3a 53 53 2e 53 53 53 3c 2f 69 3e 0a 3c  :MM:SS.SSS</i>.<
10e40 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44  li> <i>YYYY-MM-D
10e50 44 3c 2f 69 3e 3c 62 3e 54 3c 2f 62 3e 3c 69 3e  D</i><b>T</b><i>
10e60 48 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c  HH:MM</i>.<li> <
10e70 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e  i>YYYY-MM-DD</i>
10e80 3c 62 3e 54 3c 2f 62 3e 3c 69 3e 48 48 3a 4d 4d  <b>T</b><i>HH:MM
10e90 3a 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e  :SS</i>.<li> <i>
10ea0 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c 62  YYYY-MM-DD</i><b
10eb0 3e 54 3c 2f 62 3e 3c 69 3e 48 48 3a 4d 4d 3a 53  >T</b><i>HH:MM:S
10ec0 53 2e 53 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c  S.SSS</i>.<li> <
10ed0 69 3e 48 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e  i>HH:MM</i>.<li>
10ee0 20 3c 69 3e 48 48 3a 4d 4d 3a 53 53 3c 2f 69 3e   <i>HH:MM:SS</i>
10ef0 0a 3c 6c 69 3e 20 3c 69 3e 48 48 3a 4d 4d 3a 53  .<li> <i>HH:MM:S
10f00 53 2e 53 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c  S.SSS</i>.<li> <
10f10 62 3e 6e 6f 77 3c 2f 62 3e 0a 3c 6c 69 3e 20 3c  b>now</b>.<li> <
10f20 69 3e 44 44 44 44 44 44 44 44 44 44 3c 2f 69 3e  i>DDDDDDDDDD</i>
10f30 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 0a 49 6e 20 66  .</ol>..<p>.In f
10f40 6f 72 6d 61 74 73 20 35 20 74 68 72 6f 75 67 68  ormats 5 through
10f50 20 37 2c 20 74 68 65 20 22 54 22 20 69 73 20 61   7, the "T" is a
10f60 20 6c 69 74 65 72 61 6c 20 63 68 61 72 61 63 74   literal charact
10f70 65 72 20 73 65 70 61 72 61 74 69 6e 67 20 0a 74  er separating .t
10f80 68 65 20 64 61 74 65 20 61 6e 64 20 74 68 65 20  he date and the 
10f90 74 69 6d 65 2c 20 61 73 20 72 65 71 75 69 72 65  time, as require
10fa0 64 20 62 79 20 0a 3c 61 20 68 72 65 66 3d 22 68  d by .<a href="h
10fb0 74 74 70 3a 2f 2f 77 77 77 2e 77 33 63 2e 6f 72  ttp://www.w3c.or
10fc0 67 2f 54 52 2f 4e 4f 54 45 2d 64 61 74 65 74 69  g/TR/NOTE-dateti
10fd0 6d 65 22 3e 49 53 4f 2d 38 36 30 31 3c 2f 61 3e  me">ISO-8601</a>
10fe0 2e 20 0a 46 6f 72 6d 61 74 73 20 38 20 74 68 72  . .Formats 8 thr
10ff0 6f 75 67 68 20 31 30 20 74 68 61 74 20 73 70 65  ough 10 that spe
11000 63 69 66 79 20 6f 6e 6c 79 20 61 20 74 69 6d 65  cify only a time
11010 20 61 73 73 75 6d 65 20 61 20 64 61 74 65 20 6f   assume a date o
11020 66 20 0a 32 30 30 30 2d 30 31 2d 30 31 2e 20 46  f .2000-01-01. F
11030 6f 72 6d 61 74 20 31 31 2c 20 74 68 65 20 73 74  ormat 11, the st
11040 72 69 6e 67 20 27 6e 6f 77 27 2c 20 69 73 20 63  ring 'now', is c
11050 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 74 68  onverted into th
11060 65 20 0a 63 75 72 72 65 6e 74 20 64 61 74 65 20  e .current date 
11070 61 6e 64 20 74 69 6d 65 20 61 73 20 6f 62 74 61  and time as obta
11080 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 78 43  ined from the xC
11090 75 72 72 65 6e 74 54 69 6d 65 20 6d 65 74 68 6f  urrentTime metho
110a0 64 0a 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65  d.of the [sqlite
110b0 33 5f 76 66 73 5d 20 6f 62 6a 65 63 74 20 69 6e  3_vfs] object in
110c0 20 75 73 65 2e 0a 3c 61 20 68 72 65 66 3d 22 68   use..<a href="h
110d0 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64  ttp://en.wikiped
110e0 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 43 6f 6f 72  ia.org/wiki/Coor
110f0 64 69 6e 61 74 65 64 5f 55 6e 69 76 65 72 73 61  dinated_Universa
11100 6c 5f 54 69 6d 65 22 3e 0a 55 6e 69 76 65 72 73  l_Time">.Univers
11110 61 6c 20 43 6f 6f 72 64 69 6e 61 74 65 64 20 54  al Coordinated T
11120 69 6d 65 20 28 55 54 43 29 3c 2f 61 3e 20 69 73  ime (UTC)</a> is
11130 20 75 73 65 64 2e 20 0a 46 6f 72 6d 61 74 20 31   used. .Format 1
11140 32 20 69 73 20 74 68 65 20 0a 3c 61 20 68 72 65  2 is the .<a hre
11150 66 3d 22 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b  f="http://en.wik
11160 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f  ipedia.org/wiki/
11170 4a 75 6c 69 61 6e 5f 64 61 79 22 3e 4a 75 6c 69  Julian_day">Juli
11180 61 6e 20 64 61 79 20 6e 75 6d 62 65 72 3c 2f 61  an day number</a
11190 3e 0a 65 78 70 72 65 73 73 65 64 20 61 73 20 61  >.expressed as a
111a0 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
111b0 76 61 6c 75 65 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33  value..</p>..<h3
111c0 3e 4d 6f 64 69 66 69 65 72 73 3c 2f 68 33 3e 0a  >Modifiers</h3>.
111d0 0a 3c 70 3e 54 68 65 20 74 69 6d 65 20 73 74 72  .<p>The time str
111e0 69 6e 67 20 63 61 6e 20 62 65 20 66 6f 6c 6c 6f  ing can be follo
111f0 77 65 64 20 62 79 20 7a 65 72 6f 20 6f 72 20 6d  wed by zero or m
11200 6f 72 65 20 6d 6f 64 69 66 69 65 72 73 20 74 68  ore modifiers th
11210 61 74 20 0a 61 6c 74 65 72 20 74 68 65 20 64 61  at .alter the da
11220 74 65 20 61 6e 64 20 74 69 6d 65 20 73 74 72 69  te and time stri
11230 6e 67 2e 20 20 45 61 63 68 20 6d 6f 64 69 66 69  ng.  Each modifi
11240 65 72 0a 69 73 20 61 20 74 72 61 6e 73 66 6f 72  er.is a transfor
11250 6d 61 74 69 6f 6e 20 74 68 61 74 20 69 73 20 61  mation that is a
11260 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 74 69  pplied to the ti
11270 6d 65 20 73 74 72 69 6e 67 20 74 6f 20 69 74 73  me string to its
11280 20 6c 65 66 74 2e 0a 4d 6f 64 69 66 69 65 72 73   left..Modifiers
11290 20 61 72 65 20 61 70 70 6c 69 65 64 20 66 72 6f   are applied fro
112a0 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74 3b  m left to right;
112b0 20 6f 72 64 65 72 20 69 73 20 69 6d 70 6f 72 74   order is import
112c0 61 6e 74 2e 0a 54 68 65 20 61 76 61 69 6c 61 62  ant..The availab
112d0 6c 65 20 6d 6f 64 69 66 69 65 72 73 20 61 72 65  le modifiers are
112e0 20 61 73 20 66 6f 6c 6c 6f 77 73 2e 3c 2f 70 3e   as follows.</p>
112f0 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20 4e 4e 4e 20  ..<ol>.<li> NNN 
11300 64 61 79 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 68 6f  days.<li> NNN ho
11310 75 72 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 6d 69 6e  urs.<li> NNN min
11320 75 74 65 73 0a 3c 6c 69 3e 20 4e 4e 4e 2e 4e 4e  utes.<li> NNN.NN
11330 4e 4e 20 73 65 63 6f 6e 64 73 0a 3c 6c 69 3e 20  NN seconds.<li> 
11340 4e 4e 4e 20 6d 6f 6e 74 68 73 0a 3c 6c 69 3e 20  NNN months.<li> 
11350 4e 4e 4e 20 79 65 61 72 73 0a 3c 6c 69 3e 20 73  NNN years.<li> s
11360 74 61 72 74 20 6f 66 20 6d 6f 6e 74 68 0a 3c 6c  tart of month.<l
11370 69 3e 20 73 74 61 72 74 20 6f 66 20 79 65 61 72  i> start of year
11380 0a 3c 6c 69 3e 20 73 74 61 72 74 20 6f 66 20 64  .<li> start of d
11390 61 79 0a 3c 6c 69 3e 20 77 65 65 6b 64 61 79 20  ay.<li> weekday 
113a0 4e 0a 3c 6c 69 3e 20 75 6e 69 78 65 70 6f 63 68  N.<li> unixepoch
113b0 0a 3c 6c 69 3e 20 6c 6f 63 61 6c 74 69 6d 65 0a  .<li> localtime.
113c0 3c 6c 69 3e 20 75 74 63 20 0a 3c 2f 6f 6c 3e 0a  <li> utc .</ol>.
113d0 0a 3c 70 3e 54 68 65 20 66 69 72 73 74 20 73 69  .<p>The first si
113e0 78 20 6d 6f 64 69 66 69 65 72 73 20 28 31 20 74  x modifiers (1 t
113f0 68 72 6f 75 67 68 20 36 29 20 0a 73 69 6d 70 6c  hrough 6) .simpl
11400 79 20 61 64 64 20 74 68 65 20 73 70 65 63 69 66  y add the specif
11410 69 65 64 20 61 6d 6f 75 6e 74 20 6f 66 20 74 69  ied amount of ti
11420 6d 65 20 74 6f 20 74 68 65 20 64 61 74 65 20 0a  me to the date .
11430 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65  specified by the
11440 20 70 72 65 63 65 64 69 6e 67 20 74 69 6d 65 73   preceding times
11450 74 72 69 6e 67 2e 0a 4e 6f 74 65 20 74 68 61 74  tring..Note that
11460 20 22 26 70 6c 75 73 6d 6e 3b 4e 4e 4e 20 6d 6f   "&plusmn;NNN mo
11470 6e 74 68 73 22 20 77 6f 72 6b 73 20 62 79 20 72  nths" works by r
11480 65 6e 64 65 72 69 6e 67 20 74 68 65 20 6f 72 69  endering the ori
11490 67 69 6e 61 6c 20 64 61 74 65 20 69 6e 74 6f 0a  ginal date into.
114a0 74 68 65 20 59 59 59 59 2d 4d 4d 2d 44 44 20 66  the YYYY-MM-DD f
114b0 6f 72 6d 61 74 2c 20 61 64 64 69 6e 67 20 74 68  ormat, adding th
114c0 65 20 26 70 6c 75 73 6d 6e 3b 4e 4e 4e 20 74 6f  e &plusmn;NNN to
114d0 20 74 68 65 20 4d 4d 20 6d 6f 6e 74 68 20 76 61   the MM month va
114e0 6c 75 65 2c 20 74 68 65 6e 0a 6e 6f 72 6d 61 6c  lue, then.normal
114f0 69 7a 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74  izing the result
11500 2e 20 20 54 68 75 73 2c 20 66 6f 72 20 65 78 61  .  Thus, for exa
11510 6d 70 6c 65 2c 20 74 68 65 20 64 61 74 61 20 32  mple, the data 2
11520 30 30 31 2d 30 33 2d 33 31 20 6d 6f 64 69 66 69  001-03-31 modifi
11530 65 64 0a 62 79 20 27 2b 31 20 6d 6f 6e 74 68 27  ed.by '+1 month'
11540 20 69 6e 69 74 69 61 6c 6c 79 20 79 69 65 6c 64   initially yield
11550 73 20 32 30 30 31 2d 30 34 2d 33 31 2c 20 62 75  s 2001-04-31, bu
11560 74 20 41 70 72 69 6c 20 6f 6e 6c 79 20 68 61 73  t April only has
11570 20 33 30 20 64 61 79 73 0a 73 6f 20 74 68 65 20   30 days.so the 
11580 64 61 74 65 20 69 73 20 6e 6f 72 6d 61 6c 69 7a  date is normaliz
11590 65 64 20 74 6f 20 32 30 30 31 2d 30 35 2d 30 31  ed to 2001-05-01
115a0 2e 20 20 41 20 73 69 6d 69 6c 61 72 20 65 66 66  .  A similar eff
115b0 65 63 74 20 6f 63 63 75 72 73 20 77 68 65 6e 0a  ect occurs when.
115c0 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 61 74  the original dat
115d0 65 20 69 73 20 46 65 62 72 75 61 72 79 20 32 39  e is February 29
115e0 20 6f 66 20 61 20 6c 65 61 70 79 65 61 72 20 61   of a leapyear a
115f0 6e 64 20 74 68 65 20 6d 6f 64 69 66 69 65 72 20  nd the modifier 
11600 69 73 0a 26 70 6c 75 73 6d 6e 3b 4e 20 79 65 61  is.&plusmn;N yea
11610 72 73 20 77 68 65 72 65 20 4e 20 69 73 20 6e 6f  rs where N is no
11620 74 20 61 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20  t a multiple of 
11630 66 6f 75 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  four.</p>..<p>Th
11640 65 20 22 73 74 61 72 74 20 6f 66 22 20 6d 6f 64  e "start of" mod
11650 69 66 69 65 72 73 20 28 37 20 74 68 72 6f 75 67  ifiers (7 throug
11660 68 20 39 29 20 73 68 69 66 74 20 74 68 65 20 64  h 9) shift the d
11670 61 74 65 20 62 61 63 6b 77 61 72 64 73 20 0a 74  ate backwards .t
11680 6f 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20  o the beginning 
11690 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 6d  of the current m
116a0 6f 6e 74 68 2c 20 79 65 61 72 20 6f 72 20 64 61  onth, year or da
116b0 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 22  y.</p>..<p>The "
116c0 77 65 65 6b 64 61 79 22 20 6d 6f 64 69 66 69 65  weekday" modifie
116d0 72 20 61 64 76 61 6e 63 65 73 20 74 68 65 20 64  r advances the d
116e0 61 74 65 20 66 6f 72 77 61 72 64 20 74 6f 20 74  ate forward to t
116f0 68 65 20 6e 65 78 74 20 64 61 74 65 20 0a 77 68  he next date .wh
11700 65 72 65 20 74 68 65 20 77 65 65 6b 64 61 79 20  ere the weekday 
11710 6e 75 6d 62 65 72 20 69 73 20 4e 2e 20 53 75 6e  number is N. Sun
11720 64 61 79 20 69 73 20 30 2c 20 4d 6f 6e 64 61 79  day is 0, Monday
11730 20 69 73 20 31 2c 20 61 6e 64 20 73 6f 20 66 6f   is 1, and so fo
11740 72 74 68 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  rth.</p>..<p>The
11750 20 22 75 6e 69 78 65 70 6f 63 68 22 20 6d 6f 64   "unixepoch" mod
11760 69 66 69 65 72 20 28 31 31 29 20 6f 6e 6c 79 20  ifier (11) only 
11770 77 6f 72 6b 73 20 69 66 20 69 74 20 69 6d 6d 65  works if it imme
11780 64 69 61 74 65 6c 79 20 66 6f 6c 6c 6f 77 73 20  diately follows 
11790 0a 61 20 74 69 6d 65 73 74 72 69 6e 67 20 69 6e  .a timestring in
117a0 20 74 68 65 20 44 44 44 44 44 44 44 44 44 44 20   the DDDDDDDDDD 
117b0 66 6f 72 6d 61 74 2e 20 0a 54 68 69 73 20 6d 6f  format. .This mo
117c0 64 69 66 69 65 72 20 63 61 75 73 65 73 20 74 68  difier causes th
117d0 65 20 44 44 44 44 44 44 44 44 44 44 20 74 6f 20  e DDDDDDDDDD to 
117e0 62 65 20 69 6e 74 65 72 70 72 65 74 65 64 20 6e  be interpreted n
117f0 6f 74 20 0a 61 73 20 61 20 4a 75 6c 69 61 6e 20  ot .as a Julian 
11800 64 61 79 20 6e 75 6d 62 65 72 20 61 73 20 69 74  day number as it
11810 20 6e 6f 72 6d 61 6c 6c 79 20 77 6f 75 6c 64 20   normally would 
11820 62 65 2c 20 62 75 74 20 61 73 0a 3c 61 20 68 72  be, but as.<a hr
11830 65 66 3d 22 68 74 74 70 3a 2f 2f 65 6e 2e 77 69  ef="http://en.wi
11840 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69  kipedia.org/wiki
11850 2f 55 6e 69 78 5f 74 69 6d 65 22 3e 55 6e 69 78  /Unix_time">Unix
11860 20 54 69 6d 65 3c 2f 61 3e 20 2d 20 74 68 65 20   Time</a> - the 
11870 0a 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e  .number of secon
11880 64 73 20 73 69 6e 63 65 20 31 39 37 30 2e 20 20  ds since 1970.  
11890 49 66 20 74 68 65 20 22 75 6e 69 78 65 70 6f 63  If the "unixepoc
118a0 68 22 20 6d 6f 64 69 66 69 65 72 20 64 6f 65 73  h" modifier does
118b0 20 6e 6f 74 0a 66 6f 6c 6c 6f 77 20 61 20 74 69   not.follow a ti
118c0 6d 65 73 74 72 69 6e 67 20 6f 66 20 74 68 65 20  mestring of the 
118d0 66 6f 72 6d 20 44 44 44 44 44 44 44 44 44 44 20  form DDDDDDDDDD 
118e0 77 68 69 63 68 20 65 78 70 72 65 73 73 65 73 20  which expresses 
118f0 74 68 65 20 6e 75 6d 62 65 72 0a 6f 66 20 73 65  the number.of se
11900 63 6f 6e 64 73 20 73 69 6e 63 65 20 31 39 37 30  conds since 1970
11910 20 6f 72 20 69 66 20 6f 74 68 65 72 20 6d 6f 64   or if other mod
11920 69 66 69 65 72 73 0a 73 65 70 61 72 61 74 65 20  ifiers.separate 
11930 74 68 65 20 22 75 6e 69 78 65 70 6f 63 68 22 20  the "unixepoch" 
11940 6d 6f 64 69 66 69 65 72 20 66 72 6f 6d 20 70 72  modifier from pr
11950 69 6f 72 20 44 44 44 44 44 44 44 44 44 44 20 74  ior DDDDDDDDDD t
11960 68 65 6e 20 74 68 65 0a 62 65 68 61 76 69 6f 72  hen the.behavior
11970 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 3c 2f   is undefined.</
11980 70 3e 0a 0a 3c 70 3e 54 68 65 20 22 6c 6f 63 61  p>..<p>The "loca
11990 6c 74 69 6d 65 22 20 6d 6f 64 69 66 69 65 72 20  ltime" modifier 
119a0 28 31 32 29 20 61 73 73 75 6d 65 73 20 74 68 65  (12) assumes the
119b0 20 74 69 6d 65 20 73 74 72 69 6e 67 20 74 6f 20   time string to 
119c0 69 74 73 20 6c 65 66 74 20 69 73 20 69 6e 0a 55  its left is in.U
119d0 6e 69 76 65 72 73 61 6c 20 43 6f 6f 72 64 69 6e  niversal Coordin
119e0 61 74 65 64 20 54 69 6d 65 20 28 55 54 43 29 20  ated Time (UTC) 
119f0 61 6e 64 20 61 64 6a 75 73 74 73 20 74 68 65 20  and adjusts the 
11a00 74 69 6d 65 0a 73 74 72 69 6e 67 20 73 6f 20 74  time.string so t
11a10 68 61 74 20 69 74 20 64 69 73 70 6c 61 79 73 20  hat it displays 
11a20 6c 6f 63 61 6c 74 69 6d 65 2e 20 20 49 66 20 22  localtime.  If "
11a30 6c 6f 63 61 6c 74 69 6d 65 22 0a 66 6f 6c 6c 6f  localtime".follo
11a40 77 73 20 61 20 74 69 6d 65 20 74 68 61 74 20 69  ws a time that i
11a50 73 20 6e 6f 74 20 55 54 43 2c 20 74 68 65 6e 20  s not UTC, then 
11a60 74 68 65 20 62 65 68 61 76 69 6f 72 20 69 73 20  the behavior is 
11a70 75 6e 64 65 66 69 6e 65 64 2e 0a 54 68 65 20 22  undefined..The "
11a80 75 74 63 22 20 69 73 20 74 68 65 20 6f 70 70 6f  utc" is the oppo
11a90 73 69 74 65 20 6f 66 20 22 6c 6f 63 61 6c 74 69  site of "localti
11aa0 6d 65 22 2e 20 20 22 75 74 63 22 20 61 73 73 75  me".  "utc" assu
11ab0 6d 65 73 20 74 68 61 74 20 74 68 65 20 73 74 72  mes that the str
11ac0 69 6e 67 0a 74 6f 20 69 74 73 20 6c 65 66 74 20  ing.to its left 
11ad0 69 73 20 69 6e 20 74 68 65 20 6c 6f 63 61 6c 20  is in the local 
11ae0 74 69 6d 65 7a 6f 6e 65 20 61 6e 64 20 61 64 6a  timezone and adj
11af0 75 73 74 73 20 74 68 61 74 20 73 74 72 69 6e 67  usts that string
11b00 20 74 6f 20 62 65 20 69 6e 20 55 54 43 2e 0a 49   to be in UTC..I
11b10 66 20 74 68 65 20 70 72 69 6f 72 20 73 74 72 69  f the prior stri
11b20 6e 67 20 69 73 20 6e 6f 74 20 69 6e 20 6c 6f 63  ng is not in loc
11b30 61 6c 74 69 6d 65 2c 20 74 68 65 6e 20 74 68 65  altime, then the
11b40 20 72 65 73 75 6c 74 20 6f 66 20 22 75 74 63 22   result of "utc"
11b50 20 69 73 0a 75 6e 64 65 66 69 6e 65 64 2e 3c 2f   is.undefined.</
11b60 70 3e 0a 0a 3c 68 33 3e 45 78 61 6d 70 6c 65 73  p>..<h3>Examples
11b70 3c 2f 68 33 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74  </h3>..<p>Comput
11b80 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 61  e the current da
11b90 74 65 2e 3c 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  te.<p>..<blockqu
11ba0 6f 74 65 3e 53 45 4c 45 43 54 20 64 61 74 65 28  ote>SELECT date(
11bb0 27 6e 6f 77 27 29 3b 3c 2f 62 6c 6f 63 6b 71 75  'now');</blockqu
11bc0 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65  ote>..<p>Compute
11bd0 20 74 68 65 20 6c 61 73 74 20 64 61 79 20 6f 66   the last day of
11be0 20 74 68 65 20 63 75 72 72 65 6e 74 20 6d 6f 6e   the current mon
11bf0 74 68 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  th.</p>..<blockq
11c00 75 6f 74 65 3e 53 45 4c 45 43 54 20 64 61 74 65  uote>SELECT date
11c10 28 27 6e 6f 77 27 2c 27 73 74 61 72 74 20 6f 66  ('now','start of
11c20 20 6d 6f 6e 74 68 27 2c 27 2b 31 20 6d 6f 6e 74   month','+1 mont
11c30 68 27 2c 27 2d 31 20 64 61 79 27 29 3b 0a 3c 2f  h','-1 day');.</
11c40 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
11c50 43 6f 6d 70 75 74 65 20 74 68 65 20 64 61 74 65  Compute the date
11c60 20 61 6e 64 20 74 69 6d 65 20 67 69 76 65 6e 20   and time given 
11c70 61 20 75 6e 69 78 20 74 69 6d 65 73 74 61 6d 70  a unix timestamp
11c80 20 31 30 39 32 39 34 31 34 36 36 2e 3c 2f 70 3e   1092941466.</p>
11c90 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20  ..<blockquote>. 
11ca0 20 20 20 53 45 4c 45 43 54 20 64 61 74 65 74 69     SELECT dateti
11cb0 6d 65 28 31 30 39 32 39 34 31 34 36 36 2c 20 27  me(1092941466, '
11cc0 75 6e 69 78 65 70 6f 63 68 27 29 3b 0a 3c 2f 62  unixepoch');.</b
11cd0 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43  lockquote>..<p>C
11ce0 6f 6d 70 75 74 65 20 74 68 65 20 64 61 74 65 20  ompute the date 
11cf0 61 6e 64 20 74 69 6d 65 20 67 69 76 65 6e 20 61  and time given a
11d00 20 75 6e 69 78 20 74 69 6d 65 73 74 61 6d 70 20   unix timestamp 
11d10 31 30 39 32 39 34 31 34 36 36 2c 20 61 6e 64 20  1092941466, and 
11d20 0a 63 6f 6d 70 65 6e 73 61 74 65 20 66 6f 72 20  .compensate for 
11d30 79 6f 75 72 20 6c 6f 63 61 6c 20 74 69 6d 65 7a  your local timez
11d40 6f 6e 65 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b  one.</p>..<block
11d50 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20  quote>.  SELECT 
11d60 64 61 74 65 74 69 6d 65 28 31 30 39 32 39 34 31  datetime(1092941
11d70 34 36 36 2c 20 27 75 6e 69 78 65 70 6f 63 68 27  466, 'unixepoch'
11d80 2c 20 27 6c 6f 63 61 6c 74 69 6d 65 27 29 3b 0a  , 'localtime');.
11d90 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c  </blockquote>..<
11da0 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 63 75  p>Compute the cu
11db0 72 72 65 6e 74 20 75 6e 69 78 20 74 69 6d 65 73  rrent unix times
11dc0 74 61 6d 70 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  tamp.</p>..<bloc
11dd0 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54  kquote>.  SELECT
11de0 20 73 74 72 66 74 69 6d 65 28 27 25 73 27 2c 27   strftime('%s','
11df0 6e 6f 77 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75  now');.</blockqu
11e00 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65  ote>..<p>Compute
11e10 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 64   the number of d
11e20 61 79 73 20 73 69 6e 63 65 20 74 68 65 20 73 69  ays since the si
11e30 67 6e 69 6e 67 20 6f 66 20 74 68 65 20 55 53 20  gning of the US 
11e40 44 65 63 6c 61 72 61 74 69 6f 6e 0a 6f 66 20 49  Declaration.of I
11e50 6e 64 65 70 65 6e 64 65 6e 74 2e 3c 2f 70 3e 0a  ndependent.</p>.
11e60 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20  .<blockquote>.  
11e70 53 45 4c 45 43 54 20 6a 75 6c 69 61 6e 64 61 79  SELECT julianday
11e80 28 27 6e 6f 77 27 29 20 2d 20 6a 75 6c 69 61 6e  ('now') - julian
11e90 64 61 79 28 27 31 37 37 36 2d 30 37 2d 30 34 27  day('1776-07-04'
11ea0 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  );.</blockquote>
11eb0 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65  ..<p>Compute the
11ec0 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
11ed0 64 73 20 73 69 6e 63 65 20 61 20 70 61 72 74 69  ds since a parti
11ee0 63 75 6c 61 72 20 6d 6f 6d 65 6e 74 20 69 6e 20  cular moment in 
11ef0 32 30 30 34 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  2004:</p>..<bloc
11f00 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54  kquote>.  SELECT
11f10 20 73 74 72 66 74 69 6d 65 28 27 25 73 27 2c 27   strftime('%s','
11f20 6e 6f 77 27 29 20 2d 20 73 74 72 66 74 69 6d 65  now') - strftime
11f30 28 27 25 73 27 2c 27 32 30 30 34 2d 30 31 2d 30  ('%s','2004-01-0
11f40 31 20 30 32 3a 33 34 3a 35 36 27 29 3b 0a 3c 2f  1 02:34:56');.</
11f50 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
11f60 0a 43 6f 6d 70 75 74 65 20 74 68 65 20 64 61 74  .Compute the dat
11f70 65 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 54  e of the first T
11f80 75 65 73 64 61 79 20 69 6e 20 4f 63 74 6f 62 65  uesday in Octobe
11f90 72 0a 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  r.for the curren
11fa0 74 20 79 65 61 72 2e 0a 3c 2f 70 3e 0a 0a 3c 62  t year..</p>..<b
11fb0 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c  lockquote>.  SEL
11fc0 45 43 54 20 64 61 74 65 28 27 6e 6f 77 27 2c 27  ECT date('now','
11fd0 73 74 61 72 74 20 6f 66 20 79 65 61 72 27 2c 27  start of year','
11fe0 2b 39 20 6d 6f 6e 74 68 73 27 2c 27 77 65 65 6b  +9 months','week
11ff0 64 61 79 20 32 27 29 3b 0a 3c 2f 62 6c 6f 63 6b  day 2');.</block
12000 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75  quote>..<p>Compu
12010 74 65 20 74 68 65 20 74 69 6d 65 20 73 69 6e 63  te the time sinc
12020 65 20 74 68 65 20 75 6e 69 78 20 65 70 6f 63 68  e the unix epoch
12030 20 69 6e 20 73 65 63 6f 6e 64 73 20 0a 28 6c 69   in seconds .(li
12040 6b 65 20 73 74 72 66 74 69 6d 65 28 27 25 73 27  ke strftime('%s'
12050 2c 27 6e 6f 77 27 29 20 65 78 63 65 70 74 20 69  ,'now') except i
12060 6e 63 6c 75 64 65 73 20 66 72 61 63 74 69 6f 6e  ncludes fraction
12070 61 6c 20 70 61 72 74 29 3a 3c 2f 70 3e 0a 0a 3c  al part):</p>..<
12080 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45  blockquote>.  SE
12090 4c 45 43 54 20 28 6a 75 6c 69 61 6e 64 61 79 28  LECT (julianday(
120a0 27 6e 6f 77 27 29 20 2d 20 32 34 34 30 35 38 37  'now') - 2440587
120b0 2e 35 29 2a 38 36 34 30 30 2e 30 3b 0a 3c 2f 62  .5)*86400.0;.</b
120c0 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 68 33 3e  lockquote>..<h3>
120d0 43 61 76 65 61 74 73 20 41 6e 64 20 42 75 67 73  Caveats And Bugs
120e0 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f  </h3>..<p>The co
120f0 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 6c 6f 63  mputation of loc
12100 61 6c 20 74 69 6d 65 20 64 65 70 65 6e 64 73 20  al time depends 
12110 68 65 61 76 69 6c 79 20 6f 6e 20 74 68 65 20 77  heavily on the w
12120 68 69 6d 20 0a 6f 66 20 70 6f 6c 69 74 69 63 69  him .of politici
12130 61 6e 73 20 61 6e 64 20 69 73 20 74 68 75 73 20  ans and is thus 
12140 64 69 66 66 69 63 75 6c 74 20 74 6f 20 67 65 74  difficult to get
12150 20 63 6f 72 72 65 63 74 20 66 6f 72 20 0a 61 6c   correct for .al
12160 6c 20 6c 6f 63 61 6c 65 73 2e 20 49 6e 20 74 68  l locales. In th
12170 69 73 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  is implementatio
12180 6e 2c 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  n, the standard 
12190 43 20 6c 69 62 72 61 72 79 20 0a 66 75 6e 63 74  C library .funct
121a0 69 6f 6e 20 6c 6f 63 61 6c 74 69 6d 65 5f 72 28  ion localtime_r(
121b0 29 20 69 73 20 75 73 65 64 20 74 6f 20 61 73 73  ) is used to ass
121c0 69 73 74 20 69 6e 20 74 68 65 20 63 61 6c 63 75  ist in the calcu
121d0 6c 61 74 69 6f 6e 20 6f 66 20 0a 6c 6f 63 61 6c  lation of .local
121e0 20 74 69 6d 65 2e 20 20 54 68 65 20 0a 6c 6f 63   time.  The .loc
121f0 61 6c 74 69 6d 65 5f 72 28 29 20 43 20 66 75 6e  altime_r() C fun
12200 63 74 69 6f 6e 20 6e 6f 72 6d 61 6c 6c 79 20 6f  ction normally o
12210 6e 6c 79 20 77 6f 72 6b 73 20 66 6f 72 20 79 65  nly works for ye
12220 61 72 73 0a 62 65 74 77 65 65 6e 20 31 39 37 30  ars.between 1970
12230 20 61 6e 64 20 32 30 33 37 2e 20 46 6f 72 20 64   and 2037. For d
12240 61 74 65 73 20 6f 75 74 73 69 64 65 20 74 68 69  ates outside thi
12250 73 20 72 61 6e 67 65 2c 20 53 51 4c 69 74 65 20  s range, SQLite 
12260 0a 61 74 74 65 6d 70 74 73 20 74 6f 20 6d 61 70  .attempts to map
12270 20 74 68 65 20 79 65 61 72 20 69 6e 74 6f 20 61   the year into a
12280 6e 20 65 71 75 69 76 61 6c 65 6e 74 20 79 65 61  n equivalent yea
12290 72 20 77 69 74 68 69 6e 20 0a 74 68 69 73 20 72  r within .this r
122a0 61 6e 67 65 2c 20 64 6f 20 74 68 65 20 63 61 6c  ange, do the cal
122b0 63 75 6c 61 74 69 6f 6e 2c 20 74 68 65 6e 20 6d  culation, then m
122c0 61 70 20 74 68 65 20 79 65 61 72 20 62 61 63 6b  ap the year back
122d0 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 44 61 74 65 20  .</p>...<p>Date 
122e0 63 6f 6d 70 75 74 61 74 69 6f 6e 73 20 64 6f 20  computations do 
122f0 6e 6f 74 20 67 69 76 65 20 63 6f 72 72 65 63 74  not give correct
12300 20 72 65 73 75 6c 74 73 20 66 6f 72 20 64 61 74   results for dat
12310 65 73 20 0a 62 65 66 6f 72 65 20 4a 75 6c 69 61  es .before Julia
12320 6e 20 64 61 79 20 6e 75 6d 62 65 72 20 30 20 28  n day number 0 (
12330 2d 34 37 31 33 2d 31 31 2d 32 34 20 31 32 3a 30  -4713-11-24 12:0
12340 30 3a 30 30 29 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e  0:00).</p>..<p>N
12350 6f 6e 2d 56 69 73 74 61 20 57 69 6e 64 6f 77 73  on-Vista Windows
12360 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e 6c 79 20   platforms only 
12370 73 75 70 70 6f 72 74 20 6f 6e 65 20 73 65 74 20  support one set 
12380 6f 66 20 44 53 54 20 72 75 6c 65 73 2e 20 0a 56  of DST rules. .V
12390 69 73 74 61 20 6f 6e 6c 79 20 73 75 70 70 6f 72  ista only suppor
123a0 74 73 20 74 77 6f 2e 20 54 68 65 72 65 66 6f 72  ts two. Therefor
123b0 65 2c 20 6f 6e 20 74 68 65 73 65 20 70 6c 61 74  e, on these plat
123c0 66 6f 72 6d 73 2c 20 0a 68 69 73 74 6f 72 69 63  forms, .historic
123d0 61 6c 20 44 53 54 20 63 61 6c 63 75 6c 61 74 69  al DST calculati
123e0 6f 6e 73 20 77 69 6c 6c 20 62 65 20 69 6e 63 6f  ons will be inco
123f0 72 72 65 63 74 2e 20 0a 46 6f 72 20 65 78 61 6d  rrect. .For exam
12400 70 6c 65 2c 20 69 6e 20 74 68 65 20 55 53 2c 20  ple, in the US, 
12410 69 6e 20 32 30 30 37 20 74 68 65 20 44 53 54 20  in 2007 the DST 
12420 72 75 6c 65 73 20 63 68 61 6e 67 65 64 2e 20 0a  rules changed. .
12430 4e 6f 6e 2d 56 69 73 74 61 20 57 69 6e 64 6f 77  Non-Vista Window
12440 73 20 70 6c 61 74 66 6f 72 6d 73 20 61 70 70 6c  s platforms appl
12450 79 20 74 68 65 20 6e 65 77 20 32 30 30 37 20 44  y the new 2007 D
12460 53 54 20 72 75 6c 65 73 20 0a 74 6f 20 61 6c 6c  ST rules .to all
12470 20 70 72 65 76 69 6f 75 73 20 79 65 61 72 73 20   previous years 
12480 61 73 20 77 65 6c 6c 2e 20 56 69 73 74 61 20 64  as well. Vista d
12490 6f 65 73 20 73 6f 6d 65 77 68 61 74 20 62 65 74  oes somewhat bet
124a0 74 65 72 0a 67 65 74 74 69 6e 67 20 72 65 73 75  ter.getting resu
124b0 6c 74 73 20 63 6f 72 72 65 63 74 20 62 61 63 6b  lts correct back
124c0 20 74 6f 20 31 39 38 36 2c 20 77 68 65 6e 20 74   to 1986, when t
124d0 68 65 20 72 75 6c 65 73 20 77 65 72 65 20 61 6c  he rules were al
124e0 73 6f 20 63 68 61 6e 67 65 64 2e 3c 2f 70 3e 0a  so changed.</p>.
124f0 0a 3c 70 3e 41 6c 6c 20 69 6e 74 65 72 6e 61 6c  .<p>All internal
12500 20 63 6f 6d 70 75 74 61 74 69 6f 6e 73 20 61 73   computations as
12510 73 75 6d 65 20 74 68 65 20 0a 3c 61 20 68 72 65  sume the .<a hre
12520 66 3d 22 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b  f="http://en.wik
12530 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f  ipedia.org/wiki/
12540 47 72 65 67 6f 72 69 61 6e 5f 63 61 6c 65 6e 64  Gregorian_calend
12550 61 72 22 3e 0a 47 72 65 67 6f 72 69 61 6e 20 63  ar">.Gregorian c
12560 61 6c 65 6e 64 61 72 3c 2f 61 3e 20 73 79 73 74  alendar</a> syst
12570 65 6d 2e 20 20 49 74 20 69 73 20 61 6c 73 6f 20  em.  It is also 
12580 61 73 73 75 6d 65 64 20 74 68 61 74 20 65 76 65  assumed that eve
12590 72 79 0a 64 61 79 20 69 73 20 65 78 61 63 74 6c  ry.day is exactl
125a0 79 20 38 36 34 30 30 20 73 65 63 6f 6e 64 73 20  y 86400 seconds 
125b0 69 6e 20 64 75 72 61 74 69 6f 6e 2e 3c 2f 70 3e  in duration.</p>
125c0 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
125d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
125e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
125f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12600 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12610 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
12620 41 67 67 72 65 67 61 74 65 20 46 75 6e 63 74 69  Aggregate Functi
12630 6f 6e 73 7d 20 61 67 67 66 75 6e 63 20 7b 61 67  ons} aggfunc {ag
12640 67 66 75 6e 63 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  gfunc}.</tcl>..<
12650 70 3e 0a 54 68 65 20 61 67 67 72 65 67 61 74 65  p>.The aggregate
12660 20 66 75 6e 63 74 69 6f 6e 73 20 73 68 6f 77 6e   functions shown
12670 20 62 65 6c 6f 77 20 61 72 65 20 61 76 61 69 6c   below are avail
12680 61 62 6c 65 20 62 79 20 64 65 66 61 75 6c 74 2e  able by default.
12690 20 20 41 64 64 69 74 69 6f 6e 61 6c 0a 61 67 67    Additional.agg
126a0 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
126b0 20 77 72 69 74 74 65 6e 20 69 6e 20 43 20 6d 61   written in C ma
126c0 79 20 62 65 20 61 64 64 65 64 20 75 73 69 6e 67  y be added using
126d0 20 74 68 65 20 0a 5b 73 71 6c 69 74 65 33 5f 63   the .[sqlite3_c
126e0 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29  reate_function()
126f0 5d 3c 2f 61 3e 0a 41 50 49 2e 3c 2f 70 3e 0a 0a  ]</a>.API.</p>..
12700 3c 70 3e 0a 49 6e 20 61 6e 79 20 61 67 67 72 65  <p>.In any aggre
12710 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 74 68  gate function th
12720 61 74 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c  at takes a singl
12730 65 20 61 72 67 75 6d 65 6e 74 2c 20 74 68 61 74  e argument, that
12740 20 61 72 67 75 6d 65 6e 74 0a 63 61 6e 20 62 65   argument.can be
12750 20 70 72 65 63 65 65 64 65 64 20 62 79 20 74 68   preceeded by th
12760 65 20 6b 65 79 77 6f 72 64 20 44 49 53 54 49 4e  e keyword DISTIN
12770 43 54 2e 20 20 49 6e 20 73 75 63 68 20 63 61 73  CT.  In such cas
12780 65 73 2c 20 64 75 70 6c 69 63 61 74 65 0a 65 6c  es, duplicate.el
12790 65 6d 65 6e 74 73 20 61 72 65 20 66 69 6c 74 65  ements are filte
127a0 72 65 64 20 62 65 66 6f 72 65 20 62 65 69 6e 67  red before being
127b0 20 70 61 73 73 65 64 20 69 6e 74 6f 20 74 68 65   passed into the
127c0 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
127d0 69 6f 6e 2e 0a 46 6f 72 20 65 78 61 6d 70 6c 65  ion..For example
127e0 2c 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 22  , the function "
127f0 63 6f 75 6e 74 28 64 69 73 74 69 6e 63 74 20 58  count(distinct X
12800 29 22 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 74  )" will return t
12810 68 65 20 6e 75 6d 62 65 72 0a 6f 66 20 64 69 73  he number.of dis
12820 74 69 6e 63 74 20 76 61 6c 75 65 73 20 6f 66 20  tinct values of 
12830 63 6f 6c 75 6d 6e 20 58 20 69 6e 73 74 65 61 64  column X instead
12840 20 6f 66 20 74 68 65 20 74 6f 74 61 6c 20 6e 75   of the total nu
12850 6d 62 65 72 20 6f 66 20 6e 6f 6e 2d 6e 75 6c 6c  mber of non-null
12860 0a 76 61 6c 75 65 73 20 69 6e 20 63 6f 6c 75 6d  .values in colum
12870 6e 20 58 2e 0a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c  n X..</p>..<tabl
12880 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70  e border=0 cellp
12890 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 63 6c 3e  adding=10>.<tcl>
128a0 0a 66 75 6e 63 64 65 66 20 7b 61 76 67 28 58 29  .funcdef {avg(X)
128b0 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20  } {} {.  Return 
128c0 74 68 65 20 61 76 65 72 61 67 65 20 76 61 6c 75  the average valu
128d0 65 20 6f 66 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c  e of all non-NUL
128e0 4c 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 74 68 69  L <i>X</i> withi
128f0 6e 20 61 0a 20 20 67 72 6f 75 70 2e 20 20 53 74  n a.  group.  St
12900 72 69 6e 67 20 61 6e 64 20 42 4c 4f 42 20 76 61  ring and BLOB va
12910 6c 75 65 73 20 74 68 61 74 20 64 6f 20 6e 6f 74  lues that do not
12920 20 6c 6f 6f 6b 20 6c 69 6b 65 20 6e 75 6d 62 65   look like numbe
12930 72 73 20 61 72 65 0a 20 20 69 6e 74 65 72 70 72  rs are.  interpr
12940 65 74 65 64 20 61 73 20 30 2e 0a 20 20 54 68 65  eted as 0..  The
12950 20 72 65 73 75 6c 74 20 6f 66 20 61 76 67 28 29   result of avg()
12960 20 69 73 20 61 6c 77 61 79 73 20 61 20 66 6c 6f   is always a flo
12970 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75  ating point valu
12980 65 20 61 73 20 6c 6f 6e 67 20 61 73 0a 20 20 61  e as long as.  a
12990 74 20 74 68 65 72 65 20 69 73 20 61 74 20 6c 65  t there is at le
129a0 61 73 74 20 6f 6e 65 20 6e 6f 6e 2d 4e 55 4c 4c  ast one non-NULL
129b0 20 69 6e 70 75 74 20 65 76 65 6e 20 69 66 20 61   input even if a
129c0 6c 6c 0a 20 20 69 6e 70 75 74 73 20 61 72 65 20  ll.  inputs are 
129d0 69 6e 74 65 67 65 72 73 2e 20 20 54 68 65 20 72  integers.  The r
129e0 65 73 75 6c 74 20 6f 66 20 61 76 67 28 29 20 4e  esult of avg() N
129f0 55 4c 4c 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20  ULL if and only 
12a00 69 66 0a 20 20 74 68 65 72 65 20 61 72 65 20 6e  if.  there are n
12a10 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74  o non-NULL input
12a20 73 2e 20 20 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  s.  .}..funcdef 
12a30 7b 63 6f 75 6e 74 28 58 29 20 63 6f 75 6e 74 28  {count(X) count(
12a40 2a 29 7d 20 7b 7d 20 7b 0a 20 20 54 68 65 20 66  *)} {} {.  The f
12a50 69 72 73 74 20 66 6f 72 6d 20 72 65 74 75 72 6e  irst form return
12a60 20 61 20 63 6f 75 6e 74 20 6f 66 20 74 68 65 20   a count of the 
12a70 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 0a  number of times.
12a80 20 20 74 68 61 74 20 3c 69 3e 58 3c 2f 69 3e 20    that <i>X</i> 
12a90 69 73 20 6e 6f 74 20 4e 55 4c 4c 20 69 6e 20 61  is not NULL in a
12aa0 20 67 72 6f 75 70 2e 20 20 54 68 65 20 73 65 63   group.  The sec
12ab0 6f 6e 64 20 66 6f 72 6d 20 28 77 69 74 68 20 6e  ond form (with n
12ac0 6f 20 61 72 67 75 6d 65 6e 74 29 0a 20 20 72 65  o argument).  re
12ad0 74 75 72 6e 73 20 74 68 65 20 74 6f 74 61 6c 20  turns the total 
12ae0 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 69  number of rows i
12af0 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 7d 0a 0a  n the group..}..
12b00 66 75 6e 63 64 65 66 20 7b 67 72 6f 75 70 5f 63  funcdef {group_c
12b10 6f 6e 63 61 74 28 58 29 20 67 72 6f 75 70 5f 63  oncat(X) group_c
12b20 6f 6e 63 61 74 28 58 2c 59 29 7d 20 7b 7d 20 7b  oncat(X,Y)} {} {
12b30 0a 20 20 54 68 65 20 72 65 73 75 6c 74 20 69 73  .  The result is
12b40 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 20   a string which 
12b50 69 73 20 74 68 65 20 63 6f 6e 63 61 74 65 6e 61  is the concatena
12b60 74 69 6f 6e 20 6f 66 0a 20 20 61 6c 6c 20 6e 6f  tion of.  all no
12b70 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 73 20 6f 66  n-NULL values of
12b80 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 49 66 20 70   <i>X</i>.  If p
12b90 61 72 61 6d 65 74 65 72 20 3c 69 3e 59 3c 2f 69  arameter <i>Y</i
12ba0 3e 20 69 73 20 74 68 65 20 73 65 70 61 72 61 74  > is the separat
12bb0 6f 72 0a 20 20 62 65 74 77 65 65 6e 20 69 6e 73  or.  between ins
12bc0 74 61 6e 63 65 73 20 6f 66 20 3c 69 3e 58 3c 2f  tances of <i>X</
12bd0 69 3e 2e 20 20 41 20 63 6f 6d 6d 61 20 28 22 2c  i>.  A comma (",
12be0 22 29 20 69 73 20 75 73 65 64 20 61 73 20 74 68  ") is used as th
12bf0 65 20 73 65 70 61 72 61 74 6f 72 0a 20 20 69 66  e separator.  if
12c00 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 6f 6d 69   <i>Y</i> is omi
12c10 74 74 65 64 2e 20 20 54 68 65 20 6f 72 64 65 72  tted.  The order
12c20 20 6f 66 20 74 68 65 20 63 6f 6e 63 61 74 65 6e   of the concaten
12c30 61 74 65 64 20 65 6c 65 6d 65 6e 74 73 20 69 73  ated elements is
12c40 0a 20 20 61 72 62 69 74 72 61 72 79 2e 0a 7d 0a  .  arbitrary..}.
12c50 0a 66 75 6e 63 64 65 66 20 7b 6d 61 78 28 58 29  .funcdef {max(X)
12c60 7d 20 7b 6d 61 78 41 67 67 46 75 6e 63 20 61 67  } {maxAggFunc ag
12c70 67 5f 6d 61 78 7d 20 7b 0a 20 20 52 65 74 75 72  g_max} {.  Retur
12c80 6e 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61  n the maximum va
12c90 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65  lue of all value
12ca0 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a  s in the group..
12cb0 20 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 76 61    The maximum va
12cc0 6c 75 65 20 69 73 20 74 68 65 20 76 61 6c 75 65  lue is the value
12cd0 20 74 68 61 74 20 77 6f 75 6c 64 20 62 65 20 72   that would be r
12ce0 65 74 75 72 6e 65 64 20 6c 61 73 74 20 69 6e 20  eturned last in 
12cf0 61 6e 0a 20 20 4f 52 44 45 52 20 42 59 20 6f 6e  an.  ORDER BY on
12d00 20 74 68 65 20 73 61 6d 65 20 63 6f 6c 75 6d 6e   the same column
12d10 2e 20 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72  .  NULL is retur
12d20 6e 65 64 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20  ned if and only 
12d30 69 66 20 74 68 65 72 65 20 61 72 65 0a 20 20 6e  if there are.  n
12d40 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65  o non-NULL value
12d50 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a  s in the group..
12d60 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6d 69 6e 28  }..funcdef {min(
12d70 58 29 7d 20 7b 6d 69 6e 41 67 67 46 75 6e 63 20  X)} {minAggFunc 
12d80 61 67 67 5f 6d 69 6e 7d 20 7b 0a 20 20 52 65 74  agg_min} {.  Ret
12d90 75 72 6e 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20  urn the minimum 
12da0 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 20 6f  non-NULL value o
12db0 66 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20  f all values in 
12dc0 74 68 65 20 67 72 6f 75 70 2e 0a 20 20 54 68 65  the group..  The
12dd0 20 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 20 69   minimum value i
12de0 73 20 74 68 65 20 66 69 72 73 74 20 6e 6f 6e 2d  s the first non-
12df0 4e 55 4c 4c 20 76 61 6c 75 65 20 74 68 61 74 20  NULL value that 
12e00 77 6f 75 6c 64 20 61 70 70 65 61 72 0a 20 20 69  would appear.  i
12e10 6e 20 61 6e 20 4f 52 44 45 52 20 42 59 20 6f 66  n an ORDER BY of
12e20 20 74 68 65 20 63 6f 6c 75 6d 6e 2e 0a 20 20 4e   the column..  N
12e30 55 4c 4c 20 69 73 20 6f 6e 6c 79 20 72 65 74 75  ULL is only retu
12e40 72 6e 65 64 20 69 66 20 61 6e 64 20 6f 6e 6c 79  rned if and only
12e50 20 69 66 20 74 68 65 72 65 20 61 72 65 20 6e 6f   if there are no
12e60 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 73   non-NULL values
12e70 20 69 6e 20 74 68 65 20 0a 20 20 67 72 6f 75 70   in the .  group
12e80 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73 75  ..}..funcdef {su
12e90 6d 28 58 29 20 74 6f 74 61 6c 28 58 29 7d 20 7b  m(X) total(X)} {
12ea0 73 75 6d 46 75 6e 63 20 73 75 6d 20 74 6f 74 61  sumFunc sum tota
12eb0 6c 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68  l} {.  Return th
12ec0 65 20 6e 75 6d 65 72 69 63 20 73 75 6d 20 6f 66  e numeric sum of
12ed0 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61   all non-NULL va
12ee0 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75  lues in the grou
12ef0 70 2e 0a 20 20 49 66 20 74 68 65 72 65 20 61 72  p..  If there ar
12f00 65 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e  e no non-NULL in
12f10 70 75 74 20 72 6f 77 73 20 74 68 65 6e 20 73 75  put rows then su
12f20 6d 28 29 20 72 65 74 75 72 6e 73 0a 20 20 4e 55  m() returns.  NU
12f30 4c 4c 20 62 75 74 20 74 6f 74 61 6c 28 29 20 72  LL but total() r
12f40 65 74 75 72 6e 73 20 30 2e 30 2e 0a 20 20 4e 55  eturns 0.0..  NU
12f50 4c 4c 20 69 73 20 6e 6f 74 20 6e 6f 72 6d 61 6c  LL is not normal
12f60 6c 79 20 61 20 68 65 6c 70 66 75 6c 20 72 65 73  ly a helpful res
12f70 75 6c 74 20 66 6f 72 20 74 68 65 20 73 75 6d 20  ult for the sum 
12f80 6f 66 20 6e 6f 20 72 6f 77 73 0a 20 20 62 75 74  of no rows.  but
12f90 20 74 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72   the SQL standar
12fa0 64 20 72 65 71 75 69 72 65 73 20 69 74 20 61 6e  d requires it an
12fb0 64 20 6d 6f 73 74 20 6f 74 68 65 72 0a 20 20 53  d most other.  S
12fc0 51 4c 20 64 61 74 61 62 61 73 65 20 65 6e 67 69  QL database engi
12fd0 6e 65 73 20 69 6d 70 6c 65 6d 65 6e 74 20 73 75  nes implement su
12fe0 6d 28 29 20 74 68 61 74 20 77 61 79 20 73 6f 20  m() that way so 
12ff0 53 51 4c 69 74 65 20 64 6f 65 73 20 69 74 20 69  SQLite does it i
13000 6e 20 74 68 65 0a 20 20 73 61 6d 65 20 77 61 79  n the.  same way
13010 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 62 65 20   in order to be 
13020 63 6f 6d 70 61 74 69 62 6c 65 2e 20 20 20 54 68  compatible.   Th
13030 65 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20 74  e non-standard t
13040 6f 74 61 6c 28 29 20 66 75 6e 63 74 69 6f 6e 0a  otal() function.
13050 20 20 69 73 20 70 72 6f 76 69 64 65 64 20 61 73    is provided as
13060 20 61 20 63 6f 6e 76 65 6e 69 65 6e 74 20 77 61   a convenient wa
13070 79 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64  y to work around
13080 20 74 68 69 73 20 64 65 73 69 67 6e 20 70 72 6f   this design pro
13090 62 6c 65 6d 0a 20 20 69 6e 20 74 68 65 20 53 51  blem.  in the SQ
130a0 4c 20 6c 61 6e 67 75 61 67 65 2e 3c 2f 70 3e 0a  L language.</p>.
130b0 0a 20 20 3c 70 3e 54 68 65 20 72 65 73 75 6c 74  .  <p>The result
130c0 20 6f 66 20 74 6f 74 61 6c 28 29 20 69 73 20 61   of total() is a
130d0 6c 77 61 79 73 20 61 20 66 6c 6f 61 74 69 6e 67  lways a floating
130e0 20 70 6f 69 6e 74 20 76 61 6c 75 65 2e 0a 20 20   point value..  
130f0 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20 73 75  The result of su
13100 6d 28 29 20 69 73 20 61 6e 20 69 6e 74 65 67 65  m() is an intege
13110 72 20 76 61 6c 75 65 20 69 66 20 61 6c 6c 20 6e  r value if all n
13120 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74 73 20 61  on-NULL inputs a
13130 72 65 20 69 6e 74 65 67 65 72 73 2e 0a 20 20 49  re integers..  I
13140 66 20 61 6e 79 20 69 6e 70 75 74 20 74 6f 20 73  f any input to s
13150 75 6d 28 29 20 69 73 20 6e 65 69 74 68 65 72 20  um() is neither 
13160 61 6e 20 69 6e 74 65 67 65 72 20 6f 72 20 61 20  an integer or a 
13170 4e 55 4c 4c 0a 20 20 74 68 65 6e 20 73 75 6d 28  NULL.  then sum(
13180 29 20 72 65 74 75 72 6e 73 20 61 20 66 6c 6f 61  ) returns a floa
13190 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65  ting point value
131a0 0a 20 20 77 68 69 63 68 20 6d 69 67 68 74 20 62  .  which might b
131b0 65 20 61 6e 20 61 70 70 72 6f 78 69 6d 61 74 69  e an approximati
131c0 6f 6e 20 74 6f 20 74 68 65 20 74 72 75 65 20 73  on to the true s
131d0 75 6d 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 53 75  um.</p>..  <p>Su
131e0 6d 28 29 20 77 69 6c 6c 20 74 68 72 6f 77 20 61  m() will throw a
131f0 6e 20 22 69 6e 74 65 67 65 72 20 6f 76 65 72 66  n "integer overf
13200 6c 6f 77 22 20 65 78 63 65 70 74 69 6f 6e 20 69  low" exception i
13210 66 20 61 6c 6c 20 69 6e 70 75 74 73 0a 20 20 61  f all inputs.  a
13220 72 65 20 69 6e 74 65 67 65 72 73 20 6f 72 20 4e  re integers or N
13230 55 4c 4c 0a 20 20 61 6e 64 20 61 6e 20 69 6e 74  ULL.  and an int
13240 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 20 6f 63  eger overflow oc
13250 63 75 72 73 20 61 74 20 61 6e 79 20 70 6f 69 6e  curs at any poin
13260 74 20 64 75 72 69 6e 67 20 74 68 65 20 63 6f 6d  t during the com
13270 70 75 74 61 74 69 6f 6e 2e 0a 20 20 54 6f 74 61  putation..  Tota
13280 6c 28 29 20 6e 65 76 65 72 20 74 68 72 6f 77 73  l() never throws
13290 20 61 6e 64 20 69 6e 74 65 67 65 72 20 6f 76 65   and integer ove
132a0 72 66 6c 6f 77 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a  rflow..}.</tcl>.
132b0 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 74 63 6c 3e 0a  </table>..<tcl>.
132c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
132d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
132e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
132f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13300 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
13310 65 63 74 69 6f 6e 20 49 4e 53 45 52 54 20 69 6e  ection INSERT in
13320 73 65 72 74 20 7b 49 4e 53 45 52 54 20 49 4e 53  sert {INSERT INS
13330 45 52 54 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61  ERTs}..BubbleDia
13340 67 72 61 6d 20 69 6e 73 65 72 74 2d 73 74 6d 74  gram insert-stmt
13350 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68   1.</tcl>..<p>Th
13360 65 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65  e INSERT stateme
13370 6e 74 20 63 6f 6d 65 73 20 69 6e 20 74 77 6f 20  nt comes in two 
13380 62 61 73 69 63 20 66 6f 72 6d 73 2e 20 20 54 68  basic forms.  Th
13390 65 20 66 69 72 73 74 20 66 6f 72 6d 0a 28 77 69  e first form.(wi
133a0 74 68 20 74 68 65 20 22 56 41 4c 55 45 53 22 20  th the "VALUES" 
133b0 6b 65 79 77 6f 72 64 29 20 63 72 65 61 74 65 73  keyword) creates
133c0 20 61 20 73 69 6e 67 6c 65 20 6e 65 77 20 72 6f   a single new ro
133d0 77 20 69 6e 20 61 6e 20 65 78 69 73 74 69 6e 67  w in an existing
133e0 20 74 61 62 6c 65 2e 0a 49 66 20 6e 6f 20 63 6f   table..If no co
133f0 6c 75 6d 6e 2d 6c 69 73 74 20 69 73 20 73 70 65  lumn-list is spe
13400 63 69 66 69 65 64 20 74 68 65 6e 20 74 68 65 20  cified then the 
13410 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65 73  number of values
13420 20 6d 75 73 74 0a 62 65 20 74 68 65 20 73 61 6d   must.be the sam
13430 65 20 61 73 20 74 68 65 20 6e 75 6d 62 65 72 20  e as the number 
13440 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68  of columns in th
13450 65 20 74 61 62 6c 65 2e 20 20 49 66 20 61 20 63  e table.  If a c
13460 6f 6c 75 6d 6e 2d 6c 69 73 74 0a 69 73 20 73 70  olumn-list.is sp
13470 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68  ecified, then th
13480 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75  e number of valu
13490 65 73 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68  es must match th
134a0 65 20 6e 75 6d 62 65 72 20 6f 66 0a 73 70 65 63  e number of.spec
134b0 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73 2e 20 20  ified columns.  
134c0 43 6f 6c 75 6d 6e 73 20 6f 66 20 74 68 65 20 74  Columns of the t
134d0 61 62 6c 65 20 74 68 61 74 20 64 6f 20 6e 6f 74  able that do not
134e0 20 61 70 70 65 61 72 20 69 6e 20 74 68 65 0a 63   appear in the.c
134f0 6f 6c 75 6d 6e 20 6c 69 73 74 20 61 72 65 20 66  olumn list are f
13500 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 64  illed with the d
13510 65 66 61 75 6c 74 20 76 61 6c 75 65 2c 20 6f 72  efault value, or
13520 20 77 69 74 68 20 4e 55 4c 4c 20 69 66 20 6e 6f   with NULL if no
13530 0a 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69  .default value i
13540 73 20 73 70 65 63 69 66 69 65 64 2e 0a 3c 2f 70  s specified..</p
13550 3e 0a 0a 3c 70 3e 54 68 65 20 73 65 63 6f 6e 64  >..<p>The second
13560 20 66 6f 72 6d 20 6f 66 20 74 68 65 20 49 4e 53   form of the INS
13570 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20 74 61  ERT statement ta
13580 6b 65 73 20 69 74 20 64 61 74 61 20 66 72 6f 6d  kes it data from
13590 20 61 0a 53 45 4c 45 43 54 20 73 74 61 74 65 6d   a.SELECT statem
135a0 65 6e 74 2e 20 20 54 68 65 20 6e 75 6d 62 65 72  ent.  The number
135b0 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74   of columns in t
135c0 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65  he result of the
135d0 0a 53 45 4c 45 43 54 20 6d 75 73 74 20 65 78 61  .SELECT must exa
135e0 63 74 6c 79 20 6d 61 74 63 68 20 74 68 65 20 6e  ctly match the n
135f0 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
13600 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20 69 66   in the table if
13610 0a 6e 6f 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 20  .no column list 
13620 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 6f 72  is specified, or
13630 20 69 74 20 6d 75 73 74 20 6d 61 74 63 68 20 74   it must match t
13640 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
13650 75 6d 6e 73 0a 6e 61 6d 65 20 69 6e 20 74 68 65  umns.name in the
13660 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 2e 20 20 41   column list.  A
13670 20 6e 65 77 20 65 6e 74 72 79 20 69 73 20 6d 61   new entry is ma
13680 64 65 20 69 6e 20 74 68 65 20 74 61 62 6c 65 0a  de in the table.
13690 66 6f 72 20 65 76 65 72 79 20 72 6f 77 20 6f 66  for every row of
136a0 20 74 68 65 20 53 45 4c 45 43 54 20 72 65 73 75   the SELECT resu
136b0 6c 74 2e 20 20 54 68 65 20 53 45 4c 45 43 54 20  lt.  The SELECT 
136c0 6d 61 79 20 62 65 20 73 69 6d 70 6c 65 0a 6f 72  may be simple.or
136d0 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f 70 3e 0a 0a   compound.</p>..
136e0 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  <p>The optional 
136f0 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20  conflict-clause 
13700 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69  allows the speci
13710 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61  fication of an a
13720 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74  lternative.const
13730 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72  raint conflict r
13740 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
13750 74 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69 6e  thm to use durin
13760 67 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61  g this one comma
13770 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74  nd..See the sect
13780 69 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f 4e 20 43  ion titled.[ON C
13790 4f 4e 46 4c 49 43 54 5d 20 66 6f 72 20 61 64 64  ONFLICT] for add
137a0 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
137b0 69 6f 6e 2e 0a 46 6f 72 20 63 6f 6d 70 61 74 69  ion..For compati
137c0 62 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51  bility with MySQ
137d0 4c 2c 20 74 68 65 20 70 61 72 73 65 72 20 61 6c  L, the parser al
137e0 6c 6f 77 73 20 74 68 65 20 75 73 65 20 6f 66 20  lows the use of 
137f0 74 68 65 0a 73 69 6e 67 6c 65 20 6b 65 79 77 6f  the.single keywo
13800 72 64 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67  rd <a href="lang
13810 5f 72 65 70 6c 61 63 65 2e 68 74 6d 6c 22 3e 52  _replace.html">R
13820 45 50 4c 41 43 45 3c 2f 61 3e 20 61 73 20 61 6e  EPLACE</a> as an
13830 20 0a 61 6c 69 61 73 20 66 6f 72 20 22 49 4e 53   .alias for "INS
13840 45 52 54 20 4f 52 20 52 45 50 4c 41 43 45 22 2e  ERT OR REPLACE".
13850 0a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23  .</p>..<tcl>.###
13860 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13870 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13880 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13890 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
138a0 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74  ###########.Sect
138b0 69 6f 6e 20 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54  ion {ON CONFLICT
138c0 20 63 6c 61 75 73 65 7d 20 63 6f 6e 66 6c 69 63   clause} conflic
138d0 74 20 7b 7b 63 6f 6e 66 6c 69 63 74 20 63 6c 61  t {{conflict cla
138e0 75 73 65 7d 20 7b 4f 4e 20 43 4f 4e 46 4c 49 43  use} {ON CONFLIC
138f0 54 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  T}}..BubbleDiagr
13900 61 6d 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  am conflict-clau
13910 73 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68  se.</tcl>..<p>Th
13920 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c  e ON CONFLICT cl
13930 61 75 73 65 20 69 73 20 6e 6f 74 20 61 20 73 65  ause is not a se
13940 70 61 72 61 74 65 20 53 51 4c 20 63 6f 6d 6d 61  parate SQL comma
13950 6e 64 2e 20 20 49 74 20 69 73 20 61 0a 6e 6f 6e  nd.  It is a.non
13960 2d 73 74 61 6e 64 61 72 64 20 63 6c 61 75 73 65  -standard clause
13970 20 74 68 61 74 20 63 61 6e 20 61 70 70 65 61 72   that can appear
13980 20 69 6e 20 6d 61 6e 79 20 6f 74 68 65 72 20 53   in many other S
13990 51 4c 20 63 6f 6d 6d 61 6e 64 73 2e 0a 49 74 20  QL commands..It 
139a0 69 73 20 67 69 76 65 6e 20 69 74 73 20 6f 77 6e  is given its own
139b0 20 73 65 63 74 69 6f 6e 20 69 6e 20 74 68 69 73   section in this
139c0 20 64 6f 63 75 6d 65 6e 74 20 62 65 63 61 75 73   document becaus
139d0 65 20 69 74 20 69 73 20 6e 6f 74 0a 70 61 72 74  e it is not.part
139e0 20 6f 66 20 73 74 61 6e 64 61 72 64 20 53 51 4c   of standard SQL
139f0 20 61 6e 64 20 74 68 65 72 65 66 6f 72 65 20 6d   and therefore m
13a00 69 67 68 74 20 6e 6f 74 20 62 65 20 66 61 6d 69  ight not be fami
13a10 6c 69 61 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  liar.</p>..<p>Th
13a20 65 20 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65  e syntax for the
13a30 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61   ON CONFLICT cla
13a40 75 73 65 20 69 73 20 61 73 20 73 68 6f 77 6e 20  use is as shown 
13a50 61 62 6f 76 65 20 66 6f 72 0a 74 68 65 20 43 52  above for.the CR
13a60 45 41 54 45 20 54 41 42 4c 45 20 63 6f 6d 6d 61  EATE TABLE comma
13a70 6e 64 2e 20 20 46 6f 72 20 74 68 65 20 49 4e 53  nd.  For the INS
13a80 45 52 54 20 61 6e 64 0a 55 50 44 41 54 45 20 63  ERT and.UPDATE c
13a90 6f 6d 6d 61 6e 64 73 2c 20 74 68 65 20 6b 65 79  ommands, the key
13aa0 77 6f 72 64 73 20 22 4f 4e 20 43 4f 4e 46 4c 49  words "ON CONFLI
13ab0 43 54 22 20 61 72 65 20 72 65 70 6c 61 63 65 64  CT" are replaced
13ac0 20 62 79 20 22 4f 52 22 2c 20 74 6f 20 6d 61 6b   by "OR", to mak
13ad0 65 0a 74 68 65 20 73 79 6e 74 61 78 20 73 65 65  e.the syntax see
13ae0 6d 20 6d 6f 72 65 20 6e 61 74 75 72 61 6c 2e 20  m more natural. 
13af0 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 6e   For example, in
13b00 73 74 65 61 64 20 6f 66 0a 22 49 4e 53 45 52 54  stead of."INSERT
13b10 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 49 47 4e   ON CONFLICT IGN
13b20 4f 52 45 22 20 77 65 20 68 61 76 65 20 22 49 4e  ORE" we have "IN
13b30 53 45 52 54 20 4f 52 20 49 47 4e 4f 52 45 22 2e  SERT OR IGNORE".
13b40 0a 54 68 65 20 6b 65 79 77 6f 72 64 73 20 63 68  .The keywords ch
13b50 61 6e 67 65 20 62 75 74 20 74 68 65 20 6d 65 61  ange but the mea
13b60 6e 69 6e 67 20 6f 66 20 74 68 65 20 63 6c 61 75  ning of the clau
13b70 73 65 20 69 73 20 74 68 65 20 73 61 6d 65 0a 65  se is the same.e
13b80 69 74 68 65 72 20 77 61 79 2e 3c 2f 70 3e 0a 0a  ither way.</p>..
13b90 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49  <p>The ON CONFLI
13ba0 43 54 20 63 6c 61 75 73 65 20 73 70 65 63 69 66  CT clause specif
13bb0 69 65 73 20 61 6e 20 61 6c 67 6f 72 69 74 68 6d  ies an algorithm
13bc0 20 75 73 65 64 20 74 6f 20 72 65 73 6f 6c 76 65   used to resolve
13bd0 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66  .constraint conf
13be0 6c 69 63 74 73 2e 20 20 54 68 65 72 65 20 61 72  licts.  There ar
13bf0 65 20 66 69 76 65 20 63 68 6f 69 63 65 73 3a 20  e five choices: 
13c00 52 4f 4c 4c 42 41 43 4b 2c 20 41 42 4f 52 54 2c  ROLLBACK, ABORT,
13c10 0a 46 41 49 4c 2c 20 49 47 4e 4f 52 45 2c 20 61  .FAIL, IGNORE, a
13c20 6e 64 20 52 45 50 4c 41 43 45 2e 20 54 68 65 20  nd REPLACE. The 
13c30 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74 68  default algorith
13c40 6d 20 69 73 20 41 42 4f 52 54 2e 20 20 54 68 69  m is ABORT.  Thi
13c50 73 0a 69 73 20 77 68 61 74 20 74 68 65 79 20 6d  s.is what they m
13c60 65 61 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c  ean:</p>..<dl>.<
13c70 64 74 3e 3c 62 3e 52 4f 4c 4c 42 41 43 4b 3c 2f  dt><b>ROLLBACK</
13c80 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57  b></dt>.<dd><p>W
13c90 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74  hen a constraint
13ca0 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
13cb0 73 2c 20 61 6e 20 69 6d 6d 65 64 69 61 74 65 20  s, an immediate 
13cc0 52 4f 4c 4c 42 41 43 4b 0a 6f 63 63 75 72 73 2c  ROLLBACK.occurs,
13cd0 20 74 68 75 73 20 65 6e 64 69 6e 67 20 74 68 65   thus ending the
13ce0 20 63 75 72 72 65 6e 74 20 74 72 61 6e 73 61 63   current transac
13cf0 74 69 6f 6e 2c 20 61 6e 64 20 74 68 65 20 63 6f  tion, and the co
13d00 6d 6d 61 6e 64 20 61 62 6f 72 74 73 0a 77 69 74  mmand aborts.wit
13d10 68 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65 20  h a return code 
13d20 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  of SQLITE_CONSTR
13d30 41 49 4e 54 2e 20 20 49 66 20 6e 6f 20 74 72 61  AINT.  If no tra
13d40 6e 73 61 63 74 69 6f 6e 20 69 73 0a 61 63 74 69  nsaction is.acti
13d50 76 65 20 28 6f 74 68 65 72 20 74 68 61 6e 20 74  ve (other than t
13d60 68 65 20 69 6d 70 6c 69 65 64 20 74 72 61 6e 73  he implied trans
13d70 61 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63  action that is c
13d80 72 65 61 74 65 64 20 6f 6e 20 65 76 65 72 79 0a  reated on every.
13d90 63 6f 6d 6d 61 6e 64 29 20 74 68 65 6e 20 74 68  command) then th
13da0 69 73 20 61 6c 67 6f 72 69 74 68 6d 20 77 6f 72  is algorithm wor
13db0 6b 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 41  ks the same as A
13dc0 42 4f 52 54 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  BORT.</p></dd>..
13dd0 3c 64 74 3e 3c 62 3e 41 42 4f 52 54 3c 2f 62 3e  <dt><b>ABORT</b>
13de0 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65  </dt>.<dd><p>Whe
13df0 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  n a constraint v
13e00 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
13e10 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 62 61 63   the command bac
13e20 6b 73 20 6f 75 74 0a 61 6e 79 20 70 72 69 6f 72  ks out.any prior
13e30 20 63 68 61 6e 67 65 73 20 69 74 20 6d 69 67 68   changes it migh
13e40 74 20 68 61 76 65 20 6d 61 64 65 20 61 6e 64 20  t have made and 
13e50 61 62 6f 72 74 73 20 77 69 74 68 20 61 20 72 65  aborts with a re
13e60 74 75 72 6e 20 63 6f 64 65 0a 6f 66 20 53 51 4c  turn code.of SQL
13e70 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20  ITE_CONSTRAINT. 
13e80 20 42 75 74 20 6e 6f 20 52 4f 4c 4c 42 41 43 4b   But no ROLLBACK
13e90 20 69 73 20 65 78 65 63 75 74 65 64 20 73 6f 20   is executed so 
13ea0 63 68 61 6e 67 65 73 0a 66 72 6f 6d 20 70 72 69  changes.from pri
13eb0 6f 72 20 63 6f 6d 6d 61 6e 64 73 20 77 69 74 68  or commands with
13ec0 69 6e 20 74 68 65 20 73 61 6d 65 20 74 72 61 6e  in the same tran
13ed0 73 61 63 74 69 6f 6e 0a 61 72 65 20 70 72 65 73  saction.are pres
13ee0 65 72 76 65 64 2e 20 20 54 68 69 73 20 69 73 20  erved.  This is 
13ef0 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61  the default beha
13f00 76 69 6f 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  vior.</p></dd>..
13f10 3c 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f 62 3e 3c  <dt><b>FAIL</b><
13f20 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e  /dt>.<dd><p>When
13f30 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
13f40 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
13f50 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72  the command abor
13f60 74 73 20 77 69 74 68 20 61 0a 72 65 74 75 72 6e  ts with a.return
13f70 20 63 6f 64 65 20 53 51 4c 49 54 45 5f 43 4f 4e   code SQLITE_CON
13f80 53 54 52 41 49 4e 54 2e 20 20 42 75 74 20 61 6e  STRAINT.  But an
13f90 79 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65  y changes to the
13fa0 20 64 61 74 61 62 61 73 65 20 74 68 61 74 0a 74   database that.t
13fb0 68 65 20 63 6f 6d 6d 61 6e 64 20 6d 61 64 65 20  he command made 
13fc0 70 72 69 6f 72 20 74 6f 20 65 6e 63 6f 75 6e 74  prior to encount
13fd0 65 72 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72  ering the constr
13fe0 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 61  aint violation.a
13ff0 72 65 20 70 72 65 73 65 72 76 65 64 20 61 6e 64  re preserved and
14000 20 61 72 65 20 6e 6f 74 20 62 61 63 6b 65 64 20   are not backed 
14010 6f 75 74 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  out.  For exampl
14020 65 2c 20 69 66 20 61 6e 20 55 50 44 41 54 45 0a  e, if an UPDATE.
14030 73 74 61 74 65 6d 65 6e 74 20 65 6e 63 6f 75 6e  statement encoun
14040 74 65 72 65 64 20 61 20 63 6f 6e 73 74 72 61 69  tered a constrai
14050 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 6e 20  nt violation on 
14060 74 68 65 20 31 30 30 74 68 20 72 6f 77 20 74 68  the 100th row th
14070 61 74 0a 69 74 20 61 74 74 65 6d 70 74 73 20 74  at.it attempts t
14080 6f 20 75 70 64 61 74 65 2c 20 74 68 65 6e 20 74  o update, then t
14090 68 65 20 66 69 72 73 74 20 39 39 20 72 6f 77 20  he first 99 row 
140a0 63 68 61 6e 67 65 73 20 61 72 65 20 70 72 65 73  changes are pres
140b0 65 72 76 65 64 0a 62 75 74 20 63 68 61 6e 67 65  erved.but change
140c0 73 20 74 6f 20 72 6f 77 73 20 31 30 30 20 61 6e  s to rows 100 an
140d0 64 20 62 65 79 6f 6e 64 20 6e 65 76 65 72 20 6f  d beyond never o
140e0 63 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  ccur.</p></dd>..
140f0 3c 64 74 3e 3c 62 3e 49 47 4e 4f 52 45 3c 2f 62  <dt><b>IGNORE</b
14100 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68  ></dt>.<dd><p>Wh
14110 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20  en a constraint 
14120 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
14130 2c 20 74 68 65 20 6f 6e 65 20 72 6f 77 20 74 68  , the one row th
14140 61 74 20 63 6f 6e 74 61 69 6e 73 0a 74 68 65 20  at contains.the 
14150 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
14160 74 69 6f 6e 20 69 73 20 6e 6f 74 20 69 6e 73 65  tion is not inse
14170 72 74 65 64 20 6f 72 20 63 68 61 6e 67 65 64 2e  rted or changed.
14180 20 20 42 75 74 20 74 68 65 20 63 6f 6d 6d 61 6e    But the comman
14190 64 0a 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63  d.continues exec
141a0 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20  uting normally. 
141b0 20 4f 74 68 65 72 20 72 6f 77 73 20 62 65 66 6f   Other rows befo
141c0 72 65 20 61 6e 64 20 61 66 74 65 72 20 74 68 65  re and after the
141d0 20 72 6f 77 20 74 68 61 74 0a 63 6f 6e 74 61 69   row that.contai
141e0 6e 65 64 20 74 68 65 20 63 6f 6e 73 74 72 61 69  ned the constrai
141f0 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 63 6f 6e  nt violation con
14200 74 69 6e 75 65 20 74 6f 20 62 65 20 69 6e 73 65  tinue to be inse
14210 72 74 65 64 20 6f 72 20 75 70 64 61 74 65 64 0a  rted or updated.
14220 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65 72  normally.  No er
14230 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ror is returned.
14240 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c  </p></dd>..<dt><
14250 62 3e 52 45 50 4c 41 43 45 3c 2f 62 3e 3c 2f 64  b>REPLACE</b></d
14260 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61  t>.<dd><p>When a
14270 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69   UNIQUE constrai
14280 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63  nt violation occ
14290 75 72 73 2c 20 74 68 65 20 70 72 65 2d 65 78 69  urs, the pre-exi
142a0 73 74 69 6e 67 20 72 6f 77 73 0a 74 68 61 74 20  sting rows.that 
142b0 61 72 65 20 63 61 75 73 69 6e 67 20 74 68 65 20  are causing the 
142c0 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
142d0 74 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64  tion are removed
142e0 20 70 72 69 6f 72 20 74 6f 20 69 6e 73 65 72 74   prior to insert
142f0 69 6e 67 0a 6f 72 20 75 70 64 61 74 69 6e 67 20  ing.or updating 
14300 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 2e  the current row.
14310 20 20 54 68 75 73 20 74 68 65 20 69 6e 73 65 72    Thus the inser
14320 74 20 6f 72 20 75 70 64 61 74 65 20 61 6c 77 61  t or update alwa
14330 79 73 20 6f 63 63 75 72 73 2e 0a 54 68 65 20 63  ys occurs..The c
14340 6f 6d 6d 61 6e 64 20 63 6f 6e 74 69 6e 75 65 73  ommand continues
14350 20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61   executing norma
14360 6c 6c 79 2e 20 20 4e 6f 20 65 72 72 6f 72 20 69  lly.  No error i
14370 73 20 72 65 74 75 72 6e 65 64 2e 0a 49 66 20 61  s returned..If a
14380 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74 72   NOT NULL constr
14390 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f  aint violation o
143a0 63 63 75 72 73 2c 20 74 68 65 20 4e 55 4c 4c 20  ccurs, the NULL 
143b0 76 61 6c 75 65 20 69 73 20 72 65 70 6c 61 63 65  value is replace
143c0 64 0a 62 79 20 74 68 65 20 64 65 66 61 75 6c 74  d.by the default
143d0 20 76 61 6c 75 65 20 66 6f 72 20 74 68 61 74 20   value for that 
143e0 63 6f 6c 75 6d 6e 2e 20 20 49 66 20 74 68 65 20  column.  If the 
143f0 63 6f 6c 75 6d 6e 20 68 61 73 20 6e 6f 20 64 65  column has no de
14400 66 61 75 6c 74 0a 76 61 6c 75 65 2c 20 74 68 65  fault.value, the
14410 6e 20 74 68 65 20 41 42 4f 52 54 20 61 6c 67 6f  n the ABORT algo
14420 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e 20 20  rithm is used.  
14430 49 66 20 61 20 43 48 45 43 4b 20 63 6f 6e 73 74  If a CHECK const
14440 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a  raint violation.
14450 6f 63 63 75 72 73 20 74 68 65 6e 20 74 68 65 20  occurs then the 
14460 49 47 4e 4f 52 45 20 61 6c 67 6f 72 69 74 68 6d  IGNORE algorithm
14470 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c   is used.</p>..<
14480 70 3e 57 68 65 6e 20 74 68 69 73 20 63 6f 6e 66  p>When this conf
14490 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
144a0 73 74 72 61 74 65 67 79 20 64 65 6c 65 74 65 73  strategy deletes
144b0 20 72 6f 77 73 20 69 6e 20 6f 72 64 65 72 20 74   rows in order t
144c0 6f 0a 73 61 74 69 73 66 79 20 61 20 63 6f 6e 73  o.satisfy a cons
144d0 74 72 61 69 6e 74 2c 20 69 74 20 64 6f 65 73 20  traint, it does 
144e0 6e 6f 74 20 69 6e 76 6f 6b 65 20 64 65 6c 65 74  not invoke delet
144f0 65 20 74 72 69 67 67 65 72 73 20 6f 6e 20 74 68  e triggers on th
14500 6f 73 65 0a 72 6f 77 73 2e 20 20 54 68 69 73 20  ose.rows.  This 
14510 62 65 68 61 76 69 6f 72 20 6d 69 67 68 74 20 63  behavior might c
14520 68 61 6e 67 65 20 69 6e 20 61 20 66 75 74 75 72  hange in a futur
14530 65 20 72 65 6c 65 61 73 65 2e 3c 2f 70 3e 0a 3c  e release.</p>.<
14540 2f 64 6c 3e 0a 0a 3c 70 3e 54 68 65 20 61 6c 67  /dl>..<p>The alg
14550 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64  orithm specified
14560 20 69 6e 20 74 68 65 20 4f 52 20 63 6c 61 75 73   in the OR claus
14570 65 20 6f 66 20 61 20 49 4e 53 45 52 54 20 6f 72  e of a INSERT or
14580 20 55 50 44 41 54 45 0a 6f 76 65 72 72 69 64 65   UPDATE.override
14590 73 20 61 6e 79 20 61 6c 67 6f 72 69 74 68 6d 20  s any algorithm 
145a0 73 70 65 63 69 66 69 65 64 20 69 6e 20 61 20 43  specified in a C
145b0 52 45 41 54 45 20 54 41 42 4c 45 2e 0a 49 66 20  REATE TABLE..If 
145c0 6e 6f 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  no algorithm is 
145d0 73 70 65 63 69 66 69 65 64 20 61 6e 79 77 68 65  specified anywhe
145e0 72 65 2c 20 74 68 65 20 41 42 4f 52 54 20 61 6c  re, the ABORT al
145f0 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e  gorithm is used.
14600 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  </p>..<tcl>.####
14610 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14620 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14630 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14640 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14650 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
14660 6f 6e 20 52 45 49 4e 44 45 58 20 72 65 69 6e 64  on REINDEX reind
14670 65 78 20 52 45 49 4e 44 45 58 0a 0a 42 75 62 62  ex REINDEX..Bubb
14680 6c 65 44 69 61 67 72 61 6d 20 72 65 69 6e 64 65  leDiagram reinde
14690 78 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a  x-stmt 1.</tcl>.
146a0 0a 3c 70 3e 54 68 65 20 52 45 49 4e 44 45 58 20  .<p>The REINDEX 
146b0 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 20  command is used 
146c0 74 6f 20 64 65 6c 65 74 65 20 61 6e 64 20 72 65  to delete and re
146d0 63 72 65 61 74 65 20 69 6e 64 69 63 65 73 20 66  create indices f
146e0 72 6f 6d 20 73 63 72 61 74 63 68 2e 0a 54 68 69  rom scratch..Thi
146f0 73 20 69 73 20 75 73 65 66 75 6c 20 77 68 65 6e  s is useful when
14700 20 74 68 65 20 64 65 66 69 6e 69 74 69 6f 6e 20   the definition 
14710 6f 66 20 61 20 63 6f 6c 6c 61 74 69 6f 6e 20 73  of a collation s
14720 65 71 75 65 6e 63 65 20 68 61 73 20 63 68 61 6e  equence has chan
14730 67 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e  ged..</p>..<p>In
14740 20 74 68 65 20 66 69 72 73 74 20 66 6f 72 6d 2c   the first form,
14750 20 61 6c 6c 20 69 6e 64 69 63 65 73 20 69 6e 20   all indices in 
14760 61 6c 6c 20 61 74 74 61 63 68 65 64 20 64 61 74  all attached dat
14770 61 62 61 73 65 73 20 74 68 61 74 20 75 73 65 20  abases that use 
14780 74 68 65 0a 6e 61 6d 65 64 20 63 6f 6c 6c 61 74  the.named collat
14790 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 61 72 65  ion sequence are
147a0 20 72 65 63 72 65 61 74 65 64 2e 20 49 6e 20 74   recreated. In t
147b0 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 2c 20  he second form, 
147c0 69 66 20 0a 3c 69 3e 26 23 39 31 3b 64 61 74 61  if .<i>&#91;data
147d0 62 61 73 65 2d 6e 61 6d 65 2e 26 23 39 33 3b 74  base-name.&#93;t
147e0 61 62 6c 65 2f 69 6e 64 65 78 2d 6e 61 6d 65 3c  able/index-name<
147f0 2f 69 3e 20 69 64 65 6e 74 69 66 69 65 73 20 61  /i> identifies a
14800 20 74 61 62 6c 65 2c 0a 74 68 65 6e 20 61 6c 6c   table,.then all
14810 20 69 6e 64 69 63 65 73 0a 61 73 73 6f 63 69 61   indices.associa
14820 74 65 64 20 77 69 74 68 20 74 68 65 20 74 61 62  ted with the tab
14830 6c 65 20 61 72 65 20 72 65 62 75 69 6c 74 2e 20  le are rebuilt. 
14840 49 66 20 61 6e 20 69 6e 64 65 78 20 69 73 20 69  If an index is i
14850 64 65 6e 74 69 66 69 65 64 2c 20 74 68 65 6e 20  dentified, then 
14860 6f 6e 6c 79 0a 74 68 69 73 20 73 70 65 63 69 66  only.this specif
14870 69 63 20 69 6e 64 65 78 20 69 73 20 64 65 6c 65  ic index is dele
14880 74 65 64 20 61 6e 64 20 72 65 63 72 65 61 74 65  ted and recreate
14890 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 6e  d..</p>..<p>If n
148a0 6f 20 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61  o <i>database-na
148b0 6d 65 3c 2f 69 3e 20 69 73 20 73 70 65 63 69 66  me</i> is specif
148c0 69 65 64 20 61 6e 64 20 74 68 65 72 65 20 65 78  ied and there ex
148d0 69 73 74 73 20 62 6f 74 68 20 61 20 74 61 62 6c  ists both a tabl
148e0 65 20 6f 72 0a 69 6e 64 65 78 20 61 6e 64 20 61  e or.index and a
148f0 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65   collation seque
14900 6e 63 65 20 6f 66 20 74 68 65 20 73 70 65 63 69  nce of the speci
14910 66 69 65 64 20 6e 61 6d 65 2c 20 74 68 65 6e 20  fied name, then 
14920 69 6e 64 69 63 65 73 20 61 73 73 6f 63 69 61 74  indices associat
14930 65 64 0a 77 69 74 68 20 74 68 65 20 63 6f 6c 6c  ed.with the coll
14940 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 6f  ation sequence o
14950 6e 6c 79 20 61 72 65 20 72 65 63 6f 6e 73 74 72  nly are reconstr
14960 75 63 74 65 64 2e 20 54 68 69 73 20 61 6d 62 69  ucted. This ambi
14970 67 75 69 74 79 20 6d 61 79 20 62 65 0a 64 69 73  guity may be.dis
14980 70 65 6c 6c 65 64 20 62 79 20 61 6c 77 61 79 73  pelled by always
14990 20 73 70 65 63 69 66 79 69 6e 67 20 61 20 3c 69   specifying a <i
149a0 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f  >database-name</
149b0 69 3e 20 77 68 65 6e 20 72 65 69 6e 64 65 78 69  i> when reindexi
149c0 6e 67 20 61 0a 73 70 65 63 69 66 69 63 20 74 61  ng a.specific ta
149d0 62 6c 65 20 6f 72 20 69 6e 64 65 78 2e 0a 0a 3c  ble or index...<
149e0 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
149f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14a00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14a10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14a20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14a30 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 52 45 50  ####.Section REP
14a40 4c 41 43 45 20 72 65 70 6c 61 63 65 20 52 45 50  LACE replace REP
14a50 4c 41 43 45 0a 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  LACE..</tcl>..<p
14a60 3e 54 68 65 20 52 45 50 4c 41 43 45 20 63 6f 6d  >The REPLACE com
14a70 6d 61 6e 64 20 69 73 20 61 6e 20 61 6c 69 61 73  mand is an alias
14a80 20 66 6f 72 20 74 68 65 20 22 49 4e 53 45 52 54   for the "INSERT
14a90 20 4f 52 20 52 45 50 4c 41 43 45 22 20 76 61 72   OR REPLACE" var
14aa0 69 61 6e 74 0a 6f 66 20 74 68 65 20 3c 61 20 68  iant.of the <a h
14ab0 72 65 66 3d 22 6c 61 6e 67 5f 69 6e 73 65 72 74  ref="lang_insert
14ac0 2e 68 74 6d 6c 22 3e 49 4e 53 45 52 54 3c 2f 61  .html">INSERT</a
14ad0 3e 20 63 6f 6d 6d 61 6e 64 2e 20 20 0a 54 68 69  > command.  .Thi
14ae0 73 20 61 6c 69 61 73 20 69 73 20 70 72 6f 76 69  s alias is provi
14af0 64 65 64 20 66 6f 72 0a 63 6f 6d 70 61 74 69 62  ded for.compatib
14b00 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51 4c  ility with MySQL
14b10 2e 20 20 53 65 65 20 74 68 65 20 0a 3c 61 20 68  .  See the .<a h
14b20 72 65 66 3d 22 6c 61 6e 67 5f 69 6e 73 65 72 74  ref="lang_insert
14b30 2e 68 74 6d 6c 22 3e 49 4e 53 45 52 54 3c 2f 61  .html">INSERT</a
14b40 3e 20 63 6f 6d 6d 61 6e 64 20 64 6f 63 75 6d 65  > command docume
14b50 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64 64 69  ntation for addi
14b60 74 69 6f 6e 61 6c 0a 69 6e 66 6f 72 6d 61 74 69  tional.informati
14b70 6f 6e 2e 3c 2f 70 3e 20 20 0a 0a 3c 74 63 6c 3e  on.</p>  ..<tcl>
14b80 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
14b90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14ba0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14bb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14bc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14bd0 0a 53 65 63 74 69 6f 6e 20 53 45 4c 45 43 54 20  .Section SELECT 
14be0 73 65 6c 65 63 74 20 7b 53 45 4c 45 43 54 20 71  select {SELECT q
14bf0 75 65 72 79 7d 0a 0a 42 75 62 62 6c 65 44 69 61  uery}..BubbleDia
14c00 67 72 61 6d 20 73 65 6c 65 63 74 2d 73 74 6d 74  gram select-stmt
14c10 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d   1.BubbleDiagram
14c20 20 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 0a 42   result-column.B
14c30 75 62 62 6c 65 44 69 61 67 72 61 6d 20 6a 6f 69  ubbleDiagram joi
14c40 6e 2d 73 6f 75 72 63 65 0a 42 75 62 62 6c 65 44  n-source.BubbleD
14c50 69 61 67 72 61 6d 20 73 69 6e 67 6c 65 2d 73 6f  iagram single-so
14c60 75 72 63 65 0a 42 75 62 62 6c 65 44 69 61 67 72  urce.BubbleDiagr
14c70 61 6d 20 6a 6f 69 6e 2d 6f 70 0a 42 75 62 62 6c  am join-op.Bubbl
14c80 65 44 69 61 67 72 61 6d 20 6a 6f 69 6e 2d 63 6f  eDiagram join-co
14c90 6e 73 74 72 61 69 6e 74 0a 42 75 62 62 6c 65 44  nstraint.BubbleD
14ca0 69 61 67 72 61 6d 20 6f 72 64 65 72 69 6e 67 2d  iagram ordering-
14cb0 74 65 72 6d 0a 42 75 62 62 6c 65 44 69 61 67 72  term.BubbleDiagr
14cc0 61 6d 20 63 6f 6d 70 6f 75 6e 64 2d 6f 70 65 72  am compound-oper
14cd0 61 74 6f 72 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  ator.</tcl>..<p>
14ce0 54 68 65 20 53 45 4c 45 43 54 20 73 74 61 74 65  The SELECT state
14cf0 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20  ment is used to 
14d00 71 75 65 72 79 20 74 68 65 20 64 61 74 61 62 61  query the databa
14d10 73 65 2e 20 20 54 68 65 0a 72 65 73 75 6c 74 20  se.  The.result 
14d20 6f 66 20 61 20 53 45 4c 45 43 54 20 69 73 20 7a  of a SELECT is z
14d30 65 72 6f 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73  ero or more rows
14d40 20 6f 66 20 64 61 74 61 20 77 68 65 72 65 20 65   of data where e
14d50 61 63 68 20 72 6f 77 0a 68 61 73 20 61 20 66 69  ach row.has a fi
14d60 78 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  xed number of co
14d70 6c 75 6d 6e 73 2e 20 20 54 68 65 20 6e 75 6d 62  lumns.  The numb
14d80 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
14d90 20 74 68 65 0a 72 65 73 75 6c 74 20 69 73 20 73   the.result is s
14da0 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65 20  pecified by the 
14db0 65 78 70 72 65 73 73 69 6f 6e 20 6c 69 73 74 20  expression list 
14dc0 69 6e 20 62 65 74 77 65 65 6e 20 74 68 65 0a 53  in between the.S
14dd0 45 4c 45 43 54 20 61 6e 64 20 46 52 4f 4d 20 6b  ELECT and FROM k
14de0 65 79 77 6f 72 64 73 2e 20 20 41 6e 79 20 61 72  eywords.  Any ar
14df0 62 69 74 72 61 72 79 20 65 78 70 72 65 73 73 69  bitrary expressi
14e00 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 0a 61  on can be used.a
14e10 73 20 61 20 72 65 73 75 6c 74 2e 20 20 49 66 20  s a result.  If 
14e20 61 20 72 65 73 75 6c 74 20 65 78 70 72 65 73 73  a result express
14e30 69 6f 6e 20 69 73 20 7d 0a 68 64 5f 70 75 74 73  ion is }.hd_puts
14e40 20 22 5b 4f 70 65 72 61 74 6f 72 20 2a 5d 20 74   "[Operator *] t
14e50 68 65 6e 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 20  hen all columns 
14e60 6f 66 20 61 6c 6c 20 74 61 62 6c 65 73 20 61 72  of all tables ar
14e70 65 20 73 75 62 73 74 69 74 75 74 65 64 5c 6e 22  e substituted\n"
14e80 0a 68 64 5f 70 75 74 73 20 22 66 6f 72 20 74 68  .hd_puts "for th
14e90 61 74 20 6f 6e 65 20 65 78 70 72 65 73 73 69 6f  at one expressio
14ea0 6e 2e 20 20 49 66 20 74 68 65 20 65 78 70 72 65  n.  If the expre
14eb0 73 73 69 6f 6e 20 69 73 20 74 68 65 20 6e 61 6d  ssion is the nam
14ec0 65 20 6f 66 5c 6e 22 0a 68 64 5f 70 75 74 73 20  e of\n".hd_puts 
14ed0 22 61 20 74 61 62 6c 65 20 66 6f 6c 6c 6f 77 65  "a table followe
14ee0 64 20 62 79 20 5b 4f 70 65 72 61 74 6f 72 20 2e  d by [Operator .
14ef0 2a 5d 20 74 68 65 6e 20 74 68 65 20 72 65 73 75  *] then the resu
14f00 6c 74 20 69 73 20 61 6c 6c 20 63 6f 6c 75 6d 6e  lt is all column
14f10 73 5c 6e 22 0a 68 64 5f 70 75 74 73 20 7b 69 6e  s\n".hd_puts {in
14f20 20 74 68 61 74 20 6f 6e 65 20 74 61 62 6c 65 2e   that one table.
14f30 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44 49 53  </p>..<p>The DIS
14f40 54 49 4e 43 54 20 6b 65 79 77 6f 72 64 20 63 61  TINCT keyword ca
14f50 75 73 65 73 20 61 20 73 75 62 73 65 74 20 6f 66  uses a subset of
14f60 20 72 65 73 75 6c 74 20 72 6f 77 73 20 74 6f 20   result rows to 
14f70 62 65 20 72 65 74 75 72 6e 65 64 2c 20 0a 69 6e  be returned, .in
14f80 20 77 68 69 63 68 20 65 61 63 68 20 72 65 73 75   which each resu
14f90 6c 74 20 72 6f 77 20 69 73 20 64 69 66 66 65 72  lt row is differ
14fa0 65 6e 74 2e 20 20 4e 55 4c 4c 20 76 61 6c 75 65  ent.  NULL value
14fb0 73 20 61 72 65 20 6e 6f 74 20 74 72 65 61 74 65  s are not treate
14fc0 64 20 61 73 20 0a 64 69 73 74 69 6e 63 74 20 66  d as .distinct f
14fd0 72 6f 6d 20 65 61 63 68 20 6f 74 68 65 72 2e 20  rom each other. 
14fe0 20 54 68 65 20 64 65 66 61 75 6c 74 20 62 65 68   The default beh
14ff0 61 76 69 6f 72 20 69 73 20 74 68 61 74 20 61 6c  avior is that al
15000 6c 20 72 65 73 75 6c 74 20 72 6f 77 73 20 0a 62  l result rows .b
15010 65 20 72 65 74 75 72 6e 65 64 2c 20 77 68 69 63  e returned, whic
15020 68 20 63 61 6e 20 62 65 20 6d 61 64 65 20 65 78  h can be made ex
15030 70 6c 69 63 69 74 20 77 69 74 68 20 74 68 65 20  plicit with the 
15040 6b 65 79 77 6f 72 64 20 41 4c 4c 2e 3c 2f 70 3e  keyword ALL.</p>
15050 0a 0a 3c 70 3e 54 68 65 20 71 75 65 72 79 20 69  ..<p>The query i
15060 73 20 65 78 65 63 75 74 65 64 20 61 67 61 69 6e  s executed again
15070 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 74  st one or more t
15080 61 62 6c 65 73 20 73 70 65 63 69 66 69 65 64 20  ables specified 
15090 61 66 74 65 72 0a 74 68 65 20 46 52 4f 4d 20 6b  after.the FROM k
150a0 65 79 77 6f 72 64 2e 20 20 49 66 20 6d 75 6c 74  eyword.  If mult
150b0 69 70 6c 65 20 74 61 62 6c 65 73 20 6e 61 6d 65  iple tables name
150c0 73 20 61 72 65 20 73 65 70 61 72 61 74 65 64 20  s are separated 
150d0 62 79 20 63 6f 6d 6d 61 73 2c 0a 74 68 65 6e 20  by commas,.then 
150e0 74 68 65 20 71 75 65 72 79 20 69 73 20 61 67 61  the query is aga
150f0 69 6e 73 74 20 74 68 65 20 63 72 6f 73 73 20 6a  inst the cross j
15100 6f 69 6e 20 6f 66 20 74 68 65 20 76 61 72 69 6f  oin of the vario
15110 75 73 20 74 61 62 6c 65 73 2e 0a 54 68 65 20 66  us tables..The f
15120 75 6c 6c 20 53 51 4c 2d 39 32 20 6a 6f 69 6e 20  ull SQL-92 join 
15130 73 79 6e 74 61 78 20 63 61 6e 20 61 6c 73 6f 20  syntax can also 
15140 62 65 20 75 73 65 64 20 74 6f 20 73 70 65 63 69  be used to speci
15150 66 79 20 6a 6f 69 6e 73 2e 0a 41 20 73 75 62 2d  fy joins..A sub-
15160 71 75 65 72 79 0a 69 6e 20 70 61 72 65 6e 74 68  query.in parenth
15170 65 73 65 73 20 6d 61 79 20 62 65 20 73 75 62 73  eses may be subs
15180 74 69 74 75 74 65 64 20 66 6f 72 20 61 6e 79 20  tituted for any 
15190 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20 74 68  table name in th
151a0 65 20 46 52 4f 4d 20 63 6c 61 75 73 65 2e 0a 54  e FROM clause..T
151b0 68 65 20 65 6e 74 69 72 65 20 46 52 4f 4d 20 63  he entire FROM c
151c0 6c 61 75 73 65 20 6d 61 79 20 62 65 20 6f 6d 69  lause may be omi
151d0 74 74 65 64 2c 20 69 6e 20 77 68 69 63 68 20 63  tted, in which c
151e0 61 73 65 20 74 68 65 20 72 65 73 75 6c 74 20 69  ase the result i
151f0 73 20 61 0a 73 69 6e 67 6c 65 20 72 6f 77 20 63  s a.single row c
15200 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 74 68 65  onsisting of the
15210 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 20 65   values of the e
15220 78 70 72 65 73 73 69 6f 6e 20 6c 69 73 74 2e 0a  xpression list..
15230 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 57 48 45  </p>..<p>The WHE
15240 52 45 20 63 6c 61 75 73 65 20 63 61 6e 20 62 65  RE clause can be
15250 20 75 73 65 64 20 74 6f 20 6c 69 6d 69 74 20 74   used to limit t
15260 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  he number of row
15270 73 20 6f 76 65 72 0a 77 68 69 63 68 20 74 68 65  s over.which the
15280 20 71 75 65 72 79 20 6f 70 65 72 61 74 65 73 2e   query operates.
15290 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 47 52 4f  </p>..<p>The GRO
152a0 55 50 20 42 59 20 63 6c 61 75 73 65 20 63 61 75  UP BY clause cau
152b0 73 65 73 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  ses one or more 
152c0 72 6f 77 73 20 6f 66 20 74 68 65 20 72 65 73 75  rows of the resu
152d0 6c 74 20 74 6f 0a 62 65 20 63 6f 6d 62 69 6e 65  lt to.be combine
152e0 64 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65 20  d into a single 
152f0 72 6f 77 20 6f 66 20 6f 75 74 70 75 74 2e 20 20  row of output.  
15300 54 68 69 73 20 69 73 20 65 73 70 65 63 69 61 6c  This is especial
15310 6c 79 20 75 73 65 66 75 6c 0a 77 68 65 6e 20 74  ly useful.when t
15320 68 65 20 72 65 73 75 6c 74 20 63 6f 6e 74 61 69  he result contai
15330 6e 73 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  ns aggregate fun
15340 63 74 69 6f 6e 73 2e 20 20 54 68 65 20 65 78 70  ctions.  The exp
15350 72 65 73 73 69 6f 6e 73 20 69 6e 0a 74 68 65 20  ressions in.the 
15360 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65 20  GROUP BY clause 
15370 64 6f 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20  do <em>not</em> 
15380 68 61 76 65 20 74 6f 20 62 65 20 65 78 70 72 65  have to be expre
15390 73 73 69 6f 6e 73 20 74 68 61 74 0a 61 70 70 65  ssions that.appe
153a0 61 72 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74  ar in the result
153b0 2e 20 20 54 68 65 20 48 41 56 49 4e 47 20 63 6c  .  The HAVING cl
153c0 61 75 73 65 20 69 73 20 73 69 6d 69 6c 61 72 20  ause is similar 
153d0 74 6f 20 57 48 45 52 45 20 65 78 63 65 70 74 0a  to WHERE except.
153e0 74 68 61 74 20 48 41 56 49 4e 47 20 61 70 70 6c  that HAVING appl
153f0 69 65 73 20 61 66 74 65 72 20 67 72 6f 75 70 69  ies after groupi
15400 6e 67 20 68 61 73 20 6f 63 63 75 72 72 65 64 2e  ng has occurred.
15410 20 20 54 68 65 20 48 41 56 49 4e 47 20 65 78 70    The HAVING exp
15420 72 65 73 73 69 6f 6e 0a 6d 61 79 20 72 65 66 65  ression.may refe
15430 72 20 74 6f 20 76 61 6c 75 65 73 2c 20 65 76 65  r to values, eve
15440 6e 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  n aggregate func
15450 74 69 6f 6e 73 2c 20 74 68 61 74 20 61 72 65 20  tions, that are 
15460 6e 6f 74 20 69 6e 20 74 68 65 20 72 65 73 75 6c  not in the resul
15470 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4f  t.</p>..<p>The O
15480 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 20 63  RDER BY clause c
15490 61 75 73 65 73 20 74 68 65 20 6f 75 74 70 75 74  auses the output
154a0 20 72 6f 77 73 20 74 6f 20 62 65 20 73 6f 72 74   rows to be sort
154b0 65 64 2e 20 20 0a 54 68 65 20 61 72 67 75 6d 65  ed.  .The argume
154c0 6e 74 20 74 6f 20 4f 52 44 45 52 20 42 59 20 69  nt to ORDER BY i
154d0 73 20 61 20 6c 69 73 74 20 6f 66 20 65 78 70 72  s a list of expr
154e0 65 73 73 69 6f 6e 73 20 74 68 61 74 20 61 72 65  essions that are
154f0 20 75 73 65 64 20 61 73 20 74 68 65 0a 6b 65 79   used as the.key
15500 20 66 6f 72 20 74 68 65 20 73 6f 72 74 2e 20 20   for the sort.  
15510 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20  The expressions 
15520 64 6f 20 6e 6f 74 20 68 61 76 65 20 74 6f 20 62  do not have to b
15530 65 20 70 61 72 74 20 6f 66 20 74 68 65 0a 72 65  e part of the.re
15540 73 75 6c 74 20 66 6f 72 20 61 20 73 69 6d 70 6c  sult for a simpl
15550 65 20 53 45 4c 45 43 54 2c 20 62 75 74 20 69 6e  e SELECT, but in
15560 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45   a compound SELE
15570 43 54 20 65 61 63 68 20 73 6f 72 74 0a 65 78 70  CT each sort.exp
15580 72 65 73 73 69 6f 6e 20 6d 75 73 74 20 65 78 61  ression must exa
15590 63 74 6c 79 20 6d 61 74 63 68 20 6f 6e 65 20 6f  ctly match one o
155a0 66 20 74 68 65 20 72 65 73 75 6c 74 20 63 6f 6c  f the result col
155b0 75 6d 6e 73 2e 20 20 45 61 63 68 0a 73 6f 72 74  umns.  Each.sort
155c0 20 65 78 70 72 65 73 73 69 6f 6e 20 6d 61 79 20   expression may 
155d0 62 65 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 66 6f  be optionally fo
155e0 6c 6c 6f 77 65 64 20 62 79 20 61 20 43 4f 4c 4c  llowed by a COLL
155f0 41 54 45 20 6b 65 79 77 6f 72 64 20 61 6e 64 0a  ATE keyword and.
15600 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 63 6f  the name of a co
15610 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  llating function
15620 20 75 73 65 64 20 66 6f 72 20 6f 72 64 65 72 69   used for orderi
15630 6e 67 20 74 65 78 74 20 61 6e 64 2f 6f 72 0a 6b  ng text and/or.k
15640 65 79 77 6f 72 64 73 20 41 53 43 20 6f 72 20 44  eywords ASC or D
15650 45 53 43 20 74 6f 20 73 70 65 63 69 66 79 20 74  ESC to specify t
15660 68 65 20 73 6f 72 74 20 6f 72 64 65 72 2e 3c 2f  he sort order.</
15670 70 3e 0a 0a 3c 70 3e 45 61 63 68 20 74 65 72 6d  p>..<p>Each term
15680 20 6f 66 20 61 6e 20 4f 52 44 45 52 20 42 59 20   of an ORDER BY 
15690 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 70 72  expression is pr
156a0 6f 63 65 73 73 65 64 20 61 73 20 66 6f 6c 6c 6f  ocessed as follo
156b0 77 73 3a 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c  ws:</p>..<ol>.<l
156c0 69 3e 3c 70 3e 49 66 20 74 68 65 20 4f 52 44 45  i><p>If the ORDE
156d0 52 20 42 59 20 65 78 70 72 65 73 73 69 6f 6e 20  R BY expression 
156e0 69 73 20 61 20 63 6f 6e 73 74 61 6e 74 20 69 6e  is a constant in
156f0 74 65 67 65 72 20 4b 20 74 68 65 6e 20 74 68 65  teger K then the
15700 0a 6f 75 74 70 75 74 20 69 73 20 6f 72 64 65 72  .output is order
15710 65 64 20 62 79 20 74 68 65 20 4b 2d 74 68 20 63  ed by the K-th c
15720 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 72 65 73  olumn of the res
15730 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 3c 2f 6c 69  ult set.</p></li
15740 3e 0a 3c 6c 69 3e 3c 70 3e 49 66 20 74 68 65 20  >.<li><p>If the 
15750 4f 52 44 45 52 20 42 59 20 65 78 70 72 65 73 73  ORDER BY express
15760 69 6f 6e 20 69 73 20 61 6e 20 69 64 65 6e 74 69  ion is an identi
15770 66 69 65 72 20 61 6e 64 20 6f 6e 65 20 6f 66 20  fier and one of 
15780 74 68 65 0a 6f 75 74 70 75 74 20 63 6f 6c 75 6d  the.output colum
15790 6e 73 20 68 61 73 20 61 6e 20 61 6c 69 61 73 20  ns has an alias 
157a0 62 79 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65  by the same name
157b0 2c 20 74 68 65 6e 20 74 68 65 20 6f 75 74 70 75  , then the outpu
157c0 74 20 69 73 0a 6f 72 64 65 72 65 64 20 62 79 20  t is.ordered by 
157d0 74 68 65 20 69 64 65 6e 74 69 66 69 65 64 20 63  the identified c
157e0 6f 6c 75 6d 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a  olumn.</p></li>.
157f0 3c 6c 69 3e 3c 70 3e 4f 74 68 65 72 77 69 73 65  <li><p>Otherwise
15800 2c 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 65  , the ORDER BY e
15810 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76 61  xpression is eva
15820 6c 75 61 74 65 64 20 61 6e 64 20 74 68 65 20 6f  luated and the o
15830 75 74 70 75 74 20 0a 69 73 20 6f 72 64 65 72 65  utput .is ordere
15840 64 20 62 79 20 74 68 65 20 76 61 6c 75 65 20 6f  d by the value o
15850 66 20 74 68 61 74 20 65 78 70 72 65 73 73 69 6f  f that expressio
15860 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 6f 6c  n.</p></li>.</ol
15870 3e 0a 0a 3c 70 3e 49 6e 20 61 20 63 6f 6d 70 6f  >..<p>In a compo
15880 75 6e 64 20 53 45 4c 45 43 54 20 73 74 61 74 65  und SELECT state
15890 6d 65 6e 74 2c 20 74 68 65 20 74 68 69 72 64 20  ment, the third 
158a0 4f 52 44 45 52 20 42 59 20 6d 61 74 63 68 69 6e  ORDER BY matchin
158b0 67 20 72 75 6c 65 0a 72 65 71 75 69 72 65 73 20  g rule.requires 
158c0 74 68 61 74 20 74 68 65 20 65 78 70 72 65 73 73  that the express
158d0 69 6f 6e 20 62 65 20 69 64 65 6e 74 69 63 61 6c  ion be identical
158e0 20 74 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20 63   to one of the c
158f0 6f 6c 75 6d 6e 73 20 69 6e 0a 74 68 65 20 72 65  olumns in.the re
15900 73 75 6c 74 20 73 65 74 2e 20 20 54 68 65 20 74  sult set.  The t
15910 68 72 65 65 20 72 75 6c 65 73 20 61 72 65 20 66  hree rules are f
15920 69 72 73 74 20 61 70 70 6c 69 65 64 20 74 6f 20  irst applied to 
15930 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74 0a 53 45  the left-most.SE
15940 4c 45 43 54 20 69 6e 20 74 68 65 20 63 6f 6d 70  LECT in the comp
15950 6f 75 6e 64 2e 20 20 49 66 20 61 20 6d 61 74 63  ound.  If a matc
15960 68 20 69 73 20 66 6f 75 6e 64 2c 20 74 68 65 20  h is found, the 
15970 73 65 61 72 63 68 20 73 74 6f 70 73 2e 20 20 4f  search stops.  O
15980 74 68 65 72 77 69 73 65 2c 0a 74 68 65 20 6e 65  therwise,.the ne
15990 78 74 20 53 45 4c 45 43 54 20 74 6f 20 74 68 65  xt SELECT to the
159a0 20 72 69 67 68 74 20 69 73 20 74 72 69 65 64 2e   right is tried.
159b0 20 20 54 68 69 73 20 63 6f 6e 74 69 6e 75 65 73    This continues
159c0 20 75 6e 74 69 6c 20 61 20 6d 61 74 63 68 0a 69   until a match.i
159d0 73 20 66 6f 75 6e 64 2e 20 20 45 61 63 68 20 74  s found.  Each t
159e0 65 72 6d 20 6f 66 20 74 68 65 20 4f 52 44 45 52  erm of the ORDER
159f0 20 42 59 20 63 6c 61 75 73 65 20 69 73 20 70 72   BY clause is pr
15a00 6f 63 65 73 73 65 64 20 73 65 70 61 72 61 74 65  ocessed separate
15a10 6c 79 20 0a 61 6e 64 20 6d 61 79 20 63 6f 6d 65  ly .and may come
15a20 20 66 72 6f 6d 20 64 69 66 66 65 72 65 6e 74 20   from different 
15a30 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
15a40 73 20 69 6e 20 74 68 65 20 63 6f 6d 70 6f 75 6e  s in the compoun
15a50 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4c  d.</p>..<p>The L
15a60 49 4d 49 54 20 63 6c 61 75 73 65 20 70 6c 61 63  IMIT clause plac
15a70 65 73 20 61 6e 20 75 70 70 65 72 20 62 6f 75 6e  es an upper boun
15a80 64 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  d on the number 
15a90 6f 66 20 72 6f 77 73 0a 72 65 74 75 72 6e 65 64  of rows.returned
15aa0 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20   in the result. 
15ab0 20 41 20 6e 65 67 61 74 69 76 65 20 4c 49 4d 49   A negative LIMI
15ac0 54 20 69 6e 64 69 63 61 74 65 73 20 6e 6f 20 75  T indicates no u
15ad0 70 70 65 72 20 62 6f 75 6e 64 2e 0a 54 68 65 20  pper bound..The 
15ae0 6f 70 74 69 6f 6e 61 6c 20 4f 46 46 53 45 54 20  optional OFFSET 
15af0 66 6f 6c 6c 6f 77 69 6e 67 20 4c 49 4d 49 54 20  following LIMIT 
15b00 73 70 65 63 69 66 69 65 73 20 68 6f 77 20 6d 61  specifies how ma
15b10 6e 79 0a 72 6f 77 73 20 74 6f 20 73 6b 69 70 20  ny.rows to skip 
15b20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67  at the beginning
15b30 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73   of the result s
15b40 65 74 2e 0a 49 6e 20 61 20 63 6f 6d 70 6f 75 6e  et..In a compoun
15b50 64 20 71 75 65 72 79 2c 20 74 68 65 20 4c 49 4d  d query, the LIM
15b60 49 54 20 63 6c 61 75 73 65 20 6d 61 79 20 6f 6e  IT clause may on
15b70 6c 79 20 61 70 70 65 61 72 20 6f 6e 20 74 68 65  ly appear on the
15b80 0a 66 69 6e 61 6c 20 53 45 4c 45 43 54 20 73 74  .final SELECT st
15b90 61 74 65 6d 65 6e 74 2e 0a 54 68 65 20 6c 69 6d  atement..The lim
15ba0 69 74 20 69 73 20 61 70 70 6c 69 65 64 20 74 6f  it is applied to
15bb0 20 74 68 65 20 65 6e 74 69 72 65 20 71 75 65 72   the entire quer
15bc0 79 20 6e 6f 74 0a 74 6f 20 74 68 65 20 69 6e 64  y not.to the ind
15bd0 69 76 69 64 75 61 6c 20 53 45 4c 45 43 54 20 73  ividual SELECT s
15be0 74 61 74 65 6d 65 6e 74 20 74 6f 20 77 68 69 63  tatement to whic
15bf0 68 20 69 74 20 69 73 20 61 74 74 61 63 68 65 64  h it is attached
15c00 2e 0a 4e 6f 74 65 20 74 68 61 74 20 69 66 20 74  ..Note that if t
15c10 68 65 20 4f 46 46 53 45 54 20 6b 65 79 77 6f 72  he OFFSET keywor
15c20 64 20 69 73 20 75 73 65 64 20 69 6e 20 74 68 65  d is used in the
15c30 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 2c 20 74   LIMIT clause, t
15c40 68 65 6e 20 74 68 65 0a 6c 69 6d 69 74 20 69 73  hen the.limit is
15c50 20 74 68 65 20 66 69 72 73 74 20 6e 75 6d 62 65   the first numbe
15c60 72 20 61 6e 64 20 74 68 65 20 6f 66 66 73 65 74  r and the offset
15c70 20 69 73 20 74 68 65 20 73 65 63 6f 6e 64 20 6e   is the second n
15c80 75 6d 62 65 72 2e 20 20 49 66 20 61 0a 63 6f 6d  umber.  If a.com
15c90 6d 61 20 69 73 20 75 73 65 64 20 69 6e 73 74 65  ma is used inste
15ca0 61 64 20 6f 66 20 74 68 65 20 4f 46 46 53 45 54  ad of the OFFSET
15cb0 20 6b 65 79 77 6f 72 64 2c 20 74 68 65 6e 20 74   keyword, then t
15cc0 68 65 20 6f 66 66 73 65 74 20 69 73 20 74 68 65  he offset is the
15cd0 0a 66 69 72 73 74 20 6e 75 6d 62 65 72 20 61 6e  .first number an
15ce0 64 20 74 68 65 20 6c 69 6d 69 74 20 69 73 20 74  d the limit is t
15cf0 68 65 20 73 65 63 6f 6e 64 20 6e 75 6d 62 65 72  he second number
15d00 2e 20 20 54 68 69 73 20 73 65 65 6d 69 6e 67 0a  .  This seeming.
15d10 63 6f 6e 74 72 61 64 69 74 69 6f 6e 20 69 73 20  contradition is 
15d20 69 6e 74 65 6e 74 69 6f 6e 61 6c 20 2d 20 69 74  intentional - it
15d30 20 6d 61 78 69 6d 69 7a 65 73 20 63 6f 6d 70 61   maximizes compa
15d40 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 6c 65  tibility with le
15d50 67 61 63 79 0a 53 51 4c 20 64 61 74 61 62 61 73  gacy.SQL databas
15d60 65 20 73 79 73 74 65 6d 73 2e 0a 3c 2f 70 3e 0a  e systems..</p>.
15d70 0a 3c 70 3e 41 20 63 6f 6d 70 6f 75 6e 64 20 53  .<p>A compound S
15d80 45 4c 45 43 54 20 69 73 20 66 6f 72 6d 65 64 20  ELECT is formed 
15d90 66 72 6f 6d 20 74 77 6f 20 6f 72 20 6d 6f 72 65  from two or more
15da0 20 73 69 6d 70 6c 65 20 53 45 4c 45 43 54 73 20   simple SELECTs 
15db0 63 6f 6e 6e 65 63 74 65 64 0a 62 79 20 6f 6e 65  connected.by one
15dc0 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74 6f 72   of the operator
15dd0 73 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41  s UNION, UNION A
15de0 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54 2c 20 6f  LL, INTERSECT, o
15df0 72 20 45 58 43 45 50 54 2e 20 20 49 6e 0a 61 20  r EXCEPT.  In.a 
15e00 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 2c  compound SELECT,
15e10 20 61 6c 6c 20 74 68 65 20 63 6f 6e 73 74 69 74   all the constit
15e20 75 65 6e 74 20 53 45 4c 45 43 54 73 20 6d 75 73  uent SELECTs mus
15e30 74 20 73 70 65 63 69 66 79 20 74 68 65 0a 73 61  t specify the.sa
15e40 6d 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 65 73  me number of res
15e50 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20 20 54 68  ult columns.  Th
15e60 65 72 65 20 6d 61 79 20 62 65 20 6f 6e 6c 79 20  ere may be only 
15e70 61 20 73 69 6e 67 6c 65 20 4f 52 44 45 52 20 42  a single ORDER B
15e80 59 0a 63 6c 61 75 73 65 20 61 74 20 74 68 65 20  Y.clause at the 
15e90 65 6e 64 20 6f 66 20 74 68 65 20 63 6f 6d 70 6f  end of the compo
15ea0 75 6e 64 20 53 45 4c 45 43 54 2e 20 20 54 68 65  und SELECT.  The
15eb0 20 55 4e 49 4f 4e 20 61 6e 64 20 55 4e 49 4f 4e   UNION and UNION
15ec0 20 41 4c 4c 0a 6f 70 65 72 61 74 6f 72 73 20 63   ALL.operators c
15ed0 6f 6d 62 69 6e 65 20 74 68 65 20 72 65 73 75 6c  ombine the resul
15ee0 74 73 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54  ts of the SELECT
15ef0 73 20 74 6f 20 74 68 65 20 72 69 67 68 74 20 61  s to the right a
15f00 6e 64 20 6c 65 66 74 20 69 6e 74 6f 0a 61 20 73  nd left into.a s
15f10 69 6e 67 6c 65 20 62 69 67 20 74 61 62 6c 65 2e  ingle big table.
15f20 20 20 54 68 65 20 64 69 66 66 65 72 65 6e 63 65    The difference
15f30 20 69 73 20 74 68 61 74 20 69 6e 20 55 4e 49 4f   is that in UNIO
15f40 4e 20 61 6c 6c 20 72 65 73 75 6c 74 20 72 6f 77  N all result row
15f50 73 0a 61 72 65 20 64 69 73 74 69 6e 63 74 20 77  s.are distinct w
15f60 68 65 72 65 20 69 6e 20 55 4e 49 4f 4e 20 41 4c  here in UNION AL
15f70 4c 20 74 68 65 72 65 20 6d 61 79 20 62 65 20 64  L there may be d
15f80 75 70 6c 69 63 61 74 65 73 2e 0a 54 68 65 20 49  uplicates..The I
15f90 4e 54 45 52 53 45 43 54 20 6f 70 65 72 61 74 6f  NTERSECT operato
15fa0 72 20 74 61 6b 65 73 20 74 68 65 20 69 6e 74 65  r takes the inte
15fb0 72 73 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20  rsection of the 
15fc0 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 0a 6c  results of the.l
15fd0 65 66 74 20 61 6e 64 20 72 69 67 68 74 20 53 45  eft and right SE
15fe0 4c 45 43 54 73 2e 20 20 45 58 43 45 50 54 20 74  LECTs.  EXCEPT t
15ff0 61 6b 65 73 20 74 68 65 20 72 65 73 75 6c 74 20  akes the result 
16000 6f 66 20 6c 65 66 74 20 53 45 4c 45 43 54 20 61  of left SELECT a
16010 66 74 65 72 0a 72 65 6d 6f 76 69 6e 67 20 74 68  fter.removing th
16020 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65  e results of the
16030 20 72 69 67 68 74 20 53 45 4c 45 43 54 2e 20 20   right SELECT.  
16040 57 68 65 6e 20 74 68 72 65 65 20 6f 72 20 6d 6f  When three or mo
16050 72 65 20 53 45 4c 45 43 54 73 0a 61 72 65 20 63  re SELECTs.are c
16060 6f 6e 6e 65 63 74 65 64 20 69 6e 74 6f 20 61 20  onnected into a 
16070 63 6f 6d 70 6f 75 6e 64 2c 20 74 68 65 79 20 67  compound, they g
16080 72 6f 75 70 20 66 72 6f 6d 20 6c 65 66 74 20 74  roup from left t
16090 6f 20 72 69 67 68 74 2e 3c 2f 70 3e 0a 0a 0a 3c  o right.</p>...<
160a0 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
160b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
160c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
160d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
160e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
160f0 23 23 23 0a 53 65 63 74 69 6f 6e 20 55 50 44 41  ###.Section UPDA
16100 54 45 20 75 70 64 61 74 65 20 7b 55 50 44 41 54  TE update {UPDAT
16110 45 20 55 50 44 41 54 45 73 7d 0a 0a 42 75 62 62  E UPDATEs}..Bubb
16120 6c 65 44 69 61 67 72 61 6d 20 75 70 64 61 74 65  leDiagram update
16130 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c 65 44 69  -stmt 1.BubbleDi
16140 61 67 72 61 6d 20 71 75 61 6c 69 66 69 65 64 2d  agram qualified-
16150 74 61 62 6c 65 2d 6e 61 6d 65 0a 3c 2f 74 63 6c  table-name.</tcl
16160 3e 0a 0a 3c 70 3e 54 68 65 20 55 50 44 41 54 45  >..<p>The UPDATE
16170 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73   statement is us
16180 65 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65  ed to change the
16190 20 76 61 6c 75 65 20 6f 66 20 63 6f 6c 75 6d 6e   value of column
161a0 73 20 69 6e 20 0a 73 65 6c 65 63 74 65 64 20 72  s in .selected r
161b0 6f 77 73 20 6f 66 20 61 20 74 61 62 6c 65 2e 20  ows of a table. 
161c0 20 45 61 63 68 20 61 73 73 69 67 6e 6d 65 6e 74   Each assignment
161d0 20 69 6e 20 61 6e 20 55 50 44 41 54 45 20 73 70   in an UPDATE sp
161e0 65 63 69 66 69 65 73 0a 61 20 63 6f 6c 75 6d 6e  ecifies.a column
161f0 20 6e 61 6d 65 20 74 6f 20 74 68 65 20 6c 65 66   name to the lef
16200 74 20 6f 66 20 74 68 65 20 65 71 75 61 6c 73 20  t of the equals 
16210 73 69 67 6e 20 61 6e 64 20 61 6e 20 61 72 62 69  sign and an arbi
16220 74 72 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e  trary expression
16230 0a 74 6f 20 74 68 65 20 72 69 67 68 74 2e 20 20  .to the right.  
16240 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20  The expressions 
16250 6d 61 79 20 75 73 65 20 74 68 65 20 76 61 6c 75  may use the valu
16260 65 73 20 6f 66 20 6f 74 68 65 72 20 63 6f 6c 75  es of other colu
16270 6d 6e 73 2e 0a 41 6c 6c 20 65 78 70 72 65 73 73  mns..All express
16280 69 6f 6e 73 20 61 72 65 20 65 76 61 6c 75 61 74  ions are evaluat
16290 65 64 20 62 65 66 6f 72 65 20 61 6e 79 20 61 73  ed before any as
162a0 73 69 67 6e 6d 65 6e 74 73 20 61 72 65 20 6d 61  signments are ma
162b0 64 65 2e 0a 41 20 57 48 45 52 45 20 63 6c 61 75  de..A WHERE clau
162c0 73 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  se can be used t
162d0 6f 20 72 65 73 74 72 69 63 74 20 77 68 69 63 68  o restrict which
162e0 20 72 6f 77 73 20 61 72 65 20 75 70 64 61 74 65   rows are update
162f0 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f  d.</p>..<p>The o
16300 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74  ptional conflict
16310 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74  -clause allows t
16320 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
16330 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69   of an alternati
16340 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  ve.constraint co
16350 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
16360 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75  n algorithm to u
16370 73 65 20 64 75 72 69 6e 67 20 74 68 69 73 20 6f  se during this o
16380 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20  ne command..See 
16390 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c  the section titl
163a0 65 64 0a 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d  ed.[ON CONFLICT]
163b0 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
163c0 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e  information.</p>
163d0 0a 0a 3c 70 3e 49 66 20 53 51 4c 69 74 65 20 69  ..<p>If SQLite i
163e0 73 20 62 75 69 6c 74 20 77 69 74 68 20 74 68 65  s built with the
163f0 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   [SQLITE_ENABLE_
16400 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49  UPDATE_DELETE_LI
16410 4d 49 54 5d 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d  MIT].compile-tim
16420 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e 20 74 68  e option then th
16430 65 20 73 79 6e 74 61 78 20 6f 66 20 74 68 65 20  e syntax of the 
16440 55 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74  UPDATE statement
16450 20 69 73 20 65 78 74 65 6e 64 65 64 0a 77 69 74   is extended.wit
16460 68 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44 45 52  h optional ORDER
16470 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20 63 6c   BY and LIMIT cl
16480 61 75 73 65 73 20 61 73 20 66 6f 6c 6c 6f 77 73  auses as follows
16490 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62  :</p>..<tcl>Bubb
164a0 6c 65 44 69 61 67 72 61 6d 20 75 70 64 61 74 65  leDiagram update
164b0 2d 73 74 6d 74 2d 6c 69 6d 69 74 65 64 3c 2f 74  -stmt-limited</t
164c0 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69  cl>..<p>The opti
164d0 6f 6e 61 6c 20 4c 49 4d 49 54 20 63 6c 61 75 73  onal LIMIT claus
164e0 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  e can be used to
164f0 20 6c 69 6d 69 74 20 74 68 65 20 6e 75 6d 62 65   limit the numbe
16500 72 20 6f 66 0a 72 6f 77 73 20 6d 6f 64 69 66 65  r of.rows modife
16510 64 2c 20 61 6e 64 20 74 68 65 72 65 62 79 20 6c  d, and thereby l
16520 69 6d 69 74 20 74 68 65 20 73 69 7a 65 20 6f 66  imit the size of
16530 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
16540 2e 0a 54 68 65 20 4f 52 44 45 52 20 42 59 20 63  ..The ORDER BY c
16550 6c 61 75 73 65 20 69 73 20 75 73 65 64 20 6f 6e  lause is used on
16560 6c 79 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ly to determine 
16570 77 68 69 63 68 20 72 6f 77 73 20 66 61 6c 6c 0a  which rows fall.
16580 77 69 74 68 69 6e 20 74 68 65 20 4c 49 4d 49 54  within the LIMIT
16590 2e 20 20 54 68 65 20 6f 72 64 65 72 20 69 6e 20  .  The order in 
165a0 77 68 69 63 68 20 72 6f 77 73 20 61 72 65 20 6d  which rows are m
165b0 6f 64 69 66 69 65 64 20 69 73 20 61 72 62 69 74  odified is arbit
165c0 72 61 72 79 0a 61 6e 64 20 69 73 20 6e 6f 74 20  rary.and is not 
165d0 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68  determined by th
165e0 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73  e ORDER BY claus
165f0 65 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  e.</p>..<tcl>.##
16600 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16610 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16620 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16630 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16640 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
16650 74 69 6f 6e 20 56 41 43 55 55 4d 20 76 61 63 75  tion VACUUM vacu
16660 75 6d 20 56 41 43 55 55 4d 0a 0a 42 75 62 62 6c  um VACUUM..Bubbl
16670 65 44 69 61 67 72 61 6d 20 76 61 63 75 75 6d 2d  eDiagram vacuum-
16680 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c  stmt 1.</tcl>..<
16690 70 3e 57 68 65 6e 20 61 6e 20 6f 62 6a 65 63 74  p>When an object
166a0 20 28 74 61 62 6c 65 2c 20 69 6e 64 65 78 2c 20   (table, index, 
166b0 6f 72 20 74 72 69 67 67 65 72 29 20 69 73 20 64  or trigger) is d
166c0 72 6f 70 70 65 64 20 66 72 6f 6d 20 74 68 65 20  ropped from the 
166d0 0a 64 61 74 61 62 61 73 65 2c 20 69 74 20 6c 65  .database, it le
166e0 61 76 65 73 20 62 65 68 69 6e 64 20 65 6d 70 74  aves behind empt
166f0 79 20 73 70 61 63 65 2e 20 20 54 68 69 73 20 6d  y space.  This m
16700 61 6b 65 73 20 74 68 65 20 64 61 74 61 62 61 73  akes the databas
16710 65 20 0a 66 69 6c 65 20 6c 61 72 67 65 72 20 74  e .file larger t
16720 68 61 6e 20 69 74 20 6e 65 65 64 73 20 74 6f 20  han it needs to 
16730 62 65 2c 20 62 75 74 20 63 61 6e 20 73 70 65 65  be, but can spee
16740 64 20 75 70 20 69 6e 73 65 72 74 73 2e 20 20 49  d up inserts.  I
16750 6e 20 74 69 6d 65 20 0a 69 6e 73 65 72 74 73 20  n time .inserts 
16760 61 6e 64 20 64 65 6c 65 74 65 73 20 63 61 6e 20  and deletes can 
16770 6c 65 61 76 65 20 74 68 65 20 64 61 74 61 62 61  leave the databa
16780 73 65 20 66 69 6c 65 20 73 74 72 75 63 74 75 72  se file structur
16790 65 20 66 72 61 67 6d 65 6e 74 65 64 2c 20 0a 77  e fragmented, .w
167a0 68 69 63 68 20 73 6c 6f 77 73 20 64 6f 77 6e 20  hich slows down 
167b0 64 69 73 6b 20 61 63 63 65 73 73 20 74 6f 20 74  disk access to t
167c0 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 74  he database cont
167d0 65 6e 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  ents.</p>..<p>Th
167e0 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64  e VACUUM command
167f0 20 63 6c 65 61 6e 73 0a 74 68 65 20 6d 61 69 6e   cleans.the main
16800 20 64 61 74 61 62 61 73 65 20 62 79 20 63 6f 70   database by cop
16810 79 69 6e 67 20 69 74 73 20 63 6f 6e 74 65 6e 74  ying its content
16820 73 20 74 6f 20 61 20 74 65 6d 70 6f 72 61 72 79  s to a temporary
16830 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 61   database file a
16840 6e 64 20 0a 72 65 6c 6f 61 64 69 6e 67 20 74 68  nd .reloading th
16850 65 20 6f 72 69 67 69 6e 61 6c 20 64 61 74 61 62  e original datab
16860 61 73 65 20 66 69 6c 65 20 66 72 6f 6d 20 74 68  ase file from th
16870 65 20 63 6f 70 79 2e 20 20 54 68 69 73 20 65 6c  e copy.  This el
16880 69 6d 69 6e 61 74 65 73 20 0a 66 72 65 65 20 70  iminates .free p
16890 61 67 65 73 2c 20 20 61 6c 69 67 6e 73 20 74 61  ages,  aligns ta
168a0 62 6c 65 20 64 61 74 61 20 74 6f 20 62 65 20 63  ble data to be c
168b0 6f 6e 74 69 67 75 6f 75 73 2c 20 61 6e 64 20 6f  ontiguous, and o
168c0 74 68 65 72 77 69 73 65 20 63 6c 65 61 6e 73 20  therwise cleans 
168d0 0a 75 70 20 74 68 65 20 64 61 74 61 62 61 73 65  .up the database
168e0 20 66 69 6c 65 20 73 74 72 75 63 74 75 72 65 2e   file structure.
168f0 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 56 41 43  </p>..<p>The VAC
16900 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 6d 61 79 20  UUM command may 
16910 63 68 61 6e 67 65 20 74 68 65 20 0a 5b 52 4f 57  change the .[ROW
16920 49 44 20 7c 20 52 4f 57 49 44 73 5d 20 6f 66 20  ID | ROWIDs] of 
16930 65 6e 74 72 69 65 73 20 69 6e 20 74 61 62 6c 65  entries in table
16940 73 20 74 68 61 74 20 64 6f 0a 6e 6f 74 20 68 61  s that do.not ha
16950 76 65 20 61 6e 20 65 78 70 6c 69 63 69 74 20 5b  ve an explicit [
16960 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
16970 4b 45 59 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e 56 41  KEY].</p>..<p>VA
16980 43 55 55 4d 20 6f 6e 6c 79 20 77 6f 72 6b 73 20  CUUM only works 
16990 6f 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61  on the main data
169a0 62 61 73 65 2e 0a 49 74 20 69 73 20 6e 6f 74 20  base..It is not 
169b0 70 6f 73 73 69 62 6c 65 20 74 6f 20 56 41 43 55  possible to VACU
169c0 55 4d 20 61 6e 20 61 74 74 61 63 68 65 64 20 64  UM an attached d
169d0 61 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70  atabase file.</p
169e0 3e 0a 0a 3c 70 3e 54 68 65 20 56 41 43 55 55 4d  >..<p>The VACUUM
169f0 20 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20 66 61   command will fa
16a00 69 6c 20 69 66 20 74 68 65 72 65 20 69 73 20 61  il if there is a
16a10 6e 20 61 63 74 69 76 65 20 74 72 61 6e 73 61 63  n active transac
16a20 74 69 6f 6e 2e 0a 54 68 65 20 56 41 43 55 55 4d  tion..The VACUUM
16a30 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 20 6e 6f   command is a no
16a40 2d 6f 70 20 66 6f 72 20 69 6e 2d 6d 65 6d 6f 72  -op for in-memor
16a50 79 20 64 61 74 61 62 61 73 65 73 2e 3c 2f 70 3e  y databases.</p>
16a60 0a 0a 3c 70 3e 41 73 20 6f 66 20 53 51 4c 69 74  ..<p>As of SQLit
16a70 65 20 76 65 72 73 69 6f 6e 20 33 2e 31 2c 20 61  e version 3.1, a
16a80 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 20 74 6f  n alternative to
16a90 20 75 73 69 6e 67 20 74 68 65 20 56 41 43 55 55   using the VACUU
16aa0 4d 20 63 6f 6d 6d 61 6e 64 0a 69 73 20 61 75 74  M command.is aut
16ab0 6f 2d 76 61 63 75 75 6d 20 6d 6f 64 65 2c 20 65  o-vacuum mode, e
16ac0 6e 61 62 6c 65 64 20 75 73 69 6e 67 20 74 68 65  nabled using the
16ad0 20 0a 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20   .[auto_vacuum] 
16ae0 70 72 61 67 6d 61 2e 20 20 57 68 65 6e 20 5b 61  pragma.  When [a
16af0 75 74 6f 5f 76 61 63 75 75 6d 5d 20 69 73 20 65  uto_vacuum] is e
16b00 6e 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61 74  nabled for a dat
16b10 61 62 61 73 65 2c 20 0a 6c 61 72 67 65 20 64 65  abase, .large de
16b20 6c 65 74 65 73 20 63 61 75 73 65 0a 74 68 65 20  letes cause.the 
16b30 73 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61  size of the data
16b40 62 61 73 65 20 66 69 6c 65 20 74 6f 20 73 68 72  base file to shr
16b50 69 6e 6b 2e 20 20 48 6f 77 65 76 65 72 2c 20 5b  ink.  However, [
16b60 61 75 74 6f 5f 76 61 63 75 75 6d 5d 0a 61 6c 73  auto_vacuum].als
16b70 6f 20 63 61 75 73 65 73 20 65 78 63 65 73 73 20  o causes excess 
16b80 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  fragmentation of
16b90 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
16ba0 6c 65 2e 20 20 41 6e 64 20 5b 61 75 74 6f 5f 76  le.  And [auto_v
16bb0 61 63 75 75 6d 5d 0a 64 6f 65 73 20 6e 6f 74 20  acuum].does not 
16bc0 63 6f 6d 70 61 63 74 20 70 61 72 74 69 61 6c 6c  compact partiall
16bd0 79 20 66 69 6c 6c 65 64 20 70 61 67 65 73 20 6f  y filled pages o
16be0 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  f the database a
16bf0 73 20 56 41 43 55 55 4d 0a 64 6f 65 73 2e 0a 3c  s VACUUM.does..<
16c00 2f 70 3e 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  /p>.<tcl>.######
16c10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16c20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16c30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16c40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16c50 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
16c60 20 7b 49 4e 44 45 58 45 44 20 42 59 7d 20 69 6e   {INDEXED BY} in
16c70 64 65 78 65 64 62 79 20 7b 7b 49 4e 44 45 58 45  dexedby {{INDEXE
16c80 44 20 42 59 7d 20 7b 4e 4f 54 20 49 4e 44 45 58  D BY} {NOT INDEX
16c90 45 44 7d 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 70 3e  ED}}..</tcl>.<p>
16ca0 54 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 70  The INDEXED BY p
16cb0 68 72 61 73 65 20 69 73 20 61 20 53 51 4c 20 65  hrase is a SQL e
16cc0 78 74 65 6e 73 69 6f 6e 20 66 6f 75 6e 64 20 6f  xtension found o
16cd0 6e 6c 79 20 69 6e 20 53 51 4c 69 74 65 20 77 68  nly in SQLite wh
16ce0 69 63 68 20 63 61 6e 0a 62 65 20 75 73 65 64 20  ich can.be used 
16cf0 74 6f 20 76 65 72 69 66 79 20 74 68 61 74 20 74  to verify that t
16d00 68 65 20 63 6f 72 72 65 63 74 20 69 6e 64 69 63  he correct indic
16d10 65 73 20 61 72 65 20 62 65 69 6e 67 20 75 73 65  es are being use
16d20 64 20 6f 6e 20 61 20 5b 44 45 4c 45 54 45 5d 2c  d on a [DELETE],
16d30 0a 5b 53 45 4c 45 43 54 5d 2c 20 6f 72 20 5b 55  .[SELECT], or [U
16d40 50 44 41 54 45 5d 20 73 74 61 74 65 6d 65 6e 74  PDATE] statement
16d50 2e 0a 54 68 65 20 49 4e 44 45 58 45 44 20 42 59  ..The INDEXED BY
16d60 20 70 68 72 61 73 65 20 61 6c 77 61 79 73 20 66   phrase always f
16d70 6f 6c 6c 6f 77 73 20 74 68 65 20 6e 61 6d 65 20  ollows the name 
16d80 6f 66 20 61 20 74 61 62 6c 65 20 74 68 61 74 20  of a table that 
16d90 53 51 4c 69 74 65 20 77 69 6c 6c 0a 62 65 20 72  SQLite will.be r
16da0 65 61 64 69 6e 67 2e 20 20 54 68 65 20 49 4e 44  eading.  The IND
16db0 45 58 45 44 20 42 59 20 70 68 72 61 73 65 20 63  EXED BY phrase c
16dc0 61 6e 20 62 65 20 73 65 65 6e 20 69 6e 20 74 68  an be seen in th
16dd0 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74  e following synt
16de0 61 78 0a 64 69 61 67 72 61 6d 73 3a 3c 2f 70 3e  ax.diagrams:</p>
16df0 0a 0a 3c 74 63 6c 3e 0a 42 75 62 62 6c 65 44 69  ..<tcl>.BubbleDi
16e00 61 67 72 61 6d 20 71 75 61 6c 69 66 69 65 64 2d  agram qualified-
16e10 74 61 62 6c 65 2d 6e 61 6d 65 0a 42 75 62 62 6c  table-name.Bubbl
16e20 65 44 69 61 67 72 61 6d 20 73 69 6e 67 6c 65 2d  eDiagram single-
16e30 73 6f 75 72 63 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c  source.</tcl>..<
16e40 70 3e 54 68 65 20 22 49 4e 44 45 58 45 44 20 42  p>The "INDEXED B
16e50 59 20 69 6e 64 65 78 2d 6e 61 6d 65 22 20 63 6c  Y index-name" cl
16e60 61 75 73 65 20 73 70 65 63 69 66 69 65 73 20 74  ause specifies t
16e70 68 61 74 20 74 68 65 20 6e 61 6d 65 64 20 69 6e  hat the named in
16e80 64 65 78 0a 6d 75 73 74 20 62 65 20 75 73 65 64  dex.must be used
16e90 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 6c 6f 6f   in order to loo
16ea0 6b 20 75 70 20 76 61 6c 75 65 73 20 6f 6e 20 74  k up values on t
16eb0 68 65 20 70 72 65 63 65 65 64 69 6e 67 20 74 61  he preceeding ta
16ec0 62 6c 65 2e 0a 49 66 20 69 6e 64 65 78 2d 6e 61  ble..If index-na
16ed0 6d 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73  me does not exis
16ee0 74 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 75  t or cannot be u
16ef0 73 65 64 20 66 6f 72 20 74 68 65 20 71 75 65 72  sed for the quer
16f00 79 2c 20 74 68 65 6e 0a 74 68 65 20 70 72 65 70  y, then.the prep
16f10 61 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 53  aration of the S
16f20 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 66 61 69  QL statement fai
16f30 6c 73 2e 0a 54 68 65 20 22 4e 4f 54 20 49 4e 44  ls..The "NOT IND
16f40 45 58 45 44 22 20 63 6c 61 75 73 65 20 73 70 65  EXED" clause spe
16f50 63 69 66 69 65 73 20 74 68 61 74 20 6e 6f 20 69  cifies that no i
16f60 6e 64 65 78 20 73 68 61 6c 6c 20 62 65 20 75 73  ndex shall be us
16f70 65 64 20 77 68 65 6e 0a 61 63 63 65 73 73 69 6e  ed when.accessin
16f80 67 20 74 68 65 20 70 72 65 63 65 65 64 69 6e 67  g the preceeding
16f90 20 74 61 62 6c 65 2c 20 69 6e 63 6c 75 64 69 6e   table, includin
16fa0 67 20 69 6d 70 6c 69 65 64 20 69 6e 64 69 63 65  g implied indice
16fb0 73 20 63 72 65 61 74 65 20 62 79 0a 55 4e 49 51  s create by.UNIQ
16fc0 55 45 20 61 6e 64 20 50 52 49 4d 41 52 59 20 4b  UE and PRIMARY K
16fd0 45 59 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20  EY constraints. 
16fe0 20 48 6f 77 65 76 65 72 2c 20 74 68 65 20 49 4e   However, the IN
16ff0 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
17000 59 0a 63 61 6e 20 73 74 69 6c 6c 20 62 65 20 75  Y.can still be u
17010 73 65 64 20 74 6f 20 6c 6f 6f 6b 20 75 70 20 65  sed to look up e
17020 6e 74 72 69 65 73 20 65 76 65 6e 20 77 68 65 6e  ntries even when
17030 20 22 4e 4f 54 20 49 4e 44 45 58 45 44 22 20 69   "NOT INDEXED" i
17040 73 20 73 70 65 63 69 66 69 65 64 2e 3c 2f 70 3e  s specified.</p>
17050 0a 0a 3c 70 3e 53 6f 6d 65 20 53 51 4c 20 64 61  ..<p>Some SQL da
17060 74 61 62 61 73 65 20 65 6e 67 69 6e 65 73 20 70  tabase engines p
17070 72 6f 76 69 64 65 20 6e 6f 6e 2d 73 74 61 6e 64  rovide non-stand
17080 61 72 64 20 22 68 69 6e 74 22 20 6d 65 63 68 61  ard "hint" mecha
17090 6e 69 73 6d 73 20 77 68 69 63 68 0a 63 61 6e 20  nisms which.can 
170a0 62 65 20 75 73 65 64 20 74 6f 20 67 69 76 65 20  be used to give 
170b0 74 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69  the query optimi
170c0 7a 65 72 20 63 6c 75 65 73 20 61 62 6f 75 74 20  zer clues about 
170d0 77 68 61 74 20 69 6e 64 69 63 65 73 20 69 74 20  what indices it 
170e0 73 68 6f 75 6c 64 0a 75 73 65 20 66 6f 72 20 61  should.use for a
170f0 20 70 61 72 74 69 63 75 6c 61 72 20 73 74 61 74   particular stat
17100 65 6d 65 6e 74 2e 20 20 54 68 65 20 49 4e 44 45  ement.  The INDE
17110 58 20 42 59 20 63 6c 61 75 73 65 20 6f 66 20 53  X BY clause of S
17120 51 4c 69 74 65 20 69 73 20 0a 3c 65 6d 3e 6e 6f  QLite is .<em>no
17130 74 3c 2f 65 6d 3e 20 61 20 68 69 6e 74 69 6e 67  t</em> a hinting
17140 20 6d 65 63 68 61 6e 69 73 6d 20 61 6e 64 20 69   mechanism and i
17150 74 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20  t should not be 
17160 75 73 65 64 20 61 73 20 73 75 63 68 2e 0a 54 68  used as such..Th
17170 65 20 49 4e 44 45 58 45 44 20 42 59 20 63 6c 61  e INDEXED BY cla
17180 75 73 65 20 64 6f 65 73 20 6e 6f 74 20 67 69 76  use does not giv
17190 65 20 74 68 65 20 6f 70 74 69 6d 69 7a 65 72 20  e the optimizer 
171a0 68 69 6e 74 73 20 61 62 6f 75 74 20 77 68 69 63  hints about whic
171b0 68 20 69 6e 64 65 78 0a 74 6f 20 75 73 65 3b 20  h index.to use; 
171c0 69 74 20 67 69 76 65 73 20 74 68 65 20 6f 70 74  it gives the opt
171d0 69 6d 69 7a 65 72 20 61 20 72 65 71 75 69 72 65  imizer a require
171e0 6d 65 6e 74 20 6f 66 20 77 68 69 63 68 20 69 6e  ment of which in
171f0 64 65 78 20 74 6f 20 75 73 65 2e 0a 49 66 20 74  dex to use..If t
17200 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69 7a  he query optimiz
17210 65 72 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20  er is unable to 
17220 75 73 65 20 74 68 65 20 69 6e 64 65 78 20 73 70  use the index sp
17230 65 63 69 66 69 65 64 20 62 79 20 74 68 65 0a 49  ecified by the.I
17240 4e 44 45 58 20 42 59 20 63 6c 61 75 73 65 2c 20  NDEX BY clause, 
17250 74 68 65 6e 20 74 68 65 20 71 75 65 72 79 20 77  then the query w
17260 69 6c 6c 20 66 61 69 6c 20 77 69 74 68 20 61 6e  ill fail with an
17270 20 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e   error.</p>..<p>
17280 54 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 63  The INDEXED BY c
17290 6c 61 75 73 65 20 69 73 20 3c 65 6d 3e 6e 6f 74  lause is <em>not
172a0 3c 2f 65 6d 3e 20 69 6e 74 65 6e 64 65 64 20 66  </em> intended f
172b0 6f 72 20 75 73 65 20 69 6e 20 74 75 6e 69 6e 67  or use in tuning
172c0 0a 74 68 65 20 70 72 65 66 6f 72 6d 61 6e 63 65  .the preformance
172d0 20 6f 66 20 61 20 71 75 65 72 79 2e 20 20 54 68   of a query.  Th
172e0 65 20 69 6e 74 65 6e 74 20 6f 66 20 74 68 65 20  e intent of the 
172f0 49 4e 44 45 58 45 44 20 42 59 20 63 6c 61 75 73  INDEXED BY claus
17300 65 20 69 73 0a 74 6f 20 72 61 69 73 65 20 61 20  e is.to raise a 
17310 72 75 6e 2d 74 69 6d 65 20 65 72 72 6f 72 20 69  run-time error i
17320 66 20 61 20 73 63 68 65 6d 61 20 63 68 61 6e 67  f a schema chang
17330 65 2c 20 73 75 63 68 20 61 73 20 64 72 6f 70 70  e, such as dropp
17340 69 6e 67 20 6f 72 0a 63 72 65 61 74 69 6e 67 20  ing or.creating 
17350 61 6e 20 69 6e 64 65 78 2c 20 63 61 75 73 65 73  an index, causes
17360 20 74 68 65 20 71 75 65 72 79 20 70 6c 61 6e 20   the query plan 
17370 66 6f 72 20 61 20 74 69 6d 65 2d 73 65 6e 73 69  for a time-sensi
17380 74 69 76 65 20 71 75 65 72 79 0a 74 6f 20 63 68  tive query.to ch
17390 61 6e 67 65 2e 20 20 54 68 65 20 49 4e 44 45 58  ange.  The INDEX
173a0 45 44 20 42 59 20 63 6c 61 75 73 65 20 69 73 20  ED BY clause is 
173b0 64 65 73 69 67 6e 65 64 20 74 6f 20 68 65 6c 70  designed to help
173c0 20 64 65 74 65 63 74 0a 75 6e 64 65 73 69 72 61   detect.undesira
173d0 62 6c 65 20 71 75 65 72 79 20 70 6c 61 6e 20 63  ble query plan c
173e0 68 61 6e 67 65 73 20 64 75 72 69 6e 67 20 72 65  hanges during re
173f0 67 72 65 73 73 69 6f 6e 20 74 65 73 74 69 6e 67  gression testing
17400 2e 0a 44 65 76 65 6c 6f 70 65 72 73 20 61 72 65  ..Developers are
17410 20 61 64 6d 6f 6e 69 73 68 65 64 20 74 6f 20 6f   admonished to o
17420 6d 69 74 20 61 6c 6c 20 75 73 65 20 6f 66 20 49  mit all use of I
17430 4e 44 45 58 45 44 20 42 59 20 64 75 72 69 6e 67  NDEXED BY during
17440 0a 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 65 73  .application des
17450 69 67 6e 2c 20 69 6d 70 6c 65 6d 65 6e 74 61 74  ign, implementat
17460 69 6f 6e 2c 20 74 65 73 74 69 6e 67 2c 20 61 6e  ion, testing, an
17470 64 20 74 75 6e 69 6e 67 2e 20 20 49 66 0a 49 4e  d tuning.  If.IN
17480 44 45 58 45 44 20 42 59 20 69 73 20 74 6f 20 62  DEXED BY is to b
17490 65 20 75 73 65 64 20 61 74 20 61 6c 6c 2c 20 69  e used at all, i
174a0 74 20 73 68 6f 75 6c 64 20 62 65 20 69 6e 73 65  t should be inse
174b0 72 74 65 64 20 61 74 20 74 68 65 20 76 65 72 79  rted at the very
174c0 0a 65 6e 64 20 6f 66 20 74 68 65 20 64 65 76 65  .end of the deve
174d0 6c 6f 70 6d 65 6e 74 20 70 72 6f 63 65 73 73 20  lopment process 
174e0 77 68 65 6e 20 22 6c 6f 63 6b 69 6e 67 20 64 6f  when "locking do
174f0 77 6e 22 20 61 20 64 65 73 69 67 6e 2e 3c 2f 70  wn" a design.</p
17500 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23  >..<tcl>.#######
17510 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17520 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17530 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17540 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17550 23 23 23 23 23 23 0a 23 20 41 20 6c 69 73 74 20  ######.# A list 
17560 6f 66 20 6b 65 79 77 6f 72 64 73 2e 20 20 41 20  of keywords.  A 
17570 61 73 74 65 72 69 73 6b 20 6f 63 63 75 72 73 20  asterisk occurs 
17580 61 66 74 65 72 20 74 68 65 20 6b 65 79 77 6f 72  after the keywor
17590 64 20 69 66 20 69 74 20 69 73 20 6f 6e 0a 23 20  d if it is on.# 
175a0 74 68 65 20 66 61 6c 6c 62 61 63 6b 20 6c 69 73  the fallback lis
175b0 74 2e 0a 23 0a 73 65 74 20 6b 65 79 77 6f 72 64  t..#.set keyword
175c0 5f 6c 69 73 74 20 5b 6c 73 6f 72 74 20 7b 0a 20  _list [lsort {. 
175d0 20 20 41 42 4f 52 54 2a 0a 20 20 20 41 44 44 0a    ABORT*.   ADD.
175e0 20 20 20 41 46 54 45 52 2a 0a 20 20 20 41 4c 4c     AFTER*.   ALL
175f0 0a 20 20 20 41 4c 54 45 52 0a 20 20 20 41 4e 41  .   ALTER.   ANA
17600 4c 59 5a 45 2a 0a 20 20 20 41 4e 44 0a 20 20 20  LYZE*.   AND.   
17610 41 53 0a 20 20 20 41 53 43 2a 0a 20 20 20 41 54  AS.   ASC*.   AT
17620 54 41 43 48 2a 0a 20 20 20 41 55 54 4f 49 4e 43  TACH*.   AUTOINC
17630 52 45 4d 45 4e 54 0a 20 20 20 42 45 46 4f 52 45  REMENT.   BEFORE
17640 2a 0a 20 20 20 42 45 47 49 4e 2a 0a 20 20 20 42  *.   BEGIN*.   B
17650 45 54 57 45 45 4e 0a 20 20 20 42 59 2a 0a 20 20  ETWEEN.   BY*.  
17660 20 43 41 53 43 41 44 45 2a 0a 20 20 20 43 41 53   CASCADE*.   CAS
17670 45 0a 20 20 20 43 41 53 54 2a 0a 20 20 20 43 48  E.   CAST*.   CH
17680 45 43 4b 0a 20 20 20 43 4f 4c 4c 41 54 45 0a 20  ECK.   COLLATE. 
17690 20 20 43 4f 4c 55 4d 4e 2a 0a 20 20 20 43 4f 4d    COLUMN*.   COM
176a0 4d 49 54 0a 20 20 20 43 4f 4e 46 4c 49 43 54 2a  MIT.   CONFLICT*
176b0 0a 20 20 20 43 4f 4e 53 54 52 41 49 4e 54 0a 20  .   CONSTRAINT. 
176c0 20 20 43 52 45 41 54 45 0a 20 20 20 43 52 4f 53    CREATE.   CROS
176d0 53 0a 20 20 20 43 55 52 52 45 4e 54 5f 44 41 54  S.   CURRENT_DAT
176e0 45 2a 0a 20 20 20 43 55 52 52 45 4e 54 5f 54 49  E*.   CURRENT_TI
176f0 4d 45 2a 0a 20 20 20 43 55 52 52 45 4e 54 5f 54  ME*.   CURRENT_T
17700 49 4d 45 53 54 41 4d 50 2a 0a 20 20 20 44 41 54  IMESTAMP*.   DAT
17710 41 42 41 53 45 2a 0a 20 20 20 44 45 46 41 55 4c  ABASE*.   DEFAUL
17720 54 0a 20 20 20 44 45 46 45 52 52 45 44 2a 0a 20  T.   DEFERRED*. 
17730 20 20 44 45 46 45 52 52 41 42 4c 45 0a 20 20 20    DEFERRABLE.   
17740 44 45 4c 45 54 45 0a 20 20 20 44 45 53 43 2a 0a  DELETE.   DESC*.
17750 20 20 20 44 45 54 41 43 48 2a 0a 20 20 20 44 49     DETACH*.   DI
17760 53 54 49 4e 43 54 0a 20 20 20 44 52 4f 50 0a 20  STINCT.   DROP. 
17770 20 20 45 4e 44 2a 0a 20 20 20 45 41 43 48 2a 0a    END*.   EACH*.
17780 20 20 20 45 4c 53 45 0a 20 20 20 45 53 43 41 50     ELSE.   ESCAP
17790 45 0a 20 20 20 45 58 43 45 50 54 0a 20 20 20 45  E.   EXCEPT.   E
177a0 58 43 4c 55 53 49 56 45 2a 0a 20 20 20 45 58 49  XCLUSIVE*.   EXI
177b0 53 54 53 0a 20 20 20 45 58 50 4c 41 49 4e 2a 0a  STS.   EXPLAIN*.
177c0 20 20 20 46 41 49 4c 2a 0a 20 20 20 46 4f 52 2a     FAIL*.   FOR*
177d0 0a 20 20 20 46 4f 52 45 49 47 4e 0a 20 20 20 46  .   FOREIGN.   F
177e0 52 4f 4d 0a 20 20 20 46 55 4c 4c 0a 20 20 20 47  ROM.   FULL.   G
177f0 4c 4f 42 2a 0a 20 20 20 47 52 4f 55 50 0a 20 20  LOB*.   GROUP.  
17800 20 48 41 56 49 4e 47 0a 20 20 20 49 46 2a 0a 20   HAVING.   IF*. 
17810 20 20 49 47 4e 4f 52 45 2a 0a 20 20 20 49 4d 4d    IGNORE*.   IMM
17820 45 44 49 41 54 45 2a 0a 20 20 20 49 4e 0a 20 20  EDIATE*.   IN.  
17830 20 49 4e 44 45 58 0a 20 20 20 49 4e 44 45 58 45   INDEX.   INDEXE
17840 44 0a 20 20 20 49 4e 49 54 49 41 4c 4c 59 2a 0a  D.   INITIALLY*.
17850 20 20 20 49 4e 4e 45 52 0a 20 20 20 49 4e 53 45     INNER.   INSE
17860 52 54 0a 20 20 20 49 4e 53 54 45 41 44 2a 0a 20  RT.   INSTEAD*. 
17870 20 20 49 4e 54 45 52 53 45 43 54 0a 20 20 20 49    INTERSECT.   I
17880 4e 54 4f 0a 20 20 20 49 53 0a 20 20 20 49 53 4e  NTO.   IS.   ISN
17890 55 4c 4c 0a 20 20 20 4a 4f 49 4e 0a 20 20 20 4b  ULL.   JOIN.   K
178a0 45 59 2a 0a 20 20 20 4c 45 46 54 0a 20 20 20 4c  EY*.   LEFT.   L
178b0 49 4b 45 2a 0a 20 20 20 4c 49 4d 49 54 0a 20 20  IKE*.   LIMIT.  
178c0 20 4d 41 54 43 48 2a 0a 20 20 20 4e 41 54 55 52   MATCH*.   NATUR
178d0 41 4c 0a 20 20 20 4e 4f 54 0a 20 20 20 4e 4f 54  AL.   NOT.   NOT
178e0 4e 55 4c 4c 0a 20 20 20 4e 55 4c 4c 0a 20 20 20  NULL.   NULL.   
178f0 4f 46 2a 0a 20 20 20 4f 46 46 53 45 54 2a 0a 20  OF*.   OFFSET*. 
17900 20 20 4f 4e 0a 20 20 20 4f 52 0a 20 20 20 4f 52    ON.   OR.   OR
17910 44 45 52 0a 20 20 20 4f 55 54 45 52 0a 20 20 20  DER.   OUTER.   
17920 50 4c 41 4e 2a 0a 20 20 20 50 52 41 47 4d 41 2a  PLAN*.   PRAGMA*
17930 0a 20 20 20 50 52 49 4d 41 52 59 0a 20 20 20 51  .   PRIMARY.   Q
17940 55 45 52 59 2a 0a 20 20 20 52 41 49 53 45 2a 0a  UERY*.   RAISE*.
17950 20 20 20 52 45 46 45 52 45 4e 43 45 53 0a 20 20     REFERENCES.  
17960 20 52 45 47 45 58 50 2a 0a 20 20 20 52 45 49 4e   REGEXP*.   REIN
17970 44 45 58 2a 0a 20 20 20 52 45 4c 45 41 53 45 2a  DEX*.   RELEASE*
17980 0a 20 20 20 52 45 4e 41 4d 45 2a 0a 20 20 20 52  .   RENAME*.   R
17990 45 50 4c 41 43 45 2a 0a 20 20 20 52 45 53 54 52  EPLACE*.   RESTR
179a0 49 43 54 2a 0a 20 20 20 52 49 47 48 54 0a 20 20  ICT*.   RIGHT.  
179b0 20 52 4f 4c 4c 42 41 43 4b 0a 20 20 20 52 4f 57   ROLLBACK.   ROW
179c0 2a 0a 20 20 20 53 41 56 45 50 4f 49 4e 54 2a 0a  *.   SAVEPOINT*.
179d0 20 20 20 53 45 4c 45 43 54 0a 20 20 20 53 45 54     SELECT.   SET
179e0 0a 20 20 20 54 41 42 4c 45 0a 20 20 20 54 45 4d  .   TABLE.   TEM
179f0 50 2a 0a 20 20 20 54 45 4d 50 4f 52 41 52 59 2a  P*.   TEMPORARY*
17a00 0a 20 20 20 54 48 45 4e 0a 20 20 20 54 4f 0a 20  .   THEN.   TO. 
17a10 20 20 54 52 41 4e 53 41 43 54 49 4f 4e 0a 20 20    TRANSACTION.  
17a20 20 54 52 49 47 47 45 52 2a 0a 20 20 20 55 4e 49   TRIGGER*.   UNI
17a30 4f 4e 0a 20 20 20 55 4e 49 51 55 45 0a 20 20 20  ON.   UNIQUE.   
17a40 55 50 44 41 54 45 0a 20 20 20 55 53 49 4e 47 0a  UPDATE.   USING.
17a50 20 20 20 56 41 43 55 55 4d 2a 0a 20 20 20 56 41     VACUUM*.   VA
17a60 4c 55 45 53 0a 20 20 20 56 49 45 57 2a 0a 20 20  LUES.   VIEW*.  
17a70 20 56 49 52 54 55 41 4c 2a 0a 20 20 20 57 48 45   VIRTUAL*.   WHE
17a80 4e 0a 20 20 20 57 48 45 52 45 0a 7d 5d 0a 0a 68  N.   WHERE.}]..h
17a90 64 5f 70 75 74 73 20 7b 3c 44 49 56 20 63 6c 61  d_puts {<DIV cla
17aa0 73 73 3d 22 70 64 66 5f 73 65 63 74 69 6f 6e 22  ss="pdf_section"
17ab0 3e 7d 0a 53 65 63 74 69 6f 6e 20 7b 53 51 4c 69  >}.Section {SQLi
17ac0 74 65 20 4b 65 79 77 6f 72 64 73 7d 20 6b 65 79  te Keywords} key
17ad0 77 6f 72 64 73 20 7b 7b 53 51 4c 20 6b 65 79 77  words {{SQL keyw
17ae0 6f 72 64 7d 20 7b 53 51 4c 20 6b 65 79 77 6f 72  ord} {SQL keywor
17af0 64 73 7d 7d 0a 68 64 5f 70 75 74 73 20 7b 3c 2f  ds}}.hd_puts {</
17b00 44 49 56 3e 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  DIV>}.</tcl>..<p
17b10 3e 54 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72  >The SQL standar
17b20 64 20 73 70 65 63 69 66 69 65 73 20 61 20 68 75  d specifies a hu
17b30 67 65 20 6e 75 6d 62 65 72 20 6f 66 20 6b 65 79  ge number of key
17b40 77 6f 72 64 73 20 77 68 69 63 68 20 6d 61 79 20  words which may 
17b50 6e 6f 74 0a 62 65 20 75 73 65 64 20 61 73 20 74  not.be used as t
17b60 68 65 20 6e 61 6d 65 73 20 6f 66 20 74 61 62 6c  he names of tabl
17b70 65 73 2c 20 69 6e 64 69 63 65 73 2c 20 63 6f 6c  es, indices, col
17b80 75 6d 6e 73 2c 20 64 61 74 61 62 61 73 65 73 2c  umns, databases,
17b90 20 75 73 65 72 2d 64 65 66 69 6e 65 64 0a 66 75   user-defined.fu
17ba0 6e 63 74 69 6f 6e 73 2c 20 63 6f 6c 6c 61 74 69  nctions, collati
17bb0 6f 6e 73 2c 20 76 69 72 74 75 61 6c 20 74 61 62  ons, virtual tab
17bc0 6c 65 20 6d 6f 64 75 6c 65 73 2c 20 6f 72 20 61  le modules, or a
17bd0 6e 79 20 6f 74 68 65 72 20 6e 61 6d 65 64 20 6f  ny other named o
17be0 62 6a 65 63 74 2e 0a 54 68 65 20 6c 69 73 74 20  bject..The list 
17bf0 6f 66 20 6b 65 79 77 6f 72 64 73 20 69 73 20 73  of keywords is s
17c00 6f 20 6c 6f 6e 67 20 74 68 61 74 20 66 65 77 20  o long that few 
17c10 70 65 6f 70 6c 65 20 63 61 6e 20 72 65 6d 65 6d  people can remem
17c20 62 65 72 20 74 68 65 6d 20 61 6c 6c 2e 0a 46 6f  ber them all..Fo
17c30 72 20 6d 6f 73 74 20 53 51 4c 20 63 6f 64 65 2c  r most SQL code,
17c40 20 79 6f 75 72 20 73 61 66 65 73 74 20 62 65 74   your safest bet
17c50 20 69 73 20 74 6f 20 6e 65 76 65 72 20 75 73 65   is to never use
17c60 20 61 6e 79 20 45 6e 67 6c 69 73 68 20 6c 61 6e   any English lan
17c70 67 75 61 67 65 0a 77 6f 72 64 20 61 73 20 74 68  guage.word as th
17c80 65 20 6e 61 6d 65 20 6f 66 20 61 20 75 73 65 72  e name of a user
17c90 2d 64 65 66 69 6e 65 64 20 6f 62 6a 65 63 74 2e  -defined object.
17ca0 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 79 6f 75 20  </p>..<p>If you 
17cb0 77 61 6e 74 20 74 6f 20 75 73 65 20 61 20 6b 65  want to use a ke
17cc0 79 77 6f 72 64 20 61 73 20 61 20 6e 61 6d 65 2c  yword as a name,
17cd0 20 79 6f 75 20 6e 65 65 64 20 74 6f 20 71 75 6f   you need to quo
17ce0 74 65 20 69 74 2e 20 20 54 68 65 72 65 0a 61 72  te it.  There.ar
17cf0 65 20 74 68 72 65 65 20 77 61 79 73 20 6f 66 20  e three ways of 
17d00 71 75 6f 74 69 6e 67 20 6b 65 79 77 6f 72 64 73  quoting keywords
17d10 20 69 6e 20 53 51 4c 69 74 65 3a 3c 2f 70 3e 0a   in SQLite:</p>.
17d20 0a 3c 70 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  .<p>.<blockquote
17d30 3e 0a 3c 74 61 62 6c 65 3e 0a 3c 74 72 3e 09 3c  >.<table>.<tr>.<
17d40 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
17d50 3c 62 3e 27 6b 65 79 77 6f 72 64 27 3c 2f 62 3e  <b>'keyword'</b>
17d60 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22  </td><td width="
17d70 32 30 22 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41  20"></td>..<td>A
17d80 20 6b 65 79 77 6f 72 64 20 69 6e 20 73 69 6e 67   keyword in sing
17d90 6c 65 20 71 75 6f 74 65 73 20 69 73 20 61 20 73  le quotes is a s
17da0 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 2e 3c 2f  tring literal.</
17db0 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 09 3c  td></tr>..<tr>.<
17dc0 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
17dd0 3c 62 3e 22 6b 65 79 77 6f 72 64 22 3c 2f 62 3e  <b>"keyword"</b>
17de0 3c 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09  </td><td></td>..
17df0 3c 74 64 3e 41 20 6b 65 79 77 6f 72 64 20 69 6e  <td>A keyword in
17e00 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 73 20 69   double-quotes i
17e10 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 3c  s an identifier<
17e20 2f 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 09  /td></tr>..<tr>.
17e30 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
17e40 3e 3c 62 3e 26 23 39 31 3b 6b 65 79 77 6f 72 64  ><b>&#91;keyword
17e50 26 23 39 33 3b 3c 2f 62 3e 3c 2f 74 64 3e 3c 74  &#93;</b></td><t
17e60 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20 6b  d></td>..<td>A k
17e70 65 79 77 6f 72 64 20 65 6e 63 6c 6f 73 65 64 20  eyword enclosed 
17e80 69 6e 20 73 71 75 61 72 65 20 62 72 61 63 6b 65  in square bracke
17e90 74 73 20 69 73 20 0a 20 20 20 20 20 20 20 20 61  ts is .        a
17ea0 6e 20 69 64 65 6e 74 69 66 69 65 72 2e 20 20 54  n identifier.  T
17eb0 68 69 73 20 69 73 20 6e 6f 74 20 73 74 61 6e 64  his is not stand
17ec0 61 72 64 20 53 51 4c 2e 20 20 54 68 69 73 20 71  ard SQL.  This q
17ed0 75 6f 74 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d  uoting mechanism
17ee0 0a 20 20 20 20 20 20 20 20 69 73 20 75 73 65 64  .        is used
17ef0 20 62 79 20 4d 53 20 41 63 63 65 73 73 20 61 6e   by MS Access an
17f00 64 20 53 51 4c 20 53 65 72 76 65 72 20 61 6e 64  d SQL Server and
17f10 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20   is included in 
17f20 53 51 4c 69 74 65 20 66 6f 72 0a 20 20 20 20 20  SQLite for.     
17f30 20 20 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79     compatibility
17f40 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72  .</td></tr>..<tr
17f50 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
17f60 70 22 3e 3c 62 3e 26 23 39 36 3b 6b 65 79 77 6f  p"><b>&#96;keywo
17f70 72 64 26 23 39 36 3b 3c 2f 62 3e 3c 2f 74 64 3e  rd&#96;</b></td>
17f80 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41  <td></td>..<td>A
17f90 20 6b 65 79 77 6f 72 64 20 65 6e 63 6c 6f 73 65   keyword enclose
17fa0 64 20 69 6e 20 67 72 61 76 65 20 61 63 63 65 6e  d in grave accen
17fb0 74 73 20 28 41 53 43 49 49 20 63 6f 64 65 20 39  ts (ASCII code 9
17fc0 36 29 20 69 73 20 0a 20 20 20 20 20 20 20 20 61  6) is .        a
17fd0 6e 20 69 64 65 6e 74 69 66 69 65 72 2e 20 20 54  n identifier.  T
17fe0 68 69 73 20 69 73 20 6e 6f 74 20 73 74 61 6e 64  his is not stand
17ff0 61 72 64 20 53 51 4c 2e 20 20 54 68 69 73 20 71  ard SQL.  This q
18000 75 6f 74 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d  uoting mechanism
18010 0a 20 20 20 20 20 20 20 20 69 73 20 75 73 65 64  .        is used
18020 20 62 79 20 4d 79 53 51 4c 20 61 6e 64 20 69 73   by MySQL and is
18030 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 53 51 4c   included in SQL
18040 69 74 65 20 66 6f 72 0a 20 20 20 20 20 20 20 20  ite for.        
18050 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 3c 2f  compatibility.</
18060 74 64 3e 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65  td></tr>.</table
18070 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >.</blockquote>.
18080 3c 2f 70 3e 0a 0a 3c 70 3e 46 6f 72 20 72 65 73  </p>..<p>For res
18090 69 6c 69 65 6e 63 65 20 77 68 65 6e 20 63 6f 6e  ilience when con
180a0 66 72 6f 6e 74 65 64 20 77 69 74 68 20 68 69 73  fronted with his
180b0 74 6f 72 69 63 61 6c 20 53 51 4c 20 73 74 61 74  torical SQL stat
180c0 65 6d 65 6e 74 73 2c 20 53 51 4c 69 74 65 0a 77  ements, SQLite.w
180d0 69 6c 6c 20 73 6f 6d 65 74 69 6d 65 73 20 62 65  ill sometimes be
180e0 6e 64 20 74 68 65 20 71 75 6f 74 69 6e 67 20 72  nd the quoting r
180f0 75 6c 65 73 20 61 62 6f 76 65 3a 3c 2f 70 3e 0a  ules above:</p>.
18100 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 70 3e 49 66 20  .<ul>.<li><p>If 
18110 61 20 6b 65 79 77 6f 72 64 20 69 6e 20 73 69 6e  a keyword in sin
18120 67 6c 65 0a 71 75 6f 74 65 73 20 28 65 78 3a 20  gle.quotes (ex: 
18130 3c 62 3e 27 6b 65 79 27 3c 2f 62 3e 20 6f 72 20  <b>'key'</b> or 
18140 3c 62 3e 27 67 6c 6f 62 27 3c 2f 62 3e 29 20 69  <b>'glob'</b>) i
18150 73 20 75 73 65 64 20 69 6e 20 61 20 63 6f 6e 74  s used in a cont
18160 65 78 74 20 77 68 65 72 65 0a 61 6e 20 69 64 65  ext where.an ide
18170 6e 74 69 66 69 65 72 20 69 73 20 61 6c 6c 6f 77  ntifier is allow
18180 65 64 20 62 75 74 20 77 68 65 72 65 20 61 20 73  ed but where a s
18190 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 20 69 73  tring literal is
181a0 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2c 20 74 68   not allowed, th
181b0 65 6e 0a 74 68 65 20 74 6f 6b 65 6e 20 69 73 20  en.the token is 
181c0 75 6e 64 65 72 73 74 6f 6f 64 20 74 6f 20 62 65  understood to be
181d0 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 69   an identifier i
181e0 6e 73 74 65 61 64 20 6f 66 20 61 20 73 74 72 69  nstead of a stri
181f0 6e 67 20 6c 69 74 65 72 61 6c 2e 0a 3c 2f 70 3e  ng literal..</p>
18200 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 49 66  </li>..<li><p>If
18210 20 61 20 6b 65 79 77 6f 72 64 20 69 6e 20 64 6f   a keyword in do
18220 75 62 6c 65 0a 71 75 6f 74 65 73 20 28 65 78 3a  uble.quotes (ex:
18230 20 3c 62 3e 22 6b 65 79 22 3c 2f 62 3e 20 6f 72   <b>"key"</b> or
18240 20 3c 62 3e 22 67 6c 6f 62 22 3c 2f 62 3e 29 20   <b>"glob"</b>) 
18250 69 73 20 75 73 65 64 20 69 6e 20 61 20 63 6f 6e  is used in a con
18260 74 65 78 74 20 77 68 65 72 65 0a 69 74 20 63 61  text where.it ca
18270 6e 6e 6f 74 20 62 65 20 72 65 73 6f 6c 76 65 64  nnot be resolved
18280 20 74 6f 20 61 6e 20 69 6e 64 65 6e 74 69 66 69   to an indentifi
18290 65 72 20 62 75 74 20 77 68 65 72 65 20 61 20 73  er but where a s
182a0 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 0a 69 73  tring literal.is
182b0 20 61 6c 6c 6f 77 65 64 2c 20 74 68 65 6e 20 74   allowed, then t
182c0 68 65 20 74 6f 6b 65 6e 20 69 73 20 75 6e 64 65  he token is unde
182d0 72 73 74 6f 6f 64 20 74 6f 20 62 65 20 61 20 73  rstood to be a s
182e0 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 20 69 6e  tring literal in
182f0 73 74 65 61 64 0a 6f 66 20 61 6e 20 69 64 65 6e  stead.of an iden
18300 74 69 66 65 72 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a  tifer.</p></li>.
18310 3c 2f 75 6c 3e 0a 0a 3c 70 3e 50 72 6f 67 72 61  </ul>..<p>Progra
18320 6d 6d 65 72 73 20 61 72 65 20 63 61 75 74 69 6f  mmers are cautio
18330 6e 65 64 20 6e 6f 74 20 74 6f 20 75 73 65 20 74  ned not to use t
18340 68 65 20 74 77 6f 20 65 78 63 65 70 74 69 6f 6e  he two exception
18350 73 20 64 65 73 63 72 69 62 65 64 20 69 6e 0a 74  s described in.t
18360 68 65 20 70 72 65 76 69 6f 75 73 20 62 75 6c 6c  he previous bull
18370 65 74 73 2e 20 20 57 65 20 65 6d 70 68 61 73 69  ets.  We emphasi
18380 7a 65 20 74 68 61 74 20 74 68 65 79 20 65 78 69  ze that they exi
18390 73 74 20 6f 6e 6c 79 20 73 6f 20 74 68 61 74 20  st only so that 
183a0 6f 6c 64 0a 61 6e 64 20 69 6c 6c 2d 66 6f 72 6d  old.and ill-form
183b0 65 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ed SQL statement
183c0 73 20 77 69 6c 6c 20 72 75 6e 20 63 6f 72 72 65  s will run corre
183d0 63 74 6c 79 2e 20 20 46 75 74 75 72 65 20 76 65  ctly.  Future ve
183e0 72 73 69 6f 6e 73 20 6f 66 0a 53 51 4c 69 74 65  rsions of.SQLite
183f0 20 6d 69 67 68 74 20 63 68 61 6e 67 65 20 74 6f   might change to
18400 20 72 61 69 73 65 20 65 72 72 6f 72 73 20 69 6e   raise errors in
18410 73 74 65 61 64 20 6f 66 20 61 63 63 65 70 74 69  stead of accepti
18420 6e 67 20 74 68 65 20 6d 61 6c 66 6f 72 6d 65 64  ng the malformed
18430 0a 73 74 61 74 65 6d 65 6e 74 73 20 63 6f 76 65  .statements cove
18440 72 65 64 20 62 79 20 74 68 65 20 65 78 63 65 70  red by the excep
18450 74 69 6f 6e 73 20 61 62 6f 76 65 2e 3c 2f 70 3e  tions above.</p>
18460 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 69 73 20 65  ..<p>SQLite is e
18470 78 74 65 6e 64 65 64 20 74 6f 20 61 6c 6c 6f 77  xtended to allow
18480 20 6d 61 6e 79 20 6b 65 79 77 6f 72 64 73 20 74   many keywords t
18490 6f 20 62 65 20 75 73 65 64 20 75 6e 71 75 6f 74  o be used unquot
184a0 65 64 0a 61 73 20 74 68 65 20 6e 61 6d 65 73 20  ed.as the names 
184b0 6f 66 20 64 61 74 61 62 61 73 65 73 2c 20 74 61  of databases, ta
184c0 62 6c 65 73 2c 20 69 6e 64 69 63 65 73 2c 20 74  bles, indices, t
184d0 72 69 67 67 65 72 73 2c 20 76 69 65 77 73 2c 20  riggers, views, 
184e0 63 6f 6c 75 6d 6e 73 2c 0a 75 73 65 72 2d 64 65  columns,.user-de
184f0 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 73 2c  fined functions,
18500 20 63 6f 6c 6c 61 74 69 6f 6e 73 2c 20 61 74 74   collations, att
18510 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73 2c  ached databases,
18520 20 61 6e 64 20 76 69 72 74 75 61 6c 0a 66 75 6e   and virtual.fun
18530 63 74 69 6f 6e 20 6d 6f 64 75 6c 65 73 2e 0a 49  ction modules..I
18540 6e 20 74 68 65 20 6c 69 73 74 20 6f 66 20 6b 65  n the list of ke
18550 79 77 6f 72 64 73 20 74 68 61 74 20 66 6f 6c 6c  ywords that foll
18560 6f 77 73 2c 20 74 68 6f 73 65 20 74 68 61 74 20  ows, those that 
18570 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 69  can be used as i
18580 64 65 6e 74 69 66 69 65 72 73 0a 61 72 65 20 73  dentifiers.are s
18590 68 6f 77 6e 20 69 6e 20 61 6e 20 69 74 61 6c 69  hown in an itali
185a0 63 20 66 6f 6e 74 2e 20 20 4b 65 79 77 6f 72 64  c font.  Keyword
185b0 73 20 74 68 61 74 20 6d 75 73 74 20 62 65 20 71  s that must be q
185c0 75 6f 74 65 64 20 69 6e 20 6f 72 64 65 72 20 74  uoted in order t
185d0 6f 20 62 65 0a 75 73 65 64 20 61 73 20 69 64 65  o be.used as ide
185e0 6e 74 69 66 69 65 72 73 20 61 72 65 20 73 68 6f  ntifiers are sho
185f0 77 6e 20 69 6e 20 62 6f 6c 64 2e 3c 2f 70 3e 0a  wn in bold.</p>.
18600 0a 3c 70 3e 0a 53 51 4c 69 74 65 20 61 64 64 73  .<p>.SQLite adds
18610 20 6e 65 77 20 6b 65 79 77 6f 72 64 73 20 66 72   new keywords fr
18620 6f 6d 20 74 69 6d 65 20 74 6f 20 74 69 6d 65 20  om time to time 
18630 77 68 65 6e 20 69 74 20 74 61 6b 65 73 20 6f 6e  when it takes on
18640 20 6e 65 77 20 66 65 61 74 75 72 65 73 2e 0a 53   new features..S
18650 6f 20 74 6f 20 70 72 65 76 65 6e 74 20 79 6f 75  o to prevent you
18660 72 20 63 6f 64 65 20 66 72 6f 6d 20 62 65 69 6e  r code from bein
18670 67 20 62 72 6f 6b 65 6e 20 62 79 20 66 75 74 75  g broken by futu
18680 72 65 20 65 6e 68 61 6e 63 65 6d 65 6e 74 73 2c  re enhancements,
18690 20 79 6f 75 20 73 68 6f 75 6c 64 0a 6e 6f 72 6d   you should.norm
186a0 61 6c 6c 79 20 71 75 6f 74 65 20 61 6e 79 20 69  ally quote any i
186b0 6e 64 65 6e 74 69 66 69 65 72 20 74 68 61 74 20  ndentifier that 
186c0 69 73 20 61 6e 20 45 6e 67 6c 69 73 68 20 6c 61  is an English la
186d0 6e 67 75 61 67 65 20 77 6f 72 64 2c 20 65 76 65  nguage word, eve
186e0 6e 20 69 66 0a 79 6f 75 20 64 6f 20 6e 6f 74 20  n if.you do not 
186f0 68 61 76 65 20 74 6f 2e 0a 3c 2f 70 3e 0a 0a 3c  have to..</p>..<
18700 70 3e 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  p>.The following
18710 20 61 72 65 20 74 68 65 20 6b 65 79 77 6f 72 64   are the keyword
18720 73 20 63 75 72 72 65 6e 74 6c 79 20 72 65 63 6f  s currently reco
18730 67 6e 69 7a 65 64 20 62 79 20 53 51 4c 69 74 65  gnized by SQLite
18740 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  :.</p>..<blockqu
18750 6f 74 65 3e 0a 3c 74 61 62 6c 65 20 77 69 64 74  ote>.<table widt
18760 68 3d 22 31 30 30 25 22 20 63 6c 61 73 73 3d 22  h="100%" class="
18770 70 64 66 5f 6b 65 79 77 6f 72 64 73 22 3e 0a 3c  pdf_keywords">.<
18780 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 6c  tr>.<td align="l
18790 65 66 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70  eft" valign="top
187a0 22 20 77 69 64 74 68 3d 22 32 30 25 22 3e 0a 0a  " width="20%">..
187b0 3c 74 63 6c 3e 0a 73 65 74 20 6e 20 5b 6c 6c 65  <tcl>.set n [lle
187c0 6e 67 74 68 20 24 6b 65 79 77 6f 72 64 5f 6c 69  ngth $keyword_li
187d0 73 74 5d 0a 73 65 74 20 6e 43 6f 6c 20 35 0a 73  st].set nCol 5.s
187e0 65 74 20 6e 52 6f 77 20 5b 65 78 70 72 20 7b 28  et nRow [expr {(
187f0 24 6e 2b 24 6e 43 6f 6c 2d 31 29 2f 24 6e 43 6f  $n+$nCol-1)/$nCo
18800 6c 7d 5d 0a 73 65 74 20 69 20 30 0a 66 6f 72 65  l}].set i 0.fore
18810 61 63 68 20 77 6f 72 64 20 24 6b 65 79 77 6f 72  ach word $keywor
18820 64 5f 6c 69 73 74 20 7b 0a 20 20 69 66 20 7b 5b  d_list {.  if {[
18830 73 74 72 69 6e 67 20 69 6e 64 65 78 20 24 77 6f  string index $wo
18840 72 64 20 65 6e 64 5d 3d 3d 22 2a 22 7d 20 7b 0a  rd end]=="*"} {.
18850 20 20 20 20 73 65 74 20 77 6f 72 64 20 5b 73 74      set word [st
18860 72 69 6e 67 20 72 61 6e 67 65 20 24 77 6f 72 64  ring range $word
18870 20 30 20 65 6e 64 2d 31 5d 0a 20 20 20 20 73 65   0 end-1].    se
18880 74 20 66 6f 6e 74 20 69 0a 20 20 7d 20 65 6c 73  t font i.  } els
18890 65 20 7b 0a 20 20 20 20 73 65 74 20 66 6f 6e 74  e {.    set font
188a0 20 62 0a 20 20 7d 0a 20 20 69 66 20 7b 24 69 3d   b.  }.  if {$i=
188b0 3d 24 6e 52 6f 77 7d 20 7b 0a 20 20 20 20 68 64  =$nRow} {.    hd
188c0 5f 70 75 74 73 20 22 3c 2f 74 64 3e 3c 74 64 20  _puts "</td><td 
188d0 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 20 61  valign=\"top\" a
188e0 6c 69 67 6e 3d 5c 22 6c 65 66 74 5c 22 20 77 69  lign=\"left\" wi
188f0 64 74 68 3d 5c 22 32 30 25 5c 22 3e 22 0a 20 20  dth=\"20%\">".  
18900 20 20 73 65 74 20 69 20 31 0a 20 20 7d 20 65 6c    set i 1.  } el
18910 73 65 20 7b 0a 20 20 20 20 69 6e 63 72 20 69 0a  se {.    incr i.
18920 20 20 7d 0a 20 20 68 64 5f 70 75 74 73 20 22 3c    }.  hd_puts "<
18930 24 66 6f 6e 74 3e 24 77 6f 72 64 3c 2f 24 66 6f  $font>$word</$fo
18940 6e 74 3e 3c 62 72 3e 22 0a 7d 0a 3c 2f 74 63 6c  nt><br>".}.</tcl
18950 3e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f 74 61  >.</td></tr></ta
18960 62 6c 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  ble></blockquote
18970 3e 0a 0a 3c 68 32 3e 53 70 65 63 69 61 6c 20 6e  >..<h2>Special n
18980 61 6d 65 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68  ames</h2>..<p>Th
18990 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20  e following are 
189a0 6e 6f 74 20 6b 65 79 77 6f 72 64 73 20 69 6e 20  not keywords in 
189b0 53 51 4c 69 74 65 2c 20 62 75 74 20 61 72 65 20  SQLite, but are 
189c0 75 73 65 64 20 61 73 20 6e 61 6d 65 73 20 6f 66  used as names of
189d0 20 0a 73 79 73 74 65 6d 20 6f 62 6a 65 63 74 73   .system objects
189e0 2e 20 20 54 68 65 79 20 63 61 6e 20 62 65 20 75  .  They can be u
189f0 73 65 64 20 61 73 20 61 6e 20 69 64 65 6e 74 69  sed as an identi
18a00 66 69 65 72 20 66 6f 72 20 61 20 64 69 66 66 65  fier for a diffe
18a10 72 65 6e 74 20 0a 74 79 70 65 20 6f 66 20 6f 62  rent .type of ob
18a20 6a 65 63 74 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  ject.</p>..<bloc
18a30 6b 71 75 6f 74 65 20 63 6c 61 73 73 3d 22 70 64  kquote class="pd
18a40 66 5f 6b 65 79 77 6f 72 64 73 22 3e 3c 62 3e 0a  f_keywords"><b>.
18a50 20 20 5f 52 4f 57 49 44 5f 3c 62 72 3e 0a 20 20    _ROWID_<br>.  
18a60 4d 41 49 4e 3c 62 72 3e 0a 20 20 4f 49 44 3c 62  MAIN<br>.  OID<b
18a70 72 3e 0a 20 20 52 4f 57 49 44 3c 62 72 3e 0a 20  r>.  ROWID<br>. 
18a80 20 53 51 4c 49 54 45 5f 4d 41 53 54 45 52 3c 62   SQLITE_MASTER<b
18a90 72 3e 0a 20 20 53 51 4c 49 54 45 5f 53 45 51 55  r>.  SQLITE_SEQU
18aa0 45 4e 43 45 3c 62 72 3e 0a 20 20 53 51 4c 49 54  ENCE<br>.  SQLIT
18ab0 45 5f 54 45 4d 50 5f 4d 41 53 54 45 52 3c 62 72  E_TEMP_MASTER<br
18ac0 3e 0a 20 20 54 45 4d 50 3c 62 72 3e 0a 3c 2f 62  >.  TEMP<br>.</b
18ad0 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a     ></blockquote>.