Documentation Source Text

Hex Artifact Content
Login

Artifact c0c415993fac8596487f8baf2d91eaa710551a8a:


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 72 6f 75 74 69 6e 65 73 20 5b 73  >The routines [s
0a30: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
0a40: 32 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 70  2()], [sqlite3_p
0a50: 72 65 70 61 72 65 28 29 5d 2c 0a 5b 73 71 6c 69  repare()],.[sqli
0a60: 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 5d  te3_prepare16()]
0a70: 2c 20 5b 73 71 6c 69 74 65 33 5f 65 78 65 63 28  , [sqlite3_exec(
0a80: 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  )], and [sqlite3
0a90: 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 61 63  _get_table()] ac
0aa0: 63 65 70 74 0a 61 6e 20 53 51 4c 20 73 74 61 74  cept.an SQL stat
0ab0: 65 6d 65 6e 74 20 6c 69 73 74 20 28 73 71 6c 2d  ement list (sql-
0ac0: 73 74 6d 74 2d 6c 69 73 74 29 20 77 68 69 63 68  stmt-list) which
0ad0: 20 69 73 20 61 20 73 65 6d 69 63 6f 6c 6f 6e 2d   is a semicolon-
0ae0: 73 65 70 61 72 61 74 65 64 0a 6c 69 73 74 20 6f  separated.list o
0af0: 66 20 73 74 61 74 65 6d 65 6e 74 73 2e 3c 2f 70  f statements.</p
0b00: 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62 6c 65 44 69  >..<tcl>BubbleDi
0b10: 61 67 72 61 6d 20 73 71 6c 2d 73 74 6d 74 2d 6c  agram sql-stmt-l
0b20: 69 73 74 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 45 61  ist</tcl>..<p>Ea
0b30: 63 68 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ch SQL statement
0b40: 20 69 6e 20 74 68 65 20 73 74 61 74 65 6d 65 6e   in the statemen
0b50: 74 20 6c 69 73 74 20 69 73 20 61 6e 20 69 6e 73  t list is an ins
0b60: 74 61 6e 63 65 20 6f 66 20 74 68 65 0a 66 6f 6c  tance of the.fol
0b70: 6c 6f 77 69 6e 67 3a 3c 2f 70 3e 0a 0a 3c 74 63  lowing:</p>..<tc
0b80: 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  l>BubbleDiagram 
0b90: 73 71 6c 2d 73 74 6d 74 3c 2f 74 63 6c 3e 0a 0a  sql-stmt</tcl>..
0ba0: 3c 74 63 6c 3e 0a 70 72 6f 63 20 4f 70 65 72 61  <tcl>.proc Opera
0bb0: 74 6f 72 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20 72  tor {name} {.  r
0bc0: 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f 6c  eturn "<font col
0bd0: 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e 3c  or=\"#2c2cf0\"><
0be0: 62 69 67 3e 24 6e 61 6d 65 3c 2f 62 69 67 3e 3c  big>$name</big><
0bf0: 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f 63 20 4e  /font>".}.proc N
0c00: 6f 6e 74 65 72 6d 69 6e 61 6c 20 7b 6e 61 6d 65  onterminal {name
0c10: 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c 69  } {.  return "<i
0c20: 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23  ><font color=\"#
0c30: 66 66 33 34 33 34 5c 22 3e 24 6e 61 6d 65 3c 2f  ff3434\">$name</
0c40: 66 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d 0a 70 72 6f  font></i>".}.pro
0c50: 63 20 4b 65 79 77 6f 72 64 20 7b 6e 61 6d 65 7d  c Keyword {name}
0c60: 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c 66 6f   {.  return "<fo
0c70: 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32 63  nt color=\"#2c2c
0c80: 66 30 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74  f0\">$name</font
0c90: 3e 22 0a 7d 0a 70 72 6f 63 20 45 78 61 6d 70 6c  >".}.proc Exampl
0ca0: 65 20 7b 74 65 78 74 7d 20 7b 0a 20 20 68 64 5f  e {text} {.  hd_
0cb0: 70 75 74 73 20 22 3c 62 6c 6f 63 6b 71 75 6f 74  puts "<blockquot
0cc0: 65 3e 3c 70 72 65 3e 24 74 65 78 74 3c 2f 70 72  e><pre>$text</pr
0cd0: 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 22  e></blockquote>"
0ce0: 0a 7d 0a 0a 70 72 6f 63 20 53 65 63 74 69 6f 6e  .}..proc Section
0cf0: 20 7b 6e 61 6d 65 20 6c 61 62 65 6c 20 6b 65 79   {name label key
0d00: 77 6f 72 64 73 7d 20 7b 0a 20 20 67 6c 6f 62 61  words} {.  globa
0d10: 6c 20 44 4f 43 0a 20 20 68 64 5f 63 6c 6f 73 65  l DOC.  hd_close
0d20: 5f 6d 61 69 6e 0a 20 20 68 64 5f 6f 70 65 6e 5f  _main.  hd_open_
0d30: 6d 61 69 6e 20 6c 61 6e 67 5f 24 6c 61 62 65 6c  main lang_$label
0d40: 2e 68 74 6d 6c 0a 20 20 68 64 5f 68 65 61 64 65  .html.  hd_heade
0d50: 72 20 22 53 51 4c 69 74 65 20 51 75 65 72 79 20  r "SQLite Query 
0d60: 4c 61 6e 67 75 61 67 65 3a 20 24 6e 61 6d 65 22  Language: $name"
0d70: 20 24 44 4f 43 2f 70 61 67 65 73 2f 6c 61 6e 67   $DOC/pages/lang
0d80: 2e 69 6e 0a 20 20 65 76 61 6c 20 68 64 5f 6b 65  .in.  eval hd_ke
0d90: 79 77 6f 72 64 73 20 24 6b 65 79 77 6f 72 64 73  ywords $keywords
0da0: 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c 61 20 68  .  hd_puts {<a h
0db0: 72 65 66 3d 22 6c 61 6e 67 2e 68 74 6d 6c 22 3e  ref="lang.html">
0dc0: 3c 68 32 3e 53 51 4c 20 41 73 20 55 6e 64 65 72  <h2>SQL As Under
0dd0: 73 74 6f 6f 64 20 42 79 20 53 51 4c 69 74 65 3c  stood By SQLite<
0de0: 2f 68 32 3e 3c 2f 61 3e 7d 0a 20 20 68 64 5f 70  /h2></a>}.  hd_p
0df0: 75 74 73 20 22 3c 68 33 3e 24 6e 61 6d 65 3c 2f  uts "<h3>$name</
0e00: 68 33 3e 22 0a 7d 0a 0a 23 23 23 23 23 23 23 23  h3>".}..########
0e10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e50: 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
0e60: 7b 41 4c 54 45 52 20 54 41 42 4c 45 7d 20 61 6c  {ALTER TABLE} al
0e70: 74 65 72 74 61 62 6c 65 20 7b 7b 41 4c 54 45 52  tertable {{ALTER
0e80: 20 54 41 42 4c 45 7d 20 7b 41 4c 54 45 52 7d 7d   TABLE} {ALTER}}
0e90: 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  ..BubbleDiagram 
0ea0: 61 6c 74 65 72 2d 74 61 62 6c 65 2d 73 74 6d 74  alter-table-stmt
0eb0: 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 53 51   1.</tcl>..<p>SQ
0ec0: 4c 69 74 65 20 73 75 70 70 6f 72 74 73 20 61 20  Lite supports a 
0ed0: 6c 69 6d 69 74 65 64 20 73 75 62 73 65 74 20 6f  limited subset o
0ee0: 66 20 41 4c 54 45 52 20 54 41 42 4c 45 2e 0a 54  f ALTER TABLE..T
0ef0: 68 65 20 41 4c 54 45 52 20 54 41 42 4c 45 20 63  he ALTER TABLE c
0f00: 6f 6d 6d 61 6e 64 20 69 6e 20 53 51 4c 69 74 65  ommand in SQLite
0f10: 20 61 6c 6c 6f 77 73 20 74 68 65 20 75 73 65 72   allows the user
0f20: 20 74 6f 20 72 65 6e 61 6d 65 20 61 20 74 61 62   to rename a tab
0f30: 6c 65 0a 6f 72 20 74 6f 20 61 64 64 20 61 20 6e  le.or to add a n
0f40: 65 77 20 63 6f 6c 75 6d 6e 20 74 6f 20 61 6e 20  ew column to an 
0f50: 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65 2e 20  existing table. 
0f60: 49 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62  It is not possib
0f70: 6c 65 0a 74 6f 20 72 65 6e 61 6d 65 20 61 20 63  le.to rename a c
0f80: 6f 6c 75 6d 2c 20 72 65 6d 6f 76 65 20 61 20 63  olum, remove a c
0f90: 6f 6c 75 6d 6e 2c 20 6f 72 20 61 64 64 20 6f 72  olumn, or add or
0fa0: 20 72 65 6d 6f 76 65 20 63 6f 6e 73 74 72 61 69   remove constrai
0fb0: 6e 74 73 20 66 72 6f 6d 20 61 20 74 61 62 6c 65  nts from a table
0fc0: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 52  ..</p>..<p>The R
0fd0: 45 4e 41 4d 45 20 54 4f 20 73 79 6e 74 61 78 20  ENAME TO syntax 
0fe0: 69 73 20 75 73 65 64 20 74 6f 20 72 65 6e 61 6d  is used to renam
0ff0: 65 20 74 68 65 20 74 61 62 6c 65 20 69 64 65 6e  e the table iden
1000: 74 69 66 69 65 64 20 62 79 20 0a 3c 69 3e 26 23  tified by .<i>&#
1010: 39 31 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  91;database-name
1020: 2e 26 23 39 33 3b 74 61 62 6c 65 2d 6e 61 6d 65  .&#93;table-name
1030: 3c 2f 69 3e 20 74 6f 20 3c 69 3e 6e 65 77 2d 74  </i> to <i>new-t
1040: 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 0a 54  able-name</i>..T
1050: 68 69 73 20 63 6f 6d 6d 61 6e 64 20 0a 63 61 6e  his command .can
1060: 6e 6f 74 20 62 65 20 75 73 65 64 20 74 6f 20 6d  not be used to m
1070: 6f 76 65 20 61 20 74 61 62 6c 65 20 62 65 74 77  ove a table betw
1080: 65 65 6e 20 61 74 74 61 63 68 65 64 20 64 61 74  een attached dat
1090: 61 62 61 73 65 73 2c 20 6f 6e 6c 79 20 74 6f 20  abases, only to 
10a0: 72 65 6e 61 6d 65 20 0a 61 20 74 61 62 6c 65 20  rename .a table 
10b0: 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20  within the same 
10c0: 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c  database.</p>..<
10d0: 70 3e 49 66 20 74 68 65 20 74 61 62 6c 65 20 62  p>If the table b
10e0: 65 69 6e 67 20 72 65 6e 61 6d 65 64 20 68 61 73  eing renamed has
10f0: 20 74 72 69 67 67 65 72 73 20 6f 72 20 69 6e 64   triggers or ind
1100: 69 63 65 73 2c 20 74 68 65 6e 20 74 68 65 73 65  ices, then these
1110: 20 72 65 6d 61 69 6e 0a 61 74 74 61 63 68 65 64   remain.attached
1120: 20 74 6f 20 74 68 65 20 74 61 62 6c 65 20 61 66   to the table af
1130: 74 65 72 20 69 74 20 68 61 73 20 62 65 65 6e 20  ter it has been 
1140: 72 65 6e 61 6d 65 64 2e 20 48 6f 77 65 76 65 72  renamed. However
1150: 2c 20 69 66 20 74 68 65 72 65 20 61 72 65 0a 61  , if there are.a
1160: 6e 79 20 76 69 65 77 20 64 65 66 69 6e 69 74 69  ny view definiti
1170: 6f 6e 73 2c 20 6f 72 20 73 74 61 74 65 6d 65 6e  ons, or statemen
1180: 74 73 20 65 78 65 63 75 74 65 64 20 62 79 20 74  ts executed by t
1190: 72 69 67 67 65 72 73 20 74 68 61 74 20 72 65 66  riggers that ref
11a0: 65 72 20 74 6f 0a 74 68 65 20 74 61 62 6c 65 20  er to.the table 
11b0: 62 65 69 6e 67 20 72 65 6e 61 6d 65 64 2c 20 74  being renamed, t
11c0: 68 65 73 65 20 61 72 65 20 6e 6f 74 20 61 75 74  hese are not aut
11d0: 6f 6d 61 74 69 63 61 6c 6c 79 20 6d 6f 64 69 66  omatically modif
11e0: 69 65 64 20 74 6f 20 75 73 65 20 74 68 65 20 6e  ied to use the n
11f0: 65 77 0a 74 61 62 6c 65 20 6e 61 6d 65 2e 20 49  ew.table name. I
1200: 66 20 74 68 69 73 20 69 73 20 72 65 71 75 69 72  f this is requir
1210: 65 64 2c 20 74 68 65 20 74 72 69 67 67 65 72 73  ed, the triggers
1220: 20 6f 72 20 76 69 65 77 20 64 65 66 69 6e 69 74   or view definit
1230: 69 6f 6e 73 20 6d 75 73 74 20 62 65 0a 64 72 6f  ions must be.dro
1240: 70 70 65 64 20 61 6e 64 20 72 65 63 72 65 61 74  pped and recreat
1250: 65 64 20 74 6f 20 75 73 65 20 74 68 65 20 6e 65  ed to use the ne
1260: 77 20 74 61 62 6c 65 20 6e 61 6d 65 20 62 79 20  w table name by 
1270: 68 61 6e 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54  hand..</p>..<p>T
1280: 68 65 20 41 44 44 20 43 4f 4c 55 4d 4e 20 73 79  he ADD COLUMN sy
1290: 6e 74 61 78 0a 69 73 20 75 73 65 64 20 74 6f 20  ntax.is used to 
12a0: 61 64 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d 6e  add a new column
12b0: 20 74 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20   to an existing 
12c0: 74 61 62 6c 65 2e 0a 54 68 65 20 6e 65 77 20 63  table..The new c
12d0: 6f 6c 75 6d 6e 20 69 73 20 61 6c 77 61 79 73 20  olumn is always 
12e0: 61 70 70 65 6e 64 65 64 20 74 6f 20 74 68 65 20  appended to the 
12f0: 65 6e 64 20 6f 66 20 74 68 65 20 6c 69 73 74 20  end of the list 
1300: 6f 66 20 65 78 69 73 74 69 6e 67 20 63 6f 6c 75  of existing colu
1310: 6d 6e 73 2e 0a 54 68 65 20 5b 63 6f 6c 75 6d 6e  mns..The [column
1320: 2d 64 65 66 5d 20 72 75 6c 65 20 64 65 66 69 6e  -def] rule defin
1330: 65 73 20 74 68 65 20 63 68 61 72 61 63 74 65 72  es the character
1340: 69 73 74 69 63 73 20 6f 66 20 74 68 65 20 6e 65  istics of the ne
1350: 77 20 63 6f 6c 75 6d 6e 2e 0a 54 68 65 20 6e 65  w column..The ne
1360: 77 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 74 61 6b  w column may tak
1370: 65 20 61 6e 79 20 6f 66 20 74 68 65 20 66 6f 72  e any of the for
1380: 6d 73 20 70 65 72 6d 69 73 73 61 62 6c 65 20 69  ms permissable i
1390: 6e 20 61 20 5b 43 52 45 41 54 45 20 54 41 42 4c  n a [CREATE TABL
13a0: 45 5d 0a 73 74 61 74 65 6d 65 6e 74 2c 20 77 69  E].statement, wi
13b0: 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  th the following
13c0: 20 72 65 73 74 72 69 63 74 69 6f 6e 73 3a 0a 3c   restrictions:.<
13d0: 75 6c 3e 0a 3c 6c 69 3e 54 68 65 20 63 6f 6c 75  ul>.<li>The colu
13e0: 6d 6e 20 6d 61 79 20 6e 6f 74 20 68 61 76 65 20  mn may not have 
13f0: 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6f 72  a PRIMARY KEY or
1400: 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69   UNIQUE constrai
1410: 6e 74 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 54 68 65  nt.</li>.<li>The
1420: 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74 20   column may not 
1430: 68 61 76 65 20 61 20 64 65 66 61 75 6c 74 20 76  have a default v
1440: 61 6c 75 65 20 6f 66 20 43 55 52 52 45 4e 54 5f  alue of CURRENT_
1450: 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41  TIME, CURRENT_DA
1460: 54 45 20 0a 20 20 20 20 6f 72 20 43 55 52 52 45  TE .    or CURRE
1470: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2e 3c 2f 6c  NT_TIMESTAMP.</l
1480: 69 3e 0a 3c 6c 69 3e 49 66 20 61 20 4e 4f 54 20  i>.<li>If a NOT 
1490: 4e 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 20  NULL constraint 
14a0: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68  is specified, th
14b0: 65 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6d 75  en the column mu
14c0: 73 74 20 68 61 76 65 20 61 0a 20 20 20 20 64 65  st have a.    de
14d0: 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 74 68 65  fault value othe
14e0: 72 20 74 68 61 6e 20 4e 55 4c 4c 2e 0a 3c 2f 75  r than NULL..</u
14f0: 6c 3e 0a 0a 3c 70 3e 54 68 65 20 65 78 65 63 75  l>..<p>The execu
1500: 74 69 6f 6e 20 74 69 6d 65 20 6f 66 20 74 68 65  tion time of the
1510: 20 41 4c 54 45 52 20 54 41 42 4c 45 20 63 6f 6d   ALTER TABLE com
1520: 6d 61 6e 64 20 69 73 20 69 6e 64 65 70 65 6e 64  mand is independ
1530: 65 6e 74 20 6f 66 0a 74 68 65 20 61 6d 6f 75 6e  ent of.the amoun
1540: 74 20 6f 66 20 64 61 74 61 20 69 6e 20 74 68 65  t of data in the
1550: 20 74 61 62 6c 65 2e 20 20 54 68 65 20 41 4c 54   table.  The ALT
1560: 45 52 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64  ER TABLE command
1570: 20 72 75 6e 73 20 61 73 20 71 75 69 63 6b 6c 79   runs as quickly
1580: 0a 6f 6e 20 61 20 74 61 62 6c 65 20 77 69 74 68  .on a table with
1590: 20 31 30 20 6d 69 6c 6c 69 6f 6e 20 72 6f 77 73   10 million rows
15a0: 20 61 73 20 69 74 20 64 6f 65 73 20 6f 6e 20 61   as it does on a
15b0: 20 74 61 62 6c 65 20 77 69 74 68 20 31 20 72 6f   table with 1 ro
15c0: 77 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41 66 74 65  w..</p>..<p>Afte
15d0: 72 20 41 44 44 20 43 4f 4c 55 4d 4e 20 68 61 73  r ADD COLUMN has
15e0: 20 62 65 65 6e 20 72 75 6e 20 6f 6e 20 61 20 64   been run on a d
15f0: 61 74 61 62 61 73 65 2c 20 74 68 61 74 20 64 61  atabase, that da
1600: 74 61 62 61 73 65 20 77 69 6c 6c 20 6e 6f 74 0a  tabase will not.
1610: 62 65 20 72 65 61 64 61 62 6c 65 20 62 79 20 53  be readable by S
1620: 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e  QLite version 3.
1630: 31 2e 33 20 61 6e 64 20 65 61 72 6c 69 65 72 2e  1.3 and earlier.
1640: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  </p>..<tcl>.####
1650: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1660: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1670: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1680: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1690: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
16a0: 6f 6e 20 7b 41 4e 41 4c 59 5a 45 7d 20 61 6e 61  on {ANALYZE} ana
16b0: 6c 79 7a 65 20 41 4e 41 4c 59 5a 45 0a 0a 42 75  lyze ANALYZE..Bu
16c0: 62 62 6c 65 44 69 61 67 72 61 6d 20 61 6e 61 6c  bbleDiagram anal
16d0: 79 7a 65 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c  yze-stmt 1.</tcl
16e0: 3e 0a 0a 3c 70 3e 54 68 65 20 41 4e 41 4c 59 5a  >..<p>The ANALYZ
16f0: 45 20 63 6f 6d 6d 61 6e 64 20 67 61 74 68 65 72  E command gather
1700: 73 20 73 74 61 74 69 73 74 69 63 73 20 61 62 6f  s statistics abo
1710: 75 74 20 69 6e 64 69 63 65 73 20 61 6e 64 20 73  ut indices and s
1720: 74 6f 72 65 73 20 74 68 65 6d 0a 69 6e 20 61 20  tores them.in a 
1730: 73 70 65 63 69 61 6c 20 74 61 62 6c 65 73 20 69  special tables i
1740: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 77  n the database w
1750: 68 65 72 65 20 74 68 65 20 71 75 65 72 79 20 6f  here the query o
1760: 70 74 69 6d 69 7a 65 72 20 63 61 6e 20 75 73 65  ptimizer can use
1770: 0a 74 68 65 6d 20 74 6f 20 68 65 6c 70 20 6d 61  .them to help ma
1780: 6b 65 20 62 65 74 74 65 72 20 69 6e 64 65 78 20  ke better index 
1790: 63 68 6f 69 63 65 73 2e 0a 49 66 20 6e 6f 20 61  choices..If no a
17a0: 72 67 75 6d 65 6e 74 73 20 61 72 65 20 67 69 76  rguments are giv
17b0: 65 6e 2c 20 61 6c 6c 20 69 6e 64 69 63 65 73 20  en, all indices 
17c0: 69 6e 20 61 6c 6c 20 61 74 74 61 63 68 65 64 20  in all attached 
17d0: 64 61 74 61 62 61 73 65 73 20 61 72 65 0a 61 6e  databases are.an
17e0: 61 6c 79 7a 65 64 2e 20 20 49 66 20 61 20 64 61  alyzed.  If a da
17f0: 74 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 67  tabase name is g
1800: 69 76 65 6e 20 61 73 20 74 68 65 20 61 72 67 75  iven as the argu
1810: 6d 65 6e 74 2c 20 61 6c 6c 20 69 6e 64 69 63 65  ment, all indice
1820: 73 0a 69 6e 20 74 68 61 74 20 6f 6e 65 20 64 61  s.in that one da
1830: 74 61 62 61 73 65 20 61 72 65 20 61 6e 61 6c 79  tabase are analy
1840: 7a 65 64 2e 20 20 49 66 20 74 68 65 20 61 72 67  zed.  If the arg
1850: 75 6d 65 6e 74 20 69 73 20 61 20 74 61 62 6c 65  ument is a table
1860: 20 6e 61 6d 65 2c 0a 74 68 65 6e 20 6f 6e 6c 79   name,.then only
1870: 20 69 6e 64 69 63 65 73 20 61 73 73 6f 63 69 61   indices associa
1880: 74 65 64 20 77 69 74 68 20 74 68 61 74 20 6f 6e  ted with that on
1890: 65 20 74 61 62 6c 65 20 61 72 65 20 61 6e 61 6c  e table are anal
18a0: 79 7a 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  yzed.</p>..<p>Th
18b0: 65 20 69 6e 69 74 69 61 6c 20 69 6d 70 6c 65 6d  e initial implem
18c0: 65 6e 74 61 74 69 6f 6e 20 73 74 6f 72 65 73 20  entation stores 
18d0: 61 6c 6c 20 73 74 61 74 69 73 74 69 63 73 20 69  all statistics i
18e0: 6e 20 61 20 73 69 6e 67 6c 65 0a 74 61 62 6c 65  n a single.table
18f0: 20 6e 61 6d 65 64 20 3c 62 3e 73 71 6c 69 74 65   named <b>sqlite
1900: 5f 73 74 61 74 31 3c 2f 62 3e 2e 20 20 46 75 74  _stat1</b>.  Fut
1910: 75 72 65 20 65 6e 68 61 6e 63 65 6d 65 6e 74 73  ure enhancements
1920: 20 6d 61 79 20 63 72 65 61 74 65 0a 61 64 64 69   may create.addi
1930: 74 69 6f 6e 61 6c 20 74 61 62 6c 65 73 20 77 69  tional tables wi
1940: 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65  th the same name
1950: 20 70 61 74 74 65 72 6e 20 65 78 63 65 70 74 20   pattern except 
1960: 77 69 74 68 20 74 68 65 20 22 31 22 0a 63 68 61  with the "1".cha
1970: 6e 67 65 64 20 74 6f 20 61 20 64 69 66 66 65 72  nged to a differ
1980: 65 6e 74 20 64 69 67 69 74 2e 20 20 54 68 65 20  ent digit.  The 
1990: 5b 44 52 4f 50 20 54 41 42 4c 45 5d 20 63 6f 6d  [DROP TABLE] com
19a0: 6d 61 6e 64 20 64 6f 65 73 0a 6e 6f 74 20 77 6f  mand does.not wo
19b0: 72 6b 20 6f 6e 20 74 68 65 20 3c 62 3e 73 71 6c  rk on the <b>sql
19c0: 69 74 65 5f 73 74 61 74 31 3c 2f 62 3e 20 74 61  ite_stat1</b> ta
19d0: 62 6c 65 2c 0a 62 75 74 20 61 6c 6c 20 74 68 65  ble,.but all the
19e0: 20 63 6f 6e 74 65 6e 74 20 63 61 6e 20 62 65 20   content can be 
19f0: 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74 68  removed using th
1a00: 65 20 5b 44 45 4c 45 54 45 5d 20 63 6f 6d 6d 61  e [DELETE] comma
1a10: 6e 64 2c 0a 77 68 69 63 68 20 68 61 73 20 74 68  nd,.which has th
1a20: 65 20 73 61 6d 65 20 65 66 66 65 63 74 2e 3c 2f  e same effect.</
1a30: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
1a40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a80: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
1a90: 20 7b 41 54 54 41 43 48 20 44 41 54 41 42 41 53   {ATTACH DATABAS
1aa0: 45 7d 20 61 74 74 61 63 68 20 41 54 54 41 43 48  E} attach ATTACH
1ab0: 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  ..BubbleDiagram 
1ac0: 61 74 74 61 63 68 2d 73 74 6d 74 20 31 0a 3c 2f  attach-stmt 1.</
1ad0: 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 41 54 54  tcl>..<p>The ATT
1ae0: 41 43 48 20 44 41 54 41 42 41 53 45 20 73 74 61  ACH DATABASE sta
1af0: 74 65 6d 65 6e 74 20 61 64 64 73 20 61 6e 6f 74  tement adds anot
1b00: 68 65 72 20 64 61 74 61 62 61 73 65 20 0a 66 69  her database .fi
1b10: 6c 65 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e  le to the curren
1b20: 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  t database conne
1b30: 63 74 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 66  ction.  If the f
1b40: 69 6c 65 6e 61 6d 65 20 63 6f 6e 74 61 69 6e 73  ilename contains
1b50: 20 0a 70 75 6e 63 74 75 61 74 69 6f 6e 20 63 68   .punctuation ch
1b60: 61 72 61 63 74 65 72 73 20 69 74 20 6d 75 73 74  aracters it must
1b70: 20 62 65 20 71 75 6f 74 65 64 2e 20 20 54 68 65   be quoted.  The
1b80: 20 6e 61 6d 65 73 20 27 6d 61 69 6e 27 20 61 6e   names 'main' an
1b90: 64 20 0a 27 74 65 6d 70 27 20 72 65 66 65 72 20  d .'temp' refer 
1ba0: 74 6f 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61  to the main data
1bb0: 62 61 73 65 20 61 6e 64 20 74 68 65 20 64 61 74  base and the dat
1bc0: 61 62 61 73 65 20 75 73 65 64 20 66 6f 72 20 0a  abase used for .
1bd0: 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73  temporary tables
1be0: 2e 20 20 54 68 65 73 65 20 63 61 6e 6e 6f 74 20  .  These cannot 
1bf0: 62 65 20 64 65 74 61 63 68 65 64 2e 20 20 41 74  be detached.  At
1c00: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73  tached databases
1c10: 20 0a 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73   .are removed us
1c20: 69 6e 67 20 74 68 65 20 5b 44 45 54 41 43 48 5d  ing the [DETACH]
1c30: 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a   statement.</p>.
1c40: 0a 3c 70 3e 59 6f 75 20 63 61 6e 6e 6f 74 20 63  .<p>You cannot c
1c50: 72 65 61 74 65 20 61 20 6e 65 77 20 74 61 62 6c  reate a new tabl
1c60: 65 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20  e with the same 
1c70: 6e 61 6d 65 20 61 73 20 61 20 74 61 62 6c 65 20  name as a table 
1c80: 69 6e 20 0a 61 6e 20 61 74 74 61 63 68 65 64 20  in .an attached 
1c90: 64 61 74 61 62 61 73 65 2c 20 62 75 74 20 79 6f  database, but yo
1ca0: 75 20 63 61 6e 20 61 74 74 61 63 68 20 61 20 64  u can attach a d
1cb0: 61 74 61 62 61 73 65 20 77 68 69 63 68 20 63 6f  atabase which co
1cc0: 6e 74 61 69 6e 73 0a 74 61 62 6c 65 73 20 77 68  ntains.tables wh
1cd0: 6f 73 65 20 6e 61 6d 65 73 20 61 72 65 20 64 75  ose names are du
1ce0: 70 6c 69 63 61 74 65 73 20 6f 66 20 74 61 62 6c  plicates of tabl
1cf0: 65 73 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64  es in the main d
1d00: 61 74 61 62 61 73 65 2e 20 20 49 74 20 69 73 20  atabase.  It is 
1d10: 0a 61 6c 73 6f 20 70 65 72 6d 69 73 73 69 62 6c  .also permissibl
1d20: 65 20 74 6f 20 61 74 74 61 63 68 20 74 68 65 20  e to attach the 
1d30: 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 66 69  same database fi
1d40: 6c 65 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65  le multiple time
1d50: 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65  s.</p>..<p>Table
1d60: 73 20 69 6e 20 61 6e 20 61 74 74 61 63 68 65 64  s in an attached
1d70: 20 64 61 74 61 62 61 73 65 20 63 61 6e 20 62 65   database can be
1d80: 20 72 65 66 65 72 72 65 64 20 74 6f 20 75 73 69   referred to usi
1d90: 6e 67 20 74 68 65 20 73 79 6e 74 61 78 20 0a 3c  ng the syntax .<
1da0: 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e  i>database-name.
1db0: 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 20  table-name</i>. 
1dc0: 20 49 66 20 61 6e 20 61 74 74 61 63 68 65 64 20   If an attached 
1dd0: 74 61 62 6c 65 20 64 6f 65 73 6e 27 74 20 68 61  table doesn't ha
1de0: 76 65 20 0a 61 20 64 75 70 6c 69 63 61 74 65 20  ve .a duplicate 
1df0: 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20 74 68  table name in th
1e00: 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2c  e main database,
1e10: 20 69 74 20 64 6f 65 73 6e 27 74 20 72 65 71 75   it doesn't requ
1e20: 69 72 65 20 61 20 0a 64 61 74 61 62 61 73 65 20  ire a .database 
1e30: 6e 61 6d 65 20 70 72 65 66 69 78 2e 20 20 57 68  name prefix.  Wh
1e40: 65 6e 20 61 20 64 61 74 61 62 61 73 65 20 69 73  en a database is
1e50: 20 61 74 74 61 63 68 65 64 2c 20 61 6c 6c 20 6f   attached, all o
1e60: 66 20 69 74 73 20 0a 74 61 62 6c 65 73 20 77 68  f its .tables wh
1e70: 69 63 68 20 64 6f 6e 27 74 20 68 61 76 65 20 64  ich don't have d
1e80: 75 70 6c 69 63 61 74 65 20 6e 61 6d 65 73 20 62  uplicate names b
1e90: 65 63 6f 6d 65 20 74 68 65 20 64 65 66 61 75 6c  ecome the defaul
1ea0: 74 20 74 61 62 6c 65 0a 6f 66 20 74 68 61 74 20  t table.of that 
1eb0: 6e 61 6d 65 2e 20 20 41 6e 79 20 74 61 62 6c 65  name.  Any table
1ec0: 73 20 6f 66 20 74 68 61 74 20 6e 61 6d 65 20 61  s of that name a
1ed0: 74 74 61 63 68 65 64 20 61 66 74 65 72 77 61 72  ttached afterwar
1ee0: 64 73 20 72 65 71 75 69 72 65 20 74 68 65 0a 64  ds require the.d
1ef0: 61 74 61 62 61 73 65 20 70 72 65 66 69 78 2e 20  atabase prefix. 
1f00: 49 66 20 74 68 65 20 64 65 66 61 75 6c 74 20 74  If the default t
1f10: 61 62 6c 65 20 6f 66 20 61 20 67 69 76 65 6e 20  able of a given 
1f20: 6e 61 6d 65 20 69 73 20 64 65 74 61 63 68 65 64  name is detached
1f30: 2c 20 74 68 65 6e 0a 74 68 65 20 6c 61 73 74 20  , then.the last 
1f40: 74 61 62 6c 65 20 6f 66 20 74 68 61 74 20 6e 61  table of that na
1f50: 6d 65 20 61 74 74 61 63 68 65 64 20 62 65 63 6f  me attached beco
1f60: 6d 65 73 20 74 68 65 20 6e 65 77 20 64 65 66 61  mes the new defa
1f70: 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72  ult.</p>..<p>.Tr
1f80: 61 6e 73 61 63 74 69 6f 6e 73 20 69 6e 76 6f 6c  ansactions invol
1f90: 76 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20 61 74  ving multiple at
1fa0: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73  tached databases
1fb0: 20 61 72 65 20 61 74 6f 6d 69 63 2c 0a 61 73 73   are atomic,.ass
1fc0: 75 6d 69 6e 67 20 74 68 61 74 20 74 68 65 20 6d  uming that the m
1fd0: 61 69 6e 20 64 61 74 61 62 61 73 65 20 69 73 20  ain database is 
1fe0: 6e 6f 74 20 22 3a 6d 65 6d 6f 72 79 3a 22 2e 20  not ":memory:". 
1ff0: 20 49 66 20 74 68 65 20 6d 61 69 6e 0a 64 61 74   If the main.dat
2000: 61 62 61 73 65 20 69 73 20 22 3a 6d 65 6d 6f 72  abase is ":memor
2010: 79 3a 22 20 74 68 65 6e 20 0a 74 72 61 6e 73 61  y:" then .transa
2020: 63 74 69 6f 6e 73 20 63 6f 6e 74 69 6e 75 65 20  ctions continue 
2030: 74 6f 20 62 65 20 61 74 6f 6d 69 63 20 77 69 74  to be atomic wit
2040: 68 69 6e 20 65 61 63 68 20 69 6e 64 69 76 69 64  hin each individ
2050: 75 61 6c 0a 64 61 74 61 62 61 73 65 20 66 69 6c  ual.database fil
2060: 65 2e 20 42 75 74 20 69 66 20 74 68 65 20 68 6f  e. But if the ho
2070: 73 74 20 63 6f 6d 70 75 74 65 72 20 63 72 61 73  st computer cras
2080: 68 65 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c  hes in the middl
2090: 65 0a 6f 66 20 61 20 5b 43 4f 4d 4d 49 54 5d 20  e.of a [COMMIT] 
20a0: 77 68 65 72 65 20 74 77 6f 20 6f 72 20 6d 6f 72  where two or mor
20b0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73  e database files
20c0: 20 61 72 65 20 75 70 64 61 74 65 64 2c 0a 73 6f   are updated,.so
20d0: 6d 65 20 6f 66 20 74 68 6f 73 65 20 66 69 6c 65  me of those file
20e0: 73 20 6d 69 67 68 74 20 67 65 74 20 74 68 65 20  s might get the 
20f0: 63 68 61 6e 67 65 73 20 77 68 65 72 65 20 6f 74  changes where ot
2100: 68 65 72 73 0a 6d 69 67 68 74 20 6e 6f 74 2e 0a  hers.might not..
2110: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 69  </p>..<p>There i
2120: 73 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  s a compile-time
2130: 20 6c 69 6d 69 74 20 6f 66 20 5b 53 51 4c 49 54   limit of [SQLIT
2140: 45 5f 4d 41 58 5f 41 54 54 41 43 48 45 44 5d 0a  E_MAX_ATTACHED].
2150: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
2160: 65 20 66 69 6c 65 73 2e 3c 2f 70 3e 0a 0a 3c 74  e files.</p>..<t
2170: 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
2180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2190: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
21a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
21b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
21c0: 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 42 45 47  ###.Section {BEG
21d0: 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20  IN TRANSACTION} 
21e0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 7b 42 45 47  transaction {BEG
21f0: 49 4e 20 43 4f 4d 4d 49 54 20 52 4f 4c 4c 42 41  IN COMMIT ROLLBA
2200: 43 4b 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  CK}..BubbleDiagr
2210: 61 6d 20 62 65 67 69 6e 2d 73 74 6d 74 0a 42 75  am begin-stmt.Bu
2220: 62 62 6c 65 44 69 61 67 72 61 6d 20 63 6f 6d 6d  bbleDiagram comm
2230: 69 74 2d 73 74 6d 74 0a 42 75 62 62 6c 65 44 69  it-stmt.BubbleDi
2240: 61 67 72 61 6d 20 72 6f 6c 6c 62 61 63 6b 2d 73  agram rollback-s
2250: 74 6d 74 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a  tmt.</tcl>..<p>.
2260: 4e 6f 20 63 68 61 6e 67 65 73 20 63 61 6e 20 62  No changes can b
2270: 65 20 6d 61 64 65 20 74 6f 20 74 68 65 20 64 61  e made to the da
2280: 74 61 62 61 73 65 20 65 78 63 65 70 74 20 77 69  tabase except wi
2290: 74 68 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69  thin a transacti
22a0: 6f 6e 2e 0a 41 6e 79 20 63 6f 6d 6d 61 6e 64 20  on..Any command 
22b0: 74 68 61 74 20 63 68 61 6e 67 65 73 20 74 68 65  that changes the
22c0: 20 64 61 74 61 62 61 73 65 20 28 62 61 73 69 63   database (basic
22d0: 61 6c 6c 79 2c 20 61 6e 79 20 53 51 4c 20 63 6f  ally, any SQL co
22e0: 6d 6d 61 6e 64 0a 6f 74 68 65 72 20 74 68 61 6e  mmand.other than
22f0: 20 5b 53 45 4c 45 43 54 5d 29 20 77 69 6c 6c 20   [SELECT]) will 
2300: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 74  automatically st
2310: 61 72 74 20 61 20 74 72 61 6e 73 61 63 74 69 6f  art a transactio
2320: 6e 20 69 66 0a 6f 6e 65 20 69 73 20 6e 6f 74 20  n if.one is not 
2330: 61 6c 72 65 61 64 79 20 69 6e 20 65 66 66 65 63  already in effec
2340: 74 2e 20 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c  t.  Automaticall
2350: 79 20 73 74 61 72 74 65 64 20 74 72 61 6e 73 61  y started transa
2360: 63 74 69 6f 6e 73 0a 61 72 65 20 63 6f 6d 6d 69  ctions.are commi
2370: 74 74 65 64 20 61 74 20 74 68 65 20 63 6f 6e 63  tted at the conc
2380: 6c 75 73 69 6f 6e 20 6f 66 20 74 68 65 20 63 6f  lusion of the co
2390: 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  mmand..</p>..<p>
23a0: 0a 54 72 61 6e 73 61 63 74 69 6f 6e 73 20 63 61  .Transactions ca
23b0: 6e 20 62 65 20 73 74 61 72 74 65 64 20 6d 61 6e  n be started man
23c0: 75 61 6c 6c 79 20 75 73 69 6e 67 20 74 68 65 20  ually using the 
23d0: 42 45 47 49 4e 0a 63 6f 6d 6d 61 6e 64 2e 20 20  BEGIN.command.  
23e0: 53 75 63 68 20 74 72 61 6e 73 61 63 74 69 6f 6e  Such transaction
23f0: 73 20 75 73 75 61 6c 6c 79 20 70 65 72 73 69 73  s usually persis
2400: 74 20 75 6e 74 69 6c 20 74 68 65 20 6e 65 78 74  t until the next
2410: 0a 43 4f 4d 4d 49 54 20 6f 72 20 52 4f 4c 4c 42  .COMMIT or ROLLB
2420: 41 43 4b 20 63 6f 6d 6d 61 6e 64 2e 20 20 42 75  ACK command.  Bu
2430: 74 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  t a transaction 
2440: 77 69 6c 6c 20 61 6c 73 6f 20 0a 52 4f 4c 4c 42  will also .ROLLB
2450: 41 43 4b 20 69 66 20 74 68 65 20 64 61 74 61 62  ACK if the datab
2460: 61 73 65 20 69 73 20 63 6c 6f 73 65 64 20 6f 72  ase is closed or
2470: 20 69 66 20 61 6e 20 65 72 72 6f 72 20 6f 63 63   if an error occ
2480: 75 72 73 0a 61 6e 64 20 74 68 65 20 52 4f 4c 4c  urs.and the ROLL
2490: 42 41 43 4b 20 63 6f 6e 66 6c 69 63 74 20 72 65  BACK conflict re
24a0: 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
24b0: 68 6d 20 69 73 20 73 70 65 63 69 66 69 65 64 2e  hm is specified.
24c0: 0a 53 65 65 20 74 68 65 20 64 6f 63 75 6d 65 6e  .See the documen
24d0: 74 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20 5b 4f  tation on the [O
24e0: 4e 20 43 4f 4e 46 4c 49 43 54 5d 0a 63 6c 61 75  N CONFLICT].clau
24f0: 73 65 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  se for additiona
2500: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  l information ab
2510: 6f 75 74 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b  out the ROLLBACK
2520: 0a 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75  .conflict resolu
2530: 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2e 0a  tion algorithm..
2540: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 45 4e 44 20 54 52  </p>..<p>.END TR
2550: 41 4e 53 41 43 54 49 4f 4e 20 69 73 20 61 6e 20  ANSACTION is an 
2560: 61 6c 69 61 73 20 66 6f 72 20 43 4f 4d 4d 49 54  alias for COMMIT
2570: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f  ..</p>..<p>The o
2580: 70 74 69 6f 6e 61 6c 20 74 72 61 6e 73 61 63 74  ptional transact
2590: 69 6f 6e 20 6e 61 6d 65 20 69 73 20 69 67 6e 6f  ion name is igno
25a0: 72 65 64 2e 20 53 51 4c 69 74 65 20 0a 64 6f 65  red. SQLite .doe
25b0: 73 20 6e 6f 74 20 72 65 63 6f 67 6e 69 7a 65 20  s not recognize 
25c0: 6e 65 73 74 65 64 20 74 72 61 6e 73 61 63 74 69  nested transacti
25d0: 6f 6e 73 20 61 74 20 74 68 69 73 20 74 69 6d 65  ons at this time
25e0: 2e 0a 48 6f 77 65 76 65 72 2c 20 66 75 74 75 72  ..However, futur
25f0: 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  e versions of SQ
2600: 4c 69 74 65 20 6d 61 79 20 62 65 20 65 6e 68 61  Lite may be enha
2610: 6e 63 65 64 20 74 6f 20 73 75 70 70 6f 72 74 20  nced to support 
2620: 6e 65 73 74 65 64 0a 74 72 61 6e 73 61 63 74 69  nested.transacti
2630: 6f 6e 73 20 61 6e 64 20 74 68 65 20 74 72 61 6e  ons and the tran
2640: 73 61 63 74 69 6f 6e 20 6e 61 6d 65 20 77 6f 75  saction name wou
2650: 6c 64 20 74 68 65 6e 20 62 65 63 6f 6d 65 20 73  ld then become s
2660: 69 67 6e 69 66 69 63 61 6e 74 2e 0a 41 70 70 6c  ignificant..Appl
2670: 69 63 61 74 69 6f 6e 20 61 72 65 20 61 64 76 69  ication are advi
2680: 73 65 64 20 6e 6f 74 20 74 6f 20 75 73 65 20 74  sed not to use t
2690: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 6e  he transaction n
26a0: 61 6d 65 20 69 6e 20 6f 72 64 65 72 0a 74 6f 20  ame in order.to 
26b0: 61 76 6f 69 64 20 66 75 74 75 72 65 20 63 6f 6d  avoid future com
26c0: 70 61 74 69 62 69 6c 69 74 79 20 70 72 6f 62 6c  patibility probl
26d0: 65 6d 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72  ems.</p>..<p>.Tr
26e0: 61 6e 73 61 63 74 69 6f 6e 73 20 63 61 6e 20 62  ansactions can b
26f0: 65 20 64 65 66 65 72 72 65 64 2c 20 69 6d 6d 65  e deferred, imme
2700: 64 69 61 74 65 2c 20 6f 72 20 65 78 63 6c 75 73  diate, or exclus
2710: 69 76 65 2e 20 20 0a 54 68 65 20 64 65 66 61 75  ive.  .The defau
2720: 6c 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 62  lt transaction b
2730: 65 68 61 76 69 6f 72 20 69 73 20 64 65 66 65 72  ehavior is defer
2740: 72 65 64 2e 0a 44 65 66 65 72 72 65 64 20 6d 65  red..Deferred me
2750: 61 6e 73 20 74 68 61 74 20 6e 6f 20 6c 6f 63 6b  ans that no lock
2760: 73 20 61 72 65 20 61 63 71 75 69 72 65 64 0a 6f  s are acquired.o
2770: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 75  n the database u
2780: 6e 74 69 6c 20 74 68 65 20 64 61 74 61 62 61 73  ntil the databas
2790: 65 20 69 73 20 66 69 72 73 74 20 61 63 63 65 73  e is first acces
27a0: 73 65 64 2e 20 20 54 68 75 73 20 77 69 74 68 20  sed.  Thus with 
27b0: 61 0a 64 65 66 65 72 72 65 64 20 74 72 61 6e 73  a.deferred trans
27c0: 61 63 74 69 6f 6e 2c 20 74 68 65 20 42 45 47 49  action, the BEGI
27d0: 4e 20 73 74 61 74 65 6d 65 6e 74 20 69 74 73 65  N statement itse
27e0: 6c 66 20 64 6f 65 73 20 6e 6f 74 68 69 6e 67 2e  lf does nothing.
27f0: 20 20 4c 6f 63 6b 73 0a 61 72 65 20 6e 6f 74 20    Locks.are not 
2800: 61 63 71 75 69 72 65 64 20 75 6e 74 69 6c 20 74  acquired until t
2810: 68 65 20 66 69 72 73 74 20 72 65 61 64 20 6f 72  he first read or
2820: 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e   write operation
2830: 2e 20 20 54 68 65 20 66 69 72 73 74 20 72 65 61  .  The first rea
2840: 64 0a 6f 70 65 72 61 74 69 6f 6e 20 61 67 61 69  d.operation agai
2850: 6e 73 74 20 61 20 64 61 74 61 62 61 73 65 20 63  nst a database c
2860: 72 65 61 74 65 73 20 61 20 5b 53 48 41 52 45 44  reates a [SHARED
2870: 5d 20 6c 6f 63 6b 20 61 6e 64 20 74 68 65 20 66  ] lock and the f
2880: 69 72 73 74 0a 77 72 69 74 65 20 6f 70 65 72 61  irst.write opera
2890: 74 69 6f 6e 20 63 72 65 61 74 65 73 20 61 20 5b  tion creates a [
28a0: 52 45 53 45 52 56 45 44 5d 20 6c 6f 63 6b 2e 20  RESERVED] lock. 
28b0: 20 20 42 65 63 61 75 73 65 20 74 68 65 20 61 63    Because the ac
28c0: 71 75 69 73 69 74 69 6f 6e 20 6f 66 0a 6c 6f 63  quisition of.loc
28d0: 6b 73 20 69 73 20 64 65 66 65 72 72 65 64 20 75  ks is deferred u
28e0: 6e 74 69 6c 20 74 68 65 79 20 61 72 65 20 6e 65  ntil they are ne
28f0: 65 64 65 64 2c 20 69 74 20 69 73 20 70 6f 73 73  eded, it is poss
2900: 69 62 6c 65 20 74 68 61 74 20 61 6e 6f 74 68 65  ible that anothe
2910: 72 0a 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63  r.thread or proc
2920: 65 73 73 20 63 6f 75 6c 64 20 63 72 65 61 74 65  ess could create
2930: 20 61 20 73 65 70 61 72 61 74 65 20 74 72 61 6e   a separate tran
2940: 73 61 63 74 69 6f 6e 20 61 6e 64 20 77 72 69 74  saction and writ
2950: 65 20 74 6f 0a 74 68 65 20 64 61 74 61 62 61 73  e to.the databas
2960: 65 20 61 66 74 65 72 20 74 68 65 20 42 45 47 49  e after the BEGI
2970: 4e 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74  N on the current
2980: 20 74 68 72 65 61 64 20 68 61 73 20 65 78 65 63   thread has exec
2990: 75 74 65 64 2e 0a 49 66 20 74 68 65 20 74 72 61  uted..If the tra
29a0: 6e 73 61 63 74 69 6f 6e 20 69 73 20 69 6d 6d 65  nsaction is imme
29b0: 64 69 61 74 65 2c 20 74 68 65 6e 20 5b 52 45 53  diate, then [RES
29c0: 45 52 56 45 44 5d 20 6c 6f 63 6b 73 0a 61 72 65  ERVED] locks.are
29d0: 20 61 63 71 75 69 72 65 64 20 6f 6e 20 61 6c 6c   acquired on all
29e0: 20 64 61 74 61 62 61 73 65 73 20 61 73 20 73 6f   databases as so
29f0: 6f 6e 20 61 73 20 74 68 65 20 42 45 47 49 4e 20  on as the BEGIN 
2a00: 63 6f 6d 6d 61 6e 64 20 69 73 0a 65 78 65 63 75  command is.execu
2a10: 74 65 64 2c 20 77 69 74 68 6f 75 74 20 77 61 69  ted, without wai
2a20: 74 69 6e 67 20 66 6f 72 20 74 68 65 0a 64 61 74  ting for the.dat
2a30: 61 62 61 73 65 20 74 6f 20 62 65 20 75 73 65 64  abase to be used
2a40: 2e 20 20 41 66 74 65 72 20 61 20 42 45 47 49 4e  .  After a BEGIN
2a50: 20 49 4d 4d 45 44 49 41 54 45 2c 20 79 6f 75 20   IMMEDIATE, you 
2a60: 61 72 65 20 67 75 61 72 61 6e 74 65 65 64 20 74  are guaranteed t
2a70: 68 61 74 0a 6e 6f 20 6f 74 68 65 72 20 74 68 72  hat.no other thr
2a80: 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20 77  ead or process w
2a90: 69 6c 6c 20 62 65 20 61 62 6c 65 20 74 6f 20 77  ill be able to w
2aa0: 72 69 74 65 20 74 6f 20 74 68 65 20 64 61 74 61  rite to the data
2ab0: 62 61 73 65 20 6f 72 0a 64 6f 20 61 20 42 45 47  base or.do a BEG
2ac0: 49 4e 20 49 4d 4d 45 44 49 41 54 45 20 6f 72 20  IN IMMEDIATE or 
2ad0: 42 45 47 49 4e 20 45 58 43 4c 55 53 49 56 45 2e  BEGIN EXCLUSIVE.
2ae0: 20 20 4f 74 68 65 72 20 70 72 6f 63 65 73 73 65    Other processe
2af0: 73 20 63 61 6e 20 63 6f 6e 74 69 6e 75 65 0a 74  s can continue.t
2b00: 6f 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20  o read from the 
2b10: 64 61 74 61 62 61 73 65 2c 20 68 6f 77 65 76 65  database, howeve
2b20: 72 2e 20 20 41 6e 20 65 78 63 6c 75 73 69 76 65  r.  An exclusive
2b30: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 61 75   transaction cau
2b40: 73 65 73 0a 5b 45 58 43 4c 55 53 49 56 45 5d 20  ses.[EXCLUSIVE] 
2b50: 6c 6f 63 6b 73 20 74 6f 20 62 65 20 61 63 71 75  locks to be acqu
2b60: 69 72 65 64 20 6f 6e 20 61 6c 6c 20 64 61 74 61  ired on all data
2b70: 62 61 73 65 73 2e 20 20 41 66 74 65 72 20 61 20  bases.  After a 
2b80: 42 45 47 49 4e 0a 45 58 43 4c 55 53 49 56 45 2c  BEGIN.EXCLUSIVE,
2b90: 20 79 6f 75 20 61 72 65 20 67 75 61 72 61 6e 74   you are guarant
2ba0: 65 65 64 20 74 68 61 74 20 6e 6f 20 6f 74 68 65  eed that no othe
2bb0: 72 20 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63  r thread or proc
2bc0: 65 73 73 20 77 69 6c 6c 0a 62 65 20 61 62 6c 65  ess will.be able
2bd0: 20 74 6f 20 72 65 61 64 20 6f 72 20 77 72 69 74   to read or writ
2be0: 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 75  e the database u
2bf0: 6e 74 69 6c 20 74 68 65 20 74 72 61 6e 73 61 63  ntil the transac
2c00: 74 69 6f 6e 20 69 73 0a 63 6f 6d 70 6c 65 74 65  tion is.complete
2c10: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20  ..</p>..<p>.The 
2c20: 43 4f 4d 4d 49 54 20 63 6f 6d 6d 61 6e 64 20 64  COMMIT command d
2c30: 6f 65 73 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79  oes not actually
2c40: 20 70 65 72 66 6f 72 6d 20 61 20 63 6f 6d 6d 69   perform a commi
2c50: 74 20 75 6e 74 69 6c 20 61 6c 6c 0a 70 65 6e 64  t until all.pend
2c60: 69 6e 67 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73  ing SQL commands
2c70: 20 66 69 6e 69 73 68 2e 20 20 54 68 75 73 20 69   finish.  Thus i
2c80: 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 5b 53  f one or more [S
2c90: 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74  ELECT] statement
2ca0: 73 0a 61 72 65 20 69 6e 20 74 68 65 20 6d 69 64  s.are in the mid
2cb0: 64 6c 65 20 6f 66 20 70 72 6f 63 65 73 73 69 6e  dle of processin
2cc0: 67 20 61 6e 64 20 61 20 43 4f 4d 4d 49 54 20 69  g and a COMMIT i
2cd0: 73 20 65 78 65 63 75 74 65 64 2c 20 74 68 65 20  s executed, the 
2ce0: 63 6f 6d 6d 69 74 0a 77 69 6c 6c 20 6e 6f 74 20  commit.will not 
2cf0: 61 63 74 75 61 6c 6c 79 20 6f 63 63 75 72 20 75  actually occur u
2d00: 6e 74 69 6c 20 61 6c 6c 20 5b 53 45 4c 45 43 54  ntil all [SELECT
2d10: 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 68 61 76  ] statements hav
2d20: 65 20 62 65 65 6e 0a 5b 73 71 6c 69 74 65 33 5f  e been.[sqlite3_
2d30: 72 65 73 65 74 28 29 20 7c 20 72 65 73 65 74 5d  reset() | reset]
2d40: 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e   or [sqlite3_fin
2d50: 61 6c 69 7a 65 28 29 20 7c 20 66 69 6e 61 6c 69  alize() | finali
2d60: 7a 65 64 5d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  zed]..</p>..<p>.
2d70: 41 6e 20 61 74 74 65 6d 70 74 20 74 6f 20 65 78  An attempt to ex
2d80: 65 63 75 74 65 20 43 4f 4d 4d 49 54 20 6d 69 67  ecute COMMIT mig
2d90: 68 74 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20  ht result in an 
2da0: 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 72 65  [SQLITE_BUSY] re
2db0: 74 75 72 6e 20 63 6f 64 65 2e 0a 54 68 69 73 20  turn code..This 
2dc0: 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 61  indicates that a
2dd0: 6e 6f 74 68 65 72 20 74 68 72 65 61 64 20 6f 72  nother thread or
2de0: 20 70 72 6f 63 65 73 73 20 68 61 64 20 61 20 0a   process had a .
2df0: 5b 73 68 61 72 65 64 20 6c 6f 63 6b 5d 20 6f 6e  [shared lock] on
2e00: 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 74 68   the database.th
2e10: 61 74 20 70 72 65 76 65 6e 74 65 64 20 74 68 65  at prevented the
2e20: 20 64 61 74 61 62 61 73 65 20 66 72 6f 6d 20 62   database from b
2e30: 65 69 6e 67 20 75 70 64 61 74 65 64 2e 20 20 57  eing updated.  W
2e40: 68 65 6e 20 43 4f 4d 4d 49 54 20 66 61 69 6c 73  hen COMMIT fails
2e50: 20 69 6e 20 74 68 69 73 0a 77 61 79 2c 20 74 68   in this.way, th
2e60: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 72 65  e transaction re
2e70: 6d 61 69 6e 73 20 61 63 74 69 76 65 20 61 6e 64  mains active and
2e80: 20 74 68 65 20 43 4f 4d 4d 49 54 20 63 61 6e 20   the COMMIT can 
2e90: 62 65 20 72 65 74 72 69 65 64 20 6c 61 74 65 72  be retried later
2ea0: 0a 61 66 74 65 72 20 74 68 65 20 72 65 61 64 65  .after the reade
2eb0: 72 20 68 61 73 20 68 61 64 20 61 20 63 68 61 6e  r has had a chan
2ec0: 63 65 20 74 6f 20 63 6c 65 61 72 2e 0a 3c 2f 70  ce to clear..</p
2ed0: 3e 0a 0a 3c 68 33 3e 52 65 73 70 6f 6e 73 65 20  >..<h3>Response 
2ee0: 54 6f 20 45 72 72 6f 72 73 20 57 69 74 68 69 6e  To Errors Within
2ef0: 20 41 20 54 72 61 6e 73 61 63 74 69 6f 6e 3c 2f   A Transaction</
2f00: 68 33 3e 0a 0a 3c 70 3e 49 66 20 63 65 72 74 61  h3>..<p>If certa
2f10: 69 6e 20 6b 69 6e 64 73 20 6f 66 20 65 72 72 6f  in kinds of erro
2f20: 72 73 20 6f 63 63 75 72 20 77 69 74 68 69 6e 20  rs occur within 
2f30: 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 74  a transaction, t
2f40: 68 65 0a 74 72 61 6e 73 61 63 74 69 6f 6e 20 6d  he.transaction m
2f50: 61 79 20 6f 72 20 6d 61 79 20 6e 6f 74 20 62 65  ay or may not be
2f60: 20 72 6f 6c 6c 65 64 20 62 61 63 6b 20 61 75 74   rolled back aut
2f70: 6f 6d 61 74 69 63 61 6c 6c 79 2e 20 20 54 68 65  omatically.  The
2f80: 0a 65 72 72 6f 72 73 20 74 68 61 74 20 63 61 75  .errors that cau
2f90: 73 65 20 74 68 65 20 62 65 68 61 76 69 6f 72 20  se the behavior 
2fa0: 69 6e 63 6c 75 64 65 3a 3c 2f 70 3e 0a 0a 3c 75  include:</p>..<u
2fb0: 6c 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  l>.<li> [SQLITE_
2fc0: 46 55 4c 4c 5d 3a 20 64 61 74 61 62 61 73 65 20  FULL]: database 
2fd0: 6f 72 20 64 69 73 6b 20 66 75 6c 6c 0a 3c 6c 69  or disk full.<li
2fe0: 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d  > [SQLITE_IOERR]
2ff0: 3a 20 64 69 73 6b 20 49 2f 4f 20 65 72 72 6f 72  : disk I/O error
3000: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 42 55  .<li> [SQLITE_BU
3010: 53 59 5d 3a 20 64 61 74 61 62 61 73 65 20 69 6e  SY]: database in
3020: 20 75 73 65 20 62 79 20 61 6e 6f 74 68 65 72 20   use by another 
3030: 70 72 6f 63 65 73 73 0a 3c 6c 69 3e 20 5b 53 51  process.<li> [SQ
3040: 4c 49 54 45 5f 4e 4f 4d 45 4d 5d 3a 20 6f 75 74  LITE_NOMEM]: out
3050: 20 6f 72 20 6d 65 6d 6f 72 79 0a 3c 6c 69 3e 20   or memory.<li> 
3060: 5b 53 51 4c 49 54 45 5f 49 4e 54 45 52 52 55 50  [SQLITE_INTERRUP
3070: 54 5d 3a 20 70 72 6f 63 65 73 73 69 6e 67 20 5b  T]: processing [
3080: 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70  sqlite3_interrup
3090: 74 7c 69 6e 74 65 72 72 75 70 74 65 64 5d 0a 20  t|interrupted]. 
30a0: 20 20 20 20 62 79 20 61 70 70 6c 69 63 61 74 69      by applicati
30b0: 6f 6e 20 72 65 71 75 65 73 74 0a 3c 2f 75 6c 3e  on request.</ul>
30c0: 0a 0a 3c 70 3e 0a 46 6f 72 20 61 6c 6c 20 6f 66  ..<p>.For all of
30d0: 20 74 68 65 73 65 20 65 72 72 6f 72 73 2c 20 53   these errors, S
30e0: 51 4c 69 74 65 20 61 74 74 65 6d 70 74 73 20 74  QLite attempts t
30f0: 6f 20 75 6e 64 6f 20 6a 75 73 74 20 74 68 65 20  o undo just the 
3100: 6f 6e 65 20 73 74 61 74 65 6d 65 6e 74 0a 69 74  one statement.it
3110: 20 77 61 73 20 77 6f 72 6b 69 6e 67 20 6f 6e 20   was working on 
3120: 61 6e 64 20 6c 65 61 76 65 20 63 68 61 6e 67 65  and leave change
3130: 73 20 66 72 6f 6d 20 70 72 69 6f 72 20 73 74 61  s from prior sta
3140: 74 65 6d 65 6e 74 73 20 77 69 74 68 69 6e 20 74  tements within t
3150: 68 65 0a 73 61 6d 65 20 74 72 61 6e 73 61 63 74  he.same transact
3160: 69 6f 6e 20 69 6e 74 61 63 74 20 61 6e 64 20 63  ion intact and c
3170: 6f 6e 74 69 6e 75 65 20 77 69 74 68 20 74 68 65  ontinue with the
3180: 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 48   transaction.  H
3190: 6f 77 65 76 65 72 2c 20 0a 64 65 70 65 6e 64 69  owever, .dependi
31a0: 6e 67 20 6f 6e 20 74 68 65 20 73 74 61 74 65 6d  ng on the statem
31b0: 65 6e 74 20 62 65 69 6e 67 20 65 76 61 6c 75 61  ent being evalua
31c0: 74 65 64 20 61 6e 64 20 74 68 65 20 70 6f 69 6e  ted and the poin
31d0: 74 20 61 74 20 77 68 69 63 68 20 74 68 65 0a 65  t at which the.e
31e0: 72 72 6f 72 20 6f 63 63 75 72 73 2c 20 69 74 20  rror occurs, it 
31f0: 6d 69 67 68 74 20 62 65 20 6e 65 63 65 73 73 61  might be necessa
3200: 72 79 20 66 6f 72 20 53 51 4c 69 74 65 20 74 6f  ry for SQLite to
3210: 20 72 6f 6c 6c 62 61 63 6b 20 61 6e 64 0a 63 61   rollback and.ca
3220: 6e 63 65 6c 20 74 68 65 20 74 72 61 6e 73 61 63  ncel the transac
3230: 74 69 6f 6e 2e 20 20 41 6e 20 61 70 70 6c 69 63  tion.  An applic
3240: 61 74 69 6f 6e 20 63 61 6e 20 74 65 6c 6c 20 77  ation can tell w
3250: 68 69 63 68 0a 63 6f 75 72 73 65 20 6f 66 20 61  hich.course of a
3260: 63 74 69 6f 6e 20 53 51 4c 69 74 65 20 74 6f 6f  ction SQLite too
3270: 6b 20 62 79 20 75 73 69 6e 67 20 74 68 65 0a 5b  k by using the.[
3280: 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74 6f  sqlite3_get_auto
3290: 63 6f 6d 6d 69 74 28 29 5d 20 43 2d 6c 61 6e 67  commit()] C-lang
32a0: 75 61 67 65 20 69 6e 74 65 72 66 61 63 65 2e 3c  uage interface.<
32b0: 2f 70 3e 0a 0a 3c 70 3e 49 74 20 69 73 20 72 65  /p>..<p>It is re
32c0: 63 6f 6d 6d 65 6e 64 65 64 20 74 68 61 74 20 61  commended that a
32d0: 70 70 6c 69 63 61 74 69 6f 6e 73 20 72 65 73 70  pplications resp
32e0: 6f 6e 64 20 74 6f 20 74 68 65 20 65 72 72 6f 72  ond to the error
32f0: 73 0a 6c 69 73 74 65 64 20 61 62 6f 76 65 20 62  s.listed above b
3300: 79 20 65 78 70 6c 69 63 69 74 6c 79 20 69 73 73  y explicitly iss
3310: 75 69 6e 67 20 61 20 52 4f 4c 4c 42 41 43 4b 20  uing a ROLLBACK 
3320: 63 6f 6d 6d 61 6e 64 2e 20 20 49 66 20 74 68 65  command.  If the
3330: 20 0a 74 72 61 6e 73 61 63 74 69 6f 6e 20 68 61   .transaction ha
3340: 73 20 61 6c 72 65 61 64 79 20 62 65 65 6e 20 72  s already been r
3350: 6f 6c 6c 65 64 20 62 61 63 6b 20 61 75 74 6f 6d  olled back autom
3360: 61 74 69 63 61 6c 6c 79 0a 62 79 20 74 68 65 20  atically.by the 
3370: 65 72 72 6f 72 20 72 65 73 70 6f 6e 73 65 2c 20  error response, 
3380: 74 68 65 6e 20 74 68 65 20 52 4f 4c 4c 42 41 43  then the ROLLBAC
3390: 4b 20 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20 66  K command will f
33a0: 61 69 6c 20 77 69 74 68 20 61 6e 0a 65 72 72 6f  ail with an.erro
33b0: 72 2c 20 62 75 74 20 6e 6f 20 68 61 72 6d 20 69  r, but no harm i
33c0: 73 20 63 61 75 73 65 64 20 62 79 20 74 68 69 73  s caused by this
33d0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 46 75 74 75 72 65  .</p>..<p>Future
33e0: 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c   versions of SQL
33f0: 69 74 65 20 6d 61 79 20 65 78 74 65 6e 64 20 74  ite may extend t
3400: 68 65 20 6c 69 73 74 20 6f 66 20 65 72 72 6f 72  he list of error
3410: 73 20 77 68 69 63 68 0a 6d 69 67 68 74 20 63 61  s which.might ca
3420: 75 73 65 20 61 75 74 6f 6d 61 74 69 63 20 74 72  use automatic tr
3430: 61 6e 73 61 63 74 69 6f 6e 20 72 6f 6c 6c 62 61  ansaction rollba
3440: 63 6b 2e 20 20 46 75 74 75 72 65 20 76 65 72 73  ck.  Future vers
3450: 69 6f 6e 73 20 6f 66 0a 53 51 4c 69 74 65 20 6d  ions of.SQLite m
3460: 69 67 68 74 20 63 68 61 6e 67 65 20 74 68 65 20  ight change the 
3470: 65 72 72 6f 72 20 72 65 73 70 6f 6e 73 65 2e 20  error response. 
3480: 20 49 6e 20 70 61 72 74 69 63 75 6c 61 72 2c 20   In particular, 
3490: 77 65 20 6d 61 79 0a 63 68 6f 6f 73 65 20 74 6f  we may.choose to
34a0: 20 73 69 6d 70 6c 69 66 79 20 74 68 65 20 69 6e   simplify the in
34b0: 74 65 72 66 61 63 65 20 69 6e 20 66 75 74 75 72  terface in futur
34c0: 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  e versions of SQ
34d0: 4c 69 74 65 20 62 79 0a 63 61 75 73 69 6e 67 20  Lite by.causing 
34e0: 74 68 65 20 65 72 72 6f 72 73 20 61 62 6f 76 65  the errors above
34f0: 20 74 6f 20 66 6f 72 63 65 20 61 6e 20 75 6e 63   to force an unc
3500: 6f 6e 64 69 74 69 6f 6e 61 6c 20 72 6f 6c 6c 62  onditional rollb
3510: 61 63 6b 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  ack.</p>..<tcl>.
3520: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3530: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3540: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3550: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3560: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
3570: 53 65 63 74 69 6f 6e 20 63 6f 6d 6d 65 6e 74 20  Section comment 
3580: 63 6f 6d 6d 65 6e 74 20 7b 63 6f 6d 6d 65 6e 74  comment {comment
3590: 20 63 6f 6d 6d 65 6e 74 73 7d 0a 0a 42 75 62 62   comments}..Bubb
35a0: 6c 65 44 69 61 67 72 61 6d 20 63 6f 6d 6d 65 6e  leDiagram commen
35b0: 74 2d 73 79 6e 74 61 78 0a 3c 2f 74 63 6c 3e 0a  t-syntax.</tcl>.
35c0: 0a 3c 70 3e 43 6f 6d 6d 65 6e 74 73 20 61 72 65  .<p>Comments are
35d0: 6e 27 74 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73  n't SQL commands
35e0: 2c 20 62 75 74 20 63 61 6e 20 6f 63 63 75 72 20  , but can occur 
35f0: 77 69 74 68 69 6e 20 74 68 65 20 74 65 78 74 20  within the text 
3600: 6f 66 0a 53 51 4c 20 71 75 65 72 69 65 73 20 70  of.SQL queries p
3610: 61 73 73 65 64 20 74 6f 20 5b 73 71 6c 69 74 65  assed to [sqlite
3620: 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20  3_prepare_v2()] 
3630: 61 6e 64 20 72 65 6c 61 74 65 64 20 69 6e 74 65  and related inte
3640: 72 66 61 63 65 73 2e 2e 0a 43 6f 6d 6d 65 6e 74  rfaces...Comment
3650: 73 20 61 72 65 20 0a 74 72 65 61 74 65 64 20 61  s are .treated a
3660: 73 20 77 68 69 74 65 73 70 61 63 65 20 62 79 20  s whitespace by 
3670: 74 68 65 20 70 61 72 73 65 72 2e 20 20 54 68 65  the parser.  The
3680: 79 20 63 61 6e 20 62 65 67 69 6e 20 61 6e 79 77  y can begin anyw
3690: 68 65 72 65 20 77 68 69 74 65 73 70 61 63 65 20  here whitespace 
36a0: 0a 63 61 6e 20 62 65 20 66 6f 75 6e 64 2c 20 69  .can be found, i
36b0: 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65 20  ncluding inside 
36c0: 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74  expressions that
36d0: 20 73 70 61 6e 20 6d 75 6c 74 69 70 6c 65 20 6c   span multiple l
36e0: 69 6e 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 20  ines..</p>..<p> 
36f0: 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 62 65 67  SQL comments beg
3700: 69 6e 20 77 69 74 68 20 74 77 6f 20 63 6f 6e 73  in with two cons
3710: 65 63 75 74 69 76 65 20 22 2d 22 20 63 68 61 72  ecutive "-" char
3720: 61 63 74 65 72 73 20 28 41 53 43 49 49 20 30 78  acters (ASCII 0x
3730: 32 64 29 0a 61 6e 64 20 65 78 74 65 6e 64 20 75  2d).and extend u
3740: 70 20 74 6f 20 61 6e 64 20 69 6e 63 6c 75 64 69  p to and includi
3750: 6e 67 20 74 68 65 20 6e 65 78 74 20 6e 65 77 6c  ng the next newl
3760: 69 6e 65 20 63 68 61 72 61 63 74 65 72 20 28 41  ine character (A
3770: 53 43 49 49 20 30 78 30 61 29 0a 6f 72 20 75 6e  SCII 0x0a).or un
3780: 74 69 6c 20 74 68 65 20 65 6e 64 20 6f 66 20 69  til the end of i
3790: 6e 70 75 74 2c 20 77 68 69 63 68 65 76 65 72 20  nput, whichever 
37a0: 63 6f 6d 65 73 20 66 69 72 73 74 2e 3c 2f 70 3e  comes first.</p>
37b0: 0a 0a 3c 70 3e 20 43 20 63 6f 6d 6d 65 6e 74 73  ..<p> C comments
37c0: 20 63 61 6e 20 73 70 61 6e 20 61 6e 79 20 6e 75   can span any nu
37d0: 6d 62 65 72 20 6f 66 20 6c 69 6e 65 73 2e 20 20  mber of lines.  
37e0: 43 2d 73 74 79 6c 65 20 63 6f 6d 6d 65 6e 74 73  C-style comments
37f0: 20 62 65 67 69 6e 0a 77 69 74 68 20 22 2f 2a 22   begin.with "/*"
3800: 20 61 6e 64 20 65 78 74 65 6e 64 20 75 70 20 74   and extend up t
3810: 6f 20 61 6e 64 20 69 6e 63 6c 75 64 69 6e 67 20  o and including 
3820: 74 68 65 20 6e 65 78 74 20 22 2a 2f 22 20 63 68  the next "*/" ch
3830: 61 72 61 63 74 65 72 20 70 61 69 72 0a 6f 72 20  aracter pair.or 
3840: 75 6e 74 69 6c 20 74 68 65 20 65 6e 64 20 6f 66  until the end of
3850: 20 69 6e 70 75 74 2c 20 77 68 69 63 68 65 76 65   input, whicheve
3860: 72 20 63 6f 6d 65 73 20 66 69 72 73 74 2e 20 20  r comes first.  
3870: 43 2d 73 74 79 6c 65 20 63 6f 6d 6d 65 6e 74 73  C-style comments
3880: 0a 63 61 6e 20 73 70 61 6e 20 6d 75 6c 74 69 70  .can span multip
3890: 6c 65 20 6c 69 6e 65 73 2e 20 3c 2f 70 3e 0a 0a  le lines. </p>..
38a0: 3c 70 3e 20 43 6f 6d 6d 65 6e 74 73 20 63 61 6e  <p> Comments can
38b0: 20 61 70 70 65 61 72 20 61 6e 79 77 68 65 72 65   appear anywhere
38c0: 20 77 68 69 74 65 73 70 61 63 65 20 63 61 6e 20   whitespace can 
38d0: 6f 63 63 75 72 2c 0a 69 6e 63 6c 75 64 69 6e 67  occur,.including
38e0: 20 69 6e 73 69 64 65 20 65 78 70 72 65 73 73 69   inside expressi
38f0: 6f 6e 73 20 61 6e 64 20 69 6e 20 74 68 65 20 6d  ons and in the m
3900: 69 64 64 6c 65 20 6f 66 20 6f 74 68 65 72 20 53  iddle of other S
3910: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 43  QL statements..C
3920: 6f 6d 6d 65 6e 74 73 20 64 6f 20 6e 6f 74 20 6e  omments do not n
3930: 65 73 74 2e 0a 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c  est..</p>...<tcl
3940: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
3950: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3960: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3970: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3980: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3990: 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45  .Section {CREATE
39a0: 20 49 4e 44 45 58 7d 20 63 72 65 61 74 65 69 6e   INDEX} createin
39b0: 64 65 78 20 7b 7b 43 52 45 41 54 45 20 49 4e 44  dex {{CREATE IND
39c0: 45 58 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67  EX}}..BubbleDiag
39d0: 72 61 6d 20 63 72 65 61 74 65 2d 69 6e 64 65 78  ram create-index
39e0: 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c 65 44 69  -stmt 1.BubbleDi
39f0: 61 67 72 61 6d 20 69 6e 64 65 78 65 64 2d 63 6f  agram indexed-co
3a00: 6c 75 6d 6e 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  lumn.</tcl>..<p>
3a10: 54 68 65 20 43 52 45 41 54 45 20 49 4e 44 45 58  The CREATE INDEX
3a20: 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74   command consist
3a30: 73 20 6f 66 20 74 68 65 20 6b 65 79 77 6f 72 64  s of the keyword
3a40: 73 20 22 43 52 45 41 54 45 20 49 4e 44 45 58 22  s "CREATE INDEX"
3a50: 20 66 6f 6c 6c 6f 77 65 64 0a 62 79 20 74 68 65   followed.by the
3a60: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 65 77   name of the new
3a70: 20 69 6e 64 65 78 2c 20 74 68 65 20 6b 65 79 77   index, the keyw
3a80: 6f 72 64 20 22 4f 4e 22 2c 20 74 68 65 20 6e 61  ord "ON", the na
3a90: 6d 65 20 6f 66 20 61 20 70 72 65 76 69 6f 75 73  me of a previous
3aa0: 6c 79 0a 63 72 65 61 74 65 64 20 74 61 62 6c 65  ly.created table
3ab0: 20 74 68 61 74 20 69 73 20 74 6f 20 62 65 20 69   that is to be i
3ac0: 6e 64 65 78 65 64 2c 20 61 6e 64 20 61 20 70 61  ndexed, and a pa
3ad0: 72 65 6e 74 68 65 73 69 7a 65 64 20 6c 69 73 74  renthesized list
3ae0: 20 6f 66 20 6e 61 6d 65 73 20 6f 66 0a 63 6f 6c   of names of.col
3af0: 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c  umns in the tabl
3b00: 65 20 74 68 61 74 20 61 72 65 20 75 73 65 64 20  e that are used 
3b10: 66 6f 72 20 74 68 65 20 69 6e 64 65 78 20 6b 65  for the index ke
3b20: 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68 20  y.</p>..<p>Each 
3b30: 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e 20  column name can 
3b40: 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 6f  be followed by o
3b50: 6e 65 20 6f 66 20 74 68 65 20 22 41 53 43 22 20  ne of the "ASC" 
3b60: 6f 72 20 22 44 45 53 43 22 20 6b 65 79 77 6f 72  or "DESC" keywor
3b70: 64 73 0a 74 6f 20 69 6e 64 69 63 61 74 65 20 73  ds.to indicate s
3b80: 6f 72 74 20 6f 72 64 65 72 2e 20 20 54 68 65 20  ort order.  The 
3b90: 73 6f 72 74 20 6f 72 64 65 72 20 6d 61 79 20 6f  sort order may o
3ba0: 72 20 6d 61 79 20 6e 6f 74 20 62 65 20 69 67 6e  r may not be ign
3bb0: 6f 72 65 64 20 64 65 70 65 6e 64 69 6e 67 0a 6f  ored depending.o
3bc0: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  n the database f
3bd0: 69 6c 65 20 66 6f 72 6d 61 74 2e 20 20 54 68 65  ile format.  The
3be0: 20 22 6c 65 67 61 63 79 22 20 66 69 6c 65 20 66   "legacy" file f
3bf0: 6f 72 6d 61 74 20 69 67 6e 6f 72 65 73 20 69 6e  ormat ignores in
3c00: 64 65 78 0a 73 6f 72 74 20 6f 72 64 65 72 2e 20  dex.sort order. 
3c10: 20 54 68 65 20 64 65 73 63 65 6e 64 69 6e 67 20   The descending 
3c20: 69 6e 64 65 78 20 66 69 6c 65 20 66 6f 72 6d 61  index file forma
3c30: 74 20 74 61 6b 65 73 20 69 6e 64 65 78 20 73 6f  t takes index so
3c40: 72 74 20 6f 72 64 65 72 0a 69 6e 74 6f 20 61 63  rt order.into ac
3c50: 63 6f 75 6e 74 2e 20 20 4f 6e 6c 79 20 63 6f 70  count.  Only cop
3c60: 69 65 73 20 6f 66 20 53 51 4c 69 74 65 20 6e 65  ies of SQLite ne
3c70: 77 65 72 20 74 68 61 6e 20 5b 76 65 72 73 69 6f  wer than [versio
3c80: 6e 20 33 2e 33 2e 30 5d 20 0a 28 72 65 6c 65 61  n 3.3.0] .(relea
3c90: 73 65 64 20 6f 6e 20 32 30 30 36 2d 30 31 2d 31  sed on 2006-01-1
3ca0: 30 29 20 61 72 65 20 61 62 6c 65 20 74 6f 20 75  0) are able to u
3cb0: 6e 64 65 72 73 74 61 6e 64 20 74 68 65 20 6e 65  nderstand the ne
3cc0: 77 65 72 20 64 65 73 63 65 6e 64 69 6e 67 0a 69  wer descending.i
3cd0: 6e 64 65 78 20 66 69 6c 65 20 66 6f 72 6d 61 74  ndex file format
3ce0: 20 61 6e 64 20 73 6f 20 66 6f 72 20 63 6f 6d 70   and so for comp
3cf0: 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 6f  atibility with o
3d00: 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66  lder versions of
3d10: 0a 53 51 4c 69 74 65 2c 20 74 68 65 20 6c 65 67  .SQLite, the leg
3d20: 61 63 79 20 66 69 6c 65 20 66 6f 72 6d 61 74 20  acy file format 
3d30: 69 73 20 67 65 6e 65 72 61 74 65 64 20 62 79 20  is generated by 
3d40: 64 65 66 61 75 6c 74 2e 20 20 55 73 65 20 74 68  default.  Use th
3d50: 65 0a 5b 6c 65 67 61 63 79 5f 66 69 6c 65 5f 66  e.[legacy_file_f
3d60: 6f 72 6d 61 74 5d 20 70 72 61 67 6d 61 20 74 6f  ormat] pragma to
3d70: 20 6d 6f 64 69 66 79 20 74 68 69 73 20 62 65 68   modify this beh
3d80: 61 76 69 6f 72 20 61 6e 64 20 67 65 6e 65 72 61  avior and genera
3d90: 74 65 0a 64 61 74 61 62 61 73 65 73 20 74 68 61  te.databases tha
3da0: 74 20 75 73 65 20 74 68 65 20 6e 65 77 65 72 20  t use the newer 
3db0: 66 69 6c 65 20 66 6f 72 6d 61 74 2e 20 20 46 75  file format.  Fu
3dc0: 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66  ture versions of
3dd0: 20 53 51 4c 69 74 65 0a 6d 61 79 20 62 65 67 69   SQLite.may begi
3de0: 6e 20 74 6f 20 67 65 6e 65 72 61 74 65 20 74 68  n to generate th
3df0: 65 20 6e 65 77 65 72 20 66 69 6c 65 20 66 6f 72  e newer file for
3e00: 6d 61 74 20 62 79 20 64 65 66 61 75 6c 74 2e 3c  mat by default.<
3e10: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 43 4f 4c 4c  /p>..<p>The COLL
3e20: 41 54 45 20 63 6c 61 75 73 65 20 66 6f 6c 6c 6f  ATE clause follo
3e30: 77 69 6e 67 20 65 61 63 68 20 63 6f 6c 75 6d 6e  wing each column
3e40: 20 6e 61 6d 65 20 64 65 66 69 6e 65 73 20 61 20   name defines a 
3e50: 63 6f 6c 6c 61 74 69 6e 67 0a 73 65 71 75 65 6e  collating.sequen
3e60: 63 65 20 75 73 65 64 20 66 6f 72 20 74 65 78 74  ce used for text
3e70: 20 65 6e 74 72 69 65 73 20 69 6e 20 74 68 61 74   entries in that
3e80: 20 63 6f 6c 75 6d 6e 2e 20 20 54 68 65 20 64 65   column.  The de
3e90: 66 61 75 6c 74 20 63 6f 6c 6c 61 74 69 6e 67 0a  fault collating.
3ea0: 73 65 71 75 65 6e 63 65 20 69 73 20 74 68 65 20  sequence is the 
3eb0: 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e  collating sequen
3ec0: 63 65 20 64 65 66 69 6e 65 64 20 66 6f 72 20 74  ce defined for t
3ed0: 68 61 74 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68  hat column in th
3ee0: 65 0a 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d  e.[CREATE TABLE]
3ef0: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f 72 20   statement.  Or 
3f00: 69 66 20 6e 6f 20 63 6f 6c 6c 61 74 69 6e 67 20  if no collating 
3f10: 73 65 71 75 65 6e 63 65 20 69 73 20 6f 74 68 65  sequence is othe
3f20: 72 77 69 73 65 20 64 65 66 69 6e 65 64 2c 0a 74  rwise defined,.t
3f30: 68 65 20 62 75 69 6c 74 2d 69 6e 20 42 49 4e 41  he built-in BINA
3f40: 52 59 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71  RY collating seq
3f50: 75 65 6e 63 65 20 69 73 20 75 73 65 64 2e 3c 2f  uence is used.</
3f60: 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72 65  p>..<p>There are
3f70: 20 6e 6f 20 61 72 62 69 74 72 61 72 79 20 6c 69   no arbitrary li
3f80: 6d 69 74 73 20 6f 6e 20 74 68 65 20 6e 75 6d 62  mits on the numb
3f90: 65 72 20 6f 66 20 69 6e 64 69 63 65 73 20 74 68  er of indices th
3fa0: 61 74 20 63 61 6e 20 62 65 0a 61 74 74 61 63 68  at can be.attach
3fb0: 65 64 20 74 6f 20 61 20 73 69 6e 67 6c 65 20 74  ed to a single t
3fc0: 61 62 6c 65 2e 20 20 54 68 65 20 6e 75 6d 62 65  able.  The numbe
3fd0: 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  r of columns in 
3fe0: 61 6e 20 69 6e 64 65 78 20 69 73 20 0a 6c 69 6d  an index is .lim
3ff0: 69 74 65 64 20 74 6f 20 5b 53 51 4c 49 54 45 5f  ited to [SQLITE_
4000: 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 2e 3c 2f 70 3e  MAX_COLUMN].</p>
4010: 0a 0a 3c 70 3e 49 66 20 74 68 65 20 55 4e 49 51  ..<p>If the UNIQ
4020: 55 45 20 6b 65 79 77 6f 72 64 20 61 70 70 65 61  UE keyword appea
4030: 72 73 20 62 65 74 77 65 65 6e 20 43 52 45 41 54  rs between CREAT
4040: 45 20 61 6e 64 20 49 4e 44 45 58 20 74 68 65 6e  E and INDEX then
4050: 20 64 75 70 6c 69 63 61 74 65 0a 69 6e 64 65 78   duplicate.index
4060: 20 65 6e 74 72 69 65 73 20 61 72 65 20 6e 6f 74   entries are not
4070: 20 61 6c 6c 6f 77 65 64 2e 20 20 41 6e 79 20 61   allowed.  Any a
4080: 74 74 65 6d 70 74 20 74 6f 20 69 6e 73 65 72 74  ttempt to insert
4090: 20 61 20 64 75 70 6c 69 63 61 74 65 20 65 6e 74   a duplicate ent
40a0: 72 79 0a 77 69 6c 6c 20 72 65 73 75 6c 74 20 69  ry.will result i
40b0: 6e 20 61 6e 20 65 72 72 6f 72 2e 20 20 46 6f 72  n an error.  For
40c0: 20 74 68 65 20 70 75 72 70 6f 73 65 73 20 6f 66   the purposes of
40d0: 20 75 6e 69 71 75 65 20 69 6e 64 69 63 65 73 2c   unique indices,
40e0: 20 61 6c 6c 20 4e 55 4c 4c 20 76 61 6c 75 65 73   all NULL values
40f0: 0a 61 72 65 20 63 6f 6e 73 69 64 65 72 65 64 20  .are considered 
4100: 74 6f 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f  to different fro
4110: 6d 20 61 6c 6c 20 6f 74 68 65 72 20 4e 55 4c 4c  m all other NULL
4120: 20 76 61 6c 75 65 73 20 61 6e 64 20 61 72 65 20   values and are 
4130: 74 68 75 73 20 75 6e 69 71 75 65 2e 3c 2f 70 3e  thus unique.</p>
4140: 0a 0a 3c 70 3e 54 68 65 20 74 65 78 74 0a 6f 66  ..<p>The text.of
4150: 20 65 61 63 68 20 43 52 45 41 54 45 20 49 4e 44   each CREATE IND
4160: 45 58 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  EX statement is 
4170: 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 3c 62  stored in the <b
4180: 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f  >sqlite_master</
4190: 62 3e 0a 6f 72 20 3c 62 3e 73 71 6c 69 74 65 5f  b>.or <b>sqlite_
41a0: 74 65 6d 70 5f 6d 61 73 74 65 72 3c 2f 62 3e 20  temp_master</b> 
41b0: 74 61 62 6c 65 2c 20 64 65 70 65 6e 64 69 6e 67  table, depending
41c0: 20 6f 6e 20 77 68 65 74 68 65 72 20 74 68 65 20   on whether the 
41d0: 74 61 62 6c 65 0a 62 65 69 6e 67 20 69 6e 64 65  table.being inde
41e0: 78 65 64 20 69 73 20 74 65 6d 70 6f 72 61 72 79  xed is temporary
41f0: 2e 20 20 45 76 65 72 79 20 74 69 6d 65 20 74 68  .  Every time th
4200: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70  e database is op
4210: 65 6e 65 64 2c 0a 61 6c 6c 20 43 52 45 41 54 45  ened,.all CREATE
4220: 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74   INDEX statement
4230: 73 0a 61 72 65 20 72 65 61 64 20 66 72 6f 6d 20  s.are read from 
4240: 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61  the <b>sqlite_ma
4250: 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61  ster</b> table a
4260: 6e 64 20 75 73 65 64 20 74 6f 20 72 65 67 65 6e  nd used to regen
4270: 65 72 61 74 65 0a 53 51 4c 69 74 65 27 73 20 69  erate.SQLite's i
4280: 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73 65 6e  nternal represen
4290: 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e  tation of the in
42a0: 64 65 78 20 6c 61 79 6f 75 74 2e 3c 2f 70 3e 0a  dex layout.</p>.
42b0: 0a 3c 70 3e 49 66 20 74 68 65 20 6f 70 74 69 6f  .<p>If the optio
42c0: 6e 61 6c 20 49 46 20 4e 4f 54 20 45 58 49 53 54  nal IF NOT EXIST
42d0: 53 20 63 6c 61 75 73 65 20 69 73 20 70 72 65 73  S clause is pres
42e0: 65 6e 74 20 61 6e 64 20 61 6e 6f 74 68 65 72 20  ent and another 
42f0: 69 6e 64 65 78 0a 77 69 74 68 20 74 68 65 20 73  index.with the s
4300: 61 6d 65 20 6e 61 6d 65 20 61 6c 65 61 64 79 20  ame name aleady 
4310: 65 78 69 73 74 73 2c 20 74 68 65 6e 20 74 68 69  exists, then thi
4320: 73 20 63 6f 6d 6d 61 6e 64 20 62 65 63 6f 6d 65  s command become
4330: 73 20 61 20 6e 6f 2d 6f 70 2e 3c 2f 70 3e 0a 0a  s a no-op.</p>..
4340: 3c 70 3e 49 6e 64 65 78 65 73 20 61 72 65 20 72  <p>Indexes are r
4350: 65 6d 6f 76 65 64 20 77 69 74 68 20 74 68 65 20  emoved with the 
4360: 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 64 72  <a href="lang_dr
4370: 6f 70 69 6e 64 65 78 2e 68 74 6d 6c 22 3e 44 52  opindex.html">DR
4380: 4f 50 20 49 4e 44 45 58 3c 2f 61 3e 20 0a 63 6f  OP INDEX</a> .co
4390: 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63  mmand.</p>...<tc
43a0: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
43b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
43c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
43d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
43e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
43f0: 23 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54  #.Section {CREAT
4400: 45 20 54 41 42 4c 45 7d 20 7b 63 72 65 61 74 65  E TABLE} {create
4410: 74 61 62 6c 65 7d 20 7b 7b 43 52 45 41 54 45 20  table} {{CREATE 
4420: 54 41 42 4c 45 7d 7d 0a 0a 42 75 62 62 6c 65 44  TABLE}}..BubbleD
4430: 69 61 67 72 61 6d 20 63 72 65 61 74 65 2d 74 61  iagram create-ta
4440: 62 6c 65 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c  ble-stmt 1.Bubbl
4450: 65 44 69 61 67 72 61 6d 20 63 6f 6c 75 6d 6e 2d  eDiagram column-
4460: 64 65 66 0a 42 75 62 62 6c 65 44 69 61 67 72 61  def.BubbleDiagra
4470: 6d 20 74 79 70 65 2d 6e 61 6d 65 0a 42 75 62 62  m type-name.Bubb
4480: 6c 65 44 69 61 67 72 61 6d 20 63 6f 6c 75 6d 6e  leDiagram column
4490: 2d 63 6f 6e 73 74 72 61 69 6e 74 0a 42 75 62 62  -constraint.Bubb
44a0: 6c 65 44 69 61 67 72 61 6d 20 74 61 62 6c 65 2d  leDiagram table-
44b0: 63 6f 6e 73 74 72 61 69 6e 74 0a 42 75 62 62 6c  constraint.Bubbl
44c0: 65 44 69 61 67 72 61 6d 20 66 6f 72 65 69 67 6e  eDiagram foreign
44d0: 2d 6b 65 79 2d 63 6c 61 75 73 65 0a 3c 2f 74 63  -key-clause.</tc
44e0: 6c 3e 0a 0a 3c 70 3e 41 20 43 52 45 41 54 45 20  l>..<p>A CREATE 
44f0: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20  TABLE statement 
4500: 69 73 20 62 61 73 69 63 61 6c 6c 79 20 74 68 65  is basically the
4510: 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45 41 54   keywords "CREAT
4520: 45 20 54 41 42 4c 45 22 0a 66 6f 6c 6c 6f 77 65  E TABLE".followe
4530: 64 20 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66  d by the name of
4540: 20 61 20 6e 65 77 20 74 61 62 6c 65 20 61 6e 64   a new table and
4550: 20 61 20 70 61 72 65 6e 74 68 65 73 69 7a 65 64   a parenthesized
4560: 20 6c 69 73 74 20 6f 66 20 63 6f 6c 75 6d 6e 0a   list of column.
4570: 64 65 66 69 6e 69 74 69 6f 6e 73 20 61 6e 64 20  definitions and 
4580: 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20 0a 54  constraints.  .T
4590: 61 62 6c 65 73 20 6e 61 6d 65 73 20 74 68 61 74  ables names that
45a0: 20 62 65 67 69 6e 20 77 69 74 68 20 22 3c 62 3e   begin with "<b>
45b0: 73 71 6c 69 74 65 5f 3c 2f 62 3e 22 20 61 72 65  sqlite_</b>" are
45c0: 20 72 65 73 65 72 76 65 64 0a 66 6f 72 20 75 73   reserved.for us
45d0: 65 20 62 79 20 74 68 65 20 65 6e 67 69 6e 65 2e  e by the engine.
45e0: 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68 20 63 6f  </p>..<p>Each co
45f0: 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20  lumn definition 
4600: 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  is the name of t
4610: 68 65 20 63 6f 6c 75 6d 6e 20 66 6f 6c 6c 6f 77  he column follow
4620: 65 64 20 62 79 20 74 68 65 0a 64 61 74 61 74 79  ed by the.dataty
4630: 70 65 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75  pe for that colu
4640: 6d 6e 2c 20 74 68 65 6e 20 6f 6e 65 20 6f 72 20  mn, then one or 
4650: 6d 6f 72 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f  more optional co
4660: 6c 75 6d 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73  lumn constraints
4670: 2e 0a 54 68 65 20 64 61 74 61 74 79 70 65 20 66  ..The datatype f
4680: 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20 64 6f  or the column do
4690: 65 73 20 6e 6f 74 20 72 65 73 74 72 69 63 74 20  es not restrict 
46a0: 77 68 61 74 20 64 61 74 61 20 6d 61 79 20 62 65  what data may be
46b0: 20 70 75 74 0a 69 6e 20 74 68 61 74 20 63 6f 6c   put.in that col
46c0: 75 6d 6e 2e 0a 53 65 65 20 3c 61 20 68 72 65 66  umn..See <a href
46d0: 3d 22 64 61 74 61 74 79 70 65 33 2e 68 74 6d 6c  ="datatype3.html
46e0: 22 3e 44 61 74 61 74 79 70 65 73 20 49 6e 20 53  ">Datatypes In S
46f0: 51 4c 69 74 65 20 56 65 72 73 69 6f 6e 20 33 3c  QLite Version 3<
4700: 2f 61 3e 20 66 6f 72 0a 61 64 64 69 74 69 6f 6e  /a> for.addition
4710: 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a  al information..
4720: 54 68 65 20 55 4e 49 51 55 45 20 63 6f 6e 73 74  The UNIQUE const
4730: 72 61 69 6e 74 20 63 61 75 73 65 73 20 61 6e 20  raint causes an 
4740: 75 6e 69 71 75 65 20 69 6e 64 65 78 20 74 6f 20  unique index to 
4750: 62 65 20 63 72 65 61 74 65 64 20 6f 6e 20 74 68  be created on th
4760: 65 20 73 70 65 63 69 66 69 65 64 0a 63 6f 6c 75  e specified.colu
4770: 6d 6e 73 2e 20 20 41 6c 6c 20 4e 55 4c 4c 20 76  mns.  All NULL v
4780: 61 6c 75 65 73 20 61 72 65 20 63 6f 6e 73 69 64  alues are consid
4790: 65 72 65 64 20 64 69 66 66 65 72 65 6e 74 20 66  ered different f
47a0: 72 6f 6d 20 65 61 63 68 20 6f 74 68 65 72 20 61  rom each other a
47b0: 6e 64 20 66 72 6f 6d 0a 61 6c 6c 20 6f 74 68 65  nd from.all othe
47c0: 72 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65  r values for the
47d0: 20 70 75 72 70 6f 73 65 20 6f 66 20 64 65 74 65   purpose of dete
47e0: 72 6d 69 6e 69 6e 67 20 75 6e 69 71 75 65 6e 65  rmining uniquene
47f0: 73 73 2c 20 68 65 6e 63 65 20 61 20 55 4e 49 51  ss, hence a UNIQ
4800: 55 45 0a 63 6f 6c 75 6d 6e 20 6d 61 79 20 63 6f  UE.column may co
4810: 6e 74 61 69 6e 20 6d 75 6c 74 69 70 6c 65 20 65  ntain multiple e
4820: 6e 74 72 69 65 73 20 77 69 74 68 20 74 68 65 20  ntries with the 
4830: 76 61 6c 75 65 20 6f 66 20 4e 55 4c 4c 2e 0a 54  value of NULL..T
4840: 68 65 20 43 4f 4c 4c 41 54 45 20 63 6c 61 75 73  he COLLATE claus
4850: 65 20 73 70 65 63 69 66 69 65 73 20 77 68 61 74  e specifies what
4860: 20 74 65 78 74 20 0a 5b 63 6f 6c 6c 61 74 69 6e   text .[collatin
4870: 67 20 66 75 6e 63 74 69 6f 6e 5d 20 74 6f 20 75  g function] to u
4880: 73 65 20 77 68 65 6e 20 63 6f 6d 70 61 72 69 6e  se when comparin
4890: 67 20 74 65 78 74 20 65 6e 74 72 69 65 73 20 66  g text entries f
48a0: 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 2e 20 20  or the column.  
48b0: 0a 54 68 65 20 62 75 69 6c 74 2d 69 6e 20 5b 42  .The built-in [B
48c0: 49 4e 41 52 59 5d 20 63 6f 6c 6c 61 74 69 6e 67  INARY] collating
48d0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65   function is use
48e0: 64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 3c 70  d by default..<p
48f0: 3e 0a 54 68 65 20 44 45 46 41 55 4c 54 20 63 6f  >.The DEFAULT co
4900: 6e 73 74 72 61 69 6e 74 20 73 70 65 63 69 66 69  nstraint specifi
4910: 65 73 20 61 20 64 65 66 61 75 6c 74 20 76 61 6c  es a default val
4920: 75 65 20 74 6f 20 75 73 65 20 77 68 65 6e 20 64  ue to use when d
4930: 6f 69 6e 67 20 61 6e 20 5b 49 4e 53 45 52 54 5d  oing an [INSERT]
4940: 2e 0a 54 68 65 20 76 61 6c 75 65 20 6d 61 79 20  ..The value may 
4950: 62 65 20 4e 55 4c 4c 2c 20 61 20 73 74 72 69 6e  be NULL, a strin
4960: 67 20 63 6f 6e 73 74 61 6e 74 20 6f 72 20 61 20  g constant or a 
4970: 6e 75 6d 62 65 72 2e 20 53 74 61 72 74 69 6e 67  number. Starting
4980: 20 77 69 74 68 0a 5b 76 65 72 73 69 6f 6e 20 33   with.[version 3
4990: 2e 31 2e 30 5d 2c 0a 74 68 65 20 64 65 66 61 75  .1.0],.the defau
49a0: 6c 74 20 76 61 6c 75 65 20 6d 61 79 20 61 6c 73  lt value may als
49b0: 6f 20 62 65 20 6f 6e 65 20 6f 66 20 74 68 65 20  o be one of the 
49c0: 73 70 65 63 69 61 6c 20 63 61 73 65 2d 69 6e 64  special case-ind
49d0: 65 70 65 6e 64 61 6e 74 0a 6b 65 79 77 6f 72 64  ependant.keyword
49e0: 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20  s CURRENT_TIME, 
49f0: 43 55 52 52 45 4e 54 5f 44 41 54 45 20 6f 72 20  CURRENT_DATE or 
4a00: 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d  CURRENT_TIMESTAM
4a10: 50 2e 20 49 66 20 74 68 65 20 76 61 6c 75 65 20  P. If the value 
4a20: 69 73 0a 4e 55 4c 4c 2c 20 61 20 73 74 72 69 6e  is.NULL, a strin
4a30: 67 20 63 6f 6e 73 74 61 6e 74 20 6f 72 20 6e 75  g constant or nu
4a40: 6d 62 65 72 2c 20 69 74 20 69 73 20 6c 69 74 65  mber, it is lite
4a50: 72 61 6c 6c 79 20 69 6e 73 65 72 74 65 64 20 69  rally inserted i
4a60: 6e 74 6f 20 74 68 65 20 63 6f 6c 75 6d 6e 0a 77  nto the column.w
4a70: 68 65 6e 65 76 65 72 20 61 6e 20 49 4e 53 45 52  henever an INSER
4a80: 54 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74  T statement that
4a90: 20 64 6f 65 73 20 6e 6f 74 20 73 70 65 63 69 66   does not specif
4aa0: 79 20 61 20 76 61 6c 75 65 20 66 6f 72 20 74 68  y a value for th
4ab0: 65 20 63 6f 6c 75 6d 6e 20 69 73 0a 65 78 65 63  e column is.exec
4ac0: 75 74 65 64 2e 20 49 66 20 74 68 65 20 76 61 6c  uted. If the val
4ad0: 75 65 20 69 73 20 43 55 52 52 45 4e 54 5f 54 49  ue is CURRENT_TI
4ae0: 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54 45  ME, CURRENT_DATE
4af0: 20 6f 72 20 43 55 52 52 45 4e 54 5f 54 49 4d 45   or CURRENT_TIME
4b00: 53 54 41 4d 50 2c 20 74 68 65 6e 0a 74 68 65 20  STAMP, then.the 
4b10: 63 75 72 72 65 6e 74 20 55 54 43 20 64 61 74 65  current UTC date
4b20: 20 61 6e 64 2f 6f 72 20 74 69 6d 65 20 69 73 20   and/or time is 
4b30: 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 20 74 68  inserted into th
4b40: 65 20 63 6f 6c 75 6d 6e 73 2e 20 46 6f 72 0a 43  e columns. For.C
4b50: 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 74 68 65  URRENT_TIME, the
4b60: 20 66 6f 72 6d 61 74 20 69 73 20 48 48 3a 4d 4d   format is HH:MM
4b70: 3a 53 53 2e 20 46 6f 72 20 43 55 52 52 45 4e 54  :SS. For CURRENT
4b80: 5f 44 41 54 45 2c 20 59 59 59 59 2d 4d 4d 2d 44  _DATE, YYYY-MM-D
4b90: 44 2e 20 54 68 65 20 66 6f 72 6d 61 74 0a 66 6f  D. The format.fo
4ba0: 72 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54  r CURRENT_TIMEST
4bb0: 41 4d 50 20 69 73 20 22 59 59 59 59 2d 4d 4d 2d  AMP is "YYYY-MM-
4bc0: 44 44 20 48 48 3a 4d 4d 3a 53 53 22 2e 0a 3c 2f  DD HH:MM:SS"..</
4bd0: 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67  p>..<tcl>hd_frag
4be0: 6d 65 6e 74 20 72 6f 77 69 64 20 7b 49 4e 54 45  ment rowid {INTE
4bf0: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 7d  GER PRIMARY KEY}
4c00: 20 52 4f 57 49 44 3c 2f 74 63 6c 3e 0a 3c 70 3e   ROWID</tcl>.<p>
4c10: 53 70 65 63 69 66 79 69 6e 67 20 61 20 50 52 49  Specifying a PRI
4c20: 4d 41 52 59 20 4b 45 59 20 6e 6f 72 6d 61 6c 6c  MARY KEY normall
4c30: 79 20 6a 75 73 74 20 63 72 65 61 74 65 73 20 61  y just creates a
4c40: 20 55 4e 49 51 55 45 20 69 6e 64 65 78 0a 6f 6e   UNIQUE index.on
4c50: 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
4c60: 6e 67 20 63 6f 6c 75 6d 6e 73 2e 20 20 48 6f 77  ng columns.  How
4c70: 65 76 65 72 2c 20 69 66 20 70 72 69 6d 61 72 79  ever, if primary
4c80: 20 6b 65 79 20 69 73 20 6f 6e 20 61 20 73 69 6e   key is on a sin
4c90: 67 6c 65 20 63 6f 6c 75 6d 6e 0a 74 68 61 74 20  gle column.that 
4ca0: 68 61 73 20 64 61 74 61 74 79 70 65 20 49 4e 54  has datatype INT
4cb0: 45 47 45 52 2c 20 74 68 65 6e 20 74 68 61 74 20  EGER, then that 
4cc0: 63 6f 6c 75 6d 6e 20 69 73 20 75 73 65 64 20 69  column is used i
4cd0: 6e 74 65 72 6e 61 6c 6c 79 0a 61 73 20 74 68 65  nternally.as the
4ce0: 20 61 63 74 75 61 6c 20 6b 65 79 20 6f 66 20 74   actual key of t
4cf0: 68 65 20 42 2d 54 72 65 65 20 66 6f 72 20 74 68  he B-Tree for th
4d00: 65 20 74 61 62 6c 65 2e 20 20 54 68 69 73 20 6d  e table.  This m
4d10: 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 63 6f  eans that the co
4d20: 6c 75 6d 6e 0a 6d 61 79 20 6f 6e 6c 79 20 68 6f  lumn.may only ho
4d30: 6c 64 20 75 6e 69 71 75 65 20 69 6e 74 65 67 65  ld unique intege
4d40: 72 20 76 61 6c 75 65 73 2e 20 20 28 45 78 63 65  r values.  (Exce
4d50: 70 74 20 66 6f 72 20 74 68 69 73 20 6f 6e 65 20  pt for this one 
4d60: 63 61 73 65 2c 0a 53 51 4c 69 74 65 20 69 67 6e  case,.SQLite ign
4d70: 6f 72 65 73 20 74 68 65 20 64 61 74 61 74 79 70  ores the datatyp
4d80: 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20  e specification 
4d90: 6f 66 20 63 6f 6c 75 6d 6e 73 20 61 6e 64 20 61  of columns and a
4da0: 6c 6c 6f 77 73 0a 61 6e 79 20 6b 69 6e 64 20 6f  llows.any kind o
4db0: 66 20 64 61 74 61 20 74 6f 20 62 65 20 70 75 74  f data to be put
4dc0: 20 69 6e 20 61 20 63 6f 6c 75 6d 6e 20 72 65 67   in a column reg
4dd0: 61 72 64 6c 65 73 73 20 6f 66 20 69 74 73 20 64  ardless of its d
4de0: 65 63 6c 61 72 65 64 0a 64 61 74 61 74 79 70 65  eclared.datatype
4df0: 2e 29 20 20 49 66 20 61 20 74 61 62 6c 65 20 64  .)  If a table d
4e00: 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 61 6e 20  oes not have an 
4e10: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
4e20: 4b 45 59 20 63 6f 6c 75 6d 6e 2c 0a 74 68 65 6e  KEY column,.then
4e30: 20 74 68 65 20 42 2d 54 72 65 65 20 6b 65 79 20   the B-Tree key 
4e40: 77 69 6c 6c 20 62 65 20 61 20 61 75 74 6f 6d 61  will be a automa
4e50: 74 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74 65  tically generate
4e60: 64 20 69 6e 74 65 67 65 72 2e 0a 54 68 65 20 42  d integer..The B
4e70: 2d 54 72 65 65 20 6b 65 79 20 66 6f 72 20 61 20  -Tree key for a 
4e80: 72 6f 77 20 63 61 6e 20 61 6c 77 61 79 73 20 62  row can always b
4e90: 65 20 61 63 63 65 73 73 65 64 20 75 73 69 6e 67  e accessed using
4ea0: 20 6f 6e 65 20 6f 66 20 74 68 65 0a 73 70 65 63   one of the.spec
4eb0: 69 61 6c 20 6e 61 6d 65 73 20 22 3c 62 3e 52 4f  ial names "<b>RO
4ec0: 57 49 44 3c 2f 62 3e 22 2c 20 22 3c 62 3e 4f 49  WID</b>", "<b>OI
4ed0: 44 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f  D</b>", or "<b>_
4ee0: 52 4f 57 49 44 5f 3c 2f 62 3e 22 2e 0a 54 68 69  ROWID_</b>"..Thi
4ef0: 73 20 69 73 20 74 72 75 65 20 72 65 67 61 72 64  s is true regard
4f00: 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65 72 20  less of whether 
4f10: 6f 72 20 6e 6f 74 20 74 68 65 72 65 20 69 73 20  or not there is 
4f20: 61 6e 20 49 4e 54 45 47 45 52 0a 50 52 49 4d 41  an INTEGER.PRIMA
4f30: 52 59 20 4b 45 59 2e 20 20 41 6e 20 49 4e 54 45  RY KEY.  An INTE
4f40: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20  GER PRIMARY KEY 
4f50: 63 6f 6c 75 6d 6e 20 63 61 6e 20 61 6c 73 6f 20  column can also 
4f60: 69 6e 63 6c 75 64 65 20 74 68 65 0a 6b 65 79 77  include the.keyw
4f70: 6f 72 64 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45  ord [AUTOINCREME
4f80: 4e 54 5d 2e 20 20 54 68 65 20 5b 41 55 54 4f 49  NT].  The [AUTOI
4f90: 4e 43 52 45 4d 45 4e 54 5d 20 6b 65 79 77 6f 72  NCREMENT] keywor
4fa0: 64 20 6d 6f 64 69 66 69 65 64 20 74 68 65 20 77  d modified the w
4fb0: 61 79 0a 74 68 61 74 20 42 2d 54 72 65 65 20 6b  ay.that B-Tree k
4fc0: 65 79 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69  eys are automati
4fd0: 63 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 64 2e  cally generated.
4fe0: 20 20 41 64 64 69 74 69 6f 6e 61 6c 20 64 65 74    Additional det
4ff0: 61 69 6c 0a 6f 6e 20 61 75 74 6f 6d 61 74 69 63  ail.on automatic
5000: 20 42 2d 54 72 65 65 20 6b 65 79 20 67 65 6e 65   B-Tree key gene
5010: 72 61 74 69 6f 6e 20 69 73 20 61 76 61 69 6c 61  ration is availa
5020: 62 6c 65 0a 3c 61 20 68 72 65 66 3d 22 61 75 74  ble.<a href="aut
5030: 6f 69 6e 63 2e 68 74 6d 6c 22 3e 73 65 70 61 72  oinc.html">separ
5040: 61 74 65 6c 79 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a  ately</a>.</p>..
5050: 3c 70 3e 41 63 63 6f 72 64 69 6e 67 20 74 6f 20  <p>According to 
5060: 74 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72 64  the SQL standard
5070: 2c 20 50 52 49 4d 41 52 59 20 4b 45 59 20 73 68  , PRIMARY KEY sh
5080: 6f 75 6c 64 20 69 6d 70 6c 79 20 4e 4f 54 20 4e  ould imply NOT N
5090: 55 4c 4c 2e 0a 55 6e 66 6f 72 74 75 6e 61 74 65  ULL..Unfortunate
50a0: 6c 79 2c 20 64 75 65 20 74 6f 20 61 20 6c 6f 6e  ly, due to a lon
50b0: 67 2d 73 74 61 6e 64 69 6e 67 20 63 6f 64 69 6e  g-standing codin
50c0: 67 20 6f 76 65 72 73 69 67 68 74 2c 20 74 68 69  g oversight, thi
50d0: 73 20 69 73 20 6e 6f 74 20 0a 74 68 65 20 63 61  s is not .the ca
50e0: 73 65 20 69 6e 20 53 51 4c 69 74 65 2e 20 20 53  se in SQLite.  S
50f0: 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20 4e 55 4c  QLite allows NUL
5100: 4c 20 76 61 6c 75 65 73 0a 69 6e 20 61 20 50 52  L values.in a PR
5110: 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e  IMARY KEY column
5120: 2e 20 20 57 65 20 63 6f 75 6c 64 20 63 68 61 6e  .  We could chan
5130: 67 65 20 53 51 4c 69 74 65 20 74 6f 20 63 6f 6e  ge SQLite to con
5140: 66 6f 72 6d 20 74 6f 20 74 68 65 0a 73 74 61 6e  form to the.stan
5150: 64 61 72 64 20 28 61 6e 64 20 77 65 20 6d 69 67  dard (and we mig
5160: 68 74 20 64 6f 20 73 6f 20 69 6e 20 74 68 65 20  ht do so in the 
5170: 66 75 74 75 72 65 29 2c 20 62 75 74 20 62 79 20  future), but by 
5180: 74 68 65 20 74 69 6d 65 20 74 68 65 0a 6f 76 65  the time the.ove
5190: 72 73 69 67 68 74 20 77 61 73 20 64 69 73 63 6f  rsight was disco
51a0: 76 65 72 65 64 2c 20 53 51 4c 69 74 65 20 77 61  vered, SQLite wa
51b0: 73 20 69 6e 20 73 75 63 68 20 77 69 64 65 20 75  s in such wide u
51c0: 73 65 20 74 68 61 74 20 77 65 20 66 65 61 72 65  se that we feare
51d0: 64 0a 62 72 65 61 6b 69 6e 67 20 6c 65 67 61 63  d.breaking legac
51e0: 79 20 63 6f 64 65 20 69 66 20 77 65 20 66 69 78  y code if we fix
51f0: 65 64 20 74 68 65 20 70 72 6f 62 6c 65 6d 2e 20  ed the problem. 
5200: 20 53 6f 20 66 6f 72 20 6e 6f 77 20 77 65 20 68   So for now we h
5210: 61 76 65 0a 63 68 6f 73 65 6e 20 74 6f 20 63 6f  ave.chosen to co
5220: 6e 74 69 6e 75 65 20 61 6c 6c 6f 77 69 6e 67 20  ntinue allowing 
5230: 4e 55 4c 4c 73 20 69 6e 20 50 52 49 4d 41 52 59  NULLs in PRIMARY
5240: 20 4b 45 59 20 63 6f 6c 75 6d 6e 73 2e 0a 44 65   KEY columns..De
5250: 76 65 6c 6f 70 65 72 73 20 73 68 6f 75 6c 64 20  velopers should 
5260: 62 65 20 61 77 61 72 65 2c 20 68 6f 77 65 76 65  be aware, howeve
5270: 72 2c 20 74 68 61 74 20 77 65 20 6d 61 79 20 63  r, that we may c
5280: 68 61 6e 67 65 20 53 51 4c 69 74 65 20 74 6f 0a  hange SQLite to.
5290: 63 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 65 20 53  conform to the S
52a0: 51 4c 20 73 74 61 6e 64 61 72 64 20 69 6e 20 66  QL standard in f
52b0: 75 74 75 72 65 20 61 6e 64 20 73 68 6f 75 6c 64  uture and should
52c0: 20 64 65 73 69 67 6e 20 6e 65 77 20 70 72 6f 67   design new prog
52d0: 72 61 6d 73 0a 61 63 63 6f 72 64 69 6e 67 6c 79  rams.accordingly
52e0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65  .</p>..<p>If the
52f0: 20 22 54 45 4d 50 22 20 6f 72 20 22 54 45 4d 50   "TEMP" or "TEMP
5300: 4f 52 41 52 59 22 20 6b 65 79 77 6f 72 64 20 6f  ORARY" keyword o
5310: 63 63 75 72 73 20 69 6e 20 62 65 74 77 65 65 6e  ccurs in between
5320: 20 22 43 52 45 41 54 45 22 0a 61 6e 64 20 22 54   "CREATE".and "T
5330: 41 42 4c 45 22 20 74 68 65 6e 20 74 68 65 20 74  ABLE" then the t
5340: 61 62 6c 65 20 74 68 61 74 20 69 73 20 63 72 65  able that is cre
5350: 61 74 65 64 20 69 73 20 6f 6e 6c 79 20 76 69 73  ated is only vis
5360: 69 62 6c 65 0a 77 69 74 68 69 6e 20 74 68 61 74  ible.within that
5370: 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 63   same database c
5380: 6f 6e 6e 65 63 74 69 6f 6e 0a 61 6e 64 20 69 73  onnection.and is
5390: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64   automatically d
53a0: 65 6c 65 74 65 64 20 77 68 65 6e 0a 74 68 65 20  eleted when.the 
53b0: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
53c0: 69 6f 6e 20 69 73 20 63 6c 6f 73 65 64 2e 20 20  ion is closed.  
53d0: 41 6e 79 20 69 6e 64 69 63 65 73 20 63 72 65 61  Any indices crea
53e0: 74 65 64 20 6f 6e 20 61 20 74 65 6d 70 6f 72 61  ted on a tempora
53f0: 72 79 20 74 61 62 6c 65 0a 61 72 65 20 61 6c 73  ry table.are als
5400: 6f 20 74 65 6d 70 6f 72 61 72 79 2e 20 20 54 65  o temporary.  Te
5410: 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73 20 61  mporary tables a
5420: 6e 64 20 69 6e 64 69 63 65 73 20 61 72 65 20 73  nd indices are s
5430: 74 6f 72 65 64 20 69 6e 20 61 0a 73 65 70 61 72  tored in a.separ
5440: 61 74 65 20 66 69 6c 65 20 64 69 73 74 69 6e 63  ate file distinc
5450: 74 20 66 72 6f 6d 20 74 68 65 20 6d 61 69 6e 20  t from the main 
5460: 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f  database file.</
5470: 70 3e 0a 0a 3c 70 3e 20 49 66 20 61 20 26 6c 74  p>..<p> If a &lt
5480: 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67  ;database-name&g
5490: 74 3b 20 69 73 20 73 70 65 63 69 66 69 65 64 2c  t; is specified,
54a0: 20 74 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20   then the table 
54b0: 69 73 20 63 72 65 61 74 65 64 20 69 6e 20 0a 74  is created in .t
54c0: 68 65 20 6e 61 6d 65 64 20 64 61 74 61 62 61 73  he named databas
54d0: 65 2e 20 49 74 20 69 73 20 61 6e 20 65 72 72 6f  e. It is an erro
54e0: 72 20 74 6f 20 73 70 65 63 69 66 79 20 62 6f 74  r to specify bot
54f0: 68 20 61 20 26 6c 74 3b 64 61 74 61 62 61 73 65  h a &lt;database
5500: 2d 6e 61 6d 65 26 67 74 3b 0a 61 6e 64 20 74 68  -name&gt;.and th
5510: 65 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 2c 20  e TEMP keyword, 
5520: 75 6e 6c 65 73 73 20 74 68 65 20 26 6c 74 3b 64  unless the &lt;d
5530: 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b  atabase-name&gt;
5540: 20 69 73 20 22 74 65 6d 70 22 2e 20 49 66 20 6e   is "temp". If n
5550: 6f 0a 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20  o.database name 
5560: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 61 6e  is specified, an
5570: 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77 6f  d the TEMP keywo
5580: 72 64 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e  rd is not presen
5590: 74 2c 0a 74 68 65 20 74 61 62 6c 65 20 69 73 20  t,.the table is 
55a0: 63 72 65 61 74 65 64 20 69 6e 20 74 68 65 20 6d  created in the m
55b0: 61 69 6e 20 64 61 74 61 62 61 73 65 2e 3c 2f 70  ain database.</p
55c0: 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e  >..<p>The option
55d0: 61 6c 20 5b 63 6f 6e 66 6c 69 63 74 20 63 6c 61  al [conflict cla
55e0: 75 73 65 5d 20 66 6f 6c 6c 6f 77 69 6e 67 20 65  use] following e
55f0: 61 63 68 20 63 6f 6e 73 74 72 61 69 6e 74 0a 61  ach constraint.a
5600: 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69 66  llows the specif
5610: 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c  ication of an al
5620: 74 65 72 6e 61 74 69 76 65 20 64 65 66 61 75 6c  ternative defaul
5630: 74 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  t.constraint con
5640: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
5650: 20 61 6c 67 6f 72 69 74 68 6d 20 66 6f 72 20 74   algorithm for t
5660: 68 61 74 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0a  hat constraint..
5670: 54 68 65 20 64 65 66 61 75 6c 74 20 69 73 20 61  The default is a
5680: 62 6f 72 74 20 41 42 4f 52 54 2e 20 20 44 69 66  bort ABORT.  Dif
5690: 66 65 72 65 6e 74 20 63 6f 6e 73 74 72 61 69 6e  ferent constrain
56a0: 74 73 20 77 69 74 68 69 6e 20 74 68 65 20 73 61  ts within the sa
56b0: 6d 65 0a 74 61 62 6c 65 20 6d 61 79 20 68 61 76  me.table may hav
56c0: 65 20 64 69 66 66 65 72 65 6e 74 20 64 65 66 61  e different defa
56d0: 75 6c 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73  ult conflict res
56e0: 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68  olution algorith
56f0: 6d 73 2e 0a 49 66 20 61 6e 20 5b 49 4e 53 45 52  ms..If an [INSER
5700: 54 5d 20 6f 72 20 5b 55 50 44 41 54 45 5d 20 73  T] or [UPDATE] s
5710: 74 61 74 65 6d 65 6e 74 20 73 70 65 63 69 66 69  tatement specifi
5720: 65 73 20 61 20 64 69 66 66 65 72 65 6e 74 20 63  es a different c
5730: 6f 6e 66 6c 69 63 74 0a 72 65 73 6f 6c 75 74 69  onflict.resoluti
5740: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2c 20 74 68  on algorithm, th
5750: 65 6e 20 74 68 61 74 20 61 6c 67 6f 72 69 74 68  en that algorith
5760: 6d 20 69 73 20 75 73 65 64 20 69 6e 20 70 6c 61  m is used in pla
5770: 63 65 20 6f 66 20 74 68 65 0a 64 65 66 61 75 6c  ce of the.defaul
5780: 74 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63  t algorithm spec
5790: 69 66 69 65 64 20 69 6e 20 74 68 65 20 43 52 45  ified in the CRE
57a0: 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ATE TABLE statem
57b0: 65 6e 74 2e 0a 53 65 65 20 74 68 65 20 73 65 63  ent..See the sec
57c0: 74 69 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f 4e 20  tion titled.[ON 
57d0: 43 4f 4e 46 4c 49 43 54 5d 20 66 6f 72 20 61 64  CONFLICT] for ad
57e0: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
57f0: 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 43 48  tion.</p>..<p>CH
5800: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  ECK constraints 
5810: 61 72 65 20 73 75 70 70 6f 72 74 65 64 20 61 73  are supported as
5820: 20 6f 66 20 5b 76 65 72 73 69 6f 6e 20 33 2e 33   of [version 3.3
5830: 2e 30 5d 2e 20 20 50 72 69 6f 72 0a 74 6f 20 76  .0].  Prior.to v
5840: 65 72 73 69 6f 6e 20 33 2e 33 2e 30 2c 20 43 48  ersion 3.3.0, CH
5850: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  ECK constraints 
5860: 77 65 72 65 20 70 61 72 73 65 64 20 62 75 74 20  were parsed but 
5870: 6e 6f 74 20 65 6e 66 6f 72 63 65 64 2e 3c 2f 70  not enforced.</p
5880: 3e 0a 0a 3c 70 3e 54 68 65 20 6e 75 6d 62 65 72  >..<p>The number
5890: 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 61   of columns in a
58a0: 20 74 61 62 6c 65 20 69 73 20 6c 69 6d 69 74 65   table is limite
58b0: 64 20 62 79 20 74 68 65 0a 5b 53 51 4c 49 54 45  d by the.[SQLITE
58c0: 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 20 63 6f 6d  _MAX_COLUMN] com
58d0: 70 69 6c 65 2d 74 69 6d 65 20 70 61 72 61 6d 65  pile-time parame
58e0: 74 65 72 2e 0a 41 20 73 69 6e 67 6c 65 20 72 6f  ter..A single ro
58f0: 77 20 6f 66 20 61 20 74 61 62 6c 65 20 63 61 6e  w of a table can
5900: 6e 6f 74 20 73 74 6f 72 65 20 6d 6f 72 65 20 74  not store more t
5910: 68 61 6e 0a 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  han.[SQLITE_MAX_
5920: 4c 45 4e 47 54 48 5d 20 62 79 74 65 73 20 6f 66  LENGTH] bytes of
5930: 20 64 61 74 61 2e 0a 42 6f 74 68 20 6f 66 20 74   data..Both of t
5940: 68 65 73 65 20 6c 69 6d 69 74 73 20 63 61 6e 20  hese limits can 
5950: 62 65 20 6c 6f 77 65 72 65 64 20 61 74 20 72 75  be lowered at ru
5960: 6e 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65 0a  ntime using the.
5970: 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29  [sqlite3_limit()
5980: 5d 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61 63  ] C/C++ interfac
5990: 65 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 54 68 65 20  e.</p>...<p>The 
59a0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 41 53 20  CREATE TABLE AS 
59b0: 66 6f 72 6d 20 64 65 66 69 6e 65 73 20 74 68 65  form defines the
59c0: 20 74 61 62 6c 65 20 74 6f 20 62 65 0a 74 68 65   table to be.the
59d0: 20 72 65 73 75 6c 74 20 73 65 74 20 6f 66 20 61   result set of a
59e0: 20 71 75 65 72 79 2e 20 20 54 68 65 20 6e 61 6d   query.  The nam
59f0: 65 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  es of the table 
5a00: 63 6f 6c 75 6d 6e 73 20 61 72 65 0a 74 68 65 20  columns are.the 
5a10: 6e 61 6d 65 73 20 6f 66 20 74 68 65 20 63 6f 6c  names of the col
5a20: 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75  umns in the resu
5a30: 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  lt.</p>..<p>The 
5a40: 74 65 78 74 0a 6f 66 20 65 61 63 68 20 43 52 45  text.of each CRE
5a50: 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ATE TABLE statem
5a60: 65 6e 74 20 69 73 20 73 74 6f 72 65 64 20 69 6e  ent is stored in
5a70: 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d   the <b>sqlite_m
5a80: 61 73 74 65 72 3c 2f 62 3e 0a 74 61 62 6c 65 2e  aster</b>.table.
5a90: 20 20 45 76 65 72 79 20 74 69 6d 65 20 74 68 65    Every time the
5aa0: 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70 65   database is ope
5ab0: 6e 65 64 2c 20 61 6c 6c 20 43 52 45 41 54 45 20  ned, all CREATE 
5ac0: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 73  TABLE statements
5ad0: 0a 61 72 65 20 72 65 61 64 20 66 72 6f 6d 20 74  .are read from t
5ae0: 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73  he <b>sqlite_mas
5af0: 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61 6e  ter</b> table an
5b00: 64 20 75 73 65 64 20 74 6f 20 72 65 67 65 6e 65  d used to regene
5b10: 72 61 74 65 0a 53 51 4c 69 74 65 27 73 20 69 6e  rate.SQLite's in
5b20: 74 65 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74  ternal represent
5b30: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74 61 62  ation of the tab
5b40: 6c 65 20 6c 61 79 6f 75 74 2e 0a 49 66 20 74 68  le layout..If th
5b50: 65 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61  e original comma
5b60: 6e 64 20 77 61 73 20 61 20 43 52 45 41 54 45 20  nd was a CREATE 
5b70: 54 41 42 4c 45 20 41 53 20 74 68 65 6e 20 74 68  TABLE AS then th
5b80: 65 6e 20 61 6e 20 65 71 75 69 76 61 6c 65 6e 74  en an equivalent
5b90: 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74  .CREATE TABLE st
5ba0: 61 74 65 6d 65 6e 74 20 69 73 20 73 79 6e 74 68  atement is synth
5bb0: 65 73 69 7a 65 64 20 61 6e 64 20 73 74 6f 72 65  esized and store
5bc0: 20 69 6e 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61   in <b>sqlite_ma
5bd0: 73 74 65 72 3c 2f 62 3e 0a 69 6e 20 70 6c 61 63  ster</b>.in plac
5be0: 65 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61  e of the origina
5bf0: 6c 20 63 6f 6d 6d 61 6e 64 2e 0a 54 68 65 20 74  l command..The t
5c00: 65 78 74 20 6f 66 20 43 52 45 41 54 45 20 54 45  ext of CREATE TE
5c10: 4d 50 4f 52 41 52 59 20 54 41 42 4c 45 20 73 74  MPORARY TABLE st
5c20: 61 74 65 6d 65 6e 74 73 20 61 72 65 20 73 74 6f  atements are sto
5c30: 72 65 64 20 69 6e 20 74 68 65 0a 3c 62 3e 73 71  red in the.<b>sq
5c40: 6c 69 74 65 5f 74 65 6d 70 5f 6d 61 73 74 65 72  lite_temp_master
5c50: 3c 2f 62 3e 20 74 61 62 6c 65 2e 0a 3c 2f 70 3e  </b> table..</p>
5c60: 0a 0a 3c 70 3e 49 66 20 74 68 65 20 6f 70 74 69  ..<p>If the opti
5c70: 6f 6e 61 6c 20 49 46 20 4e 4f 54 20 45 58 49 53  onal IF NOT EXIS
5c80: 54 53 20 63 6c 61 75 73 65 20 69 73 20 70 72 65  TS clause is pre
5c90: 73 65 6e 74 20 61 6e 64 20 61 6e 6f 74 68 65 72  sent and another
5ca0: 20 74 61 62 6c 65 0a 77 69 74 68 20 74 68 65 20   table.with the 
5cb0: 73 61 6d 65 20 6e 61 6d 65 20 61 6c 65 61 64 79  same name aleady
5cc0: 20 65 78 69 73 74 73 2c 20 74 68 65 6e 20 74 68   exists, then th
5cd0: 69 73 20 63 6f 6d 6d 61 6e 64 20 62 65 63 6f 6d  is command becom
5ce0: 65 73 20 61 20 6e 6f 2d 6f 70 2e 3c 2f 70 3e 0a  es a no-op.</p>.
5cf0: 0a 3c 70 3e 54 61 62 6c 65 73 20 61 72 65 20 72  .<p>Tables are r
5d00: 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65  emoved using the
5d10: 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 64   <a href="lang_d
5d20: 72 6f 70 74 61 62 6c 65 2e 68 74 6d 6c 22 3e 44  roptable.html">D
5d30: 52 4f 50 20 54 41 42 4c 45 3c 2f 61 3e 20 0a 73  ROP TABLE</a> .s
5d40: 74 61 74 65 6d 65 6e 74 2e 20 20 3c 2f 70 3e 0a  tatement.  </p>.
5d50: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
5d60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5d70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5d80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5d90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5da0: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43  #####.Section {C
5db0: 52 45 41 54 45 20 54 52 49 47 47 45 52 7d 20 63  REATE TRIGGER} c
5dc0: 72 65 61 74 65 74 72 69 67 67 65 72 20 7b 7b 43  reatetrigger {{C
5dd0: 52 45 41 54 45 20 54 52 49 47 47 45 52 7d 7d 0a  REATE TRIGGER}}.
5de0: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63  .BubbleDiagram c
5df0: 72 65 61 74 65 2d 74 72 69 67 67 65 72 2d 73 74  reate-trigger-st
5e00: 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  mt 1.</tcl>..<p>
5e10: 54 68 65 20 43 52 45 41 54 45 20 54 52 49 47 47  The CREATE TRIGG
5e20: 45 52 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  ER statement is 
5e30: 75 73 65 64 20 74 6f 20 61 64 64 20 74 72 69 67  used to add trig
5e40: 67 65 72 73 20 74 6f 20 74 68 65 20 0a 64 61 74  gers to the .dat
5e50: 61 62 61 73 65 20 73 63 68 65 6d 61 2e 20 54 72  abase schema. Tr
5e60: 69 67 67 65 72 73 20 61 72 65 20 64 61 74 61 62  iggers are datab
5e70: 61 73 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 28  ase operations (
5e80: 74 68 65 20 3c 69 3e 74 72 69 67 67 65 72 2d 61  the <i>trigger-a
5e90: 63 74 69 6f 6e 3c 2f 69 3e 29 20 0a 74 68 61 74  ction</i>) .that
5ea0: 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c   are automatical
5eb0: 6c 79 20 70 65 72 66 6f 72 6d 65 64 20 77 68 65  ly performed whe
5ec0: 6e 20 61 20 73 70 65 63 69 66 69 65 64 20 64 61  n a specified da
5ed0: 74 61 62 61 73 65 20 65 76 65 6e 74 20 28 74 68  tabase event (th
5ee0: 65 0a 3c 69 3e 64 61 74 61 62 61 73 65 2d 65 76  e.<i>database-ev
5ef0: 65 6e 74 3c 2f 69 3e 29 20 6f 63 63 75 72 73 2e  ent</i>) occurs.
5f00: 20 20 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 74 72 69    </p>..<p>A tri
5f10: 67 67 65 72 20 6d 61 79 20 62 65 20 73 70 65 63  gger may be spec
5f20: 69 66 69 65 64 20 74 6f 20 66 69 72 65 20 77 68  ified to fire wh
5f30: 65 6e 65 76 65 72 20 61 20 5b 44 45 4c 45 54 45  enever a [DELETE
5f40: 5d 2c 20 5b 49 4e 53 45 52 54 5d 2c 0a 6f 72 20  ], [INSERT],.or 
5f50: 5b 55 50 44 41 54 45 5d 20 6f 66 20 61 0a 70 61  [UPDATE] of a.pa
5f60: 72 74 69 63 75 6c 61 72 20 64 61 74 61 62 61 73  rticular databas
5f70: 65 20 74 61 62 6c 65 20 6f 63 63 75 72 73 2c 20  e table occurs, 
5f80: 6f 72 20 77 68 65 6e 65 76 65 72 20 61 6e 20 5b  or whenever an [
5f90: 55 50 44 41 54 45 5d 20 6f 66 20 6f 6e 65 20 6f  UPDATE] of one o
5fa0: 72 20 6d 6f 72 65 0a 73 70 65 63 69 66 69 65 64  r more.specified
5fb0: 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 20 74 61   columns of a ta
5fc0: 62 6c 65 20 61 72 65 20 75 70 64 61 74 65 64 2e  ble are updated.
5fd0: 3c 2f 70 3e 0a 0a 3c 70 3e 41 74 20 74 68 69 73  </p>..<p>At this
5fe0: 20 74 69 6d 65 20 53 51 4c 69 74 65 20 73 75 70   time SQLite sup
5ff0: 70 6f 72 74 73 20 6f 6e 6c 79 20 46 4f 52 20 45  ports only FOR E
6000: 41 43 48 20 52 4f 57 20 74 72 69 67 67 65 72 73  ACH ROW triggers
6010: 2c 20 6e 6f 74 20 46 4f 52 20 45 41 43 48 0a 53  , not FOR EACH.S
6020: 54 41 54 45 4d 45 4e 54 20 74 72 69 67 67 65 72  TATEMENT trigger
6030: 73 2e 20 48 65 6e 63 65 20 65 78 70 6c 69 63 69  s. Hence explici
6040: 74 6c 79 20 73 70 65 63 69 66 79 69 6e 67 20 46  tly specifying F
6050: 4f 52 20 45 41 43 48 20 52 4f 57 20 69 73 20 6f  OR EACH ROW is o
6060: 70 74 69 6f 6e 61 6c 2e 20 20 46 4f 52 0a 45 41  ptional.  FOR.EA
6070: 43 48 20 52 4f 57 20 69 6d 70 6c 69 65 73 20 74  CH ROW implies t
6080: 68 61 74 20 74 68 65 20 53 51 4c 20 73 74 61 74  hat the SQL stat
6090: 65 6d 65 6e 74 73 20 73 70 65 63 69 66 69 65 64  ements specified
60a0: 20 61 73 20 3c 69 3e 74 72 69 67 67 65 72 2d 73   as <i>trigger-s
60b0: 74 65 70 73 3c 2f 69 3e 20 0a 6d 61 79 20 62 65  teps</i> .may be
60c0: 20 65 78 65 63 75 74 65 64 20 28 64 65 70 65 6e   executed (depen
60d0: 64 69 6e 67 20 6f 6e 20 74 68 65 20 57 48 45 4e  ding on the WHEN
60e0: 20 63 6c 61 75 73 65 29 20 66 6f 72 20 65 61 63   clause) for eac
60f0: 68 20 64 61 74 61 62 61 73 65 20 72 6f 77 20 62  h database row b
6100: 65 69 6e 67 0a 69 6e 73 65 72 74 65 64 2c 20 75  eing.inserted, u
6110: 70 64 61 74 65 64 20 6f 72 20 64 65 6c 65 74 65  pdated or delete
6120: 64 20 62 79 20 74 68 65 20 73 74 61 74 65 6d 65  d by the stateme
6130: 6e 74 20 63 61 75 73 69 6e 67 20 74 68 65 20 74  nt causing the t
6140: 72 69 67 67 65 72 20 74 6f 20 66 69 72 65 2e 3c  rigger to fire.<
6150: 2f 70 3e 0a 0a 3c 70 3e 42 6f 74 68 20 74 68 65  /p>..<p>Both the
6160: 20 57 48 45 4e 20 63 6c 61 75 73 65 20 61 6e 64   WHEN clause and
6170: 20 74 68 65 20 3c 69 3e 74 72 69 67 67 65 72 2d   the <i>trigger-
6180: 73 74 65 70 73 3c 2f 69 3e 20 6d 61 79 20 61 63  steps</i> may ac
6190: 63 65 73 73 20 65 6c 65 6d 65 6e 74 73 20 6f 66  cess elements of
61a0: 20 0a 74 68 65 20 72 6f 77 20 62 65 69 6e 67 20   .the row being 
61b0: 69 6e 73 65 72 74 65 64 2c 20 64 65 6c 65 74 65  inserted, delete
61c0: 64 20 6f 72 20 75 70 64 61 74 65 64 20 75 73 69  d or updated usi
61d0: 6e 67 20 72 65 66 65 72 65 6e 63 65 73 20 6f 66  ng references of
61e0: 20 74 68 65 20 66 6f 72 6d 20 0a 22 4e 45 57 2e   the form ."NEW.
61f0: 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f  <i>column-name</
6200: 69 3e 22 20 61 6e 64 20 22 4f 4c 44 2e 3c 69 3e  i>" and "OLD.<i>
6210: 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22  column-name</i>"
6220: 2c 20 77 68 65 72 65 0a 3c 69 3e 63 6f 6c 75 6d  , where.<i>colum
6230: 6e 2d 6e 61 6d 65 3c 2f 69 3e 20 69 73 20 74 68  n-name</i> is th
6240: 65 20 6e 61 6d 65 20 6f 66 20 61 20 63 6f 6c 75  e name of a colu
6250: 6d 6e 20 66 72 6f 6d 20 74 68 65 20 74 61 62 6c  mn from the tabl
6260: 65 20 74 68 61 74 20 74 68 65 20 74 72 69 67 67  e that the trigg
6270: 65 72 0a 69 73 20 61 73 73 6f 63 69 61 74 65 64  er.is associated
6280: 20 77 69 74 68 2e 20 4f 4c 44 20 61 6e 64 20 4e   with. OLD and N
6290: 45 57 20 72 65 66 65 72 65 6e 63 65 73 20 6d 61  EW references ma
62a0: 79 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69  y only be used i
62b0: 6e 20 74 72 69 67 67 65 72 73 20 6f 6e 0a 3c 69  n triggers on.<i
62c0: 3e 74 72 69 67 67 65 72 2d 65 76 65 6e 74 3c 2f  >trigger-event</
62d0: 69 3e 73 20 66 6f 72 20 77 68 69 63 68 20 74 68  i>s for which th
62e0: 65 79 20 61 72 65 20 72 65 6c 65 76 61 6e 74 2c  ey are relevant,
62f0: 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e   as follows:</p>
6300: 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d  ..<table border=
6310: 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30  0 cellpadding=10
6320: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  >.<tr>.<td valig
6330: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
6340: 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e  ight" width=120>
6350: 3c 69 3e 49 4e 53 45 52 54 3c 2f 69 3e 3c 2f 74  <i>INSERT</i></t
6360: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
6370: 6f 70 22 3e 4e 45 57 20 72 65 66 65 72 65 6e 63  op">NEW referenc
6380: 65 73 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64  es are valid</td
6390: 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64  >.</tr>.<tr>.<td
63a0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
63b0: 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74  ign="right" widt
63c0: 68 3d 31 32 30 3e 3c 69 3e 55 50 44 41 54 45 3c  h=120><i>UPDATE<
63d0: 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  /i></td>.<td val
63e0: 69 67 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 61 6e  ign="top">NEW an
63f0: 64 20 4f 4c 44 20 72 65 66 65 72 65 6e 63 65 73  d OLD references
6400: 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a   are valid</td>.
6410: 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76  </tr>.<tr>.<td v
6420: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
6430: 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d  n="right" width=
6440: 31 32 30 3e 3c 69 3e 44 45 4c 45 54 45 3c 2f 69  120><i>DELETE</i
6450: 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  ></td>.<td valig
6460: 6e 3d 22 74 6f 70 22 3e 4f 4c 44 20 72 65 66 65  n="top">OLD refe
6470: 72 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64  rences are valid
6480: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61  </td>.</tr>.</ta
6490: 62 6c 65 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66  ble>.</p>..<p>If
64a0: 20 61 20 57 48 45 4e 20 63 6c 61 75 73 65 20 69   a WHEN clause i
64b0: 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20  s supplied, the 
64c0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 73  SQL statements s
64d0: 70 65 63 69 66 69 65 64 20 61 73 20 0a 3c 69 3e  pecified as .<i>
64e0: 74 72 69 67 67 65 72 2d 73 74 65 70 73 3c 2f 69  trigger-steps</i
64f0: 3e 20 61 72 65 20 6f 6e 6c 79 20 65 78 65 63 75  > are only execu
6500: 74 65 64 20 66 6f 72 20 72 6f 77 73 20 66 6f 72  ted for rows for
6510: 20 77 68 69 63 68 20 74 68 65 20 57 48 45 4e 0a   which the WHEN.
6520: 63 6c 61 75 73 65 20 69 73 20 74 72 75 65 2e 20  clause is true. 
6530: 49 66 20 6e 6f 20 57 48 45 4e 20 63 6c 61 75 73  If no WHEN claus
6540: 65 20 69 73 20 73 75 70 70 6c 69 65 64 2c 20 74  e is supplied, t
6550: 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  he SQL statement
6560: 73 0a 61 72 65 20 65 78 65 63 75 74 65 64 20 66  s.are executed f
6570: 6f 72 20 61 6c 6c 20 72 6f 77 73 2e 3c 2f 70 3e  or all rows.</p>
6580: 0a 0a 3c 70 3e 54 68 65 20 73 70 65 63 69 66 69  ..<p>The specifi
6590: 65 64 20 3c 69 3e 74 72 69 67 67 65 72 2d 74 69  ed <i>trigger-ti
65a0: 6d 65 3c 2f 69 3e 20 64 65 74 65 72 6d 69 6e 65  me</i> determine
65b0: 73 20 77 68 65 6e 20 74 68 65 20 3c 69 3e 74 72  s when the <i>tr
65c0: 69 67 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 0a  igger-steps</i>.
65d0: 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64  will be executed
65e0: 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65   relative to the
65f0: 20 69 6e 73 65 72 74 69 6f 6e 2c 20 6d 6f 64 69   insertion, modi
6600: 66 69 63 61 74 69 6f 6e 20 6f 72 20 72 65 6d 6f  fication or remo
6610: 76 61 6c 20 6f 66 20 74 68 65 0a 61 73 73 6f 63  val of the.assoc
6620: 69 61 74 65 64 20 72 6f 77 2e 3c 2f 70 3e 0a 0a  iated row.</p>..
6630: 3c 70 3e 41 6e 20 5b 4f 4e 20 43 4f 4e 46 4c 49  <p>An [ON CONFLI
6640: 43 54 5d 20 63 6c 61 75 73 65 20 6d 61 79 20 62  CT] clause may b
6650: 65 20 73 70 65 63 69 66 69 65 64 20 61 73 20 70  e specified as p
6660: 61 72 74 20 6f 66 20 61 6e 20 5b 55 50 44 41 54  art of an [UPDAT
6670: 45 5d 20 6f 72 20 5b 49 4e 53 45 52 54 5d 0a 3c  E] or [INSERT].<
6680: 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70 3c 2f  i>trigger-step</
6690: 69 3e 2e 20 48 6f 77 65 76 65 72 20 69 66 20 61  i>. However if a
66a0: 6e 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20  n [ON CONFLICT] 
66b0: 63 6c 61 75 73 65 20 69 73 20 73 70 65 63 69 66  clause is specif
66c0: 69 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 0a  ied as part of .
66d0: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 63 61  the statement ca
66e0: 75 73 69 6e 67 20 74 68 65 20 74 72 69 67 67 65  using the trigge
66f0: 72 20 74 6f 20 66 69 72 65 2c 20 74 68 65 6e 20  r to fire, then 
6700: 74 68 69 73 20 63 6f 6e 66 6c 69 63 74 20 68 61  this conflict ha
6710: 6e 64 6c 69 6e 67 0a 70 6f 6c 69 63 79 20 69 73  ndling.policy is
6720: 20 75 73 65 64 20 69 6e 73 74 65 61 64 2e 3c 2f   used instead.</
6730: 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65 72 73 20  p>..<p>Triggers 
6740: 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  are automaticall
6750: 79 20 64 72 6f 70 70 65 64 20 77 68 65 6e 20 74  y dropped when t
6760: 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 74 68  he table that th
6770: 65 79 20 61 72 65 20 0a 61 73 73 6f 63 69 61 74  ey are .associat
6780: 65 64 20 77 69 74 68 20 69 73 20 64 72 6f 70 70  ed with is dropp
6790: 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64  ed.</p>..<tcl>hd
67a0: 5f 66 72 61 67 6d 65 6e 74 20 69 6e 73 74 65 61  _fragment instea
67b0: 64 5f 6f 66 5f 74 72 69 67 67 65 72 20 7b 49 4e  d_of_trigger {IN
67c0: 53 54 45 41 44 20 4f 46 7d 20 7b 49 4e 53 54 45  STEAD OF} {INSTE
67d0: 41 44 20 4f 46 20 74 72 69 67 67 65 72 7d 3c 2f  AD OF trigger}</
67e0: 74 63 6c 3e 0a 3c 70 3e 54 72 69 67 67 65 72 73  tcl>.<p>Triggers
67f0: 20 6d 61 79 20 62 65 20 63 72 65 61 74 65 64 20   may be created 
6800: 6f 6e 20 5b 76 69 65 77 73 5d 2c 20 61 73 20 77  on [views], as w
6810: 65 6c 6c 20 61 73 20 6f 72 64 69 6e 61 72 79 20  ell as ordinary 
6820: 74 61 62 6c 65 73 2c 20 62 79 0a 73 70 65 63 69  tables, by.speci
6830: 66 79 69 6e 67 20 49 4e 53 54 45 41 44 20 4f 46  fying INSTEAD OF
6840: 20 69 6e 20 74 68 65 20 43 52 45 41 54 45 20 54   in the CREATE T
6850: 52 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74  RIGGER statement
6860: 2e 20 0a 49 66 20 6f 6e 65 20 6f 72 20 6d 6f 72  . .If one or mor
6870: 65 20 4f 4e 20 49 4e 53 45 52 54 2c 20 4f 4e 20  e ON INSERT, ON 
6880: 44 45 4c 45 54 45 0a 6f 72 20 4f 4e 20 55 50 44  DELETE.or ON UPD
6890: 41 54 45 20 74 72 69 67 67 65 72 73 20 61 72 65  ATE triggers are
68a0: 20 64 65 66 69 6e 65 64 20 6f 6e 20 61 20 76 69   defined on a vi
68b0: 65 77 2c 20 74 68 65 6e 20 69 74 20 69 73 20 6e  ew, then it is n
68c0: 6f 74 20 61 6e 0a 65 72 72 6f 72 20 74 6f 20 65  ot an.error to e
68d0: 78 65 63 75 74 65 20 61 6e 20 49 4e 53 45 52 54  xecute an INSERT
68e0: 2c 20 44 45 4c 45 54 45 20 6f 72 20 55 50 44 41  , DELETE or UPDA
68f0: 54 45 20 73 74 61 74 65 6d 65 6e 74 20 6f 6e 20  TE statement on 
6900: 74 68 65 20 76 69 65 77 2c 20 0a 72 65 73 70 65  the view, .respe
6910: 63 74 69 76 65 6c 79 2e 20 54 68 65 72 65 61 66  ctively. Thereaf
6920: 74 65 72 2c 0a 65 78 65 63 75 74 69 6e 67 20 61  ter,.executing a
6930: 6e 20 49 4e 53 45 52 54 2c 20 44 45 4c 45 54 45  n INSERT, DELETE
6940: 20 6f 72 20 55 50 44 41 54 45 20 6f 6e 20 74 68   or UPDATE on th
6950: 65 20 76 69 65 77 20 63 61 75 73 65 73 20 74 68  e view causes th
6960: 65 20 61 73 73 6f 63 69 61 74 65 64 0a 74 72 69  e associated.tri
6970: 67 67 65 72 73 20 74 6f 20 66 69 72 65 2e 20 54  ggers to fire. T
6980: 68 65 20 72 65 61 6c 20 74 61 62 6c 65 73 20 75  he real tables u
6990: 6e 64 65 72 6c 79 69 6e 67 20 74 68 65 20 76 69  nderlying the vi
69a0: 65 77 20 61 72 65 20 6e 6f 74 20 6d 6f 64 69 66  ew are not modif
69b0: 69 65 64 0a 28 65 78 63 65 70 74 20 70 6f 73 73  ied.(except poss
69c0: 69 62 6c 79 20 65 78 70 6c 69 63 69 74 6c 79 2c  ibly explicitly,
69d0: 20 62 79 20 61 20 74 72 69 67 67 65 72 20 70 72   by a trigger pr
69e0: 6f 67 72 61 6d 29 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ogram).</p>..<p>
69f0: 3c 62 3e 45 78 61 6d 70 6c 65 3a 3c 2f 62 3e 3c  <b>Example:</b><
6a00: 2f 70 3e 0a 0a 3c 70 3e 41 73 73 75 6d 69 6e 67  /p>..<p>Assuming
6a10: 20 74 68 61 74 20 63 75 73 74 6f 6d 65 72 20 72   that customer r
6a20: 65 63 6f 72 64 73 20 61 72 65 20 73 74 6f 72 65  ecords are store
6a30: 64 20 69 6e 20 74 68 65 20 22 63 75 73 74 6f 6d  d in the "custom
6a40: 65 72 73 22 20 74 61 62 6c 65 2c 20 61 6e 64 0a  ers" table, and.
6a50: 74 68 61 74 20 6f 72 64 65 72 20 72 65 63 6f 72  that order recor
6a60: 64 73 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e  ds are stored in
6a70: 20 74 68 65 20 22 6f 72 64 65 72 73 22 20 74 61   the "orders" ta
6a80: 62 6c 65 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69  ble, the followi
6a90: 6e 67 20 74 72 69 67 67 65 72 0a 65 6e 73 75 72  ng trigger.ensur
6aa0: 65 73 20 74 68 61 74 20 61 6c 6c 20 61 73 73 6f  es that all asso
6ab0: 63 69 61 74 65 64 20 6f 72 64 65 72 73 20 61 72  ciated orders ar
6ac0: 65 20 72 65 64 69 72 65 63 74 65 64 20 77 68 65  e redirected whe
6ad0: 6e 20 61 20 63 75 73 74 6f 6d 65 72 20 63 68 61  n a customer cha
6ae0: 6e 67 65 73 0a 68 69 73 20 6f 72 20 68 65 72 20  nges.his or her 
6af0: 61 64 64 72 65 73 73 3a 3c 2f 70 3e 0a 0a 3c 74  address:</p>..<t
6b00: 63 6c 3e 45 78 61 6d 70 6c 65 20 7b 0a 43 52 45  cl>Example {.CRE
6b10: 41 54 45 20 54 52 49 47 47 45 52 20 75 70 64 61  ATE TRIGGER upda
6b20: 74 65 5f 63 75 73 74 6f 6d 65 72 5f 61 64 64 72  te_customer_addr
6b30: 65 73 73 20 55 50 44 41 54 45 20 4f 46 20 61 64  ess UPDATE OF ad
6b40: 64 72 65 73 73 20 4f 4e 20 63 75 73 74 6f 6d 65  dress ON custome
6b50: 72 73 20 0a 20 20 42 45 47 49 4e 0a 20 20 20 20  rs .  BEGIN.    
6b60: 55 50 44 41 54 45 20 6f 72 64 65 72 73 20 53 45  UPDATE orders SE
6b70: 54 20 61 64 64 72 65 73 73 20 3d 20 6e 65 77 2e  T address = new.
6b80: 61 64 64 72 65 73 73 20 57 48 45 52 45 20 63 75  address WHERE cu
6b90: 73 74 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 6f 6c  stomer_name = ol
6ba0: 64 2e 6e 61 6d 65 3b 0a 20 20 45 4e 44 3b 0a 7d  d.name;.  END;.}
6bb0: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 57 69 74 68 20  </tcl>..<p>With 
6bc0: 74 68 69 73 20 74 72 69 67 67 65 72 20 69 6e 73  this trigger ins
6bd0: 74 61 6c 6c 65 64 2c 20 65 78 65 63 75 74 69 6e  talled, executin
6be0: 67 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 3a  g the statement:
6bf0: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61 6d 70  </p>..<tcl>Examp
6c00: 6c 65 20 7b 0a 55 50 44 41 54 45 20 63 75 73 74  le {.UPDATE cust
6c10: 6f 6d 65 72 73 20 53 45 54 20 61 64 64 72 65 73  omers SET addres
6c20: 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e 27  s = '1 Main St.'
6c30: 20 57 48 45 52 45 20 6e 61 6d 65 20 3d 20 27 4a   WHERE name = 'J
6c40: 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 3c 2f 74  ack Jones';.}</t
6c50: 63 6c 3e 0a 0a 3c 70 3e 63 61 75 73 65 73 20 74  cl>..<p>causes t
6c60: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20  he following to 
6c70: 62 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  be automatically
6c80: 20 65 78 65 63 75 74 65 64 3a 3c 2f 70 3e 0a 0a   executed:</p>..
6c90: 3c 74 63 6c 3e 45 78 61 6d 70 6c 65 20 7b 0a 55  <tcl>Example {.U
6ca0: 50 44 41 54 45 20 6f 72 64 65 72 73 20 53 45 54  PDATE orders SET
6cb0: 20 61 64 64 72 65 73 73 20 3d 20 27 31 20 4d 61   address = '1 Ma
6cc0: 69 6e 20 53 74 2e 27 20 57 48 45 52 45 20 63 75  in St.' WHERE cu
6cd0: 73 74 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 27 4a  stomer_name = 'J
6ce0: 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 3c 2f 74  ack Jones';.}</t
6cf0: 63 6c 3e 0a 0a 3c 70 3e 4e 6f 74 65 20 74 68 61  cl>..<p>Note tha
6d00: 74 20 63 75 72 72 65 6e 74 6c 79 2c 20 74 72 69  t currently, tri
6d10: 67 67 65 72 73 20 6d 61 79 20 62 65 68 61 76 65  ggers may behave
6d20: 20 6f 64 64 6c 79 20 77 68 65 6e 20 63 72 65 61   oddly when crea
6d30: 74 65 64 20 6f 6e 20 74 61 62 6c 65 73 0a 20 20  ted on tables.  
6d40: 77 69 74 68 20 5b 49 4e 54 45 47 45 52 20 50 52  with [INTEGER PR
6d50: 49 4d 41 52 59 20 4b 45 59 5d 20 66 69 65 6c 64  IMARY KEY] field
6d60: 73 2e 20 49 66 20 61 20 42 45 46 4f 52 45 20 74  s. If a BEFORE t
6d70: 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20 6d  rigger program m
6d80: 6f 64 69 66 69 65 73 20 74 68 65 20 0a 20 20 5b  odifies the .  [
6d90: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
6da0: 4b 45 59 5d 20 66 69 65 6c 64 20 6f 66 20 61 20  KEY] field of a 
6db0: 72 6f 77 20 74 68 61 74 20 77 69 6c 6c 20 62 65  row that will be
6dc0: 20 73 75 62 73 65 71 75 65 6e 74 6c 79 20 75 70   subsequently up
6dd0: 64 61 74 65 64 20 62 79 20 74 68 65 0a 20 20 73  dated by the.  s
6de0: 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63 61  tatement that ca
6df0: 75 73 65 73 20 74 68 65 20 74 72 69 67 67 65 72  uses the trigger
6e00: 20 74 6f 20 66 69 72 65 2c 20 74 68 65 6e 20 74   to fire, then t
6e10: 68 65 20 75 70 64 61 74 65 20 6d 61 79 20 6e 6f  he update may no
6e20: 74 20 6f 63 63 75 72 2e 20 0a 20 20 54 68 65 20  t occur. .  The 
6e30: 77 6f 72 6b 61 72 6f 75 6e 64 20 69 73 20 74 6f  workaround is to
6e40: 20 64 65 63 6c 61 72 65 20 74 68 65 20 74 61 62   declare the tab
6e50: 6c 65 20 77 69 74 68 20 61 20 50 52 49 4d 41 52  le with a PRIMAR
6e60: 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20 69 6e 73  Y KEY column ins
6e70: 74 65 61 64 0a 20 20 6f 66 20 61 6e 20 5b 49 4e  tead.  of an [IN
6e80: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
6e90: 59 5d 20 63 6f 6c 75 6d 6e 2e 3c 2f 70 3e 0a 0a  Y] column.</p>..
6ea0: 3c 70 3e 41 20 73 70 65 63 69 61 6c 20 53 51 4c  <p>A special SQL
6eb0: 20 66 75 6e 63 74 69 6f 6e 20 52 41 49 53 45 28   function RAISE(
6ec0: 29 20 6d 61 79 20 62 65 20 75 73 65 64 20 77 69  ) may be used wi
6ed0: 74 68 69 6e 20 61 20 74 72 69 67 67 65 72 2d 70  thin a trigger-p
6ee0: 72 6f 67 72 61 6d 2c 0a 77 69 74 68 20 74 68 65  rogram,.with the
6ef0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74 61   following synta
6f00: 78 3c 2f 70 3e 20 0a 0a 3c 74 63 6c 3e 42 75 62  x</p> ..<tcl>Bub
6f10: 62 6c 65 44 69 61 67 72 61 6d 20 72 61 69 73 65  bleDiagram raise
6f20: 2d 66 75 6e 63 74 69 6f 6e 3c 2f 74 63 6c 3e 0a  -function</tcl>.
6f30: 0a 3c 70 3e 57 68 65 6e 20 6f 6e 65 20 6f 66 20  .<p>When one of 
6f40: 74 68 65 20 66 69 72 73 74 20 74 68 72 65 65 20  the first three 
6f50: 66 6f 72 6d 73 20 69 73 20 63 61 6c 6c 65 64 20  forms is called 
6f60: 64 75 72 69 6e 67 20 74 72 69 67 67 65 72 2d 70  during trigger-p
6f70: 72 6f 67 72 61 6d 0a 65 78 65 63 75 74 69 6f 6e  rogram.execution
6f80: 2c 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  , the specified 
6f90: 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 70 72  [ON CONFLICT] pr
6fa0: 6f 63 65 73 73 69 6e 67 20 69 73 20 70 65 72 66  ocessing is perf
6fb0: 6f 72 6d 65 64 0a 28 65 69 74 68 65 72 20 41 42  ormed.(either AB
6fc0: 4f 52 54 2c 20 46 41 49 4c 20 6f 72 20 52 4f 4c  ORT, FAIL or ROL
6fd0: 4c 42 41 43 4b 29 20 61 6e 64 20 74 68 65 20 63  LBACK) and the c
6fe0: 75 72 72 65 6e 74 20 71 75 65 72 79 20 74 65 72  urrent query ter
6ff0: 6d 69 6e 61 74 65 73 2e 0a 41 6e 20 65 72 72 6f  minates..An erro
7000: 72 20 63 6f 64 65 20 6f 66 20 5b 53 51 4c 49 54  r code of [SQLIT
7010: 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5d 20 69 73  E_CONSTRAINT] is
7020: 20 72 65 74 75 72 6e 65 64 20 74 6f 20 74 68 65   returned to the
7030: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c 0a 61 6c   application,.al
7040: 6f 6e 67 20 77 69 74 68 20 74 68 65 20 73 70 65  ong with the spe
7050: 63 69 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73  cified error mes
7060: 73 61 67 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68  sage.</p>..<p>Wh
7070: 65 6e 20 52 41 49 53 45 28 49 47 4e 4f 52 45 29  en RAISE(IGNORE)
7080: 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65 20   is called, the 
7090: 72 65 6d 61 69 6e 64 65 72 20 6f 66 20 74 68 65  remainder of the
70a0: 20 63 75 72 72 65 6e 74 20 74 72 69 67 67 65 72   current trigger
70b0: 20 70 72 6f 67 72 61 6d 2c 0a 74 68 65 20 73 74   program,.the st
70c0: 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63 61 75  atement that cau
70d0: 73 65 64 20 74 68 65 20 74 72 69 67 67 65 72 20  sed the trigger 
70e0: 70 72 6f 67 72 61 6d 20 74 6f 20 65 78 65 63 75  program to execu
70f0: 74 65 20 61 6e 64 20 61 6e 79 20 73 75 62 73 65  te and any subse
7100: 71 75 65 6e 74 0a 74 72 69 67 67 65 72 20 70 72  quent.trigger pr
7110: 6f 67 72 61 6d 73 20 74 68 61 74 20 77 6f 75 6c  ograms that woul
7120: 64 20 6f 66 20 62 65 65 6e 20 65 78 65 63 75 74  d of been execut
7130: 65 64 20 61 72 65 20 61 62 61 6e 64 6f 6e 65 64  ed are abandoned
7140: 2e 20 4e 6f 20 64 61 74 61 62 61 73 65 0a 63 68  . No database.ch
7150: 61 6e 67 65 73 20 61 72 65 20 72 6f 6c 6c 65 64  anges are rolled
7160: 20 62 61 63 6b 2e 20 20 49 66 20 74 68 65 20 73   back.  If the s
7170: 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63 61  tatement that ca
7180: 75 73 65 64 20 74 68 65 20 74 72 69 67 67 65 72  used the trigger
7190: 20 70 72 6f 67 72 61 6d 0a 74 6f 20 65 78 65 63   program.to exec
71a0: 75 74 65 20 69 73 20 69 74 73 65 6c 66 20 70 61  ute is itself pa
71b0: 72 74 20 6f 66 20 61 20 74 72 69 67 67 65 72 20  rt of a trigger 
71c0: 70 72 6f 67 72 61 6d 2c 20 74 68 65 6e 20 74 68  program, then th
71d0: 61 74 20 74 72 69 67 67 65 72 20 70 72 6f 67 72  at trigger progr
71e0: 61 6d 0a 72 65 73 75 6d 65 73 20 65 78 65 63 75  am.resumes execu
71f0: 74 69 6f 6e 20 61 74 20 74 68 65 20 62 65 67 69  tion at the begi
7200: 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 6e 65 78  nning of the nex
7210: 74 20 73 74 65 70 2e 0a 3c 2f 70 3e 0a 0a 3c 70  t step..</p>..<p
7220: 3e 54 72 69 67 67 65 72 73 20 61 72 65 20 72 65  >Triggers are re
7230: 6d 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65 20  moved using the 
7240: 5b 44 52 4f 50 20 54 52 49 47 47 45 52 5d 20 73  [DROP TRIGGER] s
7250: 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 0a  tatement.</p>...
7260: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
7270: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7280: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7290: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
72a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
72b0: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43  #####.Section {C
72c0: 52 45 41 54 45 20 56 49 45 57 7d 20 7b 63 72 65  REATE VIEW} {cre
72d0: 61 74 65 76 69 65 77 7d 20 7b 7b 43 52 45 41 54  ateview} {{CREAT
72e0: 45 20 56 49 45 57 7d 20 76 69 65 77 20 76 69 65  E VIEW} view vie
72f0: 77 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  ws}..BubbleDiagr
7300: 61 6d 20 63 72 65 61 74 65 2d 76 69 65 77 2d 73  am create-view-s
7310: 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tmt 1.</tcl>..<p
7320: 3e 54 68 65 20 43 52 45 41 54 45 20 56 49 45 57  >The CREATE VIEW
7330: 20 63 6f 6d 6d 61 6e 64 20 61 73 73 69 67 6e 73   command assigns
7340: 20 61 20 6e 61 6d 65 20 74 6f 20 61 20 70 72 65   a name to a pre
7350: 2d 70 61 63 6b 61 67 65 64 20 0a 3c 61 20 68 72  -packaged .<a hr
7360: 65 66 3d 22 6c 61 6e 67 5f 73 65 6c 65 63 74 2e  ef="lang_select.
7370: 68 74 6d 6c 22 3e 53 45 4c 45 43 54 3c 2f 61 3e  html">SELECT</a>
7380: 0a 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f 6e 63  .statement.  Onc
7390: 65 20 74 68 65 20 76 69 65 77 20 69 73 20 63 72  e the view is cr
73a0: 65 61 74 65 64 2c 20 69 74 20 63 61 6e 20 62 65  eated, it can be
73b0: 20 75 73 65 64 20 69 6e 20 74 68 65 20 46 52 4f   used in the FRO
73c0: 4d 20 63 6c 61 75 73 65 0a 6f 66 20 61 6e 6f 74  M clause.of anot
73d0: 68 65 72 20 5b 53 45 4c 45 43 54 5d 20 69 6e 20  her [SELECT] in 
73e0: 70 6c 61 63 65 20 6f 66 20 61 20 74 61 62 6c 65  place of a table
73f0: 20 6e 61 6d 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e   name..</p>..<p>
7400: 49 66 20 74 68 65 20 22 54 45 4d 50 22 20 6f 72  If the "TEMP" or
7410: 20 22 54 45 4d 50 4f 52 41 52 59 22 20 6b 65 79   "TEMPORARY" key
7420: 77 6f 72 64 20 6f 63 63 75 72 73 20 69 6e 20 62  word occurs in b
7430: 65 74 77 65 65 6e 20 22 43 52 45 41 54 45 22 0a  etween "CREATE".
7440: 61 6e 64 20 22 56 49 45 57 22 20 74 68 65 6e 20  and "VIEW" then 
7450: 74 68 65 20 76 69 65 77 20 74 68 61 74 20 69 73  the view that is
7460: 20 63 72 65 61 74 65 64 20 69 73 20 6f 6e 6c 79   created is only
7470: 20 76 69 73 69 62 6c 65 20 74 6f 20 74 68 65 0a   visible to the.
7480: 70 72 6f 63 65 73 73 20 74 68 61 74 20 6f 70 65  process that ope
7490: 6e 65 64 20 74 68 65 20 64 61 74 61 62 61 73 65  ned the database
74a0: 20 61 6e 64 20 69 73 20 61 75 74 6f 6d 61 74 69   and is automati
74b0: 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 77 68  cally deleted wh
74c0: 65 6e 0a 74 68 65 20 64 61 74 61 62 61 73 65 20  en.the database 
74d0: 69 73 20 63 6c 6f 73 65 64 2e 3c 2f 70 3e 0a 0a  is closed.</p>..
74e0: 3c 70 3e 20 49 66 20 61 20 26 6c 74 3b 64 61 74  <p> If a &lt;dat
74f0: 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69  abase-name&gt; i
7500: 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65  s specified, the
7510: 6e 20 74 68 65 20 76 69 65 77 20 69 73 20 63 72  n the view is cr
7520: 65 61 74 65 64 20 69 6e 20 0a 74 68 65 20 6e 61  eated in .the na
7530: 6d 65 64 20 64 61 74 61 62 61 73 65 2e 20 49 74  med database. It
7540: 20 69 73 20 61 6e 20 65 72 72 6f 72 20 74 6f 20   is an error to 
7550: 73 70 65 63 69 66 79 20 62 6f 74 68 20 61 20 26  specify both a &
7560: 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  lt;database-name
7570: 26 67 74 3b 0a 61 6e 64 20 74 68 65 20 54 45 4d  &gt;.and the TEM
7580: 50 20 6b 65 79 77 6f 72 64 2c 20 75 6e 6c 65 73  P keyword, unles
7590: 73 20 74 68 65 20 26 6c 74 3b 64 61 74 61 62 61  s the &lt;databa
75a0: 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 22  se-name&gt; is "
75b0: 74 65 6d 70 22 2e 20 49 66 20 6e 6f 0a 64 61 74  temp". If no.dat
75c0: 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 73 70  abase name is sp
75d0: 65 63 69 66 69 65 64 2c 20 61 6e 64 20 74 68 65  ecified, and the
75e0: 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 20 69 73   TEMP keyword is
75f0: 20 6e 6f 74 20 70 72 65 73 65 6e 74 2c 0a 74 68   not present,.th
7600: 65 20 74 61 62 6c 65 20 69 73 20 63 72 65 61 74  e table is creat
7610: 65 64 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64  ed in the main d
7620: 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70  atabase.</p>..<p
7630: 3e 59 6f 75 20 63 61 6e 6e 6f 74 20 5b 44 45 4c  >You cannot [DEL
7640: 45 54 45 5d 2c 20 5b 49 4e 53 45 52 54 5d 2c 20  ETE], [INSERT], 
7650: 6f 72 20 5b 55 50 44 41 54 45 5d 20 61 20 76 69  or [UPDATE] a vi
7660: 65 77 2e 20 20 56 69 65 77 73 20 61 72 65 20 72  ew.  Views are r
7670: 65 61 64 2d 6f 6e 6c 79 20 0a 69 6e 20 53 51 4c  ead-only .in SQL
7680: 69 74 65 2e 20 20 48 6f 77 65 76 65 72 2c 20 69  ite.  However, i
7690: 6e 20 6d 61 6e 79 20 63 61 73 65 73 20 79 6f 75  n many cases you
76a0: 20 63 61 6e 20 75 73 65 20 61 6e 0a 5b 49 4e 53   can use an.[INS
76b0: 54 45 41 44 20 4f 46 20 74 72 69 67 67 65 72 5d  TEAD OF trigger]
76c0: 20 6f 6e 20 74 68 65 20 76 69 65 77 20 74 6f 20   on the view to 
76d0: 61 63 63 6f 6d 70 6c 69 73 68 20 0a 74 68 65 20  accomplish .the 
76e0: 73 61 6d 65 20 74 68 69 6e 67 2e 20 20 56 69 65  same thing.  Vie
76f0: 77 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 0a  ws are removed .
7700: 77 69 74 68 20 74 68 65 20 5b 44 52 4f 50 20 56  with the [DROP V
7710: 49 45 57 5d 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70  IEW] command.</p
7720: 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23  >..<tcl>.#######
7730: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7740: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7750: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7760: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7770: 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
7780: 7b 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20  {CREATE VIRTUAL 
7790: 54 41 42 4c 45 7d 20 7b 63 72 65 61 74 65 76 74  TABLE} {createvt
77a0: 61 62 7d 20 7b 7b 43 52 45 41 54 45 20 56 49 52  ab} {{CREATE VIR
77b0: 54 55 41 4c 5f 54 41 42 4c 45 7d 7d 0a 0a 42 75  TUAL_TABLE}}..Bu
77c0: 62 62 6c 65 44 69 61 67 72 61 6d 20 63 72 65 61  bbleDiagram crea
77d0: 74 65 2d 76 69 72 74 75 61 6c 2d 74 61 62 6c 65  te-virtual-table
77e0: 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a  -stmt 1.</tcl>..
77f0: 3c 70 3e 41 20 76 69 72 74 75 61 6c 20 74 61 62  <p>A virtual tab
7800: 6c 65 20 69 73 20 61 6e 20 69 6e 74 65 72 66 61  le is an interfa
7810: 63 65 20 74 6f 20 61 6e 20 65 78 74 65 72 6e 61  ce to an externa
7820: 6c 20 73 74 6f 72 61 67 65 20 6f 72 20 63 6f 6d  l storage or com
7830: 70 75 74 61 74 69 6f 6e 0a 65 6e 67 69 6e 65 20  putation.engine 
7840: 74 68 61 74 20 61 70 70 65 61 72 73 20 74 6f 20  that appears to 
7850: 62 65 20 61 20 74 61 62 6c 65 20 62 75 74 20 64  be a table but d
7860: 6f 65 73 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79  oes not actually
7870: 20 73 74 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69   store informati
7880: 6f 6e 0a 69 6e 20 74 68 65 20 64 61 74 61 62 61  on.in the databa
7890: 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70  se file.</p>..<p
78a0: 3e 49 6e 20 67 65 6e 65 72 61 6c 2c 20 79 6f 75  >In general, you
78b0: 20 63 61 6e 20 64 6f 20 61 6e 79 74 68 69 6e 67   can do anything
78c0: 20 77 69 74 68 20 61 20 76 69 72 74 75 61 6c 20   with a virtual 
78d0: 74 61 62 6c 65 20 74 68 61 74 20 63 61 6e 20 62  table that can b
78e0: 65 20 64 6f 6e 65 0a 77 69 74 68 20 61 6e 20 6f  e done.with an o
78f0: 72 64 69 6e 61 72 79 20 74 61 62 6c 65 2c 20 65  rdinary table, e
7900: 78 63 65 70 74 20 74 68 61 74 20 79 6f 75 20 63  xcept that you c
7910: 61 6e 6e 6f 74 20 63 72 65 61 74 65 20 69 6e 64  annot create ind
7920: 69 63 65 73 20 6f 72 20 74 72 69 67 67 65 72 73  ices or triggers
7930: 20 6f 6e 20 61 0a 76 69 72 74 75 61 6c 20 74 61   on a.virtual ta
7940: 62 6c 65 2e 20 20 53 6f 6d 65 20 76 69 72 74 75  ble.  Some virtu
7950: 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65  al table impleme
7960: 6e 74 61 74 69 6f 6e 73 20 6d 69 67 68 74 20 69  ntations might i
7970: 6d 70 6f 73 65 20 61 64 64 69 74 69 6f 6e 61 6c  mpose additional
7980: 0a 72 65 73 74 72 69 63 74 69 6f 6e 73 2e 20 20  .restrictions.  
7990: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 6d 61 6e  For example, man
79a0: 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73  y virtual tables
79b0: 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79 2e 0a   are read-only..
79c0: 56 69 72 74 75 61 6c 20 74 61 62 6c 65 73 20 63  Virtual tables c
79d0: 61 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 69 6e  annot be used in
79e0: 0a 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65  .[sqlite3_enable
79f0: 5f 73 68 61 72 65 64 5f 63 61 63 68 65 20 7c 20  _shared_cache | 
7a00: 73 68 61 72 65 64 20 63 61 63 68 65 20 6d 6f 64  shared cache mod
7a10: 65 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  e].</p>..<p>The 
7a20: 26 6c 74 3b 6d 6f 64 75 6c 65 2d 6e 61 6d 65 26  &lt;module-name&
7a30: 67 74 3b 20 69 73 20 74 68 65 20 6e 61 6d 65 20  gt; is the name 
7a40: 6f 66 20 61 6e 20 6f 62 6a 65 63 74 20 74 68 61  of an object tha
7a50: 74 20 69 6d 70 6c 65 6d 65 6e 74 73 0a 74 68 65  t implements.the
7a60: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20   virtual table. 
7a70: 20 54 68 65 20 26 6c 74 3b 6d 6f 64 75 6c 65 2d   The &lt;module-
7a80: 6e 61 6d 65 26 67 74 3b 20 6d 75 73 74 20 62 65  name&gt; must be
7a90: 20 72 65 67 69 73 74 65 72 65 64 20 77 69 74 68   registered with
7aa0: 0a 74 68 65 20 53 51 4c 69 74 65 20 64 61 74 61  .the SQLite data
7ab0: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
7ac0: 75 73 69 6e 67 0a 73 71 6c 69 74 65 33 5f 63 72  using.sqlite3_cr
7ad0: 65 61 74 65 5f 6d 6f 64 75 6c 65 28 29 0a 70 72  eate_module().pr
7ae0: 69 6f 72 20 74 6f 20 69 73 73 75 69 6e 67 20 74  ior to issuing t
7af0: 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41  he CREATE VIRTUA
7b00: 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  L TABLE statemen
7b10: 74 2e 0a 54 68 65 20 6d 6f 64 75 6c 65 20 74 61  t..The module ta
7b20: 6b 65 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65  kes zero or more
7b30: 20 63 6f 6d 6d 61 2d 73 65 70 61 72 61 74 65 64   comma-separated
7b40: 20 61 72 67 75 6d 65 6e 74 73 2e 0a 54 68 65 20   arguments..The 
7b50: 61 72 67 75 6d 65 6e 74 73 20 63 61 6e 20 62 65  arguments can be
7b60: 20 6a 75 73 74 20 61 62 6f 75 74 20 61 6e 79 20   just about any 
7b70: 74 65 78 74 20 61 73 20 6c 6f 6e 67 20 61 73 20  text as long as 
7b80: 69 74 20 68 61 73 20 62 61 6c 61 6e 63 65 64 0a  it has balanced.
7b90: 70 61 72 65 6e 74 68 65 73 65 73 2e 20 20 54 68  parentheses.  Th
7ba0: 65 20 61 72 67 75 6d 65 6e 74 20 73 79 6e 74 61  e argument synta
7bb0: 78 20 69 73 20 73 75 66 66 69 63 69 65 6e 74 6c  x is sufficientl
7bc0: 79 20 67 65 6e 65 72 61 6c 20 74 68 61 74 20 74  y general that t
7bd0: 68 65 0a 61 72 67 75 6d 65 6e 74 73 20 63 61 6e  he.arguments can
7be0: 20 62 65 20 6d 61 64 65 20 74 6f 20 61 70 70 65   be made to appe
7bf0: 61 72 20 61 73 20 63 6f 6c 75 6d 6e 20 64 65 66  ar as column def
7c00: 69 6e 69 74 69 6f 6e 73 20 69 6e 20 61 20 74 72  initions in a tr
7c10: 61 64 69 74 69 6f 6e 61 6c 0a 5b 43 52 45 41 54  aditional.[CREAT
7c20: 45 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65  E TABLE] stateme
7c30: 6e 74 2e 20 20 0a 53 51 4c 69 74 65 20 70 61 73  nt.  .SQLite pas
7c40: 73 65 73 20 74 68 65 20 6d 6f 64 75 6c 65 20 61  ses the module a
7c50: 72 67 75 6d 65 6e 74 73 20 64 69 72 65 63 74 6c  rguments directl
7c60: 79 0a 74 6f 20 74 68 65 20 6d 6f 64 75 6c 65 20  y.to the module 
7c70: 77 69 74 68 6f 75 74 20 61 6e 79 20 69 6e 74 65  without any inte
7c80: 72 70 72 65 74 61 74 69 6f 6e 2e 20 20 49 74 20  rpretation.  It 
7c90: 69 73 20 74 68 65 20 72 65 73 70 6f 6e 73 69 62  is the responsib
7ca0: 69 6c 69 74 79 0a 6f 66 20 74 68 65 20 6d 6f 64  ility.of the mod
7cb0: 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ule implementati
7cc0: 6f 6e 20 74 6f 20 70 61 72 73 65 20 61 6e 64 20  on to parse and 
7cd0: 69 6e 74 65 72 70 72 65 74 20 69 74 73 20 6f 77  interpret its ow
7ce0: 6e 20 61 72 67 75 6d 65 6e 74 73 2e 3c 2f 70 3e  n arguments.</p>
7cf0: 0a 0a 3c 70 3e 41 20 76 69 72 74 75 61 6c 20 74  ..<p>A virtual t
7d00: 61 62 6c 65 20 69 73 20 64 65 73 74 72 6f 79 65  able is destroye
7d10: 64 20 75 73 69 6e 67 20 74 68 65 20 6f 72 64 69  d using the ordi
7d20: 6e 61 72 79 0a 5b 44 52 4f 50 20 54 41 42 4c 45  nary.[DROP TABLE
7d30: 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68  ] statement.  Th
7d40: 65 72 65 20 69 73 20 6e 6f 0a 44 52 4f 50 20 56  ere is no.DROP V
7d50: 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61  IRTUAL TABLE sta
7d60: 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 74 63  tement.</p>..<tc
7d70: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
7d80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7d90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7da0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7db0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7dc0: 23 0a 53 65 63 74 69 6f 6e 20 44 45 4c 45 54 45  #.Section DELETE
7dd0: 20 64 65 6c 65 74 65 20 7b 44 45 4c 45 54 45 20   delete {DELETE 
7de0: 44 45 4c 45 54 45 73 7d 0a 0a 42 75 62 62 6c 65  DELETEs}..Bubble
7df0: 44 69 61 67 72 61 6d 20 64 65 6c 65 74 65 2d 73  Diagram delete-s
7e00: 74 6d 74 20 31 0a 42 75 62 62 6c 65 44 69 61 67  tmt 1.BubbleDiag
7e10: 72 61 6d 20 71 75 61 6c 69 66 69 65 64 2d 74 61  ram qualified-ta
7e20: 62 6c 65 2d 6e 61 6d 65 0a 3c 2f 74 63 6c 3e 0a  ble-name.</tcl>.
7e30: 0a 3c 70 3e 54 68 65 20 44 45 4c 45 54 45 20 63  .<p>The DELETE c
7e40: 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 20 74  ommand is used t
7e50: 6f 20 72 65 6d 6f 76 65 20 72 65 63 6f 72 64 73  o remove records
7e60: 20 66 72 6f 6d 20 61 20 74 61 62 6c 65 2e 0a 54   from a table..T
7e70: 68 65 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69  he command consi
7e80: 73 74 73 20 6f 66 20 74 68 65 20 22 44 45 4c 45  sts of the "DELE
7e90: 54 45 20 46 52 4f 4d 22 20 6b 65 79 77 6f 72 64  TE FROM" keyword
7ea0: 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 0a 74 68  s followed by.th
7eb0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 61  e name of the ta
7ec0: 62 6c 65 20 66 72 6f 6d 20 77 68 69 63 68 20 72  ble from which r
7ed0: 65 63 6f 72 64 73 20 61 72 65 20 74 6f 20 62 65  ecords are to be
7ee0: 20 72 65 6d 6f 76 65 64 2e 0a 3c 2f 70 3e 0a 0a   removed..</p>..
7ef0: 3c 70 3e 57 69 74 68 6f 75 74 20 61 20 57 48 45  <p>Without a WHE
7f00: 52 45 20 63 6c 61 75 73 65 2c 20 61 6c 6c 20 72  RE clause, all r
7f10: 6f 77 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65  ows of the table
7f20: 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 0a 49 66   are removed..If
7f30: 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 20   a WHERE clause 
7f40: 69 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65  is supplied, the
7f50: 6e 20 6f 6e 6c 79 20 74 68 6f 73 65 20 72 6f 77  n only those row
7f60: 73 20 74 68 61 74 20 6d 61 74 63 68 0a 74 68 65  s that match.the
7f70: 20 65 78 70 72 65 73 73 69 6f 6e 20 61 72 65 20   expression are 
7f80: 72 65 6d 6f 76 65 64 2e 3c 2f 70 3e 0a 0a 3c 74  removed.</p>..<t
7f90: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 74  cl>hd_fragment t
7fa0: 72 75 63 61 74 65 6f 70 74 20 7b 74 72 75 6e 63  rucateopt {trunc
7fb0: 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  ate optimization
7fc0: 7d 3c 2f 74 63 6c 3e 0a 3c 70 3e 57 68 65 6e 20  }</tcl>.<p>When 
7fd0: 74 68 65 20 57 48 45 52 45 20 69 73 20 6f 6d 69  the WHERE is omi
7fe0: 74 74 65 64 20 66 72 6f 6d 20 61 20 44 45 4c 45  tted from a DELE
7ff0: 54 45 20 73 74 61 74 65 6d 65 6e 74 20 61 6e 64  TE statement and
8000: 20 74 68 65 20 74 61 62 6c 65 0a 62 65 69 6e 67   the table.being
8010: 20 64 65 6c 65 74 65 64 20 68 61 73 20 6e 6f 20   deleted has no 
8020: 74 72 69 67 67 65 72 73 2c 0a 53 51 4c 69 74 65  triggers,.SQLite
8030: 20 75 73 65 73 20 61 6e 20 6f 70 74 69 6d 69 7a   uses an optimiz
8040: 61 74 69 6f 6e 20 74 6f 20 65 72 61 73 65 20 74  ation to erase t
8050: 68 65 20 65 6e 74 69 72 65 20 74 61 62 6c 65 20  he entire table 
8060: 63 6f 6e 74 65 6e 74 0a 77 69 74 68 6f 75 74 20  content.without 
8070: 68 61 76 69 6e 67 20 74 6f 20 76 69 73 69 74 20  having to visit 
8080: 65 61 63 68 20 72 6f 77 20 6f 66 20 74 68 65 20  each row of the 
8090: 74 61 62 6c 65 20 69 6e 64 69 76 69 64 75 61 6c  table individual
80a0: 2e 0a 54 68 69 73 20 22 74 72 75 6e 63 61 74 65  ..This "truncate
80b0: 22 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 6d  " optimization m
80c0: 61 6b 65 73 20 74 68 65 20 64 65 6c 65 74 65 20  akes the delete 
80d0: 72 75 6e 20 6d 75 63 68 20 66 61 73 74 65 72 2e  run much faster.
80e0: 0a 50 72 69 6f 72 20 74 6f 20 53 51 4c 69 74 65  .Prior to SQLite
80f0: 20 5b 76 65 72 73 69 6f 6e 20 33 2e 36 2e 35 5d   [version 3.6.5]
8100: 2c 20 74 68 65 20 74 72 75 6e 63 61 74 65 20 6f  , the truncate o
8110: 70 74 69 6d 69 7a 61 74 69 6f 6e 0a 61 6c 73 6f  ptimization.also
8120: 20 6d 65 61 6e 74 20 74 68 61 74 20 74 68 65 20   meant that the 
8130: 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73  [sqlite3_changes
8140: 28 29 5d 20 61 6e 64 0a 5b 73 71 6c 69 74 65 33  ()] and.[sqlite3
8150: 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29  _total_changes()
8160: 5d 20 69 6e 74 65 72 66 61 63 65 73 0a 61 6e 64  ] interfaces.and
8170: 20 74 68 65 20 5b 63 6f 75 6e 74 5f 63 68 61 6e   the [count_chan
8180: 67 65 73 20 70 72 61 67 6d 61 5d 0a 77 69 6c 6c  ges pragma].will
8190: 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 72 65   not actually re
81a0: 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  turn the number 
81b0: 6f 66 20 64 65 6c 65 74 65 64 20 72 6f 77 73 2e  of deleted rows.
81c0: 20 20 0a 54 68 61 74 20 70 72 6f 62 6c 65 6d 20    .That problem 
81d0: 68 61 73 20 62 65 65 6e 20 66 69 78 65 64 20 61  has been fixed a
81e0: 73 20 6f 66 20 5b 76 65 72 73 69 6f 6e 20 33 2e  s of [version 3.
81f0: 36 2e 35 5d 2e 0a 0a 3c 70 3e 54 68 65 20 74 72  6.5]...<p>The tr
8200: 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74  uncate optimizat
8210: 69 6f 6e 20 63 61 6e 20 62 65 20 64 69 73 61 62  ion can be disab
8220: 6c 65 64 20 66 6f 72 20 61 6c 6c 20 71 75 65 72  led for all quer
8230: 69 65 73 20 62 79 20 72 65 63 6f 6d 70 69 6c 69  ies by recompili
8240: 6e 67 0a 53 51 4c 69 74 65 20 77 69 74 68 20 74  ng.SQLite with t
8250: 68 65 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  he [SQLITE_OMIT_
8260: 54 52 55 4e 43 41 54 45 5f 4f 50 54 49 4d 49 5a  TRUNCATE_OPTIMIZ
8270: 41 54 49 4f 4e 5d 20 63 6f 6d 70 69 6c 65 2d 74  ATION] compile-t
8280: 69 6d 65 20 73 77 69 74 63 68 2e 3c 2f 70 3e 0a  ime switch.</p>.
8290: 0a 3c 70 3e 49 66 20 53 51 4c 69 74 65 20 69 73  .<p>If SQLite is
82a0: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
82b0: 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  he [SQLITE_ENABL
82c0: 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f  E_UPDATE_DELETE_
82d0: 4c 49 4d 49 54 5d 0a 63 6f 6d 70 69 6c 65 2d 74  LIMIT].compile-t
82e0: 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e  ime option, then
82f0: 20 74 68 65 20 73 79 6e 74 61 78 20 6f 66 20 74   the syntax of t
8300: 68 65 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d  he DELETE statem
8310: 65 6e 74 20 69 73 0a 65 78 74 65 6e 64 65 64 20  ent is.extended 
8320: 62 79 20 74 68 65 20 61 64 64 69 74 69 6f 6e 20  by the addition 
8330: 6f 66 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44 45  of optional ORDE
8340: 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20 63  R BY and LIMIT c
8350: 6c 61 75 73 65 73 3a 3c 2f 70 3e 0a 0a 3c 74 63  lauses:</p>..<tc
8360: 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  l>BubbleDiagram 
8370: 64 65 6c 65 74 65 2d 73 74 6d 74 2d 6c 69 6d 69  delete-stmt-limi
8380: 74 65 64 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68  ted</tcl>..<p>Th
8390: 65 20 6f 70 74 69 6f 6e 61 6c 20 4c 49 4d 49 54  e optional LIMIT
83a0: 20 63 6c 61 75 73 65 20 63 61 6e 20 62 65 20 75   clause can be u
83b0: 73 65 64 20 74 6f 20 6c 69 6d 69 74 20 74 68 65  sed to limit the
83c0: 20 6e 75 6d 62 65 72 20 6f 66 0a 72 6f 77 73 20   number of.rows 
83d0: 64 65 6c 65 74 65 64 2c 20 61 6e 64 20 74 68 65  deleted, and the
83e0: 72 65 62 79 20 6c 69 6d 69 74 20 74 68 65 20 73  reby limit the s
83f0: 69 7a 65 20 6f 66 20 74 68 65 20 74 72 61 6e 73  ize of the trans
8400: 61 63 74 69 6f 6e 2e 0a 54 68 65 20 4f 52 44 45  action..The ORDE
8410: 52 20 42 59 20 63 6c 61 75 73 65 20 69 73 20 75  R BY clause is u
8420: 73 65 64 20 6f 6e 6c 79 20 74 6f 20 64 65 74 65  sed only to dete
8430: 72 6d 69 6e 65 20 77 68 69 63 68 20 72 6f 77 73  rmine which rows
8440: 20 66 61 6c 6c 0a 77 69 74 68 69 6e 20 74 68 65   fall.within the
8450: 20 4c 49 4d 49 54 2e 20 20 54 68 65 20 6f 72 64   LIMIT.  The ord
8460: 65 72 20 69 6e 20 77 68 69 63 68 20 72 6f 77 73  er in which rows
8470: 20 61 72 65 20 64 65 6c 65 74 65 64 20 69 73 20   are deleted is 
8480: 61 72 62 69 74 72 61 72 79 0a 61 6e 64 20 69 73  arbitrary.and is
8490: 20 6e 6f 74 20 64 65 74 65 72 6d 69 6e 65 64 20   not determined 
84a0: 62 79 20 74 68 65 20 4f 52 44 45 52 20 42 59 20  by the ORDER BY 
84b0: 63 6c 61 75 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  clause.</p>..<p>
84c0: 54 68 65 20 70 72 65 73 65 6e 63 65 20 6f 66 20  The presence of 
84d0: 61 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 64  a LIMIT clause d
84e0: 65 66 65 61 74 73 20 74 68 65 20 74 72 75 6e 63  efeats the trunc
84f0: 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  ate optimization
8500: 0a 63 61 75 73 69 6e 67 20 61 6c 6c 20 72 6f 77  .causing all row
8510: 73 20 62 65 69 6e 67 20 64 65 6c 65 74 65 64 20  s being deleted 
8520: 74 6f 20 62 65 20 76 69 73 69 74 65 64 2e 3c 2f  to be visited.</
8530: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
8540: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8550: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8560: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8570: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8580: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
8590: 6e 20 7b 44 45 54 41 43 48 20 44 41 54 41 42 41  n {DETACH DATABA
85a0: 53 45 7d 20 64 65 74 61 63 68 20 44 45 54 41 43  SE} detach DETAC
85b0: 48 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  H..BubbleDiagram
85c0: 20 64 65 74 61 63 68 2d 73 74 6d 74 20 31 0a 3c   detach-stmt 1.<
85d0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 69 73 20 73  /tcl>..<p>This s
85e0: 74 61 74 65 6d 65 6e 74 20 64 65 74 61 63 68 65  tatement detache
85f0: 73 20 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20  s an additional 
8600: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
8610: 69 6f 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 0a  ion previously .
8620: 61 74 74 61 63 68 65 64 20 75 73 69 6e 67 20 74  attached using t
8630: 68 65 20 5b 41 54 54 41 43 48 5d 20 73 74 61 74  he [ATTACH] stat
8640: 65 6d 65 6e 74 2e 20 20 0a 49 74 20 69 73 20 70  ement.  .It is p
8650: 6f 73 73 69 62 6c 65 20 74 6f 20 68 61 76 65 20  ossible to have 
8660: 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73  the same databas
8670: 65 20 66 69 6c 65 20 61 74 74 61 63 68 65 64 20  e file attached 
8680: 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 75  multiple times u
8690: 73 69 6e 67 20 0a 64 69 66 66 65 72 65 6e 74 20  sing .different 
86a0: 6e 61 6d 65 73 2c 20 61 6e 64 20 64 65 74 61 63  names, and detac
86b0: 68 69 6e 67 20 6f 6e 65 20 63 6f 6e 6e 65 63 74  hing one connect
86c0: 69 6f 6e 20 74 6f 20 61 20 66 69 6c 65 20 77 69  ion to a file wi
86d0: 6c 6c 20 6c 65 61 76 65 20 74 68 65 20 0a 6f 74  ll leave the .ot
86e0: 68 65 72 73 20 69 6e 74 61 63 74 2e 3c 2f 70 3e  hers intact.</p>
86f0: 0a 0a 3c 70 3e 54 68 69 73 20 73 74 61 74 65 6d  ..<p>This statem
8700: 65 6e 74 20 77 69 6c 6c 20 66 61 69 6c 20 69 66  ent will fail if
8710: 20 53 51 4c 69 74 65 20 69 73 20 69 6e 20 74 68   SQLite is in th
8720: 65 20 6d 69 64 64 6c 65 20 6f 66 20 61 20 74 72  e middle of a tr
8730: 61 6e 73 61 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a  ansaction.</p>..
8740: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
8750: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8760: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8770: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8780: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8790: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44  #####.Section {D
87a0: 52 4f 50 20 49 4e 44 45 58 7d 20 64 72 6f 70 69  ROP INDEX} dropi
87b0: 6e 64 65 78 20 7b 7b 44 52 4f 50 20 49 4e 44 45  ndex {{DROP INDE
87c0: 58 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  X}}..BubbleDiagr
87d0: 61 6d 20 64 72 6f 70 2d 69 6e 64 65 78 2d 73 74  am drop-index-st
87e0: 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  mt 1.</tcl>..<p>
87f0: 54 68 65 20 44 52 4f 50 20 49 4e 44 45 58 20 73  The DROP INDEX s
8800: 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73  tatement removes
8810: 20 61 6e 20 69 6e 64 65 78 20 61 64 64 65 64 0a   an index added.
8820: 77 69 74 68 20 74 68 65 20 5b 43 52 45 41 54 45  with the [CREATE
8830: 20 49 4e 44 45 58 5d 20 73 74 61 74 65 6d 65 6e   INDEX] statemen
8840: 74 2e 20 20 54 68 65 20 69 6e 64 65 78 20 6e 61  t.  The index na
8850: 6d 65 64 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c  med is completel
8860: 79 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 0a 74  y removed from.t
8870: 68 65 20 64 69 73 6b 2e 20 20 54 68 65 20 6f 6e  he disk.  The on
8880: 6c 79 20 77 61 79 20 74 6f 20 72 65 63 6f 76 65  ly way to recove
8890: 72 20 74 68 65 20 69 6e 64 65 78 20 69 73 20 74  r the index is t
88a0: 6f 20 72 65 65 6e 74 65 72 20 74 68 65 0a 61 70  o reenter the.ap
88b0: 70 72 6f 70 72 69 61 74 65 20 5b 43 52 45 41 54  propriate [CREAT
88c0: 45 20 49 4e 44 45 58 5d 20 63 6f 6d 6d 61 6e 64  E INDEX] command
88d0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44 52  .</p>..<p>The DR
88e0: 4f 50 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65  OP INDEX stateme
88f0: 6e 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 64 75  nt does not redu
8900: 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  ce the size of t
8910: 68 65 20 64 61 74 61 62 61 73 65 20 0a 66 69 6c  he database .fil
8920: 65 20 69 6e 20 74 68 65 20 64 65 66 61 75 6c 74  e in the default
8930: 20 6d 6f 64 65 2e 0a 45 6d 70 74 79 20 73 70 61   mode..Empty spa
8940: 63 65 20 69 6e 20 74 68 65 20 64 61 74 61 62 61  ce in the databa
8950: 73 65 20 69 73 20 72 65 74 61 69 6e 65 64 20 66  se is retained f
8960: 6f 72 20 6c 61 74 65 72 20 5b 49 4e 53 45 52 54  or later [INSERT
8970: 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 20 54  ] statements.  T
8980: 6f 20 0a 72 65 6d 6f 76 65 20 66 72 65 65 20 73  o .remove free s
8990: 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61  pace in the data
89a0: 62 61 73 65 2c 20 75 73 65 20 74 68 65 20 5b 56  base, use the [V
89b0: 41 43 55 55 4d 5d 0a 63 6f 6d 6d 61 6e 64 2e 20  ACUUM].command. 
89c0: 20 49 66 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d   If [auto_vacuum
89d0: 5d 20 6d 6f 64 65 20 69 73 20 65 6e 61 62 6c 65  ] mode is enable
89e0: 64 20 66 6f 72 20 61 20 64 61 74 61 62 61 73 65  d for a database
89f0: 20 74 68 65 6e 20 73 70 61 63 65 0a 77 69 6c 6c   then space.will
8a00: 20 62 65 20 66 72 65 65 64 20 61 75 74 6f 6d 61   be freed automa
8a10: 74 69 63 61 6c 6c 79 20 62 79 20 44 52 4f 50 20  tically by DROP 
8a20: 49 4e 44 45 58 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63  INDEX.</p>...<tc
8a30: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
8a40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8a50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8a60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8a70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8a80: 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20  #.Section {DROP 
8a90: 54 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65  TABLE} droptable
8aa0: 20 7b 7b 44 52 4f 50 20 54 41 42 4c 45 7d 7d 0a   {{DROP TABLE}}.
8ab0: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64  .BubbleDiagram d
8ac0: 72 6f 70 2d 74 61 62 6c 65 2d 73 74 6d 74 20 31  rop-table-stmt 1
8ad0: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20  .</tcl>..<p>The 
8ae0: 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65  DROP TABLE state
8af0: 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 74  ment removes a t
8b00: 61 62 6c 65 20 61 64 64 65 64 20 77 69 74 68 20  able added with 
8b10: 74 68 65 0a 5b 43 52 45 41 54 45 20 54 41 42 4c  the.[CREATE TABL
8b20: 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  E] statement.  T
8b30: 68 65 20 6e 61 6d 65 20 73 70 65 63 69 66 69 65  he name specifie
8b40: 64 20 69 73 20 74 68 65 0a 74 61 62 6c 65 20 6e  d is the.table n
8b50: 61 6d 65 2e 20 20 49 74 20 69 73 20 63 6f 6d 70  ame.  It is comp
8b60: 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66  letely removed f
8b70: 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65  rom the database
8b80: 20 73 63 68 65 6d 61 20 61 6e 64 20 74 68 65 20   schema and the 
8b90: 0a 64 69 73 6b 20 66 69 6c 65 2e 20 20 54 68 65  .disk file.  The
8ba0: 20 74 61 62 6c 65 20 63 61 6e 20 6e 6f 74 20 62   table can not b
8bb0: 65 20 72 65 63 6f 76 65 72 65 64 2e 20 20 41 6c  e recovered.  Al
8bc0: 6c 20 69 6e 64 69 63 65 73 20 61 6e 64 20 74 72  l indices and tr
8bd0: 69 67 67 65 72 73 0a 61 73 73 6f 63 69 61 74 65  iggers.associate
8be0: 64 20 77 69 74 68 20 74 68 65 20 74 61 62 6c 65  d with the table
8bf0: 20 61 72 65 20 61 6c 73 6f 20 64 65 6c 65 74 65   are also delete
8c00: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44  d.</p>..<p>The D
8c10: 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ROP TABLE statem
8c20: 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 64  ent does not red
8c30: 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20  uce the size of 
8c40: 74 68 65 20 64 61 74 61 62 61 73 65 20 0a 66 69  the database .fi
8c50: 6c 65 20 69 6e 20 74 68 65 20 64 65 66 61 75 6c  le in the defaul
8c60: 74 20 6d 6f 64 65 2e 20 20 45 6d 70 74 79 20 73  t mode.  Empty s
8c70: 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61  pace in the data
8c80: 62 61 73 65 20 69 73 20 72 65 74 61 69 6e 65 64  base is retained
8c90: 20 66 6f 72 0a 6c 61 74 65 72 20 5b 49 4e 53 45   for.later [INSE
8ca0: 52 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 20  RT] statements. 
8cb0: 20 54 6f 20 0a 72 65 6d 6f 76 65 20 66 72 65 65   To .remove free
8cc0: 20 73 70 61 63 65 20 69 6e 20 74 68 65 20 64 61   space in the da
8cd0: 74 61 62 61 73 65 2c 20 0a 75 73 65 20 74 68 65  tabase, .use the
8ce0: 20 5b 56 41 43 55 55 4d 5d 20 73 74 61 74 65 6d   [VACUUM] statem
8cf0: 65 6e 74 2e 0a 49 66 20 5b 61 75 74 6f 5f 76 61  ent..If [auto_va
8d00: 63 75 75 6d 5d 20 6d 6f 64 65 20 69 73 20 65 6e  cuum] mode is en
8d10: 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61 74 61  abled for a data
8d20: 62 61 73 65 20 74 68 65 6e 20 73 70 61 63 65 0a  base then space.
8d30: 77 69 6c 6c 20 62 65 20 66 72 65 65 64 20 61 75  will be freed au
8d40: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 44  tomatically by D
8d50: 52 4f 50 20 54 41 42 4c 45 2e 3c 2f 70 3e 0a 0a  ROP TABLE.</p>..
8d60: 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  <p>The optional 
8d70: 49 46 20 45 58 49 53 54 53 20 63 6c 61 75 73 65  IF EXISTS clause
8d80: 20 73 75 70 70 72 65 73 73 65 73 20 74 68 65 20   suppresses the 
8d90: 65 72 72 6f 72 20 74 68 61 74 20 77 6f 75 6c 64  error that would
8da0: 20 6e 6f 72 6d 61 6c 6c 79 0a 72 65 73 75 6c 74   normally.result
8db0: 20 69 66 20 74 68 65 20 74 61 62 6c 65 20 64 6f   if the table do
8dc0: 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 3c 2f 70  es not exist.</p
8dd0: 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23  >..<tcl>.#######
8de0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8df0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8e00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8e10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8e20: 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
8e30: 7b 44 52 4f 50 20 54 52 49 47 47 45 52 7d 20 64  {DROP TRIGGER} d
8e40: 72 6f 70 74 72 69 67 67 65 72 20 7b 7b 44 52 4f  roptrigger {{DRO
8e50: 50 20 54 52 49 47 47 45 52 7d 7d 0a 0a 42 75 62  P TRIGGER}}..Bub
8e60: 62 6c 65 44 69 61 67 72 61 6d 20 64 72 6f 70 2d  bleDiagram drop-
8e70: 74 72 69 67 67 65 72 2d 73 74 6d 74 20 31 0a 3c  trigger-stmt 1.<
8e80: 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44 52  /tcl>..<p>The DR
8e90: 4f 50 20 54 52 49 47 47 45 52 20 73 74 61 74 65  OP TRIGGER state
8ea0: 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 74  ment removes a t
8eb0: 72 69 67 67 65 72 20 63 72 65 61 74 65 64 20 62  rigger created b
8ec0: 79 20 74 68 65 20 0a 5b 43 52 45 41 54 45 20 54  y the .[CREATE T
8ed0: 52 49 47 47 45 52 5d 20 73 74 61 74 65 6d 65 6e  RIGGER] statemen
8ee0: 74 2e 20 20 54 68 65 20 74 72 69 67 67 65 72 20  t.  The trigger 
8ef0: 69 73 20 0a 64 65 6c 65 74 65 64 20 66 72 6f 6d  is .deleted from
8f00: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63   the database sc
8f10: 68 65 6d 61 2e 20 4e 6f 74 65 20 74 68 61 74 20  hema. Note that 
8f20: 74 72 69 67 67 65 72 73 20 61 72 65 20 61 75 74  triggers are aut
8f30: 6f 6d 61 74 69 63 61 6c 6c 79 20 0a 64 72 6f 70  omatically .drop
8f40: 70 65 64 20 77 68 65 6e 20 74 68 65 20 61 73 73  ped when the ass
8f50: 6f 63 69 61 74 65 64 20 74 61 62 6c 65 20 69 73  ociated table is
8f60: 20 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c   dropped.</p>..<
8f70: 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
8f80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8f90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8fa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8fb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8fc0: 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f  ###.Section {DRO
8fd0: 50 20 56 49 45 57 7d 20 64 72 6f 70 76 69 65 77  P VIEW} dropview
8fe0: 20 7b 7b 44 52 4f 50 20 56 49 45 57 7d 7d 0a 0a   {{DROP VIEW}}..
8ff0: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72  BubbleDiagram dr
9000: 6f 70 2d 76 69 65 77 2d 73 74 6d 74 20 31 0a 3c  op-view-stmt 1.<
9010: 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44 52  /tcl>..<p>The DR
9020: 4f 50 20 56 49 45 57 20 73 74 61 74 65 6d 65 6e  OP VIEW statemen
9030: 74 20 72 65 6d 6f 76 65 73 20 61 20 76 69 65 77  t removes a view
9040: 20 63 72 65 61 74 65 64 20 62 79 20 74 68 65 0a   created by the.
9050: 5b 43 52 45 41 54 45 20 56 49 45 57 5d 20 73 74  [CREATE VIEW] st
9060: 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e 61  atement.  The na
9070: 6d 65 20 73 70 65 63 69 66 69 65 64 20 69 73 20  me specified is 
9080: 74 68 65 20 0a 76 69 65 77 20 6e 61 6d 65 2e 20  the .view name. 
9090: 20 49 74 20 69 73 20 72 65 6d 6f 76 65 64 20 66   It is removed f
90a0: 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65  rom the database
90b0: 20 73 63 68 65 6d 61 2c 20 62 75 74 20 6e 6f 20   schema, but no 
90c0: 61 63 74 75 61 6c 20 64 61 74 61 20 0a 69 6e 20  actual data .in 
90d0: 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 62  the underlying b
90e0: 61 73 65 20 74 61 62 6c 65 73 20 69 73 20 6d 6f  ase tables is mo
90f0: 64 69 66 69 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63  dified.</p>..<tc
9100: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
9110: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9130: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9140: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9150: 23 0a 53 65 63 74 69 6f 6e 20 45 58 50 4c 41 49  #.Section EXPLAI
9160: 4e 20 65 78 70 6c 61 69 6e 20 45 58 50 4c 41 49  N explain EXPLAI
9170: 4e 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  N..BubbleDiagram
9180: 20 73 71 6c 2d 73 74 6d 74 0a 3c 2f 74 63 6c 3e   sql-stmt.</tcl>
9190: 0a 0a 3c 70 3e 41 6e 20 53 51 4c 20 73 74 61 74  ..<p>An SQL stat
91a0: 65 6d 65 6e 74 20 63 61 6e 20 62 65 20 70 72 65  ement can be pre
91b0: 63 65 64 65 64 20 62 79 20 74 68 65 20 6b 65 79  ceded by the key
91c0: 77 6f 72 64 20 22 45 58 50 4c 41 49 4e 22 20 6f  word "EXPLAIN" o
91d0: 72 0a 62 79 20 74 68 65 20 70 68 72 61 73 65 20  r.by the phrase 
91e0: 22 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50  "EXPLAIN QUERY P
91f0: 4c 41 4e 22 2e 20 20 45 69 74 68 65 72 20 6d 6f  LAN".  Either mo
9200: 64 69 66 69 63 61 74 69 6f 6e 20 63 61 75 73 65  dification cause
9210: 73 20 74 68 65 0a 53 51 4c 20 73 74 61 74 65 6d  s the.SQL statem
9220: 65 6e 74 20 74 6f 20 62 65 68 61 76 65 20 61 73  ent to behave as
9230: 20 61 20 71 75 65 72 79 20 61 6e 64 20 74 6f 20   a query and to 
9240: 72 65 74 75 72 6e 20 69 6e 66 6f 72 6d 61 74 69  return informati
9250: 6f 6e 20 61 62 6f 75 74 0a 68 6f 77 20 74 68 65  on about.how the
9260: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 77   SQL statement w
9270: 6f 75 6c 64 20 68 61 76 65 20 6f 70 65 72 61 74  ould have operat
9280: 65 64 20 69 66 20 74 68 65 20 45 58 50 4c 41 49  ed if the EXPLAI
9290: 4e 20 6b 65 79 77 6f 72 64 20 6f 72 0a 70 68 72  N keyword or.phr
92a0: 61 73 65 20 68 61 64 20 62 65 65 6e 20 6f 6d 69  ase had been omi
92b0: 74 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68  tted.</p>..<p>Wh
92c0: 65 6e 20 74 68 65 20 45 58 50 4c 41 49 4e 20 6b  en the EXPLAIN k
92d0: 65 79 77 6f 72 64 20 61 70 70 65 61 72 73 20 62  eyword appears b
92e0: 79 20 69 74 73 65 6c 66 20 69 74 20 63 61 75 73  y itself it caus
92f0: 65 73 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  es the statement
9300: 0a 74 6f 20 62 65 68 61 76 65 20 61 73 20 61 20  .to behave as a 
9310: 71 75 65 72 79 20 74 68 61 74 20 72 65 74 75 72  query that retur
9320: 6e 73 20 74 68 65 20 73 65 71 75 65 6e 63 65 20  ns the sequence 
9330: 6f 66 20 0a 3c 61 20 68 72 65 66 3d 22 6f 70 63  of .<a href="opc
9340: 6f 64 65 2e 68 74 6d 6c 22 3e 76 69 72 74 75 61  ode.html">virtua
9350: 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72 75  l machine instru
9360: 63 74 69 6f 6e 73 3c 2f 61 3e 20 69 74 20 77 6f  ctions</a> it wo
9370: 75 6c 64 20 68 61 76 65 0a 75 73 65 64 20 74 6f  uld have.used to
9380: 20 65 78 65 63 75 74 65 20 74 68 65 20 63 6f 6d   execute the com
9390: 6d 61 6e 64 20 68 61 64 20 74 68 65 20 45 58 50  mand had the EXP
93a0: 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20 6e 6f 74  LAIN keyword not
93b0: 20 62 65 65 6e 20 70 72 65 73 65 6e 74 2e 0a 57   been present..W
93c0: 68 65 6e 20 74 68 65 20 45 58 50 4c 41 49 4e 20  hen the EXPLAIN 
93d0: 51 55 45 52 59 20 50 4c 41 4e 20 70 68 72 61 73  QUERY PLAN phras
93e0: 65 20 61 70 70 65 61 72 73 2c 20 74 68 65 20 73  e appears, the s
93f0: 74 61 74 65 6d 65 6e 74 20 72 65 74 75 72 6e 73  tatement returns
9400: 0a 68 69 67 68 2d 6c 65 76 65 6c 20 69 6e 66 6f  .high-level info
9410: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 77 68  rmation about wh
9420: 61 74 20 69 6e 64 69 63 65 73 20 77 6f 75 6c 64  at indices would
9430: 20 68 61 76 65 20 62 65 65 6e 20 75 73 65 64 2e   have been used.
9440: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 75 74  </p>..<p>The out
9450: 70 75 74 20 66 72 6f 6d 20 45 58 50 4c 41 49 4e  put from EXPLAIN
9460: 20 61 6e 64 20 45 58 50 4c 41 49 4e 20 51 55 45   and EXPLAIN QUE
9470: 52 59 20 50 4c 41 4e 20 69 73 20 69 6e 74 65 6e  RY PLAN is inten
9480: 64 65 64 20 66 6f 72 0a 69 6e 74 65 72 61 63 74  ded for.interact
9490: 69 76 65 20 61 6e 61 6c 79 73 69 73 20 61 6e 64  ive analysis and
94a0: 20 74 72 6f 75 62 6c 65 73 68 6f 6f 74 69 6e 67   troubleshooting
94b0: 20 6f 6e 6c 79 2e 20 20 54 68 65 20 64 65 74 61   only.  The deta
94c0: 69 6c 73 20 6f 66 20 74 68 65 20 0a 6f 75 74 70  ils of the .outp
94d0: 75 74 20 66 6f 72 6d 61 74 20 61 72 65 20 73 75  ut format are su
94e0: 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65 20  bject to change 
94f0: 66 72 6f 6d 20 6f 6e 65 20 72 65 6c 65 61 73 65  from one release
9500: 20 6f 66 20 53 51 4c 69 74 65 20 74 6f 20 74 68   of SQLite to th
9510: 65 20 6e 65 78 74 2e 0a 41 70 70 6c 69 63 61 74  e next..Applicat
9520: 69 6f 6e 73 20 73 68 6f 75 6c 64 20 6e 6f 74 20  ions should not 
9530: 75 73 65 20 45 58 50 4c 41 49 4e 20 6f 72 20 45  use EXPLAIN or E
9540: 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c 41  XPLAIN QUERY PLA
9550: 4e 20 73 69 6e 63 65 0a 74 68 65 69 72 20 62 65  N since.their be
9560: 68 61 76 69 6f 72 20 69 73 20 75 6e 64 6f 63 75  havior is undocu
9570: 6d 65 6e 74 65 64 2c 20 75 6e 73 70 65 63 69 66  mented, unspecif
9580: 69 65 64 2c 20 61 6e 64 20 76 61 72 69 61 62 6c  ied, and variabl
9590: 65 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  e.</p>..<tcl>.##
95a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
95b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
95c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
95d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
95e0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
95f0: 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e 20  tion expression 
9600: 65 78 70 72 20 7b 65 78 70 72 65 73 73 69 6f 6e  expr {expression
9610: 20 7b 65 78 70 72 65 73 73 69 6f 6e 20 73 79 6e   {expression syn
9620: 74 61 78 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61  tax}}..BubbleDia
9630: 67 72 61 6d 20 65 78 70 72 20 31 0a 42 75 62 62  gram expr 1.Bubb
9640: 6c 65 44 69 61 67 72 61 6d 20 6c 69 74 65 72 61  leDiagram litera
9650: 6c 2d 76 61 6c 75 65 0a 42 75 62 62 6c 65 44 69  l-value.BubbleDi
9660: 61 67 72 61 6d 20 73 69 67 6e 65 64 2d 6e 75 6d  agram signed-num
9670: 62 65 72 0a 42 75 62 62 6c 65 44 69 61 67 72 61  ber.BubbleDiagra
9680: 6d 20 72 61 69 73 65 2d 66 75 6e 63 74 69 6f 6e  m raise-function
9690: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 69 73  .</tcl>..<p>This
96a0: 20 73 65 63 74 69 6f 6e 20 69 73 20 64 69 66 66   section is diff
96b0: 65 72 65 6e 74 20 66 72 6f 6d 20 74 68 65 20 6f  erent from the o
96c0: 74 68 65 72 73 2e 20 20 4d 6f 73 74 20 6f 74 68  thers.  Most oth
96d0: 65 72 20 73 65 63 74 69 6f 6e 73 20 6f 66 0a 74  er sections of.t
96e0: 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 74 61 6c  his document tal
96f0: 6b 73 20 61 62 6f 75 74 20 61 20 70 61 72 74 69  ks about a parti
9700: 63 75 6c 61 72 20 53 51 4c 20 63 6f 6d 6d 61 6e  cular SQL comman
9710: 64 2e 20 20 54 68 69 73 20 73 65 63 74 69 6f 6e  d.  This section
9720: 20 64 6f 65 73 0a 6e 6f 74 20 74 61 6c 6b 20 61   does.not talk a
9730: 62 6f 75 74 20 61 20 73 74 61 6e 64 61 6c 6f 6e  bout a standalon
9740: 65 20 63 6f 6d 6d 61 6e 64 20 62 75 74 20 61 62  e command but ab
9750: 6f 75 74 20 22 65 78 70 72 65 73 73 69 6f 6e 73  out "expressions
9760: 22 20 77 68 69 63 68 20 61 72 65 20 0a 73 75 62  " which are .sub
9770: 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 6d 6f  components of mo
9780: 73 74 20 6f 74 68 65 72 20 63 6f 6d 6d 61 6e 64  st other command
9790: 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53 51 4c 69 74  s.</p>..<p>SQLit
97a0: 65 20 75 6e 64 65 72 73 74 61 6e 64 73 20 74 68  e understands th
97b0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 62 69 6e 61  e following bina
97c0: 72 79 20 6f 70 65 72 61 74 6f 72 73 2c 20 69 6e  ry operators, in
97d0: 20 6f 72 64 65 72 20 66 72 6f 6d 0a 68 69 67 68   order from.high
97e0: 65 73 74 20 74 6f 20 6c 6f 77 65 73 74 20 70 72  est to lowest pr
97f0: 65 63 65 64 65 6e 63 65 3a 3c 2f 70 3e 0a 0a 3c  ecedence:</p>..<
9800: 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
9810: 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32  .<font color="#2
9820: 63 32 63 66 30 22 3e 3c 62 69 67 3e 7c 7c 0a 2a  c2cf0"><big>||.*
9830: 20 20 20 20 2f 20 20 20 20 25 0a 2b 20 20 20 20      /    %.+    
9840: 2d 0a 26 6c 74 3b 26 6c 74 3b 20 20 20 26 67 74  -.&lt;&lt;   &gt
9850: 3b 26 67 74 3b 20 20 20 26 61 6d 70 3b 20 20 20  ;&gt;   &amp;   
9860: 20 7c 0a 26 6c 74 3b 20 20 20 20 26 6c 74 3b 3d   |.&lt;    &lt;=
9870: 20 20 20 26 67 74 3b 20 20 20 20 26 67 74 3b 3d     &gt;    &gt;=
9880: 0a 3d 20 20 20 20 3d 3d 20 20 20 21 3d 20 20 20  .=    ==   !=   
9890: 26 6c 74 3b 26 67 74 3b 20 20 20 3c 2f 62 69 67  &lt;&gt;   </big
98a0: 3e 49 4e 0a 41 4e 44 20 20 20 0a 4f 52 3c 2f 66  >IN.AND   .OR</f
98b0: 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f  ont>.</pre></blo
98c0: 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 53 75 70  ckquote>..<p>Sup
98d0: 70 6f 72 74 65 64 20 75 6e 61 72 79 20 70 72 65  ported unary pre
98e0: 66 69 78 20 6f 70 65 72 61 74 6f 72 73 20 61 72  fix operators ar
98f0: 65 20 74 68 65 73 65 3a 3c 2f 70 3e 0a 0a 3c 62  e these:</p>..<b
9900: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
9910: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63  <font color="#2c
9920: 32 63 66 30 22 3e 3c 62 69 67 3e 2d 20 20 20 20  2cf0"><big>-    
9930: 2b 20 20 20 20 7e 20 20 20 20 4e 4f 54 3c 2f 62  +    ~    NOT</b
9940: 69 67 3e 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65  ig></font>.</pre
9950: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  ></blockquote>..
9960: 3c 70 3e 54 68 65 20 43 4f 4c 4c 41 54 45 20 6f  <p>The COLLATE o
9970: 70 65 72 61 74 6f 72 20 63 61 6e 20 62 65 20 74  perator can be t
9980: 68 6f 75 67 68 74 20 6f 66 20 61 73 20 61 20 75  hought of as a u
9990: 6e 61 72 79 20 70 6f 73 74 66 69 78 0a 6f 70 65  nary postfix.ope
99a0: 72 61 74 6f 72 2e 20 20 54 68 65 20 43 4f 4c 4c  rator.  The COLL
99b0: 41 54 45 20 6f 70 65 72 61 74 6f 72 20 68 61 73  ATE operator has
99c0: 20 74 68 65 20 68 69 67 68 65 73 74 20 70 72 65   the highest pre
99d0: 63 65 64 65 6e 63 65 2e 0a 49 74 20 61 6c 77 61  cedence..It alwa
99e0: 79 73 20 62 69 6e 64 73 20 6d 6f 72 65 20 74 69  ys binds more ti
99f0: 67 68 74 6c 79 20 74 68 61 6e 20 61 6e 79 20 70  ghtly than any p
9a00: 72 65 66 69 78 20 75 6e 61 72 79 20 6f 70 65 72  refix unary oper
9a10: 61 74 6f 72 20 6f 72 0a 61 6e 79 20 62 69 6e 61  ator or.any bina
9a20: 72 79 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70 3e  ry operator.</p>
9a30: 0a 0a 3c 74 63 6c 3e 68 64 5f 70 75 74 73 20 22  ..<tcl>hd_puts "
9a40: 0a 3c 70 3e 54 68 65 20 75 6e 61 72 79 20 6f 70  .<p>The unary op
9a50: 65 72 61 74 6f 72 20 5b 4f 70 65 72 61 74 6f 72  erator [Operator
9a60: 20 2b 5d 20 69 73 20 61 20 6e 6f 2d 6f 70 2e 20   +] is a no-op. 
9a70: 20 49 74 20 63 61 6e 20 62 65 20 61 70 70 6c 69   It can be appli
9a80: 65 64 0a 74 6f 20 73 74 72 69 6e 67 73 2c 20 6e  ed.to strings, n
9a90: 75 6d 62 65 72 73 2c 20 6f 72 20 62 6c 6f 62 73  umbers, or blobs
9aa0: 20 61 6e 64 20 69 74 20 61 6c 77 61 79 73 20 67   and it always g
9ab0: 69 76 65 73 20 61 73 20 69 74 73 20 72 65 73 75  ives as its resu
9ac0: 6c 74 20 74 68 65 0a 76 61 6c 75 65 20 6f 66 20  lt the.value of 
9ad0: 74 68 65 20 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e  the operand.</p>
9ae0: 22 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 4e 6f 74 65  "</tcl>..<p>Note
9af0: 20 74 68 61 74 20 74 68 65 72 65 20 61 72 65 20   that there are 
9b00: 74 77 6f 20 76 61 72 69 61 74 69 6f 6e 73 20 6f  two variations o
9b10: 66 20 74 68 65 20 65 71 75 61 6c 73 20 61 6e 64  f the equals and
9b20: 20 6e 6f 74 20 65 71 75 61 6c 73 0a 6f 70 65 72   not equals.oper
9b30: 61 74 6f 72 73 2e 20 20 45 71 75 61 6c 73 20 63  ators.  Equals c
9b40: 61 6e 20 62 65 20 65 69 74 68 65 72 0a 0a 3c 74  an be either..<t
9b50: 63 6c 3e 0a 68 64 5f 70 75 74 73 20 22 5b 4f 70  cl>.hd_puts "[Op
9b60: 65 72 61 74 6f 72 20 3d 5d 20 6f 72 20 5b 4f 70  erator =] or [Op
9b70: 65 72 61 74 6f 72 20 3d 3d 5d 2e 0a 54 68 65 20  erator ==]..The 
9b80: 6e 6f 6e 2d 65 71 75 61 6c 73 20 6f 70 65 72 61  non-equals opera
9b90: 74 6f 72 20 63 61 6e 20 62 65 20 65 69 74 68 65  tor can be eithe
9ba0: 72 0a 5b 4f 70 65 72 61 74 6f 72 20 21 3d 5d 20  r.[Operator !=] 
9bb0: 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 7b 26 6c  or [Operator {&l
9bc0: 74 3b 26 67 74 3b 7d 5d 2e 0a 54 68 65 20 5b 4f  t;&gt;}]..The [O
9bd0: 70 65 72 61 74 6f 72 20 7c 7c 5d 20 6f 70 65 72  perator ||] oper
9be0: 61 74 6f 72 20 69 73 20 5c 22 63 6f 6e 63 61 74  ator is \"concat
9bf0: 65 6e 61 74 65 5c 22 20 2d 20 69 74 20 6a 6f 69  enate\" - it joi
9c00: 6e 73 20 74 6f 67 65 74 68 65 72 0a 74 68 65 20  ns together.the 
9c10: 74 77 6f 20 73 74 72 69 6e 67 73 20 6f 66 20 69  two strings of i
9c20: 74 73 20 6f 70 65 72 61 6e 64 73 2e 0a 54 68 65  ts operands..The
9c30: 20 6f 70 65 72 61 74 6f 72 20 5b 4f 70 65 72 61   operator [Opera
9c40: 74 6f 72 20 25 5d 20 6f 75 74 70 75 74 73 20 74  tor %] outputs t
9c50: 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20  he remainder of 
9c60: 69 74 73 20 6c 65 66 74 20 0a 6f 70 65 72 61 6e  its left .operan
9c70: 64 20 6d 6f 64 75 6c 6f 20 69 74 73 20 72 69 67  d modulo its rig
9c80: 68 74 20 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e 0a  ht operand.</p>.
9c90: 0a 3c 70 3e 54 68 65 20 72 65 73 75 6c 74 20 6f  .<p>The result o
9ca0: 66 20 61 6e 79 20 62 69 6e 61 72 79 20 6f 70 65  f any binary ope
9cb0: 72 61 74 6f 72 20 69 73 20 61 20 6e 75 6d 65 72  rator is a numer
9cc0: 69 63 20 76 61 6c 75 65 2c 20 65 78 63 65 70 74  ic value, except
9cd0: 0a 66 6f 72 20 74 68 65 20 5b 4f 70 65 72 61 74  .for the [Operat
9ce0: 6f 72 20 7c 7c 5d 20 63 6f 6e 63 61 74 65 6e 61  or ||] concatena
9cf0: 74 69 6f 6e 20 6f 70 65 72 61 74 6f 72 20 77 68  tion operator wh
9d00: 69 63 68 20 67 69 76 65 73 20 61 20 73 74 72 69  ich gives a stri
9d10: 6e 67 0a 72 65 73 75 6c 74 2e 3c 2f 70 3e 22 3c  ng.result.</p>"<
9d20: 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22  /tcl>..<a name="
9d30: 6c 69 74 65 72 61 6c 5f 76 61 6c 75 65 22 3e 3c  literal_value"><
9d40: 2f 61 3e 0a 3c 70 3e 0a 41 20 6c 69 74 65 72 61  /a>.<p>.A litera
9d50: 6c 20 76 61 6c 75 65 20 69 73 20 61 6e 20 69 6e  l value is an in
9d60: 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 72 20  teger number or 
9d70: 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  a floating point
9d80: 20 6e 75 6d 62 65 72 2e 0a 53 63 69 65 6e 74 69   number..Scienti
9d90: 66 69 63 20 6e 6f 74 61 74 69 6f 6e 20 69 73 20  fic notation is 
9da0: 73 75 70 70 6f 72 74 65 64 2e 20 20 54 68 65 20  supported.  The 
9db0: 22 2e 22 20 63 68 61 72 61 63 74 65 72 20 69 73  "." character is
9dc0: 20 61 6c 77 61 79 73 20 75 73 65 64 0a 61 73 20   always used.as 
9dd0: 74 68 65 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e  the decimal poin
9de0: 74 20 65 76 65 6e 20 69 66 20 74 68 65 20 6c 6f  t even if the lo
9df0: 63 61 6c 65 20 73 65 74 74 69 6e 67 20 73 70 65  cale setting spe
9e00: 63 69 66 69 65 73 20 22 2c 22 20 66 6f 72 0a 74  cifies "," for.t
9e10: 68 69 73 20 72 6f 6c 65 20 2d 20 74 68 65 20 75  his role - the u
9e20: 73 65 20 6f 66 20 22 2c 22 20 66 6f 72 20 74 68  se of "," for th
9e30: 65 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74 20  e decimal point 
9e40: 77 6f 75 6c 64 20 72 65 73 75 6c 74 20 69 6e 0a  would result in.
9e50: 73 79 6e 74 61 63 74 69 63 20 61 6d 62 69 67 75  syntactic ambigu
9e60: 69 74 79 2e 20 20 41 20 73 74 72 69 6e 67 20 63  ity.  A string c
9e70: 6f 6e 73 74 61 6e 74 20 69 73 20 66 6f 72 6d 65  onstant is forme
9e80: 64 20 62 79 20 65 6e 63 6c 6f 73 69 6e 67 20 74  d by enclosing t
9e90: 68 65 0a 73 74 72 69 6e 67 20 69 6e 20 73 69 6e  he.string in sin
9ea0: 67 6c 65 20 71 75 6f 74 65 73 20 28 27 29 2e 20  gle quotes ('). 
9eb0: 20 41 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 20   A single quote 
9ec0: 77 69 74 68 69 6e 20 74 68 65 20 73 74 72 69 6e  within the strin
9ed0: 67 20 63 61 6e 0a 62 65 20 65 6e 63 6f 64 65 64  g can.be encoded
9ee0: 20 62 79 20 70 75 74 74 69 6e 67 20 74 77 6f 20   by putting two 
9ef0: 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 20 69 6e  single quotes in
9f00: 20 61 20 72 6f 77 20 2d 20 61 73 20 69 6e 20 50   a row - as in P
9f10: 61 73 63 61 6c 2e 0a 43 2d 73 74 79 6c 65 20 65  ascal..C-style e
9f20: 73 63 61 70 65 73 20 75 73 69 6e 67 20 74 68 65  scapes using the
9f30: 20 62 61 63 6b 73 6c 61 73 68 20 63 68 61 72 61   backslash chara
9f40: 63 74 65 72 20 61 72 65 20 6e 6f 74 20 73 75 70  cter are not sup
9f50: 70 6f 72 74 65 64 20 62 65 63 61 75 73 65 0a 74  ported because.t
9f60: 68 65 79 20 61 72 65 20 6e 6f 74 20 73 74 61 6e  hey are not stan
9f70: 64 61 72 64 20 53 51 4c 2e 0a 42 4c 4f 42 20 6c  dard SQL..BLOB l
9f80: 69 74 65 72 61 6c 73 20 61 72 65 20 73 74 72 69  iterals are stri
9f90: 6e 67 20 6c 69 74 65 72 61 6c 73 20 63 6f 6e 74  ng literals cont
9fa0: 61 69 6e 69 6e 67 20 68 65 78 61 64 65 63 69 6d  aining hexadecim
9fb0: 61 6c 20 64 61 74 61 20 61 6e 64 0a 70 72 65 63  al data and.prec
9fc0: 65 64 65 64 20 62 79 20 61 20 73 69 6e 67 6c 65  eded by a single
9fd0: 20 22 78 22 20 6f 72 20 22 58 22 20 63 68 61 72   "x" or "X" char
9fe0: 61 63 74 65 72 2e 20 20 46 6f 72 20 65 78 61 6d  acter.  For exam
9ff0: 70 6c 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b  ple:</p>..<block
a000: 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 58 27 35 33  quote><pre>.X'53
a010: 35 31 34 43 36 39 37 34 36 35 27 0a 3c 2f 70 72  514C697465'.</pr
a020: 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  e></blockquote>.
a030: 0a 3c 70 3e 0a 41 20 6c 69 74 65 72 61 6c 20 76  .<p>.A literal v
a040: 61 6c 75 65 20 63 61 6e 20 61 6c 73 6f 20 62 65  alue can also be
a050: 20 74 68 65 20 74 6f 6b 65 6e 20 22 4e 55 4c 4c   the token "NULL
a060: 22 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41 20 70  "..</p>..<p>.A p
a070: 61 72 61 6d 65 74 65 72 20 73 70 65 63 69 66 69  arameter specifi
a080: 65 73 20 61 20 70 6c 61 63 65 68 6f 6c 64 65 72  es a placeholder
a090: 20 69 6e 20 74 68 65 20 65 78 70 72 65 73 73 69   in the expressi
a0a0: 6f 6e 20 66 6f 72 20 61 20 6c 69 74 65 72 61 6c  on for a literal
a0b0: 0a 76 61 6c 75 65 20 74 68 61 74 20 69 73 20 66  .value that is f
a0c0: 69 6c 6c 65 64 20 69 6e 20 61 74 20 72 75 6e 74  illed in at runt
a0d0: 69 6d 65 20 75 73 69 6e 67 20 74 68 65 0a 5b 73  ime using the.[s
a0e0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62  qlite3_bind_blob
a0f0: 28 29 20 7c 20 73 71 6c 69 74 65 33 5f 62 69 6e  () | sqlite3_bin
a100: 64 28 29 5d 20 41 50 49 73 2e 0a 50 61 72 61 6d  d()] APIs..Param
a110: 65 74 65 72 73 20 63 61 6e 20 74 61 6b 65 20 73  eters can take s
a120: 65 76 65 72 61 6c 20 66 6f 72 6d 73 3a 0a 3c 2f  everal forms:.</
a130: 70 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  p..<blockquote>.
a140: 3c 74 61 62 6c 65 3e 0a 3c 74 72 3e 0a 3c 74 64  <table>.<tr>.<td
a150: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 76   align="right" v
a160: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3f  align="top"><b>?
a170: 3c 2f 62 3e 3c 69 3e 4e 4e 4e 3c 2f 69 3e 3c 2f  </b><i>NNN</i></
a180: 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30  td><td width="20
a190: 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 71 75  "></td>.<td>A qu
a1a0: 65 73 74 69 6f 6e 20 6d 61 72 6b 20 66 6f 6c 6c  estion mark foll
a1b0: 6f 77 65 64 20 62 79 20 61 20 6e 75 6d 62 65 72  owed by a number
a1c0: 20 3c 69 3e 4e 4e 4e 3c 2f 69 3e 20 68 6f 6c 64   <i>NNN</i> hold
a1d0: 73 20 61 20 73 70 6f 74 20 66 6f 72 20 74 68 65  s a spot for the
a1e0: 0a 4e 4e 4e 2d 74 68 20 70 61 72 61 6d 65 74 65  .NNN-th paramete
a1f0: 72 2e 20 20 4e 4e 4e 20 6d 75 73 74 20 62 65 20  r.  NNN must be 
a200: 62 65 74 77 65 65 6e 20 31 20 61 6e 64 20 5b 53  between 1 and [S
a210: 51 4c 49 54 45 5f 4d 41 58 5f 56 41 52 49 41 42  QLITE_MAX_VARIAB
a220: 4c 45 5f 4e 55 4d 42 45 52 5d 2e 3c 2f 74 64 3e  LE_NUMBER].</td>
a230: 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20  .</tr>.<tr>.<td 
a240: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61  align="right" va
a250: 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3f 3c  lign="top"><b>?<
a260: 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74  /b></td><td widt
a270: 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64  h="20"></td>.<td
a280: 3e 41 20 71 75 65 73 74 69 6f 6e 20 6d 61 72 6b  >A question mark
a290: 20 74 68 61 74 20 69 73 20 6e 6f 74 20 66 6f 6c   that is not fol
a2a0: 6c 6f 77 65 64 20 62 79 20 61 20 6e 75 6d 62 65  lowed by a numbe
a2b0: 72 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66  r holds a spot f
a2c0: 6f 72 0a 74 68 65 20 6e 65 78 74 20 75 6e 75 73  or.the next unus
a2d0: 65 64 20 70 61 72 61 6d 65 74 65 72 2e 3c 2f 74  ed parameter.</t
a2e0: 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74  d>.</tr>.<tr>.<t
a2f0: 64 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  d align="right" 
a300: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e  valign="top"><b>
a310: 3a 3c 2f 62 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e  :</b><i>AAAA</i>
a320: 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22  </td><td width="
a330: 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20  20"></td>.<td>A 
a340: 63 6f 6c 6f 6e 20 66 6f 6c 6c 6f 77 65 64 20 62  colon followed b
a350: 79 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20  y an identifier 
a360: 6e 61 6d 65 20 68 6f 6c 64 73 20 61 20 73 70 6f  name holds a spo
a370: 74 20 66 6f 72 20 61 20 6e 61 6d 65 64 0a 70 61  t for a named.pa
a380: 72 61 6d 65 74 65 72 20 77 69 74 68 20 74 68 65  rameter with the
a390: 20 6e 61 6d 65 20 41 41 41 41 2e 20 20 4e 61 6d   name AAAA.  Nam
a3a0: 65 64 20 70 61 72 61 6d 65 74 65 72 73 20 61 72  ed parameters ar
a3b0: 65 20 61 6c 73 6f 20 6e 75 6d 62 65 72 65 64 2e  e also numbered.
a3c0: 0a 54 68 65 20 6e 75 6d 62 65 72 20 61 73 73 69  .The number assi
a3d0: 67 6e 65 64 20 69 73 20 74 68 65 20 6e 65 78 74  gned is the next
a3e0: 20 75 6e 75 73 65 64 20 6e 75 6d 62 65 72 2e 20   unused number. 
a3f0: 20 54 6f 20 61 76 6f 69 64 20 63 6f 6e 66 75 73   To avoid confus
a400: 69 6f 6e 2c 0a 69 74 20 69 73 20 62 65 73 74 20  ion,.it is best 
a410: 74 6f 20 61 76 6f 69 64 20 6d 69 78 69 6e 67 20  to avoid mixing 
a420: 6e 61 6d 65 64 20 61 6e 64 20 6e 75 6d 62 65 72  named and number
a430: 65 64 20 70 61 72 61 6d 65 74 65 72 73 2e 3c 2f  ed parameters.</
a440: 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c  td>.</tr>.<tr>.<
a450: 74 64 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  td align="right"
a460: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62   valign="top"><b
a470: 3e 40 3c 2f 62 3e 3c 69 3e 41 41 41 41 3c 2f 69  >@</b><i>AAAA</i
a480: 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d  ></td><td width=
a490: 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41  "20"></td>.<td>A
a4a0: 6e 20 22 61 74 22 20 73 69 67 6e 20 77 6f 72 6b  n "at" sign work
a4b0: 73 20 65 78 61 63 74 6c 79 20 6c 69 6b 65 20 61  s exactly like a
a4c0: 20 63 6f 6c 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74   colon.</td>.</t
a4d0: 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67  r>.<tr>.<td alig
a4e0: 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e  n="right" valign
a4f0: 3d 22 74 6f 70 22 3e 3c 62 3e 24 3c 2f 62 3e 3c  ="top"><b>$</b><
a500: 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c  i>AAAA</i></td><
a510: 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f  td width="20"></
a520: 74 64 3e 0a 3c 74 64 3e 41 20 64 6f 6c 6c 61 72  td>.<td>A dollar
a530: 2d 73 69 67 6e 20 66 6f 6c 6c 6f 77 65 64 20 62  -sign followed b
a540: 79 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20  y an identifier 
a550: 6e 61 6d 65 20 61 6c 73 6f 20 68 6f 6c 64 73 20  name also holds 
a560: 61 20 73 70 6f 74 20 66 6f 72 20 61 20 6e 61 6d  a spot for a nam
a570: 65 64 0a 70 61 72 61 6d 65 74 65 72 20 77 69 74  ed.parameter wit
a580: 68 20 74 68 65 20 6e 61 6d 65 20 41 41 41 41 2e  h the name AAAA.
a590: 20 20 54 68 65 20 69 64 65 6e 74 69 66 69 65 72    The identifier
a5a0: 20 6e 61 6d 65 20 69 6e 20 74 68 69 73 20 63 61   name in this ca
a5b0: 73 65 20 63 61 6e 20 69 6e 63 6c 75 64 65 0a 6f  se can include.o
a5c0: 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 63 63 75 72  ne or more occur
a5d0: 61 6e 63 65 73 20 6f 66 20 22 3a 3a 22 20 61 6e  ances of "::" an
a5e0: 64 20 61 20 73 75 66 66 69 78 20 65 6e 63 6c 6f  d a suffix enclo
a5f0: 73 65 64 20 69 6e 20 22 28 2e 2e 2e 29 22 20 63  sed in "(...)" c
a600: 6f 6e 74 61 69 6e 69 6e 67 0a 61 6e 79 20 74 65  ontaining.any te
a610: 78 74 20 61 74 20 61 6c 6c 2e 20 20 54 68 69 73  xt at all.  This
a620: 20 73 79 6e 74 61 78 20 69 73 20 74 68 65 20 66   syntax is the f
a630: 6f 72 6d 20 6f 66 20 61 20 76 61 72 69 61 62 6c  orm of a variabl
a640: 65 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 54 63  e name in the Tc
a650: 6c 0a 70 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61  l.programming la
a660: 6e 67 75 61 67 65 2e 3c 2f 74 64 3e 0a 3c 2f 74  nguage.</td>.</t
a670: 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c  r>.</table>.</bl
a680: 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 50 61  ockquote>..<p>Pa
a690: 72 61 6d 65 74 65 72 73 20 74 68 61 74 20 61 72  rameters that ar
a6a0: 65 20 6e 6f 74 20 61 73 73 69 67 6e 65 64 20 76  e not assigned v
a6b0: 61 6c 75 65 73 20 75 73 69 6e 67 0a 5b 73 71 6c  alues using.[sql
a6c0: 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 29  ite3_bind_blob()
a6d0: 20 7c 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 28   | sqlite3_bind(
a6e0: 29 5d 20 61 72 65 20 74 72 65 61 74 65 64 0a 61  )] are treated.a
a6f0: 73 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 74 63  s NULL.</p>..<tc
a700: 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 6c 69  l>hd_fragment li
a710: 6b 65 20 4c 49 4b 45 20 45 53 43 41 50 45 3c 2f  ke LIKE ESCAPE</
a720: 74 63 6c 3e 0a 3c 70 3e 54 68 65 20 4c 49 4b 45  tcl>.<p>The LIKE
a730: 20 6f 70 65 72 61 74 6f 72 20 64 6f 65 73 20 61   operator does a
a740: 20 70 61 74 74 65 72 6e 20 6d 61 74 63 68 69 6e   pattern matchin
a750: 67 20 63 6f 6d 70 61 72 69 73 6f 6e 2e 20 54 68  g comparison. Th
a760: 65 20 6f 70 65 72 61 6e 64 0a 74 6f 20 74 68 65  e operand.to the
a770: 20 72 69 67 68 74 20 63 6f 6e 74 61 69 6e 73 20   right contains 
a780: 74 68 65 20 70 61 74 74 65 72 6e 2c 20 74 68 65  the pattern, the
a790: 20 6c 65 66 74 20 68 61 6e 64 20 6f 70 65 72 61   left hand opera
a7a0: 6e 64 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 0a  nd contains the.
a7b0: 73 74 72 69 6e 67 20 74 6f 20 6d 61 74 63 68 20  string to match 
a7c0: 61 67 61 69 6e 73 74 20 74 68 65 20 70 61 74 74  against the patt
a7d0: 65 72 6e 2e 20 0a 0a 3c 74 63 6c 3e 68 64 5f 70  ern. ..<tcl>hd_p
a7e0: 75 74 73 20 22 41 20 70 65 72 63 65 6e 74 20 73  uts "A percent s
a7f0: 79 6d 62 6f 6c 20 5b 4f 70 65 72 61 74 6f 72 20  ymbol [Operator 
a800: 25 5d 20 69 6e 20 74 68 65 20 70 61 74 74 65 72  %] in the patter
a810: 6e 20 6d 61 74 63 68 65 73 20 61 6e 79 0a 73 65  n matches any.se
a820: 71 75 65 6e 63 65 20 6f 66 20 7a 65 72 6f 20 6f  quence of zero o
a830: 72 20 6d 6f 72 65 20 63 68 61 72 61 63 74 65 72  r more character
a840: 73 20 69 6e 20 74 68 65 20 73 74 72 69 6e 67 2e  s in the string.
a850: 20 20 41 6e 20 75 6e 64 65 72 73 63 6f 72 65 0a    An underscore.
a860: 5b 4f 70 65 72 61 74 6f 72 20 5f 5d 20 69 6e 20  [Operator _] in 
a870: 74 68 65 20 70 61 74 74 65 72 6e 20 6d 61 74 63  the pattern matc
a880: 68 65 73 20 61 6e 79 20 73 69 6e 67 6c 65 20 63  hes any single c
a890: 68 61 72 61 63 74 65 72 20 69 6e 20 74 68 65 0a  haracter in the.
a8a0: 73 74 72 69 6e 67 2e 20 20 41 6e 79 20 6f 74 68  string.  Any oth
a8b0: 65 72 20 63 68 61 72 61 63 74 65 72 20 6d 61 74  er character mat
a8c0: 63 68 65 73 20 69 74 73 65 6c 66 20 6f 72 20 69  ches itself or i
a8d0: 74 27 73 20 6c 6f 77 65 72 2f 75 70 70 65 72 20  t's lower/upper 
a8e0: 63 61 73 65 0a 65 71 75 69 76 61 6c 65 6e 74 20  case.equivalent 
a8f0: 28 69 2e 65 2e 20 63 61 73 65 2d 69 6e 73 65 6e  (i.e. case-insen
a900: 73 69 74 69 76 65 20 6d 61 74 63 68 69 6e 67 29  sitive matching)
a910: 2e 20 20 28 41 20 62 75 67 3a 20 53 51 4c 69 74  .  (A bug: SQLit
a920: 65 20 6f 6e 6c 79 0a 75 6e 64 65 72 73 74 61 6e  e only.understan
a930: 64 73 20 75 70 70 65 72 2f 6c 6f 77 65 72 20 63  ds upper/lower c
a940: 61 73 65 20 66 6f 72 20 37 2d 62 69 74 20 4c 61  ase for 7-bit La
a950: 74 69 6e 20 63 68 61 72 61 63 74 65 72 73 2e 20  tin characters. 
a960: 20 48 65 6e 63 65 20 74 68 65 0a 4c 49 4b 45 20   Hence the.LIKE 
a970: 6f 70 65 72 61 74 6f 72 20 69 73 20 63 61 73 65  operator is case
a980: 20 73 65 6e 73 69 74 69 76 65 20 66 6f 72 20 38   sensitive for 8
a990: 2d 62 69 74 20 69 73 6f 38 38 35 39 20 63 68 61  -bit iso8859 cha
a9a0: 72 61 63 74 65 72 73 20 6f 72 20 55 54 46 2d 38  racters or UTF-8
a9b0: 0a 63 68 61 72 61 63 74 65 72 73 2e 20 20 46 6f  .characters.  Fo
a9c0: 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 65  r example, the e
a9d0: 78 70 72 65 73 73 69 6f 6e 20 3c 62 3e 27 61 27  xpression <b>'a'
a9e0: 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70 3b  &nbsp;LIKE&nbsp;
a9f0: 27 41 27 3c 2f 62 3e 0a 69 73 20 54 52 55 45 20  'A'</b>.is TRUE 
aa00: 62 75 74 20 3c 62 3e 27 26 61 65 6c 69 67 3b 27  but <b>'&aelig;'
aa10: 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70 3b  &nbsp;LIKE&nbsp;
aa20: 27 26 41 45 6c 69 67 3b 27 3c 2f 62 3e 20 69 73  '&AElig;'</b> is
aa30: 20 46 41 4c 53 45 2e 29 2e 3c 2f 70 3e 22 3c 2f   FALSE.).</p>"</
aa40: 74 63 6c 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20  tcl>..<p>If the 
aa50: 6f 70 74 69 6f 6e 61 6c 20 45 53 43 41 50 45 20  optional ESCAPE 
aa60: 63 6c 61 75 73 65 20 69 73 20 70 72 65 73 65 6e  clause is presen
aa70: 74 2c 20 74 68 65 6e 20 74 68 65 20 65 78 70 72  t, then the expr
aa80: 65 73 73 69 6f 6e 0a 66 6f 6c 6c 6f 77 69 6e 67  ession.following
aa90: 20 74 68 65 20 45 53 43 41 50 45 20 6b 65 79 77   the ESCAPE keyw
aaa0: 6f 72 64 20 6d 75 73 74 20 65 76 61 6c 75 61 74  ord must evaluat
aab0: 65 20 74 6f 20 61 20 73 74 72 69 6e 67 20 63 6f  e to a string co
aac0: 6e 73 69 73 74 69 6e 67 20 6f 66 0a 61 20 73 69  nsisting of.a si
aad0: 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72 2e 20  ngle character. 
aae0: 54 68 69 73 20 63 68 61 72 61 63 74 65 72 20 6d  This character m
aaf0: 61 79 20 62 65 20 75 73 65 64 20 69 6e 20 74 68  ay be used in th
ab00: 65 20 4c 49 4b 45 20 70 61 74 74 65 72 6e 0a 74  e LIKE pattern.t
ab10: 6f 20 69 6e 63 6c 75 64 65 20 6c 69 74 65 72 61  o include litera
ab20: 6c 20 70 65 72 63 65 6e 74 20 6f 72 20 75 6e 64  l percent or und
ab30: 65 72 73 63 6f 72 65 20 63 68 61 72 61 63 74 65  erscore characte
ab40: 72 73 2e 20 54 68 65 20 65 73 63 61 70 65 0a 63  rs. The escape.c
ab50: 68 61 72 61 63 74 65 72 20 66 6f 6c 6c 6f 77 65  haracter followe
ab60: 64 20 62 79 20 61 20 70 65 72 63 65 6e 74 20 73  d by a percent s
ab70: 79 6d 62 6f 6c 2c 20 75 6e 64 65 72 73 63 6f 72  ymbol, underscor
ab80: 65 20 6f 72 20 69 74 73 65 6c 66 20 6d 61 74 63  e or itself matc
ab90: 68 65 73 20 61 0a 6c 69 74 65 72 61 6c 20 70 65  hes a.literal pe
aba0: 72 63 65 6e 74 20 73 79 6d 62 6f 6c 2c 20 75 6e  rcent symbol, un
abb0: 64 65 72 73 63 6f 72 65 20 6f 72 20 65 73 63 61  derscore or esca
abc0: 70 65 20 63 68 61 72 61 63 74 65 72 20 69 6e 20  pe character in 
abd0: 74 68 65 20 73 74 72 69 6e 67 2c 0a 72 65 73 70  the string,.resp
abe0: 65 63 74 69 76 65 6c 79 2e 20 54 68 65 20 69 6e  ectively. The in
abf0: 66 69 78 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f  fix LIKE operato
ac00: 72 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64  r is implemented
ac10: 20 62 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 0a   by calling the.
ac20: 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69  application-defi
ac30: 6e 65 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  ned SQL function
ac40: 73 20 5b 6c 69 6b 65 28 3c 69 3e 59 3c 2f 69 3e  s [like(<i>Y</i>
ac50: 2c 3c 69 3e 58 3c 2f 69 3e 29 5d 20 6f 72 0a 5b  ,<i>X</i>)] or.[
ac60: 6c 69 6b 65 28 3c 69 3e 59 3c 2f 69 3e 2c 3c 69  like(<i>Y</i>,<i
ac70: 3e 58 3c 2f 69 3e 2c 3c 69 3e 5a 3c 2f 69 3e 29  >X</i>,<i>Z</i>)
ac80: 5d 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 54 68 65 20  ]</a>.</p>..The 
ac90: 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 69 73  LIKE operator is
aca0: 20 6e 6f 74 20 63 61 73 65 20 73 65 6e 73 69 74   not case sensit
acb0: 69 76 65 20 61 6e 64 20 77 69 6c 6c 20 6d 61 74  ive and will mat
acc0: 63 68 20 75 70 70 65 72 20 63 61 73 65 0a 63 68  ch upper case.ch
acd0: 61 72 61 63 74 65 72 73 20 6f 6e 20 6f 6e 65 20  aracters on one 
ace0: 73 69 64 65 20 61 67 61 69 6e 73 74 20 6c 6f 77  side against low
acf0: 65 72 20 63 61 73 65 20 63 68 61 72 61 63 74 65  er case characte
ad00: 72 73 20 6f 6e 20 74 68 65 20 6f 74 68 65 72 2e  rs on the other.
ad10: 20 20 0a 28 41 20 62 75 67 3a 20 53 51 4c 69 74    .(A bug: SQLit
ad20: 65 20 6f 6e 6c 79 20 75 6e 64 65 72 73 74 61 6e  e only understan
ad30: 64 73 20 75 70 70 65 72 2f 6c 6f 77 65 72 20 63  ds upper/lower c
ad40: 61 73 65 20 66 6f 72 20 37 2d 62 69 74 20 4c 61  ase for 7-bit La
ad50: 74 69 6e 0a 63 68 61 72 61 63 74 65 72 73 2e 20  tin.characters. 
ad60: 20 48 65 6e 63 65 20 74 68 65 20 4c 49 4b 45 20   Hence the LIKE 
ad70: 6f 70 65 72 61 74 6f 72 20 69 73 20 63 61 73 65  operator is case
ad80: 20 73 65 6e 73 69 74 69 76 65 20 66 6f 72 20 38   sensitive for 8
ad90: 2d 62 69 74 0a 69 73 6f 38 38 35 39 20 63 68 61  -bit.iso8859 cha
ada0: 72 61 63 74 65 72 73 20 6f 72 20 55 54 46 2d 38  racters or UTF-8
adb0: 20 63 68 61 72 61 63 74 65 72 73 2e 20 20 46 6f   characters.  Fo
adc0: 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 65  r example, the e
add0: 78 70 72 65 73 73 69 6f 6e 0a 3c 62 3e 27 61 27  xpression.<b>'a'
ade0: 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70 3b  &nbsp;LIKE&nbsp;
adf0: 27 41 27 3c 2f 62 3e 20 69 73 20 54 52 55 45 20  'A'</b> is TRUE 
ae00: 62 75 74 0a 3c 62 3e 27 26 61 65 6c 69 67 3b 27  but.<b>'&aelig;'
ae10: 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70 3b  &nbsp;LIKE&nbsp;
ae20: 27 26 41 45 6c 69 67 3b 27 3c 2f 62 3e 20 69 73  '&AElig;'</b> is
ae30: 20 46 41 4c 53 45 2e 29 2e 3c 2f 70 3e 0a 0a 3c   FALSE.).</p>..<
ae40: 70 3e 54 68 65 20 69 6e 66 69 78 20 4c 49 4b 45  p>The infix LIKE
ae50: 0a 6f 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70  .operator is imp
ae60: 6c 65 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c  lemented by call
ae70: 69 6e 67 20 74 68 65 20 75 73 65 72 20 66 75 6e  ing the user fun
ae80: 63 74 69 6f 6e 20 3c 61 20 68 72 65 66 3d 22 23  ction <a href="#
ae90: 6c 69 6b 65 46 75 6e 63 22 3e 0a 6c 69 6b 65 28  likeFunc">.like(
aea0: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
aeb0: 3e 29 3c 2f 61 3e 2e 20 20 49 66 20 61 6e 20 45  >)</a>.  If an E
aec0: 53 43 41 50 45 20 63 6c 61 75 73 65 20 69 73 20  SCAPE clause is 
aed0: 70 72 65 73 65 6e 74 2c 20 69 74 20 61 64 64 73  present, it adds
aee0: 0a 61 20 74 68 69 72 64 20 70 61 72 61 6d 65 74  .a third paramet
aef0: 65 72 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69  er to the functi
af00: 6f 6e 20 63 61 6c 6c 2e 20 49 66 20 74 68 65 20  on call. If the 
af10: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f 66  functionality of
af20: 20 4c 49 4b 45 20 63 61 6e 20 62 65 0a 6f 76 65   LIKE can be.ove
af30: 72 72 69 64 64 65 6e 20 62 79 20 64 65 66 69 6e  rridden by defin
af40: 69 6e 67 20 61 6e 20 61 6c 74 65 72 6e 61 74 69  ing an alternati
af50: 76 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  ve implementatio
af60: 6e 20 6f 66 20 74 68 65 0a 6c 69 6b 65 28 29 20  n of the.like() 
af70: 53 51 4c 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f 70  SQL function.</p
af80: 3e 0a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f  >.</p>..<tcl>hd_
af90: 66 72 61 67 6d 65 6e 74 20 67 6c 6f 62 20 47 4c  fragment glob GL
afa0: 4f 42 3c 2f 74 63 6c 3e 0a 3c 70 3e 54 68 65 20  OB</tcl>.<p>The 
afb0: 47 4c 4f 42 20 6f 70 65 72 61 74 6f 72 20 69 73  GLOB operator is
afc0: 20 73 69 6d 69 6c 61 72 20 74 6f 20 4c 49 4b 45   similar to LIKE
afd0: 20 62 75 74 20 75 73 65 73 20 74 68 65 20 55 6e   but uses the Un
afe0: 69 78 0a 66 69 6c 65 20 67 6c 6f 62 62 69 6e 67  ix.file globbing
aff0: 20 73 79 6e 74 61 78 20 66 6f 72 20 69 74 73 20   syntax for its 
b000: 77 69 6c 64 63 61 72 64 73 2e 20 20 41 6c 73 6f  wildcards.  Also
b010: 2c 20 47 4c 4f 42 20 69 73 20 63 61 73 65 0a 73  , GLOB is case.s
b020: 65 6e 73 69 74 69 76 65 2c 20 75 6e 6c 69 6b 65  ensitive, unlike
b030: 20 4c 49 4b 45 2e 20 20 42 6f 74 68 20 47 4c 4f   LIKE.  Both GLO
b040: 42 20 61 6e 64 20 4c 49 4b 45 20 6d 61 79 20 62  B and LIKE may b
b050: 65 20 70 72 65 63 65 64 65 64 20 62 79 0a 74 68  e preceded by.th
b060: 65 20 4e 4f 54 20 6b 65 79 77 6f 72 64 20 74 6f  e NOT keyword to
b070: 20 69 6e 76 65 72 74 20 74 68 65 20 73 65 6e 73   invert the sens
b080: 65 20 6f 66 20 74 68 65 20 74 65 73 74 2e 20 20  e of the test.  
b090: 54 68 65 20 69 6e 66 69 78 20 47 4c 4f 42 20 0a  The infix GLOB .
b0a0: 6f 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70 6c  operator is impl
b0b0: 65 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c 69  emented by calli
b0c0: 6e 67 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 0a  ng the function.
b0d0: 5b 67 6c 6f 62 28 3c 69 3e 59 3c 2f 69 3e 2c 3c  [glob(<i>Y</i>,<
b0e0: 69 3e 58 3c 2f 69 3e 29 5d 20 61 6e 64 20 63 61  i>X</i>)] and ca
b0f0: 6e 20 62 65 20 6d 6f 64 69 66 69 65 64 20 62 79  n be modified by
b100: 20 6f 76 65 72 72 69 64 69 6e 67 0a 74 68 61 74   overriding.that
b110: 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a   function.</p>..
b120: 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74  <tcl>hd_fragment
b130: 20 72 65 67 65 78 70 20 52 45 47 45 58 50 3c 2f   regexp REGEXP</
b140: 74 63 6c 3e 0a 3c 70 3e 54 68 65 20 52 45 47 45  tcl>.<p>The REGE
b150: 58 50 20 6f 70 65 72 61 74 6f 72 20 69 73 20 61  XP operator is a
b160: 20 73 70 65 63 69 61 6c 20 73 79 6e 74 61 78 20   special syntax 
b170: 66 6f 72 20 74 68 65 20 72 65 67 65 78 70 28 29  for the regexp()
b180: 0a 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20  .user function. 
b190: 20 4e 6f 20 72 65 67 65 78 70 28 29 20 75 73 65   No regexp() use
b1a0: 72 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 64 65  r function is de
b1b0: 66 69 6e 65 64 20 62 79 20 64 65 66 61 75 6c 74  fined by default
b1c0: 0a 61 6e 64 20 73 6f 20 75 73 65 20 6f 66 20 74  .and so use of t
b1d0: 68 65 20 52 45 47 45 58 50 20 6f 70 65 72 61 74  he REGEXP operat
b1e0: 6f 72 20 77 69 6c 6c 20 6e 6f 72 6d 61 6c 6c 79  or will normally
b1f0: 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 0a 65 72   result in an.er
b200: 72 6f 72 20 6d 65 73 73 61 67 65 2e 20 20 49 66  ror message.  If
b210: 20 61 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20   a user-defined 
b220: 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 64 20 22  function named "
b230: 72 65 67 65 78 70 22 0a 69 73 20 61 64 64 65 64  regexp".is added
b240: 20 61 74 20 72 75 6e 2d 74 69 6d 65 2c 20 74 68   at run-time, th
b250: 61 74 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c  at function will
b260: 20 62 65 20 63 61 6c 6c 65 64 20 69 6e 20 6f 72   be called in or
b270: 64 65 72 0a 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  der.to implement
b280: 20 74 68 65 20 52 45 47 45 58 50 20 6f 70 65 72   the REGEXP oper
b290: 61 74 6f 72 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  ator.</p>..<tcl>
b2a0: 68 64 5f 66 72 61 67 6d 65 6e 74 20 6d 61 74 63  hd_fragment matc
b2b0: 68 20 4d 41 54 43 48 3c 2f 74 63 6c 3e 0a 3c 70  h MATCH</tcl>.<p
b2c0: 3e 54 68 65 20 4d 41 54 43 48 20 6f 70 65 72 61  >The MATCH opera
b2d0: 74 6f 72 20 69 73 20 61 20 73 70 65 63 69 61 6c  tor is a special
b2e0: 20 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20   syntax for the 
b2f0: 6d 61 74 63 68 28 29 0a 75 73 65 72 20 66 75 6e  match().user fun
b300: 63 74 69 6f 6e 2e 20 20 54 68 65 20 64 65 66 61  ction.  The defa
b310: 75 6c 74 20 6d 61 74 63 68 28 29 20 66 75 6e 63  ult match() func
b320: 74 69 6f 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74  tion implementat
b330: 69 6f 6e 0a 72 61 69 73 65 73 20 61 6e 64 20 65  ion.raises and e
b340: 78 63 65 70 74 69 6f 6e 20 61 6e 64 20 69 73 20  xception and is 
b350: 6e 6f 74 20 72 65 61 6c 6c 79 20 75 73 65 66 75  not really usefu
b360: 6c 20 66 6f 72 20 61 6e 79 74 68 69 6e 67 2e 0a  l for anything..
b370: 42 75 74 20 65 78 74 65 6e 73 69 6f 6e 73 20 63  But extensions c
b380: 61 6e 20 6f 76 65 72 72 69 64 65 20 74 68 65 20  an override the 
b390: 6d 61 74 63 68 28 29 20 66 75 6e 63 74 69 6f 6e  match() function
b3a0: 20 77 69 74 68 20 6d 6f 72 65 0a 68 65 6c 70 66   with more.helpf
b3b0: 75 6c 20 6c 6f 67 69 63 2e 3c 2f 70 3e 0a 0a 3c  ul logic.</p>..<
b3c0: 70 3e 41 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20  p>A column name 
b3d0: 63 61 6e 20 62 65 20 61 6e 79 20 6f 66 20 74 68  can be any of th
b3e0: 65 20 6e 61 6d 65 73 20 64 65 66 69 6e 65 64 20  e names defined 
b3f0: 69 6e 20 74 68 65 20 5b 43 52 45 41 54 45 20 54  in the [CREATE T
b400: 41 42 4c 45 5d 0a 73 74 61 74 65 6d 65 6e 74 20  ABLE].statement 
b410: 6f 72 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f  or one of the fo
b420: 6c 6c 6f 77 69 6e 67 20 73 70 65 63 69 61 6c 20  llowing special 
b430: 69 64 65 6e 74 69 66 69 65 72 73 3a 20 22 3c 62  identifiers: "<b
b440: 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c 0a 22 3c 62  >ROWID</b>",."<b
b450: 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c  >OID</b>", or "<
b460: 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e 22 2e 0a  b>_ROWID_</b>"..
b470: 54 68 65 73 65 20 73 70 65 63 69 61 6c 20 69 64  These special id
b480: 65 6e 74 69 66 69 65 72 73 20 61 6c 6c 20 64 65  entifiers all de
b490: 73 63 72 69 62 65 20 74 68 65 0a 75 6e 69 71 75  scribe the.uniqu
b4a0: 65 20 69 6e 74 65 67 65 72 20 6b 65 79 20 28 74  e integer key (t
b4b0: 68 65 20 22 72 6f 77 20 6b 65 79 22 29 20 61 73  he "row key") as
b4c0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 65 76  sociated with ev
b4d0: 65 72 79 20 0a 72 6f 77 20 6f 66 20 65 76 65 72  ery .row of ever
b4e0: 79 20 74 61 62 6c 65 2e 0a 54 68 65 20 73 70 65  y table..The spe
b4f0: 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73  cial identifiers
b500: 20 6f 6e 6c 79 20 72 65 66 65 72 20 74 6f 20 74   only refer to t
b510: 68 65 20 72 6f 77 20 6b 65 79 20 69 66 20 74 68  he row key if th
b520: 65 20 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d  e [CREATE TABLE]
b530: 0a 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20  .statement does 
b540: 6e 6f 74 20 64 65 66 69 6e 65 20 61 20 72 65 61  not define a rea
b550: 6c 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20 74 68  l column with th
b560: 65 20 73 61 6d 65 20 6e 61 6d 65 2e 20 20 52 6f  e same name.  Ro
b570: 77 20 6b 65 79 73 0a 61 63 74 20 6c 69 6b 65 20  w keys.act like 
b580: 72 65 61 64 2d 6f 6e 6c 79 20 63 6f 6c 75 6d 6e  read-only column
b590: 73 2e 20 20 41 20 72 6f 77 20 6b 65 79 20 63 61  s.  A row key ca
b5a0: 6e 20 62 65 20 75 73 65 64 20 61 6e 79 77 68 65  n be used anywhe
b5b0: 72 65 20 61 20 72 65 67 75 6c 61 72 0a 63 6f 6c  re a regular.col
b5c0: 75 6d 6e 20 63 61 6e 20 62 65 20 75 73 65 64 2c  umn can be used,
b5d0: 20 65 78 63 65 70 74 20 74 68 61 74 20 79 6f 75   except that you
b5e0: 20 63 61 6e 6e 6f 74 20 63 68 61 6e 67 65 20 74   cannot change t
b5f0: 68 65 20 76 61 6c 75 65 0a 6f 66 20 61 20 72 6f  he value.of a ro
b600: 77 20 6b 65 79 20 69 6e 20 61 6e 20 5b 55 50 44  w key in an [UPD
b610: 41 54 45 5d 20 6f 72 20 5b 49 4e 53 45 52 54 5d  ATE] or [INSERT]
b620: 20 73 74 61 74 65 6d 65 6e 74 2e 0a 22 53 45 4c   statement.."SEL
b630: 45 43 54 20 2a 20 2e 2e 2e 22 20 64 6f 65 73 20  ECT * ..." does 
b640: 6e 6f 74 20 72 65 74 75 72 6e 20 74 68 65 20 72  not return the r
b650: 6f 77 20 6b 65 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ow key.</p>..<p>
b660: 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65  [SELECT] stateme
b670: 6e 74 73 20 63 61 6e 20 61 70 70 65 61 72 20 69  nts can appear i
b680: 6e 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 73  n expressions as
b690: 20 65 69 74 68 65 72 20 74 68 65 0a 72 69 67 68   either the.righ
b6a0: 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e 64 20 6f  t-hand operand o
b6b0: 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74 6f  f the IN operato
b6c0: 72 2c 20 61 73 20 61 20 73 63 61 6c 61 72 20 71  r, as a scalar q
b6d0: 75 61 6e 74 69 74 79 2c 20 6f 72 0a 61 73 20 74  uantity, or.as t
b6e0: 68 65 20 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e  he operand of an
b6f0: 20 45 58 49 53 54 53 20 6f 70 65 72 61 74 6f 72   EXISTS operator
b700: 2e 0a 41 73 20 61 20 73 63 61 6c 61 72 20 71 75  ..As a scalar qu
b710: 61 6e 74 69 74 79 20 6f 72 20 74 68 65 20 6f 70  antity or the op
b720: 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f  erand of an IN o
b730: 70 65 72 61 74 6f 72 2c 0a 74 68 65 20 53 45 4c  perator,.the SEL
b740: 45 43 54 20 73 68 6f 75 6c 64 20 68 61 76 65 20  ECT should have 
b750: 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 63 6f  only a single co
b760: 6c 75 6d 6e 20 69 6e 20 69 74 73 0a 72 65 73 75  lumn in its.resu
b770: 6c 74 2e 20 20 43 6f 6d 70 6f 75 6e 64 20 53 45  lt.  Compound SE
b780: 4c 45 43 54 73 20 28 63 6f 6e 6e 65 63 74 65 64  LECTs (connected
b790: 20 77 69 74 68 20 6b 65 79 77 6f 72 64 73 20 6c   with keywords l
b7a0: 69 6b 65 20 55 4e 49 4f 4e 20 6f 72 0a 45 58 43  ike UNION or.EXC
b7b0: 45 50 54 29 20 61 72 65 20 61 6c 6c 6f 77 65 64  EPT) are allowed
b7c0: 2e 0a 57 69 74 68 20 74 68 65 20 45 58 49 53 54  ..With the EXIST
b7d0: 53 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 20  S operator, the 
b7e0: 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72  columns in the r
b7f0: 65 73 75 6c 74 20 73 65 74 20 6f 66 20 74 68 65  esult set of the
b800: 20 5b 53 45 4c 45 43 54 5d 20 61 72 65 0a 69 67   [SELECT] are.ig
b810: 6e 6f 72 65 64 20 61 6e 64 20 74 68 65 20 65 78  nored and the ex
b820: 70 72 65 73 73 69 6f 6e 20 72 65 74 75 72 6e 73  pression returns
b830: 20 54 52 55 45 20 69 66 20 6f 6e 65 20 6f 72 20   TRUE if one or 
b840: 6d 6f 72 65 20 72 6f 77 73 20 65 78 69 73 74 0a  more rows exist.
b850: 61 6e 64 20 46 41 4c 53 45 20 69 66 20 74 68 65  and FALSE if the
b860: 20 72 65 73 75 6c 74 20 73 65 74 20 69 73 20 65   result set is e
b870: 6d 70 74 79 2e 0a 49 66 20 6e 6f 20 74 65 72 6d  mpty..If no term
b880: 73 20 69 6e 20 74 68 65 20 5b 53 45 4c 45 43 54  s in the [SELECT
b890: 5d 20 65 78 70 72 65 73 73 69 6f 6e 20 72 65 66  ] expression ref
b8a0: 65 72 20 74 6f 20 76 61 6c 75 65 20 69 6e 20 74  er to value in t
b8b0: 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 71 75  he containing.qu
b8c0: 65 72 79 2c 20 74 68 65 6e 20 74 68 65 20 65 78  ery, then the ex
b8d0: 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76 61 6c  pression is eval
b8e0: 75 61 74 65 64 20 6f 6e 63 65 20 70 72 69 6f 72  uated once prior
b8f0: 20 74 6f 20 61 6e 79 20 6f 74 68 65 72 0a 70 72   to any other.pr
b900: 6f 63 65 73 73 69 6e 67 20 61 6e 64 20 74 68 65  ocessing and the
b910: 20 72 65 73 75 6c 74 20 69 73 20 72 65 75 73 65   result is reuse
b920: 64 20 61 73 20 6e 65 63 65 73 73 61 72 79 2e 20  d as necessary. 
b930: 20 49 66 20 74 68 65 20 5b 53 45 4c 45 43 54 5d   If the [SELECT]
b940: 20 65 78 70 72 65 73 73 69 6f 6e 0a 64 6f 65 73   expression.does
b950: 20 63 6f 6e 74 61 69 6e 20 76 61 72 69 61 62 6c   contain variabl
b960: 65 73 20 66 72 6f 6d 20 74 68 65 20 6f 75 74 65  es from the oute
b970: 72 20 71 75 65 72 79 2c 20 74 68 65 6e 20 74 68  r query, then th
b980: 65 20 5b 53 45 4c 45 43 54 5d 20 69 73 20 72 65  e [SELECT] is re
b990: 65 76 61 6c 75 61 74 65 64 0a 65 76 65 72 79 20  evaluated.every 
b9a0: 74 69 6d 65 20 69 74 20 69 73 20 6e 65 65 64 65  time it is neede
b9b0: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20  d.</p>..<p>When 
b9c0: 61 20 53 45 4c 45 43 54 20 69 73 20 74 68 65 20  a SELECT is the 
b9d0: 72 69 67 68 74 20 6f 70 65 72 61 6e 64 20 6f 66  right operand of
b9e0: 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72   the IN operator
b9f0: 2c 20 74 68 65 20 49 4e 0a 6f 70 65 72 61 74 6f  , the IN.operato
ba00: 72 20 72 65 74 75 72 6e 73 20 54 52 55 45 20 69  r returns TRUE i
ba10: 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20  f the result of 
ba20: 74 68 65 20 6c 65 66 74 20 6f 70 65 72 61 6e 64  the left operand
ba30: 20 69 73 20 61 6e 79 20 6f 66 0a 74 68 65 20 76   is any of.the v
ba40: 61 6c 75 65 73 20 67 65 6e 65 72 61 74 65 64 20  alues generated 
ba50: 62 79 20 74 68 65 20 73 65 6c 65 63 74 2e 20 20  by the select.  
ba60: 54 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72 20  The IN operator 
ba70: 6d 61 79 20 62 65 20 70 72 65 63 65 64 65 64 0a  may be preceded.
ba80: 62 79 20 74 68 65 20 4e 4f 54 20 6b 65 79 77 6f  by the NOT keywo
ba90: 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74 68 65  rd to invert the
baa0: 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20 74 65   sense of the te
bab0: 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e  st.</p>..<p>When
bac0: 20 61 20 53 45 4c 45 43 54 20 61 70 70 65 61 72   a SELECT appear
bad0: 73 20 77 69 74 68 69 6e 20 61 6e 20 65 78 70 72  s within an expr
bae0: 65 73 73 69 6f 6e 20 62 75 74 20 69 73 20 6e 6f  ession but is no
baf0: 74 20 74 68 65 20 72 69 67 68 74 0a 6f 70 65 72  t the right.oper
bb00: 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f 70 65  and of an IN ope
bb10: 72 61 74 6f 72 2c 20 74 68 65 6e 20 74 68 65 20  rator, then the 
bb20: 66 69 72 73 74 20 72 6f 77 20 6f 66 20 74 68 65  first row of the
bb30: 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 0a 53   result of the.S
bb40: 45 4c 45 43 54 20 62 65 63 6f 6d 65 73 20 74 68  ELECT becomes th
bb50: 65 20 76 61 6c 75 65 20 75 73 65 64 20 69 6e 20  e value used in 
bb60: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 2e 20  the expression. 
bb70: 20 49 66 20 74 68 65 20 53 45 4c 45 43 54 20 79   If the SELECT y
bb80: 69 65 6c 64 73 0a 6d 6f 72 65 20 74 68 61 6e 20  ields.more than 
bb90: 6f 6e 65 20 72 65 73 75 6c 74 20 72 6f 77 2c 20  one result row, 
bba0: 61 6c 6c 20 72 6f 77 73 20 61 66 74 65 72 20 74  all rows after t
bbb0: 68 65 20 66 69 72 73 74 20 61 72 65 20 69 67 6e  he first are ign
bbc0: 6f 72 65 64 2e 20 20 49 66 0a 74 68 65 20 53 45  ored.  If.the SE
bbd0: 4c 45 43 54 20 79 69 65 6c 64 73 20 6e 6f 20 72  LECT yields no r
bbe0: 6f 77 73 2c 20 74 68 65 6e 20 74 68 65 20 76 61  ows, then the va
bbf0: 6c 75 65 20 6f 66 20 74 68 65 20 53 45 4c 45 43  lue of the SELEC
bc00: 54 20 69 73 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a  T is NULL.</p>..
bc10: 3c 70 3e 41 20 43 41 53 54 20 65 78 70 72 65 73  <p>A CAST expres
bc20: 73 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68 65  sion changes the
bc30: 20 64 61 74 61 74 79 70 65 20 6f 66 20 74 68 65   datatype of the
bc40: 20 3c 65 78 70 72 3e 20 69 6e 74 6f 20 74 68 65   <expr> into the
bc50: 0a 74 79 70 65 20 73 70 65 63 69 66 69 65 64 20  .type specified 
bc60: 62 79 20 26 6c 74 3b 74 79 70 65 26 67 74 3b 2e  by &lt;type&gt;.
bc70: 20 0a 26 6c 74 3b 74 79 70 65 26 67 74 3b 20 63   .&lt;type&gt; c
bc80: 61 6e 20 62 65 20 61 6e 79 20 6e 6f 6e 2d 65 6d  an be any non-em
bc90: 70 74 79 20 74 79 70 65 20 6e 61 6d 65 20 74 68  pty type name th
bca0: 61 74 20 69 73 20 76 61 6c 69 64 0a 66 6f 72 20  at is valid.for 
bcb0: 74 68 65 20 74 79 70 65 20 69 6e 20 61 20 63 6f  the type in a co
bcc0: 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20  lumn definition 
bcd0: 6f 66 20 61 20 5b 43 52 45 41 54 45 20 54 41 42  of a [CREATE TAB
bce0: 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f  LE] statement.</
bcf0: 70 3e 0a 0a 3c 70 3e 42 6f 74 68 20 5b 63 6f 72  p>..<p>Both [cor
bd00: 65 66 75 6e 63 7c 73 69 6d 70 6c 65 5d 20 61 6e  efunc|simple] an
bd10: 64 20 5b 61 67 67 66 75 6e 63 7c 61 67 67 72 65  d [aggfunc|aggre
bd20: 67 61 74 65 5d 20 66 75 6e 63 74 69 6f 6e 73 20  gate] functions 
bd30: 61 72 65 20 73 75 70 70 6f 72 74 65 64 2e 0a 28  are supported..(
bd40: 46 6f 72 20 70 72 65 73 65 6e 74 61 74 69 6f 6e  For presentation
bd50: 20 70 75 72 70 6f 73 65 73 2c 20 73 69 6d 70 6c   purposes, simpl
bd60: 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20  e functions are 
bd70: 66 75 72 74 68 65 72 20 73 75 62 64 69 76 69 64  further subdivid
bd80: 65 64 20 69 6e 74 6f 0a 5b 63 6f 72 65 66 75 6e  ed into.[corefun
bd90: 63 20 7c 20 63 6f 72 65 20 66 75 6e 63 74 69 6f  c | core functio
bda0: 6e 73 5d 20 61 6e 64 20 5b 64 61 74 65 66 75 6e  ns] and [datefun
bdb0: 63 20 7c 20 64 61 74 65 2d 74 69 6d 65 20 66 75  c | date-time fu
bdc0: 6e 63 74 69 6f 6e 73 5d 2e 29 0a 41 20 73 69 6d  nctions].).A sim
bdd0: 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e  ple function can
bde0: 20 62 65 20 75 73 65 64 20 69 6e 20 61 6e 79 20   be used in any 
bdf0: 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 53 69 6d  expression.  Sim
be00: 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65  ple functions re
be10: 74 75 72 6e 0a 61 20 72 65 73 75 6c 74 20 69 6d  turn.a result im
be20: 6d 65 64 69 61 74 65 6c 79 20 62 61 73 65 64 20  mediately based 
be30: 6f 6e 20 74 68 65 69 72 20 69 6e 70 75 74 73 2e  on their inputs.
be40: 20 20 41 67 67 72 65 67 61 74 65 20 66 75 6e 63    Aggregate func
be50: 74 69 6f 6e 73 0a 6d 61 79 20 6f 6e 6c 79 20 62  tions.may only b
be60: 65 20 75 73 65 64 20 69 6e 20 61 20 53 45 4c 45  e used in a SELE
be70: 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 41  CT statement.  A
be80: 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
be90: 6e 73 20 63 6f 6d 70 75 74 65 0a 74 68 65 69 72  ns compute.their
bea0: 20 72 65 73 75 6c 74 20 61 63 72 6f 73 73 20 61   result across a
beb0: 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72  ll rows of the r
bec0: 65 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a  esult set.</p>..
bed0: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
bee0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bef0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bf00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bf10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bf20: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43 6f  ####.Section {Co
bf30: 72 65 20 46 75 6e 63 74 69 6f 6e 73 7d 20 63 6f  re Functions} co
bf40: 72 65 66 75 6e 63 20 7b 63 6f 72 65 66 75 6e 63  refunc {corefunc
bf50: 7d 0a 70 72 6f 63 20 66 75 6e 63 64 65 66 20 7b  }.proc funcdef {
bf60: 73 79 6e 74 61 78 20 6b 65 79 77 6f 72 64 73 20  syntax keywords 
bf70: 64 65 73 63 7d 20 7b 0a 20 20 68 64 5f 70 75 74  desc} {.  hd_put
bf80: 73 20 7b 3c 74 72 3e 7d 0a 20 20 72 65 67 73 75  s {<tr>}.  regsu
bf90: 62 20 2d 61 6c 6c 20 7b 5c 73 2b 7d 20 5b 73 74  b -all {\s+} [st
bfa0: 72 69 6e 67 20 74 72 69 6d 20 24 73 79 6e 74 61  ring trim $synta
bfb0: 78 5d 20 7b 3c 62 72 3e 3c 2f 62 72 3e 7d 20 73  x] {<br></br>} s
bfc0: 79 6e 74 61 78 0a 20 20 72 65 67 73 75 62 20 2d  yntax.  regsub -
bfd0: 61 6c 6c 20 7b 5c 28 28 5b 5e 2a 29 5d 2b 29 5c  all {\(([^*)]+)\
bfe0: 29 7d 20 24 73 79 6e 74 61 78 20 7b 28 3c 69 3e  )} $syntax {(<i>
bff0: 5c 31 3c 2f 69 3e 29 7d 20 73 79 6e 74 61 78 0a  \1</i>)} syntax.
c000: 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 2c    regsub -all {,
c010: 7d 20 24 73 79 6e 74 61 78 20 7b 3c 2f 69 3e 2c  } $syntax {</i>,
c020: 3c 69 3e 7d 20 73 79 6e 74 61 78 0a 20 20 72 65  <i>} syntax.  re
c030: 67 73 75 62 20 2d 61 6c 6c 20 7b 3c 69 3e 5c 2e  gsub -all {<i>\.
c040: 5c 2e 5c 2e 3c 2f 69 3e 7d 20 24 73 79 6e 74 61  \.\.</i>} $synta
c050: 78 20 7b 2e 2e 2e 7d 20 73 79 6e 74 61 78 0a 20  x {...} syntax. 
c060: 20 68 64 5f 70 75 74 73 20 22 3c 74 64 20 76 61   hd_puts "<td va
c070: 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 20 61 6c 69  lign=\"top\" ali
c080: 67 6e 3d 5c 22 72 69 67 68 74 5c 22 20 77 69 64  gn=\"right\" wid
c090: 74 68 3d 5c 22 31 32 30 5c 22 3e 24 73 79 6e 74  th=\"120\">$synt
c0a0: 61 78 3c 2f 74 64 3e 22 0a 20 20 68 64 5f 70 75  ax</td>".  hd_pu
c0b0: 74 73 20 7b 3c 74 64 20 76 61 6c 69 67 6e 3d 22  ts {<td valign="
c0c0: 74 6f 70 22 3e 7d 0a 20 20 69 66 20 7b 5b 6c 6c  top">}.  if {[ll
c0d0: 65 6e 67 74 68 20 24 6b 65 79 77 6f 72 64 73 5d  ength $keywords]
c0e0: 3d 3d 30 7d 20 7b 0a 20 20 20 20 72 65 67 65 78  ==0} {.    regex
c0f0: 70 20 7b 5b 61 2d 7a 5f 5d 2b 7d 20 24 73 79 6e  p {[a-z_]+} $syn
c100: 74 61 78 20 6e 61 6d 65 0a 20 20 20 20 68 64 5f  tax name.    hd_
c110: 66 72 61 67 6d 65 6e 74 20 24 6e 61 6d 65 20 24  fragment $name $
c120: 6e 61 6d 65 0a 20 20 7d 20 65 6c 73 65 20 7b 0a  name.  } else {.
c130: 20 20 20 20 65 76 61 6c 20 68 64 5f 66 72 61 67      eval hd_frag
c140: 6d 65 6e 74 20 24 6b 65 79 77 6f 72 64 73 0a 20  ment $keywords. 
c150: 20 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 24     hd_keywords $
c160: 6b 65 79 77 6f 72 64 73 0a 20 20 7d 0a 20 20 68  keywords.  }.  h
c170: 64 5f 72 65 73 6f 6c 76 65 20 24 64 65 73 63 0a  d_resolve $desc.
c180: 20 20 68 64 5f 70 75 74 73 20 7b 3c 2f 74 64 3e    hd_puts {</td>
c190: 3c 2f 74 72 3e 7d 0a 7d 0a 3c 2f 74 63 6c 3e 0a  </tr>}.}.</tcl>.
c1a0: 0a 3c 70 3e 54 68 65 20 63 6f 72 65 20 66 75 6e  .<p>The core fun
c1b0: 63 74 69 6f 6e 73 20 73 68 6f 77 6e 20 62 65 6c  ctions shown bel
c1c0: 6f 77 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65  ow are available
c1d0: 20 62 79 20 64 65 66 61 75 6c 74 2e 20 0a 5b 64   by default. .[d
c1e0: 61 74 65 66 75 6e 63 20 7c 20 44 61 74 65 20 26  atefunc | Date &
c1f0: 61 6d 70 3b 20 54 69 6d 65 20 66 75 6e 63 74 69  amp; Time functi
c200: 6f 6e 73 5d 20 61 6e 64 0a 5b 61 67 67 66 75 6e  ons] and.[aggfun
c210: 63 20 7c 20 61 67 67 72 65 67 61 74 65 20 66 75  c | aggregate fu
c220: 6e 63 74 69 6f 6e 73 5d 20 61 72 65 20 64 6f 63  nctions] are doc
c230: 75 6d 65 6e 74 65 64 20 73 65 70 61 72 61 74 65  umented separate
c240: 6c 79 2e 20 20 41 6e 0a 61 70 70 6c 69 63 61 74  ly.  An.applicat
c250: 69 6f 6e 20 6d 61 79 20 64 65 66 69 6e 65 20 61  ion may define a
c260: 64 64 69 74 69 6f 6e 61 6c 0a 66 75 6e 63 74 69  dditional.functi
c270: 6f 6e 73 20 77 72 69 74 74 65 6e 20 69 6e 20 43  ons written in C
c280: 20 61 6e 64 20 61 64 64 65 64 20 74 6f 20 74 68   and added to th
c290: 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  e database engin
c2a0: 65 20 75 73 69 6e 67 0a 74 68 65 20 5b 73 71 6c  e using.the [sql
c2b0: 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
c2c0: 74 69 6f 6e 28 29 5d 20 41 50 49 2e 3c 2f 70 3e  tion()] API.</p>
c2d0: 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d  ..<table border=
c2e0: 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30  0 cellpadding=10
c2f0: 3e 0a 3c 74 63 6c 3e 0a 66 75 6e 63 64 65 66 20  >.<tcl>.funcdef 
c300: 7b 61 62 73 28 58 29 7d 20 7b 7d 20 7b 0a 20 20  {abs(X)} {} {.  
c310: 52 65 74 75 72 6e 20 74 68 65 20 61 62 73 6f 6c  Return the absol
c320: 75 74 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  ute value of the
c330: 20 6e 75 6d 65 72 69 63 0a 20 20 61 72 67 75 6d   numeric.  argum
c340: 65 6e 74 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 52  ent <i>X</i>.  R
c350: 65 74 75 72 6e 20 4e 55 4c 4c 20 69 66 20 3c 69  eturn NULL if <i
c360: 3e 58 3c 2f 69 3e 20 69 73 20 4e 55 4c 4c 2e 20  >X</i> is NULL. 
c370: 20 52 65 74 75 72 6e 20 30 2e 30 20 69 66 0a 20   Return 0.0 if. 
c380: 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 6e 6f 74   <i>X</i> is not
c390: 20 61 20 6e 75 6d 65 72 69 63 20 76 61 6c 75 65   a numeric value
c3a0: 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 63 6f  ..}..funcdef {co
c3b0: 61 6c 65 73 63 65 28 58 2c 59 2c 2e 2e 2e 29 7d  alesce(X,Y,...)}
c3c0: 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 61   {} {.  Return a
c3d0: 20 63 6f 70 79 20 6f 66 20 74 68 65 20 66 69 72   copy of the fir
c3e0: 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75  st non-NULL argu
c3f0: 6d 65 6e 74 2e 20 20 49 66 0a 20 20 61 6c 6c 20  ment.  If.  all 
c400: 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 4e 55  arguments are NU
c410: 4c 4c 20 74 68 65 6e 20 4e 55 4c 4c 20 69 73 20  LL then NULL is 
c420: 72 65 74 75 72 6e 65 64 2e 20 20 54 68 65 72 65  returned.  There
c430: 20 6d 75 73 74 20 62 65 20 61 74 20 6c 65 61 73   must be at leas
c440: 74 20 0a 20 20 32 20 61 72 67 75 6d 65 6e 74 73  t .  2 arguments
c450: 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 67 6c  ..}..funcdef {gl
c460: 6f 62 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20  ob(X,Y)} {} {.  
c470: 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73  This function is
c480: 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65   used to impleme
c490: 6e 74 20 74 68 65 0a 20 20 22 3c 62 3e 59 20 47  nt the.  "<b>Y G
c4a0: 4c 4f 42 20 58 3c 2f 62 3e 22 20 73 79 6e 74 61  LOB X</b>" synta
c4b0: 78 20 6f 66 20 53 51 4c 69 74 65 2e 0a 20 20 4e  x of SQLite..  N
c4c0: 6f 74 65 20 74 68 61 74 20 74 68 65 20 58 20 61  ote that the X a
c4d0: 6e 64 20 59 20 61 72 67 75 6d 65 6e 74 73 20 61  nd Y arguments a
c4e0: 72 65 20 72 65 76 65 72 73 65 64 20 69 6e 20 74  re reversed in t
c4f0: 68 65 20 67 6c 6f 62 28 29 20 66 75 6e 63 74 69  he glob() functi
c500: 6f 6e 0a 20 20 72 65 6c 61 74 69 76 65 20 74 6f  on.  relative to
c510: 20 74 68 65 20 69 6e 66 69 78 20 5b 47 4c 4f 42   the infix [GLOB
c520: 5d 20 6f 70 65 72 61 74 6f 72 2e 0a 20 20 54 68  ] operator..  Th
c530: 65 20 5b 73 71 6c 69 74 65 33 5f 63 72 65 61 74  e [sqlite3_creat
c540: 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 0a 20 20  e_function()].  
c550: 69 6e 74 65 72 66 61 63 65 20 63 61 6e 0a 20 20  interface can.  
c560: 62 65 20 75 73 65 64 20 74 6f 20 6f 76 65 72 72  be used to overr
c570: 69 64 65 20 74 68 69 73 20 66 75 6e 63 74 69 6f  ide this functio
c580: 6e 20 61 6e 64 20 74 68 65 72 65 62 79 20 63 68  n and thereby ch
c590: 61 6e 67 65 20 74 68 65 20 6f 70 65 72 61 74 69  ange the operati
c5a0: 6f 6e 0a 20 20 6f 66 20 74 68 65 20 5b 47 4c 4f  on.  of the [GLO
c5b0: 42 5d 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 74 64  B] operator.</td
c5c0: 3e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 69 66  >.}..funcdef {if
c5d0: 6e 75 6c 6c 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a  null(X,Y)} {} {.
c5e0: 20 20 52 65 74 75 72 6e 20 61 20 63 6f 70 79 20    Return a copy 
c5f0: 6f 66 20 74 68 65 20 66 69 72 73 74 20 6e 6f 6e  of the first non
c600: 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e 74 2e 20  -NULL argument. 
c610: 20 49 66 0a 20 20 62 6f 74 68 20 61 72 67 75 6d   If.  both argum
c620: 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c 20 74 68  ents are NULL th
c630: 65 6e 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72  en NULL is retur
c640: 6e 65 64 2e 20 54 68 69 73 20 62 65 68 61 76 65  ned. This behave
c650: 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 0a 20  s the same as . 
c660: 20 5b 63 6f 61 6c 65 73 63 65 28 29 5d 2e 3c 2f   [coalesce()].</
c670: 74 64 3e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  td>.}..funcdef {
c680: 68 65 78 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 54  hex(X)} {} {.  T
c690: 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 69  he argument is i
c6a0: 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20  nterpreted as a 
c6b0: 42 4c 4f 42 2e 20 20 54 68 65 20 72 65 73 75 6c  BLOB.  The resul
c6c0: 74 0a 20 20 69 73 20 61 20 68 65 78 61 64 65 63  t.  is a hexadec
c6d0: 69 6d 61 6c 20 72 65 6e 64 65 72 69 6e 67 20 6f  imal rendering o
c6e0: 66 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66  f the content of
c6f0: 20 74 68 61 74 20 62 6c 6f 62 2e 0a 7d 0a 0a 66   that blob..}..f
c700: 75 6e 63 64 65 66 20 7b 6c 61 73 74 5f 69 6e 73  uncdef {last_ins
c710: 65 72 74 5f 72 6f 77 69 64 28 29 7d 20 7b 7d 20  ert_rowid()} {} 
c720: 7b 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20 5b  {.  Return the [
c730: 52 4f 57 49 44 5d 0a 20 20 6f 66 20 74 68 65 20  ROWID].  of the 
c740: 6c 61 73 74 20 72 6f 77 20 69 6e 73 65 72 74 20  last row insert 
c750: 66 72 6f 6d 20 74 68 69 73 0a 20 20 63 6f 6e 6e  from this.  conn
c760: 65 63 74 69 6f 6e 20 74 6f 20 74 68 65 20 64 61  ection to the da
c770: 74 61 62 61 73 65 2e 20 0a 20 20 54 68 69 73 20  tabase. .  This 
c780: 69 73 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75  is the same valu
c790: 65 20 74 68 61 74 20 77 6f 75 6c 64 20 62 65 20  e that would be 
c7a0: 72 65 74 75 72 6e 65 64 0a 20 20 66 72 6f 6d 20  returned.  from 
c7b0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 61 73  the [sqlite3_las
c7c0: 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29  t_insert_rowid()
c7d0: 5d 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 2e 0a  ] API function..
c7e0: 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 65 6e 67  }..funcdef {leng
c7f0: 74 68 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 52 65  th(X)} {} {.  Re
c800: 74 75 72 6e 20 74 68 65 20 73 74 72 69 6e 67 20  turn the string 
c810: 6c 65 6e 67 74 68 20 6f 66 20 3c 69 3e 58 3c 2f  length of <i>X</
c820: 69 3e 20 69 6e 20 63 68 61 72 61 63 74 65 72 73  i> in characters
c830: 2e 0a 20 20 49 66 20 53 51 4c 69 74 65 20 69 73  ..  If SQLite is
c840: 20 63 6f 6e 66 69 67 75 72 65 64 20 74 6f 20 73   configured to s
c850: 75 70 70 6f 72 74 20 55 54 46 2d 38 2c 20 74 68  upport UTF-8, th
c860: 65 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  en the number of
c870: 20 55 54 46 2d 38 0a 20 20 63 68 61 72 61 63 74   UTF-8.  charact
c880: 65 72 73 20 69 73 20 72 65 74 75 72 6e 65 64 2c  ers is returned,
c890: 20 6e 6f 74 20 74 68 65 20 6e 75 6d 62 65 72 20   not the number 
c8a0: 6f 66 20 62 79 74 65 73 2e 0a 7d 0a 0a 66 75 6e  of bytes..}..fun
c8b0: 63 64 65 66 20 7b 6c 69 6b 65 28 58 2c 59 29 20  cdef {like(X,Y) 
c8c0: 6c 69 6b 65 28 58 2c 59 2c 5a 29 7d 20 7b 7d 20  like(X,Y,Z)} {} 
c8d0: 7b 0a 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f  {.  This functio
c8e0: 6e 20 69 73 20 75 73 65 64 20 74 6f 20 69 6d 70  n is used to imp
c8f0: 6c 65 6d 65 6e 74 20 74 68 65 20 22 3c 62 3e 59  lement the "<b>Y
c900: 20 4c 49 4b 45 20 58 20 26 23 39 31 3b 45 53 43   LIKE X &#91;ESC
c910: 41 50 45 20 5a 26 23 39 33 3b 3c 2f 62 3e 22 0a  APE Z&#93;</b>".
c920: 20 20 73 79 6e 74 61 78 20 6f 66 20 53 51 4c 2e    syntax of SQL.
c930: 20 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c   If the optional
c940: 20 45 53 43 41 50 45 20 63 6c 61 75 73 65 20 69   ESCAPE clause i
c950: 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20  s present, then 
c960: 74 68 65 0a 20 20 75 73 65 72 2d 66 75 6e 63 74  the.  user-funct
c970: 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64 20 77  ion is invoked w
c980: 69 74 68 20 74 68 72 65 65 20 61 72 67 75 6d 65  ith three argume
c990: 6e 74 73 2e 20 4f 74 68 65 72 77 69 73 65 2c 20  nts. Otherwise, 
c9a0: 69 74 20 69 73 0a 20 20 69 6e 76 6f 6b 65 64 20  it is.  invoked 
c9b0: 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e  with two argumen
c9c0: 74 73 20 6f 6e 6c 79 2e 20 4e 6f 74 65 20 74 68  ts only. Note th
c9d0: 61 74 20 74 68 65 20 58 20 61 6e 64 20 59 20 70  at the X and Y p
c9e0: 61 72 61 6d 65 74 65 72 73 20 61 72 65 0a 20 20  arameters are.  
c9f0: 72 65 76 65 72 73 65 64 20 69 6e 20 74 68 65 20  reversed in the 
ca00: 6c 69 6b 65 28 29 20 66 75 6e 63 74 69 6f 6e 20  like() function 
ca10: 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20  relative to the 
ca20: 69 6e 66 69 78 20 5b 4c 49 4b 45 5d 20 6f 70 65  infix [LIKE] ope
ca30: 72 61 74 6f 72 2e 0a 20 20 54 68 65 20 5b 73 71  rator..  The [sq
ca40: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
ca50: 63 74 69 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61  ction()] interfa
ca60: 63 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  ce can be used t
ca70: 6f 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 0a  o override this.
ca80: 20 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74    function and t
ca90: 68 65 72 65 62 79 20 63 68 61 6e 67 65 20 74 68  hereby change th
caa0: 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74  e operation of t
cab0: 68 65 0a 20 20 5b 4c 49 4b 45 5d 20 6f 70 65 72  he.  [LIKE] oper
cac0: 61 74 6f 72 2e 20 57 68 65 6e 20 64 6f 69 6e 67  ator. When doing
cad0: 20 74 68 69 73 2c 20 69 74 20 6d 61 79 20 62 65   this, it may be
cae0: 20 69 6d 70 6f 72 74 61 6e 74 0a 20 20 74 6f 20   important.  to 
caf0: 6f 76 65 72 72 69 64 65 20 62 6f 74 68 20 74 68  override both th
cb00: 65 20 74 77 6f 20 61 6e 64 20 74 68 72 65 65 20  e two and three 
cb10: 61 72 67 75 6d 65 6e 74 20 76 65 72 73 69 6f 6e  argument version
cb20: 73 20 6f 66 20 74 68 65 20 6c 69 6b 65 28 29 20  s of the like() 
cb30: 0a 20 20 66 75 6e 63 74 69 6f 6e 2e 20 4f 74 68  .  function. Oth
cb40: 65 72 77 69 73 65 2c 20 64 69 66 66 65 72 65 6e  erwise, differen
cb50: 74 20 63 6f 64 65 20 6d 61 79 20 62 65 20 63 61  t code may be ca
cb60: 6c 6c 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e  lled to implemen
cb70: 74 20 74 68 65 0a 20 20 5b 4c 49 4b 45 5d 20 6f  t the.  [LIKE] o
cb80: 70 65 72 61 74 6f 72 20 64 65 70 65 6e 64 69 6e  perator dependin
cb90: 67 20 6f 6e 20 77 68 65 74 68 65 72 20 6f 72 20  g on whether or 
cba0: 6e 6f 74 20 61 6e 20 45 53 43 41 50 45 20 63 6c  not an ESCAPE cl
cbb0: 61 75 73 65 20 77 61 73 20 0a 20 20 73 70 65 63  ause was .  spec
cbc0: 69 66 69 65 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65  ified..}..funcde
cbd0: 66 20 7b 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  f {load_extensio
cbe0: 6e 28 58 29 20 6c 6f 61 64 5f 65 78 74 65 6e 73  n(X) load_extens
cbf0: 69 6f 6e 28 58 2c 59 29 7d 20 7b 6c 6f 61 64 5f  ion(X,Y)} {load_
cc00: 65 78 74 65 6e 73 69 6f 6e 7d 20 7b 0a 20 20 4c  extension} {.  L
cc10: 6f 61 64 20 53 51 4c 69 74 65 20 65 78 74 65 6e  oad SQLite exten
cc20: 73 69 6f 6e 73 20 6f 75 74 20 6f 66 20 74 68 65  sions out of the
cc30: 20 73 68 61 72 65 64 20 6c 69 62 72 61 72 79 0a   shared library.
cc40: 20 20 66 69 6c 65 20 6e 61 6d 65 64 20 3c 69 3e    file named <i>
cc50: 58 3c 2f 69 3e 20 75 73 69 6e 67 20 74 68 65 20  X</i> using the 
cc60: 65 6e 74 72 79 20 70 6f 69 6e 74 20 3c 69 3e 59  entry point <i>Y
cc70: 3c 2f 69 3e 2e 20 20 54 68 65 20 72 65 73 75 6c  </i>.  The resul
cc80: 74 0a 20 20 69 73 20 61 20 4e 55 4c 4c 2e 20 20  t.  is a NULL.  
cc90: 49 66 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 6f  If <i>Y</i> is o
cca0: 6d 69 74 74 65 64 20 74 68 65 6e 20 74 68 65 20  mitted then the 
ccb0: 64 65 66 61 75 6c 74 20 65 6e 74 72 79 20 70 6f  default entry po
ccc0: 69 6e 74 0a 20 20 6f 66 20 3c 62 3e 73 71 6c 69  int.  of <b>sqli
ccd0: 74 65 33 5f 65 78 74 65 6e 73 69 6f 6e 5f 69 6e  te3_extension_in
cce0: 69 74 3c 2f 62 3e 20 69 73 20 75 73 65 64 2e 20  it</b> is used. 
ccf0: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72   This function r
cd00: 61 69 73 65 73 0a 20 20 61 6e 20 65 78 63 65 70  aises.  an excep
cd10: 74 69 6f 6e 20 69 66 20 74 68 65 20 65 78 74 65  tion if the exte
cd20: 6e 73 69 6f 6e 20 66 61 69 6c 73 20 74 6f 20 6c  nsion fails to l
cd30: 6f 61 64 20 6f 72 20 69 6e 69 74 69 61 6c 69 7a  oad or initializ
cd40: 65 20 63 6f 72 72 65 63 74 6c 79 2e 0a 0a 20 20  e correctly...  
cd50: 3c 70 3e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  <p>This function
cd60: 20 77 69 6c 6c 20 66 61 69 6c 20 69 66 20 74 68   will fail if th
cd70: 65 20 65 78 74 65 6e 73 69 6f 6e 20 61 74 74 65  e extension atte
cd80: 6d 70 74 73 20 74 6f 20 6d 6f 64 69 66 79 0a 20  mpts to modify. 
cd90: 20 6f 72 20 64 65 6c 65 74 65 20 61 20 53 51 4c   or delete a SQL
cda0: 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 63 6f 6c   function or col
cdb0: 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 2e  lating sequence.
cdc0: 20 20 54 68 65 0a 20 20 65 78 74 65 6e 73 69 6f    The.  extensio
cdd0: 6e 20 63 61 6e 20 61 64 64 20 6e 65 77 20 66 75  n can add new fu
cde0: 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f 6c 6c 61  nctions or colla
cdf0: 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73 2c 20  ting sequences, 
ce00: 62 75 74 20 63 61 6e 6e 6f 74 0a 20 20 6d 6f 64  but cannot.  mod
ce10: 69 66 79 20 6f 72 20 64 65 6c 65 74 65 20 65 78  ify or delete ex
ce20: 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73  isting functions
ce30: 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65   or collating se
ce40: 71 75 65 6e 63 65 73 20 62 65 63 61 75 73 65 0a  quences because.
ce50: 20 20 74 68 6f 73 65 20 66 75 6e 63 74 69 6f 6e    those function
ce60: 73 20 61 6e 64 2f 6f 72 20 63 6f 6c 6c 61 74 69  s and/or collati
ce70: 6e 67 20 73 65 71 75 65 6e 63 65 73 20 6d 69 67  ng sequences mig
ce80: 68 74 20 62 65 20 75 73 65 64 20 65 6c 73 65 77  ht be used elsew
ce90: 68 65 72 65 0a 20 20 69 6e 20 74 68 65 20 63 75  here.  in the cu
cea0: 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67 20  rrently running 
ceb0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  SQL statement.  
cec0: 54 6f 20 6c 6f 61 64 20 61 6e 20 65 78 74 65 6e  To load an exten
ced0: 73 69 6f 6e 20 74 68 61 74 0a 20 20 63 68 61 6e  sion that.  chan
cee0: 67 65 73 20 6f 72 20 64 65 6c 65 74 65 73 20 66  ges or deletes f
cef0: 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f 6c 6c  unctions or coll
cf00: 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73 2c  ating sequences,
cf10: 20 75 73 65 20 74 68 65 0a 20 20 5b 73 71 6c 69   use the.  [sqli
cf20: 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  te3_load_extensi
cf30: 6f 6e 28 29 5d 20 43 2d 6c 61 6e 67 75 61 67 65  on()] C-language
cf40: 20 41 50 49 2e 3c 2f 70 3e 0a 7d 0a 0a 66 75 6e   API.</p>.}..fun
cf50: 63 64 65 66 20 7b 6c 6f 77 65 72 28 58 29 7d 20  cdef {lower(X)} 
cf60: 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 61 20  {} {.  Return a 
cf70: 63 6f 70 79 20 6f 66 20 73 74 72 69 6e 67 20 3c  copy of string <
cf80: 69 3e 58 3c 2f 69 3e 20 77 69 74 68 20 61 6c 6c  i>X</i> with all
cf90: 20 41 53 43 49 49 20 63 68 61 72 61 63 74 65 72   ASCII character
cfa0: 73 0a 20 20 63 6f 6e 76 65 72 74 65 64 20 74 6f  s.  converted to
cfb0: 20 6c 6f 77 65 72 20 63 61 73 65 2e 20 20 54 68   lower case.  Th
cfc0: 65 20 43 20 6c 69 62 72 61 72 79 20 3c 62 3e 74  e C library <b>t
cfd0: 6f 6c 6f 77 65 72 28 29 3c 2f 62 3e 20 72 6f 75  olower()</b> rou
cfe0: 74 69 6e 65 20 69 73 20 75 73 65 64 0a 20 20 66  tine is used.  f
cff0: 6f 72 20 74 68 65 20 63 6f 6e 76 65 72 73 69 6f  or the conversio
d000: 6e 2c 20 77 68 69 63 68 20 6d 65 61 6e 73 20 74  n, which means t
d010: 68 61 74 20 74 68 69 73 20 66 75 6e 63 74 69 6f  hat this functio
d020: 6e 20 6d 69 67 68 74 20 6e 6f 74 0a 20 20 77 6f  n might not.  wo
d030: 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 6f 6e 20  rk correctly on 
d040: 6e 6f 6e 2d 41 53 43 49 49 20 55 54 46 2d 38 20  non-ASCII UTF-8 
d050: 63 68 61 72 61 63 74 65 72 73 2e 0a 7d 0a 0a 66  characters..}..f
d060: 75 6e 63 64 65 66 20 7b 6c 74 72 69 6d 28 58 29  uncdef {ltrim(X)
d070: 20 6c 74 72 69 6d 28 58 2c 59 29 7d 20 7b 7d 20   ltrim(X,Y)} {} 
d080: 7b 0a 20 20 52 65 74 75 72 6e 20 61 20 73 74 72  {.  Return a str
d090: 69 6e 67 20 66 6f 72 6d 65 64 20 62 79 20 72 65  ing formed by re
d0a0: 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64 20 61  moving any and a
d0b0: 6c 6c 0a 20 20 63 68 61 72 61 63 74 65 72 73 20  ll.  characters 
d0c0: 74 68 61 74 20 61 70 70 65 61 72 20 69 6e 20 3c  that appear in <
d0d0: 69 3e 59 3c 2f 69 3e 20 66 72 6f 6d 20 74 68 65  i>Y</i> from the
d0e0: 20 6c 65 66 74 20 73 69 64 65 20 6f 66 20 3c 69   left side of <i
d0f0: 3e 58 3c 2f 69 3e 2e 0a 20 20 49 66 20 74 68 65  >X</i>..  If the
d100: 20 3c 69 3e 59 3c 2f 69 3e 20 61 72 67 75 6d 65   <i>Y</i> argume
d110: 6e 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 73  nt is omitted, s
d120: 70 61 63 65 73 20 61 72 65 20 72 65 6d 6f 76 65  paces are remove
d130: 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6d  d..}..funcdef {m
d140: 61 78 28 58 2c 59 2c 2e 2e 2e 29 7d 20 7b 6d 61  ax(X,Y,...)} {ma
d150: 78 43 6f 72 65 46 75 6e 63 20 6d 61 78 7d 20 7b  xCoreFunc max} {
d160: 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20 61 72  .  Return the ar
d170: 67 75 6d 65 6e 74 20 77 69 74 68 20 74 68 65 20  gument with the 
d180: 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 2e 20 20  maximum value.  
d190: 41 72 67 75 6d 65 6e 74 73 0a 20 20 6d 61 79 20  Arguments.  may 
d1a0: 62 65 20 73 74 72 69 6e 67 73 20 69 6e 20 61 64  be strings in ad
d1b0: 64 69 74 69 6f 6e 20 74 6f 20 6e 75 6d 62 65 72  dition to number
d1c0: 73 2e 20 20 54 68 65 20 6d 61 78 69 6d 75 6d 20  s.  The maximum 
d1d0: 76 61 6c 75 65 20 69 73 20 64 65 74 65 72 6d 69  value is determi
d1e0: 6e 65 64 0a 20 20 62 79 20 74 68 65 20 75 73 75  ned.  by the usu
d1f0: 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 2e 20 20  al sort order.  
d200: 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d 61 78  Note that <b>max
d210: 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70  ()</b> is a simp
d220: 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e  le function when
d230: 0a 20 20 69 74 20 68 61 73 20 32 20 6f 72 20 6d  .  it has 2 or m
d240: 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75  ore arguments bu
d250: 74 20 63 6f 6e 76 65 72 74 73 20 74 6f 20 61 6e  t converts to an
d260: 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
d270: 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a 20 20 6f  ion if given.  o
d280: 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67  nly a single arg
d290: 75 6d 65 6e 74 2e 0a 7d 0a 0a 66 75 6e 63 64 65  ument..}..funcde
d2a0: 66 20 7b 6d 69 6e 28 58 2c 59 2c 2e 2e 2e 29 7d  f {min(X,Y,...)}
d2b0: 20 7b 6d 69 6e 43 6f 72 65 46 75 6e 63 20 6d 69   {minCoreFunc mi
d2c0: 6e 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68  n} {.  Return th
d2d0: 65 20 61 72 67 75 6d 65 6e 74 20 77 69 74 68 20  e argument with 
d2e0: 74 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c 75  the minimum valu
d2f0: 65 2e 20 20 41 72 67 75 6d 65 6e 74 73 0a 20 20  e.  Arguments.  
d300: 6d 61 79 20 62 65 20 73 74 72 69 6e 67 73 20 69  may be strings i
d310: 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 6e 75  n addition to nu
d320: 6d 62 65 72 73 2e 20 20 54 68 65 20 6d 69 6e 69  mbers.  The mini
d330: 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 64 65 74  mum value is det
d340: 65 72 6d 69 6e 65 64 0a 20 20 62 79 20 74 68 65  ermined.  by the
d350: 20 75 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65   usual sort orde
d360: 72 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62  r.  Note that <b
d370: 3e 6d 69 6e 28 29 3c 2f 62 3e 20 69 73 20 61 20  >min()</b> is a 
d380: 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20  simple function 
d390: 77 68 65 6e 0a 20 20 69 74 20 68 61 73 20 32 20  when.  it has 2 
d3a0: 6f 72 20 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74  or more argument
d3b0: 73 20 62 75 74 20 63 6f 6e 76 65 72 74 73 20 74  s but converts t
d3c0: 6f 20 61 6e 20 61 67 67 72 65 67 61 74 65 20 66  o an aggregate f
d3d0: 75 6e 63 74 69 6f 6e 20 69 66 20 67 69 76 65 6e  unction if given
d3e0: 0a 20 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65  .  only a single
d3f0: 20 61 72 67 75 6d 65 6e 74 2e 0a 7d 0a 0a 66 75   argument..}..fu
d400: 6e 63 64 65 66 20 7b 6e 75 6c 6c 69 66 28 58 2c  ncdef {nullif(X,
d410: 59 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72  Y)} {} {.  Retur
d420: 6e 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75  n the first argu
d430: 6d 65 6e 74 20 69 66 20 74 68 65 20 61 72 67 75  ment if the argu
d440: 6d 65 6e 74 73 20 61 72 65 20 64 69 66 66 65 72  ments are differ
d450: 65 6e 74 2c 20 0a 20 20 6f 74 68 65 72 77 69 73  ent, .  otherwis
d460: 65 20 72 65 74 75 72 6e 20 4e 55 4c 4c 2e 0a 7d  e return NULL..}
d470: 0a 0a 66 75 6e 63 64 65 66 20 7b 71 75 6f 74 65  ..funcdef {quote
d480: 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 54 68 69 73  (X)} {} {.  This
d490: 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73   routine returns
d4a0: 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 20   a string which 
d4b0: 69 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 0a  is the value of.
d4c0: 20 20 69 74 73 20 61 72 67 75 6d 65 6e 74 20 73    its argument s
d4d0: 75 69 74 61 62 6c 65 20 66 6f 72 20 69 6e 63 6c  uitable for incl
d4e0: 75 73 69 6f 6e 20 69 6e 74 6f 20 61 6e 6f 74 68  usion into anoth
d4f0: 65 72 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  er SQL statement
d500: 2e 0a 20 20 53 74 72 69 6e 67 73 20 61 72 65 20  ..  Strings are 
d510: 73 75 72 72 6f 75 6e 64 65 64 20 62 79 20 73 69  surrounded by si
d520: 6e 67 6c 65 2d 71 75 6f 74 65 73 20 77 69 74 68  ngle-quotes with
d530: 20 65 73 63 61 70 65 73 20 6f 6e 20 69 6e 74 65   escapes on inte
d540: 72 69 6f 72 20 71 75 6f 74 65 73 0a 20 20 61 73  rior quotes.  as
d550: 20 6e 65 65 64 65 64 2e 20 20 42 4c 4f 42 73 20   needed.  BLOBs 
d560: 61 72 65 20 65 6e 63 6f 64 65 64 20 61 73 20 68  are encoded as h
d570: 65 78 61 64 65 63 69 6d 61 6c 20 6c 69 74 65 72  exadecimal liter
d580: 61 6c 73 2e 0a 20 20 54 68 65 20 69 6d 70 6c 65  als..  The imple
d590: 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 5b 56 41  mentation of [VA
d5a0: 43 55 55 4d 5d 20 75 73 65 73 20 74 68 69 73 20  CUUM] uses this 
d5b0: 66 75 6e 63 74 69 6f 6e 2e 20 54 68 65 20 66 75  function. The fu
d5c0: 6e 63 74 69 6f 6e 0a 20 20 69 73 20 61 6c 73 6f  nction.  is also
d5d0: 20 75 73 65 66 75 6c 20 77 68 65 6e 20 77 72 69   useful when wri
d5e0: 74 69 6e 67 20 74 72 69 67 67 65 72 73 20 74 6f  ting triggers to
d5f0: 20 69 6d 70 6c 65 6d 65 6e 74 20 75 6e 64 6f 2f   implement undo/
d600: 72 65 64 6f 20 66 75 6e 63 74 69 6f 6e 61 6c 69  redo functionali
d610: 74 79 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  ty..}..funcdef {
d620: 72 61 6e 64 6f 6d 28 29 7d 20 7b 7d 20 7b 0a 20  random()} {} {. 
d630: 20 52 65 74 75 72 6e 20 61 20 70 73 65 75 64 6f   Return a pseudo
d640: 2d 72 61 6e 64 6f 6d 20 69 6e 74 65 67 65 72 0a  -random integer.
d650: 20 20 62 65 74 77 65 65 6e 20 2d 39 32 32 33 33    between -92233
d660: 37 32 30 33 36 38 35 34 37 37 35 38 30 38 20 61  72036854775808 a
d670: 6e 64 20 2b 39 32 32 33 33 37 32 30 33 36 38 35  nd +922337203685
d680: 34 37 37 35 38 30 37 2e 0a 7d 0a 0a 66 75 6e 63  4775807..}..func
d690: 64 65 66 20 7b 72 61 6e 64 6f 6d 62 6c 6f 62 28  def {randomblob(
d6a0: 4e 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72  N)} {} {.  Retur
d6b0: 6e 20 61 6e 20 3c 69 3e 4e 3c 2f 69 3e 2d 62 79  n an <i>N</i>-by
d6c0: 74 65 20 62 6c 6f 62 20 63 6f 6e 74 61 69 6e 69  te blob containi
d6d0: 6e 67 20 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d  ng pseudo-random
d6e0: 20 62 79 74 65 73 2e 0a 20 20 3c 69 3e 4e 3c 2f   bytes..  <i>N</
d6f0: 69 3e 20 73 68 6f 75 6c 64 20 62 65 20 61 20 70  i> should be a p
d700: 6f 73 74 69 76 65 20 69 6e 74 65 67 65 72 2e 0a  ostive integer..
d710: 0a 20 20 3c 70 3e 48 69 6e 74 3a 20 20 61 70 70  .  <p>Hint:  app
d720: 6c 69 63 61 74 69 6f 6e 73 20 63 61 6e 20 67 65  lications can ge
d730: 6e 65 72 61 74 65 20 67 6c 6f 62 61 6c 6c 79 20  nerate globally 
d740: 75 6e 69 71 75 65 20 69 64 65 6e 74 69 66 69 65  unique identifie
d750: 72 73 0a 20 20 75 73 69 6e 67 20 74 68 69 73 20  rs.  using this 
d760: 66 75 6e 63 74 69 6f 6e 20 74 6f 67 65 74 68 65  function togethe
d770: 72 20 77 69 74 68 20 5b 68 65 78 28 29 5d 20 61  r with [hex()] a
d780: 6e 64 2f 6f 72 0a 20 20 5b 6c 6f 77 65 72 28 29  nd/or.  [lower()
d790: 5d 20 6c 69 6b 65 20 74 68 69 73 3a 3c 2f 70 3e  ] like this:</p>
d7a0: 0a 0a 20 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  ..  <blockquote>
d7b0: 0a 20 20 68 65 78 28 72 61 6e 64 6f 6d 62 6c 6f  .  hex(randomblo
d7c0: 62 28 31 36 29 29 3c 62 72 3e 3c 2f 62 72 3e 0a  b(16))<br></br>.
d7d0: 20 20 6c 6f 77 65 72 28 68 65 78 28 72 61 6e 64    lower(hex(rand
d7e0: 6f 6d 62 6c 6f 62 28 31 36 29 29 29 0a 20 20 3c  omblob(16))).  <
d7f0: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a  /blockquote>.}..
d800: 66 75 6e 63 64 65 66 20 7b 72 65 70 6c 61 63 65  funcdef {replace
d810: 28 58 2c 59 2c 5a 29 7d 20 7b 7d 20 7b 0a 20 20  (X,Y,Z)} {} {.  
d820: 52 65 74 75 72 6e 20 61 20 73 74 72 69 6e 67 20  Return a string 
d830: 66 6f 72 6d 65 64 20 62 79 20 73 75 62 73 74 69  formed by substi
d840: 74 75 74 69 6e 67 20 73 74 72 69 6e 67 20 3c 69  tuting string <i
d850: 3e 5a 3c 2f 69 3e 20 66 6f 72 0a 20 20 65 76 65  >Z</i> for.  eve
d860: 72 79 20 6f 63 63 75 72 72 61 6e 63 65 20 6f 66  ry occurrance of
d870: 20 73 74 72 69 6e 67 20 3c 69 3e 59 3c 2f 69 3e   string <i>Y</i>
d880: 20 69 6e 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c   in string <i>X<
d890: 2f 69 3e 2e 20 20 54 68 65 20 5b 42 49 4e 41 52  /i>.  The [BINAR
d8a0: 59 5d 0a 20 20 63 6f 6c 6c 61 74 69 6e 67 20 73  Y].  collating s
d8b0: 65 71 75 65 6e 63 65 20 69 73 20 75 73 65 64 20  equence is used 
d8c0: 66 6f 72 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e  for comparisons.
d8d0: 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72 6f 75  .}..funcdef {rou
d8e0: 6e 64 28 58 29 20 72 6f 75 6e 64 28 58 2c 59 29  nd(X) round(X,Y)
d8f0: 7d 20 7b 7d 20 7b 0a 20 20 52 6f 75 6e 64 20 6f  } {} {.  Round o
d900: 66 66 20 74 68 65 20 6e 75 6d 62 65 72 20 3c 69  ff the number <i
d910: 3e 58 3c 2f 69 3e 20 74 6f 20 3c 69 3e 59 3c 2f  >X</i> to <i>Y</
d920: 69 3e 20 64 69 67 69 74 73 20 74 6f 20 74 68 65  i> digits to the
d930: 0a 20 20 72 69 67 68 74 20 6f 66 20 74 68 65 20  .  right of the 
d940: 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74 2e 20 20  decimal point.  
d950: 49 66 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 20  If the <i>Y</i> 
d960: 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74  argument is omit
d970: 74 65 64 2c 20 30 20 69 73 20 0a 20 20 61 73 73  ted, 0 is .  ass
d980: 75 6d 65 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  umed..}..funcdef
d990: 20 7b 72 74 72 69 6d 28 58 29 20 72 74 72 69 6d   {rtrim(X) rtrim
d9a0: 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 52 65  (X,Y)} {} {.  Re
d9b0: 74 75 72 6e 20 61 20 73 74 72 69 6e 67 20 66 6f  turn a string fo
d9c0: 72 6d 65 64 20 62 79 20 72 65 6d 6f 76 69 6e 67  rmed by removing
d9d0: 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a 20 20 63   any and all.  c
d9e0: 68 61 72 61 63 74 65 72 73 20 74 68 61 74 20 61  haracters that a
d9f0: 70 70 65 61 72 20 69 6e 20 3c 69 3e 59 3c 2f 69  ppear in <i>Y</i
da00: 3e 20 66 72 6f 6d 20 74 68 65 20 72 69 67 68 74  > from the right
da10: 20 73 69 64 65 20 6f 66 20 3c 69 3e 58 3c 2f 69   side of <i>X</i
da20: 3e 2e 0a 20 20 49 66 20 74 68 65 20 3c 69 3e 59  >..  If the <i>Y
da30: 3c 2f 69 3e 20 61 72 67 75 6d 65 6e 74 20 69 73  </i> argument is
da40: 20 6f 6d 69 74 74 65 64 2c 20 73 70 61 63 65 73   omitted, spaces
da50: 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 0a 7d 0a   are removed..}.
da60: 0a 66 75 6e 63 64 65 66 20 7b 73 6f 75 6e 64 65  .funcdef {sounde
da70: 78 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 43 6f 6d  x(X)} {} {.  Com
da80: 70 75 74 65 20 74 68 65 20 73 6f 75 6e 64 65 78  pute the soundex
da90: 20 65 6e 63 6f 64 69 6e 67 20 6f 66 20 74 68 65   encoding of the
daa0: 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e   string <i>X</i>
dab0: 2e 0a 20 20 54 68 65 20 73 74 72 69 6e 67 20 22  ..  The string "
dac0: 3f 30 30 30 22 20 69 73 20 72 65 74 75 72 6e 65  ?000" is returne
dad0: 64 20 69 66 20 74 68 65 20 61 72 67 75 6d 65 6e  d if the argumen
dae0: 74 20 69 73 20 4e 55 4c 4c 2e 0a 20 20 54 68 69  t is NULL..  Thi
daf0: 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 6d  s function is om
db00: 69 74 74 65 64 20 66 72 6f 6d 20 53 51 4c 69 74  itted from SQLit
db10: 65 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 20 20  e by default..  
db20: 49 74 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c  It is only avail
db30: 61 62 6c 65 20 74 68 65 20 2d 44 53 51 4c 49 54  able the -DSQLIT
db40: 45 5f 53 4f 55 4e 44 45 58 3d 31 20 63 6f 6d 70  E_SOUNDEX=1 comp
db50: 69 6c 65 72 20 6f 70 74 69 6f 6e 0a 20 20 69 73  iler option.  is
db60: 20 75 73 65 64 20 77 68 65 6e 20 53 51 4c 69 74   used when SQLit
db70: 65 20 69 73 20 62 75 69 6c 74 2e 0a 7d 0a 0a 66  e is built..}..f
db80: 75 6e 63 64 65 66 20 7b 73 71 6c 69 74 65 5f 76  uncdef {sqlite_v
db90: 65 72 73 69 6f 6e 28 58 29 7d 20 7b 73 71 6c 69  ersion(X)} {sqli
dba0: 74 65 5f 76 65 72 73 69 6f 6e 7d 20 7b 0a 20 20  te_version} {.  
dbb0: 52 65 74 75 72 6e 20 74 68 65 20 76 65 72 73 69  Return the versi
dbc0: 6f 6e 20 73 74 72 69 6e 67 20 66 6f 72 20 74 68  on string for th
dbd0: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
dbe0: 0a 20 20 74 68 61 74 20 69 73 20 72 75 6e 6e 69  .  that is runni
dbf0: 6e 67 2e 20 20 45 78 61 6d 70 6c 65 3a 20 20 22  ng.  Example:  "
dc00: 33 2e 35 2e 39 22 0a 7d 0a 0a 66 75 6e 63 64 65  3.5.9".}..funcde
dc10: 66 20 7b 73 75 62 73 74 72 28 58 2c 59 2c 5a 29  f {substr(X,Y,Z)
dc20: 20 73 75 62 73 74 72 28 58 2c 59 29 7d 20 7b 7d   substr(X,Y)} {}
dc30: 20 7b 0a 20 20 52 65 74 75 72 6e 20 61 20 73 75   {.  Return a su
dc40: 62 73 74 72 69 6e 67 20 6f 66 20 69 6e 70 75 74  bstring of input
dc50: 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e   string <i>X</i>
dc60: 20 74 68 61 74 20 62 65 67 69 6e 73 0a 20 20 77   that begins.  w
dc70: 69 74 68 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e  ith the <i>Y</i>
dc80: 2d 74 68 20 63 68 61 72 61 63 74 65 72 20 61 6e  -th character an
dc90: 64 20 77 68 69 63 68 20 69 73 20 3c 69 3e 5a 3c  d which is <i>Z<
dca0: 2f 69 3e 20 63 68 61 72 61 63 74 65 72 73 20 6c  /i> characters l
dcb0: 6f 6e 67 2e 0a 20 20 49 66 20 3c 69 3e 5a 3c 2f  ong..  If <i>Z</
dcc0: 69 3e 20 69 73 20 6f 6d 69 74 74 65 64 20 74 68  i> is omitted th
dcd0: 65 6e 20 61 6c 6c 20 63 68 61 72 61 63 74 65 72  en all character
dce0: 20 74 68 72 6f 75 67 68 20 74 68 65 20 65 6e 64   through the end
dcf0: 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 0a 20   of the string. 
dd00: 20 61 72 65 20 72 65 74 75 72 6e 65 64 2e 0a 20   are returned.. 
dd10: 20 54 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63   The left-most c
dd20: 68 61 72 61 63 74 65 72 20 6f 66 20 3c 69 3e 58  haracter of <i>X
dd30: 3c 2f 69 3e 20 69 73 20 6e 75 6d 62 65 72 20 31  </i> is number 1
dd40: 2e 20 20 49 66 20 3c 69 3e 59 3c 2f 69 3e 20 69  .  If <i>Y</i> i
dd50: 73 20 6e 65 67 61 74 69 76 65 0a 20 20 74 68 65  s negative.  the
dd60: 20 74 68 65 20 66 69 72 73 74 20 63 68 61 72 61   the first chara
dd70: 63 74 65 72 20 6f 66 20 74 68 65 20 73 75 62 73  cter of the subs
dd80: 74 72 69 6e 67 20 69 73 20 66 6f 75 6e 64 20 62  tring is found b
dd90: 79 20 63 6f 75 6e 74 69 6e 67 20 66 72 6f 6d 20  y counting from 
dda0: 74 68 65 0a 20 20 72 69 67 68 74 20 72 61 74 68  the.  right rath
ddb0: 65 72 20 74 68 61 6e 20 74 68 65 20 6c 65 66 74  er than the left
ddc0: 2e 20 20 49 66 20 3c 69 3e 58 3c 2f 69 3e 20 69  .  If <i>X</i> i
ddd0: 73 20 73 74 72 69 6e 67 0a 20 20 74 68 65 6e 20  s string.  then 
dde0: 63 68 61 72 61 63 74 65 72 73 20 69 6e 64 69 63  characters indic
ddf0: 65 73 20 72 65 66 65 72 20 74 6f 20 61 63 74 75  es refer to actu
de00: 61 6c 20 55 54 46 2d 38 20 63 68 61 72 61 63 74  al UTF-8 charact
de10: 65 72 73 2e 20 20 49 66 0a 20 20 3c 69 3e 58 3c  ers.  If.  <i>X<
de20: 2f 69 3e 20 69 73 20 61 20 42 4c 4f 42 20 74 68  /i> is a BLOB th
de30: 65 6e 20 74 68 65 20 69 6e 64 69 63 65 73 20 72  en the indices r
de40: 65 66 65 72 20 74 6f 20 62 79 74 65 73 2e 0a 7d  efer to bytes..}
de50: 0a 0a 66 75 6e 63 64 65 66 20 7b 74 72 69 6d 28  ..funcdef {trim(
de60: 58 29 20 74 72 69 6d 28 58 2c 59 29 7d 20 7b 7d  X) trim(X,Y)} {}
de70: 20 7b 0a 20 20 52 65 74 75 72 6e 20 61 20 73 74   {.  Return a st
de80: 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79 20 72  ring formed by r
de90: 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64 20  emoving any and 
dea0: 61 6c 6c 0a 20 20 63 68 61 72 61 63 74 65 72 73  all.  characters
deb0: 20 74 68 61 74 20 61 70 70 65 61 72 20 69 6e 20   that appear in 
dec0: 3c 69 3e 59 3c 2f 69 3e 20 66 72 6f 6d 20 62 6f  <i>Y</i> from bo
ded0: 74 68 20 65 6e 64 73 20 6f 66 20 3c 69 3e 58 3c  th ends of <i>X<
dee0: 2f 69 3e 2e 0a 20 20 49 66 20 74 68 65 20 3c 69  /i>..  If the <i
def0: 3e 59 3c 2f 69 3e 20 61 72 67 75 6d 65 6e 74 20  >Y</i> argument 
df00: 69 73 20 6f 6d 69 74 74 65 64 2c 20 73 70 61 63  is omitted, spac
df10: 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 0a  es are removed..
df20: 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 74 79 70 65  }..funcdef {type
df30: 6f 66 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 52 65  of(X)} {} {.  Re
df40: 74 75 72 6e 20 74 68 65 20 74 79 70 65 20 6f 66  turn the type of
df50: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
df60: 3c 69 3e 58 3c 2f 69 3e 2e 20 20 54 68 65 20 6f  <i>X</i>.  The o
df70: 6e 6c 79 20 0a 20 20 72 65 74 75 72 6e 20 76 61  nly .  return va
df80: 6c 75 65 73 20 61 72 65 20 22 6e 75 6c 6c 22 2c  lues are "null",
df90: 20 22 69 6e 74 65 67 65 72 22 2c 20 22 72 65 61   "integer", "rea
dfa0: 6c 22 2c 20 22 74 65 78 74 22 2c 20 61 6e 64 20  l", "text", and 
dfb0: 22 62 6c 6f 62 22 2e 0a 20 20 53 51 4c 69 74 65  "blob"..  SQLite
dfc0: 27 73 20 74 79 70 65 20 68 61 6e 64 6c 69 6e 67  's type handling
dfd0: 20 69 73 20 0a 20 20 65 78 70 6c 61 69 6e 65 64   is .  explained
dfe0: 20 69 6e 20 3c 61 20 68 72 65 66 3d 22 64 61 74   in <a href="dat
dff0: 61 74 79 70 65 33 2e 68 74 6d 6c 22 3e 44 61 74  atype3.html">Dat
e000: 61 74 79 70 65 73 20 69 6e 20 53 51 4c 69 74 65  atypes in SQLite
e010: 20 56 65 72 73 69 6f 6e 20 33 3c 2f 61 3e 2e 0a   Version 3</a>..
e020: 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 75 70 70 65  }..funcdef {uppe
e030: 72 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74  r(X)} {} {.  Ret
e040: 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 69 6e  urn a copy of in
e050: 70 75 74 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c  put string <i>X<
e060: 2f 69 3e 20 63 6f 6e 76 65 72 74 65 64 20 74 6f  /i> converted to
e070: 20 61 6c 6c 0a 20 20 75 70 70 65 72 2d 63 61 73   all.  upper-cas
e080: 65 20 6c 65 74 74 65 72 73 2e 20 20 54 68 65 20  e letters.  The 
e090: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
e0a0: 66 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  f this function 
e0b0: 75 73 65 73 20 74 68 65 20 43 20 6c 69 62 72 61  uses the C libra
e0c0: 72 79 0a 20 20 72 6f 75 74 69 6e 65 20 3c 62 3e  ry.  routine <b>
e0d0: 74 6f 75 70 70 65 72 28 29 3c 2f 62 3e 20 77 68  toupper()</b> wh
e0e0: 69 63 68 20 6d 65 61 6e 73 20 69 74 20 6d 61 79  ich means it may
e0f0: 20 6e 6f 74 20 77 6f 72 6b 20 63 6f 72 72 65 63   not work correc
e100: 74 6c 79 20 6f 6e 20 0a 20 20 6e 6f 6e 2d 41 53  tly on .  non-AS
e110: 43 49 49 20 55 54 46 2d 38 20 73 74 72 69 6e 67  CII UTF-8 string
e120: 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 7a  s..}..funcdef {z
e130: 65 72 6f 62 6c 6f 62 28 4e 29 7d 20 7b 7d 20 7b  eroblob(N)} {} {
e140: 0a 20 20 52 65 74 75 72 6e 20 61 20 42 4c 4f 42  .  Return a BLOB
e150: 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 4e   consisting of N
e160: 20 62 79 74 65 73 20 6f 66 20 30 78 30 30 2e 20   bytes of 0x00. 
e170: 20 53 51 4c 69 74 65 0a 20 20 6d 61 6e 61 67 65   SQLite.  manage
e180: 73 20 74 68 65 73 65 20 7a 65 72 6f 62 6c 6f 62  s these zeroblob
e190: 73 20 76 65 72 79 20 65 66 66 69 63 69 65 6e 74  s very efficient
e1a0: 6c 79 2e 20 20 5a 65 72 6f 62 6c 6f 62 73 20 63  ly.  Zeroblobs c
e1b0: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 0a 20 20  an be used to.  
e1c0: 72 65 73 65 72 76 65 20 73 70 61 63 65 20 66 6f  reserve space fo
e1d0: 72 20 61 20 42 4c 4f 42 20 74 68 61 74 20 69 73  r a BLOB that is
e1e0: 20 6c 61 74 65 72 20 77 72 69 74 74 65 6e 20 75   later written u
e1f0: 73 69 6e 67 20 0a 20 20 5b 73 71 6c 69 74 65 33  sing .  [sqlite3
e200: 5f 62 6c 6f 62 5f 6f 70 65 6e 28 29 20 7c 20 69  _blob_open() | i
e210: 6e 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20  ncremental BLOB 
e220: 49 2f 4f 5d 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c  I/O]..}.</tcl>.<
e230: 2f 74 61 62 6c 65 3e 0a 0a 3c 74 63 6c 3e 0a 23  /table>..<tcl>.#
e240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
e250: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
e260: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
e270: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
e280: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
e290: 63 74 69 6f 6e 20 7b 44 61 74 65 20 41 6e 64 20  ction {Date And 
e2a0: 54 69 6d 65 20 46 75 6e 63 74 69 6f 6e 73 7d 20  Time Functions} 
e2b0: 64 61 74 65 66 75 6e 63 20 7b 64 61 74 65 66 75  datefunc {datefu
e2c0: 6e 63 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a  nc}.</tcl>..<p>.
e2d0: 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74 73 20  SQLite supports 
e2e0: 66 69 76 65 20 64 61 74 65 20 61 6e 64 20 74 69  five date and ti
e2f0: 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 73 20  me functions as 
e300: 66 6f 6c 6c 6f 77 73 3a 0a 3c 2f 70 3e 0a 0a 3c  follows:.</p>..<
e310: 70 3e 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20 3c 62 3e  p>.<ol>.<li> <b>
e320: 64 61 74 65 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65  date(</b><i>time
e330: 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72  string, modifier
e340: 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c  , modifier, ...<
e350: 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 20 3c 2f 6c 69  /i><b>)</b> </li
e360: 3e 0a 3c 6c 69 3e 20 3c 62 3e 74 69 6d 65 28 3c  >.<li> <b>time(<
e370: 2f 62 3e 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67  /b><i>timestring
e380: 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69  , modifier, modi
e390: 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e  fier, ...</i><b>
e3a0: 29 3c 2f 62 3e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  )</b> </li>.<li>
e3b0: 20 3c 62 3e 64 61 74 65 74 69 6d 65 28 3c 2f 62   <b>datetime(</b
e3c0: 3e 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c 20  ><i>timestring, 
e3d0: 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69 66 69  modifier, modifi
e3e0: 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c  er, ...</i><b>)<
e3f0: 2f 62 3e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 3c  /b> </li>.<li> <
e400: 62 3e 6a 75 6c 69 61 6e 64 61 79 28 3c 2f 62 3e  b>julianday(</b>
e410: 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d  <i>timestring, m
e420: 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69 66 69 65  odifier, modifie
e430: 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f  r, ...</i><b>)</
e440: 62 3e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 3c 62  b> </li>.<li> <b
e450: 3e 73 74 72 66 74 69 6d 65 28 3c 2f 62 3e 3c 69  >strftime(</b><i
e460: 3e 66 6f 72 6d 61 74 2c 20 74 69 6d 65 73 74 72  >format, timestr
e470: 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d  ing, modifier, m
e480: 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e  odifier, ...</i>
e490: 3c 62 3e 29 3c 2f 62 3e 20 3c 2f 6c 69 3e 0a 3c  <b>)</b> </li>.<
e4a0: 2f 6f 6c 3e 0a 0a 3c 70 3e 0a 41 6c 6c 20 66 69  /ol>..<p>.All fi
e4b0: 76 65 20 66 75 6e 63 74 69 6f 6e 73 20 74 61 6b  ve functions tak
e4c0: 65 20 61 20 74 69 6d 65 20 73 74 72 69 6e 67 20  e a time string 
e4d0: 61 73 20 61 6e 20 61 72 67 75 6d 65 6e 74 2e 20  as an argument. 
e4e0: 54 68 65 20 74 69 6d 65 20 73 74 72 69 6e 67 0a  The time string.
e4f0: 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 7a  is followed by z
e500: 65 72 6f 20 6f 72 20 6d 6f 72 65 20 6d 6f 64 69  ero or more modi
e510: 66 69 65 72 73 2e 20 0a 54 68 65 20 73 74 72 66  fiers. .The strf
e520: 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f 6e 20  time() function 
e530: 61 6c 73 6f 20 74 61 6b 65 73 20 61 20 66 6f 72  also takes a for
e540: 6d 61 74 20 73 74 72 69 6e 67 20 61 73 20 69 74  mat string as it
e550: 73 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  s first argument
e560: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20  ..</p>..<p>.The 
e570: 64 61 74 65 28 29 20 66 75 6e 63 74 69 6f 6e 20  date() function 
e580: 72 65 74 75 72 6e 73 20 74 68 65 20 64 61 74 65  returns the date
e590: 20 69 6e 20 74 68 69 73 20 66 6f 72 6d 61 74 3a   in this format:
e5a0: 20 59 59 59 59 2d 4d 4d 2d 44 44 2e 20 0a 54 68   YYYY-MM-DD. .Th
e5b0: 65 20 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f  e time() functio
e5c0: 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 74 69  n returns the ti
e5d0: 6d 65 20 61 73 20 48 48 3a 4d 4d 3a 53 53 2e 20  me as HH:MM:SS. 
e5e0: 0a 54 68 65 20 64 61 74 65 74 69 6d 65 28 29 20  .The datetime() 
e5f0: 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
e600: 20 22 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a   "YYYY-MM-DD HH:
e610: 4d 4d 3a 53 53 22 2e 20 0a 54 68 65 20 6a 75 6c  MM:SS". .The jul
e620: 69 61 6e 64 61 79 28 29 20 66 75 6e 63 74 69 6f  ianday() functio
e630: 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 0a 3c  n returns the .<
e640: 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 65  a href="http://e
e650: 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f  n.wikipedia.org/
e660: 77 69 6b 69 2f 4a 75 6c 69 61 6e 5f 64 61 79 22  wiki/Julian_day"
e670: 3e 4a 75 6c 69 61 6e 20 64 61 79 3c 2f 61 3e 20  >Julian day</a> 
e680: 2d 20 0a 6e 75 6d 62 65 72 20 6f 66 20 64 61 79  - .number of day
e690: 73 20 73 69 6e 63 65 20 6e 6f 6f 6e 20 69 6e 20  s since noon in 
e6a0: 47 72 65 65 6e 77 69 63 68 20 6f 6e 20 4e 6f 76  Greenwich on Nov
e6b0: 65 6d 62 65 72 20 32 34 2c 20 34 37 31 34 20 42  ember 24, 4714 B
e6c0: 2e 43 2e 20 0a 28 3c 61 20 68 72 65 66 3d 22 68  .C. .(<a href="h
e6d0: 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64  ttp://en.wikiped
e6e0: 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 50 72 6f 6c  ia.org/wiki/Prol
e6f0: 65 70 74 69 63 5f 47 72 65 67 6f 72 69 61 6e 5f  eptic_Gregorian_
e700: 63 61 6c 65 6e 64 61 72 22 3e 0a 50 72 6f 6c 65  calendar">.Prole
e710: 70 74 69 63 20 47 72 65 67 6f 72 69 61 6e 20 63  ptic Gregorian c
e720: 61 6c 65 6e 64 61 72 3c 2f 61 3e 29 2e 20 0a 54  alendar</a>). .T
e730: 68 65 20 73 74 72 66 74 69 6d 65 28 29 20 72 6f  he strftime() ro
e740: 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 74 68  utine returns th
e750: 65 20 64 61 74 65 20 66 6f 72 6d 61 74 74 65 64  e date formatted
e760: 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 0a 74   according to .t
e770: 68 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67  he format string
e780: 20 73 70 65 63 69 66 69 65 64 20 61 73 20 74 68   specified as th
e790: 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
e7a0: 2e 0a 54 68 65 20 66 6f 72 6d 61 74 20 73 74 72  ..The format str
e7b0: 69 6e 67 20 73 75 70 70 6f 72 74 73 20 74 68 65  ing supports the
e7c0: 20 6d 6f 73 74 20 63 6f 6d 6d 6f 6e 20 73 75 62   most common sub
e7d0: 73 74 69 74 75 74 69 6f 6e 73 20 66 6f 75 6e 64  stitutions found
e7e0: 20 69 6e 20 74 68 65 20 0a 3c 61 20 68 72 65 66   in the .<a href
e7f0: 3d 22 68 74 74 70 3a 2f 2f 6f 70 65 6e 67 72 6f  ="http://opengro
e800: 75 70 2e 6f 72 67 2f 6f 6e 6c 69 6e 65 70 75 62  up.org/onlinepub
e810: 73 2f 30 30 37 39 30 38 37 39 39 2f 78 73 68 2f  s/007908799/xsh/
e820: 73 74 72 66 74 69 6d 65 2e 68 74 6d 6c 22 3e 0a  strftime.html">.
e830: 73 74 72 66 74 69 6d 65 28 29 20 66 75 6e 63 74  strftime() funct
e840: 69 6f 6e 3c 2f 61 3e 20 66 72 6f 6d 20 0a 74 68  ion</a> from .th
e850: 65 20 73 74 61 6e 64 61 72 64 20 43 20 6c 69 62  e standard C lib
e860: 72 61 72 79 20 70 6c 75 73 20 74 77 6f 20 6e 65  rary plus two ne
e870: 77 20 73 75 62 73 74 69 74 75 74 69 6f 6e 73 2c  w substitutions,
e880: 20 25 66 20 61 6e 64 20 25 4a 2e 0a 54 68 65 20   %f and %J..The 
e890: 66 6f 6c 6c 6f 77 69 6e 67 20 69 73 20 61 20 63  following is a c
e8a0: 6f 6d 70 6c 65 74 65 20 6c 69 73 74 20 6f 66 20  omplete list of 
e8b0: 76 61 6c 69 64 20 73 74 72 66 74 69 6d 65 28 29  valid strftime()
e8c0: 20 73 75 62 73 74 69 74 75 74 69 6f 6e 73 3a 0a   substitutions:.
e8d0: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
e8e0: 65 3e 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72  e>.<table border
e8f0: 3d 22 30 22 20 63 65 6c 6c 70 61 64 64 69 6e 67  ="0" cellpadding
e900: 3d 22 30 22 20 63 65 6c 6c 73 70 61 63 69 6e 67  ="0" cellspacing
e910: 3d 22 30 22 3e 0a 3c 74 72 3e 3c 74 64 3e 3c 74  ="0">.<tr><td><t
e920: 64 20 77 69 64 74 68 3d 22 31 30 22 3e 3c 74 64  d width="10"><td
e930: 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 3c 74 64 3e  ></tr>..<tr><td>
e940: 20 25 64 20 3c 74 64 3e 3c 74 64 3e 20 64 61 79   %d <td><td> day
e950: 20 6f 66 20 6d 6f 6e 74 68 3a 20 30 30 0a 3c 74   of month: 00.<t
e960: 72 3e 3c 74 64 3e 20 25 66 20 3c 74 64 3e 3c 74  r><td> %f <td><t
e970: 64 3e 20 66 72 61 63 74 69 6f 6e 61 6c 20 73 65  d> fractional se
e980: 63 6f 6e 64 73 3a 20 53 53 2e 53 53 53 0a 3c 74  conds: SS.SSS.<t
e990: 72 3e 3c 74 64 3e 20 25 48 20 3c 74 64 3e 3c 74  r><td> %H <td><t
e9a0: 64 3e 20 68 6f 75 72 3a 20 30 30 2d 32 34 20 0a  d> hour: 00-24 .
e9b0: 3c 74 72 3e 3c 74 64 3e 20 25 6a 20 3c 74 64 3e  <tr><td> %j <td>
e9c0: 3c 74 64 3e 20 64 61 79 20 6f 66 20 79 65 61 72  <td> day of year
e9d0: 3a 20 30 30 31 2d 33 36 36 0a 3c 74 72 3e 3c 74  : 001-366.<tr><t
e9e0: 64 3e 20 25 4a 20 3c 74 64 3e 3c 74 64 3e 20 4a  d> %J <td><td> J
e9f0: 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d 62 65 72  ulian day number
ea00: 0a 3c 74 72 3e 3c 74 64 3e 20 25 6d 20 3c 74 64  .<tr><td> %m <td
ea10: 3e 3c 74 64 3e 20 6d 6f 6e 74 68 3a 20 30 31 2d  ><td> month: 01-
ea20: 31 32 0a 3c 74 72 3e 3c 74 64 3e 20 25 4d 20 3c  12.<tr><td> %M <
ea30: 74 64 3e 3c 74 64 3e 20 6d 69 6e 75 74 65 3a 20  td><td> minute: 
ea40: 30 30 2d 35 39 0a 3c 74 72 3e 3c 74 64 3e 20 25  00-59.<tr><td> %
ea50: 73 20 3c 74 64 3e 3c 74 64 3e 20 73 65 63 6f 6e  s <td><td> secon
ea60: 64 73 20 73 69 6e 63 65 20 31 39 37 30 2d 30 31  ds since 1970-01
ea70: 2d 30 31 0a 3c 74 72 3e 3c 74 64 3e 20 25 53 20  -01.<tr><td> %S 
ea80: 3c 74 64 3e 3c 74 64 3e 20 73 65 63 6f 6e 64 73  <td><td> seconds
ea90: 3a 20 30 30 2d 35 39 0a 3c 74 72 3e 3c 74 64 3e  : 00-59.<tr><td>
eaa0: 20 25 77 20 3c 74 64 3e 3c 74 64 3e 20 64 61 79   %w <td><td> day
eab0: 20 6f 66 20 77 65 65 6b 20 30 2d 36 20 77 69 74   of week 0-6 wit
eac0: 68 20 73 75 6e 64 61 79 3d 3d 30 0a 3c 74 72 3e  h sunday==0.<tr>
ead0: 3c 74 64 3e 20 25 57 20 3c 74 64 3e 3c 74 64 3e  <td> %W <td><td>
eae0: 20 77 65 65 6b 20 6f 66 20 79 65 61 72 3a 20 30   week of year: 0
eaf0: 30 2d 35 33 0a 3c 74 72 3e 3c 74 64 3e 20 25 59  0-53.<tr><td> %Y
eb00: 20 3c 74 64 3e 3c 74 64 3e 20 79 65 61 72 3a 20   <td><td> year: 
eb10: 30 30 30 30 2d 39 39 39 39 0a 3c 74 72 3e 3c 74  0000-9999.<tr><t
eb20: 64 3e 20 25 25 20 3c 74 64 3e 3c 74 64 3e 20 25  d> %% <td><td> %
eb30: 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63  .</table>.</bloc
eb40: 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 4e 6f 74  kquote>..<p>.Not
eb50: 69 63 65 20 74 68 61 74 20 61 6c 6c 20 6f 74 68  ice that all oth
eb60: 65 72 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  er date and time
eb70: 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62   functions can b
eb80: 65 20 65 78 70 72 65 73 73 65 64 0a 69 6e 20 74  e expressed.in t
eb90: 65 72 6d 73 20 6f 66 20 73 74 72 66 74 69 6d 65  erms of strftime
eba0: 28 29 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b  ():.</p>..<block
ebb0: 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 20 62 6f  quote>.<table bo
ebc0: 72 64 65 72 3d 22 30 22 20 63 65 6c 6c 70 61 64  rder="0" cellpad
ebd0: 64 69 6e 67 3d 22 30 22 20 63 65 6c 6c 73 70 61  ding="0" cellspa
ebe0: 63 69 6e 67 3d 22 30 22 3e 0a 3c 74 72 3e 3c 74  cing="0">.<tr><t
ebf0: 64 3e 3c 62 3e 46 75 6e 63 74 69 6f 6e 3c 2f 62  d><b>Function</b
ec00: 3e 3c 74 64 20 77 69 64 74 68 3d 22 33 30 22 3e  ><td width="30">
ec10: 3c 74 64 3e 3c 62 3e 45 71 75 69 76 61 6c 65 6e  <td><b>Equivalen
ec20: 74 20 73 74 72 66 74 69 6d 65 28 29 3c 2f 62 3e  t strftime()</b>
ec30: 0a 3c 74 72 3e 3c 74 64 3e 20 20 20 64 61 74 65  .<tr><td>   date
ec40: 28 2e 2e 2e 29 20 20 20 20 20 20 3c 74 64 3e 3c  (...)      <td><
ec50: 74 64 3e 20 20 73 74 72 66 74 69 6d 65 28 22 25  td>  strftime("%
ec60: 59 2d 25 6d 2d 25 64 22 2c 20 2e 2e 2e 29 0a 3c  Y-%m-%d", ...).<
ec70: 74 72 3e 3c 74 64 3e 20 20 20 74 69 6d 65 28 2e  tr><td>   time(.
ec80: 2e 2e 29 20 20 20 20 20 20 3c 74 64 3e 3c 74 64  ..)      <td><td
ec90: 3e 20 20 73 74 72 66 74 69 6d 65 28 22 25 48 3a  >  strftime("%H:
eca0: 25 4d 3a 25 53 22 2c 20 2e 2e 2e 29 0a 3c 74 72  %M:%S", ...).<tr
ecb0: 3e 3c 74 64 3e 20 20 20 64 61 74 65 74 69 6d 65  ><td>   datetime
ecc0: 28 2e 2e 2e 29 20 20 3c 74 64 3e 3c 74 64 3e 20  (...)  <td><td> 
ecd0: 20 73 74 72 66 74 69 6d 65 28 22 25 59 2d 25 6d   strftime("%Y-%m
ece0: 2d 25 64 20 25 48 3a 25 4d 3a 25 53 22 2c 20 2e  -%d %H:%M:%S", .
ecf0: 2e 2e 29 0a 3c 74 72 3e 3c 74 64 3e 20 20 20 6a  ..).<tr><td>   j
ed00: 75 6c 69 61 6e 64 61 79 28 2e 2e 2e 29 20 3c 74  ulianday(...) <t
ed10: 64 3e 3c 74 64 3e 20 20 73 74 72 66 74 69 6d 65  d><td>  strftime
ed20: 28 22 25 4a 22 2c 20 2e 2e 2e 29 0a 3c 2f 74 61  ("%J", ...).</ta
ed30: 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  ble>.</blockquot
ed40: 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20 6f 6e 6c 79  e>..<p>.The only
ed50: 20 72 65 61 73 6f 6e 73 20 66 6f 72 20 70 72 6f   reasons for pro
ed60: 76 69 64 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73  viding functions
ed70: 20 6f 74 68 65 72 20 74 68 61 6e 20 73 74 72 66   other than strf
ed80: 74 69 6d 65 28 29 20 69 73 0a 66 6f 72 20 63 6f  time() is.for co
ed90: 6e 76 65 6e 69 65 6e 63 65 20 61 6e 64 20 66 6f  nvenience and fo
eda0: 72 20 65 66 66 69 63 69 65 6e 63 79 2e 0a 3c 2f  r efficiency..</
edb0: 70 3e 0a 0a 3c 68 33 3e 54 69 6d 65 20 53 74 72  p>..<h3>Time Str
edc0: 69 6e 67 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 41 20  ings</h3>..<p>A 
edd0: 74 69 6d 65 20 73 74 72 69 6e 67 20 63 61 6e 20  time string can 
ede0: 62 65 20 69 6e 20 61 6e 79 20 6f 66 20 74 68 65  be in any of the
edf0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 6f 72 6d 61   following forma
ee00: 74 73 3a 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c  ts:</p>..<ol>.<l
ee10: 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44  i> <i>YYYY-MM-DD
ee20: 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59  </i>.<li> <i>YYY
ee30: 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3c 2f 69  Y-MM-DD HH:MM</i
ee40: 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d  >.<li> <i>YYYY-M
ee50: 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 3c 2f 69  M-DD HH:MM:SS</i
ee60: 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d  >.<li> <i>YYYY-M
ee70: 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 2e 53 53  M-DD HH:MM:SS.SS
ee80: 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59  S</i>.<li> <i>YY
ee90: 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c 62 3e 54  YY-MM-DD</i><b>T
eea0: 3c 2f 62 3e 3c 69 3e 48 48 3a 4d 4d 3c 2f 69 3e  </b><i>HH:MM</i>
eeb0: 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d  .<li> <i>YYYY-MM
eec0: 2d 44 44 3c 2f 69 3e 3c 62 3e 54 3c 2f 62 3e 3c  -DD</i><b>T</b><
eed0: 69 3e 48 48 3a 4d 4d 3a 53 53 3c 2f 69 3e 0a 3c  i>HH:MM:SS</i>.<
eee0: 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44  li> <i>YYYY-MM-D
eef0: 44 3c 2f 69 3e 3c 62 3e 54 3c 2f 62 3e 3c 69 3e  D</i><b>T</b><i>
ef00: 48 48 3a 4d 4d 3a 53 53 2e 53 53 53 3c 2f 69 3e  HH:MM:SS.SSS</i>
ef10: 0a 3c 6c 69 3e 20 3c 69 3e 48 48 3a 4d 4d 3c 2f  .<li> <i>HH:MM</
ef20: 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 48 48 3a 4d 4d  i>.<li> <i>HH:MM
ef30: 3a 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e  :SS</i>.<li> <i>
ef40: 48 48 3a 4d 4d 3a 53 53 2e 53 53 53 3c 2f 69 3e  HH:MM:SS.SSS</i>
ef50: 0a 3c 6c 69 3e 20 3c 62 3e 6e 6f 77 3c 2f 62 3e  .<li> <b>now</b>
ef60: 0a 3c 6c 69 3e 20 3c 69 3e 44 44 44 44 44 44 44  .<li> <i>DDDDDDD
ef70: 44 44 44 3c 2f 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c  DDD</i>.</ol>..<
ef80: 70 3e 0a 49 6e 20 66 6f 72 6d 61 74 73 20 35 20  p>.In formats 5 
ef90: 74 68 72 6f 75 67 68 20 37 2c 20 74 68 65 20 22  through 7, the "
efa0: 54 22 20 69 73 20 61 20 6c 69 74 65 72 61 6c 20  T" is a literal 
efb0: 63 68 61 72 61 63 74 65 72 20 73 65 70 61 72 61  character separa
efc0: 74 69 6e 67 20 0a 74 68 65 20 64 61 74 65 20 61  ting .the date a
efd0: 6e 64 20 74 68 65 20 74 69 6d 65 2c 20 61 73 20  nd the time, as 
efe0: 72 65 71 75 69 72 65 64 20 62 79 20 0a 3c 61 20  required by .<a 
eff0: 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77  href="http://www
f000: 2e 77 33 63 2e 6f 72 67 2f 54 52 2f 4e 4f 54 45  .w3c.org/TR/NOTE
f010: 2d 64 61 74 65 74 69 6d 65 22 3e 49 53 4f 2d 38  -datetime">ISO-8
f020: 36 30 31 3c 2f 61 3e 2e 20 0a 46 6f 72 6d 61 74  601</a>. .Format
f030: 73 20 38 20 74 68 72 6f 75 67 68 20 31 30 20 74  s 8 through 10 t
f040: 68 61 74 20 73 70 65 63 69 66 79 20 6f 6e 6c 79  hat specify only
f050: 20 61 20 74 69 6d 65 20 61 73 73 75 6d 65 20 61   a time assume a
f060: 20 64 61 74 65 20 6f 66 20 0a 32 30 30 30 2d 30   date of .2000-0
f070: 31 2d 30 31 2e 20 46 6f 72 6d 61 74 20 31 31 2c  1-01. Format 11,
f080: 20 74 68 65 20 73 74 72 69 6e 67 20 27 6e 6f 77   the string 'now
f090: 27 2c 20 69 73 20 63 6f 6e 76 65 72 74 65 64 20  ', is converted 
f0a0: 69 6e 74 6f 20 74 68 65 20 0a 63 75 72 72 65 6e  into the .curren
f0b0: 74 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  t date and time 
f0c0: 61 73 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  as obtained from
f0d0: 20 74 68 65 20 78 43 75 72 72 65 6e 74 54 69 6d   the xCurrentTim
f0e0: 65 20 6d 65 74 68 6f 64 0a 6f 66 20 74 68 65 20  e method.of the 
f0f0: 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62  [sqlite3_vfs] ob
f100: 6a 65 63 74 20 69 6e 20 75 73 65 2e 0a 3c 61 20  ject in use..<a 
f110: 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 65 6e 2e  href="http://en.
f120: 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69  wikipedia.org/wi
f130: 6b 69 2f 43 6f 6f 72 64 69 6e 61 74 65 64 5f 55  ki/Coordinated_U
f140: 6e 69 76 65 72 73 61 6c 5f 54 69 6d 65 22 3e 0a  niversal_Time">.
f150: 55 6e 69 76 65 72 73 61 6c 20 43 6f 6f 72 64 69  Universal Coordi
f160: 6e 61 74 65 64 20 54 69 6d 65 20 28 55 54 43 29  nated Time (UTC)
f170: 3c 2f 61 3e 20 69 73 20 75 73 65 64 2e 20 0a 46  </a> is used. .F
f180: 6f 72 6d 61 74 20 31 32 20 69 73 20 74 68 65 20  ormat 12 is the 
f190: 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f  .<a href="http:/
f1a0: 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72  /en.wikipedia.or
f1b0: 67 2f 77 69 6b 69 2f 4a 75 6c 69 61 6e 5f 64 61  g/wiki/Julian_da
f1c0: 79 22 3e 4a 75 6c 69 61 6e 20 64 61 79 20 6e 75  y">Julian day nu
f1d0: 6d 62 65 72 3c 2f 61 3e 0a 65 78 70 72 65 73 73  mber</a>.express
f1e0: 65 64 20 61 73 20 61 20 66 6c 6f 61 74 69 6e 67  ed as a floating
f1f0: 20 70 6f 69 6e 74 20 76 61 6c 75 65 2e 0a 3c 2f   point value..</
f200: 70 3e 0a 0a 3c 68 33 3e 4d 6f 64 69 66 69 65 72  p>..<h3>Modifier
f210: 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68 65 20 74  s</h3>..<p>The t
f220: 69 6d 65 20 73 74 72 69 6e 67 20 63 61 6e 20 62  ime string can b
f230: 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 7a 65  e followed by ze
f240: 72 6f 20 6f 72 20 6d 6f 72 65 20 6d 6f 64 69 66  ro or more modif
f250: 69 65 72 73 20 74 68 61 74 20 0a 61 6c 74 65 72  iers that .alter
f260: 20 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69   the date and ti
f270: 6d 65 20 73 74 72 69 6e 67 2e 20 20 45 61 63 68  me string.  Each
f280: 20 6d 6f 64 69 66 69 65 72 0a 69 73 20 61 20 74   modifier.is a t
f290: 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 74 68  ransformation th
f2a0: 61 74 20 69 73 20 61 70 70 6c 69 65 64 20 74 6f  at is applied to
f2b0: 20 74 68 65 20 74 69 6d 65 20 73 74 72 69 6e 67   the time string
f2c0: 20 74 6f 20 69 74 73 20 6c 65 66 74 2e 0a 4d 6f   to its left..Mo
f2d0: 64 69 66 69 65 72 73 20 61 72 65 20 61 70 70 6c  difiers are appl
f2e0: 69 65 64 20 66 72 6f 6d 20 6c 65 66 74 20 74 6f  ied from left to
f2f0: 20 72 69 67 68 74 3b 20 6f 72 64 65 72 20 69 73   right; order is
f300: 20 69 6d 70 6f 72 74 61 6e 74 2e 0a 54 68 65 20   important..The 
f310: 61 76 61 69 6c 61 62 6c 65 20 6d 6f 64 69 66 69  available modifi
f320: 65 72 73 20 61 72 65 20 61 73 20 66 6f 6c 6c 6f  ers are as follo
f330: 77 73 2e 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c  ws.</p>..<ol>.<l
f340: 69 3e 20 4e 4e 4e 20 64 61 79 73 0a 3c 6c 69 3e  i> NNN days.<li>
f350: 20 4e 4e 4e 20 68 6f 75 72 73 0a 3c 6c 69 3e 20   NNN hours.<li> 
f360: 4e 4e 4e 20 6d 69 6e 75 74 65 73 0a 3c 6c 69 3e  NNN minutes.<li>
f370: 20 4e 4e 4e 2e 4e 4e 4e 4e 20 73 65 63 6f 6e 64   NNN.NNNN second
f380: 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 6d 6f 6e 74 68  s.<li> NNN month
f390: 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 79 65 61 72 73  s.<li> NNN years
f3a0: 0a 3c 6c 69 3e 20 73 74 61 72 74 20 6f 66 20 6d  .<li> start of m
f3b0: 6f 6e 74 68 0a 3c 6c 69 3e 20 73 74 61 72 74 20  onth.<li> start 
f3c0: 6f 66 20 79 65 61 72 0a 3c 6c 69 3e 20 73 74 61  of year.<li> sta
f3d0: 72 74 20 6f 66 20 64 61 79 0a 3c 6c 69 3e 20 77  rt of day.<li> w
f3e0: 65 65 6b 64 61 79 20 4e 0a 3c 6c 69 3e 20 75 6e  eekday N.<li> un
f3f0: 69 78 65 70 6f 63 68 0a 3c 6c 69 3e 20 6c 6f 63  ixepoch.<li> loc
f400: 61 6c 74 69 6d 65 0a 3c 6c 69 3e 20 75 74 63 20  altime.<li> utc 
f410: 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 54 68 65 20 66  .</ol>..<p>The f
f420: 69 72 73 74 20 73 69 78 20 6d 6f 64 69 66 69 65  irst six modifie
f430: 72 73 20 28 31 20 74 68 72 6f 75 67 68 20 36 29  rs (1 through 6)
f440: 20 0a 73 69 6d 70 6c 79 20 61 64 64 20 74 68 65   .simply add the
f450: 20 73 70 65 63 69 66 69 65 64 20 61 6d 6f 75 6e   specified amoun
f460: 74 20 6f 66 20 74 69 6d 65 20 74 6f 20 74 68 65  t of time to the
f470: 20 64 61 74 65 20 0a 73 70 65 63 69 66 69 65 64   date .specified
f480: 20 62 79 20 74 68 65 20 70 72 65 63 65 64 69 6e   by the precedin
f490: 67 20 74 69 6d 65 73 74 72 69 6e 67 2e 0a 4e 6f  g timestring..No
f4a0: 74 65 20 74 68 61 74 20 22 26 70 6c 75 73 6d 6e  te that "&plusmn
f4b0: 3b 4e 4e 4e 20 6d 6f 6e 74 68 73 22 20 77 6f 72  ;NNN months" wor
f4c0: 6b 73 20 62 79 20 72 65 6e 64 65 72 69 6e 67 20  ks by rendering 
f4d0: 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 61 74  the original dat
f4e0: 65 20 69 6e 74 6f 0a 74 68 65 20 59 59 59 59 2d  e into.the YYYY-
f4f0: 4d 4d 2d 44 44 20 66 6f 72 6d 61 74 2c 20 61 64  MM-DD format, ad
f500: 64 69 6e 67 20 74 68 65 20 26 70 6c 75 73 6d 6e  ding the &plusmn
f510: 3b 4e 4e 4e 20 74 6f 20 74 68 65 20 4d 4d 20 6d  ;NNN to the MM m
f520: 6f 6e 74 68 20 76 61 6c 75 65 2c 20 74 68 65 6e  onth value, then
f530: 0a 6e 6f 72 6d 61 6c 69 7a 69 6e 67 20 74 68 65  .normalizing the
f540: 20 72 65 73 75 6c 74 2e 20 20 54 68 75 73 2c 20   result.  Thus, 
f550: 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65  for example, the
f560: 20 64 61 74 61 20 32 30 30 31 2d 30 33 2d 33 31   data 2001-03-31
f570: 20 6d 6f 64 69 66 69 65 64 0a 62 79 20 27 2b 31   modified.by '+1
f580: 20 6d 6f 6e 74 68 27 20 69 6e 69 74 69 61 6c 6c   month' initiall
f590: 79 20 79 69 65 6c 64 73 20 32 30 30 31 2d 30 34  y yields 2001-04
f5a0: 2d 33 31 2c 20 62 75 74 20 41 70 72 69 6c 20 6f  -31, but April o
f5b0: 6e 6c 79 20 68 61 73 20 33 30 20 64 61 79 73 0a  nly has 30 days.
f5c0: 73 6f 20 74 68 65 20 64 61 74 65 20 69 73 20 6e  so the date is n
f5d0: 6f 72 6d 61 6c 69 7a 65 64 20 74 6f 20 32 30 30  ormalized to 200
f5e0: 31 2d 30 35 2d 30 31 2e 20 20 41 20 73 69 6d 69  1-05-01.  A simi
f5f0: 6c 61 72 20 65 66 66 65 63 74 20 6f 63 63 75 72  lar effect occur
f600: 73 20 77 68 65 6e 0a 74 68 65 20 6f 72 69 67 69  s when.the origi
f610: 6e 61 6c 20 64 61 74 65 20 69 73 20 46 65 62 72  nal date is Febr
f620: 75 61 72 79 20 32 39 20 6f 66 20 61 20 6c 65 61  uary 29 of a lea
f630: 70 79 65 61 72 20 61 6e 64 20 74 68 65 20 6d 6f  pyear and the mo
f640: 64 69 66 69 65 72 20 69 73 0a 26 70 6c 75 73 6d  difier is.&plusm
f650: 6e 3b 4e 20 79 65 61 72 73 20 77 68 65 72 65 20  n;N years where 
f660: 4e 20 69 73 20 6e 6f 74 20 61 20 6d 75 6c 74 69  N is not a multi
f670: 70 6c 65 20 6f 66 20 66 6f 75 72 2e 3c 2f 70 3e  ple of four.</p>
f680: 0a 0a 3c 70 3e 54 68 65 20 22 73 74 61 72 74 20  ..<p>The "start 
f690: 6f 66 22 20 6d 6f 64 69 66 69 65 72 73 20 28 37  of" modifiers (7
f6a0: 20 74 68 72 6f 75 67 68 20 39 29 20 73 68 69 66   through 9) shif
f6b0: 74 20 74 68 65 20 64 61 74 65 20 62 61 63 6b 77  t the date backw
f6c0: 61 72 64 73 20 0a 74 6f 20 74 68 65 20 62 65 67  ards .to the beg
f6d0: 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 63 75  inning of the cu
f6e0: 72 72 65 6e 74 20 6d 6f 6e 74 68 2c 20 79 65 61  rrent month, yea
f6f0: 72 20 6f 72 20 64 61 79 2e 3c 2f 70 3e 0a 0a 3c  r or day.</p>..<
f700: 70 3e 54 68 65 20 22 77 65 65 6b 64 61 79 22 20  p>The "weekday" 
f710: 6d 6f 64 69 66 69 65 72 20 61 64 76 61 6e 63 65  modifier advance
f720: 73 20 74 68 65 20 64 61 74 65 20 66 6f 72 77 61  s the date forwa
f730: 72 64 20 74 6f 20 74 68 65 20 6e 65 78 74 20 64  rd to the next d
f740: 61 74 65 20 0a 77 68 65 72 65 20 74 68 65 20 77  ate .where the w
f750: 65 65 6b 64 61 79 20 6e 75 6d 62 65 72 20 69 73  eekday number is
f760: 20 4e 2e 20 53 75 6e 64 61 79 20 69 73 20 30 2c   N. Sunday is 0,
f770: 20 4d 6f 6e 64 61 79 20 69 73 20 31 2c 20 61 6e   Monday is 1, an
f780: 64 20 73 6f 20 66 6f 72 74 68 2e 3c 2f 70 3e 0a  d so forth.</p>.
f790: 0a 3c 70 3e 54 68 65 20 22 75 6e 69 78 65 70 6f  .<p>The "unixepo
f7a0: 63 68 22 20 6d 6f 64 69 66 69 65 72 20 28 31 31  ch" modifier (11
f7b0: 29 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 69 66 20  ) only works if 
f7c0: 69 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 66  it immediately f
f7d0: 6f 6c 6c 6f 77 73 20 0a 61 20 74 69 6d 65 73 74  ollows .a timest
f7e0: 72 69 6e 67 20 69 6e 20 74 68 65 20 44 44 44 44  ring in the DDDD
f7f0: 44 44 44 44 44 44 20 66 6f 72 6d 61 74 2e 20 0a  DDDDDD format. .
f800: 54 68 69 73 20 6d 6f 64 69 66 69 65 72 20 63 61  This modifier ca
f810: 75 73 65 73 20 74 68 65 20 44 44 44 44 44 44 44  uses the DDDDDDD
f820: 44 44 44 20 74 6f 20 62 65 20 69 6e 74 65 72 70  DDD to be interp
f830: 72 65 74 65 64 20 6e 6f 74 20 0a 61 73 20 61 20  reted not .as a 
f840: 4a 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d 62 65  Julian day numbe
f850: 72 20 61 73 20 69 74 20 6e 6f 72 6d 61 6c 6c 79  r as it normally
f860: 20 77 6f 75 6c 64 20 62 65 2c 20 62 75 74 20 61   would be, but a
f870: 73 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a  s.<a href="http:
f880: 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f  //en.wikipedia.o
f890: 72 67 2f 77 69 6b 69 2f 55 6e 69 78 5f 74 69 6d  rg/wiki/Unix_tim
f8a0: 65 22 3e 55 6e 69 78 20 54 69 6d 65 3c 2f 61 3e  e">Unix Time</a>
f8b0: 20 2d 20 74 68 65 20 0a 6e 75 6d 62 65 72 20 6f   - the .number o
f8c0: 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20  f seconds since 
f8d0: 31 39 37 30 2e 20 20 49 66 20 74 68 65 20 22 75  1970.  If the "u
f8e0: 6e 69 78 65 70 6f 63 68 22 20 6d 6f 64 69 66 69  nixepoch" modifi
f8f0: 65 72 20 64 6f 65 73 20 6e 6f 74 0a 66 6f 6c 6c  er does not.foll
f900: 6f 77 20 61 20 74 69 6d 65 73 74 72 69 6e 67 20  ow a timestring 
f910: 6f 66 20 74 68 65 20 66 6f 72 6d 20 44 44 44 44  of the form DDDD
f920: 44 44 44 44 44 44 20 77 68 69 63 68 20 65 78 70  DDDDDD which exp
f930: 72 65 73 73 65 73 20 74 68 65 20 6e 75 6d 62 65  resses the numbe
f940: 72 0a 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e  r.of seconds sin
f950: 63 65 20 31 39 37 30 20 6f 72 20 69 66 20 6f 74  ce 1970 or if ot
f960: 68 65 72 20 6d 6f 64 69 66 69 65 72 73 0a 73 65  her modifiers.se
f970: 70 61 72 61 74 65 20 74 68 65 20 22 75 6e 69 78  parate the "unix
f980: 65 70 6f 63 68 22 20 6d 6f 64 69 66 69 65 72 20  epoch" modifier 
f990: 66 72 6f 6d 20 70 72 69 6f 72 20 44 44 44 44 44  from prior DDDDD
f9a0: 44 44 44 44 44 20 74 68 65 6e 20 74 68 65 0a 62  DDDDD then the.b
f9b0: 65 68 61 76 69 6f 72 20 69 73 20 75 6e 64 65 66  ehavior is undef
f9c0: 69 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  ined.</p>..<p>Th
f9d0: 65 20 22 6c 6f 63 61 6c 74 69 6d 65 22 20 6d 6f  e "localtime" mo
f9e0: 64 69 66 69 65 72 20 28 31 32 29 20 61 73 73 75  difier (12) assu
f9f0: 6d 65 73 20 74 68 65 20 74 69 6d 65 20 73 74 72  mes the time str
fa00: 69 6e 67 20 74 6f 20 69 74 73 20 6c 65 66 74 20  ing to its left 
fa10: 69 73 20 69 6e 0a 55 6e 69 76 65 72 73 61 6c 20  is in.Universal 
fa20: 43 6f 6f 72 64 69 6e 61 74 65 64 20 54 69 6d 65  Coordinated Time
fa30: 20 28 55 54 43 29 20 61 6e 64 20 61 64 6a 75 73   (UTC) and adjus
fa40: 74 73 20 74 68 65 20 74 69 6d 65 0a 73 74 72 69  ts the time.stri
fa50: 6e 67 20 73 6f 20 74 68 61 74 20 69 74 20 64 69  ng so that it di
fa60: 73 70 6c 61 79 73 20 6c 6f 63 61 6c 74 69 6d 65  splays localtime
fa70: 2e 20 20 49 66 20 22 6c 6f 63 61 6c 74 69 6d 65  .  If "localtime
fa80: 22 0a 66 6f 6c 6c 6f 77 73 20 61 20 74 69 6d 65  ".follows a time
fa90: 20 74 68 61 74 20 69 73 20 6e 6f 74 20 55 54 43   that is not UTC
faa0: 2c 20 74 68 65 6e 20 74 68 65 20 62 65 68 61 76  , then the behav
fab0: 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65 64  ior is undefined
fac0: 2e 0a 54 68 65 20 22 75 74 63 22 20 69 73 20 74  ..The "utc" is t
fad0: 68 65 20 6f 70 70 6f 73 69 74 65 20 6f 66 20 22  he opposite of "
fae0: 6c 6f 63 61 6c 74 69 6d 65 22 2e 20 20 22 75 74  localtime".  "ut
faf0: 63 22 20 61 73 73 75 6d 65 73 20 74 68 61 74 20  c" assumes that 
fb00: 74 68 65 20 73 74 72 69 6e 67 0a 74 6f 20 69 74  the string.to it
fb10: 73 20 6c 65 66 74 20 69 73 20 69 6e 20 74 68 65  s left is in the
fb20: 20 6c 6f 63 61 6c 20 74 69 6d 65 7a 6f 6e 65 20   local timezone 
fb30: 61 6e 64 20 61 64 6a 75 73 74 73 20 74 68 61 74  and adjusts that
fb40: 20 73 74 72 69 6e 67 20 74 6f 20 62 65 20 69 6e   string to be in
fb50: 20 55 54 43 2e 0a 49 66 20 74 68 65 20 70 72 69   UTC..If the pri
fb60: 6f 72 20 73 74 72 69 6e 67 20 69 73 20 6e 6f 74  or string is not
fb70: 20 69 6e 20 6c 6f 63 61 6c 74 69 6d 65 2c 20 74   in localtime, t
fb80: 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f  hen the result o
fb90: 66 20 22 75 74 63 22 20 69 73 0a 75 6e 64 65 66  f "utc" is.undef
fba0: 69 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 45  ined.</p>..<h3>E
fbb0: 78 61 6d 70 6c 65 73 3c 2f 68 33 3e 0a 0a 3c 70  xamples</h3>..<p
fbc0: 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 63 75 72  >Compute the cur
fbd0: 72 65 6e 74 20 64 61 74 65 2e 3c 70 3e 0a 0a 3c  rent date.<p>..<
fbe0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 53 45 4c 45 43  blockquote>SELEC
fbf0: 54 20 64 61 74 65 28 27 6e 6f 77 27 29 3b 3c 2f  T date('now');</
fc00: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
fc10: 43 6f 6d 70 75 74 65 20 74 68 65 20 6c 61 73 74  Compute the last
fc20: 20 64 61 79 20 6f 66 20 74 68 65 20 63 75 72 72   day of the curr
fc30: 65 6e 74 20 6d 6f 6e 74 68 2e 3c 2f 70 3e 0a 0a  ent month.</p>..
fc40: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 53 45 4c 45  <blockquote>SELE
fc50: 43 54 20 64 61 74 65 28 27 6e 6f 77 27 2c 27 73  CT date('now','s
fc60: 74 61 72 74 20 6f 66 20 6d 6f 6e 74 68 27 2c 27  tart of month','
fc70: 2b 31 20 6d 6f 6e 74 68 27 2c 27 2d 31 20 64 61  +1 month','-1 da
fc80: 79 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  y');.</blockquot
fc90: 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65 20 74  e>..<p>Compute t
fca0: 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  he date and time
fcb0: 20 67 69 76 65 6e 20 61 20 75 6e 69 78 20 74 69   given a unix ti
fcc0: 6d 65 73 74 61 6d 70 20 31 30 39 32 39 34 31 34  mestamp 10929414
fcd0: 36 36 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  66.</p>..<blockq
fce0: 75 6f 74 65 3e 0a 20 20 20 20 53 45 4c 45 43 54  uote>.    SELECT
fcf0: 20 64 61 74 65 74 69 6d 65 28 31 30 39 32 39 34   datetime(109294
fd00: 31 34 36 36 2c 20 27 75 6e 69 78 65 70 6f 63 68  1466, 'unixepoch
fd10: 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  ');.</blockquote
fd20: 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68  >..<p>Compute th
fd30: 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  e date and time 
fd40: 67 69 76 65 6e 20 61 20 75 6e 69 78 20 74 69 6d  given a unix tim
fd50: 65 73 74 61 6d 70 20 31 30 39 32 39 34 31 34 36  estamp 109294146
fd60: 36 2c 20 61 6e 64 20 0a 63 6f 6d 70 65 6e 73 61  6, and .compensa
fd70: 74 65 20 66 6f 72 20 79 6f 75 72 20 6c 6f 63 61  te for your loca
fd80: 6c 20 74 69 6d 65 7a 6f 6e 65 2e 3c 2f 70 3e 0a  l timezone.</p>.
fd90: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20  .<blockquote>.  
fda0: 53 45 4c 45 43 54 20 64 61 74 65 74 69 6d 65 28  SELECT datetime(
fdb0: 31 30 39 32 39 34 31 34 36 36 2c 20 27 75 6e 69  1092941466, 'uni
fdc0: 78 65 70 6f 63 68 27 2c 20 27 6c 6f 63 61 6c 74  xepoch', 'localt
fdd0: 69 6d 65 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75  ime');.</blockqu
fde0: 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65  ote>..<p>Compute
fdf0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 75 6e 69   the current uni
fe00: 78 20 74 69 6d 65 73 74 61 6d 70 2e 3c 2f 70 3e  x timestamp.</p>
fe10: 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20  ..<blockquote>. 
fe20: 20 53 45 4c 45 43 54 20 73 74 72 66 74 69 6d 65   SELECT strftime
fe30: 28 27 25 73 27 2c 27 6e 6f 77 27 29 3b 0a 3c 2f  ('%s','now');.</
fe40: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
fe50: 43 6f 6d 70 75 74 65 20 74 68 65 20 6e 75 6d 62  Compute the numb
fe60: 65 72 20 6f 66 20 64 61 79 73 20 73 69 6e 63 65  er of days since
fe70: 20 74 68 65 20 73 69 67 6e 69 6e 67 20 6f 66 20   the signing of 
fe80: 74 68 65 20 55 53 20 44 65 63 6c 61 72 61 74 69  the US Declarati
fe90: 6f 6e 0a 6f 66 20 49 6e 64 65 70 65 6e 64 65 6e  on.of Independen
fea0: 74 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  t.</p>..<blockqu
feb0: 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20 6a 75  ote>.  SELECT ju
fec0: 6c 69 61 6e 64 61 79 28 27 6e 6f 77 27 29 20 2d  lianday('now') -
fed0: 20 6a 75 6c 69 61 6e 64 61 79 28 27 31 37 37 36   julianday('1776
fee0: 2d 30 37 2d 30 34 27 29 3b 0a 3c 2f 62 6c 6f 63  -07-04');.</bloc
fef0: 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d 70  kquote>..<p>Comp
ff00: 75 74 65 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  ute the number o
ff10: 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20  f seconds since 
ff20: 61 20 70 61 72 74 69 63 75 6c 61 72 20 6d 6f 6d  a particular mom
ff30: 65 6e 74 20 69 6e 20 32 30 30 34 3a 3c 2f 70 3e  ent in 2004:</p>
ff40: 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20  ..<blockquote>. 
ff50: 20 53 45 4c 45 43 54 20 73 74 72 66 74 69 6d 65   SELECT strftime
ff60: 28 27 25 73 27 2c 27 6e 6f 77 27 29 20 2d 20 73  ('%s','now') - s
ff70: 74 72 66 74 69 6d 65 28 27 25 73 27 2c 27 32 30  trftime('%s','20
ff80: 30 34 2d 30 31 2d 30 31 20 30 32 3a 33 34 3a 35  04-01-01 02:34:5
ff90: 36 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  6');.</blockquot
ffa0: 65 3e 0a 0a 3c 70 3e 0a 43 6f 6d 70 75 74 65 20  e>..<p>.Compute 
ffb0: 74 68 65 20 64 61 74 65 20 6f 66 20 74 68 65 20  the date of the 
ffc0: 66 69 72 73 74 20 54 75 65 73 64 61 79 20 69 6e  first Tuesday in
ffd0: 20 4f 63 74 6f 62 65 72 0a 66 6f 72 20 74 68 65   October.for the
ffe0: 20 63 75 72 72 65 6e 74 20 79 65 61 72 2e 0a 3c   current year..<
fff0: 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
10000 3e 0a 20 20 53 45 4c 45 43 54 20 64 61 74 65 28  >.  SELECT date(
10010 27 6e 6f 77 27 2c 27 73 74 61 72 74 20 6f 66 20  'now','start of 
10020 79 65 61 72 27 2c 27 2b 39 20 6d 6f 6e 74 68 73  year','+9 months
10030 27 2c 27 77 65 65 6b 64 61 79 20 32 27 29 3b 0a  ','weekday 2');.
10040 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c  </blockquote>..<
10050 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 74 69  p>Compute the ti
10060 6d 65 20 73 69 6e 63 65 20 74 68 65 20 75 6e 69  me since the uni
10070 78 20 65 70 6f 63 68 20 69 6e 20 73 65 63 6f 6e  x epoch in secon
10080 64 73 20 0a 28 6c 69 6b 65 20 73 74 72 66 74 69  ds .(like strfti
10090 6d 65 28 27 25 73 27 2c 27 6e 6f 77 27 29 20 65  me('%s','now') e
100a0 78 63 65 70 74 20 69 6e 63 6c 75 64 65 73 20 66  xcept includes f
100b0 72 61 63 74 69 6f 6e 61 6c 20 70 61 72 74 29 3a  ractional part):
100c0 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
100d0 65 3e 0a 20 20 53 45 4c 45 43 54 20 28 6a 75 6c  e>.  SELECT (jul
100e0 69 61 6e 64 61 79 28 27 6e 6f 77 27 29 20 2d 20  ianday('now') - 
100f0 32 34 34 30 35 38 37 2e 35 29 2a 38 36 34 30 30  2440587.5)*86400
10100 2e 30 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  .0;.</blockquote
10110 3e 0a 0a 3c 68 33 3e 43 61 76 65 61 74 73 20 41  >..<h3>Caveats A
10120 6e 64 20 42 75 67 73 3c 2f 68 33 3e 0a 0a 3c 70  nd Bugs</h3>..<p
10130 3e 54 68 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e  >The computation
10140 20 6f 66 20 6c 6f 63 61 6c 20 74 69 6d 65 20 64   of local time d
10150 65 70 65 6e 64 73 20 68 65 61 76 69 6c 79 20 6f  epends heavily o
10160 6e 20 74 68 65 20 77 68 69 6d 20 0a 6f 66 20 70  n the whim .of p
10170 6f 6c 69 74 69 63 69 61 6e 73 20 61 6e 64 20 69  oliticians and i
10180 73 20 74 68 75 73 20 64 69 66 66 69 63 75 6c 74  s thus difficult
10190 20 74 6f 20 67 65 74 20 63 6f 72 72 65 63 74 20   to get correct 
101a0 66 6f 72 20 0a 61 6c 6c 20 6c 6f 63 61 6c 65 73  for .all locales
101b0 2e 20 49 6e 20 74 68 69 73 20 69 6d 70 6c 65 6d  . In this implem
101c0 65 6e 74 61 74 69 6f 6e 2c 20 74 68 65 20 73 74  entation, the st
101d0 61 6e 64 61 72 64 20 43 20 6c 69 62 72 61 72 79  andard C library
101e0 20 0a 66 75 6e 63 74 69 6f 6e 20 6c 6f 63 61 6c   .function local
101f0 74 69 6d 65 5f 72 28 29 20 69 73 20 75 73 65 64  time_r() is used
10200 20 74 6f 20 61 73 73 69 73 74 20 69 6e 20 74 68   to assist in th
10210 65 20 63 61 6c 63 75 6c 61 74 69 6f 6e 20 6f 66  e calculation of
10220 20 0a 6c 6f 63 61 6c 20 74 69 6d 65 2e 20 20 54   .local time.  T
10230 68 65 20 0a 6c 6f 63 61 6c 74 69 6d 65 5f 72 28  he .localtime_r(
10240 29 20 43 20 66 75 6e 63 74 69 6f 6e 20 6e 6f 72  ) C function nor
10250 6d 61 6c 6c 79 20 6f 6e 6c 79 20 77 6f 72 6b 73  mally only works
10260 20 66 6f 72 20 79 65 61 72 73 0a 62 65 74 77 65   for years.betwe
10270 65 6e 20 31 39 37 30 20 61 6e 64 20 32 30 33 37  en 1970 and 2037
10280 2e 20 46 6f 72 20 64 61 74 65 73 20 6f 75 74 73  . For dates outs
10290 69 64 65 20 74 68 69 73 20 72 61 6e 67 65 2c 20  ide this range, 
102a0 53 51 4c 69 74 65 20 0a 61 74 74 65 6d 70 74 73  SQLite .attempts
102b0 20 74 6f 20 6d 61 70 20 74 68 65 20 79 65 61 72   to map the year
102c0 20 69 6e 74 6f 20 61 6e 20 65 71 75 69 76 61 6c   into an equival
102d0 65 6e 74 20 79 65 61 72 20 77 69 74 68 69 6e 20  ent year within 
102e0 0a 74 68 69 73 20 72 61 6e 67 65 2c 20 64 6f 20  .this range, do 
102f0 74 68 65 20 63 61 6c 63 75 6c 61 74 69 6f 6e 2c  the calculation,
10300 20 74 68 65 6e 20 6d 61 70 20 74 68 65 20 79 65   then map the ye
10310 61 72 20 62 61 63 6b 2e 3c 2f 70 3e 0a 0a 0a 3c  ar back.</p>...<
10320 70 3e 44 61 74 65 20 63 6f 6d 70 75 74 61 74 69  p>Date computati
10330 6f 6e 73 20 64 6f 20 6e 6f 74 20 67 69 76 65 20  ons do not give 
10340 63 6f 72 72 65 63 74 20 72 65 73 75 6c 74 73 20  correct results 
10350 66 6f 72 20 64 61 74 65 73 20 0a 62 65 66 6f 72  for dates .befor
10360 65 20 4a 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d  e Julian day num
10370 62 65 72 20 30 20 28 2d 34 37 31 33 2d 31 31 2d  ber 0 (-4713-11-
10380 32 34 20 31 32 3a 30 30 3a 30 30 29 2e 3c 2f 70  24 12:00:00).</p
10390 3e 0a 0a 3c 70 3e 4e 6f 6e 2d 56 69 73 74 61 20  >..<p>Non-Vista 
103a0 57 69 6e 64 6f 77 73 20 70 6c 61 74 66 6f 72 6d  Windows platform
103b0 73 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 20 6f  s only support o
103c0 6e 65 20 73 65 74 20 6f 66 20 44 53 54 20 72 75  ne set of DST ru
103d0 6c 65 73 2e 20 0a 56 69 73 74 61 20 6f 6e 6c 79  les. .Vista only
103e0 20 73 75 70 70 6f 72 74 73 20 74 77 6f 2e 20 54   supports two. T
103f0 68 65 72 65 66 6f 72 65 2c 20 6f 6e 20 74 68 65  herefore, on the
10400 73 65 20 70 6c 61 74 66 6f 72 6d 73 2c 20 0a 68  se platforms, .h
10410 69 73 74 6f 72 69 63 61 6c 20 44 53 54 20 63 61  istorical DST ca
10420 6c 63 75 6c 61 74 69 6f 6e 73 20 77 69 6c 6c 20  lculations will 
10430 62 65 20 69 6e 63 6f 72 72 65 63 74 2e 20 0a 46  be incorrect. .F
10440 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 6e 20 74  or example, in t
10450 68 65 20 55 53 2c 20 69 6e 20 32 30 30 37 20 74  he US, in 2007 t
10460 68 65 20 44 53 54 20 72 75 6c 65 73 20 63 68 61  he DST rules cha
10470 6e 67 65 64 2e 20 0a 4e 6f 6e 2d 56 69 73 74 61  nged. .Non-Vista
10480 20 57 69 6e 64 6f 77 73 20 70 6c 61 74 66 6f 72   Windows platfor
10490 6d 73 20 61 70 70 6c 79 20 74 68 65 20 6e 65 77  ms apply the new
104a0 20 32 30 30 37 20 44 53 54 20 72 75 6c 65 73 20   2007 DST rules 
104b0 0a 74 6f 20 61 6c 6c 20 70 72 65 76 69 6f 75 73  .to all previous
104c0 20 79 65 61 72 73 20 61 73 20 77 65 6c 6c 2e 20   years as well. 
104d0 56 69 73 74 61 20 64 6f 65 73 20 73 6f 6d 65 77  Vista does somew
104e0 68 61 74 20 62 65 74 74 65 72 0a 67 65 74 74 69  hat better.getti
104f0 6e 67 20 72 65 73 75 6c 74 73 20 63 6f 72 72 65  ng results corre
10500 63 74 20 62 61 63 6b 20 74 6f 20 31 39 38 36 2c  ct back to 1986,
10510 20 77 68 65 6e 20 74 68 65 20 72 75 6c 65 73 20   when the rules 
10520 77 65 72 65 20 61 6c 73 6f 20 63 68 61 6e 67 65  were also change
10530 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6c 6c 20 69  d.</p>..<p>All i
10540 6e 74 65 72 6e 61 6c 20 63 6f 6d 70 75 74 61 74  nternal computat
10550 69 6f 6e 73 20 61 73 73 75 6d 65 20 74 68 65 20  ions assume the 
10560 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f  .<a href="http:/
10570 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72  /en.wikipedia.or
10580 67 2f 77 69 6b 69 2f 47 72 65 67 6f 72 69 61 6e  g/wiki/Gregorian
10590 5f 63 61 6c 65 6e 64 61 72 22 3e 0a 47 72 65 67  _calendar">.Greg
105a0 6f 72 69 61 6e 20 63 61 6c 65 6e 64 61 72 3c 2f  orian calendar</
105b0 61 3e 20 73 79 73 74 65 6d 2e 20 20 49 74 20 69  a> system.  It i
105c0 73 20 61 6c 73 6f 20 61 73 73 75 6d 65 64 20 74  s also assumed t
105d0 68 61 74 20 65 76 65 72 79 0a 64 61 79 20 69 73  hat every.day is
105e0 20 65 78 61 63 74 6c 79 20 38 36 34 30 30 20 73   exactly 86400 s
105f0 65 63 6f 6e 64 73 20 69 6e 20 64 75 72 61 74 69  econds in durati
10600 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  on.</p>..<tcl>.#
10610 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10620 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10630 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10640 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10650 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
10660 63 74 69 6f 6e 20 7b 41 67 67 72 65 67 61 74 65  ction {Aggregate
10670 20 46 75 6e 63 74 69 6f 6e 73 7d 20 61 67 67 66   Functions} aggf
10680 75 6e 63 20 7b 61 67 67 66 75 6e 63 7d 0a 3c 2f  unc {aggfunc}.</
10690 74 63 6c 3e 0a 0a 3c 70 3e 0a 54 68 65 20 61 67  tcl>..<p>.The ag
106a0 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
106b0 73 20 73 68 6f 77 6e 20 62 65 6c 6f 77 20 61 72  s shown below ar
106c0 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64  e available by d
106d0 65 66 61 75 6c 74 2e 20 20 41 64 64 69 74 69 6f  efault.  Additio
106e0 6e 61 6c 0a 61 67 67 72 65 67 61 74 65 20 66 75  nal.aggregate fu
106f0 6e 63 74 69 6f 6e 73 20 77 72 69 74 74 65 6e 20  nctions written 
10700 69 6e 20 43 20 6d 61 79 20 62 65 20 61 64 64 65  in C may be adde
10710 64 20 75 73 69 6e 67 20 74 68 65 20 0a 5b 73 71  d using the .[sq
10720 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
10730 63 74 69 6f 6e 28 29 5d 3c 2f 61 3e 0a 41 50 49  ction()]</a>.API
10740 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 49 6e 20 61 6e  .</p>..<p>.In an
10750 79 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  y aggregate func
10760 74 69 6f 6e 20 74 68 61 74 20 74 61 6b 65 73 20  tion that takes 
10770 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e  a single argumen
10780 74 2c 20 74 68 61 74 20 61 72 67 75 6d 65 6e 74  t, that argument
10790 0a 63 61 6e 20 62 65 20 70 72 65 63 65 65 64 65  .can be preceede
107a0 64 20 62 79 20 74 68 65 20 6b 65 79 77 6f 72 64  d by the keyword
107b0 20 44 49 53 54 49 4e 43 54 2e 20 20 49 6e 20 73   DISTINCT.  In s
107c0 75 63 68 20 63 61 73 65 73 2c 20 64 75 70 6c 69  uch cases, dupli
107d0 63 61 74 65 0a 65 6c 65 6d 65 6e 74 73 20 61 72  cate.elements ar
107e0 65 20 66 69 6c 74 65 72 65 64 20 62 65 66 6f 72  e filtered befor
107f0 65 20 62 65 69 6e 67 20 70 61 73 73 65 64 20 69  e being passed i
10800 6e 74 6f 20 74 68 65 20 61 67 67 72 65 67 61 74  nto the aggregat
10810 65 20 66 75 6e 63 74 69 6f 6e 2e 0a 46 6f 72 20  e function..For 
10820 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 66 75 6e  example, the fun
10830 63 74 69 6f 6e 20 22 63 6f 75 6e 74 28 64 69 73  ction "count(dis
10840 74 69 6e 63 74 20 58 29 22 20 77 69 6c 6c 20 72  tinct X)" will r
10850 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72  eturn the number
10860 0a 6f 66 20 64 69 73 74 69 6e 63 74 20 76 61 6c  .of distinct val
10870 75 65 73 20 6f 66 20 63 6f 6c 75 6d 6e 20 58 20  ues of column X 
10880 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 74  instead of the t
10890 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6e  otal number of n
108a0 6f 6e 2d 6e 75 6c 6c 0a 76 61 6c 75 65 73 20 69  on-null.values i
108b0 6e 20 63 6f 6c 75 6d 6e 20 58 2e 0a 3c 2f 70 3e  n column X..</p>
108c0 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d  ..<table border=
108d0 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30  0 cellpadding=10
108e0 3e 0a 3c 74 63 6c 3e 0a 66 75 6e 63 64 65 66 20  >.<tcl>.funcdef 
108f0 7b 61 76 67 28 58 29 7d 20 7b 7d 20 7b 0a 20 20  {avg(X)} {} {.  
10900 52 65 74 75 72 6e 20 74 68 65 20 61 76 65 72 61  Return the avera
10910 67 65 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20  ge value of all 
10920 6e 6f 6e 2d 4e 55 4c 4c 20 3c 69 3e 58 3c 2f 69  non-NULL <i>X</i
10930 3e 20 77 69 74 68 69 6e 20 61 0a 20 20 67 72 6f  > within a.  gro
10940 75 70 2e 20 20 53 74 72 69 6e 67 20 61 6e 64 20  up.  String and 
10950 42 4c 4f 42 20 76 61 6c 75 65 73 20 74 68 61 74  BLOB values that
10960 20 64 6f 20 6e 6f 74 20 6c 6f 6f 6b 20 6c 69 6b   do not look lik
10970 65 20 6e 75 6d 62 65 72 73 20 61 72 65 0a 20 20  e numbers are.  
10980 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 30  interpreted as 0
10990 2e 0a 20 20 54 68 65 20 72 65 73 75 6c 74 20 6f  ..  The result o
109a0 66 20 61 76 67 28 29 20 69 73 20 61 6c 77 61 79  f avg() is alway
109b0 73 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  s a floating poi
109c0 6e 74 20 76 61 6c 75 65 20 65 76 65 6e 20 69 66  nt value even if
109d0 20 61 6c 6c 0a 20 20 69 6e 70 75 74 73 20 61 72   all.  inputs ar
109e0 65 20 69 6e 74 65 67 65 72 73 2e 0a 7d 0a 0a 66  e integers..}..f
109f0 75 6e 63 64 65 66 20 7b 63 6f 75 6e 74 28 58 29  uncdef {count(X)
10a00 20 63 6f 75 6e 74 28 2a 29 7d 20 7b 7d 20 7b 0a   count(*)} {} {.
10a10 20 20 54 68 65 20 66 69 72 73 74 20 66 6f 72 6d    The first form
10a20 20 72 65 74 75 72 6e 20 61 20 63 6f 75 6e 74 20   return a count 
10a30 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  of the number of
10a40 20 74 69 6d 65 73 0a 20 20 74 68 61 74 20 3c 69   times.  that <i
10a50 3e 58 3c 2f 69 3e 20 69 73 20 6e 6f 74 20 4e 55  >X</i> is not NU
10a60 4c 4c 20 69 6e 20 61 20 67 72 6f 75 70 2e 20 20  LL in a group.  
10a70 54 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20  The second form 
10a80 28 77 69 74 68 20 6e 6f 20 61 72 67 75 6d 65 6e  (with no argumen
10a90 74 29 0a 20 20 72 65 74 75 72 6e 73 20 74 68 65  t).  returns the
10aa0 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66   total number of
10ab0 20 72 6f 77 73 20 69 6e 20 74 68 65 20 67 72 6f   rows in the gro
10ac0 75 70 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  up..}..funcdef {
10ad0 67 72 6f 75 70 5f 63 6f 6e 63 61 74 28 58 29 20  group_concat(X) 
10ae0 67 72 6f 75 70 5f 63 6f 6e 63 61 74 28 58 2c 59  group_concat(X,Y
10af0 29 7d 20 7b 7d 20 7b 0a 20 20 54 68 65 20 72 65  )} {} {.  The re
10b00 73 75 6c 74 20 69 73 20 61 20 73 74 72 69 6e 67  sult is a string
10b10 20 77 68 69 63 68 20 69 73 20 74 68 65 20 63 6f   which is the co
10b20 6e 63 61 74 65 6e 61 74 69 6f 6e 20 6f 66 0a 20  ncatenation of. 
10b30 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61   all non-NULL va
10b40 6c 75 65 73 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e  lues of <i>X</i>
10b50 2e 20 20 49 66 20 70 61 72 61 6d 65 74 65 72 20  .  If parameter 
10b60 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 74 68 65 20  <i>Y</i> is the 
10b70 73 65 70 61 72 61 74 6f 72 0a 20 20 62 65 74 77  separator.  betw
10b80 65 65 6e 20 69 6e 73 74 61 6e 63 65 73 20 6f 66  een instances of
10b90 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 41 20 63 6f   <i>X</i>.  A co
10ba0 6d 6d 61 20 28 22 2c 22 29 20 69 73 20 75 73 65  mma (",") is use
10bb0 64 20 61 73 20 74 68 65 20 73 65 70 61 72 61 74  d as the separat
10bc0 6f 72 0a 20 20 69 66 20 3c 69 3e 59 3c 2f 69 3e  or.  if <i>Y</i>
10bd0 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a   is omitted..}..
10be0 66 75 6e 63 64 65 66 20 7b 6d 61 78 28 58 29 7d  funcdef {max(X)}
10bf0 20 7b 6d 61 78 41 67 67 46 75 6e 63 20 61 67 67   {maxAggFunc agg
10c00 5f 6d 61 78 7d 20 7b 0a 20 20 52 65 74 75 72 6e  _max} {.  Return
10c10 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c   the maximum val
10c20 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73  ue of all values
10c30 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 20   in the group.. 
10c40 20 54 68 65 20 75 73 75 61 6c 20 73 6f 72 74 20   The usual sort 
10c50 6f 72 64 65 72 20 69 73 20 75 73 65 64 20 74 6f  order is used to
10c60 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d   determine the m
10c70 61 78 69 6d 75 6d 2e 0a 7d 0a 0a 66 75 6e 63 64  aximum..}..funcd
10c80 65 66 20 7b 6d 69 6e 28 58 29 7d 20 7b 6d 69 6e  ef {min(X)} {min
10c90 41 67 67 46 75 6e 63 20 61 67 67 5f 6d 69 6e 7d  AggFunc agg_min}
10ca0 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20   {.  Return the 
10cb0 6d 69 6e 69 6d 75 6d 20 6e 6f 6e 2d 4e 55 4c 4c  minimum non-NULL
10cc0 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61   value of all va
10cd0 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75  lues in the grou
10ce0 70 2e 0a 20 20 54 68 65 20 75 73 75 61 6c 20 73  p..  The usual s
10cf0 6f 72 74 20 6f 72 64 65 72 20 69 73 20 75 73 65  ort order is use
10d00 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74  d to determine t
10d10 68 65 20 6d 69 6e 69 6d 75 6d 2e 20 20 0a 20 20  he minimum.  .  
10d20 4e 55 4c 4c 20 69 73 20 6f 6e 6c 79 20 72 65 74  NULL is only ret
10d30 75 72 6e 65 64 0a 20 20 69 66 20 61 6c 6c 20 76  urned.  if all v
10d40 61 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f  alues in the gro
10d50 75 70 20 61 72 65 20 4e 55 4c 4c 2e 0a 7d 0a 0a  up are NULL..}..
10d60 66 75 6e 63 64 65 66 20 7b 73 75 6d 28 58 29 20  funcdef {sum(X) 
10d70 74 6f 74 61 6c 28 58 29 7d 20 7b 73 75 6d 46 75  total(X)} {sumFu
10d80 6e 63 20 73 75 6d 20 74 6f 74 61 6c 7d 20 7b 0a  nc sum total} {.
10d90 20 20 52 65 74 75 72 6e 20 74 68 65 20 6e 75 6d    Return the num
10da0 65 72 69 63 20 73 75 6d 20 6f 66 20 61 6c 6c 20  eric sum of all 
10db0 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 73 20  non-NULL values 
10dc0 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 20 20  in the group..  
10dd0 49 66 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20  If there are no 
10de0 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74 20 72  non-NULL input r
10df0 6f 77 73 20 74 68 65 6e 20 73 75 6d 28 29 20 72  ows then sum() r
10e00 65 74 75 72 6e 73 0a 20 20 4e 55 4c 4c 20 62 75  eturns.  NULL bu
10e10 74 20 74 6f 74 61 6c 28 29 20 72 65 74 75 72 6e  t total() return
10e20 73 20 30 2e 30 2e 0a 20 20 4e 55 4c 4c 20 69 73  s 0.0..  NULL is
10e30 20 6e 6f 74 20 6e 6f 72 6d 61 6c 6c 79 20 61 20   not normally a 
10e40 68 65 6c 70 66 75 6c 20 72 65 73 75 6c 74 20 66  helpful result f
10e50 6f 72 20 74 68 65 20 73 75 6d 20 6f 66 20 6e 6f  or the sum of no
10e60 20 72 6f 77 73 0a 20 20 62 75 74 20 74 68 65 20   rows.  but the 
10e70 53 51 4c 20 73 74 61 6e 64 61 72 64 20 72 65 71  SQL standard req
10e80 75 69 72 65 73 20 69 74 20 61 6e 64 20 6d 6f 73  uires it and mos
10e90 74 20 6f 74 68 65 72 0a 20 20 53 51 4c 20 64 61  t other.  SQL da
10ea0 74 61 62 61 73 65 20 65 6e 67 69 6e 65 73 20 69  tabase engines i
10eb0 6d 70 6c 65 6d 65 6e 74 20 73 75 6d 28 29 20 74  mplement sum() t
10ec0 68 61 74 20 77 61 79 20 73 6f 20 53 51 4c 69 74  hat way so SQLit
10ed0 65 20 64 6f 65 73 20 69 74 20 69 6e 20 74 68 65  e does it in the
10ee0 0a 20 20 73 61 6d 65 20 77 61 79 20 69 6e 20 6f  .  same way in o
10ef0 72 64 65 72 20 74 6f 20 62 65 20 63 6f 6d 70 61  rder to be compa
10f00 74 69 62 6c 65 2e 20 20 20 54 68 65 20 6e 6f 6e  tible.   The non
10f10 2d 73 74 61 6e 64 61 72 64 20 74 6f 74 61 6c 28  -standard total(
10f20 29 20 66 75 6e 63 74 69 6f 6e 0a 20 20 69 73 20  ) function.  is 
10f30 70 72 6f 76 69 64 65 64 20 61 73 20 61 20 63 6f  provided as a co
10f40 6e 76 65 6e 69 65 6e 74 20 77 61 79 20 74 6f 20  nvenient way to 
10f50 77 6f 72 6b 20 61 72 6f 75 6e 64 20 74 68 69 73  work around this
10f60 20 64 65 73 69 67 6e 20 70 72 6f 62 6c 65 6d 0a   design problem.
10f70 20 20 69 6e 20 74 68 65 20 53 51 4c 20 6c 61 6e    in the SQL lan
10f80 67 75 61 67 65 2e 3c 2f 70 3e 0a 0a 20 20 3c 70  guage.</p>..  <p
10f90 3e 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74  >The result of t
10fa0 6f 74 61 6c 28 29 20 69 73 20 61 6c 77 61 79 73  otal() is always
10fb0 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e   a floating poin
10fc0 74 20 76 61 6c 75 65 2e 0a 20 20 54 68 65 20 72  t value..  The r
10fd0 65 73 75 6c 74 20 6f 66 20 73 75 6d 28 29 20 69  esult of sum() i
10fe0 73 20 61 6e 20 69 6e 74 65 67 65 72 20 76 61 6c  s an integer val
10ff0 75 65 20 69 66 20 61 6c 6c 20 6e 6f 6e 2d 4e 55  ue if all non-NU
11000 4c 4c 20 69 6e 70 75 74 73 20 61 72 65 20 69 6e  LL inputs are in
11010 74 65 67 65 72 73 2e 0a 20 20 49 66 20 61 6e 79  tegers..  If any
11020 20 69 6e 70 75 74 20 74 6f 20 73 75 6d 28 29 20   input to sum() 
11030 69 73 20 6e 65 69 74 68 65 72 20 61 6e 20 69 6e  is neither an in
11040 74 65 67 65 72 20 6f 72 20 61 20 4e 55 4c 4c 0a  teger or a NULL.
11050 20 20 74 68 65 6e 20 73 75 6d 28 29 20 72 65 74    then sum() ret
11060 75 72 6e 73 20 61 20 66 6c 6f 61 74 69 6e 67 20  urns a floating 
11070 70 6f 69 6e 74 20 76 61 6c 75 65 0a 20 20 77 68  point value.  wh
11080 69 63 68 20 6d 69 67 68 74 20 62 65 20 61 6e 20  ich might be an 
11090 61 70 70 72 6f 78 69 6d 61 74 69 6f 6e 20 74 6f  approximation to
110a0 20 74 68 65 20 74 72 75 65 20 73 75 6d 2e 3c 2f   the true sum.</
110b0 70 3e 0a 0a 20 20 3c 70 3e 53 75 6d 28 29 20 77  p>..  <p>Sum() w
110c0 69 6c 6c 20 74 68 72 6f 77 20 61 6e 20 22 69 6e  ill throw an "in
110d0 74 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 22 20  teger overflow" 
110e0 65 78 63 65 70 74 69 6f 6e 20 69 66 20 61 6c 6c  exception if all
110f0 20 69 6e 70 75 74 73 0a 20 20 61 72 65 20 69 6e   inputs.  are in
11100 74 65 67 65 72 73 20 6f 72 20 4e 55 4c 4c 0a 20  tegers or NULL. 
11110 20 61 6e 64 20 61 6e 20 69 6e 74 65 67 65 72 20   and an integer 
11120 6f 76 65 72 66 6c 6f 77 20 6f 63 63 75 72 73 20  overflow occurs 
11130 61 74 20 61 6e 79 20 70 6f 69 6e 74 20 64 75 72  at any point dur
11140 69 6e 67 20 74 68 65 20 63 6f 6d 70 75 74 61 74  ing the computat
11150 69 6f 6e 2e 0a 20 20 54 6f 74 61 6c 28 29 20 6e  ion..  Total() n
11160 65 76 65 72 20 74 68 72 6f 77 73 20 61 6e 20 65  ever throws an e
11170 78 63 65 70 74 69 6f 6e 2e 0a 7d 0a 3c 2f 74 63  xception..}.</tc
11180 6c 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 74 63  l>.</table>..<tc
11190 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
111a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
111b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
111c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
111d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
111e0 23 0a 53 65 63 74 69 6f 6e 20 49 4e 53 45 52 54  #.Section INSERT
111f0 20 69 6e 73 65 72 74 20 7b 49 4e 53 45 52 54 20   insert {INSERT 
11200 49 4e 53 45 52 54 73 7d 0a 0a 42 75 62 62 6c 65  INSERTs}..Bubble
11210 44 69 61 67 72 61 6d 20 69 6e 73 65 72 74 2d 73  Diagram insert-s
11220 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tmt 1.</tcl>..<p
11230 3e 54 68 65 20 49 4e 53 45 52 54 20 73 74 61 74  >The INSERT stat
11240 65 6d 65 6e 74 20 63 6f 6d 65 73 20 69 6e 20 74  ement comes in t
11250 77 6f 20 62 61 73 69 63 20 66 6f 72 6d 73 2e 20  wo basic forms. 
11260 20 54 68 65 20 66 69 72 73 74 20 66 6f 72 6d 0a   The first form.
11270 28 77 69 74 68 20 74 68 65 20 22 56 41 4c 55 45  (with the "VALUE
11280 53 22 20 6b 65 79 77 6f 72 64 29 20 63 72 65 61  S" keyword) crea
11290 74 65 73 20 61 20 73 69 6e 67 6c 65 20 6e 65 77  tes a single new
112a0 20 72 6f 77 20 69 6e 20 61 6e 20 65 78 69 73 74   row in an exist
112b0 69 6e 67 20 74 61 62 6c 65 2e 0a 49 66 20 6e 6f  ing table..If no
112c0 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 20 69 73 20   column-list is 
112d0 73 70 65 63 69 66 69 65 64 20 74 68 65 6e 20 74  specified then t
112e0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c  he number of val
112f0 75 65 73 20 6d 75 73 74 0a 62 65 20 74 68 65 20  ues must.be the 
11300 73 61 6d 65 20 61 73 20 74 68 65 20 6e 75 6d 62  same as the numb
11310 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
11320 20 74 68 65 20 74 61 62 6c 65 2e 20 20 49 66 20   the table.  If 
11330 61 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 0a 69 73  a column-list.is
11340 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e   specified, then
11350 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76   the number of v
11360 61 6c 75 65 73 20 6d 75 73 74 20 6d 61 74 63 68  alues must match
11370 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 73   the number of.s
11380 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73  pecified columns
11390 2e 20 20 43 6f 6c 75 6d 6e 73 20 6f 66 20 74 68  .  Columns of th
113a0 65 20 74 61 62 6c 65 20 74 68 61 74 20 64 6f 20  e table that do 
113b0 6e 6f 74 20 61 70 70 65 61 72 20 69 6e 20 74 68  not appear in th
113c0 65 0a 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 61 72  e.column list ar
113d0 65 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68  e filled with th
113e0 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 2c  e default value,
113f0 20 6f 72 20 77 69 74 68 20 4e 55 4c 4c 20 69 66   or with NULL if
11400 20 6e 6f 0a 64 65 66 61 75 6c 74 20 76 61 6c 75   no.default valu
11410 65 20 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a  e is specified..
11420 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 65 63  </p>..<p>The sec
11430 6f 6e 64 20 66 6f 72 6d 20 6f 66 20 74 68 65 20  ond form of the 
11440 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74  INSERT statement
11450 20 74 61 6b 65 73 20 69 74 20 64 61 74 61 20 66   takes it data f
11460 72 6f 6d 20 61 0a 53 45 4c 45 43 54 20 73 74 61  rom a.SELECT sta
11470 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e 75 6d  tement.  The num
11480 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
11490 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20  n the result of 
114a0 74 68 65 0a 53 45 4c 45 43 54 20 6d 75 73 74 20  the.SELECT must 
114b0 65 78 61 63 74 6c 79 20 6d 61 74 63 68 20 74 68  exactly match th
114c0 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
114d0 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65  mns in the table
114e0 20 69 66 0a 6e 6f 20 63 6f 6c 75 6d 6e 20 6c 69   if.no column li
114f0 73 74 20 69 73 20 73 70 65 63 69 66 69 65 64 2c  st is specified,
11500 20 6f 72 20 69 74 20 6d 75 73 74 20 6d 61 74 63   or it must matc
11510 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  h the number of 
11520 63 6f 6c 75 6d 6e 73 0a 6e 61 6d 65 20 69 6e 20  columns.name in 
11530 74 68 65 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 2e  the column list.
11540 20 20 41 20 6e 65 77 20 65 6e 74 72 79 20 69 73    A new entry is
11550 20 6d 61 64 65 20 69 6e 20 74 68 65 20 74 61 62   made in the tab
11560 6c 65 0a 66 6f 72 20 65 76 65 72 79 20 72 6f 77  le.for every row
11570 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54 20 72   of the SELECT r
11580 65 73 75 6c 74 2e 20 20 54 68 65 20 53 45 4c 45  esult.  The SELE
11590 43 54 20 6d 61 79 20 62 65 20 73 69 6d 70 6c 65  CT may be simple
115a0 0a 6f 72 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f 70  .or compound.</p
115b0 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e  >..<p>The option
115c0 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  al conflict-clau
115d0 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70  se allows the sp
115e0 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61  ecification of a
115f0 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f  n alternative.co
11600 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63  nstraint conflic
11610 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t resolution alg
11620 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20 64 75  orithm to use du
11630 72 69 6e 67 20 74 68 69 73 20 6f 6e 65 20 63 6f  ring this one co
11640 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73  mmand..See the s
11650 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f  ection titled.[O
11660 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 66 6f 72 20  N CONFLICT] for 
11670 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
11680 6d 61 74 69 6f 6e 2e 0a 46 6f 72 20 63 6f 6d 70  mation..For comp
11690 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 4d  atibility with M
116a0 79 53 51 4c 2c 20 74 68 65 20 70 61 72 73 65 72  ySQL, the parser
116b0 20 61 6c 6c 6f 77 73 20 74 68 65 20 75 73 65 20   allows the use 
116c0 6f 66 20 74 68 65 0a 73 69 6e 67 6c 65 20 6b 65  of the.single ke
116d0 79 77 6f 72 64 20 3c 61 20 68 72 65 66 3d 22 6c  yword <a href="l
116e0 61 6e 67 5f 72 65 70 6c 61 63 65 2e 68 74 6d 6c  ang_replace.html
116f0 22 3e 52 45 50 4c 41 43 45 3c 2f 61 3e 20 61 73  ">REPLACE</a> as
11700 20 61 6e 20 0a 61 6c 69 61 73 20 66 6f 72 20 22   an .alias for "
11710 49 4e 53 45 52 54 20 4f 52 20 52 45 50 4c 41 43  INSERT OR REPLAC
11720 45 22 2e 0a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  E"..</p>..<tcl>.
11730 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11740 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11750 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11760 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11770 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
11780 65 63 74 69 6f 6e 20 7b 4f 4e 20 43 4f 4e 46 4c  ection {ON CONFL
11790 49 43 54 20 63 6c 61 75 73 65 7d 20 63 6f 6e 66  ICT clause} conf
117a0 6c 69 63 74 20 7b 7b 63 6f 6e 66 6c 69 63 74 20  lict {{conflict 
117b0 63 6c 61 75 73 65 7d 20 7b 4f 4e 20 43 4f 4e 46  clause} {ON CONF
117c0 4c 49 43 54 7d 7d 0a 0a 42 75 62 62 6c 65 44 69  LICT}}..BubbleDi
117d0 61 67 72 61 6d 20 63 6f 6e 66 6c 69 63 74 2d 63  agram conflict-c
117e0 6c 61 75 73 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  lause.</tcl>..<p
117f0 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54  >The ON CONFLICT
11800 20 63 6c 61 75 73 65 20 69 73 20 6e 6f 74 20 61   clause is not a
11810 20 73 65 70 61 72 61 74 65 20 53 51 4c 20 63 6f   separate SQL co
11820 6d 6d 61 6e 64 2e 20 20 49 74 20 69 73 20 61 0a  mmand.  It is a.
11830 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20 63 6c 61  non-standard cla
11840 75 73 65 20 74 68 61 74 20 63 61 6e 20 61 70 70  use that can app
11850 65 61 72 20 69 6e 20 6d 61 6e 79 20 6f 74 68 65  ear in many othe
11860 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 2e 0a  r SQL commands..
11870 49 74 20 69 73 20 67 69 76 65 6e 20 69 74 73 20  It is given its 
11880 6f 77 6e 20 73 65 63 74 69 6f 6e 20 69 6e 20 74  own section in t
11890 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 62 65 63  his document bec
118a0 61 75 73 65 20 69 74 20 69 73 20 6e 6f 74 0a 70  ause it is not.p
118b0 61 72 74 20 6f 66 20 73 74 61 6e 64 61 72 64 20  art of standard 
118c0 53 51 4c 20 61 6e 64 20 74 68 65 72 65 66 6f 72  SQL and therefor
118d0 65 20 6d 69 67 68 74 20 6e 6f 74 20 62 65 20 66  e might not be f
118e0 61 6d 69 6c 69 61 72 2e 3c 2f 70 3e 0a 0a 3c 70  amiliar.</p>..<p
118f0 3e 54 68 65 20 73 79 6e 74 61 78 20 66 6f 72 20  >The syntax for 
11900 74 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  the ON CONFLICT 
11910 63 6c 61 75 73 65 20 69 73 20 61 73 20 73 68 6f  clause is as sho
11920 77 6e 20 61 62 6f 76 65 20 66 6f 72 0a 74 68 65  wn above for.the
11930 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 63 6f   CREATE TABLE co
11940 6d 6d 61 6e 64 2e 20 20 46 6f 72 20 74 68 65 20  mmand.  For the 
11950 49 4e 53 45 52 54 20 61 6e 64 0a 55 50 44 41 54  INSERT and.UPDAT
11960 45 20 63 6f 6d 6d 61 6e 64 73 2c 20 74 68 65 20  E commands, the 
11970 6b 65 79 77 6f 72 64 73 20 22 4f 4e 20 43 4f 4e  keywords "ON CON
11980 46 4c 49 43 54 22 20 61 72 65 20 72 65 70 6c 61  FLICT" are repla
11990 63 65 64 20 62 79 20 22 4f 52 22 2c 20 74 6f 20  ced by "OR", to 
119a0 6d 61 6b 65 0a 74 68 65 20 73 79 6e 74 61 78 20  make.the syntax 
119b0 73 65 65 6d 20 6d 6f 72 65 20 6e 61 74 75 72 61  seem more natura
119c0 6c 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c  l.  For example,
119d0 20 69 6e 73 74 65 61 64 20 6f 66 0a 22 49 4e 53   instead of."INS
119e0 45 52 54 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  ERT ON CONFLICT 
119f0 49 47 4e 4f 52 45 22 20 77 65 20 68 61 76 65 20  IGNORE" we have 
11a00 22 49 4e 53 45 52 54 20 4f 52 20 49 47 4e 4f 52  "INSERT OR IGNOR
11a10 45 22 2e 0a 54 68 65 20 6b 65 79 77 6f 72 64 73  E"..The keywords
11a20 20 63 68 61 6e 67 65 20 62 75 74 20 74 68 65 20   change but the 
11a30 6d 65 61 6e 69 6e 67 20 6f 66 20 74 68 65 20 63  meaning of the c
11a40 6c 61 75 73 65 20 69 73 20 74 68 65 20 73 61 6d  lause is the sam
11a50 65 0a 65 69 74 68 65 72 20 77 61 79 2e 3c 2f 70  e.either way.</p
11a60 3e 0a 0a 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e  >..<p>The ON CON
11a70 46 4c 49 43 54 20 63 6c 61 75 73 65 20 73 70 65  FLICT clause spe
11a80 63 69 66 69 65 73 20 61 6e 20 61 6c 67 6f 72 69  cifies an algori
11a90 74 68 6d 20 75 73 65 64 20 74 6f 20 72 65 73 6f  thm used to reso
11aa0 6c 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63  lve.constraint c
11ab0 6f 6e 66 6c 69 63 74 73 2e 20 20 54 68 65 72 65  onflicts.  There
11ac0 20 61 72 65 20 66 69 76 65 20 63 68 6f 69 63 65   are five choice
11ad0 73 3a 20 52 4f 4c 4c 42 41 43 4b 2c 20 41 42 4f  s: ROLLBACK, ABO
11ae0 52 54 2c 0a 46 41 49 4c 2c 20 49 47 4e 4f 52 45  RT,.FAIL, IGNORE
11af0 2c 20 61 6e 64 20 52 45 50 4c 41 43 45 2e 20 54  , and REPLACE. T
11b00 68 65 20 64 65 66 61 75 6c 74 20 61 6c 67 6f 72  he default algor
11b10 69 74 68 6d 20 69 73 20 41 42 4f 52 54 2e 20 20  ithm is ABORT.  
11b20 54 68 69 73 0a 69 73 20 77 68 61 74 20 74 68 65  This.is what the
11b30 79 20 6d 65 61 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c  y mean:</p>..<dl
11b40 3e 0a 3c 64 74 3e 3c 62 3e 52 4f 4c 4c 42 41 43  >.<dt><b>ROLLBAC
11b50 4b 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c  K</b></dt>.<dd><
11b60 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72 61  p>When a constra
11b70 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63  int violation oc
11b80 63 75 72 73 2c 20 61 6e 20 69 6d 6d 65 64 69 61  curs, an immedia
11b90 74 65 20 52 4f 4c 4c 42 41 43 4b 0a 6f 63 63 75  te ROLLBACK.occu
11ba0 72 73 2c 20 74 68 75 73 20 65 6e 64 69 6e 67 20  rs, thus ending 
11bb0 74 68 65 20 63 75 72 72 65 6e 74 20 74 72 61 6e  the current tran
11bc0 73 61 63 74 69 6f 6e 2c 20 61 6e 64 20 74 68 65  saction, and the
11bd0 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72 74 73 0a   command aborts.
11be0 77 69 74 68 20 61 20 72 65 74 75 72 6e 20 63 6f  with a return co
11bf0 64 65 20 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e  de of SQLITE_CON
11c00 53 54 52 41 49 4e 54 2e 20 20 49 66 20 6e 6f 20  STRAINT.  If no 
11c10 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 0a 61  transaction is.a
11c20 63 74 69 76 65 20 28 6f 74 68 65 72 20 74 68 61  ctive (other tha
11c30 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 74 72  n the implied tr
11c40 61 6e 73 61 63 74 69 6f 6e 20 74 68 61 74 20 69  ansaction that i
11c50 73 20 63 72 65 61 74 65 64 20 6f 6e 20 65 76 65  s created on eve
11c60 72 79 0a 63 6f 6d 6d 61 6e 64 29 20 74 68 65 6e  ry.command) then
11c70 20 74 68 69 73 20 61 6c 67 6f 72 69 74 68 6d 20   this algorithm 
11c80 77 6f 72 6b 73 20 74 68 65 20 73 61 6d 65 20 61  works the same a
11c90 73 20 41 42 4f 52 54 2e 3c 2f 70 3e 3c 2f 64 64  s ABORT.</p></dd
11ca0 3e 0a 0a 3c 64 74 3e 3c 62 3e 41 42 4f 52 54 3c  >..<dt><b>ABORT<
11cb0 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e  /b></dt>.<dd><p>
11cc0 57 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e  When a constrain
11cd0 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75  t violation occu
11ce0 72 73 2c 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20  rs, the command 
11cf0 62 61 63 6b 73 20 6f 75 74 0a 61 6e 79 20 70 72  backs out.any pr
11d00 69 6f 72 20 63 68 61 6e 67 65 73 20 69 74 20 6d  ior changes it m
11d10 69 67 68 74 20 68 61 76 65 20 6d 61 64 65 20 61  ight have made a
11d20 6e 64 20 61 62 6f 72 74 73 20 77 69 74 68 20 61  nd aborts with a
11d30 20 72 65 74 75 72 6e 20 63 6f 64 65 0a 6f 66 20   return code.of 
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 6e 6f 20 52 4f 4c 4c 42  T.  But no ROLLB
11d60 41 43 4b 20 69 73 20 65 78 65 63 75 74 65 64 20  ACK is executed 
11d70 73 6f 20 63 68 61 6e 67 65 73 0a 66 72 6f 6d 20  so changes.from 
11d80 70 72 69 6f 72 20 63 6f 6d 6d 61 6e 64 73 20 77  prior commands w
11d90 69 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20 74  ithin the same t
11da0 72 61 6e 73 61 63 74 69 6f 6e 0a 61 72 65 20 70  ransaction.are p
11db0 72 65 73 65 72 76 65 64 2e 20 20 54 68 69 73 20  reserved.  This 
11dc0 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 62  is the default b
11dd0 65 68 61 76 69 6f 72 2e 3c 2f 70 3e 3c 2f 64 64  ehavior.</p></dd
11de0 3e 0a 0a 3c 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f  >..<dt><b>FAIL</
11df0 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57  b></dt>.<dd><p>W
11e00 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74  hen a constraint
11e10 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
11e20 73 2c 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61  s, the command a
11e30 62 6f 72 74 73 20 77 69 74 68 20 61 0a 72 65 74  borts with a.ret
11e40 75 72 6e 20 63 6f 64 65 20 53 51 4c 49 54 45 5f  urn code SQLITE_
11e50 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20 42 75 74  CONSTRAINT.  But
11e60 20 61 6e 79 20 63 68 61 6e 67 65 73 20 74 6f 20   any changes to 
11e70 74 68 65 20 64 61 74 61 62 61 73 65 20 74 68 61  the database tha
11e80 74 0a 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6d 61  t.the command ma
11e90 64 65 20 70 72 69 6f 72 20 74 6f 20 65 6e 63 6f  de prior to enco
11ea0 75 6e 74 65 72 69 6e 67 20 74 68 65 20 63 6f 6e  untering the con
11eb0 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
11ec0 6e 0a 61 72 65 20 70 72 65 73 65 72 76 65 64 20  n.are preserved 
11ed0 61 6e 64 20 61 72 65 20 6e 6f 74 20 62 61 63 6b  and are not back
11ee0 65 64 20 6f 75 74 2e 20 20 46 6f 72 20 65 78 61  ed out.  For exa
11ef0 6d 70 6c 65 2c 20 69 66 20 61 6e 20 55 50 44 41  mple, if an UPDA
11f00 54 45 0a 73 74 61 74 65 6d 65 6e 74 20 65 6e 63  TE.statement enc
11f10 6f 75 6e 74 65 72 65 64 20 61 20 63 6f 6e 73 74  ountered a const
11f20 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
11f30 6f 6e 20 74 68 65 20 31 30 30 74 68 20 72 6f 77  on the 100th row
11f40 20 74 68 61 74 0a 69 74 20 61 74 74 65 6d 70 74   that.it attempt
11f50 73 20 74 6f 20 75 70 64 61 74 65 2c 20 74 68 65  s to update, the
11f60 6e 20 74 68 65 20 66 69 72 73 74 20 39 39 20 72  n the first 99 r
11f70 6f 77 20 63 68 61 6e 67 65 73 20 61 72 65 20 70  ow changes are p
11f80 72 65 73 65 72 76 65 64 0a 62 75 74 20 63 68 61  reserved.but cha
11f90 6e 67 65 73 20 74 6f 20 72 6f 77 73 20 31 30 30  nges to rows 100
11fa0 20 61 6e 64 20 62 65 79 6f 6e 64 20 6e 65 76 65   and beyond neve
11fb0 72 20 6f 63 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64  r occur.</p></dd
11fc0 3e 0a 0a 3c 64 74 3e 3c 62 3e 49 47 4e 4f 52 45  >..<dt><b>IGNORE
11fd0 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70  </b></dt>.<dd><p
11fe0 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69  >When a constrai
11ff0 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63  nt violation occ
12000 75 72 73 2c 20 74 68 65 20 6f 6e 65 20 72 6f 77  urs, the one row
12010 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 0a 74   that contains.t
12020 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69  he constraint vi
12030 6f 6c 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 69  olation is not i
12040 6e 73 65 72 74 65 64 20 6f 72 20 63 68 61 6e 67  nserted or chang
12050 65 64 2e 20 20 42 75 74 20 74 68 65 20 63 6f 6d  ed.  But the com
12060 6d 61 6e 64 0a 63 6f 6e 74 69 6e 75 65 73 20 65  mand.continues e
12070 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c  xecuting normall
12080 79 2e 20 20 4f 74 68 65 72 20 72 6f 77 73 20 62  y.  Other rows b
12090 65 66 6f 72 65 20 61 6e 64 20 61 66 74 65 72 20  efore and after 
120a0 74 68 65 20 72 6f 77 20 74 68 61 74 0a 63 6f 6e  the row that.con
120b0 74 61 69 6e 65 64 20 74 68 65 20 63 6f 6e 73 74  tained the const
120c0 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
120d0 63 6f 6e 74 69 6e 75 65 20 74 6f 20 62 65 20 69  continue to be i
120e0 6e 73 65 72 74 65 64 20 6f 72 20 75 70 64 61 74  nserted or updat
120f0 65 64 0a 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f  ed.normally.  No
12100 20 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e   error is return
12110 65 64 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64  ed.</p></dd>..<d
12120 74 3e 3c 62 3e 52 45 50 4c 41 43 45 3c 2f 62 3e  t><b>REPLACE</b>
12130 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65  </dt>.<dd><p>Whe
12140 6e 20 61 20 55 4e 49 51 55 45 20 63 6f 6e 73 74  n a UNIQUE const
12150 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
12160 6f 63 63 75 72 73 2c 20 74 68 65 20 70 72 65 2d  occurs, the pre-
12170 65 78 69 73 74 69 6e 67 20 72 6f 77 73 0a 74 68  existing rows.th
12180 61 74 20 61 72 65 20 63 61 75 73 69 6e 67 20 74  at are causing t
12190 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69  he constraint vi
121a0 6f 6c 61 74 69 6f 6e 20 61 72 65 20 72 65 6d 6f  olation are remo
121b0 76 65 64 20 70 72 69 6f 72 20 74 6f 20 69 6e 73  ved prior to ins
121c0 65 72 74 69 6e 67 0a 6f 72 20 75 70 64 61 74 69  erting.or updati
121d0 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  ng the current r
121e0 6f 77 2e 20 20 54 68 75 73 20 74 68 65 20 69 6e  ow.  Thus the in
121f0 73 65 72 74 20 6f 72 20 75 70 64 61 74 65 20 61  sert or update a
12200 6c 77 61 79 73 20 6f 63 63 75 72 73 2e 0a 54 68  lways occurs..Th
12210 65 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 74 69 6e  e command contin
12220 75 65 73 20 65 78 65 63 75 74 69 6e 67 20 6e 6f  ues executing no
12230 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65 72 72 6f  rmally.  No erro
12240 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 49  r is returned..I
12250 66 20 61 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e  f a NOT NULL con
12260 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
12270 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 4e 55  n occurs, the NU
12280 4c 4c 20 76 61 6c 75 65 20 69 73 20 72 65 70 6c  LL value is repl
12290 61 63 65 64 0a 62 79 20 74 68 65 20 64 65 66 61  aced.by the defa
122a0 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 20 74 68  ult value for th
122b0 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 49 66 20 74  at column.  If t
122c0 68 65 20 63 6f 6c 75 6d 6e 20 68 61 73 20 6e 6f  he column has no
122d0 20 64 65 66 61 75 6c 74 0a 76 61 6c 75 65 2c 20   default.value, 
122e0 74 68 65 6e 20 74 68 65 20 41 42 4f 52 54 20 61  then the ABORT a
122f0 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64  lgorithm is used
12300 2e 20 20 49 66 20 61 20 43 48 45 43 4b 20 63 6f  .  If a CHECK co
12310 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
12320 6f 6e 0a 6f 63 63 75 72 73 20 74 68 65 6e 20 74  on.occurs then t
12330 68 65 20 49 47 4e 4f 52 45 20 61 6c 67 6f 72 69  he IGNORE algori
12340 74 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e  thm is used.</p>
12350 0a 0a 3c 70 3e 57 68 65 6e 20 74 68 69 73 20 63  ..<p>When this c
12360 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
12370 6f 6e 20 73 74 72 61 74 65 67 79 20 64 65 6c 65  on strategy dele
12380 74 65 73 20 72 6f 77 73 20 69 6e 20 6f 72 64 65  tes rows in orde
12390 72 20 74 6f 0a 73 61 74 69 73 66 79 20 61 20 63  r to.satisfy a c
123a0 6f 6e 73 74 72 61 69 6e 74 2c 20 69 74 20 64 6f  onstraint, it do
123b0 65 73 20 6e 6f 74 20 69 6e 76 6f 6b 65 20 64 65  es not invoke de
123c0 6c 65 74 65 20 74 72 69 67 67 65 72 73 20 6f 6e  lete triggers on
123d0 20 74 68 6f 73 65 0a 72 6f 77 73 2e 20 20 54 68   those.rows.  Th
123e0 69 73 20 62 65 68 61 76 69 6f 72 20 6d 69 67 68  is behavior migh
123f0 74 20 63 68 61 6e 67 65 20 69 6e 20 61 20 66 75  t change in a fu
12400 74 75 72 65 20 72 65 6c 65 61 73 65 2e 3c 2f 70  ture release.</p
12410 3e 0a 3c 2f 64 6c 3e 0a 0a 3c 70 3e 54 68 65 20  >.</dl>..<p>The 
12420 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69 66  algorithm specif
12430 69 65 64 20 69 6e 20 74 68 65 20 4f 52 20 63 6c  ied in the OR cl
12440 61 75 73 65 20 6f 66 20 61 20 49 4e 53 45 52 54  ause of a INSERT
12450 20 6f 72 20 55 50 44 41 54 45 0a 6f 76 65 72 72   or UPDATE.overr
12460 69 64 65 73 20 61 6e 79 20 61 6c 67 6f 72 69 74  ides any algorit
12470 68 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e 20  hm specified in 
12480 61 20 43 52 45 41 54 45 20 54 41 42 4c 45 2e 0a  a CREATE TABLE..
12490 49 66 20 6e 6f 20 61 6c 67 6f 72 69 74 68 6d 20  If no algorithm 
124a0 69 73 20 73 70 65 63 69 66 69 65 64 20 61 6e 79  is specified any
124b0 77 68 65 72 65 2c 20 74 68 65 20 41 42 4f 52 54  where, the ABORT
124c0 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73   algorithm is us
124d0 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  ed.</p>..<tcl>.#
124e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
124f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12500 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12510 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12520 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
12530 63 74 69 6f 6e 20 52 45 49 4e 44 45 58 20 72 65  ction REINDEX re
12540 69 6e 64 65 78 20 52 45 49 4e 44 45 58 0a 0a 42  index REINDEX..B
12550 75 62 62 6c 65 44 69 61 67 72 61 6d 20 72 65 69  ubbleDiagram rei
12560 6e 64 65 78 2d 73 74 6d 74 20 31 0a 3c 2f 74 63  ndex-stmt 1.</tc
12570 6c 3e 0a 0a 3c 70 3e 54 68 65 20 52 45 49 4e 44  l>..<p>The REIND
12580 45 58 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73  EX command is us
12590 65 64 20 74 6f 20 64 65 6c 65 74 65 20 61 6e 64  ed to delete and
125a0 20 72 65 63 72 65 61 74 65 20 69 6e 64 69 63 65   recreate indice
125b0 73 20 66 72 6f 6d 20 73 63 72 61 74 63 68 2e 0a  s from scratch..
125c0 54 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 77  This is useful w
125d0 68 65 6e 20 74 68 65 20 64 65 66 69 6e 69 74 69  hen the definiti
125e0 6f 6e 20 6f 66 20 61 20 63 6f 6c 6c 61 74 69 6f  on of a collatio
125f0 6e 20 73 65 71 75 65 6e 63 65 20 68 61 73 20 63  n sequence has c
12600 68 61 6e 67 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70  hanged..</p>..<p
12610 3e 49 6e 20 74 68 65 20 66 69 72 73 74 20 66 6f  >In the first fo
12620 72 6d 2c 20 61 6c 6c 20 69 6e 64 69 63 65 73 20  rm, all indices 
12630 69 6e 20 61 6c 6c 20 61 74 74 61 63 68 65 64 20  in all attached 
12640 64 61 74 61 62 61 73 65 73 20 74 68 61 74 20 75  databases that u
12650 73 65 20 74 68 65 0a 6e 61 6d 65 64 20 63 6f 6c  se the.named col
12660 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20  lation sequence 
12670 61 72 65 20 72 65 63 72 65 61 74 65 64 2e 20 49  are recreated. I
12680 6e 20 74 68 65 20 73 65 63 6f 6e 64 20 66 6f 72  n the second for
12690 6d 2c 20 69 66 20 0a 3c 69 3e 26 23 39 31 3b 64  m, if .<i>&#91;d
126a0 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e 26 23 39  atabase-name.&#9
126b0 33 3b 74 61 62 6c 65 2f 69 6e 64 65 78 2d 6e 61  3;table/index-na
126c0 6d 65 3c 2f 69 3e 20 69 64 65 6e 74 69 66 69 65  me</i> identifie
126d0 73 20 61 20 74 61 62 6c 65 2c 0a 74 68 65 6e 20  s a table,.then 
126e0 61 6c 6c 20 69 6e 64 69 63 65 73 0a 61 73 73 6f  all indices.asso
126f0 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
12700 74 61 62 6c 65 20 61 72 65 20 72 65 62 75 69 6c  table are rebuil
12710 74 2e 20 49 66 20 61 6e 20 69 6e 64 65 78 20 69  t. If an index i
12720 73 20 69 64 65 6e 74 69 66 69 65 64 2c 20 74 68  s identified, th
12730 65 6e 20 6f 6e 6c 79 0a 74 68 69 73 20 73 70 65  en only.this spe
12740 63 69 66 69 63 20 69 6e 64 65 78 20 69 73 20 64  cific index is d
12750 65 6c 65 74 65 64 20 61 6e 64 20 72 65 63 72 65  eleted and recre
12760 61 74 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49  ated..</p>..<p>I
12770 66 20 6e 6f 20 3c 69 3e 64 61 74 61 62 61 73 65  f no <i>database
12780 2d 6e 61 6d 65 3c 2f 69 3e 20 69 73 20 73 70 65  -name</i> is spe
12790 63 69 66 69 65 64 20 61 6e 64 20 74 68 65 72 65  cified and there
127a0 20 65 78 69 73 74 73 20 62 6f 74 68 20 61 20 74   exists both a t
127b0 61 62 6c 65 20 6f 72 0a 69 6e 64 65 78 20 61 6e  able or.index an
127c0 64 20 61 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65  d a collation se
127d0 71 75 65 6e 63 65 20 6f 66 20 74 68 65 20 73 70  quence of the sp
127e0 65 63 69 66 69 65 64 20 6e 61 6d 65 2c 20 74 68  ecified name, th
127f0 65 6e 20 69 6e 64 69 63 65 73 20 61 73 73 6f 63  en indices assoc
12800 69 61 74 65 64 0a 77 69 74 68 20 74 68 65 20 63  iated.with the c
12810 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63  ollation sequenc
12820 65 20 6f 6e 6c 79 20 61 72 65 20 72 65 63 6f 6e  e only are recon
12830 73 74 72 75 63 74 65 64 2e 20 54 68 69 73 20 61  structed. This a
12840 6d 62 69 67 75 69 74 79 20 6d 61 79 20 62 65 0a  mbiguity may be.
12850 64 69 73 70 65 6c 6c 65 64 20 62 79 20 61 6c 77  dispelled by alw
12860 61 79 73 20 73 70 65 63 69 66 79 69 6e 67 20 61  ays specifying a
12870 20 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d   <i>database-nam
12880 65 3c 2f 69 3e 20 77 68 65 6e 20 72 65 69 6e 64  e</i> when reind
12890 65 78 69 6e 67 20 61 0a 73 70 65 63 69 66 69 63  exing a.specific
128a0 20 74 61 62 6c 65 20 6f 72 20 69 6e 64 65 78 2e   table or index.
128b0 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
128c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
128d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
128e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
128f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12900 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
12910 52 45 50 4c 41 43 45 20 72 65 70 6c 61 63 65 20  REPLACE replace 
12920 52 45 50 4c 41 43 45 0a 0a 3c 2f 74 63 6c 3e 0a  REPLACE..</tcl>.
12930 0a 3c 70 3e 54 68 65 20 52 45 50 4c 41 43 45 20  .<p>The REPLACE 
12940 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20 61 6c  command is an al
12950 69 61 73 20 66 6f 72 20 74 68 65 20 22 49 4e 53  ias for the "INS
12960 45 52 54 20 4f 52 20 52 45 50 4c 41 43 45 22 20  ERT OR REPLACE" 
12970 76 61 72 69 61 6e 74 0a 6f 66 20 74 68 65 20 3c  variant.of the <
12980 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 69 6e 73  a href="lang_ins
12990 65 72 74 2e 68 74 6d 6c 22 3e 49 4e 53 45 52 54  ert.html">INSERT
129a0 3c 2f 61 3e 20 63 6f 6d 6d 61 6e 64 2e 20 20 0a  </a> command.  .
129b0 54 68 69 73 20 61 6c 69 61 73 20 69 73 20 70 72  This alias is pr
129c0 6f 76 69 64 65 64 20 66 6f 72 0a 63 6f 6d 70 61  ovided for.compa
129d0 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 4d 79  tibility with My
129e0 53 51 4c 2e 20 20 53 65 65 20 74 68 65 20 0a 3c  SQL.  See the .<
129f0 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 69 6e 73  a href="lang_ins
12a00 65 72 74 2e 68 74 6d 6c 22 3e 49 4e 53 45 52 54  ert.html">INSERT
12a10 3c 2f 61 3e 20 63 6f 6d 6d 61 6e 64 20 64 6f 63  </a> command doc
12a20 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61  umentation for a
12a30 64 64 69 74 69 6f 6e 61 6c 0a 69 6e 66 6f 72 6d  dditional.inform
12a40 61 74 69 6f 6e 2e 3c 2f 70 3e 20 20 0a 0a 3c 74  ation.</p>  ..<t
12a50 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
12a60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12a70 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12a80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12a90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12aa0 23 23 23 0a 53 65 63 74 69 6f 6e 20 53 45 4c 45  ###.Section SELE
12ab0 43 54 20 73 65 6c 65 63 74 20 7b 53 45 4c 45 43  CT select {SELEC
12ac0 54 20 71 75 65 72 79 7d 0a 0a 42 75 62 62 6c 65  T query}..Bubble
12ad0 44 69 61 67 72 61 6d 20 73 65 6c 65 63 74 2d 73  Diagram select-s
12ae0 74 6d 74 20 31 0a 42 75 62 62 6c 65 44 69 61 67  tmt 1.BubbleDiag
12af0 72 61 6d 20 72 65 73 75 6c 74 2d 63 6f 6c 75 6d  ram result-colum
12b00 6e 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  n.BubbleDiagram 
12b10 6a 6f 69 6e 2d 73 6f 75 72 63 65 0a 42 75 62 62  join-source.Bubb
12b20 6c 65 44 69 61 67 72 61 6d 20 73 69 6e 67 6c 65  leDiagram single
12b30 2d 73 6f 75 72 63 65 0a 42 75 62 62 6c 65 44 69  -source.BubbleDi
12b40 61 67 72 61 6d 20 6a 6f 69 6e 2d 6f 70 0a 42 75  agram join-op.Bu
12b50 62 62 6c 65 44 69 61 67 72 61 6d 20 6a 6f 69 6e  bbleDiagram join
12b60 2d 63 6f 6e 73 74 72 61 69 6e 74 0a 42 75 62 62  -constraint.Bubb
12b70 6c 65 44 69 61 67 72 61 6d 20 6f 72 64 65 72 69  leDiagram orderi
12b80 6e 67 2d 74 65 72 6d 0a 42 75 62 62 6c 65 44 69  ng-term.BubbleDi
12b90 61 67 72 61 6d 20 63 6f 6d 70 6f 75 6e 64 2d 6f  agram compound-o
12ba0 70 65 72 61 74 6f 72 0a 3c 2f 74 63 6c 3e 0a 0a  perator.</tcl>..
12bb0 3c 70 3e 54 68 65 20 53 45 4c 45 43 54 20 73 74  <p>The SELECT st
12bc0 61 74 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20  atement is used 
12bd0 74 6f 20 71 75 65 72 79 20 74 68 65 20 64 61 74  to query the dat
12be0 61 62 61 73 65 2e 20 20 54 68 65 0a 72 65 73 75  abase.  The.resu
12bf0 6c 74 20 6f 66 20 61 20 53 45 4c 45 43 54 20 69  lt of a SELECT i
12c00 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 72  s zero or more r
12c10 6f 77 73 20 6f 66 20 64 61 74 61 20 77 68 65 72  ows of data wher
12c20 65 20 65 61 63 68 20 72 6f 77 0a 68 61 73 20 61  e each row.has a
12c30 20 66 69 78 65 64 20 6e 75 6d 62 65 72 20 6f 66   fixed number of
12c40 20 63 6f 6c 75 6d 6e 73 2e 20 20 54 68 65 20 6e   columns.  The n
12c50 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
12c60 20 69 6e 20 74 68 65 0a 72 65 73 75 6c 74 20 69   in the.result i
12c70 73 20 73 70 65 63 69 66 69 65 64 20 62 79 20 74  s specified by t
12c80 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 6c 69  he expression li
12c90 73 74 20 69 6e 20 62 65 74 77 65 65 6e 20 74 68  st in between th
12ca0 65 0a 53 45 4c 45 43 54 20 61 6e 64 20 46 52 4f  e.SELECT and FRO
12cb0 4d 20 6b 65 79 77 6f 72 64 73 2e 20 20 41 6e 79  M keywords.  Any
12cc0 20 61 72 62 69 74 72 61 72 79 20 65 78 70 72 65   arbitrary expre
12cd0 73 73 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65  ssion can be use
12ce0 64 0a 61 73 20 61 20 72 65 73 75 6c 74 2e 20 20  d.as a result.  
12cf0 49 66 20 61 20 72 65 73 75 6c 74 20 65 78 70 72  If a result expr
12d00 65 73 73 69 6f 6e 20 69 73 20 7d 0a 68 64 5f 70  ession is }.hd_p
12d10 75 74 73 20 22 5b 4f 70 65 72 61 74 6f 72 20 2a  uts "[Operator *
12d20 5d 20 74 68 65 6e 20 61 6c 6c 20 63 6f 6c 75 6d  ] then all colum
12d30 6e 73 20 6f 66 20 61 6c 6c 20 74 61 62 6c 65 73  ns of all tables
12d40 20 61 72 65 20 73 75 62 73 74 69 74 75 74 65 64   are substituted
12d50 5c 6e 22 0a 68 64 5f 70 75 74 73 20 22 66 6f 72  \n".hd_puts "for
12d60 20 74 68 61 74 20 6f 6e 65 20 65 78 70 72 65 73   that one expres
12d70 73 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 65 78  sion.  If the ex
12d80 70 72 65 73 73 69 6f 6e 20 69 73 20 74 68 65 20  pression is the 
12d90 6e 61 6d 65 20 6f 66 5c 6e 22 0a 68 64 5f 70 75  name of\n".hd_pu
12da0 74 73 20 22 61 20 74 61 62 6c 65 20 66 6f 6c 6c  ts "a table foll
12db0 6f 77 65 64 20 62 79 20 5b 4f 70 65 72 61 74 6f  owed by [Operato
12dc0 72 20 2e 2a 5d 20 74 68 65 6e 20 74 68 65 20 72  r .*] then the r
12dd0 65 73 75 6c 74 20 69 73 20 61 6c 6c 20 63 6f 6c  esult is all col
12de0 75 6d 6e 73 5c 6e 22 0a 68 64 5f 70 75 74 73 20  umns\n".hd_puts 
12df0 7b 69 6e 20 74 68 61 74 20 6f 6e 65 20 74 61 62  {in that one tab
12e00 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  le.</p>..<p>The 
12e10 44 49 53 54 49 4e 43 54 20 6b 65 79 77 6f 72 64  DISTINCT keyword
12e20 20 63 61 75 73 65 73 20 61 20 73 75 62 73 65 74   causes a subset
12e30 20 6f 66 20 72 65 73 75 6c 74 20 72 6f 77 73 20   of result rows 
12e40 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 2c 20  to be returned, 
12e50 0a 69 6e 20 77 68 69 63 68 20 65 61 63 68 20 72  .in which each r
12e60 65 73 75 6c 74 20 72 6f 77 20 69 73 20 64 69 66  esult row is dif
12e70 66 65 72 65 6e 74 2e 20 20 4e 55 4c 4c 20 76 61  ferent.  NULL va
12e80 6c 75 65 73 20 61 72 65 20 6e 6f 74 20 74 72 65  lues are not tre
12e90 61 74 65 64 20 61 73 20 0a 64 69 73 74 69 6e 63  ated as .distinc
12ea0 74 20 66 72 6f 6d 20 65 61 63 68 20 6f 74 68 65  t from each othe
12eb0 72 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20  r.  The default 
12ec0 62 65 68 61 76 69 6f 72 20 69 73 20 74 68 61 74  behavior is that
12ed0 20 61 6c 6c 20 72 65 73 75 6c 74 20 72 6f 77 73   all result rows
12ee0 20 0a 62 65 20 72 65 74 75 72 6e 65 64 2c 20 77   .be returned, w
12ef0 68 69 63 68 20 63 61 6e 20 62 65 20 6d 61 64 65  hich can be made
12f00 20 65 78 70 6c 69 63 69 74 20 77 69 74 68 20 74   explicit with t
12f10 68 65 20 6b 65 79 77 6f 72 64 20 41 4c 4c 2e 3c  he keyword ALL.<
12f20 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 71 75 65 72  /p>..<p>The quer
12f30 79 20 69 73 20 65 78 65 63 75 74 65 64 20 61 67  y is executed ag
12f40 61 69 6e 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72  ainst one or mor
12f50 65 20 74 61 62 6c 65 73 20 73 70 65 63 69 66 69  e tables specifi
12f60 65 64 20 61 66 74 65 72 0a 74 68 65 20 46 52 4f  ed after.the FRO
12f70 4d 20 6b 65 79 77 6f 72 64 2e 20 20 49 66 20 6d  M keyword.  If m
12f80 75 6c 74 69 70 6c 65 20 74 61 62 6c 65 73 20 6e  ultiple tables n
12f90 61 6d 65 73 20 61 72 65 20 73 65 70 61 72 61 74  ames are separat
12fa0 65 64 20 62 79 20 63 6f 6d 6d 61 73 2c 0a 74 68  ed by commas,.th
12fb0 65 6e 20 74 68 65 20 71 75 65 72 79 20 69 73 20  en the query is 
12fc0 61 67 61 69 6e 73 74 20 74 68 65 20 63 72 6f 73  against the cros
12fd0 73 20 6a 6f 69 6e 20 6f 66 20 74 68 65 20 76 61  s join of the va
12fe0 72 69 6f 75 73 20 74 61 62 6c 65 73 2e 0a 54 68  rious tables..Th
12ff0 65 20 66 75 6c 6c 20 53 51 4c 2d 39 32 20 6a 6f  e full SQL-92 jo
13000 69 6e 20 73 79 6e 74 61 78 20 63 61 6e 20 61 6c  in syntax can al
13010 73 6f 20 62 65 20 75 73 65 64 20 74 6f 20 73 70  so be used to sp
13020 65 63 69 66 79 20 6a 6f 69 6e 73 2e 0a 41 20 73  ecify joins..A s
13030 75 62 2d 71 75 65 72 79 0a 69 6e 20 70 61 72 65  ub-query.in pare
13040 6e 74 68 65 73 65 73 20 6d 61 79 20 62 65 20 73  ntheses may be s
13050 75 62 73 74 69 74 75 74 65 64 20 66 6f 72 20 61  ubstituted for a
13060 6e 79 20 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e  ny table name in
13070 20 74 68 65 20 46 52 4f 4d 20 63 6c 61 75 73 65   the FROM clause
13080 2e 0a 54 68 65 20 65 6e 74 69 72 65 20 46 52 4f  ..The entire FRO
13090 4d 20 63 6c 61 75 73 65 20 6d 61 79 20 62 65 20  M clause may be 
130a0 6f 6d 69 74 74 65 64 2c 20 69 6e 20 77 68 69 63  omitted, in whic
130b0 68 20 63 61 73 65 20 74 68 65 20 72 65 73 75 6c  h case the resul
130c0 74 20 69 73 20 61 0a 73 69 6e 67 6c 65 20 72 6f  t is a.single ro
130d0 77 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20  w consisting of 
130e0 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74 68  the values of th
130f0 65 20 65 78 70 72 65 73 73 69 6f 6e 20 6c 69 73  e expression lis
13100 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  t..</p>..<p>The 
13110 57 48 45 52 45 20 63 6c 61 75 73 65 20 63 61 6e  WHERE clause can
13120 20 62 65 20 75 73 65 64 20 74 6f 20 6c 69 6d 69   be used to limi
13130 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  t the number of 
13140 72 6f 77 73 20 6f 76 65 72 0a 77 68 69 63 68 20  rows over.which 
13150 74 68 65 20 71 75 65 72 79 20 6f 70 65 72 61 74  the query operat
13160 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  es.</p>..<p>The 
13170 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65 20  GROUP BY clause 
13180 63 61 75 73 65 73 20 6f 6e 65 20 6f 72 20 6d 6f  causes one or mo
13190 72 65 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72  re rows of the r
131a0 65 73 75 6c 74 20 74 6f 0a 62 65 20 63 6f 6d 62  esult to.be comb
131b0 69 6e 65 64 20 69 6e 74 6f 20 61 20 73 69 6e 67  ined into a sing
131c0 6c 65 20 72 6f 77 20 6f 66 20 6f 75 74 70 75 74  le row of output
131d0 2e 20 20 54 68 69 73 20 69 73 20 65 73 70 65 63  .  This is espec
131e0 69 61 6c 6c 79 20 75 73 65 66 75 6c 0a 77 68 65  ially useful.whe
131f0 6e 20 74 68 65 20 72 65 73 75 6c 74 20 63 6f 6e  n the result con
13200 74 61 69 6e 73 20 61 67 67 72 65 67 61 74 65 20  tains aggregate 
13210 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 65 20  functions.  The 
13220 65 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 0a 74  expressions in.t
13230 68 65 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75  he GROUP BY clau
13240 73 65 20 64 6f 20 3c 65 6d 3e 6e 6f 74 3c 2f 65  se do <em>not</e
13250 6d 3e 20 68 61 76 65 20 74 6f 20 62 65 20 65 78  m> have to be ex
13260 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 0a 61  pressions that.a
13270 70 70 65 61 72 20 69 6e 20 74 68 65 20 72 65 73  ppear in the res
13280 75 6c 74 2e 20 20 54 68 65 20 48 41 56 49 4e 47  ult.  The HAVING
13290 20 63 6c 61 75 73 65 20 69 73 20 73 69 6d 69 6c   clause is simil
132a0 61 72 20 74 6f 20 57 48 45 52 45 20 65 78 63 65  ar to WHERE exce
132b0 70 74 0a 74 68 61 74 20 48 41 56 49 4e 47 20 61  pt.that HAVING a
132c0 70 70 6c 69 65 73 20 61 66 74 65 72 20 67 72 6f  pplies after gro
132d0 75 70 69 6e 67 20 68 61 73 20 6f 63 63 75 72 72  uping has occurr
132e0 65 64 2e 20 20 54 68 65 20 48 41 56 49 4e 47 20  ed.  The HAVING 
132f0 65 78 70 72 65 73 73 69 6f 6e 0a 6d 61 79 20 72  expression.may r
13300 65 66 65 72 20 74 6f 20 76 61 6c 75 65 73 2c 20  efer to values, 
13310 65 76 65 6e 20 61 67 67 72 65 67 61 74 65 20 66  even aggregate f
13320 75 6e 63 74 69 6f 6e 73 2c 20 74 68 61 74 20 61  unctions, that a
13330 72 65 20 6e 6f 74 20 69 6e 20 74 68 65 20 72 65  re not in the re
13340 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  sult.</p>..<p>Th
13350 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73  e ORDER BY claus
13360 65 20 63 61 75 73 65 73 20 74 68 65 20 6f 75 74  e causes the out
13370 70 75 74 20 72 6f 77 73 20 74 6f 20 62 65 20 73  put rows to be s
13380 6f 72 74 65 64 2e 20 20 0a 54 68 65 20 61 72 67  orted.  .The arg
13390 75 6d 65 6e 74 20 74 6f 20 4f 52 44 45 52 20 42  ument to ORDER B
133a0 59 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 65  Y is a list of e
133b0 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 20  xpressions that 
133c0 61 72 65 20 75 73 65 64 20 61 73 20 74 68 65 0a  are used as the.
133d0 6b 65 79 20 66 6f 72 20 74 68 65 20 73 6f 72 74  key for the sort
133e0 2e 20 20 54 68 65 20 65 78 70 72 65 73 73 69 6f  .  The expressio
133f0 6e 73 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 74  ns do not have t
13400 6f 20 62 65 20 70 61 72 74 20 6f 66 20 74 68 65  o be part of the
13410 0a 72 65 73 75 6c 74 20 66 6f 72 20 61 20 73 69  .result for a si
13420 6d 70 6c 65 20 53 45 4c 45 43 54 2c 20 62 75 74  mple SELECT, but
13430 20 69 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53   in a compound S
13440 45 4c 45 43 54 20 65 61 63 68 20 73 6f 72 74 0a  ELECT each sort.
13450 65 78 70 72 65 73 73 69 6f 6e 20 6d 75 73 74 20  expression must 
13460 65 78 61 63 74 6c 79 20 6d 61 74 63 68 20 6f 6e  exactly match on
13470 65 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20  e of the result 
13480 63 6f 6c 75 6d 6e 73 2e 20 20 45 61 63 68 0a 73  columns.  Each.s
13490 6f 72 74 20 65 78 70 72 65 73 73 69 6f 6e 20 6d  ort expression m
134a0 61 79 20 62 65 20 6f 70 74 69 6f 6e 61 6c 6c 79  ay be optionally
134b0 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 43   followed by a C
134c0 4f 4c 4c 41 54 45 20 6b 65 79 77 6f 72 64 20 61  OLLATE keyword a
134d0 6e 64 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  nd.the name of a
134e0 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74   collating funct
134f0 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 6f 72 64  ion used for ord
13500 65 72 69 6e 67 20 74 65 78 74 20 61 6e 64 2f 6f  ering text and/o
13510 72 0a 6b 65 79 77 6f 72 64 73 20 41 53 43 20 6f  r.keywords ASC o
13520 72 20 44 45 53 43 20 74 6f 20 73 70 65 63 69 66  r DESC to specif
13530 79 20 74 68 65 20 73 6f 72 74 20 6f 72 64 65 72  y the sort order
13540 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68 20 74  .</p>..<p>Each t
13550 65 72 6d 20 6f 66 20 61 6e 20 4f 52 44 45 52 20  erm of an ORDER 
13560 42 59 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73  BY expression is
13570 20 70 72 6f 63 65 73 73 65 64 20 61 73 20 66 6f   processed as fo
13580 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 6f 6c 3e  llows:</p>..<ol>
13590 0a 3c 6c 69 3e 3c 70 3e 49 66 20 74 68 65 20 4f  .<li><p>If the O
135a0 52 44 45 52 20 42 59 20 65 78 70 72 65 73 73 69  RDER BY expressi
135b0 6f 6e 20 69 73 20 61 20 63 6f 6e 73 74 61 6e 74  on is a constant
135c0 20 69 6e 74 65 67 65 72 20 4b 20 74 68 65 6e 20   integer K then 
135d0 74 68 65 0a 6f 75 74 70 75 74 20 69 73 20 6f 72  the.output is or
135e0 64 65 72 65 64 20 62 79 20 74 68 65 20 4b 2d 74  dered by the K-t
135f0 68 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20  h column of the 
13600 72 65 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 3c  result set.</p><
13610 2f 6c 69 3e 0a 3c 6c 69 3e 3c 70 3e 49 66 20 74  /li>.<li><p>If t
13620 68 65 20 4f 52 44 45 52 20 42 59 20 65 78 70 72  he ORDER BY expr
13630 65 73 73 69 6f 6e 20 69 73 20 61 6e 20 69 64 65  ession is an ide
13640 6e 74 69 66 69 65 72 20 61 6e 64 20 6f 6e 65 20  ntifier and one 
13650 6f 66 20 74 68 65 0a 6f 75 74 70 75 74 20 63 6f  of the.output co
13660 6c 75 6d 6e 73 20 61 73 20 61 6e 20 61 6c 69 61  lumns as an alia
13670 73 20 62 79 20 74 68 65 20 73 61 6d 65 20 6e 61  s by the same na
13680 6d 65 2c 20 74 68 65 6e 20 74 68 65 20 6f 75 74  me, then the out
13690 70 75 74 20 69 73 0a 6f 72 64 65 72 65 64 20 62  put is.ordered b
136a0 79 20 74 68 65 20 69 64 65 6e 74 69 66 69 65 64  y the identified
136b0 20 63 6f 6c 75 6d 6e 2e 3c 2f 70 3e 3c 2f 6c 69   column.</p></li
136c0 3e 0a 3c 6c 69 3e 3c 70 3e 4f 74 68 65 72 77 69  >.<li><p>Otherwi
136d0 73 65 2c 20 74 68 65 20 4f 52 44 45 52 20 42 59  se, the ORDER BY
136e0 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65   expression is e
136f0 76 61 6c 75 61 74 65 64 20 61 6e 64 20 74 68 65  valuated and the
13700 20 6f 75 74 70 75 74 20 0a 69 73 20 6f 72 64 65   output .is orde
13710 72 65 64 20 62 79 20 74 68 65 20 76 61 6c 75 65  red by the value
13720 20 6f 66 20 74 68 61 74 20 65 78 70 72 65 73 73   of that express
13730 69 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f  ion.</p></li>.</
13740 6f 6c 3e 0a 0a 3c 70 3e 49 6e 20 61 20 63 6f 6d  ol>..<p>In a com
13750 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 73 74 61  pound SELECT sta
13760 74 65 6d 65 6e 74 2c 20 74 68 65 20 74 68 69 72  tement, the thir
13770 64 20 4f 52 44 45 52 20 42 59 20 6d 61 74 63 68  d ORDER BY match
13780 69 6e 67 20 72 75 6c 65 0a 72 65 71 75 69 72 65  ing rule.require
13790 73 20 74 68 61 74 20 74 68 65 20 65 78 70 72 65  s that the expre
137a0 73 73 69 6f 6e 20 62 65 20 69 64 65 6e 74 69 63  ssion be identic
137b0 61 6c 20 74 6f 20 6f 6e 65 20 6f 66 20 74 68 65  al to one of the
137c0 20 63 6f 6c 75 6d 6e 73 20 69 6e 0a 74 68 65 20   columns in.the 
137d0 72 65 73 75 6c 74 20 73 65 74 2e 20 20 54 68 65  result set.  The
137e0 20 74 68 72 65 65 20 72 75 6c 65 73 20 61 72 65   three rules are
137f0 20 66 69 72 73 74 20 61 70 70 6c 69 65 64 20 74   first applied t
13800 6f 20 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74 0a  o the left-most.
13810 53 45 4c 45 43 54 20 69 6e 20 74 68 65 20 63 6f  SELECT in the co
13820 6d 70 6f 75 6e 64 2e 20 20 49 66 20 61 20 6d 61  mpound.  If a ma
13830 74 63 68 20 69 73 20 66 6f 75 6e 64 2c 20 74 68  tch is found, th
13840 65 20 73 65 61 72 63 68 20 73 74 6f 70 73 2e 20  e search stops. 
13850 20 4f 74 68 65 72 77 69 73 65 2c 0a 74 68 65 20   Otherwise,.the 
13860 6e 65 78 74 20 53 45 4c 45 43 54 20 74 6f 20 74  next SELECT to t
13870 68 65 20 72 69 67 68 74 20 69 73 20 74 72 69 65  he right is trie
13880 64 2e 20 20 54 68 69 73 20 63 6f 6e 74 69 6e 75  d.  This continu
13890 65 73 20 75 6e 74 69 6c 20 61 20 6d 61 74 63 68  es until a match
138a0 0a 69 73 20 66 6f 75 6e 64 2e 20 20 45 61 63 68  .is found.  Each
138b0 20 74 65 72 6d 20 6f 66 20 74 68 65 20 4f 52 44   term of the ORD
138c0 45 52 20 42 59 20 63 6c 61 75 73 65 20 69 73 20  ER BY clause is 
138d0 70 72 6f 63 65 73 73 65 64 20 73 65 70 61 72 61  processed separa
138e0 74 65 6c 79 20 0a 61 6e 64 20 6d 61 79 20 63 6f  tely .and may co
138f0 6d 65 20 66 72 6f 6d 20 64 69 66 66 65 72 65 6e  me from differen
13900 74 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  t SELECT stateme
13910 6e 74 73 20 69 6e 20 74 68 65 20 63 6f 6d 70 6f  nts in the compo
13920 75 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  und.</p>..<p>The
13930 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 70 6c   LIMIT clause pl
13940 61 63 65 73 20 61 6e 20 75 70 70 65 72 20 62 6f  aces an upper bo
13950 75 6e 64 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65  und on the numbe
13960 72 20 6f 66 20 72 6f 77 73 0a 72 65 74 75 72 6e  r of rows.return
13970 65 64 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74  ed in the result
13980 2e 20 20 41 20 6e 65 67 61 74 69 76 65 20 4c 49  .  A negative LI
13990 4d 49 54 20 69 6e 64 69 63 61 74 65 73 20 6e 6f  MIT indicates no
139a0 20 75 70 70 65 72 20 62 6f 75 6e 64 2e 0a 54 68   upper bound..Th
139b0 65 20 6f 70 74 69 6f 6e 61 6c 20 4f 46 46 53 45  e optional OFFSE
139c0 54 20 66 6f 6c 6c 6f 77 69 6e 67 20 4c 49 4d 49  T following LIMI
139d0 54 20 73 70 65 63 69 66 69 65 73 20 68 6f 77 20  T specifies how 
139e0 6d 61 6e 79 0a 72 6f 77 73 20 74 6f 20 73 6b 69  many.rows to ski
139f0 70 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69  p at the beginni
13a00 6e 67 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  ng of the result
13a10 20 73 65 74 2e 0a 49 6e 20 61 20 63 6f 6d 70 6f   set..In a compo
13a20 75 6e 64 20 71 75 65 72 79 2c 20 74 68 65 20 4c  und query, the L
13a30 49 4d 49 54 20 63 6c 61 75 73 65 20 6d 61 79 20  IMIT clause may 
13a40 6f 6e 6c 79 20 61 70 70 65 61 72 20 6f 6e 20 74  only appear on t
13a50 68 65 0a 66 69 6e 61 6c 20 53 45 4c 45 43 54 20  he.final SELECT 
13a60 73 74 61 74 65 6d 65 6e 74 2e 0a 54 68 65 20 6c  statement..The l
13a70 69 6d 69 74 20 69 73 20 61 70 70 6c 69 65 64 20  imit is applied 
13a80 74 6f 20 74 68 65 20 65 6e 74 69 72 65 20 71 75  to the entire qu
13a90 65 72 79 20 6e 6f 74 0a 74 6f 20 74 68 65 20 69  ery not.to the i
13aa0 6e 64 69 76 69 64 75 61 6c 20 53 45 4c 45 43 54  ndividual SELECT
13ab0 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 77 68   statement to wh
13ac0 69 63 68 20 69 74 20 69 73 20 61 74 74 61 63 68  ich it is attach
13ad0 65 64 2e 0a 4e 6f 74 65 20 74 68 61 74 20 69 66  ed..Note that if
13ae0 20 74 68 65 20 4f 46 46 53 45 54 20 6b 65 79 77   the OFFSET keyw
13af0 6f 72 64 20 69 73 20 75 73 65 64 20 69 6e 20 74  ord is used in t
13b00 68 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 2c  he LIMIT clause,
13b10 20 74 68 65 6e 20 74 68 65 0a 6c 69 6d 69 74 20   then the.limit 
13b20 69 73 20 74 68 65 20 66 69 72 73 74 20 6e 75 6d  is the first num
13b30 62 65 72 20 61 6e 64 20 74 68 65 20 6f 66 66 73  ber and the offs
13b40 65 74 20 69 73 20 74 68 65 20 73 65 63 6f 6e 64  et is the second
13b50 20 6e 75 6d 62 65 72 2e 20 20 49 66 20 61 0a 63   number.  If a.c
13b60 6f 6d 6d 61 20 69 73 20 75 73 65 64 20 69 6e 73  omma is used ins
13b70 74 65 61 64 20 6f 66 20 74 68 65 20 4f 46 46 53  tead of the OFFS
13b80 45 54 20 6b 65 79 77 6f 72 64 2c 20 74 68 65 6e  ET keyword, then
13b90 20 74 68 65 20 6f 66 66 73 65 74 20 69 73 20 74   the offset is t
13ba0 68 65 0a 66 69 72 73 74 20 6e 75 6d 62 65 72 20  he.first number 
13bb0 61 6e 64 20 74 68 65 20 6c 69 6d 69 74 20 69 73  and the limit is
13bc0 20 74 68 65 20 73 65 63 6f 6e 64 20 6e 75 6d 62   the second numb
13bd0 65 72 2e 20 20 54 68 69 73 20 73 65 65 6d 69 6e  er.  This seemin
13be0 67 0a 63 6f 6e 74 72 61 64 69 74 69 6f 6e 20 69  g.contradition i
13bf0 73 20 69 6e 74 65 6e 74 69 6f 6e 61 6c 20 2d 20  s intentional - 
13c00 69 74 20 6d 61 78 69 6d 69 7a 65 73 20 63 6f 6d  it maximizes com
13c10 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20  patibility with 
13c20 6c 65 67 61 63 79 0a 53 51 4c 20 64 61 74 61 62  legacy.SQL datab
13c30 61 73 65 20 73 79 73 74 65 6d 73 2e 0a 3c 2f 70  ase systems..</p
13c40 3e 0a 0a 3c 70 3e 41 20 63 6f 6d 70 6f 75 6e 64  >..<p>A compound
13c50 20 53 45 4c 45 43 54 20 69 73 20 66 6f 72 6d 65   SELECT is forme
13c60 64 20 66 72 6f 6d 20 74 77 6f 20 6f 72 20 6d 6f  d from two or mo
13c70 72 65 20 73 69 6d 70 6c 65 20 53 45 4c 45 43 54  re simple SELECT
13c80 73 20 63 6f 6e 6e 65 63 74 65 64 0a 62 79 20 6f  s connected.by o
13c90 6e 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74  ne of the operat
13ca0 6f 72 73 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e  ors UNION, UNION
13cb0 20 41 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54 2c   ALL, INTERSECT,
13cc0 20 6f 72 20 45 58 43 45 50 54 2e 20 20 49 6e 0a   or EXCEPT.  In.
13cd0 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43  a compound SELEC
13ce0 54 2c 20 61 6c 6c 20 74 68 65 20 63 6f 6e 73 74  T, all the const
13cf0 69 74 75 65 6e 74 20 53 45 4c 45 43 54 73 20 6d  ituent SELECTs m
13d00 75 73 74 20 73 70 65 63 69 66 79 20 74 68 65 0a  ust specify the.
13d10 73 61 6d 65 20 6e 75 6d 62 65 72 20 6f 66 20 72  same number of r
13d20 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20 20  esult columns.  
13d30 54 68 65 72 65 20 6d 61 79 20 62 65 20 6f 6e 6c  There may be onl
13d40 79 20 61 20 73 69 6e 67 6c 65 20 4f 52 44 45 52  y a single ORDER
13d50 20 42 59 0a 63 6c 61 75 73 65 20 61 74 20 74 68   BY.clause at th
13d60 65 20 65 6e 64 20 6f 66 20 74 68 65 20 63 6f 6d  e end of the com
13d70 70 6f 75 6e 64 20 53 45 4c 45 43 54 2e 20 20 54  pound SELECT.  T
13d80 68 65 20 55 4e 49 4f 4e 20 61 6e 64 20 55 4e 49  he UNION and UNI
13d90 4f 4e 20 41 4c 4c 0a 6f 70 65 72 61 74 6f 72 73  ON ALL.operators
13da0 20 63 6f 6d 62 69 6e 65 20 74 68 65 20 72 65 73   combine the res
13db0 75 6c 74 73 20 6f 66 20 74 68 65 20 53 45 4c 45  ults of the SELE
13dc0 43 54 73 20 74 6f 20 74 68 65 20 72 69 67 68 74  CTs to the right
13dd0 20 61 6e 64 20 6c 65 66 74 20 69 6e 74 6f 0a 61   and left into.a
13de0 20 73 69 6e 67 6c 65 20 62 69 67 20 74 61 62 6c   single big tabl
13df0 65 2e 20 20 54 68 65 20 64 69 66 66 65 72 65 6e  e.  The differen
13e00 63 65 20 69 73 20 74 68 61 74 20 69 6e 20 55 4e  ce is that in UN
13e10 49 4f 4e 20 61 6c 6c 20 72 65 73 75 6c 74 20 72  ION all result r
13e20 6f 77 73 0a 61 72 65 20 64 69 73 74 69 6e 63 74  ows.are distinct
13e30 20 77 68 65 72 65 20 69 6e 20 55 4e 49 4f 4e 20   where in UNION 
13e40 41 4c 4c 20 74 68 65 72 65 20 6d 61 79 20 62 65  ALL there may be
13e50 20 64 75 70 6c 69 63 61 74 65 73 2e 0a 54 68 65   duplicates..The
13e60 20 49 4e 54 45 52 53 45 43 54 20 6f 70 65 72 61   INTERSECT opera
13e70 74 6f 72 20 74 61 6b 65 73 20 74 68 65 20 69 6e  tor takes the in
13e80 74 65 72 73 65 63 74 69 6f 6e 20 6f 66 20 74 68  tersection of th
13e90 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65  e results of the
13ea0 0a 6c 65 66 74 20 61 6e 64 20 72 69 67 68 74 20  .left and right 
13eb0 53 45 4c 45 43 54 73 2e 20 20 45 58 43 45 50 54  SELECTs.  EXCEPT
13ec0 20 74 61 6b 65 73 20 74 68 65 20 72 65 73 75 6c   takes the resul
13ed0 74 20 6f 66 20 6c 65 66 74 20 53 45 4c 45 43 54  t of left SELECT
13ee0 20 61 66 74 65 72 0a 72 65 6d 6f 76 69 6e 67 20   after.removing 
13ef0 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74  the results of t
13f00 68 65 20 72 69 67 68 74 20 53 45 4c 45 43 54 2e  he right SELECT.
13f10 20 20 57 68 65 6e 20 74 68 72 65 65 20 6f 72 20    When three or 
13f20 6d 6f 72 65 20 53 45 4c 45 43 54 73 0a 61 72 65  more SELECTs.are
13f30 20 63 6f 6e 6e 65 63 74 65 64 20 69 6e 74 6f 20   connected into 
13f40 61 20 63 6f 6d 70 6f 75 6e 64 2c 20 74 68 65 79  a compound, they
13f50 20 67 72 6f 75 70 20 66 72 6f 6d 20 6c 65 66 74   group from left
13f60 20 74 6f 20 72 69 67 68 74 2e 3c 2f 70 3e 0a 0a   to right.</p>..
13f70 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
13f80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13f90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13fa0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13fb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13fc0 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 55 50  #####.Section UP
13fd0 44 41 54 45 20 75 70 64 61 74 65 20 7b 55 50 44  DATE update {UPD
13fe0 41 54 45 20 55 50 44 41 54 45 73 7d 0a 0a 42 75  ATE UPDATEs}..Bu
13ff0 62 62 6c 65 44 69 61 67 72 61 6d 20 75 70 64 61  bbleDiagram upda
14000 74 65 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c 65  te-stmt 1.Bubble
14010 44 69 61 67 72 61 6d 20 71 75 61 6c 69 66 69 65  Diagram qualifie
14020 64 2d 74 61 62 6c 65 2d 6e 61 6d 65 0a 3c 2f 74  d-table-name.</t
14030 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 55 50 44 41  cl>..<p>The UPDA
14040 54 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  TE statement is 
14050 75 73 65 64 20 74 6f 20 63 68 61 6e 67 65 20 74  used to change t
14060 68 65 20 76 61 6c 75 65 20 6f 66 20 63 6f 6c 75  he value of colu
14070 6d 6e 73 20 69 6e 20 0a 73 65 6c 65 63 74 65 64  mns in .selected
14080 20 72 6f 77 73 20 6f 66 20 61 20 74 61 62 6c 65   rows of a table
14090 2e 20 20 45 61 63 68 20 61 73 73 69 67 6e 6d 65  .  Each assignme
140a0 6e 74 20 69 6e 20 61 6e 20 55 50 44 41 54 45 20  nt in an UPDATE 
140b0 73 70 65 63 69 66 69 65 73 0a 61 20 63 6f 6c 75  specifies.a colu
140c0 6d 6e 20 6e 61 6d 65 20 74 6f 20 74 68 65 20 6c  mn name to the l
140d0 65 66 74 20 6f 66 20 74 68 65 20 65 71 75 61 6c  eft of the equal
140e0 73 20 73 69 67 6e 20 61 6e 64 20 61 6e 20 61 72  s sign and an ar
140f0 62 69 74 72 61 72 79 20 65 78 70 72 65 73 73 69  bitrary expressi
14100 6f 6e 0a 74 6f 20 74 68 65 20 72 69 67 68 74 2e  on.to the right.
14110 20 20 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e    The expression
14120 73 20 6d 61 79 20 75 73 65 20 74 68 65 20 76 61  s may use the va
14130 6c 75 65 73 20 6f 66 20 6f 74 68 65 72 20 63 6f  lues of other co
14140 6c 75 6d 6e 73 2e 0a 41 6c 6c 20 65 78 70 72 65  lumns..All expre
14150 73 73 69 6f 6e 73 20 61 72 65 20 65 76 61 6c 75  ssions are evalu
14160 61 74 65 64 20 62 65 66 6f 72 65 20 61 6e 79 20  ated before any 
14170 61 73 73 69 67 6e 6d 65 6e 74 73 20 61 72 65 20  assignments are 
14180 6d 61 64 65 2e 0a 41 20 57 48 45 52 45 20 63 6c  made..A WHERE cl
14190 61 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64  ause can be used
141a0 20 74 6f 20 72 65 73 74 72 69 63 74 20 77 68 69   to restrict whi
141b0 63 68 20 72 6f 77 73 20 61 72 65 20 75 70 64 61  ch rows are upda
141c0 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ted.</p>..<p>The
141d0 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69   optional confli
141e0 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73  ct-clause allows
141f0 20 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69   the specificati
14200 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61  on of an alterna
14210 74 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20  tive.constraint 
14220 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74  conflict resolut
14230 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f  ion algorithm to
14240 20 75 73 65 20 64 75 72 69 6e 67 20 74 68 69 73   use during this
14250 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65   one command..Se
14260 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69  e the section ti
14270 74 6c 65 64 0a 5b 4f 4e 20 43 4f 4e 46 4c 49 43  tled.[ON CONFLIC
14280 54 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  T] for additiona
14290 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f  l information.</
142a0 70 3e 0a 0a 3c 70 3e 49 66 20 53 51 4c 69 74 65  p>..<p>If SQLite
142b0 20 69 73 20 62 75 69 6c 74 20 77 69 74 68 20 74   is built with t
142c0 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  he [SQLITE_ENABL
142d0 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f  E_UPDATE_DELETE_
142e0 4c 49 4d 49 54 5d 0a 63 6f 6d 70 69 6c 65 2d 74  LIMIT].compile-t
142f0 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e 20  ime option then 
14300 74 68 65 20 73 79 6e 74 61 78 20 6f 66 20 74 68  the syntax of th
14310 65 20 55 50 44 41 54 45 20 73 74 61 74 65 6d 65  e UPDATE stateme
14320 6e 74 20 69 73 20 65 78 74 65 6e 64 65 64 0a 77  nt is extended.w
14330 69 74 68 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44  ith optional ORD
14340 45 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20  ER BY and LIMIT 
14350 63 6c 61 75 73 65 73 20 61 73 20 66 6f 6c 6c 6f  clauses as follo
14360 77 73 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 42 75  ws:</p>..<tcl>Bu
14370 62 62 6c 65 44 69 61 67 72 61 6d 20 75 70 64 61  bbleDiagram upda
14380 74 65 2d 73 74 6d 74 2d 6c 69 6d 69 74 65 64 3c  te-stmt-limited<
14390 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70  /tcl>..<p>The op
143a0 74 69 6f 6e 61 6c 20 4c 49 4d 49 54 20 63 6c 61  tional LIMIT cla
143b0 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64 20  use can be used 
143c0 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e 75 6d  to limit the num
143d0 62 65 72 20 6f 66 0a 72 6f 77 73 20 6d 6f 64 69  ber of.rows modi
143e0 66 65 64 2c 20 61 6e 64 20 74 68 65 72 65 62 79  fed, and thereby
143f0 20 6c 69 6d 69 74 20 74 68 65 20 73 69 7a 65 20   limit the size 
14400 6f 66 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  of the transacti
14410 6f 6e 2e 0a 54 68 65 20 4f 52 44 45 52 20 42 59  on..The ORDER BY
14420 20 63 6c 61 75 73 65 20 69 73 20 75 73 65 64 20   clause is used 
14430 6f 6e 6c 79 20 74 6f 20 64 65 74 65 72 6d 69 6e  only to determin
14440 65 20 77 68 69 63 68 20 72 6f 77 73 20 66 61 6c  e which rows fal
14450 6c 0a 77 69 74 68 69 6e 20 74 68 65 20 4c 49 4d  l.within the LIM
14460 49 54 2e 20 20 54 68 65 20 6f 72 64 65 72 20 69  IT.  The order i
14470 6e 20 77 68 69 63 68 20 72 6f 77 73 20 61 72 65  n which rows are
14480 20 6d 6f 64 69 66 69 65 64 20 69 73 20 61 72 62   modified is arb
14490 69 74 72 61 72 79 0a 61 6e 64 20 69 73 20 6e 6f  itrary.and is no
144a0 74 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20  t determined by 
144b0 74 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61  the ORDER BY cla
144c0 75 73 65 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  use.</p>..<tcl>.
144d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
144e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
144f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14500 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14510 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
14520 65 63 74 69 6f 6e 20 56 41 43 55 55 4d 20 76 61  ection VACUUM va
14530 63 75 75 6d 20 56 41 43 55 55 4d 0a 0a 42 75 62  cuum VACUUM..Bub
14540 62 6c 65 44 69 61 67 72 61 6d 20 76 61 63 75 75  bleDiagram vacuu
14550 6d 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a  m-stmt 1.</tcl>.
14560 0a 3c 70 3e 57 68 65 6e 20 61 6e 20 6f 62 6a 65  .<p>When an obje
14570 63 74 20 28 74 61 62 6c 65 2c 20 69 6e 64 65 78  ct (table, index
14580 2c 20 6f 72 20 74 72 69 67 67 65 72 29 20 69 73  , or trigger) is
14590 20 64 72 6f 70 70 65 64 20 66 72 6f 6d 20 74 68   dropped from th
145a0 65 20 0a 64 61 74 61 62 61 73 65 2c 20 69 74 20  e .database, it 
145b0 6c 65 61 76 65 73 20 62 65 68 69 6e 64 20 65 6d  leaves behind em
145c0 70 74 79 20 73 70 61 63 65 2e 20 20 54 68 69 73  pty space.  This
145d0 20 6d 61 6b 65 73 20 74 68 65 20 64 61 74 61 62   makes the datab
145e0 61 73 65 20 0a 66 69 6c 65 20 6c 61 72 67 65 72  ase .file larger
145f0 20 74 68 61 6e 20 69 74 20 6e 65 65 64 73 20 74   than it needs t
14600 6f 20 62 65 2c 20 62 75 74 20 63 61 6e 20 73 70  o be, but can sp
14610 65 65 64 20 75 70 20 69 6e 73 65 72 74 73 2e 20  eed up inserts. 
14620 20 49 6e 20 74 69 6d 65 20 0a 69 6e 73 65 72 74   In time .insert
14630 73 20 61 6e 64 20 64 65 6c 65 74 65 73 20 63 61  s and deletes ca
14640 6e 20 6c 65 61 76 65 20 74 68 65 20 64 61 74 61  n leave the data
14650 62 61 73 65 20 66 69 6c 65 20 73 74 72 75 63 74  base file struct
14660 75 72 65 20 66 72 61 67 6d 65 6e 74 65 64 2c 20  ure fragmented, 
14670 0a 77 68 69 63 68 20 73 6c 6f 77 73 20 64 6f 77  .which slows dow
14680 6e 20 64 69 73 6b 20 61 63 63 65 73 73 20 74 6f  n disk access to
14690 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
146a0 6e 74 65 6e 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ntents.</p>..<p>
146b0 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61  The VACUUM comma
146c0 6e 64 20 63 6c 65 61 6e 73 0a 74 68 65 20 6d 61  nd cleans.the ma
146d0 69 6e 20 64 61 74 61 62 61 73 65 20 62 79 20 63  in database by c
146e0 6f 70 79 69 6e 67 20 69 74 73 20 63 6f 6e 74 65  opying its conte
146f0 6e 74 73 20 74 6f 20 61 20 74 65 6d 70 6f 72 61  nts to a tempora
14700 72 79 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ry database file
14710 20 61 6e 64 20 0a 72 65 6c 6f 61 64 69 6e 67 20   and .reloading 
14720 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 61 74  the original dat
14730 61 62 61 73 65 20 66 69 6c 65 20 66 72 6f 6d 20  abase file from 
14740 74 68 65 20 63 6f 70 79 2e 20 20 54 68 69 73 20  the copy.  This 
14750 65 6c 69 6d 69 6e 61 74 65 73 20 0a 66 72 65 65  eliminates .free
14760 20 70 61 67 65 73 2c 20 20 61 6c 69 67 6e 73 20   pages,  aligns 
14770 74 61 62 6c 65 20 64 61 74 61 20 74 6f 20 62 65  table data to be
14780 20 63 6f 6e 74 69 67 75 6f 75 73 2c 20 61 6e 64   contiguous, and
14790 20 6f 74 68 65 72 77 69 73 65 20 63 6c 65 61 6e   otherwise clean
147a0 73 20 0a 75 70 20 74 68 65 20 64 61 74 61 62 61  s .up the databa
147b0 73 65 20 66 69 6c 65 20 73 74 72 75 63 74 75 72  se file structur
147c0 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 56  e.</p>..<p>The V
147d0 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 6d 61  ACUUM command ma
147e0 79 20 63 68 61 6e 67 65 20 74 68 65 20 0a 3c 61  y change the .<a
147f0 20 68 72 65 66 3d 22 6c 61 6e 67 5f 63 72 65 61   href="lang_crea
14800 74 65 74 61 62 6c 65 2e 68 74 6d 6c 23 72 6f 77  tetable.html#row
14810 69 64 22 3e 52 4f 57 49 44 3c 2f 61 3e 20 6f 66  id">ROWID</a> of
14820 20 65 6e 74 72 69 65 73 20 69 6e 20 74 61 62 6c   entries in tabl
14830 65 73 20 74 68 61 74 20 64 6f 0a 6e 6f 74 20 68  es that do.not h
14840 61 76 65 20 61 6e 20 65 78 70 6c 69 63 69 74 20  ave an explicit 
14850 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
14860 4b 45 59 2e 3c 2f 70 3e 0a 0a 3c 70 3e 56 41 43  KEY.</p>..<p>VAC
14870 55 55 4d 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 6f  UUM only works o
14880 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  n the main datab
14890 61 73 65 2e 0a 49 74 20 69 73 20 6e 6f 74 20 70  ase..It is not p
148a0 6f 73 73 69 62 6c 65 20 74 6f 20 56 41 43 55 55  ossible to VACUU
148b0 4d 20 61 6e 20 61 74 74 61 63 68 65 64 20 64 61  M an attached da
148c0 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e  tabase file.</p>
148d0 0a 0a 3c 70 3e 54 68 65 20 56 41 43 55 55 4d 20  ..<p>The VACUUM 
148e0 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20 66 61 69  command will fai
148f0 6c 20 69 66 20 74 68 65 72 65 20 69 73 20 61 6e  l if there is an
14900 20 61 63 74 69 76 65 20 74 72 61 6e 73 61 63 74   active transact
14910 69 6f 6e 2e 0a 54 68 65 20 56 41 43 55 55 4d 20  ion..The VACUUM 
14920 63 6f 6d 6d 61 6e 64 20 69 73 20 61 20 6e 6f 2d  command is a no-
14930 6f 70 20 66 6f 72 20 69 6e 2d 6d 65 6d 6f 72 79  op for in-memory
14940 20 64 61 74 61 62 61 73 65 73 2e 3c 2f 70 3e 0a   databases.</p>.
14950 0a 3c 70 3e 41 73 20 6f 66 20 53 51 4c 69 74 65  .<p>As of SQLite
14960 20 76 65 72 73 69 6f 6e 20 33 2e 31 2c 20 61 6e   version 3.1, an
14970 20 61 6c 74 65 72 6e 61 74 69 76 65 20 74 6f 20   alternative to 
14980 75 73 69 6e 67 20 74 68 65 20 56 41 43 55 55 4d  using the VACUUM
14990 20 63 6f 6d 6d 61 6e 64 0a 69 73 20 61 75 74 6f   command.is auto
149a0 2d 76 61 63 75 75 6d 20 6d 6f 64 65 2c 20 65 6e  -vacuum mode, en
149b0 61 62 6c 65 64 20 75 73 69 6e 67 20 74 68 65 20  abled using the 
149c0 0a 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 70  .[auto_vacuum] p
149d0 72 61 67 6d 61 2e 20 20 57 68 65 6e 20 5b 61 75  ragma.  When [au
149e0 74 6f 5f 76 61 63 75 75 6d 5d 20 69 73 20 65 6e  to_vacuum] is en
149f0 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61 74 61  abled for a data
14a00 62 61 73 65 2c 20 0a 6c 61 72 67 65 20 64 65 6c  base, .large del
14a10 65 74 65 73 20 63 61 75 73 65 0a 74 68 65 20 73  etes cause.the s
14a20 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  ize of the datab
14a30 61 73 65 20 66 69 6c 65 20 74 6f 20 73 68 72 69  ase file to shri
14a40 6e 6b 2e 20 20 48 6f 77 65 76 65 72 2c 20 5b 61  nk.  However, [a
14a50 75 74 6f 5f 76 61 63 75 75 6d 5d 0a 61 6c 73 6f  uto_vacuum].also
14a60 20 63 61 75 73 65 73 20 65 78 63 65 73 73 20 66   causes excess f
14a70 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  ragmentation of 
14a80 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
14a90 65 2e 20 20 41 6e 64 20 5b 61 75 74 6f 5f 76 61  e.  And [auto_va
14aa0 63 75 75 6d 5d 0a 64 6f 65 73 20 6e 6f 74 20 63  cuum].does not c
14ab0 6f 6d 70 61 63 74 20 70 61 72 74 69 61 6c 6c 79  ompact partially
14ac0 20 66 69 6c 6c 65 64 20 70 61 67 65 73 20 6f 66   filled pages of
14ad0 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61 73   the database as
14ae0 20 56 41 43 55 55 4d 0a 64 6f 65 73 2e 0a 3c 2f   VACUUM.does..</
14af0 70 3e 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23  p>.<tcl>.#######
14b00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14b10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14b20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14b30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14b40 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
14b50 7b 49 4e 44 45 58 45 44 20 42 59 7d 20 69 6e 64  {INDEXED BY} ind
14b60 65 78 65 64 62 79 20 7b 7b 49 4e 44 45 58 45 44  exedby {{INDEXED
14b70 20 42 59 7d 20 7b 4e 4f 54 20 49 4e 44 45 58 45   BY} {NOT INDEXE
14b80 44 7d 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 70 3e 54  D}}..</tcl>.<p>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 69 73 20 61 20 53 51 4c 20 65 78  rase is a SQL ex
14bb0 74 65 6e 73 69 6f 6e 20 66 6f 75 6e 64 20 6f 6e  tension found on
14bc0 6c 79 20 69 6e 20 53 51 4c 69 74 65 20 77 68 69  ly in SQLite whi
14bd0 63 68 20 63 61 6e 0a 62 65 20 75 73 65 64 20 74  ch can.be used t
14be0 6f 20 76 65 72 69 66 79 20 74 68 61 74 20 74 68  o verify that th
14bf0 65 20 63 6f 72 72 65 63 74 20 69 6e 64 69 63 65  e correct indice
14c00 73 20 61 72 65 20 62 65 69 6e 67 20 75 73 65 64  s are being used
14c10 20 6f 6e 20 61 20 5b 44 45 4c 45 54 45 5d 2c 0a   on a [DELETE],.
14c20 5b 53 45 4c 45 43 54 5d 2c 20 6f 72 20 5b 55 50  [SELECT], or [UP
14c30 44 41 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e  DATE] statement.
14c40 0a 54 68 65 20 49 4e 44 45 58 45 44 20 42 59 20  .The INDEXED BY 
14c50 70 68 72 61 73 65 20 61 6c 77 61 79 73 20 66 6f  phrase always fo
14c60 6c 6c 6f 77 73 20 74 68 65 20 6e 61 6d 65 20 6f  llows the name o
14c70 66 20 61 20 74 61 62 6c 65 20 74 68 61 74 20 53  f a table that S
14c80 51 4c 69 74 65 20 77 69 6c 6c 0a 62 65 20 72 65  QLite will.be re
14c90 61 64 69 6e 67 2e 20 20 54 68 65 20 49 4e 44 45  ading.  The INDE
14ca0 58 45 44 20 42 59 20 70 68 72 61 73 65 20 63 61  XED BY phrase ca
14cb0 6e 20 62 65 20 73 65 65 6e 20 69 6e 20 74 68 65  n be seen in the
14cc0 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74 61   following synta
14cd0 78 0a 64 69 61 67 72 61 6d 73 3a 3c 2f 70 3e 0a  x.diagrams:</p>.
14ce0 0a 3c 74 63 6c 3e 0a 42 75 62 62 6c 65 44 69 61  .<tcl>.BubbleDia
14cf0 67 72 61 6d 20 71 75 61 6c 69 66 69 65 64 2d 74  gram qualified-t
14d00 61 62 6c 65 2d 6e 61 6d 65 0a 42 75 62 62 6c 65  able-name.Bubble
14d10 44 69 61 67 72 61 6d 20 73 69 6e 67 6c 65 2d 73  Diagram single-s
14d20 6f 75 72 63 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  ource.</tcl>..<p
14d30 3e 54 68 65 20 22 49 4e 44 45 58 45 44 20 42 59  >The "INDEXED BY
14d40 20 69 6e 64 65 78 2d 6e 61 6d 65 22 20 63 6c 61   index-name" cla
14d50 75 73 65 20 73 70 65 63 69 66 69 65 73 20 74 68  use specifies th
14d60 61 74 20 74 68 65 20 6e 61 6d 65 64 20 69 6e 64  at the named ind
14d70 65 78 0a 6d 75 73 74 20 62 65 20 75 73 65 64 20  ex.must be used 
14d80 69 6e 20 6f 72 64 65 72 20 74 6f 20 6c 6f 6f 6b  in order to look
14d90 20 75 70 20 76 61 6c 75 65 73 20 6f 6e 20 74 68   up values on th
14da0 65 20 70 72 65 63 65 65 64 69 6e 67 20 74 61 62  e preceeding tab
14db0 6c 65 2e 0a 49 66 20 69 6e 64 65 78 2d 6e 61 6d  le..If index-nam
14dc0 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74  e does not exist
14dd0 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 75 73   or cannot be us
14de0 65 64 20 66 6f 72 20 74 68 65 20 71 75 65 72 79  ed for the query
14df0 2c 20 74 68 65 6e 0a 74 68 65 20 70 72 65 70 61  , then.the prepa
14e00 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 53 51  ration of the SQ
14e10 4c 20 73 74 61 74 65 6d 65 6e 74 20 66 61 69 6c  L statement fail
14e20 73 2e 0a 54 68 65 20 22 4e 4f 54 20 49 4e 44 45  s..The "NOT INDE
14e30 58 45 44 22 20 63 6c 61 75 73 65 20 73 70 65 63  XED" clause spec
14e40 69 66 69 65 73 20 74 68 61 74 20 6e 6f 20 69 6e  ifies that no in
14e50 64 65 78 20 73 68 61 6c 6c 20 62 65 20 75 73 65  dex shall be use
14e60 64 20 77 68 65 6e 0a 61 63 63 65 73 73 69 6e 67  d when.accessing
14e70 20 74 68 65 20 70 72 65 63 65 65 64 69 6e 67 20   the preceeding 
14e80 74 61 62 6c 65 2c 20 69 6e 63 6c 75 64 69 6e 67  table, including
14e90 20 69 6d 70 6c 69 65 64 20 69 6e 64 69 63 65 73   implied indices
14ea0 20 63 72 65 61 74 65 20 62 79 0a 55 4e 49 51 55   create by.UNIQU
14eb0 45 20 61 6e 64 20 50 52 49 4d 41 52 59 20 4b 45  E and PRIMARY KE
14ec0 59 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20  Y constraints.  
14ed0 48 6f 77 65 76 65 72 2c 20 74 68 65 20 49 4e 54  However, the INT
14ee0 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
14ef0 0a 63 61 6e 20 73 74 69 6c 6c 20 62 65 20 75 73  .can still be us
14f00 65 64 20 74 6f 20 6c 6f 6f 6b 20 75 70 20 65 6e  ed to look up en
14f10 74 72 69 65 73 20 65 76 65 6e 20 77 68 65 6e 20  tries even when 
14f20 22 4e 4f 54 20 49 4e 44 45 58 45 44 22 20 69 73  "NOT INDEXED" is
14f30 20 73 70 65 63 69 66 69 65 64 2e 3c 2f 70 3e 0a   specified.</p>.
14f40 0a 3c 70 3e 53 6f 6d 65 20 53 51 4c 20 64 61 74  .<p>Some SQL dat
14f50 61 62 61 73 65 20 65 6e 67 69 6e 65 73 20 70 72  abase engines pr
14f60 6f 76 69 64 65 20 6e 6f 6e 2d 73 74 61 6e 64 61  ovide non-standa
14f70 72 64 20 22 68 69 6e 74 22 20 6d 65 63 68 61 6e  rd "hint" mechan
14f80 69 73 6d 73 20 77 68 69 63 68 0a 63 61 6e 20 62  isms which.can b
14f90 65 20 75 73 65 64 20 74 6f 20 67 69 76 65 20 74  e used to give t
14fa0 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69 7a  he query optimiz
14fb0 65 72 20 63 6c 75 65 73 20 61 62 6f 75 74 20 77  er clues about w
14fc0 68 61 74 20 69 6e 64 69 63 65 73 20 69 74 20 73  hat indices it s
14fd0 68 6f 75 6c 64 0a 75 73 65 20 66 6f 72 20 61 20  hould.use for a 
14fe0 70 61 72 74 69 63 75 6c 61 72 20 73 74 61 74 65  particular state
14ff0 6d 65 6e 74 2e 20 20 54 68 65 20 49 4e 44 45 58  ment.  The INDEX
15000 20 42 59 20 63 6c 61 75 73 65 20 6f 66 20 53 51   BY clause of SQ
15010 4c 69 74 65 20 69 73 20 0a 3c 65 6d 3e 6e 6f 74  Lite is .<em>not
15020 3c 2f 65 6d 3e 20 61 20 68 69 6e 74 69 6e 67 20  </em> a hinting 
15030 6d 65 63 68 61 6e 69 73 6d 20 61 6e 64 20 69 74  mechanism and it
15040 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 75   should not be u
15050 73 65 64 20 61 73 20 73 75 63 68 2e 0a 54 68 65  sed as such..The
15060 20 49 4e 44 45 58 45 44 20 42 59 20 63 6c 61 75   INDEXED BY clau
15070 73 65 20 64 6f 65 73 20 6e 6f 74 20 67 69 76 65  se does not give
15080 20 74 68 65 20 6f 70 74 69 6d 69 7a 65 72 20 68   the optimizer h
15090 69 6e 74 73 20 61 62 6f 75 74 20 77 68 69 63 68  ints about which
150a0 20 69 6e 64 65 78 0a 74 6f 20 75 73 65 3b 20 69   index.to use; i
150b0 74 20 67 69 76 65 73 20 74 68 65 20 6f 70 74 69  t gives the opti
150c0 6d 69 7a 65 72 20 61 20 72 65 71 75 69 72 65 6d  mizer a requirem
150d0 65 6e 74 20 6f 66 20 77 68 69 63 68 20 69 6e 64  ent of which ind
150e0 65 78 20 74 6f 20 75 73 65 2e 0a 49 66 20 74 68  ex to use..If th
150f0 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69 7a 65  e query optimize
15100 72 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 75  r is unable to u
15110 73 65 20 74 68 65 20 69 6e 64 65 78 20 73 70 65  se the index spe
15120 63 69 66 69 65 64 20 62 79 20 74 68 65 0a 49 4e  cified by the.IN
15130 44 45 58 20 42 59 20 63 6c 61 75 73 65 2c 20 74  DEX BY clause, t
15140 68 65 6e 20 74 68 65 20 71 75 65 72 79 20 77 69  hen the query wi
15150 6c 6c 20 66 61 69 6c 20 77 69 74 68 20 61 6e 20  ll fail with an 
15160 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  error.</p>..<p>T
15170 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 63 6c  he INDEXED BY cl
15180 61 75 73 65 20 69 73 20 3c 65 6d 3e 6e 6f 74 3c  ause is <em>not<
15190 2f 65 6d 3e 20 69 6e 74 65 6e 64 65 64 20 66 6f  /em> intended fo
151a0 72 20 75 73 65 20 69 6e 20 74 75 6e 69 6e 67 0a  r use in tuning.
151b0 74 68 65 20 70 72 65 66 6f 72 6d 61 6e 63 65 20  the preformance 
151c0 6f 66 20 61 20 71 75 65 72 79 2e 20 20 54 68 65  of a query.  The
151d0 20 69 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 49   intent of the I
151e0 4e 44 45 58 45 44 20 42 59 20 63 6c 61 75 73 65  NDEXED BY clause
151f0 20 69 73 0a 74 6f 20 72 61 69 73 65 20 61 20 72   is.to raise a r
15200 75 6e 2d 74 69 6d 65 20 65 72 72 6f 72 20 69 66  un-time error if
15210 20 61 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65   a schema change
15220 2c 20 73 75 63 68 20 61 73 20 64 72 6f 70 70 69  , such as droppi
15230 6e 67 20 6f 72 0a 63 72 65 61 74 69 6e 67 20 61  ng or.creating a
15240 6e 20 69 6e 64 65 78 2c 20 63 61 75 73 65 73 20  n index, causes 
15250 74 68 65 20 71 75 65 72 79 20 70 6c 61 6e 20 66  the query plan f
15260 6f 72 20 61 20 74 69 6d 65 2d 73 65 6e 73 69 74  or a time-sensit
15270 69 76 65 20 71 75 65 72 79 0a 74 6f 20 63 68 61  ive query.to cha
15280 6e 67 65 2e 20 20 54 68 65 20 49 4e 44 45 58 45  nge.  The INDEXE
15290 44 20 42 59 20 63 6c 61 75 73 65 20 69 73 20 64  D BY clause is d
152a0 65 73 69 67 6e 65 64 20 74 6f 20 68 65 6c 70 20  esigned to help 
152b0 64 65 74 65 63 74 0a 75 6e 64 65 73 69 72 61 62  detect.undesirab
152c0 6c 65 20 71 75 65 72 79 20 70 6c 61 6e 20 63 68  le query plan ch
152d0 61 6e 67 65 73 20 64 75 72 69 6e 67 20 72 65 67  anges during reg
152e0 72 65 73 73 69 6f 6e 20 74 65 73 74 69 6e 67 2e  ression testing.
152f0 0a 44 65 76 65 6c 6f 70 65 72 73 20 61 72 65 20  .Developers are 
15300 61 64 6d 6f 6e 69 73 68 65 64 20 74 6f 20 6f 6d  admonished to om
15310 69 74 20 61 6c 6c 20 75 73 65 20 6f 66 20 49 4e  it all use of IN
15320 44 45 58 45 44 20 42 59 20 64 75 72 69 6e 67 0a  DEXED BY during.
15330 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 65 73 69  application desi
15340 67 6e 2c 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  gn, implementati
15350 6f 6e 2c 20 74 65 73 74 69 6e 67 2c 20 61 6e 64  on, testing, and
15360 20 74 75 6e 69 6e 67 2e 20 20 49 66 0a 49 4e 44   tuning.  If.IND
15370 45 58 45 44 20 42 59 20 69 73 20 74 6f 20 62 65  EXED BY is to be
15380 20 75 73 65 64 20 61 74 20 61 6c 6c 2c 20 69 74   used at all, it
15390 20 73 68 6f 75 6c 64 20 62 65 20 69 6e 73 65 72   should be inser
153a0 74 65 64 20 61 74 20 74 68 65 20 76 65 72 79 0a  ted at the very.
153b0 65 6e 64 20 6f 66 20 74 68 65 20 64 65 76 65 6c  end of the devel
153c0 6f 70 6d 65 6e 74 20 70 72 6f 63 65 73 73 20 77  opment process w
153d0 68 65 6e 20 22 6c 6f 63 6b 69 6e 67 20 64 6f 77  hen "locking dow
153e0 6e 22 20 61 20 64 65 73 69 67 6e 2e 3c 2f 70 3e  n" a design.</p>
153f0 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
15400 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15410 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15420 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15430 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15440 23 23 23 23 23 0a 23 20 41 20 6c 69 73 74 20 6f  #####.# A list o
15450 66 20 6b 65 79 77 6f 72 64 73 2e 20 20 41 20 61  f keywords.  A a
15460 73 74 65 72 69 73 6b 20 6f 63 63 75 72 73 20 61  sterisk occurs a
15470 66 74 65 72 20 74 68 65 20 6b 65 79 77 6f 72 64  fter the keyword
15480 20 69 66 20 69 74 20 69 73 20 6f 6e 0a 23 20 74   if it is on.# t
15490 68 65 20 66 61 6c 6c 62 61 63 6b 20 6c 69 73 74  he fallback list
154a0 2e 0a 23 0a 73 65 74 20 6b 65 79 77 6f 72 64 5f  ..#.set keyword_
154b0 6c 69 73 74 20 5b 6c 73 6f 72 74 20 7b 0a 20 20  list [lsort {.  
154c0 20 41 42 4f 52 54 2a 0a 20 20 20 41 44 44 0a 20   ABORT*.   ADD. 
154d0 20 20 41 46 54 45 52 2a 0a 20 20 20 41 4c 4c 0a    AFTER*.   ALL.
154e0 20 20 20 41 4c 54 45 52 0a 20 20 20 41 4e 41 4c     ALTER.   ANAL
154f0 59 5a 45 2a 0a 20 20 20 41 4e 44 0a 20 20 20 41  YZE*.   AND.   A
15500 53 0a 20 20 20 41 53 43 2a 0a 20 20 20 41 54 54  S.   ASC*.   ATT
15510 41 43 48 2a 0a 20 20 20 41 55 54 4f 49 4e 43 52  ACH*.   AUTOINCR
15520 45 4d 45 4e 54 0a 20 20 20 42 45 46 4f 52 45 2a  EMENT.   BEFORE*
15530 0a 20 20 20 42 45 47 49 4e 2a 0a 20 20 20 42 45  .   BEGIN*.   BE
15540 54 57 45 45 4e 0a 20 20 20 42 59 0a 20 20 20 43  TWEEN.   BY.   C
15550 41 53 43 41 44 45 2a 0a 20 20 20 43 41 53 45 0a  ASCADE*.   CASE.
15560 20 20 20 43 41 53 54 2a 0a 20 20 20 43 48 45 43     CAST*.   CHEC
15570 4b 0a 20 20 20 43 4f 4c 4c 41 54 45 0a 20 20 20  K.   COLLATE.   
15580 43 4f 4c 55 4d 4e 0a 20 20 20 43 4f 4d 4d 49 54  COLUMN.   COMMIT
15590 0a 20 20 20 43 4f 4e 46 4c 49 43 54 2a 0a 20 20  .   CONFLICT*.  
155a0 20 43 4f 4e 53 54 52 41 49 4e 54 0a 20 20 20 43   CONSTRAINT.   C
155b0 52 45 41 54 45 0a 20 20 20 43 52 4f 53 53 0a 20  REATE.   CROSS. 
155c0 20 20 43 55 52 52 45 4e 54 5f 44 41 54 45 2a 0a    CURRENT_DATE*.
155d0 20 20 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2a     CURRENT_TIME*
155e0 0a 20 20 20 43 55 52 52 45 4e 54 5f 54 49 4d 45  .   CURRENT_TIME
155f0 53 54 41 4d 50 2a 0a 20 20 20 44 41 54 41 42 41  STAMP*.   DATABA
15600 53 45 2a 0a 20 20 20 44 45 46 41 55 4c 54 0a 20  SE*.   DEFAULT. 
15610 20 20 44 45 46 45 52 52 45 44 2a 0a 20 20 20 44    DEFERRED*.   D
15620 45 46 45 52 52 41 42 4c 45 0a 20 20 20 44 45 4c  EFERRABLE.   DEL
15630 45 54 45 0a 20 20 20 44 45 53 43 2a 0a 20 20 20  ETE.   DESC*.   
15640 44 45 54 41 43 48 2a 0a 20 20 20 44 49 53 54 49  DETACH*.   DISTI
15650 4e 43 54 0a 20 20 20 44 52 4f 50 0a 20 20 20 45  NCT.   DROP.   E
15660 4e 44 2a 0a 20 20 20 45 41 43 48 2a 0a 20 20 20  ND*.   EACH*.   
15670 45 4c 53 45 0a 20 20 20 45 53 43 41 50 45 0a 20  ELSE.   ESCAPE. 
15680 20 20 45 58 43 45 50 54 0a 20 20 20 45 58 43 4c    EXCEPT.   EXCL
15690 55 53 49 56 45 2a 0a 20 20 20 45 58 49 53 54 53  USIVE*.   EXISTS
156a0 0a 20 20 20 45 58 50 4c 41 49 4e 2a 0a 20 20 20  .   EXPLAIN*.   
156b0 46 41 49 4c 2a 0a 20 20 20 46 4f 52 2a 0a 20 20  FAIL*.   FOR*.  
156c0 20 46 4f 52 45 49 47 4e 0a 20 20 20 46 52 4f 4d   FOREIGN.   FROM
156d0 0a 20 20 20 46 55 4c 4c 0a 20 20 20 47 4c 4f 42  .   FULL.   GLOB
156e0 2a 0a 20 20 20 47 52 4f 55 50 0a 20 20 20 48 41  *.   GROUP.   HA
156f0 56 49 4e 47 0a 20 20 20 49 46 2a 0a 20 20 20 49  VING.   IF*.   I
15700 47 4e 4f 52 45 2a 0a 20 20 20 49 4d 4d 45 44 49  GNORE*.   IMMEDI
15710 41 54 45 2a 0a 20 20 20 49 4e 0a 20 20 20 49 4e  ATE*.   IN.   IN
15720 44 45 58 0a 20 20 20 49 4e 44 45 58 45 44 2a 0a  DEX.   INDEXED*.
15730 20 20 20 49 4e 49 54 49 41 4c 4c 59 2a 0a 20 20     INITIALLY*.  
15740 20 49 4e 4e 45 52 0a 20 20 20 49 4e 53 45 52 54   INNER.   INSERT
15750 0a 20 20 20 49 4e 53 54 45 41 44 2a 0a 20 20 20  .   INSTEAD*.   
15760 49 4e 54 45 52 53 45 43 54 0a 20 20 20 49 4e 54  INTERSECT.   INT
15770 4f 0a 20 20 20 49 53 0a 20 20 20 49 53 4e 55 4c  O.   IS.   ISNUL
15780 4c 0a 20 20 20 4a 4f 49 4e 0a 20 20 20 4b 45 59  L.   JOIN.   KEY
15790 2a 0a 20 20 20 4c 45 46 54 0a 20 20 20 4c 49 4b  *.   LEFT.   LIK
157a0 45 2a 0a 20 20 20 4c 49 4d 49 54 0a 20 20 20 4d  E*.   LIMIT.   M
157b0 41 54 43 48 2a 0a 20 20 20 4e 41 54 55 52 41 4c  ATCH*.   NATURAL
157c0 0a 20 20 20 4e 4f 54 0a 20 20 20 4e 4f 54 4e 55  .   NOT.   NOTNU
157d0 4c 4c 0a 20 20 20 4e 55 4c 4c 0a 20 20 20 4f 46  LL.   NULL.   OF
157e0 2a 0a 20 20 20 4f 46 46 53 45 54 2a 0a 20 20 20  *.   OFFSET*.   
157f0 4f 4e 0a 20 20 20 4f 52 0a 20 20 20 4f 52 44 45  ON.   OR.   ORDE
15800 52 0a 20 20 20 4f 55 54 45 52 0a 20 20 20 50 4c  R.   OUTER.   PL
15810 41 4e 2a 0a 20 20 20 50 52 41 47 4d 41 2a 0a 20  AN*.   PRAGMA*. 
15820 20 20 50 52 49 4d 41 52 59 0a 20 20 20 51 55 45    PRIMARY.   QUE
15830 52 59 2a 0a 20 20 20 52 41 49 53 45 2a 0a 20 20  RY*.   RAISE*.  
15840 20 52 45 46 45 52 45 4e 43 45 53 0a 20 20 20 52   REFERENCES.   R
15850 45 47 45 58 50 0a 20 20 20 52 45 49 4e 44 45 58  EGEXP.   REINDEX
15860 2a 0a 20 20 20 52 45 4e 41 4d 45 2a 0a 20 20 20  *.   RENAME*.   
15870 52 45 50 4c 41 43 45 2a 0a 20 20 20 52 45 53 54  REPLACE*.   REST
15880 52 49 43 54 2a 0a 20 20 20 52 49 47 48 54 0a 20  RICT*.   RIGHT. 
15890 20 20 52 4f 4c 4c 42 41 43 4b 0a 20 20 20 52 4f    ROLLBACK.   RO
158a0 57 2a 0a 20 20 20 53 45 4c 45 43 54 0a 20 20 20  W*.   SELECT.   
158b0 53 45 54 0a 20 20 20 54 41 42 4c 45 0a 20 20 20  SET.   TABLE.   
158c0 54 45 4d 50 2a 0a 20 20 20 54 45 4d 50 4f 52 41  TEMP*.   TEMPORA
158d0 52 59 2a 0a 20 20 20 54 48 45 4e 0a 20 20 20 54  RY*.   THEN.   T
158e0 4f 0a 20 20 20 54 52 41 4e 53 41 43 54 49 4f 4e  O.   TRANSACTION
158f0 0a 20 20 20 54 52 49 47 47 45 52 2a 0a 20 20 20  .   TRIGGER*.   
15900 55 4e 49 4f 4e 0a 20 20 20 55 4e 49 51 55 45 0a  UNION.   UNIQUE.
15910 20 20 20 55 50 44 41 54 45 0a 20 20 20 55 53 49     UPDATE.   USI
15920 4e 47 0a 20 20 20 56 41 43 55 55 4d 2a 0a 20 20  NG.   VACUUM*.  
15930 20 56 41 4c 55 45 53 0a 20 20 20 56 49 45 57 2a   VALUES.   VIEW*
15940 0a 20 20 20 56 49 52 54 55 41 4c 2a 0a 20 20 20  .   VIRTUAL*.   
15950 57 48 45 4e 0a 20 20 20 57 48 45 52 45 0a 7d 5d  WHEN.   WHERE.}]
15960 0a 0a 68 64 5f 70 75 74 73 20 7b 3c 44 49 56 20  ..hd_puts {<DIV 
15970 63 6c 61 73 73 3d 22 70 64 66 5f 73 65 63 74 69  class="pdf_secti
15980 6f 6e 22 3e 7d 0a 53 65 63 74 69 6f 6e 20 7b 53  on">}.Section {S
15990 51 4c 69 74 65 20 4b 65 79 77 6f 72 64 73 7d 20  QLite Keywords} 
159a0 6b 65 79 77 6f 72 64 73 20 7b 7b 53 51 4c 20 6b  keywords {{SQL k
159b0 65 79 77 6f 72 64 7d 20 7b 53 51 4c 20 6b 65 79  eyword} {SQL key
159c0 77 6f 72 64 73 7d 7d 0a 68 64 5f 70 75 74 73 20  words}}.hd_puts 
159d0 7b 3c 2f 44 49 56 3e 7d 0a 3c 2f 74 63 6c 3e 0a  {</DIV>}.</tcl>.
159e0 0a 3c 70 3e 54 68 65 20 53 51 4c 20 73 74 61 6e  .<p>The SQL stan
159f0 64 61 72 64 20 73 70 65 63 69 66 69 65 73 20 61  dard specifies a
15a00 20 68 75 67 65 20 6e 75 6d 62 65 72 20 6f 66 20   huge number of 
15a10 6b 65 79 77 6f 72 64 73 20 77 68 69 63 68 20 6d  keywords which m
15a20 61 79 20 6e 6f 74 0a 62 65 20 75 73 65 64 20 61  ay not.be used a
15a30 73 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 74  s the names of t
15a40 61 62 6c 65 73 2c 20 69 6e 64 69 63 65 73 2c 20  ables, indices, 
15a50 63 6f 6c 75 6d 6e 73 2c 20 64 61 74 61 62 61 73  columns, databas
15a60 65 73 2c 20 75 73 65 72 2d 64 65 66 69 6e 65 64  es, user-defined
15a70 0a 66 75 6e 63 74 69 6f 6e 73 2c 20 63 6f 6c 6c  .functions, coll
15a80 61 74 69 6f 6e 73 2c 20 76 69 72 74 75 61 6c 20  ations, virtual 
15a90 74 61 62 6c 65 20 6d 6f 64 75 6c 65 73 2c 20 6f  table modules, o
15aa0 72 20 61 6e 79 20 6f 74 68 65 72 20 6e 61 6d 65  r any other name
15ab0 64 20 6f 62 6a 65 63 74 2e 0a 54 68 65 20 6c 69  d object..The li
15ac0 73 74 20 6f 66 20 6b 65 79 77 6f 72 64 73 20 69  st of keywords i
15ad0 73 20 73 6f 20 6c 6f 6e 67 20 74 68 61 74 20 66  s so long that f
15ae0 65 77 20 70 65 6f 70 6c 65 20 63 61 6e 20 72 65  ew people can re
15af0 6d 65 6d 62 65 72 20 74 68 65 6d 20 61 6c 6c 2e  member them all.
15b00 0a 46 6f 72 20 6d 6f 73 74 20 53 51 4c 20 63 6f  .For most SQL co
15b10 64 65 2c 20 79 6f 75 72 20 73 61 66 65 73 74 20  de, your safest 
15b20 62 65 74 20 69 73 20 74 6f 20 6e 65 76 65 72 20  bet is to never 
15b30 75 73 65 20 61 6e 79 20 45 6e 67 6c 69 73 68 20  use any English 
15b40 6c 61 6e 67 75 61 67 65 0a 77 6f 72 64 20 61 73  language.word as
15b50 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 75   the name of a u
15b60 73 65 72 2d 64 65 66 69 6e 65 64 20 6f 62 6a 65  ser-defined obje
15b70 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 79  ct.</p>..<p>If y
15b80 6f 75 20 77 61 6e 74 20 74 6f 20 75 73 65 20 61  ou want to use a
15b90 20 6b 65 79 77 6f 72 64 20 61 73 20 61 20 6e 61   keyword as a na
15ba0 6d 65 2c 20 79 6f 75 20 6e 65 65 64 20 74 6f 20  me, you need to 
15bb0 71 75 6f 74 65 20 69 74 2e 20 20 54 68 65 72 65  quote it.  There
15bc0 0a 61 72 65 20 74 68 72 65 65 20 77 61 79 73 20  .are three ways 
15bd0 6f 66 20 71 75 6f 74 69 6e 67 20 6b 65 79 77 6f  of quoting keywo
15be0 72 64 73 20 69 6e 20 53 51 4c 69 74 65 3a 3c 2f  rds in SQLite:</
15bf0 70 3e 0a 0a 3c 70 3e 0a 3c 62 6c 6f 63 6b 71 75  p>..<p>.<blockqu
15c00 6f 74 65 3e 0a 3c 74 61 62 6c 65 3e 0a 3c 74 72  ote>.<table>.<tr
15c10 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
15c20 70 22 3e 3c 62 3e 27 6b 65 79 77 6f 72 64 27 3c  p"><b>'keyword'<
15c30 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74  /b></td><td widt
15c40 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 09 3c 74  h="20"></td>..<t
15c50 64 3e 41 20 6b 65 79 77 6f 72 64 20 69 6e 20 73  d>A keyword in s
15c60 69 6e 67 6c 65 20 71 75 6f 74 65 73 20 69 73 20  ingle quotes is 
15c70 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61  interpreted as a
15c80 20 6c 69 74 65 72 61 6c 20 73 74 72 69 6e 67 0a   literal string.
15c90 20 20 20 20 20 20 20 20 69 66 20 69 74 20 6f 63          if it oc
15ca0 63 75 72 73 20 69 6e 20 61 20 63 6f 6e 74 65 78  curs in a contex
15cb0 74 20 77 68 65 72 65 20 61 20 73 74 72 69 6e 67  t where a string
15cc0 20 6c 69 74 65 72 61 6c 20 69 73 20 61 6c 6c 6f   literal is allo
15cd0 77 65 64 2c 20 6f 74 68 65 72 77 69 73 65 0a 09  wed, otherwise..
15ce0 69 74 20 69 73 20 75 6e 64 65 72 73 74 6f 6f 64  it is understood
15cf0 20 61 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65   as an identifie
15d00 72 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72  r.</td></tr>.<tr
15d10 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
15d20 70 22 3e 3c 62 3e 22 6b 65 79 77 6f 72 64 22 3c  p"><b>"keyword"<
15d30 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64  /b></td><td></td
15d40 3e 0a 09 3c 74 64 3e 41 20 6b 65 79 77 6f 72 64  >..<td>A keyword
15d50 20 69 6e 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65   in double-quote
15d60 73 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64  s is interpreted
15d70 20 61 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65   as an identifie
15d80 72 20 69 66 0a 20 20 20 20 20 20 20 20 69 74 20  r if.        it 
15d90 6d 61 74 63 68 65 73 20 61 20 6b 6e 6f 77 6e 20  matches a known 
15da0 69 64 65 6e 74 69 66 69 65 72 2e 20 20 4f 74 68  identifier.  Oth
15db0 65 72 77 69 73 65 20 69 74 20 69 73 20 69 6e 74  erwise it is int
15dc0 65 72 70 72 65 74 65 64 20 61 73 20 61 0a 20 20  erpreted as a.  
15dd0 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c 69 74        string lit
15de0 65 72 61 6c 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a  eral.</td></tr>.
15df0 3c 74 72 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
15e00 22 74 6f 70 22 3e 3c 62 3e 26 23 39 31 3b 6b 65  "top"><b>&#91;ke
15e10 79 77 6f 72 64 26 23 39 33 3b 3c 2f 62 3e 3c 2f  yword&#93;</b></
15e20 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74  td><td></td>..<t
15e30 64 3e 41 20 6b 65 79 77 6f 72 64 20 65 6e 63 6c  d>A keyword encl
15e40 6f 73 65 64 20 69 6e 20 73 71 75 61 72 65 20 62  osed in square b
15e50 72 61 63 6b 65 74 73 20 69 73 20 61 6c 77 61 79  rackets is alway
15e60 73 20 75 6e 64 65 72 73 74 6f 6f 64 20 61 73 0a  s understood as.
15e70 20 20 20 20 20 20 20 20 61 6e 20 69 64 65 6e 74          an ident
15e80 69 66 69 65 72 2e 20 20 54 68 69 73 20 69 73 20  ifier.  This is 
15e90 6e 6f 74 20 73 74 61 6e 64 61 72 64 20 53 51 4c  not standard SQL
15ea0 2e 20 20 54 68 69 73 20 71 75 6f 74 69 6e 67 20  .  This quoting 
15eb0 6d 65 63 68 61 6e 69 73 6d 0a 20 20 20 20 20 20  mechanism.      
15ec0 20 20 69 73 20 75 73 65 64 20 62 79 20 4d 53 20    is used by MS 
15ed0 41 63 63 65 73 73 20 61 6e 64 20 53 51 4c 20 53  Access and SQL S
15ee0 65 72 76 65 72 20 61 6e 64 20 69 73 20 69 6e 63  erver and is inc
15ef0 6c 75 64 65 64 20 69 6e 20 53 51 4c 69 74 65 20  luded in SQLite 
15f00 66 6f 72 0a 20 20 20 20 20 20 20 20 63 6f 6d 70  for.        comp
15f10 61 74 69 62 69 6c 69 74 79 2e 3c 2f 74 64 3e 3c  atibility.</td><
15f20 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f  /tr>.</table>.</
15f30 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 2f 70 3e  blockquote>.</p>
15f40 0a 0a 3c 70 3e 51 75 6f 74 65 64 20 6b 65 79 77  ..<p>Quoted keyw
15f50 6f 72 64 73 20 61 72 65 20 75 6e 61 65 73 74 68  ords are unaesth
15f60 65 74 69 63 2e 0a 54 6f 20 68 65 6c 70 20 79 6f  etic..To help yo
15f70 75 20 61 76 6f 69 64 20 74 68 65 6d 2c 20 53 51  u avoid them, SQ
15f80 4c 69 74 65 20 61 6c 6c 6f 77 73 20 6d 61 6e 79  Lite allows many
15f90 20 6b 65 79 77 6f 72 64 73 20 74 6f 20 62 65 20   keywords to be 
15fa0 75 73 65 64 20 75 6e 71 75 6f 74 65 64 0a 61 73  used unquoted.as
15fb0 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 64 61   the names of da
15fc0 74 61 62 61 73 65 73 2c 20 74 61 62 6c 65 73 2c  tabases, tables,
15fd0 20 69 6e 64 69 63 65 73 2c 20 74 72 69 67 67 65   indices, trigge
15fe0 72 73 2c 20 76 69 65 77 73 2c 20 63 6f 6c 75 6d  rs, views, colum
15ff0 6e 73 2c 0a 75 73 65 72 2d 64 65 66 69 6e 65 64  ns,.user-defined
16000 20 66 75 6e 63 74 69 6f 6e 73 2c 20 63 6f 6c 6c   functions, coll
16010 61 74 69 6f 6e 73 2c 20 61 74 74 61 63 68 65 64  ations, attached
16020 20 64 61 74 61 62 61 73 65 73 2c 20 61 6e 64 20   databases, and 
16030 76 69 72 74 75 61 6c 0a 66 75 6e 63 74 69 6f 6e  virtual.function
16040 20 6d 6f 64 75 6c 65 73 2e 0a 49 6e 20 74 68 65   modules..In the
16050 20 6c 69 73 74 20 6f 66 20 6b 65 79 77 6f 72 64   list of keyword
16060 73 20 74 68 61 74 20 66 6f 6c 6c 6f 77 73 2c 20  s that follows, 
16070 74 68 6f 73 65 20 74 68 61 74 20 63 61 6e 20 62  those that can b
16080 65 20 75 73 65 64 20 61 73 20 69 64 65 6e 74 69  e used as identi
16090 66 69 65 72 73 0a 61 72 65 20 73 68 6f 77 6e 20  fiers.are shown 
160a0 69 6e 20 61 6e 20 69 74 61 6c 69 63 20 66 6f 6e  in an italic fon
160b0 74 2e 20 20 4b 65 79 77 6f 72 64 73 20 74 68 61  t.  Keywords tha
160c0 74 20 6d 75 73 74 20 62 65 20 71 75 6f 74 65 64  t must be quoted
160d0 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 62 65 0a   in order to be.
160e0 75 73 65 64 20 61 73 20 69 64 65 6e 74 69 66 69  used as identifi
160f0 65 72 73 20 61 72 65 20 73 68 6f 77 6e 20 69 6e  ers are shown in
16100 20 62 6f 6c 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a   bold.</p>..<p>.
16110 53 51 4c 69 74 65 20 61 64 64 73 20 6e 65 77 20  SQLite adds new 
16120 6b 65 79 77 6f 72 64 73 20 66 72 6f 6d 20 74 69  keywords from ti
16130 6d 65 20 74 6f 20 74 69 6d 65 20 77 68 65 6e 20  me to time when 
16140 69 74 20 74 61 6b 65 73 20 6f 6e 20 6e 65 77 20  it takes on new 
16150 66 65 61 74 75 72 65 73 2e 0a 53 6f 20 74 6f 20  features..So to 
16160 70 72 65 76 65 6e 74 20 79 6f 75 72 20 63 6f 64  prevent your cod
16170 65 20 66 72 6f 6d 20 62 65 69 6e 67 20 62 72 6f  e from being bro
16180 6b 65 6e 20 62 79 20 66 75 74 75 72 65 20 65 6e  ken by future en
16190 68 61 6e 63 65 6d 65 6e 74 73 2c 20 79 6f 75 20  hancements, you 
161a0 73 68 6f 75 6c 64 0a 6e 6f 72 6d 61 6c 6c 79 20  should.normally 
161b0 71 75 6f 74 65 20 61 6e 79 20 69 6e 64 65 6e 74  quote any indent
161c0 69 66 69 65 72 20 74 68 61 74 20 69 73 20 61 6e  ifier that is an
161d0 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61 67   English languag
161e0 65 20 77 6f 72 64 2c 20 65 76 65 6e 20 69 66 0a  e word, even if.
161f0 79 6f 75 20 64 6f 20 6e 6f 74 20 68 61 76 65 20  you do not have 
16200 74 6f 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68  to..</p>..<p>.Th
16210 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20  e following are 
16220 74 68 65 20 6b 65 79 77 6f 72 64 73 20 63 75 72  the keywords cur
16230 72 65 6e 74 6c 79 20 72 65 63 6f 67 6e 69 7a 65  rently recognize
16240 64 20 62 79 20 53 51 4c 69 74 65 3a 0a 3c 2f 70  d by SQLite:.</p
16250 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >..<blockquote>.
16260 3c 74 61 62 6c 65 20 77 69 64 74 68 3d 22 31 30  <table width="10
16270 30 25 22 20 63 6c 61 73 73 3d 22 70 64 66 5f 6b  0%" class="pdf_k
16280 65 79 77 6f 72 64 73 22 3e 0a 3c 74 72 3e 0a 3c  eywords">.<tr>.<
16290 74 64 20 61 6c 69 67 6e 3d 22 6c 65 66 74 22 20  td align="left" 
162a0 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 77 69 64  valign="top" wid
162b0 74 68 3d 22 32 30 25 22 3e 0a 0a 3c 74 63 6c 3e  th="20%">..<tcl>
162c0 0a 73 65 74 20 6e 20 5b 6c 6c 65 6e 67 74 68 20  .set n [llength 
162d0 24 6b 65 79 77 6f 72 64 5f 6c 69 73 74 5d 0a 73  $keyword_list].s
162e0 65 74 20 6e 43 6f 6c 20 35 0a 73 65 74 20 6e 52  et nCol 5.set nR
162f0 6f 77 20 5b 65 78 70 72 20 7b 28 24 6e 2b 24 6e  ow [expr {($n+$n
16300 43 6f 6c 2d 31 29 2f 24 6e 43 6f 6c 7d 5d 0a 73  Col-1)/$nCol}].s
16310 65 74 20 69 20 30 0a 66 6f 72 65 61 63 68 20 77  et i 0.foreach w
16320 6f 72 64 20 24 6b 65 79 77 6f 72 64 5f 6c 69 73  ord $keyword_lis
16330 74 20 7b 0a 20 20 69 66 20 7b 5b 73 74 72 69 6e  t {.  if {[strin
16340 67 20 69 6e 64 65 78 20 24 77 6f 72 64 20 65 6e  g index $word en
16350 64 5d 3d 3d 22 2a 22 7d 20 7b 0a 20 20 20 20 73  d]=="*"} {.    s
16360 65 74 20 77 6f 72 64 20 5b 73 74 72 69 6e 67 20  et word [string 
16370 72 61 6e 67 65 20 24 77 6f 72 64 20 30 20 65 6e  range $word 0 en
16380 64 2d 31 5d 0a 20 20 20 20 73 65 74 20 66 6f 6e  d-1].    set fon
16390 74 20 69 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20  t i.  } else {. 
163a0 20 20 20 73 65 74 20 66 6f 6e 74 20 62 0a 20 20     set font b.  
163b0 7d 0a 20 20 69 66 20 7b 24 69 3d 3d 24 6e 52 6f  }.  if {$i==$nRo
163c0 77 7d 20 7b 0a 20 20 20 20 68 64 5f 70 75 74 73  w} {.    hd_puts
163d0 20 22 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67   "</td><td valig
163e0 6e 3d 5c 22 74 6f 70 5c 22 20 61 6c 69 67 6e 3d  n=\"top\" align=
163f0 5c 22 6c 65 66 74 5c 22 20 77 69 64 74 68 3d 5c  \"left\" width=\
16400 22 32 30 25 5c 22 3e 22 0a 20 20 20 20 73 65 74  "20%\">".    set
16410 20 69 20 31 0a 20 20 7d 20 65 6c 73 65 20 7b 0a   i 1.  } else {.
16420 20 20 20 20 69 6e 63 72 20 69 0a 20 20 7d 0a 20      incr i.  }. 
16430 20 68 64 5f 70 75 74 73 20 22 3c 24 66 6f 6e 74   hd_puts "<$font
16440 3e 24 77 6f 72 64 3c 2f 24 66 6f 6e 74 3e 3c 62  >$word</$font><b
16450 72 3e 22 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f 74  r>".}.</tcl>.</t
16460 64 3e 3c 2f 74 72 3e 3c 2f 74 61 62 6c 65 3e 3c  d></tr></table><
16470 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 68  /blockquote>..<h
16480 32 3e 53 70 65 63 69 61 6c 20 6e 61 6d 65 73 3c  2>Special names<
16490 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c  /h2>..<p>The fol
164a0 6c 6f 77 69 6e 67 20 61 72 65 20 6e 6f 74 20 6b  lowing are not k
164b0 65 79 77 6f 72 64 73 20 69 6e 20 53 51 4c 69 74  eywords in SQLit
164c0 65 2c 20 62 75 74 20 61 72 65 20 75 73 65 64 20  e, but are used 
164d0 61 73 20 6e 61 6d 65 73 20 6f 66 20 0a 73 79 73  as names of .sys
164e0 74 65 6d 20 6f 62 6a 65 63 74 73 2e 20 20 54 68  tem objects.  Th
164f0 65 79 20 63 61 6e 20 62 65 20 75 73 65 64 20 61  ey can be used a
16500 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20  s an identifier 
16510 66 6f 72 20 61 20 64 69 66 66 65 72 65 6e 74 20  for a different 
16520 0a 74 79 70 65 20 6f 66 20 6f 62 6a 65 63 74 2e  .type of object.
16530 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
16540 65 20 63 6c 61 73 73 3d 22 70 64 66 5f 6b 65 79  e class="pdf_key
16550 77 6f 72 64 73 22 3e 3c 62 3e 0a 20 20 5f 52 4f  words"><b>.  _RO
16560 57 49 44 5f 3c 62 72 3e 0a 20 20 4d 41 49 4e 3c  WID_<br>.  MAIN<
16570 62 72 3e 0a 20 20 4f 49 44 3c 62 72 3e 0a 20 20  br>.  OID<br>.  
16580 52 4f 57 49 44 3c 62 72 3e 0a 20 20 53 51 4c 49  ROWID<br>.  SQLI
16590 54 45 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20  TE_MASTER<br>.  
165a0 53 51 4c 49 54 45 5f 53 45 51 55 45 4e 43 45 3c  SQLITE_SEQUENCE<
165b0 62 72 3e 0a 20 20 53 51 4c 49 54 45 5f 54 45 4d  br>.  SQLITE_TEM
165c0 50 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20 54  P_MASTER<br>.  T
165d0 45 4d 50 3c 62 72 3e 0a 3c 2f 62 3e 3c 2f 62 6c  EMP<br>.</b></bl
165e0 6f 63 6b 71 75 6f 74 65 3e 0a                    ockquote>.