Documentation Source Text

Hex Artifact Content
Login

Artifact 97bcc901406c7685a610bf3793cdc50633ea4d17:


0000: 3c 74 69 74 6c 65 3e 51 75 65 72 79 20 4c 61 6e  <title>Query Lan
0010: 67 75 61 67 65 20 55 6e 64 65 72 73 74 6f 6f 64  guage Understood
0020: 20 62 79 20 53 51 4c 69 74 65 3c 2f 74 69 74 6c   by SQLite</titl
0030: 65 3e 0a 0a 3c 68 32 3e 53 51 4c 20 41 73 20 55  e>..<h2>SQL As U
0040: 6e 64 65 72 73 74 6f 6f 64 20 42 79 20 53 51 4c  nderstood By SQL
0050: 69 74 65 3c 2f 68 32 3e 0a 0a 3c 70 3e 53 51 4c  ite</h2>..<p>SQL
0060: 69 74 65 20 75 6e 64 65 72 73 74 61 6e 64 73 20  ite understands 
0070: 6d 6f 73 74 20 6f 66 20 74 68 65 20 73 74 61 6e  most of the stan
0080: 64 61 72 64 20 53 51 4c 0a 6c 61 6e 67 75 61 67  dard SQL.languag
0090: 65 2e 20 20 42 75 74 20 69 74 20 64 6f 65 73 20  e.  But it does 
00a0: 3c 61 20 68 72 65 66 3d 22 6f 6d 69 74 74 65 64  <a href="omitted
00b0: 2e 68 74 6d 6c 22 3e 6f 6d 69 74 20 73 6f 6d 65  .html">omit some
00c0: 20 66 65 61 74 75 72 65 73 3c 2f 61 3e 0a 77 68   features</a>.wh
00d0: 69 6c 65 20 61 74 20 74 68 65 20 73 61 6d 65 20  ile at the same 
00e0: 74 69 6d 65 0a 61 64 64 69 6e 67 20 61 20 66 65  time.adding a fe
00f0: 77 20 66 65 61 74 75 72 65 73 20 6f 66 20 69 74  w features of it
0100: 73 20 6f 77 6e 2e 20 20 54 68 69 73 20 64 6f 63  s own.  This doc
0110: 75 6d 65 6e 74 20 61 74 74 65 6d 70 74 73 20 74  ument attempts t
0120: 6f 0a 64 65 73 63 72 69 62 65 20 70 72 65 63 69  o.describe preci
0130: 73 65 6c 79 20 77 68 61 74 20 70 61 72 74 73 20  sely what parts 
0140: 6f 66 20 74 68 65 20 53 51 4c 20 6c 61 6e 67 75  of the SQL langu
0150: 61 67 65 20 53 51 4c 69 74 65 20 64 6f 65 73 0a  age SQLite does.
0160: 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 73 75 70  and does not sup
0170: 70 6f 72 74 2e 20 20 41 20 6c 69 73 74 20 6f 66  port.  A list of
0180: 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 6b   <a href="lang_k
0190: 65 79 77 6f 72 64 73 2e 68 74 6d 6c 22 3e 6b 65  eywords.html">ke
01a0: 79 77 6f 72 64 73 3c 2f 61 3e 20 69 73 20 0a 61  ywords</a> is .a
01b0: 6c 73 6f 20 70 72 6f 76 69 64 65 64 2e 20 20 54  lso provided.  T
01c0: 68 65 20 53 51 4c 20 6c 61 6e 67 75 61 67 65 20  he SQL language 
01d0: 73 79 6e 74 61 78 20 69 73 20 64 65 73 63 72 69  syntax is descri
01e0: 62 65 64 20 62 79 0a 3c 61 20 68 72 65 66 3d 22  bed by.<a href="
01f0: 73 79 6e 74 61 78 64 69 61 67 72 61 6d 73 2e 68  syntaxdiagrams.h
0200: 74 6d 6c 22 3e 73 79 6e 74 61 78 20 64 69 61 67  tml">syntax diag
0210: 72 61 6d 73 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 3c  rams</a>.</p>..<
0220: 70 3e 49 6e 20 61 6c 6c 20 6f 66 20 74 68 65 20  p>In all of the 
0230: 73 79 6e 74 61 78 20 64 69 61 67 72 61 6d 73 20  syntax diagrams 
0240: 74 68 61 74 20 66 6f 6c 6c 6f 77 2c 20 6c 69 74  that follow, lit
0250: 65 72 61 6c 20 74 65 78 74 20 69 73 20 73 68 6f  eral text is sho
0260: 77 6e 20 69 6e 0a 62 6f 6c 64 20 62 6c 75 65 2e  wn in.bold blue.
0270: 20 20 4e 6f 6e 2d 74 65 72 6d 69 6e 61 6c 20 73    Non-terminal s
0280: 79 6d 62 6f 6c 73 20 61 72 65 20 73 68 6f 77 6e  ymbols are shown
0290: 20 69 6e 20 69 74 61 6c 69 63 20 72 65 64 2e 20   in italic red. 
02a0: 20 4f 70 65 72 61 74 6f 72 73 0a 74 68 61 74 20   Operators.that 
02b0: 61 72 65 20 70 61 72 74 20 6f 66 20 74 68 65 20  are part of the 
02c0: 73 79 6e 74 61 63 74 69 63 20 6d 61 72 6b 75 70  syntactic markup
02d0: 20 69 74 73 65 6c 66 20 61 72 65 20 73 68 6f 77   itself are show
02e0: 6e 20 69 6e 20 62 6c 61 63 6b 20 72 6f 6d 61 6e  n in black roman
02f0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69 73 20 64  .</p>..<p>This d
0300: 6f 63 75 6d 65 6e 74 20 69 73 20 6a 75 73 74 20  ocument is just 
0310: 61 6e 20 6f 76 65 72 76 69 65 77 20 6f 66 20 74  an overview of t
0320: 68 65 20 53 51 4c 20 73 79 6e 74 61 78 20 69 6d  he SQL syntax im
0330: 70 6c 65 6d 65 6e 74 65 64 0a 62 79 20 53 51 4c  plemented.by SQL
0340: 69 74 65 2e 20 20 4d 61 6e 79 20 6c 6f 77 2d 6c  ite.  Many low-l
0350: 65 76 65 6c 20 70 72 6f 64 75 63 74 69 6f 6e 73  evel productions
0360: 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 20 20 46   are omitted.  F
0370: 6f 72 20 64 65 74 61 69 6c 65 64 20 69 6e 66 6f  or detailed info
0380: 72 6d 61 74 69 6f 6e 0a 6f 6e 20 74 68 65 20 6c  rmation.on the l
0390: 61 6e 67 75 61 67 65 20 74 68 61 74 20 53 51 4c  anguage that SQL
03a0: 69 74 65 20 75 6e 64 65 72 73 74 61 6e 64 73 2c  ite understands,
03b0: 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 73 6f   refer to the so
03c0: 75 72 63 65 20 63 6f 64 65 20 61 6e 64 0a 74 68  urce code and.th
03d0: 65 20 67 72 61 6d 6d 61 72 20 66 69 6c 65 20 22  e grammar file "
03e0: 70 61 72 73 65 2e 79 22 2e 3c 2f 70 3e 0a 0a 3c  parse.y".</p>..<
03f0: 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  p>The following 
0400: 73 79 6e 74 61 78 20 64 6f 63 75 6d 65 6e 74 61  syntax documenta
0410: 74 69 6f 6e 20 74 6f 70 69 63 73 20 61 72 65 20  tion topics are 
0420: 61 76 61 69 6c 61 62 6c 65 3a 3c 2f 70 3e 0a 0a  available:</p>..
0430: 3c 74 61 62 6c 65 20 77 69 64 74 68 3d 22 31 30  <table width="10
0440: 30 25 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d  0%" cellpadding=
0450: 22 35 22 20 62 6f 72 64 65 72 3d 22 30 22 3e 0a  "5" border="0">.
0460: 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22  <tr><td valign="
0470: 74 6f 70 22 3e 3c 75 6c 3e 0a 0a 3c 74 63 6c 3e  top"><ul>..<tcl>
0480: 0a 73 65 74 20 69 20 30 0a 73 65 74 20 6c 61 6e  .set i 0.set lan
0490: 67 5f 73 65 63 74 69 6f 6e 5f 6c 69 73 74 20 7b  g_section_list {
04a0: 0a 20 20 7b 7b 43 52 45 41 54 45 20 54 41 42 4c  .  {{CREATE TABL
04b0: 45 7d 20 63 72 65 61 74 65 74 61 62 6c 65 7d 0a  E} createtable}.
04c0: 20 20 7b 7b 43 52 45 41 54 45 20 56 49 52 54 55    {{CREATE VIRTU
04d0: 41 4c 20 54 41 42 4c 45 7d 20 63 72 65 61 74 65  AL TABLE} create
04e0: 76 74 61 62 7d 0a 20 20 7b 7b 43 52 45 41 54 45  vtab}.  {{CREATE
04f0: 20 49 4e 44 45 58 7d 20 63 72 65 61 74 65 69 6e   INDEX} createin
0500: 64 65 78 7d 0a 20 20 7b 56 41 43 55 55 4d 20 76  dex}.  {VACUUM v
0510: 61 63 75 75 6d 7d 0a 20 20 7b 7b 44 52 4f 50 20  acuum}.  {{DROP 
0520: 54 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65  TABLE} droptable
0530: 7d 0a 20 20 7b 7b 44 52 4f 50 20 49 4e 44 45 58  }.  {{DROP INDEX
0540: 7d 20 64 72 6f 70 69 6e 64 65 78 7d 0a 20 20 7b  } dropindex}.  {
0550: 49 4e 53 45 52 54 20 69 6e 73 65 72 74 7d 0a 20  INSERT insert}. 
0560: 20 7b 52 45 50 4c 41 43 45 20 72 65 70 6c 61 63   {REPLACE replac
0570: 65 7d 0a 20 20 7b 44 45 4c 45 54 45 20 64 65 6c  e}.  {DELETE del
0580: 65 74 65 7d 0a 20 20 7b 55 50 44 41 54 45 20 75  ete}.  {UPDATE u
0590: 70 64 61 74 65 7d 0a 20 20 7b 53 45 4c 45 43 54  pdate}.  {SELECT
05a0: 20 73 65 6c 65 63 74 7d 0a 20 20 7b 63 6f 6d 6d   select}.  {comm
05b0: 65 6e 74 20 63 6f 6d 6d 65 6e 74 7d 0a 20 20 7b  ent comment}.  {
05c0: 45 58 50 4c 41 49 4e 20 65 78 70 6c 61 69 6e 7d  EXPLAIN explain}
05d0: 0a 20 20 7b 65 78 70 72 65 73 73 69 6f 6e 20 65  .  {expression e
05e0: 78 70 72 7d 0a 20 20 7b 7b 42 45 47 49 4e 20 54  xpr}.  {{BEGIN T
05f0: 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e  RANSACTION} tran
0600: 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 7b 43 4f 4d  saction}.  {{COM
0610: 4d 49 54 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d  MIT TRANSACTION}
0620: 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20   transaction}.  
0630: 7b 7b 45 4e 44 20 54 52 41 4e 53 41 43 54 49 4f  {{END TRANSACTIO
0640: 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a  N} transaction}.
0650: 20 20 7b 7b 52 4f 4c 4c 42 41 43 4b 20 54 52 41    {{ROLLBACK TRA
0660: 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61  NSACTION} transa
0670: 63 74 69 6f 6e 7d 0a 20 20 7b 50 52 41 47 4d 41  ction}.  {PRAGMA
0680: 20 70 72 61 67 6d 61 2e 68 74 6d 6c 7d 0a 20 20   pragma.html}.  
0690: 7b 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c  {{ON CONFLICT cl
06a0: 61 75 73 65 7d 20 63 6f 6e 66 6c 69 63 74 7d 0a  ause} conflict}.
06b0: 20 20 7b 7b 43 52 45 41 54 45 20 56 49 45 57 7d    {{CREATE VIEW}
06c0: 20 63 72 65 61 74 65 76 69 65 77 7d 0a 20 20 7b   createview}.  {
06d0: 7b 44 52 4f 50 20 56 49 45 57 7d 20 64 72 6f 70  {DROP VIEW} drop
06e0: 76 69 65 77 7d 0a 20 20 7b 7b 43 52 45 41 54 45  view}.  {{CREATE
06f0: 20 54 52 49 47 47 45 52 7d 20 63 72 65 61 74 65   TRIGGER} create
0700: 74 72 69 67 67 65 72 7d 0a 20 20 7b 7b 44 52 4f  trigger}.  {{DRO
0710: 50 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70 74  P TRIGGER} dropt
0720: 72 69 67 67 65 72 7d 0a 20 20 7b 7b 41 54 54 41  rigger}.  {{ATTA
0730: 43 48 20 44 41 54 41 42 41 53 45 7d 20 61 74 74  CH DATABASE} att
0740: 61 63 68 7d 0a 20 20 7b 7b 44 45 54 41 43 48 20  ach}.  {{DETACH 
0750: 44 41 54 41 42 41 53 45 7d 20 64 65 74 61 63 68  DATABASE} detach
0760: 7d 0a 20 20 7b 52 45 49 4e 44 45 58 20 72 65 69  }.  {REINDEX rei
0770: 6e 64 65 78 7d 0a 20 20 7b 7b 41 4c 54 45 52 20  ndex}.  {{ALTER 
0780: 54 41 42 4c 45 7d 20 61 6c 74 65 72 74 61 62 6c  TABLE} altertabl
0790: 65 7d 0a 20 20 7b 7b 41 4e 41 4c 59 5a 45 7d 20  e}.  {{ANALYZE} 
07a0: 61 6e 61 6c 79 7a 65 7d 0a 20 20 7b 7b 49 4e 44  analyze}.  {{IND
07b0: 45 58 45 44 20 42 59 7d 20 69 6e 64 65 78 65 64  EXED BY} indexed
07c0: 62 79 7d 0a 20 20 7b 7b 61 67 67 72 65 67 61 74  by}.  {{aggregat
07d0: 65 20 66 75 6e 63 74 69 6f 6e 73 7d 20 61 67 67  e functions} agg
07e0: 66 75 6e 63 7d 0a 20 20 7b 7b 63 6f 72 65 20 66  func}.  {{core f
07f0: 75 6e 63 74 69 6f 6e 73 7d 20 63 6f 72 65 66 75  unctions} corefu
0800: 6e 63 7d 0a 20 20 7b 7b 64 61 74 65 20 61 6e 64  nc}.  {{date and
0810: 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 7d   time functions}
0820: 20 64 61 74 65 66 75 6e 63 7d 0a 20 20 7b 6b 65   datefunc}.  {ke
0830: 79 77 6f 72 64 73 20 6b 65 79 77 6f 72 64 73 7d  ywords keywords}
0840: 0a 7d 0a 73 65 74 20 6c 61 6e 67 5f 73 65 63 74  .}.set lang_sect
0850: 69 6f 6e 5f 62 72 65 61 6b 20 5b 65 78 70 72 20  ion_break [expr 
0860: 7b 28 5b 6c 6c 65 6e 67 74 68 20 24 6c 61 6e 67  {([llength $lang
0870: 5f 73 65 63 74 69 6f 6e 5f 6c 69 73 74 5d 2b 32  _section_list]+2
0880: 29 2f 33 7d 5d 0a 66 6f 72 65 61 63 68 20 7b 73  )/3}].foreach {s
0890: 65 63 74 69 6f 6e 7d 20 5b 6c 73 6f 72 74 20 2d  ection} [lsort -
08a0: 69 6e 64 65 78 20 30 20 2d 64 69 63 74 69 6f 6e  index 0 -diction
08b0: 61 72 79 20 24 6c 61 6e 67 5f 73 65 63 74 69 6f  ary $lang_sectio
08c0: 6e 5f 6c 69 73 74 5d 20 7b 0a 20 20 66 6f 72 65  n_list] {.  fore
08d0: 61 63 68 20 7b 73 5f 74 69 74 6c 65 20 73 5f 74  ach {s_title s_t
08e0: 61 67 7d 20 24 73 65 63 74 69 6f 6e 20 7b 7d 0a  ag} $section {}.
08f0: 20 20 69 66 20 7b 24 73 5f 74 61 67 3d 3d 22 70    if {$s_tag=="p
0900: 72 61 67 6d 61 2e 68 74 6d 6c 22 7d 20 7b 0a 20  ragma.html"} {. 
0910: 20 20 20 73 65 74 20 75 72 6c 20 24 73 5f 74 61     set url $s_ta
0920: 67 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20  g.  } else {.   
0930: 20 73 65 74 20 75 72 6c 20 6c 61 6e 67 5f 24 73   set url lang_$s
0940: 5f 74 61 67 2e 68 74 6d 6c 0a 20 20 7d 0a 20 20  _tag.html.  }.  
0950: 68 64 5f 70 75 74 73 20 22 3c 6c 69 3e 3c 61 20  hd_puts "<li><a 
0960: 68 72 65 66 3d 5c 22 24 75 72 6c 5c 22 3e 24 73  href=\"$url\">$s
0970: 5f 74 69 74 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 22  _title</a></li>"
0980: 0a 20 20 69 6e 63 72 20 69 0a 20 20 69 66 20 7b  .  incr i.  if {
0990: 24 69 3d 3d 24 6c 61 6e 67 5f 73 65 63 74 69 6f  $i==$lang_sectio
09a0: 6e 5f 62 72 65 61 6b 20 7c 7c 20 24 69 3d 3d 32  n_break || $i==2
09b0: 2a 24 6c 61 6e 67 5f 73 65 63 74 69 6f 6e 5f 62  *$lang_section_b
09c0: 72 65 61 6b 7d 20 7b 0a 20 20 20 20 68 64 5f 70  reak} {.    hd_p
09d0: 75 74 73 20 22 3c 2f 75 6c 3e 3c 2f 74 64 3e 3c  uts "</ul></td><
09e0: 74 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c  td valign=\"top\
09f0: 22 3e 3c 75 6c 3e 22 0a 20 20 7d 0a 7d 0a 3c 2f  "><ul>".  }.}.</
0a00: 74 63 6c 3e 0a 3c 2f 75 6c 3e 3c 2f 74 64 3e 3c  tcl>.</ul></td><
0a10: 2f 74 72 3e 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 70  /tr></table>..<p
0a20: 3e 54 68 65 20 67 65 6e 65 72 61 6c 20 6f 75 74  >The general out
0a30: 6c 69 6e 65 20 6f 66 20 61 6c 6c 20 53 51 4c 20  line of all SQL 
0a40: 73 74 61 74 65 6d 65 6e 74 73 20 75 6e 64 65 72  statements under
0a50: 73 74 6f 6f 64 20 62 79 0a 53 51 4c 69 74 65 20  stood by.SQLite 
0a60: 69 73 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f  is as follows:</
0a70: 70 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62 6c 65 44  p>..<tcl>BubbleD
0a80: 69 61 67 72 61 6d 20 73 71 6c 2d 73 74 6d 74 3c  iagram sql-stmt<
0a90: 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a 70 72 6f  /tcl>..<tcl>.pro
0aa0: 63 20 4f 70 65 72 61 74 6f 72 20 7b 6e 61 6d 65  c Operator {name
0ab0: 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c 66  } {.  return "<f
0ac0: 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32  ont color=\"#2c2
0ad0: 63 66 30 5c 22 3e 3c 62 69 67 3e 24 6e 61 6d 65  cf0\"><big>$name
0ae0: 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e 22 0a 7d  </big></font>".}
0af0: 0a 70 72 6f 63 20 4e 6f 6e 74 65 72 6d 69 6e 61  .proc Nontermina
0b00: 6c 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20 72 65 74  l {name} {.  ret
0b10: 75 72 6e 20 22 3c 69 3e 3c 66 6f 6e 74 20 63 6f  urn "<i><font co
0b20: 6c 6f 72 3d 5c 22 23 66 66 33 34 33 34 5c 22 3e  lor=\"#ff3434\">
0b30: 24 6e 61 6d 65 3c 2f 66 6f 6e 74 3e 3c 2f 69 3e  $name</font></i>
0b40: 22 0a 7d 0a 70 72 6f 63 20 4b 65 79 77 6f 72 64  ".}.proc Keyword
0b50: 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75   {name} {.  retu
0b60: 72 6e 20 22 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d  rn "<font color=
0b70: 5c 22 23 32 63 32 63 66 30 5c 22 3e 24 6e 61 6d  \"#2c2cf0\">$nam
0b80: 65 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f 63  e</font>".}.proc
0b90: 20 45 78 61 6d 70 6c 65 20 7b 74 65 78 74 7d 20   Example {text} 
0ba0: 7b 0a 20 20 68 64 5f 70 75 74 73 20 22 3c 62 6c  {.  hd_puts "<bl
0bb0: 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 24 74  ockquote><pre>$t
0bc0: 65 78 74 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  ext</pre></block
0bd0: 71 75 6f 74 65 3e 22 0a 7d 0a 0a 70 72 6f 63 20  quote>".}..proc 
0be0: 53 65 63 74 69 6f 6e 20 7b 6e 61 6d 65 20 6c 61  Section {name la
0bf0: 62 65 6c 20 6b 65 79 77 6f 72 64 73 7d 20 7b 0a  bel keywords} {.
0c00: 20 20 67 6c 6f 62 61 6c 20 44 4f 43 0a 20 20 68    global DOC.  h
0c10: 64 5f 63 6c 6f 73 65 5f 6d 61 69 6e 0a 20 20 68  d_close_main.  h
0c20: 64 5f 6f 70 65 6e 5f 6d 61 69 6e 20 6c 61 6e 67  d_open_main lang
0c30: 5f 24 6c 61 62 65 6c 2e 68 74 6d 6c 0a 20 20 68  _$label.html.  h
0c40: 64 5f 68 65 61 64 65 72 20 22 53 51 4c 69 74 65  d_header "SQLite
0c50: 20 51 75 65 72 79 20 4c 61 6e 67 75 61 67 65 3a   Query Language:
0c60: 20 24 6e 61 6d 65 22 20 24 44 4f 43 2f 70 61 67   $name" $DOC/pag
0c70: 65 73 2f 6c 61 6e 67 2e 69 6e 0a 20 20 65 76 61  es/lang.in.  eva
0c80: 6c 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 24 6b  l hd_keywords $k
0c90: 65 79 77 6f 72 64 73 0a 20 20 68 64 5f 70 75 74  eywords.  hd_put
0ca0: 73 20 7b 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67  s {<a href="lang
0cb0: 2e 68 74 6d 6c 22 3e 3c 68 32 3e 53 51 4c 20 41  .html"><h2>SQL A
0cc0: 73 20 55 6e 64 65 72 73 74 6f 6f 64 20 42 79 20  s Understood By 
0cd0: 53 51 4c 69 74 65 3c 2f 68 32 3e 3c 2f 61 3e 7d  SQLite</h2></a>}
0ce0: 0a 20 20 68 64 5f 70 75 74 73 20 22 3c 68 33 3e  .  hd_puts "<h3>
0cf0: 24 6e 61 6d 65 3c 2f 68 33 3e 22 0a 7d 0a 0a 23  $name</h3>".}..#
0d00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0d10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0d20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0d30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0d40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
0d50: 65 63 74 69 6f 6e 20 7b 41 4c 54 45 52 20 54 41  ection {ALTER TA
0d60: 42 4c 45 7d 20 61 6c 74 65 72 74 61 62 6c 65 20  BLE} altertable 
0d70: 7b 7b 41 4c 54 45 52 20 54 41 42 4c 45 7d 20 7b  {{ALTER TABLE} {
0d80: 41 4c 54 45 52 7d 7d 0a 0a 42 75 62 62 6c 65 44  ALTER}}..BubbleD
0d90: 69 61 67 72 61 6d 20 61 6c 74 65 72 2d 74 61 62  iagram alter-tab
0da0: 6c 65 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e  le-stmt 1.</tcl>
0db0: 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 73 75 70 70  ..<p>SQLite supp
0dc0: 6f 72 74 73 20 61 20 6c 69 6d 69 74 65 64 20 73  orts a limited s
0dd0: 75 62 73 65 74 20 6f 66 20 41 4c 54 45 52 20 54  ubset of ALTER T
0de0: 41 42 4c 45 2e 0a 54 68 65 20 41 4c 54 45 52 20  ABLE..The ALTER 
0df0: 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 69 6e  TABLE command in
0e00: 20 53 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20 74   SQLite allows t
0e10: 68 65 20 75 73 65 72 20 74 6f 20 72 65 6e 61 6d  he user to renam
0e20: 65 20 61 20 74 61 62 6c 65 0a 6f 72 20 74 6f 20  e a table.or to 
0e30: 61 64 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d 6e  add a new column
0e40: 20 74 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20   to an existing 
0e50: 74 61 62 6c 65 2e 20 49 74 20 69 73 20 6e 6f 74  table. It is not
0e60: 20 70 6f 73 73 69 62 6c 65 0a 74 6f 20 72 65 6e   possible.to ren
0e70: 61 6d 65 20 61 20 63 6f 6c 75 6d 2c 20 72 65 6d  ame a colum, rem
0e80: 6f 76 65 20 61 20 63 6f 6c 75 6d 6e 2c 20 6f 72  ove a column, or
0e90: 20 61 64 64 20 6f 72 20 72 65 6d 6f 76 65 20 63   add or remove c
0ea0: 6f 6e 73 74 72 61 69 6e 74 73 20 66 72 6f 6d 20  onstraints from 
0eb0: 61 20 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a 0a 3c  a table..</p>..<
0ec0: 70 3e 54 68 65 20 52 45 4e 41 4d 45 20 54 4f 20  p>The RENAME TO 
0ed0: 73 79 6e 74 61 78 20 69 73 20 75 73 65 64 20 74  syntax is used t
0ee0: 6f 20 72 65 6e 61 6d 65 20 74 68 65 20 74 61 62  o rename the tab
0ef0: 6c 65 20 69 64 65 6e 74 69 66 69 65 64 20 62 79  le identified by
0f00: 20 0a 3c 69 3e 26 23 39 31 3b 64 61 74 61 62 61   .<i>&#91;databa
0f10: 73 65 2d 6e 61 6d 65 2e 26 23 39 33 3b 74 61 62  se-name.&#93;tab
0f20: 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 20 74 6f 20 3c  le-name</i> to <
0f30: 69 3e 6e 65 77 2d 74 61 62 6c 65 2d 6e 61 6d 65  i>new-table-name
0f40: 3c 2f 69 3e 2e 0a 54 68 69 73 20 63 6f 6d 6d 61  </i>..This comma
0f50: 6e 64 20 0a 63 61 6e 6e 6f 74 20 62 65 20 75 73  nd .cannot be us
0f60: 65 64 20 74 6f 20 6d 6f 76 65 20 61 20 74 61 62  ed to move a tab
0f70: 6c 65 20 62 65 74 77 65 65 6e 20 61 74 74 61 63  le between attac
0f80: 68 65 64 20 64 61 74 61 62 61 73 65 73 2c 20 6f  hed databases, o
0f90: 6e 6c 79 20 74 6f 20 72 65 6e 61 6d 65 20 0a 61  nly to rename .a
0fa0: 20 74 61 62 6c 65 20 77 69 74 68 69 6e 20 74 68   table within th
0fb0: 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 2e  e same database.
0fc0: 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20  </p>..<p>If the 
0fd0: 74 61 62 6c 65 20 62 65 69 6e 67 20 72 65 6e 61  table being rena
0fe0: 6d 65 64 20 68 61 73 20 74 72 69 67 67 65 72 73  med has triggers
0ff0: 20 6f 72 20 69 6e 64 69 63 65 73 2c 20 74 68 65   or indices, the
1000: 6e 20 74 68 65 73 65 20 72 65 6d 61 69 6e 0a 61  n these remain.a
1010: 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 74  ttached to the t
1020: 61 62 6c 65 20 61 66 74 65 72 20 69 74 20 68 61  able after it ha
1030: 73 20 62 65 65 6e 20 72 65 6e 61 6d 65 64 2e 20  s been renamed. 
1040: 48 6f 77 65 76 65 72 2c 20 69 66 20 74 68 65 72  However, if ther
1050: 65 20 61 72 65 0a 61 6e 79 20 76 69 65 77 20 64  e are.any view d
1060: 65 66 69 6e 69 74 69 6f 6e 73 2c 20 6f 72 20 73  efinitions, or s
1070: 74 61 74 65 6d 65 6e 74 73 20 65 78 65 63 75 74  tatements execut
1080: 65 64 20 62 79 20 74 72 69 67 67 65 72 73 20 74  ed by triggers t
1090: 68 61 74 20 72 65 66 65 72 20 74 6f 0a 74 68 65  hat refer to.the
10a0: 20 74 61 62 6c 65 20 62 65 69 6e 67 20 72 65 6e   table being ren
10b0: 61 6d 65 64 2c 20 74 68 65 73 65 20 61 72 65 20  amed, these are 
10c0: 6e 6f 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  not automaticall
10d0: 79 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 75 73  y modified to us
10e0: 65 20 74 68 65 20 6e 65 77 0a 74 61 62 6c 65 20  e the new.table 
10f0: 6e 61 6d 65 2e 20 49 66 20 74 68 69 73 20 69 73  name. If this is
1100: 20 72 65 71 75 69 72 65 64 2c 20 74 68 65 20 74   required, the t
1110: 72 69 67 67 65 72 73 20 6f 72 20 76 69 65 77 20  riggers or view 
1120: 64 65 66 69 6e 69 74 69 6f 6e 73 20 6d 75 73 74  definitions must
1130: 20 62 65 0a 64 72 6f 70 70 65 64 20 61 6e 64 20   be.dropped and 
1140: 72 65 63 72 65 61 74 65 64 20 74 6f 20 75 73 65  recreated to use
1150: 20 74 68 65 20 6e 65 77 20 74 61 62 6c 65 20 6e   the new table n
1160: 61 6d 65 20 62 79 20 68 61 6e 64 2e 0a 3c 2f 70  ame by hand..</p
1170: 3e 0a 0a 3c 70 3e 54 68 65 20 41 44 44 20 43 4f  >..<p>The ADD CO
1180: 4c 55 4d 4e 20 73 79 6e 74 61 78 0a 69 73 20 75  LUMN syntax.is u
1190: 73 65 64 20 74 6f 20 61 64 64 20 61 20 6e 65 77  sed to add a new
11a0: 20 63 6f 6c 75 6d 6e 20 74 6f 20 61 6e 20 65 78   column to an ex
11b0: 69 73 74 69 6e 67 20 74 61 62 6c 65 2e 0a 54 68  isting table..Th
11c0: 65 20 6e 65 77 20 63 6f 6c 75 6d 6e 20 69 73 20  e new column is 
11d0: 61 6c 77 61 79 73 20 61 70 70 65 6e 64 65 64 20  always appended 
11e0: 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68  to the end of th
11f0: 65 20 6c 69 73 74 20 6f 66 20 65 78 69 73 74 69  e list of existi
1200: 6e 67 20 63 6f 6c 75 6d 6e 73 2e 0a 54 68 65 20  ng columns..The 
1210: 5b 63 6f 6c 75 6d 6e 2d 64 65 66 5d 20 72 75 6c  [column-def] rul
1220: 65 20 64 65 66 69 6e 65 73 20 74 68 65 20 63 68  e defines the ch
1230: 61 72 61 63 74 65 72 69 73 74 69 63 73 20 6f 66  aracteristics of
1240: 20 74 68 65 20 6e 65 77 20 63 6f 6c 75 6d 6e 2e   the new column.
1250: 0a 54 68 65 20 6e 65 77 20 63 6f 6c 75 6d 6e 20  .The new column 
1260: 6d 61 79 20 74 61 6b 65 20 61 6e 79 20 6f 66 20  may take any of 
1270: 74 68 65 20 66 6f 72 6d 73 20 70 65 72 6d 69 73  the forms permis
1280: 73 61 62 6c 65 20 69 6e 20 61 20 5b 43 52 45 41  sable in a [CREA
1290: 54 45 20 54 41 42 4c 45 5d 0a 73 74 61 74 65 6d  TE TABLE].statem
12a0: 65 6e 74 2c 20 77 69 74 68 20 74 68 65 20 66 6f  ent, with the fo
12b0: 6c 6c 6f 77 69 6e 67 20 72 65 73 74 72 69 63 74  llowing restrict
12c0: 69 6f 6e 73 3a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 54  ions:.<ul>.<li>T
12d0: 68 65 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f  he column may no
12e0: 74 20 68 61 76 65 20 61 20 50 52 49 4d 41 52 59  t have a PRIMARY
12f0: 20 4b 45 59 20 6f 72 20 55 4e 49 51 55 45 20 63   KEY or UNIQUE c
1300: 6f 6e 73 74 72 61 69 6e 74 2e 3c 2f 6c 69 3e 0a  onstraint.</li>.
1310: 3c 6c 69 3e 54 68 65 20 63 6f 6c 75 6d 6e 20 6d  <li>The column m
1320: 61 79 20 6e 6f 74 20 68 61 76 65 20 61 20 64 65  ay not have a de
1330: 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 66 20 43  fault value of C
1340: 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52  URRENT_TIME, CUR
1350: 52 45 4e 54 5f 44 41 54 45 20 0a 20 20 20 20 6f  RENT_DATE .    o
1360: 72 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54  r CURRENT_TIMEST
1370: 41 4d 50 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 49 66  AMP.</li>.<li>If
1380: 20 61 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73   a NOT NULL cons
1390: 74 72 61 69 6e 74 20 69 73 20 73 70 65 63 69 66  traint is specif
13a0: 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20 63 6f  ied, then the co
13b0: 6c 75 6d 6e 20 6d 75 73 74 20 68 61 76 65 20 61  lumn must have a
13c0: 0a 20 20 20 20 64 65 66 61 75 6c 74 20 76 61 6c  .    default val
13d0: 75 65 20 6f 74 68 65 72 20 74 68 61 6e 20 4e 55  ue other than NU
13e0: 4c 4c 2e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 54 68  LL..</ul>..<p>Th
13f0: 65 20 65 78 65 63 75 74 69 6f 6e 20 74 69 6d 65  e execution time
1400: 20 6f 66 20 74 68 65 20 41 4c 54 45 52 20 54 41   of the ALTER TA
1410: 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 69  BLE command is i
1420: 6e 64 65 70 65 6e 64 65 6e 74 20 6f 66 0a 74 68  ndependent of.th
1430: 65 20 61 6d 6f 75 6e 74 20 6f 66 20 64 61 74 61  e amount of data
1440: 20 69 6e 20 74 68 65 20 74 61 62 6c 65 2e 20 20   in the table.  
1450: 54 68 65 20 41 4c 54 45 52 20 54 41 42 4c 45 20  The ALTER TABLE 
1460: 63 6f 6d 6d 61 6e 64 20 72 75 6e 73 20 61 73 20  command runs as 
1470: 71 75 69 63 6b 6c 79 0a 6f 6e 20 61 20 74 61 62  quickly.on a tab
1480: 6c 65 20 77 69 74 68 20 31 30 20 6d 69 6c 6c 69  le with 10 milli
1490: 6f 6e 20 72 6f 77 73 20 61 73 20 69 74 20 64 6f  on rows as it do
14a0: 65 73 20 6f 6e 20 61 20 74 61 62 6c 65 20 77 69  es on a table wi
14b0: 74 68 20 31 20 72 6f 77 2e 0a 3c 2f 70 3e 0a 0a  th 1 row..</p>..
14c0: 3c 70 3e 41 66 74 65 72 20 41 44 44 20 43 4f 4c  <p>After ADD COL
14d0: 55 4d 4e 20 68 61 73 20 62 65 65 6e 20 72 75 6e  UMN has been run
14e0: 20 6f 6e 20 61 20 64 61 74 61 62 61 73 65 2c 20   on a database, 
14f0: 74 68 61 74 20 64 61 74 61 62 61 73 65 20 77 69  that database wi
1500: 6c 6c 20 6e 6f 74 0a 62 65 20 72 65 61 64 61 62  ll not.be readab
1510: 6c 65 20 62 79 20 53 51 4c 69 74 65 20 76 65 72  le by SQLite ver
1520: 73 69 6f 6e 20 33 2e 31 2e 33 20 61 6e 64 20 65  sion 3.1.3 and e
1530: 61 72 6c 69 65 72 2e 3c 2f 70 3e 0a 0a 3c 74 63  arlier.</p>..<tc
1540: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
1550: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1560: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1570: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1580: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1590: 23 0a 53 65 63 74 69 6f 6e 20 7b 41 4e 41 4c 59  #.Section {ANALY
15a0: 5a 45 7d 20 61 6e 61 6c 79 7a 65 20 41 4e 41 4c  ZE} analyze ANAL
15b0: 59 5a 45 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  YZE..BubbleDiagr
15c0: 61 6d 20 61 6e 61 6c 79 7a 65 2d 73 74 6d 74 20  am analyze-stmt 
15d0: 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65  1.</tcl>..<p>The
15e0: 20 41 4e 41 4c 59 5a 45 20 63 6f 6d 6d 61 6e 64   ANALYZE command
15f0: 20 67 61 74 68 65 72 73 20 73 74 61 74 69 73 74   gathers statist
1600: 69 63 73 20 61 62 6f 75 74 20 69 6e 64 69 63 65  ics about indice
1610: 73 20 61 6e 64 20 73 74 6f 72 65 73 20 74 68 65  s and stores the
1620: 6d 0a 69 6e 20 61 20 73 70 65 63 69 61 6c 20 74  m.in a special t
1630: 61 62 6c 65 73 20 69 6e 20 74 68 65 20 64 61 74  ables in the dat
1640: 61 62 61 73 65 20 77 68 65 72 65 20 74 68 65 20  abase where the 
1650: 71 75 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 20  query optimizer 
1660: 63 61 6e 20 75 73 65 0a 74 68 65 6d 20 74 6f 20  can use.them to 
1670: 68 65 6c 70 20 6d 61 6b 65 20 62 65 74 74 65 72  help make better
1680: 20 69 6e 64 65 78 20 63 68 6f 69 63 65 73 2e 0a   index choices..
1690: 49 66 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20  If no arguments 
16a0: 61 72 65 20 67 69 76 65 6e 2c 20 61 6c 6c 20 69  are given, all i
16b0: 6e 64 69 63 65 73 20 69 6e 20 61 6c 6c 20 61 74  ndices in all at
16c0: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73  tached databases
16d0: 20 61 72 65 0a 61 6e 61 6c 79 7a 65 64 2e 20 20   are.analyzed.  
16e0: 49 66 20 61 20 64 61 74 61 62 61 73 65 20 6e 61  If a database na
16f0: 6d 65 20 69 73 20 67 69 76 65 6e 20 61 73 20 74  me is given as t
1700: 68 65 20 61 72 67 75 6d 65 6e 74 2c 20 61 6c 6c  he argument, all
1710: 20 69 6e 64 69 63 65 73 0a 69 6e 20 74 68 61 74   indices.in that
1720: 20 6f 6e 65 20 64 61 74 61 62 61 73 65 20 61 72   one database ar
1730: 65 20 61 6e 61 6c 79 7a 65 64 2e 20 20 49 66 20  e analyzed.  If 
1740: 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20  the argument is 
1750: 61 20 74 61 62 6c 65 20 6e 61 6d 65 2c 0a 74 68  a table name,.th
1760: 65 6e 20 6f 6e 6c 79 20 69 6e 64 69 63 65 73 20  en only indices 
1770: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
1780: 74 68 61 74 20 6f 6e 65 20 74 61 62 6c 65 20 61  that one table a
1790: 72 65 20 61 6e 61 6c 79 7a 65 64 2e 3c 2f 70 3e  re analyzed.</p>
17a0: 0a 0a 3c 70 3e 54 68 65 20 69 6e 69 74 69 61 6c  ..<p>The initial
17b0: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
17c0: 73 74 6f 72 65 73 20 61 6c 6c 20 73 74 61 74 69  stores all stati
17d0: 73 74 69 63 73 20 69 6e 20 61 20 73 69 6e 67 6c  stics in a singl
17e0: 65 0a 74 61 62 6c 65 20 6e 61 6d 65 64 20 3c 62  e.table named <b
17f0: 3e 73 71 6c 69 74 65 5f 73 74 61 74 31 3c 2f 62  >sqlite_stat1</b
1800: 3e 2e 20 20 46 75 74 75 72 65 20 65 6e 68 61 6e  >.  Future enhan
1810: 63 65 6d 65 6e 74 73 20 6d 61 79 20 63 72 65 61  cements may crea
1820: 74 65 0a 61 64 64 69 74 69 6f 6e 61 6c 20 74 61  te.additional ta
1830: 62 6c 65 73 20 77 69 74 68 20 74 68 65 20 73 61  bles with the sa
1840: 6d 65 20 6e 61 6d 65 20 70 61 74 74 65 72 6e 20  me name pattern 
1850: 65 78 63 65 70 74 20 77 69 74 68 20 74 68 65 20  except with the 
1860: 22 31 22 0a 63 68 61 6e 67 65 64 20 74 6f 20 61  "1".changed to a
1870: 20 64 69 66 66 65 72 65 6e 74 20 64 69 67 69 74   different digit
1880: 2e 20 20 54 68 65 20 5b 44 52 4f 50 20 54 41 42  .  The [DROP TAB
1890: 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20 64 6f 65 73  LE] command does
18a0: 0a 6e 6f 74 20 77 6f 72 6b 20 6f 6e 20 74 68 65  .not work on the
18b0: 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 31   <b>sqlite_stat1
18c0: 3c 2f 62 3e 20 74 61 62 6c 65 2c 0a 62 75 74 20  </b> table,.but 
18d0: 61 6c 6c 20 74 68 65 20 63 6f 6e 74 65 6e 74 20  all the content 
18e0: 63 61 6e 20 62 65 20 72 65 6d 6f 76 65 64 20 75  can be removed u
18f0: 73 69 6e 67 20 74 68 65 20 5b 44 45 4c 45 54 45  sing the [DELETE
1900: 5d 20 63 6f 6d 6d 61 6e 64 2c 0a 77 68 69 63 68  ] command,.which
1910: 20 68 61 73 20 74 68 65 20 73 61 6d 65 20 65 66   has the same ef
1920: 66 65 63 74 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  fect.</p>..<tcl>
1930: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
1940: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1950: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1960: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1970: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
1980: 53 65 63 74 69 6f 6e 20 7b 41 54 54 41 43 48 20  Section {ATTACH 
1990: 44 41 54 41 42 41 53 45 7d 20 61 74 74 61 63 68  DATABASE} attach
19a0: 20 41 54 54 41 43 48 0a 0a 42 75 62 62 6c 65 44   ATTACH..BubbleD
19b0: 69 61 67 72 61 6d 20 61 74 74 61 63 68 2d 73 74  iagram attach-st
19c0: 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  mt 1.</tcl>..<p>
19d0: 54 68 65 20 41 54 54 41 43 48 20 44 41 54 41 42  The ATTACH DATAB
19e0: 41 53 45 20 73 74 61 74 65 6d 65 6e 74 20 61 64  ASE statement ad
19f0: 64 73 20 61 6e 6f 74 68 65 72 20 64 61 74 61 62  ds another datab
1a00: 61 73 65 20 0a 66 69 6c 65 20 74 6f 20 74 68 65  ase .file to the
1a10: 20 63 75 72 72 65 6e 74 20 64 61 74 61 62 61 73   current databas
1a20: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 49  e connection.  I
1a30: 66 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 63  f the filename c
1a40: 6f 6e 74 61 69 6e 73 20 0a 70 75 6e 63 74 75 61  ontains .punctua
1a50: 74 69 6f 6e 20 63 68 61 72 61 63 74 65 72 73 20  tion characters 
1a60: 69 74 20 6d 75 73 74 20 62 65 20 71 75 6f 74 65  it must be quote
1a70: 64 2e 20 20 54 68 65 20 6e 61 6d 65 73 20 27 6d  d.  The names 'm
1a80: 61 69 6e 27 20 61 6e 64 20 0a 27 74 65 6d 70 27  ain' and .'temp'
1a90: 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6d 61   refer to the ma
1aa0: 69 6e 20 64 61 74 61 62 61 73 65 20 61 6e 64 20  in database and 
1ab0: 74 68 65 20 64 61 74 61 62 61 73 65 20 75 73 65  the database use
1ac0: 64 20 66 6f 72 20 0a 74 65 6d 70 6f 72 61 72 79  d for .temporary
1ad0: 20 74 61 62 6c 65 73 2e 20 20 54 68 65 73 65 20   tables.  These 
1ae0: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 61 63 68  cannot be detach
1af0: 65 64 2e 20 20 41 74 74 61 63 68 65 64 20 64 61  ed.  Attached da
1b00: 74 61 62 61 73 65 73 20 0a 61 72 65 20 72 65 6d  tabases .are rem
1b10: 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65 20 5b  oved using the [
1b20: 44 45 54 41 43 48 5d 20 73 74 61 74 65 6d 65 6e  DETACH] statemen
1b30: 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63  t.</p>..<p>You c
1b40: 61 6e 6e 6f 74 20 63 72 65 61 74 65 20 61 20 6e  annot create a n
1b50: 65 77 20 74 61 62 6c 65 20 77 69 74 68 20 74 68  ew table with th
1b60: 65 20 73 61 6d 65 20 6e 61 6d 65 20 61 73 20 61  e same name as a
1b70: 20 74 61 62 6c 65 20 69 6e 20 0a 61 6e 20 61 74   table in .an at
1b80: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 2c  tached database,
1b90: 20 62 75 74 20 79 6f 75 20 63 61 6e 20 61 74 74   but you can att
1ba0: 61 63 68 20 61 20 64 61 74 61 62 61 73 65 20 77  ach a database w
1bb0: 68 69 63 68 20 63 6f 6e 74 61 69 6e 73 0a 74 61  hich contains.ta
1bc0: 62 6c 65 73 20 77 68 6f 73 65 20 6e 61 6d 65 73  bles whose names
1bd0: 20 61 72 65 20 64 75 70 6c 69 63 61 74 65 73 20   are duplicates 
1be0: 6f 66 20 74 61 62 6c 65 73 20 69 6e 20 74 68 65  of tables in the
1bf0: 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2e 20   main database. 
1c00: 20 49 74 20 69 73 20 0a 61 6c 73 6f 20 70 65 72   It is .also per
1c10: 6d 69 73 73 69 62 6c 65 20 74 6f 20 61 74 74 61  missible to atta
1c20: 63 68 20 74 68 65 20 73 61 6d 65 20 64 61 74 61  ch the same data
1c30: 62 61 73 65 20 66 69 6c 65 20 6d 75 6c 74 69 70  base file multip
1c40: 6c 65 20 74 69 6d 65 73 2e 3c 2f 70 3e 0a 0a 3c  le times.</p>..<
1c50: 70 3e 54 61 62 6c 65 73 20 69 6e 20 61 6e 20 61  p>Tables in an a
1c60: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
1c70: 20 63 61 6e 20 62 65 20 72 65 66 65 72 72 65 64   can be referred
1c80: 20 74 6f 20 75 73 69 6e 67 20 74 68 65 20 73 79   to using the sy
1c90: 6e 74 61 78 20 0a 3c 69 3e 64 61 74 61 62 61 73  ntax .<i>databas
1ca0: 65 2d 6e 61 6d 65 2e 74 61 62 6c 65 2d 6e 61 6d  e-name.table-nam
1cb0: 65 3c 2f 69 3e 2e 20 20 49 66 20 61 6e 20 61 74  e</i>.  If an at
1cc0: 74 61 63 68 65 64 20 74 61 62 6c 65 20 64 6f 65  tached table doe
1cd0: 73 6e 27 74 20 68 61 76 65 20 0a 61 20 64 75 70  sn't have .a dup
1ce0: 6c 69 63 61 74 65 20 74 61 62 6c 65 20 6e 61 6d  licate table nam
1cf0: 65 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61  e in the main da
1d00: 74 61 62 61 73 65 2c 20 69 74 20 64 6f 65 73 6e  tabase, it doesn
1d10: 27 74 20 72 65 71 75 69 72 65 20 61 20 0a 64 61  't require a .da
1d20: 74 61 62 61 73 65 20 6e 61 6d 65 20 70 72 65 66  tabase name pref
1d30: 69 78 2e 20 20 57 68 65 6e 20 61 20 64 61 74 61  ix.  When a data
1d40: 62 61 73 65 20 69 73 20 61 74 74 61 63 68 65 64  base is attached
1d50: 2c 20 61 6c 6c 20 6f 66 20 69 74 73 20 0a 74 61  , all of its .ta
1d60: 62 6c 65 73 20 77 68 69 63 68 20 64 6f 6e 27 74  bles which don't
1d70: 20 68 61 76 65 20 64 75 70 6c 69 63 61 74 65 20   have duplicate 
1d80: 6e 61 6d 65 73 20 62 65 63 6f 6d 65 20 74 68 65  names become the
1d90: 20 64 65 66 61 75 6c 74 20 74 61 62 6c 65 0a 6f   default table.o
1da0: 66 20 74 68 61 74 20 6e 61 6d 65 2e 20 20 41 6e  f that name.  An
1db0: 79 20 74 61 62 6c 65 73 20 6f 66 20 74 68 61 74  y tables of that
1dc0: 20 6e 61 6d 65 20 61 74 74 61 63 68 65 64 20 61   name attached a
1dd0: 66 74 65 72 77 61 72 64 73 20 72 65 71 75 69 72  fterwards requir
1de0: 65 20 74 68 65 0a 64 61 74 61 62 61 73 65 20 70  e the.database p
1df0: 72 65 66 69 78 2e 20 49 66 20 74 68 65 20 64 65  refix. If the de
1e00: 66 61 75 6c 74 20 74 61 62 6c 65 20 6f 66 20 61  fault table of a
1e10: 20 67 69 76 65 6e 20 6e 61 6d 65 20 69 73 20 64   given name is d
1e20: 65 74 61 63 68 65 64 2c 20 74 68 65 6e 0a 74 68  etached, then.th
1e30: 65 20 6c 61 73 74 20 74 61 62 6c 65 20 6f 66 20  e last table of 
1e40: 74 68 61 74 20 6e 61 6d 65 20 61 74 74 61 63 68  that name attach
1e50: 65 64 20 62 65 63 6f 6d 65 73 20 74 68 65 20 6e  ed becomes the n
1e60: 65 77 20 64 65 66 61 75 6c 74 2e 3c 2f 70 3e 0a  ew default.</p>.
1e70: 0a 3c 70 3e 0a 54 72 61 6e 73 61 63 74 69 6f 6e  .<p>.Transaction
1e80: 73 20 69 6e 76 6f 6c 76 69 6e 67 20 6d 75 6c 74  s involving mult
1e90: 69 70 6c 65 20 61 74 74 61 63 68 65 64 20 64 61  iple attached da
1ea0: 74 61 62 61 73 65 73 20 61 72 65 20 61 74 6f 6d  tabases are atom
1eb0: 69 63 2c 0a 61 73 73 75 6d 69 6e 67 20 74 68 61  ic,.assuming tha
1ec0: 74 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  t the main datab
1ed0: 61 73 65 20 69 73 20 6e 6f 74 20 22 3a 6d 65 6d  ase is not ":mem
1ee0: 6f 72 79 3a 22 2e 20 20 49 66 20 74 68 65 20 6d  ory:".  If the m
1ef0: 61 69 6e 0a 64 61 74 61 62 61 73 65 20 69 73 20  ain.database is 
1f00: 22 3a 6d 65 6d 6f 72 79 3a 22 20 74 68 65 6e 20  ":memory:" then 
1f10: 0a 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 63 6f  .transactions co
1f20: 6e 74 69 6e 75 65 20 74 6f 20 62 65 20 61 74 6f  ntinue to be ato
1f30: 6d 69 63 20 77 69 74 68 69 6e 20 65 61 63 68 20  mic within each 
1f40: 69 6e 64 69 76 69 64 75 61 6c 0a 64 61 74 61 62  individual.datab
1f50: 61 73 65 20 66 69 6c 65 2e 20 42 75 74 20 69 66  ase file. But if
1f60: 20 74 68 65 20 68 6f 73 74 20 63 6f 6d 70 75 74   the host comput
1f70: 65 72 20 63 72 61 73 68 65 73 20 69 6e 20 74 68  er crashes in th
1f80: 65 20 6d 69 64 64 6c 65 0a 6f 66 20 61 20 5b 43  e middle.of a [C
1f90: 4f 4d 4d 49 54 5d 20 77 68 65 72 65 20 74 77 6f  OMMIT] where two
1fa0: 20 6f 72 20 6d 6f 72 65 20 64 61 74 61 62 61 73   or more databas
1fb0: 65 20 66 69 6c 65 73 20 61 72 65 20 75 70 64 61  e files are upda
1fc0: 74 65 64 2c 0a 73 6f 6d 65 20 6f 66 20 74 68 6f  ted,.some of tho
1fd0: 73 65 20 66 69 6c 65 73 20 6d 69 67 68 74 20 67  se files might g
1fe0: 65 74 20 74 68 65 20 63 68 61 6e 67 65 73 20 77  et the changes w
1ff0: 68 65 72 65 20 6f 74 68 65 72 73 0a 6d 69 67 68  here others.migh
2000: 74 20 6e 6f 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  t not..</p>..<p>
2010: 54 68 65 72 65 20 69 73 20 61 20 63 6f 6d 70 69  There is a compi
2020: 6c 65 2d 74 69 6d 65 20 6c 69 6d 69 74 20 6f 66  le-time limit of
2030: 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 41 54 54   [SQLITE_MAX_ATT
2040: 41 43 48 45 44 5d 0a 61 74 74 61 63 68 65 64 20  ACHED].attached 
2050: 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 2e 3c  database files.<
2060: 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  /p>..<tcl>.#####
2070: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2080: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2090: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20b0: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
20c0: 6f 6e 20 7b 42 45 47 49 4e 20 54 52 41 4e 53 41  on {BEGIN TRANSA
20d0: 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69  CTION} transacti
20e0: 6f 6e 20 7b 42 45 47 49 4e 20 43 4f 4d 4d 49 54  on {BEGIN COMMIT
20f0: 20 52 4f 4c 4c 42 41 43 4b 7d 0a 0a 42 75 62 62   ROLLBACK}..Bubb
2100: 6c 65 44 69 61 67 72 61 6d 20 62 65 67 69 6e 2d  leDiagram begin-
2110: 73 74 6d 74 0a 42 75 62 62 6c 65 44 69 61 67 72  stmt.BubbleDiagr
2120: 61 6d 20 63 6f 6d 6d 69 74 2d 73 74 6d 74 0a 42  am commit-stmt.B
2130: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 72 6f 6c  ubbleDiagram rol
2140: 6c 62 61 63 6b 2d 73 74 6d 74 0a 3c 2f 74 63 6c  lback-stmt.</tcl
2150: 3e 0a 0a 3c 70 3e 0a 4e 6f 20 63 68 61 6e 67 65  >..<p>.No change
2160: 73 20 63 61 6e 20 62 65 20 6d 61 64 65 20 74 6f  s can be made to
2170: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 65 78   the database ex
2180: 63 65 70 74 20 77 69 74 68 69 6e 20 61 20 74 72  cept within a tr
2190: 61 6e 73 61 63 74 69 6f 6e 2e 0a 41 6e 79 20 63  ansaction..Any c
21a0: 6f 6d 6d 61 6e 64 20 74 68 61 74 20 63 68 61 6e  ommand that chan
21b0: 67 65 73 20 74 68 65 20 64 61 74 61 62 61 73 65  ges the database
21c0: 20 28 62 61 73 69 63 61 6c 6c 79 2c 20 61 6e 79   (basically, any
21d0: 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a 6f 74 68   SQL command.oth
21e0: 65 72 20 74 68 61 6e 20 5b 53 45 4c 45 43 54 5d  er than [SELECT]
21f0: 29 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63  ) will automatic
2200: 61 6c 6c 79 20 73 74 61 72 74 20 61 20 74 72 61  ally start a tra
2210: 6e 73 61 63 74 69 6f 6e 20 69 66 0a 6f 6e 65 20  nsaction if.one 
2220: 69 73 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 69  is not already i
2230: 6e 20 65 66 66 65 63 74 2e 20 20 41 75 74 6f 6d  n effect.  Autom
2240: 61 74 69 63 61 6c 6c 79 20 73 74 61 72 74 65 64  atically started
2250: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 0a 61 72   transactions.ar
2260: 65 20 63 6f 6d 6d 69 74 74 65 64 20 61 74 20 74  e committed at t
2270: 68 65 20 63 6f 6e 63 6c 75 73 69 6f 6e 20 6f 66  he conclusion of
2280: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f   the command..</
2290: 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73 61 63 74  p>..<p>.Transact
22a0: 69 6f 6e 73 20 63 61 6e 20 62 65 20 73 74 61 72  ions can be star
22b0: 74 65 64 20 6d 61 6e 75 61 6c 6c 79 20 75 73 69  ted manually usi
22c0: 6e 67 20 74 68 65 20 42 45 47 49 4e 0a 63 6f 6d  ng the BEGIN.com
22d0: 6d 61 6e 64 2e 20 20 53 75 63 68 20 74 72 61 6e  mand.  Such tran
22e0: 73 61 63 74 69 6f 6e 73 20 75 73 75 61 6c 6c 79  sactions usually
22f0: 20 70 65 72 73 69 73 74 20 75 6e 74 69 6c 20 74   persist until t
2300: 68 65 20 6e 65 78 74 0a 43 4f 4d 4d 49 54 20 6f  he next.COMMIT o
2310: 72 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61  r ROLLBACK comma
2320: 6e 64 2e 20 20 42 75 74 20 61 20 74 72 61 6e 73  nd.  But a trans
2330: 61 63 74 69 6f 6e 20 77 69 6c 6c 20 61 6c 73 6f  action will also
2340: 20 0a 52 4f 4c 4c 42 41 43 4b 20 69 66 20 74 68   .ROLLBACK if th
2350: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 63 6c  e database is cl
2360: 6f 73 65 64 20 6f 72 20 69 66 20 61 6e 20 65 72  osed or if an er
2370: 72 6f 72 20 6f 63 63 75 72 73 0a 61 6e 64 20 74  ror occurs.and t
2380: 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6e 66  he ROLLBACK conf
2390: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
23a0: 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 73 70 65  algorithm is spe
23b0: 63 69 66 69 65 64 2e 0a 53 65 65 20 74 68 65 20  cified..See the 
23c0: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e  documentation on
23d0: 20 74 68 65 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43   the [ON CONFLIC
23e0: 54 5d 0a 63 6c 61 75 73 65 20 66 6f 72 20 61 64  T].clause for ad
23f0: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
2400: 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 52  tion about the R
2410: 4f 4c 4c 42 41 43 4b 0a 63 6f 6e 66 6c 69 63 74  OLLBACK.conflict
2420: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f   resolution algo
2430: 72 69 74 68 6d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  rithm..</p>..<p>
2440: 0a 45 4e 44 20 54 52 41 4e 53 41 43 54 49 4f 4e  .END TRANSACTION
2450: 20 69 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72   is an alias for
2460: 20 43 4f 4d 4d 49 54 2e 0a 3c 2f 70 3e 0a 0a 3c   COMMIT..</p>..<
2470: 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 74  p>The optional t
2480: 72 61 6e 73 61 63 74 69 6f 6e 20 6e 61 6d 65 20  ransaction name 
2490: 69 73 20 69 67 6e 6f 72 65 64 2e 20 53 51 4c 69  is ignored. SQLi
24a0: 74 65 20 0a 64 6f 65 73 20 6e 6f 74 20 72 65 63  te .does not rec
24b0: 6f 67 6e 69 7a 65 20 6e 65 73 74 65 64 20 74 72  ognize nested tr
24c0: 61 6e 73 61 63 74 69 6f 6e 73 20 61 74 20 74 68  ansactions at th
24d0: 69 73 20 74 69 6d 65 2e 0a 48 6f 77 65 76 65 72  is time..However
24e0: 2c 20 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e  , future version
24f0: 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 61 79 20  s of SQLite may 
2500: 62 65 20 65 6e 68 61 6e 63 65 64 20 74 6f 20 73  be enhanced to s
2510: 75 70 70 6f 72 74 20 6e 65 73 74 65 64 0a 74 72  upport nested.tr
2520: 61 6e 73 61 63 74 69 6f 6e 73 20 61 6e 64 20 74  ansactions and t
2530: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 6e  he transaction n
2540: 61 6d 65 20 77 6f 75 6c 64 20 74 68 65 6e 20 62  ame would then b
2550: 65 63 6f 6d 65 20 73 69 67 6e 69 66 69 63 61 6e  ecome significan
2560: 74 2e 0a 41 70 70 6c 69 63 61 74 69 6f 6e 20 61  t..Application a
2570: 72 65 20 61 64 76 69 73 65 64 20 6e 6f 74 20 74  re advised not t
2580: 6f 20 75 73 65 20 74 68 65 20 74 72 61 6e 73 61  o use the transa
2590: 63 74 69 6f 6e 20 6e 61 6d 65 20 69 6e 20 6f 72  ction name in or
25a0: 64 65 72 0a 74 6f 20 61 76 6f 69 64 20 66 75 74  der.to avoid fut
25b0: 75 72 65 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  ure compatibilit
25c0: 79 20 70 72 6f 62 6c 65 6d 73 2e 3c 2f 70 3e 0a  y problems.</p>.
25d0: 0a 3c 70 3e 0a 54 72 61 6e 73 61 63 74 69 6f 6e  .<p>.Transaction
25e0: 73 20 63 61 6e 20 62 65 20 64 65 66 65 72 72 65  s can be deferre
25f0: 64 2c 20 69 6d 6d 65 64 69 61 74 65 2c 20 6f 72  d, immediate, or
2600: 20 65 78 63 6c 75 73 69 76 65 2e 20 20 0a 54 68   exclusive.  .Th
2610: 65 20 64 65 66 61 75 6c 74 20 74 72 61 6e 73 61  e default transa
2620: 63 74 69 6f 6e 20 62 65 68 61 76 69 6f 72 20 69  ction behavior i
2630: 73 20 64 65 66 65 72 72 65 64 2e 0a 44 65 66 65  s deferred..Defe
2640: 72 72 65 64 20 6d 65 61 6e 73 20 74 68 61 74 20  rred means that 
2650: 6e 6f 20 6c 6f 63 6b 73 20 61 72 65 20 61 63 71  no locks are acq
2660: 75 69 72 65 64 0a 6f 6e 20 74 68 65 20 64 61 74  uired.on the dat
2670: 61 62 61 73 65 20 75 6e 74 69 6c 20 74 68 65 20  abase until the 
2680: 64 61 74 61 62 61 73 65 20 69 73 20 66 69 72 73  database is firs
2690: 74 20 61 63 63 65 73 73 65 64 2e 20 20 54 68 75  t accessed.  Thu
26a0: 73 20 77 69 74 68 20 61 0a 64 65 66 65 72 72 65  s with a.deferre
26b0: 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 74  d transaction, t
26c0: 68 65 20 42 45 47 49 4e 20 73 74 61 74 65 6d 65  he BEGIN stateme
26d0: 6e 74 20 69 74 73 65 6c 66 20 64 6f 65 73 20 6e  nt itself does n
26e0: 6f 74 68 69 6e 67 2e 20 20 4c 6f 63 6b 73 0a 61  othing.  Locks.a
26f0: 72 65 20 6e 6f 74 20 61 63 71 75 69 72 65 64 20  re not acquired 
2700: 75 6e 74 69 6c 20 74 68 65 20 66 69 72 73 74 20  until the first 
2710: 72 65 61 64 20 6f 72 20 77 72 69 74 65 20 6f 70  read or write op
2720: 65 72 61 74 69 6f 6e 2e 20 20 54 68 65 20 66 69  eration.  The fi
2730: 72 73 74 20 72 65 61 64 0a 6f 70 65 72 61 74 69  rst read.operati
2740: 6f 6e 20 61 67 61 69 6e 73 74 20 61 20 64 61 74  on against a dat
2750: 61 62 61 73 65 20 63 72 65 61 74 65 73 20 61 20  abase creates a 
2760: 5b 53 48 41 52 45 44 5d 20 6c 6f 63 6b 20 61 6e  [SHARED] lock an
2770: 64 20 74 68 65 20 66 69 72 73 74 0a 77 72 69 74  d the first.writ
2780: 65 20 6f 70 65 72 61 74 69 6f 6e 20 63 72 65 61  e operation crea
2790: 74 65 73 20 61 20 5b 52 45 53 45 52 56 45 44 5d  tes a [RESERVED]
27a0: 20 6c 6f 63 6b 2e 20 20 20 42 65 63 61 75 73 65   lock.   Because
27b0: 20 74 68 65 20 61 63 71 75 69 73 69 74 69 6f 6e   the acquisition
27c0: 20 6f 66 0a 6c 6f 63 6b 73 20 69 73 20 64 65 66   of.locks is def
27d0: 65 72 72 65 64 20 75 6e 74 69 6c 20 74 68 65 79  erred until they
27e0: 20 61 72 65 20 6e 65 65 64 65 64 2c 20 69 74 20   are needed, it 
27f0: 69 73 20 70 6f 73 73 69 62 6c 65 20 74 68 61 74  is possible that
2800: 20 61 6e 6f 74 68 65 72 0a 74 68 72 65 61 64 20   another.thread 
2810: 6f 72 20 70 72 6f 63 65 73 73 20 63 6f 75 6c 64  or process could
2820: 20 63 72 65 61 74 65 20 61 20 73 65 70 61 72 61   create a separa
2830: 74 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 61  te transaction a
2840: 6e 64 20 77 72 69 74 65 20 74 6f 0a 74 68 65 20  nd write to.the 
2850: 64 61 74 61 62 61 73 65 20 61 66 74 65 72 20 74  database after t
2860: 68 65 20 42 45 47 49 4e 20 6f 6e 20 74 68 65 20  he BEGIN on the 
2870: 63 75 72 72 65 6e 74 20 74 68 72 65 61 64 20 68  current thread h
2880: 61 73 20 65 78 65 63 75 74 65 64 2e 0a 49 66 20  as executed..If 
2890: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
28a0: 69 73 20 69 6d 6d 65 64 69 61 74 65 2c 20 74 68  is immediate, th
28b0: 65 6e 20 5b 52 45 53 45 52 56 45 44 5d 20 6c 6f  en [RESERVED] lo
28c0: 63 6b 73 0a 61 72 65 20 61 63 71 75 69 72 65 64  cks.are acquired
28d0: 20 6f 6e 20 61 6c 6c 20 64 61 74 61 62 61 73 65   on all database
28e0: 73 20 61 73 20 73 6f 6f 6e 20 61 73 20 74 68 65  s as soon as the
28f0: 20 42 45 47 49 4e 20 63 6f 6d 6d 61 6e 64 20 69   BEGIN command i
2900: 73 0a 65 78 65 63 75 74 65 64 2c 20 77 69 74 68  s.executed, with
2910: 6f 75 74 20 77 61 69 74 69 6e 67 20 66 6f 72 20  out waiting for 
2920: 74 68 65 0a 64 61 74 61 62 61 73 65 20 74 6f 20  the.database to 
2930: 62 65 20 75 73 65 64 2e 20 20 41 66 74 65 72 20  be used.  After 
2940: 61 20 42 45 47 49 4e 20 49 4d 4d 45 44 49 41 54  a BEGIN IMMEDIAT
2950: 45 2c 20 79 6f 75 20 61 72 65 20 67 75 61 72 61  E, you are guara
2960: 6e 74 65 65 64 20 74 68 61 74 0a 6e 6f 20 6f 74  nteed that.no ot
2970: 68 65 72 20 74 68 72 65 61 64 20 6f 72 20 70 72  her thread or pr
2980: 6f 63 65 73 73 20 77 69 6c 6c 20 62 65 20 61 62  ocess will be ab
2990: 6c 65 20 74 6f 20 77 72 69 74 65 20 74 6f 20 74  le to write to t
29a0: 68 65 20 64 61 74 61 62 61 73 65 20 6f 72 0a 64  he database or.d
29b0: 6f 20 61 20 42 45 47 49 4e 20 49 4d 4d 45 44 49  o a BEGIN IMMEDI
29c0: 41 54 45 20 6f 72 20 42 45 47 49 4e 20 45 58 43  ATE or BEGIN EXC
29d0: 4c 55 53 49 56 45 2e 20 20 4f 74 68 65 72 20 70  LUSIVE.  Other p
29e0: 72 6f 63 65 73 73 65 73 20 63 61 6e 20 63 6f 6e  rocesses can con
29f0: 74 69 6e 75 65 0a 74 6f 20 72 65 61 64 20 66 72  tinue.to read fr
2a00: 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65 2c  om the database,
2a10: 20 68 6f 77 65 76 65 72 2e 20 20 41 6e 20 65 78   however.  An ex
2a20: 63 6c 75 73 69 76 65 20 74 72 61 6e 73 61 63 74  clusive transact
2a30: 69 6f 6e 20 63 61 75 73 65 73 0a 5b 45 58 43 4c  ion causes.[EXCL
2a40: 55 53 49 56 45 5d 20 6c 6f 63 6b 73 20 74 6f 20  USIVE] locks to 
2a50: 62 65 20 61 63 71 75 69 72 65 64 20 6f 6e 20 61  be acquired on a
2a60: 6c 6c 20 64 61 74 61 62 61 73 65 73 2e 20 20 41  ll databases.  A
2a70: 66 74 65 72 20 61 20 42 45 47 49 4e 0a 45 58 43  fter a BEGIN.EXC
2a80: 4c 55 53 49 56 45 2c 20 79 6f 75 20 61 72 65 20  LUSIVE, you are 
2a90: 67 75 61 72 61 6e 74 65 65 64 20 74 68 61 74 20  guaranteed that 
2aa0: 6e 6f 20 6f 74 68 65 72 20 74 68 72 65 61 64 20  no other thread 
2ab0: 6f 72 20 70 72 6f 63 65 73 73 20 77 69 6c 6c 0a  or process will.
2ac0: 62 65 20 61 62 6c 65 20 74 6f 20 72 65 61 64 20  be able to read 
2ad0: 6f 72 20 77 72 69 74 65 20 74 68 65 20 64 61 74  or write the dat
2ae0: 61 62 61 73 65 20 75 6e 74 69 6c 20 74 68 65 20  abase until the 
2af0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 0a 63  transaction is.c
2b00: 6f 6d 70 6c 65 74 65 2e 0a 3c 2f 70 3e 0a 0a 3c  omplete..</p>..<
2b10: 70 3e 0a 54 68 65 20 43 4f 4d 4d 49 54 20 63 6f  p>.The COMMIT co
2b20: 6d 6d 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 61  mmand does not a
2b30: 63 74 75 61 6c 6c 79 20 70 65 72 66 6f 72 6d 20  ctually perform 
2b40: 61 20 63 6f 6d 6d 69 74 20 75 6e 74 69 6c 20 61  a commit until a
2b50: 6c 6c 0a 70 65 6e 64 69 6e 67 20 53 51 4c 20 63  ll.pending SQL c
2b60: 6f 6d 6d 61 6e 64 73 20 66 69 6e 69 73 68 2e 20  ommands finish. 
2b70: 20 54 68 75 73 20 69 66 20 6f 6e 65 20 6f 72 20   Thus if one or 
2b80: 6d 6f 72 65 20 5b 53 45 4c 45 43 54 5d 20 73 74  more [SELECT] st
2b90: 61 74 65 6d 65 6e 74 73 0a 61 72 65 20 69 6e 20  atements.are in 
2ba0: 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 70 72  the middle of pr
2bb0: 6f 63 65 73 73 69 6e 67 20 61 6e 64 20 61 20 43  ocessing and a C
2bc0: 4f 4d 4d 49 54 20 69 73 20 65 78 65 63 75 74 65  OMMIT is execute
2bd0: 64 2c 20 74 68 65 20 63 6f 6d 6d 69 74 0a 77 69  d, the commit.wi
2be0: 6c 6c 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20  ll not actually 
2bf0: 6f 63 63 75 72 20 75 6e 74 69 6c 20 61 6c 6c 20  occur until all 
2c00: 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65  [SELECT] stateme
2c10: 6e 74 73 20 68 61 76 65 20 62 65 65 6e 0a 5b 73  nts have been.[s
2c20: 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 20 7c  qlite3_reset() |
2c30: 20 72 65 73 65 74 5d 20 6f 72 20 5b 73 71 6c 69   reset] or [sqli
2c40: 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29 20 7c  te3_finalize() |
2c50: 20 66 69 6e 61 6c 69 7a 65 64 5d 2e 0a 3c 2f 70   finalized]..</p
2c60: 3e 0a 0a 3c 70 3e 0a 41 6e 20 61 74 74 65 6d 70  >..<p>.An attemp
2c70: 74 20 74 6f 20 65 78 65 63 75 74 65 20 43 4f 4d  t to execute COM
2c80: 4d 49 54 20 6d 69 67 68 74 20 72 65 73 75 6c 74  MIT might result
2c90: 20 69 6e 20 61 6e 20 5b 53 51 4c 49 54 45 5f 42   in an [SQLITE_B
2ca0: 55 53 59 5d 20 72 65 74 75 72 6e 20 63 6f 64 65  USY] return code
2cb0: 2e 0a 54 68 69 73 20 69 6e 64 69 63 61 74 65 73  ..This indicates
2cc0: 20 74 68 61 74 20 61 6e 6f 74 68 65 72 20 74 68   that another th
2cd0: 72 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20  read or process 
2ce0: 68 61 64 20 61 20 0a 5b 73 68 61 72 65 64 20 6c  had a .[shared l
2cf0: 6f 63 6b 5d 20 6f 6e 20 74 68 65 20 64 61 74 61  ock] on the data
2d00: 62 61 73 65 0a 74 68 61 74 20 70 72 65 76 65 6e  base.that preven
2d10: 74 65 64 20 74 68 65 20 64 61 74 61 62 61 73 65  ted the database
2d20: 20 66 72 6f 6d 20 62 65 69 6e 67 20 75 70 64 61   from being upda
2d30: 74 65 64 2e 20 20 57 68 65 6e 20 43 4f 4d 4d 49  ted.  When COMMI
2d40: 54 20 66 61 69 6c 73 20 69 6e 20 74 68 69 73 0a  T fails in this.
2d50: 77 61 79 2c 20 74 68 65 20 74 72 61 6e 73 61 63  way, the transac
2d60: 74 69 6f 6e 20 72 65 6d 61 69 6e 73 20 61 63 74  tion remains act
2d70: 69 76 65 20 61 6e 64 20 74 68 65 20 43 4f 4d 4d  ive and the COMM
2d80: 49 54 20 63 61 6e 20 62 65 20 72 65 74 72 69 65  IT can be retrie
2d90: 64 20 6c 61 74 65 72 0a 61 66 74 65 72 20 74 68  d later.after th
2da0: 65 20 72 65 61 64 65 72 20 68 61 73 20 68 61 64  e reader has had
2db0: 20 61 20 63 68 61 6e 63 65 20 74 6f 20 63 6c 65   a chance to cle
2dc0: 61 72 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e 52 65  ar..</p>..<h3>Re
2dd0: 73 70 6f 6e 73 65 20 54 6f 20 45 72 72 6f 72 73  sponse To Errors
2de0: 20 57 69 74 68 69 6e 20 41 20 54 72 61 6e 73 61   Within A Transa
2df0: 63 74 69 6f 6e 3c 2f 68 33 3e 0a 0a 3c 70 3e 49  ction</h3>..<p>I
2e00: 66 20 63 65 72 74 61 69 6e 20 6b 69 6e 64 73 20  f certain kinds 
2e10: 6f 66 20 65 72 72 6f 72 73 20 6f 63 63 75 72 20  of errors occur 
2e20: 77 69 74 68 69 6e 20 61 20 74 72 61 6e 73 61 63  within a transac
2e30: 74 69 6f 6e 2c 20 74 68 65 0a 74 72 61 6e 73 61  tion, the.transa
2e40: 63 74 69 6f 6e 20 6d 61 79 20 6f 72 20 6d 61 79  ction may or may
2e50: 20 6e 6f 74 20 62 65 20 72 6f 6c 6c 65 64 20 62   not be rolled b
2e60: 61 63 6b 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ack automaticall
2e70: 79 2e 20 20 54 68 65 0a 65 72 72 6f 72 73 20 74  y.  The.errors t
2e80: 68 61 74 20 63 61 75 73 65 20 74 68 65 20 62 65  hat cause the be
2e90: 68 61 76 69 6f 72 20 69 6e 63 6c 75 64 65 3a 3c  havior include:<
2ea0: 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 20 5b  /p>..<ul>.<li> [
2eb0: 53 51 4c 49 54 45 5f 46 55 4c 4c 5d 3a 20 64 61  SQLITE_FULL]: da
2ec0: 74 61 62 61 73 65 20 6f 72 20 64 69 73 6b 20 66  tabase or disk f
2ed0: 75 6c 6c 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  ull.<li> [SQLITE
2ee0: 5f 49 4f 45 52 52 5d 3a 20 64 69 73 6b 20 49 2f  _IOERR]: disk I/
2ef0: 4f 20 65 72 72 6f 72 0a 3c 6c 69 3e 20 5b 53 51  O error.<li> [SQ
2f00: 4c 49 54 45 5f 42 55 53 59 5d 3a 20 64 61 74 61  LITE_BUSY]: data
2f10: 62 61 73 65 20 69 6e 20 75 73 65 20 62 79 20 61  base in use by a
2f20: 6e 6f 74 68 65 72 20 70 72 6f 63 65 73 73 0a 3c  nother process.<
2f30: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4e 4f 4d 45  li> [SQLITE_NOME
2f40: 4d 5d 3a 20 6f 75 74 20 6f 72 20 6d 65 6d 6f 72  M]: out or memor
2f50: 79 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49  y.<li> [SQLITE_I
2f60: 4e 54 45 52 52 55 50 54 5d 3a 20 70 72 6f 63 65  NTERRUPT]: proce
2f70: 73 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 69  ssing [sqlite3_i
2f80: 6e 74 65 72 72 75 70 74 7c 69 6e 74 65 72 72 75  nterrupt|interru
2f90: 70 74 65 64 5d 0a 20 20 20 20 20 62 79 20 61 70  pted].     by ap
2fa0: 70 6c 69 63 61 74 69 6f 6e 20 72 65 71 75 65 73  plication reques
2fb0: 74 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 0a 46 6f 72  t.</ul>..<p>.For
2fc0: 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 65 72   all of these er
2fd0: 72 6f 72 73 2c 20 53 51 4c 69 74 65 20 61 74 74  rors, SQLite att
2fe0: 65 6d 70 74 73 20 74 6f 20 75 6e 64 6f 20 6a 75  empts to undo ju
2ff0: 73 74 20 74 68 65 20 6f 6e 65 20 73 74 61 74 65  st the one state
3000: 6d 65 6e 74 0a 69 74 20 77 61 73 20 77 6f 72 6b  ment.it was work
3010: 69 6e 67 20 6f 6e 20 61 6e 64 20 6c 65 61 76 65  ing on and leave
3020: 20 63 68 61 6e 67 65 73 20 66 72 6f 6d 20 70 72   changes from pr
3030: 69 6f 72 20 73 74 61 74 65 6d 65 6e 74 73 20 77  ior statements w
3040: 69 74 68 69 6e 20 74 68 65 0a 73 61 6d 65 20 74  ithin the.same t
3050: 72 61 6e 73 61 63 74 69 6f 6e 20 69 6e 74 61 63  ransaction intac
3060: 74 20 61 6e 64 20 63 6f 6e 74 69 6e 75 65 20 77  t and continue w
3070: 69 74 68 20 74 68 65 20 74 72 61 6e 73 61 63 74  ith the transact
3080: 69 6f 6e 2e 20 20 48 6f 77 65 76 65 72 2c 20 0a  ion.  However, .
3090: 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65  depending on the
30a0: 20 73 74 61 74 65 6d 65 6e 74 20 62 65 69 6e 67   statement being
30b0: 20 65 76 61 6c 75 61 74 65 64 20 61 6e 64 20 74   evaluated and t
30c0: 68 65 20 70 6f 69 6e 74 20 61 74 20 77 68 69 63  he point at whic
30d0: 68 20 74 68 65 0a 65 72 72 6f 72 20 6f 63 63 75  h the.error occu
30e0: 72 73 2c 20 69 74 20 6d 69 67 68 74 20 62 65 20  rs, it might be 
30f0: 6e 65 63 65 73 73 61 72 79 20 66 6f 72 20 53 51  necessary for SQ
3100: 4c 69 74 65 20 74 6f 20 72 6f 6c 6c 62 61 63 6b  Lite to rollback
3110: 20 61 6e 64 0a 63 61 6e 63 65 6c 20 74 68 65 20   and.cancel the 
3120: 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 41 6e  transaction.  An
3130: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 63 61 6e   application can
3140: 20 74 65 6c 6c 20 77 68 69 63 68 0a 63 6f 75 72   tell which.cour
3150: 73 65 20 6f 66 20 61 63 74 69 6f 6e 20 53 51 4c  se of action SQL
3160: 69 74 65 20 74 6f 6f 6b 20 62 79 20 75 73 69 6e  ite took by usin
3170: 67 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f 67  g the.[sqlite3_g
3180: 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 29 5d  et_autocommit()]
3190: 20 43 2d 6c 61 6e 67 75 61 67 65 20 69 6e 74 65   C-language inte
31a0: 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49  rface.</p>..<p>I
31b0: 74 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64  t is recommended
31c0: 20 74 68 61 74 20 61 70 70 6c 69 63 61 74 69 6f   that applicatio
31d0: 6e 73 20 72 65 73 70 6f 6e 64 20 74 6f 20 74 68  ns respond to th
31e0: 65 20 65 72 72 6f 72 73 0a 6c 69 73 74 65 64 20  e errors.listed 
31f0: 61 62 6f 76 65 20 62 79 20 65 78 70 6c 69 63 69  above by explici
3200: 74 6c 79 20 69 73 73 75 69 6e 67 20 61 20 52 4f  tly issuing a RO
3210: 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 2e 20  LLBACK command. 
3220: 20 49 66 20 74 68 65 20 0a 74 72 61 6e 73 61 63   If the .transac
3230: 74 69 6f 6e 20 68 61 73 20 61 6c 72 65 61 64 79  tion has already
3240: 20 62 65 65 6e 20 72 6f 6c 6c 65 64 20 62 61 63   been rolled bac
3250: 6b 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a  k automatically.
3260: 62 79 20 74 68 65 20 65 72 72 6f 72 20 72 65 73  by the error res
3270: 70 6f 6e 73 65 2c 20 74 68 65 6e 20 74 68 65 20  ponse, then the 
3280: 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64  ROLLBACK command
3290: 20 77 69 6c 6c 20 66 61 69 6c 20 77 69 74 68 20   will fail with 
32a0: 61 6e 0a 65 72 72 6f 72 2c 20 62 75 74 20 6e 6f  an.error, but no
32b0: 20 68 61 72 6d 20 69 73 20 63 61 75 73 65 64 20   harm is caused 
32c0: 62 79 20 74 68 69 73 2e 3c 2f 70 3e 0a 0a 3c 70  by this.</p>..<p
32d0: 3e 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73  >Future versions
32e0: 20 6f 66 20 53 51 4c 69 74 65 20 6d 61 79 20 65   of SQLite may e
32f0: 78 74 65 6e 64 20 74 68 65 20 6c 69 73 74 20 6f  xtend the list o
3300: 66 20 65 72 72 6f 72 73 20 77 68 69 63 68 0a 6d  f errors which.m
3310: 69 67 68 74 20 63 61 75 73 65 20 61 75 74 6f 6d  ight cause autom
3320: 61 74 69 63 20 74 72 61 6e 73 61 63 74 69 6f 6e  atic transaction
3330: 20 72 6f 6c 6c 62 61 63 6b 2e 20 20 46 75 74 75   rollback.  Futu
3340: 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a 53  re versions of.S
3350: 51 4c 69 74 65 20 6d 69 67 68 74 20 63 68 61 6e  QLite might chan
3360: 67 65 20 74 68 65 20 65 72 72 6f 72 20 72 65 73  ge the error res
3370: 70 6f 6e 73 65 2e 20 20 49 6e 20 70 61 72 74 69  ponse.  In parti
3380: 63 75 6c 61 72 2c 20 77 65 20 6d 61 79 0a 63 68  cular, we may.ch
3390: 6f 6f 73 65 20 74 6f 20 73 69 6d 70 6c 69 66 79  oose to simplify
33a0: 20 74 68 65 20 69 6e 74 65 72 66 61 63 65 20 69   the interface i
33b0: 6e 20 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e  n future version
33c0: 73 20 6f 66 20 53 51 4c 69 74 65 20 62 79 0a 63  s of SQLite by.c
33d0: 61 75 73 69 6e 67 20 74 68 65 20 65 72 72 6f 72  ausing the error
33e0: 73 20 61 62 6f 76 65 20 74 6f 20 66 6f 72 63 65  s above to force
33f0: 20 61 6e 20 75 6e 63 6f 6e 64 69 74 69 6f 6e 61   an unconditiona
3400: 6c 20 72 6f 6c 6c 62 61 63 6b 2e 3c 2f 70 3e 0a  l rollback.</p>.
3410: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
3420: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3430: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3460: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 63  ######.Section c
3470: 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e 74 20 7b  omment comment {
3480: 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e 74 73  comment comments
3490: 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  }..BubbleDiagram
34a0: 20 63 6f 6d 6d 65 6e 74 2d 73 79 6e 74 61 78 0a   comment-syntax.
34b0: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 43 6f 6d 6d 65  </tcl>..<p>Comme
34c0: 6e 74 73 20 61 72 65 6e 27 74 20 53 51 4c 20 63  nts aren't SQL c
34d0: 6f 6d 6d 61 6e 64 73 2c 20 62 75 74 20 63 61 6e  ommands, but can
34e0: 20 6f 63 63 75 72 20 77 69 74 68 69 6e 20 74 68   occur within th
34f0: 65 20 74 65 78 74 20 6f 66 0a 53 51 4c 20 71 75  e text of.SQL qu
3500: 65 72 69 65 73 20 70 61 73 73 65 64 20 74 6f 20  eries passed to 
3510: 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
3520: 5f 76 32 28 29 5d 20 61 6e 64 20 72 65 6c 61 74  _v2()] and relat
3530: 65 64 20 69 6e 74 65 72 66 61 63 65 73 2e 2e 0a  ed interfaces...
3540: 43 6f 6d 6d 65 6e 74 73 20 61 72 65 20 0a 74 72  Comments are .tr
3550: 65 61 74 65 64 20 61 73 20 77 68 69 74 65 73 70  eated as whitesp
3560: 61 63 65 20 62 79 20 74 68 65 20 70 61 72 73 65  ace by the parse
3570: 72 2e 20 20 54 68 65 79 20 63 61 6e 20 62 65 67  r.  They can beg
3580: 69 6e 20 61 6e 79 77 68 65 72 65 20 77 68 69 74  in anywhere whit
3590: 65 73 70 61 63 65 20 0a 63 61 6e 20 62 65 20 66  espace .can be f
35a0: 6f 75 6e 64 2c 20 69 6e 63 6c 75 64 69 6e 67 20  ound, including 
35b0: 69 6e 73 69 64 65 20 65 78 70 72 65 73 73 69 6f  inside expressio
35c0: 6e 73 20 74 68 61 74 20 73 70 61 6e 20 6d 75 6c  ns that span mul
35d0: 74 69 70 6c 65 20 6c 69 6e 65 73 2e 0a 3c 2f 70  tiple lines..</p
35e0: 3e 0a 0a 3c 70 3e 20 53 51 4c 20 63 6f 6d 6d 65  >..<p> SQL comme
35f0: 6e 74 73 20 62 65 67 69 6e 20 77 69 74 68 20 74  nts begin with t
3600: 77 6f 20 63 6f 6e 73 65 63 75 74 69 76 65 20 22  wo consecutive "
3610: 2d 22 20 63 68 61 72 61 63 74 65 72 73 20 28 41  -" characters (A
3620: 53 43 49 49 20 30 78 32 64 29 0a 61 6e 64 20 65  SCII 0x2d).and e
3630: 78 74 65 6e 64 20 75 70 20 74 6f 20 61 6e 64 20  xtend up to and 
3640: 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 6e 65  including the ne
3650: 78 74 20 6e 65 77 6c 69 6e 65 20 63 68 61 72 61  xt newline chara
3660: 63 74 65 72 20 28 41 53 43 49 49 20 30 78 30 61  cter (ASCII 0x0a
3670: 29 0a 6f 72 20 75 6e 74 69 6c 20 74 68 65 20 65  ).or until the e
3680: 6e 64 20 6f 66 20 69 6e 70 75 74 2c 20 77 68 69  nd of input, whi
3690: 63 68 65 76 65 72 20 63 6f 6d 65 73 20 66 69 72  chever comes fir
36a0: 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 43 20 63  st.</p>..<p> C c
36b0: 6f 6d 6d 65 6e 74 73 20 63 61 6e 20 73 70 61 6e  omments can span
36c0: 20 61 6e 79 20 6e 75 6d 62 65 72 20 6f 66 20 6c   any number of l
36d0: 69 6e 65 73 2e 20 20 43 2d 73 74 79 6c 65 20 63  ines.  C-style c
36e0: 6f 6d 6d 65 6e 74 73 20 62 65 67 69 6e 0a 77 69  omments begin.wi
36f0: 74 68 20 22 2f 2a 22 20 61 6e 64 20 65 78 74 65  th "/*" and exte
3700: 6e 64 20 75 70 20 74 6f 20 61 6e 64 20 69 6e 63  nd up to and inc
3710: 6c 75 64 69 6e 67 20 74 68 65 20 6e 65 78 74 20  luding the next 
3720: 22 2a 2f 22 20 63 68 61 72 61 63 74 65 72 20 70  "*/" character p
3730: 61 69 72 0a 6f 72 20 75 6e 74 69 6c 20 74 68 65  air.or until the
3740: 20 65 6e 64 20 6f 66 20 69 6e 70 75 74 2c 20 77   end of input, w
3750: 68 69 63 68 65 76 65 72 20 63 6f 6d 65 73 20 66  hichever comes f
3760: 69 72 73 74 2e 20 20 43 2d 73 74 79 6c 65 20 63  irst.  C-style c
3770: 6f 6d 6d 65 6e 74 73 0a 63 61 6e 20 73 70 61 6e  omments.can span
3780: 20 6d 75 6c 74 69 70 6c 65 20 6c 69 6e 65 73 2e   multiple lines.
3790: 20 3c 2f 70 3e 0a 0a 3c 70 3e 20 43 6f 6d 6d 65   </p>..<p> Comme
37a0: 6e 74 73 20 63 61 6e 20 61 70 70 65 61 72 20 61  nts can appear a
37b0: 6e 79 77 68 65 72 65 20 77 68 69 74 65 73 70 61  nywhere whitespa
37c0: 63 65 20 63 61 6e 20 6f 63 63 75 72 2c 0a 69 6e  ce can occur,.in
37d0: 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65 20 65  cluding inside e
37e0: 78 70 72 65 73 73 69 6f 6e 73 20 61 6e 64 20 69  xpressions and i
37f0: 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20  n the middle of 
3800: 6f 74 68 65 72 20 53 51 4c 20 73 74 61 74 65 6d  other SQL statem
3810: 65 6e 74 73 2e 0a 43 6f 6d 6d 65 6e 74 73 20 64  ents..Comments d
3820: 6f 20 6e 6f 74 20 6e 65 73 74 2e 0a 3c 2f 70 3e  o not nest..</p>
3830: 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23  ...<tcl>.#######
3840: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3850: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3860: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3870: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3880: 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
3890: 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20 63  {CREATE INDEX} c
38a0: 72 65 61 74 65 69 6e 64 65 78 20 7b 7b 43 52 45  reateindex {{CRE
38b0: 41 54 45 20 49 4e 44 45 58 7d 7d 0a 0a 42 75 62  ATE INDEX}}..Bub
38c0: 62 6c 65 44 69 61 67 72 61 6d 20 63 72 65 61 74  bleDiagram creat
38d0: 65 2d 69 6e 64 65 78 2d 73 74 6d 74 20 31 0a 42  e-index-stmt 1.B
38e0: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 69 6e 64  ubbleDiagram ind
38f0: 65 78 65 64 2d 63 6f 6c 75 6d 6e 0a 3c 2f 74 63  exed-column.</tc
3900: 6c 3e 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41 54  l>..<p>The CREAT
3910: 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 20  E INDEX command 
3920: 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20  consists of the 
3930: 6b 65 79 77 6f 72 64 73 20 22 43 52 45 41 54 45  keywords "CREATE
3940: 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f 77 65 64   INDEX" followed
3950: 0a 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  .by the name of 
3960: 74 68 65 20 6e 65 77 20 69 6e 64 65 78 2c 20 74  the new index, t
3970: 68 65 20 6b 65 79 77 6f 72 64 20 22 4f 4e 22 2c  he keyword "ON",
3980: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 70   the name of a p
3990: 72 65 76 69 6f 75 73 6c 79 0a 63 72 65 61 74 65  reviously.create
39a0: 64 20 74 61 62 6c 65 20 74 68 61 74 20 69 73 20  d table that is 
39b0: 74 6f 20 62 65 20 69 6e 64 65 78 65 64 2c 20 61  to be indexed, a
39c0: 6e 64 20 61 20 70 61 72 65 6e 74 68 65 73 69 7a  nd a parenthesiz
39d0: 65 64 20 6c 69 73 74 20 6f 66 20 6e 61 6d 65 73  ed list of names
39e0: 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20 69 6e 20 74   of.columns in t
39f0: 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 61 72  he table that ar
3a00: 65 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 69  e used for the i
3a10: 6e 64 65 78 20 6b 65 79 2e 3c 2f 70 3e 0a 0a 3c  ndex key.</p>..<
3a20: 70 3e 45 61 63 68 20 63 6f 6c 75 6d 6e 20 6e 61  p>Each column na
3a30: 6d 65 20 63 61 6e 20 62 65 20 66 6f 6c 6c 6f 77  me can be follow
3a40: 65 64 20 62 79 20 6f 6e 65 20 6f 66 20 74 68 65  ed by one of the
3a50: 20 22 41 53 43 22 20 6f 72 20 22 44 45 53 43 22   "ASC" or "DESC"
3a60: 20 6b 65 79 77 6f 72 64 73 0a 74 6f 20 69 6e 64   keywords.to ind
3a70: 69 63 61 74 65 20 73 6f 72 74 20 6f 72 64 65 72  icate sort order
3a80: 2e 20 20 54 68 65 20 73 6f 72 74 20 6f 72 64 65  .  The sort orde
3a90: 72 20 6d 61 79 20 6f 72 20 6d 61 79 20 6e 6f 74  r may or may not
3aa0: 20 62 65 20 69 67 6e 6f 72 65 64 20 64 65 70 65   be ignored depe
3ab0: 6e 64 69 6e 67 0a 6f 6e 20 74 68 65 20 64 61 74  nding.on the dat
3ac0: 61 62 61 73 65 20 66 69 6c 65 20 66 6f 72 6d 61  abase file forma
3ad0: 74 2e 20 20 54 68 65 20 22 6c 65 67 61 63 79 22  t.  The "legacy"
3ae0: 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 69 67 6e   file format ign
3af0: 6f 72 65 73 20 69 6e 64 65 78 0a 73 6f 72 74 20  ores index.sort 
3b00: 6f 72 64 65 72 2e 20 20 54 68 65 20 64 65 73 63  order.  The desc
3b10: 65 6e 64 69 6e 67 20 69 6e 64 65 78 20 66 69 6c  ending index fil
3b20: 65 20 66 6f 72 6d 61 74 20 74 61 6b 65 73 20 69  e format takes i
3b30: 6e 64 65 78 20 73 6f 72 74 20 6f 72 64 65 72 0a  ndex sort order.
3b40: 69 6e 74 6f 20 61 63 63 6f 75 6e 74 2e 20 20 4f  into account.  O
3b50: 6e 6c 79 20 63 6f 70 69 65 73 20 6f 66 20 53 51  nly copies of SQ
3b60: 4c 69 74 65 20 6e 65 77 65 72 20 74 68 61 6e 20  Lite newer than 
3b70: 5b 76 65 72 73 69 6f 6e 20 33 2e 33 2e 30 5d 20  [version 3.3.0] 
3b80: 0a 28 72 65 6c 65 61 73 65 64 20 6f 6e 20 32 30  .(released on 20
3b90: 30 36 2d 30 31 2d 31 30 29 20 61 72 65 20 61 62  06-01-10) are ab
3ba0: 6c 65 20 74 6f 20 75 6e 64 65 72 73 74 61 6e 64  le to understand
3bb0: 20 74 68 65 20 6e 65 77 65 72 20 64 65 73 63 65   the newer desce
3bc0: 6e 64 69 6e 67 0a 69 6e 64 65 78 20 66 69 6c 65  nding.index file
3bd0: 20 66 6f 72 6d 61 74 20 61 6e 64 20 73 6f 20 66   format and so f
3be0: 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  or compatibility
3bf0: 20 77 69 74 68 20 6f 6c 64 65 72 20 76 65 72 73   with older vers
3c00: 69 6f 6e 73 20 6f 66 0a 53 51 4c 69 74 65 2c 20  ions of.SQLite, 
3c10: 74 68 65 20 6c 65 67 61 63 79 20 66 69 6c 65 20  the legacy file 
3c20: 66 6f 72 6d 61 74 20 69 73 20 67 65 6e 65 72 61  format is genera
3c30: 74 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 20  ted by default. 
3c40: 20 55 73 65 20 74 68 65 0a 5b 6c 65 67 61 63 79   Use the.[legacy
3c50: 5f 66 69 6c 65 5f 66 6f 72 6d 61 74 5d 20 70 72  _file_format] pr
3c60: 61 67 6d 61 20 74 6f 20 6d 6f 64 69 66 79 20 74  agma to modify t
3c70: 68 69 73 20 62 65 68 61 76 69 6f 72 20 61 6e 64  his behavior and
3c80: 20 67 65 6e 65 72 61 74 65 0a 64 61 74 61 62 61   generate.databa
3c90: 73 65 73 20 74 68 61 74 20 75 73 65 20 74 68 65  ses that use the
3ca0: 20 6e 65 77 65 72 20 66 69 6c 65 20 66 6f 72 6d   newer file form
3cb0: 61 74 2e 20 20 46 75 74 75 72 65 20 76 65 72 73  at.  Future vers
3cc0: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 0a 6d  ions of SQLite.m
3cd0: 61 79 20 62 65 67 69 6e 20 74 6f 20 67 65 6e 65  ay begin to gene
3ce0: 72 61 74 65 20 74 68 65 20 6e 65 77 65 72 20 66  rate the newer f
3cf0: 69 6c 65 20 66 6f 72 6d 61 74 20 62 79 20 64 65  ile format by de
3d00: 66 61 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  fault.</p>..<p>T
3d10: 68 65 20 43 4f 4c 4c 41 54 45 20 63 6c 61 75 73  he COLLATE claus
3d20: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 65 61 63 68  e following each
3d30: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 64 65 66   column name def
3d40: 69 6e 65 73 20 61 20 63 6f 6c 6c 61 74 69 6e 67  ines a collating
3d50: 0a 73 65 71 75 65 6e 63 65 20 75 73 65 64 20 66  .sequence used f
3d60: 6f 72 20 74 65 78 74 20 65 6e 74 69 72 65 73 20  or text entires 
3d70: 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20  in that column. 
3d80: 20 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6c   The default col
3d90: 6c 61 74 69 6e 67 0a 73 65 71 75 65 6e 63 65 20  lating.sequence 
3da0: 69 73 20 74 68 65 20 63 6f 6c 6c 61 74 69 6e 67  is the collating
3db0: 20 73 65 71 75 65 6e 63 65 20 64 65 66 69 6e 65   sequence define
3dc0: 64 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d  d for that colum
3dd0: 6e 20 69 6e 20 74 68 65 0a 5b 43 52 45 41 54 45  n in the.[CREATE
3de0: 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65 6e   TABLE] statemen
3df0: 74 2e 20 20 4f 72 20 69 66 20 6e 6f 20 63 6f 6c  t.  Or if no col
3e00: 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20  lating sequence 
3e10: 69 73 20 6f 74 68 65 72 77 69 73 65 20 64 65 66  is otherwise def
3e20: 69 6e 65 64 2c 0a 74 68 65 20 62 75 69 6c 74 2d  ined,.the built-
3e30: 69 6e 20 42 49 4e 41 52 59 20 63 6f 6c 6c 61 74  in BINARY collat
3e40: 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69 73 20  ing sequence is 
3e50: 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  used.</p>..<p>Th
3e60: 65 72 65 20 61 72 65 20 6e 6f 20 61 72 62 69 74  ere are no arbit
3e70: 72 61 72 79 20 6c 69 6d 69 74 73 20 6f 6e 20 74  rary limits on t
3e80: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e 64  he number of ind
3e90: 69 63 65 73 20 74 68 61 74 20 63 61 6e 20 62 65  ices that can be
3ea0: 0a 61 74 74 61 63 68 65 64 20 74 6f 20 61 20 73  .attached to a s
3eb0: 69 6e 67 6c 65 20 74 61 62 6c 65 2e 20 20 54 68  ingle table.  Th
3ec0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
3ed0: 6d 6e 73 20 69 6e 20 61 6e 20 69 6e 64 65 78 20  mns in an index 
3ee0: 69 73 20 0a 6c 69 6d 69 74 65 64 20 74 6f 20 5b  is .limited to [
3ef0: 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d  SQLITE_MAX_COLUM
3f00: 4e 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74  N].</p>..<p>If t
3f10: 68 65 20 55 4e 49 51 55 45 20 6b 65 79 77 6f 72  he UNIQUE keywor
3f20: 64 20 61 70 70 65 61 72 73 20 62 65 74 77 65 65  d appears betwee
3f30: 6e 20 43 52 45 41 54 45 20 61 6e 64 20 49 4e 44  n CREATE and IND
3f40: 45 58 20 74 68 65 6e 20 64 75 70 6c 69 63 61 74  EX then duplicat
3f50: 65 0a 69 6e 64 65 78 20 65 6e 74 72 69 65 73 20  e.index entries 
3f60: 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e  are not allowed.
3f70: 20 20 41 6e 79 20 61 74 74 65 6d 70 74 20 74 6f    Any attempt to
3f80: 20 69 6e 73 65 72 74 20 61 20 64 75 70 6c 69 63   insert a duplic
3f90: 61 74 65 20 65 6e 74 72 79 0a 77 69 6c 6c 20 72  ate entry.will r
3fa0: 65 73 75 6c 74 20 69 6e 20 61 6e 20 65 72 72 6f  esult in an erro
3fb0: 72 2e 20 20 46 6f 72 20 74 68 65 20 70 75 72 70  r.  For the purp
3fc0: 6f 73 65 73 20 6f 66 20 75 6e 69 71 75 65 20 69  oses of unique i
3fd0: 6e 64 69 63 65 73 2c 20 61 6c 6c 20 4e 55 4c 4c  ndices, all NULL
3fe0: 20 76 61 6c 75 65 73 0a 61 72 65 20 63 6f 6e 73   values.are cons
3ff0: 69 64 65 72 65 64 20 74 6f 20 64 69 66 66 65 72  idered to differ
4000: 65 6e 74 20 66 72 6f 6d 20 61 6c 6c 20 6f 74 68  ent from all oth
4010: 65 72 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61  er NULL values a
4020: 6e 64 20 61 72 65 20 74 68 75 73 20 75 6e 69 71  nd are thus uniq
4030: 75 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ue.</p>..<p>The 
4040: 74 65 78 74 0a 6f 66 20 65 61 63 68 20 43 52 45  text.of each CRE
4050: 41 54 45 20 49 4e 44 45 58 20 73 74 61 74 65 6d  ATE INDEX statem
4060: 65 6e 74 20 69 73 20 73 74 6f 72 65 64 20 69 6e  ent is stored in
4070: 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d   the <b>sqlite_m
4080: 61 73 74 65 72 3c 2f 62 3e 0a 6f 72 20 3c 62 3e  aster</b>.or <b>
4090: 73 71 6c 69 74 65 5f 74 65 6d 70 5f 6d 61 73 74  sqlite_temp_mast
40a0: 65 72 3c 2f 62 3e 20 74 61 62 6c 65 2c 20 64 65  er</b> table, de
40b0: 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74 68  pending on wheth
40c0: 65 72 20 74 68 65 20 74 61 62 6c 65 0a 62 65 69  er the table.bei
40d0: 6e 67 20 69 6e 64 65 78 65 64 20 69 73 20 74 65  ng indexed is te
40e0: 6d 70 6f 72 61 72 79 2e 20 20 45 76 65 72 79 20  mporary.  Every 
40f0: 74 69 6d 65 20 74 68 65 20 64 61 74 61 62 61 73  time the databas
4100: 65 20 69 73 20 6f 70 65 6e 65 64 2c 0a 61 6c 6c  e is opened,.all
4110: 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 73 74   CREATE INDEX st
4120: 61 74 65 6d 65 6e 74 73 0a 61 72 65 20 72 65 61  atements.are rea
4130: 64 20 66 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71  d from the <b>sq
4140: 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 20  lite_master</b> 
4150: 74 61 62 6c 65 20 61 6e 64 20 75 73 65 64 20 74  table and used t
4160: 6f 20 72 65 67 65 6e 65 72 61 74 65 0a 53 51 4c  o regenerate.SQL
4170: 69 74 65 27 73 20 69 6e 74 65 72 6e 61 6c 20 72  ite's internal r
4180: 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66  epresentation of
4190: 20 74 68 65 20 69 6e 64 65 78 20 6c 61 79 6f 75   the index layou
41a0: 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68  t.</p>..<p>If th
41b0: 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20 4e 4f  e optional IF NO
41c0: 54 20 45 58 49 53 54 53 20 63 6c 61 75 73 65 20  T EXISTS clause 
41d0: 69 73 20 70 72 65 73 65 6e 74 20 61 6e 64 20 61  is present and a
41e0: 6e 6f 74 68 65 72 20 69 6e 64 65 78 0a 77 69 74  nother index.wit
41f0: 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 20  h the same name 
4200: 61 6c 65 61 64 79 20 65 78 69 73 74 73 2c 20 74  aleady exists, t
4210: 68 65 6e 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64  hen this command
4220: 20 62 65 63 6f 6d 65 73 20 61 20 6e 6f 2d 6f 70   becomes a no-op
4230: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 64 65 78 65  .</p>..<p>Indexe
4240: 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 77 69  s are removed wi
4250: 74 68 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22  th the <a href="
4260: 6c 61 6e 67 5f 64 72 6f 70 69 6e 64 65 78 2e 68  lang_dropindex.h
4270: 74 6d 6c 22 3e 44 52 4f 50 20 49 4e 44 45 58 3c  tml">DROP INDEX<
4280: 2f 61 3e 20 0a 63 6f 6d 6d 61 6e 64 2e 3c 2f 70  /a> .command.</p
4290: 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  >...<tcl>.######
42a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42e0: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
42f0: 20 7b 43 52 45 41 54 45 20 54 41 42 4c 45 7d 20   {CREATE TABLE} 
4300: 7b 63 72 65 61 74 65 74 61 62 6c 65 7d 20 7b 7b  {createtable} {{
4310: 43 52 45 41 54 45 20 54 41 42 4c 45 7d 7d 0a 0a  CREATE TABLE}}..
4320: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 72  BubbleDiagram cr
4330: 65 61 74 65 2d 74 61 62 6c 65 2d 73 74 6d 74 20  eate-table-stmt 
4340: 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  1.BubbleDiagram 
4350: 63 6f 6c 75 6d 6e 2d 64 65 66 0a 42 75 62 62 6c  column-def.Bubbl
4360: 65 44 69 61 67 72 61 6d 20 74 79 70 65 2d 6e 61  eDiagram type-na
4370: 6d 65 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  me.BubbleDiagram
4380: 20 63 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72 61 69   column-constrai
4390: 6e 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  nt.BubbleDiagram
43a0: 20 74 61 62 6c 65 2d 63 6f 6e 73 74 72 61 69 6e   table-constrain
43b0: 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  t.BubbleDiagram 
43c0: 66 6f 72 65 69 67 6e 2d 6b 65 79 2d 63 6c 61 75  foreign-key-clau
43d0: 73 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 41 20  se.</tcl>..<p>A 
43e0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61  CREATE TABLE sta
43f0: 74 65 6d 65 6e 74 20 69 73 20 62 61 73 69 63 61  tement is basica
4400: 6c 6c 79 20 74 68 65 20 6b 65 79 77 6f 72 64 73  lly the keywords
4410: 20 22 43 52 45 41 54 45 20 54 41 42 4c 45 22 0a   "CREATE TABLE".
4420: 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 68 65 20  followed by the 
4430: 6e 61 6d 65 20 6f 66 20 61 20 6e 65 77 20 74 61  name of a new ta
4440: 62 6c 65 20 61 6e 64 20 61 20 70 61 72 65 6e 74  ble and a parent
4450: 68 65 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20  hesized list of 
4460: 63 6f 6c 75 6d 6e 0a 64 65 66 69 6e 69 74 69 6f  column.definitio
4470: 6e 73 20 61 6e 64 20 63 6f 6e 73 74 72 61 69 6e  ns and constrain
4480: 74 73 2e 20 20 0a 54 61 62 6c 65 73 20 6e 61 6d  ts.  .Tables nam
4490: 65 73 20 74 68 61 74 20 62 65 67 69 6e 20 77 69  es that begin wi
44a0: 74 68 20 22 3c 62 3e 73 71 6c 69 74 65 5f 3c 2f  th "<b>sqlite_</
44b0: 62 3e 22 20 61 72 65 20 72 65 73 65 72 76 65 64  b>" are reserved
44c0: 0a 66 6f 72 20 75 73 65 20 62 79 20 74 68 65 20  .for use by the 
44d0: 65 6e 67 69 6e 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  engine.</p>..<p>
44e0: 45 61 63 68 20 63 6f 6c 75 6d 6e 20 64 65 66 69  Each column defi
44f0: 6e 69 74 69 6f 6e 20 69 73 20 74 68 65 20 6e 61  nition is the na
4500: 6d 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e  me of the column
4510: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 68 65   followed by the
4520: 0a 64 61 74 61 74 79 70 65 20 66 6f 72 20 74 68  .datatype for th
4530: 61 74 20 63 6f 6c 75 6d 6e 2c 20 74 68 65 6e 20  at column, then 
4540: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 70 74 69  one or more opti
4550: 6f 6e 61 6c 20 63 6f 6c 75 6d 6e 20 63 6f 6e 73  onal column cons
4560: 74 72 61 69 6e 74 73 2e 0a 54 68 65 20 64 61 74  traints..The dat
4570: 61 74 79 70 65 20 66 6f 72 20 74 68 65 20 63 6f  atype for the co
4580: 6c 75 6d 6e 20 64 6f 65 73 20 6e 6f 74 20 72 65  lumn does not re
4590: 73 74 72 69 63 74 20 77 68 61 74 20 64 61 74 61  strict what data
45a0: 20 6d 61 79 20 62 65 20 70 75 74 0a 69 6e 20 74   may be put.in t
45b0: 68 61 74 20 63 6f 6c 75 6d 6e 2e 0a 53 65 65 20  hat column..See 
45c0: 3c 61 20 68 72 65 66 3d 22 64 61 74 61 74 79 70  <a href="datatyp
45d0: 65 33 2e 68 74 6d 6c 22 3e 44 61 74 61 74 79 70  e3.html">Datatyp
45e0: 65 73 20 49 6e 20 53 51 4c 69 74 65 20 56 65 72  es In SQLite Ver
45f0: 73 69 6f 6e 20 33 3c 2f 61 3e 20 66 6f 72 0a 61  sion 3</a> for.a
4600: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
4610: 61 74 69 6f 6e 2e 0a 54 68 65 20 55 4e 49 51 55  ation..The UNIQU
4620: 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 63 61 75  E constraint cau
4630: 73 65 73 20 61 6e 20 75 6e 69 71 75 65 20 69 6e  ses an unique in
4640: 64 65 78 20 74 6f 20 62 65 20 63 72 65 61 74 65  dex to be create
4650: 64 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69  d on the specifi
4660: 65 64 0a 63 6f 6c 75 6d 6e 73 2e 20 20 41 6c 6c  ed.columns.  All
4670: 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61 72 65   NULL values are
4680: 20 63 6f 6e 73 69 64 65 72 65 64 20 64 69 66 66   considered diff
4690: 65 72 65 6e 74 20 66 72 6f 6d 20 65 61 63 68 20  erent from each 
46a0: 6f 74 68 65 72 20 61 6e 64 20 66 72 6f 6d 0a 61  other and from.a
46b0: 6c 6c 20 6f 74 68 65 72 20 76 61 6c 75 65 73 20  ll other values 
46c0: 66 6f 72 20 74 68 65 20 70 75 72 70 6f 73 65 20  for the purpose 
46d0: 6f 66 20 64 65 74 65 72 6d 69 6e 69 6e 67 20 75  of determining u
46e0: 6e 69 71 75 65 6e 65 73 73 2c 20 68 65 6e 63 65  niqueness, hence
46f0: 20 61 20 55 4e 49 51 55 45 0a 63 6f 6c 75 6d 6e   a UNIQUE.column
4700: 20 6d 61 79 20 63 6f 6e 74 61 69 6e 20 6d 75 6c   may contain mul
4710: 74 69 70 6c 65 20 65 6e 74 72 69 65 73 20 77 69  tiple entries wi
4720: 74 68 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  th the value of 
4730: 4e 55 4c 4c 2e 0a 54 68 65 20 43 4f 4c 4c 41 54  NULL..The COLLAT
4740: 45 20 63 6c 61 75 73 65 20 73 70 65 63 69 66 69  E clause specifi
4750: 65 73 20 77 68 61 74 20 74 65 78 74 20 0a 5b 63  es what text .[c
4760: 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f  ollating functio
4770: 6e 5d 20 74 6f 20 75 73 65 20 77 68 65 6e 20 63  n] to use when c
4780: 6f 6d 70 61 72 69 6e 67 20 74 65 78 74 20 65 6e  omparing text en
4790: 74 72 69 65 73 20 66 6f 72 20 74 68 65 20 63 6f  tries for the co
47a0: 6c 75 6d 6e 2e 20 20 0a 54 68 65 20 62 75 69 6c  lumn.  .The buil
47b0: 74 2d 69 6e 20 5b 42 49 4e 41 52 59 5d 20 63 6f  t-in [BINARY] co
47c0: 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  llating function
47d0: 20 69 73 20 75 73 65 64 20 62 79 20 64 65 66 61   is used by defa
47e0: 75 6c 74 2e 0a 3c 70 3e 0a 54 68 65 20 44 45 46  ult..<p>.The DEF
47f0: 41 55 4c 54 20 63 6f 6e 73 74 72 61 69 6e 74 20  AULT constraint 
4800: 73 70 65 63 69 66 69 65 73 20 61 20 64 65 66 61  specifies a defa
4810: 75 6c 74 20 76 61 6c 75 65 20 74 6f 20 75 73 65  ult value to use
4820: 20 77 68 65 6e 20 64 6f 69 6e 67 20 61 6e 20 5b   when doing an [
4830: 49 4e 53 45 52 54 5d 2e 0a 54 68 65 20 76 61 6c  INSERT]..The val
4840: 75 65 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2c 20  ue may be NULL, 
4850: 61 20 73 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e  a string constan
4860: 74 20 6f 72 20 61 20 6e 75 6d 62 65 72 2e 20 53  t or a number. S
4870: 74 61 72 74 69 6e 67 20 77 69 74 68 0a 5b 76 65  tarting with.[ve
4880: 72 73 69 6f 6e 20 33 2e 31 2e 30 5d 2c 0a 74 68  rsion 3.1.0],.th
4890: 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20  e default value 
48a0: 6d 61 79 20 61 6c 73 6f 20 62 65 20 6f 6e 65 20  may also be one 
48b0: 6f 66 20 74 68 65 20 73 70 65 63 69 61 6c 20 63  of the special c
48c0: 61 73 65 2d 69 6e 64 65 70 65 6e 64 61 6e 74 0a  ase-independant.
48d0: 6b 65 79 77 6f 72 64 73 20 43 55 52 52 45 4e 54  keywords CURRENT
48e0: 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44  _TIME, CURRENT_D
48f0: 41 54 45 20 6f 72 20 43 55 52 52 45 4e 54 5f 54  ATE or CURRENT_T
4900: 49 4d 45 53 54 41 4d 50 2e 20 49 66 20 74 68 65  IMESTAMP. If the
4910: 20 76 61 6c 75 65 20 69 73 0a 4e 55 4c 4c 2c 20   value is.NULL, 
4920: 61 20 73 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e  a string constan
4930: 74 20 6f 72 20 6e 75 6d 62 65 72 2c 20 69 74 20  t or number, it 
4940: 69 73 20 6c 69 74 65 72 61 6c 6c 79 20 69 6e 73  is literally ins
4950: 65 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20 63  erted into the c
4960: 6f 6c 75 6d 6e 0a 77 68 65 6e 65 76 65 72 20 61  olumn.whenever a
4970: 6e 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65  n INSERT stateme
4980: 6e 74 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74  nt that does not
4990: 20 73 70 65 63 69 66 79 20 61 20 76 61 6c 75 65   specify a value
49a0: 20 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20   for the column 
49b0: 69 73 0a 65 78 65 63 75 74 65 64 2e 20 49 66 20  is.executed. If 
49c0: 74 68 65 20 76 61 6c 75 65 20 69 73 20 43 55 52  the value is CUR
49d0: 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45  RENT_TIME, CURRE
49e0: 4e 54 5f 44 41 54 45 20 6f 72 20 43 55 52 52 45  NT_DATE or CURRE
49f0: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2c 20 74 68  NT_TIMESTAMP, th
4a00: 65 6e 0a 74 68 65 20 63 75 72 72 65 6e 74 20 55  en.the current U
4a10: 54 43 20 64 61 74 65 20 61 6e 64 2f 6f 72 20 74  TC date and/or t
4a20: 69 6d 65 20 69 73 20 69 6e 73 65 72 74 65 64 20  ime is inserted 
4a30: 69 6e 74 6f 20 74 68 65 20 63 6f 6c 75 6d 6e 73  into the columns
4a40: 2e 20 46 6f 72 0a 43 55 52 52 45 4e 54 5f 54 49  . For.CURRENT_TI
4a50: 4d 45 2c 20 74 68 65 20 66 6f 72 6d 61 74 20 69  ME, the format i
4a60: 73 20 48 48 3a 4d 4d 3a 53 53 2e 20 46 6f 72 20  s HH:MM:SS. For 
4a70: 43 55 52 52 45 4e 54 5f 44 41 54 45 2c 20 59 59  CURRENT_DATE, YY
4a80: 59 59 2d 4d 4d 2d 44 44 2e 20 54 68 65 20 66 6f  YY-MM-DD. The fo
4a90: 72 6d 61 74 0a 66 6f 72 20 43 55 52 52 45 4e 54  rmat.for CURRENT
4aa0: 5f 54 49 4d 45 53 54 41 4d 50 20 69 73 20 22 59  _TIMESTAMP is "Y
4ab0: 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a  YYY-MM-DD HH:MM:
4ac0: 53 53 22 2e 0a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  SS"..</p>..<tcl>
4ad0: 68 64 5f 66 72 61 67 6d 65 6e 74 20 72 6f 77 69  hd_fragment rowi
4ae0: 64 20 7b 49 4e 54 45 47 45 52 20 50 52 49 4d 41  d {INTEGER PRIMA
4af0: 52 59 20 4b 45 59 7d 20 52 4f 57 49 44 3c 2f 74  RY KEY} ROWID</t
4b00: 63 6c 3e 0a 3c 70 3e 53 70 65 63 69 66 79 69 6e  cl>.<p>Specifyin
4b10: 67 20 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20  g a PRIMARY KEY 
4b20: 6e 6f 72 6d 61 6c 6c 79 20 6a 75 73 74 20 63 72  normally just cr
4b30: 65 61 74 65 73 20 61 20 55 4e 49 51 55 45 20 69  eates a UNIQUE i
4b40: 6e 64 65 78 0a 6f 6e 20 74 68 65 20 63 6f 72 72  ndex.on the corr
4b50: 65 73 70 6f 6e 64 69 6e 67 20 63 6f 6c 75 6d 6e  esponding column
4b60: 73 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 66 20  s.  However, if 
4b70: 70 72 69 6d 61 72 79 20 6b 65 79 20 69 73 20 6f  primary key is o
4b80: 6e 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75 6d  n a single colum
4b90: 6e 0a 74 68 61 74 20 68 61 73 20 64 61 74 61 74  n.that has datat
4ba0: 79 70 65 20 49 4e 54 45 47 45 52 2c 20 74 68 65  ype INTEGER, the
4bb0: 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 73  n that column is
4bc0: 20 75 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79   used internally
4bd0: 0a 61 73 20 74 68 65 20 61 63 74 75 61 6c 20 6b  .as the actual k
4be0: 65 79 20 6f 66 20 74 68 65 20 42 2d 54 72 65 65  ey of the B-Tree
4bf0: 20 66 6f 72 20 74 68 65 20 74 61 62 6c 65 2e 20   for the table. 
4c00: 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74   This means that
4c10: 20 74 68 65 20 63 6f 6c 75 6d 6e 0a 6d 61 79 20   the column.may 
4c20: 6f 6e 6c 79 20 68 6f 6c 64 20 75 6e 69 71 75 65  only hold unique
4c30: 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 73 2e   integer values.
4c40: 20 20 28 45 78 63 65 70 74 20 66 6f 72 20 74 68    (Except for th
4c50: 69 73 20 6f 6e 65 20 63 61 73 65 2c 0a 53 51 4c  is one case,.SQL
4c60: 69 74 65 20 69 67 6e 6f 72 65 73 20 74 68 65 20  ite ignores the 
4c70: 64 61 74 61 74 79 70 65 20 73 70 65 63 69 66 69  datatype specifi
4c80: 63 61 74 69 6f 6e 20 6f 66 20 63 6f 6c 75 6d 6e  cation of column
4c90: 73 20 61 6e 64 20 61 6c 6c 6f 77 73 0a 61 6e 79  s and allows.any
4ca0: 20 6b 69 6e 64 20 6f 66 20 64 61 74 61 20 74 6f   kind of data to
4cb0: 20 62 65 20 70 75 74 20 69 6e 20 61 20 63 6f 6c   be put in a col
4cc0: 75 6d 6e 20 72 65 67 61 72 64 6c 65 73 73 20 6f  umn regardless o
4cd0: 66 20 69 74 73 20 64 65 63 6c 61 72 65 64 0a 64  f its declared.d
4ce0: 61 74 61 74 79 70 65 2e 29 20 20 49 66 20 61 20  atatype.)  If a 
4cf0: 74 61 62 6c 65 20 64 6f 65 73 20 6e 6f 74 20 68  table does not h
4d00: 61 76 65 20 61 6e 20 49 4e 54 45 47 45 52 20 50  ave an INTEGER P
4d10: 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d  RIMARY KEY colum
4d20: 6e 2c 0a 74 68 65 6e 20 74 68 65 20 42 2d 54 72  n,.then the B-Tr
4d30: 65 65 20 6b 65 79 20 77 69 6c 6c 20 62 65 20 61  ee key will be a
4d40: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 67   automatically g
4d50: 65 6e 65 72 61 74 65 64 20 69 6e 74 65 67 65 72  enerated integer
4d60: 2e 0a 54 68 65 20 42 2d 54 72 65 65 20 6b 65 79  ..The B-Tree key
4d70: 20 66 6f 72 20 61 20 72 6f 77 20 63 61 6e 20 61   for a row can a
4d80: 6c 77 61 79 73 20 62 65 20 61 63 63 65 73 73 65  lways be accesse
4d90: 64 20 75 73 69 6e 67 20 6f 6e 65 20 6f 66 20 74  d using one of t
4da0: 68 65 0a 73 70 65 63 69 61 6c 20 6e 61 6d 65 73  he.special names
4db0: 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c   "<b>ROWID</b>",
4dc0: 20 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f   "<b>OID</b>", o
4dd0: 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62  r "<b>_ROWID_</b
4de0: 3e 22 2e 0a 54 68 69 73 20 69 73 20 74 72 75 65  >"..This is true
4df0: 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77   regardless of w
4e00: 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68  hether or not th
4e10: 65 72 65 20 69 73 20 61 6e 20 49 4e 54 45 47 45  ere is an INTEGE
4e20: 52 0a 50 52 49 4d 41 52 59 20 4b 45 59 2e 20 20  R.PRIMARY KEY.  
4e30: 41 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41  An INTEGER PRIMA
4e40: 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20 63 61  RY KEY column ca
4e50: 6e 20 61 6c 73 6f 20 69 6e 63 6c 75 64 65 20 74  n also include t
4e60: 68 65 0a 6b 65 79 77 6f 72 64 20 5b 41 55 54 4f  he.keyword [AUTO
4e70: 49 4e 43 52 45 4d 45 4e 54 5d 2e 20 20 54 68 65  INCREMENT].  The
4e80: 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d   [AUTOINCREMENT]
4e90: 20 6b 65 79 77 6f 72 64 20 6d 6f 64 69 66 69 65   keyword modifie
4ea0: 64 20 74 68 65 20 77 61 79 0a 74 68 61 74 20 42  d the way.that B
4eb0: 2d 54 72 65 65 20 6b 65 79 73 20 61 72 65 20 61  -Tree keys are a
4ec0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 67 65 6e  utomatically gen
4ed0: 65 72 61 74 65 64 2e 20 20 41 64 64 69 74 69 6f  erated.  Additio
4ee0: 6e 61 6c 20 64 65 74 61 69 6c 0a 6f 6e 20 61 75  nal detail.on au
4ef0: 74 6f 6d 61 74 69 63 20 42 2d 54 72 65 65 20 6b  tomatic B-Tree k
4f00: 65 79 20 67 65 6e 65 72 61 74 69 6f 6e 20 69 73  ey generation is
4f10: 20 61 76 61 69 6c 61 62 6c 65 0a 3c 61 20 68 72   available.<a hr
4f20: 65 66 3d 22 61 75 74 6f 69 6e 63 2e 68 74 6d 6c  ef="autoinc.html
4f30: 22 3e 73 65 70 61 72 61 74 65 6c 79 3c 2f 61 3e  ">separately</a>
4f40: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 63 63 6f 72 64  .</p>..<p>Accord
4f50: 69 6e 67 20 74 6f 20 74 68 65 20 53 51 4c 20 73  ing to the SQL s
4f60: 74 61 6e 64 61 72 64 2c 20 50 52 49 4d 41 52 59  tandard, PRIMARY
4f70: 20 4b 45 59 20 73 68 6f 75 6c 64 20 69 6d 70 6c   KEY should impl
4f80: 79 20 4e 4f 54 20 4e 55 4c 4c 2e 0a 55 6e 66 6f  y NOT NULL..Unfo
4f90: 72 74 75 6e 61 74 65 6c 79 2c 20 64 75 65 20 74  rtunately, due t
4fa0: 6f 20 61 20 6c 6f 6e 67 2d 73 74 61 6e 64 69 6e  o a long-standin
4fb0: 67 20 63 6f 64 69 6e 67 20 6f 76 65 72 73 69 67  g coding oversig
4fc0: 68 74 2c 20 74 68 69 73 20 69 73 20 6e 6f 74 20  ht, this is not 
4fd0: 0a 74 68 65 20 63 61 73 65 20 69 6e 20 53 51 4c  .the case in SQL
4fe0: 69 74 65 2e 20 20 53 51 4c 69 74 65 20 61 6c 6c  ite.  SQLite all
4ff0: 6f 77 73 20 4e 55 4c 4c 20 76 61 6c 75 65 73 0a  ows NULL values.
5000: 69 6e 20 61 20 50 52 49 4d 41 52 59 20 4b 45 59  in a PRIMARY KEY
5010: 20 63 6f 6c 75 6d 6e 2e 20 20 57 65 20 63 6f 75   column.  We cou
5020: 6c 64 20 63 68 61 6e 67 65 20 53 51 4c 69 74 65  ld change SQLite
5030: 20 74 6f 20 63 6f 6e 66 6f 72 6d 20 74 6f 20 74   to conform to t
5040: 68 65 0a 73 74 61 6e 64 61 72 64 20 28 61 6e 64  he.standard (and
5050: 20 77 65 20 6d 69 67 68 74 20 64 6f 20 73 6f 20   we might do so 
5060: 69 6e 20 74 68 65 20 66 75 74 75 72 65 29 2c 20  in the future), 
5070: 62 75 74 20 62 79 20 74 68 65 20 74 69 6d 65 20  but by the time 
5080: 74 68 65 0a 6f 76 65 72 73 69 67 68 74 20 77 61  the.oversight wa
5090: 73 20 64 69 73 63 6f 76 65 72 65 64 2c 20 53 51  s discovered, SQ
50a0: 4c 69 74 65 20 77 61 73 20 69 6e 20 73 75 63 68  Lite was in such
50b0: 20 77 69 64 65 20 75 73 65 20 74 68 61 74 20 77   wide use that w
50c0: 65 20 66 65 61 72 65 64 0a 62 72 65 61 6b 69 6e  e feared.breakin
50d0: 67 20 6c 65 67 61 63 79 20 63 6f 64 65 20 69 66  g legacy code if
50e0: 20 77 65 20 66 69 78 65 64 20 74 68 65 20 70 72   we fixed the pr
50f0: 6f 62 6c 65 6d 2e 20 20 53 6f 20 66 6f 72 20 6e  oblem.  So for n
5100: 6f 77 20 77 65 20 68 61 76 65 0a 63 68 6f 73 65  ow we have.chose
5110: 6e 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 61 6c  n to continue al
5120: 6c 6f 77 69 6e 67 20 4e 55 4c 4c 73 20 69 6e 20  lowing NULLs in 
5130: 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75  PRIMARY KEY colu
5140: 6d 6e 73 2e 0a 44 65 76 65 6c 6f 70 65 72 73 20  mns..Developers 
5150: 73 68 6f 75 6c 64 20 62 65 20 61 77 61 72 65 2c  should be aware,
5160: 20 68 6f 77 65 76 65 72 2c 20 74 68 61 74 20 77   however, that w
5170: 65 20 6d 61 79 20 63 68 61 6e 67 65 20 53 51 4c  e may change SQL
5180: 69 74 65 20 74 6f 0a 63 6f 6e 66 6f 72 6d 20 74  ite to.conform t
5190: 6f 20 74 68 65 20 53 51 4c 20 73 74 61 6e 64 61  o the SQL standa
51a0: 72 64 20 69 6e 20 66 75 74 75 72 65 20 61 6e 64  rd in future and
51b0: 20 73 68 6f 75 6c 64 20 64 65 73 69 67 6e 20 6e   should design n
51c0: 65 77 20 70 72 6f 67 72 61 6d 73 0a 61 63 63 6f  ew programs.acco
51d0: 72 64 69 6e 67 6c 79 2e 3c 2f 70 3e 0a 0a 3c 70  rdingly.</p>..<p
51e0: 3e 49 66 20 74 68 65 20 22 54 45 4d 50 22 20 6f  >If the "TEMP" o
51f0: 72 20 22 54 45 4d 50 4f 52 41 52 59 22 20 6b 65  r "TEMPORARY" ke
5200: 79 77 6f 72 64 20 6f 63 63 75 72 73 20 69 6e 20  yword occurs in 
5210: 62 65 74 77 65 65 6e 20 22 43 52 45 41 54 45 22  between "CREATE"
5220: 0a 61 6e 64 20 22 54 41 42 4c 45 22 20 74 68 65  .and "TABLE" the
5230: 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  n the table that
5240: 20 69 73 20 63 72 65 61 74 65 64 20 69 73 20 6f   is created is o
5250: 6e 6c 79 20 76 69 73 69 62 6c 65 0a 77 69 74 68  nly visible.with
5260: 69 6e 20 74 68 61 74 20 73 61 6d 65 20 64 61 74  in that same dat
5270: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
5280: 0a 61 6e 64 20 69 73 20 61 75 74 6f 6d 61 74 69  .and is automati
5290: 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 77 68  cally deleted wh
52a0: 65 6e 0a 74 68 65 20 64 61 74 61 62 61 73 65 20  en.the database 
52b0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63 6c  connection is cl
52c0: 6f 73 65 64 2e 20 20 41 6e 79 20 69 6e 64 69 63  osed.  Any indic
52d0: 65 73 20 63 72 65 61 74 65 64 20 6f 6e 20 61 20  es created on a 
52e0: 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 0a  temporary table.
52f0: 61 72 65 20 61 6c 73 6f 20 74 65 6d 70 6f 72 61  are also tempora
5300: 72 79 2e 20 20 54 65 6d 70 6f 72 61 72 79 20 74  ry.  Temporary t
5310: 61 62 6c 65 73 20 61 6e 64 20 69 6e 64 69 63 65  ables and indice
5320: 73 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20  s are stored in 
5330: 61 0a 73 65 70 61 72 61 74 65 20 66 69 6c 65 20  a.separate file 
5340: 64 69 73 74 69 6e 63 74 20 66 72 6f 6d 20 74 68  distinct from th
5350: 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20  e main database 
5360: 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 49  file.</p>..<p> I
5370: 66 20 61 20 26 6c 74 3b 64 61 74 61 62 61 73 65  f a &lt;database
5380: 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 73 70 65  -name&gt; is spe
5390: 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65  cified, then the
53a0: 20 74 61 62 6c 65 20 69 73 20 63 72 65 61 74 65   table is create
53b0: 64 20 69 6e 20 0a 74 68 65 20 6e 61 6d 65 64 20  d in .the named 
53c0: 64 61 74 61 62 61 73 65 2e 20 49 74 20 69 73 20  database. It is 
53d0: 61 6e 20 65 72 72 6f 72 20 74 6f 20 73 70 65 63  an error to spec
53e0: 69 66 79 20 62 6f 74 68 20 61 20 26 6c 74 3b 64  ify both a &lt;d
53f0: 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b  atabase-name&gt;
5400: 0a 61 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65  .and the TEMP ke
5410: 79 77 6f 72 64 2c 20 75 6e 6c 65 73 73 20 74 68  yword, unless th
5420: 65 20 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e  e &lt;database-n
5430: 61 6d 65 26 67 74 3b 20 69 73 20 22 74 65 6d 70  ame&gt; is "temp
5440: 22 2e 20 49 66 20 6e 6f 0a 64 61 74 61 62 61 73  ". If no.databas
5450: 65 20 6e 61 6d 65 20 69 73 20 73 70 65 63 69 66  e name is specif
5460: 69 65 64 2c 20 61 6e 64 20 74 68 65 20 54 45 4d  ied, and the TEM
5470: 50 20 6b 65 79 77 6f 72 64 20 69 73 20 6e 6f 74  P keyword is not
5480: 20 70 72 65 73 65 6e 74 2c 0a 74 68 65 20 74 61   present,.the ta
5490: 62 6c 65 20 69 73 20 63 72 65 61 74 65 64 20 69  ble is created i
54a0: 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  n the main datab
54b0: 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ase.</p>..<p>The
54c0: 20 6f 70 74 69 6f 6e 61 6c 20 5b 63 6f 6e 66 6c   optional [confl
54d0: 69 63 74 20 63 6c 61 75 73 65 5d 20 66 6f 6c 6c  ict clause] foll
54e0: 6f 77 69 6e 67 20 65 61 63 68 20 63 6f 6e 73 74  owing each const
54f0: 72 61 69 6e 74 0a 61 6c 6c 6f 77 73 20 74 68 65  raint.allows the
5500: 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f   specification o
5510: 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65  f an alternative
5520: 20 64 65 66 61 75 6c 74 0a 63 6f 6e 73 74 72 61   default.constra
5530: 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73  int conflict res
5540: 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68  olution algorith
5550: 6d 20 66 6f 72 20 74 68 61 74 20 63 6f 6e 73 74  m for that const
5560: 72 61 69 6e 74 2e 0a 54 68 65 20 64 65 66 61 75  raint..The defau
5570: 6c 74 20 69 73 20 61 62 6f 72 74 20 41 42 4f 52  lt is abort ABOR
5580: 54 2e 20 20 44 69 66 66 65 72 65 6e 74 20 63 6f  T.  Different co
5590: 6e 73 74 72 61 69 6e 74 73 20 77 69 74 68 69 6e  nstraints within
55a0: 20 74 68 65 20 73 61 6d 65 0a 74 61 62 6c 65 20   the same.table 
55b0: 6d 61 79 20 68 61 76 65 20 64 69 66 66 65 72 65  may have differe
55c0: 6e 74 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 6c  nt default confl
55d0: 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  ict resolution a
55e0: 6c 67 6f 72 69 74 68 6d 73 2e 0a 49 66 20 61 6e  lgorithms..If an
55f0: 20 5b 49 4e 53 45 52 54 5d 20 6f 72 20 5b 55 50   [INSERT] or [UP
5600: 44 41 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 20  DATE] statement 
5610: 73 70 65 63 69 66 69 65 73 20 61 20 64 69 66 66  specifies a diff
5620: 65 72 65 6e 74 20 63 6f 6e 66 6c 69 63 74 0a 72  erent conflict.r
5630: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
5640: 74 68 6d 2c 20 74 68 65 6e 20 74 68 61 74 20 61  thm, then that a
5650: 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64  lgorithm is used
5660: 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65   in place of the
5670: 0a 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74  .default algorit
5680: 68 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e 20  hm specified in 
5690: 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45  the CREATE TABLE
56a0: 20 73 74 61 74 65 6d 65 6e 74 2e 0a 53 65 65 20   statement..See 
56b0: 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c  the section titl
56c0: 65 64 0a 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d  ed.[ON CONFLICT]
56d0: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
56e0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e  information.</p>
56f0: 0a 0a 3c 70 3e 43 48 45 43 4b 20 63 6f 6e 73 74  ..<p>CHECK const
5700: 72 61 69 6e 74 73 20 61 72 65 20 73 75 70 70 6f  raints are suppo
5710: 72 74 65 64 20 61 73 20 6f 66 20 5b 76 65 72 73  rted as of [vers
5720: 69 6f 6e 20 33 2e 33 2e 30 5d 2e 20 20 50 72 69  ion 3.3.0].  Pri
5730: 6f 72 0a 74 6f 20 76 65 72 73 69 6f 6e 20 33 2e  or.to version 3.
5740: 33 2e 30 2c 20 43 48 45 43 4b 20 63 6f 6e 73 74  3.0, CHECK const
5750: 72 61 69 6e 74 73 20 77 65 72 65 20 70 61 72 73  raints were pars
5760: 65 64 20 62 75 74 20 6e 6f 74 20 65 6e 66 6f 72  ed but not enfor
5770: 63 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ced.</p>..<p>The
5780: 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
5790: 6e 73 20 69 6e 20 61 20 74 61 62 6c 65 20 69 73  ns in a table is
57a0: 20 6c 69 6d 69 74 65 64 20 62 79 20 74 68 65 0a   limited by the.
57b0: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c 55  [SQLITE_MAX_COLU
57c0: 4d 4e 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  MN] compile-time
57d0: 20 70 61 72 61 6d 65 74 65 72 2e 0a 41 20 73 69   parameter..A si
57e0: 6e 67 6c 65 20 72 6f 77 20 6f 66 20 61 20 74 61  ngle row of a ta
57f0: 62 6c 65 20 63 61 6e 6e 6f 74 20 73 74 6f 72 65  ble cannot store
5800: 20 6d 6f 72 65 20 74 68 61 6e 0a 5b 53 51 4c 49   more than.[SQLI
5810: 54 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d 20 62  TE_MAX_LENGTH] b
5820: 79 74 65 73 20 6f 66 20 64 61 74 61 2e 0a 42 6f  ytes of data..Bo
5830: 74 68 20 6f 66 20 74 68 65 73 65 20 6c 69 6d 69  th of these limi
5840: 74 73 20 63 61 6e 20 62 65 20 6c 6f 77 65 72 65  ts can be lowere
5850: 64 20 61 74 20 72 75 6e 74 69 6d 65 20 75 73 69  d at runtime usi
5860: 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f  ng the.[sqlite3_
5870: 6c 69 6d 69 74 28 29 5d 20 43 2f 43 2b 2b 20 69  limit()] C/C++ i
5880: 6e 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 0a  nterface.</p>...
5890: 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20 54 41  <p>The CREATE TA
58a0: 42 4c 45 20 41 53 20 66 6f 72 6d 20 64 65 66 69  BLE AS form defi
58b0: 6e 65 73 20 74 68 65 20 74 61 62 6c 65 20 74 6f  nes the table to
58c0: 20 62 65 0a 74 68 65 20 72 65 73 75 6c 74 20 73   be.the result s
58d0: 65 74 20 6f 66 20 61 20 71 75 65 72 79 2e 20 20  et of a query.  
58e0: 54 68 65 20 6e 61 6d 65 73 20 6f 66 20 74 68 65  The names of the
58f0: 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 73 20 61   table columns a
5900: 72 65 0a 74 68 65 20 6e 61 6d 65 73 20 6f 66 20  re.the names of 
5910: 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74  the columns in t
5920: 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70 3e 0a 0a  he result.</p>..
5930: 3c 70 3e 54 68 65 20 74 65 78 74 0a 6f 66 20 65  <p>The text.of e
5940: 61 63 68 20 43 52 45 41 54 45 20 54 41 42 4c 45  ach CREATE TABLE
5950: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73 74   statement is st
5960: 6f 72 65 64 20 69 6e 20 74 68 65 20 3c 62 3e 73  ored in the <b>s
5970: 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e  qlite_master</b>
5980: 0a 74 61 62 6c 65 2e 20 20 45 76 65 72 79 20 74  .table.  Every t
5990: 69 6d 65 20 74 68 65 20 64 61 74 61 62 61 73 65  ime the database
59a0: 20 69 73 20 6f 70 65 6e 65 64 2c 20 61 6c 6c 20   is opened, all 
59b0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61  CREATE TABLE sta
59c0: 74 65 6d 65 6e 74 73 0a 61 72 65 20 72 65 61 64  tements.are read
59d0: 20 66 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c   from the <b>sql
59e0: 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74  ite_master</b> t
59f0: 61 62 6c 65 20 61 6e 64 20 75 73 65 64 20 74 6f  able and used to
5a00: 20 72 65 67 65 6e 65 72 61 74 65 0a 53 51 4c 69   regenerate.SQLi
5a10: 74 65 27 73 20 69 6e 74 65 72 6e 61 6c 20 72 65  te's internal re
5a20: 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20  presentation of 
5a30: 74 68 65 20 74 61 62 6c 65 20 6c 61 79 6f 75 74  the table layout
5a40: 2e 0a 49 66 20 74 68 65 20 6f 72 69 67 69 6e 61  ..If the origina
5a50: 6c 20 63 6f 6d 6d 61 6e 64 20 77 61 73 20 61 20  l command was a 
5a60: 43 52 45 41 54 45 20 54 41 42 4c 45 20 41 53 20  CREATE TABLE AS 
5a70: 74 68 65 6e 20 74 68 65 6e 20 61 6e 20 65 71 75  then then an equ
5a80: 69 76 61 6c 65 6e 74 0a 43 52 45 41 54 45 20 54  ivalent.CREATE T
5a90: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69  ABLE statement i
5aa0: 73 20 73 79 6e 74 68 65 73 69 7a 65 64 20 61 6e  s synthesized an
5ab0: 64 20 73 74 6f 72 65 20 69 6e 20 3c 62 3e 73 71  d store in <b>sq
5ac0: 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a  lite_master</b>.
5ad0: 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20  in place of the 
5ae0: 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64  original command
5af0: 2e 0a 54 68 65 20 74 65 78 74 20 6f 66 20 43 52  ..The text of CR
5b00: 45 41 54 45 20 54 45 4d 50 4f 52 41 52 59 20 54  EATE TEMPORARY T
5b10: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 73 20  ABLE statements 
5b20: 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68  are stored in th
5b30: 65 0a 3c 62 3e 73 71 6c 69 74 65 5f 74 65 6d 70  e.<b>sqlite_temp
5b40: 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c  _master</b> tabl
5b50: 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74  e..</p>..<p>If t
5b60: 68 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20 4e  he optional IF N
5b70: 4f 54 20 45 58 49 53 54 53 20 63 6c 61 75 73 65  OT EXISTS clause
5b80: 20 69 73 20 70 72 65 73 65 6e 74 20 61 6e 64 20   is present and 
5b90: 61 6e 6f 74 68 65 72 20 74 61 62 6c 65 0a 77 69  another table.wi
5ba0: 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65  th the same name
5bb0: 20 61 6c 65 61 64 79 20 65 78 69 73 74 73 2c 20   aleady exists, 
5bc0: 74 68 65 6e 20 74 68 69 73 20 63 6f 6d 6d 61 6e  then this comman
5bd0: 64 20 62 65 63 6f 6d 65 73 20 61 20 6e 6f 2d 6f  d becomes a no-o
5be0: 70 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65  p.</p>..<p>Table
5bf0: 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73  s are removed us
5c00: 69 6e 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d  ing the <a href=
5c10: 22 6c 61 6e 67 5f 64 72 6f 70 74 61 62 6c 65 2e  "lang_droptable.
5c20: 68 74 6d 6c 22 3e 44 52 4f 50 20 54 41 42 4c 45  html">DROP TABLE
5c30: 3c 2f 61 3e 20 0a 73 74 61 74 65 6d 65 6e 74 2e  </a> .statement.
5c40: 20 20 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23    </p>..<tcl>.##
5c50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5c60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5c70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5c80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5c90: 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
5ca0: 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 54 52 49  tion {CREATE TRI
5cb0: 47 47 45 52 7d 20 63 72 65 61 74 65 74 72 69 67  GGER} createtrig
5cc0: 67 65 72 20 7b 7b 43 52 45 41 54 45 20 54 52 49  ger {{CREATE TRI
5cd0: 47 47 45 52 7d 7d 0a 0a 42 75 62 62 6c 65 44 69  GGER}}..BubbleDi
5ce0: 61 67 72 61 6d 20 63 72 65 61 74 65 2d 74 72 69  agram create-tri
5cf0: 67 67 65 72 2d 73 74 6d 74 20 31 0a 3c 2f 74 63  gger-stmt 1.</tc
5d00: 6c 3e 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41 54  l>..<p>The CREAT
5d10: 45 20 54 52 49 47 47 45 52 20 73 74 61 74 65 6d  E TRIGGER statem
5d20: 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20 61  ent is used to a
5d30: 64 64 20 74 72 69 67 67 65 72 73 20 74 6f 20 74  dd triggers to t
5d40: 68 65 20 0a 64 61 74 61 62 61 73 65 20 73 63 68  he .database sch
5d50: 65 6d 61 2e 20 54 72 69 67 67 65 72 73 20 61 72  ema. Triggers ar
5d60: 65 20 64 61 74 61 62 61 73 65 20 6f 70 65 72 61  e database opera
5d70: 74 69 6f 6e 73 20 28 74 68 65 20 3c 69 3e 74 72  tions (the <i>tr
5d80: 69 67 67 65 72 2d 61 63 74 69 6f 6e 3c 2f 69 3e  igger-action</i>
5d90: 29 20 0a 74 68 61 74 20 61 72 65 20 61 75 74 6f  ) .that are auto
5da0: 6d 61 74 69 63 61 6c 6c 79 20 70 65 72 66 6f 72  matically perfor
5db0: 6d 65 64 20 77 68 65 6e 20 61 20 73 70 65 63 69  med when a speci
5dc0: 66 69 65 64 20 64 61 74 61 62 61 73 65 20 65 76  fied database ev
5dd0: 65 6e 74 20 28 74 68 65 0a 3c 69 3e 64 61 74 61  ent (the.<i>data
5de0: 62 61 73 65 2d 65 76 65 6e 74 3c 2f 69 3e 29 20  base-event</i>) 
5df0: 6f 63 63 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a 3c  occurs.  </p>..<
5e00: 70 3e 41 20 74 72 69 67 67 65 72 20 6d 61 79 20  p>A trigger may 
5e10: 62 65 20 73 70 65 63 69 66 69 65 64 20 74 6f 20  be specified to 
5e20: 66 69 72 65 20 77 68 65 6e 65 76 65 72 20 61 20  fire whenever a 
5e30: 5b 44 45 4c 45 54 45 5d 2c 20 5b 49 4e 53 45 52  [DELETE], [INSER
5e40: 54 5d 2c 0a 6f 72 20 5b 55 50 44 41 54 45 5d 20  T],.or [UPDATE] 
5e50: 6f 66 20 61 0a 70 61 72 74 69 63 75 6c 61 72 20  of a.particular 
5e60: 64 61 74 61 62 61 73 65 20 74 61 62 6c 65 20 6f  database table o
5e70: 63 63 75 72 73 2c 20 6f 72 20 77 68 65 6e 65 76  ccurs, or whenev
5e80: 65 72 20 61 6e 20 5b 55 50 44 41 54 45 5d 20 6f  er an [UPDATE] o
5e90: 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 0a 73 70  f one or more.sp
5ea0: 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73 20  ecified columns 
5eb0: 6f 66 20 61 20 74 61 62 6c 65 20 61 72 65 20 75  of a table are u
5ec0: 70 64 61 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  pdated.</p>..<p>
5ed0: 41 74 20 74 68 69 73 20 74 69 6d 65 20 53 51 4c  At this time SQL
5ee0: 69 74 65 20 73 75 70 70 6f 72 74 73 20 6f 6e 6c  ite supports onl
5ef0: 79 20 46 4f 52 20 45 41 43 48 20 52 4f 57 20 74  y FOR EACH ROW t
5f00: 72 69 67 67 65 72 73 2c 20 6e 6f 74 20 46 4f 52  riggers, not FOR
5f10: 20 45 41 43 48 0a 53 54 41 54 45 4d 45 4e 54 20   EACH.STATEMENT 
5f20: 74 72 69 67 67 65 72 73 2e 20 48 65 6e 63 65 20  triggers. Hence 
5f30: 65 78 70 6c 69 63 69 74 6c 79 20 73 70 65 63 69  explicitly speci
5f40: 66 79 69 6e 67 20 46 4f 52 20 45 41 43 48 20 52  fying FOR EACH R
5f50: 4f 57 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20  OW is optional. 
5f60: 20 46 4f 52 0a 45 41 43 48 20 52 4f 57 20 69 6d   FOR.EACH ROW im
5f70: 70 6c 69 65 73 20 74 68 61 74 20 74 68 65 20 53  plies that the S
5f80: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 73 70  QL statements sp
5f90: 65 63 69 66 69 65 64 20 61 73 20 3c 69 3e 74 72  ecified as <i>tr
5fa0: 69 67 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20  igger-steps</i> 
5fb0: 0a 6d 61 79 20 62 65 20 65 78 65 63 75 74 65 64  .may be executed
5fc0: 20 28 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74   (depending on t
5fd0: 68 65 20 57 48 45 4e 20 63 6c 61 75 73 65 29 20  he WHEN clause) 
5fe0: 66 6f 72 20 65 61 63 68 20 64 61 74 61 62 61 73  for each databas
5ff0: 65 20 72 6f 77 20 62 65 69 6e 67 0a 69 6e 73 65  e row being.inse
6000: 72 74 65 64 2c 20 75 70 64 61 74 65 64 20 6f 72  rted, updated or
6010: 20 64 65 6c 65 74 65 64 20 62 79 20 74 68 65 20   deleted by the 
6020: 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 69 6e  statement causin
6030: 67 20 74 68 65 20 74 72 69 67 67 65 72 20 74 6f  g the trigger to
6040: 20 66 69 72 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42   fire.</p>..<p>B
6050: 6f 74 68 20 74 68 65 20 57 48 45 4e 20 63 6c 61  oth the WHEN cla
6060: 75 73 65 20 61 6e 64 20 74 68 65 20 3c 69 3e 74  use and the <i>t
6070: 72 69 67 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e  rigger-steps</i>
6080: 20 6d 61 79 20 61 63 63 65 73 73 20 65 6c 65 6d   may access elem
6090: 65 6e 74 73 20 6f 66 20 0a 74 68 65 20 72 6f 77  ents of .the row
60a0: 20 62 65 69 6e 67 20 69 6e 73 65 72 74 65 64 2c   being inserted,
60b0: 20 64 65 6c 65 74 65 64 20 6f 72 20 75 70 64 61   deleted or upda
60c0: 74 65 64 20 75 73 69 6e 67 20 72 65 66 65 72 65  ted using refere
60d0: 6e 63 65 73 20 6f 66 20 74 68 65 20 66 6f 72 6d  nces of the form
60e0: 20 0a 22 4e 45 57 2e 3c 69 3e 63 6f 6c 75 6d 6e   ."NEW.<i>column
60f0: 2d 6e 61 6d 65 3c 2f 69 3e 22 20 61 6e 64 20 22  -name</i>" and "
6100: 4f 4c 44 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61  OLD.<i>column-na
6110: 6d 65 3c 2f 69 3e 22 2c 20 77 68 65 72 65 0a 3c  me</i>", where.<
6120: 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69  i>column-name</i
6130: 3e 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  > is the name of
6140: 20 61 20 63 6f 6c 75 6d 6e 20 66 72 6f 6d 20 74   a column from t
6150: 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 74 68  he table that th
6160: 65 20 74 72 69 67 67 65 72 0a 69 73 20 61 73 73  e trigger.is ass
6170: 6f 63 69 61 74 65 64 20 77 69 74 68 2e 20 4f 4c  ociated with. OL
6180: 44 20 61 6e 64 20 4e 45 57 20 72 65 66 65 72 65  D and NEW refere
6190: 6e 63 65 73 20 6d 61 79 20 6f 6e 6c 79 20 62 65  nces may only be
61a0: 20 75 73 65 64 20 69 6e 20 74 72 69 67 67 65 72   used in trigger
61b0: 73 20 6f 6e 0a 3c 69 3e 74 72 69 67 67 65 72 2d  s on.<i>trigger-
61c0: 65 76 65 6e 74 3c 2f 69 3e 73 20 66 6f 72 20 77  event</i>s for w
61d0: 68 69 63 68 20 74 68 65 79 20 61 72 65 20 72 65  hich they are re
61e0: 6c 65 76 61 6e 74 2c 20 61 73 20 66 6f 6c 6c 6f  levant, as follo
61f0: 77 73 3a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20  ws:</p>..<table 
6200: 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64  border=0 cellpad
6210: 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74  ding=10>.<tr>.<t
6220: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
6230: 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64  lign="right" wid
6240: 74 68 3d 31 32 30 3e 3c 69 3e 49 4e 53 45 52 54  th=120><i>INSERT
6250: 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  </i></td>.<td va
6260: 6c 69 67 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 72  lign="top">NEW r
6270: 65 66 65 72 65 6e 63 65 73 20 61 72 65 20 76 61  eferences are va
6280: 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c  lid</td>.</tr>.<
6290: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
62a0: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
62b0: 74 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e  t" width=120><i>
62c0: 55 50 44 41 54 45 3c 2f 69 3e 3c 2f 74 64 3e 0a  UPDATE</i></td>.
62d0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
62e0: 3e 4e 45 57 20 61 6e 64 20 4f 4c 44 20 72 65 66  >NEW and OLD ref
62f0: 65 72 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69  erences are vali
6300: 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72  d</td>.</tr>.<tr
6310: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
6320: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
6330: 20 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 44 45   width=120><i>DE
6340: 4c 45 54 45 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74  LETE</i></td>.<t
6350: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4f  d valign="top">O
6360: 4c 44 20 72 65 66 65 72 65 6e 63 65 73 20 61 72  LD references ar
6370: 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74  e valid</td>.</t
6380: 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 70 3e  r>.</table>.</p>
6390: 0a 0a 3c 70 3e 49 66 20 61 20 57 48 45 4e 20 63  ..<p>If a WHEN c
63a0: 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c 69 65  lause is supplie
63b0: 64 2c 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  d, the SQL state
63c0: 6d 65 6e 74 73 20 73 70 65 63 69 66 69 65 64 20  ments specified 
63d0: 61 73 20 0a 3c 69 3e 74 72 69 67 67 65 72 2d 73  as .<i>trigger-s
63e0: 74 65 70 73 3c 2f 69 3e 20 61 72 65 20 6f 6e 6c  teps</i> are onl
63f0: 79 20 65 78 65 63 75 74 65 64 20 66 6f 72 20 72  y executed for r
6400: 6f 77 73 20 66 6f 72 20 77 68 69 63 68 20 74 68  ows for which th
6410: 65 20 57 48 45 4e 0a 63 6c 61 75 73 65 20 69 73  e WHEN.clause is
6420: 20 74 72 75 65 2e 20 49 66 20 6e 6f 20 57 48 45   true. If no WHE
6430: 4e 20 63 6c 61 75 73 65 20 69 73 20 73 75 70 70  N clause is supp
6440: 6c 69 65 64 2c 20 74 68 65 20 53 51 4c 20 73 74  lied, the SQL st
6450: 61 74 65 6d 65 6e 74 73 0a 61 72 65 20 65 78 65  atements.are exe
6460: 63 75 74 65 64 20 66 6f 72 20 61 6c 6c 20 72 6f  cuted for all ro
6470: 77 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ws.</p>..<p>The 
6480: 73 70 65 63 69 66 69 65 64 20 3c 69 3e 74 72 69  specified <i>tri
6490: 67 67 65 72 2d 74 69 6d 65 3c 2f 69 3e 20 64 65  gger-time</i> de
64a0: 74 65 72 6d 69 6e 65 73 20 77 68 65 6e 20 74 68  termines when th
64b0: 65 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65  e <i>trigger-ste
64c0: 70 73 3c 2f 69 3e 0a 77 69 6c 6c 20 62 65 20 65  ps</i>.will be e
64d0: 78 65 63 75 74 65 64 20 72 65 6c 61 74 69 76 65  xecuted relative
64e0: 20 74 6f 20 74 68 65 20 69 6e 73 65 72 74 69 6f   to the insertio
64f0: 6e 2c 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20  n, modification 
6500: 6f 72 20 72 65 6d 6f 76 61 6c 20 6f 66 20 74 68  or removal of th
6510: 65 0a 61 73 73 6f 63 69 61 74 65 64 20 72 6f 77  e.associated row
6520: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6e 20 5b 4f 4e  .</p>..<p>An [ON
6530: 20 43 4f 4e 46 4c 49 43 54 5d 20 63 6c 61 75 73   CONFLICT] claus
6540: 65 20 6d 61 79 20 62 65 20 73 70 65 63 69 66 69  e may be specifi
6550: 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 61 6e  ed as part of an
6560: 20 5b 55 50 44 41 54 45 5d 20 6f 72 20 5b 49 4e   [UPDATE] or [IN
6570: 53 45 52 54 5d 0a 3c 69 3e 74 72 69 67 67 65 72  SERT].<i>trigger
6580: 2d 73 74 65 70 3c 2f 69 3e 2e 20 48 6f 77 65 76  -step</i>. Howev
6590: 65 72 20 69 66 20 61 6e 20 5b 4f 4e 20 43 4f 4e  er if an [ON CON
65a0: 46 4c 49 43 54 5d 20 63 6c 61 75 73 65 20 69 73  FLICT] clause is
65b0: 20 73 70 65 63 69 66 69 65 64 20 61 73 20 70 61   specified as pa
65c0: 72 74 20 6f 66 20 0a 74 68 65 20 73 74 61 74 65  rt of .the state
65d0: 6d 65 6e 74 20 63 61 75 73 69 6e 67 20 74 68 65  ment causing the
65e0: 20 74 72 69 67 67 65 72 20 74 6f 20 66 69 72 65   trigger to fire
65f0: 2c 20 74 68 65 6e 20 74 68 69 73 20 63 6f 6e 66  , then this conf
6600: 6c 69 63 74 20 68 61 6e 64 6c 69 6e 67 0a 70 6f  lict handling.po
6610: 6c 69 63 79 20 69 73 20 75 73 65 64 20 69 6e 73  licy is used ins
6620: 74 65 61 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 72  tead.</p>..<p>Tr
6630: 69 67 67 65 72 73 20 61 72 65 20 61 75 74 6f 6d  iggers are autom
6640: 61 74 69 63 61 6c 6c 79 20 64 72 6f 70 70 65 64  atically dropped
6650: 20 77 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20   when the table 
6660: 74 68 61 74 20 74 68 65 79 20 61 72 65 20 0a 61  that they are .a
6670: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 69  ssociated with i
6680: 73 20 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a  s dropped.</p>..
6690: 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74  <tcl>hd_fragment
66a0: 20 69 6e 73 74 65 61 64 5f 6f 66 5f 74 72 69 67   instead_of_trig
66b0: 67 65 72 20 7b 49 4e 53 54 45 41 44 20 4f 46 7d  ger {INSTEAD OF}
66c0: 20 7b 49 4e 53 54 45 41 44 20 4f 46 20 74 72 69   {INSTEAD OF tri
66d0: 67 67 65 72 7d 3c 2f 74 63 6c 3e 0a 3c 70 3e 54  gger}</tcl>.<p>T
66e0: 72 69 67 67 65 72 73 20 6d 61 79 20 62 65 20 63  riggers may be c
66f0: 72 65 61 74 65 64 20 6f 6e 20 5b 76 69 65 77 73  reated on [views
6700: 5d 2c 20 61 73 20 77 65 6c 6c 20 61 73 20 6f 72  ], as well as or
6710: 64 69 6e 61 72 79 20 74 61 62 6c 65 73 2c 20 62  dinary tables, b
6720: 79 0a 73 70 65 63 69 66 79 69 6e 67 20 49 4e 53  y.specifying INS
6730: 54 45 41 44 20 4f 46 20 69 6e 20 74 68 65 20 43  TEAD OF in the C
6740: 52 45 41 54 45 20 54 52 49 47 47 45 52 20 73 74  REATE TRIGGER st
6750: 61 74 65 6d 65 6e 74 2e 20 0a 49 66 20 6f 6e 65  atement. .If one
6760: 20 6f 72 20 6d 6f 72 65 20 4f 4e 20 49 4e 53 45   or more ON INSE
6770: 52 54 2c 20 4f 4e 20 44 45 4c 45 54 45 0a 6f 72  RT, ON DELETE.or
6780: 20 4f 4e 20 55 50 44 41 54 45 20 74 72 69 67 67   ON UPDATE trigg
6790: 65 72 73 20 61 72 65 20 64 65 66 69 6e 65 64 20  ers are defined 
67a0: 6f 6e 20 61 20 76 69 65 77 2c 20 74 68 65 6e 20  on a view, then 
67b0: 69 74 20 69 73 20 6e 6f 74 20 61 6e 0a 65 72 72  it is not an.err
67c0: 6f 72 20 74 6f 20 65 78 65 63 75 74 65 20 61 6e  or to execute an
67d0: 20 49 4e 53 45 52 54 2c 20 44 45 4c 45 54 45 20   INSERT, DELETE 
67e0: 6f 72 20 55 50 44 41 54 45 20 73 74 61 74 65 6d  or UPDATE statem
67f0: 65 6e 74 20 6f 6e 20 74 68 65 20 76 69 65 77 2c  ent on the view,
6800: 20 0a 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20   .respectively. 
6810: 54 68 65 72 65 61 66 74 65 72 2c 0a 65 78 65 63  Thereafter,.exec
6820: 75 74 69 6e 67 20 61 6e 20 49 4e 53 45 52 54 2c  uting an INSERT,
6830: 20 44 45 4c 45 54 45 20 6f 72 20 55 50 44 41 54   DELETE or UPDAT
6840: 45 20 6f 6e 20 74 68 65 20 76 69 65 77 20 63 61  E on the view ca
6850: 75 73 65 73 20 74 68 65 20 61 73 73 6f 63 69 61  uses the associa
6860: 74 65 64 0a 74 72 69 67 67 65 72 73 20 74 6f 20  ted.triggers to 
6870: 66 69 72 65 2e 20 54 68 65 20 72 65 61 6c 20 74  fire. The real t
6880: 61 62 6c 65 73 20 75 6e 64 65 72 6c 79 69 6e 67  ables underlying
6890: 20 74 68 65 20 76 69 65 77 20 61 72 65 20 6e 6f   the view are no
68a0: 74 20 6d 6f 64 69 66 69 65 64 0a 28 65 78 63 65  t modified.(exce
68b0: 70 74 20 70 6f 73 73 69 62 6c 79 20 65 78 70 6c  pt possibly expl
68c0: 69 63 69 74 6c 79 2c 20 62 79 20 61 20 74 72 69  icitly, by a tri
68d0: 67 67 65 72 20 70 72 6f 67 72 61 6d 29 2e 3c 2f  gger program).</
68e0: 70 3e 0a 0a 3c 70 3e 3c 62 3e 45 78 61 6d 70 6c  p>..<p><b>Exampl
68f0: 65 3a 3c 2f 62 3e 3c 2f 70 3e 0a 0a 3c 70 3e 41  e:</b></p>..<p>A
6900: 73 73 75 6d 69 6e 67 20 74 68 61 74 20 63 75 73  ssuming that cus
6910: 74 6f 6d 65 72 20 72 65 63 6f 72 64 73 20 61 72  tomer records ar
6920: 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20  e stored in the 
6930: 22 63 75 73 74 6f 6d 65 72 73 22 20 74 61 62 6c  "customers" tabl
6940: 65 2c 20 61 6e 64 0a 74 68 61 74 20 6f 72 64 65  e, and.that orde
6950: 72 20 72 65 63 6f 72 64 73 20 61 72 65 20 73 74  r records are st
6960: 6f 72 65 64 20 69 6e 20 74 68 65 20 22 6f 72 64  ored in the "ord
6970: 65 72 73 22 20 74 61 62 6c 65 2c 20 74 68 65 20  ers" table, the 
6980: 66 6f 6c 6c 6f 77 69 6e 67 20 74 72 69 67 67 65  following trigge
6990: 72 0a 65 6e 73 75 72 65 73 20 74 68 61 74 20 61  r.ensures that a
69a0: 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 20 6f 72  ll associated or
69b0: 64 65 72 73 20 61 72 65 20 72 65 64 69 72 65 63  ders are redirec
69c0: 74 65 64 20 77 68 65 6e 20 61 20 63 75 73 74 6f  ted when a custo
69d0: 6d 65 72 20 63 68 61 6e 67 65 73 0a 68 69 73 20  mer changes.his 
69e0: 6f 72 20 68 65 72 20 61 64 64 72 65 73 73 3a 3c  or her address:<
69f0: 2f 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61 6d 70 6c  /p>..<tcl>Exampl
6a00: 65 20 7b 0a 43 52 45 41 54 45 20 54 52 49 47 47  e {.CREATE TRIGG
6a10: 45 52 20 75 70 64 61 74 65 5f 63 75 73 74 6f 6d  ER update_custom
6a20: 65 72 5f 61 64 64 72 65 73 73 20 55 50 44 41 54  er_address UPDAT
6a30: 45 20 4f 46 20 61 64 64 72 65 73 73 20 4f 4e 20  E OF address ON 
6a40: 63 75 73 74 6f 6d 65 72 73 20 0a 20 20 42 45 47  customers .  BEG
6a50: 49 4e 0a 20 20 20 20 55 50 44 41 54 45 20 6f 72  IN.    UPDATE or
6a60: 64 65 72 73 20 53 45 54 20 61 64 64 72 65 73 73  ders SET address
6a70: 20 3d 20 6e 65 77 2e 61 64 64 72 65 73 73 20 57   = new.address W
6a80: 48 45 52 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61  HERE customer_na
6a90: 6d 65 20 3d 20 6f 6c 64 2e 6e 61 6d 65 3b 0a 20  me = old.name;. 
6aa0: 20 45 4e 44 3b 0a 7d 3c 2f 74 63 6c 3e 0a 0a 3c   END;.}</tcl>..<
6ab0: 70 3e 57 69 74 68 20 74 68 69 73 20 74 72 69 67  p>With this trig
6ac0: 67 65 72 20 69 6e 73 74 61 6c 6c 65 64 2c 20 65  ger installed, e
6ad0: 78 65 63 75 74 69 6e 67 20 74 68 65 20 73 74 61  xecuting the sta
6ae0: 74 65 6d 65 6e 74 3a 3c 2f 70 3e 0a 0a 3c 74 63  tement:</p>..<tc
6af0: 6c 3e 45 78 61 6d 70 6c 65 20 7b 0a 55 50 44 41  l>Example {.UPDA
6b00: 54 45 20 63 75 73 74 6f 6d 65 72 73 20 53 45 54  TE customers SET
6b10: 20 61 64 64 72 65 73 73 20 3d 20 27 31 20 4d 61   address = '1 Ma
6b20: 69 6e 20 53 74 2e 27 20 57 48 45 52 45 20 6e 61  in St.' WHERE na
6b30: 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e 65 73  me = 'Jack Jones
6b40: 27 3b 0a 7d 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 63  ';.}</tcl>..<p>c
6b50: 61 75 73 65 73 20 74 68 65 20 66 6f 6c 6c 6f 77  auses the follow
6b60: 69 6e 67 20 74 6f 20 62 65 20 61 75 74 6f 6d 61  ing to be automa
6b70: 74 69 63 61 6c 6c 79 20 65 78 65 63 75 74 65 64  tically executed
6b80: 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61 6d  :</p>..<tcl>Exam
6b90: 70 6c 65 20 7b 0a 55 50 44 41 54 45 20 6f 72 64  ple {.UPDATE ord
6ba0: 65 72 73 20 53 45 54 20 61 64 64 72 65 73 73 20  ers SET address 
6bb0: 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e 27 20 57  = '1 Main St.' W
6bc0: 48 45 52 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61  HERE customer_na
6bd0: 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e 65 73  me = 'Jack Jones
6be0: 27 3b 0a 7d 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 4e  ';.}</tcl>..<p>N
6bf0: 6f 74 65 20 74 68 61 74 20 63 75 72 72 65 6e 74  ote that current
6c00: 6c 79 2c 20 74 72 69 67 67 65 72 73 20 6d 61 79  ly, triggers may
6c10: 20 62 65 68 61 76 65 20 6f 64 64 6c 79 20 77 68   behave oddly wh
6c20: 65 6e 20 63 72 65 61 74 65 64 20 6f 6e 20 74 61  en created on ta
6c30: 62 6c 65 73 0a 20 20 77 69 74 68 20 5b 49 4e 54  bles.  with [INT
6c40: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
6c50: 5d 20 66 69 65 6c 64 73 2e 20 49 66 20 61 20 42  ] fields. If a B
6c60: 45 46 4f 52 45 20 74 72 69 67 67 65 72 20 70 72  EFORE trigger pr
6c70: 6f 67 72 61 6d 20 6d 6f 64 69 66 69 65 73 20 74  ogram modifies t
6c80: 68 65 20 0a 20 20 5b 49 4e 54 45 47 45 52 20 50  he .  [INTEGER P
6c90: 52 49 4d 41 52 59 20 4b 45 59 5d 20 66 69 65 6c  RIMARY KEY] fiel
6ca0: 64 20 6f 66 20 61 20 72 6f 77 20 74 68 61 74 20  d of a row that 
6cb0: 77 69 6c 6c 20 62 65 20 73 75 62 73 65 71 75 65  will be subseque
6cc0: 6e 74 6c 79 20 75 70 64 61 74 65 64 20 62 79 20  ntly updated by 
6cd0: 74 68 65 0a 20 20 73 74 61 74 65 6d 65 6e 74 20  the.  statement 
6ce0: 74 68 61 74 20 63 61 75 73 65 73 20 74 68 65 20  that causes the 
6cf0: 74 72 69 67 67 65 72 20 74 6f 20 66 69 72 65 2c  trigger to fire,
6d00: 20 74 68 65 6e 20 74 68 65 20 75 70 64 61 74 65   then the update
6d10: 20 6d 61 79 20 6e 6f 74 20 6f 63 63 75 72 2e 20   may not occur. 
6d20: 0a 20 20 54 68 65 20 77 6f 72 6b 61 72 6f 75 6e  .  The workaroun
6d30: 64 20 69 73 20 74 6f 20 64 65 63 6c 61 72 65 20  d is to declare 
6d40: 74 68 65 20 74 61 62 6c 65 20 77 69 74 68 20 61  the table with a
6d50: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c   PRIMARY KEY col
6d60: 75 6d 6e 20 69 6e 73 74 65 61 64 0a 20 20 6f 66  umn instead.  of
6d70: 20 61 6e 20 5b 49 4e 54 45 47 45 52 20 50 52 49   an [INTEGER PRI
6d80: 4d 41 52 59 20 4b 45 59 5d 20 63 6f 6c 75 6d 6e  MARY KEY] column
6d90: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 73 70 65 63  .</p>..<p>A spec
6da0: 69 61 6c 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  ial SQL function
6db0: 20 52 41 49 53 45 28 29 20 6d 61 79 20 62 65 20   RAISE() may be 
6dc0: 75 73 65 64 20 77 69 74 68 69 6e 20 61 20 74 72  used within a tr
6dd0: 69 67 67 65 72 2d 70 72 6f 67 72 61 6d 2c 0a 77  igger-program,.w
6de0: 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  ith the followin
6df0: 67 20 73 79 6e 74 61 78 3c 2f 70 3e 20 0a 0a 3c  g syntax</p> ..<
6e00: 74 63 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61  tcl>BubbleDiagra
6e10: 6d 20 72 61 69 73 65 2d 66 75 6e 63 74 69 6f 6e  m raise-function
6e20: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 57 68 65 6e 20  </tcl>..<p>When 
6e30: 6f 6e 65 20 6f 66 20 74 68 65 20 66 69 72 73 74  one of the first
6e40: 20 74 68 72 65 65 20 66 6f 72 6d 73 20 69 73 20   three forms is 
6e50: 63 61 6c 6c 65 64 20 64 75 72 69 6e 67 20 74 72  called during tr
6e60: 69 67 67 65 72 2d 70 72 6f 67 72 61 6d 0a 65 78  igger-program.ex
6e70: 65 63 75 74 69 6f 6e 2c 20 74 68 65 20 73 70 65  ecution, the spe
6e80: 63 69 66 69 65 64 20 5b 4f 4e 20 43 4f 4e 46 4c  cified [ON CONFL
6e90: 49 43 54 5d 20 70 72 6f 63 65 73 73 69 6e 67 20  ICT] processing 
6ea0: 69 73 20 70 65 72 66 6f 72 6d 65 64 0a 28 65 69  is performed.(ei
6eb0: 74 68 65 72 20 41 42 4f 52 54 2c 20 46 41 49 4c  ther ABORT, FAIL
6ec0: 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29 20 61 6e   or ROLLBACK) an
6ed0: 64 20 74 68 65 20 63 75 72 72 65 6e 74 20 71 75  d the current qu
6ee0: 65 72 79 20 74 65 72 6d 69 6e 61 74 65 73 2e 0a  ery terminates..
6ef0: 41 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 6f 66  An error code of
6f00: 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41   [SQLITE_CONSTRA
6f10: 49 4e 54 5d 20 69 73 20 72 65 74 75 72 6e 65 64  INT] is returned
6f20: 20 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61 74   to the applicat
6f30: 69 6f 6e 2c 0a 61 6c 6f 6e 67 20 77 69 74 68 20  ion,.along with 
6f40: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 65 72  the specified er
6f50: 72 6f 72 20 6d 65 73 73 61 67 65 2e 3c 2f 70 3e  ror message.</p>
6f60: 0a 0a 3c 70 3e 57 68 65 6e 20 52 41 49 53 45 28  ..<p>When RAISE(
6f70: 49 47 4e 4f 52 45 29 20 69 73 20 63 61 6c 6c 65  IGNORE) is calle
6f80: 64 2c 20 74 68 65 20 72 65 6d 61 69 6e 64 65 72  d, the remainder
6f90: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
6fa0: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 2c  trigger program,
6fb0: 0a 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 74  .the statement t
6fc0: 68 61 74 20 63 61 75 73 65 64 20 74 68 65 20 74  hat caused the t
6fd0: 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20 74  rigger program t
6fe0: 6f 20 65 78 65 63 75 74 65 20 61 6e 64 20 61 6e  o execute and an
6ff0: 79 20 73 75 62 73 65 71 75 65 6e 74 0a 74 72 69  y subsequent.tri
7000: 67 67 65 72 20 70 72 6f 67 72 61 6d 73 20 74 68  gger programs th
7010: 61 74 20 77 6f 75 6c 64 20 6f 66 20 62 65 65 6e  at would of been
7020: 20 65 78 65 63 75 74 65 64 20 61 72 65 20 61 62   executed are ab
7030: 61 6e 64 6f 6e 65 64 2e 20 4e 6f 20 64 61 74 61  andoned. No data
7040: 62 61 73 65 0a 63 68 61 6e 67 65 73 20 61 72 65  base.changes are
7050: 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20 49   rolled back.  I
7060: 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  f the statement 
7070: 74 68 61 74 20 63 61 75 73 65 64 20 74 68 65 20  that caused the 
7080: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 0a  trigger program.
7090: 74 6f 20 65 78 65 63 75 74 65 20 69 73 20 69 74  to execute is it
70a0: 73 65 6c 66 20 70 61 72 74 20 6f 66 20 61 20 74  self part of a t
70b0: 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 2c 20  rigger program, 
70c0: 74 68 65 6e 20 74 68 61 74 20 74 72 69 67 67 65  then that trigge
70d0: 72 20 70 72 6f 67 72 61 6d 0a 72 65 73 75 6d 65  r program.resume
70e0: 73 20 65 78 65 63 75 74 69 6f 6e 20 61 74 20 74  s execution at t
70f0: 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20  he beginning of 
7100: 74 68 65 20 6e 65 78 74 20 73 74 65 70 2e 0a 3c  the next step..<
7110: 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65 72 73  /p>..<p>Triggers
7120: 20 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73 69   are removed usi
7130: 6e 67 20 74 68 65 20 5b 44 52 4f 50 20 54 52 49  ng the [DROP TRI
7140: 47 47 45 52 5d 20 73 74 61 74 65 6d 65 6e 74 2e  GGER] statement.
7150: 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23  </p>...<tcl>.###
7160: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7170: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7190: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
71a0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
71b0: 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 56 49 45  tion {CREATE VIE
71c0: 57 7d 20 7b 63 72 65 61 74 65 76 69 65 77 7d 20  W} {createview} 
71d0: 7b 7b 43 52 45 41 54 45 20 56 49 45 57 7d 20 76  {{CREATE VIEW} v
71e0: 69 65 77 20 76 69 65 77 73 7d 0a 0a 42 75 62 62  iew views}..Bubb
71f0: 6c 65 44 69 61 67 72 61 6d 20 63 72 65 61 74 65  leDiagram create
7200: 2d 76 69 65 77 2d 73 74 6d 74 20 31 0a 3c 2f 74  -view-stmt 1.</t
7210: 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41  cl>..<p>The CREA
7220: 54 45 20 56 49 45 57 20 63 6f 6d 6d 61 6e 64 20  TE VIEW command 
7230: 61 73 73 69 67 6e 73 20 61 20 6e 61 6d 65 20 74  assigns a name t
7240: 6f 20 61 20 70 72 65 2d 70 61 63 6b 61 67 65 64  o a pre-packaged
7250: 20 0a 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f   .<a href="lang_
7260: 73 65 6c 65 63 74 2e 68 74 6d 6c 22 3e 53 45 4c  select.html">SEL
7270: 45 43 54 3c 2f 61 3e 0a 73 74 61 74 65 6d 65 6e  ECT</a>.statemen
7280: 74 2e 20 20 4f 6e 63 65 20 74 68 65 20 76 69 65  t.  Once the vie
7290: 77 20 69 73 20 63 72 65 61 74 65 64 2c 20 69 74  w is created, it
72a0: 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20   can be used in 
72b0: 74 68 65 20 46 52 4f 4d 20 63 6c 61 75 73 65 0a  the FROM clause.
72c0: 6f 66 20 61 6e 6f 74 68 65 72 20 5b 53 45 4c 45  of another [SELE
72d0: 43 54 5d 20 69 6e 20 70 6c 61 63 65 20 6f 66 20  CT] in place of 
72e0: 61 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0a 3c 2f  a table name..</
72f0: 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 22 54  p>..<p>If the "T
7300: 45 4d 50 22 20 6f 72 20 22 54 45 4d 50 4f 52 41  EMP" or "TEMPORA
7310: 52 59 22 20 6b 65 79 77 6f 72 64 20 6f 63 63 75  RY" keyword occu
7320: 72 73 20 69 6e 20 62 65 74 77 65 65 6e 20 22 43  rs in between "C
7330: 52 45 41 54 45 22 0a 61 6e 64 20 22 56 49 45 57  REATE".and "VIEW
7340: 22 20 74 68 65 6e 20 74 68 65 20 76 69 65 77 20  " then the view 
7350: 74 68 61 74 20 69 73 20 63 72 65 61 74 65 64 20  that is created 
7360: 69 73 20 6f 6e 6c 79 20 76 69 73 69 62 6c 65 20  is only visible 
7370: 74 6f 20 74 68 65 0a 70 72 6f 63 65 73 73 20 74  to the.process t
7380: 68 61 74 20 6f 70 65 6e 65 64 20 74 68 65 20 64  hat opened the d
7390: 61 74 61 62 61 73 65 20 61 6e 64 20 69 73 20 61  atabase and is a
73a0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c  utomatically del
73b0: 65 74 65 64 20 77 68 65 6e 0a 74 68 65 20 64 61  eted when.the da
73c0: 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64  tabase is closed
73d0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 49 66 20 61 20  .</p>..<p> If a 
73e0: 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d  &lt;database-nam
73f0: 65 26 67 74 3b 20 69 73 20 73 70 65 63 69 66 69  e&gt; is specifi
7400: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 76 69 65  ed, then the vie
7410: 77 20 69 73 20 63 72 65 61 74 65 64 20 69 6e 20  w is created in 
7420: 0a 74 68 65 20 6e 61 6d 65 64 20 64 61 74 61 62  .the named datab
7430: 61 73 65 2e 20 49 74 20 69 73 20 61 6e 20 65 72  ase. It is an er
7440: 72 6f 72 20 74 6f 20 73 70 65 63 69 66 79 20 62  ror to specify b
7450: 6f 74 68 20 61 20 26 6c 74 3b 64 61 74 61 62 61  oth a &lt;databa
7460: 73 65 2d 6e 61 6d 65 26 67 74 3b 0a 61 6e 64 20  se-name&gt;.and 
7470: 74 68 65 20 54 45 4d 50 20 6b 65 79 77 6f 72 64  the TEMP keyword
7480: 2c 20 75 6e 6c 65 73 73 20 74 68 65 20 26 6c 74  , unless the &lt
7490: 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67  ;database-name&g
74a0: 74 3b 20 69 73 20 22 74 65 6d 70 22 2e 20 49 66  t; is "temp". If
74b0: 20 6e 6f 0a 64 61 74 61 62 61 73 65 20 6e 61 6d   no.database nam
74c0: 65 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20  e is specified, 
74d0: 61 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79  and the TEMP key
74e0: 77 6f 72 64 20 69 73 20 6e 6f 74 20 70 72 65 73  word is not pres
74f0: 65 6e 74 2c 0a 74 68 65 20 74 61 62 6c 65 20 69  ent,.the table i
7500: 73 20 63 72 65 61 74 65 64 20 69 6e 20 74 68 65  s created in the
7510: 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2e 3c   main database.<
7520: 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63 61 6e 6e  /p>..<p>You cann
7530: 6f 74 20 5b 44 45 4c 45 54 45 5d 2c 20 5b 49 4e  ot [DELETE], [IN
7540: 53 45 52 54 5d 2c 20 6f 72 20 5b 55 50 44 41 54  SERT], or [UPDAT
7550: 45 5d 20 61 20 76 69 65 77 2e 20 20 56 69 65 77  E] a view.  View
7560: 73 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79 20  s are read-only 
7570: 0a 69 6e 20 53 51 4c 69 74 65 2e 20 20 48 6f 77  .in SQLite.  How
7580: 65 76 65 72 2c 20 69 6e 20 6d 61 6e 79 20 63 61  ever, in many ca
7590: 73 65 73 20 79 6f 75 20 63 61 6e 20 75 73 65 20  ses you can use 
75a0: 61 6e 0a 5b 49 4e 53 54 45 41 44 20 4f 46 20 74  an.[INSTEAD OF t
75b0: 72 69 67 67 65 72 5d 20 6f 6e 20 74 68 65 20 76  rigger] on the v
75c0: 69 65 77 20 74 6f 20 61 63 63 6f 6d 70 6c 69 73  iew to accomplis
75d0: 68 20 0a 74 68 65 20 73 61 6d 65 20 74 68 69 6e  h .the same thin
75e0: 67 2e 20 20 56 69 65 77 73 20 61 72 65 20 72 65  g.  Views are re
75f0: 6d 6f 76 65 64 20 0a 77 69 74 68 20 74 68 65 20  moved .with the 
7600: 5b 44 52 4f 50 20 56 49 45 57 5d 20 63 6f 6d 6d  [DROP VIEW] comm
7610: 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  and.</p>..<tcl>.
7620: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7630: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7640: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7650: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7660: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
7670: 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 56  ection {CREATE V
7680: 49 52 54 55 41 4c 20 54 41 42 4c 45 7d 20 7b 63  IRTUAL TABLE} {c
7690: 72 65 61 74 65 76 74 61 62 7d 20 7b 7b 43 52 45  reatevtab} {{CRE
76a0: 41 54 45 20 56 49 52 54 55 41 4c 5f 54 41 42 4c  ATE VIRTUAL_TABL
76b0: 45 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  E}}..BubbleDiagr
76c0: 61 6d 20 63 72 65 61 74 65 2d 76 69 72 74 75 61  am create-virtua
76d0: 6c 2d 74 61 62 6c 65 2d 73 74 6d 74 20 31 0a 3c  l-table-stmt 1.<
76e0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 41 20 76 69 72 74  /tcl>..<p>A virt
76f0: 75 61 6c 20 74 61 62 6c 65 20 69 73 20 61 6e 20  ual table is an 
7700: 69 6e 74 65 72 66 61 63 65 20 74 6f 20 61 6e 20  interface to an 
7710: 65 78 74 65 72 6e 61 6c 20 73 74 6f 72 61 67 65  external storage
7720: 20 6f 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e 0a   or computation.
7730: 65 6e 67 69 6e 65 20 74 68 61 74 20 61 70 70 65  engine that appe
7740: 61 72 73 20 74 6f 20 62 65 20 61 20 74 61 62 6c  ars to be a tabl
7750: 65 20 62 75 74 20 64 6f 65 73 20 6e 6f 74 20 61  e but does not a
7760: 63 74 75 61 6c 6c 79 20 73 74 6f 72 65 20 69 6e  ctually store in
7770: 66 6f 72 6d 61 74 69 6f 6e 0a 69 6e 20 74 68 65  formation.in the
7780: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 3c   database file.<
7790: 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 67 65 6e 65 72  /p>..<p>In gener
77a0: 61 6c 2c 20 79 6f 75 20 63 61 6e 20 64 6f 20 61  al, you can do a
77b0: 6e 79 74 68 69 6e 67 20 77 69 74 68 20 61 20 76  nything with a v
77c0: 69 72 74 75 61 6c 20 74 61 62 6c 65 20 74 68 61  irtual table tha
77d0: 74 20 63 61 6e 20 62 65 20 64 6f 6e 65 0a 77 69  t can be done.wi
77e0: 74 68 20 61 6e 20 6f 72 64 69 6e 61 72 79 20 74  th an ordinary t
77f0: 61 62 6c 65 2c 20 65 78 63 65 70 74 20 74 68 61  able, except tha
7800: 74 20 79 6f 75 20 63 61 6e 6e 6f 74 20 63 72 65  t you cannot cre
7810: 61 74 65 20 69 6e 64 69 63 65 73 20 6f 72 20 74  ate indices or t
7820: 72 69 67 67 65 72 73 20 6f 6e 20 61 0a 76 69 72  riggers on a.vir
7830: 74 75 61 6c 20 74 61 62 6c 65 2e 20 20 53 6f 6d  tual table.  Som
7840: 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
7850: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
7860: 6d 69 67 68 74 20 69 6d 70 6f 73 65 20 61 64 64  might impose add
7870: 69 74 69 6f 6e 61 6c 0a 72 65 73 74 72 69 63 74  itional.restrict
7880: 69 6f 6e 73 2e 20 20 46 6f 72 20 65 78 61 6d 70  ions.  For examp
7890: 6c 65 2c 20 6d 61 6e 79 20 76 69 72 74 75 61 6c  le, many virtual
78a0: 20 74 61 62 6c 65 73 20 61 72 65 20 72 65 61 64   tables are read
78b0: 2d 6f 6e 6c 79 2e 0a 56 69 72 74 75 61 6c 20 74  -only..Virtual t
78c0: 61 62 6c 65 73 20 63 61 6e 6e 6f 74 20 62 65 20  ables cannot be 
78d0: 75 73 65 64 20 69 6e 0a 5b 73 71 6c 69 74 65 33  used in.[sqlite3
78e0: 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63  _enable_shared_c
78f0: 61 63 68 65 20 7c 20 73 68 61 72 65 64 20 63 61  ache | shared ca
7900: 63 68 65 20 6d 6f 64 65 5d 2e 3c 2f 70 3e 0a 0a  che mode].</p>..
7910: 3c 70 3e 54 68 65 20 26 6c 74 3b 6d 6f 64 75 6c  <p>The &lt;modul
7920: 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 74 68  e-name&gt; is th
7930: 65 20 6e 61 6d 65 20 6f 66 20 61 6e 20 6f 62 6a  e name of an obj
7940: 65 63 74 20 74 68 61 74 20 69 6d 70 6c 65 6d 65  ect that impleme
7950: 6e 74 73 0a 74 68 65 20 76 69 72 74 75 61 6c 20  nts.the virtual 
7960: 74 61 62 6c 65 2e 20 20 54 68 65 20 26 6c 74 3b  table.  The &lt;
7970: 6d 6f 64 75 6c 65 2d 6e 61 6d 65 26 67 74 3b 20  module-name&gt; 
7980: 6d 75 73 74 20 62 65 20 72 65 67 69 73 74 65 72  must be register
7990: 65 64 20 77 69 74 68 0a 74 68 65 20 53 51 4c 69  ed with.the SQLi
79a0: 74 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  te database conn
79b0: 65 63 74 69 6f 6e 20 75 73 69 6e 67 0a 73 71 6c  ection using.sql
79c0: 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75  ite3_create_modu
79d0: 6c 65 28 29 0a 70 72 69 6f 72 20 74 6f 20 69 73  le().prior to is
79e0: 73 75 69 6e 67 20 74 68 65 20 43 52 45 41 54 45  suing the CREATE
79f0: 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73   VIRTUAL TABLE s
7a00: 74 61 74 65 6d 65 6e 74 2e 0a 54 68 65 20 6d 6f  tatement..The mo
7a10: 64 75 6c 65 20 74 61 6b 65 73 20 7a 65 72 6f 20  dule takes zero 
7a20: 6f 72 20 6d 6f 72 65 20 63 6f 6d 6d 61 2d 73 65  or more comma-se
7a30: 70 61 72 61 74 65 64 20 61 72 67 75 6d 65 6e 74  parated argument
7a40: 73 2e 0a 54 68 65 20 61 72 67 75 6d 65 6e 74 73  s..The arguments
7a50: 20 63 61 6e 20 62 65 20 6a 75 73 74 20 61 62 6f   can be just abo
7a60: 75 74 20 61 6e 79 20 74 65 78 74 20 61 73 20 6c  ut any text as l
7a70: 6f 6e 67 20 61 73 20 69 74 20 68 61 73 20 62 61  ong as it has ba
7a80: 6c 61 6e 63 65 64 0a 70 61 72 65 6e 74 68 65 73  lanced.parenthes
7a90: 65 73 2e 20 20 54 68 65 20 61 72 67 75 6d 65 6e  es.  The argumen
7aa0: 74 20 73 79 6e 74 61 78 20 69 73 20 73 75 66 66  t syntax is suff
7ab0: 69 63 69 65 6e 74 6c 79 20 67 65 6e 65 72 61 6c  iciently general
7ac0: 20 74 68 61 74 20 74 68 65 0a 61 72 67 75 6d 65   that the.argume
7ad0: 6e 74 73 20 63 61 6e 20 62 65 20 6d 61 64 65 20  nts can be made 
7ae0: 74 6f 20 61 70 70 65 61 72 20 61 73 20 63 6f 6c  to appear as col
7af0: 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 73 20  umn definitions 
7b00: 69 6e 20 61 20 74 72 61 64 69 74 69 6f 6e 61 6c  in a traditional
7b10: 0a 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d 20  .[CREATE TABLE] 
7b20: 73 74 61 74 65 6d 65 6e 74 2e 20 20 0a 53 51 4c  statement.  .SQL
7b30: 69 74 65 20 70 61 73 73 65 73 20 74 68 65 20 6d  ite passes the m
7b40: 6f 64 75 6c 65 20 61 72 67 75 6d 65 6e 74 73 20  odule arguments 
7b50: 64 69 72 65 63 74 6c 79 0a 74 6f 20 74 68 65 20  directly.to the 
7b60: 6d 6f 64 75 6c 65 20 77 69 74 68 6f 75 74 20 61  module without a
7b70: 6e 79 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f  ny interpretatio
7b80: 6e 2e 20 20 49 74 20 69 73 20 74 68 65 20 72 65  n.  It is the re
7b90: 73 70 6f 6e 73 69 62 69 6c 69 74 79 0a 6f 66 20  sponsibility.of 
7ba0: 74 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65  the module imple
7bb0: 6d 65 6e 74 61 74 69 6f 6e 20 74 6f 20 70 61 72  mentation to par
7bc0: 73 65 20 61 6e 64 20 69 6e 74 65 72 70 72 65 74  se and interpret
7bd0: 20 69 74 73 20 6f 77 6e 20 61 72 67 75 6d 65 6e   its own argumen
7be0: 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 76 69  ts.</p>..<p>A vi
7bf0: 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20 64  rtual table is d
7c00: 65 73 74 72 6f 79 65 64 20 75 73 69 6e 67 20 74  estroyed using t
7c10: 68 65 20 6f 72 64 69 6e 61 72 79 0a 5b 44 52 4f  he ordinary.[DRO
7c20: 50 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65  P TABLE] stateme
7c30: 6e 74 2e 20 20 54 68 65 72 65 20 69 73 20 6e 6f  nt.  There is no
7c40: 0a 44 52 4f 50 20 56 49 52 54 55 41 4c 20 54 41  .DROP VIRTUAL TA
7c50: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f  BLE statement.</
7c60: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
7c70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7c80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7c90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7ca0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7cb0: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
7cc0: 20 44 45 4c 45 54 45 20 64 65 6c 65 74 65 20 7b   DELETE delete {
7cd0: 44 45 4c 45 54 45 20 44 45 4c 45 54 45 73 7d 0a  DELETE DELETEs}.
7ce0: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64  .BubbleDiagram d
7cf0: 65 6c 65 74 65 2d 73 74 6d 74 20 31 0a 42 75 62  elete-stmt 1.Bub
7d00: 62 6c 65 44 69 61 67 72 61 6d 20 71 75 61 6c 69  bleDiagram quali
7d10: 66 69 65 64 2d 74 61 62 6c 65 2d 6e 61 6d 65 0a  fied-table-name.
7d20: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44  </tcl>..<p>The D
7d30: 45 4c 45 54 45 20 63 6f 6d 6d 61 6e 64 20 69 73  ELETE command is
7d40: 20 75 73 65 64 20 74 6f 20 72 65 6d 6f 76 65 20   used to remove 
7d50: 72 65 63 6f 72 64 73 20 66 72 6f 6d 20 61 20 74  records from a t
7d60: 61 62 6c 65 2e 0a 54 68 65 20 63 6f 6d 6d 61 6e  able..The comman
7d70: 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68  d consists of th
7d80: 65 20 22 44 45 4c 45 54 45 20 46 52 4f 4d 22 20  e "DELETE FROM" 
7d90: 6b 65 79 77 6f 72 64 73 20 66 6f 6c 6c 6f 77 65  keywords followe
7da0: 64 20 62 79 0a 74 68 65 20 6e 61 6d 65 20 6f 66  d by.the name of
7db0: 20 74 68 65 20 74 61 62 6c 65 20 66 72 6f 6d 20   the table from 
7dc0: 77 68 69 63 68 20 72 65 63 6f 72 64 73 20 61 72  which records ar
7dd0: 65 20 74 6f 20 62 65 20 72 65 6d 6f 76 65 64 2e  e to be removed.
7de0: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 57 69 74 68 6f 75  .</p>..<p>Withou
7df0: 74 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65  t a WHERE clause
7e00: 2c 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68  , all rows of th
7e10: 65 20 74 61 62 6c 65 20 61 72 65 20 72 65 6d 6f  e table are remo
7e20: 76 65 64 2e 0a 49 66 20 61 20 57 48 45 52 45 20  ved..If a WHERE 
7e30: 63 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c 69  clause is suppli
7e40: 65 64 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74 68  ed, then only th
7e50: 6f 73 65 20 72 6f 77 73 20 74 68 61 74 20 6d 61  ose rows that ma
7e60: 74 63 68 0a 74 68 65 20 65 78 70 72 65 73 73 69  tch.the expressi
7e70: 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 3c  on are removed.<
7e80: 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61  /p>..<tcl>hd_fra
7e90: 67 6d 65 6e 74 20 74 72 75 63 61 74 65 6f 70 74  gment trucateopt
7ea0: 20 7b 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d   {truncate optim
7eb0: 69 7a 61 74 69 6f 6e 7d 3c 2f 74 63 6c 3e 0a 3c  ization}</tcl>.<
7ec0: 70 3e 57 68 65 6e 20 74 68 65 20 57 48 45 52 45  p>When the WHERE
7ed0: 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d   is omitted from
7ee0: 20 61 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d   a DELETE statem
7ef0: 65 6e 74 20 61 6e 64 20 74 68 65 20 74 61 62 6c  ent and the tabl
7f00: 65 0a 62 65 69 6e 67 20 64 65 6c 65 74 65 64 20  e.being deleted 
7f10: 68 61 73 20 6e 6f 20 74 72 69 67 67 65 72 73 2c  has no triggers,
7f20: 0a 53 51 4c 69 74 65 20 75 73 65 73 20 61 6e 20  .SQLite uses an 
7f30: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74 6f 20  optimization to 
7f40: 65 72 61 73 65 20 74 68 65 20 65 6e 74 69 72 65  erase the entire
7f50: 20 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74 0a 77   table content.w
7f60: 69 74 68 6f 75 74 20 68 61 76 69 6e 67 20 74 6f  ithout having to
7f70: 20 76 69 73 69 74 20 65 61 63 68 20 72 6f 77 20   visit each row 
7f80: 6f 66 20 74 68 65 20 74 61 62 6c 65 20 69 6e 64  of the table ind
7f90: 69 76 69 64 75 61 6c 2e 0a 54 68 69 73 20 22 74  ividual..This "t
7fa0: 72 75 6e 63 61 74 65 22 20 6f 70 74 69 6d 69 7a  runcate" optimiz
7fb0: 61 74 69 6f 6e 20 6d 61 6b 65 73 20 74 68 65 20  ation makes the 
7fc0: 64 65 6c 65 74 65 20 72 75 6e 20 6d 75 63 68 20  delete run much 
7fd0: 66 61 73 74 65 72 2e 0a 50 72 69 6f 72 20 74 6f  faster..Prior to
7fe0: 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e   SQLite [version
7ff0: 20 33 2e 36 2e 35 5d 2c 20 74 68 65 20 74 72 75   3.6.5], the tru
8000: 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69  ncate optimizati
8010: 6f 6e 0a 61 6c 73 6f 20 6d 65 61 6e 74 20 74 68  on.also meant th
8020: 61 74 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  at the [sqlite3_
8030: 63 68 61 6e 67 65 73 28 29 5d 20 61 6e 64 0a 5b  changes()] and.[
8040: 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68  sqlite3_total_ch
8050: 61 6e 67 65 73 28 29 5d 20 69 6e 74 65 72 66 61  anges()] interfa
8060: 63 65 73 0a 61 6e 64 20 74 68 65 20 5b 63 6f 75  ces.and the [cou
8070: 6e 74 5f 63 68 61 6e 67 65 73 20 70 72 61 67 6d  nt_changes pragm
8080: 61 5d 0a 77 69 6c 6c 20 6e 6f 74 20 61 63 74 75  a].will not actu
8090: 61 6c 6c 79 20 72 65 74 75 72 6e 20 74 68 65 20  ally return the 
80a0: 6e 75 6d 62 65 72 20 6f 66 20 64 65 6c 65 74 65  number of delete
80b0: 64 20 72 6f 77 73 2e 20 20 0a 54 68 61 74 20 70  d rows.  .That p
80c0: 72 6f 62 6c 65 6d 20 68 61 73 20 62 65 65 6e 20  roblem has been 
80d0: 66 69 78 65 64 20 61 73 20 6f 66 20 5b 76 65 72  fixed as of [ver
80e0: 73 69 6f 6e 20 33 2e 36 2e 35 5d 2e 0a 0a 3c 70  sion 3.6.5]...<p
80f0: 3e 54 68 65 20 74 72 75 6e 63 61 74 65 20 6f 70  >The truncate op
8100: 74 69 6d 69 7a 61 74 69 6f 6e 20 63 61 6e 20 62  timization can b
8110: 65 20 64 69 73 61 62 6c 65 64 20 66 6f 72 20 61  e disabled for a
8120: 6c 6c 20 71 75 65 72 69 65 73 20 62 79 20 72 65  ll queries by re
8130: 63 6f 6d 70 69 6c 69 6e 67 0a 53 51 4c 69 74 65  compiling.SQLite
8140: 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49 54   with the [SQLIT
8150: 45 5f 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f  E_OMIT_TRUNCATE_
8160: 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 5d 20 63 6f  OPTIMIZATION] co
8170: 6d 70 69 6c 65 2d 74 69 6d 65 20 73 77 69 74 63  mpile-time switc
8180: 68 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 53 51  h.</p>..<p>If SQ
8190: 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64  Lite is compiled
81a0: 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49 54   with the [SQLIT
81b0: 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f  E_ENABLE_UPDATE_
81c0: 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d 0a 63 6f  DELETE_LIMIT].co
81d0: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
81e0: 6e 2c 20 74 68 65 6e 20 74 68 65 20 73 79 6e 74  n, then the synt
81f0: 61 78 20 6f 66 20 74 68 65 20 44 45 4c 45 54 45  ax of the DELETE
8200: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 0a 65 78   statement is.ex
8210: 74 65 6e 64 65 64 20 62 79 20 74 68 65 20 61 64  tended by the ad
8220: 64 69 74 69 6f 6e 20 6f 66 20 6f 70 74 69 6f 6e  dition of option
8230: 61 6c 20 4f 52 44 45 52 20 42 59 20 61 6e 64 20  al ORDER BY and 
8240: 4c 49 4d 49 54 20 63 6c 61 75 73 65 73 3a 3c 2f  LIMIT clauses:</
8250: 70 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62 6c 65 44  p>..<tcl>BubbleD
8260: 69 61 67 72 61 6d 20 64 65 6c 65 74 65 2d 73 74  iagram delete-st
8270: 6d 74 2d 6c 69 6d 69 74 65 64 3c 2f 74 63 6c 3e  mt-limited</tcl>
8280: 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61  ..<p>The optiona
8290: 6c 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 63  l LIMIT clause c
82a0: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6c 69  an be used to li
82b0: 6d 69 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  mit the number o
82c0: 66 0a 72 6f 77 73 20 64 65 6c 65 74 65 64 2c 20  f.rows deleted, 
82d0: 61 6e 64 20 74 68 65 72 65 62 79 20 6c 69 6d 69  and thereby limi
82e0: 74 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68  t the size of th
82f0: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 54  e transaction..T
8300: 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75  he ORDER BY clau
8310: 73 65 20 69 73 20 75 73 65 64 20 6f 6e 6c 79 20  se is used only 
8320: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 77 68 69  to determine whi
8330: 63 68 20 72 6f 77 73 20 66 61 6c 6c 0a 77 69 74  ch rows fall.wit
8340: 68 69 6e 20 74 68 65 20 4c 49 4d 49 54 2e 20 20  hin the LIMIT.  
8350: 54 68 65 20 6f 72 64 65 72 20 69 6e 20 77 68 69  The order in whi
8360: 63 68 20 72 6f 77 73 20 61 72 65 20 64 65 6c 65  ch rows are dele
8370: 74 65 64 20 69 73 20 61 72 62 69 74 72 61 72 79  ted is arbitrary
8380: 0a 61 6e 64 20 69 73 20 6e 6f 74 20 64 65 74 65  .and is not dete
8390: 72 6d 69 6e 65 64 20 62 79 20 74 68 65 20 4f 52  rmined by the OR
83a0: 44 45 52 20 42 59 20 63 6c 61 75 73 65 2e 3c 2f  DER BY clause.</
83b0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 70 72 65 73 65  p>..<p>The prese
83c0: 6e 63 65 20 6f 66 20 61 20 4c 49 4d 49 54 20 63  nce of a LIMIT c
83d0: 6c 61 75 73 65 20 64 65 66 65 61 74 73 20 74 68  lause defeats th
83e0: 65 20 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d  e truncate optim
83f0: 69 7a 61 74 69 6f 6e 0a 63 61 75 73 69 6e 67 20  ization.causing 
8400: 61 6c 6c 20 72 6f 77 73 20 62 65 69 6e 67 20 64  all rows being d
8410: 65 6c 65 74 65 64 20 74 6f 20 62 65 20 76 69 73  eleted to be vis
8420: 69 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  ited.</p>..<tcl>
8430: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
8440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8470: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8480: 0a 53 65 63 74 69 6f 6e 20 7b 44 45 54 41 43 48  .Section {DETACH
8490: 20 44 41 54 41 42 41 53 45 7d 20 64 65 74 61 63   DATABASE} detac
84a0: 68 20 44 45 54 41 43 48 0a 0a 42 75 62 62 6c 65  h DETACH..Bubble
84b0: 44 69 61 67 72 61 6d 20 64 65 74 61 63 68 2d 73  Diagram detach-s
84c0: 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tmt 1.</tcl>..<p
84d0: 3e 54 68 69 73 20 73 74 61 74 65 6d 65 6e 74 20  >This statement 
84e0: 64 65 74 61 63 68 65 73 20 61 6e 20 61 64 64 69  detaches an addi
84f0: 74 69 6f 6e 61 6c 20 64 61 74 61 62 61 73 65 20  tional database 
8500: 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 72 65 76 69  connection previ
8510: 6f 75 73 6c 79 20 0a 61 74 74 61 63 68 65 64 20  ously .attached 
8520: 75 73 69 6e 67 20 74 68 65 20 5b 41 54 54 41 43  using the [ATTAC
8530: 48 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 0a  H] statement.  .
8540: 49 74 20 69 73 20 70 6f 73 73 69 62 6c 65 20 74  It is possible t
8550: 6f 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20  o have the same 
8560: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 61 74  database file at
8570: 74 61 63 68 65 64 20 6d 75 6c 74 69 70 6c 65 20  tached multiple 
8580: 74 69 6d 65 73 20 75 73 69 6e 67 20 0a 64 69 66  times using .dif
8590: 66 65 72 65 6e 74 20 6e 61 6d 65 73 2c 20 61 6e  ferent names, an
85a0: 64 20 64 65 74 61 63 68 69 6e 67 20 6f 6e 65 20  d detaching one 
85b0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 61 20  connection to a 
85c0: 66 69 6c 65 20 77 69 6c 6c 20 6c 65 61 76 65 20  file will leave 
85d0: 74 68 65 20 0a 6f 74 68 65 72 73 20 69 6e 74 61  the .others inta
85e0: 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69 73  ct.</p>..<p>This
85f0: 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20   statement will 
8600: 66 61 69 6c 20 69 66 20 53 51 4c 69 74 65 20 69  fail if SQLite i
8610: 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20  s in the middle 
8620: 6f 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  of a transaction
8630: 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23  .</p>...<tcl>.##
8640: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8650: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8660: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8670: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8680: 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
8690: 74 69 6f 6e 20 7b 44 52 4f 50 20 49 4e 44 45 58  tion {DROP INDEX
86a0: 7d 20 64 72 6f 70 69 6e 64 65 78 20 7b 7b 44 52  } dropindex {{DR
86b0: 4f 50 20 49 4e 44 45 58 7d 7d 0a 0a 42 75 62 62  OP INDEX}}..Bubb
86c0: 6c 65 44 69 61 67 72 61 6d 20 64 72 6f 70 2d 69  leDiagram drop-i
86d0: 6e 64 65 78 2d 73 74 6d 74 20 31 0a 3c 2f 74 63  ndex-stmt 1.</tc
86e0: 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20  l>..<p>The DROP 
86f0: 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74 20  INDEX statement 
8700: 72 65 6d 6f 76 65 73 20 61 6e 20 69 6e 64 65 78  removes an index
8710: 20 61 64 64 65 64 0a 77 69 74 68 20 74 68 65 20   added.with the 
8720: 5b 43 52 45 41 54 45 20 49 4e 44 45 58 5d 20 73  [CREATE INDEX] s
8730: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 69  tatement.  The i
8740: 6e 64 65 78 20 6e 61 6d 65 64 20 69 73 20 63 6f  ndex named is co
8750: 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64  mpletely removed
8760: 20 66 72 6f 6d 0a 74 68 65 20 64 69 73 6b 2e 20   from.the disk. 
8770: 20 54 68 65 20 6f 6e 6c 79 20 77 61 79 20 74 6f   The only way to
8780: 20 72 65 63 6f 76 65 72 20 74 68 65 20 69 6e 64   recover the ind
8790: 65 78 20 69 73 20 74 6f 20 72 65 65 6e 74 65 72  ex is to reenter
87a0: 20 74 68 65 0a 61 70 70 72 6f 70 72 69 61 74 65   the.appropriate
87b0: 20 5b 43 52 45 41 54 45 20 49 4e 44 45 58 5d 20   [CREATE INDEX] 
87c0: 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70  command.</p>..<p
87d0: 3e 54 68 65 20 44 52 4f 50 20 49 4e 44 45 58 20  >The DROP INDEX 
87e0: 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e  statement does n
87f0: 6f 74 20 72 65 64 75 63 65 20 74 68 65 20 73 69  ot reduce the si
8800: 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  ze of the databa
8810: 73 65 20 0a 66 69 6c 65 20 69 6e 20 74 68 65 20  se .file in the 
8820: 64 65 66 61 75 6c 74 20 6d 6f 64 65 2e 0a 45 6d  default mode..Em
8830: 70 74 79 20 73 70 61 63 65 20 69 6e 20 74 68 65  pty space in the
8840: 20 64 61 74 61 62 61 73 65 20 69 73 20 72 65 74   database is ret
8850: 61 69 6e 65 64 20 66 6f 72 20 6c 61 74 65 72 20  ained for later 
8860: 5b 49 4e 53 45 52 54 5d 20 73 74 61 74 65 6d 65  [INSERT] stateme
8870: 6e 74 73 2e 20 20 54 6f 20 0a 72 65 6d 6f 76 65  nts.  To .remove
8880: 20 66 72 65 65 20 73 70 61 63 65 20 69 6e 20 74   free space in t
8890: 68 65 20 64 61 74 61 62 61 73 65 2c 20 75 73 65  he database, use
88a0: 20 74 68 65 20 5b 56 41 43 55 55 4d 5d 0a 63 6f   the [VACUUM].co
88b0: 6d 6d 61 6e 64 2e 20 20 49 66 20 5b 61 75 74 6f  mmand.  If [auto
88c0: 5f 76 61 63 75 75 6d 5d 20 6d 6f 64 65 20 69 73  _vacuum] mode is
88d0: 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 61 20 64   enabled for a d
88e0: 61 74 61 62 61 73 65 20 74 68 65 6e 20 73 70 61  atabase then spa
88f0: 63 65 0a 77 69 6c 6c 20 62 65 20 66 72 65 65 64  ce.will be freed
8900: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62   automatically b
8910: 79 20 44 52 4f 50 20 49 4e 44 45 58 2e 3c 2f 70  y DROP INDEX.</p
8920: 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  >...<tcl>.######
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 23 23 23  ################
8950: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8960: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8970: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
8980: 20 7b 44 52 4f 50 20 54 41 42 4c 45 7d 20 64 72   {DROP TABLE} dr
8990: 6f 70 74 61 62 6c 65 20 7b 7b 44 52 4f 50 20 54  optable {{DROP T
89a0: 41 42 4c 45 7d 7d 0a 0a 42 75 62 62 6c 65 44 69  ABLE}}..BubbleDi
89b0: 61 67 72 61 6d 20 64 72 6f 70 2d 74 61 62 6c 65  agram drop-table
89c0: 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a  -stmt 1.</tcl>..
89d0: 3c 70 3e 54 68 65 20 44 52 4f 50 20 54 41 42 4c  <p>The DROP TABL
89e0: 45 20 73 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f  E statement remo
89f0: 76 65 73 20 61 20 74 61 62 6c 65 20 61 64 64 65  ves a table adde
8a00: 64 20 77 69 74 68 20 74 68 65 0a 5b 43 52 45 41  d with the.[CREA
8a10: 54 45 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d  TE TABLE] statem
8a20: 65 6e 74 2e 20 20 54 68 65 20 6e 61 6d 65 20 73  ent.  The name s
8a30: 70 65 63 69 66 69 65 64 20 69 73 20 74 68 65 0a  pecified is the.
8a40: 74 61 62 6c 65 20 6e 61 6d 65 2e 20 20 49 74 20  table name.  It 
8a50: 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65  is completely re
8a60: 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 64  moved from the d
8a70: 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 61  atabase schema a
8a80: 6e 64 20 74 68 65 20 0a 64 69 73 6b 20 66 69 6c  nd the .disk fil
8a90: 65 2e 20 20 54 68 65 20 74 61 62 6c 65 20 63 61  e.  The table ca
8aa0: 6e 20 6e 6f 74 20 62 65 20 72 65 63 6f 76 65 72  n not be recover
8ab0: 65 64 2e 20 20 41 6c 6c 20 69 6e 64 69 63 65 73  ed.  All indices
8ac0: 20 61 6e 64 20 74 72 69 67 67 65 72 73 0a 61 73   and triggers.as
8ad0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
8ae0: 65 20 74 61 62 6c 65 20 61 72 65 20 61 6c 73 6f  e table are also
8af0: 20 64 65 6c 65 74 65 64 2e 3c 2f 70 3e 0a 0a 3c   deleted.</p>..<
8b00: 70 3e 54 68 65 20 44 52 4f 50 20 54 41 42 4c 45  p>The DROP TABLE
8b10: 20 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20   statement does 
8b20: 6e 6f 74 20 72 65 64 75 63 65 20 74 68 65 20 73  not reduce the s
8b30: 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  ize of the datab
8b40: 61 73 65 20 0a 66 69 6c 65 20 69 6e 20 74 68 65  ase .file in the
8b50: 20 64 65 66 61 75 6c 74 20 6d 6f 64 65 2e 20 20   default mode.  
8b60: 45 6d 70 74 79 20 73 70 61 63 65 20 69 6e 20 74  Empty space in t
8b70: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 72  he database is r
8b80: 65 74 61 69 6e 65 64 20 66 6f 72 0a 6c 61 74 65  etained for.late
8b90: 72 20 5b 49 4e 53 45 52 54 5d 20 73 74 61 74 65  r [INSERT] state
8ba0: 6d 65 6e 74 73 2e 20 20 54 6f 20 0a 72 65 6d 6f  ments.  To .remo
8bb0: 76 65 20 66 72 65 65 20 73 70 61 63 65 20 69 6e  ve free space in
8bc0: 20 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 0a   the database, .
8bd0: 75 73 65 20 74 68 65 20 5b 56 41 43 55 55 4d 5d  use the [VACUUM]
8be0: 20 73 74 61 74 65 6d 65 6e 74 2e 0a 49 66 20 5b   statement..If [
8bf0: 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 6d 6f 64  auto_vacuum] mod
8c00: 65 20 69 73 20 65 6e 61 62 6c 65 64 20 66 6f 72  e is enabled for
8c10: 20 61 20 64 61 74 61 62 61 73 65 20 74 68 65 6e   a database then
8c20: 20 73 70 61 63 65 0a 77 69 6c 6c 20 62 65 20 66   space.will be f
8c30: 72 65 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c  reed automatical
8c40: 6c 79 20 62 79 20 44 52 4f 50 20 54 41 42 4c 45  ly by DROP TABLE
8c50: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70  .</p>..<p>The op
8c60: 74 69 6f 6e 61 6c 20 49 46 20 45 58 49 53 54 53  tional IF EXISTS
8c70: 20 63 6c 61 75 73 65 20 73 75 70 70 72 65 73 73   clause suppress
8c80: 65 73 20 74 68 65 20 65 72 72 6f 72 20 74 68 61  es the error tha
8c90: 74 20 77 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79  t would normally
8ca0: 0a 72 65 73 75 6c 74 20 69 66 20 74 68 65 20 74  .result if the t
8cb0: 61 62 6c 65 20 64 6f 65 73 20 6e 6f 74 20 65 78  able does not ex
8cc0: 69 73 74 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  ist.</p>..<tcl>.
8cd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8ce0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8cf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
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 0a 53  ##############.S
8d20: 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54 52 49  ection {DROP TRI
8d30: 47 47 45 52 7d 20 64 72 6f 70 74 72 69 67 67 65  GGER} droptrigge
8d40: 72 20 7b 7b 44 52 4f 50 20 54 52 49 47 47 45 52  r {{DROP TRIGGER
8d50: 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61  }}..BubbleDiagra
8d60: 6d 20 64 72 6f 70 2d 74 72 69 67 67 65 72 2d 73  m drop-trigger-s
8d70: 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tmt 1.</tcl>..<p
8d80: 3e 54 68 65 20 44 52 4f 50 20 54 52 49 47 47 45  >The DROP TRIGGE
8d90: 52 20 73 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f  R statement remo
8da0: 76 65 73 20 61 20 74 72 69 67 67 65 72 20 63 72  ves a trigger cr
8db0: 65 61 74 65 64 20 62 79 20 74 68 65 20 0a 5b 43  eated by the .[C
8dc0: 52 45 41 54 45 20 54 52 49 47 47 45 52 5d 20 73  REATE TRIGGER] s
8dd0: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 74  tatement.  The t
8de0: 72 69 67 67 65 72 20 69 73 20 0a 64 65 6c 65 74  rigger is .delet
8df0: 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61  ed from the data
8e00: 62 61 73 65 20 73 63 68 65 6d 61 2e 20 4e 6f 74  base schema. Not
8e10: 65 20 74 68 61 74 20 74 72 69 67 67 65 72 73 20  e that triggers 
8e20: 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  are automaticall
8e30: 79 20 0a 64 72 6f 70 70 65 64 20 77 68 65 6e 20  y .dropped when 
8e40: 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 74  the associated t
8e50: 61 62 6c 65 20 69 73 20 64 72 6f 70 70 65 64 2e  able is dropped.
8e60: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  </p>..<tcl>.####
8e70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8e80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8e90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8ea0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8eb0: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
8ec0: 6f 6e 20 7b 44 52 4f 50 20 56 49 45 57 7d 20 64  on {DROP VIEW} d
8ed0: 72 6f 70 76 69 65 77 20 7b 7b 44 52 4f 50 20 56  ropview {{DROP V
8ee0: 49 45 57 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61  IEW}}..BubbleDia
8ef0: 67 72 61 6d 20 64 72 6f 70 2d 76 69 65 77 2d 73  gram drop-view-s
8f00: 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tmt 1.</tcl>..<p
8f10: 3e 54 68 65 20 44 52 4f 50 20 56 49 45 57 20 73  >The DROP VIEW s
8f20: 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73  tatement removes
8f30: 20 61 20 76 69 65 77 20 63 72 65 61 74 65 64 20   a view created 
8f40: 62 79 20 74 68 65 0a 5b 43 52 45 41 54 45 20 56  by the.[CREATE V
8f50: 49 45 57 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20  IEW] statement. 
8f60: 20 54 68 65 20 6e 61 6d 65 20 73 70 65 63 69 66   The name specif
8f70: 69 65 64 20 69 73 20 74 68 65 20 0a 76 69 65 77  ied is the .view
8f80: 20 6e 61 6d 65 2e 20 20 49 74 20 69 73 20 72 65   name.  It is re
8f90: 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 64  moved from the d
8fa0: 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 2c 20  atabase schema, 
8fb0: 62 75 74 20 6e 6f 20 61 63 74 75 61 6c 20 64 61  but no actual da
8fc0: 74 61 20 0a 69 6e 20 74 68 65 20 75 6e 64 65 72  ta .in the under
8fd0: 6c 79 69 6e 67 20 62 61 73 65 20 74 61 62 6c 65  lying base table
8fe0: 73 20 69 73 20 6d 6f 64 69 66 69 65 64 2e 3c 2f  s is modified.</
8ff0: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
9000: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9010: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9020: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9030: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9040: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
9050: 20 45 58 50 4c 41 49 4e 20 65 78 70 6c 61 69 6e   EXPLAIN explain
9060: 20 45 58 50 4c 41 49 4e 0a 0a 42 75 62 62 6c 65   EXPLAIN..Bubble
9070: 44 69 61 67 72 61 6d 20 73 71 6c 2d 73 74 6d 74  Diagram sql-stmt
9080: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 41 6e 20 53  .</tcl>..<p>An S
9090: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 63 61 6e  QL statement can
90a0: 20 62 65 20 70 72 65 63 65 64 65 64 20 62 79 20   be preceded by 
90b0: 74 68 65 20 6b 65 79 77 6f 72 64 20 22 45 58 50  the keyword "EXP
90c0: 4c 41 49 4e 22 20 6f 72 0a 62 79 20 74 68 65 20  LAIN" or.by the 
90d0: 70 68 72 61 73 65 20 22 45 58 50 4c 41 49 4e 20  phrase "EXPLAIN 
90e0: 51 55 45 52 59 20 50 4c 41 4e 22 2e 20 20 45 69  QUERY PLAN".  Ei
90f0: 74 68 65 72 20 6d 6f 64 69 66 69 63 61 74 69 6f  ther modificatio
9100: 6e 20 63 61 75 73 65 73 20 74 68 65 0a 53 51 4c  n causes the.SQL
9110: 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 62 65   statement to be
9120: 68 61 76 65 20 61 73 20 61 20 71 75 65 72 79 20  have as a query 
9130: 61 6e 64 20 74 6f 20 72 65 74 75 72 6e 20 69 6e  and to return in
9140: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 0a  formation about.
9150: 68 6f 77 20 74 68 65 20 53 51 4c 20 73 74 61 74  how the SQL stat
9160: 65 6d 65 6e 74 20 77 6f 75 6c 64 20 68 61 76 65  ement would have
9170: 20 6f 70 65 72 61 74 65 64 20 69 66 20 74 68 65   operated if the
9180: 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64   EXPLAIN keyword
9190: 20 6f 72 0a 70 68 72 61 73 65 20 68 61 64 20 62   or.phrase had b
91a0: 65 65 6e 20 6f 6d 69 74 74 65 64 2e 3c 2f 70 3e  een omitted.</p>
91b0: 0a 0a 3c 70 3e 57 68 65 6e 20 74 68 65 20 45 58  ..<p>When the EX
91c0: 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20 61 70  PLAIN keyword ap
91d0: 70 65 61 72 73 20 62 79 20 69 74 73 65 6c 66 20  pears by itself 
91e0: 69 74 20 63 61 75 73 65 73 20 74 68 65 20 73 74  it causes the st
91f0: 61 74 65 6d 65 6e 74 0a 74 6f 20 62 65 68 61 76  atement.to behav
9200: 65 20 61 73 20 61 20 71 75 65 72 79 20 74 68 61  e as a query tha
9210: 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 65  t returns the se
9220: 71 75 65 6e 63 65 20 6f 66 20 0a 3c 61 20 68 72  quence of .<a hr
9230: 65 66 3d 22 6f 70 63 6f 64 65 2e 68 74 6d 6c 22  ef="opcode.html"
9240: 3e 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65  >virtual machine
9250: 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 3c 2f 61   instructions</a
9260: 3e 20 69 74 20 77 6f 75 6c 64 20 68 61 76 65 0a  > it would have.
9270: 75 73 65 64 20 74 6f 20 65 78 65 63 75 74 65 20  used to execute 
9280: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 68 61 64 20  the command had 
9290: 74 68 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77  the EXPLAIN keyw
92a0: 6f 72 64 20 6e 6f 74 20 62 65 65 6e 20 70 72 65  ord not been pre
92b0: 73 65 6e 74 2e 0a 57 68 65 6e 20 74 68 65 20 45  sent..When the E
92c0: 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c 41  XPLAIN QUERY PLA
92d0: 4e 20 70 68 72 61 73 65 20 61 70 70 65 61 72 73  N phrase appears
92e0: 2c 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  , the statement 
92f0: 72 65 74 75 72 6e 73 0a 68 69 67 68 2d 6c 65 76  returns.high-lev
9300: 65 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61  el information a
9310: 62 6f 75 74 20 77 68 61 74 20 69 6e 64 69 63 65  bout what indice
9320: 73 20 77 6f 75 6c 64 20 68 61 76 65 20 62 65 65  s would have bee
9330: 6e 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  n used.</p>..<p>
9340: 54 68 65 20 6f 75 74 70 75 74 20 66 72 6f 6d 20  The output from 
9350: 45 58 50 4c 41 49 4e 20 61 6e 64 20 45 58 50 4c  EXPLAIN and EXPL
9360: 41 49 4e 20 51 55 45 52 59 20 50 4c 41 4e 20 69  AIN QUERY PLAN i
9370: 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 0a 69  s intended for.i
9380: 6e 74 65 72 61 63 74 69 76 65 20 61 6e 61 6c 79  nteractive analy
9390: 73 69 73 20 61 6e 64 20 74 72 6f 75 62 6c 65 73  sis and troubles
93a0: 68 6f 6f 74 69 6e 67 20 6f 6e 6c 79 2e 20 20 54  hooting only.  T
93b0: 68 65 20 64 65 74 61 69 6c 73 20 6f 66 20 74 68  he details of th
93c0: 65 20 0a 6f 75 74 70 75 74 20 66 6f 72 6d 61 74  e .output format
93d0: 20 61 72 65 20 73 75 62 6a 65 63 74 20 74 6f 20   are subject to 
93e0: 63 68 61 6e 67 65 20 66 72 6f 6d 20 6f 6e 65 20  change from one 
93f0: 72 65 6c 65 61 73 65 20 6f 66 20 53 51 4c 69 74  release of SQLit
9400: 65 20 74 6f 20 74 68 65 20 6e 65 78 74 2e 0a 41  e to the next..A
9410: 70 70 6c 69 63 61 74 69 6f 6e 73 20 73 68 6f 75  pplications shou
9420: 6c 64 20 6e 6f 74 20 75 73 65 20 45 58 50 4c 41  ld not use EXPLA
9430: 49 4e 20 6f 72 20 45 58 50 4c 41 49 4e 20 51 55  IN or EXPLAIN QU
9440: 45 52 59 20 50 4c 41 4e 20 73 69 6e 63 65 0a 74  ERY PLAN since.t
9450: 68 65 69 72 20 62 65 68 61 76 69 6f 72 20 69 73  heir behavior is
9460: 20 75 6e 64 6f 63 75 6d 65 6e 74 65 64 2c 20 75   undocumented, u
9470: 6e 73 70 65 63 69 66 69 65 64 2c 20 61 6e 64 20  nspecified, and 
9480: 76 61 72 69 61 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c  variable.</p>..<
9490: 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
94a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
94b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
94c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
94d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
94e0: 23 23 23 0a 53 65 63 74 69 6f 6e 20 65 78 70 72  ###.Section expr
94f0: 65 73 73 69 6f 6e 20 65 78 70 72 20 7b 65 78 70  ession expr {exp
9500: 72 65 73 73 69 6f 6e 20 7b 65 78 70 72 65 73 73  ression {express
9510: 69 6f 6e 20 73 79 6e 74 61 78 7d 7d 0a 0a 42 75  ion syntax}}..Bu
9520: 62 62 6c 65 44 69 61 67 72 61 6d 20 65 78 70 72  bbleDiagram expr
9530: 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d   1.BubbleDiagram
9540: 20 6c 69 74 65 72 61 6c 2d 76 61 6c 75 65 0a 42   literal-value.B
9550: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 73 69 67  ubbleDiagram sig
9560: 6e 65 64 2d 6e 75 6d 62 65 72 0a 42 75 62 62 6c  ned-number.Bubbl
9570: 65 44 69 61 67 72 61 6d 20 72 61 69 73 65 2d 66  eDiagram raise-f
9580: 75 6e 63 74 69 6f 6e 0a 3c 2f 74 63 6c 3e 0a 0a  unction.</tcl>..
9590: 3c 70 3e 54 68 69 73 20 73 65 63 74 69 6f 6e 20  <p>This section 
95a0: 69 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f  is different fro
95b0: 6d 20 74 68 65 20 6f 74 68 65 72 73 2e 20 20 4d  m the others.  M
95c0: 6f 73 74 20 6f 74 68 65 72 20 73 65 63 74 69 6f  ost other sectio
95d0: 6e 73 20 6f 66 0a 74 68 69 73 20 64 6f 63 75 6d  ns of.this docum
95e0: 65 6e 74 20 74 61 6c 6b 73 20 61 62 6f 75 74 20  ent talks about 
95f0: 61 20 70 61 72 74 69 63 75 6c 61 72 20 53 51 4c  a particular SQL
9600: 20 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73 20   command.  This 
9610: 73 65 63 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f 74  section does.not
9620: 20 74 61 6c 6b 20 61 62 6f 75 74 20 61 20 73 74   talk about a st
9630: 61 6e 64 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e 64  andalone command
9640: 20 62 75 74 20 61 62 6f 75 74 20 22 65 78 70 72   but about "expr
9650: 65 73 73 69 6f 6e 73 22 20 77 68 69 63 68 20 61  essions" which a
9660: 72 65 20 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e 74  re .subcomponent
9670: 73 20 6f 66 20 6d 6f 73 74 20 6f 74 68 65 72 20  s of most other 
9680: 63 6f 6d 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a 3c  commands.</p>..<
9690: 70 3e 53 51 4c 69 74 65 20 75 6e 64 65 72 73 74  p>SQLite underst
96a0: 61 6e 64 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69  ands the followi
96b0: 6e 67 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74  ng binary operat
96c0: 6f 72 73 2c 20 69 6e 20 6f 72 64 65 72 20 66 72  ors, in order fr
96d0: 6f 6d 0a 68 69 67 68 65 73 74 20 74 6f 20 6c 6f  om.highest to lo
96e0: 77 65 73 74 20 70 72 65 63 65 64 65 6e 63 65 3a  west precedence:
96f0: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
9700: 65 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f  e><pre>.<font co
9710: 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62  lor="#2c2cf0"><b
9720: 69 67 3e 7c 7c 0a 2a 20 20 20 20 2f 20 20 20 20  ig>||.*    /    
9730: 25 0a 2b 20 20 20 20 2d 0a 26 6c 74 3b 26 6c 74  %.+    -.&lt;&lt
9740: 3b 20 20 20 26 67 74 3b 26 67 74 3b 20 20 20 26  ;   &gt;&gt;   &
9750: 61 6d 70 3b 20 20 20 20 7c 0a 26 6c 74 3b 20 20  amp;    |.&lt;  
9760: 20 20 26 6c 74 3b 3d 20 20 20 26 67 74 3b 20 20    &lt;=   &gt;  
9770: 20 20 26 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d 20    &gt;=.=    == 
9780: 20 20 21 3d 20 20 20 26 6c 74 3b 26 67 74 3b 20    !=   &lt;&gt; 
9790: 20 20 3c 2f 62 69 67 3e 49 4e 0a 41 4e 44 20 20    </big>IN.AND  
97a0: 20 0a 4f 52 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72   .OR</font>.</pr
97b0: 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  e></blockquote>.
97c0: 0a 3c 70 3e 53 75 70 70 6f 72 74 65 64 20 75 6e  .<p>Supported un
97d0: 61 72 79 20 70 72 65 66 69 78 20 6f 70 65 72 61  ary prefix opera
97e0: 74 6f 72 73 20 61 72 65 20 74 68 65 73 65 3a 3c  tors are these:<
97f0: 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
9800: 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c  ><pre>.<font col
9810: 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69  or="#2c2cf0"><bi
9820: 67 3e 2d 20 20 20 20 2b 20 20 20 20 7e 20 20 20  g>-    +    ~   
9830: 20 4e 4f 54 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74   NOT</big></font
9840: 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71  >.</pre></blockq
9850: 75 6f 74 65 3e 0a 0a 3c 70 3e 54 68 65 20 43 4f  uote>..<p>The CO
9860: 4c 4c 41 54 45 20 6f 70 65 72 61 74 6f 72 20 63  LLATE operator c
9870: 61 6e 20 62 65 20 74 68 6f 75 67 68 74 20 6f 66  an be thought of
9880: 20 61 73 20 61 20 75 6e 61 72 79 20 70 6f 73 74   as a unary post
9890: 66 69 78 0a 6f 70 65 72 61 74 6f 72 2e 20 20 54  fix.operator.  T
98a0: 68 65 20 43 4f 4c 4c 41 54 45 20 6f 70 65 72 61  he COLLATE opera
98b0: 74 6f 72 20 68 61 73 20 74 68 65 20 68 69 67 68  tor has the high
98c0: 65 73 74 20 70 72 65 63 65 64 65 6e 63 65 2e 0a  est precedence..
98d0: 49 74 20 61 6c 77 61 79 73 20 62 69 6e 64 73 20  It always binds 
98e0: 6d 6f 72 65 20 74 69 67 68 74 6c 79 20 74 68 61  more tightly tha
98f0: 6e 20 61 6e 79 20 70 72 65 66 69 78 20 75 6e 61  n any prefix una
9900: 72 79 20 6f 70 65 72 61 74 6f 72 20 6f 72 0a 61  ry operator or.a
9910: 6e 79 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74  ny binary operat
9920: 6f 72 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64  or.</p>..<tcl>hd
9930: 5f 70 75 74 73 20 22 0a 3c 70 3e 54 68 65 20 75  _puts ".<p>The u
9940: 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 5b 4f  nary operator [O
9950: 70 65 72 61 74 6f 72 20 2b 5d 20 69 73 20 61 20  perator +] is a 
9960: 6e 6f 2d 6f 70 2e 20 20 49 74 20 63 61 6e 20 62  no-op.  It can b
9970: 65 20 61 70 70 6c 69 65 64 0a 74 6f 20 73 74 72  e applied.to str
9980: 69 6e 67 73 2c 20 6e 75 6d 62 65 72 73 2c 20 6f  ings, numbers, o
9990: 72 20 62 6c 6f 62 73 20 61 6e 64 20 69 74 20 61  r blobs and it a
99a0: 6c 77 61 79 73 20 67 69 76 65 73 20 61 73 20 69  lways gives as i
99b0: 74 73 20 72 65 73 75 6c 74 20 74 68 65 0a 76 61  ts result the.va
99c0: 6c 75 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61  lue of the opera
99d0: 6e 64 2e 3c 2f 70 3e 22 3c 2f 74 63 6c 3e 0a 0a  nd.</p>"</tcl>..
99e0: 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 74 68 65  <p>Note that the
99f0: 72 65 20 61 72 65 20 74 77 6f 20 76 61 72 69 61  re are two varia
9a00: 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 65 71 75  tions of the equ
9a10: 61 6c 73 20 61 6e 64 20 6e 6f 74 20 65 71 75 61  als and not equa
9a20: 6c 73 0a 6f 70 65 72 61 74 6f 72 73 2e 20 20 45  ls.operators.  E
9a30: 71 75 61 6c 73 20 63 61 6e 20 62 65 20 65 69 74  quals can be eit
9a40: 68 65 72 0a 0a 3c 74 63 6c 3e 0a 68 64 5f 70 75  her..<tcl>.hd_pu
9a50: 74 73 20 22 5b 4f 70 65 72 61 74 6f 72 20 3d 5d  ts "[Operator =]
9a60: 20 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 3d 3d   or [Operator ==
9a70: 5d 2e 0a 54 68 65 20 6e 6f 6e 2d 65 71 75 61 6c  ]..The non-equal
9a80: 73 20 6f 70 65 72 61 74 6f 72 20 63 61 6e 20 62  s operator can b
9a90: 65 20 65 69 74 68 65 72 0a 5b 4f 70 65 72 61 74  e either.[Operat
9aa0: 6f 72 20 21 3d 5d 20 6f 72 20 5b 4f 70 65 72 61  or !=] or [Opera
9ab0: 74 6f 72 20 7b 26 6c 74 3b 26 67 74 3b 7d 5d 2e  tor {&lt;&gt;}].
9ac0: 0a 54 68 65 20 5b 4f 70 65 72 61 74 6f 72 20 7c  .The [Operator |
9ad0: 7c 5d 20 6f 70 65 72 61 74 6f 72 20 69 73 20 5c  |] operator is \
9ae0: 22 63 6f 6e 63 61 74 65 6e 61 74 65 5c 22 20 2d  "concatenate\" -
9af0: 20 69 74 20 6a 6f 69 6e 73 20 74 6f 67 65 74 68   it joins togeth
9b00: 65 72 0a 74 68 65 20 74 77 6f 20 73 74 72 69 6e  er.the two strin
9b10: 67 73 20 6f 66 20 69 74 73 20 6f 70 65 72 61 6e  gs of its operan
9b20: 64 73 2e 0a 54 68 65 20 6f 70 65 72 61 74 6f 72  ds..The operator
9b30: 20 5b 4f 70 65 72 61 74 6f 72 20 25 5d 20 6f 75   [Operator %] ou
9b40: 74 70 75 74 73 20 74 68 65 20 72 65 6d 61 69 6e  tputs the remain
9b50: 64 65 72 20 6f 66 20 69 74 73 20 6c 65 66 74 20  der of its left 
9b60: 0a 6f 70 65 72 61 6e 64 20 6d 6f 64 75 6c 6f 20  .operand modulo 
9b70: 69 74 73 20 72 69 67 68 74 20 6f 70 65 72 61 6e  its right operan
9b80: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 72  d.</p>..<p>The r
9b90: 65 73 75 6c 74 20 6f 66 20 61 6e 79 20 62 69 6e  esult of any bin
9ba0: 61 72 79 20 6f 70 65 72 61 74 6f 72 20 69 73 20  ary operator is 
9bb0: 61 20 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 2c  a numeric value,
9bc0: 20 65 78 63 65 70 74 0a 66 6f 72 20 74 68 65 20   except.for the 
9bd0: 5b 4f 70 65 72 61 74 6f 72 20 7c 7c 5d 20 63 6f  [Operator ||] co
9be0: 6e 63 61 74 65 6e 61 74 69 6f 6e 20 6f 70 65 72  ncatenation oper
9bf0: 61 74 6f 72 20 77 68 69 63 68 20 67 69 76 65 73  ator which gives
9c00: 20 61 20 73 74 72 69 6e 67 0a 72 65 73 75 6c 74   a string.result
9c10: 2e 3c 2f 70 3e 22 3c 2f 74 63 6c 3e 0a 0a 3c 61  .</p>"</tcl>..<a
9c20: 20 6e 61 6d 65 3d 22 6c 69 74 65 72 61 6c 5f 76   name="literal_v
9c30: 61 6c 75 65 22 3e 3c 2f 61 3e 0a 3c 70 3e 0a 41  alue"></a>.<p>.A
9c40: 20 6c 69 74 65 72 61 6c 20 76 61 6c 75 65 20 69   literal value i
9c50: 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d  s an integer num
9c60: 62 65 72 20 6f 72 20 61 20 66 6c 6f 61 74 69 6e  ber or a floatin
9c70: 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 2e 0a  g point number..
9c80: 53 63 69 65 6e 74 69 66 69 63 20 6e 6f 74 61 74  Scientific notat
9c90: 69 6f 6e 20 69 73 20 73 75 70 70 6f 72 74 65 64  ion is supported
9ca0: 2e 20 20 54 68 65 20 22 2e 22 20 63 68 61 72 61  .  The "." chara
9cb0: 63 74 65 72 20 69 73 20 61 6c 77 61 79 73 20 75  cter is always u
9cc0: 73 65 64 0a 61 73 20 74 68 65 20 64 65 63 69 6d  sed.as the decim
9cd0: 61 6c 20 70 6f 69 6e 74 20 65 76 65 6e 20 69 66  al point even if
9ce0: 20 74 68 65 20 6c 6f 63 61 6c 65 20 73 65 74 74   the locale sett
9cf0: 69 6e 67 20 73 70 65 63 69 66 69 65 73 20 22 2c  ing specifies ",
9d00: 22 20 66 6f 72 0a 74 68 69 73 20 72 6f 6c 65 20  " for.this role 
9d10: 2d 20 74 68 65 20 75 73 65 20 6f 66 20 22 2c 22  - the use of ","
9d20: 20 66 6f 72 20 74 68 65 20 64 65 63 69 6d 61 6c   for the decimal
9d30: 20 70 6f 69 6e 74 20 77 6f 75 6c 64 20 72 65 73   point would res
9d40: 75 6c 74 20 69 6e 0a 73 79 6e 74 61 63 74 69 63  ult in.syntactic
9d50: 20 61 6d 62 69 67 75 69 74 79 2e 20 20 41 20 73   ambiguity.  A s
9d60: 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 69  tring constant i
9d70: 73 20 66 6f 72 6d 65 64 20 62 79 20 65 6e 63 6c  s formed by encl
9d80: 6f 73 69 6e 67 20 74 68 65 0a 73 74 72 69 6e 67  osing the.string
9d90: 20 69 6e 20 73 69 6e 67 6c 65 20 71 75 6f 74 65   in single quote
9da0: 73 20 28 27 29 2e 20 20 41 20 73 69 6e 67 6c 65  s (').  A single
9db0: 20 71 75 6f 74 65 20 77 69 74 68 69 6e 20 74 68   quote within th
9dc0: 65 20 73 74 72 69 6e 67 20 63 61 6e 0a 62 65 20  e string can.be 
9dd0: 65 6e 63 6f 64 65 64 20 62 79 20 70 75 74 74 69  encoded by putti
9de0: 6e 67 20 74 77 6f 20 73 69 6e 67 6c 65 20 71 75  ng two single qu
9df0: 6f 74 65 73 20 69 6e 20 61 20 72 6f 77 20 2d 20  otes in a row - 
9e00: 61 73 20 69 6e 20 50 61 73 63 61 6c 2e 0a 43 2d  as in Pascal..C-
9e10: 73 74 79 6c 65 20 65 73 63 61 70 65 73 20 75 73  style escapes us
9e20: 69 6e 67 20 74 68 65 20 62 61 63 6b 73 6c 61 73  ing the backslas
9e30: 68 20 63 68 61 72 61 63 74 65 72 20 61 72 65 20  h character are 
9e40: 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 62 65  not supported be
9e50: 63 61 75 73 65 0a 74 68 65 79 20 61 72 65 20 6e  cause.they are n
9e60: 6f 74 20 73 74 61 6e 64 61 72 64 20 53 51 4c 2e  ot standard SQL.
9e70: 0a 42 4c 4f 42 20 6c 69 74 65 72 61 6c 73 20 61  .BLOB literals a
9e80: 72 65 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61  re string litera
9e90: 6c 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 68 65  ls containing he
9ea0: 78 61 64 65 63 69 6d 61 6c 20 64 61 74 61 20 61  xadecimal data a
9eb0: 6e 64 0a 70 72 65 63 65 64 65 64 20 62 79 20 61  nd.preceded by a
9ec0: 20 73 69 6e 67 6c 65 20 22 78 22 20 6f 72 20 22   single "x" or "
9ed0: 58 22 20 63 68 61 72 61 63 74 65 72 2e 20 20 46  X" character.  F
9ee0: 6f 72 20 65 78 61 6d 70 6c 65 3a 3c 2f 70 3e 0a  or example:</p>.
9ef0: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72  .<blockquote><pr
9f00: 65 3e 0a 58 27 35 33 35 31 34 43 36 39 37 34 36  e>.X'53514C69746
9f10: 35 27 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  5'.</pre></block
9f20: 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 41 20 6c 69  quote>..<p>.A li
9f30: 74 65 72 61 6c 20 76 61 6c 75 65 20 63 61 6e 20  teral value can 
9f40: 61 6c 73 6f 20 62 65 20 74 68 65 20 74 6f 6b 65  also be the toke
9f50: 6e 20 22 4e 55 4c 4c 22 2e 0a 3c 2f 70 3e 0a 0a  n "NULL"..</p>..
9f60: 3c 70 3e 0a 41 20 70 61 72 61 6d 65 74 65 72 20  <p>.A parameter 
9f70: 73 70 65 63 69 66 69 65 73 20 61 20 70 6c 61 63  specifies a plac
9f80: 65 68 6f 6c 64 65 72 20 69 6e 20 74 68 65 20 65  eholder in the e
9f90: 78 70 72 65 73 73 69 6f 6e 20 66 6f 72 20 61 20  xpression for a 
9fa0: 6c 69 74 65 72 61 6c 0a 76 61 6c 75 65 20 74 68  literal.value th
9fb0: 61 74 20 69 73 20 66 69 6c 6c 65 64 20 69 6e 20  at is filled in 
9fc0: 61 74 20 72 75 6e 74 69 6d 65 20 75 73 69 6e 67  at runtime using
9fd0: 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f 62 69   the.[sqlite3_bi
9fe0: 6e 64 5f 62 6c 6f 62 28 29 20 7c 20 73 71 6c 69  nd_blob() | sqli
9ff0: 74 65 33 5f 62 69 6e 64 28 29 5d 20 41 50 49 73  te3_bind()] APIs
a000: 2e 0a 50 61 72 61 6d 65 74 65 72 73 20 63 61 6e  ..Parameters can
a010: 20 74 61 6b 65 20 73 65 76 65 72 61 6c 20 66 6f   take several fo
a020: 72 6d 73 3a 0a 3c 2f 70 0a 0a 3c 62 6c 6f 63 6b  rms:.</p..<block
a030: 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 3e 0a 3c  quote>.<table>.<
a040: 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72  tr>.<td align="r
a050: 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f  ight" valign="to
a060: 70 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c 69 3e 4e 4e  p"><b>?</b><i>NN
a070: 4e 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77 69  N</i></td><td wi
a080: 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c  dth="20"></td>.<
a090: 74 64 3e 41 20 71 75 65 73 74 69 6f 6e 20 6d 61  td>A question ma
a0a0: 72 6b 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61  rk followed by a
a0b0: 20 6e 75 6d 62 65 72 20 3c 69 3e 4e 4e 4e 3c 2f   number <i>NNN</
a0c0: 69 3e 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20  i> holds a spot 
a0d0: 66 6f 72 20 74 68 65 0a 4e 4e 4e 2d 74 68 20 70  for the.NNN-th p
a0e0: 61 72 61 6d 65 74 65 72 2e 20 20 4e 4e 4e 20 6d  arameter.  NNN m
a0f0: 75 73 74 20 62 65 20 62 65 74 77 65 65 6e 20 31  ust be between 1
a100: 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f 4d 41 58   and [SQLITE_MAX
a110: 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52  _VARIABLE_NUMBER
a120: 5d 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74  ].</td>.</tr>.<t
a130: 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69  r>.<td align="ri
a140: 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70  ght" valign="top
a150: 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c 2f 74 64 3e 3c  "><b>?</b></td><
a160: 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f  td width="20"></
a170: 74 64 3e 0a 3c 74 64 3e 41 20 71 75 65 73 74 69  td>.<td>A questi
a180: 6f 6e 20 6d 61 72 6b 20 74 68 61 74 20 69 73 20  on mark that is 
a190: 6e 6f 74 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  not followed by 
a1a0: 61 20 6e 75 6d 62 65 72 20 68 6f 6c 64 73 20 61  a number holds a
a1b0: 20 73 70 6f 74 20 66 6f 72 0a 74 68 65 20 6e 65   spot for.the ne
a1c0: 78 74 20 75 6e 75 73 65 64 20 70 61 72 61 6d 65  xt unused parame
a1d0: 74 65 72 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ter.</td>.</tr>.
a1e0: 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22  <tr>.<td align="
a1f0: 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74  right" valign="t
a200: 6f 70 22 3e 3c 62 3e 3a 3c 2f 62 3e 3c 69 3e 41  op"><b>:</b><i>A
a210: 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20  AAA</i></td><td 
a220: 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e  width="20"></td>
a230: 0a 3c 74 64 3e 41 20 63 6f 6c 6f 6e 20 66 6f 6c  .<td>A colon fol
a240: 6c 6f 77 65 64 20 62 79 20 61 6e 20 69 64 65 6e  lowed by an iden
a250: 74 69 66 69 65 72 20 6e 61 6d 65 20 68 6f 6c 64  tifier name hold
a260: 73 20 61 20 73 70 6f 74 20 66 6f 72 20 61 20 6e  s a spot for a n
a270: 61 6d 65 64 0a 70 61 72 61 6d 65 74 65 72 20 77  amed.parameter w
a280: 69 74 68 20 74 68 65 20 6e 61 6d 65 20 41 41 41  ith the name AAA
a290: 41 2e 20 20 4e 61 6d 65 64 20 70 61 72 61 6d 65  A.  Named parame
a2a0: 74 65 72 73 20 61 72 65 20 61 6c 73 6f 20 6e 75  ters are also nu
a2b0: 6d 62 65 72 65 64 2e 0a 54 68 65 20 6e 75 6d 62  mbered..The numb
a2c0: 65 72 20 61 73 73 69 67 6e 65 64 20 69 73 20 74  er assigned is t
a2d0: 68 65 20 6e 65 78 74 20 75 6e 75 73 65 64 20 6e  he next unused n
a2e0: 75 6d 62 65 72 2e 20 20 54 6f 20 61 76 6f 69 64  umber.  To avoid
a2f0: 20 63 6f 6e 66 75 73 69 6f 6e 2c 0a 69 74 20 69   confusion,.it i
a300: 73 20 62 65 73 74 20 74 6f 20 61 76 6f 69 64 20  s best to avoid 
a310: 6d 69 78 69 6e 67 20 6e 61 6d 65 64 20 61 6e 64  mixing named and
a320: 20 6e 75 6d 62 65 72 65 64 20 70 61 72 61 6d 65   numbered parame
a330: 74 65 72 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  ters.</td>.</tr>
a340: 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d  .<tr>.<td align=
a350: 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22  "right" valign="
a360: 74 6f 70 22 3e 3c 62 3e 40 3c 2f 62 3e 3c 69 3e  top"><b>@</b><i>
a370: 41 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64  AAAA</i></td><td
a380: 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64   width="20"></td
a390: 3e 0a 3c 74 64 3e 41 6e 20 22 61 74 22 20 73 69  >.<td>An "at" si
a3a0: 67 6e 20 77 6f 72 6b 73 20 65 78 61 63 74 6c 79  gn works exactly
a3b0: 20 6c 69 6b 65 20 61 20 63 6f 6c 6f 6e 2e 3c 2f   like a colon.</
a3c0: 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c  td>.</tr>.<tr>.<
a3d0: 74 64 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  td align="right"
a3e0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62   valign="top"><b
a3f0: 3e 24 3c 2f 62 3e 3c 69 3e 41 41 41 41 3c 2f 69  >$</b><i>AAAA</i
a400: 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d  ></td><td width=
a410: 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41  "20"></td>.<td>A
a420: 20 64 6f 6c 6c 61 72 2d 73 69 67 6e 20 66 6f 6c   dollar-sign fol
a430: 6c 6f 77 65 64 20 62 79 20 61 6e 20 69 64 65 6e  lowed by an iden
a440: 74 69 66 69 65 72 20 6e 61 6d 65 20 61 6c 73 6f  tifier name also
a450: 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f   holds a spot fo
a460: 72 20 61 20 6e 61 6d 65 64 0a 70 61 72 61 6d 65  r a named.parame
a470: 74 65 72 20 77 69 74 68 20 74 68 65 20 6e 61 6d  ter with the nam
a480: 65 20 41 41 41 41 2e 20 20 54 68 65 20 69 64 65  e AAAA.  The ide
a490: 6e 74 69 66 69 65 72 20 6e 61 6d 65 20 69 6e 20  ntifier name in 
a4a0: 74 68 69 73 20 63 61 73 65 20 63 61 6e 20 69 6e  this case can in
a4b0: 63 6c 75 64 65 0a 6f 6e 65 20 6f 72 20 6d 6f 72  clude.one or mor
a4c0: 65 20 6f 63 63 75 72 61 6e 63 65 73 20 6f 66 20  e occurances of 
a4d0: 22 3a 3a 22 20 61 6e 64 20 61 20 73 75 66 66 69  "::" and a suffi
a4e0: 78 20 65 6e 63 6c 6f 73 65 64 20 69 6e 20 22 28  x enclosed in "(
a4f0: 2e 2e 2e 29 22 20 63 6f 6e 74 61 69 6e 69 6e 67  ...)" containing
a500: 0a 61 6e 79 20 74 65 78 74 20 61 74 20 61 6c 6c  .any text at all
a510: 2e 20 20 54 68 69 73 20 73 79 6e 74 61 78 20 69  .  This syntax i
a520: 73 20 74 68 65 20 66 6f 72 6d 20 6f 66 20 61 20  s the form of a 
a530: 76 61 72 69 61 62 6c 65 20 6e 61 6d 65 20 69 6e  variable name in
a540: 20 74 68 65 20 54 63 6c 0a 70 72 6f 67 72 61 6d   the Tcl.program
a550: 6d 69 6e 67 20 6c 61 6e 67 75 61 67 65 2e 3c 2f  ming language.</
a560: 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c  td>.</tr>.</tabl
a570: 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  e>.</blockquote>
a580: 0a 0a 3c 70 3e 50 61 72 61 6d 65 74 65 72 73 20  ..<p>Parameters 
a590: 74 68 61 74 20 61 72 65 20 6e 6f 74 20 61 73 73  that are not ass
a5a0: 69 67 6e 65 64 20 76 61 6c 75 65 73 20 75 73 69  igned values usi
a5b0: 6e 67 0a 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64  ng.[sqlite3_bind
a5c0: 5f 62 6c 6f 62 28 29 20 7c 20 73 71 6c 69 74 65  _blob() | sqlite
a5d0: 33 5f 62 69 6e 64 28 29 5d 20 61 72 65 20 74 72  3_bind()] are tr
a5e0: 65 61 74 65 64 0a 61 73 20 4e 55 4c 4c 2e 3c 2f  eated.as NULL.</
a5f0: 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67  p>..<tcl>hd_frag
a600: 6d 65 6e 74 20 6c 69 6b 65 20 4c 49 4b 45 20 45  ment like LIKE E
a610: 53 43 41 50 45 3c 2f 74 63 6c 3e 0a 3c 70 3e 54  SCAPE</tcl>.<p>T
a620: 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72  he LIKE operator
a630: 20 64 6f 65 73 20 61 20 70 61 74 74 65 72 6e 20   does a pattern 
a640: 6d 61 74 63 68 69 6e 67 20 63 6f 6d 70 61 72 69  matching compari
a650: 73 6f 6e 2e 20 54 68 65 20 6f 70 65 72 61 6e 64  son. The operand
a660: 0a 74 6f 20 74 68 65 20 72 69 67 68 74 20 63 6f  .to the right co
a670: 6e 74 61 69 6e 73 20 74 68 65 20 70 61 74 74 65  ntains the patte
a680: 72 6e 2c 20 74 68 65 20 6c 65 66 74 20 68 61 6e  rn, the left han
a690: 64 20 6f 70 65 72 61 6e 64 20 63 6f 6e 74 61 69  d operand contai
a6a0: 6e 73 20 74 68 65 0a 73 74 72 69 6e 67 20 74 6f  ns the.string to
a6b0: 20 6d 61 74 63 68 20 61 67 61 69 6e 73 74 20 74   match against t
a6c0: 68 65 20 70 61 74 74 65 72 6e 2e 20 0a 0a 3c 74  he pattern. ..<t
a6d0: 63 6c 3e 68 64 5f 70 75 74 73 20 22 41 20 70 65  cl>hd_puts "A pe
a6e0: 72 63 65 6e 74 20 73 79 6d 62 6f 6c 20 5b 4f 70  rcent symbol [Op
a6f0: 65 72 61 74 6f 72 20 25 5d 20 69 6e 20 74 68 65  erator %] in the
a700: 20 70 61 74 74 65 72 6e 20 6d 61 74 63 68 65 73   pattern matches
a710: 20 61 6e 79 0a 73 65 71 75 65 6e 63 65 20 6f 66   any.sequence of
a720: 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 63 68   zero or more ch
a730: 61 72 61 63 74 65 72 73 20 69 6e 20 74 68 65 20  aracters in the 
a740: 73 74 72 69 6e 67 2e 20 20 41 6e 20 75 6e 64 65  string.  An unde
a750: 72 73 63 6f 72 65 0a 5b 4f 70 65 72 61 74 6f 72  rscore.[Operator
a760: 20 5f 5d 20 69 6e 20 74 68 65 20 70 61 74 74 65   _] in the patte
a770: 72 6e 20 6d 61 74 63 68 65 73 20 61 6e 79 20 73  rn matches any s
a780: 69 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72 20  ingle character 
a790: 69 6e 20 74 68 65 0a 73 74 72 69 6e 67 2e 20 20  in the.string.  
a7a0: 41 6e 79 20 6f 74 68 65 72 20 63 68 61 72 61 63  Any other charac
a7b0: 74 65 72 20 6d 61 74 63 68 65 73 20 69 74 73 65  ter matches itse
a7c0: 6c 66 20 6f 72 20 69 74 27 73 20 6c 6f 77 65 72  lf or it's lower
a7d0: 2f 75 70 70 65 72 20 63 61 73 65 0a 65 71 75 69  /upper case.equi
a7e0: 76 61 6c 65 6e 74 20 28 69 2e 65 2e 20 63 61 73  valent (i.e. cas
a7f0: 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 6d 61  e-insensitive ma
a800: 74 63 68 69 6e 67 29 2e 20 20 28 41 20 62 75 67  tching).  (A bug
a810: 3a 20 53 51 4c 69 74 65 20 6f 6e 6c 79 0a 75 6e  : SQLite only.un
a820: 64 65 72 73 74 61 6e 64 73 20 75 70 70 65 72 2f  derstands upper/
a830: 6c 6f 77 65 72 20 63 61 73 65 20 66 6f 72 20 37  lower case for 7
a840: 2d 62 69 74 20 4c 61 74 69 6e 20 63 68 61 72 61  -bit Latin chara
a850: 63 74 65 72 73 2e 20 20 48 65 6e 63 65 20 74 68  cters.  Hence th
a860: 65 0a 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20  e.LIKE operator 
a870: 69 73 20 63 61 73 65 20 73 65 6e 73 69 74 69 76  is case sensitiv
a880: 65 20 66 6f 72 20 38 2d 62 69 74 20 69 73 6f 38  e for 8-bit iso8
a890: 38 35 39 20 63 68 61 72 61 63 74 65 72 73 20 6f  859 characters o
a8a0: 72 20 55 54 46 2d 38 0a 63 68 61 72 61 63 74 65  r UTF-8.characte
a8b0: 72 73 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  rs.  For example
a8c0: 2c 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  , the expression
a8d0: 20 3c 62 3e 27 61 27 26 6e 62 73 70 3b 4c 49 4b   <b>'a'&nbsp;LIK
a8e0: 45 26 6e 62 73 70 3b 27 41 27 3c 2f 62 3e 0a 69  E&nbsp;'A'</b>.i
a8f0: 73 20 54 52 55 45 20 62 75 74 20 3c 62 3e 27 26  s TRUE but <b>'&
a900: 61 65 6c 69 67 3b 27 26 6e 62 73 70 3b 4c 49 4b  aelig;'&nbsp;LIK
a910: 45 26 6e 62 73 70 3b 27 26 41 45 6c 69 67 3b 27  E&nbsp;'&AElig;'
a920: 3c 2f 62 3e 20 69 73 20 46 41 4c 53 45 2e 29 2e  </b> is FALSE.).
a930: 3c 2f 70 3e 22 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  </p>"</tcl>..<p>
a940: 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20  If the optional 
a950: 45 53 43 41 50 45 20 63 6c 61 75 73 65 20 69 73  ESCAPE clause is
a960: 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 74   present, then t
a970: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 0a 66 6f  he expression.fo
a980: 6c 6c 6f 77 69 6e 67 20 74 68 65 20 45 53 43 41  llowing the ESCA
a990: 50 45 20 6b 65 79 77 6f 72 64 20 6d 75 73 74 20  PE keyword must 
a9a0: 65 76 61 6c 75 61 74 65 20 74 6f 20 61 20 73 74  evaluate to a st
a9b0: 72 69 6e 67 20 63 6f 6e 73 69 73 74 69 6e 67 20  ring consisting 
a9c0: 6f 66 0a 61 20 73 69 6e 67 6c 65 20 63 68 61 72  of.a single char
a9d0: 61 63 74 65 72 2e 20 54 68 69 73 20 63 68 61 72  acter. This char
a9e0: 61 63 74 65 72 20 6d 61 79 20 62 65 20 75 73 65  acter may be use
a9f0: 64 20 69 6e 20 74 68 65 20 4c 49 4b 45 20 70 61  d in the LIKE pa
aa00: 74 74 65 72 6e 0a 74 6f 20 69 6e 63 6c 75 64 65  ttern.to include
aa10: 20 6c 69 74 65 72 61 6c 20 70 65 72 63 65 6e 74   literal percent
aa20: 20 6f 72 20 75 6e 64 65 72 73 63 6f 72 65 20 63   or underscore c
aa30: 68 61 72 61 63 74 65 72 73 2e 20 54 68 65 20 65  haracters. The e
aa40: 73 63 61 70 65 0a 63 68 61 72 61 63 74 65 72 20  scape.character 
aa50: 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 70 65  followed by a pe
aa60: 72 63 65 6e 74 20 73 79 6d 62 6f 6c 2c 20 75 6e  rcent symbol, un
aa70: 64 65 72 73 63 6f 72 65 20 6f 72 20 69 74 73 65  derscore or itse
aa80: 6c 66 20 6d 61 74 63 68 65 73 20 61 0a 6c 69 74  lf matches a.lit
aa90: 65 72 61 6c 20 70 65 72 63 65 6e 74 20 73 79 6d  eral percent sym
aaa0: 62 6f 6c 2c 20 75 6e 64 65 72 73 63 6f 72 65 20  bol, underscore 
aab0: 6f 72 20 65 73 63 61 70 65 20 63 68 61 72 61 63  or escape charac
aac0: 74 65 72 20 69 6e 20 74 68 65 20 73 74 72 69 6e  ter in the strin
aad0: 67 2c 0a 72 65 73 70 65 63 74 69 76 65 6c 79 2e  g,.respectively.
aae0: 20 54 68 65 20 69 6e 66 69 78 20 4c 49 4b 45 20   The infix LIKE 
aaf0: 6f 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70 6c  operator is impl
ab00: 65 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c 69  emented by calli
ab10: 6e 67 20 74 68 65 0a 61 70 70 6c 69 63 61 74 69  ng the.applicati
ab20: 6f 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c 20 66  on-defined SQL f
ab30: 75 6e 63 74 69 6f 6e 73 20 5b 6c 69 6b 65 28 3c  unctions [like(<
ab40: 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e  i>Y</i>,<i>X</i>
ab50: 29 5d 20 6f 72 0a 5b 6c 69 6b 65 28 3c 69 3e 59  )] or.[like(<i>Y
ab60: 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  </i>,<i>X</i>,<i
ab70: 3e 5a 3c 2f 69 3e 29 5d 3c 2f 61 3e 2e 3c 2f 70  >Z</i>)]</a>.</p
ab80: 3e 0a 0a 54 68 65 20 4c 49 4b 45 20 6f 70 65 72  >..The LIKE oper
ab90: 61 74 6f 72 20 69 73 20 6e 6f 74 20 63 61 73 65  ator is not case
aba0: 20 73 65 6e 73 69 74 69 76 65 20 61 6e 64 20 77   sensitive and w
abb0: 69 6c 6c 20 6d 61 74 63 68 20 75 70 70 65 72 20  ill match upper 
abc0: 63 61 73 65 0a 63 68 61 72 61 63 74 65 72 73 20  case.characters 
abd0: 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 67 61 69  on one side agai
abe0: 6e 73 74 20 6c 6f 77 65 72 20 63 61 73 65 20 63  nst lower case c
abf0: 68 61 72 61 63 74 65 72 73 20 6f 6e 20 74 68 65  haracters on the
ac00: 20 6f 74 68 65 72 2e 20 20 0a 28 41 20 62 75 67   other.  .(A bug
ac10: 3a 20 53 51 4c 69 74 65 20 6f 6e 6c 79 20 75 6e  : SQLite only un
ac20: 64 65 72 73 74 61 6e 64 73 20 75 70 70 65 72 2f  derstands upper/
ac30: 6c 6f 77 65 72 20 63 61 73 65 20 66 6f 72 20 37  lower case for 7
ac40: 2d 62 69 74 20 4c 61 74 69 6e 0a 63 68 61 72 61  -bit Latin.chara
ac50: 63 74 65 72 73 2e 20 20 48 65 6e 63 65 20 74 68  cters.  Hence th
ac60: 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20  e LIKE operator 
ac70: 69 73 20 63 61 73 65 20 73 65 6e 73 69 74 69 76  is case sensitiv
ac80: 65 20 66 6f 72 20 38 2d 62 69 74 0a 69 73 6f 38  e for 8-bit.iso8
ac90: 38 35 39 20 63 68 61 72 61 63 74 65 72 73 20 6f  859 characters o
aca0: 72 20 55 54 46 2d 38 20 63 68 61 72 61 63 74 65  r UTF-8 characte
acb0: 72 73 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  rs.  For example
acc0: 2c 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  , the expression
acd0: 0a 3c 62 3e 27 61 27 26 6e 62 73 70 3b 4c 49 4b  .<b>'a'&nbsp;LIK
ace0: 45 26 6e 62 73 70 3b 27 41 27 3c 2f 62 3e 20 69  E&nbsp;'A'</b> i
acf0: 73 20 54 52 55 45 20 62 75 74 0a 3c 62 3e 27 26  s TRUE but.<b>'&
ad00: 61 65 6c 69 67 3b 27 26 6e 62 73 70 3b 4c 49 4b  aelig;'&nbsp;LIK
ad10: 45 26 6e 62 73 70 3b 27 26 41 45 6c 69 67 3b 27  E&nbsp;'&AElig;'
ad20: 3c 2f 62 3e 20 69 73 20 46 41 4c 53 45 2e 29 2e  </b> is FALSE.).
ad30: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 69 6e 66  </p>..<p>The inf
ad40: 69 78 20 4c 49 4b 45 0a 6f 70 65 72 61 74 6f 72  ix LIKE.operator
ad50: 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20   is implemented 
ad60: 62 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 75  by calling the u
ad70: 73 65 72 20 66 75 6e 63 74 69 6f 6e 20 3c 61 20  ser function <a 
ad80: 68 72 65 66 3d 22 23 6c 69 6b 65 46 75 6e 63 22  href="#likeFunc"
ad90: 3e 0a 6c 69 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c  >.like(<i>X</i>,
ada0: 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 61 3e 2e 20 20  <i>Y</i>)</a>.  
adb0: 49 66 20 61 6e 20 45 53 43 41 50 45 20 63 6c 61  If an ESCAPE cla
adc0: 75 73 65 20 69 73 20 70 72 65 73 65 6e 74 2c 20  use is present, 
add0: 69 74 20 61 64 64 73 0a 61 20 74 68 69 72 64 20  it adds.a third 
ade0: 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65  parameter to the
adf0: 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 2e 20   function call. 
ae00: 49 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 61  If the functiona
ae10: 6c 69 74 79 20 6f 66 20 4c 49 4b 45 20 63 61 6e  lity of LIKE can
ae20: 20 62 65 0a 6f 76 65 72 72 69 64 64 65 6e 20 62   be.overridden b
ae30: 79 20 64 65 66 69 6e 69 6e 67 20 61 6e 20 61 6c  y defining an al
ae40: 74 65 72 6e 61 74 69 76 65 20 69 6d 70 6c 65 6d  ternative implem
ae50: 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 0a  entation of the.
ae60: 6c 69 6b 65 28 29 20 53 51 4c 20 66 75 6e 63 74  like() SQL funct
ae70: 69 6f 6e 2e 3c 2f 70 3e 0a 3c 2f 70 3e 0a 0a 3c  ion.</p>.</p>..<
ae80: 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20  tcl>hd_fragment 
ae90: 67 6c 6f 62 20 47 4c 4f 42 3c 2f 74 63 6c 3e 0a  glob GLOB</tcl>.
aea0: 3c 70 3e 54 68 65 20 47 4c 4f 42 20 6f 70 65 72  <p>The GLOB oper
aeb0: 61 74 6f 72 20 69 73 20 73 69 6d 69 6c 61 72 20  ator is similar 
aec0: 74 6f 20 4c 49 4b 45 20 62 75 74 20 75 73 65 73  to LIKE but uses
aed0: 20 74 68 65 20 55 6e 69 78 0a 66 69 6c 65 20 67   the Unix.file g
aee0: 6c 6f 62 62 69 6e 67 20 73 79 6e 74 61 78 20 66  lobbing syntax f
aef0: 6f 72 20 69 74 73 20 77 69 6c 64 63 61 72 64 73  or its wildcards
af00: 2e 20 20 41 6c 73 6f 2c 20 47 4c 4f 42 20 69 73  .  Also, GLOB is
af10: 20 63 61 73 65 0a 73 65 6e 73 69 74 69 76 65 2c   case.sensitive,
af20: 20 75 6e 6c 69 6b 65 20 4c 49 4b 45 2e 20 20 42   unlike LIKE.  B
af30: 6f 74 68 20 47 4c 4f 42 20 61 6e 64 20 4c 49 4b  oth GLOB and LIK
af40: 45 20 6d 61 79 20 62 65 20 70 72 65 63 65 64 65  E may be precede
af50: 64 20 62 79 0a 74 68 65 20 4e 4f 54 20 6b 65 79  d by.the NOT key
af60: 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74  word to invert t
af70: 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20  he sense of the 
af80: 74 65 73 74 2e 20 20 54 68 65 20 69 6e 66 69 78  test.  The infix
af90: 20 47 4c 4f 42 20 0a 6f 70 65 72 61 74 6f 72 20   GLOB .operator 
afa0: 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62  is implemented b
afb0: 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 66 75  y calling the fu
afc0: 6e 63 74 69 6f 6e 0a 5b 67 6c 6f 62 28 3c 69 3e  nction.[glob(<i>
afd0: 59 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 29 5d  Y</i>,<i>X</i>)]
afe0: 20 61 6e 64 20 63 61 6e 20 62 65 20 6d 6f 64 69   and can be modi
aff0: 66 69 65 64 20 62 79 20 6f 76 65 72 72 69 64 69  fied by overridi
b000: 6e 67 0a 74 68 61 74 20 66 75 6e 63 74 69 6f 6e  ng.that function
b010: 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66  .</p>..<tcl>hd_f
b020: 72 61 67 6d 65 6e 74 20 72 65 67 65 78 70 20 52  ragment regexp R
b030: 45 47 45 58 50 3c 2f 74 63 6c 3e 0a 3c 70 3e 54  EGEXP</tcl>.<p>T
b040: 68 65 20 52 45 47 45 58 50 20 6f 70 65 72 61 74  he REGEXP operat
b050: 6f 72 20 69 73 20 61 20 73 70 65 63 69 61 6c 20  or is a special 
b060: 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20 72  syntax for the r
b070: 65 67 65 78 70 28 29 0a 75 73 65 72 20 66 75 6e  egexp().user fun
b080: 63 74 69 6f 6e 2e 20 20 4e 6f 20 72 65 67 65 78  ction.  No regex
b090: 70 28 29 20 75 73 65 72 20 66 75 6e 63 74 69 6f  p() user functio
b0a0: 6e 20 69 73 20 64 65 66 69 6e 65 64 20 62 79 20  n is defined by 
b0b0: 64 65 66 61 75 6c 74 0a 61 6e 64 20 73 6f 20 75  default.and so u
b0c0: 73 65 20 6f 66 20 74 68 65 20 52 45 47 45 58 50  se of the REGEXP
b0d0: 20 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 6e   operator will n
b0e0: 6f 72 6d 61 6c 6c 79 20 72 65 73 75 6c 74 20 69  ormally result i
b0f0: 6e 20 61 6e 0a 65 72 72 6f 72 20 6d 65 73 73 61  n an.error messa
b100: 67 65 2e 20 20 49 66 20 61 20 75 73 65 72 2d 64  ge.  If a user-d
b110: 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 20  efined function 
b120: 6e 61 6d 65 64 20 22 72 65 67 65 78 70 22 0a 69  named "regexp".i
b130: 73 20 61 64 64 65 64 20 61 74 20 72 75 6e 2d 74  s added at run-t
b140: 69 6d 65 2c 20 74 68 61 74 20 66 75 6e 63 74 69  ime, that functi
b150: 6f 6e 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65  on will be calle
b160: 64 20 69 6e 20 6f 72 64 65 72 0a 74 6f 20 69 6d  d in order.to im
b170: 70 6c 65 6d 65 6e 74 20 74 68 65 20 52 45 47 45  plement the REGE
b180: 58 50 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70 3e  XP operator.</p>
b190: 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65  ..<tcl>hd_fragme
b1a0: 6e 74 20 6d 61 74 63 68 20 4d 41 54 43 48 3c 2f  nt match MATCH</
b1b0: 74 63 6c 3e 0a 3c 70 3e 54 68 65 20 4d 41 54 43  tcl>.<p>The MATC
b1c0: 48 20 6f 70 65 72 61 74 6f 72 20 69 73 20 61 20  H operator is a 
b1d0: 73 70 65 63 69 61 6c 20 73 79 6e 74 61 78 20 66  special syntax f
b1e0: 6f 72 20 74 68 65 20 6d 61 74 63 68 28 29 0a 75  or the match().u
b1f0: 73 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20 20 54  ser function.  T
b200: 68 65 20 64 65 66 61 75 6c 74 20 6d 61 74 63 68  he default match
b210: 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 6d 70 6c  () function impl
b220: 65 6d 65 6e 74 61 74 69 6f 6e 0a 72 61 69 73 65  ementation.raise
b230: 73 20 61 6e 64 20 65 78 63 65 70 74 69 6f 6e 20  s and exception 
b240: 61 6e 64 20 69 73 20 6e 6f 74 20 72 65 61 6c 6c  and is not reall
b250: 79 20 75 73 65 66 75 6c 20 66 6f 72 20 61 6e 79  y useful for any
b260: 74 68 69 6e 67 2e 0a 42 75 74 20 65 78 74 65 6e  thing..But exten
b270: 73 69 6f 6e 73 20 63 61 6e 20 6f 76 65 72 72 69  sions can overri
b280: 64 65 20 74 68 65 20 6d 61 74 63 68 28 29 20 66  de the match() f
b290: 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 6d 6f 72  unction with mor
b2a0: 65 0a 68 65 6c 70 66 75 6c 20 6c 6f 67 69 63 2e  e.helpful logic.
b2b0: 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6c 75 6d  </p>..<p>A colum
b2c0: 6e 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 61 6e  n name can be an
b2d0: 79 20 6f 66 20 74 68 65 20 6e 61 6d 65 73 20 64  y of the names d
b2e0: 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 43  efined in the [C
b2f0: 52 45 41 54 45 20 54 41 42 4c 45 5d 0a 73 74 61  REATE TABLE].sta
b300: 74 65 6d 65 6e 74 20 6f 72 20 6f 6e 65 20 6f 66  tement or one of
b310: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73   the following s
b320: 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65  pecial identifie
b330: 72 73 3a 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62  rs: "<b>ROWID</b
b340: 3e 22 2c 0a 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22  >",."<b>OID</b>"
b350: 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f  , or "<b>_ROWID_
b360: 3c 2f 62 3e 22 2e 0a 54 68 65 73 65 20 73 70 65  </b>"..These spe
b370: 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73  cial identifiers
b380: 20 61 6c 6c 20 64 65 73 63 72 69 62 65 20 74 68   all describe th
b390: 65 0a 75 6e 69 71 75 65 20 69 6e 74 65 67 65 72  e.unique integer
b3a0: 20 6b 65 79 20 28 74 68 65 20 22 72 6f 77 20 6b   key (the "row k
b3b0: 65 79 22 29 20 61 73 73 6f 63 69 61 74 65 64 20  ey") associated 
b3c0: 77 69 74 68 20 65 76 65 72 79 20 0a 72 6f 77 20  with every .row 
b3d0: 6f 66 20 65 76 65 72 79 20 74 61 62 6c 65 2e 0a  of every table..
b3e0: 54 68 65 20 73 70 65 63 69 61 6c 20 69 64 65 6e  The special iden
b3f0: 74 69 66 69 65 72 73 20 6f 6e 6c 79 20 72 65 66  tifiers only ref
b400: 65 72 20 74 6f 20 74 68 65 20 72 6f 77 20 6b 65  er to the row ke
b410: 79 20 69 66 20 74 68 65 20 5b 43 52 45 41 54 45  y if the [CREATE
b420: 20 54 41 42 4c 45 5d 0a 73 74 61 74 65 6d 65 6e   TABLE].statemen
b430: 74 20 64 6f 65 73 20 6e 6f 74 20 64 65 66 69 6e  t does not defin
b440: 65 20 61 20 72 65 61 6c 20 63 6f 6c 75 6d 6e 20  e a real column 
b450: 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61  with the same na
b460: 6d 65 2e 20 20 52 6f 77 20 6b 65 79 73 0a 61 63  me.  Row keys.ac
b470: 74 20 6c 69 6b 65 20 72 65 61 64 2d 6f 6e 6c 79  t like read-only
b480: 20 63 6f 6c 75 6d 6e 73 2e 20 20 41 20 72 6f 77   columns.  A row
b490: 20 6b 65 79 20 63 61 6e 20 62 65 20 75 73 65 64   key can be used
b4a0: 20 61 6e 79 77 68 65 72 65 20 61 20 72 65 67 75   anywhere a regu
b4b0: 6c 61 72 0a 63 6f 6c 75 6d 6e 20 63 61 6e 20 62  lar.column can b
b4c0: 65 20 75 73 65 64 2c 20 65 78 63 65 70 74 20 74  e used, except t
b4d0: 68 61 74 20 79 6f 75 20 63 61 6e 6e 6f 74 20 63  hat you cannot c
b4e0: 68 61 6e 67 65 20 74 68 65 20 76 61 6c 75 65 0a  hange the value.
b4f0: 6f 66 20 61 20 72 6f 77 20 6b 65 79 20 69 6e 20  of a row key in 
b500: 61 6e 20 5b 55 50 44 41 54 45 5d 20 6f 72 20 5b  an [UPDATE] or [
b510: 49 4e 53 45 52 54 5d 20 73 74 61 74 65 6d 65 6e  INSERT] statemen
b520: 74 2e 0a 22 53 45 4c 45 43 54 20 2a 20 2e 2e 2e  t.."SELECT * ...
b530: 22 20 64 6f 65 73 20 6e 6f 74 20 72 65 74 75 72  " does not retur
b540: 6e 20 74 68 65 20 72 6f 77 20 6b 65 79 2e 3c 2f  n the row key.</
b550: 70 3e 0a 0a 3c 70 3e 5b 53 45 4c 45 43 54 5d 20  p>..<p>[SELECT] 
b560: 73 74 61 74 65 6d 65 6e 74 73 20 63 61 6e 20 61  statements can a
b570: 70 70 65 61 72 20 69 6e 20 65 78 70 72 65 73 73  ppear in express
b580: 69 6f 6e 73 20 61 73 20 65 69 74 68 65 72 20 74  ions as either t
b590: 68 65 0a 72 69 67 68 74 2d 68 61 6e 64 20 6f 70  he.right-hand op
b5a0: 65 72 61 6e 64 20 6f 66 20 74 68 65 20 49 4e 20  erand of the IN 
b5b0: 6f 70 65 72 61 74 6f 72 2c 20 61 73 20 61 20 73  operator, as a s
b5c0: 63 61 6c 61 72 20 71 75 61 6e 74 69 74 79 2c 20  calar quantity, 
b5d0: 6f 72 0a 61 73 20 74 68 65 20 6f 70 65 72 61 6e  or.as the operan
b5e0: 64 20 6f 66 20 61 6e 20 45 58 49 53 54 53 20 6f  d of an EXISTS o
b5f0: 70 65 72 61 74 6f 72 2e 0a 41 73 20 61 20 73 63  perator..As a sc
b600: 61 6c 61 72 20 71 75 61 6e 74 69 74 79 20 6f 72  alar quantity or
b610: 20 74 68 65 20 6f 70 65 72 61 6e 64 20 6f 66 20   the operand of 
b620: 61 6e 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c 0a  an IN operator,.
b630: 74 68 65 20 53 45 4c 45 43 54 20 73 68 6f 75 6c  the SELECT shoul
b640: 64 20 68 61 76 65 20 6f 6e 6c 79 20 61 20 73 69  d have only a si
b650: 6e 67 6c 65 20 63 6f 6c 75 6d 6e 20 69 6e 20 69  ngle column in i
b660: 74 73 0a 72 65 73 75 6c 74 2e 20 20 43 6f 6d 70  ts.result.  Comp
b670: 6f 75 6e 64 20 53 45 4c 45 43 54 73 20 28 63 6f  ound SELECTs (co
b680: 6e 6e 65 63 74 65 64 20 77 69 74 68 20 6b 65 79  nnected with key
b690: 77 6f 72 64 73 20 6c 69 6b 65 20 55 4e 49 4f 4e  words like UNION
b6a0: 20 6f 72 0a 45 58 43 45 50 54 29 20 61 72 65 20   or.EXCEPT) are 
b6b0: 61 6c 6c 6f 77 65 64 2e 0a 57 69 74 68 20 74 68  allowed..With th
b6c0: 65 20 45 58 49 53 54 53 20 6f 70 65 72 61 74 6f  e EXISTS operato
b6d0: 72 2c 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69  r, the columns i
b6e0: 6e 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74  n the result set
b6f0: 20 6f 66 20 74 68 65 20 5b 53 45 4c 45 43 54 5d   of the [SELECT]
b700: 20 61 72 65 0a 69 67 6e 6f 72 65 64 20 61 6e 64   are.ignored and
b710: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
b720: 72 65 74 75 72 6e 73 20 54 52 55 45 20 69 66 20  returns TRUE if 
b730: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73  one or more rows
b740: 20 65 78 69 73 74 0a 61 6e 64 20 46 41 4c 53 45   exist.and FALSE
b750: 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 73   if the result s
b760: 65 74 20 69 73 20 65 6d 70 74 79 2e 0a 49 66 20  et is empty..If 
b770: 6e 6f 20 74 65 72 6d 73 20 69 6e 20 74 68 65 20  no terms in the 
b780: 5b 53 45 4c 45 43 54 5d 20 65 78 70 72 65 73 73  [SELECT] express
b790: 69 6f 6e 20 72 65 66 65 72 20 74 6f 20 76 61 6c  ion refer to val
b7a0: 75 65 20 69 6e 20 74 68 65 20 63 6f 6e 74 61 69  ue in the contai
b7b0: 6e 69 6e 67 0a 71 75 65 72 79 2c 20 74 68 65 6e  ning.query, then
b7c0: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
b7d0: 69 73 20 65 76 61 6c 75 61 74 65 64 20 6f 6e 63  is evaluated onc
b7e0: 65 20 70 72 69 6f 72 20 74 6f 20 61 6e 79 20 6f  e prior to any o
b7f0: 74 68 65 72 0a 70 72 6f 63 65 73 73 69 6e 67 20  ther.processing 
b800: 61 6e 64 20 74 68 65 20 72 65 73 75 6c 74 20 69  and the result i
b810: 73 20 72 65 75 73 65 64 20 61 73 20 6e 65 63 65  s reused as nece
b820: 73 73 61 72 79 2e 20 20 49 66 20 74 68 65 20 5b  ssary.  If the [
b830: 53 45 4c 45 43 54 5d 20 65 78 70 72 65 73 73 69  SELECT] expressi
b840: 6f 6e 0a 64 6f 65 73 20 63 6f 6e 74 61 69 6e 20  on.does contain 
b850: 76 61 72 69 61 62 6c 65 73 20 66 72 6f 6d 20 74  variables from t
b860: 68 65 20 6f 75 74 65 72 20 71 75 65 72 79 2c 20  he outer query, 
b870: 74 68 65 6e 20 74 68 65 20 5b 53 45 4c 45 43 54  then the [SELECT
b880: 5d 20 69 73 20 72 65 65 76 61 6c 75 61 74 65 64  ] is reevaluated
b890: 0a 65 76 65 72 79 20 74 69 6d 65 20 69 74 20 69  .every time it i
b8a0: 73 20 6e 65 65 64 65 64 2e 3c 2f 70 3e 0a 0a 3c  s needed.</p>..<
b8b0: 70 3e 57 68 65 6e 20 61 20 53 45 4c 45 43 54 20  p>When a SELECT 
b8c0: 69 73 20 74 68 65 20 72 69 67 68 74 20 6f 70 65  is the right ope
b8d0: 72 61 6e 64 20 6f 66 20 74 68 65 20 49 4e 20 6f  rand of the IN o
b8e0: 70 65 72 61 74 6f 72 2c 20 74 68 65 20 49 4e 0a  perator, the IN.
b8f0: 6f 70 65 72 61 74 6f 72 20 72 65 74 75 72 6e 73  operator returns
b900: 20 54 52 55 45 20 69 66 20 74 68 65 20 72 65 73   TRUE if the res
b910: 75 6c 74 20 6f 66 20 74 68 65 20 6c 65 66 74 20  ult of the left 
b920: 6f 70 65 72 61 6e 64 20 69 73 20 61 6e 79 20 6f  operand is any o
b930: 66 0a 74 68 65 20 76 61 6c 75 65 73 20 67 65 6e  f.the values gen
b940: 65 72 61 74 65 64 20 62 79 20 74 68 65 20 73 65  erated by the se
b950: 6c 65 63 74 2e 20 20 54 68 65 20 49 4e 20 6f 70  lect.  The IN op
b960: 65 72 61 74 6f 72 20 6d 61 79 20 62 65 20 70 72  erator may be pr
b970: 65 63 65 64 65 64 0a 62 79 20 74 68 65 20 4e 4f  eceded.by the NO
b980: 54 20 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e 76  T keyword to inv
b990: 65 72 74 20 74 68 65 20 73 65 6e 73 65 20 6f 66  ert the sense of
b9a0: 20 74 68 65 20 74 65 73 74 2e 3c 2f 70 3e 0a 0a   the test.</p>..
b9b0: 3c 70 3e 57 68 65 6e 20 61 20 53 45 4c 45 43 54  <p>When a SELECT
b9c0: 20 61 70 70 65 61 72 73 20 77 69 74 68 69 6e 20   appears within 
b9d0: 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 62 75  an expression bu
b9e0: 74 20 69 73 20 6e 6f 74 20 74 68 65 20 72 69 67  t is not the rig
b9f0: 68 74 0a 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e  ht.operand of an
ba00: 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c 20 74 68   IN operator, th
ba10: 65 6e 20 74 68 65 20 66 69 72 73 74 20 72 6f 77  en the first row
ba20: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f   of the result o
ba30: 66 20 74 68 65 0a 53 45 4c 45 43 54 20 62 65 63  f the.SELECT bec
ba40: 6f 6d 65 73 20 74 68 65 20 76 61 6c 75 65 20 75  omes the value u
ba50: 73 65 64 20 69 6e 20 74 68 65 20 65 78 70 72 65  sed in the expre
ba60: 73 73 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 53  ssion.  If the S
ba70: 45 4c 45 43 54 20 79 69 65 6c 64 73 0a 6d 6f 72  ELECT yields.mor
ba80: 65 20 74 68 61 6e 20 6f 6e 65 20 72 65 73 75 6c  e than one resul
ba90: 74 20 72 6f 77 2c 20 61 6c 6c 20 72 6f 77 73 20  t row, all rows 
baa0: 61 66 74 65 72 20 74 68 65 20 66 69 72 73 74 20  after the first 
bab0: 61 72 65 20 69 67 6e 6f 72 65 64 2e 20 20 49 66  are ignored.  If
bac0: 0a 74 68 65 20 53 45 4c 45 43 54 20 79 69 65 6c  .the SELECT yiel
bad0: 64 73 20 6e 6f 20 72 6f 77 73 2c 20 74 68 65 6e  ds no rows, then
bae0: 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   the value of th
baf0: 65 20 53 45 4c 45 43 54 20 69 73 20 4e 55 4c 4c  e SELECT is NULL
bb00: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 43 41 53 54  .</p>..<p>A CAST
bb10: 20 65 78 70 72 65 73 73 69 6f 6e 20 63 68 61 6e   expression chan
bb20: 67 65 73 20 74 68 65 20 64 61 74 61 74 79 70 65  ges the datatype
bb30: 20 6f 66 20 74 68 65 20 3c 65 78 70 72 3e 20 69   of the <expr> i
bb40: 6e 74 6f 20 74 68 65 0a 74 79 70 65 20 73 70 65  nto the.type spe
bb50: 63 69 66 69 65 64 20 62 79 20 26 6c 74 3b 74 79  cified by &lt;ty
bb60: 70 65 26 67 74 3b 2e 20 0a 26 6c 74 3b 74 79 70  pe&gt;. .&lt;typ
bb70: 65 26 67 74 3b 20 63 61 6e 20 62 65 20 61 6e 79  e&gt; can be any
bb80: 20 6e 6f 6e 2d 65 6d 70 74 79 20 74 79 70 65 20   non-empty type 
bb90: 6e 61 6d 65 20 74 68 61 74 20 69 73 20 76 61 6c  name that is val
bba0: 69 64 0a 66 6f 72 20 74 68 65 20 74 79 70 65 20  id.for the type 
bbb0: 69 6e 20 61 20 63 6f 6c 75 6d 6e 20 64 65 66 69  in a column defi
bbc0: 6e 69 74 69 6f 6e 20 6f 66 20 61 20 5b 43 52 45  nition of a [CRE
bbd0: 41 54 45 20 54 41 42 4c 45 5d 20 73 74 61 74 65  ATE TABLE] state
bbe0: 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 6f  ment.</p>..<p>Bo
bbf0: 74 68 20 5b 63 6f 72 65 66 75 6e 63 7c 73 69 6d  th [corefunc|sim
bc00: 70 6c 65 5d 20 61 6e 64 20 5b 61 67 67 66 75 6e  ple] and [aggfun
bc10: 63 7c 61 67 67 72 65 67 61 74 65 5d 20 66 75 6e  c|aggregate] fun
bc20: 63 74 69 6f 6e 73 20 61 72 65 20 73 75 70 70 6f  ctions are suppo
bc30: 72 74 65 64 2e 0a 28 46 6f 72 20 70 72 65 73 65  rted..(For prese
bc40: 6e 74 61 74 69 6f 6e 20 70 75 72 70 6f 73 65 73  ntation purposes
bc50: 2c 20 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f  , simple functio
bc60: 6e 73 20 61 72 65 20 66 75 72 74 68 65 72 20 73  ns are further s
bc70: 75 62 64 69 76 69 64 65 64 20 69 6e 74 6f 0a 5b  ubdivided into.[
bc80: 63 6f 72 65 66 75 6e 63 20 7c 20 63 6f 72 65 20  corefunc | core 
bc90: 66 75 6e 63 74 69 6f 6e 73 5d 20 61 6e 64 20 5b  functions] and [
bca0: 64 61 74 65 66 75 6e 63 20 7c 20 64 61 74 65 2d  datefunc | date-
bcb0: 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d 2e  time functions].
bcc0: 29 0a 41 20 73 69 6d 70 6c 65 20 66 75 6e 63 74  ).A simple funct
bcd0: 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20  ion can be used 
bce0: 69 6e 20 61 6e 79 20 65 78 70 72 65 73 73 69 6f  in any expressio
bcf0: 6e 2e 20 20 53 69 6d 70 6c 65 20 66 75 6e 63 74  n.  Simple funct
bd00: 69 6f 6e 73 20 72 65 74 75 72 6e 0a 61 20 72 65  ions return.a re
bd10: 73 75 6c 74 20 69 6d 6d 65 64 69 61 74 65 6c 79  sult immediately
bd20: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 69 72 20   based on their 
bd30: 69 6e 70 75 74 73 2e 20 20 41 67 67 72 65 67 61  inputs.  Aggrega
bd40: 74 65 20 66 75 6e 63 74 69 6f 6e 73 0a 6d 61 79  te functions.may
bd50: 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69 6e   only be used in
bd60: 20 61 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d   a SELECT statem
bd70: 65 6e 74 2e 20 20 41 67 67 72 65 67 61 74 65 20  ent.  Aggregate 
bd80: 66 75 6e 63 74 69 6f 6e 73 20 63 6f 6d 70 75 74  functions comput
bd90: 65 0a 74 68 65 69 72 20 72 65 73 75 6c 74 20 61  e.their result a
bda0: 63 72 6f 73 73 20 61 6c 6c 20 72 6f 77 73 20 6f  cross all rows o
bdb0: 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74  f the result set
bdc0: 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23  .</p>..<tcl>.###
bdd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bde0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bdf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
be00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
be10: 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74  ###########.Sect
be20: 69 6f 6e 20 7b 43 6f 72 65 20 46 75 6e 63 74 69  ion {Core Functi
be30: 6f 6e 73 7d 20 63 6f 72 65 66 75 6e 63 20 7b 63  ons} corefunc {c
be40: 6f 72 65 66 75 6e 63 7d 0a 70 72 6f 63 20 66 75  orefunc}.proc fu
be50: 6e 63 64 65 66 20 7b 73 79 6e 74 61 78 20 6b 65  ncdef {syntax ke
be60: 79 77 6f 72 64 73 20 64 65 73 63 7d 20 7b 0a 20  ywords desc} {. 
be70: 20 68 64 5f 70 75 74 73 20 7b 3c 74 72 3e 7d 0a   hd_puts {<tr>}.
be80: 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5c    regsub -all {\
be90: 73 2b 7d 20 5b 73 74 72 69 6e 67 20 74 72 69 6d  s+} [string trim
bea0: 20 24 73 79 6e 74 61 78 5d 20 7b 3c 62 72 3e 3c   $syntax] {<br><
beb0: 2f 62 72 3e 7d 20 73 79 6e 74 61 78 0a 20 20 72  /br>} syntax.  r
bec0: 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5c 28 28 5b  egsub -all {\(([
bed0: 5e 2a 29 5d 2b 29 5c 29 7d 20 24 73 79 6e 74 61  ^*)]+)\)} $synta
bee0: 78 20 7b 28 3c 69 3e 5c 31 3c 2f 69 3e 29 7d 20  x {(<i>\1</i>)} 
bef0: 73 79 6e 74 61 78 0a 20 20 72 65 67 73 75 62 20  syntax.  regsub 
bf00: 2d 61 6c 6c 20 7b 2c 7d 20 24 73 79 6e 74 61 78  -all {,} $syntax
bf10: 20 7b 3c 2f 69 3e 2c 3c 69 3e 7d 20 73 79 6e 74   {</i>,<i>} synt
bf20: 61 78 0a 20 20 72 65 67 73 75 62 20 2d 61 6c 6c  ax.  regsub -all
bf30: 20 7b 3c 69 3e 5c 2e 5c 2e 5c 2e 3c 2f 69 3e 7d   {<i>\.\.\.</i>}
bf40: 20 24 73 79 6e 74 61 78 20 7b 2e 2e 2e 7d 20 73   $syntax {...} s
bf50: 79 6e 74 61 78 0a 20 20 68 64 5f 70 75 74 73 20  yntax.  hd_puts 
bf60: 22 3c 74 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f  "<td valign=\"to
bf70: 70 5c 22 20 61 6c 69 67 6e 3d 5c 22 72 69 67 68  p\" align=\"righ
bf80: 74 5c 22 20 77 69 64 74 68 3d 5c 22 31 32 30 5c  t\" width=\"120\
bf90: 22 3e 24 73 79 6e 74 61 78 3c 2f 74 64 3e 22 0a  ">$syntax</td>".
bfa0: 20 20 68 64 5f 70 75 74 73 20 7b 3c 74 64 20 76    hd_puts {<td v
bfb0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 7d 0a 20 20  align="top">}.  
bfc0: 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 6b 65  if {[llength $ke
bfd0: 79 77 6f 72 64 73 5d 3d 3d 30 7d 20 7b 0a 20 20  ywords]==0} {.  
bfe0: 20 20 72 65 67 65 78 70 20 7b 5b 61 2d 7a 5f 5d    regexp {[a-z_]
bff0: 2b 7d 20 24 73 79 6e 74 61 78 20 6e 61 6d 65 0a  +} $syntax name.
c000: 20 20 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20      hd_fragment 
c010: 24 6e 61 6d 65 20 24 6e 61 6d 65 0a 20 20 7d 20  $name $name.  } 
c020: 65 6c 73 65 20 7b 0a 20 20 20 20 65 76 61 6c 20  else {.    eval 
c030: 68 64 5f 66 72 61 67 6d 65 6e 74 20 24 6b 65 79  hd_fragment $key
c040: 77 6f 72 64 73 0a 20 20 20 20 68 64 5f 6b 65 79  words.    hd_key
c050: 77 6f 72 64 73 20 24 6b 65 79 77 6f 72 64 73 0a  words $keywords.
c060: 20 20 7d 0a 20 20 68 64 5f 72 65 73 6f 6c 76 65    }.  hd_resolve
c070: 20 24 64 65 73 63 0a 20 20 68 64 5f 70 75 74 73   $desc.  hd_puts
c080: 20 7b 3c 2f 74 64 3e 3c 2f 74 72 3e 7d 0a 7d 0a   {</td></tr>}.}.
c090: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 63  </tcl>..<p>The c
c0a0: 6f 72 65 20 66 75 6e 63 74 69 6f 6e 73 20 73 68  ore functions sh
c0b0: 6f 77 6e 20 62 65 6c 6f 77 20 61 72 65 20 61 76  own below are av
c0c0: 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61 75  ailable by defau
c0d0: 6c 74 2e 20 0a 5b 64 61 74 65 66 75 6e 63 20 7c  lt. .[datefunc |
c0e0: 20 44 61 74 65 20 26 61 6d 70 3b 20 54 69 6d 65   Date &amp; Time
c0f0: 20 66 75 6e 63 74 69 6f 6e 73 5d 20 61 6e 64 0a   functions] and.
c100: 5b 61 67 67 66 75 6e 63 20 7c 20 61 67 67 72 65  [aggfunc | aggre
c110: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 5d 20  gate functions] 
c120: 61 72 65 20 64 6f 63 75 6d 65 6e 74 65 64 20 73  are documented s
c130: 65 70 61 72 61 74 65 6c 79 2e 20 20 41 6e 0a 61  eparately.  An.a
c140: 70 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79 20 64  pplication may d
c150: 65 66 69 6e 65 20 61 64 64 69 74 69 6f 6e 61 6c  efine additional
c160: 0a 66 75 6e 63 74 69 6f 6e 73 20 77 72 69 74 74  .functions writt
c170: 65 6e 20 69 6e 20 43 20 61 6e 64 20 61 64 64 65  en in C and adde
c180: 64 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73  d to the databas
c190: 65 20 65 6e 67 69 6e 65 20 75 73 69 6e 67 0a 74  e engine using.t
c1a0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 72 65 61  he [sqlite3_crea
c1b0: 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 20 41  te_function()] A
c1c0: 50 49 2e 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20  PI.</p>..<table 
c1d0: 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64  border=0 cellpad
c1e0: 64 69 6e 67 3d 31 30 3e 0a 3c 74 63 6c 3e 0a 66  ding=10>.<tcl>.f
c1f0: 75 6e 63 64 65 66 20 7b 61 62 73 28 58 29 7d 20  uncdef {abs(X)} 
c200: 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68  {} {.  Return th
c210: 65 20 61 62 73 6f 6c 75 74 65 20 76 61 6c 75 65  e absolute value
c220: 20 6f 66 20 74 68 65 20 6e 75 6d 65 72 69 63 0a   of the numeric.
c230: 20 20 61 72 67 75 6d 65 6e 74 20 3c 69 3e 58 3c    argument <i>X<
c240: 2f 69 3e 2e 20 20 52 65 74 75 72 6e 20 4e 55 4c  /i>.  Return NUL
c250: 4c 20 69 66 20 3c 69 3e 58 3c 2f 69 3e 20 69 73  L if <i>X</i> is
c260: 20 4e 55 4c 4c 2e 20 20 52 65 74 75 72 6e 20 30   NULL.  Return 0
c270: 2e 30 20 69 66 0a 20 20 3c 69 3e 58 3c 2f 69 3e  .0 if.  <i>X</i>
c280: 20 69 73 20 6e 6f 74 20 61 20 6e 75 6d 65 72 69   is not a numeri
c290: 63 20 76 61 6c 75 65 2e 0a 7d 0a 0a 66 75 6e 63  c value..}..func
c2a0: 64 65 66 20 7b 63 6f 61 6c 65 73 63 65 28 58 2c  def {coalesce(X,
c2b0: 59 2c 2e 2e 2e 29 7d 20 7b 7d 20 7b 0a 20 20 52  Y,...)} {} {.  R
c2c0: 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20  eturn a copy of 
c2d0: 74 68 65 20 66 69 72 73 74 20 6e 6f 6e 2d 4e 55  the first non-NU
c2e0: 4c 4c 20 61 72 67 75 6d 65 6e 74 2e 20 20 49 66  LL argument.  If
c2f0: 0a 20 20 61 6c 6c 20 61 72 67 75 6d 65 6e 74 73  .  all arguments
c300: 20 61 72 65 20 4e 55 4c 4c 20 74 68 65 6e 20 4e   are NULL then N
c310: 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ULL is returned.
c320: 20 20 54 68 65 72 65 20 6d 75 73 74 20 62 65 20    There must be 
c330: 61 74 20 6c 65 61 73 74 20 0a 20 20 32 20 61 72  at least .  2 ar
c340: 67 75 6d 65 6e 74 73 2e 0a 7d 0a 0a 66 75 6e 63  guments..}..func
c350: 64 65 66 20 7b 67 6c 6f 62 28 58 2c 59 29 7d 20  def {glob(X,Y)} 
c360: 7b 7d 20 7b 0a 20 20 54 68 69 73 20 66 75 6e 63  {} {.  This func
c370: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
c380: 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a 20 20  implement the.  
c390: 22 3c 62 3e 59 20 47 4c 4f 42 20 58 3c 2f 62 3e  "<b>Y GLOB X</b>
c3a0: 22 20 73 79 6e 74 61 78 20 6f 66 20 53 51 4c 69  " syntax of SQLi
c3b0: 74 65 2e 0a 20 20 4e 6f 74 65 20 74 68 61 74 20  te..  Note that 
c3c0: 74 68 65 20 58 20 61 6e 64 20 59 20 61 72 67 75  the X and Y argu
c3d0: 6d 65 6e 74 73 20 61 72 65 20 72 65 76 65 72 73  ments are revers
c3e0: 65 64 20 69 6e 20 74 68 65 20 67 6c 6f 62 28 29  ed in the glob()
c3f0: 20 66 75 6e 63 74 69 6f 6e 0a 20 20 72 65 6c 61   function.  rela
c400: 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 66 69  tive to the infi
c410: 78 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f  x [GLOB] operato
c420: 72 2e 0a 20 20 54 68 65 20 5b 73 71 6c 69 74 65  r..  The [sqlite
c430: 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
c440: 6e 28 29 5d 0a 20 20 69 6e 74 65 72 66 61 63 65  n()].  interface
c450: 20 63 61 6e 0a 20 20 62 65 20 75 73 65 64 20 74   can.  be used t
c460: 6f 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 20  o override this 
c470: 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74 68 65  function and the
c480: 72 65 62 79 20 63 68 61 6e 67 65 20 74 68 65 20  reby change the 
c490: 6f 70 65 72 61 74 69 6f 6e 0a 20 20 6f 66 20 74  operation.  of t
c4a0: 68 65 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74  he [GLOB] operat
c4b0: 6f 72 2e 3c 2f 74 64 3e 0a 7d 0a 0a 66 75 6e 63  or.</td>.}..func
c4c0: 64 65 66 20 7b 69 66 6e 75 6c 6c 28 58 2c 59 29  def {ifnull(X,Y)
c4d0: 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20  } {} {.  Return 
c4e0: 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 66 69  a copy of the fi
c4f0: 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67  rst non-NULL arg
c500: 75 6d 65 6e 74 2e 20 20 49 66 0a 20 20 62 6f 74  ument.  If.  bot
c510: 68 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  h arguments are 
c520: 4e 55 4c 4c 20 74 68 65 6e 20 4e 55 4c 4c 20 69  NULL then NULL i
c530: 73 20 72 65 74 75 72 6e 65 64 2e 20 54 68 69 73  s returned. This
c540: 20 62 65 68 61 76 65 73 20 74 68 65 20 73 61 6d   behaves the sam
c550: 65 20 61 73 20 0a 20 20 5b 63 6f 61 6c 65 73 63  e as .  [coalesc
c560: 65 28 29 5d 2e 3c 2f 74 64 3e 0a 7d 0a 0a 66 75  e()].</td>.}..fu
c570: 6e 63 64 65 66 20 7b 68 65 78 28 58 29 7d 20 7b  ncdef {hex(X)} {
c580: 7d 20 7b 0a 20 20 54 68 65 20 61 72 67 75 6d 65  } {.  The argume
c590: 6e 74 20 69 73 20 69 6e 74 65 72 70 72 65 74 65  nt is interprete
c5a0: 64 20 61 73 20 61 20 42 4c 4f 42 2e 20 20 54 68  d as a BLOB.  Th
c5b0: 65 20 72 65 73 75 6c 74 0a 20 20 69 73 20 61 20  e result.  is a 
c5c0: 68 65 78 61 64 65 63 69 6d 61 6c 20 72 65 6e 64  hexadecimal rend
c5d0: 65 72 69 6e 67 20 6f 66 20 74 68 65 20 63 6f 6e  ering of the con
c5e0: 74 65 6e 74 20 6f 66 20 74 68 61 74 20 62 6c 6f  tent of that blo
c5f0: 62 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c  b..}..funcdef {l
c600: 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
c610: 28 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72  ()} {} {.  Retur
c620: 6e 20 74 68 65 20 5b 52 4f 57 49 44 5d 0a 20 20  n the [ROWID].  
c630: 6f 66 20 74 68 65 20 6c 61 73 74 20 72 6f 77 20  of the last row 
c640: 69 6e 73 65 72 74 20 66 72 6f 6d 20 74 68 69 73  insert from this
c650: 0a 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f  .  connection to
c660: 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 0a   the database. .
c670: 20 20 54 68 69 73 20 69 73 20 74 68 65 20 73 61    This is the sa
c680: 6d 65 20 76 61 6c 75 65 20 74 68 61 74 20 77 6f  me value that wo
c690: 75 6c 64 20 62 65 20 72 65 74 75 72 6e 65 64 0a  uld be returned.
c6a0: 20 20 66 72 6f 6d 20 74 68 65 20 5b 73 71 6c 69    from the [sqli
c6b0: 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f  te3_last_insert_
c6c0: 72 6f 77 69 64 28 29 5d 20 41 50 49 20 66 75 6e  rowid()] API fun
c6d0: 63 74 69 6f 6e 2e 0a 7d 0a 0a 66 75 6e 63 64 65  ction..}..funcde
c6e0: 66 20 7b 6c 65 6e 67 74 68 28 58 29 7d 20 7b 7d  f {length(X)} {}
c6f0: 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20   {.  Return the 
c700: 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 6f 66  string length of
c710: 20 3c 69 3e 58 3c 2f 69 3e 20 69 6e 20 63 68 61   <i>X</i> in cha
c720: 72 61 63 74 65 72 73 2e 0a 20 20 49 66 20 53 51  racters..  If SQ
c730: 4c 69 74 65 20 69 73 20 63 6f 6e 66 69 67 75 72  Lite is configur
c740: 65 64 20 74 6f 20 73 75 70 70 6f 72 74 20 55 54  ed to support UT
c750: 46 2d 38 2c 20 74 68 65 6e 20 74 68 65 20 6e 75  F-8, then the nu
c760: 6d 62 65 72 20 6f 66 20 55 54 46 2d 38 0a 20 20  mber of UTF-8.  
c770: 63 68 61 72 61 63 74 65 72 73 20 69 73 20 72 65  characters is re
c780: 74 75 72 6e 65 64 2c 20 6e 6f 74 20 74 68 65 20  turned, not the 
c790: 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 2e  number of bytes.
c7a0: 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 69 6b  .}..funcdef {lik
c7b0: 65 28 58 2c 59 29 20 6c 69 6b 65 28 58 2c 59 2c  e(X,Y) like(X,Y,
c7c0: 5a 29 7d 20 7b 7d 20 7b 0a 20 20 54 68 69 73 20  Z)} {} {.  This 
c7d0: 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64  function is used
c7e0: 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68   to implement th
c7f0: 65 20 22 3c 62 3e 59 20 4c 49 4b 45 20 58 20 26  e "<b>Y LIKE X &
c800: 23 39 31 3b 45 53 43 41 50 45 20 5a 26 23 39 33  #91;ESCAPE Z&#93
c810: 3b 3c 2f 62 3e 22 0a 20 20 73 79 6e 74 61 78 20  ;</b>".  syntax 
c820: 6f 66 20 53 51 4c 2e 20 49 66 20 74 68 65 20 6f  of SQL. If the o
c830: 70 74 69 6f 6e 61 6c 20 45 53 43 41 50 45 20 63  ptional ESCAPE c
c840: 6c 61 75 73 65 20 69 73 20 70 72 65 73 65 6e 74  lause is present
c850: 2c 20 74 68 65 6e 20 74 68 65 0a 20 20 75 73 65  , then the.  use
c860: 72 2d 66 75 6e 63 74 69 6f 6e 20 69 73 20 69 6e  r-function is in
c870: 76 6f 6b 65 64 20 77 69 74 68 20 74 68 72 65 65  voked with three
c880: 20 61 72 67 75 6d 65 6e 74 73 2e 20 4f 74 68 65   arguments. Othe
c890: 72 77 69 73 65 2c 20 69 74 20 69 73 0a 20 20 69  rwise, it is.  i
c8a0: 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 77 6f 20  nvoked with two 
c8b0: 61 72 67 75 6d 65 6e 74 73 20 6f 6e 6c 79 2e 20  arguments only. 
c8c0: 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 58 20  Note that the X 
c8d0: 61 6e 64 20 59 20 70 61 72 61 6d 65 74 65 72 73  and Y parameters
c8e0: 20 61 72 65 0a 20 20 72 65 76 65 72 73 65 64 20   are.  reversed 
c8f0: 69 6e 20 74 68 65 20 6c 69 6b 65 28 29 20 66 75  in the like() fu
c900: 6e 63 74 69 6f 6e 20 72 65 6c 61 74 69 76 65 20  nction relative 
c910: 74 6f 20 74 68 65 20 69 6e 66 69 78 20 5b 4c 49  to the infix [LI
c920: 4b 45 5d 20 6f 70 65 72 61 74 6f 72 2e 0a 20 20  KE] operator..  
c930: 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 72 65  The [sqlite3_cre
c940: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 20  ate_function()] 
c950: 69 6e 74 65 72 66 61 63 65 20 63 61 6e 20 62 65  interface can be
c960: 20 75 73 65 64 20 74 6f 20 6f 76 65 72 72 69 64   used to overrid
c970: 65 20 74 68 69 73 0a 20 20 66 75 6e 63 74 69 6f  e this.  functio
c980: 6e 20 61 6e 64 20 74 68 65 72 65 62 79 20 63 68  n and thereby ch
c990: 61 6e 67 65 20 74 68 65 20 6f 70 65 72 61 74 69  ange the operati
c9a0: 6f 6e 20 6f 66 20 74 68 65 0a 20 20 5b 4c 49 4b  on of the.  [LIK
c9b0: 45 5d 20 6f 70 65 72 61 74 6f 72 2e 20 57 68 65  E] operator. Whe
c9c0: 6e 20 64 6f 69 6e 67 20 74 68 69 73 2c 20 69 74  n doing this, it
c9d0: 20 6d 61 79 20 62 65 20 69 6d 70 6f 72 74 61 6e   may be importan
c9e0: 74 0a 20 20 74 6f 20 6f 76 65 72 72 69 64 65 20  t.  to override 
c9f0: 62 6f 74 68 20 74 68 65 20 74 77 6f 20 61 6e 64  both the two and
ca00: 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74 20   three argument 
ca10: 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20  versions of the 
ca20: 6c 69 6b 65 28 29 20 0a 20 20 66 75 6e 63 74 69  like() .  functi
ca30: 6f 6e 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 64  on. Otherwise, d
ca40: 69 66 66 65 72 65 6e 74 20 63 6f 64 65 20 6d 61  ifferent code ma
ca50: 79 20 62 65 20 63 61 6c 6c 65 64 20 74 6f 20 69  y be called to i
ca60: 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a 20 20 5b  mplement the.  [
ca70: 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 20 64  LIKE] operator d
ca80: 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74  epending on whet
ca90: 68 65 72 20 6f 72 20 6e 6f 74 20 61 6e 20 45 53  her or not an ES
caa0: 43 41 50 45 20 63 6c 61 75 73 65 20 77 61 73 20  CAPE clause was 
cab0: 0a 20 20 73 70 65 63 69 66 69 65 64 2e 0a 7d 0a  .  specified..}.
cac0: 0a 66 75 6e 63 64 65 66 20 7b 6c 6f 61 64 5f 65  .funcdef {load_e
cad0: 78 74 65 6e 73 69 6f 6e 28 58 29 20 6c 6f 61 64  xtension(X) load
cae0: 5f 65 78 74 65 6e 73 69 6f 6e 28 58 2c 59 29 7d  _extension(X,Y)}
caf0: 20 7b 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e   {load_extension
cb00: 7d 20 7b 0a 20 20 4c 6f 61 64 20 53 51 4c 69 74  } {.  Load SQLit
cb10: 65 20 65 78 74 65 6e 73 69 6f 6e 73 20 6f 75 74  e extensions out
cb20: 20 6f 66 20 74 68 65 20 73 68 61 72 65 64 20 6c   of the shared l
cb30: 69 62 72 61 72 79 0a 20 20 66 69 6c 65 20 6e 61  ibrary.  file na
cb40: 6d 65 64 20 3c 69 3e 58 3c 2f 69 3e 20 75 73 69  med <i>X</i> usi
cb50: 6e 67 20 74 68 65 20 65 6e 74 72 79 20 70 6f 69  ng the entry poi
cb60: 6e 74 20 3c 69 3e 59 3c 2f 69 3e 2e 20 20 54 68  nt <i>Y</i>.  Th
cb70: 65 20 72 65 73 75 6c 74 0a 20 20 69 73 20 61 20  e result.  is a 
cb80: 4e 55 4c 4c 2e 20 20 49 66 20 3c 69 3e 59 3c 2f  NULL.  If <i>Y</
cb90: 69 3e 20 69 73 20 6f 6d 69 74 74 65 64 20 74 68  i> is omitted th
cba0: 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 65  en the default e
cbb0: 6e 74 72 79 20 70 6f 69 6e 74 0a 20 20 6f 66 20  ntry point.  of 
cbc0: 3c 62 3e 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  <b>sqlite3_exten
cbd0: 73 69 6f 6e 5f 69 6e 69 74 3c 2f 62 3e 20 69 73  sion_init</b> is
cbe0: 20 75 73 65 64 2e 20 20 54 68 69 73 20 66 75 6e   used.  This fun
cbf0: 63 74 69 6f 6e 20 72 61 69 73 65 73 0a 20 20 61  ction raises.  a
cc00: 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20 74  n exception if t
cc10: 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 66 61 69  he extension fai
cc20: 6c 73 20 74 6f 20 6c 6f 61 64 20 6f 72 20 69 6e  ls to load or in
cc30: 69 74 69 61 6c 69 7a 65 20 63 6f 72 72 65 63 74  itialize correct
cc40: 6c 79 2e 0a 0a 20 20 3c 70 3e 54 68 69 73 20 66  ly...  <p>This f
cc50: 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 66 61 69  unction will fai
cc60: 6c 20 69 66 20 74 68 65 20 65 78 74 65 6e 73 69  l if the extensi
cc70: 6f 6e 20 61 74 74 65 6d 70 74 73 20 74 6f 20 6d  on attempts to m
cc80: 6f 64 69 66 79 0a 20 20 6f 72 20 64 65 6c 65 74  odify.  or delet
cc90: 65 20 61 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  e a SQL function
cca0: 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65   or collating se
ccb0: 71 75 65 6e 63 65 2e 20 20 54 68 65 0a 20 20 65  quence.  The.  e
ccc0: 78 74 65 6e 73 69 6f 6e 20 63 61 6e 20 61 64 64  xtension can add
ccd0: 20 6e 65 77 20 66 75 6e 63 74 69 6f 6e 73 20 6f   new functions o
cce0: 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75  r collating sequ
ccf0: 65 6e 63 65 73 2c 20 62 75 74 20 63 61 6e 6e 6f  ences, but canno
cd00: 74 0a 20 20 6d 6f 64 69 66 79 20 6f 72 20 64 65  t.  modify or de
cd10: 6c 65 74 65 20 65 78 69 73 74 69 6e 67 20 66 75  lete existing fu
cd20: 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f 6c 6c 61  nctions or colla
cd30: 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73 20 62  ting sequences b
cd40: 65 63 61 75 73 65 0a 20 20 74 68 6f 73 65 20 66  ecause.  those f
cd50: 75 6e 63 74 69 6f 6e 73 20 61 6e 64 2f 6f 72 20  unctions and/or 
cd60: 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e  collating sequen
cd70: 63 65 73 20 6d 69 67 68 74 20 62 65 20 75 73 65  ces might be use
cd80: 64 20 65 6c 73 65 77 68 65 72 65 0a 20 20 69 6e  d elsewhere.  in
cd90: 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 72   the currently r
cda0: 75 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61 74 65  unning SQL state
cdb0: 6d 65 6e 74 2e 20 20 54 6f 20 6c 6f 61 64 20 61  ment.  To load a
cdc0: 6e 20 65 78 74 65 6e 73 69 6f 6e 20 74 68 61 74  n extension that
cdd0: 0a 20 20 63 68 61 6e 67 65 73 20 6f 72 20 64 65  .  changes or de
cde0: 6c 65 74 65 73 20 66 75 6e 63 74 69 6f 6e 73 20  letes functions 
cdf0: 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71  or collating seq
ce00: 75 65 6e 63 65 73 2c 20 75 73 65 20 74 68 65 0a  uences, use the.
ce10: 20 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f    [sqlite3_load_
ce20: 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 43 2d 6c  extension()] C-l
ce30: 61 6e 67 75 61 67 65 20 41 50 49 2e 3c 2f 70 3e  anguage API.</p>
ce40: 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 6f 77  .}..funcdef {low
ce50: 65 72 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 52 65  er(X)} {} {.  Re
ce60: 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 73  turn a copy of s
ce70: 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 77  tring <i>X</i> w
ce80: 69 74 68 20 61 6c 6c 20 41 53 43 49 49 20 63 68  ith all ASCII ch
ce90: 61 72 61 63 74 65 72 73 0a 20 20 63 6f 6e 76 65  aracters.  conve
cea0: 72 74 65 64 20 74 6f 20 6c 6f 77 65 72 20 63 61  rted to lower ca
ceb0: 73 65 2e 20 20 54 68 65 20 43 20 6c 69 62 72 61  se.  The C libra
cec0: 72 79 20 3c 62 3e 74 6f 6c 6f 77 65 72 28 29 3c  ry <b>tolower()<
ced0: 2f 62 3e 20 72 6f 75 74 69 6e 65 20 69 73 20 75  /b> routine is u
cee0: 73 65 64 0a 20 20 66 6f 72 20 74 68 65 20 63 6f  sed.  for the co
cef0: 6e 76 65 72 73 69 6f 6e 2c 20 77 68 69 63 68 20  nversion, which 
cf00: 6d 65 61 6e 73 20 74 68 61 74 20 74 68 69 73 20  means that this 
cf10: 66 75 6e 63 74 69 6f 6e 20 6d 69 67 68 74 20 6e  function might n
cf20: 6f 74 0a 20 20 77 6f 72 6b 20 63 6f 72 72 65 63  ot.  work correc
cf30: 74 6c 79 20 6f 6e 20 6e 6f 6e 2d 41 53 43 49 49  tly on non-ASCII
cf40: 20 55 54 46 2d 38 20 63 68 61 72 61 63 74 65 72   UTF-8 character
cf50: 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c  s..}..funcdef {l
cf60: 74 72 69 6d 28 58 29 20 6c 74 72 69 6d 28 58 2c  trim(X) ltrim(X,
cf70: 59 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72  Y)} {} {.  Retur
cf80: 6e 20 61 20 73 74 72 69 6e 67 20 66 6f 72 6d 65  n a string forme
cf90: 64 20 62 79 20 72 65 6d 6f 76 69 6e 67 20 61 6e  d by removing an
cfa0: 79 20 61 6e 64 20 61 6c 6c 0a 20 20 63 68 61 72  y and all.  char
cfb0: 61 63 74 65 72 73 20 74 68 61 74 20 61 70 70 65  acters that appe
cfc0: 61 72 20 69 6e 20 3c 69 3e 59 3c 2f 69 3e 20 66  ar in <i>Y</i> f
cfd0: 72 6f 6d 20 74 68 65 20 6c 65 66 74 20 73 69 64  rom the left sid
cfe0: 65 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 20  e of <i>X</i>.. 
cff0: 20 49 66 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e   If the <i>Y</i>
d000: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69   argument is omi
d010: 74 74 65 64 2c 20 73 70 61 63 65 73 20 61 72 65  tted, spaces are
d020: 20 72 65 6d 6f 76 65 64 2e 0a 7d 0a 0a 66 75 6e   removed..}..fun
d030: 63 64 65 66 20 7b 6d 61 78 28 58 2c 59 2c 2e 2e  cdef {max(X,Y,..
d040: 2e 29 7d 20 7b 6d 61 78 43 6f 72 65 46 75 6e 63  .)} {maxCoreFunc
d050: 20 6d 61 78 7d 20 7b 0a 20 20 52 65 74 75 72 6e   max} {.  Return
d060: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 77 69   the argument wi
d070: 74 68 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76  th the maximum v
d080: 61 6c 75 65 2e 20 20 41 72 67 75 6d 65 6e 74 73  alue.  Arguments
d090: 0a 20 20 6d 61 79 20 62 65 20 73 74 72 69 6e 67  .  may be string
d0a0: 73 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f  s in addition to
d0b0: 20 6e 75 6d 62 65 72 73 2e 20 20 54 68 65 20 6d   numbers.  The m
d0c0: 61 78 69 6d 75 6d 20 76 61 6c 75 65 20 69 73 20  aximum value is 
d0d0: 64 65 74 65 72 6d 69 6e 65 64 0a 20 20 62 79 20  determined.  by 
d0e0: 74 68 65 20 75 73 75 61 6c 20 73 6f 72 74 20 6f  the usual sort o
d0f0: 72 64 65 72 2e 20 20 4e 6f 74 65 20 74 68 61 74  rder.  Note that
d100: 20 3c 62 3e 6d 61 78 28 29 3c 2f 62 3e 20 69 73   <b>max()</b> is
d110: 20 61 20 73 69 6d 70 6c 65 20 66 75 6e 63 74 69   a simple functi
d120: 6f 6e 20 77 68 65 6e 0a 20 20 69 74 20 68 61 73  on when.  it has
d130: 20 32 20 6f 72 20 6d 6f 72 65 20 61 72 67 75 6d   2 or more argum
d140: 65 6e 74 73 20 62 75 74 20 63 6f 6e 76 65 72 74  ents but convert
d150: 73 20 74 6f 20 61 6e 20 61 67 67 72 65 67 61 74  s to an aggregat
d160: 65 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 67 69  e function if gi
d170: 76 65 6e 0a 20 20 6f 6e 6c 79 20 61 20 73 69 6e  ven.  only a sin
d180: 67 6c 65 20 61 72 67 75 6d 65 6e 74 2e 0a 7d 0a  gle argument..}.
d190: 0a 66 75 6e 63 64 65 66 20 7b 6d 69 6e 28 58 2c  .funcdef {min(X,
d1a0: 59 2c 2e 2e 2e 29 7d 20 7b 6d 69 6e 43 6f 72 65  Y,...)} {minCore
d1b0: 46 75 6e 63 20 6d 69 6e 7d 20 7b 0a 20 20 52 65  Func min} {.  Re
d1c0: 74 75 72 6e 20 74 68 65 20 61 72 67 75 6d 65 6e  turn the argumen
d1d0: 74 20 77 69 74 68 20 74 68 65 20 6d 69 6e 69 6d  t with the minim
d1e0: 75 6d 20 76 61 6c 75 65 2e 20 20 41 72 67 75 6d  um value.  Argum
d1f0: 65 6e 74 73 0a 20 20 6d 61 79 20 62 65 20 73 74  ents.  may be st
d200: 72 69 6e 67 73 20 69 6e 20 61 64 64 69 74 69 6f  rings in additio
d210: 6e 20 74 6f 20 6e 75 6d 62 65 72 73 2e 20 20 54  n to numbers.  T
d220: 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65  he minimum value
d230: 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64 0a 20   is determined. 
d240: 20 62 79 20 74 68 65 20 75 73 75 61 6c 20 73 6f   by the usual so
d250: 72 74 20 6f 72 64 65 72 2e 20 20 4e 6f 74 65 20  rt order.  Note 
d260: 74 68 61 74 20 3c 62 3e 6d 69 6e 28 29 3c 2f 62  that <b>min()</b
d270: 3e 20 69 73 20 61 20 73 69 6d 70 6c 65 20 66 75  > is a simple fu
d280: 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 20 20 69 74  nction when.  it
d290: 20 68 61 73 20 32 20 6f 72 20 6d 6f 72 65 20 61   has 2 or more a
d2a0: 72 67 75 6d 65 6e 74 73 20 62 75 74 20 63 6f 6e  rguments but con
d2b0: 76 65 72 74 73 20 74 6f 20 61 6e 20 61 67 67 72  verts to an aggr
d2c0: 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 69  egate function i
d2d0: 66 20 67 69 76 65 6e 0a 20 20 6f 6e 6c 79 20 61  f given.  only a
d2e0: 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74   single argument
d2f0: 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6e 75  ..}..funcdef {nu
d300: 6c 6c 69 66 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a  llif(X,Y)} {} {.
d310: 20 20 52 65 74 75 72 6e 20 74 68 65 20 66 69 72    Return the fir
d320: 73 74 20 61 72 67 75 6d 65 6e 74 20 69 66 20 74  st argument if t
d330: 68 65 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  he arguments are
d340: 20 64 69 66 66 65 72 65 6e 74 2c 20 0a 20 20 6f   different, .  o
d350: 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 20  therwise return 
d360: 4e 55 4c 4c 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  NULL..}..funcdef
d370: 20 7b 71 75 6f 74 65 28 58 29 7d 20 7b 7d 20 7b   {quote(X)} {} {
d380: 0a 20 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20  .  This routine 
d390: 72 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67  returns a string
d3a0: 20 77 68 69 63 68 20 69 73 20 74 68 65 20 76 61   which is the va
d3b0: 6c 75 65 20 6f 66 0a 20 20 69 74 73 20 61 72 67  lue of.  its arg
d3c0: 75 6d 65 6e 74 20 73 75 69 74 61 62 6c 65 20 66  ument suitable f
d3d0: 6f 72 20 69 6e 63 6c 75 73 69 6f 6e 20 69 6e 74  or inclusion int
d3e0: 6f 20 61 6e 6f 74 68 65 72 20 53 51 4c 20 73 74  o another SQL st
d3f0: 61 74 65 6d 65 6e 74 2e 0a 20 20 53 74 72 69 6e  atement..  Strin
d400: 67 73 20 61 72 65 20 73 75 72 72 6f 75 6e 64 65  gs are surrounde
d410: 64 20 62 79 20 73 69 6e 67 6c 65 2d 71 75 6f 74  d by single-quot
d420: 65 73 20 77 69 74 68 20 65 73 63 61 70 65 73 20  es with escapes 
d430: 6f 6e 20 69 6e 74 65 72 69 6f 72 20 71 75 6f 74  on interior quot
d440: 65 73 0a 20 20 61 73 20 6e 65 65 64 65 64 2e 20  es.  as needed. 
d450: 20 42 4c 4f 42 73 20 61 72 65 20 65 6e 63 6f 64   BLOBs are encod
d460: 65 64 20 61 73 20 68 65 78 61 64 65 63 69 6d 61  ed as hexadecima
d470: 6c 20 6c 69 74 65 72 61 6c 73 2e 0a 20 20 54 68  l literals..  Th
d480: 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
d490: 20 6f 66 20 5b 56 41 43 55 55 4d 5d 20 75 73 65   of [VACUUM] use
d4a0: 73 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2e  s this function.
d4b0: 20 54 68 65 20 66 75 6e 63 74 69 6f 6e 0a 20 20   The function.  
d4c0: 69 73 20 61 6c 73 6f 20 75 73 65 66 75 6c 20 77  is also useful w
d4d0: 68 65 6e 20 77 72 69 74 69 6e 67 20 74 72 69 67  hen writing trig
d4e0: 67 65 72 73 20 74 6f 20 69 6d 70 6c 65 6d 65 6e  gers to implemen
d4f0: 74 20 75 6e 64 6f 2f 72 65 64 6f 20 66 75 6e 63  t undo/redo func
d500: 74 69 6f 6e 61 6c 69 74 79 2e 0a 7d 0a 0a 66 75  tionality..}..fu
d510: 6e 63 64 65 66 20 7b 72 61 6e 64 6f 6d 28 29 7d  ncdef {random()}
d520: 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 61   {} {.  Return a
d530: 20 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d 20 69   pseudo-random i
d540: 6e 74 65 67 65 72 0a 20 20 62 65 74 77 65 65 6e  nteger.  between
d550: 20 2d 39 32 32 33 33 37 32 30 33 36 38 35 34 37   -92233720368547
d560: 37 35 38 30 38 20 61 6e 64 20 2b 39 32 32 33 33  75808 and +92233
d570: 37 32 30 33 36 38 35 34 37 37 35 38 30 37 2e 0a  72036854775807..
d580: 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72 61 6e 64  }..funcdef {rand
d590: 6f 6d 62 6c 6f 62 28 4e 29 7d 20 7b 7d 20 7b 0a  omblob(N)} {} {.
d5a0: 20 20 52 65 74 75 72 6e 20 61 6e 20 3c 69 3e 4e    Return an <i>N
d5b0: 3c 2f 69 3e 2d 62 79 74 65 20 62 6c 6f 62 20 63  </i>-byte blob c
d5c0: 6f 6e 74 61 69 6e 69 6e 67 20 70 73 65 75 64 6f  ontaining pseudo
d5d0: 2d 72 61 6e 64 6f 6d 20 62 79 74 65 73 2e 0a 20  -random bytes.. 
d5e0: 20 3c 69 3e 4e 3c 2f 69 3e 20 73 68 6f 75 6c 64   <i>N</i> should
d5f0: 20 62 65 20 61 20 70 6f 73 74 69 76 65 20 69 6e   be a postive in
d600: 74 65 67 65 72 2e 0a 0a 20 20 3c 70 3e 48 69 6e  teger...  <p>Hin
d610: 74 3a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  t:  applications
d620: 20 63 61 6e 20 67 65 6e 65 72 61 74 65 20 67 6c   can generate gl
d630: 6f 62 61 6c 6c 79 20 75 6e 69 71 75 65 20 69 64  obally unique id
d640: 65 6e 74 69 66 69 65 72 73 0a 20 20 75 73 69 6e  entifiers.  usin
d650: 67 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  g this function 
d660: 74 6f 67 65 74 68 65 72 20 77 69 74 68 20 5b 68  together with [h
d670: 65 78 28 29 5d 20 61 6e 64 2f 6f 72 0a 20 20 5b  ex()] and/or.  [
d680: 6c 6f 77 65 72 28 29 5d 20 6c 69 6b 65 20 74 68  lower()] like th
d690: 69 73 3a 3c 2f 70 3e 0a 0a 20 20 3c 62 6c 6f 63  is:</p>..  <bloc
d6a0: 6b 71 75 6f 74 65 3e 0a 20 20 68 65 78 28 72 61  kquote>.  hex(ra
d6b0: 6e 64 6f 6d 62 6c 6f 62 28 31 36 29 29 3c 62 72  ndomblob(16))<br
d6c0: 3e 3c 2f 62 72 3e 0a 20 20 6c 6f 77 65 72 28 68  ></br>.  lower(h
d6d0: 65 78 28 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 36  ex(randomblob(16
d6e0: 29 29 29 0a 20 20 3c 2f 62 6c 6f 63 6b 71 75 6f  ))).  </blockquo
d6f0: 74 65 3e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  te>.}..funcdef {
d700: 72 65 70 6c 61 63 65 28 58 2c 59 2c 5a 29 7d 20  replace(X,Y,Z)} 
d710: 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 61 20  {} {.  Return a 
d720: 73 74 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79  string formed by
d730: 20 73 75 62 73 74 69 74 75 74 69 6e 67 20 73 74   substituting st
d740: 72 69 6e 67 20 3c 69 3e 5a 3c 2f 69 3e 20 66 6f  ring <i>Z</i> fo
d750: 72 0a 20 20 65 76 65 72 79 20 6f 63 63 75 72 72  r.  every occurr
d760: 61 6e 63 65 20 6f 66 20 73 74 72 69 6e 67 20 3c  ance of string <
d770: 69 3e 59 3c 2f 69 3e 20 69 6e 20 73 74 72 69 6e  i>Y</i> in strin
d780: 67 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 54 68 65  g <i>X</i>.  The
d790: 20 5b 42 49 4e 41 52 59 5d 0a 20 20 63 6f 6c 6c   [BINARY].  coll
d7a0: 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69  ating sequence i
d7b0: 73 20 75 73 65 64 20 66 6f 72 20 63 6f 6d 70 61  s used for compa
d7c0: 72 69 73 6f 6e 73 2e 0a 7d 0a 0a 66 75 6e 63 64  risons..}..funcd
d7d0: 65 66 20 7b 72 6f 75 6e 64 28 58 29 20 72 6f 75  ef {round(X) rou
d7e0: 6e 64 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20  nd(X,Y)} {} {.  
d7f0: 52 6f 75 6e 64 20 6f 66 66 20 74 68 65 20 6e 75  Round off the nu
d800: 6d 62 65 72 20 3c 69 3e 58 3c 2f 69 3e 20 74 6f  mber <i>X</i> to
d810: 20 3c 69 3e 59 3c 2f 69 3e 20 64 69 67 69 74 73   <i>Y</i> digits
d820: 20 74 6f 20 74 68 65 0a 20 20 72 69 67 68 74 20   to the.  right 
d830: 6f 66 20 74 68 65 20 64 65 63 69 6d 61 6c 20 70  of the decimal p
d840: 6f 69 6e 74 2e 20 20 49 66 20 74 68 65 20 3c 69  oint.  If the <i
d850: 3e 59 3c 2f 69 3e 20 61 72 67 75 6d 65 6e 74 20  >Y</i> argument 
d860: 69 73 20 6f 6d 69 74 74 65 64 2c 20 30 20 69 73  is omitted, 0 is
d870: 20 0a 20 20 61 73 73 75 6d 65 64 2e 0a 7d 0a 0a   .  assumed..}..
d880: 66 75 6e 63 64 65 66 20 7b 72 74 72 69 6d 28 58  funcdef {rtrim(X
d890: 29 20 72 74 72 69 6d 28 58 2c 59 29 7d 20 7b 7d  ) rtrim(X,Y)} {}
d8a0: 20 7b 0a 20 20 52 65 74 75 72 6e 20 61 20 73 74   {.  Return a st
d8b0: 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79 20 72  ring formed by r
d8c0: 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64 20  emoving any and 
d8d0: 61 6c 6c 0a 20 20 63 68 61 72 61 63 74 65 72 73  all.  characters
d8e0: 20 74 68 61 74 20 61 70 70 65 61 72 20 69 6e 20   that appear in 
d8f0: 3c 69 3e 59 3c 2f 69 3e 20 66 72 6f 6d 20 74 68  <i>Y</i> from th
d900: 65 20 72 69 67 68 74 20 73 69 64 65 20 6f 66 20  e right side of 
d910: 3c 69 3e 58 3c 2f 69 3e 2e 0a 20 20 49 66 20 74  <i>X</i>..  If t
d920: 68 65 20 3c 69 3e 59 3c 2f 69 3e 20 61 72 67 75  he <i>Y</i> argu
d930: 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74 65 64 2c  ment is omitted,
d940: 20 73 70 61 63 65 73 20 61 72 65 20 72 65 6d 6f   spaces are remo
d950: 76 65 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ved..}..funcdef 
d960: 7b 73 6f 75 6e 64 65 78 28 58 29 7d 20 7b 7d 20  {soundex(X)} {} 
d970: 7b 0a 20 20 43 6f 6d 70 75 74 65 20 74 68 65 20  {.  Compute the 
d980: 73 6f 75 6e 64 65 78 20 65 6e 63 6f 64 69 6e 67  soundex encoding
d990: 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 20 3c   of the string <
d9a0: 69 3e 58 3c 2f 69 3e 2e 0a 20 20 54 68 65 20 73  i>X</i>..  The s
d9b0: 74 72 69 6e 67 20 22 3f 30 30 30 22 20 69 73 20  tring "?000" is 
d9c0: 72 65 74 75 72 6e 65 64 20 69 66 20 74 68 65 20  returned if the 
d9d0: 61 72 67 75 6d 65 6e 74 20 69 73 20 4e 55 4c 4c  argument is NULL
d9e0: 2e 0a 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f  ..  This functio
d9f0: 6e 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f  n is omitted fro
da00: 6d 20 53 51 4c 69 74 65 20 62 79 20 64 65 66 61  m SQLite by defa
da10: 75 6c 74 2e 0a 20 20 49 74 20 69 73 20 6f 6e 6c  ult..  It is onl
da20: 79 20 61 76 61 69 6c 61 62 6c 65 20 74 68 65 20  y available the 
da30: 2d 44 53 51 4c 49 54 45 5f 53 4f 55 4e 44 45 58  -DSQLITE_SOUNDEX
da40: 3d 31 20 63 6f 6d 70 69 6c 65 72 20 6f 70 74 69  =1 compiler opti
da50: 6f 6e 0a 20 20 69 73 20 75 73 65 64 20 77 68 65  on.  is used whe
da60: 6e 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c  n SQLite is buil
da70: 74 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73  t..}..funcdef {s
da80: 71 6c 69 74 65 5f 76 65 72 73 69 6f 6e 28 58 29  qlite_version(X)
da90: 7d 20 7b 73 71 6c 69 74 65 5f 76 65 72 73 69 6f  } {sqlite_versio
daa0: 6e 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68  n} {.  Return th
dab0: 65 20 76 65 72 73 69 6f 6e 20 73 74 72 69 6e 67  e version string
dac0: 20 66 6f 72 20 74 68 65 20 53 51 4c 69 74 65 20   for the SQLite 
dad0: 6c 69 62 72 61 72 79 0a 20 20 74 68 61 74 20 69  library.  that i
dae0: 73 20 72 75 6e 6e 69 6e 67 2e 20 20 45 78 61 6d  s running.  Exam
daf0: 70 6c 65 3a 20 20 22 33 2e 35 2e 39 22 0a 7d 0a  ple:  "3.5.9".}.
db00: 0a 66 75 6e 63 64 65 66 20 7b 73 75 62 73 74 72  .funcdef {substr
db10: 28 58 2c 59 2c 5a 29 20 73 75 62 73 74 72 28 58  (X,Y,Z) substr(X
db20: 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75  ,Y)} {} {.  Retu
db30: 72 6e 20 61 20 73 75 62 73 74 72 69 6e 67 20 6f  rn a substring o
db40: 66 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 3c  f input string <
db50: 69 3e 58 3c 2f 69 3e 20 74 68 61 74 20 62 65 67  i>X</i> that beg
db60: 69 6e 73 0a 20 20 77 69 74 68 20 74 68 65 20 3c  ins.  with the <
db70: 69 3e 59 3c 2f 69 3e 2d 74 68 20 63 68 61 72 61  i>Y</i>-th chara
db80: 63 74 65 72 20 61 6e 64 20 77 68 69 63 68 20 69  cter and which i
db90: 73 20 3c 69 3e 5a 3c 2f 69 3e 20 63 68 61 72 61  s <i>Z</i> chara
dba0: 63 74 65 72 73 20 6c 6f 6e 67 2e 0a 20 20 49 66  cters long..  If
dbb0: 20 3c 69 3e 5a 3c 2f 69 3e 20 69 73 20 6f 6d 69   <i>Z</i> is omi
dbc0: 74 74 65 64 20 74 68 65 6e 20 61 6c 6c 20 63 68  tted then all ch
dbd0: 61 72 61 63 74 65 72 20 74 68 72 6f 75 67 68 20  aracter through 
dbe0: 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 73  the end of the s
dbf0: 74 72 69 6e 67 0a 20 20 61 72 65 20 72 65 74 75  tring.  are retu
dc00: 72 6e 65 64 2e 0a 20 20 54 68 65 20 6c 65 66 74  rned..  The left
dc10: 2d 6d 6f 73 74 20 63 68 61 72 61 63 74 65 72 20  -most character 
dc20: 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 6e  of <i>X</i> is n
dc30: 75 6d 62 65 72 20 31 2e 20 20 49 66 20 3c 69 3e  umber 1.  If <i>
dc40: 59 3c 2f 69 3e 20 69 73 20 6e 65 67 61 74 69 76  Y</i> is negativ
dc50: 65 0a 20 20 74 68 65 20 74 68 65 20 66 69 72 73  e.  the the firs
dc60: 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20 74  t character of t
dc70: 68 65 20 73 75 62 73 74 72 69 6e 67 20 69 73 20  he substring is 
dc80: 66 6f 75 6e 64 20 62 79 20 63 6f 75 6e 74 69 6e  found by countin
dc90: 67 20 66 72 6f 6d 20 74 68 65 0a 20 20 72 69 67  g from the.  rig
dca0: 68 74 20 72 61 74 68 65 72 20 74 68 61 6e 20 74  ht rather than t
dcb0: 68 65 20 6c 65 66 74 2e 20 20 49 66 20 3c 69 3e  he left.  If <i>
dcc0: 58 3c 2f 69 3e 20 69 73 20 73 74 72 69 6e 67 0a  X</i> is string.
dcd0: 20 20 74 68 65 6e 20 63 68 61 72 61 63 74 65 72    then character
dce0: 73 20 69 6e 64 69 63 65 73 20 72 65 66 65 72 20  s indices refer 
dcf0: 74 6f 20 61 63 74 75 61 6c 20 55 54 46 2d 38 20  to actual UTF-8 
dd00: 63 68 61 72 61 63 74 65 72 73 2e 20 20 49 66 0a  characters.  If.
dd10: 20 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 61 20    <i>X</i> is a 
dd20: 42 4c 4f 42 20 74 68 65 6e 20 74 68 65 20 69 6e  BLOB then the in
dd30: 64 69 63 65 73 20 72 65 66 65 72 20 74 6f 20 62  dices refer to b
dd40: 79 74 65 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  ytes..}..funcdef
dd50: 20 7b 74 72 69 6d 28 58 29 20 74 72 69 6d 28 58   {trim(X) trim(X
dd60: 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75  ,Y)} {} {.  Retu
dd70: 72 6e 20 61 20 73 74 72 69 6e 67 20 66 6f 72 6d  rn a string form
dd80: 65 64 20 62 79 20 72 65 6d 6f 76 69 6e 67 20 61  ed by removing a
dd90: 6e 79 20 61 6e 64 20 61 6c 6c 0a 20 20 63 68 61  ny and all.  cha
dda0: 72 61 63 74 65 72 73 20 74 68 61 74 20 61 70 70  racters that app
ddb0: 65 61 72 20 69 6e 20 3c 69 3e 59 3c 2f 69 3e 20  ear in <i>Y</i> 
ddc0: 66 72 6f 6d 20 62 6f 74 68 20 65 6e 64 73 20 6f  from both ends o
ddd0: 66 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 20 20 49 66  f <i>X</i>..  If
dde0: 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 20 61 72   the <i>Y</i> ar
ddf0: 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74 65  gument is omitte
de00: 64 2c 20 73 70 61 63 65 73 20 61 72 65 20 72 65  d, spaces are re
de10: 6d 6f 76 65 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65  moved..}..funcde
de20: 66 20 7b 74 79 70 65 6f 66 28 58 29 7d 20 7b 7d  f {typeof(X)} {}
de30: 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20   {.  Return the 
de40: 74 79 70 65 20 6f 66 20 74 68 65 20 65 78 70 72  type of the expr
de50: 65 73 73 69 6f 6e 20 3c 69 3e 58 3c 2f 69 3e 2e  ession <i>X</i>.
de60: 20 20 54 68 65 20 6f 6e 6c 79 20 0a 20 20 72 65    The only .  re
de70: 74 75 72 6e 20 76 61 6c 75 65 73 20 61 72 65 20  turn values are 
de80: 22 6e 75 6c 6c 22 2c 20 22 69 6e 74 65 67 65 72  "null", "integer
de90: 22 2c 20 22 72 65 61 6c 22 2c 20 22 74 65 78 74  ", "real", "text
dea0: 22 2c 20 61 6e 64 20 22 62 6c 6f 62 22 2e 0a 20  ", and "blob".. 
deb0: 20 53 51 4c 69 74 65 27 73 20 74 79 70 65 20 68   SQLite's type h
dec0: 61 6e 64 6c 69 6e 67 20 69 73 20 0a 20 20 65 78  andling is .  ex
ded0: 70 6c 61 69 6e 65 64 20 69 6e 20 3c 61 20 68 72  plained in <a hr
dee0: 65 66 3d 22 64 61 74 61 74 79 70 65 33 2e 68 74  ef="datatype3.ht
def0: 6d 6c 22 3e 44 61 74 61 74 79 70 65 73 20 69 6e  ml">Datatypes in
df00: 20 53 51 4c 69 74 65 20 56 65 72 73 69 6f 6e 20   SQLite Version 
df10: 33 3c 2f 61 3e 2e 0a 7d 0a 0a 66 75 6e 63 64 65  3</a>..}..funcde
df20: 66 20 7b 75 70 70 65 72 28 58 29 7d 20 7b 7d 20  f {upper(X)} {} 
df30: 7b 0a 20 20 52 65 74 75 72 6e 20 61 20 63 6f 70  {.  Return a cop
df40: 79 20 6f 66 20 69 6e 70 75 74 20 73 74 72 69 6e  y of input strin
df50: 67 20 3c 69 3e 58 3c 2f 69 3e 20 63 6f 6e 76 65  g <i>X</i> conve
df60: 72 74 65 64 20 74 6f 20 61 6c 6c 0a 20 20 75 70  rted to all.  up
df70: 70 65 72 2d 63 61 73 65 20 6c 65 74 74 65 72 73  per-case letters
df80: 2e 20 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74  .  The implement
df90: 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 66 75  ation of this fu
dfa0: 6e 63 74 69 6f 6e 20 75 73 65 73 20 74 68 65 20  nction uses the 
dfb0: 43 20 6c 69 62 72 61 72 79 0a 20 20 72 6f 75 74  C library.  rout
dfc0: 69 6e 65 20 3c 62 3e 74 6f 75 70 70 65 72 28 29  ine <b>toupper()
dfd0: 3c 2f 62 3e 20 77 68 69 63 68 20 6d 65 61 6e 73  </b> which means
dfe0: 20 69 74 20 6d 61 79 20 6e 6f 74 20 77 6f 72 6b   it may not work
dff0: 20 63 6f 72 72 65 63 74 6c 79 20 6f 6e 20 0a 20   correctly on . 
e000: 20 6e 6f 6e 2d 41 53 43 49 49 20 55 54 46 2d 38   non-ASCII UTF-8
e010: 20 73 74 72 69 6e 67 73 2e 0a 7d 0a 0a 66 75 6e   strings..}..fun
e020: 63 64 65 66 20 7b 7a 65 72 6f 62 6c 6f 62 28 4e  cdef {zeroblob(N
e030: 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e  )} {} {.  Return
e040: 20 61 20 42 4c 4f 42 20 63 6f 6e 73 69 73 74 69   a BLOB consisti
e050: 6e 67 20 6f 66 20 4e 20 62 79 74 65 73 20 6f 66  ng of N bytes of
e060: 20 30 78 30 30 2e 20 20 53 51 4c 69 74 65 0a 20   0x00.  SQLite. 
e070: 20 6d 61 6e 61 67 65 73 20 74 68 65 73 65 20 7a   manages these z
e080: 65 72 6f 62 6c 6f 62 73 20 76 65 72 79 20 65 66  eroblobs very ef
e090: 66 69 63 69 65 6e 74 6c 79 2e 20 20 5a 65 72 6f  ficiently.  Zero
e0a0: 62 6c 6f 62 73 20 63 61 6e 20 62 65 20 75 73 65  blobs can be use
e0b0: 64 20 74 6f 0a 20 20 72 65 73 65 72 76 65 20 73  d to.  reserve s
e0c0: 70 61 63 65 20 66 6f 72 20 61 20 42 4c 4f 42 20  pace for a BLOB 
e0d0: 74 68 61 74 20 69 73 20 6c 61 74 65 72 20 77 72  that is later wr
e0e0: 69 74 74 65 6e 20 75 73 69 6e 67 20 0a 20 20 5b  itten using .  [
e0f0: 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f 70 65  sqlite3_blob_ope
e100: 6e 28 29 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61  n() | incrementa
e110: 6c 20 42 4c 4f 42 20 49 2f 4f 5d 2e 0a 7d 0a 3c  l BLOB I/O]..}.<
e120: 2f 74 63 6c 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 0a  /tcl>.</table>..
e130: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
e140: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
e150: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
e160: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
e170: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
e180: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 61  ####.Section {Da
e190: 74 65 20 41 6e 64 20 54 69 6d 65 20 46 75 6e 63  te And Time Func
e1a0: 74 69 6f 6e 73 7d 20 64 61 74 65 66 75 6e 63 20  tions} datefunc 
e1b0: 7b 64 61 74 65 66 75 6e 63 7d 0a 3c 2f 74 63 6c  {datefunc}.</tcl
e1c0: 3e 0a 0a 3c 70 3e 0a 53 51 4c 69 74 65 20 73 75  >..<p>.SQLite su
e1d0: 70 70 6f 72 74 73 20 66 69 76 65 20 64 61 74 65  pports five date
e1e0: 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69   and time functi
e1f0: 6f 6e 73 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a  ons as follows:.
e200: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 3c 6f 6c 3e 0a 3c  </p>..<p>.<ol>.<
e210: 6c 69 3e 20 3c 62 3e 64 61 74 65 28 3c 2f 62 3e  li> <b>date(</b>
e220: 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d  <i>timestring, m
e230: 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69 66 69 65  odifier, modifie
e240: 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f  r, ...</i><b>)</
e250: 62 3e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 3c 62  b> </li>.<li> <b
e260: 3e 74 69 6d 65 28 3c 2f 62 3e 3c 69 3e 74 69 6d  >time(</b><i>tim
e270: 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65  estring, modifie
e280: 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e  r, modifier, ...
e290: 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 20 3c 2f 6c  </i><b>)</b> </l
e2a0: 69 3e 0a 3c 6c 69 3e 20 3c 62 3e 64 61 74 65 74  i>.<li> <b>datet
e2b0: 69 6d 65 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65 73  ime(</b><i>times
e2c0: 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72 2c  tring, modifier,
e2d0: 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f   modifier, ...</
e2e0: 69 3e 3c 62 3e 29 3c 2f 62 3e 20 3c 2f 6c 69 3e  i><b>)</b> </li>
e2f0: 0a 3c 6c 69 3e 20 3c 62 3e 6a 75 6c 69 61 6e 64  .<li> <b>juliand
e300: 61 79 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65 73 74  ay(</b><i>timest
e310: 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72 2c 20  ring, modifier, 
e320: 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69  modifier, ...</i
e330: 3e 3c 62 3e 29 3c 2f 62 3e 20 3c 2f 6c 69 3e 0a  ><b>)</b> </li>.
e340: 3c 6c 69 3e 20 3c 62 3e 73 74 72 66 74 69 6d 65  <li> <b>strftime
e350: 28 3c 2f 62 3e 3c 69 3e 66 6f 72 6d 61 74 2c 20  (</b><i>format, 
e360: 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69  timestring, modi
e370: 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20  fier, modifier, 
e380: 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 20  ...</i><b>)</b> 
e390: 3c 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e  </li>.</ol>..<p>
e3a0: 0a 41 6c 6c 20 66 69 76 65 20 66 75 6e 63 74 69  .All five functi
e3b0: 6f 6e 73 20 74 61 6b 65 20 61 20 74 69 6d 65 20  ons take a time 
e3c0: 73 74 72 69 6e 67 20 61 73 20 61 6e 20 61 72 67  string as an arg
e3d0: 75 6d 65 6e 74 2e 20 54 68 65 20 74 69 6d 65 20  ument. The time 
e3e0: 73 74 72 69 6e 67 0a 69 73 20 66 6f 6c 6c 6f 77  string.is follow
e3f0: 65 64 20 62 79 20 7a 65 72 6f 20 6f 72 20 6d 6f  ed by zero or mo
e400: 72 65 20 6d 6f 64 69 66 69 65 72 73 2e 20 0a 54  re modifiers. .T
e410: 68 65 20 73 74 72 66 74 69 6d 65 28 29 20 66 75  he strftime() fu
e420: 6e 63 74 69 6f 6e 20 61 6c 73 6f 20 74 61 6b 65  nction also take
e430: 73 20 61 20 66 6f 72 6d 61 74 20 73 74 72 69 6e  s a format strin
e440: 67 20 61 73 20 69 74 73 20 66 69 72 73 74 20 61  g as its first a
e450: 72 67 75 6d 65 6e 74 2e 0a 3c 2f 70 3e 0a 0a 3c  rgument..</p>..<
e460: 70 3e 0a 54 68 65 20 64 61 74 65 28 29 20 66 75  p>.The date() fu
e470: 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74  nction returns t
e480: 68 65 20 64 61 74 65 20 69 6e 20 74 68 69 73 20  he date in this 
e490: 66 6f 72 6d 61 74 3a 20 59 59 59 59 2d 4d 4d 2d  format: YYYY-MM-
e4a0: 44 44 2e 20 0a 54 68 65 20 74 69 6d 65 28 29 20  DD. .The time() 
e4b0: 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
e4c0: 20 74 68 65 20 74 69 6d 65 20 61 73 20 48 48 3a   the time as HH:
e4d0: 4d 4d 3a 53 53 2e 20 0a 54 68 65 20 64 61 74 65  MM:SS. .The date
e4e0: 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f 6e 20  time() function 
e4f0: 72 65 74 75 72 6e 73 20 22 59 59 59 59 2d 4d 4d  returns "YYYY-MM
e500: 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 22 2e 20 0a  -DD HH:MM:SS". .
e510: 54 68 65 20 6a 75 6c 69 61 6e 64 61 79 28 29 20  The julianday() 
e520: 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
e530: 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 68   the .<a href="h
e540: 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64  ttp://en.wikiped
e550: 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 4a 75 6c 69  ia.org/wiki/Juli
e560: 61 6e 5f 64 61 79 22 3e 6a 75 6c 69 61 6e 20 64  an_day">julian d
e570: 61 79 3c 2f 61 3e 20 2d 20 0a 6e 75 6d 62 65 72  ay</a> - .number
e580: 20 6f 66 20 64 61 79 73 20 73 69 6e 63 65 20 6e   of days since n
e590: 6f 6f 6e 20 69 6e 20 47 72 65 65 6e 77 69 63 68  oon in Greenwich
e5a0: 20 6f 6e 20 4e 6f 76 65 6d 62 65 72 20 32 34 2c   on November 24,
e5b0: 20 34 37 31 34 20 42 2e 43 2e 20 0a 28 3c 61 20   4714 B.C. .(<a 
e5c0: 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 65 6e 2e  href="http://en.
e5d0: 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69  wikipedia.org/wi
e5e0: 6b 69 2f 50 72 6f 6c 65 70 74 69 63 5f 47 72 65  ki/Proleptic_Gre
e5f0: 67 6f 72 69 61 6e 5f 63 61 6c 65 6e 64 61 72 22  gorian_calendar"
e600: 3e 0a 50 72 6f 6c 65 70 74 69 63 20 47 72 65 67  >.Proleptic Greg
e610: 6f 72 69 61 6e 20 63 61 6c 65 6e 64 61 72 3c 2f  orian calendar</
e620: 61 3e 29 2e 20 0a 54 68 65 20 73 74 72 66 74 69  a>). .The strfti
e630: 6d 65 28 29 20 72 6f 75 74 69 6e 65 20 72 65 74  me() routine ret
e640: 75 72 6e 73 20 74 68 65 20 64 61 74 65 20 66 6f  urns the date fo
e650: 72 6d 61 74 74 65 64 20 61 63 63 6f 72 64 69 6e  rmatted accordin
e660: 67 20 74 6f 20 0a 74 68 65 20 66 6f 72 6d 61 74  g to .the format
e670: 20 73 74 72 69 6e 67 20 73 70 65 63 69 66 69 65   string specifie
e680: 64 20 61 73 20 74 68 65 20 66 69 72 73 74 20 61  d as the first a
e690: 72 67 75 6d 65 6e 74 2e 0a 54 68 65 20 66 6f 72  rgument..The for
e6a0: 6d 61 74 20 73 74 72 69 6e 67 20 73 75 70 70 6f  mat string suppo
e6b0: 72 74 73 20 74 68 65 20 6d 6f 73 74 20 63 6f 6d  rts the most com
e6c0: 6d 6f 6e 20 73 75 62 73 74 69 74 75 74 69 6f 6e  mon substitution
e6d0: 73 20 66 6f 75 6e 64 20 69 6e 20 74 68 65 20 0a  s found in the .
e6e0: 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f  <a href="http://
e6f0: 6f 70 65 6e 67 72 6f 75 70 2e 6f 72 67 2f 6f 6e  opengroup.org/on
e700: 6c 69 6e 65 70 75 62 73 2f 30 30 37 39 30 38 37  linepubs/0079087
e710: 39 39 2f 78 73 68 2f 73 74 72 66 74 69 6d 65 2e  99/xsh/strftime.
e720: 68 74 6d 6c 22 3e 0a 73 74 72 66 74 69 6d 65 28  html">.strftime(
e730: 29 20 66 75 6e 63 74 69 6f 6e 3c 2f 61 3e 20 66  ) function</a> f
e740: 72 6f 6d 20 0a 74 68 65 20 73 74 61 6e 64 61 72  rom .the standar
e750: 64 20 43 20 6c 69 62 72 61 72 79 20 70 6c 75 73  d C library plus
e760: 20 74 77 6f 20 6e 65 77 20 73 75 62 73 74 69 74   two new substit
e770: 75 74 69 6f 6e 73 2c 20 25 66 20 61 6e 64 20 25  utions, %f and %
e780: 4a 2e 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  J..The following
e790: 20 69 73 20 61 20 63 6f 6d 70 6c 65 74 65 20 6c   is a complete l
e7a0: 69 73 74 20 6f 66 20 76 61 6c 69 64 20 73 74 72  ist of valid str
e7b0: 66 74 69 6d 65 28 29 20 73 75 62 73 74 69 74 75  ftime() substitu
e7c0: 74 69 6f 6e 73 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c  tions:.</p>..<bl
e7d0: 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65  ockquote>.<table
e7e0: 20 62 6f 72 64 65 72 3d 22 30 22 20 63 65 6c 6c   border="0" cell
e7f0: 70 61 64 64 69 6e 67 3d 22 30 22 20 63 65 6c 6c  padding="0" cell
e800: 73 70 61 63 69 6e 67 3d 22 30 22 3e 0a 3c 74 72  spacing="0">.<tr
e810: 3e 3c 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22  ><td><td width="
e820: 31 30 22 3e 3c 74 64 3e 3c 2f 74 72 3e 0a 0a 3c  10"><td></tr>..<
e830: 74 72 3e 3c 74 64 3e 20 25 64 20 3c 74 64 3e 3c  tr><td> %d <td><
e840: 74 64 3e 20 64 61 79 20 6f 66 20 6d 6f 6e 74 68  td> day of month
e850: 3a 20 30 30 0a 3c 74 72 3e 3c 74 64 3e 20 25 66  : 00.<tr><td> %f
e860: 20 3c 74 64 3e 3c 74 64 3e 20 66 72 61 63 74 69   <td><td> fracti
e870: 6f 6e 61 6c 20 73 65 63 6f 6e 64 73 3a 20 53 53  onal seconds: SS
e880: 2e 53 53 53 0a 3c 74 72 3e 3c 74 64 3e 20 25 48  .SSS.<tr><td> %H
e890: 20 3c 74 64 3e 3c 74 64 3e 20 68 6f 75 72 3a 20   <td><td> hour: 
e8a0: 30 30 2d 32 34 20 0a 3c 74 72 3e 3c 74 64 3e 20  00-24 .<tr><td> 
e8b0: 25 6a 20 3c 74 64 3e 3c 74 64 3e 20 64 61 79 20  %j <td><td> day 
e8c0: 6f 66 20 79 65 61 72 3a 20 30 30 31 2d 33 36 36  of year: 001-366
e8d0: 0a 3c 74 72 3e 3c 74 64 3e 20 25 4a 20 3c 74 64  .<tr><td> %J <td
e8e0: 3e 3c 74 64 3e 20 4a 75 6c 69 61 6e 20 64 61 79  ><td> Julian day
e8f0: 20 6e 75 6d 62 65 72 0a 3c 74 72 3e 3c 74 64 3e   number.<tr><td>
e900: 20 25 6d 20 3c 74 64 3e 3c 74 64 3e 20 6d 6f 6e   %m <td><td> mon
e910: 74 68 3a 20 30 31 2d 31 32 0a 3c 74 72 3e 3c 74  th: 01-12.<tr><t
e920: 64 3e 20 25 4d 20 3c 74 64 3e 3c 74 64 3e 20 6d  d> %M <td><td> m
e930: 69 6e 75 74 65 3a 20 30 30 2d 35 39 0a 3c 74 72  inute: 00-59.<tr
e940: 3e 3c 74 64 3e 20 25 73 20 3c 74 64 3e 3c 74 64  ><td> %s <td><td
e950: 3e 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20  > seconds since 
e960: 31 39 37 30 2d 30 31 2d 30 31 0a 3c 74 72 3e 3c  1970-01-01.<tr><
e970: 74 64 3e 20 25 53 20 3c 74 64 3e 3c 74 64 3e 20  td> %S <td><td> 
e980: 73 65 63 6f 6e 64 73 3a 20 30 30 2d 35 39 0a 3c  seconds: 00-59.<
e990: 74 72 3e 3c 74 64 3e 20 25 77 20 3c 74 64 3e 3c  tr><td> %w <td><
e9a0: 74 64 3e 20 64 61 79 20 6f 66 20 77 65 65 6b 20  td> day of week 
e9b0: 30 2d 36 20 77 69 74 68 20 73 75 6e 64 61 79 3d  0-6 with sunday=
e9c0: 3d 30 0a 3c 74 72 3e 3c 74 64 3e 20 25 57 20 3c  =0.<tr><td> %W <
e9d0: 74 64 3e 3c 74 64 3e 20 77 65 65 6b 20 6f 66 20  td><td> week of 
e9e0: 79 65 61 72 3a 20 30 30 2d 35 33 0a 3c 74 72 3e  year: 00-53.<tr>
e9f0: 3c 74 64 3e 20 25 59 20 3c 74 64 3e 3c 74 64 3e  <td> %Y <td><td>
ea00: 20 79 65 61 72 3a 20 30 30 30 30 2d 39 39 39 39   year: 0000-9999
ea10: 0a 3c 74 72 3e 3c 74 64 3e 20 25 25 20 3c 74 64  .<tr><td> %% <td
ea20: 3e 3c 74 64 3e 20 25 0a 3c 2f 74 61 62 6c 65 3e  ><td> %.</table>
ea30: 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  .</blockquote>..
ea40: 3c 70 3e 0a 4e 6f 74 69 63 65 20 74 68 61 74 20  <p>.Notice that 
ea50: 61 6c 6c 20 6f 74 68 65 72 20 64 61 74 65 20 61  all other date a
ea60: 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e  nd time function
ea70: 73 20 63 61 6e 20 62 65 20 65 78 70 72 65 73 73  s can be express
ea80: 65 64 0a 69 6e 20 74 65 72 6d 73 20 6f 66 20 73  ed.in terms of s
ea90: 74 72 66 74 69 6d 65 28 29 3a 0a 3c 2f 70 3e 0a  trftime():.</p>.
eaa0: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74  .<blockquote>.<t
eab0: 61 62 6c 65 20 62 6f 72 64 65 72 3d 22 30 22 20  able border="0" 
eac0: 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 30 22 20  cellpadding="0" 
ead0: 63 65 6c 6c 73 70 61 63 69 6e 67 3d 22 30 22 3e  cellspacing="0">
eae0: 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 46 75 6e 63  .<tr><td><b>Func
eaf0: 74 69 6f 6e 3c 2f 62 3e 3c 74 64 20 77 69 64 74  tion</b><td widt
eb00: 68 3d 22 33 30 22 3e 3c 74 64 3e 3c 62 3e 45 71  h="30"><td><b>Eq
eb10: 75 69 76 61 6c 65 6e 74 20 73 74 72 66 74 69 6d  uivalent strftim
eb20: 65 28 29 3c 2f 62 3e 0a 3c 74 72 3e 3c 74 64 3e  e()</b>.<tr><td>
eb30: 20 20 20 64 61 74 65 28 2e 2e 2e 29 20 20 20 20     date(...)    
eb40: 20 20 3c 74 64 3e 3c 74 64 3e 20 20 73 74 72 66    <td><td>  strf
eb50: 74 69 6d 65 28 22 25 59 2d 25 6d 2d 25 64 22 2c  time("%Y-%m-%d",
eb60: 20 2e 2e 2e 29 0a 3c 74 72 3e 3c 74 64 3e 20 20   ...).<tr><td>  
eb70: 20 74 69 6d 65 28 2e 2e 2e 29 20 20 20 20 20 20   time(...)      
eb80: 3c 74 64 3e 3c 74 64 3e 20 20 73 74 72 66 74 69  <td><td>  strfti
eb90: 6d 65 28 22 25 48 3a 25 4d 3a 25 53 22 2c 20 2e  me("%H:%M:%S", .
eba0: 2e 2e 29 0a 3c 74 72 3e 3c 74 64 3e 20 20 20 64  ..).<tr><td>   d
ebb0: 61 74 65 74 69 6d 65 28 2e 2e 2e 29 20 20 3c 74  atetime(...)  <t
ebc0: 64 3e 3c 74 64 3e 20 20 73 74 72 66 74 69 6d 65  d><td>  strftime
ebd0: 28 22 25 59 2d 25 6d 2d 25 64 20 25 48 3a 25 4d  ("%Y-%m-%d %H:%M
ebe0: 3a 25 53 22 2c 20 2e 2e 2e 29 0a 3c 74 72 3e 3c  :%S", ...).<tr><
ebf0: 74 64 3e 20 20 20 6a 75 6c 69 61 6e 64 61 79 28  td>   julianday(
ec00: 2e 2e 2e 29 20 3c 74 64 3e 3c 74 64 3e 20 20 73  ...) <td><td>  s
ec10: 74 72 66 74 69 6d 65 28 22 25 4a 22 2c 20 2e 2e  trftime("%J", ..
ec20: 2e 29 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c  .).</table>.</bl
ec30: 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 54  ockquote>..<p>.T
ec40: 68 65 20 6f 6e 6c 79 20 72 65 61 73 6f 6e 73 20  he only reasons 
ec50: 66 6f 72 20 70 72 6f 76 69 64 69 6e 67 20 66 75  for providing fu
ec60: 6e 63 74 69 6f 6e 73 20 6f 74 68 65 72 20 74 68  nctions other th
ec70: 61 6e 20 73 74 72 66 74 69 6d 65 28 29 20 69 73  an strftime() is
ec80: 0a 66 6f 72 20 63 6f 6e 76 65 6e 69 65 6e 63 65  .for convenience
ec90: 20 61 6e 64 20 66 6f 72 20 65 66 66 69 63 69 65   and for efficie
eca0: 6e 63 79 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e 54  ncy..</p>..<h3>T
ecb0: 69 6d 65 20 53 74 72 69 6e 67 73 3c 2f 68 33 3e  ime Strings</h3>
ecc0: 0a 0a 3c 70 3e 41 20 74 69 6d 65 20 73 74 72 69  ..<p>A time stri
ecd0: 6e 67 20 63 61 6e 20 62 65 20 69 6e 20 61 6e 79  ng can be in any
ece0: 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e   of the followin
ecf0: 67 20 66 6f 72 6d 61 74 73 3a 3c 2f 70 3e 0a 0a  g formats:</p>..
ed00: 3c 6f 6c 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59  <ol>.<li> <i>YYY
ed10: 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 0a 3c 6c 69 3e  Y-MM-DD</i>.<li>
ed20: 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 20 48   <i>YYYY-MM-DD H
ed30: 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69  H:MM</i>.<li> <i
ed40: 3e 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d  >YYYY-MM-DD HH:M
ed50: 4d 3a 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69  M:SS</i>.<li> <i
ed60: 3e 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d  >YYYY-MM-DD HH:M
ed70: 4d 3a 53 53 2e 53 53 53 3c 2f 69 3e 0a 3c 6c 69  M:SS.SSS</i>.<li
ed80: 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 3c  > <i>YYYY-MM-DD<
ed90: 2f 69 3e 3c 62 3e 54 3c 2f 62 3e 3c 69 3e 48 48  /i><b>T</b><i>HH
eda0: 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e  :MM</i>.<li> <i>
edb0: 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c 62  YYYY-MM-DD</i><b
edc0: 3e 54 3c 2f 62 3e 3c 69 3e 48 48 3a 4d 4d 3a 53  >T</b><i>HH:MM:S
edd0: 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59  S</i>.<li> <i>YY
ede0: 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c 62 3e 54  YY-MM-DD</i><b>T
edf0: 3c 2f 62 3e 3c 69 3e 48 48 3a 4d 4d 3a 53 53 2e  </b><i>HH:MM:SS.
ee00: 53 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e  SSS</i>.<li> <i>
ee10: 48 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c  HH:MM</i>.<li> <
ee20: 69 3e 48 48 3a 4d 4d 3a 53 53 3c 2f 69 3e 0a 3c  i>HH:MM:SS</i>.<
ee30: 6c 69 3e 20 3c 69 3e 48 48 3a 4d 4d 3a 53 53 2e  li> <i>HH:MM:SS.
ee40: 53 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 62 3e  SSS</i>.<li> <b>
ee50: 6e 6f 77 3c 2f 62 3e 0a 3c 6c 69 3e 20 3c 69 3e  now</b>.<li> <i>
ee60: 44 44 44 44 44 44 44 44 44 44 3c 2f 69 3e 0a 3c  DDDDDDDDDD</i>.<
ee70: 2f 6f 6c 3e 0a 0a 3c 70 3e 0a 49 6e 20 66 6f 72  /ol>..<p>.In for
ee80: 6d 61 74 73 20 35 20 74 68 72 6f 75 67 68 20 37  mats 5 through 7
ee90: 2c 20 74 68 65 20 22 54 22 20 69 73 20 61 20 6c  , the "T" is a l
eea0: 69 74 65 72 61 6c 20 63 68 61 72 61 63 74 65 72  iteral character
eeb0: 20 73 65 70 61 72 61 74 69 6e 67 20 0a 74 68 65   separating .the
eec0: 20 64 61 74 65 20 61 6e 64 20 74 68 65 20 74 69   date and the ti
eed0: 6d 65 2c 20 61 73 20 72 65 71 75 69 72 65 64 20  me, as required 
eee0: 62 79 20 0a 3c 61 20 68 72 65 66 3d 22 68 74 74  by .<a href="htt
eef0: 70 3a 2f 2f 77 77 77 2e 77 33 63 2e 6f 72 67 2f  p://www.w3c.org/
ef00: 54 52 2f 4e 4f 54 45 2d 64 61 74 65 74 69 6d 65  TR/NOTE-datetime
ef10: 22 3e 49 53 4f 2d 38 36 30 31 3c 2f 61 3e 2e 20  ">ISO-8601</a>. 
ef20: 0a 46 6f 72 6d 61 74 73 20 38 20 74 68 72 6f 75  .Formats 8 throu
ef30: 67 68 20 31 30 20 74 68 61 74 20 73 70 65 63 69  gh 10 that speci
ef40: 66 79 20 6f 6e 6c 79 20 61 20 74 69 6d 65 20 61  fy only a time a
ef50: 73 73 75 6d 65 20 61 20 64 61 74 65 20 6f 66 20  ssume a date of 
ef60: 0a 32 30 30 30 2d 30 31 2d 30 31 2e 20 46 6f 72  .2000-01-01. For
ef70: 6d 61 74 20 31 31 2c 20 74 68 65 20 73 74 72 69  mat 11, the stri
ef80: 6e 67 20 27 6e 6f 77 27 2c 20 69 73 20 63 6f 6e  ng 'now', is con
ef90: 76 65 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20  verted into the 
efa0: 0a 63 75 72 72 65 6e 74 20 64 61 74 65 20 61 6e  .current date an
efb0: 64 20 74 69 6d 65 20 61 73 20 6f 62 74 61 69 6e  d time as obtain
efc0: 65 64 20 66 72 6f 6d 20 74 68 65 20 78 43 75 72  ed from the xCur
efd0: 72 65 6e 74 54 69 6d 65 20 6d 65 74 68 6f 64 0a  rentTime method.
efe0: 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  of the [sqlite3_
eff0: 76 66 73 5d 20 6f 62 6a 65 63 74 20 69 6e 20 75  vfs] object in u
f000: 73 65 2e 0a 3c 61 20 68 72 65 66 3d 22 68 74 74  se..<a href="htt
f010: 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61  p://en.wikipedia
f020: 2e 6f 72 67 2f 77 69 6b 69 2f 43 6f 6f 72 64 69  .org/wiki/Coordi
f030: 6e 61 74 65 64 5f 55 6e 69 76 65 72 73 61 6c 5f  nated_Universal_
f040: 54 69 6d 65 22 3e 0a 55 6e 69 76 65 72 73 61 6c  Time">.Universal
f050: 20 43 6f 6f 72 64 69 6e 61 74 65 64 20 54 69 6d   Coordinated Tim
f060: 65 20 28 55 54 43 29 3c 2f 61 3e 20 69 73 20 75  e (UTC)</a> is u
f070: 73 65 64 2e 20 0a 46 6f 72 6d 61 74 20 31 32 20  sed. .Format 12 
f080: 69 73 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d  is the .<a href=
f090: 22 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70  "http://en.wikip
f0a0: 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 4a 75  edia.org/wiki/Ju
f0b0: 6c 69 61 6e 5f 64 61 79 22 3e 6a 75 6c 69 61 6e  lian_day">julian
f0c0: 20 64 61 79 20 6e 75 6d 62 65 72 3c 2f 61 3e 0a   day number</a>.
f0d0: 65 78 70 72 65 73 73 65 64 20 61 73 20 61 20 66  expressed as a f
f0e0: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61  loating point va
f0f0: 6c 75 65 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e 4d  lue..</p>..<h3>M
f100: 6f 64 69 66 69 65 72 73 3c 2f 68 33 3e 0a 0a 3c  odifiers</h3>..<
f110: 70 3e 54 68 65 20 74 69 6d 65 20 73 74 72 69 6e  p>The time strin
f120: 67 20 63 61 6e 20 62 65 20 66 6f 6c 6c 6f 77 65  g can be followe
f130: 64 20 62 79 20 7a 65 72 6f 20 6f 72 20 6d 6f 72  d by zero or mor
f140: 65 20 6d 6f 64 69 66 69 65 72 73 20 74 68 61 74  e modifiers that
f150: 20 0a 61 6c 74 65 72 20 74 68 65 20 64 61 74 65   .alter the date
f160: 20 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67   and time string
f170: 2e 20 20 45 61 63 68 20 6d 6f 64 69 66 69 65 72  .  Each modifier
f180: 0a 69 73 20 61 20 74 72 61 6e 73 66 6f 72 6d 61  .is a transforma
f190: 74 69 6f 6e 20 74 68 61 74 20 69 73 20 61 70 70  tion that is app
f1a0: 6c 69 65 64 20 74 6f 20 74 68 65 20 74 69 6d 65  lied to the time
f1b0: 20 73 74 72 69 6e 67 20 74 6f 20 69 74 73 20 6c   string to its l
f1c0: 65 66 74 2e 0a 4d 6f 64 69 66 69 65 72 73 20 61  eft..Modifiers a
f1d0: 72 65 20 61 70 70 6c 69 65 64 20 66 72 6f 6d 20  re applied from 
f1e0: 6c 65 66 74 20 74 6f 20 72 69 67 68 74 3b 20 6f  left to right; o
f1f0: 72 64 65 72 20 69 73 20 69 6d 70 6f 72 74 61 6e  rder is importan
f200: 74 2e 0a 54 68 65 20 61 76 61 69 6c 61 62 6c 65  t..The available
f210: 20 6d 6f 64 69 66 69 65 72 73 20 61 72 65 20 61   modifiers are a
f220: 73 20 66 6f 6c 6c 6f 77 73 2e 3c 2f 70 3e 0a 0a  s follows.</p>..
f230: 3c 6f 6c 3e 0a 3c 6c 69 3e 20 4e 4e 4e 20 64 61  <ol>.<li> NNN da
f240: 79 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 68 6f 75 72  ys.<li> NNN hour
f250: 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 6d 69 6e 75 74  s.<li> NNN minut
f260: 65 73 0a 3c 6c 69 3e 20 4e 4e 4e 2e 4e 4e 4e 4e  es.<li> NNN.NNNN
f270: 20 73 65 63 6f 6e 64 73 0a 3c 6c 69 3e 20 4e 4e   seconds.<li> NN
f280: 4e 20 6d 6f 6e 74 68 73 0a 3c 6c 69 3e 20 4e 4e  N months.<li> NN
f290: 4e 20 79 65 61 72 73 0a 3c 6c 69 3e 20 73 74 61  N years.<li> sta
f2a0: 72 74 20 6f 66 20 6d 6f 6e 74 68 0a 3c 6c 69 3e  rt of month.<li>
f2b0: 20 73 74 61 72 74 20 6f 66 20 79 65 61 72 0a 3c   start of year.<
f2c0: 6c 69 3e 20 73 74 61 72 74 20 6f 66 20 64 61 79  li> start of day
f2d0: 0a 3c 6c 69 3e 20 77 65 65 6b 64 61 79 20 4e 0a  .<li> weekday N.
f2e0: 3c 6c 69 3e 20 75 6e 69 78 65 70 6f 63 68 0a 3c  <li> unixepoch.<
f2f0: 6c 69 3e 20 6c 6f 63 61 6c 74 69 6d 65 0a 3c 6c  li> localtime.<l
f300: 69 3e 20 75 74 63 20 0a 3c 2f 6f 6c 3e 0a 0a 3c  i> utc .</ol>..<
f310: 70 3e 54 68 65 20 66 69 72 73 74 20 73 69 78 20  p>The first six 
f320: 6d 6f 64 69 66 69 65 72 73 20 28 31 20 74 68 72  modifiers (1 thr
f330: 6f 75 67 68 20 36 29 20 0a 73 69 6d 70 6c 79 20  ough 6) .simply 
f340: 61 64 64 20 74 68 65 20 73 70 65 63 69 66 69 65  add the specifie
f350: 64 20 61 6d 6f 75 6e 74 20 6f 66 20 74 69 6d 65  d amount of time
f360: 20 74 6f 20 74 68 65 20 64 61 74 65 20 0a 73 70   to the date .sp
f370: 65 63 69 66 69 65 64 20 62 79 20 74 68 65 20 70  ecified by the p
f380: 72 65 63 65 64 69 6e 67 20 74 69 6d 65 73 74 72  receding timestr
f390: 69 6e 67 2e 0a 4e 6f 74 65 20 74 68 61 74 20 22  ing..Note that "
f3a0: 26 70 6c 75 73 6d 6e 3b 4e 4e 4e 20 6d 6f 6e 74  &plusmn;NNN mont
f3b0: 68 73 22 20 77 6f 72 6b 73 20 62 79 20 72 65 6e  hs" works by ren
f3c0: 64 65 72 69 6e 67 20 74 68 65 20 6f 72 69 67 69  dering the origi
f3d0: 6e 61 6c 20 64 61 74 65 20 69 6e 74 6f 0a 74 68  nal date into.th
f3e0: 65 20 59 59 59 59 2d 4d 4d 2d 44 44 20 66 6f 72  e YYYY-MM-DD for
f3f0: 6d 61 74 2c 20 61 64 64 69 6e 67 20 74 68 65 20  mat, adding the 
f400: 26 70 6c 75 73 6d 6e 3b 4e 4e 4e 20 74 6f 20 74  &plusmn;NNN to t
f410: 68 65 20 4d 4d 20 6d 6f 6e 74 68 20 76 61 6c 75  he MM month valu
f420: 65 2c 20 74 68 65 6e 0a 6e 6f 72 6d 61 6c 69 7a  e, then.normaliz
f430: 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 2e 20  ing the result. 
f440: 20 54 68 75 73 2c 20 66 6f 72 20 65 78 61 6d 70   Thus, for examp
f450: 6c 65 2c 20 74 68 65 20 64 61 74 61 20 32 30 30  le, the data 200
f460: 31 2d 30 33 2d 33 31 20 6d 6f 64 69 66 69 65 64  1-03-31 modified
f470: 0a 62 79 20 27 2b 31 20 6d 6f 6e 74 68 27 20 69  .by '+1 month' i
f480: 6e 69 74 69 61 6c 6c 79 20 79 69 65 6c 64 73 20  nitially yields 
f490: 32 30 30 31 2d 30 34 2d 33 31 2c 20 62 75 74 20  2001-04-31, but 
f4a0: 41 70 72 69 6c 20 6f 6e 6c 79 20 68 61 73 20 33  April only has 3
f4b0: 30 20 64 61 79 73 0a 73 6f 20 74 68 65 20 64 61  0 days.so the da
f4c0: 74 65 20 69 73 20 6e 6f 72 6d 61 6c 69 7a 65 64  te is normalized
f4d0: 20 74 6f 20 32 30 30 31 2d 30 35 2d 30 31 2e 20   to 2001-05-01. 
f4e0: 20 41 20 73 69 6d 69 6c 61 72 20 65 66 66 65 63   A similar effec
f4f0: 74 20 6f 63 63 75 72 73 20 77 68 65 6e 0a 74 68  t occurs when.th
f500: 65 20 6f 72 69 67 69 6e 61 6c 20 64 61 74 65 20  e original date 
f510: 69 73 20 46 65 62 72 75 61 72 79 20 32 39 20 6f  is February 29 o
f520: 66 20 61 20 6c 65 61 70 79 65 61 72 20 61 6e 64  f a leapyear and
f530: 20 74 68 65 20 6d 6f 64 69 66 69 65 72 20 69 73   the modifier is
f540: 0a 26 70 6c 75 73 6d 6e 3b 4e 20 79 65 61 72 73  .&plusmn;N years
f550: 20 77 68 65 72 65 20 4e 20 69 73 20 6e 6f 74 20   where N is not 
f560: 61 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20 66 6f  a multiple of fo
f570: 75 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ur.</p>..<p>The 
f580: 22 73 74 61 72 74 20 6f 66 22 20 6d 6f 64 69 66  "start of" modif
f590: 69 65 72 73 20 28 37 20 74 68 72 6f 75 67 68 20  iers (7 through 
f5a0: 39 29 20 73 68 69 66 74 20 74 68 65 20 64 61 74  9) shift the dat
f5b0: 65 20 62 61 63 6b 77 61 72 64 73 20 0a 74 6f 20  e backwards .to 
f5c0: 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66  the beginning of
f5d0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 6d 6f 6e   the current mon
f5e0: 74 68 2c 20 79 65 61 72 20 6f 72 20 64 61 79 2e  th, year or day.
f5f0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 22 77 65  </p>..<p>The "we
f600: 65 6b 64 61 79 22 20 6d 6f 64 69 66 69 65 72 20  ekday" modifier 
f610: 61 64 76 61 6e 63 65 73 20 74 68 65 20 64 61 74  advances the dat
f620: 65 20 66 6f 72 77 61 72 64 20 74 6f 20 74 68 65  e forward to the
f630: 20 6e 65 78 74 20 64 61 74 65 20 0a 77 68 65 72   next date .wher
f640: 65 20 74 68 65 20 77 65 65 6b 64 61 79 20 6e 75  e the weekday nu
f650: 6d 62 65 72 20 69 73 20 4e 2e 20 53 75 6e 64 61  mber is N. Sunda
f660: 79 20 69 73 20 30 2c 20 4d 6f 6e 64 61 79 20 69  y is 0, Monday i
f670: 73 20 31 2c 20 61 6e 64 20 73 6f 20 66 6f 72 74  s 1, and so fort
f680: 68 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 22  h.</p>..<p>The "
f690: 75 6e 69 78 65 70 6f 63 68 22 20 6d 6f 64 69 66  unixepoch" modif
f6a0: 69 65 72 20 28 31 31 29 20 6f 6e 6c 79 20 77 6f  ier (11) only wo
f6b0: 72 6b 73 20 69 66 20 69 74 20 69 6d 6d 65 64 69  rks if it immedi
f6c0: 61 74 65 6c 79 20 66 6f 6c 6c 6f 77 73 20 0a 61  ately follows .a
f6d0: 20 74 69 6d 65 73 74 72 69 6e 67 20 69 6e 20 74   timestring in t
f6e0: 68 65 20 44 44 44 44 44 44 44 44 44 44 20 66 6f  he DDDDDDDDDD fo
f6f0: 72 6d 61 74 2e 20 0a 54 68 69 73 20 6d 6f 64 69  rmat. .This modi
f700: 66 69 65 72 20 63 61 75 73 65 73 20 74 68 65 20  fier causes the 
f710: 44 44 44 44 44 44 44 44 44 44 20 74 6f 20 62 65  DDDDDDDDDD to be
f720: 20 69 6e 74 65 72 70 72 65 74 65 64 20 6e 6f 74   interpreted not
f730: 20 0a 61 73 20 61 20 6a 75 6c 69 61 6e 20 64 61   .as a julian da
f740: 79 20 6e 75 6d 62 65 72 20 61 73 20 69 74 20 6e  y number as it n
f750: 6f 72 6d 61 6c 6c 79 20 77 6f 75 6c 64 20 62 65  ormally would be
f760: 2c 20 62 75 74 20 61 73 0a 3c 61 20 68 72 65 66  , but as.<a href
f770: 3d 22 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69  ="http://en.wiki
f780: 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 55  pedia.org/wiki/U
f790: 6e 69 78 5f 74 69 6d 65 22 3e 55 6e 69 78 20 54  nix_time">Unix T
f7a0: 69 6d 65 3c 2f 61 3e 20 2d 20 74 68 65 20 0a 6e  ime</a> - the .n
f7b0: 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73  umber of seconds
f7c0: 20 73 69 6e 63 65 20 31 39 37 30 2e 20 20 49 66   since 1970.  If
f7d0: 20 74 68 65 20 22 75 6e 69 78 65 70 6f 63 68 22   the "unixepoch"
f7e0: 20 6d 6f 64 69 66 69 65 72 20 64 6f 65 73 20 6e   modifier does n
f7f0: 6f 74 0a 66 6f 6c 6c 6f 77 20 61 20 74 69 6d 65  ot.follow a time
f800: 73 74 72 69 6e 67 20 6f 66 20 74 68 65 20 66 6f  string of the fo
f810: 72 6d 20 44 44 44 44 44 44 44 44 44 44 20 77 68  rm DDDDDDDDDD wh
f820: 69 63 68 20 65 78 70 72 65 73 73 65 73 20 74 68  ich expresses th
f830: 65 20 6e 75 6d 62 65 72 0a 6f 66 20 73 65 63 6f  e number.of seco
f840: 6e 64 73 20 73 69 6e 63 65 20 31 39 37 30 20 6f  nds since 1970 o
f850: 72 20 69 66 20 6f 74 68 65 72 20 6d 6f 64 69 66  r if other modif
f860: 69 65 72 73 0a 73 65 70 61 72 61 74 65 20 74 68  iers.separate th
f870: 65 20 22 75 6e 69 78 65 70 6f 63 68 22 20 6d 6f  e "unixepoch" mo
f880: 64 69 66 69 65 72 20 66 72 6f 6d 20 70 72 69 6f  difier from prio
f890: 72 20 44 44 44 44 44 44 44 44 44 44 20 74 68 65  r DDDDDDDDDD the
f8a0: 6e 20 74 68 65 0a 62 65 68 61 76 69 6f 72 20 69  n the.behavior i
f8b0: 73 20 75 6e 64 65 66 69 6e 65 64 2e 3c 2f 70 3e  s undefined.</p>
f8c0: 0a 0a 3c 70 3e 54 68 65 20 22 6c 6f 63 61 6c 74  ..<p>The "localt
f8d0: 69 6d 65 22 20 6d 6f 64 69 66 69 65 72 20 28 31  ime" modifier (1
f8e0: 32 29 20 61 73 73 75 6d 65 73 20 74 68 65 20 74  2) assumes the t
f8f0: 69 6d 65 20 73 74 72 69 6e 67 20 74 6f 20 69 74  ime string to it
f900: 73 20 6c 65 66 74 20 69 73 20 69 6e 0a 55 6e 69  s left is in.Uni
f910: 76 65 72 73 61 6c 20 43 6f 6f 72 64 69 6e 61 74  versal Coordinat
f920: 65 64 20 54 69 6d 65 20 28 55 54 43 29 20 61 6e  ed Time (UTC) an
f930: 64 20 61 64 6a 75 73 74 73 20 74 68 65 20 74 69  d adjusts the ti
f940: 6d 65 0a 73 74 72 69 6e 67 20 73 6f 20 74 68 61  me.string so tha
f950: 74 20 69 74 20 64 69 73 70 6c 61 79 73 20 6c 6f  t it displays lo
f960: 63 61 6c 74 69 6d 65 2e 20 20 49 66 20 22 6c 6f  caltime.  If "lo
f970: 63 61 6c 74 69 6d 65 22 0a 66 6f 6c 6c 6f 77 73  caltime".follows
f980: 20 61 20 74 69 6d 65 20 74 68 61 74 20 69 73 20   a time that is 
f990: 6e 6f 74 20 55 54 43 2c 20 74 68 65 6e 20 74 68  not UTC, then th
f9a0: 65 20 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e  e behavior is un
f9b0: 64 65 66 69 6e 65 64 2e 0a 54 68 65 20 22 75 74  defined..The "ut
f9c0: 63 22 20 69 73 20 74 68 65 20 6f 70 70 6f 73 69  c" is the opposi
f9d0: 74 65 20 6f 66 20 22 6c 6f 63 61 6c 74 69 6d 65  te of "localtime
f9e0: 22 2e 20 20 22 75 74 63 22 20 61 73 73 75 6d 65  ".  "utc" assume
f9f0: 73 20 74 68 61 74 20 74 68 65 20 73 74 72 69 6e  s that the strin
fa00: 67 0a 74 6f 20 69 74 73 20 6c 65 66 74 20 69 73  g.to its left is
fa10: 20 69 6e 20 74 68 65 20 6c 6f 63 61 6c 20 74 69   in the local ti
fa20: 6d 65 7a 6f 6e 65 20 61 6e 64 20 61 64 6a 75 73  mezone and adjus
fa30: 74 73 20 74 68 61 74 20 73 74 72 69 6e 67 20 74  ts that string t
fa40: 6f 20 62 65 20 69 6e 20 55 54 43 2e 0a 49 66 20  o be in UTC..If 
fa50: 74 68 65 20 70 72 69 6f 72 20 73 74 72 69 6e 67  the prior string
fa60: 20 69 73 20 6e 6f 74 20 69 6e 20 6c 6f 63 61 6c   is not in local
fa70: 74 69 6d 65 2c 20 74 68 65 6e 20 74 68 65 20 72  time, then the r
fa80: 65 73 75 6c 74 20 6f 66 20 22 75 74 63 22 20 69  esult of "utc" i
fa90: 73 0a 75 6e 64 65 66 69 6e 65 64 2e 3c 2f 70 3e  s.undefined.</p>
faa0: 0a 0a 3c 68 33 3e 45 78 61 6d 70 6c 65 73 3c 2f  ..<h3>Examples</
fab0: 68 33 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65 20  h3>..<p>Compute 
fac0: 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74 65  the current date
fad0: 2e 3c 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  .<p>..<blockquot
fae0: 65 3e 53 45 4c 45 43 54 20 64 61 74 65 28 27 6e  e>SELECT date('n
faf0: 6f 77 27 29 3b 3c 2f 62 6c 6f 63 6b 71 75 6f 74  ow');</blockquot
fb00: 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65 20 74  e>..<p>Compute t
fb10: 68 65 20 6c 61 73 74 20 64 61 79 20 6f 66 20 74  he last day of t
fb20: 68 65 20 63 75 72 72 65 6e 74 20 6d 6f 6e 74 68  he current month
fb30: 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  .</p>..<blockquo
fb40: 74 65 3e 53 45 4c 45 43 54 20 64 61 74 65 28 27  te>SELECT date('
fb50: 6e 6f 77 27 2c 27 73 74 61 72 74 20 6f 66 20 6d  now','start of m
fb60: 6f 6e 74 68 27 2c 27 2b 31 20 6d 6f 6e 74 68 27  onth','+1 month'
fb70: 2c 27 2d 31 20 64 61 79 27 29 3b 0a 3c 2f 62 6c  ,'-1 day');.</bl
fb80: 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43 6f  ockquote>..<p>Co
fb90: 6d 70 75 74 65 20 74 68 65 20 64 61 74 65 20 61  mpute the date a
fba0: 6e 64 20 74 69 6d 65 20 67 69 76 65 6e 20 61 20  nd time given a 
fbb0: 75 6e 69 78 20 74 69 6d 65 73 74 61 6d 70 20 31  unix timestamp 1
fbc0: 30 39 32 39 34 31 34 36 36 2e 3c 2f 70 3e 0a 0a  092941466.</p>..
fbd0: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 20  <blockquote>.   
fbe0: 20 53 45 4c 45 43 54 20 64 61 74 65 74 69 6d 65   SELECT datetime
fbf0: 28 31 30 39 32 39 34 31 34 36 36 2c 20 27 75 6e  (1092941466, 'un
fc00: 69 78 65 70 6f 63 68 27 29 3b 0a 3c 2f 62 6c 6f  ixepoch');.</blo
fc10: 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d  ckquote>..<p>Com
fc20: 70 75 74 65 20 74 68 65 20 64 61 74 65 20 61 6e  pute the date an
fc30: 64 20 74 69 6d 65 20 67 69 76 65 6e 20 61 20 75  d time given a u
fc40: 6e 69 78 20 74 69 6d 65 73 74 61 6d 70 20 31 30  nix timestamp 10
fc50: 39 32 39 34 31 34 36 36 2c 20 61 6e 64 20 0a 63  92941466, and .c
fc60: 6f 6d 70 65 6e 73 61 74 65 20 66 6f 72 20 79 6f  ompensate for yo
fc70: 75 72 20 6c 6f 63 61 6c 20 74 69 6d 65 7a 6f 6e  ur local timezon
fc80: 65 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  e.</p>..<blockqu
fc90: 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20 64 61  ote>.  SELECT da
fca0: 74 65 74 69 6d 65 28 31 30 39 32 39 34 31 34 36  tetime(109294146
fcb0: 36 2c 20 27 75 6e 69 78 65 70 6f 63 68 27 2c 20  6, 'unixepoch', 
fcc0: 27 6c 6f 63 61 6c 74 69 6d 65 27 29 3b 0a 3c 2f  'localtime');.</
fcd0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
fce0: 43 6f 6d 70 75 74 65 20 74 68 65 20 63 75 72 72  Compute the curr
fcf0: 65 6e 74 20 75 6e 69 78 20 74 69 6d 65 73 74 61  ent unix timesta
fd00: 6d 70 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  mp.</p>..<blockq
fd10: 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20 73  uote>.  SELECT s
fd20: 74 72 66 74 69 6d 65 28 27 25 73 27 2c 27 6e 6f  trftime('%s','no
fd30: 77 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  w');.</blockquot
fd40: 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65 20 74  e>..<p>Compute t
fd50: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 64 61 79  he number of day
fd60: 73 20 73 69 6e 63 65 20 74 68 65 20 73 69 67 6e  s since the sign
fd70: 69 6e 67 20 6f 66 20 74 68 65 20 55 53 20 44 65  ing of the US De
fd80: 63 6c 61 72 61 74 69 6f 6e 0a 6f 66 20 49 6e 64  claration.of Ind
fd90: 65 70 65 6e 64 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c  ependent.</p>..<
fda0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45  blockquote>.  SE
fdb0: 4c 45 43 54 20 6a 75 6c 69 61 6e 64 61 79 28 27  LECT julianday('
fdc0: 6e 6f 77 27 29 20 2d 20 6a 75 6c 69 61 6e 64 61  now') - julianda
fdd0: 79 28 27 31 37 37 36 2d 30 37 2d 30 34 27 29 3b  y('1776-07-04');
fde0: 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  .</blockquote>..
fdf0: 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 6e  <p>Compute the n
fe00: 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73  umber of seconds
fe10: 20 73 69 6e 63 65 20 61 20 70 61 72 74 69 63 75   since a particu
fe20: 6c 61 72 20 6d 6f 6d 65 6e 74 20 69 6e 20 32 30  lar moment in 20
fe30: 30 34 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  04:</p>..<blockq
fe40: 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20 73  uote>.  SELECT s
fe50: 74 72 66 74 69 6d 65 28 27 25 73 27 2c 27 6e 6f  trftime('%s','no
fe60: 77 27 29 20 2d 20 73 74 72 66 74 69 6d 65 28 27  w') - strftime('
fe70: 25 73 27 2c 27 32 30 30 34 2d 30 31 2d 30 31 20  %s','2004-01-01 
fe80: 30 32 3a 33 34 3a 35 36 27 29 3b 0a 3c 2f 62 6c  02:34:56');.</bl
fe90: 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 43  ockquote>..<p>.C
fea0: 6f 6d 70 75 74 65 20 74 68 65 20 64 61 74 65 20  ompute the date 
feb0: 6f 66 20 74 68 65 20 66 69 72 73 74 20 54 75 65  of the first Tue
fec0: 73 64 61 79 20 69 6e 20 4f 63 74 6f 62 65 72 0a  sday in October.
fed0: 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
fee0: 79 65 61 72 2e 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f  year..</p>..<blo
fef0: 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43  ckquote>.  SELEC
ff00: 54 20 64 61 74 65 28 27 6e 6f 77 27 2c 27 73 74  T date('now','st
ff10: 61 72 74 20 6f 66 20 79 65 61 72 27 2c 27 2b 39  art of year','+9
ff20: 20 6d 6f 6e 74 68 73 27 2c 27 77 65 65 6b 64 61   months','weekda
ff30: 79 20 32 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75  y 2');.</blockqu
ff40: 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65  ote>..<p>Compute
ff50: 20 74 68 65 20 74 69 6d 65 20 73 69 6e 63 65 20   the time since 
ff60: 74 68 65 20 75 6e 69 78 20 65 70 6f 63 68 20 69  the unix epoch i
ff70: 6e 20 73 65 63 6f 6e 64 73 20 0a 28 6c 69 6b 65  n seconds .(like
ff80: 20 73 74 72 66 74 69 6d 65 28 27 25 73 27 2c 27   strftime('%s','
ff90: 6e 6f 77 27 29 20 65 78 63 65 70 74 20 69 6e 63  now') except inc
ffa0: 6c 75 64 65 73 20 66 72 61 63 74 69 6f 6e 61 6c  ludes fractional
ffb0: 20 70 61 72 74 29 3a 3c 2f 70 3e 0a 0a 3c 62 6c   part):</p>..<bl
ffc0: 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45  ockquote>.  SELE
ffd0: 43 54 20 28 6a 75 6c 69 61 6e 64 61 79 28 27 6e  CT (julianday('n
ffe0: 6f 77 27 29 20 2d 20 32 34 34 30 35 38 37 2e 35  ow') - 2440587.5
fff0: 29 2a 38 36 34 30 30 2e 30 3b 0a 3c 2f 62 6c 6f  )*86400.0;.</blo
10000 63 6b 71 75 6f 74 65 3e 0a 0a 3c 68 33 3e 43 61  ckquote>..<h3>Ca
10010 76 65 61 74 73 20 41 6e 64 20 42 75 67 73 3c 2f  veats And Bugs</
10020 68 33 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f 6d 70  h3>..<p>The comp
10030 75 74 61 74 69 6f 6e 20 6f 66 20 6c 6f 63 61 6c  utation of local
10040 20 74 69 6d 65 20 64 65 70 65 6e 64 73 20 68 65   time depends he
10050 61 76 69 6c 79 20 6f 6e 20 74 68 65 20 77 68 69  avily on the whi
10060 6d 20 0a 6f 66 20 70 6f 6c 69 74 69 63 69 61 6e  m .of politician
10070 73 20 61 6e 64 20 69 73 20 74 68 75 73 20 64 69  s and is thus di
10080 66 66 69 63 75 6c 74 20 74 6f 20 67 65 74 20 63  fficult to get c
10090 6f 72 72 65 63 74 20 66 6f 72 20 0a 61 6c 6c 20  orrect for .all 
100a0 6c 6f 63 61 6c 65 73 2e 20 49 6e 20 74 68 69 73  locales. In this
100b0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c   implementation,
100c0 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 43 20   the standard C 
100d0 6c 69 62 72 61 72 79 20 0a 66 75 6e 63 74 69 6f  library .functio
100e0 6e 20 6c 6f 63 61 6c 74 69 6d 65 5f 72 28 29 20  n localtime_r() 
100f0 69 73 20 75 73 65 64 20 74 6f 20 61 73 73 69 73  is used to assis
10100 74 20 69 6e 20 74 68 65 20 63 61 6c 63 75 6c 61  t in the calcula
10110 74 69 6f 6e 20 6f 66 20 0a 6c 6f 63 61 6c 20 74  tion of .local t
10120 69 6d 65 2e 20 20 54 68 65 20 0a 6c 6f 63 61 6c  ime.  The .local
10130 74 69 6d 65 5f 72 28 29 20 43 20 66 75 6e 63 74  time_r() C funct
10140 69 6f 6e 20 6e 6f 72 6d 61 6c 6c 79 20 6f 6e 6c  ion normally onl
10150 79 20 77 6f 72 6b 73 20 66 6f 72 20 79 65 61 72  y works for year
10160 73 0a 62 65 74 77 65 65 6e 20 31 39 37 30 20 61  s.between 1970 a
10170 6e 64 20 32 30 33 37 2e 20 46 6f 72 20 64 61 74  nd 2037. For dat
10180 65 73 20 6f 75 74 73 69 64 65 20 74 68 69 73 20  es outside this 
10190 72 61 6e 67 65 2c 20 53 51 4c 69 74 65 20 0a 61  range, SQLite .a
101a0 74 74 65 6d 70 74 73 20 74 6f 20 6d 61 70 20 74  ttempts to map t
101b0 68 65 20 79 65 61 72 20 69 6e 74 6f 20 61 6e 20  he year into an 
101c0 65 71 75 69 76 61 6c 65 6e 74 20 79 65 61 72 20  equivalent year 
101d0 77 69 74 68 69 6e 20 0a 74 68 69 73 20 72 61 6e  within .this ran
101e0 67 65 2c 20 64 6f 20 74 68 65 20 63 61 6c 63 75  ge, do the calcu
101f0 6c 61 74 69 6f 6e 2c 20 74 68 65 6e 20 6d 61 70  lation, then map
10200 20 74 68 65 20 79 65 61 72 20 62 61 63 6b 2e 3c   the year back.<
10210 2f 70 3e 0a 0a 0a 3c 70 3e 44 61 74 65 20 63 6f  /p>...<p>Date co
10220 6d 70 75 74 61 74 69 6f 6e 73 20 64 6f 20 6e 6f  mputations do no
10230 74 20 67 69 76 65 20 63 6f 72 72 65 63 74 20 72  t give correct r
10240 65 73 75 6c 74 73 20 66 6f 72 20 64 61 74 65 73  esults for dates
10250 20 0a 62 65 66 6f 72 65 20 4a 75 6c 69 61 6e 20   .before Julian 
10260 64 61 79 20 6e 75 6d 62 65 72 20 30 20 28 2d 34  day number 0 (-4
10270 37 31 33 2d 31 31 2d 32 34 20 31 32 3a 30 30 3a  713-11-24 12:00:
10280 30 30 29 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e 6f 6e  00).</p>..<p>Non
10290 2d 56 69 73 74 61 20 57 69 6e 64 6f 77 73 20 70  -Vista Windows p
102a0 6c 61 74 66 6f 72 6d 73 20 6f 6e 6c 79 20 73 75  latforms only su
102b0 70 70 6f 72 74 20 6f 6e 65 20 73 65 74 20 6f 66  pport one set of
102c0 20 44 53 54 20 72 75 6c 65 73 2e 20 0a 56 69 73   DST rules. .Vis
102d0 74 61 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 73  ta only supports
102e0 20 74 77 6f 2e 20 54 68 65 72 65 66 6f 72 65 2c   two. Therefore,
102f0 20 6f 6e 20 74 68 65 73 65 20 70 6c 61 74 66 6f   on these platfo
10300 72 6d 73 2c 20 0a 68 69 73 74 6f 72 69 63 61 6c  rms, .historical
10310 20 44 53 54 20 63 61 6c 63 75 6c 61 74 69 6f 6e   DST calculation
10320 73 20 77 69 6c 6c 20 62 65 20 69 6e 63 6f 72 72  s will be incorr
10330 65 63 74 2e 20 0a 46 6f 72 20 65 78 61 6d 70 6c  ect. .For exampl
10340 65 2c 20 69 6e 20 74 68 65 20 55 53 2c 20 69 6e  e, in the US, in
10350 20 32 30 30 37 20 74 68 65 20 44 53 54 20 72 75   2007 the DST ru
10360 6c 65 73 20 63 68 61 6e 67 65 64 2e 20 0a 4e 6f  les changed. .No
10370 6e 2d 56 69 73 74 61 20 57 69 6e 64 6f 77 73 20  n-Vista Windows 
10380 70 6c 61 74 66 6f 72 6d 73 20 61 70 70 6c 79 20  platforms apply 
10390 74 68 65 20 6e 65 77 20 32 30 30 37 20 44 53 54  the new 2007 DST
103a0 20 72 75 6c 65 73 20 0a 74 6f 20 61 6c 6c 20 70   rules .to all p
103b0 72 65 76 69 6f 75 73 20 79 65 61 72 73 20 61 73  revious years as
103c0 20 77 65 6c 6c 2e 20 56 69 73 74 61 20 64 6f 65   well. Vista doe
103d0 73 20 73 6f 6d 65 77 68 61 74 20 62 65 74 74 65  s somewhat bette
103e0 72 0a 67 65 74 74 69 6e 67 20 72 65 73 75 6c 74  r.getting result
103f0 73 20 63 6f 72 72 65 63 74 20 62 61 63 6b 20 74  s correct back t
10400 6f 20 31 39 38 36 2c 20 77 68 65 6e 20 74 68 65  o 1986, when the
10410 20 72 75 6c 65 73 20 77 65 72 65 20 61 6c 73 6f   rules were also
10420 20 63 68 61 6e 67 65 64 2e 3c 2f 70 3e 0a 0a 3c   changed.</p>..<
10430 70 3e 41 6c 6c 20 69 6e 74 65 72 6e 61 6c 20 63  p>All internal c
10440 6f 6d 70 75 74 61 74 69 6f 6e 73 20 61 73 73 75  omputations assu
10450 6d 65 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d  me the .<a href=
10460 22 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70  "http://en.wikip
10470 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 47 72  edia.org/wiki/Gr
10480 65 67 6f 72 69 61 6e 5f 63 61 6c 65 6e 64 61 72  egorian_calendar
10490 22 3e 0a 47 72 65 67 6f 72 69 61 6e 20 63 61 6c  ">.Gregorian cal
104a0 65 6e 64 61 72 3c 2f 61 3e 20 73 79 73 74 65 6d  endar</a> system
104b0 2e 20 20 49 74 20 69 73 20 61 6c 73 6f 20 61 73  .  It is also as
104c0 73 75 6d 65 64 20 74 68 61 74 20 65 76 65 72 79  sumed that every
104d0 0a 64 61 79 20 69 73 20 65 78 61 63 74 6c 79 20  .day is exactly 
104e0 38 36 34 30 30 20 73 65 63 6f 6e 64 73 20 69 6e  86400 seconds in
104f0 20 64 75 72 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a   duration.</p>..
10500 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
10510 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10520 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10530 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10540 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10550 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 41 67  ####.Section {Ag
10560 67 72 65 67 61 74 65 20 46 75 6e 63 74 69 6f 6e  gregate Function
10570 73 7d 20 61 67 67 66 75 6e 63 20 7b 61 67 67 66  s} aggfunc {aggf
10580 75 6e 63 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  unc}.</tcl>..<p>
10590 0a 54 68 65 20 61 67 67 72 65 67 61 74 65 20 66  .The aggregate f
105a0 75 6e 63 74 69 6f 6e 73 20 73 68 6f 77 6e 20 62  unctions shown b
105b0 65 6c 6f 77 20 61 72 65 20 61 76 61 69 6c 61 62  elow are availab
105c0 6c 65 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20  le by default.  
105d0 41 64 64 69 74 69 6f 6e 61 6c 0a 61 67 67 72 65  Additional.aggre
105e0 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 77  gate functions w
105f0 72 69 74 74 65 6e 20 69 6e 20 43 20 6d 61 79 20  ritten in C may 
10600 62 65 20 61 64 64 65 64 20 75 73 69 6e 67 20 74  be added using t
10610 68 65 20 0a 5b 73 71 6c 69 74 65 33 5f 63 72 65  he .[sqlite3_cre
10620 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 3c  ate_function()]<
10630 2f 61 3e 0a 41 50 49 2e 3c 2f 70 3e 0a 0a 3c 70  /a>.API.</p>..<p
10640 3e 0a 49 6e 20 61 6e 79 20 61 67 67 72 65 67 61  >.In any aggrega
10650 74 65 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74  te function that
10660 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20   takes a single 
10670 61 72 67 75 6d 65 6e 74 2c 20 74 68 61 74 20 61  argument, that a
10680 72 67 75 6d 65 6e 74 0a 63 61 6e 20 62 65 20 70  rgument.can be p
10690 72 65 63 65 65 64 65 64 20 62 79 20 74 68 65 20  receeded by the 
106a0 6b 65 79 77 6f 72 64 20 44 49 53 54 49 4e 43 54  keyword DISTINCT
106b0 2e 20 20 49 6e 20 73 75 63 68 20 63 61 73 65 73  .  In such cases
106c0 2c 20 64 75 70 6c 69 63 61 74 65 0a 65 6c 65 6d  , duplicate.elem
106d0 65 6e 74 73 20 61 72 65 20 66 69 6c 74 65 72 65  ents are filtere
106e0 64 20 62 65 66 6f 72 65 20 62 65 69 6e 67 20 70  d before being p
106f0 61 73 73 65 64 20 69 6e 74 6f 20 74 68 65 20 61  assed into the a
10700 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
10710 6e 2e 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20  n..For example, 
10720 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 22 63 6f  the function "co
10730 75 6e 74 28 64 69 73 74 69 6e 63 74 20 58 29 22  unt(distinct X)"
10740 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 74 68 65   will return the
10750 20 6e 75 6d 62 65 72 0a 6f 66 20 64 69 73 74 69   number.of disti
10760 6e 63 74 20 76 61 6c 75 65 73 20 6f 66 20 63 6f  nct values of co
10770 6c 75 6d 6e 20 58 20 69 6e 73 74 65 61 64 20 6f  lumn X instead o
10780 66 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62  f the total numb
10790 65 72 20 6f 66 20 6e 6f 6e 2d 6e 75 6c 6c 0a 76  er of non-null.v
107a0 61 6c 75 65 73 20 69 6e 20 63 6f 6c 75 6d 6e 20  alues in column 
107b0 58 2e 0a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20  X..</p>..<table 
107c0 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64  border=0 cellpad
107d0 64 69 6e 67 3d 31 30 3e 0a 3c 74 63 6c 3e 0a 66  ding=10>.<tcl>.f
107e0 75 6e 63 64 65 66 20 7b 61 76 67 28 58 29 7d 20  uncdef {avg(X)} 
107f0 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68  {} {.  Return th
10800 65 20 61 76 65 72 61 67 65 20 76 61 6c 75 65 20  e average value 
10810 6f 66 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20  of all non-NULL 
10820 3c 69 3e 58 3c 2f 69 3e 20 77 69 74 68 69 6e 20  <i>X</i> within 
10830 61 0a 20 20 67 72 6f 75 70 2e 20 20 53 74 72 69  a.  group.  Stri
10840 6e 67 20 61 6e 64 20 42 4c 4f 42 20 76 61 6c 75  ng and BLOB valu
10850 65 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 6c  es that do not l
10860 6f 6f 6b 20 6c 69 6b 65 20 6e 75 6d 62 65 72 73  ook like numbers
10870 20 61 72 65 0a 20 20 69 6e 74 65 72 70 72 65 74   are.  interpret
10880 65 64 20 61 73 20 30 2e 0a 20 20 54 68 65 20 72  ed as 0..  The r
10890 65 73 75 6c 74 20 6f 66 20 61 76 67 28 29 20 69  esult of avg() i
108a0 73 20 61 6c 77 61 79 73 20 61 20 66 6c 6f 61 74  s always a float
108b0 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 20  ing point value 
108c0 65 76 65 6e 20 69 66 20 61 6c 6c 0a 20 20 69 6e  even if all.  in
108d0 70 75 74 73 20 61 72 65 20 69 6e 74 65 67 65 72  puts are integer
108e0 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 63  s..}..funcdef {c
108f0 6f 75 6e 74 28 58 29 20 63 6f 75 6e 74 28 2a 29  ount(X) count(*)
10900 7d 20 7b 7d 20 7b 0a 20 20 54 68 65 20 66 69 72  } {} {.  The fir
10910 73 74 20 66 6f 72 6d 20 72 65 74 75 72 6e 20 61  st form return a
10920 20 63 6f 75 6e 74 20 6f 66 20 74 68 65 20 6e 75   count of the nu
10930 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 0a 20 20  mber of times.  
10940 74 68 61 74 20 3c 69 3e 58 3c 2f 69 3e 20 69 73  that <i>X</i> is
10950 20 6e 6f 74 20 4e 55 4c 4c 20 69 6e 20 61 20 67   not NULL in a g
10960 72 6f 75 70 2e 20 20 54 68 65 20 73 65 63 6f 6e  roup.  The secon
10970 64 20 66 6f 72 6d 20 28 77 69 74 68 20 6e 6f 20  d form (with no 
10980 61 72 67 75 6d 65 6e 74 29 0a 20 20 72 65 74 75  argument).  retu
10990 72 6e 73 20 74 68 65 20 74 6f 74 61 6c 20 6e 75  rns the total nu
109a0 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 69 6e 20  mber of rows in 
109b0 74 68 65 20 67 72 6f 75 70 2e 0a 7d 0a 0a 66 75  the group..}..fu
109c0 6e 63 64 65 66 20 7b 67 72 6f 75 70 5f 63 6f 6e  ncdef {group_con
109d0 63 61 74 28 58 29 20 67 72 6f 75 70 5f 63 6f 6e  cat(X) group_con
109e0 63 61 74 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20  cat(X,Y)} {} {. 
109f0 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61   The result is a
10a00 20 73 74 72 69 6e 67 20 77 68 69 63 68 20 69 73   string which is
10a10 20 74 68 65 20 63 6f 6e 63 61 74 65 6e 61 74 69   the concatenati
10a20 6f 6e 20 6f 66 0a 20 20 61 6c 6c 20 6e 6f 6e 2d  on of.  all non-
10a30 4e 55 4c 4c 20 76 61 6c 75 65 73 20 6f 66 20 3c  NULL values of <
10a40 69 3e 58 3c 2f 69 3e 2e 20 20 49 66 20 70 61 72  i>X</i>.  If par
10a50 61 6d 65 74 65 72 20 3c 69 3e 59 3c 2f 69 3e 20  ameter <i>Y</i> 
10a60 69 73 20 74 68 65 20 73 65 70 61 72 61 74 6f 72  is the separator
10a70 0a 20 20 62 65 74 77 65 65 6e 20 69 6e 73 74 61  .  between insta
10a80 6e 63 65 73 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e  nces of <i>X</i>
10a90 2e 20 20 41 20 63 6f 6d 6d 61 20 28 22 2c 22 29  .  A comma (",")
10aa0 20 69 73 20 75 73 65 64 20 61 73 20 74 68 65 20   is used as the 
10ab0 73 65 70 61 72 61 74 6f 72 0a 20 20 69 66 20 3c  separator.  if <
10ac0 69 3e 59 3c 2f 69 3e 20 69 73 20 6f 6d 69 74 74  i>Y</i> is omitt
10ad0 65 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  ed..}..funcdef {
10ae0 6d 61 78 28 58 29 7d 20 7b 6d 61 78 41 67 67 46  max(X)} {maxAggF
10af0 75 6e 63 20 61 67 67 5f 6d 61 78 7d 20 7b 0a 20  unc agg_max} {. 
10b00 20 52 65 74 75 72 6e 20 74 68 65 20 6d 61 78 69   Return the maxi
10b10 6d 75 6d 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c  mum value of all
10b20 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 67   values in the g
10b30 72 6f 75 70 2e 0a 20 20 54 68 65 20 75 73 75 61  roup..  The usua
10b40 6c 20 73 6f 72 74 20 6f 72 64 65 72 20 69 73 20  l sort order is 
10b50 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e  used to determin
10b60 65 20 74 68 65 20 6d 61 78 69 6d 75 6d 2e 0a 7d  e the maximum..}
10b70 0a 0a 66 75 6e 63 64 65 66 20 7b 6d 69 6e 28 58  ..funcdef {min(X
10b80 29 7d 20 7b 6d 69 6e 41 67 67 46 75 6e 63 20 61  )} {minAggFunc a
10b90 67 67 5f 6d 69 6e 7d 20 7b 0a 20 20 52 65 74 75  gg_min} {.  Retu
10ba0 72 6e 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 6e  rn the minimum n
10bb0 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 20 6f 66  on-NULL value of
10bc0 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74   all values in t
10bd0 68 65 20 67 72 6f 75 70 2e 0a 20 20 54 68 65 20  he group..  The 
10be0 75 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72  usual sort order
10bf0 20 69 73 20 75 73 65 64 20 74 6f 20 64 65 74 65   is used to dete
10c00 72 6d 69 6e 65 20 74 68 65 20 6d 69 6e 69 6d 75  rmine the minimu
10c10 6d 2e 20 20 0a 20 20 4e 55 4c 4c 20 69 73 20 6f  m.  .  NULL is o
10c20 6e 6c 79 20 72 65 74 75 72 6e 65 64 0a 20 20 69  nly returned.  i
10c30 66 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20  f all values in 
10c40 74 68 65 20 67 72 6f 75 70 20 61 72 65 20 4e 55  the group are NU
10c50 4c 4c 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  LL..}..funcdef {
10c60 73 75 6d 28 58 29 20 74 6f 74 61 6c 28 58 29 7d  sum(X) total(X)}
10c70 20 7b 73 75 6d 46 75 6e 63 20 73 75 6d 20 74 6f   {sumFunc sum to
10c80 74 61 6c 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20  tal} {.  Return 
10c90 74 68 65 20 6e 75 6d 65 72 69 63 20 73 75 6d 20  the numeric sum 
10ca0 6f 66 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20  of all non-NULL 
10cb0 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72  values in the gr
10cc0 6f 75 70 2e 0a 20 20 49 66 20 74 68 65 72 65 20  oup..  If there 
10cd0 61 72 65 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20  are no non-NULL 
10ce0 69 6e 70 75 74 20 72 6f 77 73 20 74 68 65 6e 20  input rows then 
10cf0 73 75 6d 28 29 20 72 65 74 75 72 6e 73 0a 20 20  sum() returns.  
10d00 4e 55 4c 4c 20 62 75 74 20 74 6f 74 61 6c 28 29  NULL but total()
10d10 20 72 65 74 75 72 6e 73 20 30 2e 30 2e 0a 20 20   returns 0.0..  
10d20 4e 55 4c 4c 20 69 73 20 6e 6f 74 20 6e 6f 72 6d  NULL is not norm
10d30 61 6c 6c 79 20 61 20 68 65 6c 70 66 75 6c 20 72  ally a helpful r
10d40 65 73 75 6c 74 20 66 6f 72 20 74 68 65 20 73 75  esult for the su
10d50 6d 20 6f 66 20 6e 6f 20 72 6f 77 73 0a 20 20 62  m of no rows.  b
10d60 75 74 20 74 68 65 20 53 51 4c 20 73 74 61 6e 64  ut the SQL stand
10d70 61 72 64 20 72 65 71 75 69 72 65 73 20 69 74 20  ard requires it 
10d80 61 6e 64 20 6d 6f 73 74 20 6f 74 68 65 72 0a 20  and most other. 
10d90 20 53 51 4c 20 64 61 74 61 62 61 73 65 20 65 6e   SQL database en
10da0 67 69 6e 65 73 20 69 6d 70 6c 65 6d 65 6e 74 20  gines implement 
10db0 73 75 6d 28 29 20 74 68 61 74 20 77 61 79 20 73  sum() that way s
10dc0 6f 20 53 51 4c 69 74 65 20 64 6f 65 73 20 69 74  o SQLite does it
10dd0 20 69 6e 20 74 68 65 0a 20 20 73 61 6d 65 20 77   in the.  same w
10de0 61 79 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 62  ay in order to b
10df0 65 20 63 6f 6d 70 61 74 69 62 6c 65 2e 20 20 20  e compatible.   
10e00 54 68 65 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64  The non-standard
10e10 20 74 6f 74 61 6c 28 29 20 66 75 6e 63 74 69 6f   total() functio
10e20 6e 0a 20 20 69 73 20 70 72 6f 76 69 64 65 64 20  n.  is provided 
10e30 61 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 74 20  as a convenient 
10e40 77 61 79 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75  way to work arou
10e50 6e 64 20 74 68 69 73 20 64 65 73 69 67 6e 20 70  nd this design p
10e60 72 6f 62 6c 65 6d 0a 20 20 69 6e 20 74 68 65 20  roblem.  in the 
10e70 53 51 4c 20 6c 61 6e 67 75 61 67 65 2e 3c 2f 70  SQL language.</p
10e80 3e 0a 0a 20 20 3c 70 3e 54 68 65 20 72 65 73 75  >..  <p>The resu
10e90 6c 74 20 6f 66 20 74 6f 74 61 6c 28 29 20 69 73  lt of total() is
10ea0 20 61 6c 77 61 79 73 20 61 20 66 6c 6f 61 74 69   always a floati
10eb0 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 2e 0a  ng point value..
10ec0 20 20 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20    The result of 
10ed0 73 75 6d 28 29 20 69 73 20 61 6e 20 69 6e 74 65  sum() is an inte
10ee0 67 65 72 20 76 61 6c 75 65 20 69 66 20 61 6c 6c  ger value if all
10ef0 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74 73   non-NULL inputs
10f00 20 61 72 65 20 69 6e 74 65 67 65 72 73 2e 0a 20   are integers.. 
10f10 20 49 66 20 61 6e 79 20 69 6e 70 75 74 20 74 6f   If any input to
10f20 20 73 75 6d 28 29 20 69 73 20 6e 65 69 74 68 65   sum() is neithe
10f30 72 20 61 6e 20 69 6e 74 65 67 65 72 20 6f 72 20  r an integer or 
10f40 61 20 4e 55 4c 4c 0a 20 20 74 68 65 6e 20 73 75  a NULL.  then su
10f50 6d 28 29 20 72 65 74 75 72 6e 73 20 61 20 66 6c  m() returns a fl
10f60 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c  oating point val
10f70 75 65 0a 20 20 77 68 69 63 68 20 6d 69 67 68 74  ue.  which might
10f80 20 62 65 20 61 6e 20 61 70 70 72 6f 78 69 6d 61   be an approxima
10f90 74 69 6f 6e 20 74 6f 20 74 68 65 20 74 72 75 65  tion to the true
10fa0 20 73 75 6d 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e   sum.</p>..  <p>
10fb0 53 75 6d 28 29 20 77 69 6c 6c 20 74 68 72 6f 77  Sum() will throw
10fc0 20 61 6e 20 22 69 6e 74 65 67 65 72 20 6f 76 65   an "integer ove
10fd0 72 66 6c 6f 77 22 20 65 78 63 65 70 74 69 6f 6e  rflow" exception
10fe0 20 69 66 20 61 6c 6c 20 69 6e 70 75 74 73 0a 20   if all inputs. 
10ff0 20 61 72 65 20 69 6e 74 65 67 65 72 73 20 6f 72   are integers or
11000 20 4e 55 4c 4c 0a 20 20 61 6e 64 20 61 6e 20 69   NULL.  and an i
11010 6e 74 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 20  nteger overflow 
11020 6f 63 63 75 72 73 20 61 74 20 61 6e 79 20 70 6f  occurs at any po
11030 69 6e 74 20 64 75 72 69 6e 67 20 74 68 65 20 63  int during the c
11040 6f 6d 70 75 74 61 74 69 6f 6e 2e 0a 20 20 54 6f  omputation..  To
11050 74 61 6c 28 29 20 6e 65 76 65 72 20 74 68 72 6f  tal() never thro
11060 77 73 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e  ws an exception.
11070 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f 74 61 62 6c  .}.</tcl>.</tabl
11080 65 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  e>..<tcl>.######
11090 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
110a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
110b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
110c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
110d0 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
110e0 20 49 4e 53 45 52 54 20 69 6e 73 65 72 74 20 7b   INSERT insert {
110f0 49 4e 53 45 52 54 20 49 4e 53 45 52 54 73 7d 0a  INSERT INSERTs}.
11100 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 69  .BubbleDiagram i
11110 6e 73 65 72 74 2d 73 74 6d 74 20 31 0a 3c 2f 74  nsert-stmt 1.</t
11120 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 49 4e 53 45  cl>..<p>The INSE
11130 52 54 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d  RT statement com
11140 65 73 20 69 6e 20 74 77 6f 20 62 61 73 69 63 20  es in two basic 
11150 66 6f 72 6d 73 2e 20 20 54 68 65 20 66 69 72 73  forms.  The firs
11160 74 20 66 6f 72 6d 0a 28 77 69 74 68 20 74 68 65  t form.(with the
11170 20 22 56 41 4c 55 45 53 22 20 6b 65 79 77 6f 72   "VALUES" keywor
11180 64 29 20 63 72 65 61 74 65 73 20 61 20 73 69 6e  d) creates a sin
11190 67 6c 65 20 6e 65 77 20 72 6f 77 20 69 6e 20 61  gle new row in a
111a0 6e 20 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65  n existing table
111b0 2e 0a 49 66 20 6e 6f 20 63 6f 6c 75 6d 6e 2d 6c  ..If no column-l
111c0 69 73 74 20 69 73 20 73 70 65 63 69 66 69 65 64  ist is specified
111d0 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65 72   then the number
111e0 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73 74 0a   of values must.
111f0 62 65 20 74 68 65 20 73 61 6d 65 20 61 73 20 74  be the same as t
11200 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
11210 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c  umns in the tabl
11220 65 2e 20 20 49 66 20 61 20 63 6f 6c 75 6d 6e 2d  e.  If a column-
11230 6c 69 73 74 0a 69 73 20 73 70 65 63 69 66 69 65  list.is specifie
11240 64 2c 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62  d, then the numb
11250 65 72 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73  er of values mus
11260 74 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62  t match the numb
11270 65 72 20 6f 66 0a 73 70 65 63 69 66 69 65 64 20  er of.specified 
11280 63 6f 6c 75 6d 6e 73 2e 20 20 43 6f 6c 75 6d 6e  columns.  Column
11290 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 74  s of the table t
112a0 68 61 74 20 64 6f 20 6e 6f 74 20 61 70 70 65 61  hat do not appea
112b0 72 20 69 6e 20 74 68 65 0a 63 6f 6c 75 6d 6e 20  r in the.column 
112c0 6c 69 73 74 20 61 72 65 20 66 69 6c 6c 65 64 20  list are filled 
112d0 77 69 74 68 20 74 68 65 20 64 65 66 61 75 6c 74  with the default
112e0 20 76 61 6c 75 65 2c 20 6f 72 20 77 69 74 68 20   value, or with 
112f0 4e 55 4c 4c 20 69 66 20 6e 6f 0a 64 65 66 61 75  NULL if no.defau
11300 6c 74 20 76 61 6c 75 65 20 69 73 20 73 70 65 63  lt value is spec
11310 69 66 69 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  ified..</p>..<p>
11320 54 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20  The second form 
11330 6f 66 20 74 68 65 20 49 4e 53 45 52 54 20 73 74  of the INSERT st
11340 61 74 65 6d 65 6e 74 20 74 61 6b 65 73 20 69 74  atement takes it
11350 20 64 61 74 61 20 66 72 6f 6d 20 61 0a 53 45 4c   data from a.SEL
11360 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  ECT statement.  
11370 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  The number of co
11380 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73  lumns in the res
11390 75 6c 74 20 6f 66 20 74 68 65 0a 53 45 4c 45 43  ult of the.SELEC
113a0 54 20 6d 75 73 74 20 65 78 61 63 74 6c 79 20 6d  T must exactly m
113b0 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20  atch the number 
113c0 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68  of columns in th
113d0 65 20 74 61 62 6c 65 20 69 66 0a 6e 6f 20 63 6f  e table if.no co
113e0 6c 75 6d 6e 20 6c 69 73 74 20 69 73 20 73 70 65  lumn list is spe
113f0 63 69 66 69 65 64 2c 20 6f 72 20 69 74 20 6d 75  cified, or it mu
11400 73 74 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d  st match the num
11410 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 0a 6e  ber of columns.n
11420 61 6d 65 20 69 6e 20 74 68 65 20 63 6f 6c 75 6d  ame in the colum
11430 6e 20 6c 69 73 74 2e 20 20 41 20 6e 65 77 20 65  n list.  A new e
11440 6e 74 72 79 20 69 73 20 6d 61 64 65 20 69 6e 20  ntry is made in 
11450 74 68 65 20 74 61 62 6c 65 0a 66 6f 72 20 65 76  the table.for ev
11460 65 72 79 20 72 6f 77 20 6f 66 20 74 68 65 20 53  ery row of the S
11470 45 4c 45 43 54 20 72 65 73 75 6c 74 2e 20 20 54  ELECT result.  T
11480 68 65 20 53 45 4c 45 43 54 20 6d 61 79 20 62 65  he SELECT may be
11490 20 73 69 6d 70 6c 65 0a 6f 72 20 63 6f 6d 70 6f   simple.or compo
114a0 75 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  und.</p>..<p>The
114b0 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69   optional confli
114c0 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73  ct-clause allows
114d0 20 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69   the specificati
114e0 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61  on of an alterna
114f0 74 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20  tive.constraint 
11500 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74  conflict resolut
11510 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f  ion algorithm to
11520 20 75 73 65 20 64 75 72 69 6e 67 20 74 68 69 73   use during this
11530 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65   one command..Se
11540 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69  e the section ti
11550 74 6c 65 64 0a 5b 4f 4e 20 43 4f 4e 46 4c 49 43  tled.[ON CONFLIC
11560 54 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  T] for additiona
11570 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 46  l information..F
11580 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  or compatibility
11590 20 77 69 74 68 20 4d 79 53 51 4c 2c 20 74 68 65   with MySQL, the
115a0 20 70 61 72 73 65 72 20 61 6c 6c 6f 77 73 20 74   parser allows t
115b0 68 65 20 75 73 65 20 6f 66 20 74 68 65 0a 73 69  he use of the.si
115c0 6e 67 6c 65 20 6b 65 79 77 6f 72 64 20 3c 61 20  ngle keyword <a 
115d0 68 72 65 66 3d 22 6c 61 6e 67 5f 72 65 70 6c 61  href="lang_repla
115e0 63 65 2e 68 74 6d 6c 22 3e 52 45 50 4c 41 43 45  ce.html">REPLACE
115f0 3c 2f 61 3e 20 61 73 20 61 6e 20 0a 61 6c 69 61  </a> as an .alia
11600 73 20 66 6f 72 20 22 49 4e 53 45 52 54 20 4f 52  s for "INSERT OR
11610 20 52 45 50 4c 41 43 45 22 2e 0a 3c 2f 70 3e 0a   REPLACE"..</p>.
11620 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
11630 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11640 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11650 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11660 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11670 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 4f  #####.Section {O
11680 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73  N CONFLICT claus
11690 65 7d 20 63 6f 6e 66 6c 69 63 74 20 7b 7b 63 6f  e} conflict {{co
116a0 6e 66 6c 69 63 74 20 63 6c 61 75 73 65 7d 20 7b  nflict clause} {
116b0 4f 4e 20 43 4f 4e 46 4c 49 43 54 7d 7d 0a 0a 42  ON CONFLICT}}..B
116c0 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 6f 6e  ubbleDiagram con
116d0 66 6c 69 63 74 2d 63 6c 61 75 73 65 0a 3c 2f 74  flict-clause.</t
116e0 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 4f 4e 20 43  cl>..<p>The ON C
116f0 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20 69  ONFLICT clause i
11700 73 20 6e 6f 74 20 61 20 73 65 70 61 72 61 74 65  s not a separate
11710 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 49   SQL command.  I
11720 74 20 69 73 20 61 0a 6e 6f 6e 2d 73 74 61 6e 64  t is a.non-stand
11730 61 72 64 20 63 6c 61 75 73 65 20 74 68 61 74 20  ard clause that 
11740 63 61 6e 20 61 70 70 65 61 72 20 69 6e 20 6d 61  can appear in ma
11750 6e 79 20 6f 74 68 65 72 20 53 51 4c 20 63 6f 6d  ny other SQL com
11760 6d 61 6e 64 73 2e 0a 49 74 20 69 73 20 67 69 76  mands..It is giv
11770 65 6e 20 69 74 73 20 6f 77 6e 20 73 65 63 74 69  en its own secti
11780 6f 6e 20 69 6e 20 74 68 69 73 20 64 6f 63 75 6d  on in this docum
11790 65 6e 74 20 62 65 63 61 75 73 65 20 69 74 20 69  ent because it i
117a0 73 20 6e 6f 74 0a 70 61 72 74 20 6f 66 20 73 74  s not.part of st
117b0 61 6e 64 61 72 64 20 53 51 4c 20 61 6e 64 20 74  andard SQL and t
117c0 68 65 72 65 66 6f 72 65 20 6d 69 67 68 74 20 6e  herefore might n
117d0 6f 74 20 62 65 20 66 61 6d 69 6c 69 61 72 2e 3c  ot be familiar.<
117e0 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 79 6e 74  /p>..<p>The synt
117f0 61 78 20 66 6f 72 20 74 68 65 20 4f 4e 20 43 4f  ax for the ON CO
11800 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73  NFLICT clause is
11810 20 61 73 20 73 68 6f 77 6e 20 61 62 6f 76 65 20   as shown above 
11820 66 6f 72 0a 74 68 65 20 43 52 45 41 54 45 20 54  for.the CREATE T
11830 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 2e 20 20 46  ABLE command.  F
11840 6f 72 20 74 68 65 20 49 4e 53 45 52 54 20 61 6e  or the INSERT an
11850 64 0a 55 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64  d.UPDATE command
11860 73 2c 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20  s, the keywords 
11870 22 4f 4e 20 43 4f 4e 46 4c 49 43 54 22 20 61 72  "ON CONFLICT" ar
11880 65 20 72 65 70 6c 61 63 65 64 20 62 79 20 22 4f  e replaced by "O
11890 52 22 2c 20 74 6f 20 6d 61 6b 65 0a 74 68 65 20  R", to make.the 
118a0 73 79 6e 74 61 78 20 73 65 65 6d 20 6d 6f 72 65  syntax seem more
118b0 20 6e 61 74 75 72 61 6c 2e 20 20 46 6f 72 20 65   natural.  For e
118c0 78 61 6d 70 6c 65 2c 20 69 6e 73 74 65 61 64 20  xample, instead 
118d0 6f 66 0a 22 49 4e 53 45 52 54 20 4f 4e 20 43 4f  of."INSERT ON CO
118e0 4e 46 4c 49 43 54 20 49 47 4e 4f 52 45 22 20 77  NFLICT IGNORE" w
118f0 65 20 68 61 76 65 20 22 49 4e 53 45 52 54 20 4f  e have "INSERT O
11900 52 20 49 47 4e 4f 52 45 22 2e 0a 54 68 65 20 6b  R IGNORE"..The k
11910 65 79 77 6f 72 64 73 20 63 68 61 6e 67 65 20 62  eywords change b
11920 75 74 20 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f  ut the meaning o
11930 66 20 74 68 65 20 63 6c 61 75 73 65 20 69 73 20  f the clause is 
11940 74 68 65 20 73 61 6d 65 0a 65 69 74 68 65 72 20  the same.either 
11950 77 61 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  way.</p>..<p>The
11960 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61   ON CONFLICT cla
11970 75 73 65 20 73 70 65 63 69 66 69 65 73 20 61 6e  use specifies an
11980 20 61 6c 67 6f 72 69 74 68 6d 20 75 73 65 64 20   algorithm used 
11990 74 6f 20 72 65 73 6f 6c 76 65 0a 63 6f 6e 73 74  to resolve.const
119a0 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 73 2e  raint conflicts.
119b0 20 20 54 68 65 72 65 20 61 72 65 20 66 69 76 65    There are five
119c0 20 63 68 6f 69 63 65 73 3a 20 52 4f 4c 4c 42 41   choices: ROLLBA
119d0 43 4b 2c 20 41 42 4f 52 54 2c 0a 46 41 49 4c 2c  CK, ABORT,.FAIL,
119e0 20 49 47 4e 4f 52 45 2c 20 61 6e 64 20 52 45 50   IGNORE, and REP
119f0 4c 41 43 45 2e 20 54 68 65 20 64 65 66 61 75 6c  LACE. The defaul
11a00 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 41  t algorithm is A
11a10 42 4f 52 54 2e 20 20 54 68 69 73 0a 69 73 20 77  BORT.  This.is w
11a20 68 61 74 20 74 68 65 79 20 6d 65 61 6e 3a 3c 2f  hat they mean:</
11a30 70 3e 0a 0a 3c 64 6c 3e 0a 3c 64 74 3e 3c 62 3e  p>..<dl>.<dt><b>
11a40 52 4f 4c 4c 42 41 43 4b 3c 2f 62 3e 3c 2f 64 74  ROLLBACK</b></dt
11a50 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20  >.<dd><p>When a 
11a60 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
11a70 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 61 6e 20  tion occurs, an 
11a80 69 6d 6d 65 64 69 61 74 65 20 52 4f 4c 4c 42 41  immediate ROLLBA
11a90 43 4b 0a 6f 63 63 75 72 73 2c 20 74 68 75 73 20  CK.occurs, thus 
11aa0 65 6e 64 69 6e 67 20 74 68 65 20 63 75 72 72 65  ending the curre
11ab0 6e 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20  nt transaction, 
11ac0 61 6e 64 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20  and the command 
11ad0 61 62 6f 72 74 73 0a 77 69 74 68 20 61 20 72 65  aborts.with a re
11ae0 74 75 72 6e 20 63 6f 64 65 20 6f 66 20 53 51 4c  turn code of SQL
11af0 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20  ITE_CONSTRAINT. 
11b00 20 49 66 20 6e 6f 20 74 72 61 6e 73 61 63 74 69   If no transacti
11b10 6f 6e 20 69 73 0a 61 63 74 69 76 65 20 28 6f 74  on is.active (ot
11b20 68 65 72 20 74 68 61 6e 20 74 68 65 20 69 6d 70  her than the imp
11b30 6c 69 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  lied transaction
11b40 20 74 68 61 74 20 69 73 20 63 72 65 61 74 65 64   that is created
11b50 20 6f 6e 20 65 76 65 72 79 0a 63 6f 6d 6d 61 6e   on every.comman
11b60 64 29 20 74 68 65 6e 20 74 68 69 73 20 61 6c 67  d) then this alg
11b70 6f 72 69 74 68 6d 20 77 6f 72 6b 73 20 74 68 65  orithm works the
11b80 20 73 61 6d 65 20 61 73 20 41 42 4f 52 54 2e 3c   same as ABORT.<
11b90 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62  /p></dd>..<dt><b
11ba0 3e 41 42 4f 52 54 3c 2f 62 3e 3c 2f 64 74 3e 0a  >ABORT</b></dt>.
11bb0 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f  <dd><p>When a co
11bc0 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
11bd0 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 63  on occurs, the c
11be0 6f 6d 6d 61 6e 64 20 62 61 63 6b 73 20 6f 75 74  ommand backs out
11bf0 0a 61 6e 79 20 70 72 69 6f 72 20 63 68 61 6e 67  .any prior chang
11c00 65 73 20 69 74 20 6d 69 67 68 74 20 68 61 76 65  es it might have
11c10 20 6d 61 64 65 20 61 6e 64 20 61 62 6f 72 74 73   made and aborts
11c20 20 77 69 74 68 20 61 20 72 65 74 75 72 6e 20 63   with a return c
11c30 6f 64 65 0a 6f 66 20 53 51 4c 49 54 45 5f 43 4f  ode.of SQLITE_CO
11c40 4e 53 54 52 41 49 4e 54 2e 20 20 42 75 74 20 6e  NSTRAINT.  But n
11c50 6f 20 52 4f 4c 4c 42 41 43 4b 20 69 73 20 65 78  o ROLLBACK is ex
11c60 65 63 75 74 65 64 20 73 6f 20 63 68 61 6e 67 65  ecuted so change
11c70 73 0a 66 72 6f 6d 20 70 72 69 6f 72 20 63 6f 6d  s.from prior com
11c80 6d 61 6e 64 73 20 77 69 74 68 69 6e 20 74 68 65  mands within the
11c90 20 73 61 6d 65 20 74 72 61 6e 73 61 63 74 69 6f   same transactio
11ca0 6e 0a 61 72 65 20 70 72 65 73 65 72 76 65 64 2e  n.are preserved.
11cb0 20 20 54 68 69 73 20 69 73 20 74 68 65 20 64 65    This is the de
11cc0 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 2e 3c  fault behavior.<
11cd0 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62  /p></dd>..<dt><b
11ce0 3e 46 41 49 4c 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c  >FAIL</b></dt>.<
11cf0 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e  dd><p>When a con
11d00 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
11d10 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 63 6f  n occurs, the co
11d20 6d 6d 61 6e 64 20 61 62 6f 72 74 73 20 77 69 74  mmand aborts wit
11d30 68 20 61 0a 72 65 74 75 72 6e 20 63 6f 64 65 20  h a.return code 
11d40 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
11d50 54 2e 20 20 42 75 74 20 61 6e 79 20 63 68 61 6e  T.  But any chan
11d60 67 65 73 20 74 6f 20 74 68 65 20 64 61 74 61 62  ges to the datab
11d70 61 73 65 20 74 68 61 74 0a 74 68 65 20 63 6f 6d  ase that.the com
11d80 6d 61 6e 64 20 6d 61 64 65 20 70 72 69 6f 72 20  mand made prior 
11d90 74 6f 20 65 6e 63 6f 75 6e 74 65 72 69 6e 67 20  to encountering 
11da0 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  the constraint v
11db0 69 6f 6c 61 74 69 6f 6e 0a 61 72 65 20 70 72 65  iolation.are pre
11dc0 73 65 72 76 65 64 20 61 6e 64 20 61 72 65 20 6e  served and are n
11dd0 6f 74 20 62 61 63 6b 65 64 20 6f 75 74 2e 20 20  ot backed out.  
11de0 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20  For example, if 
11df0 61 6e 20 55 50 44 41 54 45 0a 73 74 61 74 65 6d  an UPDATE.statem
11e00 65 6e 74 20 65 6e 63 6f 75 6e 74 65 72 65 64 20  ent encountered 
11e10 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  a constraint vio
11e20 6c 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20 31 30  lation on the 10
11e30 30 74 68 20 72 6f 77 20 74 68 61 74 0a 69 74 20  0th row that.it 
11e40 61 74 74 65 6d 70 74 73 20 74 6f 20 75 70 64 61  attempts to upda
11e50 74 65 2c 20 74 68 65 6e 20 74 68 65 20 66 69 72  te, then the fir
11e60 73 74 20 39 39 20 72 6f 77 20 63 68 61 6e 67 65  st 99 row change
11e70 73 20 61 72 65 20 70 72 65 73 65 72 76 65 64 0a  s are preserved.
11e80 62 75 74 20 63 68 61 6e 67 65 73 20 74 6f 20 72  but changes to r
11e90 6f 77 73 20 31 30 30 20 61 6e 64 20 62 65 79 6f  ows 100 and beyo
11ea0 6e 64 20 6e 65 76 65 72 20 6f 63 63 75 72 2e 3c  nd never occur.<
11eb0 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62  /p></dd>..<dt><b
11ec0 3e 49 47 4e 4f 52 45 3c 2f 62 3e 3c 2f 64 74 3e  >IGNORE</b></dt>
11ed0 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63  .<dd><p>When a c
11ee0 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
11ef0 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20  ion occurs, the 
11f00 6f 6e 65 20 72 6f 77 20 74 68 61 74 20 63 6f 6e  one row that con
11f10 74 61 69 6e 73 0a 74 68 65 20 63 6f 6e 73 74 72  tains.the constr
11f20 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 69  aint violation i
11f30 73 20 6e 6f 74 20 69 6e 73 65 72 74 65 64 20 6f  s not inserted o
11f40 72 20 63 68 61 6e 67 65 64 2e 20 20 42 75 74 20  r changed.  But 
11f50 74 68 65 20 63 6f 6d 6d 61 6e 64 0a 63 6f 6e 74  the command.cont
11f60 69 6e 75 65 73 20 65 78 65 63 75 74 69 6e 67 20  inues executing 
11f70 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4f 74 68 65 72  normally.  Other
11f80 20 72 6f 77 73 20 62 65 66 6f 72 65 20 61 6e 64   rows before and
11f90 20 61 66 74 65 72 20 74 68 65 20 72 6f 77 20 74   after the row t
11fa0 68 61 74 0a 63 6f 6e 74 61 69 6e 65 64 20 74 68  hat.contained th
11fb0 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  e constraint vio
11fc0 6c 61 74 69 6f 6e 20 63 6f 6e 74 69 6e 75 65 20  lation continue 
11fd0 74 6f 20 62 65 20 69 6e 73 65 72 74 65 64 20 6f  to be inserted o
11fe0 72 20 75 70 64 61 74 65 64 0a 6e 6f 72 6d 61 6c  r updated.normal
11ff0 6c 79 2e 20 20 4e 6f 20 65 72 72 6f 72 20 69 73  ly.  No error is
12000 20 72 65 74 75 72 6e 65 64 2e 3c 2f 70 3e 3c 2f   returned.</p></
12010 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 52 45 50 4c  dd>..<dt><b>REPL
12020 41 43 45 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64  ACE</b></dt>.<dd
12030 3e 3c 70 3e 57 68 65 6e 20 61 20 55 4e 49 51 55  ><p>When a UNIQU
12040 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  E constraint vio
12050 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74  lation occurs, t
12060 68 65 20 70 72 65 2d 65 78 69 73 74 69 6e 67 20  he pre-existing 
12070 72 6f 77 73 0a 74 68 61 74 20 61 72 65 20 63 61  rows.that are ca
12080 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72  using the constr
12090 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 61  aint violation a
120a0 72 65 20 72 65 6d 6f 76 65 64 20 70 72 69 6f 72  re removed prior
120b0 20 74 6f 20 69 6e 73 65 72 74 69 6e 67 0a 6f 72   to inserting.or
120c0 20 75 70 64 61 74 69 6e 67 20 74 68 65 20 63 75   updating the cu
120d0 72 72 65 6e 74 20 72 6f 77 2e 20 20 54 68 75 73  rrent row.  Thus
120e0 20 74 68 65 20 69 6e 73 65 72 74 20 6f 72 20 75   the insert or u
120f0 70 64 61 74 65 20 61 6c 77 61 79 73 20 6f 63 63  pdate always occ
12100 75 72 73 2e 0a 54 68 65 20 63 6f 6d 6d 61 6e 64  urs..The command
12110 20 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63 75   continues execu
12120 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20 20  ting normally.  
12130 4e 6f 20 65 72 72 6f 72 20 69 73 20 72 65 74 75  No error is retu
12140 72 6e 65 64 2e 0a 49 66 20 61 20 4e 4f 54 20 4e  rned..If a NOT N
12150 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  ULL constraint v
12160 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
12170 20 74 68 65 20 4e 55 4c 4c 20 76 61 6c 75 65 20   the NULL value 
12180 69 73 20 72 65 70 6c 61 63 65 64 0a 62 79 20 74  is replaced.by t
12190 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
121a0 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e   for that column
121b0 2e 20 20 49 66 20 74 68 65 20 63 6f 6c 75 6d 6e  .  If the column
121c0 20 68 61 73 20 6e 6f 20 64 65 66 61 75 6c 74 0a   has no default.
121d0 76 61 6c 75 65 2c 20 74 68 65 6e 20 74 68 65 20  value, then the 
121e0 41 42 4f 52 54 20 61 6c 67 6f 72 69 74 68 6d 20  ABORT algorithm 
121f0 69 73 20 75 73 65 64 2e 20 20 49 66 20 61 20 43  is used.  If a C
12200 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 20  HECK constraint 
12210 76 69 6f 6c 61 74 69 6f 6e 0a 6f 63 63 75 72 73  violation.occurs
12220 20 74 68 65 6e 20 74 68 65 20 49 47 4e 4f 52 45   then the IGNORE
12230 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73   algorithm is us
12240 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e  ed.</p>..<p>When
12250 20 74 68 69 73 20 63 6f 6e 66 6c 69 63 74 20 72   this conflict r
12260 65 73 6f 6c 75 74 69 6f 6e 20 73 74 72 61 74 65  esolution strate
12270 67 79 20 64 65 6c 65 74 65 73 20 72 6f 77 73 20  gy deletes rows 
12280 69 6e 20 6f 72 64 65 72 20 74 6f 0a 73 61 74 69  in order to.sati
12290 73 66 79 20 61 20 63 6f 6e 73 74 72 61 69 6e 74  sfy a constraint
122a0 2c 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 69 6e  , it does not in
122b0 76 6f 6b 65 20 64 65 6c 65 74 65 20 74 72 69 67  voke delete trig
122c0 67 65 72 73 20 6f 6e 20 74 68 6f 73 65 0a 72 6f  gers on those.ro
122d0 77 73 2e 20 20 54 68 69 73 20 62 65 68 61 76 69  ws.  This behavi
122e0 6f 72 20 6d 69 67 68 74 20 63 68 61 6e 67 65 20  or might change 
122f0 69 6e 20 61 20 66 75 74 75 72 65 20 72 65 6c 65  in a future rele
12300 61 73 65 2e 3c 2f 70 3e 0a 3c 2f 64 6c 3e 0a 0a  ase.</p>.</dl>..
12310 3c 70 3e 54 68 65 20 61 6c 67 6f 72 69 74 68 6d  <p>The algorithm
12320 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 74 68   specified in th
12330 65 20 4f 52 20 63 6c 61 75 73 65 20 6f 66 20 61  e OR clause of a
12340 20 49 4e 53 45 52 54 20 6f 72 20 55 50 44 41 54   INSERT or UPDAT
12350 45 0a 6f 76 65 72 72 69 64 65 73 20 61 6e 79 20  E.overrides any 
12360 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69 66  algorithm specif
12370 69 65 64 20 69 6e 20 61 20 43 52 45 41 54 45 20  ied in a CREATE 
12380 54 41 42 4c 45 2e 0a 49 66 20 6e 6f 20 61 6c 67  TABLE..If no alg
12390 6f 72 69 74 68 6d 20 69 73 20 73 70 65 63 69 66  orithm is specif
123a0 69 65 64 20 61 6e 79 77 68 65 72 65 2c 20 74 68  ied anywhere, th
123b0 65 20 41 42 4f 52 54 20 61 6c 67 6f 72 69 74 68  e ABORT algorith
123c0 6d 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a  m is used.</p>..
123d0 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
123e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
123f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
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 0a 53 65 63 74 69 6f 6e 20 52 45 49  ####.Section REI
12430 4e 44 45 58 20 72 65 69 6e 64 65 78 20 52 45 49  NDEX reindex REI
12440 4e 44 45 58 0a 0a 42 75 62 62 6c 65 44 69 61 67  NDEX..BubbleDiag
12450 72 61 6d 20 72 65 69 6e 64 65 78 2d 73 74 6d 74  ram reindex-stmt
12460 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68   1.</tcl>..<p>Th
12470 65 20 52 45 49 4e 44 45 58 20 63 6f 6d 6d 61 6e  e REINDEX comman
12480 64 20 69 73 20 75 73 65 64 20 74 6f 20 64 65 6c  d is used to del
12490 65 74 65 20 61 6e 64 20 72 65 63 72 65 61 74 65  ete and recreate
124a0 20 69 6e 64 69 63 65 73 20 66 72 6f 6d 20 73 63   indices from sc
124b0 72 61 74 63 68 2e 0a 54 68 69 73 20 69 73 20 75  ratch..This is u
124c0 73 65 66 75 6c 20 77 68 65 6e 20 74 68 65 20 64  seful when the d
124d0 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 61 20 63  efinition of a c
124e0 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63  ollation sequenc
124f0 65 20 68 61 73 20 63 68 61 6e 67 65 64 2e 0a 3c  e has changed..<
12500 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 74 68 65 20 66  /p>..<p>In the f
12510 69 72 73 74 20 66 6f 72 6d 2c 20 61 6c 6c 20 69  irst form, all i
12520 6e 64 69 63 65 73 20 69 6e 20 61 6c 6c 20 61 74  ndices in all at
12530 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73  tached databases
12540 20 74 68 61 74 20 75 73 65 20 74 68 65 0a 6e 61   that use the.na
12550 6d 65 64 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65  med collation se
12560 71 75 65 6e 63 65 20 61 72 65 20 72 65 63 72 65  quence are recre
12570 61 74 65 64 2e 20 49 6e 20 74 68 65 20 73 65 63  ated. In the sec
12580 6f 6e 64 20 66 6f 72 6d 2c 20 69 66 20 0a 3c 69  ond form, if .<i
12590 3e 26 23 39 31 3b 64 61 74 61 62 61 73 65 2d 6e  >&#91;database-n
125a0 61 6d 65 2e 26 23 39 33 3b 74 61 62 6c 65 2f 69  ame.&#93;table/i
125b0 6e 64 65 78 2d 6e 61 6d 65 3c 2f 69 3e 20 69 64  ndex-name</i> id
125c0 65 6e 74 69 66 69 65 73 20 61 20 74 61 62 6c 65  entifies a table
125d0 2c 0a 74 68 65 6e 20 61 6c 6c 20 69 6e 64 69 63  ,.then all indic
125e0 65 73 0a 61 73 73 6f 63 69 61 74 65 64 20 77 69  es.associated wi
125f0 74 68 20 74 68 65 20 74 61 62 6c 65 20 61 72 65  th the table are
12600 20 72 65 62 75 69 6c 74 2e 20 49 66 20 61 6e 20   rebuilt. If an 
12610 69 6e 64 65 78 20 69 73 20 69 64 65 6e 74 69 66  index is identif
12620 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c 79 0a 74  ied, then only.t
12630 68 69 73 20 73 70 65 63 69 66 69 63 20 69 6e 64  his specific ind
12640 65 78 20 69 73 20 64 65 6c 65 74 65 64 20 61 6e  ex is deleted an
12650 64 20 72 65 63 72 65 61 74 65 64 2e 0a 3c 2f 70  d recreated..</p
12660 3e 0a 0a 3c 70 3e 49 66 20 6e 6f 20 3c 69 3e 64  >..<p>If no <i>d
12670 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e  atabase-name</i>
12680 20 69 73 20 73 70 65 63 69 66 69 65 64 20 61 6e   is specified an
12690 64 20 74 68 65 72 65 20 65 78 69 73 74 73 20 62  d there exists b
126a0 6f 74 68 20 61 20 74 61 62 6c 65 20 6f 72 0a 69  oth a table or.i
126b0 6e 64 65 78 20 61 6e 64 20 61 20 63 6f 6c 6c 61  ndex and a colla
126c0 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 6f 66  tion sequence of
126d0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e   the specified n
126e0 61 6d 65 2c 20 74 68 65 6e 20 69 6e 64 69 63 65  ame, then indice
126f0 73 20 61 73 73 6f 63 69 61 74 65 64 0a 77 69 74  s associated.wit
12700 68 20 74 68 65 20 63 6f 6c 6c 61 74 69 6f 6e 20  h the collation 
12710 73 65 71 75 65 6e 63 65 20 6f 6e 6c 79 20 61 72  sequence only ar
12720 65 20 72 65 63 6f 6e 73 74 72 75 63 74 65 64 2e  e reconstructed.
12730 20 54 68 69 73 20 61 6d 62 69 67 75 69 74 79 20   This ambiguity 
12740 6d 61 79 20 62 65 0a 64 69 73 70 65 6c 6c 65 64  may be.dispelled
12750 20 62 79 20 61 6c 77 61 79 73 20 73 70 65 63 69   by always speci
12760 66 79 69 6e 67 20 61 20 3c 69 3e 64 61 74 61 62  fying a <i>datab
12770 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 20 77 68 65  ase-name</i> whe
12780 6e 20 72 65 69 6e 64 65 78 69 6e 67 20 61 0a 73  n reindexing a.s
12790 70 65 63 69 66 69 63 20 74 61 62 6c 65 20 6f 72  pecific table or
127a0 20 69 6e 64 65 78 2e 0a 0a 3c 74 63 6c 3e 0a 23   index...<tcl>.#
127b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
127c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
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 0a 53  ##############.S
12800 65 63 74 69 6f 6e 20 52 45 50 4c 41 43 45 20 72  ection REPLACE r
12810 65 70 6c 61 63 65 20 52 45 50 4c 41 43 45 0a 0a  eplace REPLACE..
12820 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 52  </tcl>..<p>The R
12830 45 50 4c 41 43 45 20 63 6f 6d 6d 61 6e 64 20 69  EPLACE command i
12840 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74  s an alias for t
12850 68 65 20 22 49 4e 53 45 52 54 20 4f 52 20 52 45  he "INSERT OR RE
12860 50 4c 41 43 45 22 20 76 61 72 69 61 6e 74 0a 6f  PLACE" variant.o
12870 66 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 6c  f the <a href="l
12880 61 6e 67 5f 69 6e 73 65 72 74 2e 68 74 6d 6c 22  ang_insert.html"
12890 3e 49 4e 53 45 52 54 3c 2f 61 3e 20 63 6f 6d 6d  >INSERT</a> comm
128a0 61 6e 64 2e 20 20 0a 54 68 69 73 20 61 6c 69 61  and.  .This alia
128b0 73 20 69 73 20 70 72 6f 76 69 64 65 64 20 66 6f  s is provided fo
128c0 72 0a 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  r.compatibility 
128d0 77 69 74 68 20 4d 79 53 51 4c 2e 20 20 53 65 65  with MySQL.  See
128e0 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 6c   the .<a href="l
128f0 61 6e 67 5f 69 6e 73 65 72 74 2e 68 74 6d 6c 22  ang_insert.html"
12900 3e 49 4e 53 45 52 54 3c 2f 61 3e 20 63 6f 6d 6d  >INSERT</a> comm
12910 61 6e 64 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  and documentatio
12920 6e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  n for additional
12930 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70  .information.</p
12940 3e 20 20 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  >  ..<tcl>.#####
12950 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12960 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12970 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12980 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12990 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
129a0 6f 6e 20 53 45 4c 45 43 54 20 73 65 6c 65 63 74  on SELECT select
129b0 20 7b 53 45 4c 45 43 54 20 71 75 65 72 79 7d 0a   {SELECT query}.
129c0 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 73  .BubbleDiagram s
129d0 65 6c 65 63 74 2d 73 74 6d 74 20 31 0a 42 75 62  elect-stmt 1.Bub
129e0 62 6c 65 44 69 61 67 72 61 6d 20 72 65 73 75 6c  bleDiagram resul
129f0 74 2d 63 6f 6c 75 6d 6e 0a 42 75 62 62 6c 65 44  t-column.BubbleD
12a00 69 61 67 72 61 6d 20 6a 6f 69 6e 2d 73 6f 75 72  iagram join-sour
12a10 63 65 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  ce.BubbleDiagram
12a20 20 73 69 6e 67 6c 65 2d 73 6f 75 72 63 65 0a 42   single-source.B
12a30 75 62 62 6c 65 44 69 61 67 72 61 6d 20 6a 6f 69  ubbleDiagram joi
12a40 6e 2d 6f 70 0a 42 75 62 62 6c 65 44 69 61 67 72  n-op.BubbleDiagr
12a50 61 6d 20 6a 6f 69 6e 2d 63 6f 6e 73 74 72 61 69  am join-constrai
12a60 6e 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  nt.BubbleDiagram
12a70 20 6f 72 64 65 72 69 6e 67 2d 74 65 72 6d 0a 42   ordering-term.B
12a80 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 6f 6d  ubbleDiagram com
12a90 70 6f 75 6e 64 2d 6f 70 65 72 61 74 6f 72 0a 3c  pound-operator.<
12aa0 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 53 45  /tcl>..<p>The SE
12ab0 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20 69  LECT statement i
12ac0 73 20 75 73 65 64 20 74 6f 20 71 75 65 72 79 20  s used to query 
12ad0 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 54  the database.  T
12ae0 68 65 0a 72 65 73 75 6c 74 20 6f 66 20 61 20 53  he.result of a S
12af0 45 4c 45 43 54 20 69 73 20 7a 65 72 6f 20 6f 72  ELECT is zero or
12b00 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 64 61   more rows of da
12b10 74 61 20 77 68 65 72 65 20 65 61 63 68 20 72 6f  ta where each ro
12b20 77 0a 68 61 73 20 61 20 66 69 78 65 64 20 6e 75  w.has a fixed nu
12b30 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 2e  mber of columns.
12b40 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20    The number of 
12b50 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 0a 72  columns in the.r
12b60 65 73 75 6c 74 20 69 73 20 73 70 65 63 69 66 69  esult is specifi
12b70 65 64 20 62 79 20 74 68 65 20 65 78 70 72 65 73  ed by the expres
12b80 73 69 6f 6e 20 6c 69 73 74 20 69 6e 20 62 65 74  sion list in bet
12b90 77 65 65 6e 20 74 68 65 0a 53 45 4c 45 43 54 20  ween the.SELECT 
12ba0 61 6e 64 20 46 52 4f 4d 20 6b 65 79 77 6f 72 64  and FROM keyword
12bb0 73 2e 20 20 41 6e 79 20 61 72 62 69 74 72 61 72  s.  Any arbitrar
12bc0 79 20 65 78 70 72 65 73 73 69 6f 6e 20 63 61 6e  y expression can
12bd0 20 62 65 20 75 73 65 64 0a 61 73 20 61 20 72 65   be used.as a re
12be0 73 75 6c 74 2e 20 20 49 66 20 61 20 72 65 73 75  sult.  If a resu
12bf0 6c 74 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73  lt expression is
12c00 20 7d 0a 68 64 5f 70 75 74 73 20 22 5b 4f 70 65   }.hd_puts "[Ope
12c10 72 61 74 6f 72 20 2a 5d 20 74 68 65 6e 20 61 6c  rator *] then al
12c20 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 6c 6c  l columns of all
12c30 20 74 61 62 6c 65 73 20 61 72 65 20 73 75 62 73   tables are subs
12c40 74 69 74 75 74 65 64 5c 6e 22 0a 68 64 5f 70 75  tituted\n".hd_pu
12c50 74 73 20 22 66 6f 72 20 74 68 61 74 20 6f 6e 65  ts "for that one
12c60 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 49 66   expression.  If
12c70 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
12c80 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 5c 6e  is the name of\n
12c90 22 0a 68 64 5f 70 75 74 73 20 22 61 20 74 61 62  ".hd_puts "a tab
12ca0 6c 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 5b  le followed by [
12cb0 4f 70 65 72 61 74 6f 72 20 2e 2a 5d 20 74 68 65  Operator .*] the
12cc0 6e 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20  n the result is 
12cd0 61 6c 6c 20 63 6f 6c 75 6d 6e 73 5c 6e 22 0a 68  all columns\n".h
12ce0 64 5f 70 75 74 73 20 7b 69 6e 20 74 68 61 74 20  d_puts {in that 
12cf0 6f 6e 65 20 74 61 62 6c 65 2e 3c 2f 70 3e 0a 0a  one table.</p>..
12d00 3c 70 3e 54 68 65 20 44 49 53 54 49 4e 43 54 20  <p>The DISTINCT 
12d10 6b 65 79 77 6f 72 64 20 63 61 75 73 65 73 20 61  keyword causes a
12d20 20 73 75 62 73 65 74 20 6f 66 20 72 65 73 75 6c   subset of resul
12d30 74 20 72 6f 77 73 20 74 6f 20 62 65 20 72 65 74  t rows to be ret
12d40 75 72 6e 65 64 2c 20 0a 69 6e 20 77 68 69 63 68  urned, .in which
12d50 20 65 61 63 68 20 72 65 73 75 6c 74 20 72 6f 77   each result row
12d60 20 69 73 20 64 69 66 66 65 72 65 6e 74 2e 20 20   is different.  
12d70 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61 72 65 20  NULL values are 
12d80 6e 6f 74 20 74 72 65 61 74 65 64 20 61 73 20 0a  not treated as .
12d90 64 69 73 74 69 6e 63 74 20 66 72 6f 6d 20 65 61  distinct from ea
12da0 63 68 20 6f 74 68 65 72 2e 20 20 54 68 65 20 64  ch other.  The d
12db0 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20  efault behavior 
12dc0 69 73 20 74 68 61 74 20 61 6c 6c 20 72 65 73 75  is that all resu
12dd0 6c 74 20 72 6f 77 73 20 0a 62 65 20 72 65 74 75  lt rows .be retu
12de0 72 6e 65 64 2c 20 77 68 69 63 68 20 63 61 6e 20  rned, which can 
12df0 62 65 20 6d 61 64 65 20 65 78 70 6c 69 63 69 74  be made explicit
12e00 20 77 69 74 68 20 74 68 65 20 6b 65 79 77 6f 72   with the keywor
12e10 64 20 41 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  d ALL.</p>..<p>T
12e20 68 65 20 71 75 65 72 79 20 69 73 20 65 78 65 63  he query is exec
12e30 75 74 65 64 20 61 67 61 69 6e 73 74 20 6f 6e 65  uted against one
12e40 20 6f 72 20 6d 6f 72 65 20 74 61 62 6c 65 73 20   or more tables 
12e50 73 70 65 63 69 66 69 65 64 20 61 66 74 65 72 0a  specified after.
12e60 74 68 65 20 46 52 4f 4d 20 6b 65 79 77 6f 72 64  the FROM keyword
12e70 2e 20 20 49 66 20 6d 75 6c 74 69 70 6c 65 20 74  .  If multiple t
12e80 61 62 6c 65 73 20 6e 61 6d 65 73 20 61 72 65 20  ables names are 
12e90 73 65 70 61 72 61 74 65 64 20 62 79 20 63 6f 6d  separated by com
12ea0 6d 61 73 2c 0a 74 68 65 6e 20 74 68 65 20 71 75  mas,.then the qu
12eb0 65 72 79 20 69 73 20 61 67 61 69 6e 73 74 20 74  ery is against t
12ec0 68 65 20 63 72 6f 73 73 20 6a 6f 69 6e 20 6f 66  he cross join of
12ed0 20 74 68 65 20 76 61 72 69 6f 75 73 20 74 61 62   the various tab
12ee0 6c 65 73 2e 0a 54 68 65 20 66 75 6c 6c 20 53 51  les..The full SQ
12ef0 4c 2d 39 32 20 6a 6f 69 6e 20 73 79 6e 74 61 78  L-92 join syntax
12f00 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 75 73 65   can also be use
12f10 64 20 74 6f 20 73 70 65 63 69 66 79 20 6a 6f 69  d to specify joi
12f20 6e 73 2e 0a 41 20 73 75 62 2d 71 75 65 72 79 0a  ns..A sub-query.
12f30 69 6e 20 70 61 72 65 6e 74 68 65 73 65 73 20 6d  in parentheses m
12f40 61 79 20 62 65 20 73 75 62 73 74 69 74 75 74 65  ay be substitute
12f50 64 20 66 6f 72 20 61 6e 79 20 74 61 62 6c 65 20  d for any table 
12f60 6e 61 6d 65 20 69 6e 20 74 68 65 20 46 52 4f 4d  name in the FROM
12f70 20 63 6c 61 75 73 65 2e 0a 54 68 65 20 65 6e 74   clause..The ent
12f80 69 72 65 20 46 52 4f 4d 20 63 6c 61 75 73 65 20  ire FROM clause 
12f90 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64 2c 20  may be omitted, 
12fa0 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68  in which case th
12fb0 65 20 72 65 73 75 6c 74 20 69 73 20 61 0a 73 69  e result is a.si
12fc0 6e 67 6c 65 20 72 6f 77 20 63 6f 6e 73 69 73 74  ngle row consist
12fd0 69 6e 67 20 6f 66 20 74 68 65 20 76 61 6c 75 65  ing of the value
12fe0 73 20 6f 66 20 74 68 65 20 65 78 70 72 65 73 73  s of the express
12ff0 69 6f 6e 20 6c 69 73 74 2e 0a 3c 2f 70 3e 0a 0a  ion list..</p>..
13000 3c 70 3e 54 68 65 20 57 48 45 52 45 20 63 6c 61  <p>The WHERE cla
13010 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64 20  use can be used 
13020 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e 75 6d  to limit the num
13030 62 65 72 20 6f 66 20 72 6f 77 73 20 6f 76 65 72  ber of rows over
13040 0a 77 68 69 63 68 20 74 68 65 20 71 75 65 72 79  .which the query
13050 20 6f 70 65 72 61 74 65 73 2e 3c 2f 70 3e 0a 0a   operates.</p>..
13060 3c 70 3e 54 68 65 20 47 52 4f 55 50 20 42 59 20  <p>The GROUP BY 
13070 63 6c 61 75 73 65 20 63 61 75 73 65 73 20 6f 6e  clause causes on
13080 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f  e or more rows o
13090 66 20 74 68 65 20 72 65 73 75 6c 74 20 74 6f 0a  f the result to.
130a0 62 65 20 63 6f 6d 62 69 6e 65 64 20 69 6e 74 6f  be combined into
130b0 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 6f 66   a single row of
130c0 20 6f 75 74 70 75 74 2e 20 20 54 68 69 73 20 69   output.  This i
130d0 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75 73 65  s especially use
130e0 66 75 6c 0a 77 68 65 6e 20 74 68 65 20 72 65 73  ful.when the res
130f0 75 6c 74 20 63 6f 6e 74 61 69 6e 73 20 61 67 67  ult contains agg
13100 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
13110 2e 20 20 54 68 65 20 65 78 70 72 65 73 73 69 6f  .  The expressio
13120 6e 73 20 69 6e 0a 74 68 65 20 47 52 4f 55 50 20  ns in.the GROUP 
13130 42 59 20 63 6c 61 75 73 65 20 64 6f 20 3c 65 6d  BY clause do <em
13140 3e 6e 6f 74 3c 2f 65 6d 3e 20 68 61 76 65 20 74  >not</em> have t
13150 6f 20 62 65 20 65 78 70 72 65 73 73 69 6f 6e 73  o be expressions
13160 20 74 68 61 74 0a 61 70 70 65 61 72 20 69 6e 20   that.appear in 
13170 74 68 65 20 72 65 73 75 6c 74 2e 20 20 54 68 65  the result.  The
13180 20 48 41 56 49 4e 47 20 63 6c 61 75 73 65 20 69   HAVING clause i
13190 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 57 48 45  s similar to WHE
131a0 52 45 20 65 78 63 65 70 74 0a 74 68 61 74 20 48  RE except.that H
131b0 41 56 49 4e 47 20 61 70 70 6c 69 65 73 20 61 66  AVING applies af
131c0 74 65 72 20 67 72 6f 75 70 69 6e 67 20 68 61 73  ter grouping has
131d0 20 6f 63 63 75 72 72 65 64 2e 20 20 54 68 65 20   occurred.  The 
131e0 48 41 56 49 4e 47 20 65 78 70 72 65 73 73 69 6f  HAVING expressio
131f0 6e 0a 6d 61 79 20 72 65 66 65 72 20 74 6f 20 76  n.may refer to v
13200 61 6c 75 65 73 2c 20 65 76 65 6e 20 61 67 67 72  alues, even aggr
13210 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 2c  egate functions,
13220 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20 69 6e   that are not in
13230 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70 3e   the result.</p>
13240 0a 0a 3c 70 3e 54 68 65 20 4f 52 44 45 52 20 42  ..<p>The ORDER B
13250 59 20 63 6c 61 75 73 65 20 63 61 75 73 65 73 20  Y clause causes 
13260 74 68 65 20 6f 75 74 70 75 74 20 72 6f 77 73 20  the output rows 
13270 74 6f 20 62 65 20 73 6f 72 74 65 64 2e 20 20 0a  to be sorted.  .
13280 54 68 65 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  The argument to 
13290 4f 52 44 45 52 20 42 59 20 69 73 20 61 20 6c 69  ORDER BY is a li
132a0 73 74 20 6f 66 20 65 78 70 72 65 73 73 69 6f 6e  st of expression
132b0 73 20 74 68 61 74 20 61 72 65 20 75 73 65 64 20  s that are used 
132c0 61 73 20 74 68 65 0a 6b 65 79 20 66 6f 72 20 74  as the.key for t
132d0 68 65 20 73 6f 72 74 2e 20 20 54 68 65 20 65 78  he sort.  The ex
132e0 70 72 65 73 73 69 6f 6e 73 20 64 6f 20 6e 6f 74  pressions do not
132f0 20 68 61 76 65 20 74 6f 20 62 65 20 70 61 72 74   have to be part
13300 20 6f 66 20 74 68 65 0a 72 65 73 75 6c 74 20 66   of the.result f
13310 6f 72 20 61 20 73 69 6d 70 6c 65 20 53 45 4c 45  or a simple SELE
13320 43 54 2c 20 62 75 74 20 69 6e 20 61 20 63 6f 6d  CT, but in a com
13330 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 65 61 63  pound SELECT eac
13340 68 20 73 6f 72 74 0a 65 78 70 72 65 73 73 69 6f  h sort.expressio
13350 6e 20 6d 75 73 74 20 65 78 61 63 74 6c 79 20 6d  n must exactly m
13360 61 74 63 68 20 6f 6e 65 20 6f 66 20 74 68 65 20  atch one of the 
13370 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20  result columns. 
13380 20 45 61 63 68 0a 73 6f 72 74 20 65 78 70 72 65   Each.sort expre
13390 73 73 69 6f 6e 20 6d 61 79 20 62 65 20 6f 70 74  ssion may be opt
133a0 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65 64  ionally followed
133b0 20 62 79 20 61 20 43 4f 4c 4c 41 54 45 20 6b 65   by a COLLATE ke
133c0 79 77 6f 72 64 20 61 6e 64 0a 74 68 65 20 6e 61  yword and.the na
133d0 6d 65 20 6f 66 20 61 20 63 6f 6c 6c 61 74 69 6e  me of a collatin
133e0 67 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 64 20  g function used 
133f0 66 6f 72 20 6f 72 64 65 72 69 6e 67 20 74 65 78  for ordering tex
13400 74 20 61 6e 64 2f 6f 72 0a 6b 65 79 77 6f 72 64  t and/or.keyword
13410 73 20 41 53 43 20 6f 72 20 44 45 53 43 20 74 6f  s ASC or DESC to
13420 20 73 70 65 63 69 66 79 20 74 68 65 20 73 6f 72   specify the sor
13430 74 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70  t order.</p>..<p
13440 3e 45 61 63 68 20 74 65 72 6d 20 6f 66 20 61 6e  >Each term of an
13450 20 4f 52 44 45 52 20 42 59 20 65 78 70 72 65 73   ORDER BY expres
13460 73 69 6f 6e 20 69 73 20 70 72 6f 63 65 73 73 65  sion is processe
13470 64 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70  d as follows:</p
13480 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70 3e 49  >..<ol>.<li><p>I
13490 66 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 65  f the ORDER BY e
134a0 78 70 72 65 73 73 69 6f 6e 20 69 73 20 61 20 63  xpression is a c
134b0 6f 6e 73 74 61 6e 74 20 69 6e 74 65 67 65 72 20  onstant integer 
134c0 4b 20 74 68 65 6e 20 74 68 65 0a 6f 75 74 70 75  K then the.outpu
134d0 74 20 69 73 20 6f 72 64 65 72 65 64 20 62 79 20  t is ordered by 
134e0 74 68 65 20 4b 2d 74 68 20 63 6f 6c 75 6d 6e 20  the K-th column 
134f0 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65  of the result se
13500 74 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e  t.</p></li>.<li>
13510 3c 70 3e 49 66 20 74 68 65 20 4f 52 44 45 52 20  <p>If the ORDER 
13520 42 59 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73  BY expression is
13530 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 61   an identifier a
13540 6e 64 20 6f 6e 65 20 6f 66 20 74 68 65 0a 6f 75  nd one of the.ou
13550 74 70 75 74 20 63 6f 6c 75 6d 6e 73 20 61 73 20  tput columns as 
13560 61 6e 20 61 6c 69 61 73 20 62 79 20 74 68 65 20  an alias by the 
13570 73 61 6d 65 20 6e 61 6d 65 2c 20 74 68 65 6e 20  same name, then 
13580 74 68 65 20 6f 75 74 70 75 74 20 69 73 0a 6f 72  the output is.or
13590 64 65 72 65 64 20 62 79 20 74 68 65 20 69 64 65  dered by the ide
135a0 6e 74 69 66 69 65 64 20 63 6f 6c 75 6d 6e 2e 3c  ntified column.<
135b0 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 70 3e  /p></li>.<li><p>
135c0 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 4f  Otherwise, the O
135d0 52 44 45 52 20 42 59 20 65 78 70 72 65 73 73 69  RDER BY expressi
135e0 6f 6e 20 69 73 20 65 76 61 6c 75 61 74 65 64 20  on is evaluated 
135f0 61 6e 64 20 74 68 65 20 6f 75 74 70 75 74 20 0a  and the output .
13600 69 73 20 6f 72 64 65 72 65 64 20 62 79 20 74 68  is ordered by th
13610 65 20 76 61 6c 75 65 20 6f 66 20 74 68 61 74 20  e value of that 
13620 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 70 3e 3c  expression.</p><
13630 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 49  /li>.</ol>..<p>I
13640 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c  n a compound SEL
13650 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2c 20 74  ECT statement, t
13660 68 65 20 74 68 69 72 64 20 4f 52 44 45 52 20 42  he third ORDER B
13670 59 20 6d 61 74 63 68 69 6e 67 20 72 75 6c 65 0a  Y matching rule.
13680 72 65 71 75 69 72 65 73 20 74 68 61 74 20 74 68  requires that th
13690 65 20 65 78 70 72 65 73 73 69 6f 6e 20 62 65 20  e expression be 
136a0 69 64 65 6e 74 69 63 61 6c 20 74 6f 20 6f 6e 65  identical to one
136b0 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20   of the columns 
136c0 69 6e 0a 74 68 65 20 72 65 73 75 6c 74 20 73 65  in.the result se
136d0 74 2e 20 20 54 68 65 20 74 68 72 65 65 20 72 75  t.  The three ru
136e0 6c 65 73 20 61 72 65 20 66 69 72 73 74 20 61 70  les are first ap
136f0 70 6c 69 65 64 20 74 6f 20 74 68 65 20 6c 65 66  plied to the lef
13700 74 2d 6d 6f 73 74 0a 53 45 4c 45 43 54 20 69 6e  t-most.SELECT in
13710 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 2e 20 20   the compound.  
13720 49 66 20 61 20 6d 61 74 63 68 20 69 73 20 66 6f  If a match is fo
13730 75 6e 64 2c 20 74 68 65 20 73 65 61 72 63 68 20  und, the search 
13740 73 74 6f 70 73 2e 20 20 4f 74 68 65 72 77 69 73  stops.  Otherwis
13750 65 2c 0a 74 68 65 20 6e 65 78 74 20 53 45 4c 45  e,.the next SELE
13760 43 54 20 74 6f 20 74 68 65 20 72 69 67 68 74 20  CT to the right 
13770 69 73 20 74 72 69 65 64 2e 20 20 54 68 69 73 20  is tried.  This 
13780 63 6f 6e 74 69 6e 75 65 73 20 75 6e 74 69 6c 20  continues until 
13790 61 20 6d 61 74 63 68 0a 69 73 20 66 6f 75 6e 64  a match.is found
137a0 2e 20 20 45 61 63 68 20 74 65 72 6d 20 6f 66 20  .  Each term of 
137b0 74 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61  the ORDER BY cla
137c0 75 73 65 20 69 73 20 70 72 6f 63 65 73 73 65 64  use is processed
137d0 20 73 65 70 61 72 61 74 65 6c 79 20 0a 61 6e 64   separately .and
137e0 20 6d 61 79 20 63 6f 6d 65 20 66 72 6f 6d 20 64   may come from d
137f0 69 66 66 65 72 65 6e 74 20 53 45 4c 45 43 54 20  ifferent SELECT 
13800 73 74 61 74 65 6d 65 6e 74 73 20 69 6e 20 74 68  statements in th
13810 65 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f 70 3e 0a  e compound.</p>.
13820 0a 3c 70 3e 54 68 65 20 4c 49 4d 49 54 20 63 6c  .<p>The LIMIT cl
13830 61 75 73 65 20 70 6c 61 63 65 73 20 61 6e 20 75  ause places an u
13840 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68  pper bound on th
13850 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73  e number of rows
13860 0a 72 65 74 75 72 6e 65 64 20 69 6e 20 74 68 65  .returned in the
13870 20 72 65 73 75 6c 74 2e 20 20 41 20 6e 65 67 61   result.  A nega
13880 74 69 76 65 20 4c 49 4d 49 54 20 69 6e 64 69 63  tive LIMIT indic
13890 61 74 65 73 20 6e 6f 20 75 70 70 65 72 20 62 6f  ates no upper bo
138a0 75 6e 64 2e 0a 54 68 65 20 6f 70 74 69 6f 6e 61  und..The optiona
138b0 6c 20 4f 46 46 53 45 54 20 66 6f 6c 6c 6f 77 69  l OFFSET followi
138c0 6e 67 20 4c 49 4d 49 54 20 73 70 65 63 69 66 69  ng LIMIT specifi
138d0 65 73 20 68 6f 77 20 6d 61 6e 79 0a 72 6f 77 73  es how many.rows
138e0 20 74 6f 20 73 6b 69 70 20 61 74 20 74 68 65 20   to skip at the 
138f0 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65  beginning of the
13900 20 72 65 73 75 6c 74 20 73 65 74 2e 0a 49 6e 20   result set..In 
13910 61 20 63 6f 6d 70 6f 75 6e 64 20 71 75 65 72 79  a compound query
13920 2c 20 74 68 65 20 4c 49 4d 49 54 20 63 6c 61 75  , the LIMIT clau
13930 73 65 20 6d 61 79 20 6f 6e 6c 79 20 61 70 70 65  se may only appe
13940 61 72 20 6f 6e 20 74 68 65 0a 66 69 6e 61 6c 20  ar on the.final 
13950 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
13960 2e 0a 54 68 65 20 6c 69 6d 69 74 20 69 73 20 61  ..The limit is a
13970 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 65 6e  pplied to the en
13980 74 69 72 65 20 71 75 65 72 79 20 6e 6f 74 0a 74  tire query not.t
13990 6f 20 74 68 65 20 69 6e 64 69 76 69 64 75 61 6c  o the individual
139a0 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e   SELECT statemen
139b0 74 20 74 6f 20 77 68 69 63 68 20 69 74 20 69 73  t to which it is
139c0 20 61 74 74 61 63 68 65 64 2e 0a 4e 6f 74 65 20   attached..Note 
139d0 74 68 61 74 20 69 66 20 74 68 65 20 4f 46 46 53  that if the OFFS
139e0 45 54 20 6b 65 79 77 6f 72 64 20 69 73 20 75 73  ET keyword is us
139f0 65 64 20 69 6e 20 74 68 65 20 4c 49 4d 49 54 20  ed in the LIMIT 
13a00 63 6c 61 75 73 65 2c 20 74 68 65 6e 20 74 68 65  clause, then the
13a10 0a 6c 69 6d 69 74 20 69 73 20 74 68 65 20 66 69  .limit is the fi
13a20 72 73 74 20 6e 75 6d 62 65 72 20 61 6e 64 20 74  rst number and t
13a30 68 65 20 6f 66 66 73 65 74 20 69 73 20 74 68 65  he offset is the
13a40 20 73 65 63 6f 6e 64 20 6e 75 6d 62 65 72 2e 20   second number. 
13a50 20 49 66 20 61 0a 63 6f 6d 6d 61 20 69 73 20 75   If a.comma is u
13a60 73 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 74  sed instead of t
13a70 68 65 20 4f 46 46 53 45 54 20 6b 65 79 77 6f 72  he OFFSET keywor
13a80 64 2c 20 74 68 65 6e 20 74 68 65 20 6f 66 66 73  d, then the offs
13a90 65 74 20 69 73 20 74 68 65 0a 66 69 72 73 74 20  et is the.first 
13aa0 6e 75 6d 62 65 72 20 61 6e 64 20 74 68 65 20 6c  number and the l
13ab0 69 6d 69 74 20 69 73 20 74 68 65 20 73 65 63 6f  imit is the seco
13ac0 6e 64 20 6e 75 6d 62 65 72 2e 20 20 54 68 69 73  nd number.  This
13ad0 20 73 65 65 6d 69 6e 67 0a 63 6f 6e 74 72 61 64   seeming.contrad
13ae0 69 74 69 6f 6e 20 69 73 20 69 6e 74 65 6e 74 69  ition is intenti
13af0 6f 6e 61 6c 20 2d 20 69 74 20 6d 61 78 69 6d 69  onal - it maximi
13b00 7a 65 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  zes compatibilit
13b10 79 20 77 69 74 68 20 6c 65 67 61 63 79 0a 53 51  y with legacy.SQ
13b20 4c 20 64 61 74 61 62 61 73 65 20 73 79 73 74 65  L database syste
13b30 6d 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63  ms..</p>..<p>A c
13b40 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 69  ompound SELECT i
13b50 73 20 66 6f 72 6d 65 64 20 66 72 6f 6d 20 74 77  s formed from tw
13b60 6f 20 6f 72 20 6d 6f 72 65 20 73 69 6d 70 6c 65  o or more simple
13b70 20 53 45 4c 45 43 54 73 20 63 6f 6e 6e 65 63 74   SELECTs connect
13b80 65 64 0a 62 79 20 6f 6e 65 20 6f 66 20 74 68 65  ed.by one of the
13b90 20 6f 70 65 72 61 74 6f 72 73 20 55 4e 49 4f 4e   operators UNION
13ba0 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54  , UNION ALL, INT
13bb0 45 52 53 45 43 54 2c 20 6f 72 20 45 58 43 45 50  ERSECT, or EXCEP
13bc0 54 2e 20 20 49 6e 0a 61 20 63 6f 6d 70 6f 75 6e  T.  In.a compoun
13bd0 64 20 53 45 4c 45 43 54 2c 20 61 6c 6c 20 74 68  d SELECT, all th
13be0 65 20 63 6f 6e 73 74 69 74 75 65 6e 74 20 53 45  e constituent SE
13bf0 4c 45 43 54 73 20 6d 75 73 74 20 73 70 65 63 69  LECTs must speci
13c00 66 79 20 74 68 65 0a 73 61 6d 65 20 6e 75 6d 62  fy the.same numb
13c10 65 72 20 6f 66 20 72 65 73 75 6c 74 20 63 6f 6c  er of result col
13c20 75 6d 6e 73 2e 20 20 54 68 65 72 65 20 6d 61 79  umns.  There may
13c30 20 62 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c   be only a singl
13c40 65 20 4f 52 44 45 52 20 42 59 0a 63 6c 61 75 73  e ORDER BY.claus
13c50 65 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20  e at the end of 
13c60 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c  the compound SEL
13c70 45 43 54 2e 20 20 54 68 65 20 55 4e 49 4f 4e 20  ECT.  The UNION 
13c80 61 6e 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f 70  and UNION ALL.op
13c90 65 72 61 74 6f 72 73 20 63 6f 6d 62 69 6e 65 20  erators combine 
13ca0 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74  the results of t
13cb0 68 65 20 53 45 4c 45 43 54 73 20 74 6f 20 74 68  he SELECTs to th
13cc0 65 20 72 69 67 68 74 20 61 6e 64 20 6c 65 66 74  e right and left
13cd0 20 69 6e 74 6f 0a 61 20 73 69 6e 67 6c 65 20 62   into.a single b
13ce0 69 67 20 74 61 62 6c 65 2e 20 20 54 68 65 20 64  ig table.  The d
13cf0 69 66 66 65 72 65 6e 63 65 20 69 73 20 74 68 61  ifference is tha
13d00 74 20 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c 20 72  t in UNION all r
13d10 65 73 75 6c 74 20 72 6f 77 73 0a 61 72 65 20 64  esult rows.are d
13d20 69 73 74 69 6e 63 74 20 77 68 65 72 65 20 69 6e  istinct where in
13d30 20 55 4e 49 4f 4e 20 41 4c 4c 20 74 68 65 72 65   UNION ALL there
13d40 20 6d 61 79 20 62 65 20 64 75 70 6c 69 63 61 74   may be duplicat
13d50 65 73 2e 0a 54 68 65 20 49 4e 54 45 52 53 45 43  es..The INTERSEC
13d60 54 20 6f 70 65 72 61 74 6f 72 20 74 61 6b 65 73  T operator takes
13d70 20 74 68 65 20 69 6e 74 65 72 73 65 63 74 69 6f   the intersectio
13d80 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 73  n of the results
13d90 20 6f 66 20 74 68 65 0a 6c 65 66 74 20 61 6e 64   of the.left and
13da0 20 72 69 67 68 74 20 53 45 4c 45 43 54 73 2e 20   right SELECTs. 
13db0 20 45 58 43 45 50 54 20 74 61 6b 65 73 20 74 68   EXCEPT takes th
13dc0 65 20 72 65 73 75 6c 74 20 6f 66 20 6c 65 66 74  e result of left
13dd0 20 53 45 4c 45 43 54 20 61 66 74 65 72 0a 72 65   SELECT after.re
13de0 6d 6f 76 69 6e 67 20 74 68 65 20 72 65 73 75 6c  moving the resul
13df0 74 73 20 6f 66 20 74 68 65 20 72 69 67 68 74 20  ts of the right 
13e00 53 45 4c 45 43 54 2e 20 20 57 68 65 6e 20 74 68  SELECT.  When th
13e10 72 65 65 20 6f 72 20 6d 6f 72 65 20 53 45 4c 45  ree or more SELE
13e20 43 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63 74 65  CTs.are connecte
13e30 64 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f 75 6e  d into a compoun
13e40 64 2c 20 74 68 65 79 20 67 72 6f 75 70 20 66 72  d, they group fr
13e50 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74  om left to right
13e60 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23  .</p>...<tcl>.##
13e70 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13e80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13e90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13ea0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13eb0 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
13ec0 74 69 6f 6e 20 55 50 44 41 54 45 20 75 70 64 61  tion UPDATE upda
13ed0 74 65 20 7b 55 50 44 41 54 45 20 55 50 44 41 54  te {UPDATE UPDAT
13ee0 45 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  Es}..BubbleDiagr
13ef0 61 6d 20 75 70 64 61 74 65 2d 73 74 6d 74 20 31  am update-stmt 1
13f00 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 71  .BubbleDiagram q
13f10 75 61 6c 69 66 69 65 64 2d 74 61 62 6c 65 2d 6e  ualified-table-n
13f20 61 6d 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54  ame.</tcl>..<p>T
13f30 68 65 20 55 50 44 41 54 45 20 73 74 61 74 65 6d  he UPDATE statem
13f40 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20 63  ent is used to c
13f50 68 61 6e 67 65 20 74 68 65 20 76 61 6c 75 65 20  hange the value 
13f60 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 0a 73  of columns in .s
13f70 65 6c 65 63 74 65 64 20 72 6f 77 73 20 6f 66 20  elected rows of 
13f80 61 20 74 61 62 6c 65 2e 20 20 45 61 63 68 20 61  a table.  Each a
13f90 73 73 69 67 6e 6d 65 6e 74 20 69 6e 20 61 6e 20  ssignment in an 
13fa0 55 50 44 41 54 45 20 73 70 65 63 69 66 69 65 73  UPDATE specifies
13fb0 0a 61 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 74  .a column name t
13fc0 6f 20 74 68 65 20 6c 65 66 74 20 6f 66 20 74 68  o the left of th
13fd0 65 20 65 71 75 61 6c 73 20 73 69 67 6e 20 61 6e  e equals sign an
13fe0 64 20 61 6e 20 61 72 62 69 74 72 61 72 79 20 65  d an arbitrary e
13ff0 78 70 72 65 73 73 69 6f 6e 0a 74 6f 20 74 68 65  xpression.to the
14000 20 72 69 67 68 74 2e 20 20 54 68 65 20 65 78 70   right.  The exp
14010 72 65 73 73 69 6f 6e 73 20 6d 61 79 20 75 73 65  ressions may use
14020 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 6f   the values of o
14030 74 68 65 72 20 63 6f 6c 75 6d 6e 73 2e 0a 41 6c  ther columns..Al
14040 6c 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 72  l expressions ar
14050 65 20 65 76 61 6c 75 61 74 65 64 20 62 65 66 6f  e evaluated befo
14060 72 65 20 61 6e 79 20 61 73 73 69 67 6e 6d 65 6e  re any assignmen
14070 74 73 20 61 72 65 20 6d 61 64 65 2e 0a 41 20 57  ts are made..A W
14080 48 45 52 45 20 63 6c 61 75 73 65 20 63 61 6e 20  HERE clause can 
14090 62 65 20 75 73 65 64 20 74 6f 20 72 65 73 74 72  be used to restr
140a0 69 63 74 20 77 68 69 63 68 20 72 6f 77 73 20 61  ict which rows a
140b0 72 65 20 75 70 64 61 74 65 64 2e 3c 2f 70 3e 0a  re updated.</p>.
140c0 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c  .<p>The optional
140d0 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65   conflict-clause
140e0 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63   allows the spec
140f0 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20  ification of an 
14100 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73  alternative.cons
14110 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20  traint conflict 
14120 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
14130 69 74 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69  ithm to use duri
14140 6e 67 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d  ng this one comm
14150 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63  and..See the sec
14160 74 69 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f 4e 20  tion titled.[ON 
14170 43 4f 4e 46 4c 49 43 54 5d 20 66 6f 72 20 61 64  CONFLICT] for ad
14180 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
14190 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66  tion.</p>..<p>If
141a0 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c 74   SQLite is built
141b0 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49 54   with the [SQLIT
141c0 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f  E_ENABLE_UPDATE_
141d0 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d 0a 63 6f  DELETE_LIMIT].co
141e0 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
141f0 6e 20 74 68 65 6e 20 74 68 65 20 73 79 6e 74 61  n then the synta
14200 78 20 6f 66 20 74 68 65 20 55 50 44 41 54 45 20  x of the UPDATE 
14210 73 74 61 74 65 6d 65 6e 74 20 69 73 20 65 78 74  statement is ext
14220 65 6e 64 65 64 0a 77 69 74 68 20 6f 70 74 69 6f  ended.with optio
14230 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61 6e 64  nal ORDER BY and
14240 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 73 20 61   LIMIT clauses a
14250 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a  s follows:</p>..
14260 3c 74 63 6c 3e 42 75 62 62 6c 65 44 69 61 67 72  <tcl>BubbleDiagr
14270 61 6d 20 75 70 64 61 74 65 2d 73 74 6d 74 2d 6c  am update-stmt-l
14280 69 6d 69 74 65 64 3c 2f 74 63 6c 3e 0a 0a 3c 70  imited</tcl>..<p
14290 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4c 49  >The optional LI
142a0 4d 49 54 20 63 6c 61 75 73 65 20 63 61 6e 20 62  MIT clause can b
142b0 65 20 75 73 65 64 20 74 6f 20 6c 69 6d 69 74 20  e used to limit 
142c0 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 72 6f  the number of.ro
142d0 77 73 20 6d 6f 64 69 66 65 64 2c 20 61 6e 64 20  ws modifed, and 
142e0 74 68 65 72 65 62 79 20 6c 69 6d 69 74 20 74 68  thereby limit th
142f0 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 74 72  e size of the tr
14300 61 6e 73 61 63 74 69 6f 6e 2e 0a 54 68 65 20 4f  ansaction..The O
14310 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 20 69  RDER BY clause i
14320 73 20 75 73 65 64 20 6f 6e 6c 79 20 74 6f 20 64  s used only to d
14330 65 74 65 72 6d 69 6e 65 20 77 68 69 63 68 20 72  etermine which r
14340 6f 77 73 20 66 61 6c 6c 0a 77 69 74 68 69 6e 20  ows fall.within 
14350 74 68 65 20 4c 49 4d 49 54 2e 20 20 54 68 65 20  the LIMIT.  The 
14360 6f 72 64 65 72 20 69 6e 20 77 68 69 63 68 20 72  order in which r
14370 6f 77 73 20 61 72 65 20 6d 6f 64 69 66 69 65 64  ows are modified
14380 20 69 73 20 61 72 62 69 74 72 61 72 79 0a 61 6e   is arbitrary.an
14390 64 20 69 73 20 6e 6f 74 20 64 65 74 65 72 6d 69  d is not determi
143a0 6e 65 64 20 62 79 20 74 68 65 20 4f 52 44 45 52  ned by the ORDER
143b0 20 42 59 20 63 6c 61 75 73 65 2e 3c 2f 70 3e 0a   BY clause.</p>.
143c0 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
143d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
143e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
143f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14400 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14410 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 56 41  #####.Section VA
14420 43 55 55 4d 20 76 61 63 75 75 6d 20 56 41 43 55  CUUM vacuum VACU
14430 55 4d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61  UM..BubbleDiagra
14440 6d 20 76 61 63 75 75 6d 2d 73 74 6d 74 20 31 0a  m vacuum-stmt 1.
14450 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 57 68 65 6e 20  </tcl>..<p>When 
14460 61 6e 20 6f 62 6a 65 63 74 20 28 74 61 62 6c 65  an object (table
14470 2c 20 69 6e 64 65 78 2c 20 6f 72 20 74 72 69 67  , index, or trig
14480 67 65 72 29 20 69 73 20 64 72 6f 70 70 65 64 20  ger) is dropped 
14490 66 72 6f 6d 20 74 68 65 20 0a 64 61 74 61 62 61  from the .databa
144a0 73 65 2c 20 69 74 20 6c 65 61 76 65 73 20 62 65  se, it leaves be
144b0 68 69 6e 64 20 65 6d 70 74 79 20 73 70 61 63 65  hind empty space
144c0 2e 20 20 54 68 69 73 20 6d 61 6b 65 73 20 74 68  .  This makes th
144d0 65 20 64 61 74 61 62 61 73 65 20 0a 66 69 6c 65  e database .file
144e0 20 6c 61 72 67 65 72 20 74 68 61 6e 20 69 74 20   larger than it 
144f0 6e 65 65 64 73 20 74 6f 20 62 65 2c 20 62 75 74  needs to be, but
14500 20 63 61 6e 20 73 70 65 65 64 20 75 70 20 69 6e   can speed up in
14510 73 65 72 74 73 2e 20 20 49 6e 20 74 69 6d 65 20  serts.  In time 
14520 0a 69 6e 73 65 72 74 73 20 61 6e 64 20 64 65 6c  .inserts and del
14530 65 74 65 73 20 63 61 6e 20 6c 65 61 76 65 20 74  etes can leave t
14540 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
14550 20 73 74 72 75 63 74 75 72 65 20 66 72 61 67 6d   structure fragm
14560 65 6e 74 65 64 2c 20 0a 77 68 69 63 68 20 73 6c  ented, .which sl
14570 6f 77 73 20 64 6f 77 6e 20 64 69 73 6b 20 61 63  ows down disk ac
14580 63 65 73 73 20 74 6f 20 74 68 65 20 64 61 74 61  cess to the data
14590 62 61 73 65 20 63 6f 6e 74 65 6e 74 73 2e 3c 2f  base contents.</
145a0 70 3e 0a 0a 3c 70 3e 54 68 65 20 56 41 43 55 55  p>..<p>The VACUU
145b0 4d 20 63 6f 6d 6d 61 6e 64 20 63 6c 65 61 6e 73  M command cleans
145c0 0a 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61  .the main databa
145d0 73 65 20 62 79 20 63 6f 70 79 69 6e 67 20 69 74  se by copying it
145e0 73 20 63 6f 6e 74 65 6e 74 73 20 74 6f 20 61 20  s contents to a 
145f0 74 65 6d 70 6f 72 61 72 79 20 64 61 74 61 62 61  temporary databa
14600 73 65 20 66 69 6c 65 20 61 6e 64 20 0a 72 65 6c  se file and .rel
14610 6f 61 64 69 6e 67 20 74 68 65 20 6f 72 69 67 69  oading the origi
14620 6e 61 6c 20 64 61 74 61 62 61 73 65 20 66 69 6c  nal database fil
14630 65 20 66 72 6f 6d 20 74 68 65 20 63 6f 70 79 2e  e from the copy.
14640 20 20 54 68 69 73 20 65 6c 69 6d 69 6e 61 74 65    This eliminate
14650 73 20 0a 66 72 65 65 20 70 61 67 65 73 2c 20 20  s .free pages,  
14660 61 6c 69 67 6e 73 20 74 61 62 6c 65 20 64 61 74  aligns table dat
14670 61 20 74 6f 20 62 65 20 63 6f 6e 74 69 67 75 6f  a to be contiguo
14680 75 73 2c 20 61 6e 64 20 6f 74 68 65 72 77 69 73  us, and otherwis
14690 65 20 63 6c 65 61 6e 73 20 0a 75 70 20 74 68 65  e cleans .up the
146a0 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 73   database file s
146b0 74 72 75 63 74 75 72 65 2e 3c 2f 70 3e 0a 0a 3c  tructure.</p>..<
146c0 70 3e 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d  p>The VACUUM com
146d0 6d 61 6e 64 20 6d 61 79 20 63 68 61 6e 67 65 20  mand may change 
146e0 74 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 6c 61  the .<a href="la
146f0 6e 67 5f 63 72 65 61 74 65 74 61 62 6c 65 2e 68  ng_createtable.h
14700 74 6d 6c 23 72 6f 77 69 64 22 3e 52 4f 57 49 44  tml#rowid">ROWID
14710 3c 2f 61 3e 20 6f 66 20 65 6e 74 69 72 65 73 20  </a> of entires 
14720 69 6e 20 74 61 62 6c 65 73 20 74 68 61 74 20 64  in tables that d
14730 6f 0a 6e 6f 74 20 68 61 76 65 20 61 6e 20 65 78  o.not have an ex
14740 70 6c 69 63 69 74 20 49 4e 54 45 47 45 52 20 50  plicit INTEGER P
14750 52 49 4d 41 52 59 20 4b 45 59 2e 3c 2f 70 3e 0a  RIMARY KEY.</p>.
14760 0a 3c 70 3e 56 41 43 55 55 4d 20 6f 6e 6c 79 20  .<p>VACUUM only 
14770 77 6f 72 6b 73 20 6f 6e 20 74 68 65 20 6d 61 69  works on the mai
14780 6e 20 64 61 74 61 62 61 73 65 2e 0a 49 74 20 69  n database..It i
14790 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74  s not possible t
147a0 6f 20 56 41 43 55 55 4d 20 61 6e 20 61 74 74 61  o VACUUM an atta
147b0 63 68 65 64 20 64 61 74 61 62 61 73 65 20 66 69  ched database fi
147c0 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  le.</p>..<p>The 
147d0 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 77  VACUUM command w
147e0 69 6c 6c 20 66 61 69 6c 20 69 66 20 74 68 65 72  ill fail if ther
147f0 65 20 69 73 20 61 6e 20 61 63 74 69 76 65 20 74  e is an active t
14800 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 54 68 65 20  ransaction..The 
14810 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 69  VACUUM command i
14820 73 20 61 20 6e 6f 2d 6f 70 20 66 6f 72 20 69 6e  s a no-op for in
14830 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65  -memory database
14840 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 73 20 6f 66  s.</p>..<p>As of
14850 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20   SQLite version 
14860 33 2e 31 2c 20 61 6e 20 61 6c 74 65 72 6e 61 74  3.1, an alternat
14870 69 76 65 20 74 6f 20 75 73 69 6e 67 20 74 68 65  ive to using the
14880 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 0a   VACUUM command.
14890 69 73 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 6d  is auto-vacuum m
148a0 6f 64 65 2c 20 65 6e 61 62 6c 65 64 20 75 73 69  ode, enabled usi
148b0 6e 67 20 74 68 65 20 0a 5b 61 75 74 6f 5f 76 61  ng the .[auto_va
148c0 63 75 75 6d 5d 20 70 72 61 67 6d 61 2e 20 20 57  cuum] pragma.  W
148d0 68 65 6e 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d  hen [auto_vacuum
148e0 5d 20 69 73 20 65 6e 61 62 6c 65 64 20 66 6f 72  ] is enabled for
148f0 20 61 20 64 61 74 61 62 61 73 65 2c 20 0a 6c 61   a database, .la
14900 72 67 65 20 64 65 6c 65 74 65 73 20 63 61 75 73  rge deletes caus
14910 65 0a 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68  e.the size of th
14920 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
14930 74 6f 20 73 68 72 69 6e 6b 2e 20 20 48 6f 77 65  to shrink.  Howe
14940 76 65 72 2c 20 5b 61 75 74 6f 5f 76 61 63 75 75  ver, [auto_vacuu
14950 6d 5d 0a 61 6c 73 6f 20 63 61 75 73 65 73 20 65  m].also causes e
14960 78 63 65 73 73 20 66 72 61 67 6d 65 6e 74 61 74  xcess fragmentat
14970 69 6f 6e 20 6f 66 20 74 68 65 20 64 61 74 61 62  ion of the datab
14980 61 73 65 20 66 69 6c 65 2e 20 20 41 6e 64 20 5b  ase file.  And [
14990 61 75 74 6f 5f 76 61 63 75 75 6d 5d 0a 64 6f 65  auto_vacuum].doe
149a0 73 20 6e 6f 74 20 63 6f 6d 70 61 63 74 20 70 61  s not compact pa
149b0 72 74 69 61 6c 6c 79 20 66 69 6c 6c 65 64 20 70  rtially filled p
149c0 61 67 65 73 20 6f 66 20 74 68 65 20 64 61 74 61  ages of the data
149d0 62 61 73 65 20 61 73 20 56 41 43 55 55 4d 0a 64  base as VACUUM.d
149e0 6f 65 73 2e 0a 3c 2f 70 3e 0a 3c 74 63 6c 3e 0a  oes..</p>.<tcl>.
149f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14a00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14a10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14a20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14a30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
14a40 65 63 74 69 6f 6e 20 7b 49 4e 44 45 58 45 44 20  ection {INDEXED 
14a50 42 59 7d 20 69 6e 64 65 78 65 64 62 79 20 7b 7b  BY} indexedby {{
14a60 49 4e 44 45 58 45 44 20 42 59 7d 20 7b 4e 4f 54  INDEXED BY} {NOT
14a70 20 49 4e 44 45 58 45 44 7d 7d 0a 0a 3c 2f 74 63   INDEXED}}..</tc
14a80 6c 3e 0a 3c 70 3e 54 68 65 20 49 4e 44 45 58 45  l>.<p>The INDEXE
14a90 44 20 42 59 20 70 68 72 61 73 65 20 69 73 20 61  D BY phrase is a
14aa0 20 53 51 4c 20 65 78 74 65 6e 73 69 6f 6e 20 66   SQL extension f
14ab0 6f 75 6e 64 20 6f 6e 6c 79 20 69 6e 20 53 51 4c  ound only in SQL
14ac0 69 74 65 20 77 68 69 63 68 20 63 61 6e 0a 62 65  ite which can.be
14ad0 20 75 73 65 64 20 74 6f 20 76 65 72 69 66 79 20   used to verify 
14ae0 74 68 61 74 20 74 68 65 20 63 6f 72 72 65 63 74  that the correct
14af0 20 69 6e 64 69 63 65 73 20 61 72 65 20 62 65 69   indices are bei
14b00 6e 67 20 75 73 65 64 20 6f 6e 20 61 20 5b 44 45  ng used on a [DE
14b10 4c 45 54 45 5d 2c 0a 5b 53 45 4c 45 43 54 5d 2c  LETE],.[SELECT],
14b20 20 6f 72 20 5b 55 50 44 41 54 45 5d 20 73 74 61   or [UPDATE] sta
14b30 74 65 6d 65 6e 74 2e 0a 54 68 65 20 49 4e 44 45  tement..The INDE
14b40 58 45 44 20 42 59 20 70 68 72 61 73 65 20 61 6c  XED BY phrase al
14b50 77 61 79 73 20 66 6f 6c 6c 6f 77 73 20 74 68 65  ways follows the
14b60 20 6e 61 6d 65 20 6f 66 20 61 20 74 61 62 6c 65   name of a table
14b70 20 74 68 61 74 20 53 51 4c 69 74 65 20 77 69 6c   that SQLite wil
14b80 6c 0a 62 65 20 72 65 61 64 69 6e 67 2e 20 20 54  l.be reading.  T
14b90 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 70 68  he INDEXED BY ph
14ba0 72 61 73 65 20 63 61 6e 20 62 65 20 73 65 65 6e  rase can be seen
14bb0 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e   in the followin
14bc0 67 20 73 79 6e 74 61 78 0a 64 69 61 67 72 61 6d  g syntax.diagram
14bd0 73 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 42 75  s:</p>..<tcl>.Bu
14be0 62 62 6c 65 44 69 61 67 72 61 6d 20 71 75 61 6c  bbleDiagram qual
14bf0 69 66 69 65 64 2d 74 61 62 6c 65 2d 6e 61 6d 65  ified-table-name
14c00 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 73  .BubbleDiagram s
14c10 69 6e 67 6c 65 2d 73 6f 75 72 63 65 0a 3c 2f 74  ingle-source.</t
14c20 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 22 49 4e 44  cl>..<p>The "IND
14c30 45 58 45 44 20 42 59 20 69 6e 64 65 78 2d 6e 61  EXED BY index-na
14c40 6d 65 22 20 63 6c 61 75 73 65 20 73 70 65 63 69  me" clause speci
14c50 66 69 65 73 20 74 68 61 74 20 74 68 65 20 6e 61  fies that the na
14c60 6d 65 64 20 69 6e 64 65 78 0a 6d 75 73 74 20 62  med index.must b
14c70 65 20 75 73 65 64 20 69 6e 20 6f 72 64 65 72 20  e used in order 
14c80 74 6f 20 6c 6f 6f 6b 20 75 70 20 76 61 6c 75 65  to look up value
14c90 73 20 6f 6e 20 74 68 65 20 70 72 65 63 65 65 64  s on the preceed
14ca0 69 6e 67 20 74 61 62 6c 65 2e 0a 49 66 20 69 6e  ing table..If in
14cb0 64 65 78 2d 6e 61 6d 65 20 64 6f 65 73 20 6e 6f  dex-name does no
14cc0 74 20 65 78 69 73 74 20 6f 72 20 63 61 6e 6e 6f  t exist or canno
14cd0 74 20 62 65 20 75 73 65 64 20 66 6f 72 20 74 68  t be used for th
14ce0 65 20 71 75 65 72 79 2c 20 74 68 65 6e 0a 74 68  e query, then.th
14cf0 65 20 70 72 65 70 61 72 61 74 69 6f 6e 20 6f 66  e preparation of
14d00 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   the SQL stateme
14d10 6e 74 20 66 61 69 6c 73 2e 0a 54 68 65 20 22 4e  nt fails..The "N
14d20 4f 54 20 49 4e 44 45 58 45 44 22 20 63 6c 61 75  OT INDEXED" clau
14d30 73 65 20 73 70 65 63 69 66 69 65 73 20 74 68 61  se specifies tha
14d40 74 20 6e 6f 20 69 6e 64 65 78 20 73 68 61 6c 6c  t no index shall
14d50 20 62 65 20 75 73 65 64 20 77 68 65 6e 0a 61 63   be used when.ac
14d60 63 65 73 73 69 6e 67 20 74 68 65 20 70 72 65 63  cessing the prec
14d70 65 65 64 69 6e 67 20 74 61 62 6c 65 2c 20 69 6e  eeding table, in
14d80 63 6c 75 64 69 6e 67 20 69 6d 70 6c 69 65 64 20  cluding implied 
14d90 69 6e 64 69 63 65 73 20 63 72 65 61 74 65 20 62  indices create b
14da0 79 0a 55 4e 49 51 55 45 20 61 6e 64 20 50 52 49  y.UNIQUE and PRI
14db0 4d 41 52 59 20 4b 45 59 20 63 6f 6e 73 74 72 61  MARY KEY constra
14dc0 69 6e 74 73 2e 20 20 48 6f 77 65 76 65 72 2c 20  ints.  However, 
14dd0 74 68 65 20 49 4e 54 45 47 45 52 20 50 52 49 4d  the INTEGER PRIM
14de0 41 52 59 20 4b 45 59 0a 63 61 6e 20 73 74 69 6c  ARY KEY.can stil
14df0 6c 20 62 65 20 75 73 65 64 20 74 6f 20 6c 6f 6f  l be used to loo
14e00 6b 20 75 70 20 65 6e 74 72 69 65 73 20 65 76 65  k up entries eve
14e10 6e 20 77 68 65 6e 20 22 4e 4f 54 20 49 4e 44 45  n when "NOT INDE
14e20 58 45 44 22 20 69 73 20 73 70 65 63 69 66 69 65  XED" is specifie
14e30 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53 6f 6d 65 20  d.</p>..<p>Some 
14e40 53 51 4c 20 64 61 74 61 62 61 73 65 20 65 6e 67  SQL database eng
14e50 69 6e 65 73 20 70 72 6f 76 69 64 65 20 6e 6f 6e  ines provide non
14e60 2d 73 74 61 6e 64 61 72 64 20 22 68 69 6e 74 22  -standard "hint"
14e70 20 6d 65 63 68 61 6e 69 73 6d 73 20 77 68 69 63   mechanisms whic
14e80 68 0a 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  h.can be used to
14e90 20 67 69 76 65 20 74 68 65 20 71 75 65 72 79 20   give the query 
14ea0 6f 70 74 69 6d 69 7a 65 72 20 63 6c 75 65 73 20  optimizer clues 
14eb0 61 62 6f 75 74 20 77 68 61 74 20 69 6e 64 69 63  about what indic
14ec0 65 73 20 69 74 20 73 68 6f 75 6c 64 0a 75 73 65  es it should.use
14ed0 20 66 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61   for a particula
14ee0 72 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68  r statement.  Th
14ef0 65 20 49 4e 44 45 58 20 42 59 20 63 6c 61 75 73  e INDEX BY claus
14f00 65 20 6f 66 20 53 51 4c 69 74 65 20 69 73 20 0a  e of SQLite is .
14f10 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 61 20 68  <em>not</em> a h
14f20 69 6e 74 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d  inting mechanism
14f30 20 61 6e 64 20 69 74 20 73 68 6f 75 6c 64 20 6e   and it should n
14f40 6f 74 20 62 65 20 75 73 65 64 20 61 73 20 73 75  ot be used as su
14f50 63 68 2e 0a 54 68 65 20 49 4e 44 45 58 45 44 20  ch..The INDEXED 
14f60 42 59 20 63 6c 61 75 73 65 20 64 6f 65 73 20 6e  BY clause does n
14f70 6f 74 20 67 69 76 65 20 74 68 65 20 6f 70 74 69  ot give the opti
14f80 6d 69 7a 65 72 20 68 69 6e 74 73 20 61 62 6f 75  mizer hints abou
14f90 74 20 77 68 69 63 68 20 69 6e 64 65 78 0a 74 6f  t which index.to
14fa0 20 75 73 65 3b 20 69 74 20 67 69 76 65 73 20 74   use; it gives t
14fb0 68 65 20 6f 70 74 69 6d 69 7a 65 72 20 61 20 72  he optimizer a r
14fc0 65 71 75 69 72 65 6d 65 6e 74 20 6f 66 20 77 68  equirement of wh
14fd0 69 63 68 20 69 6e 64 65 78 20 74 6f 20 75 73 65  ich index to use
14fe0 2e 0a 49 66 20 74 68 65 20 71 75 65 72 79 20 6f  ..If the query o
14ff0 70 74 69 6d 69 7a 65 72 20 69 73 20 75 6e 61 62  ptimizer is unab
15000 6c 65 20 74 6f 20 75 73 65 20 74 68 65 20 69 6e  le to use the in
15010 64 65 78 20 73 70 65 63 69 66 69 65 64 20 62 79  dex specified by
15020 20 74 68 65 0a 49 4e 44 45 58 20 42 59 20 63 6c   the.INDEX BY cl
15030 61 75 73 65 2c 20 74 68 65 6e 20 74 68 65 20 71  ause, then the q
15040 75 65 72 79 20 77 69 6c 6c 20 66 61 69 6c 20 77  uery will fail w
15050 69 74 68 20 61 6e 20 65 72 72 6f 72 2e 3c 2f 70  ith an error.</p
15060 3e 0a 0a 3c 70 3e 54 68 65 20 49 4e 44 45 58 45  >..<p>The INDEXE
15070 44 20 42 59 20 63 6c 61 75 73 65 20 69 73 20 3c  D BY clause is <
15080 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 69 6e 74 65  em>not</em> inte
15090 6e 64 65 64 20 66 6f 72 20 75 73 65 20 69 6e 20  nded for use in 
150a0 74 75 6e 69 6e 67 0a 74 68 65 20 70 72 65 66 6f  tuning.the prefo
150b0 72 6d 61 6e 63 65 20 6f 66 20 61 20 71 75 65 72  rmance of a quer
150c0 79 2e 20 20 54 68 65 20 69 6e 74 65 6e 74 20 6f  y.  The intent o
150d0 66 20 74 68 65 20 49 4e 44 45 58 45 44 20 42 59  f the INDEXED BY
150e0 20 63 6c 61 75 73 65 20 69 73 0a 74 6f 20 72 61   clause is.to ra
150f0 69 73 65 20 61 20 72 75 6e 2d 74 69 6d 65 20 65  ise a run-time e
15100 72 72 6f 72 20 69 66 20 61 20 73 63 68 65 6d 61  rror if a schema
15110 20 63 68 61 6e 67 65 2c 20 73 75 63 68 20 61 73   change, such as
15120 20 64 72 6f 70 70 69 6e 67 20 6f 72 0a 63 72 65   dropping or.cre
15130 61 74 69 6e 67 20 61 6e 20 69 6e 64 65 78 2c 20  ating an index, 
15140 63 61 75 73 65 73 20 74 68 65 20 71 75 65 72 79  causes the query
15150 20 70 6c 61 6e 20 66 6f 72 20 61 20 74 69 6d 65   plan for a time
15160 2d 73 65 6e 73 69 74 69 76 65 20 71 75 65 72 79  -sensitive query
15170 0a 74 6f 20 63 68 61 6e 67 65 2e 20 20 54 68 65  .to change.  The
15180 20 49 4e 44 45 58 45 44 20 42 59 20 63 6c 61 75   INDEXED BY clau
15190 73 65 20 69 73 20 64 65 73 69 67 6e 65 64 20 74  se is designed t
151a0 6f 20 68 65 6c 70 20 64 65 74 65 63 74 0a 75 6e  o help detect.un
151b0 64 65 73 69 72 61 62 6c 65 20 71 75 65 72 79 20  desirable query 
151c0 70 6c 61 6e 20 63 68 61 6e 67 65 73 20 64 75 72  plan changes dur
151d0 69 6e 67 20 72 65 67 72 65 73 73 69 6f 6e 20 74  ing regression t
151e0 65 73 74 69 6e 67 2e 0a 44 65 76 65 6c 6f 70 65  esting..Develope
151f0 72 73 20 61 72 65 20 61 64 6d 6f 6e 69 73 68 65  rs are admonishe
15200 64 20 74 6f 20 6f 6d 69 74 20 61 6c 6c 20 75 73  d to omit all us
15210 65 20 6f 66 20 49 4e 44 45 58 45 44 20 42 59 20  e of INDEXED BY 
15220 64 75 72 69 6e 67 0a 61 70 70 6c 69 63 61 74 69  during.applicati
15230 6f 6e 20 64 65 73 69 67 6e 2c 20 69 6d 70 6c 65  on design, imple
15240 6d 65 6e 74 61 74 69 6f 6e 2c 20 74 65 73 74 69  mentation, testi
15250 6e 67 2c 20 61 6e 64 20 74 75 6e 69 6e 67 2e 20  ng, and tuning. 
15260 20 49 66 0a 49 4e 44 45 58 45 44 20 42 59 20 69   If.INDEXED BY i
15270 73 20 74 6f 20 62 65 20 75 73 65 64 20 61 74 20  s to be used at 
15280 61 6c 6c 2c 20 69 74 20 73 68 6f 75 6c 64 20 62  all, it should b
15290 65 20 69 6e 73 65 72 74 65 64 20 61 74 20 74 68  e inserted at th
152a0 65 20 76 65 72 79 0a 65 6e 64 20 6f 66 20 74 68  e very.end of th
152b0 65 20 64 65 76 65 6c 6f 70 6d 65 6e 74 20 70 72  e development pr
152c0 6f 63 65 73 73 20 77 68 65 6e 20 22 6c 6f 63 6b  ocess when "lock
152d0 69 6e 67 20 64 6f 77 6e 22 20 61 20 64 65 73 69  ing down" a desi
152e0 67 6e 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  gn.</p>..<tcl>.#
152f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15300 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15310 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15320 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15330 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 41  ############.# A
15340 20 6c 69 73 74 20 6f 66 20 6b 65 79 77 6f 72 64   list of keyword
15350 73 2e 20 20 41 20 61 73 74 65 72 69 73 6b 20 6f  s.  A asterisk o
15360 63 63 75 72 73 20 61 66 74 65 72 20 74 68 65 20  ccurs after the 
15370 6b 65 79 77 6f 72 64 20 69 66 20 69 74 20 69 73  keyword if it is
15380 20 6f 6e 0a 23 20 74 68 65 20 66 61 6c 6c 62 61   on.# the fallba
15390 63 6b 20 6c 69 73 74 2e 0a 23 0a 73 65 74 20 6b  ck list..#.set k
153a0 65 79 77 6f 72 64 5f 6c 69 73 74 20 5b 6c 73 6f  eyword_list [lso
153b0 72 74 20 7b 0a 20 20 20 41 42 4f 52 54 2a 0a 20  rt {.   ABORT*. 
153c0 20 20 41 44 44 0a 20 20 20 41 46 54 45 52 2a 0a    ADD.   AFTER*.
153d0 20 20 20 41 4c 4c 0a 20 20 20 41 4c 54 45 52 0a     ALL.   ALTER.
153e0 20 20 20 41 4e 41 4c 59 5a 45 2a 0a 20 20 20 41     ANALYZE*.   A
153f0 4e 44 0a 20 20 20 41 53 0a 20 20 20 41 53 43 2a  ND.   AS.   ASC*
15400 0a 20 20 20 41 54 54 41 43 48 2a 0a 20 20 20 41  .   ATTACH*.   A
15410 55 54 4f 49 4e 43 52 45 4d 45 4e 54 0a 20 20 20  UTOINCREMENT.   
15420 42 45 46 4f 52 45 2a 0a 20 20 20 42 45 47 49 4e  BEFORE*.   BEGIN
15430 2a 0a 20 20 20 42 45 54 57 45 45 4e 0a 20 20 20  *.   BETWEEN.   
15440 42 59 0a 20 20 20 43 41 53 43 41 44 45 2a 0a 20  BY.   CASCADE*. 
15450 20 20 43 41 53 45 0a 20 20 20 43 41 53 54 2a 0a    CASE.   CAST*.
15460 20 20 20 43 48 45 43 4b 0a 20 20 20 43 4f 4c 4c     CHECK.   COLL
15470 41 54 45 0a 20 20 20 43 4f 4c 55 4d 4e 0a 20 20  ATE.   COLUMN.  
15480 20 43 4f 4d 4d 49 54 0a 20 20 20 43 4f 4e 46 4c   COMMIT.   CONFL
15490 49 43 54 2a 0a 20 20 20 43 4f 4e 53 54 52 41 49  ICT*.   CONSTRAI
154a0 4e 54 0a 20 20 20 43 52 45 41 54 45 0a 20 20 20  NT.   CREATE.   
154b0 43 52 4f 53 53 0a 20 20 20 43 55 52 52 45 4e 54  CROSS.   CURRENT
154c0 5f 44 41 54 45 2a 0a 20 20 20 43 55 52 52 45 4e  _DATE*.   CURREN
154d0 54 5f 54 49 4d 45 2a 0a 20 20 20 43 55 52 52 45  T_TIME*.   CURRE
154e0 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2a 0a 20 20  NT_TIMESTAMP*.  
154f0 20 44 41 54 41 42 41 53 45 2a 0a 20 20 20 44 45   DATABASE*.   DE
15500 46 41 55 4c 54 0a 20 20 20 44 45 46 45 52 52 45  FAULT.   DEFERRE
15510 44 2a 0a 20 20 20 44 45 46 45 52 52 41 42 4c 45  D*.   DEFERRABLE
15520 0a 20 20 20 44 45 4c 45 54 45 0a 20 20 20 44 45  .   DELETE.   DE
15530 53 43 2a 0a 20 20 20 44 45 54 41 43 48 2a 0a 20  SC*.   DETACH*. 
15540 20 20 44 49 53 54 49 4e 43 54 0a 20 20 20 44 52    DISTINCT.   DR
15550 4f 50 0a 20 20 20 45 4e 44 2a 0a 20 20 20 45 41  OP.   END*.   EA
15560 43 48 2a 0a 20 20 20 45 4c 53 45 0a 20 20 20 45  CH*.   ELSE.   E
15570 53 43 41 50 45 0a 20 20 20 45 58 43 45 50 54 0a  SCAPE.   EXCEPT.
15580 20 20 20 45 58 43 4c 55 53 49 56 45 2a 0a 20 20     EXCLUSIVE*.  
15590 20 45 58 49 53 54 53 0a 20 20 20 45 58 50 4c 41   EXISTS.   EXPLA
155a0 49 4e 2a 0a 20 20 20 46 41 49 4c 2a 0a 20 20 20  IN*.   FAIL*.   
155b0 46 4f 52 2a 0a 20 20 20 46 4f 52 45 49 47 4e 0a  FOR*.   FOREIGN.
155c0 20 20 20 46 52 4f 4d 0a 20 20 20 46 55 4c 4c 0a     FROM.   FULL.
155d0 20 20 20 47 4c 4f 42 2a 0a 20 20 20 47 52 4f 55     GLOB*.   GROU
155e0 50 0a 20 20 20 48 41 56 49 4e 47 0a 20 20 20 49  P.   HAVING.   I
155f0 46 2a 0a 20 20 20 49 47 4e 4f 52 45 2a 0a 20 20  F*.   IGNORE*.  
15600 20 49 4d 4d 45 44 49 41 54 45 2a 0a 20 20 20 49   IMMEDIATE*.   I
15610 4e 0a 20 20 20 49 4e 44 45 58 0a 20 20 20 49 4e  N.   INDEX.   IN
15620 44 45 58 45 44 2a 0a 20 20 20 49 4e 49 54 49 41  DEXED*.   INITIA
15630 4c 4c 59 2a 0a 20 20 20 49 4e 4e 45 52 0a 20 20  LLY*.   INNER.  
15640 20 49 4e 53 45 52 54 0a 20 20 20 49 4e 53 54 45   INSERT.   INSTE
15650 41 44 2a 0a 20 20 20 49 4e 54 45 52 53 45 43 54  AD*.   INTERSECT
15660 0a 20 20 20 49 4e 54 4f 0a 20 20 20 49 53 0a 20  .   INTO.   IS. 
15670 20 20 49 53 4e 55 4c 4c 0a 20 20 20 4a 4f 49 4e    ISNULL.   JOIN
15680 0a 20 20 20 4b 45 59 2a 0a 20 20 20 4c 45 46 54  .   KEY*.   LEFT
15690 0a 20 20 20 4c 49 4b 45 2a 0a 20 20 20 4c 49 4d  .   LIKE*.   LIM
156a0 49 54 0a 20 20 20 4d 41 54 43 48 2a 0a 20 20 20  IT.   MATCH*.   
156b0 4e 41 54 55 52 41 4c 0a 20 20 20 4e 4f 54 0a 20  NATURAL.   NOT. 
156c0 20 20 4e 4f 54 4e 55 4c 4c 0a 20 20 20 4e 55 4c    NOTNULL.   NUL
156d0 4c 0a 20 20 20 4f 46 2a 0a 20 20 20 4f 46 46 53  L.   OF*.   OFFS
156e0 45 54 2a 0a 20 20 20 4f 4e 0a 20 20 20 4f 52 0a  ET*.   ON.   OR.
156f0 20 20 20 4f 52 44 45 52 0a 20 20 20 4f 55 54 45     ORDER.   OUTE
15700 52 0a 20 20 20 50 4c 41 4e 2a 0a 20 20 20 50 52  R.   PLAN*.   PR
15710 41 47 4d 41 2a 0a 20 20 20 50 52 49 4d 41 52 59  AGMA*.   PRIMARY
15720 0a 20 20 20 51 55 45 52 59 2a 0a 20 20 20 52 41  .   QUERY*.   RA
15730 49 53 45 2a 0a 20 20 20 52 45 46 45 52 45 4e 43  ISE*.   REFERENC
15740 45 53 0a 20 20 20 52 45 47 45 58 50 0a 20 20 20  ES.   REGEXP.   
15750 52 45 49 4e 44 45 58 2a 0a 20 20 20 52 45 4e 41  REINDEX*.   RENA
15760 4d 45 2a 0a 20 20 20 52 45 50 4c 41 43 45 2a 0a  ME*.   REPLACE*.
15770 20 20 20 52 45 53 54 52 49 43 54 2a 0a 20 20 20     RESTRICT*.   
15780 52 49 47 48 54 0a 20 20 20 52 4f 4c 4c 42 41 43  RIGHT.   ROLLBAC
15790 4b 0a 20 20 20 52 4f 57 2a 0a 20 20 20 53 45 4c  K.   ROW*.   SEL
157a0 45 43 54 0a 20 20 20 53 45 54 0a 20 20 20 54 41  ECT.   SET.   TA
157b0 42 4c 45 0a 20 20 20 54 45 4d 50 2a 0a 20 20 20  BLE.   TEMP*.   
157c0 54 45 4d 50 4f 52 41 52 59 2a 0a 20 20 20 54 48  TEMPORARY*.   TH
157d0 45 4e 0a 20 20 20 54 4f 0a 20 20 20 54 52 41 4e  EN.   TO.   TRAN
157e0 53 41 43 54 49 4f 4e 0a 20 20 20 54 52 49 47 47  SACTION.   TRIGG
157f0 45 52 2a 0a 20 20 20 55 4e 49 4f 4e 0a 20 20 20  ER*.   UNION.   
15800 55 4e 49 51 55 45 0a 20 20 20 55 50 44 41 54 45  UNIQUE.   UPDATE
15810 0a 20 20 20 55 53 49 4e 47 0a 20 20 20 56 41 43  .   USING.   VAC
15820 55 55 4d 2a 0a 20 20 20 56 41 4c 55 45 53 0a 20  UUM*.   VALUES. 
15830 20 20 56 49 45 57 2a 0a 20 20 20 56 49 52 54 55    VIEW*.   VIRTU
15840 41 4c 2a 0a 20 20 20 57 48 45 4e 0a 20 20 20 57  AL*.   WHEN.   W
15850 48 45 52 45 0a 7d 5d 0a 0a 68 64 5f 70 75 74 73  HERE.}]..hd_puts
15860 20 7b 3c 44 49 56 20 63 6c 61 73 73 3d 22 70 64   {<DIV class="pd
15870 66 5f 73 65 63 74 69 6f 6e 22 3e 7d 0a 53 65 63  f_section">}.Sec
15880 74 69 6f 6e 20 7b 53 51 4c 69 74 65 20 4b 65 79  tion {SQLite Key
15890 77 6f 72 64 73 7d 20 6b 65 79 77 6f 72 64 73 20  words} keywords 
158a0 7b 7b 53 51 4c 20 6b 65 79 77 6f 72 64 7d 20 7b  {{SQL keyword} {
158b0 53 51 4c 20 6b 65 79 77 6f 72 64 73 7d 7d 0a 68  SQL keywords}}.h
158c0 64 5f 70 75 74 73 20 7b 3c 2f 44 49 56 3e 7d 0a  d_puts {</DIV>}.
158d0 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 53  </tcl>..<p>The S
158e0 51 4c 20 73 74 61 6e 64 61 72 64 20 73 70 65 63  QL standard spec
158f0 69 66 69 65 73 20 61 20 68 75 67 65 20 6e 75 6d  ifies a huge num
15900 62 65 72 20 6f 66 20 6b 65 79 77 6f 72 64 73 20  ber of keywords 
15910 77 68 69 63 68 20 6d 61 79 20 6e 6f 74 0a 62 65  which may not.be
15920 20 75 73 65 64 20 61 73 20 74 68 65 20 6e 61 6d   used as the nam
15930 65 73 20 6f 66 20 74 61 62 6c 65 73 2c 20 69 6e  es of tables, in
15940 64 69 63 65 73 2c 20 63 6f 6c 75 6d 6e 73 2c 20  dices, columns, 
15950 64 61 74 61 62 61 73 65 73 2c 20 75 73 65 72 2d  databases, user-
15960 64 65 66 69 6e 65 64 0a 66 75 6e 63 74 69 6f 6e  defined.function
15970 73 2c 20 63 6f 6c 6c 61 74 69 6f 6e 73 2c 20 76  s, collations, v
15980 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64  irtual table mod
15990 75 6c 65 73 2c 20 6f 72 20 61 6e 79 20 6f 74 68  ules, or any oth
159a0 65 72 20 6e 61 6d 65 64 20 6f 62 6a 65 63 74 2e  er named object.
159b0 0a 54 68 65 20 6c 69 73 74 20 6f 66 20 6b 65 79  .The list of key
159c0 77 6f 72 64 73 20 69 73 20 73 6f 20 6c 6f 6e 67  words is so long
159d0 20 74 68 61 74 20 66 65 77 20 70 65 6f 70 6c 65   that few people
159e0 20 63 61 6e 20 72 65 6d 65 6d 62 65 72 20 74 68   can remember th
159f0 65 6d 20 61 6c 6c 2e 0a 46 6f 72 20 6d 6f 73 74  em all..For most
15a00 20 53 51 4c 20 63 6f 64 65 2c 20 79 6f 75 72 20   SQL code, your 
15a10 73 61 66 65 73 74 20 62 65 74 20 69 73 20 74 6f  safest bet is to
15a20 20 6e 65 76 65 72 20 75 73 65 20 61 6e 79 20 45   never use any E
15a30 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61 67 65 0a  nglish language.
15a40 77 6f 72 64 20 61 73 20 74 68 65 20 6e 61 6d 65  word as the name
15a50 20 6f 66 20 61 20 75 73 65 72 2d 64 65 66 69 6e   of a user-defin
15a60 65 64 20 6f 62 6a 65 63 74 2e 3c 2f 70 3e 0a 0a  ed object.</p>..
15a70 3c 70 3e 49 66 20 79 6f 75 20 77 61 6e 74 20 74  <p>If you want t
15a80 6f 20 75 73 65 20 61 20 6b 65 79 77 6f 72 64 20  o use a keyword 
15a90 61 73 20 61 20 6e 61 6d 65 2c 20 79 6f 75 20 6e  as a name, you n
15aa0 65 65 64 20 74 6f 20 71 75 6f 74 65 20 69 74 2e  eed to quote it.
15ab0 20 20 54 68 65 72 65 0a 61 72 65 20 74 68 72 65    There.are thre
15ac0 65 20 77 61 79 73 20 6f 66 20 71 75 6f 74 69 6e  e ways of quotin
15ad0 67 20 6b 65 79 77 6f 72 64 73 20 69 6e 20 53 51  g keywords in SQ
15ae0 4c 69 74 65 3a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 3c  Lite:</p>..<p>.<
15af0 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62  blockquote>.<tab
15b00 6c 65 3e 0a 3c 74 72 3e 09 3c 74 64 20 76 61 6c  le>.<tr>.<td val
15b10 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 27 6b 65  ign="top"><b>'ke
15b20 79 77 6f 72 64 27 3c 2f 62 3e 3c 2f 74 64 3e 3c  yword'</b></td><
15b30 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f  td width="20"></
15b40 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65 79 77 6f  td>..<td>A keywo
15b50 72 64 20 69 6e 20 73 69 6e 67 6c 65 20 71 75 6f  rd in single quo
15b60 74 65 73 20 69 73 20 69 6e 74 65 72 70 72 65 74  tes is interpret
15b70 65 64 20 61 73 20 61 20 6c 69 74 65 72 61 6c 20  ed as a literal 
15b80 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 69  string.        i
15b90 66 20 69 74 20 6f 63 63 75 72 73 20 69 6e 20 61  f it occurs in a
15ba0 20 63 6f 6e 74 65 78 74 20 77 68 65 72 65 20 61   context where a
15bb0 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 20   string literal 
15bc0 69 73 20 61 6c 6c 6f 77 65 64 2c 20 6f 74 68 65  is allowed, othe
15bd0 72 77 69 73 65 0a 09 69 74 20 69 73 20 75 6e 64  rwise..it is und
15be0 65 72 73 74 6f 6f 64 20 61 73 20 61 6e 20 69 64  erstood as an id
15bf0 65 6e 74 69 66 69 65 72 2e 3c 2f 74 64 3e 3c 2f  entifier.</td></
15c00 74 72 3e 0a 3c 74 72 3e 09 3c 74 64 20 76 61 6c  tr>.<tr>.<td val
15c10 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 22 6b 65  ign="top"><b>"ke
15c20 79 77 6f 72 64 22 3c 2f 62 3e 3c 2f 74 64 3e 3c  yword"</b></td><
15c30 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20  td></td>..<td>A 
15c40 6b 65 79 77 6f 72 64 20 69 6e 20 64 6f 75 62 6c  keyword in doubl
15c50 65 2d 71 75 6f 74 65 73 20 69 73 20 69 6e 74 65  e-quotes is inte
15c60 72 70 72 65 74 65 64 20 61 73 20 61 6e 20 69 64  rpreted as an id
15c70 65 6e 74 69 66 69 65 72 20 69 66 0a 20 20 20 20  entifier if.    
15c80 20 20 20 20 69 74 20 6d 61 74 63 68 65 73 20 61      it matches a
15c90 20 6b 6e 6f 77 6e 20 69 64 65 6e 74 69 66 69 65   known identifie
15ca0 72 2e 20 20 4f 74 68 65 72 77 69 73 65 20 69 74  r.  Otherwise it
15cb0 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20   is interpreted 
15cc0 61 73 20 61 0a 20 20 20 20 20 20 20 20 73 74 72  as a.        str
15cd0 69 6e 67 20 6c 69 74 65 72 61 6c 2e 3c 2f 74 64  ing literal.</td
15ce0 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 09 3c 74 64 20  ></tr>.<tr>.<td 
15cf0 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e  valign="top"><b>
15d00 26 23 39 31 3b 6b 65 79 77 6f 72 64 26 23 39 33  &#91;keyword&#93
15d10 3b 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 3c 2f  ;</b></td><td></
15d20 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65 79 77 6f  td>..<td>A keywo
15d30 72 64 20 65 6e 63 6c 6f 73 65 64 20 69 6e 20 73  rd enclosed in s
15d40 71 75 61 72 65 20 62 72 61 63 6b 65 74 73 20 69  quare brackets i
15d50 73 20 61 6c 77 61 79 73 20 75 6e 64 65 72 73 74  s always underst
15d60 6f 6f 64 20 61 73 0a 20 20 20 20 20 20 20 20 61  ood as.        a
15d70 6e 20 69 64 65 6e 74 69 66 69 65 72 2e 20 20 54  n identifier.  T
15d80 68 69 73 20 69 73 20 6e 6f 74 20 73 74 61 6e 64  his is not stand
15d90 61 72 64 20 53 51 4c 2e 20 20 54 68 69 73 20 71  ard SQL.  This q
15da0 75 6f 74 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d  uoting mechanism
15db0 0a 20 20 20 20 20 20 20 20 69 73 20 75 73 65 64  .        is used
15dc0 20 62 79 20 4d 53 20 41 63 63 65 73 73 20 61 6e   by MS Access an
15dd0 64 20 53 51 4c 20 53 65 72 76 65 72 20 61 6e 64  d SQL Server and
15de0 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20   is included in 
15df0 53 51 4c 69 74 65 20 66 6f 72 0a 20 20 20 20 20  SQLite for.     
15e00 20 20 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79     compatibility
15e10 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 2f 74 61  .</td></tr>.</ta
15e20 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  ble>.</blockquot
15e30 65 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 51 75 6f 74  e>.</p>..<p>Quot
15e40 65 64 20 6b 65 79 77 6f 72 64 73 20 61 72 65 20  ed keywords are 
15e50 75 6e 61 65 73 74 68 65 74 69 63 2e 0a 54 6f 20  unaesthetic..To 
15e60 68 65 6c 70 20 79 6f 75 20 61 76 6f 69 64 20 74  help you avoid t
15e70 68 65 6d 2c 20 53 51 4c 69 74 65 20 61 6c 6c 6f  hem, SQLite allo
15e80 77 73 20 6d 61 6e 79 20 6b 65 79 77 6f 72 64 73  ws many keywords
15e90 20 74 6f 20 62 65 20 75 73 65 64 20 75 6e 71 75   to be used unqu
15ea0 6f 74 65 64 0a 61 73 20 74 68 65 20 6e 61 6d 65  oted.as the name
15eb0 73 20 6f 66 20 64 61 74 61 62 61 73 65 73 2c 20  s of databases, 
15ec0 74 61 62 6c 65 73 2c 20 69 6e 64 69 63 65 73 2c  tables, indices,
15ed0 20 74 72 69 67 67 65 72 73 2c 20 76 69 65 77 73   triggers, views
15ee0 2c 20 63 6f 6c 75 6d 6e 73 2c 0a 75 73 65 72 2d  , columns,.user-
15ef0 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e  defined function
15f00 73 2c 20 63 6f 6c 6c 61 74 69 6f 6e 73 2c 20 61  s, collations, a
15f10 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
15f20 73 2c 20 61 6e 64 20 76 69 72 74 75 61 6c 0a 66  s, and virtual.f
15f30 75 6e 63 74 69 6f 6e 20 6d 6f 64 75 6c 65 73 2e  unction modules.
15f40 0a 49 6e 20 74 68 65 20 6c 69 73 74 20 6f 66 20  .In the list of 
15f50 6b 65 79 77 6f 72 64 73 20 74 68 61 74 20 66 6f  keywords that fo
15f60 6c 6c 6f 77 73 2c 20 74 68 6f 73 65 20 74 68 61  llows, those tha
15f70 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73  t can be used as
15f80 20 69 64 65 6e 74 69 66 69 65 72 73 0a 61 72 65   identifiers.are
15f90 20 73 68 6f 77 6e 20 69 6e 20 61 6e 20 69 74 61   shown in an ita
15fa0 6c 69 63 20 66 6f 6e 74 2e 20 20 4b 65 79 77 6f  lic font.  Keywo
15fb0 72 64 73 20 74 68 61 74 20 6d 75 73 74 20 62 65  rds that must be
15fc0 20 71 75 6f 74 65 64 20 69 6e 20 6f 72 64 65 72   quoted in order
15fd0 20 74 6f 20 62 65 0a 75 73 65 64 20 61 73 20 69   to be.used as i
15fe0 64 65 6e 74 69 66 69 65 72 73 20 61 72 65 20 73  dentifiers are s
15ff0 68 6f 77 6e 20 69 6e 20 62 6f 6c 64 2e 3c 2f 70  hown in bold.</p
16000 3e 0a 0a 3c 70 3e 0a 53 51 4c 69 74 65 20 61 64  >..<p>.SQLite ad
16010 64 73 20 6e 65 77 20 6b 65 79 77 6f 72 64 73 20  ds new keywords 
16020 66 72 6f 6d 20 74 69 6d 65 20 74 6f 20 74 69 6d  from time to tim
16030 65 20 77 68 65 6e 20 69 74 20 74 61 6b 65 73 20  e when it takes 
16040 6f 6e 20 6e 65 77 20 66 65 61 74 75 72 65 73 2e  on new features.
16050 0a 53 6f 20 74 6f 20 70 72 65 76 65 6e 74 20 79  .So to prevent y
16060 6f 75 72 20 63 6f 64 65 20 66 72 6f 6d 20 62 65  our code from be
16070 69 6e 67 20 62 72 6f 6b 65 6e 20 62 79 20 66 75  ing broken by fu
16080 74 75 72 65 20 65 6e 68 61 6e 63 65 6d 65 6e 74  ture enhancement
16090 73 2c 20 79 6f 75 20 73 68 6f 75 6c 64 0a 6e 6f  s, you should.no
160a0 72 6d 61 6c 6c 79 20 71 75 6f 74 65 20 61 6e 79  rmally quote any
160b0 20 69 6e 64 65 6e 74 69 66 69 65 72 20 74 68 61   indentifier tha
160c0 74 20 69 73 20 61 6e 20 45 6e 67 6c 69 73 68 20  t is an English 
160d0 6c 61 6e 67 75 61 67 65 20 77 6f 72 64 2c 20 65  language word, e
160e0 76 65 6e 20 69 66 0a 79 6f 75 20 64 6f 20 6e 6f  ven if.you do no
160f0 74 20 68 61 76 65 20 74 6f 2e 0a 3c 2f 70 3e 0a  t have to..</p>.
16100 0a 3c 70 3e 0a 54 68 65 20 66 6f 6c 6c 6f 77 69  .<p>.The followi
16110 6e 67 20 61 72 65 20 74 68 65 20 6b 65 79 77 6f  ng are the keywo
16120 72 64 73 20 63 75 72 72 65 6e 74 6c 79 20 72 65  rds currently re
16130 63 6f 67 6e 69 7a 65 64 20 62 79 20 53 51 4c 69  cognized by SQLi
16140 74 65 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b  te:.</p>..<block
16150 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 20 77 69  quote>.<table wi
16160 64 74 68 3d 22 31 30 30 25 22 20 63 6c 61 73 73  dth="100%" class
16170 3d 22 70 64 66 5f 6b 65 79 77 6f 72 64 73 22 3e  ="pdf_keywords">
16180 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d  .<tr>.<td align=
16190 22 6c 65 66 74 22 20 76 61 6c 69 67 6e 3d 22 74  "left" valign="t
161a0 6f 70 22 20 77 69 64 74 68 3d 22 32 30 25 22 3e  op" width="20%">
161b0 0a 0a 3c 74 63 6c 3e 0a 73 65 74 20 6e 20 5b 6c  ..<tcl>.set n [l
161c0 6c 65 6e 67 74 68 20 24 6b 65 79 77 6f 72 64 5f  length $keyword_
161d0 6c 69 73 74 5d 0a 73 65 74 20 6e 43 6f 6c 20 35  list].set nCol 5
161e0 0a 73 65 74 20 6e 52 6f 77 20 5b 65 78 70 72 20  .set nRow [expr 
161f0 7b 28 24 6e 2b 24 6e 43 6f 6c 2d 31 29 2f 24 6e  {($n+$nCol-1)/$n
16200 43 6f 6c 7d 5d 0a 73 65 74 20 69 20 30 0a 66 6f  Col}].set i 0.fo
16210 72 65 61 63 68 20 77 6f 72 64 20 24 6b 65 79 77  reach word $keyw
16220 6f 72 64 5f 6c 69 73 74 20 7b 0a 20 20 69 66 20  ord_list {.  if 
16230 7b 5b 73 74 72 69 6e 67 20 69 6e 64 65 78 20 24  {[string index $
16240 77 6f 72 64 20 65 6e 64 5d 3d 3d 22 2a 22 7d 20  word end]=="*"} 
16250 7b 0a 20 20 20 20 73 65 74 20 77 6f 72 64 20 5b  {.    set word [
16260 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 77 6f  string range $wo
16270 72 64 20 30 20 65 6e 64 2d 31 5d 0a 20 20 20 20  rd 0 end-1].    
16280 73 65 74 20 66 6f 6e 74 20 69 0a 20 20 7d 20 65  set font i.  } e
16290 6c 73 65 20 7b 0a 20 20 20 20 73 65 74 20 66 6f  lse {.    set fo
162a0 6e 74 20 62 0a 20 20 7d 0a 20 20 69 66 20 7b 24  nt b.  }.  if {$
162b0 69 3d 3d 24 6e 52 6f 77 7d 20 7b 0a 20 20 20 20  i==$nRow} {.    
162c0 68 64 5f 70 75 74 73 20 22 3c 2f 74 64 3e 3c 74  hd_puts "</td><t
162d0 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22  d valign=\"top\"
162e0 20 61 6c 69 67 6e 3d 5c 22 6c 65 66 74 5c 22 20   align=\"left\" 
162f0 77 69 64 74 68 3d 5c 22 32 30 25 5c 22 3e 22 0a  width=\"20%\">".
16300 20 20 20 20 73 65 74 20 69 20 31 0a 20 20 7d 20      set i 1.  } 
16310 65 6c 73 65 20 7b 0a 20 20 20 20 69 6e 63 72 20  else {.    incr 
16320 69 0a 20 20 7d 0a 20 20 68 64 5f 70 75 74 73 20  i.  }.  hd_puts 
16330 22 3c 24 66 6f 6e 74 3e 24 77 6f 72 64 3c 2f 24  "<$font>$word</$
16340 66 6f 6e 74 3e 3c 62 72 3e 22 0a 7d 0a 3c 2f 74  font><br>".}.</t
16350 63 6c 3e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f  cl>.</td></tr></
16360 74 61 62 6c 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f  table></blockquo
16370 74 65 3e 0a 0a 3c 68 32 3e 53 70 65 63 69 61 6c  te>..<h2>Special
16380 20 6e 61 6d 65 73 3c 2f 68 32 3e 0a 0a 3c 70 3e   names</h2>..<p>
16390 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72  The following ar
163a0 65 20 6e 6f 74 20 6b 65 79 77 6f 72 64 73 20 69  e not keywords i
163b0 6e 20 53 51 4c 69 74 65 2c 20 62 75 74 20 61 72  n SQLite, but ar
163c0 65 20 75 73 65 64 20 61 73 20 6e 61 6d 65 73 20  e used as names 
163d0 6f 66 20 0a 73 79 73 74 65 6d 20 6f 62 6a 65 63  of .system objec
163e0 74 73 2e 20 20 54 68 65 79 20 63 61 6e 20 62 65  ts.  They can be
163f0 20 75 73 65 64 20 61 73 20 61 6e 20 69 64 65 6e   used as an iden
16400 74 69 66 69 65 72 20 66 6f 72 20 61 20 64 69 66  tifier for a dif
16410 66 65 72 65 6e 74 20 0a 74 79 70 65 20 6f 66 20  ferent .type of 
16420 6f 62 6a 65 63 74 2e 3c 2f 70 3e 0a 0a 3c 62 6c  object.</p>..<bl
16430 6f 63 6b 71 75 6f 74 65 20 63 6c 61 73 73 3d 22  ockquote class="
16440 70 64 66 5f 6b 65 79 77 6f 72 64 73 22 3e 3c 62  pdf_keywords"><b
16450 3e 0a 20 20 5f 52 4f 57 49 44 5f 3c 62 72 3e 0a  >.  _ROWID_<br>.
16460 20 20 4d 41 49 4e 3c 62 72 3e 0a 20 20 4f 49 44    MAIN<br>.  OID
16470 3c 62 72 3e 0a 20 20 52 4f 57 49 44 3c 62 72 3e  <br>.  ROWID<br>
16480 0a 20 20 53 51 4c 49 54 45 5f 4d 41 53 54 45 52  .  SQLITE_MASTER
16490 3c 62 72 3e 0a 20 20 53 51 4c 49 54 45 5f 53 45  <br>.  SQLITE_SE
164a0 51 55 45 4e 43 45 3c 62 72 3e 0a 20 20 53 51 4c  QUENCE<br>.  SQL
164b0 49 54 45 5f 54 45 4d 50 5f 4d 41 53 54 45 52 3c  ITE_TEMP_MASTER<
164c0 62 72 3e 0a 20 20 54 45 4d 50 3c 62 72 3e 0a 3c  br>.  TEMP<br>.<
164d0 2f 62 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  /b></blockquote>
164e0 0a                                               .