/ Hex Artifact Content
Login

Artifact b3561af8d85d2d712d43b3604e4aadce9257e4d9:


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 30 35 20 32 30  g.tcl,v 1.105 20
0060: 30 36 2f 30 31 2f 31 32 20 32 32 3a 31 37 3a 35  06/01/12 22:17:5
0070: 30 20 64 72 68 20 45 78 70 20 24 7d 0a 73 6f 75  0 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 49 4e 44 45 58 7d 20 63 72 65  REATE INDEX} cre
05e0: 61 74 65 69 6e 64 65 78 7d 0a 20 20 7b 56 41 43  ateindex}.  {VAC
05f0: 55 55 4d 20 76 61 63 75 75 6d 7d 0a 20 20 7b 7b  UUM vacuum}.  {{
0600: 44 52 4f 50 20 54 41 42 4c 45 7d 20 64 72 6f 70  DROP TABLE} drop
0610: 74 61 62 6c 65 7d 0a 20 20 7b 7b 44 52 4f 50 20  table}.  {{DROP 
0620: 49 4e 44 45 58 7d 20 64 72 6f 70 69 6e 64 65 78  INDEX} dropindex
0630: 7d 0a 20 20 7b 49 4e 53 45 52 54 20 69 6e 73 65  }.  {INSERT inse
0640: 72 74 7d 0a 20 20 7b 52 45 50 4c 41 43 45 20 72  rt}.  {REPLACE r
0650: 65 70 6c 61 63 65 7d 0a 20 20 7b 44 45 4c 45 54  eplace}.  {DELET
0660: 45 20 64 65 6c 65 74 65 7d 0a 20 20 7b 55 50 44  E delete}.  {UPD
0670: 41 54 45 20 75 70 64 61 74 65 7d 0a 20 20 7b 53  ATE update}.  {S
0680: 45 4c 45 43 54 20 73 65 6c 65 63 74 7d 0a 20 20  ELECT select}.  
0690: 7b 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e 74  {comment comment
06a0: 7d 0a 20 20 7b 43 4f 50 59 20 63 6f 70 79 7d 0a  }.  {COPY copy}.
06b0: 20 20 7b 45 58 50 4c 41 49 4e 20 65 78 70 6c 61    {EXPLAIN expla
06c0: 69 6e 7d 0a 20 20 7b 65 78 70 72 65 73 73 69 6f  in}.  {expressio
06d0: 6e 20 65 78 70 72 7d 0a 20 20 7b 7b 42 45 47 49  n expr}.  {{BEGI
06e0: 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74  N TRANSACTION} t
06f0: 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 7b  ransaction}.  {{
0700: 43 4f 4d 4d 49 54 20 54 52 41 4e 53 41 43 54 49  COMMIT TRANSACTI
0710: 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d  ON} transaction}
0720: 0a 20 20 7b 7b 45 4e 44 20 54 52 41 4e 53 41 43  .  {{END TRANSAC
0730: 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f  TION} transactio
0740: 6e 7d 0a 20 20 7b 7b 52 4f 4c 4c 42 41 43 4b 20  n}.  {{ROLLBACK 
0750: 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61  TRANSACTION} tra
0760: 6e 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 50 52 41  nsaction}.  {PRA
0770: 47 4d 41 20 70 72 61 67 6d 61 2e 68 74 6d 6c 7d  GMA pragma.html}
0780: 0a 20 20 7b 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54  .  {{ON CONFLICT
0790: 20 63 6c 61 75 73 65 7d 20 63 6f 6e 66 6c 69 63   clause} conflic
07a0: 74 7d 0a 20 20 7b 7b 43 52 45 41 54 45 20 56 49  t}.  {{CREATE VI
07b0: 45 57 7d 20 63 72 65 61 74 65 76 69 65 77 7d 0a  EW} createview}.
07c0: 20 20 7b 7b 44 52 4f 50 20 56 49 45 57 7d 20 64    {{DROP VIEW} d
07d0: 72 6f 70 76 69 65 77 7d 0a 20 20 7b 7b 43 52 45  ropview}.  {{CRE
07e0: 41 54 45 20 54 52 49 47 47 45 52 7d 20 63 72 65  ATE TRIGGER} cre
07f0: 61 74 65 74 72 69 67 67 65 72 7d 0a 20 20 7b 7b  atetrigger}.  {{
0800: 44 52 4f 50 20 54 52 49 47 47 45 52 7d 20 64 72  DROP TRIGGER} dr
0810: 6f 70 74 72 69 67 67 65 72 7d 0a 20 20 7b 7b 41  optrigger}.  {{A
0820: 54 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20  TTACH DATABASE} 
0830: 61 74 74 61 63 68 7d 0a 20 20 7b 7b 44 45 54 41  attach}.  {{DETA
0840: 43 48 20 44 41 54 41 42 41 53 45 7d 20 64 65 74  CH DATABASE} det
0850: 61 63 68 7d 0a 20 20 7b 52 45 49 4e 44 45 58 20  ach}.  {REINDEX 
0860: 72 65 69 6e 64 65 78 7d 0a 20 20 7b 7b 41 4c 54  reindex}.  {{ALT
0870: 45 52 20 54 41 42 4c 45 7d 20 61 6c 74 65 72 74  ER TABLE} altert
0880: 61 62 6c 65 7d 0a 20 20 7b 7b 41 4e 41 4c 59 5a  able}.  {{ANALYZ
0890: 45 7d 20 61 6e 61 6c 79 7a 65 7d 0a 7d 5d 20 7b  E} analyze}.}] {
08a0: 0a 20 20 66 6f 72 65 61 63 68 20 7b 73 5f 74 69  .  foreach {s_ti
08b0: 74 6c 65 20 73 5f 74 61 67 7d 20 24 73 65 63 74  tle s_tag} $sect
08c0: 69 6f 6e 20 7b 7d 0a 20 20 70 75 74 73 20 22 3c  ion {}.  puts "<
08d0: 6c 69 3e 3c 61 20 68 72 65 66 3d 5c 22 5b 73 6c  li><a href=\"[sl
08e0: 69 6e 6b 20 24 73 5f 74 61 67 5d 5c 22 3e 24 73  ink $s_tag]\">$s
08f0: 5f 74 69 74 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 22  _title</a></li>"
0900: 0a 7d 0a 70 75 74 73 20 7b 3c 2f 75 6c 3e 3c 2f  .}.puts {</ul></
0910: 70 3e 0a 0a 3c 70 3e 44 65 74 61 69 6c 73 20 6f  p>..<p>Details o
0920: 6e 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61  n the implementa
0930: 74 69 6f 6e 20 6f 66 20 65 61 63 68 20 63 6f 6d  tion of each com
0940: 6d 61 6e 64 20 61 72 65 20 70 72 6f 76 69 64 65  mand are provide
0950: 64 20 69 6e 0a 74 68 65 20 73 65 71 75 65 6c 2e  d in.the sequel.
0960: 3c 2f 70 3e 0a 7d 0a 0a 70 72 6f 63 20 4f 70 65  </p>.}..proc Ope
0970: 72 61 74 6f 72 20 7b 6e 61 6d 65 7d 20 7b 0a 20  rator {name} {. 
0980: 20 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63   return "<font c
0990: 6f 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22  olor=\"#2c2cf0\"
09a0: 3e 3c 62 69 67 3e 24 6e 61 6d 65 3c 2f 62 69 67  ><big>$name</big
09b0: 3e 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f 63  ></font>".}.proc
09c0: 20 4e 6f 6e 74 65 72 6d 69 6e 61 6c 20 7b 6e 61   Nonterminal {na
09d0: 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22  me} {.  return "
09e0: 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c  <i><font color=\
09f0: 22 23 66 66 33 34 33 34 5c 22 3e 24 6e 61 6d 65  "#ff3434\">$name
0a00: 3c 2f 66 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d 0a 70  </font></i>".}.p
0a10: 72 6f 63 20 4b 65 79 77 6f 72 64 20 7b 6e 61 6d  roc Keyword {nam
0a20: 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c  e} {.  return "<
0a30: 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63  font color=\"#2c
0a40: 32 63 66 30 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f  2cf0\">$name</fo
0a50: 6e 74 3e 22 0a 7d 0a 70 72 6f 63 20 45 78 61 6d  nt>".}.proc Exam
0a60: 70 6c 65 20 7b 74 65 78 74 7d 20 7b 0a 20 20 70  ple {text} {.  p
0a70: 75 74 73 20 22 3c 62 6c 6f 63 6b 71 75 6f 74 65  uts "<blockquote
0a80: 3e 3c 70 72 65 3e 24 74 65 78 74 3c 2f 70 72 65  ><pre>$text</pre
0a90: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 22 0a  ></blockquote>".
0aa0: 7d 0a 0a 70 72 6f 63 20 53 65 63 74 69 6f 6e 20  }..proc Section 
0ab0: 7b 6e 61 6d 65 20 6c 61 62 65 6c 7d 20 7b 0a 20  {name label} {. 
0ac0: 20 67 6c 6f 62 61 6c 20 6f 75 74 70 75 74 64 69   global outputdi
0ad0: 72 0a 0a 20 20 69 66 20 7b 5b 73 74 72 69 6e 67  r..  if {[string
0ae0: 20 6c 65 6e 67 74 68 20 24 6f 75 74 70 75 74 64   length $outputd
0af0: 69 72 5d 21 3d 30 7d 20 7b 0a 20 20 20 20 69 66  ir]!=0} {.    if
0b00: 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f   {[llength [info
0b10: 20 63 6f 6d 6d 61 6e 64 73 20 70 75 74 73 5f 73   commands puts_s
0b20: 74 61 6e 64 61 72 64 5d 5d 3e 30 7d 20 7b 0a 20  tandard]]>0} {. 
0b30: 20 20 20 20 20 66 6f 6f 74 65 72 20 24 3a 3a 72       footer $::r
0b40: 63 73 69 64 0a 20 20 20 20 7d 0a 0a 20 20 20 20  csid.    }..    
0b50: 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67  if {[string leng
0b60: 74 68 20 24 6c 61 62 65 6c 5d 3e 30 7d 20 7b 0a  th $label]>0} {.
0b70: 20 20 20 20 20 20 72 65 6e 61 6d 65 20 70 75 74        rename put
0b80: 73 20 70 75 74 73 5f 73 74 61 6e 64 61 72 64 0a  s puts_standard.
0b90: 20 20 20 20 20 20 70 72 6f 63 20 70 75 74 73 20        proc puts 
0ba0: 7b 73 74 72 7d 20 7b 0a 20 20 20 20 20 20 20 20  {str} {.        
0bb0: 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 68 72 65  regsub -all {hre
0bc0: 66 3d 22 23 28 5b 61 2d 7a 5d 2b 29 22 7d 20 24  f="#([a-z]+)"} $
0bd0: 73 74 72 20 7b 68 72 65 66 3d 22 6c 61 6e 67 5f  str {href="lang_
0be0: 5c 31 2e 68 74 6d 6c 22 7d 20 73 74 72 0a 20 20  \1.html"} str.  
0bf0: 20 20 20 20 20 20 70 75 74 73 5f 73 74 61 6e 64        puts_stand
0c00: 61 72 64 20 24 3a 3a 73 65 63 74 69 6f 6e 5f 66  ard $::section_f
0c10: 69 6c 65 20 24 73 74 72 0a 20 20 20 20 20 20 7d  ile $str.      }
0c20: 0a 20 20 20 20 20 20 72 65 6e 61 6d 65 20 66 6f  .      rename fo
0c30: 6f 74 65 72 20 66 6f 6f 74 65 72 5f 73 74 61 6e  oter footer_stan
0c40: 64 61 72 64 0a 20 20 20 20 20 20 70 72 6f 63 20  dard.      proc 
0c50: 66 6f 6f 74 65 72 20 7b 69 64 7d 20 7b 0a 20 20  footer {id} {.  
0c60: 20 20 20 20 20 20 66 6f 6f 74 65 72 5f 73 74 61        footer_sta
0c70: 6e 64 61 72 64 20 24 69 64 0a 20 20 20 20 20 20  ndard $id.      
0c80: 20 20 72 65 6e 61 6d 65 20 66 6f 6f 74 65 72 20    rename footer 
0c90: 22 22 0a 20 20 20 20 20 20 20 20 72 65 6e 61 6d  "".        renam
0ca0: 65 20 70 75 74 73 20 22 22 0a 20 20 20 20 20 20  e puts "".      
0cb0: 20 20 72 65 6e 61 6d 65 20 70 75 74 73 5f 73 74    rename puts_st
0cc0: 61 6e 64 61 72 64 20 70 75 74 73 0a 20 20 20 20  andard puts.    
0cd0: 20 20 20 20 72 65 6e 61 6d 65 20 66 6f 6f 74 65      rename foote
0ce0: 72 5f 73 74 61 6e 64 61 72 64 20 66 6f 6f 74 65  r_standard foote
0cf0: 72 0a 20 20 20 20 20 20 7d 20 0a 20 20 20 20 20  r.      } .     
0d00: 20 73 65 74 20 3a 3a 73 65 63 74 69 6f 6e 5f 66   set ::section_f
0d10: 69 6c 65 20 5b 6f 70 65 6e 20 5b 66 69 6c 65 20  ile [open [file 
0d20: 6a 6f 69 6e 20 24 6f 75 74 70 75 74 64 69 72 20  join $outputdir 
0d30: 6c 61 6e 67 5f 24 6c 61 62 65 6c 2e 68 74 6d 6c  lang_$label.html
0d40: 5d 20 77 5d 0a 20 20 20 20 20 20 68 65 61 64 65  ] w].      heade
0d50: 72 20 22 51 75 65 72 79 20 4c 61 6e 67 75 61 67  r "Query Languag
0d60: 65 20 55 6e 64 65 72 73 74 6f 6f 64 20 62 79 20  e Understood by 
0d70: 53 51 4c 69 74 65 3a 20 24 6e 61 6d 65 22 0a 20  SQLite: $name". 
0d80: 20 20 20 20 20 70 75 74 73 20 22 3c 68 31 3e 53       puts "<h1>S
0d90: 51 4c 20 41 73 20 55 6e 64 65 72 73 74 6f 6f 64  QL As Understood
0da0: 20 42 79 20 53 51 4c 69 74 65 3c 2f 68 31 3e 22   By SQLite</h1>"
0db0: 0a 20 20 20 20 20 20 70 75 74 73 20 22 3c 61 20  .      puts "<a 
0dc0: 68 72 65 66 3d 5c 22 6c 61 6e 67 2e 68 74 6d 6c  href=\"lang.html
0dd0: 5c 22 3e 5c 5b 43 6f 6e 74 65 6e 74 73 5c 5d 3c  \">\[Contents\]<
0de0: 2f 61 3e 22 0a 20 20 20 20 20 20 70 75 74 73 20  /a>".      puts 
0df0: 22 3c 68 32 3e 24 6e 61 6d 65 3c 2f 68 32 3e 22  "<h2>$name</h2>"
0e00: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 0a 20  .      return . 
0e10: 20 20 20 7d 0a 20 20 7d 0a 20 20 70 75 74 73 20     }.  }.  puts 
0e20: 22 5c 6e 3c 68 72 20 2f 3e 22 0a 20 20 69 66 20  "\n<hr />".  if 
0e30: 7b 24 6c 61 62 65 6c 21 3d 22 22 7d 20 7b 0a 20  {$label!=""} {. 
0e40: 20 20 20 70 75 74 73 20 22 3c 61 20 6e 61 6d 65     puts "<a name
0e50: 3d 5c 22 24 6c 61 62 65 6c 5c 22 3e 3c 2f 61 3e  =\"$label\"></a>
0e60: 22 0a 20 20 7d 0a 20 20 70 75 74 73 20 22 3c 68  ".  }.  puts "<h
0e70: 31 3e 24 6e 61 6d 65 3c 2f 68 31 3e 5c 6e 22 0a  1>$name</h1>\n".
0e80: 7d 0a 0a 53 65 63 74 69 6f 6e 20 7b 41 4c 54 45  }..Section {ALTE
0e90: 52 20 54 41 42 4c 45 7d 20 61 6c 74 65 72 74 61  R TABLE} alterta
0ea0: 62 6c 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ble..Syntax {sql
0eb0: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 41 4c  -statement} {.AL
0ec0: 54 45 52 20 54 41 42 4c 45 20 5b 3c 64 61 74 61  TER TABLE [<data
0ed0: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74  base-name> .] <t
0ee0: 61 62 6c 65 2d 6e 61 6d 65 3e 20 3c 61 6c 74 65  able-name> <alte
0ef0: 72 61 74 69 6f 6e 3e 0a 7d 20 7b 61 6c 74 65 72  ration>.} {alter
0f00: 61 74 69 6f 6e 7d 20 7b 0a 52 45 4e 41 4d 45 20  ation} {.RENAME 
0f10: 54 4f 20 3c 6e 65 77 2d 74 61 62 6c 65 2d 6e 61  TO <new-table-na
0f20: 6d 65 3e 0a 7d 20 7b 61 6c 74 65 72 61 74 69 6f  me>.} {alteratio
0f30: 6e 7d 20 7b 0a 41 44 44 20 5b 43 4f 4c 55 4d 4e  n} {.ADD [COLUMN
0f40: 5d 20 3c 63 6f 6c 75 6d 6e 2d 64 65 66 3e 0a 7d  ] <column-def>.}
0f50: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 53 51 4c 69  ..puts {.<p>SQLi
0f60: 74 65 27 73 20 76 65 72 73 69 6f 6e 20 6f 66 20  te's version of 
0f70: 74 68 65 20 41 4c 54 45 52 20 54 41 42 4c 45 20  the ALTER TABLE 
0f80: 63 6f 6d 6d 61 6e 64 20 61 6c 6c 6f 77 73 20 74  command allows t
0f90: 68 65 20 75 73 65 72 20 74 6f 20 0a 72 65 6e 61  he user to .rena
0fa0: 6d 65 20 6f 72 20 61 64 64 20 61 20 6e 65 77 20  me or add a new 
0fb0: 63 6f 6c 75 6d 6e 20 74 6f 20 61 6e 20 65 78 69  column to an exi
0fc0: 73 74 69 6e 67 20 74 61 62 6c 65 2e 20 49 74 20  sting table. It 
0fd0: 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 0a  is not possible.
0fe0: 74 6f 20 72 65 6d 6f 76 65 20 61 20 63 6f 6c 75  to remove a colu
0ff0: 6d 6e 20 66 72 6f 6d 20 61 20 74 61 62 6c 65 2e  mn from a table.
1000: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 52 45  .</p>..<p>The RE
1010: 4e 41 4d 45 20 54 4f 20 73 79 6e 74 61 78 20 69  NAME TO syntax i
1020: 73 20 75 73 65 64 20 74 6f 20 72 65 6e 61 6d 65  s used to rename
1030: 20 74 68 65 20 74 61 62 6c 65 20 69 64 65 6e 74   the table ident
1040: 69 66 69 65 64 20 62 79 20 0a 3c 69 3e 5b 64 61  ified by .<i>[da
1050: 74 61 62 61 73 65 2d 6e 61 6d 65 2e 5d 74 61 62  tabase-name.]tab
1060: 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 20 74 6f 20 3c  le-name</i> to <
1070: 69 3e 6e 65 77 2d 74 61 62 6c 65 2d 6e 61 6d 65  i>new-table-name
1080: 3c 2f 69 3e 2e 20 54 68 69 73 20 63 6f 6d 6d 61  </i>. This comma
1090: 6e 64 20 0a 63 61 6e 6e 6f 74 20 62 65 20 75 73  nd .cannot be us
10a0: 65 64 20 74 6f 20 6d 6f 76 65 20 61 20 74 61 62  ed to move a tab
10b0: 6c 65 20 62 65 74 77 65 65 6e 20 61 74 74 61 63  le between attac
10c0: 68 65 64 20 64 61 74 61 62 61 73 65 73 2c 20 6f  hed databases, o
10d0: 6e 6c 79 20 74 6f 20 72 65 6e 61 6d 65 20 0a 61  nly to rename .a
10e0: 20 74 61 62 6c 65 20 77 69 74 68 69 6e 20 74 68   table within th
10f0: 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 2e  e same database.
1100: 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20  </p>..<p>If the 
1110: 74 61 62 6c 65 20 62 65 69 6e 67 20 72 65 6e 61  table being rena
1120: 6d 65 64 20 68 61 73 20 74 72 69 67 67 65 72 73  med has triggers
1130: 20 6f 72 20 69 6e 64 69 63 65 73 2c 20 74 68 65   or indices, the
1140: 6e 20 74 68 65 73 65 20 72 65 6d 61 69 6e 0a 61  n these remain.a
1150: 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 74  ttached to the t
1160: 61 62 6c 65 20 61 66 74 65 72 20 69 74 20 68 61  able after it ha
1170: 73 20 62 65 65 6e 20 72 65 6e 61 6d 65 64 2e 20  s been renamed. 
1180: 48 6f 77 65 76 65 72 2c 20 69 66 20 74 68 65 72  However, if ther
1190: 65 20 61 72 65 0a 61 6e 79 20 76 69 65 77 20 64  e are.any view d
11a0: 65 66 69 6e 69 74 69 6f 6e 73 2c 20 6f 72 20 73  efinitions, or s
11b0: 74 61 74 65 6d 65 6e 74 73 20 65 78 65 63 75 74  tatements execut
11c0: 65 64 20 62 79 20 74 72 69 67 67 65 72 73 20 74  ed by triggers t
11d0: 68 61 74 20 72 65 66 65 72 20 74 6f 0a 74 68 65  hat refer to.the
11e0: 20 74 61 62 6c 65 20 62 65 69 6e 67 20 72 65 6e   table being ren
11f0: 61 6d 65 64 2c 20 74 68 65 73 65 20 61 72 65 20  amed, these are 
1200: 6e 6f 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  not automaticall
1210: 79 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 75 73  y modified to us
1220: 65 20 74 68 65 20 6e 65 77 0a 74 61 62 6c 65 20  e the new.table 
1230: 6e 61 6d 65 2e 20 49 66 20 74 68 69 73 20 69 73  name. If this is
1240: 20 72 65 71 75 69 72 65 64 2c 20 74 68 65 20 74   required, the t
1250: 72 69 67 67 65 72 73 20 6f 72 20 76 69 65 77 20  riggers or view 
1260: 64 65 66 69 6e 69 74 69 6f 6e 73 20 6d 75 73 74  definitions must
1270: 20 62 65 0a 64 72 6f 70 70 65 64 20 61 6e 64 20   be.dropped and 
1280: 72 65 63 72 65 61 74 65 64 20 74 6f 20 75 73 65  recreated to use
1290: 20 74 68 65 20 6e 65 77 20 74 61 62 6c 65 20 6e   the new table n
12a0: 61 6d 65 20 62 79 20 68 61 6e 64 2e 0a 3c 2f 70  ame by hand..</p
12b0: 3e 0a 0a 3c 70 3e 54 68 65 20 41 44 44 20 5b 43  >..<p>The ADD [C
12c0: 4f 4c 55 4d 4e 5d 20 73 79 6e 74 61 78 20 69 73  OLUMN] syntax is
12d0: 20 75 73 65 64 20 74 6f 20 61 64 64 20 61 20 6e   used to add a n
12e0: 65 77 20 63 6f 6c 75 6d 6e 20 74 6f 20 61 6e 20  ew column to an 
12f0: 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65 2e 0a  existing table..
1300: 54 68 65 20 6e 65 77 20 63 6f 6c 75 6d 6e 20 69  The new column i
1310: 73 20 61 6c 77 61 79 73 20 61 70 70 65 6e 64 65  s always appende
1320: 64 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20  d to the end of 
1330: 74 68 65 20 6c 69 73 74 20 6f 66 20 65 78 69 73  the list of exis
1340: 74 69 6e 67 20 63 6f 6c 75 6d 6e 73 2e 0a 3c 69  ting columns..<i
1350: 3e 43 6f 6c 75 6d 6e 2d 64 65 66 3c 2f 69 3e 20  >Column-def</i> 
1360: 6d 61 79 20 74 61 6b 65 20 61 6e 79 20 6f 66 20  may take any of 
1370: 74 68 65 20 66 6f 72 6d 73 20 70 65 72 6d 69 73  the forms permis
1380: 73 61 62 6c 65 20 69 6e 20 61 20 43 52 45 41 54  sable in a CREAT
1390: 45 20 54 41 42 4c 45 20 0a 73 74 61 74 65 6d 65  E TABLE .stateme
13a0: 6e 74 2c 20 77 69 74 68 20 74 68 65 20 66 6f 6c  nt, with the fol
13b0: 6c 6f 77 69 6e 67 20 72 65 73 74 72 69 63 74 69  lowing restricti
13c0: 6f 6e 73 3a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 54 68  ons:.<ul>.<li>Th
13d0: 65 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74  e column may not
13e0: 20 68 61 76 65 20 61 20 50 52 49 4d 41 52 59 20   have a PRIMARY 
13f0: 4b 45 59 20 6f 72 20 55 4e 49 51 55 45 20 63 6f  KEY or UNIQUE co
1400: 6e 73 74 72 61 69 6e 74 2e 3c 2f 6c 69 3e 0a 3c  nstraint.</li>.<
1410: 6c 69 3e 54 68 65 20 63 6f 6c 75 6d 6e 20 6d 61  li>The column ma
1420: 79 20 6e 6f 74 20 68 61 76 65 20 61 20 64 65 66  y not have a def
1430: 61 75 6c 74 20 76 61 6c 75 65 20 6f 66 20 43 55  ault value of CU
1440: 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52  RRENT_TIME, CURR
1450: 45 4e 54 5f 44 41 54 45 20 0a 20 20 20 20 6f 72  ENT_DATE .    or
1460: 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41   CURRENT_TIMESTA
1470: 4d 50 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 49 66 20  MP.</li>.<li>If 
1480: 61 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74  a NOT NULL const
1490: 72 61 69 6e 74 20 69 73 20 73 70 65 63 69 66 69  raint is specifi
14a0: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 63 6f 6c  ed, then the col
14b0: 75 6d 6e 20 6d 75 73 74 20 68 61 76 65 20 61 0a  umn must have a.
14c0: 20 20 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75      default valu
14d0: 65 20 6f 74 68 65 72 20 74 68 61 6e 20 4e 55 4c  e other than NUL
14e0: 4c 2e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 54 68 65  L..</ul>..<p>The
14f0: 20 65 78 65 63 75 74 69 6f 6e 20 74 69 6d 65 20   execution time 
1500: 6f 66 20 74 68 65 20 41 4c 54 45 52 20 54 41 42  of the ALTER TAB
1510: 4c 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 69 6e  LE command is in
1520: 64 65 70 65 6e 64 65 6e 74 20 6f 66 0a 74 68 65  dependent of.the
1530: 20 61 6d 6f 75 6e 74 20 6f 66 20 64 61 74 61 20   amount of data 
1540: 69 6e 20 74 68 65 20 74 61 62 6c 65 2e 20 20 54  in the table.  T
1550: 68 65 20 41 4c 54 45 52 20 54 41 42 4c 45 20 63  he ALTER TABLE c
1560: 6f 6d 6d 61 6e 64 20 72 75 6e 73 20 61 73 20 71  ommand runs as q
1570: 75 69 63 6b 6c 79 0a 6f 6e 20 61 20 74 61 62 6c  uickly.on a tabl
1580: 65 20 77 69 74 68 20 31 30 20 6d 69 6c 6c 69 6f  e with 10 millio
1590: 6e 20 72 6f 77 73 20 61 73 20 69 74 20 64 6f 65  n rows as it doe
15a0: 73 20 6f 6e 20 61 20 74 61 62 6c 65 20 77 69 74  s on a table wit
15b0: 68 20 31 20 72 6f 77 2e 0a 3c 2f 70 3e 0a 0a 3c  h 1 row..</p>..<
15c0: 70 3e 41 66 74 65 72 20 41 44 44 20 43 4f 4c 55  p>After ADD COLU
15d0: 4d 4e 20 68 61 73 20 62 65 65 6e 20 72 75 6e 20  MN has been run 
15e0: 6f 6e 20 61 20 64 61 74 61 62 61 73 65 2c 20 74  on a database, t
15f0: 68 61 74 20 64 61 74 61 62 61 73 65 20 77 69 6c  hat database wil
1600: 6c 20 6e 6f 74 0a 62 65 20 72 65 61 64 61 62 6c  l not.be readabl
1610: 65 20 62 79 20 53 51 4c 69 74 65 20 76 65 72 73  e by SQLite vers
1620: 69 6f 6e 20 33 2e 31 2e 33 20 61 6e 64 20 65 61  ion 3.1.3 and ea
1630: 72 6c 69 65 72 20 75 6e 74 69 6c 20 74 68 65 20  rlier until the 
1640: 64 61 74 61 62 61 73 65 0a 69 73 20 3c 61 20 68  database.is <a h
1650: 72 65 66 3d 22 6c 61 6e 67 5f 76 61 63 75 75 6d  ref="lang_vacuum
1660: 2e 68 74 6d 6c 22 3e 56 41 43 55 55 4d 3c 2f 61  .html">VACUUM</a
1670: 3e 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74  >ed.</p>.}..Sect
1680: 69 6f 6e 20 7b 41 4e 41 4c 59 5a 45 7d 20 61 6e  ion {ANALYZE} an
1690: 61 6c 79 7a 65 0a 0a 53 79 6e 74 61 78 20 7b 73  alyze..Syntax {s
16a0: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
16b0: 20 20 41 4e 41 4c 59 5a 45 0a 7d 0a 53 79 6e 74    ANALYZE.}.Synt
16c0: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
16d0: 74 7d 20 7b 0a 20 20 41 4e 41 4c 59 5a 45 20 3c  t} {.  ANALYZE <
16e0: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 0a 7d  database-name>.}
16f0: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
1700: 74 65 6d 65 6e 74 7d 20 7b 0a 20 20 41 4e 41 4c  tement} {.  ANAL
1710: 59 5a 45 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e  YZE [<database-n
1720: 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e  ame> .] <table-n
1730: 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  ame>.}..puts {.<
1740: 70 3e 54 68 65 20 41 4e 41 4c 59 5a 45 20 63 6f  p>The ANALYZE co
1750: 6d 6d 61 6e 64 20 67 61 74 68 65 72 73 20 73 74  mmand gathers st
1760: 61 74 69 73 74 69 63 73 20 61 62 6f 75 74 20 69  atistics about i
1770: 6e 64 69 63 65 73 20 61 6e 64 20 73 74 6f 72 65  ndices and store
1780: 73 20 74 68 65 6d 0a 69 6e 20 61 20 73 70 65 63  s them.in a spec
1790: 69 61 6c 20 74 61 62 6c 65 73 20 69 6e 20 74 68  ial tables in th
17a0: 65 20 64 61 74 61 62 61 73 65 20 77 68 65 72 65  e database where
17b0: 20 74 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d   the query optim
17c0: 69 7a 65 72 20 63 61 6e 20 75 73 65 0a 74 68 65  izer can use.the
17d0: 6d 20 74 6f 20 68 65 6c 70 20 6d 61 6b 65 20 62  m to help make b
17e0: 65 74 74 65 72 20 69 6e 64 65 78 20 63 68 6f 69  etter index choi
17f0: 63 65 73 2e 0a 49 66 20 6e 6f 20 61 72 67 75 6d  ces..If no argum
1800: 65 6e 74 73 20 61 72 65 20 67 69 76 65 6e 2c 20  ents are given, 
1810: 61 6c 6c 20 69 6e 64 69 63 65 73 20 69 6e 20 61  all indices in a
1820: 6c 6c 20 61 74 74 61 63 68 65 64 20 64 61 74 61  ll attached data
1830: 62 61 73 65 73 20 61 72 65 0a 61 6e 61 6c 79 7a  bases are.analyz
1840: 65 64 2e 20 20 49 66 20 61 20 64 61 74 61 62 61  ed.  If a databa
1850: 73 65 20 6e 61 6d 65 20 69 73 20 67 69 76 65 6e  se name is given
1860: 20 61 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74   as the argument
1870: 2c 20 61 6c 6c 20 69 6e 64 69 63 65 73 0a 69 6e  , all indices.in
1880: 20 74 68 61 74 20 6f 6e 65 20 64 61 74 61 62 61   that one databa
1890: 73 65 20 61 72 65 20 61 6e 61 6c 79 7a 65 64 2e  se are analyzed.
18a0: 20 20 49 66 20 74 68 65 20 61 72 67 75 6d 65 6e    If the argumen
18b0: 74 20 69 73 20 61 20 74 61 62 6c 65 20 6e 61 6d  t is a table nam
18c0: 65 2c 0a 74 68 65 6e 20 6f 6e 6c 79 20 69 6e 64  e,.then only ind
18d0: 69 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 20  ices associated 
18e0: 77 69 74 68 20 74 68 61 74 20 6f 6e 65 20 74 61  with that one ta
18f0: 62 6c 65 20 61 72 65 20 61 6e 61 6c 79 7a 65 64  ble are analyzed
1900: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 69 6e  .</p>..<p>The in
1910: 69 74 69 61 6c 20 69 6d 70 6c 65 6d 65 6e 74 61  itial implementa
1920: 74 69 6f 6e 20 73 74 6f 72 65 73 20 61 6c 6c 20  tion stores all 
1930: 73 74 61 74 69 73 74 69 63 73 20 69 6e 20 61 20  statistics in a 
1940: 73 69 6e 67 6c 65 0a 74 61 62 6c 65 20 6e 61 6d  single.table nam
1950: 65 64 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61  ed <b>sqlite_sta
1960: 74 31 3c 2f 62 3e 2e 20 20 46 75 74 75 72 65 20  t1</b>.  Future 
1970: 65 6e 68 61 6e 63 65 6d 65 6e 74 73 20 6d 61 79  enhancements may
1980: 20 63 72 65 61 74 65 0a 61 64 64 69 74 69 6f 6e   create.addition
1990: 61 6c 20 74 61 62 6c 65 73 20 77 69 74 68 20 74  al tables with t
19a0: 68 65 20 73 61 6d 65 20 6e 61 6d 65 20 70 61 74  he same name pat
19b0: 74 65 72 6e 20 65 78 63 65 70 74 20 77 69 74 68  tern except with
19c0: 20 74 68 65 20 22 31 22 0a 63 68 61 6e 67 65 64   the "1".changed
19d0: 20 74 6f 20 61 20 64 69 66 66 65 72 65 6e 74 20   to a different 
19e0: 64 69 67 69 74 2e 20 20 54 68 65 20 3c 62 3e 73  digit.  The <b>s
19f0: 71 6c 69 74 65 5f 73 74 61 74 31 3c 2f 62 3e 20  qlite_stat1</b> 
1a00: 74 61 62 6c 65 20 63 61 6e 6e 6f 74 0a 62 65 20  table cannot.be 
1a10: 3c 61 20 68 72 65 66 3d 22 23 64 72 6f 70 74 61  <a href="#dropta
1a20: 62 6c 65 22 3e 44 52 4f 50 3c 2f 61 3e 70 65 64  ble">DROP</a>ped
1a30: 2c 0a 62 75 74 20 69 74 20 61 6c 6c 20 74 68 65  ,.but it all the
1a40: 20 63 6f 6e 74 65 6e 74 20 63 61 6e 20 62 65 20   content can be 
1a50: 3c 61 20 68 72 65 66 3d 22 23 64 65 6c 65 74 65  <a href="#delete
1a60: 22 3e 44 45 4c 45 54 45 3c 2f 61 3e 64 20 77 68  ">DELETE</a>d wh
1a70: 69 63 68 20 68 61 73 20 74 68 65 0a 73 61 6d 65  ich has the.same
1a80: 20 65 66 66 65 63 74 2e 3c 2f 70 3e 0a 7d 0a 0a   effect.</p>.}..
1a90: 53 65 63 74 69 6f 6e 20 7b 41 54 54 41 43 48 20  Section {ATTACH 
1aa0: 44 41 54 41 42 41 53 45 7d 20 61 74 74 61 63 68  DATABASE} attach
1ab0: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
1ac0: 61 74 65 6d 65 6e 74 7d 20 7b 0a 41 54 54 41 43  atement} {.ATTAC
1ad0: 48 20 5b 44 41 54 41 42 41 53 45 5d 20 3c 64 61  H [DATABASE] <da
1ae0: 74 61 62 61 73 65 2d 66 69 6c 65 6e 61 6d 65 3e  tabase-filename>
1af0: 20 41 53 20 3c 64 61 74 61 62 61 73 65 2d 6e 61   AS <database-na
1b00: 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  me>.}..puts {.<p
1b10: 3e 54 68 65 20 41 54 54 41 43 48 20 44 41 54 41  >The ATTACH DATA
1b20: 42 41 53 45 20 73 74 61 74 65 6d 65 6e 74 20 61  BASE statement a
1b30: 64 64 73 20 61 20 70 72 65 65 78 69 73 74 69 6e  dds a preexistin
1b40: 67 20 64 61 74 61 62 61 73 65 20 0a 66 69 6c 65  g database .file
1b50: 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20   to the current 
1b60: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1b70: 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 66 69 6c  ion.  If the fil
1b80: 65 6e 61 6d 65 20 63 6f 6e 74 61 69 6e 73 20 0a  ename contains .
1b90: 70 75 6e 63 74 75 61 74 69 6f 6e 20 63 68 61 72  punctuation char
1ba0: 61 63 74 65 72 73 20 69 74 20 6d 75 73 74 20 62  acters it must b
1bb0: 65 20 71 75 6f 74 65 64 2e 20 20 54 68 65 20 6e  e quoted.  The n
1bc0: 61 6d 65 73 20 27 6d 61 69 6e 27 20 61 6e 64 20  ames 'main' and 
1bd0: 0a 27 74 65 6d 70 27 20 72 65 66 65 72 20 74 6f  .'temp' refer to
1be0: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
1bf0: 73 65 20 61 6e 64 20 74 68 65 20 64 61 74 61 62  se and the datab
1c00: 61 73 65 20 75 73 65 64 20 66 6f 72 20 0a 74 65  ase used for .te
1c10: 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73 2e 20  mporary tables. 
1c20: 20 54 68 65 73 65 20 63 61 6e 6e 6f 74 20 62 65   These cannot be
1c30: 20 64 65 74 61 63 68 65 64 2e 20 20 41 74 74 61   detached.  Atta
1c40: 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20 0a  ched databases .
1c50: 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73 69 6e  are removed usin
1c60: 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23  g the <a href="#
1c70: 64 65 74 61 63 68 22 3e 44 45 54 41 43 48 20 44  detach">DETACH D
1c80: 41 54 41 42 41 53 45 3c 2f 61 3e 20 0a 73 74 61  ATABASE</a> .sta
1c90: 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e  tement.</p>..<p>
1ca0: 59 6f 75 20 63 61 6e 20 72 65 61 64 20 66 72 6f  You can read fro
1cb0: 6d 20 61 6e 64 20 77 72 69 74 65 20 74 6f 20 61  m and write to a
1cc0: 6e 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  n attached datab
1cd0: 61 73 65 20 61 6e 64 20 79 6f 75 0a 63 61 6e 20  ase and you.can 
1ce0: 6d 6f 64 69 66 79 20 74 68 65 20 73 63 68 65 6d  modify the schem
1cf0: 61 20 6f 66 20 74 68 65 20 61 74 74 61 63 68 65  a of the attache
1d00: 64 20 64 61 74 61 62 61 73 65 2e 20 20 54 68 69  d database.  Thi
1d10: 73 20 69 73 20 61 20 6e 65 77 0a 66 65 61 74 75  s is a new.featu
1d20: 72 65 20 6f 66 20 53 51 4c 69 74 65 20 76 65 72  re of SQLite ver
1d30: 73 69 6f 6e 20 33 2e 30 2e 20 20 49 6e 20 53 51  sion 3.0.  In SQ
1d40: 4c 69 74 65 20 32 2e 38 2c 20 73 63 68 65 6d 61  Lite 2.8, schema
1d50: 20 63 68 61 6e 67 65 73 0a 74 6f 20 61 74 74 61   changes.to atta
1d60: 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20 77  ched databases w
1d70: 65 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e  ere not allowed.
1d80: 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63 61 6e  </p>..<p>You can
1d90: 6e 6f 74 20 63 72 65 61 74 65 20 61 20 6e 65 77  not create a new
1da0: 20 74 61 62 6c 65 20 77 69 74 68 20 74 68 65 20   table with the 
1db0: 73 61 6d 65 20 6e 61 6d 65 20 61 73 20 61 20 74  same name as a t
1dc0: 61 62 6c 65 20 69 6e 20 0a 61 6e 20 61 74 74 61  able in .an atta
1dd0: 63 68 65 64 20 64 61 74 61 62 61 73 65 2c 20 62  ched database, b
1de0: 75 74 20 79 6f 75 20 63 61 6e 20 61 74 74 61 63  ut you can attac
1df0: 68 20 61 20 64 61 74 61 62 61 73 65 20 77 68 69  h a database whi
1e00: 63 68 20 63 6f 6e 74 61 69 6e 73 0a 74 61 62 6c  ch contains.tabl
1e10: 65 73 20 77 68 6f 73 65 20 6e 61 6d 65 73 20 61  es whose names a
1e20: 72 65 20 64 75 70 6c 69 63 61 74 65 73 20 6f 66  re duplicates of
1e30: 20 74 61 62 6c 65 73 20 69 6e 20 74 68 65 20 6d   tables in the m
1e40: 61 69 6e 20 64 61 74 61 62 61 73 65 2e 20 20 49  ain database.  I
1e50: 74 20 69 73 20 0a 61 6c 73 6f 20 70 65 72 6d 69  t is .also permi
1e60: 73 73 69 62 6c 65 20 74 6f 20 61 74 74 61 63 68  ssible to attach
1e70: 20 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61   the same databa
1e80: 73 65 20 66 69 6c 65 20 6d 75 6c 74 69 70 6c 65  se file multiple
1e90: 20 74 69 6d 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e   times.</p>..<p>
1ea0: 54 61 62 6c 65 73 20 69 6e 20 61 6e 20 61 74 74  Tables in an att
1eb0: 61 63 68 65 64 20 64 61 74 61 62 61 73 65 20 63  ached database c
1ec0: 61 6e 20 62 65 20 72 65 66 65 72 72 65 64 20 74  an be referred t
1ed0: 6f 20 75 73 69 6e 67 20 74 68 65 20 73 79 6e 74  o using the synt
1ee0: 61 78 20 0a 3c 69 3e 64 61 74 61 62 61 73 65 2d  ax .<i>database-
1ef0: 6e 61 6d 65 2e 74 61 62 6c 65 2d 6e 61 6d 65 3c  name.table-name<
1f00: 2f 69 3e 2e 20 20 49 66 20 61 6e 20 61 74 74 61  /i>.  If an atta
1f10: 63 68 65 64 20 74 61 62 6c 65 20 64 6f 65 73 6e  ched table doesn
1f20: 27 74 20 68 61 76 65 20 0a 61 20 64 75 70 6c 69  't have .a dupli
1f30: 63 61 74 65 20 74 61 62 6c 65 20 6e 61 6d 65 20  cate table name 
1f40: 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61  in the main data
1f50: 62 61 73 65 2c 20 69 74 20 64 6f 65 73 6e 27 74  base, it doesn't
1f60: 20 72 65 71 75 69 72 65 20 61 20 0a 64 61 74 61   require a .data
1f70: 62 61 73 65 20 6e 61 6d 65 20 70 72 65 66 69 78  base name prefix
1f80: 2e 20 20 57 68 65 6e 20 61 20 64 61 74 61 62 61  .  When a databa
1f90: 73 65 20 69 73 20 61 74 74 61 63 68 65 64 2c 20  se is attached, 
1fa0: 61 6c 6c 20 6f 66 20 69 74 73 20 0a 74 61 62 6c  all of its .tabl
1fb0: 65 73 20 77 68 69 63 68 20 64 6f 6e 27 74 20 68  es which don't h
1fc0: 61 76 65 20 64 75 70 6c 69 63 61 74 65 20 6e 61  ave duplicate na
1fd0: 6d 65 73 20 62 65 63 6f 6d 65 20 74 68 65 20 27  mes become the '
1fe0: 64 65 66 61 75 6c 74 27 20 74 61 62 6c 65 0a 6f  default' table.o
1ff0: 66 20 74 68 61 74 20 6e 61 6d 65 2e 20 20 41 6e  f that name.  An
2000: 79 20 74 61 62 6c 65 73 20 6f 66 20 74 68 61 74  y tables of that
2010: 20 6e 61 6d 65 20 61 74 74 61 63 68 65 64 20 61   name attached a
2020: 66 74 65 72 77 61 72 64 73 20 72 65 71 75 69 72  fterwards requir
2030: 65 20 74 68 65 20 74 61 62 6c 65 20 0a 70 72 65  e the table .pre
2040: 66 69 78 2e 20 49 66 20 74 68 65 20 27 64 65 66  fix. If the 'def
2050: 61 75 6c 74 27 20 74 61 62 6c 65 20 6f 66 20 61  ault' table of a
2060: 20 67 69 76 65 6e 20 6e 61 6d 65 20 69 73 20 64   given name is d
2070: 65 74 61 63 68 65 64 2c 20 74 68 65 6e 20 0a 74  etached, then .t
2080: 68 65 20 6c 61 73 74 20 74 61 62 6c 65 20 6f 66  he last table of
2090: 20 74 68 61 74 20 6e 61 6d 65 20 61 74 74 61 63   that name attac
20a0: 68 65 64 20 62 65 63 6f 6d 65 73 20 74 68 65 20  hed becomes the 
20b0: 6e 65 77 20 64 65 66 61 75 6c 74 2e 3c 2f 70 3e  new default.</p>
20c0: 0a 0a 3c 70 3e 0a 54 72 61 6e 73 61 63 74 69 6f  ..<p>.Transactio
20d0: 6e 73 20 69 6e 76 6f 6c 76 69 6e 67 20 6d 75 6c  ns involving mul
20e0: 74 69 70 6c 65 20 61 74 74 61 63 68 65 64 20 64  tiple attached d
20f0: 61 74 61 62 61 73 65 73 20 61 72 65 20 61 74 6f  atabases are ato
2100: 6d 69 63 2c 0a 61 73 73 75 6d 69 6e 67 20 74 68  mic,.assuming th
2110: 61 74 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61  at the main data
2120: 62 61 73 65 20 69 73 20 6e 6f 74 20 22 3a 6d 65  base is not ":me
2130: 6d 6f 72 79 3a 22 2e 20 20 49 66 20 74 68 65 20  mory:".  If the 
2140: 6d 61 69 6e 0a 64 61 74 61 62 61 73 65 20 69 73  main.database is
2150: 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 74 68 65 6e   ":memory:" then
2160: 20 0a 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 63   .transactions c
2170: 6f 6e 74 69 6e 75 65 20 74 6f 20 62 65 20 61 74  ontinue to be at
2180: 6f 6d 69 63 20 77 69 74 68 69 6e 20 65 61 63 68  omic within each
2190: 20 69 6e 64 69 76 69 64 75 61 6c 0a 64 61 74 61   individual.data
21a0: 62 61 73 65 20 66 69 6c 65 2e 20 42 75 74 20 69  base file. But i
21b0: 66 20 74 68 65 20 68 6f 73 74 20 63 6f 6d 70 75  f the host compu
21c0: 74 65 72 20 63 72 61 73 68 65 73 20 69 6e 20 74  ter crashes in t
21d0: 68 65 20 6d 69 64 64 6c 65 0a 6f 66 20 61 20 43  he middle.of a C
21e0: 4f 4d 4d 49 54 20 77 68 65 72 65 20 74 77 6f 20  OMMIT where two 
21f0: 6f 72 20 6d 6f 72 65 20 64 61 74 61 62 61 73 65  or more database
2200: 20 66 69 6c 65 73 20 61 72 65 20 75 70 64 61 74   files are updat
2210: 65 64 2c 0a 73 6f 6d 65 20 6f 66 20 74 68 6f 73  ed,.some of thos
2220: 65 20 66 69 6c 65 73 20 6d 69 67 68 74 20 67 65  e files might ge
2230: 74 20 74 68 65 20 63 68 61 6e 67 65 73 20 77 68  t the changes wh
2240: 65 72 65 20 6f 74 68 65 72 73 0a 6d 69 67 68 74  ere others.might
2250: 20 6e 6f 74 2e 0a 41 74 6f 6d 69 63 20 63 6f 6d   not..Atomic com
2260: 6d 69 74 20 6f 66 20 61 74 74 61 63 68 65 64 20  mit of attached 
2270: 64 61 74 61 62 61 73 65 73 20 69 73 20 61 20 6e  databases is a n
2280: 65 77 20 66 65 61 74 75 72 65 20 6f 66 20 53 51  ew feature of SQ
2290: 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 30  Lite version 3.0
22a0: 2e 0a 49 6e 20 53 51 4c 69 74 65 20 76 65 72 73  ..In SQLite vers
22b0: 69 6f 6e 20 32 2e 38 2c 20 61 6c 6c 20 63 6f 6d  ion 2.8, all com
22c0: 6d 69 74 73 20 74 6f 20 61 74 74 61 63 68 65 64  mits to attached
22d0: 20 64 61 74 61 62 61 73 65 73 20 62 65 68 61 76   databases behav
22e0: 65 64 20 61 73 20 69 66 0a 74 68 65 20 6d 61 69  ed as if.the mai
22f0: 6e 20 64 61 74 61 62 61 73 65 20 77 65 72 65 20  n database were 
2300: 22 3a 6d 65 6d 6f 72 79 3a 22 2e 0a 3c 2f 70 3e  ":memory:"..</p>
2310: 0a 0a 3c 70 3e 54 68 65 72 65 20 69 73 20 61 20  ..<p>There is a 
2320: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6c 69 6d  compile-time lim
2330: 69 74 20 6f 66 20 31 30 20 61 74 74 61 63 68 65  it of 10 attache
2340: 64 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73  d database files
2350: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
2360: 6e 20 7b 42 45 47 49 4e 20 54 52 41 4e 53 41 43  n {BEGIN TRANSAC
2370: 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f  TION} transactio
2380: 6e 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  n..Syntax {sql-s
2390: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 42 45 47 49  tatement} {.BEGI
23a0: 4e 20 5b 20 44 45 46 45 52 52 45 44 20 7c 20 49  N [ DEFERRED | I
23b0: 4d 4d 45 44 49 41 54 45 20 7c 20 45 58 43 4c 55  MMEDIATE | EXCLU
23c0: 53 49 56 45 20 5d 20 5b 54 52 41 4e 53 41 43 54  SIVE ] [TRANSACT
23d0: 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a  ION [<name>]].}.
23e0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
23f0: 65 6d 65 6e 74 7d 20 7b 0a 45 4e 44 20 5b 54 52  ement} {.END [TR
2400: 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65  ANSACTION [<name
2410: 3e 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71  >]].}.Syntax {sq
2420: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43  l-statement} {.C
2430: 4f 4d 4d 49 54 20 5b 54 52 41 4e 53 41 43 54 49  OMMIT [TRANSACTI
2440: 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53  ON [<name>]].}.S
2450: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
2460: 6d 65 6e 74 7d 20 7b 0a 52 4f 4c 4c 42 41 43 4b  ment} {.ROLLBACK
2470: 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b 3c   [TRANSACTION [<
2480: 6e 61 6d 65 3e 5d 5d 0a 7d 0a 0a 70 75 74 73 20  name>]].}..puts 
2490: 7b 0a 3c 70 3e 42 65 67 69 6e 6e 69 6e 67 20 69  {.<p>Beginning i
24a0: 6e 20 76 65 72 73 69 6f 6e 20 32 2e 30 2c 20 53  n version 2.0, S
24b0: 51 4c 69 74 65 20 73 75 70 70 6f 72 74 73 20 74  QLite supports t
24c0: 72 61 6e 73 61 63 74 69 6f 6e 73 20 77 69 74 68  ransactions with
24d0: 0a 72 6f 6c 6c 62 61 63 6b 20 61 6e 64 20 61 74  .rollback and at
24e0: 6f 6d 69 63 20 63 6f 6d 6d 69 74 2e 3c 2f 70 3e  omic commit.</p>
24f0: 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61  ..<p>The optiona
2500: 6c 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 6e 61  l transaction na
2510: 6d 65 20 69 73 20 69 67 6e 6f 72 65 64 2e 20 53  me is ignored. S
2520: 51 4c 69 74 65 20 63 75 72 72 65 6e 74 6c 79 20  QLite currently 
2530: 0a 64 6f 65 73 20 6e 6f 74 20 61 6c 6c 6f 77 20  .does not allow 
2540: 6e 65 73 74 65 64 20 74 72 61 6e 73 61 63 74 69  nested transacti
2550: 6f 6e 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 4e 6f  ons.</p>..<p>.No
2560: 20 63 68 61 6e 67 65 73 20 63 61 6e 20 62 65 20   changes can be 
2570: 6d 61 64 65 20 74 6f 20 74 68 65 20 64 61 74 61  made to the data
2580: 62 61 73 65 20 65 78 63 65 70 74 20 77 69 74 68  base except with
2590: 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  in a transaction
25a0: 2e 0a 41 6e 79 20 63 6f 6d 6d 61 6e 64 20 74 68  ..Any command th
25b0: 61 74 20 63 68 61 6e 67 65 73 20 74 68 65 20 64  at changes the d
25c0: 61 74 61 62 61 73 65 20 28 62 61 73 69 63 61 6c  atabase (basical
25d0: 6c 79 2c 20 61 6e 79 20 53 51 4c 20 63 6f 6d 6d  ly, any SQL comm
25e0: 61 6e 64 0a 6f 74 68 65 72 20 74 68 61 6e 20 53  and.other than S
25f0: 45 4c 45 43 54 29 20 77 69 6c 6c 20 61 75 74 6f  ELECT) will auto
2600: 6d 61 74 69 63 61 6c 6c 79 20 73 74 61 72 74 20  matically start 
2610: 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 66  a transaction if
2620: 0a 6f 6e 65 20 69 73 20 6e 6f 74 20 61 6c 72 65  .one is not alre
2630: 61 64 79 20 69 6e 20 65 66 66 65 63 74 2e 20 20  ady in effect.  
2640: 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 74  Automatically st
2650: 61 72 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f  arted transactio
2660: 6e 73 0a 61 72 65 20 63 6f 6d 6d 69 74 74 65 64  ns.are committed
2670: 20 61 74 20 74 68 65 20 63 6f 6e 63 6c 75 73 69   at the conclusi
2680: 6f 6e 20 6f 66 20 74 68 65 20 63 6f 6d 6d 61 6e  on of the comman
2690: 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61  d..</p>..<p>.Tra
26a0: 6e 73 61 63 74 69 6f 6e 73 20 63 61 6e 20 62 65  nsactions can be
26b0: 20 73 74 61 72 74 65 64 20 6d 61 6e 75 61 6c 6c   started manuall
26c0: 79 20 75 73 69 6e 67 20 74 68 65 20 42 45 47 49  y using the BEGI
26d0: 4e 0a 63 6f 6d 6d 61 6e 64 2e 20 20 53 75 63 68  N.command.  Such
26e0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 75 73   transactions us
26f0: 75 61 6c 6c 79 20 70 65 72 73 69 73 74 20 75 6e  ually persist un
2700: 74 69 6c 20 74 68 65 20 6e 65 78 74 0a 43 4f 4d  til the next.COM
2710: 4d 49 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 20  MIT or ROLLBACK 
2720: 63 6f 6d 6d 61 6e 64 2e 20 20 42 75 74 20 61 20  command.  But a 
2730: 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c  transaction will
2740: 20 61 6c 73 6f 20 0a 52 4f 4c 4c 42 41 43 4b 20   also .ROLLBACK 
2750: 69 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  if the database 
2760: 69 73 20 63 6c 6f 73 65 64 20 6f 72 20 69 66 20  is closed or if 
2770: 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 0a  an error occurs.
2780: 61 6e 64 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b  and the ROLLBACK
2790: 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75   conflict resolu
27a0: 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 69  tion algorithm i
27b0: 73 20 73 70 65 63 69 66 69 65 64 2e 0a 53 65 65  s specified..See
27c0: 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69   the documentati
27d0: 6f 6e 20 6f 6e 20 74 68 65 20 3c 61 20 68 72 65  on on the <a hre
27e0: 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e  f="#conflict">ON
27f0: 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 0a 63 6c   CONFLICT</a>.cl
2800: 61 75 73 65 20 66 6f 72 20 61 64 64 69 74 69 6f  ause for additio
2810: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  nal information 
2820: 61 62 6f 75 74 20 74 68 65 20 52 4f 4c 4c 42 41  about the ROLLBA
2830: 43 4b 0a 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  CK.conflict reso
2840: 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
2850: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 49 6e 20 53  ..</p>..<p>.In S
2860: 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e  QLite version 3.
2870: 30 2e 38 20 61 6e 64 20 6c 61 74 65 72 2c 20 74  0.8 and later, t
2880: 72 61 6e 73 61 63 74 69 6f 6e 73 20 63 61 6e 20  ransactions can 
2890: 62 65 20 64 65 66 65 72 72 65 64 2c 0a 69 6d 6d  be deferred,.imm
28a0: 65 64 69 61 74 65 2c 20 6f 72 20 65 78 63 6c 75  ediate, or exclu
28b0: 73 69 76 65 2e 20 20 44 65 66 65 72 72 65 64 20  sive.  Deferred 
28c0: 6d 65 61 6e 73 20 74 68 61 74 20 6e 6f 20 6c 6f  means that no lo
28d0: 63 6b 73 20 61 72 65 20 61 63 71 75 69 72 65 64  cks are acquired
28e0: 0a 6f 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  .on the database
28f0: 20 75 6e 74 69 6c 20 74 68 65 20 64 61 74 61 62   until the datab
2900: 61 73 65 20 69 73 20 66 69 72 73 74 20 61 63 63  ase is first acc
2910: 65 73 73 65 64 2e 20 20 54 68 75 73 20 77 69 74  essed.  Thus wit
2920: 68 20 61 0a 64 65 66 65 72 72 65 64 20 74 72 61  h a.deferred tra
2930: 6e 73 61 63 74 69 6f 6e 2c 20 74 68 65 20 42 45  nsaction, the BE
2940: 47 49 4e 20 73 74 61 74 65 6d 65 6e 74 20 69 74  GIN statement it
2950: 73 65 6c 66 20 64 6f 65 73 20 6e 6f 74 68 69 6e  self does nothin
2960: 67 2e 20 20 4c 6f 63 6b 73 0a 61 72 65 20 6e 6f  g.  Locks.are no
2970: 74 20 61 63 71 75 69 72 65 64 20 75 6e 74 69 6c  t acquired until
2980: 20 74 68 65 20 66 69 72 73 74 20 72 65 61 64 20   the first read 
2990: 6f 72 20 77 72 69 74 65 20 6f 70 65 72 61 74 69  or write operati
29a0: 6f 6e 2e 20 20 54 68 65 20 66 69 72 73 74 20 72  on.  The first r
29b0: 65 61 64 0a 6f 70 65 72 61 74 69 6f 6e 20 61 67  ead.operation ag
29c0: 61 69 6e 73 74 20 61 20 64 61 74 61 62 61 73 65  ainst a database
29d0: 20 63 72 65 61 74 65 73 20 61 20 53 48 41 52 45   creates a SHARE
29e0: 44 20 6c 6f 63 6b 20 61 6e 64 20 74 68 65 20 66  D lock and the f
29f0: 69 72 73 74 0a 77 72 69 74 65 20 6f 70 65 72 61  irst.write opera
2a00: 74 69 6f 6e 20 63 72 65 61 74 65 73 20 61 20 52  tion creates a R
2a10: 45 53 45 52 56 45 44 20 6c 6f 63 6b 2e 20 20 20  ESERVED lock.   
2a20: 42 65 63 61 75 73 65 20 74 68 65 20 61 63 71 75  Because the acqu
2a30: 69 73 69 74 69 6f 6e 20 6f 66 0a 6c 6f 63 6b 73  isition of.locks
2a40: 20 69 73 20 64 65 66 65 72 72 65 64 20 75 6e 74   is deferred unt
2a50: 69 6c 20 74 68 65 79 20 61 72 65 20 6e 65 65 64  il they are need
2a60: 65 64 2c 20 69 74 20 69 73 20 70 6f 73 73 69 62  ed, it is possib
2a70: 6c 65 20 74 68 61 74 20 61 6e 6f 74 68 65 72 0a  le that another.
2a80: 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63 65 73  thread or proces
2a90: 73 20 63 6f 75 6c 64 20 63 72 65 61 74 65 20 61  s could create a
2aa0: 20 73 65 70 61 72 61 74 65 20 74 72 61 6e 73 61   separate transa
2ab0: 63 74 69 6f 6e 20 61 6e 64 20 77 72 69 74 65 20  ction and write 
2ac0: 74 6f 0a 74 68 65 20 64 61 74 61 62 61 73 65 20  to.the database 
2ad0: 61 66 74 65 72 20 74 68 65 20 42 45 47 49 4e 20  after the BEGIN 
2ae0: 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 74  on the current t
2af0: 68 72 65 61 64 20 68 61 73 20 65 78 65 63 75 74  hread has execut
2b00: 65 64 2e 0a 49 66 20 74 68 65 20 74 72 61 6e 73  ed..If the trans
2b10: 61 63 74 69 6f 6e 20 69 73 20 69 6d 6d 65 64 69  action is immedi
2b20: 61 74 65 2c 20 74 68 65 6e 20 52 45 53 45 52 56  ate, then RESERV
2b30: 45 44 20 6c 6f 63 6b 73 0a 61 72 65 20 61 63 71  ED locks.are acq
2b40: 75 69 72 65 64 20 6f 6e 20 61 6c 6c 20 64 61 74  uired on all dat
2b50: 61 62 61 73 65 73 20 61 73 20 73 6f 6f 6e 20 61  abases as soon a
2b60: 73 20 74 68 65 20 42 45 47 49 4e 20 63 6f 6d 6d  s the BEGIN comm
2b70: 61 6e 64 20 69 73 0a 65 78 65 63 75 74 65 64 2c  and is.executed,
2b80: 20 77 69 74 68 6f 75 74 20 77 61 69 74 69 6e 67   without waiting
2b90: 20 66 6f 72 20 74 68 65 0a 64 61 74 61 62 61 73   for the.databas
2ba0: 65 20 74 6f 20 62 65 20 75 73 65 64 2e 20 20 41  e to be used.  A
2bb0: 66 74 65 72 20 61 20 42 45 47 49 4e 20 49 4d 4d  fter a BEGIN IMM
2bc0: 45 44 49 41 54 45 2c 20 79 6f 75 20 61 72 65 20  EDIATE, you are 
2bd0: 67 75 61 72 61 6e 74 65 65 64 20 74 68 61 74 0a  guaranteed that.
2be0: 6e 6f 20 6f 74 68 65 72 20 74 68 72 65 61 64 20  no other thread 
2bf0: 6f 72 20 70 72 6f 63 65 73 73 20 77 69 6c 6c 20  or process will 
2c00: 62 65 20 61 62 6c 65 20 74 6f 20 77 72 69 74 65  be able to write
2c10: 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
2c20: 20 6f 72 0a 64 6f 20 61 20 42 45 47 49 4e 20 49   or.do a BEGIN I
2c30: 4d 4d 45 44 49 41 54 45 20 6f 72 20 42 45 47 49  MMEDIATE or BEGI
2c40: 4e 20 45 58 43 4c 55 53 49 56 45 2e 20 20 4f 74  N EXCLUSIVE.  Ot
2c50: 68 65 72 20 70 72 6f 63 65 73 73 65 73 20 63 61  her processes ca
2c60: 6e 20 63 6f 6e 74 69 6e 75 65 0a 74 6f 20 72 65  n continue.to re
2c70: 61 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61  ad from the data
2c80: 62 61 73 65 2c 20 68 6f 77 65 76 65 72 2e 20 20  base, however.  
2c90: 41 6e 20 65 78 63 6c 75 73 69 76 65 20 74 72 61  An exclusive tra
2ca0: 6e 73 61 63 74 69 6f 6e 20 63 61 75 73 65 73 0a  nsaction causes.
2cb0: 45 58 43 4c 55 53 49 56 45 20 6c 6f 63 6b 73 20  EXCLUSIVE locks 
2cc0: 74 6f 20 62 65 20 61 63 71 75 69 72 65 64 20 6f  to be acquired o
2cd0: 6e 20 61 6c 6c 20 64 61 74 61 62 61 73 65 73 2e  n all databases.
2ce0: 20 20 41 66 74 65 72 20 61 20 42 45 47 49 4e 0a    After a BEGIN.
2cf0: 45 58 43 4c 55 53 49 56 45 2c 20 79 6f 75 20 61  EXCLUSIVE, you a
2d00: 72 65 20 67 75 61 72 61 6e 74 65 65 64 20 74 68  re guaranteed th
2d10: 61 74 20 6e 6f 20 6f 74 68 65 72 20 74 68 72 65  at no other thre
2d20: 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20 77 69  ad or process wi
2d30: 6c 6c 0a 62 65 20 61 62 6c 65 20 74 6f 20 72 65  ll.be able to re
2d40: 61 64 20 6f 72 20 77 72 69 74 65 20 74 68 65 20  ad or write the 
2d50: 64 61 74 61 62 61 73 65 20 75 6e 74 69 6c 20 74  database until t
2d60: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69  he transaction i
2d70: 73 0a 63 6f 6d 70 6c 65 74 65 2e 0a 3c 2f 70 3e  s.complete..</p>
2d80: 0a 0a 3c 70 3e 0a 41 20 64 65 73 63 72 69 70 74  ..<p>.A descript
2d90: 69 6f 6e 20 6f 66 20 74 68 65 20 6d 65 61 6e 69  ion of the meani
2da0: 6e 67 20 6f 66 20 53 48 41 52 45 44 2c 20 52 45  ng of SHARED, RE
2db0: 53 45 52 56 45 44 2c 20 61 6e 64 20 45 58 43 4c  SERVED, and EXCL
2dc0: 55 53 49 56 45 20 6c 6f 63 6b 73 0a 69 73 20 61  USIVE locks.is a
2dd0: 76 61 69 6c 61 62 6c 65 20 3c 61 20 68 72 65 66  vailable <a href
2de0: 3d 22 6c 6f 63 6b 69 6e 67 76 33 2e 68 74 6d 6c  ="lockingv3.html
2df0: 22 3e 73 65 70 61 72 61 74 65 6c 79 3c 2f 61 3e  ">separately</a>
2e00: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20  ..</p>..<p>.The 
2e10: 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72  default behavior
2e20: 20 66 6f 72 20 53 51 4c 69 74 65 20 76 65 72 73   for SQLite vers
2e30: 69 6f 6e 20 33 2e 30 2e 38 20 69 73 20 61 0a 64  ion 3.0.8 is a.d
2e40: 65 66 65 72 72 65 64 20 74 72 61 6e 73 61 63 74  eferred transact
2e50: 69 6f 6e 2e 20 20 46 6f 72 20 53 51 4c 69 74 65  ion.  For SQLite
2e60: 20 76 65 72 73 69 6f 6e 20 33 2e 30 2e 30 20 74   version 3.0.0 t
2e70: 68 72 6f 75 67 68 20 33 2e 30 2e 37 2c 0a 64 65  hrough 3.0.7,.de
2e80: 66 65 72 72 65 64 20 69 73 20 74 68 65 20 6f 6e  ferred is the on
2e90: 6c 79 20 6b 69 6e 64 20 6f 66 20 74 72 61 6e 73  ly kind of trans
2ea0: 61 63 74 69 6f 6e 20 61 76 61 69 6c 61 62 6c 65  action available
2eb0: 2e 20 20 46 6f 72 20 53 51 4c 69 74 65 0a 76 65  .  For SQLite.ve
2ec0: 72 73 69 6f 6e 20 32 2e 38 20 61 6e 64 20 65 61  rsion 2.8 and ea
2ed0: 72 6c 69 65 72 2c 20 61 6c 6c 20 74 72 61 6e 73  rlier, all trans
2ee0: 61 63 74 69 6f 6e 73 20 61 72 65 20 65 78 63 6c  actions are excl
2ef0: 75 73 69 76 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  usive..</p>..<p>
2f00: 0a 54 68 65 20 43 4f 4d 4d 49 54 20 63 6f 6d 6d  .The COMMIT comm
2f10: 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 61 63 74  and does not act
2f20: 75 61 6c 6c 79 20 70 65 72 66 6f 72 6d 20 61 20  ually perform a 
2f30: 63 6f 6d 6d 69 74 20 75 6e 74 69 6c 20 61 6c 6c  commit until all
2f40: 0a 70 65 6e 64 69 6e 67 20 53 51 4c 20 63 6f 6d  .pending SQL com
2f50: 6d 61 6e 64 73 20 66 69 6e 69 73 68 2e 20 20 54  mands finish.  T
2f60: 68 75 73 20 69 66 20 74 77 6f 20 6f 72 20 6d 6f  hus if two or mo
2f70: 72 65 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d  re SELECT statem
2f80: 65 6e 74 73 0a 61 72 65 20 69 6e 20 74 68 65 20  ents.are in the 
2f90: 6d 69 64 64 6c 65 20 6f 66 20 70 72 6f 63 65 73  middle of proces
2fa0: 73 69 6e 67 20 61 6e 64 20 61 20 43 4f 4d 4d 49  sing and a COMMI
2fb0: 54 20 69 73 20 65 78 65 63 75 74 65 64 2c 20 74  T is executed, t
2fc0: 68 65 20 63 6f 6d 6d 69 74 0a 77 69 6c 6c 20 6e  he commit.will n
2fd0: 6f 74 20 61 63 74 75 61 6c 6c 79 20 6f 63 63 75  ot actually occu
2fe0: 72 20 75 6e 74 69 6c 20 61 6c 6c 20 53 45 4c 45  r until all SELE
2ff0: 43 54 20 73 74 61 74 65 6d 65 6e 74 73 20 66 69  CT statements fi
3000: 6e 69 73 68 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  nish..</p>..<p>.
3010: 41 6e 20 61 74 74 65 6d 70 74 20 74 6f 20 65 78  An attempt to ex
3020: 65 63 75 74 65 20 43 4f 4d 4d 49 54 20 6d 69 67  ecute COMMIT mig
3030: 68 74 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20  ht result in an 
3040: 53 51 4c 49 54 45 5f 42 55 53 59 20 72 65 74 75  SQLITE_BUSY retu
3050: 72 6e 20 63 6f 64 65 2e 0a 54 68 69 73 20 69 6e  rn code..This in
3060: 64 69 63 61 74 65 73 20 74 68 61 74 20 61 6e 6f  dicates that ano
3070: 74 68 65 72 20 74 68 72 65 61 64 20 6f 72 20 70  ther thread or p
3080: 72 6f 63 65 73 73 20 68 61 64 20 61 20 72 65 61  rocess had a rea
3090: 64 20 6c 6f 63 6b 20 6f 6e 20 74 68 65 20 64 61  d lock on the da
30a0: 74 61 62 61 73 65 0a 74 68 61 74 20 70 72 65 76  tabase.that prev
30b0: 65 6e 74 65 64 20 74 68 65 20 64 61 74 61 62 61  ented the databa
30c0: 73 65 20 66 72 6f 6d 20 62 65 69 6e 67 20 75 70  se from being up
30d0: 64 61 74 65 64 2e 20 20 57 68 65 6e 20 43 4f 4d  dated.  When COM
30e0: 4d 49 54 20 66 61 69 6c 73 20 69 6e 20 74 68 69  MIT fails in thi
30f0: 73 0a 77 61 79 2c 20 74 68 65 20 74 72 61 6e 73  s.way, the trans
3100: 61 63 74 69 6f 6e 20 72 65 6d 61 69 6e 73 20 61  action remains a
3110: 63 74 69 76 65 20 61 6e 64 20 74 68 65 20 43 4f  ctive and the CO
3120: 4d 4d 49 54 20 63 61 6e 20 62 65 20 72 65 74 72  MMIT can be retr
3130: 69 65 64 20 6c 61 74 65 72 0a 61 66 74 65 72 20  ied later.after 
3140: 74 68 65 20 72 65 61 64 65 72 20 68 61 73 20 68  the reader has h
3150: 61 64 20 61 20 63 68 61 6e 63 65 20 74 6f 20 63  ad a chance to c
3160: 6c 65 61 72 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 53  lear..</p>.}...S
3170: 65 63 74 69 6f 6e 20 63 6f 6d 6d 65 6e 74 20 63  ection comment c
3180: 6f 6d 6d 65 6e 74 0a 0a 53 79 6e 74 61 78 20 7b  omment..Syntax {
3190: 63 6f 6d 6d 65 6e 74 7d 20 7b 3c 53 51 4c 2d 63  comment} {<SQL-c
31a0: 6f 6d 6d 65 6e 74 3e 20 7c 20 3c 43 2d 63 6f 6d  omment> | <C-com
31b0: 6d 65 6e 74 3e 0a 7d 20 7b 53 51 4c 2d 63 6f 6d  ment>.} {SQL-com
31c0: 6d 65 6e 74 7d 20 7b 2d 2d 20 3c 73 69 6e 67 6c  ment} {-- <singl
31d0: 65 2d 6c 69 6e 65 3e 0a 7d 20 7b 43 2d 63 6f 6d  e-line>.} {C-com
31e0: 6d 65 6e 74 7d 20 7b 2f 53 54 41 52 20 3c 6d 75  ment} {/STAR <mu
31f0: 6c 74 69 70 6c 65 2d 6c 69 6e 65 73 3e 20 5b 53  ltiple-lines> [S
3200: 54 41 52 2f 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a  TAR/].}..puts {.
3210: 3c 70 3e 20 43 6f 6d 6d 65 6e 74 73 20 61 72 65  <p> Comments are
3220: 6e 27 74 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73  n't SQL commands
3230: 2c 20 62 75 74 20 63 61 6e 20 6f 63 63 75 72 20  , but can occur 
3240: 69 6e 20 53 51 4c 20 71 75 65 72 69 65 73 2e 20  in SQL queries. 
3250: 54 68 65 79 20 61 72 65 20 0a 74 72 65 61 74 65  They are .treate
3260: 64 20 61 73 20 77 68 69 74 65 73 70 61 63 65 20  d as whitespace 
3270: 62 79 20 74 68 65 20 70 61 72 73 65 72 2e 20 20  by the parser.  
3280: 54 68 65 79 20 63 61 6e 20 62 65 67 69 6e 20 61  They can begin a
3290: 6e 79 77 68 65 72 65 20 77 68 69 74 65 73 70 61  nywhere whitespa
32a0: 63 65 20 0a 63 61 6e 20 62 65 20 66 6f 75 6e 64  ce .can be found
32b0: 2c 20 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69  , including insi
32c0: 64 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74  de expressions t
32d0: 68 61 74 20 73 70 61 6e 20 6d 75 6c 74 69 70 6c  hat span multipl
32e0: 65 20 6c 69 6e 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c  e lines..</p>..<
32f0: 70 3e 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20  p> SQL comments 
3300: 6f 6e 6c 79 20 65 78 74 65 6e 64 20 74 6f 20 74  only extend to t
3310: 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 63 75  he end of the cu
3320: 72 72 65 6e 74 20 6c 69 6e 65 2e 3c 2f 70 3e 0a  rrent line.</p>.
3330: 0a 3c 70 3e 20 43 20 63 6f 6d 6d 65 6e 74 73 20  .<p> C comments 
3340: 63 61 6e 20 73 70 61 6e 20 61 6e 79 20 6e 75 6d  can span any num
3350: 62 65 72 20 6f 66 20 6c 69 6e 65 73 2e 20 20 49  ber of lines.  I
3360: 66 20 74 68 65 72 65 20 69 73 20 6e 6f 20 74 65  f there is no te
3370: 72 6d 69 6e 61 74 69 6e 67 0a 64 65 6c 69 6d 69  rminating.delimi
3380: 74 65 72 2c 20 74 68 65 79 20 65 78 74 65 6e 64  ter, they extend
3390: 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74   to the end of t
33a0: 68 65 20 69 6e 70 75 74 2e 20 20 54 68 69 73 20  he input.  This 
33b0: 69 73 20 6e 6f 74 20 74 72 65 61 74 65 64 20 61  is not treated a
33c0: 73 0a 61 6e 20 65 72 72 6f 72 2e 20 20 41 20 6e  s.an error.  A n
33d0: 65 77 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ew SQL statement
33e0: 20 63 61 6e 20 62 65 67 69 6e 20 6f 6e 20 61 20   can begin on a 
33f0: 6c 69 6e 65 20 61 66 74 65 72 20 61 20 6d 75 6c  line after a mul
3400: 74 69 6c 69 6e 65 0a 63 6f 6d 6d 65 6e 74 20 65  tiline.comment e
3410: 6e 64 73 2e 20 20 43 20 63 6f 6d 6d 65 6e 74 73  nds.  C comments
3420: 20 63 61 6e 20 62 65 20 65 6d 62 65 64 64 65 64   can be embedded
3430: 20 61 6e 79 77 68 65 72 65 20 77 68 69 74 65 73   anywhere whites
3440: 70 61 63 65 20 63 61 6e 20 6f 63 63 75 72 2c 0a  pace can occur,.
3450: 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65  including inside
3460: 20 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 61 6e   expressions, an
3470: 64 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20  d in the middle 
3480: 6f 66 20 6f 74 68 65 72 20 53 51 4c 20 73 74 61  of other SQL sta
3490: 74 65 6d 65 6e 74 73 2e 0a 43 20 63 6f 6d 6d 65  tements..C comme
34a0: 6e 74 73 20 64 6f 20 6e 6f 74 20 6e 65 73 74 2e  nts do not nest.
34b0: 20 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 69    SQL comments i
34c0: 6e 73 69 64 65 20 61 20 43 20 63 6f 6d 6d 65 6e  nside a C commen
34d0: 74 20 77 69 6c 6c 20 62 65 20 69 67 6e 6f 72 65  t will be ignore
34e0: 64 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74  d..</p>.}...Sect
34f0: 69 6f 6e 20 43 4f 50 59 20 63 6f 70 79 0a 0a 53  ion COPY copy..S
3500: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
3510: 6d 65 6e 74 7d 20 7b 0a 43 4f 50 59 20 5b 20 4f  ment} {.COPY [ O
3520: 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f  R <conflict-algo
3530: 72 69 74 68 6d 3e 20 5d 20 5b 3c 64 61 74 61 62  rithm> ] [<datab
3540: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
3550: 62 6c 65 2d 6e 61 6d 65 3e 20 46 52 4f 4d 20 3c  ble-name> FROM <
3560: 66 69 6c 65 6e 61 6d 65 3e 0a 5b 20 55 53 49 4e  filename>.[ USIN
3570: 47 20 44 45 4c 49 4d 49 54 45 52 53 20 3c 64 65  G DELIMITERS <de
3580: 6c 69 6d 3e 20 5d 0a 7d 0a 0a 70 75 74 73 20 7b  lim> ].}..puts {
3590: 0a 3c 70 3e 54 68 65 20 43 4f 50 59 20 63 6f 6d  .<p>The COPY com
35a0: 6d 61 6e 64 20 69 73 20 61 76 61 69 6c 61 62 6c  mand is availabl
35b0: 65 20 69 6e 20 53 51 4c 69 74 65 20 76 65 72 73  e in SQLite vers
35c0: 69 6f 6e 20 32 2e 38 20 61 6e 64 20 65 61 72 6c  ion 2.8 and earl
35d0: 69 65 72 2e 0a 54 68 65 20 43 4f 50 59 20 63 6f  ier..The COPY co
35e0: 6d 6d 61 6e 64 20 68 61 73 20 62 65 65 6e 20 72  mmand has been r
35f0: 65 6d 6f 76 65 64 20 66 72 6f 6d 20 53 51 4c 69  emoved from SQLi
3600: 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 30 20 64  te version 3.0 d
3610: 75 65 20 74 6f 0a 63 6f 6d 70 6c 69 63 61 74 69  ue to.complicati
3620: 6f 6e 73 20 69 6e 20 74 72 79 69 6e 67 20 74 6f  ons in trying to
3630: 20 73 75 70 70 6f 72 74 20 69 74 20 69 6e 20 61   support it in a
3640: 20 6d 69 78 65 64 20 55 54 46 2d 38 2f 31 36 20   mixed UTF-8/16 
3650: 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 0a 49 6e 20  environment..In 
3660: 76 65 72 73 69 6f 6e 20 33 2e 30 2c 20 74 68 65  version 3.0, the
3670: 20 3c 61 20 68 72 65 66 3d 22 73 71 6c 69 74 65   <a href="sqlite
3680: 2e 68 74 6d 6c 22 3e 63 6f 6d 6d 61 6e 64 2d 6c  .html">command-l
3690: 69 6e 65 20 73 68 65 6c 6c 3c 2f 61 3e 0a 63 6f  ine shell</a>.co
36a0: 6e 74 61 69 6e 73 20 61 20 6e 65 77 20 63 6f 6d  ntains a new com
36b0: 6d 61 6e 64 20 3c 62 3e 2e 69 6d 70 6f 72 74 3c  mand <b>.import<
36c0: 2f 62 3e 20 74 68 61 74 20 63 61 6e 20 62 65 20  /b> that can be 
36d0: 75 73 65 64 20 61 73 20 61 20 73 75 62 73 74 69  used as a substi
36e0: 74 75 74 65 0a 66 6f 72 20 43 4f 50 59 2e 0a 3c  tute.for COPY..<
36f0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 43 4f 50 59  /p>..<p>The COPY
3700: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20 65   command is an e
3710: 78 74 65 6e 73 69 6f 6e 20 75 73 65 64 20 74 6f  xtension used to
3720: 20 6c 6f 61 64 20 6c 61 72 67 65 20 61 6d 6f 75   load large amou
3730: 6e 74 73 20 6f 66 0a 64 61 74 61 20 69 6e 74 6f  nts of.data into
3740: 20 61 20 74 61 62 6c 65 2e 20 20 49 74 20 69 73   a table.  It is
3750: 20 6d 6f 64 65 6c 65 64 20 61 66 74 65 72 20 61   modeled after a
3760: 20 73 69 6d 69 6c 61 72 20 63 6f 6d 6d 61 6e 64   similar command
3770: 20 66 6f 75 6e 64 0a 69 6e 20 50 6f 73 74 67 72   found.in Postgr
3780: 65 53 51 4c 2e 20 20 49 6e 20 66 61 63 74 2c 20  eSQL.  In fact, 
3790: 74 68 65 20 53 51 4c 69 74 65 20 43 4f 50 59 20  the SQLite COPY 
37a0: 63 6f 6d 6d 61 6e 64 20 69 73 20 73 70 65 63 69  command is speci
37b0: 66 69 63 61 6c 6c 79 0a 64 65 73 69 67 6e 65 64  fically.designed
37c0: 20 74 6f 20 62 65 20 61 62 6c 65 20 74 6f 20 72   to be able to r
37d0: 65 61 64 20 74 68 65 20 6f 75 74 70 75 74 20 6f  ead the output o
37e0: 66 20 74 68 65 20 50 6f 73 74 67 72 65 53 51 4c  f the PostgreSQL
37f0: 20 64 75 6d 70 0a 75 74 69 6c 69 74 79 20 3c 62   dump.utility <b
3800: 3e 70 67 5f 64 75 6d 70 3c 2f 62 3e 20 73 6f 20  >pg_dump</b> so 
3810: 74 68 61 74 20 64 61 74 61 20 63 61 6e 20 62 65  that data can be
3820: 20 65 61 73 69 6c 79 20 74 72 61 6e 73 66 65 72   easily transfer
3830: 72 65 64 20 66 72 6f 6d 0a 50 6f 73 74 67 72 65  red from.Postgre
3840: 53 51 4c 20 69 6e 74 6f 20 53 51 4c 69 74 65 2e  SQL into SQLite.
3850: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 74 61 62  </p>..<p>The tab
3860: 6c 65 2d 6e 61 6d 65 20 69 73 20 74 68 65 20 6e  le-name is the n
3870: 61 6d 65 20 6f 66 20 61 6e 20 65 78 69 73 74 69  ame of an existi
3880: 6e 67 20 74 61 62 6c 65 20 77 68 69 63 68 20 69  ng table which i
3890: 73 20 74 6f 0a 62 65 20 66 69 6c 6c 65 64 20 77  s to.be filled w
38a0: 69 74 68 20 64 61 74 61 2e 20 20 54 68 65 20 66  ith data.  The f
38b0: 69 6c 65 6e 61 6d 65 20 69 73 20 61 20 73 74 72  ilename is a str
38c0: 69 6e 67 20 6f 72 20 69 64 65 6e 74 69 66 69 65  ing or identifie
38d0: 72 20 74 68 61 74 0a 6e 61 6d 65 73 20 61 20 66  r that.names a f
38e0: 69 6c 65 20 66 72 6f 6d 20 77 68 69 63 68 20 64  ile from which d
38f0: 61 74 61 20 77 69 6c 6c 20 62 65 20 72 65 61 64  ata will be read
3900: 2e 20 20 54 68 65 20 66 69 6c 65 6e 61 6d 65 20  .  The filename 
3910: 63 61 6e 20 62 65 0a 74 68 65 20 3c 62 3e 53 54  can be.the <b>ST
3920: 44 49 4e 3c 2f 62 3e 20 74 6f 20 72 65 61 64 20  DIN</b> to read 
3930: 64 61 74 61 20 66 72 6f 6d 20 73 74 61 6e 64 61  data from standa
3940: 72 64 20 69 6e 70 75 74 2e 3c 2f 70 3e 0a 0a 3c  rd input.</p>..<
3950: 70 3e 45 61 63 68 20 6c 69 6e 65 20 6f 66 20 74  p>Each line of t
3960: 68 65 20 69 6e 70 75 74 20 66 69 6c 65 20 69 73  he input file is
3970: 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20   converted into 
3980: 61 20 73 69 6e 67 6c 65 20 72 65 63 6f 72 64 0a  a single record.
3990: 69 6e 20 74 68 65 20 74 61 62 6c 65 2e 20 20 43  in the table.  C
39a0: 6f 6c 75 6d 6e 73 20 61 72 65 20 73 65 70 61 72  olumns are separ
39b0: 61 74 65 64 20 62 79 20 74 61 62 73 2e 20 20 49  ated by tabs.  I
39c0: 66 20 61 20 74 61 62 20 6f 63 63 75 72 73 20 61  f a tab occurs a
39d0: 73 0a 64 61 74 61 20 77 69 74 68 69 6e 20 61 20  s.data within a 
39e0: 63 6f 6c 75 6d 6e 2c 20 74 68 65 6e 20 74 68 61  column, then tha
39f0: 74 20 74 61 62 20 69 73 20 70 72 65 63 65 64 65  t tab is precede
3a00: 64 20 62 79 20 61 20 62 61 73 6b 73 6c 61 73 68  d by a baskslash
3a10: 20 22 5c 22 0a 63 68 61 72 61 63 74 65 72 2e 20   "\".character. 
3a20: 20 41 20 62 61 73 6b 73 6c 61 73 68 20 69 6e 20   A baskslash in 
3a30: 74 68 65 20 64 61 74 61 20 61 70 70 65 61 72 73  the data appears
3a40: 20 61 73 20 74 77 6f 20 62 61 63 6b 73 6c 61 73   as two backslas
3a50: 68 65 73 20 69 6e 0a 61 20 72 6f 77 2e 20 20 54  hes in.a row.  T
3a60: 68 65 20 6f 70 74 69 6f 6e 61 6c 20 55 53 49 4e  he optional USIN
3a70: 47 20 44 45 4c 49 4d 49 54 45 52 53 20 63 6c 61  G DELIMITERS cla
3a80: 75 73 65 20 63 61 6e 20 73 70 65 63 69 66 79 20  use can specify 
3a90: 61 20 64 65 6c 69 6d 69 74 65 72 0a 6f 74 68 65  a delimiter.othe
3aa0: 72 20 74 68 61 6e 20 74 61 62 2e 3c 2f 70 3e 0a  r than tab.</p>.
3ab0: 0a 3c 70 3e 49 66 20 61 20 63 6f 6c 75 6d 6e 20  .<p>If a column 
3ac0: 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20  consists of the 
3ad0: 63 68 61 72 61 63 74 65 72 20 22 5c 4e 22 2c 20  character "\N", 
3ae0: 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 73 20 66  that column is f
3af0: 69 6c 6c 65 64 0a 77 69 74 68 20 74 68 65 20 76  illed.with the v
3b00: 61 6c 75 65 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a  alue NULL.</p>..
3b10: 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  <p>The optional 
3b20: 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20  conflict-clause 
3b30: 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69  allows the speci
3b40: 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61  fication of an a
3b50: 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74  lternative.const
3b60: 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72  raint conflict r
3b70: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
3b80: 74 68 6d 20 74 6f 20 75 73 65 20 66 6f 72 20 74  thm to use for t
3b90: 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e  his one command.
3ba0: 0a 53 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e  .See the section
3bb0: 20 74 69 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d   titled.<a href=
3bc0: 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43  "#conflict">ON C
3bd0: 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20  ONFLICT</a> for 
3be0: 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
3bf0: 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e  mation.</p>..<p>
3c00: 57 68 65 6e 20 74 68 65 20 69 6e 70 75 74 20 64  When the input d
3c10: 61 74 61 20 73 6f 75 72 63 65 20 69 73 20 53 54  ata source is ST
3c20: 44 49 4e 2c 20 74 68 65 20 69 6e 70 75 74 20 63  DIN, the input c
3c30: 61 6e 20 62 65 20 74 65 72 6d 69 6e 61 74 65 64  an be terminated
3c40: 0a 62 79 20 61 20 6c 69 6e 65 20 74 68 61 74 20  .by a line that 
3c50: 63 6f 6e 74 61 69 6e 73 20 6f 6e 6c 79 20 61 20  contains only a 
3c60: 62 61 73 6b 73 6c 61 73 68 20 61 6e 64 20 61 20  baskslash and a 
3c70: 64 6f 74 3a 7d 0a 70 75 74 73 20 22 5c 22 5b 4f  dot:}.puts "\"[O
3c80: 70 65 72 61 74 6f 72 20 5c 5c 2e 5d 5c 22 2e 3c  perator \\.]\".<
3c90: 2f 70 3e 22 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b  /p>"...Section {
3ca0: 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20 63 72  CREATE INDEX} cr
3cb0: 65 61 74 65 69 6e 64 65 78 0a 0a 53 79 6e 74 61  eateindex..Synta
3cc0: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
3cd0: 7d 20 7b 0a 43 52 45 41 54 45 20 5b 55 4e 49 51  } {.CREATE [UNIQ
3ce0: 55 45 5d 20 49 4e 44 45 58 20 5b 49 46 20 4e 4f  UE] INDEX [IF NO
3cf0: 54 20 45 58 49 53 54 53 5d 20 5b 3c 64 61 74 61  T EXISTS] [<data
3d00: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 69  base-name> .] <i
3d10: 6e 64 65 78 2d 6e 61 6d 65 3e 20 0a 4f 4e 20 3c  ndex-name> .ON <
3d20: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 28 20 3c 63  table-name> ( <c
3d30: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 5b 2c 20 3c  olumn-name> [, <
3d40: 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 5d 2a 20 29  column-name>]* )
3d50: 0a 5b 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c  .[ ON CONFLICT <
3d60: 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74  conflict-algorit
3d70: 68 6d 3e 20 5d 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d  hm> ].} {column-
3d80: 6e 61 6d 65 7d 20 7b 0a 3c 6e 61 6d 65 3e 20 5b  name} {.<name> [
3d90: 20 43 4f 4c 4c 41 54 45 20 3c 63 6f 6c 6c 61 74   COLLATE <collat
3da0: 69 6f 6e 2d 6e 61 6d 65 3e 5d 20 5b 20 41 53 43  ion-name>] [ ASC
3db0: 20 7c 20 44 45 53 43 20 5d 0a 7d 0a 0a 70 75 74   | DESC ].}..put
3dc0: 73 20 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54  s {.<p>The CREAT
3dd0: 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 20  E INDEX command 
3de0: 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20  consists of the 
3df0: 6b 65 79 77 6f 72 64 73 20 22 43 52 45 41 54 45  keywords "CREATE
3e00: 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f 77 65 64   INDEX" followed
3e10: 0a 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  .by the name of 
3e20: 74 68 65 20 6e 65 77 20 69 6e 64 65 78 2c 20 74  the new index, t
3e30: 68 65 20 6b 65 79 77 6f 72 64 20 22 4f 4e 22 2c  he keyword "ON",
3e40: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 70   the name of a p
3e50: 72 65 76 69 6f 75 73 6c 79 0a 63 72 65 61 74 65  reviously.create
3e60: 64 20 74 61 62 6c 65 20 74 68 61 74 20 69 73 20  d table that is 
3e70: 74 6f 20 62 65 20 69 6e 64 65 78 65 64 2c 20 61  to be indexed, a
3e80: 6e 64 20 61 20 70 61 72 65 6e 74 68 65 73 69 7a  nd a parenthesiz
3e90: 65 64 20 6c 69 73 74 20 6f 66 20 6e 61 6d 65 73  ed list of names
3ea0: 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20 69 6e 20 74   of.columns in t
3eb0: 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 61 72  he table that ar
3ec0: 65 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 69  e used for the i
3ed0: 6e 64 65 78 20 6b 65 79 2e 0a 45 61 63 68 20 63  ndex key..Each c
3ee0: 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e 20 62  olumn name can b
3ef0: 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 6f 6e  e followed by on
3f00: 65 20 6f 66 20 74 68 65 20 22 41 53 43 22 20 6f  e of the "ASC" o
3f10: 72 20 22 44 45 53 43 22 20 6b 65 79 77 6f 72 64  r "DESC" keyword
3f20: 73 0a 74 6f 20 69 6e 64 69 63 61 74 65 20 73 6f  s.to indicate so
3f30: 72 74 20 6f 72 64 65 72 2c 20 62 75 74 20 74 68  rt order, but th
3f40: 65 20 73 6f 72 74 20 6f 72 64 65 72 20 69 73 20  e sort order is 
3f50: 69 67 6e 6f 72 65 64 20 69 6e 20 74 68 65 20 63  ignored in the c
3f60: 75 72 72 65 6e 74 0a 69 6d 70 6c 65 6d 65 6e 74  urrent.implement
3f70: 61 74 69 6f 6e 2e 20 20 53 6f 72 74 69 6e 67 20  ation.  Sorting 
3f80: 69 73 20 61 6c 77 61 79 73 20 64 6f 6e 65 20 69  is always done i
3f90: 6e 20 61 73 63 65 6e 64 69 6e 67 20 6f 72 64 65  n ascending orde
3fa0: 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 43  r.</p>..<p>The C
3fb0: 4f 4c 4c 41 54 45 20 63 6c 61 75 73 65 20 66 6f  OLLATE clause fo
3fc0: 6c 6c 6f 77 69 6e 67 20 65 61 63 68 20 63 6f 6c  llowing each col
3fd0: 75 6d 6e 20 6e 61 6d 65 20 64 65 66 69 6e 65 73  umn name defines
3fe0: 20 61 20 63 6f 6c 6c 61 74 69 6e 67 0a 73 65 71   a collating.seq
3ff0: 75 65 6e 63 65 20 75 73 65 64 20 66 6f 72 20 74  uence used for t
4000: 65 78 74 20 65 6e 74 69 72 65 73 20 69 6e 20 74  ext entires in t
4010: 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 54 68 65  hat column.  The
4020: 20 64 65 66 61 75 6c 74 20 63 6f 6c 6c 61 74 69   default collati
4030: 6e 67 0a 73 65 71 75 65 6e 63 65 20 69 73 20 74  ng.sequence is t
4040: 68 65 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71  he collating seq
4050: 75 65 6e 63 65 20 64 65 66 69 6e 65 64 20 66 6f  uence defined fo
4060: 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 6e  r that column in
4070: 20 74 68 65 0a 43 52 45 41 54 45 20 54 41 42 4c   the.CREATE TABL
4080: 45 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f 72  E statement.  Or
4090: 20 69 66 20 6e 6f 20 63 6f 6c 6c 61 74 69 6e 67   if no collating
40a0: 20 73 65 71 75 65 6e 63 65 20 69 73 20 6f 74 68   sequence is oth
40b0: 65 72 77 69 73 65 20 64 65 66 69 6e 65 64 2c 0a  erwise defined,.
40c0: 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 42 49 4e  the built-in BIN
40d0: 41 52 59 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65  ARY collating se
40e0: 71 75 65 6e 63 65 20 69 73 20 75 73 65 64 2e 3c  quence is used.<
40f0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72  /p>..<p>There ar
4100: 65 20 6e 6f 20 61 72 62 69 74 72 61 72 79 20 6c  e no arbitrary l
4110: 69 6d 69 74 73 20 6f 6e 20 74 68 65 20 6e 75 6d  imits on the num
4120: 62 65 72 20 6f 66 20 69 6e 64 69 63 65 73 20 74  ber of indices t
4130: 68 61 74 20 63 61 6e 20 62 65 0a 61 74 74 61 63  hat can be.attac
4140: 68 65 64 20 74 6f 20 61 20 73 69 6e 67 6c 65 20  hed to a single 
4150: 74 61 62 6c 65 2c 20 6e 6f 72 20 6f 6e 20 74 68  table, nor on th
4160: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
4170: 6d 6e 73 20 69 6e 20 61 6e 20 69 6e 64 65 78 2e  mns in an index.
4180: 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20  </p>..<p>If the 
4190: 55 4e 49 51 55 45 20 6b 65 79 77 6f 72 64 20 61  UNIQUE keyword a
41a0: 70 70 65 61 72 73 20 62 65 74 77 65 65 6e 20 43  ppears between C
41b0: 52 45 41 54 45 20 61 6e 64 20 49 4e 44 45 58 20  REATE and INDEX 
41c0: 74 68 65 6e 20 64 75 70 6c 69 63 61 74 65 0a 69  then duplicate.i
41d0: 6e 64 65 78 20 65 6e 74 72 69 65 73 20 61 72 65  ndex entries are
41e0: 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e 20 20 41   not allowed.  A
41f0: 6e 79 20 61 74 74 65 6d 70 74 20 74 6f 20 69 6e  ny attempt to in
4200: 73 65 72 74 20 61 20 64 75 70 6c 69 63 61 74 65  sert a duplicate
4210: 20 65 6e 74 72 79 0a 77 69 6c 6c 20 72 65 73 75   entry.will resu
4220: 6c 74 20 69 6e 20 61 6e 20 65 72 72 6f 72 2e 3c  lt in an error.<
4230: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69  /p>..<p>The opti
4240: 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c  onal conflict-cl
4250: 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20  ause allows the 
4260: 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66  specification of
4270: 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a   an alternative.
4280: 64 65 66 61 75 6c 74 20 63 6f 6e 73 74 72 61 69  default constrai
4290: 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  nt conflict reso
42a0: 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
42b0: 20 66 6f 72 20 74 68 69 73 20 69 6e 64 65 78 2e   for this index.
42c0: 0a 54 68 69 73 20 6f 6e 6c 79 20 6d 61 6b 65 73  .This only makes
42d0: 20 73 65 6e 73 65 20 69 66 20 74 68 65 20 55 4e   sense if the UN
42e0: 49 51 55 45 20 6b 65 79 77 6f 72 64 20 69 73 20  IQUE keyword is 
42f0: 75 73 65 64 20 73 69 6e 63 65 20 6f 74 68 65 72  used since other
4300: 77 69 73 65 0a 74 68 65 72 65 20 61 72 65 20 6e  wise.there are n
4310: 6f 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 6f  ot constraints o
4320: 6e 20 74 68 65 20 69 6e 64 65 78 2e 20 20 54 68  n the index.  Th
4330: 65 20 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69  e default algori
4340: 74 68 6d 20 69 73 0a 41 42 4f 52 54 2e 20 20 49  thm is.ABORT.  I
4350: 66 20 61 20 43 4f 50 59 2c 20 49 4e 53 45 52 54  f a COPY, INSERT
4360: 2c 20 6f 72 20 55 50 44 41 54 45 20 73 74 61 74  , or UPDATE stat
4370: 65 6d 65 6e 74 20 73 70 65 63 69 66 69 65 73 20  ement specifies 
4380: 61 20 70 61 72 74 69 63 75 6c 61 72 0a 63 6f 6e  a particular.con
4390: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
43a0: 20 61 6c 67 6f 72 69 74 68 6d 2c 20 74 68 61 74   algorithm, that
43b0: 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73   algorithm is us
43c0: 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 0a 74  ed in place of.t
43d0: 68 65 20 64 65 66 61 75 6c 74 20 61 6c 67 6f 72  he default algor
43e0: 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 68  ithm specified h
43f0: 65 72 65 2e 0a 53 65 65 20 74 68 65 20 73 65 63  ere..See the sec
4400: 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68  tion titled.<a h
4410: 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e  ref="#conflict">
4420: 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20  ON CONFLICT</a> 
4430: 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69  for additional i
4440: 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a  nformation.</p>.
4450: 0a 3c 70 3e 54 68 65 20 65 78 61 63 74 20 74 65  .<p>The exact te
4460: 78 74 0a 6f 66 20 65 61 63 68 20 43 52 45 41 54  xt.of each CREAT
4470: 45 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e  E INDEX statemen
4480: 74 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20 74  t is stored in t
4490: 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73  he <b>sqlite_mas
44a0: 74 65 72 3c 2f 62 3e 0a 6f 72 20 3c 62 3e 73 71  ter</b>.or <b>sq
44b0: 6c 69 74 65 5f 74 65 6d 70 5f 6d 61 73 74 65 72  lite_temp_master
44c0: 3c 2f 62 3e 20 74 61 62 6c 65 2c 20 64 65 70 65  </b> table, depe
44d0: 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74 68 65 72  nding on whether
44e0: 20 74 68 65 20 74 61 62 6c 65 0a 62 65 69 6e 67   the table.being
44f0: 20 69 6e 64 65 78 65 64 20 69 73 20 74 65 6d 70   indexed is temp
4500: 6f 72 61 72 79 2e 20 20 45 76 65 72 79 20 74 69  orary.  Every ti
4510: 6d 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20  me the database 
4520: 69 73 20 6f 70 65 6e 65 64 2c 0a 61 6c 6c 20 43  is opened,.all C
4530: 52 45 41 54 45 20 49 4e 44 45 58 20 73 74 61 74  REATE INDEX stat
4540: 65 6d 65 6e 74 73 0a 61 72 65 20 72 65 61 64 20  ements.are read 
4550: 66 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69  from the <b>sqli
4560: 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61  te_master</b> ta
4570: 62 6c 65 20 61 6e 64 20 75 73 65 64 20 74 6f 20  ble and used to 
4580: 72 65 67 65 6e 65 72 61 74 65 0a 53 51 4c 69 74  regenerate.SQLit
4590: 65 27 73 20 69 6e 74 65 72 6e 61 6c 20 72 65 70  e's internal rep
45a0: 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74  resentation of t
45b0: 68 65 20 69 6e 64 65 78 20 6c 61 79 6f 75 74 2e  he index layout.
45c0: 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 64 65 78 65 73  </p>..<p>Indexes
45d0: 20 61 72 65 20 72 65 6d 6f 76 65 64 20 77 69 74   are removed wit
45e0: 68 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23  h the <a href="#
45f0: 64 72 6f 70 69 6e 64 65 78 22 3e 44 52 4f 50 20  dropindex">DROP 
4600: 49 4e 44 45 58 3c 2f 61 3e 20 0a 63 6f 6d 6d 61  INDEX</a> .comma
4610: 6e 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74  nd.</p>.}...Sect
4620: 69 6f 6e 20 7b 43 52 45 41 54 45 20 54 41 42 4c  ion {CREATE TABL
4630: 45 7d 20 7b 63 72 65 61 74 65 74 61 62 6c 65 7d  E} {createtable}
4640: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f  ..Syntax {sql-co
4650: 6d 6d 61 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20  mmand} {.CREATE 
4660: 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52  [TEMP | TEMPORAR
4670: 59 5d 20 54 41 42 4c 45 20 3c 74 61 62 6c 65 2d  Y] TABLE <table-
4680: 6e 61 6d 65 3e 20 28 0a 20 20 3c 63 6f 6c 75 6d  name> (.  <colum
4690: 6e 2d 64 65 66 3e 20 5b 2c 20 3c 63 6f 6c 75 6d  n-def> [, <colum
46a0: 6e 2d 64 65 66 3e 5d 2a 0a 20 20 5b 2c 20 3c 63  n-def>]*.  [, <c
46b0: 6f 6e 73 74 72 61 69 6e 74 3e 5d 2a 0a 29 0a 7d  onstraint>]*.).}
46c0: 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b   {sql-command} {
46d0: 0a 43 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20  .CREATE [TEMP | 
46e0: 54 45 4d 50 4f 52 41 52 59 5d 20 54 41 42 4c 45  TEMPORARY] TABLE
46f0: 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65   [<database-name
4700: 3e 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e  >.] <table-name>
4710: 20 41 53 20 3c 73 65 6c 65 63 74 2d 73 74 61 74   AS <select-stat
4720: 65 6d 65 6e 74 3e 0a 7d 20 7b 63 6f 6c 75 6d 6e  ement>.} {column
4730: 2d 64 65 66 7d 20 7b 0a 3c 6e 61 6d 65 3e 20 5b  -def} {.<name> [
4740: 3c 74 79 70 65 3e 5d 20 5b 5b 43 4f 4e 53 54 52  <type>] [[CONSTR
4750: 41 49 4e 54 20 3c 6e 61 6d 65 3e 5d 20 3c 63 6f  AINT <name>] <co
4760: 6c 75 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e 74 3e  lumn-constraint>
4770: 5d 2a 0a 7d 20 7b 74 79 70 65 7d 20 7b 0a 3c 74  ]*.} {type} {.<t
4780: 79 70 65 6e 61 6d 65 3e 20 7c 0a 3c 74 79 70 65  ypename> |.<type
4790: 6e 61 6d 65 3e 20 28 20 3c 6e 75 6d 62 65 72 3e  name> ( <number>
47a0: 20 29 20 7c 0a 3c 74 79 70 65 6e 61 6d 65 3e 20   ) |.<typename> 
47b0: 28 20 3c 6e 75 6d 62 65 72 3e 20 2c 20 3c 6e 75  ( <number> , <nu
47c0: 6d 62 65 72 3e 20 29 0a 7d 20 7b 63 6f 6c 75 6d  mber> ).} {colum
47d0: 6e 2d 63 6f 6e 73 74 72 61 69 6e 74 7d 20 7b 0a  n-constraint} {.
47e0: 4e 4f 54 20 4e 55 4c 4c 20 5b 20 3c 63 6f 6e 66  NOT NULL [ <conf
47f0: 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c  lict-clause> ] |
4800: 0a 50 52 49 4d 41 52 59 20 4b 45 59 20 5b 3c 73  .PRIMARY KEY [<s
4810: 6f 72 74 2d 6f 72 64 65 72 3e 5d 20 5b 20 3c 63  ort-order>] [ <c
4820: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20  onflict-clause> 
4830: 5d 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54  ] [AUTOINCREMENT
4840: 5d 20 7c 0a 55 4e 49 51 55 45 20 5b 20 3c 63 6f  ] |.UNIQUE [ <co
4850: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d  nflict-clause> ]
4860: 20 7c 0a 43 48 45 43 4b 20 28 20 3c 65 78 70 72   |.CHECK ( <expr
4870: 3e 20 29 20 7c 0a 44 45 46 41 55 4c 54 20 3c 76  > ) |.DEFAULT <v
4880: 61 6c 75 65 3e 20 7c 0a 43 4f 4c 4c 41 54 45 20  alue> |.COLLATE 
4890: 3c 63 6f 6c 6c 61 74 69 6f 6e 2d 6e 61 6d 65 3e  <collation-name>
48a0: 0a 7d 20 7b 63 6f 6e 73 74 72 61 69 6e 74 7d 20  .} {constraint} 
48b0: 7b 0a 50 52 49 4d 41 52 59 20 4b 45 59 20 28 20  {.PRIMARY KEY ( 
48c0: 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 20  <column-list> ) 
48d0: 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  [ <conflict-clau
48e0: 73 65 3e 20 5d 20 7c 0a 55 4e 49 51 55 45 20 28  se> ] |.UNIQUE (
48f0: 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29   <column-list> )
4900: 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61   [ <conflict-cla
4910: 75 73 65 3e 20 5d 20 7c 0a 43 48 45 43 4b 20 28  use> ] |.CHECK (
4920: 20 3c 65 78 70 72 3e 20 29 0a 7d 20 7b 63 6f 6e   <expr> ).} {con
4930: 66 6c 69 63 74 2d 63 6c 61 75 73 65 7d 20 7b 0a  flict-clause} {.
4940: 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c 63 6f 6e  ON CONFLICT <con
4950: 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e  flict-algorithm>
4960: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 41 20  .}..puts {.<p>A 
4970: 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61  CREATE TABLE sta
4980: 74 65 6d 65 6e 74 20 69 73 20 62 61 73 69 63 61  tement is basica
4990: 6c 6c 79 20 74 68 65 20 6b 65 79 77 6f 72 64 73  lly the keywords
49a0: 20 22 43 52 45 41 54 45 20 54 41 42 4c 45 22 0a   "CREATE TABLE".
49b0: 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 68 65 20  followed by the 
49c0: 6e 61 6d 65 20 6f 66 20 61 20 6e 65 77 20 74 61  name of a new ta
49d0: 62 6c 65 20 61 6e 64 20 61 20 70 61 72 65 6e 74  ble and a parent
49e0: 68 65 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20  hesized list of 
49f0: 63 6f 6c 75 6d 6e 0a 64 65 66 69 6e 69 74 69 6f  column.definitio
4a00: 6e 73 20 61 6e 64 20 63 6f 6e 73 74 72 61 69 6e  ns and constrain
4a10: 74 73 2e 20 20 54 68 65 20 74 61 62 6c 65 20 6e  ts.  The table n
4a20: 61 6d 65 20 63 61 6e 20 62 65 20 65 69 74 68 65  ame can be eithe
4a30: 72 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 0a  r an identifier.
4a40: 6f 72 20 61 20 73 74 72 69 6e 67 2e 20 20 54 61  or a string.  Ta
4a50: 62 6c 65 73 20 6e 61 6d 65 73 20 74 68 61 74 20  bles names that 
4a60: 62 65 67 69 6e 20 77 69 74 68 20 22 3c 62 3e 73  begin with "<b>s
4a70: 71 6c 69 74 65 5f 3c 2f 62 3e 22 20 61 72 65 20  qlite_</b>" are 
4a80: 72 65 73 65 72 76 65 64 0a 66 6f 72 20 75 73 65  reserved.for use
4a90: 20 62 79 20 74 68 65 20 65 6e 67 69 6e 65 2e 3c   by the engine.<
4aa0: 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68 20 63 6f 6c  /p>..<p>Each col
4ab0: 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 69  umn definition i
4ac0: 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  s the name of th
4ad0: 65 20 63 6f 6c 75 6d 6e 20 66 6f 6c 6c 6f 77 65  e column followe
4ae0: 64 20 62 79 20 74 68 65 0a 64 61 74 61 74 79 70  d by the.datatyp
4af0: 65 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d  e for that colum
4b00: 6e 2c 20 74 68 65 6e 20 6f 6e 65 20 6f 72 20 6d  n, then one or m
4b10: 6f 72 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6c  ore optional col
4b20: 75 6d 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e  umn constraints.
4b30: 0a 54 68 65 20 64 61 74 61 74 79 70 65 20 66 6f  .The datatype fo
4b40: 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20 64 6f 65  r the column doe
4b50: 73 20 6e 6f 74 20 72 65 73 74 72 69 63 74 20 77  s not restrict w
4b60: 68 61 74 20 64 61 74 61 20 6d 61 79 20 62 65 20  hat data may be 
4b70: 70 75 74 0a 69 6e 20 74 68 61 74 20 63 6f 6c 75  put.in that colu
4b80: 6d 6e 2e 0a 53 65 65 20 3c 61 20 68 72 65 66 3d  mn..See <a href=
4b90: 22 64 61 74 61 74 79 70 65 33 2e 68 74 6d 6c 22  "datatype3.html"
4ba0: 3e 44 61 74 61 74 79 70 65 73 20 49 6e 20 53 51  >Datatypes In SQ
4bb0: 4c 69 74 65 20 56 65 72 73 69 6f 6e 20 33 3c 2f  Lite Version 3</
4bc0: 61 3e 20 66 6f 72 0a 61 64 64 69 74 69 6f 6e 61  a> for.additiona
4bd0: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 54  l information..T
4be0: 68 65 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72  he UNIQUE constr
4bf0: 61 69 6e 74 20 63 61 75 73 65 73 20 61 6e 20 69  aint causes an i
4c00: 6e 64 65 78 20 74 6f 20 62 65 20 63 72 65 61 74  ndex to be creat
4c10: 65 64 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66  ed on the specif
4c20: 69 65 64 0a 63 6f 6c 75 6d 6e 73 2e 20 20 54 68  ied.columns.  Th
4c30: 69 73 20 69 6e 64 65 78 20 6d 75 73 74 20 63 6f  is index must co
4c40: 6e 74 61 69 6e 20 75 6e 69 71 75 65 20 6b 65 79  ntain unique key
4c50: 73 2e 0a 54 68 65 20 43 4f 4c 4c 41 54 45 20 63  s..The COLLATE c
4c60: 6c 61 75 73 65 20 73 70 65 63 69 66 69 65 73 20  lause specifies 
4c70: 77 68 61 74 20 74 65 78 74 20 3c 61 20 68 72 65  what text <a hre
4c80: 66 3d 22 64 61 74 61 74 79 70 65 33 2e 68 74 6d  f="datatype3.htm
4c90: 6c 23 63 6f 6c 6c 61 74 69 6f 6e 22 3e 0a 63 6f  l#collation">.co
4ca0: 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  llating function
4cb0: 3c 2f 61 3e 20 74 6f 20 75 73 65 20 77 68 65 6e  </a> to use when
4cc0: 20 63 6f 6d 70 61 72 69 6e 67 20 74 65 78 74 20   comparing text 
4cd0: 65 6e 74 72 69 65 73 20 66 6f 72 20 74 68 65 20  entries for the 
4ce0: 63 6f 6c 75 6d 6e 2e 20 20 0a 54 68 65 20 62 75  column.  .The bu
4cf0: 69 6c 74 2d 69 6e 20 42 49 4e 41 52 59 20 63 6f  ilt-in BINARY co
4d00: 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  llating function
4d10: 20 69 73 20 75 73 65 64 20 62 79 20 64 65 66 61   is used by defa
4d20: 75 6c 74 2e 0a 3c 70 3e 0a 54 68 65 20 44 45 46  ult..<p>.The DEF
4d30: 41 55 4c 54 20 63 6f 6e 73 74 72 61 69 6e 74 20  AULT constraint 
4d40: 73 70 65 63 69 66 69 65 73 20 61 20 64 65 66 61  specifies a defa
4d50: 75 6c 74 20 76 61 6c 75 65 20 74 6f 20 75 73 65  ult value to use
4d60: 20 77 68 65 6e 20 64 6f 69 6e 67 20 61 6e 20 49   when doing an I
4d70: 4e 53 45 52 54 2e 0a 54 68 65 20 76 61 6c 75 65  NSERT..The value
4d80: 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2c 20 61 20   may be NULL, a 
4d90: 73 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20  string constant 
4da0: 6f 72 20 61 20 6e 75 6d 62 65 72 2e 20 53 74 61  or a number. Sta
4db0: 72 74 69 6e 67 20 77 69 74 68 20 76 65 72 73 69  rting with versi
4dc0: 6f 6e 0a 33 2e 31 2e 30 2c 20 74 68 65 20 64 65  on.3.1.0, the de
4dd0: 66 61 75 6c 74 20 76 61 6c 75 65 20 6d 61 79 20  fault value may 
4de0: 61 6c 73 6f 20 62 65 20 6f 6e 65 20 6f 66 20 74  also be one of t
4df0: 68 65 20 73 70 65 63 69 61 6c 20 63 61 73 65 2d  he special case-
4e00: 69 6e 64 65 70 65 6e 64 61 6e 74 0a 6b 65 79 77  independant.keyw
4e10: 6f 72 64 73 20 43 55 52 52 45 4e 54 5f 54 49 4d  ords CURRENT_TIM
4e20: 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54 45 20  E, CURRENT_DATE 
4e30: 6f 72 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53  or CURRENT_TIMES
4e40: 54 41 4d 50 2e 20 49 66 20 74 68 65 20 76 61 6c  TAMP. If the val
4e50: 75 65 20 69 73 0a 4e 55 4c 4c 2c 20 61 20 73 74  ue is.NULL, a st
4e60: 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 6f 72  ring constant or
4e70: 20 6e 75 6d 62 65 72 2c 20 69 74 20 69 73 20 6c   number, it is l
4e80: 69 74 65 72 61 6c 6c 79 20 69 6e 73 65 72 74 65  iterally inserte
4e90: 64 20 69 6e 74 6f 20 74 68 65 20 63 6f 6c 75 6d  d into the colum
4ea0: 6e 0a 77 68 65 6e 65 76 65 72 20 61 6e 20 49 4e  n.whenever an IN
4eb0: 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20 74  SERT statement t
4ec0: 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 70 65  hat does not spe
4ed0: 63 69 66 79 20 61 20 76 61 6c 75 65 20 66 6f 72  cify a value for
4ee0: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69 73 0a 65   the column is.e
4ef0: 78 65 63 75 74 65 64 2e 20 49 66 20 74 68 65 20  xecuted. If the 
4f00: 76 61 6c 75 65 20 69 73 20 43 55 52 52 45 4e 54  value is CURRENT
4f10: 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44  _TIME, CURRENT_D
4f20: 41 54 45 20 6f 72 20 43 55 52 52 45 4e 54 5f 54  ATE or CURRENT_T
4f30: 49 4d 45 53 54 41 4d 50 2c 20 74 68 65 6e 0a 74  IMESTAMP, then.t
4f40: 68 65 20 63 75 72 72 65 6e 74 20 55 54 43 20 64  he current UTC d
4f50: 61 74 65 20 61 6e 64 2f 6f 72 20 74 69 6d 65 20  ate and/or time 
4f60: 69 73 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f  is inserted into
4f70: 20 74 68 65 20 63 6f 6c 75 6d 6e 73 2e 20 46 6f   the columns. Fo
4f80: 72 0a 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20  r.CURRENT_TIME, 
4f90: 74 68 65 20 66 6f 72 6d 61 74 20 69 73 20 48 48  the format is HH
4fa0: 3a 4d 4d 3a 53 53 2e 20 46 6f 72 20 43 55 52 52  :MM:SS. For CURR
4fb0: 45 4e 54 5f 44 41 54 45 2c 20 59 59 59 59 2d 4d  ENT_DATE, YYYY-M
4fc0: 4d 2d 44 44 2e 20 54 68 65 20 66 6f 72 6d 61 74  M-DD. The format
4fd0: 0a 66 6f 72 20 43 55 52 52 45 4e 54 5f 54 49 4d  .for CURRENT_TIM
4fe0: 45 53 54 41 4d 50 20 69 73 20 22 59 59 59 59 2d  ESTAMP is "YYYY-
4ff0: 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 22 2e  MM-DD HH:MM:SS".
5000: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 53 70 65 63 69 66  .</p>..<p>Specif
5010: 79 69 6e 67 20 61 20 50 52 49 4d 41 52 59 20 4b  ying a PRIMARY K
5020: 45 59 20 6e 6f 72 6d 61 6c 6c 79 20 6a 75 73 74  EY normally just
5030: 20 63 72 65 61 74 65 73 20 61 20 55 4e 49 51 55   creates a UNIQU
5040: 45 20 69 6e 64 65 78 0a 6f 6e 20 74 68 65 20 63  E index.on the c
5050: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 63 6f 6c  orresponding col
5060: 75 6d 6e 73 2e 20 20 48 6f 77 65 76 65 72 2c 20  umns.  However, 
5070: 69 66 20 70 72 69 6d 61 72 79 20 6b 65 79 20 69  if primary key i
5080: 73 20 6f 6e 20 61 20 73 69 6e 67 6c 65 20 63 6f  s on a single co
5090: 6c 75 6d 6e 0a 74 68 61 74 20 68 61 73 20 64 61  lumn.that has da
50a0: 74 61 74 79 70 65 20 49 4e 54 45 47 45 52 2c 20  tatype INTEGER, 
50b0: 74 68 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e  then that column
50c0: 20 69 73 20 75 73 65 64 20 69 6e 74 65 72 6e 61   is used interna
50d0: 6c 6c 79 0a 61 73 20 74 68 65 20 61 63 74 75 61  lly.as the actua
50e0: 6c 20 6b 65 79 20 6f 66 20 74 68 65 20 42 2d 54  l key of the B-T
50f0: 72 65 65 20 66 6f 72 20 74 68 65 20 74 61 62 6c  ree for the tabl
5100: 65 2e 20 20 54 68 69 73 20 6d 65 61 6e 73 20 74  e.  This means t
5110: 68 61 74 20 74 68 65 20 63 6f 6c 75 6d 6e 0a 6d  hat the column.m
5120: 61 79 20 6f 6e 6c 79 20 68 6f 6c 64 20 75 6e 69  ay only hold uni
5130: 71 75 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75  que integer valu
5140: 65 73 2e 20 20 28 45 78 63 65 70 74 20 66 6f 72  es.  (Except for
5150: 20 74 68 69 73 20 6f 6e 65 20 63 61 73 65 2c 0a   this one case,.
5160: 53 51 4c 69 74 65 20 69 67 6e 6f 72 65 73 20 74  SQLite ignores t
5170: 68 65 20 64 61 74 61 74 79 70 65 20 73 70 65 63  he datatype spec
5180: 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 63 6f 6c  ification of col
5190: 75 6d 6e 73 20 61 6e 64 20 61 6c 6c 6f 77 73 0a  umns and allows.
51a0: 61 6e 79 20 6b 69 6e 64 20 6f 66 20 64 61 74 61  any kind of data
51b0: 20 74 6f 20 62 65 20 70 75 74 20 69 6e 20 61 20   to be put in a 
51c0: 63 6f 6c 75 6d 6e 20 72 65 67 61 72 64 6c 65 73  column regardles
51d0: 73 20 6f 66 20 69 74 73 20 64 65 63 6c 61 72 65  s of its declare
51e0: 64 0a 64 61 74 61 74 79 70 65 2e 29 20 20 49 66  d.datatype.)  If
51f0: 20 61 20 74 61 62 6c 65 20 64 6f 65 73 20 6e 6f   a table does no
5200: 74 20 68 61 76 65 20 61 6e 20 49 4e 54 45 47 45  t have an INTEGE
5210: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f  R PRIMARY KEY co
5220: 6c 75 6d 6e 2c 0a 74 68 65 6e 20 74 68 65 20 42  lumn,.then the B
5230: 2d 54 72 65 65 20 6b 65 79 20 77 69 6c 6c 20 62  -Tree key will b
5240: 65 20 61 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  e a automaticall
5250: 79 20 67 65 6e 65 72 61 74 65 64 20 69 6e 74 65  y generated inte
5260: 67 65 72 2e 20 20 54 68 65 0a 42 2d 54 72 65 65  ger.  The.B-Tree
5270: 20 6b 65 79 20 66 6f 72 20 61 20 72 6f 77 20 63   key for a row c
5280: 61 6e 20 61 6c 77 61 79 73 20 62 65 20 61 63 63  an always be acc
5290: 65 73 73 65 64 20 75 73 69 6e 67 20 6f 6e 65 20  essed using one 
52a0: 6f 66 20 74 68 65 0a 73 70 65 63 69 61 6c 20 6e  of the.special n
52b0: 61 6d 65 73 20 22 3c 62 3e 52 4f 57 49 44 3c 2f  ames "<b>ROWID</
52c0: 62 3e 22 2c 20 22 3c 62 3e 4f 49 44 3c 2f 62 3e  b>", "<b>OID</b>
52d0: 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44  ", or "<b>_ROWID
52e0: 5f 3c 2f 62 3e 22 2e 0a 54 68 69 73 20 69 73 20  _</b>"..This is 
52f0: 74 72 75 65 20 72 65 67 61 72 64 6c 65 73 73 20  true regardless 
5300: 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  of whether or no
5310: 74 20 74 68 65 72 65 20 69 73 20 61 6e 20 49 4e  t there is an IN
5320: 54 45 47 45 52 0a 50 52 49 4d 41 52 59 20 4b 45  TEGER.PRIMARY KE
5330: 59 2e 20 20 41 6e 20 49 4e 54 45 47 45 52 20 50  Y.  An INTEGER P
5340: 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d  RIMARY KEY colum
5350: 6e 20 6d 61 6e 20 61 6c 73 6f 20 69 6e 63 6c 75  n man also inclu
5360: 64 65 20 74 68 65 0a 6b 65 79 77 6f 72 64 20 41  de the.keyword A
5370: 55 54 4f 49 4e 43 52 45 4d 45 4e 54 2e 20 20 54  UTOINCREMENT.  T
5380: 68 65 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54  he AUTOINCREMENT
5390: 20 6b 65 79 77 6f 72 64 20 6d 6f 64 69 66 69 65   keyword modifie
53a0: 64 20 74 68 65 20 77 61 79 0a 74 68 61 74 20 42  d the way.that B
53b0: 2d 54 72 65 65 20 6b 65 79 73 20 61 72 65 20 61  -Tree keys are a
53c0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 67 65 6e  utomatically gen
53d0: 65 72 61 74 65 64 2e 20 20 41 64 64 69 74 69 6f  erated.  Additio
53e0: 6e 61 6c 20 64 65 74 61 69 6c 0a 6f 6e 20 61 75  nal detail.on au
53f0: 74 6f 6d 61 74 69 63 20 42 2d 54 72 65 65 20 6b  tomatic B-Tree k
5400: 65 79 20 67 65 6e 65 72 61 74 69 6f 6e 20 69 73  ey generation is
5410: 20 61 76 61 69 6c 61 62 6c 65 0a 3c 61 20 68 72   available.<a hr
5420: 65 66 3d 22 61 75 74 6f 69 6e 63 2e 68 74 6d 6c  ef="autoinc.html
5430: 22 3e 73 65 70 61 72 61 74 65 6c 79 3c 2f 61 3e  ">separately</a>
5440: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65  .</p>..<p>If the
5450: 20 22 54 45 4d 50 22 20 6f 72 20 22 54 45 4d 50   "TEMP" or "TEMP
5460: 4f 52 41 52 59 22 20 6b 65 79 77 6f 72 64 20 6f  ORARY" keyword o
5470: 63 63 75 72 73 20 69 6e 20 62 65 74 77 65 65 6e  ccurs in between
5480: 20 22 43 52 45 41 54 45 22 0a 61 6e 64 20 22 54   "CREATE".and "T
5490: 41 42 4c 45 22 20 74 68 65 6e 20 74 68 65 20 74  ABLE" then the t
54a0: 61 62 6c 65 20 74 68 61 74 20 69 73 20 63 72 65  able that is cre
54b0: 61 74 65 64 20 69 73 20 6f 6e 6c 79 20 76 69 73  ated is only vis
54c0: 69 62 6c 65 0a 77 69 74 68 69 6e 20 74 68 61 74  ible.within that
54d0: 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 63   same database c
54e0: 6f 6e 6e 65 63 74 69 6f 6e 0a 61 6e 64 20 69 73  onnection.and is
54f0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64   automatically d
5500: 65 6c 65 74 65 64 20 77 68 65 6e 0a 74 68 65 20  eleted when.the 
5510: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
5520: 69 6f 6e 20 69 73 20 63 6c 6f 73 65 64 2e 20 20  ion is closed.  
5530: 41 6e 79 20 69 6e 64 69 63 65 73 20 63 72 65 61  Any indices crea
5540: 74 65 64 20 6f 6e 20 61 20 74 65 6d 70 6f 72 61  ted on a tempora
5550: 72 79 20 74 61 62 6c 65 0a 61 72 65 20 61 6c 73  ry table.are als
5560: 6f 20 74 65 6d 70 6f 72 61 72 79 2e 20 20 54 65  o temporary.  Te
5570: 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73 20 61  mporary tables a
5580: 6e 64 20 69 6e 64 69 63 65 73 20 61 72 65 20 73  nd indices are s
5590: 74 6f 72 65 64 20 69 6e 20 61 0a 73 65 70 61 72  tored in a.separ
55a0: 61 74 65 20 66 69 6c 65 20 64 69 73 74 69 6e 63  ate file distinc
55b0: 74 20 66 72 6f 6d 20 74 68 65 20 6d 61 69 6e 20  t from the main 
55c0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f  database file.</
55d0: 70 3e 0a 0a 3c 70 3e 20 49 66 20 61 20 26 6c 74  p>..<p> If a &lt
55e0: 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67  ;database-name&g
55f0: 74 3b 20 69 73 20 73 70 65 63 69 66 69 65 64 2c  t; is specified,
5600: 20 74 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20   then the table 
5610: 69 73 20 63 72 65 61 74 65 64 20 69 6e 20 0a 74  is created in .t
5620: 68 65 20 6e 61 6d 65 64 20 64 61 74 61 62 61 73  he named databas
5630: 65 2e 20 49 74 20 69 73 20 61 6e 20 65 72 72 6f  e. It is an erro
5640: 72 20 74 6f 20 73 70 65 63 69 66 79 20 62 6f 74  r to specify bot
5650: 68 20 61 20 26 6c 74 3b 64 61 74 61 62 61 73 65  h a &lt;database
5660: 2d 6e 61 6d 65 26 67 74 3b 0a 61 6e 64 20 74 68  -name&gt;.and th
5670: 65 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 2c 20  e TEMP keyword, 
5680: 75 6e 6c 65 73 73 20 74 68 65 20 26 6c 74 3b 64  unless the &lt;d
5690: 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b  atabase-name&gt;
56a0: 20 69 73 20 22 74 65 6d 70 22 2e 20 49 66 20 6e   is "temp". If n
56b0: 6f 0a 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20  o.database name 
56c0: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 61 6e  is specified, an
56d0: 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77 6f  d the TEMP keywo
56e0: 72 64 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e  rd is not presen
56f0: 74 2c 0a 74 68 65 20 74 61 62 6c 65 20 69 73 20  t,.the table is 
5700: 63 72 65 61 74 65 64 20 69 6e 20 74 68 65 20 6d  created in the m
5710: 61 69 6e 20 64 61 74 61 62 61 73 65 2e 3c 2f 70  ain database.</p
5720: 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e  >..<p>The option
5730: 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  al conflict-clau
5740: 73 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 65 61 63  se following eac
5750: 68 20 63 6f 6e 73 74 72 61 69 6e 74 0a 61 6c 6c  h constraint.all
5760: 6f 77 73 20 74 68 65 20 73 70 65 63 69 66 69 63  ows the specific
5770: 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65  ation of an alte
5780: 72 6e 61 74 69 76 65 20 64 65 66 61 75 6c 74 0a  rnative default.
5790: 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c  constraint confl
57a0: 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  ict resolution a
57b0: 6c 67 6f 72 69 74 68 6d 20 66 6f 72 20 74 68 61  lgorithm for tha
57c0: 74 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0a 54 68  t constraint..Th
57d0: 65 20 64 65 66 61 75 6c 74 20 69 73 20 61 62 6f  e default is abo
57e0: 72 74 20 41 42 4f 52 54 2e 20 20 44 69 66 66 65  rt ABORT.  Diffe
57f0: 72 65 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 73  rent constraints
5800: 20 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d 65   within the same
5810: 0a 74 61 62 6c 65 20 6d 61 79 20 68 61 76 65 20  .table may have 
5820: 64 69 66 66 65 72 65 6e 74 20 64 65 66 61 75 6c  different defaul
5830: 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  t conflict resol
5840: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 73  ution algorithms
5850: 2e 0a 49 66 20 61 6e 20 43 4f 50 59 2c 20 49 4e  ..If an COPY, IN
5860: 53 45 52 54 2c 20 6f 72 20 55 50 44 41 54 45 20  SERT, or UPDATE 
5870: 63 6f 6d 6d 61 6e 64 20 73 70 65 63 69 66 69 65  command specifie
5880: 73 20 61 20 64 69 66 66 65 72 65 6e 74 20 63 6f  s a different co
5890: 6e 66 6c 69 63 74 0a 72 65 73 6f 6c 75 74 69 6f  nflict.resolutio
58a0: 6e 20 61 6c 67 6f 72 69 74 68 6d 2c 20 74 68 65  n algorithm, the
58b0: 6e 20 74 68 61 74 20 61 6c 67 6f 72 69 74 68 6d  n that algorithm
58c0: 20 69 73 20 75 73 65 64 20 69 6e 20 70 6c 61 63   is used in plac
58d0: 65 20 6f 66 20 74 68 65 0a 64 65 66 61 75 6c 74  e of the.default
58e0: 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69   algorithm speci
58f0: 66 69 65 64 20 69 6e 20 74 68 65 20 43 52 45 41  fied in the CREA
5900: 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  TE TABLE stateme
5910: 6e 74 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74  nt..See the sect
5920: 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68 72  ion titled.<a hr
5930: 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f  ef="#conflict">O
5940: 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66  N CONFLICT</a> f
5950: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
5960: 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a  formation.</p>..
5970: 3c 70 3e 43 48 45 43 4b 20 63 6f 6e 73 74 72 61  <p>CHECK constra
5980: 69 6e 74 73 20 61 72 65 20 73 75 70 70 6f 72 74  ints are support
5990: 65 64 20 61 73 20 6f 66 20 76 65 72 73 69 6f 6e  ed as of version
59a0: 20 33 2e 33 2e 30 2e 20 20 50 72 69 6f 72 0a 74   3.3.0.  Prior.t
59b0: 6f 20 76 65 72 73 69 6f 6e 20 33 2e 33 2e 30 2c  o version 3.3.0,
59c0: 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e   CHECK constrain
59d0: 74 73 20 77 65 72 65 20 70 61 72 73 65 64 20 62  ts were parsed b
59e0: 75 74 20 6e 6f 74 20 65 6e 66 6f 72 63 65 64 2e  ut not enforced.
59f0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61  </p>..<p>There a
5a00: 72 65 20 6e 6f 20 61 72 62 69 74 72 61 72 79 20  re no arbitrary 
5a10: 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65 20 6e 75  limits on the nu
5a20: 6d 62 65 72 0a 6f 66 20 63 6f 6c 75 6d 6e 73 20  mber.of columns 
5a30: 6f 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72  or on the number
5a40: 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74 73 20   of constraints 
5a50: 69 6e 20 61 20 74 61 62 6c 65 2e 0a 54 68 65 20  in a table..The 
5a60: 74 6f 74 61 6c 20 61 6d 6f 75 6e 74 20 6f 66 20  total amount of 
5a70: 64 61 74 61 20 69 6e 20 61 20 73 69 6e 67 6c 65  data in a single
5a80: 20 72 6f 77 20 69 73 20 6c 69 6d 69 74 65 64 20   row is limited 
5a90: 74 6f 20 61 62 6f 75 74 0a 31 20 6d 65 67 61 62  to about.1 megab
5aa0: 79 74 65 73 20 69 6e 20 76 65 72 73 69 6f 6e 20  ytes in version 
5ab0: 32 2e 38 2e 20 20 49 6e 20 76 65 72 73 69 6f 6e  2.8.  In version
5ac0: 20 33 2e 30 20 74 68 65 72 65 20 69 73 20 6e 6f   3.0 there is no
5ad0: 20 61 72 62 69 74 72 61 72 79 0a 6c 69 6d 69 74   arbitrary.limit
5ae0: 20 6f 6e 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f   on the amount o
5af0: 66 20 64 61 74 61 20 69 6e 20 61 20 72 6f 77 2e  f data in a row.
5b00: 3c 2f 70 3e 0a 0a 0a 3c 70 3e 54 68 65 20 43 52  </p>...<p>The CR
5b10: 45 41 54 45 20 54 41 42 4c 45 20 41 53 20 66 6f  EATE TABLE AS fo
5b20: 72 6d 20 64 65 66 69 6e 65 73 20 74 68 65 20 74  rm defines the t
5b30: 61 62 6c 65 20 74 6f 20 62 65 0a 74 68 65 20 72  able to be.the r
5b40: 65 73 75 6c 74 20 73 65 74 20 6f 66 20 61 20 71  esult set of a q
5b50: 75 65 72 79 2e 20 20 54 68 65 20 6e 61 6d 65 73  uery.  The names
5b60: 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 63 6f   of the table co
5b70: 6c 75 6d 6e 73 20 61 72 65 0a 74 68 65 20 6e 61  lumns are.the na
5b80: 6d 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  mes of the colum
5b90: 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74  ns in the result
5ba0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 65 78  .</p>..<p>The ex
5bb0: 61 63 74 20 74 65 78 74 0a 6f 66 20 65 61 63 68  act text.of each
5bc0: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74   CREATE TABLE st
5bd0: 61 74 65 6d 65 6e 74 20 69 73 20 73 74 6f 72 65  atement is store
5be0: 64 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69  d in the <b>sqli
5bf0: 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 74 61  te_master</b>.ta
5c00: 62 6c 65 2e 20 20 45 76 65 72 79 20 74 69 6d 65  ble.  Every time
5c10: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73   the database is
5c20: 20 6f 70 65 6e 65 64 2c 20 61 6c 6c 20 43 52 45   opened, all CRE
5c30: 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ATE TABLE statem
5c40: 65 6e 74 73 0a 61 72 65 20 72 65 61 64 20 66 72  ents.are read fr
5c50: 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65  om the <b>sqlite
5c60: 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c  _master</b> tabl
5c70: 65 20 61 6e 64 20 75 73 65 64 20 74 6f 20 72 65  e and used to re
5c80: 67 65 6e 65 72 61 74 65 0a 53 51 4c 69 74 65 27  generate.SQLite'
5c90: 73 20 69 6e 74 65 72 6e 61 6c 20 72 65 70 72 65  s internal repre
5ca0: 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65  sentation of the
5cb0: 20 74 61 62 6c 65 20 6c 61 79 6f 75 74 2e 0a 49   table layout..I
5cc0: 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 63  f the original c
5cd0: 6f 6d 6d 61 6e 64 20 77 61 73 20 61 20 43 52 45  ommand was a CRE
5ce0: 41 54 45 20 54 41 42 4c 45 20 41 53 20 74 68 65  ATE TABLE AS the
5cf0: 6e 20 74 68 65 6e 20 61 6e 20 65 71 75 69 76 61  n then an equiva
5d00: 6c 65 6e 74 0a 43 52 45 41 54 45 20 54 41 42 4c  lent.CREATE TABL
5d10: 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73  E statement is s
5d20: 79 6e 74 68 65 73 69 7a 65 64 20 61 6e 64 20 73  ynthesized and s
5d30: 74 6f 72 65 20 69 6e 20 3c 62 3e 73 71 6c 69 74  tore in <b>sqlit
5d40: 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 69 6e 20  e_master</b>.in 
5d50: 70 6c 61 63 65 20 6f 66 20 74 68 65 20 6f 72 69  place of the ori
5d60: 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64 2e 0a 54  ginal command..T
5d70: 68 65 20 74 65 78 74 20 6f 66 20 43 52 45 41 54  he text of CREAT
5d80: 45 20 54 45 4d 50 4f 52 41 52 59 20 54 41 42 4c  E TEMPORARY TABL
5d90: 45 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65  E statements are
5da0: 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 0a 3c   stored in the.<
5db0: 62 3e 73 71 6c 69 74 65 5f 74 65 6d 70 5f 6d 61  b>sqlite_temp_ma
5dc0: 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 2e 0a  ster</b> table..
5dd0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65 73 20  </p>..<p>Tables 
5de0: 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73 69 6e  are removed usin
5df0: 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23  g the <a href="#
5e00: 64 72 6f 70 74 61 62 6c 65 22 3e 44 52 4f 50 20  droptable">DROP 
5e10: 54 41 42 4c 45 3c 2f 61 3e 20 0a 73 74 61 74 65  TABLE</a> .state
5e20: 6d 65 6e 74 2e 20 20 3c 2f 70 3e 0a 7d 0a 0a 0a  ment.  </p>.}...
5e30: 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20  Section {CREATE 
5e40: 54 52 49 47 47 45 52 7d 20 63 72 65 61 74 65 74  TRIGGER} createt
5e50: 72 69 67 67 65 72 0a 0a 53 79 6e 74 61 78 20 7b  rigger..Syntax {
5e60: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
5e70: 0a 43 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20  .CREATE [TEMP | 
5e80: 54 45 4d 50 4f 52 41 52 59 5d 20 54 52 49 47 47  TEMPORARY] TRIGG
5e90: 45 52 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65  ER <trigger-name
5ea0: 3e 20 5b 20 42 45 46 4f 52 45 20 7c 20 41 46 54  > [ BEFORE | AFT
5eb0: 45 52 20 5d 0a 3c 64 61 74 61 62 61 73 65 2d 65  ER ].<database-e
5ec0: 76 65 6e 74 3e 20 4f 4e 20 5b 3c 64 61 74 61 62  vent> ON [<datab
5ed0: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
5ee0: 62 6c 65 2d 6e 61 6d 65 3e 0a 3c 74 72 69 67 67  ble-name>.<trigg
5ef0: 65 72 2d 61 63 74 69 6f 6e 3e 0a 7d 0a 0a 53 79  er-action>.}..Sy
5f00: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
5f10: 65 6e 74 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54  ent} {.CREATE [T
5f20: 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d  EMP | TEMPORARY]
5f30: 20 54 52 49 47 47 45 52 20 3c 74 72 69 67 67 65   TRIGGER <trigge
5f40: 72 2d 6e 61 6d 65 3e 20 49 4e 53 54 45 41 44 20  r-name> INSTEAD 
5f50: 4f 46 0a 3c 64 61 74 61 62 61 73 65 2d 65 76 65  OF.<database-eve
5f60: 6e 74 3e 20 4f 4e 20 5b 3c 64 61 74 61 62 61 73  nt> ON [<databas
5f70: 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 76 69 65 77  e-name> .] <view
5f80: 2d 6e 61 6d 65 3e 0a 3c 74 72 69 67 67 65 72 2d  -name>.<trigger-
5f90: 61 63 74 69 6f 6e 3e 0a 7d 0a 0a 53 79 6e 74 61  action>.}..Synta
5fa0: 78 20 7b 64 61 74 61 62 61 73 65 2d 65 76 65 6e  x {database-even
5fb0: 74 7d 20 7b 0a 44 45 4c 45 54 45 20 7c 20 0a 49  t} {.DELETE | .I
5fc0: 4e 53 45 52 54 20 7c 20 0a 55 50 44 41 54 45 20  NSERT | .UPDATE 
5fd0: 7c 20 0a 55 50 44 41 54 45 20 4f 46 20 3c 63 6f  | .UPDATE OF <co
5fe0: 6c 75 6d 6e 2d 6c 69 73 74 3e 0a 7d 0a 0a 53 79  lumn-list>.}..Sy
5ff0: 6e 74 61 78 20 7b 74 72 69 67 67 65 72 2d 61 63  ntax {trigger-ac
6000: 74 69 6f 6e 7d 20 7b 0a 5b 20 46 4f 52 20 45 41  tion} {.[ FOR EA
6010: 43 48 20 52 4f 57 20 7c 20 46 4f 52 20 45 41 43  CH ROW | FOR EAC
6020: 48 20 53 54 41 54 45 4d 45 4e 54 20 5d 20 5b 20  H STATEMENT ] [ 
6030: 57 48 45 4e 20 3c 65 78 70 72 65 73 73 69 6f 6e  WHEN <expression
6040: 3e 20 5d 20 0a 42 45 47 49 4e 20 0a 20 20 3c 74  > ] .BEGIN .  <t
6050: 72 69 67 67 65 72 2d 73 74 65 70 3e 20 3b 20 5b  rigger-step> ; [
6060: 20 3c 74 72 69 67 67 65 72 2d 73 74 65 70 3e 20   <trigger-step> 
6070: 3b 20 5d 2a 0a 45 4e 44 0a 7d 0a 0a 53 79 6e 74  ; ]*.END.}..Synt
6080: 61 78 20 7b 74 72 69 67 67 65 72 2d 73 74 65 70  ax {trigger-step
6090: 7d 20 7b 0a 3c 75 70 64 61 74 65 2d 73 74 61 74  } {.<update-stat
60a0: 65 6d 65 6e 74 3e 20 7c 20 3c 69 6e 73 65 72 74  ement> | <insert
60b0: 2d 73 74 61 74 65 6d 65 6e 74 3e 20 7c 20 0a 3c  -statement> | .<
60c0: 64 65 6c 65 74 65 2d 73 74 61 74 65 6d 65 6e 74  delete-statement
60d0: 3e 20 7c 20 3c 73 65 6c 65 63 74 2d 73 74 61 74  > | <select-stat
60e0: 65 6d 65 6e 74 3e 20 0a 7d 0a 0a 70 75 74 73 20  ement> .}..puts 
60f0: 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20  {.<p>The CREATE 
6100: 54 52 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e  TRIGGER statemen
6110: 74 20 69 73 20 75 73 65 64 20 74 6f 20 61 64 64  t is used to add
6120: 20 74 72 69 67 67 65 72 73 20 74 6f 20 74 68 65   triggers to the
6130: 20 0a 64 61 74 61 62 61 73 65 20 73 63 68 65 6d   .database schem
6140: 61 2e 20 54 72 69 67 67 65 72 73 20 61 72 65 20  a. Triggers are 
6150: 64 61 74 61 62 61 73 65 20 6f 70 65 72 61 74 69  database operati
6160: 6f 6e 73 20 28 74 68 65 20 3c 69 3e 74 72 69 67  ons (the <i>trig
6170: 67 65 72 2d 61 63 74 69 6f 6e 3c 2f 69 3e 29 20  ger-action</i>) 
6180: 0a 74 68 61 74 20 61 72 65 20 61 75 74 6f 6d 61  .that are automa
6190: 74 69 63 61 6c 6c 79 20 70 65 72 66 6f 72 6d 65  tically performe
61a0: 64 20 77 68 65 6e 20 61 20 73 70 65 63 69 66 69  d when a specifi
61b0: 65 64 20 64 61 74 61 62 61 73 65 20 65 76 65 6e  ed database even
61c0: 74 20 28 74 68 65 0a 3c 69 3e 64 61 74 61 62 61  t (the.<i>databa
61d0: 73 65 2d 65 76 65 6e 74 3c 2f 69 3e 29 20 6f 63  se-event</i>) oc
61e0: 63 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a 3c 70 3e  curs.  </p>..<p>
61f0: 41 20 74 72 69 67 67 65 72 20 6d 61 79 20 62 65  A trigger may be
6200: 20 73 70 65 63 69 66 69 65 64 20 74 6f 20 66 69   specified to fi
6210: 72 65 20 77 68 65 6e 65 76 65 72 20 61 20 44 45  re whenever a DE
6220: 4c 45 54 45 2c 20 49 4e 53 45 52 54 20 6f 72 20  LETE, INSERT or 
6230: 55 50 44 41 54 45 20 6f 66 20 61 0a 70 61 72 74  UPDATE of a.part
6240: 69 63 75 6c 61 72 20 64 61 74 61 62 61 73 65 20  icular database 
6250: 74 61 62 6c 65 20 6f 63 63 75 72 73 2c 20 6f 72  table occurs, or
6260: 20 77 68 65 6e 65 76 65 72 20 61 6e 20 55 50 44   whenever an UPD
6270: 41 54 45 20 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f  ATE of one or mo
6280: 72 65 0a 73 70 65 63 69 66 69 65 64 20 63 6f 6c  re.specified col
6290: 75 6d 6e 73 20 6f 66 20 61 20 74 61 62 6c 65 20  umns of a table 
62a0: 61 72 65 20 75 70 64 61 74 65 64 2e 3c 2f 70 3e  are updated.</p>
62b0: 0a 0a 3c 70 3e 41 74 20 74 68 69 73 20 74 69 6d  ..<p>At this tim
62c0: 65 20 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74  e SQLite support
62d0: 73 20 6f 6e 6c 79 20 46 4f 52 20 45 41 43 48 20  s only FOR EACH 
62e0: 52 4f 57 20 74 72 69 67 67 65 72 73 2c 20 6e 6f  ROW triggers, no
62f0: 74 20 46 4f 52 20 45 41 43 48 0a 53 54 41 54 45  t FOR EACH.STATE
6300: 4d 45 4e 54 20 74 72 69 67 67 65 72 73 2e 20 48  MENT triggers. H
6310: 65 6e 63 65 20 65 78 70 6c 69 63 69 74 6c 79 20  ence explicitly 
6320: 73 70 65 63 69 66 79 69 6e 67 20 46 4f 52 20 45  specifying FOR E
6330: 41 43 48 20 52 4f 57 20 69 73 20 6f 70 74 69 6f  ACH ROW is optio
6340: 6e 61 6c 2e 20 20 46 4f 52 0a 45 41 43 48 20 52  nal.  FOR.EACH R
6350: 4f 57 20 69 6d 70 6c 69 65 73 20 74 68 61 74 20  OW implies that 
6360: 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
6370: 74 73 20 73 70 65 63 69 66 69 65 64 20 61 73 20  ts specified as 
6380: 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73  <i>trigger-steps
6390: 3c 2f 69 3e 20 0a 6d 61 79 20 62 65 20 65 78 65  </i> .may be exe
63a0: 63 75 74 65 64 20 28 64 65 70 65 6e 64 69 6e 67  cuted (depending
63b0: 20 6f 6e 20 74 68 65 20 57 48 45 4e 20 63 6c 61   on the WHEN cla
63c0: 75 73 65 29 20 66 6f 72 20 65 61 63 68 20 64 61  use) for each da
63d0: 74 61 62 61 73 65 20 72 6f 77 20 62 65 69 6e 67  tabase row being
63e0: 0a 69 6e 73 65 72 74 65 64 2c 20 75 70 64 61 74  .inserted, updat
63f0: 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20 62 79  ed or deleted by
6400: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 63   the statement c
6410: 61 75 73 69 6e 67 20 74 68 65 20 74 72 69 67 67  ausing the trigg
6420: 65 72 20 74 6f 20 66 69 72 65 2e 3c 2f 70 3e 0a  er to fire.</p>.
6430: 0a 3c 70 3e 42 6f 74 68 20 74 68 65 20 57 48 45  .<p>Both the WHE
6440: 4e 20 63 6c 61 75 73 65 20 61 6e 64 20 74 68 65  N clause and the
6450: 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70   <i>trigger-step
6460: 73 3c 2f 69 3e 20 6d 61 79 20 61 63 63 65 73 73  s</i> may access
6470: 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 0a 74 68   elements of .th
6480: 65 20 72 6f 77 20 62 65 69 6e 67 20 69 6e 73 65  e row being inse
6490: 72 74 65 64 2c 20 64 65 6c 65 74 65 64 20 6f 72  rted, deleted or
64a0: 20 75 70 64 61 74 65 64 20 75 73 69 6e 67 20 72   updated using r
64b0: 65 66 65 72 65 6e 63 65 73 20 6f 66 20 74 68 65  eferences of the
64c0: 20 66 6f 72 6d 20 0a 22 4e 45 57 2e 3c 69 3e 63   form ."NEW.<i>c
64d0: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 20  olumn-name</i>" 
64e0: 61 6e 64 20 22 4f 4c 44 2e 3c 69 3e 63 6f 6c 75  and "OLD.<i>colu
64f0: 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 2c 20 77 68  mn-name</i>", wh
6500: 65 72 65 0a 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61  ere.<i>column-na
6510: 6d 65 3c 2f 69 3e 20 69 73 20 74 68 65 20 6e 61  me</i> is the na
6520: 6d 65 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 66  me of a column f
6530: 72 6f 6d 20 74 68 65 20 74 61 62 6c 65 20 74 68  rom the table th
6540: 61 74 20 74 68 65 20 74 72 69 67 67 65 72 0a 69  at the trigger.i
6550: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
6560: 68 2e 20 4f 4c 44 20 61 6e 64 20 4e 45 57 20 72  h. OLD and NEW r
6570: 65 66 65 72 65 6e 63 65 73 20 6d 61 79 20 6f 6e  eferences may on
6580: 6c 79 20 62 65 20 75 73 65 64 20 69 6e 20 74 72  ly be used in tr
6590: 69 67 67 65 72 73 20 6f 6e 0a 3c 69 3e 74 72 69  iggers on.<i>tri
65a0: 67 67 65 72 2d 65 76 65 6e 74 3c 2f 69 3e 73 20  gger-event</i>s 
65b0: 66 6f 72 20 77 68 69 63 68 20 74 68 65 79 20 61  for which they a
65c0: 72 65 20 72 65 6c 65 76 61 6e 74 2c 20 61 73 20  re relevant, as 
65d0: 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 74  follows:</p>..<t
65e0: 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65  able border=0 ce
65f0: 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74  llpadding=10>.<t
6600: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
6610: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
6620: 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 49  " width=120><i>I
6630: 4e 53 45 52 54 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c  NSERT</i></td>.<
6640: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
6650: 4e 45 57 20 72 65 66 65 72 65 6e 63 65 73 20 61  NEW references a
6660: 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f  re valid</td>.</
6670: 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  tr>.<tr>.<td val
6680: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
6690: 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 31 32  "right" width=12
66a0: 30 3e 3c 69 3e 55 50 44 41 54 45 3c 2f 69 3e 3c  0><i>UPDATE</i><
66b0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
66c0: 22 74 6f 70 22 3e 4e 45 57 20 61 6e 64 20 4f 4c  "top">NEW and OL
66d0: 44 20 72 65 66 65 72 65 6e 63 65 73 20 61 72 65  D references are
66e0: 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72   valid</td>.</tr
66f0: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  >.<tr>.<td valig
6700: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
6710: 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e  ight" width=120>
6720: 3c 69 3e 44 45 4c 45 54 45 3c 2f 69 3e 3c 2f 74  <i>DELETE</i></t
6730: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
6740: 6f 70 22 3e 4f 4c 44 20 72 65 66 65 72 65 6e 63  op">OLD referenc
6750: 65 73 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64  es are valid</td
6760: 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e  >.</tr>.</table>
6770: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 20 57  .</p>..<p>If a W
6780: 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20 73 75  HEN clause is su
6790: 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51 4c 20  pplied, the SQL 
67a0: 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65 63 69  statements speci
67b0: 66 69 65 64 20 61 73 20 3c 69 3e 74 72 69 67 67  fied as <i>trigg
67c0: 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 61 72 65  er-steps</i> are
67d0: 20 6f 6e 6c 79 20 65 78 65 63 75 74 65 64 20 66   only executed f
67e0: 6f 72 20 72 6f 77 73 20 66 6f 72 20 77 68 69 63  or rows for whic
67f0: 68 20 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73  h the WHEN claus
6800: 65 20 69 73 20 74 72 75 65 2e 20 49 66 20 6e 6f  e is true. If no
6810: 20 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20   WHEN clause is 
6820: 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51  supplied, the SQ
6830: 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65  L statements are
6840: 20 65 78 65 63 75 74 65 64 20 66 6f 72 20 61 6c   executed for al
6850: 6c 20 72 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e  l rows.</p>..<p>
6860: 54 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 69  The specified <i
6870: 3e 74 72 69 67 67 65 72 2d 74 69 6d 65 3c 2f 69  >trigger-time</i
6880: 3e 20 64 65 74 65 72 6d 69 6e 65 73 20 77 68 65  > determines whe
6890: 6e 20 74 68 65 20 3c 69 3e 74 72 69 67 67 65 72  n the <i>trigger
68a0: 2d 73 74 65 70 73 3c 2f 69 3e 0a 77 69 6c 6c 20  -steps</i>.will 
68b0: 62 65 20 65 78 65 63 75 74 65 64 20 72 65 6c 61  be executed rela
68c0: 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 73 65  tive to the inse
68d0: 72 74 69 6f 6e 2c 20 6d 6f 64 69 66 69 63 61 74  rtion, modificat
68e0: 69 6f 6e 20 6f 72 20 72 65 6d 6f 76 61 6c 20 6f  ion or removal o
68f0: 66 20 74 68 65 0a 61 73 73 6f 63 69 61 74 65 64  f the.associated
6900: 20 72 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6e   row.</p>..<p>An
6910: 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61   ON CONFLICT cla
6920: 75 73 65 20 6d 61 79 20 62 65 20 73 70 65 63 69  use may be speci
6930: 66 69 65 64 20 61 73 20 70 61 72 74 20 6f 66 20  fied as part of 
6940: 61 6e 20 55 50 44 41 54 45 20 6f 72 20 49 4e 53  an UPDATE or INS
6950: 45 52 54 0a 3c 69 3e 74 72 69 67 67 65 72 2d 73  ERT.<i>trigger-s
6960: 74 65 70 3c 2f 69 3e 2e 20 48 6f 77 65 76 65 72  tep</i>. However
6970: 20 69 66 20 61 6e 20 4f 4e 20 43 4f 4e 46 4c 49   if an ON CONFLI
6980: 43 54 20 63 6c 61 75 73 65 20 69 73 20 73 70 65  CT clause is spe
6990: 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20 6f  cified as part o
69a0: 66 20 0a 74 68 65 20 73 74 61 74 65 6d 65 6e 74  f .the statement
69b0: 20 63 61 75 73 69 6e 67 20 74 68 65 20 74 72 69   causing the tri
69c0: 67 67 65 72 20 74 6f 20 66 69 72 65 2c 20 74 68  gger to fire, th
69d0: 65 6e 20 74 68 69 73 20 63 6f 6e 66 6c 69 63 74  en this conflict
69e0: 20 68 61 6e 64 6c 69 6e 67 0a 70 6f 6c 69 63 79   handling.policy
69f0: 20 69 73 20 75 73 65 64 20 69 6e 73 74 65 61 64   is used instead
6a00: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65  .</p>..<p>Trigge
6a10: 72 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63  rs are automatic
6a20: 61 6c 6c 79 20 64 72 6f 70 70 65 64 20 77 68 65  ally dropped whe
6a30: 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  n the table that
6a40: 20 74 68 65 79 20 61 72 65 20 0a 61 73 73 6f 63   they are .assoc
6a50: 69 61 74 65 64 20 77 69 74 68 20 69 73 20 64 72  iated with is dr
6a60: 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  opped.</p>..<p>T
6a70: 72 69 67 67 65 72 73 20 6d 61 79 20 62 65 20 63  riggers may be c
6a80: 72 65 61 74 65 64 20 6f 6e 20 76 69 65 77 73 2c  reated on views,
6a90: 20 61 73 20 77 65 6c 6c 20 61 73 20 6f 72 64 69   as well as ordi
6aa0: 6e 61 72 79 20 74 61 62 6c 65 73 2c 20 62 79 20  nary tables, by 
6ab0: 73 70 65 63 69 66 79 69 6e 67 0a 49 4e 53 54 45  specifying.INSTE
6ac0: 41 44 20 4f 46 20 69 6e 20 74 68 65 20 43 52 45  AD OF in the CRE
6ad0: 41 54 45 20 54 52 49 47 47 45 52 20 73 74 61 74  ATE TRIGGER stat
6ae0: 65 6d 65 6e 74 2e 20 49 66 20 6f 6e 65 20 6f 72  ement. If one or
6af0: 20 6d 6f 72 65 20 4f 4e 20 49 4e 53 45 52 54 2c   more ON INSERT,
6b00: 20 4f 4e 20 44 45 4c 45 54 45 0a 6f 72 20 4f 4e   ON DELETE.or ON
6b10: 20 55 50 44 41 54 45 20 74 72 69 67 67 65 72 73   UPDATE triggers
6b20: 20 61 72 65 20 64 65 66 69 6e 65 64 20 6f 6e 20   are defined on 
6b30: 61 20 76 69 65 77 2c 20 74 68 65 6e 20 69 74 20  a view, then it 
6b40: 69 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 20  is not an error 
6b50: 74 6f 20 65 78 65 63 75 74 65 0a 61 6e 20 49 4e  to execute.an IN
6b60: 53 45 52 54 2c 20 44 45 4c 45 54 45 20 6f 72 20  SERT, DELETE or 
6b70: 55 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74  UPDATE statement
6b80: 20 6f 6e 20 74 68 65 20 76 69 65 77 2c 20 72 65   on the view, re
6b90: 73 70 65 63 74 69 76 65 6c 79 2e 20 54 68 65 72  spectively. Ther
6ba0: 65 61 66 74 65 72 2c 0a 65 78 65 63 75 74 69 6e  eafter,.executin
6bb0: 67 20 61 6e 20 49 4e 53 45 52 54 2c 20 44 45 4c  g an INSERT, DEL
6bc0: 45 54 45 20 6f 72 20 55 50 44 41 54 45 20 6f 6e  ETE or UPDATE on
6bd0: 20 74 68 65 20 76 69 65 77 20 63 61 75 73 65 73   the view causes
6be0: 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 0a   the associated.
6bf0: 20 20 74 72 69 67 67 65 72 73 20 74 6f 20 66 69    triggers to fi
6c00: 72 65 2e 20 54 68 65 20 72 65 61 6c 20 74 61 62  re. The real tab
6c10: 6c 65 73 20 75 6e 64 65 72 6c 79 69 6e 67 20 74  les underlying t
6c20: 68 65 20 76 69 65 77 20 61 72 65 20 6e 6f 74 20  he view are not 
6c30: 6d 6f 64 69 66 69 65 64 0a 20 20 28 65 78 63 65  modified.  (exce
6c40: 70 74 20 70 6f 73 73 69 62 6c 79 20 65 78 70 6c  pt possibly expl
6c50: 69 63 69 74 6c 79 2c 20 62 79 20 61 20 74 72 69  icitly, by a tri
6c60: 67 67 65 72 20 70 72 6f 67 72 61 6d 29 2e 3c 2f  gger program).</
6c70: 70 3e 0a 0a 3c 70 3e 3c 62 3e 45 78 61 6d 70 6c  p>..<p><b>Exampl
6c80: 65 3a 3c 2f 62 3e 3c 2f 70 3e 0a 0a 3c 70 3e 41  e:</b></p>..<p>A
6c90: 73 73 75 6d 69 6e 67 20 74 68 61 74 20 63 75 73  ssuming that cus
6ca0: 74 6f 6d 65 72 20 72 65 63 6f 72 64 73 20 61 72  tomer records ar
6cb0: 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20  e stored in the 
6cc0: 22 63 75 73 74 6f 6d 65 72 73 22 20 74 61 62 6c  "customers" tabl
6cd0: 65 2c 20 61 6e 64 0a 74 68 61 74 20 6f 72 64 65  e, and.that orde
6ce0: 72 20 72 65 63 6f 72 64 73 20 61 72 65 20 73 74  r records are st
6cf0: 6f 72 65 64 20 69 6e 20 74 68 65 20 22 6f 72 64  ored in the "ord
6d00: 65 72 73 22 20 74 61 62 6c 65 2c 20 74 68 65 20  ers" table, the 
6d10: 66 6f 6c 6c 6f 77 69 6e 67 20 74 72 69 67 67 65  following trigge
6d20: 72 0a 65 6e 73 75 72 65 73 20 74 68 61 74 20 61  r.ensures that a
6d30: 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 20 6f 72  ll associated or
6d40: 64 65 72 73 20 61 72 65 20 72 65 64 69 72 65 63  ders are redirec
6d50: 74 65 64 20 77 68 65 6e 20 61 20 63 75 73 74 6f  ted when a custo
6d60: 6d 65 72 20 63 68 61 6e 67 65 73 0a 68 69 73 20  mer changes.his 
6d70: 6f 72 20 68 65 72 20 61 64 64 72 65 73 73 3a 3c  or her address:<
6d80: 2f 70 3e 0a 7d 0a 45 78 61 6d 70 6c 65 20 7b 0a  /p>.}.Example {.
6d90: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20 75  CREATE TRIGGER u
6da0: 70 64 61 74 65 5f 63 75 73 74 6f 6d 65 72 5f 61  pdate_customer_a
6db0: 64 64 72 65 73 73 20 55 50 44 41 54 45 20 4f 46  ddress UPDATE OF
6dc0: 20 61 64 64 72 65 73 73 20 4f 4e 20 63 75 73 74   address ON cust
6dd0: 6f 6d 65 72 73 20 0a 20 20 42 45 47 49 4e 0a 20  omers .  BEGIN. 
6de0: 20 20 20 55 50 44 41 54 45 20 6f 72 64 65 72 73     UPDATE orders
6df0: 20 53 45 54 20 61 64 64 72 65 73 73 20 3d 20 6e   SET address = n
6e00: 65 77 2e 61 64 64 72 65 73 73 20 57 48 45 52 45  ew.address WHERE
6e10: 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d 65 20 3d   customer_name =
6e20: 20 6f 6c 64 2e 6e 61 6d 65 3b 0a 20 20 45 4e 44   old.name;.  END
6e30: 3b 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e 57 69  ;.}.puts {.<p>Wi
6e40: 74 68 20 74 68 69 73 20 74 72 69 67 67 65 72 20  th this trigger 
6e50: 69 6e 73 74 61 6c 6c 65 64 2c 20 65 78 65 63 75  installed, execu
6e60: 74 69 6e 67 20 74 68 65 20 73 74 61 74 65 6d 65  ting the stateme
6e70: 6e 74 3a 3c 2f 70 3e 0a 7d 0a 0a 45 78 61 6d 70  nt:</p>.}..Examp
6e80: 6c 65 20 7b 0a 55 50 44 41 54 45 20 63 75 73 74  le {.UPDATE cust
6e90: 6f 6d 65 72 73 20 53 45 54 20 61 64 64 72 65 73  omers SET addres
6ea0: 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e 27  s = '1 Main St.'
6eb0: 20 57 48 45 52 45 20 6e 61 6d 65 20 3d 20 27 4a   WHERE name = 'J
6ec0: 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 0a 70 75  ack Jones';.}.pu
6ed0: 74 73 20 7b 0a 3c 70 3e 63 61 75 73 65 73 20 74  ts {.<p>causes t
6ee0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20  he following to 
6ef0: 62 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  be automatically
6f00: 20 65 78 65 63 75 74 65 64 3a 3c 2f 70 3e 0a 7d   executed:</p>.}
6f10: 0a 45 78 61 6d 70 6c 65 20 7b 0a 55 50 44 41 54  .Example {.UPDAT
6f20: 45 20 6f 72 64 65 72 73 20 53 45 54 20 61 64 64  E orders SET add
6f30: 72 65 73 73 20 3d 20 27 31 20 4d 61 69 6e 20 53  ress = '1 Main S
6f40: 74 2e 27 20 57 48 45 52 45 20 63 75 73 74 6f 6d  t.' WHERE custom
6f50: 65 72 5f 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20  er_name = 'Jack 
6f60: 4a 6f 6e 65 73 27 3b 0a 7d 0a 0a 70 75 74 73 20  Jones';.}..puts 
6f70: 7b 0a 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 63  {.<p>Note that c
6f80: 75 72 72 65 6e 74 6c 79 2c 20 74 72 69 67 67 65  urrently, trigge
6f90: 72 73 20 6d 61 79 20 62 65 68 61 76 65 20 6f 64  rs may behave od
6fa0: 64 6c 79 20 77 68 65 6e 20 63 72 65 61 74 65 64  dly when created
6fb0: 20 6f 6e 20 74 61 62 6c 65 73 0a 20 20 77 69 74   on tables.  wit
6fc0: 68 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  h INTEGER PRIMAR
6fd0: 59 20 4b 45 59 20 66 69 65 6c 64 73 2e 20 49 66  Y KEY fields. If
6fe0: 20 61 20 42 45 46 4f 52 45 20 74 72 69 67 67 65   a BEFORE trigge
6ff0: 72 20 70 72 6f 67 72 61 6d 20 6d 6f 64 69 66 69  r program modifi
7000: 65 73 20 74 68 65 20 0a 20 20 49 4e 54 45 47 45  es the .  INTEGE
7010: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 66 69  R PRIMARY KEY fi
7020: 65 6c 64 20 6f 66 20 61 20 72 6f 77 20 74 68 61  eld of a row tha
7030: 74 20 77 69 6c 6c 20 62 65 20 73 75 62 73 65 71  t will be subseq
7040: 75 65 6e 74 6c 79 20 75 70 64 61 74 65 64 20 62  uently updated b
7050: 79 20 74 68 65 0a 20 20 73 74 61 74 65 6d 65 6e  y the.  statemen
7060: 74 20 74 68 61 74 20 63 61 75 73 65 73 20 74 68  t that causes th
7070: 65 20 74 72 69 67 67 65 72 20 74 6f 20 66 69 72  e trigger to fir
7080: 65 2c 20 74 68 65 6e 20 74 68 65 20 75 70 64 61  e, then the upda
7090: 74 65 20 6d 61 79 20 6e 6f 74 20 6f 63 63 75 72  te may not occur
70a0: 2e 20 0a 20 20 54 68 65 20 77 6f 72 6b 61 72 6f  . .  The workaro
70b0: 75 6e 64 20 69 73 20 74 6f 20 64 65 63 6c 61 72  und is to declar
70c0: 65 20 74 68 65 20 74 61 62 6c 65 20 77 69 74 68  e the table with
70d0: 20 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63   a PRIMARY KEY c
70e0: 6f 6c 75 6d 6e 20 69 6e 73 74 65 61 64 0a 20 20  olumn instead.  
70f0: 6f 66 20 61 6e 20 49 4e 54 45 47 45 52 20 50 52  of an INTEGER PR
7100: 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e  IMARY KEY column
7110: 2e 3c 2f 70 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a  .</p>.}..puts {.
7120: 3c 70 3e 41 20 73 70 65 63 69 61 6c 20 53 51 4c  <p>A special SQL
7130: 20 66 75 6e 63 74 69 6f 6e 20 52 41 49 53 45 28   function RAISE(
7140: 29 20 6d 61 79 20 62 65 20 75 73 65 64 20 77 69  ) may be used wi
7150: 74 68 69 6e 20 61 20 74 72 69 67 67 65 72 2d 70  thin a trigger-p
7160: 72 6f 67 72 61 6d 2c 20 77 69 74 68 20 74 68 65  rogram, with the
7170: 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74 61   following synta
7180: 78 3c 2f 70 3e 20 0a 7d 0a 53 79 6e 74 61 78 20  x</p> .}.Syntax 
7190: 7b 72 61 69 73 65 2d 66 75 6e 63 74 69 6f 6e 7d  {raise-function}
71a0: 20 7b 0a 52 41 49 53 45 20 28 20 41 42 4f 52 54   {.RAISE ( ABORT
71b0: 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73 61 67 65  , <error-message
71c0: 3e 20 29 20 7c 20 0a 52 41 49 53 45 20 28 20 46  > ) | .RAISE ( F
71d0: 41 49 4c 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73  AIL, <error-mess
71e0: 61 67 65 3e 20 29 20 7c 20 0a 52 41 49 53 45 20  age> ) | .RAISE 
71f0: 28 20 52 4f 4c 4c 42 41 43 4b 2c 20 3c 65 72 72  ( ROLLBACK, <err
7200: 6f 72 2d 6d 65 73 73 61 67 65 3e 20 29 20 7c 20  or-message> ) | 
7210: 0a 52 41 49 53 45 20 28 20 49 47 4e 4f 52 45 20  .RAISE ( IGNORE 
7220: 29 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e 57 68  ).}.puts {.<p>Wh
7230: 65 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 69  en one of the fi
7240: 72 73 74 20 74 68 72 65 65 20 66 6f 72 6d 73 20  rst three forms 
7250: 69 73 20 63 61 6c 6c 65 64 20 64 75 72 69 6e 67  is called during
7260: 20 74 72 69 67 67 65 72 2d 70 72 6f 67 72 61 6d   trigger-program
7270: 20 65 78 65 63 75 74 69 6f 6e 2c 20 74 68 65 20   execution, the 
7280: 73 70 65 63 69 66 69 65 64 20 4f 4e 20 43 4f 4e  specified ON CON
7290: 46 4c 49 43 54 20 70 72 6f 63 65 73 73 69 6e 67  FLICT processing
72a0: 20 69 73 20 70 65 72 66 6f 72 6d 65 64 20 28 65   is performed (e
72b0: 69 74 68 65 72 20 41 42 4f 52 54 2c 20 46 41 49  ither ABORT, FAI
72c0: 4c 20 6f 72 20 0a 20 52 4f 4c 4c 42 41 43 4b 29  L or . ROLLBACK)
72d0: 20 61 6e 64 20 74 68 65 20 63 75 72 72 65 6e 74   and the current
72e0: 20 71 75 65 72 79 20 74 65 72 6d 69 6e 61 74 65   query terminate
72f0: 73 2e 20 41 6e 20 65 72 72 6f 72 20 63 6f 64 65  s. An error code
7300: 20 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54   of SQLITE_CONST
7310: 52 41 49 4e 54 20 69 73 20 72 65 74 75 72 6e 65  RAINT is returne
7320: 64 20 74 6f 20 74 68 65 20 75 73 65 72 2c 20 61  d to the user, a
7330: 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 73 70  long with the sp
7340: 65 63 69 66 69 65 64 20 65 72 72 6f 72 20 6d 65  ecified error me
7350: 73 73 61 67 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57  ssage.</p>..<p>W
7360: 68 65 6e 20 52 41 49 53 45 28 49 47 4e 4f 52 45  hen RAISE(IGNORE
7370: 29 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65  ) is called, the
7380: 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20 74 68   remainder of th
7390: 65 20 63 75 72 72 65 6e 74 20 74 72 69 67 67 65  e current trigge
73a0: 72 20 70 72 6f 67 72 61 6d 2c 0a 74 68 65 20 73  r program,.the s
73b0: 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63 61  tatement that ca
73c0: 75 73 65 64 20 74 68 65 20 74 72 69 67 67 65 72  used the trigger
73d0: 20 70 72 6f 67 72 61 6d 20 74 6f 20 65 78 65 63   program to exec
73e0: 75 74 65 20 61 6e 64 20 61 6e 79 20 73 75 62 73  ute and any subs
73f0: 65 71 75 65 6e 74 0a 20 20 20 20 74 72 69 67 67  equent.    trigg
7400: 65 72 20 70 72 6f 67 72 61 6d 73 20 74 68 61 74  er programs that
7410: 20 77 6f 75 6c 64 20 6f 66 20 62 65 65 6e 20 65   would of been e
7420: 78 65 63 75 74 65 64 20 61 72 65 20 61 62 61 6e  xecuted are aban
7430: 64 6f 6e 65 64 2e 20 4e 6f 20 64 61 74 61 62 61  doned. No databa
7440: 73 65 0a 20 20 20 20 63 68 61 6e 67 65 73 20 61  se.    changes a
7450: 72 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20  re rolled back. 
7460: 20 49 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e   If the statemen
7470: 74 20 74 68 61 74 20 63 61 75 73 65 64 20 74 68  t that caused th
7480: 65 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  e trigger progra
7490: 6d 0a 20 20 20 20 74 6f 20 65 78 65 63 75 74 65  m.    to execute
74a0: 20 69 73 20 69 74 73 65 6c 66 20 70 61 72 74 20   is itself part 
74b0: 6f 66 20 61 20 74 72 69 67 67 65 72 20 70 72 6f  of a trigger pro
74c0: 67 72 61 6d 2c 20 74 68 65 6e 20 74 68 61 74 20  gram, then that 
74d0: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 0a  trigger program.
74e0: 20 20 20 20 72 65 73 75 6d 65 73 20 65 78 65 63      resumes exec
74f0: 75 74 69 6f 6e 20 61 74 20 74 68 65 20 62 65 67  ution at the beg
7500: 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 6e 65  inning of the ne
7510: 78 74 20 73 74 65 70 2e 0a 3c 2f 70 3e 0a 0a 3c  xt step..</p>..<
7520: 70 3e 54 72 69 67 67 65 72 73 20 61 72 65 20 72  p>Triggers are r
7530: 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65  emoved using the
7540: 20 3c 61 20 68 72 65 66 3d 22 23 64 72 6f 70 74   <a href="#dropt
7550: 72 69 67 67 65 72 22 3e 44 52 4f 50 20 54 52 49  rigger">DROP TRI
7560: 47 47 45 52 3c 2f 61 3e 0a 73 74 61 74 65 6d 65  GGER</a>.stateme
7570: 6e 74 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74  nt.</p>.}...Sect
7580: 69 6f 6e 20 7b 43 52 45 41 54 45 20 56 49 45 57  ion {CREATE VIEW
7590: 7d 20 7b 63 72 65 61 74 65 76 69 65 77 7d 0a 0a  } {createview}..
75a0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d  Syntax {sql-comm
75b0: 61 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54  and} {.CREATE [T
75c0: 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d  EMP | TEMPORARY]
75d0: 20 56 49 45 57 20 5b 3c 64 61 74 61 62 61 73 65   VIEW [<database
75e0: 2d 6e 61 6d 65 3e 2e 5d 20 3c 76 69 65 77 2d 6e  -name>.] <view-n
75f0: 61 6d 65 3e 20 41 53 20 3c 73 65 6c 65 63 74 2d  ame> AS <select-
7600: 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75  statement>.}..pu
7610: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41  ts {.<p>The CREA
7620: 54 45 20 56 49 45 57 20 63 6f 6d 6d 61 6e 64 20  TE VIEW command 
7630: 61 73 73 69 67 6e 73 20 61 20 6e 61 6d 65 20 74  assigns a name t
7640: 6f 20 61 20 70 72 65 2d 70 61 63 6b 61 67 65 64  o a pre-packaged
7650: 20 0a 3c 61 20 68 72 65 66 3d 22 23 73 65 6c 65   .<a href="#sele
7660: 63 74 22 3e 53 45 4c 45 43 54 3c 2f 61 3e 0a 73  ct">SELECT</a>.s
7670: 74 61 74 65 6d 65 6e 74 2e 20 20 4f 6e 63 65 20  tatement.  Once 
7680: 74 68 65 20 76 69 65 77 20 69 73 20 63 72 65 61  the view is crea
7690: 74 65 64 2c 20 69 74 20 63 61 6e 20 62 65 20 75  ted, it can be u
76a0: 73 65 64 20 69 6e 20 74 68 65 20 46 52 4f 4d 20  sed in the FROM 
76b0: 63 6c 61 75 73 65 0a 6f 66 20 61 6e 6f 74 68 65  clause.of anothe
76c0: 72 20 53 45 4c 45 43 54 20 69 6e 20 70 6c 61 63  r SELECT in plac
76d0: 65 20 6f 66 20 61 20 74 61 62 6c 65 20 6e 61 6d  e of a table nam
76e0: 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74  e..</p>..<p>If t
76f0: 68 65 20 22 54 45 4d 50 22 20 6f 72 20 22 54 45  he "TEMP" or "TE
7700: 4d 50 4f 52 41 52 59 22 20 6b 65 79 77 6f 72 64  MPORARY" keyword
7710: 20 6f 63 63 75 72 73 20 69 6e 20 62 65 74 77 65   occurs in betwe
7720: 65 6e 20 22 43 52 45 41 54 45 22 0a 61 6e 64 20  en "CREATE".and 
7730: 22 56 49 45 57 22 20 74 68 65 6e 20 74 68 65 20  "VIEW" then the 
7740: 76 69 65 77 20 74 68 61 74 20 69 73 20 63 72 65  view that is cre
7750: 61 74 65 64 20 69 73 20 6f 6e 6c 79 20 76 69 73  ated is only vis
7760: 69 62 6c 65 20 74 6f 20 74 68 65 0a 70 72 6f 63  ible to the.proc
7770: 65 73 73 20 74 68 61 74 20 6f 70 65 6e 65 64 20  ess that opened 
7780: 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e 64  the database and
7790: 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   is automaticall
77a0: 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e 0a 74  y deleted when.t
77b0: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 63  he database is c
77c0: 6c 6f 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20  losed.</p>..<p> 
77d0: 49 66 20 61 20 26 6c 74 3b 64 61 74 61 62 61 73  If a &lt;databas
77e0: 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 73 70  e-name&gt; is sp
77f0: 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68  ecified, then th
7800: 65 20 76 69 65 77 20 69 73 20 63 72 65 61 74 65  e view is create
7810: 64 20 69 6e 20 0a 74 68 65 20 6e 61 6d 65 64 20  d in .the named 
7820: 64 61 74 61 62 61 73 65 2e 20 49 74 20 69 73 20  database. It is 
7830: 61 6e 20 65 72 72 6f 72 20 74 6f 20 73 70 65 63  an error to spec
7840: 69 66 79 20 62 6f 74 68 20 61 20 26 6c 74 3b 64  ify both a &lt;d
7850: 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b  atabase-name&gt;
7860: 0a 61 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65  .and the TEMP ke
7870: 79 77 6f 72 64 2c 20 75 6e 6c 65 73 73 20 74 68  yword, unless th
7880: 65 20 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e  e &lt;database-n
7890: 61 6d 65 26 67 74 3b 20 69 73 20 22 74 65 6d 70  ame&gt; is "temp
78a0: 22 2e 20 49 66 20 6e 6f 0a 64 61 74 61 62 61 73  ". If no.databas
78b0: 65 20 6e 61 6d 65 20 69 73 20 73 70 65 63 69 66  e name is specif
78c0: 69 65 64 2c 20 61 6e 64 20 74 68 65 20 54 45 4d  ied, and the TEM
78d0: 50 20 6b 65 79 77 6f 72 64 20 69 73 20 6e 6f 74  P keyword is not
78e0: 20 70 72 65 73 65 6e 74 2c 0a 74 68 65 20 74 61   present,.the ta
78f0: 62 6c 65 20 69 73 20 63 72 65 61 74 65 64 20 69  ble is created i
7900: 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  n the main datab
7910: 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75  ase.</p>..<p>You
7920: 20 63 61 6e 6e 6f 74 20 43 4f 50 59 2c 20 44 45   cannot COPY, DE
7930: 4c 45 54 45 2c 20 49 4e 53 45 52 54 20 6f 72 20  LETE, INSERT or 
7940: 55 50 44 41 54 45 20 61 20 76 69 65 77 2e 20 20  UPDATE a view.  
7950: 56 69 65 77 73 20 61 72 65 20 72 65 61 64 2d 6f  Views are read-o
7960: 6e 6c 79 20 0a 69 6e 20 53 51 4c 69 74 65 2e 20  nly .in SQLite. 
7970: 20 48 6f 77 65 76 65 72 2c 20 69 6e 20 6d 61 6e   However, in man
7980: 79 20 63 61 73 65 73 20 79 6f 75 20 63 61 6e 20  y cases you can 
7990: 75 73 65 20 61 20 3c 61 20 68 72 65 66 3d 22 23  use a <a href="#
79a0: 63 72 65 61 74 65 74 72 69 67 67 65 72 22 3e 0a  createtrigger">.
79b0: 54 52 49 47 47 45 52 3c 2f 61 3e 20 6f 6e 20 74  TRIGGER</a> on t
79c0: 68 65 20 76 69 65 77 20 74 6f 20 61 63 63 6f 6d  he view to accom
79d0: 70 6c 69 73 68 20 74 68 65 20 73 61 6d 65 20 74  plish the same t
79e0: 68 69 6e 67 2e 20 20 56 69 65 77 73 20 61 72 65  hing.  Views are
79f0: 20 72 65 6d 6f 76 65 64 20 0a 77 69 74 68 20 74   removed .with t
7a00: 68 65 20 3c 61 20 68 72 65 66 3d 22 23 64 72 6f  he <a href="#dro
7a10: 70 76 69 65 77 22 3e 44 52 4f 50 20 56 49 45 57  pview">DROP VIEW
7a20: 3c 2f 61 3e 20 0a 63 6f 6d 6d 61 6e 64 2e 3c 2f  </a> .command.</
7a30: 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 44  p>.}...Section D
7a40: 45 4c 45 54 45 20 64 65 6c 65 74 65 0a 0a 53 79  ELETE delete..Sy
7a50: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
7a60: 65 6e 74 7d 20 7b 0a 44 45 4c 45 54 45 20 46 52  ent} {.DELETE FR
7a70: 4f 4d 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  OM [<database-na
7a80: 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61  me> .] <table-na
7a90: 6d 65 3e 20 5b 57 48 45 52 45 20 3c 65 78 70 72  me> [WHERE <expr
7aa0: 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  >].}..puts {.<p>
7ab0: 54 68 65 20 44 45 4c 45 54 45 20 63 6f 6d 6d 61  The DELETE comma
7ac0: 6e 64 20 69 73 20 75 73 65 64 20 74 6f 20 72 65  nd is used to re
7ad0: 6d 6f 76 65 20 72 65 63 6f 72 64 73 20 66 72 6f  move records fro
7ae0: 6d 20 61 20 74 61 62 6c 65 2e 0a 54 68 65 20 63  m a table..The c
7af0: 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74 73 20  ommand consists 
7b00: 6f 66 20 74 68 65 20 22 44 45 4c 45 54 45 20 46  of the "DELETE F
7b10: 52 4f 4d 22 20 6b 65 79 77 6f 72 64 73 20 66 6f  ROM" keywords fo
7b20: 6c 6c 6f 77 65 64 20 62 79 0a 74 68 65 20 6e 61  llowed by.the na
7b30: 6d 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  me of the table 
7b40: 66 72 6f 6d 20 77 68 69 63 68 20 72 65 63 6f 72  from which recor
7b50: 64 73 20 61 72 65 20 74 6f 20 62 65 20 72 65 6d  ds are to be rem
7b60: 6f 76 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 57  oved..</p>..<p>W
7b70: 69 74 68 6f 75 74 20 61 20 57 48 45 52 45 20 63  ithout a WHERE c
7b80: 6c 61 75 73 65 2c 20 61 6c 6c 20 72 6f 77 73 20  lause, all rows 
7b90: 6f 66 20 74 68 65 20 74 61 62 6c 65 20 61 72 65  of the table are
7ba0: 20 72 65 6d 6f 76 65 64 2e 0a 49 66 20 61 20 57   removed..If a W
7bb0: 48 45 52 45 20 63 6c 61 75 73 65 20 69 73 20 73  HERE clause is s
7bc0: 75 70 70 6c 69 65 64 2c 20 74 68 65 6e 20 6f 6e  upplied, then on
7bd0: 6c 79 20 74 68 6f 73 65 20 72 6f 77 73 20 74 68  ly those rows th
7be0: 61 74 20 6d 61 74 63 68 0a 74 68 65 20 65 78 70  at match.the exp
7bf0: 72 65 73 73 69 6f 6e 20 61 72 65 20 72 65 6d 6f  ression are remo
7c00: 76 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63  ved.</p>.}...Sec
7c10: 74 69 6f 6e 20 7b 44 45 54 41 43 48 20 44 41 54  tion {DETACH DAT
7c20: 41 42 41 53 45 7d 20 64 65 74 61 63 68 0a 0a 53  ABASE} detach..S
7c30: 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61  yntax {sql-comma
7c40: 6e 64 7d 20 7b 0a 44 45 54 41 43 48 20 5b 44 41  nd} {.DETACH [DA
7c50: 54 41 42 41 53 45 5d 20 3c 64 61 74 61 62 61 73  TABASE] <databas
7c60: 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20  e-name>.}..puts 
7c70: 7b 0a 3c 70 3e 54 68 69 73 20 73 74 61 74 65 6d  {.<p>This statem
7c80: 65 6e 74 20 64 65 74 61 63 68 65 73 20 61 6e 20  ent detaches an 
7c90: 61 64 64 69 74 69 6f 6e 61 6c 20 64 61 74 61 62  additional datab
7ca0: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70  ase connection p
7cb0: 72 65 76 69 6f 75 73 6c 79 20 0a 61 74 74 61 63  reviously .attac
7cc0: 68 65 64 20 75 73 69 6e 67 20 74 68 65 20 3c 61  hed using the <a
7cd0: 20 68 72 65 66 3d 22 23 61 74 74 61 63 68 22 3e   href="#attach">
7ce0: 41 54 54 41 43 48 20 44 41 54 41 42 41 53 45 3c  ATTACH DATABASE<
7cf0: 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  /a> statement.  
7d00: 49 74 0a 69 73 20 70 6f 73 73 69 62 6c 65 20 74  It.is possible t
7d10: 6f 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20  o have the same 
7d20: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 61 74  database file at
7d30: 74 61 63 68 65 64 20 6d 75 6c 74 69 70 6c 65 20  tached multiple 
7d40: 74 69 6d 65 73 20 75 73 69 6e 67 20 0a 64 69 66  times using .dif
7d50: 66 65 72 65 6e 74 20 6e 61 6d 65 73 2c 20 61 6e  ferent names, an
7d60: 64 20 64 65 74 61 63 68 69 6e 67 20 6f 6e 65 20  d detaching one 
7d70: 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 61 20  connection to a 
7d80: 66 69 6c 65 20 77 69 6c 6c 20 6c 65 61 76 65 20  file will leave 
7d90: 74 68 65 20 0a 6f 74 68 65 72 73 20 69 6e 74 61  the .others inta
7da0: 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69 73  ct.</p>..<p>This
7db0: 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20   statement will 
7dc0: 66 61 69 6c 20 69 66 20 53 51 4c 69 74 65 20 69  fail if SQLite i
7dd0: 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20  s in the middle 
7de0: 6f 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  of a transaction
7df0: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
7e00: 6e 20 7b 44 52 4f 50 20 49 4e 44 45 58 7d 20 64  n {DROP INDEX} d
7e10: 72 6f 70 69 6e 64 65 78 0a 0a 53 79 6e 74 61 78  ropindex..Syntax
7e20: 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b   {sql-command} {
7e30: 0a 44 52 4f 50 20 49 4e 44 45 58 20 5b 49 46 20  .DROP INDEX [IF 
7e40: 45 58 49 53 54 53 5d 20 5b 3c 64 61 74 61 62 61  EXISTS] [<databa
7e50: 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 69 6e 64  se-name> .] <ind
7e60: 65 78 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73  ex-name>.}..puts
7e70: 20 7b 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 49   {.<p>The DROP I
7e80: 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74 20 72  NDEX statement r
7e90: 65 6d 6f 76 65 73 20 61 6e 20 69 6e 64 65 78 20  emoves an index 
7ea0: 61 64 64 65 64 0a 77 69 74 68 20 74 68 65 20 3c  added.with the <
7eb0: 61 20 68 72 65 66 3d 22 23 63 72 65 61 74 65 69  a href="#createi
7ec0: 6e 64 65 78 22 3e 0a 43 52 45 41 54 45 20 49 4e  ndex">.CREATE IN
7ed0: 44 45 58 3c 2f 61 3e 20 73 74 61 74 65 6d 65 6e  DEX</a> statemen
7ee0: 74 2e 20 20 54 68 65 20 69 6e 64 65 78 20 6e 61  t.  The index na
7ef0: 6d 65 64 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c  med is completel
7f00: 79 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 0a 74  y removed from.t
7f10: 68 65 20 64 69 73 6b 2e 20 20 54 68 65 20 6f 6e  he disk.  The on
7f20: 6c 79 20 77 61 79 20 74 6f 20 72 65 63 6f 76 65  ly way to recove
7f30: 72 20 74 68 65 20 69 6e 64 65 78 20 69 73 20 74  r the index is t
7f40: 6f 20 72 65 65 6e 74 65 72 20 74 68 65 0a 61 70  o reenter the.ap
7f50: 70 72 6f 70 72 69 61 74 65 20 43 52 45 41 54 45  propriate CREATE
7f60: 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 2e 3c   INDEX command.<
7f70: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44 52 4f 50  /p>..<p>The DROP
7f80: 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74   INDEX statement
7f90: 20 64 6f 65 73 20 6e 6f 74 20 72 65 64 75 63 65   does not reduce
7fa0: 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65   the size of the
7fb0: 20 64 61 74 61 62 61 73 65 20 0a 66 69 6c 65 20   database .file 
7fc0: 69 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d  in the default m
7fd0: 6f 64 65 2e 0a 45 6d 70 74 79 20 73 70 61 63 65  ode..Empty space
7fe0: 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65   in the database
7ff0: 20 69 73 20 72 65 74 61 69 6e 65 64 20 66 6f 72   is retained for
8000: 20 6c 61 74 65 72 20 49 4e 53 45 52 54 73 2e 20   later INSERTs. 
8010: 20 54 6f 20 0a 72 65 6d 6f 76 65 20 66 72 65 65   To .remove free
8020: 20 73 70 61 63 65 20 69 6e 20 74 68 65 20 64 61   space in the da
8030: 74 61 62 61 73 65 2c 20 75 73 65 20 74 68 65 20  tabase, use the 
8040: 3c 61 20 68 72 65 66 3d 22 23 76 61 63 75 75 6d  <a href="#vacuum
8050: 22 3e 56 41 43 55 55 4d 3c 2f 61 3e 20 0a 63 6f  ">VACUUM</a> .co
8060: 6d 6d 61 6e 64 2e 20 20 49 66 20 41 55 54 4f 56  mmand.  If AUTOV
8070: 41 43 55 55 4d 20 6d 6f 64 65 20 69 73 20 65 6e  ACUUM mode is en
8080: 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61 74 61  abled for a data
8090: 62 61 73 65 20 74 68 65 6e 20 73 70 61 63 65 0a  base then space.
80a0: 77 69 6c 6c 20 62 65 20 66 72 65 65 64 20 61 75  will be freed au
80b0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 44  tomatically by D
80c0: 52 4f 50 20 49 4e 44 45 58 2e 3c 2f 70 3e 0a 7d  ROP INDEX.</p>.}
80d0: 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50  ...Section {DROP
80e0: 20 54 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c   TABLE} droptabl
80f0: 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63  e..Syntax {sql-c
8100: 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50 20 54  ommand} {.DROP T
8110: 41 42 4c 45 20 5b 49 46 20 45 58 49 53 54 53 5d  ABLE [IF EXISTS]
8120: 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65   [<database-name
8130: 3e 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e  >.] <table-name>
8140: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
8150: 65 20 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61  e DROP TABLE sta
8160: 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61  tement removes a
8170: 20 74 61 62 6c 65 20 61 64 64 65 64 20 77 69 74   table added wit
8180: 68 20 74 68 65 20 3c 61 20 68 72 65 66 3d 0a 22  h the <a href=."
8190: 23 63 72 65 61 74 65 74 61 62 6c 65 22 3e 43 52  #createtable">CR
81a0: 45 41 54 45 20 54 41 42 4c 45 3c 2f 61 3e 20 73  EATE TABLE</a> s
81b0: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e  tatement.  The n
81c0: 61 6d 65 20 73 70 65 63 69 66 69 65 64 20 69 73  ame specified is
81d0: 20 74 68 65 0a 74 61 62 6c 65 20 6e 61 6d 65 2e   the.table name.
81e0: 20 20 49 74 20 69 73 20 63 6f 6d 70 6c 65 74 65    It is complete
81f0: 6c 79 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20  ly removed from 
8200: 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
8210: 65 6d 61 20 61 6e 64 20 74 68 65 20 0a 64 69 73  ema and the .dis
8220: 6b 20 66 69 6c 65 2e 20 20 54 68 65 20 74 61 62  k file.  The tab
8230: 6c 65 20 63 61 6e 20 6e 6f 74 20 62 65 20 72 65  le can not be re
8240: 63 6f 76 65 72 65 64 2e 20 20 41 6c 6c 20 69 6e  covered.  All in
8250: 64 69 63 65 73 20 61 73 73 6f 63 69 61 74 65 64  dices associated
8260: 20 0a 77 69 74 68 20 74 68 65 20 74 61 62 6c 65   .with the table
8270: 20 61 72 65 20 61 6c 73 6f 20 64 65 6c 65 74 65   are also delete
8280: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44  d.</p>..<p>The D
8290: 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ROP TABLE statem
82a0: 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 64  ent does not red
82b0: 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20  uce the size of 
82c0: 74 68 65 20 64 61 74 61 62 61 73 65 20 0a 66 69  the database .fi
82d0: 6c 65 20 69 6e 20 74 68 65 20 64 65 66 61 75 6c  le in the defaul
82e0: 74 20 6d 6f 64 65 2e 20 20 45 6d 70 74 79 20 73  t mode.  Empty s
82f0: 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61  pace in the data
8300: 62 61 73 65 20 69 73 20 72 65 74 61 69 6e 65 64  base is retained
8310: 20 66 6f 72 0a 6c 61 74 65 72 20 49 4e 53 45 52   for.later INSER
8320: 54 73 2e 20 20 54 6f 20 0a 72 65 6d 6f 76 65 20  Ts.  To .remove 
8330: 66 72 65 65 20 73 70 61 63 65 20 69 6e 20 74 68  free space in th
8340: 65 20 64 61 74 61 62 61 73 65 2c 20 75 73 65 20  e database, use 
8350: 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 76 61  the <a href="#va
8360: 63 75 75 6d 22 3e 56 41 43 55 55 4d 3c 2f 61 3e  cuum">VACUUM</a>
8370: 20 0a 63 6f 6d 6d 61 6e 64 2e 20 20 49 66 20 41   .command.  If A
8380: 55 54 4f 56 41 43 55 55 4d 20 6d 6f 64 65 20 69  UTOVACUUM mode i
8390: 73 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 61 20  s enabled for a 
83a0: 64 61 74 61 62 61 73 65 20 74 68 65 6e 20 73 70  database then sp
83b0: 61 63 65 0a 77 69 6c 6c 20 62 65 20 66 72 65 65  ace.will be free
83c0: 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  d automatically 
83d0: 62 79 20 44 52 4f 50 20 54 41 42 4c 45 2e 3c 2f  by DROP TABLE.</
83e0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f  p>..<p>The optio
83f0: 6e 61 6c 20 49 46 20 45 58 49 53 54 53 20 63 6c  nal IF EXISTS cl
8400: 61 75 73 65 20 73 75 70 70 72 65 73 73 65 73 20  ause suppresses 
8410: 74 68 65 20 65 72 72 6f 72 20 74 68 61 74 20 77  the error that w
8420: 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79 0a 72 65  ould normally.re
8430: 73 75 6c 74 20 69 66 20 74 68 65 20 74 61 62 6c  sult if the tabl
8440: 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74  e does not exist
8450: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
8460: 6e 20 7b 44 52 4f 50 20 54 52 49 47 47 45 52 7d  n {DROP TRIGGER}
8470: 20 64 72 6f 70 74 72 69 67 67 65 72 0a 53 79 6e   droptrigger.Syn
8480: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
8490: 6e 74 7d 20 7b 0a 44 52 4f 50 20 54 52 49 47 47  nt} {.DROP TRIGG
84a0: 45 52 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  ER [<database-na
84b0: 6d 65 3e 20 2e 5d 20 3c 74 72 69 67 67 65 72 2d  me> .] <trigger-
84c0: 6e 61 6d 65 3e 0a 7d 0a 70 75 74 73 20 7b 20 0a  name>.}.puts { .
84d0: 3c 70 3e 54 68 65 20 44 52 4f 50 20 54 52 49 47  <p>The DROP TRIG
84e0: 47 45 52 20 73 74 61 74 65 6d 65 6e 74 20 72 65  GER statement re
84f0: 6d 6f 76 65 73 20 61 20 74 72 69 67 67 65 72 20  moves a trigger 
8500: 63 72 65 61 74 65 64 20 62 79 20 74 68 65 20 0a  created by the .
8510: 3c 61 20 68 72 65 66 3d 22 23 63 72 65 61 74 65  <a href="#create
8520: 74 72 69 67 67 65 72 22 3e 43 52 45 41 54 45 20  trigger">CREATE 
8530: 54 52 49 47 47 45 52 3c 2f 61 3e 20 73 74 61 74  TRIGGER</a> stat
8540: 65 6d 65 6e 74 2e 20 20 54 68 65 20 74 72 69 67  ement.  The trig
8550: 67 65 72 20 69 73 20 0a 64 65 6c 65 74 65 64 20  ger is .deleted 
8560: 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73  from the databas
8570: 65 20 73 63 68 65 6d 61 2e 20 4e 6f 74 65 20 74  e schema. Note t
8580: 68 61 74 20 74 72 69 67 67 65 72 73 20 61 72 65  hat triggers are
8590: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 0a   automatically .
85a0: 64 72 6f 70 70 65 64 20 77 68 65 6e 20 74 68 65  dropped when the
85b0: 20 61 73 73 6f 63 69 61 74 65 64 20 74 61 62 6c   associated tabl
85c0: 65 20 69 73 20 64 72 6f 70 70 65 64 2e 3c 2f 70  e is dropped.</p
85d0: 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 44  >.}...Section {D
85e0: 52 4f 50 20 56 49 45 57 7d 20 64 72 6f 70 76 69  ROP VIEW} dropvi
85f0: 65 77 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ew..Syntax {sql-
8600: 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50 20  command} {.DROP 
8610: 56 49 45 57 20 3c 76 69 65 77 2d 6e 61 6d 65 3e  VIEW <view-name>
8620: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
8630: 65 20 44 52 4f 50 20 56 49 45 57 20 73 74 61 74  e DROP VIEW stat
8640: 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20  ement removes a 
8650: 76 69 65 77 20 63 72 65 61 74 65 64 20 62 79 20  view created by 
8660: 74 68 65 20 3c 61 20 68 72 65 66 3d 0a 22 23 63  the <a href=."#c
8670: 72 65 61 74 65 76 69 65 77 22 3e 43 52 45 41 54  reateview">CREAT
8680: 45 20 56 49 45 57 3c 2f 61 3e 20 73 74 61 74 65  E VIEW</a> state
8690: 6d 65 6e 74 2e 20 20 54 68 65 20 6e 61 6d 65 20  ment.  The name 
86a0: 73 70 65 63 69 66 69 65 64 20 69 73 20 74 68 65  specified is the
86b0: 20 0a 76 69 65 77 20 6e 61 6d 65 2e 20 20 49 74   .view name.  It
86c0: 20 69 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d   is removed from
86d0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63   the database sc
86e0: 68 65 6d 61 2c 20 62 75 74 20 6e 6f 20 61 63 74  hema, but no act
86f0: 75 61 6c 20 64 61 74 61 20 0a 69 6e 20 74 68 65  ual data .in the
8700: 20 75 6e 64 65 72 6c 79 69 6e 67 20 62 61 73 65   underlying base
8710: 20 74 61 62 6c 65 73 20 69 73 20 6d 6f 64 69 66   tables is modif
8720: 69 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63  ied.</p>.}...Sec
8730: 74 69 6f 6e 20 45 58 50 4c 41 49 4e 20 65 78 70  tion EXPLAIN exp
8740: 6c 61 69 6e 0a 0a 53 79 6e 74 61 78 20 7b 73 71  lain..Syntax {sq
8750: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 45  l-statement} {.E
8760: 58 50 4c 41 49 4e 20 3c 73 71 6c 2d 73 74 61 74  XPLAIN <sql-stat
8770: 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b  ement>.}..puts {
8780: 0a 3c 70 3e 54 68 65 20 45 58 50 4c 41 49 4e 20  .<p>The EXPLAIN 
8790: 63 6f 6d 6d 61 6e 64 20 6d 6f 64 69 66 69 65 72  command modifier
87a0: 20 69 73 20 61 20 6e 6f 6e 2d 73 74 61 6e 64 61   is a non-standa
87b0: 72 64 20 65 78 74 65 6e 73 69 6f 6e 2e 20 20 54  rd extension.  T
87c0: 68 65 0a 69 64 65 61 20 63 6f 6d 65 73 20 66 72  he.idea comes fr
87d0: 6f 6d 20 61 20 73 69 6d 69 6c 61 72 20 63 6f 6d  om a similar com
87e0: 6d 61 6e 64 20 66 6f 75 6e 64 20 69 6e 20 50 6f  mand found in Po
87f0: 73 74 67 72 65 53 51 4c 2c 20 62 75 74 20 74 68  stgreSQL, but th
8800: 65 20 6f 70 65 72 61 74 69 6f 6e 0a 69 73 20 63  e operation.is c
8810: 6f 6d 70 6c 65 74 65 6c 79 20 64 69 66 66 65 72  ompletely differ
8820: 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  ent.</p>..<p>If 
8830: 74 68 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77  the EXPLAIN keyw
8840: 6f 72 64 20 61 70 70 65 61 72 73 20 62 65 66 6f  ord appears befo
8850: 72 65 20 61 6e 79 20 6f 74 68 65 72 20 53 51 4c  re any other SQL
8860: 69 74 65 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a  ite SQL command.
8870: 74 68 65 6e 20 69 6e 73 74 65 61 64 20 6f 66 20  then instead of 
8880: 61 63 74 75 61 6c 6c 79 20 65 78 65 63 75 74 69  actually executi
8890: 6e 67 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2c 20  ng the command, 
88a0: 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
88b0: 72 79 20 77 69 6c 6c 0a 72 65 70 6f 72 74 20 62  ry will.report b
88c0: 61 63 6b 20 74 68 65 20 73 65 71 75 65 6e 63 65  ack the sequence
88d0: 20 6f 66 20 76 69 72 74 75 61 6c 20 6d 61 63 68   of virtual mach
88e0: 69 6e 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 73  ine instructions
88f0: 20 69 74 20 77 6f 75 6c 64 20 68 61 76 65 0a 75   it would have.u
8900: 73 65 64 20 74 6f 20 65 78 65 63 75 74 65 20 74  sed to execute t
8910: 68 65 20 63 6f 6d 6d 61 6e 64 20 68 61 64 20 74  he command had t
8920: 68 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f  he EXPLAIN keywo
8930: 72 64 20 6e 6f 74 20 62 65 65 6e 20 70 72 65 73  rd not been pres
8940: 65 6e 74 2e 0a 46 6f 72 20 61 64 64 69 74 69 6f  ent..For additio
8950: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  nal information 
8960: 61 62 6f 75 74 20 76 69 72 74 75 61 6c 20 6d 61  about virtual ma
8970: 63 68 69 6e 65 20 69 6e 73 74 72 75 63 74 69 6f  chine instructio
8980: 6e 73 20 73 65 65 0a 74 68 65 20 3c 61 20 68 72  ns see.the <a hr
8990: 65 66 3d 22 61 72 63 68 2e 68 74 6d 6c 22 3e 61  ef="arch.html">a
89a0: 72 63 68 69 74 65 63 74 75 72 65 20 64 65 73 63  rchitecture desc
89b0: 72 69 70 74 69 6f 6e 3c 2f 61 3e 20 6f 72 20 74  ription</a> or t
89c0: 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  he documentation
89d0: 0a 6f 6e 20 3c 61 20 68 72 65 66 3d 22 6f 70 63  .on <a href="opc
89e0: 6f 64 65 2e 68 74 6d 6c 22 3e 61 76 61 69 6c 61  ode.html">availa
89f0: 62 6c 65 20 6f 70 63 6f 64 65 73 3c 2f 61 3e 20  ble opcodes</a> 
8a00: 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20  for the virtual 
8a10: 6d 61 63 68 69 6e 65 2e 3c 2f 70 3e 0a 7d 0a 0a  machine.</p>.}..
8a20: 0a 53 65 63 74 69 6f 6e 20 65 78 70 72 65 73 73  .Section express
8a30: 69 6f 6e 20 65 78 70 72 0a 0a 53 79 6e 74 61 78  ion expr..Syntax
8a40: 20 7b 65 78 70 72 7d 20 7b 0a 3c 65 78 70 72 3e   {expr} {.<expr>
8a50: 20 3c 62 69 6e 61 72 79 2d 6f 70 3e 20 3c 65 78   <binary-op> <ex
8a60: 70 72 3e 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f  pr> |.<expr> [NO
8a70: 54 5d 20 3c 6c 69 6b 65 2d 6f 70 3e 20 3c 65 78  T] <like-op> <ex
8a80: 70 72 3e 20 5b 45 53 43 41 50 45 20 3c 65 78 70  pr> [ESCAPE <exp
8a90: 72 3e 5d 20 7c 0a 3c 75 6e 61 72 79 2d 6f 70 3e  r>] |.<unary-op>
8aa0: 20 3c 65 78 70 72 3e 20 7c 0a 28 20 3c 65 78 70   <expr> |.( <exp
8ab0: 72 3e 20 29 20 7c 0a 3c 63 6f 6c 75 6d 6e 2d 6e  r> ) |.<column-n
8ac0: 61 6d 65 3e 20 7c 0a 3c 74 61 62 6c 65 2d 6e 61  ame> |.<table-na
8ad0: 6d 65 3e 20 2e 20 3c 63 6f 6c 75 6d 6e 2d 6e 61  me> . <column-na
8ae0: 6d 65 3e 20 7c 0a 3c 64 61 74 61 62 61 73 65 2d  me> |.<database-
8af0: 6e 61 6d 65 3e 20 2e 20 3c 74 61 62 6c 65 2d 6e  name> . <table-n
8b00: 61 6d 65 3e 20 2e 20 3c 63 6f 6c 75 6d 6e 2d 6e  ame> . <column-n
8b10: 61 6d 65 3e 20 7c 0a 3c 6c 69 74 65 72 61 6c 2d  ame> |.<literal-
8b20: 76 61 6c 75 65 3e 20 7c 0a 3c 70 61 72 61 6d 65  value> |.<parame
8b30: 74 65 72 3e 20 7c 0a 3c 66 75 6e 63 74 69 6f 6e  ter> |.<function
8b40: 2d 6e 61 6d 65 3e 20 28 20 3c 65 78 70 72 2d 6c  -name> ( <expr-l
8b50: 69 73 74 3e 20 7c 20 53 54 41 52 20 29 20 7c 0a  ist> | STAR ) |.
8b60: 3c 65 78 70 72 3e 20 49 53 4e 55 4c 4c 20 7c 0a  <expr> ISNULL |.
8b70: 3c 65 78 70 72 3e 20 4e 4f 54 4e 55 4c 4c 20 7c  <expr> NOTNULL |
8b80: 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 42 45  .<expr> [NOT] BE
8b90: 54 57 45 45 4e 20 3c 65 78 70 72 3e 20 41 4e 44  TWEEN <expr> AND
8ba0: 20 3c 65 78 70 72 3e 20 7c 0a 3c 65 78 70 72 3e   <expr> |.<expr>
8bb0: 20 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c 76 61 6c   [NOT] IN ( <val
8bc0: 75 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 3c 65 78  ue-list> ) |.<ex
8bd0: 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c  pr> [NOT] IN ( <
8be0: 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74  select-statement
8bf0: 3e 20 29 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f  > ) |.<expr> [NO
8c00: 54 5d 20 49 4e 20 5b 3c 64 61 74 61 62 61 73 65  T] IN [<database
8c10: 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65  -name> .] <table
8c20: 2d 6e 61 6d 65 3e 20 7c 0a 5b 45 58 49 53 54 53  -name> |.[EXISTS
8c30: 5d 20 28 20 3c 73 65 6c 65 63 74 2d 73 74 61 74  ] ( <select-stat
8c40: 65 6d 65 6e 74 3e 20 29 20 7c 0a 43 41 53 45 20  ement> ) |.CASE 
8c50: 5b 3c 65 78 70 72 3e 5d 20 4c 50 20 57 48 45 4e  [<expr>] LP WHEN
8c60: 20 3c 65 78 70 72 3e 20 54 48 45 4e 20 3c 65 78   <expr> THEN <ex
8c70: 70 72 3e 20 52 50 50 4c 55 53 20 5b 45 4c 53 45  pr> RPPLUS [ELSE
8c80: 20 3c 65 78 70 72 3e 5d 20 45 4e 44 20 7c 0a 43   <expr>] END |.C
8c90: 41 53 54 20 28 20 3c 65 78 70 72 3e 20 41 53 20  AST ( <expr> AS 
8ca0: 3c 74 79 70 65 3e 20 29 0a 7d 20 7b 6c 69 6b 65  <type> ).} {like
8cb0: 2d 6f 70 7d 20 7b 0a 4c 49 4b 45 20 7c 20 47 4c  -op} {.LIKE | GL
8cc0: 4f 42 20 7c 20 52 45 47 45 58 50 0a 7d 0a 0a 70  OB | REGEXP.}..p
8cd0: 75 74 73 20 7b 0a 3c 70 3e 54 68 69 73 20 73 65  uts {.<p>This se
8ce0: 63 74 69 6f 6e 20 69 73 20 64 69 66 66 65 72 65  ction is differe
8cf0: 6e 74 20 66 72 6f 6d 20 74 68 65 20 6f 74 68 65  nt from the othe
8d00: 72 73 2e 20 20 4d 6f 73 74 20 6f 74 68 65 72 20  rs.  Most other 
8d10: 73 65 63 74 69 6f 6e 73 20 6f 66 0a 74 68 69 73  sections of.this
8d20: 20 64 6f 63 75 6d 65 6e 74 20 74 61 6c 6b 73 20   document talks 
8d30: 61 62 6f 75 74 20 61 20 70 61 72 74 69 63 75 6c  about a particul
8d40: 61 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20  ar SQL command. 
8d50: 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 64 6f   This section do
8d60: 65 73 0a 6e 6f 74 20 74 61 6c 6b 20 61 62 6f 75  es.not talk abou
8d70: 74 20 61 20 73 74 61 6e 64 61 6c 6f 6e 65 20 63  t a standalone c
8d80: 6f 6d 6d 61 6e 64 20 62 75 74 20 61 62 6f 75 74  ommand but about
8d90: 20 22 65 78 70 72 65 73 73 69 6f 6e 73 22 20 77   "expressions" w
8da0: 68 69 63 68 20 61 72 65 20 0a 73 75 62 63 6f 6d  hich are .subcom
8db0: 70 6f 6e 65 6e 74 73 20 6f 66 20 6d 6f 73 74 20  ponents of most 
8dc0: 6f 74 68 65 72 20 63 6f 6d 6d 61 6e 64 73 2e 3c  other commands.<
8dd0: 2f 70 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 75  /p>..<p>SQLite u
8de0: 6e 64 65 72 73 74 61 6e 64 73 20 74 68 65 20 66  nderstands the f
8df0: 6f 6c 6c 6f 77 69 6e 67 20 62 69 6e 61 72 79 20  ollowing binary 
8e00: 6f 70 65 72 61 74 6f 72 73 2c 20 69 6e 20 6f 72  operators, in or
8e10: 64 65 72 20 66 72 6f 6d 0a 68 69 67 68 65 73 74  der from.highest
8e20: 20 74 6f 20 6c 6f 77 65 73 74 20 70 72 65 63 65   to lowest prece
8e30: 64 65 6e 63 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f  dence:</p>..<blo
8e40: 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 3c 66  ckquote><pre>.<f
8e50: 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63  ont color="#2c2c
8e60: 66 30 22 3e 3c 62 69 67 3e 7c 7c 0a 2a 20 20 20  f0"><big>||.*   
8e70: 20 2f 20 20 20 20 25 0a 2b 20 20 20 20 2d 0a 26   /    %.+    -.&
8e80: 6c 74 3b 26 6c 74 3b 20 20 20 26 67 74 3b 26 67  lt;&lt;   &gt;&g
8e90: 74 3b 20 20 20 26 61 6d 70 3b 20 20 20 20 7c 0a  t;   &amp;    |.
8ea0: 26 6c 74 3b 20 20 20 20 26 6c 74 3b 3d 20 20 20  &lt;    &lt;=   
8eb0: 26 67 74 3b 20 20 20 20 26 67 74 3b 3d 0a 3d 20  &gt;    &gt;=.= 
8ec0: 20 20 20 3d 3d 20 20 20 21 3d 20 20 20 26 6c 74     ==   !=   &lt
8ed0: 3b 26 67 74 3b 20 20 20 3c 2f 62 69 67 3e 49 4e  ;&gt;   </big>IN
8ee0: 0a 41 4e 44 20 20 20 0a 4f 52 3c 2f 66 6f 6e 74  .AND   .OR</font
8ef0: 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71  >.</pre></blockq
8f00: 75 6f 74 65 3e 0a 0a 3c 70 3e 53 75 70 70 6f 72  uote>..<p>Suppor
8f10: 74 65 64 20 75 6e 61 72 79 20 6f 70 65 72 61 74  ted unary operat
8f20: 6f 72 73 20 61 72 65 20 74 68 65 73 65 3a 3c 2f  ors are these:</
8f30: 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
8f40: 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f  <pre>.<font colo
8f50: 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67  r="#2c2cf0"><big
8f60: 3e 2d 20 20 20 20 2b 20 20 20 20 21 20 20 20 20  >-    +    !    
8f70: 7e 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e 0a 3c  ~</big></font>.<
8f80: 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  /pre></blockquot
8f90: 65 3e 0a 0a 3c 70 3e 4e 6f 74 65 20 74 68 61 74  e>..<p>Note that
8fa0: 20 74 68 65 72 65 20 61 72 65 20 74 77 6f 20 76   there are two v
8fb0: 61 72 69 61 74 69 6f 6e 73 20 6f 66 20 74 68 65  ariations of the
8fc0: 20 65 71 75 61 6c 73 20 61 6e 64 20 6e 6f 74 20   equals and not 
8fd0: 65 71 75 61 6c 73 0a 6f 70 65 72 61 74 6f 72 73  equals.operators
8fe0: 2e 20 20 45 71 75 61 6c 73 20 63 61 6e 20 62 65  .  Equals can be
8ff0: 20 65 69 74 68 65 72 7d 0a 70 75 74 73 20 22 5b   either}.puts "[
9000: 4f 70 65 72 61 74 6f 72 20 3d 5d 20 6f 72 20 5b  Operator =] or [
9010: 4f 70 65 72 61 74 6f 72 20 3d 3d 5d 2e 0a 54 68  Operator ==]..Th
9020: 65 20 6e 6f 6e 2d 65 71 75 61 6c 73 20 6f 70 65  e non-equals ope
9030: 72 61 74 6f 72 20 63 61 6e 20 62 65 20 65 69 74  rator can be eit
9040: 68 65 72 0a 5b 4f 70 65 72 61 74 6f 72 20 21 3d  her.[Operator !=
9050: 5d 20 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 7b  ] or [Operator {
9060: 26 6c 74 3b 26 67 74 3b 7d 5d 2e 0a 54 68 65 20  &lt;&gt;}]..The 
9070: 5b 4f 70 65 72 61 74 6f 72 20 7c 7c 5d 20 6f 70  [Operator ||] op
9080: 65 72 61 74 6f 72 20 69 73 20 5c 22 63 6f 6e 63  erator is \"conc
9090: 61 74 65 6e 61 74 65 5c 22 20 2d 20 69 74 20 6a  atenate\" - it j
90a0: 6f 69 6e 73 20 74 6f 67 65 74 68 65 72 0a 74 68  oins together.th
90b0: 65 20 74 77 6f 20 73 74 72 69 6e 67 73 20 6f 66  e two strings of
90c0: 20 69 74 73 20 6f 70 65 72 61 6e 64 73 2e 0a 54   its operands..T
90d0: 68 65 20 6f 70 65 72 61 74 6f 72 20 5b 4f 70 65  he operator [Ope
90e0: 72 61 74 6f 72 20 25 5d 20 6f 75 74 70 75 74 73  rator %] outputs
90f0: 20 74 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f   the remainder o
9100: 66 20 69 74 73 20 6c 65 66 74 20 0a 6f 70 65 72  f its left .oper
9110: 61 6e 64 20 6d 6f 64 75 6c 6f 20 69 74 73 20 72  and modulo its r
9120: 69 67 68 74 20 6f 70 65 72 61 6e 64 2e 3c 2f 70  ight operand.</p
9130: 3e 0a 0a 3c 70 3e 54 68 65 20 72 65 73 75 6c 74  >..<p>The result
9140: 20 6f 66 20 61 6e 79 20 62 69 6e 61 72 79 20 6f   of any binary o
9150: 70 65 72 61 74 6f 72 20 69 73 20 61 20 6e 75 6d  perator is a num
9160: 65 72 69 63 20 76 61 6c 75 65 2c 20 65 78 63 65  eric value, exce
9170: 70 74 0a 66 6f 72 20 74 68 65 20 5b 4f 70 65 72  pt.for the [Oper
9180: 61 74 6f 72 20 7c 7c 5d 20 63 6f 6e 63 61 74 65  ator ||] concate
9190: 6e 61 74 69 6f 6e 20 6f 70 65 72 61 74 6f 72 20  nation operator 
91a0: 77 68 69 63 68 20 67 69 76 65 73 20 61 20 73 74  which gives a st
91b0: 72 69 6e 67 0a 72 65 73 75 6c 74 2e 3c 2f 70 3e  ring.result.</p>
91c0: 22 0a 0a 70 75 74 73 20 7b 0a 0a 3c 61 20 6e 61  "..puts {..<a na
91d0: 6d 65 3d 22 6c 69 74 65 72 61 6c 5f 76 61 6c 75  me="literal_valu
91e0: 65 22 3e 3c 2f 61 3e 0a 3c 70 3e 0a 41 20 6c 69  e"></a>.<p>.A li
91f0: 74 65 72 61 6c 20 76 61 6c 75 65 20 69 73 20 61  teral value is a
9200: 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  n integer number
9210: 20 6f 72 20 61 20 66 6c 6f 61 74 69 6e 67 20 70   or a floating p
9220: 6f 69 6e 74 20 6e 75 6d 62 65 72 2e 0a 53 63 69  oint number..Sci
9230: 65 6e 74 69 66 69 63 20 6e 6f 74 61 74 69 6f 6e  entific notation
9240: 20 69 73 20 73 75 70 70 6f 72 74 65 64 2e 20 20   is supported.  
9250: 54 68 65 20 22 2e 22 20 63 68 61 72 61 63 74 65  The "." characte
9260: 72 20 69 73 20 61 6c 77 61 79 73 20 75 73 65 64  r is always used
9270: 0a 61 73 20 74 68 65 20 64 65 63 69 6d 61 6c 20  .as the decimal 
9280: 70 6f 69 6e 74 20 65 76 65 6e 20 69 66 20 74 68  point even if th
9290: 65 20 6c 6f 63 61 6c 65 20 73 65 74 74 69 6e 67  e locale setting
92a0: 20 73 70 65 63 69 66 69 65 73 20 22 2c 22 20 66   specifies "," f
92b0: 6f 72 0a 74 68 69 73 20 72 6f 6c 65 20 2d 20 74  or.this role - t
92c0: 68 65 20 75 73 65 20 6f 66 20 22 2c 22 20 66 6f  he use of "," fo
92d0: 72 20 74 68 65 20 64 65 63 69 6d 61 6c 20 70 6f  r the decimal po
92e0: 69 6e 74 20 77 6f 75 6c 64 20 72 65 73 75 6c 74  int would result
92f0: 20 69 6e 0a 73 79 6e 74 61 63 74 69 63 20 61 6d   in.syntactic am
9300: 62 69 67 75 69 74 79 2e 20 20 41 20 73 74 72 69  biguity.  A stri
9310: 6e 67 20 63 6f 6e 73 74 61 6e 74 20 69 73 20 66  ng constant is f
9320: 6f 72 6d 65 64 20 62 79 20 65 6e 63 6c 6f 73 69  ormed by enclosi
9330: 6e 67 20 74 68 65 0a 73 74 72 69 6e 67 20 69 6e  ng the.string in
9340: 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 20 28   single quotes (
9350: 27 29 2e 20 20 41 20 73 69 6e 67 6c 65 20 71 75  ').  A single qu
9360: 6f 74 65 20 77 69 74 68 69 6e 20 74 68 65 20 73  ote within the s
9370: 74 72 69 6e 67 20 63 61 6e 0a 62 65 20 65 6e 63  tring can.be enc
9380: 6f 64 65 64 20 62 79 20 70 75 74 74 69 6e 67 20  oded by putting 
9390: 74 77 6f 20 73 69 6e 67 6c 65 20 71 75 6f 74 65  two single quote
93a0: 73 20 69 6e 20 61 20 72 6f 77 20 2d 20 61 73 20  s in a row - as 
93b0: 69 6e 20 50 61 73 63 61 6c 2e 0a 43 2d 73 74 79  in Pascal..C-sty
93c0: 6c 65 20 65 73 63 61 70 65 73 20 75 73 69 6e 67  le escapes using
93d0: 20 74 68 65 20 62 61 63 6b 73 6c 61 73 68 20 63   the backslash c
93e0: 68 61 72 61 63 74 65 72 20 61 72 65 20 6e 6f 74  haracter are not
93f0: 20 73 75 70 70 6f 72 74 65 64 20 62 65 63 61 75   supported becau
9400: 73 65 0a 74 68 65 79 20 61 72 65 20 6e 6f 74 20  se.they are not 
9410: 73 74 61 6e 64 61 72 64 20 53 51 4c 2e 0a 42 4c  standard SQL..BL
9420: 4f 42 20 6c 69 74 65 72 61 6c 73 20 61 72 65 20  OB literals are 
9430: 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 73 20  string literals 
9440: 63 6f 6e 74 61 69 6e 69 6e 67 20 68 65 78 61 64  containing hexad
9450: 65 63 69 6d 61 6c 20 64 61 74 61 20 61 6e 64 0a  ecimal data and.
9460: 70 72 65 63 65 64 65 64 20 62 79 20 61 20 73 69  preceded by a si
9470: 6e 67 6c 65 20 22 78 22 20 6f 72 20 22 58 22 20  ngle "x" or "X" 
9480: 63 68 61 72 61 63 74 65 72 2e 20 20 46 6f 72 20  character.  For 
9490: 65 78 61 6d 70 6c 65 3a 3c 2f 70 3e 0a 0a 3c 62  example:</p>..<b
94a0: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
94b0: 58 27 35 33 35 31 34 36 39 37 34 36 35 27 0a 3c  X'53514697465'.<
94c0: 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  /pre></blockquot
94d0: 65 3e 0a 0a 3c 70 3e 0a 41 20 6c 69 74 65 72 61  e>..<p>.A litera
94e0: 6c 20 76 61 6c 75 65 20 63 61 6e 20 61 6c 73 6f  l value can also
94f0: 20 62 65 20 74 68 65 20 74 6f 6b 65 6e 20 22 4e   be the token "N
9500: 55 4c 4c 22 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  ULL"..</p>..<p>.
9510: 41 20 70 61 72 61 6d 65 74 65 72 20 73 70 65 63  A parameter spec
9520: 69 66 69 65 73 20 61 20 70 6c 61 63 65 68 6f 6c  ifies a placehol
9530: 64 65 72 20 69 6e 20 74 68 65 20 65 78 70 72 65  der in the expre
9540: 73 73 69 6f 6e 20 66 6f 72 20 61 20 6c 69 74 65  ssion for a lite
9550: 72 61 6c 0a 76 61 6c 75 65 20 74 68 61 74 20 69  ral.value that i
9560: 73 20 66 69 6c 6c 65 64 20 69 6e 20 61 74 20 72  s filled in at r
9570: 75 6e 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65  untime using the
9580: 0a 3c 61 20 68 72 65 66 3d 22 63 61 70 69 33 72  .<a href="capi3r
9590: 65 66 2e 68 74 6d 6c 23 73 71 6c 69 74 65 33 5f  ef.html#sqlite3_
95a0: 62 69 6e 64 5f 69 6e 74 22 3e 73 71 6c 69 74 65  bind_int">sqlite
95b0: 33 5f 62 69 6e 64 3c 2f 61 3e 20 41 50 49 2e 0a  3_bind</a> API..
95c0: 50 61 72 61 6d 65 74 65 72 73 20 63 61 6e 20 74  Parameters can t
95d0: 61 6b 65 20 73 65 76 65 72 61 6c 20 66 6f 72 6d  ake several form
95e0: 73 3a 0a 3c 2f 70 0a 0a 3c 62 6c 6f 63 6b 71 75  s:.</p..<blockqu
95f0: 6f 74 65 3e 0a 3c 74 61 62 6c 65 3e 0a 3c 74 72  ote>.<table>.<tr
9600: 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69 67  >.<td align="rig
9610: 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  ht" valign="top"
9620: 3e 3c 62 3e 3f 3c 2f 62 3e 3c 69 3e 4e 4e 4e 3c  ><b>?</b><i>NNN<
9630: 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74  /i></td><td widt
9640: 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64  h="20"></td>.<td
9650: 3e 41 20 71 75 65 73 74 69 6f 6e 20 6d 61 72 6b  >A question mark
9660: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 6e   followed by a n
9670: 75 6d 62 65 72 20 3c 69 3e 4e 4e 4e 3c 2f 69 3e  umber <i>NNN</i>
9680: 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f   holds a spot fo
9690: 72 20 74 68 65 0a 4e 4e 4e 2d 74 68 20 70 61 72  r the.NNN-th par
96a0: 61 6d 65 74 65 72 2e 20 20 4e 4e 4e 20 6d 75 73  ameter.  NNN mus
96b0: 74 20 62 65 20 62 65 74 77 65 65 6e 20 31 20 61  t be between 1 a
96c0: 6e 64 20 39 39 39 2e 3c 2f 74 64 3e 0a 3c 2f 74  nd 999.</td>.</t
96d0: 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67  r>.<tr>.<td alig
96e0: 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e  n="right" valign
96f0: 3d 22 74 6f 70 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c  ="top"><b>?</b><
9700: 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32  /td><td width="2
9710: 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 71  0"></td>.<td>A q
9720: 75 65 73 74 69 6f 6e 20 6d 61 72 6b 20 74 68 61  uestion mark tha
9730: 74 20 69 73 20 6e 6f 74 20 66 6f 6c 6c 6f 77 65  t is not followe
9740: 64 20 62 79 20 61 20 6e 75 6d 62 65 72 20 68 6f  d by a number ho
9750: 6c 64 73 20 61 20 73 70 6f 74 20 66 6f 72 0a 74  lds a spot for.t
9760: 68 65 20 6e 65 78 74 20 75 6e 75 73 65 64 20 70  he next unused p
9770: 61 72 61 6d 65 74 65 72 2e 3c 2f 74 64 3e 0a 3c  arameter.</td>.<
9780: 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c  /tr>.<tr>.<td al
9790: 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69  ign="right" vali
97a0: 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3a 3c 2f 62  gn="top"><b>:</b
97b0: 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74 64  ><i>AAAA</i></td
97c0: 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e  ><td width="20">
97d0: 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 63 6f 6c 6f  </td>.<td>A colo
97e0: 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 6e  n followed by an
97f0: 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65   identifier name
9800: 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f   holds a spot fo
9810: 72 20 61 20 6e 61 6d 65 64 0a 70 61 72 61 6d 65  r a named.parame
9820: 74 65 72 20 77 69 74 68 20 74 68 65 20 6e 61 6d  ter with the nam
9830: 65 20 41 41 41 41 2e 20 20 4e 61 6d 65 64 20 70  e AAAA.  Named p
9840: 61 72 61 6d 65 74 65 72 73 20 61 72 65 20 61 6c  arameters are al
9850: 73 6f 20 6e 75 6d 62 65 72 65 64 2e 0a 54 68 65  so numbered..The
9860: 20 6e 75 6d 62 65 72 20 61 73 73 69 67 6e 65 64   number assigned
9870: 20 69 73 20 74 68 65 20 6e 65 78 74 20 75 6e 75   is the next unu
9880: 73 65 64 20 6e 75 6d 62 65 72 2e 20 20 54 6f 20  sed number.  To 
9890: 61 76 6f 69 64 20 63 6f 6e 66 75 73 69 6f 6e 2c  avoid confusion,
98a0: 0a 69 74 20 69 73 20 62 65 73 74 20 74 6f 20 61  .it is best to a
98b0: 76 6f 69 64 20 6d 69 78 69 6e 67 20 6e 61 6d 65  void mixing name
98c0: 64 20 61 6e 64 20 6e 75 6d 62 65 72 65 64 20 70  d and numbered p
98d0: 61 72 61 6d 65 74 65 72 73 2e 3c 2f 74 64 3e 0a  arameters.</td>.
98e0: 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61  </tr>.<tr>.<td a
98f0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c  lign="right" val
9900: 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 24 3c 2f  ign="top"><b>$</
9910: 62 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74  b><i>AAAA</i></t
9920: 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22  d><td width="20"
9930: 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 64 6f 6c  ></td>.<td>A dol
9940: 6c 61 72 2d 73 69 67 6e 20 66 6f 6c 6c 6f 77 65  lar-sign followe
9950: 64 20 62 79 20 61 6e 20 69 64 65 6e 74 69 66 69  d by an identifi
9960: 65 72 20 6e 61 6d 65 20 61 6c 73 6f 20 68 6f 6c  er name also hol
9970: 64 73 20 61 20 73 70 6f 74 20 66 6f 72 20 61 20  ds a spot for a 
9980: 6e 61 6d 65 64 0a 70 61 72 61 6d 65 74 65 72 20  named.parameter 
9990: 77 69 74 68 20 74 68 65 20 6e 61 6d 65 20 41 41  with the name AA
99a0: 41 41 2e 20 20 54 68 65 20 69 64 65 6e 74 69 66  AA.  The identif
99b0: 69 65 72 20 6e 61 6d 65 20 69 6e 20 74 68 69 73  ier name in this
99c0: 20 63 61 73 65 20 63 61 6e 20 69 6e 63 6c 75 64   case can includ
99d0: 65 0a 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 63  e.one or more oc
99e0: 63 75 72 61 6e 63 65 73 20 6f 66 20 22 3a 3a 22  curances of "::"
99f0: 20 61 6e 64 20 61 20 73 75 66 66 69 78 20 65 6e   and a suffix en
9a00: 63 6c 6f 73 65 64 20 69 6e 20 22 28 2e 2e 2e 29  closed in "(...)
9a10: 22 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 61 6e 79  " containing.any
9a20: 20 74 65 78 74 20 61 74 20 61 6c 6c 2e 20 20 54   text at all.  T
9a30: 68 69 73 20 73 79 6e 74 61 78 20 69 73 20 74 68  his syntax is th
9a40: 65 20 66 6f 72 6d 20 6f 66 20 61 20 76 61 72 69  e form of a vari
9a50: 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20 74 68 65  able name in the
9a60: 20 54 63 6c 0a 70 72 6f 67 72 61 6d 6d 69 6e 67   Tcl.programming
9a70: 20 6c 61 6e 67 75 61 67 65 2e 3c 2f 74 64 3e 0a   language.</td>.
9a80: 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c  </tr>.</table>.<
9a90: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70  /blockquote>..<p
9aa0: 3e 50 61 72 61 6d 65 74 65 72 73 20 74 68 61 74  >Parameters that
9ab0: 20 61 72 65 20 6e 6f 74 20 61 73 73 69 67 6e 65   are not assigne
9ac0: 64 20 76 61 6c 75 65 73 20 75 73 69 6e 67 0a 3c  d values using.<
9ad0: 61 20 68 72 65 66 3d 22 63 61 70 69 33 72 65 66  a href="capi3ref
9ae0: 2e 68 74 6d 6c 23 73 71 6c 69 74 65 33 5f 62 69  .html#sqlite3_bi
9af0: 6e 64 5f 69 6e 74 22 3e 73 71 6c 69 74 65 33 5f  nd_int">sqlite3_
9b00: 62 69 6e 64 3c 2f 61 3e 20 61 72 65 20 74 72 65  bind</a> are tre
9b10: 61 74 65 64 0a 61 73 20 4e 55 4c 4c 2e 3c 2f 70  ated.as NULL.</p
9b20: 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 6c 69 6b 65  >..<a name="like
9b30: 22 3e 3c 2f 61 3e 0a 3c 70 3e 54 68 65 20 4c 49  "></a>.<p>The LI
9b40: 4b 45 20 6f 70 65 72 61 74 6f 72 20 64 6f 65 73  KE operator does
9b50: 20 61 20 70 61 74 74 65 72 6e 20 6d 61 74 63 68   a pattern match
9b60: 69 6e 67 20 63 6f 6d 70 61 72 69 73 6f 6e 2e 20  ing comparison. 
9b70: 54 68 65 20 6f 70 65 72 61 6e 64 0a 74 6f 20 74  The operand.to t
9b80: 68 65 20 72 69 67 68 74 20 63 6f 6e 74 61 69 6e  he right contain
9b90: 73 20 74 68 65 20 70 61 74 74 65 72 6e 2c 20 74  s the pattern, t
9ba0: 68 65 20 6c 65 66 74 20 68 61 6e 64 20 6f 70 65  he left hand ope
9bb0: 72 61 6e 64 20 63 6f 6e 74 61 69 6e 73 20 74 68  rand contains th
9bc0: 65 0a 73 74 72 69 6e 67 20 74 6f 20 6d 61 74 63  e.string to matc
9bd0: 68 20 61 67 61 69 6e 73 74 20 74 68 65 20 70 61  h against the pa
9be0: 74 74 65 72 6e 2e 20 0a 7d 0a 70 75 74 73 20 22  ttern. .}.puts "
9bf0: 41 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c  A percent symbol
9c00: 20 5b 4f 70 65 72 61 74 6f 72 20 25 5d 20 69 6e   [Operator %] in
9c10: 20 74 68 65 20 70 61 74 74 65 72 6e 20 6d 61 74   the pattern mat
9c20: 63 68 65 73 20 61 6e 79 0a 73 65 71 75 65 6e 63  ches any.sequenc
9c30: 65 20 6f 66 20 7a 65 72 6f 20 6f 72 20 6d 6f 72  e of zero or mor
9c40: 65 20 63 68 61 72 61 63 74 65 72 73 20 69 6e 20  e characters in 
9c50: 74 68 65 20 73 74 72 69 6e 67 2e 20 20 41 6e 20  the string.  An 
9c60: 75 6e 64 65 72 73 63 6f 72 65 0a 5b 4f 70 65 72  underscore.[Oper
9c70: 61 74 6f 72 20 5f 5d 20 69 6e 20 74 68 65 20 70  ator _] in the p
9c80: 61 74 74 65 72 6e 20 6d 61 74 63 68 65 73 20 61  attern matches a
9c90: 6e 79 20 73 69 6e 67 6c 65 20 63 68 61 72 61 63  ny single charac
9ca0: 74 65 72 20 69 6e 20 74 68 65 0a 73 74 72 69 6e  ter in the.strin
9cb0: 67 2e 20 20 41 6e 79 20 6f 74 68 65 72 20 63 68  g.  Any other ch
9cc0: 61 72 61 63 74 65 72 20 6d 61 74 63 68 65 73 20  aracter matches 
9cd0: 69 74 73 65 6c 66 20 6f 72 20 69 74 27 73 20 6c  itself or it's l
9ce0: 6f 77 65 72 2f 75 70 70 65 72 20 63 61 73 65 0a  ower/upper case.
9cf0: 65 71 75 69 76 61 6c 65 6e 74 20 28 69 2e 65 2e  equivalent (i.e.
9d00: 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76   case-insensitiv
9d10: 65 20 6d 61 74 63 68 69 6e 67 29 2e 20 20 28 41  e matching).  (A
9d20: 20 62 75 67 3a 20 53 51 4c 69 74 65 20 6f 6e 6c   bug: SQLite onl
9d30: 79 0a 75 6e 64 65 72 73 74 61 6e 64 73 20 75 70  y.understands up
9d40: 70 65 72 2f 6c 6f 77 65 72 20 63 61 73 65 20 66  per/lower case f
9d50: 6f 72 20 37 2d 62 69 74 20 4c 61 74 69 6e 20 63  or 7-bit Latin c
9d60: 68 61 72 61 63 74 65 72 73 2e 20 20 48 65 6e 63  haracters.  Henc
9d70: 65 20 74 68 65 0a 4c 49 4b 45 20 6f 70 65 72 61  e the.LIKE opera
9d80: 74 6f 72 20 69 73 20 63 61 73 65 20 73 65 6e 73  tor is case sens
9d90: 69 74 69 76 65 20 66 6f 72 20 38 2d 62 69 74 20  itive for 8-bit 
9da0: 69 73 6f 38 38 35 39 20 63 68 61 72 61 63 74 65  iso8859 characte
9db0: 72 73 20 6f 72 20 55 54 46 2d 38 0a 63 68 61 72  rs or UTF-8.char
9dc0: 61 63 74 65 72 73 2e 20 20 46 6f 72 20 65 78 61  acters.  For exa
9dd0: 6d 70 6c 65 2c 20 74 68 65 20 65 78 70 72 65 73  mple, the expres
9de0: 73 69 6f 6e 20 3c 62 3e 27 61 27 26 6e 62 73 70  sion <b>'a'&nbsp
9df0: 3b 4c 49 4b 45 26 6e 62 73 70 3b 27 41 27 3c 2f  ;LIKE&nbsp;'A'</
9e00: 62 3e 0a 69 73 20 54 52 55 45 20 62 75 74 20 3c  b>.is TRUE but <
9e10: 62 3e 27 26 61 65 6c 69 67 3b 27 26 6e 62 73 70  b>'&aelig;'&nbsp
9e20: 3b 4c 49 4b 45 26 6e 62 73 70 3b 27 26 41 45 6c  ;LIKE&nbsp;'&AEl
9e30: 69 67 3b 27 3c 2f 62 3e 20 69 73 20 46 41 4c 53  ig;'</b> is FALS
9e40: 45 2e 29 2e 3c 2f 70 3e 22 0a 0a 70 75 74 73 20  E.).</p>"..puts 
9e50: 7b 0a 3c 70 3e 49 66 20 74 68 65 20 6f 70 74 69  {.<p>If the opti
9e60: 6f 6e 61 6c 20 45 53 43 41 50 45 20 63 6c 61 75  onal ESCAPE clau
9e70: 73 65 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74  se is present, t
9e80: 68 65 6e 20 74 68 65 20 65 78 70 72 65 73 73 69  hen the expressi
9e90: 6f 6e 0a 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 65  on.following the
9ea0: 20 45 53 43 41 50 45 20 6b 65 79 77 6f 72 64 20   ESCAPE keyword 
9eb0: 6d 75 73 74 20 65 76 61 6c 75 61 74 65 20 74 6f  must evaluate to
9ec0: 20 61 20 73 74 72 69 6e 67 20 63 6f 6e 73 69 73   a string consis
9ed0: 74 69 6e 67 20 6f 66 0a 61 20 73 69 6e 67 6c 65  ting of.a single
9ee0: 20 63 68 61 72 61 63 74 65 72 2e 20 54 68 69 73   character. This
9ef0: 20 63 68 61 72 61 63 74 65 72 20 6d 61 79 20 62   character may b
9f00: 65 20 75 73 65 64 20 69 6e 20 74 68 65 20 4c 49  e used in the LI
9f10: 4b 45 20 70 61 74 74 65 72 6e 0a 74 6f 20 69 6e  KE pattern.to in
9f20: 63 6c 75 64 65 20 6c 69 74 65 72 61 6c 20 70 65  clude literal pe
9f30: 72 63 65 6e 74 20 6f 72 20 75 6e 64 65 72 73 63  rcent or undersc
9f40: 6f 72 65 20 63 68 61 72 61 63 74 65 72 73 2e 20  ore characters. 
9f50: 54 68 65 20 65 73 63 61 70 65 0a 63 68 61 72 61  The escape.chara
9f60: 63 74 65 72 20 66 6f 6c 6c 6f 77 65 64 20 62 79  cter followed by
9f70: 20 61 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f   a percent symbo
9f80: 6c 2c 20 75 6e 64 65 72 73 63 6f 72 65 20 6f 72  l, underscore or
9f90: 20 69 74 73 65 6c 66 20 6d 61 74 63 68 65 73 20   itself matches 
9fa0: 61 0a 6c 69 74 65 72 61 6c 20 70 65 72 63 65 6e  a.literal percen
9fb0: 74 20 73 79 6d 62 6f 6c 2c 20 75 6e 64 65 72 73  t symbol, unders
9fc0: 63 6f 72 65 20 6f 72 20 65 73 63 61 70 65 20 63  core or escape c
9fd0: 68 61 72 61 63 74 65 72 20 69 6e 20 74 68 65 20  haracter in the 
9fe0: 73 74 72 69 6e 67 2c 0a 72 65 73 70 65 63 74 69  string,.respecti
9ff0: 76 65 6c 79 2e 20 54 68 65 20 69 6e 66 69 78 20  vely. The infix 
a000: 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 69 73  LIKE operator is
a010: 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20   implemented by 
a020: 63 61 6c 6c 69 6e 67 20 74 68 65 0a 75 73 65 72  calling the.user
a030: 20 66 75 6e 63 74 69 6f 6e 20 3c 61 20 68 72 65   function <a hre
a040: 66 3d 22 23 6c 69 6b 65 46 75 6e 63 22 3e 20 6c  f="#likeFunc"> l
a050: 69 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  ike(<i>X</i>,<i>
a060: 59 3c 2f 69 3e 29 3c 2f 61 3e 2e 3c 2f 70 3e 0a  Y</i>)</a>.</p>.
a070: 7d 0a 0a 70 75 74 73 20 7b 0a 54 68 65 20 4c 49  }..puts {.The LI
a080: 4b 45 20 6f 70 65 72 61 74 6f 72 20 69 73 20 6e  KE operator is n
a090: 6f 74 20 63 61 73 65 20 73 65 6e 73 69 74 69 76  ot case sensitiv
a0a0: 65 20 61 6e 64 20 77 69 6c 6c 20 6d 61 74 63 68  e and will match
a0b0: 20 75 70 70 65 72 20 63 61 73 65 0a 63 68 61 72   upper case.char
a0c0: 61 63 74 65 72 73 20 6f 6e 20 6f 6e 65 20 73 69  acters on one si
a0d0: 64 65 20 61 67 61 69 6e 73 74 20 6c 6f 77 65 72  de against lower
a0e0: 20 63 61 73 65 20 63 68 61 72 61 63 74 65 72 73   case characters
a0f0: 20 6f 6e 20 74 68 65 20 6f 74 68 65 72 2e 20 20   on the other.  
a100: 0a 28 41 20 62 75 67 3a 20 53 51 4c 69 74 65 20  .(A bug: SQLite 
a110: 6f 6e 6c 79 20 75 6e 64 65 72 73 74 61 6e 64 73  only understands
a120: 20 75 70 70 65 72 2f 6c 6f 77 65 72 20 63 61 73   upper/lower cas
a130: 65 20 66 6f 72 20 37 2d 62 69 74 20 4c 61 74 69  e for 7-bit Lati
a140: 6e 0a 63 68 61 72 61 63 74 65 72 73 2e 20 20 48  n.characters.  H
a150: 65 6e 63 65 20 74 68 65 20 4c 49 4b 45 20 6f 70  ence the LIKE op
a160: 65 72 61 74 6f 72 20 69 73 20 63 61 73 65 20 73  erator is case s
a170: 65 6e 73 69 74 69 76 65 20 66 6f 72 20 38 2d 62  ensitive for 8-b
a180: 69 74 0a 69 73 6f 38 38 35 39 20 63 68 61 72 61  it.iso8859 chara
a190: 63 74 65 72 73 20 6f 72 20 55 54 46 2d 38 20 63  cters or UTF-8 c
a1a0: 68 61 72 61 63 74 65 72 73 2e 20 20 46 6f 72 20  haracters.  For 
a1b0: 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 65 78 70  example, the exp
a1c0: 72 65 73 73 69 6f 6e 0a 3c 62 3e 27 61 27 26 6e  ression.<b>'a'&n
a1d0: 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70 3b 27 41  bsp;LIKE&nbsp;'A
a1e0: 27 3c 2f 62 3e 20 69 73 20 54 52 55 45 20 62 75  '</b> is TRUE bu
a1f0: 74 0a 3c 62 3e 27 26 61 65 6c 69 67 3b 27 26 6e  t.<b>'&aelig;'&n
a200: 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70 3b 27 26  bsp;LIKE&nbsp;'&
a210: 41 45 6c 69 67 3b 27 3c 2f 62 3e 20 69 73 20 46  AElig;'</b> is F
a220: 41 4c 53 45 2e 29 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ALSE.).</p>..<p>
a230: 54 68 65 20 69 6e 66 69 78 20 4c 49 4b 45 0a 6f  The infix LIKE.o
a240: 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70 6c 65  perator is imple
a250: 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c 69 6e  mented by callin
a260: 67 20 74 68 65 20 75 73 65 72 20 66 75 6e 63 74  g the user funct
a270: 69 6f 6e 20 3c 61 20 68 72 65 66 3d 22 23 6c 69  ion <a href="#li
a280: 6b 65 46 75 6e 63 22 3e 0a 6c 69 6b 65 28 3c 69  keFunc">.like(<i
a290: 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29  >X</i>,<i>Y</i>)
a2a0: 3c 2f 61 3e 2e 20 20 49 66 20 61 6e 20 45 53 43  </a>.  If an ESC
a2b0: 41 50 45 20 63 6c 61 75 73 65 20 69 73 20 70 72  APE clause is pr
a2c0: 65 73 65 6e 74 2c 20 69 74 20 61 64 64 73 0a 61  esent, it adds.a
a2d0: 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72   third parameter
a2e0: 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69 6f 6e   to the function
a2f0: 20 63 61 6c 6c 2e 20 49 66 20 74 68 65 20 66 75   call. If the fu
a300: 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f 66 20 4c  nctionality of L
a310: 49 4b 45 20 63 61 6e 20 62 65 0a 6f 76 65 72 72  IKE can be.overr
a320: 69 64 64 65 6e 20 62 79 20 64 65 66 69 6e 69 6e  idden by definin
a330: 67 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65  g an alternative
a340: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
a350: 6f 66 20 74 68 65 0a 6c 69 6b 65 28 29 20 53 51  of the.like() SQ
a360: 4c 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f 70 3e 0a  L function.</p>.
a370: 3c 2f 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 67  </p>..<a name="g
a380: 6c 6f 62 22 3e 3c 2f 61 3e 0a 3c 70 3e 54 68 65  lob"></a>.<p>The
a390: 20 47 4c 4f 42 20 6f 70 65 72 61 74 6f 72 20 69   GLOB operator i
a3a0: 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 4c 49 4b  s similar to LIK
a3b0: 45 20 62 75 74 20 75 73 65 73 20 74 68 65 20 55  E but uses the U
a3c0: 6e 69 78 0a 66 69 6c 65 20 67 6c 6f 62 62 69 6e  nix.file globbin
a3d0: 67 20 73 79 6e 74 61 78 20 66 6f 72 20 69 74 73  g syntax for its
a3e0: 20 77 69 6c 64 63 61 72 64 73 2e 20 20 41 6c 73   wildcards.  Als
a3f0: 6f 2c 20 47 4c 4f 42 20 69 73 20 63 61 73 65 0a  o, GLOB is case.
a400: 73 65 6e 73 69 74 69 76 65 2c 20 75 6e 6c 69 6b  sensitive, unlik
a410: 65 20 4c 49 4b 45 2e 20 20 42 6f 74 68 20 47 4c  e LIKE.  Both GL
a420: 4f 42 20 61 6e 64 20 4c 49 4b 45 20 6d 61 79 20  OB and LIKE may 
a430: 62 65 20 70 72 65 63 65 64 65 64 20 62 79 0a 74  be preceded by.t
a440: 68 65 20 4e 4f 54 20 6b 65 79 77 6f 72 64 20 74  he NOT keyword t
a450: 6f 20 69 6e 76 65 72 74 20 74 68 65 20 73 65 6e  o invert the sen
a460: 73 65 20 6f 66 20 74 68 65 20 74 65 73 74 2e 20  se of the test. 
a470: 20 54 68 65 20 69 6e 66 69 78 20 47 4c 4f 42 20   The infix GLOB 
a480: 0a 6f 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70  .operator is imp
a490: 6c 65 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c  lemented by call
a4a0: 69 6e 67 20 74 68 65 20 75 73 65 72 20 66 75 6e  ing the user fun
a4b0: 63 74 69 6f 6e 20 3c 61 20 68 72 65 66 3d 22 23  ction <a href="#
a4c0: 67 6c 6f 62 46 75 6e 63 22 3e 0a 67 6c 6f 62 28  globFunc">.glob(
a4d0: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
a4e0: 3e 29 3c 2f 61 3e 20 61 6e 64 20 63 61 6e 20 62  >)</a> and can b
a4f0: 65 20 6d 6f 64 69 66 69 65 64 20 62 79 20 6f 76  e modified by ov
a500: 65 72 72 69 64 69 6e 67 0a 74 68 61 74 20 66 75  erriding.that fu
a510: 6e 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 61 20  nction.</p>..<a 
a520: 6e 61 6d 65 3d 22 72 65 67 65 78 70 22 3e 3c 2f  name="regexp"></
a530: 61 3e 0a 3c 70 3e 54 68 65 20 52 45 47 45 58 50  a>.<p>The REGEXP
a540: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 61 20 73   operator is a s
a550: 70 65 63 69 61 6c 20 73 79 6e 74 61 78 20 66 6f  pecial syntax fo
a560: 72 20 74 68 65 20 72 65 67 65 78 70 28 29 0a 75  r the regexp().u
a570: 73 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20 20 4e  ser function.  N
a580: 6f 20 72 65 67 65 78 70 28 29 20 75 73 65 72 20  o regexp() user 
a590: 66 75 6e 63 74 69 6f 6e 20 69 73 20 64 65 66 69  function is defi
a5a0: 6e 65 64 20 62 79 20 64 65 66 61 75 6c 74 0a 61  ned by default.a
a5b0: 6e 64 20 73 6f 20 75 73 65 20 6f 66 20 74 68 65  nd so use of the
a5c0: 20 52 45 47 45 58 50 20 6f 70 65 72 61 74 6f 72   REGEXP operator
a5d0: 20 77 69 6c 6c 20 6e 6f 72 6d 61 6c 6c 79 20 72   will normally r
a5e0: 65 73 75 6c 74 20 69 6e 20 61 6e 0a 65 72 72 6f  esult in an.erro
a5f0: 72 20 6d 65 73 73 61 67 65 2e 20 20 49 66 20 61  r message.  If a
a600: 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 66 75   user-defined fu
a610: 6e 63 74 69 6f 6e 20 6e 61 6d 65 64 20 22 72 65  nction named "re
a620: 67 65 78 70 22 0a 69 73 20 64 65 66 69 6e 65 64  gexp".is defined
a630: 20 61 74 20 72 75 6e 2d 74 69 6d 65 2c 20 74 68   at run-time, th
a640: 61 74 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c  at function will
a650: 20 62 65 20 63 61 6c 6c 65 64 20 69 6e 20 6f 72   be called in or
a660: 64 65 72 0a 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  der.to implement
a670: 20 74 68 65 20 52 45 47 45 58 50 20 6f 70 65 72   the REGEXP oper
a680: 61 74 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20  ator.</p>..<p>A 
a690: 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e 20  column name can 
a6a0: 62 65 20 61 6e 79 20 6f 66 20 74 68 65 20 6e 61  be any of the na
a6b0: 6d 65 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74  mes defined in t
a6c0: 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 0a  he CREATE TABLE.
a6d0: 73 74 61 74 65 6d 65 6e 74 20 6f 72 20 6f 6e 65  statement or one
a6e0: 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e   of the followin
a6f0: 67 20 73 70 65 63 69 61 6c 20 69 64 65 6e 74 69  g special identi
a700: 66 69 65 72 73 3a 20 22 3c 62 3e 52 4f 57 49 44  fiers: "<b>ROWID
a710: 3c 2f 62 3e 22 2c 0a 22 3c 62 3e 4f 49 44 3c 2f  </b>",."<b>OID</
a720: 62 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57  b>", or "<b>_ROW
a730: 49 44 5f 3c 2f 62 3e 22 2e 0a 54 68 65 73 65 20  ID_</b>"..These 
a740: 73 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69  special identifi
a750: 65 72 73 20 61 6c 6c 20 64 65 73 63 72 69 62 65  ers all describe
a760: 20 74 68 65 0a 75 6e 69 71 75 65 20 72 61 6e 64   the.unique rand
a770: 6f 6d 20 69 6e 74 65 67 65 72 20 6b 65 79 20 28  om integer key (
a780: 74 68 65 20 22 72 6f 77 20 6b 65 79 22 29 20 61  the "row key") a
a790: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 65  ssociated with e
a7a0: 76 65 72 79 20 0a 72 6f 77 20 6f 66 20 65 76 65  very .row of eve
a7b0: 72 79 20 74 61 62 6c 65 2e 0a 54 68 65 20 73 70  ry table..The sp
a7c0: 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72  ecial identifier
a7d0: 73 20 6f 6e 6c 79 20 72 65 66 65 72 20 74 6f 20  s only refer to 
a7e0: 74 68 65 20 72 6f 77 20 6b 65 79 20 69 66 20 74  the row key if t
a7f0: 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 0a  he CREATE TABLE.
a800: 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e  statement does n
a810: 6f 74 20 64 65 66 69 6e 65 20 61 20 72 65 61 6c  ot define a real
a820: 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20 74 68 65   column with the
a830: 20 73 61 6d 65 20 6e 61 6d 65 2e 20 20 52 6f 77   same name.  Row
a840: 20 6b 65 79 73 0a 61 63 74 20 6c 69 6b 65 20 72   keys.act like r
a850: 65 61 64 2d 6f 6e 6c 79 20 63 6f 6c 75 6d 6e 73  ead-only columns
a860: 2e 20 20 41 20 72 6f 77 20 6b 65 79 20 63 61 6e  .  A row key can
a870: 20 62 65 20 75 73 65 64 20 61 6e 79 77 68 65 72   be used anywher
a880: 65 20 61 20 72 65 67 75 6c 61 72 0a 63 6f 6c 75  e a regular.colu
a890: 6d 6e 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20  mn can be used, 
a8a0: 65 78 63 65 70 74 20 74 68 61 74 20 79 6f 75 20  except that you 
a8b0: 63 61 6e 6e 6f 74 20 63 68 61 6e 67 65 20 74 68  cannot change th
a8c0: 65 20 76 61 6c 75 65 0a 6f 66 20 61 20 72 6f 77  e value.of a row
a8d0: 20 6b 65 79 20 69 6e 20 61 6e 20 55 50 44 41 54   key in an UPDAT
a8e0: 45 20 6f 72 20 49 4e 53 45 52 54 20 73 74 61 74  E or INSERT stat
a8f0: 65 6d 65 6e 74 2e 0a 22 53 45 4c 45 43 54 20 2a  ement.."SELECT *
a900: 20 2e 2e 2e 22 20 64 6f 65 73 20 6e 6f 74 20 72   ..." does not r
a910: 65 74 75 72 6e 20 74 68 65 20 72 6f 77 20 6b 65  eturn the row ke
a920: 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53 45 4c 45 43  y.</p>..<p>SELEC
a930: 54 20 73 74 61 74 65 6d 65 6e 74 73 20 63 61 6e  T statements can
a940: 20 61 70 70 65 61 72 20 69 6e 20 65 78 70 72 65   appear in expre
a950: 73 73 69 6f 6e 73 20 61 73 20 65 69 74 68 65 72  ssions as either
a960: 20 74 68 65 0a 72 69 67 68 74 2d 68 61 6e 64 20   the.right-hand 
a970: 6f 70 65 72 61 6e 64 20 6f 66 20 74 68 65 20 49  operand of the I
a980: 4e 20 6f 70 65 72 61 74 6f 72 2c 20 61 73 20 61  N operator, as a
a990: 20 73 63 61 6c 61 72 20 71 75 61 6e 74 69 74 79   scalar quantity
a9a0: 2c 20 6f 72 0a 61 73 20 74 68 65 20 6f 70 65 72  , or.as the oper
a9b0: 61 6e 64 20 6f 66 20 61 6e 20 45 58 49 53 54 53  and of an EXISTS
a9c0: 20 6f 70 65 72 61 74 6f 72 2e 0a 41 73 20 61 20   operator..As a 
a9d0: 73 63 61 6c 61 72 20 71 75 61 6e 74 69 74 79 20  scalar quantity 
a9e0: 6f 72 20 74 68 65 20 6f 70 65 72 61 6e 64 20 6f  or the operand o
a9f0: 66 20 61 6e 20 49 4e 20 6f 70 65 72 61 74 6f 72  f an IN operator
aa00: 2c 0a 74 68 65 20 53 45 4c 45 43 54 20 73 68 6f  ,.the SELECT sho
aa10: 75 6c 64 20 68 61 76 65 20 6f 6e 6c 79 20 61 20  uld have only a 
aa20: 73 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 20 69 6e  single column in
aa30: 20 69 74 73 0a 72 65 73 75 6c 74 2e 20 20 43 6f   its.result.  Co
aa40: 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 73 20 28  mpound SELECTs (
aa50: 63 6f 6e 6e 65 63 74 65 64 20 77 69 74 68 20 6b  connected with k
aa60: 65 79 77 6f 72 64 73 20 6c 69 6b 65 20 55 4e 49  eywords like UNI
aa70: 4f 4e 20 6f 72 0a 45 58 43 45 50 54 29 20 61 72  ON or.EXCEPT) ar
aa80: 65 20 61 6c 6c 6f 77 65 64 2e 0a 57 69 74 68 20  e allowed..With 
aa90: 74 68 65 20 45 58 49 53 54 53 20 6f 70 65 72 61  the EXISTS opera
aaa0: 74 6f 72 2c 20 74 68 65 20 63 6f 6c 75 6d 6e 73  tor, the columns
aab0: 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 20 73   in the result s
aac0: 65 74 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54  et of the SELECT
aad0: 20 61 72 65 0a 69 67 6e 6f 72 65 64 20 61 6e 64   are.ignored and
aae0: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
aaf0: 72 65 74 75 72 6e 73 20 54 52 55 45 20 69 66 20  returns TRUE if 
ab00: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73  one or more rows
ab10: 20 65 78 69 73 74 0a 61 6e 64 20 46 41 4c 53 45   exist.and FALSE
ab20: 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 73   if the result s
ab30: 65 74 20 69 73 20 65 6d 70 74 79 2e 0a 49 66 20  et is empty..If 
ab40: 6e 6f 20 74 65 72 6d 73 20 69 6e 20 74 68 65 20  no terms in the 
ab50: 53 45 4c 45 43 54 20 65 78 70 72 65 73 73 69 6f  SELECT expressio
ab60: 6e 20 72 65 66 65 72 20 74 6f 20 76 61 6c 75 65  n refer to value
ab70: 20 69 6e 20 74 68 65 20 63 6f 6e 74 61 69 6e 69   in the containi
ab80: 6e 67 0a 71 75 65 72 79 2c 20 74 68 65 6e 20 74  ng.query, then t
ab90: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73  he expression is
aba0: 20 65 76 61 6c 75 61 74 65 64 20 6f 6e 63 65 20   evaluated once 
abb0: 70 72 69 6f 72 20 74 6f 20 61 6e 79 20 6f 74 68  prior to any oth
abc0: 65 72 0a 70 72 6f 63 65 73 73 69 6e 67 20 61 6e  er.processing an
abd0: 64 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20  d the result is 
abe0: 72 65 75 73 65 64 20 61 73 20 6e 65 63 65 73 73  reused as necess
abf0: 61 72 79 2e 20 20 49 66 20 74 68 65 20 53 45 4c  ary.  If the SEL
ac00: 45 43 54 20 65 78 70 72 65 73 73 69 6f 6e 0a 64  ECT expression.d
ac10: 6f 65 73 20 63 6f 6e 74 61 69 6e 20 76 61 72 69  oes contain vari
ac20: 61 62 6c 65 73 20 66 72 6f 6d 20 74 68 65 20 6f  ables from the o
ac30: 75 74 65 72 20 71 75 65 72 79 2c 20 74 68 65 6e  uter query, then
ac40: 20 74 68 65 20 53 45 4c 45 43 54 20 69 73 20 72   the SELECT is r
ac50: 65 65 76 61 6c 75 61 74 65 64 0a 65 76 65 72 79  eevaluated.every
ac60: 20 74 69 6d 65 20 69 74 20 69 73 20 6e 65 65 64   time it is need
ac70: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e  ed.</p>..<p>When
ac80: 20 61 20 53 45 4c 45 43 54 20 69 73 20 74 68 65   a SELECT is the
ac90: 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64 20 6f   right operand o
aca0: 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74 6f  f the IN operato
acb0: 72 2c 20 74 68 65 20 49 4e 0a 6f 70 65 72 61 74  r, the IN.operat
acc0: 6f 72 20 72 65 74 75 72 6e 73 20 54 52 55 45 20  or returns TRUE 
acd0: 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66  if the result of
ace0: 20 74 68 65 20 6c 65 66 74 20 6f 70 65 72 61 6e   the left operan
acf0: 64 20 69 73 20 61 6e 79 20 6f 66 0a 74 68 65 20  d is any of.the 
ad00: 76 61 6c 75 65 73 20 67 65 6e 65 72 61 74 65 64  values generated
ad10: 20 62 79 20 74 68 65 20 73 65 6c 65 63 74 2e 20   by the select. 
ad20: 20 54 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72   The IN operator
ad30: 20 6d 61 79 20 62 65 20 70 72 65 63 65 64 65 64   may be preceded
ad40: 0a 62 79 20 74 68 65 20 4e 4f 54 20 6b 65 79 77  .by the NOT keyw
ad50: 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74 68  ord to invert th
ad60: 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20 74  e sense of the t
ad70: 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65  est.</p>..<p>Whe
ad80: 6e 20 61 20 53 45 4c 45 43 54 20 61 70 70 65 61  n a SELECT appea
ad90: 72 73 20 77 69 74 68 69 6e 20 61 6e 20 65 78 70  rs within an exp
ada0: 72 65 73 73 69 6f 6e 20 62 75 74 20 69 73 20 6e  ression but is n
adb0: 6f 74 20 74 68 65 20 72 69 67 68 74 0a 6f 70 65  ot the right.ope
adc0: 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f 70  rand of an IN op
add0: 65 72 61 74 6f 72 2c 20 74 68 65 6e 20 74 68 65  erator, then the
ade0: 20 66 69 72 73 74 20 72 6f 77 20 6f 66 20 74 68   first row of th
adf0: 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 0a  e result of the.
ae00: 53 45 4c 45 43 54 20 62 65 63 6f 6d 65 73 20 74  SELECT becomes t
ae10: 68 65 20 76 61 6c 75 65 20 75 73 65 64 20 69 6e  he value used in
ae20: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 2e   the expression.
ae30: 20 20 49 66 20 74 68 65 20 53 45 4c 45 43 54 20    If the SELECT 
ae40: 79 69 65 6c 64 73 0a 6d 6f 72 65 20 74 68 61 6e  yields.more than
ae50: 20 6f 6e 65 20 72 65 73 75 6c 74 20 72 6f 77 2c   one result row,
ae60: 20 61 6c 6c 20 72 6f 77 73 20 61 66 74 65 72 20   all rows after 
ae70: 74 68 65 20 66 69 72 73 74 20 61 72 65 20 69 67  the first are ig
ae80: 6e 6f 72 65 64 2e 20 20 49 66 0a 74 68 65 20 53  nored.  If.the S
ae90: 45 4c 45 43 54 20 79 69 65 6c 64 73 20 6e 6f 20  ELECT yields no 
aea0: 72 6f 77 73 2c 20 74 68 65 6e 20 74 68 65 20 76  rows, then the v
aeb0: 61 6c 75 65 20 6f 66 20 74 68 65 20 53 45 4c 45  alue of the SELE
aec0: 43 54 20 69 73 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a  CT is NULL.</p>.
aed0: 0a 3c 70 3e 41 20 43 41 53 54 20 65 78 70 72 65  .<p>A CAST expre
aee0: 73 73 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68  ssion changes th
aef0: 65 20 64 61 74 61 74 79 70 65 20 6f 66 20 74 68  e datatype of th
af00: 65 20 3c 65 78 70 72 3e 20 69 6e 74 6f 20 74 68  e <expr> into th
af10: 65 0a 74 79 70 65 20 73 70 65 63 69 66 69 65 64  e.type specified
af20: 20 62 79 20 26 6c 74 3b 74 79 70 65 26 67 74 3b   by &lt;type&gt;
af30: 2e 20 0a 26 6c 74 3b 74 79 70 65 26 67 74 3b 20  . .&lt;type&gt; 
af40: 63 61 6e 20 62 65 20 61 6e 79 20 6e 6f 6e 2d 65  can be any non-e
af50: 6d 70 74 79 20 74 79 70 65 20 6e 61 6d 65 20 74  mpty type name t
af60: 68 61 74 20 69 73 20 76 61 6c 69 64 0a 66 6f 72  hat is valid.for
af70: 20 74 68 65 20 74 79 70 65 20 69 6e 20 61 20 63   the type in a c
af80: 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e  olumn definition
af90: 20 6f 66 20 61 20 43 52 45 41 54 45 20 54 41 42   of a CREATE TAB
afa0: 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70  LE statement.</p
afb0: 3e 0a 0a 3c 70 3e 42 6f 74 68 20 73 69 6d 70 6c  >..<p>Both simpl
afc0: 65 20 61 6e 64 20 61 67 67 72 65 67 61 74 65 20  e and aggregate 
afd0: 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 73 75  functions are su
afe0: 70 70 6f 72 74 65 64 2e 20 20 41 20 73 69 6d 70  pported.  A simp
aff0: 6c 65 0a 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20  le.function can 
b000: 62 65 20 75 73 65 64 20 69 6e 20 61 6e 79 20 65  be used in any e
b010: 78 70 72 65 73 73 69 6f 6e 2e 20 20 53 69 6d 70  xpression.  Simp
b020: 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74  le functions ret
b030: 75 72 6e 0a 61 20 72 65 73 75 6c 74 20 69 6d 6d  urn.a result imm
b040: 65 64 69 61 74 65 6c 79 20 62 61 73 65 64 20 6f  ediately based o
b050: 6e 20 74 68 65 69 72 20 69 6e 70 75 74 73 2e 20  n their inputs. 
b060: 20 41 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   Aggregate funct
b070: 69 6f 6e 73 0a 6d 61 79 20 6f 6e 6c 79 20 62 65  ions.may only be
b080: 20 75 73 65 64 20 69 6e 20 61 20 53 45 4c 45 43   used in a SELEC
b090: 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 41 67  T statement.  Ag
b0a0: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
b0b0: 73 20 63 6f 6d 70 75 74 65 0a 74 68 65 69 72 20  s compute.their 
b0c0: 72 65 73 75 6c 74 20 61 63 72 6f 73 73 20 61 6c  result across al
b0d0: 6c 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72 65  l rows of the re
b0e0: 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a 3c  sult set.</p>..<
b0f0: 70 3e 54 68 65 20 66 75 6e 63 74 69 6f 6e 73 20  p>The functions 
b100: 73 68 6f 77 6e 20 62 65 6c 6f 77 20 61 72 65 20  shown below are 
b110: 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66  available by def
b120: 61 75 6c 74 2e 20 20 41 64 64 69 74 69 6f 6e 61  ault.  Additiona
b130: 6c 0a 66 75 6e 63 74 69 6f 6e 73 20 6d 61 79 20  l.functions may 
b140: 62 65 20 77 72 69 74 74 65 6e 20 69 6e 20 43 20  be written in C 
b150: 61 6e 64 20 61 64 64 65 64 20 74 6f 20 74 68 65  and added to the
b160: 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65   database engine
b170: 20 75 73 69 6e 67 0a 74 68 65 20 3c 61 20 68 72   using.the <a hr
b180: 65 66 3d 22 63 61 70 69 33 72 65 66 2e 68 74 6d  ef="capi3ref.htm
b190: 6c 23 63 66 75 6e 63 22 3e 73 71 6c 69 74 65 33  l#cfunc">sqlite3
b1a0: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
b1b0: 28 29 3c 2f 61 3e 0a 41 50 49 2e 3c 2f 70 3e 0a  ()</a>.API.</p>.
b1c0: 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30  .<table border=0
b1d0: 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e   cellpadding=10>
b1e0: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
b1f0: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
b200: 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 61  ght" width=120>a
b210: 62 73 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64  bs(<i>X</i>)</td
b220: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
b230: 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 61 62  p">Return the ab
b240: 73 6f 6c 75 74 65 20 76 61 6c 75 65 20 6f 66 20  solute value of 
b250: 61 72 67 75 6d 65 6e 74 20 3c 69 3e 58 3c 2f 69  argument <i>X</i
b260: 3e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  >.</td>.</tr>..<
b270: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
b280: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
b290: 74 22 3e 63 6f 61 6c 65 73 63 65 28 3c 69 3e 58  t">coalesce(<i>X
b2a0: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e  </i>,<i>Y</i>,..
b2b0: 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  .)</td>.<td vali
b2c0: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
b2d0: 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 66 69  a copy of the fi
b2e0: 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67  rst non-NULL arg
b2f0: 75 6d 65 6e 74 2e 20 20 49 66 0a 61 6c 6c 20 61  ument.  If.all a
b300: 72 67 75 6d 65 6e 74 73 20 61 72 65 20 4e 55 4c  rguments are NUL
b310: 4c 20 74 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72  L then NULL is r
b320: 65 74 75 72 6e 65 64 2e 20 20 54 68 65 72 65 20  eturned.  There 
b330: 6d 75 73 74 20 62 65 20 61 74 20 6c 65 61 73 74  must be at least
b340: 20 0a 32 20 61 72 67 75 6d 65 6e 74 73 2e 3c 2f   .2 arguments.</
b350: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
b360: 3c 61 20 6e 61 6d 65 3d 22 67 6c 6f 62 46 75 6e  <a name="globFun
b370: 63 22 3e 3c 2f 61 3e 0a 3c 74 64 20 76 61 6c 69  c"></a>.<td vali
b380: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
b390: 72 69 67 68 74 22 3e 67 6c 6f 62 28 3c 69 3e 58  right">glob(<i>X
b3a0: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f  </i>,<i>Y</i>)</
b3b0: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
b3c0: 74 6f 70 22 3e 54 68 69 73 20 66 75 6e 63 74 69  top">This functi
b3d0: 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 69 6d  on is used to im
b3e0: 70 6c 65 6d 65 6e 74 20 74 68 65 0a 22 3c 62 3e  plement the."<b>
b3f0: 58 20 47 4c 4f 42 20 59 3c 2f 62 3e 22 20 73 79  X GLOB Y</b>" sy
b400: 6e 74 61 78 20 6f 66 20 53 51 4c 69 74 65 2e 20  ntax of SQLite. 
b410: 20 54 68 65 0a 3c 61 20 68 72 65 66 3d 22 63 61   The.<a href="ca
b420: 70 69 33 72 65 66 2e 68 74 6d 6c 23 73 71 6c 69  pi3ref.html#sqli
b430: 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74  te3_create_funct
b440: 69 6f 6e 22 3e 73 71 6c 69 74 65 33 5f 63 72 65  ion">sqlite3_cre
b450: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 3c 2f  ate_function()</
b460: 61 3e 20 0a 69 6e 74 65 72 66 61 63 65 20 63 61  a> .interface ca
b470: 6e 0a 62 65 20 75 73 65 64 20 74 6f 20 6f 76 65  n.be used to ove
b480: 72 72 69 64 65 20 74 68 69 73 20 66 75 6e 63 74  rride this funct
b490: 69 6f 6e 20 61 6e 64 20 74 68 65 72 65 62 79 20  ion and thereby 
b4a0: 63 68 61 6e 67 65 20 74 68 65 20 6f 70 65 72 61  change the opera
b4b0: 74 69 6f 6e 0a 6f 66 20 74 68 65 20 3c 61 20 68  tion.of the <a h
b4c0: 72 65 66 3d 22 23 67 6c 6f 62 46 75 6e 63 22 3e  ref="#globFunc">
b4d0: 47 4c 4f 42 3c 2f 61 3e 20 6f 70 65 72 61 74 6f  GLOB</a> operato
b4e0: 72 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  r.</td>.</tr>..<
b4f0: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
b500: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
b510: 74 22 3e 69 66 6e 75 6c 6c 28 3c 69 3e 58 3c 2f  t">ifnull(<i>X</
b520: 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64  i>,<i>Y</i>)</td
b530: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
b540: 70 22 3e 52 65 74 75 72 6e 20 61 20 63 6f 70 79  p">Return a copy
b550: 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 6e 6f   of the first no
b560: 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e 74 2e  n-NULL argument.
b570: 20 20 49 66 0a 62 6f 74 68 20 61 72 67 75 6d 65    If.both argume
b580: 6e 74 73 20 61 72 65 20 4e 55 4c 4c 20 74 68 65  nts are NULL the
b590: 6e 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e  n NULL is return
b5a0: 65 64 2e 20 54 68 69 73 20 62 65 68 61 76 65 73  ed. This behaves
b5b0: 20 74 68 65 20 73 61 6d 65 20 61 73 20 0a 3c 62   the same as .<b
b5c0: 3e 63 6f 61 6c 65 73 63 65 28 29 3c 2f 62 3e 20  >coalesce()</b> 
b5d0: 61 62 6f 76 65 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  above.</td>.</tr
b5e0: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
b5f0: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
b600: 72 69 67 68 74 22 3e 6c 61 73 74 5f 69 6e 73 65  right">last_inse
b610: 72 74 5f 72 6f 77 69 64 28 29 3c 2f 74 64 3e 0a  rt_rowid()</td>.
b620: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
b630: 3e 52 65 74 75 72 6e 20 74 68 65 20 52 4f 57 49  >Return the ROWI
b640: 44 20 6f 66 20 74 68 65 20 6c 61 73 74 20 72 6f  D of the last ro
b650: 77 20 69 6e 73 65 72 74 20 66 72 6f 6d 20 74 68  w insert from th
b660: 69 73 0a 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f  is.connection to
b670: 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20   the database.  
b680: 54 68 69 73 20 69 73 20 74 68 65 20 73 61 6d 65  This is the same
b690: 20 76 61 6c 75 65 20 74 68 61 74 20 77 6f 75 6c   value that woul
b6a0: 64 20 62 65 20 72 65 74 75 72 6e 65 64 0a 66 72  d be returned.fr
b6b0: 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65  om the <b>sqlite
b6c0: 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
b6d0: 69 64 28 29 3c 2f 62 3e 20 41 50 49 20 66 75 6e  id()</b> API fun
b6e0: 63 74 69 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  ction.</td>.</tr
b6f0: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
b700: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
b710: 72 69 67 68 74 22 3e 6c 65 6e 67 74 68 28 3c 69  right">length(<i
b720: 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >X</i>)</td>.<td
b730: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
b740: 74 75 72 6e 20 74 68 65 20 73 74 72 69 6e 67 20  turn the string 
b750: 6c 65 6e 67 74 68 20 6f 66 20 3c 69 3e 58 3c 2f  length of <i>X</
b760: 69 3e 20 69 6e 20 63 68 61 72 61 63 74 65 72 73  i> in characters
b770: 2e 0a 49 66 20 53 51 4c 69 74 65 20 69 73 20 63  ..If SQLite is c
b780: 6f 6e 66 69 67 75 72 65 64 20 74 6f 20 73 75 70  onfigured to sup
b790: 70 6f 72 74 20 55 54 46 2d 38 2c 20 74 68 65 6e  port UTF-8, then
b7a0: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 55   the number of U
b7b0: 54 46 2d 38 0a 63 68 61 72 61 63 74 65 72 73 20  TF-8.characters 
b7c0: 69 73 20 72 65 74 75 72 6e 65 64 2c 20 6e 6f 74  is returned, not
b7d0: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62   the number of b
b7e0: 79 74 65 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  ytes.</td>.</tr>
b7f0: 0a 0a 3c 74 72 3e 0a 3c 61 20 6e 61 6d 65 3d 22  ..<tr>.<a name="
b800: 6c 69 6b 65 46 75 6e 63 22 3e 3c 2f 61 3e 0a 3c  likeFunc"></a>.<
b810: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
b820: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6c 69  align="right">li
b830: 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59  ke(<i>X</i>,<i>Y
b840: 3c 2f 69 3e 20 5b 2c 3c 69 3e 5a 3c 2f 69 3e 5d  </i> [,<i>Z</i>]
b850: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
b860: 6e 3d 22 74 6f 70 22 3e 0a 54 68 69 73 20 66 75  n="top">.This fu
b870: 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  nction is used t
b880: 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20  o implement the 
b890: 22 3c 62 3e 58 20 4c 49 4b 45 20 59 20 5b 45 53  "<b>X LIKE Y [ES
b8a0: 43 41 50 45 20 5a 5d 3c 2f 62 3e 22 0a 73 79 6e  CAPE Z]</b>".syn
b8b0: 74 61 78 20 6f 66 20 53 51 4c 2e 20 49 66 20 74  tax of SQL. If t
b8c0: 68 65 20 6f 70 74 69 6f 6e 61 6c 20 45 53 43 41  he optional ESCA
b8d0: 50 45 20 63 6c 61 75 73 65 20 69 73 20 70 72 65  PE clause is pre
b8e0: 73 65 6e 74 2c 20 74 68 65 6e 20 74 68 65 0a 75  sent, then the.u
b8f0: 73 65 72 2d 66 75 6e 63 74 69 6f 6e 20 69 73 20  ser-function is 
b900: 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 68 72  invoked with thr
b910: 65 65 20 61 72 67 75 6d 65 6e 74 73 2e 20 4f 74  ee arguments. Ot
b920: 68 65 72 77 69 73 65 2c 20 69 74 20 69 73 0a 69  herwise, it is.i
b930: 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 77 6f 20  nvoked with two 
b940: 61 72 67 75 6d 65 6e 74 73 20 6f 6e 6c 79 2e 20  arguments only. 
b950: 54 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 63 61  The .<a href="ca
b960: 70 69 33 72 65 66 2e 68 74 6d 6c 23 73 71 6c 69  pi3ref.html#sqli
b970: 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74  te3_create_funct
b980: 69 6f 6e 22 3e 0a 73 71 6c 69 74 65 5f 63 72 65  ion">.sqlite_cre
b990: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 3c 2f  ate_function()</
b9a0: 61 3e 20 69 6e 74 65 72 66 61 63 65 20 63 61 6e  a> interface can
b9b0: 20 62 65 20 75 73 65 64 20 74 6f 20 6f 76 65 72   be used to over
b9c0: 72 69 64 65 20 74 68 69 73 0a 66 75 6e 63 74 69  ride this.functi
b9d0: 6f 6e 20 61 6e 64 20 74 68 65 72 65 62 79 20 63  on and thereby c
b9e0: 68 61 6e 67 65 20 74 68 65 20 6f 70 65 72 61 74  hange the operat
b9f0: 69 6f 6e 20 6f 66 20 74 68 65 20 3c 61 0a 68 72  ion of the <a.hr
ba00: 65 66 3d 20 22 23 6c 69 6b 65 22 3e 4c 49 4b 45  ef= "#like">LIKE
ba10: 3c 2f 61 3e 20 6f 70 65 72 61 74 6f 72 2e 20 57  </a> operator. W
ba20: 68 65 6e 20 64 6f 69 6e 67 20 74 68 69 73 2c 20  hen doing this, 
ba30: 69 74 20 6d 61 79 20 62 65 20 69 6d 70 6f 72 74  it may be import
ba40: 61 6e 74 0a 74 6f 20 6f 76 65 72 72 69 64 65 20  ant.to override 
ba50: 62 6f 74 68 20 74 68 65 20 74 77 6f 20 61 6e 64  both the two and
ba60: 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74 20   three argument 
ba70: 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20  versions of the 
ba80: 6c 69 6b 65 28 29 20 0a 66 75 6e 63 74 69 6f 6e  like() .function
ba90: 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 64 69 66  . Otherwise, dif
baa0: 66 65 72 65 6e 74 20 63 6f 64 65 20 6d 61 79 20  ferent code may 
bab0: 62 65 20 63 61 6c 6c 65 64 20 74 6f 20 69 6d 70  be called to imp
bac0: 6c 65 6d 65 6e 74 20 74 68 65 0a 4c 49 4b 45 20  lement the.LIKE 
bad0: 6f 70 65 72 61 74 6f 72 20 64 65 70 65 6e 64 69  operator dependi
bae0: 6e 67 20 6f 6e 20 77 68 65 74 68 65 72 20 6f 72  ng on whether or
baf0: 20 6e 6f 74 20 61 6e 20 45 53 43 41 50 45 20 63   not an ESCAPE c
bb00: 6c 61 75 73 65 20 77 61 73 20 0a 73 70 65 63 69  lause was .speci
bb10: 66 69 65 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  fied.</td>.</tr>
bb20: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
bb30: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
bb40: 69 67 68 74 22 3e 6c 6f 77 65 72 28 3c 69 3e 58  ight">lower(<i>X
bb50: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
bb60: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
bb70: 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 73 74 72  rn a copy of str
bb80: 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 6c  ing <i>X</i> wil
bb90: 6c 20 61 6c 6c 20 63 68 61 72 61 63 74 65 72 73  l all characters
bba0: 0a 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 6c 6f  .converted to lo
bbb0: 77 65 72 20 63 61 73 65 2e 20 20 54 68 65 20 43  wer case.  The C
bbc0: 20 6c 69 62 72 61 72 79 20 3c 62 3e 74 6f 6c 6f   library <b>tolo
bbd0: 77 65 72 28 29 3c 2f 62 3e 20 72 6f 75 74 69 6e  wer()</b> routin
bbe0: 65 20 69 73 20 75 73 65 64 0a 66 6f 72 20 74 68  e is used.for th
bbf0: 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2c 20 77 68  e conversion, wh
bc00: 69 63 68 20 6d 65 61 6e 73 20 74 68 61 74 20 74  ich means that t
bc10: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 69 67  his function mig
bc20: 68 74 20 6e 6f 74 0a 77 6f 72 6b 20 63 6f 72 72  ht not.work corr
bc30: 65 63 74 6c 79 20 6f 6e 20 55 54 46 2d 38 20 63  ectly on UTF-8 c
bc40: 68 61 72 61 63 74 65 72 73 2e 3c 2f 74 64 3e 0a  haracters.</td>.
bc50: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
bc60: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
bc70: 67 6e 3d 22 72 69 67 68 74 22 3e 6d 61 78 28 3c  gn="right">max(<
bc80: 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e  i>X</i>,<i>Y</i>
bc90: 2c 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  ,...)</td>.<td v
bca0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
bcb0: 72 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  rn the argument 
bcc0: 77 69 74 68 20 74 68 65 20 6d 61 78 69 6d 75 6d  with the maximum
bcd0: 20 76 61 6c 75 65 2e 20 20 41 72 67 75 6d 65 6e   value.  Argumen
bce0: 74 73 0a 6d 61 79 20 62 65 20 73 74 72 69 6e 67  ts.may be string
bcf0: 73 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f  s in addition to
bd00: 20 6e 75 6d 62 65 72 73 2e 20 20 54 68 65 20 6d   numbers.  The m
bd10: 61 78 69 6d 75 6d 20 76 61 6c 75 65 20 69 73 20  aximum value is 
bd20: 64 65 74 65 72 6d 69 6e 65 64 0a 62 79 20 74 68  determined.by th
bd30: 65 20 75 73 75 61 6c 20 73 6f 72 74 20 6f 72 64  e usual sort ord
bd40: 65 72 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 3c  er.  Note that <
bd50: 62 3e 6d 61 78 28 29 3c 2f 62 3e 20 69 73 20 61  b>max()</b> is a
bd60: 20 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e   simple function
bd70: 20 77 68 65 6e 0a 69 74 20 68 61 73 20 32 20 6f   when.it has 2 o
bd80: 72 20 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74 73  r more arguments
bd90: 20 62 75 74 20 63 6f 6e 76 65 72 74 73 20 74 6f   but converts to
bda0: 20 61 6e 20 61 67 67 72 65 67 61 74 65 20 66 75   an aggregate fu
bdb0: 6e 63 74 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a  nction if given.
bdc0: 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61 72  only a single ar
bdd0: 67 75 6d 65 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f 74  gument.</td>.</t
bde0: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
bdf0: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
be00: 22 72 69 67 68 74 22 3e 6d 69 6e 28 3c 69 3e 58  "right">min(<i>X
be10: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e  </i>,<i>Y</i>,..
be20: 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  .)</td>.<td vali
be30: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
be40: 74 68 65 20 61 72 67 75 6d 65 6e 74 20 77 69 74  the argument wit
be50: 68 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61  h the minimum va
be60: 6c 75 65 2e 20 20 41 72 67 75 6d 65 6e 74 73 0a  lue.  Arguments.
be70: 6d 61 79 20 62 65 20 73 74 72 69 6e 67 73 20 69  may be strings i
be80: 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 6e 75  n addition to nu
be90: 6d 62 65 72 73 2e 20 20 54 68 65 20 6d 69 6e 69  mbers.  The mini
bea0: 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 64 65 74  mum value is det
beb0: 65 72 6d 69 6e 65 64 0a 62 79 20 74 68 65 20 75  ermined.by the u
bec0: 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 2e  sual sort order.
bed0: 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d    Note that <b>m
bee0: 69 6e 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69  in()</b> is a si
bef0: 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68  mple function wh
bf00: 65 6e 0a 69 74 20 68 61 73 20 32 20 6f 72 20 6d  en.it has 2 or m
bf10: 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75  ore arguments bu
bf20: 74 20 63 6f 6e 76 65 72 74 73 20 74 6f 20 61 6e  t converts to an
bf30: 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
bf40: 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a 6f 6e 6c  ion if given.onl
bf50: 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  y a single argum
bf60: 65 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ent.</td>.</tr>.
bf70: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
bf80: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
bf90: 67 68 74 22 3e 6e 75 6c 6c 69 66 28 3c 69 3e 58  ght">nullif(<i>X
bfa0: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f  </i>,<i>Y</i>)</
bfb0: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
bfc0: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
bfd0: 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69  first argument i
bfe0: 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20  f the arguments 
bff0: 61 72 65 20 64 69 66 66 65 72 65 6e 74 2c 20 0a  are different, .
c000: 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e  otherwise return
c010: 20 4e 55 4c 4c 2e 3c 2f 74 64 3e 0a 3c 2f 74 72   NULL.</td>.</tr
c020: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
c030: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
c040: 72 69 67 68 74 22 3e 71 75 6f 74 65 28 3c 69 3e  right">quote(<i>
c050: 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20  X</i>)</td>.<td 
c060: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 54 68 69  valign="top">Thi
c070: 73 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e  s routine return
c080: 73 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68  s a string which
c090: 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66   is the value of
c0a0: 0a 69 74 73 20 61 72 67 75 6d 65 6e 74 20 73 75  .its argument su
c0b0: 69 74 61 62 6c 65 20 66 6f 72 20 69 6e 63 6c 75  itable for inclu
c0c0: 73 69 6f 6e 20 69 6e 74 6f 20 61 6e 6f 74 68 65  sion into anothe
c0d0: 72 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e  r SQL statement.
c0e0: 0a 53 74 72 69 6e 67 73 20 61 72 65 20 73 75 72  .Strings are sur
c0f0: 72 6f 75 6e 64 65 64 20 62 79 20 73 69 6e 67 6c  rounded by singl
c100: 65 2d 71 75 6f 74 65 73 20 77 69 74 68 20 65 73  e-quotes with es
c110: 63 61 70 65 73 20 6f 6e 20 69 6e 74 65 72 69 6f  capes on interio
c120: 72 20 71 75 6f 74 65 73 0a 61 73 20 6e 65 65 64  r quotes.as need
c130: 65 64 2e 20 20 42 4c 4f 42 73 20 61 72 65 20 65  ed.  BLOBs are e
c140: 6e 63 6f 64 65 64 20 61 73 20 68 65 78 61 64 65  ncoded as hexade
c150: 63 69 6d 61 6c 20 6c 69 74 65 72 61 6c 73 2e 0a  cimal literals..
c160: 54 68 65 20 63 75 72 72 65 6e 74 20 69 6d 70 6c  The current impl
c170: 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 56 41  ementation of VA
c180: 43 55 55 4d 20 75 73 65 73 20 74 68 69 73 20 66  CUUM uses this f
c190: 75 6e 63 74 69 6f 6e 2e 20 20 54 68 65 20 66 75  unction.  The fu
c1a0: 6e 63 74 69 6f 6e 0a 69 73 20 61 6c 73 6f 20 75  nction.is also u
c1b0: 73 65 66 75 6c 20 77 68 65 6e 20 77 72 69 74 69  seful when writi
c1c0: 6e 67 20 74 72 69 67 67 65 72 73 20 74 6f 20 69  ng triggers to i
c1d0: 6d 70 6c 65 6d 65 6e 74 20 75 6e 64 6f 2f 72 65  mplement undo/re
c1e0: 64 6f 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  do functionality
c1f0: 2e 0a 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  ..</td>.</tr>..<
c200: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
c210: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
c220: 74 22 3e 72 61 6e 64 6f 6d 28 2a 29 3c 2f 74 64  t">random(*)</td
c230: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
c240: 70 22 3e 52 65 74 75 72 6e 20 61 20 72 61 6e 64  p">Return a rand
c250: 6f 6d 20 69 6e 74 65 67 65 72 20 62 65 74 77 65  om integer betwe
c260: 65 6e 20 2d 32 31 34 37 34 38 33 36 34 38 20 61  en -2147483648 a
c270: 6e 64 0a 2b 32 31 34 37 34 38 33 36 34 37 2e 3c  nd.+2147483647.<
c280: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
c290: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
c2a0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
c2b0: 72 6f 75 6e 64 28 3c 69 3e 58 3c 2f 69 3e 29 3c  round(<i>X</i>)<
c2c0: 62 72 3e 72 6f 75 6e 64 28 3c 69 3e 58 3c 2f 69  br>round(<i>X</i
c2d0: 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e  >,<i>Y</i>)</td>
c2e0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
c2f0: 22 3e 52 6f 75 6e 64 20 6f 66 66 20 74 68 65 20  ">Round off the 
c300: 6e 75 6d 62 65 72 20 3c 69 3e 58 3c 2f 69 3e 20  number <i>X</i> 
c310: 74 6f 20 3c 69 3e 59 3c 2f 69 3e 20 64 69 67 69  to <i>Y</i> digi
c320: 74 73 20 74 6f 20 74 68 65 0a 72 69 67 68 74 20  ts to the.right 
c330: 6f 66 20 74 68 65 20 64 65 63 69 6d 61 6c 20 70  of the decimal p
c340: 6f 69 6e 74 2e 20 20 49 66 20 74 68 65 20 3c 69  oint.  If the <i
c350: 3e 59 3c 2f 69 3e 20 61 72 67 75 6d 65 6e 74 20  >Y</i> argument 
c360: 69 73 20 6f 6d 69 74 74 65 64 2c 20 30 20 69 73  is omitted, 0 is
c370: 20 0a 61 73 73 75 6d 65 64 2e 3c 2f 74 64 3e 0a   .assumed.</td>.
c380: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
c390: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
c3a0: 67 6e 3d 22 72 69 67 68 74 22 3e 73 6f 75 6e 64  gn="right">sound
c3b0: 65 78 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64  ex(<i>X</i>)</td
c3c0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
c3d0: 70 22 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 73  p">Compute the s
c3e0: 6f 75 6e 64 65 78 20 65 6e 63 6f 64 69 6e 67 20  oundex encoding 
c3f0: 6f 66 20 74 68 65 20 73 74 72 69 6e 67 20 3c 69  of the string <i
c400: 3e 58 3c 2f 69 3e 2e 0a 54 68 65 20 73 74 72 69  >X</i>..The stri
c410: 6e 67 20 22 3f 30 30 30 22 20 69 73 20 72 65 74  ng "?000" is ret
c420: 75 72 6e 65 64 20 69 66 20 74 68 65 20 61 72 67  urned if the arg
c430: 75 6d 65 6e 74 20 69 73 20 4e 55 4c 4c 2e 0a 54  ument is NULL..T
c440: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  his function is 
c450: 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 53 51 4c  omitted from SQL
c460: 69 74 65 20 62 79 20 64 65 66 61 75 6c 74 2e 0a  ite by default..
c470: 49 74 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c  It is only avail
c480: 61 62 6c 65 20 74 68 65 20 2d 44 53 51 4c 49 54  able the -DSQLIT
c490: 45 5f 53 4f 55 4e 44 45 58 3d 31 20 63 6f 6d 70  E_SOUNDEX=1 comp
c4a0: 69 6c 65 72 20 6f 70 74 69 6f 6e 0a 69 73 20 75  iler option.is u
c4b0: 73 65 64 20 77 68 65 6e 20 53 51 4c 69 74 65 20  sed when SQLite 
c4c0: 69 73 20 62 75 69 6c 74 2e 3c 2f 74 64 3e 0a 3c  is built.</td>.<
c4d0: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
c4e0: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
c4f0: 6e 3d 22 72 69 67 68 74 22 3e 73 71 6c 69 74 65  n="right">sqlite
c500: 5f 76 65 72 73 69 6f 6e 28 2a 29 3c 2f 74 64 3e  _version(*)</td>
c510: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
c520: 22 3e 52 65 74 75 72 6e 20 74 68 65 20 76 65 72  ">Return the ver
c530: 73 69 6f 6e 20 73 74 72 69 6e 67 20 66 6f 72 20  sion string for 
c540: 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
c550: 72 79 0a 74 68 61 74 20 69 73 20 72 75 6e 6e 69  ry.that is runni
c560: 6e 67 2e 20 20 45 78 61 6d 70 6c 65 3a 20 20 22  ng.  Example:  "
c570: 32 2e 38 2e 30 22 3c 2f 74 64 3e 0a 3c 2f 74 72  2.8.0"</td>.</tr
c580: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
c590: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
c5a0: 72 69 67 68 74 22 3e 73 75 62 73 74 72 28 3c 69  right">substr(<i
c5b0: 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c  >X</i>,<i>Y</i>,
c5c0: 3c 69 3e 5a 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c  <i>Z</i>)</td>.<
c5d0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
c5e0: 52 65 74 75 72 6e 20 61 20 73 75 62 73 74 72 69  Return a substri
c5f0: 6e 67 20 6f 66 20 69 6e 70 75 74 20 73 74 72 69  ng of input stri
c600: 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 74 68 61 74  ng <i>X</i> that
c610: 20 62 65 67 69 6e 73 0a 77 69 74 68 20 74 68 65   begins.with the
c620: 20 3c 69 3e 59 3c 2f 69 3e 2d 74 68 20 63 68 61   <i>Y</i>-th cha
c630: 72 61 63 74 65 72 20 61 6e 64 20 77 68 69 63 68  racter and which
c640: 20 69 73 20 3c 69 3e 5a 3c 2f 69 3e 20 63 68 61   is <i>Z</i> cha
c650: 72 61 63 74 65 72 73 20 6c 6f 6e 67 2e 0a 54 68  racters long..Th
c660: 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63 68 61 72  e left-most char
c670: 61 63 74 65 72 20 6f 66 20 3c 69 3e 58 3c 2f 69  acter of <i>X</i
c680: 3e 20 69 73 20 6e 75 6d 62 65 72 20 31 2e 20 20  > is number 1.  
c690: 49 66 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 6e  If <i>Y</i> is n
c6a0: 65 67 61 74 69 76 65 0a 74 68 65 20 74 68 65 20  egative.the the 
c6b0: 66 69 72 73 74 20 63 68 61 72 61 63 74 65 72 20  first character 
c6c0: 6f 66 20 74 68 65 20 73 75 62 73 74 72 69 6e 67  of the substring
c6d0: 20 69 73 20 66 6f 75 6e 64 20 62 79 20 63 6f 75   is found by cou
c6e0: 6e 74 69 6e 67 20 66 72 6f 6d 20 74 68 65 0a 72  nting from the.r
c6f0: 69 67 68 74 20 72 61 74 68 65 72 20 74 68 61 6e  ight rather than
c700: 20 74 68 65 20 6c 65 66 74 2e 20 20 49 66 20 53   the left.  If S
c710: 51 4c 69 74 65 20 69 73 20 63 6f 6e 66 69 67 75  QLite is configu
c720: 72 65 64 20 74 6f 20 73 75 70 70 6f 72 74 20 55  red to support U
c730: 54 46 2d 38 2c 0a 74 68 65 6e 20 63 68 61 72 61  TF-8,.then chara
c740: 63 74 65 72 73 20 69 6e 64 69 63 65 73 20 72 65  cters indices re
c750: 66 65 72 20 74 6f 20 61 63 74 75 61 6c 20 55 54  fer to actual UT
c760: 46 2d 38 20 63 68 61 72 61 63 74 65 72 73 2c 20  F-8 characters, 
c770: 6e 6f 74 20 62 79 74 65 73 2e 3c 2f 74 64 3e 0a  not bytes.</td>.
c780: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
c790: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
c7a0: 67 6e 3d 22 72 69 67 68 74 22 3e 74 79 70 65 6f  gn="right">typeo
c7b0: 66 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e  f(<i>X</i>)</td>
c7c0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
c7d0: 22 3e 52 65 74 75 72 6e 20 74 68 65 20 74 79 70  ">Return the typ
c7e0: 65 20 6f 66 20 74 68 65 20 65 78 70 72 65 73 73  e of the express
c7f0: 69 6f 6e 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 54  ion <i>X</i>.  T
c800: 68 65 20 6f 6e 6c 79 20 0a 72 65 74 75 72 6e 20  he only .return 
c810: 76 61 6c 75 65 73 20 61 72 65 20 22 6e 75 6c 6c  values are "null
c820: 22 2c 20 22 69 6e 74 65 67 65 72 22 2c 20 22 72  ", "integer", "r
c830: 65 61 6c 22 2c 20 22 74 65 78 74 22 2c 20 61 6e  eal", "text", an
c840: 64 20 22 62 6c 6f 62 22 2e 0a 53 51 4c 69 74 65  d "blob"..SQLite
c850: 27 73 20 74 79 70 65 20 68 61 6e 64 6c 69 6e 67  's type handling
c860: 20 69 73 20 0a 65 78 70 6c 61 69 6e 65 64 20 69   is .explained i
c870: 6e 20 3c 61 20 68 72 65 66 3d 22 64 61 74 61 74  n <a href="datat
c880: 79 70 65 33 2e 68 74 6d 6c 22 3e 44 61 74 61 74  ype3.html">Datat
c890: 79 70 65 73 20 69 6e 20 53 51 4c 69 74 65 20 56  ypes in SQLite V
c8a0: 65 72 73 69 6f 6e 20 33 3c 2f 61 3e 2e 3c 2f 74  ersion 3</a>.</t
c8b0: 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c  d>.</tr>..<tr>.<
c8c0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
c8d0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 75 70  align="right">up
c8e0: 70 65 72 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74  per(<i>X</i>)</t
c8f0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
c900: 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 63 6f 70  op">Return a cop
c910: 79 20 6f 66 20 69 6e 70 75 74 20 73 74 72 69 6e  y of input strin
c920: 67 20 3c 69 3e 58 3c 2f 69 3e 20 63 6f 6e 76 65  g <i>X</i> conve
c930: 72 74 65 64 20 74 6f 20 61 6c 6c 0a 75 70 70 65  rted to all.uppe
c940: 72 2d 63 61 73 65 20 6c 65 74 74 65 72 73 2e 20  r-case letters. 
c950: 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74   The implementat
c960: 69 6f 6e 20 6f 66 20 74 68 69 73 20 66 75 6e 63  ion of this func
c970: 74 69 6f 6e 20 75 73 65 73 20 74 68 65 20 43 20  tion uses the C 
c980: 6c 69 62 72 61 72 79 0a 72 6f 75 74 69 6e 65 20  library.routine 
c990: 3c 62 3e 74 6f 75 70 70 65 72 28 29 3c 2f 62 3e  <b>toupper()</b>
c9a0: 20 77 68 69 63 68 20 6d 65 61 6e 73 20 69 74 20   which means it 
c9b0: 6d 61 79 20 6e 6f 74 20 77 6f 72 6b 20 63 6f 72  may not work cor
c9c0: 72 65 63 74 6c 79 20 6f 6e 20 0a 55 54 46 2d 38  rectly on .UTF-8
c9d0: 20 73 74 72 69 6e 67 73 2e 3c 2f 74 64 3e 0a 3c   strings.</td>.<
c9e0: 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 3c  /tr>.</table>..<
c9f0: 70 3e 0a 54 68 65 20 61 67 67 72 65 67 61 74 65  p>.The aggregate
ca00: 20 66 75 6e 63 74 69 6f 6e 73 20 73 68 6f 77 6e   functions shown
ca10: 20 62 65 6c 6f 77 20 61 72 65 20 61 76 61 69 6c   below are avail
ca20: 61 62 6c 65 20 62 79 20 64 65 66 61 75 6c 74 2e  able by default.
ca30: 20 20 41 64 64 69 74 69 6f 6e 61 6c 0a 61 67 67    Additional.agg
ca40: 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
ca50: 20 77 72 69 74 74 65 6e 20 69 6e 20 43 20 6d 61   written in C ma
ca60: 79 20 62 65 20 61 64 64 65 64 20 75 73 69 6e 67  y be added using
ca70: 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 63   the .<a href="c
ca80: 61 70 69 33 72 65 66 2e 68 74 6d 6c 23 73 71 6c  api3ref.html#sql
ca90: 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
caa0: 74 69 6f 6e 22 3e 73 71 6c 69 74 65 33 5f 63 72  tion">sqlite3_cr
cab0: 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 3c  eate_function()<
cac0: 2f 61 3e 0a 41 50 49 2e 3c 2f 70 3e 0a 0a 3c 70  /a>.API.</p>..<p
cad0: 3e 0a 49 6e 20 61 6e 79 20 61 67 67 72 65 67 61  >.In any aggrega
cae0: 74 65 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74  te function that
caf0: 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20   takes a single 
cb00: 61 72 67 75 6d 65 6e 74 2c 20 74 68 61 74 20 61  argument, that a
cb10: 72 67 75 6d 65 6e 74 0a 63 61 6e 20 62 65 20 70  rgument.can be p
cb20: 72 65 63 65 65 64 65 64 20 62 79 20 74 68 65 20  receeded by the 
cb30: 6b 65 79 77 6f 72 64 20 44 49 53 54 49 4e 43 54  keyword DISTINCT
cb40: 2e 20 20 49 6e 20 73 75 63 68 20 63 61 73 65 73  .  In such cases
cb50: 2c 20 64 75 70 6c 69 63 61 74 65 0a 65 6c 65 6d  , duplicate.elem
cb60: 65 6e 74 73 20 61 72 65 20 66 69 6c 74 65 72 65  ents are filtere
cb70: 64 20 62 65 66 6f 72 65 20 62 65 69 6e 67 20 70  d before being p
cb80: 61 73 73 65 64 20 69 6e 74 6f 20 74 68 65 20 61  assed into the a
cb90: 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
cba0: 6e 2e 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20  n..For example, 
cbb0: 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 22 63 6f  the function "co
cbc0: 75 6e 74 28 64 69 73 74 69 6e 63 74 20 58 29 22  unt(distinct X)"
cbd0: 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 74 68 65   will return the
cbe0: 20 6e 75 6d 62 65 72 0a 6f 66 20 64 69 73 74 69   number.of disti
cbf0: 6e 63 74 20 76 61 6c 75 65 73 20 6f 66 20 63 6f  nct values of co
cc00: 6c 75 6d 6e 20 58 20 69 6e 73 74 65 61 64 20 6f  lumn X instead o
cc10: 66 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62  f the total numb
cc20: 65 72 20 6f 66 20 6e 6f 6e 2d 6e 75 6c 6c 0a 76  er of non-null.v
cc30: 61 6c 75 65 73 20 69 6e 20 63 6f 6c 75 6d 6e 20  alues in column 
cc40: 58 2e 0a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20  X..</p>..<table 
cc50: 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64  border=0 cellpad
cc60: 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74  ding=10>.<tr>.<t
cc70: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
cc80: 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64  lign="right" wid
cc90: 74 68 3d 31 32 30 3e 61 76 67 28 3c 69 3e 58 3c  th=120>avg(<i>X<
cca0: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
ccb0: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
ccc0: 6e 20 74 68 65 20 61 76 65 72 61 67 65 20 76 61  n the average va
ccd0: 6c 75 65 20 6f 66 20 61 6c 6c 20 6e 6f 6e 2d 4e  lue of all non-N
cce0: 55 4c 4c 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 74  ULL <i>X</i> wit
ccf0: 68 69 6e 20 61 0a 67 72 6f 75 70 2e 20 20 4e 6f  hin a.group.  No
cd00: 6e 2d 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 73  n-numeric values
cd10: 20 61 72 65 20 69 6e 74 65 72 70 72 65 74 65 64   are interpreted
cd20: 20 61 73 20 30 2e 3c 2f 74 64 3e 0a 3c 2f 74 72   as 0.</td>.</tr
cd30: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
cd40: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
cd50: 72 69 67 68 74 22 3e 63 6f 75 6e 74 28 3c 69 3e  right">count(<i>
cd60: 58 3c 2f 69 3e 29 3c 62 72 3e 63 6f 75 6e 74 28  X</i>)<br>count(
cd70: 2a 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  *)</td>.<td vali
cd80: 67 6e 3d 22 74 6f 70 22 3e 54 68 65 20 66 69 72  gn="top">The fir
cd90: 73 74 20 66 6f 72 6d 20 72 65 74 75 72 6e 20 61  st form return a
cda0: 20 63 6f 75 6e 74 20 6f 66 20 74 68 65 20 6e 75   count of the nu
cdb0: 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 0a 74 68  mber of times.th
cdc0: 61 74 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 6e  at <i>X</i> is n
cdd0: 6f 74 20 4e 55 4c 4c 20 69 6e 20 61 20 67 72 6f  ot NULL in a gro
cde0: 75 70 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20  up.  The second 
cdf0: 66 6f 72 6d 20 28 77 69 74 68 20 6e 6f 20 61 72  form (with no ar
ce00: 67 75 6d 65 6e 74 29 0a 72 65 74 75 72 6e 73 20  gument).returns 
ce10: 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72  the total number
ce20: 20 6f 66 20 72 6f 77 73 20 69 6e 20 74 68 65 20   of rows in the 
ce30: 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  group.</td>.</tr
ce40: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
ce50: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
ce60: 72 69 67 68 74 22 3e 6d 61 78 28 3c 69 3e 58 3c  right">max(<i>X<
ce70: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
ce80: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
ce90: 6e 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61  n the maximum va
cea0: 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65  lue of all value
ceb0: 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a  s in the group..
cec0: 54 68 65 20 75 73 75 61 6c 20 73 6f 72 74 20 6f  The usual sort o
ced0: 72 64 65 72 20 69 73 20 75 73 65 64 20 74 6f 20  rder is used to 
cee0: 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d 61  determine the ma
cef0: 78 69 6d 75 6d 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  ximum.</td>.</tr
cf00: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
cf10: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
cf20: 72 69 67 68 74 22 3e 6d 69 6e 28 3c 69 3e 58 3c  right">min(<i>X<
cf30: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
cf40: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
cf50: 6e 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 6e 6f  n the minimum no
cf60: 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 20 6f 66 20  n-NULL value of 
cf70: 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68  all values in th
cf80: 65 20 67 72 6f 75 70 2e 0a 54 68 65 20 75 73 75  e group..The usu
cf90: 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 20 69 73  al sort order is
cfa0: 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69   used to determi
cfb0: 6e 65 20 74 68 65 20 6d 69 6e 69 6d 75 6d 2e 20  ne the minimum. 
cfc0: 20 4e 55 4c 4c 20 69 73 20 6f 6e 6c 79 20 72 65   NULL is only re
cfd0: 74 75 72 6e 65 64 0a 69 66 20 61 6c 6c 20 76 61  turned.if all va
cfe0: 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75  lues in the grou
cff0: 70 20 61 72 65 20 4e 55 4c 4c 2e 3c 2f 74 64 3e  p are NULL.</td>
d000: 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64  .</tr>..<tr>.<td
d010: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
d020: 69 67 6e 3d 22 72 69 67 68 74 22 3e 73 75 6d 28  ign="right">sum(
d030: 3c 69 3e 58 3c 2f 69 3e 29 3c 62 72 3e 74 6f 74  <i>X</i>)<br>tot
d040: 61 6c 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64  al(<i>X</i>)</td
d050: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
d060: 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 6e 75  p">Return the nu
d070: 6d 65 72 69 63 20 73 75 6d 20 6f 66 20 61 6c 6c  meric sum of all
d080: 20 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 73 20   numeric values 
d090: 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 20 20  in the group..  
d0a0: 20 49 66 20 74 68 65 72 65 20 61 72 65 20 6e 6f   If there are no
d0b0: 20 69 6e 70 75 74 20 72 6f 77 73 20 6f 72 20 61   input rows or a
d0c0: 6c 6c 20 76 61 6c 75 65 73 20 61 72 65 20 4e 55  ll values are NU
d0d0: 4c 4c 2c 20 74 68 65 6e 20 73 75 6d 28 29 20 72  LL, then sum() r
d0e0: 65 74 75 72 6e 73 0a 20 20 20 4e 55 4c 4c 20 62  eturns.   NULL b
d0f0: 75 74 20 74 6f 74 61 6c 28 29 20 72 65 74 75 72  ut total() retur
d100: 6e 73 20 7a 65 72 6f 2e 0a 20 20 20 4e 55 4c 4c  ns zero..   NULL
d110: 20 69 73 20 6e 6f 74 20 61 20 68 65 6c 70 66 75   is not a helpfu
d120: 6c 20 72 65 73 75 6c 74 20 69 6e 20 74 68 61 74  l result in that
d130: 20 63 61 73 65 20 28 74 68 65 20 63 6f 72 72 65   case (the corre
d140: 63 74 20 61 6e 73 77 65 72 20 73 68 6f 75 6c 64  ct answer should
d150: 20 62 65 0a 20 20 20 7a 65 72 6f 29 20 62 75 74   be.   zero) but
d160: 20 74 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72   the SQL standar
d170: 64 20 72 65 71 75 69 72 65 73 20 74 68 61 74 20  d requires that 
d180: 62 65 68 61 76 69 6f 72 20 66 72 6f 6d 20 73 75  behavior from su
d190: 6d 28 29 20 61 6e 64 20 74 68 61 74 20 69 73 20  m() and that is 
d1a0: 68 6f 77 20 0a 20 20 20 6d 6f 73 74 20 6f 74 68  how .   most oth
d1b0: 65 72 20 53 51 4c 20 64 61 74 61 62 61 73 65 20  er SQL database 
d1c0: 65 6e 67 69 6e 65 73 20 69 6d 70 6c 65 6d 65 6e  engines implemen
d1d0: 74 20 73 75 6d 28 29 20 73 6f 20 53 51 4c 69 74  t sum() so SQLit
d1e0: 65 20 64 6f 65 73 20 69 74 20 74 68 61 74 20 77  e does it that w
d1f0: 61 79 0a 20 20 20 69 6e 20 6f 72 64 65 72 20 74  ay.   in order t
d200: 6f 20 62 65 20 63 6f 6d 70 61 74 69 62 6c 65 2e  o be compatible.
d210: 20 20 20 54 68 65 20 6e 6f 6e 2d 73 74 61 6e 64     The non-stand
d220: 61 72 64 20 74 6f 74 61 6c 28 29 20 66 75 6e 63  ard total() func
d230: 74 69 6f 6e 20 69 73 20 70 72 6f 76 69 64 65 64  tion is provided
d240: 0a 20 20 20 61 73 20 61 20 63 6f 6e 76 65 6e 69  .   as a conveni
d250: 65 6e 74 20 77 61 79 0a 20 20 20 74 6f 20 77 6f  ent way.   to wo
d260: 72 6b 20 61 72 6f 75 6e 64 20 74 68 69 73 20 64  rk around this d
d270: 65 73 69 67 6e 20 70 72 6f 62 6c 65 6d 20 69 6e  esign problem in
d280: 20 74 68 65 20 53 51 4c 20 6c 61 6e 67 75 61 67   the SQL languag
d290: 65 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f  e.</td>.</tr>.</
d2a0: 74 61 62 6c 65 3e 0a 7d 0a 0a 0a 53 65 63 74 69  table>.}...Secti
d2b0: 6f 6e 20 49 4e 53 45 52 54 20 69 6e 73 65 72 74  on INSERT insert
d2c0: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
d2d0: 61 74 65 6d 65 6e 74 7d 20 7b 0a 49 4e 53 45 52  atement} {.INSER
d2e0: 54 20 5b 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d  T [OR <conflict-
d2f0: 61 6c 67 6f 72 69 74 68 6d 3e 5d 20 49 4e 54 4f  algorithm>] INTO
d300: 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65   [<database-name
d310: 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65  > .] <table-name
d320: 3e 20 5b 28 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74  > [(<column-list
d330: 3e 29 5d 20 56 41 4c 55 45 53 28 3c 76 61 6c 75  >)] VALUES(<valu
d340: 65 2d 6c 69 73 74 3e 29 20 7c 0a 49 4e 53 45 52  e-list>) |.INSER
d350: 54 20 5b 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d  T [OR <conflict-
d360: 61 6c 67 6f 72 69 74 68 6d 3e 5d 20 49 4e 54 4f  algorithm>] INTO
d370: 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65   [<database-name
d380: 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65  > .] <table-name
d390: 3e 20 5b 28 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74  > [(<column-list
d3a0: 3e 29 5d 20 3c 73 65 6c 65 63 74 2d 73 74 61 74  >)] <select-stat
d3b0: 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b  ement>.}..puts {
d3c0: 0a 3c 70 3e 54 68 65 20 49 4e 53 45 52 54 20 73  .<p>The INSERT s
d3d0: 74 61 74 65 6d 65 6e 74 20 63 6f 6d 65 73 20 69  tatement comes i
d3e0: 6e 20 74 77 6f 20 62 61 73 69 63 20 66 6f 72 6d  n two basic form
d3f0: 73 2e 20 20 54 68 65 20 66 69 72 73 74 20 66 6f  s.  The first fo
d400: 72 6d 0a 28 77 69 74 68 20 74 68 65 20 22 56 41  rm.(with the "VA
d410: 4c 55 45 53 22 20 6b 65 79 77 6f 72 64 29 20 63  LUES" keyword) c
d420: 72 65 61 74 65 73 20 61 20 73 69 6e 67 6c 65 20  reates a single 
d430: 6e 65 77 20 72 6f 77 20 69 6e 20 61 6e 20 65 78  new row in an ex
d440: 69 73 74 69 6e 67 20 74 61 62 6c 65 2e 0a 49 66  isting table..If
d450: 20 6e 6f 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 20   no column-list 
d460: 69 73 20 73 70 65 63 69 66 69 65 64 20 74 68 65  is specified the
d470: 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  n the number of 
d480: 76 61 6c 75 65 73 20 6d 75 73 74 0a 62 65 20 74  values must.be t
d490: 68 65 20 73 61 6d 65 20 61 73 20 74 68 65 20 6e  he same as the n
d4a0: 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
d4b0: 20 69 6e 20 74 68 65 20 74 61 62 6c 65 2e 20 20   in the table.  
d4c0: 49 66 20 61 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74  If a column-list
d4d0: 0a 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74  .is specified, t
d4e0: 68 65 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  hen the number o
d4f0: 66 20 76 61 6c 75 65 73 20 6d 75 73 74 20 6d 61  f values must ma
d500: 74 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  tch the number o
d510: 66 0a 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75  f.specified colu
d520: 6d 6e 73 2e 20 20 43 6f 6c 75 6d 6e 73 20 6f 66  mns.  Columns of
d530: 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74 20   the table that 
d540: 64 6f 20 6e 6f 74 20 61 70 70 65 61 72 20 69 6e  do not appear in
d550: 20 74 68 65 0a 63 6f 6c 75 6d 6e 20 6c 69 73 74   the.column list
d560: 20 61 72 65 20 66 69 6c 6c 65 64 20 77 69 74 68   are filled with
d570: 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   the default val
d580: 75 65 2c 20 6f 72 20 77 69 74 68 20 4e 55 4c 4c  ue, or with NULL
d590: 20 69 66 20 6e 6f 74 0a 64 65 66 61 75 6c 74 20   if not.default 
d5a0: 76 61 6c 75 65 20 69 73 20 73 70 65 63 69 66 69  value is specifi
d5b0: 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ed..</p>..<p>The
d5c0: 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20 6f 66 20   second form of 
d5d0: 74 68 65 20 49 4e 53 45 52 54 20 73 74 61 74 65  the INSERT state
d5e0: 6d 65 6e 74 20 74 61 6b 65 73 20 69 74 20 64 61  ment takes it da
d5f0: 74 61 20 66 72 6f 6d 20 61 0a 53 45 4c 45 43 54  ta from a.SELECT
d600: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65   statement.  The
d610: 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
d620: 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74  ns in the result
d630: 20 6f 66 20 74 68 65 0a 53 45 4c 45 43 54 20 6d   of the.SELECT m
d640: 75 73 74 20 65 78 61 63 74 6c 79 20 6d 61 74 63  ust exactly matc
d650: 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  h the number of 
d660: 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 74  columns in the t
d670: 61 62 6c 65 20 69 66 0a 6e 6f 20 63 6f 6c 75 6d  able if.no colum
d680: 6e 20 6c 69 73 74 20 69 73 20 73 70 65 63 69 66  n list is specif
d690: 69 65 64 2c 20 6f 72 20 69 74 20 6d 75 73 74 20  ied, or it must 
d6a0: 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65 72  match the number
d6b0: 20 6f 66 20 63 6f 6c 75 6d 6e 73 0a 6e 61 6d 65   of columns.name
d6c0: 20 69 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6c   in the column l
d6d0: 69 73 74 2e 20 20 41 20 6e 65 77 20 65 6e 74 72  ist.  A new entr
d6e0: 79 20 69 73 20 6d 61 64 65 20 69 6e 20 74 68 65  y is made in the
d6f0: 20 74 61 62 6c 65 0a 66 6f 72 20 65 76 65 72 79   table.for every
d700: 20 72 6f 77 20 6f 66 20 74 68 65 20 53 45 4c 45   row of the SELE
d710: 43 54 20 72 65 73 75 6c 74 2e 20 20 54 68 65 20  CT result.  The 
d720: 53 45 4c 45 43 54 20 6d 61 79 20 62 65 20 73 69  SELECT may be si
d730: 6d 70 6c 65 0a 6f 72 20 63 6f 6d 70 6f 75 6e 64  mple.or compound
d740: 2e 20 20 49 66 20 74 68 65 20 53 45 4c 45 43 54  .  If the SELECT
d750: 20 73 74 61 74 65 6d 65 6e 74 20 68 61 73 20 61   statement has a
d760: 6e 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73  n ORDER BY claus
d770: 65 2c 0a 74 68 65 20 4f 52 44 45 52 20 42 59 20  e,.the ORDER BY 
d780: 69 73 20 69 67 6e 6f 72 65 64 2e 3c 2f 70 3e 0a  is ignored.</p>.
d790: 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c  .<p>The optional
d7a0: 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65   conflict-clause
d7b0: 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63   allows the spec
d7c0: 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20  ification of an 
d7d0: 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73  alternative.cons
d7e0: 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20  traint conflict 
d7f0: 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
d800: 69 74 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69  ithm to use duri
d810: 6e 67 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d  ng this one comm
d820: 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63  and..See the sec
d830: 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68  tion titled.<a h
d840: 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e  ref="#conflict">
d850: 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20  ON CONFLICT</a> 
d860: 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69  for additional i
d870: 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 46 6f 72 20  nformation..For 
d880: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69  compatibility wi
d890: 74 68 20 4d 79 53 51 4c 2c 20 74 68 65 20 70 61  th MySQL, the pa
d8a0: 72 73 65 72 20 61 6c 6c 6f 77 73 20 74 68 65 20  rser allows the 
d8b0: 75 73 65 20 6f 66 20 74 68 65 0a 73 69 6e 67 6c  use of the.singl
d8c0: 65 20 6b 65 79 77 6f 72 64 20 3c 61 20 68 72 65  e keyword <a hre
d8d0: 66 3d 22 23 72 65 70 6c 61 63 65 22 3e 52 45 50  f="#replace">REP
d8e0: 4c 41 43 45 3c 2f 61 3e 20 61 73 20 61 6e 20 61  LACE</a> as an a
d8f0: 6c 69 61 73 20 66 6f 72 20 22 49 4e 53 45 52 54  lias for "INSERT
d900: 20 4f 52 20 52 45 50 4c 41 43 45 22 2e 0a 3c 2f   OR REPLACE"..</
d910: 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b  p>.}...Section {
d920: 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75  ON CONFLICT clau
d930: 73 65 7d 20 63 6f 6e 66 6c 69 63 74 0a 0a 53 79  se} conflict..Sy
d940: 6e 74 61 78 20 7b 63 6f 6e 66 6c 69 63 74 2d 63  ntax {conflict-c
d950: 6c 61 75 73 65 7d 20 7b 0a 4f 4e 20 43 4f 4e 46  lause} {.ON CONF
d960: 4c 49 43 54 20 3c 63 6f 6e 66 6c 69 63 74 2d 61  LICT <conflict-a
d970: 6c 67 6f 72 69 74 68 6d 3e 0a 7d 20 7b 63 6f 6e  lgorithm>.} {con
d980: 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 7d  flict-algorithm}
d990: 20 7b 0a 52 4f 4c 4c 42 41 43 4b 20 7c 20 41 42   {.ROLLBACK | AB
d9a0: 4f 52 54 20 7c 20 46 41 49 4c 20 7c 20 49 47 4e  ORT | FAIL | IGN
d9b0: 4f 52 45 20 7c 20 52 45 50 4c 41 43 45 0a 7d 0a  ORE | REPLACE.}.
d9c0: 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 4f  .puts {.<p>The O
d9d0: 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73  N CONFLICT claus
d9e0: 65 20 69 73 20 6e 6f 74 20 61 20 73 65 70 61 72  e is not a separ
d9f0: 61 74 65 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e  ate SQL command.
da00: 20 20 49 74 20 69 73 20 61 0a 6e 6f 6e 2d 73 74    It is a.non-st
da10: 61 6e 64 61 72 64 20 63 6c 61 75 73 65 20 74 68  andard clause th
da20: 61 74 20 63 61 6e 20 61 70 70 65 61 72 20 69 6e  at can appear in
da30: 20 6d 61 6e 79 20 6f 74 68 65 72 20 53 51 4c 20   many other SQL 
da40: 63 6f 6d 6d 61 6e 64 73 2e 0a 49 74 20 69 73 20  commands..It is 
da50: 67 69 76 65 6e 20 69 74 73 20 6f 77 6e 20 73 65  given its own se
da60: 63 74 69 6f 6e 20 69 6e 20 74 68 69 73 20 64 6f  ction in this do
da70: 63 75 6d 65 6e 74 20 62 65 63 61 75 73 65 20 69  cument because i
da80: 74 20 69 73 20 6e 6f 74 0a 70 61 72 74 20 6f 66  t is not.part of
da90: 20 73 74 61 6e 64 61 72 64 20 53 51 4c 20 61 6e   standard SQL an
daa0: 64 20 74 68 65 72 65 66 6f 72 65 20 6d 69 67 68  d therefore migh
dab0: 74 20 6e 6f 74 20 62 65 20 66 61 6d 69 6c 69 61  t not be familia
dac0: 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73  r.</p>..<p>The s
dad0: 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20 4f 4e  yntax for the ON
dae0: 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65   CONFLICT clause
daf0: 20 69 73 20 61 73 20 73 68 6f 77 6e 20 61 62 6f   is as shown abo
db00: 76 65 20 66 6f 72 0a 74 68 65 20 43 52 45 41 54  ve for.the CREAT
db10: 45 20 54 41 42 4c 45 20 61 6e 64 20 43 52 45 41  E TABLE and CREA
db20: 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e 64  TE INDEX command
db30: 73 2e 20 20 46 6f 72 20 74 68 65 20 43 4f 50 59  s.  For the COPY
db40: 2c 20 49 4e 53 45 52 54 2c 20 61 6e 64 0a 55 50  , INSERT, and.UP
db50: 44 41 54 45 20 63 6f 6d 6d 61 6e 64 73 2c 20 74  DATE commands, t
db60: 68 65 20 6b 65 79 77 6f 72 64 73 20 22 4f 4e 20  he keywords "ON 
db70: 43 4f 4e 46 4c 49 43 54 22 20 61 72 65 20 72 65  CONFLICT" are re
db80: 70 6c 61 63 65 64 20 62 79 20 22 4f 52 22 2c 20  placed by "OR", 
db90: 74 6f 20 6d 61 6b 65 0a 74 68 65 20 73 79 6e 74  to make.the synt
dba0: 61 78 20 73 65 65 6d 20 6d 6f 72 65 20 6e 61 74  ax seem more nat
dbb0: 75 72 61 6c 2e 20 20 42 75 74 20 74 68 65 20 6d  ural.  But the m
dbc0: 65 61 6e 69 6e 67 20 6f 66 20 74 68 65 20 63 6c  eaning of the cl
dbd0: 61 75 73 65 20 69 73 20 74 68 65 20 73 61 6d 65  ause is the same
dbe0: 0a 65 69 74 68 65 72 20 77 61 79 2e 3c 2f 70 3e  .either way.</p>
dbf0: 0a 0a 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46  ..<p>The ON CONF
dc00: 4c 49 43 54 20 63 6c 61 75 73 65 20 73 70 65 63  LICT clause spec
dc10: 69 66 69 65 73 20 61 6e 20 61 6c 67 6f 72 69 74  ifies an algorit
dc20: 68 6d 20 75 73 65 64 20 74 6f 20 72 65 73 6f 6c  hm used to resol
dc30: 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  ve.constraint co
dc40: 6e 66 6c 69 63 74 73 2e 20 20 54 68 65 72 65 20  nflicts.  There 
dc50: 61 72 65 20 66 69 76 65 20 63 68 6f 69 63 65 73  are five choices
dc60: 3a 20 52 4f 4c 4c 42 41 43 4b 2c 20 41 42 4f 52  : ROLLBACK, ABOR
dc70: 54 2c 0a 46 41 49 4c 2c 20 49 47 4e 4f 52 45 2c  T,.FAIL, IGNORE,
dc80: 20 61 6e 64 20 52 45 50 4c 41 43 45 2e 20 54 68   and REPLACE. Th
dc90: 65 20 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69  e default algori
dca0: 74 68 6d 20 69 73 20 41 42 4f 52 54 2e 20 20 54  thm is ABORT.  T
dcb0: 68 69 73 0a 69 73 20 77 68 61 74 20 74 68 65 79  his.is what they
dcc0: 20 6d 65 61 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c 3e   mean:</p>..<dl>
dcd0: 0a 3c 64 74 3e 3c 62 3e 52 4f 4c 4c 42 41 43 4b  .<dt><b>ROLLBACK
dce0: 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70  </b></dt>.<dd><p
dcf0: 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69  >When a constrai
dd00: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63  nt violation occ
dd10: 75 72 73 2c 20 61 6e 20 69 6d 6d 65 64 69 61 74  urs, an immediat
dd20: 65 20 52 4f 4c 4c 42 41 43 4b 0a 6f 63 63 75 72  e ROLLBACK.occur
dd30: 73 2c 20 74 68 75 73 20 65 6e 64 69 6e 67 20 74  s, thus ending t
dd40: 68 65 20 63 75 72 72 65 6e 74 20 74 72 61 6e 73  he current trans
dd50: 61 63 74 69 6f 6e 2c 20 61 6e 64 20 74 68 65 20  action, and the 
dd60: 63 6f 6d 6d 61 6e 64 20 61 62 6f 72 74 73 0a 77  command aborts.w
dd70: 69 74 68 20 61 20 72 65 74 75 72 6e 20 63 6f 64  ith a return cod
dd80: 65 20 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53  e of SQLITE_CONS
dd90: 54 52 41 49 4e 54 2e 20 20 49 66 20 6e 6f 20 74  TRAINT.  If no t
dda0: 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 0a 61 63  ransaction is.ac
ddb0: 74 69 76 65 20 28 6f 74 68 65 72 20 74 68 61 6e  tive (other than
ddc0: 20 74 68 65 20 69 6d 70 6c 69 65 64 20 74 72 61   the implied tra
ddd0: 6e 73 61 63 74 69 6f 6e 20 74 68 61 74 20 69 73  nsaction that is
dde0: 20 63 72 65 61 74 65 64 20 6f 6e 20 65 76 65 72   created on ever
ddf0: 79 0a 63 6f 6d 6d 61 6e 64 29 20 74 68 65 6e 20  y.command) then 
de00: 74 68 69 73 20 61 6c 67 6f 72 69 74 68 6d 20 77  this algorithm w
de10: 6f 72 6b 73 20 74 68 65 20 73 61 6d 65 20 61 73  orks the same as
de20: 20 41 42 4f 52 54 2e 3c 2f 70 3e 3c 2f 64 64 3e   ABORT.</p></dd>
de30: 0a 0a 3c 64 74 3e 3c 62 3e 41 42 4f 52 54 3c 2f  ..<dt><b>ABORT</
de40: 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57  b></dt>.<dd><p>W
de50: 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74  hen a constraint
de60: 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
de70: 73 2c 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 62  s, the command b
de80: 61 63 6b 73 20 6f 75 74 0a 61 6e 79 20 70 72 69  acks out.any pri
de90: 6f 72 20 63 68 61 6e 67 65 73 20 69 74 20 6d 69  or changes it mi
dea0: 67 68 74 20 68 61 76 65 20 6d 61 64 65 20 61 6e  ght have made an
deb0: 64 20 61 62 6f 72 74 73 20 77 69 74 68 20 61 20  d aborts with a 
dec0: 72 65 74 75 72 6e 20 63 6f 64 65 0a 6f 66 20 53  return code.of S
ded0: 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54  QLITE_CONSTRAINT
dee0: 2e 20 20 42 75 74 20 6e 6f 20 52 4f 4c 4c 42 41  .  But no ROLLBA
def0: 43 4b 20 69 73 20 65 78 65 63 75 74 65 64 20 73  CK is executed s
df00: 6f 20 63 68 61 6e 67 65 73 0a 66 72 6f 6d 20 70  o changes.from p
df10: 72 69 6f 72 20 63 6f 6d 6d 61 6e 64 73 20 77 69  rior commands wi
df20: 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20 74 72  thin the same tr
df30: 61 6e 73 61 63 74 69 6f 6e 0a 61 72 65 20 70 72  ansaction.are pr
df40: 65 73 65 72 76 65 64 2e 20 20 54 68 69 73 20 69  eserved.  This i
df50: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 65  s the default be
df60: 68 61 76 69 6f 72 2e 3c 2f 70 3e 3c 2f 64 64 3e  havior.</p></dd>
df70: 0a 0a 3c 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f 62  ..<dt><b>FAIL</b
df80: 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68  ></dt>.<dd><p>Wh
df90: 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20  en a constraint 
dfa0: 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
dfb0: 2c 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62  , the command ab
dfc0: 6f 72 74 73 20 77 69 74 68 20 61 0a 72 65 74 75  orts with a.retu
dfd0: 72 6e 20 63 6f 64 65 20 53 51 4c 49 54 45 5f 43  rn code SQLITE_C
dfe0: 4f 4e 53 54 52 41 49 4e 54 2e 20 20 42 75 74 20  ONSTRAINT.  But 
dff0: 61 6e 79 20 63 68 61 6e 67 65 73 20 74 6f 20 74  any changes to t
e000: 68 65 20 64 61 74 61 62 61 73 65 20 74 68 61 74  he database that
e010: 0a 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6d 61 64  .the command mad
e020: 65 20 70 72 69 6f 72 20 74 6f 20 65 6e 63 6f 75  e prior to encou
e030: 6e 74 65 72 69 6e 67 20 74 68 65 20 63 6f 6e 73  ntering the cons
e040: 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
e050: 0a 61 72 65 20 70 72 65 73 65 72 76 65 64 20 61  .are preserved a
e060: 6e 64 20 61 72 65 20 6e 6f 74 20 62 61 63 6b 65  nd are not backe
e070: 64 20 6f 75 74 2e 20 20 46 6f 72 20 65 78 61 6d  d out.  For exam
e080: 70 6c 65 2c 20 69 66 20 61 6e 20 55 50 44 41 54  ple, if an UPDAT
e090: 45 0a 73 74 61 74 65 6d 65 6e 74 20 65 6e 63 6f  E.statement enco
e0a0: 75 6e 74 65 72 65 64 20 61 20 63 6f 6e 73 74 72  untered a constr
e0b0: 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f  aint violation o
e0c0: 6e 20 74 68 65 20 31 30 30 74 68 20 72 6f 77 20  n the 100th row 
e0d0: 74 68 61 74 0a 69 74 20 61 74 74 65 6d 70 74 73  that.it attempts
e0e0: 20 74 6f 20 75 70 64 61 74 65 2c 20 74 68 65 6e   to update, then
e0f0: 20 74 68 65 20 66 69 72 73 74 20 39 39 20 72 6f   the first 99 ro
e100: 77 20 63 68 61 6e 67 65 73 20 61 72 65 20 70 72  w changes are pr
e110: 65 73 65 72 76 65 64 0a 62 75 74 20 63 68 61 6e  eserved.but chan
e120: 67 65 73 20 74 6f 20 72 6f 77 73 20 31 30 30 20  ges to rows 100 
e130: 61 6e 64 20 62 65 79 6f 6e 64 20 6e 65 76 65 72  and beyond never
e140: 20 6f 63 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64 3e   occur.</p></dd>
e150: 0a 0a 3c 64 74 3e 3c 62 3e 49 47 4e 4f 52 45 3c  ..<dt><b>IGNORE<
e160: 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e  /b></dt>.<dd><p>
e170: 57 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e  When a constrain
e180: 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75  t violation occu
e190: 72 73 2c 20 74 68 65 20 6f 6e 65 20 72 6f 77 20  rs, the one row 
e1a0: 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 0a 74 68  that contains.th
e1b0: 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  e constraint vio
e1c0: 6c 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 69 6e  lation is not in
e1d0: 73 65 72 74 65 64 20 6f 72 20 63 68 61 6e 67 65  serted or change
e1e0: 64 2e 20 20 42 75 74 20 74 68 65 20 63 6f 6d 6d  d.  But the comm
e1f0: 61 6e 64 0a 63 6f 6e 74 69 6e 75 65 73 20 65 78  and.continues ex
e200: 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79  ecuting normally
e210: 2e 20 20 4f 74 68 65 72 20 72 6f 77 73 20 62 65  .  Other rows be
e220: 66 6f 72 65 20 61 6e 64 20 61 66 74 65 72 20 74  fore and after t
e230: 68 65 20 72 6f 77 20 74 68 61 74 0a 63 6f 6e 74  he row that.cont
e240: 61 69 6e 65 64 20 74 68 65 20 63 6f 6e 73 74 72  ained the constr
e250: 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 63  aint violation c
e260: 6f 6e 74 69 6e 75 65 20 74 6f 20 62 65 20 69 6e  ontinue to be in
e270: 73 65 72 74 65 64 20 6f 72 20 75 70 64 61 74 65  serted or update
e280: 64 0a 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20  d.normally.  No 
e290: 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65  error is returne
e2a0: 64 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74  d.</p></dd>..<dt
e2b0: 3e 3c 62 3e 52 45 50 4c 41 43 45 3c 2f 62 3e 3c  ><b>REPLACE</b><
e2c0: 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e  /dt>.<dd><p>When
e2d0: 20 61 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72   a UNIQUE constr
e2e0: 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f  aint violation o
e2f0: 63 63 75 72 73 2c 20 74 68 65 20 70 72 65 2d 65  ccurs, the pre-e
e300: 78 69 73 74 69 6e 67 20 72 6f 77 73 0a 74 68 61  xisting rows.tha
e310: 74 20 61 72 65 20 63 61 75 73 69 6e 67 20 74 68  t are causing th
e320: 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  e constraint vio
e330: 6c 61 74 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76  lation are remov
e340: 65 64 20 70 72 69 6f 72 20 74 6f 20 69 6e 73 65  ed prior to inse
e350: 72 74 69 6e 67 0a 6f 72 20 75 70 64 61 74 69 6e  rting.or updatin
e360: 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f  g the current ro
e370: 77 2e 20 20 54 68 75 73 20 74 68 65 20 69 6e 73  w.  Thus the ins
e380: 65 72 74 20 6f 72 20 75 70 64 61 74 65 20 61 6c  ert or update al
e390: 77 61 79 73 20 6f 63 63 75 72 73 2e 0a 54 68 65  ways occurs..The
e3a0: 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 74 69 6e 75   command continu
e3b0: 65 73 20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72  es executing nor
e3c0: 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65 72 72 6f 72  mally.  No error
e3d0: 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 49 66   is returned..If
e3e0: 20 61 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73   a NOT NULL cons
e3f0: 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
e400: 20 6f 63 63 75 72 73 2c 20 74 68 65 20 4e 55 4c   occurs, the NUL
e410: 4c 20 76 61 6c 75 65 20 69 73 20 72 65 70 6c 61  L value is repla
e420: 63 65 64 0a 62 79 20 74 68 65 20 64 65 66 61 75  ced.by the defau
e430: 6c 74 20 76 61 6c 75 65 20 66 6f 72 20 74 68 61  lt value for tha
e440: 74 20 63 6f 6c 75 6d 6e 2e 20 20 49 66 20 74 68  t column.  If th
e450: 65 20 63 6f 6c 75 6d 6e 20 68 61 73 20 6e 6f 20  e column has no 
e460: 64 65 66 61 75 6c 74 0a 76 61 6c 75 65 2c 20 74  default.value, t
e470: 68 65 6e 20 74 68 65 20 41 42 4f 52 54 20 61 6c  hen the ABORT al
e480: 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e  gorithm is used.
e490: 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 74 68  </p>..<p>When th
e4a0: 69 73 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  is conflict reso
e4b0: 6c 75 74 69 6f 6e 20 73 74 72 61 74 65 67 79 20  lution strategy 
e4c0: 64 65 6c 65 74 65 73 20 72 6f 77 73 20 69 6e 20  deletes rows in 
e4d0: 6f 72 64 65 72 20 74 6f 0a 73 61 74 69 73 66 79  order to.satisfy
e4e0: 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 2c 20 69   a constraint, i
e4f0: 74 20 64 6f 65 73 20 6e 6f 74 20 69 6e 76 6f 6b  t does not invok
e500: 65 20 64 65 6c 65 74 65 20 74 72 69 67 67 65 72  e delete trigger
e510: 73 20 6f 6e 20 74 68 6f 73 65 0a 72 6f 77 73 2e  s on those.rows.
e520: 20 20 42 75 74 20 74 68 61 74 20 6d 61 79 20 63    But that may c
e530: 68 61 6e 67 65 20 69 6e 20 61 20 66 75 74 75 72  hange in a futur
e540: 65 20 72 65 6c 65 61 73 65 2e 3c 2f 70 3e 0a 3c  e release.</p>.<
e550: 2f 64 6c 3e 0a 0a 3c 70 3e 54 68 65 20 61 6c 67  /dl>..<p>The alg
e560: 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64  orithm specified
e570: 20 69 6e 20 74 68 65 20 4f 52 20 63 6c 61 75 73   in the OR claus
e580: 65 20 6f 66 20 61 20 43 4f 50 59 2c 20 49 4e 53  e of a COPY, INS
e590: 45 52 54 2c 20 6f 72 20 55 50 44 41 54 45 0a 6f  ERT, or UPDATE.o
e5a0: 76 65 72 72 69 64 65 73 20 61 6e 79 20 61 6c 67  verrides any alg
e5b0: 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64  orithm specified
e5c0: 20 69 6e 20 61 20 43 52 45 41 54 45 20 54 41 42   in a CREATE TAB
e5d0: 4c 45 20 6f 72 20 43 52 45 41 54 45 20 49 4e 44  LE or CREATE IND
e5e0: 45 58 2e 0a 49 66 20 6e 6f 20 61 6c 67 6f 72 69  EX..If no algori
e5f0: 74 68 6d 20 69 73 20 73 70 65 63 69 66 69 65 64  thm is specified
e600: 20 61 6e 79 77 68 65 72 65 2c 20 74 68 65 20 41   anywhere, the A
e610: 42 4f 52 54 20 61 6c 67 6f 72 69 74 68 6d 20 69  BORT algorithm i
e620: 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 7d 0a 23 20  s used.</p>.}.# 
e630: 3c 70 3e 46 6f 72 20 61 64 64 69 74 69 6f 6e 61  <p>For additiona
e640: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 73  l information, s
e650: 65 65 20 0a 23 20 3c 61 20 68 72 65 66 3d 22 63  ee .# <a href="c
e660: 6f 6e 66 6c 69 63 74 2e 68 74 6d 6c 22 3e 63 6f  onflict.html">co
e670: 6e 66 6c 69 63 74 2e 68 74 6d 6c 3c 2f 61 3e 2e  nflict.html</a>.
e680: 3c 2f 70 3e 0a 0a 53 65 63 74 69 6f 6e 20 52 45  </p>..Section RE
e690: 49 4e 44 45 58 20 72 65 69 6e 64 65 78 0a 0a 53  INDEX reindex..S
e6a0: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
e6b0: 6d 65 6e 74 7d 20 7b 0a 20 20 52 45 49 4e 44 45  ment} {.  REINDE
e6c0: 58 20 3c 63 6f 6c 6c 61 74 69 6f 6e 20 6e 61 6d  X <collation nam
e6d0: 65 3e 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c  e>.}.Syntax {sql
e6e0: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 20 20  -statement} {.  
e6f0: 52 45 49 4e 44 45 58 20 5b 3c 64 61 74 61 62 61  REINDEX [<databa
e700: 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62  se-name> .] <tab
e710: 6c 65 2f 69 6e 64 65 78 2d 6e 61 6d 65 3e 0a 7d  le/index-name>.}
e720: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20  ..puts {.<p>The 
e730: 52 45 49 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 20  REINDEX command 
e740: 69 73 20 75 73 65 64 20 74 6f 20 64 65 6c 65 74  is used to delet
e750: 65 20 61 6e 64 20 72 65 63 72 65 61 74 65 20 69  e and recreate i
e760: 6e 64 69 63 65 73 20 66 72 6f 6d 20 73 63 72 61  ndices from scra
e770: 74 63 68 2e 0a 54 68 69 73 20 69 73 20 75 73 65  tch..This is use
e780: 66 75 6c 20 77 68 65 6e 20 74 68 65 20 64 65 66  ful when the def
e790: 69 6e 69 74 69 6f 6e 20 6f 66 20 61 20 63 6f 6c  inition of a col
e7a0: 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20  lation sequence 
e7b0: 68 61 73 20 63 68 61 6e 67 65 64 2e 0a 3c 2f 70  has changed..</p
e7c0: 3e 0a 0a 3c 70 3e 49 6e 20 74 68 65 20 66 69 72  >..<p>In the fir
e7d0: 73 74 20 66 6f 72 6d 2c 20 61 6c 6c 20 69 6e 64  st form, all ind
e7e0: 69 63 65 73 20 69 6e 20 61 6c 6c 20 61 74 74 61  ices in all atta
e7f0: 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20 74  ched databases t
e800: 68 61 74 20 75 73 65 20 74 68 65 0a 6e 61 6d 65  hat use the.name
e810: 64 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75  d collation sequ
e820: 65 6e 63 65 20 61 72 65 20 72 65 63 72 65 61 74  ence are recreat
e830: 65 64 2e 20 49 6e 20 74 68 65 20 73 65 63 6f 6e  ed. In the secon
e840: 64 20 66 6f 72 6d 2c 20 69 66 20 0a 3c 69 3e 5b  d form, if .<i>[
e850: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e 5d 74  database-name.]t
e860: 61 62 6c 65 2f 69 6e 64 65 78 2d 6e 61 6d 65 3c  able/index-name<
e870: 2f 69 3e 20 69 64 65 6e 74 69 66 69 65 73 20 61  /i> identifies a
e880: 20 74 61 62 6c 65 2c 20 74 68 65 6e 20 61 6c 6c   table, then all
e890: 20 69 6e 64 69 63 65 73 0a 61 73 73 6f 63 69 61   indices.associa
e8a0: 74 65 64 20 77 69 74 68 20 74 68 65 20 74 61 62  ted with the tab
e8b0: 6c 65 20 61 72 65 20 72 65 62 75 69 6c 74 2e 20  le are rebuilt. 
e8c0: 49 66 20 61 6e 20 69 6e 64 65 78 20 69 73 20 69  If an index is i
e8d0: 64 65 6e 74 69 66 69 65 64 2c 20 74 68 65 6e 20  dentified, then 
e8e0: 6f 6e 6c 79 0a 74 68 69 73 20 73 70 65 63 69 66  only.this specif
e8f0: 69 63 20 69 6e 64 65 78 20 69 73 20 64 65 6c 65  ic index is dele
e900: 74 65 64 20 61 6e 64 20 72 65 63 72 65 61 74 65  ted and recreate
e910: 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 6e  d..</p>..<p>If n
e920: 6f 20 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61  o <i>database-na
e930: 6d 65 3c 2f 69 3e 20 69 73 20 73 70 65 63 69 66  me</i> is specif
e940: 69 65 64 20 61 6e 64 20 74 68 65 72 65 20 65 78  ied and there ex
e950: 69 73 74 73 20 62 6f 74 68 20 61 20 74 61 62 6c  ists both a tabl
e960: 65 20 6f 72 0a 69 6e 64 65 78 20 61 6e 64 20 61  e or.index and a
e970: 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65   collation seque
e980: 6e 63 65 20 6f 66 20 74 68 65 20 73 70 65 63 69  nce of the speci
e990: 66 69 65 64 20 6e 61 6d 65 2c 20 74 68 65 6e 20  fied name, then 
e9a0: 69 6e 64 69 63 65 73 20 61 73 73 6f 63 69 61 74  indices associat
e9b0: 65 64 0a 77 69 74 68 20 74 68 65 20 63 6f 6c 6c  ed.with the coll
e9c0: 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 6f  ation sequence o
e9d0: 6e 6c 79 20 61 72 65 20 72 65 63 6f 6e 73 74 72  nly are reconstr
e9e0: 75 63 74 65 64 2e 20 54 68 69 73 20 61 6d 62 69  ucted. This ambi
e9f0: 67 75 69 74 79 20 6d 61 79 20 62 65 0a 64 69 73  guity may be.dis
ea00: 70 65 6c 6c 65 64 20 62 79 20 61 6c 77 61 79 73  pelled by always
ea10: 20 73 70 65 63 69 66 79 69 6e 67 20 61 20 3c 69   specifying a <i
ea20: 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f  >database-name</
ea30: 69 3e 20 77 68 65 6e 20 72 65 69 6e 64 65 78 69  i> when reindexi
ea40: 6e 67 20 61 0a 73 70 65 63 69 66 69 63 20 74 61  ng a.specific ta
ea50: 62 6c 65 20 6f 72 20 69 6e 64 65 78 2e 0a 7d 0a  ble or index..}.
ea60: 0a 53 65 63 74 69 6f 6e 20 52 45 50 4c 41 43 45  .Section REPLACE
ea70: 20 72 65 70 6c 61 63 65 0a 0a 53 79 6e 74 61 78   replace..Syntax
ea80: 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
ea90: 20 7b 0a 52 45 50 4c 41 43 45 20 49 4e 54 4f 20   {.REPLACE INTO 
eaa0: 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e  [<database-name>
eab0: 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e   .] <table-name>
eac0: 20 5b 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74   [( <column-list
ead0: 3e 20 29 5d 20 56 41 4c 55 45 53 20 28 20 3c 76  > )] VALUES ( <v
eae0: 61 6c 75 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 52  alue-list> ) |.R
eaf0: 45 50 4c 41 43 45 20 49 4e 54 4f 20 5b 3c 64 61  EPLACE INTO [<da
eb00: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20  tabase-name> .] 
eb10: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20  <table-name> [( 
eb20: 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d  <column-list> )]
eb30: 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65   <select-stateme
eb40: 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  nt>.}..puts {.<p
eb50: 3e 54 68 65 20 52 45 50 4c 41 43 45 20 63 6f 6d  >The REPLACE com
eb60: 6d 61 6e 64 20 69 73 20 61 6e 20 61 6c 69 61 73  mand is an alias
eb70: 20 66 6f 72 20 74 68 65 20 22 49 4e 53 45 52 54   for the "INSERT
eb80: 20 4f 52 20 52 45 50 4c 41 43 45 22 20 76 61 72   OR REPLACE" var
eb90: 69 61 6e 74 0a 6f 66 20 74 68 65 20 3c 61 20 68  iant.of the <a h
eba0: 72 65 66 3d 22 23 69 6e 73 65 72 74 22 3e 49 4e  ref="#insert">IN
ebb0: 53 45 52 54 3c 2f 61 3e 20 63 6f 6d 6d 61 6e 64  SERT</a> command
ebc0: 2e 20 20 54 68 69 73 20 61 6c 69 61 73 20 69 73  .  This alias is
ebd0: 20 70 72 6f 76 69 64 65 64 20 66 6f 72 0a 63 6f   provided for.co
ebe0: 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68  mpatibility with
ebf0: 20 4d 79 53 51 4c 2e 20 20 53 65 65 20 74 68 65   MySQL.  See the
ec00: 20 0a 3c 61 20 68 72 65 66 3d 22 23 69 6e 73 65   .<a href="#inse
ec10: 72 74 22 3e 49 4e 53 45 52 54 3c 2f 61 3e 20 63  rt">INSERT</a> c
ec20: 6f 6d 6d 61 6e 64 20 64 6f 63 75 6d 65 6e 74 61  ommand documenta
ec30: 74 69 6f 6e 20 66 6f 72 20 61 64 64 69 74 69 6f  tion for additio
ec40: 6e 61 6c 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  nal.information.
ec50: 3c 2f 70 3e 20 20 0a 7d 0a 0a 0a 53 65 63 74 69  </p>  .}...Secti
ec60: 6f 6e 20 53 45 4c 45 43 54 20 73 65 6c 65 63 74  on SELECT select
ec70: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
ec80: 61 74 65 6d 65 6e 74 7d 20 7b 0a 53 45 4c 45 43  atement} {.SELEC
ec90: 54 20 5b 41 4c 4c 20 7c 20 44 49 53 54 49 4e 43  T [ALL | DISTINC
eca0: 54 5d 20 3c 72 65 73 75 6c 74 3e 20 5b 46 52 4f  T] <result> [FRO
ecb0: 4d 20 3c 74 61 62 6c 65 2d 6c 69 73 74 3e 5d 0a  M <table-list>].
ecc0: 5b 57 48 45 52 45 20 3c 65 78 70 72 3e 5d 0a 5b  [WHERE <expr>].[
ecd0: 47 52 4f 55 50 20 42 59 20 3c 65 78 70 72 2d 6c  GROUP BY <expr-l
ece0: 69 73 74 3e 5d 0a 5b 48 41 56 49 4e 47 20 3c 65  ist>].[HAVING <e
ecf0: 78 70 72 3e 5d 0a 5b 3c 63 6f 6d 70 6f 75 6e 64  xpr>].[<compound
ed00: 2d 6f 70 3e 20 3c 73 65 6c 65 63 74 3e 5d 2a 0a  -op> <select>]*.
ed10: 5b 4f 52 44 45 52 20 42 59 20 3c 73 6f 72 74 2d  [ORDER BY <sort-
ed20: 65 78 70 72 2d 6c 69 73 74 3e 5d 0a 5b 4c 49 4d  expr-list>].[LIM
ed30: 49 54 20 3c 69 6e 74 65 67 65 72 3e 20 5b 4c 50  IT <integer> [LP
ed40: 20 4f 46 46 53 45 54 20 7c 20 2c 20 52 50 20 3c   OFFSET | , RP <
ed50: 69 6e 74 65 67 65 72 3e 5d 5d 0a 7d 20 7b 72 65  integer>]].} {re
ed60: 73 75 6c 74 7d 20 7b 0a 3c 72 65 73 75 6c 74 2d  sult} {.<result-
ed70: 63 6f 6c 75 6d 6e 3e 20 5b 2c 20 3c 72 65 73 75  column> [, <resu
ed80: 6c 74 2d 63 6f 6c 75 6d 6e 3e 5d 2a 0a 7d 20 7b  lt-column>]*.} {
ed90: 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 7d 20 7b  result-column} {
eda0: 0a 53 54 41 52 20 7c 20 3c 74 61 62 6c 65 2d 6e  .STAR | <table-n
edb0: 61 6d 65 3e 20 2e 20 53 54 41 52 20 7c 20 3c 65  ame> . STAR | <e
edc0: 78 70 72 3e 20 5b 20 5b 41 53 5d 20 3c 73 74 72  xpr> [ [AS] <str
edd0: 69 6e 67 3e 20 5d 0a 7d 20 7b 74 61 62 6c 65 2d  ing> ].} {table-
ede0: 6c 69 73 74 7d 20 7b 0a 3c 74 61 62 6c 65 3e 20  list} {.<table> 
edf0: 5b 3c 6a 6f 69 6e 2d 6f 70 3e 20 3c 74 61 62 6c  [<join-op> <tabl
ee00: 65 3e 20 3c 6a 6f 69 6e 2d 61 72 67 73 3e 5d 2a  e> <join-args>]*
ee10: 0a 7d 20 7b 74 61 62 6c 65 7d 20 7b 0a 3c 74 61  .} {table} {.<ta
ee20: 62 6c 65 2d 6e 61 6d 65 3e 20 5b 41 53 20 3c 61  ble-name> [AS <a
ee30: 6c 69 61 73 3e 5d 20 7c 0a 28 20 3c 73 65 6c 65  lias>] |.( <sele
ee40: 63 74 3e 20 29 20 5b 41 53 20 3c 61 6c 69 61 73  ct> ) [AS <alias
ee50: 3e 5d 0a 7d 20 7b 6a 6f 69 6e 2d 6f 70 7d 20 7b  >].} {join-op} {
ee60: 0a 2c 20 7c 20 5b 4e 41 54 55 52 41 4c 5d 20 5b  ., | [NATURAL] [
ee70: 4c 45 46 54 20 7c 20 52 49 47 48 54 20 7c 20 46  LEFT | RIGHT | F
ee80: 55 4c 4c 5d 20 5b 4f 55 54 45 52 20 7c 20 49 4e  ULL] [OUTER | IN
ee90: 4e 45 52 20 7c 20 43 52 4f 53 53 5d 20 4a 4f 49  NER | CROSS] JOI
eea0: 4e 0a 7d 20 7b 6a 6f 69 6e 2d 61 72 67 73 7d 20  N.} {join-args} 
eeb0: 7b 0a 5b 4f 4e 20 3c 65 78 70 72 3e 5d 20 5b 55  {.[ON <expr>] [U
eec0: 53 49 4e 47 20 28 20 3c 69 64 2d 6c 69 73 74 3e  SING ( <id-list>
eed0: 20 29 5d 0a 7d 20 7b 73 6f 72 74 2d 65 78 70 72   )].} {sort-expr
eee0: 2d 6c 69 73 74 7d 20 7b 0a 3c 65 78 70 72 3e 20  -list} {.<expr> 
eef0: 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e 5d 20 5b  [<sort-order>] [
ef00: 2c 20 3c 65 78 70 72 3e 20 5b 3c 73 6f 72 74 2d  , <expr> [<sort-
ef10: 6f 72 64 65 72 3e 5d 5d 2a 0a 7d 20 7b 73 6f 72  order>]]*.} {sor
ef20: 74 2d 6f 72 64 65 72 7d 20 7b 0a 5b 20 43 4f 4c  t-order} {.[ COL
ef30: 4c 41 54 45 20 3c 63 6f 6c 6c 61 74 69 6f 6e 2d  LATE <collation-
ef40: 6e 61 6d 65 3e 20 5d 20 5b 20 41 53 43 20 7c 20  name> ] [ ASC | 
ef50: 44 45 53 43 20 5d 0a 7d 20 7b 63 6f 6d 70 6f 75  DESC ].} {compou
ef60: 6e 64 5f 6f 70 7d 20 7b 0a 55 4e 49 4f 4e 20 7c  nd_op} {.UNION |
ef70: 20 55 4e 49 4f 4e 20 41 4c 4c 20 7c 20 49 4e 54   UNION ALL | INT
ef80: 45 52 53 45 43 54 20 7c 20 45 58 43 45 50 54 0a  ERSECT | EXCEPT.
ef90: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
efa0: 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e   SELECT statemen
efb0: 74 20 69 73 20 75 73 65 64 20 74 6f 20 71 75 65  t is used to que
efc0: 72 79 20 74 68 65 20 64 61 74 61 62 61 73 65 2e  ry the database.
efd0: 20 20 54 68 65 0a 72 65 73 75 6c 74 20 6f 66 20    The.result of 
efe0: 61 20 53 45 4c 45 43 54 20 69 73 20 7a 65 72 6f  a SELECT is zero
eff0: 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66   or more rows of
f000: 20 64 61 74 61 20 77 68 65 72 65 20 65 61 63 68   data where each
f010: 20 72 6f 77 0a 68 61 73 20 61 20 66 69 78 65 64   row.has a fixed
f020: 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
f030: 6e 73 2e 20 20 54 68 65 20 6e 75 6d 62 65 72 20  ns.  The number 
f040: 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68  of columns in th
f050: 65 0a 72 65 73 75 6c 74 20 69 73 20 73 70 65 63  e.result is spec
f060: 69 66 69 65 64 20 62 79 20 74 68 65 20 65 78 70  ified by the exp
f070: 72 65 73 73 69 6f 6e 20 6c 69 73 74 20 69 6e 20  ression list in 
f080: 62 65 74 77 65 65 6e 20 74 68 65 0a 53 45 4c 45  between the.SELE
f090: 43 54 20 61 6e 64 20 46 52 4f 4d 20 6b 65 79 77  CT and FROM keyw
f0a0: 6f 72 64 73 2e 20 20 41 6e 79 20 61 72 62 69 74  ords.  Any arbit
f0b0: 72 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e 20  rary expression 
f0c0: 63 61 6e 20 62 65 20 75 73 65 64 0a 61 73 20 61  can be used.as a
f0d0: 20 72 65 73 75 6c 74 2e 20 20 49 66 20 61 20 72   result.  If a r
f0e0: 65 73 75 6c 74 20 65 78 70 72 65 73 73 69 6f 6e  esult expression
f0f0: 20 69 73 20 7d 0a 70 75 74 73 20 22 5b 4f 70 65   is }.puts "[Ope
f100: 72 61 74 6f 72 20 2a 5d 20 74 68 65 6e 20 61 6c  rator *] then al
f110: 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 6c 6c  l columns of all
f120: 20 74 61 62 6c 65 73 20 61 72 65 20 73 75 62 73   tables are subs
f130: 74 69 74 75 74 65 64 22 0a 70 75 74 73 20 7b 66  tituted".puts {f
f140: 6f 72 20 74 68 61 74 20 6f 6e 65 20 65 78 70 72  or that one expr
f150: 65 73 73 69 6f 6e 2e 20 20 49 66 20 74 68 65 20  ession.  If the 
f160: 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 74 68  expression is th
f170: 65 20 6e 61 6d 65 20 6f 66 7d 0a 70 75 74 73 20  e name of}.puts 
f180: 22 61 20 74 61 62 6c 65 20 66 6f 6c 6c 6f 77 65  "a table followe
f190: 64 20 62 79 20 5b 4f 70 65 72 61 74 6f 72 20 2e  d by [Operator .
f1a0: 2a 5d 20 74 68 65 6e 20 74 68 65 20 72 65 73 75  *] then the resu
f1b0: 6c 74 20 69 73 20 61 6c 6c 20 63 6f 6c 75 6d 6e  lt is all column
f1c0: 73 22 0a 70 75 74 73 20 7b 69 6e 20 74 68 61 74  s".puts {in that
f1d0: 20 6f 6e 65 20 74 61 62 6c 65 2e 3c 2f 70 3e 0a   one table.</p>.
f1e0: 0a 3c 70 3e 54 68 65 20 44 49 53 54 49 4e 43 54  .<p>The DISTINCT
f1f0: 20 6b 65 79 77 6f 72 64 20 63 61 75 73 65 73 20   keyword causes 
f200: 61 20 73 75 62 73 65 74 20 6f 66 20 72 65 73 75  a subset of resu
f210: 6c 74 20 72 6f 77 73 20 74 6f 20 62 65 20 72 65  lt rows to be re
f220: 74 75 72 6e 65 64 2c 20 0a 69 6e 20 77 68 69 63  turned, .in whic
f230: 68 20 65 61 63 68 20 72 65 73 75 6c 74 20 72 6f  h each result ro
f240: 77 20 69 73 20 64 69 66 66 65 72 65 6e 74 2e 20  w is different. 
f250: 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61 72 65   NULL values are
f260: 20 6e 6f 74 20 74 72 65 61 74 65 64 20 61 73 20   not treated as 
f270: 0a 64 69 73 74 69 6e 63 74 20 66 72 6f 6d 20 65  .distinct from e
f280: 61 63 68 20 6f 74 68 65 72 2e 20 20 54 68 65 20  ach other.  The 
f290: 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72  default behavior
f2a0: 20 69 73 20 74 68 61 74 20 61 6c 6c 20 72 65 73   is that all res
f2b0: 75 6c 74 20 72 6f 77 73 20 0a 62 65 20 72 65 74  ult rows .be ret
f2c0: 75 72 6e 65 64 2c 20 77 68 69 63 68 20 63 61 6e  urned, which can
f2d0: 20 62 65 20 6d 61 64 65 20 65 78 70 6c 69 63 69   be made explici
f2e0: 74 20 77 69 74 68 20 74 68 65 20 6b 65 79 77 6f  t with the keywo
f2f0: 72 64 20 41 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e  rd ALL.</p>..<p>
f300: 54 68 65 20 71 75 65 72 79 20 69 73 20 65 78 65  The query is exe
f310: 63 75 74 65 64 20 61 67 61 69 6e 73 74 20 6f 6e  cuted against on
f320: 65 20 6f 72 20 6d 6f 72 65 20 74 61 62 6c 65 73  e or more tables
f330: 20 73 70 65 63 69 66 69 65 64 20 61 66 74 65 72   specified after
f340: 0a 74 68 65 20 46 52 4f 4d 20 6b 65 79 77 6f 72  .the FROM keywor
f350: 64 2e 20 20 49 66 20 6d 75 6c 74 69 70 6c 65 20  d.  If multiple 
f360: 74 61 62 6c 65 73 20 6e 61 6d 65 73 20 61 72 65  tables names are
f370: 20 73 65 70 61 72 61 74 65 64 20 62 79 20 63 6f   separated by co
f380: 6d 6d 61 73 2c 0a 74 68 65 6e 20 74 68 65 20 71  mmas,.then the q
f390: 75 65 72 79 20 69 73 20 61 67 61 69 6e 73 74 20  uery is against 
f3a0: 74 68 65 20 63 72 6f 73 73 20 6a 6f 69 6e 20 6f  the cross join o
f3b0: 66 20 74 68 65 20 76 61 72 69 6f 75 73 20 74 61  f the various ta
f3c0: 62 6c 65 73 2e 0a 54 68 65 20 66 75 6c 6c 20 53  bles..The full S
f3d0: 51 4c 2d 39 32 20 6a 6f 69 6e 20 73 79 6e 74 61  QL-92 join synta
f3e0: 78 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 75 73  x can also be us
f3f0: 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 6a 6f  ed to specify jo
f400: 69 6e 73 2e 0a 41 20 73 75 62 2d 71 75 65 72 79  ins..A sub-query
f410: 0a 69 6e 20 70 61 72 65 6e 74 68 65 73 65 73 20  .in parentheses 
f420: 6d 61 79 20 62 65 20 73 75 62 73 74 69 74 75 74  may be substitut
f430: 65 64 20 66 6f 72 20 61 6e 79 20 74 61 62 6c 65  ed for any table
f440: 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 46 52 4f   name in the FRO
f450: 4d 20 63 6c 61 75 73 65 2e 0a 54 68 65 20 65 6e  M clause..The en
f460: 74 69 72 65 20 46 52 4f 4d 20 63 6c 61 75 73 65  tire FROM clause
f470: 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64 2c   may be omitted,
f480: 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74   in which case t
f490: 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 0a 73  he result is a.s
f4a0: 69 6e 67 6c 65 20 72 6f 77 20 63 6f 6e 73 69 73  ingle row consis
f4b0: 74 69 6e 67 20 6f 66 20 74 68 65 20 76 61 6c 75  ting of the valu
f4c0: 65 73 20 6f 66 20 74 68 65 20 65 78 70 72 65 73  es of the expres
f4d0: 73 69 6f 6e 20 6c 69 73 74 2e 0a 3c 2f 70 3e 0a  sion list..</p>.
f4e0: 0a 3c 70 3e 54 68 65 20 57 48 45 52 45 20 63 6c  .<p>The WHERE cl
f4f0: 61 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64  ause can be used
f500: 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e 75   to limit the nu
f510: 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 6f 76 65  mber of rows ove
f520: 72 0a 77 68 69 63 68 20 74 68 65 20 71 75 65 72  r.which the quer
f530: 79 20 6f 70 65 72 61 74 65 73 2e 3c 2f 70 3e 0a  y operates.</p>.
f540: 0a 3c 70 3e 54 68 65 20 47 52 4f 55 50 20 42 59  .<p>The GROUP BY
f550: 20 63 6c 61 75 73 65 73 20 63 61 75 73 65 73 20   clauses causes 
f560: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73  one or more rows
f570: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 74   of the result t
f580: 6f 0a 62 65 20 63 6f 6d 62 69 6e 65 64 20 69 6e  o.be combined in
f590: 74 6f 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20  to a single row 
f5a0: 6f 66 20 6f 75 74 70 75 74 2e 20 20 54 68 69 73  of output.  This
f5b0: 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75   is especially u
f5c0: 73 65 66 75 6c 0a 77 68 65 6e 20 74 68 65 20 72  seful.when the r
f5d0: 65 73 75 6c 74 20 63 6f 6e 74 61 69 6e 73 20 61  esult contains a
f5e0: 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
f5f0: 6e 73 2e 20 20 54 68 65 20 65 78 70 72 65 73 73  ns.  The express
f600: 69 6f 6e 73 20 69 6e 0a 74 68 65 20 47 52 4f 55  ions in.the GROU
f610: 50 20 42 59 20 63 6c 61 75 73 65 20 64 6f 20 3c  P BY clause do <
f620: 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 68 61 76 65  em>not</em> have
f630: 20 74 6f 20 62 65 20 65 78 70 72 65 73 73 69 6f   to be expressio
f640: 6e 73 20 74 68 61 74 0a 61 70 70 65 61 72 20 69  ns that.appear i
f650: 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20 54  n the result.  T
f660: 68 65 20 48 41 56 49 4e 47 20 63 6c 61 75 73 65  he HAVING clause
f670: 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 57   is similar to W
f680: 48 45 52 45 20 65 78 63 65 70 74 0a 74 68 61 74  HERE except.that
f690: 20 48 41 56 49 4e 47 20 61 70 70 6c 69 65 73 20   HAVING applies 
f6a0: 61 66 74 65 72 20 67 72 6f 75 70 69 6e 67 20 68  after grouping h
f6b0: 61 73 20 6f 63 63 75 72 72 65 64 2e 20 20 54 68  as occurred.  Th
f6c0: 65 20 48 41 56 49 4e 47 20 65 78 70 72 65 73 73  e HAVING express
f6d0: 69 6f 6e 0a 6d 61 79 20 72 65 66 65 72 20 74 6f  ion.may refer to
f6e0: 20 76 61 6c 75 65 73 2c 20 65 76 65 6e 20 61 67   values, even ag
f6f0: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
f700: 73 2c 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20  s, that are not 
f710: 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f  in the result.</
f720: 70 3e 0a 0a 3c 70 3e 54 68 65 20 4f 52 44 45 52  p>..<p>The ORDER
f730: 20 42 59 20 63 6c 61 75 73 65 20 63 61 75 73 65   BY clause cause
f740: 73 20 74 68 65 20 6f 75 74 70 75 74 20 72 6f 77  s the output row
f750: 73 20 74 6f 20 62 65 20 73 6f 72 74 65 64 2e 20  s to be sorted. 
f760: 20 0a 54 68 65 20 61 72 67 75 6d 65 6e 74 20 74   .The argument t
f770: 6f 20 4f 52 44 45 52 20 42 59 20 69 73 20 61 20  o ORDER BY is a 
f780: 6c 69 73 74 20 6f 66 20 65 78 70 72 65 73 73 69  list of expressi
f790: 6f 6e 73 20 74 68 61 74 20 61 72 65 20 75 73 65  ons that are use
f7a0: 64 20 61 73 20 74 68 65 0a 6b 65 79 20 66 6f 72  d as the.key for
f7b0: 20 74 68 65 20 73 6f 72 74 2e 20 20 54 68 65 20   the sort.  The 
f7c0: 65 78 70 72 65 73 73 69 6f 6e 73 20 64 6f 20 6e  expressions do n
f7d0: 6f 74 20 68 61 76 65 20 74 6f 20 62 65 20 70 61  ot have to be pa
f7e0: 72 74 20 6f 66 20 74 68 65 0a 72 65 73 75 6c 74  rt of the.result
f7f0: 20 66 6f 72 20 61 20 73 69 6d 70 6c 65 20 53 45   for a simple SE
f800: 4c 45 43 54 2c 20 62 75 74 20 69 6e 20 61 20 63  LECT, but in a c
f810: 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 65  ompound SELECT e
f820: 61 63 68 20 73 6f 72 74 0a 65 78 70 72 65 73 73  ach sort.express
f830: 69 6f 6e 20 6d 75 73 74 20 65 78 61 63 74 6c 79  ion must exactly
f840: 20 6d 61 74 63 68 20 6f 6e 65 20 6f 66 20 74 68   match one of th
f850: 65 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73  e result columns
f860: 2e 20 20 45 61 63 68 0a 73 6f 72 74 20 65 78 70  .  Each.sort exp
f870: 72 65 73 73 69 6f 6e 20 6d 61 79 20 62 65 20 6f  ression may be o
f880: 70 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77  ptionally follow
f890: 65 64 20 62 79 20 61 20 43 4f 4c 4c 41 54 45 20  ed by a COLLATE 
f8a0: 6b 65 79 77 6f 72 64 20 61 6e 64 0a 74 68 65 20  keyword and.the 
f8b0: 6e 61 6d 65 20 6f 66 20 61 20 63 6f 6c 6c 61 74  name of a collat
f8c0: 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 75 73 65  ing function use
f8d0: 64 20 66 6f 72 20 6f 72 64 65 72 69 6e 67 20 74  d for ordering t
f8e0: 65 78 74 20 61 6e 64 2f 6f 72 0a 6b 65 79 77 6f  ext and/or.keywo
f8f0: 72 64 73 20 41 53 43 20 6f 72 20 44 45 53 43 20  rds ASC or DESC 
f900: 74 6f 20 73 70 65 63 69 66 79 20 74 68 65 20 73  to specify the s
f910: 6f 72 74 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a  ort order.</p>..
f920: 3c 70 3e 54 68 65 20 4c 49 4d 49 54 20 63 6c 61  <p>The LIMIT cla
f930: 75 73 65 20 70 6c 61 63 65 73 20 61 6e 20 75 70  use places an up
f940: 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65  per bound on the
f950: 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 0a   number of rows.
f960: 72 65 74 75 72 6e 65 64 20 69 6e 20 74 68 65 20  returned in the 
f970: 72 65 73 75 6c 74 2e 20 20 41 20 6e 65 67 61 74  result.  A negat
f980: 69 76 65 20 4c 49 4d 49 54 20 69 6e 64 69 63 61  ive LIMIT indica
f990: 74 65 73 20 6e 6f 20 75 70 70 65 72 20 62 6f 75  tes no upper bou
f9a0: 6e 64 2e 0a 54 68 65 20 6f 70 74 69 6f 6e 61 6c  nd..The optional
f9b0: 20 4f 46 46 53 45 54 20 66 6f 6c 6c 6f 77 69 6e   OFFSET followin
f9c0: 67 20 4c 49 4d 49 54 20 73 70 65 63 69 66 69 65  g LIMIT specifie
f9d0: 73 20 68 6f 77 20 6d 61 6e 79 0a 72 6f 77 73 20  s how many.rows 
f9e0: 74 6f 20 73 6b 69 70 20 61 74 20 74 68 65 20 62  to skip at the b
f9f0: 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20  eginning of the 
fa00: 72 65 73 75 6c 74 20 73 65 74 2e 0a 49 6e 20 61  result set..In a
fa10: 20 63 6f 6d 70 6f 75 6e 64 20 71 75 65 72 79 2c   compound query,
fa20: 20 74 68 65 20 4c 49 4d 49 54 20 63 6c 61 75 73   the LIMIT claus
fa30: 65 20 6d 61 79 20 6f 6e 6c 79 20 61 70 70 65 61  e may only appea
fa40: 72 20 6f 6e 20 74 68 65 0a 66 69 6e 61 6c 20 53  r on the.final S
fa50: 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e  ELECT statement.
fa60: 0a 54 68 65 20 6c 69 6d 69 74 20 69 73 20 61 70  .The limit is ap
fa70: 70 6c 69 65 64 20 74 6f 20 74 68 65 20 65 6e 74  plied to the ent
fa80: 69 72 65 20 71 75 65 72 79 20 6e 6f 74 0a 74 6f  ire query not.to
fa90: 20 74 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20   the individual 
faa0: 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
fab0: 20 74 6f 20 77 68 69 63 68 20 69 74 20 69 73 20   to which it is 
fac0: 61 74 74 61 63 68 65 64 2e 0a 4e 6f 74 65 20 74  attached..Note t
fad0: 68 61 74 20 69 66 20 74 68 65 20 4f 46 46 53 45  hat if the OFFSE
fae0: 54 20 6b 65 79 77 6f 72 64 20 69 73 20 75 73 65  T keyword is use
faf0: 64 20 69 6e 20 74 68 65 20 4c 49 4d 49 54 20 63  d in the LIMIT c
fb00: 6c 61 75 73 65 2c 20 74 68 65 6e 20 74 68 65 0a  lause, then the.
fb10: 6c 69 6d 69 74 20 69 73 20 74 68 65 20 66 69 72  limit is the fir
fb20: 73 74 20 6e 75 6d 62 65 72 20 61 6e 64 20 74 68  st number and th
fb30: 65 20 6f 66 66 73 65 74 20 69 73 20 74 68 65 20  e offset is the 
fb40: 73 65 63 6f 6e 64 20 6e 75 6d 62 65 72 2e 20 20  second number.  
fb50: 49 66 20 61 0a 63 6f 6d 6d 61 20 69 73 20 75 73  If a.comma is us
fb60: 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68  ed instead of th
fb70: 65 20 4f 46 46 53 45 54 20 6b 65 79 77 6f 72 64  e OFFSET keyword
fb80: 2c 20 74 68 65 6e 20 74 68 65 20 6f 66 66 73 65  , then the offse
fb90: 74 20 69 73 20 74 68 65 0a 66 69 72 73 74 20 6e  t is the.first n
fba0: 75 6d 62 65 72 20 61 6e 64 20 74 68 65 20 6c 69  umber and the li
fbb0: 6d 69 74 20 69 73 20 74 68 65 20 73 65 63 6f 6e  mit is the secon
fbc0: 64 20 6e 75 6d 62 65 72 2e 20 20 54 68 69 73 20  d number.  This 
fbd0: 73 65 65 6d 69 6e 67 0a 63 6f 6e 74 72 61 64 69  seeming.contradi
fbe0: 74 69 6f 6e 20 69 73 20 69 6e 74 65 6e 74 69 6f  tion is intentio
fbf0: 6e 61 6c 20 2d 20 69 74 20 6d 61 78 69 6d 69 7a  nal - it maximiz
fc00: 65 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  es compatibility
fc10: 20 77 69 74 68 20 6c 65 67 61 63 79 0a 53 51 4c   with legacy.SQL
fc20: 20 64 61 74 61 62 61 73 65 20 73 79 73 74 65 6d   database system
fc30: 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f  s..</p>..<p>A co
fc40: 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 69 73  mpound SELECT is
fc50: 20 66 6f 72 6d 65 64 20 66 72 6f 6d 20 74 77 6f   formed from two
fc60: 20 6f 72 20 6d 6f 72 65 20 73 69 6d 70 6c 65 20   or more simple 
fc70: 53 45 4c 45 43 54 73 20 63 6f 6e 6e 65 63 74 65  SELECTs connecte
fc80: 64 0a 62 79 20 6f 6e 65 20 6f 66 20 74 68 65 20  d.by one of the 
fc90: 6f 70 65 72 61 74 6f 72 73 20 55 4e 49 4f 4e 2c  operators UNION,
fca0: 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45   UNION ALL, INTE
fcb0: 52 53 45 43 54 2c 20 6f 72 20 45 58 43 45 50 54  RSECT, or EXCEPT
fcc0: 2e 20 20 49 6e 0a 61 20 63 6f 6d 70 6f 75 6e 64  .  In.a compound
fcd0: 20 53 45 4c 45 43 54 2c 20 61 6c 6c 20 74 68 65   SELECT, all the
fce0: 20 63 6f 6e 73 74 69 74 75 65 6e 74 20 53 45 4c   constituent SEL
fcf0: 45 43 54 73 20 6d 75 73 74 20 73 70 65 63 69 66  ECTs must specif
fd00: 79 20 74 68 65 0a 73 61 6d 65 20 6e 75 6d 62 65  y the.same numbe
fd10: 72 20 6f 66 20 72 65 73 75 6c 74 20 63 6f 6c 75  r of result colu
fd20: 6d 6e 73 2e 20 20 54 68 65 72 65 20 6d 61 79 20  mns.  There may 
fd30: 62 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65  be only a single
fd40: 20 4f 52 44 45 52 20 42 59 0a 63 6c 61 75 73 65   ORDER BY.clause
fd50: 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74   at the end of t
fd60: 68 65 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45  he compound SELE
fd70: 43 54 2e 20 20 54 68 65 20 55 4e 49 4f 4e 20 61  CT.  The UNION a
fd80: 6e 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f 70 65  nd UNION ALL.ope
fd90: 72 61 74 6f 72 73 20 63 6f 6d 62 69 6e 65 20 74  rators combine t
fda0: 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68  he results of th
fdb0: 65 20 53 45 4c 45 43 54 73 20 74 6f 20 74 68 65  e SELECTs to the
fdc0: 20 72 69 67 68 74 20 61 6e 64 20 6c 65 66 74 20   right and left 
fdd0: 69 6e 74 6f 0a 61 20 73 69 6e 67 6c 65 20 62 69  into.a single bi
fde0: 67 20 74 61 62 6c 65 2e 20 20 54 68 65 20 64 69  g table.  The di
fdf0: 66 66 65 72 65 6e 63 65 20 69 73 20 74 68 61 74  fference is that
fe00: 20 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c 20 72 65   in UNION all re
fe10: 73 75 6c 74 20 72 6f 77 73 0a 61 72 65 20 64 69  sult rows.are di
fe20: 73 74 69 6e 63 74 20 77 68 65 72 65 20 69 6e 20  stinct where in 
fe30: 55 4e 49 4f 4e 20 41 4c 4c 20 74 68 65 72 65 20  UNION ALL there 
fe40: 6d 61 79 20 62 65 20 64 75 70 6c 69 63 61 74 65  may be duplicate
fe50: 73 2e 0a 54 68 65 20 49 4e 54 45 52 53 45 43 54  s..The INTERSECT
fe60: 20 6f 70 65 72 61 74 6f 72 20 74 61 6b 65 73 20   operator takes 
fe70: 74 68 65 20 69 6e 74 65 72 73 65 63 74 69 6f 6e  the intersection
fe80: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 73 20   of the results 
fe90: 6f 66 20 74 68 65 0a 6c 65 66 74 20 61 6e 64 20  of the.left and 
fea0: 72 69 67 68 74 20 53 45 4c 45 43 54 73 2e 20 20  right SELECTs.  
feb0: 45 58 43 45 50 54 20 74 61 6b 65 73 20 74 68 65  EXCEPT takes the
fec0: 20 72 65 73 75 6c 74 20 6f 66 20 6c 65 66 74 20   result of left 
fed0: 53 45 4c 45 43 54 20 61 66 74 65 72 0a 72 65 6d  SELECT after.rem
fee0: 6f 76 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74  oving the result
fef0: 73 20 6f 66 20 74 68 65 20 72 69 67 68 74 20 53  s of the right S
ff00: 45 4c 45 43 54 2e 20 20 57 68 65 6e 20 74 68 72  ELECT.  When thr
ff10: 65 65 20 6f 72 20 6d 6f 72 65 20 53 45 4c 45 43  ee or more SELEC
ff20: 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63 74 65 64  Ts.are connected
ff30: 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f 75 6e 64   into a compound
ff40: 2c 20 74 68 65 79 20 67 72 6f 75 70 20 66 72 6f  , they group fro
ff50: 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74 2e  m left to right.
ff60: 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  </p>.}...Section
ff70: 20 55 50 44 41 54 45 20 75 70 64 61 74 65 0a 0a   UPDATE update..
ff80: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
ff90: 65 6d 65 6e 74 7d 20 7b 0a 55 50 44 41 54 45 20  ement} {.UPDATE 
ffa0: 5b 20 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61  [ OR <conflict-a
ffb0: 6c 67 6f 72 69 74 68 6d 3e 20 5d 20 5b 3c 64 61  lgorithm> ] [<da
ffc0: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20  tabase-name> .] 
ffd0: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 53 45 54  <table-name>.SET
ffe0: 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 20 5b 2c   <assignment> [,
fff0: 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 5d 2a 0a   <assignment>]*.
10000 5b 57 48 45 52 45 20 3c 65 78 70 72 3e 5d 0a 7d  [WHERE <expr>].}
10010 20 7b 61 73 73 69 67 6e 6d 65 6e 74 7d 20 7b 0a   {assignment} {.
10020 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 3d 20  <column-name> = 
10030 3c 65 78 70 72 3e 0a 7d 0a 0a 70 75 74 73 20 7b  <expr>.}..puts {
10040 0a 3c 70 3e 54 68 65 20 55 50 44 41 54 45 20 73  .<p>The UPDATE s
10050 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73 65 64  tatement is used
10060 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 76   to change the v
10070 61 6c 75 65 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  alue of columns 
10080 69 6e 20 0a 73 65 6c 65 63 74 65 64 20 72 6f 77  in .selected row
10090 73 20 6f 66 20 61 20 74 61 62 6c 65 2e 20 20 45  s of a table.  E
100a0 61 63 68 20 61 73 73 69 67 6e 6d 65 6e 74 20 69  ach assignment i
100b0 6e 20 61 6e 20 55 50 44 41 54 45 20 73 70 65 63  n an UPDATE spec
100c0 69 66 69 65 73 0a 61 20 63 6f 6c 75 6d 6e 20 6e  ifies.a column n
100d0 61 6d 65 20 74 6f 20 74 68 65 20 6c 65 66 74 20  ame to the left 
100e0 6f 66 20 74 68 65 20 65 71 75 61 6c 73 20 73 69  of the equals si
100f0 67 6e 20 61 6e 64 20 61 6e 20 61 72 62 69 74 72  gn and an arbitr
10100 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e 0a 74  ary expression.t
10110 6f 20 74 68 65 20 72 69 67 68 74 2e 20 20 54 68  o the right.  Th
10120 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 6d 61  e expressions ma
10130 79 20 75 73 65 20 74 68 65 20 76 61 6c 75 65 73  y use the values
10140 20 6f 66 20 6f 74 68 65 72 20 63 6f 6c 75 6d 6e   of other column
10150 73 2e 0a 41 6c 6c 20 65 78 70 72 65 73 73 69 6f  s..All expressio
10160 6e 73 20 61 72 65 20 65 76 61 6c 75 61 74 65 64  ns are evaluated
10170 20 62 65 66 6f 72 65 20 61 6e 79 20 61 73 73 69   before any assi
10180 67 6e 6d 65 6e 74 73 20 61 72 65 20 6d 61 64 65  gnments are made
10190 2e 0a 41 20 57 48 45 52 45 20 63 6c 61 75 73 65  ..A WHERE clause
101a0 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
101b0 72 65 73 74 72 69 63 74 20 77 68 69 63 68 20 72  restrict which r
101c0 6f 77 73 20 61 72 65 20 75 70 64 61 74 65 64 2e  ows are updated.
101d0 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74  </p>..<p>The opt
101e0 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63  ional conflict-c
101f0 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65  lause allows the
10200 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f   specification o
10210 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65  f an alternative
10220 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66  .constraint conf
10230 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
10240 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75 73 65  algorithm to use
10250 20 64 75 72 69 6e 67 20 74 68 69 73 20 6f 6e 65   during this one
10260 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68   command..See th
10270 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64  e section titled
10280 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c  .<a href="#confl
10290 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54  ict">ON CONFLICT
102a0 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f  </a> for additio
102b0 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  nal information.
102c0 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  </p>.}...Section
102d0 20 56 41 43 55 55 4d 20 76 61 63 75 75 6d 0a 0a   VACUUM vacuum..
102e0 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
102f0 65 6d 65 6e 74 7d 20 7b 0a 56 41 43 55 55 4d 20  ement} {.VACUUM 
10300 5b 3c 69 6e 64 65 78 2d 6f 72 2d 74 61 62 6c 65  [<index-or-table
10310 2d 6e 61 6d 65 3e 5d 0a 7d 0a 0a 70 75 74 73 20  -name>].}..puts 
10320 7b 0a 3c 70 3e 54 68 65 20 56 41 43 55 55 4d 20  {.<p>The VACUUM 
10330 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20 53 51  command is an SQ
10340 4c 69 74 65 20 65 78 74 65 6e 73 69 6f 6e 20 6d  Lite extension m
10350 6f 64 65 6c 65 64 20 61 66 74 65 72 20 61 20 73  odeled after a s
10360 69 6d 69 6c 61 72 0a 63 6f 6d 6d 61 6e 64 20 66  imilar.command f
10370 6f 75 6e 64 20 69 6e 20 50 6f 73 74 67 72 65 53  ound in PostgreS
10380 51 4c 2e 20 20 49 66 20 56 41 43 55 55 4d 20 69  QL.  If VACUUM i
10390 73 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74  s invoked with t
103a0 68 65 20 6e 61 6d 65 20 6f 66 20 61 0a 74 61 62  he name of a.tab
103b0 6c 65 20 6f 72 20 69 6e 64 65 78 20 74 68 65 6e  le or index then
103c0 20 69 74 20 69 73 20 73 75 70 70 6f 73 65 20 74   it is suppose t
103d0 6f 20 63 6c 65 61 6e 20 75 70 20 74 68 65 20 6e  o clean up the n
103e0 61 6d 65 64 20 74 61 62 6c 65 20 6f 72 20 69 6e  amed table or in
103f0 64 65 78 2e 0a 49 6e 20 76 65 72 73 69 6f 6e 20  dex..In version 
10400 31 2e 30 20 6f 66 20 53 51 4c 69 74 65 2c 20 74  1.0 of SQLite, t
10410 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e  he VACUUM comman
10420 64 20 77 6f 75 6c 64 20 69 6e 76 6f 6b 65 20 0a  d would invoke .
10430 3c 62 3e 67 64 62 6d 5f 72 65 6f 72 67 61 6e 69  <b>gdbm_reorgani
10440 7a 65 28 29 3c 2f 62 3e 20 74 6f 20 63 6c 65 61  ze()</b> to clea
10450 6e 20 75 70 20 74 68 65 20 62 61 63 6b 65 6e 64  n up the backend
10460 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 3c   database file.<
10470 2f 70 3e 0a 0a 3c 70 3e 0a 56 41 43 55 55 4d 20  /p>..<p>.VACUUM 
10480 62 65 63 61 6d 65 20 61 20 6e 6f 2d 6f 70 20 77  became a no-op w
10490 68 65 6e 20 74 68 65 20 47 44 42 4d 20 62 61 63  hen the GDBM bac
104a0 6b 65 6e 64 20 77 61 73 20 72 65 6d 6f 76 65 64  kend was removed
104b0 20 66 72 6f 6d 0a 53 51 4c 49 54 45 20 69 6e 20   from.SQLITE in 
104c0 76 65 72 73 69 6f 6e 20 32 2e 30 2e 30 2e 0a 56  version 2.0.0..V
104d0 41 43 55 55 4d 20 77 61 73 20 72 65 69 6d 70 6c  ACUUM was reimpl
104e0 65 6d 65 6e 74 65 64 20 69 6e 20 76 65 72 73 69  emented in versi
104f0 6f 6e 20 32 2e 38 2e 31 2e 0a 54 68 65 20 69 6e  on 2.8.1..The in
10500 64 65 78 20 6f 72 20 74 61 62 6c 65 20 6e 61 6d  dex or table nam
10510 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6e 6f  e argument is no
10520 77 20 69 67 6e 6f 72 65 64 2e 0a 3c 2f 70 3e 0a  w ignored..</p>.
10530 0a 3c 70 3e 57 68 65 6e 20 61 6e 20 6f 62 6a 65  .<p>When an obje
10540 63 74 20 28 74 61 62 6c 65 2c 20 69 6e 64 65 78  ct (table, index
10550 2c 20 6f 72 20 74 72 69 67 67 65 72 29 20 69 73  , or trigger) is
10560 20 64 72 6f 70 70 65 64 20 66 72 6f 6d 20 74 68   dropped from th
10570 65 20 0a 64 61 74 61 62 61 73 65 2c 20 69 74 20  e .database, it 
10580 6c 65 61 76 65 73 20 62 65 68 69 6e 64 20 65 6d  leaves behind em
10590 70 74 79 20 73 70 61 63 65 2e 20 20 54 68 69 73  pty space.  This
105a0 20 6d 61 6b 65 73 20 74 68 65 20 64 61 74 61 62   makes the datab
105b0 61 73 65 20 0a 66 69 6c 65 20 6c 61 72 67 65 72  ase .file larger
105c0 20 74 68 61 6e 20 69 74 20 6e 65 65 64 73 20 74   than it needs t
105d0 6f 20 62 65 2c 20 62 75 74 20 63 61 6e 20 73 70  o be, but can sp
105e0 65 65 64 20 75 70 20 69 6e 73 65 72 74 73 2e 20  eed up inserts. 
105f0 20 49 6e 20 74 69 6d 65 20 0a 69 6e 73 65 72 74   In time .insert
10600 73 20 61 6e 64 20 64 65 6c 65 74 65 73 20 63 61  s and deletes ca
10610 6e 20 6c 65 61 76 65 20 74 68 65 20 64 61 74 61  n leave the data
10620 62 61 73 65 20 66 69 6c 65 20 73 74 72 75 63 74  base file struct
10630 75 72 65 20 66 72 61 67 6d 65 6e 74 65 64 2c 20  ure fragmented, 
10640 0a 77 68 69 63 68 20 73 6c 6f 77 73 20 64 6f 77  .which slows dow
10650 6e 20 64 69 73 6b 20 61 63 63 65 73 73 20 74 6f  n disk access to
10660 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
10670 6e 74 65 6e 74 73 2e 0a 0a 54 68 65 20 56 41 43  ntents...The VAC
10680 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 63 6c 65 61  UUM command clea
10690 6e 73 0a 74 68 65 20 6d 61 69 6e 20 64 61 74 61  ns.the main data
106a0 62 61 73 65 20 62 79 20 63 6f 70 79 69 6e 67 20  base by copying 
106b0 69 74 73 20 63 6f 6e 74 65 6e 74 73 20 74 6f 20  its contents to 
106c0 61 20 74 65 6d 70 6f 72 61 72 79 20 64 61 74 61  a temporary data
106d0 62 61 73 65 20 66 69 6c 65 20 61 6e 64 20 0a 72  base file and .r
106e0 65 6c 6f 61 64 69 6e 67 20 74 68 65 20 6f 72 69  eloading the ori
106f0 67 69 6e 61 6c 20 64 61 74 61 62 61 73 65 20 66  ginal database f
10700 69 6c 65 20 66 72 6f 6d 20 74 68 65 20 63 6f 70  ile from the cop
10710 79 2e 20 20 54 68 69 73 20 65 6c 69 6d 69 6e 61  y.  This elimina
10720 74 65 73 20 0a 66 72 65 65 20 70 61 67 65 73 2c  tes .free pages,
10730 20 20 61 6c 69 67 6e 73 20 74 61 62 6c 65 20 64    aligns table d
10740 61 74 61 20 74 6f 20 62 65 20 63 6f 6e 74 69 67  ata to be contig
10750 75 6f 75 73 2c 20 61 6e 64 20 6f 74 68 65 72 77  uous, and otherw
10760 69 73 65 20 63 6c 65 61 6e 73 20 0a 75 70 20 74  ise cleans .up t
10770 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
10780 20 73 74 72 75 63 74 75 72 65 2e 20 49 74 20 69   structure. It i
10790 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74  s not possible t
107a0 6f 20 70 65 72 66 6f 72 6d 20 74 68 65 20 73 61  o perform the sa
107b0 6d 65 0a 70 72 6f 63 65 73 73 20 6f 6e 20 61 6e  me.process on an
107c0 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
107d0 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70  se file.</p>..<p
107e0 3e 54 68 69 73 20 63 6f 6d 6d 61 6e 64 20 77 69  >This command wi
107f0 6c 6c 20 66 61 69 6c 20 69 66 20 74 68 65 72 65  ll fail if there
10800 20 69 73 20 61 6e 20 61 63 74 69 76 65 20 74 72   is an active tr
10810 61 6e 73 61 63 74 69 6f 6e 2e 20 20 54 68 69 73  ansaction.  This
10820 20 0a 63 6f 6d 6d 61 6e 64 20 68 61 73 20 6e 6f   .command has no
10830 20 65 66 66 65 63 74 20 6f 6e 20 61 6e 20 69 6e   effect on an in
10840 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65  -memory database
10850 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 73 20 6f 66 20  .</p>..<p>As of 
10860 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33  SQLite version 3
10870 2e 31 2c 20 61 6e 20 61 6c 74 65 72 6e 61 74 69  .1, an alternati
10880 76 65 20 74 6f 20 75 73 69 6e 67 20 74 68 65 20  ve to using the 
10890 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 0a 69  VACUUM command.i
108a0 73 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 6d 6f  s auto-vacuum mo
108b0 64 65 2c 20 65 6e 61 62 6c 65 64 20 75 73 69 6e  de, enabled usin
108c0 67 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d 22  g the .<a href="
108d0 70 72 61 67 6d 61 2e 68 74 6d 6c 23 70 72 61 67  pragma.html#prag
108e0 6d 61 5f 61 75 74 6f 5f 76 61 63 75 75 6d 22 3e  ma_auto_vacuum">
108f0 61 75 74 6f 5f 76 61 63 75 75 6d 20 70 72 61 67  auto_vacuum prag
10900 6d 61 3c 2f 61 3e 2e 3c 2f 70 3e 0a 7d 0a 0a 23  ma</a>.</p>.}..#
10910 20 41 20 6c 69 73 74 20 6f 66 20 6b 65 79 77 6f   A list of keywo
10920 72 64 73 2e 20 20 41 20 61 73 74 65 72 69 73 6b  rds.  A asterisk
10930 20 6f 63 63 75 72 73 20 61 66 74 65 72 20 74 68   occurs after th
10940 65 20 6b 65 79 77 6f 72 64 20 69 66 20 69 74 20  e keyword if it 
10950 69 73 20 6f 6e 0a 23 20 74 68 65 20 66 61 6c 6c  is on.# the fall
10960 62 61 63 6b 20 6c 69 73 74 2e 0a 23 0a 73 65 74  back list..#.set
10970 20 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20 5b 6c   keyword_list [l
10980 73 6f 72 74 20 7b 0a 20 20 20 41 42 4f 52 54 2a  sort {.   ABORT*
10990 0a 20 20 20 41 46 54 45 52 2a 0a 20 20 20 41 4c  .   AFTER*.   AL
109a0 4c 0a 20 20 20 41 4c 54 45 52 0a 20 20 20 41 4e  L.   ALTER.   AN
109b0 44 0a 20 20 20 41 53 0a 20 20 20 41 53 43 2a 0a  D.   AS.   ASC*.
109c0 20 20 20 41 54 54 41 43 48 2a 0a 20 20 20 41 55     ATTACH*.   AU
109d0 54 4f 49 4e 43 52 45 4d 45 4e 54 0a 20 20 20 42  TOINCREMENT.   B
109e0 45 46 4f 52 45 2a 0a 20 20 20 42 45 47 49 4e 2a  EFORE*.   BEGIN*
109f0 0a 20 20 20 42 45 54 57 45 45 4e 0a 20 20 20 42  .   BETWEEN.   B
10a00 59 0a 20 20 20 43 41 53 43 41 44 45 2a 0a 20 20  Y.   CASCADE*.  
10a10 20 43 41 53 45 0a 20 20 20 43 48 45 43 4b 0a 20   CASE.   CHECK. 
10a20 20 20 43 4f 4c 4c 41 54 45 0a 20 20 20 43 4f 4d    COLLATE.   COM
10a30 4d 49 54 0a 20 20 20 43 4f 4e 46 4c 49 43 54 2a  MIT.   CONFLICT*
10a40 0a 20 20 20 43 4f 4e 53 54 52 41 49 4e 54 0a 20  .   CONSTRAINT. 
10a50 20 20 43 52 45 41 54 45 0a 20 20 20 43 52 4f 53    CREATE.   CROS
10a60 53 0a 20 20 20 43 55 52 52 45 4e 54 5f 44 41 54  S.   CURRENT_DAT
10a70 45 2a 0a 20 20 20 43 55 52 52 45 4e 54 5f 54 49  E*.   CURRENT_TI
10a80 4d 45 2a 0a 20 20 20 43 55 52 52 45 4e 54 5f 54  ME*.   CURRENT_T
10a90 49 4d 45 53 54 41 4d 50 2a 0a 20 20 20 44 41 54  IMESTAMP*.   DAT
10aa0 41 42 41 53 45 2a 0a 20 20 20 44 45 46 41 55 4c  ABASE*.   DEFAUL
10ab0 54 0a 20 20 20 44 45 46 45 52 52 45 44 2a 0a 20  T.   DEFERRED*. 
10ac0 20 20 44 45 46 45 52 52 41 42 4c 45 0a 20 20 20    DEFERRABLE.   
10ad0 44 45 4c 45 54 45 0a 20 20 20 44 45 53 43 2a 0a  DELETE.   DESC*.
10ae0 20 20 20 44 45 54 41 43 48 2a 0a 20 20 20 44 49     DETACH*.   DI
10af0 53 54 49 4e 43 54 0a 20 20 20 44 52 4f 50 0a 20  STINCT.   DROP. 
10b00 20 20 45 4e 44 2a 0a 20 20 20 45 41 43 48 2a 0a    END*.   EACH*.
10b10 20 20 20 45 4c 53 45 0a 20 20 20 45 53 43 41 50     ELSE.   ESCAP
10b20 45 0a 20 20 20 45 58 43 45 50 54 0a 20 20 20 45  E.   EXCEPT.   E
10b30 58 43 4c 55 53 49 56 45 2a 0a 20 20 20 45 58 50  XCLUSIVE*.   EXP
10b40 4c 41 49 4e 2a 0a 20 20 20 46 41 49 4c 2a 0a 20  LAIN*.   FAIL*. 
10b50 20 20 46 4f 52 2a 0a 20 20 20 46 4f 52 45 49 47    FOR*.   FOREIG
10b60 4e 0a 20 20 20 46 52 4f 4d 0a 20 20 20 46 55 4c  N.   FROM.   FUL
10b70 4c 0a 20 20 20 47 4c 4f 42 2a 0a 20 20 20 47 52  L.   GLOB*.   GR
10b80 4f 55 50 0a 20 20 20 48 41 56 49 4e 47 0a 20 20  OUP.   HAVING.  
10b90 20 49 47 4e 4f 52 45 2a 0a 20 20 20 49 4d 4d 45   IGNORE*.   IMME
10ba0 44 49 41 54 45 2a 0a 20 20 20 49 4e 0a 20 20 20  DIATE*.   IN.   
10bb0 49 4e 44 45 58 0a 20 20 20 49 4e 49 54 49 41 4c  INDEX.   INITIAL
10bc0 4c 59 2a 0a 20 20 20 49 4e 4e 45 52 0a 20 20 20  LY*.   INNER.   
10bd0 49 4e 53 45 52 54 0a 20 20 20 49 4e 53 54 45 41  INSERT.   INSTEA
10be0 44 2a 0a 20 20 20 49 4e 54 45 52 53 45 43 54 0a  D*.   INTERSECT.
10bf0 20 20 20 49 4e 54 4f 0a 20 20 20 49 53 0a 20 20     INTO.   IS.  
10c00 20 49 53 4e 55 4c 4c 0a 20 20 20 4a 4f 49 4e 0a   ISNULL.   JOIN.
10c10 20 20 20 4b 45 59 2a 0a 20 20 20 4c 45 46 54 0a     KEY*.   LEFT.
10c20 20 20 20 4c 49 4b 45 2a 0a 20 20 20 4c 49 4d 49     LIKE*.   LIMI
10c30 54 0a 20 20 20 4d 41 54 43 48 2a 0a 20 20 20 4e  T.   MATCH*.   N
10c40 41 54 55 52 41 4c 0a 20 20 20 4e 4f 54 0a 20 20  ATURAL.   NOT.  
10c50 20 4e 4f 54 4e 55 4c 4c 0a 20 20 20 4e 55 4c 4c   NOTNULL.   NULL
10c60 0a 20 20 20 4f 46 2a 0a 20 20 20 4f 46 46 53 45  .   OF*.   OFFSE
10c70 54 2a 0a 20 20 20 4f 4e 0a 20 20 20 4f 52 0a 20  T*.   ON.   OR. 
10c80 20 20 4f 52 44 45 52 0a 20 20 20 4f 55 54 45 52    ORDER.   OUTER
10c90 0a 20 20 20 50 52 41 47 4d 41 2a 0a 20 20 20 50  .   PRAGMA*.   P
10ca0 52 49 4d 41 52 59 0a 20 20 20 52 41 49 53 45 2a  RIMARY.   RAISE*
10cb0 0a 20 20 20 52 45 46 45 52 45 4e 43 45 53 0a 20  .   REFERENCES. 
10cc0 20 20 52 45 49 4e 44 45 58 2a 0a 20 20 20 52 45    REINDEX*.   RE
10cd0 4e 41 4d 45 2a 0a 20 20 20 52 45 50 4c 41 43 45  NAME*.   REPLACE
10ce0 2a 0a 20 20 20 52 45 53 54 52 49 43 54 2a 0a 20  *.   RESTRICT*. 
10cf0 20 20 52 49 47 48 54 0a 20 20 20 52 4f 4c 4c 42    RIGHT.   ROLLB
10d00 41 43 4b 0a 20 20 20 52 4f 57 2a 0a 20 20 20 53  ACK.   ROW*.   S
10d10 45 4c 45 43 54 0a 20 20 20 53 45 54 0a 20 20 20  ELECT.   SET.   
10d20 53 54 41 54 45 4d 45 4e 54 2a 0a 20 20 20 54 41  STATEMENT*.   TA
10d30 42 4c 45 0a 20 20 20 54 45 4d 50 2a 0a 20 20 20  BLE.   TEMP*.   
10d40 54 45 4d 50 4f 52 41 52 59 2a 0a 20 20 20 54 48  TEMPORARY*.   TH
10d50 45 4e 0a 20 20 20 54 4f 0a 20 20 20 54 52 41 4e  EN.   TO.   TRAN
10d60 53 41 43 54 49 4f 4e 0a 20 20 20 54 52 49 47 47  SACTION.   TRIGG
10d70 45 52 2a 0a 20 20 20 55 4e 49 4f 4e 0a 20 20 20  ER*.   UNION.   
10d80 55 4e 49 51 55 45 0a 20 20 20 55 50 44 41 54 45  UNIQUE.   UPDATE
10d90 0a 20 20 20 55 53 49 4e 47 0a 20 20 20 56 41 43  .   USING.   VAC
10da0 55 55 4d 2a 0a 20 20 20 56 41 4c 55 45 53 0a 20  UUM*.   VALUES. 
10db0 20 20 56 49 45 57 2a 0a 20 20 20 57 48 45 4e 0a    VIEW*.   WHEN.
10dc0 20 20 20 57 48 45 52 45 0a 7d 5d 0a 0a 0a 0a 53     WHERE.}]....S
10dd0 65 63 74 69 6f 6e 20 7b 53 51 4c 69 74 65 20 6b  ection {SQLite k
10de0 65 79 77 6f 72 64 73 7d 20 6b 65 79 77 6f 72 64  eywords} keyword
10df0 73 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  s..puts {.<p>The
10e00 20 53 51 4c 20 73 74 61 6e 64 61 72 64 20 73 70   SQL standard sp
10e10 65 63 69 66 69 65 73 20 61 20 68 75 67 65 20 6e  ecifies a huge n
10e20 75 6d 62 65 72 20 6f 66 20 6b 65 79 77 6f 72 64  umber of keyword
10e30 73 20 77 68 69 63 68 20 6d 61 79 20 6e 6f 74 0a  s which may not.
10e40 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20 6e  be used as the n
10e50 61 6d 65 73 20 6f 66 20 74 61 62 6c 65 73 2c 20  ames of tables, 
10e60 69 6e 64 69 63 65 73 2c 20 63 6f 6c 75 6d 6e 73  indices, columns
10e70 2c 20 6f 72 20 64 61 74 61 62 61 73 65 73 2e 20  , or databases. 
10e80 20 54 68 65 0a 6c 69 73 74 20 69 73 20 73 6f 20   The.list is so 
10e90 6c 6f 6e 67 20 74 68 61 74 20 66 65 77 20 70 65  long that few pe
10ea0 6f 70 6c 65 20 63 61 6e 20 72 65 6d 65 6d 62 65  ople can remembe
10eb0 72 20 74 68 65 6d 20 61 6c 6c 2e 20 20 46 6f 72  r them all.  For
10ec0 20 6d 6f 73 74 20 53 51 4c 0a 63 6f 64 65 2c 20   most SQL.code, 
10ed0 79 6f 75 72 20 73 61 66 65 73 74 20 62 65 74 20  your safest bet 
10ee0 69 73 20 74 6f 20 6e 65 76 65 72 20 75 73 65 20  is to never use 
10ef0 61 6e 79 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67  any English lang
10f00 75 61 67 65 20 77 6f 72 64 20 61 73 20 74 68 65  uage word as the
10f10 0a 6e 61 6d 65 20 6f 66 20 61 20 75 73 65 72 2d  .name of a user-
10f20 64 65 66 69 6e 65 64 20 6f 62 6a 65 63 74 2e 3c  defined object.<
10f30 2f 70 3e 0a 0a 3c 70 3e 49 66 20 79 6f 75 20 77  /p>..<p>If you w
10f40 61 6e 74 20 74 6f 20 75 73 65 20 61 20 6b 65 79  ant to use a key
10f50 77 6f 72 64 20 61 73 20 61 20 6e 61 6d 65 2c 20  word as a name, 
10f60 79 6f 75 20 6e 65 65 64 20 74 6f 20 71 75 6f 74  you need to quot
10f70 65 20 69 74 2e 20 20 54 68 65 72 65 0a 61 72 65  e it.  There.are
10f80 20 74 68 72 65 65 20 77 61 79 73 20 6f 66 20 71   three ways of q
10f90 75 6f 74 69 6e 67 20 6b 65 79 77 6f 72 64 73 20  uoting keywords 
10fa0 69 6e 20 53 51 4c 69 74 65 3a 3c 2f 70 3e 0a 0a  in SQLite:</p>..
10fb0 3c 70 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  <p>.<blockquote>
10fc0 0a 3c 74 61 62 6c 65 3e 0a 3c 74 72 3e 09 3c 74  .<table>.<tr>.<t
10fd0 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c  d valign="top"><
10fe0 62 3e 27 6b 65 79 77 6f 72 64 27 3c 2f 62 3e 3c  b>'keyword'</b><
10ff0 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32  /td><td width="2
11000 30 22 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20  0"></td>..<td>A 
11010 6b 65 79 77 6f 72 64 20 69 6e 20 73 69 6e 67 6c  keyword in singl
11020 65 20 71 75 6f 74 65 73 20 69 73 20 69 6e 74 65  e quotes is inte
11030 72 70 72 65 74 65 64 20 61 73 20 61 20 6c 69 74  rpreted as a lit
11040 65 72 61 6c 20 73 74 72 69 6e 67 0a 20 20 20 20  eral string.    
11050 20 20 20 20 69 66 20 69 74 20 6f 63 63 75 72 73      if it occurs
11060 20 69 6e 20 61 20 63 6f 6e 74 65 78 74 20 77 68   in a context wh
11070 65 72 65 20 61 20 73 74 72 69 6e 67 20 6c 69 74  ere a string lit
11080 65 72 61 6c 20 69 73 20 61 6c 6c 6f 77 65 64 2c  eral is allowed,
11090 20 6f 74 68 65 72 77 69 73 65 0a 09 69 74 20 69   otherwise..it i
110a0 73 20 75 6e 64 65 72 73 74 6f 6f 64 20 61 73 20  s understood as 
110b0 61 6e 20 69 64 65 6e 74 69 66 69 65 72 2e 3c 2f  an identifier.</
110c0 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 09 3c 74  td></tr>.<tr>.<t
110d0 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c  d valign="top"><
110e0 62 3e 22 6b 65 79 77 6f 72 64 22 3c 2f 62 3e 3c  b>"keyword"</b><
110f0 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c  /td><td></td>..<
11100 74 64 3e 41 20 6b 65 79 77 6f 72 64 20 69 6e 20  td>A keyword in 
11110 64 6f 75 62 6c 65 2d 71 75 6f 74 65 73 20 69 73  double-quotes is
11120 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20   interpreted as 
11130 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 69 66  an identifier if
11140 0a 20 20 20 20 20 20 20 20 69 74 20 6d 61 74 63  .        it matc
11150 68 65 73 20 61 20 6b 6e 6f 77 6e 20 69 64 65 6e  hes a known iden
11160 74 69 66 69 65 72 2e 20 20 4f 74 68 65 72 77 69  tifier.  Otherwi
11170 73 65 20 69 74 20 69 73 20 69 6e 74 65 72 70 72  se it is interpr
11180 65 74 65 64 20 61 73 20 61 0a 20 20 20 20 20 20  eted as a.      
11190 20 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c    string literal
111a0 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e  .</td></tr>.<tr>
111b0 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
111c0 22 3e 3c 62 3e 5b 6b 65 79 77 6f 72 64 5d 3c 2f  "><b>[keyword]</
111d0 62 3e 3c 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e  b></td><td></td>
111e0 0a 09 3c 74 64 3e 41 20 6b 65 79 77 6f 72 64 20  ..<td>A keyword 
111f0 65 6e 63 6c 6f 73 65 64 20 69 6e 20 73 71 75 61  enclosed in squa
11200 72 65 20 62 72 61 63 6b 65 74 73 20 69 73 20 61  re brackets is a
11210 6c 77 61 79 73 20 75 6e 64 65 72 73 74 6f 6f 64  lways understood
11220 20 61 73 0a 20 20 20 20 20 20 20 20 61 6e 20 69   as.        an i
11230 64 65 6e 74 69 66 69 65 72 2e 20 20 54 68 69 73  dentifier.  This
11240 20 69 73 20 6e 6f 74 20 73 74 61 6e 64 61 72 64   is not standard
11250 20 53 51 4c 2e 20 20 54 68 69 73 20 71 75 6f 74   SQL.  This quot
11260 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d 0a 20 20  ing mechanism.  
11270 20 20 20 20 20 20 69 73 20 75 73 65 64 20 62 79        is used by
11280 20 4d 53 20 41 63 63 65 73 73 20 61 6e 64 20 53   MS Access and S
11290 51 4c 20 53 65 72 76 65 72 20 61 6e 64 20 69 73  QL Server and is
112a0 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 53 51 4c   included in SQL
112b0 69 74 65 20 66 6f 72 0a 20 20 20 20 20 20 20 20  ite for.        
112c0 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 3c 2f  compatibility.</
112d0 74 64 3e 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65  td></tr>.</table
112e0 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >.</blockquote>.
112f0 3c 2f 70 3e 0a 0a 3c 70 3e 51 75 6f 74 65 64 20  </p>..<p>Quoted 
11300 6b 65 79 77 6f 72 64 73 20 61 72 65 20 75 6e 61  keywords are una
11310 65 73 74 68 65 74 69 63 2e 0a 54 6f 20 68 65 6c  esthetic..To hel
11320 70 20 79 6f 75 20 61 76 6f 69 64 20 74 68 65 6d  p you avoid them
11330 2c 20 53 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20  , SQLite allows 
11340 6d 61 6e 79 20 6b 65 79 77 6f 72 64 73 20 74 6f  many keywords to
11350 20 62 65 20 75 73 65 64 20 75 6e 71 75 6f 74 65   be used unquote
11360 64 0a 61 73 20 74 68 65 20 6e 61 6d 65 73 20 6f  d.as the names o
11370 66 20 64 61 74 61 62 61 73 65 73 2c 20 74 61 62  f databases, tab
11380 6c 65 73 2c 20 69 6e 64 69 63 65 73 2c 20 74 72  les, indices, tr
11390 69 67 67 65 72 73 2c 20 76 69 65 77 73 2c 20 61  iggers, views, a
113a0 6e 64 2f 6f 72 20 63 6f 6c 75 6d 6e 73 2e 0a 49  nd/or columns..I
113b0 6e 20 74 68 65 20 6c 69 73 74 20 6f 66 20 6b 65  n the list of ke
113c0 79 77 6f 72 64 73 20 74 68 61 74 20 66 6f 6c 6c  ywords that foll
113d0 6f 77 73 2c 20 74 68 6f 73 65 20 74 68 61 74 20  ows, those that 
113e0 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 69  can be used as i
113f0 64 65 6e 74 69 66 69 65 72 73 0a 61 72 65 20 73  dentifiers.are s
11400 68 6f 77 6e 20 69 6e 20 61 6e 20 69 74 61 6c 69  hown in an itali
11410 63 20 66 6f 6e 74 2e 20 20 4b 65 79 77 6f 72 64  c font.  Keyword
11420 73 20 74 68 61 74 20 6d 75 73 74 20 62 65 20 71  s that must be q
11430 75 6f 74 65 64 20 69 6e 20 6f 72 64 65 72 20 74  uoted in order t
11440 6f 20 62 65 0a 75 73 65 64 20 61 73 20 69 64 65  o be.used as ide
11450 6e 74 69 66 69 65 72 73 20 61 72 65 20 73 68 6f  ntifiers are sho
11460 77 6e 20 69 6e 20 62 6f 6c 64 2e 3c 2f 70 3e 0a  wn in bold.</p>.
11470 0a 3c 70 3e 0a 53 51 4c 69 74 65 20 61 64 64 73  .<p>.SQLite adds
11480 20 6e 65 77 20 6b 65 79 77 6f 72 64 73 20 66 72   new keywords fr
11490 6f 6d 20 74 69 6d 65 20 74 6f 20 74 69 6d 65 20  om time to time 
114a0 77 68 65 6e 20 69 74 20 74 61 6b 65 20 6f 6e 20  when it take on 
114b0 6e 65 77 20 66 65 61 74 75 72 65 73 2e 0a 53 6f  new features..So
114c0 20 74 6f 20 70 72 65 76 65 6e 74 20 79 6f 75 20   to prevent you 
114d0 63 6f 64 65 20 66 72 6f 6d 20 62 65 69 6e 67 20  code from being 
114e0 62 72 6f 6b 65 6e 20 62 79 20 66 75 74 75 72 65  broken by future
114f0 20 65 6e 68 61 6e 63 65 6d 65 6e 74 73 2c 20 79   enhancements, y
11500 6f 75 20 73 68 6f 75 6c 64 0a 6e 6f 72 6d 61 6c  ou should.normal
11510 6c 79 20 71 75 6f 74 65 20 61 6e 79 20 69 6e 64  ly quote any ind
11520 65 6e 74 69 66 69 65 72 20 74 68 61 74 20 69 73  entifier that is
11530 20 61 6e 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67   an English lang
11540 75 61 67 65 20 77 6f 72 64 2c 20 65 76 65 6e 20  uage word, even 
11550 69 66 0a 79 6f 75 20 64 6f 20 6e 6f 74 20 68 61  if.you do not ha
11560 76 65 20 74 6f 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  ve to..</p>..<p>
11570 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61  .The following a
11580 72 65 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20  re the keywords 
11590 63 75 72 72 65 6e 74 6c 79 20 72 65 63 6f 67 6e  currently recogn
115a0 69 7a 65 64 20 62 79 20 53 51 4c 69 74 65 3a 0a  ized by SQLite:.
115b0 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
115c0 65 3e 0a 3c 74 61 62 6c 65 20 77 69 64 74 68 3d  e>.<table width=
115d0 22 31 30 30 25 22 3e 0a 3c 74 72 3e 0a 3c 74 64  "100%">.<tr>.<td
115e0 20 61 6c 69 67 6e 3d 22 6c 65 66 74 22 20 76 61   align="left" va
115f0 6c 69 67 6e 3d 22 74 6f 70 22 20 77 69 64 74 68  lign="top" width
11600 3d 22 32 30 25 22 3e 0a 7d 0a 0a 73 65 74 20 6e  ="20%">.}..set n
11610 20 5b 6c 6c 65 6e 67 74 68 20 24 6b 65 79 77 6f   [llength $keywo
11620 72 64 5f 6c 69 73 74 5d 0a 73 65 74 20 6e 43 6f  rd_list].set nCo
11630 6c 20 35 0a 73 65 74 20 6e 52 6f 77 20 5b 65 78  l 5.set nRow [ex
11640 70 72 20 7b 28 24 6e 2b 24 6e 43 6f 6c 2d 31 29  pr {($n+$nCol-1)
11650 2f 24 6e 43 6f 6c 7d 5d 0a 73 65 74 20 69 20 30  /$nCol}].set i 0
11660 0a 66 6f 72 65 61 63 68 20 77 6f 72 64 20 24 6b  .foreach word $k
11670 65 79 77 6f 72 64 5f 6c 69 73 74 20 7b 0a 20 20  eyword_list {.  
11680 69 66 20 7b 5b 73 74 72 69 6e 67 20 69 6e 64 65  if {[string inde
11690 78 20 24 77 6f 72 64 20 65 6e 64 5d 3d 3d 22 2a  x $word end]=="*
116a0 22 7d 20 7b 0a 20 20 20 20 73 65 74 20 77 6f 72  "} {.    set wor
116b0 64 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20  d [string range 
116c0 24 77 6f 72 64 20 30 20 65 6e 64 2d 31 5d 0a 20  $word 0 end-1]. 
116d0 20 20 20 73 65 74 20 66 6f 6e 74 20 69 0a 20 20     set font i.  
116e0 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 73 65 74  } else {.    set
116f0 20 66 6f 6e 74 20 62 0a 20 20 7d 0a 20 20 69 66   font b.  }.  if
11700 20 7b 24 69 3d 3d 24 6e 52 6f 77 7d 20 7b 0a 20   {$i==$nRow} {. 
11710 20 20 20 70 75 74 73 20 22 3c 2f 74 64 3e 3c 74     puts "</td><t
11720 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22  d valign=\"top\"
11730 20 61 6c 69 67 6e 3d 5c 22 6c 65 66 74 5c 22 20   align=\"left\" 
11740 77 69 64 74 68 3d 5c 22 32 30 25 5c 22 3e 22 0a  width=\"20%\">".
11750 20 20 20 20 73 65 74 20 69 20 31 0a 20 20 7d 20      set i 1.  } 
11760 65 6c 73 65 20 7b 0a 20 20 20 20 69 6e 63 72 20  else {.    incr 
11770 69 0a 20 20 7d 0a 20 20 70 75 74 73 20 22 3c 24  i.  }.  puts "<$
11780 66 6f 6e 74 3e 24 77 6f 72 64 3c 2f 24 66 6f 6e  font>$word</$fon
11790 74 3e 3c 62 72 3e 22 0a 7d 0a 0a 70 75 74 73 20  t><br>".}..puts 
117a0 7b 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f 74 61  {.</td></tr></ta
117b0 62 6c 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  ble></blockquote
117c0 3e 0a 0a 3c 68 32 3e 53 70 65 63 69 61 6c 20 6e  >..<h2>Special n
117d0 61 6d 65 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68  ames</h2>..<p>Th
117e0 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20  e following are 
117f0 6e 6f 74 20 6b 65 79 77 6f 72 64 73 20 69 6e 20  not keywords in 
11800 53 51 4c 69 74 65 2c 20 62 75 74 20 61 72 65 20  SQLite, but are 
11810 75 73 65 64 20 61 73 20 6e 61 6d 65 73 20 6f 66  used as names of
11820 20 0a 73 79 73 74 65 6d 20 6f 62 6a 65 63 74 73   .system objects
11830 2e 20 20 54 68 65 79 20 63 61 6e 20 62 65 20 75  .  They can be u
11840 73 65 64 20 61 73 20 61 6e 20 69 64 65 6e 74 69  sed as an identi
11850 66 69 65 72 20 66 6f 72 20 61 20 64 69 66 66 65  fier for a diffe
11860 72 65 6e 74 20 0a 74 79 70 65 20 6f 66 20 6f 62  rent .type of ob
11870 6a 65 63 74 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  ject.</p>..<bloc
11880 6b 71 75 6f 74 65 3e 3c 62 3e 0a 20 20 5f 52 4f  kquote><b>.  _RO
11890 57 49 44 5f 3c 62 72 3e 0a 20 20 4d 41 49 4e 3c  WID_<br>.  MAIN<
118a0 62 72 3e 0a 20 20 4f 49 44 3c 62 72 3e 0a 20 20  br>.  OID<br>.  
118b0 52 4f 57 49 44 3c 62 72 3e 0a 20 20 53 51 4c 49  ROWID<br>.  SQLI
118c0 54 45 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20  TE_MASTER<br>.  
118d0 53 51 4c 49 54 45 5f 53 45 51 55 45 4e 43 45 3c  SQLITE_SEQUENCE<
118e0 62 72 3e 0a 20 20 53 51 4c 49 54 45 5f 54 45 4d  br>.  SQLITE_TEM
118f0 50 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20 54  P_MASTER<br>.  T
11900 45 4d 50 3c 62 72 3e 0a 3c 2f 62 3e 3c 2f 62 6c  EMP<br>.</b></bl
11910 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 66 6f 6f  ockquote>.}..foo
11920 74 65 72 20 24 72 63 73 69 64 0a 69 66 20 7b 5b  ter $rcsid.if {[
11930 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 6f  string length $o
11940 75 74 70 75 74 64 69 72 5d 7d 20 7b 0a 20 20 66  utputdir]} {.  f
11950 6f 6f 74 65 72 20 24 72 63 73 69 64 0a 7d 0a     ooter $rcsid.}.