Documentation Source Text

Hex Artifact Content
Login

Artifact 2e446fd20516b33cf6a9d2da83bd765c141888de:


0000: 3c 74 69 74 6c 65 3e 51 75 65 72 79 20 4c 61 6e  <title>Query Lan
0010: 67 75 61 67 65 20 55 6e 64 65 72 73 74 6f 6f 64  guage Understood
0020: 20 62 79 20 53 51 4c 69 74 65 3c 2f 74 69 74 6c   by SQLite</titl
0030: 65 3e 0a 0a 3c 68 32 3e 53 51 4c 20 41 73 20 55  e>..<h2>SQL As U
0040: 6e 64 65 72 73 74 6f 6f 64 20 42 79 20 53 51 4c  nderstood By SQL
0050: 69 74 65 3c 2f 68 32 3e 0a 0a 3c 70 3e 53 51 4c  ite</h2>..<p>SQL
0060: 69 74 65 20 75 6e 64 65 72 73 74 61 6e 64 73 20  ite understands 
0070: 6d 6f 73 74 20 6f 66 20 74 68 65 20 73 74 61 6e  most of the stan
0080: 64 61 72 64 20 53 51 4c 0a 6c 61 6e 67 75 61 67  dard SQL.languag
0090: 65 2e 20 20 42 75 74 20 69 74 20 64 6f 65 73 20  e.  But it does 
00a0: 3c 61 20 68 72 65 66 3d 22 6f 6d 69 74 74 65 64  <a href="omitted
00b0: 2e 68 74 6d 6c 22 3e 6f 6d 69 74 20 73 6f 6d 65  .html">omit some
00c0: 20 66 65 61 74 75 72 65 73 3c 2f 61 3e 0a 77 68   features</a>.wh
00d0: 69 6c 65 20 61 74 20 74 68 65 20 73 61 6d 65 20  ile at the same 
00e0: 74 69 6d 65 0a 61 64 64 69 6e 67 20 61 20 66 65  time.adding a fe
00f0: 77 20 66 65 61 74 75 72 65 73 20 6f 66 20 69 74  w features of it
0100: 73 20 6f 77 6e 2e 20 20 54 68 69 73 20 64 6f 63  s own.  This doc
0110: 75 6d 65 6e 74 20 61 74 74 65 6d 70 74 73 20 74  ument attempts t
0120: 6f 0a 64 65 73 63 72 69 62 65 20 70 72 65 63 69  o.describe preci
0130: 73 65 6c 79 20 77 68 61 74 20 70 61 72 74 73 20  sely what parts 
0140: 6f 66 20 74 68 65 20 53 51 4c 20 6c 61 6e 67 75  of the SQL langu
0150: 61 67 65 20 53 51 4c 69 74 65 20 64 6f 65 73 0a  age SQLite does.
0160: 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 73 75 70  and does not sup
0170: 70 6f 72 74 2e 20 20 41 20 6c 69 73 74 20 6f 66  port.  A list of
0180: 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 6b   <a href="lang_k
0190: 65 79 77 6f 72 64 73 2e 68 74 6d 6c 22 3e 6b 65  eywords.html">ke
01a0: 79 77 6f 72 64 73 3c 2f 61 3e 20 69 73 20 0a 61  ywords</a> is .a
01b0: 6c 73 6f 20 70 72 6f 76 69 64 65 64 2e 3c 2f 70  lso provided.</p
01c0: 3e 0a 0a 3c 70 3e 49 6e 20 61 6c 6c 20 6f 66 20  >..<p>In all of 
01d0: 74 68 65 20 73 79 6e 74 61 78 20 64 69 61 67 72  the syntax diagr
01e0: 61 6d 73 20 74 68 61 74 20 66 6f 6c 6c 6f 77 2c  ams that follow,
01f0: 20 6c 69 74 65 72 61 6c 20 74 65 78 74 20 69 73   literal text is
0200: 20 73 68 6f 77 6e 20 69 6e 0a 62 6f 6c 64 20 62   shown in.bold b
0210: 6c 75 65 2e 20 20 4e 6f 6e 2d 74 65 72 6d 69 6e  lue.  Non-termin
0220: 61 6c 20 73 79 6d 62 6f 6c 73 20 61 72 65 20 73  al symbols are s
0230: 68 6f 77 6e 20 69 6e 20 69 74 61 6c 69 63 20 72  hown in italic r
0240: 65 64 2e 20 20 4f 70 65 72 61 74 6f 72 73 0a 74  ed.  Operators.t
0250: 68 61 74 20 61 72 65 20 70 61 72 74 20 6f 66 20  hat are part of 
0260: 74 68 65 20 73 79 6e 74 61 63 74 69 63 20 6d 61  the syntactic ma
0270: 72 6b 75 70 20 69 74 73 65 6c 66 20 61 72 65 20  rkup itself are 
0280: 73 68 6f 77 6e 20 69 6e 20 62 6c 61 63 6b 20 72  shown in black r
0290: 6f 6d 61 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  oman.</p>..<p>Th
02a0: 69 73 20 64 6f 63 75 6d 65 6e 74 20 69 73 20 6a  is document is j
02b0: 75 73 74 20 61 6e 20 6f 76 65 72 76 69 65 77 20  ust an overview 
02c0: 6f 66 20 74 68 65 20 53 51 4c 20 73 79 6e 74 61  of the SQL synta
02d0: 78 20 69 6d 70 6c 65 6d 65 6e 74 65 64 0a 62 79  x implemented.by
02e0: 20 53 51 4c 69 74 65 2e 20 20 4d 61 6e 79 20 6c   SQLite.  Many l
02f0: 6f 77 2d 6c 65 76 65 6c 20 70 72 6f 64 75 63 74  ow-level product
0300: 69 6f 6e 73 20 61 72 65 20 6f 6d 69 74 74 65 64  ions are omitted
0310: 2e 20 20 46 6f 72 20 64 65 74 61 69 6c 65 64 20  .  For detailed 
0320: 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 6f 6e 20 74  information.on t
0330: 68 65 20 6c 61 6e 67 75 61 67 65 20 74 68 61 74  he language that
0340: 20 53 51 4c 69 74 65 20 75 6e 64 65 72 73 74 61   SQLite understa
0350: 6e 64 73 2c 20 72 65 66 65 72 20 74 6f 20 74 68  nds, refer to th
0360: 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 61 6e  e source code an
0370: 64 0a 74 68 65 20 67 72 61 6d 6d 61 72 20 66 69  d.the grammar fi
0380: 6c 65 20 22 70 61 72 73 65 2e 79 22 2e 3c 2f 70  le "parse.y".</p
0390: 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 69 6d 70  >..<p>SQLite imp
03a0: 6c 65 6d 65 6e 74 73 20 74 68 65 20 66 6f 6c 6c  lements the foll
03b0: 6f 77 20 73 79 6e 74 61 78 3a 3c 2f 70 3e 0a 0a  ow syntax:</p>..
03c0: 3c 74 61 62 6c 65 20 77 69 64 74 68 3d 22 31 30  <table width="10
03d0: 30 25 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d  0%" cellpadding=
03e0: 22 35 22 20 62 6f 72 64 65 72 3d 22 30 22 3e 0a  "5" border="0">.
03f0: 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22  <tr><td valign="
0400: 74 6f 70 22 3e 3c 75 6c 3e 0a 0a 3c 74 63 6c 3e  top"><ul>..<tcl>
0410: 0a 73 65 74 20 69 20 30 0a 66 6f 72 65 61 63 68  .set i 0.foreach
0420: 20 7b 73 65 63 74 69 6f 6e 7d 20 5b 6c 73 6f 72   {section} [lsor
0430: 74 20 2d 69 6e 64 65 78 20 30 20 2d 64 69 63 74  t -index 0 -dict
0440: 69 6f 6e 61 72 79 20 7b 0a 20 20 7b 7b 43 52 45  ionary {.  {{CRE
0450: 41 54 45 20 54 41 42 4c 45 7d 20 63 72 65 61 74  ATE TABLE} creat
0460: 65 74 61 62 6c 65 7d 0a 20 20 7b 7b 43 52 45 41  etable}.  {{CREA
0470: 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
0480: 7d 20 63 72 65 61 74 65 76 74 61 62 7d 0a 20 20  } createvtab}.  
0490: 7b 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20  {{CREATE INDEX} 
04a0: 63 72 65 61 74 65 69 6e 64 65 78 7d 0a 20 20 7b  createindex}.  {
04b0: 56 41 43 55 55 4d 20 76 61 63 75 75 6d 7d 0a 20  VACUUM vacuum}. 
04c0: 20 7b 7b 44 52 4f 50 20 54 41 42 4c 45 7d 20 64   {{DROP TABLE} d
04d0: 72 6f 70 74 61 62 6c 65 7d 0a 20 20 7b 7b 44 52  roptable}.  {{DR
04e0: 4f 50 20 49 4e 44 45 58 7d 20 64 72 6f 70 69 6e  OP INDEX} dropin
04f0: 64 65 78 7d 0a 20 20 7b 49 4e 53 45 52 54 20 69  dex}.  {INSERT i
0500: 6e 73 65 72 74 7d 0a 20 20 7b 52 45 50 4c 41 43  nsert}.  {REPLAC
0510: 45 20 72 65 70 6c 61 63 65 7d 0a 20 20 7b 44 45  E replace}.  {DE
0520: 4c 45 54 45 20 64 65 6c 65 74 65 7d 0a 20 20 7b  LETE delete}.  {
0530: 55 50 44 41 54 45 20 75 70 64 61 74 65 7d 0a 20  UPDATE update}. 
0540: 20 7b 53 45 4c 45 43 54 20 73 65 6c 65 63 74 7d   {SELECT select}
0550: 0a 20 20 7b 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d  .  {comment comm
0560: 65 6e 74 7d 0a 20 20 7b 45 58 50 4c 41 49 4e 20  ent}.  {EXPLAIN 
0570: 65 78 70 6c 61 69 6e 7d 0a 20 20 7b 65 78 70 72  explain}.  {expr
0580: 65 73 73 69 6f 6e 20 65 78 70 72 7d 0a 20 20 7b  ession expr}.  {
0590: 7b 42 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49  {BEGIN TRANSACTI
05a0: 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d  ON} transaction}
05b0: 0a 20 20 7b 7b 43 4f 4d 4d 49 54 20 54 52 41 4e  .  {{COMMIT TRAN
05c0: 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63  SACTION} transac
05d0: 74 69 6f 6e 7d 0a 20 20 7b 7b 45 4e 44 20 54 52  tion}.  {{END TR
05e0: 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73  ANSACTION} trans
05f0: 61 63 74 69 6f 6e 7d 0a 20 20 7b 7b 52 4f 4c 4c  action}.  {{ROLL
0600: 42 41 43 4b 20 54 52 41 4e 53 41 43 54 49 4f 4e  BACK TRANSACTION
0610: 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20  } transaction}. 
0620: 20 7b 50 52 41 47 4d 41 20 70 72 61 67 6d 61 2e   {PRAGMA pragma.
0630: 68 74 6d 6c 7d 0a 20 20 7b 7b 4f 4e 20 43 4f 4e  html}.  {{ON CON
0640: 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63 6f  FLICT clause} co
0650: 6e 66 6c 69 63 74 7d 0a 20 20 7b 7b 43 52 45 41  nflict}.  {{CREA
0660: 54 45 20 56 49 45 57 7d 20 63 72 65 61 74 65 76  TE VIEW} createv
0670: 69 65 77 7d 0a 20 20 7b 7b 44 52 4f 50 20 56 49  iew}.  {{DROP VI
0680: 45 57 7d 20 64 72 6f 70 76 69 65 77 7d 0a 20 20  EW} dropview}.  
0690: 7b 7b 43 52 45 41 54 45 20 54 52 49 47 47 45 52  {{CREATE TRIGGER
06a0: 7d 20 63 72 65 61 74 65 74 72 69 67 67 65 72 7d  } createtrigger}
06b0: 0a 20 20 7b 7b 44 52 4f 50 20 54 52 49 47 47 45  .  {{DROP TRIGGE
06c0: 52 7d 20 64 72 6f 70 74 72 69 67 67 65 72 7d 0a  R} droptrigger}.
06d0: 20 20 7b 7b 41 54 54 41 43 48 20 44 41 54 41 42    {{ATTACH DATAB
06e0: 41 53 45 7d 20 61 74 74 61 63 68 7d 0a 20 20 7b  ASE} attach}.  {
06f0: 7b 44 45 54 41 43 48 20 44 41 54 41 42 41 53 45  {DETACH DATABASE
0700: 7d 20 64 65 74 61 63 68 7d 0a 20 20 7b 52 45 49  } detach}.  {REI
0710: 4e 44 45 58 20 72 65 69 6e 64 65 78 7d 0a 20 20  NDEX reindex}.  
0720: 7b 7b 41 4c 54 45 52 20 54 41 42 4c 45 7d 20 61  {{ALTER TABLE} a
0730: 6c 74 65 72 74 61 62 6c 65 7d 0a 20 20 7b 7b 41  ltertable}.  {{A
0740: 4e 41 4c 59 5a 45 7d 20 61 6e 61 6c 79 7a 65 7d  NALYZE} analyze}
0750: 0a 20 20 7b 7b 61 67 67 72 65 67 61 74 65 20 66  .  {{aggregate f
0760: 75 6e 63 74 69 6f 6e 73 7d 20 61 67 67 66 75 6e  unctions} aggfun
0770: 63 7d 0a 20 20 7b 7b 63 6f 72 65 20 66 75 6e 63  c}.  {{core func
0780: 74 69 6f 6e 73 7d 20 63 6f 72 65 66 75 6e 63 7d  tions} corefunc}
0790: 0a 20 20 7b 7b 64 61 74 65 20 61 6e 64 20 74 69  .  {{date and ti
07a0: 6d 65 20 66 75 6e 63 74 69 6f 6e 73 7d 20 64 61  me functions} da
07b0: 74 65 66 75 6e 63 7d 0a 7d 5d 20 7b 0a 20 20 66  tefunc}.}] {.  f
07c0: 6f 72 65 61 63 68 20 7b 73 5f 74 69 74 6c 65 20  oreach {s_title 
07d0: 73 5f 74 61 67 7d 20 24 73 65 63 74 69 6f 6e 20  s_tag} $section 
07e0: 7b 7d 0a 20 20 69 66 20 7b 24 73 5f 74 61 67 3d  {}.  if {$s_tag=
07f0: 3d 22 70 72 61 67 6d 61 2e 68 74 6d 6c 22 7d 20  ="pragma.html"} 
0800: 7b 0a 20 20 20 20 73 65 74 20 75 72 6c 20 24 73  {.    set url $s
0810: 5f 74 61 67 0a 20 20 7d 20 65 6c 73 65 20 7b 0a  _tag.  } else {.
0820: 20 20 20 20 73 65 74 20 75 72 6c 20 6c 61 6e 67      set url lang
0830: 5f 24 73 5f 74 61 67 2e 68 74 6d 6c 0a 20 20 7d  _$s_tag.html.  }
0840: 0a 20 20 68 64 5f 70 75 74 73 20 22 3c 6c 69 3e  .  hd_puts "<li>
0850: 3c 61 20 68 72 65 66 3d 5c 22 24 75 72 6c 5c 22  <a href=\"$url\"
0860: 3e 24 73 5f 74 69 74 6c 65 3c 2f 61 3e 3c 2f 6c  >$s_title</a></l
0870: 69 3e 22 0a 20 20 69 6e 63 72 20 69 0a 20 20 69  i>".  incr i.  i
0880: 66 20 7b 24 69 3d 3d 31 35 7d 20 7b 0a 20 20 20  f {$i==15} {.   
0890: 20 68 64 5f 70 75 74 73 20 22 3c 2f 75 6c 3e 3c   hd_puts "</ul><
08a0: 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 5c  /td><td valign=\
08b0: 22 74 6f 70 5c 22 3e 3c 75 6c 3e 22 0a 20 20 7d  "top\"><ul>".  }
08c0: 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f 75 6c 3e 3c  .}.</tcl>.</ul><
08d0: 2f 74 64 3e 3c 2f 74 72 3e 3c 2f 74 61 62 6c 65  /td></tr></table
08e0: 3e 0a 0a 3c 74 63 6c 3e 0a 70 72 6f 63 20 4f 70  >..<tcl>.proc Op
08f0: 65 72 61 74 6f 72 20 7b 6e 61 6d 65 7d 20 7b 0a  erator {name} {.
0900: 20 20 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20    return "<font 
0910: 63 6f 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c  color=\"#2c2cf0\
0920: 22 3e 3c 62 69 67 3e 24 6e 61 6d 65 3c 2f 62 69  "><big>$name</bi
0930: 67 3e 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f  g></font>".}.pro
0940: 63 20 4e 6f 6e 74 65 72 6d 69 6e 61 6c 20 7b 6e  c Nonterminal {n
0950: 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20  ame} {.  return 
0960: 22 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d  "<i><font color=
0970: 5c 22 23 66 66 33 34 33 34 5c 22 3e 24 6e 61 6d  \"#ff3434\">$nam
0980: 65 3c 2f 66 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d 0a  e</font></i>".}.
0990: 70 72 6f 63 20 4b 65 79 77 6f 72 64 20 7b 6e 61  proc Keyword {na
09a0: 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22  me} {.  return "
09b0: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32  <font color=\"#2
09c0: 63 32 63 66 30 5c 22 3e 24 6e 61 6d 65 3c 2f 66  c2cf0\">$name</f
09d0: 6f 6e 74 3e 22 0a 7d 0a 70 72 6f 63 20 45 78 61  ont>".}.proc Exa
09e0: 6d 70 6c 65 20 7b 74 65 78 74 7d 20 7b 0a 20 20  mple {text} {.  
09f0: 68 64 5f 70 75 74 73 20 22 3c 62 6c 6f 63 6b 71  hd_puts "<blockq
0a00: 75 6f 74 65 3e 3c 70 72 65 3e 24 74 65 78 74 3c  uote><pre>$text<
0a10: 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  /pre></blockquot
0a20: 65 3e 22 0a 7d 0a 0a 70 72 6f 63 20 53 65 63 74  e>".}..proc Sect
0a30: 69 6f 6e 20 7b 6e 61 6d 65 20 6c 61 62 65 6c 20  ion {name label 
0a40: 6b 65 79 77 6f 72 64 73 7d 20 7b 0a 20 20 67 6c  keywords} {.  gl
0a50: 6f 62 61 6c 20 44 4f 43 0a 20 20 68 64 5f 63 6c  obal DOC.  hd_cl
0a60: 6f 73 65 5f 6d 61 69 6e 0a 20 20 68 64 5f 6f 70  ose_main.  hd_op
0a70: 65 6e 5f 6d 61 69 6e 20 6c 61 6e 67 5f 24 6c 61  en_main lang_$la
0a80: 62 65 6c 2e 68 74 6d 6c 0a 20 20 68 64 5f 68 65  bel.html.  hd_he
0a90: 61 64 65 72 20 22 53 51 4c 69 74 65 20 51 75 65  ader "SQLite Que
0aa0: 72 79 20 4c 61 6e 67 75 61 67 65 3a 20 24 6e 61  ry Language: $na
0ab0: 6d 65 22 20 24 44 4f 43 2f 70 61 67 65 73 2f 6c  me" $DOC/pages/l
0ac0: 61 6e 67 2e 69 6e 0a 20 20 65 76 61 6c 20 68 64  ang.in.  eval hd
0ad0: 5f 6b 65 79 77 6f 72 64 73 20 24 6b 65 79 77 6f  _keywords $keywo
0ae0: 72 64 73 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c  rds.  hd_puts {<
0af0: 61 20 68 72 65 66 3d 22 6c 61 6e 67 2e 68 74 6d  a href="lang.htm
0b00: 6c 22 3e 3c 68 32 3e 53 51 4c 20 41 73 20 55 6e  l"><h2>SQL As Un
0b10: 64 65 72 73 74 6f 6f 64 20 42 79 20 53 51 4c 69  derstood By SQLi
0b20: 74 65 3c 2f 68 32 3e 3c 2f 61 3e 7d 0a 20 20 68  te</h2></a>}.  h
0b30: 64 5f 70 75 74 73 20 22 3c 68 33 3e 24 6e 61 6d  d_puts "<h3>$nam
0b40: 65 3c 2f 68 33 3e 22 0a 7d 0a 0a 23 23 23 23 23  e</h3>".}..#####
0b50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b90: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
0ba0: 6f 6e 20 7b 41 4c 54 45 52 20 54 41 42 4c 45 7d  on {ALTER TABLE}
0bb0: 20 61 6c 74 65 72 74 61 62 6c 65 20 7b 7b 41 4c   altertable {{AL
0bc0: 54 45 52 20 54 41 42 4c 45 7d 20 7b 41 4c 54 45  TER TABLE} {ALTE
0bd0: 52 7d 7d 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  R}}..Syntax {sql
0be0: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 41 4c  -statement} {.AL
0bf0: 54 45 52 20 54 41 42 4c 45 20 5b 3c 64 61 74 61  TER TABLE [<data
0c00: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74  base-name> .] <t
0c10: 61 62 6c 65 2d 6e 61 6d 65 3e 20 3c 61 6c 74 65  able-name> <alte
0c20: 72 61 74 69 6f 6e 3e 0a 7d 20 7b 61 6c 74 65 72  ration>.} {alter
0c30: 61 74 69 6f 6e 7d 20 7b 0a 52 45 4e 41 4d 45 20  ation} {.RENAME 
0c40: 54 4f 20 3c 6e 65 77 2d 74 61 62 6c 65 2d 6e 61  TO <new-table-na
0c50: 6d 65 3e 0a 7d 20 7b 61 6c 74 65 72 61 74 69 6f  me>.} {alteratio
0c60: 6e 7d 20 7b 0a 41 44 44 20 5b 43 4f 4c 55 4d 4e  n} {.ADD [COLUMN
0c70: 5d 20 3c 63 6f 6c 75 6d 6e 2d 64 65 66 3e 0a 7d  ] <column-def>.}
0c80: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 53 51 4c 69  .</tcl>..<p>SQLi
0c90: 74 65 20 73 75 70 70 6f 72 74 73 20 61 20 6c 69  te supports a li
0ca0: 6d 69 74 65 64 20 73 75 62 73 65 74 20 6f 66 20  mited subset of 
0cb0: 41 4c 54 45 52 20 54 41 42 4c 45 2e 0a 54 68 65  ALTER TABLE..The
0cc0: 20 41 4c 54 45 52 20 54 41 42 4c 45 20 63 6f 6d   ALTER TABLE com
0cd0: 6d 61 6e 64 20 69 6e 20 53 51 4c 69 74 65 20 61  mand in SQLite a
0ce0: 6c 6c 6f 77 73 20 74 68 65 20 75 73 65 72 20 74  llows the user t
0cf0: 6f 20 72 65 6e 61 6d 65 20 61 20 74 61 62 6c 65  o rename a table
0d00: 0a 6f 72 20 74 6f 20 61 64 64 20 61 20 6e 65 77  .or to add a new
0d10: 20 63 6f 6c 75 6d 6e 20 74 6f 20 61 6e 20 65 78   column to an ex
0d20: 69 73 74 69 6e 67 20 74 61 62 6c 65 2e 20 49 74  isting table. It
0d30: 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65   is not possible
0d40: 0a 74 6f 20 72 65 6e 61 6d 65 20 61 20 63 6f 6c  .to rename a col
0d50: 75 6d 2c 20 72 65 6d 6f 76 65 20 61 20 63 6f 6c  um, remove a col
0d60: 75 6d 6e 2c 20 6f 72 20 61 64 64 20 6f 72 20 72  umn, or add or r
0d70: 65 6d 6f 76 65 20 63 6f 6e 73 74 72 61 69 6e 74  emove constraint
0d80: 73 20 66 72 6f 6d 20 61 20 74 61 62 6c 65 2e 0a  s from a table..
0d90: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 52 45 4e  </p>..<p>The REN
0da0: 41 4d 45 20 54 4f 20 73 79 6e 74 61 78 20 69 73  AME TO syntax is
0db0: 20 75 73 65 64 20 74 6f 20 72 65 6e 61 6d 65 20   used to rename 
0dc0: 74 68 65 20 74 61 62 6c 65 20 69 64 65 6e 74 69  the table identi
0dd0: 66 69 65 64 20 62 79 20 0a 3c 69 3e 26 23 39 31  fied by .<i>&#91
0de0: 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e 26  ;database-name.&
0df0: 23 39 33 3b 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f  #93;table-name</
0e00: 69 3e 20 74 6f 20 3c 69 3e 6e 65 77 2d 74 61 62  i> to <i>new-tab
0e10: 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 0a 54 68 69  le-name</i>..Thi
0e20: 73 20 63 6f 6d 6d 61 6e 64 20 0a 63 61 6e 6e 6f  s command .canno
0e30: 74 20 62 65 20 75 73 65 64 20 74 6f 20 6d 6f 76  t be used to mov
0e40: 65 20 61 20 74 61 62 6c 65 20 62 65 74 77 65 65  e a table betwee
0e50: 6e 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  n attached datab
0e60: 61 73 65 73 2c 20 6f 6e 6c 79 20 74 6f 20 72 65  ases, only to re
0e70: 6e 61 6d 65 20 0a 61 20 74 61 62 6c 65 20 77 69  name .a table wi
0e80: 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20 64 61  thin the same da
0e90: 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  tabase.</p>..<p>
0ea0: 49 66 20 74 68 65 20 74 61 62 6c 65 20 62 65 69  If the table bei
0eb0: 6e 67 20 72 65 6e 61 6d 65 64 20 68 61 73 20 74  ng renamed has t
0ec0: 72 69 67 67 65 72 73 20 6f 72 20 69 6e 64 69 63  riggers or indic
0ed0: 65 73 2c 20 74 68 65 6e 20 74 68 65 73 65 20 72  es, then these r
0ee0: 65 6d 61 69 6e 0a 61 74 74 61 63 68 65 64 20 74  emain.attached t
0ef0: 6f 20 74 68 65 20 74 61 62 6c 65 20 61 66 74 65  o the table afte
0f00: 72 20 69 74 20 68 61 73 20 62 65 65 6e 20 72 65  r it has been re
0f10: 6e 61 6d 65 64 2e 20 48 6f 77 65 76 65 72 2c 20  named. However, 
0f20: 69 66 20 74 68 65 72 65 20 61 72 65 0a 61 6e 79  if there are.any
0f30: 20 76 69 65 77 20 64 65 66 69 6e 69 74 69 6f 6e   view definition
0f40: 73 2c 20 6f 72 20 73 74 61 74 65 6d 65 6e 74 73  s, or statements
0f50: 20 65 78 65 63 75 74 65 64 20 62 79 20 74 72 69   executed by tri
0f60: 67 67 65 72 73 20 74 68 61 74 20 72 65 66 65 72  ggers that refer
0f70: 20 74 6f 0a 74 68 65 20 74 61 62 6c 65 20 62 65   to.the table be
0f80: 69 6e 67 20 72 65 6e 61 6d 65 64 2c 20 74 68 65  ing renamed, the
0f90: 73 65 20 61 72 65 20 6e 6f 74 20 61 75 74 6f 6d  se are not autom
0fa0: 61 74 69 63 61 6c 6c 79 20 6d 6f 64 69 66 69 65  atically modifie
0fb0: 64 20 74 6f 20 75 73 65 20 74 68 65 20 6e 65 77  d to use the new
0fc0: 0a 74 61 62 6c 65 20 6e 61 6d 65 2e 20 49 66 20  .table name. If 
0fd0: 74 68 69 73 20 69 73 20 72 65 71 75 69 72 65 64  this is required
0fe0: 2c 20 74 68 65 20 74 72 69 67 67 65 72 73 20 6f  , the triggers o
0ff0: 72 20 76 69 65 77 20 64 65 66 69 6e 69 74 69 6f  r view definitio
1000: 6e 73 20 6d 75 73 74 20 62 65 0a 64 72 6f 70 70  ns must be.dropp
1010: 65 64 20 61 6e 64 20 72 65 63 72 65 61 74 65 64  ed and recreated
1020: 20 74 6f 20 75 73 65 20 74 68 65 20 6e 65 77 20   to use the new 
1030: 74 61 62 6c 65 20 6e 61 6d 65 20 62 79 20 68 61  table name by ha
1040: 6e 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  nd..</p>..<p>The
1050: 20 41 44 44 20 26 23 39 31 3b 43 4f 4c 55 4d 4e   ADD &#91;COLUMN
1060: 26 23 39 33 3b 20 73 79 6e 74 61 78 0a 69 73 20  &#93; syntax.is 
1070: 75 73 65 64 20 74 6f 20 61 64 64 20 61 20 6e 65  used to add a ne
1080: 77 20 63 6f 6c 75 6d 6e 20 74 6f 20 61 6e 20 65  w column to an e
1090: 78 69 73 74 69 6e 67 20 74 61 62 6c 65 2e 0a 54  xisting table..T
10a0: 68 65 20 6e 65 77 20 63 6f 6c 75 6d 6e 20 69 73  he new column is
10b0: 20 61 6c 77 61 79 73 20 61 70 70 65 6e 64 65 64   always appended
10c0: 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74   to the end of t
10d0: 68 65 20 6c 69 73 74 20 6f 66 20 65 78 69 73 74  he list of exist
10e0: 69 6e 67 20 63 6f 6c 75 6d 6e 73 2e 0a 3c 69 3e  ing columns..<i>
10f0: 43 6f 6c 75 6d 6e 2d 64 65 66 3c 2f 69 3e 20 6d  Column-def</i> m
1100: 61 79 20 74 61 6b 65 20 61 6e 79 20 6f 66 20 74  ay take any of t
1110: 68 65 20 66 6f 72 6d 73 20 70 65 72 6d 69 73 73  he forms permiss
1120: 61 62 6c 65 20 69 6e 20 61 20 5b 43 52 45 41 54  able in a [CREAT
1130: 45 20 54 41 42 4c 45 5d 0a 73 74 61 74 65 6d 65  E TABLE].stateme
1140: 6e 74 2c 20 77 69 74 68 20 74 68 65 20 66 6f 6c  nt, with the fol
1150: 6c 6f 77 69 6e 67 20 72 65 73 74 72 69 63 74 69  lowing restricti
1160: 6f 6e 73 3a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 54 68  ons:.<ul>.<li>Th
1170: 65 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74  e column may not
1180: 20 68 61 76 65 20 61 20 50 52 49 4d 41 52 59 20   have a PRIMARY 
1190: 4b 45 59 20 6f 72 20 55 4e 49 51 55 45 20 63 6f  KEY or UNIQUE co
11a0: 6e 73 74 72 61 69 6e 74 2e 3c 2f 6c 69 3e 0a 3c  nstraint.</li>.<
11b0: 6c 69 3e 54 68 65 20 63 6f 6c 75 6d 6e 20 6d 61  li>The column ma
11c0: 79 20 6e 6f 74 20 68 61 76 65 20 61 20 64 65 66  y not have a def
11d0: 61 75 6c 74 20 76 61 6c 75 65 20 6f 66 20 43 55  ault value of CU
11e0: 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52  RRENT_TIME, CURR
11f0: 45 4e 54 5f 44 41 54 45 20 0a 20 20 20 20 6f 72  ENT_DATE .    or
1200: 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41   CURRENT_TIMESTA
1210: 4d 50 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 49 66 20  MP.</li>.<li>If 
1220: 61 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74  a NOT NULL const
1230: 72 61 69 6e 74 20 69 73 20 73 70 65 63 69 66 69  raint is specifi
1240: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 63 6f 6c  ed, then the col
1250: 75 6d 6e 20 6d 75 73 74 20 68 61 76 65 20 61 0a  umn must have a.
1260: 20 20 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75      default valu
1270: 65 20 6f 74 68 65 72 20 74 68 61 6e 20 4e 55 4c  e other than NUL
1280: 4c 2e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 54 68 65  L..</ul>..<p>The
1290: 20 65 78 65 63 75 74 69 6f 6e 20 74 69 6d 65 20   execution time 
12a0: 6f 66 20 74 68 65 20 41 4c 54 45 52 20 54 41 42  of the ALTER TAB
12b0: 4c 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 69 6e  LE command is in
12c0: 64 65 70 65 6e 64 65 6e 74 20 6f 66 0a 74 68 65  dependent of.the
12d0: 20 61 6d 6f 75 6e 74 20 6f 66 20 64 61 74 61 20   amount of data 
12e0: 69 6e 20 74 68 65 20 74 61 62 6c 65 2e 20 20 54  in the table.  T
12f0: 68 65 20 41 4c 54 45 52 20 54 41 42 4c 45 20 63  he ALTER TABLE c
1300: 6f 6d 6d 61 6e 64 20 72 75 6e 73 20 61 73 20 71  ommand runs as q
1310: 75 69 63 6b 6c 79 0a 6f 6e 20 61 20 74 61 62 6c  uickly.on a tabl
1320: 65 20 77 69 74 68 20 31 30 20 6d 69 6c 6c 69 6f  e with 10 millio
1330: 6e 20 72 6f 77 73 20 61 73 20 69 74 20 64 6f 65  n rows as it doe
1340: 73 20 6f 6e 20 61 20 74 61 62 6c 65 20 77 69 74  s on a table wit
1350: 68 20 31 20 72 6f 77 2e 0a 3c 2f 70 3e 0a 0a 3c  h 1 row..</p>..<
1360: 70 3e 41 66 74 65 72 20 41 44 44 20 43 4f 4c 55  p>After ADD COLU
1370: 4d 4e 20 68 61 73 20 62 65 65 6e 20 72 75 6e 20  MN has been run 
1380: 6f 6e 20 61 20 64 61 74 61 62 61 73 65 2c 20 74  on a database, t
1390: 68 61 74 20 64 61 74 61 62 61 73 65 20 77 69 6c  hat database wil
13a0: 6c 20 6e 6f 74 0a 62 65 20 72 65 61 64 61 62 6c  l not.be readabl
13b0: 65 20 62 79 20 53 51 4c 69 74 65 20 76 65 72 73  e by SQLite vers
13c0: 69 6f 6e 20 33 2e 31 2e 33 20 61 6e 64 20 65 61  ion 3.1.3 and ea
13d0: 72 6c 69 65 72 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  rlier.</p>..<tcl
13e0: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
13f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1400: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1410: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1420: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1430: 0a 53 65 63 74 69 6f 6e 20 7b 41 4e 41 4c 59 5a  .Section {ANALYZ
1440: 45 7d 20 61 6e 61 6c 79 7a 65 20 41 4e 41 4c 59  E} analyze ANALY
1450: 5a 45 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ZE..Syntax {sql-
1460: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 20 20 41  statement} {.  A
1470: 4e 41 4c 59 5a 45 0a 7d 0a 53 79 6e 74 61 78 20  NALYZE.}.Syntax 
1480: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
1490: 7b 0a 20 20 41 4e 41 4c 59 5a 45 20 3c 64 61 74  {.  ANALYZE <dat
14a0: 61 62 61 73 65 2d 6e 61 6d 65 3e 0a 7d 0a 53 79  abase-name>.}.Sy
14b0: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
14c0: 65 6e 74 7d 20 7b 0a 20 20 41 4e 41 4c 59 5a 45  ent} {.  ANALYZE
14d0: 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65   [<database-name
14e0: 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65  > .] <table-name
14f0: 3e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54  >.}.</tcl>..<p>T
1500: 68 65 20 41 4e 41 4c 59 5a 45 20 63 6f 6d 6d 61  he ANALYZE comma
1510: 6e 64 20 67 61 74 68 65 72 73 20 73 74 61 74 69  nd gathers stati
1520: 73 74 69 63 73 20 61 62 6f 75 74 20 69 6e 64 69  stics about indi
1530: 63 65 73 20 61 6e 64 20 73 74 6f 72 65 73 20 74  ces and stores t
1540: 68 65 6d 0a 69 6e 20 61 20 73 70 65 63 69 61 6c  hem.in a special
1550: 20 74 61 62 6c 65 73 20 69 6e 20 74 68 65 20 64   tables in the d
1560: 61 74 61 62 61 73 65 20 77 68 65 72 65 20 74 68  atabase where th
1570: 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69 7a 65  e query optimize
1580: 72 20 63 61 6e 20 75 73 65 0a 74 68 65 6d 20 74  r can use.them t
1590: 6f 20 68 65 6c 70 20 6d 61 6b 65 20 62 65 74 74  o help make bett
15a0: 65 72 20 69 6e 64 65 78 20 63 68 6f 69 63 65 73  er index choices
15b0: 2e 0a 49 66 20 6e 6f 20 61 72 67 75 6d 65 6e 74  ..If no argument
15c0: 73 20 61 72 65 20 67 69 76 65 6e 2c 20 61 6c 6c  s are given, all
15d0: 20 69 6e 64 69 63 65 73 20 69 6e 20 61 6c 6c 20   indices in all 
15e0: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
15f0: 65 73 20 61 72 65 0a 61 6e 61 6c 79 7a 65 64 2e  es are.analyzed.
1600: 20 20 49 66 20 61 20 64 61 74 61 62 61 73 65 20    If a database 
1610: 6e 61 6d 65 20 69 73 20 67 69 76 65 6e 20 61 73  name is given as
1620: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 2c 20 61   the argument, a
1630: 6c 6c 20 69 6e 64 69 63 65 73 0a 69 6e 20 74 68  ll indices.in th
1640: 61 74 20 6f 6e 65 20 64 61 74 61 62 61 73 65 20  at one database 
1650: 61 72 65 20 61 6e 61 6c 79 7a 65 64 2e 20 20 49  are analyzed.  I
1660: 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69  f the argument i
1670: 73 20 61 20 74 61 62 6c 65 20 6e 61 6d 65 2c 0a  s a table name,.
1680: 74 68 65 6e 20 6f 6e 6c 79 20 69 6e 64 69 63 65  then only indice
1690: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
16a0: 68 20 74 68 61 74 20 6f 6e 65 20 74 61 62 6c 65  h that one table
16b0: 20 61 72 65 20 61 6e 61 6c 79 7a 65 64 2e 3c 2f   are analyzed.</
16c0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 69 6e 69 74 69  p>..<p>The initi
16d0: 61 6c 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  al implementatio
16e0: 6e 20 73 74 6f 72 65 73 20 61 6c 6c 20 73 74 61  n stores all sta
16f0: 74 69 73 74 69 63 73 20 69 6e 20 61 20 73 69 6e  tistics in a sin
1700: 67 6c 65 0a 74 61 62 6c 65 20 6e 61 6d 65 64 20  gle.table named 
1710: 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 31 3c  <b>sqlite_stat1<
1720: 2f 62 3e 2e 20 20 46 75 74 75 72 65 20 65 6e 68  /b>.  Future enh
1730: 61 6e 63 65 6d 65 6e 74 73 20 6d 61 79 20 63 72  ancements may cr
1740: 65 61 74 65 0a 61 64 64 69 74 69 6f 6e 61 6c 20  eate.additional 
1750: 74 61 62 6c 65 73 20 77 69 74 68 20 74 68 65 20  tables with the 
1760: 73 61 6d 65 20 6e 61 6d 65 20 70 61 74 74 65 72  same name patter
1770: 6e 20 65 78 63 65 70 74 20 77 69 74 68 20 74 68  n except with th
1780: 65 20 22 31 22 0a 63 68 61 6e 67 65 64 20 74 6f  e "1".changed to
1790: 20 61 20 64 69 66 66 65 72 65 6e 74 20 64 69 67   a different dig
17a0: 69 74 2e 20 20 54 68 65 20 5b 44 52 4f 50 20 54  it.  The [DROP T
17b0: 41 42 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20 64 6f  ABLE] command do
17c0: 65 73 0a 6e 6f 74 20 77 6f 72 6b 20 6f 6e 20 74  es.not work on t
17d0: 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61  he <b>sqlite_sta
17e0: 74 31 3c 2f 62 3e 20 74 61 62 6c 65 2c 0a 62 75  t1</b> table,.bu
17f0: 74 20 61 6c 6c 20 74 68 65 20 63 6f 6e 74 65 6e  t all the conten
1800: 74 20 63 61 6e 20 62 65 20 72 65 6d 6f 76 65 64  t can be removed
1810: 20 75 73 69 6e 67 20 74 68 65 20 5b 44 45 4c 45   using the [DELE
1820: 54 45 5d 20 63 6f 6d 6d 61 6e 64 2c 0a 77 68 69  TE] command,.whi
1830: 63 68 20 68 61 73 20 74 68 65 20 73 61 6d 65 20  ch has the same 
1840: 65 66 66 65 63 74 2e 3c 2f 70 3e 0a 0a 3c 74 63  effect.</p>..<tc
1850: 6c 3e 0a 53 65 63 74 69 6f 6e 20 7b 41 54 54 41  l>.Section {ATTA
1860: 43 48 20 44 41 54 41 42 41 53 45 7d 20 61 74 74  CH DATABASE} att
1870: 61 63 68 20 41 54 54 41 43 48 0a 0a 53 79 6e 74  ach ATTACH..Synt
1880: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
1890: 74 7d 20 7b 0a 41 54 54 41 43 48 20 5b 44 41 54  t} {.ATTACH [DAT
18a0: 41 42 41 53 45 5d 20 3c 64 61 74 61 62 61 73 65  ABASE] <database
18b0: 2d 66 69 6c 65 6e 61 6d 65 3e 20 41 53 20 3c 64  -filename> AS <d
18c0: 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 0a 7d 0a  atabase-name>.}.
18d0: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 41  </tcl>..<p>The A
18e0: 54 54 41 43 48 20 44 41 54 41 42 41 53 45 20 73  TTACH DATABASE s
18f0: 74 61 74 65 6d 65 6e 74 20 61 64 64 73 20 61 6e  tatement adds an
1900: 6f 74 68 65 72 20 64 61 74 61 62 61 73 65 20 0a  other database .
1910: 66 69 6c 65 20 74 6f 20 74 68 65 20 63 75 72 72  file to the curr
1920: 65 6e 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ent database con
1930: 6e 65 63 74 69 6f 6e 2e 20 20 49 66 20 74 68 65  nection.  If the
1940: 20 66 69 6c 65 6e 61 6d 65 20 63 6f 6e 74 61 69   filename contai
1950: 6e 73 20 0a 70 75 6e 63 74 75 61 74 69 6f 6e 20  ns .punctuation 
1960: 63 68 61 72 61 63 74 65 72 73 20 69 74 20 6d 75  characters it mu
1970: 73 74 20 62 65 20 71 75 6f 74 65 64 2e 20 20 54  st be quoted.  T
1980: 68 65 20 6e 61 6d 65 73 20 27 6d 61 69 6e 27 20  he names 'main' 
1990: 61 6e 64 20 0a 27 74 65 6d 70 27 20 72 65 66 65  and .'temp' refe
19a0: 72 20 74 6f 20 74 68 65 20 6d 61 69 6e 20 64 61  r to the main da
19b0: 74 61 62 61 73 65 20 61 6e 64 20 74 68 65 20 64  tabase and the d
19c0: 61 74 61 62 61 73 65 20 75 73 65 64 20 66 6f 72  atabase used for
19d0: 20 0a 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c   .temporary tabl
19e0: 65 73 2e 20 20 54 68 65 73 65 20 63 61 6e 6e 6f  es.  These canno
19f0: 74 20 62 65 20 64 65 74 61 63 68 65 64 2e 20 20  t be detached.  
1a00: 41 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  Attached databas
1a10: 65 73 20 0a 61 72 65 20 72 65 6d 6f 76 65 64 20  es .are removed 
1a20: 75 73 69 6e 67 20 74 68 65 20 5b 44 45 54 41 43  using the [DETAC
1a30: 48 5d 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70  H] statement.</p
1a40: 3e 0a 0a 3c 70 3e 59 6f 75 20 63 61 6e 6e 6f 74  >..<p>You cannot
1a50: 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 74 61   create a new ta
1a60: 62 6c 65 20 77 69 74 68 20 74 68 65 20 73 61 6d  ble with the sam
1a70: 65 20 6e 61 6d 65 20 61 73 20 61 20 74 61 62 6c  e name as a tabl
1a80: 65 20 69 6e 20 0a 61 6e 20 61 74 74 61 63 68 65  e in .an attache
1a90: 64 20 64 61 74 61 62 61 73 65 2c 20 62 75 74 20  d database, but 
1aa0: 79 6f 75 20 63 61 6e 20 61 74 74 61 63 68 20 61  you can attach a
1ab0: 20 64 61 74 61 62 61 73 65 20 77 68 69 63 68 20   database which 
1ac0: 63 6f 6e 74 61 69 6e 73 0a 74 61 62 6c 65 73 20  contains.tables 
1ad0: 77 68 6f 73 65 20 6e 61 6d 65 73 20 61 72 65 20  whose names are 
1ae0: 64 75 70 6c 69 63 61 74 65 73 20 6f 66 20 74 61  duplicates of ta
1af0: 62 6c 65 73 20 69 6e 20 74 68 65 20 6d 61 69 6e  bles in the main
1b00: 20 64 61 74 61 62 61 73 65 2e 20 20 49 74 20 69   database.  It i
1b10: 73 20 0a 61 6c 73 6f 20 70 65 72 6d 69 73 73 69  s .also permissi
1b20: 62 6c 65 20 74 6f 20 61 74 74 61 63 68 20 74 68  ble to attach th
1b30: 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20  e same database 
1b40: 66 69 6c 65 20 6d 75 6c 74 69 70 6c 65 20 74 69  file multiple ti
1b50: 6d 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62  mes.</p>..<p>Tab
1b60: 6c 65 73 20 69 6e 20 61 6e 20 61 74 74 61 63 68  les in an attach
1b70: 65 64 20 64 61 74 61 62 61 73 65 20 63 61 6e 20  ed database can 
1b80: 62 65 20 72 65 66 65 72 72 65 64 20 74 6f 20 75  be referred to u
1b90: 73 69 6e 67 20 74 68 65 20 73 79 6e 74 61 78 20  sing the syntax 
1ba0: 0a 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d  .<i>database-nam
1bb0: 65 2e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e  e.table-name</i>
1bc0: 2e 20 20 49 66 20 61 6e 20 61 74 74 61 63 68 65  .  If an attache
1bd0: 64 20 74 61 62 6c 65 20 64 6f 65 73 6e 27 74 20  d table doesn't 
1be0: 68 61 76 65 20 0a 61 20 64 75 70 6c 69 63 61 74  have .a duplicat
1bf0: 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20  e table name in 
1c00: 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73  the main databas
1c10: 65 2c 20 69 74 20 64 6f 65 73 6e 27 74 20 72 65  e, it doesn't re
1c20: 71 75 69 72 65 20 61 20 0a 64 61 74 61 62 61 73  quire a .databas
1c30: 65 20 6e 61 6d 65 20 70 72 65 66 69 78 2e 20 20  e name prefix.  
1c40: 57 68 65 6e 20 61 20 64 61 74 61 62 61 73 65 20  When a database 
1c50: 69 73 20 61 74 74 61 63 68 65 64 2c 20 61 6c 6c  is attached, all
1c60: 20 6f 66 20 69 74 73 20 0a 74 61 62 6c 65 73 20   of its .tables 
1c70: 77 68 69 63 68 20 64 6f 6e 27 74 20 68 61 76 65  which don't have
1c80: 20 64 75 70 6c 69 63 61 74 65 20 6e 61 6d 65 73   duplicate names
1c90: 20 62 65 63 6f 6d 65 20 74 68 65 20 64 65 66 61   become the defa
1ca0: 75 6c 74 20 74 61 62 6c 65 0a 6f 66 20 74 68 61  ult table.of tha
1cb0: 74 20 6e 61 6d 65 2e 20 20 41 6e 79 20 74 61 62  t name.  Any tab
1cc0: 6c 65 73 20 6f 66 20 74 68 61 74 20 6e 61 6d 65  les of that name
1cd0: 20 61 74 74 61 63 68 65 64 20 61 66 74 65 72 77   attached afterw
1ce0: 61 72 64 73 20 72 65 71 75 69 72 65 20 74 68 65  ards require the
1cf0: 0a 64 61 74 61 62 61 73 65 20 70 72 65 66 69 78  .database prefix
1d00: 2e 20 49 66 20 74 68 65 20 64 65 66 61 75 6c 74  . If the default
1d10: 20 74 61 62 6c 65 20 6f 66 20 61 20 67 69 76 65   table of a give
1d20: 6e 20 6e 61 6d 65 20 69 73 20 64 65 74 61 63 68  n name is detach
1d30: 65 64 2c 20 74 68 65 6e 0a 74 68 65 20 6c 61 73  ed, then.the las
1d40: 74 20 74 61 62 6c 65 20 6f 66 20 74 68 61 74 20  t table of that 
1d50: 6e 61 6d 65 20 61 74 74 61 63 68 65 64 20 62 65  name attached be
1d60: 63 6f 6d 65 73 20 74 68 65 20 6e 65 77 20 64 65  comes the new de
1d70: 66 61 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a  fault.</p>..<p>.
1d80: 54 72 61 6e 73 61 63 74 69 6f 6e 73 20 69 6e 76  Transactions inv
1d90: 6f 6c 76 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20  olving multiple 
1da0: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
1db0: 65 73 20 61 72 65 20 61 74 6f 6d 69 63 2c 0a 61  es are atomic,.a
1dc0: 73 73 75 6d 69 6e 67 20 74 68 61 74 20 74 68 65  ssuming that the
1dd0: 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20 69   main database i
1de0: 73 20 6e 6f 74 20 22 3a 6d 65 6d 6f 72 79 3a 22  s not ":memory:"
1df0: 2e 20 20 49 66 20 74 68 65 20 6d 61 69 6e 0a 64  .  If the main.d
1e00: 61 74 61 62 61 73 65 20 69 73 20 22 3a 6d 65 6d  atabase is ":mem
1e10: 6f 72 79 3a 22 20 74 68 65 6e 20 0a 74 72 61 6e  ory:" then .tran
1e20: 73 61 63 74 69 6f 6e 73 20 63 6f 6e 74 69 6e 75  sactions continu
1e30: 65 20 74 6f 20 62 65 20 61 74 6f 6d 69 63 20 77  e to be atomic w
1e40: 69 74 68 69 6e 20 65 61 63 68 20 69 6e 64 69 76  ithin each indiv
1e50: 69 64 75 61 6c 0a 64 61 74 61 62 61 73 65 20 66  idual.database f
1e60: 69 6c 65 2e 20 42 75 74 20 69 66 20 74 68 65 20  ile. But if the 
1e70: 68 6f 73 74 20 63 6f 6d 70 75 74 65 72 20 63 72  host computer cr
1e80: 61 73 68 65 73 20 69 6e 20 74 68 65 20 6d 69 64  ashes in the mid
1e90: 64 6c 65 0a 6f 66 20 61 20 5b 43 4f 4d 4d 49 54  dle.of a [COMMIT
1ea0: 5d 20 77 68 65 72 65 20 74 77 6f 20 6f 72 20 6d  ] where two or m
1eb0: 6f 72 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  ore database fil
1ec0: 65 73 20 61 72 65 20 75 70 64 61 74 65 64 2c 0a  es are updated,.
1ed0: 73 6f 6d 65 20 6f 66 20 74 68 6f 73 65 20 66 69  some of those fi
1ee0: 6c 65 73 20 6d 69 67 68 74 20 67 65 74 20 74 68  les might get th
1ef0: 65 20 63 68 61 6e 67 65 73 20 77 68 65 72 65 20  e changes where 
1f00: 6f 74 68 65 72 73 0a 6d 69 67 68 74 20 6e 6f 74  others.might not
1f10: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65  ..</p>..<p>There
1f20: 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69   is a compile-ti
1f30: 6d 65 20 6c 69 6d 69 74 20 6f 66 20 5b 53 51 4c  me limit of [SQL
1f40: 49 54 45 5f 4d 41 58 5f 41 54 54 41 43 48 45 44  ITE_MAX_ATTACHED
1f50: 5d 0a 61 74 74 61 63 68 65 64 20 64 61 74 61 62  ].attached datab
1f60: 61 73 65 20 66 69 6c 65 73 2e 3c 2f 70 3e 0a 0a  ase files.</p>..
1f70: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
1f80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fc0: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 42  #####.Section {B
1fd0: 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e  EGIN TRANSACTION
1fe0: 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 7b 42  } transaction {B
1ff0: 45 47 49 4e 20 43 4f 4d 4d 49 54 20 52 4f 4c 4c  EGIN COMMIT ROLL
2000: 42 41 43 4b 7d 0a 0a 53 79 6e 74 61 78 20 7b 73  BACK}..Syntax {s
2010: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
2020: 42 45 47 49 4e 20 5b 20 44 45 46 45 52 52 45 44  BEGIN [ DEFERRED
2030: 20 7c 20 49 4d 4d 45 44 49 41 54 45 20 7c 20 45   | IMMEDIATE | E
2040: 58 43 4c 55 53 49 56 45 20 5d 20 5b 54 52 41 4e  XCLUSIVE ] [TRAN
2050: 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d  SACTION [<name>]
2060: 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ].}.Syntax {sql-
2070: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 45 4e 44  statement} {.END
2080: 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b 3c   [TRANSACTION [<
2090: 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53 79 6e 74 61 78  name>]].}.Syntax
20a0: 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
20b0: 20 7b 0a 43 4f 4d 4d 49 54 20 5b 54 52 41 4e 53   {.COMMIT [TRANS
20c0: 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d  ACTION [<name>]]
20d0: 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  .}.Syntax {sql-s
20e0: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 52 4f 4c 4c  tatement} {.ROLL
20f0: 42 41 43 4b 20 5b 54 52 41 4e 53 41 43 54 49 4f  BACK [TRANSACTIO
2100: 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 3c 2f  N [<name>]].}.</
2110: 74 63 6c 3e 0a 0a 3c 70 3e 0a 4e 6f 20 63 68 61  tcl>..<p>.No cha
2120: 6e 67 65 73 20 63 61 6e 20 62 65 20 6d 61 64 65  nges can be made
2130: 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
2140: 20 65 78 63 65 70 74 20 77 69 74 68 69 6e 20 61   except within a
2150: 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 41 6e   transaction..An
2160: 79 20 63 6f 6d 6d 61 6e 64 20 74 68 61 74 20 63  y command that c
2170: 68 61 6e 67 65 73 20 74 68 65 20 64 61 74 61 62  hanges the datab
2180: 61 73 65 20 28 62 61 73 69 63 61 6c 6c 79 2c 20  ase (basically, 
2190: 61 6e 79 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a  any SQL command.
21a0: 6f 74 68 65 72 20 74 68 61 6e 20 5b 53 45 4c 45  other than [SELE
21b0: 43 54 5d 29 20 77 69 6c 6c 20 61 75 74 6f 6d 61  CT]) will automa
21c0: 74 69 63 61 6c 6c 79 20 73 74 61 72 74 20 61 20  tically start a 
21d0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 66 0a 6f  transaction if.o
21e0: 6e 65 20 69 73 20 6e 6f 74 20 61 6c 72 65 61 64  ne is not alread
21f0: 79 20 69 6e 20 65 66 66 65 63 74 2e 20 20 41 75  y in effect.  Au
2200: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 74 61 72  tomatically star
2210: 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  ted transactions
2220: 0a 61 72 65 20 63 6f 6d 6d 69 74 74 65 64 20 61  .are committed a
2230: 74 20 74 68 65 20 63 6f 6e 63 6c 75 73 69 6f 6e  t the conclusion
2240: 20 6f 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2e   of the command.
2250: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73  .</p>..<p>.Trans
2260: 61 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 73  actions can be s
2270: 74 61 72 74 65 64 20 6d 61 6e 75 61 6c 6c 79 20  tarted manually 
2280: 75 73 69 6e 67 20 74 68 65 20 42 45 47 49 4e 0a  using the BEGIN.
2290: 63 6f 6d 6d 61 6e 64 2e 20 20 53 75 63 68 20 74  command.  Such t
22a0: 72 61 6e 73 61 63 74 69 6f 6e 73 20 75 73 75 61  ransactions usua
22b0: 6c 6c 79 20 70 65 72 73 69 73 74 20 75 6e 74 69  lly persist unti
22c0: 6c 20 74 68 65 20 6e 65 78 74 0a 43 4f 4d 4d 49  l the next.COMMI
22d0: 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 20 63 6f  T or ROLLBACK co
22e0: 6d 6d 61 6e 64 2e 20 20 42 75 74 20 61 20 74 72  mmand.  But a tr
22f0: 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c 20 61  ansaction will a
2300: 6c 73 6f 20 0a 52 4f 4c 4c 42 41 43 4b 20 69 66  lso .ROLLBACK if
2310: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73   the database is
2320: 20 63 6c 6f 73 65 64 20 6f 72 20 69 66 20 61 6e   closed or if an
2330: 20 65 72 72 6f 72 20 6f 63 63 75 72 73 0a 61 6e   error occurs.an
2340: 64 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63  d the ROLLBACK c
2350: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
2360: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  on algorithm is 
2370: 73 70 65 63 69 66 69 65 64 2e 0a 53 65 65 20 74  specified..See t
2380: 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  he documentation
2390: 20 6f 6e 20 74 68 65 20 5b 4f 4e 20 43 4f 4e 46   on the [ON CONF
23a0: 4c 49 43 54 5d 0a 63 6c 61 75 73 65 20 66 6f 72  LICT].clause for
23b0: 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f   additional info
23c0: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68  rmation about th
23d0: 65 20 52 4f 4c 4c 42 41 43 4b 0a 63 6f 6e 66 6c  e ROLLBACK.confl
23e0: 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  ict resolution a
23f0: 6c 67 6f 72 69 74 68 6d 2e 0a 3c 2f 70 3e 0a 0a  lgorithm..</p>..
2400: 3c 70 3e 0a 45 4e 44 20 54 52 41 4e 53 41 43 54  <p>.END TRANSACT
2410: 49 4f 4e 20 69 73 20 61 6e 20 61 6c 69 61 73 20  ION is an alias 
2420: 66 6f 72 20 43 4f 4d 4d 49 54 2e 0a 3c 2f 70 3e  for COMMIT..</p>
2430: 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61  ..<p>The optiona
2440: 6c 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 6e 61  l transaction na
2450: 6d 65 20 69 73 20 69 67 6e 6f 72 65 64 2e 20 53  me is ignored. S
2460: 51 4c 69 74 65 20 0a 64 6f 65 73 20 6e 6f 74 20  QLite .does not 
2470: 72 65 63 6f 67 6e 69 7a 65 20 6e 65 73 74 65 64  recognize nested
2480: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 61 74   transactions at
2490: 20 74 68 69 73 20 74 69 6d 65 2e 0a 48 6f 77 65   this time..Howe
24a0: 76 65 72 2c 20 66 75 74 75 72 65 20 76 65 72 73  ver, future vers
24b0: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d  ions of SQLite m
24c0: 61 79 20 62 65 20 65 6e 68 61 6e 63 65 64 20 74  ay be enhanced t
24d0: 6f 20 73 75 70 70 6f 72 74 20 6e 65 73 74 65 64  o support nested
24e0: 0a 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 61 6e  .transactions an
24f0: 64 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  d the transactio
2500: 6e 20 6e 61 6d 65 20 77 6f 75 6c 64 20 74 68 65  n name would the
2510: 6e 20 62 65 63 6f 6d 65 20 73 69 67 6e 69 66 69  n become signifi
2520: 63 61 6e 74 2e 0a 41 70 70 6c 69 63 61 74 69 6f  cant..Applicatio
2530: 6e 20 61 72 65 20 61 64 76 69 73 65 64 20 6e 6f  n are advised no
2540: 74 20 74 6f 20 75 73 65 20 74 68 65 20 74 72 61  t to use the tra
2550: 6e 73 61 63 74 69 6f 6e 20 6e 61 6d 65 20 69 6e  nsaction name in
2560: 20 6f 72 64 65 72 0a 74 6f 20 61 76 6f 69 64 20   order.to avoid 
2570: 66 75 74 75 72 65 20 63 6f 6d 70 61 74 69 62 69  future compatibi
2580: 6c 69 74 79 20 70 72 6f 62 6c 65 6d 73 2e 3c 2f  lity problems.</
2590: 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73 61 63 74  p>..<p>.Transact
25a0: 69 6f 6e 73 20 63 61 6e 20 62 65 20 64 65 66 65  ions can be defe
25b0: 72 72 65 64 2c 20 69 6d 6d 65 64 69 61 74 65 2c  rred, immediate,
25c0: 20 6f 72 20 65 78 63 6c 75 73 69 76 65 2e 20 20   or exclusive.  
25d0: 0a 54 68 65 20 64 65 66 61 75 6c 74 20 74 72 61  .The default tra
25e0: 6e 73 61 63 74 69 6f 6e 20 62 65 68 61 76 69 6f  nsaction behavio
25f0: 72 20 69 73 20 64 65 66 65 72 72 65 64 2e 0a 44  r is deferred..D
2600: 65 66 65 72 72 65 64 20 6d 65 61 6e 73 20 74 68  eferred means th
2610: 61 74 20 6e 6f 20 6c 6f 63 6b 73 20 61 72 65 20  at no locks are 
2620: 61 63 71 75 69 72 65 64 0a 6f 6e 20 74 68 65 20  acquired.on the 
2630: 64 61 74 61 62 61 73 65 20 75 6e 74 69 6c 20 74  database until t
2640: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 66  he database is f
2650: 69 72 73 74 20 61 63 63 65 73 73 65 64 2e 20 20  irst accessed.  
2660: 54 68 75 73 20 77 69 74 68 20 61 0a 64 65 66 65  Thus with a.defe
2670: 72 72 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  rred transaction
2680: 2c 20 74 68 65 20 42 45 47 49 4e 20 73 74 61 74  , the BEGIN stat
2690: 65 6d 65 6e 74 20 69 74 73 65 6c 66 20 64 6f 65  ement itself doe
26a0: 73 20 6e 6f 74 68 69 6e 67 2e 20 20 4c 6f 63 6b  s nothing.  Lock
26b0: 73 0a 61 72 65 20 6e 6f 74 20 61 63 71 75 69 72  s.are not acquir
26c0: 65 64 20 75 6e 74 69 6c 20 74 68 65 20 66 69 72  ed until the fir
26d0: 73 74 20 72 65 61 64 20 6f 72 20 77 72 69 74 65  st read or write
26e0: 20 6f 70 65 72 61 74 69 6f 6e 2e 20 20 54 68 65   operation.  The
26f0: 20 66 69 72 73 74 20 72 65 61 64 0a 6f 70 65 72   first read.oper
2700: 61 74 69 6f 6e 20 61 67 61 69 6e 73 74 20 61 20  ation against a 
2710: 64 61 74 61 62 61 73 65 20 63 72 65 61 74 65 73  database creates
2720: 20 61 20 5b 53 48 41 52 45 44 5d 20 6c 6f 63 6b   a [SHARED] lock
2730: 20 61 6e 64 20 74 68 65 20 66 69 72 73 74 0a 77   and the first.w
2740: 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 63  rite operation c
2750: 72 65 61 74 65 73 20 61 20 5b 52 45 53 45 52 56  reates a [RESERV
2760: 45 44 5d 20 6c 6f 63 6b 2e 20 20 20 42 65 63 61  ED] lock.   Beca
2770: 75 73 65 20 74 68 65 20 61 63 71 75 69 73 69 74  use the acquisit
2780: 69 6f 6e 20 6f 66 0a 6c 6f 63 6b 73 20 69 73 20  ion of.locks is 
2790: 64 65 66 65 72 72 65 64 20 75 6e 74 69 6c 20 74  deferred until t
27a0: 68 65 79 20 61 72 65 20 6e 65 65 64 65 64 2c 20  hey are needed, 
27b0: 69 74 20 69 73 20 70 6f 73 73 69 62 6c 65 20 74  it is possible t
27c0: 68 61 74 20 61 6e 6f 74 68 65 72 0a 74 68 72 65  hat another.thre
27d0: 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20 63 6f  ad or process co
27e0: 75 6c 64 20 63 72 65 61 74 65 20 61 20 73 65 70  uld create a sep
27f0: 61 72 61 74 65 20 74 72 61 6e 73 61 63 74 69 6f  arate transactio
2800: 6e 20 61 6e 64 20 77 72 69 74 65 20 74 6f 0a 74  n and write to.t
2810: 68 65 20 64 61 74 61 62 61 73 65 20 61 66 74 65  he database afte
2820: 72 20 74 68 65 20 42 45 47 49 4e 20 6f 6e 20 74  r the BEGIN on t
2830: 68 65 20 63 75 72 72 65 6e 74 20 74 68 72 65 61  he current threa
2840: 64 20 68 61 73 20 65 78 65 63 75 74 65 64 2e 0a  d has executed..
2850: 49 66 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  If the transacti
2860: 6f 6e 20 69 73 20 69 6d 6d 65 64 69 61 74 65 2c  on is immediate,
2870: 20 74 68 65 6e 20 5b 52 45 53 45 52 56 45 44 5d   then [RESERVED]
2880: 20 6c 6f 63 6b 73 0a 61 72 65 20 61 63 71 75 69   locks.are acqui
2890: 72 65 64 20 6f 6e 20 61 6c 6c 20 64 61 74 61 62  red on all datab
28a0: 61 73 65 73 20 61 73 20 73 6f 6f 6e 20 61 73 20  ases as soon as 
28b0: 74 68 65 20 42 45 47 49 4e 20 63 6f 6d 6d 61 6e  the BEGIN comman
28c0: 64 20 69 73 0a 65 78 65 63 75 74 65 64 2c 20 77  d is.executed, w
28d0: 69 74 68 6f 75 74 20 77 61 69 74 69 6e 67 20 66  ithout waiting f
28e0: 6f 72 20 74 68 65 0a 64 61 74 61 62 61 73 65 20  or the.database 
28f0: 74 6f 20 62 65 20 75 73 65 64 2e 20 20 41 66 74  to be used.  Aft
2900: 65 72 20 61 20 42 45 47 49 4e 20 49 4d 4d 45 44  er a BEGIN IMMED
2910: 49 41 54 45 2c 20 79 6f 75 20 61 72 65 20 67 75  IATE, you are gu
2920: 61 72 61 6e 74 65 65 64 20 74 68 61 74 0a 6e 6f  aranteed that.no
2930: 20 6f 74 68 65 72 20 74 68 72 65 61 64 20 6f 72   other thread or
2940: 20 70 72 6f 63 65 73 73 20 77 69 6c 6c 20 62 65   process will be
2950: 20 61 62 6c 65 20 74 6f 20 77 72 69 74 65 20 74   able to write t
2960: 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 6f  o the database o
2970: 72 0a 64 6f 20 61 20 42 45 47 49 4e 20 49 4d 4d  r.do a BEGIN IMM
2980: 45 44 49 41 54 45 20 6f 72 20 42 45 47 49 4e 20  EDIATE or BEGIN 
2990: 45 58 43 4c 55 53 49 56 45 2e 20 20 4f 74 68 65  EXCLUSIVE.  Othe
29a0: 72 20 70 72 6f 63 65 73 73 65 73 20 63 61 6e 20  r processes can 
29b0: 63 6f 6e 74 69 6e 75 65 0a 74 6f 20 72 65 61 64  continue.to read
29c0: 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61   from the databa
29d0: 73 65 2c 20 68 6f 77 65 76 65 72 2e 20 20 41 6e  se, however.  An
29e0: 20 65 78 63 6c 75 73 69 76 65 20 74 72 61 6e 73   exclusive trans
29f0: 61 63 74 69 6f 6e 20 63 61 75 73 65 73 0a 5b 45  action causes.[E
2a00: 58 43 4c 55 53 49 56 45 5d 20 6c 6f 63 6b 73 20  XCLUSIVE] locks 
2a10: 74 6f 20 62 65 20 61 63 71 75 69 72 65 64 20 6f  to be acquired o
2a20: 6e 20 61 6c 6c 20 64 61 74 61 62 61 73 65 73 2e  n all databases.
2a30: 20 20 41 66 74 65 72 20 61 20 42 45 47 49 4e 0a    After a BEGIN.
2a40: 45 58 43 4c 55 53 49 56 45 2c 20 79 6f 75 20 61  EXCLUSIVE, you a
2a50: 72 65 20 67 75 61 72 61 6e 74 65 65 64 20 74 68  re guaranteed th
2a60: 61 74 20 6e 6f 20 6f 74 68 65 72 20 74 68 72 65  at no other thre
2a70: 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20 77 69  ad or process wi
2a80: 6c 6c 0a 62 65 20 61 62 6c 65 20 74 6f 20 72 65  ll.be able to re
2a90: 61 64 20 6f 72 20 77 72 69 74 65 20 74 68 65 20  ad or write the 
2aa0: 64 61 74 61 62 61 73 65 20 75 6e 74 69 6c 20 74  database until t
2ab0: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69  he transaction i
2ac0: 73 0a 63 6f 6d 70 6c 65 74 65 2e 0a 3c 2f 70 3e  s.complete..</p>
2ad0: 0a 0a 3c 70 3e 0a 54 68 65 20 43 4f 4d 4d 49 54  ..<p>.The COMMIT
2ae0: 20 63 6f 6d 6d 61 6e 64 20 64 6f 65 73 20 6e 6f   command does no
2af0: 74 20 61 63 74 75 61 6c 6c 79 20 70 65 72 66 6f  t actually perfo
2b00: 72 6d 20 61 20 63 6f 6d 6d 69 74 20 75 6e 74 69  rm a commit unti
2b10: 6c 20 61 6c 6c 0a 70 65 6e 64 69 6e 67 20 53 51  l all.pending SQ
2b20: 4c 20 63 6f 6d 6d 61 6e 64 73 20 66 69 6e 69 73  L commands finis
2b30: 68 2e 20 20 54 68 75 73 20 69 66 20 6f 6e 65 20  h.  Thus if one 
2b40: 6f 72 20 6d 6f 72 65 20 5b 53 45 4c 45 43 54 5d  or more [SELECT]
2b50: 20 73 74 61 74 65 6d 65 6e 74 73 0a 61 72 65 20   statements.are 
2b60: 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66  in the middle of
2b70: 20 70 72 6f 63 65 73 73 69 6e 67 20 61 6e 64 20   processing and 
2b80: 61 20 43 4f 4d 4d 49 54 20 69 73 20 65 78 65 63  a COMMIT is exec
2b90: 75 74 65 64 2c 20 74 68 65 20 63 6f 6d 6d 69 74  uted, the commit
2ba0: 0a 77 69 6c 6c 20 6e 6f 74 20 61 63 74 75 61 6c  .will not actual
2bb0: 6c 79 20 6f 63 63 75 72 20 75 6e 74 69 6c 20 61  ly occur until a
2bc0: 6c 6c 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74  ll [SELECT] stat
2bd0: 65 6d 65 6e 74 73 20 68 61 76 65 20 62 65 65 6e  ements have been
2be0: 0a 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28  .[sqlite3_reset(
2bf0: 29 20 7c 20 72 65 73 65 74 5d 20 6f 72 20 5b 73  ) | reset] or [s
2c00: 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
2c10: 29 20 7c 20 66 69 6e 61 6c 69 7a 65 64 5d 2e 0a  ) | finalized]..
2c20: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41 6e 20 61 74 74  </p>..<p>.An att
2c30: 65 6d 70 74 20 74 6f 20 65 78 65 63 75 74 65 20  empt to execute 
2c40: 43 4f 4d 4d 49 54 20 6d 69 67 68 74 20 72 65 73  COMMIT might res
2c50: 75 6c 74 20 69 6e 20 61 6e 20 5b 53 51 4c 49 54  ult in an [SQLIT
2c60: 45 5f 42 55 53 59 5d 20 72 65 74 75 72 6e 20 63  E_BUSY] return c
2c70: 6f 64 65 2e 0a 54 68 69 73 20 69 6e 64 69 63 61  ode..This indica
2c80: 74 65 73 20 74 68 61 74 20 61 6e 6f 74 68 65 72  tes that another
2c90: 20 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63 65   thread or proce
2ca0: 73 73 20 68 61 64 20 61 20 0a 5b 73 68 61 72 65  ss had a .[share
2cb0: 64 20 6c 6f 63 6b 5d 20 6f 6e 20 74 68 65 20 64  d lock] on the d
2cc0: 61 74 61 62 61 73 65 0a 74 68 61 74 20 70 72 65  atabase.that pre
2cd0: 76 65 6e 74 65 64 20 74 68 65 20 64 61 74 61 62  vented the datab
2ce0: 61 73 65 20 66 72 6f 6d 20 62 65 69 6e 67 20 75  ase from being u
2cf0: 70 64 61 74 65 64 2e 20 20 57 68 65 6e 20 43 4f  pdated.  When CO
2d00: 4d 4d 49 54 20 66 61 69 6c 73 20 69 6e 20 74 68  MMIT fails in th
2d10: 69 73 0a 77 61 79 2c 20 74 68 65 20 74 72 61 6e  is.way, the tran
2d20: 73 61 63 74 69 6f 6e 20 72 65 6d 61 69 6e 73 20  saction remains 
2d30: 61 63 74 69 76 65 20 61 6e 64 20 74 68 65 20 43  active and the C
2d40: 4f 4d 4d 49 54 20 63 61 6e 20 62 65 20 72 65 74  OMMIT can be ret
2d50: 72 69 65 64 20 6c 61 74 65 72 0a 61 66 74 65 72  ried later.after
2d60: 20 74 68 65 20 72 65 61 64 65 72 20 68 61 73 20   the reader has 
2d70: 68 61 64 20 61 20 63 68 61 6e 63 65 20 74 6f 20  had a chance to 
2d80: 63 6c 65 61 72 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33  clear..</p>..<h3
2d90: 3e 52 65 73 70 6f 6e 73 65 20 54 6f 20 45 72 72  >Response To Err
2da0: 6f 72 73 20 57 69 74 68 69 6e 20 41 20 54 72 61  ors Within A Tra
2db0: 6e 73 61 63 74 69 6f 6e 3c 2f 68 33 3e 0a 0a 3c  nsaction</h3>..<
2dc0: 70 3e 49 66 20 63 65 72 74 61 69 6e 20 6b 69 6e  p>If certain kin
2dd0: 64 73 20 6f 66 20 65 72 72 6f 72 73 20 6f 63 63  ds of errors occ
2de0: 75 72 20 77 69 74 68 69 6e 20 61 20 74 72 61 6e  ur within a tran
2df0: 73 61 63 74 69 6f 6e 2c 20 74 68 65 0a 74 72 61  saction, the.tra
2e00: 6e 73 61 63 74 69 6f 6e 20 6d 61 79 20 6f 72 20  nsaction may or 
2e10: 6d 61 79 20 6e 6f 74 20 62 65 20 72 6f 6c 6c 65  may not be rolle
2e20: 64 20 62 61 63 6b 20 61 75 74 6f 6d 61 74 69 63  d back automatic
2e30: 61 6c 6c 79 2e 20 20 54 68 65 0a 65 72 72 6f 72  ally.  The.error
2e40: 73 20 74 68 61 74 20 63 61 75 73 65 20 74 68 65  s that cause the
2e50: 20 62 65 68 61 76 69 6f 72 20 69 6e 63 6c 75 64   behavior includ
2e60: 65 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69  e:</p>..<ul>.<li
2e70: 3e 20 5b 53 51 4c 49 54 45 5f 46 55 4c 4c 5d 3a  > [SQLITE_FULL]:
2e80: 20 64 61 74 61 62 61 73 65 20 6f 72 20 64 69 73   database or dis
2e90: 6b 20 66 75 6c 6c 0a 3c 6c 69 3e 20 5b 53 51 4c  k full.<li> [SQL
2ea0: 49 54 45 5f 49 4f 45 52 52 5d 3a 20 64 69 73 6b  ITE_IOERR]: disk
2eb0: 20 49 2f 4f 20 65 72 72 6f 72 0a 3c 6c 69 3e 20   I/O error.<li> 
2ec0: 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 3a 20 64  [SQLITE_BUSY]: d
2ed0: 61 74 61 62 61 73 65 20 69 6e 20 75 73 65 20 62  atabase in use b
2ee0: 79 20 61 6e 6f 74 68 65 72 20 70 72 6f 63 65 73  y another proces
2ef0: 73 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4e  s.<li> [SQLITE_N
2f00: 4f 4d 45 4d 5d 3a 20 6f 75 74 20 6f 72 20 6d 65  OMEM]: out or me
2f10: 6d 6f 72 79 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  mory.<li> [SQLIT
2f20: 45 5f 49 4e 54 45 52 52 55 50 54 5d 3a 20 70 72  E_INTERRUPT]: pr
2f30: 6f 63 65 73 73 69 6e 67 20 5b 73 71 6c 69 74 65  ocessing [sqlite
2f40: 33 5f 69 6e 74 65 72 72 75 70 74 7c 69 6e 74 65  3_interrupt|inte
2f50: 72 72 75 70 74 65 64 5d 0a 20 20 20 20 20 62 79  rrupted].     by
2f60: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 72 65 71   application req
2f70: 75 65 73 74 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 0a  uest.</ul>..<p>.
2f80: 46 6f 72 20 61 6c 6c 20 6f 66 20 74 68 65 73 65  For all of these
2f90: 20 65 72 72 6f 72 73 2c 20 53 51 4c 69 74 65 20   errors, SQLite 
2fa0: 61 74 74 65 6d 70 74 73 20 74 6f 20 75 6e 64 6f  attempts to undo
2fb0: 20 6a 75 73 74 20 74 68 65 20 6f 6e 65 20 73 74   just the one st
2fc0: 61 74 65 6d 65 6e 74 0a 69 74 20 77 61 73 20 77  atement.it was w
2fd0: 6f 72 6b 69 6e 67 20 6f 6e 20 61 6e 64 20 6c 65  orking on and le
2fe0: 61 76 65 20 63 68 61 6e 67 65 73 20 66 72 6f 6d  ave changes from
2ff0: 20 70 72 69 6f 72 20 73 74 61 74 65 6d 65 6e 74   prior statement
3000: 73 20 77 69 74 68 69 6e 20 74 68 65 0a 73 61 6d  s within the.sam
3010: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 6e  e transaction in
3020: 74 61 63 74 20 61 6e 64 20 63 6f 6e 74 69 6e 75  tact and continu
3030: 65 20 77 69 74 68 20 74 68 65 20 74 72 61 6e 73  e with the trans
3040: 61 63 74 69 6f 6e 2e 20 20 48 6f 77 65 76 65 72  action.  However
3050: 2c 20 0a 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  , .depending on 
3060: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 62 65  the statement be
3070: 69 6e 67 20 65 76 61 6c 75 61 74 65 64 20 61 6e  ing evaluated an
3080: 64 20 74 68 65 20 70 6f 69 6e 74 20 61 74 20 77  d the point at w
3090: 68 69 63 68 20 74 68 65 0a 65 72 72 6f 72 20 6f  hich the.error o
30a0: 63 63 75 72 73 2c 20 69 74 20 6d 69 67 68 74 20  ccurs, it might 
30b0: 62 65 20 6e 65 63 65 73 73 61 72 79 20 66 6f 72  be necessary for
30c0: 20 53 51 4c 69 74 65 20 74 6f 20 72 6f 6c 6c 62   SQLite to rollb
30d0: 61 63 6b 20 61 6e 64 0a 63 61 6e 63 65 6c 20 74  ack and.cancel t
30e0: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20  he transaction. 
30f0: 20 41 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20   An application 
3100: 63 61 6e 20 74 65 6c 6c 20 77 68 69 63 68 0a 63  can tell which.c
3110: 6f 75 72 73 65 20 6f 66 20 61 63 74 69 6f 6e 20  ourse of action 
3120: 53 51 4c 69 74 65 20 74 6f 6f 6b 20 62 79 20 75  SQLite took by u
3130: 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74 65  sing the.[sqlite
3140: 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74  3_get_autocommit
3150: 28 29 5d 20 43 2d 6c 61 6e 67 75 61 67 65 20 69  ()] C-language i
3160: 6e 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 3c  nterface.</p>..<
3170: 70 3e 49 74 20 69 73 20 72 65 63 6f 6d 6d 65 6e  p>It is recommen
3180: 64 65 64 20 74 68 61 74 20 61 70 70 6c 69 63 61  ded that applica
3190: 74 69 6f 6e 73 20 72 65 73 70 6f 6e 64 20 74 6f  tions respond to
31a0: 20 74 68 65 20 65 72 72 6f 72 73 0a 6c 69 73 74   the errors.list
31b0: 65 64 20 61 62 6f 76 65 20 62 79 20 65 78 70 6c  ed above by expl
31c0: 69 63 69 74 6c 79 20 69 73 73 75 69 6e 67 20 61  icitly issuing a
31d0: 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e   ROLLBACK comman
31e0: 64 2e 20 20 49 66 20 74 68 65 20 0a 74 72 61 6e  d.  If the .tran
31f0: 73 61 63 74 69 6f 6e 20 68 61 73 20 61 6c 72 65  saction has alre
3200: 61 64 79 20 62 65 65 6e 20 72 6f 6c 6c 65 64 20  ady been rolled 
3210: 62 61 63 6b 20 61 75 74 6f 6d 61 74 69 63 61 6c  back automatical
3220: 6c 79 0a 62 79 20 74 68 65 20 65 72 72 6f 72 20  ly.by the error 
3230: 72 65 73 70 6f 6e 73 65 2c 20 74 68 65 6e 20 74  response, then t
3240: 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d  he ROLLBACK comm
3250: 61 6e 64 20 77 69 6c 6c 20 66 61 69 6c 20 77 69  and will fail wi
3260: 74 68 20 61 6e 0a 65 72 72 6f 72 2c 20 62 75 74  th an.error, but
3270: 20 6e 6f 20 68 61 72 6d 20 69 73 20 63 61 75 73   no harm is caus
3280: 65 64 20 62 79 20 74 68 69 73 2e 3c 2f 70 3e 0a  ed by this.</p>.
3290: 0a 3c 70 3e 46 75 74 75 72 65 20 76 65 72 73 69  .<p>Future versi
32a0: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 61  ons of SQLite ma
32b0: 79 20 65 78 74 65 6e 64 20 74 68 65 20 6c 69 73  y extend the lis
32c0: 74 20 6f 66 20 65 72 72 6f 72 73 20 77 68 69 63  t of errors whic
32d0: 68 0a 6d 69 67 68 74 20 63 61 75 73 65 20 61 75  h.might cause au
32e0: 74 6f 6d 61 74 69 63 20 74 72 61 6e 73 61 63 74  tomatic transact
32f0: 69 6f 6e 20 72 6f 6c 6c 62 61 63 6b 2e 20 20 46  ion rollback.  F
3300: 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f  uture versions o
3310: 66 0a 53 51 4c 69 74 65 20 6d 69 67 68 74 20 63  f.SQLite might c
3320: 68 61 6e 67 65 20 74 68 65 20 65 72 72 6f 72 20  hange the error 
3330: 72 65 73 70 6f 6e 73 65 2e 20 20 49 6e 20 70 61  response.  In pa
3340: 72 74 69 63 75 6c 61 72 2c 20 77 65 20 6d 61 79  rticular, we may
3350: 0a 63 68 6f 6f 73 65 20 74 6f 20 73 69 6d 70 6c  .choose to simpl
3360: 69 66 79 20 74 68 65 20 69 6e 74 65 72 66 61 63  ify the interfac
3370: 65 20 69 6e 20 66 75 74 75 72 65 20 76 65 72 73  e in future vers
3380: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 62  ions of SQLite b
3390: 79 0a 63 61 75 73 69 6e 67 20 74 68 65 20 65 72  y.causing the er
33a0: 72 6f 72 73 20 61 62 6f 76 65 20 74 6f 20 66 6f  rors above to fo
33b0: 72 63 65 20 61 6e 20 75 6e 63 6f 6e 64 69 74 69  rce an unconditi
33c0: 6f 6e 61 6c 20 72 6f 6c 6c 62 61 63 6b 2e 3c 2f  onal rollback.</
33d0: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
33e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
33f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3400: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3410: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3420: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
3430: 6e 20 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e  n comment commen
3440: 74 20 7b 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65  t {comment comme
3450: 6e 74 73 7d 0a 0a 53 79 6e 74 61 78 20 7b 63 6f  nts}..Syntax {co
3460: 6d 6d 65 6e 74 7d 20 7b 3c 53 51 4c 2d 63 6f 6d  mment} {<SQL-com
3470: 6d 65 6e 74 3e 20 7c 20 3c 43 2d 63 6f 6d 6d 65  ment> | <C-comme
3480: 6e 74 3e 0a 7d 20 7b 53 51 4c 2d 63 6f 6d 6d 65  nt>.} {SQL-comme
3490: 6e 74 7d 20 7b 2d 2d 20 3c 73 69 6e 67 6c 65 2d  nt} {-- <single-
34a0: 6c 69 6e 65 3e 0a 7d 20 7b 43 2d 63 6f 6d 6d 65  line>.} {C-comme
34b0: 6e 74 7d 20 7b 2f 53 54 41 52 20 3c 6d 75 6c 74  nt} {/STAR <mult
34c0: 69 70 6c 65 2d 6c 69 6e 65 73 3e 20 5b 53 54 41  iple-lines> [STA
34d0: 52 2f 5d 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  R/].}.</tcl>..<p
34e0: 3e 20 43 6f 6d 6d 65 6e 74 73 20 61 72 65 6e 27  > Comments aren'
34f0: 74 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 2c 20  t SQL commands, 
3500: 62 75 74 20 63 61 6e 20 6f 63 63 75 72 20 69 6e  but can occur in
3510: 20 53 51 4c 20 71 75 65 72 69 65 73 2e 20 54 68   SQL queries. Th
3520: 65 79 20 61 72 65 20 0a 74 72 65 61 74 65 64 20  ey are .treated 
3530: 61 73 20 77 68 69 74 65 73 70 61 63 65 20 62 79  as whitespace by
3540: 20 74 68 65 20 70 61 72 73 65 72 2e 20 20 54 68   the parser.  Th
3550: 65 79 20 63 61 6e 20 62 65 67 69 6e 20 61 6e 79  ey can begin any
3560: 77 68 65 72 65 20 77 68 69 74 65 73 70 61 63 65  where whitespace
3570: 20 0a 63 61 6e 20 62 65 20 66 6f 75 6e 64 2c 20   .can be found, 
3580: 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65  including inside
3590: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61   expressions tha
35a0: 74 20 73 70 61 6e 20 6d 75 6c 74 69 70 6c 65 20  t span multiple 
35b0: 6c 69 6e 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  lines..</p>..<p>
35c0: 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 6f 6e   SQL comments on
35d0: 6c 79 20 65 78 74 65 6e 64 20 74 6f 20 74 68 65  ly extend to the
35e0: 20 65 6e 64 20 6f 66 20 74 68 65 20 63 75 72 72   end of the curr
35f0: 65 6e 74 20 6c 69 6e 65 2e 3c 2f 70 3e 0a 0a 3c  ent line.</p>..<
3600: 70 3e 20 43 20 63 6f 6d 6d 65 6e 74 73 20 63 61  p> C comments ca
3610: 6e 20 73 70 61 6e 20 61 6e 79 20 6e 75 6d 62 65  n span any numbe
3620: 72 20 6f 66 20 6c 69 6e 65 73 2e 20 20 49 66 20  r of lines.  If 
3630: 74 68 65 72 65 20 69 73 20 6e 6f 20 74 65 72 6d  there is no term
3640: 69 6e 61 74 69 6e 67 0a 64 65 6c 69 6d 69 74 65  inating.delimite
3650: 72 2c 20 74 68 65 79 20 65 78 74 65 6e 64 20 74  r, they extend t
3660: 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65  o the end of the
3670: 20 69 6e 70 75 74 2e 20 20 54 68 69 73 20 69 73   input.  This is
3680: 20 6e 6f 74 20 74 72 65 61 74 65 64 20 61 73 0a   not treated as.
3690: 61 6e 20 65 72 72 6f 72 2e 20 20 41 20 6e 65 77  an error.  A new
36a0: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 63   SQL statement c
36b0: 61 6e 20 62 65 67 69 6e 20 6f 6e 20 61 20 6c 69  an begin on a li
36c0: 6e 65 20 61 66 74 65 72 20 61 20 6d 75 6c 74 69  ne after a multi
36d0: 6c 69 6e 65 0a 63 6f 6d 6d 65 6e 74 20 65 6e 64  line.comment end
36e0: 73 2e 20 20 43 20 63 6f 6d 6d 65 6e 74 73 20 63  s.  C comments c
36f0: 61 6e 20 62 65 20 65 6d 62 65 64 64 65 64 20 61  an be embedded a
3700: 6e 79 77 68 65 72 65 20 77 68 69 74 65 73 70 61  nywhere whitespa
3710: 63 65 20 63 61 6e 20 6f 63 63 75 72 2c 0a 69 6e  ce can occur,.in
3720: 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65 20 65  cluding inside e
3730: 78 70 72 65 73 73 69 6f 6e 73 2c 20 61 6e 64 20  xpressions, and 
3740: 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66  in the middle of
3750: 20 6f 74 68 65 72 20 53 51 4c 20 73 74 61 74 65   other SQL state
3760: 6d 65 6e 74 73 2e 0a 43 20 63 6f 6d 6d 65 6e 74  ments..C comment
3770: 73 20 64 6f 20 6e 6f 74 20 6e 65 73 74 2e 20 20  s do not nest.  
3780: 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 69 6e 73  SQL comments ins
3790: 69 64 65 20 61 20 43 20 63 6f 6d 6d 65 6e 74 20  ide a C comment 
37a0: 77 69 6c 6c 20 62 65 20 69 67 6e 6f 72 65 64 2e  will be ignored.
37b0: 0a 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23  .</p>...<tcl>.##
37c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
37d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
37e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
37f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3800: 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
3810: 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 49 4e 44  tion {CREATE IND
3820: 45 58 7d 20 63 72 65 61 74 65 69 6e 64 65 78 20  EX} createindex 
3830: 7b 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 7d  {{CREATE INDEX}}
3840: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
3850: 61 74 65 6d 65 6e 74 7d 20 7b 0a 43 52 45 41 54  atement} {.CREAT
3860: 45 20 5b 55 4e 49 51 55 45 5d 20 49 4e 44 45 58  E [UNIQUE] INDEX
3870: 20 5b 49 46 20 4e 4f 54 20 45 58 49 53 54 53 5d   [IF NOT EXISTS]
3880: 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65   [<database-name
3890: 3e 20 2e 5d 20 3c 69 6e 64 65 78 2d 6e 61 6d 65  > .] <index-name
38a0: 3e 20 0a 4f 4e 20 3c 74 61 62 6c 65 2d 6e 61 6d  > .ON <table-nam
38b0: 65 3e 20 28 20 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d  e> ( <column-nam
38c0: 65 3e 20 5b 2c 20 3c 63 6f 6c 75 6d 6e 2d 6e 61  e> [, <column-na
38d0: 6d 65 3e 5d 2a 20 29 0a 7d 20 7b 63 6f 6c 75 6d  me>]* ).} {colum
38e0: 6e 2d 6e 61 6d 65 7d 20 7b 0a 3c 6e 61 6d 65 3e  n-name} {.<name>
38f0: 20 5b 20 43 4f 4c 4c 41 54 45 20 3c 63 6f 6c 6c   [ COLLATE <coll
3900: 61 74 69 6f 6e 2d 6e 61 6d 65 3e 5d 20 5b 20 41  ation-name>] [ A
3910: 53 43 20 7c 20 44 45 53 43 20 5d 0a 7d 0a 3c 2f  SC | DESC ].}.</
3920: 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 43 52 45  tcl>..<p>The CRE
3930: 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e  ATE INDEX comman
3940: 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68  d consists of th
3950: 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45 41  e keywords "CREA
3960: 54 45 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f 77  TE INDEX" follow
3970: 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65 20 6f  ed.by the name o
3980: 66 20 74 68 65 20 6e 65 77 20 69 6e 64 65 78 2c  f the new index,
3990: 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22 4f 4e   the keyword "ON
39a0: 22 2c 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  ", the name of a
39b0: 20 70 72 65 76 69 6f 75 73 6c 79 0a 63 72 65 61   previously.crea
39c0: 74 65 64 20 74 61 62 6c 65 20 74 68 61 74 20 69  ted table that i
39d0: 73 20 74 6f 20 62 65 20 69 6e 64 65 78 65 64 2c  s to be indexed,
39e0: 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68 65 73   and a parenthes
39f0: 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 6e 61 6d  ized list of nam
3a00: 65 73 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20 69 6e  es of.columns in
3a10: 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74 20   the table that 
3a20: 61 72 65 20 75 73 65 64 20 66 6f 72 20 74 68 65  are used for the
3a30: 20 69 6e 64 65 78 20 6b 65 79 2e 3c 2f 70 3e 0a   index key.</p>.
3a40: 0a 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d 6e 20  .<p>Each column 
3a50: 6e 61 6d 65 20 63 61 6e 20 62 65 20 66 6f 6c 6c  name can be foll
3a60: 6f 77 65 64 20 62 79 20 6f 6e 65 20 6f 66 20 74  owed by one of t
3a70: 68 65 20 22 41 53 43 22 20 6f 72 20 22 44 45 53  he "ASC" or "DES
3a80: 43 22 20 6b 65 79 77 6f 72 64 73 0a 74 6f 20 69  C" keywords.to i
3a90: 6e 64 69 63 61 74 65 20 73 6f 72 74 20 6f 72 64  ndicate sort ord
3aa0: 65 72 2e 20 20 54 68 65 20 73 6f 72 74 20 6f 72  er.  The sort or
3ab0: 64 65 72 20 6d 61 79 20 6f 72 20 6d 61 79 20 6e  der may or may n
3ac0: 6f 74 20 62 65 20 69 67 6e 6f 72 65 64 20 64 65  ot be ignored de
3ad0: 70 65 6e 64 69 6e 67 0a 6f 6e 20 74 68 65 20 64  pending.on the d
3ae0: 61 74 61 62 61 73 65 20 66 69 6c 65 20 66 6f 72  atabase file for
3af0: 6d 61 74 2e 20 20 54 68 65 20 22 6c 65 67 61 63  mat.  The "legac
3b00: 79 22 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 69  y" file format i
3b10: 67 6e 6f 72 65 73 20 69 6e 64 65 78 0a 73 6f 72  gnores index.sor
3b20: 74 20 6f 72 64 65 72 2e 20 20 54 68 65 20 64 65  t order.  The de
3b30: 73 63 65 6e 64 69 6e 67 20 69 6e 64 65 78 20 66  scending index f
3b40: 69 6c 65 20 66 6f 72 6d 61 74 20 74 61 6b 65 73  ile format takes
3b50: 20 69 6e 64 65 78 20 73 6f 72 74 20 6f 72 64 65   index sort orde
3b60: 72 0a 69 6e 74 6f 20 61 63 63 6f 75 6e 74 2e 20  r.into account. 
3b70: 20 4f 6e 6c 79 20 63 6f 70 69 65 73 20 6f 66 20   Only copies of 
3b80: 53 51 4c 69 74 65 20 6e 65 77 65 72 20 74 68 61  SQLite newer tha
3b90: 6e 20 5b 76 65 72 73 69 6f 6e 20 33 2e 33 2e 30  n [version 3.3.0
3ba0: 5d 20 0a 28 72 65 6c 65 61 73 65 64 20 6f 6e 20  ] .(released on 
3bb0: 32 30 30 36 2d 30 31 2d 31 30 29 20 61 72 65 20  2006-01-10) are 
3bc0: 61 62 6c 65 20 74 6f 20 75 6e 64 65 72 73 74 61  able to understa
3bd0: 6e 64 20 74 68 65 20 6e 65 77 65 72 20 64 65 73  nd the newer des
3be0: 63 65 6e 64 69 6e 67 0a 69 6e 64 65 78 20 66 69  cending.index fi
3bf0: 6c 65 20 66 6f 72 6d 61 74 20 61 6e 64 20 73 6f  le format and so
3c00: 20 66 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c 69   for compatibili
3c10: 74 79 20 77 69 74 68 20 6f 6c 64 65 72 20 76 65  ty with older ve
3c20: 72 73 69 6f 6e 73 20 6f 66 0a 53 51 4c 69 74 65  rsions of.SQLite
3c30: 2c 20 74 68 65 20 6c 65 67 61 63 79 20 66 69 6c  , the legacy fil
3c40: 65 20 66 6f 72 6d 61 74 20 69 73 20 67 65 6e 65  e format is gene
3c50: 72 61 74 65 64 20 62 79 20 64 65 66 61 75 6c 74  rated by default
3c60: 2e 20 20 55 73 65 20 74 68 65 0a 5b 6c 65 67 61  .  Use the.[lega
3c70: 63 79 5f 66 69 6c 65 5f 66 6f 72 6d 61 74 5d 20  cy_file_format] 
3c80: 70 72 61 67 6d 61 20 74 6f 20 6d 6f 64 69 66 79  pragma to modify
3c90: 20 74 68 69 73 20 62 65 68 61 76 69 6f 72 20 61   this behavior a
3ca0: 6e 64 20 67 65 6e 65 72 61 74 65 0a 64 61 74 61  nd generate.data
3cb0: 62 61 73 65 73 20 74 68 61 74 20 75 73 65 20 74  bases that use t
3cc0: 68 65 20 6e 65 77 65 72 20 66 69 6c 65 20 66 6f  he newer file fo
3cd0: 72 6d 61 74 2e 20 20 46 75 74 75 72 65 20 76 65  rmat.  Future ve
3ce0: 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65  rsions of SQLite
3cf0: 0a 6d 61 79 20 62 65 67 69 6e 20 74 6f 20 67 65  .may begin to ge
3d00: 6e 65 72 61 74 65 20 74 68 65 20 6e 65 77 65 72  nerate the newer
3d10: 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 62 79 20   file format by 
3d20: 64 65 66 61 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70  default.</p>..<p
3d30: 3e 54 68 65 20 43 4f 4c 4c 41 54 45 20 63 6c 61  >The COLLATE cla
3d40: 75 73 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 65 61  use following ea
3d50: 63 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 64  ch column name d
3d60: 65 66 69 6e 65 73 20 61 20 63 6f 6c 6c 61 74 69  efines a collati
3d70: 6e 67 0a 73 65 71 75 65 6e 63 65 20 75 73 65 64  ng.sequence used
3d80: 20 66 6f 72 20 74 65 78 74 20 65 6e 74 69 72 65   for text entire
3d90: 73 20 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e  s in that column
3da0: 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 63  .  The default c
3db0: 6f 6c 6c 61 74 69 6e 67 0a 73 65 71 75 65 6e 63  ollating.sequenc
3dc0: 65 20 69 73 20 74 68 65 20 63 6f 6c 6c 61 74 69  e is the collati
3dd0: 6e 67 20 73 65 71 75 65 6e 63 65 20 64 65 66 69  ng sequence defi
3de0: 6e 65 64 20 66 6f 72 20 74 68 61 74 20 63 6f 6c  ned for that col
3df0: 75 6d 6e 20 69 6e 20 74 68 65 0a 5b 43 52 45 41  umn in the.[CREA
3e00: 54 45 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d  TE TABLE] statem
3e10: 65 6e 74 2e 20 20 4f 72 20 69 66 20 6e 6f 20 63  ent.  Or if no c
3e20: 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63  ollating sequenc
3e30: 65 20 69 73 20 6f 74 68 65 72 77 69 73 65 20 64  e is otherwise d
3e40: 65 66 69 6e 65 64 2c 0a 74 68 65 20 62 75 69 6c  efined,.the buil
3e50: 74 2d 69 6e 20 42 49 4e 41 52 59 20 63 6f 6c 6c  t-in BINARY coll
3e60: 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69  ating sequence i
3e70: 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  s used.</p>..<p>
3e80: 54 68 65 72 65 20 61 72 65 20 6e 6f 20 61 72 62  There are no arb
3e90: 69 74 72 61 72 79 20 6c 69 6d 69 74 73 20 6f 6e  itrary limits on
3ea0: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 69   the number of i
3eb0: 6e 64 69 63 65 73 20 74 68 61 74 20 63 61 6e 20  ndices that can 
3ec0: 62 65 0a 61 74 74 61 63 68 65 64 20 74 6f 20 61  be.attached to a
3ed0: 20 73 69 6e 67 6c 65 20 74 61 62 6c 65 2e 20 20   single table.  
3ee0: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  The number of co
3ef0: 6c 75 6d 6e 73 20 69 6e 20 61 6e 20 69 6e 64 65  lumns in an inde
3f00: 78 20 69 73 20 0a 6c 69 6d 69 74 65 64 20 74 6f  x is .limited to
3f10: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c   [SQLITE_MAX_COL
3f20: 55 4d 4e 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66  UMN].</p>..<p>If
3f30: 20 74 68 65 20 55 4e 49 51 55 45 20 6b 65 79 77   the UNIQUE keyw
3f40: 6f 72 64 20 61 70 70 65 61 72 73 20 62 65 74 77  ord appears betw
3f50: 65 65 6e 20 43 52 45 41 54 45 20 61 6e 64 20 49  een CREATE and I
3f60: 4e 44 45 58 20 74 68 65 6e 20 64 75 70 6c 69 63  NDEX then duplic
3f70: 61 74 65 0a 69 6e 64 65 78 20 65 6e 74 72 69 65  ate.index entrie
3f80: 73 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65  s are not allowe
3f90: 64 2e 20 20 41 6e 79 20 61 74 74 65 6d 70 74 20  d.  Any attempt 
3fa0: 74 6f 20 69 6e 73 65 72 74 20 61 20 64 75 70 6c  to insert a dupl
3fb0: 69 63 61 74 65 20 65 6e 74 72 79 0a 77 69 6c 6c  icate entry.will
3fc0: 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20 65 72   result in an er
3fd0: 72 6f 72 2e 20 20 46 6f 72 20 74 68 65 20 70 75  ror.  For the pu
3fe0: 72 70 6f 73 65 73 20 6f 66 20 75 6e 69 71 75 65  rposes of unique
3ff0: 20 69 6e 64 69 63 65 73 2c 20 61 6c 6c 20 4e 55   indices, all NU
4000: 4c 4c 20 76 61 6c 75 65 73 0a 61 72 65 20 63 6f  LL values.are co
4010: 6e 73 69 64 65 72 65 64 20 74 6f 20 64 69 66 66  nsidered to diff
4020: 65 72 65 6e 74 20 66 72 6f 6d 20 61 6c 6c 20 6f  erent from all o
4030: 74 68 65 72 20 4e 55 4c 4c 20 76 61 6c 75 65 73  ther NULL values
4040: 20 61 6e 64 20 61 72 65 20 74 68 75 73 20 75 6e   and are thus un
4050: 69 71 75 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  ique.</p>..<p>Th
4060: 65 20 74 65 78 74 0a 6f 66 20 65 61 63 68 20 43  e text.of each C
4070: 52 45 41 54 45 20 49 4e 44 45 58 20 73 74 61 74  REATE INDEX stat
4080: 65 6d 65 6e 74 20 69 73 20 73 74 6f 72 65 64 20  ement is stored 
4090: 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65  in the <b>sqlite
40a0: 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 6f 72 20 3c  _master</b>.or <
40b0: 62 3e 73 71 6c 69 74 65 5f 74 65 6d 70 5f 6d 61  b>sqlite_temp_ma
40c0: 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 2c 20  ster</b> table, 
40d0: 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65  depending on whe
40e0: 74 68 65 72 20 74 68 65 20 74 61 62 6c 65 0a 62  ther the table.b
40f0: 65 69 6e 67 20 69 6e 64 65 78 65 64 20 69 73 20  eing indexed is 
4100: 74 65 6d 70 6f 72 61 72 79 2e 20 20 45 76 65 72  temporary.  Ever
4110: 79 20 74 69 6d 65 20 74 68 65 20 64 61 74 61 62  y time the datab
4120: 61 73 65 20 69 73 20 6f 70 65 6e 65 64 2c 0a 61  ase is opened,.a
4130: 6c 6c 20 43 52 45 41 54 45 20 49 4e 44 45 58 20  ll CREATE INDEX 
4140: 73 74 61 74 65 6d 65 6e 74 73 0a 61 72 65 20 72  statements.are r
4150: 65 61 64 20 66 72 6f 6d 20 74 68 65 20 3c 62 3e  ead from the <b>
4160: 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62  sqlite_master</b
4170: 3e 20 74 61 62 6c 65 20 61 6e 64 20 75 73 65 64  > table and used
4180: 20 74 6f 20 72 65 67 65 6e 65 72 61 74 65 0a 53   to regenerate.S
4190: 51 4c 69 74 65 27 73 20 69 6e 74 65 72 6e 61 6c  QLite's internal
41a0: 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20   representation 
41b0: 6f 66 20 74 68 65 20 69 6e 64 65 78 20 6c 61 79  of the index lay
41c0: 6f 75 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  out.</p>..<p>If 
41d0: 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20  the optional IF 
41e0: 4e 4f 54 20 45 58 49 53 54 53 20 63 6c 61 75 73  NOT EXISTS claus
41f0: 65 20 69 73 20 70 72 65 73 65 6e 74 20 61 6e 64  e is present and
4200: 20 61 6e 6f 74 68 65 72 20 69 6e 64 65 78 0a 77   another index.w
4210: 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d  ith the same nam
4220: 65 20 61 6c 65 61 64 79 20 65 78 69 73 74 73 2c  e aleady exists,
4230: 20 74 68 65 6e 20 74 68 69 73 20 63 6f 6d 6d 61   then this comma
4240: 6e 64 20 62 65 63 6f 6d 65 73 20 61 20 6e 6f 2d  nd becomes a no-
4250: 6f 70 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 64 65  op.</p>..<p>Inde
4260: 78 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20  xes are removed 
4270: 77 69 74 68 20 74 68 65 20 3c 61 20 68 72 65 66  with the <a href
4280: 3d 22 6c 61 6e 67 5f 64 72 6f 70 69 6e 64 65 78  ="lang_dropindex
4290: 2e 68 74 6d 6c 22 3e 44 52 4f 50 20 49 4e 44 45  .html">DROP INDE
42a0: 58 3c 2f 61 3e 20 0a 63 6f 6d 6d 61 6e 64 2e 3c  X</a> .command.<
42b0: 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  /p>...<tcl>.####
42c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4300: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
4310: 6f 6e 20 7b 43 52 45 41 54 45 20 54 41 42 4c 45  on {CREATE TABLE
4320: 7d 20 7b 63 72 65 61 74 65 74 61 62 6c 65 7d 20  } {createtable} 
4330: 7b 7b 43 52 45 41 54 45 20 54 41 42 4c 45 7d 7d  {{CREATE TABLE}}
4340: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f  ..Syntax {sql-co
4350: 6d 6d 61 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20  mmand} {.CREATE 
4360: 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52  [TEMP | TEMPORAR
4370: 59 5d 20 54 41 42 4c 45 20 5b 49 46 20 4e 4f 54  Y] TABLE [IF NOT
4380: 20 45 58 49 53 54 53 5d 20 5b 3c 64 61 74 61 62   EXISTS] [<datab
4390: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
43a0: 62 6c 65 2d 6e 61 6d 65 3e 20 28 0a 20 20 3c 63  ble-name> (.  <c
43b0: 6f 6c 75 6d 6e 2d 64 65 66 3e 20 5b 2c 20 3c 63  olumn-def> [, <c
43c0: 6f 6c 75 6d 6e 2d 64 65 66 3e 5d 2a 0a 20 20 5b  olumn-def>]*.  [
43d0: 2c 20 3c 63 6f 6e 73 74 72 61 69 6e 74 3e 5d 2a  , <constraint>]*
43e0: 0a 29 0a 7d 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e  .).} {sql-comman
43f0: 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d  d} {.CREATE [TEM
4400: 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20 54  P | TEMPORARY] T
4410: 41 42 4c 45 20 5b 3c 64 61 74 61 62 61 73 65 2d  ABLE [<database-
4420: 6e 61 6d 65 3e 2e 5d 20 3c 74 61 62 6c 65 2d 6e  name>.] <table-n
4430: 61 6d 65 3e 20 41 53 20 3c 73 65 6c 65 63 74 2d  ame> AS <select-
4440: 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 20 7b 63 6f  statement>.} {co
4450: 6c 75 6d 6e 2d 64 65 66 7d 20 7b 0a 3c 6e 61 6d  lumn-def} {.<nam
4460: 65 3e 20 5b 3c 74 79 70 65 3e 5d 20 5b 5b 43 4f  e> [<type>] [[CO
4470: 4e 53 54 52 41 49 4e 54 20 3c 6e 61 6d 65 3e 5d  NSTRAINT <name>]
4480: 20 3c 63 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72 61   <column-constra
4490: 69 6e 74 3e 5d 2a 0a 7d 20 7b 74 79 70 65 7d 20  int>]*.} {type} 
44a0: 7b 0a 3c 74 79 70 65 6e 61 6d 65 3e 20 7c 0a 3c  {.<typename> |.<
44b0: 74 79 70 65 6e 61 6d 65 3e 20 28 20 3c 6e 75 6d  typename> ( <num
44c0: 62 65 72 3e 20 29 20 7c 0a 3c 74 79 70 65 6e 61  ber> ) |.<typena
44d0: 6d 65 3e 20 28 20 3c 6e 75 6d 62 65 72 3e 20 2c  me> ( <number> ,
44e0: 20 3c 6e 75 6d 62 65 72 3e 20 29 0a 7d 20 7b 63   <number> ).} {c
44f0: 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e 74  olumn-constraint
4500: 7d 20 7b 0a 4e 4f 54 20 4e 55 4c 4c 20 5b 20 3c  } {.NOT NULL [ <
4510: 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e  conflict-clause>
4520: 20 5d 20 7c 0a 50 52 49 4d 41 52 59 20 4b 45 59   ] |.PRIMARY KEY
4530: 20 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e 5d 20   [<sort-order>] 
4540: 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  [ <conflict-clau
4550: 73 65 3e 20 5d 20 5b 41 55 54 4f 49 4e 43 52 45  se> ] [AUTOINCRE
4560: 4d 45 4e 54 5d 20 7c 0a 55 4e 49 51 55 45 20 5b  MENT] |.UNIQUE [
4570: 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73   <conflict-claus
4580: 65 3e 20 5d 20 7c 0a 43 48 45 43 4b 20 28 20 3c  e> ] |.CHECK ( <
4590: 65 78 70 72 3e 20 29 20 7c 0a 44 45 46 41 55 4c  expr> ) |.DEFAUL
45a0: 54 20 3c 76 61 6c 75 65 3e 20 7c 0a 43 4f 4c 4c  T <value> |.COLL
45b0: 41 54 45 20 3c 63 6f 6c 6c 61 74 69 6f 6e 2d 6e  ATE <collation-n
45c0: 61 6d 65 3e 0a 7d 20 7b 63 6f 6e 73 74 72 61 69  ame>.} {constrai
45d0: 6e 74 7d 20 7b 0a 50 52 49 4d 41 52 59 20 4b 45  nt} {.PRIMARY KE
45e0: 59 20 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74  Y ( <column-list
45f0: 3e 20 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d  > ) [ <conflict-
4600: 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 55 4e 49 51  clause> ] |.UNIQ
4610: 55 45 20 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73  UE ( <column-lis
4620: 74 3e 20 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74  t> ) [ <conflict
4630: 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 43 48 45  -clause> ] |.CHE
4640: 43 4b 20 28 20 3c 65 78 70 72 3e 20 29 0a 7d 20  CK ( <expr> ).} 
4650: 7b 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65  {conflict-clause
4660: 7d 20 7b 0a 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  } {.ON CONFLICT 
4670: 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69  <conflict-algori
4680: 74 68 6d 3e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  thm>.}.</tcl>..<
4690: 70 3e 41 20 43 52 45 41 54 45 20 54 41 42 4c 45  p>A CREATE TABLE
46a0: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 62 61   statement is ba
46b0: 73 69 63 61 6c 6c 79 20 74 68 65 20 6b 65 79 77  sically the keyw
46c0: 6f 72 64 73 20 22 43 52 45 41 54 45 20 54 41 42  ords "CREATE TAB
46d0: 4c 45 22 0a 66 6f 6c 6c 6f 77 65 64 20 62 79 20  LE".followed by 
46e0: 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 6e 65  the name of a ne
46f0: 77 20 74 61 62 6c 65 20 61 6e 64 20 61 20 70 61  w table and a pa
4700: 72 65 6e 74 68 65 73 69 7a 65 64 20 6c 69 73 74  renthesized list
4710: 20 6f 66 20 63 6f 6c 75 6d 6e 0a 64 65 66 69 6e   of column.defin
4720: 69 74 69 6f 6e 73 20 61 6e 64 20 63 6f 6e 73 74  itions and const
4730: 72 61 69 6e 74 73 2e 20 20 0a 54 61 62 6c 65 73  raints.  .Tables
4740: 20 6e 61 6d 65 73 20 74 68 61 74 20 62 65 67 69   names that begi
4750: 6e 20 77 69 74 68 20 22 3c 62 3e 73 71 6c 69 74  n with "<b>sqlit
4760: 65 5f 3c 2f 62 3e 22 20 61 72 65 20 72 65 73 65  e_</b>" are rese
4770: 72 76 65 64 0a 66 6f 72 20 75 73 65 20 62 79 20  rved.for use by 
4780: 74 68 65 20 65 6e 67 69 6e 65 2e 3c 2f 70 3e 0a  the engine.</p>.
4790: 0a 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d 6e 20  .<p>Each column 
47a0: 64 65 66 69 6e 69 74 69 6f 6e 20 69 73 20 74 68  definition is th
47b0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f  e name of the co
47c0: 6c 75 6d 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79  lumn followed by
47d0: 20 74 68 65 0a 64 61 74 61 74 79 70 65 20 66 6f   the.datatype fo
47e0: 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c 20 74  r that column, t
47f0: 68 65 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  hen one or more 
4800: 6f 70 74 69 6f 6e 61 6c 20 63 6f 6c 75 6d 6e 20  optional column 
4810: 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 54 68 65  constraints..The
4820: 20 64 61 74 61 74 79 70 65 20 66 6f 72 20 74 68   datatype for th
4830: 65 20 63 6f 6c 75 6d 6e 20 64 6f 65 73 20 6e 6f  e column does no
4840: 74 20 72 65 73 74 72 69 63 74 20 77 68 61 74 20  t restrict what 
4850: 64 61 74 61 20 6d 61 79 20 62 65 20 70 75 74 0a  data may be put.
4860: 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 0a  in that column..
4870: 53 65 65 20 3c 61 20 68 72 65 66 3d 22 64 61 74  See <a href="dat
4880: 61 74 79 70 65 33 2e 68 74 6d 6c 22 3e 44 61 74  atype3.html">Dat
4890: 61 74 79 70 65 73 20 49 6e 20 53 51 4c 69 74 65  atypes In SQLite
48a0: 20 56 65 72 73 69 6f 6e 20 33 3c 2f 61 3e 20 66   Version 3</a> f
48b0: 6f 72 0a 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or.additional in
48c0: 66 6f 72 6d 61 74 69 6f 6e 2e 0a 54 68 65 20 55  formation..The U
48d0: 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e 74  NIQUE constraint
48e0: 20 63 61 75 73 65 73 20 61 6e 20 75 6e 69 71 75   causes an uniqu
48f0: 65 20 69 6e 64 65 78 20 74 6f 20 62 65 20 63 72  e index to be cr
4900: 65 61 74 65 64 20 6f 6e 20 74 68 65 20 73 70 65  eated on the spe
4910: 63 69 66 69 65 64 0a 63 6f 6c 75 6d 6e 73 2e 20  cified.columns. 
4920: 20 41 6c 6c 20 4e 55 4c 4c 20 76 61 6c 75 65 73   All NULL values
4930: 20 61 72 65 20 63 6f 6e 73 69 64 65 72 65 64 20   are considered 
4940: 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20 65  different from e
4950: 61 63 68 20 6f 74 68 65 72 20 61 6e 64 20 66 72  ach other and fr
4960: 6f 6d 0a 61 6c 6c 20 6f 74 68 65 72 20 76 61 6c  om.all other val
4970: 75 65 73 20 66 6f 72 20 74 68 65 20 70 75 72 70  ues for the purp
4980: 6f 73 65 20 6f 66 20 64 65 74 65 72 6d 69 6e 69  ose of determini
4990: 6e 67 20 75 6e 69 71 75 65 6e 65 73 73 2c 20 68  ng uniqueness, h
49a0: 65 6e 63 65 20 61 20 55 4e 49 51 55 45 0a 63 6f  ence a UNIQUE.co
49b0: 6c 75 6d 6e 20 6d 61 79 20 63 6f 6e 74 61 69 6e  lumn may contain
49c0: 20 6d 75 6c 74 69 70 6c 65 20 65 6e 74 72 69 65   multiple entrie
49d0: 73 20 77 69 74 68 20 74 68 65 20 76 61 6c 75 65  s with the value
49e0: 20 6f 66 20 4e 55 4c 4c 2e 0a 54 68 65 20 43 4f   of NULL..The CO
49f0: 4c 4c 41 54 45 20 63 6c 61 75 73 65 20 73 70 65  LLATE clause spe
4a00: 63 69 66 69 65 73 20 77 68 61 74 20 74 65 78 74  cifies what text
4a10: 20 0a 5b 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e   .[collating fun
4a20: 63 74 69 6f 6e 5d 20 74 6f 20 75 73 65 20 77 68  ction] to use wh
4a30: 65 6e 20 63 6f 6d 70 61 72 69 6e 67 20 74 65 78  en comparing tex
4a40: 74 20 65 6e 74 72 69 65 73 20 66 6f 72 20 74 68  t entries for th
4a50: 65 20 63 6f 6c 75 6d 6e 2e 20 20 0a 54 68 65 20  e column.  .The 
4a60: 62 75 69 6c 74 2d 69 6e 20 5b 42 49 4e 41 52 59  built-in [BINARY
4a70: 5d 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63  ] collating func
4a80: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 62 79 20  tion is used by 
4a90: 64 65 66 61 75 6c 74 2e 0a 3c 70 3e 0a 54 68 65  default..<p>.The
4aa0: 20 44 45 46 41 55 4c 54 20 63 6f 6e 73 74 72 61   DEFAULT constra
4ab0: 69 6e 74 20 73 70 65 63 69 66 69 65 73 20 61 20  int specifies a 
4ac0: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 74 6f  default value to
4ad0: 20 75 73 65 20 77 68 65 6e 20 64 6f 69 6e 67 20   use when doing 
4ae0: 61 6e 20 5b 49 4e 53 45 52 54 5d 2e 0a 54 68 65  an [INSERT]..The
4af0: 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20 4e 55   value may be NU
4b00: 4c 4c 2c 20 61 20 73 74 72 69 6e 67 20 63 6f 6e  LL, a string con
4b10: 73 74 61 6e 74 20 6f 72 20 61 20 6e 75 6d 62 65  stant or a numbe
4b20: 72 2e 20 53 74 61 72 74 69 6e 67 20 77 69 74 68  r. Starting with
4b30: 0a 5b 76 65 72 73 69 6f 6e 20 33 2e 31 2e 30 5d  .[version 3.1.0]
4b40: 2c 0a 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  ,.the default va
4b50: 6c 75 65 20 6d 61 79 20 61 6c 73 6f 20 62 65 20  lue may also be 
4b60: 6f 6e 65 20 6f 66 20 74 68 65 20 73 70 65 63 69  one of the speci
4b70: 61 6c 20 63 61 73 65 2d 69 6e 64 65 70 65 6e 64  al case-independ
4b80: 61 6e 74 0a 6b 65 79 77 6f 72 64 73 20 43 55 52  ant.keywords CUR
4b90: 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45  RENT_TIME, CURRE
4ba0: 4e 54 5f 44 41 54 45 20 6f 72 20 43 55 52 52 45  NT_DATE or CURRE
4bb0: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2e 20 49 66  NT_TIMESTAMP. If
4bc0: 20 74 68 65 20 76 61 6c 75 65 20 69 73 0a 4e 55   the value is.NU
4bd0: 4c 4c 2c 20 61 20 73 74 72 69 6e 67 20 63 6f 6e  LL, a string con
4be0: 73 74 61 6e 74 20 6f 72 20 6e 75 6d 62 65 72 2c  stant or number,
4bf0: 20 69 74 20 69 73 20 6c 69 74 65 72 61 6c 6c 79   it is literally
4c00: 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 20 74   inserted into t
4c10: 68 65 20 63 6f 6c 75 6d 6e 0a 77 68 65 6e 65 76  he column.whenev
4c20: 65 72 20 61 6e 20 49 4e 53 45 52 54 20 73 74 61  er an INSERT sta
4c30: 74 65 6d 65 6e 74 20 74 68 61 74 20 64 6f 65 73  tement that does
4c40: 20 6e 6f 74 20 73 70 65 63 69 66 79 20 61 20 76   not specify a v
4c50: 61 6c 75 65 20 66 6f 72 20 74 68 65 20 63 6f 6c  alue for the col
4c60: 75 6d 6e 20 69 73 0a 65 78 65 63 75 74 65 64 2e  umn is.executed.
4c70: 20 49 66 20 74 68 65 20 76 61 6c 75 65 20 69 73   If the value is
4c80: 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43   CURRENT_TIME, C
4c90: 55 52 52 45 4e 54 5f 44 41 54 45 20 6f 72 20 43  URRENT_DATE or C
4ca0: 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50  URRENT_TIMESTAMP
4cb0: 2c 20 74 68 65 6e 0a 74 68 65 20 63 75 72 72 65  , then.the curre
4cc0: 6e 74 20 55 54 43 20 64 61 74 65 20 61 6e 64 2f  nt UTC date and/
4cd0: 6f 72 20 74 69 6d 65 20 69 73 20 69 6e 73 65 72  or time is inser
4ce0: 74 65 64 20 69 6e 74 6f 20 74 68 65 20 63 6f 6c  ted into the col
4cf0: 75 6d 6e 73 2e 20 46 6f 72 0a 43 55 52 52 45 4e  umns. For.CURREN
4d00: 54 5f 54 49 4d 45 2c 20 74 68 65 20 66 6f 72 6d  T_TIME, the form
4d10: 61 74 20 69 73 20 48 48 3a 4d 4d 3a 53 53 2e 20  at is HH:MM:SS. 
4d20: 46 6f 72 20 43 55 52 52 45 4e 54 5f 44 41 54 45  For CURRENT_DATE
4d30: 2c 20 59 59 59 59 2d 4d 4d 2d 44 44 2e 20 54 68  , YYYY-MM-DD. Th
4d40: 65 20 66 6f 72 6d 61 74 0a 66 6f 72 20 43 55 52  e format.for CUR
4d50: 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 69  RENT_TIMESTAMP i
4d60: 73 20 22 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48  s "YYYY-MM-DD HH
4d70: 3a 4d 4d 3a 53 53 22 2e 0a 3c 2f 70 3e 0a 0a 3c  :MM:SS"..</p>..<
4d80: 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20  tcl>hd_fragment 
4d90: 72 6f 77 69 64 20 7b 49 4e 54 45 47 45 52 20 50  rowid {INTEGER P
4da0: 52 49 4d 41 52 59 20 4b 45 59 7d 20 52 4f 57 49  RIMARY KEY} ROWI
4db0: 44 3c 2f 74 63 6c 3e 0a 3c 70 3e 53 70 65 63 69  D</tcl>.<p>Speci
4dc0: 66 79 69 6e 67 20 61 20 50 52 49 4d 41 52 59 20  fying a PRIMARY 
4dd0: 4b 45 59 20 6e 6f 72 6d 61 6c 6c 79 20 6a 75 73  KEY normally jus
4de0: 74 20 63 72 65 61 74 65 73 20 61 20 55 4e 49 51  t creates a UNIQ
4df0: 55 45 20 69 6e 64 65 78 0a 6f 6e 20 74 68 65 20  UE index.on the 
4e00: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 63 6f  corresponding co
4e10: 6c 75 6d 6e 73 2e 20 20 48 6f 77 65 76 65 72 2c  lumns.  However,
4e20: 20 69 66 20 70 72 69 6d 61 72 79 20 6b 65 79 20   if primary key 
4e30: 69 73 20 6f 6e 20 61 20 73 69 6e 67 6c 65 20 63  is on a single c
4e40: 6f 6c 75 6d 6e 0a 74 68 61 74 20 68 61 73 20 64  olumn.that has d
4e50: 61 74 61 74 79 70 65 20 49 4e 54 45 47 45 52 2c  atatype INTEGER,
4e60: 20 74 68 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d   then that colum
4e70: 6e 20 69 73 20 75 73 65 64 20 69 6e 74 65 72 6e  n is used intern
4e80: 61 6c 6c 79 0a 61 73 20 74 68 65 20 61 63 74 75  ally.as the actu
4e90: 61 6c 20 6b 65 79 20 6f 66 20 74 68 65 20 42 2d  al key of the B-
4ea0: 54 72 65 65 20 66 6f 72 20 74 68 65 20 74 61 62  Tree for the tab
4eb0: 6c 65 2e 20 20 54 68 69 73 20 6d 65 61 6e 73 20  le.  This means 
4ec0: 74 68 61 74 20 74 68 65 20 63 6f 6c 75 6d 6e 0a  that the column.
4ed0: 6d 61 79 20 6f 6e 6c 79 20 68 6f 6c 64 20 75 6e  may only hold un
4ee0: 69 71 75 65 20 69 6e 74 65 67 65 72 20 76 61 6c  ique integer val
4ef0: 75 65 73 2e 20 20 28 45 78 63 65 70 74 20 66 6f  ues.  (Except fo
4f00: 72 20 74 68 69 73 20 6f 6e 65 20 63 61 73 65 2c  r this one case,
4f10: 0a 53 51 4c 69 74 65 20 69 67 6e 6f 72 65 73 20  .SQLite ignores 
4f20: 74 68 65 20 64 61 74 61 74 79 70 65 20 73 70 65  the datatype spe
4f30: 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 63 6f  cification of co
4f40: 6c 75 6d 6e 73 20 61 6e 64 20 61 6c 6c 6f 77 73  lumns and allows
4f50: 0a 61 6e 79 20 6b 69 6e 64 20 6f 66 20 64 61 74  .any kind of dat
4f60: 61 20 74 6f 20 62 65 20 70 75 74 20 69 6e 20 61  a to be put in a
4f70: 20 63 6f 6c 75 6d 6e 20 72 65 67 61 72 64 6c 65   column regardle
4f80: 73 73 20 6f 66 20 69 74 73 20 64 65 63 6c 61 72  ss of its declar
4f90: 65 64 0a 64 61 74 61 74 79 70 65 2e 29 20 20 49  ed.datatype.)  I
4fa0: 66 20 61 20 74 61 62 6c 65 20 64 6f 65 73 20 6e  f a table does n
4fb0: 6f 74 20 68 61 76 65 20 61 6e 20 49 4e 54 45 47  ot have an INTEG
4fc0: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63  ER PRIMARY KEY c
4fd0: 6f 6c 75 6d 6e 2c 0a 74 68 65 6e 20 74 68 65 20  olumn,.then the 
4fe0: 42 2d 54 72 65 65 20 6b 65 79 20 77 69 6c 6c 20  B-Tree key will 
4ff0: 62 65 20 61 20 61 75 74 6f 6d 61 74 69 63 61 6c  be a automatical
5000: 6c 79 20 67 65 6e 65 72 61 74 65 64 20 69 6e 74  ly generated int
5010: 65 67 65 72 2e 0a 54 68 65 20 42 2d 54 72 65 65  eger..The B-Tree
5020: 20 6b 65 79 20 66 6f 72 20 61 20 72 6f 77 20 63   key for a row c
5030: 61 6e 20 61 6c 77 61 79 73 20 62 65 20 61 63 63  an always be acc
5040: 65 73 73 65 64 20 75 73 69 6e 67 20 6f 6e 65 20  essed using one 
5050: 6f 66 20 74 68 65 0a 73 70 65 63 69 61 6c 20 6e  of the.special n
5060: 61 6d 65 73 20 22 3c 62 3e 52 4f 57 49 44 3c 2f  ames "<b>ROWID</
5070: 62 3e 22 2c 20 22 3c 62 3e 4f 49 44 3c 2f 62 3e  b>", "<b>OID</b>
5080: 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44  ", or "<b>_ROWID
5090: 5f 3c 2f 62 3e 22 2e 0a 54 68 69 73 20 69 73 20  _</b>"..This is 
50a0: 74 72 75 65 20 72 65 67 61 72 64 6c 65 73 73 20  true regardless 
50b0: 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  of whether or no
50c0: 74 20 74 68 65 72 65 20 69 73 20 61 6e 20 49 4e  t there is an IN
50d0: 54 45 47 45 52 0a 50 52 49 4d 41 52 59 20 4b 45  TEGER.PRIMARY KE
50e0: 59 2e 20 20 41 6e 20 49 4e 54 45 47 45 52 20 50  Y.  An INTEGER P
50f0: 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d  RIMARY KEY colum
5100: 6e 20 63 61 6e 20 61 6c 73 6f 20 69 6e 63 6c 75  n can also inclu
5110: 64 65 20 74 68 65 0a 6b 65 79 77 6f 72 64 20 5b  de the.keyword [
5120: 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d 2e 20  AUTOINCREMENT]. 
5130: 20 54 68 65 20 5b 41 55 54 4f 49 4e 43 52 45 4d   The [AUTOINCREM
5140: 45 4e 54 5d 20 6b 65 79 77 6f 72 64 20 6d 6f 64  ENT] keyword mod
5150: 69 66 69 65 64 20 74 68 65 20 77 61 79 0a 74 68  ified the way.th
5160: 61 74 20 42 2d 54 72 65 65 20 6b 65 79 73 20 61  at B-Tree keys a
5170: 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  re automatically
5180: 20 67 65 6e 65 72 61 74 65 64 2e 20 20 41 64 64   generated.  Add
5190: 69 74 69 6f 6e 61 6c 20 64 65 74 61 69 6c 0a 6f  itional detail.o
51a0: 6e 20 61 75 74 6f 6d 61 74 69 63 20 42 2d 54 72  n automatic B-Tr
51b0: 65 65 20 6b 65 79 20 67 65 6e 65 72 61 74 69 6f  ee key generatio
51c0: 6e 20 69 73 20 61 76 61 69 6c 61 62 6c 65 0a 3c  n is available.<
51d0: 61 20 68 72 65 66 3d 22 61 75 74 6f 69 6e 63 2e  a href="autoinc.
51e0: 68 74 6d 6c 22 3e 73 65 70 61 72 61 74 65 6c 79  html">separately
51f0: 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 63  </a>.</p>..<p>Ac
5200: 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 20 53  cording to the S
5210: 51 4c 20 73 74 61 6e 64 61 72 64 2c 20 50 52 49  QL standard, PRI
5220: 4d 41 52 59 20 4b 45 59 20 73 68 6f 75 6c 64 20  MARY KEY should 
5230: 69 6d 70 6c 79 20 4e 4f 54 20 4e 55 4c 4c 2e 0a  imply NOT NULL..
5240: 55 6e 66 6f 72 74 75 6e 61 74 65 6c 79 2c 20 64  Unfortunately, d
5250: 75 65 20 74 6f 20 61 20 6c 6f 6e 67 2d 73 74 61  ue to a long-sta
5260: 6e 64 69 6e 67 20 63 6f 64 69 6e 67 20 6f 76 65  nding coding ove
5270: 72 73 69 67 68 74 2c 20 74 68 69 73 20 69 73 20  rsight, this is 
5280: 6e 6f 74 20 0a 74 68 65 20 63 61 73 65 20 69 6e  not .the case in
5290: 20 53 51 4c 69 74 65 2e 20 20 53 51 4c 69 74 65   SQLite.  SQLite
52a0: 20 61 6c 6c 6f 77 73 20 4e 55 4c 4c 20 76 61 6c   allows NULL val
52b0: 75 65 73 0a 69 6e 20 61 20 50 52 49 4d 41 52 59  ues.in a PRIMARY
52c0: 20 4b 45 59 20 63 6f 6c 75 6d 6e 2e 20 20 57 65   KEY column.  We
52d0: 20 63 6f 75 6c 64 20 63 68 61 6e 67 65 20 53 51   could change SQ
52e0: 4c 69 74 65 20 74 6f 20 63 6f 6e 66 6f 72 6d 20  Lite to conform 
52f0: 74 6f 20 74 68 65 0a 73 74 61 6e 64 61 72 64 20  to the.standard 
5300: 28 61 6e 64 20 77 65 20 6d 69 67 68 74 20 64 6f  (and we might do
5310: 20 73 6f 20 69 6e 20 74 68 65 20 66 75 74 75 72   so in the futur
5320: 65 29 2c 20 62 75 74 20 62 79 20 74 68 65 20 74  e), but by the t
5330: 69 6d 65 20 74 68 65 0a 6f 76 65 72 73 69 67 68  ime the.oversigh
5340: 74 20 77 61 73 20 64 69 73 63 6f 76 65 72 65 64  t was discovered
5350: 2c 20 53 51 4c 69 74 65 20 77 61 73 20 69 6e 20  , SQLite was in 
5360: 73 75 63 68 20 77 69 64 65 20 75 73 65 20 74 68  such wide use th
5370: 61 74 20 77 65 20 66 65 61 72 65 64 0a 62 72 65  at we feared.bre
5380: 61 6b 69 6e 67 20 6c 65 67 61 63 79 20 63 6f 64  aking legacy cod
5390: 65 20 69 66 20 77 65 20 66 69 78 65 64 20 74 68  e if we fixed th
53a0: 65 20 70 72 6f 62 6c 65 6d 2e 20 20 53 6f 20 66  e problem.  So f
53b0: 6f 72 20 6e 6f 77 20 77 65 20 68 61 76 65 0a 63  or now we have.c
53c0: 68 6f 73 65 6e 20 74 6f 20 63 6f 6e 74 69 6e 75  hosen to continu
53d0: 65 20 61 6c 6c 6f 77 69 6e 67 20 4e 55 4c 4c 73  e allowing NULLs
53e0: 20 69 6e 20 50 52 49 4d 41 52 59 20 4b 45 59 20   in PRIMARY KEY 
53f0: 63 6f 6c 75 6d 6e 73 2e 0a 44 65 76 65 6c 6f 70  columns..Develop
5400: 65 72 73 20 73 68 6f 75 6c 64 20 62 65 20 61 77  ers should be aw
5410: 61 72 65 2c 20 68 6f 77 65 76 65 72 2c 20 74 68  are, however, th
5420: 61 74 20 77 65 20 6d 61 79 20 63 68 61 6e 67 65  at we may change
5430: 20 53 51 4c 69 74 65 20 74 6f 0a 63 6f 6e 66 6f   SQLite to.confo
5440: 72 6d 20 74 6f 20 74 68 65 20 53 51 4c 20 73 74  rm to the SQL st
5450: 61 6e 64 61 72 64 20 69 6e 20 66 75 74 75 72 65  andard in future
5460: 20 61 6e 64 20 73 68 6f 75 6c 64 20 64 65 73 69   and should desi
5470: 67 6e 20 6e 65 77 20 70 72 6f 67 72 61 6d 73 0a  gn new programs.
5480: 61 63 63 6f 72 64 69 6e 67 6c 79 2e 3c 2f 70 3e  accordingly.</p>
5490: 0a 0a 3c 70 3e 49 66 20 74 68 65 20 22 54 45 4d  ..<p>If the "TEM
54a0: 50 22 20 6f 72 20 22 54 45 4d 50 4f 52 41 52 59  P" or "TEMPORARY
54b0: 22 20 6b 65 79 77 6f 72 64 20 6f 63 63 75 72 73  " keyword occurs
54c0: 20 69 6e 20 62 65 74 77 65 65 6e 20 22 43 52 45   in between "CRE
54d0: 41 54 45 22 0a 61 6e 64 20 22 54 41 42 4c 45 22  ATE".and "TABLE"
54e0: 20 74 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20   then the table 
54f0: 74 68 61 74 20 69 73 20 63 72 65 61 74 65 64 20  that is created 
5500: 69 73 20 6f 6e 6c 79 20 76 69 73 69 62 6c 65 0a  is only visible.
5510: 77 69 74 68 69 6e 20 74 68 61 74 20 73 61 6d 65  within that same
5520: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
5530: 74 69 6f 6e 0a 61 6e 64 20 69 73 20 61 75 74 6f  tion.and is auto
5540: 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c 65 74 65  matically delete
5550: 64 20 77 68 65 6e 0a 74 68 65 20 64 61 74 61 62  d when.the datab
5560: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  ase connection i
5570: 73 20 63 6c 6f 73 65 64 2e 20 20 41 6e 79 20 69  s closed.  Any i
5580: 6e 64 69 63 65 73 20 63 72 65 61 74 65 64 20 6f  ndices created o
5590: 6e 20 61 20 74 65 6d 70 6f 72 61 72 79 20 74 61  n a temporary ta
55a0: 62 6c 65 0a 61 72 65 20 61 6c 73 6f 20 74 65 6d  ble.are also tem
55b0: 70 6f 72 61 72 79 2e 20 20 54 65 6d 70 6f 72 61  porary.  Tempora
55c0: 72 79 20 74 61 62 6c 65 73 20 61 6e 64 20 69 6e  ry tables and in
55d0: 64 69 63 65 73 20 61 72 65 20 73 74 6f 72 65 64  dices are stored
55e0: 20 69 6e 20 61 0a 73 65 70 61 72 61 74 65 20 66   in a.separate f
55f0: 69 6c 65 20 64 69 73 74 69 6e 63 74 20 66 72 6f  ile distinct fro
5600: 6d 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  m the main datab
5610: 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c  ase file.</p>..<
5620: 70 3e 20 49 66 20 61 20 26 6c 74 3b 64 61 74 61  p> If a &lt;data
5630: 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73  base-name&gt; is
5640: 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e   specified, then
5650: 20 74 68 65 20 74 61 62 6c 65 20 69 73 20 63 72   the table is cr
5660: 65 61 74 65 64 20 69 6e 20 0a 74 68 65 20 6e 61  eated in .the na
5670: 6d 65 64 20 64 61 74 61 62 61 73 65 2e 20 49 74  med database. It
5680: 20 69 73 20 61 6e 20 65 72 72 6f 72 20 74 6f 20   is an error to 
5690: 73 70 65 63 69 66 79 20 62 6f 74 68 20 61 20 26  specify both a &
56a0: 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  lt;database-name
56b0: 26 67 74 3b 0a 61 6e 64 20 74 68 65 20 54 45 4d  &gt;.and the TEM
56c0: 50 20 6b 65 79 77 6f 72 64 2c 20 75 6e 6c 65 73  P keyword, unles
56d0: 73 20 74 68 65 20 26 6c 74 3b 64 61 74 61 62 61  s the &lt;databa
56e0: 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 22  se-name&gt; is "
56f0: 74 65 6d 70 22 2e 20 49 66 20 6e 6f 0a 64 61 74  temp". If no.dat
5700: 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 73 70  abase name is sp
5710: 65 63 69 66 69 65 64 2c 20 61 6e 64 20 74 68 65  ecified, and the
5720: 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 20 69 73   TEMP keyword is
5730: 20 6e 6f 74 20 70 72 65 73 65 6e 74 2c 0a 74 68   not present,.th
5740: 65 20 74 61 62 6c 65 20 69 73 20 63 72 65 61 74  e table is creat
5750: 65 64 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64  ed in the main d
5760: 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70  atabase.</p>..<p
5770: 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 5b 63  >The optional [c
5780: 6f 6e 66 6c 69 63 74 20 63 6c 61 75 73 65 5d 20  onflict clause] 
5790: 66 6f 6c 6c 6f 77 69 6e 67 20 65 61 63 68 20 63  following each c
57a0: 6f 6e 73 74 72 61 69 6e 74 0a 61 6c 6c 6f 77 73  onstraint.allows
57b0: 20 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69   the specificati
57c0: 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61  on of an alterna
57d0: 74 69 76 65 20 64 65 66 61 75 6c 74 0a 63 6f 6e  tive default.con
57e0: 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74  straint conflict
57f0: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f   resolution algo
5800: 72 69 74 68 6d 20 66 6f 72 20 74 68 61 74 20 63  rithm for that c
5810: 6f 6e 73 74 72 61 69 6e 74 2e 0a 54 68 65 20 64  onstraint..The d
5820: 65 66 61 75 6c 74 20 69 73 20 61 62 6f 72 74 20  efault is abort 
5830: 41 42 4f 52 54 2e 20 20 44 69 66 66 65 72 65 6e  ABORT.  Differen
5840: 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69  t constraints wi
5850: 74 68 69 6e 20 74 68 65 20 73 61 6d 65 0a 74 61  thin the same.ta
5860: 62 6c 65 20 6d 61 79 20 68 61 76 65 20 64 69 66  ble may have dif
5870: 66 65 72 65 6e 74 20 64 65 66 61 75 6c 74 20 63  ferent default c
5880: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
5890: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 73 2e 0a 49  on algorithms..I
58a0: 66 20 61 6e 20 5b 49 4e 53 45 52 54 5d 20 6f 72  f an [INSERT] or
58b0: 20 5b 55 50 44 41 54 45 5d 20 73 74 61 74 65 6d   [UPDATE] statem
58c0: 65 6e 74 20 73 70 65 63 69 66 69 65 73 20 61 20  ent specifies a 
58d0: 64 69 66 66 65 72 65 6e 74 20 63 6f 6e 66 6c 69  different confli
58e0: 63 74 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct.resolution al
58f0: 67 6f 72 69 74 68 6d 2c 20 74 68 65 6e 20 74 68  gorithm, then th
5900: 61 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  at algorithm is 
5910: 75 73 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66  used in place of
5920: 20 74 68 65 0a 64 65 66 61 75 6c 74 20 61 6c 67   the.default alg
5930: 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64  orithm specified
5940: 20 69 6e 20 74 68 65 20 43 52 45 41 54 45 20 54   in the CREATE T
5950: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0a  ABLE statement..
5960: 53 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20  See the section 
5970: 74 69 74 6c 65 64 0a 5b 4f 4e 20 43 4f 4e 46 4c  titled.[ON CONFL
5980: 49 43 54 5d 20 66 6f 72 20 61 64 64 69 74 69 6f  ICT] for additio
5990: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  nal information.
59a0: 3c 2f 70 3e 0a 0a 3c 70 3e 43 48 45 43 4b 20 63  </p>..<p>CHECK c
59b0: 6f 6e 73 74 72 61 69 6e 74 73 20 61 72 65 20 73  onstraints are s
59c0: 75 70 70 6f 72 74 65 64 20 61 73 20 6f 66 20 5b  upported as of [
59d0: 76 65 72 73 69 6f 6e 20 33 2e 33 2e 30 5d 2e 20  version 3.3.0]. 
59e0: 20 50 72 69 6f 72 0a 74 6f 20 76 65 72 73 69 6f   Prior.to versio
59f0: 6e 20 33 2e 33 2e 30 2c 20 43 48 45 43 4b 20 63  n 3.3.0, CHECK c
5a00: 6f 6e 73 74 72 61 69 6e 74 73 20 77 65 72 65 20  onstraints were 
5a10: 70 61 72 73 65 64 20 62 75 74 20 6e 6f 74 20 65  parsed but not e
5a20: 6e 66 6f 72 63 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  nforced.</p>..<p
5a30: 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63  >The number of c
5a40: 6f 6c 75 6d 6e 73 20 69 6e 20 61 20 74 61 62 6c  olumns in a tabl
5a50: 65 20 69 73 20 6c 69 6d 69 74 65 64 20 62 79 20  e is limited by 
5a60: 74 68 65 0a 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  the.[SQLITE_MAX_
5a70: 43 4f 4c 55 4d 4e 5d 20 63 6f 6d 70 69 6c 65 2d  COLUMN] compile-
5a80: 74 69 6d 65 20 70 61 72 61 6d 65 74 65 72 2e 0a  time parameter..
5a90: 41 20 73 69 6e 67 6c 65 20 72 6f 77 20 6f 66 20  A single row of 
5aa0: 61 20 74 61 62 6c 65 20 63 61 6e 6e 6f 74 20 73  a table cannot s
5ab0: 74 6f 72 65 20 6d 6f 72 65 20 74 68 61 6e 0a 5b  tore more than.[
5ac0: 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e 47 54  SQLITE_MAX_LENGT
5ad0: 48 5d 20 62 79 74 65 73 20 6f 66 20 64 61 74 61  H] bytes of data
5ae0: 2e 0a 42 6f 74 68 20 6f 66 20 74 68 65 73 65 20  ..Both of these 
5af0: 6c 69 6d 69 74 73 20 63 61 6e 20 62 65 20 6c 6f  limits can be lo
5b00: 77 65 72 65 64 20 61 74 20 72 75 6e 74 69 6d 65  wered at runtime
5b10: 20 75 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c 69   using the.[sqli
5b20: 74 65 33 5f 6c 69 6d 69 74 28 29 5d 20 43 2f 43  te3_limit()] C/C
5b30: 2b 2b 20 69 6e 74 65 72 66 61 63 65 2e 3c 2f 70  ++ interface.</p
5b40: 3e 0a 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41 54  >...<p>The CREAT
5b50: 45 20 54 41 42 4c 45 20 41 53 20 66 6f 72 6d 20  E TABLE AS form 
5b60: 64 65 66 69 6e 65 73 20 74 68 65 20 74 61 62 6c  defines the tabl
5b70: 65 20 74 6f 20 62 65 0a 74 68 65 20 72 65 73 75  e to be.the resu
5b80: 6c 74 20 73 65 74 20 6f 66 20 61 20 71 75 65 72  lt set of a quer
5b90: 79 2e 20 20 54 68 65 20 6e 61 6d 65 73 20 6f 66  y.  The names of
5ba0: 20 74 68 65 20 74 61 62 6c 65 20 63 6f 6c 75 6d   the table colum
5bb0: 6e 73 20 61 72 65 0a 74 68 65 20 6e 61 6d 65 73  ns are.the names
5bc0: 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20   of the columns 
5bd0: 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f  in the result.</
5be0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 74 65 78 74 0a  p>..<p>The text.
5bf0: 6f 66 20 65 61 63 68 20 43 52 45 41 54 45 20 54  of each CREATE T
5c00: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69  ABLE statement i
5c10: 73 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20  s stored in the 
5c20: 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65 72  <b>sqlite_master
5c30: 3c 2f 62 3e 0a 74 61 62 6c 65 2e 20 20 45 76 65  </b>.table.  Eve
5c40: 72 79 20 74 69 6d 65 20 74 68 65 20 64 61 74 61  ry time the data
5c50: 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64 2c 20  base is opened, 
5c60: 61 6c 6c 20 43 52 45 41 54 45 20 54 41 42 4c 45  all CREATE TABLE
5c70: 20 73 74 61 74 65 6d 65 6e 74 73 0a 61 72 65 20   statements.are 
5c80: 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20 3c 62  read from the <b
5c90: 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f  >sqlite_master</
5ca0: 62 3e 20 74 61 62 6c 65 20 61 6e 64 20 75 73 65  b> table and use
5cb0: 64 20 74 6f 20 72 65 67 65 6e 65 72 61 74 65 0a  d to regenerate.
5cc0: 53 51 4c 69 74 65 27 73 20 69 6e 74 65 72 6e 61  SQLite's interna
5cd0: 6c 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  l representation
5ce0: 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 6c 61   of the table la
5cf0: 79 6f 75 74 2e 0a 49 66 20 74 68 65 20 6f 72 69  yout..If the ori
5d00: 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64 20 77 61  ginal command wa
5d10: 73 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45  s a CREATE TABLE
5d20: 20 41 53 20 74 68 65 6e 20 74 68 65 6e 20 61 6e   AS then then an
5d30: 20 65 71 75 69 76 61 6c 65 6e 74 0a 43 52 45 41   equivalent.CREA
5d40: 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  TE TABLE stateme
5d50: 6e 74 20 69 73 20 73 79 6e 74 68 65 73 69 7a 65  nt is synthesize
5d60: 64 20 61 6e 64 20 73 74 6f 72 65 20 69 6e 20 3c  d and store in <
5d70: 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c  b>sqlite_master<
5d80: 2f 62 3e 0a 69 6e 20 70 6c 61 63 65 20 6f 66 20  /b>.in place of 
5d90: 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d  the original com
5da0: 6d 61 6e 64 2e 0a 54 68 65 20 74 65 78 74 20 6f  mand..The text o
5db0: 66 20 43 52 45 41 54 45 20 54 45 4d 50 4f 52 41  f CREATE TEMPORA
5dc0: 52 59 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  RY TABLE stateme
5dd0: 6e 74 73 20 61 72 65 20 73 74 6f 72 65 64 20 69  nts are stored i
5de0: 6e 20 74 68 65 0a 3c 62 3e 73 71 6c 69 74 65 5f  n the.<b>sqlite_
5df0: 74 65 6d 70 5f 6d 61 73 74 65 72 3c 2f 62 3e 20  temp_master</b> 
5e00: 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  table..</p>..<p>
5e10: 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20  If the optional 
5e20: 49 46 20 4e 4f 54 20 45 58 49 53 54 53 20 63 6c  IF NOT EXISTS cl
5e30: 61 75 73 65 20 69 73 20 70 72 65 73 65 6e 74 20  ause is present 
5e40: 61 6e 64 20 61 6e 6f 74 68 65 72 20 74 61 62 6c  and another tabl
5e50: 65 0a 77 69 74 68 20 74 68 65 20 73 61 6d 65 20  e.with the same 
5e60: 6e 61 6d 65 20 61 6c 65 61 64 79 20 65 78 69 73  name aleady exis
5e70: 74 73 2c 20 74 68 65 6e 20 74 68 69 73 20 63 6f  ts, then this co
5e80: 6d 6d 61 6e 64 20 62 65 63 6f 6d 65 73 20 61 20  mmand becomes a 
5e90: 6e 6f 2d 6f 70 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  no-op.</p>..<p>T
5ea0: 61 62 6c 65 73 20 61 72 65 20 72 65 6d 6f 76 65  ables are remove
5eb0: 64 20 75 73 69 6e 67 20 74 68 65 20 3c 61 20 68  d using the <a h
5ec0: 72 65 66 3d 22 6c 61 6e 67 5f 64 72 6f 70 74 61  ref="lang_dropta
5ed0: 62 6c 65 2e 68 74 6d 6c 22 3e 44 52 4f 50 20 54  ble.html">DROP T
5ee0: 41 42 4c 45 3c 2f 61 3e 20 0a 73 74 61 74 65 6d  ABLE</a> .statem
5ef0: 65 6e 74 2e 20 20 3c 2f 70 3e 0a 0a 3c 74 63 6c  ent.  </p>..<tcl
5f00: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
5f10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5f20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5f30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5f40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5f50: 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45  .Section {CREATE
5f60: 20 54 52 49 47 47 45 52 7d 20 63 72 65 61 74 65   TRIGGER} create
5f70: 74 72 69 67 67 65 72 20 7b 7b 43 52 45 41 54 45  trigger {{CREATE
5f80: 20 54 52 49 47 47 45 52 7d 7d 0a 0a 53 79 6e 74   TRIGGER}}..Synt
5f90: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
5fa0: 74 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d  t} {.CREATE [TEM
5fb0: 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20 54  P | TEMPORARY] T
5fc0: 52 49 47 47 45 52 20 5b 49 46 20 4e 4f 54 20 45  RIGGER [IF NOT E
5fd0: 58 49 53 54 53 5d 20 3c 74 72 69 67 67 65 72 2d  XISTS] <trigger-
5fe0: 6e 61 6d 65 3e 20 5b 20 42 45 46 4f 52 45 20 7c  name> [ BEFORE |
5ff0: 20 41 46 54 45 52 20 5d 0a 3c 64 61 74 61 62 61   AFTER ].<databa
6000: 73 65 2d 65 76 65 6e 74 3e 20 4f 4e 20 5b 3c 64  se-event> ON [<d
6010: 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d  atabase-name> .]
6020: 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 3c 74   <table-name>.<t
6030: 72 69 67 67 65 72 2d 61 63 74 69 6f 6e 3e 0a 7d  rigger-action>.}
6040: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
6050: 61 74 65 6d 65 6e 74 7d 20 7b 0a 43 52 45 41 54  atement} {.CREAT
6060: 45 20 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52  E [TEMP | TEMPOR
6070: 41 52 59 5d 20 54 52 49 47 47 45 52 20 5b 49 46  ARY] TRIGGER [IF
6080: 20 4e 4f 54 20 45 58 49 53 54 53 5d 20 3c 74 72   NOT EXISTS] <tr
6090: 69 67 67 65 72 2d 6e 61 6d 65 3e 20 49 4e 53 54  igger-name> INST
60a0: 45 41 44 20 4f 46 0a 3c 64 61 74 61 62 61 73 65  EAD OF.<database
60b0: 2d 65 76 65 6e 74 3e 20 4f 4e 20 5b 3c 64 61 74  -event> ON [<dat
60c0: 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c  abase-name> .] <
60d0: 76 69 65 77 2d 6e 61 6d 65 3e 0a 3c 74 72 69 67  view-name>.<trig
60e0: 67 65 72 2d 61 63 74 69 6f 6e 3e 0a 7d 0a 0a 53  ger-action>.}..S
60f0: 79 6e 74 61 78 20 7b 64 61 74 61 62 61 73 65 2d  yntax {database-
6100: 65 76 65 6e 74 7d 20 7b 0a 44 45 4c 45 54 45 20  event} {.DELETE 
6110: 7c 20 0a 49 4e 53 45 52 54 20 7c 20 0a 55 50 44  | .INSERT | .UPD
6120: 41 54 45 20 7c 20 0a 55 50 44 41 54 45 20 4f 46  ATE | .UPDATE OF
6130: 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 0a 7d   <column-list>.}
6140: 0a 0a 53 79 6e 74 61 78 20 7b 74 72 69 67 67 65  ..Syntax {trigge
6150: 72 2d 61 63 74 69 6f 6e 7d 20 7b 0a 5b 20 46 4f  r-action} {.[ FO
6160: 52 20 45 41 43 48 20 52 4f 57 20 5d 20 5b 20 57  R EACH ROW ] [ W
6170: 48 45 4e 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e  HEN <expression>
6180: 20 5d 20 0a 42 45 47 49 4e 20 0a 20 20 3c 74 72   ] .BEGIN .  <tr
6190: 69 67 67 65 72 2d 73 74 65 70 3e 20 3b 20 5b 20  igger-step> ; [ 
61a0: 3c 74 72 69 67 67 65 72 2d 73 74 65 70 3e 20 3b  <trigger-step> ;
61b0: 20 5d 2a 0a 45 4e 44 0a 7d 0a 0a 53 79 6e 74 61   ]*.END.}..Synta
61c0: 78 20 7b 74 72 69 67 67 65 72 2d 73 74 65 70 7d  x {trigger-step}
61d0: 20 7b 0a 3c 75 70 64 61 74 65 2d 73 74 61 74 65   {.<update-state
61e0: 6d 65 6e 74 3e 20 7c 20 3c 69 6e 73 65 72 74 2d  ment> | <insert-
61f0: 73 74 61 74 65 6d 65 6e 74 3e 20 7c 20 0a 3c 64  statement> | .<d
6200: 65 6c 65 74 65 2d 73 74 61 74 65 6d 65 6e 74 3e  elete-statement>
6210: 20 7c 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65   | <select-state
6220: 6d 65 6e 74 3e 20 0a 7d 0a 3c 2f 74 63 6c 3e 0a  ment> .}.</tcl>.
6230: 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20 54  .<p>The CREATE T
6240: 52 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74  RIGGER statement
6250: 20 69 73 20 75 73 65 64 20 74 6f 20 61 64 64 20   is used to add 
6260: 74 72 69 67 67 65 72 73 20 74 6f 20 74 68 65 20  triggers to the 
6270: 0a 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61  .database schema
6280: 2e 20 54 72 69 67 67 65 72 73 20 61 72 65 20 64  . Triggers are d
6290: 61 74 61 62 61 73 65 20 6f 70 65 72 61 74 69 6f  atabase operatio
62a0: 6e 73 20 28 74 68 65 20 3c 69 3e 74 72 69 67 67  ns (the <i>trigg
62b0: 65 72 2d 61 63 74 69 6f 6e 3c 2f 69 3e 29 20 0a  er-action</i>) .
62c0: 74 68 61 74 20 61 72 65 20 61 75 74 6f 6d 61 74  that are automat
62d0: 69 63 61 6c 6c 79 20 70 65 72 66 6f 72 6d 65 64  ically performed
62e0: 20 77 68 65 6e 20 61 20 73 70 65 63 69 66 69 65   when a specifie
62f0: 64 20 64 61 74 61 62 61 73 65 20 65 76 65 6e 74  d database event
6300: 20 28 74 68 65 0a 3c 69 3e 64 61 74 61 62 61 73   (the.<i>databas
6310: 65 2d 65 76 65 6e 74 3c 2f 69 3e 29 20 6f 63 63  e-event</i>) occ
6320: 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a 3c 70 3e 41  urs.  </p>..<p>A
6330: 20 74 72 69 67 67 65 72 20 6d 61 79 20 62 65 20   trigger may be 
6340: 73 70 65 63 69 66 69 65 64 20 74 6f 20 66 69 72  specified to fir
6350: 65 20 77 68 65 6e 65 76 65 72 20 61 20 5b 44 45  e whenever a [DE
6360: 4c 45 54 45 5d 2c 20 5b 49 4e 53 45 52 54 5d 2c  LETE], [INSERT],
6370: 0a 6f 72 20 5b 55 50 44 41 54 45 5d 20 6f 66 20  .or [UPDATE] of 
6380: 61 0a 70 61 72 74 69 63 75 6c 61 72 20 64 61 74  a.particular dat
6390: 61 62 61 73 65 20 74 61 62 6c 65 20 6f 63 63 75  abase table occu
63a0: 72 73 2c 20 6f 72 20 77 68 65 6e 65 76 65 72 20  rs, or whenever 
63b0: 61 6e 20 5b 55 50 44 41 54 45 5d 20 6f 66 20 6f  an [UPDATE] of o
63c0: 6e 65 20 6f 72 20 6d 6f 72 65 0a 73 70 65 63 69  ne or more.speci
63d0: 66 69 65 64 20 63 6f 6c 75 6d 6e 73 20 6f 66 20  fied columns of 
63e0: 61 20 74 61 62 6c 65 20 61 72 65 20 75 70 64 61  a table are upda
63f0: 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 74 20  ted.</p>..<p>At 
6400: 74 68 69 73 20 74 69 6d 65 20 53 51 4c 69 74 65  this time SQLite
6410: 20 73 75 70 70 6f 72 74 73 20 6f 6e 6c 79 20 46   supports only F
6420: 4f 52 20 45 41 43 48 20 52 4f 57 20 74 72 69 67  OR EACH ROW trig
6430: 67 65 72 73 2c 20 6e 6f 74 20 46 4f 52 20 45 41  gers, not FOR EA
6440: 43 48 0a 53 54 41 54 45 4d 45 4e 54 20 74 72 69  CH.STATEMENT tri
6450: 67 67 65 72 73 2e 20 48 65 6e 63 65 20 65 78 70  ggers. Hence exp
6460: 6c 69 63 69 74 6c 79 20 73 70 65 63 69 66 79 69  licitly specifyi
6470: 6e 67 20 46 4f 52 20 45 41 43 48 20 52 4f 57 20  ng FOR EACH ROW 
6480: 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20 20 46 4f  is optional.  FO
6490: 52 0a 45 41 43 48 20 52 4f 57 20 69 6d 70 6c 69  R.EACH ROW impli
64a0: 65 73 20 74 68 61 74 20 74 68 65 20 53 51 4c 20  es that the SQL 
64b0: 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65 63 69  statements speci
64c0: 66 69 65 64 20 61 73 20 3c 69 3e 74 72 69 67 67  fied as <i>trigg
64d0: 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 0a 6d 61  er-steps</i> .ma
64e0: 79 20 62 65 20 65 78 65 63 75 74 65 64 20 28 64  y be executed (d
64f0: 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20  epending on the 
6500: 57 48 45 4e 20 63 6c 61 75 73 65 29 20 66 6f 72  WHEN clause) for
6510: 20 65 61 63 68 20 64 61 74 61 62 61 73 65 20 72   each database r
6520: 6f 77 20 62 65 69 6e 67 0a 69 6e 73 65 72 74 65  ow being.inserte
6530: 64 2c 20 75 70 64 61 74 65 64 20 6f 72 20 64 65  d, updated or de
6540: 6c 65 74 65 64 20 62 79 20 74 68 65 20 73 74 61  leted by the sta
6550: 74 65 6d 65 6e 74 20 63 61 75 73 69 6e 67 20 74  tement causing t
6560: 68 65 20 74 72 69 67 67 65 72 20 74 6f 20 66 69  he trigger to fi
6570: 72 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 6f 74 68  re.</p>..<p>Both
6580: 20 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73 65   the WHEN clause
6590: 20 61 6e 64 20 74 68 65 20 3c 69 3e 74 72 69 67   and the <i>trig
65a0: 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 6d 61  ger-steps</i> ma
65b0: 79 20 61 63 63 65 73 73 20 65 6c 65 6d 65 6e 74  y access element
65c0: 73 20 6f 66 20 0a 74 68 65 20 72 6f 77 20 62 65  s of .the row be
65d0: 69 6e 67 20 69 6e 73 65 72 74 65 64 2c 20 64 65  ing inserted, de
65e0: 6c 65 74 65 64 20 6f 72 20 75 70 64 61 74 65 64  leted or updated
65f0: 20 75 73 69 6e 67 20 72 65 66 65 72 65 6e 63 65   using reference
6600: 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 0a 22  s of the form ."
6610: 4e 45 57 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61  NEW.<i>column-na
6620: 6d 65 3c 2f 69 3e 22 20 61 6e 64 20 22 4f 4c 44  me</i>" and "OLD
6630: 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c  .<i>column-name<
6640: 2f 69 3e 22 2c 20 77 68 65 72 65 0a 3c 69 3e 63  /i>", where.<i>c
6650: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 20 69  olumn-name</i> i
6660: 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20  s the name of a 
6670: 63 6f 6c 75 6d 6e 20 66 72 6f 6d 20 74 68 65 20  column from the 
6680: 74 61 62 6c 65 20 74 68 61 74 20 74 68 65 20 74  table that the t
6690: 72 69 67 67 65 72 0a 69 73 20 61 73 73 6f 63 69  rigger.is associ
66a0: 61 74 65 64 20 77 69 74 68 2e 20 4f 4c 44 20 61  ated with. OLD a
66b0: 6e 64 20 4e 45 57 20 72 65 66 65 72 65 6e 63 65  nd NEW reference
66c0: 73 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73  s may only be us
66d0: 65 64 20 69 6e 20 74 72 69 67 67 65 72 73 20 6f  ed in triggers o
66e0: 6e 0a 3c 69 3e 74 72 69 67 67 65 72 2d 65 76 65  n.<i>trigger-eve
66f0: 6e 74 3c 2f 69 3e 73 20 66 6f 72 20 77 68 69 63  nt</i>s for whic
6700: 68 20 74 68 65 79 20 61 72 65 20 72 65 6c 65 76  h they are relev
6710: 61 6e 74 2c 20 61 73 20 66 6f 6c 6c 6f 77 73 3a  ant, as follows:
6720: 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72  </p>..<table bor
6730: 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e  der=0 cellpaddin
6740: 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76  g=10>.<tr>.<td v
6750: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
6760: 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d  n="right" width=
6770: 31 32 30 3e 3c 69 3e 49 4e 53 45 52 54 3c 2f 69  120><i>INSERT</i
6780: 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  ></td>.<td valig
6790: 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 72 65 66 65  n="top">NEW refe
67a0: 72 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64  rences are valid
67b0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e  </td>.</tr>.<tr>
67c0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
67d0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  " align="right" 
67e0: 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 55 50 44  width=120><i>UPD
67f0: 41 54 45 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64  ATE</i></td>.<td
6800: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4e 45   valign="top">NE
6810: 57 20 61 6e 64 20 4f 4c 44 20 72 65 66 65 72 65  W and OLD refere
6820: 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64 3c 2f  nces are valid</
6830: 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c  td>.</tr>.<tr>.<
6840: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
6850: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69  align="right" wi
6860: 64 74 68 3d 31 32 30 3e 3c 69 3e 44 45 4c 45 54  dth=120><i>DELET
6870: 45 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76  E</i></td>.<td v
6880: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4f 4c 44 20  align="top">OLD 
6890: 72 65 66 65 72 65 6e 63 65 73 20 61 72 65 20 76  references are v
68a0: 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  alid</td>.</tr>.
68b0: 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 70 3e 0a 0a 3c  </table>.</p>..<
68c0: 70 3e 49 66 20 61 20 57 48 45 4e 20 63 6c 61 75  p>If a WHEN clau
68d0: 73 65 20 69 73 20 73 75 70 70 6c 69 65 64 2c 20  se is supplied, 
68e0: 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
68f0: 74 73 20 73 70 65 63 69 66 69 65 64 20 61 73 20  ts specified as 
6900: 0a 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70  .<i>trigger-step
6910: 73 3c 2f 69 3e 20 61 72 65 20 6f 6e 6c 79 20 65  s</i> are only e
6920: 78 65 63 75 74 65 64 20 66 6f 72 20 72 6f 77 73  xecuted for rows
6930: 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 20 57   for which the W
6940: 48 45 4e 0a 63 6c 61 75 73 65 20 69 73 20 74 72  HEN.clause is tr
6950: 75 65 2e 20 49 66 20 6e 6f 20 57 48 45 4e 20 63  ue. If no WHEN c
6960: 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c 69 65  lause is supplie
6970: 64 2c 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  d, the SQL state
6980: 6d 65 6e 74 73 0a 61 72 65 20 65 78 65 63 75 74  ments.are execut
6990: 65 64 20 66 6f 72 20 61 6c 6c 20 72 6f 77 73 2e  ed for all rows.
69a0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 70 65  </p>..<p>The spe
69b0: 63 69 66 69 65 64 20 3c 69 3e 74 72 69 67 67 65  cified <i>trigge
69c0: 72 2d 74 69 6d 65 3c 2f 69 3e 20 64 65 74 65 72  r-time</i> deter
69d0: 6d 69 6e 65 73 20 77 68 65 6e 20 74 68 65 20 3c  mines when the <
69e0: 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73 3c  i>trigger-steps<
69f0: 2f 69 3e 0a 77 69 6c 6c 20 62 65 20 65 78 65 63  /i>.will be exec
6a00: 75 74 65 64 20 72 65 6c 61 74 69 76 65 20 74 6f  uted relative to
6a10: 20 74 68 65 20 69 6e 73 65 72 74 69 6f 6e 2c 20   the insertion, 
6a20: 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 6f 72 20  modification or 
6a30: 72 65 6d 6f 76 61 6c 20 6f 66 20 74 68 65 0a 61  removal of the.a
6a40: 73 73 6f 63 69 61 74 65 64 20 72 6f 77 2e 3c 2f  ssociated row.</
6a50: 70 3e 0a 0a 3c 70 3e 41 6e 20 5b 4f 4e 20 43 4f  p>..<p>An [ON CO
6a60: 4e 46 4c 49 43 54 5d 20 63 6c 61 75 73 65 20 6d  NFLICT] clause m
6a70: 61 79 20 62 65 20 73 70 65 63 69 66 69 65 64 20  ay be specified 
6a80: 61 73 20 70 61 72 74 20 6f 66 20 61 6e 20 5b 55  as part of an [U
6a90: 50 44 41 54 45 5d 20 6f 72 20 5b 49 4e 53 45 52  PDATE] or [INSER
6aa0: 54 5d 0a 3c 69 3e 74 72 69 67 67 65 72 2d 73 74  T].<i>trigger-st
6ab0: 65 70 3c 2f 69 3e 2e 20 48 6f 77 65 76 65 72 20  ep</i>. However 
6ac0: 69 66 20 61 6e 20 5b 4f 4e 20 43 4f 4e 46 4c 49  if an [ON CONFLI
6ad0: 43 54 5d 20 63 6c 61 75 73 65 20 69 73 20 73 70  CT] clause is sp
6ae0: 65 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20  ecified as part 
6af0: 6f 66 20 0a 74 68 65 20 73 74 61 74 65 6d 65 6e  of .the statemen
6b00: 74 20 63 61 75 73 69 6e 67 20 74 68 65 20 74 72  t causing the tr
6b10: 69 67 67 65 72 20 74 6f 20 66 69 72 65 2c 20 74  igger to fire, t
6b20: 68 65 6e 20 74 68 69 73 20 63 6f 6e 66 6c 69 63  hen this conflic
6b30: 74 20 68 61 6e 64 6c 69 6e 67 0a 70 6f 6c 69 63  t handling.polic
6b40: 79 20 69 73 20 75 73 65 64 20 69 6e 73 74 65 61  y is used instea
6b50: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67  d.</p>..<p>Trigg
6b60: 65 72 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69  ers are automati
6b70: 63 61 6c 6c 79 20 64 72 6f 70 70 65 64 20 77 68  cally dropped wh
6b80: 65 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61  en the table tha
6b90: 74 20 74 68 65 79 20 61 72 65 20 0a 61 73 73 6f  t they are .asso
6ba0: 63 69 61 74 65 64 20 77 69 74 68 20 69 73 20 64  ciated with is d
6bb0: 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63  ropped.</p>..<tc
6bc0: 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 69 6e  l>hd_fragment in
6bd0: 73 74 65 61 64 5f 6f 66 5f 74 72 69 67 67 65 72  stead_of_trigger
6be0: 20 7b 49 4e 53 54 45 41 44 20 4f 46 7d 20 7b 49   {INSTEAD OF} {I
6bf0: 4e 53 54 45 41 44 20 4f 46 20 74 72 69 67 67 65  NSTEAD OF trigge
6c00: 72 7d 3c 2f 74 63 6c 3e 0a 3c 70 3e 54 72 69 67  r}</tcl>.<p>Trig
6c10: 67 65 72 73 20 6d 61 79 20 62 65 20 63 72 65 61  gers may be crea
6c20: 74 65 64 20 6f 6e 20 5b 76 69 65 77 73 5d 2c 20  ted on [views], 
6c30: 61 73 20 77 65 6c 6c 20 61 73 20 6f 72 64 69 6e  as well as ordin
6c40: 61 72 79 20 74 61 62 6c 65 73 2c 20 62 79 0a 73  ary tables, by.s
6c50: 70 65 63 69 66 79 69 6e 67 20 49 4e 53 54 45 41  pecifying INSTEA
6c60: 44 20 4f 46 20 69 6e 20 74 68 65 20 43 52 45 41  D OF in the CREA
6c70: 54 45 20 54 52 49 47 47 45 52 20 73 74 61 74 65  TE TRIGGER state
6c80: 6d 65 6e 74 2e 20 0a 49 66 20 6f 6e 65 20 6f 72  ment. .If one or
6c90: 20 6d 6f 72 65 20 4f 4e 20 49 4e 53 45 52 54 2c   more ON INSERT,
6ca0: 20 4f 4e 20 44 45 4c 45 54 45 0a 6f 72 20 4f 4e   ON DELETE.or ON
6cb0: 20 55 50 44 41 54 45 20 74 72 69 67 67 65 72 73   UPDATE triggers
6cc0: 20 61 72 65 20 64 65 66 69 6e 65 64 20 6f 6e 20   are defined on 
6cd0: 61 20 76 69 65 77 2c 20 74 68 65 6e 20 69 74 20  a view, then it 
6ce0: 69 73 20 6e 6f 74 20 61 6e 0a 65 72 72 6f 72 20  is not an.error 
6cf0: 74 6f 20 65 78 65 63 75 74 65 20 61 6e 20 49 4e  to execute an IN
6d00: 53 45 52 54 2c 20 44 45 4c 45 54 45 20 6f 72 20  SERT, DELETE or 
6d10: 55 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74  UPDATE statement
6d20: 20 6f 6e 20 74 68 65 20 76 69 65 77 2c 20 0a 72   on the view, .r
6d30: 65 73 70 65 63 74 69 76 65 6c 79 2e 20 54 68 65  espectively. The
6d40: 72 65 61 66 74 65 72 2c 0a 65 78 65 63 75 74 69  reafter,.executi
6d50: 6e 67 20 61 6e 20 49 4e 53 45 52 54 2c 20 44 45  ng an INSERT, DE
6d60: 4c 45 54 45 20 6f 72 20 55 50 44 41 54 45 20 6f  LETE or UPDATE o
6d70: 6e 20 74 68 65 20 76 69 65 77 20 63 61 75 73 65  n the view cause
6d80: 73 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  s the associated
6d90: 0a 74 72 69 67 67 65 72 73 20 74 6f 20 66 69 72  .triggers to fir
6da0: 65 2e 20 54 68 65 20 72 65 61 6c 20 74 61 62 6c  e. The real tabl
6db0: 65 73 20 75 6e 64 65 72 6c 79 69 6e 67 20 74 68  es underlying th
6dc0: 65 20 76 69 65 77 20 61 72 65 20 6e 6f 74 20 6d  e view are not m
6dd0: 6f 64 69 66 69 65 64 0a 28 65 78 63 65 70 74 20  odified.(except 
6de0: 70 6f 73 73 69 62 6c 79 20 65 78 70 6c 69 63 69  possibly explici
6df0: 74 6c 79 2c 20 62 79 20 61 20 74 72 69 67 67 65  tly, by a trigge
6e00: 72 20 70 72 6f 67 72 61 6d 29 2e 3c 2f 70 3e 0a  r program).</p>.
6e10: 0a 3c 70 3e 3c 62 3e 45 78 61 6d 70 6c 65 3a 3c  .<p><b>Example:<
6e20: 2f 62 3e 3c 2f 70 3e 0a 0a 3c 70 3e 41 73 73 75  /b></p>..<p>Assu
6e30: 6d 69 6e 67 20 74 68 61 74 20 63 75 73 74 6f 6d  ming that custom
6e40: 65 72 20 72 65 63 6f 72 64 73 20 61 72 65 20 73  er records are s
6e50: 74 6f 72 65 64 20 69 6e 20 74 68 65 20 22 63 75  tored in the "cu
6e60: 73 74 6f 6d 65 72 73 22 20 74 61 62 6c 65 2c 20  stomers" table, 
6e70: 61 6e 64 0a 74 68 61 74 20 6f 72 64 65 72 20 72  and.that order r
6e80: 65 63 6f 72 64 73 20 61 72 65 20 73 74 6f 72 65  ecords are store
6e90: 64 20 69 6e 20 74 68 65 20 22 6f 72 64 65 72 73  d in the "orders
6ea0: 22 20 74 61 62 6c 65 2c 20 74 68 65 20 66 6f 6c  " table, the fol
6eb0: 6c 6f 77 69 6e 67 20 74 72 69 67 67 65 72 0a 65  lowing trigger.e
6ec0: 6e 73 75 72 65 73 20 74 68 61 74 20 61 6c 6c 20  nsures that all 
6ed0: 61 73 73 6f 63 69 61 74 65 64 20 6f 72 64 65 72  associated order
6ee0: 73 20 61 72 65 20 72 65 64 69 72 65 63 74 65 64  s are redirected
6ef0: 20 77 68 65 6e 20 61 20 63 75 73 74 6f 6d 65 72   when a customer
6f00: 20 63 68 61 6e 67 65 73 0a 68 69 73 20 6f 72 20   changes.his or 
6f10: 68 65 72 20 61 64 64 72 65 73 73 3a 3c 2f 70 3e  her address:</p>
6f20: 0a 0a 3c 74 63 6c 3e 45 78 61 6d 70 6c 65 20 7b  ..<tcl>Example {
6f30: 0a 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20  .CREATE TRIGGER 
6f40: 75 70 64 61 74 65 5f 63 75 73 74 6f 6d 65 72 5f  update_customer_
6f50: 61 64 64 72 65 73 73 20 55 50 44 41 54 45 20 4f  address UPDATE O
6f60: 46 20 61 64 64 72 65 73 73 20 4f 4e 20 63 75 73  F address ON cus
6f70: 74 6f 6d 65 72 73 20 0a 20 20 42 45 47 49 4e 0a  tomers .  BEGIN.
6f80: 20 20 20 20 55 50 44 41 54 45 20 6f 72 64 65 72      UPDATE order
6f90: 73 20 53 45 54 20 61 64 64 72 65 73 73 20 3d 20  s SET address = 
6fa0: 6e 65 77 2e 61 64 64 72 65 73 73 20 57 48 45 52  new.address WHER
6fb0: 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d 65 20  E customer_name 
6fc0: 3d 20 6f 6c 64 2e 6e 61 6d 65 3b 0a 20 20 45 4e  = old.name;.  EN
6fd0: 44 3b 0a 7d 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 57  D;.}</tcl>..<p>W
6fe0: 69 74 68 20 74 68 69 73 20 74 72 69 67 67 65 72  ith this trigger
6ff0: 20 69 6e 73 74 61 6c 6c 65 64 2c 20 65 78 65 63   installed, exec
7000: 75 74 69 6e 67 20 74 68 65 20 73 74 61 74 65 6d  uting the statem
7010: 65 6e 74 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 45  ent:</p>..<tcl>E
7020: 78 61 6d 70 6c 65 20 7b 0a 55 50 44 41 54 45 20  xample {.UPDATE 
7030: 63 75 73 74 6f 6d 65 72 73 20 53 45 54 20 61 64  customers SET ad
7040: 64 72 65 73 73 20 3d 20 27 31 20 4d 61 69 6e 20  dress = '1 Main 
7050: 53 74 2e 27 20 57 48 45 52 45 20 6e 61 6d 65 20  St.' WHERE name 
7060: 3d 20 27 4a 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a  = 'Jack Jones';.
7070: 7d 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 63 61 75 73  }</tcl>..<p>caus
7080: 65 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  es the following
7090: 20 74 6f 20 62 65 20 61 75 74 6f 6d 61 74 69 63   to be automatic
70a0: 61 6c 6c 79 20 65 78 65 63 75 74 65 64 3a 3c 2f  ally executed:</
70b0: 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61 6d 70 6c 65  p>..<tcl>Example
70c0: 20 7b 0a 55 50 44 41 54 45 20 6f 72 64 65 72 73   {.UPDATE orders
70d0: 20 53 45 54 20 61 64 64 72 65 73 73 20 3d 20 27   SET address = '
70e0: 31 20 4d 61 69 6e 20 53 74 2e 27 20 57 48 45 52  1 Main St.' WHER
70f0: 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d 65 20  E customer_name 
7100: 3d 20 27 4a 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a  = 'Jack Jones';.
7110: 7d 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 4e 6f 74 65  }</tcl>..<p>Note
7120: 20 74 68 61 74 20 63 75 72 72 65 6e 74 6c 79 2c   that currently,
7130: 20 74 72 69 67 67 65 72 73 20 6d 61 79 20 62 65   triggers may be
7140: 68 61 76 65 20 6f 64 64 6c 79 20 77 68 65 6e 20  have oddly when 
7150: 63 72 65 61 74 65 64 20 6f 6e 20 74 61 62 6c 65  created on table
7160: 73 0a 20 20 77 69 74 68 20 5b 49 4e 54 45 47 45  s.  with [INTEGE
7170: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 20 66  R PRIMARY KEY] f
7180: 69 65 6c 64 73 2e 20 49 66 20 61 20 42 45 46 4f  ields. If a BEFO
7190: 52 45 20 74 72 69 67 67 65 72 20 70 72 6f 67 72  RE trigger progr
71a0: 61 6d 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20  am modifies the 
71b0: 0a 20 20 5b 49 4e 54 45 47 45 52 20 50 52 49 4d  .  [INTEGER PRIM
71c0: 41 52 59 20 4b 45 59 5d 20 66 69 65 6c 64 20 6f  ARY KEY] field o
71d0: 66 20 61 20 72 6f 77 20 74 68 61 74 20 77 69 6c  f a row that wil
71e0: 6c 20 62 65 20 73 75 62 73 65 71 75 65 6e 74 6c  l be subsequentl
71f0: 79 20 75 70 64 61 74 65 64 20 62 79 20 74 68 65  y updated by the
7200: 0a 20 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61  .  statement tha
7210: 74 20 63 61 75 73 65 73 20 74 68 65 20 74 72 69  t causes the tri
7220: 67 67 65 72 20 74 6f 20 66 69 72 65 2c 20 74 68  gger to fire, th
7230: 65 6e 20 74 68 65 20 75 70 64 61 74 65 20 6d 61  en the update ma
7240: 79 20 6e 6f 74 20 6f 63 63 75 72 2e 20 0a 20 20  y not occur. .  
7250: 54 68 65 20 77 6f 72 6b 61 72 6f 75 6e 64 20 69  The workaround i
7260: 73 20 74 6f 20 64 65 63 6c 61 72 65 20 74 68 65  s to declare the
7270: 20 74 61 62 6c 65 20 77 69 74 68 20 61 20 50 52   table with a PR
7280: 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e  IMARY KEY column
7290: 20 69 6e 73 74 65 61 64 0a 20 20 6f 66 20 61 6e   instead.  of an
72a0: 20 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52   [INTEGER PRIMAR
72b0: 59 20 4b 45 59 5d 20 63 6f 6c 75 6d 6e 2e 3c 2f  Y KEY] column.</
72c0: 70 3e 0a 0a 3c 70 3e 41 20 73 70 65 63 69 61 6c  p>..<p>A special
72d0: 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 52 41   SQL function RA
72e0: 49 53 45 28 29 20 6d 61 79 20 62 65 20 75 73 65  ISE() may be use
72f0: 64 20 77 69 74 68 69 6e 20 61 20 74 72 69 67 67  d within a trigg
7300: 65 72 2d 70 72 6f 67 72 61 6d 2c 0a 77 69 74 68  er-program,.with
7310: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73   the following s
7320: 79 6e 74 61 78 3c 2f 70 3e 20 0a 0a 3c 74 63 6c  yntax</p> ..<tcl
7330: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
7340: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7350: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7360: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7370: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7380: 23 0a 53 79 6e 74 61 78 20 7b 72 61 69 73 65 2d  #.Syntax {raise-
7390: 66 75 6e 63 74 69 6f 6e 7d 20 7b 0a 52 41 49 53  function} {.RAIS
73a0: 45 20 28 20 41 42 4f 52 54 2c 20 3c 65 72 72 6f  E ( ABORT, <erro
73b0: 72 2d 6d 65 73 73 61 67 65 3e 20 29 20 7c 20 0a  r-message> ) | .
73c0: 52 41 49 53 45 20 28 20 46 41 49 4c 2c 20 3c 65  RAISE ( FAIL, <e
73d0: 72 72 6f 72 2d 6d 65 73 73 61 67 65 3e 20 29 20  rror-message> ) 
73e0: 7c 20 0a 52 41 49 53 45 20 28 20 52 4f 4c 4c 42  | .RAISE ( ROLLB
73f0: 41 43 4b 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73  ACK, <error-mess
7400: 61 67 65 3e 20 29 20 7c 20 0a 52 41 49 53 45 20  age> ) | .RAISE 
7410: 28 20 49 47 4e 4f 52 45 20 29 0a 7d 0a 3c 2f 74  ( IGNORE ).}.</t
7420: 63 6c 3e 0a 0a 3c 70 3e 57 68 65 6e 20 6f 6e 65  cl>..<p>When one
7430: 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 74 68   of the first th
7440: 72 65 65 20 66 6f 72 6d 73 20 69 73 20 63 61 6c  ree forms is cal
7450: 6c 65 64 20 64 75 72 69 6e 67 20 74 72 69 67 67  led during trigg
7460: 65 72 2d 70 72 6f 67 72 61 6d 0a 65 78 65 63 75  er-program.execu
7470: 74 69 6f 6e 2c 20 74 68 65 20 73 70 65 63 69 66  tion, the specif
7480: 69 65 64 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54  ied [ON CONFLICT
7490: 5d 20 70 72 6f 63 65 73 73 69 6e 67 20 69 73 20  ] processing is 
74a0: 70 65 72 66 6f 72 6d 65 64 0a 28 65 69 74 68 65  performed.(eithe
74b0: 72 20 41 42 4f 52 54 2c 20 46 41 49 4c 20 6f 72  r ABORT, FAIL or
74c0: 20 52 4f 4c 4c 42 41 43 4b 29 20 61 6e 64 20 74   ROLLBACK) and t
74d0: 68 65 20 63 75 72 72 65 6e 74 20 71 75 65 72 79  he current query
74e0: 20 74 65 72 6d 69 6e 61 74 65 73 2e 0a 41 6e 20   terminates..An 
74f0: 65 72 72 6f 72 20 63 6f 64 65 20 6f 66 20 5b 53  error code of [S
7500: 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54  QLITE_CONSTRAINT
7510: 5d 20 69 73 20 72 65 74 75 72 6e 65 64 20 74 6f  ] is returned to
7520: 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
7530: 2c 0a 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65  ,.along with the
7540: 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f 72   specified error
7550: 20 6d 65 73 73 61 67 65 2e 3c 2f 70 3e 0a 0a 3c   message.</p>..<
7560: 70 3e 57 68 65 6e 20 52 41 49 53 45 28 49 47 4e  p>When RAISE(IGN
7570: 4f 52 45 29 20 69 73 20 63 61 6c 6c 65 64 2c 20  ORE) is called, 
7580: 74 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66  the remainder of
7590: 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 72 69   the current tri
75a0: 67 67 65 72 20 70 72 6f 67 72 61 6d 2c 0a 74 68  gger program,.th
75b0: 65 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74  e statement that
75c0: 20 63 61 75 73 65 64 20 74 68 65 20 74 72 69 67   caused the trig
75d0: 67 65 72 20 70 72 6f 67 72 61 6d 20 74 6f 20 65  ger program to e
75e0: 78 65 63 75 74 65 20 61 6e 64 20 61 6e 79 20 73  xecute and any s
75f0: 75 62 73 65 71 75 65 6e 74 0a 74 72 69 67 67 65  ubsequent.trigge
7600: 72 20 70 72 6f 67 72 61 6d 73 20 74 68 61 74 20  r programs that 
7610: 77 6f 75 6c 64 20 6f 66 20 62 65 65 6e 20 65 78  would of been ex
7620: 65 63 75 74 65 64 20 61 72 65 20 61 62 61 6e 64  ecuted are aband
7630: 6f 6e 65 64 2e 20 4e 6f 20 64 61 74 61 62 61 73  oned. No databas
7640: 65 0a 63 68 61 6e 67 65 73 20 61 72 65 20 72 6f  e.changes are ro
7650: 6c 6c 65 64 20 62 61 63 6b 2e 20 20 49 66 20 74  lled back.  If t
7660: 68 65 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61  he statement tha
7670: 74 20 63 61 75 73 65 64 20 74 68 65 20 74 72 69  t caused the tri
7680: 67 67 65 72 20 70 72 6f 67 72 61 6d 0a 74 6f 20  gger program.to 
7690: 65 78 65 63 75 74 65 20 69 73 20 69 74 73 65 6c  execute is itsel
76a0: 66 20 70 61 72 74 20 6f 66 20 61 20 74 72 69 67  f part of a trig
76b0: 67 65 72 20 70 72 6f 67 72 61 6d 2c 20 74 68 65  ger program, the
76c0: 6e 20 74 68 61 74 20 74 72 69 67 67 65 72 20 70  n that trigger p
76d0: 72 6f 67 72 61 6d 0a 72 65 73 75 6d 65 73 20 65  rogram.resumes e
76e0: 78 65 63 75 74 69 6f 6e 20 61 74 20 74 68 65 20  xecution at the 
76f0: 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65  beginning of the
7700: 20 6e 65 78 74 20 73 74 65 70 2e 0a 3c 2f 70 3e   next step..</p>
7710: 0a 0a 3c 70 3e 54 72 69 67 67 65 72 73 20 61 72  ..<p>Triggers ar
7720: 65 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20  e removed using 
7730: 74 68 65 20 5b 44 52 4f 50 20 54 52 49 47 47 45  the [DROP TRIGGE
7740: 52 5d 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70  R] statement.</p
7750: 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  >...<tcl>.######
7760: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7770: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7780: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7790: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
77a0: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
77b0: 6e 20 7b 43 52 45 41 54 45 20 56 49 45 57 7d 20  n {CREATE VIEW} 
77c0: 7b 63 72 65 61 74 65 76 69 65 77 7d 20 7b 7b 43  {createview} {{C
77d0: 52 45 41 54 45 20 56 49 45 57 7d 20 76 69 65 77  REATE VIEW} view
77e0: 20 76 69 65 77 73 7d 0a 0a 53 79 6e 74 61 78 20   views}..Syntax 
77f0: 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a  {sql-command} {.
7800: 43 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54  CREATE [TEMP | T
7810: 45 4d 50 4f 52 41 52 59 5d 20 56 49 45 57 20 5b  EMPORARY] VIEW [
7820: 49 46 20 4e 4f 54 20 45 58 49 53 54 53 5d 20 5b  IF NOT EXISTS] [
7830: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 2e  <database-name>.
7840: 5d 20 3c 76 69 65 77 2d 6e 61 6d 65 3e 20 41 53  ] <view-name> AS
7850: 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65   <select-stateme
7860: 6e 74 3e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  nt>.}.</tcl>..<p
7870: 3e 54 68 65 20 43 52 45 41 54 45 20 56 49 45 57  >The CREATE VIEW
7880: 20 63 6f 6d 6d 61 6e 64 20 61 73 73 69 67 6e 73   command assigns
7890: 20 61 20 6e 61 6d 65 20 74 6f 20 61 20 70 72 65   a name to a pre
78a0: 2d 70 61 63 6b 61 67 65 64 20 0a 3c 61 20 68 72  -packaged .<a hr
78b0: 65 66 3d 22 6c 61 6e 67 5f 73 65 6c 65 63 74 2e  ef="lang_select.
78c0: 68 74 6d 6c 22 3e 53 45 4c 45 43 54 3c 2f 61 3e  html">SELECT</a>
78d0: 0a 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f 6e 63  .statement.  Onc
78e0: 65 20 74 68 65 20 76 69 65 77 20 69 73 20 63 72  e the view is cr
78f0: 65 61 74 65 64 2c 20 69 74 20 63 61 6e 20 62 65  eated, it can be
7900: 20 75 73 65 64 20 69 6e 20 74 68 65 20 46 52 4f   used in the FRO
7910: 4d 20 63 6c 61 75 73 65 0a 6f 66 20 61 6e 6f 74  M clause.of anot
7920: 68 65 72 20 5b 53 45 4c 45 43 54 5d 20 69 6e 20  her [SELECT] in 
7930: 70 6c 61 63 65 20 6f 66 20 61 20 74 61 62 6c 65  place of a table
7940: 20 6e 61 6d 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e   name..</p>..<p>
7950: 49 66 20 74 68 65 20 22 54 45 4d 50 22 20 6f 72  If the "TEMP" or
7960: 20 22 54 45 4d 50 4f 52 41 52 59 22 20 6b 65 79   "TEMPORARY" key
7970: 77 6f 72 64 20 6f 63 63 75 72 73 20 69 6e 20 62  word occurs in b
7980: 65 74 77 65 65 6e 20 22 43 52 45 41 54 45 22 0a  etween "CREATE".
7990: 61 6e 64 20 22 56 49 45 57 22 20 74 68 65 6e 20  and "VIEW" then 
79a0: 74 68 65 20 76 69 65 77 20 74 68 61 74 20 69 73  the view that is
79b0: 20 63 72 65 61 74 65 64 20 69 73 20 6f 6e 6c 79   created is only
79c0: 20 76 69 73 69 62 6c 65 20 74 6f 20 74 68 65 0a   visible to the.
79d0: 70 72 6f 63 65 73 73 20 74 68 61 74 20 6f 70 65  process that ope
79e0: 6e 65 64 20 74 68 65 20 64 61 74 61 62 61 73 65  ned the database
79f0: 20 61 6e 64 20 69 73 20 61 75 74 6f 6d 61 74 69   and is automati
7a00: 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 77 68  cally deleted wh
7a10: 65 6e 0a 74 68 65 20 64 61 74 61 62 61 73 65 20  en.the database 
7a20: 69 73 20 63 6c 6f 73 65 64 2e 3c 2f 70 3e 0a 0a  is closed.</p>..
7a30: 3c 70 3e 20 49 66 20 61 20 26 6c 74 3b 64 61 74  <p> If a &lt;dat
7a40: 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69  abase-name&gt; i
7a50: 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65  s specified, the
7a60: 6e 20 74 68 65 20 76 69 65 77 20 69 73 20 63 72  n the view is cr
7a70: 65 61 74 65 64 20 69 6e 20 0a 74 68 65 20 6e 61  eated in .the na
7a80: 6d 65 64 20 64 61 74 61 62 61 73 65 2e 20 49 74  med database. It
7a90: 20 69 73 20 61 6e 20 65 72 72 6f 72 20 74 6f 20   is an error to 
7aa0: 73 70 65 63 69 66 79 20 62 6f 74 68 20 61 20 26  specify both a &
7ab0: 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  lt;database-name
7ac0: 26 67 74 3b 0a 61 6e 64 20 74 68 65 20 54 45 4d  &gt;.and the TEM
7ad0: 50 20 6b 65 79 77 6f 72 64 2c 20 75 6e 6c 65 73  P keyword, unles
7ae0: 73 20 74 68 65 20 26 6c 74 3b 64 61 74 61 62 61  s the &lt;databa
7af0: 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 22  se-name&gt; is "
7b00: 74 65 6d 70 22 2e 20 49 66 20 6e 6f 0a 64 61 74  temp". If no.dat
7b10: 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 73 70  abase name is sp
7b20: 65 63 69 66 69 65 64 2c 20 61 6e 64 20 74 68 65  ecified, and the
7b30: 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 20 69 73   TEMP keyword is
7b40: 20 6e 6f 74 20 70 72 65 73 65 6e 74 2c 0a 74 68   not present,.th
7b50: 65 20 74 61 62 6c 65 20 69 73 20 63 72 65 61 74  e table is creat
7b60: 65 64 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64  ed in the main d
7b70: 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70  atabase.</p>..<p
7b80: 3e 59 6f 75 20 63 61 6e 6e 6f 74 20 5b 44 45 4c  >You cannot [DEL
7b90: 45 54 45 5d 2c 20 5b 49 4e 53 45 52 54 5d 2c 20  ETE], [INSERT], 
7ba0: 6f 72 20 5b 55 50 44 41 54 45 5d 20 61 20 76 69  or [UPDATE] a vi
7bb0: 65 77 2e 20 20 56 69 65 77 73 20 61 72 65 20 72  ew.  Views are r
7bc0: 65 61 64 2d 6f 6e 6c 79 20 0a 69 6e 20 53 51 4c  ead-only .in SQL
7bd0: 69 74 65 2e 20 20 48 6f 77 65 76 65 72 2c 20 69  ite.  However, i
7be0: 6e 20 6d 61 6e 79 20 63 61 73 65 73 20 79 6f 75  n many cases you
7bf0: 20 63 61 6e 20 75 73 65 20 61 6e 0a 5b 49 4e 53   can use an.[INS
7c00: 54 45 41 44 20 4f 46 20 74 72 69 67 67 65 72 5d  TEAD OF trigger]
7c10: 20 6f 6e 20 74 68 65 20 76 69 65 77 20 74 6f 20   on the view to 
7c20: 61 63 63 6f 6d 70 6c 69 73 68 20 0a 74 68 65 20  accomplish .the 
7c30: 73 61 6d 65 20 74 68 69 6e 67 2e 20 20 56 69 65  same thing.  Vie
7c40: 77 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 0a  ws are removed .
7c50: 77 69 74 68 20 74 68 65 20 5b 44 52 4f 50 20 56  with the [DROP V
7c60: 49 45 57 5d 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70  IEW] command.</p
7c70: 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23  >..<tcl>.#######
7c80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7c90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7ca0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7cb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7cc0: 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
7cd0: 7b 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20  {CREATE VIRTUAL 
7ce0: 54 41 42 4c 45 7d 20 7b 63 72 65 61 74 65 76 74  TABLE} {createvt
7cf0: 61 62 7d 20 7b 7b 43 52 45 41 54 45 20 56 49 52  ab} {{CREATE VIR
7d00: 54 55 41 4c 5f 54 41 42 4c 45 7d 7d 0a 0a 53 79  TUAL_TABLE}}..Sy
7d10: 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e  ntax {sql-comman
7d20: 64 7d 20 7b 0a 43 52 45 41 54 45 20 56 49 52 54  d} {.CREATE VIRT
7d30: 55 41 4c 20 54 41 42 4c 45 20 5b 3c 64 61 74 61  UAL TABLE [<data
7d40: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74  base-name> .] <t
7d50: 61 62 6c 65 2d 6e 61 6d 65 3e 20 55 53 49 4e 47  able-name> USING
7d60: 20 3c 6d 6f 64 75 6c 65 2d 6e 61 6d 65 3e 20 5b   <module-name> [
7d70: 28 20 3c 61 72 67 75 6d 65 6e 74 73 3e 20 29 5d  ( <arguments> )]
7d80: 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 41 20  .}.</tcl>..<p>A 
7d90: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73  virtual table is
7da0: 20 61 6e 20 69 6e 74 65 72 66 61 63 65 20 74 6f   an interface to
7db0: 20 61 6e 20 65 78 74 65 72 6e 61 6c 20 73 74 6f   an external sto
7dc0: 72 61 67 65 20 6f 72 20 63 6f 6d 70 75 74 61 74  rage or computat
7dd0: 69 6f 6e 0a 65 6e 67 69 6e 65 20 74 68 61 74 20  ion.engine that 
7de0: 61 70 70 65 61 72 73 20 74 6f 20 62 65 20 61 20  appears to be a 
7df0: 74 61 62 6c 65 20 62 75 74 20 64 6f 65 73 20 6e  table but does n
7e00: 6f 74 20 61 63 74 75 61 6c 6c 79 20 73 74 6f 72  ot actually stor
7e10: 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 69 6e  e information.in
7e20: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
7e30: 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 67  le.</p>..<p>In g
7e40: 65 6e 65 72 61 6c 2c 20 79 6f 75 20 63 61 6e 20  eneral, you can 
7e50: 64 6f 20 61 6e 79 74 68 69 6e 67 20 77 69 74 68  do anything with
7e60: 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
7e70: 20 74 68 61 74 20 63 61 6e 20 62 65 20 64 6f 6e   that can be don
7e80: 65 0a 77 69 74 68 20 61 6e 20 6f 72 64 69 6e 61  e.with an ordina
7e90: 72 79 20 74 61 62 6c 65 2c 20 65 78 63 65 70 74  ry table, except
7ea0: 20 74 68 61 74 20 79 6f 75 20 63 61 6e 6e 6f 74   that you cannot
7eb0: 20 63 72 65 61 74 65 20 74 72 69 67 67 65 72 73   create triggers
7ec0: 20 6f 6e 20 61 0a 76 69 72 74 75 61 6c 20 74 61   on a.virtual ta
7ed0: 62 6c 65 2e 20 20 53 6f 6d 65 20 76 69 72 74 75  ble.  Some virtu
7ee0: 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65  al table impleme
7ef0: 6e 74 61 74 69 6f 6e 73 20 6d 69 67 68 74 20 69  ntations might i
7f00: 6d 70 6f 73 65 20 61 64 64 69 74 69 6f 6e 61 6c  mpose additional
7f10: 0a 72 65 73 74 72 69 63 74 69 6f 6e 73 2e 20 20  .restrictions.  
7f20: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 6d 61 6e  For example, man
7f30: 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73  y virtual tables
7f40: 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79 2e 3c   are read-only.<
7f50: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 26 6c 74 3b  /p>..<p>The &lt;
7f60: 6d 6f 64 75 6c 65 2d 6e 61 6d 65 26 67 74 3b 20  module-name&gt; 
7f70: 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  is the name of a
7f80: 6e 20 6f 62 6a 65 63 74 20 74 68 61 74 20 69 6d  n object that im
7f90: 70 6c 65 6d 65 6e 74 73 0a 74 68 65 20 76 69 72  plements.the vir
7fa0: 74 75 61 6c 20 74 61 62 6c 65 2e 20 20 54 68 65  tual table.  The
7fb0: 20 26 6c 74 3b 6d 6f 64 75 6c 65 2d 6e 61 6d 65   &lt;module-name
7fc0: 26 67 74 3b 20 6d 75 73 74 20 62 65 20 72 65 67  &gt; must be reg
7fd0: 69 73 74 65 72 65 64 20 77 69 74 68 0a 74 68 65  istered with.the
7fe0: 20 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65   SQLite database
7ff0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 73 69 6e   connection usin
8000: 67 0a 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  g.sqlite3_create
8010: 5f 6d 6f 64 75 6c 65 28 29 0a 70 72 69 6f 72 20  _module().prior 
8020: 74 6f 20 69 73 73 75 69 6e 67 20 74 68 65 20 43  to issuing the C
8030: 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
8040: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0a 54  BLE statement..T
8050: 68 65 20 6d 6f 64 75 6c 65 20 74 61 6b 65 73 20  he module takes 
8060: 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 63 6f 6d  zero or more com
8070: 6d 61 2d 73 65 70 61 72 61 74 65 64 20 61 72 67  ma-separated arg
8080: 75 6d 65 6e 74 73 2e 0a 54 68 65 20 61 72 67 75  uments..The argu
8090: 6d 65 6e 74 73 20 63 61 6e 20 62 65 20 6a 75 73  ments can be jus
80a0: 74 20 61 62 6f 75 74 20 61 6e 79 20 74 65 78 74  t about any text
80b0: 20 61 73 20 6c 6f 6e 67 20 61 73 20 69 74 20 68   as long as it h
80c0: 61 73 20 62 61 6c 61 6e 63 65 64 0a 70 61 72 65  as balanced.pare
80d0: 6e 74 68 65 73 65 73 2e 20 20 54 68 65 20 61 72  ntheses.  The ar
80e0: 67 75 6d 65 6e 74 20 73 79 6e 74 61 78 20 69 73  gument syntax is
80f0: 20 73 75 66 66 69 63 69 65 6e 74 6c 79 20 67 65   sufficiently ge
8100: 6e 65 72 61 6c 20 74 68 61 74 20 74 68 65 0a 61  neral that the.a
8110: 72 67 75 6d 65 6e 74 73 20 63 61 6e 20 62 65 20  rguments can be 
8120: 6d 61 64 65 20 74 6f 20 61 70 70 65 61 72 20 61  made to appear a
8130: 73 20 63 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74  s column definit
8140: 69 6f 6e 73 20 69 6e 20 61 20 74 72 61 64 69 74  ions in a tradit
8150: 69 6f 6e 61 6c 0a 5b 43 52 45 41 54 45 20 54 41  ional.[CREATE TA
8160: 42 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20  BLE] statement. 
8170: 20 0a 53 51 4c 69 74 65 20 70 61 73 73 65 73 20   .SQLite passes 
8180: 74 68 65 20 6d 6f 64 75 6c 65 20 61 72 67 75 6d  the module argum
8190: 65 6e 74 73 20 64 69 72 65 63 74 6c 79 0a 74 6f  ents directly.to
81a0: 20 74 68 65 20 6d 6f 64 75 6c 65 20 77 69 74 68   the module with
81b0: 6f 75 74 20 61 6e 79 20 69 6e 74 65 72 70 72 65  out any interpre
81c0: 74 61 74 69 6f 6e 2e 20 20 49 74 20 69 73 20 74  tation.  It is t
81d0: 68 65 20 72 65 73 70 6f 6e 73 69 62 69 6c 69 74  he responsibilit
81e0: 79 0a 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 20  y.of the module 
81f0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74  implementation t
8200: 6f 20 70 61 72 73 65 20 61 6e 64 20 69 6e 74 65  o parse and inte
8210: 72 70 72 65 74 20 69 74 73 20 6f 77 6e 20 61 72  rpret its own ar
8220: 67 75 6d 65 6e 74 73 2e 3c 2f 70 3e 0a 0a 3c 70  guments.</p>..<p
8230: 3e 41 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  >A virtual table
8240: 20 69 73 20 64 65 73 74 72 6f 79 65 64 20 75 73   is destroyed us
8250: 69 6e 67 20 74 68 65 20 6f 72 64 69 6e 61 72 79  ing the ordinary
8260: 0a 5b 44 52 4f 50 20 54 41 42 4c 45 5d 20 73 74  .[DROP TABLE] st
8270: 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 72 65 20  atement.  There 
8280: 69 73 20 6e 6f 0a 44 52 4f 50 20 56 49 52 54 55  is no.DROP VIRTU
8290: 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  AL TABLE stateme
82a0: 6e 74 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  nt.</p>..<tcl>.#
82b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
82c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
82d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
82e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
82f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
8300: 63 74 69 6f 6e 20 44 45 4c 45 54 45 20 64 65 6c  ction DELETE del
8310: 65 74 65 20 7b 44 45 4c 45 54 45 20 44 45 4c 45  ete {DELETE DELE
8320: 54 45 73 7d 0a 0a 53 79 6e 74 61 78 20 7b 73 71  TEs}..Syntax {sq
8330: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 44  l-statement} {.D
8340: 45 4c 45 54 45 20 46 52 4f 4d 20 5b 3c 64 61 74  ELETE FROM [<dat
8350: 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c  abase-name> .] <
8360: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 57 48 45  table-name> [WHE
8370: 52 45 20 3c 65 78 70 72 3e 5d 0a 7d 0a 3c 2f 74  RE <expr>].}.</t
8380: 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44 45 4c 45  cl>..<p>The DELE
8390: 54 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73  TE command is us
83a0: 65 64 20 74 6f 20 72 65 6d 6f 76 65 20 72 65 63  ed to remove rec
83b0: 6f 72 64 73 20 66 72 6f 6d 20 61 20 74 61 62 6c  ords from a tabl
83c0: 65 2e 0a 54 68 65 20 63 6f 6d 6d 61 6e 64 20 63  e..The command c
83d0: 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20 22  onsists of the "
83e0: 44 45 4c 45 54 45 20 46 52 4f 4d 22 20 6b 65 79  DELETE FROM" key
83f0: 77 6f 72 64 73 20 66 6f 6c 6c 6f 77 65 64 20 62  words followed b
8400: 79 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  y.the name of th
8410: 65 20 74 61 62 6c 65 20 66 72 6f 6d 20 77 68 69  e table from whi
8420: 63 68 20 72 65 63 6f 72 64 73 20 61 72 65 20 74  ch records are t
8430: 6f 20 62 65 20 72 65 6d 6f 76 65 64 2e 0a 3c 2f  o be removed..</
8440: 70 3e 0a 0a 3c 70 3e 57 69 74 68 6f 75 74 20 61  p>..<p>Without a
8450: 20 57 48 45 52 45 20 63 6c 61 75 73 65 2c 20 61   WHERE clause, a
8460: 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68 65 20 74  ll rows of the t
8470: 61 62 6c 65 20 61 72 65 20 72 65 6d 6f 76 65 64  able are removed
8480: 2e 0a 49 66 20 61 20 57 48 45 52 45 20 63 6c 61  ..If a WHERE cla
8490: 75 73 65 20 69 73 20 73 75 70 70 6c 69 65 64 2c  use is supplied,
84a0: 20 74 68 65 6e 20 6f 6e 6c 79 20 74 68 6f 73 65   then only those
84b0: 20 72 6f 77 73 20 74 68 61 74 20 6d 61 74 63 68   rows that match
84c0: 0a 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20  .the expression 
84d0: 61 72 65 20 72 65 6d 6f 76 65 64 2e 3c 2f 70 3e  are removed.</p>
84e0: 0a 0a 3c 70 3e 57 68 65 6e 20 74 68 65 20 57 48  ..<p>When the WH
84f0: 45 52 45 20 63 6c 61 75 73 65 20 69 73 20 6f 6d  ERE clause is om
8500: 69 74 74 65 64 20 66 72 6f 6d 20 61 20 44 45 4c  itted from a DEL
8510: 45 54 45 20 73 74 61 74 65 6d 65 6e 74 2c 0a 53  ETE statement,.S
8520: 51 4c 69 74 65 20 75 73 65 73 20 61 6e 20 6f 70  QLite uses an op
8530: 74 69 6d 69 7a 61 74 69 6f 6e 20 74 6f 20 65 72  timization to er
8540: 61 73 65 20 74 68 65 20 65 6e 74 69 72 65 20 74  ase the entire t
8550: 61 62 6c 65 20 63 6f 6e 74 65 6e 74 0a 77 69 74  able content.wit
8560: 68 6f 75 74 20 68 61 76 69 6e 67 20 74 6f 20 76  hout having to v
8570: 69 73 69 74 20 65 61 63 68 20 72 6f 77 20 6f 66  isit each row of
8580: 20 74 68 65 20 74 61 62 6c 65 20 69 6e 64 69 76   the table indiv
8590: 69 64 75 61 6c 2e 0a 54 68 69 73 20 22 74 72 75  idual..This "tru
85a0: 6e 63 61 74 65 22 20 6f 70 74 69 6d 69 7a 61 74  ncate" optimizat
85b0: 69 6f 6e 20 6d 61 6b 65 73 20 74 68 65 20 64 65  ion makes the de
85c0: 6c 65 74 65 20 72 75 6e 20 6d 75 63 68 20 66 61  lete run much fa
85d0: 73 74 65 72 2e 0a 48 6f 77 65 76 65 72 2c 20 69  ster..However, i
85e0: 74 20 61 6c 73 6f 20 6d 65 61 6e 73 20 74 68 61  t also means tha
85f0: 74 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63  t the [sqlite3_c
8600: 68 61 6e 67 65 73 28 29 5d 20 69 6e 74 65 72 66  hanges()] interf
8610: 61 63 65 0a 61 6e 64 20 74 68 65 20 5b 63 6f 75  ace.and the [cou
8620: 6e 74 5f 63 68 61 6e 67 65 73 5d 20 50 52 41 47  nt_changes] PRAG
8630: 4d 41 0a 77 69 6c 6c 20 6e 6f 74 20 61 63 74 75  MA.will not actu
8640: 61 6c 6c 79 20 72 65 74 75 72 6e 20 74 68 65 20  ally return the 
8650: 6e 75 6d 62 65 72 20 6f 66 20 64 65 6c 65 74 65  number of delete
8660: 64 20 72 6f 77 73 2e 20 20 49 66 20 79 6f 75 0a  d rows.  If you.
8670: 6e 65 65 64 20 74 6f 20 64 65 6c 65 74 65 20 65  need to delete e
8680: 76 65 72 79 20 72 6f 77 20 6f 66 20 61 20 74 61  very row of a ta
8690: 62 6c 65 20 61 6e 64 20 73 74 69 6c 6c 20 68 61  ble and still ha
86a0: 76 65 0a 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e  ve.[sqlite3_chan
86b0: 67 65 73 28 29 5d 20 61 6e 64 20 5b 63 6f 75 6e  ges()] and [coun
86c0: 74 5f 63 68 61 6e 67 65 73 5d 20 77 6f 72 6b 20  t_changes] work 
86d0: 63 6f 72 72 65 63 74 6c 79 2c 20 74 68 65 6e 0a  correctly, then.
86e0: 75 73 65 20 57 48 45 52 45 20 63 6c 61 75 73 65  use WHERE clause
86f0: 20 74 68 61 74 20 69 73 20 61 6c 77 61 79 73 20   that is always 
8700: 74 72 75 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  true:</p>..<bloc
8710: 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 44 45 4c  kquote><pre>.DEL
8720: 45 54 45 20 46 52 4f 4d 20 73 6f 6d 65 74 61 62  ETE FROM sometab
8730: 6c 65 20 57 48 45 52 45 20 31 3b 0a 3c 2f 70 72  le WHERE 1;.</pr
8740: 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  e></blockquote>.
8750: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
8760: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8770: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8780: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8790: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
87a0: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
87b0: 44 45 54 41 43 48 20 44 41 54 41 42 41 53 45 7d  DETACH DATABASE}
87c0: 20 64 65 74 61 63 68 20 44 45 54 41 43 48 0a 0a   detach DETACH..
87d0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d  Syntax {sql-comm
87e0: 61 6e 64 7d 20 7b 0a 44 45 54 41 43 48 20 5b 44  and} {.DETACH [D
87f0: 41 54 41 42 41 53 45 5d 20 3c 64 61 74 61 62 61  ATABASE] <databa
8800: 73 65 2d 6e 61 6d 65 3e 0a 7d 0a 3c 2f 74 63 6c  se-name>.}.</tcl
8810: 3e 0a 0a 3c 70 3e 54 68 69 73 20 73 74 61 74 65  >..<p>This state
8820: 6d 65 6e 74 20 64 65 74 61 63 68 65 73 20 61 6e  ment detaches an
8830: 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 61 74 61   additional data
8840: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
8850: 70 72 65 76 69 6f 75 73 6c 79 20 0a 61 74 74 61  previously .atta
8860: 63 68 65 64 20 75 73 69 6e 67 20 74 68 65 20 5b  ched using the [
8870: 41 54 54 41 43 48 5d 20 73 74 61 74 65 6d 65 6e  ATTACH] statemen
8880: 74 2e 20 20 0a 49 74 20 69 73 20 70 6f 73 73 69  t.  .It is possi
8890: 62 6c 65 20 74 6f 20 68 61 76 65 20 74 68 65 20  ble to have the 
88a0: 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 66 69  same database fi
88b0: 6c 65 20 61 74 74 61 63 68 65 64 20 6d 75 6c 74  le attached mult
88c0: 69 70 6c 65 20 74 69 6d 65 73 20 75 73 69 6e 67  iple times using
88d0: 20 0a 64 69 66 66 65 72 65 6e 74 20 6e 61 6d 65   .different name
88e0: 73 2c 20 61 6e 64 20 64 65 74 61 63 68 69 6e 67  s, and detaching
88f0: 20 6f 6e 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   one connection 
8900: 74 6f 20 61 20 66 69 6c 65 20 77 69 6c 6c 20 6c  to a file will l
8910: 65 61 76 65 20 74 68 65 20 0a 6f 74 68 65 72 73  eave the .others
8920: 20 69 6e 74 61 63 74 2e 3c 2f 70 3e 0a 0a 3c 70   intact.</p>..<p
8930: 3e 54 68 69 73 20 73 74 61 74 65 6d 65 6e 74 20  >This statement 
8940: 77 69 6c 6c 20 66 61 69 6c 20 69 66 20 53 51 4c  will fail if SQL
8950: 69 74 65 20 69 73 20 69 6e 20 74 68 65 20 6d 69  ite is in the mi
8960: 64 64 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61  ddle of a transa
8970: 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63  ction.</p>...<tc
8980: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
8990: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
89a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
89b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
89c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
89d0: 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20  #.Section {DROP 
89e0: 49 4e 44 45 58 7d 20 64 72 6f 70 69 6e 64 65 78  INDEX} dropindex
89f0: 20 7b 7b 44 52 4f 50 20 49 4e 44 45 58 7d 7d 0a   {{DROP INDEX}}.
8a00: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d  .Syntax {sql-com
8a10: 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50 20 49 4e 44  mand} {.DROP IND
8a20: 45 58 20 5b 49 46 20 45 58 49 53 54 53 5d 20 5b  EX [IF EXISTS] [
8a30: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
8a40: 2e 5d 20 3c 69 6e 64 65 78 2d 6e 61 6d 65 3e 0a  .] <index-name>.
8a50: 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65  }.</tcl>..<p>The
8a60: 20 44 52 4f 50 20 49 4e 44 45 58 20 73 74 61 74   DROP INDEX stat
8a70: 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 6e  ement removes an
8a80: 20 69 6e 64 65 78 20 61 64 64 65 64 0a 77 69 74   index added.wit
8a90: 68 20 74 68 65 20 5b 43 52 45 41 54 45 20 49 4e  h the [CREATE IN
8aa0: 44 45 58 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20  DEX] statement. 
8ab0: 20 54 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 64   The index named
8ac0: 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72   is completely r
8ad0: 65 6d 6f 76 65 64 20 66 72 6f 6d 0a 74 68 65 20  emoved from.the 
8ae0: 64 69 73 6b 2e 20 20 54 68 65 20 6f 6e 6c 79 20  disk.  The only 
8af0: 77 61 79 20 74 6f 20 72 65 63 6f 76 65 72 20 74  way to recover t
8b00: 68 65 20 69 6e 64 65 78 20 69 73 20 74 6f 20 72  he index is to r
8b10: 65 65 6e 74 65 72 20 74 68 65 0a 61 70 70 72 6f  eenter the.appro
8b20: 70 72 69 61 74 65 20 5b 43 52 45 41 54 45 20 49  priate [CREATE I
8b30: 4e 44 45 58 5d 20 63 6f 6d 6d 61 6e 64 2e 3c 2f  NDEX] command.</
8b40: 70 3e 0a 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20  p>..<p>The DROP 
8b50: 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74 20  INDEX statement 
8b60: 64 6f 65 73 20 6e 6f 74 20 72 65 64 75 63 65 20  does not reduce 
8b70: 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  the size of the 
8b80: 64 61 74 61 62 61 73 65 20 0a 66 69 6c 65 20 69  database .file i
8b90: 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 6f  n the default mo
8ba0: 64 65 2e 0a 45 6d 70 74 79 20 73 70 61 63 65 20  de..Empty space 
8bb0: 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  in the database 
8bc0: 69 73 20 72 65 74 61 69 6e 65 64 20 66 6f 72 20  is retained for 
8bd0: 6c 61 74 65 72 20 5b 49 4e 53 45 52 54 5d 20 73  later [INSERT] s
8be0: 74 61 74 65 6d 65 6e 74 73 2e 20 20 54 6f 20 0a  tatements.  To .
8bf0: 72 65 6d 6f 76 65 20 66 72 65 65 20 73 70 61 63  remove free spac
8c00: 65 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73  e in the databas
8c10: 65 2c 20 75 73 65 20 74 68 65 20 5b 56 41 43 55  e, use the [VACU
8c20: 55 4d 5d 0a 63 6f 6d 6d 61 6e 64 2e 20 20 49 66  UM].command.  If
8c30: 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 6d   [auto_vacuum] m
8c40: 6f 64 65 20 69 73 20 65 6e 61 62 6c 65 64 20 66  ode is enabled f
8c50: 6f 72 20 61 20 64 61 74 61 62 61 73 65 20 74 68  or a database th
8c60: 65 6e 20 73 70 61 63 65 0a 77 69 6c 6c 20 62 65  en space.will be
8c70: 20 66 72 65 65 64 20 61 75 74 6f 6d 61 74 69 63   freed automatic
8c80: 61 6c 6c 79 20 62 79 20 44 52 4f 50 20 49 4e 44  ally by DROP IND
8c90: 45 58 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a  EX.</p>...<tcl>.
8ca0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8cb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8cc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8cd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8ce0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
8cf0: 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54 41 42  ection {DROP TAB
8d00: 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65 20 7b 7b  LE} droptable {{
8d10: 44 52 4f 50 20 54 41 42 4c 45 7d 7d 0a 0a 53 79  DROP TABLE}}..Sy
8d20: 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e  ntax {sql-comman
8d30: 64 7d 20 7b 0a 44 52 4f 50 20 54 41 42 4c 45 20  d} {.DROP TABLE 
8d40: 5b 49 46 20 45 58 49 53 54 53 5d 20 5b 3c 64 61  [IF EXISTS] [<da
8d50: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 2e 5d 20 3c  tabase-name>.] <
8d60: 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 7d 0a 3c 2f  table-name>.}.</
8d70: 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44 52 4f  tcl>..<p>The DRO
8d80: 50 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  P TABLE statemen
8d90: 74 20 72 65 6d 6f 76 65 73 20 61 20 74 61 62 6c  t removes a tabl
8da0: 65 20 61 64 64 65 64 20 77 69 74 68 20 74 68 65  e added with the
8db0: 0a 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d 20  .[CREATE TABLE] 
8dc0: 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20  statement.  The 
8dd0: 6e 61 6d 65 20 73 70 65 63 69 66 69 65 64 20 69  name specified i
8de0: 73 20 74 68 65 0a 74 61 62 6c 65 20 6e 61 6d 65  s the.table name
8df0: 2e 20 20 49 74 20 69 73 20 63 6f 6d 70 6c 65 74  .  It is complet
8e00: 65 6c 79 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d  ely removed from
8e10: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63   the database sc
8e20: 68 65 6d 61 20 61 6e 64 20 74 68 65 20 0a 64 69  hema and the .di
8e30: 73 6b 20 66 69 6c 65 2e 20 20 54 68 65 20 74 61  sk file.  The ta
8e40: 62 6c 65 20 63 61 6e 20 6e 6f 74 20 62 65 20 72  ble can not be r
8e50: 65 63 6f 76 65 72 65 64 2e 20 20 41 6c 6c 20 69  ecovered.  All i
8e60: 6e 64 69 63 65 73 20 61 73 73 6f 63 69 61 74 65  ndices associate
8e70: 64 20 0a 77 69 74 68 20 74 68 65 20 74 61 62 6c  d .with the tabl
8e80: 65 20 61 72 65 20 61 6c 73 6f 20 64 65 6c 65 74  e are also delet
8e90: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ed.</p>..<p>The 
8ea0: 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65  DROP TABLE state
8eb0: 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 72 65  ment does not re
8ec0: 64 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66  duce the size of
8ed0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 0a 66   the database .f
8ee0: 69 6c 65 20 69 6e 20 74 68 65 20 64 65 66 61 75  ile in the defau
8ef0: 6c 74 20 6d 6f 64 65 2e 20 20 45 6d 70 74 79 20  lt mode.  Empty 
8f00: 73 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74  space in the dat
8f10: 61 62 61 73 65 20 69 73 20 72 65 74 61 69 6e 65  abase is retaine
8f20: 64 20 66 6f 72 0a 6c 61 74 65 72 20 5b 49 4e 53  d for.later [INS
8f30: 45 52 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e  ERT] statements.
8f40: 20 20 54 6f 20 0a 72 65 6d 6f 76 65 20 66 72 65    To .remove fre
8f50: 65 20 73 70 61 63 65 20 69 6e 20 74 68 65 20 64  e space in the d
8f60: 61 74 61 62 61 73 65 2c 20 0a 75 73 65 20 74 68  atabase, .use th
8f70: 65 20 5b 56 41 43 55 55 4d 5d 20 73 74 61 74 65  e [VACUUM] state
8f80: 6d 65 6e 74 2e 0a 49 66 20 5b 61 75 74 6f 5f 76  ment..If [auto_v
8f90: 61 63 75 75 6d 5d 20 6d 6f 64 65 20 69 73 20 65  acuum] mode is e
8fa0: 6e 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61 74  nabled for a dat
8fb0: 61 62 61 73 65 20 74 68 65 6e 20 73 70 61 63 65  abase then space
8fc0: 0a 77 69 6c 6c 20 62 65 20 66 72 65 65 64 20 61  .will be freed a
8fd0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20  utomatically by 
8fe0: 44 52 4f 50 20 54 41 42 4c 45 2e 3c 2f 70 3e 0a  DROP TABLE.</p>.
8ff0: 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c  .<p>The optional
9000: 20 49 46 20 45 58 49 53 54 53 20 63 6c 61 75 73   IF EXISTS claus
9010: 65 20 73 75 70 70 72 65 73 73 65 73 20 74 68 65  e suppresses the
9020: 20 65 72 72 6f 72 20 74 68 61 74 20 77 6f 75 6c   error that woul
9030: 64 20 6e 6f 72 6d 61 6c 6c 79 0a 72 65 73 75 6c  d normally.resul
9040: 74 20 69 66 20 74 68 65 20 74 61 62 6c 65 20 64  t if the table d
9050: 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 3c 2f  oes not exist.</
9060: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
9070: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9080: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9090: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
90a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
90b0: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
90c0: 20 7b 44 52 4f 50 20 54 52 49 47 47 45 52 7d 20   {DROP TRIGGER} 
90d0: 64 72 6f 70 74 72 69 67 67 65 72 20 7b 7b 44 52  droptrigger {{DR
90e0: 4f 50 20 54 52 49 47 47 45 52 7d 7d 0a 53 79 6e  OP TRIGGER}}.Syn
90f0: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
9100: 6e 74 7d 20 7b 0a 44 52 4f 50 20 54 52 49 47 47  nt} {.DROP TRIGG
9110: 45 52 20 5b 49 46 20 45 58 49 53 54 53 5d 20 5b  ER [IF EXISTS] [
9120: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
9130: 2e 5d 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65  .] <trigger-name
9140: 3e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54  >.}.</tcl>..<p>T
9150: 68 65 20 44 52 4f 50 20 54 52 49 47 47 45 52 20  he DROP TRIGGER 
9160: 73 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65  statement remove
9170: 73 20 61 20 74 72 69 67 67 65 72 20 63 72 65 61  s a trigger crea
9180: 74 65 64 20 62 79 20 74 68 65 20 0a 5b 43 52 45  ted by the .[CRE
9190: 41 54 45 20 54 52 49 47 47 45 52 5d 20 73 74 61  ATE TRIGGER] sta
91a0: 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 74 72 69  tement.  The tri
91b0: 67 67 65 72 20 69 73 20 0a 64 65 6c 65 74 65 64  gger is .deleted
91c0: 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61   from the databa
91d0: 73 65 20 73 63 68 65 6d 61 2e 20 4e 6f 74 65 20  se schema. Note 
91e0: 74 68 61 74 20 74 72 69 67 67 65 72 73 20 61 72  that triggers ar
91f0: 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  e automatically 
9200: 0a 64 72 6f 70 70 65 64 20 77 68 65 6e 20 74 68  .dropped when th
9210: 65 20 61 73 73 6f 63 69 61 74 65 64 20 74 61 62  e associated tab
9220: 6c 65 20 69 73 20 64 72 6f 70 70 65 64 2e 3c 2f  le is dropped.</
9230: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
9240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9250: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9260: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9270: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9280: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
9290: 20 7b 44 52 4f 50 20 56 49 45 57 7d 20 64 72 6f   {DROP VIEW} dro
92a0: 70 76 69 65 77 20 7b 7b 44 52 4f 50 20 56 49 45  pview {{DROP VIE
92b0: 57 7d 7d 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  W}}..Syntax {sql
92c0: 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50  -command} {.DROP
92d0: 20 56 49 45 57 20 5b 49 46 20 45 58 49 53 54 53   VIEW [IF EXISTS
92e0: 5d 20 3c 76 69 65 77 2d 6e 61 6d 65 3e 0a 7d 0a  ] <view-name>.}.
92f0: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44  </tcl>..<p>The D
9300: 52 4f 50 20 56 49 45 57 20 73 74 61 74 65 6d 65  ROP VIEW stateme
9310: 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 76 69 65  nt removes a vie
9320: 77 20 63 72 65 61 74 65 64 20 62 79 20 74 68 65  w created by the
9330: 0a 5b 43 52 45 41 54 45 20 56 49 45 57 5d 20 73  .[CREATE VIEW] s
9340: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e  tatement.  The n
9350: 61 6d 65 20 73 70 65 63 69 66 69 65 64 20 69 73  ame specified is
9360: 20 74 68 65 20 0a 76 69 65 77 20 6e 61 6d 65 2e   the .view name.
9370: 20 20 49 74 20 69 73 20 72 65 6d 6f 76 65 64 20    It is removed 
9380: 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73  from the databas
9390: 65 20 73 63 68 65 6d 61 2c 20 62 75 74 20 6e 6f  e schema, but no
93a0: 20 61 63 74 75 61 6c 20 64 61 74 61 20 0a 69 6e   actual data .in
93b0: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
93c0: 62 61 73 65 20 74 61 62 6c 65 73 20 69 73 20 6d  base tables is m
93d0: 6f 64 69 66 69 65 64 2e 3c 2f 70 3e 0a 0a 3c 74  odified.</p>..<t
93e0: 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
93f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9400: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9410: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9420: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9430: 23 23 0a 53 65 63 74 69 6f 6e 20 45 58 50 4c 41  ##.Section EXPLA
9440: 49 4e 20 65 78 70 6c 61 69 6e 20 45 58 50 4c 41  IN explain EXPLA
9450: 49 4e 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  IN..Syntax {sql-
9460: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 45 58 50  statement} {.EXP
9470: 4c 41 49 4e 20 3c 73 71 6c 2d 73 74 61 74 65 6d  LAIN <sql-statem
9480: 65 6e 74 3e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  ent>.}.</tcl>..<
9490: 70 3e 54 68 65 20 45 58 50 4c 41 49 4e 20 63 6f  p>The EXPLAIN co
94a0: 6d 6d 61 6e 64 20 6d 6f 64 69 66 69 65 72 20 69  mmand modifier i
94b0: 73 20 61 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64  s a non-standard
94c0: 20 65 78 74 65 6e 73 69 6f 6e 2e 20 20 54 68 65   extension.  The
94d0: 0a 69 64 65 61 20 63 6f 6d 65 73 20 66 72 6f 6d  .idea comes from
94e0: 20 61 20 73 69 6d 69 6c 61 72 20 63 6f 6d 6d 61   a similar comma
94f0: 6e 64 20 66 6f 75 6e 64 20 69 6e 20 50 6f 73 74  nd found in Post
9500: 67 72 65 53 51 4c 2c 20 62 75 74 20 74 68 65 20  greSQL, but the 
9510: 6f 70 65 72 61 74 69 6f 6e 0a 69 73 20 63 6f 6d  operation.is com
9520: 70 6c 65 74 65 6c 79 20 64 69 66 66 65 72 65 6e  pletely differen
9530: 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68  t.</p>..<p>If th
9540: 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72  e EXPLAIN keywor
9550: 64 20 61 70 70 65 61 72 73 20 62 65 66 6f 72 65  d appears before
9560: 20 61 6e 79 20 6f 74 68 65 72 20 53 51 4c 69 74   any other SQLit
9570: 65 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a 74 68  e SQL command.th
9580: 65 6e 20 69 6e 73 74 65 61 64 20 6f 66 20 61 63  en instead of ac
9590: 74 75 61 6c 6c 79 20 65 78 65 63 75 74 69 6e 67  tually executing
95a0: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2c 20 74 68   the command, th
95b0: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
95c0: 20 77 69 6c 6c 0a 72 65 70 6f 72 74 20 62 61 63   will.report bac
95d0: 6b 20 74 68 65 20 73 65 71 75 65 6e 63 65 20 6f  k the sequence o
95e0: 66 20 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e  f virtual machin
95f0: 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 69  e instructions i
9600: 74 20 77 6f 75 6c 64 20 68 61 76 65 0a 75 73 65  t would have.use
9610: 64 20 74 6f 20 65 78 65 63 75 74 65 20 74 68 65  d to execute the
9620: 20 63 6f 6d 6d 61 6e 64 20 68 61 64 20 74 68 65   command had the
9630: 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64   EXPLAIN keyword
9640: 20 6e 6f 74 20 62 65 65 6e 20 70 72 65 73 65 6e   not been presen
9650: 74 2e 0a 46 6f 72 20 61 64 64 69 74 69 6f 6e 61  t..For additiona
9660: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  l information ab
9670: 6f 75 74 20 76 69 72 74 75 61 6c 20 6d 61 63 68  out virtual mach
9680: 69 6e 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 73  ine instructions
9690: 20 73 65 65 0a 74 68 65 20 3c 61 20 68 72 65 66   see.the <a href
96a0: 3d 22 61 72 63 68 2e 68 74 6d 6c 22 3e 61 72 63  ="arch.html">arc
96b0: 68 69 74 65 63 74 75 72 65 20 64 65 73 63 72 69  hitecture descri
96c0: 70 74 69 6f 6e 3c 2f 61 3e 20 6f 72 20 74 68 65  ption</a> or the
96d0: 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 0a 6f   documentation.o
96e0: 6e 20 3c 61 20 68 72 65 66 3d 22 6f 70 63 6f 64  n <a href="opcod
96f0: 65 2e 68 74 6d 6c 22 3e 61 76 61 69 6c 61 62 6c  e.html">availabl
9700: 65 20 6f 70 63 6f 64 65 73 3c 2f 61 3e 20 66 6f  e opcodes</a> fo
9710: 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 6d 61  r the virtual ma
9720: 63 68 69 6e 65 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  chine.</p>..<tcl
9730: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
9740: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9750: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9760: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9770: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9780: 0a 53 65 63 74 69 6f 6e 20 65 78 70 72 65 73 73  .Section express
9790: 69 6f 6e 20 65 78 70 72 20 7b 65 78 70 72 65 73  ion expr {expres
97a0: 73 69 6f 6e 20 7b 65 78 70 72 65 73 73 69 6f 6e  sion {expression
97b0: 20 73 79 6e 74 61 78 7d 7d 0a 0a 53 79 6e 74 61   syntax}}..Synta
97c0: 78 20 7b 65 78 70 72 7d 20 7b 0a 3c 65 78 70 72  x {expr} {.<expr
97d0: 3e 20 3c 62 69 6e 61 72 79 2d 6f 70 3e 20 3c 65  > <binary-op> <e
97e0: 78 70 72 3e 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e  xpr> |.<expr> [N
97f0: 4f 54 5d 20 3c 6c 69 6b 65 2d 6f 70 3e 20 3c 65  OT] <like-op> <e
9800: 78 70 72 3e 20 5b 45 53 43 41 50 45 20 3c 65 78  xpr> [ESCAPE <ex
9810: 70 72 3e 5d 20 7c 0a 3c 75 6e 61 72 79 2d 6f 70  pr>] |.<unary-op
9820: 3e 20 3c 65 78 70 72 3e 20 7c 0a 28 20 3c 65 78  > <expr> |.( <ex
9830: 70 72 3e 20 29 20 7c 0a 3c 63 6f 6c 75 6d 6e 2d  pr> ) |.<column-
9840: 6e 61 6d 65 3e 20 7c 0a 3c 74 61 62 6c 65 2d 6e  name> |.<table-n
9850: 61 6d 65 3e 20 2e 20 3c 63 6f 6c 75 6d 6e 2d 6e  ame> . <column-n
9860: 61 6d 65 3e 20 7c 0a 3c 64 61 74 61 62 61 73 65  ame> |.<database
9870: 2d 6e 61 6d 65 3e 20 2e 20 3c 74 61 62 6c 65 2d  -name> . <table-
9880: 6e 61 6d 65 3e 20 2e 20 3c 63 6f 6c 75 6d 6e 2d  name> . <column-
9890: 6e 61 6d 65 3e 20 7c 0a 3c 6c 69 74 65 72 61 6c  name> |.<literal
98a0: 2d 76 61 6c 75 65 3e 20 7c 0a 3c 70 61 72 61 6d  -value> |.<param
98b0: 65 74 65 72 3e 20 7c 0a 3c 66 75 6e 63 74 69 6f  eter> |.<functio
98c0: 6e 2d 6e 61 6d 65 3e 20 28 20 3c 65 78 70 72 2d  n-name> ( <expr-
98d0: 6c 69 73 74 3e 20 7c 20 53 54 41 52 20 29 20 7c  list> | STAR ) |
98e0: 0a 3c 65 78 70 72 3e 20 49 53 4e 55 4c 4c 20 7c  .<expr> ISNULL |
98f0: 0a 3c 65 78 70 72 3e 20 4e 4f 54 4e 55 4c 4c 20  .<expr> NOTNULL 
9900: 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 42  |.<expr> [NOT] B
9910: 45 54 57 45 45 4e 20 3c 65 78 70 72 3e 20 41 4e  ETWEEN <expr> AN
9920: 44 20 3c 65 78 70 72 3e 20 7c 0a 3c 65 78 70 72  D <expr> |.<expr
9930: 3e 20 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c 76 61  > [NOT] IN ( <va
9940: 6c 75 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 3c 65  lue-list> ) |.<e
9950: 78 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 28 20  xpr> [NOT] IN ( 
9960: 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e  <select-statemen
9970: 74 3e 20 29 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e  t> ) |.<expr> [N
9980: 4f 54 5d 20 49 4e 20 5b 3c 64 61 74 61 62 61 73  OT] IN [<databas
9990: 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c  e-name> .] <tabl
99a0: 65 2d 6e 61 6d 65 3e 20 7c 0a 5b 45 58 49 53 54  e-name> |.[EXIST
99b0: 53 5d 20 28 20 3c 73 65 6c 65 63 74 2d 73 74 61  S] ( <select-sta
99c0: 74 65 6d 65 6e 74 3e 20 29 20 7c 0a 43 41 53 45  tement> ) |.CASE
99d0: 20 5b 3c 65 78 70 72 3e 5d 20 4c 50 20 57 48 45   [<expr>] LP WHE
99e0: 4e 20 3c 65 78 70 72 3e 20 54 48 45 4e 20 3c 65  N <expr> THEN <e
99f0: 78 70 72 3e 20 52 50 50 4c 55 53 20 5b 45 4c 53  xpr> RPPLUS [ELS
9a00: 45 20 3c 65 78 70 72 3e 5d 20 45 4e 44 20 7c 0a  E <expr>] END |.
9a10: 43 41 53 54 20 28 20 3c 65 78 70 72 3e 20 41 53  CAST ( <expr> AS
9a20: 20 3c 74 79 70 65 3e 20 29 20 7c 0a 3c 65 78 70   <type> ) |.<exp
9a30: 72 3e 20 43 4f 4c 4c 41 54 45 20 3c 63 6f 6c 6c  r> COLLATE <coll
9a40: 61 74 69 6f 6e 2d 6e 61 6d 65 3e 0a 7d 20 7b 6c  ation-name>.} {l
9a50: 69 6b 65 2d 6f 70 7d 20 7b 0a 4c 49 4b 45 20 7c  ike-op} {.LIKE |
9a60: 20 47 4c 4f 42 20 7c 20 52 45 47 45 58 50 20 7c   GLOB | REGEXP |
9a70: 20 4d 41 54 43 48 0a 7d 0a 3c 2f 74 63 6c 3e 0a   MATCH.}.</tcl>.
9a80: 0a 3c 70 3e 54 68 69 73 20 73 65 63 74 69 6f 6e  .<p>This section
9a90: 20 69 73 20 64 69 66 66 65 72 65 6e 74 20 66 72   is different fr
9aa0: 6f 6d 20 74 68 65 20 6f 74 68 65 72 73 2e 20 20  om the others.  
9ab0: 4d 6f 73 74 20 6f 74 68 65 72 20 73 65 63 74 69  Most other secti
9ac0: 6f 6e 73 20 6f 66 0a 74 68 69 73 20 64 6f 63 75  ons of.this docu
9ad0: 6d 65 6e 74 20 74 61 6c 6b 73 20 61 62 6f 75 74  ment talks about
9ae0: 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 53 51   a particular SQ
9af0: 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73  L command.  This
9b00: 20 73 65 63 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f   section does.no
9b10: 74 20 74 61 6c 6b 20 61 62 6f 75 74 20 61 20 73  t talk about a s
9b20: 74 61 6e 64 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e  tandalone comman
9b30: 64 20 62 75 74 20 61 62 6f 75 74 20 22 65 78 70  d but about "exp
9b40: 72 65 73 73 69 6f 6e 73 22 20 77 68 69 63 68 20  ressions" which 
9b50: 61 72 65 20 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e  are .subcomponen
9b60: 74 73 20 6f 66 20 6d 6f 73 74 20 6f 74 68 65 72  ts of most other
9b70: 20 63 6f 6d 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a   commands.</p>..
9b80: 3c 70 3e 53 51 4c 69 74 65 20 75 6e 64 65 72 73  <p>SQLite unders
9b90: 74 61 6e 64 73 20 74 68 65 20 66 6f 6c 6c 6f 77  tands the follow
9ba0: 69 6e 67 20 62 69 6e 61 72 79 20 6f 70 65 72 61  ing binary opera
9bb0: 74 6f 72 73 2c 20 69 6e 20 6f 72 64 65 72 20 66  tors, in order f
9bc0: 72 6f 6d 0a 68 69 67 68 65 73 74 20 74 6f 20 6c  rom.highest to l
9bd0: 6f 77 65 73 74 20 70 72 65 63 65 64 65 6e 63 65  owest precedence
9be0: 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  :</p>..<blockquo
9bf0: 74 65 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63  te><pre>.<font c
9c00: 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c  olor="#2c2cf0"><
9c10: 62 69 67 3e 7c 7c 0a 2a 20 20 20 20 2f 20 20 20  big>||.*    /   
9c20: 20 25 0a 2b 20 20 20 20 2d 0a 26 6c 74 3b 26 6c   %.+    -.&lt;&l
9c30: 74 3b 20 20 20 26 67 74 3b 26 67 74 3b 20 20 20  t;   &gt;&gt;   
9c40: 26 61 6d 70 3b 20 20 20 20 7c 0a 26 6c 74 3b 20  &amp;    |.&lt; 
9c50: 20 20 20 26 6c 74 3b 3d 20 20 20 26 67 74 3b 20     &lt;=   &gt; 
9c60: 20 20 20 26 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d     &gt;=.=    ==
9c70: 20 20 20 21 3d 20 20 20 26 6c 74 3b 26 67 74 3b     !=   &lt;&gt;
9c80: 20 20 20 3c 2f 62 69 67 3e 49 4e 0a 41 4e 44 20     </big>IN.AND 
9c90: 20 20 0a 4f 52 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70    .OR</font>.</p
9ca0: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
9cb0: 0a 0a 3c 70 3e 53 75 70 70 6f 72 74 65 64 20 75  ..<p>Supported u
9cc0: 6e 61 72 79 20 70 72 65 66 69 78 20 6f 70 65 72  nary prefix oper
9cd0: 61 74 6f 72 73 20 61 72 65 20 74 68 65 73 65 3a  ators are these:
9ce0: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
9cf0: 65 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f  e><pre>.<font co
9d00: 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62  lor="#2c2cf0"><b
9d10: 69 67 3e 2d 20 20 20 20 2b 20 20 20 20 7e 20 20  ig>-    +    ~  
9d20: 20 20 4e 4f 54 3c 2f 62 69 67 3e 3c 2f 66 6f 6e    NOT</big></fon
9d30: 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  t>.</pre></block
9d40: 71 75 6f 74 65 3e 0a 0a 3c 70 3e 54 68 65 20 43  quote>..<p>The C
9d50: 4f 4c 4c 41 54 45 20 6f 70 65 72 61 74 6f 72 20  OLLATE operator 
9d60: 63 61 6e 20 62 65 20 74 68 6f 75 67 68 74 20 6f  can be thought o
9d70: 66 20 61 73 20 61 20 75 6e 61 72 79 20 70 6f 73  f as a unary pos
9d80: 74 66 69 78 0a 6f 70 65 72 61 74 6f 72 2e 20 20  tfix.operator.  
9d90: 54 68 65 20 43 4f 4c 4c 41 54 45 20 6f 70 65 72  The COLLATE oper
9da0: 61 74 6f 72 20 68 61 73 20 74 68 65 20 68 69 67  ator has the hig
9db0: 68 65 73 74 20 70 72 65 63 65 64 65 6e 63 65 2e  hest precedence.
9dc0: 0a 49 74 20 61 6c 77 61 79 73 20 62 69 6e 64 73  .It always binds
9dd0: 20 6d 6f 72 65 20 74 69 67 68 74 6c 79 20 74 68   more tightly th
9de0: 61 6e 20 61 6e 79 20 70 72 65 66 69 78 20 75 6e  an any prefix un
9df0: 61 72 79 20 6f 70 65 72 61 74 6f 72 20 6f 72 0a  ary operator or.
9e00: 61 6e 79 20 62 69 6e 61 72 79 20 6f 70 65 72 61  any binary opera
9e10: 74 6f 72 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68  tor.</p>..<tcl>h
9e20: 64 5f 70 75 74 73 20 22 0a 3c 70 3e 54 68 65 20  d_puts ".<p>The 
9e30: 75 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 5b  unary operator [
9e40: 4f 70 65 72 61 74 6f 72 20 2b 5d 20 69 73 20 61  Operator +] is a
9e50: 20 6e 6f 2d 6f 70 2e 20 20 49 74 20 63 61 6e 20   no-op.  It can 
9e60: 62 65 20 61 70 70 6c 69 65 64 0a 74 6f 20 73 74  be applied.to st
9e70: 72 69 6e 67 73 2c 20 6e 75 6d 62 65 72 73 2c 20  rings, numbers, 
9e80: 6f 72 20 62 6c 6f 62 73 20 61 6e 64 20 69 74 20  or blobs and it 
9e90: 61 6c 77 61 79 73 20 67 69 76 65 73 20 61 73 20  always gives as 
9ea0: 69 74 73 20 72 65 73 75 6c 74 20 74 68 65 0a 76  its result the.v
9eb0: 61 6c 75 65 20 6f 66 20 74 68 65 20 6f 70 65 72  alue of the oper
9ec0: 61 6e 64 2e 3c 2f 70 3e 22 3c 2f 74 63 6c 3e 0a  and.</p>"</tcl>.
9ed0: 0a 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 74 68  .<p>Note that th
9ee0: 65 72 65 20 61 72 65 20 74 77 6f 20 76 61 72 69  ere are two vari
9ef0: 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 65 71  ations of the eq
9f00: 75 61 6c 73 20 61 6e 64 20 6e 6f 74 20 65 71 75  uals and not equ
9f10: 61 6c 73 0a 6f 70 65 72 61 74 6f 72 73 2e 20 20  als.operators.  
9f20: 45 71 75 61 6c 73 20 63 61 6e 20 62 65 20 65 69  Equals can be ei
9f30: 74 68 65 72 0a 0a 3c 74 63 6c 3e 0a 68 64 5f 70  ther..<tcl>.hd_p
9f40: 75 74 73 20 22 5b 4f 70 65 72 61 74 6f 72 20 3d  uts "[Operator =
9f50: 5d 20 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 3d  ] or [Operator =
9f60: 3d 5d 2e 0a 54 68 65 20 6e 6f 6e 2d 65 71 75 61  =]..The non-equa
9f70: 6c 73 20 6f 70 65 72 61 74 6f 72 20 63 61 6e 20  ls operator can 
9f80: 62 65 20 65 69 74 68 65 72 0a 5b 4f 70 65 72 61  be either.[Opera
9f90: 74 6f 72 20 21 3d 5d 20 6f 72 20 5b 4f 70 65 72  tor !=] or [Oper
9fa0: 61 74 6f 72 20 7b 26 6c 74 3b 26 67 74 3b 7d 5d  ator {&lt;&gt;}]
9fb0: 2e 0a 54 68 65 20 5b 4f 70 65 72 61 74 6f 72 20  ..The [Operator 
9fc0: 7c 7c 5d 20 6f 70 65 72 61 74 6f 72 20 69 73 20  ||] operator is 
9fd0: 5c 22 63 6f 6e 63 61 74 65 6e 61 74 65 5c 22 20  \"concatenate\" 
9fe0: 2d 20 69 74 20 6a 6f 69 6e 73 20 74 6f 67 65 74  - it joins toget
9ff0: 68 65 72 0a 74 68 65 20 74 77 6f 20 73 74 72 69  her.the two stri
a000: 6e 67 73 20 6f 66 20 69 74 73 20 6f 70 65 72 61  ngs of its opera
a010: 6e 64 73 2e 0a 54 68 65 20 6f 70 65 72 61 74 6f  nds..The operato
a020: 72 20 5b 4f 70 65 72 61 74 6f 72 20 25 5d 20 6f  r [Operator %] o
a030: 75 74 70 75 74 73 20 74 68 65 20 72 65 6d 61 69  utputs the remai
a040: 6e 64 65 72 20 6f 66 20 69 74 73 20 6c 65 66 74  nder of its left
a050: 20 0a 6f 70 65 72 61 6e 64 20 6d 6f 64 75 6c 6f   .operand modulo
a060: 20 69 74 73 20 72 69 67 68 74 20 6f 70 65 72 61   its right opera
a070: 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  nd.</p>..<p>The 
a080: 72 65 73 75 6c 74 20 6f 66 20 61 6e 79 20 62 69  result of any bi
a090: 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 69 73  nary operator is
a0a0: 20 61 20 6e 75 6d 65 72 69 63 20 76 61 6c 75 65   a numeric value
a0b0: 2c 20 65 78 63 65 70 74 0a 66 6f 72 20 74 68 65  , except.for the
a0c0: 20 5b 4f 70 65 72 61 74 6f 72 20 7c 7c 5d 20 63   [Operator ||] c
a0d0: 6f 6e 63 61 74 65 6e 61 74 69 6f 6e 20 6f 70 65  oncatenation ope
a0e0: 72 61 74 6f 72 20 77 68 69 63 68 20 67 69 76 65  rator which give
a0f0: 73 20 61 20 73 74 72 69 6e 67 0a 72 65 73 75 6c  s a string.resul
a100: 74 2e 3c 2f 70 3e 22 3c 2f 74 63 6c 3e 0a 0a 3c  t.</p>"</tcl>..<
a110: 61 20 6e 61 6d 65 3d 22 6c 69 74 65 72 61 6c 5f  a name="literal_
a120: 76 61 6c 75 65 22 3e 3c 2f 61 3e 0a 3c 70 3e 0a  value"></a>.<p>.
a130: 41 20 6c 69 74 65 72 61 6c 20 76 61 6c 75 65 20  A literal value 
a140: 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6e 75  is an integer nu
a150: 6d 62 65 72 20 6f 72 20 61 20 66 6c 6f 61 74 69  mber or a floati
a160: 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 2e  ng point number.
a170: 0a 53 63 69 65 6e 74 69 66 69 63 20 6e 6f 74 61  .Scientific nota
a180: 74 69 6f 6e 20 69 73 20 73 75 70 70 6f 72 74 65  tion is supporte
a190: 64 2e 20 20 54 68 65 20 22 2e 22 20 63 68 61 72  d.  The "." char
a1a0: 61 63 74 65 72 20 69 73 20 61 6c 77 61 79 73 20  acter is always 
a1b0: 75 73 65 64 0a 61 73 20 74 68 65 20 64 65 63 69  used.as the deci
a1c0: 6d 61 6c 20 70 6f 69 6e 74 20 65 76 65 6e 20 69  mal point even i
a1d0: 66 20 74 68 65 20 6c 6f 63 61 6c 65 20 73 65 74  f the locale set
a1e0: 74 69 6e 67 20 73 70 65 63 69 66 69 65 73 20 22  ting specifies "
a1f0: 2c 22 20 66 6f 72 0a 74 68 69 73 20 72 6f 6c 65  ," for.this role
a200: 20 2d 20 74 68 65 20 75 73 65 20 6f 66 20 22 2c   - the use of ",
a210: 22 20 66 6f 72 20 74 68 65 20 64 65 63 69 6d 61  " for the decima
a220: 6c 20 70 6f 69 6e 74 20 77 6f 75 6c 64 20 72 65  l point would re
a230: 73 75 6c 74 20 69 6e 0a 73 79 6e 74 61 63 74 69  sult in.syntacti
a240: 63 20 61 6d 62 69 67 75 69 74 79 2e 20 20 41 20  c ambiguity.  A 
a250: 73 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20  string constant 
a260: 69 73 20 66 6f 72 6d 65 64 20 62 79 20 65 6e 63  is formed by enc
a270: 6c 6f 73 69 6e 67 20 74 68 65 0a 73 74 72 69 6e  losing the.strin
a280: 67 20 69 6e 20 73 69 6e 67 6c 65 20 71 75 6f 74  g in single quot
a290: 65 73 20 28 27 29 2e 20 20 41 20 73 69 6e 67 6c  es (').  A singl
a2a0: 65 20 71 75 6f 74 65 20 77 69 74 68 69 6e 20 74  e quote within t
a2b0: 68 65 20 73 74 72 69 6e 67 20 63 61 6e 0a 62 65  he string can.be
a2c0: 20 65 6e 63 6f 64 65 64 20 62 79 20 70 75 74 74   encoded by putt
a2d0: 69 6e 67 20 74 77 6f 20 73 69 6e 67 6c 65 20 71  ing two single q
a2e0: 75 6f 74 65 73 20 69 6e 20 61 20 72 6f 77 20 2d  uotes in a row -
a2f0: 20 61 73 20 69 6e 20 50 61 73 63 61 6c 2e 0a 43   as in Pascal..C
a300: 2d 73 74 79 6c 65 20 65 73 63 61 70 65 73 20 75  -style escapes u
a310: 73 69 6e 67 20 74 68 65 20 62 61 63 6b 73 6c 61  sing the backsla
a320: 73 68 20 63 68 61 72 61 63 74 65 72 20 61 72 65  sh character are
a330: 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 62   not supported b
a340: 65 63 61 75 73 65 0a 74 68 65 79 20 61 72 65 20  ecause.they are 
a350: 6e 6f 74 20 73 74 61 6e 64 61 72 64 20 53 51 4c  not standard SQL
a360: 2e 0a 42 4c 4f 42 20 6c 69 74 65 72 61 6c 73 20  ..BLOB literals 
a370: 61 72 65 20 73 74 72 69 6e 67 20 6c 69 74 65 72  are string liter
a380: 61 6c 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 68  als containing h
a390: 65 78 61 64 65 63 69 6d 61 6c 20 64 61 74 61 20  exadecimal data 
a3a0: 61 6e 64 0a 70 72 65 63 65 64 65 64 20 62 79 20  and.preceded by 
a3b0: 61 20 73 69 6e 67 6c 65 20 22 78 22 20 6f 72 20  a single "x" or 
a3c0: 22 58 22 20 63 68 61 72 61 63 74 65 72 2e 20 20  "X" character.  
a3d0: 46 6f 72 20 65 78 61 6d 70 6c 65 3a 3c 2f 70 3e  For example:</p>
a3e0: 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70  ..<blockquote><p
a3f0: 72 65 3e 0a 58 27 35 33 35 31 34 43 36 39 37 34  re>.X'53514C6974
a400: 36 35 27 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63  65'.</pre></bloc
a410: 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 41 20 6c  kquote>..<p>.A l
a420: 69 74 65 72 61 6c 20 76 61 6c 75 65 20 63 61 6e  iteral value can
a430: 20 61 6c 73 6f 20 62 65 20 74 68 65 20 74 6f 6b   also be the tok
a440: 65 6e 20 22 4e 55 4c 4c 22 2e 0a 3c 2f 70 3e 0a  en "NULL"..</p>.
a450: 0a 3c 70 3e 0a 41 20 70 61 72 61 6d 65 74 65 72  .<p>.A parameter
a460: 20 73 70 65 63 69 66 69 65 73 20 61 20 70 6c 61   specifies a pla
a470: 63 65 68 6f 6c 64 65 72 20 69 6e 20 74 68 65 20  ceholder in the 
a480: 65 78 70 72 65 73 73 69 6f 6e 20 66 6f 72 20 61  expression for a
a490: 20 6c 69 74 65 72 61 6c 0a 76 61 6c 75 65 20 74   literal.value t
a4a0: 68 61 74 20 69 73 20 66 69 6c 6c 65 64 20 69 6e  hat is filled in
a4b0: 20 61 74 20 72 75 6e 74 69 6d 65 20 75 73 69 6e   at runtime usin
a4c0: 67 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f 62  g the.[sqlite3_b
a4d0: 69 6e 64 5f 62 6c 6f 62 28 29 20 7c 20 73 71 6c  ind_blob() | sql
a4e0: 69 74 65 33 5f 62 69 6e 64 28 29 5d 20 41 50 49  ite3_bind()] API
a4f0: 73 2e 0a 50 61 72 61 6d 65 74 65 72 73 20 63 61  s..Parameters ca
a500: 6e 20 74 61 6b 65 20 73 65 76 65 72 61 6c 20 66  n take several f
a510: 6f 72 6d 73 3a 0a 3c 2f 70 0a 0a 3c 62 6c 6f 63  orms:.</p..<bloc
a520: 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 3e 0a  kquote>.<table>.
a530: 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22  <tr>.<td align="
a540: 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74  right" valign="t
a550: 6f 70 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c 69 3e 4e  op"><b>?</b><i>N
a560: 4e 4e 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77  NN</i></td><td w
a570: 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a  idth="20"></td>.
a580: 3c 74 64 3e 41 20 71 75 65 73 74 69 6f 6e 20 6d  <td>A question m
a590: 61 72 6b 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  ark followed by 
a5a0: 61 20 6e 75 6d 62 65 72 20 3c 69 3e 4e 4e 4e 3c  a number <i>NNN<
a5b0: 2f 69 3e 20 68 6f 6c 64 73 20 61 20 73 70 6f 74  /i> holds a spot
a5c0: 20 66 6f 72 20 74 68 65 0a 4e 4e 4e 2d 74 68 20   for the.NNN-th 
a5d0: 70 61 72 61 6d 65 74 65 72 2e 20 20 4e 4e 4e 20  parameter.  NNN 
a5e0: 6d 75 73 74 20 62 65 20 62 65 74 77 65 65 6e 20  must be between 
a5f0: 31 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f 4d 41  1 and [SQLITE_MA
a600: 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45  X_VARIABLE_NUMBE
a610: 52 5d 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c  R].</td>.</tr>.<
a620: 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72  tr>.<td align="r
a630: 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f  ight" valign="to
a640: 70 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c 2f 74 64 3e  p"><b>?</b></td>
a650: 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c  <td width="20"><
a660: 2f 74 64 3e 0a 3c 74 64 3e 41 20 71 75 65 73 74  /td>.<td>A quest
a670: 69 6f 6e 20 6d 61 72 6b 20 74 68 61 74 20 69 73  ion mark that is
a680: 20 6e 6f 74 20 66 6f 6c 6c 6f 77 65 64 20 62 79   not followed by
a690: 20 61 20 6e 75 6d 62 65 72 20 68 6f 6c 64 73 20   a number holds 
a6a0: 61 20 73 70 6f 74 20 66 6f 72 0a 74 68 65 20 6e  a spot for.the n
a6b0: 65 78 74 20 75 6e 75 73 65 64 20 70 61 72 61 6d  ext unused param
a6c0: 65 74 65 72 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  eter.</td>.</tr>
a6d0: 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d  .<tr>.<td align=
a6e0: 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22  "right" valign="
a6f0: 74 6f 70 22 3e 3c 62 3e 3a 3c 2f 62 3e 3c 69 3e  top"><b>:</b><i>
a700: 41 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64  AAAA</i></td><td
a710: 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64   width="20"></td
a720: 3e 0a 3c 74 64 3e 41 20 63 6f 6c 6f 6e 20 66 6f  >.<td>A colon fo
a730: 6c 6c 6f 77 65 64 20 62 79 20 61 6e 20 69 64 65  llowed by an ide
a740: 6e 74 69 66 69 65 72 20 6e 61 6d 65 20 68 6f 6c  ntifier name hol
a750: 64 73 20 61 20 73 70 6f 74 20 66 6f 72 20 61 20  ds a spot for a 
a760: 6e 61 6d 65 64 0a 70 61 72 61 6d 65 74 65 72 20  named.parameter 
a770: 77 69 74 68 20 74 68 65 20 6e 61 6d 65 20 41 41  with the name AA
a780: 41 41 2e 20 20 4e 61 6d 65 64 20 70 61 72 61 6d  AA.  Named param
a790: 65 74 65 72 73 20 61 72 65 20 61 6c 73 6f 20 6e  eters are also n
a7a0: 75 6d 62 65 72 65 64 2e 0a 54 68 65 20 6e 75 6d  umbered..The num
a7b0: 62 65 72 20 61 73 73 69 67 6e 65 64 20 69 73 20  ber assigned is 
a7c0: 74 68 65 20 6e 65 78 74 20 75 6e 75 73 65 64 20  the next unused 
a7d0: 6e 75 6d 62 65 72 2e 20 20 54 6f 20 61 76 6f 69  number.  To avoi
a7e0: 64 20 63 6f 6e 66 75 73 69 6f 6e 2c 0a 69 74 20  d confusion,.it 
a7f0: 69 73 20 62 65 73 74 20 74 6f 20 61 76 6f 69 64  is best to avoid
a800: 20 6d 69 78 69 6e 67 20 6e 61 6d 65 64 20 61 6e   mixing named an
a810: 64 20 6e 75 6d 62 65 72 65 64 20 70 61 72 61 6d  d numbered param
a820: 65 74 65 72 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  eters.</td>.</tr
a830: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e  >.<tr>.<td align
a840: 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d  ="right" valign=
a850: 22 74 6f 70 22 3e 3c 62 3e 40 3c 2f 62 3e 3c 69  "top"><b>@</b><i
a860: 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74  >AAAA</i></td><t
a870: 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74  d width="20"></t
a880: 64 3e 0a 3c 74 64 3e 41 6e 20 22 61 74 22 20 73  d>.<td>An "at" s
a890: 69 67 6e 20 77 6f 72 6b 73 20 65 78 61 63 74 6c  ign works exactl
a8a0: 79 20 6c 69 6b 65 20 61 20 63 6f 6c 6f 6e 2e 3c  y like a colon.<
a8b0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a  /td>.</tr>.<tr>.
a8c0: 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  <td align="right
a8d0: 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c  " valign="top"><
a8e0: 62 3e 24 3c 2f 62 3e 3c 69 3e 41 41 41 41 3c 2f  b>$</b><i>AAAA</
a8f0: 69 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68  i></td><td width
a900: 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e  ="20"></td>.<td>
a910: 41 20 64 6f 6c 6c 61 72 2d 73 69 67 6e 20 66 6f  A dollar-sign fo
a920: 6c 6c 6f 77 65 64 20 62 79 20 61 6e 20 69 64 65  llowed by an ide
a930: 6e 74 69 66 69 65 72 20 6e 61 6d 65 20 61 6c 73  ntifier name als
a940: 6f 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66  o holds a spot f
a950: 6f 72 20 61 20 6e 61 6d 65 64 0a 70 61 72 61 6d  or a named.param
a960: 65 74 65 72 20 77 69 74 68 20 74 68 65 20 6e 61  eter with the na
a970: 6d 65 20 41 41 41 41 2e 20 20 54 68 65 20 69 64  me AAAA.  The id
a980: 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 20 69 6e  entifier name in
a990: 20 74 68 69 73 20 63 61 73 65 20 63 61 6e 20 69   this case can i
a9a0: 6e 63 6c 75 64 65 0a 6f 6e 65 20 6f 72 20 6d 6f  nclude.one or mo
a9b0: 72 65 20 6f 63 63 75 72 61 6e 63 65 73 20 6f 66  re occurances of
a9c0: 20 22 3a 3a 22 20 61 6e 64 20 61 20 73 75 66 66   "::" and a suff
a9d0: 69 78 20 65 6e 63 6c 6f 73 65 64 20 69 6e 20 22  ix enclosed in "
a9e0: 28 2e 2e 2e 29 22 20 63 6f 6e 74 61 69 6e 69 6e  (...)" containin
a9f0: 67 0a 61 6e 79 20 74 65 78 74 20 61 74 20 61 6c  g.any text at al
aa00: 6c 2e 20 20 54 68 69 73 20 73 79 6e 74 61 78 20  l.  This syntax 
aa10: 69 73 20 74 68 65 20 66 6f 72 6d 20 6f 66 20 61  is the form of a
aa20: 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65 20 69   variable name i
aa30: 6e 20 74 68 65 20 54 63 6c 0a 70 72 6f 67 72 61  n the Tcl.progra
aa40: 6d 6d 69 6e 67 20 6c 61 6e 67 75 61 67 65 2e 3c  mming language.<
aa50: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62  /td>.</tr>.</tab
aa60: 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  le>.</blockquote
aa70: 3e 0a 0a 3c 70 3e 50 61 72 61 6d 65 74 65 72 73  >..<p>Parameters
aa80: 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20 61 73   that are not as
aa90: 73 69 67 6e 65 64 20 76 61 6c 75 65 73 20 75 73  signed values us
aaa0: 69 6e 67 0a 5b 73 71 6c 69 74 65 33 5f 62 69 6e  ing.[sqlite3_bin
aab0: 64 5f 62 6c 6f 62 28 29 20 7c 20 73 71 6c 69 74  d_blob() | sqlit
aac0: 65 33 5f 62 69 6e 64 28 29 5d 20 61 72 65 20 74  e3_bind()] are t
aad0: 72 65 61 74 65 64 0a 61 73 20 4e 55 4c 4c 2e 3c  reated.as NULL.<
aae0: 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61  /p>..<tcl>hd_fra
aaf0: 67 6d 65 6e 74 20 6c 69 6b 65 20 4c 49 4b 45 20  gment like LIKE 
ab00: 45 53 43 41 50 45 3c 2f 74 63 6c 3e 0a 3c 70 3e  ESCAPE</tcl>.<p>
ab10: 54 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f  The LIKE operato
ab20: 72 20 64 6f 65 73 20 61 20 70 61 74 74 65 72 6e  r does a pattern
ab30: 20 6d 61 74 63 68 69 6e 67 20 63 6f 6d 70 61 72   matching compar
ab40: 69 73 6f 6e 2e 20 54 68 65 20 6f 70 65 72 61 6e  ison. The operan
ab50: 64 0a 74 6f 20 74 68 65 20 72 69 67 68 74 20 63  d.to the right c
ab60: 6f 6e 74 61 69 6e 73 20 74 68 65 20 70 61 74 74  ontains the patt
ab70: 65 72 6e 2c 20 74 68 65 20 6c 65 66 74 20 68 61  ern, the left ha
ab80: 6e 64 20 6f 70 65 72 61 6e 64 20 63 6f 6e 74 61  nd operand conta
ab90: 69 6e 73 20 74 68 65 0a 73 74 72 69 6e 67 20 74  ins the.string t
aba0: 6f 20 6d 61 74 63 68 20 61 67 61 69 6e 73 74 20  o match against 
abb0: 74 68 65 20 70 61 74 74 65 72 6e 2e 20 0a 0a 3c  the pattern. ..<
abc0: 74 63 6c 3e 68 64 5f 70 75 74 73 20 22 41 20 70  tcl>hd_puts "A p
abd0: 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c 20 5b 4f  ercent symbol [O
abe0: 70 65 72 61 74 6f 72 20 25 5d 20 69 6e 20 74 68  perator %] in th
abf0: 65 20 70 61 74 74 65 72 6e 20 6d 61 74 63 68 65  e pattern matche
ac00: 73 20 61 6e 79 0a 73 65 71 75 65 6e 63 65 20 6f  s any.sequence o
ac10: 66 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 63  f zero or more c
ac20: 68 61 72 61 63 74 65 72 73 20 69 6e 20 74 68 65  haracters in the
ac30: 20 73 74 72 69 6e 67 2e 20 20 41 6e 20 75 6e 64   string.  An und
ac40: 65 72 73 63 6f 72 65 0a 5b 4f 70 65 72 61 74 6f  erscore.[Operato
ac50: 72 20 5f 5d 20 69 6e 20 74 68 65 20 70 61 74 74  r _] in the patt
ac60: 65 72 6e 20 6d 61 74 63 68 65 73 20 61 6e 79 20  ern matches any 
ac70: 73 69 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72  single character
ac80: 20 69 6e 20 74 68 65 0a 73 74 72 69 6e 67 2e 20   in the.string. 
ac90: 20 41 6e 79 20 6f 74 68 65 72 20 63 68 61 72 61   Any other chara
aca0: 63 74 65 72 20 6d 61 74 63 68 65 73 20 69 74 73  cter matches its
acb0: 65 6c 66 20 6f 72 20 69 74 27 73 20 6c 6f 77 65  elf or it's lowe
acc0: 72 2f 75 70 70 65 72 20 63 61 73 65 0a 65 71 75  r/upper case.equ
acd0: 69 76 61 6c 65 6e 74 20 28 69 2e 65 2e 20 63 61  ivalent (i.e. ca
ace0: 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 6d  se-insensitive m
acf0: 61 74 63 68 69 6e 67 29 2e 20 20 28 41 20 62 75  atching).  (A bu
ad00: 67 3a 20 53 51 4c 69 74 65 20 6f 6e 6c 79 0a 75  g: SQLite only.u
ad10: 6e 64 65 72 73 74 61 6e 64 73 20 75 70 70 65 72  nderstands upper
ad20: 2f 6c 6f 77 65 72 20 63 61 73 65 20 66 6f 72 20  /lower case for 
ad30: 37 2d 62 69 74 20 4c 61 74 69 6e 20 63 68 61 72  7-bit Latin char
ad40: 61 63 74 65 72 73 2e 20 20 48 65 6e 63 65 20 74  acters.  Hence t
ad50: 68 65 0a 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72  he.LIKE operator
ad60: 20 69 73 20 63 61 73 65 20 73 65 6e 73 69 74 69   is case sensiti
ad70: 76 65 20 66 6f 72 20 38 2d 62 69 74 20 69 73 6f  ve for 8-bit iso
ad80: 38 38 35 39 20 63 68 61 72 61 63 74 65 72 73 20  8859 characters 
ad90: 6f 72 20 55 54 46 2d 38 0a 63 68 61 72 61 63 74  or UTF-8.charact
ada0: 65 72 73 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  ers.  For exampl
adb0: 65 2c 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  e, the expressio
adc0: 6e 20 3c 62 3e 27 61 27 26 6e 62 73 70 3b 4c 49  n <b>'a'&nbsp;LI
add0: 4b 45 26 6e 62 73 70 3b 27 41 27 3c 2f 62 3e 0a  KE&nbsp;'A'</b>.
ade0: 69 73 20 54 52 55 45 20 62 75 74 20 3c 62 3e 27  is TRUE but <b>'
adf0: 26 61 65 6c 69 67 3b 27 26 6e 62 73 70 3b 4c 49  &aelig;'&nbsp;LI
ae00: 4b 45 26 6e 62 73 70 3b 27 26 41 45 6c 69 67 3b  KE&nbsp;'&AElig;
ae10: 27 3c 2f 62 3e 20 69 73 20 46 41 4c 53 45 2e 29  '</b> is FALSE.)
ae20: 2e 3c 2f 70 3e 22 3c 2f 74 63 6c 3e 0a 0a 3c 70  .</p>"</tcl>..<p
ae30: 3e 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c  >If the optional
ae40: 20 45 53 43 41 50 45 20 63 6c 61 75 73 65 20 69   ESCAPE clause i
ae50: 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20  s present, then 
ae60: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 0a 66  the expression.f
ae70: 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20 45 53 43  ollowing the ESC
ae80: 41 50 45 20 6b 65 79 77 6f 72 64 20 6d 75 73 74  APE keyword must
ae90: 20 65 76 61 6c 75 61 74 65 20 74 6f 20 61 20 73   evaluate to a s
aea0: 74 72 69 6e 67 20 63 6f 6e 73 69 73 74 69 6e 67  tring consisting
aeb0: 20 6f 66 0a 61 20 73 69 6e 67 6c 65 20 63 68 61   of.a single cha
aec0: 72 61 63 74 65 72 2e 20 54 68 69 73 20 63 68 61  racter. This cha
aed0: 72 61 63 74 65 72 20 6d 61 79 20 62 65 20 75 73  racter may be us
aee0: 65 64 20 69 6e 20 74 68 65 20 4c 49 4b 45 20 70  ed in the LIKE p
aef0: 61 74 74 65 72 6e 0a 74 6f 20 69 6e 63 6c 75 64  attern.to includ
af00: 65 20 6c 69 74 65 72 61 6c 20 70 65 72 63 65 6e  e literal percen
af10: 74 20 6f 72 20 75 6e 64 65 72 73 63 6f 72 65 20  t or underscore 
af20: 63 68 61 72 61 63 74 65 72 73 2e 20 54 68 65 20  characters. The 
af30: 65 73 63 61 70 65 0a 63 68 61 72 61 63 74 65 72  escape.character
af40: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 70   followed by a p
af50: 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c 2c 20 75  ercent symbol, u
af60: 6e 64 65 72 73 63 6f 72 65 20 6f 72 20 69 74 73  nderscore or its
af70: 65 6c 66 20 6d 61 74 63 68 65 73 20 61 0a 6c 69  elf matches a.li
af80: 74 65 72 61 6c 20 70 65 72 63 65 6e 74 20 73 79  teral percent sy
af90: 6d 62 6f 6c 2c 20 75 6e 64 65 72 73 63 6f 72 65  mbol, underscore
afa0: 20 6f 72 20 65 73 63 61 70 65 20 63 68 61 72 61   or escape chara
afb0: 63 74 65 72 20 69 6e 20 74 68 65 20 73 74 72 69  cter in the stri
afc0: 6e 67 2c 0a 72 65 73 70 65 63 74 69 76 65 6c 79  ng,.respectively
afd0: 2e 20 54 68 65 20 69 6e 66 69 78 20 4c 49 4b 45  . The infix LIKE
afe0: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70   operator is imp
aff0: 6c 65 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c  lemented by call
b000: 69 6e 67 20 74 68 65 0a 75 73 65 72 20 66 75 6e  ing the.user fun
b010: 63 74 69 6f 6e 20 3c 61 20 68 72 65 66 3d 22 23  ction <a href="#
b020: 6c 69 6b 65 46 75 6e 63 22 3e 20 6c 69 6b 65 28  likeFunc"> like(
b030: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
b040: 3e 29 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 54 68 65  >)</a>.</p>..The
b050: 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 69   LIKE operator i
b060: 73 20 6e 6f 74 20 63 61 73 65 20 73 65 6e 73 69  s not case sensi
b070: 74 69 76 65 20 61 6e 64 20 77 69 6c 6c 20 6d 61  tive and will ma
b080: 74 63 68 20 75 70 70 65 72 20 63 61 73 65 0a 63  tch upper case.c
b090: 68 61 72 61 63 74 65 72 73 20 6f 6e 20 6f 6e 65  haracters on one
b0a0: 20 73 69 64 65 20 61 67 61 69 6e 73 74 20 6c 6f   side against lo
b0b0: 77 65 72 20 63 61 73 65 20 63 68 61 72 61 63 74  wer case charact
b0c0: 65 72 73 20 6f 6e 20 74 68 65 20 6f 74 68 65 72  ers on the other
b0d0: 2e 20 20 0a 28 41 20 62 75 67 3a 20 53 51 4c 69  .  .(A bug: SQLi
b0e0: 74 65 20 6f 6e 6c 79 20 75 6e 64 65 72 73 74 61  te only understa
b0f0: 6e 64 73 20 75 70 70 65 72 2f 6c 6f 77 65 72 20  nds upper/lower 
b100: 63 61 73 65 20 66 6f 72 20 37 2d 62 69 74 20 4c  case for 7-bit L
b110: 61 74 69 6e 0a 63 68 61 72 61 63 74 65 72 73 2e  atin.characters.
b120: 20 20 48 65 6e 63 65 20 74 68 65 20 4c 49 4b 45    Hence the LIKE
b130: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 63 61 73   operator is cas
b140: 65 20 73 65 6e 73 69 74 69 76 65 20 66 6f 72 20  e sensitive for 
b150: 38 2d 62 69 74 0a 69 73 6f 38 38 35 39 20 63 68  8-bit.iso8859 ch
b160: 61 72 61 63 74 65 72 73 20 6f 72 20 55 54 46 2d  aracters or UTF-
b170: 38 20 63 68 61 72 61 63 74 65 72 73 2e 20 20 46  8 characters.  F
b180: 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20  or example, the 
b190: 65 78 70 72 65 73 73 69 6f 6e 0a 3c 62 3e 27 61  expression.<b>'a
b1a0: 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70  '&nbsp;LIKE&nbsp
b1b0: 3b 27 41 27 3c 2f 62 3e 20 69 73 20 54 52 55 45  ;'A'</b> is TRUE
b1c0: 20 62 75 74 0a 3c 62 3e 27 26 61 65 6c 69 67 3b   but.<b>'&aelig;
b1d0: 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70  '&nbsp;LIKE&nbsp
b1e0: 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62 3e 20 69  ;'&AElig;'</b> i
b1f0: 73 20 46 41 4c 53 45 2e 29 2e 3c 2f 70 3e 0a 0a  s FALSE.).</p>..
b200: 3c 70 3e 54 68 65 20 69 6e 66 69 78 20 4c 49 4b  <p>The infix LIK
b210: 45 0a 6f 70 65 72 61 74 6f 72 20 69 73 20 69 6d  E.operator is im
b220: 70 6c 65 6d 65 6e 74 65 64 20 62 79 20 63 61 6c  plemented by cal
b230: 6c 69 6e 67 20 74 68 65 20 75 73 65 72 20 66 75  ling the user fu
b240: 6e 63 74 69 6f 6e 20 3c 61 20 68 72 65 66 3d 22  nction <a href="
b250: 23 6c 69 6b 65 46 75 6e 63 22 3e 0a 6c 69 6b 65  #likeFunc">.like
b260: 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f  (<i>X</i>,<i>Y</
b270: 69 3e 29 3c 2f 61 3e 2e 20 20 49 66 20 61 6e 20  i>)</a>.  If an 
b280: 45 53 43 41 50 45 20 63 6c 61 75 73 65 20 69 73  ESCAPE clause is
b290: 20 70 72 65 73 65 6e 74 2c 20 69 74 20 61 64 64   present, it add
b2a0: 73 0a 61 20 74 68 69 72 64 20 70 61 72 61 6d 65  s.a third parame
b2b0: 74 65 72 20 74 6f 20 74 68 65 20 66 75 6e 63 74  ter to the funct
b2c0: 69 6f 6e 20 63 61 6c 6c 2e 20 49 66 20 74 68 65  ion call. If the
b2d0: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f   functionality o
b2e0: 66 20 4c 49 4b 45 20 63 61 6e 20 62 65 0a 6f 76  f LIKE can be.ov
b2f0: 65 72 72 69 64 64 65 6e 20 62 79 20 64 65 66 69  erridden by defi
b300: 6e 69 6e 67 20 61 6e 20 61 6c 74 65 72 6e 61 74  ning an alternat
b310: 69 76 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ive implementati
b320: 6f 6e 20 6f 66 20 74 68 65 0a 6c 69 6b 65 28 29  on of the.like()
b330: 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f   SQL function.</
b340: 70 3e 0a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64  p>.</p>..<tcl>hd
b350: 5f 66 72 61 67 6d 65 6e 74 20 67 6c 6f 62 20 47  _fragment glob G
b360: 4c 4f 42 3c 2f 74 63 6c 3e 0a 3c 70 3e 54 68 65  LOB</tcl>.<p>The
b370: 20 47 4c 4f 42 20 6f 70 65 72 61 74 6f 72 20 69   GLOB operator i
b380: 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 4c 49 4b  s similar to LIK
b390: 45 20 62 75 74 20 75 73 65 73 20 74 68 65 20 55  E but uses the U
b3a0: 6e 69 78 0a 66 69 6c 65 20 67 6c 6f 62 62 69 6e  nix.file globbin
b3b0: 67 20 73 79 6e 74 61 78 20 66 6f 72 20 69 74 73  g syntax for its
b3c0: 20 77 69 6c 64 63 61 72 64 73 2e 20 20 41 6c 73   wildcards.  Als
b3d0: 6f 2c 20 47 4c 4f 42 20 69 73 20 63 61 73 65 0a  o, GLOB is case.
b3e0: 73 65 6e 73 69 74 69 76 65 2c 20 75 6e 6c 69 6b  sensitive, unlik
b3f0: 65 20 4c 49 4b 45 2e 20 20 42 6f 74 68 20 47 4c  e LIKE.  Both GL
b400: 4f 42 20 61 6e 64 20 4c 49 4b 45 20 6d 61 79 20  OB and LIKE may 
b410: 62 65 20 70 72 65 63 65 64 65 64 20 62 79 0a 74  be preceded by.t
b420: 68 65 20 4e 4f 54 20 6b 65 79 77 6f 72 64 20 74  he NOT keyword t
b430: 6f 20 69 6e 76 65 72 74 20 74 68 65 20 73 65 6e  o invert the sen
b440: 73 65 20 6f 66 20 74 68 65 20 74 65 73 74 2e 20  se of the test. 
b450: 20 54 68 65 20 69 6e 66 69 78 20 47 4c 4f 42 20   The infix GLOB 
b460: 0a 6f 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70  .operator is imp
b470: 6c 65 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c  lemented by call
b480: 69 6e 67 20 74 68 65 20 66 75 6e 63 74 69 6f 6e  ing the function
b490: 0a 5b 47 4c 4f 42 20 7c 20 67 6c 6f 62 28 3c 69  .[GLOB | glob(<i
b4a0: 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29  >X</i>,<i>Y</i>)
b4b0: 5d 20 61 6e 64 20 63 61 6e 20 62 65 20 6d 6f 64  ] and can be mod
b4c0: 69 66 69 65 64 20 62 79 20 6f 76 65 72 72 69 64  ified by overrid
b4d0: 69 6e 67 0a 74 68 61 74 20 66 75 6e 63 74 69 6f  ing.that functio
b4e0: 6e 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f  n.</p>..<tcl>hd_
b4f0: 66 72 61 67 6d 65 6e 74 20 72 65 67 65 78 70 20  fragment regexp 
b500: 52 45 47 45 58 50 3c 2f 74 63 6c 3e 0a 3c 70 3e  REGEXP</tcl>.<p>
b510: 54 68 65 20 52 45 47 45 58 50 20 6f 70 65 72 61  The REGEXP opera
b520: 74 6f 72 20 69 73 20 61 20 73 70 65 63 69 61 6c  tor is a special
b530: 20 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20   syntax for the 
b540: 72 65 67 65 78 70 28 29 0a 75 73 65 72 20 66 75  regexp().user fu
b550: 6e 63 74 69 6f 6e 2e 20 20 4e 6f 20 72 65 67 65  nction.  No rege
b560: 78 70 28 29 20 75 73 65 72 20 66 75 6e 63 74 69  xp() user functi
b570: 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 20 62 79  on is defined by
b580: 20 64 65 66 61 75 6c 74 0a 61 6e 64 20 73 6f 20   default.and so 
b590: 75 73 65 20 6f 66 20 74 68 65 20 52 45 47 45 58  use of the REGEX
b5a0: 50 20 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20  P operator will 
b5b0: 6e 6f 72 6d 61 6c 6c 79 20 72 65 73 75 6c 74 20  normally result 
b5c0: 69 6e 20 61 6e 0a 65 72 72 6f 72 20 6d 65 73 73  in an.error mess
b5d0: 61 67 65 2e 20 20 49 66 20 61 20 75 73 65 72 2d  age.  If a user-
b5e0: 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e  defined function
b5f0: 20 6e 61 6d 65 64 20 22 72 65 67 65 78 70 22 0a   named "regexp".
b600: 69 73 20 61 64 64 65 64 20 61 74 20 72 75 6e 2d  is added at run-
b610: 74 69 6d 65 2c 20 74 68 61 74 20 66 75 6e 63 74  time, that funct
b620: 69 6f 6e 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c  ion will be call
b630: 65 64 20 69 6e 20 6f 72 64 65 72 0a 74 6f 20 69  ed in order.to i
b640: 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 52 45 47  mplement the REG
b650: 45 58 50 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70  EXP operator.</p
b660: 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d  >..<tcl>hd_fragm
b670: 65 6e 74 20 6d 61 74 63 68 20 4d 41 54 43 48 3c  ent match MATCH<
b680: 2f 74 63 6c 3e 0a 3c 70 3e 54 68 65 20 4d 41 54  /tcl>.<p>The MAT
b690: 43 48 20 6f 70 65 72 61 74 6f 72 20 69 73 20 61  CH operator is a
b6a0: 20 73 70 65 63 69 61 6c 20 73 79 6e 74 61 78 20   special syntax 
b6b0: 66 6f 72 20 74 68 65 20 6d 61 74 63 68 28 29 0a  for the match().
b6c0: 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20 20  user function.  
b6d0: 54 68 65 20 64 65 66 61 75 6c 74 20 6d 61 74 63  The default matc
b6e0: 68 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 6d 70  h() function imp
b6f0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 72 61 69 73  lementation.rais
b700: 65 73 20 61 6e 64 20 65 78 63 65 70 74 69 6f 6e  es and exception
b710: 20 61 6e 64 20 69 73 20 6e 6f 74 20 72 65 61 6c   and is not real
b720: 6c 79 20 75 73 65 66 75 6c 20 66 6f 72 20 61 6e  ly useful for an
b730: 79 74 68 69 6e 67 2e 0a 42 75 74 20 65 78 74 65  ything..But exte
b740: 6e 73 69 6f 6e 73 20 63 61 6e 20 6f 76 65 72 72  nsions can overr
b750: 69 64 65 20 74 68 65 20 6d 61 74 63 68 28 29 20  ide the match() 
b760: 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 6d 6f  function with mo
b770: 72 65 0a 68 65 6c 70 66 75 6c 20 6c 6f 67 69 63  re.helpful logic
b780: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6c 75  .</p>..<p>A colu
b790: 6d 6e 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 61  mn name can be a
b7a0: 6e 79 20 6f 66 20 74 68 65 20 6e 61 6d 65 73 20  ny of the names 
b7b0: 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b  defined in the [
b7c0: 43 52 45 41 54 45 20 54 41 42 4c 45 5d 0a 73 74  CREATE TABLE].st
b7d0: 61 74 65 6d 65 6e 74 20 6f 72 20 6f 6e 65 20 6f  atement or one o
b7e0: 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  f the following 
b7f0: 73 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69  special identifi
b800: 65 72 73 3a 20 22 3c 62 3e 52 4f 57 49 44 3c 2f  ers: "<b>ROWID</
b810: 62 3e 22 2c 0a 22 3c 62 3e 4f 49 44 3c 2f 62 3e  b>",."<b>OID</b>
b820: 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44  ", or "<b>_ROWID
b830: 5f 3c 2f 62 3e 22 2e 0a 54 68 65 73 65 20 73 70  _</b>"..These sp
b840: 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72  ecial identifier
b850: 73 20 61 6c 6c 20 64 65 73 63 72 69 62 65 20 74  s all describe t
b860: 68 65 0a 75 6e 69 71 75 65 20 69 6e 74 65 67 65  he.unique intege
b870: 72 20 6b 65 79 20 28 74 68 65 20 22 72 6f 77 20  r key (the "row 
b880: 6b 65 79 22 29 20 61 73 73 6f 63 69 61 74 65 64  key") associated
b890: 20 77 69 74 68 20 65 76 65 72 79 20 0a 72 6f 77   with every .row
b8a0: 20 6f 66 20 65 76 65 72 79 20 74 61 62 6c 65 2e   of every table.
b8b0: 0a 54 68 65 20 73 70 65 63 69 61 6c 20 69 64 65  .The special ide
b8c0: 6e 74 69 66 69 65 72 73 20 6f 6e 6c 79 20 72 65  ntifiers only re
b8d0: 66 65 72 20 74 6f 20 74 68 65 20 72 6f 77 20 6b  fer to the row k
b8e0: 65 79 20 69 66 20 74 68 65 20 5b 43 52 45 41 54  ey if the [CREAT
b8f0: 45 20 54 41 42 4c 45 5d 0a 73 74 61 74 65 6d 65  E TABLE].stateme
b900: 6e 74 20 64 6f 65 73 20 6e 6f 74 20 64 65 66 69  nt does not defi
b910: 6e 65 20 61 20 72 65 61 6c 20 63 6f 6c 75 6d 6e  ne a real column
b920: 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e   with the same n
b930: 61 6d 65 2e 20 20 52 6f 77 20 6b 65 79 73 0a 61  ame.  Row keys.a
b940: 63 74 20 6c 69 6b 65 20 72 65 61 64 2d 6f 6e 6c  ct like read-onl
b950: 79 20 63 6f 6c 75 6d 6e 73 2e 20 20 41 20 72 6f  y columns.  A ro
b960: 77 20 6b 65 79 20 63 61 6e 20 62 65 20 75 73 65  w key can be use
b970: 64 20 61 6e 79 77 68 65 72 65 20 61 20 72 65 67  d anywhere a reg
b980: 75 6c 61 72 0a 63 6f 6c 75 6d 6e 20 63 61 6e 20  ular.column can 
b990: 62 65 20 75 73 65 64 2c 20 65 78 63 65 70 74 20  be used, except 
b9a0: 74 68 61 74 20 79 6f 75 20 63 61 6e 6e 6f 74 20  that you cannot 
b9b0: 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c 75 65  change the value
b9c0: 0a 6f 66 20 61 20 72 6f 77 20 6b 65 79 20 69 6e  .of a row key in
b9d0: 20 61 6e 20 5b 55 50 44 41 54 45 5d 20 6f 72 20   an [UPDATE] or 
b9e0: 5b 49 4e 53 45 52 54 5d 20 73 74 61 74 65 6d 65  [INSERT] stateme
b9f0: 6e 74 2e 0a 22 53 45 4c 45 43 54 20 2a 20 2e 2e  nt.."SELECT * ..
ba00: 2e 22 20 64 6f 65 73 20 6e 6f 74 20 72 65 74 75  ." does not retu
ba10: 72 6e 20 74 68 65 20 72 6f 77 20 6b 65 79 2e 3c  rn the row key.<
ba20: 2f 70 3e 0a 0a 3c 70 3e 5b 53 45 4c 45 43 54 5d  /p>..<p>[SELECT]
ba30: 20 73 74 61 74 65 6d 65 6e 74 73 20 63 61 6e 20   statements can 
ba40: 61 70 70 65 61 72 20 69 6e 20 65 78 70 72 65 73  appear in expres
ba50: 73 69 6f 6e 73 20 61 73 20 65 69 74 68 65 72 20  sions as either 
ba60: 74 68 65 0a 72 69 67 68 74 2d 68 61 6e 64 20 6f  the.right-hand o
ba70: 70 65 72 61 6e 64 20 6f 66 20 74 68 65 20 49 4e  perand of the IN
ba80: 20 6f 70 65 72 61 74 6f 72 2c 20 61 73 20 61 20   operator, as a 
ba90: 73 63 61 6c 61 72 20 71 75 61 6e 74 69 74 79 2c  scalar quantity,
baa0: 20 6f 72 0a 61 73 20 74 68 65 20 6f 70 65 72 61   or.as the opera
bab0: 6e 64 20 6f 66 20 61 6e 20 45 58 49 53 54 53 20  nd of an EXISTS 
bac0: 6f 70 65 72 61 74 6f 72 2e 0a 41 73 20 61 20 73  operator..As a s
bad0: 63 61 6c 61 72 20 71 75 61 6e 74 69 74 79 20 6f  calar quantity o
bae0: 72 20 74 68 65 20 6f 70 65 72 61 6e 64 20 6f 66  r the operand of
baf0: 20 61 6e 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c   an IN operator,
bb00: 0a 74 68 65 20 53 45 4c 45 43 54 20 73 68 6f 75  .the SELECT shou
bb10: 6c 64 20 68 61 76 65 20 6f 6e 6c 79 20 61 20 73  ld have only a s
bb20: 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 20 69 6e 20  ingle column in 
bb30: 69 74 73 0a 72 65 73 75 6c 74 2e 20 20 43 6f 6d  its.result.  Com
bb40: 70 6f 75 6e 64 20 53 45 4c 45 43 54 73 20 28 63  pound SELECTs (c
bb50: 6f 6e 6e 65 63 74 65 64 20 77 69 74 68 20 6b 65  onnected with ke
bb60: 79 77 6f 72 64 73 20 6c 69 6b 65 20 55 4e 49 4f  ywords like UNIO
bb70: 4e 20 6f 72 0a 45 58 43 45 50 54 29 20 61 72 65  N or.EXCEPT) are
bb80: 20 61 6c 6c 6f 77 65 64 2e 0a 57 69 74 68 20 74   allowed..With t
bb90: 68 65 20 45 58 49 53 54 53 20 6f 70 65 72 61 74  he EXISTS operat
bba0: 6f 72 2c 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20  or, the columns 
bbb0: 69 6e 20 74 68 65 20 72 65 73 75 6c 74 20 73 65  in the result se
bbc0: 74 20 6f 66 20 74 68 65 20 5b 53 45 4c 45 43 54  t of the [SELECT
bbd0: 5d 20 61 72 65 0a 69 67 6e 6f 72 65 64 20 61 6e  ] are.ignored an
bbe0: 64 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  d the expression
bbf0: 20 72 65 74 75 72 6e 73 20 54 52 55 45 20 69 66   returns TRUE if
bc00: 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77   one or more row
bc10: 73 20 65 78 69 73 74 0a 61 6e 64 20 46 41 4c 53  s exist.and FALS
bc20: 45 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20  E if the result 
bc30: 73 65 74 20 69 73 20 65 6d 70 74 79 2e 0a 49 66  set is empty..If
bc40: 20 6e 6f 20 74 65 72 6d 73 20 69 6e 20 74 68 65   no terms in the
bc50: 20 5b 53 45 4c 45 43 54 5d 20 65 78 70 72 65 73   [SELECT] expres
bc60: 73 69 6f 6e 20 72 65 66 65 72 20 74 6f 20 76 61  sion refer to va
bc70: 6c 75 65 20 69 6e 20 74 68 65 20 63 6f 6e 74 61  lue in the conta
bc80: 69 6e 69 6e 67 0a 71 75 65 72 79 2c 20 74 68 65  ining.query, the
bc90: 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  n the expression
bca0: 20 69 73 20 65 76 61 6c 75 61 74 65 64 20 6f 6e   is evaluated on
bcb0: 63 65 20 70 72 69 6f 72 20 74 6f 20 61 6e 79 20  ce prior to any 
bcc0: 6f 74 68 65 72 0a 70 72 6f 63 65 73 73 69 6e 67  other.processing
bcd0: 20 61 6e 64 20 74 68 65 20 72 65 73 75 6c 74 20   and the result 
bce0: 69 73 20 72 65 75 73 65 64 20 61 73 20 6e 65 63  is reused as nec
bcf0: 65 73 73 61 72 79 2e 20 20 49 66 20 74 68 65 20  essary.  If the 
bd00: 5b 53 45 4c 45 43 54 5d 20 65 78 70 72 65 73 73  [SELECT] express
bd10: 69 6f 6e 0a 64 6f 65 73 20 63 6f 6e 74 61 69 6e  ion.does contain
bd20: 20 76 61 72 69 61 62 6c 65 73 20 66 72 6f 6d 20   variables from 
bd30: 74 68 65 20 6f 75 74 65 72 20 71 75 65 72 79 2c  the outer query,
bd40: 20 74 68 65 6e 20 74 68 65 20 5b 53 45 4c 45 43   then the [SELEC
bd50: 54 5d 20 69 73 20 72 65 65 76 61 6c 75 61 74 65  T] is reevaluate
bd60: 64 0a 65 76 65 72 79 20 74 69 6d 65 20 69 74 20  d.every time it 
bd70: 69 73 20 6e 65 65 64 65 64 2e 3c 2f 70 3e 0a 0a  is needed.</p>..
bd80: 3c 70 3e 57 68 65 6e 20 61 20 53 45 4c 45 43 54  <p>When a SELECT
bd90: 20 69 73 20 74 68 65 20 72 69 67 68 74 20 6f 70   is the right op
bda0: 65 72 61 6e 64 20 6f 66 20 74 68 65 20 49 4e 20  erand of the IN 
bdb0: 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 20 49 4e  operator, the IN
bdc0: 0a 6f 70 65 72 61 74 6f 72 20 72 65 74 75 72 6e  .operator return
bdd0: 73 20 54 52 55 45 20 69 66 20 74 68 65 20 72 65  s TRUE if the re
bde0: 73 75 6c 74 20 6f 66 20 74 68 65 20 6c 65 66 74  sult of the left
bdf0: 20 6f 70 65 72 61 6e 64 20 69 73 20 61 6e 79 20   operand is any 
be00: 6f 66 0a 74 68 65 20 76 61 6c 75 65 73 20 67 65  of.the values ge
be10: 6e 65 72 61 74 65 64 20 62 79 20 74 68 65 20 73  nerated by the s
be20: 65 6c 65 63 74 2e 20 20 54 68 65 20 49 4e 20 6f  elect.  The IN o
be30: 70 65 72 61 74 6f 72 20 6d 61 79 20 62 65 20 70  perator may be p
be40: 72 65 63 65 64 65 64 0a 62 79 20 74 68 65 20 4e  receded.by the N
be50: 4f 54 20 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e  OT keyword to in
be60: 76 65 72 74 20 74 68 65 20 73 65 6e 73 65 20 6f  vert the sense o
be70: 66 20 74 68 65 20 74 65 73 74 2e 3c 2f 70 3e 0a  f the test.</p>.
be80: 0a 3c 70 3e 57 68 65 6e 20 61 20 53 45 4c 45 43  .<p>When a SELEC
be90: 54 20 61 70 70 65 61 72 73 20 77 69 74 68 69 6e  T appears within
bea0: 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 62   an expression b
beb0: 75 74 20 69 73 20 6e 6f 74 20 74 68 65 20 72 69  ut is not the ri
bec0: 67 68 74 0a 6f 70 65 72 61 6e 64 20 6f 66 20 61  ght.operand of a
bed0: 6e 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c 20 74  n IN operator, t
bee0: 68 65 6e 20 74 68 65 20 66 69 72 73 74 20 72 6f  hen the first ro
bef0: 77 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20  w of the result 
bf00: 6f 66 20 74 68 65 0a 53 45 4c 45 43 54 20 62 65  of the.SELECT be
bf10: 63 6f 6d 65 73 20 74 68 65 20 76 61 6c 75 65 20  comes the value 
bf20: 75 73 65 64 20 69 6e 20 74 68 65 20 65 78 70 72  used in the expr
bf30: 65 73 73 69 6f 6e 2e 20 20 49 66 20 74 68 65 20  ession.  If the 
bf40: 53 45 4c 45 43 54 20 79 69 65 6c 64 73 0a 6d 6f  SELECT yields.mo
bf50: 72 65 20 74 68 61 6e 20 6f 6e 65 20 72 65 73 75  re than one resu
bf60: 6c 74 20 72 6f 77 2c 20 61 6c 6c 20 72 6f 77 73  lt row, all rows
bf70: 20 61 66 74 65 72 20 74 68 65 20 66 69 72 73 74   after the first
bf80: 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 20 20 49   are ignored.  I
bf90: 66 0a 74 68 65 20 53 45 4c 45 43 54 20 79 69 65  f.the SELECT yie
bfa0: 6c 64 73 20 6e 6f 20 72 6f 77 73 2c 20 74 68 65  lds no rows, the
bfb0: 6e 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74  n the value of t
bfc0: 68 65 20 53 45 4c 45 43 54 20 69 73 20 4e 55 4c  he SELECT is NUL
bfd0: 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 43 41 53  L.</p>..<p>A CAS
bfe0: 54 20 65 78 70 72 65 73 73 69 6f 6e 20 63 68 61  T expression cha
bff0: 6e 67 65 73 20 74 68 65 20 64 61 74 61 74 79 70  nges the datatyp
c000: 65 20 6f 66 20 74 68 65 20 3c 65 78 70 72 3e 20  e of the <expr> 
c010: 69 6e 74 6f 20 74 68 65 0a 74 79 70 65 20 73 70  into the.type sp
c020: 65 63 69 66 69 65 64 20 62 79 20 26 6c 74 3b 74  ecified by &lt;t
c030: 79 70 65 26 67 74 3b 2e 20 0a 26 6c 74 3b 74 79  ype&gt;. .&lt;ty
c040: 70 65 26 67 74 3b 20 63 61 6e 20 62 65 20 61 6e  pe&gt; can be an
c050: 79 20 6e 6f 6e 2d 65 6d 70 74 79 20 74 79 70 65  y non-empty type
c060: 20 6e 61 6d 65 20 74 68 61 74 20 69 73 20 76 61   name that is va
c070: 6c 69 64 0a 66 6f 72 20 74 68 65 20 74 79 70 65  lid.for the type
c080: 20 69 6e 20 61 20 63 6f 6c 75 6d 6e 20 64 65 66   in a column def
c090: 69 6e 69 74 69 6f 6e 20 6f 66 20 61 20 5b 43 52  inition of a [CR
c0a0: 45 41 54 45 20 54 41 42 4c 45 5d 20 73 74 61 74  EATE TABLE] stat
c0b0: 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42  ement.</p>..<p>B
c0c0: 6f 74 68 20 73 69 6d 70 6c 65 20 61 6e 64 20 61  oth simple and a
c0d0: 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
c0e0: 6e 73 20 61 72 65 20 73 75 70 70 6f 72 74 65 64  ns are supported
c0f0: 2e 20 20 41 20 73 69 6d 70 6c 65 0a 66 75 6e 63  .  A simple.func
c100: 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64  tion can be used
c110: 20 69 6e 20 61 6e 79 20 65 78 70 72 65 73 73 69   in any expressi
c120: 6f 6e 2e 20 20 53 69 6d 70 6c 65 20 66 75 6e 63  on.  Simple func
c130: 74 69 6f 6e 73 20 72 65 74 75 72 6e 0a 61 20 72  tions return.a r
c140: 65 73 75 6c 74 20 69 6d 6d 65 64 69 61 74 65 6c  esult immediatel
c150: 79 20 62 61 73 65 64 20 6f 6e 20 74 68 65 69 72  y based on their
c160: 20 69 6e 70 75 74 73 2e 20 20 41 67 67 72 65 67   inputs.  Aggreg
c170: 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 0a 6d 61  ate functions.ma
c180: 79 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69  y only be used i
c190: 6e 20 61 20 53 45 4c 45 43 54 20 73 74 61 74 65  n a SELECT state
c1a0: 6d 65 6e 74 2e 20 20 41 67 67 72 65 67 61 74 65  ment.  Aggregate
c1b0: 20 66 75 6e 63 74 69 6f 6e 73 20 63 6f 6d 70 75   functions compu
c1c0: 74 65 0a 74 68 65 69 72 20 72 65 73 75 6c 74 20  te.their result 
c1d0: 61 63 72 6f 73 73 20 61 6c 6c 20 72 6f 77 73 20  across all rows 
c1e0: 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65  of the result se
c1f0: 74 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  t.</p>..<tcl>.##
c200: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c210: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c220: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c230: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c240: 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
c250: 74 69 6f 6e 20 7b 43 6f 72 65 20 46 75 6e 63 74  tion {Core Funct
c260: 69 6f 6e 73 7d 20 63 6f 72 65 66 75 6e 63 20 7b  ions} corefunc {
c270: 7d 0a 70 72 6f 63 20 66 75 6e 63 64 65 66 20 7b  }.proc funcdef {
c280: 73 79 6e 74 61 78 20 6b 65 79 77 6f 72 64 73 20  syntax keywords 
c290: 64 65 73 63 7d 20 7b 0a 20 20 68 64 5f 70 75 74  desc} {.  hd_put
c2a0: 73 20 7b 3c 74 72 3e 7d 0a 20 20 72 65 67 73 75  s {<tr>}.  regsu
c2b0: 62 20 2d 61 6c 6c 20 7b 5c 73 2b 7d 20 5b 73 74  b -all {\s+} [st
c2c0: 72 69 6e 67 20 74 72 69 6d 20 24 73 79 6e 74 61  ring trim $synta
c2d0: 78 5d 20 7b 3c 62 72 3e 3c 2f 62 72 3e 7d 20 73  x] {<br></br>} s
c2e0: 79 6e 74 61 78 0a 20 20 72 65 67 73 75 62 20 2d  yntax.  regsub -
c2f0: 61 6c 6c 20 7b 5c 28 28 5b 5e 2a 29 5d 2b 29 5c  all {\(([^*)]+)\
c300: 29 7d 20 24 73 79 6e 74 61 78 20 7b 28 3c 69 3e  )} $syntax {(<i>
c310: 5c 31 3c 2f 69 3e 29 7d 20 73 79 6e 74 61 78 0a  \1</i>)} syntax.
c320: 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 2c    regsub -all {,
c330: 7d 20 24 73 79 6e 74 61 78 20 7b 3c 2f 69 3e 2c  } $syntax {</i>,
c340: 3c 69 3e 7d 20 73 79 6e 74 61 78 0a 20 20 72 65  <i>} syntax.  re
c350: 67 73 75 62 20 2d 61 6c 6c 20 7b 3c 69 3e 5c 2e  gsub -all {<i>\.
c360: 5c 2e 5c 2e 3c 2f 69 3e 7d 20 24 73 79 6e 74 61  \.\.</i>} $synta
c370: 78 20 7b 2e 2e 2e 7d 20 73 79 6e 74 61 78 0a 20  x {...} syntax. 
c380: 20 68 64 5f 70 75 74 73 20 22 3c 74 64 20 76 61   hd_puts "<td va
c390: 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 20 61 6c 69  lign=\"top\" ali
c3a0: 67 6e 3d 5c 22 72 69 67 68 74 5c 22 20 77 69 64  gn=\"right\" wid
c3b0: 74 68 3d 5c 22 31 32 30 5c 22 3e 24 73 79 6e 74  th=\"120\">$synt
c3c0: 61 78 3c 2f 74 64 3e 22 0a 20 20 68 64 5f 70 75  ax</td>".  hd_pu
c3d0: 74 73 20 7b 3c 74 64 20 76 61 6c 69 67 6e 3d 22  ts {<td valign="
c3e0: 74 6f 70 22 3e 7d 0a 20 20 69 66 20 7b 5b 6c 6c  top">}.  if {[ll
c3f0: 65 6e 67 74 68 20 24 6b 65 79 77 6f 72 64 73 5d  ength $keywords]
c400: 3d 3d 30 7d 20 7b 0a 20 20 20 20 72 65 67 65 78  ==0} {.    regex
c410: 70 20 7b 5b 61 2d 7a 5f 5d 2b 7d 20 24 73 79 6e  p {[a-z_]+} $syn
c420: 74 61 78 20 6e 61 6d 65 0a 20 20 20 20 68 64 5f  tax name.    hd_
c430: 66 72 61 67 6d 65 6e 74 20 24 6e 61 6d 65 20 24  fragment $name $
c440: 6e 61 6d 65 0a 20 20 7d 20 65 6c 73 65 20 7b 0a  name.  } else {.
c450: 20 20 20 20 65 76 61 6c 20 68 64 5f 66 72 61 67      eval hd_frag
c460: 6d 65 6e 74 20 24 6b 65 79 77 6f 72 64 73 0a 20  ment $keywords. 
c470: 20 7d 0a 20 20 68 64 5f 72 65 73 6f 6c 76 65 20   }.  hd_resolve 
c480: 24 64 65 73 63 0a 20 20 68 64 5f 70 75 74 73 20  $desc.  hd_puts 
c490: 7b 3c 2f 74 64 3e 3c 2f 74 72 3e 7d 0a 7d 0a 3c  {</td></tr>}.}.<
c4a0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f  /tcl>..<p>The co
c4b0: 72 65 20 66 75 6e 63 74 69 6f 6e 73 20 73 68 6f  re functions sho
c4c0: 77 6e 20 62 65 6c 6f 77 20 61 72 65 20 61 76 61  wn below are ava
c4d0: 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61 75 6c  ilable by defaul
c4e0: 74 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c 0a 66  t.  Additional.f
c4f0: 75 6e 63 74 69 6f 6e 73 20 6d 61 79 20 62 65 20  unctions may be 
c500: 77 72 69 74 74 65 6e 20 69 6e 20 43 20 61 6e 64  written in C and
c510: 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 64 61   added to the da
c520: 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20 75 73  tabase engine us
c530: 69 6e 67 0a 74 68 65 20 5b 73 71 6c 69 74 65 33  ing.the [sqlite3
c540: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
c550: 28 29 5d 20 41 50 49 2e 3c 2f 70 3e 0a 0a 3c 74  ()] API.</p>..<t
c560: 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65  able border=0 ce
c570: 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74  llpadding=10>.<t
c580: 63 6c 3e 0a 66 75 6e 63 64 65 66 20 7b 61 62 73  cl>.funcdef {abs
c590: 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75  (X)} {} {.  Retu
c5a0: 72 6e 20 74 68 65 20 61 62 73 6f 6c 75 74 65 20  rn the absolute 
c5b0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 6e 75 6d  value of the num
c5c0: 65 72 69 63 0a 20 20 61 72 67 75 6d 65 6e 74 20  eric.  argument 
c5d0: 3c 69 3e 58 3c 2f 69 3e 2e 20 20 52 65 74 75 72  <i>X</i>.  Retur
c5e0: 6e 20 4e 55 4c 4c 20 69 66 20 3c 69 3e 58 3c 2f  n NULL if <i>X</
c5f0: 69 3e 20 69 73 20 4e 55 4c 4c 2e 20 20 52 65 74  i> is NULL.  Ret
c600: 75 72 6e 20 30 2e 30 20 69 66 0a 20 20 3c 69 3e  urn 0.0 if.  <i>
c610: 58 3c 2f 69 3e 20 69 73 20 6e 6f 74 20 61 20 6e  X</i> is not a n
c620: 75 6d 65 72 69 63 20 76 61 6c 75 65 2e 0a 7d 0a  umeric value..}.
c630: 0a 66 75 6e 63 64 65 66 20 7b 63 6f 61 6c 65 73  .funcdef {coales
c640: 63 65 28 58 2c 59 2c 2e 2e 2e 29 7d 20 7b 7d 20  ce(X,Y,...)} {} 
c650: 7b 0a 20 20 52 65 74 75 72 6e 20 61 20 63 6f 70  {.  Return a cop
c660: 79 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 6e  y of the first n
c670: 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e 74  on-NULL argument
c680: 2e 20 20 49 66 0a 20 20 61 6c 6c 20 61 72 67 75  .  If.  all argu
c690: 6d 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c 20 74  ments are NULL t
c6a0: 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72 65 74 75  hen NULL is retu
c6b0: 72 6e 65 64 2e 20 20 54 68 65 72 65 20 6d 75 73  rned.  There mus
c6c0: 74 20 62 65 20 61 74 20 6c 65 61 73 74 20 0a 20  t be at least . 
c6d0: 20 32 20 61 72 67 75 6d 65 6e 74 73 2e 0a 7d 0a   2 arguments..}.
c6e0: 0a 66 75 6e 63 64 65 66 20 7b 67 6c 6f 62 28 58  .funcdef {glob(X
c6f0: 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 54 68 69 73  ,Y)} {} {.  This
c700: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65   function is use
c710: 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74  d to implement t
c720: 68 65 0a 20 20 22 3c 62 3e 58 20 47 4c 4f 42 20  he.  "<b>X GLOB 
c730: 59 3c 2f 62 3e 22 20 73 79 6e 74 61 78 20 6f 66  Y</b>" syntax of
c740: 20 53 51 4c 69 74 65 2e 0a 20 20 54 68 65 20 5b   SQLite..  The [
c750: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
c760: 75 6e 63 74 69 6f 6e 28 29 5d 0a 20 20 69 6e 74  unction()].  int
c770: 65 72 66 61 63 65 20 63 61 6e 0a 20 20 62 65 20  erface can.  be 
c780: 75 73 65 64 20 74 6f 20 6f 76 65 72 72 69 64 65  used to override
c790: 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 61   this function a
c7a0: 6e 64 20 74 68 65 72 65 62 79 20 63 68 61 6e 67  nd thereby chang
c7b0: 65 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 0a  e the operation.
c7c0: 20 20 6f 66 20 74 68 65 20 5b 47 4c 4f 42 5d 20    of the [GLOB] 
c7d0: 6f 70 65 72 61 74 6f 72 2e 3c 2f 74 64 3e 0a 7d  operator.</td>.}
c7e0: 0a 0a 66 75 6e 63 64 65 66 20 7b 69 66 6e 75 6c  ..funcdef {ifnul
c7f0: 6c 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 52  l(X,Y)} {} {.  R
c800: 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20  eturn a copy of 
c810: 74 68 65 20 66 69 72 73 74 20 6e 6f 6e 2d 4e 55  the first non-NU
c820: 4c 4c 20 61 72 67 75 6d 65 6e 74 2e 20 20 49 66  LL argument.  If
c830: 0a 20 20 62 6f 74 68 20 61 72 67 75 6d 65 6e 74  .  both argument
c840: 73 20 61 72 65 20 4e 55 4c 4c 20 74 68 65 6e 20  s are NULL then 
c850: 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64  NULL is returned
c860: 2e 20 54 68 69 73 20 62 65 68 61 76 65 73 20 74  . This behaves t
c870: 68 65 20 73 61 6d 65 20 61 73 20 0a 20 20 5b 63  he same as .  [c
c880: 6f 61 6c 65 73 63 65 28 29 5d 2e 3c 2f 74 64 3e  oalesce()].</td>
c890: 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 68 65 78  .}..funcdef {hex
c8a0: 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 54 68 65 20  (X)} {} {.  The 
c8b0: 61 72 67 75 6d 65 6e 74 20 69 73 20 69 6e 74 65  argument is inte
c8c0: 72 70 72 65 74 65 64 20 61 73 20 61 20 42 4c 4f  rpreted as a BLO
c8d0: 42 2e 20 20 54 68 65 20 72 65 73 75 6c 74 0a 20  B.  The result. 
c8e0: 20 69 73 20 61 20 68 65 78 61 64 65 63 69 6d 61   is a hexadecima
c8f0: 6c 20 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74  l rendering of t
c900: 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68  he content of th
c910: 61 74 20 62 6c 6f 62 2e 0a 7d 0a 0a 66 75 6e 63  at blob..}..func
c920: 64 65 66 20 7b 6c 61 73 74 5f 69 6e 73 65 72 74  def {last_insert
c930: 5f 72 6f 77 69 64 28 29 7d 20 7b 7d 20 7b 0a 20  _rowid()} {} {. 
c940: 20 52 65 74 75 72 6e 20 74 68 65 20 5b 52 4f 57   Return the [ROW
c950: 49 44 5d 0a 20 20 6f 66 20 74 68 65 20 6c 61 73  ID].  of the las
c960: 74 20 72 6f 77 20 69 6e 73 65 72 74 20 66 72 6f  t row insert fro
c970: 6d 20 74 68 69 73 0a 20 20 63 6f 6e 6e 65 63 74  m this.  connect
c980: 69 6f 6e 20 74 6f 20 74 68 65 20 64 61 74 61 62  ion to the datab
c990: 61 73 65 2e 20 0a 20 20 54 68 69 73 20 69 73 20  ase. .  This is 
c9a0: 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 20 74  the same value t
c9b0: 68 61 74 20 77 6f 75 6c 64 20 62 65 20 72 65 74  hat would be ret
c9c0: 75 72 6e 65 64 0a 20 20 66 72 6f 6d 20 74 68 65  urned.  from the
c9d0: 20 5b 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69   [sqlite3_last_i
c9e0: 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 5d 20 41  nsert_rowid()] A
c9f0: 50 49 20 66 75 6e 63 74 69 6f 6e 2e 0a 7d 0a 0a  PI function..}..
ca00: 66 75 6e 63 64 65 66 20 7b 6c 65 6e 67 74 68 28  funcdef {length(
ca10: 58 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72  X)} {} {.  Retur
ca20: 6e 20 74 68 65 20 73 74 72 69 6e 67 20 6c 65 6e  n the string len
ca30: 67 74 68 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20  gth of <i>X</i> 
ca40: 69 6e 20 63 68 61 72 61 63 74 65 72 73 2e 0a 20  in characters.. 
ca50: 20 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f   If SQLite is co
ca60: 6e 66 69 67 75 72 65 64 20 74 6f 20 73 75 70 70  nfigured to supp
ca70: 6f 72 74 20 55 54 46 2d 38 2c 20 74 68 65 6e 20  ort UTF-8, then 
ca80: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 55 54  the number of UT
ca90: 46 2d 38 0a 20 20 63 68 61 72 61 63 74 65 72 73  F-8.  characters
caa0: 20 69 73 20 72 65 74 75 72 6e 65 64 2c 20 6e 6f   is returned, no
cab0: 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  t the number of 
cac0: 62 79 74 65 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65  bytes..}..funcde
cad0: 66 20 7b 6c 69 6b 65 28 58 2c 59 29 20 6c 69 6b  f {like(X,Y) lik
cae0: 65 28 58 2c 59 2c 5a 29 7d 20 7b 7d 20 7b 0a 20  e(X,Y,Z)} {} {. 
caf0: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69   This function i
cb00: 73 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d  s used to implem
cb10: 65 6e 74 20 74 68 65 20 22 3c 62 3e 58 20 4c 49  ent the "<b>X LI
cb20: 4b 45 20 59 20 26 23 39 31 3b 45 53 43 41 50 45  KE Y &#91;ESCAPE
cb30: 20 5a 26 23 39 33 3b 3c 2f 62 3e 22 0a 20 20 73   Z&#93;</b>".  s
cb40: 79 6e 74 61 78 20 6f 66 20 53 51 4c 2e 20 49 66  yntax of SQL. If
cb50: 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20 45 53   the optional ES
cb60: 43 41 50 45 20 63 6c 61 75 73 65 20 69 73 20 70  CAPE clause is p
cb70: 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 74 68 65  resent, then the
cb80: 0a 20 20 75 73 65 72 2d 66 75 6e 63 74 69 6f 6e  .  user-function
cb90: 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 69 74 68   is invoked with
cba0: 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74 73   three arguments
cbb0: 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 69 74 20  . Otherwise, it 
cbc0: 69 73 0a 20 20 69 6e 76 6f 6b 65 64 20 77 69 74  is.  invoked wit
cbd0: 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 20  h two arguments 
cbe0: 6f 6e 6c 79 2e 20 54 68 65 20 0a 20 20 5b 73 71  only. The .  [sq
cbf0: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
cc00: 63 74 69 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61  ction()] interfa
cc10: 63 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  ce can be used t
cc20: 6f 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 0a  o override this.
cc30: 20 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74    function and t
cc40: 68 65 72 65 62 79 20 63 68 61 6e 67 65 20 74 68  hereby change th
cc50: 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74  e operation of t
cc60: 68 65 0a 20 20 5b 4c 49 4b 45 5d 20 6f 70 65 72  he.  [LIKE] oper
cc70: 61 74 6f 72 2e 20 57 68 65 6e 20 64 6f 69 6e 67  ator. When doing
cc80: 20 74 68 69 73 2c 20 69 74 20 6d 61 79 20 62 65   this, it may be
cc90: 20 69 6d 70 6f 72 74 61 6e 74 0a 20 20 74 6f 20   important.  to 
cca0: 6f 76 65 72 72 69 64 65 20 62 6f 74 68 20 74 68  override both th
ccb0: 65 20 74 77 6f 20 61 6e 64 20 74 68 72 65 65 20  e two and three 
ccc0: 61 72 67 75 6d 65 6e 74 20 76 65 72 73 69 6f 6e  argument version
ccd0: 73 20 6f 66 20 74 68 65 20 6c 69 6b 65 28 29 20  s of the like() 
cce0: 0a 20 20 66 75 6e 63 74 69 6f 6e 2e 20 4f 74 68  .  function. Oth
ccf0: 65 72 77 69 73 65 2c 20 64 69 66 66 65 72 65 6e  erwise, differen
cd00: 74 20 63 6f 64 65 20 6d 61 79 20 62 65 20 63 61  t code may be ca
cd10: 6c 6c 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e  lled to implemen
cd20: 74 20 74 68 65 0a 20 20 5b 4c 49 4b 45 5d 20 6f  t the.  [LIKE] o
cd30: 70 65 72 61 74 6f 72 20 64 65 70 65 6e 64 69 6e  perator dependin
cd40: 67 20 6f 6e 20 77 68 65 74 68 65 72 20 6f 72 20  g on whether or 
cd50: 6e 6f 74 20 61 6e 20 45 53 43 41 50 45 20 63 6c  not an ESCAPE cl
cd60: 61 75 73 65 20 77 61 73 20 0a 20 20 73 70 65 63  ause was .  spec
cd70: 69 66 69 65 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65  ified..}..funcde
cd80: 66 20 7b 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  f {load_extensio
cd90: 6e 28 58 29 20 6c 6f 61 64 5f 65 78 74 65 6e 73  n(X) load_extens
cda0: 69 6f 6e 28 58 2c 59 29 7d 20 7b 6c 6f 61 64 5f  ion(X,Y)} {load_
cdb0: 65 78 74 65 6e 73 69 6f 6e 7d 20 7b 0a 20 20 4c  extension} {.  L
cdc0: 6f 61 64 20 53 51 4c 69 74 65 20 65 78 74 65 6e  oad SQLite exten
cdd0: 73 69 6f 6e 73 20 6f 75 74 20 6f 66 20 74 68 65  sions out of the
cde0: 20 73 68 61 72 65 64 20 6c 69 62 72 61 72 79 0a   shared library.
cdf0: 20 20 66 69 6c 65 20 6e 61 6d 65 64 20 3c 69 3e    file named <i>
ce00: 58 3c 2f 69 3e 20 75 73 69 6e 67 20 74 68 65 20  X</i> using the 
ce10: 65 6e 74 72 79 20 70 6f 69 6e 74 20 3c 69 3e 59  entry point <i>Y
ce20: 3c 2f 69 3e 2e 20 20 54 68 65 20 72 65 73 75 6c  </i>.  The resul
ce30: 74 0a 20 20 69 73 20 61 20 4e 55 4c 4c 2e 20 20  t.  is a NULL.  
ce40: 49 66 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 6f  If <i>Y</i> is o
ce50: 6d 69 74 74 65 64 20 74 68 65 6e 20 74 68 65 20  mitted then the 
ce60: 64 65 66 61 75 6c 74 20 65 6e 74 72 79 20 70 6f  default entry po
ce70: 69 6e 74 0a 20 20 6f 66 20 3c 62 3e 73 71 6c 69  int.  of <b>sqli
ce80: 74 65 33 5f 65 78 74 65 6e 73 69 6f 6e 5f 69 6e  te3_extension_in
ce90: 69 74 3c 2f 62 3e 20 69 73 20 75 73 65 64 2e 20  it</b> is used. 
cea0: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72   This function r
ceb0: 61 69 73 65 73 0a 20 20 61 6e 20 65 78 63 65 70  aises.  an excep
cec0: 74 69 6f 6e 20 69 66 20 74 68 65 20 65 78 74 65  tion if the exte
ced0: 6e 73 69 6f 6e 20 66 61 69 6c 73 20 74 6f 20 6c  nsion fails to l
cee0: 6f 61 64 20 6f 72 20 69 6e 69 74 69 61 6c 69 7a  oad or initializ
cef0: 65 20 63 6f 72 72 65 63 74 6c 79 2e 0a 0a 20 20  e correctly...  
cf00: 3c 70 3e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  <p>This function
cf10: 20 77 69 6c 6c 20 66 61 69 6c 20 69 66 20 74 68   will fail if th
cf20: 65 20 65 78 74 65 6e 73 69 6f 6e 20 61 74 74 65  e extension atte
cf30: 6d 70 74 73 20 74 6f 20 6d 6f 64 69 66 79 0a 20  mpts to modify. 
cf40: 20 6f 72 20 64 65 6c 65 74 65 20 61 20 53 51 4c   or delete a SQL
cf50: 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 63 6f 6c   function or col
cf60: 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 2e  lating sequence.
cf70: 20 20 54 68 65 0a 20 20 65 78 74 65 6e 73 69 6f    The.  extensio
cf80: 6e 20 63 61 6e 20 61 64 64 20 6e 65 77 20 66 75  n can add new fu
cf90: 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f 6c 6c 61  nctions or colla
cfa0: 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73 2c 20  ting sequences, 
cfb0: 62 75 74 20 63 61 6e 6e 6f 74 0a 20 20 6d 6f 64  but cannot.  mod
cfc0: 69 66 79 20 6f 72 20 64 65 6c 65 74 65 20 65 78  ify or delete ex
cfd0: 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73  isting functions
cfe0: 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65   or collating se
cff0: 71 75 65 6e 63 65 73 20 62 65 63 61 75 73 65 0a  quences because.
d000: 20 20 74 68 6f 73 65 20 66 75 6e 63 74 69 6f 6e    those function
d010: 73 20 61 6e 64 2f 6f 72 20 63 6f 6c 6c 61 74 69  s and/or collati
d020: 6e 67 20 73 65 71 75 65 6e 63 65 73 20 6d 69 67  ng sequences mig
d030: 68 74 20 62 65 20 75 73 65 64 20 65 6c 73 65 77  ht be used elsew
d040: 68 65 72 65 0a 20 20 69 6e 20 74 68 65 20 63 75  here.  in the cu
d050: 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67 20  rrently running 
d060: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  SQL statement.  
d070: 54 6f 20 6c 6f 61 64 20 61 6e 20 65 78 74 65 6e  To load an exten
d080: 73 69 6f 6e 20 74 68 61 74 0a 20 20 63 68 61 6e  sion that.  chan
d090: 67 65 73 20 6f 72 20 64 65 6c 65 74 65 73 20 66  ges or deletes f
d0a0: 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f 6c 6c  unctions or coll
d0b0: 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73 2c  ating sequences,
d0c0: 20 75 73 65 20 74 68 65 0a 20 20 5b 73 71 6c 69   use the.  [sqli
d0d0: 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  te3_load_extensi
d0e0: 6f 6e 28 29 5d 20 43 2d 6c 61 6e 67 75 61 67 65  on()] C-language
d0f0: 20 41 50 49 2e 3c 2f 70 3e 0a 7d 0a 0a 66 75 6e   API.</p>.}..fun
d100: 63 64 65 66 20 7b 6c 6f 77 65 72 28 58 29 7d 20  cdef {lower(X)} 
d110: 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 61 20  {} {.  Return a 
d120: 63 6f 70 79 20 6f 66 20 73 74 72 69 6e 67 20 3c  copy of string <
d130: 69 3e 58 3c 2f 69 3e 20 77 69 6c 6c 20 61 6c 6c  i>X</i> will all
d140: 20 41 53 43 49 49 20 63 68 61 72 61 63 74 65 72   ASCII character
d150: 73 0a 20 20 63 6f 6e 76 65 72 74 65 64 20 74 6f  s.  converted to
d160: 20 6c 6f 77 65 72 20 63 61 73 65 2e 20 20 54 68   lower case.  Th
d170: 65 20 43 20 6c 69 62 72 61 72 79 20 3c 62 3e 74  e C library <b>t
d180: 6f 6c 6f 77 65 72 28 29 3c 2f 62 3e 20 72 6f 75  olower()</b> rou
d190: 74 69 6e 65 20 69 73 20 75 73 65 64 0a 20 20 66  tine is used.  f
d1a0: 6f 72 20 74 68 65 20 63 6f 6e 76 65 72 73 69 6f  or the conversio
d1b0: 6e 2c 20 77 68 69 63 68 20 6d 65 61 6e 73 20 74  n, which means t
d1c0: 68 61 74 20 74 68 69 73 20 66 75 6e 63 74 69 6f  hat this functio
d1d0: 6e 20 6d 69 67 68 74 20 6e 6f 74 0a 20 20 77 6f  n might not.  wo
d1e0: 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 6f 6e 20  rk correctly on 
d1f0: 6e 6f 6e 2d 41 53 43 49 49 20 55 54 46 2d 38 20  non-ASCII UTF-8 
d200: 63 68 61 72 61 63 74 65 72 73 2e 0a 7d 0a 0a 66  characters..}..f
d210: 75 6e 63 64 65 66 20 7b 6c 74 72 69 6d 28 58 29  uncdef {ltrim(X)
d220: 20 6c 74 72 69 6d 28 58 2c 59 29 7d 20 7b 7d 20   ltrim(X,Y)} {} 
d230: 7b 0a 20 20 52 65 74 75 72 6e 20 61 20 73 74 72  {.  Return a str
d240: 69 6e 67 20 66 6f 72 6d 65 64 20 62 79 20 72 65  ing formed by re
d250: 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64 20 61  moving any and a
d260: 6c 6c 0a 20 20 63 68 61 72 61 63 74 65 72 73 20  ll.  characters 
d270: 74 68 61 74 20 61 70 70 65 61 72 20 69 6e 20 3c  that appear in <
d280: 69 3e 59 3c 2f 69 3e 20 66 72 6f 6d 20 74 68 65  i>Y</i> from the
d290: 20 6c 65 66 74 20 73 69 64 65 20 6f 66 20 3c 69   left side of <i
d2a0: 3e 58 3c 2f 69 3e 2e 0a 20 20 49 66 20 74 68 65  >X</i>..  If the
d2b0: 20 3c 69 3e 59 3c 2f 69 3e 20 61 72 67 75 6d 65   <i>Y</i> argume
d2c0: 6e 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 73  nt is omitted, s
d2d0: 70 61 63 65 73 20 61 72 65 20 72 65 6d 6f 76 65  paces are remove
d2e0: 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6d  d..}..funcdef {m
d2f0: 61 78 28 58 2c 59 2c 2e 2e 2e 29 7d 20 7b 6d 61  ax(X,Y,...)} {ma
d300: 78 43 6f 72 65 46 75 6e 63 20 6d 61 78 7d 20 7b  xCoreFunc max} {
d310: 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20 61 72  .  Return the ar
d320: 67 75 6d 65 6e 74 20 77 69 74 68 20 74 68 65 20  gument with the 
d330: 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 2e 20 20  maximum value.  
d340: 41 72 67 75 6d 65 6e 74 73 0a 20 20 6d 61 79 20  Arguments.  may 
d350: 62 65 20 73 74 72 69 6e 67 73 20 69 6e 20 61 64  be strings in ad
d360: 64 69 74 69 6f 6e 20 74 6f 20 6e 75 6d 62 65 72  dition to number
d370: 73 2e 20 20 54 68 65 20 6d 61 78 69 6d 75 6d 20  s.  The maximum 
d380: 76 61 6c 75 65 20 69 73 20 64 65 74 65 72 6d 69  value is determi
d390: 6e 65 64 0a 20 20 62 79 20 74 68 65 20 75 73 75  ned.  by the usu
d3a0: 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 2e 20 20  al sort order.  
d3b0: 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d 61 78  Note that <b>max
d3c0: 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70  ()</b> is a simp
d3d0: 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e  le function when
d3e0: 0a 20 20 69 74 20 68 61 73 20 32 20 6f 72 20 6d  .  it has 2 or m
d3f0: 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75  ore arguments bu
d400: 74 20 63 6f 6e 76 65 72 74 73 20 74 6f 20 61 6e  t converts to an
d410: 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
d420: 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a 20 20 6f  ion if given.  o
d430: 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67  nly a single arg
d440: 75 6d 65 6e 74 2e 0a 7d 0a 0a 66 75 6e 63 64 65  ument..}..funcde
d450: 66 20 7b 6d 69 6e 28 58 2c 59 2c 2e 2e 2e 29 7d  f {min(X,Y,...)}
d460: 20 7b 6d 69 6e 43 6f 72 65 46 75 6e 63 20 6d 69   {minCoreFunc mi
d470: 6e 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68  n} {.  Return th
d480: 65 20 61 72 67 75 6d 65 6e 74 20 77 69 74 68 20  e argument with 
d490: 74 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c 75  the minimum valu
d4a0: 65 2e 20 20 41 72 67 75 6d 65 6e 74 73 0a 20 20  e.  Arguments.  
d4b0: 6d 61 79 20 62 65 20 73 74 72 69 6e 67 73 20 69  may be strings i
d4c0: 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 6e 75  n addition to nu
d4d0: 6d 62 65 72 73 2e 20 20 54 68 65 20 6d 69 6e 69  mbers.  The mini
d4e0: 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 64 65 74  mum value is det
d4f0: 65 72 6d 69 6e 65 64 0a 20 20 62 79 20 74 68 65  ermined.  by the
d500: 20 75 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65   usual sort orde
d510: 72 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62  r.  Note that <b
d520: 3e 6d 69 6e 28 29 3c 2f 62 3e 20 69 73 20 61 20  >min()</b> is a 
d530: 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20  simple function 
d540: 77 68 65 6e 0a 20 20 69 74 20 68 61 73 20 32 20  when.  it has 2 
d550: 6f 72 20 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74  or more argument
d560: 73 20 62 75 74 20 63 6f 6e 76 65 72 74 73 20 74  s but converts t
d570: 6f 20 61 6e 20 61 67 67 72 65 67 61 74 65 20 66  o an aggregate f
d580: 75 6e 63 74 69 6f 6e 20 69 66 20 67 69 76 65 6e  unction if given
d590: 0a 20 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65  .  only a single
d5a0: 20 61 72 67 75 6d 65 6e 74 2e 0a 7d 0a 0a 66 75   argument..}..fu
d5b0: 6e 63 64 65 66 20 7b 6e 75 6c 6c 69 66 28 58 2c  ncdef {nullif(X,
d5c0: 59 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72  Y)} {} {.  Retur
d5d0: 6e 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75  n the first argu
d5e0: 6d 65 6e 74 20 69 66 20 74 68 65 20 61 72 67 75  ment if the argu
d5f0: 6d 65 6e 74 73 20 61 72 65 20 64 69 66 66 65 72  ments are differ
d600: 65 6e 74 2c 20 0a 20 20 6f 74 68 65 72 77 69 73  ent, .  otherwis
d610: 65 20 72 65 74 75 72 6e 20 4e 55 4c 4c 2e 0a 7d  e return NULL..}
d620: 0a 0a 66 75 6e 63 64 65 66 20 7b 71 75 6f 74 65  ..funcdef {quote
d630: 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 54 68 69 73  (X)} {} {.  This
d640: 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73   routine returns
d650: 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 20   a string which 
d660: 69 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 0a  is the value of.
d670: 20 20 69 74 73 20 61 72 67 75 6d 65 6e 74 20 73    its argument s
d680: 75 69 74 61 62 6c 65 20 66 6f 72 20 69 6e 63 6c  uitable for incl
d690: 75 73 69 6f 6e 20 69 6e 74 6f 20 61 6e 6f 74 68  usion into anoth
d6a0: 65 72 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  er SQL statement
d6b0: 2e 0a 20 20 53 74 72 69 6e 67 73 20 61 72 65 20  ..  Strings are 
d6c0: 73 75 72 72 6f 75 6e 64 65 64 20 62 79 20 73 69  surrounded by si
d6d0: 6e 67 6c 65 2d 71 75 6f 74 65 73 20 77 69 74 68  ngle-quotes with
d6e0: 20 65 73 63 61 70 65 73 20 6f 6e 20 69 6e 74 65   escapes on inte
d6f0: 72 69 6f 72 20 71 75 6f 74 65 73 0a 20 20 61 73  rior quotes.  as
d700: 20 6e 65 65 64 65 64 2e 20 20 42 4c 4f 42 73 20   needed.  BLOBs 
d710: 61 72 65 20 65 6e 63 6f 64 65 64 20 61 73 20 68  are encoded as h
d720: 65 78 61 64 65 63 69 6d 61 6c 20 6c 69 74 65 72  exadecimal liter
d730: 61 6c 73 2e 0a 20 20 54 68 65 20 69 6d 70 6c 65  als..  The imple
d740: 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 5b 56 41  mentation of [VA
d750: 43 55 55 4d 5d 20 75 73 65 73 20 74 68 69 73 20  CUUM] uses this 
d760: 66 75 6e 63 74 69 6f 6e 2e 20 54 68 65 20 66 75  function. The fu
d770: 6e 63 74 69 6f 6e 0a 20 20 69 73 20 61 6c 73 6f  nction.  is also
d780: 20 75 73 65 66 75 6c 20 77 68 65 6e 20 77 72 69   useful when wri
d790: 74 69 6e 67 20 74 72 69 67 67 65 72 73 20 74 6f  ting triggers to
d7a0: 20 69 6d 70 6c 65 6d 65 6e 74 20 75 6e 64 6f 2f   implement undo/
d7b0: 72 65 64 6f 20 66 75 6e 63 74 69 6f 6e 61 6c 69  redo functionali
d7c0: 74 79 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  ty..}..funcdef {
d7d0: 72 61 6e 64 6f 6d 28 29 7d 20 7b 7d 20 7b 0a 20  random()} {} {. 
d7e0: 20 52 65 74 75 72 6e 20 61 20 70 73 65 75 64 6f   Return a pseudo
d7f0: 2d 72 61 6e 64 6f 6d 20 69 6e 74 65 67 65 72 0a  -random integer.
d800: 20 20 62 65 74 77 65 65 6e 20 2d 39 32 32 33 33    between -92233
d810: 37 32 30 33 36 38 35 34 37 37 35 38 30 38 20 61  72036854775808 a
d820: 6e 64 20 2b 39 32 32 33 33 37 32 30 33 36 38 35  nd +922337203685
d830: 34 37 37 35 38 30 37 2e 0a 7d 0a 0a 66 75 6e 63  4775807..}..func
d840: 64 65 66 20 7b 72 61 6e 64 6f 6d 62 6c 6f 62 28  def {randomblob(
d850: 4e 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72  N)} {} {.  Retur
d860: 6e 20 61 6e 20 3c 69 3e 4e 3c 2f 69 3e 2d 62 79  n an <i>N</i>-by
d870: 74 65 20 62 6c 6f 62 20 63 6f 6e 74 61 69 6e 69  te blob containi
d880: 6e 67 20 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d  ng pseudo-random
d890: 20 62 79 74 65 73 2e 0a 20 20 3c 69 3e 4e 3c 2f   bytes..  <i>N</
d8a0: 69 3e 20 73 68 6f 75 6c 64 20 62 65 20 61 20 70  i> should be a p
d8b0: 6f 73 74 69 76 65 20 69 6e 74 65 67 65 72 2e 0a  ostive integer..
d8c0: 0a 20 20 3c 70 3e 48 69 6e 74 3a 20 20 61 70 70  .  <p>Hint:  app
d8d0: 6c 69 63 61 74 69 6f 6e 73 20 63 61 6e 20 67 65  lications can ge
d8e0: 6e 65 72 61 74 65 20 67 6c 6f 62 61 6c 6c 79 20  nerate globally 
d8f0: 75 6e 69 71 75 65 20 69 64 65 6e 74 69 66 69 65  unique identifie
d900: 72 73 0a 20 20 75 73 69 6e 67 20 74 68 69 73 20  rs.  using this 
d910: 66 75 6e 63 74 69 6f 6e 20 74 6f 67 65 74 68 65  function togethe
d920: 72 20 77 69 74 68 20 5b 68 65 78 28 29 5d 20 61  r with [hex()] a
d930: 6e 64 2f 6f 72 0a 20 20 5b 6c 6f 77 65 72 28 29  nd/or.  [lower()
d940: 5d 20 6c 69 6b 65 20 74 68 69 73 3a 3c 2f 70 3e  ] like this:</p>
d950: 0a 0a 20 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  ..  <blockquote>
d960: 0a 20 20 68 65 78 28 72 61 6e 64 6f 6d 62 6c 6f  .  hex(randomblo
d970: 62 28 31 36 29 29 3c 62 72 3e 3c 2f 62 72 3e 0a  b(16))<br></br>.
d980: 20 20 6c 6f 77 65 72 28 68 65 78 28 72 61 6e 64    lower(hex(rand
d990: 6f 6d 62 6c 6f 62 28 31 36 29 29 29 0a 20 20 3c  omblob(16))).  <
d9a0: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a  /blockquote>.}..
d9b0: 66 75 6e 63 64 65 66 20 7b 72 65 70 6c 61 63 65  funcdef {replace
d9c0: 28 58 2c 59 2c 5a 29 7d 20 7b 7d 20 7b 0a 20 20  (X,Y,Z)} {} {.  
d9d0: 52 65 74 75 72 6e 20 61 20 73 74 72 69 6e 67 20  Return a string 
d9e0: 66 6f 72 6d 65 64 20 62 79 20 73 75 62 73 74 69  formed by substi
d9f0: 74 75 74 69 6e 67 20 73 74 72 69 6e 67 20 3c 69  tuting string <i
da00: 3e 5a 3c 2f 69 3e 20 66 6f 72 0a 20 20 65 76 65  >Z</i> for.  eve
da10: 72 79 20 6f 63 63 75 72 72 61 6e 63 65 20 6f 66  ry occurrance of
da20: 20 73 74 72 69 6e 67 20 3c 69 3e 59 3c 2f 69 3e   string <i>Y</i>
da30: 20 69 6e 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c   in string <i>X<
da40: 2f 69 3e 2e 20 20 54 68 65 20 5b 42 49 4e 41 52  /i>.  The [BINAR
da50: 59 5d 0a 20 20 63 6f 6c 6c 61 74 69 6e 67 20 73  Y].  collating s
da60: 65 71 75 65 6e 63 65 20 69 73 20 75 73 65 64 20  equence is used 
da70: 66 6f 72 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e  for comparisons.
da80: 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72 6f 75  .}..funcdef {rou
da90: 6e 64 28 58 29 20 72 6f 75 6e 64 28 58 2c 59 29  nd(X) round(X,Y)
daa0: 7d 20 7b 7d 20 7b 0a 20 20 52 6f 75 6e 64 20 6f  } {} {.  Round o
dab0: 66 66 20 74 68 65 20 6e 75 6d 62 65 72 20 3c 69  ff the number <i
dac0: 3e 58 3c 2f 69 3e 20 74 6f 20 3c 69 3e 59 3c 2f  >X</i> to <i>Y</
dad0: 69 3e 20 64 69 67 69 74 73 20 74 6f 20 74 68 65  i> digits to the
dae0: 0a 20 20 72 69 67 68 74 20 6f 66 20 74 68 65 20  .  right of the 
daf0: 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74 2e 20 20  decimal point.  
db00: 49 66 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 20  If the <i>Y</i> 
db10: 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74  argument is omit
db20: 74 65 64 2c 20 30 20 69 73 20 0a 20 20 61 73 73  ted, 0 is .  ass
db30: 75 6d 65 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  umed..}..funcdef
db40: 20 7b 72 74 72 69 6d 28 58 29 20 72 74 72 69 6d   {rtrim(X) rtrim
db50: 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 52 65  (X,Y)} {} {.  Re
db60: 74 75 72 6e 20 61 20 73 74 72 69 6e 67 20 66 6f  turn a string fo
db70: 72 6d 65 64 20 62 79 20 72 65 6d 6f 76 69 6e 67  rmed by removing
db80: 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a 20 20 63   any and all.  c
db90: 68 61 72 61 63 74 65 72 73 20 74 68 61 74 20 61  haracters that a
dba0: 70 70 65 61 72 20 69 6e 20 3c 69 3e 59 3c 2f 69  ppear in <i>Y</i
dbb0: 3e 20 66 72 6f 6d 20 74 68 65 20 72 69 67 68 74  > from the right
dbc0: 20 73 69 64 65 20 6f 66 20 3c 69 3e 58 3c 2f 69   side of <i>X</i
dbd0: 3e 2e 0a 20 20 49 66 20 74 68 65 20 3c 69 3e 59  >..  If the <i>Y
dbe0: 3c 2f 69 3e 20 61 72 67 75 6d 65 6e 74 20 69 73  </i> argument is
dbf0: 20 6f 6d 69 74 74 65 64 2c 20 73 70 61 63 65 73   omitted, spaces
dc00: 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 0a 7d 0a   are removed..}.
dc10: 0a 66 75 6e 63 64 65 66 20 7b 73 6f 75 6e 64 65  .funcdef {sounde
dc20: 78 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 43 6f 6d  x(X)} {} {.  Com
dc30: 70 75 74 65 20 74 68 65 20 73 6f 75 6e 64 65 78  pute the soundex
dc40: 20 65 6e 63 6f 64 69 6e 67 20 6f 66 20 74 68 65   encoding of the
dc50: 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e   string <i>X</i>
dc60: 2e 0a 20 20 54 68 65 20 73 74 72 69 6e 67 20 22  ..  The string "
dc70: 3f 30 30 30 22 20 69 73 20 72 65 74 75 72 6e 65  ?000" is returne
dc80: 64 20 69 66 20 74 68 65 20 61 72 67 75 6d 65 6e  d if the argumen
dc90: 74 20 69 73 20 4e 55 4c 4c 2e 0a 20 20 54 68 69  t is NULL..  Thi
dca0: 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 6d  s function is om
dcb0: 69 74 74 65 64 20 66 72 6f 6d 20 53 51 4c 69 74  itted from SQLit
dcc0: 65 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 20 20  e by default..  
dcd0: 49 74 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c  It is only avail
dce0: 61 62 6c 65 20 74 68 65 20 2d 44 53 51 4c 49 54  able the -DSQLIT
dcf0: 45 5f 53 4f 55 4e 44 45 58 3d 31 20 63 6f 6d 70  E_SOUNDEX=1 comp
dd00: 69 6c 65 72 20 6f 70 74 69 6f 6e 0a 20 20 69 73  iler option.  is
dd10: 20 75 73 65 64 20 77 68 65 6e 20 53 51 4c 69 74   used when SQLit
dd20: 65 20 69 73 20 62 75 69 6c 74 2e 0a 7d 0a 0a 66  e is built..}..f
dd30: 75 6e 63 64 65 66 20 7b 73 71 6c 69 74 65 5f 76  uncdef {sqlite_v
dd40: 65 72 73 69 6f 6e 28 58 29 7d 20 7b 73 71 6c 69  ersion(X)} {sqli
dd50: 74 65 5f 76 65 72 73 69 6f 6e 7d 20 7b 0a 20 20  te_version} {.  
dd60: 52 65 74 75 72 6e 20 74 68 65 20 76 65 72 73 69  Return the versi
dd70: 6f 6e 20 73 74 72 69 6e 67 20 66 6f 72 20 74 68  on string for th
dd80: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
dd90: 0a 20 20 74 68 61 74 20 69 73 20 72 75 6e 6e 69  .  that is runni
dda0: 6e 67 2e 20 20 45 78 61 6d 70 6c 65 3a 20 20 22  ng.  Example:  "
ddb0: 33 2e 35 2e 39 22 0a 7d 0a 0a 66 75 6e 63 64 65  3.5.9".}..funcde
ddc0: 66 20 7b 73 75 62 73 74 72 28 58 2c 59 2c 5a 29  f {substr(X,Y,Z)
ddd0: 20 73 75 62 73 74 72 28 58 2c 59 29 7d 20 7b 7d   substr(X,Y)} {}
dde0: 20 7b 0a 20 20 52 65 74 75 72 6e 20 61 20 73 75   {.  Return a su
ddf0: 62 73 74 72 69 6e 67 20 6f 66 20 69 6e 70 75 74  bstring of input
de00: 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e   string <i>X</i>
de10: 20 74 68 61 74 20 62 65 67 69 6e 73 0a 20 20 77   that begins.  w
de20: 69 74 68 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e  ith the <i>Y</i>
de30: 2d 74 68 20 63 68 61 72 61 63 74 65 72 20 61 6e  -th character an
de40: 64 20 77 68 69 63 68 20 69 73 20 3c 69 3e 5a 3c  d which is <i>Z<
de50: 2f 69 3e 20 63 68 61 72 61 63 74 65 72 73 20 6c  /i> characters l
de60: 6f 6e 67 2e 0a 20 20 49 66 20 3c 69 3e 5a 3c 2f  ong..  If <i>Z</
de70: 69 3e 20 69 73 20 6f 6d 69 74 74 65 64 20 74 68  i> is omitted th
de80: 65 6e 20 61 6c 6c 20 63 68 61 72 61 63 74 65 72  en all character
de90: 20 74 68 72 6f 75 67 68 20 74 68 65 20 65 6e 64   through the end
dea0: 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 0a 20   of the string. 
deb0: 20 61 72 65 20 72 65 74 75 72 6e 65 64 2e 0a 20   are returned.. 
dec0: 20 54 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63   The left-most c
ded0: 68 61 72 61 63 74 65 72 20 6f 66 20 3c 69 3e 58  haracter of <i>X
dee0: 3c 2f 69 3e 20 69 73 20 6e 75 6d 62 65 72 20 31  </i> is number 1
def0: 2e 20 20 49 66 20 3c 69 3e 59 3c 2f 69 3e 20 69  .  If <i>Y</i> i
df00: 73 20 6e 65 67 61 74 69 76 65 0a 20 20 74 68 65  s negative.  the
df10: 20 74 68 65 20 66 69 72 73 74 20 63 68 61 72 61   the first chara
df20: 63 74 65 72 20 6f 66 20 74 68 65 20 73 75 62 73  cter of the subs
df30: 74 72 69 6e 67 20 69 73 20 66 6f 75 6e 64 20 62  tring is found b
df40: 79 20 63 6f 75 6e 74 69 6e 67 20 66 72 6f 6d 20  y counting from 
df50: 74 68 65 0a 20 20 72 69 67 68 74 20 72 61 74 68  the.  right rath
df60: 65 72 20 74 68 61 6e 20 74 68 65 20 6c 65 66 74  er than the left
df70: 2e 20 20 49 66 20 3c 69 3e 58 3c 2f 69 3e 20 69  .  If <i>X</i> i
df80: 73 20 73 74 72 69 6e 67 0a 20 20 74 68 65 6e 20  s string.  then 
df90: 63 68 61 72 61 63 74 65 72 73 20 69 6e 64 69 63  characters indic
dfa0: 65 73 20 72 65 66 65 72 20 74 6f 20 61 63 74 75  es refer to actu
dfb0: 61 6c 20 55 54 46 2d 38 20 63 68 61 72 61 63 74  al UTF-8 charact
dfc0: 65 72 73 2e 20 20 49 66 0a 20 20 3c 69 3e 58 3c  ers.  If.  <i>X<
dfd0: 2f 69 3e 20 69 73 20 61 20 42 4c 4f 42 20 74 68  /i> is a BLOB th
dfe0: 65 6e 20 74 68 65 20 69 6e 64 69 63 65 73 20 72  en the indices r
dff0: 65 66 65 72 20 74 6f 20 62 79 74 65 73 2e 0a 7d  efer to bytes..}
e000: 0a 0a 66 75 6e 63 64 65 66 20 7b 74 72 69 6d 28  ..funcdef {trim(
e010: 58 29 20 74 72 69 6d 28 58 2c 59 29 7d 20 7b 7d  X) trim(X,Y)} {}
e020: 20 7b 0a 20 20 52 65 74 75 72 6e 20 61 20 73 74   {.  Return a st
e030: 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79 20 72  ring formed by r
e040: 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64 20  emoving any and 
e050: 61 6c 6c 0a 20 20 63 68 61 72 61 63 74 65 72 73  all.  characters
e060: 20 74 68 61 74 20 61 70 70 65 61 72 20 69 6e 20   that appear in 
e070: 3c 69 3e 59 3c 2f 69 3e 20 66 72 6f 6d 20 62 6f  <i>Y</i> from bo
e080: 74 68 20 65 6e 64 73 20 6f 66 20 3c 69 3e 58 3c  th ends of <i>X<
e090: 2f 69 3e 2e 0a 20 20 49 66 20 74 68 65 20 3c 69  /i>..  If the <i
e0a0: 3e 59 3c 2f 69 3e 20 61 72 67 75 6d 65 6e 74 20  >Y</i> argument 
e0b0: 69 73 20 6f 6d 69 74 74 65 64 2c 20 73 70 61 63  is omitted, spac
e0c0: 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 0a  es are removed..
e0d0: 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 74 79 70 65  }..funcdef {type
e0e0: 6f 66 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 52 65  of(X)} {} {.  Re
e0f0: 74 75 72 6e 20 74 68 65 20 74 79 70 65 20 6f 66  turn the type of
e100: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
e110: 3c 69 3e 58 3c 2f 69 3e 2e 20 20 54 68 65 20 6f  <i>X</i>.  The o
e120: 6e 6c 79 20 0a 20 20 72 65 74 75 72 6e 20 76 61  nly .  return va
e130: 6c 75 65 73 20 61 72 65 20 22 6e 75 6c 6c 22 2c  lues are "null",
e140: 20 22 69 6e 74 65 67 65 72 22 2c 20 22 72 65 61   "integer", "rea
e150: 6c 22 2c 20 22 74 65 78 74 22 2c 20 61 6e 64 20  l", "text", and 
e160: 22 62 6c 6f 62 22 2e 0a 20 20 53 51 4c 69 74 65  "blob"..  SQLite
e170: 27 73 20 74 79 70 65 20 68 61 6e 64 6c 69 6e 67  's type handling
e180: 20 69 73 20 0a 20 20 65 78 70 6c 61 69 6e 65 64   is .  explained
e190: 20 69 6e 20 3c 61 20 68 72 65 66 3d 22 64 61 74   in <a href="dat
e1a0: 61 74 79 70 65 33 2e 68 74 6d 6c 22 3e 44 61 74  atype3.html">Dat
e1b0: 61 74 79 70 65 73 20 69 6e 20 53 51 4c 69 74 65  atypes in SQLite
e1c0: 20 56 65 72 73 69 6f 6e 20 33 3c 2f 61 3e 2e 0a   Version 3</a>..
e1d0: 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 75 70 70 65  }..funcdef {uppe
e1e0: 72 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74  r(X)} {} {.  Ret
e1f0: 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 69 6e  urn a copy of in
e200: 70 75 74 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c  put string <i>X<
e210: 2f 69 3e 20 63 6f 6e 76 65 72 74 65 64 20 74 6f  /i> converted to
e220: 20 61 6c 6c 0a 20 20 75 70 70 65 72 2d 63 61 73   all.  upper-cas
e230: 65 20 6c 65 74 74 65 72 73 2e 20 20 54 68 65 20  e letters.  The 
e240: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
e250: 66 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  f this function 
e260: 75 73 65 73 20 74 68 65 20 43 20 6c 69 62 72 61  uses the C libra
e270: 72 79 0a 20 20 72 6f 75 74 69 6e 65 20 3c 62 3e  ry.  routine <b>
e280: 74 6f 75 70 70 65 72 28 29 3c 2f 62 3e 20 77 68  toupper()</b> wh
e290: 69 63 68 20 6d 65 61 6e 73 20 69 74 20 6d 61 79  ich means it may
e2a0: 20 6e 6f 74 20 77 6f 72 6b 20 63 6f 72 72 65 63   not work correc
e2b0: 74 6c 79 20 6f 6e 20 0a 20 20 6e 6f 6e 2d 41 53  tly on .  non-AS
e2c0: 43 49 49 20 55 54 46 2d 38 20 73 74 72 69 6e 67  CII UTF-8 string
e2d0: 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 7a  s..}..funcdef {z
e2e0: 65 72 6f 62 6c 6f 62 28 4e 29 7d 20 7b 7d 20 7b  eroblob(N)} {} {
e2f0: 0a 20 20 52 65 74 75 72 6e 20 61 20 42 4c 4f 42  .  Return a BLOB
e300: 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 4e   consisting of N
e310: 20 62 79 74 65 73 20 6f 66 20 30 78 30 30 2e 20   bytes of 0x00. 
e320: 20 53 51 4c 69 74 65 0a 20 20 6d 61 6e 61 67 65   SQLite.  manage
e330: 73 20 74 68 65 73 65 20 7a 65 72 6f 62 6c 6f 62  s these zeroblob
e340: 73 20 76 65 72 79 20 65 66 66 69 63 69 65 6e 74  s very efficient
e350: 6c 79 2e 20 20 5a 65 72 6f 62 6c 6f 62 73 20 63  ly.  Zeroblobs c
e360: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 0a 20 20  an be used to.  
e370: 72 65 73 65 72 76 65 20 73 70 61 63 65 20 66 6f  reserve space fo
e380: 72 20 61 20 42 4c 4f 42 20 74 68 61 74 20 69 73  r a BLOB that is
e390: 20 6c 61 74 65 72 20 77 72 69 74 74 65 6e 20 75   later written u
e3a0: 73 69 6e 67 20 0a 20 20 5b 73 71 6c 69 74 65 33  sing .  [sqlite3
e3b0: 5f 62 6c 6f 62 5f 6f 70 65 6e 28 29 20 7c 20 69  _blob_open() | i
e3c0: 6e 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20  ncremental BLOB 
e3d0: 49 2f 4f 5d 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c  I/O]..}.</tcl>.<
e3e0: 2f 74 61 62 6c 65 3e 0a 0a 3c 74 63 6c 3e 0a 23  /table>..<tcl>.#
e3f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
e400: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
e410: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
e420: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
e430: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
e440: 63 74 69 6f 6e 20 7b 44 61 74 65 20 41 6e 64 20  ction {Date And 
e450: 54 69 6d 65 20 46 75 6e 63 74 69 6f 6e 73 7d 20  Time Functions} 
e460: 64 61 74 65 66 75 6e 63 20 7b 7d 0a 3c 2f 74 63  datefunc {}.</tc
e470: 6c 3e 0a 0a 3c 70 3e 0a 53 51 4c 69 74 65 20 73  l>..<p>.SQLite s
e480: 75 70 70 6f 72 74 73 20 66 69 76 65 20 64 61 74  upports five dat
e490: 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74  e and time funct
e4a0: 69 6f 6e 73 20 61 73 20 66 6f 6c 6c 6f 77 73 3a  ions as follows:
e4b0: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 3c 6f 6c 3e 0a  .</p>..<p>.<ol>.
e4c0: 3c 6c 69 3e 20 3c 62 3e 64 61 74 65 28 3c 2f 62  <li> <b>date(</b
e4d0: 3e 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c 20  ><i>timestring, 
e4e0: 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69 66 69  modifier, modifi
e4f0: 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c  er, ...</i><b>)<
e500: 2f 62 3e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 3c  /b> </li>.<li> <
e510: 62 3e 74 69 6d 65 28 3c 2f 62 3e 3c 69 3e 74 69  b>time(</b><i>ti
e520: 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69  mestring, modifi
e530: 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e  er, modifier, ..
e540: 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 20 3c 2f  .</i><b>)</b> </
e550: 6c 69 3e 0a 3c 6c 69 3e 20 3c 62 3e 64 61 74 65  li>.<li> <b>date
e560: 74 69 6d 65 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65  time(</b><i>time
e570: 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72  string, modifier
e580: 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c  , modifier, ...<
e590: 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 20 3c 2f 6c 69  /i><b>)</b> </li
e5a0: 3e 0a 3c 6c 69 3e 20 3c 62 3e 6a 75 6c 69 61 6e  >.<li> <b>julian
e5b0: 64 61 79 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65 73  day(</b><i>times
e5c0: 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72 2c  tring, modifier,
e5d0: 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f   modifier, ...</
e5e0: 69 3e 3c 62 3e 29 3c 2f 62 3e 20 3c 2f 6c 69 3e  i><b>)</b> </li>
e5f0: 0a 3c 6c 69 3e 20 3c 62 3e 73 74 72 66 74 69 6d  .<li> <b>strftim
e600: 65 28 3c 2f 62 3e 3c 69 3e 66 6f 72 6d 61 74 2c  e(</b><i>format,
e610: 20 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64   timestring, mod
e620: 69 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c  ifier, modifier,
e630: 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e   ...</i><b>)</b>
e640: 20 3c 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70   </li>.</ol>..<p
e650: 3e 0a 41 6c 6c 20 66 69 76 65 20 66 75 6e 63 74  >.All five funct
e660: 69 6f 6e 73 20 74 61 6b 65 20 61 20 74 69 6d 65  ions take a time
e670: 20 73 74 72 69 6e 67 20 61 73 20 61 6e 20 61 72   string as an ar
e680: 67 75 6d 65 6e 74 2e 20 54 68 69 73 20 74 69 6d  gument. This tim
e690: 65 20 73 74 72 69 6e 67 0a 6d 61 79 20 62 65 20  e string.may be 
e6a0: 66 6f 6c 6c 6f 77 65 64 20 62 79 20 7a 65 72 6f  followed by zero
e6b0: 20 6f 72 20 6d 6f 72 65 20 6d 6f 64 69 66 69 65   or more modifie
e6c0: 72 73 2e 20 0a 54 68 65 20 73 74 72 66 74 69 6d  rs. .The strftim
e6d0: 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 61 6c 73  e() function als
e6e0: 6f 20 74 61 6b 65 73 20 61 20 66 6f 72 6d 61 74  o takes a format
e6f0: 20 73 74 72 69 6e 67 20 61 73 20 69 74 73 20 66   string as its f
e700: 69 72 73 74 20 61 72 67 75 6d 65 6e 74 2e 0a 3c  irst argument..<
e710: 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 64 61 74  /p>..<p>.The dat
e720: 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  e() function ret
e730: 75 72 6e 73 20 74 68 65 20 64 61 74 65 20 69 6e  urns the date in
e740: 20 74 68 69 73 20 66 6f 72 6d 61 74 3a 20 59 59   this format: YY
e750: 59 59 2d 4d 4d 2d 44 44 2e 20 0a 54 68 65 20 74  YY-MM-DD. .The t
e760: 69 6d 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 72  ime() function r
e770: 65 74 75 72 6e 73 20 74 68 65 20 74 69 6d 65 20  eturns the time 
e780: 61 73 20 48 48 3a 4d 4d 3a 53 53 2e 20 0a 54 68  as HH:MM:SS. .Th
e790: 65 20 64 61 74 65 74 69 6d 65 28 29 20 66 75 6e  e datetime() fun
e7a0: 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 22 59  ction returns "Y
e7b0: 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a  YYY-MM-DD HH:MM:
e7c0: 53 53 22 2e 20 0a 54 68 65 20 6a 75 6c 69 61 6e  SS". .The julian
e7d0: 64 61 79 28 29 20 66 75 6e 63 74 69 6f 6e 20 72  day() function r
e7e0: 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65  eturns the numbe
e7f0: 72 20 6f 66 20 64 61 79 73 20 73 69 6e 63 65 20  r of days since 
e800: 6e 6f 6f 6e 20 69 6e 0a 47 72 65 65 6e 77 69 63  noon in.Greenwic
e810: 68 20 6f 6e 20 4e 6f 76 65 6d 62 65 72 20 32 34  h on November 24
e820: 2c 20 34 37 31 34 20 42 2e 43 2e 20 28 47 72 65  , 4714 B.C. (Gre
e830: 67 6f 72 69 61 6e 20 43 61 6c 65 6e 64 61 72 29  gorian Calendar)
e840: 2e 20 0a 54 68 65 20 6a 75 6c 69 61 6e 20 64 61  . .The julian da
e850: 79 20 6e 75 6d 62 65 72 20 69 73 20 74 68 65 20  y number is the 
e860: 70 72 65 66 65 72 72 65 64 20 69 6e 74 65 72 6e  preferred intern
e870: 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f  al representatio
e880: 6e 20 6f 66 20 64 61 74 65 73 2e 0a 54 68 65 20  n of dates..The 
e890: 73 74 72 66 74 69 6d 65 28 29 20 72 6f 75 74 69  strftime() routi
e8a0: 6e 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 64  ne returns the d
e8b0: 61 74 65 20 66 6f 72 6d 61 74 74 65 64 20 61 63  ate formatted ac
e8c0: 63 6f 72 64 69 6e 67 20 74 6f 20 0a 74 68 65 20  cording to .the 
e8d0: 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 73 70  format string sp
e8e0: 65 63 69 66 69 65 64 20 61 73 20 74 68 65 20 66  ecified as the f
e8f0: 69 72 73 74 20 61 72 67 75 6d 65 6e 74 2e 0a 54  irst argument..T
e900: 68 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67  he format string
e910: 20 73 75 70 70 6f 72 74 73 20 6d 6f 73 74 2c 20   supports most, 
e920: 62 75 74 20 6e 6f 74 20 61 6c 6c 2c 20 6f 66 20  but not all, of 
e930: 74 68 65 20 6d 6f 72 65 20 0a 63 6f 6d 6d 6f 6e  the more .common
e940: 20 73 75 62 73 74 69 74 75 74 69 6f 6e 73 20 66   substitutions f
e950: 6f 75 6e 64 20 69 6e 20 74 68 65 20 73 74 72 66  ound in the strf
e960: 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f 6e 20  time() function 
e970: 66 72 6f 6d 20 0a 74 68 65 20 73 74 61 6e 64 61  from .the standa
e980: 72 64 20 43 20 6c 69 62 72 61 72 79 20 70 6c 75  rd C library plu
e990: 73 20 74 77 6f 20 6e 65 77 20 73 75 62 73 74 69  s two new substi
e9a0: 74 75 74 69 6f 6e 73 2c 20 25 66 20 61 6e 64 20  tutions, %f and 
e9b0: 25 4a 2e 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e  %J..The followin
e9c0: 67 20 69 73 20 61 20 63 6f 6d 70 6c 65 74 65 20  g is a complete 
e9d0: 6c 69 73 74 20 6f 66 20 76 61 6c 69 64 20 73 74  list of valid st
e9e0: 72 66 74 69 6d 65 28 29 20 73 75 62 73 74 69 74  rftime() substit
e9f0: 75 74 69 6f 6e 73 3a 0a 3c 2f 70 3e 0a 0a 3c 62  utions:.</p>..<b
ea00: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c  lockquote>.<tabl
ea10: 65 20 62 6f 72 64 65 72 3d 22 30 22 20 63 65 6c  e border="0" cel
ea20: 6c 70 61 64 64 69 6e 67 3d 22 30 22 20 63 65 6c  lpadding="0" cel
ea30: 6c 73 70 61 63 69 6e 67 3d 22 30 22 3e 0a 3c 74  lspacing="0">.<t
ea40: 72 3e 3c 74 64 3e 3c 74 64 20 77 69 64 74 68 3d  r><td><td width=
ea50: 22 31 30 22 3e 3c 74 64 3e 3c 2f 74 72 3e 0a 0a  "10"><td></tr>..
ea60: 3c 74 72 3e 3c 74 64 3e 20 25 64 20 3c 74 64 3e  <tr><td> %d <td>
ea70: 3c 74 64 3e 20 64 61 79 20 6f 66 20 6d 6f 6e 74  <td> day of mont
ea80: 68 3a 20 30 30 0a 3c 74 72 3e 3c 74 64 3e 20 25  h: 00.<tr><td> %
ea90: 66 20 3c 74 64 3e 3c 74 64 3e 20 66 72 61 63 74  f <td><td> fract
eaa0: 69 6f 6e 61 6c 20 73 65 63 6f 6e 64 73 3a 20 53  ional seconds: S
eab0: 53 2e 53 53 53 0a 3c 74 72 3e 3c 74 64 3e 20 25  S.SSS.<tr><td> %
eac0: 48 20 3c 74 64 3e 3c 74 64 3e 20 68 6f 75 72 3a  H <td><td> hour:
ead0: 20 30 30 2d 32 34 20 0a 3c 74 72 3e 3c 74 64 3e   00-24 .<tr><td>
eae0: 20 25 6a 20 3c 74 64 3e 3c 74 64 3e 20 64 61 79   %j <td><td> day
eaf0: 20 6f 66 20 79 65 61 72 3a 20 30 30 31 2d 33 36   of year: 001-36
eb00: 36 0a 3c 74 72 3e 3c 74 64 3e 20 25 4a 20 3c 74  6.<tr><td> %J <t
eb10: 64 3e 3c 74 64 3e 20 4a 75 6c 69 61 6e 20 64 61  d><td> Julian da
eb20: 79 20 6e 75 6d 62 65 72 0a 3c 74 72 3e 3c 74 64  y number.<tr><td
eb30: 3e 20 25 6d 20 3c 74 64 3e 3c 74 64 3e 20 6d 6f  > %m <td><td> mo
eb40: 6e 74 68 3a 20 30 31 2d 31 32 0a 3c 74 72 3e 3c  nth: 01-12.<tr><
eb50: 74 64 3e 20 25 4d 20 3c 74 64 3e 3c 74 64 3e 20  td> %M <td><td> 
eb60: 6d 69 6e 75 74 65 3a 20 30 30 2d 35 39 0a 3c 74  minute: 00-59.<t
eb70: 72 3e 3c 74 64 3e 20 25 73 20 3c 74 64 3e 3c 74  r><td> %s <td><t
eb80: 64 3e 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65  d> seconds since
eb90: 20 31 39 37 30 2d 30 31 2d 30 31 0a 3c 74 72 3e   1970-01-01.<tr>
eba0: 3c 74 64 3e 20 25 53 20 3c 74 64 3e 3c 74 64 3e  <td> %S <td><td>
ebb0: 20 73 65 63 6f 6e 64 73 3a 20 30 30 2d 35 39 0a   seconds: 00-59.
ebc0: 3c 74 72 3e 3c 74 64 3e 20 25 77 20 3c 74 64 3e  <tr><td> %w <td>
ebd0: 3c 74 64 3e 20 64 61 79 20 6f 66 20 77 65 65 6b  <td> day of week
ebe0: 20 30 2d 36 20 77 69 74 68 20 73 75 6e 64 61 79   0-6 with sunday
ebf0: 3d 3d 30 0a 3c 74 72 3e 3c 74 64 3e 20 25 57 20  ==0.<tr><td> %W 
ec00: 3c 74 64 3e 3c 74 64 3e 20 77 65 65 6b 20 6f 66  <td><td> week of
ec10: 20 79 65 61 72 3a 20 30 30 2d 35 33 0a 3c 74 72   year: 00-53.<tr
ec20: 3e 3c 74 64 3e 20 25 59 20 3c 74 64 3e 3c 74 64  ><td> %Y <td><td
ec30: 3e 20 79 65 61 72 3a 20 30 30 30 30 2d 39 39 39  > year: 0000-999
ec40: 39 0a 3c 74 72 3e 3c 74 64 3e 20 25 25 20 3c 74  9.<tr><td> %% <t
ec50: 64 3e 3c 74 64 3e 20 25 0a 3c 2f 74 61 62 6c 65  d><td> %.</table
ec60: 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >.</blockquote>.
ec70: 0a 3c 70 3e 0a 4e 6f 74 69 63 65 20 74 68 61 74  .<p>.Notice that
ec80: 20 61 6c 6c 20 6f 74 68 65 72 20 64 61 74 65 20   all other date 
ec90: 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f  and time functio
eca0: 6e 73 20 63 61 6e 20 62 65 20 65 78 70 72 65 73  ns can be expres
ecb0: 73 65 64 0a 69 6e 20 74 65 72 6d 73 20 6f 66 20  sed.in terms of 
ecc0: 73 74 72 66 74 69 6d 65 28 29 3a 0a 3c 2f 70 3e  strftime():.</p>
ecd0: 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c  ..<blockquote>.<
ece0: 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 22 30 22  table border="0"
ecf0: 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 30 22   cellpadding="0"
ed00: 20 63 65 6c 6c 73 70 61 63 69 6e 67 3d 22 30 22   cellspacing="0"
ed10: 3e 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 46 75 6e  >.<tr><td><b>Fun
ed20: 63 74 69 6f 6e 3c 2f 62 3e 3c 74 64 20 77 69 64  ction</b><td wid
ed30: 74 68 3d 22 33 30 22 3e 3c 74 64 3e 3c 62 3e 45  th="30"><td><b>E
ed40: 71 75 69 76 61 6c 65 6e 74 20 73 74 72 66 74 69  quivalent strfti
ed50: 6d 65 28 29 3c 2f 62 3e 0a 3c 74 72 3e 3c 74 64  me()</b>.<tr><td
ed60: 3e 20 20 20 64 61 74 65 28 2e 2e 2e 29 20 20 20  >   date(...)   
ed70: 20 20 20 3c 74 64 3e 3c 74 64 3e 20 20 73 74 72     <td><td>  str
ed80: 66 74 69 6d 65 28 22 25 59 2d 25 6d 2d 25 64 22  ftime("%Y-%m-%d"
ed90: 2c 20 2e 2e 2e 29 0a 3c 74 72 3e 3c 74 64 3e 20  , ...).<tr><td> 
eda0: 20 20 74 69 6d 65 28 2e 2e 2e 29 20 20 20 20 20    time(...)     
edb0: 20 3c 74 64 3e 3c 74 64 3e 20 20 73 74 72 66 74   <td><td>  strft
edc0: 69 6d 65 28 22 25 48 3a 25 4d 3a 25 53 22 2c 20  ime("%H:%M:%S", 
edd0: 2e 2e 2e 29 0a 3c 74 72 3e 3c 74 64 3e 20 20 20  ...).<tr><td>   
ede0: 64 61 74 65 74 69 6d 65 28 2e 2e 2e 29 20 20 3c  datetime(...)  <
edf0: 74 64 3e 3c 74 64 3e 20 20 73 74 72 66 74 69 6d  td><td>  strftim
ee00: 65 28 22 25 59 2d 25 6d 2d 25 64 20 25 48 3a 25  e("%Y-%m-%d %H:%
ee10: 4d 3a 25 53 22 2c 20 2e 2e 2e 29 0a 3c 74 72 3e  M:%S", ...).<tr>
ee20: 3c 74 64 3e 20 20 20 6a 75 6c 69 61 6e 64 61 79  <td>   julianday
ee30: 28 2e 2e 2e 29 20 3c 74 64 3e 3c 74 64 3e 20 20  (...) <td><td>  
ee40: 73 74 72 66 74 69 6d 65 28 22 25 4a 22 2c 20 2e  strftime("%J", .
ee50: 2e 2e 29 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62  ..).</table>.</b
ee60: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a  lockquote>..<p>.
ee70: 54 68 65 20 6f 6e 6c 79 20 72 65 61 73 6f 6e 73  The only reasons
ee80: 20 66 6f 72 20 70 72 6f 76 69 64 69 6e 67 20 66   for providing f
ee90: 75 6e 63 74 69 6f 6e 73 20 6f 74 68 65 72 20 74  unctions other t
eea0: 68 61 6e 20 73 74 72 66 74 69 6d 65 28 29 20 69  han strftime() i
eeb0: 73 0a 66 6f 72 20 63 6f 6e 76 65 6e 69 65 6e 63  s.for convenienc
eec0: 65 20 61 6e 64 20 66 6f 72 20 65 66 66 69 63 69  e and for effici
eed0: 65 6e 63 79 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e  ency..</p>..<h3>
eee0: 54 69 6d 65 20 53 74 72 69 6e 67 73 3c 2f 68 33  Time Strings</h3
eef0: 3e 0a 0a 3c 70 3e 41 20 74 69 6d 65 20 73 74 72  >..<p>A time str
ef00: 69 6e 67 20 63 61 6e 20 62 65 20 69 6e 20 61 6e  ing can be in an
ef10: 79 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69  y of the followi
ef20: 6e 67 20 66 6f 72 6d 61 74 73 3a 3c 2f 70 3e 0a  ng formats:</p>.
ef30: 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59  .<ol>.<li> <i>YY
ef40: 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 0a 3c 6c 69  YY-MM-DD</i>.<li
ef50: 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 20  > <i>YYYY-MM-DD 
ef60: 48 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c  HH:MM</i>.<li> <
ef70: 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a  i>YYYY-MM-DD HH:
ef80: 4d 4d 3a 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c  MM:SS</i>.<li> <
ef90: 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a  i>YYYY-MM-DD HH:
efa0: 4d 4d 3a 53 53 2e 53 53 53 3c 2f 69 3e 0a 3c 6c  MM:SS.SSS</i>.<l
efb0: 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44  i> <i>YYYY-MM-DD
efc0: 3c 2f 69 3e 3c 62 3e 54 3c 2f 62 3e 3c 69 3e 48  </i><b>T</b><i>H
efd0: 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69  H:MM</i>.<li> <i
efe0: 3e 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c  >YYYY-MM-DD</i><
eff0: 62 3e 54 3c 2f 62 3e 3c 69 3e 48 48 3a 4d 4d 3a  b>T</b><i>HH:MM:
f000: 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59  SS</i>.<li> <i>Y
f010: 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c 62 3e  YYY-MM-DD</i><b>
f020: 54 3c 2f 62 3e 3c 69 3e 48 48 3a 4d 4d 3a 53 53  T</b><i>HH:MM:SS
f030: 2e 53 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69  .SSS</i>.<li> <i
f040: 3e 48 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20  >HH:MM</i>.<li> 
f050: 3c 69 3e 48 48 3a 4d 4d 3a 53 53 3c 2f 69 3e 0a  <i>HH:MM:SS</i>.
f060: 3c 6c 69 3e 20 3c 69 3e 48 48 3a 4d 4d 3a 53 53  <li> <i>HH:MM:SS
f070: 2e 53 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 62  .SSS</i>.<li> <b
f080: 3e 6e 6f 77 3c 2f 62 3e 0a 3c 6c 69 3e 20 3c 69  >now</b>.<li> <i
f090: 3e 44 44 44 44 44 44 44 44 44 44 3c 2f 69 3e 0a  >DDDDDDDDDD</i>.
f0a0: 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 0a 49 6e 20 66 6f  </ol>..<p>.In fo
f0b0: 72 6d 61 74 73 20 35 20 74 68 72 6f 75 67 68 20  rmats 5 through 
f0c0: 37 2c 20 74 68 65 20 22 54 22 20 69 73 20 61 20  7, the "T" is a 
f0d0: 6c 69 74 65 72 61 6c 20 63 68 61 72 61 63 74 65  literal characte
f0e0: 72 20 73 65 70 61 72 61 74 69 6e 67 20 0a 74 68  r separating .th
f0f0: 65 20 64 61 74 65 20 61 6e 64 20 74 68 65 20 74  e date and the t
f100: 69 6d 65 2c 20 61 73 20 72 65 71 75 69 72 65 64  ime, as required
f110: 20 62 79 20 74 68 65 20 49 53 4f 2d 38 36 30 31   by the ISO-8601
f120: 20 73 74 61 6e 64 61 72 64 2e 20 0a 46 6f 72 6d   standard. .Form
f130: 61 74 73 20 38 20 74 68 72 6f 75 67 68 20 31 30  ats 8 through 10
f140: 20 74 68 61 74 20 73 70 65 63 69 66 79 20 6f 6e   that specify on
f150: 6c 79 20 61 20 74 69 6d 65 20 61 73 73 75 6d 65  ly a time assume
f160: 20 61 20 64 61 74 65 20 6f 66 20 0a 32 30 30 30   a date of .2000
f170: 2d 30 31 2d 30 31 2e 20 46 6f 72 6d 61 74 20 31  -01-01. Format 1
f180: 31 2c 20 74 68 65 20 73 74 72 69 6e 67 20 27 6e  1, the string 'n
f190: 6f 77 27 2c 20 69 73 20 63 6f 6e 76 65 72 74 65  ow', is converte
f1a0: 64 20 69 6e 74 6f 20 74 68 65 20 0a 63 75 72 72  d into the .curr
f1b0: 65 6e 74 20 64 61 74 65 20 61 6e 64 20 74 69 6d  ent date and tim
f1c0: 65 2e 20 0a 55 6e 69 76 65 72 73 61 6c 20 43 6f  e. .Universal Co
f1d0: 6f 72 64 69 6e 61 74 65 64 20 54 69 6d 65 20 28  ordinated Time (
f1e0: 55 54 43 29 20 69 73 20 75 73 65 64 2e 20 0a 46  UTC) is used. .F
f1f0: 6f 72 6d 61 74 20 31 32 20 69 73 20 74 68 65 20  ormat 12 is the 
f200: 6a 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d 62 65  julian day numbe
f210: 72 20 65 78 70 72 65 73 73 65 64 20 61 73 20 61  r expressed as a
f220: 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
f230: 76 61 6c 75 65 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33  value..</p>..<h3
f240: 3e 4d 6f 64 69 66 69 65 72 73 3c 2f 68 33 3e 0a  >Modifiers</h3>.
f250: 0a 3c 70 3e 54 68 65 20 74 69 6d 65 20 73 74 72  .<p>The time str
f260: 69 6e 67 20 63 61 6e 20 62 65 20 66 6f 6c 6c 6f  ing can be follo
f270: 77 65 64 20 62 79 20 7a 65 72 6f 20 6f 72 20 6d  wed by zero or m
f280: 6f 72 65 20 6d 6f 64 69 66 69 65 72 73 20 74 68  ore modifiers th
f290: 61 74 20 0a 61 6c 74 65 72 20 74 68 65 20 64 61  at .alter the da
f2a0: 74 65 20 6f 72 20 61 6c 74 65 72 20 74 68 65 20  te or alter the 
f2b0: 69 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 20 6f  interpretation o
f2c0: 66 20 74 68 65 20 64 61 74 65 2e 20 0a 54 68 65  f the date. .The
f2d0: 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f 64 69 66   available modif
f2e0: 69 65 72 73 20 61 72 65 20 61 73 20 66 6f 6c 6c  iers are as foll
f2f0: 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c  ows.</p>..<ol>.<
f300: 6c 69 3e 20 4e 4e 4e 20 64 61 79 73 0a 3c 6c 69  li> NNN days.<li
f310: 3e 20 4e 4e 4e 20 68 6f 75 72 73 0a 3c 6c 69 3e  > NNN hours.<li>
f320: 20 4e 4e 4e 20 6d 69 6e 75 74 65 73 0a 3c 6c 69   NNN minutes.<li
f330: 3e 20 4e 4e 4e 2e 4e 4e 4e 4e 20 73 65 63 6f 6e  > NNN.NNNN secon
f340: 64 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 6d 6f 6e 74  ds.<li> NNN mont
f350: 68 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 79 65 61 72  hs.<li> NNN year
f360: 73 0a 3c 6c 69 3e 20 73 74 61 72 74 20 6f 66 20  s.<li> start of 
f370: 6d 6f 6e 74 68 0a 3c 6c 69 3e 20 73 74 61 72 74  month.<li> start
f380: 20 6f 66 20 79 65 61 72 0a 3c 6c 69 3e 20 73 74   of year.<li> st
f390: 61 72 74 20 6f 66 20 64 61 79 0a 3c 6c 69 3e 20  art of day.<li> 
f3a0: 77 65 65 6b 64 61 79 20 4e 0a 3c 6c 69 3e 20 75  weekday N.<li> u
f3b0: 6e 69 78 65 70 6f 63 68 0a 3c 6c 69 3e 20 6c 6f  nixepoch.<li> lo
f3c0: 63 61 6c 74 69 6d 65 0a 3c 6c 69 3e 20 75 74 63  caltime.<li> utc
f3d0: 20 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 54 68 65 20   .</ol>..<p>The 
f3e0: 66 69 72 73 74 20 73 69 78 20 6d 6f 64 69 66 69  first six modifi
f3f0: 65 72 73 20 28 31 20 74 68 72 6f 75 67 68 20 36  ers (1 through 6
f400: 29 20 0a 73 69 6d 70 6c 79 20 61 64 64 20 74 68  ) .simply add th
f410: 65 20 73 70 65 63 69 66 69 65 64 20 61 6d 6f 75  e specified amou
f420: 6e 74 20 6f 66 20 74 69 6d 65 20 74 6f 20 74 68  nt of time to th
f430: 65 20 64 61 74 65 20 0a 73 70 65 63 69 66 69 65  e date .specifie
f440: 64 20 62 79 20 74 68 65 20 70 72 65 63 65 64 69  d by the precedi
f450: 6e 67 20 74 69 6d 65 73 74 72 69 6e 67 2e 3c 2f  ng timestring.</
f460: 70 3e 0a 0a 3c 70 3e 54 68 65 20 22 73 74 61 72  p>..<p>The "star
f470: 74 20 6f 66 22 20 6d 6f 64 69 66 69 65 72 73 20  t of" modifiers 
f480: 28 37 20 74 68 72 6f 75 67 68 20 39 29 20 73 68  (7 through 9) sh
f490: 69 66 74 20 74 68 65 20 64 61 74 65 20 62 61 63  ift the date bac
f4a0: 6b 77 61 72 64 73 20 0a 74 6f 20 74 68 65 20 62  kwards .to the b
f4b0: 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20  eginning of the 
f4c0: 63 75 72 72 65 6e 74 20 6d 6f 6e 74 68 2c 20 79  current month, y
f4d0: 65 61 72 20 6f 72 20 64 61 79 2e 3c 2f 70 3e 0a  ear or day.</p>.
f4e0: 0a 3c 70 3e 54 68 65 20 22 77 65 65 6b 64 61 79  .<p>The "weekday
f4f0: 22 20 6d 6f 64 69 66 69 65 72 20 61 64 76 61 6e  " modifier advan
f500: 63 65 73 20 74 68 65 20 64 61 74 65 20 66 6f 72  ces the date for
f510: 77 61 72 64 20 74 6f 20 74 68 65 20 6e 65 78 74  ward to the next
f520: 20 64 61 74 65 20 0a 77 68 65 72 65 20 74 68 65   date .where the
f530: 20 77 65 65 6b 64 61 79 20 6e 75 6d 62 65 72 20   weekday number 
f540: 69 73 20 4e 2e 20 53 75 6e 64 61 79 20 69 73 20  is N. Sunday is 
f550: 30 2c 20 4d 6f 6e 64 61 79 20 69 73 20 31 2c 20  0, Monday is 1, 
f560: 61 6e 64 20 73 6f 20 66 6f 72 74 68 2e 3c 2f 70  and so forth.</p
f570: 3e 0a 0a 3c 70 3e 54 68 65 20 22 75 6e 69 78 65  >..<p>The "unixe
f580: 70 6f 63 68 22 20 6d 6f 64 69 66 69 65 72 20 28  poch" modifier (
f590: 31 31 29 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 69  11) only works i
f5a0: 66 20 69 74 20 69 6d 6d 65 64 69 61 74 65 6c 79  f it immediately
f5b0: 20 66 6f 6c 6c 6f 77 73 20 0a 61 20 74 69 6d 65   follows .a time
f5c0: 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20 44 44  string in the DD
f5d0: 44 44 44 44 44 44 44 44 20 66 6f 72 6d 61 74 2e  DDDDDDDD format.
f5e0: 20 0a 54 68 69 73 20 6d 6f 64 69 66 69 65 72 20   .This modifier 
f5f0: 63 61 75 73 65 73 20 74 68 65 20 44 44 44 44 44  causes the DDDDD
f600: 44 44 44 44 44 20 74 6f 20 62 65 20 69 6e 74 65  DDDDD to be inte
f610: 72 70 72 65 74 65 64 20 6e 6f 74 20 0a 61 73 20  rpreted not .as 
f620: 61 20 6a 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d  a julian day num
f630: 62 65 72 20 61 73 20 69 74 20 6e 6f 72 6d 61 6c  ber as it normal
f640: 6c 79 20 77 6f 75 6c 64 20 62 65 2c 20 62 75 74  ly would be, but
f650: 20 61 73 20 74 68 65 20 0a 6e 75 6d 62 65 72 20   as the .number 
f660: 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65  of seconds since
f670: 20 31 39 37 30 2e 20 0a 54 68 69 73 20 6d 6f 64   1970. .This mod
f680: 69 66 69 65 72 20 61 6c 6c 6f 77 73 20 75 6e 69  ifier allows uni
f690: 78 2d 62 61 73 65 64 20 74 69 6d 65 73 20 74 6f  x-based times to
f6a0: 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f   be converted to
f6b0: 20 0a 6a 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d   .julian day num
f6c0: 62 65 72 73 20 65 61 73 69 6c 79 2e 3c 2f 70 3e  bers easily.</p>
f6d0: 0a 0a 3c 70 3e 54 68 65 20 22 6c 6f 63 61 6c 74  ..<p>The "localt
f6e0: 69 6d 65 22 20 6d 6f 64 69 66 69 65 72 20 28 31  ime" modifier (1
f6f0: 32 29 20 61 64 6a 75 73 74 73 20 74 68 65 20 70  2) adjusts the p
f700: 72 65 76 69 6f 75 73 20 74 69 6d 65 0a 73 74 72  revious time.str
f710: 69 6e 67 20 73 6f 20 74 68 61 74 20 69 74 20 64  ing so that it d
f720: 69 73 70 6c 61 79 73 20 74 68 65 20 63 6f 72 72  isplays the corr
f730: 65 63 74 20 6c 6f 63 61 6c 20 74 69 6d 65 2e 20  ect local time. 
f740: 22 75 74 63 22 20 75 6e 64 6f 65 73 20 74 68 69  "utc" undoes thi
f750: 73 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 45 78 61 6d  s.</p>..<h3>Exam
f760: 70 6c 65 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 43 6f  ples</h3>..<p>Co
f770: 6d 70 75 74 65 20 74 68 65 20 63 75 72 72 65 6e  mpute the curren
f780: 74 20 64 61 74 65 2e 3c 70 3e 0a 0a 3c 62 6c 6f  t date.<p>..<blo
f790: 63 6b 71 75 6f 74 65 3e 53 45 4c 45 43 54 20 64  ckquote>SELECT d
f7a0: 61 74 65 28 27 6e 6f 77 27 29 3b 3c 2f 62 6c 6f  ate('now');</blo
f7b0: 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d  ckquote>..<p>Com
f7c0: 70 75 74 65 20 74 68 65 20 6c 61 73 74 20 64 61  pute the last da
f7d0: 79 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  y of the current
f7e0: 20 6d 6f 6e 74 68 2e 3c 2f 70 3e 0a 0a 3c 62 6c   month.</p>..<bl
f7f0: 6f 63 6b 71 75 6f 74 65 3e 53 45 4c 45 43 54 20  ockquote>SELECT 
f800: 64 61 74 65 28 27 6e 6f 77 27 2c 27 73 74 61 72  date('now','star
f810: 74 20 6f 66 20 6d 6f 6e 74 68 27 2c 27 2b 31 20  t of month','+1 
f820: 6d 6f 6e 74 68 27 2c 27 2d 31 20 64 61 79 27 29  month','-1 day')
f830: 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  ;.</blockquote>.
f840: 0a 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20  .<p>Compute the 
f850: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 67 69  date and time gi
f860: 76 65 6e 20 61 20 75 6e 69 78 20 74 69 6d 65 73  ven a unix times
f870: 74 61 6d 70 20 31 30 39 32 39 34 31 34 36 36 2e  tamp 1092941466.
f880: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
f890: 65 3e 0a 20 20 20 20 53 45 4c 45 43 54 20 64 61  e>.    SELECT da
f8a0: 74 65 74 69 6d 65 28 31 30 39 32 39 34 31 34 36  tetime(109294146
f8b0: 36 2c 20 27 75 6e 69 78 65 70 6f 63 68 27 29 3b  6, 'unixepoch');
f8c0: 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  .</blockquote>..
f8d0: 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 64  <p>Compute the d
f8e0: 61 74 65 20 61 6e 64 20 74 69 6d 65 20 67 69 76  ate and time giv
f8f0: 65 6e 20 61 20 75 6e 69 78 20 74 69 6d 65 73 74  en a unix timest
f900: 61 6d 70 20 31 30 39 32 39 34 31 34 36 36 2c 20  amp 1092941466, 
f910: 61 6e 64 20 0a 63 6f 6d 70 65 6e 73 61 74 65 20  and .compensate 
f920: 66 6f 72 20 79 6f 75 72 20 6c 6f 63 61 6c 20 74  for your local t
f930: 69 6d 65 7a 6f 6e 65 2e 3c 2f 70 3e 0a 0a 3c 62  imezone.</p>..<b
f940: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c  lockquote>.  SEL
f950: 45 43 54 20 64 61 74 65 74 69 6d 65 28 31 30 39  ECT datetime(109
f960: 32 39 34 31 34 36 36 2c 20 27 75 6e 69 78 65 70  2941466, 'unixep
f970: 6f 63 68 27 2c 20 27 6c 6f 63 61 6c 74 69 6d 65  och', 'localtime
f980: 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  ');.</blockquote
f990: 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68  >..<p>Compute th
f9a0: 65 20 63 75 72 72 65 6e 74 20 75 6e 69 78 20 74  e current unix t
f9b0: 69 6d 65 73 74 61 6d 70 2e 3c 2f 70 3e 0a 0a 3c  imestamp.</p>..<
f9c0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45  blockquote>.  SE
f9d0: 4c 45 43 54 20 73 74 72 66 74 69 6d 65 28 27 25  LECT strftime('%
f9e0: 73 27 2c 27 6e 6f 77 27 29 3b 0a 3c 2f 62 6c 6f  s','now');.</blo
f9f0: 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d  ckquote>..<p>Com
fa00: 70 75 74 65 20 74 68 65 20 6e 75 6d 62 65 72 20  pute the number 
fa10: 6f 66 20 64 61 79 73 20 73 69 6e 63 65 20 74 68  of days since th
fa20: 65 20 62 61 74 74 6c 65 20 6f 66 20 48 61 73 74  e battle of Hast
fa30: 69 6e 67 73 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  ings.</p>..<bloc
fa40: 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54  kquote>.  SELECT
fa50: 20 6a 75 6c 69 61 6e 64 61 79 28 27 6e 6f 77 27   julianday('now'
fa60: 29 20 2d 20 6a 75 6c 69 61 6e 64 61 79 28 27 31  ) - julianday('1
fa70: 30 36 36 2d 31 30 2d 31 34 27 2c 27 67 72 65 67  066-10-14','greg
fa80: 6f 72 69 61 6e 27 29 3b 0a 3c 2f 62 6c 6f 63 6b  orian');.</block
fa90: 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75  quote>..<p>Compu
faa0: 74 65 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  te the number of
fab0: 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 61   seconds since a
fac0: 20 70 61 72 74 69 63 75 6c 61 72 20 6d 6f 6d 65   particular mome
fad0: 6e 74 20 69 6e 20 32 30 30 34 3a 3c 2f 70 3e 0a  nt in 2004:</p>.
fae0: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20  .<blockquote>.  
faf0: 53 45 4c 45 43 54 20 73 74 72 66 74 69 6d 65 28  SELECT strftime(
fb00: 27 25 73 27 2c 27 6e 6f 77 27 29 20 2d 20 73 74  '%s','now') - st
fb10: 72 66 74 69 6d 65 28 27 25 73 27 2c 27 32 30 30  rftime('%s','200
fb20: 34 2d 30 31 2d 30 31 20 30 32 3a 33 34 3a 35 36  4-01-01 02:34:56
fb30: 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  ');.</blockquote
fb40: 3e 0a 0a 3c 70 3e 0a 43 6f 6d 70 75 74 65 20 74  >..<p>.Compute t
fb50: 68 65 20 64 61 74 65 20 6f 66 20 74 68 65 20 66  he date of the f
fb60: 69 72 73 74 20 54 75 65 73 64 61 79 20 69 6e 20  irst Tuesday in 
fb70: 4f 63 74 6f 62 65 72 0a 66 6f 72 20 74 68 65 20  October.for the 
fb80: 63 75 72 72 65 6e 74 20 79 65 61 72 2e 0a 3c 2f  current year..</
fb90: 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
fba0: 0a 20 20 53 45 4c 45 43 54 20 64 61 74 65 28 27  .  SELECT date('
fbb0: 6e 6f 77 27 2c 27 73 74 61 72 74 20 6f 66 20 79  now','start of y
fbc0: 65 61 72 27 2c 27 2b 39 20 6d 6f 6e 74 68 73 27  ear','+9 months'
fbd0: 2c 27 77 65 65 6b 64 61 79 20 32 27 29 3b 0a 3c  ,'weekday 2');.<
fbe0: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70  /blockquote>..<p
fbf0: 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 74 69 6d  >Compute the tim
fc00: 65 20 73 69 6e 63 65 20 74 68 65 20 75 6e 69 78  e since the unix
fc10: 20 65 70 6f 63 68 20 69 6e 20 73 65 63 6f 6e 64   epoch in second
fc20: 73 20 0a 28 6c 69 6b 65 20 73 74 72 66 74 69 6d  s .(like strftim
fc30: 65 28 27 25 73 27 2c 27 6e 6f 77 27 29 20 65 78  e('%s','now') ex
fc40: 63 65 70 74 20 69 6e 63 6c 75 64 65 73 20 66 72  cept includes fr
fc50: 61 63 74 69 6f 6e 61 6c 20 70 61 72 74 29 3a 3c  actional part):<
fc60: 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
fc70: 3e 0a 20 20 53 45 4c 45 43 54 20 28 6a 75 6c 69  >.  SELECT (juli
fc80: 61 6e 64 61 79 28 27 6e 6f 77 27 29 20 2d 20 32  anday('now') - 2
fc90: 34 34 30 35 38 37 2e 35 29 2a 38 36 34 30 30 2e  440587.5)*86400.
fca0: 30 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  0;.</blockquote>
fcb0: 0a 0a 3c 68 33 3e 43 61 76 65 61 74 73 20 41 6e  ..<h3>Caveats An
fcc0: 64 20 42 75 67 73 3c 2f 68 33 3e 0a 0a 3c 70 3e  d Bugs</h3>..<p>
fcd0: 54 68 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20  The computation 
fce0: 6f 66 20 6c 6f 63 61 6c 20 74 69 6d 65 20 64 65  of local time de
fcf0: 70 65 6e 64 73 20 68 65 61 76 69 6c 79 20 6f 6e  pends heavily on
fd00: 20 74 68 65 20 77 68 69 6d 20 0a 6f 66 20 6c 6f   the whim .of lo
fd10: 63 61 6c 20 70 6f 6c 69 74 69 63 69 61 6e 73 20  cal politicians 
fd20: 61 6e 64 20 69 73 20 74 68 75 73 20 64 69 66 66  and is thus diff
fd30: 69 63 75 6c 74 20 74 6f 20 67 65 74 20 63 6f 72  icult to get cor
fd40: 72 65 63 74 20 66 6f 72 20 0a 61 6c 6c 20 6c 6f  rect for .all lo
fd50: 63 61 6c 65 73 2e 20 49 6e 20 74 68 69 73 20 69  cales. In this i
fd60: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 74  mplementation, t
fd70: 68 65 20 73 74 61 6e 64 61 72 64 20 43 20 6c 69  he standard C li
fd80: 62 72 61 72 79 20 0a 66 75 6e 63 74 69 6f 6e 20  brary .function 
fd90: 6c 6f 63 61 6c 74 69 6d 65 5f 72 28 29 20 69 73  localtime_r() is
fda0: 20 75 73 65 64 20 74 6f 20 61 73 73 69 73 74 20   used to assist 
fdb0: 69 6e 20 74 68 65 20 63 61 6c 63 75 6c 61 74 69  in the calculati
fdc0: 6f 6e 20 6f 66 20 0a 6c 6f 63 61 6c 20 74 69 6d  on of .local tim
fdd0: 65 2e 20 20 54 68 65 20 0a 6c 6f 63 61 6c 74 69  e.  The .localti
fde0: 6d 65 5f 72 28 29 20 43 20 66 75 6e 63 74 69 6f  me_r() C functio
fdf0: 6e 20 6e 6f 72 6d 61 6c 6c 79 20 6f 6e 6c 79 20  n normally only 
fe00: 77 6f 72 6b 73 20 66 6f 72 20 79 65 61 72 73 0a  works for years.
fe10: 62 65 74 77 65 65 6e 20 31 39 37 30 20 61 6e 64  between 1970 and
fe20: 20 32 30 33 37 2e 20 46 6f 72 20 64 61 74 65 73   2037. For dates
fe30: 20 6f 75 74 73 69 64 65 20 74 68 69 73 20 72 61   outside this ra
fe40: 6e 67 65 2c 20 53 51 4c 69 74 65 20 0a 61 74 74  nge, SQLite .att
fe50: 65 6d 70 74 73 20 74 6f 20 6d 61 70 20 74 68 65  empts to map the
fe60: 20 79 65 61 72 20 69 6e 74 6f 20 61 6e 20 65 71   year into an eq
fe70: 75 69 76 61 6c 65 6e 74 20 79 65 61 72 20 77 69  uivalent year wi
fe80: 74 68 69 6e 20 0a 74 68 69 73 20 72 61 6e 67 65  thin .this range
fe90: 2c 20 64 6f 20 74 68 65 20 63 61 6c 63 75 6c 61  , do the calcula
fea0: 74 69 6f 6e 2c 20 74 68 65 6e 20 6d 61 70 20 74  tion, then map t
feb0: 68 65 20 79 65 61 72 20 62 61 63 6b 2e 3c 2f 70  he year back.</p
fec0: 3e 0a 0a 0a 3c 70 3e 44 61 74 65 20 63 6f 6d 70  >...<p>Date comp
fed0: 75 74 61 74 69 6f 6e 73 20 64 6f 20 6e 6f 74 20  utations do not 
fee0: 67 69 76 65 20 63 6f 72 72 65 63 74 20 72 65 73  give correct res
fef0: 75 6c 74 73 20 66 6f 72 20 64 61 74 65 73 20 0a  ults for dates .
ff00: 62 65 66 6f 72 65 20 4a 75 6c 69 61 6e 20 64 61  before Julian da
ff10: 79 20 6e 75 6d 62 65 72 20 30 20 28 2d 34 37 31  y number 0 (-471
ff20: 33 2d 31 31 2d 32 34 20 31 32 3a 30 30 3a 30 30  3-11-24 12:00:00
ff30: 29 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e 6f 6e 2d 56  ).</p>..<p>Non-V
ff40: 69 73 74 61 20 57 69 6e 64 6f 77 73 20 70 6c 61  ista Windows pla
ff50: 74 66 6f 72 6d 73 20 6f 6e 6c 79 20 73 75 70 70  tforms only supp
ff60: 6f 72 74 20 6f 6e 65 20 73 65 74 20 6f 66 20 44  ort one set of D
ff70: 53 54 20 72 75 6c 65 73 2e 20 0a 56 69 73 74 61  ST rules. .Vista
ff80: 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 73 20 74   only supports t
ff90: 77 6f 2e 20 54 68 65 72 65 66 6f 72 65 2c 20 6f  wo. Therefore, o
ffa0: 6e 20 74 68 65 73 65 20 70 6c 61 74 66 6f 72 6d  n these platform
ffb0: 73 2c 20 0a 68 69 73 74 6f 72 69 63 61 6c 20 44  s, .historical D
ffc0: 53 54 20 63 61 6c 63 75 6c 61 74 69 6f 6e 73 20  ST calculations 
ffd0: 77 69 6c 6c 20 62 65 20 69 6e 63 6f 72 72 65 63  will be incorrec
ffe0: 74 2e 20 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c  t. .For example,
fff0: 20 69 6e 20 74 68 65 20 55 53 2c 20 69 6e 20 32   in the US, in 2
10000 30 30 37 20 74 68 65 20 44 53 54 20 72 75 6c 65  007 the DST rule
10010 73 20 63 68 61 6e 67 65 64 2e 20 0a 4e 6f 6e 2d  s changed. .Non-
10020 56 69 73 74 61 20 57 69 6e 64 6f 77 73 20 70 6c  Vista Windows pl
10030 61 74 66 6f 72 6d 73 20 61 70 70 6c 79 20 74 68  atforms apply th
10040 65 20 6e 65 77 20 32 30 30 37 20 44 53 54 20 72  e new 2007 DST r
10050 75 6c 65 73 20 0a 74 6f 20 61 6c 6c 20 70 72 65  ules .to all pre
10060 76 69 6f 75 73 20 79 65 61 72 73 20 61 73 20 77  vious years as w
10070 65 6c 6c 2e 20 56 69 73 74 61 20 64 6f 65 73 20  ell. Vista does 
10080 73 6f 6d 65 77 68 61 74 20 62 65 74 74 65 72 0a  somewhat better.
10090 67 65 74 74 69 6e 67 20 72 65 73 75 6c 74 73 20  getting results 
100a0 63 6f 72 72 65 63 74 20 62 61 63 6b 20 74 6f 20  correct back to 
100b0 31 39 38 36 2c 20 77 68 65 6e 20 74 68 65 20 72  1986, when the r
100c0 75 6c 65 73 20 77 65 72 65 20 61 6c 73 6f 20 63  ules were also c
100d0 68 61 6e 67 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  hanged.</p>..<p>
100e0 41 6c 6c 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6d  All internal com
100f0 70 75 74 61 74 69 6f 6e 73 20 61 73 73 75 6d 65  putations assume
10100 20 74 68 65 20 47 72 65 67 6f 72 69 61 6e 20 63   the Gregorian c
10110 61 6c 65 6e 64 61 72 20 73 79 73 74 65 6d 2e 3c  alendar system.<
10120 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  /p>..<tcl>.#####
10130 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10140 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10150 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10160 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10170 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
10180 6e 20 7b 41 67 67 72 65 67 61 74 65 20 46 75 6e  n {Aggregate Fun
10190 63 74 69 6f 6e 73 7d 20 61 67 67 66 75 6e 63 20  ctions} aggfunc 
101a0 7b 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a 54  {}.</tcl>..<p>.T
101b0 68 65 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  he aggregate fun
101c0 63 74 69 6f 6e 73 20 73 68 6f 77 6e 20 62 65 6c  ctions shown bel
101d0 6f 77 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65  ow are available
101e0 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 41 64   by default.  Ad
101f0 64 69 74 69 6f 6e 61 6c 0a 61 67 67 72 65 67 61  ditional.aggrega
10200 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 77 72 69  te functions wri
10210 74 74 65 6e 20 69 6e 20 43 20 6d 61 79 20 62 65  tten in C may be
10220 20 61 64 64 65 64 20 75 73 69 6e 67 20 74 68 65   added using the
10230 20 0a 5b 73 71 6c 69 74 65 33 5f 63 72 65 61 74   .[sqlite3_creat
10240 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 3c 2f 61  e_function()]</a
10250 3e 0a 41 50 49 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a  >.API.</p>..<p>.
10260 49 6e 20 61 6e 79 20 61 67 67 72 65 67 61 74 65  In any aggregate
10270 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 74   function that t
10280 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72  akes a single ar
10290 67 75 6d 65 6e 74 2c 20 74 68 61 74 20 61 72 67  gument, that arg
102a0 75 6d 65 6e 74 0a 63 61 6e 20 62 65 20 70 72 65  ument.can be pre
102b0 63 65 65 64 65 64 20 62 79 20 74 68 65 20 6b 65  ceeded by the ke
102c0 79 77 6f 72 64 20 44 49 53 54 49 4e 43 54 2e 20  yword DISTINCT. 
102d0 20 49 6e 20 73 75 63 68 20 63 61 73 65 73 2c 20   In such cases, 
102e0 64 75 70 6c 69 63 61 74 65 0a 65 6c 65 6d 65 6e  duplicate.elemen
102f0 74 73 20 61 72 65 20 66 69 6c 74 65 72 65 64 20  ts are filtered 
10300 62 65 66 6f 72 65 20 62 65 69 6e 67 20 70 61 73  before being pas
10310 73 65 64 20 69 6e 74 6f 20 74 68 65 20 61 67 67  sed into the agg
10320 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 2e  regate function.
10330 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68  .For example, th
10340 65 20 66 75 6e 63 74 69 6f 6e 20 22 63 6f 75 6e  e function "coun
10350 74 28 64 69 73 74 69 6e 63 74 20 58 29 22 20 77  t(distinct X)" w
10360 69 6c 6c 20 72 65 74 75 72 6e 20 74 68 65 20 6e  ill return the n
10370 75 6d 62 65 72 0a 6f 66 20 64 69 73 74 69 6e 63  umber.of distinc
10380 74 20 76 61 6c 75 65 73 20 6f 66 20 63 6f 6c 75  t values of colu
10390 6d 6e 20 58 20 69 6e 73 74 65 61 64 20 6f 66 20  mn X instead of 
103a0 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72  the total number
103b0 20 6f 66 20 6e 6f 6e 2d 6e 75 6c 6c 0a 76 61 6c   of non-null.val
103c0 75 65 73 20 69 6e 20 63 6f 6c 75 6d 6e 20 58 2e  ues in column X.
103d0 0a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f  .</p>..<table bo
103e0 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69  rder=0 cellpaddi
103f0 6e 67 3d 31 30 3e 0a 3c 74 63 6c 3e 0a 66 75 6e  ng=10>.<tcl>.fun
10400 63 64 65 66 20 7b 61 76 67 28 58 29 7d 20 7b 7d  cdef {avg(X)} {}
10410 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20   {.  Return the 
10420 61 76 65 72 61 67 65 20 76 61 6c 75 65 20 6f 66  average value of
10430 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 3c 69   all non-NULL <i
10440 3e 58 3c 2f 69 3e 20 77 69 74 68 69 6e 20 61 0a  >X</i> within a.
10450 20 20 67 72 6f 75 70 2e 20 20 53 74 72 69 6e 67    group.  String
10460 20 61 6e 64 20 42 4c 4f 42 20 76 61 6c 75 65 73   and BLOB values
10470 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 6c 6f 6f   that do not loo
10480 6b 20 6c 69 6b 65 20 6e 75 6d 62 65 72 73 20 61  k like numbers a
10490 72 65 0a 20 20 69 6e 74 65 72 70 72 65 74 65 64  re.  interpreted
104a0 20 61 73 20 30 2e 0a 20 20 54 68 65 20 72 65 73   as 0..  The res
104b0 75 6c 74 20 6f 66 20 61 76 67 28 29 20 69 73 20  ult of avg() is 
104c0 61 6c 77 61 79 73 20 61 20 66 6c 6f 61 74 69 6e  always a floatin
104d0 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 20 65 76  g point value ev
104e0 65 6e 20 69 66 20 61 6c 6c 0a 20 20 69 6e 70 75  en if all.  inpu
104f0 74 73 20 61 72 65 20 69 6e 74 65 67 65 72 73 2e  ts are integers.
10500 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 63 6f 75  .}..funcdef {cou
10510 6e 74 28 58 29 20 63 6f 75 6e 74 28 2a 29 7d 20  nt(X) count(*)} 
10520 7b 7d 20 7b 0a 20 20 54 68 65 20 66 69 72 73 74  {} {.  The first
10530 20 66 6f 72 6d 20 72 65 74 75 72 6e 20 61 20 63   form return a c
10540 6f 75 6e 74 20 6f 66 20 74 68 65 20 6e 75 6d 62  ount of the numb
10550 65 72 20 6f 66 20 74 69 6d 65 73 0a 20 20 74 68  er of times.  th
10560 61 74 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 6e  at <i>X</i> is n
10570 6f 74 20 4e 55 4c 4c 20 69 6e 20 61 20 67 72 6f  ot NULL in a gro
10580 75 70 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20  up.  The second 
10590 66 6f 72 6d 20 28 77 69 74 68 20 6e 6f 20 61 72  form (with no ar
105a0 67 75 6d 65 6e 74 29 0a 20 20 72 65 74 75 72 6e  gument).  return
105b0 73 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62  s the total numb
105c0 65 72 20 6f 66 20 72 6f 77 73 20 69 6e 20 74 68  er of rows in th
105d0 65 20 67 72 6f 75 70 2e 0a 7d 0a 0a 66 75 6e 63  e group..}..func
105e0 64 65 66 20 7b 67 72 6f 75 70 5f 63 6f 6e 63 61  def {group_conca
105f0 74 28 58 29 20 67 72 6f 75 70 5f 63 6f 6e 63 61  t(X) group_conca
10600 74 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 54  t(X,Y)} {} {.  T
10610 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 73  he result is a s
10620 74 72 69 6e 67 20 77 68 69 63 68 20 69 73 20 74  tring which is t
10630 68 65 20 63 6f 6e 63 61 74 65 6e 61 74 69 6f 6e  he concatenation
10640 20 6f 66 0a 20 20 61 6c 6c 20 6e 6f 6e 2d 4e 55   of.  all non-NU
10650 4c 4c 20 76 61 6c 75 65 73 20 6f 66 20 3c 69 3e  LL values of <i>
10660 58 3c 2f 69 3e 2e 20 20 49 66 20 70 61 72 61 6d  X</i>.  If param
10670 65 74 65 72 20 3c 69 3e 59 3c 2f 69 3e 20 69 73  eter <i>Y</i> is
10680 20 74 68 65 20 73 65 70 61 72 61 74 6f 72 0a 20   the separator. 
10690 20 62 65 74 77 65 65 6e 20 69 6e 73 74 61 6e 63   between instanc
106a0 65 73 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e 20  es of <i>X</i>. 
106b0 20 41 20 63 6f 6d 6d 61 20 28 22 2c 22 29 20 69   A comma (",") i
106c0 73 20 75 73 65 64 20 61 73 20 74 68 65 20 73 65  s used as the se
106d0 70 61 72 61 74 6f 72 0a 20 20 69 66 20 3c 69 3e  parator.  if <i>
106e0 59 3c 2f 69 3e 20 69 73 20 6f 6d 69 74 74 65 64  Y</i> is omitted
106f0 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6d 61  ..}..funcdef {ma
10700 78 28 58 29 7d 20 7b 6d 61 78 41 67 67 46 75 6e  x(X)} {maxAggFun
10710 63 20 61 67 67 5f 6d 61 78 7d 20 7b 0a 20 20 52  c agg_max} {.  R
10720 65 74 75 72 6e 20 74 68 65 20 6d 61 78 69 6d 75  eturn the maximu
10730 6d 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76  m value of all v
10740 61 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f  alues in the gro
10750 75 70 2e 0a 20 20 54 68 65 20 75 73 75 61 6c 20  up..  The usual 
10760 73 6f 72 74 20 6f 72 64 65 72 20 69 73 20 75 73  sort order is us
10770 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ed to determine 
10780 74 68 65 20 6d 61 78 69 6d 75 6d 2e 0a 7d 0a 0a  the maximum..}..
10790 66 75 6e 63 64 65 66 20 7b 6d 69 6e 28 58 29 7d  funcdef {min(X)}
107a0 20 7b 6d 69 6e 41 67 67 46 75 6e 63 20 61 67 67   {minAggFunc agg
107b0 5f 6d 69 6e 7d 20 7b 0a 20 20 52 65 74 75 72 6e  _min} {.  Return
107c0 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 6e 6f 6e   the minimum non
107d0 2d 4e 55 4c 4c 20 76 61 6c 75 65 20 6f 66 20 61  -NULL value of a
107e0 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65  ll values in the
107f0 20 67 72 6f 75 70 2e 0a 20 20 54 68 65 20 75 73   group..  The us
10800 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 20 69  ual sort order i
10810 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d  s used to determ
10820 69 6e 65 20 74 68 65 20 6d 69 6e 69 6d 75 6d 2e  ine the minimum.
10830 20 20 0a 20 20 4e 55 4c 4c 20 69 73 20 6f 6e 6c    .  NULL is onl
10840 79 20 72 65 74 75 72 6e 65 64 0a 20 20 69 66 20  y returned.  if 
10850 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68  all values in th
10860 65 20 67 72 6f 75 70 20 61 72 65 20 4e 55 4c 4c  e group are NULL
10870 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73 75  ..}..funcdef {su
10880 6d 28 58 29 20 74 6f 74 61 6c 28 58 29 7d 20 7b  m(X) total(X)} {
10890 73 75 6d 46 75 6e 63 20 73 75 6d 20 74 6f 74 61  sumFunc sum tota
108a0 6c 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68  l} {.  Return th
108b0 65 20 6e 75 6d 65 72 69 63 20 73 75 6d 20 6f 66  e numeric sum of
108c0 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61   all non-NULL va
108d0 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75  lues in the grou
108e0 70 2e 0a 20 20 49 66 20 74 68 65 72 65 20 61 72  p..  If there ar
108f0 65 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e  e no non-NULL in
10900 70 75 74 20 72 6f 77 73 20 74 68 65 6e 20 73 75  put rows then su
10910 6d 28 29 20 72 65 74 75 72 6e 73 0a 20 20 4e 55  m() returns.  NU
10920 4c 4c 20 62 75 74 20 74 6f 74 61 6c 28 29 20 72  LL but total() r
10930 65 74 75 72 6e 73 20 30 2e 30 2e 0a 20 20 4e 55  eturns 0.0..  NU
10940 4c 4c 20 69 73 20 6e 6f 74 20 6e 6f 72 6d 61 6c  LL is not normal
10950 6c 79 20 61 20 68 65 6c 70 66 75 6c 20 72 65 73  ly a helpful res
10960 75 6c 74 20 66 6f 72 20 74 68 65 20 73 75 6d 20  ult for the sum 
10970 6f 66 20 6e 6f 20 72 6f 77 73 0a 20 20 62 75 74  of no rows.  but
10980 20 74 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72   the SQL standar
10990 64 20 72 65 71 75 69 72 65 73 20 69 74 20 61 6e  d requires it an
109a0 64 20 6d 6f 73 74 20 6f 74 68 65 72 0a 20 20 53  d most other.  S
109b0 51 4c 20 64 61 74 61 62 61 73 65 20 65 6e 67 69  QL database engi
109c0 6e 65 73 20 69 6d 70 6c 65 6d 65 6e 74 20 73 75  nes implement su
109d0 6d 28 29 20 74 68 61 74 20 77 61 79 20 73 6f 20  m() that way so 
109e0 53 51 4c 69 74 65 20 64 6f 65 73 20 69 74 20 69  SQLite does it i
109f0 6e 20 74 68 65 0a 20 20 73 61 6d 65 20 77 61 79  n the.  same way
10a00 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 62 65 20   in order to be 
10a10 63 6f 6d 70 61 74 69 62 6c 65 2e 20 20 20 54 68  compatible.   Th
10a20 65 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20 74  e non-standard t
10a30 6f 74 61 6c 28 29 20 66 75 6e 63 74 69 6f 6e 0a  otal() function.
10a40 20 20 69 73 20 70 72 6f 76 69 64 65 64 20 61 73    is provided as
10a50 20 61 20 63 6f 6e 76 65 6e 69 65 6e 74 20 77 61   a convenient wa
10a60 79 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64  y to work around
10a70 20 74 68 69 73 20 64 65 73 69 67 6e 20 70 72 6f   this design pro
10a80 62 6c 65 6d 0a 20 20 69 6e 20 74 68 65 20 53 51  blem.  in the SQ
10a90 4c 20 6c 61 6e 67 75 61 67 65 2e 3c 2f 70 3e 0a  L language.</p>.
10aa0 0a 20 20 3c 70 3e 54 68 65 20 72 65 73 75 6c 74  .  <p>The result
10ab0 20 6f 66 20 74 6f 74 61 6c 28 29 20 69 73 20 61   of total() is a
10ac0 6c 77 61 79 73 20 61 20 66 6c 6f 61 74 69 6e 67  lways a floating
10ad0 20 70 6f 69 6e 74 20 76 61 6c 75 65 2e 0a 20 20   point value..  
10ae0 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20 73 75  The result of su
10af0 6d 28 29 20 69 73 20 61 6e 20 69 6e 74 65 67 65  m() is an intege
10b00 72 20 76 61 6c 75 65 20 69 66 20 61 6c 6c 20 6e  r value if all n
10b10 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74 73 20 61  on-NULL inputs a
10b20 72 65 20 69 6e 74 65 67 65 72 73 2e 0a 20 20 49  re integers..  I
10b30 66 20 61 6e 79 20 69 6e 70 75 74 20 74 6f 20 73  f any input to s
10b40 75 6d 28 29 20 69 73 20 6e 65 69 74 68 65 72 20  um() is neither 
10b50 61 6e 20 69 6e 74 65 67 65 72 20 6f 72 20 61 20  an integer or a 
10b60 4e 55 4c 4c 0a 20 20 74 68 65 6e 20 73 75 6d 28  NULL.  then sum(
10b70 29 20 72 65 74 75 72 6e 73 20 61 20 66 6c 6f 61  ) returns a floa
10b80 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65  ting point value
10b90 0a 20 20 77 68 69 63 68 20 6d 69 67 68 74 20 62  .  which might b
10ba0 65 20 61 6e 20 61 70 70 72 6f 78 69 6d 61 74 69  e an approximati
10bb0 6f 6e 20 74 6f 20 74 68 65 20 74 72 75 65 20 73  on to the true s
10bc0 75 6d 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 53 75  um.</p>..  <p>Su
10bd0 6d 28 29 20 77 69 6c 6c 20 74 68 72 6f 77 20 61  m() will throw a
10be0 6e 20 22 69 6e 74 65 67 65 72 20 6f 76 65 72 66  n "integer overf
10bf0 6c 6f 77 22 20 65 78 63 65 70 74 69 6f 6e 20 69  low" exception i
10c00 66 20 61 6c 6c 20 69 6e 70 75 74 73 0a 20 20 61  f all inputs.  a
10c10 72 65 20 69 6e 74 65 67 65 72 73 20 6f 72 20 4e  re integers or N
10c20 55 4c 4c 0a 20 20 61 6e 64 20 61 6e 20 69 6e 74  ULL.  and an int
10c30 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 20 6f 63  eger overflow oc
10c40 63 75 72 73 20 61 74 20 61 6e 79 20 70 6f 69 6e  curs at any poin
10c50 74 20 64 75 72 69 6e 67 20 74 68 65 20 63 6f 6d  t during the com
10c60 70 75 74 61 74 69 6f 6e 2e 0a 20 20 54 6f 74 61  putation..  Tota
10c70 6c 28 29 20 6e 65 76 65 72 20 74 68 72 6f 77 73  l() never throws
10c80 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 0a 7d   an exception..}
10c90 0a 3c 2f 74 63 6c 3e 0a 3c 2f 74 61 62 6c 65 3e  .</tcl>.</table>
10ca0 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
10cb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10cc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10cd0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10ce0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10cf0 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 49  ######.Section I
10d00 4e 53 45 52 54 20 69 6e 73 65 72 74 20 7b 49 4e  NSERT insert {IN
10d10 53 45 52 54 20 49 4e 53 45 52 54 73 7d 0a 0a 53  SERT INSERTs}..S
10d20 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
10d30 6d 65 6e 74 7d 20 7b 0a 49 4e 53 45 52 54 20 5b  ment} {.INSERT [
10d40 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67  OR <conflict-alg
10d50 6f 72 69 74 68 6d 3e 5d 20 49 4e 54 4f 20 5b 3c  orithm>] INTO [<
10d60 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e  database-name> .
10d70 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b  ] <table-name> [
10d80 28 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 29 5d  (<column-list>)]
10d90 20 56 41 4c 55 45 53 28 3c 76 61 6c 75 65 2d 6c   VALUES(<value-l
10da0 69 73 74 3e 29 20 7c 0a 49 4e 53 45 52 54 20 5b  ist>) |.INSERT [
10db0 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67  OR <conflict-alg
10dc0 6f 72 69 74 68 6d 3e 5d 20 49 4e 54 4f 20 5b 3c  orithm>] INTO [<
10dd0 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e  database-name> .
10de0 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b  ] <table-name> [
10df0 28 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 29 5d  (<column-list>)]
10e00 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65   <select-stateme
10e10 6e 74 3e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  nt>.}.</tcl>..<p
10e20 3e 54 68 65 20 49 4e 53 45 52 54 20 73 74 61 74  >The INSERT stat
10e30 65 6d 65 6e 74 20 63 6f 6d 65 73 20 69 6e 20 74  ement comes in t
10e40 77 6f 20 62 61 73 69 63 20 66 6f 72 6d 73 2e 20  wo basic forms. 
10e50 20 54 68 65 20 66 69 72 73 74 20 66 6f 72 6d 0a   The first form.
10e60 28 77 69 74 68 20 74 68 65 20 22 56 41 4c 55 45  (with the "VALUE
10e70 53 22 20 6b 65 79 77 6f 72 64 29 20 63 72 65 61  S" keyword) crea
10e80 74 65 73 20 61 20 73 69 6e 67 6c 65 20 6e 65 77  tes a single new
10e90 20 72 6f 77 20 69 6e 20 61 6e 20 65 78 69 73 74   row in an exist
10ea0 69 6e 67 20 74 61 62 6c 65 2e 0a 49 66 20 6e 6f  ing table..If no
10eb0 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 20 69 73 20   column-list is 
10ec0 73 70 65 63 69 66 69 65 64 20 74 68 65 6e 20 74  specified then t
10ed0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c  he number of val
10ee0 75 65 73 20 6d 75 73 74 0a 62 65 20 74 68 65 20  ues must.be the 
10ef0 73 61 6d 65 20 61 73 20 74 68 65 20 6e 75 6d 62  same as the numb
10f00 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
10f10 20 74 68 65 20 74 61 62 6c 65 2e 20 20 49 66 20   the table.  If 
10f20 61 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 0a 69 73  a column-list.is
10f30 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e   specified, then
10f40 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76   the number of v
10f50 61 6c 75 65 73 20 6d 75 73 74 20 6d 61 74 63 68  alues must match
10f60 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 73   the number of.s
10f70 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73  pecified columns
10f80 2e 20 20 43 6f 6c 75 6d 6e 73 20 6f 66 20 74 68  .  Columns of th
10f90 65 20 74 61 62 6c 65 20 74 68 61 74 20 64 6f 20  e table that do 
10fa0 6e 6f 74 20 61 70 70 65 61 72 20 69 6e 20 74 68  not appear in th
10fb0 65 0a 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 61 72  e.column list ar
10fc0 65 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68  e filled with th
10fd0 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 2c  e default value,
10fe0 20 6f 72 20 77 69 74 68 20 4e 55 4c 4c 20 69 66   or with NULL if
10ff0 20 6e 6f 0a 64 65 66 61 75 6c 74 20 76 61 6c 75   no.default valu
11000 65 20 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a  e is specified..
11010 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 65 63  </p>..<p>The sec
11020 6f 6e 64 20 66 6f 72 6d 20 6f 66 20 74 68 65 20  ond form of the 
11030 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74  INSERT statement
11040 20 74 61 6b 65 73 20 69 74 20 64 61 74 61 20 66   takes it data f
11050 72 6f 6d 20 61 0a 53 45 4c 45 43 54 20 73 74 61  rom a.SELECT sta
11060 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e 75 6d  tement.  The num
11070 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
11080 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20  n the result of 
11090 74 68 65 0a 53 45 4c 45 43 54 20 6d 75 73 74 20  the.SELECT must 
110a0 65 78 61 63 74 6c 79 20 6d 61 74 63 68 20 74 68  exactly match th
110b0 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
110c0 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65  mns in the table
110d0 20 69 66 0a 6e 6f 20 63 6f 6c 75 6d 6e 20 6c 69   if.no column li
110e0 73 74 20 69 73 20 73 70 65 63 69 66 69 65 64 2c  st is specified,
110f0 20 6f 72 20 69 74 20 6d 75 73 74 20 6d 61 74 63   or it must matc
11100 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  h the number of 
11110 63 6f 6c 75 6d 6e 73 0a 6e 61 6d 65 20 69 6e 20  columns.name in 
11120 74 68 65 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 2e  the column list.
11130 20 20 41 20 6e 65 77 20 65 6e 74 72 79 20 69 73    A new entry is
11140 20 6d 61 64 65 20 69 6e 20 74 68 65 20 74 61 62   made in the tab
11150 6c 65 0a 66 6f 72 20 65 76 65 72 79 20 72 6f 77  le.for every row
11160 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54 20 72   of the SELECT r
11170 65 73 75 6c 74 2e 20 20 54 68 65 20 53 45 4c 45  esult.  The SELE
11180 43 54 20 6d 61 79 20 62 65 20 73 69 6d 70 6c 65  CT may be simple
11190 0a 6f 72 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f 70  .or compound.</p
111a0 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e  >..<p>The option
111b0 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  al conflict-clau
111c0 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70  se allows the sp
111d0 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61  ecification of a
111e0 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f  n alternative.co
111f0 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63  nstraint conflic
11200 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t resolution alg
11210 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20 64 75  orithm to use du
11220 72 69 6e 67 20 74 68 69 73 20 6f 6e 65 20 63 6f  ring this one co
11230 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73  mmand..See the s
11240 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f  ection titled.[O
11250 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 66 6f 72 20  N CONFLICT] for 
11260 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
11270 6d 61 74 69 6f 6e 2e 0a 46 6f 72 20 63 6f 6d 70  mation..For comp
11280 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 4d  atibility with M
11290 79 53 51 4c 2c 20 74 68 65 20 70 61 72 73 65 72  ySQL, the parser
112a0 20 61 6c 6c 6f 77 73 20 74 68 65 20 75 73 65 20   allows the use 
112b0 6f 66 20 74 68 65 0a 73 69 6e 67 6c 65 20 6b 65  of the.single ke
112c0 79 77 6f 72 64 20 3c 61 20 68 72 65 66 3d 22 6c  yword <a href="l
112d0 61 6e 67 5f 72 65 70 6c 61 63 65 2e 68 74 6d 6c  ang_replace.html
112e0 22 3e 52 45 50 4c 41 43 45 3c 2f 61 3e 20 61 73  ">REPLACE</a> as
112f0 20 61 6e 20 0a 61 6c 69 61 73 20 66 6f 72 20 22   an .alias for "
11300 49 4e 53 45 52 54 20 4f 52 20 52 45 50 4c 41 43  INSERT OR REPLAC
11310 45 22 2e 0a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  E"..</p>..<tcl>.
11320 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11330 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11340 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11350 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11360 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
11370 65 63 74 69 6f 6e 20 7b 4f 4e 20 43 4f 4e 46 4c  ection {ON CONFL
11380 49 43 54 20 63 6c 61 75 73 65 7d 20 63 6f 6e 66  ICT clause} conf
11390 6c 69 63 74 20 7b 7b 63 6f 6e 66 6c 69 63 74 20  lict {{conflict 
113a0 63 6c 61 75 73 65 7d 20 7b 4f 4e 20 43 4f 4e 46  clause} {ON CONF
113b0 4c 49 43 54 7d 7d 0a 0a 53 79 6e 74 61 78 20 7b  LICT}}..Syntax {
113c0 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 7d  conflict-clause}
113d0 20 7b 0a 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c   {.ON CONFLICT <
113e0 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74  conflict-algorit
113f0 68 6d 3e 0a 7d 20 7b 63 6f 6e 66 6c 69 63 74 2d  hm>.} {conflict-
11400 61 6c 67 6f 72 69 74 68 6d 7d 20 7b 0a 52 4f 4c  algorithm} {.ROL
11410 4c 42 41 43 4b 20 7c 20 41 42 4f 52 54 20 7c 20  LBACK | ABORT | 
11420 46 41 49 4c 20 7c 20 49 47 4e 4f 52 45 20 7c 20  FAIL | IGNORE | 
11430 52 45 50 4c 41 43 45 0a 7d 0a 3c 2f 74 63 6c 3e  REPLACE.}.</tcl>
11440 0a 0a 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46  ..<p>The ON CONF
11450 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 6e  LICT clause is n
11460 6f 74 20 61 20 73 65 70 61 72 61 74 65 20 53 51  ot a separate SQ
11470 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 49 74 20 69  L command.  It i
11480 73 20 61 0a 6e 6f 6e 2d 73 74 61 6e 64 61 72 64  s a.non-standard
11490 20 63 6c 61 75 73 65 20 74 68 61 74 20 63 61 6e   clause that can
114a0 20 61 70 70 65 61 72 20 69 6e 20 6d 61 6e 79 20   appear in many 
114b0 6f 74 68 65 72 20 53 51 4c 20 63 6f 6d 6d 61 6e  other SQL comman
114c0 64 73 2e 0a 49 74 20 69 73 20 67 69 76 65 6e 20  ds..It is given 
114d0 69 74 73 20 6f 77 6e 20 73 65 63 74 69 6f 6e 20  its own section 
114e0 69 6e 20 74 68 69 73 20 64 6f 63 75 6d 65 6e 74  in this document
114f0 20 62 65 63 61 75 73 65 20 69 74 20 69 73 20 6e   because it is n
11500 6f 74 0a 70 61 72 74 20 6f 66 20 73 74 61 6e 64  ot.part of stand
11510 61 72 64 20 53 51 4c 20 61 6e 64 20 74 68 65 72  ard SQL and ther
11520 65 66 6f 72 65 20 6d 69 67 68 74 20 6e 6f 74 20  efore might not 
11530 62 65 20 66 61 6d 69 6c 69 61 72 2e 3c 2f 70 3e  be familiar.</p>
11540 0a 0a 3c 70 3e 54 68 65 20 73 79 6e 74 61 78 20  ..<p>The syntax 
11550 66 6f 72 20 74 68 65 20 4f 4e 20 43 4f 4e 46 4c  for the ON CONFL
11560 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 61 73  ICT clause is as
11570 20 73 68 6f 77 6e 20 61 62 6f 76 65 20 66 6f 72   shown above for
11580 0a 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c  .the CREATE TABL
11590 45 20 63 6f 6d 6d 61 6e 64 2e 20 20 46 6f 72 20  E command.  For 
115a0 74 68 65 20 49 4e 53 45 52 54 20 61 6e 64 0a 55  the INSERT and.U
115b0 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64 73 2c 20  PDATE commands, 
115c0 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22 4f 4e  the keywords "ON
115d0 20 43 4f 4e 46 4c 49 43 54 22 20 61 72 65 20 72   CONFLICT" are r
115e0 65 70 6c 61 63 65 64 20 62 79 20 22 4f 52 22 2c  eplaced by "OR",
115f0 20 74 6f 20 6d 61 6b 65 0a 74 68 65 20 73 79 6e   to make.the syn
11600 74 61 78 20 73 65 65 6d 20 6d 6f 72 65 20 6e 61  tax seem more na
11610 74 75 72 61 6c 2e 20 20 46 6f 72 20 65 78 61 6d  tural.  For exam
11620 70 6c 65 2c 20 69 6e 73 74 65 61 64 20 6f 66 0a  ple, instead of.
11630 22 49 4e 53 45 52 54 20 4f 4e 20 43 4f 4e 46 4c  "INSERT ON CONFL
11640 49 43 54 20 49 47 4e 4f 52 45 22 20 77 65 20 68  ICT IGNORE" we h
11650 61 76 65 20 22 49 4e 53 45 52 54 20 4f 52 20 49  ave "INSERT OR I
11660 47 4e 4f 52 45 22 2e 0a 54 68 65 20 6b 65 79 77  GNORE"..The keyw
11670 6f 72 64 73 20 63 68 61 6e 67 65 20 62 75 74 20  ords change but 
11680 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 74  the meaning of t
11690 68 65 20 63 6c 61 75 73 65 20 69 73 20 74 68 65  he clause is the
116a0 20 73 61 6d 65 0a 65 69 74 68 65 72 20 77 61 79   same.either way
116b0 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4f 4e  .</p>..<p>The ON
116c0 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65   CONFLICT clause
116d0 20 73 70 65 63 69 66 69 65 73 20 61 6e 20 61 6c   specifies an al
116e0 67 6f 72 69 74 68 6d 20 75 73 65 64 20 74 6f 20  gorithm used to 
116f0 72 65 73 6f 6c 76 65 0a 63 6f 6e 73 74 72 61 69  resolve.constrai
11700 6e 74 20 63 6f 6e 66 6c 69 63 74 73 2e 20 20 54  nt conflicts.  T
11710 68 65 72 65 20 61 72 65 20 66 69 76 65 20 63 68  here are five ch
11720 6f 69 63 65 73 3a 20 52 4f 4c 4c 42 41 43 4b 2c  oices: ROLLBACK,
11730 20 41 42 4f 52 54 2c 0a 46 41 49 4c 2c 20 49 47   ABORT,.FAIL, IG
11740 4e 4f 52 45 2c 20 61 6e 64 20 52 45 50 4c 41 43  NORE, and REPLAC
11750 45 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 61  E. The default a
11760 6c 67 6f 72 69 74 68 6d 20 69 73 20 41 42 4f 52  lgorithm is ABOR
11770 54 2e 20 20 54 68 69 73 0a 69 73 20 77 68 61 74  T.  This.is what
11780 20 74 68 65 79 20 6d 65 61 6e 3a 3c 2f 70 3e 0a   they mean:</p>.
11790 0a 3c 64 6c 3e 0a 3c 64 74 3e 3c 62 3e 52 4f 4c  .<dl>.<dt><b>ROL
117a0 4c 42 41 43 4b 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c  LBACK</b></dt>.<
117b0 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e  dd><p>When a con
117c0 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
117d0 6e 20 6f 63 63 75 72 73 2c 20 61 6e 20 69 6d 6d  n occurs, an imm
117e0 65 64 69 61 74 65 20 52 4f 4c 4c 42 41 43 4b 0a  ediate ROLLBACK.
117f0 6f 63 63 75 72 73 2c 20 74 68 75 73 20 65 6e 64  occurs, thus end
11800 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 20  ing the current 
11810 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 61 6e 64  transaction, and
11820 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f   the command abo
11830 72 74 73 0a 77 69 74 68 20 61 20 72 65 74 75 72  rts.with a retur
11840 6e 20 63 6f 64 65 20 6f 66 20 53 51 4c 49 54 45  n code of SQLITE
11850 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20 49 66  _CONSTRAINT.  If
11860 20 6e 6f 20 74 72 61 6e 73 61 63 74 69 6f 6e 20   no transaction 
11870 69 73 0a 61 63 74 69 76 65 20 28 6f 74 68 65 72  is.active (other
11880 20 74 68 61 6e 20 74 68 65 20 69 6d 70 6c 69 65   than the implie
11890 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 68  d transaction th
118a0 61 74 20 69 73 20 63 72 65 61 74 65 64 20 6f 6e  at is created on
118b0 20 65 76 65 72 79 0a 63 6f 6d 6d 61 6e 64 29 20   every.command) 
118c0 74 68 65 6e 20 74 68 69 73 20 61 6c 67 6f 72 69  then this algori
118d0 74 68 6d 20 77 6f 72 6b 73 20 74 68 65 20 73 61  thm works the sa
118e0 6d 65 20 61 73 20 41 42 4f 52 54 2e 3c 2f 70 3e  me as ABORT.</p>
118f0 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 41 42  </dd>..<dt><b>AB
11900 4f 52 54 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64  ORT</b></dt>.<dd
11910 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74  ><p>When a const
11920 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
11930 6f 63 63 75 72 73 2c 20 74 68 65 20 63 6f 6d 6d  occurs, the comm
11940 61 6e 64 20 62 61 63 6b 73 20 6f 75 74 0a 61 6e  and backs out.an
11950 79 20 70 72 69 6f 72 20 63 68 61 6e 67 65 73 20  y prior changes 
11960 69 74 20 6d 69 67 68 74 20 68 61 76 65 20 6d 61  it might have ma
11970 64 65 20 61 6e 64 20 61 62 6f 72 74 73 20 77 69  de and aborts wi
11980 74 68 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65  th a return code
11990 0a 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54  .of SQLITE_CONST
119a0 52 41 49 4e 54 2e 20 20 42 75 74 20 6e 6f 20 52  RAINT.  But no R
119b0 4f 4c 4c 42 41 43 4b 20 69 73 20 65 78 65 63 75  OLLBACK is execu
119c0 74 65 64 20 73 6f 20 63 68 61 6e 67 65 73 0a 66  ted so changes.f
119d0 72 6f 6d 20 70 72 69 6f 72 20 63 6f 6d 6d 61 6e  rom prior comman
119e0 64 73 20 77 69 74 68 69 6e 20 74 68 65 20 73 61  ds within the sa
119f0 6d 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 61  me transaction.a
11a00 72 65 20 70 72 65 73 65 72 76 65 64 2e 20 20 54  re preserved.  T
11a10 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75  his is the defau
11a20 6c 74 20 62 65 68 61 76 69 6f 72 2e 3c 2f 70 3e  lt behavior.</p>
11a30 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 46 41  </dd>..<dt><b>FA
11a40 49 4c 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e  IL</b></dt>.<dd>
11a50 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72  <p>When a constr
11a60 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f  aint violation o
11a70 63 63 75 72 73 2c 20 74 68 65 20 63 6f 6d 6d 61  ccurs, the comma
11a80 6e 64 20 61 62 6f 72 74 73 20 77 69 74 68 20 61  nd aborts with a
11a90 0a 72 65 74 75 72 6e 20 63 6f 64 65 20 53 51 4c  .return code SQL
11aa0 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20  ITE_CONSTRAINT. 
11ab0 20 42 75 74 20 61 6e 79 20 63 68 61 6e 67 65 73   But any changes
11ac0 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
11ad0 20 74 68 61 74 0a 74 68 65 20 63 6f 6d 6d 61 6e   that.the comman
11ae0 64 20 6d 61 64 65 20 70 72 69 6f 72 20 74 6f 20  d made prior to 
11af0 65 6e 63 6f 75 6e 74 65 72 69 6e 67 20 74 68 65  encountering the
11b00 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
11b10 61 74 69 6f 6e 0a 61 72 65 20 70 72 65 73 65 72  ation.are preser
11b20 76 65 64 20 61 6e 64 20 61 72 65 20 6e 6f 74 20  ved and are not 
11b30 62 61 63 6b 65 64 20 6f 75 74 2e 20 20 46 6f 72  backed out.  For
11b40 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 61 6e 20   example, if an 
11b50 55 50 44 41 54 45 0a 73 74 61 74 65 6d 65 6e 74  UPDATE.statement
11b60 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 20 63   encountered a c
11b70 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
11b80 69 6f 6e 20 6f 6e 20 74 68 65 20 31 30 30 74 68  ion on the 100th
11b90 20 72 6f 77 20 74 68 61 74 0a 69 74 20 61 74 74   row that.it att
11ba0 65 6d 70 74 73 20 74 6f 20 75 70 64 61 74 65 2c  empts to update,
11bb0 20 74 68 65 6e 20 74 68 65 20 66 69 72 73 74 20   then the first 
11bc0 39 39 20 72 6f 77 20 63 68 61 6e 67 65 73 20 61  99 row changes a
11bd0 72 65 20 70 72 65 73 65 72 76 65 64 0a 62 75 74  re preserved.but
11be0 20 63 68 61 6e 67 65 73 20 74 6f 20 72 6f 77 73   changes to rows
11bf0 20 31 30 30 20 61 6e 64 20 62 65 79 6f 6e 64 20   100 and beyond 
11c00 6e 65 76 65 72 20 6f 63 63 75 72 2e 3c 2f 70 3e  never occur.</p>
11c10 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 49 47  </dd>..<dt><b>IG
11c20 4e 4f 52 45 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64  NORE</b></dt>.<d
11c30 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73  d><p>When a cons
11c40 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
11c50 20 6f 63 63 75 72 73 2c 20 74 68 65 20 6f 6e 65   occurs, the one
11c60 20 72 6f 77 20 74 68 61 74 20 63 6f 6e 74 61 69   row that contai
11c70 6e 73 0a 74 68 65 20 63 6f 6e 73 74 72 61 69 6e  ns.the constrain
11c80 74 20 76 69 6f 6c 61 74 69 6f 6e 20 69 73 20 6e  t violation is n
11c90 6f 74 20 69 6e 73 65 72 74 65 64 20 6f 72 20 63  ot inserted or c
11ca0 68 61 6e 67 65 64 2e 20 20 42 75 74 20 74 68 65  hanged.  But the
11cb0 20 63 6f 6d 6d 61 6e 64 0a 63 6f 6e 74 69 6e 75   command.continu
11cc0 65 73 20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72  es executing nor
11cd0 6d 61 6c 6c 79 2e 20 20 4f 74 68 65 72 20 72 6f  mally.  Other ro
11ce0 77 73 20 62 65 66 6f 72 65 20 61 6e 64 20 61 66  ws before and af
11cf0 74 65 72 20 74 68 65 20 72 6f 77 20 74 68 61 74  ter the row that
11d00 0a 63 6f 6e 74 61 69 6e 65 64 20 74 68 65 20 63  .contained the c
11d10 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
11d20 69 6f 6e 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20  ion continue to 
11d30 62 65 20 69 6e 73 65 72 74 65 64 20 6f 72 20 75  be inserted or u
11d40 70 64 61 74 65 64 0a 6e 6f 72 6d 61 6c 6c 79 2e  pdated.normally.
11d50 20 20 4e 6f 20 65 72 72 6f 72 20 69 73 20 72 65    No error is re
11d60 74 75 72 6e 65 64 2e 3c 2f 70 3e 3c 2f 64 64 3e  turned.</p></dd>
11d70 0a 0a 3c 64 74 3e 3c 62 3e 52 45 50 4c 41 43 45  ..<dt><b>REPLACE
11d80 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70  </b></dt>.<dd><p
11d90 3e 57 68 65 6e 20 61 20 55 4e 49 51 55 45 20 63  >When a UNIQUE c
11da0 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
11db0 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20  ion occurs, the 
11dc0 70 72 65 2d 65 78 69 73 74 69 6e 67 20 72 6f 77  pre-existing row
11dd0 73 0a 74 68 61 74 20 61 72 65 20 63 61 75 73 69  s.that are causi
11de0 6e 67 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e  ng the constrain
11df0 74 20 76 69 6f 6c 61 74 69 6f 6e 20 61 72 65 20  t violation are 
11e00 72 65 6d 6f 76 65 64 20 70 72 69 6f 72 20 74 6f  removed prior to
11e10 20 69 6e 73 65 72 74 69 6e 67 0a 6f 72 20 75 70   inserting.or up
11e20 64 61 74 69 6e 67 20 74 68 65 20 63 75 72 72 65  dating the curre
11e30 6e 74 20 72 6f 77 2e 20 20 54 68 75 73 20 74 68  nt row.  Thus th
11e40 65 20 69 6e 73 65 72 74 20 6f 72 20 75 70 64 61  e insert or upda
11e50 74 65 20 61 6c 77 61 79 73 20 6f 63 63 75 72 73  te always occurs
11e60 2e 0a 54 68 65 20 63 6f 6d 6d 61 6e 64 20 63 6f  ..The command co
11e70 6e 74 69 6e 75 65 73 20 65 78 65 63 75 74 69 6e  ntinues executin
11e80 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20  g normally.  No 
11e90 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65  error is returne
11ea0 64 2e 0a 49 66 20 61 20 4e 4f 54 20 4e 55 4c 4c  d..If a NOT NULL
11eb0 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
11ec0 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68  ation occurs, th
11ed0 65 20 4e 55 4c 4c 20 76 61 6c 75 65 20 69 73 20  e NULL value is 
11ee0 72 65 70 6c 61 63 65 64 0a 62 79 20 74 68 65 20  replaced.by the 
11ef0 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f  default value fo
11f00 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20  r that column.  
11f10 49 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 68 61  If the column ha
11f20 73 20 6e 6f 20 64 65 66 61 75 6c 74 0a 76 61 6c  s no default.val
11f30 75 65 2c 20 74 68 65 6e 20 74 68 65 20 41 42 4f  ue, then the ABO
11f40 52 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  RT algorithm is 
11f50 75 73 65 64 2e 20 20 49 66 20 61 20 43 48 45 43  used.  If a CHEC
11f60 4b 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  K constraint vio
11f70 6c 61 74 69 6f 6e 0a 6f 63 63 75 72 73 20 74 68  lation.occurs th
11f80 65 6e 20 74 68 65 20 49 47 4e 4f 52 45 20 61 6c  en the IGNORE al
11f90 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e  gorithm is used.
11fa0 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 74 68  </p>..<p>When th
11fb0 69 73 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  is conflict reso
11fc0 6c 75 74 69 6f 6e 20 73 74 72 61 74 65 67 79 20  lution strategy 
11fd0 64 65 6c 65 74 65 73 20 72 6f 77 73 20 69 6e 20  deletes rows in 
11fe0 6f 72 64 65 72 20 74 6f 0a 73 61 74 69 73 66 79  order to.satisfy
11ff0 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 2c 20 69   a constraint, i
12000 74 20 64 6f 65 73 20 6e 6f 74 20 69 6e 76 6f 6b  t does not invok
12010 65 20 64 65 6c 65 74 65 20 74 72 69 67 67 65 72  e delete trigger
12020 73 20 6f 6e 20 74 68 6f 73 65 0a 72 6f 77 73 2e  s on those.rows.
12030 20 20 54 68 69 73 20 62 65 68 61 76 69 6f 72 20    This behavior 
12040 6d 69 67 68 74 20 63 68 61 6e 67 65 20 69 6e 20  might change in 
12050 61 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65  a future release
12060 2e 3c 2f 70 3e 0a 3c 2f 64 6c 3e 0a 0a 3c 70 3e  .</p>.</dl>..<p>
12070 54 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 73 70  The algorithm sp
12080 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 4f  ecified in the O
12090 52 20 63 6c 61 75 73 65 20 6f 66 20 61 20 49 4e  R clause of a IN
120a0 53 45 52 54 20 6f 72 20 55 50 44 41 54 45 0a 6f  SERT or UPDATE.o
120b0 76 65 72 72 69 64 65 73 20 61 6e 79 20 61 6c 67  verrides any alg
120c0 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64  orithm specified
120d0 20 69 6e 20 61 20 43 52 45 41 54 45 20 54 41 42   in a CREATE TAB
120e0 4c 45 2e 0a 49 66 20 6e 6f 20 61 6c 67 6f 72 69  LE..If no algori
120f0 74 68 6d 20 69 73 20 73 70 65 63 69 66 69 65 64  thm is specified
12100 20 61 6e 79 77 68 65 72 65 2c 20 74 68 65 20 41   anywhere, the A
12110 42 4f 52 54 20 61 6c 67 6f 72 69 74 68 6d 20 69  BORT algorithm i
12120 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63  s used.</p>..<tc
12130 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
12140 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12150 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12160 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12170 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12180 23 0a 53 65 63 74 69 6f 6e 20 52 45 49 4e 44 45  #.Section REINDE
12190 58 20 72 65 69 6e 64 65 78 20 52 45 49 4e 44 45  X reindex REINDE
121a0 58 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  X..Syntax {sql-s
121b0 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 20 20 52 45  tatement} {.  RE
121c0 49 4e 44 45 58 20 3c 63 6f 6c 6c 61 74 69 6f 6e  INDEX <collation
121d0 20 6e 61 6d 65 3e 0a 7d 0a 53 79 6e 74 61 78 20   name>.}.Syntax 
121e0 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
121f0 7b 0a 20 20 52 45 49 4e 44 45 58 20 5b 3c 64 61  {.  REINDEX [<da
12200 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20  tabase-name> .] 
12210 3c 74 61 62 6c 65 2f 69 6e 64 65 78 2d 6e 61 6d  <table/index-nam
12220 65 3e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  e>.}.</tcl>..<p>
12230 54 68 65 20 52 45 49 4e 44 45 58 20 63 6f 6d 6d  The REINDEX comm
12240 61 6e 64 20 69 73 20 75 73 65 64 20 74 6f 20 64  and is used to d
12250 65 6c 65 74 65 20 61 6e 64 20 72 65 63 72 65 61  elete and recrea
12260 74 65 20 69 6e 64 69 63 65 73 20 66 72 6f 6d 20  te indices from 
12270 73 63 72 61 74 63 68 2e 0a 54 68 69 73 20 69 73  scratch..This is
12280 20 75 73 65 66 75 6c 20 77 68 65 6e 20 74 68 65   useful when the
12290 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 61   definition of a
122a0 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65   collation seque
122b0 6e 63 65 20 68 61 73 20 63 68 61 6e 67 65 64 2e  nce has changed.
122c0 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 74 68 65  .</p>..<p>In the
122d0 20 66 69 72 73 74 20 66 6f 72 6d 2c 20 61 6c 6c   first form, all
122e0 20 69 6e 64 69 63 65 73 20 69 6e 20 61 6c 6c 20   indices in all 
122f0 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
12300 65 73 20 74 68 61 74 20 75 73 65 20 74 68 65 0a  es that use the.
12310 6e 61 6d 65 64 20 63 6f 6c 6c 61 74 69 6f 6e 20  named collation 
12320 73 65 71 75 65 6e 63 65 20 61 72 65 20 72 65 63  sequence are rec
12330 72 65 61 74 65 64 2e 20 49 6e 20 74 68 65 20 73  reated. In the s
12340 65 63 6f 6e 64 20 66 6f 72 6d 2c 20 69 66 20 0a  econd form, if .
12350 3c 69 3e 26 23 39 31 3b 64 61 74 61 62 61 73 65  <i>&#91;database
12360 2d 6e 61 6d 65 2e 26 23 39 33 3b 74 61 62 6c 65  -name.&#93;table
12370 2f 69 6e 64 65 78 2d 6e 61 6d 65 3c 2f 69 3e 20  /index-name</i> 
12380 69 64 65 6e 74 69 66 69 65 73 20 61 20 74 61 62  identifies a tab
12390 6c 65 2c 0a 74 68 65 6e 20 61 6c 6c 20 69 6e 64  le,.then all ind
123a0 69 63 65 73 0a 61 73 73 6f 63 69 61 74 65 64 20  ices.associated 
123b0 77 69 74 68 20 74 68 65 20 74 61 62 6c 65 20 61  with the table a
123c0 72 65 20 72 65 62 75 69 6c 74 2e 20 49 66 20 61  re rebuilt. If a
123d0 6e 20 69 6e 64 65 78 20 69 73 20 69 64 65 6e 74  n index is ident
123e0 69 66 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c 79  ified, then only
123f0 0a 74 68 69 73 20 73 70 65 63 69 66 69 63 20 69  .this specific i
12400 6e 64 65 78 20 69 73 20 64 65 6c 65 74 65 64 20  ndex is deleted 
12410 61 6e 64 20 72 65 63 72 65 61 74 65 64 2e 0a 3c  and recreated..<
12420 2f 70 3e 0a 0a 3c 70 3e 49 66 20 6e 6f 20 3c 69  /p>..<p>If no <i
12430 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f  >database-name</
12440 69 3e 20 69 73 20 73 70 65 63 69 66 69 65 64 20  i> is specified 
12450 61 6e 64 20 74 68 65 72 65 20 65 78 69 73 74 73  and there exists
12460 20 62 6f 74 68 20 61 20 74 61 62 6c 65 20 6f 72   both a table or
12470 0a 69 6e 64 65 78 20 61 6e 64 20 61 20 63 6f 6c  .index and a col
12480 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20  lation sequence 
12490 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
124a0 20 6e 61 6d 65 2c 20 74 68 65 6e 20 69 6e 64 69   name, then indi
124b0 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 0a 77  ces associated.w
124c0 69 74 68 20 74 68 65 20 63 6f 6c 6c 61 74 69 6f  ith the collatio
124d0 6e 20 73 65 71 75 65 6e 63 65 20 6f 6e 6c 79 20  n sequence only 
124e0 61 72 65 20 72 65 63 6f 6e 73 74 72 75 63 74 65  are reconstructe
124f0 64 2e 20 54 68 69 73 20 61 6d 62 69 67 75 69 74  d. This ambiguit
12500 79 20 6d 61 79 20 62 65 0a 64 69 73 70 65 6c 6c  y may be.dispell
12510 65 64 20 62 79 20 61 6c 77 61 79 73 20 73 70 65  ed by always spe
12520 63 69 66 79 69 6e 67 20 61 20 3c 69 3e 64 61 74  cifying a <i>dat
12530 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 20 77  abase-name</i> w
12540 68 65 6e 20 72 65 69 6e 64 65 78 69 6e 67 20 61  hen reindexing a
12550 0a 73 70 65 63 69 66 69 63 20 74 61 62 6c 65 20  .specific table 
12560 6f 72 20 69 6e 64 65 78 2e 0a 0a 3c 74 63 6c 3e  or index...<tcl>
12570 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
12580 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12590 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
125a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
125b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
125c0 0a 53 65 63 74 69 6f 6e 20 52 45 50 4c 41 43 45  .Section REPLACE
125d0 20 72 65 70 6c 61 63 65 20 52 45 50 4c 41 43 45   replace REPLACE
125e0 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
125f0 61 74 65 6d 65 6e 74 7d 20 7b 0a 52 45 50 4c 41  atement} {.REPLA
12600 43 45 20 49 4e 54 4f 20 5b 3c 64 61 74 61 62 61  CE INTO [<databa
12610 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62  se-name> .] <tab
12620 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63 6f 6c  le-name> [( <col
12630 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20 56 41 4c  umn-list> )] VAL
12640 55 45 53 20 28 20 3c 76 61 6c 75 65 2d 6c 69 73  UES ( <value-lis
12650 74 3e 20 29 20 7c 0a 52 45 50 4c 41 43 45 20 49  t> ) |.REPLACE I
12660 4e 54 4f 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e  NTO [<database-n
12670 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e  ame> .] <table-n
12680 61 6d 65 3e 20 5b 28 20 3c 63 6f 6c 75 6d 6e 2d  ame> [( <column-
12690 6c 69 73 74 3e 20 29 5d 20 3c 73 65 6c 65 63 74  list> )] <select
126a0 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 3c 2f  -statement>.}.</
126b0 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 52 45 50  tcl>..<p>The REP
126c0 4c 41 43 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20  LACE command is 
126d0 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74 68 65  an alias for the
126e0 20 22 49 4e 53 45 52 54 20 4f 52 20 52 45 50 4c   "INSERT OR REPL
126f0 41 43 45 22 20 76 61 72 69 61 6e 74 0a 6f 66 20  ACE" variant.of 
12700 74 68 65 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e  the <a href="lan
12710 67 5f 69 6e 73 65 72 74 2e 68 74 6d 6c 22 3e 49  g_insert.html">I
12720 4e 53 45 52 54 3c 2f 61 3e 20 63 6f 6d 6d 61 6e  NSERT</a> comman
12730 64 2e 20 20 0a 54 68 69 73 20 61 6c 69 61 73 20  d.  .This alias 
12740 69 73 20 70 72 6f 76 69 64 65 64 20 66 6f 72 0a  is provided for.
12750 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69  compatibility wi
12760 74 68 20 4d 79 53 51 4c 2e 20 20 53 65 65 20 74  th MySQL.  See t
12770 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 6c 61 6e  he .<a href="lan
12780 67 5f 69 6e 73 65 72 74 2e 68 74 6d 6c 22 3e 49  g_insert.html">I
12790 4e 53 45 52 54 3c 2f 61 3e 20 63 6f 6d 6d 61 6e  NSERT</a> comman
127a0 64 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  d documentation 
127b0 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a 69  for additional.i
127c0 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 20  nformation.</p> 
127d0 20 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23   ..<tcl>.#######
127e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
127f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12800 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12810 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12820 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
12830 20 53 45 4c 45 43 54 20 73 65 6c 65 63 74 20 7b   SELECT select {
12840 53 45 4c 45 43 54 20 71 75 65 72 79 7d 0a 0a 53  SELECT query}..S
12850 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
12860 6d 65 6e 74 7d 20 7b 0a 53 45 4c 45 43 54 20 5b  ment} {.SELECT [
12870 41 4c 4c 20 7c 20 44 49 53 54 49 4e 43 54 5d 20  ALL | DISTINCT] 
12880 3c 72 65 73 75 6c 74 3e 20 5b 46 52 4f 4d 20 3c  <result> [FROM <
12890 74 61 62 6c 65 2d 6c 69 73 74 3e 5d 0a 5b 57 48  table-list>].[WH
128a0 45 52 45 20 3c 65 78 70 72 3e 5d 0a 5b 47 52 4f  ERE <expr>].[GRO
128b0 55 50 20 42 59 20 3c 65 78 70 72 2d 6c 69 73 74  UP BY <expr-list
128c0 3e 5d 0a 5b 48 41 56 49 4e 47 20 3c 65 78 70 72  >].[HAVING <expr
128d0 3e 5d 0a 5b 3c 63 6f 6d 70 6f 75 6e 64 2d 6f 70  >].[<compound-op
128e0 3e 20 3c 73 65 6c 65 63 74 3e 5d 2a 0a 5b 4f 52  > <select>]*.[OR
128f0 44 45 52 20 42 59 20 3c 73 6f 72 74 2d 65 78 70  DER BY <sort-exp
12900 72 2d 6c 69 73 74 3e 5d 0a 5b 4c 49 4d 49 54 20  r-list>].[LIMIT 
12910 3c 69 6e 74 65 67 65 72 3e 20 5b 4c 50 20 4f 46  <integer> [LP OF
12920 46 53 45 54 20 7c 20 2c 20 52 50 20 3c 69 6e 74  FSET | , RP <int
12930 65 67 65 72 3e 5d 5d 0a 7d 20 7b 72 65 73 75 6c  eger>]].} {resul
12940 74 7d 20 7b 0a 3c 72 65 73 75 6c 74 2d 63 6f 6c  t} {.<result-col
12950 75 6d 6e 3e 20 5b 2c 20 3c 72 65 73 75 6c 74 2d  umn> [, <result-
12960 63 6f 6c 75 6d 6e 3e 5d 2a 0a 7d 20 7b 72 65 73  column>]*.} {res
12970 75 6c 74 2d 63 6f 6c 75 6d 6e 7d 20 7b 0a 53 54  ult-column} {.ST
12980 41 52 20 7c 20 3c 74 61 62 6c 65 2d 6e 61 6d 65  AR | <table-name
12990 3e 20 2e 20 53 54 41 52 20 7c 20 3c 65 78 70 72  > . STAR | <expr
129a0 3e 20 5b 20 5b 41 53 5d 20 3c 73 74 72 69 6e 67  > [ [AS] <string
129b0 3e 20 5d 0a 7d 20 7b 74 61 62 6c 65 2d 6c 69 73  > ].} {table-lis
129c0 74 7d 20 7b 0a 3c 74 61 62 6c 65 3e 20 5b 3c 6a  t} {.<table> [<j
129d0 6f 69 6e 2d 6f 70 3e 20 3c 74 61 62 6c 65 3e 20  oin-op> <table> 
129e0 3c 6a 6f 69 6e 2d 61 72 67 73 3e 5d 2a 0a 7d 20  <join-args>]*.} 
129f0 7b 74 61 62 6c 65 7d 20 7b 0a 3c 74 61 62 6c 65  {table} {.<table
12a00 2d 6e 61 6d 65 3e 20 5b 41 53 20 3c 61 6c 69 61  -name> [AS <alia
12a10 73 3e 5d 20 7c 0a 28 20 3c 73 65 6c 65 63 74 3e  s>] |.( <select>
12a20 20 29 20 5b 41 53 20 3c 61 6c 69 61 73 3e 5d 0a   ) [AS <alias>].
12a30 7d 20 7b 6a 6f 69 6e 2d 6f 70 7d 20 7b 0a 2c 20  } {join-op} {., 
12a40 7c 20 5b 4e 41 54 55 52 41 4c 5d 20 5b 4c 45 46  | [NATURAL] [LEF
12a50 54 20 7c 20 52 49 47 48 54 20 7c 20 46 55 4c 4c  T | RIGHT | FULL
12a60 5d 20 5b 4f 55 54 45 52 20 7c 20 49 4e 4e 45 52  ] [OUTER | INNER
12a70 20 7c 20 43 52 4f 53 53 5d 20 4a 4f 49 4e 0a 7d   | CROSS] JOIN.}
12a80 20 7b 6a 6f 69 6e 2d 61 72 67 73 7d 20 7b 0a 5b   {join-args} {.[
12a90 4f 4e 20 3c 65 78 70 72 3e 5d 20 5b 55 53 49 4e  ON <expr>] [USIN
12aa0 47 20 28 20 3c 69 64 2d 6c 69 73 74 3e 20 29 5d  G ( <id-list> )]
12ab0 0a 7d 20 7b 73 6f 72 74 2d 65 78 70 72 2d 6c 69  .} {sort-expr-li
12ac0 73 74 7d 20 7b 0a 3c 65 78 70 72 3e 20 5b 3c 73  st} {.<expr> [<s
12ad0 6f 72 74 2d 6f 72 64 65 72 3e 5d 20 5b 2c 20 3c  ort-order>] [, <
12ae0 65 78 70 72 3e 20 5b 3c 73 6f 72 74 2d 6f 72 64  expr> [<sort-ord
12af0 65 72 3e 5d 5d 2a 0a 7d 20 7b 73 6f 72 74 2d 6f  er>]]*.} {sort-o
12b00 72 64 65 72 7d 20 7b 0a 5b 20 43 4f 4c 4c 41 54  rder} {.[ COLLAT
12b10 45 20 3c 63 6f 6c 6c 61 74 69 6f 6e 2d 6e 61 6d  E <collation-nam
12b20 65 3e 20 5d 20 5b 20 41 53 43 20 7c 20 44 45 53  e> ] [ ASC | DES
12b30 43 20 5d 0a 7d 20 7b 63 6f 6d 70 6f 75 6e 64 5f  C ].} {compound_
12b40 6f 70 7d 20 7b 0a 55 4e 49 4f 4e 20 7c 20 55 4e  op} {.UNION | UN
12b50 49 4f 4e 20 41 4c 4c 20 7c 20 49 4e 54 45 52 53  ION ALL | INTERS
12b60 45 43 54 20 7c 20 45 58 43 45 50 54 0a 7d 0a 3c  ECT | EXCEPT.}.<
12b70 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 53 45  /tcl>..<p>The SE
12b80 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20 69  LECT statement i
12b90 73 20 75 73 65 64 20 74 6f 20 71 75 65 72 79 20  s used to query 
12ba0 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 54  the database.  T
12bb0 68 65 0a 72 65 73 75 6c 74 20 6f 66 20 61 20 53  he.result of a S
12bc0 45 4c 45 43 54 20 69 73 20 7a 65 72 6f 20 6f 72  ELECT is zero or
12bd0 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 64 61   more rows of da
12be0 74 61 20 77 68 65 72 65 20 65 61 63 68 20 72 6f  ta where each ro
12bf0 77 0a 68 61 73 20 61 20 66 69 78 65 64 20 6e 75  w.has a fixed nu
12c00 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 2e  mber of columns.
12c10 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20    The number of 
12c20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 0a 72  columns in the.r
12c30 65 73 75 6c 74 20 69 73 20 73 70 65 63 69 66 69  esult is specifi
12c40 65 64 20 62 79 20 74 68 65 20 65 78 70 72 65 73  ed by the expres
12c50 73 69 6f 6e 20 6c 69 73 74 20 69 6e 20 62 65 74  sion list in bet
12c60 77 65 65 6e 20 74 68 65 0a 53 45 4c 45 43 54 20  ween the.SELECT 
12c70 61 6e 64 20 46 52 4f 4d 20 6b 65 79 77 6f 72 64  and FROM keyword
12c80 73 2e 20 20 41 6e 79 20 61 72 62 69 74 72 61 72  s.  Any arbitrar
12c90 79 20 65 78 70 72 65 73 73 69 6f 6e 20 63 61 6e  y expression can
12ca0 20 62 65 20 75 73 65 64 0a 61 73 20 61 20 72 65   be used.as a re
12cb0 73 75 6c 74 2e 20 20 49 66 20 61 20 72 65 73 75  sult.  If a resu
12cc0 6c 74 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73  lt expression is
12cd0 20 7d 0a 68 64 5f 70 75 74 73 20 22 5b 4f 70 65   }.hd_puts "[Ope
12ce0 72 61 74 6f 72 20 2a 5d 20 74 68 65 6e 20 61 6c  rator *] then al
12cf0 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 6c 6c  l columns of all
12d00 20 74 61 62 6c 65 73 20 61 72 65 20 73 75 62 73   tables are subs
12d10 74 69 74 75 74 65 64 22 0a 68 64 5f 70 75 74 73  tituted".hd_puts
12d20 20 7b 66 6f 72 20 74 68 61 74 20 6f 6e 65 20 65   {for that one e
12d30 78 70 72 65 73 73 69 6f 6e 2e 20 20 49 66 20 74  xpression.  If t
12d40 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73  he expression is
12d50 20 74 68 65 20 6e 61 6d 65 20 6f 66 7d 0a 68 64   the name of}.hd
12d60 5f 70 75 74 73 20 22 61 20 74 61 62 6c 65 20 66  _puts "a table f
12d70 6f 6c 6c 6f 77 65 64 20 62 79 20 5b 4f 70 65 72  ollowed by [Oper
12d80 61 74 6f 72 20 2e 2a 5d 20 74 68 65 6e 20 74 68  ator .*] then th
12d90 65 20 72 65 73 75 6c 74 20 69 73 20 61 6c 6c 20  e result is all 
12da0 63 6f 6c 75 6d 6e 73 22 0a 68 64 5f 70 75 74 73  columns".hd_puts
12db0 20 7b 69 6e 20 74 68 61 74 20 6f 6e 65 20 74 61   {in that one ta
12dc0 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ble.</p>..<p>The
12dd0 20 44 49 53 54 49 4e 43 54 20 6b 65 79 77 6f 72   DISTINCT keywor
12de0 64 20 63 61 75 73 65 73 20 61 20 73 75 62 73 65  d causes a subse
12df0 74 20 6f 66 20 72 65 73 75 6c 74 20 72 6f 77 73  t of result rows
12e00 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 2c   to be returned,
12e10 20 0a 69 6e 20 77 68 69 63 68 20 65 61 63 68 20   .in which each 
12e20 72 65 73 75 6c 74 20 72 6f 77 20 69 73 20 64 69  result row is di
12e30 66 66 65 72 65 6e 74 2e 20 20 4e 55 4c 4c 20 76  fferent.  NULL v
12e40 61 6c 75 65 73 20 61 72 65 20 6e 6f 74 20 74 72  alues are not tr
12e50 65 61 74 65 64 20 61 73 20 0a 64 69 73 74 69 6e  eated as .distin
12e60 63 74 20 66 72 6f 6d 20 65 61 63 68 20 6f 74 68  ct from each oth
12e70 65 72 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74  er.  The default
12e80 20 62 65 68 61 76 69 6f 72 20 69 73 20 74 68 61   behavior is tha
12e90 74 20 61 6c 6c 20 72 65 73 75 6c 74 20 72 6f 77  t all result row
12ea0 73 20 0a 62 65 20 72 65 74 75 72 6e 65 64 2c 20  s .be returned, 
12eb0 77 68 69 63 68 20 63 61 6e 20 62 65 20 6d 61 64  which can be mad
12ec0 65 20 65 78 70 6c 69 63 69 74 20 77 69 74 68 20  e explicit with 
12ed0 74 68 65 20 6b 65 79 77 6f 72 64 20 41 4c 4c 2e  the keyword ALL.
12ee0 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 71 75 65  </p>..<p>The que
12ef0 72 79 20 69 73 20 65 78 65 63 75 74 65 64 20 61  ry is executed a
12f00 67 61 69 6e 73 74 20 6f 6e 65 20 6f 72 20 6d 6f  gainst one or mo
12f10 72 65 20 74 61 62 6c 65 73 20 73 70 65 63 69 66  re tables specif
12f20 69 65 64 20 61 66 74 65 72 0a 74 68 65 20 46 52  ied after.the FR
12f30 4f 4d 20 6b 65 79 77 6f 72 64 2e 20 20 49 66 20  OM keyword.  If 
12f40 6d 75 6c 74 69 70 6c 65 20 74 61 62 6c 65 73 20  multiple tables 
12f50 6e 61 6d 65 73 20 61 72 65 20 73 65 70 61 72 61  names are separa
12f60 74 65 64 20 62 79 20 63 6f 6d 6d 61 73 2c 0a 74  ted by commas,.t
12f70 68 65 6e 20 74 68 65 20 71 75 65 72 79 20 69 73  hen the query is
12f80 20 61 67 61 69 6e 73 74 20 74 68 65 20 63 72 6f   against the cro
12f90 73 73 20 6a 6f 69 6e 20 6f 66 20 74 68 65 20 76  ss join of the v
12fa0 61 72 69 6f 75 73 20 74 61 62 6c 65 73 2e 0a 54  arious tables..T
12fb0 68 65 20 66 75 6c 6c 20 53 51 4c 2d 39 32 20 6a  he full SQL-92 j
12fc0 6f 69 6e 20 73 79 6e 74 61 78 20 63 61 6e 20 61  oin syntax can a
12fd0 6c 73 6f 20 62 65 20 75 73 65 64 20 74 6f 20 73  lso be used to s
12fe0 70 65 63 69 66 79 20 6a 6f 69 6e 73 2e 0a 41 20  pecify joins..A 
12ff0 73 75 62 2d 71 75 65 72 79 0a 69 6e 20 70 61 72  sub-query.in par
13000 65 6e 74 68 65 73 65 73 20 6d 61 79 20 62 65 20  entheses may be 
13010 73 75 62 73 74 69 74 75 74 65 64 20 66 6f 72 20  substituted for 
13020 61 6e 79 20 74 61 62 6c 65 20 6e 61 6d 65 20 69  any table name i
13030 6e 20 74 68 65 20 46 52 4f 4d 20 63 6c 61 75 73  n the FROM claus
13040 65 2e 0a 54 68 65 20 65 6e 74 69 72 65 20 46 52  e..The entire FR
13050 4f 4d 20 63 6c 61 75 73 65 20 6d 61 79 20 62 65  OM clause may be
13060 20 6f 6d 69 74 74 65 64 2c 20 69 6e 20 77 68 69   omitted, in whi
13070 63 68 20 63 61 73 65 20 74 68 65 20 72 65 73 75  ch case the resu
13080 6c 74 20 69 73 20 61 0a 73 69 6e 67 6c 65 20 72  lt is a.single r
13090 6f 77 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66  ow consisting of
130a0 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74   the values of t
130b0 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 6c 69  he expression li
130c0 73 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  st..</p>..<p>The
130d0 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63 61   WHERE clause ca
130e0 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6c 69 6d  n be used to lim
130f0 69 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  it the number of
13100 20 72 6f 77 73 20 6f 76 65 72 0a 77 68 69 63 68   rows over.which
13110 20 74 68 65 20 71 75 65 72 79 20 6f 70 65 72 61   the query opera
13120 74 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  tes.</p>..<p>The
13130 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65   GROUP BY clause
13140 20 63 61 75 73 65 73 20 6f 6e 65 20 6f 72 20 6d   causes one or m
13150 6f 72 65 20 72 6f 77 73 20 6f 66 20 74 68 65 20  ore rows of the 
13160 72 65 73 75 6c 74 20 74 6f 0a 62 65 20 63 6f 6d  result to.be com
13170 62 69 6e 65 64 20 69 6e 74 6f 20 61 20 73 69 6e  bined into a sin
13180 67 6c 65 20 72 6f 77 20 6f 66 20 6f 75 74 70 75  gle row of outpu
13190 74 2e 20 20 54 68 69 73 20 69 73 20 65 73 70 65  t.  This is espe
131a0 63 69 61 6c 6c 79 20 75 73 65 66 75 6c 0a 77 68  cially useful.wh
131b0 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 63 6f  en the result co
131c0 6e 74 61 69 6e 73 20 61 67 67 72 65 67 61 74 65  ntains aggregate
131d0 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 65   functions.  The
131e0 20 65 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 0a   expressions in.
131f0 74 68 65 20 47 52 4f 55 50 20 42 59 20 63 6c 61  the GROUP BY cla
13200 75 73 65 20 64 6f 20 3c 65 6d 3e 6e 6f 74 3c 2f  use do <em>not</
13210 65 6d 3e 20 68 61 76 65 20 74 6f 20 62 65 20 65  em> have to be e
13220 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 0a  xpressions that.
13230 61 70 70 65 61 72 20 69 6e 20 74 68 65 20 72 65  appear in the re
13240 73 75 6c 74 2e 20 20 54 68 65 20 48 41 56 49 4e  sult.  The HAVIN
13250 47 20 63 6c 61 75 73 65 20 69 73 20 73 69 6d 69  G clause is simi
13260 6c 61 72 20 74 6f 20 57 48 45 52 45 20 65 78 63  lar to WHERE exc
13270 65 70 74 0a 74 68 61 74 20 48 41 56 49 4e 47 20  ept.that HAVING 
13280 61 70 70 6c 69 65 73 20 61 66 74 65 72 20 67 72  applies after gr
13290 6f 75 70 69 6e 67 20 68 61 73 20 6f 63 63 75 72  ouping has occur
132a0 72 65 64 2e 20 20 54 68 65 20 48 41 56 49 4e 47  red.  The HAVING
132b0 20 65 78 70 72 65 73 73 69 6f 6e 0a 6d 61 79 20   expression.may 
132c0 72 65 66 65 72 20 74 6f 20 76 61 6c 75 65 73 2c  refer to values,
132d0 20 65 76 65 6e 20 61 67 67 72 65 67 61 74 65 20   even aggregate 
132e0 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68 61 74 20  functions, that 
132f0 61 72 65 20 6e 6f 74 20 69 6e 20 74 68 65 20 72  are not in the r
13300 65 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  esult.</p>..<p>T
13310 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75  he ORDER BY clau
13320 73 65 20 63 61 75 73 65 73 20 74 68 65 20 6f 75  se causes the ou
13330 74 70 75 74 20 72 6f 77 73 20 74 6f 20 62 65 20  tput rows to be 
13340 73 6f 72 74 65 64 2e 20 20 0a 54 68 65 20 61 72  sorted.  .The ar
13350 67 75 6d 65 6e 74 20 74 6f 20 4f 52 44 45 52 20  gument to ORDER 
13360 42 59 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20  BY is a list of 
13370 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74  expressions that
13380 20 61 72 65 20 75 73 65 64 20 61 73 20 74 68 65   are used as the
13390 0a 6b 65 79 20 66 6f 72 20 74 68 65 20 73 6f 72  .key for the sor
133a0 74 2e 20 20 54 68 65 20 65 78 70 72 65 73 73 69  t.  The expressi
133b0 6f 6e 73 20 64 6f 20 6e 6f 74 20 68 61 76 65 20  ons do not have 
133c0 74 6f 20 62 65 20 70 61 72 74 20 6f 66 20 74 68  to be part of th
133d0 65 0a 72 65 73 75 6c 74 20 66 6f 72 20 61 20 73  e.result for a s
133e0 69 6d 70 6c 65 20 53 45 4c 45 43 54 2c 20 62 75  imple SELECT, bu
133f0 74 20 69 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20  t in a compound 
13400 53 45 4c 45 43 54 20 65 61 63 68 20 73 6f 72 74  SELECT each sort
13410 0a 65 78 70 72 65 73 73 69 6f 6e 20 6d 75 73 74  .expression must
13420 20 65 78 61 63 74 6c 79 20 6d 61 74 63 68 20 6f   exactly match o
13430 6e 65 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  ne of the result
13440 20 63 6f 6c 75 6d 6e 73 2e 20 20 45 61 63 68 0a   columns.  Each.
13450 73 6f 72 74 20 65 78 70 72 65 73 73 69 6f 6e 20  sort expression 
13460 6d 61 79 20 62 65 20 6f 70 74 69 6f 6e 61 6c 6c  may be optionall
13470 79 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20  y followed by a 
13480 43 4f 4c 4c 41 54 45 20 6b 65 79 77 6f 72 64 20  COLLATE keyword 
13490 61 6e 64 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20  and.the name of 
134a0 61 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63  a collating func
134b0 74 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 6f 72  tion used for or
134c0 64 65 72 69 6e 67 20 74 65 78 74 20 61 6e 64 2f  dering text and/
134d0 6f 72 0a 6b 65 79 77 6f 72 64 73 20 41 53 43 20  or.keywords ASC 
134e0 6f 72 20 44 45 53 43 20 74 6f 20 73 70 65 63 69  or DESC to speci
134f0 66 79 20 74 68 65 20 73 6f 72 74 20 6f 72 64 65  fy the sort orde
13500 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68 20  r.</p>..<p>Each 
13510 74 65 72 6d 20 6f 66 20 61 6e 20 4f 52 44 45 52  term of an ORDER
13520 20 42 59 20 65 78 70 72 65 73 73 69 6f 6e 20 69   BY expression i
13530 73 20 70 72 6f 63 65 73 73 65 64 20 61 73 20 66  s processed as f
13540 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 6f 6c  ollows:</p>..<ol
13550 3e 0a 3c 6c 69 3e 3c 70 3e 49 66 20 74 68 65 20  >.<li><p>If the 
13560 4f 52 44 45 52 20 42 59 20 65 78 70 72 65 73 73  ORDER BY express
13570 69 6f 6e 20 69 73 20 61 20 63 6f 6e 73 74 61 6e  ion is a constan
13580 74 20 69 6e 74 65 67 65 72 20 4b 20 74 68 65 6e  t integer K then
13590 20 74 68 65 0a 6f 75 74 70 75 74 20 69 73 20 6f   the.output is o
135a0 72 64 65 72 65 64 20 62 79 20 74 68 65 20 4b 2d  rdered by the K-
135b0 74 68 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65  th column of the
135c0 20 72 65 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e   result set.</p>
135d0 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 70 3e 49 66 20  </li>.<li><p>If 
135e0 74 68 65 20 4f 52 44 45 52 20 42 59 20 65 78 70  the ORDER BY exp
135f0 72 65 73 73 69 6f 6e 20 69 73 20 61 6e 20 69 64  ression is an id
13600 65 6e 74 69 66 69 65 72 20 61 6e 64 20 6f 6e 65  entifier and one
13610 20 6f 66 20 74 68 65 0a 6f 75 74 70 75 74 20 63   of the.output c
13620 6f 6c 75 6d 6e 73 20 61 73 20 61 6e 20 61 6c 69  olumns as an ali
13630 61 73 20 62 79 20 74 68 65 20 73 61 6d 65 20 6e  as by the same n
13640 61 6d 65 2c 20 74 68 65 6e 20 74 68 65 20 6f 75  ame, then the ou
13650 74 70 75 74 20 69 73 0a 6f 72 64 65 72 65 64 20  tput is.ordered 
13660 62 79 20 74 68 65 20 69 64 65 6e 74 69 66 69 65  by the identifie
13670 64 20 63 6f 6c 75 6d 6e 2e 3c 2f 70 3e 3c 2f 6c  d column.</p></l
13680 69 3e 0a 3c 6c 69 3e 3c 70 3e 4f 74 68 65 72 77  i>.<li><p>Otherw
13690 69 73 65 2c 20 74 68 65 20 4f 52 44 45 52 20 42  ise, the ORDER B
136a0 59 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20  Y expression is 
136b0 65 76 61 6c 75 61 74 65 64 20 61 6e 64 20 74 68  evaluated and th
136c0 65 20 6f 75 74 70 75 74 20 0a 69 73 20 6f 72 64  e output .is ord
136d0 65 72 65 64 20 62 79 20 74 68 65 20 76 61 6c 75  ered by the valu
136e0 65 20 6f 66 20 74 68 61 74 20 65 78 70 72 65 73  e of that expres
136f0 73 69 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c  sion.</p></li>.<
13700 2f 6f 6c 3e 0a 0a 3c 70 3e 49 6e 20 61 20 63 6f  /ol>..<p>In a co
13710 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 73 74  mpound SELECT st
13720 61 74 65 6d 65 6e 74 2c 20 74 68 65 20 74 68 69  atement, the thi
13730 72 64 20 4f 52 44 45 52 20 42 59 20 6d 61 74 63  rd ORDER BY matc
13740 68 69 6e 67 20 72 75 6c 65 0a 72 65 71 75 69 72  hing rule.requir
13750 65 73 20 74 68 61 74 20 74 68 65 20 65 78 70 72  es that the expr
13760 65 73 73 69 6f 6e 20 62 65 20 69 64 65 6e 74 69  ession be identi
13770 63 61 6c 20 74 6f 20 6f 6e 65 20 6f 66 20 74 68  cal to one of th
13780 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 0a 74 68 65  e columns in.the
13790 20 72 65 73 75 6c 74 20 73 65 74 2e 20 20 54 68   result set.  Th
137a0 65 20 74 68 72 65 65 20 72 75 6c 65 73 20 61 72  e three rules ar
137b0 65 20 66 69 72 73 74 20 61 70 70 6c 69 65 64 20  e first applied 
137c0 74 6f 20 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74  to the left-most
137d0 0a 53 45 4c 45 43 54 20 69 6e 20 74 68 65 20 63  .SELECT in the c
137e0 6f 6d 70 6f 75 6e 64 2e 20 20 49 66 20 61 20 6d  ompound.  If a m
137f0 61 74 63 68 20 69 73 20 66 6f 75 6e 64 2c 20 74  atch is found, t
13800 68 65 20 73 65 61 72 63 68 20 73 74 6f 70 73 2e  he search stops.
13810 20 20 4f 74 68 65 72 77 69 73 65 2c 0a 74 68 65    Otherwise,.the
13820 20 6e 65 78 74 20 53 45 4c 45 43 54 20 74 6f 20   next SELECT to 
13830 74 68 65 20 72 69 67 68 74 20 69 73 20 74 72 69  the right is tri
13840 65 64 2e 20 20 54 68 69 73 20 63 6f 6e 74 69 6e  ed.  This contin
13850 75 65 73 20 75 6e 74 69 6c 20 61 20 6d 61 74 63  ues until a matc
13860 68 0a 69 73 20 66 6f 75 6e 64 2e 20 20 45 61 63  h.is found.  Eac
13870 68 20 74 65 72 6d 20 6f 66 20 74 68 65 20 4f 52  h term of the OR
13880 44 45 52 20 42 59 20 63 6c 61 75 73 65 20 69 73  DER BY clause is
13890 20 70 72 6f 63 65 73 73 65 64 20 73 65 70 61 72   processed separ
138a0 61 74 65 6c 79 20 0a 61 6e 64 20 6d 61 79 20 63  ately .and may c
138b0 6f 6d 65 20 66 72 6f 6d 20 64 69 66 66 65 72 65  ome from differe
138c0 6e 74 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d  nt SELECT statem
138d0 65 6e 74 73 20 69 6e 20 74 68 65 20 63 6f 6d 70  ents in the comp
138e0 6f 75 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  ound.</p>..<p>Th
138f0 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 70  e LIMIT clause p
13900 6c 61 63 65 73 20 61 6e 20 75 70 70 65 72 20 62  laces an upper b
13910 6f 75 6e 64 20 6f 6e 20 74 68 65 20 6e 75 6d 62  ound on the numb
13920 65 72 20 6f 66 20 72 6f 77 73 0a 72 65 74 75 72  er of rows.retur
13930 6e 65 64 20 69 6e 20 74 68 65 20 72 65 73 75 6c  ned in the resul
13940 74 2e 20 20 41 20 6e 65 67 61 74 69 76 65 20 4c  t.  A negative L
13950 49 4d 49 54 20 69 6e 64 69 63 61 74 65 73 20 6e  IMIT indicates n
13960 6f 20 75 70 70 65 72 20 62 6f 75 6e 64 2e 0a 54  o upper bound..T
13970 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4f 46 46 53  he optional OFFS
13980 45 54 20 66 6f 6c 6c 6f 77 69 6e 67 20 4c 49 4d  ET following LIM
13990 49 54 20 73 70 65 63 69 66 69 65 73 20 68 6f 77  IT specifies how
139a0 20 6d 61 6e 79 0a 72 6f 77 73 20 74 6f 20 73 6b   many.rows to sk
139b0 69 70 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e  ip at the beginn
139c0 69 6e 67 20 6f 66 20 74 68 65 20 72 65 73 75 6c  ing of the resul
139d0 74 20 73 65 74 2e 0a 49 6e 20 61 20 63 6f 6d 70  t set..In a comp
139e0 6f 75 6e 64 20 71 75 65 72 79 2c 20 74 68 65 20  ound query, the 
139f0 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 6d 61 79  LIMIT clause may
13a00 20 6f 6e 6c 79 20 61 70 70 65 61 72 20 6f 6e 20   only appear on 
13a10 74 68 65 0a 66 69 6e 61 6c 20 53 45 4c 45 43 54  the.final SELECT
13a20 20 73 74 61 74 65 6d 65 6e 74 2e 0a 54 68 65 20   statement..The 
13a30 6c 69 6d 69 74 20 69 73 20 61 70 70 6c 69 65 64  limit is applied
13a40 20 74 6f 20 74 68 65 20 65 6e 74 69 72 65 20 71   to the entire q
13a50 75 65 72 79 20 6e 6f 74 0a 74 6f 20 74 68 65 20  uery not.to the 
13a60 69 6e 64 69 76 69 64 75 61 6c 20 53 45 4c 45 43  individual SELEC
13a70 54 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 77  T statement to w
13a80 68 69 63 68 20 69 74 20 69 73 20 61 74 74 61 63  hich it is attac
13a90 68 65 64 2e 0a 4e 6f 74 65 20 74 68 61 74 20 69  hed..Note that i
13aa0 66 20 74 68 65 20 4f 46 46 53 45 54 20 6b 65 79  f the OFFSET key
13ab0 77 6f 72 64 20 69 73 20 75 73 65 64 20 69 6e 20  word is used in 
13ac0 74 68 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65  the LIMIT clause
13ad0 2c 20 74 68 65 6e 20 74 68 65 0a 6c 69 6d 69 74  , then the.limit
13ae0 20 69 73 20 74 68 65 20 66 69 72 73 74 20 6e 75   is the first nu
13af0 6d 62 65 72 20 61 6e 64 20 74 68 65 20 6f 66 66  mber and the off
13b00 73 65 74 20 69 73 20 74 68 65 20 73 65 63 6f 6e  set is the secon
13b10 64 20 6e 75 6d 62 65 72 2e 20 20 49 66 20 61 0a  d number.  If a.
13b20 63 6f 6d 6d 61 20 69 73 20 75 73 65 64 20 69 6e  comma is used in
13b30 73 74 65 61 64 20 6f 66 20 74 68 65 20 4f 46 46  stead of the OFF
13b40 53 45 54 20 6b 65 79 77 6f 72 64 2c 20 74 68 65  SET keyword, the
13b50 6e 20 74 68 65 20 6f 66 66 73 65 74 20 69 73 20  n the offset is 
13b60 74 68 65 0a 66 69 72 73 74 20 6e 75 6d 62 65 72  the.first number
13b70 20 61 6e 64 20 74 68 65 20 6c 69 6d 69 74 20 69   and the limit i
13b80 73 20 74 68 65 20 73 65 63 6f 6e 64 20 6e 75 6d  s the second num
13b90 62 65 72 2e 20 20 54 68 69 73 20 73 65 65 6d 69  ber.  This seemi
13ba0 6e 67 0a 63 6f 6e 74 72 61 64 69 74 69 6f 6e 20  ng.contradition 
13bb0 69 73 20 69 6e 74 65 6e 74 69 6f 6e 61 6c 20 2d  is intentional -
13bc0 20 69 74 20 6d 61 78 69 6d 69 7a 65 73 20 63 6f   it maximizes co
13bd0 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68  mpatibility with
13be0 20 6c 65 67 61 63 79 0a 53 51 4c 20 64 61 74 61   legacy.SQL data
13bf0 62 61 73 65 20 73 79 73 74 65 6d 73 2e 0a 3c 2f  base systems..</
13c00 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6d 70 6f 75 6e  p>..<p>A compoun
13c10 64 20 53 45 4c 45 43 54 20 69 73 20 66 6f 72 6d  d SELECT is form
13c20 65 64 20 66 72 6f 6d 20 74 77 6f 20 6f 72 20 6d  ed from two or m
13c30 6f 72 65 20 73 69 6d 70 6c 65 20 53 45 4c 45 43  ore simple SELEC
13c40 54 73 20 63 6f 6e 6e 65 63 74 65 64 0a 62 79 20  Ts connected.by 
13c50 6f 6e 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61  one of the opera
13c60 74 6f 72 73 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f  tors UNION, UNIO
13c70 4e 20 41 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54  N ALL, INTERSECT
13c80 2c 20 6f 72 20 45 58 43 45 50 54 2e 20 20 49 6e  , or EXCEPT.  In
13c90 0a 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45  .a compound SELE
13ca0 43 54 2c 20 61 6c 6c 20 74 68 65 20 63 6f 6e 73  CT, all the cons
13cb0 74 69 74 75 65 6e 74 20 53 45 4c 45 43 54 73 20  tituent SELECTs 
13cc0 6d 75 73 74 20 73 70 65 63 69 66 79 20 74 68 65  must specify the
13cd0 0a 73 61 6d 65 20 6e 75 6d 62 65 72 20 6f 66 20  .same number of 
13ce0 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20  result columns. 
13cf0 20 54 68 65 72 65 20 6d 61 79 20 62 65 20 6f 6e   There may be on
13d00 6c 79 20 61 20 73 69 6e 67 6c 65 20 4f 52 44 45  ly a single ORDE
13d10 52 20 42 59 0a 63 6c 61 75 73 65 20 61 74 20 74  R BY.clause at t
13d20 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 63 6f  he end of the co
13d30 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 2e 20 20  mpound SELECT.  
13d40 54 68 65 20 55 4e 49 4f 4e 20 61 6e 64 20 55 4e  The UNION and UN
13d50 49 4f 4e 20 41 4c 4c 0a 6f 70 65 72 61 74 6f 72  ION ALL.operator
13d60 73 20 63 6f 6d 62 69 6e 65 20 74 68 65 20 72 65  s combine the re
13d70 73 75 6c 74 73 20 6f 66 20 74 68 65 20 53 45 4c  sults of the SEL
13d80 45 43 54 73 20 74 6f 20 74 68 65 20 72 69 67 68  ECTs to the righ
13d90 74 20 61 6e 64 20 6c 65 66 74 20 69 6e 74 6f 0a  t and left into.
13da0 61 20 73 69 6e 67 6c 65 20 62 69 67 20 74 61 62  a single big tab
13db0 6c 65 2e 20 20 54 68 65 20 64 69 66 66 65 72 65  le.  The differe
13dc0 6e 63 65 20 69 73 20 74 68 61 74 20 69 6e 20 55  nce is that in U
13dd0 4e 49 4f 4e 20 61 6c 6c 20 72 65 73 75 6c 74 20  NION all result 
13de0 72 6f 77 73 0a 61 72 65 20 64 69 73 74 69 6e 63  rows.are distinc
13df0 74 20 77 68 65 72 65 20 69 6e 20 55 4e 49 4f 4e  t where in UNION
13e00 20 41 4c 4c 20 74 68 65 72 65 20 6d 61 79 20 62   ALL there may b
13e10 65 20 64 75 70 6c 69 63 61 74 65 73 2e 0a 54 68  e duplicates..Th
13e20 65 20 49 4e 54 45 52 53 45 43 54 20 6f 70 65 72  e INTERSECT oper
13e30 61 74 6f 72 20 74 61 6b 65 73 20 74 68 65 20 69  ator takes the i
13e40 6e 74 65 72 73 65 63 74 69 6f 6e 20 6f 66 20 74  ntersection of t
13e50 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68  he results of th
13e60 65 0a 6c 65 66 74 20 61 6e 64 20 72 69 67 68 74  e.left and right
13e70 20 53 45 4c 45 43 54 73 2e 20 20 45 58 43 45 50   SELECTs.  EXCEP
13e80 54 20 74 61 6b 65 73 20 74 68 65 20 72 65 73 75  T takes the resu
13e90 6c 74 20 6f 66 20 6c 65 66 74 20 53 45 4c 45 43  lt of left SELEC
13ea0 54 20 61 66 74 65 72 0a 72 65 6d 6f 76 69 6e 67  T after.removing
13eb0 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20   the results of 
13ec0 74 68 65 20 72 69 67 68 74 20 53 45 4c 45 43 54  the right SELECT
13ed0 2e 20 20 57 68 65 6e 20 74 68 72 65 65 20 6f 72  .  When three or
13ee0 20 6d 6f 72 65 20 53 45 4c 45 43 54 73 0a 61 72   more SELECTs.ar
13ef0 65 20 63 6f 6e 6e 65 63 74 65 64 20 69 6e 74 6f  e connected into
13f00 20 61 20 63 6f 6d 70 6f 75 6e 64 2c 20 74 68 65   a compound, the
13f10 79 20 67 72 6f 75 70 20 66 72 6f 6d 20 6c 65 66  y group from lef
13f20 74 20 74 6f 20 72 69 67 68 74 2e 3c 2f 70 3e 0a  t to right.</p>.
13f30 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
13f40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13f50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13f60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13f70 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13f80 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 55  ######.Section U
13f90 50 44 41 54 45 20 75 70 64 61 74 65 20 7b 55 50  PDATE update {UP
13fa0 44 41 54 45 20 55 50 44 41 54 45 73 7d 0a 0a 53  DATE UPDATEs}..S
13fb0 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
13fc0 6d 65 6e 74 7d 20 7b 0a 55 50 44 41 54 45 20 5b  ment} {.UPDATE [
13fd0 20 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c   OR <conflict-al
13fe0 67 6f 72 69 74 68 6d 3e 20 5d 20 5b 3c 64 61 74  gorithm> ] [<dat
13ff0 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c  abase-name> .] <
14000 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 53 45 54 20  table-name>.SET 
14010 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 20 5b 2c 20  <assignment> [, 
14020 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 5d 2a 0a 5b  <assignment>]*.[
14030 57 48 45 52 45 20 3c 65 78 70 72 3e 5d 0a 7d 20  WHERE <expr>].} 
14040 7b 61 73 73 69 67 6e 6d 65 6e 74 7d 20 7b 0a 3c  {assignment} {.<
14050 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 3d 20 3c  column-name> = <
14060 65 78 70 72 3e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a  expr>.}.</tcl>..
14070 3c 70 3e 54 68 65 20 55 50 44 41 54 45 20 73 74  <p>The UPDATE st
14080 61 74 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20  atement is used 
14090 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 76 61  to change the va
140a0 6c 75 65 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  lue of columns i
140b0 6e 20 0a 73 65 6c 65 63 74 65 64 20 72 6f 77 73  n .selected rows
140c0 20 6f 66 20 61 20 74 61 62 6c 65 2e 20 20 45 61   of a table.  Ea
140d0 63 68 20 61 73 73 69 67 6e 6d 65 6e 74 20 69 6e  ch assignment in
140e0 20 61 6e 20 55 50 44 41 54 45 20 73 70 65 63 69   an UPDATE speci
140f0 66 69 65 73 0a 61 20 63 6f 6c 75 6d 6e 20 6e 61  fies.a column na
14100 6d 65 20 74 6f 20 74 68 65 20 6c 65 66 74 20 6f  me to the left o
14110 66 20 74 68 65 20 65 71 75 61 6c 73 20 73 69 67  f the equals sig
14120 6e 20 61 6e 64 20 61 6e 20 61 72 62 69 74 72 61  n and an arbitra
14130 72 79 20 65 78 70 72 65 73 73 69 6f 6e 0a 74 6f  ry expression.to
14140 20 74 68 65 20 72 69 67 68 74 2e 20 20 54 68 65   the right.  The
14150 20 65 78 70 72 65 73 73 69 6f 6e 73 20 6d 61 79   expressions may
14160 20 75 73 65 20 74 68 65 20 76 61 6c 75 65 73 20   use the values 
14170 6f 66 20 6f 74 68 65 72 20 63 6f 6c 75 6d 6e 73  of other columns
14180 2e 0a 41 6c 6c 20 65 78 70 72 65 73 73 69 6f 6e  ..All expression
14190 73 20 61 72 65 20 65 76 61 6c 75 61 74 65 64 20  s are evaluated 
141a0 62 65 66 6f 72 65 20 61 6e 79 20 61 73 73 69 67  before any assig
141b0 6e 6d 65 6e 74 73 20 61 72 65 20 6d 61 64 65 2e  nments are made.
141c0 0a 41 20 57 48 45 52 45 20 63 6c 61 75 73 65 20  .A WHERE clause 
141d0 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 72  can be used to r
141e0 65 73 74 72 69 63 74 20 77 68 69 63 68 20 72 6f  estrict which ro
141f0 77 73 20 61 72 65 20 75 70 64 61 74 65 64 2e 3c  ws are updated.<
14200 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69  /p>..<p>The opti
14210 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c  onal conflict-cl
14220 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20  ause allows the 
14230 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66  specification of
14240 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a   an alternative.
14250 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c  constraint confl
14260 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  ict resolution a
14270 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20  lgorithm to use 
14280 64 75 72 69 6e 67 20 74 68 69 73 20 6f 6e 65 20  during this one 
14290 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65  command..See the
142a0 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a   section titled.
142b0 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 66 6f  [ON CONFLICT] fo
142c0 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
142d0 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 0a  ormation.</p>...
142e0 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
142f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14300 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14310 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14320 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14330 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 56 41 43  ####.Section VAC
14340 55 55 4d 20 76 61 63 75 75 6d 20 56 41 43 55 55  UUM vacuum VACUU
14350 4d 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  M..Syntax {sql-s
14360 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 56 41 43 55  tatement} {.VACU
14370 55 4d 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  UM.}.</tcl>..<p>
14380 57 68 65 6e 20 61 6e 20 6f 62 6a 65 63 74 20 28  When an object (
14390 74 61 62 6c 65 2c 20 69 6e 64 65 78 2c 20 6f 72  table, index, or
143a0 20 74 72 69 67 67 65 72 29 20 69 73 20 64 72 6f   trigger) is dro
143b0 70 70 65 64 20 66 72 6f 6d 20 74 68 65 20 0a 64  pped from the .d
143c0 61 74 61 62 61 73 65 2c 20 69 74 20 6c 65 61 76  atabase, it leav
143d0 65 73 20 62 65 68 69 6e 64 20 65 6d 70 74 79 20  es behind empty 
143e0 73 70 61 63 65 2e 20 20 54 68 69 73 20 6d 61 6b  space.  This mak
143f0 65 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20  es the database 
14400 0a 66 69 6c 65 20 6c 61 72 67 65 72 20 74 68 61  .file larger tha
14410 6e 20 69 74 20 6e 65 65 64 73 20 74 6f 20 62 65  n it needs to be
14420 2c 20 62 75 74 20 63 61 6e 20 73 70 65 65 64 20  , but can speed 
14430 75 70 20 69 6e 73 65 72 74 73 2e 20 20 49 6e 20  up inserts.  In 
14440 74 69 6d 65 20 0a 69 6e 73 65 72 74 73 20 61 6e  time .inserts an
14450 64 20 64 65 6c 65 74 65 73 20 63 61 6e 20 6c 65  d deletes can le
14460 61 76 65 20 74 68 65 20 64 61 74 61 62 61 73 65  ave the database
14470 20 66 69 6c 65 20 73 74 72 75 63 74 75 72 65 20   file structure 
14480 66 72 61 67 6d 65 6e 74 65 64 2c 20 0a 77 68 69  fragmented, .whi
14490 63 68 20 73 6c 6f 77 73 20 64 6f 77 6e 20 64 69  ch slows down di
144a0 73 6b 20 61 63 63 65 73 73 20 74 6f 20 74 68 65  sk access to the
144b0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 74 65 6e   database conten
144c0 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ts.</p>..<p>The 
144d0 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 63  VACUUM command c
144e0 6c 65 61 6e 73 0a 74 68 65 20 6d 61 69 6e 20 64  leans.the main d
144f0 61 74 61 62 61 73 65 20 62 79 20 63 6f 70 79 69  atabase by copyi
14500 6e 67 20 69 74 73 20 63 6f 6e 74 65 6e 74 73 20  ng its contents 
14510 74 6f 20 61 20 74 65 6d 70 6f 72 61 72 79 20 64  to a temporary d
14520 61 74 61 62 61 73 65 20 66 69 6c 65 20 61 6e 64  atabase file and
14530 20 0a 72 65 6c 6f 61 64 69 6e 67 20 74 68 65 20   .reloading the 
14540 6f 72 69 67 69 6e 61 6c 20 64 61 74 61 62 61 73  original databas
14550 65 20 66 69 6c 65 20 66 72 6f 6d 20 74 68 65 20  e file from the 
14560 63 6f 70 79 2e 20 20 54 68 69 73 20 65 6c 69 6d  copy.  This elim
14570 69 6e 61 74 65 73 20 0a 66 72 65 65 20 70 61 67  inates .free pag
14580 65 73 2c 20 20 61 6c 69 67 6e 73 20 74 61 62 6c  es,  aligns tabl
14590 65 20 64 61 74 61 20 74 6f 20 62 65 20 63 6f 6e  e data to be con
145a0 74 69 67 75 6f 75 73 2c 20 61 6e 64 20 6f 74 68  tiguous, and oth
145b0 65 72 77 69 73 65 20 63 6c 65 61 6e 73 20 0a 75  erwise cleans .u
145c0 70 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  p the database f
145d0 69 6c 65 20 73 74 72 75 63 74 75 72 65 2e 3c 2f  ile structure.</
145e0 70 3e 0a 0a 3c 70 3e 54 68 65 20 56 41 43 55 55  p>..<p>The VACUU
145f0 4d 20 63 6f 6d 6d 61 6e 64 20 6d 61 79 20 63 68  M command may ch
14600 61 6e 67 65 20 74 68 65 20 0a 3c 61 20 68 72 65  ange the .<a hre
14610 66 3d 22 6c 61 6e 67 5f 63 72 65 61 74 65 74 61  f="lang_createta
14620 62 6c 65 2e 68 74 6d 6c 23 72 6f 77 69 64 22 3e  ble.html#rowid">
14630 52 4f 57 49 44 3c 2f 61 3e 20 6f 66 20 65 6e 74  ROWID</a> of ent
14640 69 72 65 73 20 69 6e 20 74 61 62 6c 65 73 20 74  ires in tables t
14650 68 61 74 20 64 6f 0a 6e 6f 74 20 68 61 76 65 20  hat do.not have 
14660 61 6e 20 65 78 70 6c 69 63 69 74 20 49 4e 54 45  an explicit INTE
14670 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2e  GER PRIMARY KEY.
14680 3c 2f 70 3e 0a 0a 3c 70 3e 56 41 43 55 55 4d 20  </p>..<p>VACUUM 
14690 6f 6e 6c 79 20 77 6f 72 6b 73 20 6f 6e 20 74 68  only works on th
146a0 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2e  e main database.
146b0 0a 49 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69  .It is not possi
146c0 62 6c 65 20 74 6f 20 56 41 43 55 55 4d 20 61 6e  ble to VACUUM an
146d0 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
146e0 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70  se file.</p>..<p
146f0 3e 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d  >The VACUUM comm
14700 61 6e 64 20 77 69 6c 6c 20 66 61 69 6c 20 69 66  and will fail if
14710 20 74 68 65 72 65 20 69 73 20 61 6e 20 61 63 74   there is an act
14720 69 76 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e  ive transaction.
14730 0a 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d  .The VACUUM comm
14740 61 6e 64 20 69 73 20 61 20 6e 6f 2d 6f 70 20 66  and is a no-op f
14750 6f 72 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74  or in-memory dat
14760 61 62 61 73 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e  abases.</p>..<p>
14770 41 73 20 6f 66 20 53 51 4c 69 74 65 20 76 65 72  As of SQLite ver
14780 73 69 6f 6e 20 33 2e 31 2c 20 61 6e 20 61 6c 74  sion 3.1, an alt
14790 65 72 6e 61 74 69 76 65 20 74 6f 20 75 73 69 6e  ernative to usin
147a0 67 20 74 68 65 20 56 41 43 55 55 4d 20 63 6f 6d  g the VACUUM com
147b0 6d 61 6e 64 0a 69 73 20 61 75 74 6f 2d 76 61 63  mand.is auto-vac
147c0 75 75 6d 20 6d 6f 64 65 2c 20 65 6e 61 62 6c 65  uum mode, enable
147d0 64 20 75 73 69 6e 67 20 74 68 65 20 0a 5b 61 75  d using the .[au
147e0 74 6f 5f 76 61 63 75 75 6d 5d 20 70 72 61 67 6d  to_vacuum] pragm
147f0 61 2e 20 20 57 68 65 6e 20 5b 61 75 74 6f 5f 76  a.  When [auto_v
14800 61 63 75 75 6d 5d 20 69 73 20 65 6e 61 62 6c 65  acuum] is enable
14810 64 20 66 6f 72 20 61 20 64 61 74 61 62 61 73 65  d for a database
14820 2c 20 0a 6c 61 72 67 65 20 64 65 6c 65 74 65 73  , .large deletes
14830 20 63 61 75 73 65 0a 74 68 65 20 73 69 7a 65 20   cause.the size 
14840 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
14850 66 69 6c 65 20 74 6f 20 73 68 72 69 6e 6b 2e 20  file to shrink. 
14860 20 48 6f 77 65 76 65 72 2c 20 5b 61 75 74 6f 5f   However, [auto_
14870 76 61 63 75 75 6d 5d 0a 61 6c 73 6f 20 63 61 75  vacuum].also cau
14880 73 65 73 20 65 78 63 65 73 73 20 66 72 61 67 6d  ses excess fragm
14890 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  entation of the 
148a0 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20 20  database file.  
148b0 41 6e 64 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d  And [auto_vacuum
148c0 5d 0a 64 6f 65 73 20 6e 6f 74 20 63 6f 6d 70 61  ].does not compa
148d0 63 74 20 70 61 72 74 69 61 6c 6c 79 20 66 69 6c  ct partially fil
148e0 6c 65 64 20 70 61 67 65 73 20 6f 66 20 74 68 65  led pages of the
148f0 20 64 61 74 61 62 61 73 65 20 61 73 20 56 41 43   database as VAC
14900 55 55 4d 0a 64 6f 65 73 2e 0a 3c 2f 70 3e 0a 0a  UUM.does..</p>..
14910 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
14920 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14930 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14940 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14950 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14960 23 23 23 0a 23 20 41 20 6c 69 73 74 20 6f 66 20  ###.# A list of 
14970 6b 65 79 77 6f 72 64 73 2e 20 20 41 20 61 73 74  keywords.  A ast
14980 65 72 69 73 6b 20 6f 63 63 75 72 73 20 61 66 74  erisk occurs aft
14990 65 72 20 74 68 65 20 6b 65 79 77 6f 72 64 20 69  er the keyword i
149a0 66 20 69 74 20 69 73 20 6f 6e 0a 23 20 74 68 65  f it is on.# the
149b0 20 66 61 6c 6c 62 61 63 6b 20 6c 69 73 74 2e 0a   fallback list..
149c0 23 0a 73 65 74 20 6b 65 79 77 6f 72 64 5f 6c 69  #.set keyword_li
149d0 73 74 20 5b 6c 73 6f 72 74 20 7b 0a 20 20 20 41  st [lsort {.   A
149e0 42 4f 52 54 2a 0a 20 20 20 41 44 44 0a 20 20 20  BORT*.   ADD.   
149f0 41 46 54 45 52 2a 0a 20 20 20 41 4c 4c 0a 20 20  AFTER*.   ALL.  
14a00 20 41 4c 54 45 52 0a 20 20 20 41 4e 41 4c 59 5a   ALTER.   ANALYZ
14a10 45 2a 0a 20 20 20 41 4e 44 0a 20 20 20 41 53 0a  E*.   AND.   AS.
14a20 20 20 20 41 53 43 2a 0a 20 20 20 41 54 54 41 43     ASC*.   ATTAC
14a30 48 2a 0a 20 20 20 41 55 54 4f 49 4e 43 52 45 4d  H*.   AUTOINCREM
14a40 45 4e 54 0a 20 20 20 42 45 46 4f 52 45 2a 0a 20  ENT.   BEFORE*. 
14a50 20 20 42 45 47 49 4e 2a 0a 20 20 20 42 45 54 57    BEGIN*.   BETW
14a60 45 45 4e 0a 20 20 20 42 59 0a 20 20 20 43 41 53  EEN.   BY.   CAS
14a70 43 41 44 45 2a 0a 20 20 20 43 41 53 45 0a 20 20  CADE*.   CASE.  
14a80 20 43 41 53 54 2a 0a 20 20 20 43 48 45 43 4b 0a   CAST*.   CHECK.
14a90 20 20 20 43 4f 4c 4c 41 54 45 0a 20 20 20 43 4f     COLLATE.   CO
14aa0 4c 55 4d 4e 0a 20 20 20 43 4f 4d 4d 49 54 0a 20  LUMN.   COMMIT. 
14ab0 20 20 43 4f 4e 46 4c 49 43 54 2a 0a 20 20 20 43    CONFLICT*.   C
14ac0 4f 4e 53 54 52 41 49 4e 54 0a 20 20 20 43 52 45  ONSTRAINT.   CRE
14ad0 41 54 45 0a 20 20 20 43 52 4f 53 53 0a 20 20 20  ATE.   CROSS.   
14ae0 43 55 52 52 45 4e 54 5f 44 41 54 45 2a 0a 20 20  CURRENT_DATE*.  
14af0 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2a 0a 20   CURRENT_TIME*. 
14b00 20 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54    CURRENT_TIMEST
14b10 41 4d 50 2a 0a 20 20 20 44 41 54 41 42 41 53 45  AMP*.   DATABASE
14b20 2a 0a 20 20 20 44 45 46 41 55 4c 54 0a 20 20 20  *.   DEFAULT.   
14b30 44 45 46 45 52 52 45 44 2a 0a 20 20 20 44 45 46  DEFERRED*.   DEF
14b40 45 52 52 41 42 4c 45 0a 20 20 20 44 45 4c 45 54  ERRABLE.   DELET
14b50 45 0a 20 20 20 44 45 53 43 2a 0a 20 20 20 44 45  E.   DESC*.   DE
14b60 54 41 43 48 2a 0a 20 20 20 44 49 53 54 49 4e 43  TACH*.   DISTINC
14b70 54 0a 20 20 20 44 52 4f 50 0a 20 20 20 45 4e 44  T.   DROP.   END
14b80 2a 0a 20 20 20 45 41 43 48 2a 0a 20 20 20 45 4c  *.   EACH*.   EL
14b90 53 45 0a 20 20 20 45 53 43 41 50 45 0a 20 20 20  SE.   ESCAPE.   
14ba0 45 58 43 45 50 54 0a 20 20 20 45 58 43 4c 55 53  EXCEPT.   EXCLUS
14bb0 49 56 45 2a 0a 20 20 20 45 58 49 53 54 53 0a 20  IVE*.   EXISTS. 
14bc0 20 20 45 58 50 4c 41 49 4e 2a 0a 20 20 20 46 41    EXPLAIN*.   FA
14bd0 49 4c 2a 0a 20 20 20 46 4f 52 2a 0a 20 20 20 46  IL*.   FOR*.   F
14be0 4f 52 45 49 47 4e 0a 20 20 20 46 52 4f 4d 0a 20  OREIGN.   FROM. 
14bf0 20 20 46 55 4c 4c 0a 20 20 20 47 4c 4f 42 2a 0a    FULL.   GLOB*.
14c00 20 20 20 47 52 4f 55 50 0a 20 20 20 48 41 56 49     GROUP.   HAVI
14c10 4e 47 0a 20 20 20 49 46 2a 0a 20 20 20 49 47 4e  NG.   IF*.   IGN
14c20 4f 52 45 2a 0a 20 20 20 49 4d 4d 45 44 49 41 54  ORE*.   IMMEDIAT
14c30 45 2a 0a 20 20 20 49 4e 0a 20 20 20 49 4e 44 45  E*.   IN.   INDE
14c40 58 0a 20 20 20 49 4e 49 54 49 41 4c 4c 59 2a 0a  X.   INITIALLY*.
14c50 20 20 20 49 4e 4e 45 52 0a 20 20 20 49 4e 53 45     INNER.   INSE
14c60 52 54 0a 20 20 20 49 4e 53 54 45 41 44 2a 0a 20  RT.   INSTEAD*. 
14c70 20 20 49 4e 54 45 52 53 45 43 54 0a 20 20 20 49    INTERSECT.   I
14c80 4e 54 4f 0a 20 20 20 49 53 0a 20 20 20 49 53 4e  NTO.   IS.   ISN
14c90 55 4c 4c 0a 20 20 20 4a 4f 49 4e 0a 20 20 20 4b  ULL.   JOIN.   K
14ca0 45 59 2a 0a 20 20 20 4c 45 46 54 0a 20 20 20 4c  EY*.   LEFT.   L
14cb0 49 4b 45 2a 0a 20 20 20 4c 49 4d 49 54 0a 20 20  IKE*.   LIMIT.  
14cc0 20 4d 41 54 43 48 2a 0a 20 20 20 4e 41 54 55 52   MATCH*.   NATUR
14cd0 41 4c 0a 20 20 20 4e 4f 54 0a 20 20 20 4e 4f 54  AL.   NOT.   NOT
14ce0 4e 55 4c 4c 0a 20 20 20 4e 55 4c 4c 0a 20 20 20  NULL.   NULL.   
14cf0 4f 46 2a 0a 20 20 20 4f 46 46 53 45 54 2a 0a 20  OF*.   OFFSET*. 
14d00 20 20 4f 4e 0a 20 20 20 4f 52 0a 20 20 20 4f 52    ON.   OR.   OR
14d10 44 45 52 0a 20 20 20 4f 55 54 45 52 0a 20 20 20  DER.   OUTER.   
14d20 50 4c 41 4e 2a 0a 20 20 20 50 52 41 47 4d 41 2a  PLAN*.   PRAGMA*
14d30 0a 20 20 20 50 52 49 4d 41 52 59 0a 20 20 20 51  .   PRIMARY.   Q
14d40 55 45 52 59 2a 0a 20 20 20 52 41 49 53 45 2a 0a  UERY*.   RAISE*.
14d50 20 20 20 52 45 46 45 52 45 4e 43 45 53 0a 20 20     REFERENCES.  
14d60 20 52 45 47 45 58 50 0a 20 20 20 52 45 49 4e 44   REGEXP.   REIND
14d70 45 58 2a 0a 20 20 20 52 45 4e 41 4d 45 2a 0a 20  EX*.   RENAME*. 
14d80 20 20 52 45 50 4c 41 43 45 2a 0a 20 20 20 52 45    REPLACE*.   RE
14d90 53 54 52 49 43 54 2a 0a 20 20 20 52 49 47 48 54  STRICT*.   RIGHT
14da0 0a 20 20 20 52 4f 4c 4c 42 41 43 4b 0a 20 20 20  .   ROLLBACK.   
14db0 52 4f 57 2a 0a 20 20 20 53 45 4c 45 43 54 0a 20  ROW*.   SELECT. 
14dc0 20 20 53 45 54 0a 20 20 20 54 41 42 4c 45 0a 20    SET.   TABLE. 
14dd0 20 20 54 45 4d 50 2a 0a 20 20 20 54 45 4d 50 4f    TEMP*.   TEMPO
14de0 52 41 52 59 2a 0a 20 20 20 54 48 45 4e 0a 20 20  RARY*.   THEN.  
14df0 20 54 4f 0a 20 20 20 54 52 41 4e 53 41 43 54 49   TO.   TRANSACTI
14e00 4f 4e 0a 20 20 20 54 52 49 47 47 45 52 2a 0a 20  ON.   TRIGGER*. 
14e10 20 20 55 4e 49 4f 4e 0a 20 20 20 55 4e 49 51 55    UNION.   UNIQU
14e20 45 0a 20 20 20 55 50 44 41 54 45 0a 20 20 20 55  E.   UPDATE.   U
14e30 53 49 4e 47 0a 20 20 20 56 41 43 55 55 4d 2a 0a  SING.   VACUUM*.
14e40 20 20 20 56 41 4c 55 45 53 0a 20 20 20 56 49 45     VALUES.   VIE
14e50 57 2a 0a 20 20 20 56 49 52 54 55 41 4c 2a 0a 20  W*.   VIRTUAL*. 
14e60 20 20 57 48 45 4e 0a 20 20 20 57 48 45 52 45 0a    WHEN.   WHERE.
14e70 7d 5d 0a 0a 68 64 5f 70 75 74 73 20 7b 3c 44 49  }]..hd_puts {<DI
14e80 56 20 63 6c 61 73 73 3d 22 70 64 66 5f 73 65 63  V class="pdf_sec
14e90 74 69 6f 6e 22 3e 7d 0a 53 65 63 74 69 6f 6e 20  tion">}.Section 
14ea0 7b 53 51 4c 69 74 65 20 4b 65 79 77 6f 72 64 73  {SQLite Keywords
14eb0 7d 20 6b 65 79 77 6f 72 64 73 20 7b 7b 53 51 4c  } keywords {{SQL
14ec0 20 6b 65 79 77 6f 72 64 7d 20 7b 53 51 4c 20 6b   keyword} {SQL k
14ed0 65 79 77 6f 72 64 73 7d 7d 0a 68 64 5f 70 75 74  eywords}}.hd_put
14ee0 73 20 7b 3c 2f 44 49 56 3e 7d 0a 3c 2f 74 63 6c  s {</DIV>}.</tcl
14ef0 3e 0a 0a 3c 70 3e 54 68 65 20 53 51 4c 20 73 74  >..<p>The SQL st
14f00 61 6e 64 61 72 64 20 73 70 65 63 69 66 69 65 73  andard specifies
14f10 20 61 20 68 75 67 65 20 6e 75 6d 62 65 72 20 6f   a huge number o
14f20 66 20 6b 65 79 77 6f 72 64 73 20 77 68 69 63 68  f keywords which
14f30 20 6d 61 79 20 6e 6f 74 0a 62 65 20 75 73 65 64   may not.be used
14f40 20 61 73 20 74 68 65 20 6e 61 6d 65 73 20 6f 66   as the names of
14f50 20 74 61 62 6c 65 73 2c 20 69 6e 64 69 63 65 73   tables, indices
14f60 2c 20 63 6f 6c 75 6d 6e 73 2c 20 64 61 74 61 62  , columns, datab
14f70 61 73 65 73 2c 20 75 73 65 72 2d 64 65 66 69 6e  ases, user-defin
14f80 65 64 0a 66 75 6e 63 74 69 6f 6e 73 2c 20 63 6f  ed.functions, co
14f90 6c 6c 61 74 69 6f 6e 73 2c 20 76 69 72 74 75 61  llations, virtua
14fa0 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 73 2c  l table modules,
14fb0 20 6f 72 20 61 6e 79 20 6f 74 68 65 72 20 6e 61   or any other na
14fc0 6d 65 64 20 6f 62 6a 65 63 74 2e 0a 54 68 65 20  med object..The 
14fd0 6c 69 73 74 20 6f 66 20 6b 65 79 77 6f 72 64 73  list of keywords
14fe0 20 69 73 20 73 6f 20 6c 6f 6e 67 20 74 68 61 74   is so long that
14ff0 20 66 65 77 20 70 65 6f 70 6c 65 20 63 61 6e 20   few people can 
15000 72 65 6d 65 6d 62 65 72 20 74 68 65 6d 20 61 6c  remember them al
15010 6c 2e 0a 46 6f 72 20 6d 6f 73 74 20 53 51 4c 20  l..For most SQL 
15020 63 6f 64 65 2c 20 79 6f 75 72 20 73 61 66 65 73  code, your safes
15030 74 20 62 65 74 20 69 73 20 74 6f 20 6e 65 76 65  t bet is to neve
15040 72 20 75 73 65 20 61 6e 79 20 45 6e 67 6c 69 73  r use any Englis
15050 68 20 6c 61 6e 67 75 61 67 65 0a 77 6f 72 64 20  h language.word 
15060 61 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  as the name of a
15070 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 6f 62   user-defined ob
15080 6a 65 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66  ject.</p>..<p>If
15090 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 75 73 65   you want to use
150a0 20 61 20 6b 65 79 77 6f 72 64 20 61 73 20 61 20   a keyword as a 
150b0 6e 61 6d 65 2c 20 79 6f 75 20 6e 65 65 64 20 74  name, you need t
150c0 6f 20 71 75 6f 74 65 20 69 74 2e 20 20 54 68 65  o quote it.  The
150d0 72 65 0a 61 72 65 20 74 68 72 65 65 20 77 61 79  re.are three way
150e0 73 20 6f 66 20 71 75 6f 74 69 6e 67 20 6b 65 79  s of quoting key
150f0 77 6f 72 64 73 20 69 6e 20 53 51 4c 69 74 65 3a  words in SQLite:
15100 3c 2f 70 3e 0a 0a 3c 70 3e 0a 3c 62 6c 6f 63 6b  </p>..<p>.<block
15110 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 3e 0a 3c  quote>.<table>.<
15120 74 72 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
15130 74 6f 70 22 3e 3c 62 3e 27 6b 65 79 77 6f 72 64  top"><b>'keyword
15140 27 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 77 69  '</b></td><td wi
15150 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 09  dth="20"></td>..
15160 3c 74 64 3e 41 20 6b 65 79 77 6f 72 64 20 69 6e  <td>A keyword in
15170 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 20 69   single quotes i
15180 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73  s interpreted as
15190 20 61 20 6c 69 74 65 72 61 6c 20 73 74 72 69 6e   a literal strin
151a0 67 0a 20 20 20 20 20 20 20 20 69 66 20 69 74 20  g.        if it 
151b0 6f 63 63 75 72 73 20 69 6e 20 61 20 63 6f 6e 74  occurs in a cont
151c0 65 78 74 20 77 68 65 72 65 20 61 20 73 74 72 69  ext where a stri
151d0 6e 67 20 6c 69 74 65 72 61 6c 20 69 73 20 61 6c  ng literal is al
151e0 6c 6f 77 65 64 2c 20 6f 74 68 65 72 77 69 73 65  lowed, otherwise
151f0 0a 09 69 74 20 69 73 20 75 6e 64 65 72 73 74 6f  ..it is understo
15200 6f 64 20 61 73 20 61 6e 20 69 64 65 6e 74 69 66  od as an identif
15210 69 65 72 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c  ier.</td></tr>.<
15220 74 72 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
15230 74 6f 70 22 3e 3c 62 3e 22 6b 65 79 77 6f 72 64  top"><b>"keyword
15240 22 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 3c 2f  "</b></td><td></
15250 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65 79 77 6f  td>..<td>A keywo
15260 72 64 20 69 6e 20 64 6f 75 62 6c 65 2d 71 75 6f  rd in double-quo
15270 74 65 73 20 69 73 20 69 6e 74 65 72 70 72 65 74  tes is interpret
15280 65 64 20 61 73 20 61 6e 20 69 64 65 6e 74 69 66  ed as an identif
15290 69 65 72 20 69 66 0a 20 20 20 20 20 20 20 20 69  ier if.        i
152a0 74 20 6d 61 74 63 68 65 73 20 61 20 6b 6e 6f 77  t matches a know
152b0 6e 20 69 64 65 6e 74 69 66 69 65 72 2e 20 20 4f  n identifier.  O
152c0 74 68 65 72 77 69 73 65 20 69 74 20 69 73 20 69  therwise it is i
152d0 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 0a  nterpreted as a.
152e0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c          string l
152f0 69 74 65 72 61 6c 2e 3c 2f 74 64 3e 3c 2f 74 72  iteral.</td></tr
15300 3e 0a 3c 74 72 3e 09 3c 74 64 20 76 61 6c 69 67  >.<tr>.<td valig
15310 6e 3d 22 74 6f 70 22 3e 3c 62 3e 26 23 39 31 3b  n="top"><b>&#91;
15320 6b 65 79 77 6f 72 64 26 23 39 33 3b 3c 2f 62 3e  keyword&#93;</b>
15330 3c 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09  </td><td></td>..
15340 3c 74 64 3e 41 20 6b 65 79 77 6f 72 64 20 65 6e  <td>A keyword en
15350 63 6c 6f 73 65 64 20 69 6e 20 73 71 75 61 72 65  closed in square
15360 20 62 72 61 63 6b 65 74 73 20 69 73 20 61 6c 77   brackets is alw
15370 61 79 73 20 75 6e 64 65 72 73 74 6f 6f 64 20 61  ays understood a
15380 73 0a 20 20 20 20 20 20 20 20 61 6e 20 69 64 65  s.        an ide
15390 6e 74 69 66 69 65 72 2e 20 20 54 68 69 73 20 69  ntifier.  This i
153a0 73 20 6e 6f 74 20 73 74 61 6e 64 61 72 64 20 53  s not standard S
153b0 51 4c 2e 20 20 54 68 69 73 20 71 75 6f 74 69 6e  QL.  This quotin
153c0 67 20 6d 65 63 68 61 6e 69 73 6d 0a 20 20 20 20  g mechanism.    
153d0 20 20 20 20 69 73 20 75 73 65 64 20 62 79 20 4d      is used by M
153e0 53 20 41 63 63 65 73 73 20 61 6e 64 20 53 51 4c  S Access and SQL
153f0 20 53 65 72 76 65 72 20 61 6e 64 20 69 73 20 69   Server and is i
15400 6e 63 6c 75 64 65 64 20 69 6e 20 53 51 4c 69 74  ncluded in SQLit
15410 65 20 66 6f 72 0a 20 20 20 20 20 20 20 20 63 6f  e for.        co
15420 6d 70 61 74 69 62 69 6c 69 74 79 2e 3c 2f 74 64  mpatibility.</td
15430 3e 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a  ></tr>.</table>.
15440 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 2f  </blockquote>.</
15450 70 3e 0a 0a 3c 70 3e 51 75 6f 74 65 64 20 6b 65  p>..<p>Quoted ke
15460 79 77 6f 72 64 73 20 61 72 65 20 75 6e 61 65 73  ywords are unaes
15470 74 68 65 74 69 63 2e 0a 54 6f 20 68 65 6c 70 20  thetic..To help 
15480 79 6f 75 20 61 76 6f 69 64 20 74 68 65 6d 2c 20  you avoid them, 
15490 53 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20 6d 61  SQLite allows ma
154a0 6e 79 20 6b 65 79 77 6f 72 64 73 20 74 6f 20 62  ny keywords to b
154b0 65 20 75 73 65 64 20 75 6e 71 75 6f 74 65 64 0a  e used unquoted.
154c0 61 73 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20  as the names of 
154d0 64 61 74 61 62 61 73 65 73 2c 20 74 61 62 6c 65  databases, table
154e0 73 2c 20 69 6e 64 69 63 65 73 2c 20 74 72 69 67  s, indices, trig
154f0 67 65 72 73 2c 20 76 69 65 77 73 2c 20 63 6f 6c  gers, views, col
15500 75 6d 6e 73 2c 0a 75 73 65 72 2d 64 65 66 69 6e  umns,.user-defin
15510 65 64 20 66 75 6e 63 74 69 6f 6e 73 2c 20 63 6f  ed functions, co
15520 6c 6c 61 74 69 6f 6e 73 2c 20 61 74 74 61 63 68  llations, attach
15530 65 64 20 64 61 74 61 62 61 73 65 73 2c 20 61 6e  ed databases, an
15540 64 20 76 69 72 74 75 61 6c 0a 66 75 6e 63 74 69  d virtual.functi
15550 6f 6e 20 6d 6f 64 75 6c 65 73 2e 0a 49 6e 20 74  on modules..In t
15560 68 65 20 6c 69 73 74 20 6f 66 20 6b 65 79 77 6f  he list of keywo
15570 72 64 73 20 74 68 61 74 20 66 6f 6c 6c 6f 77 73  rds that follows
15580 2c 20 74 68 6f 73 65 20 74 68 61 74 20 63 61 6e  , those that can
15590 20 62 65 20 75 73 65 64 20 61 73 20 69 64 65 6e   be used as iden
155a0 74 69 66 69 65 72 73 0a 61 72 65 20 73 68 6f 77  tifiers.are show
155b0 6e 20 69 6e 20 61 6e 20 69 74 61 6c 69 63 20 66  n in an italic f
155c0 6f 6e 74 2e 20 20 4b 65 79 77 6f 72 64 73 20 74  ont.  Keywords t
155d0 68 61 74 20 6d 75 73 74 20 62 65 20 71 75 6f 74  hat must be quot
155e0 65 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 62  ed in order to b
155f0 65 0a 75 73 65 64 20 61 73 20 69 64 65 6e 74 69  e.used as identi
15600 66 69 65 72 73 20 61 72 65 20 73 68 6f 77 6e 20  fiers are shown 
15610 69 6e 20 62 6f 6c 64 2e 3c 2f 70 3e 0a 0a 3c 70  in bold.</p>..<p
15620 3e 0a 53 51 4c 69 74 65 20 61 64 64 73 20 6e 65  >.SQLite adds ne
15630 77 20 6b 65 79 77 6f 72 64 73 20 66 72 6f 6d 20  w keywords from 
15640 74 69 6d 65 20 74 6f 20 74 69 6d 65 20 77 68 65  time to time whe
15650 6e 20 69 74 20 74 61 6b 65 20 6f 6e 20 6e 65 77  n it take on new
15660 20 66 65 61 74 75 72 65 73 2e 0a 53 6f 20 74 6f   features..So to
15670 20 70 72 65 76 65 6e 74 20 79 6f 75 72 20 63 6f   prevent your co
15680 64 65 20 66 72 6f 6d 20 62 65 69 6e 67 20 62 72  de from being br
15690 6f 6b 65 6e 20 62 79 20 66 75 74 75 72 65 20 65  oken by future e
156a0 6e 68 61 6e 63 65 6d 65 6e 74 73 2c 20 79 6f 75  nhancements, you
156b0 20 73 68 6f 75 6c 64 0a 6e 6f 72 6d 61 6c 6c 79   should.normally
156c0 20 71 75 6f 74 65 20 61 6e 79 20 69 6e 64 65 6e   quote any inden
156d0 74 69 66 69 65 72 20 74 68 61 74 20 69 73 20 61  tifier that is a
156e0 6e 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61  n English langua
156f0 67 65 20 77 6f 72 64 2c 20 65 76 65 6e 20 69 66  ge word, even if
15700 0a 79 6f 75 20 64 6f 20 6e 6f 74 20 68 61 76 65  .you do not have
15710 20 74 6f 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54   to..</p>..<p>.T
15720 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65  he following are
15730 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20 63 75   the keywords cu
15740 72 72 65 6e 74 6c 79 20 72 65 63 6f 67 6e 69 7a  rrently recogniz
15750 65 64 20 62 79 20 53 51 4c 69 74 65 3a 0a 3c 2f  ed by SQLite:.</
15760 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
15770 0a 3c 74 61 62 6c 65 20 77 69 64 74 68 3d 22 31  .<table width="1
15780 30 30 25 22 20 63 6c 61 73 73 3d 22 70 64 66 5f  00%" class="pdf_
15790 6b 65 79 77 6f 72 64 73 22 3e 0a 3c 74 72 3e 0a  keywords">.<tr>.
157a0 3c 74 64 20 61 6c 69 67 6e 3d 22 6c 65 66 74 22  <td align="left"
157b0 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 77 69   valign="top" wi
157c0 64 74 68 3d 22 32 30 25 22 3e 0a 0a 3c 74 63 6c  dth="20%">..<tcl
157d0 3e 0a 73 65 74 20 6e 20 5b 6c 6c 65 6e 67 74 68  >.set n [llength
157e0 20 24 6b 65 79 77 6f 72 64 5f 6c 69 73 74 5d 0a   $keyword_list].
157f0 73 65 74 20 6e 43 6f 6c 20 35 0a 73 65 74 20 6e  set nCol 5.set n
15800 52 6f 77 20 5b 65 78 70 72 20 7b 28 24 6e 2b 24  Row [expr {($n+$
15810 6e 43 6f 6c 2d 31 29 2f 24 6e 43 6f 6c 7d 5d 0a  nCol-1)/$nCol}].
15820 73 65 74 20 69 20 30 0a 66 6f 72 65 61 63 68 20  set i 0.foreach 
15830 77 6f 72 64 20 24 6b 65 79 77 6f 72 64 5f 6c 69  word $keyword_li
15840 73 74 20 7b 0a 20 20 69 66 20 7b 5b 73 74 72 69  st {.  if {[stri
15850 6e 67 20 69 6e 64 65 78 20 24 77 6f 72 64 20 65  ng index $word e
15860 6e 64 5d 3d 3d 22 2a 22 7d 20 7b 0a 20 20 20 20  nd]=="*"} {.    
15870 73 65 74 20 77 6f 72 64 20 5b 73 74 72 69 6e 67  set word [string
15880 20 72 61 6e 67 65 20 24 77 6f 72 64 20 30 20 65   range $word 0 e
15890 6e 64 2d 31 5d 0a 20 20 20 20 73 65 74 20 66 6f  nd-1].    set fo
158a0 6e 74 20 69 0a 20 20 7d 20 65 6c 73 65 20 7b 0a  nt i.  } else {.
158b0 20 20 20 20 73 65 74 20 66 6f 6e 74 20 62 0a 20      set font b. 
158c0 20 7d 0a 20 20 69 66 20 7b 24 69 3d 3d 24 6e 52   }.  if {$i==$nR
158d0 6f 77 7d 20 7b 0a 20 20 20 20 68 64 5f 70 75 74  ow} {.    hd_put
158e0 73 20 22 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69  s "</td><td vali
158f0 67 6e 3d 5c 22 74 6f 70 5c 22 20 61 6c 69 67 6e  gn=\"top\" align
15900 3d 5c 22 6c 65 66 74 5c 22 20 77 69 64 74 68 3d  =\"left\" width=
15910 5c 22 32 30 25 5c 22 3e 22 0a 20 20 20 20 73 65  \"20%\">".    se
15920 74 20 69 20 31 0a 20 20 7d 20 65 6c 73 65 20 7b  t i 1.  } else {
15930 0a 20 20 20 20 69 6e 63 72 20 69 0a 20 20 7d 0a  .    incr i.  }.
15940 20 20 68 64 5f 70 75 74 73 20 22 3c 24 66 6f 6e    hd_puts "<$fon
15950 74 3e 24 77 6f 72 64 3c 2f 24 66 6f 6e 74 3e 3c  t>$word</$font><
15960 62 72 3e 22 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f  br>".}.</tcl>.</
15970 74 64 3e 3c 2f 74 72 3e 3c 2f 74 61 62 6c 65 3e  td></tr></table>
15980 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c  </blockquote>..<
15990 68 32 3e 53 70 65 63 69 61 6c 20 6e 61 6d 65 73  h2>Special names
159a0 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f  </h2>..<p>The fo
159b0 6c 6c 6f 77 69 6e 67 20 61 72 65 20 6e 6f 74 20  llowing are not 
159c0 6b 65 79 77 6f 72 64 73 20 69 6e 20 53 51 4c 69  keywords in SQLi
159d0 74 65 2c 20 62 75 74 20 61 72 65 20 75 73 65 64  te, but are used
159e0 20 61 73 20 6e 61 6d 65 73 20 6f 66 20 0a 73 79   as names of .sy
159f0 73 74 65 6d 20 6f 62 6a 65 63 74 73 2e 20 20 54  stem objects.  T
15a00 68 65 79 20 63 61 6e 20 62 65 20 75 73 65 64 20  hey can be used 
15a10 61 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72  as an identifier
15a20 20 66 6f 72 20 61 20 64 69 66 66 65 72 65 6e 74   for a different
15a30 20 0a 74 79 70 65 20 6f 66 20 6f 62 6a 65 63 74   .type of object
15a40 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  .</p>..<blockquo
15a50 74 65 20 63 6c 61 73 73 3d 22 70 64 66 5f 6b 65  te class="pdf_ke
15a60 79 77 6f 72 64 73 22 3e 3c 62 3e 0a 20 20 5f 52  ywords"><b>.  _R
15a70 4f 57 49 44 5f 3c 62 72 3e 0a 20 20 4d 41 49 4e  OWID_<br>.  MAIN
15a80 3c 62 72 3e 0a 20 20 4f 49 44 3c 62 72 3e 0a 20  <br>.  OID<br>. 
15a90 20 52 4f 57 49 44 3c 62 72 3e 0a 20 20 53 51 4c   ROWID<br>.  SQL
15aa0 49 54 45 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20  ITE_MASTER<br>. 
15ab0 20 53 51 4c 49 54 45 5f 53 45 51 55 45 4e 43 45   SQLITE_SEQUENCE
15ac0 3c 62 72 3e 0a 20 20 53 51 4c 49 54 45 5f 54 45  <br>.  SQLITE_TE
15ad0 4d 50 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20  MP_MASTER<br>.  
15ae0 54 45 4d 50 3c 62 72 3e 0a 3c 2f 62 3e 3c 2f 62  TEMP<br>.</b></b
15af0 6c 6f 63 6b 71 75 6f 74 65 3e 0a                 lockquote>.