/ Hex Artifact Content
Login

Artifact d5414bd9f63ea3763887893b437d0dce4ad4f403:


0000: 23 0a 23 20 52 75 6e 20 74 68 69 73 20 54 63 6c  #.# Run this Tcl
0010: 20 73 63 72 69 70 74 20 74 6f 20 67 65 6e 65 72   script to gener
0020: 61 74 65 20 74 68 65 20 6c 61 6e 67 2d 2a 2e 68  ate the lang-*.h
0030: 74 6d 6c 20 66 69 6c 65 73 2e 0a 23 0a 73 65 74  tml files..#.set
0040: 20 72 63 73 69 64 20 7b 24 49 64 3a 20 6c 61 6e   rcsid {$Id: lan
0050: 67 2e 74 63 6c 2c 76 20 31 2e 31 31 34 20 32 30  g.tcl,v 1.114 20
0060: 30 36 2f 30 36 2f 32 36 20 31 30 3a 33 37 3a 31  06/06/26 10:37:1
0070: 32 20 64 72 68 20 45 78 70 20 24 7d 0a 73 6f 75  2 drh Exp $}.sou
0080: 72 63 65 20 63 6f 6d 6d 6f 6e 2e 74 63 6c 0a 0a  rce common.tcl..
0090: 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72  if {[llength $ar
00a0: 67 76 5d 3e 30 7d 20 7b 0a 20 20 73 65 74 20 6f  gv]>0} {.  set o
00b0: 75 74 70 75 74 64 69 72 20 5b 6c 69 6e 64 65 78  utputdir [lindex
00c0: 20 24 61 72 67 76 20 30 5d 0a 7d 20 65 6c 73 65   $argv 0].} else
00d0: 20 7b 0a 20 20 73 65 74 20 6f 75 74 70 75 74 64   {.  set outputd
00e0: 69 72 20 22 22 0a 7d 0a 0a 68 65 61 64 65 72 20  ir "".}..header 
00f0: 7b 51 75 65 72 79 20 4c 61 6e 67 75 61 67 65 20  {Query Language 
0100: 55 6e 64 65 72 73 74 6f 6f 64 20 62 79 20 53 51  Understood by SQ
0110: 4c 69 74 65 7d 0a 70 75 74 73 20 7b 0a 3c 68 31  Lite}.puts {.<h1
0120: 3e 53 51 4c 20 41 73 20 55 6e 64 65 72 73 74 6f  >SQL As Understo
0130: 6f 64 20 42 79 20 53 51 4c 69 74 65 3c 2f 68 31  od By SQLite</h1
0140: 3e 0a 0a 3c 70 3e 54 68 65 20 53 51 4c 69 74 65  >..<p>The SQLite
0150: 20 6c 69 62 72 61 72 79 20 75 6e 64 65 72 73 74   library underst
0160: 61 6e 64 73 20 6d 6f 73 74 20 6f 66 20 74 68 65  ands most of the
0170: 20 73 74 61 6e 64 61 72 64 20 53 51 4c 0a 6c 61   standard SQL.la
0180: 6e 67 75 61 67 65 2e 20 20 42 75 74 20 69 74 20  nguage.  But it 
0190: 64 6f 65 73 20 3c 61 20 68 72 65 66 3d 22 6f 6d  does <a href="om
01a0: 69 74 74 65 64 2e 68 74 6d 6c 22 3e 6f 6d 69 74  itted.html">omit
01b0: 20 73 6f 6d 65 20 66 65 61 74 75 72 65 73 3c 2f   some features</
01c0: 61 3e 0a 77 68 69 6c 65 20 61 74 20 74 68 65 20  a>.while at the 
01d0: 73 61 6d 65 20 74 69 6d 65 0a 61 64 64 69 6e 67  same time.adding
01e0: 20 61 20 66 65 77 20 66 65 61 74 75 72 65 73 20   a few features 
01f0: 6f 66 20 69 74 73 20 6f 77 6e 2e 20 20 54 68 69  of its own.  Thi
0200: 73 20 64 6f 63 75 6d 65 6e 74 20 61 74 74 65 6d  s document attem
0210: 70 74 73 20 74 6f 0a 64 65 73 63 72 69 62 65 20  pts to.describe 
0220: 70 72 65 63 69 73 65 6c 79 20 77 68 61 74 20 70  precisely what p
0230: 61 72 74 73 20 6f 66 20 74 68 65 20 53 51 4c 20  arts of the SQL 
0240: 6c 61 6e 67 75 61 67 65 20 53 51 4c 69 74 65 20  language SQLite 
0250: 64 6f 65 73 0a 61 6e 64 20 64 6f 65 73 20 6e 6f  does.and does no
0260: 74 20 73 75 70 70 6f 72 74 2e 20 20 41 20 6c 69  t support.  A li
0270: 73 74 20 6f 66 20 3c 61 20 68 72 65 66 3d 22 6c  st of <a href="l
0280: 61 6e 67 5f 6b 65 79 77 6f 72 64 73 2e 68 74 6d  ang_keywords.htm
0290: 6c 22 3e 6b 65 79 77 6f 72 64 73 3c 2f 61 3e 20  l">keywords</a> 
02a0: 69 73 20 0a 61 6c 73 6f 20 70 72 6f 76 69 64 65  is .also provide
02b0: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 61 6c  d.</p>..<p>In al
02c0: 6c 20 6f 66 20 74 68 65 20 73 79 6e 74 61 78 20  l of the syntax 
02d0: 64 69 61 67 72 61 6d 73 20 74 68 61 74 20 66 6f  diagrams that fo
02e0: 6c 6c 6f 77 2c 20 6c 69 74 65 72 61 6c 20 74 65  llow, literal te
02f0: 78 74 20 69 73 20 73 68 6f 77 6e 20 69 6e 0a 62  xt is shown in.b
0300: 6f 6c 64 20 62 6c 75 65 2e 20 20 4e 6f 6e 2d 74  old blue.  Non-t
0310: 65 72 6d 69 6e 61 6c 20 73 79 6d 62 6f 6c 73 20  erminal symbols 
0320: 61 72 65 20 73 68 6f 77 6e 20 69 6e 20 69 74 61  are shown in ita
0330: 6c 69 63 20 72 65 64 2e 20 20 4f 70 65 72 61 74  lic red.  Operat
0340: 6f 72 73 0a 74 68 61 74 20 61 72 65 20 70 61 72  ors.that are par
0350: 74 20 6f 66 20 74 68 65 20 73 79 6e 74 61 63 74  t of the syntact
0360: 69 63 20 6d 61 72 6b 75 70 20 69 74 73 65 6c 66  ic markup itself
0370: 20 61 72 65 20 73 68 6f 77 6e 20 69 6e 20 62 6c   are shown in bl
0380: 61 63 6b 20 72 6f 6d 61 6e 2e 3c 2f 70 3e 0a 0a  ack roman.</p>..
0390: 3c 70 3e 54 68 69 73 20 64 6f 63 75 6d 65 6e 74  <p>This document
03a0: 20 69 73 20 6a 75 73 74 20 61 6e 20 6f 76 65 72   is just an over
03b0: 76 69 65 77 20 6f 66 20 74 68 65 20 53 51 4c 20  view of the SQL 
03c0: 73 79 6e 74 61 78 20 69 6d 70 6c 65 6d 65 6e 74  syntax implement
03d0: 65 64 0a 62 79 20 53 51 4c 69 74 65 2e 20 20 4d  ed.by SQLite.  M
03e0: 61 6e 79 20 6c 6f 77 2d 6c 65 76 65 6c 20 70 72  any low-level pr
03f0: 6f 64 75 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d  oductions are om
0400: 69 74 74 65 64 2e 20 20 46 6f 72 20 64 65 74 61  itted.  For deta
0410: 69 6c 65 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  iled information
0420: 0a 6f 6e 20 74 68 65 20 6c 61 6e 67 75 61 67 65  .on the language
0430: 20 74 68 61 74 20 53 51 4c 69 74 65 20 75 6e 64   that SQLite und
0440: 65 72 73 74 61 6e 64 73 2c 20 72 65 66 65 72 20  erstands, refer 
0450: 74 6f 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f  to the source co
0460: 64 65 20 61 6e 64 0a 74 68 65 20 67 72 61 6d 6d  de and.the gramm
0470: 61 72 20 66 69 6c 65 20 22 70 61 72 73 65 2e 79  ar file "parse.y
0480: 22 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 53 51 4c 69  ".</p>...<p>SQLi
0490: 74 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68  te implements th
04a0: 65 20 66 6f 6c 6c 6f 77 20 73 79 6e 74 61 78 3a  e follow syntax:
04b0: 3c 2f 70 3e 0a 3c 70 3e 3c 75 6c 3e 0a 7d 0a 0a  </p>.<p><ul>.}..
04c0: 70 72 6f 63 20 73 6c 69 6e 6b 20 7b 6c 61 62 65  proc slink {labe
04d0: 6c 7d 20 7b 0a 20 20 69 66 20 7b 5b 73 74 72 69  l} {.  if {[stri
04e0: 6e 67 20 6d 61 74 63 68 20 2a 2e 68 74 6d 6c 20  ng match *.html 
04f0: 24 6c 61 62 65 6c 5d 7d 20 7b 0a 20 20 20 20 72  $label]} {.    r
0500: 65 74 75 72 6e 20 24 6c 61 62 65 6c 0a 20 20 7d  eturn $label.  }
0510: 0a 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c  .  if {[string l
0520: 65 6e 67 74 68 20 24 3a 3a 6f 75 74 70 75 74 64  ength $::outputd
0530: 69 72 5d 3d 3d 30 7d 20 7b 0a 20 20 20 20 72 65  ir]==0} {.    re
0540: 74 75 72 6e 20 23 24 6c 61 62 65 6c 0a 20 20 7d  turn #$label.  }
0550: 20 65 6c 73 65 20 7b 20 0a 20 20 20 20 72 65 74   else { .    ret
0560: 75 72 6e 20 6c 61 6e 67 5f 24 6c 61 62 65 6c 2e  urn lang_$label.
0570: 68 74 6d 6c 0a 20 20 7d 0a 7d 0a 0a 66 6f 72 65  html.  }.}..fore
0580: 61 63 68 20 7b 73 65 63 74 69 6f 6e 7d 20 5b 6c  ach {section} [l
0590: 73 6f 72 74 20 2d 69 6e 64 65 78 20 30 20 2d 64  sort -index 0 -d
05a0: 69 63 74 69 6f 6e 61 72 79 20 7b 0a 20 20 7b 7b  ictionary {.  {{
05b0: 43 52 45 41 54 45 20 54 41 42 4c 45 7d 20 63 72  CREATE TABLE} cr
05c0: 65 61 74 65 74 61 62 6c 65 7d 0a 20 20 7b 7b 43  eatetable}.  {{C
05d0: 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
05e0: 42 4c 45 7d 20 63 72 65 61 74 65 76 74 61 62 7d  BLE} createvtab}
05f0: 0a 20 20 7b 7b 43 52 45 41 54 45 20 49 4e 44 45  .  {{CREATE INDE
0600: 58 7d 20 63 72 65 61 74 65 69 6e 64 65 78 7d 0a  X} createindex}.
0610: 20 20 7b 56 41 43 55 55 4d 20 76 61 63 75 75 6d    {VACUUM vacuum
0620: 7d 0a 20 20 7b 7b 44 52 4f 50 20 54 41 42 4c 45  }.  {{DROP TABLE
0630: 7d 20 64 72 6f 70 74 61 62 6c 65 7d 0a 20 20 7b  } droptable}.  {
0640: 7b 44 52 4f 50 20 49 4e 44 45 58 7d 20 64 72 6f  {DROP INDEX} dro
0650: 70 69 6e 64 65 78 7d 0a 20 20 7b 49 4e 53 45 52  pindex}.  {INSER
0660: 54 20 69 6e 73 65 72 74 7d 0a 20 20 7b 52 45 50  T insert}.  {REP
0670: 4c 41 43 45 20 72 65 70 6c 61 63 65 7d 0a 20 20  LACE replace}.  
0680: 7b 44 45 4c 45 54 45 20 64 65 6c 65 74 65 7d 0a  {DELETE delete}.
0690: 20 20 7b 55 50 44 41 54 45 20 75 70 64 61 74 65    {UPDATE update
06a0: 7d 0a 20 20 7b 53 45 4c 45 43 54 20 73 65 6c 65  }.  {SELECT sele
06b0: 63 74 7d 0a 20 20 7b 63 6f 6d 6d 65 6e 74 20 63  ct}.  {comment c
06c0: 6f 6d 6d 65 6e 74 7d 0a 20 20 7b 43 4f 50 59 20  omment}.  {COPY 
06d0: 63 6f 70 79 7d 0a 20 20 7b 45 58 50 4c 41 49 4e  copy}.  {EXPLAIN
06e0: 20 65 78 70 6c 61 69 6e 7d 0a 20 20 7b 65 78 70   explain}.  {exp
06f0: 72 65 73 73 69 6f 6e 20 65 78 70 72 7d 0a 20 20  ression expr}.  
0700: 7b 7b 42 45 47 49 4e 20 54 52 41 4e 53 41 43 54  {{BEGIN TRANSACT
0710: 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e  ION} transaction
0720: 7d 0a 20 20 7b 7b 43 4f 4d 4d 49 54 20 54 52 41  }.  {{COMMIT TRA
0730: 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61  NSACTION} transa
0740: 63 74 69 6f 6e 7d 0a 20 20 7b 7b 45 4e 44 20 54  ction}.  {{END T
0750: 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e  RANSACTION} tran
0760: 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 7b 52 4f 4c  saction}.  {{ROL
0770: 4c 42 41 43 4b 20 54 52 41 4e 53 41 43 54 49 4f  LBACK TRANSACTIO
0780: 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a  N} transaction}.
0790: 20 20 7b 50 52 41 47 4d 41 20 70 72 61 67 6d 61    {PRAGMA pragma
07a0: 2e 68 74 6d 6c 7d 0a 20 20 7b 7b 4f 4e 20 43 4f  .html}.  {{ON CO
07b0: 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63  NFLICT clause} c
07c0: 6f 6e 66 6c 69 63 74 7d 0a 20 20 7b 7b 43 52 45  onflict}.  {{CRE
07d0: 41 54 45 20 56 49 45 57 7d 20 63 72 65 61 74 65  ATE VIEW} create
07e0: 76 69 65 77 7d 0a 20 20 7b 7b 44 52 4f 50 20 56  view}.  {{DROP V
07f0: 49 45 57 7d 20 64 72 6f 70 76 69 65 77 7d 0a 20  IEW} dropview}. 
0800: 20 7b 7b 43 52 45 41 54 45 20 54 52 49 47 47 45   {{CREATE TRIGGE
0810: 52 7d 20 63 72 65 61 74 65 74 72 69 67 67 65 72  R} createtrigger
0820: 7d 0a 20 20 7b 7b 44 52 4f 50 20 54 52 49 47 47  }.  {{DROP TRIGG
0830: 45 52 7d 20 64 72 6f 70 74 72 69 67 67 65 72 7d  ER} droptrigger}
0840: 0a 20 20 7b 7b 41 54 54 41 43 48 20 44 41 54 41  .  {{ATTACH DATA
0850: 42 41 53 45 7d 20 61 74 74 61 63 68 7d 0a 20 20  BASE} attach}.  
0860: 7b 7b 44 45 54 41 43 48 20 44 41 54 41 42 41 53  {{DETACH DATABAS
0870: 45 7d 20 64 65 74 61 63 68 7d 0a 20 20 7b 52 45  E} detach}.  {RE
0880: 49 4e 44 45 58 20 72 65 69 6e 64 65 78 7d 0a 20  INDEX reindex}. 
0890: 20 7b 7b 41 4c 54 45 52 20 54 41 42 4c 45 7d 20   {{ALTER TABLE} 
08a0: 61 6c 74 65 72 74 61 62 6c 65 7d 0a 20 20 7b 7b  altertable}.  {{
08b0: 41 4e 41 4c 59 5a 45 7d 20 61 6e 61 6c 79 7a 65  ANALYZE} analyze
08c0: 7d 0a 7d 5d 20 7b 0a 20 20 66 6f 72 65 61 63 68  }.}] {.  foreach
08d0: 20 7b 73 5f 74 69 74 6c 65 20 73 5f 74 61 67 7d   {s_title s_tag}
08e0: 20 24 73 65 63 74 69 6f 6e 20 7b 7d 0a 20 20 70   $section {}.  p
08f0: 75 74 73 20 22 3c 6c 69 3e 3c 61 20 68 72 65 66  uts "<li><a href
0900: 3d 5c 22 5b 73 6c 69 6e 6b 20 24 73 5f 74 61 67  =\"[slink $s_tag
0910: 5d 5c 22 3e 24 73 5f 74 69 74 6c 65 3c 2f 61 3e  ]\">$s_title</a>
0920: 3c 2f 6c 69 3e 22 0a 7d 0a 70 75 74 73 20 7b 3c  </li>".}.puts {<
0930: 2f 75 6c 3e 3c 2f 70 3e 0a 0a 3c 70 3e 44 65 74  /ul></p>..<p>Det
0940: 61 69 6c 73 20 6f 6e 20 74 68 65 20 69 6d 70 6c  ails on the impl
0950: 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 65 61  ementation of ea
0960: 63 68 20 63 6f 6d 6d 61 6e 64 20 61 72 65 20 70  ch command are p
0970: 72 6f 76 69 64 65 64 20 69 6e 0a 74 68 65 20 73  rovided in.the s
0980: 65 71 75 65 6c 2e 3c 2f 70 3e 0a 7d 0a 0a 70 72  equel.</p>.}..pr
0990: 6f 63 20 4f 70 65 72 61 74 6f 72 20 7b 6e 61 6d  oc Operator {nam
09a0: 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c  e} {.  return "<
09b0: 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63  font color=\"#2c
09c0: 32 63 66 30 5c 22 3e 3c 62 69 67 3e 24 6e 61 6d  2cf0\"><big>$nam
09d0: 65 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e 22 0a  e</big></font>".
09e0: 7d 0a 70 72 6f 63 20 4e 6f 6e 74 65 72 6d 69 6e  }.proc Nontermin
09f0: 61 6c 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20 72 65  al {name} {.  re
0a00: 74 75 72 6e 20 22 3c 69 3e 3c 66 6f 6e 74 20 63  turn "<i><font c
0a10: 6f 6c 6f 72 3d 5c 22 23 66 66 33 34 33 34 5c 22  olor=\"#ff3434\"
0a20: 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74 3e 3c 2f 69  >$name</font></i
0a30: 3e 22 0a 7d 0a 70 72 6f 63 20 4b 65 79 77 6f 72  >".}.proc Keywor
0a40: 64 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20 72 65 74  d {name} {.  ret
0a50: 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f 6c 6f 72  urn "<font color
0a60: 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e 24 6e 61  =\"#2c2cf0\">$na
0a70: 6d 65 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f  me</font>".}.pro
0a80: 63 20 45 78 61 6d 70 6c 65 20 7b 74 65 78 74 7d  c Example {text}
0a90: 20 7b 0a 20 20 70 75 74 73 20 22 3c 62 6c 6f 63   {.  puts "<bloc
0aa0: 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 24 74 65 78  kquote><pre>$tex
0ab0: 74 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75  t</pre></blockqu
0ac0: 6f 74 65 3e 22 0a 7d 0a 0a 70 72 6f 63 20 53 65  ote>".}..proc Se
0ad0: 63 74 69 6f 6e 20 7b 6e 61 6d 65 20 6c 61 62 65  ction {name labe
0ae0: 6c 7d 20 7b 0a 20 20 67 6c 6f 62 61 6c 20 6f 75  l} {.  global ou
0af0: 74 70 75 74 64 69 72 0a 0a 20 20 69 66 20 7b 5b  tputdir..  if {[
0b00: 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 6f  string length $o
0b10: 75 74 70 75 74 64 69 72 5d 21 3d 30 7d 20 7b 0a  utputdir]!=0} {.
0b20: 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e 67 74 68      if {[llength
0b30: 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20   [info commands 
0b40: 70 75 74 73 5f 73 74 61 6e 64 61 72 64 5d 5d 3e  puts_standard]]>
0b50: 30 7d 20 7b 0a 20 20 20 20 20 20 66 6f 6f 74 65  0} {.      foote
0b60: 72 20 24 3a 3a 72 63 73 69 64 0a 20 20 20 20 7d  r $::rcsid.    }
0b70: 0a 0a 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e  ..    if {[strin
0b80: 67 20 6c 65 6e 67 74 68 20 24 6c 61 62 65 6c 5d  g length $label]
0b90: 3e 30 7d 20 7b 0a 20 20 20 20 20 20 72 65 6e 61  >0} {.      rena
0ba0: 6d 65 20 70 75 74 73 20 70 75 74 73 5f 73 74 61  me puts puts_sta
0bb0: 6e 64 61 72 64 0a 20 20 20 20 20 20 70 72 6f 63  ndard.      proc
0bc0: 20 70 75 74 73 20 7b 73 74 72 7d 20 7b 0a 20 20   puts {str} {.  
0bd0: 20 20 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c        regsub -al
0be0: 6c 20 7b 68 72 65 66 3d 22 23 28 5b 61 2d 7a 5d  l {href="#([a-z]
0bf0: 2b 29 22 7d 20 24 73 74 72 20 7b 68 72 65 66 3d  +)"} $str {href=
0c00: 22 6c 61 6e 67 5f 5c 31 2e 68 74 6d 6c 22 7d 20  "lang_\1.html"} 
0c10: 73 74 72 0a 20 20 20 20 20 20 20 20 70 75 74 73  str.        puts
0c20: 5f 73 74 61 6e 64 61 72 64 20 24 3a 3a 73 65 63  _standard $::sec
0c30: 74 69 6f 6e 5f 66 69 6c 65 20 24 73 74 72 0a 20  tion_file $str. 
0c40: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 72 65 6e       }.      ren
0c50: 61 6d 65 20 66 6f 6f 74 65 72 20 66 6f 6f 74 65  ame footer foote
0c60: 72 5f 73 74 61 6e 64 61 72 64 0a 20 20 20 20 20  r_standard.     
0c70: 20 70 72 6f 63 20 66 6f 6f 74 65 72 20 7b 69 64   proc footer {id
0c80: 7d 20 7b 0a 20 20 20 20 20 20 20 20 66 6f 6f 74  } {.        foot
0c90: 65 72 5f 73 74 61 6e 64 61 72 64 20 24 69 64 0a  er_standard $id.
0ca0: 20 20 20 20 20 20 20 20 72 65 6e 61 6d 65 20 66          rename f
0cb0: 6f 6f 74 65 72 20 22 22 0a 20 20 20 20 20 20 20  ooter "".       
0cc0: 20 72 65 6e 61 6d 65 20 70 75 74 73 20 22 22 0a   rename puts "".
0cd0: 20 20 20 20 20 20 20 20 72 65 6e 61 6d 65 20 70          rename p
0ce0: 75 74 73 5f 73 74 61 6e 64 61 72 64 20 70 75 74  uts_standard put
0cf0: 73 0a 20 20 20 20 20 20 20 20 72 65 6e 61 6d 65  s.        rename
0d00: 20 66 6f 6f 74 65 72 5f 73 74 61 6e 64 61 72 64   footer_standard
0d10: 20 66 6f 6f 74 65 72 0a 20 20 20 20 20 20 7d 20   footer.      } 
0d20: 0a 20 20 20 20 20 20 73 65 74 20 3a 3a 73 65 63  .      set ::sec
0d30: 74 69 6f 6e 5f 66 69 6c 65 20 5b 6f 70 65 6e 20  tion_file [open 
0d40: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 6f 75 74 70  [file join $outp
0d50: 75 74 64 69 72 20 6c 61 6e 67 5f 24 6c 61 62 65  utdir lang_$labe
0d60: 6c 2e 68 74 6d 6c 5d 20 77 5d 0a 20 20 20 20 20  l.html] w].     
0d70: 20 68 65 61 64 65 72 20 22 51 75 65 72 79 20 4c   header "Query L
0d80: 61 6e 67 75 61 67 65 20 55 6e 64 65 72 73 74 6f  anguage Understo
0d90: 6f 64 20 62 79 20 53 51 4c 69 74 65 3a 20 24 6e  od by SQLite: $n
0da0: 61 6d 65 22 0a 20 20 20 20 20 20 70 75 74 73 20  ame".      puts 
0db0: 22 3c 68 31 3e 53 51 4c 20 41 73 20 55 6e 64 65  "<h1>SQL As Unde
0dc0: 72 73 74 6f 6f 64 20 42 79 20 53 51 4c 69 74 65  rstood By SQLite
0dd0: 3c 2f 68 31 3e 22 0a 20 20 20 20 20 20 70 75 74  </h1>".      put
0de0: 73 20 22 3c 61 20 68 72 65 66 3d 5c 22 6c 61 6e  s "<a href=\"lan
0df0: 67 2e 68 74 6d 6c 5c 22 3e 5c 5b 43 6f 6e 74 65  g.html\">\[Conte
0e00: 6e 74 73 5c 5d 3c 2f 61 3e 22 0a 20 20 20 20 20  nts\]</a>".     
0e10: 20 70 75 74 73 20 22 3c 68 32 3e 24 6e 61 6d 65   puts "<h2>$name
0e20: 3c 2f 68 32 3e 22 0a 20 20 20 20 20 20 72 65 74  </h2>".      ret
0e30: 75 72 6e 20 0a 20 20 20 20 7d 0a 20 20 7d 0a 20  urn .    }.  }. 
0e40: 20 70 75 74 73 20 22 5c 6e 3c 68 72 20 2f 3e 22   puts "\n<hr />"
0e50: 0a 20 20 69 66 20 7b 24 6c 61 62 65 6c 21 3d 22  .  if {$label!="
0e60: 22 7d 20 7b 0a 20 20 20 20 70 75 74 73 20 22 3c  "} {.    puts "<
0e70: 61 20 6e 61 6d 65 3d 5c 22 24 6c 61 62 65 6c 5c  a name=\"$label\
0e80: 22 3e 3c 2f 61 3e 22 0a 20 20 7d 0a 20 20 70 75  "></a>".  }.  pu
0e90: 74 73 20 22 3c 68 31 3e 24 6e 61 6d 65 3c 2f 68  ts "<h1>$name</h
0ea0: 31 3e 5c 6e 22 0a 7d 0a 0a 53 65 63 74 69 6f 6e  1>\n".}..Section
0eb0: 20 7b 41 4c 54 45 52 20 54 41 42 4c 45 7d 20 61   {ALTER TABLE} a
0ec0: 6c 74 65 72 74 61 62 6c 65 0a 0a 53 79 6e 74 61  ltertable..Synta
0ed0: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
0ee0: 7d 20 7b 0a 41 4c 54 45 52 20 54 41 42 4c 45 20  } {.ALTER TABLE 
0ef0: 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e  [<database-name>
0f00: 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e   .] <table-name>
0f10: 20 3c 61 6c 74 65 72 61 74 69 6f 6e 3e 0a 7d 20   <alteration>.} 
0f20: 7b 61 6c 74 65 72 61 74 69 6f 6e 7d 20 7b 0a 52  {alteration} {.R
0f30: 45 4e 41 4d 45 20 54 4f 20 3c 6e 65 77 2d 74 61  ENAME TO <new-ta
0f40: 62 6c 65 2d 6e 61 6d 65 3e 0a 7d 20 7b 61 6c 74  ble-name>.} {alt
0f50: 65 72 61 74 69 6f 6e 7d 20 7b 0a 41 44 44 20 5b  eration} {.ADD [
0f60: 43 4f 4c 55 4d 4e 5d 20 3c 63 6f 6c 75 6d 6e 2d  COLUMN] <column-
0f70: 64 65 66 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  def>.}..puts {.<
0f80: 70 3e 53 51 4c 69 74 65 27 73 20 76 65 72 73 69  p>SQLite's versi
0f90: 6f 6e 20 6f 66 20 74 68 65 20 41 4c 54 45 52 20  on of the ALTER 
0fa0: 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 61 6c  TABLE command al
0fb0: 6c 6f 77 73 20 74 68 65 20 75 73 65 72 20 74 6f  lows the user to
0fc0: 20 0a 72 65 6e 61 6d 65 20 6f 72 20 61 64 64 20   .rename or add 
0fd0: 61 20 6e 65 77 20 63 6f 6c 75 6d 6e 20 74 6f 20  a new column to 
0fe0: 61 6e 20 65 78 69 73 74 69 6e 67 20 74 61 62 6c  an existing tabl
0ff0: 65 2e 20 49 74 20 69 73 20 6e 6f 74 20 70 6f 73  e. It is not pos
1000: 73 69 62 6c 65 0a 74 6f 20 72 65 6d 6f 76 65 20  sible.to remove 
1010: 61 20 63 6f 6c 75 6d 6e 20 66 72 6f 6d 20 61 20  a column from a 
1020: 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  table..</p>..<p>
1030: 54 68 65 20 52 45 4e 41 4d 45 20 54 4f 20 73 79  The RENAME TO sy
1040: 6e 74 61 78 20 69 73 20 75 73 65 64 20 74 6f 20  ntax is used to 
1050: 72 65 6e 61 6d 65 20 74 68 65 20 74 61 62 6c 65  rename the table
1060: 20 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 0a   identified by .
1070: 3c 69 3e 5b 64 61 74 61 62 61 73 65 2d 6e 61 6d  <i>[database-nam
1080: 65 2e 5d 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69  e.]table-name</i
1090: 3e 20 74 6f 20 3c 69 3e 6e 65 77 2d 74 61 62 6c  > to <i>new-tabl
10a0: 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 20 54 68 69 73  e-name</i>. This
10b0: 20 63 6f 6d 6d 61 6e 64 20 0a 63 61 6e 6e 6f 74   command .cannot
10c0: 20 62 65 20 75 73 65 64 20 74 6f 20 6d 6f 76 65   be used to move
10d0: 20 61 20 74 61 62 6c 65 20 62 65 74 77 65 65 6e   a table between
10e0: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
10f0: 73 65 73 2c 20 6f 6e 6c 79 20 74 6f 20 72 65 6e  ses, only to ren
1100: 61 6d 65 20 0a 61 20 74 61 62 6c 65 20 77 69 74  ame .a table wit
1110: 68 69 6e 20 74 68 65 20 73 61 6d 65 20 64 61 74  hin the same dat
1120: 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49  abase.</p>..<p>I
1130: 66 20 74 68 65 20 74 61 62 6c 65 20 62 65 69 6e  f the table bein
1140: 67 20 72 65 6e 61 6d 65 64 20 68 61 73 20 74 72  g renamed has tr
1150: 69 67 67 65 72 73 20 6f 72 20 69 6e 64 69 63 65  iggers or indice
1160: 73 2c 20 74 68 65 6e 20 74 68 65 73 65 20 72 65  s, then these re
1170: 6d 61 69 6e 0a 61 74 74 61 63 68 65 64 20 74 6f  main.attached to
1180: 20 74 68 65 20 74 61 62 6c 65 20 61 66 74 65 72   the table after
1190: 20 69 74 20 68 61 73 20 62 65 65 6e 20 72 65 6e   it has been ren
11a0: 61 6d 65 64 2e 20 48 6f 77 65 76 65 72 2c 20 69  amed. However, i
11b0: 66 20 74 68 65 72 65 20 61 72 65 0a 61 6e 79 20  f there are.any 
11c0: 76 69 65 77 20 64 65 66 69 6e 69 74 69 6f 6e 73  view definitions
11d0: 2c 20 6f 72 20 73 74 61 74 65 6d 65 6e 74 73 20  , or statements 
11e0: 65 78 65 63 75 74 65 64 20 62 79 20 74 72 69 67  executed by trig
11f0: 67 65 72 73 20 74 68 61 74 20 72 65 66 65 72 20  gers that refer 
1200: 74 6f 0a 74 68 65 20 74 61 62 6c 65 20 62 65 69  to.the table bei
1210: 6e 67 20 72 65 6e 61 6d 65 64 2c 20 74 68 65 73  ng renamed, thes
1220: 65 20 61 72 65 20 6e 6f 74 20 61 75 74 6f 6d 61  e are not automa
1230: 74 69 63 61 6c 6c 79 20 6d 6f 64 69 66 69 65 64  tically modified
1240: 20 74 6f 20 75 73 65 20 74 68 65 20 6e 65 77 0a   to use the new.
1250: 74 61 62 6c 65 20 6e 61 6d 65 2e 20 49 66 20 74  table name. If t
1260: 68 69 73 20 69 73 20 72 65 71 75 69 72 65 64 2c  his is required,
1270: 20 74 68 65 20 74 72 69 67 67 65 72 73 20 6f 72   the triggers or
1280: 20 76 69 65 77 20 64 65 66 69 6e 69 74 69 6f 6e   view definition
1290: 73 20 6d 75 73 74 20 62 65 0a 64 72 6f 70 70 65  s must be.droppe
12a0: 64 20 61 6e 64 20 72 65 63 72 65 61 74 65 64 20  d and recreated 
12b0: 74 6f 20 75 73 65 20 74 68 65 20 6e 65 77 20 74  to use the new t
12c0: 61 62 6c 65 20 6e 61 6d 65 20 62 79 20 68 61 6e  able name by han
12d0: 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  d..</p>..<p>The 
12e0: 41 44 44 20 5b 43 4f 4c 55 4d 4e 5d 20 73 79 6e  ADD [COLUMN] syn
12f0: 74 61 78 20 69 73 20 75 73 65 64 20 74 6f 20 61  tax is used to a
1300: 64 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d 6e 20  dd a new column 
1310: 74 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74  to an existing t
1320: 61 62 6c 65 2e 0a 54 68 65 20 6e 65 77 20 63 6f  able..The new co
1330: 6c 75 6d 6e 20 69 73 20 61 6c 77 61 79 73 20 61  lumn is always a
1340: 70 70 65 6e 64 65 64 20 74 6f 20 74 68 65 20 65  ppended to the e
1350: 6e 64 20 6f 66 20 74 68 65 20 6c 69 73 74 20 6f  nd of the list o
1360: 66 20 65 78 69 73 74 69 6e 67 20 63 6f 6c 75 6d  f existing colum
1370: 6e 73 2e 0a 3c 69 3e 43 6f 6c 75 6d 6e 2d 64 65  ns..<i>Column-de
1380: 66 3c 2f 69 3e 20 6d 61 79 20 74 61 6b 65 20 61  f</i> may take a
1390: 6e 79 20 6f 66 20 74 68 65 20 66 6f 72 6d 73 20  ny of the forms 
13a0: 70 65 72 6d 69 73 73 61 62 6c 65 20 69 6e 20 61  permissable in a
13b0: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 0a 73   CREATE TABLE .s
13c0: 74 61 74 65 6d 65 6e 74 2c 20 77 69 74 68 20 74  tatement, with t
13d0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 65 73  he following res
13e0: 74 72 69 63 74 69 6f 6e 73 3a 0a 3c 75 6c 3e 0a  trictions:.<ul>.
13f0: 3c 6c 69 3e 54 68 65 20 63 6f 6c 75 6d 6e 20 6d  <li>The column m
1400: 61 79 20 6e 6f 74 20 68 61 76 65 20 61 20 50 52  ay not have a PR
1410: 49 4d 41 52 59 20 4b 45 59 20 6f 72 20 55 4e 49  IMARY KEY or UNI
1420: 51 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 2e 3c  QUE constraint.<
1430: 2f 6c 69 3e 0a 3c 6c 69 3e 54 68 65 20 63 6f 6c  /li>.<li>The col
1440: 75 6d 6e 20 6d 61 79 20 6e 6f 74 20 68 61 76 65  umn may not have
1450: 20 61 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65   a default value
1460: 20 6f 66 20 43 55 52 52 45 4e 54 5f 54 49 4d 45   of CURRENT_TIME
1470: 2c 20 43 55 52 52 45 4e 54 5f 44 41 54 45 20 0a  , CURRENT_DATE .
1480: 20 20 20 20 6f 72 20 43 55 52 52 45 4e 54 5f 54      or CURRENT_T
1490: 49 4d 45 53 54 41 4d 50 2e 3c 2f 6c 69 3e 0a 3c  IMESTAMP.</li>.<
14a0: 6c 69 3e 49 66 20 61 20 4e 4f 54 20 4e 55 4c 4c  li>If a NOT NULL
14b0: 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 73   constraint is s
14c0: 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74  pecified, then t
14d0: 68 65 20 63 6f 6c 75 6d 6e 20 6d 75 73 74 20 68  he column must h
14e0: 61 76 65 20 61 0a 20 20 20 20 64 65 66 61 75 6c  ave a.    defaul
14f0: 74 20 76 61 6c 75 65 20 6f 74 68 65 72 20 74 68  t value other th
1500: 61 6e 20 4e 55 4c 4c 2e 0a 3c 2f 75 6c 3e 0a 0a  an NULL..</ul>..
1510: 3c 70 3e 54 68 65 20 65 78 65 63 75 74 69 6f 6e  <p>The execution
1520: 20 74 69 6d 65 20 6f 66 20 74 68 65 20 41 4c 54   time of the ALT
1530: 45 52 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64  ER TABLE command
1540: 20 69 73 20 69 6e 64 65 70 65 6e 64 65 6e 74 20   is independent 
1550: 6f 66 0a 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66  of.the amount of
1560: 20 64 61 74 61 20 69 6e 20 74 68 65 20 74 61 62   data in the tab
1570: 6c 65 2e 20 20 54 68 65 20 41 4c 54 45 52 20 54  le.  The ALTER T
1580: 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 72 75 6e  ABLE command run
1590: 73 20 61 73 20 71 75 69 63 6b 6c 79 0a 6f 6e 20  s as quickly.on 
15a0: 61 20 74 61 62 6c 65 20 77 69 74 68 20 31 30 20  a table with 10 
15b0: 6d 69 6c 6c 69 6f 6e 20 72 6f 77 73 20 61 73 20  million rows as 
15c0: 69 74 20 64 6f 65 73 20 6f 6e 20 61 20 74 61 62  it does on a tab
15d0: 6c 65 20 77 69 74 68 20 31 20 72 6f 77 2e 0a 3c  le with 1 row..<
15e0: 2f 70 3e 0a 0a 3c 70 3e 41 66 74 65 72 20 41 44  /p>..<p>After AD
15f0: 44 20 43 4f 4c 55 4d 4e 20 68 61 73 20 62 65 65  D COLUMN has bee
1600: 6e 20 72 75 6e 20 6f 6e 20 61 20 64 61 74 61 62  n run on a datab
1610: 61 73 65 2c 20 74 68 61 74 20 64 61 74 61 62 61  ase, that databa
1620: 73 65 20 77 69 6c 6c 20 6e 6f 74 0a 62 65 20 72  se will not.be r
1630: 65 61 64 61 62 6c 65 20 62 79 20 53 51 4c 69 74  eadable by SQLit
1640: 65 20 76 65 72 73 69 6f 6e 20 33 2e 31 2e 33 20  e version 3.1.3 
1650: 61 6e 64 20 65 61 72 6c 69 65 72 20 75 6e 74 69  and earlier unti
1660: 6c 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 69  l the database.i
1670: 73 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f  s <a href="lang_
1680: 76 61 63 75 75 6d 2e 68 74 6d 6c 22 3e 56 41 43  vacuum.html">VAC
1690: 55 55 4d 3c 2f 61 3e 65 64 2e 3c 2f 70 3e 0a 7d  UUM</a>ed.</p>.}
16a0: 0a 0a 53 65 63 74 69 6f 6e 20 7b 41 4e 41 4c 59  ..Section {ANALY
16b0: 5a 45 7d 20 61 6e 61 6c 79 7a 65 0a 0a 53 79 6e  ZE} analyze..Syn
16c0: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
16d0: 6e 74 7d 20 7b 0a 20 20 41 4e 41 4c 59 5a 45 0a  nt} {.  ANALYZE.
16e0: 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  }.Syntax {sql-st
16f0: 61 74 65 6d 65 6e 74 7d 20 7b 0a 20 20 41 4e 41  atement} {.  ANA
1700: 4c 59 5a 45 20 3c 64 61 74 61 62 61 73 65 2d 6e  LYZE <database-n
1710: 61 6d 65 3e 0a 7d 0a 53 79 6e 74 61 78 20 7b 73  ame>.}.Syntax {s
1720: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
1730: 20 20 41 4e 41 4c 59 5a 45 20 5b 3c 64 61 74 61    ANALYZE [<data
1740: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74  base-name> .] <t
1750: 61 62 6c 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75  able-name>.}..pu
1760: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 41 4e 41 4c  ts {.<p>The ANAL
1770: 59 5a 45 20 63 6f 6d 6d 61 6e 64 20 67 61 74 68  YZE command gath
1780: 65 72 73 20 73 74 61 74 69 73 74 69 63 73 20 61  ers statistics a
1790: 62 6f 75 74 20 69 6e 64 69 63 65 73 20 61 6e 64  bout indices and
17a0: 20 73 74 6f 72 65 73 20 74 68 65 6d 0a 69 6e 20   stores them.in 
17b0: 61 20 73 70 65 63 69 61 6c 20 74 61 62 6c 65 73  a special tables
17c0: 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65   in the database
17d0: 20 77 68 65 72 65 20 74 68 65 20 71 75 65 72 79   where the query
17e0: 20 6f 70 74 69 6d 69 7a 65 72 20 63 61 6e 20 75   optimizer can u
17f0: 73 65 0a 74 68 65 6d 20 74 6f 20 68 65 6c 70 20  se.them to help 
1800: 6d 61 6b 65 20 62 65 74 74 65 72 20 69 6e 64 65  make better inde
1810: 78 20 63 68 6f 69 63 65 73 2e 0a 49 66 20 6e 6f  x choices..If no
1820: 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 67   arguments are g
1830: 69 76 65 6e 2c 20 61 6c 6c 20 69 6e 64 69 63 65  iven, all indice
1840: 73 20 69 6e 20 61 6c 6c 20 61 74 74 61 63 68 65  s in all attache
1850: 64 20 64 61 74 61 62 61 73 65 73 20 61 72 65 0a  d databases are.
1860: 61 6e 61 6c 79 7a 65 64 2e 20 20 49 66 20 61 20  analyzed.  If a 
1870: 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20 69 73  database name is
1880: 20 67 69 76 65 6e 20 61 73 20 74 68 65 20 61 72   given as the ar
1890: 67 75 6d 65 6e 74 2c 20 61 6c 6c 20 69 6e 64 69  gument, all indi
18a0: 63 65 73 0a 69 6e 20 74 68 61 74 20 6f 6e 65 20  ces.in that one 
18b0: 64 61 74 61 62 61 73 65 20 61 72 65 20 61 6e 61  database are ana
18c0: 6c 79 7a 65 64 2e 20 20 49 66 20 74 68 65 20 61  lyzed.  If the a
18d0: 72 67 75 6d 65 6e 74 20 69 73 20 61 20 74 61 62  rgument is a tab
18e0: 6c 65 20 6e 61 6d 65 2c 0a 74 68 65 6e 20 6f 6e  le name,.then on
18f0: 6c 79 20 69 6e 64 69 63 65 73 20 61 73 73 6f 63  ly indices assoc
1900: 69 61 74 65 64 20 77 69 74 68 20 74 68 61 74 20  iated with that 
1910: 6f 6e 65 20 74 61 62 6c 65 20 61 72 65 20 61 6e  one table are an
1920: 61 6c 79 7a 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  alyzed.</p>..<p>
1930: 54 68 65 20 69 6e 69 74 69 61 6c 20 69 6d 70 6c  The initial impl
1940: 65 6d 65 6e 74 61 74 69 6f 6e 20 73 74 6f 72 65  ementation store
1950: 73 20 61 6c 6c 20 73 74 61 74 69 73 74 69 63 73  s all statistics
1960: 20 69 6e 20 61 20 73 69 6e 67 6c 65 0a 74 61 62   in a single.tab
1970: 6c 65 20 6e 61 6d 65 64 20 3c 62 3e 73 71 6c 69  le named <b>sqli
1980: 74 65 5f 73 74 61 74 31 3c 2f 62 3e 2e 20 20 46  te_stat1</b>.  F
1990: 75 74 75 72 65 20 65 6e 68 61 6e 63 65 6d 65 6e  uture enhancemen
19a0: 74 73 20 6d 61 79 20 63 72 65 61 74 65 0a 61 64  ts may create.ad
19b0: 64 69 74 69 6f 6e 61 6c 20 74 61 62 6c 65 73 20  ditional tables 
19c0: 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61  with the same na
19d0: 6d 65 20 70 61 74 74 65 72 6e 20 65 78 63 65 70  me pattern excep
19e0: 74 20 77 69 74 68 20 74 68 65 20 22 31 22 0a 63  t with the "1".c
19f0: 68 61 6e 67 65 64 20 74 6f 20 61 20 64 69 66 66  hanged to a diff
1a00: 65 72 65 6e 74 20 64 69 67 69 74 2e 20 20 54 68  erent digit.  Th
1a10: 65 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74  e <b>sqlite_stat
1a20: 31 3c 2f 62 3e 20 74 61 62 6c 65 20 63 61 6e 6e  1</b> table cann
1a30: 6f 74 0a 62 65 20 3c 61 20 68 72 65 66 3d 22 23  ot.be <a href="#
1a40: 64 72 6f 70 74 61 62 6c 65 22 3e 44 52 4f 50 3c  droptable">DROP<
1a50: 2f 61 3e 70 65 64 2c 0a 62 75 74 20 61 6c 6c 20  /a>ped,.but all 
1a60: 74 68 65 20 63 6f 6e 74 65 6e 74 20 63 61 6e 20  the content can 
1a70: 62 65 20 3c 61 20 68 72 65 66 3d 22 23 64 65 6c  be <a href="#del
1a80: 65 74 65 22 3e 44 45 4c 45 54 45 3c 2f 61 3e 64  ete">DELETE</a>d
1a90: 20 77 68 69 63 68 20 68 61 73 20 74 68 65 0a 73   which has the.s
1aa0: 61 6d 65 20 65 66 66 65 63 74 2e 3c 2f 70 3e 0a  ame effect.</p>.
1ab0: 7d 0a 0a 53 65 63 74 69 6f 6e 20 7b 41 54 54 41  }..Section {ATTA
1ac0: 43 48 20 44 41 54 41 42 41 53 45 7d 20 61 74 74  CH DATABASE} att
1ad0: 61 63 68 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ach..Syntax {sql
1ae0: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 41 54  -statement} {.AT
1af0: 54 41 43 48 20 5b 44 41 54 41 42 41 53 45 5d 20  TACH [DATABASE] 
1b00: 3c 64 61 74 61 62 61 73 65 2d 66 69 6c 65 6e 61  <database-filena
1b10: 6d 65 3e 20 41 53 20 3c 64 61 74 61 62 61 73 65  me> AS <database
1b20: 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b  -name>.}..puts {
1b30: 0a 3c 70 3e 54 68 65 20 41 54 54 41 43 48 20 44  .<p>The ATTACH D
1b40: 41 54 41 42 41 53 45 20 73 74 61 74 65 6d 65 6e  ATABASE statemen
1b50: 74 20 61 64 64 73 20 61 6e 6f 74 68 65 72 20 64  t adds another d
1b60: 61 74 61 62 61 73 65 20 0a 66 69 6c 65 20 74 6f  atabase .file to
1b70: 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74   the current dat
1b80: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1b90: 2e 20 20 49 66 20 74 68 65 20 66 69 6c 65 6e 61  .  If the filena
1ba0: 6d 65 20 63 6f 6e 74 61 69 6e 73 20 0a 70 75 6e  me contains .pun
1bb0: 63 74 75 61 74 69 6f 6e 20 63 68 61 72 61 63 74  ctuation charact
1bc0: 65 72 73 20 69 74 20 6d 75 73 74 20 62 65 20 71  ers it must be q
1bd0: 75 6f 74 65 64 2e 20 20 54 68 65 20 6e 61 6d 65  uoted.  The name
1be0: 73 20 27 6d 61 69 6e 27 20 61 6e 64 20 0a 27 74  s 'main' and .'t
1bf0: 65 6d 70 27 20 72 65 66 65 72 20 74 6f 20 74 68  emp' refer to th
1c00: 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20  e main database 
1c10: 61 6e 64 20 74 68 65 20 64 61 74 61 62 61 73 65  and the database
1c20: 20 75 73 65 64 20 66 6f 72 20 0a 74 65 6d 70 6f   used for .tempo
1c30: 72 61 72 79 20 74 61 62 6c 65 73 2e 20 20 54 68  rary tables.  Th
1c40: 65 73 65 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  ese cannot be de
1c50: 74 61 63 68 65 64 2e 20 20 41 74 74 61 63 68 65  tached.  Attache
1c60: 64 20 64 61 74 61 62 61 73 65 73 20 0a 61 72 65  d databases .are
1c70: 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74   removed using t
1c80: 68 65 20 3c 61 20 68 72 65 66 3d 22 23 64 65 74  he <a href="#det
1c90: 61 63 68 22 3e 44 45 54 41 43 48 20 44 41 54 41  ach">DETACH DATA
1ca0: 42 41 53 45 3c 2f 61 3e 20 0a 73 74 61 74 65 6d  BASE</a> .statem
1cb0: 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75  ent.</p>..<p>You
1cc0: 20 63 61 6e 20 72 65 61 64 20 66 72 6f 6d 20 61   can read from a
1cd0: 6e 64 20 77 72 69 74 65 20 74 6f 20 61 6e 20 61  nd write to an a
1ce0: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
1cf0: 20 61 6e 64 20 79 6f 75 0a 63 61 6e 20 6d 6f 64   and you.can mod
1d00: 69 66 79 20 74 68 65 20 73 63 68 65 6d 61 20 6f  ify the schema o
1d10: 66 20 74 68 65 20 61 74 74 61 63 68 65 64 20 64  f the attached d
1d20: 61 74 61 62 61 73 65 2e 20 20 54 68 69 73 20 69  atabase.  This i
1d30: 73 20 61 20 6e 65 77 0a 66 65 61 74 75 72 65 20  s a new.feature 
1d40: 6f 66 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  of SQLite versio
1d50: 6e 20 33 2e 30 2e 20 20 49 6e 20 53 51 4c 69 74  n 3.0.  In SQLit
1d60: 65 20 32 2e 38 2c 20 73 63 68 65 6d 61 20 63 68  e 2.8, schema ch
1d70: 61 6e 67 65 73 0a 74 6f 20 61 74 74 61 63 68 65  anges.to attache
1d80: 64 20 64 61 74 61 62 61 73 65 73 20 77 65 72 65  d databases were
1d90: 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e 3c 2f 70   not allowed.</p
1da0: 3e 0a 0a 3c 70 3e 59 6f 75 20 63 61 6e 6e 6f 74  >..<p>You cannot
1db0: 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 74 61   create a new ta
1dc0: 62 6c 65 20 77 69 74 68 20 74 68 65 20 73 61 6d  ble with the sam
1dd0: 65 20 6e 61 6d 65 20 61 73 20 61 20 74 61 62 6c  e name as a tabl
1de0: 65 20 69 6e 20 0a 61 6e 20 61 74 74 61 63 68 65  e in .an attache
1df0: 64 20 64 61 74 61 62 61 73 65 2c 20 62 75 74 20  d database, but 
1e00: 79 6f 75 20 63 61 6e 20 61 74 74 61 63 68 20 61  you can attach a
1e10: 20 64 61 74 61 62 61 73 65 20 77 68 69 63 68 20   database which 
1e20: 63 6f 6e 74 61 69 6e 73 0a 74 61 62 6c 65 73 20  contains.tables 
1e30: 77 68 6f 73 65 20 6e 61 6d 65 73 20 61 72 65 20  whose names are 
1e40: 64 75 70 6c 69 63 61 74 65 73 20 6f 66 20 74 61  duplicates of ta
1e50: 62 6c 65 73 20 69 6e 20 74 68 65 20 6d 61 69 6e  bles in the main
1e60: 20 64 61 74 61 62 61 73 65 2e 20 20 49 74 20 69   database.  It i
1e70: 73 20 0a 61 6c 73 6f 20 70 65 72 6d 69 73 73 69  s .also permissi
1e80: 62 6c 65 20 74 6f 20 61 74 74 61 63 68 20 74 68  ble to attach th
1e90: 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20  e same database 
1ea0: 66 69 6c 65 20 6d 75 6c 74 69 70 6c 65 20 74 69  file multiple ti
1eb0: 6d 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62  mes.</p>..<p>Tab
1ec0: 6c 65 73 20 69 6e 20 61 6e 20 61 74 74 61 63 68  les in an attach
1ed0: 65 64 20 64 61 74 61 62 61 73 65 20 63 61 6e 20  ed database can 
1ee0: 62 65 20 72 65 66 65 72 72 65 64 20 74 6f 20 75  be referred to u
1ef0: 73 69 6e 67 20 74 68 65 20 73 79 6e 74 61 78 20  sing the syntax 
1f00: 0a 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d  .<i>database-nam
1f10: 65 2e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e  e.table-name</i>
1f20: 2e 20 20 49 66 20 61 6e 20 61 74 74 61 63 68 65  .  If an attache
1f30: 64 20 74 61 62 6c 65 20 64 6f 65 73 6e 27 74 20  d table doesn't 
1f40: 68 61 76 65 20 0a 61 20 64 75 70 6c 69 63 61 74  have .a duplicat
1f50: 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20  e table name in 
1f60: 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73  the main databas
1f70: 65 2c 20 69 74 20 64 6f 65 73 6e 27 74 20 72 65  e, it doesn't re
1f80: 71 75 69 72 65 20 61 20 0a 64 61 74 61 62 61 73  quire a .databas
1f90: 65 20 6e 61 6d 65 20 70 72 65 66 69 78 2e 20 20  e name prefix.  
1fa0: 57 68 65 6e 20 61 20 64 61 74 61 62 61 73 65 20  When a database 
1fb0: 69 73 20 61 74 74 61 63 68 65 64 2c 20 61 6c 6c  is attached, all
1fc0: 20 6f 66 20 69 74 73 20 0a 74 61 62 6c 65 73 20   of its .tables 
1fd0: 77 68 69 63 68 20 64 6f 6e 27 74 20 68 61 76 65  which don't have
1fe0: 20 64 75 70 6c 69 63 61 74 65 20 6e 61 6d 65 73   duplicate names
1ff0: 20 62 65 63 6f 6d 65 20 74 68 65 20 64 65 66 61   become the defa
2000: 75 6c 74 20 74 61 62 6c 65 0a 6f 66 20 74 68 61  ult table.of tha
2010: 74 20 6e 61 6d 65 2e 20 20 41 6e 79 20 74 61 62  t name.  Any tab
2020: 6c 65 73 20 6f 66 20 74 68 61 74 20 6e 61 6d 65  les of that name
2030: 20 61 74 74 61 63 68 65 64 20 61 66 74 65 72 77   attached afterw
2040: 61 72 64 73 20 72 65 71 75 69 72 65 20 74 68 65  ards require the
2050: 20 74 61 62 6c 65 20 0a 70 72 65 66 69 78 2e 20   table .prefix. 
2060: 49 66 20 74 68 65 20 64 65 66 61 75 6c 74 20 74  If the default t
2070: 61 62 6c 65 20 6f 66 20 61 20 67 69 76 65 6e 20  able of a given 
2080: 6e 61 6d 65 20 69 73 20 64 65 74 61 63 68 65 64  name is detached
2090: 2c 20 74 68 65 6e 20 0a 74 68 65 20 6c 61 73 74  , then .the last
20a0: 20 74 61 62 6c 65 20 6f 66 20 74 68 61 74 20 6e   table of that n
20b0: 61 6d 65 20 61 74 74 61 63 68 65 64 20 62 65 63  ame attached bec
20c0: 6f 6d 65 73 20 74 68 65 20 6e 65 77 20 64 65 66  omes the new def
20d0: 61 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54  ault.</p>..<p>.T
20e0: 72 61 6e 73 61 63 74 69 6f 6e 73 20 69 6e 76 6f  ransactions invo
20f0: 6c 76 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20 61  lving multiple a
2100: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
2110: 73 20 61 72 65 20 61 74 6f 6d 69 63 2c 0a 61 73  s are atomic,.as
2120: 73 75 6d 69 6e 67 20 74 68 61 74 20 74 68 65 20  suming that the 
2130: 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20 69 73  main database is
2140: 20 6e 6f 74 20 22 3a 6d 65 6d 6f 72 79 3a 22 2e   not ":memory:".
2150: 20 20 49 66 20 74 68 65 20 6d 61 69 6e 0a 64 61    If the main.da
2160: 74 61 62 61 73 65 20 69 73 20 22 3a 6d 65 6d 6f  tabase is ":memo
2170: 72 79 3a 22 20 74 68 65 6e 20 0a 74 72 61 6e 73  ry:" then .trans
2180: 61 63 74 69 6f 6e 73 20 63 6f 6e 74 69 6e 75 65  actions continue
2190: 20 74 6f 20 62 65 20 61 74 6f 6d 69 63 20 77 69   to be atomic wi
21a0: 74 68 69 6e 20 65 61 63 68 20 69 6e 64 69 76 69  thin each indivi
21b0: 64 75 61 6c 0a 64 61 74 61 62 61 73 65 20 66 69  dual.database fi
21c0: 6c 65 2e 20 42 75 74 20 69 66 20 74 68 65 20 68  le. But if the h
21d0: 6f 73 74 20 63 6f 6d 70 75 74 65 72 20 63 72 61  ost computer cra
21e0: 73 68 65 73 20 69 6e 20 74 68 65 20 6d 69 64 64  shes in the midd
21f0: 6c 65 0a 6f 66 20 61 20 43 4f 4d 4d 49 54 20 77  le.of a COMMIT w
2200: 68 65 72 65 20 74 77 6f 20 6f 72 20 6d 6f 72 65  here two or more
2210: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 20   database files 
2220: 61 72 65 20 75 70 64 61 74 65 64 2c 0a 73 6f 6d  are updated,.som
2230: 65 20 6f 66 20 74 68 6f 73 65 20 66 69 6c 65 73  e of those files
2240: 20 6d 69 67 68 74 20 67 65 74 20 74 68 65 20 63   might get the c
2250: 68 61 6e 67 65 73 20 77 68 65 72 65 20 6f 74 68  hanges where oth
2260: 65 72 73 0a 6d 69 67 68 74 20 6e 6f 74 2e 0a 41  ers.might not..A
2270: 74 6f 6d 69 63 20 63 6f 6d 6d 69 74 20 6f 66 20  tomic commit of 
2280: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
2290: 65 73 20 69 73 20 61 20 6e 65 77 20 66 65 61 74  es is a new feat
22a0: 75 72 65 20 6f 66 20 53 51 4c 69 74 65 20 76 65  ure of SQLite ve
22b0: 72 73 69 6f 6e 20 33 2e 30 2e 0a 49 6e 20 53 51  rsion 3.0..In SQ
22c0: 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 32 2e 38  Lite version 2.8
22d0: 2c 20 61 6c 6c 20 63 6f 6d 6d 69 74 73 20 74 6f  , all commits to
22e0: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
22f0: 73 65 73 20 62 65 68 61 76 65 64 20 61 73 20 69  ses behaved as i
2300: 66 0a 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  f.the main datab
2310: 61 73 65 20 77 65 72 65 20 22 3a 6d 65 6d 6f 72  ase were ":memor
2320: 79 3a 22 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  y:"..</p>..<p>Th
2330: 65 72 65 20 69 73 20 61 20 63 6f 6d 70 69 6c 65  ere is a compile
2340: 2d 74 69 6d 65 20 6c 69 6d 69 74 20 6f 66 20 31  -time limit of 1
2350: 30 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  0 attached datab
2360: 61 73 65 20 66 69 6c 65 73 2e 3c 2f 70 3e 0a 7d  ase files.</p>.}
2370: 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 42 45 47 49  ...Section {BEGI
2380: 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74  N TRANSACTION} t
2390: 72 61 6e 73 61 63 74 69 6f 6e 0a 0a 53 79 6e 74  ransaction..Synt
23a0: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
23b0: 74 7d 20 7b 0a 42 45 47 49 4e 20 5b 20 44 45 46  t} {.BEGIN [ DEF
23c0: 45 52 52 45 44 20 7c 20 49 4d 4d 45 44 49 41 54  ERRED | IMMEDIAT
23d0: 45 20 7c 20 45 58 43 4c 55 53 49 56 45 20 5d 20  E | EXCLUSIVE ] 
23e0: 5b 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e  [TRANSACTION [<n
23f0: 61 6d 65 3e 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20  ame>]].}.Syntax 
2400: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
2410: 7b 0a 45 4e 44 20 5b 54 52 41 4e 53 41 43 54 49  {.END [TRANSACTI
2420: 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53  ON [<name>]].}.S
2430: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
2440: 6d 65 6e 74 7d 20 7b 0a 43 4f 4d 4d 49 54 20 5b  ment} {.COMMIT [
2450: 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61  TRANSACTION [<na
2460: 6d 65 3e 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b  me>]].}.Syntax {
2470: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
2480: 0a 52 4f 4c 4c 42 41 43 4b 20 5b 54 52 41 4e 53  .ROLLBACK [TRANS
2490: 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d  ACTION [<name>]]
24a0: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 42 65  .}..puts {.<p>Be
24b0: 67 69 6e 6e 69 6e 67 20 69 6e 20 76 65 72 73 69  ginning in versi
24c0: 6f 6e 20 32 2e 30 2c 20 53 51 4c 69 74 65 20 73  on 2.0, SQLite s
24d0: 75 70 70 6f 72 74 73 20 74 72 61 6e 73 61 63 74  upports transact
24e0: 69 6f 6e 73 20 77 69 74 68 0a 72 6f 6c 6c 62 61  ions with.rollba
24f0: 63 6b 20 61 6e 64 20 61 74 6f 6d 69 63 20 63 6f  ck and atomic co
2500: 6d 6d 69 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  mmit.</p>..<p>Th
2510: 65 20 6f 70 74 69 6f 6e 61 6c 20 74 72 61 6e 73  e optional trans
2520: 61 63 74 69 6f 6e 20 6e 61 6d 65 20 69 73 20 69  action name is i
2530: 67 6e 6f 72 65 64 2e 20 53 51 4c 69 74 65 20 63  gnored. SQLite c
2540: 75 72 72 65 6e 74 6c 79 20 0a 64 6f 65 73 20 6e  urrently .does n
2550: 6f 74 20 61 6c 6c 6f 77 20 6e 65 73 74 65 64 20  ot allow nested 
2560: 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 3c 2f 70  transactions.</p
2570: 3e 0a 0a 3c 70 3e 0a 4e 6f 20 63 68 61 6e 67 65  >..<p>.No change
2580: 73 20 63 61 6e 20 62 65 20 6d 61 64 65 20 74 6f  s can be made to
2590: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 65 78   the database ex
25a0: 63 65 70 74 20 77 69 74 68 69 6e 20 61 20 74 72  cept within a tr
25b0: 61 6e 73 61 63 74 69 6f 6e 2e 0a 41 6e 79 20 63  ansaction..Any c
25c0: 6f 6d 6d 61 6e 64 20 74 68 61 74 20 63 68 61 6e  ommand that chan
25d0: 67 65 73 20 74 68 65 20 64 61 74 61 62 61 73 65  ges the database
25e0: 20 28 62 61 73 69 63 61 6c 6c 79 2c 20 61 6e 79   (basically, any
25f0: 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a 6f 74 68   SQL command.oth
2600: 65 72 20 74 68 61 6e 20 53 45 4c 45 43 54 29 20  er than SELECT) 
2610: 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c  will automatical
2620: 6c 79 20 73 74 61 72 74 20 61 20 74 72 61 6e 73  ly start a trans
2630: 61 63 74 69 6f 6e 20 69 66 0a 6f 6e 65 20 69 73  action if.one is
2640: 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 69 6e 20   not already in 
2650: 65 66 66 65 63 74 2e 20 20 41 75 74 6f 6d 61 74  effect.  Automat
2660: 69 63 61 6c 6c 79 20 73 74 61 72 74 65 64 20 74  ically started t
2670: 72 61 6e 73 61 63 74 69 6f 6e 73 0a 61 72 65 20  ransactions.are 
2680: 63 6f 6d 6d 69 74 74 65 64 20 61 74 20 74 68 65  committed at the
2690: 20 63 6f 6e 63 6c 75 73 69 6f 6e 20 6f 66 20 74   conclusion of t
26a0: 68 65 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e  he command..</p>
26b0: 0a 0a 3c 70 3e 0a 54 72 61 6e 73 61 63 74 69 6f  ..<p>.Transactio
26c0: 6e 73 20 63 61 6e 20 62 65 20 73 74 61 72 74 65  ns can be starte
26d0: 64 20 6d 61 6e 75 61 6c 6c 79 20 75 73 69 6e 67  d manually using
26e0: 20 74 68 65 20 42 45 47 49 4e 0a 63 6f 6d 6d 61   the BEGIN.comma
26f0: 6e 64 2e 20 20 53 75 63 68 20 74 72 61 6e 73 61  nd.  Such transa
2700: 63 74 69 6f 6e 73 20 75 73 75 61 6c 6c 79 20 70  ctions usually p
2710: 65 72 73 69 73 74 20 75 6e 74 69 6c 20 74 68 65  ersist until the
2720: 20 6e 65 78 74 0a 43 4f 4d 4d 49 54 20 6f 72 20   next.COMMIT or 
2730: 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64  ROLLBACK command
2740: 2e 20 20 42 75 74 20 61 20 74 72 61 6e 73 61 63  .  But a transac
2750: 74 69 6f 6e 20 77 69 6c 6c 20 61 6c 73 6f 20 0a  tion will also .
2760: 52 4f 4c 4c 42 41 43 4b 20 69 66 20 74 68 65 20  ROLLBACK if the 
2770: 64 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73  database is clos
2780: 65 64 20 6f 72 20 69 66 20 61 6e 20 65 72 72 6f  ed or if an erro
2790: 72 20 6f 63 63 75 72 73 0a 61 6e 64 20 74 68 65  r occurs.and the
27a0: 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6e 66 6c 69   ROLLBACK confli
27b0: 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
27c0: 67 6f 72 69 74 68 6d 20 69 73 20 73 70 65 63 69  gorithm is speci
27d0: 66 69 65 64 2e 0a 53 65 65 20 74 68 65 20 64 6f  fied..See the do
27e0: 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e 20 74  cumentation on t
27f0: 68 65 20 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e  he <a href="#con
2800: 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49  flict">ON CONFLI
2810: 43 54 3c 2f 61 3e 0a 63 6c 61 75 73 65 20 66 6f  CT</a>.clause fo
2820: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
2830: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74  ormation about t
2840: 68 65 20 52 4f 4c 4c 42 41 43 4b 0a 63 6f 6e 66  he ROLLBACK.conf
2850: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
2860: 61 6c 67 6f 72 69 74 68 6d 2e 0a 3c 2f 70 3e 0a  algorithm..</p>.
2870: 0a 3c 70 3e 0a 49 6e 20 53 51 4c 69 74 65 20 76  .<p>.In SQLite v
2880: 65 72 73 69 6f 6e 20 33 2e 30 2e 38 20 61 6e 64  ersion 3.0.8 and
2890: 20 6c 61 74 65 72 2c 20 74 72 61 6e 73 61 63 74   later, transact
28a0: 69 6f 6e 73 20 63 61 6e 20 62 65 20 64 65 66 65  ions can be defe
28b0: 72 72 65 64 2c 0a 69 6d 6d 65 64 69 61 74 65 2c  rred,.immediate,
28c0: 20 6f 72 20 65 78 63 6c 75 73 69 76 65 2e 20 20   or exclusive.  
28d0: 44 65 66 65 72 72 65 64 20 6d 65 61 6e 73 20 74  Deferred means t
28e0: 68 61 74 20 6e 6f 20 6c 6f 63 6b 73 20 61 72 65  hat no locks are
28f0: 20 61 63 71 75 69 72 65 64 0a 6f 6e 20 74 68 65   acquired.on the
2900: 20 64 61 74 61 62 61 73 65 20 75 6e 74 69 6c 20   database until 
2910: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
2920: 66 69 72 73 74 20 61 63 63 65 73 73 65 64 2e 20  first accessed. 
2930: 20 54 68 75 73 20 77 69 74 68 20 61 0a 64 65 66   Thus with a.def
2940: 65 72 72 65 64 20 74 72 61 6e 73 61 63 74 69 6f  erred transactio
2950: 6e 2c 20 74 68 65 20 42 45 47 49 4e 20 73 74 61  n, the BEGIN sta
2960: 74 65 6d 65 6e 74 20 69 74 73 65 6c 66 20 64 6f  tement itself do
2970: 65 73 20 6e 6f 74 68 69 6e 67 2e 20 20 4c 6f 63  es nothing.  Loc
2980: 6b 73 0a 61 72 65 20 6e 6f 74 20 61 63 71 75 69  ks.are not acqui
2990: 72 65 64 20 75 6e 74 69 6c 20 74 68 65 20 66 69  red until the fi
29a0: 72 73 74 20 72 65 61 64 20 6f 72 20 77 72 69 74  rst read or writ
29b0: 65 20 6f 70 65 72 61 74 69 6f 6e 2e 20 20 54 68  e operation.  Th
29c0: 65 20 66 69 72 73 74 20 72 65 61 64 0a 6f 70 65  e first read.ope
29d0: 72 61 74 69 6f 6e 20 61 67 61 69 6e 73 74 20 61  ration against a
29e0: 20 64 61 74 61 62 61 73 65 20 63 72 65 61 74 65   database create
29f0: 73 20 61 20 53 48 41 52 45 44 20 6c 6f 63 6b 20  s a SHARED lock 
2a00: 61 6e 64 20 74 68 65 20 66 69 72 73 74 0a 77 72  and the first.wr
2a10: 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 63 72  ite operation cr
2a20: 65 61 74 65 73 20 61 20 52 45 53 45 52 56 45 44  eates a RESERVED
2a30: 20 6c 6f 63 6b 2e 20 20 20 42 65 63 61 75 73 65   lock.   Because
2a40: 20 74 68 65 20 61 63 71 75 69 73 69 74 69 6f 6e   the acquisition
2a50: 20 6f 66 0a 6c 6f 63 6b 73 20 69 73 20 64 65 66   of.locks is def
2a60: 65 72 72 65 64 20 75 6e 74 69 6c 20 74 68 65 79  erred until they
2a70: 20 61 72 65 20 6e 65 65 64 65 64 2c 20 69 74 20   are needed, it 
2a80: 69 73 20 70 6f 73 73 69 62 6c 65 20 74 68 61 74  is possible that
2a90: 20 61 6e 6f 74 68 65 72 0a 74 68 72 65 61 64 20   another.thread 
2aa0: 6f 72 20 70 72 6f 63 65 73 73 20 63 6f 75 6c 64  or process could
2ab0: 20 63 72 65 61 74 65 20 61 20 73 65 70 61 72 61   create a separa
2ac0: 74 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 61  te transaction a
2ad0: 6e 64 20 77 72 69 74 65 20 74 6f 0a 74 68 65 20  nd write to.the 
2ae0: 64 61 74 61 62 61 73 65 20 61 66 74 65 72 20 74  database after t
2af0: 68 65 20 42 45 47 49 4e 20 6f 6e 20 74 68 65 20  he BEGIN on the 
2b00: 63 75 72 72 65 6e 74 20 74 68 72 65 61 64 20 68  current thread h
2b10: 61 73 20 65 78 65 63 75 74 65 64 2e 0a 49 66 20  as executed..If 
2b20: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
2b30: 69 73 20 69 6d 6d 65 64 69 61 74 65 2c 20 74 68  is immediate, th
2b40: 65 6e 20 52 45 53 45 52 56 45 44 20 6c 6f 63 6b  en RESERVED lock
2b50: 73 0a 61 72 65 20 61 63 71 75 69 72 65 64 20 6f  s.are acquired o
2b60: 6e 20 61 6c 6c 20 64 61 74 61 62 61 73 65 73 20  n all databases 
2b70: 61 73 20 73 6f 6f 6e 20 61 73 20 74 68 65 20 42  as soon as the B
2b80: 45 47 49 4e 20 63 6f 6d 6d 61 6e 64 20 69 73 0a  EGIN command is.
2b90: 65 78 65 63 75 74 65 64 2c 20 77 69 74 68 6f 75  executed, withou
2ba0: 74 20 77 61 69 74 69 6e 67 20 66 6f 72 20 74 68  t waiting for th
2bb0: 65 0a 64 61 74 61 62 61 73 65 20 74 6f 20 62 65  e.database to be
2bc0: 20 75 73 65 64 2e 20 20 41 66 74 65 72 20 61 20   used.  After a 
2bd0: 42 45 47 49 4e 20 49 4d 4d 45 44 49 41 54 45 2c  BEGIN IMMEDIATE,
2be0: 20 79 6f 75 20 61 72 65 20 67 75 61 72 61 6e 74   you are guarant
2bf0: 65 65 64 20 74 68 61 74 0a 6e 6f 20 6f 74 68 65  eed that.no othe
2c00: 72 20 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63  r thread or proc
2c10: 65 73 73 20 77 69 6c 6c 20 62 65 20 61 62 6c 65  ess will be able
2c20: 20 74 6f 20 77 72 69 74 65 20 74 6f 20 74 68 65   to write to the
2c30: 20 64 61 74 61 62 61 73 65 20 6f 72 0a 64 6f 20   database or.do 
2c40: 61 20 42 45 47 49 4e 20 49 4d 4d 45 44 49 41 54  a BEGIN IMMEDIAT
2c50: 45 20 6f 72 20 42 45 47 49 4e 20 45 58 43 4c 55  E or BEGIN EXCLU
2c60: 53 49 56 45 2e 20 20 4f 74 68 65 72 20 70 72 6f  SIVE.  Other pro
2c70: 63 65 73 73 65 73 20 63 61 6e 20 63 6f 6e 74 69  cesses can conti
2c80: 6e 75 65 0a 74 6f 20 72 65 61 64 20 66 72 6f 6d  nue.to read from
2c90: 20 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 68   the database, h
2ca0: 6f 77 65 76 65 72 2e 20 20 41 6e 20 65 78 63 6c  owever.  An excl
2cb0: 75 73 69 76 65 20 74 72 61 6e 73 61 63 74 69 6f  usive transactio
2cc0: 6e 20 63 61 75 73 65 73 0a 45 58 43 4c 55 53 49  n causes.EXCLUSI
2cd0: 56 45 20 6c 6f 63 6b 73 20 74 6f 20 62 65 20 61  VE locks to be a
2ce0: 63 71 75 69 72 65 64 20 6f 6e 20 61 6c 6c 20 64  cquired on all d
2cf0: 61 74 61 62 61 73 65 73 2e 20 20 41 66 74 65 72  atabases.  After
2d00: 20 61 20 42 45 47 49 4e 0a 45 58 43 4c 55 53 49   a BEGIN.EXCLUSI
2d10: 56 45 2c 20 79 6f 75 20 61 72 65 20 67 75 61 72  VE, you are guar
2d20: 61 6e 74 65 65 64 20 74 68 61 74 20 6e 6f 20 6f  anteed that no o
2d30: 74 68 65 72 20 74 68 72 65 61 64 20 6f 72 20 70  ther thread or p
2d40: 72 6f 63 65 73 73 20 77 69 6c 6c 0a 62 65 20 61  rocess will.be a
2d50: 62 6c 65 20 74 6f 20 72 65 61 64 20 6f 72 20 77  ble to read or w
2d60: 72 69 74 65 20 74 68 65 20 64 61 74 61 62 61 73  rite the databas
2d70: 65 20 75 6e 74 69 6c 20 74 68 65 20 74 72 61 6e  e until the tran
2d80: 73 61 63 74 69 6f 6e 20 69 73 0a 63 6f 6d 70 6c  saction is.compl
2d90: 65 74 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41  ete..</p>..<p>.A
2da0: 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20   description of 
2db0: 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 53  the meaning of S
2dc0: 48 41 52 45 44 2c 20 52 45 53 45 52 56 45 44 2c  HARED, RESERVED,
2dd0: 20 61 6e 64 20 45 58 43 4c 55 53 49 56 45 20 6c   and EXCLUSIVE l
2de0: 6f 63 6b 73 0a 69 73 20 61 76 61 69 6c 61 62 6c  ocks.is availabl
2df0: 65 20 3c 61 20 68 72 65 66 3d 22 6c 6f 63 6b 69  e <a href="locki
2e00: 6e 67 76 33 2e 68 74 6d 6c 22 3e 73 65 70 61 72  ngv3.html">separ
2e10: 61 74 65 6c 79 3c 2f 61 3e 2e 0a 3c 2f 70 3e 0a  ately</a>..</p>.
2e20: 0a 3c 70 3e 0a 54 68 65 20 64 65 66 61 75 6c 74  .<p>.The default
2e30: 20 62 65 68 61 76 69 6f 72 20 66 6f 72 20 53 51   behavior for SQ
2e40: 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 30  Lite version 3.0
2e50: 2e 38 20 69 73 20 61 0a 64 65 66 65 72 72 65 64  .8 is a.deferred
2e60: 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 46   transaction.  F
2e70: 6f 72 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  or SQLite versio
2e80: 6e 20 33 2e 30 2e 30 20 74 68 72 6f 75 67 68 20  n 3.0.0 through 
2e90: 33 2e 30 2e 37 2c 0a 64 65 66 65 72 72 65 64 20  3.0.7,.deferred 
2ea0: 69 73 20 74 68 65 20 6f 6e 6c 79 20 6b 69 6e 64  is the only kind
2eb0: 20 6f 66 20 74 72 61 6e 73 61 63 74 69 6f 6e 20   of transaction 
2ec0: 61 76 61 69 6c 61 62 6c 65 2e 20 20 46 6f 72 20  available.  For 
2ed0: 53 51 4c 69 74 65 0a 76 65 72 73 69 6f 6e 20 32  SQLite.version 2
2ee0: 2e 38 20 61 6e 64 20 65 61 72 6c 69 65 72 2c 20  .8 and earlier, 
2ef0: 61 6c 6c 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  all transactions
2f00: 20 61 72 65 20 65 78 63 6c 75 73 69 76 65 2e 0a   are exclusive..
2f10: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 43 4f  </p>..<p>.The CO
2f20: 4d 4d 49 54 20 63 6f 6d 6d 61 6e 64 20 64 6f 65  MMIT command doe
2f30: 73 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 70  s not actually p
2f40: 65 72 66 6f 72 6d 20 61 20 63 6f 6d 6d 69 74 20  erform a commit 
2f50: 75 6e 74 69 6c 20 61 6c 6c 0a 70 65 6e 64 69 6e  until all.pendin
2f60: 67 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 20 66  g SQL commands f
2f70: 69 6e 69 73 68 2e 20 20 54 68 75 73 20 69 66 20  inish.  Thus if 
2f80: 74 77 6f 20 6f 72 20 6d 6f 72 65 20 53 45 4c 45  two or more SELE
2f90: 43 54 20 73 74 61 74 65 6d 65 6e 74 73 0a 61 72  CT statements.ar
2fa0: 65 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20  e in the middle 
2fb0: 6f 66 20 70 72 6f 63 65 73 73 69 6e 67 20 61 6e  of processing an
2fc0: 64 20 61 20 43 4f 4d 4d 49 54 20 69 73 20 65 78  d a COMMIT is ex
2fd0: 65 63 75 74 65 64 2c 20 74 68 65 20 63 6f 6d 6d  ecuted, the comm
2fe0: 69 74 0a 77 69 6c 6c 20 6e 6f 74 20 61 63 74 75  it.will not actu
2ff0: 61 6c 6c 79 20 6f 63 63 75 72 20 75 6e 74 69 6c  ally occur until
3000: 20 61 6c 6c 20 53 45 4c 45 43 54 20 73 74 61 74   all SELECT stat
3010: 65 6d 65 6e 74 73 20 66 69 6e 69 73 68 2e 0a 3c  ements finish..<
3020: 2f 70 3e 0a 0a 3c 70 3e 0a 41 6e 20 61 74 74 65  /p>..<p>.An atte
3030: 6d 70 74 20 74 6f 20 65 78 65 63 75 74 65 20 43  mpt to execute C
3040: 4f 4d 4d 49 54 20 6d 69 67 68 74 20 72 65 73 75  OMMIT might resu
3050: 6c 74 20 69 6e 20 61 6e 20 53 51 4c 49 54 45 5f  lt in an SQLITE_
3060: 42 55 53 59 20 72 65 74 75 72 6e 20 63 6f 64 65  BUSY return code
3070: 2e 0a 54 68 69 73 20 69 6e 64 69 63 61 74 65 73  ..This indicates
3080: 20 74 68 61 74 20 61 6e 6f 74 68 65 72 20 74 68   that another th
3090: 72 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20  read or process 
30a0: 68 61 64 20 61 20 72 65 61 64 20 6c 6f 63 6b 20  had a read lock 
30b0: 6f 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 0a  on the database.
30c0: 74 68 61 74 20 70 72 65 76 65 6e 74 65 64 20 74  that prevented t
30d0: 68 65 20 64 61 74 61 62 61 73 65 20 66 72 6f 6d  he database from
30e0: 20 62 65 69 6e 67 20 75 70 64 61 74 65 64 2e 20   being updated. 
30f0: 20 57 68 65 6e 20 43 4f 4d 4d 49 54 20 66 61 69   When COMMIT fai
3100: 6c 73 20 69 6e 20 74 68 69 73 0a 77 61 79 2c 20  ls in this.way, 
3110: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
3120: 72 65 6d 61 69 6e 73 20 61 63 74 69 76 65 20 61  remains active a
3130: 6e 64 20 74 68 65 20 43 4f 4d 4d 49 54 20 63 61  nd the COMMIT ca
3140: 6e 20 62 65 20 72 65 74 72 69 65 64 20 6c 61 74  n be retried lat
3150: 65 72 0a 61 66 74 65 72 20 74 68 65 20 72 65 61  er.after the rea
3160: 64 65 72 20 68 61 73 20 68 61 64 20 61 20 63 68  der has had a ch
3170: 61 6e 63 65 20 74 6f 20 63 6c 65 61 72 2e 0a 3c  ance to clear..<
3180: 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20  /p>.}...Section 
3190: 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e 74 0a  comment comment.
31a0: 0a 53 79 6e 74 61 78 20 7b 63 6f 6d 6d 65 6e 74  .Syntax {comment
31b0: 7d 20 7b 3c 53 51 4c 2d 63 6f 6d 6d 65 6e 74 3e  } {<SQL-comment>
31c0: 20 7c 20 3c 43 2d 63 6f 6d 6d 65 6e 74 3e 0a 7d   | <C-comment>.}
31d0: 20 7b 53 51 4c 2d 63 6f 6d 6d 65 6e 74 7d 20 7b   {SQL-comment} {
31e0: 2d 2d 20 3c 73 69 6e 67 6c 65 2d 6c 69 6e 65 3e  -- <single-line>
31f0: 0a 7d 20 7b 43 2d 63 6f 6d 6d 65 6e 74 7d 20 7b  .} {C-comment} {
3200: 2f 53 54 41 52 20 3c 6d 75 6c 74 69 70 6c 65 2d  /STAR <multiple-
3210: 6c 69 6e 65 73 3e 20 5b 53 54 41 52 2f 5d 0a 7d  lines> [STAR/].}
3220: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 20 43 6f 6d  ..puts {.<p> Com
3230: 6d 65 6e 74 73 20 61 72 65 6e 27 74 20 53 51 4c  ments aren't SQL
3240: 20 63 6f 6d 6d 61 6e 64 73 2c 20 62 75 74 20 63   commands, but c
3250: 61 6e 20 6f 63 63 75 72 20 69 6e 20 53 51 4c 20  an occur in SQL 
3260: 71 75 65 72 69 65 73 2e 20 54 68 65 79 20 61 72  queries. They ar
3270: 65 20 0a 74 72 65 61 74 65 64 20 61 73 20 77 68  e .treated as wh
3280: 69 74 65 73 70 61 63 65 20 62 79 20 74 68 65 20  itespace by the 
3290: 70 61 72 73 65 72 2e 20 20 54 68 65 79 20 63 61  parser.  They ca
32a0: 6e 20 62 65 67 69 6e 20 61 6e 79 77 68 65 72 65  n begin anywhere
32b0: 20 77 68 69 74 65 73 70 61 63 65 20 0a 63 61 6e   whitespace .can
32c0: 20 62 65 20 66 6f 75 6e 64 2c 20 69 6e 63 6c 75   be found, inclu
32d0: 64 69 6e 67 20 69 6e 73 69 64 65 20 65 78 70 72  ding inside expr
32e0: 65 73 73 69 6f 6e 73 20 74 68 61 74 20 73 70 61  essions that spa
32f0: 6e 20 6d 75 6c 74 69 70 6c 65 20 6c 69 6e 65 73  n multiple lines
3300: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 20 53 51 4c 20  ..</p>..<p> SQL 
3310: 63 6f 6d 6d 65 6e 74 73 20 6f 6e 6c 79 20 65 78  comments only ex
3320: 74 65 6e 64 20 74 6f 20 74 68 65 20 65 6e 64 20  tend to the end 
3330: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 6c  of the current l
3340: 69 6e 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 43 20  ine.</p>..<p> C 
3350: 63 6f 6d 6d 65 6e 74 73 20 63 61 6e 20 73 70 61  comments can spa
3360: 6e 20 61 6e 79 20 6e 75 6d 62 65 72 20 6f 66 20  n any number of 
3370: 6c 69 6e 65 73 2e 20 20 49 66 20 74 68 65 72 65  lines.  If there
3380: 20 69 73 20 6e 6f 20 74 65 72 6d 69 6e 61 74 69   is no terminati
3390: 6e 67 0a 64 65 6c 69 6d 69 74 65 72 2c 20 74 68  ng.delimiter, th
33a0: 65 79 20 65 78 74 65 6e 64 20 74 6f 20 74 68 65  ey extend to the
33b0: 20 65 6e 64 20 6f 66 20 74 68 65 20 69 6e 70 75   end of the inpu
33c0: 74 2e 20 20 54 68 69 73 20 69 73 20 6e 6f 74 20  t.  This is not 
33d0: 74 72 65 61 74 65 64 20 61 73 0a 61 6e 20 65 72  treated as.an er
33e0: 72 6f 72 2e 20 20 41 20 6e 65 77 20 53 51 4c 20  ror.  A new SQL 
33f0: 73 74 61 74 65 6d 65 6e 74 20 63 61 6e 20 62 65  statement can be
3400: 67 69 6e 20 6f 6e 20 61 20 6c 69 6e 65 20 61 66  gin on a line af
3410: 74 65 72 20 61 20 6d 75 6c 74 69 6c 69 6e 65 0a  ter a multiline.
3420: 63 6f 6d 6d 65 6e 74 20 65 6e 64 73 2e 20 20 43  comment ends.  C
3430: 20 63 6f 6d 6d 65 6e 74 73 20 63 61 6e 20 62 65   comments can be
3440: 20 65 6d 62 65 64 64 65 64 20 61 6e 79 77 68 65   embedded anywhe
3450: 72 65 20 77 68 69 74 65 73 70 61 63 65 20 63 61  re whitespace ca
3460: 6e 20 6f 63 63 75 72 2c 0a 69 6e 63 6c 75 64 69  n occur,.includi
3470: 6e 67 20 69 6e 73 69 64 65 20 65 78 70 72 65 73  ng inside expres
3480: 73 69 6f 6e 73 2c 20 61 6e 64 20 69 6e 20 74 68  sions, and in th
3490: 65 20 6d 69 64 64 6c 65 20 6f 66 20 6f 74 68 65  e middle of othe
34a0: 72 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  r SQL statements
34b0: 2e 0a 43 20 63 6f 6d 6d 65 6e 74 73 20 64 6f 20  ..C comments do 
34c0: 6e 6f 74 20 6e 65 73 74 2e 20 20 53 51 4c 20 63  not nest.  SQL c
34d0: 6f 6d 6d 65 6e 74 73 20 69 6e 73 69 64 65 20 61  omments inside a
34e0: 20 43 20 63 6f 6d 6d 65 6e 74 20 77 69 6c 6c 20   C comment will 
34f0: 62 65 20 69 67 6e 6f 72 65 64 2e 0a 3c 2f 70 3e  be ignored..</p>
3500: 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 43 4f 50  .}...Section COP
3510: 59 20 63 6f 70 79 0a 0a 53 79 6e 74 61 78 20 7b  Y copy..Syntax {
3520: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
3530: 0a 43 4f 50 59 20 5b 20 4f 52 20 3c 63 6f 6e 66  .COPY [ OR <conf
3540: 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 20  lict-algorithm> 
3550: 5d 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d  ] [<database-nam
3560: 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d  e> .] <table-nam
3570: 65 3e 20 46 52 4f 4d 20 3c 66 69 6c 65 6e 61 6d  e> FROM <filenam
3580: 65 3e 0a 5b 20 55 53 49 4e 47 20 44 45 4c 49 4d  e>.[ USING DELIM
3590: 49 54 45 52 53 20 3c 64 65 6c 69 6d 3e 20 5d 0a  ITERS <delim> ].
35a0: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
35b0: 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 69 73   COPY command is
35c0: 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 53 51   available in SQ
35d0: 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 32 2e 38  Lite version 2.8
35e0: 20 61 6e 64 20 65 61 72 6c 69 65 72 2e 0a 54 68   and earlier..Th
35f0: 65 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 68  e COPY command h
3600: 61 73 20 62 65 65 6e 20 72 65 6d 6f 76 65 64 20  as been removed 
3610: 66 72 6f 6d 20 53 51 4c 69 74 65 20 76 65 72 73  from SQLite vers
3620: 69 6f 6e 20 33 2e 30 20 64 75 65 20 74 6f 0a 63  ion 3.0 due to.c
3630: 6f 6d 70 6c 69 63 61 74 69 6f 6e 73 20 69 6e 20  omplications in 
3640: 74 72 79 69 6e 67 20 74 6f 20 73 75 70 70 6f 72  trying to suppor
3650: 74 20 69 74 20 69 6e 20 61 20 6d 69 78 65 64 20  t it in a mixed 
3660: 55 54 46 2d 38 2f 31 36 20 65 6e 76 69 72 6f 6e  UTF-8/16 environ
3670: 6d 65 6e 74 2e 0a 49 6e 20 76 65 72 73 69 6f 6e  ment..In version
3680: 20 33 2e 30 2c 20 74 68 65 20 3c 61 20 68 72 65   3.0, the <a hre
3690: 66 3d 22 73 71 6c 69 74 65 2e 68 74 6d 6c 22 3e  f="sqlite.html">
36a0: 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65  command-line she
36b0: 6c 6c 3c 2f 61 3e 0a 63 6f 6e 74 61 69 6e 73 20  ll</a>.contains 
36c0: 61 20 6e 65 77 20 63 6f 6d 6d 61 6e 64 20 3c 62  a new command <b
36d0: 3e 2e 69 6d 70 6f 72 74 3c 2f 62 3e 20 74 68 61  >.import</b> tha
36e0: 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73  t can be used as
36f0: 20 61 20 73 75 62 73 74 69 74 75 74 65 0a 66 6f   a substitute.fo
3700: 72 20 43 4f 50 59 2e 0a 3c 2f 70 3e 0a 0a 3c 70  r COPY..</p>..<p
3710: 3e 54 68 65 20 43 4f 50 59 20 63 6f 6d 6d 61 6e  >The COPY comman
3720: 64 20 69 73 20 61 6e 20 65 78 74 65 6e 73 69 6f  d is an extensio
3730: 6e 20 75 73 65 64 20 74 6f 20 6c 6f 61 64 20 6c  n used to load l
3740: 61 72 67 65 20 61 6d 6f 75 6e 74 73 20 6f 66 0a  arge amounts of.
3750: 64 61 74 61 20 69 6e 74 6f 20 61 20 74 61 62 6c  data into a tabl
3760: 65 2e 20 20 49 74 20 69 73 20 6d 6f 64 65 6c 65  e.  It is modele
3770: 64 20 61 66 74 65 72 20 61 20 73 69 6d 69 6c 61  d after a simila
3780: 72 20 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 0a  r command found.
3790: 69 6e 20 50 6f 73 74 67 72 65 53 51 4c 2e 20 20  in PostgreSQL.  
37a0: 49 6e 20 66 61 63 74 2c 20 74 68 65 20 53 51 4c  In fact, the SQL
37b0: 69 74 65 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64  ite COPY command
37c0: 20 69 73 20 73 70 65 63 69 66 69 63 61 6c 6c 79   is specifically
37d0: 0a 64 65 73 69 67 6e 65 64 20 74 6f 20 62 65 20  .designed to be 
37e0: 61 62 6c 65 20 74 6f 20 72 65 61 64 20 74 68 65  able to read the
37f0: 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 50   output of the P
3800: 6f 73 74 67 72 65 53 51 4c 20 64 75 6d 70 0a 75  ostgreSQL dump.u
3810: 74 69 6c 69 74 79 20 3c 62 3e 70 67 5f 64 75 6d  tility <b>pg_dum
3820: 70 3c 2f 62 3e 20 73 6f 20 74 68 61 74 20 64 61  p</b> so that da
3830: 74 61 20 63 61 6e 20 62 65 20 65 61 73 69 6c 79  ta can be easily
3840: 20 74 72 61 6e 73 66 65 72 72 65 64 20 66 72 6f   transferred fro
3850: 6d 0a 50 6f 73 74 67 72 65 53 51 4c 20 69 6e 74  m.PostgreSQL int
3860: 6f 20 53 51 4c 69 74 65 2e 3c 2f 70 3e 0a 0a 3c  o SQLite.</p>..<
3870: 70 3e 54 68 65 20 74 61 62 6c 65 2d 6e 61 6d 65  p>The table-name
3880: 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
3890: 61 6e 20 65 78 69 73 74 69 6e 67 20 74 61 62 6c  an existing tabl
38a0: 65 20 77 68 69 63 68 20 69 73 20 74 6f 0a 62 65  e which is to.be
38b0: 20 66 69 6c 6c 65 64 20 77 69 74 68 20 64 61 74   filled with dat
38c0: 61 2e 20 20 54 68 65 20 66 69 6c 65 6e 61 6d 65  a.  The filename
38d0: 20 69 73 20 61 20 73 74 72 69 6e 67 20 6f 72 20   is a string or 
38e0: 69 64 65 6e 74 69 66 69 65 72 20 74 68 61 74 0a  identifier that.
38f0: 6e 61 6d 65 73 20 61 20 66 69 6c 65 20 66 72 6f  names a file fro
3900: 6d 20 77 68 69 63 68 20 64 61 74 61 20 77 69 6c  m which data wil
3910: 6c 20 62 65 20 72 65 61 64 2e 20 20 54 68 65 20  l be read.  The 
3920: 66 69 6c 65 6e 61 6d 65 20 63 61 6e 20 62 65 0a  filename can be.
3930: 74 68 65 20 3c 62 3e 53 54 44 49 4e 3c 2f 62 3e  the <b>STDIN</b>
3940: 20 74 6f 20 72 65 61 64 20 64 61 74 61 20 66 72   to read data fr
3950: 6f 6d 20 73 74 61 6e 64 61 72 64 20 69 6e 70 75  om standard inpu
3960: 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68 20  t.</p>..<p>Each 
3970: 6c 69 6e 65 20 6f 66 20 74 68 65 20 69 6e 70 75  line of the inpu
3980: 74 20 66 69 6c 65 20 69 73 20 63 6f 6e 76 65 72  t file is conver
3990: 74 65 64 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c  ted into a singl
39a0: 65 20 72 65 63 6f 72 64 0a 69 6e 20 74 68 65 20  e record.in the 
39b0: 74 61 62 6c 65 2e 20 20 43 6f 6c 75 6d 6e 73 20  table.  Columns 
39c0: 61 72 65 20 73 65 70 61 72 61 74 65 64 20 62 79  are separated by
39d0: 20 74 61 62 73 2e 20 20 49 66 20 61 20 74 61 62   tabs.  If a tab
39e0: 20 6f 63 63 75 72 73 20 61 73 0a 64 61 74 61 20   occurs as.data 
39f0: 77 69 74 68 69 6e 20 61 20 63 6f 6c 75 6d 6e 2c  within a column,
3a00: 20 74 68 65 6e 20 74 68 61 74 20 74 61 62 20 69   then that tab i
3a10: 73 20 70 72 65 63 65 64 65 64 20 62 79 20 61 20  s preceded by a 
3a20: 62 61 73 6b 73 6c 61 73 68 20 22 5c 22 0a 63 68  baskslash "\".ch
3a30: 61 72 61 63 74 65 72 2e 20 20 41 20 62 61 73 6b  aracter.  A bask
3a40: 73 6c 61 73 68 20 69 6e 20 74 68 65 20 64 61 74  slash in the dat
3a50: 61 20 61 70 70 65 61 72 73 20 61 73 20 74 77 6f  a appears as two
3a60: 20 62 61 63 6b 73 6c 61 73 68 65 73 20 69 6e 0a   backslashes in.
3a70: 61 20 72 6f 77 2e 20 20 54 68 65 20 6f 70 74 69  a row.  The opti
3a80: 6f 6e 61 6c 20 55 53 49 4e 47 20 44 45 4c 49 4d  onal USING DELIM
3a90: 49 54 45 52 53 20 63 6c 61 75 73 65 20 63 61 6e  ITERS clause can
3aa0: 20 73 70 65 63 69 66 79 20 61 20 64 65 6c 69 6d   specify a delim
3ab0: 69 74 65 72 0a 6f 74 68 65 72 20 74 68 61 6e 20  iter.other than 
3ac0: 74 61 62 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  tab.</p>..<p>If 
3ad0: 61 20 63 6f 6c 75 6d 6e 20 63 6f 6e 73 69 73 74  a column consist
3ae0: 73 20 6f 66 20 74 68 65 20 63 68 61 72 61 63 74  s of the charact
3af0: 65 72 20 22 5c 4e 22 2c 20 74 68 61 74 20 63 6f  er "\N", that co
3b00: 6c 75 6d 6e 20 69 73 20 66 69 6c 6c 65 64 0a 77  lumn is filled.w
3b10: 69 74 68 20 74 68 65 20 76 61 6c 75 65 20 4e 55  ith the value NU
3b20: 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  LL.</p>..<p>The 
3b30: 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63  optional conflic
3b40: 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20  t-clause allows 
3b50: 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f  the specificatio
3b60: 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74  n of an alternat
3b70: 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63  ive.constraint c
3b80: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
3b90: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20  on algorithm to 
3ba0: 75 73 65 20 66 6f 72 20 74 68 69 73 20 6f 6e 65  use for this one
3bb0: 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68   command..See th
3bc0: 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64  e section titled
3bd0: 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c  .<a href="#confl
3be0: 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54  ict">ON CONFLICT
3bf0: 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f  </a> for additio
3c00: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  nal information.
3c10: 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 74 68  </p>..<p>When th
3c20: 65 20 69 6e 70 75 74 20 64 61 74 61 20 73 6f 75  e input data sou
3c30: 72 63 65 20 69 73 20 53 54 44 49 4e 2c 20 74 68  rce is STDIN, th
3c40: 65 20 69 6e 70 75 74 20 63 61 6e 20 62 65 20 74  e input can be t
3c50: 65 72 6d 69 6e 61 74 65 64 0a 62 79 20 61 20 6c  erminated.by a l
3c60: 69 6e 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  ine that contain
3c70: 73 20 6f 6e 6c 79 20 61 20 62 61 73 6b 73 6c 61  s only a basksla
3c80: 73 68 20 61 6e 64 20 61 20 64 6f 74 3a 7d 0a 70  sh and a dot:}.p
3c90: 75 74 73 20 22 5c 22 5b 4f 70 65 72 61 74 6f 72  uts "\"[Operator
3ca0: 20 5c 5c 2e 5d 5c 22 2e 3c 2f 70 3e 22 0a 0a 0a   \\.]\".</p>"...
3cb0: 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20  Section {CREATE 
3cc0: 49 4e 44 45 58 7d 20 63 72 65 61 74 65 69 6e 64  INDEX} createind
3cd0: 65 78 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ex..Syntax {sql-
3ce0: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43 52 45  statement} {.CRE
3cf0: 41 54 45 20 5b 55 4e 49 51 55 45 5d 20 49 4e 44  ATE [UNIQUE] IND
3d00: 45 58 20 5b 49 46 20 4e 4f 54 20 45 58 49 53 54  EX [IF NOT EXIST
3d10: 53 5d 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  S] [<database-na
3d20: 6d 65 3e 20 2e 5d 20 3c 69 6e 64 65 78 2d 6e 61  me> .] <index-na
3d30: 6d 65 3e 20 0a 4f 4e 20 3c 74 61 62 6c 65 2d 6e  me> .ON <table-n
3d40: 61 6d 65 3e 20 28 20 3c 63 6f 6c 75 6d 6e 2d 6e  ame> ( <column-n
3d50: 61 6d 65 3e 20 5b 2c 20 3c 63 6f 6c 75 6d 6e 2d  ame> [, <column-
3d60: 6e 61 6d 65 3e 5d 2a 20 29 0a 7d 20 7b 63 6f 6c  name>]* ).} {col
3d70: 75 6d 6e 2d 6e 61 6d 65 7d 20 7b 0a 3c 6e 61 6d  umn-name} {.<nam
3d80: 65 3e 20 5b 20 43 4f 4c 4c 41 54 45 20 3c 63 6f  e> [ COLLATE <co
3d90: 6c 6c 61 74 69 6f 6e 2d 6e 61 6d 65 3e 5d 20 5b  llation-name>] [
3da0: 20 41 53 43 20 7c 20 44 45 53 43 20 5d 0a 7d 0a   ASC | DESC ].}.
3db0: 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43  .puts {.<p>The C
3dc0: 52 45 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d  REATE INDEX comm
3dd0: 61 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20  and consists of 
3de0: 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52  the keywords "CR
3df0: 45 41 54 45 20 49 4e 44 45 58 22 20 66 6f 6c 6c  EATE INDEX" foll
3e00: 6f 77 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65  owed.by the name
3e10: 20 6f 66 20 74 68 65 20 6e 65 77 20 69 6e 64 65   of the new inde
3e20: 78 2c 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22  x, the keyword "
3e30: 4f 4e 22 2c 20 74 68 65 20 6e 61 6d 65 20 6f 66  ON", the name of
3e40: 20 61 20 70 72 65 76 69 6f 75 73 6c 79 0a 63 72   a previously.cr
3e50: 65 61 74 65 64 20 74 61 62 6c 65 20 74 68 61 74  eated table that
3e60: 20 69 73 20 74 6f 20 62 65 20 69 6e 64 65 78 65   is to be indexe
3e70: 64 2c 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68  d, and a parenth
3e80: 65 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 6e  esized list of n
3e90: 61 6d 65 73 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20  ames of.columns 
3ea0: 69 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61  in the table tha
3eb0: 74 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 74  t are used for t
3ec0: 68 65 20 69 6e 64 65 78 20 6b 65 79 2e 0a 45 61  he index key..Ea
3ed0: 63 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63  ch column name c
3ee0: 61 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62  an be followed b
3ef0: 79 20 6f 6e 65 20 6f 66 20 74 68 65 20 22 41 53  y one of the "AS
3f00: 43 22 20 6f 72 20 22 44 45 53 43 22 20 6b 65 79  C" or "DESC" key
3f10: 77 6f 72 64 73 0a 74 6f 20 69 6e 64 69 63 61 74  words.to indicat
3f20: 65 20 73 6f 72 74 20 6f 72 64 65 72 2c 20 62 75  e sort order, bu
3f30: 74 20 74 68 65 20 73 6f 72 74 20 6f 72 64 65 72  t the sort order
3f40: 20 69 73 20 69 67 6e 6f 72 65 64 20 69 6e 20 74   is ignored in t
3f50: 68 65 20 63 75 72 72 65 6e 74 0a 69 6d 70 6c 65  he current.imple
3f60: 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 53 6f 72 74  mentation.  Sort
3f70: 69 6e 67 20 69 73 20 61 6c 77 61 79 73 20 64 6f  ing is always do
3f80: 6e 65 20 69 6e 20 61 73 63 65 6e 64 69 6e 67 20  ne in ascending 
3f90: 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  order.</p>..<p>T
3fa0: 68 65 20 43 4f 4c 4c 41 54 45 20 63 6c 61 75 73  he COLLATE claus
3fb0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 65 61 63 68  e following each
3fc0: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 64 65 66   column name def
3fd0: 69 6e 65 73 20 61 20 63 6f 6c 6c 61 74 69 6e 67  ines a collating
3fe0: 0a 73 65 71 75 65 6e 63 65 20 75 73 65 64 20 66  .sequence used f
3ff0: 6f 72 20 74 65 78 74 20 65 6e 74 69 72 65 73 20  or text entires 
4000: 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20  in that column. 
4010: 20 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6c   The default col
4020: 6c 61 74 69 6e 67 0a 73 65 71 75 65 6e 63 65 20  lating.sequence 
4030: 69 73 20 74 68 65 20 63 6f 6c 6c 61 74 69 6e 67  is the collating
4040: 20 73 65 71 75 65 6e 63 65 20 64 65 66 69 6e 65   sequence define
4050: 64 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d  d for that colum
4060: 6e 20 69 6e 20 74 68 65 0a 43 52 45 41 54 45 20  n in the.CREATE 
4070: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e  TABLE statement.
4080: 20 20 4f 72 20 69 66 20 6e 6f 20 63 6f 6c 6c 61    Or if no colla
4090: 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69 73  ting sequence is
40a0: 20 6f 74 68 65 72 77 69 73 65 20 64 65 66 69 6e   otherwise defin
40b0: 65 64 2c 0a 74 68 65 20 62 75 69 6c 74 2d 69 6e  ed,.the built-in
40c0: 20 42 49 4e 41 52 59 20 63 6f 6c 6c 61 74 69 6e   BINARY collatin
40d0: 67 20 73 65 71 75 65 6e 63 65 20 69 73 20 75 73  g sequence is us
40e0: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72  ed.</p>..<p>Ther
40f0: 65 20 61 72 65 20 6e 6f 20 61 72 62 69 74 72 61  e are no arbitra
4100: 72 79 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65  ry limits on the
4110: 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e 64 69 63   number of indic
4120: 65 73 20 74 68 61 74 20 63 61 6e 20 62 65 0a 61  es that can be.a
4130: 74 74 61 63 68 65 64 20 74 6f 20 61 20 73 69 6e  ttached to a sin
4140: 67 6c 65 20 74 61 62 6c 65 2c 20 6e 6f 72 20 6f  gle table, nor o
4150: 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  n the number of 
4160: 63 6f 6c 75 6d 6e 73 20 69 6e 20 61 6e 20 69 6e  columns in an in
4170: 64 65 78 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  dex.</p>..<p>If 
4180: 74 68 65 20 55 4e 49 51 55 45 20 6b 65 79 77 6f  the UNIQUE keywo
4190: 72 64 20 61 70 70 65 61 72 73 20 62 65 74 77 65  rd appears betwe
41a0: 65 6e 20 43 52 45 41 54 45 20 61 6e 64 20 49 4e  en CREATE and IN
41b0: 44 45 58 20 74 68 65 6e 20 64 75 70 6c 69 63 61  DEX then duplica
41c0: 74 65 0a 69 6e 64 65 78 20 65 6e 74 72 69 65 73  te.index entries
41d0: 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64   are not allowed
41e0: 2e 20 20 41 6e 79 20 61 74 74 65 6d 70 74 20 74  .  Any attempt t
41f0: 6f 20 69 6e 73 65 72 74 20 61 20 64 75 70 6c 69  o insert a dupli
4200: 63 61 74 65 20 65 6e 74 72 79 0a 77 69 6c 6c 20  cate entry.will 
4210: 72 65 73 75 6c 74 20 69 6e 20 61 6e 20 65 72 72  result in an err
4220: 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  or.</p>..<p>The 
4230: 65 78 61 63 74 20 74 65 78 74 0a 6f 66 20 65 61  exact text.of ea
4240: 63 68 20 43 52 45 41 54 45 20 49 4e 44 45 58 20  ch CREATE INDEX 
4250: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73 74 6f  statement is sto
4260: 72 65 64 20 69 6e 20 74 68 65 20 3c 62 3e 73 71  red in the <b>sq
4270: 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a  lite_master</b>.
4280: 6f 72 20 3c 62 3e 73 71 6c 69 74 65 5f 74 65 6d  or <b>sqlite_tem
4290: 70 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62  p_master</b> tab
42a0: 6c 65 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  le, depending on
42b0: 20 77 68 65 74 68 65 72 20 74 68 65 20 74 61 62   whether the tab
42c0: 6c 65 0a 62 65 69 6e 67 20 69 6e 64 65 78 65 64  le.being indexed
42d0: 20 69 73 20 74 65 6d 70 6f 72 61 72 79 2e 20 20   is temporary.  
42e0: 45 76 65 72 79 20 74 69 6d 65 20 74 68 65 20 64  Every time the d
42f0: 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65  atabase is opene
4300: 64 2c 0a 61 6c 6c 20 43 52 45 41 54 45 20 49 4e  d,.all CREATE IN
4310: 44 45 58 20 73 74 61 74 65 6d 65 6e 74 73 0a 61  DEX statements.a
4320: 72 65 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  re read from the
4330: 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65   <b>sqlite_maste
4340: 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61 6e 64 20  r</b> table and 
4350: 75 73 65 64 20 74 6f 20 72 65 67 65 6e 65 72 61  used to regenera
4360: 74 65 0a 53 51 4c 69 74 65 27 73 20 69 6e 74 65  te.SQLite's inte
4370: 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74  rnal representat
4380: 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 64 65 78  ion of the index
4390: 20 6c 61 79 6f 75 74 2e 3c 2f 70 3e 0a 0a 3c 70   layout.</p>..<p
43a0: 3e 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c  >If the optional
43b0: 20 49 46 20 4e 4f 54 20 45 58 49 53 54 53 20 63   IF NOT EXISTS c
43c0: 6c 61 75 73 65 20 69 73 20 70 72 65 73 65 6e 74  lause is present
43d0: 20 61 6e 64 20 61 6e 6f 74 68 65 72 20 69 6e 64   and another ind
43e0: 65 78 0a 77 69 74 68 20 74 68 65 20 73 61 6d 65  ex.with the same
43f0: 20 6e 61 6d 65 20 61 6c 65 61 64 79 20 65 78 69   name aleady exi
4400: 73 74 73 2c 20 74 68 65 6e 20 74 68 69 73 20 63  sts, then this c
4410: 6f 6d 6d 61 6e 64 20 62 65 63 6f 6d 65 73 20 61  ommand becomes a
4420: 20 6e 6f 2d 6f 70 2e 3c 2f 70 3e 0a 0a 3c 70 3e   no-op.</p>..<p>
4430: 49 6e 64 65 78 65 73 20 61 72 65 20 72 65 6d 6f  Indexes are remo
4440: 76 65 64 20 77 69 74 68 20 74 68 65 20 3c 61 20  ved with the <a 
4450: 68 72 65 66 3d 22 23 64 72 6f 70 69 6e 64 65 78  href="#dropindex
4460: 22 3e 44 52 4f 50 20 49 4e 44 45 58 3c 2f 61 3e  ">DROP INDEX</a>
4470: 20 0a 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d   .command.</p>.}
4480: 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41  ...Section {CREA
4490: 54 45 20 54 41 42 4c 45 7d 20 7b 63 72 65 61 74  TE TABLE} {creat
44a0: 65 74 61 62 6c 65 7d 0a 0a 53 79 6e 74 61 78 20  etable}..Syntax 
44b0: 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a  {sql-command} {.
44c0: 43 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54  CREATE [TEMP | T
44d0: 45 4d 50 4f 52 41 52 59 5d 20 54 41 42 4c 45 20  EMPORARY] TABLE 
44e0: 5b 49 46 20 4e 4f 54 20 45 58 49 53 54 53 5d 20  [IF NOT EXISTS] 
44f0: 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e  [<database-name>
4500: 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e   .] <table-name>
4510: 20 28 0a 20 20 3c 63 6f 6c 75 6d 6e 2d 64 65 66   (.  <column-def
4520: 3e 20 5b 2c 20 3c 63 6f 6c 75 6d 6e 2d 64 65 66  > [, <column-def
4530: 3e 5d 2a 0a 20 20 5b 2c 20 3c 63 6f 6e 73 74 72  >]*.  [, <constr
4540: 61 69 6e 74 3e 5d 2a 0a 29 0a 7d 20 7b 73 71 6c  aint>]*.).} {sql
4550: 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43 52 45 41  -command} {.CREA
4560: 54 45 20 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f  TE [TEMP | TEMPO
4570: 52 41 52 59 5d 20 54 41 42 4c 45 20 5b 3c 64 61  RARY] TABLE [<da
4580: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 2e 5d 20 3c  tabase-name>.] <
4590: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 41 53 20 3c  table-name> AS <
45a0: 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74  select-statement
45b0: 3e 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 64 65 66 7d  >.} {column-def}
45c0: 20 7b 0a 3c 6e 61 6d 65 3e 20 5b 3c 74 79 70 65   {.<name> [<type
45d0: 3e 5d 20 5b 5b 43 4f 4e 53 54 52 41 49 4e 54 20  >] [[CONSTRAINT 
45e0: 3c 6e 61 6d 65 3e 5d 20 3c 63 6f 6c 75 6d 6e 2d  <name>] <column-
45f0: 63 6f 6e 73 74 72 61 69 6e 74 3e 5d 2a 0a 7d 20  constraint>]*.} 
4600: 7b 74 79 70 65 7d 20 7b 0a 3c 74 79 70 65 6e 61  {type} {.<typena
4610: 6d 65 3e 20 7c 0a 3c 74 79 70 65 6e 61 6d 65 3e  me> |.<typename>
4620: 20 28 20 3c 6e 75 6d 62 65 72 3e 20 29 20 7c 0a   ( <number> ) |.
4630: 3c 74 79 70 65 6e 61 6d 65 3e 20 28 20 3c 6e 75  <typename> ( <nu
4640: 6d 62 65 72 3e 20 2c 20 3c 6e 75 6d 62 65 72 3e  mber> , <number>
4650: 20 29 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 63 6f 6e   ).} {column-con
4660: 73 74 72 61 69 6e 74 7d 20 7b 0a 4e 4f 54 20 4e  straint} {.NOT N
4670: 55 4c 4c 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d  ULL [ <conflict-
4680: 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 50 52 49 4d  clause> ] |.PRIM
4690: 41 52 59 20 4b 45 59 20 5b 3c 73 6f 72 74 2d 6f  ARY KEY [<sort-o
46a0: 72 64 65 72 3e 5d 20 5b 20 3c 63 6f 6e 66 6c 69  rder>] [ <confli
46b0: 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 5b 41 55  ct-clause> ] [AU
46c0: 54 4f 49 4e 43 52 45 4d 45 4e 54 5d 20 7c 0a 55  TOINCREMENT] |.U
46d0: 4e 49 51 55 45 20 5b 20 3c 63 6f 6e 66 6c 69 63  NIQUE [ <conflic
46e0: 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 43 48  t-clause> ] |.CH
46f0: 45 43 4b 20 28 20 3c 65 78 70 72 3e 20 29 20 7c  ECK ( <expr> ) |
4700: 0a 44 45 46 41 55 4c 54 20 3c 76 61 6c 75 65 3e  .DEFAULT <value>
4710: 20 7c 0a 43 4f 4c 4c 41 54 45 20 3c 63 6f 6c 6c   |.COLLATE <coll
4720: 61 74 69 6f 6e 2d 6e 61 6d 65 3e 0a 7d 20 7b 63  ation-name>.} {c
4730: 6f 6e 73 74 72 61 69 6e 74 7d 20 7b 0a 50 52 49  onstraint} {.PRI
4740: 4d 41 52 59 20 4b 45 59 20 28 20 3c 63 6f 6c 75  MARY KEY ( <colu
4750: 6d 6e 2d 6c 69 73 74 3e 20 29 20 5b 20 3c 63 6f  mn-list> ) [ <co
4760: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d  nflict-clause> ]
4770: 20 7c 0a 55 4e 49 51 55 45 20 28 20 3c 63 6f 6c   |.UNIQUE ( <col
4780: 75 6d 6e 2d 6c 69 73 74 3e 20 29 20 5b 20 3c 63  umn-list> ) [ <c
4790: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20  onflict-clause> 
47a0: 5d 20 7c 0a 43 48 45 43 4b 20 28 20 3c 65 78 70  ] |.CHECK ( <exp
47b0: 72 3e 20 29 0a 7d 20 7b 63 6f 6e 66 6c 69 63 74  r> ).} {conflict
47c0: 2d 63 6c 61 75 73 65 7d 20 7b 0a 4f 4e 20 43 4f  -clause} {.ON CO
47d0: 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c 69 63 74  NFLICT <conflict
47e0: 2d 61 6c 67 6f 72 69 74 68 6d 3e 0a 7d 0a 0a 70  -algorithm>.}..p
47f0: 75 74 73 20 7b 0a 3c 70 3e 41 20 43 52 45 41 54  uts {.<p>A CREAT
4800: 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  E TABLE statemen
4810: 74 20 69 73 20 62 61 73 69 63 61 6c 6c 79 20 74  t is basically t
4820: 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45  he keywords "CRE
4830: 41 54 45 20 54 41 42 4c 45 22 0a 66 6f 6c 6c 6f  ATE TABLE".follo
4840: 77 65 64 20 62 79 20 74 68 65 20 6e 61 6d 65 20  wed by the name 
4850: 6f 66 20 61 20 6e 65 77 20 74 61 62 6c 65 20 61  of a new table a
4860: 6e 64 20 61 20 70 61 72 65 6e 74 68 65 73 69 7a  nd a parenthesiz
4870: 65 64 20 6c 69 73 74 20 6f 66 20 63 6f 6c 75 6d  ed list of colum
4880: 6e 0a 64 65 66 69 6e 69 74 69 6f 6e 73 20 61 6e  n.definitions an
4890: 64 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20  d constraints.  
48a0: 54 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 63  The table name c
48b0: 61 6e 20 62 65 20 65 69 74 68 65 72 20 61 6e 20  an be either an 
48c0: 69 64 65 6e 74 69 66 69 65 72 0a 6f 72 20 61 20  identifier.or a 
48d0: 73 74 72 69 6e 67 2e 20 20 54 61 62 6c 65 73 20  string.  Tables 
48e0: 6e 61 6d 65 73 20 74 68 61 74 20 62 65 67 69 6e  names that begin
48f0: 20 77 69 74 68 20 22 3c 62 3e 73 71 6c 69 74 65   with "<b>sqlite
4900: 5f 3c 2f 62 3e 22 20 61 72 65 20 72 65 73 65 72  _</b>" are reser
4910: 76 65 64 0a 66 6f 72 20 75 73 65 20 62 79 20 74  ved.for use by t
4920: 68 65 20 65 6e 67 69 6e 65 2e 3c 2f 70 3e 0a 0a  he engine.</p>..
4930: 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d 6e 20 64  <p>Each column d
4940: 65 66 69 6e 69 74 69 6f 6e 20 69 73 20 74 68 65  efinition is the
4950: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f 6c   name of the col
4960: 75 6d 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  umn followed by 
4970: 74 68 65 0a 64 61 74 61 74 79 70 65 20 66 6f 72  the.datatype for
4980: 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c 20 74 68   that column, th
4990: 65 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f  en one or more o
49a0: 70 74 69 6f 6e 61 6c 20 63 6f 6c 75 6d 6e 20 63  ptional column c
49b0: 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 54 68 65 20  onstraints..The 
49c0: 64 61 74 61 74 79 70 65 20 66 6f 72 20 74 68 65  datatype for the
49d0: 20 63 6f 6c 75 6d 6e 20 64 6f 65 73 20 6e 6f 74   column does not
49e0: 20 72 65 73 74 72 69 63 74 20 77 68 61 74 20 64   restrict what d
49f0: 61 74 61 20 6d 61 79 20 62 65 20 70 75 74 0a 69  ata may be put.i
4a00: 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 0a 53  n that column..S
4a10: 65 65 20 3c 61 20 68 72 65 66 3d 22 64 61 74 61  ee <a href="data
4a20: 74 79 70 65 33 2e 68 74 6d 6c 22 3e 44 61 74 61  type3.html">Data
4a30: 74 79 70 65 73 20 49 6e 20 53 51 4c 69 74 65 20  types In SQLite 
4a40: 56 65 72 73 69 6f 6e 20 33 3c 2f 61 3e 20 66 6f  Version 3</a> fo
4a50: 72 0a 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r.additional inf
4a60: 6f 72 6d 61 74 69 6f 6e 2e 0a 54 68 65 20 55 4e  ormation..The UN
4a70: 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 20  IQUE constraint 
4a80: 63 61 75 73 65 73 20 61 6e 20 69 6e 64 65 78 20  causes an index 
4a90: 74 6f 20 62 65 20 63 72 65 61 74 65 64 20 6f 6e  to be created on
4aa0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0a 63   the specified.c
4ab0: 6f 6c 75 6d 6e 73 2e 20 20 54 68 69 73 20 69 6e  olumns.  This in
4ac0: 64 65 78 20 6d 75 73 74 20 63 6f 6e 74 61 69 6e  dex must contain
4ad0: 20 75 6e 69 71 75 65 20 6b 65 79 73 2e 0a 54 68   unique keys..Th
4ae0: 65 20 43 4f 4c 4c 41 54 45 20 63 6c 61 75 73 65  e COLLATE clause
4af0: 20 73 70 65 63 69 66 69 65 73 20 77 68 61 74 20   specifies what 
4b00: 74 65 78 74 20 3c 61 20 68 72 65 66 3d 22 64 61  text <a href="da
4b10: 74 61 74 79 70 65 33 2e 68 74 6d 6c 23 63 6f 6c  tatype3.html#col
4b20: 6c 61 74 69 6f 6e 22 3e 0a 63 6f 6c 6c 61 74 69  lation">.collati
4b30: 6e 67 20 66 75 6e 63 74 69 6f 6e 3c 2f 61 3e 20  ng function</a> 
4b40: 74 6f 20 75 73 65 20 77 68 65 6e 20 63 6f 6d 70  to use when comp
4b50: 61 72 69 6e 67 20 74 65 78 74 20 65 6e 74 72 69  aring text entri
4b60: 65 73 20 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d  es for the colum
4b70: 6e 2e 20 20 0a 54 68 65 20 62 75 69 6c 74 2d 69  n.  .The built-i
4b80: 6e 20 42 49 4e 41 52 59 20 63 6f 6c 6c 61 74 69  n BINARY collati
4b90: 6e 67 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75  ng function is u
4ba0: 73 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a  sed by default..
4bb0: 3c 70 3e 0a 54 68 65 20 44 45 46 41 55 4c 54 20  <p>.The DEFAULT 
4bc0: 63 6f 6e 73 74 72 61 69 6e 74 20 73 70 65 63 69  constraint speci
4bd0: 66 69 65 73 20 61 20 64 65 66 61 75 6c 74 20 76  fies a default v
4be0: 61 6c 75 65 20 74 6f 20 75 73 65 20 77 68 65 6e  alue to use when
4bf0: 20 64 6f 69 6e 67 20 61 6e 20 49 4e 53 45 52 54   doing an INSERT
4c00: 2e 0a 54 68 65 20 76 61 6c 75 65 20 6d 61 79 20  ..The value may 
4c10: 62 65 20 4e 55 4c 4c 2c 20 61 20 73 74 72 69 6e  be NULL, a strin
4c20: 67 20 63 6f 6e 73 74 61 6e 74 20 6f 72 20 61 20  g constant or a 
4c30: 6e 75 6d 62 65 72 2e 20 53 74 61 72 74 69 6e 67  number. Starting
4c40: 20 77 69 74 68 20 76 65 72 73 69 6f 6e 0a 33 2e   with version.3.
4c50: 31 2e 30 2c 20 74 68 65 20 64 65 66 61 75 6c 74  1.0, the default
4c60: 20 76 61 6c 75 65 20 6d 61 79 20 61 6c 73 6f 20   value may also 
4c70: 62 65 20 6f 6e 65 20 6f 66 20 74 68 65 20 73 70  be one of the sp
4c80: 65 63 69 61 6c 20 63 61 73 65 2d 69 6e 64 65 70  ecial case-indep
4c90: 65 6e 64 61 6e 74 0a 6b 65 79 77 6f 72 64 73 20  endant.keywords 
4ca0: 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55  CURRENT_TIME, CU
4cb0: 52 52 45 4e 54 5f 44 41 54 45 20 6f 72 20 43 55  RRENT_DATE or CU
4cc0: 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2e  RRENT_TIMESTAMP.
4cd0: 20 49 66 20 74 68 65 20 76 61 6c 75 65 20 69 73   If the value is
4ce0: 0a 4e 55 4c 4c 2c 20 61 20 73 74 72 69 6e 67 20  .NULL, a string 
4cf0: 63 6f 6e 73 74 61 6e 74 20 6f 72 20 6e 75 6d 62  constant or numb
4d00: 65 72 2c 20 69 74 20 69 73 20 6c 69 74 65 72 61  er, it is litera
4d10: 6c 6c 79 20 69 6e 73 65 72 74 65 64 20 69 6e 74  lly inserted int
4d20: 6f 20 74 68 65 20 63 6f 6c 75 6d 6e 0a 77 68 65  o the column.whe
4d30: 6e 65 76 65 72 20 61 6e 20 49 4e 53 45 52 54 20  never an INSERT 
4d40: 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 64  statement that d
4d50: 6f 65 73 20 6e 6f 74 20 73 70 65 63 69 66 79 20  oes not specify 
4d60: 61 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  a value for the 
4d70: 63 6f 6c 75 6d 6e 20 69 73 0a 65 78 65 63 75 74  column is.execut
4d80: 65 64 2e 20 49 66 20 74 68 65 20 76 61 6c 75 65  ed. If the value
4d90: 20 69 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45   is CURRENT_TIME
4da0: 2c 20 43 55 52 52 45 4e 54 5f 44 41 54 45 20 6f  , CURRENT_DATE o
4db0: 72 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54  r CURRENT_TIMEST
4dc0: 41 4d 50 2c 20 74 68 65 6e 0a 74 68 65 20 63 75  AMP, then.the cu
4dd0: 72 72 65 6e 74 20 55 54 43 20 64 61 74 65 20 61  rrent UTC date a
4de0: 6e 64 2f 6f 72 20 74 69 6d 65 20 69 73 20 69 6e  nd/or time is in
4df0: 73 65 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20  serted into the 
4e00: 63 6f 6c 75 6d 6e 73 2e 20 46 6f 72 0a 43 55 52  columns. For.CUR
4e10: 52 45 4e 54 5f 54 49 4d 45 2c 20 74 68 65 20 66  RENT_TIME, the f
4e20: 6f 72 6d 61 74 20 69 73 20 48 48 3a 4d 4d 3a 53  ormat is HH:MM:S
4e30: 53 2e 20 46 6f 72 20 43 55 52 52 45 4e 54 5f 44  S. For CURRENT_D
4e40: 41 54 45 2c 20 59 59 59 59 2d 4d 4d 2d 44 44 2e  ATE, YYYY-MM-DD.
4e50: 20 54 68 65 20 66 6f 72 6d 61 74 0a 66 6f 72 20   The format.for 
4e60: 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d  CURRENT_TIMESTAM
4e70: 50 20 69 73 20 22 59 59 59 59 2d 4d 4d 2d 44 44  P is "YYYY-MM-DD
4e80: 20 48 48 3a 4d 4d 3a 53 53 22 2e 0a 3c 2f 70 3e   HH:MM:SS"..</p>
4e90: 0a 0a 3c 70 3e 53 70 65 63 69 66 79 69 6e 67 20  ..<p>Specifying 
4ea0: 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6e 6f  a PRIMARY KEY no
4eb0: 72 6d 61 6c 6c 79 20 6a 75 73 74 20 63 72 65 61  rmally just crea
4ec0: 74 65 73 20 61 20 55 4e 49 51 55 45 20 69 6e 64  tes a UNIQUE ind
4ed0: 65 78 0a 6f 6e 20 74 68 65 20 63 6f 72 72 65 73  ex.on the corres
4ee0: 70 6f 6e 64 69 6e 67 20 63 6f 6c 75 6d 6e 73 2e  ponding columns.
4ef0: 20 20 48 6f 77 65 76 65 72 2c 20 69 66 20 70 72    However, if pr
4f00: 69 6d 61 72 79 20 6b 65 79 20 69 73 20 6f 6e 20  imary key is on 
4f10: 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 0a  a single column.
4f20: 74 68 61 74 20 68 61 73 20 64 61 74 61 74 79 70  that has datatyp
4f30: 65 20 49 4e 54 45 47 45 52 2c 20 74 68 65 6e 20  e INTEGER, then 
4f40: 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 73 20 75  that column is u
4f50: 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 0a 61  sed internally.a
4f60: 73 20 74 68 65 20 61 63 74 75 61 6c 20 6b 65 79  s the actual key
4f70: 20 6f 66 20 74 68 65 20 42 2d 54 72 65 65 20 66   of the B-Tree f
4f80: 6f 72 20 74 68 65 20 74 61 62 6c 65 2e 20 20 54  or the table.  T
4f90: 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 74  his means that t
4fa0: 68 65 20 63 6f 6c 75 6d 6e 0a 6d 61 79 20 6f 6e  he column.may on
4fb0: 6c 79 20 68 6f 6c 64 20 75 6e 69 71 75 65 20 69  ly hold unique i
4fc0: 6e 74 65 67 65 72 20 76 61 6c 75 65 73 2e 20 20  nteger values.  
4fd0: 28 45 78 63 65 70 74 20 66 6f 72 20 74 68 69 73  (Except for this
4fe0: 20 6f 6e 65 20 63 61 73 65 2c 0a 53 51 4c 69 74   one case,.SQLit
4ff0: 65 20 69 67 6e 6f 72 65 73 20 74 68 65 20 64 61  e ignores the da
5000: 74 61 74 79 70 65 20 73 70 65 63 69 66 69 63 61  tatype specifica
5010: 74 69 6f 6e 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  tion of columns 
5020: 61 6e 64 20 61 6c 6c 6f 77 73 0a 61 6e 79 20 6b  and allows.any k
5030: 69 6e 64 20 6f 66 20 64 61 74 61 20 74 6f 20 62  ind of data to b
5040: 65 20 70 75 74 20 69 6e 20 61 20 63 6f 6c 75 6d  e put in a colum
5050: 6e 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20  n regardless of 
5060: 69 74 73 20 64 65 63 6c 61 72 65 64 0a 64 61 74  its declared.dat
5070: 61 74 79 70 65 2e 29 20 20 49 66 20 61 20 74 61  atype.)  If a ta
5080: 62 6c 65 20 64 6f 65 73 20 6e 6f 74 20 68 61 76  ble does not hav
5090: 65 20 61 6e 20 49 4e 54 45 47 45 52 20 50 52 49  e an INTEGER PRI
50a0: 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 2c  MARY KEY column,
50b0: 0a 74 68 65 6e 20 74 68 65 20 42 2d 54 72 65 65  .then the B-Tree
50c0: 20 6b 65 79 20 77 69 6c 6c 20 62 65 20 61 20 61   key will be a a
50d0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 67 65 6e  utomatically gen
50e0: 65 72 61 74 65 64 20 69 6e 74 65 67 65 72 2e 20  erated integer. 
50f0: 20 54 68 65 0a 42 2d 54 72 65 65 20 6b 65 79 20   The.B-Tree key 
5100: 66 6f 72 20 61 20 72 6f 77 20 63 61 6e 20 61 6c  for a row can al
5110: 77 61 79 73 20 62 65 20 61 63 63 65 73 73 65 64  ways be accessed
5120: 20 75 73 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68   using one of th
5130: 65 0a 73 70 65 63 69 61 6c 20 6e 61 6d 65 73 20  e.special names 
5140: 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c 20  "<b>ROWID</b>", 
5150: 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72  "<b>OID</b>", or
5160: 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e   "<b>_ROWID_</b>
5170: 22 2e 0a 54 68 69 73 20 69 73 20 74 72 75 65 20  "..This is true 
5180: 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68  regardless of wh
5190: 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65  ether or not the
51a0: 72 65 20 69 73 20 61 6e 20 49 4e 54 45 47 45 52  re is an INTEGER
51b0: 0a 50 52 49 4d 41 52 59 20 4b 45 59 2e 20 20 41  .PRIMARY KEY.  A
51c0: 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  n INTEGER PRIMAR
51d0: 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20 6d 61 6e  Y KEY column man
51e0: 20 61 6c 73 6f 20 69 6e 63 6c 75 64 65 20 74 68   also include th
51f0: 65 0a 6b 65 79 77 6f 72 64 20 41 55 54 4f 49 4e  e.keyword AUTOIN
5200: 43 52 45 4d 45 4e 54 2e 20 20 54 68 65 20 41 55  CREMENT.  The AU
5210: 54 4f 49 4e 43 52 45 4d 45 4e 54 20 6b 65 79 77  TOINCREMENT keyw
5220: 6f 72 64 20 6d 6f 64 69 66 69 65 64 20 74 68 65  ord modified the
5230: 20 77 61 79 0a 74 68 61 74 20 42 2d 54 72 65 65   way.that B-Tree
5240: 20 6b 65 79 73 20 61 72 65 20 61 75 74 6f 6d 61   keys are automa
5250: 74 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74 65  tically generate
5260: 64 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c 20 64  d.  Additional d
5270: 65 74 61 69 6c 0a 6f 6e 20 61 75 74 6f 6d 61 74  etail.on automat
5280: 69 63 20 42 2d 54 72 65 65 20 6b 65 79 20 67 65  ic B-Tree key ge
5290: 6e 65 72 61 74 69 6f 6e 20 69 73 20 61 76 61 69  neration is avai
52a0: 6c 61 62 6c 65 0a 3c 61 20 68 72 65 66 3d 22 61  lable.<a href="a
52b0: 75 74 6f 69 6e 63 2e 68 74 6d 6c 22 3e 73 65 70  utoinc.html">sep
52c0: 61 72 61 74 65 6c 79 3c 2f 61 3e 2e 3c 2f 70 3e  arately</a>.</p>
52d0: 0a 0a 3c 70 3e 49 66 20 74 68 65 20 22 54 45 4d  ..<p>If the "TEM
52e0: 50 22 20 6f 72 20 22 54 45 4d 50 4f 52 41 52 59  P" or "TEMPORARY
52f0: 22 20 6b 65 79 77 6f 72 64 20 6f 63 63 75 72 73  " keyword occurs
5300: 20 69 6e 20 62 65 74 77 65 65 6e 20 22 43 52 45   in between "CRE
5310: 41 54 45 22 0a 61 6e 64 20 22 54 41 42 4c 45 22  ATE".and "TABLE"
5320: 20 74 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20   then the table 
5330: 74 68 61 74 20 69 73 20 63 72 65 61 74 65 64 20  that is created 
5340: 69 73 20 6f 6e 6c 79 20 76 69 73 69 62 6c 65 0a  is only visible.
5350: 77 69 74 68 69 6e 20 74 68 61 74 20 73 61 6d 65  within that same
5360: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
5370: 74 69 6f 6e 0a 61 6e 64 20 69 73 20 61 75 74 6f  tion.and is auto
5380: 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c 65 74 65  matically delete
5390: 64 20 77 68 65 6e 0a 74 68 65 20 64 61 74 61 62  d when.the datab
53a0: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  ase connection i
53b0: 73 20 63 6c 6f 73 65 64 2e 20 20 41 6e 79 20 69  s closed.  Any i
53c0: 6e 64 69 63 65 73 20 63 72 65 61 74 65 64 20 6f  ndices created o
53d0: 6e 20 61 20 74 65 6d 70 6f 72 61 72 79 20 74 61  n a temporary ta
53e0: 62 6c 65 0a 61 72 65 20 61 6c 73 6f 20 74 65 6d  ble.are also tem
53f0: 70 6f 72 61 72 79 2e 20 20 54 65 6d 70 6f 72 61  porary.  Tempora
5400: 72 79 20 74 61 62 6c 65 73 20 61 6e 64 20 69 6e  ry tables and in
5410: 64 69 63 65 73 20 61 72 65 20 73 74 6f 72 65 64  dices are stored
5420: 20 69 6e 20 61 0a 73 65 70 61 72 61 74 65 20 66   in a.separate f
5430: 69 6c 65 20 64 69 73 74 69 6e 63 74 20 66 72 6f  ile distinct fro
5440: 6d 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  m the main datab
5450: 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c  ase file.</p>..<
5460: 70 3e 20 49 66 20 61 20 26 6c 74 3b 64 61 74 61  p> If a &lt;data
5470: 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73  base-name&gt; is
5480: 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e   specified, then
5490: 20 74 68 65 20 74 61 62 6c 65 20 69 73 20 63 72   the table is cr
54a0: 65 61 74 65 64 20 69 6e 20 0a 74 68 65 20 6e 61  eated in .the na
54b0: 6d 65 64 20 64 61 74 61 62 61 73 65 2e 20 49 74  med database. It
54c0: 20 69 73 20 61 6e 20 65 72 72 6f 72 20 74 6f 20   is an error to 
54d0: 73 70 65 63 69 66 79 20 62 6f 74 68 20 61 20 26  specify both a &
54e0: 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  lt;database-name
54f0: 26 67 74 3b 0a 61 6e 64 20 74 68 65 20 54 45 4d  &gt;.and the TEM
5500: 50 20 6b 65 79 77 6f 72 64 2c 20 75 6e 6c 65 73  P keyword, unles
5510: 73 20 74 68 65 20 26 6c 74 3b 64 61 74 61 62 61  s the &lt;databa
5520: 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 22  se-name&gt; is "
5530: 74 65 6d 70 22 2e 20 49 66 20 6e 6f 0a 64 61 74  temp". If no.dat
5540: 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 73 70  abase name is sp
5550: 65 63 69 66 69 65 64 2c 20 61 6e 64 20 74 68 65  ecified, and the
5560: 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 20 69 73   TEMP keyword is
5570: 20 6e 6f 74 20 70 72 65 73 65 6e 74 2c 0a 74 68   not present,.th
5580: 65 20 74 61 62 6c 65 20 69 73 20 63 72 65 61 74  e table is creat
5590: 65 64 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64  ed in the main d
55a0: 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70  atabase.</p>..<p
55b0: 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f  >The optional co
55c0: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 66 6f  nflict-clause fo
55d0: 6c 6c 6f 77 69 6e 67 20 65 61 63 68 20 63 6f 6e  llowing each con
55e0: 73 74 72 61 69 6e 74 0a 61 6c 6c 6f 77 73 20 74  straint.allows t
55f0: 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
5600: 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69   of an alternati
5610: 76 65 20 64 65 66 61 75 6c 74 0a 63 6f 6e 73 74  ve default.const
5620: 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72  raint conflict r
5630: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
5640: 74 68 6d 20 66 6f 72 20 74 68 61 74 20 63 6f 6e  thm for that con
5650: 73 74 72 61 69 6e 74 2e 0a 54 68 65 20 64 65 66  straint..The def
5660: 61 75 6c 74 20 69 73 20 61 62 6f 72 74 20 41 42  ault is abort AB
5670: 4f 52 54 2e 20 20 44 69 66 66 65 72 65 6e 74 20  ORT.  Different 
5680: 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69 74 68  constraints with
5690: 69 6e 20 74 68 65 20 73 61 6d 65 0a 74 61 62 6c  in the same.tabl
56a0: 65 20 6d 61 79 20 68 61 76 65 20 64 69 66 66 65  e may have diffe
56b0: 72 65 6e 74 20 64 65 66 61 75 6c 74 20 63 6f 6e  rent default con
56c0: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
56d0: 20 61 6c 67 6f 72 69 74 68 6d 73 2e 0a 49 66 20   algorithms..If 
56e0: 61 6e 20 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c  an COPY, INSERT,
56f0: 20 6f 72 20 55 50 44 41 54 45 20 63 6f 6d 6d 61   or UPDATE comma
5700: 6e 64 20 73 70 65 63 69 66 69 65 73 20 61 20 64  nd specifies a d
5710: 69 66 66 65 72 65 6e 74 20 63 6f 6e 66 6c 69 63  ifferent conflic
5720: 74 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t.resolution alg
5730: 6f 72 69 74 68 6d 2c 20 74 68 65 6e 20 74 68 61  orithm, then tha
5740: 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  t algorithm is u
5750: 73 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 20  sed in place of 
5760: 74 68 65 0a 64 65 66 61 75 6c 74 20 61 6c 67 6f  the.default algo
5770: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
5780: 69 6e 20 74 68 65 20 43 52 45 41 54 45 20 54 41  in the CREATE TA
5790: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0a 53  BLE statement..S
57a0: 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74  ee the section t
57b0: 69 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23  itled.<a href="#
57c0: 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e  conflict">ON CON
57d0: 46 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64  FLICT</a> for ad
57e0: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
57f0: 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 43 48  tion.</p>..<p>CH
5800: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  ECK constraints 
5810: 61 72 65 20 73 75 70 70 6f 72 74 65 64 20 61 73  are supported as
5820: 20 6f 66 20 76 65 72 73 69 6f 6e 20 33 2e 33 2e   of version 3.3.
5830: 30 2e 20 20 50 72 69 6f 72 0a 74 6f 20 76 65 72  0.  Prior.to ver
5840: 73 69 6f 6e 20 33 2e 33 2e 30 2c 20 43 48 45 43  sion 3.3.0, CHEC
5850: 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 65  K constraints we
5860: 72 65 20 70 61 72 73 65 64 20 62 75 74 20 6e 6f  re parsed but no
5870: 74 20 65 6e 66 6f 72 63 65 64 2e 3c 2f 70 3e 0a  t enforced.</p>.
5880: 0a 3c 70 3e 54 68 65 72 65 20 61 72 65 20 6e 6f  .<p>There are no
5890: 20 61 72 62 69 74 72 61 72 79 20 6c 69 6d 69 74   arbitrary limit
58a0: 73 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 0a  s on the number.
58b0: 6f 66 20 63 6f 6c 75 6d 6e 73 20 6f 72 20 6f 6e  of columns or on
58c0: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   the number of c
58d0: 6f 6e 73 74 72 61 69 6e 74 73 20 69 6e 20 61 20  onstraints in a 
58e0: 74 61 62 6c 65 2e 0a 54 68 65 20 74 6f 74 61 6c  table..The total
58f0: 20 61 6d 6f 75 6e 74 20 6f 66 20 64 61 74 61 20   amount of data 
5900: 69 6e 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20  in a single row 
5910: 69 73 20 6c 69 6d 69 74 65 64 20 74 6f 20 61 62  is limited to ab
5920: 6f 75 74 0a 31 20 6d 65 67 61 62 79 74 65 73 20  out.1 megabytes 
5930: 69 6e 20 76 65 72 73 69 6f 6e 20 32 2e 38 2e 20  in version 2.8. 
5940: 20 49 6e 20 76 65 72 73 69 6f 6e 20 33 2e 30 20   In version 3.0 
5950: 74 68 65 72 65 20 69 73 20 6e 6f 20 61 72 62 69  there is no arbi
5960: 74 72 61 72 79 0a 6c 69 6d 69 74 20 6f 6e 20 74  trary.limit on t
5970: 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 64 61 74  he amount of dat
5980: 61 20 69 6e 20 61 20 72 6f 77 2e 3c 2f 70 3e 0a  a in a row.</p>.
5990: 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20  ..<p>The CREATE 
59a0: 54 41 42 4c 45 20 41 53 20 66 6f 72 6d 20 64 65  TABLE AS form de
59b0: 66 69 6e 65 73 20 74 68 65 20 74 61 62 6c 65 20  fines the table 
59c0: 74 6f 20 62 65 0a 74 68 65 20 72 65 73 75 6c 74  to be.the result
59d0: 20 73 65 74 20 6f 66 20 61 20 71 75 65 72 79 2e   set of a query.
59e0: 20 20 54 68 65 20 6e 61 6d 65 73 20 6f 66 20 74    The names of t
59f0: 68 65 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 73  he table columns
5a00: 20 61 72 65 0a 74 68 65 20 6e 61 6d 65 73 20 6f   are.the names o
5a10: 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e  f the columns in
5a20: 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70 3e   the result.</p>
5a30: 0a 0a 3c 70 3e 54 68 65 20 65 78 61 63 74 20 74  ..<p>The exact t
5a40: 65 78 74 0a 6f 66 20 65 61 63 68 20 43 52 45 41  ext.of each CREA
5a50: 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  TE TABLE stateme
5a60: 6e 74 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20  nt is stored in 
5a70: 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61  the <b>sqlite_ma
5a80: 73 74 65 72 3c 2f 62 3e 0a 74 61 62 6c 65 2e 20  ster</b>.table. 
5a90: 20 45 76 65 72 79 20 74 69 6d 65 20 74 68 65 20   Every time the 
5aa0: 64 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e  database is open
5ab0: 65 64 2c 20 61 6c 6c 20 43 52 45 41 54 45 20 54  ed, all CREATE T
5ac0: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 73 0a  ABLE statements.
5ad0: 61 72 65 20 72 65 61 64 20 66 72 6f 6d 20 74 68  are read from th
5ae0: 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74  e <b>sqlite_mast
5af0: 65 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61 6e 64  er</b> table and
5b00: 20 75 73 65 64 20 74 6f 20 72 65 67 65 6e 65 72   used to regener
5b10: 61 74 65 0a 53 51 4c 69 74 65 27 73 20 69 6e 74  ate.SQLite's int
5b20: 65 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61  ernal representa
5b30: 74 69 6f 6e 20 6f 66 20 74 68 65 20 74 61 62 6c  tion of the tabl
5b40: 65 20 6c 61 79 6f 75 74 2e 0a 49 66 20 74 68 65  e layout..If the
5b50: 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e   original comman
5b60: 64 20 77 61 73 20 61 20 43 52 45 41 54 45 20 54  d was a CREATE T
5b70: 41 42 4c 45 20 41 53 20 74 68 65 6e 20 74 68 65  ABLE AS then the
5b80: 6e 20 61 6e 20 65 71 75 69 76 61 6c 65 6e 74 0a  n an equivalent.
5b90: 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61  CREATE TABLE sta
5ba0: 74 65 6d 65 6e 74 20 69 73 20 73 79 6e 74 68 65  tement is synthe
5bb0: 73 69 7a 65 64 20 61 6e 64 20 73 74 6f 72 65 20  sized and store 
5bc0: 69 6e 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73  in <b>sqlite_mas
5bd0: 74 65 72 3c 2f 62 3e 0a 69 6e 20 70 6c 61 63 65  ter</b>.in place
5be0: 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c   of the original
5bf0: 20 63 6f 6d 6d 61 6e 64 2e 0a 54 68 65 20 74 65   command..The te
5c00: 78 74 20 6f 66 20 43 52 45 41 54 45 20 54 45 4d  xt of CREATE TEM
5c10: 50 4f 52 41 52 59 20 54 41 42 4c 45 20 73 74 61  PORARY TABLE sta
5c20: 74 65 6d 65 6e 74 73 20 61 72 65 20 73 74 6f 72  tements are stor
5c30: 65 64 20 69 6e 20 74 68 65 0a 3c 62 3e 73 71 6c  ed in the.<b>sql
5c40: 69 74 65 5f 74 65 6d 70 5f 6d 61 73 74 65 72 3c  ite_temp_master<
5c50: 2f 62 3e 20 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a  /b> table..</p>.
5c60: 0a 3c 70 3e 49 66 20 74 68 65 20 6f 70 74 69 6f  .<p>If the optio
5c70: 6e 61 6c 20 49 46 20 4e 4f 54 20 45 58 49 53 54  nal IF NOT EXIST
5c80: 53 20 63 6c 61 75 73 65 20 69 73 20 70 72 65 73  S clause is pres
5c90: 65 6e 74 20 61 6e 64 20 61 6e 6f 74 68 65 72 20  ent and another 
5ca0: 74 61 62 6c 65 0a 77 69 74 68 20 74 68 65 20 73  table.with the s
5cb0: 61 6d 65 20 6e 61 6d 65 20 61 6c 65 61 64 79 20  ame name aleady 
5cc0: 65 78 69 73 74 73 2c 20 74 68 65 6e 20 74 68 69  exists, then thi
5cd0: 73 20 63 6f 6d 6d 61 6e 64 20 62 65 63 6f 6d 65  s command become
5ce0: 73 20 61 20 6e 6f 2d 6f 70 2e 3c 2f 70 3e 0a 0a  s a no-op.</p>..
5cf0: 3c 70 3e 54 61 62 6c 65 73 20 61 72 65 20 72 65  <p>Tables are re
5d00: 6d 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65 20  moved using the 
5d10: 3c 61 20 68 72 65 66 3d 22 23 64 72 6f 70 74 61  <a href="#dropta
5d20: 62 6c 65 22 3e 44 52 4f 50 20 54 41 42 4c 45 3c  ble">DROP TABLE<
5d30: 2f 61 3e 20 0a 73 74 61 74 65 6d 65 6e 74 2e 20  /a> .statement. 
5d40: 20 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f   </p>.}...Sectio
5d50: 6e 20 7b 43 52 45 41 54 45 20 54 52 49 47 47 45  n {CREATE TRIGGE
5d60: 52 7d 20 63 72 65 61 74 65 74 72 69 67 67 65 72  R} createtrigger
5d70: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
5d80: 61 74 65 6d 65 6e 74 7d 20 7b 0a 43 52 45 41 54  atement} {.CREAT
5d90: 45 20 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52  E [TEMP | TEMPOR
5da0: 41 52 59 5d 20 54 52 49 47 47 45 52 20 3c 74 72  ARY] TRIGGER <tr
5db0: 69 67 67 65 72 2d 6e 61 6d 65 3e 20 5b 20 42 45  igger-name> [ BE
5dc0: 46 4f 52 45 20 7c 20 41 46 54 45 52 20 5d 0a 3c  FORE | AFTER ].<
5dd0: 64 61 74 61 62 61 73 65 2d 65 76 65 6e 74 3e 20  database-event> 
5de0: 4f 4e 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  ON [<database-na
5df0: 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61  me> .] <table-na
5e00: 6d 65 3e 0a 3c 74 72 69 67 67 65 72 2d 61 63 74  me>.<trigger-act
5e10: 69 6f 6e 3e 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b  ion>.}..Syntax {
5e20: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
5e30: 0a 43 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20  .CREATE [TEMP | 
5e40: 54 45 4d 50 4f 52 41 52 59 5d 20 54 52 49 47 47  TEMPORARY] TRIGG
5e50: 45 52 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65  ER <trigger-name
5e60: 3e 20 49 4e 53 54 45 41 44 20 4f 46 0a 3c 64 61  > INSTEAD OF.<da
5e70: 74 61 62 61 73 65 2d 65 76 65 6e 74 3e 20 4f 4e  tabase-event> ON
5e80: 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65   [<database-name
5e90: 3e 20 2e 5d 20 3c 76 69 65 77 2d 6e 61 6d 65 3e  > .] <view-name>
5ea0: 0a 3c 74 72 69 67 67 65 72 2d 61 63 74 69 6f 6e  .<trigger-action
5eb0: 3e 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b 64 61 74  >.}..Syntax {dat
5ec0: 61 62 61 73 65 2d 65 76 65 6e 74 7d 20 7b 0a 44  abase-event} {.D
5ed0: 45 4c 45 54 45 20 7c 20 0a 49 4e 53 45 52 54 20  ELETE | .INSERT 
5ee0: 7c 20 0a 55 50 44 41 54 45 20 7c 20 0a 55 50 44  | .UPDATE | .UPD
5ef0: 41 54 45 20 4f 46 20 3c 63 6f 6c 75 6d 6e 2d 6c  ATE OF <column-l
5f00: 69 73 74 3e 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b  ist>.}..Syntax {
5f10: 74 72 69 67 67 65 72 2d 61 63 74 69 6f 6e 7d 20  trigger-action} 
5f20: 7b 0a 5b 20 46 4f 52 20 45 41 43 48 20 52 4f 57  {.[ FOR EACH ROW
5f30: 20 7c 20 46 4f 52 20 45 41 43 48 20 53 54 41 54   | FOR EACH STAT
5f40: 45 4d 45 4e 54 20 5d 20 5b 20 57 48 45 4e 20 3c  EMENT ] [ WHEN <
5f50: 65 78 70 72 65 73 73 69 6f 6e 3e 20 5d 20 0a 42  expression> ] .B
5f60: 45 47 49 4e 20 0a 20 20 3c 74 72 69 67 67 65 72  EGIN .  <trigger
5f70: 2d 73 74 65 70 3e 20 3b 20 5b 20 3c 74 72 69 67  -step> ; [ <trig
5f80: 67 65 72 2d 73 74 65 70 3e 20 3b 20 5d 2a 0a 45  ger-step> ; ]*.E
5f90: 4e 44 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b 74 72  ND.}..Syntax {tr
5fa0: 69 67 67 65 72 2d 73 74 65 70 7d 20 7b 0a 3c 75  igger-step} {.<u
5fb0: 70 64 61 74 65 2d 73 74 61 74 65 6d 65 6e 74 3e  pdate-statement>
5fc0: 20 7c 20 3c 69 6e 73 65 72 74 2d 73 74 61 74 65   | <insert-state
5fd0: 6d 65 6e 74 3e 20 7c 20 0a 3c 64 65 6c 65 74 65  ment> | .<delete
5fe0: 2d 73 74 61 74 65 6d 65 6e 74 3e 20 7c 20 3c 73  -statement> | <s
5ff0: 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e  elect-statement>
6000: 20 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54   .}..puts {.<p>T
6010: 68 65 20 43 52 45 41 54 45 20 54 52 49 47 47 45  he CREATE TRIGGE
6020: 52 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75  R statement is u
6030: 73 65 64 20 74 6f 20 61 64 64 20 74 72 69 67 67  sed to add trigg
6040: 65 72 73 20 74 6f 20 74 68 65 20 0a 64 61 74 61  ers to the .data
6050: 62 61 73 65 20 73 63 68 65 6d 61 2e 20 54 72 69  base schema. Tri
6060: 67 67 65 72 73 20 61 72 65 20 64 61 74 61 62 61  ggers are databa
6070: 73 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 28 74  se operations (t
6080: 68 65 20 3c 69 3e 74 72 69 67 67 65 72 2d 61 63  he <i>trigger-ac
6090: 74 69 6f 6e 3c 2f 69 3e 29 20 0a 74 68 61 74 20  tion</i>) .that 
60a0: 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  are automaticall
60b0: 79 20 70 65 72 66 6f 72 6d 65 64 20 77 68 65 6e  y performed when
60c0: 20 61 20 73 70 65 63 69 66 69 65 64 20 64 61 74   a specified dat
60d0: 61 62 61 73 65 20 65 76 65 6e 74 20 28 74 68 65  abase event (the
60e0: 0a 3c 69 3e 64 61 74 61 62 61 73 65 2d 65 76 65  .<i>database-eve
60f0: 6e 74 3c 2f 69 3e 29 20 6f 63 63 75 72 73 2e 20  nt</i>) occurs. 
6100: 20 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 74 72 69 67   </p>..<p>A trig
6110: 67 65 72 20 6d 61 79 20 62 65 20 73 70 65 63 69  ger may be speci
6120: 66 69 65 64 20 74 6f 20 66 69 72 65 20 77 68 65  fied to fire whe
6130: 6e 65 76 65 72 20 61 20 44 45 4c 45 54 45 2c 20  never a DELETE, 
6140: 49 4e 53 45 52 54 20 6f 72 20 55 50 44 41 54 45  INSERT or UPDATE
6150: 20 6f 66 20 61 0a 70 61 72 74 69 63 75 6c 61 72   of a.particular
6160: 20 64 61 74 61 62 61 73 65 20 74 61 62 6c 65 20   database table 
6170: 6f 63 63 75 72 73 2c 20 6f 72 20 77 68 65 6e 65  occurs, or whene
6180: 76 65 72 20 61 6e 20 55 50 44 41 54 45 20 6f 66  ver an UPDATE of
6190: 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 0a 73 70 65   one or more.spe
61a0: 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73 20 6f  cified columns o
61b0: 66 20 61 20 74 61 62 6c 65 20 61 72 65 20 75 70  f a table are up
61c0: 64 61 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41  dated.</p>..<p>A
61d0: 74 20 74 68 69 73 20 74 69 6d 65 20 53 51 4c 69  t this time SQLi
61e0: 74 65 20 73 75 70 70 6f 72 74 73 20 6f 6e 6c 79  te supports only
61f0: 20 46 4f 52 20 45 41 43 48 20 52 4f 57 20 74 72   FOR EACH ROW tr
6200: 69 67 67 65 72 73 2c 20 6e 6f 74 20 46 4f 52 20  iggers, not FOR 
6210: 45 41 43 48 0a 53 54 41 54 45 4d 45 4e 54 20 74  EACH.STATEMENT t
6220: 72 69 67 67 65 72 73 2e 20 48 65 6e 63 65 20 65  riggers. Hence e
6230: 78 70 6c 69 63 69 74 6c 79 20 73 70 65 63 69 66  xplicitly specif
6240: 79 69 6e 67 20 46 4f 52 20 45 41 43 48 20 52 4f  ying FOR EACH RO
6250: 57 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20 20  W is optional.  
6260: 46 4f 52 0a 45 41 43 48 20 52 4f 57 20 69 6d 70  FOR.EACH ROW imp
6270: 6c 69 65 73 20 74 68 61 74 20 74 68 65 20 53 51  lies that the SQ
6280: 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65  L statements spe
6290: 63 69 66 69 65 64 20 61 73 20 3c 69 3e 74 72 69  cified as <i>tri
62a0: 67 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 0a  gger-steps</i> .
62b0: 6d 61 79 20 62 65 20 65 78 65 63 75 74 65 64 20  may be executed 
62c0: 28 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68  (depending on th
62d0: 65 20 57 48 45 4e 20 63 6c 61 75 73 65 29 20 66  e WHEN clause) f
62e0: 6f 72 20 65 61 63 68 20 64 61 74 61 62 61 73 65  or each database
62f0: 20 72 6f 77 20 62 65 69 6e 67 0a 69 6e 73 65 72   row being.inser
6300: 74 65 64 2c 20 75 70 64 61 74 65 64 20 6f 72 20  ted, updated or 
6310: 64 65 6c 65 74 65 64 20 62 79 20 74 68 65 20 73  deleted by the s
6320: 74 61 74 65 6d 65 6e 74 20 63 61 75 73 69 6e 67  tatement causing
6330: 20 74 68 65 20 74 72 69 67 67 65 72 20 74 6f 20   the trigger to 
6340: 66 69 72 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 6f  fire.</p>..<p>Bo
6350: 74 68 20 74 68 65 20 57 48 45 4e 20 63 6c 61 75  th the WHEN clau
6360: 73 65 20 61 6e 64 20 74 68 65 20 3c 69 3e 74 72  se and the <i>tr
6370: 69 67 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20  igger-steps</i> 
6380: 6d 61 79 20 61 63 63 65 73 73 20 65 6c 65 6d 65  may access eleme
6390: 6e 74 73 20 6f 66 20 0a 74 68 65 20 72 6f 77 20  nts of .the row 
63a0: 62 65 69 6e 67 20 69 6e 73 65 72 74 65 64 2c 20  being inserted, 
63b0: 64 65 6c 65 74 65 64 20 6f 72 20 75 70 64 61 74  deleted or updat
63c0: 65 64 20 75 73 69 6e 67 20 72 65 66 65 72 65 6e  ed using referen
63d0: 63 65 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20  ces of the form 
63e0: 0a 22 4e 45 57 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d  ."NEW.<i>column-
63f0: 6e 61 6d 65 3c 2f 69 3e 22 20 61 6e 64 20 22 4f  name</i>" and "O
6400: 4c 44 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d  LD.<i>column-nam
6410: 65 3c 2f 69 3e 22 2c 20 77 68 65 72 65 0a 3c 69  e</i>", where.<i
6420: 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e  >column-name</i>
6430: 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
6440: 61 20 63 6f 6c 75 6d 6e 20 66 72 6f 6d 20 74 68  a column from th
6450: 65 20 74 61 62 6c 65 20 74 68 61 74 20 74 68 65  e table that the
6460: 20 74 72 69 67 67 65 72 0a 69 73 20 61 73 73 6f   trigger.is asso
6470: 63 69 61 74 65 64 20 77 69 74 68 2e 20 4f 4c 44  ciated with. OLD
6480: 20 61 6e 64 20 4e 45 57 20 72 65 66 65 72 65 6e   and NEW referen
6490: 63 65 73 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20  ces may only be 
64a0: 75 73 65 64 20 69 6e 20 74 72 69 67 67 65 72 73  used in triggers
64b0: 20 6f 6e 0a 3c 69 3e 74 72 69 67 67 65 72 2d 65   on.<i>trigger-e
64c0: 76 65 6e 74 3c 2f 69 3e 73 20 66 6f 72 20 77 68  vent</i>s for wh
64d0: 69 63 68 20 74 68 65 79 20 61 72 65 20 72 65 6c  ich they are rel
64e0: 65 76 61 6e 74 2c 20 61 73 20 66 6f 6c 6c 6f 77  evant, as follow
64f0: 73 3a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62  s:</p>..<table b
6500: 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64  order=0 cellpadd
6510: 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74 64  ing=10>.<tr>.<td
6520: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
6530: 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74  ign="right" widt
6540: 68 3d 31 32 30 3e 3c 69 3e 49 4e 53 45 52 54 3c  h=120><i>INSERT<
6550: 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  /i></td>.<td val
6560: 69 67 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 72 65  ign="top">NEW re
6570: 66 65 72 65 6e 63 65 73 20 61 72 65 20 76 61 6c  ferences are val
6580: 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74  id</td>.</tr>.<t
6590: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
65a0: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
65b0: 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 55  " width=120><i>U
65c0: 50 44 41 54 45 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c  PDATE</i></td>.<
65d0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
65e0: 4e 45 57 20 61 6e 64 20 4f 4c 44 20 72 65 66 65  NEW and OLD refe
65f0: 72 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64  rences are valid
6600: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e  </td>.</tr>.<tr>
6610: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
6620: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  " align="right" 
6630: 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 44 45 4c  width=120><i>DEL
6640: 45 54 45 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64  ETE</i></td>.<td
6650: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4f 4c   valign="top">OL
6660: 44 20 72 65 66 65 72 65 6e 63 65 73 20 61 72 65  D references are
6670: 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72   valid</td>.</tr
6680: 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 70 3e 0a  >.</table>.</p>.
6690: 0a 3c 70 3e 49 66 20 61 20 57 48 45 4e 20 63 6c  .<p>If a WHEN cl
66a0: 61 75 73 65 20 69 73 20 73 75 70 70 6c 69 65 64  ause is supplied
66b0: 2c 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  , the SQL statem
66c0: 65 6e 74 73 20 73 70 65 63 69 66 69 65 64 20 61  ents specified a
66d0: 73 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65  s <i>trigger-ste
66e0: 70 73 3c 2f 69 3e 20 61 72 65 20 6f 6e 6c 79 20  ps</i> are only 
66f0: 65 78 65 63 75 74 65 64 20 66 6f 72 20 72 6f 77  executed for row
6700: 73 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 20  s for which the 
6710: 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20 74  WHEN clause is t
6720: 72 75 65 2e 20 49 66 20 6e 6f 20 57 48 45 4e 20  rue. If no WHEN 
6730: 63 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c 69  clause is suppli
6740: 65 64 2c 20 74 68 65 20 53 51 4c 20 73 74 61 74  ed, the SQL stat
6750: 65 6d 65 6e 74 73 20 61 72 65 20 65 78 65 63 75  ements are execu
6760: 74 65 64 20 66 6f 72 20 61 6c 6c 20 72 6f 77 73  ted for all rows
6770: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 70  .</p>..<p>The sp
6780: 65 63 69 66 69 65 64 20 3c 69 3e 74 72 69 67 67  ecified <i>trigg
6790: 65 72 2d 74 69 6d 65 3c 2f 69 3e 20 64 65 74 65  er-time</i> dete
67a0: 72 6d 69 6e 65 73 20 77 68 65 6e 20 74 68 65 20  rmines when the 
67b0: 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73  <i>trigger-steps
67c0: 3c 2f 69 3e 0a 77 69 6c 6c 20 62 65 20 65 78 65  </i>.will be exe
67d0: 63 75 74 65 64 20 72 65 6c 61 74 69 76 65 20 74  cuted relative t
67e0: 6f 20 74 68 65 20 69 6e 73 65 72 74 69 6f 6e 2c  o the insertion,
67f0: 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 6f 72   modification or
6800: 20 72 65 6d 6f 76 61 6c 20 6f 66 20 74 68 65 0a   removal of the.
6810: 61 73 73 6f 63 69 61 74 65 64 20 72 6f 77 2e 3c  associated row.<
6820: 2f 70 3e 0a 0a 3c 70 3e 41 6e 20 4f 4e 20 43 4f  /p>..<p>An ON CO
6830: 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20 6d 61  NFLICT clause ma
6840: 79 20 62 65 20 73 70 65 63 69 66 69 65 64 20 61  y be specified a
6850: 73 20 70 61 72 74 20 6f 66 20 61 6e 20 55 50 44  s part of an UPD
6860: 41 54 45 20 6f 72 20 49 4e 53 45 52 54 0a 3c 69  ATE or INSERT.<i
6870: 3e 74 72 69 67 67 65 72 2d 73 74 65 70 3c 2f 69  >trigger-step</i
6880: 3e 2e 20 48 6f 77 65 76 65 72 20 69 66 20 61 6e  >. However if an
6890: 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61   ON CONFLICT cla
68a0: 75 73 65 20 69 73 20 73 70 65 63 69 66 69 65 64  use is specified
68b0: 20 61 73 20 70 61 72 74 20 6f 66 20 0a 74 68 65   as part of .the
68c0: 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 69   statement causi
68d0: 6e 67 20 74 68 65 20 74 72 69 67 67 65 72 20 74  ng the trigger t
68e0: 6f 20 66 69 72 65 2c 20 74 68 65 6e 20 74 68 69  o fire, then thi
68f0: 73 20 63 6f 6e 66 6c 69 63 74 20 68 61 6e 64 6c  s conflict handl
6900: 69 6e 67 0a 70 6f 6c 69 63 79 20 69 73 20 75 73  ing.policy is us
6910: 65 64 20 69 6e 73 74 65 61 64 2e 3c 2f 70 3e 0a  ed instead.</p>.
6920: 0a 3c 70 3e 54 72 69 67 67 65 72 73 20 61 72 65  .<p>Triggers are
6930: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64   automatically d
6940: 72 6f 70 70 65 64 20 77 68 65 6e 20 74 68 65 20  ropped when the 
6950: 74 61 62 6c 65 20 74 68 61 74 20 74 68 65 79 20  table that they 
6960: 61 72 65 20 0a 61 73 73 6f 63 69 61 74 65 64 20  are .associated 
6970: 77 69 74 68 20 69 73 20 64 72 6f 70 70 65 64 2e  with is dropped.
6980: 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65 72  </p>..<p>Trigger
6990: 73 20 6d 61 79 20 62 65 20 63 72 65 61 74 65 64  s may be created
69a0: 20 6f 6e 20 76 69 65 77 73 2c 20 61 73 20 77 65   on views, as we
69b0: 6c 6c 20 61 73 20 6f 72 64 69 6e 61 72 79 20 74  ll as ordinary t
69c0: 61 62 6c 65 73 2c 20 62 79 20 73 70 65 63 69 66  ables, by specif
69d0: 79 69 6e 67 0a 49 4e 53 54 45 41 44 20 4f 46 20  ying.INSTEAD OF 
69e0: 69 6e 20 74 68 65 20 43 52 45 41 54 45 20 54 52  in the CREATE TR
69f0: 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74 2e  IGGER statement.
6a00: 20 49 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20   If one or more 
6a10: 4f 4e 20 49 4e 53 45 52 54 2c 20 4f 4e 20 44 45  ON INSERT, ON DE
6a20: 4c 45 54 45 0a 6f 72 20 4f 4e 20 55 50 44 41 54  LETE.or ON UPDAT
6a30: 45 20 74 72 69 67 67 65 72 73 20 61 72 65 20 64  E triggers are d
6a40: 65 66 69 6e 65 64 20 6f 6e 20 61 20 76 69 65 77  efined on a view
6a50: 2c 20 74 68 65 6e 20 69 74 20 69 73 20 6e 6f 74  , then it is not
6a60: 20 61 6e 20 65 72 72 6f 72 20 74 6f 20 65 78 65   an error to exe
6a70: 63 75 74 65 0a 61 6e 20 49 4e 53 45 52 54 2c 20  cute.an INSERT, 
6a80: 44 45 4c 45 54 45 20 6f 72 20 55 50 44 41 54 45  DELETE or UPDATE
6a90: 20 73 74 61 74 65 6d 65 6e 74 20 6f 6e 20 74 68   statement on th
6aa0: 65 20 76 69 65 77 2c 20 72 65 73 70 65 63 74 69  e view, respecti
6ab0: 76 65 6c 79 2e 20 54 68 65 72 65 61 66 74 65 72  vely. Thereafter
6ac0: 2c 0a 65 78 65 63 75 74 69 6e 67 20 61 6e 20 49  ,.executing an I
6ad0: 4e 53 45 52 54 2c 20 44 45 4c 45 54 45 20 6f 72  NSERT, DELETE or
6ae0: 20 55 50 44 41 54 45 20 6f 6e 20 74 68 65 20 76   UPDATE on the v
6af0: 69 65 77 20 63 61 75 73 65 73 20 74 68 65 20 61  iew causes the a
6b00: 73 73 6f 63 69 61 74 65 64 0a 20 20 74 72 69 67  ssociated.  trig
6b10: 67 65 72 73 20 74 6f 20 66 69 72 65 2e 20 54 68  gers to fire. Th
6b20: 65 20 72 65 61 6c 20 74 61 62 6c 65 73 20 75 6e  e real tables un
6b30: 64 65 72 6c 79 69 6e 67 20 74 68 65 20 76 69 65  derlying the vie
6b40: 77 20 61 72 65 20 6e 6f 74 20 6d 6f 64 69 66 69  w are not modifi
6b50: 65 64 0a 20 20 28 65 78 63 65 70 74 20 70 6f 73  ed.  (except pos
6b60: 73 69 62 6c 79 20 65 78 70 6c 69 63 69 74 6c 79  sibly explicitly
6b70: 2c 20 62 79 20 61 20 74 72 69 67 67 65 72 20 70  , by a trigger p
6b80: 72 6f 67 72 61 6d 29 2e 3c 2f 70 3e 0a 0a 3c 70  rogram).</p>..<p
6b90: 3e 3c 62 3e 45 78 61 6d 70 6c 65 3a 3c 2f 62 3e  ><b>Example:</b>
6ba0: 3c 2f 70 3e 0a 0a 3c 70 3e 41 73 73 75 6d 69 6e  </p>..<p>Assumin
6bb0: 67 20 74 68 61 74 20 63 75 73 74 6f 6d 65 72 20  g that customer 
6bc0: 72 65 63 6f 72 64 73 20 61 72 65 20 73 74 6f 72  records are stor
6bd0: 65 64 20 69 6e 20 74 68 65 20 22 63 75 73 74 6f  ed in the "custo
6be0: 6d 65 72 73 22 20 74 61 62 6c 65 2c 20 61 6e 64  mers" table, and
6bf0: 0a 74 68 61 74 20 6f 72 64 65 72 20 72 65 63 6f  .that order reco
6c00: 72 64 73 20 61 72 65 20 73 74 6f 72 65 64 20 69  rds are stored i
6c10: 6e 20 74 68 65 20 22 6f 72 64 65 72 73 22 20 74  n the "orders" t
6c20: 61 62 6c 65 2c 20 74 68 65 20 66 6f 6c 6c 6f 77  able, the follow
6c30: 69 6e 67 20 74 72 69 67 67 65 72 0a 65 6e 73 75  ing trigger.ensu
6c40: 72 65 73 20 74 68 61 74 20 61 6c 6c 20 61 73 73  res that all ass
6c50: 6f 63 69 61 74 65 64 20 6f 72 64 65 72 73 20 61  ociated orders a
6c60: 72 65 20 72 65 64 69 72 65 63 74 65 64 20 77 68  re redirected wh
6c70: 65 6e 20 61 20 63 75 73 74 6f 6d 65 72 20 63 68  en a customer ch
6c80: 61 6e 67 65 73 0a 68 69 73 20 6f 72 20 68 65 72  anges.his or her
6c90: 20 61 64 64 72 65 73 73 3a 3c 2f 70 3e 0a 7d 0a   address:</p>.}.
6ca0: 45 78 61 6d 70 6c 65 20 7b 0a 43 52 45 41 54 45  Example {.CREATE
6cb0: 20 54 52 49 47 47 45 52 20 75 70 64 61 74 65 5f   TRIGGER update_
6cc0: 63 75 73 74 6f 6d 65 72 5f 61 64 64 72 65 73 73  customer_address
6cd0: 20 55 50 44 41 54 45 20 4f 46 20 61 64 64 72 65   UPDATE OF addre
6ce0: 73 73 20 4f 4e 20 63 75 73 74 6f 6d 65 72 73 20  ss ON customers 
6cf0: 0a 20 20 42 45 47 49 4e 0a 20 20 20 20 55 50 44  .  BEGIN.    UPD
6d00: 41 54 45 20 6f 72 64 65 72 73 20 53 45 54 20 61  ATE orders SET a
6d10: 64 64 72 65 73 73 20 3d 20 6e 65 77 2e 61 64 64  ddress = new.add
6d20: 72 65 73 73 20 57 48 45 52 45 20 63 75 73 74 6f  ress WHERE custo
6d30: 6d 65 72 5f 6e 61 6d 65 20 3d 20 6f 6c 64 2e 6e  mer_name = old.n
6d40: 61 6d 65 3b 0a 20 20 45 4e 44 3b 0a 7d 0a 70 75  ame;.  END;.}.pu
6d50: 74 73 20 7b 0a 3c 70 3e 57 69 74 68 20 74 68 69  ts {.<p>With thi
6d60: 73 20 74 72 69 67 67 65 72 20 69 6e 73 74 61 6c  s trigger instal
6d70: 6c 65 64 2c 20 65 78 65 63 75 74 69 6e 67 20 74  led, executing t
6d80: 68 65 20 73 74 61 74 65 6d 65 6e 74 3a 3c 2f 70  he statement:</p
6d90: 3e 0a 7d 0a 0a 45 78 61 6d 70 6c 65 20 7b 0a 55  >.}..Example {.U
6da0: 50 44 41 54 45 20 63 75 73 74 6f 6d 65 72 73 20  PDATE customers 
6db0: 53 45 54 20 61 64 64 72 65 73 73 20 3d 20 27 31  SET address = '1
6dc0: 20 4d 61 69 6e 20 53 74 2e 27 20 57 48 45 52 45   Main St.' WHERE
6dd0: 20 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f   name = 'Jack Jo
6de0: 6e 65 73 27 3b 0a 7d 0a 70 75 74 73 20 7b 0a 3c  nes';.}.puts {.<
6df0: 70 3e 63 61 75 73 65 73 20 74 68 65 20 66 6f 6c  p>causes the fol
6e00: 6c 6f 77 69 6e 67 20 74 6f 20 62 65 20 61 75 74  lowing to be aut
6e10: 6f 6d 61 74 69 63 61 6c 6c 79 20 65 78 65 63 75  omatically execu
6e20: 74 65 64 3a 3c 2f 70 3e 0a 7d 0a 45 78 61 6d 70  ted:</p>.}.Examp
6e30: 6c 65 20 7b 0a 55 50 44 41 54 45 20 6f 72 64 65  le {.UPDATE orde
6e40: 72 73 20 53 45 54 20 61 64 64 72 65 73 73 20 3d  rs SET address =
6e50: 20 27 31 20 4d 61 69 6e 20 53 74 2e 27 20 57 48   '1 Main St.' WH
6e60: 45 52 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d  ERE customer_nam
6e70: 65 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e 65 73 27  e = 'Jack Jones'
6e80: 3b 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 4e  ;.}..puts {.<p>N
6e90: 6f 74 65 20 74 68 61 74 20 63 75 72 72 65 6e 74  ote that current
6ea0: 6c 79 2c 20 74 72 69 67 67 65 72 73 20 6d 61 79  ly, triggers may
6eb0: 20 62 65 68 61 76 65 20 6f 64 64 6c 79 20 77 68   behave oddly wh
6ec0: 65 6e 20 63 72 65 61 74 65 64 20 6f 6e 20 74 61  en created on ta
6ed0: 62 6c 65 73 0a 20 20 77 69 74 68 20 49 4e 54 45  bles.  with INTE
6ee0: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20  GER PRIMARY KEY 
6ef0: 66 69 65 6c 64 73 2e 20 49 66 20 61 20 42 45 46  fields. If a BEF
6f00: 4f 52 45 20 74 72 69 67 67 65 72 20 70 72 6f 67  ORE trigger prog
6f10: 72 61 6d 20 6d 6f 64 69 66 69 65 73 20 74 68 65  ram modifies the
6f20: 20 0a 20 20 49 4e 54 45 47 45 52 20 50 52 49 4d   .  INTEGER PRIM
6f30: 41 52 59 20 4b 45 59 20 66 69 65 6c 64 20 6f 66  ARY KEY field of
6f40: 20 61 20 72 6f 77 20 74 68 61 74 20 77 69 6c 6c   a row that will
6f50: 20 62 65 20 73 75 62 73 65 71 75 65 6e 74 6c 79   be subsequently
6f60: 20 75 70 64 61 74 65 64 20 62 79 20 74 68 65 0a   updated by the.
6f70: 20 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74    statement that
6f80: 20 63 61 75 73 65 73 20 74 68 65 20 74 72 69 67   causes the trig
6f90: 67 65 72 20 74 6f 20 66 69 72 65 2c 20 74 68 65  ger to fire, the
6fa0: 6e 20 74 68 65 20 75 70 64 61 74 65 20 6d 61 79  n the update may
6fb0: 20 6e 6f 74 20 6f 63 63 75 72 2e 20 0a 20 20 54   not occur. .  T
6fc0: 68 65 20 77 6f 72 6b 61 72 6f 75 6e 64 20 69 73  he workaround is
6fd0: 20 74 6f 20 64 65 63 6c 61 72 65 20 74 68 65 20   to declare the 
6fe0: 74 61 62 6c 65 20 77 69 74 68 20 61 20 50 52 49  table with a PRI
6ff0: 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20  MARY KEY column 
7000: 69 6e 73 74 65 61 64 0a 20 20 6f 66 20 61 6e 20  instead.  of an 
7010: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
7020: 4b 45 59 20 63 6f 6c 75 6d 6e 2e 3c 2f 70 3e 0a  KEY column.</p>.
7030: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 41 20 73  }..puts {.<p>A s
7040: 70 65 63 69 61 6c 20 53 51 4c 20 66 75 6e 63 74  pecial SQL funct
7050: 69 6f 6e 20 52 41 49 53 45 28 29 20 6d 61 79 20  ion RAISE() may 
7060: 62 65 20 75 73 65 64 20 77 69 74 68 69 6e 20 61  be used within a
7070: 20 74 72 69 67 67 65 72 2d 70 72 6f 67 72 61 6d   trigger-program
7080: 2c 20 77 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f  , with the follo
7090: 77 69 6e 67 20 73 79 6e 74 61 78 3c 2f 70 3e 20  wing syntax</p> 
70a0: 0a 7d 0a 53 79 6e 74 61 78 20 7b 72 61 69 73 65  .}.Syntax {raise
70b0: 2d 66 75 6e 63 74 69 6f 6e 7d 20 7b 0a 52 41 49  -function} {.RAI
70c0: 53 45 20 28 20 41 42 4f 52 54 2c 20 3c 65 72 72  SE ( ABORT, <err
70d0: 6f 72 2d 6d 65 73 73 61 67 65 3e 20 29 20 7c 20  or-message> ) | 
70e0: 0a 52 41 49 53 45 20 28 20 46 41 49 4c 2c 20 3c  .RAISE ( FAIL, <
70f0: 65 72 72 6f 72 2d 6d 65 73 73 61 67 65 3e 20 29  error-message> )
7100: 20 7c 20 0a 52 41 49 53 45 20 28 20 52 4f 4c 4c   | .RAISE ( ROLL
7110: 42 41 43 4b 2c 20 3c 65 72 72 6f 72 2d 6d 65 73  BACK, <error-mes
7120: 73 61 67 65 3e 20 29 20 7c 20 0a 52 41 49 53 45  sage> ) | .RAISE
7130: 20 28 20 49 47 4e 4f 52 45 20 29 0a 7d 0a 70 75   ( IGNORE ).}.pu
7140: 74 73 20 7b 0a 3c 70 3e 57 68 65 6e 20 6f 6e 65  ts {.<p>When one
7150: 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 74 68   of the first th
7160: 72 65 65 20 66 6f 72 6d 73 20 69 73 20 63 61 6c  ree forms is cal
7170: 6c 65 64 20 64 75 72 69 6e 67 20 74 72 69 67 67  led during trigg
7180: 65 72 2d 70 72 6f 67 72 61 6d 20 65 78 65 63 75  er-program execu
7190: 74 69 6f 6e 2c 20 74 68 65 20 73 70 65 63 69 66  tion, the specif
71a0: 69 65 64 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  ied ON CONFLICT 
71b0: 70 72 6f 63 65 73 73 69 6e 67 20 69 73 20 70 65  processing is pe
71c0: 72 66 6f 72 6d 65 64 20 28 65 69 74 68 65 72 20  rformed (either 
71d0: 41 42 4f 52 54 2c 20 46 41 49 4c 20 6f 72 20 0a  ABORT, FAIL or .
71e0: 20 52 4f 4c 4c 42 41 43 4b 29 20 61 6e 64 20 74   ROLLBACK) and t
71f0: 68 65 20 63 75 72 72 65 6e 74 20 71 75 65 72 79  he current query
7200: 20 74 65 72 6d 69 6e 61 74 65 73 2e 20 41 6e 20   terminates. An 
7210: 65 72 72 6f 72 20 63 6f 64 65 20 6f 66 20 53 51  error code of SQ
7220: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20  LITE_CONSTRAINT 
7230: 69 73 20 72 65 74 75 72 6e 65 64 20 74 6f 20 74  is returned to t
7240: 68 65 20 75 73 65 72 2c 20 61 6c 6f 6e 67 20 77  he user, along w
7250: 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65  ith the specifie
7260: 64 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e  d error message.
7270: 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 52 41  </p>..<p>When RA
7280: 49 53 45 28 49 47 4e 4f 52 45 29 20 69 73 20 63  ISE(IGNORE) is c
7290: 61 6c 6c 65 64 2c 20 74 68 65 20 72 65 6d 61 69  alled, the remai
72a0: 6e 64 65 72 20 6f 66 20 74 68 65 20 63 75 72 72  nder of the curr
72b0: 65 6e 74 20 74 72 69 67 67 65 72 20 70 72 6f 67  ent trigger prog
72c0: 72 61 6d 2c 0a 74 68 65 20 73 74 61 74 65 6d 65  ram,.the stateme
72d0: 6e 74 20 74 68 61 74 20 63 61 75 73 65 64 20 74  nt that caused t
72e0: 68 65 20 74 72 69 67 67 65 72 20 70 72 6f 67 72  he trigger progr
72f0: 61 6d 20 74 6f 20 65 78 65 63 75 74 65 20 61 6e  am to execute an
7300: 64 20 61 6e 79 20 73 75 62 73 65 71 75 65 6e 74  d any subsequent
7310: 0a 20 20 20 20 74 72 69 67 67 65 72 20 70 72 6f  .    trigger pro
7320: 67 72 61 6d 73 20 74 68 61 74 20 77 6f 75 6c 64  grams that would
7330: 20 6f 66 20 62 65 65 6e 20 65 78 65 63 75 74 65   of been execute
7340: 64 20 61 72 65 20 61 62 61 6e 64 6f 6e 65 64 2e  d are abandoned.
7350: 20 4e 6f 20 64 61 74 61 62 61 73 65 0a 20 20 20   No database.   
7360: 20 63 68 61 6e 67 65 73 20 61 72 65 20 72 6f 6c   changes are rol
7370: 6c 65 64 20 62 61 63 6b 2e 20 20 49 66 20 74 68  led back.  If th
7380: 65 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74  e statement that
7390: 20 63 61 75 73 65 64 20 74 68 65 20 74 72 69 67   caused the trig
73a0: 67 65 72 20 70 72 6f 67 72 61 6d 0a 20 20 20 20  ger program.    
73b0: 74 6f 20 65 78 65 63 75 74 65 20 69 73 20 69 74  to execute is it
73c0: 73 65 6c 66 20 70 61 72 74 20 6f 66 20 61 20 74  self part of a t
73d0: 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 2c 20  rigger program, 
73e0: 74 68 65 6e 20 74 68 61 74 20 74 72 69 67 67 65  then that trigge
73f0: 72 20 70 72 6f 67 72 61 6d 0a 20 20 20 20 72 65  r program.    re
7400: 73 75 6d 65 73 20 65 78 65 63 75 74 69 6f 6e 20  sumes execution 
7410: 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67  at the beginning
7420: 20 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 65   of the next ste
7430: 70 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67  p..</p>..<p>Trig
7440: 67 65 72 73 20 61 72 65 20 72 65 6d 6f 76 65 64  gers are removed
7450: 20 75 73 69 6e 67 20 74 68 65 20 3c 61 20 68 72   using the <a hr
7460: 65 66 3d 22 23 64 72 6f 70 74 72 69 67 67 65 72  ef="#droptrigger
7470: 22 3e 44 52 4f 50 20 54 52 49 47 47 45 52 3c 2f  ">DROP TRIGGER</
7480: 61 3e 0a 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70  a>.statement.</p
7490: 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 43  >.}...Section {C
74a0: 52 45 41 54 45 20 56 49 45 57 7d 20 7b 63 72 65  REATE VIEW} {cre
74b0: 61 74 65 76 69 65 77 7d 0a 0a 53 79 6e 74 61 78  ateview}..Syntax
74c0: 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b   {sql-command} {
74d0: 0a 43 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20  .CREATE [TEMP | 
74e0: 54 45 4d 50 4f 52 41 52 59 5d 20 56 49 45 57 20  TEMPORARY] VIEW 
74f0: 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e  [<database-name>
7500: 2e 5d 20 3c 76 69 65 77 2d 6e 61 6d 65 3e 20 41  .] <view-name> A
7510: 53 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d  S <select-statem
7520: 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  ent>.}..puts {.<
7530: 70 3e 54 68 65 20 43 52 45 41 54 45 20 56 49 45  p>The CREATE VIE
7540: 57 20 63 6f 6d 6d 61 6e 64 20 61 73 73 69 67 6e  W command assign
7550: 73 20 61 20 6e 61 6d 65 20 74 6f 20 61 20 70 72  s a name to a pr
7560: 65 2d 70 61 63 6b 61 67 65 64 20 0a 3c 61 20 68  e-packaged .<a h
7570: 72 65 66 3d 22 23 73 65 6c 65 63 74 22 3e 53 45  ref="#select">SE
7580: 4c 45 43 54 3c 2f 61 3e 0a 73 74 61 74 65 6d 65  LECT</a>.stateme
7590: 6e 74 2e 20 20 4f 6e 63 65 20 74 68 65 20 76 69  nt.  Once the vi
75a0: 65 77 20 69 73 20 63 72 65 61 74 65 64 2c 20 69  ew is created, i
75b0: 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e  t can be used in
75c0: 20 74 68 65 20 46 52 4f 4d 20 63 6c 61 75 73 65   the FROM clause
75d0: 0a 6f 66 20 61 6e 6f 74 68 65 72 20 53 45 4c 45  .of another SELE
75e0: 43 54 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 61  CT in place of a
75f0: 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0a 3c 2f 70   table name..</p
7600: 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 22 54 45  >..<p>If the "TE
7610: 4d 50 22 20 6f 72 20 22 54 45 4d 50 4f 52 41 52  MP" or "TEMPORAR
7620: 59 22 20 6b 65 79 77 6f 72 64 20 6f 63 63 75 72  Y" keyword occur
7630: 73 20 69 6e 20 62 65 74 77 65 65 6e 20 22 43 52  s in between "CR
7640: 45 41 54 45 22 0a 61 6e 64 20 22 56 49 45 57 22  EATE".and "VIEW"
7650: 20 74 68 65 6e 20 74 68 65 20 76 69 65 77 20 74   then the view t
7660: 68 61 74 20 69 73 20 63 72 65 61 74 65 64 20 69  hat is created i
7670: 73 20 6f 6e 6c 79 20 76 69 73 69 62 6c 65 20 74  s only visible t
7680: 6f 20 74 68 65 0a 70 72 6f 63 65 73 73 20 74 68  o the.process th
7690: 61 74 20 6f 70 65 6e 65 64 20 74 68 65 20 64 61  at opened the da
76a0: 74 61 62 61 73 65 20 61 6e 64 20 69 73 20 61 75  tabase and is au
76b0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c 65  tomatically dele
76c0: 74 65 64 20 77 68 65 6e 0a 74 68 65 20 64 61 74  ted when.the dat
76d0: 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64 2e  abase is closed.
76e0: 3c 2f 70 3e 0a 0a 3c 70 3e 20 49 66 20 61 20 26  </p>..<p> If a &
76f0: 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  lt;database-name
7700: 26 67 74 3b 20 69 73 20 73 70 65 63 69 66 69 65  &gt; is specifie
7710: 64 2c 20 74 68 65 6e 20 74 68 65 20 76 69 65 77  d, then the view
7720: 20 69 73 20 63 72 65 61 74 65 64 20 69 6e 20 0a   is created in .
7730: 74 68 65 20 6e 61 6d 65 64 20 64 61 74 61 62 61  the named databa
7740: 73 65 2e 20 49 74 20 69 73 20 61 6e 20 65 72 72  se. It is an err
7750: 6f 72 20 74 6f 20 73 70 65 63 69 66 79 20 62 6f  or to specify bo
7760: 74 68 20 61 20 26 6c 74 3b 64 61 74 61 62 61 73  th a &lt;databas
7770: 65 2d 6e 61 6d 65 26 67 74 3b 0a 61 6e 64 20 74  e-name&gt;.and t
7780: 68 65 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 2c  he TEMP keyword,
7790: 20 75 6e 6c 65 73 73 20 74 68 65 20 26 6c 74 3b   unless the &lt;
77a0: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74  database-name&gt
77b0: 3b 20 69 73 20 22 74 65 6d 70 22 2e 20 49 66 20  ; is "temp". If 
77c0: 6e 6f 0a 64 61 74 61 62 61 73 65 20 6e 61 6d 65  no.database name
77d0: 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 61   is specified, a
77e0: 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77  nd the TEMP keyw
77f0: 6f 72 64 20 69 73 20 6e 6f 74 20 70 72 65 73 65  ord is not prese
7800: 6e 74 2c 0a 74 68 65 20 74 61 62 6c 65 20 69 73  nt,.the table is
7810: 20 63 72 65 61 74 65 64 20 69 6e 20 74 68 65 20   created in the 
7820: 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2e 3c 2f  main database.</
7830: 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63 61 6e 6e 6f  p>..<p>You canno
7840: 74 20 43 4f 50 59 2c 20 44 45 4c 45 54 45 2c 20  t COPY, DELETE, 
7850: 49 4e 53 45 52 54 20 6f 72 20 55 50 44 41 54 45  INSERT or UPDATE
7860: 20 61 20 76 69 65 77 2e 20 20 56 69 65 77 73 20   a view.  Views 
7870: 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79 20 0a 69  are read-only .i
7880: 6e 20 53 51 4c 69 74 65 2e 20 20 48 6f 77 65 76  n SQLite.  Howev
7890: 65 72 2c 20 69 6e 20 6d 61 6e 79 20 63 61 73 65  er, in many case
78a0: 73 20 79 6f 75 20 63 61 6e 20 75 73 65 20 61 20  s you can use a 
78b0: 3c 61 20 68 72 65 66 3d 22 23 63 72 65 61 74 65  <a href="#create
78c0: 74 72 69 67 67 65 72 22 3e 0a 54 52 49 47 47 45  trigger">.TRIGGE
78d0: 52 3c 2f 61 3e 20 6f 6e 20 74 68 65 20 76 69 65  R</a> on the vie
78e0: 77 20 74 6f 20 61 63 63 6f 6d 70 6c 69 73 68 20  w to accomplish 
78f0: 74 68 65 20 73 61 6d 65 20 74 68 69 6e 67 2e 20  the same thing. 
7900: 20 56 69 65 77 73 20 61 72 65 20 72 65 6d 6f 76   Views are remov
7910: 65 64 20 0a 77 69 74 68 20 74 68 65 20 3c 61 20  ed .with the <a 
7920: 68 72 65 66 3d 22 23 64 72 6f 70 76 69 65 77 22  href="#dropview"
7930: 3e 44 52 4f 50 20 56 49 45 57 3c 2f 61 3e 20 0a  >DROP VIEW</a> .
7940: 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d 0a 0a  command.</p>.}..
7950: 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20  Section {CREATE 
7960: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 7d 20 7b  VIRTUAL TABLE} {
7970: 63 72 65 61 74 65 76 74 61 62 7d 0a 0a 53 79 6e  createvtab}..Syn
7980: 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64  tax {sql-command
7990: 7d 20 7b 0a 43 52 45 41 54 45 20 56 49 52 54 55  } {.CREATE VIRTU
79a0: 41 4c 20 54 41 42 4c 45 20 5b 3c 64 61 74 61 62  AL TABLE [<datab
79b0: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
79c0: 62 6c 65 2d 6e 61 6d 65 3e 20 55 53 49 4e 47 20  ble-name> USING 
79d0: 3c 6d 6f 64 75 6c 65 2d 6e 61 6d 65 3e 20 5b 28  <module-name> [(
79e0: 20 3c 61 72 67 75 6d 65 6e 74 73 3e 20 29 5d 0a   <arguments> )].
79f0: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 41 20 76  }..puts {.<p>A v
7a00: 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20  irtual table is 
7a10: 61 6e 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20  an interface to 
7a20: 61 6e 20 65 78 74 65 72 6e 61 6c 20 73 74 6f 72  an external stor
7a30: 61 67 65 20 6f 72 20 63 6f 6d 70 75 74 61 74 69  age or computati
7a40: 6f 6e 0a 65 6e 67 69 6e 65 20 74 68 61 74 20 61  on.engine that a
7a50: 70 70 65 61 72 73 20 74 6f 20 62 65 20 61 20 74  ppears to be a t
7a60: 61 62 6c 65 20 62 75 74 20 64 6f 65 73 20 6e 6f  able but does no
7a70: 74 20 61 63 74 75 61 6c 6c 79 20 73 74 6f 72 65  t actually store
7a80: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 69 6e 20   information.in 
7a90: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
7aa0: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 67 65  e.</p>..<p>In ge
7ab0: 6e 65 72 61 6c 2c 20 79 6f 75 20 63 61 6e 20 64  neral, you can d
7ac0: 6f 20 61 6e 79 74 68 69 6e 67 20 77 69 74 68 20  o anything with 
7ad0: 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  a virtual table 
7ae0: 74 68 61 74 20 63 61 6e 20 62 65 20 64 6f 6e 65  that can be done
7af0: 0a 77 69 74 68 20 61 6e 20 6f 72 64 69 6e 61 72  .with an ordinar
7b00: 79 20 74 61 62 6c 65 2c 20 65 78 63 65 70 74 20  y table, except 
7b10: 74 68 61 74 20 79 6f 75 20 63 61 6e 6e 6f 74 20  that you cannot 
7b20: 63 72 65 61 74 65 20 74 72 69 67 67 65 72 73 20  create triggers 
7b30: 6f 6e 20 61 0a 76 69 72 74 75 61 6c 20 74 61 62  on a.virtual tab
7b40: 6c 65 2e 20 20 53 6f 6d 65 20 76 69 72 74 75 61  le.  Some virtua
7b50: 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e  l table implemen
7b60: 74 61 74 69 6f 6e 73 20 6d 69 67 68 74 20 69 6d  tations might im
7b70: 70 6f 73 65 20 61 64 64 69 74 69 6f 6e 61 6c 0a  pose additional.
7b80: 72 65 73 74 72 69 63 74 69 6f 6e 73 2e 20 20 46  restrictions.  F
7b90: 6f 72 20 65 78 61 6d 70 6c 65 2c 20 6d 61 6e 79  or example, many
7ba0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73 20   virtual tables 
7bb0: 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79 2e 3c 2f  are read-only.</
7bc0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 26 6c 74 3b 6d  p>..<p>The &lt;m
7bd0: 6f 64 75 6c 65 2d 6e 61 6d 65 26 67 74 3b 20 69  odule-name&gt; i
7be0: 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 6e  s the name of an
7bf0: 20 6f 62 6a 65 63 74 20 74 68 61 74 20 69 6d 70   object that imp
7c00: 6c 65 6d 65 6e 74 73 0a 74 68 65 20 76 69 72 74  lements.the virt
7c10: 75 61 6c 20 74 61 62 6c 65 2e 20 20 54 68 65 20  ual table.  The 
7c20: 26 6c 74 3b 6d 6f 64 75 6c 65 2d 6e 61 6d 65 26  &lt;module-name&
7c30: 67 74 3b 20 6d 75 73 74 20 62 65 20 72 65 67 69  gt; must be regi
7c40: 73 74 65 72 65 64 20 77 69 74 68 0a 74 68 65 20  stered with.the 
7c50: 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65 20  SQLite database 
7c60: 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 73 69 6e 67  connection using
7c70: 0a 3c 61 20 68 72 65 66 3d 22 63 61 70 69 33 72  .<a href="capi3r
7c80: 65 66 2e 68 74 6d 6c 23 73 71 6c 69 74 65 33 5f  ef.html#sqlite3_
7c90: 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 22 3e 73  create_module">s
7ca0: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f  qlite3_create_mo
7cb0: 64 75 6c 65 3c 2f 61 3e 0a 70 72 69 6f 72 20 74  dule</a>.prior t
7cc0: 6f 20 69 73 73 75 69 6e 67 20 74 68 65 20 43 52  o issuing the CR
7cd0: 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42  EATE VIRTUAL TAB
7ce0: 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0a 54 68  LE statement..Th
7cf0: 65 20 6d 6f 64 75 6c 65 20 74 61 6b 65 73 20 7a  e module takes z
7d00: 65 72 6f 20 6f 72 20 6d 6f 72 65 20 63 6f 6d 6d  ero or more comm
7d10: 61 2d 73 65 70 61 72 61 74 65 64 20 61 72 67 75  a-separated argu
7d20: 6d 65 6e 74 73 2e 0a 54 68 65 20 61 72 67 75 6d  ments..The argum
7d30: 65 6e 74 73 20 63 61 6e 20 62 65 20 6a 75 73 74  ents can be just
7d40: 20 61 62 6f 75 74 20 61 6e 79 20 74 65 78 74 20   about any text 
7d50: 61 73 20 6c 6f 6e 67 20 61 73 20 69 74 20 68 61  as long as it ha
7d60: 73 20 62 61 6c 61 6e 63 65 64 0a 70 61 72 65 6e  s balanced.paren
7d70: 74 68 65 73 65 73 2e 20 20 54 68 65 20 61 72 67  theses.  The arg
7d80: 75 6d 65 6e 74 20 73 79 6e 74 61 78 20 69 73 20  ument syntax is 
7d90: 73 75 66 66 69 63 69 65 6e 74 6c 79 20 67 65 6e  sufficiently gen
7da0: 65 72 61 6c 20 74 68 61 74 20 74 68 65 0a 61 72  eral that the.ar
7db0: 67 75 6d 65 6e 74 73 20 63 61 6e 20 62 65 20 6d  guments can be m
7dc0: 61 64 65 20 74 6f 20 61 70 70 65 61 72 20 61 73  ade to appear as
7dd0: 20 63 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69   column definiti
7de0: 6f 6e 73 20 69 6e 20 61 20 74 72 61 64 69 74 69  ons in a traditi
7df0: 6f 6e 61 6c 0a 3c 61 20 68 72 65 66 3d 22 23 63  onal.<a href="#c
7e00: 72 65 61 74 65 74 61 62 6c 65 22 3e 43 52 45 41  reatetable">CREA
7e10: 54 45 20 54 41 42 4c 45 3c 2f 61 3e 20 73 74 61  TE TABLE</a> sta
7e20: 74 65 6d 65 6e 74 2e 20 20 0a 53 51 4c 69 74 65  tement.  .SQLite
7e30: 20 70 61 73 73 65 73 20 74 68 65 20 6d 6f 64 75   passes the modu
7e40: 6c 65 20 61 72 67 75 6d 65 6e 74 73 20 64 69 72  le arguments dir
7e50: 65 63 74 6c 79 0a 74 6f 20 74 68 65 20 6d 6f 64  ectly.to the mod
7e60: 75 6c 65 20 77 69 74 68 6f 75 74 20 61 6e 79 20  ule without any 
7e70: 69 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 2e 20  interpretation. 
7e80: 20 49 74 20 69 73 20 74 68 65 20 72 65 73 70 6f   It is the respo
7e90: 6e 73 69 62 69 6c 69 74 79 0a 6f 66 20 74 68 65  nsibility.of the
7ea0: 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e   module implemen
7eb0: 74 61 74 69 6f 6e 20 74 6f 20 70 61 72 73 65 20  tation to parse 
7ec0: 61 6e 64 20 69 6e 74 65 72 70 72 65 74 20 69 74  and interpret it
7ed0: 73 20 6f 77 6e 20 61 72 67 75 6d 65 6e 74 73 2e  s own arguments.
7ee0: 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 76 69 72 74 75  </p>..<p>A virtu
7ef0: 61 6c 20 74 61 62 6c 65 20 69 73 20 64 65 73 74  al table is dest
7f00: 72 6f 79 65 64 20 75 73 69 6e 67 20 74 68 65 20  royed using the 
7f10: 6f 72 64 69 6e 61 72 79 0a 3c 61 20 68 72 65 66  ordinary.<a href
7f20: 3d 22 23 64 72 6f 70 74 61 62 6c 65 22 3e 44 52  ="#droptable">DR
7f30: 4f 50 20 54 41 42 4c 45 3c 2f 61 3e 20 73 74 61  OP TABLE</a> sta
7f40: 74 65 6d 65 6e 74 2e 20 20 54 68 65 72 65 20 69  tement.  There i
7f50: 73 20 6e 6f 0a 44 52 4f 50 20 56 49 52 54 55 41  s no.DROP VIRTUA
7f60: 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  L TABLE statemen
7f70: 74 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f  t.</p>.}..Sectio
7f80: 6e 20 44 45 4c 45 54 45 20 64 65 6c 65 74 65 0a  n DELETE delete.
7f90: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
7fa0: 74 65 6d 65 6e 74 7d 20 7b 0a 44 45 4c 45 54 45  tement} {.DELETE
7fb0: 20 46 52 4f 4d 20 5b 3c 64 61 74 61 62 61 73 65   FROM [<database
7fc0: 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65  -name> .] <table
7fd0: 2d 6e 61 6d 65 3e 20 5b 57 48 45 52 45 20 3c 65  -name> [WHERE <e
7fe0: 78 70 72 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a  xpr>].}..puts {.
7ff0: 3c 70 3e 54 68 65 20 44 45 4c 45 54 45 20 63 6f  <p>The DELETE co
8000: 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 20 74 6f  mmand is used to
8010: 20 72 65 6d 6f 76 65 20 72 65 63 6f 72 64 73 20   remove records 
8020: 66 72 6f 6d 20 61 20 74 61 62 6c 65 2e 0a 54 68  from a table..Th
8030: 65 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73  e command consis
8040: 74 73 20 6f 66 20 74 68 65 20 22 44 45 4c 45 54  ts of the "DELET
8050: 45 20 46 52 4f 4d 22 20 6b 65 79 77 6f 72 64 73  E FROM" keywords
8060: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 0a 74 68 65   followed by.the
8070: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 61 62   name of the tab
8080: 6c 65 20 66 72 6f 6d 20 77 68 69 63 68 20 72 65  le from which re
8090: 63 6f 72 64 73 20 61 72 65 20 74 6f 20 62 65 20  cords are to be 
80a0: 72 65 6d 6f 76 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c  removed..</p>..<
80b0: 70 3e 57 69 74 68 6f 75 74 20 61 20 57 48 45 52  p>Without a WHER
80c0: 45 20 63 6c 61 75 73 65 2c 20 61 6c 6c 20 72 6f  E clause, all ro
80d0: 77 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  ws of the table 
80e0: 61 72 65 20 72 65 6d 6f 76 65 64 2e 0a 49 66 20  are removed..If 
80f0: 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 69  a WHERE clause i
8100: 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65 6e  s supplied, then
8110: 20 6f 6e 6c 79 20 74 68 6f 73 65 20 72 6f 77 73   only those rows
8120: 20 74 68 61 74 20 6d 61 74 63 68 0a 74 68 65 20   that match.the 
8130: 65 78 70 72 65 73 73 69 6f 6e 20 61 72 65 20 72  expression are r
8140: 65 6d 6f 76 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a  emoved.</p>.}...
8150: 53 65 63 74 69 6f 6e 20 7b 44 45 54 41 43 48 20  Section {DETACH 
8160: 44 41 54 41 42 41 53 45 7d 20 64 65 74 61 63 68  DATABASE} detach
8170: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f  ..Syntax {sql-co
8180: 6d 6d 61 6e 64 7d 20 7b 0a 44 45 54 41 43 48 20  mmand} {.DETACH 
8190: 5b 44 41 54 41 42 41 53 45 5d 20 3c 64 61 74 61  [DATABASE] <data
81a0: 62 61 73 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75  base-name>.}..pu
81b0: 74 73 20 7b 0a 3c 70 3e 54 68 69 73 20 73 74 61  ts {.<p>This sta
81c0: 74 65 6d 65 6e 74 20 64 65 74 61 63 68 65 73 20  tement detaches 
81d0: 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 61  an additional da
81e0: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
81f0: 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 0a 61 74  n previously .at
8200: 74 61 63 68 65 64 20 75 73 69 6e 67 20 74 68 65  tached using the
8210: 20 3c 61 20 68 72 65 66 3d 22 23 61 74 74 61 63   <a href="#attac
8220: 68 22 3e 41 54 54 41 43 48 20 44 41 54 41 42 41  h">ATTACH DATABA
8230: 53 45 3c 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74  SE</a> statement
8240: 2e 20 20 49 74 0a 69 73 20 70 6f 73 73 69 62 6c  .  It.is possibl
8250: 65 20 74 6f 20 68 61 76 65 20 74 68 65 20 73 61  e to have the sa
8260: 6d 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  me database file
8270: 20 61 74 74 61 63 68 65 64 20 6d 75 6c 74 69 70   attached multip
8280: 6c 65 20 74 69 6d 65 73 20 75 73 69 6e 67 20 0a  le times using .
8290: 64 69 66 66 65 72 65 6e 74 20 6e 61 6d 65 73 2c  different names,
82a0: 20 61 6e 64 20 64 65 74 61 63 68 69 6e 67 20 6f   and detaching o
82b0: 6e 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f  ne connection to
82c0: 20 61 20 66 69 6c 65 20 77 69 6c 6c 20 6c 65 61   a file will lea
82d0: 76 65 20 74 68 65 20 0a 6f 74 68 65 72 73 20 69  ve the .others i
82e0: 6e 74 61 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  ntact.</p>..<p>T
82f0: 68 69 73 20 73 74 61 74 65 6d 65 6e 74 20 77 69  his statement wi
8300: 6c 6c 20 66 61 69 6c 20 69 66 20 53 51 4c 69 74  ll fail if SQLit
8310: 65 20 69 73 20 69 6e 20 74 68 65 20 6d 69 64 64  e is in the midd
8320: 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61 63 74  le of a transact
8330: 69 6f 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63  ion.</p>.}...Sec
8340: 74 69 6f 6e 20 7b 44 52 4f 50 20 49 4e 44 45 58  tion {DROP INDEX
8350: 7d 20 64 72 6f 70 69 6e 64 65 78 0a 0a 53 79 6e  } dropindex..Syn
8360: 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64  tax {sql-command
8370: 7d 20 7b 0a 44 52 4f 50 20 49 4e 44 45 58 20 5b  } {.DROP INDEX [
8380: 49 46 20 45 58 49 53 54 53 5d 20 5b 3c 64 61 74  IF EXISTS] [<dat
8390: 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c  abase-name> .] <
83a0: 69 6e 64 65 78 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70  index-name>.}..p
83b0: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 52 4f  uts {.<p>The DRO
83c0: 50 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e  P INDEX statemen
83d0: 74 20 72 65 6d 6f 76 65 73 20 61 6e 20 69 6e 64  t removes an ind
83e0: 65 78 20 61 64 64 65 64 0a 77 69 74 68 20 74 68  ex added.with th
83f0: 65 20 3c 61 20 68 72 65 66 3d 22 23 63 72 65 61  e <a href="#crea
8400: 74 65 69 6e 64 65 78 22 3e 0a 43 52 45 41 54 45  teindex">.CREATE
8410: 20 49 4e 44 45 58 3c 2f 61 3e 20 73 74 61 74 65   INDEX</a> state
8420: 6d 65 6e 74 2e 20 20 54 68 65 20 69 6e 64 65 78  ment.  The index
8430: 20 6e 61 6d 65 64 20 69 73 20 63 6f 6d 70 6c 65   named is comple
8440: 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66 72 6f  tely removed fro
8450: 6d 0a 74 68 65 20 64 69 73 6b 2e 20 20 54 68 65  m.the disk.  The
8460: 20 6f 6e 6c 79 20 77 61 79 20 74 6f 20 72 65 63   only way to rec
8470: 6f 76 65 72 20 74 68 65 20 69 6e 64 65 78 20 69  over the index i
8480: 73 20 74 6f 20 72 65 65 6e 74 65 72 20 74 68 65  s to reenter the
8490: 0a 61 70 70 72 6f 70 72 69 61 74 65 20 43 52 45  .appropriate CRE
84a0: 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e  ATE INDEX comman
84b0: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44  d.</p>..<p>The D
84c0: 52 4f 50 20 49 4e 44 45 58 20 73 74 61 74 65 6d  ROP INDEX statem
84d0: 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 64  ent does not red
84e0: 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20  uce the size of 
84f0: 74 68 65 20 64 61 74 61 62 61 73 65 20 0a 66 69  the database .fi
8500: 6c 65 20 69 6e 20 74 68 65 20 64 65 66 61 75 6c  le in the defaul
8510: 74 20 6d 6f 64 65 2e 0a 45 6d 70 74 79 20 73 70  t mode..Empty sp
8520: 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61 62  ace in the datab
8530: 61 73 65 20 69 73 20 72 65 74 61 69 6e 65 64 20  ase is retained 
8540: 66 6f 72 20 6c 61 74 65 72 20 49 4e 53 45 52 54  for later INSERT
8550: 73 2e 20 20 54 6f 20 0a 72 65 6d 6f 76 65 20 66  s.  To .remove f
8560: 72 65 65 20 73 70 61 63 65 20 69 6e 20 74 68 65  ree space in the
8570: 20 64 61 74 61 62 61 73 65 2c 20 75 73 65 20 74   database, use t
8580: 68 65 20 3c 61 20 68 72 65 66 3d 22 23 76 61 63  he <a href="#vac
8590: 75 75 6d 22 3e 56 41 43 55 55 4d 3c 2f 61 3e 20  uum">VACUUM</a> 
85a0: 0a 63 6f 6d 6d 61 6e 64 2e 20 20 49 66 20 41 55  .command.  If AU
85b0: 54 4f 56 41 43 55 55 4d 20 6d 6f 64 65 20 69 73  TOVACUUM mode is
85c0: 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 61 20 64   enabled for a d
85d0: 61 74 61 62 61 73 65 20 74 68 65 6e 20 73 70 61  atabase then spa
85e0: 63 65 0a 77 69 6c 6c 20 62 65 20 66 72 65 65 64  ce.will be freed
85f0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62   automatically b
8600: 79 20 44 52 4f 50 20 49 4e 44 45 58 2e 3c 2f 70  y DROP INDEX.</p
8610: 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 44  >.}...Section {D
8620: 52 4f 50 20 54 41 42 4c 45 7d 20 64 72 6f 70 74  ROP TABLE} dropt
8630: 61 62 6c 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71  able..Syntax {sq
8640: 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f  l-command} {.DRO
8650: 50 20 54 41 42 4c 45 20 5b 49 46 20 45 58 49 53  P TABLE [IF EXIS
8660: 54 53 5d 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e  TS] [<database-n
8670: 61 6d 65 3e 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61  ame>.] <table-na
8680: 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  me>.}..puts {.<p
8690: 3e 54 68 65 20 44 52 4f 50 20 54 41 42 4c 45 20  >The DROP TABLE 
86a0: 73 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65  statement remove
86b0: 73 20 61 20 74 61 62 6c 65 20 61 64 64 65 64 20  s a table added 
86c0: 77 69 74 68 20 74 68 65 20 3c 61 20 68 72 65 66  with the <a href
86d0: 3d 0a 22 23 63 72 65 61 74 65 74 61 62 6c 65 22  =."#createtable"
86e0: 3e 43 52 45 41 54 45 20 54 41 42 4c 45 3c 2f 61  >CREATE TABLE</a
86f0: 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68  > statement.  Th
8700: 65 20 6e 61 6d 65 20 73 70 65 63 69 66 69 65 64  e name specified
8710: 20 69 73 20 74 68 65 0a 74 61 62 6c 65 20 6e 61   is the.table na
8720: 6d 65 2e 20 20 49 74 20 69 73 20 63 6f 6d 70 6c  me.  It is compl
8730: 65 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66 72  etely removed fr
8740: 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65 20  om the database 
8750: 73 63 68 65 6d 61 20 61 6e 64 20 74 68 65 20 0a  schema and the .
8760: 64 69 73 6b 20 66 69 6c 65 2e 20 20 54 68 65 20  disk file.  The 
8770: 74 61 62 6c 65 20 63 61 6e 20 6e 6f 74 20 62 65  table can not be
8780: 20 72 65 63 6f 76 65 72 65 64 2e 20 20 41 6c 6c   recovered.  All
8790: 20 69 6e 64 69 63 65 73 20 61 73 73 6f 63 69 61   indices associa
87a0: 74 65 64 20 0a 77 69 74 68 20 74 68 65 20 74 61  ted .with the ta
87b0: 62 6c 65 20 61 72 65 20 61 6c 73 6f 20 64 65 6c  ble are also del
87c0: 65 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  eted.</p>..<p>Th
87d0: 65 20 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61  e DROP TABLE sta
87e0: 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20  tement does not 
87f0: 72 65 64 75 63 65 20 74 68 65 20 73 69 7a 65 20  reduce the size 
8800: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
8810: 0a 66 69 6c 65 20 69 6e 20 74 68 65 20 64 65 66  .file in the def
8820: 61 75 6c 74 20 6d 6f 64 65 2e 20 20 45 6d 70 74  ault mode.  Empt
8830: 79 20 73 70 61 63 65 20 69 6e 20 74 68 65 20 64  y space in the d
8840: 61 74 61 62 61 73 65 20 69 73 20 72 65 74 61 69  atabase is retai
8850: 6e 65 64 20 66 6f 72 0a 6c 61 74 65 72 20 49 4e  ned for.later IN
8860: 53 45 52 54 73 2e 20 20 54 6f 20 0a 72 65 6d 6f  SERTs.  To .remo
8870: 76 65 20 66 72 65 65 20 73 70 61 63 65 20 69 6e  ve free space in
8880: 20 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 75   the database, u
8890: 73 65 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22  se the <a href="
88a0: 23 76 61 63 75 75 6d 22 3e 56 41 43 55 55 4d 3c  #vacuum">VACUUM<
88b0: 2f 61 3e 20 0a 63 6f 6d 6d 61 6e 64 2e 20 20 49  /a> .command.  I
88c0: 66 20 41 55 54 4f 56 41 43 55 55 4d 20 6d 6f 64  f AUTOVACUUM mod
88d0: 65 20 69 73 20 65 6e 61 62 6c 65 64 20 66 6f 72  e is enabled for
88e0: 20 61 20 64 61 74 61 62 61 73 65 20 74 68 65 6e   a database then
88f0: 20 73 70 61 63 65 0a 77 69 6c 6c 20 62 65 20 66   space.will be f
8900: 72 65 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c  reed automatical
8910: 6c 79 20 62 79 20 44 52 4f 50 20 54 41 42 4c 45  ly by DROP TABLE
8920: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70  .</p>..<p>The op
8930: 74 69 6f 6e 61 6c 20 49 46 20 45 58 49 53 54 53  tional IF EXISTS
8940: 20 63 6c 61 75 73 65 20 73 75 70 70 72 65 73 73   clause suppress
8950: 65 73 20 74 68 65 20 65 72 72 6f 72 20 74 68 61  es the error tha
8960: 74 20 77 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79  t would normally
8970: 0a 72 65 73 75 6c 74 20 69 66 20 74 68 65 20 74  .result if the t
8980: 61 62 6c 65 20 64 6f 65 73 20 6e 6f 74 20 65 78  able does not ex
8990: 69 73 74 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63  ist.</p>.}...Sec
89a0: 74 69 6f 6e 20 7b 44 52 4f 50 20 54 52 49 47 47  tion {DROP TRIGG
89b0: 45 52 7d 20 64 72 6f 70 74 72 69 67 67 65 72 0a  ER} droptrigger.
89c0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
89d0: 65 6d 65 6e 74 7d 20 7b 0a 44 52 4f 50 20 54 52  ement} {.DROP TR
89e0: 49 47 47 45 52 20 5b 3c 64 61 74 61 62 61 73 65  IGGER [<database
89f0: 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 72 69 67 67  -name> .] <trigg
8a00: 65 72 2d 6e 61 6d 65 3e 0a 7d 0a 70 75 74 73 20  er-name>.}.puts 
8a10: 7b 20 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 54  { .<p>The DROP T
8a20: 52 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74  RIGGER statement
8a30: 20 72 65 6d 6f 76 65 73 20 61 20 74 72 69 67 67   removes a trigg
8a40: 65 72 20 63 72 65 61 74 65 64 20 62 79 20 74 68  er created by th
8a50: 65 20 0a 3c 61 20 68 72 65 66 3d 22 23 63 72 65  e .<a href="#cre
8a60: 61 74 65 74 72 69 67 67 65 72 22 3e 43 52 45 41  atetrigger">CREA
8a70: 54 45 20 54 52 49 47 47 45 52 3c 2f 61 3e 20 73  TE TRIGGER</a> s
8a80: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 74  tatement.  The t
8a90: 72 69 67 67 65 72 20 69 73 20 0a 64 65 6c 65 74  rigger is .delet
8aa0: 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61  ed from the data
8ab0: 62 61 73 65 20 73 63 68 65 6d 61 2e 20 4e 6f 74  base schema. Not
8ac0: 65 20 74 68 61 74 20 74 72 69 67 67 65 72 73 20  e that triggers 
8ad0: 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  are automaticall
8ae0: 79 20 0a 64 72 6f 70 70 65 64 20 77 68 65 6e 20  y .dropped when 
8af0: 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 74  the associated t
8b00: 61 62 6c 65 20 69 73 20 64 72 6f 70 70 65 64 2e  able is dropped.
8b10: 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  </p>.}...Section
8b20: 20 7b 44 52 4f 50 20 56 49 45 57 7d 20 64 72 6f   {DROP VIEW} dro
8b30: 70 76 69 65 77 0a 0a 53 79 6e 74 61 78 20 7b 73  pview..Syntax {s
8b40: 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 52  ql-command} {.DR
8b50: 4f 50 20 56 49 45 57 20 3c 76 69 65 77 2d 6e 61  OP VIEW <view-na
8b60: 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  me>.}..puts {.<p
8b70: 3e 54 68 65 20 44 52 4f 50 20 56 49 45 57 20 73  >The DROP VIEW s
8b80: 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73  tatement removes
8b90: 20 61 20 76 69 65 77 20 63 72 65 61 74 65 64 20   a view created 
8ba0: 62 79 20 74 68 65 20 3c 61 20 68 72 65 66 3d 0a  by the <a href=.
8bb0: 22 23 63 72 65 61 74 65 76 69 65 77 22 3e 43 52  "#createview">CR
8bc0: 45 41 54 45 20 56 49 45 57 3c 2f 61 3e 20 73 74  EATE VIEW</a> st
8bd0: 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e 61  atement.  The na
8be0: 6d 65 20 73 70 65 63 69 66 69 65 64 20 69 73 20  me specified is 
8bf0: 74 68 65 20 0a 76 69 65 77 20 6e 61 6d 65 2e 20  the .view name. 
8c00: 20 49 74 20 69 73 20 72 65 6d 6f 76 65 64 20 66   It is removed f
8c10: 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65  rom the database
8c20: 20 73 63 68 65 6d 61 2c 20 62 75 74 20 6e 6f 20   schema, but no 
8c30: 61 63 74 75 61 6c 20 64 61 74 61 20 0a 69 6e 20  actual data .in 
8c40: 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 62  the underlying b
8c50: 61 73 65 20 74 61 62 6c 65 73 20 69 73 20 6d 6f  ase tables is mo
8c60: 64 69 66 69 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a  dified.</p>.}...
8c70: 53 65 63 74 69 6f 6e 20 45 58 50 4c 41 49 4e 20  Section EXPLAIN 
8c80: 65 78 70 6c 61 69 6e 0a 0a 53 79 6e 74 61 78 20  explain..Syntax 
8c90: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
8ca0: 7b 0a 45 58 50 4c 41 49 4e 20 3c 73 71 6c 2d 73  {.EXPLAIN <sql-s
8cb0: 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74  tatement>.}..put
8cc0: 73 20 7b 0a 3c 70 3e 54 68 65 20 45 58 50 4c 41  s {.<p>The EXPLA
8cd0: 49 4e 20 63 6f 6d 6d 61 6e 64 20 6d 6f 64 69 66  IN command modif
8ce0: 69 65 72 20 69 73 20 61 20 6e 6f 6e 2d 73 74 61  ier is a non-sta
8cf0: 6e 64 61 72 64 20 65 78 74 65 6e 73 69 6f 6e 2e  ndard extension.
8d00: 20 20 54 68 65 0a 69 64 65 61 20 63 6f 6d 65 73    The.idea comes
8d10: 20 66 72 6f 6d 20 61 20 73 69 6d 69 6c 61 72 20   from a similar 
8d20: 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 20 69 6e  command found in
8d30: 20 50 6f 73 74 67 72 65 53 51 4c 2c 20 62 75 74   PostgreSQL, but
8d40: 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 0a 69   the operation.i
8d50: 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 64 69 66  s completely dif
8d60: 66 65 72 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ferent.</p>..<p>
8d70: 49 66 20 74 68 65 20 45 58 50 4c 41 49 4e 20 6b  If the EXPLAIN k
8d80: 65 79 77 6f 72 64 20 61 70 70 65 61 72 73 20 62  eyword appears b
8d90: 65 66 6f 72 65 20 61 6e 79 20 6f 74 68 65 72 20  efore any other 
8da0: 53 51 4c 69 74 65 20 53 51 4c 20 63 6f 6d 6d 61  SQLite SQL comma
8db0: 6e 64 0a 74 68 65 6e 20 69 6e 73 74 65 61 64 20  nd.then instead 
8dc0: 6f 66 20 61 63 74 75 61 6c 6c 79 20 65 78 65 63  of actually exec
8dd0: 75 74 69 6e 67 20 74 68 65 20 63 6f 6d 6d 61 6e  uting the comman
8de0: 64 2c 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  d, the SQLite li
8df0: 62 72 61 72 79 20 77 69 6c 6c 0a 72 65 70 6f 72  brary will.repor
8e00: 74 20 62 61 63 6b 20 74 68 65 20 73 65 71 75 65  t back the seque
8e10: 6e 63 65 20 6f 66 20 76 69 72 74 75 61 6c 20 6d  nce of virtual m
8e20: 61 63 68 69 6e 65 20 69 6e 73 74 72 75 63 74 69  achine instructi
8e30: 6f 6e 73 20 69 74 20 77 6f 75 6c 64 20 68 61 76  ons it would hav
8e40: 65 0a 75 73 65 64 20 74 6f 20 65 78 65 63 75 74  e.used to execut
8e50: 65 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 68 61  e the command ha
8e60: 64 20 74 68 65 20 45 58 50 4c 41 49 4e 20 6b 65  d the EXPLAIN ke
8e70: 79 77 6f 72 64 20 6e 6f 74 20 62 65 65 6e 20 70  yword not been p
8e80: 72 65 73 65 6e 74 2e 0a 46 6f 72 20 61 64 64 69  resent..For addi
8e90: 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
8ea0: 6f 6e 20 61 62 6f 75 74 20 76 69 72 74 75 61 6c  on about virtual
8eb0: 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72 75 63   machine instruc
8ec0: 74 69 6f 6e 73 20 73 65 65 0a 74 68 65 20 3c 61  tions see.the <a
8ed0: 20 68 72 65 66 3d 22 61 72 63 68 2e 68 74 6d 6c   href="arch.html
8ee0: 22 3e 61 72 63 68 69 74 65 63 74 75 72 65 20 64  ">architecture d
8ef0: 65 73 63 72 69 70 74 69 6f 6e 3c 2f 61 3e 20 6f  escription</a> o
8f00: 72 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74  r the documentat
8f10: 69 6f 6e 0a 6f 6e 20 3c 61 20 68 72 65 66 3d 22  ion.on <a href="
8f20: 6f 70 63 6f 64 65 2e 68 74 6d 6c 22 3e 61 76 61  opcode.html">ava
8f30: 69 6c 61 62 6c 65 20 6f 70 63 6f 64 65 73 3c 2f  ilable opcodes</
8f40: 61 3e 20 66 6f 72 20 74 68 65 20 76 69 72 74 75  a> for the virtu
8f50: 61 6c 20 6d 61 63 68 69 6e 65 2e 3c 2f 70 3e 0a  al machine.</p>.
8f60: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 65 78 70 72  }...Section expr
8f70: 65 73 73 69 6f 6e 20 65 78 70 72 0a 0a 53 79 6e  ession expr..Syn
8f80: 74 61 78 20 7b 65 78 70 72 7d 20 7b 0a 3c 65 78  tax {expr} {.<ex
8f90: 70 72 3e 20 3c 62 69 6e 61 72 79 2d 6f 70 3e 20  pr> <binary-op> 
8fa0: 3c 65 78 70 72 3e 20 7c 0a 3c 65 78 70 72 3e 20  <expr> |.<expr> 
8fb0: 5b 4e 4f 54 5d 20 3c 6c 69 6b 65 2d 6f 70 3e 20  [NOT] <like-op> 
8fc0: 3c 65 78 70 72 3e 20 5b 45 53 43 41 50 45 20 3c  <expr> [ESCAPE <
8fd0: 65 78 70 72 3e 5d 20 7c 0a 3c 75 6e 61 72 79 2d  expr>] |.<unary-
8fe0: 6f 70 3e 20 3c 65 78 70 72 3e 20 7c 0a 28 20 3c  op> <expr> |.( <
8ff0: 65 78 70 72 3e 20 29 20 7c 0a 3c 63 6f 6c 75 6d  expr> ) |.<colum
9000: 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 74 61 62 6c 65  n-name> |.<table
9010: 2d 6e 61 6d 65 3e 20 2e 20 3c 63 6f 6c 75 6d 6e  -name> . <column
9020: 2d 6e 61 6d 65 3e 20 7c 0a 3c 64 61 74 61 62 61  -name> |.<databa
9030: 73 65 2d 6e 61 6d 65 3e 20 2e 20 3c 74 61 62 6c  se-name> . <tabl
9040: 65 2d 6e 61 6d 65 3e 20 2e 20 3c 63 6f 6c 75 6d  e-name> . <colum
9050: 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 6c 69 74 65 72  n-name> |.<liter
9060: 61 6c 2d 76 61 6c 75 65 3e 20 7c 0a 3c 70 61 72  al-value> |.<par
9070: 61 6d 65 74 65 72 3e 20 7c 0a 3c 66 75 6e 63 74  ameter> |.<funct
9080: 69 6f 6e 2d 6e 61 6d 65 3e 20 28 20 3c 65 78 70  ion-name> ( <exp
9090: 72 2d 6c 69 73 74 3e 20 7c 20 53 54 41 52 20 29  r-list> | STAR )
90a0: 20 7c 0a 3c 65 78 70 72 3e 20 49 53 4e 55 4c 4c   |.<expr> ISNULL
90b0: 20 7c 0a 3c 65 78 70 72 3e 20 4e 4f 54 4e 55 4c   |.<expr> NOTNUL
90c0: 4c 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d  L |.<expr> [NOT]
90d0: 20 42 45 54 57 45 45 4e 20 3c 65 78 70 72 3e 20   BETWEEN <expr> 
90e0: 41 4e 44 20 3c 65 78 70 72 3e 20 7c 0a 3c 65 78  AND <expr> |.<ex
90f0: 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c  pr> [NOT] IN ( <
9100: 76 61 6c 75 65 2d 6c 69 73 74 3e 20 29 20 7c 0a  value-list> ) |.
9110: 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20  <expr> [NOT] IN 
9120: 28 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d  ( <select-statem
9130: 65 6e 74 3e 20 29 20 7c 0a 3c 65 78 70 72 3e 20  ent> ) |.<expr> 
9140: 5b 4e 4f 54 5d 20 49 4e 20 5b 3c 64 61 74 61 62  [NOT] IN [<datab
9150: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
9160: 62 6c 65 2d 6e 61 6d 65 3e 20 7c 0a 5b 45 58 49  ble-name> |.[EXI
9170: 53 54 53 5d 20 28 20 3c 73 65 6c 65 63 74 2d 73  STS] ( <select-s
9180: 74 61 74 65 6d 65 6e 74 3e 20 29 20 7c 0a 43 41  tatement> ) |.CA
9190: 53 45 20 5b 3c 65 78 70 72 3e 5d 20 4c 50 20 57  SE [<expr>] LP W
91a0: 48 45 4e 20 3c 65 78 70 72 3e 20 54 48 45 4e 20  HEN <expr> THEN 
91b0: 3c 65 78 70 72 3e 20 52 50 50 4c 55 53 20 5b 45  <expr> RPPLUS [E
91c0: 4c 53 45 20 3c 65 78 70 72 3e 5d 20 45 4e 44 20  LSE <expr>] END 
91d0: 7c 0a 43 41 53 54 20 28 20 3c 65 78 70 72 3e 20  |.CAST ( <expr> 
91e0: 41 53 20 3c 74 79 70 65 3e 20 29 0a 7d 20 7b 6c  AS <type> ).} {l
91f0: 69 6b 65 2d 6f 70 7d 20 7b 0a 4c 49 4b 45 20 7c  ike-op} {.LIKE |
9200: 20 47 4c 4f 42 20 7c 20 52 45 47 45 58 50 20 7c   GLOB | REGEXP |
9210: 20 4d 41 54 43 48 0a 7d 0a 0a 70 75 74 73 20 7b   MATCH.}..puts {
9220: 0a 3c 70 3e 54 68 69 73 20 73 65 63 74 69 6f 6e  .<p>This section
9230: 20 69 73 20 64 69 66 66 65 72 65 6e 74 20 66 72   is different fr
9240: 6f 6d 20 74 68 65 20 6f 74 68 65 72 73 2e 20 20  om the others.  
9250: 4d 6f 73 74 20 6f 74 68 65 72 20 73 65 63 74 69  Most other secti
9260: 6f 6e 73 20 6f 66 0a 74 68 69 73 20 64 6f 63 75  ons of.this docu
9270: 6d 65 6e 74 20 74 61 6c 6b 73 20 61 62 6f 75 74  ment talks about
9280: 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 53 51   a particular SQ
9290: 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73  L command.  This
92a0: 20 73 65 63 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f   section does.no
92b0: 74 20 74 61 6c 6b 20 61 62 6f 75 74 20 61 20 73  t talk about a s
92c0: 74 61 6e 64 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e  tandalone comman
92d0: 64 20 62 75 74 20 61 62 6f 75 74 20 22 65 78 70  d but about "exp
92e0: 72 65 73 73 69 6f 6e 73 22 20 77 68 69 63 68 20  ressions" which 
92f0: 61 72 65 20 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e  are .subcomponen
9300: 74 73 20 6f 66 20 6d 6f 73 74 20 6f 74 68 65 72  ts of most other
9310: 20 63 6f 6d 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a   commands.</p>..
9320: 3c 70 3e 53 51 4c 69 74 65 20 75 6e 64 65 72 73  <p>SQLite unders
9330: 74 61 6e 64 73 20 74 68 65 20 66 6f 6c 6c 6f 77  tands the follow
9340: 69 6e 67 20 62 69 6e 61 72 79 20 6f 70 65 72 61  ing binary opera
9350: 74 6f 72 73 2c 20 69 6e 20 6f 72 64 65 72 20 66  tors, in order f
9360: 72 6f 6d 0a 68 69 67 68 65 73 74 20 74 6f 20 6c  rom.highest to l
9370: 6f 77 65 73 74 20 70 72 65 63 65 64 65 6e 63 65  owest precedence
9380: 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  :</p>..<blockquo
9390: 74 65 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63  te><pre>.<font c
93a0: 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c  olor="#2c2cf0"><
93b0: 62 69 67 3e 7c 7c 0a 2a 20 20 20 20 2f 20 20 20  big>||.*    /   
93c0: 20 25 0a 2b 20 20 20 20 2d 0a 26 6c 74 3b 26 6c   %.+    -.&lt;&l
93d0: 74 3b 20 20 20 26 67 74 3b 26 67 74 3b 20 20 20  t;   &gt;&gt;   
93e0: 26 61 6d 70 3b 20 20 20 20 7c 0a 26 6c 74 3b 20  &amp;    |.&lt; 
93f0: 20 20 20 26 6c 74 3b 3d 20 20 20 26 67 74 3b 20     &lt;=   &gt; 
9400: 20 20 20 26 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d     &gt;=.=    ==
9410: 20 20 20 21 3d 20 20 20 26 6c 74 3b 26 67 74 3b     !=   &lt;&gt;
9420: 20 20 20 3c 2f 62 69 67 3e 49 4e 0a 41 4e 44 20     </big>IN.AND 
9430: 20 20 0a 4f 52 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70    .OR</font>.</p
9440: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
9450: 0a 0a 3c 70 3e 53 75 70 70 6f 72 74 65 64 20 75  ..<p>Supported u
9460: 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 73 20 61  nary operators a
9470: 72 65 20 74 68 65 73 65 3a 3c 2f 70 3e 0a 0a 3c  re these:</p>..<
9480: 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
9490: 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32  .<font color="#2
94a0: 63 32 63 66 30 22 3e 3c 62 69 67 3e 2d 20 20 20  c2cf0"><big>-   
94b0: 20 2b 20 20 20 20 21 20 20 20 20 7e 20 20 20 20   +    !    ~    
94c0: 4e 4f 54 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e  NOT</big></font>
94d0: 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75  .</pre></blockqu
94e0: 6f 74 65 3e 0a 0a 3c 70 3e 54 68 65 20 75 6e 61  ote>..<p>The una
94f0: 72 79 20 6f 70 65 72 61 74 6f 72 20 5b 4f 70 65  ry operator [Ope
9500: 72 61 74 6f 72 20 2b 5d 20 69 73 20 61 20 6e 6f  rator +] is a no
9510: 2d 6f 70 2e 20 20 49 74 20 63 61 6e 20 62 65 20  -op.  It can be 
9520: 61 70 70 6c 69 65 64 0a 74 6f 20 73 74 72 69 6e  applied.to strin
9530: 67 73 2c 20 6e 75 6d 62 65 72 73 2c 20 6f 72 20  gs, numbers, or 
9540: 62 6c 6f 62 73 20 61 6e 64 20 69 74 20 61 6c 77  blobs and it alw
9550: 61 79 73 20 67 69 76 65 73 20 61 73 20 69 74 73  ays gives as its
9560: 20 72 65 73 75 6c 74 20 74 68 65 0a 76 61 6c 75   result the.valu
9570: 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61 6e 64  e of the operand
9580: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e 6f 74 65 20 74  .</p>..<p>Note t
9590: 68 61 74 20 74 68 65 72 65 20 61 72 65 20 74 77  hat there are tw
95a0: 6f 20 76 61 72 69 61 74 69 6f 6e 73 20 6f 66 20  o variations of 
95b0: 74 68 65 20 65 71 75 61 6c 73 20 61 6e 64 20 6e  the equals and n
95c0: 6f 74 20 65 71 75 61 6c 73 0a 6f 70 65 72 61 74  ot equals.operat
95d0: 6f 72 73 2e 20 20 45 71 75 61 6c 73 20 63 61 6e  ors.  Equals can
95e0: 20 62 65 20 65 69 74 68 65 72 7d 0a 70 75 74 73   be either}.puts
95f0: 20 22 5b 4f 70 65 72 61 74 6f 72 20 3d 5d 20 6f   "[Operator =] o
9600: 72 20 5b 4f 70 65 72 61 74 6f 72 20 3d 3d 5d 2e  r [Operator ==].
9610: 0a 54 68 65 20 6e 6f 6e 2d 65 71 75 61 6c 73 20  .The non-equals 
9620: 6f 70 65 72 61 74 6f 72 20 63 61 6e 20 62 65 20  operator can be 
9630: 65 69 74 68 65 72 0a 5b 4f 70 65 72 61 74 6f 72  either.[Operator
9640: 20 21 3d 5d 20 6f 72 20 5b 4f 70 65 72 61 74 6f   !=] or [Operato
9650: 72 20 7b 26 6c 74 3b 26 67 74 3b 7d 5d 2e 0a 54  r {&lt;&gt;}]..T
9660: 68 65 20 5b 4f 70 65 72 61 74 6f 72 20 7c 7c 5d  he [Operator ||]
9670: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 5c 22 63   operator is \"c
9680: 6f 6e 63 61 74 65 6e 61 74 65 5c 22 20 2d 20 69  oncatenate\" - i
9690: 74 20 6a 6f 69 6e 73 20 74 6f 67 65 74 68 65 72  t joins together
96a0: 0a 74 68 65 20 74 77 6f 20 73 74 72 69 6e 67 73  .the two strings
96b0: 20 6f 66 20 69 74 73 20 6f 70 65 72 61 6e 64 73   of its operands
96c0: 2e 0a 54 68 65 20 6f 70 65 72 61 74 6f 72 20 5b  ..The operator [
96d0: 4f 70 65 72 61 74 6f 72 20 25 5d 20 6f 75 74 70  Operator %] outp
96e0: 75 74 73 20 74 68 65 20 72 65 6d 61 69 6e 64 65  uts the remainde
96f0: 72 20 6f 66 20 69 74 73 20 6c 65 66 74 20 0a 6f  r of its left .o
9700: 70 65 72 61 6e 64 20 6d 6f 64 75 6c 6f 20 69 74  perand modulo it
9710: 73 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64 2e  s right operand.
9720: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 72 65 73  </p>..<p>The res
9730: 75 6c 74 20 6f 66 20 61 6e 79 20 62 69 6e 61 72  ult of any binar
9740: 79 20 6f 70 65 72 61 74 6f 72 20 69 73 20 61 20  y operator is a 
9750: 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 2c 20 65  numeric value, e
9760: 78 63 65 70 74 0a 66 6f 72 20 74 68 65 20 5b 4f  xcept.for the [O
9770: 70 65 72 61 74 6f 72 20 7c 7c 5d 20 63 6f 6e 63  perator ||] conc
9780: 61 74 65 6e 61 74 69 6f 6e 20 6f 70 65 72 61 74  atenation operat
9790: 6f 72 20 77 68 69 63 68 20 67 69 76 65 73 20 61  or which gives a
97a0: 20 73 74 72 69 6e 67 0a 72 65 73 75 6c 74 2e 3c   string.result.<
97b0: 2f 70 3e 22 0a 0a 70 75 74 73 20 7b 0a 0a 3c 61  /p>"..puts {..<a
97c0: 20 6e 61 6d 65 3d 22 6c 69 74 65 72 61 6c 5f 76   name="literal_v
97d0: 61 6c 75 65 22 3e 3c 2f 61 3e 0a 3c 70 3e 0a 41  alue"></a>.<p>.A
97e0: 20 6c 69 74 65 72 61 6c 20 76 61 6c 75 65 20 69   literal value i
97f0: 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d  s an integer num
9800: 62 65 72 20 6f 72 20 61 20 66 6c 6f 61 74 69 6e  ber or a floatin
9810: 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 2e 0a  g point number..
9820: 53 63 69 65 6e 74 69 66 69 63 20 6e 6f 74 61 74  Scientific notat
9830: 69 6f 6e 20 69 73 20 73 75 70 70 6f 72 74 65 64  ion is supported
9840: 2e 20 20 54 68 65 20 22 2e 22 20 63 68 61 72 61  .  The "." chara
9850: 63 74 65 72 20 69 73 20 61 6c 77 61 79 73 20 75  cter is always u
9860: 73 65 64 0a 61 73 20 74 68 65 20 64 65 63 69 6d  sed.as the decim
9870: 61 6c 20 70 6f 69 6e 74 20 65 76 65 6e 20 69 66  al point even if
9880: 20 74 68 65 20 6c 6f 63 61 6c 65 20 73 65 74 74   the locale sett
9890: 69 6e 67 20 73 70 65 63 69 66 69 65 73 20 22 2c  ing specifies ",
98a0: 22 20 66 6f 72 0a 74 68 69 73 20 72 6f 6c 65 20  " for.this role 
98b0: 2d 20 74 68 65 20 75 73 65 20 6f 66 20 22 2c 22  - the use of ","
98c0: 20 66 6f 72 20 74 68 65 20 64 65 63 69 6d 61 6c   for the decimal
98d0: 20 70 6f 69 6e 74 20 77 6f 75 6c 64 20 72 65 73   point would res
98e0: 75 6c 74 20 69 6e 0a 73 79 6e 74 61 63 74 69 63  ult in.syntactic
98f0: 20 61 6d 62 69 67 75 69 74 79 2e 20 20 41 20 73   ambiguity.  A s
9900: 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 69  tring constant i
9910: 73 20 66 6f 72 6d 65 64 20 62 79 20 65 6e 63 6c  s formed by encl
9920: 6f 73 69 6e 67 20 74 68 65 0a 73 74 72 69 6e 67  osing the.string
9930: 20 69 6e 20 73 69 6e 67 6c 65 20 71 75 6f 74 65   in single quote
9940: 73 20 28 27 29 2e 20 20 41 20 73 69 6e 67 6c 65  s (').  A single
9950: 20 71 75 6f 74 65 20 77 69 74 68 69 6e 20 74 68   quote within th
9960: 65 20 73 74 72 69 6e 67 20 63 61 6e 0a 62 65 20  e string can.be 
9970: 65 6e 63 6f 64 65 64 20 62 79 20 70 75 74 74 69  encoded by putti
9980: 6e 67 20 74 77 6f 20 73 69 6e 67 6c 65 20 71 75  ng two single qu
9990: 6f 74 65 73 20 69 6e 20 61 20 72 6f 77 20 2d 20  otes in a row - 
99a0: 61 73 20 69 6e 20 50 61 73 63 61 6c 2e 0a 43 2d  as in Pascal..C-
99b0: 73 74 79 6c 65 20 65 73 63 61 70 65 73 20 75 73  style escapes us
99c0: 69 6e 67 20 74 68 65 20 62 61 63 6b 73 6c 61 73  ing the backslas
99d0: 68 20 63 68 61 72 61 63 74 65 72 20 61 72 65 20  h character are 
99e0: 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 62 65  not supported be
99f0: 63 61 75 73 65 0a 74 68 65 79 20 61 72 65 20 6e  cause.they are n
9a00: 6f 74 20 73 74 61 6e 64 61 72 64 20 53 51 4c 2e  ot standard SQL.
9a10: 0a 42 4c 4f 42 20 6c 69 74 65 72 61 6c 73 20 61  .BLOB literals a
9a20: 72 65 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61  re string litera
9a30: 6c 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 68 65  ls containing he
9a40: 78 61 64 65 63 69 6d 61 6c 20 64 61 74 61 20 61  xadecimal data a
9a50: 6e 64 0a 70 72 65 63 65 64 65 64 20 62 79 20 61  nd.preceded by a
9a60: 20 73 69 6e 67 6c 65 20 22 78 22 20 6f 72 20 22   single "x" or "
9a70: 58 22 20 63 68 61 72 61 63 74 65 72 2e 20 20 46  X" character.  F
9a80: 6f 72 20 65 78 61 6d 70 6c 65 3a 3c 2f 70 3e 0a  or example:</p>.
9a90: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72  .<blockquote><pr
9aa0: 65 3e 0a 58 27 35 33 35 31 34 36 39 37 34 36 35  e>.X'53514697465
9ab0: 27 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71  '.</pre></blockq
9ac0: 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 41 20 6c 69 74  uote>..<p>.A lit
9ad0: 65 72 61 6c 20 76 61 6c 75 65 20 63 61 6e 20 61  eral value can a
9ae0: 6c 73 6f 20 62 65 20 74 68 65 20 74 6f 6b 65 6e  lso be the token
9af0: 20 22 4e 55 4c 4c 22 2e 0a 3c 2f 70 3e 0a 0a 3c   "NULL"..</p>..<
9b00: 70 3e 0a 41 20 70 61 72 61 6d 65 74 65 72 20 73  p>.A parameter s
9b10: 70 65 63 69 66 69 65 73 20 61 20 70 6c 61 63 65  pecifies a place
9b20: 68 6f 6c 64 65 72 20 69 6e 20 74 68 65 20 65 78  holder in the ex
9b30: 70 72 65 73 73 69 6f 6e 20 66 6f 72 20 61 20 6c  pression for a l
9b40: 69 74 65 72 61 6c 0a 76 61 6c 75 65 20 74 68 61  iteral.value tha
9b50: 74 20 69 73 20 66 69 6c 6c 65 64 20 69 6e 20 61  t is filled in a
9b60: 74 20 72 75 6e 74 69 6d 65 20 75 73 69 6e 67 20  t runtime using 
9b70: 74 68 65 0a 3c 61 20 68 72 65 66 3d 22 63 61 70  the.<a href="cap
9b80: 69 33 72 65 66 2e 68 74 6d 6c 23 73 71 6c 69 74  i3ref.html#sqlit
9b90: 65 33 5f 62 69 6e 64 5f 69 6e 74 22 3e 73 71 6c  e3_bind_int">sql
9ba0: 69 74 65 33 5f 62 69 6e 64 3c 2f 61 3e 20 41 50  ite3_bind</a> AP
9bb0: 49 2e 0a 50 61 72 61 6d 65 74 65 72 73 20 63 61  I..Parameters ca
9bc0: 6e 20 74 61 6b 65 20 73 65 76 65 72 61 6c 20 66  n take several f
9bd0: 6f 72 6d 73 3a 0a 3c 2f 70 0a 0a 3c 62 6c 6f 63  orms:.</p..<bloc
9be0: 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 3e 0a  kquote>.<table>.
9bf0: 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22  <tr>.<td align="
9c00: 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74  right" valign="t
9c10: 6f 70 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c 69 3e 4e  op"><b>?</b><i>N
9c20: 4e 4e 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77  NN</i></td><td w
9c30: 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a  idth="20"></td>.
9c40: 3c 74 64 3e 41 20 71 75 65 73 74 69 6f 6e 20 6d  <td>A question m
9c50: 61 72 6b 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  ark followed by 
9c60: 61 20 6e 75 6d 62 65 72 20 3c 69 3e 4e 4e 4e 3c  a number <i>NNN<
9c70: 2f 69 3e 20 68 6f 6c 64 73 20 61 20 73 70 6f 74  /i> holds a spot
9c80: 20 66 6f 72 20 74 68 65 0a 4e 4e 4e 2d 74 68 20   for the.NNN-th 
9c90: 70 61 72 61 6d 65 74 65 72 2e 20 20 4e 4e 4e 20  parameter.  NNN 
9ca0: 6d 75 73 74 20 62 65 20 62 65 74 77 65 65 6e 20  must be between 
9cb0: 31 20 61 6e 64 20 39 39 39 2e 3c 2f 74 64 3e 0a  1 and 999.</td>.
9cc0: 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61  </tr>.<tr>.<td a
9cd0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c  lign="right" val
9ce0: 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3f 3c 2f  ign="top"><b>?</
9cf0: 62 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68  b></td><td width
9d00: 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e  ="20"></td>.<td>
9d10: 41 20 71 75 65 73 74 69 6f 6e 20 6d 61 72 6b 20  A question mark 
9d20: 74 68 61 74 20 69 73 20 6e 6f 74 20 66 6f 6c 6c  that is not foll
9d30: 6f 77 65 64 20 62 79 20 61 20 6e 75 6d 62 65 72  owed by a number
9d40: 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f   holds a spot fo
9d50: 72 0a 74 68 65 20 6e 65 78 74 20 75 6e 75 73 65  r.the next unuse
9d60: 64 20 70 61 72 61 6d 65 74 65 72 2e 3c 2f 74 64  d parameter.</td
9d70: 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64  >.</tr>.<tr>.<td
9d80: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 76   align="right" v
9d90: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3a  align="top"><b>:
9da0: 3c 2f 62 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c  </b><i>AAAA</i><
9db0: 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32  /td><td width="2
9dc0: 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 63  0"></td>.<td>A c
9dd0: 6f 6c 6f 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79  olon followed by
9de0: 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 6e   an identifier n
9df0: 61 6d 65 20 68 6f 6c 64 73 20 61 20 73 70 6f 74  ame holds a spot
9e00: 20 66 6f 72 20 61 20 6e 61 6d 65 64 0a 70 61 72   for a named.par
9e10: 61 6d 65 74 65 72 20 77 69 74 68 20 74 68 65 20  ameter with the 
9e20: 6e 61 6d 65 20 41 41 41 41 2e 20 20 4e 61 6d 65  name AAAA.  Name
9e30: 64 20 70 61 72 61 6d 65 74 65 72 73 20 61 72 65  d parameters are
9e40: 20 61 6c 73 6f 20 6e 75 6d 62 65 72 65 64 2e 0a   also numbered..
9e50: 54 68 65 20 6e 75 6d 62 65 72 20 61 73 73 69 67  The number assig
9e60: 6e 65 64 20 69 73 20 74 68 65 20 6e 65 78 74 20  ned is the next 
9e70: 75 6e 75 73 65 64 20 6e 75 6d 62 65 72 2e 20 20  unused number.  
9e80: 54 6f 20 61 76 6f 69 64 20 63 6f 6e 66 75 73 69  To avoid confusi
9e90: 6f 6e 2c 0a 69 74 20 69 73 20 62 65 73 74 20 74  on,.it is best t
9ea0: 6f 20 61 76 6f 69 64 20 6d 69 78 69 6e 67 20 6e  o avoid mixing n
9eb0: 61 6d 65 64 20 61 6e 64 20 6e 75 6d 62 65 72 65  amed and numbere
9ec0: 64 20 70 61 72 61 6d 65 74 65 72 73 2e 3c 2f 74  d parameters.</t
9ed0: 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74  d>.</tr>.<tr>.<t
9ee0: 64 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  d align="right" 
9ef0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e  valign="top"><b>
9f00: 40 3c 2f 62 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e  @</b><i>AAAA</i>
9f10: 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22  </td><td width="
9f20: 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 6e  20"></td>.<td>An
9f30: 20 22 61 74 22 20 73 69 67 6e 20 77 6f 72 6b 73   "at" sign works
9f40: 20 65 78 61 63 74 6c 79 20 6c 69 6b 65 20 61 20   exactly like a 
9f50: 63 6f 6c 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  colon.</td>.</tr
9f60: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e  >.<tr>.<td align
9f70: 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d  ="right" valign=
9f80: 22 74 6f 70 22 3e 3c 62 3e 24 3c 2f 62 3e 3c 69  "top"><b>$</b><i
9f90: 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74  >AAAA</i></td><t
9fa0: 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74  d width="20"></t
9fb0: 64 3e 0a 3c 74 64 3e 41 20 64 6f 6c 6c 61 72 2d  d>.<td>A dollar-
9fc0: 73 69 67 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79  sign followed by
9fd0: 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 6e   an identifier n
9fe0: 61 6d 65 20 61 6c 73 6f 20 68 6f 6c 64 73 20 61  ame also holds a
9ff0: 20 73 70 6f 74 20 66 6f 72 20 61 20 6e 61 6d 65   spot for a name
a000: 64 0a 70 61 72 61 6d 65 74 65 72 20 77 69 74 68  d.parameter with
a010: 20 74 68 65 20 6e 61 6d 65 20 41 41 41 41 2e 20   the name AAAA. 
a020: 20 54 68 65 20 69 64 65 6e 74 69 66 69 65 72 20   The identifier 
a030: 6e 61 6d 65 20 69 6e 20 74 68 69 73 20 63 61 73  name in this cas
a040: 65 20 63 61 6e 20 69 6e 63 6c 75 64 65 0a 6f 6e  e can include.on
a050: 65 20 6f 72 20 6d 6f 72 65 20 6f 63 63 75 72 61  e or more occura
a060: 6e 63 65 73 20 6f 66 20 22 3a 3a 22 20 61 6e 64  nces of "::" and
a070: 20 61 20 73 75 66 66 69 78 20 65 6e 63 6c 6f 73   a suffix enclos
a080: 65 64 20 69 6e 20 22 28 2e 2e 2e 29 22 20 63 6f  ed in "(...)" co
a090: 6e 74 61 69 6e 69 6e 67 0a 61 6e 79 20 74 65 78  ntaining.any tex
a0a0: 74 20 61 74 20 61 6c 6c 2e 20 20 54 68 69 73 20  t at all.  This 
a0b0: 73 79 6e 74 61 78 20 69 73 20 74 68 65 20 66 6f  syntax is the fo
a0c0: 72 6d 20 6f 66 20 61 20 76 61 72 69 61 62 6c 65  rm of a variable
a0d0: 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 54 63 6c   name in the Tcl
a0e0: 0a 70 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e  .programming lan
a0f0: 67 75 61 67 65 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  guage.</td>.</tr
a100: 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f  >.</table>.</blo
a110: 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 50 61 72  ckquote>..<p>Par
a120: 61 6d 65 74 65 72 73 20 74 68 61 74 20 61 72 65  ameters that are
a130: 20 6e 6f 74 20 61 73 73 69 67 6e 65 64 20 76 61   not assigned va
a140: 6c 75 65 73 20 75 73 69 6e 67 0a 3c 61 20 68 72  lues using.<a hr
a150: 65 66 3d 22 63 61 70 69 33 72 65 66 2e 68 74 6d  ef="capi3ref.htm
a160: 6c 23 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69  l#sqlite3_bind_i
a170: 6e 74 22 3e 73 71 6c 69 74 65 33 5f 62 69 6e 64  nt">sqlite3_bind
a180: 3c 2f 61 3e 20 61 72 65 20 74 72 65 61 74 65 64  </a> are treated
a190: 0a 61 73 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c  .as NULL.</p>..<
a1a0: 61 20 6e 61 6d 65 3d 22 6c 69 6b 65 22 3e 3c 2f  a name="like"></
a1b0: 61 3e 0a 3c 70 3e 54 68 65 20 4c 49 4b 45 20 6f  a>.<p>The LIKE o
a1c0: 70 65 72 61 74 6f 72 20 64 6f 65 73 20 61 20 70  perator does a p
a1d0: 61 74 74 65 72 6e 20 6d 61 74 63 68 69 6e 67 20  attern matching 
a1e0: 63 6f 6d 70 61 72 69 73 6f 6e 2e 20 54 68 65 20  comparison. The 
a1f0: 6f 70 65 72 61 6e 64 0a 74 6f 20 74 68 65 20 72  operand.to the r
a200: 69 67 68 74 20 63 6f 6e 74 61 69 6e 73 20 74 68  ight contains th
a210: 65 20 70 61 74 74 65 72 6e 2c 20 74 68 65 20 6c  e pattern, the l
a220: 65 66 74 20 68 61 6e 64 20 6f 70 65 72 61 6e 64  eft hand operand
a230: 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 0a 73 74   contains the.st
a240: 72 69 6e 67 20 74 6f 20 6d 61 74 63 68 20 61 67  ring to match ag
a250: 61 69 6e 73 74 20 74 68 65 20 70 61 74 74 65 72  ainst the patter
a260: 6e 2e 20 0a 7d 0a 70 75 74 73 20 22 41 20 70 65  n. .}.puts "A pe
a270: 72 63 65 6e 74 20 73 79 6d 62 6f 6c 20 5b 4f 70  rcent symbol [Op
a280: 65 72 61 74 6f 72 20 25 5d 20 69 6e 20 74 68 65  erator %] in the
a290: 20 70 61 74 74 65 72 6e 20 6d 61 74 63 68 65 73   pattern matches
a2a0: 20 61 6e 79 0a 73 65 71 75 65 6e 63 65 20 6f 66   any.sequence of
a2b0: 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 63 68   zero or more ch
a2c0: 61 72 61 63 74 65 72 73 20 69 6e 20 74 68 65 20  aracters in the 
a2d0: 73 74 72 69 6e 67 2e 20 20 41 6e 20 75 6e 64 65  string.  An unde
a2e0: 72 73 63 6f 72 65 0a 5b 4f 70 65 72 61 74 6f 72  rscore.[Operator
a2f0: 20 5f 5d 20 69 6e 20 74 68 65 20 70 61 74 74 65   _] in the patte
a300: 72 6e 20 6d 61 74 63 68 65 73 20 61 6e 79 20 73  rn matches any s
a310: 69 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72 20  ingle character 
a320: 69 6e 20 74 68 65 0a 73 74 72 69 6e 67 2e 20 20  in the.string.  
a330: 41 6e 79 20 6f 74 68 65 72 20 63 68 61 72 61 63  Any other charac
a340: 74 65 72 20 6d 61 74 63 68 65 73 20 69 74 73 65  ter matches itse
a350: 6c 66 20 6f 72 20 69 74 27 73 20 6c 6f 77 65 72  lf or it's lower
a360: 2f 75 70 70 65 72 20 63 61 73 65 0a 65 71 75 69  /upper case.equi
a370: 76 61 6c 65 6e 74 20 28 69 2e 65 2e 20 63 61 73  valent (i.e. cas
a380: 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 6d 61  e-insensitive ma
a390: 74 63 68 69 6e 67 29 2e 20 20 28 41 20 62 75 67  tching).  (A bug
a3a0: 3a 20 53 51 4c 69 74 65 20 6f 6e 6c 79 0a 75 6e  : SQLite only.un
a3b0: 64 65 72 73 74 61 6e 64 73 20 75 70 70 65 72 2f  derstands upper/
a3c0: 6c 6f 77 65 72 20 63 61 73 65 20 66 6f 72 20 37  lower case for 7
a3d0: 2d 62 69 74 20 4c 61 74 69 6e 20 63 68 61 72 61  -bit Latin chara
a3e0: 63 74 65 72 73 2e 20 20 48 65 6e 63 65 20 74 68  cters.  Hence th
a3f0: 65 0a 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20  e.LIKE operator 
a400: 69 73 20 63 61 73 65 20 73 65 6e 73 69 74 69 76  is case sensitiv
a410: 65 20 66 6f 72 20 38 2d 62 69 74 20 69 73 6f 38  e for 8-bit iso8
a420: 38 35 39 20 63 68 61 72 61 63 74 65 72 73 20 6f  859 characters o
a430: 72 20 55 54 46 2d 38 0a 63 68 61 72 61 63 74 65  r UTF-8.characte
a440: 72 73 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  rs.  For example
a450: 2c 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  , the expression
a460: 20 3c 62 3e 27 61 27 26 6e 62 73 70 3b 4c 49 4b   <b>'a'&nbsp;LIK
a470: 45 26 6e 62 73 70 3b 27 41 27 3c 2f 62 3e 0a 69  E&nbsp;'A'</b>.i
a480: 73 20 54 52 55 45 20 62 75 74 20 3c 62 3e 27 26  s TRUE but <b>'&
a490: 61 65 6c 69 67 3b 27 26 6e 62 73 70 3b 4c 49 4b  aelig;'&nbsp;LIK
a4a0: 45 26 6e 62 73 70 3b 27 26 41 45 6c 69 67 3b 27  E&nbsp;'&AElig;'
a4b0: 3c 2f 62 3e 20 69 73 20 46 41 4c 53 45 2e 29 2e  </b> is FALSE.).
a4c0: 3c 2f 70 3e 22 0a 0a 70 75 74 73 20 7b 0a 3c 70  </p>"..puts {.<p
a4d0: 3e 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c  >If the optional
a4e0: 20 45 53 43 41 50 45 20 63 6c 61 75 73 65 20 69   ESCAPE clause i
a4f0: 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20  s present, then 
a500: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 0a 66  the expression.f
a510: 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20 45 53 43  ollowing the ESC
a520: 41 50 45 20 6b 65 79 77 6f 72 64 20 6d 75 73 74  APE keyword must
a530: 20 65 76 61 6c 75 61 74 65 20 74 6f 20 61 20 73   evaluate to a s
a540: 74 72 69 6e 67 20 63 6f 6e 73 69 73 74 69 6e 67  tring consisting
a550: 20 6f 66 0a 61 20 73 69 6e 67 6c 65 20 63 68 61   of.a single cha
a560: 72 61 63 74 65 72 2e 20 54 68 69 73 20 63 68 61  racter. This cha
a570: 72 61 63 74 65 72 20 6d 61 79 20 62 65 20 75 73  racter may be us
a580: 65 64 20 69 6e 20 74 68 65 20 4c 49 4b 45 20 70  ed in the LIKE p
a590: 61 74 74 65 72 6e 0a 74 6f 20 69 6e 63 6c 75 64  attern.to includ
a5a0: 65 20 6c 69 74 65 72 61 6c 20 70 65 72 63 65 6e  e literal percen
a5b0: 74 20 6f 72 20 75 6e 64 65 72 73 63 6f 72 65 20  t or underscore 
a5c0: 63 68 61 72 61 63 74 65 72 73 2e 20 54 68 65 20  characters. The 
a5d0: 65 73 63 61 70 65 0a 63 68 61 72 61 63 74 65 72  escape.character
a5e0: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 70   followed by a p
a5f0: 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c 2c 20 75  ercent symbol, u
a600: 6e 64 65 72 73 63 6f 72 65 20 6f 72 20 69 74 73  nderscore or its
a610: 65 6c 66 20 6d 61 74 63 68 65 73 20 61 0a 6c 69  elf matches a.li
a620: 74 65 72 61 6c 20 70 65 72 63 65 6e 74 20 73 79  teral percent sy
a630: 6d 62 6f 6c 2c 20 75 6e 64 65 72 73 63 6f 72 65  mbol, underscore
a640: 20 6f 72 20 65 73 63 61 70 65 20 63 68 61 72 61   or escape chara
a650: 63 74 65 72 20 69 6e 20 74 68 65 20 73 74 72 69  cter in the stri
a660: 6e 67 2c 0a 72 65 73 70 65 63 74 69 76 65 6c 79  ng,.respectively
a670: 2e 20 54 68 65 20 69 6e 66 69 78 20 4c 49 4b 45  . The infix LIKE
a680: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70   operator is imp
a690: 6c 65 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c  lemented by call
a6a0: 69 6e 67 20 74 68 65 0a 75 73 65 72 20 66 75 6e  ing the.user fun
a6b0: 63 74 69 6f 6e 20 3c 61 20 68 72 65 66 3d 22 23  ction <a href="#
a6c0: 6c 69 6b 65 46 75 6e 63 22 3e 20 6c 69 6b 65 28  likeFunc"> like(
a6d0: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
a6e0: 3e 29 3c 2f 61 3e 2e 3c 2f 70 3e 0a 7d 0a 0a 70  >)</a>.</p>.}..p
a6f0: 75 74 73 20 7b 0a 54 68 65 20 4c 49 4b 45 20 6f  uts {.The LIKE o
a700: 70 65 72 61 74 6f 72 20 69 73 20 6e 6f 74 20 63  perator is not c
a710: 61 73 65 20 73 65 6e 73 69 74 69 76 65 20 61 6e  ase sensitive an
a720: 64 20 77 69 6c 6c 20 6d 61 74 63 68 20 75 70 70  d will match upp
a730: 65 72 20 63 61 73 65 0a 63 68 61 72 61 63 74 65  er case.characte
a740: 72 73 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61  rs on one side a
a750: 67 61 69 6e 73 74 20 6c 6f 77 65 72 20 63 61 73  gainst lower cas
a760: 65 20 63 68 61 72 61 63 74 65 72 73 20 6f 6e 20  e characters on 
a770: 74 68 65 20 6f 74 68 65 72 2e 20 20 0a 28 41 20  the other.  .(A 
a780: 62 75 67 3a 20 53 51 4c 69 74 65 20 6f 6e 6c 79  bug: SQLite only
a790: 20 75 6e 64 65 72 73 74 61 6e 64 73 20 75 70 70   understands upp
a7a0: 65 72 2f 6c 6f 77 65 72 20 63 61 73 65 20 66 6f  er/lower case fo
a7b0: 72 20 37 2d 62 69 74 20 4c 61 74 69 6e 0a 63 68  r 7-bit Latin.ch
a7c0: 61 72 61 63 74 65 72 73 2e 20 20 48 65 6e 63 65  aracters.  Hence
a7d0: 20 74 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74   the LIKE operat
a7e0: 6f 72 20 69 73 20 63 61 73 65 20 73 65 6e 73 69  or is case sensi
a7f0: 74 69 76 65 20 66 6f 72 20 38 2d 62 69 74 0a 69  tive for 8-bit.i
a800: 73 6f 38 38 35 39 20 63 68 61 72 61 63 74 65 72  so8859 character
a810: 73 20 6f 72 20 55 54 46 2d 38 20 63 68 61 72 61  s or UTF-8 chara
a820: 63 74 65 72 73 2e 20 20 46 6f 72 20 65 78 61 6d  cters.  For exam
a830: 70 6c 65 2c 20 74 68 65 20 65 78 70 72 65 73 73  ple, the express
a840: 69 6f 6e 0a 3c 62 3e 27 61 27 26 6e 62 73 70 3b  ion.<b>'a'&nbsp;
a850: 4c 49 4b 45 26 6e 62 73 70 3b 27 41 27 3c 2f 62  LIKE&nbsp;'A'</b
a860: 3e 20 69 73 20 54 52 55 45 20 62 75 74 0a 3c 62  > is TRUE but.<b
a870: 3e 27 26 61 65 6c 69 67 3b 27 26 6e 62 73 70 3b  >'&aelig;'&nbsp;
a880: 4c 49 4b 45 26 6e 62 73 70 3b 27 26 41 45 6c 69  LIKE&nbsp;'&AEli
a890: 67 3b 27 3c 2f 62 3e 20 69 73 20 46 41 4c 53 45  g;'</b> is FALSE
a8a0: 2e 29 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  .).</p>..<p>The 
a8b0: 69 6e 66 69 78 20 4c 49 4b 45 0a 6f 70 65 72 61  infix LIKE.opera
a8c0: 74 6f 72 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74  tor is implement
a8d0: 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 74 68  ed by calling th
a8e0: 65 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 20  e user function 
a8f0: 3c 61 20 68 72 65 66 3d 22 23 6c 69 6b 65 46 75  <a href="#likeFu
a900: 6e 63 22 3e 0a 6c 69 6b 65 28 3c 69 3e 58 3c 2f  nc">.like(<i>X</
a910: 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 61 3e  i>,<i>Y</i>)</a>
a920: 2e 20 20 49 66 20 61 6e 20 45 53 43 41 50 45 20  .  If an ESCAPE 
a930: 63 6c 61 75 73 65 20 69 73 20 70 72 65 73 65 6e  clause is presen
a940: 74 2c 20 69 74 20 61 64 64 73 0a 61 20 74 68 69  t, it adds.a thi
a950: 72 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  rd parameter to 
a960: 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c  the function cal
a970: 6c 2e 20 49 66 20 74 68 65 20 66 75 6e 63 74 69  l. If the functi
a980: 6f 6e 61 6c 69 74 79 20 6f 66 20 4c 49 4b 45 20  onality of LIKE 
a990: 63 61 6e 20 62 65 0a 6f 76 65 72 72 69 64 64 65  can be.overridde
a9a0: 6e 20 62 79 20 64 65 66 69 6e 69 6e 67 20 61 6e  n by defining an
a9b0: 20 61 6c 74 65 72 6e 61 74 69 76 65 20 69 6d 70   alternative imp
a9c0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74  lementation of t
a9d0: 68 65 0a 6c 69 6b 65 28 29 20 53 51 4c 20 66 75  he.like() SQL fu
a9e0: 6e 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 3c 2f 70 3e  nction.</p>.</p>
a9f0: 0a 0a 3c 61 20 6e 61 6d 65 3d 22 67 6c 6f 62 22  ..<a name="glob"
aa00: 3e 3c 2f 61 3e 0a 3c 70 3e 54 68 65 20 47 4c 4f  ></a>.<p>The GLO
aa10: 42 20 6f 70 65 72 61 74 6f 72 20 69 73 20 73 69  B operator is si
aa20: 6d 69 6c 61 72 20 74 6f 20 4c 49 4b 45 20 62 75  milar to LIKE bu
aa30: 74 20 75 73 65 73 20 74 68 65 20 55 6e 69 78 0a  t uses the Unix.
aa40: 66 69 6c 65 20 67 6c 6f 62 62 69 6e 67 20 73 79  file globbing sy
aa50: 6e 74 61 78 20 66 6f 72 20 69 74 73 20 77 69 6c  ntax for its wil
aa60: 64 63 61 72 64 73 2e 20 20 41 6c 73 6f 2c 20 47  dcards.  Also, G
aa70: 4c 4f 42 20 69 73 20 63 61 73 65 0a 73 65 6e 73  LOB is case.sens
aa80: 69 74 69 76 65 2c 20 75 6e 6c 69 6b 65 20 4c 49  itive, unlike LI
aa90: 4b 45 2e 20 20 42 6f 74 68 20 47 4c 4f 42 20 61  KE.  Both GLOB a
aaa0: 6e 64 20 4c 49 4b 45 20 6d 61 79 20 62 65 20 70  nd LIKE may be p
aab0: 72 65 63 65 64 65 64 20 62 79 0a 74 68 65 20 4e  receded by.the N
aac0: 4f 54 20 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e  OT keyword to in
aad0: 76 65 72 74 20 74 68 65 20 73 65 6e 73 65 20 6f  vert the sense o
aae0: 66 20 74 68 65 20 74 65 73 74 2e 20 20 54 68 65  f the test.  The
aaf0: 20 69 6e 66 69 78 20 47 4c 4f 42 20 0a 6f 70 65   infix GLOB .ope
ab00: 72 61 74 6f 72 20 69 73 20 69 6d 70 6c 65 6d 65  rator is impleme
ab10: 6e 74 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 20  nted by calling 
ab20: 74 68 65 20 75 73 65 72 20 66 75 6e 63 74 69 6f  the user functio
ab30: 6e 20 3c 61 20 68 72 65 66 3d 22 23 67 6c 6f 62  n <a href="#glob
ab40: 46 75 6e 63 22 3e 0a 67 6c 6f 62 28 3c 69 3e 58  Func">.glob(<i>X
ab50: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f  </i>,<i>Y</i>)</
ab60: 61 3e 20 61 6e 64 20 63 61 6e 20 62 65 20 6d 6f  a> and can be mo
ab70: 64 69 66 69 65 64 20 62 79 20 6f 76 65 72 72 69  dified by overri
ab80: 64 69 6e 67 0a 74 68 61 74 20 66 75 6e 63 74 69  ding.that functi
ab90: 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 61 20 6e 61 6d 65  on.</p>..<a name
aba0: 3d 22 72 65 67 65 78 70 22 3e 3c 2f 61 3e 0a 3c  ="regexp"></a>.<
abb0: 70 3e 54 68 65 20 52 45 47 45 58 50 20 6f 70 65  p>The REGEXP ope
abc0: 72 61 74 6f 72 20 69 73 20 61 20 73 70 65 63 69  rator is a speci
abd0: 61 6c 20 73 79 6e 74 61 78 20 66 6f 72 20 74 68  al syntax for th
abe0: 65 20 72 65 67 65 78 70 28 29 0a 75 73 65 72 20  e regexp().user 
abf0: 66 75 6e 63 74 69 6f 6e 2e 20 20 4e 6f 20 72 65  function.  No re
ac00: 67 65 78 70 28 29 20 75 73 65 72 20 66 75 6e 63  gexp() user func
ac10: 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 20  tion is defined 
ac20: 62 79 20 64 65 66 61 75 6c 74 0a 61 6e 64 20 73  by default.and s
ac30: 6f 20 75 73 65 20 6f 66 20 74 68 65 20 52 45 47  o use of the REG
ac40: 45 58 50 20 6f 70 65 72 61 74 6f 72 20 77 69 6c  EXP operator wil
ac50: 6c 20 6e 6f 72 6d 61 6c 6c 79 20 72 65 73 75 6c  l normally resul
ac60: 74 20 69 6e 20 61 6e 0a 65 72 72 6f 72 20 6d 65  t in an.error me
ac70: 73 73 61 67 65 2e 20 20 49 66 20 61 20 75 73 65  ssage.  If a use
ac80: 72 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69  r-defined functi
ac90: 6f 6e 20 6e 61 6d 65 64 20 22 72 65 67 65 78 70  on named "regexp
aca0: 22 0a 69 73 20 61 64 64 65 64 20 61 74 20 72 75  ".is added at ru
acb0: 6e 2d 74 69 6d 65 2c 20 74 68 61 74 20 66 75 6e  n-time, that fun
acc0: 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 63 61  ction will be ca
acd0: 6c 6c 65 64 20 69 6e 20 6f 72 64 65 72 0a 74 6f  lled in order.to
ace0: 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 52   implement the R
acf0: 45 47 45 58 50 20 6f 70 65 72 61 74 6f 72 2e 3c  EGEXP operator.<
ad00: 2f 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 6d 61  /p>..<a name="ma
ad10: 74 63 68 22 3e 3c 2f 61 3e 0a 3c 70 3e 54 68 65  tch"></a>.<p>The
ad20: 20 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72 20   MATCH operator 
ad30: 69 73 20 61 20 73 70 65 63 69 61 6c 20 73 79 6e  is a special syn
ad40: 74 61 78 20 66 6f 72 20 74 68 65 20 6d 61 74 63  tax for the matc
ad50: 68 28 29 0a 75 73 65 72 20 66 75 6e 63 74 69 6f  h().user functio
ad60: 6e 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20  n.  The default 
ad70: 6d 61 74 63 68 28 29 20 66 75 6e 63 74 69 6f 6e  match() function
ad80: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a   implementation.
ad90: 72 61 69 73 65 73 20 61 6e 64 20 65 78 63 65 70  raises and excep
ada0: 74 69 6f 6e 20 61 6e 64 20 69 73 20 6e 6f 74 20  tion and is not 
adb0: 72 65 61 6c 6c 79 20 75 73 65 66 75 6c 20 66 6f  really useful fo
adc0: 72 20 61 6e 79 74 68 69 6e 67 2e 0a 42 75 74 20  r anything..But 
add0: 65 78 74 65 6e 73 69 6f 6e 73 20 63 61 6e 20 6f  extensions can o
ade0: 76 65 72 72 69 64 65 20 74 68 65 20 6d 61 74 63  verride the matc
adf0: 68 28 29 20 66 75 6e 63 74 69 6f 6e 20 77 69 74  h() function wit
ae00: 68 20 6d 6f 72 65 0a 68 65 6c 70 66 75 6c 20 6c  h more.helpful l
ae10: 6f 67 69 63 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20  ogic.</p>..<p>A 
ae20: 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e 20  column name can 
ae30: 62 65 20 61 6e 79 20 6f 66 20 74 68 65 20 6e 61  be any of the na
ae40: 6d 65 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74  mes defined in t
ae50: 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 0a  he CREATE TABLE.
ae60: 73 74 61 74 65 6d 65 6e 74 20 6f 72 20 6f 6e 65  statement or one
ae70: 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e   of the followin
ae80: 67 20 73 70 65 63 69 61 6c 20 69 64 65 6e 74 69  g special identi
ae90: 66 69 65 72 73 3a 20 22 3c 62 3e 52 4f 57 49 44  fiers: "<b>ROWID
aea0: 3c 2f 62 3e 22 2c 0a 22 3c 62 3e 4f 49 44 3c 2f  </b>",."<b>OID</
aeb0: 62 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57  b>", or "<b>_ROW
aec0: 49 44 5f 3c 2f 62 3e 22 2e 0a 54 68 65 73 65 20  ID_</b>"..These 
aed0: 73 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69  special identifi
aee0: 65 72 73 20 61 6c 6c 20 64 65 73 63 72 69 62 65  ers all describe
aef0: 20 74 68 65 0a 75 6e 69 71 75 65 20 72 61 6e 64   the.unique rand
af00: 6f 6d 20 69 6e 74 65 67 65 72 20 6b 65 79 20 28  om integer key (
af10: 74 68 65 20 22 72 6f 77 20 6b 65 79 22 29 20 61  the "row key") a
af20: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 65  ssociated with e
af30: 76 65 72 79 20 0a 72 6f 77 20 6f 66 20 65 76 65  very .row of eve
af40: 72 79 20 74 61 62 6c 65 2e 0a 54 68 65 20 73 70  ry table..The sp
af50: 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72  ecial identifier
af60: 73 20 6f 6e 6c 79 20 72 65 66 65 72 20 74 6f 20  s only refer to 
af70: 74 68 65 20 72 6f 77 20 6b 65 79 20 69 66 20 74  the row key if t
af80: 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 0a  he CREATE TABLE.
af90: 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e  statement does n
afa0: 6f 74 20 64 65 66 69 6e 65 20 61 20 72 65 61 6c  ot define a real
afb0: 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20 74 68 65   column with the
afc0: 20 73 61 6d 65 20 6e 61 6d 65 2e 20 20 52 6f 77   same name.  Row
afd0: 20 6b 65 79 73 0a 61 63 74 20 6c 69 6b 65 20 72   keys.act like r
afe0: 65 61 64 2d 6f 6e 6c 79 20 63 6f 6c 75 6d 6e 73  ead-only columns
aff0: 2e 20 20 41 20 72 6f 77 20 6b 65 79 20 63 61 6e  .  A row key can
b000: 20 62 65 20 75 73 65 64 20 61 6e 79 77 68 65 72   be used anywher
b010: 65 20 61 20 72 65 67 75 6c 61 72 0a 63 6f 6c 75  e a regular.colu
b020: 6d 6e 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20  mn can be used, 
b030: 65 78 63 65 70 74 20 74 68 61 74 20 79 6f 75 20  except that you 
b040: 63 61 6e 6e 6f 74 20 63 68 61 6e 67 65 20 74 68  cannot change th
b050: 65 20 76 61 6c 75 65 0a 6f 66 20 61 20 72 6f 77  e value.of a row
b060: 20 6b 65 79 20 69 6e 20 61 6e 20 55 50 44 41 54   key in an UPDAT
b070: 45 20 6f 72 20 49 4e 53 45 52 54 20 73 74 61 74  E or INSERT stat
b080: 65 6d 65 6e 74 2e 0a 22 53 45 4c 45 43 54 20 2a  ement.."SELECT *
b090: 20 2e 2e 2e 22 20 64 6f 65 73 20 6e 6f 74 20 72   ..." does not r
b0a0: 65 74 75 72 6e 20 74 68 65 20 72 6f 77 20 6b 65  eturn the row ke
b0b0: 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53 45 4c 45 43  y.</p>..<p>SELEC
b0c0: 54 20 73 74 61 74 65 6d 65 6e 74 73 20 63 61 6e  T statements can
b0d0: 20 61 70 70 65 61 72 20 69 6e 20 65 78 70 72 65   appear in expre
b0e0: 73 73 69 6f 6e 73 20 61 73 20 65 69 74 68 65 72  ssions as either
b0f0: 20 74 68 65 0a 72 69 67 68 74 2d 68 61 6e 64 20   the.right-hand 
b100: 6f 70 65 72 61 6e 64 20 6f 66 20 74 68 65 20 49  operand of the I
b110: 4e 20 6f 70 65 72 61 74 6f 72 2c 20 61 73 20 61  N operator, as a
b120: 20 73 63 61 6c 61 72 20 71 75 61 6e 74 69 74 79   scalar quantity
b130: 2c 20 6f 72 0a 61 73 20 74 68 65 20 6f 70 65 72  , or.as the oper
b140: 61 6e 64 20 6f 66 20 61 6e 20 45 58 49 53 54 53  and of an EXISTS
b150: 20 6f 70 65 72 61 74 6f 72 2e 0a 41 73 20 61 20   operator..As a 
b160: 73 63 61 6c 61 72 20 71 75 61 6e 74 69 74 79 20  scalar quantity 
b170: 6f 72 20 74 68 65 20 6f 70 65 72 61 6e 64 20 6f  or the operand o
b180: 66 20 61 6e 20 49 4e 20 6f 70 65 72 61 74 6f 72  f an IN operator
b190: 2c 0a 74 68 65 20 53 45 4c 45 43 54 20 73 68 6f  ,.the SELECT sho
b1a0: 75 6c 64 20 68 61 76 65 20 6f 6e 6c 79 20 61 20  uld have only a 
b1b0: 73 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 20 69 6e  single column in
b1c0: 20 69 74 73 0a 72 65 73 75 6c 74 2e 20 20 43 6f   its.result.  Co
b1d0: 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 73 20 28  mpound SELECTs (
b1e0: 63 6f 6e 6e 65 63 74 65 64 20 77 69 74 68 20 6b  connected with k
b1f0: 65 79 77 6f 72 64 73 20 6c 69 6b 65 20 55 4e 49  eywords like UNI
b200: 4f 4e 20 6f 72 0a 45 58 43 45 50 54 29 20 61 72  ON or.EXCEPT) ar
b210: 65 20 61 6c 6c 6f 77 65 64 2e 0a 57 69 74 68 20  e allowed..With 
b220: 74 68 65 20 45 58 49 53 54 53 20 6f 70 65 72 61  the EXISTS opera
b230: 74 6f 72 2c 20 74 68 65 20 63 6f 6c 75 6d 6e 73  tor, the columns
b240: 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 20 73   in the result s
b250: 65 74 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54  et of the SELECT
b260: 20 61 72 65 0a 69 67 6e 6f 72 65 64 20 61 6e 64   are.ignored and
b270: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
b280: 72 65 74 75 72 6e 73 20 54 52 55 45 20 69 66 20  returns TRUE if 
b290: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73  one or more rows
b2a0: 20 65 78 69 73 74 0a 61 6e 64 20 46 41 4c 53 45   exist.and FALSE
b2b0: 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 73   if the result s
b2c0: 65 74 20 69 73 20 65 6d 70 74 79 2e 0a 49 66 20  et is empty..If 
b2d0: 6e 6f 20 74 65 72 6d 73 20 69 6e 20 74 68 65 20  no terms in the 
b2e0: 53 45 4c 45 43 54 20 65 78 70 72 65 73 73 69 6f  SELECT expressio
b2f0: 6e 20 72 65 66 65 72 20 74 6f 20 76 61 6c 75 65  n refer to value
b300: 20 69 6e 20 74 68 65 20 63 6f 6e 74 61 69 6e 69   in the containi
b310: 6e 67 0a 71 75 65 72 79 2c 20 74 68 65 6e 20 74  ng.query, then t
b320: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73  he expression is
b330: 20 65 76 61 6c 75 61 74 65 64 20 6f 6e 63 65 20   evaluated once 
b340: 70 72 69 6f 72 20 74 6f 20 61 6e 79 20 6f 74 68  prior to any oth
b350: 65 72 0a 70 72 6f 63 65 73 73 69 6e 67 20 61 6e  er.processing an
b360: 64 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20  d the result is 
b370: 72 65 75 73 65 64 20 61 73 20 6e 65 63 65 73 73  reused as necess
b380: 61 72 79 2e 20 20 49 66 20 74 68 65 20 53 45 4c  ary.  If the SEL
b390: 45 43 54 20 65 78 70 72 65 73 73 69 6f 6e 0a 64  ECT expression.d
b3a0: 6f 65 73 20 63 6f 6e 74 61 69 6e 20 76 61 72 69  oes contain vari
b3b0: 61 62 6c 65 73 20 66 72 6f 6d 20 74 68 65 20 6f  ables from the o
b3c0: 75 74 65 72 20 71 75 65 72 79 2c 20 74 68 65 6e  uter query, then
b3d0: 20 74 68 65 20 53 45 4c 45 43 54 20 69 73 20 72   the SELECT is r
b3e0: 65 65 76 61 6c 75 61 74 65 64 0a 65 76 65 72 79  eevaluated.every
b3f0: 20 74 69 6d 65 20 69 74 20 69 73 20 6e 65 65 64   time it is need
b400: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e  ed.</p>..<p>When
b410: 20 61 20 53 45 4c 45 43 54 20 69 73 20 74 68 65   a SELECT is the
b420: 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64 20 6f   right operand o
b430: 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74 6f  f the IN operato
b440: 72 2c 20 74 68 65 20 49 4e 0a 6f 70 65 72 61 74  r, the IN.operat
b450: 6f 72 20 72 65 74 75 72 6e 73 20 54 52 55 45 20  or returns TRUE 
b460: 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66  if the result of
b470: 20 74 68 65 20 6c 65 66 74 20 6f 70 65 72 61 6e   the left operan
b480: 64 20 69 73 20 61 6e 79 20 6f 66 0a 74 68 65 20  d is any of.the 
b490: 76 61 6c 75 65 73 20 67 65 6e 65 72 61 74 65 64  values generated
b4a0: 20 62 79 20 74 68 65 20 73 65 6c 65 63 74 2e 20   by the select. 
b4b0: 20 54 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72   The IN operator
b4c0: 20 6d 61 79 20 62 65 20 70 72 65 63 65 64 65 64   may be preceded
b4d0: 0a 62 79 20 74 68 65 20 4e 4f 54 20 6b 65 79 77  .by the NOT keyw
b4e0: 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74 68  ord to invert th
b4f0: 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20 74  e sense of the t
b500: 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65  est.</p>..<p>Whe
b510: 6e 20 61 20 53 45 4c 45 43 54 20 61 70 70 65 61  n a SELECT appea
b520: 72 73 20 77 69 74 68 69 6e 20 61 6e 20 65 78 70  rs within an exp
b530: 72 65 73 73 69 6f 6e 20 62 75 74 20 69 73 20 6e  ression but is n
b540: 6f 74 20 74 68 65 20 72 69 67 68 74 0a 6f 70 65  ot the right.ope
b550: 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f 70  rand of an IN op
b560: 65 72 61 74 6f 72 2c 20 74 68 65 6e 20 74 68 65  erator, then the
b570: 20 66 69 72 73 74 20 72 6f 77 20 6f 66 20 74 68   first row of th
b580: 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 0a  e result of the.
b590: 53 45 4c 45 43 54 20 62 65 63 6f 6d 65 73 20 74  SELECT becomes t
b5a0: 68 65 20 76 61 6c 75 65 20 75 73 65 64 20 69 6e  he value used in
b5b0: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 2e   the expression.
b5c0: 20 20 49 66 20 74 68 65 20 53 45 4c 45 43 54 20    If the SELECT 
b5d0: 79 69 65 6c 64 73 0a 6d 6f 72 65 20 74 68 61 6e  yields.more than
b5e0: 20 6f 6e 65 20 72 65 73 75 6c 74 20 72 6f 77 2c   one result row,
b5f0: 20 61 6c 6c 20 72 6f 77 73 20 61 66 74 65 72 20   all rows after 
b600: 74 68 65 20 66 69 72 73 74 20 61 72 65 20 69 67  the first are ig
b610: 6e 6f 72 65 64 2e 20 20 49 66 0a 74 68 65 20 53  nored.  If.the S
b620: 45 4c 45 43 54 20 79 69 65 6c 64 73 20 6e 6f 20  ELECT yields no 
b630: 72 6f 77 73 2c 20 74 68 65 6e 20 74 68 65 20 76  rows, then the v
b640: 61 6c 75 65 20 6f 66 20 74 68 65 20 53 45 4c 45  alue of the SELE
b650: 43 54 20 69 73 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a  CT is NULL.</p>.
b660: 0a 3c 70 3e 41 20 43 41 53 54 20 65 78 70 72 65  .<p>A CAST expre
b670: 73 73 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68  ssion changes th
b680: 65 20 64 61 74 61 74 79 70 65 20 6f 66 20 74 68  e datatype of th
b690: 65 20 3c 65 78 70 72 3e 20 69 6e 74 6f 20 74 68  e <expr> into th
b6a0: 65 0a 74 79 70 65 20 73 70 65 63 69 66 69 65 64  e.type specified
b6b0: 20 62 79 20 26 6c 74 3b 74 79 70 65 26 67 74 3b   by &lt;type&gt;
b6c0: 2e 20 0a 26 6c 74 3b 74 79 70 65 26 67 74 3b 20  . .&lt;type&gt; 
b6d0: 63 61 6e 20 62 65 20 61 6e 79 20 6e 6f 6e 2d 65  can be any non-e
b6e0: 6d 70 74 79 20 74 79 70 65 20 6e 61 6d 65 20 74  mpty type name t
b6f0: 68 61 74 20 69 73 20 76 61 6c 69 64 0a 66 6f 72  hat is valid.for
b700: 20 74 68 65 20 74 79 70 65 20 69 6e 20 61 20 63   the type in a c
b710: 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e  olumn definition
b720: 20 6f 66 20 61 20 43 52 45 41 54 45 20 54 41 42   of a CREATE TAB
b730: 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70  LE statement.</p
b740: 3e 0a 0a 3c 70 3e 42 6f 74 68 20 73 69 6d 70 6c  >..<p>Both simpl
b750: 65 20 61 6e 64 20 61 67 67 72 65 67 61 74 65 20  e and aggregate 
b760: 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 73 75  functions are su
b770: 70 70 6f 72 74 65 64 2e 20 20 41 20 73 69 6d 70  pported.  A simp
b780: 6c 65 0a 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20  le.function can 
b790: 62 65 20 75 73 65 64 20 69 6e 20 61 6e 79 20 65  be used in any e
b7a0: 78 70 72 65 73 73 69 6f 6e 2e 20 20 53 69 6d 70  xpression.  Simp
b7b0: 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74  le functions ret
b7c0: 75 72 6e 0a 61 20 72 65 73 75 6c 74 20 69 6d 6d  urn.a result imm
b7d0: 65 64 69 61 74 65 6c 79 20 62 61 73 65 64 20 6f  ediately based o
b7e0: 6e 20 74 68 65 69 72 20 69 6e 70 75 74 73 2e 20  n their inputs. 
b7f0: 20 41 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   Aggregate funct
b800: 69 6f 6e 73 0a 6d 61 79 20 6f 6e 6c 79 20 62 65  ions.may only be
b810: 20 75 73 65 64 20 69 6e 20 61 20 53 45 4c 45 43   used in a SELEC
b820: 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 41 67  T statement.  Ag
b830: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
b840: 73 20 63 6f 6d 70 75 74 65 0a 74 68 65 69 72 20  s compute.their 
b850: 72 65 73 75 6c 74 20 61 63 72 6f 73 73 20 61 6c  result across al
b860: 6c 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72 65  l rows of the re
b870: 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a 3c  sult set.</p>..<
b880: 61 20 6e 61 6d 65 3d 22 63 6f 72 65 66 75 6e 63  a name="corefunc
b890: 74 69 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 62 3e 43  tions"></a>.<b>C
b8a0: 6f 72 65 20 46 75 6e 63 74 69 6f 6e 73 3c 2f 62  ore Functions</b
b8b0: 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f 72 65 20 66  >..<p>The core f
b8c0: 75 6e 63 74 69 6f 6e 73 20 73 68 6f 77 6e 20 62  unctions shown b
b8d0: 65 6c 6f 77 20 61 72 65 20 61 76 61 69 6c 61 62  elow are availab
b8e0: 6c 65 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20  le by default.  
b8f0: 41 64 64 69 74 69 6f 6e 61 6c 0a 66 75 6e 63 74  Additional.funct
b900: 69 6f 6e 73 20 6d 61 79 20 62 65 20 77 72 69 74  ions may be writ
b910: 74 65 6e 20 69 6e 20 43 20 61 6e 64 20 61 64 64  ten in C and add
b920: 65 64 20 74 6f 20 74 68 65 20 64 61 74 61 62 61  ed to the databa
b930: 73 65 20 65 6e 67 69 6e 65 20 75 73 69 6e 67 0a  se engine using.
b940: 74 68 65 20 3c 61 20 68 72 65 66 3d 22 63 61 70  the <a href="cap
b950: 69 33 72 65 66 2e 68 74 6d 6c 23 63 66 75 6e 63  i3ref.html#cfunc
b960: 22 3e 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  ">sqlite3_create
b970: 5f 66 75 6e 63 74 69 6f 6e 28 29 3c 2f 61 3e 0a  _function()</a>.
b980: 41 50 49 2e 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65  API.</p>..<table
b990: 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70 61   border=0 cellpa
b9a0: 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c  dding=10>.<tr>.<
b9b0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
b9c0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69  align="right" wi
b9d0: 64 74 68 3d 31 32 30 3e 61 62 73 28 3c 69 3e 58  dth=120>abs(<i>X
b9e0: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
b9f0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
ba00: 72 6e 20 74 68 65 20 61 62 73 6f 6c 75 74 65 20  rn the absolute 
ba10: 76 61 6c 75 65 20 6f 66 20 61 72 67 75 6d 65 6e  value of argumen
ba20: 74 20 3c 69 3e 58 3c 2f 69 3e 2e 3c 2f 74 64 3e  t <i>X</i>.</td>
ba30: 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64  .</tr>..<tr>.<td
ba40: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
ba50: 69 67 6e 3d 22 72 69 67 68 74 22 3e 63 6f 61 6c  ign="right">coal
ba60: 65 73 63 65 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  esce(<i>X</i>,<i
ba70: 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e  >Y</i>,...)</td>
ba80: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
ba90: 22 3e 52 65 74 75 72 6e 20 61 20 63 6f 70 79 20  ">Return a copy 
baa0: 6f 66 20 74 68 65 20 66 69 72 73 74 20 6e 6f 6e  of the first non
bab0: 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e 74 2e 20  -NULL argument. 
bac0: 20 49 66 0a 61 6c 6c 20 61 72 67 75 6d 65 6e 74   If.all argument
bad0: 73 20 61 72 65 20 4e 55 4c 4c 20 74 68 65 6e 20  s are NULL then 
bae0: 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64  NULL is returned
baf0: 2e 20 20 54 68 65 72 65 20 6d 75 73 74 20 62 65  .  There must be
bb00: 20 61 74 20 6c 65 61 73 74 20 0a 32 20 61 72 67   at least .2 arg
bb10: 75 6d 65 6e 74 73 2e 3c 2f 74 64 3e 0a 3c 2f 74  uments.</td>.</t
bb20: 72 3e 0a 0a 3c 74 72 3e 0a 3c 61 20 6e 61 6d 65  r>..<tr>.<a name
bb30: 3d 22 67 6c 6f 62 46 75 6e 63 22 3e 3c 2f 61 3e  ="globFunc"></a>
bb40: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
bb50: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
bb60: 67 6c 6f 62 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  glob(<i>X</i>,<i
bb70: 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >Y</i>)</td>.<td
bb80: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 54 68   valign="top">Th
bb90: 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75  is function is u
bba0: 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  sed to implement
bbb0: 20 74 68 65 0a 22 3c 62 3e 58 20 47 4c 4f 42 20   the."<b>X GLOB 
bbc0: 59 3c 2f 62 3e 22 20 73 79 6e 74 61 78 20 6f 66  Y</b>" syntax of
bbd0: 20 53 51 4c 69 74 65 2e 20 20 54 68 65 0a 3c 61   SQLite.  The.<a
bbe0: 20 68 72 65 66 3d 22 63 61 70 69 33 72 65 66 2e   href="capi3ref.
bbf0: 68 74 6d 6c 23 73 71 6c 69 74 65 33 5f 63 72 65  html#sqlite3_cre
bc00: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 22 3e 73 71  ate_function">sq
bc10: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
bc20: 63 74 69 6f 6e 28 29 3c 2f 61 3e 20 0a 69 6e 74  ction()</a> .int
bc30: 65 72 66 61 63 65 20 63 61 6e 0a 62 65 20 75 73  erface can.be us
bc40: 65 64 20 74 6f 20 6f 76 65 72 72 69 64 65 20 74  ed to override t
bc50: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64  his function and
bc60: 20 74 68 65 72 65 62 79 20 63 68 61 6e 67 65 20   thereby change 
bc70: 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 0a 6f 66  the operation.of
bc80: 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 67   the <a href="#g
bc90: 6c 6f 62 46 75 6e 63 22 3e 47 4c 4f 42 3c 2f 61  lobFunc">GLOB</a
bca0: 3e 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 74 64 3e  > operator.</td>
bcb0: 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64  .</tr>..<tr>.<td
bcc0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
bcd0: 69 67 6e 3d 22 72 69 67 68 74 22 3e 69 66 6e 75  ign="right">ifnu
bce0: 6c 6c 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59  ll(<i>X</i>,<i>Y
bcf0: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
bd00: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
bd10: 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  rn a copy of the
bd20: 20 66 69 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20   first non-NULL 
bd30: 61 72 67 75 6d 65 6e 74 2e 20 20 49 66 0a 62 6f  argument.  If.bo
bd40: 74 68 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  th arguments are
bd50: 20 4e 55 4c 4c 20 74 68 65 6e 20 4e 55 4c 4c 20   NULL then NULL 
bd60: 69 73 20 72 65 74 75 72 6e 65 64 2e 20 54 68 69  is returned. Thi
bd70: 73 20 62 65 68 61 76 65 73 20 74 68 65 20 73 61  s behaves the sa
bd80: 6d 65 20 61 73 20 0a 3c 62 3e 63 6f 61 6c 65 73  me as .<b>coales
bd90: 63 65 28 29 3c 2f 62 3e 20 61 62 6f 76 65 2e 3c  ce()</b> above.<
bda0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
bdb0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
bdc0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
bdd0: 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
bde0: 64 28 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  d()</td>.<td val
bdf0: 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e  ign="top">Return
be00: 20 74 68 65 20 52 4f 57 49 44 20 6f 66 20 74 68   the ROWID of th
be10: 65 20 6c 61 73 74 20 72 6f 77 20 69 6e 73 65 72  e last row inser
be20: 74 20 66 72 6f 6d 20 74 68 69 73 0a 63 6f 6e 6e  t from this.conn
be30: 65 63 74 69 6f 6e 20 74 6f 20 74 68 65 20 64 61  ection to the da
be40: 74 61 62 61 73 65 2e 20 20 54 68 69 73 20 69 73  tabase.  This is
be50: 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 20   the same value 
be60: 74 68 61 74 20 77 6f 75 6c 64 20 62 65 20 72 65  that would be re
be70: 74 75 72 6e 65 64 0a 66 72 6f 6d 20 74 68 65 20  turned.from the 
be80: 3c 62 3e 73 71 6c 69 74 65 5f 6c 61 73 74 5f 69  <b>sqlite_last_i
be90: 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 3c 2f 62  nsert_rowid()</b
bea0: 3e 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 2e 3c  > API function.<
beb0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
bec0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
bed0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
bee0: 6c 65 6e 67 74 68 28 3c 69 3e 58 3c 2f 69 3e 29  length(<i>X</i>)
bef0: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
bf00: 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68  ="top">Return th
bf10: 65 20 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20  e string length 
bf20: 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20 69 6e 20 63  of <i>X</i> in c
bf30: 68 61 72 61 63 74 65 72 73 2e 0a 49 66 20 53 51  haracters..If SQ
bf40: 4c 69 74 65 20 69 73 20 63 6f 6e 66 69 67 75 72  Lite is configur
bf50: 65 64 20 74 6f 20 73 75 70 70 6f 72 74 20 55 54  ed to support UT
bf60: 46 2d 38 2c 20 74 68 65 6e 20 74 68 65 20 6e 75  F-8, then the nu
bf70: 6d 62 65 72 20 6f 66 20 55 54 46 2d 38 0a 63 68  mber of UTF-8.ch
bf80: 61 72 61 63 74 65 72 73 20 69 73 20 72 65 74 75  aracters is retu
bf90: 72 6e 65 64 2c 20 6e 6f 74 20 74 68 65 20 6e 75  rned, not the nu
bfa0: 6d 62 65 72 20 6f 66 20 62 79 74 65 73 2e 3c 2f  mber of bytes.</
bfb0: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
bfc0: 3c 61 20 6e 61 6d 65 3d 22 6c 69 6b 65 46 75 6e  <a name="likeFun
bfd0: 63 22 3e 3c 2f 61 3e 0a 3c 74 64 20 76 61 6c 69  c"></a>.<td vali
bfe0: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
bff0: 72 69 67 68 74 22 3e 6c 69 6b 65 28 3c 69 3e 58  right">like(<i>X
c000: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 20 5b 2c  </i>,<i>Y</i> [,
c010: 3c 69 3e 5a 3c 2f 69 3e 5d 29 3c 2f 74 64 3e 0a  <i>Z</i>])</td>.
c020: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
c030: 3e 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  >.This function 
c040: 69 73 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65  is used to imple
c050: 6d 65 6e 74 20 74 68 65 20 22 3c 62 3e 58 20 4c  ment the "<b>X L
c060: 49 4b 45 20 59 20 5b 45 53 43 41 50 45 20 5a 5d  IKE Y [ESCAPE Z]
c070: 3c 2f 62 3e 22 0a 73 79 6e 74 61 78 20 6f 66 20  </b>".syntax of 
c080: 53 51 4c 2e 20 49 66 20 74 68 65 20 6f 70 74 69  SQL. If the opti
c090: 6f 6e 61 6c 20 45 53 43 41 50 45 20 63 6c 61 75  onal ESCAPE clau
c0a0: 73 65 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74  se is present, t
c0b0: 68 65 6e 20 74 68 65 0a 75 73 65 72 2d 66 75 6e  hen the.user-fun
c0c0: 63 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64  ction is invoked
c0d0: 20 77 69 74 68 20 74 68 72 65 65 20 61 72 67 75   with three argu
c0e0: 6d 65 6e 74 73 2e 20 4f 74 68 65 72 77 69 73 65  ments. Otherwise
c0f0: 2c 20 69 74 20 69 73 0a 69 6e 76 6f 6b 65 64 20  , it is.invoked 
c100: 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e  with two argumen
c110: 74 73 20 6f 6e 6c 79 2e 20 54 68 65 20 0a 3c 61  ts only. The .<a
c120: 20 68 72 65 66 3d 22 63 61 70 69 33 72 65 66 2e   href="capi3ref.
c130: 68 74 6d 6c 23 73 71 6c 69 74 65 33 5f 63 72 65  html#sqlite3_cre
c140: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 22 3e 0a 73  ate_function">.s
c150: 71 6c 69 74 65 5f 63 72 65 61 74 65 5f 66 75 6e  qlite_create_fun
c160: 63 74 69 6f 6e 28 29 3c 2f 61 3e 20 69 6e 74 65  ction()</a> inte
c170: 72 66 61 63 65 20 63 61 6e 20 62 65 20 75 73 65  rface can be use
c180: 64 20 74 6f 20 6f 76 65 72 72 69 64 65 20 74 68  d to override th
c190: 69 73 0a 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20  is.function and 
c1a0: 74 68 65 72 65 62 79 20 63 68 61 6e 67 65 20 74  thereby change t
c1b0: 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20  he operation of 
c1c0: 74 68 65 20 3c 61 0a 68 72 65 66 3d 20 22 23 6c  the <a.href= "#l
c1d0: 69 6b 65 22 3e 4c 49 4b 45 3c 2f 61 3e 20 6f 70  ike">LIKE</a> op
c1e0: 65 72 61 74 6f 72 2e 20 57 68 65 6e 20 64 6f 69  erator. When doi
c1f0: 6e 67 20 74 68 69 73 2c 20 69 74 20 6d 61 79 20  ng this, it may 
c200: 62 65 20 69 6d 70 6f 72 74 61 6e 74 0a 74 6f 20  be important.to 
c210: 6f 76 65 72 72 69 64 65 20 62 6f 74 68 20 74 68  override both th
c220: 65 20 74 77 6f 20 61 6e 64 20 74 68 72 65 65 20  e two and three 
c230: 61 72 67 75 6d 65 6e 74 20 76 65 72 73 69 6f 6e  argument version
c240: 73 20 6f 66 20 74 68 65 20 6c 69 6b 65 28 29 20  s of the like() 
c250: 0a 66 75 6e 63 74 69 6f 6e 2e 20 4f 74 68 65 72  .function. Other
c260: 77 69 73 65 2c 20 64 69 66 66 65 72 65 6e 74 20  wise, different 
c270: 63 6f 64 65 20 6d 61 79 20 62 65 20 63 61 6c 6c  code may be call
c280: 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20  ed to implement 
c290: 74 68 65 0a 4c 49 4b 45 20 6f 70 65 72 61 74 6f  the.LIKE operato
c2a0: 72 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77  r depending on w
c2b0: 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 61 6e  hether or not an
c2c0: 20 45 53 43 41 50 45 20 63 6c 61 75 73 65 20 77   ESCAPE clause w
c2d0: 61 73 20 0a 73 70 65 63 69 66 69 65 64 2e 3c 2f  as .specified.</
c2e0: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
c2f0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
c300: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6c   align="right">l
c310: 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 3c 69  oad_extension(<i
c320: 3e 58 3c 2f 69 3e 29 3c 62 72 3e 0a 6c 6f 61 64  >X</i>)<br>.load
c330: 5f 65 78 74 65 6e 73 69 6f 6e 28 3c 69 3e 58 3c  _extension(<i>X<
c340: 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74  /i>,<i>Y</i>)</t
c350: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
c360: 6f 70 22 3e 4c 6f 61 64 20 53 51 4c 69 74 65 20  op">Load SQLite 
c370: 65 78 74 65 6e 73 69 6f 6e 73 20 6f 75 74 20 6f  extensions out o
c380: 66 20 74 68 65 20 73 68 61 72 65 64 20 6c 69 62  f the shared lib
c390: 72 61 72 79 0a 66 69 6c 65 20 6e 61 6d 65 64 20  rary.file named 
c3a0: 3c 69 3e 58 3c 2f 69 3e 20 75 73 69 6e 67 20 74  <i>X</i> using t
c3b0: 68 65 20 65 6e 74 72 79 20 70 6f 69 6e 74 20 3c  he entry point <
c3c0: 69 3e 59 3c 2f 69 3e 2e 20 20 54 68 65 20 72 65  i>Y</i>.  The re
c3d0: 73 75 6c 74 0a 69 73 20 61 20 4e 55 4c 4c 2e 20  sult.is a NULL. 
c3e0: 20 49 66 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20   If <i>Y</i> is 
c3f0: 6f 6d 69 74 74 65 64 20 74 68 65 6e 20 74 68 65  omitted then the
c400: 20 64 65 66 61 75 6c 74 20 65 6e 74 72 79 20 70   default entry p
c410: 6f 69 6e 74 0a 6f 66 20 3c 62 3e 73 71 6c 69 74  oint.of <b>sqlit
c420: 65 33 5f 65 78 74 65 6e 73 69 6f 6e 5f 69 6e 69  e3_extension_ini
c430: 74 3c 2f 62 3e 20 69 73 20 75 73 65 64 2e 20 20  t</b> is used.  
c440: 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 61  This function ra
c450: 69 73 65 73 0a 61 6e 20 65 78 63 65 70 74 69 6f  ises.an exceptio
c460: 6e 20 69 66 20 74 68 65 20 65 78 74 65 6e 73 69  n if the extensi
c470: 6f 6e 20 66 61 69 6c 73 20 74 6f 20 6c 6f 61 64  on fails to load
c480: 20 6f 72 20 69 6e 69 74 69 61 6c 69 7a 65 20 63   or initialize c
c490: 6f 72 72 65 63 74 6c 79 2e 0a 3c 2f 74 72 3e 0a  orrectly..</tr>.
c4a0: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
c4b0: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
c4c0: 67 68 74 22 3e 6c 6f 77 65 72 28 3c 69 3e 58 3c  ght">lower(<i>X<
c4d0: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
c4e0: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
c4f0: 6e 20 61 20 63 6f 70 79 20 6f 66 20 73 74 72 69  n a copy of stri
c500: 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 6c 6c  ng <i>X</i> will
c510: 20 61 6c 6c 20 63 68 61 72 61 63 74 65 72 73 0a   all characters.
c520: 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 6c 6f 77  converted to low
c530: 65 72 20 63 61 73 65 2e 20 20 54 68 65 20 43 20  er case.  The C 
c540: 6c 69 62 72 61 72 79 20 3c 62 3e 74 6f 6c 6f 77  library <b>tolow
c550: 65 72 28 29 3c 2f 62 3e 20 72 6f 75 74 69 6e 65  er()</b> routine
c560: 20 69 73 20 75 73 65 64 0a 66 6f 72 20 74 68 65   is used.for the
c570: 20 63 6f 6e 76 65 72 73 69 6f 6e 2c 20 77 68 69   conversion, whi
c580: 63 68 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68  ch means that th
c590: 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 69 67 68  is function migh
c5a0: 74 20 6e 6f 74 0a 77 6f 72 6b 20 63 6f 72 72 65  t not.work corre
c5b0: 63 74 6c 79 20 6f 6e 20 55 54 46 2d 38 20 63 68  ctly on UTF-8 ch
c5c0: 61 72 61 63 74 65 72 73 2e 3c 2f 74 64 3e 0a 3c  aracters.</td>.<
c5d0: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
c5e0: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
c5f0: 6e 3d 22 72 69 67 68 74 22 3e 6d 61 78 28 3c 69  n="right">max(<i
c600: 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c  >X</i>,<i>Y</i>,
c610: 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  ...)</td>.<td va
c620: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
c630: 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 77  n the argument w
c640: 69 74 68 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ith the maximum 
c650: 76 61 6c 75 65 2e 20 20 41 72 67 75 6d 65 6e 74  value.  Argument
c660: 73 0a 6d 61 79 20 62 65 20 73 74 72 69 6e 67 73  s.may be strings
c670: 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20   in addition to 
c680: 6e 75 6d 62 65 72 73 2e 20 20 54 68 65 20 6d 61  numbers.  The ma
c690: 78 69 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 64  ximum value is d
c6a0: 65 74 65 72 6d 69 6e 65 64 0a 62 79 20 74 68 65  etermined.by the
c6b0: 20 75 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65   usual sort orde
c6c0: 72 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62  r.  Note that <b
c6d0: 3e 6d 61 78 28 29 3c 2f 62 3e 20 69 73 20 61 20  >max()</b> is a 
c6e0: 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20  simple function 
c6f0: 77 68 65 6e 0a 69 74 20 68 61 73 20 32 20 6f 72  when.it has 2 or
c700: 20 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20   more arguments 
c710: 62 75 74 20 63 6f 6e 76 65 72 74 73 20 74 6f 20  but converts to 
c720: 61 6e 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  an aggregate fun
c730: 63 74 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a 6f  ction if given.o
c740: 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67  nly a single arg
c750: 75 6d 65 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  ument.</td>.</tr
c760: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
c770: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
c780: 72 69 67 68 74 22 3e 6d 69 6e 28 3c 69 3e 58 3c  right">min(<i>X<
c790: 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e  /i>,<i>Y</i>,...
c7a0: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
c7b0: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74  n="top">Return t
c7c0: 68 65 20 61 72 67 75 6d 65 6e 74 20 77 69 74 68  he argument with
c7d0: 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c   the minimum val
c7e0: 75 65 2e 20 20 41 72 67 75 6d 65 6e 74 73 0a 6d  ue.  Arguments.m
c7f0: 61 79 20 62 65 20 73 74 72 69 6e 67 73 20 69 6e  ay be strings in
c800: 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 6e 75 6d   addition to num
c810: 62 65 72 73 2e 20 20 54 68 65 20 6d 69 6e 69 6d  bers.  The minim
c820: 75 6d 20 76 61 6c 75 65 20 69 73 20 64 65 74 65  um value is dete
c830: 72 6d 69 6e 65 64 0a 62 79 20 74 68 65 20 75 73  rmined.by the us
c840: 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 2e 20  ual sort order. 
c850: 20 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d 69   Note that <b>mi
c860: 6e 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d  n()</b> is a sim
c870: 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 65  ple function whe
c880: 6e 0a 69 74 20 68 61 73 20 32 20 6f 72 20 6d 6f  n.it has 2 or mo
c890: 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75 74  re arguments but
c8a0: 20 63 6f 6e 76 65 72 74 73 20 74 6f 20 61 6e 20   converts to an 
c8b0: 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  aggregate functi
c8c0: 6f 6e 20 69 66 20 67 69 76 65 6e 0a 6f 6e 6c 79  on if given.only
c8d0: 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65   a single argume
c8e0: 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  nt.</td>.</tr>..
c8f0: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
c900: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
c910: 68 74 22 3e 6e 75 6c 6c 69 66 28 3c 69 3e 58 3c  ht">nullif(<i>X<
c920: 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74  /i>,<i>Y</i>)</t
c930: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
c940: 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 66  op">Return the f
c950: 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69 66  irst argument if
c960: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 61   the arguments a
c970: 72 65 20 64 69 66 66 65 72 65 6e 74 2c 20 0a 6f  re different, .o
c980: 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 20  therwise return 
c990: 4e 55 4c 4c 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  NULL.</td>.</tr>
c9a0: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
c9b0: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
c9c0: 69 67 68 74 22 3e 71 75 6f 74 65 28 3c 69 3e 58  ight">quote(<i>X
c9d0: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
c9e0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 54 68 69 73  align="top">This
c9f0: 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73   routine returns
ca00: 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 20   a string which 
ca10: 69 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 0a  is the value of.
ca20: 69 74 73 20 61 72 67 75 6d 65 6e 74 20 73 75 69  its argument sui
ca30: 74 61 62 6c 65 20 66 6f 72 20 69 6e 63 6c 75 73  table for inclus
ca40: 69 6f 6e 20 69 6e 74 6f 20 61 6e 6f 74 68 65 72  ion into another
ca50: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 0a   SQL statement..
ca60: 53 74 72 69 6e 67 73 20 61 72 65 20 73 75 72 72  Strings are surr
ca70: 6f 75 6e 64 65 64 20 62 79 20 73 69 6e 67 6c 65  ounded by single
ca80: 2d 71 75 6f 74 65 73 20 77 69 74 68 20 65 73 63  -quotes with esc
ca90: 61 70 65 73 20 6f 6e 20 69 6e 74 65 72 69 6f 72  apes on interior
caa0: 20 71 75 6f 74 65 73 0a 61 73 20 6e 65 65 64 65   quotes.as neede
cab0: 64 2e 20 20 42 4c 4f 42 73 20 61 72 65 20 65 6e  d.  BLOBs are en
cac0: 63 6f 64 65 64 20 61 73 20 68 65 78 61 64 65 63  coded as hexadec
cad0: 69 6d 61 6c 20 6c 69 74 65 72 61 6c 73 2e 0a 54  imal literals..T
cae0: 68 65 20 63 75 72 72 65 6e 74 20 69 6d 70 6c 65  he current imple
caf0: 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 56 41 43  mentation of VAC
cb00: 55 55 4d 20 75 73 65 73 20 74 68 69 73 20 66 75  UUM uses this fu
cb10: 6e 63 74 69 6f 6e 2e 20 20 54 68 65 20 66 75 6e  nction.  The fun
cb20: 63 74 69 6f 6e 0a 69 73 20 61 6c 73 6f 20 75 73  ction.is also us
cb30: 65 66 75 6c 20 77 68 65 6e 20 77 72 69 74 69 6e  eful when writin
cb40: 67 20 74 72 69 67 67 65 72 73 20 74 6f 20 69 6d  g triggers to im
cb50: 70 6c 65 6d 65 6e 74 20 75 6e 64 6f 2f 72 65 64  plement undo/red
cb60: 6f 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e  o functionality.
cb70: 0a 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
cb80: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
cb90: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
cba0: 22 3e 72 61 6e 64 6f 6d 28 2a 29 3c 2f 74 64 3e  ">random(*)</td>
cbb0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
cbc0: 22 3e 52 65 74 75 72 6e 20 61 20 70 73 65 75 64  ">Return a pseud
cbd0: 6f 2d 72 61 6e 64 6f 6d 20 69 6e 74 65 67 65 72  o-random integer
cbe0: 0a 62 65 74 77 65 65 6e 20 2d 39 32 32 33 33 37  .between -922337
cbf0: 32 30 33 36 38 35 34 37 37 35 38 30 38 20 61 6e  2036854775808 an
cc00: 64 20 2b 39 32 32 33 33 37 32 30 33 36 38 35 34  d +9223372036854
cc10: 37 37 35 38 30 37 2e 3c 2f 74 64 3e 0a 3c 2f 74  775807.</td>.</t
cc20: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
cc30: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
cc40: 22 72 69 67 68 74 22 3e 72 6f 75 6e 64 28 3c 69  "right">round(<i
cc50: 3e 58 3c 2f 69 3e 29 3c 62 72 3e 72 6f 75 6e 64  >X</i>)<br>round
cc60: 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f  (<i>X</i>,<i>Y</
cc70: 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  i>)</td>.<td val
cc80: 69 67 6e 3d 22 74 6f 70 22 3e 52 6f 75 6e 64 20  ign="top">Round 
cc90: 6f 66 66 20 74 68 65 20 6e 75 6d 62 65 72 20 3c  off the number <
cca0: 69 3e 58 3c 2f 69 3e 20 74 6f 20 3c 69 3e 59 3c  i>X</i> to <i>Y<
ccb0: 2f 69 3e 20 64 69 67 69 74 73 20 74 6f 20 74 68  /i> digits to th
ccc0: 65 0a 72 69 67 68 74 20 6f 66 20 74 68 65 20 64  e.right of the d
ccd0: 65 63 69 6d 61 6c 20 70 6f 69 6e 74 2e 20 20 49  ecimal point.  I
cce0: 66 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 20 61  f the <i>Y</i> a
ccf0: 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74  rgument is omitt
cd00: 65 64 2c 20 30 20 69 73 20 0a 61 73 73 75 6d 65  ed, 0 is .assume
cd10: 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  d.</td>.</tr>..<
cd20: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
cd30: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
cd40: 74 22 3e 73 6f 75 6e 64 65 78 28 3c 69 3e 58 3c  t">soundex(<i>X<
cd50: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
cd60: 6c 69 67 6e 3d 22 74 6f 70 22 3e 43 6f 6d 70 75  lign="top">Compu
cd70: 74 65 20 74 68 65 20 73 6f 75 6e 64 65 78 20 65  te the soundex e
cd80: 6e 63 6f 64 69 6e 67 20 6f 66 20 74 68 65 20 73  ncoding of the s
cd90: 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 2e 0a  tring <i>X</i>..
cda0: 54 68 65 20 73 74 72 69 6e 67 20 22 3f 30 30 30  The string "?000
cdb0: 22 20 69 73 20 72 65 74 75 72 6e 65 64 20 69 66  " is returned if
cdc0: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73   the argument is
cdd0: 20 4e 55 4c 4c 2e 0a 54 68 69 73 20 66 75 6e 63   NULL..This func
cde0: 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 20  tion is omitted 
cdf0: 66 72 6f 6d 20 53 51 4c 69 74 65 20 62 79 20 64  from SQLite by d
ce00: 65 66 61 75 6c 74 2e 0a 49 74 20 69 73 20 6f 6e  efault..It is on
ce10: 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 74 68 65  ly available the
ce20: 20 2d 44 53 51 4c 49 54 45 5f 53 4f 55 4e 44 45   -DSQLITE_SOUNDE
ce30: 58 3d 31 20 63 6f 6d 70 69 6c 65 72 20 6f 70 74  X=1 compiler opt
ce40: 69 6f 6e 0a 69 73 20 75 73 65 64 20 77 68 65 6e  ion.is used when
ce50: 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c 74   SQLite is built
ce60: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
ce70: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
ce80: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
ce90: 22 3e 73 71 6c 69 74 65 5f 76 65 72 73 69 6f 6e  ">sqlite_version
cea0: 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  (*)</td>.<td val
ceb0: 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e  ign="top">Return
cec0: 20 74 68 65 20 76 65 72 73 69 6f 6e 20 73 74 72   the version str
ced0: 69 6e 67 20 66 6f 72 20 74 68 65 20 53 51 4c 69  ing for the SQLi
cee0: 74 65 20 6c 69 62 72 61 72 79 0a 74 68 61 74 20  te library.that 
cef0: 69 73 20 72 75 6e 6e 69 6e 67 2e 20 20 45 78 61  is running.  Exa
cf00: 6d 70 6c 65 3a 20 20 22 32 2e 38 2e 30 22 3c 2f  mple:  "2.8.0"</
cf10: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
cf20: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
cf30: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 73   align="right">s
cf40: 75 62 73 74 72 28 3c 69 3e 58 3c 2f 69 3e 2c 3c  ubstr(<i>X</i>,<
cf50: 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 5a 3c 2f 69 3e  i>Y</i>,<i>Z</i>
cf60: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
cf70: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61  n="top">Return a
cf80: 20 73 75 62 73 74 72 69 6e 67 20 6f 66 20 69 6e   substring of in
cf90: 70 75 74 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c  put string <i>X<
cfa0: 2f 69 3e 20 74 68 61 74 20 62 65 67 69 6e 73 0a  /i> that begins.
cfb0: 77 69 74 68 20 74 68 65 20 3c 69 3e 59 3c 2f 69  with the <i>Y</i
cfc0: 3e 2d 74 68 20 63 68 61 72 61 63 74 65 72 20 61  >-th character a
cfd0: 6e 64 20 77 68 69 63 68 20 69 73 20 3c 69 3e 5a  nd which is <i>Z
cfe0: 3c 2f 69 3e 20 63 68 61 72 61 63 74 65 72 73 20  </i> characters 
cff0: 6c 6f 6e 67 2e 0a 54 68 65 20 6c 65 66 74 2d 6d  long..The left-m
d000: 6f 73 74 20 63 68 61 72 61 63 74 65 72 20 6f 66  ost character of
d010: 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 6e 75 6d   <i>X</i> is num
d020: 62 65 72 20 31 2e 20 20 49 66 20 3c 69 3e 59 3c  ber 1.  If <i>Y<
d030: 2f 69 3e 20 69 73 20 6e 65 67 61 74 69 76 65 0a  /i> is negative.
d040: 74 68 65 20 74 68 65 20 66 69 72 73 74 20 63 68  the the first ch
d050: 61 72 61 63 74 65 72 20 6f 66 20 74 68 65 20 73  aracter of the s
d060: 75 62 73 74 72 69 6e 67 20 69 73 20 66 6f 75 6e  ubstring is foun
d070: 64 20 62 79 20 63 6f 75 6e 74 69 6e 67 20 66 72  d by counting fr
d080: 6f 6d 20 74 68 65 0a 72 69 67 68 74 20 72 61 74  om the.right rat
d090: 68 65 72 20 74 68 61 6e 20 74 68 65 20 6c 65 66  her than the lef
d0a0: 74 2e 20 20 49 66 20 53 51 4c 69 74 65 20 69 73  t.  If SQLite is
d0b0: 20 63 6f 6e 66 69 67 75 72 65 64 20 74 6f 20 73   configured to s
d0c0: 75 70 70 6f 72 74 20 55 54 46 2d 38 2c 0a 74 68  upport UTF-8,.th
d0d0: 65 6e 20 63 68 61 72 61 63 74 65 72 73 20 69 6e  en characters in
d0e0: 64 69 63 65 73 20 72 65 66 65 72 20 74 6f 20 61  dices refer to a
d0f0: 63 74 75 61 6c 20 55 54 46 2d 38 20 63 68 61 72  ctual UTF-8 char
d100: 61 63 74 65 72 73 2c 20 6e 6f 74 20 62 79 74 65  acters, not byte
d110: 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  s.</td>.</tr>..<
d120: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
d130: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
d140: 74 22 3e 74 79 70 65 6f 66 28 3c 69 3e 58 3c 2f  t">typeof(<i>X</
d150: 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  i>)</td>.<td val
d160: 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e  ign="top">Return
d170: 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 68 65   the type of the
d180: 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 69 3e 58   expression <i>X
d190: 3c 2f 69 3e 2e 20 20 54 68 65 20 6f 6e 6c 79 20  </i>.  The only 
d1a0: 0a 72 65 74 75 72 6e 20 76 61 6c 75 65 73 20 61  .return values a
d1b0: 72 65 20 22 6e 75 6c 6c 22 2c 20 22 69 6e 74 65  re "null", "inte
d1c0: 67 65 72 22 2c 20 22 72 65 61 6c 22 2c 20 22 74  ger", "real", "t
d1d0: 65 78 74 22 2c 20 61 6e 64 20 22 62 6c 6f 62 22  ext", and "blob"
d1e0: 2e 0a 53 51 4c 69 74 65 27 73 20 74 79 70 65 20  ..SQLite's type 
d1f0: 68 61 6e 64 6c 69 6e 67 20 69 73 20 0a 65 78 70  handling is .exp
d200: 6c 61 69 6e 65 64 20 69 6e 20 3c 61 20 68 72 65  lained in <a hre
d210: 66 3d 22 64 61 74 61 74 79 70 65 33 2e 68 74 6d  f="datatype3.htm
d220: 6c 22 3e 44 61 74 61 74 79 70 65 73 20 69 6e 20  l">Datatypes in 
d230: 53 51 4c 69 74 65 20 56 65 72 73 69 6f 6e 20 33  SQLite Version 3
d240: 3c 2f 61 3e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  </a>.</td>.</tr>
d250: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
d260: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
d270: 69 67 68 74 22 3e 75 70 70 65 72 28 3c 69 3e 58  ight">upper(<i>X
d280: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
d290: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
d2a0: 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 69 6e 70  rn a copy of inp
d2b0: 75 74 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f  ut string <i>X</
d2c0: 69 3e 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20  i> converted to 
d2d0: 61 6c 6c 0a 75 70 70 65 72 2d 63 61 73 65 20 6c  all.upper-case l
d2e0: 65 74 74 65 72 73 2e 20 20 54 68 65 20 69 6d 70  etters.  The imp
d2f0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74  lementation of t
d300: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 75 73 65  his function use
d310: 73 20 74 68 65 20 43 20 6c 69 62 72 61 72 79 0a  s the C library.
d320: 72 6f 75 74 69 6e 65 20 3c 62 3e 74 6f 75 70 70  routine <b>toupp
d330: 65 72 28 29 3c 2f 62 3e 20 77 68 69 63 68 20 6d  er()</b> which m
d340: 65 61 6e 73 20 69 74 20 6d 61 79 20 6e 6f 74 20  eans it may not 
d350: 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 6f  work correctly o
d360: 6e 20 0a 55 54 46 2d 38 20 73 74 72 69 6e 67 73  n .UTF-8 strings
d370: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74  .</td>.</tr>.</t
d380: 61 62 6c 65 3e 0a 0a 3c 62 3e 44 61 74 65 20 41  able>..<b>Date A
d390: 6e 64 20 54 69 6d 65 20 46 75 6e 63 74 69 6f 6e  nd Time Function
d3a0: 73 3c 2f 62 3e 0a 0a 3c 70 3e 44 61 74 65 20 61  s</b>..<p>Date a
d3b0: 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e  nd time function
d3c0: 73 20 61 72 65 20 64 6f 63 75 6d 65 6e 74 65 64  s are documented
d3d0: 20 69 6e 20 74 68 65 20 0a 3c 61 20 68 72 65 66   in the .<a href
d3e0: 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 73 71 6c  ="http://www.sql
d3f0: 69 74 65 2e 6f 72 67 2f 63 76 73 74 72 61 63 2f  ite.org/cvstrac/
d400: 77 69 6b 69 3f 70 3d 44 61 74 65 41 6e 64 54 69  wiki?p=DateAndTi
d410: 6d 65 46 75 6e 63 74 69 6f 6e 73 22 3e 0a 53 51  meFunctions">.SQ
d420: 4c 69 74 65 20 57 69 6b 69 3c 2f 61 3e 2e 3c 2f  Lite Wiki</a>.</
d430: 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 61 67 67  p>..<a name="agg
d440: 72 65 67 61 74 65 66 75 6e 63 74 69 6f 6e 73 22  regatefunctions"
d450: 3e 3c 2f 61 3e 0a 3c 62 3e 41 67 67 72 65 67 61  ></a>.<b>Aggrega
d460: 74 65 20 46 75 6e 63 74 69 6f 6e 73 3c 2f 62 3e  te Functions</b>
d470: 0a 0a 3c 70 3e 0a 54 68 65 20 61 67 67 72 65 67  ..<p>.The aggreg
d480: 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 73 68  ate functions sh
d490: 6f 77 6e 20 62 65 6c 6f 77 20 61 72 65 20 61 76  own below are av
d4a0: 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61 75  ailable by defau
d4b0: 6c 74 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c 0a  lt.  Additional.
d4c0: 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  aggregate functi
d4d0: 6f 6e 73 20 77 72 69 74 74 65 6e 20 69 6e 20 43  ons written in C
d4e0: 20 6d 61 79 20 62 65 20 61 64 64 65 64 20 75 73   may be added us
d4f0: 69 6e 67 20 74 68 65 20 0a 3c 61 20 68 72 65 66  ing the .<a href
d500: 3d 22 63 61 70 69 33 72 65 66 2e 68 74 6d 6c 23  ="capi3ref.html#
d510: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
d520: 75 6e 63 74 69 6f 6e 22 3e 73 71 6c 69 74 65 33  unction">sqlite3
d530: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
d540: 28 29 3c 2f 61 3e 0a 41 50 49 2e 3c 2f 70 3e 0a  ()</a>.API.</p>.
d550: 0a 3c 70 3e 0a 49 6e 20 61 6e 79 20 61 67 67 72  .<p>.In any aggr
d560: 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 74  egate function t
d570: 68 61 74 20 74 61 6b 65 73 20 61 20 73 69 6e 67  hat takes a sing
d580: 6c 65 20 61 72 67 75 6d 65 6e 74 2c 20 74 68 61  le argument, tha
d590: 74 20 61 72 67 75 6d 65 6e 74 0a 63 61 6e 20 62  t argument.can b
d5a0: 65 20 70 72 65 63 65 65 64 65 64 20 62 79 20 74  e preceeded by t
d5b0: 68 65 20 6b 65 79 77 6f 72 64 20 44 49 53 54 49  he keyword DISTI
d5c0: 4e 43 54 2e 20 20 49 6e 20 73 75 63 68 20 63 61  NCT.  In such ca
d5d0: 73 65 73 2c 20 64 75 70 6c 69 63 61 74 65 0a 65  ses, duplicate.e
d5e0: 6c 65 6d 65 6e 74 73 20 61 72 65 20 66 69 6c 74  lements are filt
d5f0: 65 72 65 64 20 62 65 66 6f 72 65 20 62 65 69 6e  ered before bein
d600: 67 20 70 61 73 73 65 64 20 69 6e 74 6f 20 74 68  g passed into th
d610: 65 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  e aggregate func
d620: 74 69 6f 6e 2e 0a 46 6f 72 20 65 78 61 6d 70 6c  tion..For exampl
d630: 65 2c 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20  e, the function 
d640: 22 63 6f 75 6e 74 28 64 69 73 74 69 6e 63 74 20  "count(distinct 
d650: 58 29 22 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  X)" will return 
d660: 74 68 65 20 6e 75 6d 62 65 72 0a 6f 66 20 64 69  the number.of di
d670: 73 74 69 6e 63 74 20 76 61 6c 75 65 73 20 6f 66  stinct values of
d680: 20 63 6f 6c 75 6d 6e 20 58 20 69 6e 73 74 65 61   column X instea
d690: 64 20 6f 66 20 74 68 65 20 74 6f 74 61 6c 20 6e  d of the total n
d6a0: 75 6d 62 65 72 20 6f 66 20 6e 6f 6e 2d 6e 75 6c  umber of non-nul
d6b0: 6c 0a 76 61 6c 75 65 73 20 69 6e 20 63 6f 6c 75  l.values in colu
d6c0: 6d 6e 20 58 2e 0a 3c 2f 70 3e 0a 0a 3c 74 61 62  mn X..</p>..<tab
d6d0: 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c  le border=0 cell
d6e0: 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e  padding=10>.<tr>
d6f0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
d700: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  " align="right" 
d710: 77 69 64 74 68 3d 31 32 30 3e 61 76 67 28 3c 69  width=120>avg(<i
d720: 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >X</i>)</td>.<td
d730: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
d740: 74 75 72 6e 20 74 68 65 20 61 76 65 72 61 67 65  turn the average
d750: 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 6e 6f   value of all no
d760: 6e 2d 4e 55 4c 4c 20 3c 69 3e 58 3c 2f 69 3e 20  n-NULL <i>X</i> 
d770: 77 69 74 68 69 6e 20 61 0a 67 72 6f 75 70 2e 20  within a.group. 
d780: 20 53 74 72 69 6e 67 20 61 6e 64 20 42 4c 4f 42   String and BLOB
d790: 20 76 61 6c 75 65 73 20 74 68 61 74 20 64 6f 20   values that do 
d7a0: 6e 6f 74 20 6c 6f 6f 6b 20 6c 69 6b 65 20 6e 75  not look like nu
d7b0: 6d 62 65 72 73 20 61 72 65 0a 69 6e 74 65 72 70  mbers are.interp
d7c0: 72 65 74 65 64 20 61 73 20 30 2e 0a 54 68 65 20  reted as 0..The 
d7d0: 72 65 73 75 6c 74 20 6f 66 20 61 76 67 28 29 20  result of avg() 
d7e0: 69 73 20 61 6c 77 61 79 73 20 61 20 66 6c 6f 61  is always a floa
d7f0: 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65  ting point value
d800: 20 65 76 65 6e 20 69 66 20 61 6c 6c 0a 69 6e 70   even if all.inp
d810: 75 74 73 20 61 72 65 20 69 6e 74 65 67 65 72 73  uts are integers
d820: 2e 20 3c 2f 70 3e 3c 2f 74 64 3e 0a 3c 2f 74 72  . </p></td>.</tr
d830: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
d840: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
d850: 72 69 67 68 74 22 3e 63 6f 75 6e 74 28 3c 69 3e  right">count(<i>
d860: 58 3c 2f 69 3e 29 3c 62 72 3e 63 6f 75 6e 74 28  X</i>)<br>count(
d870: 2a 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  *)</td>.<td vali
d880: 67 6e 3d 22 74 6f 70 22 3e 54 68 65 20 66 69 72  gn="top">The fir
d890: 73 74 20 66 6f 72 6d 20 72 65 74 75 72 6e 20 61  st form return a
d8a0: 20 63 6f 75 6e 74 20 6f 66 20 74 68 65 20 6e 75   count of the nu
d8b0: 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 0a 74 68  mber of times.th
d8c0: 61 74 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 6e  at <i>X</i> is n
d8d0: 6f 74 20 4e 55 4c 4c 20 69 6e 20 61 20 67 72 6f  ot NULL in a gro
d8e0: 75 70 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20  up.  The second 
d8f0: 66 6f 72 6d 20 28 77 69 74 68 20 6e 6f 20 61 72  form (with no ar
d900: 67 75 6d 65 6e 74 29 0a 72 65 74 75 72 6e 73 20  gument).returns 
d910: 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72  the total number
d920: 20 6f 66 20 72 6f 77 73 20 69 6e 20 74 68 65 20   of rows in the 
d930: 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  group.</td>.</tr
d940: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
d950: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
d960: 72 69 67 68 74 22 3e 6d 61 78 28 3c 69 3e 58 3c  right">max(<i>X<
d970: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
d980: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
d990: 6e 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61  n the maximum va
d9a0: 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65  lue of all value
d9b0: 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a  s in the group..
d9c0: 54 68 65 20 75 73 75 61 6c 20 73 6f 72 74 20 6f  The usual sort o
d9d0: 72 64 65 72 20 69 73 20 75 73 65 64 20 74 6f 20  rder is used to 
d9e0: 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d 61  determine the ma
d9f0: 78 69 6d 75 6d 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  ximum.</td>.</tr
da00: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
da10: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
da20: 72 69 67 68 74 22 3e 6d 69 6e 28 3c 69 3e 58 3c  right">min(<i>X<
da30: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
da40: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
da50: 6e 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 6e 6f  n the minimum no
da60: 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 20 6f 66 20  n-NULL value of 
da70: 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68  all values in th
da80: 65 20 67 72 6f 75 70 2e 0a 54 68 65 20 75 73 75  e group..The usu
da90: 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 20 69 73  al sort order is
daa0: 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69   used to determi
dab0: 6e 65 20 74 68 65 20 6d 69 6e 69 6d 75 6d 2e 20  ne the minimum. 
dac0: 20 4e 55 4c 4c 20 69 73 20 6f 6e 6c 79 20 72 65   NULL is only re
dad0: 74 75 72 6e 65 64 0a 69 66 20 61 6c 6c 20 76 61  turned.if all va
dae0: 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75  lues in the grou
daf0: 70 20 61 72 65 20 4e 55 4c 4c 2e 3c 2f 74 64 3e  p are NULL.</td>
db00: 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64  .</tr>..<tr>.<td
db10: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
db20: 69 67 6e 3d 22 72 69 67 68 74 22 3e 73 75 6d 28  ign="right">sum(
db30: 3c 69 3e 58 3c 2f 69 3e 29 3c 62 72 3e 74 6f 74  <i>X</i>)<br>tot
db40: 61 6c 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64  al(<i>X</i>)</td
db50: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
db60: 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 6e 75  p">Return the nu
db70: 6d 65 72 69 63 20 73 75 6d 20 6f 66 20 61 6c 6c  meric sum of all
db80: 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 73   non-NULL values
db90: 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 20   in the group.. 
dba0: 20 20 49 66 20 74 68 65 72 65 20 61 72 65 20 6e    If there are n
dbb0: 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74  o non-NULL input
dbc0: 20 72 6f 77 73 20 74 68 65 6e 20 73 75 6d 28 29   rows then sum()
dbd0: 20 72 65 74 75 72 6e 73 0a 20 20 20 4e 55 4c 4c   returns.   NULL
dbe0: 20 62 75 74 20 74 6f 74 61 6c 28 29 20 72 65 74   but total() ret
dbf0: 75 72 6e 73 20 30 2e 30 2e 0a 20 20 20 4e 55 4c  urns 0.0..   NUL
dc00: 4c 20 69 73 20 6e 6f 74 20 6e 6f 72 6d 61 6c 6c  L is not normall
dc10: 79 20 61 20 68 65 6c 70 66 75 6c 20 72 65 73 75  y a helpful resu
dc20: 6c 74 20 66 6f 72 20 74 68 65 20 73 75 6d 20 6f  lt for the sum o
dc30: 66 20 6e 6f 20 72 6f 77 73 0a 20 20 20 62 75 74  f no rows.   but
dc40: 20 74 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72   the SQL standar
dc50: 64 20 72 65 71 75 69 72 65 73 20 69 74 20 61 6e  d requires it an
dc60: 64 20 6d 6f 73 74 20 6f 74 68 65 72 0a 20 20 20  d most other.   
dc70: 53 51 4c 20 64 61 74 61 62 61 73 65 20 65 6e 67  SQL database eng
dc80: 69 6e 65 73 20 69 6d 70 6c 65 6d 65 6e 74 20 73  ines implement s
dc90: 75 6d 28 29 20 74 68 61 74 20 77 61 79 20 73 6f  um() that way so
dca0: 20 53 51 4c 69 74 65 20 64 6f 65 73 20 69 74 20   SQLite does it 
dcb0: 69 6e 20 74 68 65 0a 20 20 20 73 61 6d 65 20 77  in the.   same w
dcc0: 61 79 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 62  ay in order to b
dcd0: 65 20 63 6f 6d 70 61 74 69 62 6c 65 2e 20 20 20  e compatible.   
dce0: 54 68 65 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64  The non-standard
dcf0: 20 74 6f 74 61 6c 28 29 20 66 75 6e 63 74 69 6f   total() functio
dd00: 6e 0a 20 20 20 69 73 20 70 72 6f 76 69 64 65 64  n.   is provided
dd10: 20 61 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 74   as a convenient
dd20: 20 77 61 79 20 74 6f 20 77 6f 72 6b 20 61 72 6f   way to work aro
dd30: 75 6e 64 20 74 68 69 73 20 64 65 73 69 67 6e 20  und this design 
dd40: 70 72 6f 62 6c 65 6d 0a 20 20 20 69 6e 20 74 68  problem.   in th
dd50: 65 20 53 51 4c 20 6c 61 6e 67 75 61 67 65 2e 3c  e SQL language.<
dd60: 2f 70 3e 0a 0a 20 20 20 3c 70 3e 54 68 65 20 72  /p>..   <p>The r
dd70: 65 73 75 6c 74 20 6f 66 20 74 6f 74 61 6c 28 29  esult of total()
dd80: 20 69 73 20 61 6c 77 61 79 73 20 61 20 66 6c 6f   is always a flo
dd90: 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75  ating point valu
dda0: 65 2e 0a 20 20 20 54 68 65 20 72 65 73 75 6c 74  e..   The result
ddb0: 20 6f 66 20 73 75 6d 28 29 20 69 73 20 61 6e 20   of sum() is an 
ddc0: 69 6e 74 65 67 65 72 20 76 61 6c 75 65 20 69 66  integer value if
ddd0: 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e   all non-NULL in
dde0: 70 75 74 73 20 61 72 65 20 69 6e 74 65 67 65 72  puts are integer
ddf0: 73 2e 0a 20 20 20 49 66 20 61 6e 79 20 69 6e 70  s..   If any inp
de00: 75 74 20 74 6f 20 73 75 6d 28 29 20 69 73 20 6e  ut to sum() is n
de10: 65 69 74 68 65 72 20 61 6e 20 69 6e 74 65 67 65  either an intege
de20: 72 20 6f 72 20 61 20 4e 55 4c 4c 0a 20 20 20 74  r or a NULL.   t
de30: 68 65 6e 20 73 75 6d 28 29 20 72 65 74 75 72 6e  hen sum() return
de40: 73 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  s a floating poi
de50: 6e 74 20 76 61 6c 75 65 0a 20 20 20 77 68 69 63  nt value.   whic
de60: 68 20 6d 69 67 68 74 20 62 65 20 61 6e 20 61 70  h might be an ap
de70: 70 72 6f 78 69 6d 61 74 69 6f 6e 20 74 6f 20 74  proximation to t
de80: 68 65 20 74 72 75 65 20 73 75 6d 2e 3c 2f 70 3e  he true sum.</p>
de90: 0a 0a 20 20 20 3c 70 3e 53 75 6d 28 29 20 77 69  ..   <p>Sum() wi
dea0: 6c 6c 20 74 68 72 6f 77 20 61 6e 20 22 69 6e 74  ll throw an "int
deb0: 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 22 20 65  eger overflow" e
dec0: 78 63 65 70 74 69 6f 6e 20 69 66 20 61 6c 6c 20  xception if all 
ded0: 69 6e 70 75 74 73 0a 20 20 20 61 72 65 20 69 6e  inputs.   are in
dee0: 74 65 67 65 72 73 20 6f 72 20 4e 55 4c 4c 0a 20  tegers or NULL. 
def0: 20 20 61 6e 64 20 61 6e 20 69 6e 74 65 67 65 72    and an integer
df00: 20 6f 76 65 72 66 6c 6f 77 20 6f 63 63 75 72 73   overflow occurs
df10: 20 61 74 20 61 6e 79 20 70 6f 69 6e 74 20 64 75   at any point du
df20: 72 69 6e 67 20 74 68 65 20 63 6f 6d 70 75 74 61  ring the computa
df30: 74 69 6f 6e 2e 0a 20 20 20 54 6f 74 61 6c 28 29  tion..   Total()
df40: 20 6e 65 76 65 72 20 74 68 72 6f 77 73 20 61 6e   never throws an
df50: 20 65 78 63 65 70 74 69 6f 6e 2e 3c 2f 70 3e 0a   exception.</p>.
df60: 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 7d  </tr>.</table>.}
df70: 0a 0a 0a 53 65 63 74 69 6f 6e 20 49 4e 53 45 52  ...Section INSER
df80: 54 20 69 6e 73 65 72 74 0a 0a 53 79 6e 74 61 78  T insert..Syntax
df90: 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
dfa0: 20 7b 0a 49 4e 53 45 52 54 20 5b 4f 52 20 3c 63   {.INSERT [OR <c
dfb0: 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68  onflict-algorith
dfc0: 6d 3e 5d 20 49 4e 54 4f 20 5b 3c 64 61 74 61 62  m>] INTO [<datab
dfd0: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
dfe0: 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 3c 63 6f 6c  ble-name> [(<col
dff0: 75 6d 6e 2d 6c 69 73 74 3e 29 5d 20 56 41 4c 55  umn-list>)] VALU
e000: 45 53 28 3c 76 61 6c 75 65 2d 6c 69 73 74 3e 29  ES(<value-list>)
e010: 20 7c 0a 49 4e 53 45 52 54 20 5b 4f 52 20 3c 63   |.INSERT [OR <c
e020: 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68  onflict-algorith
e030: 6d 3e 5d 20 49 4e 54 4f 20 5b 3c 64 61 74 61 62  m>] INTO [<datab
e040: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
e050: 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 3c 63 6f 6c  ble-name> [(<col
e060: 75 6d 6e 2d 6c 69 73 74 3e 29 5d 20 3c 73 65 6c  umn-list>)] <sel
e070: 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d  ect-statement>.}
e080: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20  ..puts {.<p>The 
e090: 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74  INSERT statement
e0a0: 20 63 6f 6d 65 73 20 69 6e 20 74 77 6f 20 62 61   comes in two ba
e0b0: 73 69 63 20 66 6f 72 6d 73 2e 20 20 54 68 65 20  sic forms.  The 
e0c0: 66 69 72 73 74 20 66 6f 72 6d 0a 28 77 69 74 68  first form.(with
e0d0: 20 74 68 65 20 22 56 41 4c 55 45 53 22 20 6b 65   the "VALUES" ke
e0e0: 79 77 6f 72 64 29 20 63 72 65 61 74 65 73 20 61  yword) creates a
e0f0: 20 73 69 6e 67 6c 65 20 6e 65 77 20 72 6f 77 20   single new row 
e100: 69 6e 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74  in an existing t
e110: 61 62 6c 65 2e 0a 49 66 20 6e 6f 20 63 6f 6c 75  able..If no colu
e120: 6d 6e 2d 6c 69 73 74 20 69 73 20 73 70 65 63 69  mn-list is speci
e130: 66 69 65 64 20 74 68 65 6e 20 74 68 65 20 6e 75  fied then the nu
e140: 6d 62 65 72 20 6f 66 20 76 61 6c 75 65 73 20 6d  mber of values m
e150: 75 73 74 0a 62 65 20 74 68 65 20 73 61 6d 65 20  ust.be the same 
e160: 61 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  as the number of
e170: 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
e180: 74 61 62 6c 65 2e 20 20 49 66 20 61 20 63 6f 6c  table.  If a col
e190: 75 6d 6e 2d 6c 69 73 74 0a 69 73 20 73 70 65 63  umn-list.is spec
e1a0: 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20  ified, then the 
e1b0: 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65 73  number of values
e1c0: 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68 65 20   must match the 
e1d0: 6e 75 6d 62 65 72 20 6f 66 0a 73 70 65 63 69 66  number of.specif
e1e0: 69 65 64 20 63 6f 6c 75 6d 6e 73 2e 20 20 43 6f  ied columns.  Co
e1f0: 6c 75 6d 6e 73 20 6f 66 20 74 68 65 20 74 61 62  lumns of the tab
e200: 6c 65 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 61  le that do not a
e210: 70 70 65 61 72 20 69 6e 20 74 68 65 0a 63 6f 6c  ppear in the.col
e220: 75 6d 6e 20 6c 69 73 74 20 61 72 65 20 66 69 6c  umn list are fil
e230: 6c 65 64 20 77 69 74 68 20 74 68 65 20 64 65 66  led with the def
e240: 61 75 6c 74 20 76 61 6c 75 65 2c 20 6f 72 20 77  ault value, or w
e250: 69 74 68 20 4e 55 4c 4c 20 69 66 20 6e 6f 74 0a  ith NULL if not.
e260: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73  default value is
e270: 20 73 70 65 63 69 66 69 65 64 2e 0a 3c 2f 70 3e   specified..</p>
e280: 0a 0a 3c 70 3e 54 68 65 20 73 65 63 6f 6e 64 20  ..<p>The second 
e290: 66 6f 72 6d 20 6f 66 20 74 68 65 20 49 4e 53 45  form of the INSE
e2a0: 52 54 20 73 74 61 74 65 6d 65 6e 74 20 74 61 6b  RT statement tak
e2b0: 65 73 20 69 74 20 64 61 74 61 20 66 72 6f 6d 20  es it data from 
e2c0: 61 0a 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  a.SELECT stateme
e2d0: 6e 74 2e 20 20 54 68 65 20 6e 75 6d 62 65 72 20  nt.  The number 
e2e0: 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68  of columns in th
e2f0: 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 0a  e result of the.
e300: 53 45 4c 45 43 54 20 6d 75 73 74 20 65 78 61 63  SELECT must exac
e310: 74 6c 79 20 6d 61 74 63 68 20 74 68 65 20 6e 75  tly match the nu
e320: 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  mber of columns 
e330: 69 6e 20 74 68 65 20 74 61 62 6c 65 20 69 66 0a  in the table if.
e340: 6e 6f 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 69  no column list i
e350: 73 20 73 70 65 63 69 66 69 65 64 2c 20 6f 72 20  s specified, or 
e360: 69 74 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68  it must match th
e370: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
e380: 6d 6e 73 0a 6e 61 6d 65 20 69 6e 20 74 68 65 20  mns.name in the 
e390: 63 6f 6c 75 6d 6e 20 6c 69 73 74 2e 20 20 41 20  column list.  A 
e3a0: 6e 65 77 20 65 6e 74 72 79 20 69 73 20 6d 61 64  new entry is mad
e3b0: 65 20 69 6e 20 74 68 65 20 74 61 62 6c 65 0a 66  e in the table.f
e3c0: 6f 72 20 65 76 65 72 79 20 72 6f 77 20 6f 66 20  or every row of 
e3d0: 74 68 65 20 53 45 4c 45 43 54 20 72 65 73 75 6c  the SELECT resul
e3e0: 74 2e 20 20 54 68 65 20 53 45 4c 45 43 54 20 6d  t.  The SELECT m
e3f0: 61 79 20 62 65 20 73 69 6d 70 6c 65 0a 6f 72 20  ay be simple.or 
e400: 63 6f 6d 70 6f 75 6e 64 2e 20 20 49 66 20 74 68  compound.  If th
e410: 65 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  e SELECT stateme
e420: 6e 74 20 68 61 73 20 61 6e 20 4f 52 44 45 52 20  nt has an ORDER 
e430: 42 59 20 63 6c 61 75 73 65 2c 0a 74 68 65 20 4f  BY clause,.the O
e440: 52 44 45 52 20 42 59 20 69 73 20 69 67 6e 6f 72  RDER BY is ignor
e450: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ed.</p>..<p>The 
e460: 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63  optional conflic
e470: 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20  t-clause allows 
e480: 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f  the specificatio
e490: 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74  n of an alternat
e4a0: 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63  ive.constraint c
e4b0: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
e4c0: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20  on algorithm to 
e4d0: 75 73 65 20 64 75 72 69 6e 67 20 74 68 69 73 20  use during this 
e4e0: 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65  one command..See
e4f0: 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74   the section tit
e500: 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f  led.<a href="#co
e510: 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c  nflict">ON CONFL
e520: 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69  ICT</a> for addi
e530: 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
e540: 6f 6e 2e 0a 46 6f 72 20 63 6f 6d 70 61 74 69 62  on..For compatib
e550: 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51 4c  ility with MySQL
e560: 2c 20 74 68 65 20 70 61 72 73 65 72 20 61 6c 6c  , the parser all
e570: 6f 77 73 20 74 68 65 20 75 73 65 20 6f 66 20 74  ows the use of t
e580: 68 65 0a 73 69 6e 67 6c 65 20 6b 65 79 77 6f 72  he.single keywor
e590: 64 20 3c 61 20 68 72 65 66 3d 22 23 72 65 70 6c  d <a href="#repl
e5a0: 61 63 65 22 3e 52 45 50 4c 41 43 45 3c 2f 61 3e  ace">REPLACE</a>
e5b0: 20 61 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72   as an alias for
e5c0: 20 22 49 4e 53 45 52 54 20 4f 52 20 52 45 50 4c   "INSERT OR REPL
e5d0: 41 43 45 22 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 53  ACE"..</p>.}...S
e5e0: 65 63 74 69 6f 6e 20 7b 4f 4e 20 43 4f 4e 46 4c  ection {ON CONFL
e5f0: 49 43 54 20 63 6c 61 75 73 65 7d 20 63 6f 6e 66  ICT clause} conf
e600: 6c 69 63 74 0a 0a 53 79 6e 74 61 78 20 7b 63 6f  lict..Syntax {co
e610: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 7d 20 7b  nflict-clause} {
e620: 0a 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c 63 6f  .ON CONFLICT <co
e630: 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d  nflict-algorithm
e640: 3e 0a 7d 20 7b 63 6f 6e 66 6c 69 63 74 2d 61 6c  >.} {conflict-al
e650: 67 6f 72 69 74 68 6d 7d 20 7b 0a 52 4f 4c 4c 42  gorithm} {.ROLLB
e660: 41 43 4b 20 7c 20 41 42 4f 52 54 20 7c 20 46 41  ACK | ABORT | FA
e670: 49 4c 20 7c 20 49 47 4e 4f 52 45 20 7c 20 52 45  IL | IGNORE | RE
e680: 50 4c 41 43 45 0a 7d 0a 0a 70 75 74 73 20 7b 0a  PLACE.}..puts {.
e690: 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49  <p>The ON CONFLI
e6a0: 43 54 20 63 6c 61 75 73 65 20 69 73 20 6e 6f 74  CT clause is not
e6b0: 20 61 20 73 65 70 61 72 61 74 65 20 53 51 4c 20   a separate SQL 
e6c0: 63 6f 6d 6d 61 6e 64 2e 20 20 49 74 20 69 73 20  command.  It is 
e6d0: 61 0a 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20 63  a.non-standard c
e6e0: 6c 61 75 73 65 20 74 68 61 74 20 63 61 6e 20 61  lause that can a
e6f0: 70 70 65 61 72 20 69 6e 20 6d 61 6e 79 20 6f 74  ppear in many ot
e700: 68 65 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73  her SQL commands
e710: 2e 0a 49 74 20 69 73 20 67 69 76 65 6e 20 69 74  ..It is given it
e720: 73 20 6f 77 6e 20 73 65 63 74 69 6f 6e 20 69 6e  s own section in
e730: 20 74 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 62   this document b
e740: 65 63 61 75 73 65 20 69 74 20 69 73 20 6e 6f 74  ecause it is not
e750: 0a 70 61 72 74 20 6f 66 20 73 74 61 6e 64 61 72  .part of standar
e760: 64 20 53 51 4c 20 61 6e 64 20 74 68 65 72 65 66  d SQL and theref
e770: 6f 72 65 20 6d 69 67 68 74 20 6e 6f 74 20 62 65  ore might not be
e780: 20 66 61 6d 69 6c 69 61 72 2e 3c 2f 70 3e 0a 0a   familiar.</p>..
e790: 3c 70 3e 54 68 65 20 73 79 6e 74 61 78 20 66 6f  <p>The syntax fo
e7a0: 72 20 74 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43  r the ON CONFLIC
e7b0: 54 20 63 6c 61 75 73 65 20 69 73 20 61 73 20 73  T clause is as s
e7c0: 68 6f 77 6e 20 61 62 6f 76 65 20 66 6f 72 0a 74  hown above for.t
e7d0: 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  he CREATE TABLE 
e7e0: 63 6f 6d 6d 61 6e 64 2e 20 20 46 6f 72 20 74 68  command.  For th
e7f0: 65 20 49 4e 53 45 52 54 20 61 6e 64 0a 55 50 44  e INSERT and.UPD
e800: 41 54 45 20 63 6f 6d 6d 61 6e 64 73 2c 20 74 68  ATE commands, th
e810: 65 20 6b 65 79 77 6f 72 64 73 20 22 4f 4e 20 43  e keywords "ON C
e820: 4f 4e 46 4c 49 43 54 22 20 61 72 65 20 72 65 70  ONFLICT" are rep
e830: 6c 61 63 65 64 20 62 79 20 22 4f 52 22 2c 20 74  laced by "OR", t
e840: 6f 20 6d 61 6b 65 0a 74 68 65 20 73 79 6e 74 61  o make.the synta
e850: 78 20 73 65 65 6d 20 6d 6f 72 65 20 6e 61 74 75  x seem more natu
e860: 72 61 6c 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  ral.  For exampl
e870: 65 2c 20 69 6e 73 74 65 61 64 20 6f 66 0a 22 49  e, instead of."I
e880: 4e 53 45 52 54 20 4f 4e 20 43 4f 4e 46 4c 49 43  NSERT ON CONFLIC
e890: 54 20 49 47 4e 4f 52 45 22 20 77 65 20 68 61 76  T IGNORE" we hav
e8a0: 65 20 22 49 4e 53 45 52 54 20 4f 52 20 49 47 4e  e "INSERT OR IGN
e8b0: 4f 52 45 22 2e 0a 54 68 65 20 6b 65 79 77 6f 72  ORE"..The keywor
e8c0: 64 73 20 63 68 61 6e 67 65 20 62 75 74 20 74 68  ds change but th
e8d0: 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 74 68 65  e meaning of the
e8e0: 20 63 6c 61 75 73 65 20 69 73 20 74 68 65 20 73   clause is the s
e8f0: 61 6d 65 0a 65 69 74 68 65 72 20 77 61 79 2e 3c  ame.either way.<
e900: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4f 4e 20 43  /p>..<p>The ON C
e910: 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20 73  ONFLICT clause s
e920: 70 65 63 69 66 69 65 73 20 61 6e 20 61 6c 67 6f  pecifies an algo
e930: 72 69 74 68 6d 20 75 73 65 64 20 74 6f 20 72 65  rithm used to re
e940: 73 6f 6c 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74  solve.constraint
e950: 20 63 6f 6e 66 6c 69 63 74 73 2e 20 20 54 68 65   conflicts.  The
e960: 72 65 20 61 72 65 20 66 69 76 65 20 63 68 6f 69  re are five choi
e970: 63 65 73 3a 20 52 4f 4c 4c 42 41 43 4b 2c 20 41  ces: ROLLBACK, A
e980: 42 4f 52 54 2c 0a 46 41 49 4c 2c 20 49 47 4e 4f  BORT,.FAIL, IGNO
e990: 52 45 2c 20 61 6e 64 20 52 45 50 4c 41 43 45 2e  RE, and REPLACE.
e9a0: 20 54 68 65 20 64 65 66 61 75 6c 74 20 61 6c 67   The default alg
e9b0: 6f 72 69 74 68 6d 20 69 73 20 41 42 4f 52 54 2e  orithm is ABORT.
e9c0: 20 20 54 68 69 73 0a 69 73 20 77 68 61 74 20 74    This.is what t
e9d0: 68 65 79 20 6d 65 61 6e 3a 3c 2f 70 3e 0a 0a 3c  hey mean:</p>..<
e9e0: 64 6c 3e 0a 3c 64 74 3e 3c 62 3e 52 4f 4c 4c 42  dl>.<dt><b>ROLLB
e9f0: 41 43 4b 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64  ACK</b></dt>.<dd
ea00: 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74  ><p>When a const
ea10: 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
ea20: 6f 63 63 75 72 73 2c 20 61 6e 20 69 6d 6d 65 64  occurs, an immed
ea30: 69 61 74 65 20 52 4f 4c 4c 42 41 43 4b 0a 6f 63  iate ROLLBACK.oc
ea40: 63 75 72 73 2c 20 74 68 75 73 20 65 6e 64 69 6e  curs, thus endin
ea50: 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 72  g the current tr
ea60: 61 6e 73 61 63 74 69 6f 6e 2c 20 61 6e 64 20 74  ansaction, and t
ea70: 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72 74  he command abort
ea80: 73 0a 77 69 74 68 20 61 20 72 65 74 75 72 6e 20  s.with a return 
ea90: 63 6f 64 65 20 6f 66 20 53 51 4c 49 54 45 5f 43  code of SQLITE_C
eaa0: 4f 4e 53 54 52 41 49 4e 54 2e 20 20 49 66 20 6e  ONSTRAINT.  If n
eab0: 6f 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73  o transaction is
eac0: 0a 61 63 74 69 76 65 20 28 6f 74 68 65 72 20 74  .active (other t
ead0: 68 61 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20  han the implied 
eae0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 68 61 74  transaction that
eaf0: 20 69 73 20 63 72 65 61 74 65 64 20 6f 6e 20 65   is created on e
eb00: 76 65 72 79 0a 63 6f 6d 6d 61 6e 64 29 20 74 68  very.command) th
eb10: 65 6e 20 74 68 69 73 20 61 6c 67 6f 72 69 74 68  en this algorith
eb20: 6d 20 77 6f 72 6b 73 20 74 68 65 20 73 61 6d 65  m works the same
eb30: 20 61 73 20 41 42 4f 52 54 2e 3c 2f 70 3e 3c 2f   as ABORT.</p></
eb40: 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 41 42 4f 52  dd>..<dt><b>ABOR
eb50: 54 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c  T</b></dt>.<dd><
eb60: 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72 61  p>When a constra
eb70: 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63  int violation oc
eb80: 63 75 72 73 2c 20 74 68 65 20 63 6f 6d 6d 61 6e  curs, the comman
eb90: 64 20 62 61 63 6b 73 20 6f 75 74 0a 61 6e 79 20  d backs out.any 
eba0: 70 72 69 6f 72 20 63 68 61 6e 67 65 73 20 69 74  prior changes it
ebb0: 20 6d 69 67 68 74 20 68 61 76 65 20 6d 61 64 65   might have made
ebc0: 20 61 6e 64 20 61 62 6f 72 74 73 20 77 69 74 68   and aborts with
ebd0: 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65 0a 6f   a return code.o
ebe0: 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  f SQLITE_CONSTRA
ebf0: 49 4e 54 2e 20 20 42 75 74 20 6e 6f 20 52 4f 4c  INT.  But no ROL
ec00: 4c 42 41 43 4b 20 69 73 20 65 78 65 63 75 74 65  LBACK is execute
ec10: 64 20 73 6f 20 63 68 61 6e 67 65 73 0a 66 72 6f  d so changes.fro
ec20: 6d 20 70 72 69 6f 72 20 63 6f 6d 6d 61 6e 64 73  m prior commands
ec30: 20 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d 65   within the same
ec40: 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 61 72 65   transaction.are
ec50: 20 70 72 65 73 65 72 76 65 64 2e 20 20 54 68 69   preserved.  Thi
ec60: 73 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74  s is the default
ec70: 20 62 65 68 61 76 69 6f 72 2e 3c 2f 70 3e 3c 2f   behavior.</p></
ec80: 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 46 41 49 4c  dd>..<dt><b>FAIL
ec90: 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70  </b></dt>.<dd><p
eca0: 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69  >When a constrai
ecb0: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63  nt violation occ
ecc0: 75 72 73 2c 20 74 68 65 20 63 6f 6d 6d 61 6e 64  urs, the command
ecd0: 20 61 62 6f 72 74 73 20 77 69 74 68 20 61 0a 72   aborts with a.r
ece0: 65 74 75 72 6e 20 63 6f 64 65 20 53 51 4c 49 54  eturn code SQLIT
ecf0: 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20 42  E_CONSTRAINT.  B
ed00: 75 74 20 61 6e 79 20 63 68 61 6e 67 65 73 20 74  ut any changes t
ed10: 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74  o the database t
ed20: 68 61 74 0a 74 68 65 20 63 6f 6d 6d 61 6e 64 20  hat.the command 
ed30: 6d 61 64 65 20 70 72 69 6f 72 20 74 6f 20 65 6e  made prior to en
ed40: 63 6f 75 6e 74 65 72 69 6e 67 20 74 68 65 20 63  countering the c
ed50: 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
ed60: 69 6f 6e 0a 61 72 65 20 70 72 65 73 65 72 76 65  ion.are preserve
ed70: 64 20 61 6e 64 20 61 72 65 20 6e 6f 74 20 62 61  d and are not ba
ed80: 63 6b 65 64 20 6f 75 74 2e 20 20 46 6f 72 20 65  cked out.  For e
ed90: 78 61 6d 70 6c 65 2c 20 69 66 20 61 6e 20 55 50  xample, if an UP
eda0: 44 41 54 45 0a 73 74 61 74 65 6d 65 6e 74 20 65  DATE.statement e
edb0: 6e 63 6f 75 6e 74 65 72 65 64 20 61 20 63 6f 6e  ncountered a con
edc0: 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
edd0: 6e 20 6f 6e 20 74 68 65 20 31 30 30 74 68 20 72  n on the 100th r
ede0: 6f 77 20 74 68 61 74 0a 69 74 20 61 74 74 65 6d  ow that.it attem
edf0: 70 74 73 20 74 6f 20 75 70 64 61 74 65 2c 20 74  pts to update, t
ee00: 68 65 6e 20 74 68 65 20 66 69 72 73 74 20 39 39  hen the first 99
ee10: 20 72 6f 77 20 63 68 61 6e 67 65 73 20 61 72 65   row changes are
ee20: 20 70 72 65 73 65 72 76 65 64 0a 62 75 74 20 63   preserved.but c
ee30: 68 61 6e 67 65 73 20 74 6f 20 72 6f 77 73 20 31  hanges to rows 1
ee40: 30 30 20 61 6e 64 20 62 65 79 6f 6e 64 20 6e 65  00 and beyond ne
ee50: 76 65 72 20 6f 63 63 75 72 2e 3c 2f 70 3e 3c 2f  ver occur.</p></
ee60: 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 49 47 4e 4f  dd>..<dt><b>IGNO
ee70: 52 45 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e  RE</b></dt>.<dd>
ee80: 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72  <p>When a constr
ee90: 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f  aint violation o
eea0: 63 63 75 72 73 2c 20 74 68 65 20 6f 6e 65 20 72  ccurs, the one r
eeb0: 6f 77 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73  ow that contains
eec0: 0a 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20  .the constraint 
eed0: 76 69 6f 6c 61 74 69 6f 6e 20 69 73 20 6e 6f 74  violation is not
eee0: 20 69 6e 73 65 72 74 65 64 20 6f 72 20 63 68 61   inserted or cha
eef0: 6e 67 65 64 2e 20 20 42 75 74 20 74 68 65 20 63  nged.  But the c
ef00: 6f 6d 6d 61 6e 64 0a 63 6f 6e 74 69 6e 75 65 73  ommand.continues
ef10: 20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61   executing norma
ef20: 6c 6c 79 2e 20 20 4f 74 68 65 72 20 72 6f 77 73  lly.  Other rows
ef30: 20 62 65 66 6f 72 65 20 61 6e 64 20 61 66 74 65   before and afte
ef40: 72 20 74 68 65 20 72 6f 77 20 74 68 61 74 0a 63  r the row that.c
ef50: 6f 6e 74 61 69 6e 65 64 20 74 68 65 20 63 6f 6e  ontained the con
ef60: 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
ef70: 6e 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 62 65  n continue to be
ef80: 20 69 6e 73 65 72 74 65 64 20 6f 72 20 75 70 64   inserted or upd
ef90: 61 74 65 64 0a 6e 6f 72 6d 61 6c 6c 79 2e 20 20  ated.normally.  
efa0: 4e 6f 20 65 72 72 6f 72 20 69 73 20 72 65 74 75  No error is retu
efb0: 72 6e 65 64 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  rned.</p></dd>..
efc0: 3c 64 74 3e 3c 62 3e 52 45 50 4c 41 43 45 3c 2f  <dt><b>REPLACE</
efd0: 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57  b></dt>.<dd><p>W
efe0: 68 65 6e 20 61 20 55 4e 49 51 55 45 20 63 6f 6e  hen a UNIQUE con
eff0: 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
f000: 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 70 72  n occurs, the pr
f010: 65 2d 65 78 69 73 74 69 6e 67 20 72 6f 77 73 0a  e-existing rows.
f020: 74 68 61 74 20 61 72 65 20 63 61 75 73 69 6e 67  that are causing
f030: 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20   the constraint 
f040: 76 69 6f 6c 61 74 69 6f 6e 20 61 72 65 20 72 65  violation are re
f050: 6d 6f 76 65 64 20 70 72 69 6f 72 20 74 6f 20 69  moved prior to i
f060: 6e 73 65 72 74 69 6e 67 0a 6f 72 20 75 70 64 61  nserting.or upda
f070: 74 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74  ting the current
f080: 20 72 6f 77 2e 20 20 54 68 75 73 20 74 68 65 20   row.  Thus the 
f090: 69 6e 73 65 72 74 20 6f 72 20 75 70 64 61 74 65  insert or update
f0a0: 20 61 6c 77 61 79 73 20 6f 63 63 75 72 73 2e 0a   always occurs..
f0b0: 54 68 65 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 74  The command cont
f0c0: 69 6e 75 65 73 20 65 78 65 63 75 74 69 6e 67 20  inues executing 
f0d0: 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65 72  normally.  No er
f0e0: 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ror is returned.
f0f0: 0a 49 66 20 61 20 4e 4f 54 20 4e 55 4c 4c 20 63  .If a NOT NULL c
f100: 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
f110: 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20  ion occurs, the 
f120: 4e 55 4c 4c 20 76 61 6c 75 65 20 69 73 20 72 65  NULL value is re
f130: 70 6c 61 63 65 64 0a 62 79 20 74 68 65 20 64 65  placed.by the de
f140: 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 20  fault value for 
f150: 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 49 66  that column.  If
f160: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 68 61 73 20   the column has 
f170: 6e 6f 20 64 65 66 61 75 6c 74 0a 76 61 6c 75 65  no default.value
f180: 2c 20 74 68 65 6e 20 74 68 65 20 41 42 4f 52 54  , then the ABORT
f190: 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73   algorithm is us
f1a0: 65 64 2e 20 20 49 66 20 61 20 43 48 45 43 4b 20  ed.  If a CHECK 
f1b0: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
f1c0: 74 69 6f 6e 0a 6f 63 63 75 72 73 20 74 68 65 6e  tion.occurs then
f1d0: 20 74 68 65 20 49 47 4e 4f 52 45 20 61 6c 67 6f   the IGNORE algo
f1e0: 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f  rithm is used.</
f1f0: 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 74 68 69 73  p>..<p>When this
f200: 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75   conflict resolu
f210: 74 69 6f 6e 20 73 74 72 61 74 65 67 79 20 64 65  tion strategy de
f220: 6c 65 74 65 73 20 72 6f 77 73 20 69 6e 20 6f 72  letes rows in or
f230: 64 65 72 20 74 6f 0a 73 61 74 69 73 66 79 20 61  der to.satisfy a
f240: 20 63 6f 6e 73 74 72 61 69 6e 74 2c 20 69 74 20   constraint, it 
f250: 64 6f 65 73 20 6e 6f 74 20 69 6e 76 6f 6b 65 20  does not invoke 
f260: 64 65 6c 65 74 65 20 74 72 69 67 67 65 72 73 20  delete triggers 
f270: 6f 6e 20 74 68 6f 73 65 0a 72 6f 77 73 2e 20 20  on those.rows.  
f280: 54 68 69 73 20 62 65 68 61 76 69 6f 72 20 6d 69  This behavior mi
f290: 67 68 74 20 63 68 61 6e 67 65 20 69 6e 20 61 20  ght change in a 
f2a0: 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 2e 3c  future release.<
f2b0: 2f 70 3e 0a 3c 2f 64 6c 3e 0a 0a 3c 70 3e 54 68  /p>.</dl>..<p>Th
f2c0: 65 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63  e algorithm spec
f2d0: 69 66 69 65 64 20 69 6e 20 74 68 65 20 4f 52 20  ified in the OR 
f2e0: 63 6c 61 75 73 65 20 6f 66 20 61 20 49 4e 53 45  clause of a INSE
f2f0: 52 54 20 6f 72 20 55 50 44 41 54 45 0a 6f 76 65  RT or UPDATE.ove
f300: 72 72 69 64 65 73 20 61 6e 79 20 61 6c 67 6f 72  rrides any algor
f310: 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 69  ithm specified i
f320: 6e 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45  n a CREATE TABLE
f330: 2e 0a 49 66 20 6e 6f 20 61 6c 67 6f 72 69 74 68  ..If no algorith
f340: 6d 20 69 73 20 73 70 65 63 69 66 69 65 64 20 61  m is specified a
f350: 6e 79 77 68 65 72 65 2c 20 74 68 65 20 41 42 4f  nywhere, the ABO
f360: 52 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  RT algorithm is 
f370: 75 73 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65 63  used.</p>.}..Sec
f380: 74 69 6f 6e 20 52 45 49 4e 44 45 58 20 72 65 69  tion REINDEX rei
f390: 6e 64 65 78 0a 0a 53 79 6e 74 61 78 20 7b 73 71  ndex..Syntax {sq
f3a0: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 20  l-statement} {. 
f3b0: 20 52 45 49 4e 44 45 58 20 3c 63 6f 6c 6c 61 74   REINDEX <collat
f3c0: 69 6f 6e 20 6e 61 6d 65 3e 0a 7d 0a 53 79 6e 74  ion name>.}.Synt
f3d0: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
f3e0: 74 7d 20 7b 0a 20 20 52 45 49 4e 44 45 58 20 5b  t} {.  REINDEX [
f3f0: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
f400: 2e 5d 20 3c 74 61 62 6c 65 2f 69 6e 64 65 78 2d  .] <table/index-
f410: 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a  name>.}..puts {.
f420: 3c 70 3e 54 68 65 20 52 45 49 4e 44 45 58 20 63  <p>The REINDEX c
f430: 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 20 74  ommand is used t
f440: 6f 20 64 65 6c 65 74 65 20 61 6e 64 20 72 65 63  o delete and rec
f450: 72 65 61 74 65 20 69 6e 64 69 63 65 73 20 66 72  reate indices fr
f460: 6f 6d 20 73 63 72 61 74 63 68 2e 0a 54 68 69 73  om scratch..This
f470: 20 69 73 20 75 73 65 66 75 6c 20 77 68 65 6e 20   is useful when 
f480: 74 68 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f  the definition o
f490: 66 20 61 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65  f a collation se
f4a0: 71 75 65 6e 63 65 20 68 61 73 20 63 68 61 6e 67  quence has chang
f4b0: 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20  ed..</p>..<p>In 
f4c0: 74 68 65 20 66 69 72 73 74 20 66 6f 72 6d 2c 20  the first form, 
f4d0: 61 6c 6c 20 69 6e 64 69 63 65 73 20 69 6e 20 61  all indices in a
f4e0: 6c 6c 20 61 74 74 61 63 68 65 64 20 64 61 74 61  ll attached data
f4f0: 62 61 73 65 73 20 74 68 61 74 20 75 73 65 20 74  bases that use t
f500: 68 65 0a 6e 61 6d 65 64 20 63 6f 6c 6c 61 74 69  he.named collati
f510: 6f 6e 20 73 65 71 75 65 6e 63 65 20 61 72 65 20  on sequence are 
f520: 72 65 63 72 65 61 74 65 64 2e 20 49 6e 20 74 68  recreated. In th
f530: 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 2c 20 69  e second form, i
f540: 66 20 0a 3c 69 3e 5b 64 61 74 61 62 61 73 65 2d  f .<i>[database-
f550: 6e 61 6d 65 2e 5d 74 61 62 6c 65 2f 69 6e 64 65  name.]table/inde
f560: 78 2d 6e 61 6d 65 3c 2f 69 3e 20 69 64 65 6e 74  x-name</i> ident
f570: 69 66 69 65 73 20 61 20 74 61 62 6c 65 2c 20 74  ifies a table, t
f580: 68 65 6e 20 61 6c 6c 20 69 6e 64 69 63 65 73 0a  hen all indices.
f590: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
f5a0: 74 68 65 20 74 61 62 6c 65 20 61 72 65 20 72 65  the table are re
f5b0: 62 75 69 6c 74 2e 20 49 66 20 61 6e 20 69 6e 64  built. If an ind
f5c0: 65 78 20 69 73 20 69 64 65 6e 74 69 66 69 65 64  ex is identified
f5d0: 2c 20 74 68 65 6e 20 6f 6e 6c 79 0a 74 68 69 73  , then only.this
f5e0: 20 73 70 65 63 69 66 69 63 20 69 6e 64 65 78 20   specific index 
f5f0: 69 73 20 64 65 6c 65 74 65 64 20 61 6e 64 20 72  is deleted and r
f600: 65 63 72 65 61 74 65 64 2e 0a 3c 2f 70 3e 0a 0a  ecreated..</p>..
f610: 3c 70 3e 49 66 20 6e 6f 20 3c 69 3e 64 61 74 61  <p>If no <i>data
f620: 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 20 69 73  base-name</i> is
f630: 20 73 70 65 63 69 66 69 65 64 20 61 6e 64 20 74   specified and t
f640: 68 65 72 65 20 65 78 69 73 74 73 20 62 6f 74 68  here exists both
f650: 20 61 20 74 61 62 6c 65 20 6f 72 0a 69 6e 64 65   a table or.inde
f660: 78 20 61 6e 64 20 61 20 63 6f 6c 6c 61 74 69 6f  x and a collatio
f670: 6e 20 73 65 71 75 65 6e 63 65 20 6f 66 20 74 68  n sequence of th
f680: 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 6d 65  e specified name
f690: 2c 20 74 68 65 6e 20 69 6e 64 69 63 65 73 20 61  , then indices a
f6a0: 73 73 6f 63 69 61 74 65 64 0a 77 69 74 68 20 74  ssociated.with t
f6b0: 68 65 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71  he collation seq
f6c0: 75 65 6e 63 65 20 6f 6e 6c 79 20 61 72 65 20 72  uence only are r
f6d0: 65 63 6f 6e 73 74 72 75 63 74 65 64 2e 20 54 68  econstructed. Th
f6e0: 69 73 20 61 6d 62 69 67 75 69 74 79 20 6d 61 79  is ambiguity may
f6f0: 20 62 65 0a 64 69 73 70 65 6c 6c 65 64 20 62 79   be.dispelled by
f700: 20 61 6c 77 61 79 73 20 73 70 65 63 69 66 79 69   always specifyi
f710: 6e 67 20 61 20 3c 69 3e 64 61 74 61 62 61 73 65  ng a <i>database
f720: 2d 6e 61 6d 65 3c 2f 69 3e 20 77 68 65 6e 20 72  -name</i> when r
f730: 65 69 6e 64 65 78 69 6e 67 20 61 0a 73 70 65 63  eindexing a.spec
f740: 69 66 69 63 20 74 61 62 6c 65 20 6f 72 20 69 6e  ific table or in
f750: 64 65 78 2e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20  dex..}..Section 
f760: 52 45 50 4c 41 43 45 20 72 65 70 6c 61 63 65 0a  REPLACE replace.
f770: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
f780: 74 65 6d 65 6e 74 7d 20 7b 0a 52 45 50 4c 41 43  tement} {.REPLAC
f790: 45 20 49 4e 54 4f 20 5b 3c 64 61 74 61 62 61 73  E INTO [<databas
f7a0: 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c  e-name> .] <tabl
f7b0: 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63 6f 6c 75  e-name> [( <colu
f7c0: 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20 56 41 4c 55  mn-list> )] VALU
f7d0: 45 53 20 28 20 3c 76 61 6c 75 65 2d 6c 69 73 74  ES ( <value-list
f7e0: 3e 20 29 20 7c 0a 52 45 50 4c 41 43 45 20 49 4e  > ) |.REPLACE IN
f7f0: 54 4f 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  TO [<database-na
f800: 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61  me> .] <table-na
f810: 6d 65 3e 20 5b 28 20 3c 63 6f 6c 75 6d 6e 2d 6c  me> [( <column-l
f820: 69 73 74 3e 20 29 5d 20 3c 73 65 6c 65 63 74 2d  ist> )] <select-
f830: 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75  statement>.}..pu
f840: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 52 45 50 4c  ts {.<p>The REPL
f850: 41 43 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61  ACE command is a
f860: 6e 20 61 6c 69 61 73 20 66 6f 72 20 74 68 65 20  n alias for the 
f870: 22 49 4e 53 45 52 54 20 4f 52 20 52 45 50 4c 41  "INSERT OR REPLA
f880: 43 45 22 20 76 61 72 69 61 6e 74 0a 6f 66 20 74  CE" variant.of t
f890: 68 65 20 3c 61 20 68 72 65 66 3d 22 23 69 6e 73  he <a href="#ins
f8a0: 65 72 74 22 3e 49 4e 53 45 52 54 3c 2f 61 3e 20  ert">INSERT</a> 
f8b0: 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73 20 61  command.  This a
f8c0: 6c 69 61 73 20 69 73 20 70 72 6f 76 69 64 65 64  lias is provided
f8d0: 20 66 6f 72 0a 63 6f 6d 70 61 74 69 62 69 6c 69   for.compatibili
f8e0: 74 79 20 77 69 74 68 20 4d 79 53 51 4c 2e 20 20  ty with MySQL.  
f8f0: 53 65 65 20 74 68 65 20 0a 3c 61 20 68 72 65 66  See the .<a href
f900: 3d 22 23 69 6e 73 65 72 74 22 3e 49 4e 53 45 52  ="#insert">INSER
f910: 54 3c 2f 61 3e 20 63 6f 6d 6d 61 6e 64 20 64 6f  T</a> command do
f920: 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20  cumentation for 
f930: 61 64 64 69 74 69 6f 6e 61 6c 0a 69 6e 66 6f 72  additional.infor
f940: 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 20 20 0a 7d 0a  mation.</p>  .}.
f950: 0a 0a 53 65 63 74 69 6f 6e 20 53 45 4c 45 43 54  ..Section SELECT
f960: 20 73 65 6c 65 63 74 0a 0a 53 79 6e 74 61 78 20   select..Syntax 
f970: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
f980: 7b 0a 53 45 4c 45 43 54 20 5b 41 4c 4c 20 7c 20  {.SELECT [ALL | 
f990: 44 49 53 54 49 4e 43 54 5d 20 3c 72 65 73 75 6c  DISTINCT] <resul
f9a0: 74 3e 20 5b 46 52 4f 4d 20 3c 74 61 62 6c 65 2d  t> [FROM <table-
f9b0: 6c 69 73 74 3e 5d 0a 5b 57 48 45 52 45 20 3c 65  list>].[WHERE <e
f9c0: 78 70 72 3e 5d 0a 5b 47 52 4f 55 50 20 42 59 20  xpr>].[GROUP BY 
f9d0: 3c 65 78 70 72 2d 6c 69 73 74 3e 5d 0a 5b 48 41  <expr-list>].[HA
f9e0: 56 49 4e 47 20 3c 65 78 70 72 3e 5d 0a 5b 3c 63  VING <expr>].[<c
f9f0: 6f 6d 70 6f 75 6e 64 2d 6f 70 3e 20 3c 73 65 6c  ompound-op> <sel
fa00: 65 63 74 3e 5d 2a 0a 5b 4f 52 44 45 52 20 42 59  ect>]*.[ORDER BY
fa10: 20 3c 73 6f 72 74 2d 65 78 70 72 2d 6c 69 73 74   <sort-expr-list
fa20: 3e 5d 0a 5b 4c 49 4d 49 54 20 3c 69 6e 74 65 67  >].[LIMIT <integ
fa30: 65 72 3e 20 5b 4c 50 20 4f 46 46 53 45 54 20 7c  er> [LP OFFSET |
fa40: 20 2c 20 52 50 20 3c 69 6e 74 65 67 65 72 3e 5d   , RP <integer>]
fa50: 5d 0a 7d 20 7b 72 65 73 75 6c 74 7d 20 7b 0a 3c  ].} {result} {.<
fa60: 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 3e 20 5b  result-column> [
fa70: 2c 20 3c 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e  , <result-column
fa80: 3e 5d 2a 0a 7d 20 7b 72 65 73 75 6c 74 2d 63 6f  >]*.} {result-co
fa90: 6c 75 6d 6e 7d 20 7b 0a 53 54 41 52 20 7c 20 3c  lumn} {.STAR | <
faa0: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20 53 54  table-name> . ST
fab0: 41 52 20 7c 20 3c 65 78 70 72 3e 20 5b 20 5b 41  AR | <expr> [ [A
fac0: 53 5d 20 3c 73 74 72 69 6e 67 3e 20 5d 0a 7d 20  S] <string> ].} 
fad0: 7b 74 61 62 6c 65 2d 6c 69 73 74 7d 20 7b 0a 3c  {table-list} {.<
fae0: 74 61 62 6c 65 3e 20 5b 3c 6a 6f 69 6e 2d 6f 70  table> [<join-op
faf0: 3e 20 3c 74 61 62 6c 65 3e 20 3c 6a 6f 69 6e 2d  > <table> <join-
fb00: 61 72 67 73 3e 5d 2a 0a 7d 20 7b 74 61 62 6c 65  args>]*.} {table
fb10: 7d 20 7b 0a 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e  } {.<table-name>
fb20: 20 5b 41 53 20 3c 61 6c 69 61 73 3e 5d 20 7c 0a   [AS <alias>] |.
fb30: 28 20 3c 73 65 6c 65 63 74 3e 20 29 20 5b 41 53  ( <select> ) [AS
fb40: 20 3c 61 6c 69 61 73 3e 5d 0a 7d 20 7b 6a 6f 69   <alias>].} {joi
fb50: 6e 2d 6f 70 7d 20 7b 0a 2c 20 7c 20 5b 4e 41 54  n-op} {., | [NAT
fb60: 55 52 41 4c 5d 20 5b 4c 45 46 54 20 7c 20 52 49  URAL] [LEFT | RI
fb70: 47 48 54 20 7c 20 46 55 4c 4c 5d 20 5b 4f 55 54  GHT | FULL] [OUT
fb80: 45 52 20 7c 20 49 4e 4e 45 52 20 7c 20 43 52 4f  ER | INNER | CRO
fb90: 53 53 5d 20 4a 4f 49 4e 0a 7d 20 7b 6a 6f 69 6e  SS] JOIN.} {join
fba0: 2d 61 72 67 73 7d 20 7b 0a 5b 4f 4e 20 3c 65 78  -args} {.[ON <ex
fbb0: 70 72 3e 5d 20 5b 55 53 49 4e 47 20 28 20 3c 69  pr>] [USING ( <i
fbc0: 64 2d 6c 69 73 74 3e 20 29 5d 0a 7d 20 7b 73 6f  d-list> )].} {so
fbd0: 72 74 2d 65 78 70 72 2d 6c 69 73 74 7d 20 7b 0a  rt-expr-list} {.
fbe0: 3c 65 78 70 72 3e 20 5b 3c 73 6f 72 74 2d 6f 72  <expr> [<sort-or
fbf0: 64 65 72 3e 5d 20 5b 2c 20 3c 65 78 70 72 3e 20  der>] [, <expr> 
fc00: 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e 5d 5d 2a  [<sort-order>]]*
fc10: 0a 7d 20 7b 73 6f 72 74 2d 6f 72 64 65 72 7d 20  .} {sort-order} 
fc20: 7b 0a 5b 20 43 4f 4c 4c 41 54 45 20 3c 63 6f 6c  {.[ COLLATE <col
fc30: 6c 61 74 69 6f 6e 2d 6e 61 6d 65 3e 20 5d 20 5b  lation-name> ] [
fc40: 20 41 53 43 20 7c 20 44 45 53 43 20 5d 0a 7d 20   ASC | DESC ].} 
fc50: 7b 63 6f 6d 70 6f 75 6e 64 5f 6f 70 7d 20 7b 0a  {compound_op} {.
fc60: 55 4e 49 4f 4e 20 7c 20 55 4e 49 4f 4e 20 41 4c  UNION | UNION AL
fc70: 4c 20 7c 20 49 4e 54 45 52 53 45 43 54 20 7c 20  L | INTERSECT | 
fc80: 45 58 43 45 50 54 0a 7d 0a 0a 70 75 74 73 20 7b  EXCEPT.}..puts {
fc90: 0a 3c 70 3e 54 68 65 20 53 45 4c 45 43 54 20 73  .<p>The SELECT s
fca0: 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73 65 64  tatement is used
fcb0: 20 74 6f 20 71 75 65 72 79 20 74 68 65 20 64 61   to query the da
fcc0: 74 61 62 61 73 65 2e 20 20 54 68 65 0a 72 65 73  tabase.  The.res
fcd0: 75 6c 74 20 6f 66 20 61 20 53 45 4c 45 43 54 20  ult of a SELECT 
fce0: 69 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20  is zero or more 
fcf0: 72 6f 77 73 20 6f 66 20 64 61 74 61 20 77 68 65  rows of data whe
fd00: 72 65 20 65 61 63 68 20 72 6f 77 0a 68 61 73 20  re each row.has 
fd10: 61 20 66 69 78 65 64 20 6e 75 6d 62 65 72 20 6f  a fixed number o
fd20: 66 20 63 6f 6c 75 6d 6e 73 2e 20 20 54 68 65 20  f columns.  The 
fd30: 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
fd40: 73 20 69 6e 20 74 68 65 0a 72 65 73 75 6c 74 20  s in the.result 
fd50: 69 73 20 73 70 65 63 69 66 69 65 64 20 62 79 20  is specified by 
fd60: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 6c  the expression l
fd70: 69 73 74 20 69 6e 20 62 65 74 77 65 65 6e 20 74  ist in between t
fd80: 68 65 0a 53 45 4c 45 43 54 20 61 6e 64 20 46 52  he.SELECT and FR
fd90: 4f 4d 20 6b 65 79 77 6f 72 64 73 2e 20 20 41 6e  OM keywords.  An
fda0: 79 20 61 72 62 69 74 72 61 72 79 20 65 78 70 72  y arbitrary expr
fdb0: 65 73 73 69 6f 6e 20 63 61 6e 20 62 65 20 75 73  ession can be us
fdc0: 65 64 0a 61 73 20 61 20 72 65 73 75 6c 74 2e 20  ed.as a result. 
fdd0: 20 49 66 20 61 20 72 65 73 75 6c 74 20 65 78 70   If a result exp
fde0: 72 65 73 73 69 6f 6e 20 69 73 20 7d 0a 70 75 74  ression is }.put
fdf0: 73 20 22 5b 4f 70 65 72 61 74 6f 72 20 2a 5d 20  s "[Operator *] 
fe00: 74 68 65 6e 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73  then all columns
fe10: 20 6f 66 20 61 6c 6c 20 74 61 62 6c 65 73 20 61   of all tables a
fe20: 72 65 20 73 75 62 73 74 69 74 75 74 65 64 22 0a  re substituted".
fe30: 70 75 74 73 20 7b 66 6f 72 20 74 68 61 74 20 6f  puts {for that o
fe40: 6e 65 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20  ne expression.  
fe50: 49 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  If the expressio
fe60: 6e 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  n is the name of
fe70: 7d 0a 70 75 74 73 20 22 61 20 74 61 62 6c 65 20  }.puts "a table 
fe80: 66 6f 6c 6c 6f 77 65 64 20 62 79 20 5b 4f 70 65  followed by [Ope
fe90: 72 61 74 6f 72 20 2e 2a 5d 20 74 68 65 6e 20 74  rator .*] then t
fea0: 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 6c 6c  he result is all
feb0: 20 63 6f 6c 75 6d 6e 73 22 0a 70 75 74 73 20 7b   columns".puts {
fec0: 69 6e 20 74 68 61 74 20 6f 6e 65 20 74 61 62 6c  in that one tabl
fed0: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44  e.</p>..<p>The D
fee0: 49 53 54 49 4e 43 54 20 6b 65 79 77 6f 72 64 20  ISTINCT keyword 
fef0: 63 61 75 73 65 73 20 61 20 73 75 62 73 65 74 20  causes a subset 
ff00: 6f 66 20 72 65 73 75 6c 74 20 72 6f 77 73 20 74  of result rows t
ff10: 6f 20 62 65 20 72 65 74 75 72 6e 65 64 2c 20 0a  o be returned, .
ff20: 69 6e 20 77 68 69 63 68 20 65 61 63 68 20 72 65  in which each re
ff30: 73 75 6c 74 20 72 6f 77 20 69 73 20 64 69 66 66  sult row is diff
ff40: 65 72 65 6e 74 2e 20 20 4e 55 4c 4c 20 76 61 6c  erent.  NULL val
ff50: 75 65 73 20 61 72 65 20 6e 6f 74 20 74 72 65 61  ues are not trea
ff60: 74 65 64 20 61 73 20 0a 64 69 73 74 69 6e 63 74  ted as .distinct
ff70: 20 66 72 6f 6d 20 65 61 63 68 20 6f 74 68 65 72   from each other
ff80: 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 62  .  The default b
ff90: 65 68 61 76 69 6f 72 20 69 73 20 74 68 61 74 20  ehavior is that 
ffa0: 61 6c 6c 20 72 65 73 75 6c 74 20 72 6f 77 73 20  all result rows 
ffb0: 0a 62 65 20 72 65 74 75 72 6e 65 64 2c 20 77 68  .be returned, wh
ffc0: 69 63 68 20 63 61 6e 20 62 65 20 6d 61 64 65 20  ich can be made 
ffd0: 65 78 70 6c 69 63 69 74 20 77 69 74 68 20 74 68  explicit with th
ffe0: 65 20 6b 65 79 77 6f 72 64 20 41 4c 4c 2e 3c 2f  e keyword ALL.</
fff0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 71 75 65 72 79  p>..<p>The query
10000 20 69 73 20 65 78 65 63 75 74 65 64 20 61 67 61   is executed aga
10010 69 6e 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  inst one or more
10020 20 74 61 62 6c 65 73 20 73 70 65 63 69 66 69 65   tables specifie
10030 64 20 61 66 74 65 72 0a 74 68 65 20 46 52 4f 4d  d after.the FROM
10040 20 6b 65 79 77 6f 72 64 2e 20 20 49 66 20 6d 75   keyword.  If mu
10050 6c 74 69 70 6c 65 20 74 61 62 6c 65 73 20 6e 61  ltiple tables na
10060 6d 65 73 20 61 72 65 20 73 65 70 61 72 61 74 65  mes are separate
10070 64 20 62 79 20 63 6f 6d 6d 61 73 2c 0a 74 68 65  d by commas,.the
10080 6e 20 74 68 65 20 71 75 65 72 79 20 69 73 20 61  n the query is a
10090 67 61 69 6e 73 74 20 74 68 65 20 63 72 6f 73 73  gainst the cross
100a0 20 6a 6f 69 6e 20 6f 66 20 74 68 65 20 76 61 72   join of the var
100b0 69 6f 75 73 20 74 61 62 6c 65 73 2e 0a 54 68 65  ious tables..The
100c0 20 66 75 6c 6c 20 53 51 4c 2d 39 32 20 6a 6f 69   full SQL-92 joi
100d0 6e 20 73 79 6e 74 61 78 20 63 61 6e 20 61 6c 73  n syntax can als
100e0 6f 20 62 65 20 75 73 65 64 20 74 6f 20 73 70 65  o be used to spe
100f0 63 69 66 79 20 6a 6f 69 6e 73 2e 0a 41 20 73 75  cify joins..A su
10100 62 2d 71 75 65 72 79 0a 69 6e 20 70 61 72 65 6e  b-query.in paren
10110 74 68 65 73 65 73 20 6d 61 79 20 62 65 20 73 75  theses may be su
10120 62 73 74 69 74 75 74 65 64 20 66 6f 72 20 61 6e  bstituted for an
10130 79 20 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20  y table name in 
10140 74 68 65 20 46 52 4f 4d 20 63 6c 61 75 73 65 2e  the FROM clause.
10150 0a 54 68 65 20 65 6e 74 69 72 65 20 46 52 4f 4d  .The entire FROM
10160 20 63 6c 61 75 73 65 20 6d 61 79 20 62 65 20 6f   clause may be o
10170 6d 69 74 74 65 64 2c 20 69 6e 20 77 68 69 63 68  mitted, in which
10180 20 63 61 73 65 20 74 68 65 20 72 65 73 75 6c 74   case the result
10190 20 69 73 20 61 0a 73 69 6e 67 6c 65 20 72 6f 77   is a.single row
101a0 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 74   consisting of t
101b0 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65  he values of the
101c0 20 65 78 70 72 65 73 73 69 6f 6e 20 6c 69 73 74   expression list
101d0 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 57  ..</p>..<p>The W
101e0 48 45 52 45 20 63 6c 61 75 73 65 20 63 61 6e 20  HERE clause can 
101f0 62 65 20 75 73 65 64 20 74 6f 20 6c 69 6d 69 74  be used to limit
10200 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72   the number of r
10210 6f 77 73 20 6f 76 65 72 0a 77 68 69 63 68 20 74  ows over.which t
10220 68 65 20 71 75 65 72 79 20 6f 70 65 72 61 74 65  he query operate
10230 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 47  s.</p>..<p>The G
10240 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65 73 20  ROUP BY clauses 
10250 63 61 75 73 65 73 20 6f 6e 65 20 6f 72 20 6d 6f  causes one or mo
10260 72 65 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72  re rows of the r
10270 65 73 75 6c 74 20 74 6f 0a 62 65 20 63 6f 6d 62  esult to.be comb
10280 69 6e 65 64 20 69 6e 74 6f 20 61 20 73 69 6e 67  ined into a sing
10290 6c 65 20 72 6f 77 20 6f 66 20 6f 75 74 70 75 74  le row of output
102a0 2e 20 20 54 68 69 73 20 69 73 20 65 73 70 65 63  .  This is espec
102b0 69 61 6c 6c 79 20 75 73 65 66 75 6c 0a 77 68 65  ially useful.whe
102c0 6e 20 74 68 65 20 72 65 73 75 6c 74 20 63 6f 6e  n the result con
102d0 74 61 69 6e 73 20 61 67 67 72 65 67 61 74 65 20  tains aggregate 
102e0 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 65 20  functions.  The 
102f0 65 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 0a 74  expressions in.t
10300 68 65 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75  he GROUP BY clau
10310 73 65 20 64 6f 20 3c 65 6d 3e 6e 6f 74 3c 2f 65  se do <em>not</e
10320 6d 3e 20 68 61 76 65 20 74 6f 20 62 65 20 65 78  m> have to be ex
10330 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 0a 61  pressions that.a
10340 70 70 65 61 72 20 69 6e 20 74 68 65 20 72 65 73  ppear in the res
10350 75 6c 74 2e 20 20 54 68 65 20 48 41 56 49 4e 47  ult.  The HAVING
10360 20 63 6c 61 75 73 65 20 69 73 20 73 69 6d 69 6c   clause is simil
10370 61 72 20 74 6f 20 57 48 45 52 45 20 65 78 63 65  ar to WHERE exce
10380 70 74 0a 74 68 61 74 20 48 41 56 49 4e 47 20 61  pt.that HAVING a
10390 70 70 6c 69 65 73 20 61 66 74 65 72 20 67 72 6f  pplies after gro
103a0 75 70 69 6e 67 20 68 61 73 20 6f 63 63 75 72 72  uping has occurr
103b0 65 64 2e 20 20 54 68 65 20 48 41 56 49 4e 47 20  ed.  The HAVING 
103c0 65 78 70 72 65 73 73 69 6f 6e 0a 6d 61 79 20 72  expression.may r
103d0 65 66 65 72 20 74 6f 20 76 61 6c 75 65 73 2c 20  efer to values, 
103e0 65 76 65 6e 20 61 67 67 72 65 67 61 74 65 20 66  even aggregate f
103f0 75 6e 63 74 69 6f 6e 73 2c 20 74 68 61 74 20 61  unctions, that a
10400 72 65 20 6e 6f 74 20 69 6e 20 74 68 65 20 72 65  re not in the re
10410 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  sult.</p>..<p>Th
10420 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73  e ORDER BY claus
10430 65 20 63 61 75 73 65 73 20 74 68 65 20 6f 75 74  e causes the out
10440 70 75 74 20 72 6f 77 73 20 74 6f 20 62 65 20 73  put rows to be s
10450 6f 72 74 65 64 2e 20 20 0a 54 68 65 20 61 72 67  orted.  .The arg
10460 75 6d 65 6e 74 20 74 6f 20 4f 52 44 45 52 20 42  ument to ORDER B
10470 59 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 65  Y is a list of e
10480 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 20  xpressions that 
10490 61 72 65 20 75 73 65 64 20 61 73 20 74 68 65 0a  are used as the.
104a0 6b 65 79 20 66 6f 72 20 74 68 65 20 73 6f 72 74  key for the sort
104b0 2e 20 20 54 68 65 20 65 78 70 72 65 73 73 69 6f  .  The expressio
104c0 6e 73 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 74  ns do not have t
104d0 6f 20 62 65 20 70 61 72 74 20 6f 66 20 74 68 65  o be part of the
104e0 0a 72 65 73 75 6c 74 20 66 6f 72 20 61 20 73 69  .result for a si
104f0 6d 70 6c 65 20 53 45 4c 45 43 54 2c 20 62 75 74  mple SELECT, but
10500 20 69 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53   in a compound S
10510 45 4c 45 43 54 20 65 61 63 68 20 73 6f 72 74 0a  ELECT each sort.
10520 65 78 70 72 65 73 73 69 6f 6e 20 6d 75 73 74 20  expression must 
10530 65 78 61 63 74 6c 79 20 6d 61 74 63 68 20 6f 6e  exactly match on
10540 65 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20  e of the result 
10550 63 6f 6c 75 6d 6e 73 2e 20 20 45 61 63 68 0a 73  columns.  Each.s
10560 6f 72 74 20 65 78 70 72 65 73 73 69 6f 6e 20 6d  ort expression m
10570 61 79 20 62 65 20 6f 70 74 69 6f 6e 61 6c 6c 79  ay be optionally
10580 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 43   followed by a C
10590 4f 4c 4c 41 54 45 20 6b 65 79 77 6f 72 64 20 61  OLLATE keyword a
105a0 6e 64 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  nd.the name of a
105b0 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74   collating funct
105c0 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 6f 72 64  ion used for ord
105d0 65 72 69 6e 67 20 74 65 78 74 20 61 6e 64 2f 6f  ering text and/o
105e0 72 0a 6b 65 79 77 6f 72 64 73 20 41 53 43 20 6f  r.keywords ASC o
105f0 72 20 44 45 53 43 20 74 6f 20 73 70 65 63 69 66  r DESC to specif
10600 79 20 74 68 65 20 73 6f 72 74 20 6f 72 64 65 72  y the sort order
10610 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4c 49  .</p>..<p>The LI
10620 4d 49 54 20 63 6c 61 75 73 65 20 70 6c 61 63 65  MIT clause place
10630 73 20 61 6e 20 75 70 70 65 72 20 62 6f 75 6e 64  s an upper bound
10640 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   on the number o
10650 66 20 72 6f 77 73 0a 72 65 74 75 72 6e 65 64 20  f rows.returned 
10660 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20  in the result.  
10670 41 20 6e 65 67 61 74 69 76 65 20 4c 49 4d 49 54  A negative LIMIT
10680 20 69 6e 64 69 63 61 74 65 73 20 6e 6f 20 75 70   indicates no up
10690 70 65 72 20 62 6f 75 6e 64 2e 0a 54 68 65 20 6f  per bound..The o
106a0 70 74 69 6f 6e 61 6c 20 4f 46 46 53 45 54 20 66  ptional OFFSET f
106b0 6f 6c 6c 6f 77 69 6e 67 20 4c 49 4d 49 54 20 73  ollowing LIMIT s
106c0 70 65 63 69 66 69 65 73 20 68 6f 77 20 6d 61 6e  pecifies how man
106d0 79 0a 72 6f 77 73 20 74 6f 20 73 6b 69 70 20 61  y.rows to skip a
106e0 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20  t the beginning 
106f0 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65  of the result se
10700 74 2e 0a 49 6e 20 61 20 63 6f 6d 70 6f 75 6e 64  t..In a compound
10710 20 71 75 65 72 79 2c 20 74 68 65 20 4c 49 4d 49   query, the LIMI
10720 54 20 63 6c 61 75 73 65 20 6d 61 79 20 6f 6e 6c  T clause may onl
10730 79 20 61 70 70 65 61 72 20 6f 6e 20 74 68 65 0a  y appear on the.
10740 66 69 6e 61 6c 20 53 45 4c 45 43 54 20 73 74 61  final SELECT sta
10750 74 65 6d 65 6e 74 2e 0a 54 68 65 20 6c 69 6d 69  tement..The limi
10760 74 20 69 73 20 61 70 70 6c 69 65 64 20 74 6f 20  t is applied to 
10770 74 68 65 20 65 6e 74 69 72 65 20 71 75 65 72 79  the entire query
10780 20 6e 6f 74 0a 74 6f 20 74 68 65 20 69 6e 64 69   not.to the indi
10790 76 69 64 75 61 6c 20 53 45 4c 45 43 54 20 73 74  vidual SELECT st
107a0 61 74 65 6d 65 6e 74 20 74 6f 20 77 68 69 63 68  atement to which
107b0 20 69 74 20 69 73 20 61 74 74 61 63 68 65 64 2e   it is attached.
107c0 0a 4e 6f 74 65 20 74 68 61 74 20 69 66 20 74 68  .Note that if th
107d0 65 20 4f 46 46 53 45 54 20 6b 65 79 77 6f 72 64  e OFFSET keyword
107e0 20 69 73 20 75 73 65 64 20 69 6e 20 74 68 65 20   is used in the 
107f0 4c 49 4d 49 54 20 63 6c 61 75 73 65 2c 20 74 68  LIMIT clause, th
10800 65 6e 20 74 68 65 0a 6c 69 6d 69 74 20 69 73 20  en the.limit is 
10810 74 68 65 20 66 69 72 73 74 20 6e 75 6d 62 65 72  the first number
10820 20 61 6e 64 20 74 68 65 20 6f 66 66 73 65 74 20   and the offset 
10830 69 73 20 74 68 65 20 73 65 63 6f 6e 64 20 6e 75  is the second nu
10840 6d 62 65 72 2e 20 20 49 66 20 61 0a 63 6f 6d 6d  mber.  If a.comm
10850 61 20 69 73 20 75 73 65 64 20 69 6e 73 74 65 61  a is used instea
10860 64 20 6f 66 20 74 68 65 20 4f 46 46 53 45 54 20  d of the OFFSET 
10870 6b 65 79 77 6f 72 64 2c 20 74 68 65 6e 20 74 68  keyword, then th
10880 65 20 6f 66 66 73 65 74 20 69 73 20 74 68 65 0a  e offset is the.
10890 66 69 72 73 74 20 6e 75 6d 62 65 72 20 61 6e 64  first number and
108a0 20 74 68 65 20 6c 69 6d 69 74 20 69 73 20 74 68   the limit is th
108b0 65 20 73 65 63 6f 6e 64 20 6e 75 6d 62 65 72 2e  e second number.
108c0 20 20 54 68 69 73 20 73 65 65 6d 69 6e 67 0a 63    This seeming.c
108d0 6f 6e 74 72 61 64 69 74 69 6f 6e 20 69 73 20 69  ontradition is i
108e0 6e 74 65 6e 74 69 6f 6e 61 6c 20 2d 20 69 74 20  ntentional - it 
108f0 6d 61 78 69 6d 69 7a 65 73 20 63 6f 6d 70 61 74  maximizes compat
10900 69 62 69 6c 69 74 79 20 77 69 74 68 20 6c 65 67  ibility with leg
10910 61 63 79 0a 53 51 4c 20 64 61 74 61 62 61 73 65  acy.SQL database
10920 20 73 79 73 74 65 6d 73 2e 0a 3c 2f 70 3e 0a 0a   systems..</p>..
10930 3c 70 3e 41 20 63 6f 6d 70 6f 75 6e 64 20 53 45  <p>A compound SE
10940 4c 45 43 54 20 69 73 20 66 6f 72 6d 65 64 20 66  LECT is formed f
10950 72 6f 6d 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20  rom two or more 
10960 73 69 6d 70 6c 65 20 53 45 4c 45 43 54 73 20 63  simple SELECTs c
10970 6f 6e 6e 65 63 74 65 64 0a 62 79 20 6f 6e 65 20  onnected.by one 
10980 6f 66 20 74 68 65 20 6f 70 65 72 61 74 6f 72 73  of the operators
10990 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41 4c   UNION, UNION AL
109a0 4c 2c 20 49 4e 54 45 52 53 45 43 54 2c 20 6f 72  L, INTERSECT, or
109b0 20 45 58 43 45 50 54 2e 20 20 49 6e 0a 61 20 63   EXCEPT.  In.a c
109c0 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 2c 20  ompound SELECT, 
109d0 61 6c 6c 20 74 68 65 20 63 6f 6e 73 74 69 74 75  all the constitu
109e0 65 6e 74 20 53 45 4c 45 43 54 73 20 6d 75 73 74  ent SELECTs must
109f0 20 73 70 65 63 69 66 79 20 74 68 65 0a 73 61 6d   specify the.sam
10a00 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 65 73 75  e number of resu
10a10 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20 20 54 68 65  lt columns.  The
10a20 72 65 20 6d 61 79 20 62 65 20 6f 6e 6c 79 20 61  re may be only a
10a30 20 73 69 6e 67 6c 65 20 4f 52 44 45 52 20 42 59   single ORDER BY
10a40 0a 63 6c 61 75 73 65 20 61 74 20 74 68 65 20 65  .clause at the e
10a50 6e 64 20 6f 66 20 74 68 65 20 63 6f 6d 70 6f 75  nd of the compou
10a60 6e 64 20 53 45 4c 45 43 54 2e 20 20 54 68 65 20  nd SELECT.  The 
10a70 55 4e 49 4f 4e 20 61 6e 64 20 55 4e 49 4f 4e 20  UNION and UNION 
10a80 41 4c 4c 0a 6f 70 65 72 61 74 6f 72 73 20 63 6f  ALL.operators co
10a90 6d 62 69 6e 65 20 74 68 65 20 72 65 73 75 6c 74  mbine the result
10aa0 73 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54 73  s of the SELECTs
10ab0 20 74 6f 20 74 68 65 20 72 69 67 68 74 20 61 6e   to the right an
10ac0 64 20 6c 65 66 74 20 69 6e 74 6f 0a 61 20 73 69  d left into.a si
10ad0 6e 67 6c 65 20 62 69 67 20 74 61 62 6c 65 2e 20  ngle big table. 
10ae0 20 54 68 65 20 64 69 66 66 65 72 65 6e 63 65 20   The difference 
10af0 69 73 20 74 68 61 74 20 69 6e 20 55 4e 49 4f 4e  is that in UNION
10b00 20 61 6c 6c 20 72 65 73 75 6c 74 20 72 6f 77 73   all result rows
10b10 0a 61 72 65 20 64 69 73 74 69 6e 63 74 20 77 68  .are distinct wh
10b20 65 72 65 20 69 6e 20 55 4e 49 4f 4e 20 41 4c 4c  ere in UNION ALL
10b30 20 74 68 65 72 65 20 6d 61 79 20 62 65 20 64 75   there may be du
10b40 70 6c 69 63 61 74 65 73 2e 0a 54 68 65 20 49 4e  plicates..The IN
10b50 54 45 52 53 45 43 54 20 6f 70 65 72 61 74 6f 72  TERSECT operator
10b60 20 74 61 6b 65 73 20 74 68 65 20 69 6e 74 65 72   takes the inter
10b70 73 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 72  section of the r
10b80 65 73 75 6c 74 73 20 6f 66 20 74 68 65 0a 6c 65  esults of the.le
10b90 66 74 20 61 6e 64 20 72 69 67 68 74 20 53 45 4c  ft and right SEL
10ba0 45 43 54 73 2e 20 20 45 58 43 45 50 54 20 74 61  ECTs.  EXCEPT ta
10bb0 6b 65 73 20 74 68 65 20 72 65 73 75 6c 74 20 6f  kes the result o
10bc0 66 20 6c 65 66 74 20 53 45 4c 45 43 54 20 61 66  f left SELECT af
10bd0 74 65 72 0a 72 65 6d 6f 76 69 6e 67 20 74 68 65  ter.removing the
10be0 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 20   results of the 
10bf0 72 69 67 68 74 20 53 45 4c 45 43 54 2e 20 20 57  right SELECT.  W
10c00 68 65 6e 20 74 68 72 65 65 20 6f 72 20 6d 6f 72  hen three or mor
10c10 65 20 53 45 4c 45 43 54 73 0a 61 72 65 20 63 6f  e SELECTs.are co
10c20 6e 6e 65 63 74 65 64 20 69 6e 74 6f 20 61 20 63  nnected into a c
10c30 6f 6d 70 6f 75 6e 64 2c 20 74 68 65 79 20 67 72  ompound, they gr
10c40 6f 75 70 20 66 72 6f 6d 20 6c 65 66 74 20 74 6f  oup from left to
10c50 20 72 69 67 68 74 2e 3c 2f 70 3e 0a 7d 0a 0a 0a   right.</p>.}...
10c60 53 65 63 74 69 6f 6e 20 55 50 44 41 54 45 20 75  Section UPDATE u
10c70 70 64 61 74 65 0a 0a 53 79 6e 74 61 78 20 7b 73  pdate..Syntax {s
10c80 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
10c90 55 50 44 41 54 45 20 5b 20 4f 52 20 3c 63 6f 6e  UPDATE [ OR <con
10ca0 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e  flict-algorithm>
10cb0 20 5d 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61   ] [<database-na
10cc0 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61  me> .] <table-na
10cd0 6d 65 3e 0a 53 45 54 20 3c 61 73 73 69 67 6e 6d  me>.SET <assignm
10ce0 65 6e 74 3e 20 5b 2c 20 3c 61 73 73 69 67 6e 6d  ent> [, <assignm
10cf0 65 6e 74 3e 5d 2a 0a 5b 57 48 45 52 45 20 3c 65  ent>]*.[WHERE <e
10d00 78 70 72 3e 5d 0a 7d 20 7b 61 73 73 69 67 6e 6d  xpr>].} {assignm
10d10 65 6e 74 7d 20 7b 0a 3c 63 6f 6c 75 6d 6e 2d 6e  ent} {.<column-n
10d20 61 6d 65 3e 20 3d 20 3c 65 78 70 72 3e 0a 7d 0a  ame> = <expr>.}.
10d30 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 55  .puts {.<p>The U
10d40 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20  PDATE statement 
10d50 69 73 20 75 73 65 64 20 74 6f 20 63 68 61 6e 67  is used to chang
10d60 65 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 63  e the value of c
10d70 6f 6c 75 6d 6e 73 20 69 6e 20 0a 73 65 6c 65 63  olumns in .selec
10d80 74 65 64 20 72 6f 77 73 20 6f 66 20 61 20 74 61  ted rows of a ta
10d90 62 6c 65 2e 20 20 45 61 63 68 20 61 73 73 69 67  ble.  Each assig
10da0 6e 6d 65 6e 74 20 69 6e 20 61 6e 20 55 50 44 41  nment in an UPDA
10db0 54 45 20 73 70 65 63 69 66 69 65 73 0a 61 20 63  TE specifies.a c
10dc0 6f 6c 75 6d 6e 20 6e 61 6d 65 20 74 6f 20 74 68  olumn name to th
10dd0 65 20 6c 65 66 74 20 6f 66 20 74 68 65 20 65 71  e left of the eq
10de0 75 61 6c 73 20 73 69 67 6e 20 61 6e 64 20 61 6e  uals sign and an
10df0 20 61 72 62 69 74 72 61 72 79 20 65 78 70 72 65   arbitrary expre
10e00 73 73 69 6f 6e 0a 74 6f 20 74 68 65 20 72 69 67  ssion.to the rig
10e10 68 74 2e 20 20 54 68 65 20 65 78 70 72 65 73 73  ht.  The express
10e20 69 6f 6e 73 20 6d 61 79 20 75 73 65 20 74 68 65  ions may use the
10e30 20 76 61 6c 75 65 73 20 6f 66 20 6f 74 68 65 72   values of other
10e40 20 63 6f 6c 75 6d 6e 73 2e 0a 41 6c 6c 20 65 78   columns..All ex
10e50 70 72 65 73 73 69 6f 6e 73 20 61 72 65 20 65 76  pressions are ev
10e60 61 6c 75 61 74 65 64 20 62 65 66 6f 72 65 20 61  aluated before a
10e70 6e 79 20 61 73 73 69 67 6e 6d 65 6e 74 73 20 61  ny assignments a
10e80 72 65 20 6d 61 64 65 2e 0a 41 20 57 48 45 52 45  re made..A WHERE
10e90 20 63 6c 61 75 73 65 20 63 61 6e 20 62 65 20 75   clause can be u
10ea0 73 65 64 20 74 6f 20 72 65 73 74 72 69 63 74 20  sed to restrict 
10eb0 77 68 69 63 68 20 72 6f 77 73 20 61 72 65 20 75  which rows are u
10ec0 70 64 61 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  pdated.</p>..<p>
10ed0 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e  The optional con
10ee0 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c  flict-clause all
10ef0 6f 77 73 20 74 68 65 20 73 70 65 63 69 66 69 63  ows the specific
10f00 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65  ation of an alte
10f10 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74 72 61 69  rnative.constrai
10f20 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  nt conflict reso
10f30 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
10f40 20 74 6f 20 75 73 65 20 64 75 72 69 6e 67 20 74   to use during t
10f50 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e  his one command.
10f60 0a 53 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e  .See the section
10f70 20 74 69 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d   titled.<a href=
10f80 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43  "#conflict">ON C
10f90 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20  ONFLICT</a> for 
10fa0 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
10fb0 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 0a  mation.</p>.}...
10fc0 53 65 63 74 69 6f 6e 20 56 41 43 55 55 4d 20 76  Section VACUUM v
10fd0 61 63 75 75 6d 0a 0a 53 79 6e 74 61 78 20 7b 73  acuum..Syntax {s
10fe0 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
10ff0 56 41 43 55 55 4d 20 5b 3c 69 6e 64 65 78 2d 6f  VACUUM [<index-o
11000 72 2d 74 61 62 6c 65 2d 6e 61 6d 65 3e 5d 0a 7d  r-table-name>].}
11010 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20  ..puts {.<p>The 
11020 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 69  VACUUM command i
11030 73 20 61 6e 20 53 51 4c 69 74 65 20 65 78 74 65  s an SQLite exte
11040 6e 73 69 6f 6e 20 6d 6f 64 65 6c 65 64 20 61 66  nsion modeled af
11050 74 65 72 20 61 20 73 69 6d 69 6c 61 72 0a 63 6f  ter a similar.co
11060 6d 6d 61 6e 64 20 66 6f 75 6e 64 20 69 6e 20 50  mmand found in P
11070 6f 73 74 67 72 65 53 51 4c 2e 20 20 49 66 20 56  ostgreSQL.  If V
11080 41 43 55 55 4d 20 69 73 20 69 6e 76 6f 6b 65 64  ACUUM is invoked
11090 20 77 69 74 68 20 74 68 65 20 6e 61 6d 65 20 6f   with the name o
110a0 66 20 61 0a 74 61 62 6c 65 20 6f 72 20 69 6e 64  f a.table or ind
110b0 65 78 20 74 68 65 6e 20 69 74 20 69 73 20 73 75  ex then it is su
110c0 70 70 6f 73 65 20 74 6f 20 63 6c 65 61 6e 20 75  ppose to clean u
110d0 70 20 74 68 65 20 6e 61 6d 65 64 20 74 61 62 6c  p the named tabl
110e0 65 20 6f 72 20 69 6e 64 65 78 2e 0a 49 6e 20 76  e or index..In v
110f0 65 72 73 69 6f 6e 20 31 2e 30 20 6f 66 20 53 51  ersion 1.0 of SQ
11100 4c 69 74 65 2c 20 74 68 65 20 56 41 43 55 55 4d  Lite, the VACUUM
11110 20 63 6f 6d 6d 61 6e 64 20 77 6f 75 6c 64 20 69   command would i
11120 6e 76 6f 6b 65 20 0a 3c 62 3e 67 64 62 6d 5f 72  nvoke .<b>gdbm_r
11130 65 6f 72 67 61 6e 69 7a 65 28 29 3c 2f 62 3e 20  eorganize()</b> 
11140 74 6f 20 63 6c 65 61 6e 20 75 70 20 74 68 65 20  to clean up the 
11150 62 61 63 6b 65 6e 64 20 64 61 74 61 62 61 73 65  backend database
11160 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a   file.</p>..<p>.
11170 56 41 43 55 55 4d 20 62 65 63 61 6d 65 20 61 20  VACUUM became a 
11180 6e 6f 2d 6f 70 20 77 68 65 6e 20 74 68 65 20 47  no-op when the G
11190 44 42 4d 20 62 61 63 6b 65 6e 64 20 77 61 73 20  DBM backend was 
111a0 72 65 6d 6f 76 65 64 20 66 72 6f 6d 0a 53 51 4c  removed from.SQL
111b0 49 54 45 20 69 6e 20 76 65 72 73 69 6f 6e 20 32  ITE in version 2
111c0 2e 30 2e 30 2e 0a 56 41 43 55 55 4d 20 77 61 73  .0.0..VACUUM was
111d0 20 72 65 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69   reimplemented i
111e0 6e 20 76 65 72 73 69 6f 6e 20 32 2e 38 2e 31 2e  n version 2.8.1.
111f0 0a 54 68 65 20 69 6e 64 65 78 20 6f 72 20 74 61  .The index or ta
11200 62 6c 65 20 6e 61 6d 65 20 61 72 67 75 6d 65 6e  ble name argumen
11210 74 20 69 73 20 6e 6f 77 20 69 67 6e 6f 72 65 64  t is now ignored
11220 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20  ..</p>..<p>When 
11230 61 6e 20 6f 62 6a 65 63 74 20 28 74 61 62 6c 65  an object (table
11240 2c 20 69 6e 64 65 78 2c 20 6f 72 20 74 72 69 67  , index, or trig
11250 67 65 72 29 20 69 73 20 64 72 6f 70 70 65 64 20  ger) is dropped 
11260 66 72 6f 6d 20 74 68 65 20 0a 64 61 74 61 62 61  from the .databa
11270 73 65 2c 20 69 74 20 6c 65 61 76 65 73 20 62 65  se, it leaves be
11280 68 69 6e 64 20 65 6d 70 74 79 20 73 70 61 63 65  hind empty space
11290 2e 20 20 54 68 69 73 20 6d 61 6b 65 73 20 74 68  .  This makes th
112a0 65 20 64 61 74 61 62 61 73 65 20 0a 66 69 6c 65  e database .file
112b0 20 6c 61 72 67 65 72 20 74 68 61 6e 20 69 74 20   larger than it 
112c0 6e 65 65 64 73 20 74 6f 20 62 65 2c 20 62 75 74  needs to be, but
112d0 20 63 61 6e 20 73 70 65 65 64 20 75 70 20 69 6e   can speed up in
112e0 73 65 72 74 73 2e 20 20 49 6e 20 74 69 6d 65 20  serts.  In time 
112f0 0a 69 6e 73 65 72 74 73 20 61 6e 64 20 64 65 6c  .inserts and del
11300 65 74 65 73 20 63 61 6e 20 6c 65 61 76 65 20 74  etes can leave t
11310 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
11320 20 73 74 72 75 63 74 75 72 65 20 66 72 61 67 6d   structure fragm
11330 65 6e 74 65 64 2c 20 0a 77 68 69 63 68 20 73 6c  ented, .which sl
11340 6f 77 73 20 64 6f 77 6e 20 64 69 73 6b 20 61 63  ows down disk ac
11350 63 65 73 73 20 74 6f 20 74 68 65 20 64 61 74 61  cess to the data
11360 62 61 73 65 20 63 6f 6e 74 65 6e 74 73 2e 0a 0a  base contents...
11370 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61  The VACUUM comma
11380 6e 64 20 63 6c 65 61 6e 73 0a 74 68 65 20 6d 61  nd cleans.the ma
11390 69 6e 20 64 61 74 61 62 61 73 65 20 62 79 20 63  in database by c
113a0 6f 70 79 69 6e 67 20 69 74 73 20 63 6f 6e 74 65  opying its conte
113b0 6e 74 73 20 74 6f 20 61 20 74 65 6d 70 6f 72 61  nts to a tempora
113c0 72 79 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ry database file
113d0 20 61 6e 64 20 0a 72 65 6c 6f 61 64 69 6e 67 20   and .reloading 
113e0 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 61 74  the original dat
113f0 61 62 61 73 65 20 66 69 6c 65 20 66 72 6f 6d 20  abase file from 
11400 74 68 65 20 63 6f 70 79 2e 20 20 54 68 69 73 20  the copy.  This 
11410 65 6c 69 6d 69 6e 61 74 65 73 20 0a 66 72 65 65  eliminates .free
11420 20 70 61 67 65 73 2c 20 20 61 6c 69 67 6e 73 20   pages,  aligns 
11430 74 61 62 6c 65 20 64 61 74 61 20 74 6f 20 62 65  table data to be
11440 20 63 6f 6e 74 69 67 75 6f 75 73 2c 20 61 6e 64   contiguous, and
11450 20 6f 74 68 65 72 77 69 73 65 20 63 6c 65 61 6e   otherwise clean
11460 73 20 0a 75 70 20 74 68 65 20 64 61 74 61 62 61  s .up the databa
11470 73 65 20 66 69 6c 65 20 73 74 72 75 63 74 75 72  se file structur
11480 65 2e 20 49 74 20 69 73 20 6e 6f 74 20 70 6f 73  e. It is not pos
11490 73 69 62 6c 65 20 74 6f 20 70 65 72 66 6f 72 6d  sible to perform
114a0 20 74 68 65 20 73 61 6d 65 0a 70 72 6f 63 65 73   the same.proces
114b0 73 20 6f 6e 20 61 6e 20 61 74 74 61 63 68 65 64  s on an attached
114c0 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 3c   database file.<
114d0 2f 70 3e 0a 0a 3c 70 3e 54 68 69 73 20 63 6f 6d  /p>..<p>This com
114e0 6d 61 6e 64 20 77 69 6c 6c 20 66 61 69 6c 20 69  mand will fail i
114f0 66 20 74 68 65 72 65 20 69 73 20 61 6e 20 61 63  f there is an ac
11500 74 69 76 65 20 74 72 61 6e 73 61 63 74 69 6f 6e  tive transaction
11510 2e 20 20 54 68 69 73 20 0a 63 6f 6d 6d 61 6e 64  .  This .command
11520 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f   has no effect o
11530 6e 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20 64  n an in-memory d
11540 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70  atabase.</p>..<p
11550 3e 41 73 20 6f 66 20 53 51 4c 69 74 65 20 76 65  >As of SQLite ve
11560 72 73 69 6f 6e 20 33 2e 31 2c 20 61 6e 20 61 6c  rsion 3.1, an al
11570 74 65 72 6e 61 74 69 76 65 20 74 6f 20 75 73 69  ternative to usi
11580 6e 67 20 74 68 65 20 56 41 43 55 55 4d 20 63 6f  ng the VACUUM co
11590 6d 6d 61 6e 64 0a 69 73 20 61 75 74 6f 2d 76 61  mmand.is auto-va
115a0 63 75 75 6d 20 6d 6f 64 65 2c 20 65 6e 61 62 6c  cuum mode, enabl
115b0 65 64 20 75 73 69 6e 67 20 74 68 65 20 0a 3c 61  ed using the .<a
115c0 20 68 72 65 66 3d 22 70 72 61 67 6d 61 2e 68 74   href="pragma.ht
115d0 6d 6c 23 70 72 61 67 6d 61 5f 61 75 74 6f 5f 76  ml#pragma_auto_v
115e0 61 63 75 75 6d 22 3e 61 75 74 6f 5f 76 61 63 75  acuum">auto_vacu
115f0 75 6d 20 70 72 61 67 6d 61 3c 2f 61 3e 2e 3c 2f  um pragma</a>.</
11600 70 3e 0a 7d 0a 0a 23 20 41 20 6c 69 73 74 20 6f  p>.}..# A list o
11610 66 20 6b 65 79 77 6f 72 64 73 2e 20 20 41 20 61  f keywords.  A a
11620 73 74 65 72 69 73 6b 20 6f 63 63 75 72 73 20 61  sterisk occurs a
11630 66 74 65 72 20 74 68 65 20 6b 65 79 77 6f 72 64  fter the keyword
11640 20 69 66 20 69 74 20 69 73 20 6f 6e 0a 23 20 74   if it is on.# t
11650 68 65 20 66 61 6c 6c 62 61 63 6b 20 6c 69 73 74  he fallback list
11660 2e 0a 23 0a 73 65 74 20 6b 65 79 77 6f 72 64 5f  ..#.set keyword_
11670 6c 69 73 74 20 5b 6c 73 6f 72 74 20 7b 0a 20 20  list [lsort {.  
11680 20 41 42 4f 52 54 2a 0a 20 20 20 41 46 54 45 52   ABORT*.   AFTER
11690 2a 0a 20 20 20 41 4c 4c 0a 20 20 20 41 4c 54 45  *.   ALL.   ALTE
116a0 52 0a 20 20 20 41 4e 44 0a 20 20 20 41 53 0a 20  R.   AND.   AS. 
116b0 20 20 41 53 43 2a 0a 20 20 20 41 54 54 41 43 48    ASC*.   ATTACH
116c0 2a 0a 20 20 20 41 55 54 4f 49 4e 43 52 45 4d 45  *.   AUTOINCREME
116d0 4e 54 0a 20 20 20 42 45 46 4f 52 45 2a 0a 20 20  NT.   BEFORE*.  
116e0 20 42 45 47 49 4e 2a 0a 20 20 20 42 45 54 57 45   BEGIN*.   BETWE
116f0 45 4e 0a 20 20 20 42 59 0a 20 20 20 43 41 53 43  EN.   BY.   CASC
11700 41 44 45 2a 0a 20 20 20 43 41 53 45 0a 20 20 20  ADE*.   CASE.   
11710 43 48 45 43 4b 0a 20 20 20 43 4f 4c 4c 41 54 45  CHECK.   COLLATE
11720 0a 20 20 20 43 4f 4d 4d 49 54 0a 20 20 20 43 4f  .   COMMIT.   CO
11730 4e 46 4c 49 43 54 2a 0a 20 20 20 43 4f 4e 53 54  NFLICT*.   CONST
11740 52 41 49 4e 54 0a 20 20 20 43 52 45 41 54 45 0a  RAINT.   CREATE.
11750 20 20 20 43 52 4f 53 53 0a 20 20 20 43 55 52 52     CROSS.   CURR
11760 45 4e 54 5f 44 41 54 45 2a 0a 20 20 20 43 55 52  ENT_DATE*.   CUR
11770 52 45 4e 54 5f 54 49 4d 45 2a 0a 20 20 20 43 55  RENT_TIME*.   CU
11780 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2a  RRENT_TIMESTAMP*
11790 0a 20 20 20 44 41 54 41 42 41 53 45 2a 0a 20 20  .   DATABASE*.  
117a0 20 44 45 46 41 55 4c 54 0a 20 20 20 44 45 46 45   DEFAULT.   DEFE
117b0 52 52 45 44 2a 0a 20 20 20 44 45 46 45 52 52 41  RRED*.   DEFERRA
117c0 42 4c 45 0a 20 20 20 44 45 4c 45 54 45 0a 20 20  BLE.   DELETE.  
117d0 20 44 45 53 43 2a 0a 20 20 20 44 45 54 41 43 48   DESC*.   DETACH
117e0 2a 0a 20 20 20 44 49 53 54 49 4e 43 54 0a 20 20  *.   DISTINCT.  
117f0 20 44 52 4f 50 0a 20 20 20 45 4e 44 2a 0a 20 20   DROP.   END*.  
11800 20 45 41 43 48 2a 0a 20 20 20 45 4c 53 45 0a 20   EACH*.   ELSE. 
11810 20 20 45 53 43 41 50 45 0a 20 20 20 45 58 43 45    ESCAPE.   EXCE
11820 50 54 0a 20 20 20 45 58 43 4c 55 53 49 56 45 2a  PT.   EXCLUSIVE*
11830 0a 20 20 20 45 58 50 4c 41 49 4e 2a 0a 20 20 20  .   EXPLAIN*.   
11840 46 41 49 4c 2a 0a 20 20 20 46 4f 52 2a 0a 20 20  FAIL*.   FOR*.  
11850 20 46 4f 52 45 49 47 4e 0a 20 20 20 46 52 4f 4d   FOREIGN.   FROM
11860 0a 20 20 20 46 55 4c 4c 0a 20 20 20 47 4c 4f 42  .   FULL.   GLOB
11870 2a 0a 20 20 20 47 52 4f 55 50 0a 20 20 20 48 41  *.   GROUP.   HA
11880 56 49 4e 47 0a 20 20 20 49 47 4e 4f 52 45 2a 0a  VING.   IGNORE*.
11890 20 20 20 49 4d 4d 45 44 49 41 54 45 2a 0a 20 20     IMMEDIATE*.  
118a0 20 49 4e 0a 20 20 20 49 4e 44 45 58 0a 20 20 20   IN.   INDEX.   
118b0 49 4e 49 54 49 41 4c 4c 59 2a 0a 20 20 20 49 4e  INITIALLY*.   IN
118c0 4e 45 52 0a 20 20 20 49 4e 53 45 52 54 0a 20 20  NER.   INSERT.  
118d0 20 49 4e 53 54 45 41 44 2a 0a 20 20 20 49 4e 54   INSTEAD*.   INT
118e0 45 52 53 45 43 54 0a 20 20 20 49 4e 54 4f 0a 20  ERSECT.   INTO. 
118f0 20 20 49 53 0a 20 20 20 49 53 4e 55 4c 4c 0a 20    IS.   ISNULL. 
11900 20 20 4a 4f 49 4e 0a 20 20 20 4b 45 59 2a 0a 20    JOIN.   KEY*. 
11910 20 20 4c 45 46 54 0a 20 20 20 4c 49 4b 45 2a 0a    LEFT.   LIKE*.
11920 20 20 20 4c 49 4d 49 54 0a 20 20 20 4d 41 54 43     LIMIT.   MATC
11930 48 2a 0a 20 20 20 4e 41 54 55 52 41 4c 0a 20 20  H*.   NATURAL.  
11940 20 4e 4f 54 0a 20 20 20 4e 4f 54 4e 55 4c 4c 0a   NOT.   NOTNULL.
11950 20 20 20 4e 55 4c 4c 0a 20 20 20 4f 46 2a 0a 20     NULL.   OF*. 
11960 20 20 4f 46 46 53 45 54 2a 0a 20 20 20 4f 4e 0a    OFFSET*.   ON.
11970 20 20 20 4f 52 0a 20 20 20 4f 52 44 45 52 0a 20     OR.   ORDER. 
11980 20 20 4f 55 54 45 52 0a 20 20 20 50 52 41 47 4d    OUTER.   PRAGM
11990 41 2a 0a 20 20 20 50 52 49 4d 41 52 59 0a 20 20  A*.   PRIMARY.  
119a0 20 52 41 49 53 45 2a 0a 20 20 20 52 45 46 45 52   RAISE*.   REFER
119b0 45 4e 43 45 53 0a 20 20 20 52 45 49 4e 44 45 58  ENCES.   REINDEX
119c0 2a 0a 20 20 20 52 45 4e 41 4d 45 2a 0a 20 20 20  *.   RENAME*.   
119d0 52 45 50 4c 41 43 45 2a 0a 20 20 20 52 45 53 54  REPLACE*.   REST
119e0 52 49 43 54 2a 0a 20 20 20 52 49 47 48 54 0a 20  RICT*.   RIGHT. 
119f0 20 20 52 4f 4c 4c 42 41 43 4b 0a 20 20 20 52 4f    ROLLBACK.   RO
11a00 57 2a 0a 20 20 20 53 45 4c 45 43 54 0a 20 20 20  W*.   SELECT.   
11a10 53 45 54 0a 20 20 20 53 54 41 54 45 4d 45 4e 54  SET.   STATEMENT
11a20 2a 0a 20 20 20 54 41 42 4c 45 0a 20 20 20 54 45  *.   TABLE.   TE
11a30 4d 50 2a 0a 20 20 20 54 45 4d 50 4f 52 41 52 59  MP*.   TEMPORARY
11a40 2a 0a 20 20 20 54 48 45 4e 0a 20 20 20 54 4f 0a  *.   THEN.   TO.
11a50 20 20 20 54 52 41 4e 53 41 43 54 49 4f 4e 0a 20     TRANSACTION. 
11a60 20 20 54 52 49 47 47 45 52 2a 0a 20 20 20 55 4e    TRIGGER*.   UN
11a70 49 4f 4e 0a 20 20 20 55 4e 49 51 55 45 0a 20 20  ION.   UNIQUE.  
11a80 20 55 50 44 41 54 45 0a 20 20 20 55 53 49 4e 47   UPDATE.   USING
11a90 0a 20 20 20 56 41 43 55 55 4d 2a 0a 20 20 20 56  .   VACUUM*.   V
11aa0 41 4c 55 45 53 0a 20 20 20 56 49 45 57 2a 0a 20  ALUES.   VIEW*. 
11ab0 20 20 57 48 45 4e 0a 20 20 20 57 48 45 52 45 0a    WHEN.   WHERE.
11ac0 7d 5d 0a 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 53  }]....Section {S
11ad0 51 4c 69 74 65 20 6b 65 79 77 6f 72 64 73 7d 20  QLite keywords} 
11ae0 6b 65 79 77 6f 72 64 73 0a 0a 70 75 74 73 20 7b  keywords..puts {
11af0 0a 3c 70 3e 54 68 65 20 53 51 4c 20 73 74 61 6e  .<p>The SQL stan
11b00 64 61 72 64 20 73 70 65 63 69 66 69 65 73 20 61  dard specifies a
11b10 20 68 75 67 65 20 6e 75 6d 62 65 72 20 6f 66 20   huge number of 
11b20 6b 65 79 77 6f 72 64 73 20 77 68 69 63 68 20 6d  keywords which m
11b30 61 79 20 6e 6f 74 0a 62 65 20 75 73 65 64 20 61  ay not.be used a
11b40 73 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 74  s the names of t
11b50 61 62 6c 65 73 2c 20 69 6e 64 69 63 65 73 2c 20  ables, indices, 
11b60 63 6f 6c 75 6d 6e 73 2c 20 6f 72 20 64 61 74 61  columns, or data
11b70 62 61 73 65 73 2e 20 20 54 68 65 0a 6c 69 73 74  bases.  The.list
11b80 20 69 73 20 73 6f 20 6c 6f 6e 67 20 74 68 61 74   is so long that
11b90 20 66 65 77 20 70 65 6f 70 6c 65 20 63 61 6e 20   few people can 
11ba0 72 65 6d 65 6d 62 65 72 20 74 68 65 6d 20 61 6c  remember them al
11bb0 6c 2e 20 20 46 6f 72 20 6d 6f 73 74 20 53 51 4c  l.  For most SQL
11bc0 0a 63 6f 64 65 2c 20 79 6f 75 72 20 73 61 66 65  .code, your safe
11bd0 73 74 20 62 65 74 20 69 73 20 74 6f 20 6e 65 76  st bet is to nev
11be0 65 72 20 75 73 65 20 61 6e 79 20 45 6e 67 6c 69  er use any Engli
11bf0 73 68 20 6c 61 6e 67 75 61 67 65 20 77 6f 72 64  sh language word
11c00 20 61 73 20 74 68 65 0a 6e 61 6d 65 20 6f 66 20   as the.name of 
11c10 61 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 6f  a user-defined o
11c20 62 6a 65 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49  bject.</p>..<p>I
11c30 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 75 73  f you want to us
11c40 65 20 61 20 6b 65 79 77 6f 72 64 20 61 73 20 61  e a keyword as a
11c50 20 6e 61 6d 65 2c 20 79 6f 75 20 6e 65 65 64 20   name, you need 
11c60 74 6f 20 71 75 6f 74 65 20 69 74 2e 20 20 54 68  to quote it.  Th
11c70 65 72 65 0a 61 72 65 20 74 68 72 65 65 20 77 61  ere.are three wa
11c80 79 73 20 6f 66 20 71 75 6f 74 69 6e 67 20 6b 65  ys of quoting ke
11c90 79 77 6f 72 64 73 20 69 6e 20 53 51 4c 69 74 65  ywords in SQLite
11ca0 3a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 3c 62 6c 6f 63  :</p>..<p>.<bloc
11cb0 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 3e 0a  kquote>.<table>.
11cc0 3c 74 72 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
11cd0 22 74 6f 70 22 3e 3c 62 3e 27 6b 65 79 77 6f 72  "top"><b>'keywor
11ce0 64 27 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 77  d'</b></td><td w
11cf0 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a  idth="20"></td>.
11d00 09 3c 74 64 3e 41 20 6b 65 79 77 6f 72 64 20 69  .<td>A keyword i
11d10 6e 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 20  n single quotes 
11d20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  is interpreted a
11d30 73 20 61 20 6c 69 74 65 72 61 6c 20 73 74 72 69  s a literal stri
11d40 6e 67 0a 20 20 20 20 20 20 20 20 69 66 20 69 74  ng.        if it
11d50 20 6f 63 63 75 72 73 20 69 6e 20 61 20 63 6f 6e   occurs in a con
11d60 74 65 78 74 20 77 68 65 72 65 20 61 20 73 74 72  text where a str
11d70 69 6e 67 20 6c 69 74 65 72 61 6c 20 69 73 20 61  ing literal is a
11d80 6c 6c 6f 77 65 64 2c 20 6f 74 68 65 72 77 69 73  llowed, otherwis
11d90 65 0a 09 69 74 20 69 73 20 75 6e 64 65 72 73 74  e..it is underst
11da0 6f 6f 64 20 61 73 20 61 6e 20 69 64 65 6e 74 69  ood as an identi
11db0 66 69 65 72 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a  fier.</td></tr>.
11dc0 3c 74 72 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
11dd0 22 74 6f 70 22 3e 3c 62 3e 22 6b 65 79 77 6f 72  "top"><b>"keywor
11de0 64 22 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 3c  d"</b></td><td><
11df0 2f 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65 79 77  /td>..<td>A keyw
11e00 6f 72 64 20 69 6e 20 64 6f 75 62 6c 65 2d 71 75  ord in double-qu
11e10 6f 74 65 73 20 69 73 20 69 6e 74 65 72 70 72 65  otes is interpre
11e20 74 65 64 20 61 73 20 61 6e 20 69 64 65 6e 74 69  ted as an identi
11e30 66 69 65 72 20 69 66 0a 20 20 20 20 20 20 20 20  fier if.        
11e40 69 74 20 6d 61 74 63 68 65 73 20 61 20 6b 6e 6f  it matches a kno
11e50 77 6e 20 69 64 65 6e 74 69 66 69 65 72 2e 20 20  wn identifier.  
11e60 4f 74 68 65 72 77 69 73 65 20 69 74 20 69 73 20  Otherwise it is 
11e70 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61  interpreted as a
11e80 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20  .        string 
11e90 6c 69 74 65 72 61 6c 2e 3c 2f 74 64 3e 3c 2f 74  literal.</td></t
11ea0 72 3e 0a 3c 74 72 3e 09 3c 74 64 20 76 61 6c 69  r>.<tr>.<td vali
11eb0 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 5b 6b 65 79  gn="top"><b>[key
11ec0 77 6f 72 64 5d 3c 2f 62 3e 3c 2f 74 64 3e 3c 74  word]</b></td><t
11ed0 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20 6b  d></td>..<td>A k
11ee0 65 79 77 6f 72 64 20 65 6e 63 6c 6f 73 65 64 20  eyword enclosed 
11ef0 69 6e 20 73 71 75 61 72 65 20 62 72 61 63 6b 65  in square bracke
11f00 74 73 20 69 73 20 61 6c 77 61 79 73 20 75 6e 64  ts is always und
11f10 65 72 73 74 6f 6f 64 20 61 73 0a 20 20 20 20 20  erstood as.     
11f20 20 20 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72     an identifier
11f30 2e 20 20 54 68 69 73 20 69 73 20 6e 6f 74 20 73  .  This is not s
11f40 74 61 6e 64 61 72 64 20 53 51 4c 2e 20 20 54 68  tandard SQL.  Th
11f50 69 73 20 71 75 6f 74 69 6e 67 20 6d 65 63 68 61  is quoting mecha
11f60 6e 69 73 6d 0a 20 20 20 20 20 20 20 20 69 73 20  nism.        is 
11f70 75 73 65 64 20 62 79 20 4d 53 20 41 63 63 65 73  used by MS Acces
11f80 73 20 61 6e 64 20 53 51 4c 20 53 65 72 76 65 72  s and SQL Server
11f90 20 61 6e 64 20 69 73 20 69 6e 63 6c 75 64 65 64   and is included
11fa0 20 69 6e 20 53 51 4c 69 74 65 20 66 6f 72 0a 20   in SQLite for. 
11fb0 20 20 20 20 20 20 20 63 6f 6d 70 61 74 69 62 69         compatibi
11fc0 6c 69 74 79 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a  lity.</td></tr>.
11fd0 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b  </table>.</block
11fe0 71 75 6f 74 65 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  quote>.</p>..<p>
11ff0 51 75 6f 74 65 64 20 6b 65 79 77 6f 72 64 73 20  Quoted keywords 
12000 61 72 65 20 75 6e 61 65 73 74 68 65 74 69 63 2e  are unaesthetic.
12010 0a 54 6f 20 68 65 6c 70 20 79 6f 75 20 61 76 6f  .To help you avo
12020 69 64 20 74 68 65 6d 2c 20 53 51 4c 69 74 65 20  id them, SQLite 
12030 61 6c 6c 6f 77 73 20 6d 61 6e 79 20 6b 65 79 77  allows many keyw
12040 6f 72 64 73 20 74 6f 20 62 65 20 75 73 65 64 20  ords to be used 
12050 75 6e 71 75 6f 74 65 64 0a 61 73 20 74 68 65 20  unquoted.as the 
12060 6e 61 6d 65 73 20 6f 66 20 64 61 74 61 62 61 73  names of databas
12070 65 73 2c 20 74 61 62 6c 65 73 2c 20 69 6e 64 69  es, tables, indi
12080 63 65 73 2c 20 74 72 69 67 67 65 72 73 2c 20 76  ces, triggers, v
12090 69 65 77 73 2c 20 61 6e 64 2f 6f 72 20 63 6f 6c  iews, and/or col
120a0 75 6d 6e 73 2e 0a 49 6e 20 74 68 65 20 6c 69 73  umns..In the lis
120b0 74 20 6f 66 20 6b 65 79 77 6f 72 64 73 20 74 68  t of keywords th
120c0 61 74 20 66 6f 6c 6c 6f 77 73 2c 20 74 68 6f 73  at follows, thos
120d0 65 20 74 68 61 74 20 63 61 6e 20 62 65 20 75 73  e that can be us
120e0 65 64 20 61 73 20 69 64 65 6e 74 69 66 69 65 72  ed as identifier
120f0 73 0a 61 72 65 20 73 68 6f 77 6e 20 69 6e 20 61  s.are shown in a
12100 6e 20 69 74 61 6c 69 63 20 66 6f 6e 74 2e 20 20  n italic font.  
12110 4b 65 79 77 6f 72 64 73 20 74 68 61 74 20 6d 75  Keywords that mu
12120 73 74 20 62 65 20 71 75 6f 74 65 64 20 69 6e 20  st be quoted in 
12130 6f 72 64 65 72 20 74 6f 20 62 65 0a 75 73 65 64  order to be.used
12140 20 61 73 20 69 64 65 6e 74 69 66 69 65 72 73 20   as identifiers 
12150 61 72 65 20 73 68 6f 77 6e 20 69 6e 20 62 6f 6c  are shown in bol
12160 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 53 51 4c 69  d.</p>..<p>.SQLi
12170 74 65 20 61 64 64 73 20 6e 65 77 20 6b 65 79 77  te adds new keyw
12180 6f 72 64 73 20 66 72 6f 6d 20 74 69 6d 65 20 74  ords from time t
12190 6f 20 74 69 6d 65 20 77 68 65 6e 20 69 74 20 74  o time when it t
121a0 61 6b 65 20 6f 6e 20 6e 65 77 20 66 65 61 74 75  ake on new featu
121b0 72 65 73 2e 0a 53 6f 20 74 6f 20 70 72 65 76 65  res..So to preve
121c0 6e 74 20 79 6f 75 20 63 6f 64 65 20 66 72 6f 6d  nt you code from
121d0 20 62 65 69 6e 67 20 62 72 6f 6b 65 6e 20 62 79   being broken by
121e0 20 66 75 74 75 72 65 20 65 6e 68 61 6e 63 65 6d   future enhancem
121f0 65 6e 74 73 2c 20 79 6f 75 20 73 68 6f 75 6c 64  ents, you should
12200 0a 6e 6f 72 6d 61 6c 6c 79 20 71 75 6f 74 65 20  .normally quote 
12210 61 6e 79 20 69 6e 64 65 6e 74 69 66 69 65 72 20  any indentifier 
12220 74 68 61 74 20 69 73 20 61 6e 20 45 6e 67 6c 69  that is an Engli
12230 73 68 20 6c 61 6e 67 75 61 67 65 20 77 6f 72 64  sh language word
12240 2c 20 65 76 65 6e 20 69 66 0a 79 6f 75 20 64 6f  , even if.you do
12250 20 6e 6f 74 20 68 61 76 65 20 74 6f 2e 0a 3c 2f   not have to..</
12260 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 66 6f 6c 6c  p>..<p>.The foll
12270 6f 77 69 6e 67 20 61 72 65 20 74 68 65 20 6b 65  owing are the ke
12280 79 77 6f 72 64 73 20 63 75 72 72 65 6e 74 6c 79  ywords currently
12290 20 72 65 63 6f 67 6e 69 7a 65 64 20 62 79 20 53   recognized by S
122a0 51 4c 69 74 65 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c  QLite:.</p>..<bl
122b0 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65  ockquote>.<table
122c0 20 77 69 64 74 68 3d 22 31 30 30 25 22 3e 0a 3c   width="100%">.<
122d0 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 6c  tr>.<td align="l
122e0 65 66 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70  eft" valign="top
122f0 22 20 77 69 64 74 68 3d 22 32 30 25 22 3e 0a 7d  " width="20%">.}
12300 0a 0a 73 65 74 20 6e 20 5b 6c 6c 65 6e 67 74 68  ..set n [llength
12310 20 24 6b 65 79 77 6f 72 64 5f 6c 69 73 74 5d 0a   $keyword_list].
12320 73 65 74 20 6e 43 6f 6c 20 35 0a 73 65 74 20 6e  set nCol 5.set n
12330 52 6f 77 20 5b 65 78 70 72 20 7b 28 24 6e 2b 24  Row [expr {($n+$
12340 6e 43 6f 6c 2d 31 29 2f 24 6e 43 6f 6c 7d 5d 0a  nCol-1)/$nCol}].
12350 73 65 74 20 69 20 30 0a 66 6f 72 65 61 63 68 20  set i 0.foreach 
12360 77 6f 72 64 20 24 6b 65 79 77 6f 72 64 5f 6c 69  word $keyword_li
12370 73 74 20 7b 0a 20 20 69 66 20 7b 5b 73 74 72 69  st {.  if {[stri
12380 6e 67 20 69 6e 64 65 78 20 24 77 6f 72 64 20 65  ng index $word e
12390 6e 64 5d 3d 3d 22 2a 22 7d 20 7b 0a 20 20 20 20  nd]=="*"} {.    
123a0 73 65 74 20 77 6f 72 64 20 5b 73 74 72 69 6e 67  set word [string
123b0 20 72 61 6e 67 65 20 24 77 6f 72 64 20 30 20 65   range $word 0 e
123c0 6e 64 2d 31 5d 0a 20 20 20 20 73 65 74 20 66 6f  nd-1].    set fo
123d0 6e 74 20 69 0a 20 20 7d 20 65 6c 73 65 20 7b 0a  nt i.  } else {.
123e0 20 20 20 20 73 65 74 20 66 6f 6e 74 20 62 0a 20      set font b. 
123f0 20 7d 0a 20 20 69 66 20 7b 24 69 3d 3d 24 6e 52   }.  if {$i==$nR
12400 6f 77 7d 20 7b 0a 20 20 20 20 70 75 74 73 20 22  ow} {.    puts "
12410 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d  </td><td valign=
12420 5c 22 74 6f 70 5c 22 20 61 6c 69 67 6e 3d 5c 22  \"top\" align=\"
12430 6c 65 66 74 5c 22 20 77 69 64 74 68 3d 5c 22 32  left\" width=\"2
12440 30 25 5c 22 3e 22 0a 20 20 20 20 73 65 74 20 69  0%\">".    set i
12450 20 31 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20   1.  } else {.  
12460 20 20 69 6e 63 72 20 69 0a 20 20 7d 0a 20 20 70    incr i.  }.  p
12470 75 74 73 20 22 3c 24 66 6f 6e 74 3e 24 77 6f 72  uts "<$font>$wor
12480 64 3c 2f 24 66 6f 6e 74 3e 3c 62 72 3e 22 0a 7d  d</$font><br>".}
12490 0a 0a 70 75 74 73 20 7b 0a 3c 2f 74 64 3e 3c 2f  ..puts {.</td></
124a0 74 72 3e 3c 2f 74 61 62 6c 65 3e 3c 2f 62 6c 6f  tr></table></blo
124b0 63 6b 71 75 6f 74 65 3e 0a 0a 3c 68 32 3e 53 70  ckquote>..<h2>Sp
124c0 65 63 69 61 6c 20 6e 61 6d 65 73 3c 2f 68 32 3e  ecial names</h2>
124d0 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69  ..<p>The followi
124e0 6e 67 20 61 72 65 20 6e 6f 74 20 6b 65 79 77 6f  ng are not keywo
124f0 72 64 73 20 69 6e 20 53 51 4c 69 74 65 2c 20 62  rds in SQLite, b
12500 75 74 20 61 72 65 20 75 73 65 64 20 61 73 20 6e  ut are used as n
12510 61 6d 65 73 20 6f 66 20 0a 73 79 73 74 65 6d 20  ames of .system 
12520 6f 62 6a 65 63 74 73 2e 20 20 54 68 65 79 20 63  objects.  They c
12530 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 61 6e  an be used as an
12540 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20   identifier for 
12550 61 20 64 69 66 66 65 72 65 6e 74 20 0a 74 79 70  a different .typ
12560 65 20 6f 66 20 6f 62 6a 65 63 74 2e 3c 2f 70 3e  e of object.</p>
12570 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 62  ..<blockquote><b
12580 3e 0a 20 20 5f 52 4f 57 49 44 5f 3c 62 72 3e 0a  >.  _ROWID_<br>.
12590 20 20 4d 41 49 4e 3c 62 72 3e 0a 20 20 4f 49 44    MAIN<br>.  OID
125a0 3c 62 72 3e 0a 20 20 52 4f 57 49 44 3c 62 72 3e  <br>.  ROWID<br>
125b0 0a 20 20 53 51 4c 49 54 45 5f 4d 41 53 54 45 52  .  SQLITE_MASTER
125c0 3c 62 72 3e 0a 20 20 53 51 4c 49 54 45 5f 53 45  <br>.  SQLITE_SE
125d0 51 55 45 4e 43 45 3c 62 72 3e 0a 20 20 53 51 4c  QUENCE<br>.  SQL
125e0 49 54 45 5f 54 45 4d 50 5f 4d 41 53 54 45 52 3c  ITE_TEMP_MASTER<
125f0 62 72 3e 0a 20 20 54 45 4d 50 3c 62 72 3e 0a 3c  br>.  TEMP<br>.<
12600 2f 62 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  /b></blockquote>
12610 0a 7d 0a 0a 66 6f 6f 74 65 72 20 24 72 63 73 69  .}..footer $rcsi
12620 64 0a 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65  d.if {[string le
12630 6e 67 74 68 20 24 6f 75 74 70 75 74 64 69 72 5d  ngth $outputdir]
12640 7d 20 7b 0a 20 20 66 6f 6f 74 65 72 20 24 72 63  } {.  footer $rc
12650 73 69 64 0a 7d 0a                                sid.}.