Documentation Source Text

Hex Artifact Content
Login

Artifact 52a320e0d61e385cd881e8ccdbc6e90b45171ff2:


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 7d 5d 20 7b 0a 20 20 66 6f 72 65 61 63 68 20  .}] {.  foreach 
0760: 7b 73 5f 74 69 74 6c 65 20 73 5f 74 61 67 7d 20  {s_title s_tag} 
0770: 24 73 65 63 74 69 6f 6e 20 7b 7d 0a 20 20 69 66  $section {}.  if
0780: 20 7b 24 73 5f 74 61 67 3d 3d 22 70 72 61 67 6d   {$s_tag=="pragm
0790: 61 2e 68 74 6d 6c 22 7d 20 7b 0a 20 20 20 20 73  a.html"} {.    s
07a0: 65 74 20 75 72 6c 20 24 73 5f 74 61 67 0a 20 20  et url $s_tag.  
07b0: 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 73 65 74  } else {.    set
07c0: 20 75 72 6c 20 6c 61 6e 67 5f 24 73 5f 74 61 67   url lang_$s_tag
07d0: 2e 68 74 6d 6c 0a 20 20 7d 0a 20 20 68 64 5f 70  .html.  }.  hd_p
07e0: 75 74 73 20 22 3c 6c 69 3e 3c 61 20 68 72 65 66  uts "<li><a href
07f0: 3d 5c 22 24 75 72 6c 5c 22 3e 24 73 5f 74 69 74  =\"$url\">$s_tit
0800: 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 22 0a 20 20 69  le</a></li>".  i
0810: 6e 63 72 20 69 0a 20 20 69 66 20 7b 24 69 3d 3d  ncr i.  if {$i==
0820: 31 35 7d 20 7b 0a 20 20 20 20 68 64 5f 70 75 74  15} {.    hd_put
0830: 73 20 22 3c 2f 75 6c 3e 3c 2f 74 64 3e 3c 74 64  s "</ul></td><td
0840: 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 3e   valign=\"top\">
0850: 3c 75 6c 3e 22 0a 20 20 7d 0a 7d 0a 3c 2f 74 63  <ul>".  }.}.</tc
0860: 6c 3e 0a 3c 2f 75 6c 3e 3c 2f 74 64 3e 3c 2f 74  l>.</ul></td></t
0870: 72 3e 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 74 63 6c  r></table>..<tcl
0880: 3e 0a 70 72 6f 63 20 4f 70 65 72 61 74 6f 72 20  >.proc Operator 
0890: 7b 6e 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72  {name} {.  retur
08a0: 6e 20 22 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c  n "<font color=\
08b0: 22 23 32 63 32 63 66 30 5c 22 3e 3c 62 69 67 3e  "#2c2cf0\"><big>
08c0: 24 6e 61 6d 65 3c 2f 62 69 67 3e 3c 2f 66 6f 6e  $name</big></fon
08d0: 74 3e 22 0a 7d 0a 70 72 6f 63 20 4e 6f 6e 74 65  t>".}.proc Nonte
08e0: 72 6d 69 6e 61 6c 20 7b 6e 61 6d 65 7d 20 7b 0a  rminal {name} {.
08f0: 20 20 72 65 74 75 72 6e 20 22 3c 69 3e 3c 66 6f    return "<i><fo
0900: 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 66 66 33 34  nt color=\"#ff34
0910: 33 34 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74  34\">$name</font
0920: 3e 3c 2f 69 3e 22 0a 7d 0a 70 72 6f 63 20 4b 65  ></i>".}.proc Ke
0930: 79 77 6f 72 64 20 7b 6e 61 6d 65 7d 20 7b 0a 20  yword {name} {. 
0940: 20 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63   return "<font c
0950: 6f 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22  olor=\"#2c2cf0\"
0960: 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74 3e 22 0a 7d  >$name</font>".}
0970: 0a 70 72 6f 63 20 45 78 61 6d 70 6c 65 20 7b 74  .proc Example {t
0980: 65 78 74 7d 20 7b 0a 20 20 68 64 5f 70 75 74 73  ext} {.  hd_puts
0990: 20 22 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70   "<blockquote><p
09a0: 72 65 3e 24 74 65 78 74 3c 2f 70 72 65 3e 3c 2f  re>$text</pre></
09b0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 22 0a 7d 0a 0a  blockquote>".}..
09c0: 70 72 6f 63 20 53 65 63 74 69 6f 6e 20 7b 6e 61  proc Section {na
09d0: 6d 65 20 6c 61 62 65 6c 20 6b 65 79 77 6f 72 64  me label keyword
09e0: 73 7d 20 7b 0a 20 20 67 6c 6f 62 61 6c 20 44 4f  s} {.  global DO
09f0: 43 0a 20 20 68 64 5f 63 6c 6f 73 65 5f 6d 61 69  C.  hd_close_mai
0a00: 6e 0a 20 20 68 64 5f 6f 70 65 6e 5f 6d 61 69 6e  n.  hd_open_main
0a10: 20 6c 61 6e 67 5f 24 6c 61 62 65 6c 2e 68 74 6d   lang_$label.htm
0a20: 6c 0a 20 20 68 64 5f 68 65 61 64 65 72 20 22 53  l.  hd_header "S
0a30: 51 4c 69 74 65 20 51 75 65 72 79 20 4c 61 6e 67  QLite Query Lang
0a40: 75 61 67 65 3a 20 24 6e 61 6d 65 22 20 24 44 4f  uage: $name" $DO
0a50: 43 2f 70 61 67 65 73 2f 6c 61 6e 67 2e 69 6e 0a  C/pages/lang.in.
0a60: 20 20 65 76 61 6c 20 68 64 5f 6b 65 79 77 6f 72    eval hd_keywor
0a70: 64 73 20 24 6b 65 79 77 6f 72 64 73 0a 20 20 68  ds $keywords.  h
0a80: 64 5f 70 75 74 73 20 7b 3c 61 20 68 72 65 66 3d  d_puts {<a href=
0a90: 22 6c 61 6e 67 2e 68 74 6d 6c 22 3e 3c 68 32 3e  "lang.html"><h2>
0aa0: 53 51 4c 20 41 73 20 55 6e 64 65 72 73 74 6f 6f  SQL As Understoo
0ab0: 64 20 42 79 20 53 51 4c 69 74 65 3c 2f 68 32 3e  d By SQLite</h2>
0ac0: 3c 2f 61 3e 7d 0a 20 20 68 64 5f 70 75 74 73 20  </a>}.  hd_puts 
0ad0: 22 3c 68 33 3e 24 6e 61 6d 65 3c 2f 68 33 3e 22  "<h3>$name</h3>"
0ae0: 0a 7d 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23  .}..############
0af0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b30: 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 41 4c 54  ###.Section {ALT
0b40: 45 52 20 54 41 42 4c 45 7d 20 61 6c 74 65 72 74  ER TABLE} altert
0b50: 61 62 6c 65 20 7b 7b 41 4c 54 45 52 20 54 41 42  able {{ALTER TAB
0b60: 4c 45 7d 20 7b 41 4c 54 45 52 7d 7d 0a 0a 53 79  LE} {ALTER}}..Sy
0b70: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
0b80: 65 6e 74 7d 20 7b 0a 41 4c 54 45 52 20 54 41 42  ent} {.ALTER TAB
0b90: 4c 45 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  LE [<database-na
0ba0: 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61  me> .] <table-na
0bb0: 6d 65 3e 20 3c 61 6c 74 65 72 61 74 69 6f 6e 3e  me> <alteration>
0bc0: 0a 7d 20 7b 61 6c 74 65 72 61 74 69 6f 6e 7d 20  .} {alteration} 
0bd0: 7b 0a 52 45 4e 41 4d 45 20 54 4f 20 3c 6e 65 77  {.RENAME TO <new
0be0: 2d 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 7d 20 7b  -table-name>.} {
0bf0: 61 6c 74 65 72 61 74 69 6f 6e 7d 20 7b 0a 41 44  alteration} {.AD
0c00: 44 20 5b 43 4f 4c 55 4d 4e 5d 20 3c 63 6f 6c 75  D [COLUMN] <colu
0c10: 6d 6e 2d 64 65 66 3e 0a 7d 0a 3c 2f 74 63 6c 3e  mn-def>.}.</tcl>
0c20: 0a 0a 3c 70 3e 53 51 4c 69 74 65 27 73 20 76 65  ..<p>SQLite's ve
0c30: 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 41 4c 54  rsion of the ALT
0c40: 45 52 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64  ER TABLE command
0c50: 20 61 6c 6c 6f 77 73 20 74 68 65 20 75 73 65 72   allows the user
0c60: 20 74 6f 20 0a 72 65 6e 61 6d 65 20 6f 72 20 61   to .rename or a
0c70: 64 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d 6e 20  dd a new column 
0c80: 74 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74  to an existing t
0c90: 61 62 6c 65 2e 20 49 74 20 69 73 20 6e 6f 74 20  able. It is not 
0ca0: 70 6f 73 73 69 62 6c 65 0a 74 6f 20 72 65 6d 6f  possible.to remo
0cb0: 76 65 20 61 20 63 6f 6c 75 6d 6e 20 66 72 6f 6d  ve a column from
0cc0: 20 61 20 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a 0a   a table..</p>..
0cd0: 3c 70 3e 54 68 65 20 52 45 4e 41 4d 45 20 54 4f  <p>The RENAME TO
0ce0: 20 73 79 6e 74 61 78 20 69 73 20 75 73 65 64 20   syntax is used 
0cf0: 74 6f 20 72 65 6e 61 6d 65 20 74 68 65 20 74 61  to rename the ta
0d00: 62 6c 65 20 69 64 65 6e 74 69 66 69 65 64 20 62  ble identified b
0d10: 79 20 0a 3c 69 3e 26 23 39 31 3b 64 61 74 61 62  y .<i>&#91;datab
0d20: 61 73 65 2d 6e 61 6d 65 2e 26 23 39 33 3b 74 61  ase-name.&#93;ta
0d30: 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 20 74 6f 20  ble-name</i> to 
0d40: 3c 69 3e 6e 65 77 2d 74 61 62 6c 65 2d 6e 61 6d  <i>new-table-nam
0d50: 65 3c 2f 69 3e 2e 20 54 68 69 73 20 63 6f 6d 6d  e</i>. This comm
0d60: 61 6e 64 20 0a 63 61 6e 6e 6f 74 20 62 65 20 75  and .cannot be u
0d70: 73 65 64 20 74 6f 20 6d 6f 76 65 20 61 20 74 61  sed to move a ta
0d80: 62 6c 65 20 62 65 74 77 65 65 6e 20 61 74 74 61  ble between atta
0d90: 63 68 65 64 20 64 61 74 61 62 61 73 65 73 2c 20  ched databases, 
0da0: 6f 6e 6c 79 20 74 6f 20 72 65 6e 61 6d 65 20 0a  only to rename .
0db0: 61 20 74 61 62 6c 65 20 77 69 74 68 69 6e 20 74  a table within t
0dc0: 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65  he same database
0dd0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65  .</p>..<p>If the
0de0: 20 74 61 62 6c 65 20 62 65 69 6e 67 20 72 65 6e   table being ren
0df0: 61 6d 65 64 20 68 61 73 20 74 72 69 67 67 65 72  amed has trigger
0e00: 73 20 6f 72 20 69 6e 64 69 63 65 73 2c 20 74 68  s or indices, th
0e10: 65 6e 20 74 68 65 73 65 20 72 65 6d 61 69 6e 0a  en these remain.
0e20: 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20  attached to the 
0e30: 74 61 62 6c 65 20 61 66 74 65 72 20 69 74 20 68  table after it h
0e40: 61 73 20 62 65 65 6e 20 72 65 6e 61 6d 65 64 2e  as been renamed.
0e50: 20 48 6f 77 65 76 65 72 2c 20 69 66 20 74 68 65   However, if the
0e60: 72 65 20 61 72 65 0a 61 6e 79 20 76 69 65 77 20  re are.any view 
0e70: 64 65 66 69 6e 69 74 69 6f 6e 73 2c 20 6f 72 20  definitions, or 
0e80: 73 74 61 74 65 6d 65 6e 74 73 20 65 78 65 63 75  statements execu
0e90: 74 65 64 20 62 79 20 74 72 69 67 67 65 72 73 20  ted by triggers 
0ea0: 74 68 61 74 20 72 65 66 65 72 20 74 6f 0a 74 68  that refer to.th
0eb0: 65 20 74 61 62 6c 65 20 62 65 69 6e 67 20 72 65  e table being re
0ec0: 6e 61 6d 65 64 2c 20 74 68 65 73 65 20 61 72 65  named, these are
0ed0: 20 6e 6f 74 20 61 75 74 6f 6d 61 74 69 63 61 6c   not automatical
0ee0: 6c 79 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 75  ly modified to u
0ef0: 73 65 20 74 68 65 20 6e 65 77 0a 74 61 62 6c 65  se the new.table
0f00: 20 6e 61 6d 65 2e 20 49 66 20 74 68 69 73 20 69   name. If this i
0f10: 73 20 72 65 71 75 69 72 65 64 2c 20 74 68 65 20  s required, the 
0f20: 74 72 69 67 67 65 72 73 20 6f 72 20 76 69 65 77  triggers or view
0f30: 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 6d 75 73   definitions mus
0f40: 74 20 62 65 0a 64 72 6f 70 70 65 64 20 61 6e 64  t be.dropped and
0f50: 20 72 65 63 72 65 61 74 65 64 20 74 6f 20 75 73   recreated to us
0f60: 65 20 74 68 65 20 6e 65 77 20 74 61 62 6c 65 20  e the new table 
0f70: 6e 61 6d 65 20 62 79 20 68 61 6e 64 2e 0a 3c 2f  name by hand..</
0f80: 70 3e 0a 0a 3c 70 3e 54 68 65 20 41 44 44 20 26  p>..<p>The ADD &
0f90: 23 39 31 3b 43 4f 4c 55 4d 4e 26 23 39 33 3b 20  #91;COLUMN&#93; 
0fa0: 73 79 6e 74 61 78 0a 69 73 20 75 73 65 64 20 74  syntax.is used t
0fb0: 6f 20 61 64 64 20 61 20 6e 65 77 20 63 6f 6c 75  o add a new colu
0fc0: 6d 6e 20 74 6f 20 61 6e 20 65 78 69 73 74 69 6e  mn to an existin
0fd0: 67 20 74 61 62 6c 65 2e 0a 54 68 65 20 6e 65 77  g table..The new
0fe0: 20 63 6f 6c 75 6d 6e 20 69 73 20 61 6c 77 61 79   column is alway
0ff0: 73 20 61 70 70 65 6e 64 65 64 20 74 6f 20 74 68  s appended to th
1000: 65 20 65 6e 64 20 6f 66 20 74 68 65 20 6c 69 73  e end of the lis
1010: 74 20 6f 66 20 65 78 69 73 74 69 6e 67 20 63 6f  t of existing co
1020: 6c 75 6d 6e 73 2e 0a 3c 69 3e 43 6f 6c 75 6d 6e  lumns..<i>Column
1030: 2d 64 65 66 3c 2f 69 3e 20 6d 61 79 20 74 61 6b  -def</i> may tak
1040: 65 20 61 6e 79 20 6f 66 20 74 68 65 20 66 6f 72  e any of the for
1050: 6d 73 20 70 65 72 6d 69 73 73 61 62 6c 65 20 69  ms permissable i
1060: 6e 20 61 20 5b 43 52 45 41 54 45 20 54 41 42 4c  n a [CREATE TABL
1070: 45 5d 0a 73 74 61 74 65 6d 65 6e 74 2c 20 77 69  E].statement, wi
1080: 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  th the following
1090: 20 72 65 73 74 72 69 63 74 69 6f 6e 73 3a 0a 3c   restrictions:.<
10a0: 75 6c 3e 0a 3c 6c 69 3e 54 68 65 20 63 6f 6c 75  ul>.<li>The colu
10b0: 6d 6e 20 6d 61 79 20 6e 6f 74 20 68 61 76 65 20  mn may not have 
10c0: 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6f 72  a PRIMARY KEY or
10d0: 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69   UNIQUE constrai
10e0: 6e 74 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 54 68 65  nt.</li>.<li>The
10f0: 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74 20   column may not 
1100: 68 61 76 65 20 61 20 64 65 66 61 75 6c 74 20 76  have a default v
1110: 61 6c 75 65 20 6f 66 20 43 55 52 52 45 4e 54 5f  alue of CURRENT_
1120: 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41  TIME, CURRENT_DA
1130: 54 45 20 0a 20 20 20 20 6f 72 20 43 55 52 52 45  TE .    or CURRE
1140: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2e 3c 2f 6c  NT_TIMESTAMP.</l
1150: 69 3e 0a 3c 6c 69 3e 49 66 20 61 20 4e 4f 54 20  i>.<li>If a NOT 
1160: 4e 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 20  NULL constraint 
1170: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68  is specified, th
1180: 65 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6d 75  en the column mu
1190: 73 74 20 68 61 76 65 20 61 0a 20 20 20 20 64 65  st have a.    de
11a0: 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 74 68 65  fault value othe
11b0: 72 20 74 68 61 6e 20 4e 55 4c 4c 2e 0a 3c 2f 75  r than NULL..</u
11c0: 6c 3e 0a 0a 3c 70 3e 54 68 65 20 65 78 65 63 75  l>..<p>The execu
11d0: 74 69 6f 6e 20 74 69 6d 65 20 6f 66 20 74 68 65  tion time of the
11e0: 20 41 4c 54 45 52 20 54 41 42 4c 45 20 63 6f 6d   ALTER TABLE com
11f0: 6d 61 6e 64 20 69 73 20 69 6e 64 65 70 65 6e 64  mand is independ
1200: 65 6e 74 20 6f 66 0a 74 68 65 20 61 6d 6f 75 6e  ent of.the amoun
1210: 74 20 6f 66 20 64 61 74 61 20 69 6e 20 74 68 65  t of data in the
1220: 20 74 61 62 6c 65 2e 20 20 54 68 65 20 41 4c 54   table.  The ALT
1230: 45 52 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64  ER TABLE command
1240: 20 72 75 6e 73 20 61 73 20 71 75 69 63 6b 6c 79   runs as quickly
1250: 0a 6f 6e 20 61 20 74 61 62 6c 65 20 77 69 74 68  .on a table with
1260: 20 31 30 20 6d 69 6c 6c 69 6f 6e 20 72 6f 77 73   10 million rows
1270: 20 61 73 20 69 74 20 64 6f 65 73 20 6f 6e 20 61   as it does on a
1280: 20 74 61 62 6c 65 20 77 69 74 68 20 31 20 72 6f   table with 1 ro
1290: 77 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41 66 74 65  w..</p>..<p>Afte
12a0: 72 20 41 44 44 20 43 4f 4c 55 4d 4e 20 68 61 73  r ADD COLUMN has
12b0: 20 62 65 65 6e 20 72 75 6e 20 6f 6e 20 61 20 64   been run on a d
12c0: 61 74 61 62 61 73 65 2c 20 74 68 61 74 20 64 61  atabase, that da
12d0: 74 61 62 61 73 65 20 77 69 6c 6c 20 6e 6f 74 0a  tabase will not.
12e0: 62 65 20 72 65 61 64 61 62 6c 65 20 62 79 20 53  be readable by S
12f0: 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e  QLite version 3.
1300: 31 2e 33 20 61 6e 64 20 65 61 72 6c 69 65 72 20  1.3 and earlier 
1310: 75 6e 74 69 6c 20 74 68 65 20 64 61 74 61 62 61  until the databa
1320: 73 65 0a 69 73 20 3c 61 20 68 72 65 66 3d 22 6c  se.is <a href="l
1330: 61 6e 67 5f 76 61 63 75 75 6d 2e 68 74 6d 6c 22  ang_vacuum.html"
1340: 3e 56 41 43 55 55 4d 3c 2f 61 3e 65 64 2e 3c 2f  >VACUUM</a>ed.</
1350: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
1360: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1370: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1380: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1390: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13a0: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
13b0: 20 7b 41 4e 41 4c 59 5a 45 7d 20 61 6e 61 6c 79   {ANALYZE} analy
13c0: 7a 65 20 41 4e 41 4c 59 5a 45 0a 0a 53 79 6e 74  ze ANALYZE..Synt
13d0: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
13e0: 74 7d 20 7b 0a 20 20 41 4e 41 4c 59 5a 45 0a 7d  t} {.  ANALYZE.}
13f0: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
1400: 74 65 6d 65 6e 74 7d 20 7b 0a 20 20 41 4e 41 4c  tement} {.  ANAL
1410: 59 5a 45 20 3c 64 61 74 61 62 61 73 65 2d 6e 61  YZE <database-na
1420: 6d 65 3e 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71  me>.}.Syntax {sq
1430: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 20  l-statement} {. 
1440: 20 41 4e 41 4c 59 5a 45 20 5b 3c 64 61 74 61 62   ANALYZE [<datab
1450: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
1460: 62 6c 65 2d 6e 61 6d 65 3e 0a 7d 0a 3c 2f 74 63  ble-name>.}.</tc
1470: 6c 3e 0a 0a 3c 70 3e 54 68 65 20 41 4e 41 4c 59  l>..<p>The ANALY
1480: 5a 45 20 63 6f 6d 6d 61 6e 64 20 67 61 74 68 65  ZE command gathe
1490: 72 73 20 73 74 61 74 69 73 74 69 63 73 20 61 62  rs statistics ab
14a0: 6f 75 74 20 69 6e 64 69 63 65 73 20 61 6e 64 20  out indices and 
14b0: 73 74 6f 72 65 73 20 74 68 65 6d 0a 69 6e 20 61  stores them.in a
14c0: 20 73 70 65 63 69 61 6c 20 74 61 62 6c 65 73 20   special tables 
14d0: 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  in the database 
14e0: 77 68 65 72 65 20 74 68 65 20 71 75 65 72 79 20  where the query 
14f0: 6f 70 74 69 6d 69 7a 65 72 20 63 61 6e 20 75 73  optimizer can us
1500: 65 0a 74 68 65 6d 20 74 6f 20 68 65 6c 70 20 6d  e.them to help m
1510: 61 6b 65 20 62 65 74 74 65 72 20 69 6e 64 65 78  ake better index
1520: 20 63 68 6f 69 63 65 73 2e 0a 49 66 20 6e 6f 20   choices..If no 
1530: 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 67 69  arguments are gi
1540: 76 65 6e 2c 20 61 6c 6c 20 69 6e 64 69 63 65 73  ven, all indices
1550: 20 69 6e 20 61 6c 6c 20 61 74 74 61 63 68 65 64   in all attached
1560: 20 64 61 74 61 62 61 73 65 73 20 61 72 65 0a 61   databases are.a
1570: 6e 61 6c 79 7a 65 64 2e 20 20 49 66 20 61 20 64  nalyzed.  If a d
1580: 61 74 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20  atabase name is 
1590: 67 69 76 65 6e 20 61 73 20 74 68 65 20 61 72 67  given as the arg
15a0: 75 6d 65 6e 74 2c 20 61 6c 6c 20 69 6e 64 69 63  ument, all indic
15b0: 65 73 0a 69 6e 20 74 68 61 74 20 6f 6e 65 20 64  es.in that one d
15c0: 61 74 61 62 61 73 65 20 61 72 65 20 61 6e 61 6c  atabase are anal
15d0: 79 7a 65 64 2e 20 20 49 66 20 74 68 65 20 61 72  yzed.  If the ar
15e0: 67 75 6d 65 6e 74 20 69 73 20 61 20 74 61 62 6c  gument is a tabl
15f0: 65 20 6e 61 6d 65 2c 0a 74 68 65 6e 20 6f 6e 6c  e name,.then onl
1600: 79 20 69 6e 64 69 63 65 73 20 61 73 73 6f 63 69  y indices associ
1610: 61 74 65 64 20 77 69 74 68 20 74 68 61 74 20 6f  ated with that o
1620: 6e 65 20 74 61 62 6c 65 20 61 72 65 20 61 6e 61  ne table are ana
1630: 6c 79 7a 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  lyzed.</p>..<p>T
1640: 68 65 20 69 6e 69 74 69 61 6c 20 69 6d 70 6c 65  he initial imple
1650: 6d 65 6e 74 61 74 69 6f 6e 20 73 74 6f 72 65 73  mentation stores
1660: 20 61 6c 6c 20 73 74 61 74 69 73 74 69 63 73 20   all statistics 
1670: 69 6e 20 61 20 73 69 6e 67 6c 65 0a 74 61 62 6c  in a single.tabl
1680: 65 20 6e 61 6d 65 64 20 3c 62 3e 73 71 6c 69 74  e named <b>sqlit
1690: 65 5f 73 74 61 74 31 3c 2f 62 3e 2e 20 20 46 75  e_stat1</b>.  Fu
16a0: 74 75 72 65 20 65 6e 68 61 6e 63 65 6d 65 6e 74  ture enhancement
16b0: 73 20 6d 61 79 20 63 72 65 61 74 65 0a 61 64 64  s may create.add
16c0: 69 74 69 6f 6e 61 6c 20 74 61 62 6c 65 73 20 77  itional tables w
16d0: 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d  ith the same nam
16e0: 65 20 70 61 74 74 65 72 6e 20 65 78 63 65 70 74  e pattern except
16f0: 20 77 69 74 68 20 74 68 65 20 22 31 22 0a 63 68   with the "1".ch
1700: 61 6e 67 65 64 20 74 6f 20 61 20 64 69 66 66 65  anged to a diffe
1710: 72 65 6e 74 20 64 69 67 69 74 2e 20 20 54 68 65  rent digit.  The
1720: 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 31   <b>sqlite_stat1
1730: 3c 2f 62 3e 20 74 61 62 6c 65 20 63 61 6e 6e 6f  </b> table canno
1740: 74 0a 62 65 20 3c 61 20 68 72 65 66 3d 22 6c 61  t.be <a href="la
1750: 6e 67 5f 64 72 6f 70 74 61 62 6c 65 2e 68 74 6d  ng_droptable.htm
1760: 6c 22 3e 44 52 4f 50 3c 2f 61 3e 70 65 64 2c 0a  l">DROP</a>ped,.
1770: 62 75 74 20 61 6c 6c 20 74 68 65 20 63 6f 6e 74  but all the cont
1780: 65 6e 74 20 63 61 6e 20 62 65 20 3c 61 20 68 72  ent can be <a hr
1790: 65 66 3d 22 6c 61 6e 67 5f 64 65 6c 65 74 65 2e  ef="lang_delete.
17a0: 68 74 6d 6c 22 3e 44 45 4c 45 54 45 3c 2f 61 3e  html">DELETE</a>
17b0: 64 20 77 68 69 63 68 20 68 61 73 20 74 68 65 0a  d which has the.
17c0: 73 61 6d 65 20 65 66 66 65 63 74 2e 3c 2f 70 3e  same effect.</p>
17d0: 0a 0a 3c 74 63 6c 3e 0a 53 65 63 74 69 6f 6e 20  ..<tcl>.Section 
17e0: 7b 41 54 54 41 43 48 20 44 41 54 41 42 41 53 45  {ATTACH DATABASE
17f0: 7d 20 61 74 74 61 63 68 20 41 54 54 41 43 48 0a  } attach ATTACH.
1800: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
1810: 74 65 6d 65 6e 74 7d 20 7b 0a 41 54 54 41 43 48  tement} {.ATTACH
1820: 20 5b 44 41 54 41 42 41 53 45 5d 20 3c 64 61 74   [DATABASE] <dat
1830: 61 62 61 73 65 2d 66 69 6c 65 6e 61 6d 65 3e 20  abase-filename> 
1840: 41 53 20 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d  AS <database-nam
1850: 65 3e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  e>.}.</tcl>..<p>
1860: 54 68 65 20 41 54 54 41 43 48 20 44 41 54 41 42  The ATTACH DATAB
1870: 41 53 45 20 73 74 61 74 65 6d 65 6e 74 20 61 64  ASE statement ad
1880: 64 73 20 61 6e 6f 74 68 65 72 20 64 61 74 61 62  ds another datab
1890: 61 73 65 20 0a 66 69 6c 65 20 74 6f 20 74 68 65  ase .file to the
18a0: 20 63 75 72 72 65 6e 74 20 64 61 74 61 62 61 73   current databas
18b0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 49  e connection.  I
18c0: 66 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 63  f the filename c
18d0: 6f 6e 74 61 69 6e 73 20 0a 70 75 6e 63 74 75 61  ontains .punctua
18e0: 74 69 6f 6e 20 63 68 61 72 61 63 74 65 72 73 20  tion characters 
18f0: 69 74 20 6d 75 73 74 20 62 65 20 71 75 6f 74 65  it must be quote
1900: 64 2e 20 20 54 68 65 20 6e 61 6d 65 73 20 27 6d  d.  The names 'm
1910: 61 69 6e 27 20 61 6e 64 20 0a 27 74 65 6d 70 27  ain' and .'temp'
1920: 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6d 61   refer to the ma
1930: 69 6e 20 64 61 74 61 62 61 73 65 20 61 6e 64 20  in database and 
1940: 74 68 65 20 64 61 74 61 62 61 73 65 20 75 73 65  the database use
1950: 64 20 66 6f 72 20 0a 74 65 6d 70 6f 72 61 72 79  d for .temporary
1960: 20 74 61 62 6c 65 73 2e 20 20 54 68 65 73 65 20   tables.  These 
1970: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 61 63 68  cannot be detach
1980: 65 64 2e 20 20 41 74 74 61 63 68 65 64 20 64 61  ed.  Attached da
1990: 74 61 62 61 73 65 73 20 0a 61 72 65 20 72 65 6d  tabases .are rem
19a0: 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65 20 3c  oved using the <
19b0: 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 64 65 74  a href="lang_det
19c0: 61 63 68 2e 68 74 6d 6c 22 3e 44 45 54 41 43 48  ach.html">DETACH
19d0: 20 44 41 54 41 42 41 53 45 3c 2f 61 3e 20 0a 73   DATABASE</a> .s
19e0: 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c  tatement.</p>..<
19f0: 70 3e 59 6f 75 20 63 61 6e 20 72 65 61 64 20 66  p>You can read f
1a00: 72 6f 6d 20 61 6e 64 20 77 72 69 74 65 20 74 6f  rom and write to
1a10: 20 61 6e 20 61 74 74 61 63 68 65 64 20 64 61 74   an attached dat
1a20: 61 62 61 73 65 20 61 6e 64 20 79 6f 75 0a 63 61  abase and you.ca
1a30: 6e 20 6d 6f 64 69 66 79 20 74 68 65 20 73 63 68  n modify the sch
1a40: 65 6d 61 20 6f 66 20 74 68 65 20 61 74 74 61 63  ema of the attac
1a50: 68 65 64 20 64 61 74 61 62 61 73 65 2e 20 20 54  hed database.  T
1a60: 68 69 73 20 69 73 20 61 20 6e 65 77 0a 66 65 61  his is a new.fea
1a70: 74 75 72 65 20 6f 66 20 53 51 4c 69 74 65 20 76  ture of SQLite v
1a80: 65 72 73 69 6f 6e 20 33 2e 30 2e 20 20 49 6e 20  ersion 3.0.  In 
1a90: 53 51 4c 69 74 65 20 32 2e 38 2c 20 73 63 68 65  SQLite 2.8, sche
1aa0: 6d 61 20 63 68 61 6e 67 65 73 0a 74 6f 20 61 74  ma changes.to at
1ab0: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73  tached databases
1ac0: 20 77 65 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65   were not allowe
1ad0: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63  d.</p>..<p>You c
1ae0: 61 6e 6e 6f 74 20 63 72 65 61 74 65 20 61 20 6e  annot create a n
1af0: 65 77 20 74 61 62 6c 65 20 77 69 74 68 20 74 68  ew table with th
1b00: 65 20 73 61 6d 65 20 6e 61 6d 65 20 61 73 20 61  e same name as a
1b10: 20 74 61 62 6c 65 20 69 6e 20 0a 61 6e 20 61 74   table in .an at
1b20: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 2c  tached database,
1b30: 20 62 75 74 20 79 6f 75 20 63 61 6e 20 61 74 74   but you can att
1b40: 61 63 68 20 61 20 64 61 74 61 62 61 73 65 20 77  ach a database w
1b50: 68 69 63 68 20 63 6f 6e 74 61 69 6e 73 0a 74 61  hich contains.ta
1b60: 62 6c 65 73 20 77 68 6f 73 65 20 6e 61 6d 65 73  bles whose names
1b70: 20 61 72 65 20 64 75 70 6c 69 63 61 74 65 73 20   are duplicates 
1b80: 6f 66 20 74 61 62 6c 65 73 20 69 6e 20 74 68 65  of tables in the
1b90: 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2e 20   main database. 
1ba0: 20 49 74 20 69 73 20 0a 61 6c 73 6f 20 70 65 72   It is .also per
1bb0: 6d 69 73 73 69 62 6c 65 20 74 6f 20 61 74 74 61  missible to atta
1bc0: 63 68 20 74 68 65 20 73 61 6d 65 20 64 61 74 61  ch the same data
1bd0: 62 61 73 65 20 66 69 6c 65 20 6d 75 6c 74 69 70  base file multip
1be0: 6c 65 20 74 69 6d 65 73 2e 3c 2f 70 3e 0a 0a 3c  le times.</p>..<
1bf0: 70 3e 54 61 62 6c 65 73 20 69 6e 20 61 6e 20 61  p>Tables in an a
1c00: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
1c10: 20 63 61 6e 20 62 65 20 72 65 66 65 72 72 65 64   can be referred
1c20: 20 74 6f 20 75 73 69 6e 67 20 74 68 65 20 73 79   to using the sy
1c30: 6e 74 61 78 20 0a 3c 69 3e 64 61 74 61 62 61 73  ntax .<i>databas
1c40: 65 2d 6e 61 6d 65 2e 74 61 62 6c 65 2d 6e 61 6d  e-name.table-nam
1c50: 65 3c 2f 69 3e 2e 20 20 49 66 20 61 6e 20 61 74  e</i>.  If an at
1c60: 74 61 63 68 65 64 20 74 61 62 6c 65 20 64 6f 65  tached table doe
1c70: 73 6e 27 74 20 68 61 76 65 20 0a 61 20 64 75 70  sn't have .a dup
1c80: 6c 69 63 61 74 65 20 74 61 62 6c 65 20 6e 61 6d  licate table nam
1c90: 65 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61  e in the main da
1ca0: 74 61 62 61 73 65 2c 20 69 74 20 64 6f 65 73 6e  tabase, it doesn
1cb0: 27 74 20 72 65 71 75 69 72 65 20 61 20 0a 64 61  't require a .da
1cc0: 74 61 62 61 73 65 20 6e 61 6d 65 20 70 72 65 66  tabase name pref
1cd0: 69 78 2e 20 20 57 68 65 6e 20 61 20 64 61 74 61  ix.  When a data
1ce0: 62 61 73 65 20 69 73 20 61 74 74 61 63 68 65 64  base is attached
1cf0: 2c 20 61 6c 6c 20 6f 66 20 69 74 73 20 0a 74 61  , all of its .ta
1d00: 62 6c 65 73 20 77 68 69 63 68 20 64 6f 6e 27 74  bles which don't
1d10: 20 68 61 76 65 20 64 75 70 6c 69 63 61 74 65 20   have duplicate 
1d20: 6e 61 6d 65 73 20 62 65 63 6f 6d 65 20 74 68 65  names become the
1d30: 20 64 65 66 61 75 6c 74 20 74 61 62 6c 65 0a 6f   default table.o
1d40: 66 20 74 68 61 74 20 6e 61 6d 65 2e 20 20 41 6e  f that name.  An
1d50: 79 20 74 61 62 6c 65 73 20 6f 66 20 74 68 61 74  y tables of that
1d60: 20 6e 61 6d 65 20 61 74 74 61 63 68 65 64 20 61   name attached a
1d70: 66 74 65 72 77 61 72 64 73 20 72 65 71 75 69 72  fterwards requir
1d80: 65 20 74 68 65 20 74 61 62 6c 65 20 0a 70 72 65  e the table .pre
1d90: 66 69 78 2e 20 49 66 20 74 68 65 20 64 65 66 61  fix. If the defa
1da0: 75 6c 74 20 74 61 62 6c 65 20 6f 66 20 61 20 67  ult table of a g
1db0: 69 76 65 6e 20 6e 61 6d 65 20 69 73 20 64 65 74  iven name is det
1dc0: 61 63 68 65 64 2c 20 74 68 65 6e 20 0a 74 68 65  ached, then .the
1dd0: 20 6c 61 73 74 20 74 61 62 6c 65 20 6f 66 20 74   last table of t
1de0: 68 61 74 20 6e 61 6d 65 20 61 74 74 61 63 68 65  hat name attache
1df0: 64 20 62 65 63 6f 6d 65 73 20 74 68 65 20 6e 65  d becomes the ne
1e00: 77 20 64 65 66 61 75 6c 74 2e 3c 2f 70 3e 0a 0a  w default.</p>..
1e10: 3c 70 3e 0a 54 72 61 6e 73 61 63 74 69 6f 6e 73  <p>.Transactions
1e20: 20 69 6e 76 6f 6c 76 69 6e 67 20 6d 75 6c 74 69   involving multi
1e30: 70 6c 65 20 61 74 74 61 63 68 65 64 20 64 61 74  ple attached dat
1e40: 61 62 61 73 65 73 20 61 72 65 20 61 74 6f 6d 69  abases are atomi
1e50: 63 2c 0a 61 73 73 75 6d 69 6e 67 20 74 68 61 74  c,.assuming that
1e60: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
1e70: 73 65 20 69 73 20 6e 6f 74 20 22 3a 6d 65 6d 6f  se is not ":memo
1e80: 72 79 3a 22 2e 20 20 49 66 20 74 68 65 20 6d 61  ry:".  If the ma
1e90: 69 6e 0a 64 61 74 61 62 61 73 65 20 69 73 20 22  in.database is "
1ea0: 3a 6d 65 6d 6f 72 79 3a 22 20 74 68 65 6e 20 0a  :memory:" then .
1eb0: 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 63 6f 6e  transactions con
1ec0: 74 69 6e 75 65 20 74 6f 20 62 65 20 61 74 6f 6d  tinue to be atom
1ed0: 69 63 20 77 69 74 68 69 6e 20 65 61 63 68 20 69  ic within each i
1ee0: 6e 64 69 76 69 64 75 61 6c 0a 64 61 74 61 62 61  ndividual.databa
1ef0: 73 65 20 66 69 6c 65 2e 20 42 75 74 20 69 66 20  se file. But if 
1f00: 74 68 65 20 68 6f 73 74 20 63 6f 6d 70 75 74 65  the host compute
1f10: 72 20 63 72 61 73 68 65 73 20 69 6e 20 74 68 65  r crashes in the
1f20: 20 6d 69 64 64 6c 65 0a 6f 66 20 61 20 43 4f 4d   middle.of a COM
1f30: 4d 49 54 20 77 68 65 72 65 20 74 77 6f 20 6f 72  MIT where two or
1f40: 20 6d 6f 72 65 20 64 61 74 61 62 61 73 65 20 66   more database f
1f50: 69 6c 65 73 20 61 72 65 20 75 70 64 61 74 65 64  iles are updated
1f60: 2c 0a 73 6f 6d 65 20 6f 66 20 74 68 6f 73 65 20  ,.some of those 
1f70: 66 69 6c 65 73 20 6d 69 67 68 74 20 67 65 74 20  files might get 
1f80: 74 68 65 20 63 68 61 6e 67 65 73 20 77 68 65 72  the changes wher
1f90: 65 20 6f 74 68 65 72 73 0a 6d 69 67 68 74 20 6e  e others.might n
1fa0: 6f 74 2e 0a 41 74 6f 6d 69 63 20 63 6f 6d 6d 69  ot..Atomic commi
1fb0: 74 20 6f 66 20 61 74 74 61 63 68 65 64 20 64 61  t of attached da
1fc0: 74 61 62 61 73 65 73 20 69 73 20 61 20 6e 65 77  tabases is a new
1fd0: 20 66 65 61 74 75 72 65 20 6f 66 20 53 51 4c 69   feature of SQLi
1fe0: 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 30 2e 0a  te version 3.0..
1ff0: 49 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  In SQLite versio
2000: 6e 20 32 2e 38 2c 20 61 6c 6c 20 63 6f 6d 6d 69  n 2.8, all commi
2010: 74 73 20 74 6f 20 61 74 74 61 63 68 65 64 20 64  ts to attached d
2020: 61 74 61 62 61 73 65 73 20 62 65 68 61 76 65 64  atabases behaved
2030: 20 61 73 20 69 66 0a 74 68 65 20 6d 61 69 6e 20   as if.the main 
2040: 64 61 74 61 62 61 73 65 20 77 65 72 65 20 22 3a  database were ":
2050: 6d 65 6d 6f 72 79 3a 22 2e 0a 3c 2f 70 3e 0a 0a  memory:"..</p>..
2060: 3c 70 3e 54 68 65 72 65 20 69 73 20 61 20 63 6f  <p>There is a co
2070: 6d 70 69 6c 65 2d 74 69 6d 65 20 6c 69 6d 69 74  mpile-time limit
2080: 20 6f 66 20 31 30 20 61 74 74 61 63 68 65 64 20   of 10 attached 
2090: 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 2e 3c  database files.<
20a0: 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  /p>..<tcl>.#####
20b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20f0: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
2100: 6f 6e 20 7b 42 45 47 49 4e 20 54 52 41 4e 53 41  on {BEGIN TRANSA
2110: 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69  CTION} transacti
2120: 6f 6e 20 7b 42 45 47 49 4e 20 43 4f 4d 4d 49 54  on {BEGIN COMMIT
2130: 20 52 4f 4c 4c 42 41 43 4b 7d 0a 0a 53 79 6e 74   ROLLBACK}..Synt
2140: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
2150: 74 7d 20 7b 0a 42 45 47 49 4e 20 5b 20 44 45 46  t} {.BEGIN [ DEF
2160: 45 52 52 45 44 20 7c 20 49 4d 4d 45 44 49 41 54  ERRED | IMMEDIAT
2170: 45 20 7c 20 45 58 43 4c 55 53 49 56 45 20 5d 20  E | EXCLUSIVE ] 
2180: 5b 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e  [TRANSACTION [<n
2190: 61 6d 65 3e 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20  ame>]].}.Syntax 
21a0: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
21b0: 7b 0a 45 4e 44 20 5b 54 52 41 4e 53 41 43 54 49  {.END [TRANSACTI
21c0: 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53  ON [<name>]].}.S
21d0: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
21e0: 6d 65 6e 74 7d 20 7b 0a 43 4f 4d 4d 49 54 20 5b  ment} {.COMMIT [
21f0: 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61  TRANSACTION [<na
2200: 6d 65 3e 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b  me>]].}.Syntax {
2210: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
2220: 0a 52 4f 4c 4c 42 41 43 4b 20 5b 54 52 41 4e 53  .ROLLBACK [TRANS
2230: 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d  ACTION [<name>]]
2240: 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a 4e  .}.</tcl>..<p>.N
2250: 6f 20 63 68 61 6e 67 65 73 20 63 61 6e 20 62 65  o changes can be
2260: 20 6d 61 64 65 20 74 6f 20 74 68 65 20 64 61 74   made to the dat
2270: 61 62 61 73 65 20 65 78 63 65 70 74 20 77 69 74  abase except wit
2280: 68 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69 6f  hin a transactio
2290: 6e 2e 0a 41 6e 79 20 63 6f 6d 6d 61 6e 64 20 74  n..Any command t
22a0: 68 61 74 20 63 68 61 6e 67 65 73 20 74 68 65 20  hat changes the 
22b0: 64 61 74 61 62 61 73 65 20 28 62 61 73 69 63 61  database (basica
22c0: 6c 6c 79 2c 20 61 6e 79 20 53 51 4c 20 63 6f 6d  lly, any SQL com
22d0: 6d 61 6e 64 0a 6f 74 68 65 72 20 74 68 61 6e 20  mand.other than 
22e0: 53 45 4c 45 43 54 29 20 77 69 6c 6c 20 61 75 74  SELECT) will aut
22f0: 6f 6d 61 74 69 63 61 6c 6c 79 20 73 74 61 72 74  omatically start
2300: 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69   a transaction i
2310: 66 0a 6f 6e 65 20 69 73 20 6e 6f 74 20 61 6c 72  f.one is not alr
2320: 65 61 64 79 20 69 6e 20 65 66 66 65 63 74 2e 20  eady in effect. 
2330: 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73   Automatically s
2340: 74 61 72 74 65 64 20 74 72 61 6e 73 61 63 74 69  tarted transacti
2350: 6f 6e 73 0a 61 72 65 20 63 6f 6d 6d 69 74 74 65  ons.are committe
2360: 64 20 61 74 20 74 68 65 20 63 6f 6e 63 6c 75 73  d at the conclus
2370: 69 6f 6e 20 6f 66 20 74 68 65 20 63 6f 6d 6d 61  ion of the comma
2380: 6e 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72  nd..</p>..<p>.Tr
2390: 61 6e 73 61 63 74 69 6f 6e 73 20 63 61 6e 20 62  ansactions can b
23a0: 65 20 73 74 61 72 74 65 64 20 6d 61 6e 75 61 6c  e started manual
23b0: 6c 79 20 75 73 69 6e 67 20 74 68 65 20 42 45 47  ly using the BEG
23c0: 49 4e 0a 63 6f 6d 6d 61 6e 64 2e 20 20 53 75 63  IN.command.  Suc
23d0: 68 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 75  h transactions u
23e0: 73 75 61 6c 6c 79 20 70 65 72 73 69 73 74 20 75  sually persist u
23f0: 6e 74 69 6c 20 74 68 65 20 6e 65 78 74 0a 43 4f  ntil the next.CO
2400: 4d 4d 49 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b  MMIT or ROLLBACK
2410: 20 63 6f 6d 6d 61 6e 64 2e 20 20 42 75 74 20 61   command.  But a
2420: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c   transaction wil
2430: 6c 20 61 6c 73 6f 20 0a 52 4f 4c 4c 42 41 43 4b  l also .ROLLBACK
2440: 20 69 66 20 74 68 65 20 64 61 74 61 62 61 73 65   if the database
2450: 20 69 73 20 63 6c 6f 73 65 64 20 6f 72 20 69 66   is closed or if
2460: 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73   an error occurs
2470: 0a 61 6e 64 20 74 68 65 20 52 4f 4c 4c 42 41 43  .and the ROLLBAC
2480: 4b 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  K conflict resol
2490: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ution algorithm 
24a0: 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a 53 65  is specified..Se
24b0: 65 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74  e the documentat
24c0: 69 6f 6e 20 6f 6e 20 74 68 65 20 3c 61 20 68 72  ion on the <a hr
24d0: 65 66 3d 22 6c 61 6e 67 5f 63 6f 6e 66 6c 69 63  ef="lang_conflic
24e0: 74 2e 68 74 6d 6c 22 3e 4f 4e 20 43 4f 4e 46 4c  t.html">ON CONFL
24f0: 49 43 54 3c 2f 61 3e 0a 63 6c 61 75 73 65 20 66  ICT</a>.clause f
2500: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
2510: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
2520: 74 68 65 20 52 4f 4c 4c 42 41 43 4b 0a 63 6f 6e  the ROLLBACK.con
2530: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
2540: 20 61 6c 67 6f 72 69 74 68 6d 2e 0a 3c 2f 70 3e   algorithm..</p>
2550: 0a 0a 3c 70 3e 0a 45 4e 44 20 54 52 41 4e 53 41  ..<p>.END TRANSA
2560: 43 54 49 4f 4e 20 69 73 20 61 6e 20 61 6c 69 61  CTION is an alia
2570: 73 20 66 6f 72 20 43 4f 4d 4d 49 54 2e 0a 3c 2f  s for COMMIT..</
2580: 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f  p>..<p>The optio
2590: 6e 61 6c 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  nal transaction 
25a0: 6e 61 6d 65 20 69 73 20 63 75 72 72 65 6e 74 20  name is current 
25b0: 69 67 6e 6f 72 65 64 2e 20 53 51 4c 69 74 65 20  ignored. SQLite 
25c0: 0a 64 6f 65 73 20 6e 6f 74 20 72 65 63 6f 67 6e  .does not recogn
25d0: 69 7a 65 20 6e 65 73 74 65 64 20 74 72 61 6e 73  ize nested trans
25e0: 61 63 74 69 6f 6e 73 20 61 74 20 74 68 69 73 20  actions at this 
25f0: 74 69 6d 65 2e 0a 48 6f 77 65 76 65 72 2c 20 66  time..However, f
2600: 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f  uture versions o
2610: 66 20 53 51 4c 69 74 65 20 6d 61 79 20 62 65 20  f SQLite may be 
2620: 65 6e 68 61 6e 63 65 64 20 74 6f 20 73 75 70 70  enhanced to supp
2630: 6f 72 74 20 6e 65 73 74 65 64 0a 74 72 61 6e 73  ort nested.trans
2640: 61 63 74 69 6f 6e 73 20 61 6e 64 20 74 68 65 20  actions and the 
2650: 74 72 61 6e 73 61 63 74 69 6f 6e 20 6e 61 6d 65  transaction name
2660: 20 77 6f 75 6c 64 20 74 68 65 6e 20 62 65 63 6f   would then beco
2670: 6d 65 20 73 69 67 6e 69 66 69 63 61 6e 74 2e 0a  me significant..
2680: 41 70 70 6c 69 63 61 74 69 6f 6e 20 61 72 65 20  Application are 
2690: 61 64 76 69 73 65 64 20 6e 6f 74 20 74 6f 20 75  advised not to u
26a0: 73 65 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  se the transacti
26b0: 6f 6e 20 6e 61 6d 65 20 69 6e 20 6f 72 64 65 72  on name in order
26c0: 0a 74 6f 20 61 76 6f 69 64 20 66 75 74 75 72 65  .to avoid future
26d0: 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 70   compatibility p
26e0: 72 6f 62 6c 65 6d 73 2e 3c 2f 70 3e 0a 0a 3c 70  roblems.</p>..<p
26f0: 3e 0a 54 72 61 6e 73 61 63 74 69 6f 6e 73 20 63  >.Transactions c
2700: 61 6e 20 62 65 20 64 65 66 65 72 72 65 64 2c 20  an be deferred, 
2710: 69 6d 6d 65 64 69 61 74 65 2c 20 6f 72 20 65 78  immediate, or ex
2720: 63 6c 75 73 69 76 65 2e 20 20 0a 54 68 65 20 64  clusive.  .The d
2730: 65 66 61 75 6c 74 20 74 72 61 6e 73 61 63 74 69  efault transacti
2740: 6f 6e 20 62 65 68 61 76 69 6f 72 20 69 73 20 64  on behavior is d
2750: 65 66 65 72 72 65 64 2e 0a 44 65 66 65 72 72 65  eferred..Deferre
2760: 64 20 6d 65 61 6e 73 20 74 68 61 74 20 6e 6f 20  d means that no 
2770: 6c 6f 63 6b 73 20 61 72 65 20 61 63 71 75 69 72  locks are acquir
2780: 65 64 0a 6f 6e 20 74 68 65 20 64 61 74 61 62 61  ed.on the databa
2790: 73 65 20 75 6e 74 69 6c 20 74 68 65 20 64 61 74  se until the dat
27a0: 61 62 61 73 65 20 69 73 20 66 69 72 73 74 20 61  abase is first a
27b0: 63 63 65 73 73 65 64 2e 20 20 54 68 75 73 20 77  ccessed.  Thus w
27c0: 69 74 68 20 61 0a 64 65 66 65 72 72 65 64 20 74  ith a.deferred t
27d0: 72 61 6e 73 61 63 74 69 6f 6e 2c 20 74 68 65 20  ransaction, the 
27e0: 42 45 47 49 4e 20 73 74 61 74 65 6d 65 6e 74 20  BEGIN statement 
27f0: 69 74 73 65 6c 66 20 64 6f 65 73 20 6e 6f 74 68  itself does noth
2800: 69 6e 67 2e 20 20 4c 6f 63 6b 73 0a 61 72 65 20  ing.  Locks.are 
2810: 6e 6f 74 20 61 63 71 75 69 72 65 64 20 75 6e 74  not acquired unt
2820: 69 6c 20 74 68 65 20 66 69 72 73 74 20 72 65 61  il the first rea
2830: 64 20 6f 72 20 77 72 69 74 65 20 6f 70 65 72 61  d or write opera
2840: 74 69 6f 6e 2e 20 20 54 68 65 20 66 69 72 73 74  tion.  The first
2850: 20 72 65 61 64 0a 6f 70 65 72 61 74 69 6f 6e 20   read.operation 
2860: 61 67 61 69 6e 73 74 20 61 20 64 61 74 61 62 61  against a databa
2870: 73 65 20 63 72 65 61 74 65 73 20 61 20 53 48 41  se creates a SHA
2880: 52 45 44 20 6c 6f 63 6b 20 61 6e 64 20 74 68 65  RED lock and the
2890: 20 66 69 72 73 74 0a 77 72 69 74 65 20 6f 70 65   first.write ope
28a0: 72 61 74 69 6f 6e 20 63 72 65 61 74 65 73 20 61  ration creates a
28b0: 20 52 45 53 45 52 56 45 44 20 6c 6f 63 6b 2e 20   RESERVED lock. 
28c0: 20 20 42 65 63 61 75 73 65 20 74 68 65 20 61 63    Because the ac
28d0: 71 75 69 73 69 74 69 6f 6e 20 6f 66 0a 6c 6f 63  quisition of.loc
28e0: 6b 73 20 69 73 20 64 65 66 65 72 72 65 64 20 75  ks is deferred u
28f0: 6e 74 69 6c 20 74 68 65 79 20 61 72 65 20 6e 65  ntil they are ne
2900: 65 64 65 64 2c 20 69 74 20 69 73 20 70 6f 73 73  eded, it is poss
2910: 69 62 6c 65 20 74 68 61 74 20 61 6e 6f 74 68 65  ible that anothe
2920: 72 0a 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63  r.thread or proc
2930: 65 73 73 20 63 6f 75 6c 64 20 63 72 65 61 74 65  ess could create
2940: 20 61 20 73 65 70 61 72 61 74 65 20 74 72 61 6e   a separate tran
2950: 73 61 63 74 69 6f 6e 20 61 6e 64 20 77 72 69 74  saction and writ
2960: 65 20 74 6f 0a 74 68 65 20 64 61 74 61 62 61 73  e to.the databas
2970: 65 20 61 66 74 65 72 20 74 68 65 20 42 45 47 49  e after the BEGI
2980: 4e 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74  N on the current
2990: 20 74 68 72 65 61 64 20 68 61 73 20 65 78 65 63   thread has exec
29a0: 75 74 65 64 2e 0a 49 66 20 74 68 65 20 74 72 61  uted..If the tra
29b0: 6e 73 61 63 74 69 6f 6e 20 69 73 20 69 6d 6d 65  nsaction is imme
29c0: 64 69 61 74 65 2c 20 74 68 65 6e 20 52 45 53 45  diate, then RESE
29d0: 52 56 45 44 20 6c 6f 63 6b 73 0a 61 72 65 20 61  RVED locks.are a
29e0: 63 71 75 69 72 65 64 20 6f 6e 20 61 6c 6c 20 64  cquired on all d
29f0: 61 74 61 62 61 73 65 73 20 61 73 20 73 6f 6f 6e  atabases as soon
2a00: 20 61 73 20 74 68 65 20 42 45 47 49 4e 20 63 6f   as the BEGIN co
2a10: 6d 6d 61 6e 64 20 69 73 0a 65 78 65 63 75 74 65  mmand is.execute
2a20: 64 2c 20 77 69 74 68 6f 75 74 20 77 61 69 74 69  d, without waiti
2a30: 6e 67 20 66 6f 72 20 74 68 65 0a 64 61 74 61 62  ng for the.datab
2a40: 61 73 65 20 74 6f 20 62 65 20 75 73 65 64 2e 20  ase to be used. 
2a50: 20 41 66 74 65 72 20 61 20 42 45 47 49 4e 20 49   After a BEGIN I
2a60: 4d 4d 45 44 49 41 54 45 2c 20 79 6f 75 20 61 72  MMEDIATE, you ar
2a70: 65 20 67 75 61 72 61 6e 74 65 65 64 20 74 68 61  e guaranteed tha
2a80: 74 0a 6e 6f 20 6f 74 68 65 72 20 74 68 72 65 61  t.no other threa
2a90: 64 20 6f 72 20 70 72 6f 63 65 73 73 20 77 69 6c  d or process wil
2aa0: 6c 20 62 65 20 61 62 6c 65 20 74 6f 20 77 72 69  l be able to wri
2ab0: 74 65 20 74 6f 20 74 68 65 20 64 61 74 61 62 61  te to the databa
2ac0: 73 65 20 6f 72 0a 64 6f 20 61 20 42 45 47 49 4e  se or.do a BEGIN
2ad0: 20 49 4d 4d 45 44 49 41 54 45 20 6f 72 20 42 45   IMMEDIATE or BE
2ae0: 47 49 4e 20 45 58 43 4c 55 53 49 56 45 2e 20 20  GIN EXCLUSIVE.  
2af0: 4f 74 68 65 72 20 70 72 6f 63 65 73 73 65 73 20  Other processes 
2b00: 63 61 6e 20 63 6f 6e 74 69 6e 75 65 0a 74 6f 20  can continue.to 
2b10: 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20 64 61  read from the da
2b20: 74 61 62 61 73 65 2c 20 68 6f 77 65 76 65 72 2e  tabase, however.
2b30: 20 20 41 6e 20 65 78 63 6c 75 73 69 76 65 20 74    An exclusive t
2b40: 72 61 6e 73 61 63 74 69 6f 6e 20 63 61 75 73 65  ransaction cause
2b50: 73 0a 45 58 43 4c 55 53 49 56 45 20 6c 6f 63 6b  s.EXCLUSIVE lock
2b60: 73 20 74 6f 20 62 65 20 61 63 71 75 69 72 65 64  s to be acquired
2b70: 20 6f 6e 20 61 6c 6c 20 64 61 74 61 62 61 73 65   on all database
2b80: 73 2e 20 20 41 66 74 65 72 20 61 20 42 45 47 49  s.  After a BEGI
2b90: 4e 0a 45 58 43 4c 55 53 49 56 45 2c 20 79 6f 75  N.EXCLUSIVE, you
2ba0: 20 61 72 65 20 67 75 61 72 61 6e 74 65 65 64 20   are guaranteed 
2bb0: 74 68 61 74 20 6e 6f 20 6f 74 68 65 72 20 74 68  that no other th
2bc0: 72 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20  read or process 
2bd0: 77 69 6c 6c 0a 62 65 20 61 62 6c 65 20 74 6f 20  will.be able to 
2be0: 72 65 61 64 20 6f 72 20 77 72 69 74 65 20 74 68  read or write th
2bf0: 65 20 64 61 74 61 62 61 73 65 20 75 6e 74 69 6c  e database until
2c00: 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
2c10: 20 69 73 0a 63 6f 6d 70 6c 65 74 65 2e 0a 3c 2f   is.complete..</
2c20: 70 3e 0a 0a 3c 70 3e 0a 41 20 64 65 73 63 72 69  p>..<p>.A descri
2c30: 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 6d 65 61  ption of the mea
2c40: 6e 69 6e 67 20 6f 66 20 53 48 41 52 45 44 2c 20  ning of SHARED, 
2c50: 52 45 53 45 52 56 45 44 2c 20 61 6e 64 20 45 58  RESERVED, and EX
2c60: 43 4c 55 53 49 56 45 20 6c 6f 63 6b 73 0a 69 73  CLUSIVE locks.is
2c70: 20 61 76 61 69 6c 61 62 6c 65 20 3c 61 20 68 72   available <a hr
2c80: 65 66 3d 22 6c 6f 63 6b 69 6e 67 76 33 2e 68 74  ef="lockingv3.ht
2c90: 6d 6c 22 3e 73 65 70 61 72 61 74 65 6c 79 3c 2f  ml">separately</
2ca0: 61 3e 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68  a>..</p>..<p>.Th
2cb0: 65 20 43 4f 4d 4d 49 54 20 63 6f 6d 6d 61 6e 64  e COMMIT command
2cc0: 20 64 6f 65 73 20 6e 6f 74 20 61 63 74 75 61 6c   does not actual
2cd0: 6c 79 20 70 65 72 66 6f 72 6d 20 61 20 63 6f 6d  ly perform a com
2ce0: 6d 69 74 20 75 6e 74 69 6c 20 61 6c 6c 0a 70 65  mit until all.pe
2cf0: 6e 64 69 6e 67 20 53 51 4c 20 63 6f 6d 6d 61 6e  nding SQL comman
2d00: 64 73 20 66 69 6e 69 73 68 2e 20 20 54 68 75 73  ds finish.  Thus
2d10: 20 69 66 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20   if two or more 
2d20: 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
2d30: 73 0a 61 72 65 20 69 6e 20 74 68 65 20 6d 69 64  s.are in the mid
2d40: 64 6c 65 20 6f 66 20 70 72 6f 63 65 73 73 69 6e  dle of processin
2d50: 67 20 61 6e 64 20 61 20 43 4f 4d 4d 49 54 20 69  g and a COMMIT i
2d60: 73 20 65 78 65 63 75 74 65 64 2c 20 74 68 65 20  s executed, the 
2d70: 63 6f 6d 6d 69 74 0a 77 69 6c 6c 20 6e 6f 74 20  commit.will not 
2d80: 61 63 74 75 61 6c 6c 79 20 6f 63 63 75 72 20 75  actually occur u
2d90: 6e 74 69 6c 20 61 6c 6c 20 53 45 4c 45 43 54 20  ntil all SELECT 
2da0: 73 74 61 74 65 6d 65 6e 74 73 20 66 69 6e 69 73  statements finis
2db0: 68 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41 6e 20  h..</p>..<p>.An 
2dc0: 61 74 74 65 6d 70 74 20 74 6f 20 65 78 65 63 75  attempt to execu
2dd0: 74 65 20 43 4f 4d 4d 49 54 20 6d 69 67 68 74 20  te COMMIT might 
2de0: 72 65 73 75 6c 74 20 69 6e 20 61 6e 20 53 51 4c  result in an SQL
2df0: 49 54 45 5f 42 55 53 59 20 72 65 74 75 72 6e 20  ITE_BUSY return 
2e00: 63 6f 64 65 2e 0a 54 68 69 73 20 69 6e 64 69 63  code..This indic
2e10: 61 74 65 73 20 74 68 61 74 20 61 6e 6f 74 68 65  ates that anothe
2e20: 72 20 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63  r thread or proc
2e30: 65 73 73 20 68 61 64 20 61 20 72 65 61 64 20 6c  ess had a read l
2e40: 6f 63 6b 20 6f 6e 20 74 68 65 20 64 61 74 61 62  ock on the datab
2e50: 61 73 65 0a 74 68 61 74 20 70 72 65 76 65 6e 74  ase.that prevent
2e60: 65 64 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ed the database 
2e70: 66 72 6f 6d 20 62 65 69 6e 67 20 75 70 64 61 74  from being updat
2e80: 65 64 2e 20 20 57 68 65 6e 20 43 4f 4d 4d 49 54  ed.  When COMMIT
2e90: 20 66 61 69 6c 73 20 69 6e 20 74 68 69 73 0a 77   fails in this.w
2ea0: 61 79 2c 20 74 68 65 20 74 72 61 6e 73 61 63 74  ay, the transact
2eb0: 69 6f 6e 20 72 65 6d 61 69 6e 73 20 61 63 74 69  ion remains acti
2ec0: 76 65 20 61 6e 64 20 74 68 65 20 43 4f 4d 4d 49  ve and the COMMI
2ed0: 54 20 63 61 6e 20 62 65 20 72 65 74 72 69 65 64  T can be retried
2ee0: 20 6c 61 74 65 72 0a 61 66 74 65 72 20 74 68 65   later.after the
2ef0: 20 72 65 61 64 65 72 20 68 61 73 20 68 61 64 20   reader has had 
2f00: 61 20 63 68 61 6e 63 65 20 74 6f 20 63 6c 65 61  a chance to clea
2f10: 72 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e 52 65 73  r..</p>..<h3>Res
2f20: 70 6f 6e 73 65 20 54 6f 20 45 72 72 6f 72 73 20  ponse To Errors 
2f30: 57 69 74 68 69 6e 20 41 20 54 72 61 6e 73 61 63  Within A Transac
2f40: 74 69 6f 6e 3c 2f 68 33 3e 0a 0a 3c 70 3e 49 66  tion</h3>..<p>If
2f50: 20 63 65 72 74 61 69 6e 20 6b 69 6e 64 73 20 6f   certain kinds o
2f60: 66 20 65 72 72 6f 72 73 20 6f 63 63 75 72 20 77  f errors occur w
2f70: 69 74 68 69 6e 20 61 20 74 72 61 6e 73 61 63 74  ithin a transact
2f80: 69 6f 6e 2c 20 74 68 65 0a 74 72 61 6e 73 61 63  ion, the.transac
2f90: 74 69 6f 6e 20 6d 61 79 20 6f 72 20 6d 61 79 20  tion may or may 
2fa0: 6e 6f 74 20 62 65 20 72 6f 6c 6c 65 64 20 62 61  not be rolled ba
2fb0: 63 6b 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ck automatically
2fc0: 2e 20 20 54 68 65 0a 65 72 72 6f 72 73 20 74 68  .  The.errors th
2fd0: 61 74 20 63 61 75 73 65 20 74 68 65 20 62 65 68  at cause the beh
2fe0: 61 76 69 6f 72 20 69 6e 63 6c 75 64 65 3a 3c 2f  avior include:</
2ff0: 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 20 53 51  p>..<ul>.<li> SQ
3000: 4c 49 54 45 5f 46 55 4c 4c 3a 20 64 61 74 61 62  LITE_FULL: datab
3010: 61 73 65 20 6f 72 20 64 69 73 6b 20 66 75 6c 6c  ase or disk full
3020: 0a 3c 6c 69 3e 20 53 51 4c 49 54 45 5f 49 4f 45  .<li> SQLITE_IOE
3030: 52 52 3a 20 64 69 73 6b 20 49 2f 4f 20 65 72 72  RR: disk I/O err
3040: 6f 72 0a 3c 6c 69 3e 20 53 51 4c 49 54 45 5f 42  or.<li> SQLITE_B
3050: 55 53 59 3a 20 64 61 74 61 62 61 73 65 20 69 6e  USY: database in
3060: 20 75 73 65 20 62 79 20 61 6e 6f 74 68 65 72 20   use by another 
3070: 70 72 6f 63 65 73 73 0a 3c 6c 69 3e 20 53 51 4c  process.<li> SQL
3080: 49 54 45 5f 4e 4f 4d 45 4d 3a 20 6f 75 74 20 6f  ITE_NOMEM: out o
3090: 72 20 6d 65 6d 6f 72 79 0a 3c 6c 69 3e 20 53 51  r memory.<li> SQ
30a0: 4c 49 54 45 5f 49 4e 54 45 52 52 55 50 54 3a 20  LITE_INTERRUPT: 
30b0: 70 72 6f 63 65 73 73 69 6e 67 20 69 6e 74 65 72  processing inter
30c0: 72 75 70 74 65 64 20 62 79 20 75 73 65 72 20 72  rupted by user r
30d0: 65 71 75 65 73 74 0a 3c 2f 75 6c 3e 0a 0a 3c 70  equest.</ul>..<p
30e0: 3e 0a 46 6f 72 20 61 6c 6c 20 6f 66 20 74 68 65  >.For all of the
30f0: 73 65 20 65 72 72 6f 72 73 2c 20 53 51 4c 69 74  se errors, SQLit
3100: 65 20 61 74 74 65 6d 70 74 73 20 74 6f 20 75 6e  e attempts to un
3110: 64 6f 20 6a 75 73 74 20 74 68 65 20 6f 6e 65 20  do just the one 
3120: 73 74 61 74 65 6d 65 6e 74 0a 69 74 20 77 61 73  statement.it was
3130: 20 77 6f 72 6b 69 6e 67 20 6f 6e 20 61 6e 64 20   working on and 
3140: 6c 65 61 76 65 20 63 68 61 6e 67 65 73 20 66 72  leave changes fr
3150: 6f 6d 20 70 72 69 6f 72 20 73 74 61 74 65 6d 65  om prior stateme
3160: 6e 74 73 20 77 69 74 68 69 6e 20 74 68 65 0a 73  nts within the.s
3170: 61 6d 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ame transaction 
3180: 69 6e 74 61 63 74 20 61 6e 64 20 63 6f 6e 74 69  intact and conti
3190: 6e 75 65 20 77 69 74 68 20 74 68 65 20 74 72 61  nue with the tra
31a0: 6e 73 61 63 74 69 6f 6e 2e 20 20 48 6f 77 65 76  nsaction.  Howev
31b0: 65 72 2c 20 0a 64 65 70 65 6e 64 69 6e 67 20 6f  er, .depending o
31c0: 6e 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  n the statement 
31d0: 62 65 69 6e 67 20 65 76 61 6c 75 61 74 65 64 20  being evaluated 
31e0: 61 6e 64 20 74 68 65 20 70 6f 69 6e 74 20 61 74  and the point at
31f0: 20 77 68 69 63 68 20 74 68 65 0a 65 72 72 6f 72   which the.error
3200: 20 6f 63 63 75 72 73 2c 20 69 74 20 6d 69 67 68   occurs, it migh
3210: 74 20 62 65 20 6e 65 63 65 73 73 61 72 79 20 66  t be necessary f
3220: 6f 72 20 53 51 4c 69 74 65 20 74 6f 20 72 6f 6c  or SQLite to rol
3230: 6c 62 61 63 6b 20 61 6e 64 0a 63 61 6e 63 65 6c  lback and.cancel
3240: 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
3250: 2e 20 20 41 6e 20 61 70 70 6c 69 63 61 74 69 6f  .  An applicatio
3260: 6e 20 63 61 6e 20 74 65 6c 6c 20 77 68 69 63 68  n can tell which
3270: 0a 63 6f 75 72 73 65 20 6f 66 20 61 63 74 69 6f  .course of actio
3280: 6e 20 53 51 4c 69 74 65 20 74 6f 6f 6b 20 62 79  n SQLite took by
3290: 20 75 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c 69   using the.[sqli
32a0: 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d  te3_get_autocomm
32b0: 69 74 28 29 5d 20 43 2d 6c 61 6e 67 75 61 67 65  it()] C-language
32c0: 20 69 6e 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a   interface.</p>.
32d0: 0a 3c 70 3e 49 74 20 69 73 20 72 65 63 6f 6d 6d  .<p>It is recomm
32e0: 65 6e 64 65 64 20 74 68 61 74 20 61 70 70 6c 69  ended that appli
32f0: 63 61 74 69 6f 6e 73 20 72 65 73 70 6f 6e 64 20  cations respond 
3300: 74 6f 20 74 68 65 20 65 72 72 6f 72 73 0a 6c 69  to the errors.li
3310: 73 74 65 64 20 61 62 6f 76 65 20 62 79 20 65 78  sted above by ex
3320: 70 6c 69 63 69 74 6c 79 20 69 73 73 75 69 6e 67  plicitly issuing
3330: 20 61 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d   a ROLLBACK comm
3340: 61 6e 64 2e 20 20 49 66 20 74 68 65 20 0a 74 72  and.  If the .tr
3350: 61 6e 73 61 63 74 69 6f 6e 20 68 61 73 20 61 6c  ansaction has al
3360: 72 65 61 64 79 20 62 65 65 6e 20 72 6f 6c 6c 65  ready been rolle
3370: 64 20 62 61 63 6b 20 61 75 74 6f 6d 61 74 69 63  d back automatic
3380: 61 6c 6c 79 0a 62 79 20 74 68 65 20 65 72 72 6f  ally.by the erro
3390: 72 20 72 65 73 70 6f 6e 73 65 2c 20 74 68 65 6e  r response, then
33a0: 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f   the ROLLBACK co
33b0: 6d 6d 61 6e 64 20 77 69 6c 6c 20 66 61 69 6c 20  mmand will fail 
33c0: 77 69 74 68 20 61 6e 0a 65 72 72 6f 72 2c 20 62  with an.error, b
33d0: 75 74 20 6e 6f 20 68 61 72 6d 20 69 73 20 63 61  ut no harm is ca
33e0: 75 73 65 64 20 62 79 20 74 68 69 73 2e 3c 2f 70  used by this.</p
33f0: 3e 0a 0a 3c 70 3e 46 75 74 75 72 65 20 76 65 72  >..<p>Future ver
3400: 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20  sions of SQLite 
3410: 6d 61 79 20 65 78 74 65 6e 64 20 74 68 65 20 6c  may extend the l
3420: 69 73 74 20 6f 66 20 65 72 72 6f 72 73 20 77 68  ist of errors wh
3430: 69 63 68 0a 6d 69 67 68 74 20 63 61 75 73 65 20  ich.might cause 
3440: 61 75 74 6f 6d 61 74 69 63 20 74 72 61 6e 73 61  automatic transa
3450: 63 74 69 6f 6e 20 72 6f 6c 6c 62 61 63 6b 2e 20  ction rollback. 
3460: 20 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73   Future versions
3470: 20 6f 66 0a 53 51 4c 69 74 65 20 6d 69 67 68 74   of.SQLite might
3480: 20 63 68 61 6e 67 65 20 74 68 65 20 65 72 72 6f   change the erro
3490: 72 20 72 65 73 70 6f 6e 73 65 2e 20 20 49 6e 20  r response.  In 
34a0: 70 61 72 74 69 63 75 6c 61 72 2c 20 77 65 20 6d  particular, we m
34b0: 61 79 0a 63 68 6f 6f 73 65 20 74 6f 20 73 69 6d  ay.choose to sim
34c0: 70 6c 69 66 79 20 74 68 65 20 69 6e 74 65 72 66  plify the interf
34d0: 61 63 65 20 69 6e 20 66 75 74 75 72 65 20 76 65  ace in future ve
34e0: 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65  rsions of SQLite
34f0: 20 62 79 0a 63 61 75 73 69 6e 67 20 74 68 65 20   by.causing the 
3500: 65 72 72 6f 72 73 20 61 62 6f 76 65 20 74 6f 20  errors above to 
3510: 66 6f 72 63 65 20 61 6e 20 75 6e 63 6f 6e 64 69  force an uncondi
3520: 74 69 6f 6e 61 6c 20 72 6f 6c 6c 62 61 63 6b 2e  tional rollback.
3530: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  </p>..<tcl>.####
3540: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3550: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3560: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3570: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3580: 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74  ###########.Sect
3590: 69 6f 6e 20 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d  ion comment comm
35a0: 65 6e 74 20 7b 63 6f 6d 6d 65 6e 74 20 63 6f 6d  ent {comment com
35b0: 6d 65 6e 74 73 7d 0a 0a 53 79 6e 74 61 78 20 7b  ments}..Syntax {
35c0: 63 6f 6d 6d 65 6e 74 7d 20 7b 3c 53 51 4c 2d 63  comment} {<SQL-c
35d0: 6f 6d 6d 65 6e 74 3e 20 7c 20 3c 43 2d 63 6f 6d  omment> | <C-com
35e0: 6d 65 6e 74 3e 0a 7d 20 7b 53 51 4c 2d 63 6f 6d  ment>.} {SQL-com
35f0: 6d 65 6e 74 7d 20 7b 2d 2d 20 3c 73 69 6e 67 6c  ment} {-- <singl
3600: 65 2d 6c 69 6e 65 3e 0a 7d 20 7b 43 2d 63 6f 6d  e-line>.} {C-com
3610: 6d 65 6e 74 7d 20 7b 2f 53 54 41 52 20 3c 6d 75  ment} {/STAR <mu
3620: 6c 74 69 70 6c 65 2d 6c 69 6e 65 73 3e 20 5b 53  ltiple-lines> [S
3630: 54 41 52 2f 5d 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a  TAR/].}.</tcl>..
3640: 3c 70 3e 20 43 6f 6d 6d 65 6e 74 73 20 61 72 65  <p> Comments are
3650: 6e 27 74 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73  n't SQL commands
3660: 2c 20 62 75 74 20 63 61 6e 20 6f 63 63 75 72 20  , but can occur 
3670: 69 6e 20 53 51 4c 20 71 75 65 72 69 65 73 2e 20  in SQL queries. 
3680: 54 68 65 79 20 61 72 65 20 0a 74 72 65 61 74 65  They are .treate
3690: 64 20 61 73 20 77 68 69 74 65 73 70 61 63 65 20  d as whitespace 
36a0: 62 79 20 74 68 65 20 70 61 72 73 65 72 2e 20 20  by the parser.  
36b0: 54 68 65 79 20 63 61 6e 20 62 65 67 69 6e 20 61  They can begin a
36c0: 6e 79 77 68 65 72 65 20 77 68 69 74 65 73 70 61  nywhere whitespa
36d0: 63 65 20 0a 63 61 6e 20 62 65 20 66 6f 75 6e 64  ce .can be found
36e0: 2c 20 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69  , including insi
36f0: 64 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74  de expressions t
3700: 68 61 74 20 73 70 61 6e 20 6d 75 6c 74 69 70 6c  hat span multipl
3710: 65 20 6c 69 6e 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c  e lines..</p>..<
3720: 70 3e 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20  p> SQL comments 
3730: 6f 6e 6c 79 20 65 78 74 65 6e 64 20 74 6f 20 74  only extend to t
3740: 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 63 75  he end of the cu
3750: 72 72 65 6e 74 20 6c 69 6e 65 2e 3c 2f 70 3e 0a  rrent line.</p>.
3760: 0a 3c 70 3e 20 43 20 63 6f 6d 6d 65 6e 74 73 20  .<p> C comments 
3770: 63 61 6e 20 73 70 61 6e 20 61 6e 79 20 6e 75 6d  can span any num
3780: 62 65 72 20 6f 66 20 6c 69 6e 65 73 2e 20 20 49  ber of lines.  I
3790: 66 20 74 68 65 72 65 20 69 73 20 6e 6f 20 74 65  f there is no te
37a0: 72 6d 69 6e 61 74 69 6e 67 0a 64 65 6c 69 6d 69  rminating.delimi
37b0: 74 65 72 2c 20 74 68 65 79 20 65 78 74 65 6e 64  ter, they extend
37c0: 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74   to the end of t
37d0: 68 65 20 69 6e 70 75 74 2e 20 20 54 68 69 73 20  he input.  This 
37e0: 69 73 20 6e 6f 74 20 74 72 65 61 74 65 64 20 61  is not treated a
37f0: 73 0a 61 6e 20 65 72 72 6f 72 2e 20 20 41 20 6e  s.an error.  A n
3800: 65 77 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ew SQL statement
3810: 20 63 61 6e 20 62 65 67 69 6e 20 6f 6e 20 61 20   can begin on a 
3820: 6c 69 6e 65 20 61 66 74 65 72 20 61 20 6d 75 6c  line after a mul
3830: 74 69 6c 69 6e 65 0a 63 6f 6d 6d 65 6e 74 20 65  tiline.comment e
3840: 6e 64 73 2e 20 20 43 20 63 6f 6d 6d 65 6e 74 73  nds.  C comments
3850: 20 63 61 6e 20 62 65 20 65 6d 62 65 64 64 65 64   can be embedded
3860: 20 61 6e 79 77 68 65 72 65 20 77 68 69 74 65 73   anywhere whites
3870: 70 61 63 65 20 63 61 6e 20 6f 63 63 75 72 2c 0a  pace can occur,.
3880: 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65  including inside
3890: 20 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 61 6e   expressions, an
38a0: 64 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20  d in the middle 
38b0: 6f 66 20 6f 74 68 65 72 20 53 51 4c 20 73 74 61  of other SQL sta
38c0: 74 65 6d 65 6e 74 73 2e 0a 43 20 63 6f 6d 6d 65  tements..C comme
38d0: 6e 74 73 20 64 6f 20 6e 6f 74 20 6e 65 73 74 2e  nts do not nest.
38e0: 20 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 69    SQL comments i
38f0: 6e 73 69 64 65 20 61 20 43 20 63 6f 6d 6d 65 6e  nside a C commen
3900: 74 20 77 69 6c 6c 20 62 65 20 69 67 6e 6f 72 65  t will be ignore
3910: 64 2e 0a 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a  d..</p>...<tcl>.
3920: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3930: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3940: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3950: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3960: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
3970: 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 49  ection {CREATE I
3980: 4e 44 45 58 7d 20 63 72 65 61 74 65 69 6e 64 65  NDEX} createinde
3990: 78 20 7b 7b 43 52 45 41 54 45 20 49 4e 44 45 58  x {{CREATE INDEX
39a0: 7d 7d 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  }}..Syntax {sql-
39b0: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43 52 45  statement} {.CRE
39c0: 41 54 45 20 5b 55 4e 49 51 55 45 5d 20 49 4e 44  ATE [UNIQUE] IND
39d0: 45 58 20 5b 49 46 20 4e 4f 54 20 45 58 49 53 54  EX [IF NOT EXIST
39e0: 53 5d 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  S] [<database-na
39f0: 6d 65 3e 20 2e 5d 20 3c 69 6e 64 65 78 2d 6e 61  me> .] <index-na
3a00: 6d 65 3e 20 0a 4f 4e 20 3c 74 61 62 6c 65 2d 6e  me> .ON <table-n
3a10: 61 6d 65 3e 20 28 20 3c 63 6f 6c 75 6d 6e 2d 6e  ame> ( <column-n
3a20: 61 6d 65 3e 20 5b 2c 20 3c 63 6f 6c 75 6d 6e 2d  ame> [, <column-
3a30: 6e 61 6d 65 3e 5d 2a 20 29 0a 7d 20 7b 63 6f 6c  name>]* ).} {col
3a40: 75 6d 6e 2d 6e 61 6d 65 7d 20 7b 0a 3c 6e 61 6d  umn-name} {.<nam
3a50: 65 3e 20 5b 20 43 4f 4c 4c 41 54 45 20 3c 63 6f  e> [ COLLATE <co
3a60: 6c 6c 61 74 69 6f 6e 2d 6e 61 6d 65 3e 5d 20 5b  llation-name>] [
3a70: 20 41 53 43 20 7c 20 44 45 53 43 20 5d 0a 7d 0a   ASC | DESC ].}.
3a80: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 43  </tcl>..<p>The C
3a90: 52 45 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d  REATE INDEX comm
3aa0: 61 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20  and consists of 
3ab0: 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52  the keywords "CR
3ac0: 45 41 54 45 20 49 4e 44 45 58 22 20 66 6f 6c 6c  EATE INDEX" foll
3ad0: 6f 77 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65  owed.by the name
3ae0: 20 6f 66 20 74 68 65 20 6e 65 77 20 69 6e 64 65   of the new inde
3af0: 78 2c 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22  x, the keyword "
3b00: 4f 4e 22 2c 20 74 68 65 20 6e 61 6d 65 20 6f 66  ON", the name of
3b10: 20 61 20 70 72 65 76 69 6f 75 73 6c 79 0a 63 72   a previously.cr
3b20: 65 61 74 65 64 20 74 61 62 6c 65 20 74 68 61 74  eated table that
3b30: 20 69 73 20 74 6f 20 62 65 20 69 6e 64 65 78 65   is to be indexe
3b40: 64 2c 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68  d, and a parenth
3b50: 65 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 6e  esized list of n
3b60: 61 6d 65 73 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20  ames of.columns 
3b70: 69 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61  in the table tha
3b80: 74 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 74  t are used for t
3b90: 68 65 20 69 6e 64 65 78 20 6b 65 79 2e 0a 45 61  he index key..Ea
3ba0: 63 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63  ch column name c
3bb0: 61 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62  an be followed b
3bc0: 79 20 6f 6e 65 20 6f 66 20 74 68 65 20 22 41 53  y one of the "AS
3bd0: 43 22 20 6f 72 20 22 44 45 53 43 22 20 6b 65 79  C" or "DESC" key
3be0: 77 6f 72 64 73 0a 74 6f 20 69 6e 64 69 63 61 74  words.to indicat
3bf0: 65 20 73 6f 72 74 20 6f 72 64 65 72 2c 20 62 75  e sort order, bu
3c00: 74 20 74 68 65 20 73 6f 72 74 20 6f 72 64 65 72  t the sort order
3c10: 20 69 73 20 69 67 6e 6f 72 65 64 20 69 6e 20 74   is ignored in t
3c20: 68 65 20 63 75 72 72 65 6e 74 0a 69 6d 70 6c 65  he current.imple
3c30: 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 53 6f 72 74  mentation.  Sort
3c40: 69 6e 67 20 69 73 20 61 6c 77 61 79 73 20 64 6f  ing is always do
3c50: 6e 65 20 69 6e 20 61 73 63 65 6e 64 69 6e 67 20  ne in ascending 
3c60: 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  order.</p>..<p>T
3c70: 68 65 20 43 4f 4c 4c 41 54 45 20 63 6c 61 75 73  he COLLATE claus
3c80: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 65 61 63 68  e following each
3c90: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 64 65 66   column name def
3ca0: 69 6e 65 73 20 61 20 63 6f 6c 6c 61 74 69 6e 67  ines a collating
3cb0: 0a 73 65 71 75 65 6e 63 65 20 75 73 65 64 20 66  .sequence used f
3cc0: 6f 72 20 74 65 78 74 20 65 6e 74 69 72 65 73 20  or text entires 
3cd0: 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20  in that column. 
3ce0: 20 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6c   The default col
3cf0: 6c 61 74 69 6e 67 0a 73 65 71 75 65 6e 63 65 20  lating.sequence 
3d00: 69 73 20 74 68 65 20 63 6f 6c 6c 61 74 69 6e 67  is the collating
3d10: 20 73 65 71 75 65 6e 63 65 20 64 65 66 69 6e 65   sequence define
3d20: 64 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d  d for that colum
3d30: 6e 20 69 6e 20 74 68 65 0a 43 52 45 41 54 45 20  n in the.CREATE 
3d40: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e  TABLE statement.
3d50: 20 20 4f 72 20 69 66 20 6e 6f 20 63 6f 6c 6c 61    Or if no colla
3d60: 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69 73  ting sequence is
3d70: 20 6f 74 68 65 72 77 69 73 65 20 64 65 66 69 6e   otherwise defin
3d80: 65 64 2c 0a 74 68 65 20 62 75 69 6c 74 2d 69 6e  ed,.the built-in
3d90: 20 42 49 4e 41 52 59 20 63 6f 6c 6c 61 74 69 6e   BINARY collatin
3da0: 67 20 73 65 71 75 65 6e 63 65 20 69 73 20 75 73  g sequence is us
3db0: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72  ed.</p>..<p>Ther
3dc0: 65 20 61 72 65 20 6e 6f 20 61 72 62 69 74 72 61  e are no arbitra
3dd0: 72 79 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65  ry limits on the
3de0: 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e 64 69 63   number of indic
3df0: 65 73 20 74 68 61 74 20 63 61 6e 20 62 65 0a 61  es that can be.a
3e00: 74 74 61 63 68 65 64 20 74 6f 20 61 20 73 69 6e  ttached to a sin
3e10: 67 6c 65 20 74 61 62 6c 65 2c 20 6e 6f 72 20 6f  gle table, nor o
3e20: 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  n the number of 
3e30: 63 6f 6c 75 6d 6e 73 20 69 6e 20 61 6e 20 69 6e  columns in an in
3e40: 64 65 78 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  dex.</p>..<p>If 
3e50: 74 68 65 20 55 4e 49 51 55 45 20 6b 65 79 77 6f  the UNIQUE keywo
3e60: 72 64 20 61 70 70 65 61 72 73 20 62 65 74 77 65  rd appears betwe
3e70: 65 6e 20 43 52 45 41 54 45 20 61 6e 64 20 49 4e  en CREATE and IN
3e80: 44 45 58 20 74 68 65 6e 20 64 75 70 6c 69 63 61  DEX then duplica
3e90: 74 65 0a 69 6e 64 65 78 20 65 6e 74 72 69 65 73  te.index entries
3ea0: 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64   are not allowed
3eb0: 2e 20 20 41 6e 79 20 61 74 74 65 6d 70 74 20 74  .  Any attempt t
3ec0: 6f 20 69 6e 73 65 72 74 20 61 20 64 75 70 6c 69  o insert a dupli
3ed0: 63 61 74 65 20 65 6e 74 72 79 0a 77 69 6c 6c 20  cate entry.will 
3ee0: 72 65 73 75 6c 74 20 69 6e 20 61 6e 20 65 72 72  result in an err
3ef0: 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  or.</p>..<p>The 
3f00: 65 78 61 63 74 20 74 65 78 74 0a 6f 66 20 65 61  exact text.of ea
3f10: 63 68 20 43 52 45 41 54 45 20 49 4e 44 45 58 20  ch CREATE INDEX 
3f20: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73 74 6f  statement is sto
3f30: 72 65 64 20 69 6e 20 74 68 65 20 3c 62 3e 73 71  red in the <b>sq
3f40: 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a  lite_master</b>.
3f50: 6f 72 20 3c 62 3e 73 71 6c 69 74 65 5f 74 65 6d  or <b>sqlite_tem
3f60: 70 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62  p_master</b> tab
3f70: 6c 65 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  le, depending on
3f80: 20 77 68 65 74 68 65 72 20 74 68 65 20 74 61 62   whether the tab
3f90: 6c 65 0a 62 65 69 6e 67 20 69 6e 64 65 78 65 64  le.being indexed
3fa0: 20 69 73 20 74 65 6d 70 6f 72 61 72 79 2e 20 20   is temporary.  
3fb0: 45 76 65 72 79 20 74 69 6d 65 20 74 68 65 20 64  Every time the d
3fc0: 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65  atabase is opene
3fd0: 64 2c 0a 61 6c 6c 20 43 52 45 41 54 45 20 49 4e  d,.all CREATE IN
3fe0: 44 45 58 20 73 74 61 74 65 6d 65 6e 74 73 0a 61  DEX statements.a
3ff0: 72 65 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  re read from the
4000: 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65   <b>sqlite_maste
4010: 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61 6e 64 20  r</b> table and 
4020: 75 73 65 64 20 74 6f 20 72 65 67 65 6e 65 72 61  used to regenera
4030: 74 65 0a 53 51 4c 69 74 65 27 73 20 69 6e 74 65  te.SQLite's inte
4040: 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74  rnal representat
4050: 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 64 65 78  ion of the index
4060: 20 6c 61 79 6f 75 74 2e 3c 2f 70 3e 0a 0a 3c 70   layout.</p>..<p
4070: 3e 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c  >If the optional
4080: 20 49 46 20 4e 4f 54 20 45 58 49 53 54 53 20 63   IF NOT EXISTS c
4090: 6c 61 75 73 65 20 69 73 20 70 72 65 73 65 6e 74  lause is present
40a0: 20 61 6e 64 20 61 6e 6f 74 68 65 72 20 69 6e 64   and another ind
40b0: 65 78 0a 77 69 74 68 20 74 68 65 20 73 61 6d 65  ex.with the same
40c0: 20 6e 61 6d 65 20 61 6c 65 61 64 79 20 65 78 69   name aleady exi
40d0: 73 74 73 2c 20 74 68 65 6e 20 74 68 69 73 20 63  sts, then this c
40e0: 6f 6d 6d 61 6e 64 20 62 65 63 6f 6d 65 73 20 61  ommand becomes a
40f0: 20 6e 6f 2d 6f 70 2e 3c 2f 70 3e 0a 0a 3c 70 3e   no-op.</p>..<p>
4100: 49 6e 64 65 78 65 73 20 61 72 65 20 72 65 6d 6f  Indexes are remo
4110: 76 65 64 20 77 69 74 68 20 74 68 65 20 3c 61 20  ved with the <a 
4120: 68 72 65 66 3d 22 6c 61 6e 67 5f 64 72 6f 70 69  href="lang_dropi
4130: 6e 64 65 78 2e 68 74 6d 6c 22 3e 44 52 4f 50 20  ndex.html">DROP 
4140: 49 4e 44 45 58 3c 2f 61 3e 20 0a 63 6f 6d 6d 61  INDEX</a> .comma
4150: 6e 64 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a  nd.</p>...<tcl>.
4160: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4170: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4190: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
41b0: 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 54  ection {CREATE T
41c0: 41 42 4c 45 7d 20 7b 63 72 65 61 74 65 74 61 62  ABLE} {createtab
41d0: 6c 65 7d 20 7b 7b 43 52 45 41 54 45 20 54 41 42  le} {{CREATE TAB
41e0: 4c 45 7d 7d 0a 0a 53 79 6e 74 61 78 20 7b 73 71  LE}}..Syntax {sq
41f0: 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43 52 45  l-command} {.CRE
4200: 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45 4d 50  ATE [TEMP | TEMP
4210: 4f 52 41 52 59 5d 20 54 41 42 4c 45 20 5b 49 46  ORARY] TABLE [IF
4220: 20 4e 4f 54 20 45 58 49 53 54 53 5d 20 5b 3c 64   NOT EXISTS] [<d
4230: 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d  atabase-name> .]
4240: 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 28 0a   <table-name> (.
4250: 20 20 3c 63 6f 6c 75 6d 6e 2d 64 65 66 3e 20 5b    <column-def> [
4260: 2c 20 3c 63 6f 6c 75 6d 6e 2d 64 65 66 3e 5d 2a  , <column-def>]*
4270: 0a 20 20 5b 2c 20 3c 63 6f 6e 73 74 72 61 69 6e  .  [, <constrain
4280: 74 3e 5d 2a 0a 29 0a 7d 20 7b 73 71 6c 2d 63 6f  t>]*.).} {sql-co
4290: 6d 6d 61 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20  mmand} {.CREATE 
42a0: 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52  [TEMP | TEMPORAR
42b0: 59 5d 20 54 41 42 4c 45 20 5b 3c 64 61 74 61 62  Y] TABLE [<datab
42c0: 61 73 65 2d 6e 61 6d 65 3e 2e 5d 20 3c 74 61 62  ase-name>.] <tab
42d0: 6c 65 2d 6e 61 6d 65 3e 20 41 53 20 3c 73 65 6c  le-name> AS <sel
42e0: 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d  ect-statement>.}
42f0: 20 7b 63 6f 6c 75 6d 6e 2d 64 65 66 7d 20 7b 0a   {column-def} {.
4300: 3c 6e 61 6d 65 3e 20 5b 3c 74 79 70 65 3e 5d 20  <name> [<type>] 
4310: 5b 5b 43 4f 4e 53 54 52 41 49 4e 54 20 3c 6e 61  [[CONSTRAINT <na
4320: 6d 65 3e 5d 20 3c 63 6f 6c 75 6d 6e 2d 63 6f 6e  me>] <column-con
4330: 73 74 72 61 69 6e 74 3e 5d 2a 0a 7d 20 7b 74 79  straint>]*.} {ty
4340: 70 65 7d 20 7b 0a 3c 74 79 70 65 6e 61 6d 65 3e  pe} {.<typename>
4350: 20 7c 0a 3c 74 79 70 65 6e 61 6d 65 3e 20 28 20   |.<typename> ( 
4360: 3c 6e 75 6d 62 65 72 3e 20 29 20 7c 0a 3c 74 79  <number> ) |.<ty
4370: 70 65 6e 61 6d 65 3e 20 28 20 3c 6e 75 6d 62 65  pename> ( <numbe
4380: 72 3e 20 2c 20 3c 6e 75 6d 62 65 72 3e 20 29 0a  r> , <number> ).
4390: 7d 20 7b 63 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72  } {column-constr
43a0: 61 69 6e 74 7d 20 7b 0a 4e 4f 54 20 4e 55 4c 4c  aint} {.NOT NULL
43b0: 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61   [ <conflict-cla
43c0: 75 73 65 3e 20 5d 20 7c 0a 50 52 49 4d 41 52 59  use> ] |.PRIMARY
43d0: 20 4b 45 59 20 5b 3c 73 6f 72 74 2d 6f 72 64 65   KEY [<sort-orde
43e0: 72 3e 5d 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d  r>] [ <conflict-
43f0: 63 6c 61 75 73 65 3e 20 5d 20 5b 41 55 54 4f 49  clause> ] [AUTOI
4400: 4e 43 52 45 4d 45 4e 54 5d 20 7c 0a 55 4e 49 51  NCREMENT] |.UNIQ
4410: 55 45 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63  UE [ <conflict-c
4420: 6c 61 75 73 65 3e 20 5d 20 7c 0a 43 48 45 43 4b  lause> ] |.CHECK
4430: 20 28 20 3c 65 78 70 72 3e 20 29 20 7c 0a 44 45   ( <expr> ) |.DE
4440: 46 41 55 4c 54 20 3c 76 61 6c 75 65 3e 20 7c 0a  FAULT <value> |.
4450: 43 4f 4c 4c 41 54 45 20 3c 63 6f 6c 6c 61 74 69  COLLATE <collati
4460: 6f 6e 2d 6e 61 6d 65 3e 0a 7d 20 7b 63 6f 6e 73  on-name>.} {cons
4470: 74 72 61 69 6e 74 7d 20 7b 0a 50 52 49 4d 41 52  traint} {.PRIMAR
4480: 59 20 4b 45 59 20 28 20 3c 63 6f 6c 75 6d 6e 2d  Y KEY ( <column-
4490: 6c 69 73 74 3e 20 29 20 5b 20 3c 63 6f 6e 66 6c  list> ) [ <confl
44a0: 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a  ict-clause> ] |.
44b0: 55 4e 49 51 55 45 20 28 20 3c 63 6f 6c 75 6d 6e  UNIQUE ( <column
44c0: 2d 6c 69 73 74 3e 20 29 20 5b 20 3c 63 6f 6e 66  -list> ) [ <conf
44d0: 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c  lict-clause> ] |
44e0: 0a 43 48 45 43 4b 20 28 20 3c 65 78 70 72 3e 20  .CHECK ( <expr> 
44f0: 29 0a 7d 20 7b 63 6f 6e 66 6c 69 63 74 2d 63 6c  ).} {conflict-cl
4500: 61 75 73 65 7d 20 7b 0a 4f 4e 20 43 4f 4e 46 4c  ause} {.ON CONFL
4510: 49 43 54 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c  ICT <conflict-al
4520: 67 6f 72 69 74 68 6d 3e 0a 7d 0a 3c 2f 74 63 6c  gorithm>.}.</tcl
4530: 3e 0a 0a 3c 70 3e 41 20 43 52 45 41 54 45 20 54  >..<p>A CREATE T
4540: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69  ABLE statement i
4550: 73 20 62 61 73 69 63 61 6c 6c 79 20 74 68 65 20  s basically the 
4560: 6b 65 79 77 6f 72 64 73 20 22 43 52 45 41 54 45  keywords "CREATE
4570: 20 54 41 42 4c 45 22 0a 66 6f 6c 6c 6f 77 65 64   TABLE".followed
4580: 20 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   by the name of 
4590: 61 20 6e 65 77 20 74 61 62 6c 65 20 61 6e 64 20  a new table and 
45a0: 61 20 70 61 72 65 6e 74 68 65 73 69 7a 65 64 20  a parenthesized 
45b0: 6c 69 73 74 20 6f 66 20 63 6f 6c 75 6d 6e 0a 64  list of column.d
45c0: 65 66 69 6e 69 74 69 6f 6e 73 20 61 6e 64 20 63  efinitions and c
45d0: 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20 54 68 65  onstraints.  The
45e0: 20 74 61 62 6c 65 20 6e 61 6d 65 20 63 61 6e 20   table name can 
45f0: 62 65 20 65 69 74 68 65 72 20 61 6e 20 69 64 65  be either an ide
4600: 6e 74 69 66 69 65 72 0a 6f 72 20 61 20 73 74 72  ntifier.or a str
4610: 69 6e 67 2e 20 20 54 61 62 6c 65 73 20 6e 61 6d  ing.  Tables nam
4620: 65 73 20 74 68 61 74 20 62 65 67 69 6e 20 77 69  es that begin wi
4630: 74 68 20 22 3c 62 3e 73 71 6c 69 74 65 5f 3c 2f  th "<b>sqlite_</
4640: 62 3e 22 20 61 72 65 20 72 65 73 65 72 76 65 64  b>" are reserved
4650: 0a 66 6f 72 20 75 73 65 20 62 79 20 74 68 65 20  .for use by the 
4660: 65 6e 67 69 6e 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  engine.</p>..<p>
4670: 45 61 63 68 20 63 6f 6c 75 6d 6e 20 64 65 66 69  Each column defi
4680: 6e 69 74 69 6f 6e 20 69 73 20 74 68 65 20 6e 61  nition is the na
4690: 6d 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e  me of the column
46a0: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 68 65   followed by the
46b0: 0a 64 61 74 61 74 79 70 65 20 66 6f 72 20 74 68  .datatype for th
46c0: 61 74 20 63 6f 6c 75 6d 6e 2c 20 74 68 65 6e 20  at column, then 
46d0: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 70 74 69  one or more opti
46e0: 6f 6e 61 6c 20 63 6f 6c 75 6d 6e 20 63 6f 6e 73  onal column cons
46f0: 74 72 61 69 6e 74 73 2e 0a 54 68 65 20 64 61 74  traints..The dat
4700: 61 74 79 70 65 20 66 6f 72 20 74 68 65 20 63 6f  atype for the co
4710: 6c 75 6d 6e 20 64 6f 65 73 20 6e 6f 74 20 72 65  lumn does not re
4720: 73 74 72 69 63 74 20 77 68 61 74 20 64 61 74 61  strict what data
4730: 20 6d 61 79 20 62 65 20 70 75 74 0a 69 6e 20 74   may be put.in t
4740: 68 61 74 20 63 6f 6c 75 6d 6e 2e 0a 53 65 65 20  hat column..See 
4750: 3c 61 20 68 72 65 66 3d 22 64 61 74 61 74 79 70  <a href="datatyp
4760: 65 33 2e 68 74 6d 6c 22 3e 44 61 74 61 74 79 70  e3.html">Datatyp
4770: 65 73 20 49 6e 20 53 51 4c 69 74 65 20 56 65 72  es In SQLite Ver
4780: 73 69 6f 6e 20 33 3c 2f 61 3e 20 66 6f 72 0a 61  sion 3</a> for.a
4790: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
47a0: 61 74 69 6f 6e 2e 0a 54 68 65 20 55 4e 49 51 55  ation..The UNIQU
47b0: 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 63 61 75  E constraint cau
47c0: 73 65 73 20 61 6e 20 69 6e 64 65 78 20 74 6f 20  ses an index to 
47d0: 62 65 20 63 72 65 61 74 65 64 20 6f 6e 20 74 68  be created on th
47e0: 65 20 73 70 65 63 69 66 69 65 64 0a 63 6f 6c 75  e specified.colu
47f0: 6d 6e 73 2e 20 20 54 68 69 73 20 69 6e 64 65 78  mns.  This index
4800: 20 6d 75 73 74 20 63 6f 6e 74 61 69 6e 20 75 6e   must contain un
4810: 69 71 75 65 20 6b 65 79 73 2e 0a 54 68 65 20 43  ique keys..The C
4820: 4f 4c 4c 41 54 45 20 63 6c 61 75 73 65 20 73 70  OLLATE clause sp
4830: 65 63 69 66 69 65 73 20 77 68 61 74 20 74 65 78  ecifies what tex
4840: 74 20 3c 61 20 68 72 65 66 3d 22 64 61 74 61 74  t <a href="datat
4850: 79 70 65 33 2e 68 74 6d 6c 23 63 6f 6c 6c 61 74  ype3.html#collat
4860: 69 6f 6e 22 3e 0a 63 6f 6c 6c 61 74 69 6e 67 20  ion">.collating 
4870: 66 75 6e 63 74 69 6f 6e 3c 2f 61 3e 20 74 6f 20  function</a> to 
4880: 75 73 65 20 77 68 65 6e 20 63 6f 6d 70 61 72 69  use when compari
4890: 6e 67 20 74 65 78 74 20 65 6e 74 72 69 65 73 20  ng text entries 
48a0: 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 2e 20  for the column. 
48b0: 20 0a 54 68 65 20 62 75 69 6c 74 2d 69 6e 20 42   .The built-in B
48c0: 49 4e 41 52 59 20 63 6f 6c 6c 61 74 69 6e 67 20  INARY collating 
48d0: 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64  function is used
48e0: 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 3c 70 3e   by default..<p>
48f0: 0a 54 68 65 20 44 45 46 41 55 4c 54 20 63 6f 6e  .The DEFAULT con
4900: 73 74 72 61 69 6e 74 20 73 70 65 63 69 66 69 65  straint specifie
4910: 73 20 61 20 64 65 66 61 75 6c 74 20 76 61 6c 75  s a default valu
4920: 65 20 74 6f 20 75 73 65 20 77 68 65 6e 20 64 6f  e to use when do
4930: 69 6e 67 20 61 6e 20 49 4e 53 45 52 54 2e 0a 54  ing an INSERT..T
4940: 68 65 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20  he value may be 
4950: 4e 55 4c 4c 2c 20 61 20 73 74 72 69 6e 67 20 63  NULL, a string c
4960: 6f 6e 73 74 61 6e 74 20 6f 72 20 61 20 6e 75 6d  onstant or a num
4970: 62 65 72 2e 20 53 74 61 72 74 69 6e 67 20 77 69  ber. Starting wi
4980: 74 68 20 76 65 72 73 69 6f 6e 0a 33 2e 31 2e 30  th version.3.1.0
4990: 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  , the default va
49a0: 6c 75 65 20 6d 61 79 20 61 6c 73 6f 20 62 65 20  lue may also be 
49b0: 6f 6e 65 20 6f 66 20 74 68 65 20 73 70 65 63 69  one of the speci
49c0: 61 6c 20 63 61 73 65 2d 69 6e 64 65 70 65 6e 64  al case-independ
49d0: 61 6e 74 0a 6b 65 79 77 6f 72 64 73 20 43 55 52  ant.keywords CUR
49e0: 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45  RENT_TIME, CURRE
49f0: 4e 54 5f 44 41 54 45 20 6f 72 20 43 55 52 52 45  NT_DATE or CURRE
4a00: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2e 20 49 66  NT_TIMESTAMP. If
4a10: 20 74 68 65 20 76 61 6c 75 65 20 69 73 0a 4e 55   the value is.NU
4a20: 4c 4c 2c 20 61 20 73 74 72 69 6e 67 20 63 6f 6e  LL, a string con
4a30: 73 74 61 6e 74 20 6f 72 20 6e 75 6d 62 65 72 2c  stant or number,
4a40: 20 69 74 20 69 73 20 6c 69 74 65 72 61 6c 6c 79   it is literally
4a50: 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 20 74   inserted into t
4a60: 68 65 20 63 6f 6c 75 6d 6e 0a 77 68 65 6e 65 76  he column.whenev
4a70: 65 72 20 61 6e 20 49 4e 53 45 52 54 20 73 74 61  er an INSERT sta
4a80: 74 65 6d 65 6e 74 20 74 68 61 74 20 64 6f 65 73  tement that does
4a90: 20 6e 6f 74 20 73 70 65 63 69 66 79 20 61 20 76   not specify a v
4aa0: 61 6c 75 65 20 66 6f 72 20 74 68 65 20 63 6f 6c  alue for the col
4ab0: 75 6d 6e 20 69 73 0a 65 78 65 63 75 74 65 64 2e  umn is.executed.
4ac0: 20 49 66 20 74 68 65 20 76 61 6c 75 65 20 69 73   If the value is
4ad0: 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43   CURRENT_TIME, C
4ae0: 55 52 52 45 4e 54 5f 44 41 54 45 20 6f 72 20 43  URRENT_DATE or C
4af0: 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50  URRENT_TIMESTAMP
4b00: 2c 20 74 68 65 6e 0a 74 68 65 20 63 75 72 72 65  , then.the curre
4b10: 6e 74 20 55 54 43 20 64 61 74 65 20 61 6e 64 2f  nt UTC date and/
4b20: 6f 72 20 74 69 6d 65 20 69 73 20 69 6e 73 65 72  or time is inser
4b30: 74 65 64 20 69 6e 74 6f 20 74 68 65 20 63 6f 6c  ted into the col
4b40: 75 6d 6e 73 2e 20 46 6f 72 0a 43 55 52 52 45 4e  umns. For.CURREN
4b50: 54 5f 54 49 4d 45 2c 20 74 68 65 20 66 6f 72 6d  T_TIME, the form
4b60: 61 74 20 69 73 20 48 48 3a 4d 4d 3a 53 53 2e 20  at is HH:MM:SS. 
4b70: 46 6f 72 20 43 55 52 52 45 4e 54 5f 44 41 54 45  For CURRENT_DATE
4b80: 2c 20 59 59 59 59 2d 4d 4d 2d 44 44 2e 20 54 68  , YYYY-MM-DD. Th
4b90: 65 20 66 6f 72 6d 61 74 0a 66 6f 72 20 43 55 52  e format.for CUR
4ba0: 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 69  RENT_TIMESTAMP i
4bb0: 73 20 22 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48  s "YYYY-MM-DD HH
4bc0: 3a 4d 4d 3a 53 53 22 2e 0a 3c 2f 70 3e 0a 0a 3c  :MM:SS"..</p>..<
4bd0: 70 3e 53 70 65 63 69 66 79 69 6e 67 20 61 20 50  p>Specifying a P
4be0: 52 49 4d 41 52 59 20 4b 45 59 20 6e 6f 72 6d 61  RIMARY KEY norma
4bf0: 6c 6c 79 20 6a 75 73 74 20 63 72 65 61 74 65 73  lly just creates
4c00: 20 61 20 55 4e 49 51 55 45 20 69 6e 64 65 78 0a   a UNIQUE index.
4c10: 6f 6e 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e  on the correspon
4c20: 64 69 6e 67 20 63 6f 6c 75 6d 6e 73 2e 20 20 48  ding columns.  H
4c30: 6f 77 65 76 65 72 2c 20 69 66 20 70 72 69 6d 61  owever, if prima
4c40: 72 79 20 6b 65 79 20 69 73 20 6f 6e 20 61 20 73  ry key is on a s
4c50: 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 0a 74 68 61  ingle column.tha
4c60: 74 20 68 61 73 20 64 61 74 61 74 79 70 65 20 49  t has datatype I
4c70: 4e 54 45 47 45 52 2c 20 74 68 65 6e 20 74 68 61  NTEGER, then tha
4c80: 74 20 63 6f 6c 75 6d 6e 20 69 73 20 75 73 65 64  t column is used
4c90: 20 69 6e 74 65 72 6e 61 6c 6c 79 0a 61 73 20 74   internally.as t
4ca0: 68 65 20 61 63 74 75 61 6c 20 6b 65 79 20 6f 66  he actual key of
4cb0: 20 74 68 65 20 42 2d 54 72 65 65 20 66 6f 72 20   the B-Tree for 
4cc0: 74 68 65 20 74 61 62 6c 65 2e 20 20 54 68 69 73  the table.  This
4cd0: 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20   means that the 
4ce0: 63 6f 6c 75 6d 6e 0a 6d 61 79 20 6f 6e 6c 79 20  column.may only 
4cf0: 68 6f 6c 64 20 75 6e 69 71 75 65 20 69 6e 74 65  hold unique inte
4d00: 67 65 72 20 76 61 6c 75 65 73 2e 20 20 28 45 78  ger values.  (Ex
4d10: 63 65 70 74 20 66 6f 72 20 74 68 69 73 20 6f 6e  cept for this on
4d20: 65 20 63 61 73 65 2c 0a 53 51 4c 69 74 65 20 69  e case,.SQLite i
4d30: 67 6e 6f 72 65 73 20 74 68 65 20 64 61 74 61 74  gnores the datat
4d40: 79 70 65 20 73 70 65 63 69 66 69 63 61 74 69 6f  ype specificatio
4d50: 6e 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 61 6e 64  n of columns and
4d60: 20 61 6c 6c 6f 77 73 0a 61 6e 79 20 6b 69 6e 64   allows.any kind
4d70: 20 6f 66 20 64 61 74 61 20 74 6f 20 62 65 20 70   of data to be p
4d80: 75 74 20 69 6e 20 61 20 63 6f 6c 75 6d 6e 20 72  ut in a column r
4d90: 65 67 61 72 64 6c 65 73 73 20 6f 66 20 69 74 73  egardless of its
4da0: 20 64 65 63 6c 61 72 65 64 0a 64 61 74 61 74 79   declared.dataty
4db0: 70 65 2e 29 20 20 49 66 20 61 20 74 61 62 6c 65  pe.)  If a table
4dc0: 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 61   does not have a
4dd0: 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  n INTEGER PRIMAR
4de0: 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 2c 0a 74 68  Y KEY column,.th
4df0: 65 6e 20 74 68 65 20 42 2d 54 72 65 65 20 6b 65  en the B-Tree ke
4e00: 79 20 77 69 6c 6c 20 62 65 20 61 20 61 75 74 6f  y will be a auto
4e10: 6d 61 74 69 63 61 6c 6c 79 20 67 65 6e 65 72 61  matically genera
4e20: 74 65 64 20 69 6e 74 65 67 65 72 2e 0a 3c 61 20  ted integer..<a 
4e30: 6e 61 6d 65 3d 22 72 6f 77 69 64 22 3e 3c 2f 61  name="rowid"></a
4e40: 3e 20 54 68 65 0a 42 2d 54 72 65 65 20 6b 65 79  > The.B-Tree key
4e50: 20 66 6f 72 20 61 20 72 6f 77 20 63 61 6e 20 61   for a row can a
4e60: 6c 77 61 79 73 20 62 65 20 61 63 63 65 73 73 65  lways be accesse
4e70: 64 20 75 73 69 6e 67 20 6f 6e 65 20 6f 66 20 74  d using one of t
4e80: 68 65 0a 73 70 65 63 69 61 6c 20 6e 61 6d 65 73  he.special names
4e90: 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c   "<b>ROWID</b>",
4ea0: 20 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f   "<b>OID</b>", o
4eb0: 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62  r "<b>_ROWID_</b
4ec0: 3e 22 2e 0a 54 68 69 73 20 69 73 20 74 72 75 65  >"..This is true
4ed0: 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77   regardless of w
4ee0: 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68  hether or not th
4ef0: 65 72 65 20 69 73 20 61 6e 20 49 4e 54 45 47 45  ere is an INTEGE
4f00: 52 0a 50 52 49 4d 41 52 59 20 4b 45 59 2e 20 20  R.PRIMARY KEY.  
4f10: 41 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41  An INTEGER PRIMA
4f20: 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20 63 61  RY KEY column ca
4f30: 6e 20 61 6c 73 6f 20 69 6e 63 6c 75 64 65 20 74  n also include t
4f40: 68 65 0a 6b 65 79 77 6f 72 64 20 41 55 54 4f 49  he.keyword AUTOI
4f50: 4e 43 52 45 4d 45 4e 54 2e 20 20 54 68 65 20 41  NCREMENT.  The A
4f60: 55 54 4f 49 4e 43 52 45 4d 45 4e 54 20 6b 65 79  UTOINCREMENT key
4f70: 77 6f 72 64 20 6d 6f 64 69 66 69 65 64 20 74 68  word modified th
4f80: 65 20 77 61 79 0a 74 68 61 74 20 42 2d 54 72 65  e way.that B-Tre
4f90: 65 20 6b 65 79 73 20 61 72 65 20 61 75 74 6f 6d  e keys are autom
4fa0: 61 74 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74  atically generat
4fb0: 65 64 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c 20  ed.  Additional 
4fc0: 64 65 74 61 69 6c 0a 6f 6e 20 61 75 74 6f 6d 61  detail.on automa
4fd0: 74 69 63 20 42 2d 54 72 65 65 20 6b 65 79 20 67  tic B-Tree key g
4fe0: 65 6e 65 72 61 74 69 6f 6e 20 69 73 20 61 76 61  eneration is ava
4ff0: 69 6c 61 62 6c 65 0a 3c 61 20 68 72 65 66 3d 22  ilable.<a href="
5000: 61 75 74 6f 69 6e 63 2e 68 74 6d 6c 22 3e 73 65  autoinc.html">se
5010: 70 61 72 61 74 65 6c 79 3c 2f 61 3e 2e 3c 2f 70  parately</a>.</p
5020: 3e 0a 0a 3c 70 3e 41 63 63 6f 72 64 69 6e 67 20  >..<p>According 
5030: 74 6f 20 74 68 65 20 53 51 4c 20 73 74 61 6e 64  to the SQL stand
5040: 61 72 64 2c 20 50 52 49 4d 41 52 59 20 4b 45 59  ard, PRIMARY KEY
5050: 20 73 68 6f 75 6c 64 20 69 6d 70 6c 79 20 4e 4f   should imply NO
5060: 54 20 4e 55 4c 4c 2e 0a 55 6e 66 6f 72 74 75 6e  T NULL..Unfortun
5070: 61 74 65 6c 79 2c 20 64 75 65 20 74 6f 20 61 20  ately, due to a 
5080: 6c 6f 6e 67 2d 73 74 61 6e 64 69 6e 67 20 63 6f  long-standing co
5090: 64 69 6e 67 20 6f 76 65 72 73 69 67 68 74 2c 20  ding oversight, 
50a0: 74 68 69 73 20 69 73 20 6e 6f 74 20 0a 74 68 65  this is not .the
50b0: 20 63 61 73 65 20 69 6e 20 53 51 4c 69 74 65 2e   case in SQLite.
50c0: 20 20 53 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20    SQLite allows 
50d0: 4e 55 4c 4c 20 76 61 6c 75 65 73 0a 69 6e 20 61  NULL values.in a
50e0: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c   PRIMARY KEY col
50f0: 75 6d 6e 2e 20 20 57 65 20 63 6f 75 6c 64 20 63  umn.  We could c
5100: 68 61 6e 67 65 20 53 51 4c 69 74 65 20 74 6f 20  hange SQLite to 
5110: 63 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 65 0a 73  conform to the.s
5120: 74 61 6e 64 61 72 64 20 28 61 6e 64 20 77 65 20  tandard (and we 
5130: 6d 69 67 68 74 20 64 6f 20 73 6f 20 69 6e 20 74  might do so in t
5140: 68 65 20 66 75 74 75 72 65 29 2c 20 62 75 74 20  he future), but 
5150: 62 79 20 74 68 65 20 74 69 6d 65 20 74 68 65 0a  by the time the.
5160: 6f 76 65 72 73 69 67 68 74 20 77 61 73 20 64 69  oversight was di
5170: 73 63 6f 76 65 72 65 64 2c 20 53 51 4c 69 74 65  scovered, SQLite
5180: 20 77 61 73 20 69 6e 20 73 75 63 68 20 77 69 64   was in such wid
5190: 65 20 75 73 65 20 74 68 61 74 20 77 65 20 66 65  e use that we fe
51a0: 61 72 65 64 0a 62 72 65 61 6b 69 6e 67 20 6c 65  ared.breaking le
51b0: 67 61 63 79 20 63 6f 64 65 20 69 66 20 77 65 20  gacy code if we 
51c0: 66 69 78 65 64 20 74 68 65 20 70 72 6f 62 6c 65  fixed the proble
51d0: 6d 2e 20 20 53 6f 20 66 6f 72 20 6e 6f 77 20 77  m.  So for now w
51e0: 65 20 68 61 76 65 0a 63 68 6f 73 65 6e 20 74 6f  e have.chosen to
51f0: 20 63 6f 6e 74 69 6e 75 65 20 61 6c 6c 6f 77 69   continue allowi
5200: 6e 67 20 4e 55 4c 4c 73 20 69 6e 20 50 52 49 4d  ng NULLs in PRIM
5210: 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 73 2e  ARY KEY columns.
5220: 0a 44 65 76 65 6c 6f 70 65 72 73 20 73 68 6f 75  .Developers shou
5230: 6c 64 20 62 65 20 61 77 61 72 65 2c 20 68 6f 77  ld be aware, how
5240: 65 76 65 72 2c 20 74 68 61 74 20 77 65 20 6d 61  ever, that we ma
5250: 79 20 63 68 61 6e 67 65 20 53 51 4c 69 74 65 20  y change SQLite 
5260: 74 6f 0a 63 6f 6e 66 6f 72 6d 20 74 6f 20 74 68  to.conform to th
5270: 65 20 53 51 4c 20 73 74 61 6e 64 61 72 64 20 69  e SQL standard i
5280: 6e 20 66 75 74 75 72 65 20 61 6e 64 20 73 68 6f  n future and sho
5290: 75 6c 64 20 64 65 73 69 67 6e 20 6e 65 77 20 70  uld design new p
52a0: 72 6f 67 72 61 6d 73 0a 61 63 63 6f 72 64 69 6e  rograms.accordin
52b0: 67 6c 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  gly.</p>..<p>If 
52c0: 74 68 65 20 22 54 45 4d 50 22 20 6f 72 20 22 54  the "TEMP" or "T
52d0: 45 4d 50 4f 52 41 52 59 22 20 6b 65 79 77 6f 72  EMPORARY" keywor
52e0: 64 20 6f 63 63 75 72 73 20 69 6e 20 62 65 74 77  d occurs in betw
52f0: 65 65 6e 20 22 43 52 45 41 54 45 22 0a 61 6e 64  een "CREATE".and
5300: 20 22 54 41 42 4c 45 22 20 74 68 65 6e 20 74 68   "TABLE" then th
5310: 65 20 74 61 62 6c 65 20 74 68 61 74 20 69 73 20  e table that is 
5320: 63 72 65 61 74 65 64 20 69 73 20 6f 6e 6c 79 20  created is only 
5330: 76 69 73 69 62 6c 65 0a 77 69 74 68 69 6e 20 74  visible.within t
5340: 68 61 74 20 73 61 6d 65 20 64 61 74 61 62 61 73  hat same databas
5350: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 61 6e 64  e connection.and
5360: 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   is automaticall
5370: 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e 0a 74  y deleted when.t
5380: 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  he database conn
5390: 65 63 74 69 6f 6e 20 69 73 20 63 6c 6f 73 65 64  ection is closed
53a0: 2e 20 20 41 6e 79 20 69 6e 64 69 63 65 73 20 63  .  Any indices c
53b0: 72 65 61 74 65 64 20 6f 6e 20 61 20 74 65 6d 70  reated on a temp
53c0: 6f 72 61 72 79 20 74 61 62 6c 65 0a 61 72 65 20  orary table.are 
53d0: 61 6c 73 6f 20 74 65 6d 70 6f 72 61 72 79 2e 20  also temporary. 
53e0: 20 54 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65   Temporary table
53f0: 73 20 61 6e 64 20 69 6e 64 69 63 65 73 20 61 72  s and indices ar
5400: 65 20 73 74 6f 72 65 64 20 69 6e 20 61 0a 73 65  e stored in a.se
5410: 70 61 72 61 74 65 20 66 69 6c 65 20 64 69 73 74  parate file dist
5420: 69 6e 63 74 20 66 72 6f 6d 20 74 68 65 20 6d 61  inct from the ma
5430: 69 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  in database file
5440: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 49 66 20 61 20  .</p>..<p> If a 
5450: 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d  &lt;database-nam
5460: 65 26 67 74 3b 20 69 73 20 73 70 65 63 69 66 69  e&gt; is specifi
5470: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 74 61 62  ed, then the tab
5480: 6c 65 20 69 73 20 63 72 65 61 74 65 64 20 69 6e  le is created in
5490: 20 0a 74 68 65 20 6e 61 6d 65 64 20 64 61 74 61   .the named data
54a0: 62 61 73 65 2e 20 49 74 20 69 73 20 61 6e 20 65  base. It is an e
54b0: 72 72 6f 72 20 74 6f 20 73 70 65 63 69 66 79 20  rror to specify 
54c0: 62 6f 74 68 20 61 20 26 6c 74 3b 64 61 74 61 62  both a &lt;datab
54d0: 61 73 65 2d 6e 61 6d 65 26 67 74 3b 0a 61 6e 64  ase-name&gt;.and
54e0: 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77 6f 72   the TEMP keywor
54f0: 64 2c 20 75 6e 6c 65 73 73 20 74 68 65 20 26 6c  d, unless the &l
5500: 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26  t;database-name&
5510: 67 74 3b 20 69 73 20 22 74 65 6d 70 22 2e 20 49  gt; is "temp". I
5520: 66 20 6e 6f 0a 64 61 74 61 62 61 73 65 20 6e 61  f no.database na
5530: 6d 65 20 69 73 20 73 70 65 63 69 66 69 65 64 2c  me is specified,
5540: 20 61 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65   and the TEMP ke
5550: 79 77 6f 72 64 20 69 73 20 6e 6f 74 20 70 72 65  yword is not pre
5560: 73 65 6e 74 2c 0a 74 68 65 20 74 61 62 6c 65 20  sent,.the table 
5570: 69 73 20 63 72 65 61 74 65 64 20 69 6e 20 74 68  is created in th
5580: 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2e  e main database.
5590: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74  </p>..<p>The opt
55a0: 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63  ional conflict-c
55b0: 6c 61 75 73 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  lause following 
55c0: 65 61 63 68 20 63 6f 6e 73 74 72 61 69 6e 74 0a  each constraint.
55d0: 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69  allows the speci
55e0: 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61  fication of an a
55f0: 6c 74 65 72 6e 61 74 69 76 65 20 64 65 66 61 75  lternative defau
5600: 6c 74 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  lt.constraint co
5610: 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
5620: 6e 20 61 6c 67 6f 72 69 74 68 6d 20 66 6f 72 20  n algorithm for 
5630: 74 68 61 74 20 63 6f 6e 73 74 72 61 69 6e 74 2e  that constraint.
5640: 0a 54 68 65 20 64 65 66 61 75 6c 74 20 69 73 20  .The default is 
5650: 61 62 6f 72 74 20 41 42 4f 52 54 2e 20 20 44 69  abort ABORT.  Di
5660: 66 66 65 72 65 6e 74 20 63 6f 6e 73 74 72 61 69  fferent constrai
5670: 6e 74 73 20 77 69 74 68 69 6e 20 74 68 65 20 73  nts within the s
5680: 61 6d 65 0a 74 61 62 6c 65 20 6d 61 79 20 68 61  ame.table may ha
5690: 76 65 20 64 69 66 66 65 72 65 6e 74 20 64 65 66  ve different def
56a0: 61 75 6c 74 20 63 6f 6e 66 6c 69 63 74 20 72 65  ault conflict re
56b0: 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
56c0: 68 6d 73 2e 0a 49 66 20 61 6e 20 43 4f 50 59 2c  hms..If an COPY,
56d0: 20 49 4e 53 45 52 54 2c 20 6f 72 20 55 50 44 41   INSERT, or UPDA
56e0: 54 45 20 63 6f 6d 6d 61 6e 64 20 73 70 65 63 69  TE command speci
56f0: 66 69 65 73 20 61 20 64 69 66 66 65 72 65 6e 74  fies a different
5700: 20 63 6f 6e 66 6c 69 63 74 0a 72 65 73 6f 6c 75   conflict.resolu
5710: 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2c 20  tion algorithm, 
5720: 74 68 65 6e 20 74 68 61 74 20 61 6c 67 6f 72 69  then that algori
5730: 74 68 6d 20 69 73 20 75 73 65 64 20 69 6e 20 70  thm is used in p
5740: 6c 61 63 65 20 6f 66 20 74 68 65 0a 64 65 66 61  lace of the.defa
5750: 75 6c 74 20 61 6c 67 6f 72 69 74 68 6d 20 73 70  ult algorithm sp
5760: 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 43  ecified in the C
5770: 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74  REATE TABLE stat
5780: 65 6d 65 6e 74 2e 0a 53 65 65 20 74 68 65 20 73  ement..See the s
5790: 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61  ection titled.<a
57a0: 20 68 72 65 66 3d 22 6c 61 6e 67 5f 63 6f 6e 66   href="lang_conf
57b0: 6c 69 63 74 2e 68 74 6d 6c 22 3e 4f 4e 20 43 4f  lict.html">ON CO
57c0: 4e 46 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61  NFLICT</a> for a
57d0: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
57e0: 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 43  ation.</p>..<p>C
57f0: 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73  HECK constraints
5800: 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 20 61   are supported a
5810: 73 20 6f 66 20 76 65 72 73 69 6f 6e 20 33 2e 33  s of version 3.3
5820: 2e 30 2e 20 20 50 72 69 6f 72 0a 74 6f 20 76 65  .0.  Prior.to ve
5830: 72 73 69 6f 6e 20 33 2e 33 2e 30 2c 20 43 48 45  rsion 3.3.0, CHE
5840: 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 77  CK constraints w
5850: 65 72 65 20 70 61 72 73 65 64 20 62 75 74 20 6e  ere parsed but n
5860: 6f 74 20 65 6e 66 6f 72 63 65 64 2e 3c 2f 70 3e  ot enforced.</p>
5870: 0a 0a 3c 70 3e 54 68 65 20 6e 75 6d 62 65 72 20  ..<p>The number 
5880: 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 61 20  of columns in a 
5890: 74 61 62 6c 65 20 69 73 20 6c 69 6d 69 74 65 64  table is limited
58a0: 20 62 79 20 74 68 65 0a 5b 53 51 4c 49 54 45 5f   by the.[SQLITE_
58b0: 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 20 63 6f 6d 70  MAX_COLUMN] comp
58c0: 69 6c 65 2d 74 69 6d 65 20 70 61 72 61 6d 65 74  ile-time paramet
58d0: 65 72 2e 0a 41 20 73 69 6e 67 6c 65 20 72 6f 77  er..A single row
58e0: 20 6f 66 20 61 20 74 61 62 6c 65 20 63 61 6e 6e   of a table cann
58f0: 6f 74 20 73 74 6f 72 65 20 6d 6f 72 65 20 74 68  ot store more th
5900: 61 6e 0a 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4c  an.[SQLITE_MAX_L
5910: 45 4e 47 54 48 5d 20 62 79 74 65 73 20 6f 66 20  ENGTH] bytes of 
5920: 64 61 74 61 2e 0a 42 6f 74 68 20 6f 66 20 74 68  data..Both of th
5930: 65 73 65 20 6c 69 6d 69 74 73 20 63 61 6e 20 62  ese limits can b
5940: 65 20 6c 6f 77 65 72 65 64 20 61 74 20 72 75 6e  e lowered at run
5950: 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65 0a 5b  time using the.[
5960: 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d  sqlite3_limit()]
5970: 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61 63 65   C/C++ interface
5980: 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 54 68 65 20 43  .</p>...<p>The C
5990: 52 45 41 54 45 20 54 41 42 4c 45 20 41 53 20 66  REATE TABLE AS f
59a0: 6f 72 6d 20 64 65 66 69 6e 65 73 20 74 68 65 20  orm defines the 
59b0: 74 61 62 6c 65 20 74 6f 20 62 65 0a 74 68 65 20  table to be.the 
59c0: 72 65 73 75 6c 74 20 73 65 74 20 6f 66 20 61 20  result set of a 
59d0: 71 75 65 72 79 2e 20 20 54 68 65 20 6e 61 6d 65  query.  The name
59e0: 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 63  s of the table c
59f0: 6f 6c 75 6d 6e 73 20 61 72 65 0a 74 68 65 20 6e  olumns are.the n
5a00: 61 6d 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75  ames of the colu
5a10: 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c  mns in the resul
5a20: 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 74  t.</p>..<p>The t
5a30: 65 78 74 0a 6f 66 20 65 61 63 68 20 43 52 45 41  ext.of each CREA
5a40: 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  TE TABLE stateme
5a50: 6e 74 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20  nt is stored in 
5a60: 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61  the <b>sqlite_ma
5a70: 73 74 65 72 3c 2f 62 3e 0a 74 61 62 6c 65 2e 20  ster</b>.table. 
5a80: 20 45 76 65 72 79 20 74 69 6d 65 20 74 68 65 20   Every time the 
5a90: 64 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e  database is open
5aa0: 65 64 2c 20 61 6c 6c 20 43 52 45 41 54 45 20 54  ed, all CREATE T
5ab0: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 73 0a  ABLE statements.
5ac0: 61 72 65 20 72 65 61 64 20 66 72 6f 6d 20 74 68  are read from th
5ad0: 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74  e <b>sqlite_mast
5ae0: 65 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61 6e 64  er</b> table and
5af0: 20 75 73 65 64 20 74 6f 20 72 65 67 65 6e 65 72   used to regener
5b00: 61 74 65 0a 53 51 4c 69 74 65 27 73 20 69 6e 74  ate.SQLite's int
5b10: 65 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61  ernal representa
5b20: 74 69 6f 6e 20 6f 66 20 74 68 65 20 74 61 62 6c  tion of the tabl
5b30: 65 20 6c 61 79 6f 75 74 2e 0a 49 66 20 74 68 65  e layout..If the
5b40: 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e   original comman
5b50: 64 20 77 61 73 20 61 20 43 52 45 41 54 45 20 54  d was a CREATE T
5b60: 41 42 4c 45 20 41 53 20 74 68 65 6e 20 74 68 65  ABLE AS then the
5b70: 6e 20 61 6e 20 65 71 75 69 76 61 6c 65 6e 74 0a  n an equivalent.
5b80: 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61  CREATE TABLE sta
5b90: 74 65 6d 65 6e 74 20 69 73 20 73 79 6e 74 68 65  tement is synthe
5ba0: 73 69 7a 65 64 20 61 6e 64 20 73 74 6f 72 65 20  sized and store 
5bb0: 69 6e 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73  in <b>sqlite_mas
5bc0: 74 65 72 3c 2f 62 3e 0a 69 6e 20 70 6c 61 63 65  ter</b>.in place
5bd0: 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c   of the original
5be0: 20 63 6f 6d 6d 61 6e 64 2e 0a 54 68 65 20 74 65   command..The te
5bf0: 78 74 20 6f 66 20 43 52 45 41 54 45 20 54 45 4d  xt of CREATE TEM
5c00: 50 4f 52 41 52 59 20 54 41 42 4c 45 20 73 74 61  PORARY TABLE sta
5c10: 74 65 6d 65 6e 74 73 20 61 72 65 20 73 74 6f 72  tements are stor
5c20: 65 64 20 69 6e 20 74 68 65 0a 3c 62 3e 73 71 6c  ed in the.<b>sql
5c30: 69 74 65 5f 74 65 6d 70 5f 6d 61 73 74 65 72 3c  ite_temp_master<
5c40: 2f 62 3e 20 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a  /b> table..</p>.
5c50: 0a 3c 70 3e 49 66 20 74 68 65 20 6f 70 74 69 6f  .<p>If the optio
5c60: 6e 61 6c 20 49 46 20 4e 4f 54 20 45 58 49 53 54  nal IF NOT EXIST
5c70: 53 20 63 6c 61 75 73 65 20 69 73 20 70 72 65 73  S clause is pres
5c80: 65 6e 74 20 61 6e 64 20 61 6e 6f 74 68 65 72 20  ent and another 
5c90: 74 61 62 6c 65 0a 77 69 74 68 20 74 68 65 20 73  table.with the s
5ca0: 61 6d 65 20 6e 61 6d 65 20 61 6c 65 61 64 79 20  ame name aleady 
5cb0: 65 78 69 73 74 73 2c 20 74 68 65 6e 20 74 68 69  exists, then thi
5cc0: 73 20 63 6f 6d 6d 61 6e 64 20 62 65 63 6f 6d 65  s command become
5cd0: 73 20 61 20 6e 6f 2d 6f 70 2e 3c 2f 70 3e 0a 0a  s a no-op.</p>..
5ce0: 3c 70 3e 54 61 62 6c 65 73 20 61 72 65 20 72 65  <p>Tables are re
5cf0: 6d 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65 20  moved using the 
5d00: 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 64 72  <a href="lang_dr
5d10: 6f 70 74 61 62 6c 65 2e 68 74 6d 6c 22 3e 44 52  optable.html">DR
5d20: 4f 50 20 54 41 42 4c 45 3c 2f 61 3e 20 0a 73 74  OP TABLE</a> .st
5d30: 61 74 65 6d 65 6e 74 2e 20 20 3c 2f 70 3e 0a 0a  atement.  </p>..
5d40: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
5d50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5d60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5d70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5d80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5d90: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43 52  ####.Section {CR
5da0: 45 41 54 45 20 54 52 49 47 47 45 52 7d 20 63 72  EATE TRIGGER} cr
5db0: 65 61 74 65 74 72 69 67 67 65 72 20 7b 7b 43 52  eatetrigger {{CR
5dc0: 45 41 54 45 20 54 52 49 47 47 45 52 7d 7d 0a 0a  EATE TRIGGER}}..
5dd0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
5de0: 65 6d 65 6e 74 7d 20 7b 0a 43 52 45 41 54 45 20  ement} {.CREATE 
5df0: 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52  [TEMP | TEMPORAR
5e00: 59 5d 20 54 52 49 47 47 45 52 20 5b 49 46 20 4e  Y] TRIGGER [IF N
5e10: 4f 54 20 45 58 49 53 54 53 5d 20 3c 74 72 69 67  OT EXISTS] <trig
5e20: 67 65 72 2d 6e 61 6d 65 3e 20 5b 20 42 45 46 4f  ger-name> [ BEFO
5e30: 52 45 20 7c 20 41 46 54 45 52 20 5d 0a 3c 64 61  RE | AFTER ].<da
5e40: 74 61 62 61 73 65 2d 65 76 65 6e 74 3e 20 4f 4e  tabase-event> ON
5e50: 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65   [<database-name
5e60: 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65  > .] <table-name
5e70: 3e 0a 3c 74 72 69 67 67 65 72 2d 61 63 74 69 6f  >.<trigger-actio
5e80: 6e 3e 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b 73 71  n>.}..Syntax {sq
5e90: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43  l-statement} {.C
5ea0: 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45  REATE [TEMP | TE
5eb0: 4d 50 4f 52 41 52 59 5d 20 54 52 49 47 47 45 52  MPORARY] TRIGGER
5ec0: 20 5b 49 46 20 4e 4f 54 20 45 58 49 53 54 53 5d   [IF NOT EXISTS]
5ed0: 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65 3e 20   <trigger-name> 
5ee0: 49 4e 53 54 45 41 44 20 4f 46 0a 3c 64 61 74 61  INSTEAD OF.<data
5ef0: 62 61 73 65 2d 65 76 65 6e 74 3e 20 4f 4e 20 5b  base-event> ON [
5f00: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
5f10: 2e 5d 20 3c 76 69 65 77 2d 6e 61 6d 65 3e 0a 3c  .] <view-name>.<
5f20: 74 72 69 67 67 65 72 2d 61 63 74 69 6f 6e 3e 0a  trigger-action>.
5f30: 7d 0a 0a 53 79 6e 74 61 78 20 7b 64 61 74 61 62  }..Syntax {datab
5f40: 61 73 65 2d 65 76 65 6e 74 7d 20 7b 0a 44 45 4c  ase-event} {.DEL
5f50: 45 54 45 20 7c 20 0a 49 4e 53 45 52 54 20 7c 20  ETE | .INSERT | 
5f60: 0a 55 50 44 41 54 45 20 7c 20 0a 55 50 44 41 54  .UPDATE | .UPDAT
5f70: 45 20 4f 46 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73  E OF <column-lis
5f80: 74 3e 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b 74 72  t>.}..Syntax {tr
5f90: 69 67 67 65 72 2d 61 63 74 69 6f 6e 7d 20 7b 0a  igger-action} {.
5fa0: 5b 20 46 4f 52 20 45 41 43 48 20 52 4f 57 20 5d  [ FOR EACH ROW ]
5fb0: 20 5b 20 57 48 45 4e 20 3c 65 78 70 72 65 73 73   [ WHEN <express
5fc0: 69 6f 6e 3e 20 5d 20 0a 42 45 47 49 4e 20 0a 20  ion> ] .BEGIN . 
5fd0: 20 3c 74 72 69 67 67 65 72 2d 73 74 65 70 3e 20   <trigger-step> 
5fe0: 3b 20 5b 20 3c 74 72 69 67 67 65 72 2d 73 74 65  ; [ <trigger-ste
5ff0: 70 3e 20 3b 20 5d 2a 0a 45 4e 44 0a 7d 0a 0a 53  p> ; ]*.END.}..S
6000: 79 6e 74 61 78 20 7b 74 72 69 67 67 65 72 2d 73  yntax {trigger-s
6010: 74 65 70 7d 20 7b 0a 3c 75 70 64 61 74 65 2d 73  tep} {.<update-s
6020: 74 61 74 65 6d 65 6e 74 3e 20 7c 20 3c 69 6e 73  tatement> | <ins
6030: 65 72 74 2d 73 74 61 74 65 6d 65 6e 74 3e 20 7c  ert-statement> |
6040: 20 0a 3c 64 65 6c 65 74 65 2d 73 74 61 74 65 6d   .<delete-statem
6050: 65 6e 74 3e 20 7c 20 3c 73 65 6c 65 63 74 2d 73  ent> | <select-s
6060: 74 61 74 65 6d 65 6e 74 3e 20 0a 7d 0a 3c 2f 74  tatement> .}.</t
6070: 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41  cl>..<p>The CREA
6080: 54 45 20 54 52 49 47 47 45 52 20 73 74 61 74 65  TE TRIGGER state
6090: 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20  ment is used to 
60a0: 61 64 64 20 74 72 69 67 67 65 72 73 20 74 6f 20  add triggers to 
60b0: 74 68 65 20 0a 64 61 74 61 62 61 73 65 20 73 63  the .database sc
60c0: 68 65 6d 61 2e 20 54 72 69 67 67 65 72 73 20 61  hema. Triggers a
60d0: 72 65 20 64 61 74 61 62 61 73 65 20 6f 70 65 72  re database oper
60e0: 61 74 69 6f 6e 73 20 28 74 68 65 20 3c 69 3e 74  ations (the <i>t
60f0: 72 69 67 67 65 72 2d 61 63 74 69 6f 6e 3c 2f 69  rigger-action</i
6100: 3e 29 20 0a 74 68 61 74 20 61 72 65 20 61 75 74  >) .that are aut
6110: 6f 6d 61 74 69 63 61 6c 6c 79 20 70 65 72 66 6f  omatically perfo
6120: 72 6d 65 64 20 77 68 65 6e 20 61 20 73 70 65 63  rmed when a spec
6130: 69 66 69 65 64 20 64 61 74 61 62 61 73 65 20 65  ified database e
6140: 76 65 6e 74 20 28 74 68 65 0a 3c 69 3e 64 61 74  vent (the.<i>dat
6150: 61 62 61 73 65 2d 65 76 65 6e 74 3c 2f 69 3e 29  abase-event</i>)
6160: 20 6f 63 63 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a   occurs.  </p>..
6170: 3c 70 3e 41 20 74 72 69 67 67 65 72 20 6d 61 79  <p>A trigger may
6180: 20 62 65 20 73 70 65 63 69 66 69 65 64 20 74 6f   be specified to
6190: 20 66 69 72 65 20 77 68 65 6e 65 76 65 72 20 61   fire whenever a
61a0: 20 44 45 4c 45 54 45 2c 20 49 4e 53 45 52 54 20   DELETE, INSERT 
61b0: 6f 72 20 55 50 44 41 54 45 20 6f 66 20 61 0a 70  or UPDATE of a.p
61c0: 61 72 74 69 63 75 6c 61 72 20 64 61 74 61 62 61  articular databa
61d0: 73 65 20 74 61 62 6c 65 20 6f 63 63 75 72 73 2c  se table occurs,
61e0: 20 6f 72 20 77 68 65 6e 65 76 65 72 20 61 6e 20   or whenever an 
61f0: 55 50 44 41 54 45 20 6f 66 20 6f 6e 65 20 6f 72  UPDATE of one or
6200: 20 6d 6f 72 65 0a 73 70 65 63 69 66 69 65 64 20   more.specified 
6210: 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 20 74 61 62  columns of a tab
6220: 6c 65 20 61 72 65 20 75 70 64 61 74 65 64 2e 3c  le are updated.<
6230: 2f 70 3e 0a 0a 3c 70 3e 41 74 20 74 68 69 73 20  /p>..<p>At this 
6240: 74 69 6d 65 20 53 51 4c 69 74 65 20 73 75 70 70  time SQLite supp
6250: 6f 72 74 73 20 6f 6e 6c 79 20 46 4f 52 20 45 41  orts only FOR EA
6260: 43 48 20 52 4f 57 20 74 72 69 67 67 65 72 73 2c  CH ROW triggers,
6270: 20 6e 6f 74 20 46 4f 52 20 45 41 43 48 0a 53 54   not FOR EACH.ST
6280: 41 54 45 4d 45 4e 54 20 74 72 69 67 67 65 72 73  ATEMENT triggers
6290: 2e 20 48 65 6e 63 65 20 65 78 70 6c 69 63 69 74  . Hence explicit
62a0: 6c 79 20 73 70 65 63 69 66 79 69 6e 67 20 46 4f  ly specifying FO
62b0: 52 20 45 41 43 48 20 52 4f 57 20 69 73 20 6f 70  R EACH ROW is op
62c0: 74 69 6f 6e 61 6c 2e 20 20 46 4f 52 0a 45 41 43  tional.  FOR.EAC
62d0: 48 20 52 4f 57 20 69 6d 70 6c 69 65 73 20 74 68  H ROW implies th
62e0: 61 74 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  at the SQL state
62f0: 6d 65 6e 74 73 20 73 70 65 63 69 66 69 65 64 20  ments specified 
6300: 61 73 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74  as <i>trigger-st
6310: 65 70 73 3c 2f 69 3e 20 0a 6d 61 79 20 62 65 20  eps</i> .may be 
6320: 65 78 65 63 75 74 65 64 20 28 64 65 70 65 6e 64  executed (depend
6330: 69 6e 67 20 6f 6e 20 74 68 65 20 57 48 45 4e 20  ing on the WHEN 
6340: 63 6c 61 75 73 65 29 20 66 6f 72 20 65 61 63 68  clause) for each
6350: 20 64 61 74 61 62 61 73 65 20 72 6f 77 20 62 65   database row be
6360: 69 6e 67 0a 69 6e 73 65 72 74 65 64 2c 20 75 70  ing.inserted, up
6370: 64 61 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64  dated or deleted
6380: 20 62 79 20 74 68 65 20 73 74 61 74 65 6d 65 6e   by the statemen
6390: 74 20 63 61 75 73 69 6e 67 20 74 68 65 20 74 72  t causing the tr
63a0: 69 67 67 65 72 20 74 6f 20 66 69 72 65 2e 3c 2f  igger to fire.</
63b0: 70 3e 0a 0a 3c 70 3e 42 6f 74 68 20 74 68 65 20  p>..<p>Both the 
63c0: 57 48 45 4e 20 63 6c 61 75 73 65 20 61 6e 64 20  WHEN clause and 
63d0: 74 68 65 20 3c 69 3e 74 72 69 67 67 65 72 2d 73  the <i>trigger-s
63e0: 74 65 70 73 3c 2f 69 3e 20 6d 61 79 20 61 63 63  teps</i> may acc
63f0: 65 73 73 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20  ess elements of 
6400: 0a 74 68 65 20 72 6f 77 20 62 65 69 6e 67 20 69  .the row being i
6410: 6e 73 65 72 74 65 64 2c 20 64 65 6c 65 74 65 64  nserted, deleted
6420: 20 6f 72 20 75 70 64 61 74 65 64 20 75 73 69 6e   or updated usin
6430: 67 20 72 65 66 65 72 65 6e 63 65 73 20 6f 66 20  g references of 
6440: 74 68 65 20 66 6f 72 6d 20 0a 22 4e 45 57 2e 3c  the form ."NEW.<
6450: 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69  i>column-name</i
6460: 3e 22 20 61 6e 64 20 22 4f 4c 44 2e 3c 69 3e 63  >" and "OLD.<i>c
6470: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 2c  olumn-name</i>",
6480: 20 77 68 65 72 65 0a 3c 69 3e 63 6f 6c 75 6d 6e   where.<i>column
6490: 2d 6e 61 6d 65 3c 2f 69 3e 20 69 73 20 74 68 65  -name</i> is the
64a0: 20 6e 61 6d 65 20 6f 66 20 61 20 63 6f 6c 75 6d   name of a colum
64b0: 6e 20 66 72 6f 6d 20 74 68 65 20 74 61 62 6c 65  n from the table
64c0: 20 74 68 61 74 20 74 68 65 20 74 72 69 67 67 65   that the trigge
64d0: 72 0a 69 73 20 61 73 73 6f 63 69 61 74 65 64 20  r.is associated 
64e0: 77 69 74 68 2e 20 4f 4c 44 20 61 6e 64 20 4e 45  with. OLD and NE
64f0: 57 20 72 65 66 65 72 65 6e 63 65 73 20 6d 61 79  W references may
6500: 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69 6e   only be used in
6510: 20 74 72 69 67 67 65 72 73 20 6f 6e 0a 3c 69 3e   triggers on.<i>
6520: 74 72 69 67 67 65 72 2d 65 76 65 6e 74 3c 2f 69  trigger-event</i
6530: 3e 73 20 66 6f 72 20 77 68 69 63 68 20 74 68 65  >s for which the
6540: 79 20 61 72 65 20 72 65 6c 65 76 61 6e 74 2c 20  y are relevant, 
6550: 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a  as follows:</p>.
6560: 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30  .<table border=0
6570: 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e   cellpadding=10>
6580: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
6590: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
65a0: 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 3c  ght" width=120><
65b0: 69 3e 49 4e 53 45 52 54 3c 2f 69 3e 3c 2f 74 64  i>INSERT</i></td
65c0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
65d0: 70 22 3e 4e 45 57 20 72 65 66 65 72 65 6e 63 65  p">NEW reference
65e0: 73 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e  s are valid</td>
65f0: 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20  .</tr>.<tr>.<td 
6600: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
6610: 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68  gn="right" width
6620: 3d 31 32 30 3e 3c 69 3e 55 50 44 41 54 45 3c 2f  =120><i>UPDATE</
6630: 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  i></td>.<td vali
6640: 67 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 61 6e 64  gn="top">NEW and
6650: 20 4f 4c 44 20 72 65 66 65 72 65 6e 63 65 73 20   OLD references 
6660: 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c  are valid</td>.<
6670: 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  /tr>.<tr>.<td va
6680: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
6690: 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 31  ="right" width=1
66a0: 32 30 3e 3c 69 3e 44 45 4c 45 54 45 3c 2f 69 3e  20><i>DELETE</i>
66b0: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
66c0: 3d 22 74 6f 70 22 3e 4f 4c 44 20 72 65 66 65 72  ="top">OLD refer
66d0: 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64 3c  ences are valid<
66e0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62  /td>.</tr>.</tab
66f0: 6c 65 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  le>.</p>..<p>If 
6700: 61 20 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73  a WHEN clause is
6710: 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20 53   supplied, the S
6720: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 73 70  QL statements sp
6730: 65 63 69 66 69 65 64 20 61 73 20 3c 69 3e 74 72  ecified as <i>tr
6740: 69 67 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20  igger-steps</i> 
6750: 61 72 65 20 6f 6e 6c 79 20 65 78 65 63 75 74 65  are only execute
6760: 64 20 66 6f 72 20 72 6f 77 73 20 66 6f 72 20 77  d for rows for w
6770: 68 69 63 68 20 74 68 65 20 57 48 45 4e 20 63 6c  hich the WHEN cl
6780: 61 75 73 65 20 69 73 20 74 72 75 65 2e 20 49 66  ause is true. If
6790: 20 6e 6f 20 57 48 45 4e 20 63 6c 61 75 73 65 20   no WHEN clause 
67a0: 69 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65  is supplied, the
67b0: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20   SQL statements 
67c0: 61 72 65 20 65 78 65 63 75 74 65 64 20 66 6f 72  are executed for
67d0: 20 61 6c 6c 20 72 6f 77 73 2e 3c 2f 70 3e 0a 0a   all rows.</p>..
67e0: 3c 70 3e 54 68 65 20 73 70 65 63 69 66 69 65 64  <p>The specified
67f0: 20 3c 69 3e 74 72 69 67 67 65 72 2d 74 69 6d 65   <i>trigger-time
6800: 3c 2f 69 3e 20 64 65 74 65 72 6d 69 6e 65 73 20  </i> determines 
6810: 77 68 65 6e 20 74 68 65 20 3c 69 3e 74 72 69 67  when the <i>trig
6820: 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 0a 77 69  ger-steps</i>.wi
6830: 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 20 72  ll be executed r
6840: 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 69  elative to the i
6850: 6e 73 65 72 74 69 6f 6e 2c 20 6d 6f 64 69 66 69  nsertion, modifi
6860: 63 61 74 69 6f 6e 20 6f 72 20 72 65 6d 6f 76 61  cation or remova
6870: 6c 20 6f 66 20 74 68 65 0a 61 73 73 6f 63 69 61  l of the.associa
6880: 74 65 64 20 72 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70  ted row.</p>..<p
6890: 3e 41 6e 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  >An ON CONFLICT 
68a0: 63 6c 61 75 73 65 20 6d 61 79 20 62 65 20 73 70  clause may be sp
68b0: 65 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20  ecified as part 
68c0: 6f 66 20 61 6e 20 55 50 44 41 54 45 20 6f 72 20  of an UPDATE or 
68d0: 49 4e 53 45 52 54 0a 3c 69 3e 74 72 69 67 67 65  INSERT.<i>trigge
68e0: 72 2d 73 74 65 70 3c 2f 69 3e 2e 20 48 6f 77 65  r-step</i>. Howe
68f0: 76 65 72 20 69 66 20 61 6e 20 4f 4e 20 43 4f 4e  ver if an ON CON
6900: 46 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73 20  FLICT clause is 
6910: 73 70 65 63 69 66 69 65 64 20 61 73 20 70 61 72  specified as par
6920: 74 20 6f 66 20 0a 74 68 65 20 73 74 61 74 65 6d  t of .the statem
6930: 65 6e 74 20 63 61 75 73 69 6e 67 20 74 68 65 20  ent causing the 
6940: 74 72 69 67 67 65 72 20 74 6f 20 66 69 72 65 2c  trigger to fire,
6950: 20 74 68 65 6e 20 74 68 69 73 20 63 6f 6e 66 6c   then this confl
6960: 69 63 74 20 68 61 6e 64 6c 69 6e 67 0a 70 6f 6c  ict handling.pol
6970: 69 63 79 20 69 73 20 75 73 65 64 20 69 6e 73 74  icy is used inst
6980: 65 61 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69  ead.</p>..<p>Tri
6990: 67 67 65 72 73 20 61 72 65 20 61 75 74 6f 6d 61  ggers are automa
69a0: 74 69 63 61 6c 6c 79 20 64 72 6f 70 70 65 64 20  tically dropped 
69b0: 77 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20 74  when the table t
69c0: 68 61 74 20 74 68 65 79 20 61 72 65 20 0a 61 73  hat they are .as
69d0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 69 73  sociated with is
69e0: 20 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c   dropped.</p>..<
69f0: 70 3e 54 72 69 67 67 65 72 73 20 6d 61 79 20 62  p>Triggers may b
6a00: 65 20 63 72 65 61 74 65 64 20 6f 6e 20 76 69 65  e created on vie
6a10: 77 73 2c 20 61 73 20 77 65 6c 6c 20 61 73 20 6f  ws, as well as o
6a20: 72 64 69 6e 61 72 79 20 74 61 62 6c 65 73 2c 20  rdinary tables, 
6a30: 62 79 20 73 70 65 63 69 66 79 69 6e 67 0a 49 4e  by specifying.IN
6a40: 53 54 45 41 44 20 4f 46 20 69 6e 20 74 68 65 20  STEAD OF in the 
6a50: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20 73  CREATE TRIGGER s
6a60: 74 61 74 65 6d 65 6e 74 2e 20 49 66 20 6f 6e 65  tatement. If one
6a70: 20 6f 72 20 6d 6f 72 65 20 4f 4e 20 49 4e 53 45   or more ON INSE
6a80: 52 54 2c 20 4f 4e 20 44 45 4c 45 54 45 0a 6f 72  RT, ON DELETE.or
6a90: 20 4f 4e 20 55 50 44 41 54 45 20 74 72 69 67 67   ON UPDATE trigg
6aa0: 65 72 73 20 61 72 65 20 64 65 66 69 6e 65 64 20  ers are defined 
6ab0: 6f 6e 20 61 20 76 69 65 77 2c 20 74 68 65 6e 20  on a view, then 
6ac0: 69 74 20 69 73 20 6e 6f 74 20 61 6e 20 65 72 72  it is not an err
6ad0: 6f 72 20 74 6f 20 65 78 65 63 75 74 65 0a 61 6e  or to execute.an
6ae0: 20 49 4e 53 45 52 54 2c 20 44 45 4c 45 54 45 20   INSERT, DELETE 
6af0: 6f 72 20 55 50 44 41 54 45 20 73 74 61 74 65 6d  or UPDATE statem
6b00: 65 6e 74 20 6f 6e 20 74 68 65 20 76 69 65 77 2c  ent on the view,
6b10: 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20 54   respectively. T
6b20: 68 65 72 65 61 66 74 65 72 2c 0a 65 78 65 63 75  hereafter,.execu
6b30: 74 69 6e 67 20 61 6e 20 49 4e 53 45 52 54 2c 20  ting an INSERT, 
6b40: 44 45 4c 45 54 45 20 6f 72 20 55 50 44 41 54 45  DELETE or UPDATE
6b50: 20 6f 6e 20 74 68 65 20 76 69 65 77 20 63 61 75   on the view cau
6b60: 73 65 73 20 74 68 65 20 61 73 73 6f 63 69 61 74  ses the associat
6b70: 65 64 0a 20 20 74 72 69 67 67 65 72 73 20 74 6f  ed.  triggers to
6b80: 20 66 69 72 65 2e 20 54 68 65 20 72 65 61 6c 20   fire. The real 
6b90: 74 61 62 6c 65 73 20 75 6e 64 65 72 6c 79 69 6e  tables underlyin
6ba0: 67 20 74 68 65 20 76 69 65 77 20 61 72 65 20 6e  g the view are n
6bb0: 6f 74 20 6d 6f 64 69 66 69 65 64 0a 20 20 28 65  ot modified.  (e
6bc0: 78 63 65 70 74 20 70 6f 73 73 69 62 6c 79 20 65  xcept possibly e
6bd0: 78 70 6c 69 63 69 74 6c 79 2c 20 62 79 20 61 20  xplicitly, by a 
6be0: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 29  trigger program)
6bf0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 3c 62 3e 45 78 61  .</p>..<p><b>Exa
6c00: 6d 70 6c 65 3a 3c 2f 62 3e 3c 2f 70 3e 0a 0a 3c  mple:</b></p>..<
6c10: 70 3e 41 73 73 75 6d 69 6e 67 20 74 68 61 74 20  p>Assuming that 
6c20: 63 75 73 74 6f 6d 65 72 20 72 65 63 6f 72 64 73  customer records
6c30: 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74   are stored in t
6c40: 68 65 20 22 63 75 73 74 6f 6d 65 72 73 22 20 74  he "customers" t
6c50: 61 62 6c 65 2c 20 61 6e 64 0a 74 68 61 74 20 6f  able, and.that o
6c60: 72 64 65 72 20 72 65 63 6f 72 64 73 20 61 72 65  rder records are
6c70: 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 22   stored in the "
6c80: 6f 72 64 65 72 73 22 20 74 61 62 6c 65 2c 20 74  orders" table, t
6c90: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 72 69  he following tri
6ca0: 67 67 65 72 0a 65 6e 73 75 72 65 73 20 74 68 61  gger.ensures tha
6cb0: 74 20 61 6c 6c 20 61 73 73 6f 63 69 61 74 65 64  t all associated
6cc0: 20 6f 72 64 65 72 73 20 61 72 65 20 72 65 64 69   orders are redi
6cd0: 72 65 63 74 65 64 20 77 68 65 6e 20 61 20 63 75  rected when a cu
6ce0: 73 74 6f 6d 65 72 20 63 68 61 6e 67 65 73 0a 68  stomer changes.h
6cf0: 69 73 20 6f 72 20 68 65 72 20 61 64 64 72 65 73  is or her addres
6d00: 73 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61  s:</p>..<tcl>Exa
6d10: 6d 70 6c 65 20 7b 0a 43 52 45 41 54 45 20 54 52  mple {.CREATE TR
6d20: 49 47 47 45 52 20 75 70 64 61 74 65 5f 63 75 73  IGGER update_cus
6d30: 74 6f 6d 65 72 5f 61 64 64 72 65 73 73 20 55 50  tomer_address UP
6d40: 44 41 54 45 20 4f 46 20 61 64 64 72 65 73 73 20  DATE OF address 
6d50: 4f 4e 20 63 75 73 74 6f 6d 65 72 73 20 0a 20 20  ON customers .  
6d60: 42 45 47 49 4e 0a 20 20 20 20 55 50 44 41 54 45  BEGIN.    UPDATE
6d70: 20 6f 72 64 65 72 73 20 53 45 54 20 61 64 64 72   orders SET addr
6d80: 65 73 73 20 3d 20 6e 65 77 2e 61 64 64 72 65 73  ess = new.addres
6d90: 73 20 57 48 45 52 45 20 63 75 73 74 6f 6d 65 72  s WHERE customer
6da0: 5f 6e 61 6d 65 20 3d 20 6f 6c 64 2e 6e 61 6d 65  _name = old.name
6db0: 3b 0a 20 20 45 4e 44 3b 0a 7d 3c 2f 74 63 6c 3e  ;.  END;.}</tcl>
6dc0: 0a 0a 3c 70 3e 57 69 74 68 20 74 68 69 73 20 74  ..<p>With this t
6dd0: 72 69 67 67 65 72 20 69 6e 73 74 61 6c 6c 65 64  rigger installed
6de0: 2c 20 65 78 65 63 75 74 69 6e 67 20 74 68 65 20  , executing the 
6df0: 73 74 61 74 65 6d 65 6e 74 3a 3c 2f 70 3e 0a 0a  statement:</p>..
6e00: 3c 74 63 6c 3e 45 78 61 6d 70 6c 65 20 7b 0a 55  <tcl>Example {.U
6e10: 50 44 41 54 45 20 63 75 73 74 6f 6d 65 72 73 20  PDATE customers 
6e20: 53 45 54 20 61 64 64 72 65 73 73 20 3d 20 27 31  SET address = '1
6e30: 20 4d 61 69 6e 20 53 74 2e 27 20 57 48 45 52 45   Main St.' WHERE
6e40: 20 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f   name = 'Jack Jo
6e50: 6e 65 73 27 3b 0a 7d 3c 2f 74 63 6c 3e 0a 0a 3c  nes';.}</tcl>..<
6e60: 70 3e 63 61 75 73 65 73 20 74 68 65 20 66 6f 6c  p>causes the fol
6e70: 6c 6f 77 69 6e 67 20 74 6f 20 62 65 20 61 75 74  lowing to be aut
6e80: 6f 6d 61 74 69 63 61 6c 6c 79 20 65 78 65 63 75  omatically execu
6e90: 74 65 64 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 45  ted:</p>..<tcl>E
6ea0: 78 61 6d 70 6c 65 20 7b 0a 55 50 44 41 54 45 20  xample {.UPDATE 
6eb0: 6f 72 64 65 72 73 20 53 45 54 20 61 64 64 72 65  orders SET addre
6ec0: 73 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e  ss = '1 Main St.
6ed0: 27 20 57 48 45 52 45 20 63 75 73 74 6f 6d 65 72  ' WHERE customer
6ee0: 5f 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f  _name = 'Jack Jo
6ef0: 6e 65 73 27 3b 0a 7d 3c 2f 74 63 6c 3e 0a 0a 3c  nes';.}</tcl>..<
6f00: 70 3e 4e 6f 74 65 20 74 68 61 74 20 63 75 72 72  p>Note that curr
6f10: 65 6e 74 6c 79 2c 20 74 72 69 67 67 65 72 73 20  ently, triggers 
6f20: 6d 61 79 20 62 65 68 61 76 65 20 6f 64 64 6c 79  may behave oddly
6f30: 20 77 68 65 6e 20 63 72 65 61 74 65 64 20 6f 6e   when created on
6f40: 20 74 61 62 6c 65 73 0a 20 20 77 69 74 68 20 49   tables.  with I
6f50: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
6f60: 45 59 20 66 69 65 6c 64 73 2e 20 49 66 20 61 20  EY fields. If a 
6f70: 42 45 46 4f 52 45 20 74 72 69 67 67 65 72 20 70  BEFORE trigger p
6f80: 72 6f 67 72 61 6d 20 6d 6f 64 69 66 69 65 73 20  rogram modifies 
6f90: 74 68 65 20 0a 20 20 49 4e 54 45 47 45 52 20 50  the .  INTEGER P
6fa0: 52 49 4d 41 52 59 20 4b 45 59 20 66 69 65 6c 64  RIMARY KEY field
6fb0: 20 6f 66 20 61 20 72 6f 77 20 74 68 61 74 20 77   of a row that w
6fc0: 69 6c 6c 20 62 65 20 73 75 62 73 65 71 75 65 6e  ill be subsequen
6fd0: 74 6c 79 20 75 70 64 61 74 65 64 20 62 79 20 74  tly updated by t
6fe0: 68 65 0a 20 20 73 74 61 74 65 6d 65 6e 74 20 74  he.  statement t
6ff0: 68 61 74 20 63 61 75 73 65 73 20 74 68 65 20 74  hat causes the t
7000: 72 69 67 67 65 72 20 74 6f 20 66 69 72 65 2c 20  rigger to fire, 
7010: 74 68 65 6e 20 74 68 65 20 75 70 64 61 74 65 20  then the update 
7020: 6d 61 79 20 6e 6f 74 20 6f 63 63 75 72 2e 20 0a  may not occur. .
7030: 20 20 54 68 65 20 77 6f 72 6b 61 72 6f 75 6e 64    The workaround
7040: 20 69 73 20 74 6f 20 64 65 63 6c 61 72 65 20 74   is to declare t
7050: 68 65 20 74 61 62 6c 65 20 77 69 74 68 20 61 20  he table with a 
7060: 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75  PRIMARY KEY colu
7070: 6d 6e 20 69 6e 73 74 65 61 64 0a 20 20 6f 66 20  mn instead.  of 
7080: 61 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41  an INTEGER PRIMA
7090: 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 2e 3c 2f  RY KEY column.</
70a0: 70 3e 0a 0a 3c 70 3e 41 20 73 70 65 63 69 61 6c  p>..<p>A special
70b0: 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 52 41   SQL function RA
70c0: 49 53 45 28 29 20 6d 61 79 20 62 65 20 75 73 65  ISE() may be use
70d0: 64 20 77 69 74 68 69 6e 20 61 20 74 72 69 67 67  d within a trigg
70e0: 65 72 2d 70 72 6f 67 72 61 6d 2c 20 77 69 74 68  er-program, with
70f0: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73   the following s
7100: 79 6e 74 61 78 3c 2f 70 3e 20 0a 0a 3c 74 63 6c  yntax</p> ..<tcl
7110: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
7120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7130: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7140: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7150: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7160: 23 0a 53 79 6e 74 61 78 20 7b 72 61 69 73 65 2d  #.Syntax {raise-
7170: 66 75 6e 63 74 69 6f 6e 7d 20 7b 0a 52 41 49 53  function} {.RAIS
7180: 45 20 28 20 41 42 4f 52 54 2c 20 3c 65 72 72 6f  E ( ABORT, <erro
7190: 72 2d 6d 65 73 73 61 67 65 3e 20 29 20 7c 20 0a  r-message> ) | .
71a0: 52 41 49 53 45 20 28 20 46 41 49 4c 2c 20 3c 65  RAISE ( FAIL, <e
71b0: 72 72 6f 72 2d 6d 65 73 73 61 67 65 3e 20 29 20  rror-message> ) 
71c0: 7c 20 0a 52 41 49 53 45 20 28 20 52 4f 4c 4c 42  | .RAISE ( ROLLB
71d0: 41 43 4b 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73  ACK, <error-mess
71e0: 61 67 65 3e 20 29 20 7c 20 0a 52 41 49 53 45 20  age> ) | .RAISE 
71f0: 28 20 49 47 4e 4f 52 45 20 29 0a 7d 0a 3c 2f 74  ( IGNORE ).}.</t
7200: 63 6c 3e 0a 0a 3c 70 3e 57 68 65 6e 20 6f 6e 65  cl>..<p>When one
7210: 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 74 68   of the first th
7220: 72 65 65 20 66 6f 72 6d 73 20 69 73 20 63 61 6c  ree forms is cal
7230: 6c 65 64 20 64 75 72 69 6e 67 20 74 72 69 67 67  led during trigg
7240: 65 72 2d 70 72 6f 67 72 61 6d 20 65 78 65 63 75  er-program execu
7250: 74 69 6f 6e 2c 20 74 68 65 20 73 70 65 63 69 66  tion, the specif
7260: 69 65 64 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  ied ON CONFLICT 
7270: 70 72 6f 63 65 73 73 69 6e 67 20 69 73 20 70 65  processing is pe
7280: 72 66 6f 72 6d 65 64 20 28 65 69 74 68 65 72 20  rformed (either 
7290: 41 42 4f 52 54 2c 20 46 41 49 4c 20 6f 72 20 0a  ABORT, FAIL or .
72a0: 20 52 4f 4c 4c 42 41 43 4b 29 20 61 6e 64 20 74   ROLLBACK) and t
72b0: 68 65 20 63 75 72 72 65 6e 74 20 71 75 65 72 79  he current query
72c0: 20 74 65 72 6d 69 6e 61 74 65 73 2e 20 41 6e 20   terminates. An 
72d0: 65 72 72 6f 72 20 63 6f 64 65 20 6f 66 20 53 51  error code of SQ
72e0: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20  LITE_CONSTRAINT 
72f0: 69 73 20 72 65 74 75 72 6e 65 64 20 74 6f 20 74  is returned to t
7300: 68 65 20 75 73 65 72 2c 20 61 6c 6f 6e 67 20 77  he user, along w
7310: 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65  ith the specifie
7320: 64 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e  d error message.
7330: 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 52 41  </p>..<p>When RA
7340: 49 53 45 28 49 47 4e 4f 52 45 29 20 69 73 20 63  ISE(IGNORE) is c
7350: 61 6c 6c 65 64 2c 20 74 68 65 20 72 65 6d 61 69  alled, the remai
7360: 6e 64 65 72 20 6f 66 20 74 68 65 20 63 75 72 72  nder of the curr
7370: 65 6e 74 20 74 72 69 67 67 65 72 20 70 72 6f 67  ent trigger prog
7380: 72 61 6d 2c 0a 74 68 65 20 73 74 61 74 65 6d 65  ram,.the stateme
7390: 6e 74 20 74 68 61 74 20 63 61 75 73 65 64 20 74  nt that caused t
73a0: 68 65 20 74 72 69 67 67 65 72 20 70 72 6f 67 72  he trigger progr
73b0: 61 6d 20 74 6f 20 65 78 65 63 75 74 65 20 61 6e  am to execute an
73c0: 64 20 61 6e 79 20 73 75 62 73 65 71 75 65 6e 74  d any subsequent
73d0: 0a 20 20 20 20 74 72 69 67 67 65 72 20 70 72 6f  .    trigger pro
73e0: 67 72 61 6d 73 20 74 68 61 74 20 77 6f 75 6c 64  grams that would
73f0: 20 6f 66 20 62 65 65 6e 20 65 78 65 63 75 74 65   of been execute
7400: 64 20 61 72 65 20 61 62 61 6e 64 6f 6e 65 64 2e  d are abandoned.
7410: 20 4e 6f 20 64 61 74 61 62 61 73 65 0a 20 20 20   No database.   
7420: 20 63 68 61 6e 67 65 73 20 61 72 65 20 72 6f 6c   changes are rol
7430: 6c 65 64 20 62 61 63 6b 2e 20 20 49 66 20 74 68  led back.  If th
7440: 65 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74  e statement that
7450: 20 63 61 75 73 65 64 20 74 68 65 20 74 72 69 67   caused the trig
7460: 67 65 72 20 70 72 6f 67 72 61 6d 0a 20 20 20 20  ger program.    
7470: 74 6f 20 65 78 65 63 75 74 65 20 69 73 20 69 74  to execute is it
7480: 73 65 6c 66 20 70 61 72 74 20 6f 66 20 61 20 74  self part of a t
7490: 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 2c 20  rigger program, 
74a0: 74 68 65 6e 20 74 68 61 74 20 74 72 69 67 67 65  then that trigge
74b0: 72 20 70 72 6f 67 72 61 6d 0a 20 20 20 20 72 65  r program.    re
74c0: 73 75 6d 65 73 20 65 78 65 63 75 74 69 6f 6e 20  sumes execution 
74d0: 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67  at the beginning
74e0: 20 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 65   of the next ste
74f0: 70 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67  p..</p>..<p>Trig
7500: 67 65 72 73 20 61 72 65 20 72 65 6d 6f 76 65 64  gers are removed
7510: 20 75 73 69 6e 67 20 74 68 65 20 0a 3c 61 20 68   using the .<a h
7520: 72 65 66 3d 22 6c 61 6e 67 5f 64 72 6f 70 74 72  ref="lang_droptr
7530: 69 67 67 65 72 2e 68 74 6d 6c 22 3e 44 52 4f 50  igger.html">DROP
7540: 20 54 52 49 47 47 45 52 3c 2f 61 3e 20 73 74 61   TRIGGER</a> sta
7550: 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 0a 3c 74  tement.</p>...<t
7560: 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
7570: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7580: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7590: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
75a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
75b0: 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45  ###.Section {CRE
75c0: 41 54 45 20 56 49 45 57 7d 20 7b 63 72 65 61 74  ATE VIEW} {creat
75d0: 65 76 69 65 77 7d 20 7b 7b 43 52 45 41 54 45 20  eview} {{CREATE 
75e0: 56 49 45 57 7d 7d 0a 0a 53 79 6e 74 61 78 20 7b  VIEW}}..Syntax {
75f0: 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43  sql-command} {.C
7600: 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45  REATE [TEMP | TE
7610: 4d 50 4f 52 41 52 59 5d 20 56 49 45 57 20 5b 49  MPORARY] VIEW [I
7620: 46 20 4e 4f 54 20 45 58 49 53 54 53 5d 20 5b 3c  F NOT EXISTS] [<
7630: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 2e 5d  database-name>.]
7640: 20 3c 76 69 65 77 2d 6e 61 6d 65 3e 20 41 53 20   <view-name> AS 
7650: 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e  <select-statemen
7660: 74 3e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  t>.}.</tcl>..<p>
7670: 54 68 65 20 43 52 45 41 54 45 20 56 49 45 57 20  The CREATE VIEW 
7680: 63 6f 6d 6d 61 6e 64 20 61 73 73 69 67 6e 73 20  command assigns 
7690: 61 20 6e 61 6d 65 20 74 6f 20 61 20 70 72 65 2d  a name to a pre-
76a0: 70 61 63 6b 61 67 65 64 20 0a 3c 61 20 68 72 65  packaged .<a hre
76b0: 66 3d 22 6c 61 6e 67 5f 73 65 6c 65 63 74 2e 68  f="lang_select.h
76c0: 74 6d 6c 22 3e 53 45 4c 45 43 54 3c 2f 61 3e 0a  tml">SELECT</a>.
76d0: 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f 6e 63 65  statement.  Once
76e0: 20 74 68 65 20 76 69 65 77 20 69 73 20 63 72 65   the view is cre
76f0: 61 74 65 64 2c 20 69 74 20 63 61 6e 20 62 65 20  ated, it can be 
7700: 75 73 65 64 20 69 6e 20 74 68 65 20 46 52 4f 4d  used in the FROM
7710: 20 63 6c 61 75 73 65 0a 6f 66 20 61 6e 6f 74 68   clause.of anoth
7720: 65 72 20 53 45 4c 45 43 54 20 69 6e 20 70 6c 61  er SELECT in pla
7730: 63 65 20 6f 66 20 61 20 74 61 62 6c 65 20 6e 61  ce of a table na
7740: 6d 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  me..</p>..<p>If 
7750: 74 68 65 20 22 54 45 4d 50 22 20 6f 72 20 22 54  the "TEMP" or "T
7760: 45 4d 50 4f 52 41 52 59 22 20 6b 65 79 77 6f 72  EMPORARY" keywor
7770: 64 20 6f 63 63 75 72 73 20 69 6e 20 62 65 74 77  d occurs in betw
7780: 65 65 6e 20 22 43 52 45 41 54 45 22 0a 61 6e 64  een "CREATE".and
7790: 20 22 56 49 45 57 22 20 74 68 65 6e 20 74 68 65   "VIEW" then the
77a0: 20 76 69 65 77 20 74 68 61 74 20 69 73 20 63 72   view that is cr
77b0: 65 61 74 65 64 20 69 73 20 6f 6e 6c 79 20 76 69  eated is only vi
77c0: 73 69 62 6c 65 20 74 6f 20 74 68 65 0a 70 72 6f  sible to the.pro
77d0: 63 65 73 73 20 74 68 61 74 20 6f 70 65 6e 65 64  cess that opened
77e0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e   the database an
77f0: 64 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c  d is automatical
7800: 6c 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e 0a  ly deleted when.
7810: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
7820: 63 6c 6f 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  closed.</p>..<p>
7830: 20 49 66 20 61 20 26 6c 74 3b 64 61 74 61 62 61   If a &lt;databa
7840: 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 73  se-name&gt; is s
7850: 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74  pecified, then t
7860: 68 65 20 76 69 65 77 20 69 73 20 63 72 65 61 74  he view is creat
7870: 65 64 20 69 6e 20 0a 74 68 65 20 6e 61 6d 65 64  ed in .the named
7880: 20 64 61 74 61 62 61 73 65 2e 20 49 74 20 69 73   database. It is
7890: 20 61 6e 20 65 72 72 6f 72 20 74 6f 20 73 70 65   an error to spe
78a0: 63 69 66 79 20 62 6f 74 68 20 61 20 26 6c 74 3b  cify both a &lt;
78b0: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74  database-name&gt
78c0: 3b 0a 61 6e 64 20 74 68 65 20 54 45 4d 50 20 6b  ;.and the TEMP k
78d0: 65 79 77 6f 72 64 2c 20 75 6e 6c 65 73 73 20 74  eyword, unless t
78e0: 68 65 20 26 6c 74 3b 64 61 74 61 62 61 73 65 2d  he &lt;database-
78f0: 6e 61 6d 65 26 67 74 3b 20 69 73 20 22 74 65 6d  name&gt; is "tem
7900: 70 22 2e 20 49 66 20 6e 6f 0a 64 61 74 61 62 61  p". If no.databa
7910: 73 65 20 6e 61 6d 65 20 69 73 20 73 70 65 63 69  se name is speci
7920: 66 69 65 64 2c 20 61 6e 64 20 74 68 65 20 54 45  fied, and the TE
7930: 4d 50 20 6b 65 79 77 6f 72 64 20 69 73 20 6e 6f  MP keyword is no
7940: 74 20 70 72 65 73 65 6e 74 2c 0a 74 68 65 20 74  t present,.the t
7950: 61 62 6c 65 20 69 73 20 63 72 65 61 74 65 64 20  able is created 
7960: 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61  in the main data
7970: 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f  base.</p>..<p>Yo
7980: 75 20 63 61 6e 6e 6f 74 20 43 4f 50 59 2c 20 44  u cannot COPY, D
7990: 45 4c 45 54 45 2c 20 49 4e 53 45 52 54 20 6f 72  ELETE, INSERT or
79a0: 20 55 50 44 41 54 45 20 61 20 76 69 65 77 2e 20   UPDATE a view. 
79b0: 20 56 69 65 77 73 20 61 72 65 20 72 65 61 64 2d   Views are read-
79c0: 6f 6e 6c 79 20 0a 69 6e 20 53 51 4c 69 74 65 2e  only .in SQLite.
79d0: 20 20 48 6f 77 65 76 65 72 2c 20 69 6e 20 6d 61    However, in ma
79e0: 6e 79 20 63 61 73 65 73 20 79 6f 75 20 63 61 6e  ny cases you can
79f0: 20 75 73 65 20 61 20 0a 3c 61 20 68 72 65 66 3d   use a .<a href=
7a00: 22 6c 61 6e 67 5f 63 72 65 61 74 65 74 72 69 67  "lang_createtrig
7a10: 67 65 72 2e 68 74 6d 6c 22 3e 54 52 49 47 47 45  ger.html">TRIGGE
7a20: 52 3c 2f 61 3e 20 6f 6e 20 74 68 65 20 76 69 65  R</a> on the vie
7a30: 77 20 74 6f 20 61 63 63 6f 6d 70 6c 69 73 68 20  w to accomplish 
7a40: 0a 74 68 65 20 73 61 6d 65 20 74 68 69 6e 67 2e  .the same thing.
7a50: 20 20 56 69 65 77 73 20 61 72 65 20 72 65 6d 6f    Views are remo
7a60: 76 65 64 20 0a 77 69 74 68 20 74 68 65 20 3c 61  ved .with the <a
7a70: 20 68 72 65 66 3d 22 6c 61 6e 67 5f 64 72 6f 70   href="lang_drop
7a80: 76 69 65 77 2e 68 74 6d 6c 22 3e 44 52 4f 50 20  view.html">DROP 
7a90: 56 49 45 57 3c 2f 61 3e 20 0a 63 6f 6d 6d 61 6e  VIEW</a> .comman
7aa0: 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  d.</p>..<tcl>.##
7ab0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7ac0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7ad0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7ae0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7af0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
7b00: 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 56 49 52  tion {CREATE VIR
7b10: 54 55 41 4c 20 54 41 42 4c 45 7d 20 7b 63 72 65  TUAL TABLE} {cre
7b20: 61 74 65 76 74 61 62 7d 20 7b 7b 43 52 45 41 54  atevtab} {{CREAT
7b30: 45 20 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 7d  E VIRTUAL_TABLE}
7b40: 7d 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63  }..Syntax {sql-c
7b50: 6f 6d 6d 61 6e 64 7d 20 7b 0a 43 52 45 41 54 45  ommand} {.CREATE
7b60: 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 5b   VIRTUAL TABLE [
7b70: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
7b80: 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20  .] <table-name> 
7b90: 55 53 49 4e 47 20 3c 6d 6f 64 75 6c 65 2d 6e 61  USING <module-na
7ba0: 6d 65 3e 20 5b 28 20 3c 61 72 67 75 6d 65 6e 74  me> [( <argument
7bb0: 73 3e 20 29 5d 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a  s> )].}.</tcl>..
7bc0: 3c 70 3e 41 20 76 69 72 74 75 61 6c 20 74 61 62  <p>A virtual tab
7bd0: 6c 65 20 69 73 20 61 6e 20 69 6e 74 65 72 66 61  le is an interfa
7be0: 63 65 20 74 6f 20 61 6e 20 65 78 74 65 72 6e 61  ce to an externa
7bf0: 6c 20 73 74 6f 72 61 67 65 20 6f 72 20 63 6f 6d  l storage or com
7c00: 70 75 74 61 74 69 6f 6e 0a 65 6e 67 69 6e 65 20  putation.engine 
7c10: 74 68 61 74 20 61 70 70 65 61 72 73 20 74 6f 20  that appears to 
7c20: 62 65 20 61 20 74 61 62 6c 65 20 62 75 74 20 64  be a table but d
7c30: 6f 65 73 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79  oes not actually
7c40: 20 73 74 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69   store informati
7c50: 6f 6e 0a 69 6e 20 74 68 65 20 64 61 74 61 62 61  on.in the databa
7c60: 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70  se file.</p>..<p
7c70: 3e 49 6e 20 67 65 6e 65 72 61 6c 2c 20 79 6f 75  >In general, you
7c80: 20 63 61 6e 20 64 6f 20 61 6e 79 74 68 69 6e 67   can do anything
7c90: 20 77 69 74 68 20 61 20 76 69 72 74 75 61 6c 20   with a virtual 
7ca0: 74 61 62 6c 65 20 74 68 61 74 20 63 61 6e 20 62  table that can b
7cb0: 65 20 64 6f 6e 65 0a 77 69 74 68 20 61 6e 20 6f  e done.with an o
7cc0: 72 64 69 6e 61 72 79 20 74 61 62 6c 65 2c 20 65  rdinary table, e
7cd0: 78 63 65 70 74 20 74 68 61 74 20 79 6f 75 20 63  xcept that you c
7ce0: 61 6e 6e 6f 74 20 63 72 65 61 74 65 20 74 72 69  annot create tri
7cf0: 67 67 65 72 73 20 6f 6e 20 61 0a 76 69 72 74 75  ggers on a.virtu
7d00: 61 6c 20 74 61 62 6c 65 2e 20 20 53 6f 6d 65 20  al table.  Some 
7d10: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d  virtual table im
7d20: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6d 69  plementations mi
7d30: 67 68 74 20 69 6d 70 6f 73 65 20 61 64 64 69 74  ght impose addit
7d40: 69 6f 6e 61 6c 0a 72 65 73 74 72 69 63 74 69 6f  ional.restrictio
7d50: 6e 73 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  ns.  For example
7d60: 2c 20 6d 61 6e 79 20 76 69 72 74 75 61 6c 20 74  , many virtual t
7d70: 61 62 6c 65 73 20 61 72 65 20 72 65 61 64 2d 6f  ables are read-o
7d80: 6e 6c 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  nly.</p>..<p>The
7d90: 20 26 6c 74 3b 6d 6f 64 75 6c 65 2d 6e 61 6d 65   &lt;module-name
7da0: 26 67 74 3b 20 69 73 20 74 68 65 20 6e 61 6d 65  &gt; is the name
7db0: 20 6f 66 20 61 6e 20 6f 62 6a 65 63 74 20 74 68   of an object th
7dc0: 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 0a 74 68  at implements.th
7dd0: 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  e virtual table.
7de0: 20 20 54 68 65 20 26 6c 74 3b 6d 6f 64 75 6c 65    The &lt;module
7df0: 2d 6e 61 6d 65 26 67 74 3b 20 6d 75 73 74 20 62  -name&gt; must b
7e00: 65 20 72 65 67 69 73 74 65 72 65 64 20 77 69 74  e registered wit
7e10: 68 0a 74 68 65 20 53 51 4c 69 74 65 20 64 61 74  h.the SQLite dat
7e20: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
7e30: 20 75 73 69 6e 67 0a 73 71 6c 69 74 65 33 5f 63   using.sqlite3_c
7e40: 72 65 61 74 65 5f 6d 6f 64 75 6c 65 28 29 0a 70  reate_module().p
7e50: 72 69 6f 72 20 74 6f 20 69 73 73 75 69 6e 67 20  rior to issuing 
7e60: 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55  the CREATE VIRTU
7e70: 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  AL TABLE stateme
7e80: 6e 74 2e 0a 54 68 65 20 6d 6f 64 75 6c 65 20 74  nt..The module t
7e90: 61 6b 65 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72  akes zero or mor
7ea0: 65 20 63 6f 6d 6d 61 2d 73 65 70 61 72 61 74 65  e comma-separate
7eb0: 64 20 61 72 67 75 6d 65 6e 74 73 2e 0a 54 68 65  d arguments..The
7ec0: 20 61 72 67 75 6d 65 6e 74 73 20 63 61 6e 20 62   arguments can b
7ed0: 65 20 6a 75 73 74 20 61 62 6f 75 74 20 61 6e 79  e just about any
7ee0: 20 74 65 78 74 20 61 73 20 6c 6f 6e 67 20 61 73   text as long as
7ef0: 20 69 74 20 68 61 73 20 62 61 6c 61 6e 63 65 64   it has balanced
7f00: 0a 70 61 72 65 6e 74 68 65 73 65 73 2e 20 20 54  .parentheses.  T
7f10: 68 65 20 61 72 67 75 6d 65 6e 74 20 73 79 6e 74  he argument synt
7f20: 61 78 20 69 73 20 73 75 66 66 69 63 69 65 6e 74  ax is sufficient
7f30: 6c 79 20 67 65 6e 65 72 61 6c 20 74 68 61 74 20  ly general that 
7f40: 74 68 65 0a 61 72 67 75 6d 65 6e 74 73 20 63 61  the.arguments ca
7f50: 6e 20 62 65 20 6d 61 64 65 20 74 6f 20 61 70 70  n be made to app
7f60: 65 61 72 20 61 73 20 63 6f 6c 75 6d 6e 20 64 65  ear as column de
7f70: 66 69 6e 69 74 69 6f 6e 73 20 69 6e 20 61 20 74  finitions in a t
7f80: 72 61 64 69 74 69 6f 6e 61 6c 0a 3c 61 20 68 72  raditional.<a hr
7f90: 65 66 3d 22 6c 61 6e 67 5f 63 72 65 61 74 65 74  ef="lang_createt
7fa0: 61 62 6c 65 2e 68 74 6d 6c 22 3e 43 52 45 41 54  able.html">CREAT
7fb0: 45 20 54 41 42 4c 45 3c 2f 61 3e 20 73 74 61 74  E TABLE</a> stat
7fc0: 65 6d 65 6e 74 2e 20 20 0a 53 51 4c 69 74 65 20  ement.  .SQLite 
7fd0: 70 61 73 73 65 73 20 74 68 65 20 6d 6f 64 75 6c  passes the modul
7fe0: 65 20 61 72 67 75 6d 65 6e 74 73 20 64 69 72 65  e arguments dire
7ff0: 63 74 6c 79 0a 74 6f 20 74 68 65 20 6d 6f 64 75  ctly.to the modu
8000: 6c 65 20 77 69 74 68 6f 75 74 20 61 6e 79 20 69  le without any i
8010: 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 2e 20 20  nterpretation.  
8020: 49 74 20 69 73 20 74 68 65 20 72 65 73 70 6f 6e  It is the respon
8030: 73 69 62 69 6c 69 74 79 0a 6f 66 20 74 68 65 20  sibility.of the 
8040: 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74  module implement
8050: 61 74 69 6f 6e 20 74 6f 20 70 61 72 73 65 20 61  ation to parse a
8060: 6e 64 20 69 6e 74 65 72 70 72 65 74 20 69 74 73  nd interpret its
8070: 20 6f 77 6e 20 61 72 67 75 6d 65 6e 74 73 2e 3c   own arguments.<
8080: 2f 70 3e 0a 0a 3c 70 3e 41 20 76 69 72 74 75 61  /p>..<p>A virtua
8090: 6c 20 74 61 62 6c 65 20 69 73 20 64 65 73 74 72  l table is destr
80a0: 6f 79 65 64 20 75 73 69 6e 67 20 74 68 65 20 6f  oyed using the o
80b0: 72 64 69 6e 61 72 79 0a 3c 61 20 68 72 65 66 3d  rdinary.<a href=
80c0: 22 6c 61 6e 67 5f 64 72 6f 70 74 61 62 6c 65 2e  "lang_droptable.
80d0: 68 74 6d 6c 22 3e 44 52 4f 50 20 54 41 42 4c 45  html">DROP TABLE
80e0: 3c 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20  </a> statement. 
80f0: 20 54 68 65 72 65 20 69 73 20 6e 6f 0a 44 52 4f   There is no.DRO
8100: 50 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20  P VIRTUAL TABLE 
8110: 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a  statement.</p>..
8120: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
8130: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8140: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8150: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8160: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8170: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 44 45 4c  ####.Section DEL
8180: 45 54 45 20 64 65 6c 65 74 65 20 7b 44 45 4c 45  ETE delete {DELE
8190: 54 45 20 44 45 4c 45 54 45 73 7d 0a 0a 53 79 6e  TE DELETEs}..Syn
81a0: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
81b0: 6e 74 7d 20 7b 0a 44 45 4c 45 54 45 20 46 52 4f  nt} {.DELETE FRO
81c0: 4d 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d  M [<database-nam
81d0: 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d  e> .] <table-nam
81e0: 65 3e 20 5b 57 48 45 52 45 20 3c 65 78 70 72 3e  e> [WHERE <expr>
81f0: 5d 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54  ].}.</tcl>..<p>T
8200: 68 65 20 44 45 4c 45 54 45 20 63 6f 6d 6d 61 6e  he DELETE comman
8210: 64 20 69 73 20 75 73 65 64 20 74 6f 20 72 65 6d  d is used to rem
8220: 6f 76 65 20 72 65 63 6f 72 64 73 20 66 72 6f 6d  ove records from
8230: 20 61 20 74 61 62 6c 65 2e 0a 54 68 65 20 63 6f   a table..The co
8240: 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f  mmand consists o
8250: 66 20 74 68 65 20 22 44 45 4c 45 54 45 20 46 52  f the "DELETE FR
8260: 4f 4d 22 20 6b 65 79 77 6f 72 64 73 20 66 6f 6c  OM" keywords fol
8270: 6c 6f 77 65 64 20 62 79 0a 74 68 65 20 6e 61 6d  lowed by.the nam
8280: 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 66  e of the table f
8290: 72 6f 6d 20 77 68 69 63 68 20 72 65 63 6f 72 64  rom which record
82a0: 73 20 61 72 65 20 74 6f 20 62 65 20 72 65 6d 6f  s are to be remo
82b0: 76 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 57 69  ved..</p>..<p>Wi
82c0: 74 68 6f 75 74 20 61 20 57 48 45 52 45 20 63 6c  thout a WHERE cl
82d0: 61 75 73 65 2c 20 61 6c 6c 20 72 6f 77 73 20 6f  ause, all rows o
82e0: 66 20 74 68 65 20 74 61 62 6c 65 20 61 72 65 20  f the table are 
82f0: 72 65 6d 6f 76 65 64 2e 0a 49 66 20 61 20 57 48  removed..If a WH
8300: 45 52 45 20 63 6c 61 75 73 65 20 69 73 20 73 75  ERE clause is su
8310: 70 70 6c 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c  pplied, then onl
8320: 79 20 74 68 6f 73 65 20 72 6f 77 73 20 74 68 61  y those rows tha
8330: 74 20 6d 61 74 63 68 0a 74 68 65 20 65 78 70 72  t match.the expr
8340: 65 73 73 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76  ession are remov
8350: 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  ed.</p>..<tcl>.#
8360: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8370: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8380: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8390: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
83a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
83b0: 65 63 74 69 6f 6e 20 7b 44 45 54 41 43 48 20 44  ection {DETACH D
83c0: 41 54 41 42 41 53 45 7d 20 64 65 74 61 63 68 20  ATABASE} detach 
83d0: 44 45 54 41 43 48 0a 0a 53 79 6e 74 61 78 20 7b  DETACH..Syntax {
83e0: 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44  sql-command} {.D
83f0: 45 54 41 43 48 20 5b 44 41 54 41 42 41 53 45 5d  ETACH [DATABASE]
8400: 20 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e   <database-name>
8410: 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68  .}.</tcl>..<p>Th
8420: 69 73 20 73 74 61 74 65 6d 65 6e 74 20 64 65 74  is statement det
8430: 61 63 68 65 73 20 61 6e 20 61 64 64 69 74 69 6f  aches an additio
8440: 6e 61 6c 20 64 61 74 61 62 61 73 65 20 63 6f 6e  nal database con
8450: 6e 65 63 74 69 6f 6e 20 70 72 65 76 69 6f 75 73  nection previous
8460: 6c 79 20 0a 61 74 74 61 63 68 65 64 20 75 73 69  ly .attached usi
8470: 6e 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22  ng the <a href="
8480: 6c 61 6e 67 5f 61 74 74 61 63 68 2e 68 74 6d 6c  lang_attach.html
8490: 22 3e 41 54 54 41 43 48 20 44 41 54 41 42 41 53  ">ATTACH DATABAS
84a0: 45 3c 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e  E</a> statement.
84b0: 20 20 0a 49 74 20 69 73 20 70 6f 73 73 69 62 6c    .It is possibl
84c0: 65 20 74 6f 20 68 61 76 65 20 74 68 65 20 73 61  e to have the sa
84d0: 6d 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  me database file
84e0: 20 61 74 74 61 63 68 65 64 20 6d 75 6c 74 69 70   attached multip
84f0: 6c 65 20 74 69 6d 65 73 20 75 73 69 6e 67 20 0a  le times using .
8500: 64 69 66 66 65 72 65 6e 74 20 6e 61 6d 65 73 2c  different names,
8510: 20 61 6e 64 20 64 65 74 61 63 68 69 6e 67 20 6f   and detaching o
8520: 6e 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f  ne connection to
8530: 20 61 20 66 69 6c 65 20 77 69 6c 6c 20 6c 65 61   a file will lea
8540: 76 65 20 74 68 65 20 0a 6f 74 68 65 72 73 20 69  ve the .others i
8550: 6e 74 61 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  ntact.</p>..<p>T
8560: 68 69 73 20 73 74 61 74 65 6d 65 6e 74 20 77 69  his statement wi
8570: 6c 6c 20 66 61 69 6c 20 69 66 20 53 51 4c 69 74  ll fail if SQLit
8580: 65 20 69 73 20 69 6e 20 74 68 65 20 6d 69 64 64  e is in the midd
8590: 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61 63 74  le of a transact
85a0: 69 6f 6e 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e  ion.</p>...<tcl>
85b0: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
85c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
85d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
85e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
85f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
8600: 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 49 4e  Section {DROP IN
8610: 44 45 58 7d 20 64 72 6f 70 69 6e 64 65 78 20 7b  DEX} dropindex {
8620: 7b 44 52 4f 50 20 49 4e 44 45 58 7d 7d 0a 0a 53  {DROP INDEX}}..S
8630: 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61  yntax {sql-comma
8640: 6e 64 7d 20 7b 0a 44 52 4f 50 20 49 4e 44 45 58  nd} {.DROP INDEX
8650: 20 5b 49 46 20 45 58 49 53 54 53 5d 20 5b 3c 64   [IF EXISTS] [<d
8660: 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d  atabase-name> .]
8670: 20 3c 69 6e 64 65 78 2d 6e 61 6d 65 3e 0a 7d 0a   <index-name>.}.
8680: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44  </tcl>..<p>The D
8690: 52 4f 50 20 49 4e 44 45 58 20 73 74 61 74 65 6d  ROP INDEX statem
86a0: 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 6e 20 69  ent removes an i
86b0: 6e 64 65 78 20 61 64 64 65 64 0a 77 69 74 68 20  ndex added.with 
86c0: 74 68 65 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e  the <a href="lan
86d0: 67 5f 63 72 65 61 74 65 69 6e 64 65 78 2e 68 74  g_createindex.ht
86e0: 6d 6c 22 3e 0a 43 52 45 41 54 45 20 49 4e 44 45  ml">.CREATE INDE
86f0: 58 3c 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e  X</a> statement.
8700: 20 20 54 68 65 20 69 6e 64 65 78 20 6e 61 6d 65    The index name
8710: 64 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20  d is completely 
8720: 72 65 6d 6f 76 65 64 20 66 72 6f 6d 0a 74 68 65  removed from.the
8730: 20 64 69 73 6b 2e 20 20 54 68 65 20 6f 6e 6c 79   disk.  The only
8740: 20 77 61 79 20 74 6f 20 72 65 63 6f 76 65 72 20   way to recover 
8750: 74 68 65 20 69 6e 64 65 78 20 69 73 20 74 6f 20  the index is to 
8760: 72 65 65 6e 74 65 72 20 74 68 65 0a 61 70 70 72  reenter the.appr
8770: 6f 70 72 69 61 74 65 20 43 52 45 41 54 45 20 49  opriate CREATE I
8780: 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70  NDEX command.</p
8790: 3e 0a 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 49  >..<p>The DROP I
87a0: 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74 20 64  NDEX statement d
87b0: 6f 65 73 20 6e 6f 74 20 72 65 64 75 63 65 20 74  oes not reduce t
87c0: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 64  he size of the d
87d0: 61 74 61 62 61 73 65 20 0a 66 69 6c 65 20 69 6e  atabase .file in
87e0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 6f 64   the default mod
87f0: 65 2e 0a 45 6d 70 74 79 20 73 70 61 63 65 20 69  e..Empty space i
8800: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  n the database i
8810: 73 20 72 65 74 61 69 6e 65 64 20 66 6f 72 20 6c  s retained for l
8820: 61 74 65 72 20 49 4e 53 45 52 54 73 2e 20 20 54  ater INSERTs.  T
8830: 6f 20 0a 72 65 6d 6f 76 65 20 66 72 65 65 20 73  o .remove free s
8840: 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61  pace in the data
8850: 62 61 73 65 2c 20 0a 75 73 65 20 74 68 65 20 3c  base, .use the <
8860: 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 76 61 63  a href="lang_vac
8870: 75 75 6d 2e 68 74 6d 6c 22 3e 56 41 43 55 55 4d  uum.html">VACUUM
8880: 3c 2f 61 3e 20 0a 63 6f 6d 6d 61 6e 64 2e 20 20  </a> .command.  
8890: 49 66 20 41 55 54 4f 56 41 43 55 55 4d 20 6d 6f  If AUTOVACUUM mo
88a0: 64 65 20 69 73 20 65 6e 61 62 6c 65 64 20 66 6f  de is enabled fo
88b0: 72 20 61 20 64 61 74 61 62 61 73 65 20 74 68 65  r a database the
88c0: 6e 20 73 70 61 63 65 0a 77 69 6c 6c 20 62 65 20  n space.will be 
88d0: 66 72 65 65 64 20 61 75 74 6f 6d 61 74 69 63 61  freed automatica
88e0: 6c 6c 79 20 62 79 20 44 52 4f 50 20 49 4e 44 45  lly by DROP INDE
88f0: 58 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23  X.</p>...<tcl>.#
8900: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8910: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8920: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8930: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8940: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
8950: 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54 41 42 4c  ction {DROP TABL
8960: 45 7d 20 64 72 6f 70 74 61 62 6c 65 20 7b 7b 44  E} droptable {{D
8970: 52 4f 50 20 54 41 42 4c 45 7d 7d 0a 0a 53 79 6e  ROP TABLE}}..Syn
8980: 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64  tax {sql-command
8990: 7d 20 7b 0a 44 52 4f 50 20 54 41 42 4c 45 20 5b  } {.DROP TABLE [
89a0: 49 46 20 45 58 49 53 54 53 5d 20 5b 3c 64 61 74  IF EXISTS] [<dat
89b0: 61 62 61 73 65 2d 6e 61 6d 65 3e 2e 5d 20 3c 74  abase-name>.] <t
89c0: 61 62 6c 65 2d 6e 61 6d 65 3e 0a 7d 0a 3c 2f 74  able-name>.}.</t
89d0: 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44 52 4f 50  cl>..<p>The DROP
89e0: 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
89f0: 20 72 65 6d 6f 76 65 73 20 61 20 74 61 62 6c 65   removes a table
8a00: 20 61 64 64 65 64 20 77 69 74 68 20 74 68 65 20   added with the 
8a10: 3c 61 20 68 72 65 66 3d 0a 22 6c 61 6e 67 5f 63  <a href=."lang_c
8a20: 72 65 61 74 65 74 61 62 6c 65 2e 68 74 6d 6c 22  reatetable.html"
8a30: 3e 43 52 45 41 54 45 20 54 41 42 4c 45 3c 2f 61  >CREATE TABLE</a
8a40: 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68  > statement.  Th
8a50: 65 20 6e 61 6d 65 20 73 70 65 63 69 66 69 65 64  e name specified
8a60: 20 69 73 20 74 68 65 0a 74 61 62 6c 65 20 6e 61   is the.table na
8a70: 6d 65 2e 20 20 49 74 20 69 73 20 63 6f 6d 70 6c  me.  It is compl
8a80: 65 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66 72  etely removed fr
8a90: 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65 20  om the database 
8aa0: 73 63 68 65 6d 61 20 61 6e 64 20 74 68 65 20 0a  schema and the .
8ab0: 64 69 73 6b 20 66 69 6c 65 2e 20 20 54 68 65 20  disk file.  The 
8ac0: 74 61 62 6c 65 20 63 61 6e 20 6e 6f 74 20 62 65  table can not be
8ad0: 20 72 65 63 6f 76 65 72 65 64 2e 20 20 41 6c 6c   recovered.  All
8ae0: 20 69 6e 64 69 63 65 73 20 61 73 73 6f 63 69 61   indices associa
8af0: 74 65 64 20 0a 77 69 74 68 20 74 68 65 20 74 61  ted .with the ta
8b00: 62 6c 65 20 61 72 65 20 61 6c 73 6f 20 64 65 6c  ble are also del
8b10: 65 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  eted.</p>..<p>Th
8b20: 65 20 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61  e DROP TABLE sta
8b30: 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20  tement does not 
8b40: 72 65 64 75 63 65 20 74 68 65 20 73 69 7a 65 20  reduce the size 
8b50: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
8b60: 0a 66 69 6c 65 20 69 6e 20 74 68 65 20 64 65 66  .file in the def
8b70: 61 75 6c 74 20 6d 6f 64 65 2e 20 20 45 6d 70 74  ault mode.  Empt
8b80: 79 20 73 70 61 63 65 20 69 6e 20 74 68 65 20 64  y space in the d
8b90: 61 74 61 62 61 73 65 20 69 73 20 72 65 74 61 69  atabase is retai
8ba0: 6e 65 64 20 66 6f 72 0a 6c 61 74 65 72 20 49 4e  ned for.later IN
8bb0: 53 45 52 54 73 2e 20 20 54 6f 20 0a 72 65 6d 6f  SERTs.  To .remo
8bc0: 76 65 20 66 72 65 65 20 73 70 61 63 65 20 69 6e  ve free space in
8bd0: 20 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 0a   the database, .
8be0: 75 73 65 20 74 68 65 20 3c 61 20 68 72 65 66 3d  use the <a href=
8bf0: 22 6c 61 6e 67 5f 76 61 63 75 75 6d 2e 68 74 6d  "lang_vacuum.htm
8c00: 6c 22 3e 56 41 43 55 55 4d 3c 2f 61 3e 20 0a 63  l">VACUUM</a> .c
8c10: 6f 6d 6d 61 6e 64 2e 20 20 49 66 20 41 55 54 4f  ommand.  If AUTO
8c20: 56 41 43 55 55 4d 20 6d 6f 64 65 20 69 73 20 65  VACUUM mode is e
8c30: 6e 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61 74  nabled for a dat
8c40: 61 62 61 73 65 20 74 68 65 6e 20 73 70 61 63 65  abase then space
8c50: 0a 77 69 6c 6c 20 62 65 20 66 72 65 65 64 20 61  .will be freed a
8c60: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20  utomatically by 
8c70: 44 52 4f 50 20 54 41 42 4c 45 2e 3c 2f 70 3e 0a  DROP TABLE.</p>.
8c80: 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c  .<p>The optional
8c90: 20 49 46 20 45 58 49 53 54 53 20 63 6c 61 75 73   IF EXISTS claus
8ca0: 65 20 73 75 70 70 72 65 73 73 65 73 20 74 68 65  e suppresses the
8cb0: 20 65 72 72 6f 72 20 74 68 61 74 20 77 6f 75 6c   error that woul
8cc0: 64 20 6e 6f 72 6d 61 6c 6c 79 0a 72 65 73 75 6c  d normally.resul
8cd0: 74 20 69 66 20 74 68 65 20 74 61 62 6c 65 20 64  t if the table d
8ce0: 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 3c 2f  oes not exist.</
8cf0: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
8d00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8d10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8d20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8d30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8d40: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
8d50: 20 7b 44 52 4f 50 20 54 52 49 47 47 45 52 7d 20   {DROP TRIGGER} 
8d60: 64 72 6f 70 74 72 69 67 67 65 72 20 7b 7b 44 52  droptrigger {{DR
8d70: 4f 50 20 54 52 49 47 47 45 52 7d 7d 0a 53 79 6e  OP TRIGGER}}.Syn
8d80: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
8d90: 6e 74 7d 20 7b 0a 44 52 4f 50 20 54 52 49 47 47  nt} {.DROP TRIGG
8da0: 45 52 20 5b 49 46 20 45 58 49 53 54 53 5d 20 5b  ER [IF EXISTS] [
8db0: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
8dc0: 2e 5d 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65  .] <trigger-name
8dd0: 3e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54  >.}.</tcl>..<p>T
8de0: 68 65 20 44 52 4f 50 20 54 52 49 47 47 45 52 20  he DROP TRIGGER 
8df0: 73 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65  statement remove
8e00: 73 20 61 20 74 72 69 67 67 65 72 20 63 72 65 61  s a trigger crea
8e10: 74 65 64 20 62 79 20 74 68 65 20 0a 3c 61 20 68  ted by the .<a h
8e20: 72 65 66 3d 22 6c 61 6e 67 5f 63 72 65 61 74 65  ref="lang_create
8e30: 74 72 69 67 67 65 72 2e 68 74 6d 6c 22 3e 43 52  trigger.html">CR
8e40: 45 41 54 45 20 54 52 49 47 47 45 52 3c 2f 61 3e  EATE TRIGGER</a>
8e50: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65   statement.  The
8e60: 20 74 72 69 67 67 65 72 20 69 73 20 0a 64 65 6c   trigger is .del
8e70: 65 74 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61  eted from the da
8e80: 74 61 62 61 73 65 20 73 63 68 65 6d 61 2e 20 4e  tabase schema. N
8e90: 6f 74 65 20 74 68 61 74 20 74 72 69 67 67 65 72  ote that trigger
8ea0: 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61  s are automatica
8eb0: 6c 6c 79 20 0a 64 72 6f 70 70 65 64 20 77 68 65  lly .dropped whe
8ec0: 6e 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  n the associated
8ed0: 20 74 61 62 6c 65 20 69 73 20 64 72 6f 70 70 65   table is droppe
8ee0: 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  d.</p>..<tcl>.##
8ef0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8f00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8f10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8f20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8f30: 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
8f40: 74 69 6f 6e 20 7b 44 52 4f 50 20 56 49 45 57 7d  tion {DROP VIEW}
8f50: 20 64 72 6f 70 76 69 65 77 20 7b 7b 44 52 4f 50   dropview {{DROP
8f60: 20 56 49 45 57 7d 7d 0a 0a 53 79 6e 74 61 78 20   VIEW}}..Syntax 
8f70: 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a  {sql-command} {.
8f80: 44 52 4f 50 20 56 49 45 57 20 5b 49 46 20 45 58  DROP VIEW [IF EX
8f90: 49 53 54 53 5d 20 3c 76 69 65 77 2d 6e 61 6d 65  ISTS] <view-name
8fa0: 3e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54  >.}.</tcl>..<p>T
8fb0: 68 65 20 44 52 4f 50 20 56 49 45 57 20 73 74 61  he DROP VIEW sta
8fc0: 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61  tement removes a
8fd0: 20 76 69 65 77 20 63 72 65 61 74 65 64 20 62 79   view created by
8fe0: 20 74 68 65 20 3c 61 20 68 72 65 66 3d 0a 22 6c   the <a href=."l
8ff0: 61 6e 67 5f 63 72 65 61 74 65 76 69 65 77 2e 68  ang_createview.h
9000: 74 6d 6c 22 3e 43 52 45 41 54 45 20 56 49 45 57  tml">CREATE VIEW
9010: 3c 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20  </a> statement. 
9020: 20 54 68 65 20 6e 61 6d 65 20 73 70 65 63 69 66   The name specif
9030: 69 65 64 20 69 73 20 74 68 65 20 0a 76 69 65 77  ied is the .view
9040: 20 6e 61 6d 65 2e 20 20 49 74 20 69 73 20 72 65   name.  It is re
9050: 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 64  moved from the d
9060: 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 2c 20  atabase schema, 
9070: 62 75 74 20 6e 6f 20 61 63 74 75 61 6c 20 64 61  but no actual da
9080: 74 61 20 0a 69 6e 20 74 68 65 20 75 6e 64 65 72  ta .in the under
9090: 6c 79 69 6e 67 20 62 61 73 65 20 74 61 62 6c 65  lying base table
90a0: 73 20 69 73 20 6d 6f 64 69 66 69 65 64 2e 3c 2f  s is modified.</
90b0: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
90c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
90d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
90e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
90f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9100: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
9110: 20 45 58 50 4c 41 49 4e 20 65 78 70 6c 61 69 6e   EXPLAIN explain
9120: 20 45 58 50 4c 41 49 4e 0a 0a 53 79 6e 74 61 78   EXPLAIN..Syntax
9130: 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
9140: 20 7b 0a 45 58 50 4c 41 49 4e 20 3c 73 71 6c 2d   {.EXPLAIN <sql-
9150: 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 3c 2f 74  statement>.}.</t
9160: 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 45 58 50 4c  cl>..<p>The EXPL
9170: 41 49 4e 20 63 6f 6d 6d 61 6e 64 20 6d 6f 64 69  AIN command modi
9180: 66 69 65 72 20 69 73 20 61 20 6e 6f 6e 2d 73 74  fier is a non-st
9190: 61 6e 64 61 72 64 20 65 78 74 65 6e 73 69 6f 6e  andard extension
91a0: 2e 20 20 54 68 65 0a 69 64 65 61 20 63 6f 6d 65  .  The.idea come
91b0: 73 20 66 72 6f 6d 20 61 20 73 69 6d 69 6c 61 72  s from a similar
91c0: 20 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 20 69   command found i
91d0: 6e 20 50 6f 73 74 67 72 65 53 51 4c 2c 20 62 75  n PostgreSQL, bu
91e0: 74 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 0a  t the operation.
91f0: 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 64 69  is completely di
9200: 66 66 65 72 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70  fferent.</p>..<p
9210: 3e 49 66 20 74 68 65 20 45 58 50 4c 41 49 4e 20  >If the EXPLAIN 
9220: 6b 65 79 77 6f 72 64 20 61 70 70 65 61 72 73 20  keyword appears 
9230: 62 65 66 6f 72 65 20 61 6e 79 20 6f 74 68 65 72  before any other
9240: 20 53 51 4c 69 74 65 20 53 51 4c 20 63 6f 6d 6d   SQLite SQL comm
9250: 61 6e 64 0a 74 68 65 6e 20 69 6e 73 74 65 61 64  and.then instead
9260: 20 6f 66 20 61 63 74 75 61 6c 6c 79 20 65 78 65   of actually exe
9270: 63 75 74 69 6e 67 20 74 68 65 20 63 6f 6d 6d 61  cuting the comma
9280: 6e 64 2c 20 74 68 65 20 53 51 4c 69 74 65 20 6c  nd, the SQLite l
9290: 69 62 72 61 72 79 20 77 69 6c 6c 0a 72 65 70 6f  ibrary will.repo
92a0: 72 74 20 62 61 63 6b 20 74 68 65 20 73 65 71 75  rt back the sequ
92b0: 65 6e 63 65 20 6f 66 20 76 69 72 74 75 61 6c 20  ence of virtual 
92c0: 6d 61 63 68 69 6e 65 20 69 6e 73 74 72 75 63 74  machine instruct
92d0: 69 6f 6e 73 20 69 74 20 77 6f 75 6c 64 20 68 61  ions it would ha
92e0: 76 65 0a 75 73 65 64 20 74 6f 20 65 78 65 63 75  ve.used to execu
92f0: 74 65 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 68  te the command h
9300: 61 64 20 74 68 65 20 45 58 50 4c 41 49 4e 20 6b  ad the EXPLAIN k
9310: 65 79 77 6f 72 64 20 6e 6f 74 20 62 65 65 6e 20  eyword not been 
9320: 70 72 65 73 65 6e 74 2e 0a 46 6f 72 20 61 64 64  present..For add
9330: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
9340: 69 6f 6e 20 61 62 6f 75 74 20 76 69 72 74 75 61  ion about virtua
9350: 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72 75  l machine instru
9360: 63 74 69 6f 6e 73 20 73 65 65 0a 74 68 65 20 3c  ctions see.the <
9370: 61 20 68 72 65 66 3d 22 61 72 63 68 2e 68 74 6d  a href="arch.htm
9380: 6c 22 3e 61 72 63 68 69 74 65 63 74 75 72 65 20  l">architecture 
9390: 64 65 73 63 72 69 70 74 69 6f 6e 3c 2f 61 3e 20  description</a> 
93a0: 6f 72 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61  or the documenta
93b0: 74 69 6f 6e 0a 6f 6e 20 3c 61 20 68 72 65 66 3d  tion.on <a href=
93c0: 22 6f 70 63 6f 64 65 2e 68 74 6d 6c 22 3e 61 76  "opcode.html">av
93d0: 61 69 6c 61 62 6c 65 20 6f 70 63 6f 64 65 73 3c  ailable opcodes<
93e0: 2f 61 3e 20 66 6f 72 20 74 68 65 20 76 69 72 74  /a> for the virt
93f0: 75 61 6c 20 6d 61 63 68 69 6e 65 2e 3c 2f 70 3e  ual machine.</p>
9400: 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
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 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9450: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 65  ######.Section e
9460: 78 70 72 65 73 73 69 6f 6e 20 65 78 70 72 20 7b  xpression expr {
9470: 65 78 70 72 65 73 73 69 6f 6e 20 7b 65 78 70 72  expression {expr
9480: 65 73 73 69 6f 6e 20 73 79 6e 74 61 78 7d 7d 0a  ession syntax}}.
9490: 0a 53 79 6e 74 61 78 20 7b 65 78 70 72 7d 20 7b  .Syntax {expr} {
94a0: 0a 3c 65 78 70 72 3e 20 3c 62 69 6e 61 72 79 2d  .<expr> <binary-
94b0: 6f 70 3e 20 3c 65 78 70 72 3e 20 7c 0a 3c 65 78  op> <expr> |.<ex
94c0: 70 72 3e 20 5b 4e 4f 54 5d 20 3c 6c 69 6b 65 2d  pr> [NOT] <like-
94d0: 6f 70 3e 20 3c 65 78 70 72 3e 20 5b 45 53 43 41  op> <expr> [ESCA
94e0: 50 45 20 3c 65 78 70 72 3e 5d 20 7c 0a 3c 75 6e  PE <expr>] |.<un
94f0: 61 72 79 2d 6f 70 3e 20 3c 65 78 70 72 3e 20 7c  ary-op> <expr> |
9500: 0a 28 20 3c 65 78 70 72 3e 20 29 20 7c 0a 3c 63  .( <expr> ) |.<c
9510: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 74  olumn-name> |.<t
9520: 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20 3c 63 6f  able-name> . <co
9530: 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 64 61  lumn-name> |.<da
9540: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 20 3c  tabase-name> . <
9550: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20 3c 63  table-name> . <c
9560: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 6c  olumn-name> |.<l
9570: 69 74 65 72 61 6c 2d 76 61 6c 75 65 3e 20 7c 0a  iteral-value> |.
9580: 3c 70 61 72 61 6d 65 74 65 72 3e 20 7c 0a 3c 66  <parameter> |.<f
9590: 75 6e 63 74 69 6f 6e 2d 6e 61 6d 65 3e 20 28 20  unction-name> ( 
95a0: 3c 65 78 70 72 2d 6c 69 73 74 3e 20 7c 20 53 54  <expr-list> | ST
95b0: 41 52 20 29 20 7c 0a 3c 65 78 70 72 3e 20 49 53  AR ) |.<expr> IS
95c0: 4e 55 4c 4c 20 7c 0a 3c 65 78 70 72 3e 20 4e 4f  NULL |.<expr> NO
95d0: 54 4e 55 4c 4c 20 7c 0a 3c 65 78 70 72 3e 20 5b  TNULL |.<expr> [
95e0: 4e 4f 54 5d 20 42 45 54 57 45 45 4e 20 3c 65 78  NOT] BETWEEN <ex
95f0: 70 72 3e 20 41 4e 44 20 3c 65 78 70 72 3e 20 7c  pr> AND <expr> |
9600: 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e  .<expr> [NOT] IN
9610: 20 28 20 3c 76 61 6c 75 65 2d 6c 69 73 74 3e 20   ( <value-list> 
9620: 29 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d  ) |.<expr> [NOT]
9630: 20 49 4e 20 28 20 3c 73 65 6c 65 63 74 2d 73 74   IN ( <select-st
9640: 61 74 65 6d 65 6e 74 3e 20 29 20 7c 0a 3c 65 78  atement> ) |.<ex
9650: 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 5b 3c 64  pr> [NOT] IN [<d
9660: 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d  atabase-name> .]
9670: 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 7c 0a   <table-name> |.
9680: 5b 45 58 49 53 54 53 5d 20 28 20 3c 73 65 6c 65  [EXISTS] ( <sele
9690: 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 20 29 20  ct-statement> ) 
96a0: 7c 0a 43 41 53 45 20 5b 3c 65 78 70 72 3e 5d 20  |.CASE [<expr>] 
96b0: 4c 50 20 57 48 45 4e 20 3c 65 78 70 72 3e 20 54  LP WHEN <expr> T
96c0: 48 45 4e 20 3c 65 78 70 72 3e 20 52 50 50 4c 55  HEN <expr> RPPLU
96d0: 53 20 5b 45 4c 53 45 20 3c 65 78 70 72 3e 5d 20  S [ELSE <expr>] 
96e0: 45 4e 44 20 7c 0a 43 41 53 54 20 28 20 3c 65 78  END |.CAST ( <ex
96f0: 70 72 3e 20 41 53 20 3c 74 79 70 65 3e 20 29 20  pr> AS <type> ) 
9700: 7c 0a 3c 65 78 70 72 3e 20 43 4f 4c 4c 41 54 45  |.<expr> COLLATE
9710: 20 3c 63 6f 6c 6c 61 74 69 6f 6e 2d 6e 61 6d 65   <collation-name
9720: 3e 0a 7d 20 7b 6c 69 6b 65 2d 6f 70 7d 20 7b 0a  >.} {like-op} {.
9730: 4c 49 4b 45 20 7c 20 47 4c 4f 42 20 7c 20 52 45  LIKE | GLOB | RE
9740: 47 45 58 50 20 7c 20 4d 41 54 43 48 0a 7d 0a 3c  GEXP | MATCH.}.<
9750: 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 69 73 20 73  /tcl>..<p>This s
9760: 65 63 74 69 6f 6e 20 69 73 20 64 69 66 66 65 72  ection is differ
9770: 65 6e 74 20 66 72 6f 6d 20 74 68 65 20 6f 74 68  ent from the oth
9780: 65 72 73 2e 20 20 4d 6f 73 74 20 6f 74 68 65 72  ers.  Most other
9790: 20 73 65 63 74 69 6f 6e 73 20 6f 66 0a 74 68 69   sections of.thi
97a0: 73 20 64 6f 63 75 6d 65 6e 74 20 74 61 6c 6b 73  s document talks
97b0: 20 61 62 6f 75 74 20 61 20 70 61 72 74 69 63 75   about a particu
97c0: 6c 61 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e  lar SQL command.
97d0: 20 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 64    This section d
97e0: 6f 65 73 0a 6e 6f 74 20 74 61 6c 6b 20 61 62 6f  oes.not talk abo
97f0: 75 74 20 61 20 73 74 61 6e 64 61 6c 6f 6e 65 20  ut a standalone 
9800: 63 6f 6d 6d 61 6e 64 20 62 75 74 20 61 62 6f 75  command but abou
9810: 74 20 22 65 78 70 72 65 73 73 69 6f 6e 73 22 20  t "expressions" 
9820: 77 68 69 63 68 20 61 72 65 20 0a 73 75 62 63 6f  which are .subco
9830: 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 6d 6f 73 74  mponents of most
9840: 20 6f 74 68 65 72 20 63 6f 6d 6d 61 6e 64 73 2e   other commands.
9850: 3c 2f 70 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65 20  </p>..<p>SQLite 
9860: 75 6e 64 65 72 73 74 61 6e 64 73 20 74 68 65 20  understands the 
9870: 66 6f 6c 6c 6f 77 69 6e 67 20 62 69 6e 61 72 79  following binary
9880: 20 6f 70 65 72 61 74 6f 72 73 2c 20 69 6e 20 6f   operators, in o
9890: 72 64 65 72 20 66 72 6f 6d 0a 68 69 67 68 65 73  rder from.highes
98a0: 74 20 74 6f 20 6c 6f 77 65 73 74 20 70 72 65 63  t to lowest prec
98b0: 65 64 65 6e 63 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c  edence:</p>..<bl
98c0: 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 3c  ockquote><pre>.<
98d0: 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32  font color="#2c2
98e0: 63 66 30 22 3e 3c 62 69 67 3e 7c 7c 0a 2a 20 20  cf0"><big>||.*  
98f0: 20 20 2f 20 20 20 20 25 0a 2b 20 20 20 20 2d 0a    /    %.+    -.
9900: 26 6c 74 3b 26 6c 74 3b 20 20 20 26 67 74 3b 26  &lt;&lt;   &gt;&
9910: 67 74 3b 20 20 20 26 61 6d 70 3b 20 20 20 20 7c  gt;   &amp;    |
9920: 0a 26 6c 74 3b 20 20 20 20 26 6c 74 3b 3d 20 20  .&lt;    &lt;=  
9930: 20 26 67 74 3b 20 20 20 20 26 67 74 3b 3d 0a 3d   &gt;    &gt;=.=
9940: 20 20 20 20 3d 3d 20 20 20 21 3d 20 20 20 26 6c      ==   !=   &l
9950: 74 3b 26 67 74 3b 20 20 20 3c 2f 62 69 67 3e 49  t;&gt;   </big>I
9960: 4e 0a 41 4e 44 20 20 20 0a 4f 52 3c 2f 66 6f 6e  N.AND   .OR</fon
9970: 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  t>.</pre></block
9980: 71 75 6f 74 65 3e 0a 0a 3c 70 3e 53 75 70 70 6f  quote>..<p>Suppo
9990: 72 74 65 64 20 75 6e 61 72 79 20 70 72 65 66 69  rted unary prefi
99a0: 78 20 6f 70 65 72 61 74 6f 72 73 20 61 72 65 20  x operators are 
99b0: 74 68 65 73 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f  these:</p>..<blo
99c0: 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 3c 66  ckquote><pre>.<f
99d0: 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63  ont color="#2c2c
99e0: 66 30 22 3e 3c 62 69 67 3e 2d 20 20 20 20 2b 20  f0"><big>-    + 
99f0: 20 20 20 7e 20 20 20 20 4e 4f 54 3c 2f 62 69 67     ~    NOT</big
9a00: 3e 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c  ></font>.</pre><
9a10: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70  /blockquote>..<p
9a20: 3e 54 68 65 20 43 4f 4c 4c 41 54 45 20 6f 70 65  >The COLLATE ope
9a30: 72 61 74 6f 72 20 63 61 6e 20 62 65 20 74 68 6f  rator can be tho
9a40: 75 67 68 74 20 6f 66 20 61 73 20 61 20 75 6e 61  ught of as a una
9a50: 72 79 20 70 6f 73 74 66 69 78 0a 6f 70 65 72 61  ry postfix.opera
9a60: 74 6f 72 2e 20 20 54 68 65 20 43 4f 4c 4c 41 54  tor.  The COLLAT
9a70: 45 20 6f 70 65 72 61 74 6f 72 20 68 61 73 20 74  E operator has t
9a80: 68 65 20 68 69 67 68 65 73 74 20 70 72 65 63 65  he highest prece
9a90: 64 65 6e 63 65 2e 0a 49 74 20 61 6c 77 61 79 73  dence..It always
9aa0: 20 62 69 6e 64 73 20 6d 6f 72 65 20 74 69 67 68   binds more tigh
9ab0: 74 6c 79 20 74 68 61 6e 20 61 6e 79 20 70 72 65  tly than any pre
9ac0: 66 69 78 20 75 6e 61 72 79 20 6f 70 65 72 61 74  fix unary operat
9ad0: 6f 72 20 6f 72 0a 61 6e 79 20 62 69 6e 61 72 79  or or.any binary
9ae0: 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70 3e 0a 0a   operator.</p>..
9af0: 3c 74 63 6c 3e 68 64 5f 70 75 74 73 20 22 0a 3c  <tcl>hd_puts ".<
9b00: 70 3e 54 68 65 20 75 6e 61 72 79 20 6f 70 65 72  p>The unary oper
9b10: 61 74 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 2b  ator [Operator +
9b20: 5d 20 69 73 20 61 20 6e 6f 2d 6f 70 2e 20 20 49  ] is a no-op.  I
9b30: 74 20 63 61 6e 20 62 65 20 61 70 70 6c 69 65 64  t can be applied
9b40: 0a 74 6f 20 73 74 72 69 6e 67 73 2c 20 6e 75 6d  .to strings, num
9b50: 62 65 72 73 2c 20 6f 72 20 62 6c 6f 62 73 20 61  bers, or blobs a
9b60: 6e 64 20 69 74 20 61 6c 77 61 79 73 20 67 69 76  nd it always giv
9b70: 65 73 20 61 73 20 69 74 73 20 72 65 73 75 6c 74  es as its result
9b80: 20 74 68 65 0a 76 61 6c 75 65 20 6f 66 20 74 68   the.value of th
9b90: 65 20 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e 22 3c  e operand.</p>"<
9ba0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 4e 6f 74 65 20 74  /tcl>..<p>Note t
9bb0: 68 61 74 20 74 68 65 72 65 20 61 72 65 20 74 77  hat there are tw
9bc0: 6f 20 76 61 72 69 61 74 69 6f 6e 73 20 6f 66 20  o variations of 
9bd0: 74 68 65 20 65 71 75 61 6c 73 20 61 6e 64 20 6e  the equals and n
9be0: 6f 74 20 65 71 75 61 6c 73 0a 6f 70 65 72 61 74  ot equals.operat
9bf0: 6f 72 73 2e 20 20 45 71 75 61 6c 73 20 63 61 6e  ors.  Equals can
9c00: 20 62 65 20 65 69 74 68 65 72 0a 0a 3c 74 63 6c   be either..<tcl
9c10: 3e 0a 68 64 5f 70 75 74 73 20 22 5b 4f 70 65 72  >.hd_puts "[Oper
9c20: 61 74 6f 72 20 3d 5d 20 6f 72 20 5b 4f 70 65 72  ator =] or [Oper
9c30: 61 74 6f 72 20 3d 3d 5d 2e 0a 54 68 65 20 6e 6f  ator ==]..The no
9c40: 6e 2d 65 71 75 61 6c 73 20 6f 70 65 72 61 74 6f  n-equals operato
9c50: 72 20 63 61 6e 20 62 65 20 65 69 74 68 65 72 0a  r can be either.
9c60: 5b 4f 70 65 72 61 74 6f 72 20 21 3d 5d 20 6f 72  [Operator !=] or
9c70: 20 5b 4f 70 65 72 61 74 6f 72 20 7b 26 6c 74 3b   [Operator {&lt;
9c80: 26 67 74 3b 7d 5d 2e 0a 54 68 65 20 5b 4f 70 65  &gt;}]..The [Ope
9c90: 72 61 74 6f 72 20 7c 7c 5d 20 6f 70 65 72 61 74  rator ||] operat
9ca0: 6f 72 20 69 73 20 5c 22 63 6f 6e 63 61 74 65 6e  or is \"concaten
9cb0: 61 74 65 5c 22 20 2d 20 69 74 20 6a 6f 69 6e 73  ate\" - it joins
9cc0: 20 74 6f 67 65 74 68 65 72 0a 74 68 65 20 74 77   together.the tw
9cd0: 6f 20 73 74 72 69 6e 67 73 20 6f 66 20 69 74 73  o strings of its
9ce0: 20 6f 70 65 72 61 6e 64 73 2e 0a 54 68 65 20 6f   operands..The o
9cf0: 70 65 72 61 74 6f 72 20 5b 4f 70 65 72 61 74 6f  perator [Operato
9d00: 72 20 25 5d 20 6f 75 74 70 75 74 73 20 74 68 65  r %] outputs the
9d10: 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20 69 74   remainder of it
9d20: 73 20 6c 65 66 74 20 0a 6f 70 65 72 61 6e 64 20  s left .operand 
9d30: 6d 6f 64 75 6c 6f 20 69 74 73 20 72 69 67 68 74  modulo its right
9d40: 20 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c   operand.</p>..<
9d50: 70 3e 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20  p>The result of 
9d60: 61 6e 79 20 62 69 6e 61 72 79 20 6f 70 65 72 61  any binary opera
9d70: 74 6f 72 20 69 73 20 61 20 6e 75 6d 65 72 69 63  tor is a numeric
9d80: 20 76 61 6c 75 65 2c 20 65 78 63 65 70 74 0a 66   value, except.f
9d90: 6f 72 20 74 68 65 20 5b 4f 70 65 72 61 74 6f 72  or the [Operator
9da0: 20 7c 7c 5d 20 63 6f 6e 63 61 74 65 6e 61 74 69   ||] concatenati
9db0: 6f 6e 20 6f 70 65 72 61 74 6f 72 20 77 68 69 63  on operator whic
9dc0: 68 20 67 69 76 65 73 20 61 20 73 74 72 69 6e 67  h gives a string
9dd0: 0a 72 65 73 75 6c 74 2e 3c 2f 70 3e 22 3c 2f 74  .result.</p>"</t
9de0: 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 6c 69  cl>..<a name="li
9df0: 74 65 72 61 6c 5f 76 61 6c 75 65 22 3e 3c 2f 61  teral_value"></a
9e00: 3e 0a 3c 70 3e 0a 41 20 6c 69 74 65 72 61 6c 20  >.<p>.A literal 
9e10: 76 61 6c 75 65 20 69 73 20 61 6e 20 69 6e 74 65  value is an inte
9e20: 67 65 72 20 6e 75 6d 62 65 72 20 6f 72 20 61 20  ger number or a 
9e30: 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e  floating point n
9e40: 75 6d 62 65 72 2e 0a 53 63 69 65 6e 74 69 66 69  umber..Scientifi
9e50: 63 20 6e 6f 74 61 74 69 6f 6e 20 69 73 20 73 75  c notation is su
9e60: 70 70 6f 72 74 65 64 2e 20 20 54 68 65 20 22 2e  pported.  The ".
9e70: 22 20 63 68 61 72 61 63 74 65 72 20 69 73 20 61  " character is a
9e80: 6c 77 61 79 73 20 75 73 65 64 0a 61 73 20 74 68  lways used.as th
9e90: 65 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74 20  e decimal point 
9ea0: 65 76 65 6e 20 69 66 20 74 68 65 20 6c 6f 63 61  even if the loca
9eb0: 6c 65 20 73 65 74 74 69 6e 67 20 73 70 65 63 69  le setting speci
9ec0: 66 69 65 73 20 22 2c 22 20 66 6f 72 0a 74 68 69  fies "," for.thi
9ed0: 73 20 72 6f 6c 65 20 2d 20 74 68 65 20 75 73 65  s role - the use
9ee0: 20 6f 66 20 22 2c 22 20 66 6f 72 20 74 68 65 20   of "," for the 
9ef0: 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74 20 77 6f  decimal point wo
9f00: 75 6c 64 20 72 65 73 75 6c 74 20 69 6e 0a 73 79  uld result in.sy
9f10: 6e 74 61 63 74 69 63 20 61 6d 62 69 67 75 69 74  ntactic ambiguit
9f20: 79 2e 20 20 41 20 73 74 72 69 6e 67 20 63 6f 6e  y.  A string con
9f30: 73 74 61 6e 74 20 69 73 20 66 6f 72 6d 65 64 20  stant is formed 
9f40: 62 79 20 65 6e 63 6c 6f 73 69 6e 67 20 74 68 65  by enclosing the
9f50: 0a 73 74 72 69 6e 67 20 69 6e 20 73 69 6e 67 6c  .string in singl
9f60: 65 20 71 75 6f 74 65 73 20 28 27 29 2e 20 20 41  e quotes (').  A
9f70: 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 20 77 69   single quote wi
9f80: 74 68 69 6e 20 74 68 65 20 73 74 72 69 6e 67 20  thin the string 
9f90: 63 61 6e 0a 62 65 20 65 6e 63 6f 64 65 64 20 62  can.be encoded b
9fa0: 79 20 70 75 74 74 69 6e 67 20 74 77 6f 20 73 69  y putting two si
9fb0: 6e 67 6c 65 20 71 75 6f 74 65 73 20 69 6e 20 61  ngle quotes in a
9fc0: 20 72 6f 77 20 2d 20 61 73 20 69 6e 20 50 61 73   row - as in Pas
9fd0: 63 61 6c 2e 0a 43 2d 73 74 79 6c 65 20 65 73 63  cal..C-style esc
9fe0: 61 70 65 73 20 75 73 69 6e 67 20 74 68 65 20 62  apes using the b
9ff0: 61 63 6b 73 6c 61 73 68 20 63 68 61 72 61 63 74  ackslash charact
a000: 65 72 20 61 72 65 20 6e 6f 74 20 73 75 70 70 6f  er are not suppo
a010: 72 74 65 64 20 62 65 63 61 75 73 65 0a 74 68 65  rted because.the
a020: 79 20 61 72 65 20 6e 6f 74 20 73 74 61 6e 64 61  y are not standa
a030: 72 64 20 53 51 4c 2e 0a 42 4c 4f 42 20 6c 69 74  rd SQL..BLOB lit
a040: 65 72 61 6c 73 20 61 72 65 20 73 74 72 69 6e 67  erals are string
a050: 20 6c 69 74 65 72 61 6c 73 20 63 6f 6e 74 61 69   literals contai
a060: 6e 69 6e 67 20 68 65 78 61 64 65 63 69 6d 61 6c  ning hexadecimal
a070: 20 64 61 74 61 20 61 6e 64 0a 70 72 65 63 65 64   data and.preced
a080: 65 64 20 62 79 20 61 20 73 69 6e 67 6c 65 20 22  ed by a single "
a090: 78 22 20 6f 72 20 22 58 22 20 63 68 61 72 61 63  x" or "X" charac
a0a0: 74 65 72 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  ter.  For exampl
a0b0: 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  e:</p>..<blockqu
a0c0: 6f 74 65 3e 3c 70 72 65 3e 0a 58 27 35 33 35 31  ote><pre>.X'5351
a0d0: 34 43 36 39 37 34 36 35 27 0a 3c 2f 70 72 65 3e  4C697465'.</pre>
a0e0: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c  </blockquote>..<
a0f0: 70 3e 0a 41 20 6c 69 74 65 72 61 6c 20 76 61 6c  p>.A literal val
a100: 75 65 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 74  ue can also be t
a110: 68 65 20 74 6f 6b 65 6e 20 22 4e 55 4c 4c 22 2e  he token "NULL".
a120: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41 20 70 61 72  .</p>..<p>.A par
a130: 61 6d 65 74 65 72 20 73 70 65 63 69 66 69 65 73  ameter specifies
a140: 20 61 20 70 6c 61 63 65 68 6f 6c 64 65 72 20 69   a placeholder i
a150: 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  n the expression
a160: 20 66 6f 72 20 61 20 6c 69 74 65 72 61 6c 0a 76   for a literal.v
a170: 61 6c 75 65 20 74 68 61 74 20 69 73 20 66 69 6c  alue that is fil
a180: 6c 65 64 20 69 6e 20 61 74 20 72 75 6e 74 69 6d  led in at runtim
a190: 65 20 75 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c  e using the.[sql
a1a0: 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 29  ite3_bind_blob()
a1b0: 20 7c 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 28   | sqlite3_bind(
a1c0: 29 5d 20 41 50 49 73 2e 0a 50 61 72 61 6d 65 74  )] APIs..Paramet
a1d0: 65 72 73 20 63 61 6e 20 74 61 6b 65 20 73 65 76  ers can take sev
a1e0: 65 72 61 6c 20 66 6f 72 6d 73 3a 0a 3c 2f 70 0a  eral forms:.</p.
a1f0: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74  .<blockquote>.<t
a200: 61 62 6c 65 20 63 6c 61 73 73 3d 22 70 64 66 5f  able class="pdf_
a210: 66 75 6e 63 74 69 6f 6e 73 22 3e 0a 3c 74 72 3e  functions">.<tr>
a220: 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69 67 68  .<td align="righ
a230: 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  t" valign="top">
a240: 3c 62 3e 3f 3c 2f 62 3e 3c 69 3e 4e 4e 4e 3c 2f  <b>?</b><i>NNN</
a250: 69 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68  i></td><td width
a260: 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e  ="20"></td>.<td>
a270: 41 20 71 75 65 73 74 69 6f 6e 20 6d 61 72 6b 20  A question mark 
a280: 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 6e 75  followed by a nu
a290: 6d 62 65 72 20 3c 69 3e 4e 4e 4e 3c 2f 69 3e 20  mber <i>NNN</i> 
a2a0: 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f 72  holds a spot for
a2b0: 20 74 68 65 0a 4e 4e 4e 2d 74 68 20 70 61 72 61   the.NNN-th para
a2c0: 6d 65 74 65 72 2e 20 20 4e 4e 4e 20 6d 75 73 74  meter.  NNN must
a2d0: 20 62 65 20 62 65 74 77 65 65 6e 20 31 20 61 6e   be between 1 an
a2e0: 64 20 39 39 39 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  d 999.</td>.</tr
a2f0: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e  >.<tr>.<td align
a300: 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d  ="right" valign=
a310: 22 74 6f 70 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c 2f  "top"><b>?</b></
a320: 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30  td><td width="20
a330: 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 71 75  "></td>.<td>A qu
a340: 65 73 74 69 6f 6e 20 6d 61 72 6b 20 74 68 61 74  estion mark that
a350: 20 69 73 20 6e 6f 74 20 66 6f 6c 6c 6f 77 65 64   is not followed
a360: 20 62 79 20 61 20 6e 75 6d 62 65 72 20 68 6f 6c   by a number hol
a370: 64 73 20 61 20 73 70 6f 74 20 66 6f 72 0a 74 68  ds a spot for.th
a380: 65 20 6e 65 78 74 20 75 6e 75 73 65 64 20 70 61  e next unused pa
a390: 72 61 6d 65 74 65 72 2e 3c 2f 74 64 3e 0a 3c 2f  rameter.</td>.</
a3a0: 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69  tr>.<tr>.<td ali
a3b0: 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67  gn="right" valig
a3c0: 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3a 3c 2f 62 3e  n="top"><b>:</b>
a3d0: 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e  <i>AAAA</i></td>
a3e0: 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c  <td width="20"><
a3f0: 2f 74 64 3e 0a 3c 74 64 3e 41 20 63 6f 6c 6f 6e  /td>.<td>A colon
a400: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 6e 20   followed by an 
a410: 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 20  identifier name 
a420: 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f 72  holds a spot for
a430: 20 61 20 6e 61 6d 65 64 0a 70 61 72 61 6d 65 74   a named.paramet
a440: 65 72 20 77 69 74 68 20 74 68 65 20 6e 61 6d 65  er with the name
a450: 20 41 41 41 41 2e 20 20 4e 61 6d 65 64 20 70 61   AAAA.  Named pa
a460: 72 61 6d 65 74 65 72 73 20 61 72 65 20 61 6c 73  rameters are als
a470: 6f 20 6e 75 6d 62 65 72 65 64 2e 0a 54 68 65 20  o numbered..The 
a480: 6e 75 6d 62 65 72 20 61 73 73 69 67 6e 65 64 20  number assigned 
a490: 69 73 20 74 68 65 20 6e 65 78 74 20 75 6e 75 73  is the next unus
a4a0: 65 64 20 6e 75 6d 62 65 72 2e 20 20 54 6f 20 61  ed number.  To a
a4b0: 76 6f 69 64 20 63 6f 6e 66 75 73 69 6f 6e 2c 0a  void confusion,.
a4c0: 69 74 20 69 73 20 62 65 73 74 20 74 6f 20 61 76  it is best to av
a4d0: 6f 69 64 20 6d 69 78 69 6e 67 20 6e 61 6d 65 64  oid mixing named
a4e0: 20 61 6e 64 20 6e 75 6d 62 65 72 65 64 20 70 61   and numbered pa
a4f0: 72 61 6d 65 74 65 72 73 2e 3c 2f 74 64 3e 0a 3c  rameters.</td>.<
a500: 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c  /tr>.<tr>.<td al
a510: 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69  ign="right" vali
a520: 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 40 3c 2f 62  gn="top"><b>@</b
a530: 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74 64  ><i>AAAA</i></td
a540: 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e  ><td width="20">
a550: 3c 2f 74 64 3e 0a 3c 74 64 3e 41 6e 20 22 61 74  </td>.<td>An "at
a560: 22 20 73 69 67 6e 20 77 6f 72 6b 73 20 65 78 61  " sign works exa
a570: 63 74 6c 79 20 6c 69 6b 65 20 61 20 63 6f 6c 6f  ctly like a colo
a580: 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74  n.</td>.</tr>.<t
a590: 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69  r>.<td align="ri
a5a0: 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70  ght" valign="top
a5b0: 22 3e 3c 62 3e 24 3c 2f 62 3e 3c 69 3e 41 41 41  "><b>$</b><i>AAA
a5c0: 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77 69  A</i></td><td wi
a5d0: 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c  dth="20"></td>.<
a5e0: 74 64 3e 41 20 64 6f 6c 6c 61 72 2d 73 69 67 6e  td>A dollar-sign
a5f0: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 6e 20   followed by an 
a600: 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 20  identifier name 
a610: 61 6c 73 6f 20 68 6f 6c 64 73 20 61 20 73 70 6f  also holds a spo
a620: 74 20 66 6f 72 20 61 20 6e 61 6d 65 64 0a 70 61  t for a named.pa
a630: 72 61 6d 65 74 65 72 20 77 69 74 68 20 74 68 65  rameter with the
a640: 20 6e 61 6d 65 20 41 41 41 41 2e 20 20 54 68 65   name AAAA.  The
a650: 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65   identifier name
a660: 20 69 6e 20 74 68 69 73 20 63 61 73 65 20 63 61   in this case ca
a670: 6e 20 69 6e 63 6c 75 64 65 0a 6f 6e 65 20 6f 72  n include.one or
a680: 20 6d 6f 72 65 20 6f 63 63 75 72 61 6e 63 65 73   more occurances
a690: 20 6f 66 20 22 3a 3a 22 20 61 6e 64 20 61 20 73   of "::" and a s
a6a0: 75 66 66 69 78 20 65 6e 63 6c 6f 73 65 64 20 69  uffix enclosed i
a6b0: 6e 20 22 28 2e 2e 2e 29 22 20 63 6f 6e 74 61 69  n "(...)" contai
a6c0: 6e 69 6e 67 0a 61 6e 79 20 74 65 78 74 20 61 74  ning.any text at
a6d0: 20 61 6c 6c 2e 20 20 54 68 69 73 20 73 79 6e 74   all.  This synt
a6e0: 61 78 20 69 73 20 74 68 65 20 66 6f 72 6d 20 6f  ax is the form o
a6f0: 66 20 61 20 76 61 72 69 61 62 6c 65 20 6e 61 6d  f a variable nam
a700: 65 20 69 6e 20 74 68 65 20 54 63 6c 0a 70 72 6f  e in the Tcl.pro
a710: 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67 75 61 67  gramming languag
a720: 65 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f  e.</td>.</tr>.</
a730: 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75  table>.</blockqu
a740: 6f 74 65 3e 0a 0a 3c 70 3e 50 61 72 61 6d 65 74  ote>..<p>Paramet
a750: 65 72 73 20 74 68 61 74 20 61 72 65 20 6e 6f 74  ers that are not
a760: 20 61 73 73 69 67 6e 65 64 20 76 61 6c 75 65 73   assigned values
a770: 20 75 73 69 6e 67 0a 5b 73 71 6c 69 74 65 33 5f   using.[sqlite3_
a780: 62 69 6e 64 5f 62 6c 6f 62 28 29 20 7c 20 73 71  bind_blob() | sq
a790: 6c 69 74 65 33 5f 62 69 6e 64 28 29 5d 20 61 72  lite3_bind()] ar
a7a0: 65 20 74 72 65 61 74 65 64 0a 61 73 20 4e 55 4c  e treated.as NUL
a7b0: 4c 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f  L.</p>..<tcl>hd_
a7c0: 66 72 61 67 6d 65 6e 74 20 6c 69 6b 65 20 4c 49  fragment like LI
a7d0: 4b 45 20 45 53 43 41 50 45 3c 2f 74 63 6c 3e 0a  KE ESCAPE</tcl>.
a7e0: 3c 70 3e 54 68 65 20 4c 49 4b 45 20 6f 70 65 72  <p>The LIKE oper
a7f0: 61 74 6f 72 20 64 6f 65 73 20 61 20 70 61 74 74  ator does a patt
a800: 65 72 6e 20 6d 61 74 63 68 69 6e 67 20 63 6f 6d  ern matching com
a810: 70 61 72 69 73 6f 6e 2e 20 54 68 65 20 6f 70 65  parison. The ope
a820: 72 61 6e 64 0a 74 6f 20 74 68 65 20 72 69 67 68  rand.to the righ
a830: 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 70  t contains the p
a840: 61 74 74 65 72 6e 2c 20 74 68 65 20 6c 65 66 74  attern, the left
a850: 20 68 61 6e 64 20 6f 70 65 72 61 6e 64 20 63 6f   hand operand co
a860: 6e 74 61 69 6e 73 20 74 68 65 0a 73 74 72 69 6e  ntains the.strin
a870: 67 20 74 6f 20 6d 61 74 63 68 20 61 67 61 69 6e  g to match again
a880: 73 74 20 74 68 65 20 70 61 74 74 65 72 6e 2e 20  st the pattern. 
a890: 0a 0a 3c 74 63 6c 3e 68 64 5f 70 75 74 73 20 22  ..<tcl>hd_puts "
a8a0: 41 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c  A percent symbol
a8b0: 20 5b 4f 70 65 72 61 74 6f 72 20 25 5d 20 69 6e   [Operator %] in
a8c0: 20 74 68 65 20 70 61 74 74 65 72 6e 20 6d 61 74   the pattern mat
a8d0: 63 68 65 73 20 61 6e 79 0a 73 65 71 75 65 6e 63  ches any.sequenc
a8e0: 65 20 6f 66 20 7a 65 72 6f 20 6f 72 20 6d 6f 72  e of zero or mor
a8f0: 65 20 63 68 61 72 61 63 74 65 72 73 20 69 6e 20  e characters in 
a900: 74 68 65 20 73 74 72 69 6e 67 2e 20 20 41 6e 20  the string.  An 
a910: 75 6e 64 65 72 73 63 6f 72 65 0a 5b 4f 70 65 72  underscore.[Oper
a920: 61 74 6f 72 20 5f 5d 20 69 6e 20 74 68 65 20 70  ator _] in the p
a930: 61 74 74 65 72 6e 20 6d 61 74 63 68 65 73 20 61  attern matches a
a940: 6e 79 20 73 69 6e 67 6c 65 20 63 68 61 72 61 63  ny single charac
a950: 74 65 72 20 69 6e 20 74 68 65 0a 73 74 72 69 6e  ter in the.strin
a960: 67 2e 20 20 41 6e 79 20 6f 74 68 65 72 20 63 68  g.  Any other ch
a970: 61 72 61 63 74 65 72 20 6d 61 74 63 68 65 73 20  aracter matches 
a980: 69 74 73 65 6c 66 20 6f 72 20 69 74 27 73 20 6c  itself or it's l
a990: 6f 77 65 72 2f 75 70 70 65 72 20 63 61 73 65 0a  ower/upper case.
a9a0: 65 71 75 69 76 61 6c 65 6e 74 20 28 69 2e 65 2e  equivalent (i.e.
a9b0: 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76   case-insensitiv
a9c0: 65 20 6d 61 74 63 68 69 6e 67 29 2e 20 20 28 41  e matching).  (A
a9d0: 20 62 75 67 3a 20 53 51 4c 69 74 65 20 6f 6e 6c   bug: SQLite onl
a9e0: 79 0a 75 6e 64 65 72 73 74 61 6e 64 73 20 75 70  y.understands up
a9f0: 70 65 72 2f 6c 6f 77 65 72 20 63 61 73 65 20 66  per/lower case f
aa00: 6f 72 20 37 2d 62 69 74 20 4c 61 74 69 6e 20 63  or 7-bit Latin c
aa10: 68 61 72 61 63 74 65 72 73 2e 20 20 48 65 6e 63  haracters.  Henc
aa20: 65 20 74 68 65 0a 4c 49 4b 45 20 6f 70 65 72 61  e the.LIKE opera
aa30: 74 6f 72 20 69 73 20 63 61 73 65 20 73 65 6e 73  tor is case sens
aa40: 69 74 69 76 65 20 66 6f 72 20 38 2d 62 69 74 20  itive for 8-bit 
aa50: 69 73 6f 38 38 35 39 20 63 68 61 72 61 63 74 65  iso8859 characte
aa60: 72 73 20 6f 72 20 55 54 46 2d 38 0a 63 68 61 72  rs or UTF-8.char
aa70: 61 63 74 65 72 73 2e 20 20 46 6f 72 20 65 78 61  acters.  For exa
aa80: 6d 70 6c 65 2c 20 74 68 65 20 65 78 70 72 65 73  mple, the expres
aa90: 73 69 6f 6e 20 3c 62 3e 27 61 27 26 6e 62 73 70  sion <b>'a'&nbsp
aaa0: 3b 4c 49 4b 45 26 6e 62 73 70 3b 27 41 27 3c 2f  ;LIKE&nbsp;'A'</
aab0: 62 3e 0a 69 73 20 54 52 55 45 20 62 75 74 20 3c  b>.is TRUE but <
aac0: 62 3e 27 26 61 65 6c 69 67 3b 27 26 6e 62 73 70  b>'&aelig;'&nbsp
aad0: 3b 4c 49 4b 45 26 6e 62 73 70 3b 27 26 41 45 6c  ;LIKE&nbsp;'&AEl
aae0: 69 67 3b 27 3c 2f 62 3e 20 69 73 20 46 41 4c 53  ig;'</b> is FALS
aaf0: 45 2e 29 2e 3c 2f 70 3e 22 3c 2f 74 63 6c 3e 0a  E.).</p>"</tcl>.
ab00: 0a 3c 70 3e 49 66 20 74 68 65 20 6f 70 74 69 6f  .<p>If the optio
ab10: 6e 61 6c 20 45 53 43 41 50 45 20 63 6c 61 75 73  nal ESCAPE claus
ab20: 65 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74 68  e is present, th
ab30: 65 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  en the expressio
ab40: 6e 0a 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20  n.following the 
ab50: 45 53 43 41 50 45 20 6b 65 79 77 6f 72 64 20 6d  ESCAPE keyword m
ab60: 75 73 74 20 65 76 61 6c 75 61 74 65 20 74 6f 20  ust evaluate to 
ab70: 61 20 73 74 72 69 6e 67 20 63 6f 6e 73 69 73 74  a string consist
ab80: 69 6e 67 20 6f 66 0a 61 20 73 69 6e 67 6c 65 20  ing of.a single 
ab90: 63 68 61 72 61 63 74 65 72 2e 20 54 68 69 73 20  character. This 
aba0: 63 68 61 72 61 63 74 65 72 20 6d 61 79 20 62 65  character may be
abb0: 20 75 73 65 64 20 69 6e 20 74 68 65 20 4c 49 4b   used in the LIK
abc0: 45 20 70 61 74 74 65 72 6e 0a 74 6f 20 69 6e 63  E pattern.to inc
abd0: 6c 75 64 65 20 6c 69 74 65 72 61 6c 20 70 65 72  lude literal per
abe0: 63 65 6e 74 20 6f 72 20 75 6e 64 65 72 73 63 6f  cent or undersco
abf0: 72 65 20 63 68 61 72 61 63 74 65 72 73 2e 20 54  re characters. T
ac00: 68 65 20 65 73 63 61 70 65 0a 63 68 61 72 61 63  he escape.charac
ac10: 74 65 72 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  ter followed by 
ac20: 61 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c  a percent symbol
ac30: 2c 20 75 6e 64 65 72 73 63 6f 72 65 20 6f 72 20  , underscore or 
ac40: 69 74 73 65 6c 66 20 6d 61 74 63 68 65 73 20 61  itself matches a
ac50: 0a 6c 69 74 65 72 61 6c 20 70 65 72 63 65 6e 74  .literal percent
ac60: 20 73 79 6d 62 6f 6c 2c 20 75 6e 64 65 72 73 63   symbol, undersc
ac70: 6f 72 65 20 6f 72 20 65 73 63 61 70 65 20 63 68  ore or escape ch
ac80: 61 72 61 63 74 65 72 20 69 6e 20 74 68 65 20 73  aracter in the s
ac90: 74 72 69 6e 67 2c 0a 72 65 73 70 65 63 74 69 76  tring,.respectiv
aca0: 65 6c 79 2e 20 54 68 65 20 69 6e 66 69 78 20 4c  ely. The infix L
acb0: 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 69 73 20  IKE operator is 
acc0: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20 63  implemented by c
acd0: 61 6c 6c 69 6e 67 20 74 68 65 0a 75 73 65 72 20  alling the.user 
ace0: 66 75 6e 63 74 69 6f 6e 20 3c 61 20 68 72 65 66  function <a href
acf0: 3d 22 23 6c 69 6b 65 46 75 6e 63 22 3e 20 6c 69  ="#likeFunc"> li
ad00: 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59  ke(<i>X</i>,<i>Y
ad10: 3c 2f 69 3e 29 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a  </i>)</a>.</p>..
ad20: 54 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f  The LIKE operato
ad30: 72 20 69 73 20 6e 6f 74 20 63 61 73 65 20 73 65  r is not case se
ad40: 6e 73 69 74 69 76 65 20 61 6e 64 20 77 69 6c 6c  nsitive and will
ad50: 20 6d 61 74 63 68 20 75 70 70 65 72 20 63 61 73   match upper cas
ad60: 65 0a 63 68 61 72 61 63 74 65 72 73 20 6f 6e 20  e.characters on 
ad70: 6f 6e 65 20 73 69 64 65 20 61 67 61 69 6e 73 74  one side against
ad80: 20 6c 6f 77 65 72 20 63 61 73 65 20 63 68 61 72   lower case char
ad90: 61 63 74 65 72 73 20 6f 6e 20 74 68 65 20 6f 74  acters on the ot
ada0: 68 65 72 2e 20 20 0a 28 41 20 62 75 67 3a 20 53  her.  .(A bug: S
adb0: 51 4c 69 74 65 20 6f 6e 6c 79 20 75 6e 64 65 72  QLite only under
adc0: 73 74 61 6e 64 73 20 75 70 70 65 72 2f 6c 6f 77  stands upper/low
add0: 65 72 20 63 61 73 65 20 66 6f 72 20 37 2d 62 69  er case for 7-bi
ade0: 74 20 4c 61 74 69 6e 0a 63 68 61 72 61 63 74 65  t Latin.characte
adf0: 72 73 2e 20 20 48 65 6e 63 65 20 74 68 65 20 4c  rs.  Hence the L
ae00: 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 69 73 20  IKE operator is 
ae10: 63 61 73 65 20 73 65 6e 73 69 74 69 76 65 20 66  case sensitive f
ae20: 6f 72 20 38 2d 62 69 74 0a 69 73 6f 38 38 35 39  or 8-bit.iso8859
ae30: 20 63 68 61 72 61 63 74 65 72 73 20 6f 72 20 55   characters or U
ae40: 54 46 2d 38 20 63 68 61 72 61 63 74 65 72 73 2e  TF-8 characters.
ae50: 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74    For example, t
ae60: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 0a 3c 62  he expression.<b
ae70: 3e 27 61 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e  >'a'&nbsp;LIKE&n
ae80: 62 73 70 3b 27 41 27 3c 2f 62 3e 20 69 73 20 54  bsp;'A'</b> is T
ae90: 52 55 45 20 62 75 74 0a 3c 62 3e 27 26 61 65 6c  RUE but.<b>'&ael
aea0: 69 67 3b 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e  ig;'&nbsp;LIKE&n
aeb0: 62 73 70 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62  bsp;'&AElig;'</b
aec0: 3e 20 69 73 20 46 41 4c 53 45 2e 29 2e 3c 2f 70  > is FALSE.).</p
aed0: 3e 0a 0a 3c 70 3e 54 68 65 20 69 6e 66 69 78 20  >..<p>The infix 
aee0: 4c 49 4b 45 0a 6f 70 65 72 61 74 6f 72 20 69 73  LIKE.operator is
aef0: 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20   implemented by 
af00: 63 61 6c 6c 69 6e 67 20 74 68 65 20 75 73 65 72  calling the user
af10: 20 66 75 6e 63 74 69 6f 6e 20 3c 61 20 68 72 65   function <a hre
af20: 66 3d 22 23 6c 69 6b 65 46 75 6e 63 22 3e 0a 6c  f="#likeFunc">.l
af30: 69 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  ike(<i>X</i>,<i>
af40: 59 3c 2f 69 3e 29 3c 2f 61 3e 2e 20 20 49 66 20  Y</i>)</a>.  If 
af50: 61 6e 20 45 53 43 41 50 45 20 63 6c 61 75 73 65  an ESCAPE clause
af60: 20 69 73 20 70 72 65 73 65 6e 74 2c 20 69 74 20   is present, it 
af70: 61 64 64 73 0a 61 20 74 68 69 72 64 20 70 61 72  adds.a third par
af80: 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 66 75  ameter to the fu
af90: 6e 63 74 69 6f 6e 20 63 61 6c 6c 2e 20 49 66 20  nction call. If 
afa0: 74 68 65 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  the functionalit
afb0: 79 20 6f 66 20 4c 49 4b 45 20 63 61 6e 20 62 65  y of LIKE can be
afc0: 0a 6f 76 65 72 72 69 64 64 65 6e 20 62 79 20 64  .overridden by d
afd0: 65 66 69 6e 69 6e 67 20 61 6e 20 61 6c 74 65 72  efining an alter
afe0: 6e 61 74 69 76 65 20 69 6d 70 6c 65 6d 65 6e 74  native implement
aff0: 61 74 69 6f 6e 20 6f 66 20 74 68 65 0a 6c 69 6b  ation of the.lik
b000: 65 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  e() SQL function
b010: 2e 3c 2f 70 3e 0a 3c 2f 70 3e 0a 0a 3c 74 63 6c  .</p>.</p>..<tcl
b020: 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 67 6c 6f  >hd_fragment glo
b030: 62 20 47 4c 4f 42 3c 2f 74 63 6c 3e 0a 3c 70 3e  b GLOB</tcl>.<p>
b040: 54 68 65 20 47 4c 4f 42 20 6f 70 65 72 61 74 6f  The GLOB operato
b050: 72 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20  r is similar to 
b060: 4c 49 4b 45 20 62 75 74 20 75 73 65 73 20 74 68  LIKE but uses th
b070: 65 20 55 6e 69 78 0a 66 69 6c 65 20 67 6c 6f 62  e Unix.file glob
b080: 62 69 6e 67 20 73 79 6e 74 61 78 20 66 6f 72 20  bing syntax for 
b090: 69 74 73 20 77 69 6c 64 63 61 72 64 73 2e 20 20  its wildcards.  
b0a0: 41 6c 73 6f 2c 20 47 4c 4f 42 20 69 73 20 63 61  Also, GLOB is ca
b0b0: 73 65 0a 73 65 6e 73 69 74 69 76 65 2c 20 75 6e  se.sensitive, un
b0c0: 6c 69 6b 65 20 4c 49 4b 45 2e 20 20 42 6f 74 68  like LIKE.  Both
b0d0: 20 47 4c 4f 42 20 61 6e 64 20 4c 49 4b 45 20 6d   GLOB and LIKE m
b0e0: 61 79 20 62 65 20 70 72 65 63 65 64 65 64 20 62  ay be preceded b
b0f0: 79 0a 74 68 65 20 4e 4f 54 20 6b 65 79 77 6f 72  y.the NOT keywor
b100: 64 20 74 6f 20 69 6e 76 65 72 74 20 74 68 65 20  d to invert the 
b110: 73 65 6e 73 65 20 6f 66 20 74 68 65 20 74 65 73  sense of the tes
b120: 74 2e 20 20 54 68 65 20 69 6e 66 69 78 20 47 4c  t.  The infix GL
b130: 4f 42 20 0a 6f 70 65 72 61 74 6f 72 20 69 73 20  OB .operator is 
b140: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20 63  implemented by c
b150: 61 6c 6c 69 6e 67 20 74 68 65 20 75 73 65 72 20  alling the user 
b160: 66 75 6e 63 74 69 6f 6e 20 3c 61 20 68 72 65 66  function <a href
b170: 3d 22 23 67 6c 6f 62 46 75 6e 63 22 3e 0a 67 6c  ="#globFunc">.gl
b180: 6f 62 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59  ob(<i>X</i>,<i>Y
b190: 3c 2f 69 3e 29 3c 2f 61 3e 20 61 6e 64 20 63 61  </i>)</a> and ca
b1a0: 6e 20 62 65 20 6d 6f 64 69 66 69 65 64 20 62 79  n be modified by
b1b0: 20 6f 76 65 72 72 69 64 69 6e 67 0a 74 68 61 74   overriding.that
b1c0: 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a   function.</p>..
b1d0: 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74  <tcl>hd_fragment
b1e0: 20 72 65 67 65 78 70 20 52 45 47 45 58 50 3c 2f   regexp REGEXP</
b1f0: 74 63 6c 3e 0a 3c 70 3e 54 68 65 20 52 45 47 45  tcl>.<p>The REGE
b200: 58 50 20 6f 70 65 72 61 74 6f 72 20 69 73 20 61  XP operator is a
b210: 20 73 70 65 63 69 61 6c 20 73 79 6e 74 61 78 20   special syntax 
b220: 66 6f 72 20 74 68 65 20 72 65 67 65 78 70 28 29  for the regexp()
b230: 0a 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20  .user function. 
b240: 20 4e 6f 20 72 65 67 65 78 70 28 29 20 75 73 65   No regexp() use
b250: 72 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 64 65  r function is de
b260: 66 69 6e 65 64 20 62 79 20 64 65 66 61 75 6c 74  fined by default
b270: 0a 61 6e 64 20 73 6f 20 75 73 65 20 6f 66 20 74  .and so use of t
b280: 68 65 20 52 45 47 45 58 50 20 6f 70 65 72 61 74  he REGEXP operat
b290: 6f 72 20 77 69 6c 6c 20 6e 6f 72 6d 61 6c 6c 79  or will normally
b2a0: 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 0a 65 72   result in an.er
b2b0: 72 6f 72 20 6d 65 73 73 61 67 65 2e 20 20 49 66  ror message.  If
b2c0: 20 61 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20   a user-defined 
b2d0: 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 64 20 22  function named "
b2e0: 72 65 67 65 78 70 22 0a 69 73 20 61 64 64 65 64  regexp".is added
b2f0: 20 61 74 20 72 75 6e 2d 74 69 6d 65 2c 20 74 68   at run-time, th
b300: 61 74 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c  at function will
b310: 20 62 65 20 63 61 6c 6c 65 64 20 69 6e 20 6f 72   be called in or
b320: 64 65 72 0a 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  der.to implement
b330: 20 74 68 65 20 52 45 47 45 58 50 20 6f 70 65 72   the REGEXP oper
b340: 61 74 6f 72 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  ator.</p>..<tcl>
b350: 68 64 5f 66 72 61 67 6d 65 6e 74 20 6d 61 74 63  hd_fragment matc
b360: 68 20 4d 41 54 43 48 3c 2f 74 63 6c 3e 0a 3c 70  h MATCH</tcl>.<p
b370: 3e 54 68 65 20 4d 41 54 43 48 20 6f 70 65 72 61  >The MATCH opera
b380: 74 6f 72 20 69 73 20 61 20 73 70 65 63 69 61 6c  tor is a special
b390: 20 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20   syntax for the 
b3a0: 6d 61 74 63 68 28 29 0a 75 73 65 72 20 66 75 6e  match().user fun
b3b0: 63 74 69 6f 6e 2e 20 20 54 68 65 20 64 65 66 61  ction.  The defa
b3c0: 75 6c 74 20 6d 61 74 63 68 28 29 20 66 75 6e 63  ult match() func
b3d0: 74 69 6f 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74  tion implementat
b3e0: 69 6f 6e 0a 72 61 69 73 65 73 20 61 6e 64 20 65  ion.raises and e
b3f0: 78 63 65 70 74 69 6f 6e 20 61 6e 64 20 69 73 20  xception and is 
b400: 6e 6f 74 20 72 65 61 6c 6c 79 20 75 73 65 66 75  not really usefu
b410: 6c 20 66 6f 72 20 61 6e 79 74 68 69 6e 67 2e 0a  l for anything..
b420: 42 75 74 20 65 78 74 65 6e 73 69 6f 6e 73 20 63  But extensions c
b430: 61 6e 20 6f 76 65 72 72 69 64 65 20 74 68 65 20  an override the 
b440: 6d 61 74 63 68 28 29 20 66 75 6e 63 74 69 6f 6e  match() function
b450: 20 77 69 74 68 20 6d 6f 72 65 0a 68 65 6c 70 66   with more.helpf
b460: 75 6c 20 6c 6f 67 69 63 2e 3c 2f 70 3e 0a 0a 3c  ul logic.</p>..<
b470: 70 3e 41 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20  p>A column name 
b480: 63 61 6e 20 62 65 20 61 6e 79 20 6f 66 20 74 68  can be any of th
b490: 65 20 6e 61 6d 65 73 20 64 65 66 69 6e 65 64 20  e names defined 
b4a0: 69 6e 20 74 68 65 20 5b 43 52 45 41 54 45 20 54  in the [CREATE T
b4b0: 41 42 4c 45 5d 0a 73 74 61 74 65 6d 65 6e 74 20  ABLE].statement 
b4c0: 6f 72 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f  or one of the fo
b4d0: 6c 6c 6f 77 69 6e 67 20 73 70 65 63 69 61 6c 20  llowing special 
b4e0: 69 64 65 6e 74 69 66 69 65 72 73 3a 20 22 3c 62  identifiers: "<b
b4f0: 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c 0a 22 3c 62  >ROWID</b>",."<b
b500: 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c  >OID</b>", or "<
b510: 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e 22 2e 0a  b>_ROWID_</b>"..
b520: 54 68 65 73 65 20 73 70 65 63 69 61 6c 20 69 64  These special id
b530: 65 6e 74 69 66 69 65 72 73 20 61 6c 6c 20 64 65  entifiers all de
b540: 73 63 72 69 62 65 20 74 68 65 0a 75 6e 69 71 75  scribe the.uniqu
b550: 65 20 69 6e 74 65 67 65 72 20 6b 65 79 20 28 74  e integer key (t
b560: 68 65 20 22 72 6f 77 20 6b 65 79 22 29 20 61 73  he "row key") as
b570: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 65 76  sociated with ev
b580: 65 72 79 20 0a 72 6f 77 20 6f 66 20 65 76 65 72  ery .row of ever
b590: 79 20 74 61 62 6c 65 2e 0a 54 68 65 20 73 70 65  y table..The spe
b5a0: 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73  cial identifiers
b5b0: 20 6f 6e 6c 79 20 72 65 66 65 72 20 74 6f 20 74   only refer to t
b5c0: 68 65 20 72 6f 77 20 6b 65 79 20 69 66 20 74 68  he row key if th
b5d0: 65 20 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d  e [CREATE TABLE]
b5e0: 0a 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20  .statement does 
b5f0: 6e 6f 74 20 64 65 66 69 6e 65 20 61 20 72 65 61  not define a rea
b600: 6c 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20 74 68  l column with th
b610: 65 20 73 61 6d 65 20 6e 61 6d 65 2e 20 20 52 6f  e same name.  Ro
b620: 77 20 6b 65 79 73 0a 61 63 74 20 6c 69 6b 65 20  w keys.act like 
b630: 72 65 61 64 2d 6f 6e 6c 79 20 63 6f 6c 75 6d 6e  read-only column
b640: 73 2e 20 20 41 20 72 6f 77 20 6b 65 79 20 63 61  s.  A row key ca
b650: 6e 20 62 65 20 75 73 65 64 20 61 6e 79 77 68 65  n be used anywhe
b660: 72 65 20 61 20 72 65 67 75 6c 61 72 0a 63 6f 6c  re a regular.col
b670: 75 6d 6e 20 63 61 6e 20 62 65 20 75 73 65 64 2c  umn can be used,
b680: 20 65 78 63 65 70 74 20 74 68 61 74 20 79 6f 75   except that you
b690: 20 63 61 6e 6e 6f 74 20 63 68 61 6e 67 65 20 74   cannot change t
b6a0: 68 65 20 76 61 6c 75 65 0a 6f 66 20 61 20 72 6f  he value.of a ro
b6b0: 77 20 6b 65 79 20 69 6e 20 61 6e 20 5b 55 50 44  w key in an [UPD
b6c0: 41 54 45 5d 20 6f 72 20 5b 49 4e 53 45 52 54 5d  ATE] or [INSERT]
b6d0: 20 73 74 61 74 65 6d 65 6e 74 2e 0a 22 53 45 4c   statement.."SEL
b6e0: 45 43 54 20 2a 20 2e 2e 2e 22 20 64 6f 65 73 20  ECT * ..." does 
b6f0: 6e 6f 74 20 72 65 74 75 72 6e 20 74 68 65 20 72  not return the r
b700: 6f 77 20 6b 65 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ow key.</p>..<p>
b710: 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65  [SELECT] stateme
b720: 6e 74 73 20 63 61 6e 20 61 70 70 65 61 72 20 69  nts can appear i
b730: 6e 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 73  n expressions as
b740: 20 65 69 74 68 65 72 20 74 68 65 0a 72 69 67 68   either the.righ
b750: 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e 64 20 6f  t-hand operand o
b760: 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74 6f  f the IN operato
b770: 72 2c 20 61 73 20 61 20 73 63 61 6c 61 72 20 71  r, as a scalar q
b780: 75 61 6e 74 69 74 79 2c 20 6f 72 0a 61 73 20 74  uantity, or.as t
b790: 68 65 20 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e  he operand of an
b7a0: 20 45 58 49 53 54 53 20 6f 70 65 72 61 74 6f 72   EXISTS operator
b7b0: 2e 0a 41 73 20 61 20 73 63 61 6c 61 72 20 71 75  ..As a scalar qu
b7c0: 61 6e 74 69 74 79 20 6f 72 20 74 68 65 20 6f 70  antity or the op
b7d0: 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f  erand of an IN o
b7e0: 70 65 72 61 74 6f 72 2c 0a 74 68 65 20 53 45 4c  perator,.the SEL
b7f0: 45 43 54 20 73 68 6f 75 6c 64 20 68 61 76 65 20  ECT should have 
b800: 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 63 6f  only a single co
b810: 6c 75 6d 6e 20 69 6e 20 69 74 73 0a 72 65 73 75  lumn in its.resu
b820: 6c 74 2e 20 20 43 6f 6d 70 6f 75 6e 64 20 53 45  lt.  Compound SE
b830: 4c 45 43 54 73 20 28 63 6f 6e 6e 65 63 74 65 64  LECTs (connected
b840: 20 77 69 74 68 20 6b 65 79 77 6f 72 64 73 20 6c   with keywords l
b850: 69 6b 65 20 55 4e 49 4f 4e 20 6f 72 0a 45 58 43  ike UNION or.EXC
b860: 45 50 54 29 20 61 72 65 20 61 6c 6c 6f 77 65 64  EPT) are allowed
b870: 2e 0a 57 69 74 68 20 74 68 65 20 45 58 49 53 54  ..With the EXIST
b880: 53 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 20  S operator, the 
b890: 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72  columns in the r
b8a0: 65 73 75 6c 74 20 73 65 74 20 6f 66 20 74 68 65  esult set of the
b8b0: 20 5b 53 45 4c 45 43 54 5d 20 61 72 65 0a 69 67   [SELECT] are.ig
b8c0: 6e 6f 72 65 64 20 61 6e 64 20 74 68 65 20 65 78  nored and the ex
b8d0: 70 72 65 73 73 69 6f 6e 20 72 65 74 75 72 6e 73  pression returns
b8e0: 20 54 52 55 45 20 69 66 20 6f 6e 65 20 6f 72 20   TRUE if one or 
b8f0: 6d 6f 72 65 20 72 6f 77 73 20 65 78 69 73 74 0a  more rows exist.
b900: 61 6e 64 20 46 41 4c 53 45 20 69 66 20 74 68 65  and FALSE if the
b910: 20 72 65 73 75 6c 74 20 73 65 74 20 69 73 20 65   result set is e
b920: 6d 70 74 79 2e 0a 49 66 20 6e 6f 20 74 65 72 6d  mpty..If no term
b930: 73 20 69 6e 20 74 68 65 20 5b 53 45 4c 45 43 54  s in the [SELECT
b940: 5d 20 65 78 70 72 65 73 73 69 6f 6e 20 72 65 66  ] expression ref
b950: 65 72 20 74 6f 20 76 61 6c 75 65 20 69 6e 20 74  er to value in t
b960: 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 71 75  he containing.qu
b970: 65 72 79 2c 20 74 68 65 6e 20 74 68 65 20 65 78  ery, then the ex
b980: 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76 61 6c  pression is eval
b990: 75 61 74 65 64 20 6f 6e 63 65 20 70 72 69 6f 72  uated once prior
b9a0: 20 74 6f 20 61 6e 79 20 6f 74 68 65 72 0a 70 72   to any other.pr
b9b0: 6f 63 65 73 73 69 6e 67 20 61 6e 64 20 74 68 65  ocessing and the
b9c0: 20 72 65 73 75 6c 74 20 69 73 20 72 65 75 73 65   result is reuse
b9d0: 64 20 61 73 20 6e 65 63 65 73 73 61 72 79 2e 20  d as necessary. 
b9e0: 20 49 66 20 74 68 65 20 5b 53 45 4c 45 43 54 5d   If the [SELECT]
b9f0: 20 65 78 70 72 65 73 73 69 6f 6e 0a 64 6f 65 73   expression.does
ba00: 20 63 6f 6e 74 61 69 6e 20 76 61 72 69 61 62 6c   contain variabl
ba10: 65 73 20 66 72 6f 6d 20 74 68 65 20 6f 75 74 65  es from the oute
ba20: 72 20 71 75 65 72 79 2c 20 74 68 65 6e 20 74 68  r query, then th
ba30: 65 20 5b 53 45 4c 45 43 54 5d 20 69 73 20 72 65  e [SELECT] is re
ba40: 65 76 61 6c 75 61 74 65 64 0a 65 76 65 72 79 20  evaluated.every 
ba50: 74 69 6d 65 20 69 74 20 69 73 20 6e 65 65 64 65  time it is neede
ba60: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20  d.</p>..<p>When 
ba70: 61 20 53 45 4c 45 43 54 20 69 73 20 74 68 65 20  a SELECT is the 
ba80: 72 69 67 68 74 20 6f 70 65 72 61 6e 64 20 6f 66  right operand of
ba90: 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72   the IN operator
baa0: 2c 20 74 68 65 20 49 4e 0a 6f 70 65 72 61 74 6f  , the IN.operato
bab0: 72 20 72 65 74 75 72 6e 73 20 54 52 55 45 20 69  r returns TRUE i
bac0: 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20  f the result of 
bad0: 74 68 65 20 6c 65 66 74 20 6f 70 65 72 61 6e 64  the left operand
bae0: 20 69 73 20 61 6e 79 20 6f 66 0a 74 68 65 20 76   is any of.the v
baf0: 61 6c 75 65 73 20 67 65 6e 65 72 61 74 65 64 20  alues generated 
bb00: 62 79 20 74 68 65 20 73 65 6c 65 63 74 2e 20 20  by the select.  
bb10: 54 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72 20  The IN operator 
bb20: 6d 61 79 20 62 65 20 70 72 65 63 65 64 65 64 0a  may be preceded.
bb30: 62 79 20 74 68 65 20 4e 4f 54 20 6b 65 79 77 6f  by the NOT keywo
bb40: 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74 68 65  rd to invert the
bb50: 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20 74 65   sense of the te
bb60: 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e  st.</p>..<p>When
bb70: 20 61 20 53 45 4c 45 43 54 20 61 70 70 65 61 72   a SELECT appear
bb80: 73 20 77 69 74 68 69 6e 20 61 6e 20 65 78 70 72  s within an expr
bb90: 65 73 73 69 6f 6e 20 62 75 74 20 69 73 20 6e 6f  ession but is no
bba0: 74 20 74 68 65 20 72 69 67 68 74 0a 6f 70 65 72  t the right.oper
bbb0: 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f 70 65  and of an IN ope
bbc0: 72 61 74 6f 72 2c 20 74 68 65 6e 20 74 68 65 20  rator, then the 
bbd0: 66 69 72 73 74 20 72 6f 77 20 6f 66 20 74 68 65  first row of the
bbe0: 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 0a 53   result of the.S
bbf0: 45 4c 45 43 54 20 62 65 63 6f 6d 65 73 20 74 68  ELECT becomes th
bc00: 65 20 76 61 6c 75 65 20 75 73 65 64 20 69 6e 20  e value used in 
bc10: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 2e 20  the expression. 
bc20: 20 49 66 20 74 68 65 20 53 45 4c 45 43 54 20 79   If the SELECT y
bc30: 69 65 6c 64 73 0a 6d 6f 72 65 20 74 68 61 6e 20  ields.more than 
bc40: 6f 6e 65 20 72 65 73 75 6c 74 20 72 6f 77 2c 20  one result row, 
bc50: 61 6c 6c 20 72 6f 77 73 20 61 66 74 65 72 20 74  all rows after t
bc60: 68 65 20 66 69 72 73 74 20 61 72 65 20 69 67 6e  he first are ign
bc70: 6f 72 65 64 2e 20 20 49 66 0a 74 68 65 20 53 45  ored.  If.the SE
bc80: 4c 45 43 54 20 79 69 65 6c 64 73 20 6e 6f 20 72  LECT yields no r
bc90: 6f 77 73 2c 20 74 68 65 6e 20 74 68 65 20 76 61  ows, then the va
bca0: 6c 75 65 20 6f 66 20 74 68 65 20 53 45 4c 45 43  lue of the SELEC
bcb0: 54 20 69 73 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a  T is NULL.</p>..
bcc0: 3c 70 3e 41 20 43 41 53 54 20 65 78 70 72 65 73  <p>A CAST expres
bcd0: 73 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68 65  sion changes the
bce0: 20 64 61 74 61 74 79 70 65 20 6f 66 20 74 68 65   datatype of the
bcf0: 20 3c 65 78 70 72 3e 20 69 6e 74 6f 20 74 68 65   <expr> into the
bd00: 0a 74 79 70 65 20 73 70 65 63 69 66 69 65 64 20  .type specified 
bd10: 62 79 20 26 6c 74 3b 74 79 70 65 26 67 74 3b 2e  by &lt;type&gt;.
bd20: 20 0a 26 6c 74 3b 74 79 70 65 26 67 74 3b 20 63   .&lt;type&gt; c
bd30: 61 6e 20 62 65 20 61 6e 79 20 6e 6f 6e 2d 65 6d  an be any non-em
bd40: 70 74 79 20 74 79 70 65 20 6e 61 6d 65 20 74 68  pty type name th
bd50: 61 74 20 69 73 20 76 61 6c 69 64 0a 66 6f 72 20  at is valid.for 
bd60: 74 68 65 20 74 79 70 65 20 69 6e 20 61 20 63 6f  the type in a co
bd70: 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20  lumn definition 
bd80: 6f 66 20 61 20 43 52 45 41 54 45 20 54 41 42 4c  of a CREATE TABL
bd90: 45 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e  E statement.</p>
bda0: 0a 0a 3c 70 3e 42 6f 74 68 20 73 69 6d 70 6c 65  ..<p>Both simple
bdb0: 20 61 6e 64 20 61 67 67 72 65 67 61 74 65 20 66   and aggregate f
bdc0: 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 73 75 70  unctions are sup
bdd0: 70 6f 72 74 65 64 2e 20 20 41 20 73 69 6d 70 6c  ported.  A simpl
bde0: 65 0a 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62  e.function can b
bdf0: 65 20 75 73 65 64 20 69 6e 20 61 6e 79 20 65 78  e used in any ex
be00: 70 72 65 73 73 69 6f 6e 2e 20 20 53 69 6d 70 6c  pression.  Simpl
be10: 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74 75  e functions retu
be20: 72 6e 0a 61 20 72 65 73 75 6c 74 20 69 6d 6d 65  rn.a result imme
be30: 64 69 61 74 65 6c 79 20 62 61 73 65 64 20 6f 6e  diately based on
be40: 20 74 68 65 69 72 20 69 6e 70 75 74 73 2e 20 20   their inputs.  
be50: 41 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  Aggregate functi
be60: 6f 6e 73 0a 6d 61 79 20 6f 6e 6c 79 20 62 65 20  ons.may only be 
be70: 75 73 65 64 20 69 6e 20 61 20 53 45 4c 45 43 54  used in a SELECT
be80: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 41 67 67   statement.  Agg
be90: 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
bea0: 20 63 6f 6d 70 75 74 65 0a 74 68 65 69 72 20 72   compute.their r
beb0: 65 73 75 6c 74 20 61 63 72 6f 73 73 20 61 6c 6c  esult across all
bec0: 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72 65 73   rows of the res
bed0: 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a 3c 61  ult set.</p>..<a
bee0: 20 6e 61 6d 65 3d 22 63 6f 72 65 66 75 6e 63 74   name="corefunct
bef0: 69 6f 6e 73 22 3e 3c 2f 61 3e 0a 3c 62 3e 43 6f  ions"></a>.<b>Co
bf00: 72 65 20 46 75 6e 63 74 69 6f 6e 73 3c 2f 62 3e  re Functions</b>
bf10: 0a 0a 3c 70 3e 54 68 65 20 63 6f 72 65 20 66 75  ..<p>The core fu
bf20: 6e 63 74 69 6f 6e 73 20 73 68 6f 77 6e 20 62 65  nctions shown be
bf30: 6c 6f 77 20 61 72 65 20 61 76 61 69 6c 61 62 6c  low are availabl
bf40: 65 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 41  e by default.  A
bf50: 64 64 69 74 69 6f 6e 61 6c 0a 66 75 6e 63 74 69  dditional.functi
bf60: 6f 6e 73 20 6d 61 79 20 62 65 20 77 72 69 74 74  ons may be writt
bf70: 65 6e 20 69 6e 20 43 20 61 6e 64 20 61 64 64 65  en in C and adde
bf80: 64 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73  d to the databas
bf90: 65 20 65 6e 67 69 6e 65 20 75 73 69 6e 67 0a 74  e engine using.t
bfa0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 72 65 61  he [sqlite3_crea
bfb0: 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 20 41  te_function()] A
bfc0: 50 49 2e 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20  PI.</p>..<table 
bfd0: 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64  border=0 cellpad
bfe0: 64 69 6e 67 3d 31 30 20 63 6c 61 73 73 3d 22 70  ding=10 class="p
bff0: 64 66 5f 66 75 6e 63 74 69 6f 6e 73 22 3e 0a 3c  df_functions">.<
c000: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
c010: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
c020: 74 22 20 77 69 64 74 68 3d 31 32 30 3e 61 62 73  t" width=120>abs
c030: 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a  (<i>X</i>)</td>.
c040: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
c050: 3e 52 65 74 75 72 6e 20 74 68 65 20 61 62 73 6f  >Return the abso
c060: 6c 75 74 65 20 76 61 6c 75 65 20 6f 66 20 61 72  lute value of ar
c070: 67 75 6d 65 6e 74 20 3c 69 3e 58 3c 2f 69 3e 2e  gument <i>X</i>.
c080: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
c090: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
c0a0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
c0b0: 3e 63 6f 61 6c 65 73 63 65 28 3c 69 3e 58 3c 2f  >coalesce(<i>X</
c0c0: 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29  i>,<i>Y</i>,...)
c0d0: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
c0e0: 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20  ="top">Return a 
c0f0: 63 6f 70 79 20 6f 66 20 74 68 65 20 66 69 72 73  copy of the firs
c100: 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d  t non-NULL argum
c110: 65 6e 74 2e 20 20 49 66 0a 61 6c 6c 20 61 72 67  ent.  If.all arg
c120: 75 6d 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c 20  uments are NULL 
c130: 74 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72 65 74  then NULL is ret
c140: 75 72 6e 65 64 2e 20 20 54 68 65 72 65 20 6d 75  urned.  There mu
c150: 73 74 20 62 65 20 61 74 20 6c 65 61 73 74 20 0a  st be at least .
c160: 32 20 61 72 67 75 6d 65 6e 74 73 2e 3c 2f 74 64  2 arguments.</td
c170: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
c180: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
c190: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 0a 3c 61  lign="right">.<a
c1a0: 20 6e 61 6d 65 3d 22 67 6c 6f 62 46 75 6e 63 22   name="globFunc"
c1b0: 3e 3c 2f 61 3e 0a 67 6c 6f 62 28 3c 69 3e 58 3c  ></a>.glob(<i>X<
c1c0: 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74  /i>,<i>Y</i>)</t
c1d0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
c1e0: 6f 70 22 3e 54 68 69 73 20 66 75 6e 63 74 69 6f  op">This functio
c1f0: 6e 20 69 73 20 75 73 65 64 20 74 6f 20 69 6d 70  n is used to imp
c200: 6c 65 6d 65 6e 74 20 74 68 65 0a 22 3c 62 3e 58  lement the."<b>X
c210: 20 47 4c 4f 42 20 59 3c 2f 62 3e 22 20 73 79 6e   GLOB Y</b>" syn
c220: 74 61 78 20 6f 66 20 53 51 4c 69 74 65 2e 20 20  tax of SQLite.  
c230: 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 72 65  The [sqlite3_cre
c240: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 0a  ate_function()].
c250: 69 6e 74 65 72 66 61 63 65 20 63 61 6e 0a 62 65  interface can.be
c260: 20 75 73 65 64 20 74 6f 20 6f 76 65 72 72 69 64   used to overrid
c270: 65 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  e this function 
c280: 61 6e 64 20 74 68 65 72 65 62 79 20 63 68 61 6e  and thereby chan
c290: 67 65 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e  ge the operation
c2a0: 0a 6f 66 20 74 68 65 20 5b 47 4c 4f 42 5d 20 6f  .of the [GLOB] o
c2b0: 70 65 72 61 74 6f 72 2e 3c 2f 74 64 3e 0a 3c 2f  perator.</td>.</
c2c0: 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  tr>..<tr>.<td va
c2d0: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
c2e0: 3d 22 72 69 67 68 74 22 3e 69 66 6e 75 6c 6c 28  ="right">ifnull(
c2f0: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
c300: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
c310: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
c320: 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 66 69  a copy of the fi
c330: 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67  rst non-NULL arg
c340: 75 6d 65 6e 74 2e 20 20 49 66 0a 62 6f 74 68 20  ument.  If.both 
c350: 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 4e 55  arguments are NU
c360: 4c 4c 20 74 68 65 6e 20 4e 55 4c 4c 20 69 73 20  LL then NULL is 
c370: 72 65 74 75 72 6e 65 64 2e 20 54 68 69 73 20 62  returned. This b
c380: 65 68 61 76 65 73 20 74 68 65 20 73 61 6d 65 20  ehaves the same 
c390: 61 73 20 0a 3c 62 3e 63 6f 61 6c 65 73 63 65 28  as .<b>coalesce(
c3a0: 29 3c 2f 62 3e 20 61 62 6f 76 65 2e 3c 2f 74 64  )</b> above.</td
c3b0: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
c3c0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
c3d0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 0a 3c 61  lign="right">.<a
c3e0: 20 6e 61 6d 65 3d 22 68 65 78 46 75 6e 63 22 3e   name="hexFunc">
c3f0: 3c 2f 61 3e 0a 68 65 78 28 3c 69 3e 58 3c 2f 69  </a>.hex(<i>X</i
c400: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
c410: 67 6e 3d 22 74 6f 70 22 3e 54 68 65 20 61 72 67  gn="top">The arg
c420: 75 6d 65 6e 74 20 69 73 20 69 6e 74 65 72 70 72  ument is interpr
c430: 65 74 65 64 20 61 73 20 61 20 42 4c 4f 42 2e 20  eted as a BLOB. 
c440: 20 54 68 65 20 72 65 73 75 6c 74 0a 69 73 20 61   The result.is a
c450: 20 68 65 78 61 64 65 63 69 6d 61 6c 20 72 65 6e   hexadecimal ren
c460: 64 65 72 69 6e 67 20 6f 66 20 74 68 65 20 63 6f  dering of the co
c470: 6e 74 65 6e 74 20 6f 66 20 74 68 61 74 20 62 6c  ntent of that bl
c480: 6f 62 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  ob.</td>.</tr>..
c490: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
c4a0: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
c4b0: 68 74 22 3e 6c 61 73 74 5f 69 6e 73 65 72 74 5f  ht">last_insert_
c4c0: 72 6f 77 69 64 28 29 3c 2f 74 64 3e 0a 3c 74 64  rowid()</td>.<td
c4d0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
c4e0: 74 75 72 6e 20 74 68 65 20 3c 61 20 68 72 65 66  turn the <a href
c4f0: 3d 22 6c 61 6e 67 5f 63 72 65 61 74 65 74 61 62  ="lang_createtab
c500: 6c 65 2e 68 74 6d 6c 23 72 6f 77 69 64 22 3e 52  le.html#rowid">R
c510: 4f 57 49 44 3c 2f 61 3e 0a 6f 66 20 74 68 65 20  OWID</a>.of the 
c520: 6c 61 73 74 20 72 6f 77 20 69 6e 73 65 72 74 20  last row insert 
c530: 66 72 6f 6d 20 74 68 69 73 0a 63 6f 6e 6e 65 63  from this.connec
c540: 74 69 6f 6e 20 74 6f 20 74 68 65 20 64 61 74 61  tion to the data
c550: 62 61 73 65 2e 20 20 54 68 69 73 20 69 73 20 74  base.  This is t
c560: 68 65 20 73 61 6d 65 20 76 61 6c 75 65 20 74 68  he same value th
c570: 61 74 20 77 6f 75 6c 64 20 62 65 20 72 65 74 75  at would be retu
c580: 72 6e 65 64 0a 66 72 6f 6d 20 74 68 65 20 3c 62  rned.from the <b
c590: 3e 73 71 6c 69 74 65 5f 6c 61 73 74 5f 69 6e 73  >sqlite_last_ins
c5a0: 65 72 74 5f 72 6f 77 69 64 28 29 3c 2f 62 3e 20  ert_rowid()</b> 
c5b0: 41 50 49 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f 74  API function.</t
c5c0: 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c  d>.</tr>..<tr>.<
c5d0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
c5e0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6c 65  align="right">le
c5f0: 6e 67 74 68 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  ngth(<i>X</i>)</
c600: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
c610: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
c620: 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 6f 66  string length of
c630: 20 3c 69 3e 58 3c 2f 69 3e 20 69 6e 20 63 68 61   <i>X</i> in cha
c640: 72 61 63 74 65 72 73 2e 0a 49 66 20 53 51 4c 69  racters..If SQLi
c650: 74 65 20 69 73 20 63 6f 6e 66 69 67 75 72 65 64  te is configured
c660: 20 74 6f 20 73 75 70 70 6f 72 74 20 55 54 46 2d   to support UTF-
c670: 38 2c 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62  8, then the numb
c680: 65 72 20 6f 66 20 55 54 46 2d 38 0a 63 68 61 72  er of UTF-8.char
c690: 61 63 74 65 72 73 20 69 73 20 72 65 74 75 72 6e  acters is return
c6a0: 65 64 2c 20 6e 6f 74 20 74 68 65 20 6e 75 6d 62  ed, not the numb
c6b0: 65 72 20 6f 66 20 62 79 74 65 73 2e 3c 2f 74 64  er of bytes.</td
c6c0: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
c6d0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
c6e0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 0a 3c 61  lign="right">.<a
c6f0: 20 6e 61 6d 65 3d 22 6c 69 6b 65 46 75 6e 63 22   name="likeFunc"
c700: 3e 3c 2f 61 3e 0a 6c 69 6b 65 28 3c 69 3e 58 3c  ></a>.like(<i>X<
c710: 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 62 72  /i>,<i>Y</i>)<br
c720: 3e 0a 6c 69 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c  >.like(<i>X</i>,
c730: 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 5a 3c 2f 69  <i>Y</i>,<i>Z</i
c740: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
c750: 67 6e 3d 22 74 6f 70 22 3e 0a 54 68 69 73 20 66  gn="top">.This f
c760: 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20  unction is used 
c770: 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65  to implement the
c780: 20 22 3c 62 3e 58 20 4c 49 4b 45 20 59 20 26 23   "<b>X LIKE Y &#
c790: 39 31 3b 45 53 43 41 50 45 20 5a 26 23 39 33 3b  91;ESCAPE Z&#93;
c7a0: 3c 2f 62 3e 22 0a 73 79 6e 74 61 78 20 6f 66 20  </b>".syntax of 
c7b0: 53 51 4c 2e 20 49 66 20 74 68 65 20 6f 70 74 69  SQL. If the opti
c7c0: 6f 6e 61 6c 20 45 53 43 41 50 45 20 63 6c 61 75  onal ESCAPE clau
c7d0: 73 65 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74  se is present, t
c7e0: 68 65 6e 20 74 68 65 0a 75 73 65 72 2d 66 75 6e  hen the.user-fun
c7f0: 63 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64  ction is invoked
c800: 20 77 69 74 68 20 74 68 72 65 65 20 61 72 67 75   with three argu
c810: 6d 65 6e 74 73 2e 20 4f 74 68 65 72 77 69 73 65  ments. Otherwise
c820: 2c 20 69 74 20 69 73 0a 69 6e 76 6f 6b 65 64 20  , it is.invoked 
c830: 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e  with two argumen
c840: 74 73 20 6f 6e 6c 79 2e 20 54 68 65 20 0a 3c 61  ts only. The .<a
c850: 20 68 72 65 66 3d 22 63 33 72 65 66 2f 63 72 65   href="c3ref/cre
c860: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 2e 68 74 6d  ate_function.htm
c870: 6c 22 3e 0a 73 71 6c 69 74 65 5f 63 72 65 61 74  l">.sqlite_creat
c880: 65 5f 66 75 6e 63 74 69 6f 6e 28 29 3c 2f 61 3e  e_function()</a>
c890: 20 69 6e 74 65 72 66 61 63 65 20 63 61 6e 20 62   interface can b
c8a0: 65 20 75 73 65 64 20 74 6f 20 6f 76 65 72 72 69  e used to overri
c8b0: 64 65 20 74 68 69 73 0a 66 75 6e 63 74 69 6f 6e  de this.function
c8c0: 20 61 6e 64 20 74 68 65 72 65 62 79 20 63 68 61   and thereby cha
c8d0: 6e 67 65 20 74 68 65 20 6f 70 65 72 61 74 69 6f  nge the operatio
c8e0: 6e 20 6f 66 20 74 68 65 20 3c 61 0a 68 72 65 66  n of the <a.href
c8f0: 3d 20 22 23 6c 69 6b 65 22 3e 4c 49 4b 45 3c 2f  = "#like">LIKE</
c900: 61 3e 20 6f 70 65 72 61 74 6f 72 2e 20 57 68 65  a> operator. Whe
c910: 6e 20 64 6f 69 6e 67 20 74 68 69 73 2c 20 69 74  n doing this, it
c920: 20 6d 61 79 20 62 65 20 69 6d 70 6f 72 74 61 6e   may be importan
c930: 74 0a 74 6f 20 6f 76 65 72 72 69 64 65 20 62 6f  t.to override bo
c940: 74 68 20 74 68 65 20 74 77 6f 20 61 6e 64 20 74  th the two and t
c950: 68 72 65 65 20 61 72 67 75 6d 65 6e 74 20 76 65  hree argument ve
c960: 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 6c 69  rsions of the li
c970: 6b 65 28 29 20 0a 66 75 6e 63 74 69 6f 6e 2e 20  ke() .function. 
c980: 4f 74 68 65 72 77 69 73 65 2c 20 64 69 66 66 65  Otherwise, diffe
c990: 72 65 6e 74 20 63 6f 64 65 20 6d 61 79 20 62 65  rent code may be
c9a0: 20 63 61 6c 6c 65 64 20 74 6f 20 69 6d 70 6c 65   called to imple
c9b0: 6d 65 6e 74 20 74 68 65 0a 4c 49 4b 45 20 6f 70  ment the.LIKE op
c9c0: 65 72 61 74 6f 72 20 64 65 70 65 6e 64 69 6e 67  erator depending
c9d0: 20 6f 6e 20 77 68 65 74 68 65 72 20 6f 72 20 6e   on whether or n
c9e0: 6f 74 20 61 6e 20 45 53 43 41 50 45 20 63 6c 61  ot an ESCAPE cla
c9f0: 75 73 65 20 77 61 73 20 0a 73 70 65 63 69 66 69  use was .specifi
ca00: 65 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  ed.</td>.</tr>..
ca10: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
ca20: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
ca30: 68 74 22 3e 6c 6f 61 64 5f 65 78 74 65 6e 73 69  ht">load_extensi
ca40: 6f 6e 28 3c 69 3e 58 3c 2f 69 3e 29 3c 62 72 3e  on(<i>X</i>)<br>
ca50: 0a 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  .load_extension(
ca60: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
ca70: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
ca80: 67 6e 3d 22 74 6f 70 22 3e 4c 6f 61 64 20 53 51  gn="top">Load SQ
ca90: 4c 69 74 65 20 65 78 74 65 6e 73 69 6f 6e 73 20  Lite extensions 
caa0: 6f 75 74 20 6f 66 20 74 68 65 20 73 68 61 72 65  out of the share
cab0: 64 20 6c 69 62 72 61 72 79 0a 66 69 6c 65 20 6e  d library.file n
cac0: 61 6d 65 64 20 3c 69 3e 58 3c 2f 69 3e 20 75 73  amed <i>X</i> us
cad0: 69 6e 67 20 74 68 65 20 65 6e 74 72 79 20 70 6f  ing the entry po
cae0: 69 6e 74 20 3c 69 3e 59 3c 2f 69 3e 2e 20 20 54  int <i>Y</i>.  T
caf0: 68 65 20 72 65 73 75 6c 74 0a 69 73 20 61 20 4e  he result.is a N
cb00: 55 4c 4c 2e 20 20 49 66 20 3c 69 3e 59 3c 2f 69  ULL.  If <i>Y</i
cb10: 3e 20 69 73 20 6f 6d 69 74 74 65 64 20 74 68 65  > is omitted the
cb20: 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 65 6e  n the default en
cb30: 74 72 79 20 70 6f 69 6e 74 0a 6f 66 20 3c 62 3e  try point.of <b>
cb40: 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 73 69 6f  sqlite3_extensio
cb50: 6e 5f 69 6e 69 74 3c 2f 62 3e 20 69 73 20 75 73  n_init</b> is us
cb60: 65 64 2e 20 20 54 68 69 73 20 66 75 6e 63 74 69  ed.  This functi
cb70: 6f 6e 20 72 61 69 73 65 73 0a 61 6e 20 65 78 63  on raises.an exc
cb80: 65 70 74 69 6f 6e 20 69 66 20 74 68 65 20 65 78  eption if the ex
cb90: 74 65 6e 73 69 6f 6e 20 66 61 69 6c 73 20 74 6f  tension fails to
cba0: 20 6c 6f 61 64 20 6f 72 20 69 6e 69 74 69 61 6c   load or initial
cbb0: 69 7a 65 20 63 6f 72 72 65 63 74 6c 79 2e 0a 0a  ize correctly...
cbc0: 3c 70 3e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  <p>This function
cbd0: 20 77 69 6c 6c 20 66 61 69 6c 20 69 66 20 74 68   will fail if th
cbe0: 65 20 65 78 74 65 6e 73 69 6f 6e 20 61 74 74 65  e extension atte
cbf0: 6d 70 74 73 20 74 6f 20 6d 6f 64 69 66 79 0a 6f  mpts to modify.o
cc00: 72 20 64 65 6c 65 74 65 20 61 20 53 51 4c 20 66  r delete a SQL f
cc10: 75 6e 63 74 69 6f 6e 20 6f 72 20 63 6f 6c 6c 61  unction or colla
cc20: 74 69 6e 67 20 73 65 71 75 65 6e 63 65 2e 20 20  ting sequence.  
cc30: 54 68 65 0a 65 78 74 65 6e 73 69 6f 6e 20 63 61  The.extension ca
cc40: 6e 20 61 64 64 20 6e 65 77 20 66 75 6e 63 74 69  n add new functi
cc50: 6f 6e 73 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67  ons or collating
cc60: 20 73 65 71 75 65 6e 63 65 73 2c 20 62 75 74 20   sequences, but 
cc70: 63 61 6e 6e 6f 74 0a 6d 6f 64 69 66 79 20 6f 72  cannot.modify or
cc80: 20 64 65 6c 65 74 65 20 65 78 69 73 74 69 6e 67   delete existing
cc90: 20 66 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f   functions or co
cca0: 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65  llating sequence
ccb0: 73 20 62 65 63 61 75 73 65 0a 74 68 6f 73 65 20  s because.those 
ccc0: 66 75 6e 63 74 69 6f 6e 73 20 61 6e 64 2f 6f 72  functions and/or
ccd0: 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65   collating seque
cce0: 6e 63 65 73 20 6d 69 67 68 74 20 62 65 20 75 73  nces might be us
ccf0: 65 64 20 65 6c 73 65 77 68 65 72 65 0a 69 6e 20  ed elsewhere.in 
cd00: 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 72 75  the currently ru
cd10: 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61 74 65 6d  nning SQL statem
cd20: 65 6e 74 2e 20 20 54 6f 20 6c 6f 61 64 20 61 6e  ent.  To load an
cd30: 20 65 78 74 65 6e 73 69 6f 6e 20 74 68 61 74 0a   extension that.
cd40: 63 68 61 6e 67 65 73 20 6f 72 20 64 65 6c 65 74  changes or delet
cd50: 65 73 20 66 75 6e 63 74 69 6f 6e 73 20 6f 72 20  es functions or 
cd60: 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e  collating sequen
cd70: 63 65 73 2c 20 75 73 65 20 74 68 65 0a 5b 73 71  ces, use the.[sq
cd80: 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e  lite3_load_exten
cd90: 73 69 6f 6e 28 29 5d 20 43 2d 6c 61 6e 67 75 61  sion()] C-langua
cda0: 67 65 20 41 50 49 2e 3c 2f 70 3e 0a 3c 2f 74 72  ge API.</p>.</tr
cdb0: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
cdc0: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
cdd0: 72 69 67 68 74 22 3e 6c 6f 77 65 72 28 3c 69 3e  right">lower(<i>
cde0: 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20  X</i>)</td>.<td 
cdf0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
ce00: 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 73 74  urn a copy of st
ce10: 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 77 69  ring <i>X</i> wi
ce20: 6c 6c 20 61 6c 6c 20 63 68 61 72 61 63 74 65 72  ll all character
ce30: 73 0a 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 6c  s.converted to l
ce40: 6f 77 65 72 20 63 61 73 65 2e 20 20 54 68 65 20  ower case.  The 
ce50: 43 20 6c 69 62 72 61 72 79 20 3c 62 3e 74 6f 6c  C library <b>tol
ce60: 6f 77 65 72 28 29 3c 2f 62 3e 20 72 6f 75 74 69  ower()</b> routi
ce70: 6e 65 20 69 73 20 75 73 65 64 0a 66 6f 72 20 74  ne is used.for t
ce80: 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2c 20 77  he conversion, w
ce90: 68 69 63 68 20 6d 65 61 6e 73 20 74 68 61 74 20  hich means that 
cea0: 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 69  this function mi
ceb0: 67 68 74 20 6e 6f 74 0a 77 6f 72 6b 20 63 6f 72  ght not.work cor
cec0: 72 65 63 74 6c 79 20 6f 6e 20 55 54 46 2d 38 20  rectly on UTF-8 
ced0: 63 68 61 72 61 63 74 65 72 73 2e 3c 2f 74 64 3e  characters.</td>
cee0: 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64  .</tr>..<tr>.<td
cef0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
cf00: 69 67 6e 3d 22 72 69 67 68 74 22 3e 0a 3c 61 20  ign="right">.<a 
cf10: 6e 61 6d 65 3d 22 6c 74 72 69 6d 46 75 6e 63 22  name="ltrimFunc"
cf20: 3e 3c 2f 61 3e 0a 6c 74 72 69 6d 28 3c 69 3e 58  ></a>.ltrim(<i>X
cf30: 3c 2f 69 3e 29 3c 62 72 3e 6c 74 72 69 6d 28 3c  </i>)<br>ltrim(<
cf40: 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e  i>X</i>,<i>Y</i>
cf50: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
cf60: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61  n="top">Return a
cf70: 20 73 74 72 69 6e 67 20 66 6f 72 6d 65 64 20 62   string formed b
cf80: 79 20 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61  y removing any a
cf90: 6e 64 20 61 6c 6c 0a 63 68 61 72 61 63 74 65 72  nd all.character
cfa0: 73 20 74 68 61 74 20 61 70 70 65 61 72 20 69 6e  s that appear in
cfb0: 20 3c 69 3e 59 3c 2f 69 3e 20 66 72 6f 6d 20 74   <i>Y</i> from t
cfc0: 68 65 20 6c 65 66 74 20 73 69 64 65 20 6f 66 20  he left side of 
cfd0: 3c 69 3e 58 3c 2f 69 3e 2e 0a 49 66 20 74 68 65  <i>X</i>..If the
cfe0: 20 3c 69 3e 59 3c 2f 69 3e 20 61 72 67 75 6d 65   <i>Y</i> argume
cff0: 6e 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 73  nt is omitted, s
d000: 70 61 63 65 73 20 61 72 65 20 72 65 6d 6f 76 65  paces are remove
d010: 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 0a  d.</td>.</tr>...
d020: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
d030: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
d040: 68 74 22 3e 6d 61 78 28 3c 69 3e 58 3c 2f 69 3e  ht">max(<i>X</i>
d050: 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f  ,<i>Y</i>,...)</
d060: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
d070: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
d080: 61 72 67 75 6d 65 6e 74 20 77 69 74 68 20 74 68  argument with th
d090: 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 2e  e maximum value.
d0a0: 20 20 41 72 67 75 6d 65 6e 74 73 0a 6d 61 79 20    Arguments.may 
d0b0: 62 65 20 73 74 72 69 6e 67 73 20 69 6e 20 61 64  be strings in ad
d0c0: 64 69 74 69 6f 6e 20 74 6f 20 6e 75 6d 62 65 72  dition to number
d0d0: 73 2e 20 20 54 68 65 20 6d 61 78 69 6d 75 6d 20  s.  The maximum 
d0e0: 76 61 6c 75 65 20 69 73 20 64 65 74 65 72 6d 69  value is determi
d0f0: 6e 65 64 0a 62 79 20 74 68 65 20 75 73 75 61 6c  ned.by the usual
d100: 20 73 6f 72 74 20 6f 72 64 65 72 2e 20 20 4e 6f   sort order.  No
d110: 74 65 20 74 68 61 74 20 3c 62 3e 6d 61 78 28 29  te that <b>max()
d120: 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70 6c 65  </b> is a simple
d130: 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 69   function when.i
d140: 74 20 68 61 73 20 32 20 6f 72 20 6d 6f 72 65 20  t has 2 or more 
d150: 61 72 67 75 6d 65 6e 74 73 20 62 75 74 20 63 6f  arguments but co
d160: 6e 76 65 72 74 73 20 74 6f 20 61 6e 20 61 67 67  nverts to an agg
d170: 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20  regate function 
d180: 69 66 20 67 69 76 65 6e 0a 6f 6e 6c 79 20 61 20  if given.only a 
d190: 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 2e  single argument.
d1a0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
d1b0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
d1c0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
d1d0: 3e 6d 69 6e 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  >min(<i>X</i>,<i
d1e0: 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e  >Y</i>,...)</td>
d1f0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
d200: 22 3e 52 65 74 75 72 6e 20 74 68 65 20 61 72 67  ">Return the arg
d210: 75 6d 65 6e 74 20 77 69 74 68 20 74 68 65 20 6d  ument with the m
d220: 69 6e 69 6d 75 6d 20 76 61 6c 75 65 2e 20 20 41  inimum value.  A
d230: 72 67 75 6d 65 6e 74 73 0a 6d 61 79 20 62 65 20  rguments.may be 
d240: 73 74 72 69 6e 67 73 20 69 6e 20 61 64 64 69 74  strings in addit
d250: 69 6f 6e 20 74 6f 20 6e 75 6d 62 65 72 73 2e 20  ion to numbers. 
d260: 20 54 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c   The minimum val
d270: 75 65 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64  ue is determined
d280: 0a 62 79 20 74 68 65 20 75 73 75 61 6c 20 73 6f  .by the usual so
d290: 72 74 20 6f 72 64 65 72 2e 20 20 4e 6f 74 65 20  rt order.  Note 
d2a0: 74 68 61 74 20 3c 62 3e 6d 69 6e 28 29 3c 2f 62  that <b>min()</b
d2b0: 3e 20 69 73 20 61 20 73 69 6d 70 6c 65 20 66 75  > is a simple fu
d2c0: 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 69 74 20 68  nction when.it h
d2d0: 61 73 20 32 20 6f 72 20 6d 6f 72 65 20 61 72 67  as 2 or more arg
d2e0: 75 6d 65 6e 74 73 20 62 75 74 20 63 6f 6e 76 65  uments but conve
d2f0: 72 74 73 20 74 6f 20 61 6e 20 61 67 67 72 65 67  rts to an aggreg
d300: 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 69 66 20  ate function if 
d310: 67 69 76 65 6e 0a 6f 6e 6c 79 20 61 20 73 69 6e  given.only a sin
d320: 67 6c 65 20 61 72 67 75 6d 65 6e 74 2e 3c 2f 74  gle argument.</t
d330: 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c  d>.</tr>..<tr>.<
d340: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
d350: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6e 75  align="right">nu
d360: 6c 6c 69 66 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  llif(<i>X</i>,<i
d370: 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >Y</i>)</td>.<td
d380: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
d390: 74 75 72 6e 20 74 68 65 20 66 69 72 73 74 20 61  turn the first a
d3a0: 72 67 75 6d 65 6e 74 20 69 66 20 74 68 65 20 61  rgument if the a
d3b0: 72 67 75 6d 65 6e 74 73 20 61 72 65 20 64 69 66  rguments are dif
d3c0: 66 65 72 65 6e 74 2c 20 0a 6f 74 68 65 72 77 69  ferent, .otherwi
d3d0: 73 65 20 72 65 74 75 72 6e 20 4e 55 4c 4c 2e 3c  se return NULL.<
d3e0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
d3f0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
d400: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
d410: 71 75 6f 74 65 28 3c 69 3e 58 3c 2f 69 3e 29 3c  quote(<i>X</i>)<
d420: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
d430: 22 74 6f 70 22 3e 54 68 69 73 20 72 6f 75 74 69  "top">This routi
d440: 6e 65 20 72 65 74 75 72 6e 73 20 61 20 73 74 72  ne returns a str
d450: 69 6e 67 20 77 68 69 63 68 20 69 73 20 74 68 65  ing which is the
d460: 20 76 61 6c 75 65 20 6f 66 0a 69 74 73 20 61 72   value of.its ar
d470: 67 75 6d 65 6e 74 20 73 75 69 74 61 62 6c 65 20  gument suitable 
d480: 66 6f 72 20 69 6e 63 6c 75 73 69 6f 6e 20 69 6e  for inclusion in
d490: 74 6f 20 61 6e 6f 74 68 65 72 20 53 51 4c 20 73  to another SQL s
d4a0: 74 61 74 65 6d 65 6e 74 2e 0a 53 74 72 69 6e 67  tatement..String
d4b0: 73 20 61 72 65 20 73 75 72 72 6f 75 6e 64 65 64  s are surrounded
d4c0: 20 62 79 20 73 69 6e 67 6c 65 2d 71 75 6f 74 65   by single-quote
d4d0: 73 20 77 69 74 68 20 65 73 63 61 70 65 73 20 6f  s with escapes o
d4e0: 6e 20 69 6e 74 65 72 69 6f 72 20 71 75 6f 74 65  n interior quote
d4f0: 73 0a 61 73 20 6e 65 65 64 65 64 2e 20 20 42 4c  s.as needed.  BL
d500: 4f 42 73 20 61 72 65 20 65 6e 63 6f 64 65 64 20  OBs are encoded 
d510: 61 73 20 68 65 78 61 64 65 63 69 6d 61 6c 20 6c  as hexadecimal l
d520: 69 74 65 72 61 6c 73 2e 0a 54 68 65 20 63 75 72  iterals..The cur
d530: 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74  rent implementat
d540: 69 6f 6e 20 6f 66 20 5b 56 41 43 55 55 4d 5d 20  ion of [VACUUM] 
d550: 75 73 65 73 20 74 68 69 73 20 66 75 6e 63 74 69  uses this functi
d560: 6f 6e 2e 20 20 54 68 65 20 66 75 6e 63 74 69 6f  on.  The functio
d570: 6e 0a 69 73 20 61 6c 73 6f 20 75 73 65 66 75 6c  n.is also useful
d580: 20 77 68 65 6e 20 77 72 69 74 69 6e 67 20 74 72   when writing tr
d590: 69 67 67 65 72 73 20 74 6f 20 69 6d 70 6c 65 6d  iggers to implem
d5a0: 65 6e 74 20 75 6e 64 6f 2f 72 65 64 6f 20 66 75  ent undo/redo fu
d5b0: 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 0a 3c 2f 74  nctionality..</t
d5c0: 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c  d>.</tr>..<tr>.<
d5d0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
d5e0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 72 61  align="right">ra
d5f0: 6e 64 6f 6d 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64  ndom(*)</td>.<td
d600: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
d610: 74 75 72 6e 20 61 20 70 73 65 75 64 6f 2d 72 61  turn a pseudo-ra
d620: 6e 64 6f 6d 20 69 6e 74 65 67 65 72 0a 62 65 74  ndom integer.bet
d630: 77 65 65 6e 20 2d 39 32 32 33 33 37 32 30 33 36  ween -9223372036
d640: 38 35 34 37 37 35 38 30 38 20 61 6e 64 20 2b 39  854775808 and +9
d650: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
d660: 30 37 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  07.</td>.</tr>..
d670: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
d680: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
d690: 68 74 22 3e 0a 3c 61 20 6e 61 6d 65 3d 22 72 65  ht">.<a name="re
d6a0: 70 6c 61 63 65 46 75 6e 63 22 3e 3c 2f 61 3e 0a  placeFunc"></a>.
d6b0: 72 65 70 6c 61 63 65 28 3c 69 3e 58 3c 2f 69 3e  replace(<i>X</i>
d6c0: 2c 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 5a 3c 2f  ,<i>Y</i>,<i>Z</
d6d0: 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  i>)</td>.<td val
d6e0: 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e  ign="top">Return
d6f0: 20 61 20 73 74 72 69 6e 67 20 66 6f 72 6d 65 64   a string formed
d700: 20 62 79 20 73 75 62 73 74 69 74 75 74 69 6e 67   by substituting
d710: 20 73 74 72 69 6e 67 20 3c 69 3e 5a 3c 2f 69 3e   string <i>Z</i>
d720: 20 66 6f 72 0a 65 76 65 72 79 20 6f 63 63 75 72   for.every occur
d730: 72 61 6e 63 65 20 6f 66 20 73 74 72 69 6e 67 20  rance of string 
d740: 3c 69 3e 59 3c 2f 69 3e 20 69 6e 20 73 74 72 69  <i>Y</i> in stri
d750: 6e 67 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 54 68  ng <i>X</i>.  Th
d760: 65 20 42 49 4e 41 52 59 0a 63 6f 6c 6c 61 74 69  e BINARY.collati
d770: 6e 67 20 73 65 71 75 65 6e 63 65 20 69 73 20 75  ng sequence is u
d780: 73 65 64 20 66 6f 72 20 63 6f 6d 70 61 72 69 73  sed for comparis
d790: 6f 6e 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ons.</td>.</tr>.
d7a0: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
d7b0: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
d7c0: 67 68 74 22 3e 0a 3c 61 20 6e 61 6d 65 3d 22 72  ght">.<a name="r
d7d0: 61 6e 64 6f 6d 62 6c 6f 62 46 75 6e 63 22 3e 3c  andomblobFunc"><
d7e0: 2f 61 3e 0a 72 61 6e 64 6f 6d 62 6c 6f 62 28 3c  /a>.randomblob(<
d7f0: 69 3e 4e 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>N</i>)</td>.<t
d800: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
d810: 65 74 75 72 6e 20 61 20 3c 69 3e 4e 3c 2f 69 3e  eturn a <i>N</i>
d820: 2d 62 79 74 65 20 62 6c 6f 62 20 63 6f 6e 74 61  -byte blob conta
d830: 69 6e 69 6e 67 20 70 73 65 75 64 6f 2d 72 61 6e  ining pseudo-ran
d840: 64 6f 6d 20 62 79 74 65 73 2e 0a 3c 69 3e 4e 3c  dom bytes..<i>N<
d850: 2f 69 3e 20 73 68 6f 75 6c 64 20 62 65 20 61 20  /i> should be a 
d860: 70 6f 73 74 69 76 65 20 69 6e 74 65 67 65 72 2e  postive integer.
d870: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
d880: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
d890: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
d8a0: 3e 72 6f 75 6e 64 28 3c 69 3e 58 3c 2f 69 3e 29  >round(<i>X</i>)
d8b0: 3c 62 72 3e 72 6f 75 6e 64 28 3c 69 3e 58 3c 2f  <br>round(<i>X</
d8c0: 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64  i>,<i>Y</i>)</td
d8d0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
d8e0: 70 22 3e 52 6f 75 6e 64 20 6f 66 66 20 74 68 65  p">Round off the
d8f0: 20 6e 75 6d 62 65 72 20 3c 69 3e 58 3c 2f 69 3e   number <i>X</i>
d900: 20 74 6f 20 3c 69 3e 59 3c 2f 69 3e 20 64 69 67   to <i>Y</i> dig
d910: 69 74 73 20 74 6f 20 74 68 65 0a 72 69 67 68 74  its to the.right
d920: 20 6f 66 20 74 68 65 20 64 65 63 69 6d 61 6c 20   of the decimal 
d930: 70 6f 69 6e 74 2e 20 20 49 66 20 74 68 65 20 3c  point.  If the <
d940: 69 3e 59 3c 2f 69 3e 20 61 72 67 75 6d 65 6e 74  i>Y</i> argument
d950: 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 30 20 69   is omitted, 0 i
d960: 73 20 0a 61 73 73 75 6d 65 64 2e 3c 2f 74 64 3e  s .assumed.</td>
d970: 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64  .</tr>..<tr>.<td
d980: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
d990: 69 67 6e 3d 22 72 69 67 68 74 22 3e 0a 3c 61 20  ign="right">.<a 
d9a0: 6e 61 6d 65 3d 22 72 74 72 69 6d 46 75 6e 63 22  name="rtrimFunc"
d9b0: 3e 3c 2f 61 3e 0a 72 74 72 69 6d 28 3c 69 3e 58  ></a>.rtrim(<i>X
d9c0: 3c 2f 69 3e 29 3c 62 72 3e 72 74 72 69 6d 28 3c  </i>)<br>rtrim(<
d9d0: 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e  i>X</i>,<i>Y</i>
d9e0: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
d9f0: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61  n="top">Return a
da00: 20 73 74 72 69 6e 67 20 66 6f 72 6d 65 64 20 62   string formed b
da10: 79 20 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61  y removing any a
da20: 6e 64 20 61 6c 6c 0a 63 68 61 72 61 63 74 65 72  nd all.character
da30: 73 20 74 68 61 74 20 61 70 70 65 61 72 20 69 6e  s that appear in
da40: 20 3c 69 3e 59 3c 2f 69 3e 20 66 72 6f 6d 20 74   <i>Y</i> from t
da50: 68 65 20 72 69 67 68 74 20 73 69 64 65 20 6f 66  he right side of
da60: 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 49 66 20 74 68   <i>X</i>..If th
da70: 65 20 3c 69 3e 59 3c 2f 69 3e 20 61 72 67 75 6d  e <i>Y</i> argum
da80: 65 6e 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20  ent is omitted, 
da90: 73 70 61 63 65 73 20 61 72 65 20 72 65 6d 6f 76  spaces are remov
daa0: 65 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  ed.</td>.</tr>..
dab0: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
dac0: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
dad0: 68 74 22 3e 73 6f 75 6e 64 65 78 28 3c 69 3e 58  ht">soundex(<i>X
dae0: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
daf0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 43 6f 6d 70  align="top">Comp
db00: 75 74 65 20 74 68 65 20 73 6f 75 6e 64 65 78 20  ute the soundex 
db10: 65 6e 63 6f 64 69 6e 67 20 6f 66 20 74 68 65 20  encoding of the 
db20: 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 2e  string <i>X</i>.
db30: 0a 54 68 65 20 73 74 72 69 6e 67 20 22 3f 30 30  .The string "?00
db40: 30 22 20 69 73 20 72 65 74 75 72 6e 65 64 20 69  0" is returned i
db50: 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69  f the argument i
db60: 73 20 4e 55 4c 4c 2e 0a 54 68 69 73 20 66 75 6e  s NULL..This fun
db70: 63 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64  ction is omitted
db80: 20 66 72 6f 6d 20 53 51 4c 69 74 65 20 62 79 20   from SQLite by 
db90: 64 65 66 61 75 6c 74 2e 0a 49 74 20 69 73 20 6f  default..It is o
dba0: 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 74 68  nly available th
dbb0: 65 20 2d 44 53 51 4c 49 54 45 5f 53 4f 55 4e 44  e -DSQLITE_SOUND
dbc0: 45 58 3d 31 20 63 6f 6d 70 69 6c 65 72 20 6f 70  EX=1 compiler op
dbd0: 74 69 6f 6e 0a 69 73 20 75 73 65 64 20 77 68 65  tion.is used whe
dbe0: 6e 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c  n SQLite is buil
dbf0: 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  t.</td>.</tr>..<
dc00: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
dc10: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
dc20: 74 22 3e 73 71 6c 69 74 65 5f 76 65 72 73 69 6f  t">sqlite_versio
dc30: 6e 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  n(*)</td>.<td va
dc40: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
dc50: 6e 20 74 68 65 20 76 65 72 73 69 6f 6e 20 73 74  n the version st
dc60: 72 69 6e 67 20 66 6f 72 20 74 68 65 20 53 51 4c  ring for the SQL
dc70: 69 74 65 20 6c 69 62 72 61 72 79 0a 74 68 61 74  ite library.that
dc80: 20 69 73 20 72 75 6e 6e 69 6e 67 2e 20 20 45 78   is running.  Ex
dc90: 61 6d 70 6c 65 3a 20 20 22 32 2e 38 2e 30 22 3c  ample:  "2.8.0"<
dca0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
dcb0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
dcc0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
dcd0: 0a 20 20 73 75 62 73 74 72 28 3c 69 3e 58 3c 2f  .  substr(<i>X</
dce0: 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 5a  i>,<i>Y</i>,<i>Z
dcf0: 3c 2f 69 3e 29 3c 62 72 3e 0a 20 20 73 75 62 73  </i>)<br>.  subs
dd00: 74 72 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59  tr(<i>X</i>,<i>Y
dd10: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
dd20: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
dd30: 72 6e 20 61 20 73 75 62 73 74 72 69 6e 67 20 6f  rn a substring o
dd40: 66 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 3c  f input string <
dd50: 69 3e 58 3c 2f 69 3e 20 74 68 61 74 20 62 65 67  i>X</i> that beg
dd60: 69 6e 73 0a 77 69 74 68 20 74 68 65 20 3c 69 3e  ins.with the <i>
dd70: 59 3c 2f 69 3e 2d 74 68 20 63 68 61 72 61 63 74  Y</i>-th charact
dd80: 65 72 20 61 6e 64 20 77 68 69 63 68 20 69 73 20  er and which is 
dd90: 3c 69 3e 5a 3c 2f 69 3e 20 63 68 61 72 61 63 74  <i>Z</i> charact
dda0: 65 72 73 20 6c 6f 6e 67 2e 0a 49 66 20 3c 69 3e  ers long..If <i>
ddb0: 5a 3c 2f 69 3e 20 69 73 20 6f 6d 69 74 74 65 64  Z</i> is omitted
ddc0: 20 74 68 65 6e 20 61 6c 6c 20 63 68 61 72 61 63   then all charac
ddd0: 74 65 72 20 74 68 72 6f 75 67 68 20 74 68 65 20  ter through the 
dde0: 65 6e 64 20 6f 66 20 74 68 65 20 73 74 72 69 6e  end of the strin
ddf0: 67 0a 61 72 65 20 72 65 74 75 72 6e 65 64 2e 0a  g.are returned..
de00: 54 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63 68  The left-most ch
de10: 61 72 61 63 74 65 72 20 6f 66 20 3c 69 3e 58 3c  aracter of <i>X<
de20: 2f 69 3e 20 69 73 20 6e 75 6d 62 65 72 20 31 2e  /i> is number 1.
de30: 20 20 49 66 20 3c 69 3e 59 3c 2f 69 3e 20 69 73    If <i>Y</i> is
de40: 20 6e 65 67 61 74 69 76 65 0a 74 68 65 20 74 68   negative.the th
de50: 65 20 66 69 72 73 74 20 63 68 61 72 61 63 74 65  e first characte
de60: 72 20 6f 66 20 74 68 65 20 73 75 62 73 74 72 69  r of the substri
de70: 6e 67 20 69 73 20 66 6f 75 6e 64 20 62 79 20 63  ng is found by c
de80: 6f 75 6e 74 69 6e 67 20 66 72 6f 6d 20 74 68 65  ounting from the
de90: 0a 72 69 67 68 74 20 72 61 74 68 65 72 20 74 68  .right rather th
dea0: 61 6e 20 74 68 65 20 6c 65 66 74 2e 20 20 49 66  an the left.  If
deb0: 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 73 74 72   <i>X</i> is str
dec0: 69 6e 67 0a 74 68 65 6e 20 63 68 61 72 61 63 74  ing.then charact
ded0: 65 72 73 20 69 6e 64 69 63 65 73 20 72 65 66 65  ers indices refe
dee0: 72 20 74 6f 20 61 63 74 75 61 6c 20 55 54 46 2d  r to actual UTF-
def0: 38 20 63 68 61 72 61 63 74 65 72 73 2e 20 20 49  8 characters.  I
df00: 66 0a 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 61 20  f.<i>X</i> is a 
df10: 42 4c 4f 42 20 74 68 65 6e 20 74 68 65 20 69 6e  BLOB then the in
df20: 64 69 63 65 73 20 72 65 66 65 72 20 74 6f 20 62  dices refer to b
df30: 79 74 65 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  ytes.</td>.</tr>
df40: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
df50: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
df60: 69 67 68 74 22 3e 0a 3c 61 20 6e 61 6d 65 3d 22  ight">.<a name="
df70: 74 72 69 6d 46 75 6e 63 22 3e 3c 2f 61 3e 0a 74  trimFunc"></a>.t
df80: 72 69 6d 28 3c 69 3e 58 3c 2f 69 3e 29 3c 62 72  rim(<i>X</i>)<br
df90: 3e 74 72 69 6d 28 3c 69 3e 58 3c 2f 69 3e 2c 3c  >trim(<i>X</i>,<
dfa0: 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>Y</i>)</td>.<t
dfb0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
dfc0: 65 74 75 72 6e 20 61 20 73 74 72 69 6e 67 20 66  eturn a string f
dfd0: 6f 72 6d 65 64 20 62 79 20 72 65 6d 6f 76 69 6e  ormed by removin
dfe0: 67 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a 63 68  g any and all.ch
dff0: 61 72 61 63 74 65 72 73 20 74 68 61 74 20 61 70  aracters that ap
e000: 70 65 61 72 20 69 6e 20 3c 69 3e 59 3c 2f 69 3e  pear in <i>Y</i>
e010: 20 66 72 6f 6d 20 62 6f 74 68 20 65 6e 64 73 20   from both ends 
e020: 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 49 66 20  of <i>X</i>..If 
e030: 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 20 61 72 67  the <i>Y</i> arg
e040: 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74 65 64  ument is omitted
e050: 2c 20 73 70 61 63 65 73 20 61 72 65 20 72 65 6d  , spaces are rem
e060: 6f 76 65 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  oved.</td>.</tr>
e070: 0a 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  ...<tr>.<td vali
e080: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
e090: 72 69 67 68 74 22 3e 74 79 70 65 6f 66 28 3c 69  right">typeof(<i
e0a0: 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >X</i>)</td>.<td
e0b0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
e0c0: 74 75 72 6e 20 74 68 65 20 74 79 70 65 20 6f 66  turn the type of
e0d0: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
e0e0: 3c 69 3e 58 3c 2f 69 3e 2e 20 20 54 68 65 20 6f  <i>X</i>.  The o
e0f0: 6e 6c 79 20 0a 72 65 74 75 72 6e 20 76 61 6c 75  nly .return valu
e100: 65 73 20 61 72 65 20 22 6e 75 6c 6c 22 2c 20 22  es are "null", "
e110: 69 6e 74 65 67 65 72 22 2c 20 22 72 65 61 6c 22  integer", "real"
e120: 2c 20 22 74 65 78 74 22 2c 20 61 6e 64 20 22 62  , "text", and "b
e130: 6c 6f 62 22 2e 0a 53 51 4c 69 74 65 27 73 20 74  lob"..SQLite's t
e140: 79 70 65 20 68 61 6e 64 6c 69 6e 67 20 69 73 20  ype handling is 
e150: 0a 65 78 70 6c 61 69 6e 65 64 20 69 6e 20 3c 61  .explained in <a
e160: 20 68 72 65 66 3d 22 64 61 74 61 74 79 70 65 33   href="datatype3
e170: 2e 68 74 6d 6c 22 3e 44 61 74 61 74 79 70 65 73  .html">Datatypes
e180: 20 69 6e 20 53 51 4c 69 74 65 20 56 65 72 73 69   in SQLite Versi
e190: 6f 6e 20 33 3c 2f 61 3e 2e 3c 2f 74 64 3e 0a 3c  on 3</a>.</td>.<
e1a0: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
e1b0: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
e1c0: 6e 3d 22 72 69 67 68 74 22 3e 75 70 70 65 72 28  n="right">upper(
e1d0: 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c  <i>X</i>)</td>.<
e1e0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
e1f0: 52 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66  Return a copy of
e200: 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 3c 69   input string <i
e210: 3e 58 3c 2f 69 3e 20 63 6f 6e 76 65 72 74 65 64  >X</i> converted
e220: 20 74 6f 20 61 6c 6c 0a 75 70 70 65 72 2d 63 61   to all.upper-ca
e230: 73 65 20 6c 65 74 74 65 72 73 2e 20 20 54 68 65  se letters.  The
e240: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
e250: 6f 66 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  of this function
e260: 20 75 73 65 73 20 74 68 65 20 43 20 6c 69 62 72   uses the C libr
e270: 61 72 79 0a 72 6f 75 74 69 6e 65 20 3c 62 3e 74  ary.routine <b>t
e280: 6f 75 70 70 65 72 28 29 3c 2f 62 3e 20 77 68 69  oupper()</b> whi
e290: 63 68 20 6d 65 61 6e 73 20 69 74 20 6d 61 79 20  ch means it may 
e2a0: 6e 6f 74 20 77 6f 72 6b 20 63 6f 72 72 65 63 74  not work correct
e2b0: 6c 79 20 6f 6e 20 0a 55 54 46 2d 38 20 73 74 72  ly on .UTF-8 str
e2c0: 69 6e 67 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  ings.</td>.</tr>
e2d0: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
e2e0: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
e2f0: 69 67 68 74 22 3e 7a 65 72 6f 62 6c 6f 62 28 3c  ight">zeroblob(<
e300: 69 3e 4e 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>N</i>)</td>.<t
e310: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c  d valign="top"><
e320: 61 20 6e 61 6d 65 3d 22 7a 65 72 6f 62 6c 6f 62  a name="zeroblob
e330: 22 3e 3c 2f 61 3e 0a 52 65 74 75 72 6e 20 61 20  "></a>.Return a 
e340: 42 4c 4f 42 20 63 6f 6e 73 69 73 74 69 6e 67 20  BLOB consisting 
e350: 6f 66 20 4e 20 62 79 74 65 73 20 6f 66 20 30 78  of N bytes of 0x
e360: 30 30 2e 20 20 53 51 4c 69 74 65 0a 6d 61 6e 61  00.  SQLite.mana
e370: 67 65 73 20 74 68 65 73 65 20 7a 65 72 6f 62 6c  ges these zerobl
e380: 6f 62 73 20 76 65 72 79 20 65 66 66 69 63 69 65  obs very efficie
e390: 6e 74 6c 79 2e 20 20 5a 65 72 6f 62 6c 6f 62 73  ntly.  Zeroblobs
e3a0: 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 0a   can be used to.
e3b0: 72 65 73 65 72 76 65 20 73 70 61 63 65 20 66 6f  reserve space fo
e3c0: 72 20 61 20 42 4c 4f 42 20 74 68 61 74 20 69 73  r a BLOB that is
e3d0: 20 6c 61 74 65 72 20 77 72 69 74 74 65 6e 20 75   later written u
e3e0: 73 69 6e 67 20 0a 5b 73 71 6c 69 74 65 33 5f 62  sing .[sqlite3_b
e3f0: 6c 6f 62 5f 6f 70 65 6e 28 29 20 7c 20 69 6e 63  lob_open() | inc
e400: 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49 2f  remental BLOB I/
e410: 4f 5d 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  O].</td>.</tr>..
e420: 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 62 3e 44 61 74  </table>..<b>Dat
e430: 65 20 41 6e 64 20 54 69 6d 65 20 46 75 6e 63 74  e And Time Funct
e440: 69 6f 6e 73 3c 2f 62 3e 0a 0a 3c 70 3e 44 61 74  ions</b>..<p>Dat
e450: 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74  e and time funct
e460: 69 6f 6e 73 20 61 72 65 20 64 6f 63 75 6d 65 6e  ions are documen
e470: 74 65 64 20 69 6e 20 74 68 65 20 0a 3c 61 20 68  ted in the .<a h
e480: 72 65 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e  ref="http://www.
e490: 73 71 6c 69 74 65 2e 6f 72 67 2f 63 76 73 74 72  sqlite.org/cvstr
e4a0: 61 63 2f 77 69 6b 69 3f 70 3d 44 61 74 65 41 6e  ac/wiki?p=DateAn
e4b0: 64 54 69 6d 65 46 75 6e 63 74 69 6f 6e 73 22 3e  dTimeFunctions">
e4c0: 0a 53 51 4c 69 74 65 20 57 69 6b 69 3c 2f 61 3e  .SQLite Wiki</a>
e4d0: 2e 3c 2f 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22  .</p>..<a name="
e4e0: 61 67 67 72 65 67 61 74 65 66 75 6e 63 74 69 6f  aggregatefunctio
e4f0: 6e 73 22 3e 3c 2f 61 3e 0a 3c 62 3e 41 67 67 72  ns"></a>.<b>Aggr
e500: 65 67 61 74 65 20 46 75 6e 63 74 69 6f 6e 73 3c  egate Functions<
e510: 2f 62 3e 0a 0a 3c 70 3e 0a 54 68 65 20 61 67 67  /b>..<p>.The agg
e520: 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
e530: 20 73 68 6f 77 6e 20 62 65 6c 6f 77 20 61 72 65   shown below are
e540: 20 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64 65   available by de
e550: 66 61 75 6c 74 2e 20 20 41 64 64 69 74 69 6f 6e  fault.  Addition
e560: 61 6c 0a 61 67 67 72 65 67 61 74 65 20 66 75 6e  al.aggregate fun
e570: 63 74 69 6f 6e 73 20 77 72 69 74 74 65 6e 20 69  ctions written i
e580: 6e 20 43 20 6d 61 79 20 62 65 20 61 64 64 65 64  n C may be added
e590: 20 75 73 69 6e 67 20 74 68 65 20 0a 5b 73 71 6c   using the .[sql
e5a0: 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
e5b0: 74 69 6f 6e 28 29 5d 3c 2f 61 3e 0a 41 50 49 2e  tion()]</a>.API.
e5c0: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 49 6e 20 61 6e 79  </p>..<p>.In any
e5d0: 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
e5e0: 69 6f 6e 20 74 68 61 74 20 74 61 6b 65 73 20 61  ion that takes a
e5f0: 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74   single argument
e600: 2c 20 74 68 61 74 20 61 72 67 75 6d 65 6e 74 0a  , that argument.
e610: 63 61 6e 20 62 65 20 70 72 65 63 65 65 64 65 64  can be preceeded
e620: 20 62 79 20 74 68 65 20 6b 65 79 77 6f 72 64 20   by the keyword 
e630: 44 49 53 54 49 4e 43 54 2e 20 20 49 6e 20 73 75  DISTINCT.  In su
e640: 63 68 20 63 61 73 65 73 2c 20 64 75 70 6c 69 63  ch cases, duplic
e650: 61 74 65 0a 65 6c 65 6d 65 6e 74 73 20 61 72 65  ate.elements are
e660: 20 66 69 6c 74 65 72 65 64 20 62 65 66 6f 72 65   filtered before
e670: 20 62 65 69 6e 67 20 70 61 73 73 65 64 20 69 6e   being passed in
e680: 74 6f 20 74 68 65 20 61 67 67 72 65 67 61 74 65  to the aggregate
e690: 20 66 75 6e 63 74 69 6f 6e 2e 0a 46 6f 72 20 65   function..For e
e6a0: 78 61 6d 70 6c 65 2c 20 74 68 65 20 66 75 6e 63  xample, the func
e6b0: 74 69 6f 6e 20 22 63 6f 75 6e 74 28 64 69 73 74  tion "count(dist
e6c0: 69 6e 63 74 20 58 29 22 20 77 69 6c 6c 20 72 65  inct X)" will re
e6d0: 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 0a  turn the number.
e6e0: 6f 66 20 64 69 73 74 69 6e 63 74 20 76 61 6c 75  of distinct valu
e6f0: 65 73 20 6f 66 20 63 6f 6c 75 6d 6e 20 58 20 69  es of column X i
e700: 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 74 6f  nstead of the to
e710: 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6e 6f  tal number of no
e720: 6e 2d 6e 75 6c 6c 0a 76 61 6c 75 65 73 20 69 6e  n-null.values in
e730: 20 63 6f 6c 75 6d 6e 20 58 2e 0a 3c 2f 70 3e 0a   column X..</p>.
e740: 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30  .<table border=0
e750: 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 20   cellpadding=10 
e760: 63 6c 61 73 73 3d 22 70 64 66 5f 66 75 6e 63 74  class="pdf_funct
e770: 69 6f 6e 73 22 3e 0a 3c 74 72 3e 0a 3c 74 64 20  ions">.<tr>.<td 
e780: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
e790: 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68  gn="right" width
e7a0: 3d 31 32 30 3e 61 76 67 28 3c 69 3e 58 3c 2f 69  =120>avg(<i>X</i
e7b0: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
e7c0: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
e7d0: 74 68 65 20 61 76 65 72 61 67 65 20 76 61 6c 75  the average valu
e7e0: 65 20 6f 66 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c  e of all non-NUL
e7f0: 4c 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 74 68 69  L <i>X</i> withi
e800: 6e 20 61 0a 67 72 6f 75 70 2e 20 20 53 74 72 69  n a.group.  Stri
e810: 6e 67 20 61 6e 64 20 42 4c 4f 42 20 76 61 6c 75  ng and BLOB valu
e820: 65 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 6c  es that do not l
e830: 6f 6f 6b 20 6c 69 6b 65 20 6e 75 6d 62 65 72 73  ook like numbers
e840: 20 61 72 65 0a 69 6e 74 65 72 70 72 65 74 65 64   are.interpreted
e850: 20 61 73 20 30 2e 0a 54 68 65 20 72 65 73 75 6c   as 0..The resul
e860: 74 20 6f 66 20 61 76 67 28 29 20 69 73 20 61 6c  t of avg() is al
e870: 77 61 79 73 20 61 20 66 6c 6f 61 74 69 6e 67 20  ways a floating 
e880: 70 6f 69 6e 74 20 76 61 6c 75 65 20 65 76 65 6e  point value even
e890: 20 69 66 20 61 6c 6c 0a 69 6e 70 75 74 73 20 61   if all.inputs a
e8a0: 72 65 20 69 6e 74 65 67 65 72 73 2e 20 3c 2f 70  re integers. </p
e8b0: 3e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  ></td>.</tr>..<t
e8c0: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
e8d0: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
e8e0: 22 3e 63 6f 75 6e 74 28 3c 69 3e 58 3c 2f 69 3e  ">count(<i>X</i>
e8f0: 29 3c 62 72 3e 63 6f 75 6e 74 28 2a 29 3c 2f 74  )<br>count(*)</t
e900: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
e910: 6f 70 22 3e 54 68 65 20 66 69 72 73 74 20 66 6f  op">The first fo
e920: 72 6d 20 72 65 74 75 72 6e 20 61 20 63 6f 75 6e  rm return a coun
e930: 74 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20  t of the number 
e940: 6f 66 20 74 69 6d 65 73 0a 74 68 61 74 20 3c 69  of times.that <i
e950: 3e 58 3c 2f 69 3e 20 69 73 20 6e 6f 74 20 4e 55  >X</i> is not NU
e960: 4c 4c 20 69 6e 20 61 20 67 72 6f 75 70 2e 20 20  LL in a group.  
e970: 54 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20  The second form 
e980: 28 77 69 74 68 20 6e 6f 20 61 72 67 75 6d 65 6e  (with no argumen
e990: 74 29 0a 72 65 74 75 72 6e 73 20 74 68 65 20 74  t).returns the t
e9a0: 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 72  otal number of r
e9b0: 6f 77 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70  ows in the group
e9c0: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
e9d0: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
e9e0: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
e9f0: 22 3e 67 72 6f 75 70 5f 63 6f 6e 63 61 74 28 3c  ">group_concat(<
ea00: 69 3e 58 3c 2f 69 3e 29 3c 62 72 3e 0a 67 72 6f  i>X</i>)<br>.gro
ea10: 75 70 5f 63 6f 6e 63 61 74 28 3c 69 3e 58 3c 2f  up_concat(<i>X</
ea20: 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64  i>,<i>Y</i>)</td
ea30: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
ea40: 70 22 3e 54 68 65 20 72 65 73 75 6c 74 20 69 73  p">The result is
ea50: 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 20   a string which 
ea60: 69 73 20 74 68 65 20 63 6f 6e 63 61 74 65 6e 61  is the concatena
ea70: 74 69 6f 6e 20 6f 66 0a 61 6c 6c 20 6e 6f 6e 2d  tion of.all non-
ea80: 4e 55 4c 4c 20 76 61 6c 75 65 73 20 6f 66 20 3c  NULL values of <
ea90: 69 3e 58 3c 2f 69 3e 2e 20 20 49 66 20 70 61 72  i>X</i>.  If par
eaa0: 61 6d 65 74 65 72 20 3c 69 3e 59 3c 2f 69 3e 20  ameter <i>Y</i> 
eab0: 69 73 20 74 68 65 20 73 65 70 61 72 61 74 6f 72  is the separator
eac0: 0a 62 65 74 77 65 65 6e 20 69 6e 73 74 61 6e 63  .between instanc
ead0: 65 73 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e 20  es of <i>X</i>. 
eae0: 20 41 20 63 6f 6d 6d 61 20 28 22 2c 22 29 20 69   A comma (",") i
eaf0: 73 20 75 73 65 64 20 61 73 20 74 68 65 20 73 65  s used as the se
eb00: 70 61 72 61 74 6f 72 0a 69 66 20 3c 69 3e 59 3c  parator.if <i>Y<
eb10: 2f 69 3e 20 69 73 20 6f 6d 69 74 74 65 64 2e 3c  /i> is omitted.<
eb20: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
eb30: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
eb40: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
eb50: 6d 61 78 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74  max(<i>X</i>)</t
eb60: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
eb70: 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 6d  op">Return the m
eb80: 61 78 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66 20  aximum value of 
eb90: 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68  all values in th
eba0: 65 20 67 72 6f 75 70 2e 0a 54 68 65 20 75 73 75  e group..The usu
ebb0: 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 20 69 73  al sort order is
ebc0: 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69   used to determi
ebd0: 6e 65 20 74 68 65 20 6d 61 78 69 6d 75 6d 2e 3c  ne the maximum.<
ebe0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
ebf0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
ec00: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
ec10: 6d 69 6e 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74  min(<i>X</i>)</t
ec20: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
ec30: 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 6d  op">Return the m
ec40: 69 6e 69 6d 75 6d 20 6e 6f 6e 2d 4e 55 4c 4c 20  inimum non-NULL 
ec50: 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c  value of all val
ec60: 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70  ues in the group
ec70: 2e 0a 54 68 65 20 75 73 75 61 6c 20 73 6f 72 74  ..The usual sort
ec80: 20 6f 72 64 65 72 20 69 73 20 75 73 65 64 20 74   order is used t
ec90: 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  o determine the 
eca0: 6d 69 6e 69 6d 75 6d 2e 20 20 4e 55 4c 4c 20 69  minimum.  NULL i
ecb0: 73 20 6f 6e 6c 79 20 72 65 74 75 72 6e 65 64 0a  s only returned.
ecc0: 69 66 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e  if all values in
ecd0: 20 74 68 65 20 67 72 6f 75 70 20 61 72 65 20 4e   the group are N
ece0: 55 4c 4c 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ULL.</td>.</tr>.
ecf0: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
ed00: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
ed10: 67 68 74 22 3e 73 75 6d 28 3c 69 3e 58 3c 2f 69  ght">sum(<i>X</i
ed20: 3e 29 3c 62 72 3e 74 6f 74 61 6c 28 3c 69 3e 58  >)<br>total(<i>X
ed30: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
ed40: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
ed50: 72 6e 20 74 68 65 20 6e 75 6d 65 72 69 63 20 73  rn the numeric s
ed60: 75 6d 20 6f 66 20 61 6c 6c 20 6e 6f 6e 2d 4e 55  um of all non-NU
ed70: 4c 4c 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65  LL values in the
ed80: 20 67 72 6f 75 70 2e 0a 20 20 20 49 66 20 74 68   group..   If th
ed90: 65 72 65 20 61 72 65 20 6e 6f 20 6e 6f 6e 2d 4e  ere are no non-N
eda0: 55 4c 4c 20 69 6e 70 75 74 20 72 6f 77 73 20 74  ULL input rows t
edb0: 68 65 6e 20 73 75 6d 28 29 20 72 65 74 75 72 6e  hen sum() return
edc0: 73 0a 20 20 20 4e 55 4c 4c 20 62 75 74 20 74 6f  s.   NULL but to
edd0: 74 61 6c 28 29 20 72 65 74 75 72 6e 73 20 30 2e  tal() returns 0.
ede0: 30 2e 0a 20 20 20 4e 55 4c 4c 20 69 73 20 6e 6f  0..   NULL is no
edf0: 74 20 6e 6f 72 6d 61 6c 6c 79 20 61 20 68 65 6c  t normally a hel
ee00: 70 66 75 6c 20 72 65 73 75 6c 74 20 66 6f 72 20  pful result for 
ee10: 74 68 65 20 73 75 6d 20 6f 66 20 6e 6f 20 72 6f  the sum of no ro
ee20: 77 73 0a 20 20 20 62 75 74 20 74 68 65 20 53 51  ws.   but the SQ
ee30: 4c 20 73 74 61 6e 64 61 72 64 20 72 65 71 75 69  L standard requi
ee40: 72 65 73 20 69 74 20 61 6e 64 20 6d 6f 73 74 20  res it and most 
ee50: 6f 74 68 65 72 0a 20 20 20 53 51 4c 20 64 61 74  other.   SQL dat
ee60: 61 62 61 73 65 20 65 6e 67 69 6e 65 73 20 69 6d  abase engines im
ee70: 70 6c 65 6d 65 6e 74 20 73 75 6d 28 29 20 74 68  plement sum() th
ee80: 61 74 20 77 61 79 20 73 6f 20 53 51 4c 69 74 65  at way so SQLite
ee90: 20 64 6f 65 73 20 69 74 20 69 6e 20 74 68 65 0a   does it in the.
eea0: 20 20 20 73 61 6d 65 20 77 61 79 20 69 6e 20 6f     same way in o
eeb0: 72 64 65 72 20 74 6f 20 62 65 20 63 6f 6d 70 61  rder to be compa
eec0: 74 69 62 6c 65 2e 20 20 20 54 68 65 20 6e 6f 6e  tible.   The non
eed0: 2d 73 74 61 6e 64 61 72 64 20 74 6f 74 61 6c 28  -standard total(
eee0: 29 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 69 73  ) function.   is
eef0: 20 70 72 6f 76 69 64 65 64 20 61 73 20 61 20 63   provided as a c
ef00: 6f 6e 76 65 6e 69 65 6e 74 20 77 61 79 20 74 6f  onvenient way to
ef10: 20 77 6f 72 6b 20 61 72 6f 75 6e 64 20 74 68 69   work around thi
ef20: 73 20 64 65 73 69 67 6e 20 70 72 6f 62 6c 65 6d  s design problem
ef30: 0a 20 20 20 69 6e 20 74 68 65 20 53 51 4c 20 6c  .   in the SQL l
ef40: 61 6e 67 75 61 67 65 2e 3c 2f 70 3e 0a 0a 20 20  anguage.</p>..  
ef50: 20 3c 70 3e 54 68 65 20 72 65 73 75 6c 74 20 6f   <p>The result o
ef60: 66 20 74 6f 74 61 6c 28 29 20 69 73 20 61 6c 77  f total() is alw
ef70: 61 79 73 20 61 20 66 6c 6f 61 74 69 6e 67 20 70  ays a floating p
ef80: 6f 69 6e 74 20 76 61 6c 75 65 2e 0a 20 20 20 54  oint value..   T
ef90: 68 65 20 72 65 73 75 6c 74 20 6f 66 20 73 75 6d  he result of sum
efa0: 28 29 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  () is an integer
efb0: 20 76 61 6c 75 65 20 69 66 20 61 6c 6c 20 6e 6f   value if all no
efc0: 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74 73 20 61 72  n-NULL inputs ar
efd0: 65 20 69 6e 74 65 67 65 72 73 2e 0a 20 20 20 49  e integers..   I
efe0: 66 20 61 6e 79 20 69 6e 70 75 74 20 74 6f 20 73  f any input to s
eff0: 75 6d 28 29 20 69 73 20 6e 65 69 74 68 65 72 20  um() is neither 
f000: 61 6e 20 69 6e 74 65 67 65 72 20 6f 72 20 61 20  an integer or a 
f010: 4e 55 4c 4c 0a 20 20 20 74 68 65 6e 20 73 75 6d  NULL.   then sum
f020: 28 29 20 72 65 74 75 72 6e 73 20 61 20 66 6c 6f  () returns a flo
f030: 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75  ating point valu
f040: 65 0a 20 20 20 77 68 69 63 68 20 6d 69 67 68 74  e.   which might
f050: 20 62 65 20 61 6e 20 61 70 70 72 6f 78 69 6d 61   be an approxima
f060: 74 69 6f 6e 20 74 6f 20 74 68 65 20 74 72 75 65  tion to the true
f070: 20 73 75 6d 2e 3c 2f 70 3e 0a 0a 20 20 20 3c 70   sum.</p>..   <p
f080: 3e 53 75 6d 28 29 20 77 69 6c 6c 20 74 68 72 6f  >Sum() will thro
f090: 77 20 61 6e 20 22 69 6e 74 65 67 65 72 20 6f 76  w an "integer ov
f0a0: 65 72 66 6c 6f 77 22 20 65 78 63 65 70 74 69 6f  erflow" exceptio
f0b0: 6e 20 69 66 20 61 6c 6c 20 69 6e 70 75 74 73 0a  n if all inputs.
f0c0: 20 20 20 61 72 65 20 69 6e 74 65 67 65 72 73 20     are integers 
f0d0: 6f 72 20 4e 55 4c 4c 0a 20 20 20 61 6e 64 20 61  or NULL.   and a
f0e0: 6e 20 69 6e 74 65 67 65 72 20 6f 76 65 72 66 6c  n integer overfl
f0f0: 6f 77 20 6f 63 63 75 72 73 20 61 74 20 61 6e 79  ow occurs at any
f100: 20 70 6f 69 6e 74 20 64 75 72 69 6e 67 20 74 68   point during th
f110: 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 2e 0a 20  e computation.. 
f120: 20 20 54 6f 74 61 6c 28 29 20 6e 65 76 65 72 20    Total() never 
f130: 74 68 72 6f 77 73 20 61 6e 20 65 78 63 65 70 74  throws an except
f140: 69 6f 6e 2e 3c 2f 70 3e 0a 3c 2f 74 72 3e 0a 3c  ion.</p>.</tr>.<
f150: 2f 74 61 62 6c 65 3e 0a 0a 3c 74 63 6c 3e 0a 23  /table>..<tcl>.#
f160: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f170: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f190: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f1a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
f1b0: 63 74 69 6f 6e 20 49 4e 53 45 52 54 20 69 6e 73  ction INSERT ins
f1c0: 65 72 74 20 7b 49 4e 53 45 52 54 20 49 4e 53 45  ert {INSERT INSE
f1d0: 52 54 73 7d 0a 0a 53 79 6e 74 61 78 20 7b 73 71  RTs}..Syntax {sq
f1e0: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 49  l-statement} {.I
f1f0: 4e 53 45 52 54 20 5b 4f 52 20 3c 63 6f 6e 66 6c  NSERT [OR <confl
f200: 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 5d 20  ict-algorithm>] 
f210: 49 4e 54 4f 20 5b 3c 64 61 74 61 62 61 73 65 2d  INTO [<database-
f220: 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d  name> .] <table-
f230: 6e 61 6d 65 3e 20 5b 28 3c 63 6f 6c 75 6d 6e 2d  name> [(<column-
f240: 6c 69 73 74 3e 29 5d 20 56 41 4c 55 45 53 28 3c  list>)] VALUES(<
f250: 76 61 6c 75 65 2d 6c 69 73 74 3e 29 20 7c 0a 49  value-list>) |.I
f260: 4e 53 45 52 54 20 5b 4f 52 20 3c 63 6f 6e 66 6c  NSERT [OR <confl
f270: 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 5d 20  ict-algorithm>] 
f280: 49 4e 54 4f 20 5b 3c 64 61 74 61 62 61 73 65 2d  INTO [<database-
f290: 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d  name> .] <table-
f2a0: 6e 61 6d 65 3e 20 5b 28 3c 63 6f 6c 75 6d 6e 2d  name> [(<column-
f2b0: 6c 69 73 74 3e 29 5d 20 3c 73 65 6c 65 63 74 2d  list>)] <select-
f2c0: 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 3c 2f 74  statement>.}.</t
f2d0: 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 49 4e 53 45  cl>..<p>The INSE
f2e0: 52 54 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d  RT statement com
f2f0: 65 73 20 69 6e 20 74 77 6f 20 62 61 73 69 63 20  es in two basic 
f300: 66 6f 72 6d 73 2e 20 20 54 68 65 20 66 69 72 73  forms.  The firs
f310: 74 20 66 6f 72 6d 0a 28 77 69 74 68 20 74 68 65  t form.(with the
f320: 20 22 56 41 4c 55 45 53 22 20 6b 65 79 77 6f 72   "VALUES" keywor
f330: 64 29 20 63 72 65 61 74 65 73 20 61 20 73 69 6e  d) creates a sin
f340: 67 6c 65 20 6e 65 77 20 72 6f 77 20 69 6e 20 61  gle new row in a
f350: 6e 20 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65  n existing table
f360: 2e 0a 49 66 20 6e 6f 20 63 6f 6c 75 6d 6e 2d 6c  ..If no column-l
f370: 69 73 74 20 69 73 20 73 70 65 63 69 66 69 65 64  ist is specified
f380: 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65 72   then the number
f390: 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73 74 0a   of values must.
f3a0: 62 65 20 74 68 65 20 73 61 6d 65 20 61 73 20 74  be the same as t
f3b0: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
f3c0: 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c  umns in the tabl
f3d0: 65 2e 20 20 49 66 20 61 20 63 6f 6c 75 6d 6e 2d  e.  If a column-
f3e0: 6c 69 73 74 0a 69 73 20 73 70 65 63 69 66 69 65  list.is specifie
f3f0: 64 2c 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62  d, then the numb
f400: 65 72 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73  er of values mus
f410: 74 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62  t match the numb
f420: 65 72 20 6f 66 0a 73 70 65 63 69 66 69 65 64 20  er of.specified 
f430: 63 6f 6c 75 6d 6e 73 2e 20 20 43 6f 6c 75 6d 6e  columns.  Column
f440: 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 74  s of the table t
f450: 68 61 74 20 64 6f 20 6e 6f 74 20 61 70 70 65 61  hat do not appea
f460: 72 20 69 6e 20 74 68 65 0a 63 6f 6c 75 6d 6e 20  r in the.column 
f470: 6c 69 73 74 20 61 72 65 20 66 69 6c 6c 65 64 20  list are filled 
f480: 77 69 74 68 20 74 68 65 20 64 65 66 61 75 6c 74  with the default
f490: 20 76 61 6c 75 65 2c 20 6f 72 20 77 69 74 68 20   value, or with 
f4a0: 4e 55 4c 4c 20 69 66 20 6e 6f 0a 64 65 66 61 75  NULL if no.defau
f4b0: 6c 74 20 76 61 6c 75 65 20 69 73 20 73 70 65 63  lt value is spec
f4c0: 69 66 69 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  ified..</p>..<p>
f4d0: 54 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20  The second form 
f4e0: 6f 66 20 74 68 65 20 49 4e 53 45 52 54 20 73 74  of the INSERT st
f4f0: 61 74 65 6d 65 6e 74 20 74 61 6b 65 73 20 69 74  atement takes it
f500: 20 64 61 74 61 20 66 72 6f 6d 20 61 0a 53 45 4c   data from a.SEL
f510: 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  ECT statement.  
f520: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  The number of co
f530: 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73  lumns in the res
f540: 75 6c 74 20 6f 66 20 74 68 65 0a 53 45 4c 45 43  ult of the.SELEC
f550: 54 20 6d 75 73 74 20 65 78 61 63 74 6c 79 20 6d  T must exactly m
f560: 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20  atch the number 
f570: 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68  of columns in th
f580: 65 20 74 61 62 6c 65 20 69 66 0a 6e 6f 20 63 6f  e table if.no co
f590: 6c 75 6d 6e 20 6c 69 73 74 20 69 73 20 73 70 65  lumn list is spe
f5a0: 63 69 66 69 65 64 2c 20 6f 72 20 69 74 20 6d 75  cified, or it mu
f5b0: 73 74 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d  st match the num
f5c0: 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 0a 6e  ber of columns.n
f5d0: 61 6d 65 20 69 6e 20 74 68 65 20 63 6f 6c 75 6d  ame in the colum
f5e0: 6e 20 6c 69 73 74 2e 20 20 41 20 6e 65 77 20 65  n list.  A new e
f5f0: 6e 74 72 79 20 69 73 20 6d 61 64 65 20 69 6e 20  ntry is made in 
f600: 74 68 65 20 74 61 62 6c 65 0a 66 6f 72 20 65 76  the table.for ev
f610: 65 72 79 20 72 6f 77 20 6f 66 20 74 68 65 20 53  ery row of the S
f620: 45 4c 45 43 54 20 72 65 73 75 6c 74 2e 20 20 54  ELECT result.  T
f630: 68 65 20 53 45 4c 45 43 54 20 6d 61 79 20 62 65  he SELECT may be
f640: 20 73 69 6d 70 6c 65 0a 6f 72 20 63 6f 6d 70 6f   simple.or compo
f650: 75 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  und.</p>..<p>The
f660: 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69   optional confli
f670: 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73  ct-clause allows
f680: 20 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69   the specificati
f690: 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61  on of an alterna
f6a0: 74 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20  tive.constraint 
f6b0: 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74  conflict resolut
f6c0: 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f  ion algorithm to
f6d0: 20 75 73 65 20 64 75 72 69 6e 67 20 74 68 69 73   use during this
f6e0: 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65   one command..Se
f6f0: 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69  e the section ti
f700: 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 6c 61  tled.<a href="la
f710: 6e 67 5f 63 6f 6e 66 6c 69 63 74 2e 68 74 6d 6c  ng_conflict.html
f720: 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61  ">ON CONFLICT</a
f730: 3e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  > for additional
f740: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 46 6f   information..Fo
f750: 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  r compatibility 
f760: 77 69 74 68 20 4d 79 53 51 4c 2c 20 74 68 65 20  with MySQL, the 
f770: 70 61 72 73 65 72 20 61 6c 6c 6f 77 73 20 74 68  parser allows th
f780: 65 20 75 73 65 20 6f 66 20 74 68 65 0a 73 69 6e  e use of the.sin
f790: 67 6c 65 20 6b 65 79 77 6f 72 64 20 3c 61 20 68  gle keyword <a h
f7a0: 72 65 66 3d 22 6c 61 6e 67 5f 72 65 70 6c 61 63  ref="lang_replac
f7b0: 65 2e 68 74 6d 6c 22 3e 52 45 50 4c 41 43 45 3c  e.html">REPLACE<
f7c0: 2f 61 3e 20 61 73 20 61 6e 20 0a 61 6c 69 61 73  /a> as an .alias
f7d0: 20 66 6f 72 20 22 49 4e 53 45 52 54 20 4f 52 20   for "INSERT OR 
f7e0: 52 45 50 4c 41 43 45 22 2e 0a 3c 2f 70 3e 0a 0a  REPLACE"..</p>..
f7f0: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
f800: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f810: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f820: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f830: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f840: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 4f 4e  ####.Section {ON
f850: 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65   CONFLICT clause
f860: 7d 20 63 6f 6e 66 6c 69 63 74 20 7b 7b 63 6f 6e  } conflict {{con
f870: 66 6c 69 63 74 20 63 6c 61 75 73 65 7d 7d 0a 0a  flict clause}}..
f880: 53 79 6e 74 61 78 20 7b 63 6f 6e 66 6c 69 63 74  Syntax {conflict
f890: 2d 63 6c 61 75 73 65 7d 20 7b 0a 4f 4e 20 43 4f  -clause} {.ON CO
f8a0: 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c 69 63 74  NFLICT <conflict
f8b0: 2d 61 6c 67 6f 72 69 74 68 6d 3e 0a 7d 20 7b 63  -algorithm>.} {c
f8c0: 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68  onflict-algorith
f8d0: 6d 7d 20 7b 0a 52 4f 4c 4c 42 41 43 4b 20 7c 20  m} {.ROLLBACK | 
f8e0: 41 42 4f 52 54 20 7c 20 46 41 49 4c 20 7c 20 49  ABORT | FAIL | I
f8f0: 47 4e 4f 52 45 20 7c 20 52 45 50 4c 41 43 45 0a  GNORE | REPLACE.
f900: 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65  }.</tcl>..<p>The
f910: 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61   ON CONFLICT cla
f920: 75 73 65 20 69 73 20 6e 6f 74 20 61 20 73 65 70  use is not a sep
f930: 61 72 61 74 65 20 53 51 4c 20 63 6f 6d 6d 61 6e  arate SQL comman
f940: 64 2e 20 20 49 74 20 69 73 20 61 0a 6e 6f 6e 2d  d.  It is a.non-
f950: 73 74 61 6e 64 61 72 64 20 63 6c 61 75 73 65 20  standard clause 
f960: 74 68 61 74 20 63 61 6e 20 61 70 70 65 61 72 20  that can appear 
f970: 69 6e 20 6d 61 6e 79 20 6f 74 68 65 72 20 53 51  in many other SQ
f980: 4c 20 63 6f 6d 6d 61 6e 64 73 2e 0a 49 74 20 69  L commands..It i
f990: 73 20 67 69 76 65 6e 20 69 74 73 20 6f 77 6e 20  s given its own 
f9a0: 73 65 63 74 69 6f 6e 20 69 6e 20 74 68 69 73 20  section in this 
f9b0: 64 6f 63 75 6d 65 6e 74 20 62 65 63 61 75 73 65  document because
f9c0: 20 69 74 20 69 73 20 6e 6f 74 0a 70 61 72 74 20   it is not.part 
f9d0: 6f 66 20 73 74 61 6e 64 61 72 64 20 53 51 4c 20  of standard SQL 
f9e0: 61 6e 64 20 74 68 65 72 65 66 6f 72 65 20 6d 69  and therefore mi
f9f0: 67 68 74 20 6e 6f 74 20 62 65 20 66 61 6d 69 6c  ght not be famil
fa00: 69 61 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  iar.</p>..<p>The
fa10: 20 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20   syntax for the 
fa20: 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75  ON CONFLICT clau
fa30: 73 65 20 69 73 20 61 73 20 73 68 6f 77 6e 20 61  se is as shown a
fa40: 62 6f 76 65 20 66 6f 72 0a 74 68 65 20 43 52 45  bove for.the CRE
fa50: 41 54 45 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e  ATE TABLE comman
fa60: 64 2e 20 20 46 6f 72 20 74 68 65 20 49 4e 53 45  d.  For the INSE
fa70: 52 54 20 61 6e 64 0a 55 50 44 41 54 45 20 63 6f  RT and.UPDATE co
fa80: 6d 6d 61 6e 64 73 2c 20 74 68 65 20 6b 65 79 77  mmands, the keyw
fa90: 6f 72 64 73 20 22 4f 4e 20 43 4f 4e 46 4c 49 43  ords "ON CONFLIC
faa0: 54 22 20 61 72 65 20 72 65 70 6c 61 63 65 64 20  T" are replaced 
fab0: 62 79 20 22 4f 52 22 2c 20 74 6f 20 6d 61 6b 65  by "OR", to make
fac0: 0a 74 68 65 20 73 79 6e 74 61 78 20 73 65 65 6d  .the syntax seem
fad0: 20 6d 6f 72 65 20 6e 61 74 75 72 61 6c 2e 20 20   more natural.  
fae0: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 6e 73  For example, ins
faf0: 74 65 61 64 20 6f 66 0a 22 49 4e 53 45 52 54 20  tead of."INSERT 
fb00: 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 49 47 4e 4f  ON CONFLICT IGNO
fb10: 52 45 22 20 77 65 20 68 61 76 65 20 22 49 4e 53  RE" we have "INS
fb20: 45 52 54 20 4f 52 20 49 47 4e 4f 52 45 22 2e 0a  ERT OR IGNORE"..
fb30: 54 68 65 20 6b 65 79 77 6f 72 64 73 20 63 68 61  The keywords cha
fb40: 6e 67 65 20 62 75 74 20 74 68 65 20 6d 65 61 6e  nge but the mean
fb50: 69 6e 67 20 6f 66 20 74 68 65 20 63 6c 61 75 73  ing of the claus
fb60: 65 20 69 73 20 74 68 65 20 73 61 6d 65 0a 65 69  e is the same.ei
fb70: 74 68 65 72 20 77 61 79 2e 3c 2f 70 3e 0a 0a 3c  ther way.</p>..<
fb80: 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43  p>The ON CONFLIC
fb90: 54 20 63 6c 61 75 73 65 20 73 70 65 63 69 66 69  T clause specifi
fba0: 65 73 20 61 6e 20 61 6c 67 6f 72 69 74 68 6d 20  es an algorithm 
fbb0: 75 73 65 64 20 74 6f 20 72 65 73 6f 6c 76 65 0a  used to resolve.
fbc0: 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c  constraint confl
fbd0: 69 63 74 73 2e 20 20 54 68 65 72 65 20 61 72 65  icts.  There are
fbe0: 20 66 69 76 65 20 63 68 6f 69 63 65 73 3a 20 52   five choices: R
fbf0: 4f 4c 4c 42 41 43 4b 2c 20 41 42 4f 52 54 2c 0a  OLLBACK, ABORT,.
fc00: 46 41 49 4c 2c 20 49 47 4e 4f 52 45 2c 20 61 6e  FAIL, IGNORE, an
fc10: 64 20 52 45 50 4c 41 43 45 2e 20 54 68 65 20 64  d REPLACE. The d
fc20: 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74 68 6d  efault algorithm
fc30: 20 69 73 20 41 42 4f 52 54 2e 20 20 54 68 69 73   is ABORT.  This
fc40: 0a 69 73 20 77 68 61 74 20 74 68 65 79 20 6d 65  .is what they me
fc50: 61 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c 64  an:</p>..<dl>.<d
fc60: 74 3e 3c 62 3e 52 4f 4c 4c 42 41 43 4b 3c 2f 62  t><b>ROLLBACK</b
fc70: 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68  ></dt>.<dd><p>Wh
fc80: 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20  en a constraint 
fc90: 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
fca0: 2c 20 61 6e 20 69 6d 6d 65 64 69 61 74 65 20 52  , an immediate R
fcb0: 4f 4c 4c 42 41 43 4b 0a 6f 63 63 75 72 73 2c 20  OLLBACK.occurs, 
fcc0: 74 68 75 73 20 65 6e 64 69 6e 67 20 74 68 65 20  thus ending the 
fcd0: 63 75 72 72 65 6e 74 20 74 72 61 6e 73 61 63 74  current transact
fce0: 69 6f 6e 2c 20 61 6e 64 20 74 68 65 20 63 6f 6d  ion, and the com
fcf0: 6d 61 6e 64 20 61 62 6f 72 74 73 0a 77 69 74 68  mand aborts.with
fd00: 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65 20 6f   a return code o
fd10: 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  f SQLITE_CONSTRA
fd20: 49 4e 54 2e 20 20 49 66 20 6e 6f 20 74 72 61 6e  INT.  If no tran
fd30: 73 61 63 74 69 6f 6e 20 69 73 0a 61 63 74 69 76  saction is.activ
fd40: 65 20 28 6f 74 68 65 72 20 74 68 61 6e 20 74 68  e (other than th
fd50: 65 20 69 6d 70 6c 69 65 64 20 74 72 61 6e 73 61  e implied transa
fd60: 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63 72  ction that is cr
fd70: 65 61 74 65 64 20 6f 6e 20 65 76 65 72 79 0a 63  eated on every.c
fd80: 6f 6d 6d 61 6e 64 29 20 74 68 65 6e 20 74 68 69  ommand) then thi
fd90: 73 20 61 6c 67 6f 72 69 74 68 6d 20 77 6f 72 6b  s algorithm work
fda0: 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 41 42  s the same as AB
fdb0: 4f 52 54 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c  ORT.</p></dd>..<
fdc0: 64 74 3e 3c 62 3e 41 42 4f 52 54 3c 2f 62 3e 3c  dt><b>ABORT</b><
fdd0: 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e  /dt>.<dd><p>When
fde0: 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
fdf0: 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
fe00: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 62 61 63 6b  the command back
fe10: 73 20 6f 75 74 0a 61 6e 79 20 70 72 69 6f 72 20  s out.any prior 
fe20: 63 68 61 6e 67 65 73 20 69 74 20 6d 69 67 68 74  changes it might
fe30: 20 68 61 76 65 20 6d 61 64 65 20 61 6e 64 20 61   have made and a
fe40: 62 6f 72 74 73 20 77 69 74 68 20 61 20 72 65 74  borts with a ret
fe50: 75 72 6e 20 63 6f 64 65 0a 6f 66 20 53 51 4c 49  urn code.of SQLI
fe60: 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20  TE_CONSTRAINT.  
fe70: 42 75 74 20 6e 6f 20 52 4f 4c 4c 42 41 43 4b 20  But no ROLLBACK 
fe80: 69 73 20 65 78 65 63 75 74 65 64 20 73 6f 20 63  is executed so c
fe90: 68 61 6e 67 65 73 0a 66 72 6f 6d 20 70 72 69 6f  hanges.from prio
fea0: 72 20 63 6f 6d 6d 61 6e 64 73 20 77 69 74 68 69  r commands withi
feb0: 6e 20 74 68 65 20 73 61 6d 65 20 74 72 61 6e 73  n the same trans
fec0: 61 63 74 69 6f 6e 0a 61 72 65 20 70 72 65 73 65  action.are prese
fed0: 72 76 65 64 2e 20 20 54 68 69 73 20 69 73 20 74  rved.  This is t
fee0: 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76  he default behav
fef0: 69 6f 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c  ior.</p></dd>..<
ff00: 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f 62 3e 3c 2f  dt><b>FAIL</b></
ff10: 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20  dt>.<dd><p>When 
ff20: 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  a constraint vio
ff30: 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74  lation occurs, t
ff40: 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72 74  he command abort
ff50: 73 20 77 69 74 68 20 61 0a 72 65 74 75 72 6e 20  s with a.return 
ff60: 63 6f 64 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  code SQLITE_CONS
ff70: 54 52 41 49 4e 54 2e 20 20 42 75 74 20 61 6e 79  TRAINT.  But any
ff80: 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20   changes to the 
ff90: 64 61 74 61 62 61 73 65 20 74 68 61 74 0a 74 68  database that.th
ffa0: 65 20 63 6f 6d 6d 61 6e 64 20 6d 61 64 65 20 70  e command made p
ffb0: 72 69 6f 72 20 74 6f 20 65 6e 63 6f 75 6e 74 65  rior to encounte
ffc0: 72 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72 61  ring the constra
ffd0: 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 61 72  int violation.ar
ffe0: 65 20 70 72 65 73 65 72 76 65 64 20 61 6e 64 20  e preserved and 
fff0: 61 72 65 20 6e 6f 74 20 62 61 63 6b 65 64 20 6f  are not backed o
10000 75 74 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  ut.  For example
10010 2c 20 69 66 20 61 6e 20 55 50 44 41 54 45 0a 73  , if an UPDATE.s
10020 74 61 74 65 6d 65 6e 74 20 65 6e 63 6f 75 6e 74  tatement encount
10030 65 72 65 64 20 61 20 63 6f 6e 73 74 72 61 69 6e  ered a constrain
10040 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 6e 20 74  t violation on t
10050 68 65 20 31 30 30 74 68 20 72 6f 77 20 74 68 61  he 100th row tha
10060 74 0a 69 74 20 61 74 74 65 6d 70 74 73 20 74 6f  t.it attempts to
10070 20 75 70 64 61 74 65 2c 20 74 68 65 6e 20 74 68   update, then th
10080 65 20 66 69 72 73 74 20 39 39 20 72 6f 77 20 63  e first 99 row c
10090 68 61 6e 67 65 73 20 61 72 65 20 70 72 65 73 65  hanges are prese
100a0 72 76 65 64 0a 62 75 74 20 63 68 61 6e 67 65 73  rved.but changes
100b0 20 74 6f 20 72 6f 77 73 20 31 30 30 20 61 6e 64   to rows 100 and
100c0 20 62 65 79 6f 6e 64 20 6e 65 76 65 72 20 6f 63   beyond never oc
100d0 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c  cur.</p></dd>..<
100e0 64 74 3e 3c 62 3e 49 47 4e 4f 52 45 3c 2f 62 3e  dt><b>IGNORE</b>
100f0 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65  </dt>.<dd><p>Whe
10100 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  n a constraint v
10110 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
10120 20 74 68 65 20 6f 6e 65 20 72 6f 77 20 74 68 61   the one row tha
10130 74 20 63 6f 6e 74 61 69 6e 73 0a 74 68 65 20 63  t contains.the c
10140 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
10150 69 6f 6e 20 69 73 20 6e 6f 74 20 69 6e 73 65 72  ion is not inser
10160 74 65 64 20 6f 72 20 63 68 61 6e 67 65 64 2e 20  ted or changed. 
10170 20 42 75 74 20 74 68 65 20 63 6f 6d 6d 61 6e 64   But the command
10180 0a 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63 75  .continues execu
10190 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20 20  ting normally.  
101a0 4f 74 68 65 72 20 72 6f 77 73 20 62 65 66 6f 72  Other rows befor
101b0 65 20 61 6e 64 20 61 66 74 65 72 20 74 68 65 20  e and after the 
101c0 72 6f 77 20 74 68 61 74 0a 63 6f 6e 74 61 69 6e  row that.contain
101d0 65 64 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e  ed the constrain
101e0 74 20 76 69 6f 6c 61 74 69 6f 6e 20 63 6f 6e 74  t violation cont
101f0 69 6e 75 65 20 74 6f 20 62 65 20 69 6e 73 65 72  inue to be inser
10200 74 65 64 20 6f 72 20 75 70 64 61 74 65 64 0a 6e  ted or updated.n
10210 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65 72 72  ormally.  No err
10220 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e 3c  or is returned.<
10230 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62  /p></dd>..<dt><b
10240 3e 52 45 50 4c 41 43 45 3c 2f 62 3e 3c 2f 64 74  >REPLACE</b></dt
10250 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20  >.<dd><p>When a 
10260 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e  UNIQUE constrain
10270 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75  t violation occu
10280 72 73 2c 20 74 68 65 20 70 72 65 2d 65 78 69 73  rs, the pre-exis
10290 74 69 6e 67 20 72 6f 77 73 0a 74 68 61 74 20 61  ting rows.that a
102a0 72 65 20 63 61 75 73 69 6e 67 20 74 68 65 20 63  re causing the c
102b0 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
102c0 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64 20  ion are removed 
102d0 70 72 69 6f 72 20 74 6f 20 69 6e 73 65 72 74 69  prior to inserti
102e0 6e 67 0a 6f 72 20 75 70 64 61 74 69 6e 67 20 74  ng.or updating t
102f0 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 2e 20  he current row. 
10300 20 54 68 75 73 20 74 68 65 20 69 6e 73 65 72 74   Thus the insert
10310 20 6f 72 20 75 70 64 61 74 65 20 61 6c 77 61 79   or update alway
10320 73 20 6f 63 63 75 72 73 2e 0a 54 68 65 20 63 6f  s occurs..The co
10330 6d 6d 61 6e 64 20 63 6f 6e 74 69 6e 75 65 73 20  mmand continues 
10340 65 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61 6c  executing normal
10350 6c 79 2e 20 20 4e 6f 20 65 72 72 6f 72 20 69 73  ly.  No error is
10360 20 72 65 74 75 72 6e 65 64 2e 0a 49 66 20 61 20   returned..If a 
10370 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74 72 61  NOT NULL constra
10380 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63  int violation oc
10390 63 75 72 73 2c 20 74 68 65 20 4e 55 4c 4c 20 76  curs, the NULL v
103a0 61 6c 75 65 20 69 73 20 72 65 70 6c 61 63 65 64  alue is replaced
103b0 0a 62 79 20 74 68 65 20 64 65 66 61 75 6c 74 20  .by the default 
103c0 76 61 6c 75 65 20 66 6f 72 20 74 68 61 74 20 63  value for that c
103d0 6f 6c 75 6d 6e 2e 20 20 49 66 20 74 68 65 20 63  olumn.  If the c
103e0 6f 6c 75 6d 6e 20 68 61 73 20 6e 6f 20 64 65 66  olumn has no def
103f0 61 75 6c 74 0a 76 61 6c 75 65 2c 20 74 68 65 6e  ault.value, then
10400 20 74 68 65 20 41 42 4f 52 54 20 61 6c 67 6f 72   the ABORT algor
10410 69 74 68 6d 20 69 73 20 75 73 65 64 2e 20 20 49  ithm is used.  I
10420 66 20 61 20 43 48 45 43 4b 20 63 6f 6e 73 74 72  f a CHECK constr
10430 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 6f  aint violation.o
10440 63 63 75 72 73 20 74 68 65 6e 20 74 68 65 20 49  ccurs then the I
10450 47 4e 4f 52 45 20 61 6c 67 6f 72 69 74 68 6d 20  GNORE algorithm 
10460 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  is used.</p>..<p
10470 3e 57 68 65 6e 20 74 68 69 73 20 63 6f 6e 66 6c  >When this confl
10480 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 73  ict resolution s
10490 74 72 61 74 65 67 79 20 64 65 6c 65 74 65 73 20  trategy deletes 
104a0 72 6f 77 73 20 69 6e 20 6f 72 64 65 72 20 74 6f  rows in order to
104b0 0a 73 61 74 69 73 66 79 20 61 20 63 6f 6e 73 74  .satisfy a const
104c0 72 61 69 6e 74 2c 20 69 74 20 64 6f 65 73 20 6e  raint, it does n
104d0 6f 74 20 69 6e 76 6f 6b 65 20 64 65 6c 65 74 65  ot invoke delete
104e0 20 74 72 69 67 67 65 72 73 20 6f 6e 20 74 68 6f   triggers on tho
104f0 73 65 0a 72 6f 77 73 2e 20 20 54 68 69 73 20 62  se.rows.  This b
10500 65 68 61 76 69 6f 72 20 6d 69 67 68 74 20 63 68  ehavior might ch
10510 61 6e 67 65 20 69 6e 20 61 20 66 75 74 75 72 65  ange in a future
10520 20 72 65 6c 65 61 73 65 2e 3c 2f 70 3e 0a 3c 2f   release.</p>.</
10530 64 6c 3e 0a 0a 3c 70 3e 54 68 65 20 61 6c 67 6f  dl>..<p>The algo
10540 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
10550 69 6e 20 74 68 65 20 4f 52 20 63 6c 61 75 73 65  in the OR clause
10560 20 6f 66 20 61 20 49 4e 53 45 52 54 20 6f 72 20   of a INSERT or 
10570 55 50 44 41 54 45 0a 6f 76 65 72 72 69 64 65 73  UPDATE.overrides
10580 20 61 6e 79 20 61 6c 67 6f 72 69 74 68 6d 20 73   any algorithm s
10590 70 65 63 69 66 69 65 64 20 69 6e 20 61 20 43 52  pecified in a CR
105a0 45 41 54 45 20 54 41 42 4c 45 2e 0a 49 66 20 6e  EATE TABLE..If n
105b0 6f 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 73  o algorithm is s
105c0 70 65 63 69 66 69 65 64 20 61 6e 79 77 68 65 72  pecified anywher
105d0 65 2c 20 74 68 65 20 41 42 4f 52 54 20 61 6c 67  e, the ABORT alg
105e0 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e 3c  orithm is used.<
105f0 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  /p>..<tcl>.#####
10600 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10610 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10620 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10630 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10640 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
10650 6e 20 52 45 49 4e 44 45 58 20 72 65 69 6e 64 65  n REINDEX reinde
10660 78 20 52 45 49 4e 44 45 58 0a 0a 53 79 6e 74 61  x REINDEX..Synta
10670 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
10680 7d 20 7b 0a 20 20 52 45 49 4e 44 45 58 20 3c 63  } {.  REINDEX <c
10690 6f 6c 6c 61 74 69 6f 6e 20 6e 61 6d 65 3e 0a 7d  ollation name>.}
106a0 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
106b0 74 65 6d 65 6e 74 7d 20 7b 0a 20 20 52 45 49 4e  tement} {.  REIN
106c0 44 45 58 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e  DEX [<database-n
106d0 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2f 69  ame> .] <table/i
106e0 6e 64 65 78 2d 6e 61 6d 65 3e 0a 7d 0a 3c 2f 74  ndex-name>.}.</t
106f0 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 52 45 49 4e  cl>..<p>The REIN
10700 44 45 58 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75  DEX command is u
10710 73 65 64 20 74 6f 20 64 65 6c 65 74 65 20 61 6e  sed to delete an
10720 64 20 72 65 63 72 65 61 74 65 20 69 6e 64 69 63  d recreate indic
10730 65 73 20 66 72 6f 6d 20 73 63 72 61 74 63 68 2e  es from scratch.
10740 0a 54 68 69 73 20 69 73 20 75 73 65 66 75 6c 20  .This is useful 
10750 77 68 65 6e 20 74 68 65 20 64 65 66 69 6e 69 74  when the definit
10760 69 6f 6e 20 6f 66 20 61 20 63 6f 6c 6c 61 74 69  ion of a collati
10770 6f 6e 20 73 65 71 75 65 6e 63 65 20 68 61 73 20  on sequence has 
10780 63 68 61 6e 67 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c  changed..</p>..<
10790 70 3e 49 6e 20 74 68 65 20 66 69 72 73 74 20 66  p>In the first f
107a0 6f 72 6d 2c 20 61 6c 6c 20 69 6e 64 69 63 65 73  orm, all indices
107b0 20 69 6e 20 61 6c 6c 20 61 74 74 61 63 68 65 64   in all attached
107c0 20 64 61 74 61 62 61 73 65 73 20 74 68 61 74 20   databases that 
107d0 75 73 65 20 74 68 65 0a 6e 61 6d 65 64 20 63 6f  use the.named co
107e0 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65  llation sequence
107f0 20 61 72 65 20 72 65 63 72 65 61 74 65 64 2e 20   are recreated. 
10800 49 6e 20 74 68 65 20 73 65 63 6f 6e 64 20 66 6f  In the second fo
10810 72 6d 2c 20 69 66 20 0a 3c 69 3e 26 23 39 31 3b  rm, if .<i>&#91;
10820 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e 26 23  database-name.&#
10830 39 33 3b 74 61 62 6c 65 2f 69 6e 64 65 78 2d 6e  93;table/index-n
10840 61 6d 65 3c 2f 69 3e 20 69 64 65 6e 74 69 66 69  ame</i> identifi
10850 65 73 20 61 20 74 61 62 6c 65 2c 0a 74 68 65 6e  es a table,.then
10860 20 61 6c 6c 20 69 6e 64 69 63 65 73 0a 61 73 73   all indices.ass
10870 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
10880 20 74 61 62 6c 65 20 61 72 65 20 72 65 62 75 69   table are rebui
10890 6c 74 2e 20 49 66 20 61 6e 20 69 6e 64 65 78 20  lt. If an index 
108a0 69 73 20 69 64 65 6e 74 69 66 69 65 64 2c 20 74  is identified, t
108b0 68 65 6e 20 6f 6e 6c 79 0a 74 68 69 73 20 73 70  hen only.this sp
108c0 65 63 69 66 69 63 20 69 6e 64 65 78 20 69 73 20  ecific index is 
108d0 64 65 6c 65 74 65 64 20 61 6e 64 20 72 65 63 72  deleted and recr
108e0 65 61 74 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  eated..</p>..<p>
108f0 49 66 20 6e 6f 20 3c 69 3e 64 61 74 61 62 61 73  If no <i>databas
10900 65 2d 6e 61 6d 65 3c 2f 69 3e 20 69 73 20 73 70  e-name</i> is sp
10910 65 63 69 66 69 65 64 20 61 6e 64 20 74 68 65 72  ecified and ther
10920 65 20 65 78 69 73 74 73 20 62 6f 74 68 20 61 20  e exists both a 
10930 74 61 62 6c 65 20 6f 72 0a 69 6e 64 65 78 20 61  table or.index a
10940 6e 64 20 61 20 63 6f 6c 6c 61 74 69 6f 6e 20 73  nd a collation s
10950 65 71 75 65 6e 63 65 20 6f 66 20 74 68 65 20 73  equence of the s
10960 70 65 63 69 66 69 65 64 20 6e 61 6d 65 2c 20 74  pecified name, t
10970 68 65 6e 20 69 6e 64 69 63 65 73 20 61 73 73 6f  hen indices asso
10980 63 69 61 74 65 64 0a 77 69 74 68 20 74 68 65 20  ciated.with the 
10990 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e  collation sequen
109a0 63 65 20 6f 6e 6c 79 20 61 72 65 20 72 65 63 6f  ce only are reco
109b0 6e 73 74 72 75 63 74 65 64 2e 20 54 68 69 73 20  nstructed. This 
109c0 61 6d 62 69 67 75 69 74 79 20 6d 61 79 20 62 65  ambiguity may be
109d0 0a 64 69 73 70 65 6c 6c 65 64 20 62 79 20 61 6c  .dispelled by al
109e0 77 61 79 73 20 73 70 65 63 69 66 79 69 6e 67 20  ways specifying 
109f0 61 20 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61  a <i>database-na
10a00 6d 65 3c 2f 69 3e 20 77 68 65 6e 20 72 65 69 6e  me</i> when rein
10a10 64 65 78 69 6e 67 20 61 0a 73 70 65 63 69 66 69  dexing a.specifi
10a20 63 20 74 61 62 6c 65 20 6f 72 20 69 6e 64 65 78  c table or index
10a30 2e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23  ...<tcl>.#######
10a40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10a50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10a60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10a70 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10a80 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
10a90 20 52 45 50 4c 41 43 45 20 72 65 70 6c 61 63 65   REPLACE replace
10aa0 20 52 45 50 4c 41 43 45 0a 0a 53 79 6e 74 61 78   REPLACE..Syntax
10ab0 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
10ac0 20 7b 0a 52 45 50 4c 41 43 45 20 49 4e 54 4f 20   {.REPLACE INTO 
10ad0 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e  [<database-name>
10ae0 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e   .] <table-name>
10af0 20 5b 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74   [( <column-list
10b00 3e 20 29 5d 20 56 41 4c 55 45 53 20 28 20 3c 76  > )] VALUES ( <v
10b10 61 6c 75 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 52  alue-list> ) |.R
10b20 45 50 4c 41 43 45 20 49 4e 54 4f 20 5b 3c 64 61  EPLACE INTO [<da
10b30 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20  tabase-name> .] 
10b40 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20  <table-name> [( 
10b50 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d  <column-list> )]
10b60 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65   <select-stateme
10b70 6e 74 3e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  nt>.}.</tcl>..<p
10b80 3e 54 68 65 20 52 45 50 4c 41 43 45 20 63 6f 6d  >The REPLACE com
10b90 6d 61 6e 64 20 69 73 20 61 6e 20 61 6c 69 61 73  mand is an alias
10ba0 20 66 6f 72 20 74 68 65 20 22 49 4e 53 45 52 54   for the "INSERT
10bb0 20 4f 52 20 52 45 50 4c 41 43 45 22 20 76 61 72   OR REPLACE" var
10bc0 69 61 6e 74 0a 6f 66 20 74 68 65 20 3c 61 20 68  iant.of the <a h
10bd0 72 65 66 3d 22 6c 61 6e 67 5f 69 6e 73 65 72 74  ref="lang_insert
10be0 2e 68 74 6d 6c 22 3e 49 4e 53 45 52 54 3c 2f 61  .html">INSERT</a
10bf0 3e 20 63 6f 6d 6d 61 6e 64 2e 20 20 0a 54 68 69  > command.  .Thi
10c00 73 20 61 6c 69 61 73 20 69 73 20 70 72 6f 76 69  s alias is provi
10c10 64 65 64 20 66 6f 72 0a 63 6f 6d 70 61 74 69 62  ded for.compatib
10c20 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51 4c  ility with MySQL
10c30 2e 20 20 53 65 65 20 74 68 65 20 0a 3c 61 20 68  .  See the .<a h
10c40 72 65 66 3d 22 6c 61 6e 67 5f 69 6e 73 65 72 74  ref="lang_insert
10c50 2e 68 74 6d 6c 22 3e 49 4e 53 45 52 54 3c 2f 61  .html">INSERT</a
10c60 3e 20 63 6f 6d 6d 61 6e 64 20 64 6f 63 75 6d 65  > command docume
10c70 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64 64 69  ntation for addi
10c80 74 69 6f 6e 61 6c 0a 69 6e 66 6f 72 6d 61 74 69  tional.informati
10c90 6f 6e 2e 3c 2f 70 3e 20 20 0a 0a 3c 74 63 6c 3e  on.</p>  ..<tcl>
10ca0 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
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 0a 53 65 63 74 69 6f 6e 20 53 45 4c 45 43 54 20  .Section SELECT 
10d00 73 65 6c 65 63 74 20 7b 53 45 4c 45 43 54 20 71  select {SELECT q
10d10 75 65 72 79 7d 0a 0a 53 79 6e 74 61 78 20 7b 73  uery}..Syntax {s
10d20 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
10d30 53 45 4c 45 43 54 20 5b 41 4c 4c 20 7c 20 44 49  SELECT [ALL | DI
10d40 53 54 49 4e 43 54 5d 20 3c 72 65 73 75 6c 74 3e  STINCT] <result>
10d50 20 5b 46 52 4f 4d 20 3c 74 61 62 6c 65 2d 6c 69   [FROM <table-li
10d60 73 74 3e 5d 0a 5b 57 48 45 52 45 20 3c 65 78 70  st>].[WHERE <exp
10d70 72 3e 5d 0a 5b 47 52 4f 55 50 20 42 59 20 3c 65  r>].[GROUP BY <e
10d80 78 70 72 2d 6c 69 73 74 3e 5d 0a 5b 48 41 56 49  xpr-list>].[HAVI
10d90 4e 47 20 3c 65 78 70 72 3e 5d 0a 5b 3c 63 6f 6d  NG <expr>].[<com
10da0 70 6f 75 6e 64 2d 6f 70 3e 20 3c 73 65 6c 65 63  pound-op> <selec
10db0 74 3e 5d 2a 0a 5b 4f 52 44 45 52 20 42 59 20 3c  t>]*.[ORDER BY <
10dc0 73 6f 72 74 2d 65 78 70 72 2d 6c 69 73 74 3e 5d  sort-expr-list>]
10dd0 0a 5b 4c 49 4d 49 54 20 3c 69 6e 74 65 67 65 72  .[LIMIT <integer
10de0 3e 20 5b 4c 50 20 4f 46 46 53 45 54 20 7c 20 2c  > [LP OFFSET | ,
10df0 20 52 50 20 3c 69 6e 74 65 67 65 72 3e 5d 5d 0a   RP <integer>]].
10e00 7d 20 7b 72 65 73 75 6c 74 7d 20 7b 0a 3c 72 65  } {result} {.<re
10e10 73 75 6c 74 2d 63 6f 6c 75 6d 6e 3e 20 5b 2c 20  sult-column> [, 
10e20 3c 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 3e 5d  <result-column>]
10e30 2a 0a 7d 20 7b 72 65 73 75 6c 74 2d 63 6f 6c 75  *.} {result-colu
10e40 6d 6e 7d 20 7b 0a 53 54 41 52 20 7c 20 3c 74 61  mn} {.STAR | <ta
10e50 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20 53 54 41 52  ble-name> . STAR
10e60 20 7c 20 3c 65 78 70 72 3e 20 5b 20 5b 41 53 5d   | <expr> [ [AS]
10e70 20 3c 73 74 72 69 6e 67 3e 20 5d 0a 7d 20 7b 74   <string> ].} {t
10e80 61 62 6c 65 2d 6c 69 73 74 7d 20 7b 0a 3c 74 61  able-list} {.<ta
10e90 62 6c 65 3e 20 5b 3c 6a 6f 69 6e 2d 6f 70 3e 20  ble> [<join-op> 
10ea0 3c 74 61 62 6c 65 3e 20 3c 6a 6f 69 6e 2d 61 72  <table> <join-ar
10eb0 67 73 3e 5d 2a 0a 7d 20 7b 74 61 62 6c 65 7d 20  gs>]*.} {table} 
10ec0 7b 0a 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b  {.<table-name> [
10ed0 41 53 20 3c 61 6c 69 61 73 3e 5d 20 7c 0a 28 20  AS <alias>] |.( 
10ee0 3c 73 65 6c 65 63 74 3e 20 29 20 5b 41 53 20 3c  <select> ) [AS <
10ef0 61 6c 69 61 73 3e 5d 0a 7d 20 7b 6a 6f 69 6e 2d  alias>].} {join-
10f00 6f 70 7d 20 7b 0a 2c 20 7c 20 5b 4e 41 54 55 52  op} {., | [NATUR
10f10 41 4c 5d 20 5b 4c 45 46 54 20 7c 20 52 49 47 48  AL] [LEFT | RIGH
10f20 54 20 7c 20 46 55 4c 4c 5d 20 5b 4f 55 54 45 52  T | FULL] [OUTER
10f30 20 7c 20 49 4e 4e 45 52 20 7c 20 43 52 4f 53 53   | INNER | CROSS
10f40 5d 20 4a 4f 49 4e 0a 7d 20 7b 6a 6f 69 6e 2d 61  ] JOIN.} {join-a
10f50 72 67 73 7d 20 7b 0a 5b 4f 4e 20 3c 65 78 70 72  rgs} {.[ON <expr
10f60 3e 5d 20 5b 55 53 49 4e 47 20 28 20 3c 69 64 2d  >] [USING ( <id-
10f70 6c 69 73 74 3e 20 29 5d 0a 7d 20 7b 73 6f 72 74  list> )].} {sort
10f80 2d 65 78 70 72 2d 6c 69 73 74 7d 20 7b 0a 3c 65  -expr-list} {.<e
10f90 78 70 72 3e 20 5b 3c 73 6f 72 74 2d 6f 72 64 65  xpr> [<sort-orde
10fa0 72 3e 5d 20 5b 2c 20 3c 65 78 70 72 3e 20 5b 3c  r>] [, <expr> [<
10fb0 73 6f 72 74 2d 6f 72 64 65 72 3e 5d 5d 2a 0a 7d  sort-order>]]*.}
10fc0 20 7b 73 6f 72 74 2d 6f 72 64 65 72 7d 20 7b 0a   {sort-order} {.
10fd0 5b 20 43 4f 4c 4c 41 54 45 20 3c 63 6f 6c 6c 61  [ COLLATE <colla
10fe0 74 69 6f 6e 2d 6e 61 6d 65 3e 20 5d 20 5b 20 41  tion-name> ] [ A
10ff0 53 43 20 7c 20 44 45 53 43 20 5d 0a 7d 20 7b 63  SC | DESC ].} {c
11000 6f 6d 70 6f 75 6e 64 5f 6f 70 7d 20 7b 0a 55 4e  ompound_op} {.UN
11010 49 4f 4e 20 7c 20 55 4e 49 4f 4e 20 41 4c 4c 20  ION | UNION ALL 
11020 7c 20 49 4e 54 45 52 53 45 43 54 20 7c 20 45 58  | INTERSECT | EX
11030 43 45 50 54 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  CEPT.}.</tcl>..<
11040 70 3e 54 68 65 20 53 45 4c 45 43 54 20 73 74 61  p>The SELECT sta
11050 74 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74  tement is used t
11060 6f 20 71 75 65 72 79 20 74 68 65 20 64 61 74 61  o query the data
11070 62 61 73 65 2e 20 20 54 68 65 0a 72 65 73 75 6c  base.  The.resul
11080 74 20 6f 66 20 61 20 53 45 4c 45 43 54 20 69 73  t of a SELECT is
11090 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 72 6f   zero or more ro
110a0 77 73 20 6f 66 20 64 61 74 61 20 77 68 65 72 65  ws of data where
110b0 20 65 61 63 68 20 72 6f 77 0a 68 61 73 20 61 20   each row.has a 
110c0 66 69 78 65 64 20 6e 75 6d 62 65 72 20 6f 66 20  fixed number of 
110d0 63 6f 6c 75 6d 6e 73 2e 20 20 54 68 65 20 6e 75  columns.  The nu
110e0 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  mber of columns 
110f0 69 6e 20 74 68 65 0a 72 65 73 75 6c 74 20 69 73  in the.result is
11100 20 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68   specified by th
11110 65 20 65 78 70 72 65 73 73 69 6f 6e 20 6c 69 73  e expression lis
11120 74 20 69 6e 20 62 65 74 77 65 65 6e 20 74 68 65  t in between the
11130 0a 53 45 4c 45 43 54 20 61 6e 64 20 46 52 4f 4d  .SELECT and FROM
11140 20 6b 65 79 77 6f 72 64 73 2e 20 20 41 6e 79 20   keywords.  Any 
11150 61 72 62 69 74 72 61 72 79 20 65 78 70 72 65 73  arbitrary expres
11160 73 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64  sion can be used
11170 0a 61 73 20 61 20 72 65 73 75 6c 74 2e 20 20 49  .as a result.  I
11180 66 20 61 20 72 65 73 75 6c 74 20 65 78 70 72 65  f a result expre
11190 73 73 69 6f 6e 20 69 73 20 7d 0a 68 64 5f 70 75  ssion is }.hd_pu
111a0 74 73 20 22 5b 4f 70 65 72 61 74 6f 72 20 2a 5d  ts "[Operator *]
111b0 20 74 68 65 6e 20 61 6c 6c 20 63 6f 6c 75 6d 6e   then all column
111c0 73 20 6f 66 20 61 6c 6c 20 74 61 62 6c 65 73 20  s of all tables 
111d0 61 72 65 20 73 75 62 73 74 69 74 75 74 65 64 22  are substituted"
111e0 0a 68 64 5f 70 75 74 73 20 7b 66 6f 72 20 74 68  .hd_puts {for th
111f0 61 74 20 6f 6e 65 20 65 78 70 72 65 73 73 69 6f  at one expressio
11200 6e 2e 20 20 49 66 20 74 68 65 20 65 78 70 72 65  n.  If the expre
11210 73 73 69 6f 6e 20 69 73 20 74 68 65 20 6e 61 6d  ssion is the nam
11220 65 20 6f 66 7d 0a 68 64 5f 70 75 74 73 20 22 61  e of}.hd_puts "a
11230 20 74 61 62 6c 65 20 66 6f 6c 6c 6f 77 65 64 20   table followed 
11240 62 79 20 5b 4f 70 65 72 61 74 6f 72 20 2e 2a 5d  by [Operator .*]
11250 20 74 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74   then the result
11260 20 69 73 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 22   is all columns"
11270 0a 68 64 5f 70 75 74 73 20 7b 69 6e 20 74 68 61  .hd_puts {in tha
11280 74 20 6f 6e 65 20 74 61 62 6c 65 2e 3c 2f 70 3e  t one table.</p>
11290 0a 0a 3c 70 3e 54 68 65 20 44 49 53 54 49 4e 43  ..<p>The DISTINC
112a0 54 20 6b 65 79 77 6f 72 64 20 63 61 75 73 65 73  T keyword causes
112b0 20 61 20 73 75 62 73 65 74 20 6f 66 20 72 65 73   a subset of res
112c0 75 6c 74 20 72 6f 77 73 20 74 6f 20 62 65 20 72  ult rows to be r
112d0 65 74 75 72 6e 65 64 2c 20 0a 69 6e 20 77 68 69  eturned, .in whi
112e0 63 68 20 65 61 63 68 20 72 65 73 75 6c 74 20 72  ch each result r
112f0 6f 77 20 69 73 20 64 69 66 66 65 72 65 6e 74 2e  ow is different.
11300 20 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61 72    NULL values ar
11310 65 20 6e 6f 74 20 74 72 65 61 74 65 64 20 61 73  e not treated as
11320 20 0a 64 69 73 74 69 6e 63 74 20 66 72 6f 6d 20   .distinct from 
11330 65 61 63 68 20 6f 74 68 65 72 2e 20 20 54 68 65  each other.  The
11340 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f   default behavio
11350 72 20 69 73 20 74 68 61 74 20 61 6c 6c 20 72 65  r is that all re
11360 73 75 6c 74 20 72 6f 77 73 20 0a 62 65 20 72 65  sult rows .be re
11370 74 75 72 6e 65 64 2c 20 77 68 69 63 68 20 63 61  turned, which ca
11380 6e 20 62 65 20 6d 61 64 65 20 65 78 70 6c 69 63  n be made explic
11390 69 74 20 77 69 74 68 20 74 68 65 20 6b 65 79 77  it with the keyw
113a0 6f 72 64 20 41 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70  ord ALL.</p>..<p
113b0 3e 54 68 65 20 71 75 65 72 79 20 69 73 20 65 78  >The query is ex
113c0 65 63 75 74 65 64 20 61 67 61 69 6e 73 74 20 6f  ecuted against o
113d0 6e 65 20 6f 72 20 6d 6f 72 65 20 74 61 62 6c 65  ne or more table
113e0 73 20 73 70 65 63 69 66 69 65 64 20 61 66 74 65  s specified afte
113f0 72 0a 74 68 65 20 46 52 4f 4d 20 6b 65 79 77 6f  r.the FROM keywo
11400 72 64 2e 20 20 49 66 20 6d 75 6c 74 69 70 6c 65  rd.  If multiple
11410 20 74 61 62 6c 65 73 20 6e 61 6d 65 73 20 61 72   tables names ar
11420 65 20 73 65 70 61 72 61 74 65 64 20 62 79 20 63  e separated by c
11430 6f 6d 6d 61 73 2c 0a 74 68 65 6e 20 74 68 65 20  ommas,.then the 
11440 71 75 65 72 79 20 69 73 20 61 67 61 69 6e 73 74  query is against
11450 20 74 68 65 20 63 72 6f 73 73 20 6a 6f 69 6e 20   the cross join 
11460 6f 66 20 74 68 65 20 76 61 72 69 6f 75 73 20 74  of the various t
11470 61 62 6c 65 73 2e 0a 54 68 65 20 66 75 6c 6c 20  ables..The full 
11480 53 51 4c 2d 39 32 20 6a 6f 69 6e 20 73 79 6e 74  SQL-92 join synt
11490 61 78 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 75  ax can also be u
114a0 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 6a  sed to specify j
114b0 6f 69 6e 73 2e 0a 41 20 73 75 62 2d 71 75 65 72  oins..A sub-quer
114c0 79 0a 69 6e 20 70 61 72 65 6e 74 68 65 73 65 73  y.in parentheses
114d0 20 6d 61 79 20 62 65 20 73 75 62 73 74 69 74 75   may be substitu
114e0 74 65 64 20 66 6f 72 20 61 6e 79 20 74 61 62 6c  ted for any tabl
114f0 65 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 46 52  e name in the FR
11500 4f 4d 20 63 6c 61 75 73 65 2e 0a 54 68 65 20 65  OM clause..The e
11510 6e 74 69 72 65 20 46 52 4f 4d 20 63 6c 61 75 73  ntire FROM claus
11520 65 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64  e may be omitted
11530 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20  , in which case 
11540 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 0a  the result is a.
11550 73 69 6e 67 6c 65 20 72 6f 77 20 63 6f 6e 73 69  single row consi
11560 73 74 69 6e 67 20 6f 66 20 74 68 65 20 76 61 6c  sting of the val
11570 75 65 73 20 6f 66 20 74 68 65 20 65 78 70 72 65  ues of the expre
11580 73 73 69 6f 6e 20 6c 69 73 74 2e 0a 3c 2f 70 3e  ssion list..</p>
11590 0a 0a 3c 70 3e 54 68 65 20 57 48 45 52 45 20 63  ..<p>The WHERE c
115a0 6c 61 75 73 65 20 63 61 6e 20 62 65 20 75 73 65  lause can be use
115b0 64 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e  d to limit the n
115c0 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 6f 76  umber of rows ov
115d0 65 72 0a 77 68 69 63 68 20 74 68 65 20 71 75 65  er.which the que
115e0 72 79 20 6f 70 65 72 61 74 65 73 2e 3c 2f 70 3e  ry operates.</p>
115f0 0a 0a 3c 70 3e 54 68 65 20 47 52 4f 55 50 20 42  ..<p>The GROUP B
11600 59 20 63 6c 61 75 73 65 20 63 61 75 73 65 73 20  Y clause causes 
11610 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73  one or more rows
11620 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 74   of the result t
11630 6f 0a 62 65 20 63 6f 6d 62 69 6e 65 64 20 69 6e  o.be combined in
11640 74 6f 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20  to a single row 
11650 6f 66 20 6f 75 74 70 75 74 2e 20 20 54 68 69 73  of output.  This
11660 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75   is especially u
11670 73 65 66 75 6c 0a 77 68 65 6e 20 74 68 65 20 72  seful.when the r
11680 65 73 75 6c 74 20 63 6f 6e 74 61 69 6e 73 20 61  esult contains a
11690 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
116a0 6e 73 2e 20 20 54 68 65 20 65 78 70 72 65 73 73  ns.  The express
116b0 69 6f 6e 73 20 69 6e 0a 74 68 65 20 47 52 4f 55  ions in.the GROU
116c0 50 20 42 59 20 63 6c 61 75 73 65 20 64 6f 20 3c  P BY clause do <
116d0 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 68 61 76 65  em>not</em> have
116e0 20 74 6f 20 62 65 20 65 78 70 72 65 73 73 69 6f   to be expressio
116f0 6e 73 20 74 68 61 74 0a 61 70 70 65 61 72 20 69  ns that.appear i
11700 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20 54  n the result.  T
11710 68 65 20 48 41 56 49 4e 47 20 63 6c 61 75 73 65  he HAVING clause
11720 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 57   is similar to W
11730 48 45 52 45 20 65 78 63 65 70 74 0a 74 68 61 74  HERE except.that
11740 20 48 41 56 49 4e 47 20 61 70 70 6c 69 65 73 20   HAVING applies 
11750 61 66 74 65 72 20 67 72 6f 75 70 69 6e 67 20 68  after grouping h
11760 61 73 20 6f 63 63 75 72 72 65 64 2e 20 20 54 68  as occurred.  Th
11770 65 20 48 41 56 49 4e 47 20 65 78 70 72 65 73 73  e HAVING express
11780 69 6f 6e 0a 6d 61 79 20 72 65 66 65 72 20 74 6f  ion.may refer to
11790 20 76 61 6c 75 65 73 2c 20 65 76 65 6e 20 61 67   values, even ag
117a0 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
117b0 73 2c 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20  s, that are not 
117c0 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f  in the result.</
117d0 70 3e 0a 0a 3c 70 3e 54 68 65 20 4f 52 44 45 52  p>..<p>The ORDER
117e0 20 42 59 20 63 6c 61 75 73 65 20 63 61 75 73 65   BY clause cause
117f0 73 20 74 68 65 20 6f 75 74 70 75 74 20 72 6f 77  s the output row
11800 73 20 74 6f 20 62 65 20 73 6f 72 74 65 64 2e 20  s to be sorted. 
11810 20 0a 54 68 65 20 61 72 67 75 6d 65 6e 74 20 74   .The argument t
11820 6f 20 4f 52 44 45 52 20 42 59 20 69 73 20 61 20  o ORDER BY is a 
11830 6c 69 73 74 20 6f 66 20 65 78 70 72 65 73 73 69  list of expressi
11840 6f 6e 73 20 74 68 61 74 20 61 72 65 20 75 73 65  ons that are use
11850 64 20 61 73 20 74 68 65 0a 6b 65 79 20 66 6f 72  d as the.key for
11860 20 74 68 65 20 73 6f 72 74 2e 20 20 54 68 65 20   the sort.  The 
11870 65 78 70 72 65 73 73 69 6f 6e 73 20 64 6f 20 6e  expressions do n
11880 6f 74 20 68 61 76 65 20 74 6f 20 62 65 20 70 61  ot have to be pa
11890 72 74 20 6f 66 20 74 68 65 0a 72 65 73 75 6c 74  rt of the.result
118a0 20 66 6f 72 20 61 20 73 69 6d 70 6c 65 20 53 45   for a simple SE
118b0 4c 45 43 54 2c 20 62 75 74 20 69 6e 20 61 20 63  LECT, but in a c
118c0 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 65  ompound SELECT e
118d0 61 63 68 20 73 6f 72 74 0a 65 78 70 72 65 73 73  ach sort.express
118e0 69 6f 6e 20 6d 75 73 74 20 65 78 61 63 74 6c 79  ion must exactly
118f0 20 6d 61 74 63 68 20 6f 6e 65 20 6f 66 20 74 68   match one of th
11900 65 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73  e result columns
11910 2e 20 20 45 61 63 68 0a 73 6f 72 74 20 65 78 70  .  Each.sort exp
11920 72 65 73 73 69 6f 6e 20 6d 61 79 20 62 65 20 6f  ression may be o
11930 70 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77  ptionally follow
11940 65 64 20 62 79 20 61 20 43 4f 4c 4c 41 54 45 20  ed by a COLLATE 
11950 6b 65 79 77 6f 72 64 20 61 6e 64 0a 74 68 65 20  keyword and.the 
11960 6e 61 6d 65 20 6f 66 20 61 20 63 6f 6c 6c 61 74  name of a collat
11970 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 75 73 65  ing function use
11980 64 20 66 6f 72 20 6f 72 64 65 72 69 6e 67 20 74  d for ordering t
11990 65 78 74 20 61 6e 64 2f 6f 72 0a 6b 65 79 77 6f  ext and/or.keywo
119a0 72 64 73 20 41 53 43 20 6f 72 20 44 45 53 43 20  rds ASC or DESC 
119b0 74 6f 20 73 70 65 63 69 66 79 20 74 68 65 20 73  to specify the s
119c0 6f 72 74 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a  ort order.</p>..
119d0 3c 70 3e 45 61 63 68 20 74 65 72 6d 20 6f 66 20  <p>Each term of 
119e0 61 6e 20 4f 52 44 45 52 20 42 59 20 65 78 70 72  an ORDER BY expr
119f0 65 73 73 69 6f 6e 20 69 73 20 70 72 6f 63 65 73  ession is proces
11a00 73 65 64 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c  sed as follows:<
11a10 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70  /p>..<ol>.<li><p
11a20 3e 49 66 20 74 68 65 20 4f 52 44 45 52 20 42 59  >If the ORDER BY
11a30 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 61   expression is a
11a40 20 63 6f 6e 73 74 61 6e 74 20 69 6e 74 65 67 65   constant intege
11a50 72 20 4b 20 74 68 65 6e 20 74 68 65 0a 6f 75 74  r K then the.out
11a60 70 75 74 20 69 73 20 6f 72 64 65 72 65 64 20 62  put is ordered b
11a70 79 20 74 68 65 20 4b 2d 74 68 20 63 6f 6c 75 6d  y the K-th colum
11a80 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20  n of the result 
11a90 73 65 74 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c  set.</p></li>.<l
11aa0 69 3e 3c 70 3e 49 66 20 74 68 65 20 4f 52 44 45  i><p>If the ORDE
11ab0 52 20 42 59 20 65 78 70 72 65 73 73 69 6f 6e 20  R BY expression 
11ac0 69 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72  is an identifier
11ad0 20 61 6e 64 20 6f 6e 65 20 6f 66 20 74 68 65 0a   and one of the.
11ae0 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 20 61  output columns a
11af0 73 20 61 6e 20 61 6c 69 61 73 20 62 79 20 74 68  s an alias by th
11b00 65 20 73 61 6d 65 20 6e 61 6d 65 2c 20 74 68 65  e same name, the
11b10 6e 20 74 68 65 20 6f 75 74 70 75 74 20 69 73 0a  n the output is.
11b20 6f 72 64 65 72 65 64 20 62 79 20 74 68 65 20 69  ordered by the i
11b30 64 65 6e 74 69 66 69 65 64 20 63 6f 6c 75 6d 6e  dentified column
11b40 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c  .</p></li>.<li><
11b50 70 3e 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65  p>Otherwise, the
11b60 20 4f 52 44 45 52 20 42 59 20 65 78 70 72 65 73   ORDER BY expres
11b70 73 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74 65  sion is evaluate
11b80 64 20 61 6e 64 20 74 68 65 20 6f 75 74 70 75 74  d and the output
11b90 20 0a 69 73 20 6f 72 64 65 72 65 64 20 62 79 20   .is ordered by 
11ba0 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 61  the value of tha
11bb0 74 20 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 70  t expression.</p
11bc0 3e 3c 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70  ></li>.</ol>..<p
11bd0 3e 49 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53  >In a compound S
11be0 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2c  ELECT statement,
11bf0 20 74 68 65 20 74 68 69 72 64 20 4f 52 44 45 52   the third ORDER
11c00 20 42 59 20 6d 61 74 63 68 69 6e 67 20 72 75 6c   BY matching rul
11c10 65 0a 72 65 71 75 69 72 65 73 20 74 68 61 74 20  e.requires that 
11c20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 62  the expression b
11c30 65 20 69 64 65 6e 74 69 63 61 6c 20 74 6f 20 6f  e identical to o
11c40 6e 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e  ne of the column
11c50 73 20 69 6e 0a 74 68 65 20 72 65 73 75 6c 74 20  s in.the result 
11c60 73 65 74 2e 20 20 54 68 65 20 74 68 72 65 65 20  set.  The three 
11c70 72 75 6c 65 73 20 61 72 65 20 66 69 72 73 74 20  rules are first 
11c80 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 6c  applied to the l
11c90 65 66 74 2d 6d 6f 73 74 0a 53 45 4c 45 43 54 20  eft-most.SELECT 
11ca0 69 6e 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 2e  in the compound.
11cb0 20 20 49 66 20 61 20 6d 61 74 63 68 20 69 73 20    If a match is 
11cc0 66 6f 75 6e 64 2c 20 74 68 65 20 73 65 61 72 63  found, the searc
11cd0 68 20 73 74 6f 70 73 2e 20 20 4f 74 68 65 72 77  h stops.  Otherw
11ce0 69 73 65 2c 0a 74 68 65 20 6e 65 78 74 20 53 45  ise,.the next SE
11cf0 4c 45 43 54 20 74 6f 20 74 68 65 20 72 69 67 68  LECT to the righ
11d00 74 20 69 73 20 74 72 69 65 64 2e 20 20 54 68 69  t is tried.  Thi
11d10 73 20 63 6f 6e 74 69 6e 75 65 73 20 75 6e 74 69  s continues unti
11d20 6c 20 61 20 6d 61 74 63 68 0a 69 73 20 66 6f 75  l a match.is fou
11d30 6e 64 2e 20 20 45 61 63 68 20 74 65 72 6d 20 6f  nd.  Each term o
11d40 66 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 63  f the ORDER BY c
11d50 6c 61 75 73 65 20 69 73 20 70 72 6f 63 65 73 73  lause is process
11d60 65 64 20 73 65 70 61 72 61 74 65 6c 79 20 0a 61  ed separately .a
11d70 6e 64 20 6d 61 79 20 63 6f 6d 65 20 66 72 6f 6d  nd may come from
11d80 20 64 69 66 66 65 72 65 6e 74 20 53 45 4c 45 43   different SELEC
11d90 54 20 73 74 61 74 65 6d 65 6e 74 73 20 69 6e 20  T statements in 
11da0 74 68 65 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f 70  the compound.</p
11db0 3e 0a 0a 3c 70 3e 54 68 65 20 4c 49 4d 49 54 20  >..<p>The LIMIT 
11dc0 63 6c 61 75 73 65 20 70 6c 61 63 65 73 20 61 6e  clause places an
11dd0 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20   upper bound on 
11de0 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  the number of ro
11df0 77 73 0a 72 65 74 75 72 6e 65 64 20 69 6e 20 74  ws.returned in t
11e00 68 65 20 72 65 73 75 6c 74 2e 20 20 41 20 6e 65  he result.  A ne
11e10 67 61 74 69 76 65 20 4c 49 4d 49 54 20 69 6e 64  gative LIMIT ind
11e20 69 63 61 74 65 73 20 6e 6f 20 75 70 70 65 72 20  icates no upper 
11e30 62 6f 75 6e 64 2e 0a 54 68 65 20 6f 70 74 69 6f  bound..The optio
11e40 6e 61 6c 20 4f 46 46 53 45 54 20 66 6f 6c 6c 6f  nal OFFSET follo
11e50 77 69 6e 67 20 4c 49 4d 49 54 20 73 70 65 63 69  wing LIMIT speci
11e60 66 69 65 73 20 68 6f 77 20 6d 61 6e 79 0a 72 6f  fies how many.ro
11e70 77 73 20 74 6f 20 73 6b 69 70 20 61 74 20 74 68  ws to skip at th
11e80 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74  e beginning of t
11e90 68 65 20 72 65 73 75 6c 74 20 73 65 74 2e 0a 49  he result set..I
11ea0 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 71 75 65  n a compound que
11eb0 72 79 2c 20 74 68 65 20 4c 49 4d 49 54 20 63 6c  ry, the LIMIT cl
11ec0 61 75 73 65 20 6d 61 79 20 6f 6e 6c 79 20 61 70  ause may only ap
11ed0 70 65 61 72 20 6f 6e 20 74 68 65 0a 66 69 6e 61  pear on the.fina
11ee0 6c 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  l SELECT stateme
11ef0 6e 74 2e 0a 54 68 65 20 6c 69 6d 69 74 20 69 73  nt..The limit is
11f00 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20   applied to the 
11f10 65 6e 74 69 72 65 20 71 75 65 72 79 20 6e 6f 74  entire query not
11f20 0a 74 6f 20 74 68 65 20 69 6e 64 69 76 69 64 75  .to the individu
11f30 61 6c 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d  al SELECT statem
11f40 65 6e 74 20 74 6f 20 77 68 69 63 68 20 69 74 20  ent to which it 
11f50 69 73 20 61 74 74 61 63 68 65 64 2e 0a 4e 6f 74  is attached..Not
11f60 65 20 74 68 61 74 20 69 66 20 74 68 65 20 4f 46  e that if the OF
11f70 46 53 45 54 20 6b 65 79 77 6f 72 64 20 69 73 20  FSET keyword is 
11f80 75 73 65 64 20 69 6e 20 74 68 65 20 4c 49 4d 49  used in the LIMI
11f90 54 20 63 6c 61 75 73 65 2c 20 74 68 65 6e 20 74  T clause, then t
11fa0 68 65 0a 6c 69 6d 69 74 20 69 73 20 74 68 65 20  he.limit is the 
11fb0 66 69 72 73 74 20 6e 75 6d 62 65 72 20 61 6e 64  first number and
11fc0 20 74 68 65 20 6f 66 66 73 65 74 20 69 73 20 74   the offset is t
11fd0 68 65 20 73 65 63 6f 6e 64 20 6e 75 6d 62 65 72  he second number
11fe0 2e 20 20 49 66 20 61 0a 63 6f 6d 6d 61 20 69 73  .  If a.comma is
11ff0 20 75 73 65 64 20 69 6e 73 74 65 61 64 20 6f 66   used instead of
12000 20 74 68 65 20 4f 46 46 53 45 54 20 6b 65 79 77   the OFFSET keyw
12010 6f 72 64 2c 20 74 68 65 6e 20 74 68 65 20 6f 66  ord, then the of
12020 66 73 65 74 20 69 73 20 74 68 65 0a 66 69 72 73  fset is the.firs
12030 74 20 6e 75 6d 62 65 72 20 61 6e 64 20 74 68 65  t number and the
12040 20 6c 69 6d 69 74 20 69 73 20 74 68 65 20 73 65   limit is the se
12050 63 6f 6e 64 20 6e 75 6d 62 65 72 2e 20 20 54 68  cond number.  Th
12060 69 73 20 73 65 65 6d 69 6e 67 0a 63 6f 6e 74 72  is seeming.contr
12070 61 64 69 74 69 6f 6e 20 69 73 20 69 6e 74 65 6e  adition is inten
12080 74 69 6f 6e 61 6c 20 2d 20 69 74 20 6d 61 78 69  tional - it maxi
12090 6d 69 7a 65 73 20 63 6f 6d 70 61 74 69 62 69 6c  mizes compatibil
120a0 69 74 79 20 77 69 74 68 20 6c 65 67 61 63 79 0a  ity with legacy.
120b0 53 51 4c 20 64 61 74 61 62 61 73 65 20 73 79 73  SQL database sys
120c0 74 65 6d 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41  tems..</p>..<p>A
120d0 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54   compound SELECT
120e0 20 69 73 20 66 6f 72 6d 65 64 20 66 72 6f 6d 20   is formed from 
120f0 74 77 6f 20 6f 72 20 6d 6f 72 65 20 73 69 6d 70  two or more simp
12100 6c 65 20 53 45 4c 45 43 54 73 20 63 6f 6e 6e 65  le SELECTs conne
12110 63 74 65 64 0a 62 79 20 6f 6e 65 20 6f 66 20 74  cted.by one of t
12120 68 65 20 6f 70 65 72 61 74 6f 72 73 20 55 4e 49  he operators UNI
12130 4f 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49  ON, UNION ALL, I
12140 4e 54 45 52 53 45 43 54 2c 20 6f 72 20 45 58 43  NTERSECT, or EXC
12150 45 50 54 2e 20 20 49 6e 0a 61 20 63 6f 6d 70 6f  EPT.  In.a compo
12160 75 6e 64 20 53 45 4c 45 43 54 2c 20 61 6c 6c 20  und SELECT, all 
12170 74 68 65 20 63 6f 6e 73 74 69 74 75 65 6e 74 20  the constituent 
12180 53 45 4c 45 43 54 73 20 6d 75 73 74 20 73 70 65  SELECTs must spe
12190 63 69 66 79 20 74 68 65 0a 73 61 6d 65 20 6e 75  cify the.same nu
121a0 6d 62 65 72 20 6f 66 20 72 65 73 75 6c 74 20 63  mber of result c
121b0 6f 6c 75 6d 6e 73 2e 20 20 54 68 65 72 65 20 6d  olumns.  There m
121c0 61 79 20 62 65 20 6f 6e 6c 79 20 61 20 73 69 6e  ay be only a sin
121d0 67 6c 65 20 4f 52 44 45 52 20 42 59 0a 63 6c 61  gle ORDER BY.cla
121e0 75 73 65 20 61 74 20 74 68 65 20 65 6e 64 20 6f  use at the end o
121f0 66 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20 53  f the compound S
12200 45 4c 45 43 54 2e 20 20 54 68 65 20 55 4e 49 4f  ELECT.  The UNIO
12210 4e 20 61 6e 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a  N and UNION ALL.
12220 6f 70 65 72 61 74 6f 72 73 20 63 6f 6d 62 69 6e  operators combin
12230 65 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66  e the results of
12240 20 74 68 65 20 53 45 4c 45 43 54 73 20 74 6f 20   the SELECTs to 
12250 74 68 65 20 72 69 67 68 74 20 61 6e 64 20 6c 65  the right and le
12260 66 74 20 69 6e 74 6f 0a 61 20 73 69 6e 67 6c 65  ft into.a single
12270 20 62 69 67 20 74 61 62 6c 65 2e 20 20 54 68 65   big table.  The
12280 20 64 69 66 66 65 72 65 6e 63 65 20 69 73 20 74   difference is t
12290 68 61 74 20 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c  hat in UNION all
122a0 20 72 65 73 75 6c 74 20 72 6f 77 73 0a 61 72 65   result rows.are
122b0 20 64 69 73 74 69 6e 63 74 20 77 68 65 72 65 20   distinct where 
122c0 69 6e 20 55 4e 49 4f 4e 20 41 4c 4c 20 74 68 65  in UNION ALL the
122d0 72 65 20 6d 61 79 20 62 65 20 64 75 70 6c 69 63  re may be duplic
122e0 61 74 65 73 2e 0a 54 68 65 20 49 4e 54 45 52 53  ates..The INTERS
122f0 45 43 54 20 6f 70 65 72 61 74 6f 72 20 74 61 6b  ECT operator tak
12300 65 73 20 74 68 65 20 69 6e 74 65 72 73 65 63 74  es the intersect
12310 69 6f 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c  ion of the resul
12320 74 73 20 6f 66 20 74 68 65 0a 6c 65 66 74 20 61  ts of the.left a
12330 6e 64 20 72 69 67 68 74 20 53 45 4c 45 43 54 73  nd right SELECTs
12340 2e 20 20 45 58 43 45 50 54 20 74 61 6b 65 73 20  .  EXCEPT takes 
12350 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 6c 65  the result of le
12360 66 74 20 53 45 4c 45 43 54 20 61 66 74 65 72 0a  ft SELECT after.
12370 72 65 6d 6f 76 69 6e 67 20 74 68 65 20 72 65 73  removing the res
12380 75 6c 74 73 20 6f 66 20 74 68 65 20 72 69 67 68  ults of the righ
12390 74 20 53 45 4c 45 43 54 2e 20 20 57 68 65 6e 20  t SELECT.  When 
123a0 74 68 72 65 65 20 6f 72 20 6d 6f 72 65 20 53 45  three or more SE
123b0 4c 45 43 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63  LECTs.are connec
123c0 74 65 64 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f  ted into a compo
123d0 75 6e 64 2c 20 74 68 65 79 20 67 72 6f 75 70 20  und, they group 
123e0 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67  from left to rig
123f0 68 74 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a  ht.</p>...<tcl>.
12400 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12410 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12420 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12430 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12440 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
12450 65 63 74 69 6f 6e 20 55 50 44 41 54 45 20 75 70  ection UPDATE up
12460 64 61 74 65 20 7b 55 50 44 41 54 45 20 55 50 44  date {UPDATE UPD
12470 41 54 45 73 7d 0a 0a 53 79 6e 74 61 78 20 7b 73  ATEs}..Syntax {s
12480 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
12490 55 50 44 41 54 45 20 5b 20 4f 52 20 3c 63 6f 6e  UPDATE [ OR <con
124a0 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e  flict-algorithm>
124b0 20 5d 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61   ] [<database-na
124c0 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61  me> .] <table-na
124d0 6d 65 3e 0a 53 45 54 20 3c 61 73 73 69 67 6e 6d  me>.SET <assignm
124e0 65 6e 74 3e 20 5b 2c 20 3c 61 73 73 69 67 6e 6d  ent> [, <assignm
124f0 65 6e 74 3e 5d 2a 0a 5b 57 48 45 52 45 20 3c 65  ent>]*.[WHERE <e
12500 78 70 72 3e 5d 0a 7d 20 7b 61 73 73 69 67 6e 6d  xpr>].} {assignm
12510 65 6e 74 7d 20 7b 0a 3c 63 6f 6c 75 6d 6e 2d 6e  ent} {.<column-n
12520 61 6d 65 3e 20 3d 20 3c 65 78 70 72 3e 0a 7d 0a  ame> = <expr>.}.
12530 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 55  </tcl>..<p>The U
12540 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20  PDATE statement 
12550 69 73 20 75 73 65 64 20 74 6f 20 63 68 61 6e 67  is used to chang
12560 65 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 63  e the value of c
12570 6f 6c 75 6d 6e 73 20 69 6e 20 0a 73 65 6c 65 63  olumns in .selec
12580 74 65 64 20 72 6f 77 73 20 6f 66 20 61 20 74 61  ted rows of a ta
12590 62 6c 65 2e 20 20 45 61 63 68 20 61 73 73 69 67  ble.  Each assig
125a0 6e 6d 65 6e 74 20 69 6e 20 61 6e 20 55 50 44 41  nment in an UPDA
125b0 54 45 20 73 70 65 63 69 66 69 65 73 0a 61 20 63  TE specifies.a c
125c0 6f 6c 75 6d 6e 20 6e 61 6d 65 20 74 6f 20 74 68  olumn name to th
125d0 65 20 6c 65 66 74 20 6f 66 20 74 68 65 20 65 71  e left of the eq
125e0 75 61 6c 73 20 73 69 67 6e 20 61 6e 64 20 61 6e  uals sign and an
125f0 20 61 72 62 69 74 72 61 72 79 20 65 78 70 72 65   arbitrary expre
12600 73 73 69 6f 6e 0a 74 6f 20 74 68 65 20 72 69 67  ssion.to the rig
12610 68 74 2e 20 20 54 68 65 20 65 78 70 72 65 73 73  ht.  The express
12620 69 6f 6e 73 20 6d 61 79 20 75 73 65 20 74 68 65  ions may use the
12630 20 76 61 6c 75 65 73 20 6f 66 20 6f 74 68 65 72   values of other
12640 20 63 6f 6c 75 6d 6e 73 2e 0a 41 6c 6c 20 65 78   columns..All ex
12650 70 72 65 73 73 69 6f 6e 73 20 61 72 65 20 65 76  pressions are ev
12660 61 6c 75 61 74 65 64 20 62 65 66 6f 72 65 20 61  aluated before a
12670 6e 79 20 61 73 73 69 67 6e 6d 65 6e 74 73 20 61  ny assignments a
12680 72 65 20 6d 61 64 65 2e 0a 41 20 57 48 45 52 45  re made..A WHERE
12690 20 63 6c 61 75 73 65 20 63 61 6e 20 62 65 20 75   clause can be u
126a0 73 65 64 20 74 6f 20 72 65 73 74 72 69 63 74 20  sed to restrict 
126b0 77 68 69 63 68 20 72 6f 77 73 20 61 72 65 20 75  which rows are u
126c0 70 64 61 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  pdated.</p>..<p>
126d0 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e  The optional con
126e0 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c  flict-clause all
126f0 6f 77 73 20 74 68 65 20 73 70 65 63 69 66 69 63  ows the specific
12700 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65  ation of an alte
12710 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74 72 61 69  rnative.constrai
12720 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  nt conflict reso
12730 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
12740 20 74 6f 20 75 73 65 20 64 75 72 69 6e 67 20 74   to use during t
12750 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e  his one command.
12760 0a 53 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e  .See the section
12770 20 74 69 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d   titled.<a href=
12780 22 6c 61 6e 67 5f 63 6f 6e 66 6c 69 63 74 2e 68  "lang_conflict.h
12790 74 6d 6c 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54  tml">ON CONFLICT
127a0 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f  </a> for additio
127b0 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  nal information.
127c0 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23  </p>...<tcl>.###
127d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
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 0a 53 65 63 74  ###########.Sect
12820 69 6f 6e 20 56 41 43 55 55 4d 20 76 61 63 75 75  ion VACUUM vacuu
12830 6d 20 56 41 43 55 55 4d 0a 0a 53 79 6e 74 61 78  m VACUUM..Syntax
12840 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
12850 20 7b 0a 56 41 43 55 55 4d 0a 7d 0a 3c 2f 74 63   {.VACUUM.}.</tc
12860 6c 3e 0a 0a 3c 70 3e 54 68 65 20 56 41 43 55 55  l>..<p>The VACUU
12870 4d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20  M command is an 
12880 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69 6f 6e  SQLite extension
12890 20 6d 6f 64 65 6c 65 64 20 61 66 74 65 72 20 61   modeled after a
128a0 20 73 69 6d 69 6c 61 72 0a 63 6f 6d 6d 61 6e 64   similar.command
128b0 20 66 6f 75 6e 64 20 69 6e 20 50 6f 73 74 67 72   found in Postgr
128c0 65 53 51 4c 2e 20 20 49 66 20 56 41 43 55 55 4d  eSQL.  If VACUUM
128d0 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 69 74 68   is invoked with
128e0 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 0a 74   the name of a.t
128f0 61 62 6c 65 20 6f 72 20 69 6e 64 65 78 20 74 68  able or index th
12900 65 6e 20 69 74 20 69 73 20 73 75 70 70 6f 73 65  en it is suppose
12910 20 74 6f 20 63 6c 65 61 6e 20 75 70 20 74 68 65   to clean up the
12920 20 6e 61 6d 65 64 20 74 61 62 6c 65 20 6f 72 20   named table or 
12930 69 6e 64 65 78 2e 0a 49 6e 20 76 65 72 73 69 6f  index..In versio
12940 6e 20 31 2e 30 20 6f 66 20 53 51 4c 69 74 65 2c  n 1.0 of SQLite,
12950 20 74 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d   the VACUUM comm
12960 61 6e 64 20 77 6f 75 6c 64 20 69 6e 76 6f 6b 65  and would invoke
12970 20 0a 3c 62 3e 67 64 62 6d 5f 72 65 6f 72 67 61   .<b>gdbm_reorga
12980 6e 69 7a 65 28 29 3c 2f 62 3e 20 74 6f 20 63 6c  nize()</b> to cl
12990 65 61 6e 20 75 70 20 74 68 65 20 62 61 63 6b 65  ean up the backe
129a0 6e 64 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  nd database file
129b0 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 56 41 43 55 55  .</p>..<p>.VACUU
129c0 4d 20 62 65 63 61 6d 65 20 61 20 6e 6f 2d 6f 70  M became a no-op
129d0 20 77 68 65 6e 20 74 68 65 20 47 44 42 4d 20 62   when the GDBM b
129e0 61 63 6b 65 6e 64 20 77 61 73 20 72 65 6d 6f 76  ackend was remov
129f0 65 64 20 66 72 6f 6d 0a 53 51 4c 49 54 45 20 69  ed from.SQLITE i
12a00 6e 20 76 65 72 73 69 6f 6e 20 32 2e 30 2e 30 2e  n version 2.0.0.
12a10 0a 56 41 43 55 55 4d 20 77 61 73 20 72 65 69 6d  .VACUUM was reim
12a20 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 76 65 72  plemented in ver
12a30 73 69 6f 6e 20 32 2e 38 2e 31 2e 0a 3c 2f 70 3e  sion 2.8.1..</p>
12a40 0a 0a 3c 70 3e 57 68 65 6e 20 61 6e 20 6f 62 6a  ..<p>When an obj
12a50 65 63 74 20 28 74 61 62 6c 65 2c 20 69 6e 64 65  ect (table, inde
12a60 78 2c 20 6f 72 20 74 72 69 67 67 65 72 29 20 69  x, or trigger) i
12a70 73 20 64 72 6f 70 70 65 64 20 66 72 6f 6d 20 74  s dropped from t
12a80 68 65 20 0a 64 61 74 61 62 61 73 65 2c 20 69 74  he .database, it
12a90 20 6c 65 61 76 65 73 20 62 65 68 69 6e 64 20 65   leaves behind e
12aa0 6d 70 74 79 20 73 70 61 63 65 2e 20 20 54 68 69  mpty space.  Thi
12ab0 73 20 6d 61 6b 65 73 20 74 68 65 20 64 61 74 61  s makes the data
12ac0 62 61 73 65 20 0a 66 69 6c 65 20 6c 61 72 67 65  base .file large
12ad0 72 20 74 68 61 6e 20 69 74 20 6e 65 65 64 73 20  r than it needs 
12ae0 74 6f 20 62 65 2c 20 62 75 74 20 63 61 6e 20 73  to be, but can s
12af0 70 65 65 64 20 75 70 20 69 6e 73 65 72 74 73 2e  peed up inserts.
12b00 20 20 49 6e 20 74 69 6d 65 20 0a 69 6e 73 65 72    In time .inser
12b10 74 73 20 61 6e 64 20 64 65 6c 65 74 65 73 20 63  ts and deletes c
12b20 61 6e 20 6c 65 61 76 65 20 74 68 65 20 64 61 74  an leave the dat
12b30 61 62 61 73 65 20 66 69 6c 65 20 73 74 72 75 63  abase file struc
12b40 74 75 72 65 20 66 72 61 67 6d 65 6e 74 65 64 2c  ture fragmented,
12b50 20 0a 77 68 69 63 68 20 73 6c 6f 77 73 20 64 6f   .which slows do
12b60 77 6e 20 64 69 73 6b 20 61 63 63 65 73 73 20 74  wn disk access t
12b70 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  o the database c
12b80 6f 6e 74 65 6e 74 73 2e 0a 0a 54 68 65 20 56 41  ontents...The VA
12b90 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 63 6c 65  CUUM command cle
12ba0 61 6e 73 0a 74 68 65 20 6d 61 69 6e 20 64 61 74  ans.the main dat
12bb0 61 62 61 73 65 20 62 79 20 63 6f 70 79 69 6e 67  abase by copying
12bc0 20 69 74 73 20 63 6f 6e 74 65 6e 74 73 20 74 6f   its contents to
12bd0 20 61 20 74 65 6d 70 6f 72 61 72 79 20 64 61 74   a temporary dat
12be0 61 62 61 73 65 20 66 69 6c 65 20 61 6e 64 20 0a  abase file and .
12bf0 72 65 6c 6f 61 64 69 6e 67 20 74 68 65 20 6f 72  reloading the or
12c00 69 67 69 6e 61 6c 20 64 61 74 61 62 61 73 65 20  iginal database 
12c10 66 69 6c 65 20 66 72 6f 6d 20 74 68 65 20 63 6f  file from the co
12c20 70 79 2e 20 20 54 68 69 73 20 65 6c 69 6d 69 6e  py.  This elimin
12c30 61 74 65 73 20 0a 66 72 65 65 20 70 61 67 65 73  ates .free pages
12c40 2c 20 20 61 6c 69 67 6e 73 20 74 61 62 6c 65 20  ,  aligns table 
12c50 64 61 74 61 20 74 6f 20 62 65 20 63 6f 6e 74 69  data to be conti
12c60 67 75 6f 75 73 2c 20 61 6e 64 20 6f 74 68 65 72  guous, and other
12c70 77 69 73 65 20 63 6c 65 61 6e 73 20 0a 75 70 20  wise cleans .up 
12c80 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
12c90 65 20 73 74 72 75 63 74 75 72 65 2e 3c 2f 70 3e  e structure.</p>
12ca0 0a 0a 3c 70 3e 54 68 65 20 56 41 43 55 55 4d 20  ..<p>The VACUUM 
12cb0 63 6f 6d 6d 61 6e 64 20 6d 61 79 20 63 68 61 6e  command may chan
12cc0 67 65 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d  ge the .<a href=
12cd0 22 6c 61 6e 67 5f 63 72 65 61 74 65 74 61 62 6c  "lang_createtabl
12ce0 65 2e 68 74 6d 6c 23 72 6f 77 69 64 22 3e 52 4f  e.html#rowid">RO
12cf0 57 49 44 3c 2f 61 3e 20 6f 66 20 65 6e 74 69 72  WID</a> of entir
12d00 65 73 20 69 6e 20 74 61 62 6c 65 73 20 74 68 61  es in tables tha
12d10 74 20 64 6f 0a 6e 6f 74 20 68 61 76 65 20 61 6e  t do.not have an
12d20 20 65 78 70 6c 69 63 69 74 20 49 4e 54 45 47 45   explicit INTEGE
12d30 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2e 3c 2f  R PRIMARY KEY.</
12d40 70 3e 0a 0a 3c 70 3e 56 41 43 55 55 4d 20 6f 6e  p>..<p>VACUUM on
12d50 6c 79 20 77 6f 72 6b 73 20 6f 6e 20 74 68 65 20  ly works on the 
12d60 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2e 0a 49  main database..I
12d70 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c  t is not possibl
12d80 65 20 74 6f 20 56 41 43 55 55 4d 20 61 6e 20 61  e to VACUUM an a
12d90 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
12da0 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54   file.</p>..<p>T
12db0 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e  he VACUUM comman
12dc0 64 20 77 69 6c 6c 20 66 61 69 6c 20 69 66 20 74  d will fail if t
12dd0 68 65 72 65 20 69 73 20 61 6e 20 61 63 74 69 76  here is an activ
12de0 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 54  e transaction..T
12df0 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e  he VACUUM comman
12e00 64 20 69 73 20 61 20 6e 6f 2d 6f 70 20 66 6f 72  d is a no-op for
12e10 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62   in-memory datab
12e20 61 73 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 73  ases.</p>..<p>As
12e30 20 6f 66 20 53 51 4c 69 74 65 20 76 65 72 73 69   of SQLite versi
12e40 6f 6e 20 33 2e 31 2c 20 61 6e 20 61 6c 74 65 72  on 3.1, an alter
12e50 6e 61 74 69 76 65 20 74 6f 20 75 73 69 6e 67 20  native to using 
12e60 74 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61  the VACUUM comma
12e70 6e 64 0a 69 73 20 61 75 74 6f 2d 76 61 63 75 75  nd.is auto-vacuu
12e80 6d 20 6d 6f 64 65 2c 20 65 6e 61 62 6c 65 64 20  m mode, enabled 
12e90 75 73 69 6e 67 20 74 68 65 20 0a 3c 61 20 68 72  using the .<a hr
12ea0 65 66 3d 22 70 72 61 67 6d 61 2e 68 74 6d 6c 23  ef="pragma.html#
12eb0 70 72 61 67 6d 61 5f 61 75 74 6f 5f 76 61 63 75  pragma_auto_vacu
12ec0 75 6d 22 3e 61 75 74 6f 5f 76 61 63 75 75 6d 20  um">auto_vacuum 
12ed0 70 72 61 67 6d 61 3c 2f 61 3e 2e 0a 57 68 65 6e  pragma</a>..When
12ee0 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 69 73 20   auto-vacuum is 
12ef0 65 6e 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61  enabled for a da
12f00 74 61 62 61 73 65 2c 20 6c 61 72 67 65 20 64 65  tabase, large de
12f10 6c 65 74 65 73 20 63 61 75 73 65 0a 74 68 65 20  letes cause.the 
12f20 73 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61  size of the data
12f30 62 61 73 65 20 66 69 6c 65 20 74 6f 20 73 68 72  base file to shr
12f40 69 6e 6b 2e 20 20 48 6f 77 65 76 65 72 2c 20 61  ink.  However, a
12f50 75 74 6f 2d 76 61 63 75 75 6d 0a 61 6c 73 6f 20  uto-vacuum.also 
12f60 63 61 75 73 65 73 20 65 78 63 65 73 73 20 66 72  causes excess fr
12f70 61 67 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74  agmentation of t
12f80 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
12f90 2e 20 20 41 6e 64 20 61 75 74 6f 2d 76 61 63 75  .  And auto-vacu
12fa0 75 6d 0a 64 6f 65 73 20 6e 6f 74 20 63 6f 6d 70  um.does not comp
12fb0 61 63 74 20 70 61 72 74 69 61 6c 6c 79 20 66 69  act partially fi
12fc0 6c 6c 65 64 20 70 61 67 65 73 20 6f 66 20 74 68  lled pages of th
12fd0 65 20 64 61 74 61 62 61 73 65 20 61 73 20 56 41  e database as VA
12fe0 43 55 55 4d 0a 64 6f 65 73 2e 0a 3c 2f 70 3e 0a  CUUM.does..</p>.
12ff0 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
13000 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13010 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13020 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13030 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13040 23 23 23 23 0a 23 20 41 20 6c 69 73 74 20 6f 66  ####.# A list of
13050 20 6b 65 79 77 6f 72 64 73 2e 20 20 41 20 61 73   keywords.  A as
13060 74 65 72 69 73 6b 20 6f 63 63 75 72 73 20 61 66  terisk occurs af
13070 74 65 72 20 74 68 65 20 6b 65 79 77 6f 72 64 20  ter the keyword 
13080 69 66 20 69 74 20 69 73 20 6f 6e 0a 23 20 74 68  if it is on.# th
13090 65 20 66 61 6c 6c 62 61 63 6b 20 6c 69 73 74 2e  e fallback list.
130a0 0a 23 0a 73 65 74 20 6b 65 79 77 6f 72 64 5f 6c  .#.set keyword_l
130b0 69 73 74 20 5b 6c 73 6f 72 74 20 7b 0a 20 20 20  ist [lsort {.   
130c0 41 42 4f 52 54 2a 0a 20 20 20 41 44 44 0a 20 20  ABORT*.   ADD.  
130d0 20 41 46 54 45 52 2a 0a 20 20 20 41 4c 4c 0a 20   AFTER*.   ALL. 
130e0 20 20 41 4c 54 45 52 0a 20 20 20 41 4e 41 4c 59    ALTER.   ANALY
130f0 5a 45 2a 0a 20 20 20 41 4e 44 0a 20 20 20 41 53  ZE*.   AND.   AS
13100 0a 20 20 20 41 53 43 2a 0a 20 20 20 41 54 54 41  .   ASC*.   ATTA
13110 43 48 2a 0a 20 20 20 41 55 54 4f 49 4e 43 52 45  CH*.   AUTOINCRE
13120 4d 45 4e 54 0a 20 20 20 42 45 46 4f 52 45 2a 0a  MENT.   BEFORE*.
13130 20 20 20 42 45 47 49 4e 2a 0a 20 20 20 42 45 54     BEGIN*.   BET
13140 57 45 45 4e 0a 20 20 20 42 59 0a 20 20 20 43 41  WEEN.   BY.   CA
13150 53 43 41 44 45 2a 0a 20 20 20 43 41 53 45 0a 20  SCADE*.   CASE. 
13160 20 20 43 41 53 54 2a 0a 20 20 20 43 48 45 43 4b    CAST*.   CHECK
13170 0a 20 20 20 43 4f 4c 4c 41 54 45 0a 20 20 20 43  .   COLLATE.   C
13180 4f 4c 55 4d 4e 0a 20 20 20 43 4f 4d 4d 49 54 0a  OLUMN.   COMMIT.
13190 20 20 20 43 4f 4e 46 4c 49 43 54 2a 0a 20 20 20     CONFLICT*.   
131a0 43 4f 4e 53 54 52 41 49 4e 54 0a 20 20 20 43 52  CONSTRAINT.   CR
131b0 45 41 54 45 0a 20 20 20 43 52 4f 53 53 0a 20 20  EATE.   CROSS.  
131c0 20 43 55 52 52 45 4e 54 5f 44 41 54 45 2a 0a 20   CURRENT_DATE*. 
131d0 20 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2a 0a    CURRENT_TIME*.
131e0 20 20 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53     CURRENT_TIMES
131f0 54 41 4d 50 2a 0a 20 20 20 44 41 54 41 42 41 53  TAMP*.   DATABAS
13200 45 2a 0a 20 20 20 44 45 46 41 55 4c 54 0a 20 20  E*.   DEFAULT.  
13210 20 44 45 46 45 52 52 45 44 2a 0a 20 20 20 44 45   DEFERRED*.   DE
13220 46 45 52 52 41 42 4c 45 0a 20 20 20 44 45 4c 45  FERRABLE.   DELE
13230 54 45 0a 20 20 20 44 45 53 43 2a 0a 20 20 20 44  TE.   DESC*.   D
13240 45 54 41 43 48 2a 0a 20 20 20 44 49 53 54 49 4e  ETACH*.   DISTIN
13250 43 54 0a 20 20 20 44 52 4f 50 0a 20 20 20 45 4e  CT.   DROP.   EN
13260 44 2a 0a 20 20 20 45 41 43 48 2a 0a 20 20 20 45  D*.   EACH*.   E
13270 4c 53 45 0a 20 20 20 45 53 43 41 50 45 0a 20 20  LSE.   ESCAPE.  
13280 20 45 58 43 45 50 54 0a 20 20 20 45 58 43 4c 55   EXCEPT.   EXCLU
13290 53 49 56 45 2a 0a 20 20 20 45 58 49 53 54 53 0a  SIVE*.   EXISTS.
132a0 20 20 20 45 58 50 4c 41 49 4e 2a 0a 20 20 20 46     EXPLAIN*.   F
132b0 41 49 4c 2a 0a 20 20 20 46 4f 52 2a 0a 20 20 20  AIL*.   FOR*.   
132c0 46 4f 52 45 49 47 4e 0a 20 20 20 46 52 4f 4d 0a  FOREIGN.   FROM.
132d0 20 20 20 46 55 4c 4c 0a 20 20 20 47 4c 4f 42 2a     FULL.   GLOB*
132e0 0a 20 20 20 47 52 4f 55 50 0a 20 20 20 48 41 56  .   GROUP.   HAV
132f0 49 4e 47 0a 20 20 20 49 46 2a 0a 20 20 20 49 47  ING.   IF*.   IG
13300 4e 4f 52 45 2a 0a 20 20 20 49 4d 4d 45 44 49 41  NORE*.   IMMEDIA
13310 54 45 2a 0a 20 20 20 49 4e 0a 20 20 20 49 4e 44  TE*.   IN.   IND
13320 45 58 0a 20 20 20 49 4e 49 54 49 41 4c 4c 59 2a  EX.   INITIALLY*
13330 0a 20 20 20 49 4e 4e 45 52 0a 20 20 20 49 4e 53  .   INNER.   INS
13340 45 52 54 0a 20 20 20 49 4e 53 54 45 41 44 2a 0a  ERT.   INSTEAD*.
13350 20 20 20 49 4e 54 45 52 53 45 43 54 0a 20 20 20     INTERSECT.   
13360 49 4e 54 4f 0a 20 20 20 49 53 0a 20 20 20 49 53  INTO.   IS.   IS
13370 4e 55 4c 4c 0a 20 20 20 4a 4f 49 4e 0a 20 20 20  NULL.   JOIN.   
13380 4b 45 59 2a 0a 20 20 20 4c 45 46 54 0a 20 20 20  KEY*.   LEFT.   
13390 4c 49 4b 45 2a 0a 20 20 20 4c 49 4d 49 54 0a 20  LIKE*.   LIMIT. 
133a0 20 20 4d 41 54 43 48 2a 0a 20 20 20 4e 41 54 55    MATCH*.   NATU
133b0 52 41 4c 0a 20 20 20 4e 4f 54 0a 20 20 20 4e 4f  RAL.   NOT.   NO
133c0 54 4e 55 4c 4c 0a 20 20 20 4e 55 4c 4c 0a 20 20  TNULL.   NULL.  
133d0 20 4f 46 2a 0a 20 20 20 4f 46 46 53 45 54 2a 0a   OF*.   OFFSET*.
133e0 20 20 20 4f 4e 0a 20 20 20 4f 52 0a 20 20 20 4f     ON.   OR.   O
133f0 52 44 45 52 0a 20 20 20 4f 55 54 45 52 0a 20 20  RDER.   OUTER.  
13400 20 50 4c 41 4e 2a 0a 20 20 20 50 52 41 47 4d 41   PLAN*.   PRAGMA
13410 2a 0a 20 20 20 50 52 49 4d 41 52 59 0a 20 20 20  *.   PRIMARY.   
13420 51 55 45 52 59 2a 0a 20 20 20 52 41 49 53 45 2a  QUERY*.   RAISE*
13430 0a 20 20 20 52 45 46 45 52 45 4e 43 45 53 0a 20  .   REFERENCES. 
13440 20 20 52 45 47 45 58 50 0a 20 20 20 52 45 49 4e    REGEXP.   REIN
13450 44 45 58 2a 0a 20 20 20 52 45 4e 41 4d 45 2a 0a  DEX*.   RENAME*.
13460 20 20 20 52 45 50 4c 41 43 45 2a 0a 20 20 20 52     REPLACE*.   R
13470 45 53 54 52 49 43 54 2a 0a 20 20 20 52 49 47 48  ESTRICT*.   RIGH
13480 54 0a 20 20 20 52 4f 4c 4c 42 41 43 4b 0a 20 20  T.   ROLLBACK.  
13490 20 52 4f 57 2a 0a 20 20 20 53 45 4c 45 43 54 0a   ROW*.   SELECT.
134a0 20 20 20 53 45 54 0a 20 20 20 54 41 42 4c 45 0a     SET.   TABLE.
134b0 20 20 20 54 45 4d 50 2a 0a 20 20 20 54 45 4d 50     TEMP*.   TEMP
134c0 4f 52 41 52 59 2a 0a 20 20 20 54 48 45 4e 0a 20  ORARY*.   THEN. 
134d0 20 20 54 4f 0a 20 20 20 54 52 41 4e 53 41 43 54    TO.   TRANSACT
134e0 49 4f 4e 0a 20 20 20 54 52 49 47 47 45 52 2a 0a  ION.   TRIGGER*.
134f0 20 20 20 55 4e 49 4f 4e 0a 20 20 20 55 4e 49 51     UNION.   UNIQ
13500 55 45 0a 20 20 20 55 50 44 41 54 45 0a 20 20 20  UE.   UPDATE.   
13510 55 53 49 4e 47 0a 20 20 20 56 41 43 55 55 4d 2a  USING.   VACUUM*
13520 0a 20 20 20 56 41 4c 55 45 53 0a 20 20 20 56 49  .   VALUES.   VI
13530 45 57 2a 0a 20 20 20 56 49 52 54 55 41 4c 2a 0a  EW*.   VIRTUAL*.
13540 20 20 20 57 48 45 4e 0a 20 20 20 57 48 45 52 45     WHEN.   WHERE
13550 0a 7d 5d 0a 0a 68 64 5f 70 75 74 73 20 7b 3c 44  .}]..hd_puts {<D
13560 49 56 20 63 6c 61 73 73 3d 22 70 64 66 5f 73 65  IV class="pdf_se
13570 63 74 69 6f 6e 22 3e 7d 0a 53 65 63 74 69 6f 6e  ction">}.Section
13580 20 7b 53 51 4c 69 74 65 20 4b 65 79 77 6f 72 64   {SQLite Keyword
13590 73 7d 20 6b 65 79 77 6f 72 64 73 20 7b 7b 53 51  s} keywords {{SQ
135a0 4c 20 6b 65 79 77 6f 72 64 7d 20 7b 53 51 4c 20  L keyword} {SQL 
135b0 6b 65 79 77 6f 72 64 73 7d 7d 0a 68 64 5f 70 75  keywords}}.hd_pu
135c0 74 73 20 7b 3c 2f 44 49 56 3e 7d 0a 3c 2f 74 63  ts {</DIV>}.</tc
135d0 6c 3e 0a 0a 3c 70 3e 54 68 65 20 53 51 4c 20 73  l>..<p>The SQL s
135e0 74 61 6e 64 61 72 64 20 73 70 65 63 69 66 69 65  tandard specifie
135f0 73 20 61 20 68 75 67 65 20 6e 75 6d 62 65 72 20  s a huge number 
13600 6f 66 20 6b 65 79 77 6f 72 64 73 20 77 68 69 63  of keywords whic
13610 68 20 6d 61 79 20 6e 6f 74 0a 62 65 20 75 73 65  h may not.be use
13620 64 20 61 73 20 74 68 65 20 6e 61 6d 65 73 20 6f  d as the names o
13630 66 20 74 61 62 6c 65 73 2c 20 69 6e 64 69 63 65  f tables, indice
13640 73 2c 20 63 6f 6c 75 6d 6e 73 2c 20 64 61 74 61  s, columns, data
13650 62 61 73 65 73 2c 20 75 73 65 72 2d 64 65 66 69  bases, user-defi
13660 6e 65 64 0a 66 75 6e 63 74 69 6f 6e 73 2c 20 63  ned.functions, c
13670 6f 6c 6c 61 74 69 6f 6e 73 2c 20 76 69 72 74 75  ollations, virtu
13680 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 73  al table modules
13690 2c 20 6f 72 20 61 6e 79 20 6f 74 68 65 72 20 6e  , or any other n
136a0 61 6d 65 64 20 6f 62 6a 65 63 74 2e 0a 54 68 65  amed object..The
136b0 20 6c 69 73 74 20 6f 66 20 6b 65 79 77 6f 72 64   list of keyword
136c0 73 20 69 73 20 73 6f 20 6c 6f 6e 67 20 74 68 61  s is so long tha
136d0 74 20 66 65 77 20 70 65 6f 70 6c 65 20 63 61 6e  t few people can
136e0 20 72 65 6d 65 6d 62 65 72 20 74 68 65 6d 20 61   remember them a
136f0 6c 6c 2e 0a 46 6f 72 20 6d 6f 73 74 20 53 51 4c  ll..For most SQL
13700 20 63 6f 64 65 2c 20 79 6f 75 72 20 73 61 66 65   code, your safe
13710 73 74 20 62 65 74 20 69 73 20 74 6f 20 6e 65 76  st bet is to nev
13720 65 72 20 75 73 65 20 61 6e 79 20 45 6e 67 6c 69  er use any Engli
13730 73 68 20 6c 61 6e 67 75 61 67 65 0a 77 6f 72 64  sh language.word
13740 20 61 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   as the name of 
13750 61 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 6f  a user-defined o
13760 62 6a 65 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49  bject.</p>..<p>I
13770 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 75 73  f you want to us
13780 65 20 61 20 6b 65 79 77 6f 72 64 20 61 73 20 61  e a keyword as a
13790 20 6e 61 6d 65 2c 20 79 6f 75 20 6e 65 65 64 20   name, you need 
137a0 74 6f 20 71 75 6f 74 65 20 69 74 2e 20 20 54 68  to quote it.  Th
137b0 65 72 65 0a 61 72 65 20 74 68 72 65 65 20 77 61  ere.are three wa
137c0 79 73 20 6f 66 20 71 75 6f 74 69 6e 67 20 6b 65  ys of quoting ke
137d0 79 77 6f 72 64 73 20 69 6e 20 53 51 4c 69 74 65  ywords in SQLite
137e0 3a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 3c 62 6c 6f 63  :</p>..<p>.<bloc
137f0 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 20 63  kquote>.<table c
13800 6c 61 73 73 3d 22 70 64 66 5f 66 75 6e 63 74 69  lass="pdf_functi
13810 6f 6e 73 22 3e 0a 3c 74 72 3e 09 3c 74 64 20 76  ons">.<tr>.<td v
13820 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 27  align="top"><b>'
13830 6b 65 79 77 6f 72 64 27 3c 2f 62 3e 3c 2f 74 64  keyword'</b></td
13840 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e  ><td width="20">
13850 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65 79  </td>..<td>A key
13860 77 6f 72 64 20 69 6e 20 73 69 6e 67 6c 65 20 71  word in single q
13870 75 6f 74 65 73 20 69 73 20 69 6e 74 65 72 70 72  uotes is interpr
13880 65 74 65 64 20 61 73 20 61 20 6c 69 74 65 72 61  eted as a litera
13890 6c 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20  l string.       
138a0 20 69 66 20 69 74 20 6f 63 63 75 72 73 20 69 6e   if it occurs in
138b0 20 61 20 63 6f 6e 74 65 78 74 20 77 68 65 72 65   a context where
138c0 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61   a string litera
138d0 6c 20 69 73 20 61 6c 6c 6f 77 65 64 2c 20 6f 74  l is allowed, ot
138e0 68 65 72 77 69 73 65 0a 09 69 74 20 69 73 20 75  herwise..it is u
138f0 6e 64 65 72 73 74 6f 6f 64 20 61 73 20 61 6e 20  nderstood as an 
13900 69 64 65 6e 74 69 66 69 65 72 2e 3c 2f 74 64 3e  identifier.</td>
13910 3c 2f 74 72 3e 0a 3c 74 72 3e 09 3c 74 64 20 76  </tr>.<tr>.<td v
13920 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 22  align="top"><b>"
13930 6b 65 79 77 6f 72 64 22 3c 2f 62 3e 3c 2f 74 64  keyword"</b></td
13940 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e  ><td></td>..<td>
13950 41 20 6b 65 79 77 6f 72 64 20 69 6e 20 64 6f 75  A keyword in dou
13960 62 6c 65 2d 71 75 6f 74 65 73 20 69 73 20 69 6e  ble-quotes is in
13970 74 65 72 70 72 65 74 65 64 20 61 73 20 61 6e 20  terpreted as an 
13980 69 64 65 6e 74 69 66 69 65 72 20 69 66 0a 20 20  identifier if.  
13990 20 20 20 20 20 20 69 74 20 6d 61 74 63 68 65 73        it matches
139a0 20 61 20 6b 6e 6f 77 6e 20 69 64 65 6e 74 69 66   a known identif
139b0 69 65 72 2e 20 20 4f 74 68 65 72 77 69 73 65 20  ier.  Otherwise 
139c0 69 74 20 69 73 20 69 6e 74 65 72 70 72 65 74 65  it is interprete
139d0 64 20 61 73 20 61 0a 20 20 20 20 20 20 20 20 73  d as a.        s
139e0 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 2e 3c 2f  tring literal.</
139f0 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 09 3c 74  td></tr>.<tr>.<t
13a00 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c  d valign="top"><
13a10 62 3e 26 23 39 31 3b 6b 65 79 77 6f 72 64 26 23  b>&#91;keyword&#
13a20 39 33 3b 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e  93;</b></td><td>
13a30 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65 79  </td>..<td>A key
13a40 77 6f 72 64 20 65 6e 63 6c 6f 73 65 64 20 69 6e  word enclosed in
13a50 20 73 71 75 61 72 65 20 62 72 61 63 6b 65 74 73   square brackets
13a60 20 69 73 20 61 6c 77 61 79 73 20 75 6e 64 65 72   is always under
13a70 73 74 6f 6f 64 20 61 73 0a 20 20 20 20 20 20 20  stood as.       
13a80 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 2e 20   an identifier. 
13a90 20 54 68 69 73 20 69 73 20 6e 6f 74 20 73 74 61   This is not sta
13aa0 6e 64 61 72 64 20 53 51 4c 2e 20 20 54 68 69 73  ndard SQL.  This
13ab0 20 71 75 6f 74 69 6e 67 20 6d 65 63 68 61 6e 69   quoting mechani
13ac0 73 6d 0a 20 20 20 20 20 20 20 20 69 73 20 75 73  sm.        is us
13ad0 65 64 20 62 79 20 4d 53 20 41 63 63 65 73 73 20  ed by MS Access 
13ae0 61 6e 64 20 53 51 4c 20 53 65 72 76 65 72 20 61  and SQL Server a
13af0 6e 64 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69  nd is included i
13b00 6e 20 53 51 4c 69 74 65 20 66 6f 72 0a 20 20 20  n SQLite for.   
13b10 20 20 20 20 20 63 6f 6d 70 61 74 69 62 69 6c 69       compatibili
13b20 74 79 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 2f  ty.</td></tr>.</
13b30 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75  table>.</blockqu
13b40 6f 74 65 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 51 75  ote>.</p>..<p>Qu
13b50 6f 74 65 64 20 6b 65 79 77 6f 72 64 73 20 61 72  oted keywords ar
13b60 65 20 75 6e 61 65 73 74 68 65 74 69 63 2e 0a 54  e unaesthetic..T
13b70 6f 20 68 65 6c 70 20 79 6f 75 20 61 76 6f 69 64  o help you avoid
13b80 20 74 68 65 6d 2c 20 53 51 4c 69 74 65 20 61 6c   them, SQLite al
13b90 6c 6f 77 73 20 6d 61 6e 79 20 6b 65 79 77 6f 72  lows many keywor
13ba0 64 73 20 74 6f 20 62 65 20 75 73 65 64 20 75 6e  ds to be used un
13bb0 71 75 6f 74 65 64 0a 61 73 20 74 68 65 20 6e 61  quoted.as the na
13bc0 6d 65 73 20 6f 66 20 64 61 74 61 62 61 73 65 73  mes of databases
13bd0 2c 20 74 61 62 6c 65 73 2c 20 69 6e 64 69 63 65  , tables, indice
13be0 73 2c 20 74 72 69 67 67 65 72 73 2c 20 76 69 65  s, triggers, vie
13bf0 77 73 2c 20 63 6f 6c 75 6d 6e 73 2c 0a 75 73 65  ws, columns,.use
13c00 72 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69  r-defined functi
13c10 6f 6e 73 2c 20 63 6f 6c 6c 61 74 69 6f 6e 73 2c  ons, collations,
13c20 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
13c30 73 65 73 2c 20 61 6e 64 20 76 69 72 74 75 61 6c  ses, and virtual
13c40 0a 66 75 6e 63 74 69 6f 6e 20 6d 6f 64 75 6c 65  .function module
13c50 73 2e 0a 49 6e 20 74 68 65 20 6c 69 73 74 20 6f  s..In the list o
13c60 66 20 6b 65 79 77 6f 72 64 73 20 74 68 61 74 20  f keywords that 
13c70 66 6f 6c 6c 6f 77 73 2c 20 74 68 6f 73 65 20 74  follows, those t
13c80 68 61 74 20 63 61 6e 20 62 65 20 75 73 65 64 20  hat can be used 
13c90 61 73 20 69 64 65 6e 74 69 66 69 65 72 73 0a 61  as identifiers.a
13ca0 72 65 20 73 68 6f 77 6e 20 69 6e 20 61 6e 20 69  re shown in an i
13cb0 74 61 6c 69 63 20 66 6f 6e 74 2e 20 20 4b 65 79  talic font.  Key
13cc0 77 6f 72 64 73 20 74 68 61 74 20 6d 75 73 74 20  words that must 
13cd0 62 65 20 71 75 6f 74 65 64 20 69 6e 20 6f 72 64  be quoted in ord
13ce0 65 72 20 74 6f 20 62 65 0a 75 73 65 64 20 61 73  er to be.used as
13cf0 20 69 64 65 6e 74 69 66 69 65 72 73 20 61 72 65   identifiers are
13d00 20 73 68 6f 77 6e 20 69 6e 20 62 6f 6c 64 2e 3c   shown in bold.<
13d10 2f 70 3e 0a 0a 3c 70 3e 0a 53 51 4c 69 74 65 20  /p>..<p>.SQLite 
13d20 61 64 64 73 20 6e 65 77 20 6b 65 79 77 6f 72 64  adds new keyword
13d30 73 20 66 72 6f 6d 20 74 69 6d 65 20 74 6f 20 74  s from time to t
13d40 69 6d 65 20 77 68 65 6e 20 69 74 20 74 61 6b 65  ime when it take
13d50 20 6f 6e 20 6e 65 77 20 66 65 61 74 75 72 65 73   on new features
13d60 2e 0a 53 6f 20 74 6f 20 70 72 65 76 65 6e 74 20  ..So to prevent 
13d70 79 6f 75 72 20 63 6f 64 65 20 66 72 6f 6d 20 62  your code from b
13d80 65 69 6e 67 20 62 72 6f 6b 65 6e 20 62 79 20 66  eing broken by f
13d90 75 74 75 72 65 20 65 6e 68 61 6e 63 65 6d 65 6e  uture enhancemen
13da0 74 73 2c 20 79 6f 75 20 73 68 6f 75 6c 64 0a 6e  ts, you should.n
13db0 6f 72 6d 61 6c 6c 79 20 71 75 6f 74 65 20 61 6e  ormally quote an
13dc0 79 20 69 6e 64 65 6e 74 69 66 69 65 72 20 74 68  y indentifier th
13dd0 61 74 20 69 73 20 61 6e 20 45 6e 67 6c 69 73 68  at is an English
13de0 20 6c 61 6e 67 75 61 67 65 20 77 6f 72 64 2c 20   language word, 
13df0 65 76 65 6e 20 69 66 0a 79 6f 75 20 64 6f 20 6e  even if.you do n
13e00 6f 74 20 68 61 76 65 20 74 6f 2e 0a 3c 2f 70 3e  ot have to..</p>
13e10 0a 0a 3c 70 3e 0a 54 68 65 20 66 6f 6c 6c 6f 77  ..<p>.The follow
13e20 69 6e 67 20 61 72 65 20 74 68 65 20 6b 65 79 77  ing are the keyw
13e30 6f 72 64 73 20 63 75 72 72 65 6e 74 6c 79 20 72  ords currently r
13e40 65 63 6f 67 6e 69 7a 65 64 20 62 79 20 53 51 4c  ecognized by SQL
13e50 69 74 65 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  ite:.</p>..<bloc
13e60 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 20 77  kquote>.<table w
13e70 69 64 74 68 3d 22 31 30 30 25 22 20 63 6c 61 73  idth="100%" clas
13e80 73 3d 22 70 64 66 5f 6b 65 79 77 6f 72 64 73 22  s="pdf_keywords"
13e90 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e  >.<tr>.<td align
13ea0 3d 22 6c 65 66 74 22 20 76 61 6c 69 67 6e 3d 22  ="left" valign="
13eb0 74 6f 70 22 20 77 69 64 74 68 3d 22 32 30 25 22  top" width="20%"
13ec0 3e 0a 0a 3c 74 63 6c 3e 0a 73 65 74 20 6e 20 5b  >..<tcl>.set n [
13ed0 6c 6c 65 6e 67 74 68 20 24 6b 65 79 77 6f 72 64  llength $keyword
13ee0 5f 6c 69 73 74 5d 0a 73 65 74 20 6e 43 6f 6c 20  _list].set nCol 
13ef0 35 0a 73 65 74 20 6e 52 6f 77 20 5b 65 78 70 72  5.set nRow [expr
13f00 20 7b 28 24 6e 2b 24 6e 43 6f 6c 2d 31 29 2f 24   {($n+$nCol-1)/$
13f10 6e 43 6f 6c 7d 5d 0a 73 65 74 20 69 20 30 0a 66  nCol}].set i 0.f
13f20 6f 72 65 61 63 68 20 77 6f 72 64 20 24 6b 65 79  oreach word $key
13f30 77 6f 72 64 5f 6c 69 73 74 20 7b 0a 20 20 69 66  word_list {.  if
13f40 20 7b 5b 73 74 72 69 6e 67 20 69 6e 64 65 78 20   {[string index 
13f50 24 77 6f 72 64 20 65 6e 64 5d 3d 3d 22 2a 22 7d  $word end]=="*"}
13f60 20 7b 0a 20 20 20 20 73 65 74 20 77 6f 72 64 20   {.    set word 
13f70 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 77  [string range $w
13f80 6f 72 64 20 30 20 65 6e 64 2d 31 5d 0a 20 20 20  ord 0 end-1].   
13f90 20 73 65 74 20 66 6f 6e 74 20 69 0a 20 20 7d 20   set font i.  } 
13fa0 65 6c 73 65 20 7b 0a 20 20 20 20 73 65 74 20 66  else {.    set f
13fb0 6f 6e 74 20 62 0a 20 20 7d 0a 20 20 69 66 20 7b  ont b.  }.  if {
13fc0 24 69 3d 3d 24 6e 52 6f 77 7d 20 7b 0a 20 20 20  $i==$nRow} {.   
13fd0 20 68 64 5f 70 75 74 73 20 22 3c 2f 74 64 3e 3c   hd_puts "</td><
13fe0 74 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c  td valign=\"top\
13ff0 22 20 61 6c 69 67 6e 3d 5c 22 6c 65 66 74 5c 22  " align=\"left\"
14000 20 77 69 64 74 68 3d 5c 22 32 30 25 5c 22 3e 22   width=\"20%\">"
14010 0a 20 20 20 20 73 65 74 20 69 20 31 0a 20 20 7d  .    set i 1.  }
14020 20 65 6c 73 65 20 7b 0a 20 20 20 20 69 6e 63 72   else {.    incr
14030 20 69 0a 20 20 7d 0a 20 20 68 64 5f 70 75 74 73   i.  }.  hd_puts
14040 20 22 3c 24 66 6f 6e 74 3e 24 77 6f 72 64 3c 2f   "<$font>$word</
14050 24 66 6f 6e 74 3e 3c 62 72 3e 22 0a 7d 0a 3c 2f  $font><br>".}.</
14060 74 63 6c 3e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c  tcl>.</td></tr><
14070 2f 74 61 62 6c 65 3e 3c 2f 62 6c 6f 63 6b 71 75  /table></blockqu
14080 6f 74 65 3e 0a 0a 3c 68 32 3e 53 70 65 63 69 61  ote>..<h2>Specia
14090 6c 20 6e 61 6d 65 73 3c 2f 68 32 3e 0a 0a 3c 70  l names</h2>..<p
140a0 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61  >The following a
140b0 72 65 20 6e 6f 74 20 6b 65 79 77 6f 72 64 73 20  re not keywords 
140c0 69 6e 20 53 51 4c 69 74 65 2c 20 62 75 74 20 61  in SQLite, but a
140d0 72 65 20 75 73 65 64 20 61 73 20 6e 61 6d 65 73  re used as names
140e0 20 6f 66 20 0a 73 79 73 74 65 6d 20 6f 62 6a 65   of .system obje
140f0 63 74 73 2e 20 20 54 68 65 79 20 63 61 6e 20 62  cts.  They can b
14100 65 20 75 73 65 64 20 61 73 20 61 6e 20 69 64 65  e used as an ide
14110 6e 74 69 66 69 65 72 20 66 6f 72 20 61 20 64 69  ntifier for a di
14120 66 66 65 72 65 6e 74 20 0a 74 79 70 65 20 6f 66  fferent .type of
14130 20 6f 62 6a 65 63 74 2e 3c 2f 70 3e 0a 0a 3c 62   object.</p>..<b
14140 6c 6f 63 6b 71 75 6f 74 65 20 63 6c 61 73 73 3d  lockquote class=
14150 22 70 64 66 5f 6b 65 79 77 6f 72 64 73 22 3e 3c  "pdf_keywords"><
14160 62 3e 0a 20 20 5f 52 4f 57 49 44 5f 3c 62 72 3e  b>.  _ROWID_<br>
14170 0a 20 20 4d 41 49 4e 3c 62 72 3e 0a 20 20 4f 49  .  MAIN<br>.  OI
14180 44 3c 62 72 3e 0a 20 20 52 4f 57 49 44 3c 62 72  D<br>.  ROWID<br
14190 3e 0a 20 20 53 51 4c 49 54 45 5f 4d 41 53 54 45  >.  SQLITE_MASTE
141a0 52 3c 62 72 3e 0a 20 20 53 51 4c 49 54 45 5f 53  R<br>.  SQLITE_S
141b0 45 51 55 45 4e 43 45 3c 62 72 3e 0a 20 20 53 51  EQUENCE<br>.  SQ
141c0 4c 49 54 45 5f 54 45 4d 50 5f 4d 41 53 54 45 52  LITE_TEMP_MASTER
141d0 3c 62 72 3e 0a 20 20 54 45 4d 50 3c 62 72 3e 0a  <br>.  TEMP<br>.
141e0 3c 2f 62 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  </b></blockquote
141f0 3e 0a                                            >.